summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-05-11 21:22:09 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-05-11 21:22:09 -0400
commit539d47279625a3d7a274726a02468bb5c1c56514 (patch)
tree08f68b473f37d1a74396ef2e28e1a0cecc60a9f1
parenta58d9a16dd7e4f263ebccda50e70103e7490886b (diff)
parentfc72b74e6ca6626dbaffa353eabf49429ff5e75f (diff)
Merge branch 'master' into dodrio_berry_picking
-rw-r--r--.gitignore2
-rw-r--r--.travis.yml8
-rw-r--r--Makefile6
-rw-r--r--asm/macros/battle_anim_script.inc6
-rwxr-xr-xasm/pokemon_jump.s4738
-rw-r--r--asm/pokenav.s18699
-rw-r--r--asm/pokenav_unk_10.s2185
-rw-r--r--asm/pokenav_unk_2.s2277
-rw-r--r--asm/pokenav_unk_6.s1752
-rw-r--r--asm/pokenav_unk_7.s2001
-rw-r--r--asm/pokenav_unk_8.s1377
-rw-r--r--asm/pokenav_unk_9.s1393
-rw-r--r--asmdiff.ps18
-rwxr-xr-xbuild_tools.sh1
-rw-r--r--charmap.txt4
-rw-r--r--data/battle_ai_scripts.s2
-rw-r--r--data/battle_anim_scripts.s50
-rw-r--r--data/contest_ai_scripts.s67
-rw-r--r--data/event_scripts.s45
-rw-r--r--data/maps/AbandonedShip_HiddenFloorRooms/scripts.inc28
-rw-r--r--data/maps/AquaHideout_B1F/scripts.inc4
-rw-r--r--data/maps/AquaHideout_B2F/scripts.inc4
-rw-r--r--data/maps/BattleFrontier_PokemonCenter_2F/scripts.inc2
-rw-r--r--data/maps/BirthIsland_Exterior/scripts.inc8
-rw-r--r--data/maps/CaveOfOrigin_1F/scripts.inc4
-rw-r--r--data/maps/CaveOfOrigin_UnusedRubySapphireMap1/scripts.inc4
-rw-r--r--data/maps/CaveOfOrigin_UnusedRubySapphireMap2/scripts.inc4
-rw-r--r--data/maps/CaveOfOrigin_UnusedRubySapphireMap3/scripts.inc4
-rw-r--r--data/maps/DewfordTown/scripts.inc4
-rw-r--r--data/maps/DewfordTown_Gym/scripts.inc4
-rw-r--r--data/maps/DewfordTown_PokemonCenter_1F/scripts.inc4
-rw-r--r--data/maps/DewfordTown_PokemonCenter_2F/scripts.inc2
-rw-r--r--data/maps/EverGrandeCity/scripts.inc4
-rw-r--r--data/maps/EverGrandeCity_ChampionsRoom/scripts.inc4
-rw-r--r--data/maps/EverGrandeCity_HallOfFame/scripts.inc4
-rw-r--r--data/maps/EverGrandeCity_PokemonCenter_1F/scripts.inc4
-rw-r--r--data/maps/EverGrandeCity_PokemonCenter_2F/scripts.inc2
-rw-r--r--data/maps/EverGrandeCity_PokemonLeague_2F/scripts.inc2
-rw-r--r--data/maps/EverGrandeCity_SidneysRoom/scripts.inc10
-rw-r--r--data/maps/FallarborTown/scripts.inc4
-rw-r--r--data/maps/FallarborTown_BattleTentBattleRoom/scripts.inc4
-rw-r--r--data/maps/FallarborTown_PokemonCenter_1F/scripts.inc4
-rw-r--r--data/maps/FallarborTown_PokemonCenter_2F/scripts.inc2
-rw-r--r--data/maps/FarawayIsland_Entrance/scripts.inc4
-rw-r--r--data/maps/FarawayIsland_Interior/scripts.inc4
-rw-r--r--data/maps/FieryPath/map.json12
-rw-r--r--data/maps/FortreeCity/scripts.inc4
-rw-r--r--data/maps/FortreeCity_DecorationShop/scripts.inc44
-rw-r--r--data/maps/FortreeCity_Gym/scripts.inc4
-rw-r--r--data/maps/FortreeCity_PokemonCenter_1F/scripts.inc4
-rw-r--r--data/maps/FortreeCity_PokemonCenter_2F/scripts.inc2
-rw-r--r--data/maps/GraniteCave_B2F/map.json14
-rw-r--r--data/maps/JaggedPass/scripts.inc4
-rw-r--r--data/maps/LavaridgeTown/scripts.inc4
-rw-r--r--data/maps/LavaridgeTown_Gym_1F/scripts.inc4
-rw-r--r--data/maps/LavaridgeTown_Gym_B1F/scripts.inc4
-rw-r--r--data/maps/LavaridgeTown_PokemonCenter_1F/scripts.inc4
-rw-r--r--data/maps/LavaridgeTown_PokemonCenter_2F/scripts.inc2
-rw-r--r--data/maps/LilycoveCity/scripts.inc8
-rw-r--r--data/maps/LilycoveCity_ContestLobby/scripts.inc4
-rw-r--r--data/maps/LilycoveCity_DepartmentStoreRooftop/scripts.inc33
-rw-r--r--data/maps/LilycoveCity_DepartmentStore_5F/scripts.inc105
-rw-r--r--data/maps/LilycoveCity_Harbor/scripts.inc4
-rw-r--r--data/maps/LilycoveCity_House3/scripts.inc4
-rw-r--r--data/maps/LilycoveCity_PokemonCenter_1F/scripts.inc4
-rw-r--r--data/maps/LilycoveCity_PokemonCenter_2F/scripts.inc2
-rw-r--r--data/maps/LilycoveCity_PokemonTrainerFanClub/scripts.inc4
-rw-r--r--data/maps/LinkContestRoom1/scripts.inc4
-rw-r--r--data/maps/MagmaHideout_1F/map.json6
-rw-r--r--data/maps/MagmaHideout_1F/scripts.inc4
-rw-r--r--data/maps/MagmaHideout_4F/scripts.inc4
-rw-r--r--data/maps/MarineCave_End/scripts.inc4
-rw-r--r--data/maps/MauvilleCity/scripts.inc4
-rw-r--r--data/maps/MauvilleCity_PokemonCenter_1F/scripts.inc4
-rw-r--r--data/maps/MauvilleCity_PokemonCenter_2F/scripts.inc2
-rw-r--r--data/maps/MirageTower_3F/map.json4
-rw-r--r--data/maps/MirageTower_4F/map.json2
-rw-r--r--data/maps/MossdeepCity/scripts.inc4
-rw-r--r--data/maps/MossdeepCity_House4/scripts.inc2
-rw-r--r--data/maps/MossdeepCity_PokemonCenter_1F/scripts.inc4
-rw-r--r--data/maps/MossdeepCity_PokemonCenter_2F/scripts.inc2
-rw-r--r--data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc4
-rw-r--r--data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc4
-rw-r--r--data/maps/MossdeepCity_StevensHouse/scripts.inc4
-rw-r--r--data/maps/MtChimney/scripts.inc4
-rw-r--r--data/maps/MtChimney_CableCarStation/scripts.inc4
-rw-r--r--data/maps/MtPyre_Exterior/scripts.inc4
-rw-r--r--data/maps/MtPyre_Summit/scripts.inc4
-rw-r--r--data/maps/NavelRock_Bottom/scripts.inc4
-rw-r--r--data/maps/NavelRock_Exterior/scripts.inc4
-rw-r--r--data/maps/NavelRock_Top/scripts.inc4
-rw-r--r--data/maps/NewMauville_Inside/scripts.inc4
-rw-r--r--data/maps/OldaleTown/scripts.inc4
-rw-r--r--data/maps/OldaleTown_PokemonCenter_1F/scripts.inc4
-rw-r--r--data/maps/OldaleTown_PokemonCenter_2F/scripts.inc2
-rw-r--r--data/maps/PacifidlogTown/scripts.inc4
-rw-r--r--data/maps/PacifidlogTown_PokemonCenter_1F/scripts.inc4
-rw-r--r--data/maps/PacifidlogTown_PokemonCenter_2F/scripts.inc2
-rw-r--r--data/maps/PetalburgCity/scripts.inc4
-rw-r--r--data/maps/PetalburgCity_Gym/scripts.inc4
-rw-r--r--data/maps/PetalburgCity_PokemonCenter_1F/scripts.inc4
-rw-r--r--data/maps/PetalburgCity_PokemonCenter_2F/scripts.inc2
-rw-r--r--data/maps/PetalburgWoods/map.json4
-rw-r--r--data/maps/Route101/scripts.inc4
-rw-r--r--data/maps/Route103/map.json4
-rw-r--r--data/maps/Route103/scripts.inc4
-rw-r--r--data/maps/Route104/map.json2
-rw-r--r--data/maps/Route104/scripts.inc4
-rw-r--r--data/maps/Route104_PrettyPetalFlowerShop/scripts.inc19
-rw-r--r--data/maps/Route105/scripts.inc4
-rw-r--r--data/maps/Route110/scripts.inc4
-rw-r--r--data/maps/Route110_SeasideCyclingRoadSouthEntrance/scripts.inc4
-rw-r--r--data/maps/Route110_TrickHouseCorridor/scripts.inc4
-rw-r--r--data/maps/Route110_TrickHouseEnd/scripts.inc4
-rw-r--r--data/maps/Route110_TrickHouseEntrance/scripts.inc4
-rw-r--r--data/maps/Route110_TrickHousePuzzle1/map.json22
-rw-r--r--data/maps/Route110_TrickHousePuzzle2/scripts.inc4
-rw-r--r--data/maps/Route110_TrickHousePuzzle3/map.json4
-rw-r--r--data/maps/Route110_TrickHousePuzzle3/scripts.inc4
-rw-r--r--data/maps/Route110_TrickHousePuzzle4/map.json20
-rw-r--r--data/maps/Route110_TrickHousePuzzle5/scripts.inc4
-rw-r--r--data/maps/Route110_TrickHousePuzzle6/scripts.inc4
-rw-r--r--data/maps/Route110_TrickHousePuzzle7/scripts.inc4
-rw-r--r--data/maps/Route111/map.json6
-rw-r--r--data/maps/Route111/scripts.inc4
-rw-r--r--data/maps/Route112/scripts.inc4
-rw-r--r--data/maps/Route112_CableCarStation/scripts.inc4
-rw-r--r--data/maps/Route113/scripts.inc4
-rw-r--r--data/maps/Route114/map.json10
-rw-r--r--data/maps/Route114/scripts.inc4
-rw-r--r--data/maps/Route114_FossilManiacsTunnel/scripts.inc4
-rw-r--r--data/maps/Route115/map.json2
-rw-r--r--data/maps/Route115/scripts.inc4
-rw-r--r--data/maps/Route116/map.json10
-rw-r--r--data/maps/Route116/scripts.inc4
-rw-r--r--data/maps/Route117/map.json2
-rw-r--r--data/maps/Route117/scripts.inc4
-rw-r--r--data/maps/Route118/map.json2
-rw-r--r--data/maps/Route118/scripts.inc4
-rw-r--r--data/maps/Route119/scripts.inc4
-rw-r--r--data/maps/Route119_WeatherInstitute_1F/scripts.inc4
-rw-r--r--data/maps/Route119_WeatherInstitute_2F/scripts.inc4
-rw-r--r--data/maps/Route120/map.json6
-rw-r--r--data/maps/Route120/scripts.inc8
-rw-r--r--data/maps/Route121/map.json6
-rw-r--r--data/maps/Route123/map.json6
-rw-r--r--data/maps/Route123/scripts.inc4
-rw-r--r--data/maps/Route124/scripts.inc4
-rw-r--r--data/maps/Route125/scripts.inc4
-rw-r--r--data/maps/Route126/scripts.inc4
-rw-r--r--data/maps/Route127/scripts.inc4
-rw-r--r--data/maps/Route128/scripts.inc12
-rw-r--r--data/maps/Route129/scripts.inc4
-rw-r--r--data/maps/Route130/scripts.inc4
-rw-r--r--data/maps/Route131/scripts.inc4
-rw-r--r--data/maps/RustboroCity/scripts.inc4
-rw-r--r--data/maps/RustboroCity_DevonCorp_1F/scripts.inc4
-rw-r--r--data/maps/RustboroCity_DevonCorp_2F/scripts.inc4
-rw-r--r--data/maps/RustboroCity_DevonCorp_3F/scripts.inc4
-rw-r--r--data/maps/RustboroCity_PokemonCenter_1F/scripts.inc4
-rw-r--r--data/maps/RustboroCity_PokemonCenter_2F/scripts.inc2
-rw-r--r--data/maps/RusturfTunnel/map.json4
-rw-r--r--data/maps/RusturfTunnel/scripts.inc4
-rw-r--r--data/maps/SafariZone_North/map.json12
-rw-r--r--data/maps/SafariZone_Northeast/map.json10
-rw-r--r--data/maps/SafariZone_South/scripts.inc4
-rw-r--r--data/maps/SeafloorCavern_Room1/map.json6
-rw-r--r--data/maps/SeafloorCavern_Room2/map.json16
-rw-r--r--data/maps/SeafloorCavern_Room3/map.json14
-rw-r--r--data/maps/SeafloorCavern_Room5/map.json12
-rw-r--r--data/maps/SeafloorCavern_Room8/map.json24
-rw-r--r--data/maps/SeafloorCavern_Room9/scripts.inc4
-rw-r--r--data/maps/SecretBase_YellowCave4/scripts.inc6
-rw-r--r--data/maps/ShoalCave_LowTideEntranceRoom/scripts.inc4
-rw-r--r--data/maps/ShoalCave_LowTideInnerRoom/scripts.inc4
-rw-r--r--data/maps/ShoalCave_LowTideLowerRoom/map.json2
-rw-r--r--data/maps/SkyPillar_1F/scripts.inc8
-rw-r--r--data/maps/SkyPillar_2F/scripts.inc8
-rw-r--r--data/maps/SkyPillar_3F/scripts.inc8
-rw-r--r--data/maps/SkyPillar_4F/scripts.inc8
-rw-r--r--data/maps/SkyPillar_5F/scripts.inc8
-rw-r--r--data/maps/SkyPillar_Outside/scripts.inc4
-rw-r--r--data/maps/SkyPillar_Top/scripts.inc4
-rw-r--r--data/maps/SlateportCity/scripts.inc48
-rw-r--r--data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc4
-rw-r--r--data/maps/SlateportCity_Harbor/scripts.inc4
-rw-r--r--data/maps/SlateportCity_PokemonCenter_1F/scripts.inc4
-rw-r--r--data/maps/SlateportCity_PokemonCenter_2F/scripts.inc2
-rw-r--r--data/maps/SootopolisCity/scripts.inc4
-rw-r--r--data/maps/SootopolisCity_Gym_1F/scripts.inc4
-rw-r--r--data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc4
-rw-r--r--data/maps/SootopolisCity_MysteryEventsHouse_B1F/scripts.inc4
-rw-r--r--data/maps/SootopolisCity_PokemonCenter_1F/scripts.inc4
-rw-r--r--data/maps/SootopolisCity_PokemonCenter_2F/scripts.inc2
-rw-r--r--data/maps/SouthernIsland_Interior/scripts.inc4
-rw-r--r--data/maps/TerraCave_End/scripts.inc4
-rw-r--r--data/maps/TerraCave_Entrance/scripts.inc4
-rw-r--r--data/maps/Underwater_MarineCave/scripts.inc8
-rw-r--r--data/maps/UnionRoom/scripts.inc4
-rw-r--r--data/maps/VerdanturfTown/scripts.inc4
-rw-r--r--data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc4
-rw-r--r--data/maps/VerdanturfTown_PokemonCenter_1F/scripts.inc4
-rw-r--r--data/maps/VerdanturfTown_PokemonCenter_2F/scripts.inc2
-rw-r--r--data/maps/VictoryRoad_1F/scripts.inc4
-rw-r--r--data/maps/VictoryRoad_B1F/map.json28
-rw-r--r--data/menu_specialized.s72
-rwxr-xr-xdata/pokemon_jump.s129
-rw-r--r--data/pokenav.s137
-rw-r--r--data/scripts/cable_club.inc26
-rw-r--r--data/scripts/field_move_scripts.inc240
-rw-r--r--data/scripts/secret_base.inc46
-rw-r--r--data/scripts/secret_power_tm.inc8
-rw-r--r--data/specials.inc46
-rw-r--r--data/text/contest_strings.inc2
-rw-r--r--graphics/battle_anims/backgrounds/aurora.bin (renamed from graphics/battle_anims/backgrounds/20.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/battle_anims/backgrounds/aurora.png (renamed from graphics/battle_anims/backgrounds/20.png)bin1998 -> 1998 bytes
-rw-r--r--graphics/battle_anims/backgrounds/bug.pal (renamed from graphics/battle_anims/backgrounds/22.pal)0
-rw-r--r--graphics/battle_anims/backgrounds/cosmic.bin (renamed from graphics/battle_anims/backgrounds/16.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/battle_anims/backgrounds/cosmic.png (renamed from graphics/battle_anims/backgrounds/16.png)bin634 -> 634 bytes
-rw-r--r--graphics/battle_anims/backgrounds/dark.bin (renamed from graphics/battle_anims/backgrounds/00.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/battle_anims/backgrounds/dark.png (renamed from graphics/battle_anims/backgrounds/00.png)bin1021 -> 1021 bytes
-rw-r--r--graphics/battle_anims/backgrounds/drill.bin (renamed from graphics/battle_anims/backgrounds/07.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/battle_anims/backgrounds/drill.png (renamed from graphics/battle_anims/backgrounds/07.png)bin373 -> 373 bytes
-rw-r--r--graphics/battle_anims/backgrounds/drill_contests.bin (renamed from graphics/battle_anims/backgrounds/08.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/battle_anims/backgrounds/fissure.bin (renamed from graphics/battle_anims/backgrounds/21.bin)bin4096 -> 4096 bytes
-rw-r--r--graphics/battle_anims/backgrounds/fissure.png (renamed from graphics/battle_anims/backgrounds/21.png)bin672 -> 672 bytes
-rw-r--r--graphics/battle_anims/backgrounds/ghost.bin (renamed from graphics/battle_anims/backgrounds/02.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/battle_anims/backgrounds/ghost.png (renamed from graphics/battle_anims/backgrounds/02.png)bin2426 -> 2426 bytes
-rw-r--r--graphics/battle_anims/backgrounds/guillotine.png (renamed from graphics/battle_anims/backgrounds/12.png)bin2504 -> 2504 bytes
-rw-r--r--graphics/battle_anims/backgrounds/guillotine_contests.bin (renamed from graphics/battle_anims/backgrounds/14.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/battle_anims/backgrounds/guillotine_opponent.bin (renamed from graphics/battle_anims/backgrounds/12.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/battle_anims/backgrounds/guillotine_player.bin (renamed from graphics/battle_anims/backgrounds/13.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/battle_anims/backgrounds/highspeed.png (renamed from graphics/battle_anims/backgrounds/09.png)bin964 -> 964 bytes
-rw-r--r--graphics/battle_anims/backgrounds/highspeed_opponent.bin (renamed from graphics/battle_anims/backgrounds/09.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/battle_anims/backgrounds/highspeed_player.bin (renamed from graphics/battle_anims/backgrounds/10.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/battle_anims/backgrounds/ice.bin (renamed from graphics/battle_anims/backgrounds/15.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/battle_anims/backgrounds/ice.png (renamed from graphics/battle_anims/backgrounds/15.png)bin1859 -> 1859 bytes
-rw-r--r--graphics/battle_anims/backgrounds/impact.png (renamed from graphics/battle_anims/backgrounds/04.png)bin2672 -> 2672 bytes
-rw-r--r--graphics/battle_anims/backgrounds/impact_contests.bin (renamed from graphics/battle_anims/backgrounds/06.bin)bin1280 -> 1280 bytes
-rw-r--r--graphics/battle_anims/backgrounds/impact_opponent.bin (renamed from graphics/battle_anims/backgrounds/04.bin)bin1280 -> 1280 bytes
-rw-r--r--graphics/battle_anims/backgrounds/impact_player.bin (renamed from graphics/battle_anims/backgrounds/05.bin)bin1280 -> 1280 bytes
-rw-r--r--graphics/battle_anims/backgrounds/in_air.bin (renamed from graphics/battle_anims/backgrounds/17.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/battle_anims/backgrounds/in_air.png (renamed from graphics/battle_anims/backgrounds/17.png)bin388 -> 388 bytes
-rw-r--r--graphics/battle_anims/backgrounds/psychic.bin (renamed from graphics/battle_anims/backgrounds/03.bin)bin1280 -> 1280 bytes
-rw-r--r--graphics/battle_anims/backgrounds/psychic.png (renamed from graphics/battle_anims/backgrounds/03.png)bin418 -> 418 bytes
-rw-r--r--graphics/battle_anims/backgrounds/sky.pal (renamed from graphics/battle_anims/backgrounds/18.pal)0
-rw-r--r--graphics/battle_anims/backgrounds/solarbeam.pal (renamed from graphics/battle_anims/backgrounds/24.pal)0
-rw-r--r--graphics/battle_anims/backgrounds/thunder.bin (renamed from graphics/battle_anims/backgrounds/11.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/battle_anims/backgrounds/thunder.png (renamed from graphics/battle_anims/backgrounds/11.png)bin1714 -> 1714 bytes
-rw-r--r--graphics/battle_anims/sprites/air_slash.png (renamed from graphics/battle_anims/sprites/061.png)bin259 -> 259 bytes
-rw-r--r--graphics/battle_anims/sprites/air_wave.png (renamed from graphics/battle_anims/sprites/003.png)bin197 -> 197 bytes
-rw-r--r--graphics/battle_anims/sprites/air_wave_2.png (renamed from graphics/battle_anims/sprites/154.png)bin225 -> 225 bytes
-rw-r--r--graphics/battle_anims/sprites/alert.png (renamed from graphics/battle_anims/sprites/075.png)bin541 -> 541 bytes
-rw-r--r--graphics/battle_anims/sprites/amnesia.png (renamed from graphics/battle_anims/sprites/093.png)bin1351 -> 1351 bytes
-rw-r--r--graphics/battle_anims/sprites/angel.png (renamed from graphics/battle_anims/sprites/220.png)bin329 -> 329 bytes
-rw-r--r--graphics/battle_anims/sprites/anger.png (renamed from graphics/battle_anims/sprites/087.png)bin183 -> 183 bytes
-rw-r--r--graphics/battle_anims/sprites/bell.png (renamed from graphics/battle_anims/sprites/205.png)bin479 -> 479 bytes
-rw-r--r--graphics/battle_anims/sprites/bell_2.png (renamed from graphics/battle_anims/sprites/080.png)bin661 -> 661 bytes
-rw-r--r--graphics/battle_anims/sprites/bent_spoon.png (renamed from graphics/battle_anims/sprites/097.png)bin405 -> 405 bytes
-rw-r--r--graphics/battle_anims/sprites/bird.png (renamed from graphics/battle_anims/sprites/284.png)bin679 -> 679 bytes
-rw-r--r--graphics/battle_anims/sprites/black_ball.png (renamed from graphics/battle_anims/sprites/017.png)bin149 -> 149 bytes
-rw-r--r--graphics/battle_anims/sprites/black_ball_2.png (renamed from graphics/battle_anims/sprites/171.png)bin184 -> 184 bytes
-rw-r--r--graphics/battle_anims/sprites/black_smoke.png (renamed from graphics/battle_anims/sprites/016.png)bin198 -> 198 bytes
-rw-r--r--graphics/battle_anims/sprites/blue_burst.png (renamed from graphics/battle_anims/sprites/028.png)bin707 -> 707 bytes
-rw-r--r--graphics/battle_anims/sprites/blue_flames.png (renamed from graphics/battle_anims/sprites/076.png)bin555 -> 555 bytes
-rw-r--r--graphics/battle_anims/sprites/blue_flames_2.png (renamed from graphics/battle_anims/sprites/077.png)bin279 -> 279 bytes
-rw-r--r--graphics/battle_anims/sprites/blue_light_wall.pal (renamed from graphics/battle_anims/sprites/167.pal)0
-rw-r--r--graphics/battle_anims/sprites/blue_lines.png (renamed from graphics/battle_anims/sprites/082.png)bin148 -> 148 bytes
-rw-r--r--graphics/battle_anims/sprites/blue_orb.pal (renamed from graphics/battle_anims/sprites/236.pal)0
-rw-r--r--graphics/battle_anims/sprites/blue_ring.pal (renamed from graphics/battle_anims/sprites/165.pal)0
-rw-r--r--graphics/battle_anims/sprites/blue_ring_2.pal (renamed from graphics/battle_anims/sprites/288.pal)0
-rw-r--r--graphics/battle_anims/sprites/blue_shards.png (renamed from graphics/battle_anims/sprites/023.png)bin312 -> 312 bytes
-rw-r--r--graphics/battle_anims/sprites/blue_star.png (renamed from graphics/battle_anims/sprites/031.png)bin736 -> 736 bytes
-rw-r--r--graphics/battle_anims/sprites/bluegreen_orb.png (renamed from graphics/battle_anims/sprites/251.png)bin187 -> 187 bytes
-rw-r--r--graphics/battle_anims/sprites/bone.png (renamed from graphics/battle_anims/sprites/000.png)bin223 -> 223 bytes
-rw-r--r--graphics/battle_anims/sprites/bone_2.png (renamed from graphics/battle_anims/sprites/119.png)bin580 -> 580 bytes
-rw-r--r--graphics/battle_anims/sprites/breaking_egg.png (renamed from graphics/battle_anims/sprites/202.png)bin312 -> 312 bytes
-rw-r--r--graphics/battle_anims/sprites/breath.png (renamed from graphics/battle_anims/sprites/086.png)bin393 -> 393 bytes
-rw-r--r--graphics/battle_anims/sprites/brown_orb.pal (renamed from graphics/battle_anims/sprites/259.pal)0
-rw-r--r--graphics/battle_anims/sprites/brown_triangle.png (renamed from graphics/battle_anims/sprites/066.png)bin164 -> 164 bytes
-rw-r--r--graphics/battle_anims/sprites/bubble.png (renamed from graphics/battle_anims/sprites/146.png)bin253 -> 253 bytes
-rw-r--r--graphics/battle_anims/sprites/bubble_burst.png (renamed from graphics/battle_anims/sprites/032.png)bin283 -> 283 bytes
-rw-r--r--graphics/battle_anims/sprites/bubble_burst_2.png (renamed from graphics/battle_anims/sprites/042.png)bin633 -> 633 bytes
-rw-r--r--graphics/battle_anims/sprites/circle_impact.png (renamed from graphics/battle_anims/sprites/136.png)bin150 -> 150 bytes
-rw-r--r--graphics/battle_anims/sprites/circle_of_light.png (renamed from graphics/battle_anims/sprites/212.png)bin354 -> 354 bytes
-rw-r--r--graphics/battle_anims/sprites/clamp.png (renamed from graphics/battle_anims/sprites/145.png)bin270 -> 270 bytes
-rw-r--r--graphics/battle_anims/sprites/clapping.png (renamed from graphics/battle_anims/sprites/091.png)bin359 -> 359 bytes
-rw-r--r--graphics/battle_anims/sprites/claw_slash.png (renamed from graphics/battle_anims/sprites/039.png)bin590 -> 590 bytes
-rw-r--r--graphics/battle_anims/sprites/claw_slash_2.png (renamed from graphics/battle_anims/sprites/038.png)bin386 -> 386 bytes
-rw-r--r--graphics/battle_anims/sprites/closing_eye.png (renamed from graphics/battle_anims/sprites/024.png)bin231 -> 231 bytes
-rw-r--r--graphics/battle_anims/sprites/closing_eye_2.png (renamed from graphics/battle_anims/sprites/125.png)bin287 -> 287 bytes
-rw-r--r--graphics/battle_anims/sprites/coin.png (renamed from graphics/battle_anims/sprites/100.png)bin293 -> 293 bytes
-rw-r--r--graphics/battle_anims/sprites/confetti.png (renamed from graphics/battle_anims/sprites/240.png)bin258 -> 258 bytes
-rw-r--r--graphics/battle_anims/sprites/conversion.png (renamed from graphics/battle_anims/sprites/018.png)bin172 -> 172 bytes
-rw-r--r--graphics/battle_anims/sprites/cracked_egg.png (renamed from graphics/battle_anims/sprites/101.png)bin352 -> 352 bytes
-rw-r--r--graphics/battle_anims/sprites/cross_impact.png (renamed from graphics/battle_anims/sprites/285.png)bin228 -> 228 bytes
-rw-r--r--graphics/battle_anims/sprites/cut.png (renamed from graphics/battle_anims/sprites/138.png)bin234 -> 234 bytes
-rw-r--r--graphics/battle_anims/sprites/devil.png (renamed from graphics/battle_anims/sprites/221.png)bin521 -> 521 bytes
-rw-r--r--graphics/battle_anims/sprites/dirt_mound.png (renamed from graphics/battle_anims/sprites/281.png)bin399 -> 399 bytes
-rw-r--r--graphics/battle_anims/sprites/duck.png (renamed from graphics/battle_anims/sprites/073.png)bin319 -> 319 bytes
-rw-r--r--graphics/battle_anims/sprites/eclipsing_orb.png (renamed from graphics/battle_anims/sprites/234.png)bin333 -> 333 bytes
-rw-r--r--graphics/battle_anims/sprites/electric_orbs.png (renamed from graphics/battle_anims/sprites/211.png)bin190 -> 190 bytes
-rw-r--r--graphics/battle_anims/sprites/electricity.png (renamed from graphics/battle_anims/sprites/213.png)bin501 -> 501 bytes
-rw-r--r--graphics/battle_anims/sprites/explosion.png (renamed from graphics/battle_anims/sprites/198.png)bin845 -> 845 bytes
-rw-r--r--graphics/battle_anims/sprites/explosion_2.png (renamed from graphics/battle_anims/sprites/105.png)bin1101 -> 1101 bytes
-rw-r--r--graphics/battle_anims/sprites/explosion_3.png (renamed from graphics/battle_anims/sprites/106.png)bin287 -> 287 bytes
-rw-r--r--graphics/battle_anims/sprites/explosion_4.png (renamed from graphics/battle_anims/sprites/130.png)bin776 -> 776 bytes
-rw-r--r--graphics/battle_anims/sprites/explosion_5.png (renamed from graphics/battle_anims/sprites/131.png)bin354 -> 354 bytes
-rw-r--r--graphics/battle_anims/sprites/explosion_6.png (renamed from graphics/battle_anims/sprites/007.png)bin334 -> 334 bytes
-rw-r--r--graphics/battle_anims/sprites/eye.png (renamed from graphics/battle_anims/sprites/187.png)bin336 -> 336 bytes
-rw-r--r--graphics/battle_anims/sprites/eye_sparkle.png (renamed from graphics/battle_anims/sprites/218.png)bin239 -> 239 bytes
-rw-r--r--graphics/battle_anims/sprites/fang_attack.png (renamed from graphics/battle_anims/sprites/192.png)bin541 -> 541 bytes
-rw-r--r--graphics/battle_anims/sprites/fangs.png (renamed from graphics/battle_anims/sprites/104.png)bin427 -> 427 bytes
-rw-r--r--graphics/battle_anims/sprites/finger.png (renamed from graphics/battle_anims/sprites/064.png)bin289 -> 289 bytes
-rw-r--r--graphics/battle_anims/sprites/finger_2.png (renamed from graphics/battle_anims/sprites/214.png)bin534 -> 534 bytes
-rw-r--r--graphics/battle_anims/sprites/fire.png (renamed from graphics/battle_anims/sprites/033.png)bin1916 -> 1916 bytes
-rw-r--r--graphics/battle_anims/sprites/fire_plume.png (renamed from graphics/battle_anims/sprites/035.png)bin721 -> 721 bytes
-rw-r--r--graphics/battle_anims/sprites/flat_rock.png (renamed from graphics/battle_anims/sprites/257.png)bin317 -> 317 bytes
-rw-r--r--graphics/battle_anims/sprites/flower.pal (renamed from graphics/battle_anims/sprites/001.pal)0
-rw-r--r--graphics/battle_anims/sprites/flower_0.png (renamed from graphics/battle_anims/sprites/159_0.png)bin200 -> 200 bytes
-rw-r--r--graphics/battle_anims/sprites/flower_1.png (renamed from graphics/battle_anims/sprites/159_1.png)bin147 -> 147 bytes
-rw-r--r--graphics/battle_anims/sprites/flying_dirt.png (renamed from graphics/battle_anims/sprites/261.png)bin378 -> 378 bytes
-rw-r--r--graphics/battle_anims/sprites/focus_energy.png (renamed from graphics/battle_anims/sprites/184.png)bin332 -> 332 bytes
-rw-r--r--graphics/battle_anims/sprites/fresh_egg.png (renamed from graphics/battle_anims/sprites/103.png)bin193 -> 193 bytes
-rw-r--r--graphics/battle_anims/sprites/fury_swipes.png (renamed from graphics/battle_anims/sprites/116.png)bin576 -> 576 bytes
-rw-r--r--graphics/battle_anims/sprites/gem_1.png (renamed from graphics/battle_anims/sprites/274.png)bin261 -> 261 bytes
-rw-r--r--graphics/battle_anims/sprites/gem_2.png (renamed from graphics/battle_anims/sprites/275.png)bin221 -> 221 bytes
-rw-r--r--graphics/battle_anims/sprites/gem_3.png (renamed from graphics/battle_anims/sprites/276.png)bin245 -> 245 bytes
-rw-r--r--graphics/battle_anims/sprites/ghostly_spirit.png (renamed from graphics/battle_anims/sprites/200.png)bin333 -> 333 bytes
-rw-r--r--graphics/battle_anims/sprites/glass.png (renamed from graphics/battle_anims/sprites/019.png)bin255 -> 255 bytes
-rw-r--r--graphics/battle_anims/sprites/glass_2.png (renamed from graphics/battle_anims/sprites/044.png)bin500 -> 500 bytes
-rw-r--r--graphics/battle_anims/sprites/glowy_blue_orb.pal (renamed from graphics/battle_anims/sprites/268.pal)0
-rw-r--r--graphics/battle_anims/sprites/glowy_green_orb.pal (renamed from graphics/battle_anims/sprites/265.pal)0
-rw-r--r--graphics/battle_anims/sprites/glowy_red_orb.png (renamed from graphics/battle_anims/sprites/264.png)bin152 -> 152 bytes
-rw-r--r--graphics/battle_anims/sprites/gold_ring.png (renamed from graphics/battle_anims/sprites/163.png)bin188 -> 188 bytes
-rw-r--r--graphics/battle_anims/sprites/gold_stars.png (renamed from graphics/battle_anims/sprites/233.png)bin213 -> 213 bytes
-rw-r--r--graphics/battle_anims/sprites/gray_light_wall.pal (renamed from graphics/battle_anims/sprites/169.pal)0
-rw-r--r--graphics/battle_anims/sprites/gray_orb.png (renamed from graphics/battle_anims/sprites/235.png)bin195 -> 195 bytes
-rw-r--r--graphics/battle_anims/sprites/gray_smoke.png (renamed from graphics/battle_anims/sprites/030.png)bin761 -> 761 bytes
-rw-r--r--graphics/battle_anims/sprites/green_light_wall.png (renamed from graphics/battle_anims/sprites/166.png)bin401 -> 401 bytes
-rw-r--r--graphics/battle_anims/sprites/green_sparkle.png (renamed from graphics/battle_anims/sprites/195.png)bin235 -> 235 bytes
-rw-r--r--graphics/battle_anims/sprites/green_spike.png (renamed from graphics/battle_anims/sprites/266.png)bin167 -> 167 bytes
-rw-r--r--graphics/battle_anims/sprites/green_star.png (renamed from graphics/battle_anims/sprites/241.png)bin258 -> 258 bytes
-rw-r--r--graphics/battle_anims/sprites/guard_ring.png (renamed from graphics/battle_anims/sprites/244.png)bin226 -> 226 bytes
-rw-r--r--graphics/battle_anims/sprites/gust.png (renamed from graphics/battle_anims/sprites/009.png)bin635 -> 635 bytes
-rw-r--r--graphics/battle_anims/sprites/hail.png (renamed from graphics/battle_anims/sprites/263.png)bin166 -> 166 bytes
-rw-r--r--graphics/battle_anims/sprites/hands_and_feet.png (renamed from graphics/battle_anims/sprites/143.png)bin461 -> 461 bytes
-rw-r--r--graphics/battle_anims/sprites/hatched_egg.png (renamed from graphics/battle_anims/sprites/102.png)bin397 -> 397 bytes
-rw-r--r--graphics/battle_anims/sprites/hit.png (renamed from graphics/battle_anims/sprites/021.png)bin671 -> 671 bytes
-rw-r--r--graphics/battle_anims/sprites/hit_2.pal (renamed from graphics/battle_anims/sprites/022.pal)0
-rw-r--r--graphics/battle_anims/sprites/hit_duplicate.png (renamed from graphics/battle_anims/sprites/026.png)bin671 -> 671 bytes
-rw-r--r--graphics/battle_anims/sprites/hollow_orb.png (renamed from graphics/battle_anims/sprites/249.png)bin175 -> 175 bytes
-rw-r--r--graphics/battle_anims/sprites/horn_hit.png (renamed from graphics/battle_anims/sprites/020.png)bin260 -> 260 bytes
-rw-r--r--graphics/battle_anims/sprites/horn_hit_2.png (renamed from graphics/battle_anims/sprites/153.png)bin183 -> 183 bytes
-rw-r--r--graphics/battle_anims/sprites/humanoid_foot.png (renamed from graphics/battle_anims/sprites/050.png)bin225 -> 225 bytes
-rw-r--r--graphics/battle_anims/sprites/humanoid_hand.png (renamed from graphics/battle_anims/sprites/052.png)bin245 -> 245 bytes
-rw-r--r--graphics/battle_anims/sprites/ice_chunk.png (renamed from graphics/battle_anims/sprites/043.png)bin864 -> 864 bytes
-rw-r--r--graphics/battle_anims/sprites/ice_crystals.pal (renamed from graphics/battle_anims/sprites/010.pal)0
-rw-r--r--graphics/battle_anims/sprites/ice_crystals_0.png (renamed from graphics/battle_anims/sprites/141_0.png)bin180 -> 180 bytes
-rw-r--r--graphics/battle_anims/sprites/ice_crystals_1.png (renamed from graphics/battle_anims/sprites/141_1.png)bin170 -> 170 bytes
-rw-r--r--graphics/battle_anims/sprites/ice_crystals_2.png (renamed from graphics/battle_anims/sprites/141_2.png)bin184 -> 184 bytes
-rw-r--r--graphics/battle_anims/sprites/ice_crystals_3.png (renamed from graphics/battle_anims/sprites/141_3.png)bin168 -> 168 bytes
-rw-r--r--graphics/battle_anims/sprites/ice_crystals_4.png (renamed from graphics/battle_anims/sprites/141_4.png)bin155 -> 155 bytes
-rw-r--r--graphics/battle_anims/sprites/ice_cube.pal (renamed from graphics/battle_anims/sprites/141.pal)0
-rw-r--r--graphics/battle_anims/sprites/ice_cube_0.png (renamed from graphics/battle_anims/sprites/010_0.png)bin346 -> 346 bytes
-rw-r--r--graphics/battle_anims/sprites/ice_cube_1.png (renamed from graphics/battle_anims/sprites/010_1.png)bin272 -> 272 bytes
-rw-r--r--graphics/battle_anims/sprites/ice_cube_2.png (renamed from graphics/battle_anims/sprites/010_2.png)bin257 -> 257 bytes
-rw-r--r--graphics/battle_anims/sprites/ice_cube_3.png (renamed from graphics/battle_anims/sprites/010_3.png)bin222 -> 222 bytes
-rw-r--r--graphics/battle_anims/sprites/ice_spikes.png (renamed from graphics/battle_anims/sprites/142.png)bin191 -> 191 bytes
-rw-r--r--graphics/battle_anims/sprites/icicle_spear.png (renamed from graphics/battle_anims/sprites/262.png)bin249 -> 249 bytes
-rw-r--r--graphics/battle_anims/sprites/impact.png (renamed from graphics/battle_anims/sprites/135.png)bin243 -> 243 bytes
-rw-r--r--graphics/battle_anims/sprites/impact_2.png (renamed from graphics/battle_anims/sprites/084.png)bin587 -> 587 bytes
-rw-r--r--graphics/battle_anims/sprites/impact_3.png (renamed from graphics/battle_anims/sprites/083.png)bin846 -> 846 bytes
-rw-r--r--graphics/battle_anims/sprites/item_bag.png (renamed from graphics/battle_anims/sprites/224.png)bin300 -> 300 bytes
-rw-r--r--graphics/battle_anims/sprites/jagged_music_note.png (renamed from graphics/battle_anims/sprites/225.png)bin408 -> 408 bytes
-rw-r--r--graphics/battle_anims/sprites/large_fresh_egg.png (renamed from graphics/battle_anims/sprites/175.png)bin196 -> 196 bytes
-rw-r--r--graphics/battle_anims/sprites/leaf.png (renamed from graphics/battle_anims/sprites/063.png)bin414 -> 414 bytes
-rw-r--r--graphics/battle_anims/sprites/leer.png (renamed from graphics/battle_anims/sprites/027.png)bin619 -> 619 bytes
-rw-r--r--graphics/battle_anims/sprites/letter_z.png (renamed from graphics/battle_anims/sprites/228.png)bin203 -> 203 bytes
-rw-r--r--graphics/battle_anims/sprites/lick.png (renamed from graphics/battle_anims/sprites/177.png)bin186 -> 186 bytes
-rw-r--r--graphics/battle_anims/sprites/lightbulb.png (renamed from graphics/battle_anims/sprites/182.png)bin235 -> 235 bytes
-rw-r--r--graphics/battle_anims/sprites/lightning.png (renamed from graphics/battle_anims/sprites/037.png)bin645 -> 645 bytes
-rw-r--r--graphics/battle_anims/sprites/lightning_2.png (renamed from graphics/battle_anims/sprites/036.png)bin783 -> 783 bytes
-rw-r--r--graphics/battle_anims/sprites/lock_on.png (renamed from graphics/battle_anims/sprites/014.png)bin198 -> 198 bytes
-rw-r--r--graphics/battle_anims/sprites/magenta_heart.png (renamed from graphics/battle_anims/sprites/210.png)bin200 -> 200 bytes
-rw-r--r--graphics/battle_anims/sprites/magnifying_glass.png (renamed from graphics/battle_anims/sprites/258.png)bin290 -> 290 bytes
-rw-r--r--graphics/battle_anims/sprites/metal_ball.png (renamed from graphics/battle_anims/sprites/126.png)bin200 -> 200 bytes
-rw-r--r--graphics/battle_anims/sprites/metal_sound_waves.png (renamed from graphics/battle_anims/sprites/260.png)bin342 -> 342 bytes
-rw-r--r--graphics/battle_anims/sprites/meteor.png (renamed from graphics/battle_anims/sprites/256.png)bin686 -> 686 bytes
-rw-r--r--graphics/battle_anims/sprites/milk_bottle.png (renamed from graphics/battle_anims/sprites/099.png)bin334 -> 334 bytes
-rw-r--r--graphics/battle_anims/sprites/mist_cloud.png (renamed from graphics/battle_anims/sprites/144.png)bin191 -> 191 bytes
-rw-r--r--graphics/battle_anims/sprites/monster_doll.png (renamed from graphics/battle_anims/sprites/127.png)bin441 -> 441 bytes
-rw-r--r--graphics/battle_anims/sprites/monster_foot.png (renamed from graphics/battle_anims/sprites/051.png)bin224 -> 224 bytes
-rw-r--r--graphics/battle_anims/sprites/moon.png (renamed from graphics/battle_anims/sprites/194.png)bin616 -> 616 bytes
-rw-r--r--graphics/battle_anims/sprites/movement_waves.png (renamed from graphics/battle_anims/sprites/215.png)bin357 -> 357 bytes
-rw-r--r--graphics/battle_anims/sprites/mud_sand.pal (renamed from graphics/battle_anims/sprites/074.pal)0
-rw-r--r--graphics/battle_anims/sprites/mud_sand_0.png (renamed from graphics/battle_anims/sprites/074_0.png)bin153 -> 153 bytes
-rw-r--r--graphics/battle_anims/sprites/mud_sand_1.png (renamed from graphics/battle_anims/sprites/074_1.png)bin172 -> 172 bytes
-rw-r--r--graphics/battle_anims/sprites/mud_unk.png (renamed from graphics/battle_anims/sprites/114.png)bin284 -> 284 bytes
-rw-r--r--graphics/battle_anims/sprites/music_notes.png (renamed from graphics/battle_anims/sprites/072.png)bin277 -> 277 bytes
-rw-r--r--graphics/battle_anims/sprites/music_notes_2.pal (renamed from graphics/battle_anims/sprites/206.pal)0
-rw-r--r--graphics/battle_anims/sprites/music_notes_2.png (renamed from graphics/battle_anims/sprites/206.png)bin747 -> 747 bytes
-rw-r--r--graphics/battle_anims/sprites/nail.png (renamed from graphics/battle_anims/sprites/199.png)bin229 -> 229 bytes
-rw-r--r--graphics/battle_anims/sprites/needle.png (renamed from graphics/battle_anims/sprites/161.png)bin143 -> 143 bytes
-rw-r--r--graphics/battle_anims/sprites/noise_line.png (renamed from graphics/battle_anims/sprites/053.png)bin456 -> 456 bytes
-rw-r--r--graphics/battle_anims/sprites/opening_eye.png (renamed from graphics/battle_anims/sprites/190.png)bin463 -> 463 bytes
-rw-r--r--graphics/battle_anims/sprites/orange.png (renamed from graphics/battle_anims/sprites/012.png)bin199 -> 199 bytes
-rw-r--r--graphics/battle_anims/sprites/orange_light_wall.pal (renamed from graphics/battle_anims/sprites/170.pal)0
-rw-r--r--graphics/battle_anims/sprites/orb.png (renamed from graphics/battle_anims/sprites/004.png)bin233 -> 233 bytes
-rw-r--r--graphics/battle_anims/sprites/orbs.png (renamed from graphics/battle_anims/sprites/147.png)bin311 -> 311 bytes
-rw-r--r--graphics/battle_anims/sprites/pain_split.png (renamed from graphics/battle_anims/sprites/239.png)bin313 -> 313 bytes
-rw-r--r--graphics/battle_anims/sprites/paw_print.png (renamed from graphics/battle_anims/sprites/252.png)bin323 -> 323 bytes
-rw-r--r--graphics/battle_anims/sprites/pencil.png (renamed from graphics/battle_anims/sprites/002.png)bin251 -> 251 bytes
-rw-r--r--graphics/battle_anims/sprites/pencil_2.png (renamed from graphics/battle_anims/sprites/095.png)bin252 -> 252 bytes
-rw-r--r--graphics/battle_anims/sprites/petal.png (renamed from graphics/battle_anims/sprites/096.png)bin356 -> 356 bytes
-rw-r--r--graphics/battle_anims/sprites/pink_cloud.png (renamed from graphics/battle_anims/sprites/242.png)bin339 -> 339 bytes
-rw-r--r--graphics/battle_anims/sprites/pink_glove.png (renamed from graphics/battle_anims/sprites/081.png)bin217 -> 217 bytes
-rw-r--r--graphics/battle_anims/sprites/pink_heart.pal (renamed from graphics/battle_anims/sprites/219.pal)0
-rw-r--r--graphics/battle_anims/sprites/pink_heart_2.png (renamed from graphics/battle_anims/sprites/045.png)bin422 -> 422 bytes
-rw-r--r--graphics/battle_anims/sprites/pink_orb.png (renamed from graphics/battle_anims/sprites/008.png)bin147 -> 147 bytes
-rw-r--r--graphics/battle_anims/sprites/pink_petal.png (renamed from graphics/battle_anims/sprites/238.png)bin210 -> 210 bytes
-rw-r--r--graphics/battle_anims/sprites/poison_bubble.png (renamed from graphics/battle_anims/sprites/150.png)bin259 -> 259 bytes
-rw-r--r--graphics/battle_anims/sprites/poison_powder.png (renamed from graphics/battle_anims/sprites/065.png)bin343 -> 343 bytes
-rw-r--r--graphics/battle_anims/sprites/pokeball.png (renamed from graphics/battle_anims/sprites/226.png)bin245 -> 245 bytes
-rw-r--r--graphics/battle_anims/sprites/pokeblock.png (renamed from graphics/battle_anims/sprites/269.png)bin179 -> 179 bytes
-rw-r--r--graphics/battle_anims/sprites/protect.png (renamed from graphics/battle_anims/sprites/280.png)bin601 -> 601 bytes
-rw-r--r--graphics/battle_anims/sprites/punch_impact.png (renamed from graphics/battle_anims/sprites/204.png)bin390 -> 390 bytes
-rw-r--r--graphics/battle_anims/sprites/purple_coral.png (renamed from graphics/battle_anims/sprites/122.png)bin293 -> 293 bytes
-rw-r--r--graphics/battle_anims/sprites/purple_droplet.png (renamed from graphics/battle_anims/sprites/123.png)bin274 -> 274 bytes
-rw-r--r--graphics/battle_anims/sprites/purple_flame.png (renamed from graphics/battle_anims/sprites/253.png)bin467 -> 467 bytes
-rw-r--r--graphics/battle_anims/sprites/purple_gas_cloud.pal (renamed from graphics/battle_anims/sprites/172.pal)0
-rw-r--r--graphics/battle_anims/sprites/purple_green_unk.png (renamed from graphics/battle_anims/sprites/112.png)bin762 -> 762 bytes
-rw-r--r--graphics/battle_anims/sprites/purple_hand_outline.png (renamed from graphics/battle_anims/sprites/193.png)bin358 -> 358 bytes
-rw-r--r--graphics/battle_anims/sprites/purple_ring.pal (renamed from graphics/battle_anims/sprites/164.pal)0
-rw-r--r--graphics/battle_anims/sprites/purple_scratch.png (renamed from graphics/battle_anims/sprites/245.png)bin329 -> 329 bytes
-rw-r--r--graphics/battle_anims/sprites/purple_swipe.png (renamed from graphics/battle_anims/sprites/246.png)bin758 -> 758 bytes
-rw-r--r--graphics/battle_anims/sprites/rain_drops.png (renamed from graphics/battle_anims/sprites/115.png)bin267 -> 267 bytes
-rw-r--r--graphics/battle_anims/sprites/rainbow_rings.png (renamed from graphics/battle_anims/sprites/140.png)bin224 -> 224 bytes
-rw-r--r--graphics/battle_anims/sprites/rapid_spin.png (renamed from graphics/battle_anims/sprites/229.png)bin445 -> 445 bytes
-rw-r--r--graphics/battle_anims/sprites/razor_leaf.png (renamed from graphics/battle_anims/sprites/160.png)bin219 -> 219 bytes
-rw-r--r--graphics/battle_anims/sprites/recycle.png (renamed from graphics/battle_anims/sprites/278.png)bin421 -> 421 bytes
-rw-r--r--graphics/battle_anims/sprites/red_ball.png (renamed from graphics/battle_anims/sprites/254.png)bin334 -> 334 bytes
-rw-r--r--graphics/battle_anims/sprites/red_fist.png (renamed from graphics/battle_anims/sprites/055.png)bin242 -> 242 bytes
-rw-r--r--graphics/battle_anims/sprites/red_heart.pal (renamed from graphics/battle_anims/sprites/216.pal)0
-rw-r--r--graphics/battle_anims/sprites/red_light_wall.pal (renamed from graphics/battle_anims/sprites/168.pal)0
-rw-r--r--graphics/battle_anims/sprites/red_orb.png (renamed from graphics/battle_anims/sprites/217.png)bin195 -> 195 bytes
-rw-r--r--graphics/battle_anims/sprites/red_orb_2.pal (renamed from graphics/battle_anims/sprites/237.pal)0
-rw-r--r--graphics/battle_anims/sprites/red_particles.png (renamed from graphics/battle_anims/sprites/279.png)bin184 -> 184 bytes
-rw-r--r--graphics/battle_anims/sprites/red_tube.png (renamed from graphics/battle_anims/sprites/092.png)bin199 -> 199 bytes
-rw-r--r--graphics/battle_anims/sprites/red_wand.png (renamed from graphics/battle_anims/sprites/111.png)bin169 -> 169 bytes
-rw-r--r--graphics/battle_anims/sprites/reticle.png (renamed from graphics/battle_anims/sprites/085.png)bin221 -> 221 bytes
-rw-r--r--graphics/battle_anims/sprites/ring.png (renamed from graphics/battle_anims/sprites/057.png)bin214 -> 214 bytes
-rw-r--r--graphics/battle_anims/sprites/rocks.png (renamed from graphics/battle_anims/sprites/058.png)bin818 -> 818 bytes
-rw-r--r--graphics/battle_anims/sprites/roots.png (renamed from graphics/battle_anims/sprites/223.png)bin524 -> 524 bytes
-rw-r--r--graphics/battle_anims/sprites/round_shadow.png (renamed from graphics/battle_anims/sprites/156.png)bin332 -> 332 bytes
-rw-r--r--graphics/battle_anims/sprites/round_white_halo.png (renamed from graphics/battle_anims/sprites/191.png)bin399 -> 399 bytes
-rw-r--r--graphics/battle_anims/sprites/sap_drip.png (renamed from graphics/battle_anims/sprites/046.png)bin716 -> 716 bytes
-rw-r--r--graphics/battle_anims/sprites/sap_drip_2.pal (renamed from graphics/battle_anims/sprites/047.pal)0
-rw-r--r--graphics/battle_anims/sprites/scratch.png (renamed from graphics/battle_anims/sprites/137.png)bin377 -> 377 bytes
-rw-r--r--graphics/battle_anims/sprites/scratch_2.png (renamed from graphics/battle_anims/sprites/041.png)bin249 -> 249 bytes
-rw-r--r--graphics/battle_anims/sprites/scratch_3.png (renamed from graphics/battle_anims/sprites/040.png)bin362 -> 362 bytes
-rw-r--r--graphics/battle_anims/sprites/seed.png (renamed from graphics/battle_anims/sprites/006.png)bin275 -> 275 bytes
-rw-r--r--graphics/battle_anims/sprites/seed_2.png (renamed from graphics/battle_anims/sprites/109.png)bin161 -> 161 bytes
-rw-r--r--graphics/battle_anims/sprites/shadow_ball.png (renamed from graphics/battle_anims/sprites/176.png)bin330 -> 330 bytes
-rw-r--r--graphics/battle_anims/sprites/sharp_teeth.png (renamed from graphics/battle_anims/sprites/139.png)bin299 -> 299 bytes
-rw-r--r--graphics/battle_anims/sprites/shock.png (renamed from graphics/battle_anims/sprites/079.png)bin880 -> 880 bytes
-rw-r--r--graphics/battle_anims/sprites/shock_2.png (renamed from graphics/battle_anims/sprites/124.png)bin594 -> 594 bytes
-rw-r--r--graphics/battle_anims/sprites/shock_3.png (renamed from graphics/battle_anims/sprites/282.png)bin401 -> 401 bytes
-rw-r--r--graphics/battle_anims/sprites/shock_4.png (renamed from graphics/battle_anims/sprites/078.png)bin403 -> 403 bytes
-rw-r--r--graphics/battle_anims/sprites/slam_hit.png (renamed from graphics/battle_anims/sprites/056.png)bin862 -> 862 bytes
-rw-r--r--graphics/battle_anims/sprites/slam_hit_2.png (renamed from graphics/battle_anims/sprites/277.png)bin684 -> 684 bytes
-rw-r--r--graphics/battle_anims/sprites/slash.png (renamed from graphics/battle_anims/sprites/183.png)bin546 -> 546 bytes
-rw-r--r--graphics/battle_anims/sprites/slash_2.pal (renamed from graphics/battle_anims/sprites/286.pal)0
-rw-r--r--graphics/battle_anims/sprites/sleep_powder.pal (renamed from graphics/battle_anims/sprites/067.pal)0
-rw-r--r--graphics/battle_anims/sprites/small_bubbles.png (renamed from graphics/battle_anims/sprites/155.png)bin255 -> 255 bytes
-rw-r--r--graphics/battle_anims/sprites/small_ember.png (renamed from graphics/battle_anims/sprites/029.png)bin537 -> 537 bytes
-rw-r--r--graphics/battle_anims/sprites/small_red_eye.png (renamed from graphics/battle_anims/sprites/248.png)bin141 -> 141 bytes
-rw-r--r--graphics/battle_anims/sprites/smellingsalt_effect.png (renamed from graphics/battle_anims/sprites/255.png)bin208 -> 208 bytes
-rw-r--r--graphics/battle_anims/sprites/smoke.png (renamed from graphics/battle_anims/sprites/133.png)bin207 -> 207 bytes
-rw-r--r--graphics/battle_anims/sprites/smoke_2.png (renamed from graphics/battle_anims/sprites/134.png)bin248 -> 248 bytes
-rw-r--r--graphics/battle_anims/sprites/snore_z.png (renamed from graphics/battle_anims/sprites/197.png)bin375 -> 375 bytes
-rw-r--r--graphics/battle_anims/sprites/snowball.png (renamed from graphics/battle_anims/sprites/088.png)bin194 -> 194 bytes
-rw-r--r--graphics/battle_anims/sprites/spark.pal (renamed from graphics/battle_anims/sprites/159.pal)0
-rw-r--r--graphics/battle_anims/sprites/spark_0.png (renamed from graphics/battle_anims/sprites/001_0.png)bin178 -> 178 bytes
-rw-r--r--graphics/battle_anims/sprites/spark_1.png (renamed from graphics/battle_anims/sprites/001_1.png)bin198 -> 198 bytes
-rw-r--r--graphics/battle_anims/sprites/spark_2.png (renamed from graphics/battle_anims/sprites/011.png)bin212 -> 212 bytes
-rw-r--r--graphics/battle_anims/sprites/spark_h.png (renamed from graphics/battle_anims/sprites/173.png)bin212 -> 212 bytes
-rw-r--r--graphics/battle_anims/sprites/sparkle_1.png (renamed from graphics/battle_anims/sprites/048.png)bin666 -> 666 bytes
-rw-r--r--graphics/battle_anims/sprites/sparkle_2.pal (renamed from graphics/battle_anims/sprites/049.pal)0
-rw-r--r--graphics/battle_anims/sprites/sparkle_3.png (renamed from graphics/battle_anims/sprites/070.png)bin195 -> 195 bytes
-rw-r--r--graphics/battle_anims/sprites/sparkle_4.png (renamed from graphics/battle_anims/sprites/071.png)bin412 -> 412 bytes
-rw-r--r--graphics/battle_anims/sprites/sparkle_6.png (renamed from graphics/battle_anims/sprites/271.png)bin172 -> 172 bytes
-rw-r--r--graphics/battle_anims/sprites/speed_dust.png (renamed from graphics/battle_anims/sprites/207.png)bin262 -> 262 bytes
-rw-r--r--graphics/battle_anims/sprites/sphere_to_cube.png (renamed from graphics/battle_anims/sprites/185.png)bin819 -> 819 bytes
-rw-r--r--graphics/battle_anims/sprites/spider_web.png (renamed from graphics/battle_anims/sprites/181.png)bin542 -> 542 bytes
-rw-r--r--graphics/battle_anims/sprites/spikes.png (renamed from graphics/battle_anims/sprites/152.png)bin175 -> 175 bytes
-rw-r--r--graphics/battle_anims/sprites/spinning_fire.png (renamed from graphics/battle_anims/sprites/034.png)bin850 -> 850 bytes
-rw-r--r--graphics/battle_anims/sprites/spinning_green_orbs.png (renamed from graphics/battle_anims/sprites/062.png)bin845 -> 845 bytes
-rw-r--r--graphics/battle_anims/sprites/spiral.png (renamed from graphics/battle_anims/sprites/196.png)bin726 -> 726 bytes
-rw-r--r--graphics/battle_anims/sprites/splash.png (renamed from graphics/battle_anims/sprites/272.png)bin384 -> 384 bytes
-rw-r--r--graphics/battle_anims/sprites/spore.png (renamed from graphics/battle_anims/sprites/158.png)bin251 -> 251 bytes
-rw-r--r--graphics/battle_anims/sprites/spotlight.png (renamed from graphics/battle_anims/sprites/227.png)bin269 -> 269 bytes
-rw-r--r--graphics/battle_anims/sprites/sprout.png (renamed from graphics/battle_anims/sprites/110.png)bin688 -> 688 bytes
-rw-r--r--graphics/battle_anims/sprites/string.png (renamed from graphics/battle_anims/sprites/179.png)bin226 -> 226 bytes
-rw-r--r--graphics/battle_anims/sprites/string_2.png (renamed from graphics/battle_anims/sprites/094.png)bin281 -> 281 bytes
-rw-r--r--graphics/battle_anims/sprites/stun_spore.pal (renamed from graphics/battle_anims/sprites/068.pal)0
-rw-r--r--graphics/battle_anims/sprites/sunlight.png (renamed from graphics/battle_anims/sprites/157.png)bin184 -> 184 bytes
-rw-r--r--graphics/battle_anims/sprites/sweat_bead.png (renamed from graphics/battle_anims/sprites/273.png)bin159 -> 159 bytes
-rw-r--r--graphics/battle_anims/sprites/sweat_drop.png (renamed from graphics/battle_anims/sprites/243.png)bin160 -> 160 bytes
-rw-r--r--graphics/battle_anims/sprites/swipe.png (renamed from graphics/battle_anims/sprites/222.png)bin554 -> 554 bytes
-rw-r--r--graphics/battle_anims/sprites/sword.png (renamed from graphics/battle_anims/sprites/005.png)bin200 -> 200 bytes
-rw-r--r--graphics/battle_anims/sprites/sword_2.png (renamed from graphics/battle_anims/sprites/090.png)bin229 -> 229 bytes
-rw-r--r--graphics/battle_anims/sprites/tag_hand.png (renamed from graphics/battle_anims/sprites/247.png)bin441 -> 441 bytes
-rw-r--r--graphics/battle_anims/sprites/teal_alert.png (renamed from graphics/battle_anims/sprites/189.png)bin196 -> 196 bytes
-rw-r--r--graphics/battle_anims/sprites/teeth.png (renamed from graphics/battle_anims/sprites/118.png)bin296 -> 296 bytes
-rw-r--r--graphics/battle_anims/sprites/tendrils.png (renamed from graphics/battle_anims/sprites/186.png)bin599 -> 599 bytes
-rw-r--r--graphics/battle_anims/sprites/thin_ring.png (renamed from graphics/battle_anims/sprites/203.png)bin323 -> 323 bytes
-rw-r--r--graphics/battle_anims/sprites/thought_bubble.png (renamed from graphics/battle_anims/sprites/209.png)bin620 -> 620 bytes
-rw-r--r--graphics/battle_anims/sprites/tied_bag.png (renamed from graphics/battle_anims/sprites/015.png)bin199 -> 199 bytes
-rw-r--r--graphics/battle_anims/sprites/tongue.png (renamed from graphics/battle_anims/sprites/132.png)bin291 -> 291 bytes
-rw-r--r--graphics/battle_anims/sprites/torn_metal.png (renamed from graphics/battle_anims/sprites/208.png)bin815 -> 815 bytes
-rw-r--r--graphics/battle_anims/sprites/toxic_bubble.png (renamed from graphics/battle_anims/sprites/151.png)bin239 -> 239 bytes
-rw-r--r--graphics/battle_anims/sprites/tri_force_triangle.png (renamed from graphics/battle_anims/sprites/230.png)bin481 -> 481 bytes
-rw-r--r--graphics/battle_anims/sprites/unknown.png (renamed from graphics/battle_anims/sprites/121.png)bin163 -> 163 bytes
-rw-r--r--graphics/battle_anims/sprites/vine.png (renamed from graphics/battle_anims/sprites/089.png)bin488 -> 488 bytes
-rw-r--r--graphics/battle_anims/sprites/vine_2.png (renamed from graphics/battle_anims/sprites/117.png)bin474 -> 474 bytes
-rw-r--r--graphics/battle_anims/sprites/void_lines.png (renamed from graphics/battle_anims/sprites/178.png)bin358 -> 358 bytes
-rw-r--r--graphics/battle_anims/sprites/warm_rock.png (renamed from graphics/battle_anims/sprites/201.png)bin1316 -> 1316 bytes
-rw-r--r--graphics/battle_anims/sprites/water_column.png (renamed from graphics/battle_anims/sprites/113.png)bin586 -> 586 bytes
-rw-r--r--graphics/battle_anims/sprites/water_droplet.png (renamed from graphics/battle_anims/sprites/107.png)bin576 -> 576 bytes
-rw-r--r--graphics/battle_anims/sprites/water_droplet_2.png (renamed from graphics/battle_anims/sprites/108.png)bin800 -> 800 bytes
-rw-r--r--graphics/battle_anims/sprites/water_impact.png (renamed from graphics/battle_anims/sprites/148.png)bin259 -> 259 bytes
-rw-r--r--graphics/battle_anims/sprites/water_orb.png (renamed from graphics/battle_anims/sprites/149.png)bin233 -> 233 bytes
-rw-r--r--graphics/battle_anims/sprites/waving_hand.png (renamed from graphics/battle_anims/sprites/025.png)bin274 -> 274 bytes
-rw-r--r--graphics/battle_anims/sprites/weather_ball.png (renamed from graphics/battle_anims/sprites/283.png)bin323 -> 323 bytes
-rw-r--r--graphics/battle_anims/sprites/web.png (renamed from graphics/battle_anims/sprites/098.png)bin328 -> 328 bytes
-rw-r--r--graphics/battle_anims/sprites/web_thread.png (renamed from graphics/battle_anims/sprites/180.png)bin139 -> 139 bytes
-rw-r--r--graphics/battle_anims/sprites/whip_hit.pal (renamed from graphics/battle_anims/sprites/287.pal)0
-rw-r--r--graphics/battle_anims/sprites/whirlwind.png (renamed from graphics/battle_anims/sprites/128.png)bin500 -> 500 bytes
-rw-r--r--graphics/battle_anims/sprites/whirlwind_2.png (renamed from graphics/battle_anims/sprites/129.png)bin205 -> 205 bytes
-rw-r--r--graphics/battle_anims/sprites/whirlwind_lines.png (renamed from graphics/battle_anims/sprites/162.png)bin179 -> 179 bytes
-rw-r--r--graphics/battle_anims/sprites/white_bag.png (renamed from graphics/battle_anims/sprites/120.png)bin301 -> 301 bytes
-rw-r--r--graphics/battle_anims/sprites/white_circle_of_light.pal (renamed from graphics/battle_anims/sprites/267.pal)0
-rw-r--r--graphics/battle_anims/sprites/white_feather.png (renamed from graphics/battle_anims/sprites/270.png)bin304 -> 304 bytes
-rw-r--r--graphics/battle_anims/sprites/white_shadow.png (renamed from graphics/battle_anims/sprites/188.png)bin249 -> 249 bytes
-rw-r--r--graphics/battle_anims/sprites/wisp_fire.png (renamed from graphics/battle_anims/sprites/232.png)bin1085 -> 1085 bytes
-rw-r--r--graphics/battle_anims/sprites/wisp_orb.png (renamed from graphics/battle_anims/sprites/231.png)bin391 -> 391 bytes
-rw-r--r--graphics/battle_anims/sprites/x_sign.png (renamed from graphics/battle_anims/sprites/250.png)bin457 -> 457 bytes
-rw-r--r--graphics/battle_anims/sprites/yellow_ball.png (renamed from graphics/battle_anims/sprites/013.png)bin161 -> 161 bytes
-rw-r--r--graphics/battle_anims/sprites/yellow_star.png (renamed from graphics/battle_anims/sprites/174.png)bin210 -> 210 bytes
-rw-r--r--graphics/battle_anims/sprites/yellow_unk.png (renamed from graphics/battle_anims/sprites/054.png)bin159 -> 159 bytes
-rw-r--r--graphics/battle_anims/sprites/yellow_unk_2.png (renamed from graphics/battle_anims/sprites/060.png)bin154 -> 154 bytes
-rw-r--r--graphics/battle_anims/sprites/z.png (renamed from graphics/battle_anims/sprites/059.png)bin193 -> 193 bytes
-rw-r--r--graphics/decorations/decoration_menu.pal (renamed from graphics/decorations/unk_85a6bb0.pal)0
-rw-r--r--graphics_file_rules.mk30
-rw-r--r--include/battle.h76
-rw-r--r--include/battle_anim.h2
-rw-r--r--include/battle_transition.h4
-rw-r--r--include/berry.h6
-rw-r--r--include/constants/battle_anim.h248
-rw-r--r--include/constants/event_objects.h2
-rw-r--r--include/constants/flags.h4
-rw-r--r--include/constants/item_effects.h79
-rw-r--r--include/constants/items.h2
-rwxr-xr-xinclude/constants/metatile_behaviors.h4
-rw-r--r--include/constants/songs.h2
-rw-r--r--include/constants/vars.h2
-rw-r--r--include/contest.h104
-rw-r--r--include/data.h119
-rw-r--r--include/data2.h22
-rw-r--r--include/decoration.h76
-rw-r--r--include/decoration_inventory.h8
-rw-r--r--include/event_object_movement.h14
-rw-r--r--include/event_scripts.h13
-rw-r--r--include/field_effect.h4
-rw-r--r--include/field_specials.h3
-rw-r--r--include/gba/types.h4
-rw-r--r--include/global.h14
-rw-r--r--include/graphics.h1213
-rw-r--r--include/international_string_util.h2
-rw-r--r--include/link.h2
-rw-r--r--include/match_call.h5
-rw-r--r--include/menu.h1
-rw-r--r--include/menu_helpers.h2
-rw-r--r--include/menu_specialized.h6
-rw-r--r--include/metatile_behavior.h4
-rw-r--r--include/new_game.h4
-rw-r--r--include/pokemon.h6
-rw-r--r--include/pokemon_jump.h4
-rwxr-xr-xinclude/pokemon_summary_screen.h2
-rw-r--r--include/pokenav.h180
-rw-r--r--include/region_map.h6
-rw-r--r--include/secret_base.h46
-rw-r--r--include/shop.h8
-rw-r--r--include/strings.h42
-rw-r--r--include/trader.h2
-rw-r--r--include/union_room.h1
-rwxr-xr-xjson_data_rules.mk8
-rw-r--r--ld_script.txt26
-rwxr-xr-xporymap.project.cfg1
-rw-r--r--src/alloc.c4
-rw-r--r--src/apprentice.c185
-rw-r--r--src/battle_ai_script_commands.c3
-rw-r--r--src/battle_ai_switch_items.c38
-rw-r--r--src/battle_anim.c1216
-rw-r--r--src/battle_anim_effects_1.c12
-rwxr-xr-xsrc/battle_anim_effects_2.c97
-rwxr-xr-xsrc/battle_anim_effects_3.c4
-rw-r--r--src/battle_anim_mons.c7
-rw-r--r--src/battle_anim_sound_tasks.c71
-rwxr-xr-xsrc/battle_anim_special.c442
-rw-r--r--src/battle_anim_status_effects.c16
-rw-r--r--src/battle_bg.c22
-rw-r--r--src/battle_controller_link_opponent.c4
-rw-r--r--src/battle_controller_link_partner.c5
-rw-r--r--src/battle_controller_opponent.c4
-rw-r--r--src/battle_controller_player.c14
-rw-r--r--src/battle_controller_player_partner.c5
-rw-r--r--src/battle_controller_recorded_opponent.c4
-rw-r--r--src/battle_controller_recorded_player.c5
-rw-r--r--src/battle_controller_safari.c7
-rw-r--r--src/battle_controller_wally.c7
-rw-r--r--src/battle_data.c14
-rw-r--r--src/battle_dome.c5
-rw-r--r--src/battle_factory_screen.c14
-rw-r--r--src/battle_gfx_sfx_util.c12
-rw-r--r--src/battle_interface.c5
-rw-r--r--src/battle_main.c8
-rw-r--r--src/battle_message.c3
-rw-r--r--src/battle_records.c5
-rw-r--r--src/battle_script_commands.c71
-rw-r--r--src/battle_setup.c3
-rw-r--r--src/battle_tower.c2
-rw-r--r--src/battle_transition.c29
-rw-r--r--src/battle_util.c4
-rw-r--r--src/battle_util2.c4
-rw-r--r--src/berry.c92
-rw-r--r--src/berry_blender.c17
-rwxr-xr-xsrc/berry_crush.c4
-rw-r--r--src/berry_tag_screen.c5
-rw-r--r--src/bike.c5
-rw-r--r--src/cable_club.c2
-rw-r--r--src/clear_save_data_screen.c2
-rw-r--r--src/contest.c1855
-rw-r--r--src/contest_ai.c925
-rw-r--r--src/contest_effect.c506
-rw-r--r--src/contest_link_80F57C4.c496
-rw-r--r--src/contest_link_80FC4F4.c24
-rw-r--r--src/contest_link_81D9DE4.c2
-rw-r--r--src/contest_painting.c5
-rw-r--r--src/data.c (renamed from src/data2b.c)100
-rwxr-xr-xsrc/data/.gitignore1
-rw-r--r--src/data/contest_opponents.h192
-rw-r--r--src/data/decoration/header.h90
-rwxr-xr-xsrc/data/field_event_obj/berry_tree_graphics_tables.h265
-rw-r--r--src/data/items.h2684
-rw-r--r--src/data/pokemon/item_effects.h704
-rw-r--r--src/data/pokemon_graphics/back_pic_coordinates.h2
-rw-r--r--src/data/pokemon_graphics/back_pic_table.h881
-rw-r--r--src/data/pokemon_graphics/enemy_mon_elevation.h355
-rw-r--r--src/data/pokemon_graphics/footprint_table.h826
-rw-r--r--src/data/pokemon_graphics/front_pic_anims.h (renamed from src/data/pokemon_graphics/front_anims.h)3625
-rw-r--r--src/data/pokemon_graphics/front_pic_coordinates.h2
-rw-r--r--src/data/pokemon_graphics/front_pic_table.h880
-rw-r--r--src/data/pokemon_graphics/palette_table.h880
-rw-r--r--src/data/pokemon_graphics/shiny_palette_table.h880
-rw-r--r--src/data/pokemon_graphics/still_front_pic_table.h884
-rw-r--r--src/data/pokemon_graphics/unknown_anims.h1309
-rw-r--r--src/data/text/item_descriptions.h1847
-rw-r--r--src/data/trainer_graphics/back_pic_anims.h64
-rw-r--r--src/data/trainer_graphics/back_pic_tables.h34
-rw-r--r--src/data/trainer_graphics/front_pic_anims.h560
-rw-r--r--src/data/trainer_graphics/front_pic_tables.h558
-rw-r--r--src/data/trainer_parties.h1708
-rw-r--r--src/data/trainers.h1708
-rw-r--r--src/data/wild_encounters.h4573
-rwxr-xr-xsrc/data/wild_encounters.json12186
-rwxr-xr-xsrc/data/wild_encounters.json.txt67
-rw-r--r--src/decompress.c10
-rw-r--r--src/decoration.c1981
-rw-r--r--src/decoration_inventory.c45
-rw-r--r--src/diploma.c5
-rw-r--r--src/dodrio_berry_picking.c2
-rw-r--r--src/easy_chat.c9
-rw-r--r--src/egg_hatch.c11
-rw-r--r--src/event_object_movement.c77
-rw-r--r--src/evolution_graphics.c11
-rw-r--r--src/evolution_scene.c33
-rw-r--r--src/field_control_avatar.c20
-rw-r--r--src/field_effect.c8
-rw-r--r--src/field_player_avatar.c4
-rw-r--r--src/field_region_map.c5
-rw-r--r--src/field_screen_effect.c4
-rw-r--r--src/field_specials.c30
-rw-r--r--src/fieldmap.c6
-rw-r--r--src/fldeff_cut.c4
-rw-r--r--src/fldeff_misc.c20
-rw-r--r--src/fldeff_rocksmash.c2
-rw-r--r--src/fldeff_strength.c2
-rw-r--r--src/fldeff_sweetscent.c2
-rw-r--r--src/frontier_util.c2
-rw-r--r--src/graphics.c1132
-rw-r--r--src/hall_of_fame.c2
-rw-r--r--src/hof_pc.c3
-rw-r--r--src/ice.c508
-rw-r--r--src/international_string_util.c2
-rw-r--r--src/item.c2
-rwxr-xr-xsrc/item_menu.c7
-rwxr-xr-xsrc/item_use.c67
-rw-r--r--src/link.c3
-rw-r--r--src/link_rfu.c2
-rw-r--r--src/mail.c5
-rw-r--r--src/main_menu.c10
-rw-r--r--src/match_call.c10
-rw-r--r--src/menu.c2
-rw-r--r--src/menu_helpers.c14
-rw-r--r--src/menu_specialized.c626
-rw-r--r--src/metatile_behavior.c12
-rw-r--r--src/mevent_801BAAC.c17
-rw-r--r--src/move_relearner.c2
-rw-r--r--src/mystery_event_menu.c5
-rw-r--r--src/naming_screen.c7
-rw-r--r--src/new_game.c4
-rw-r--r--src/option_menu.c5
-rw-r--r--src/overworld.c14
-rwxr-xr-xsrc/party_menu.c186
-rw-r--r--src/player_pc.c4
-rw-r--r--src/pokeblock.c5
-rw-r--r--src/pokeblock_feed.c14
-rw-r--r--src/pokedex.c37
-rw-r--r--src/pokemon.c135
-rwxr-xr-xsrc/pokemon_jump.c2406
-rw-r--r--src/pokemon_size_record.c2
-rw-r--r--src/pokemon_storage_system.c4
-rw-r--r--src/pokemon_summary_screen.c3
-rw-r--r--src/pokenav.c1341
-rw-r--r--src/pokenav_main_menu.c975
-rw-r--r--src/pokenav_match_call_data.c (renamed from src/pokenav_match_call.c)154
-rw-r--r--src/pokenav_match_call_ui.c1167
-rw-r--r--src/pokenav_unk_1.c466
-rwxr-xr-xsrc/pokenav_unk_3.c504
-rwxr-xr-xsrc/pokenav_unk_4.c1119
-rwxr-xr-xsrc/pokenav_unk_5.c636
-rw-r--r--src/rayquaza_scene.c20
-rw-r--r--src/record_mixing.c10
-rw-r--r--src/recorded_battle.c3
-rw-r--r--src/region_map.c7
-rw-r--r--src/reset_rtc_screen.c5
-rw-r--r--src/reshow_battle_screen.c10
-rw-r--r--src/rock.c2
-rw-r--r--src/roulette.c610
-rw-r--r--src/save_failed_screen.c2
-rw-r--r--src/scanline_effect.c2
-rw-r--r--src/scrcmd.c10
-rwxr-xr-xsrc/script_pokemon_util_80F87D8.c28
-rw-r--r--src/secret_base.c1782
-rwxr-xr-xsrc/shop.c37
-rw-r--r--src/slot_machine.c4
-rw-r--r--src/smokescreen.c6
-rw-r--r--src/start_menu.c5
-rw-r--r--src/starter_choose.c5
-rw-r--r--src/strings.c36
-rw-r--r--src/title_screen.c10
-rw-r--r--src/trade.c12
-rw-r--r--src/trader.c10
-rwxr-xr-xsrc/trainer_card.c3
-rw-r--r--src/trainer_pokemon_sprites.c17
-rw-r--r--src/tv.c16
-rw-r--r--src/union_room.c16
-rwxr-xr-xsrc/union_room_chat.c2
-rw-r--r--src/union_room_player_avatar.c2
-rw-r--r--src/unk_transition.c3
-rw-r--r--src/use_pokeblock.c7
-rw-r--r--src/wallclock.c7
-rw-r--r--src/water.c896
-rw-r--r--src/wild_encounter.c10
-rw-r--r--sym_ewram.txt13
-rwxr-xr-xtools/jsonproc/.gitignore1
-rwxr-xr-xtools/jsonproc/Makefile17
-rwxr-xr-xtools/jsonproc/inja.hpp3396
-rwxr-xr-xtools/jsonproc/jsonproc.cpp91
-rwxr-xr-xtools/jsonproc/jsonproc.h32
-rwxr-xr-xtools/jsonproc/nlohmann/json.hpp20842
783 files changed, 73993 insertions, 50967 deletions
diff --git a/.gitignore b/.gitignore
index 1b72e0c77..2a1300ab3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,3 +28,5 @@ build/
.DS_Store
*.ddump
.idea/
+porymap.project.cfg
+.vscode/
diff --git a/.travis.yml b/.travis.yml
index 52c8e35d5..ff4ab4bc9 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -22,9 +22,15 @@ install:
matrix:
include:
- os: linux
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - g++-7
env: _="Build"
script:
- - ./build_tools.sh
+ - ./build_tools.sh g++-7
- make -j2 compare
after_success:
- .travis/calcrom/webhook.sh pokeemerald
diff --git a/Makefile b/Makefile
index 1bfeebf61..bf8c498ae 100644
--- a/Makefile
+++ b/Makefile
@@ -23,6 +23,7 @@ MAP = $(ROM:.gba=.map)
C_SUBDIR = src
ASM_SUBDIR = asm
+DATA_SRC_SUBDIR = src/data
DATA_ASM_SUBDIR = data
SONG_SUBDIR = sound/songs
MID_SUBDIR = sound/songs/midi
@@ -53,6 +54,7 @@ PREPROC := tools/preproc/preproc$(EXE)
RAMSCRGEN := tools/ramscrgen/ramscrgen$(EXE)
FIX := tools/gbafix/gbafix$(EXE)
MAPJSON := tools/mapjson/mapjson$(EXE)
+JSONPROC := tools/jsonproc/jsonproc$(EXE)
# Clear the default suffixes
.SUFFIXES:
@@ -86,6 +88,8 @@ OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS))
SUBDIRS := $(sort $(dir $(OBJS)))
+AUTO_GEN_TARGETS :=
+
$(shell mkdir -p $(SUBDIRS))
rom: $(ROM)
@@ -101,6 +105,7 @@ clean: tidy
rm -f $(DATA_ASM_SUBDIR)/layouts/layouts.inc $(DATA_ASM_SUBDIR)/layouts/layouts_table.inc
rm -f $(DATA_ASM_SUBDIR)/maps/connections.inc $(DATA_ASM_SUBDIR)/maps/events.inc $(DATA_ASM_SUBDIR)/maps/groups.inc $(DATA_ASM_SUBDIR)/maps/headers.inc
find $(DATA_ASM_SUBDIR)/maps \( -iname 'connections.inc' -o -iname 'events.inc' -o -iname 'header.inc' \) -exec rm {} +
+ rm -f $(AUTO_GEN_TARGETS)
tidy:
rm -f $(ROM) $(ELF) $(MAP)
@@ -109,6 +114,7 @@ tidy:
include graphics_file_rules.mk
include map_data_rules.mk
include spritesheet_rules.mk
+include json_data_rules.mk
include songs.mk
%.s: ;
diff --git a/asm/macros/battle_anim_script.inc b/asm/macros/battle_anim_script.inc
index 32d9de82c..5426cdfba 100644
--- a/asm/macros/battle_anim_script.inc
+++ b/asm/macros/battle_anim_script.inc
@@ -144,7 +144,7 @@
.byte \pan
.endm
- .macro panse_1B se:req, param1:req, param2:req, param3:req, param4
+ .macro panse_1B se:req, param1:req, param2:req, param3:req, param4:req
.byte 0x1b
.2byte \se
.byte \param1
@@ -215,7 +215,7 @@
.byte \param2
.endm
- .macro panse_26 se:req, param1:req, param2:req, param3:req, param4
+ .macro panse_26 se:req, param1:req, param2:req, param3:req, param4:req
.byte 0x26
.2byte \se
.byte \param1
@@ -224,7 +224,7 @@
.byte \param4
.endm
- .macro panse_27 se:req, param1:req, param2:req, param3:req, param4
+ .macro panse_27 se:req, param1:req, param2:req, param3:req, param4:req
.byte 0x27
.2byte \se
.byte \param1
diff --git a/asm/pokemon_jump.s b/asm/pokemon_jump.s
index e9aa9089d..4327bb920 100755
--- a/asm/pokemon_jump.s
+++ b/asm/pokemon_jump.s
@@ -5,4742 +5,6 @@
.text
- thumb_func_start sub_802A9A8
-sub_802A9A8: @ 802A9A8
- push {r4-r7,lr}
- adds r6, r1, 0
- lsls r0, 16
- lsrs r7, r0, 16
- ldr r0, =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802AA3C
- ldr r5, =gUnknown_02022CFC
- ldr r0, =0x000083b0
- bl Alloc
- str r0, [r5]
- cmp r0, 0
- beq _0802AA3C
- bl ResetTasks
- ldr r0, =sub_802ACA0
- movs r1, 0x1
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, [r5]
- movs r1, 0
- strh r1, [r0, 0x8]
- str r6, [r0]
- strb r4, [r0, 0x4]
- bl GetMultiplayerId
- ldr r1, [r5]
- strb r0, [r1, 0x6]
- ldr r0, [r5]
- ldrb r2, [r0, 0x6]
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 2
- ldr r2, =0x000082a8
- adds r1, r2
- adds r0, r1
- movs r1, 0x64
- muls r1, r7
- ldr r2, =gPlayerParty
- adds r1, r2
- bl sub_802AC2C
- ldr r0, [r5]
- bl sub_802AA60
- ldr r2, [r5]
- adds r0, r4, 0
- movs r1, 0x2
- bl SetWordTaskArg
- ldr r0, =sub_802AC6C
- bl SetMainCallback2
- b _0802AA42
- .pool
-_0802AA3C:
- adds r0, r6, 0
- bl SetMainCallback2
-_0802AA42:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_802A9A8
-
- thumb_func_start sub_802AA48
-sub_802AA48: @ 802AA48
- push {lr}
- bl sub_802D0AC
- ldr r0, =gUnknown_02022CFC
- ldr r0, [r0]
- bl Free
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802AA48
-
- thumb_func_start sub_802AA60
-sub_802AA60: @ 802AA60
- push {r4,lr}
- adds r4, r0, 0
- bl GetLinkPlayerCount
- movs r2, 0
- strb r0, [r4, 0x5]
- adds r1, r4, 0
- adds r1, 0x70
- movs r0, 0x5
- strb r0, [r1]
- adds r0, r4, 0
- adds r0, 0x72
- strh r2, [r0]
- bl sub_802AB20
- adds r0, r4, 0
- bl sub_802AA94
- ldrb r0, [r4, 0x5]
- cmp r0, 0x5
- bne _0802AA8E
- bl sub_802E3A8
-_0802AA8E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_802AA60
-
- thumb_func_start sub_802AA94
-sub_802AA94: @ 802AA94
- push {r4-r6,lr}
- adds r4, r0, 0
- movs r0, 0x6
- str r0, [r4, 0x14]
- str r0, [r4, 0x18]
- adds r0, r4, 0
- adds r0, 0x4A
- movs r6, 0
- movs r5, 0
- strh r5, [r0]
- str r5, [r4, 0x1C]
- str r5, [r4, 0x5C]
- bl GetMultiplayerId
- movs r1, 0
- lsls r0, 24
- cmp r0, 0
- bne _0802AABA
- movs r1, 0x1
-_0802AABA:
- adds r0, r4, 0
- adds r0, 0x47
- strb r1, [r0]
- strh r5, [r4, 0x8]
- strh r5, [r4, 0xA]
- strh r5, [r4, 0xC]
- strh r5, [r4, 0xE]
- str r5, [r4, 0x58]
- strh r5, [r4, 0x3A]
- subs r0, 0x3
- strb r6, [r0]
- str r5, [r4, 0x54]
- adds r0, 0x2
- strb r6, [r0]
- adds r0, 0x3
- strb r6, [r0]
- subs r0, 0x1
- movs r1, 0x1
- strb r1, [r0]
- str r5, [r4, 0x78]
- adds r0, 0x29
- strb r6, [r0]
- adds r0, 0x3
- strh r5, [r0]
- str r1, [r4, 0x60]
- subs r0, 0x27
- strb r6, [r0]
- str r5, [r4, 0x68]
- str r5, [r4, 0x64]
- str r5, [r4, 0x2C]
- str r5, [r4, 0x30]
- bl sub_802AB98
- bl sub_802C0E8
- movs r2, 0
- adds r5, r4, 0
- adds r5, 0x7C
- movs r3, 0
- adds r1, r4, 0
- adds r1, 0x9A
-_0802AB0C:
- adds r0, r5, r2
- strb r3, [r0]
- strh r3, [r1]
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, 0x4
- ble _0802AB0C
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_802AA94
-
- thumb_func_start sub_802AB20
-sub_802AB20: @ 802AB20
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r7, =gUnknown_02022CFC
- movs r6, 0
- movs r5, 0
- ldr r0, =gPkmnJumpSpecies
- mov r8, r0
- movs r4, 0x4
-_0802AB32:
- ldr r0, [r7]
- adds r0, r5
- ldr r1, =0x000082a8
- adds r0, r1
- ldrh r0, [r0]
- bl sub_802AC00
- lsls r0, 16
- ldr r1, [r7]
- adds r1, r6
- asrs r0, 14
- add r0, r8
- ldrh r0, [r0, 0x2]
- ldr r2, =0x000082f0
- adds r1, r2
- strh r0, [r1]
- adds r6, 0x28
- adds r5, 0xC
- subs r4, 0x1
- cmp r4, 0
- bge _0802AB32
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
- ldr r0, =0x000083ac
- adds r3, r1, r0
- ldrb r2, [r1, 0x6]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r2, =0x000082e4
- adds r0, r2
- adds r1, r0
- str r1, [r3]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802AB20
-
- thumb_func_start sub_802AB98
-sub_802AB98: @ 802AB98
- push {r4-r7,lr}
- movs r5, 0
- ldr r6, =gUnknown_02022CFC
- movs r4, 0
- movs r3, 0
-_0802ABA2:
- ldr r2, [r6]
- adds r1, r2, r3
- ldr r7, =0x000082f2
- adds r0, r1, r7
- strh r4, [r0]
- adds r7, 0x2
- adds r0, r1, r7
- strh r4, [r0]
- ldr r0, =0x000082f6
- adds r1, r0
- strh r4, [r1]
- ldr r1, =0x000082e4
- adds r0, r2, r1
- adds r0, r3
- str r4, [r0]
- subs r7, 0xC
- adds r0, r2, r7
- adds r0, r3
- ldr r1, =0x7fffffff
- str r1, [r0]
- ldr r1, =0x000082f8
- adds r0, r2, r1
- adds r0, r3
- str r4, [r0]
- adds r2, 0x8B
- adds r2, r5
- movs r0, 0x9
- strb r0, [r2]
- adds r3, 0x28
- adds r5, 0x1
- cmp r5, 0x4
- ble _0802ABA2
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802AB98
-
- thumb_func_start sub_802AC00
-sub_802AC00: @ 802AC00
- push {lr}
- lsls r0, 16
- lsrs r3, r0, 16
- movs r1, 0
- ldr r2, =gPkmnJumpSpecies
-_0802AC0A:
- ldrh r0, [r2]
- cmp r0, r3
- bne _0802AC1C
- lsls r0, r1, 16
- asrs r0, 16
- b _0802AC28
- .pool
-_0802AC1C:
- adds r2, 0x4
- adds r1, 0x1
- cmp r1, 0x63
- bls _0802AC0A
- movs r0, 0x1
- negs r0, r0
-_0802AC28:
- pop {r1}
- bx r1
- thumb_func_end sub_802AC00
-
- thumb_func_start sub_802AC2C
-sub_802AC2C: @ 802AC2C
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0x1
- bl GetMonData
- str r0, [r5, 0x4]
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- str r0, [r5, 0x8]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_802AC2C
-
- thumb_func_start sub_802AC58
-sub_802AC58: @ 802AC58
- push {lr}
- bl TransferPlttBuffer
- bl LoadOam
- bl ProcessSpriteCopyRequests
- pop {r0}
- bx r0
- thumb_func_end sub_802AC58
-
- thumb_func_start sub_802AC6C
-sub_802AC6C: @ 802AC6C
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_802AC6C
-
- thumb_func_start sub_802AC84
-sub_802AC84: @ 802AC84
- push {lr}
- movs r1, 0x1
- bl CreateTask
- ldr r2, =gUnknown_02022CFC
- ldr r1, [r2]
- movs r3, 0
- strb r0, [r1, 0x4]
- ldr r0, [r2]
- strh r3, [r0, 0x8]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802AC84
-
- thumb_func_start sub_802ACA0
-sub_802ACA0: @ 802ACA0
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gUnknown_02022CFC
- ldr r0, [r1]
- ldrh r0, [r0, 0x8]
- adds r2, r1, 0
- cmp r0, 0x5
- bls _0802ACB6
- b _0802AE08
-_0802ACB6:
- lsls r0, 2
- ldr r1, =_0802ACC8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0802ACC8:
- .4byte _0802ACE0
- .4byte _0802AD0C
- .4byte _0802AD3C
- .4byte _0802AD68
- .4byte _0802ADA4
- .4byte _0802ADD0
-_0802ACE0:
- movs r0, 0
- bl SetVBlankCallback
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r0, =sub_802BD84
- movs r1, 0x5
- bl sub_802BE60
- movs r0, 0x4
- bl FadeOutMapMusic
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
- b _0802ADC0
- .pool
-_0802AD0C:
- ldr r0, =sub_802BD84
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _0802AE08
- ldr r4, =gUnknown_02022CFC
- ldr r0, [r4]
- adds r0, 0xA4
- bl sub_802D074
- bl sub_800E0E8
- movs r0, 0
- movs r1, 0
- bl CreateWirelessStatusIndicatorSprite
- ldr r1, [r4]
- b _0802ADC0
- .pool
-_0802AD3C:
- bl sub_802D0F0
- cmp r0, 0
- bne _0802AE08
- bl IsNotWaitingForBGMStop
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0802AE08
- ldr r0, =0x0000021a
- movs r1, 0x8
- bl FadeOutAndPlayNewMapMusic
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
- b _0802ADC0
- .pool
-_0802AD68:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _0802AE08
- movs r4, 0x1
- negs r4, r4
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- adds r1, r4, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, =sub_802AC58
- bl SetVBlankCallback
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
- b _0802ADC0
- .pool
-_0802ADA4:
- bl UpdatePaletteFade
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _0802AE08
- ldr r1, =gUnknown_02022CFC
- ldr r0, [r1]
- strb r2, [r0, 0x7]
- ldr r1, [r1]
-_0802ADC0:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _0802AE08
- .pool
-_0802ADD0:
- ldr r0, [r2]
- ldrb r1, [r0, 0x7]
- adds r1, 0x1
- strb r1, [r0, 0x7]
- ldr r1, [r2]
- ldrb r0, [r1, 0x7]
- cmp r0, 0x13
- bls _0802AE08
- adds r0, r1, 0
- adds r0, 0x47
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802ADF8
- ldr r0, =sub_802AF80
- bl sub_802AC84
- b _0802ADFE
- .pool
-_0802ADF8:
- ldr r0, =sub_802B194
- bl sub_802AC84
-_0802ADFE:
- bl sub_802BE80
- adds r0, r4, 0
- bl DestroyTask
-_0802AE08:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802ACA0
-
- thumb_func_start sub_802AE14
-sub_802AE14: @ 802AE14
- push {lr}
- adds r1, r0, 0
- cmp r1, 0
- bne _0802AE34
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
- ldr r0, =0x00001111
- str r0, [r1, 0x30]
- movs r0, 0x1
- str r0, [r1, 0x2C]
- b _0802AE46
- .pool
-_0802AE34:
- ldr r0, =gUnknown_02022CFC
- ldr r2, [r0]
- subs r1, 0x1
- movs r0, 0x1
- lsls r0, r1
- subs r0, 0x1
- str r0, [r2, 0x30]
- movs r0, 0
- str r0, [r2, 0x2C]
-_0802AE46:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802AE14
-
- thumb_func_start sub_802AE50
-sub_802AE50: @ 802AE50
- push {r4-r6,lr}
- ldr r4, =gUnknown_02022CFC
- ldr r1, [r4]
- adds r1, 0x70
- movs r2, 0
- strb r0, [r1]
- ldr r0, [r4]
- movs r3, 0
- strh r2, [r0, 0x8]
- strh r2, [r0, 0xA]
- adds r0, 0x48
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, [r4]
- adds r0, 0x49
- strb r3, [r0]
- movs r3, 0x1
- ldr r0, [r4]
- ldrb r0, [r0, 0x5]
- cmp r3, r0
- bge _0802AE94
- adds r6, r4, 0
- ldr r5, =0x000082fc
- movs r4, 0
- movs r2, 0x28
-_0802AE82:
- ldr r1, [r6]
- adds r0, r1, r5
- adds r0, r2
- str r4, [r0]
- adds r2, 0x28
- adds r3, 0x1
- ldrb r1, [r1, 0x5]
- cmp r3, r1
- blt _0802AE82
-_0802AE94:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802AE50
-
- thumb_func_start sub_802AEA4
-sub_802AEA4: @ 802AEA4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- movs r4, 0x1
- movs r0, 0
- str r0, [sp, 0x4]
- ldr r7, =gUnknown_02022CFC
- ldr r0, [r7]
- ldrb r0, [r0, 0x5]
- cmp r4, r0
- bge _0802AF48
- adds r1, r7, 0
- mov r10, r1
- movs r2, 0x2
- add r2, sp
- mov r8, r2
- ldr r3, =0x0000830c
- mov r9, r3
- movs r6, 0x28
-_0802AED0:
- mov r1, r10
- ldr r0, [r1]
- adds r1, r0, r6
- ldr r2, =0x000082f4
- adds r1, r2
- ldrh r5, [r1]
- add r0, r9
- adds r1, r4, 0
- mov r2, sp
- mov r3, r8
- bl sub_802E264
- cmp r0, 0
- beq _0802AF10
- ldr r2, [r7]
- lsls r1, r4, 1
- adds r0, r2, 0
- adds r0, 0x90
- adds r0, r1
- mov r3, r8
- ldrh r1, [r3]
- strh r1, [r0]
- adds r2, 0x8B
- adds r2, r4
- mov r0, sp
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r0, [r7]
- adds r0, r6
- ldr r1, =0x000082f6
- adds r0, r1
- strh r5, [r0]
-_0802AF10:
- mov r2, r10
- ldr r1, [r2]
- ldr r3, =0x000082fc
- adds r0, r1, r3
- adds r0, r6
- ldr r0, [r0]
- cmp r0, 0
- beq _0802AF36
- adds r0, r1, 0
- adds r0, 0x8B
- adds r0, r4
- adds r1, 0x70
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bne _0802AF36
- ldr r0, [sp, 0x4]
- adds r0, 0x1
- str r0, [sp, 0x4]
-_0802AF36:
- movs r1, 0x28
- add r9, r1
- adds r6, 0x28
- adds r4, 0x1
- ldr r7, =gUnknown_02022CFC
- ldr r0, [r7]
- ldrb r0, [r0, 0x5]
- cmp r4, r0
- blt _0802AED0
-_0802AF48:
- ldr r2, =gUnknown_02022CFC
- ldr r1, [r2]
- ldrb r0, [r1, 0x5]
- subs r0, 0x1
- ldr r3, [sp, 0x4]
- cmp r3, r0
- bne _0802AF5C
- adds r1, 0x49
- movs r0, 0x1
- strb r0, [r1]
-_0802AF5C:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802AEA4
-
- thumb_func_start sub_802AF80
-sub_802AF80: @ 802AF80
- push {r4,r5,lr}
- bl sub_802AEA4
- bl sub_802C43C
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x48
- ldrb r0, [r0]
- cmp r0, 0
- bne _0802AFB2
- adds r0, r1, 0
- adds r0, 0x49
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802AFB2
- adds r0, r1, 0
- adds r0, 0x4C
- ldrb r0, [r0]
- bl sub_802AE50
- movs r0, 0x3
- bl sub_802AE14
-_0802AFB2:
- ldr r4, =gUnknown_02022CFC
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x48
- ldrb r5, [r0]
- cmp r5, 0x1
- bne _0802AFEE
- ldr r1, =gUnknown_082FB5F4
- adds r0, 0x28
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- adds r1, r0, 0
- cmp r1, 0
- bne _0802AFEE
- ldr r0, [r4]
- adds r0, 0x48
- strb r1, [r0]
- ldr r1, [r4]
- ldrb r2, [r1, 0x6]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r2, =0x000082fc
- adds r1, r2
- adds r1, r0
- str r5, [r1]
-_0802AFEE:
- bl sub_802C1DC
- bl sub_802B008
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802AF80
-
- thumb_func_start sub_802B008
-sub_802B008: @ 802B008
- push {r4,lr}
- ldr r4, =gUnknown_02022CFC
- ldr r1, [r4]
- ldr r0, [r1, 0x2C]
- cmp r0, 0
- bne _0802B01E
- ldr r2, =0x000082e4
- adds r0, r1, r2
- adds r1, 0x70
- bl sub_802E138
-_0802B01E:
- ldr r1, [r4]
- ldr r2, [r1, 0x30]
- ldr r0, =0x00001111
- cmp r2, r0
- beq _0802B030
- ldr r0, [r1, 0x2C]
- adds r0, 0x1
- ands r0, r2
- str r0, [r1, 0x2C]
-_0802B030:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802B008
-
- thumb_func_start sub_802B044
-sub_802B044: @ 802B044
- ldr r2, =gUnknown_02022CFC
- ldr r1, [r2]
- adds r1, 0x70
- movs r3, 0
- strb r0, [r1]
- ldr r0, [r2]
- strh r3, [r0, 0x8]
- strh r3, [r0, 0xA]
- adds r0, 0x48
- movs r1, 0x1
- strb r1, [r0]
- ldr r1, [r2]
- ldrb r2, [r1, 0x6]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r2, =0x000082fc
- adds r1, r2
- adds r1, r0
- str r3, [r1]
- bx lr
- .pool
- thumb_func_end sub_802B044
-
- thumb_func_start sub_802B078
-sub_802B078: @ 802B078
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- ldr r4, =gUnknown_02022CFC
- ldr r0, [r4]
- ldr r2, =0x000082f4
- adds r1, r0, r2
- ldrh r1, [r1]
- mov r8, r1
- ldr r3, =0x000082e4
- adds r0, r3
- mov r1, sp
- bl sub_802E1BC
- cmp r0, 0
- beq _0802B128
- ldr r2, [r4]
- ldrb r0, [r2, 0x6]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r3, =0x000082fc
- adds r0, r2, r3
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0x1
- bne _0802B0C6
- mov r0, sp
- adds r1, r2, 0
- adds r1, 0x70
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- beq _0802B0C6
- mov r0, sp
- ldrb r0, [r0]
- bl sub_802B044
-_0802B0C6:
- ldr r3, =gUnknown_02022CFC
- ldr r2, [r3]
- ldr r0, [r2, 0x78]
- ldr r1, [sp, 0x8]
- cmp r0, r1
- beq _0802B108
- str r1, [r2, 0x78]
- movs r4, 0x1
- str r4, [r2, 0x5C]
- mov r0, sp
- ldrb r1, [r0, 0x1]
- adds r0, r2, 0
- adds r0, 0x71
- strb r1, [r0]
- ldr r0, [r3]
- adds r1, r0, 0
- adds r1, 0x71
- ldrb r1, [r1]
- cmp r1, 0
- beq _0802B104
- adds r0, 0x4D
- strb r4, [r0]
- b _0802B108
- .pool
-_0802B104:
- adds r0, 0x4D
- strb r1, [r0]
-_0802B108:
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
- mov r0, sp
- ldrh r0, [r0, 0x2]
- adds r2, r1, 0
- adds r2, 0x72
- strh r0, [r2]
- mov r0, sp
- ldrh r2, [r0, 0x4]
- adds r0, r1, 0
- adds r0, 0x74
- strh r2, [r0]
- ldr r0, =0x000082f6
- adds r1, r0
- mov r2, r8
- strh r2, [r1]
-_0802B128:
- movs r4, 0x1
- ldr r2, =gUnknown_02022CFC
- ldr r0, [r2]
- ldrb r0, [r0, 0x5]
- cmp r4, r0
- bge _0802B176
- adds r7, r2, 0
- ldr r6, =0x0000830c
- movs r5, 0x28
-_0802B13A:
- ldr r1, [r7]
- ldrb r3, [r1, 0x6]
- cmp r4, r3
- beq _0802B168
- adds r0, r1, r5
- ldr r3, =0x000082f4
- adds r0, r3
- ldrh r0, [r0]
- mov r8, r0
- adds r0, r1, r6
- adds r1, r4, 0
- str r2, [sp, 0xC]
- bl sub_802E2D0
- ldr r2, [sp, 0xC]
- cmp r0, 0
- beq _0802B168
- ldr r0, [r7]
- adds r0, r5
- ldr r1, =0x000082f6
- adds r0, r1
- mov r3, r8
- strh r3, [r0]
-_0802B168:
- adds r6, 0x28
- adds r5, 0x28
- adds r4, 0x1
- ldr r0, [r2]
- ldrb r0, [r0, 0x5]
- cmp r4, r0
- blt _0802B13A
-_0802B176:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802B078
-
- thumb_func_start sub_802B194
-sub_802B194: @ 802B194
- push {r4,lr}
- bl sub_802B078
- ldr r4, =gUnknown_02022CFC
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x48
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802B1E0
- ldr r1, =gUnknown_082FB618
- adds r0, r2, 0
- adds r0, 0x70
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- adds r1, r0, 0
- cmp r1, 0
- bne _0802B1E0
- ldr r0, [r4]
- adds r0, 0x48
- strb r1, [r0]
- ldr r1, [r4]
- ldrb r2, [r1, 0x6]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r2, =0x000082fc
- adds r1, r2
- adds r1, r0
- movs r0, 0x1
- str r0, [r1]
- movs r0, 0x3
- bl sub_802AE14
-_0802B1E0:
- bl sub_802C1DC
- bl sub_802B1FC
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802B194
-
- thumb_func_start sub_802B1FC
-sub_802B1FC: @ 802B1FC
- push {r4,lr}
- ldr r4, =gUnknown_02022CFC
- ldr r2, [r4]
- ldr r0, [r2, 0x2C]
- cmp r0, 0
- bne _0802B224
- ldrb r1, [r2, 0x6]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r1, =0x000082e4
- adds r0, r1
- adds r0, r2, r0
- adds r1, r2, 0
- adds r1, 0x70
- ldrb r1, [r1]
- adds r2, 0x42
- ldrh r2, [r2]
- bl sub_802E234
-_0802B224:
- ldr r1, [r4]
- ldr r2, [r1, 0x30]
- ldr r0, =0x00001111
- cmp r2, r0
- beq _0802B236
- ldr r0, [r1, 0x2C]
- adds r0, 0x1
- ands r0, r2
- str r0, [r1, 0x2C]
-_0802B236:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802B1FC
-
- thumb_func_start sub_802B248
-sub_802B248: @ 802B248
- push {r4,lr}
- ldr r4, =gUnknown_02022CFC
- ldr r0, [r4]
- ldrh r0, [r0, 0x8]
- cmp r0, 0
- beq _0802B260
- cmp r0, 0x1
- beq _0802B26E
- b _0802B294
- .pool
-_0802B260:
- movs r0, 0x3
- bl sub_802AE14
- ldr r1, [r4]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_0802B26E:
- bl sub_802B7E0
- cmp r0, 0
- bne _0802B294
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x4A
- ldrh r0, [r0]
- adds r2, r1, 0
- adds r2, 0x72
- strh r0, [r2]
- adds r1, 0x4C
- movs r0, 0x1
- strb r0, [r1]
- movs r0, 0
- b _0802B296
- .pool
-_0802B294:
- movs r0, 0x1
-_0802B296:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_802B248
-
- thumb_func_start sub_802B29C
-sub_802B29C: @ 802B29C
- push {r4,lr}
- ldr r4, =gUnknown_02022CFC
- ldr r0, [r4]
- ldrh r0, [r0, 0x8]
- cmp r0, 0
- beq _0802B2B4
- cmp r0, 0x1
- beq _0802B2CA
- movs r0, 0x1
- b _0802B2CE
- .pool
-_0802B2B4:
- movs r0, 0
- bl sub_802AE14
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x72
- ldrh r0, [r0]
- str r0, [r1, 0x24]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_0802B2CA:
- bl sub_802B7E0
-_0802B2CE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_802B29C
-
- thumb_func_start sub_802B2D4
-sub_802B2D4: @ 802B2D4
- push {r4,lr}
- ldr r4, =gUnknown_02022CFC
- ldr r1, [r4]
- ldrh r0, [r1, 0x8]
- cmp r0, 0
- beq _0802B2EC
- cmp r0, 0x1
- beq _0802B300
- b _0802B314
- .pool
-_0802B2EC:
- bl sub_802C0E8
- movs r0, 0x5
- bl sub_802AE14
- ldr r1, [r4]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _0802B314
-_0802B300:
- adds r0, r1, 0
- adds r0, 0x49
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802B314
- adds r1, 0x4C
- movs r0, 0x2
- strb r0, [r1]
- movs r0, 0
- b _0802B316
-_0802B314:
- movs r0, 0x1
-_0802B316:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_802B2D4
-
- thumb_func_start sub_802B31C
-sub_802B31C: @ 802B31C
- push {r4,lr}
- ldr r4, =gUnknown_02022CFC
- ldr r0, [r4]
- ldrh r0, [r0, 0x8]
- cmp r0, 0
- beq _0802B334
- cmp r0, 0x1
- beq _0802B352
- b _0802B35E
- .pool
-_0802B334:
- bl sub_802C0E8
- movs r0, 0
- bl sub_802AE14
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x72
- ldrh r0, [r0]
- adds r2, r1, 0
- adds r2, 0x4A
- strh r0, [r2]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_0802B352:
- bl sub_802C70C
- cmp r0, 0
- beq _0802B35E
- movs r0, 0
- b _0802B360
-_0802B35E:
- movs r0, 0x1
-_0802B360:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_802B31C
-
- thumb_func_start sub_802B368
-sub_802B368: @ 802B368
- push {lr}
- bl sub_802B8CC
- cmp r0, 0
- bne _0802B390
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x4A
- ldrh r0, [r0]
- adds r2, r1, 0
- adds r2, 0x72
- strh r0, [r2]
- adds r1, 0x4C
- movs r0, 0x1
- strb r0, [r1]
- b _0802B3AA
- .pool
-_0802B390:
- bl sub_802C538
- cmp r0, 0
- beq _0802B39C
- movs r0, 0x1
- b _0802B3AC
-_0802B39C:
- bl sub_802C0B8
- ldr r0, =gUnknown_02022CFC
- ldr r0, [r0]
- adds r0, 0x4C
- movs r1, 0x3
- strb r1, [r0]
-_0802B3AA:
- movs r0, 0
-_0802B3AC:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_802B368
-
- thumb_func_start sub_802B3B4
-sub_802B3B4: @ 802B3B4
- push {lr}
- bl sub_802B8CC
- cmp r0, 0
- beq _0802B3CE
- bl sub_802C538
- cmp r0, 0
- beq _0802B3CA
- movs r0, 0x1
- b _0802B3D0
-_0802B3CA:
- bl sub_802C0B8
-_0802B3CE:
- movs r0, 0
-_0802B3D0:
- pop {r1}
- bx r1
- thumb_func_end sub_802B3B4
-
- thumb_func_start sub_802B3D4
-sub_802B3D4: @ 802B3D4
- push {r4,lr}
- ldr r4, =gUnknown_02022CFC
- ldr r0, [r4]
- ldrh r0, [r0, 0x8]
- cmp r0, 0x1
- beq _0802B40C
- cmp r0, 0x1
- bgt _0802B3F0
- cmp r0, 0
- beq _0802B3F6
- b _0802B468
- .pool
-_0802B3F0:
- cmp r0, 0x2
- beq _0802B460
- b _0802B468
-_0802B3F6:
- bl sub_802C538
- bl sub_802C5DC
- cmp r0, 0
- beq _0802B468
- ldr r1, [r4]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _0802B468
-_0802B40C:
- bl sub_802B964
- cmp r0, 0
- bne _0802B468
- bl sub_802C7BC
- cmp r0, 0
- beq _0802B42E
- bl sub_802C7E0
- ldr r1, [r4]
- adds r2, r1, 0
- adds r2, 0x72
- strh r0, [r2]
- adds r1, 0x4C
- movs r0, 0x7
- b _0802B454
-_0802B42E:
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x74
- ldrh r0, [r0]
- cmp r0, 0xC7
- bls _0802B448
- ldrh r0, [r1, 0xE]
- adds r2, r1, 0
- adds r2, 0x72
- strh r0, [r2]
- adds r1, 0x4C
- movs r0, 0x8
- b _0802B454
-_0802B448:
- ldrh r0, [r1, 0xE]
- adds r2, r1, 0
- adds r2, 0x72
- strh r0, [r2]
- adds r1, 0x4C
- movs r0, 0x4
-_0802B454:
- strb r0, [r1]
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_0802B460:
- movs r0, 0
- b _0802B46A
- .pool
-_0802B468:
- movs r0, 0x1
-_0802B46A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_802B3D4
-
- thumb_func_start sub_802B470
-sub_802B470: @ 802B470
- push {r4,lr}
- ldr r4, =gUnknown_02022CFC
- ldr r0, [r4]
- ldrh r0, [r0, 0x8]
- cmp r0, 0x1
- beq _0802B4B0
- cmp r0, 0x1
- bgt _0802B48C
- cmp r0, 0
- beq _0802B492
- b _0802B4C4
- .pool
-_0802B48C:
- cmp r0, 0x2
- beq _0802B4C0
- b _0802B4C4
-_0802B492:
- bl sub_802C538
- cmp r0, 0
- bne _0802B49E
- bl sub_802C0B8
-_0802B49E:
- bl sub_802C5DC
- cmp r0, 0
- beq _0802B4C4
- ldr r1, [r4]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _0802B4C4
-_0802B4B0:
- bl sub_802B964
- cmp r0, 0
- bne _0802B4C4
- ldr r1, [r4]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_0802B4C0:
- movs r0, 0
- b _0802B4C6
-_0802B4C4:
- movs r0, 0x1
-_0802B4C6:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_802B470
-
- thumb_func_start sub_802B4CC
-sub_802B4CC: @ 802B4CC
- push {r4,lr}
- ldr r4, =gUnknown_02022CFC
- ldr r0, [r4]
- ldrh r1, [r0, 0x8]
- cmp r1, 0x1
- beq _0802B500
- cmp r1, 0x1
- bgt _0802B4E8
- cmp r1, 0
- beq _0802B4F2
- b _0802B560
- .pool
-_0802B4E8:
- cmp r1, 0x2
- beq _0802B52C
- cmp r1, 0x3
- beq _0802B556
- b _0802B560
-_0802B4F2:
- movs r0, 0x4
- bl sub_802AE14
- ldr r1, [r4]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_0802B500:
- bl sub_802BB84
- cmp r0, 0
- bne _0802B560
- ldr r4, =gUnknown_02022CFC
- ldr r2, [r4]
- ldr r0, [r2, 0x78]
- adds r1, r2, 0
- adds r1, 0x74
- ldrh r1, [r1]
- adds r2, 0x72
- ldrh r2, [r2]
- bl sub_802E354
- ldr r1, [r4]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _0802B560
- .pool
-_0802B52C:
- adds r0, 0x49
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802B560
- bl sub_802C650
- cmp r0, 0
- beq _0802B544
- ldr r0, [r4]
- adds r0, 0x4C
- movs r1, 0x5
- b _0802B54A
-_0802B544:
- ldr r0, [r4]
- adds r0, 0x4C
- movs r1, 0x6
-_0802B54A:
- strb r1, [r0]
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_0802B556:
- movs r0, 0
- b _0802B562
- .pool
-_0802B560:
- movs r0, 0x1
-_0802B562:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_802B4CC
-
- thumb_func_start sub_802B568
-sub_802B568: @ 802B568
- push {r4,lr}
- ldr r4, =gUnknown_02022CFC
- ldr r0, [r4]
- ldrh r0, [r0, 0x8]
- cmp r0, 0
- beq _0802B580
- cmp r0, 0x1
- beq _0802B58E
- b _0802B5C0
- .pool
-_0802B580:
- movs r0, 0
- bl sub_802AE14
- ldr r1, [r4]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_0802B58E:
- bl sub_802BB84
- cmp r0, 0
- bne _0802B5C0
- ldr r4, =gUnknown_02022CFC
- ldr r2, [r4]
- ldr r0, [r2, 0x78]
- adds r1, r2, 0
- adds r1, 0x74
- ldrh r1, [r1]
- adds r2, 0x72
- ldrh r2, [r2]
- bl sub_802E354
- ldr r0, [r4]
- adds r1, r0, 0
- adds r1, 0x45
- ldrb r1, [r1]
- adds r0, 0x42
- strh r1, [r0]
- movs r0, 0
- b _0802B5C2
- .pool
-_0802B5C0:
- movs r0, 0x1
-_0802B5C2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_802B568
-
- thumb_func_start sub_802B5C8
-sub_802B5C8: @ 802B5C8
- push {r4,lr}
- ldr r4, =gUnknown_02022CFC
- ldr r1, [r4]
- ldrh r0, [r1, 0x8]
- cmp r0, 0
- beq _0802B5E0
- cmp r0, 0x1
- beq _0802B5F2
- b _0802B61E
- .pool
-_0802B5E0:
- bl sub_802BD30
- cmp r0, 0
- bne _0802B61E
- ldr r1, [r4]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _0802B61E
-_0802B5F2:
- adds r0, r1, 0
- adds r0, 0x49
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802B61E
- adds r0, r1, 0
- bl sub_802AA94
- bl Random
- ldr r1, [r4]
- lsls r0, 16
- lsrs r0, 16
- str r0, [r1, 0x24]
- adds r3, r1, 0
- adds r3, 0x72
- movs r2, 0
- strh r0, [r3]
- adds r1, 0x4C
- strb r2, [r1]
- movs r0, 0
- b _0802B620
-_0802B61E:
- movs r0, 0x1
-_0802B620:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_802B5C8
-
- thumb_func_start sub_802B628
-sub_802B628: @ 802B628
- push {r4,lr}
- ldr r4, =gUnknown_02022CFC
- ldr r0, [r4]
- ldrh r0, [r0, 0x8]
- cmp r0, 0
- beq _0802B640
- cmp r0, 0x1
- beq _0802B656
- b _0802B65A
- .pool
-_0802B640:
- bl sub_802BD30
- cmp r0, 0
- bne _0802B65A
- ldr r0, [r4]
- bl sub_802AA94
- ldr r1, [r4]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_0802B656:
- movs r0, 0
- b _0802B65C
-_0802B65A:
- movs r0, 0x1
-_0802B65C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_802B628
-
- thumb_func_start sub_802B664
-sub_802B664: @ 802B664
- push {r4,lr}
- ldr r4, =gUnknown_02022CFC
- ldr r1, [r4]
- ldrh r0, [r1, 0x8]
- cmp r0, 0x1
- beq _0802B68C
- cmp r0, 0x1
- bgt _0802B680
- cmp r0, 0
- beq _0802B686
- b _0802B6B0
- .pool
-_0802B680:
- cmp r0, 0x2
- beq _0802B69C
- b _0802B6B0
-_0802B686:
- movs r0, 0x1
- strh r0, [r1, 0x8]
- b _0802B6B0
-_0802B68C:
- movs r0, 0
- bl sub_802AE14
- ldr r1, [r4]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _0802B6B0
-_0802B69C:
- bl sub_802BC60
- cmp r0, 0
- bne _0802B6B0
- ldr r0, [r4]
- ldr r0, [r0]
- bl SetMainCallback2
- bl sub_802AA48
-_0802B6B0:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_802B664
-
- thumb_func_start sub_802B6B8
-sub_802B6B8: @ 802B6B8
- push {r4,lr}
- ldr r4, =gUnknown_02022CFC
- ldr r0, [r4]
- ldrh r0, [r0, 0x8]
- cmp r0, 0
- beq _0802B6D0
- cmp r0, 0x1
- beq _0802B6E0
- b _0802B6FC
- .pool
-_0802B6D0:
- movs r0, 0x4
- bl sub_802AE14
- ldr r1, [r4]
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _0802B6FC
-_0802B6E0:
- bl sub_802BA58
- cmp r0, 0
- bne _0802B6FC
- ldr r0, [r4]
- ldrh r1, [r0, 0xE]
- adds r2, r0, 0
- adds r2, 0x72
- strh r1, [r2]
- adds r0, 0x4C
- movs r1, 0x8
- strb r1, [r0]
- movs r0, 0
- b _0802B6FE
-_0802B6FC:
- movs r0, 0x1
-_0802B6FE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_802B6B8
-
- thumb_func_start sub_802B704
-sub_802B704: @ 802B704
- push {lr}
- movs r0, 0
- bl sub_802AE14
- bl sub_802BA58
- cmp r0, 0
- beq _0802B718
- movs r0, 0x1
- b _0802B71A
-_0802B718:
- movs r0, 0
-_0802B71A:
- pop {r1}
- bx r1
- thumb_func_end sub_802B704
-
- thumb_func_start sub_802B720
-sub_802B720: @ 802B720
- push {r4,lr}
- ldr r1, =gUnknown_02022CFC
- ldr r0, [r1]
- ldrh r0, [r0, 0x8]
- adds r4, r1, 0
- cmp r0, 0x4
- bhi _0802B7D8
- lsls r0, 2
- ldr r1, =_0802B740
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0802B740:
- .4byte _0802B754
- .4byte _0802B770
- .4byte _0802B780
- .4byte _0802B798
- .4byte _0802B7BC
-_0802B754:
- ldr r2, [r4]
- ldr r0, [r2, 0x78]
- adds r1, r2, 0
- adds r1, 0x74
- ldrh r1, [r1]
- adds r2, 0x72
- ldrh r2, [r2]
- bl sub_802E354
- movs r0, 0x5
- bl sub_802D0C8
- ldr r1, [r4]
- b _0802B7AC
-_0802B770:
- bl sub_802D0F0
- cmp r0, 0
- bne _0802B7D8
- movs r0, 0
- bl sub_802AE14
- b _0802B7A8
-_0802B780:
- bl sub_802C70C
- cmp r0, 0
- beq _0802B7D8
- ldr r0, =sub_8153688
- movs r1, 0x6
- bl CreateTask
- b _0802B7A8
- .pool
-_0802B798:
- ldr r0, =sub_8153688
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _0802B7D8
- bl sub_802DA14
-_0802B7A8:
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
-_0802B7AC:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _0802B7D8
- .pool
-_0802B7BC:
- bl sub_802DA44
- cmp r0, 0
- bne _0802B7D8
- ldr r0, =gUnknown_02022CFC
- ldr r0, [r0]
- adds r0, 0x4C
- movs r1, 0x4
- strb r1, [r0]
- movs r0, 0
- b _0802B7DA
- .pool
-_0802B7D8:
- movs r0, 0x1
-_0802B7DA:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_802B720
-
- thumb_func_start sub_802B7E0
-sub_802B7E0: @ 802B7E0
- push {r4,r5,lr}
- ldr r1, =gUnknown_02022CFC
- ldr r0, [r1]
- ldrh r0, [r0, 0xA]
- adds r4, r1, 0
- cmp r0, 0x7
- bhi _0802B8C4
- lsls r0, 2
- ldr r1, =_0802B800
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0802B800:
- .4byte _0802B820
- .4byte _0802B82C
- .4byte _0802B84C
- .4byte _0802B866
- .4byte _0802B878
- .4byte _0802B880
- .4byte _0802B8A0
- .4byte _0802B8BA
-_0802B820:
- movs r0, 0x2
- bl sub_802D0C8
- bl sub_802DDE0
- b _0802B890
-_0802B82C:
- bl sub_802D0F0
- adds r5, r0, 0
- cmp r5, 0
- bne _0802B8C4
- ldr r4, =gUnknown_02022CFC
- ldr r0, [r4]
- ldrb r0, [r0, 0x6]
- bl sub_802DDF4
- ldr r1, [r4]
- strh r5, [r1, 0x3C]
- b _0802B894
- .pool
-_0802B84C:
- ldr r1, [r4]
- ldrh r0, [r1, 0x3C]
- adds r0, 0x1
- strh r0, [r1, 0x3C]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x78
- bls _0802B8C4
- movs r0, 0x3
- bl sub_802D0C8
- ldr r1, [r4]
- b _0802B894
-_0802B866:
- bl sub_802D0F0
- cmp r0, 0x1
- beq _0802B8C4
- bl sub_802DE08
- cmp r0, 0x1
- beq _0802B8C4
- b _0802B890
-_0802B878:
- movs r0, 0x9
- bl sub_802D0C8
- b _0802B890
-_0802B880:
- bl sub_802D0F0
- cmp r0, 0
- bne _0802B8C4
- bl sub_802C260
- bl sub_802D764
-_0802B890:
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
-_0802B894:
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
- b _0802B8C4
- .pool
-_0802B8A0:
- bl sub_802D788
- cmp r0, 0
- bne _0802B8C4
- bl sub_802C270
- bl sub_802BEA0
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
-_0802B8BA:
- movs r0, 0
- b _0802B8C6
- .pool
-_0802B8C4:
- movs r0, 0x1
-_0802B8C6:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_802B7E0
-
- thumb_func_start sub_802B8CC
-sub_802B8CC: @ 802B8CC
- push {r4,r5,lr}
- bl sub_802BEE4
- ldr r5, =gUnknown_02022CFC
- ldr r1, [r5]
- ldrh r4, [r1, 0x36]
- cmp r4, 0
- beq _0802B8E8
- movs r0, 0
- strh r0, [r1, 0x36]
- b _0802B95C
- .pool
-_0802B8E8:
- ldrh r0, [r1, 0xA]
- cmp r0, 0x1
- beq _0802B914
- cmp r0, 0x1
- bgt _0802B8F8
- cmp r0, 0
- beq _0802B902
- b _0802B95A
-_0802B8F8:
- cmp r0, 0x2
- beq _0802B938
- cmp r0, 0x3
- beq _0802B94C
- b _0802B95A
-_0802B902:
- movs r0, 0
- bl sub_802C130
- cmp r0, 0
- beq _0802B95A
- ldr r1, [r5]
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
-_0802B914:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0802B95A
- bl sub_802C164
- movs r0, 0x3
- bl sub_802AE14
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
- b _0802B944
- .pool
-_0802B938:
- movs r0, 0x1
- bl sub_802C130
- cmp r0, 0x1
- bne _0802B95A
- ldr r1, [r5]
-_0802B944:
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
- b _0802B95A
-_0802B94C:
- movs r0, 0
- bl sub_802C130
- cmp r0, 0x1
- bne _0802B95A
- ldr r0, [r5]
- strh r4, [r0, 0xA]
-_0802B95A:
- movs r0, 0x1
-_0802B95C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_802B8CC
-
- thumb_func_start sub_802B964
-sub_802B964: @ 802B964
- push {r4-r6,lr}
- ldr r1, =gUnknown_02022CFC
- ldr r0, [r1]
- ldrh r0, [r0, 0xA]
- adds r5, r1, 0
- cmp r0, 0x4
- bhi _0802BA50
- lsls r0, 2
- ldr r1, =_0802B984
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0802B984:
- .4byte _0802B998
- .4byte _0802B9BC
- .4byte _0802BA00
- .4byte _0802BA24
- .4byte _0802BA46
-_0802B998:
- movs r4, 0
- ldr r0, [r5]
- ldrb r0, [r0, 0x5]
- cmp r4, r0
- bge _0802B9B8
- adds r6, r5, 0
-_0802B9A4:
- adds r0, r4, 0
- bl sub_802DDB8
- cmp r0, 0x1
- beq _0802BA50
- adds r4, 0x1
- ldr r0, [r6]
- ldrb r0, [r0, 0x5]
- cmp r4, r0
- blt _0802B9A4
-_0802B9B8:
- ldr r1, [r5]
- b _0802BA1C
-_0802B9BC:
- movs r4, 0
- ldr r0, [r5]
- ldrb r0, [r0, 0x5]
- cmp r4, r0
- bge _0802B9EC
- adds r6, r5, 0
- movs r5, 0
-_0802B9CA:
- ldr r0, [r6]
- adds r0, r5
- ldr r1, =0x000082f4
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0x2
- bne _0802B9E0
- lsls r0, r4, 24
- lsrs r0, 24
- bl sub_802DDA0
-_0802B9E0:
- adds r5, 0x28
- adds r4, 0x1
- ldr r0, [r6]
- ldrb r0, [r0, 0x5]
- cmp r4, r0
- blt _0802B9CA
-_0802B9EC:
- movs r0, 0x1
- bl sub_802D0C8
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
- b _0802BA18
- .pool
-_0802BA00:
- ldr r1, [r5]
- ldrh r0, [r1, 0x3C]
- adds r0, 0x1
- strh r0, [r1, 0x3C]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x64
- bls _0802BA50
- movs r0, 0x3
- bl sub_802D0C8
- ldr r1, [r5]
-_0802BA18:
- movs r0, 0
- strh r0, [r1, 0x3C]
-_0802BA1C:
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
- b _0802BA50
-_0802BA24:
- bl sub_802D0F0
- adds r5, r0, 0
- cmp r5, 0
- bne _0802BA50
- bl sub_802DDCC
- ldr r4, =gUnknown_02022CFC
- ldr r0, [r4]
- adds r0, 0x71
- strb r5, [r0]
- bl sub_802C114
- ldr r1, [r4]
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
-_0802BA46:
- movs r0, 0
- b _0802BA52
- .pool
-_0802BA50:
- movs r0, 0x1
-_0802BA52:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_802B964
-
- thumb_func_start sub_802BA58
-sub_802BA58: @ 802BA58
- push {r4,lr}
- ldr r1, =gUnknown_02022CFC
- ldr r0, [r1]
- ldrh r0, [r0, 0xA]
- adds r4, r1, 0
- cmp r0, 0x6
- bls _0802BA68
- b _0802BB7C
-_0802BA68:
- lsls r0, 2
- ldr r1, =_0802BA7C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0802BA7C:
- .4byte _0802BA98
- .4byte _0802BAB8
- .4byte _0802BAD0
- .4byte _0802BB00
- .4byte _0802BAB8
- .4byte _0802BAD0
- .4byte _0802BB70
-_0802BA98:
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x72
- ldrh r0, [r0]
- adds r1, r2, 0
- adds r1, 0x3E
- adds r2, 0x40
- bl sub_802C808
- ldr r1, [r4]
- ldrh r0, [r1, 0x3E]
- adds r1, 0x40
- ldrh r1, [r1]
- bl sub_802D7E8
- b _0802BAF0
-_0802BAB8:
- bl sub_802D974
- adds r2, r0, 0
- cmp r2, 0
- bne _0802BB7C
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
- strh r2, [r1, 0x3C]
- b _0802BAF2
- .pool
-_0802BAD0:
- ldr r1, [r4]
- ldrh r0, [r1, 0x3C]
- adds r2, r0, 0x1
- strh r2, [r1, 0x3C]
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _0802BAEC
- lsls r0, r2, 16
- lsrs r0, 16
- cmp r0, 0xB4
- bls _0802BB7C
-_0802BAEC:
- bl sub_802DA14
-_0802BAF0:
- ldr r1, [r4]
-_0802BAF2:
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
- b _0802BB7C
- .pool
-_0802BB00:
- bl sub_802DA44
- cmp r0, 0
- bne _0802BB7C
- ldr r4, =gUnknown_02022CFC
- ldr r1, [r4]
- ldrh r0, [r1, 0x3E]
- adds r1, 0x40
- ldrh r1, [r1]
- bl sub_802C880
- ldr r1, [r4]
- adds r2, r1, 0
- adds r2, 0x40
- strh r0, [r2]
- lsls r0, 16
- cmp r0, 0
- beq _0802BB58
- ldrh r0, [r1, 0x3E]
- ldrh r1, [r2]
- bl AddBagItem
- lsls r0, 24
- cmp r0, 0
- beq _0802BB58
- ldr r0, [r4]
- ldrh r0, [r0, 0x3E]
- movs r1, 0x1
- bl CheckBagHasSpace
- lsls r0, 24
- cmp r0, 0
- bne _0802BB50
- ldr r0, [r4]
- ldrh r0, [r0, 0x3E]
- bl sub_802D884
- b _0802BB62
- .pool
-_0802BB50:
- ldr r1, [r4]
- movs r0, 0x6
- strh r0, [r1, 0xA]
- b _0802BB7C
-_0802BB58:
- ldr r4, =gUnknown_02022CFC
- ldr r0, [r4]
- ldrh r0, [r0, 0x3E]
- bl sub_802D8FC
-_0802BB62:
- ldr r1, [r4]
- movs r0, 0x4
- strh r0, [r1, 0xA]
- b _0802BB7C
- .pool
-_0802BB70:
- bl sub_802DA44
- cmp r0, 0
- bne _0802BB7C
- movs r0, 0
- b _0802BB7E
-_0802BB7C:
- movs r0, 0x1
-_0802BB7E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_802BA58
-
- thumb_func_start sub_802BB84
-sub_802BB84: @ 802BB84
- push {r4,lr}
- ldr r0, =gUnknown_02022CFC
- ldr r0, [r0]
- ldrh r0, [r0, 0xA]
- cmp r0, 0x6
- bhi _0802BC58
- lsls r0, 2
- ldr r1, =_0802BBA4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0802BBA4:
- .4byte _0802BBC0
- .4byte _0802BBC4
- .4byte _0802BBCE
- .4byte _0802BC1C
- .4byte _0802BC26
- .4byte _0802BC3C
- .4byte _0802BC4E
-_0802BBC0:
- movs r0, 0x4
- b _0802BC28
-_0802BBC4:
- bl sub_802D0F0
- cmp r0, 0
- bne _0802BC58
- b _0802BC2C
-_0802BBCE:
- bl sub_802DA8C
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _0802BC04
- cmp r1, 0
- bgt _0802BBE8
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0802BBEC
- b _0802BC58
-_0802BBE8:
- cmp r1, 0x1
- bne _0802BC58
-_0802BBEC:
- ldr r4, =gUnknown_02022CFC
- ldr r0, [r4]
- adds r0, 0x45
- movs r1, 0x1
- strb r1, [r0]
- movs r0, 0x6
- bl sub_802D0C8
- ldr r1, [r4]
- b _0802BC30
- .pool
-_0802BC04:
- ldr r4, =gUnknown_02022CFC
- ldr r0, [r4]
- adds r0, 0x45
- movs r1, 0x2
- strb r1, [r0]
- movs r0, 0x6
- bl sub_802D0C8
- ldr r1, [r4]
- b _0802BC30
- .pool
-_0802BC1C:
- bl sub_802D0F0
- cmp r0, 0
- bne _0802BC58
- b _0802BC2C
-_0802BC26:
- movs r0, 0x8
-_0802BC28:
- bl sub_802D0C8
-_0802BC2C:
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
-_0802BC30:
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
- b _0802BC58
- .pool
-_0802BC3C:
- bl sub_802D0F0
- cmp r0, 0
- bne _0802BC58
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
-_0802BC4E:
- movs r0, 0
- b _0802BC5A
- .pool
-_0802BC58:
- movs r0, 0x1
-_0802BC5A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_802BB84
-
- thumb_func_start sub_802BC60
-sub_802BC60: @ 802BC60
- push {r4,lr}
- sub sp, 0x4
- ldr r1, =gUnknown_02022CFC
- ldr r0, [r1]
- ldrh r0, [r0, 0xA]
- adds r4, r1, 0
- cmp r0, 0x5
- bhi _0802BD24
- lsls r0, 2
- ldr r1, =_0802BC84
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0802BC84:
- .4byte _0802BC9C
- .4byte _0802BCA2
- .4byte _0802BCB2
- .4byte _0802BCC8
- .4byte _0802BCEE
- .4byte _0802BD14
-_0802BC9C:
- bl sub_802DA14
- b _0802BCFE
-_0802BCA2:
- bl sub_802DA44
- cmp r0, 0
- bne _0802BD24
- movs r0, 0x7
- bl sub_802D0C8
- b _0802BCFE
-_0802BCB2:
- bl sub_802D0F0
- adds r2, r0, 0
- cmp r2, 0
- bne _0802BD24
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
- strh r2, [r1, 0x3C]
- b _0802BD02
- .pool
-_0802BCC8:
- ldr r1, [r4]
- ldrh r0, [r1, 0x3C]
- adds r0, 0x1
- strh r0, [r1, 0x3C]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x78
- bls _0802BD24
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, [r4]
- b _0802BD02
-_0802BCEE:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802BD24
- bl sub_800AC34
-_0802BCFE:
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
-_0802BD02:
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
- b _0802BD24
- .pool
-_0802BD14:
- ldr r0, =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _0802BD24
- movs r0, 0
- b _0802BD26
- .pool
-_0802BD24:
- movs r0, 0x1
-_0802BD26:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_802BC60
-
- thumb_func_start sub_802BD30
-sub_802BD30: @ 802BD30
- push {r4,lr}
- ldr r4, =gUnknown_02022CFC
- ldr r0, [r4]
- ldrh r0, [r0, 0xA]
- cmp r0, 0x1
- beq _0802BD66
- cmp r0, 0x1
- bgt _0802BD4C
- cmp r0, 0
- beq _0802BD52
- b _0802BD7A
- .pool
-_0802BD4C:
- cmp r0, 0x2
- beq _0802BD76
- b _0802BD7A
-_0802BD52:
- bl sub_802DA14
- movs r0, 0
- bl sub_802DD64
- ldr r1, [r4]
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
- b _0802BD7A
-_0802BD66:
- bl sub_802DA44
- cmp r0, 0
- bne _0802BD7A
- ldr r1, [r4]
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
-_0802BD76:
- movs r0, 0
- b _0802BD7C
-_0802BD7A:
- movs r0, 0x1
-_0802BD7C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_802BD30
-
- thumb_func_start sub_802BD84
-sub_802BD84: @ 802BD84
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r0, 2
- add r0, r10
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r6, r0, r1
- mov r0, r10
- movs r1, 0xE
- bl GetWordTaskArg
- mov r8, r0
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- beq _0802BDC8
- cmp r0, 0x1
- beq _0802BDDC
- b _0802BE48
- .pool
-_0802BDBC:
- bl sub_802AB20
- mov r0, r10
- bl DestroyTask
- b _0802BE48
-_0802BDC8:
- movs r1, 0
- adds r0, r6, 0
- adds r0, 0x8
-_0802BDCE:
- strh r1, [r0, 0x4]
- subs r0, 0x2
- cmp r0, r6
- bge _0802BDCE
- ldrh r0, [r6]
- adds r0, 0x1
- strh r0, [r6]
-_0802BDDC:
- mov r3, r8
- ldrb r1, [r3, 0x6]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r4, =0x000082a8
- adds r0, r4
- add r0, r8
- bl sub_802E0AC
- movs r2, 0
- adds r5, r6, 0x4
- mov r9, r2
- movs r7, 0x83
- lsls r7, 8
- add r7, r8
- add r4, r8
-_0802BDFE:
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _0802BE38
- adds r0, r2, 0
- adds r1, r4, 0
- str r2, [sp]
- bl sub_802E0D0
- ldr r2, [sp]
- cmp r0, 0
- beq _0802BE38
- ldr r1, =gLinkPlayers + 8
- add r1, r9
- adds r0, r7, 0
- bl StringCopy
- movs r0, 0x1
- strh r0, [r5]
- ldrh r0, [r6, 0x2]
- adds r0, 0x1
- strh r0, [r6, 0x2]
- movs r3, 0x2
- ldrsh r0, [r6, r3]
- ldr r2, [sp]
- mov r1, r8
- ldrb r1, [r1, 0x5]
- cmp r0, r1
- beq _0802BDBC
-_0802BE38:
- adds r5, 0x2
- movs r3, 0x1C
- add r9, r3
- adds r7, 0x28
- adds r4, 0xC
- adds r2, 0x1
- cmp r2, 0x4
- ble _0802BDFE
-_0802BE48:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802BD84
-
- thumb_func_start sub_802BE60
-sub_802BE60: @ 802BE60
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022CFC
- ldr r2, [r1]
- movs r1, 0xE
- bl SetWordTaskArg
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802BE60
-
- thumb_func_start sub_802BE80
-sub_802BE80: @ 802BE80
- ldr r0, =gUnknown_02022CFC
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x4A
- movs r1, 0
- strh r1, [r0]
- movs r0, 0x6
- str r0, [r2, 0x14]
- strh r1, [r2, 0x34]
- str r1, [r2, 0x1C]
- strh r1, [r2, 0x36]
- str r1, [r2, 0x10]
- bx lr
- .pool
- thumb_func_end sub_802BE80
-
- thumb_func_start sub_802BEA0
-sub_802BEA0: @ 802BEA0
- push {r4,lr}
- ldr r3, =gUnknown_02022CFC
- ldr r0, [r3]
- adds r1, r0, 0
- adds r1, 0x4A
- movs r4, 0
- movs r2, 0
- strh r2, [r1]
- ldr r1, =0x000006ff
- strh r1, [r0, 0x34]
- movs r1, 0x7
- str r1, [r0, 0x14]
- strh r2, [r0, 0x36]
- str r2, [r0, 0x10]
- adds r0, 0x51
- strb r4, [r0]
- ldr r0, [r3]
- adds r0, 0x50
- strb r4, [r0]
- ldr r0, [r3]
- str r2, [r0, 0x20]
- adds r1, r0, 0
- adds r1, 0x4E
- strh r2, [r1]
- str r2, [r0, 0x6C]
- bl sub_802BF7C
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802BEA0
-
- thumb_func_start sub_802BEE4
-sub_802BEE4: @ 802BEE4
- push {r4,lr}
- ldr r4, =gUnknown_02022CFC
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x46
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802BF34
- adds r1, 0x4A
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- bl sub_802BF48
- ldr r3, [r4]
- ldrh r1, [r3, 0x34]
- adds r2, r1, r0
- strh r2, [r3, 0x34]
- lsls r1, r2, 16
- ldr r0, =0x09fe0000
- cmp r1, r0
- bls _0802BF16
- ldr r1, =0xfffff601
- adds r0, r2, r1
- strh r0, [r3, 0x34]
-_0802BF16:
- ldr r1, [r4]
- ldr r2, [r1, 0x14]
- str r2, [r1, 0x18]
- ldrh r0, [r1, 0x34]
- lsrs r0, 8
- str r0, [r1, 0x14]
- cmp r0, 0x6
- bls _0802BF34
- cmp r2, 0x6
- bhi _0802BF34
- ldrh r0, [r1, 0x36]
- adds r0, 0x1
- strh r0, [r1, 0x36]
- bl sub_802BF7C
-_0802BF34:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802BEE4
-
- thumb_func_start sub_802BF48
-sub_802BF48: @ 802BF48
- push {lr}
- ldr r0, =gUnknown_02022CFC
- ldr r2, [r0]
- ldr r0, [r2, 0x10]
- cmp r0, 0
- beq _0802BF5C
- movs r0, 0
- b _0802BF72
- .pool
-_0802BF5C:
- ldr r3, [r2, 0x1C]
- ldrh r1, [r2, 0x34]
- ldr r0, =0x000005ff
- cmp r1, r0
- bhi _0802BF70
- ldr r0, [r2, 0x20]
- adds r0, 0x50
- str r0, [r2, 0x20]
- lsrs r0, 8
- adds r3, r0
-_0802BF70:
- adds r0, r3, 0
-_0802BF72:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_802BF48
-
- thumb_func_start sub_802BF7C
-sub_802BF7C: @ 802BF7C
- push {r4,lr}
- ldr r4, =gUnknown_02022CFC
- ldr r3, [r4]
- movs r0, 0
- str r0, [r3, 0x20]
- adds r1, r3, 0
- adds r1, 0x4E
- ldrh r0, [r1]
- cmp r0, 0
- beq _0802BFC0
- subs r0, 0x1
- strh r0, [r1]
- ldr r0, [r3, 0x6C]
- cmp r0, 0
- beq _0802C08A
- bl sub_802C098
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0
- beq _0802BFB0
- ldr r1, [r4]
- b _0802C086
- .pool
-_0802BFB0:
- ldr r1, [r4]
- ldr r0, [r1, 0x28]
- cmp r0, 0x36
- bls _0802BFBC
- movs r0, 0x1E
- b _0802C088
-_0802BFBC:
- movs r0, 0x52
- b _0802C088
-_0802BFC0:
- adds r2, r3, 0
- adds r2, 0x50
- ldrb r1, [r2]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _0802C014
- ldr r0, =gUnknown_082FB63C
- ldrb r1, [r2]
- lsls r1, 1
- adds r1, r0
- adds r0, r3, 0
- adds r0, 0x51
- ldrb r2, [r0]
- lsls r0, r2, 3
- subs r0, r2
- ldrh r1, [r1]
- adds r0, r1
- str r0, [r3, 0x28]
- bl sub_802C098
- ldr r2, [r4]
- ldr r3, =gUnknown_082FB64C
- movs r1, 0x3
- ands r1, r0
- lsls r1, 1
- adds r1, r3
- ldrh r0, [r1]
- adds r0, 0x2
- adds r1, r2, 0
- adds r1, 0x4E
- strh r0, [r1]
- adds r2, 0x50
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- b _0802C082
- .pool
-_0802C014:
- lsls r0, r1, 24
- lsrs r0, 24
- cmp r0, 0x8
- bne _0802C030
- adds r1, r3, 0
- adds r1, 0x51
- ldrb r0, [r1]
- cmp r0, 0x2
- bhi _0802C02C
- adds r0, 0x1
- strb r0, [r1]
- b _0802C030
-_0802C02C:
- movs r0, 0x1
- str r0, [r3, 0x6C]
-_0802C030:
- ldr r2, =gUnknown_082FB63C
- ldr r4, =gUnknown_02022CFC
- ldr r0, [r4]
- mov r12, r0
- mov r3, r12
- adds r3, 0x50
- ldrb r0, [r3]
- movs r1, 0xF
- subs r1, r0
- lsls r1, 1
- adds r1, r2
- mov r0, r12
- adds r0, 0x51
- ldrb r2, [r0]
- lsls r0, r2, 3
- subs r0, r2
- ldrh r1, [r1]
- adds r0, r1
- mov r1, r12
- str r0, [r1, 0x28]
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xF
- bls _0802C082
- bl sub_802C098
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0
- bne _0802C07A
- ldr r1, [r4]
- ldr r0, [r1, 0x28]
- subs r0, 0x5
- str r0, [r1, 0x28]
-_0802C07A:
- ldr r0, [r4]
- adds r0, 0x50
- movs r1, 0
- strb r1, [r0]
-_0802C082:
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
-_0802C086:
- ldr r0, [r1, 0x28]
-_0802C088:
- str r0, [r1, 0x1C]
-_0802C08A:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802BF7C
-
- thumb_func_start sub_802C098
-sub_802C098: @ 802C098
- ldr r0, =gUnknown_02022CFC
- ldr r2, [r0]
- ldr r1, [r2, 0x24]
- ldr r0, =0x41c64e6d
- muls r0, r1
- ldr r1, =0x00006073
- adds r0, r1
- str r0, [r2, 0x24]
- lsrs r0, 16
- bx lr
- .pool
- thumb_func_end sub_802C098
-
- thumb_func_start sub_802C0B8
-sub_802C0B8: @ 802C0B8
- push {lr}
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
- movs r0, 0x1
- str r0, [r1, 0x10]
- movs r0, 0x6
- str r0, [r1, 0x14]
- ldr r0, =0x000005ff
- strh r0, [r1, 0x34]
- bl sub_802C270
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802C0B8
-
- thumb_func_start sub_802C0DC
-sub_802C0DC: @ 802C0DC
- ldr r0, =gUnknown_02022CFC
- ldr r0, [r0]
- ldr r0, [r0, 0x10]
- bx lr
- .pool
- thumb_func_end sub_802C0DC
-
- thumb_func_start sub_802C0E8
-sub_802C0E8: @ 802C0E8
- push {r4,r5,lr}
- ldr r5, =gUnknown_02022CFC
- ldr r4, =0x000082f8
- movs r3, 0
- movs r2, 0
- movs r1, 0x4
-_0802C0F4:
- ldr r0, [r5]
- adds r0, r4
- adds r0, r2
- str r3, [r0]
- adds r2, 0x28
- subs r1, 0x1
- cmp r1, 0
- bge _0802C0F4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802C0E8
-
- thumb_func_start sub_802C114
-sub_802C114: @ 802C114
- ldr r0, =gUnknown_02022CFC
- ldr r0, [r0]
- ldr r1, =0x000083ac
- adds r0, r1
- ldr r1, [r0]
- movs r2, 0
- strh r2, [r1, 0x10]
- ldr r0, [r0]
- strh r2, [r0, 0x12]
- bx lr
- .pool
- thumb_func_end sub_802C114
-
- thumb_func_start sub_802C130
-sub_802C130: @ 802C130
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gUnknown_02022CFC
- ldr r2, [r1]
- ldrb r3, [r2, 0x6]
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 3
- adds r2, r1
- ldr r1, =0x000082f4
- adds r2, r1
- ldrh r1, [r2]
- cmp r1, r0
- beq _0802C15C
- movs r0, 0
- b _0802C15E
- .pool
-_0802C15C:
- movs r0, 0x1
-_0802C15E:
- pop {r1}
- bx r1
- thumb_func_end sub_802C130
-
- thumb_func_start sub_802C164
-sub_802C164: @ 802C164
- ldr r0, =gUnknown_02022CFC
- ldr r0, [r0]
- ldr r1, =0x000083ac
- adds r2, r0, r1
- ldr r1, [r2]
- adds r0, 0x4A
- ldrh r0, [r0]
- strh r0, [r1, 0xE]
- ldr r1, [r2]
- ldrh r0, [r1, 0x10]
- strh r0, [r1, 0x12]
- ldr r1, [r2]
- movs r0, 0x1
- strh r0, [r1, 0x10]
- bx lr
- .pool
- thumb_func_end sub_802C164
-
- thumb_func_start sub_802C18C
-sub_802C18C: @ 802C18C
- push {r4,lr}
- ldr r0, =gUnknown_02022CFC
- ldr r2, [r0]
- ldr r0, =0x000083ac
- adds r3, r2, r0
- ldr r1, [r3]
- ldrh r0, [r1, 0x10]
- strh r0, [r1, 0x12]
- ldr r0, [r3]
- movs r4, 0x2
- strh r4, [r0, 0x10]
- ldr r1, [r3]
- adds r2, 0x4A
- ldrh r0, [r2]
- strh r0, [r1, 0xE]
- ldr r0, [r3]
- str r4, [r0, 0x14]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802C18C
-
- thumb_func_start sub_802C1BC
-sub_802C1BC: @ 802C1BC
- ldr r0, =gUnknown_02022CFC
- ldr r0, [r0]
- ldr r1, =0x000083ac
- adds r0, r1
- ldr r1, [r0]
- ldrh r2, [r1, 0x10]
- movs r3, 0
- strh r2, [r1, 0x12]
- ldr r0, [r0]
- strh r3, [r0, 0x10]
- bx lr
- .pool
- thumb_func_end sub_802C1BC
-
- thumb_func_start sub_802C1DC
-sub_802C1DC: @ 802C1DC
- push {r4,r5,lr}
- ldr r4, =gUnknown_02022CFC
- ldr r1, [r4]
- ldr r0, [r1, 0x5C]
- cmp r0, 0
- beq _0802C21C
- ldr r0, [r1, 0x78]
- bl sub_802DD64
- ldr r1, [r4]
- movs r5, 0
- str r5, [r1, 0x5C]
- adds r0, r1, 0
- adds r0, 0x4D
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802C21C
- adds r0, r1, 0
- adds r0, 0x71
- ldrb r0, [r0]
- bl sub_802DCCC
- ldr r1, =gUnknown_082FB654
- subs r0, 0x2
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- bl PlaySE
- ldr r0, [r4]
- adds r0, 0x4D
- strb r5, [r0]
-_0802C21C:
- ldr r0, =gUnknown_02022CFC
- ldr r0, [r0]
- adds r0, 0x74
- ldrh r0, [r0]
- bl sub_802DD74
- bl sub_802C280
- bl sub_802C240
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802C1DC
-
- thumb_func_start sub_802C240
-sub_802C240: @ 802C240
- push {lr}
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x46
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802C256
- ldr r0, [r1, 0x14]
- bl sub_802DC9C
-_0802C256:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802C240
-
- thumb_func_start sub_802C260
-sub_802C260: @ 802C260
- ldr r0, =gUnknown_02022CFC
- ldr r0, [r0]
- adds r0, 0x46
- movs r1, 0
- strb r1, [r0]
- bx lr
- .pool
- thumb_func_end sub_802C260
-
- thumb_func_start sub_802C270
-sub_802C270: @ 802C270
- ldr r0, =gUnknown_02022CFC
- ldr r0, [r0]
- adds r0, 0x46
- movs r1, 0x1
- strb r1, [r0]
- bx lr
- .pool
- thumb_func_end sub_802C270
-
- thumb_func_start sub_802C280
-sub_802C280: @ 802C280
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r6, 0
- ldr r2, =gUnknown_02022CFC
- ldr r0, [r2]
- ldrb r0, [r0, 0x5]
- mov r9, r0
- movs r5, 0
- cmp r6, r9
- bge _0802C360
- mov r10, r2
- mov r8, r5
- movs r7, 0
-_0802C2A2:
- mov r0, r10
- ldr r3, [r0]
- adds r1, r3, r7
- ldr r2, =0x000082f4
- adds r0, r1, r2
- ldrh r2, [r0]
- cmp r2, 0x1
- beq _0802C2D4
- cmp r2, 0x1
- bgt _0802C2C4
- cmp r2, 0
- beq _0802C2CA
- b _0802C354
- .pool
-_0802C2C4:
- cmp r2, 0x2
- beq _0802C338
- b _0802C354
-_0802C2CA:
- adds r0, r5, 0
- movs r1, 0
- bl sub_802DC80
- b _0802C354
-_0802C2D4:
- ldr r0, =0x000082f6
- adds r4, r1, r0
- ldrh r0, [r4]
- cmp r0, 0x1
- bne _0802C2F6
- ldr r0, =0x000082f2
- adds r0, r1
- adds r1, r3, 0
- adds r1, 0x9A
- add r1, r8
- str r1, [sp]
- ldrh r1, [r0]
- mov r12, r1
- ldr r0, [sp]
- ldrh r0, [r0]
- cmp r12, r0
- beq _0802C31E
-_0802C2F6:
- ldrb r3, [r3, 0x6]
- cmp r5, r3
- bne _0802C2FE
- strh r2, [r4]
-_0802C2FE:
- orrs r6, r2
- mov r1, r10
- ldr r2, [r1]
- ldr r1, =0x000082e8
- adds r0, r2, r1
- adds r0, r7
- ldr r1, =0x7fffffff
- str r1, [r0]
- adds r1, r2, 0
- adds r1, 0x9A
- add r1, r8
- adds r2, r7
- ldr r0, =0x000082f2
- adds r2, r0
- ldrh r0, [r2]
- strh r0, [r1]
-_0802C31E:
- adds r0, r5, 0
- bl sub_802C398
- b _0802C354
- .pool
-_0802C338:
- ldr r0, =0x000082f6
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0x2
- beq _0802C354
- ldrb r3, [r3, 0x6]
- cmp r5, r3
- bne _0802C34A
- strh r2, [r1]
-_0802C34A:
- orrs r6, r2
- lsls r0, r5, 24
- lsrs r0, 24
- bl sub_802DD88
-_0802C354:
- movs r1, 0x2
- add r8, r1
- adds r7, 0x28
- adds r5, 0x1
- cmp r5, r9
- blt _0802C2A2
-_0802C360:
- movs r0, 0x2
- ands r0, r6
- cmp r0, 0
- beq _0802C378
- movs r0, 0x83
- lsls r0, 1
- bl PlaySE
- b _0802C386
- .pool
-_0802C378:
- movs r0, 0x1
- ands r6, r0
- cmp r6, 0
- beq _0802C386
- movs r0, 0xA
- bl PlaySE
-_0802C386:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_802C280
-
- thumb_func_start sub_802C398
-sub_802C398: @ 802C398
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r0, =gUnknown_02022CFC
- ldr r2, [r0]
- ldr r0, [r2, 0x68]
- cmp r0, 0
- bne _0802C432
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =0x000082e4
- adds r0, r1
- adds r5, r2, r0
- ldr r1, [r5, 0x4]
- ldr r0, =0x7fffffff
- cmp r1, r0
- beq _0802C3D0
- adds r0, r1, 0x1
- str r0, [r5, 0x4]
- adds r3, r0, 0
- b _0802C3E8
- .pool
-_0802C3D0:
- adds r0, r2, 0
- adds r0, 0x4A
- ldrh r1, [r0]
- ldrh r0, [r5, 0xE]
- subs r3, r1, r0
- ldr r0, =0x0000fde7
- cmp r3, r0
- ble _0802C3E6
- ldr r0, =0xffff0218
- adds r3, r0
- adds r3, r1
-_0802C3E6:
- str r3, [r5, 0x4]
-_0802C3E8:
- cmp r3, 0x3
- ble _0802C432
- subs r3, 0x4
- cmp r3, 0x2F
- bgt _0802C414
- ldr r2, =gUnknown_082FB65C
- ldrh r1, [r5, 0xC]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 4
- adds r0, r3, r0
- adds r0, r2
- movs r4, 0
- ldrsb r4, [r0, r4]
- b _0802C416
- .pool
-_0802C414:
- movs r4, 0
-_0802C416:
- adds r1, r4, 0
- adds r0, r6, 0
- bl sub_802DC80
- cmp r4, 0
- bne _0802C430
- ldr r0, =gUnknown_02022CFC
- ldr r0, [r0]
- ldrb r0, [r0, 0x6]
- cmp r6, r0
- bne _0802C430
- bl sub_802C1BC
-_0802C430:
- str r4, [r5]
-_0802C432:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802C398
-
- thumb_func_start sub_802C43C
-sub_802C43C: @ 802C43C
- push {r4,r5,lr}
- ldr r5, =gUnknown_02022CFC
- ldr r1, [r5]
- ldr r0, [r1, 0x14]
- cmp r0, 0x8
- bne _0802C4CE
- ldr r0, [r1, 0x18]
- cmp r0, 0x7
- bne _0802C4CE
- ldr r4, [r1, 0x58]
- cmp r4, 0
- bne _0802C46C
- bl sub_802C780
- ldr r0, [r5]
- str r4, [r0, 0x54]
- movs r1, 0x1
- str r1, [r0, 0x58]
- adds r0, 0x71
- strb r4, [r0]
- b _0802C4CE
- .pool
-_0802C46C:
- ldr r0, [r1, 0x54]
- cmp r0, 0x5
- bne _0802C480
- ldrh r0, [r1, 0xC]
- adds r0, 0x1
- strh r0, [r1, 0xC]
- ldrh r0, [r1, 0xC]
- bl sub_802C7A0
- b _0802C484
-_0802C480:
- movs r0, 0
- strh r0, [r1, 0xC]
-_0802C484:
- ldr r4, =gUnknown_02022CFC
- ldr r1, [r4]
- ldr r0, [r1, 0x54]
- cmp r0, 0x1
- ble _0802C49E
- movs r0, 0x1
- str r0, [r1, 0x64]
- adds r0, r1, 0
- adds r0, 0x86
- adds r1, 0x81
- movs r2, 0x5
- bl memcpy
-_0802C49E:
- bl sub_802C780
- ldr r0, [r4]
- movs r2, 0
- str r2, [r0, 0x54]
- movs r1, 0x1
- str r1, [r0, 0x58]
- adds r0, 0x71
- strb r2, [r0]
- ldr r0, [r4]
- adds r2, r0, 0
- adds r2, 0x74
- ldrh r1, [r2]
- ldr r0, =0x0000270e
- cmp r1, r0
- bhi _0802C4C2
- adds r0, r1, 0x1
- strh r0, [r2]
-_0802C4C2:
- movs r0, 0xA
- bl sub_802C688
- movs r0, 0x3
- bl sub_802AE14
-_0802C4CE:
- ldr r4, =gUnknown_02022CFC
- ldr r0, [r4]
- ldr r0, [r0, 0x64]
- cmp r0, 0
- beq _0802C504
- bl sub_802C618
- cmp r0, 0x1
- beq _0802C4E8
- ldr r0, [r4]
- ldr r0, [r0, 0x14]
- cmp r0, 0
- bne _0802C504
-_0802C4E8:
- ldr r0, [r4]
- adds r0, 0x86
- bl sub_802C73C
- bl sub_802C790
- bl sub_802C688
- movs r0, 0x3
- bl sub_802AE14
- ldr r1, [r4]
- movs r0, 0
- str r0, [r1, 0x64]
-_0802C504:
- ldr r4, =gUnknown_02022CFC
- ldr r0, [r4]
- ldr r0, [r0, 0x58]
- cmp r0, 0
- beq _0802C52A
- bl sub_802C6B0
- adds r2, r0, 0
- ldr r1, [r4]
- ldr r0, [r1, 0x54]
- cmp r2, r0
- ble _0802C52A
- str r2, [r1, 0x54]
- adds r0, r1, 0
- adds r0, 0x81
- adds r1, 0x7C
- movs r2, 0x5
- bl memcpy
-_0802C52A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802C43C
-
- thumb_func_start sub_802C538
-sub_802C538: @ 802C538
- push {r4,r5,lr}
- ldr r5, =gUnknown_02022CFC
- ldr r1, [r5]
- ldr r0, [r1, 0x14]
- cmp r0, 0x6
- bne _0802C582
- ldr r4, =0x000083ac
- adds r0, r1, r4
- ldr r1, [r0]
- ldr r0, [r1]
- cmp r0, 0
- bne _0802C582
- ldrh r0, [r1, 0x12]
- cmp r0, 0x1
- bne _0802C578
- bl sub_802C0DC
- adds r1, r0, 0
- cmp r1, 0x1
- bne _0802C578
- ldr r0, [r5]
- adds r0, r4
- ldr r0, [r0]
- str r1, [r0, 0x14]
- b _0802C582
- .pool
-_0802C574:
- movs r0, 0
- b _0802C5CA
-_0802C578:
- bl sub_802C18C
- movs r0, 0x3
- bl sub_802AE14
-_0802C582:
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
- ldr r0, [r1, 0x14]
- cmp r0, 0x7
- bne _0802C5A8
- ldr r0, [r1, 0x18]
- cmp r0, 0x6
- bne _0802C5A8
- ldr r2, =0x000083ac
- adds r0, r1, r2
- ldr r1, [r0]
- ldrh r0, [r1, 0x10]
- cmp r0, 0x2
- beq _0802C5A8
- movs r0, 0x1
- str r0, [r1, 0x14]
- movs r0, 0x3
- bl sub_802AE14
-_0802C5A8:
- movs r2, 0
- ldr r0, =gUnknown_02022CFC
- ldr r0, [r0]
- ldrb r1, [r0, 0x5]
- cmp r2, r1
- bge _0802C5C8
- adds r3, r1, 0
- ldr r4, =0x000082f4
- adds r1, r0, r4
-_0802C5BA:
- ldrh r0, [r1]
- cmp r0, 0x2
- beq _0802C574
- adds r1, 0x28
- adds r2, 0x1
- cmp r2, r3
- blt _0802C5BA
-_0802C5C8:
- movs r0, 0x1
-_0802C5CA:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_802C538
-
- thumb_func_start sub_802C5DC
-sub_802C5DC: @ 802C5DC
- push {r4,lr}
- ldr r0, =gUnknown_02022CFC
- ldr r0, [r0]
- ldrb r3, [r0, 0x5]
- movs r4, 0
- cmp r4, r3
- bge _0802C600
- ldr r1, =0x000082f8
- adds r2, r0, r1
- adds r1, r3, 0
-_0802C5F0:
- ldr r0, [r2]
- cmp r0, 0
- beq _0802C5F8
- adds r4, 0x1
-_0802C5F8:
- adds r2, 0x28
- subs r1, 0x1
- cmp r1, 0
- bne _0802C5F0
-_0802C600:
- movs r0, 0
- cmp r4, r3
- bne _0802C608
- movs r0, 0x1
-_0802C608:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_802C5DC
-
- thumb_func_start sub_802C618
-sub_802C618: @ 802C618
- push {r4,lr}
- movs r2, 0
- ldr r0, =gUnknown_02022CFC
- ldr r0, [r0]
- ldrb r1, [r0, 0x5]
- cmp r2, r1
- bge _0802C648
- adds r3, r1, 0
- ldr r4, =0x000082f8
- adds r1, r0, r4
-_0802C62C:
- ldr r0, [r1]
- cmp r0, 0x1
- beq _0802C640
- movs r0, 0
- b _0802C64A
- .pool
-_0802C640:
- adds r1, 0x28
- adds r2, 0x1
- cmp r2, r3
- blt _0802C62C
-_0802C648:
- movs r0, 0x1
-_0802C64A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_802C618
-
- thumb_func_start sub_802C650
-sub_802C650: @ 802C650
- push {lr}
- ldr r0, =gUnknown_02022CFC
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x45
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0802C668
-_0802C660:
- movs r0, 0
- b _0802C684
- .pool
-_0802C668:
- movs r2, 0x1
- ldrb r0, [r1, 0x5]
- cmp r2, r0
- bge _0802C682
- adds r3, r0, 0
- adds r1, 0x92
-_0802C674:
- ldrh r0, [r1]
- cmp r0, 0x1
- beq _0802C660
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, r3
- blt _0802C674
-_0802C682:
- movs r0, 0x1
-_0802C684:
- pop {r1}
- bx r1
- thumb_func_end sub_802C650
-
- thumb_func_start sub_802C688
-sub_802C688: @ 802C688
- push {lr}
- ldr r1, =gUnknown_02022CFC
- ldr r2, [r1]
- ldr r1, [r2, 0x78]
- adds r1, r0
- str r1, [r2, 0x78]
- movs r0, 0x1
- str r0, [r2, 0x5C]
- ldr r0, =0x00018695
- cmp r1, r0
- bls _0802C6A2
- adds r0, 0x1
- str r0, [r2, 0x78]
-_0802C6A2:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802C688
-
- thumb_func_start sub_802C6B0
-sub_802C6B0: @ 802C6B0
- push {r4-r7,lr}
- movs r5, 0
- ldr r1, =gUnknown_02022CFC
- ldr r0, [r1]
- ldrb r4, [r0, 0x5]
- movs r2, 0
- cmp r5, r4
- bge _0802C702
- mov r12, r1
- movs r3, 0
- ldr r7, =0x000082e4
- movs r6, 0x1E
- negs r6, r6
-_0802C6CA:
- mov r0, r12
- ldr r1, [r0]
- adds r0, r1, r7
- adds r0, r3
- ldr r0, [r0]
- cmp r0, r6
- bne _0802C6F0
- adds r0, r1, 0
- adds r0, 0x7C
- adds r0, r2
- movs r1, 0x1
- strb r1, [r0]
- adds r5, 0x1
- b _0802C6FA
- .pool
-_0802C6F0:
- adds r0, r1, 0
- adds r0, 0x7C
- adds r0, r2
- movs r1, 0
- strb r1, [r0]
-_0802C6FA:
- adds r3, 0x28
- adds r2, 0x1
- cmp r2, r4
- blt _0802C6CA
-_0802C702:
- adds r0, r5, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_802C6B0
-
- thumb_func_start sub_802C70C
-sub_802C70C: @ 802C70C
- push {lr}
- movs r2, 0
- ldr r1, =gUnknown_03005000
- ldr r3, =0x000009e6
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, 0
- bne _0802C728
- ldr r3, =0x00000c1a
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, 0
- bne _0802C728
- movs r2, 0x1
-_0802C728:
- adds r0, r2, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_802C70C
-
- thumb_func_start sub_802C73C
-sub_802C73C: @ 802C73C
- push {r4-r6,lr}
- adds r4, r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- ldr r6, =gUnknown_02022CFC
- movs r5, 0x1
-_0802C74A:
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802C75A
- adds r0, r5, 0
- lsls r0, r1
- orrs r2, r0
- adds r3, 0x1
-_0802C75A:
- adds r1, 0x1
- cmp r1, 0x4
- ble _0802C74A
- ldr r0, [r6]
- adds r0, 0x71
- strb r2, [r0]
- cmp r2, 0
- beq _0802C772
- ldr r0, [r6]
- adds r0, 0x4D
- movs r1, 0x1
- strb r1, [r0]
-_0802C772:
- adds r0, r3, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_802C73C
-
- thumb_func_start sub_802C780
-sub_802C780: @ 802C780
- ldr r0, =gUnknown_02022CFC
- ldr r0, [r0]
- adds r0, 0x44
- movs r1, 0
- strb r1, [r0]
- bx lr
- .pool
- thumb_func_end sub_802C780
-
- thumb_func_start sub_802C790
-sub_802C790: @ 802C790
- ldr r1, =gUnknown_082FB6EC
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bx lr
- .pool
- thumb_func_end sub_802C790
-
- thumb_func_start sub_802C7A0
-sub_802C7A0: @ 802C7A0
- push {lr}
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, =gUnknown_02022CFC
- ldr r0, [r0]
- ldrh r2, [r0, 0xE]
- cmp r1, r2
- bls _0802C7B2
- strh r1, [r0, 0xE]
-_0802C7B2:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802C7A0
-
- thumb_func_start sub_802C7BC
-sub_802C7BC: @ 802C7BC
- push {lr}
- ldr r0, =gUnknown_02022CFC
- ldr r0, [r0]
- ldr r1, =gUnknown_082FB714
- ldr r2, [r0, 0x78]
- ldr r0, [r1]
- cmp r2, r0
- bcs _0802C7D8
- movs r0, 0
- b _0802C7DA
- .pool
-_0802C7D8:
- movs r0, 0x1
-_0802C7DA:
- pop {r1}
- bx r1
- thumb_func_end sub_802C7BC
-
- thumb_func_start sub_802C7E0
-sub_802C7E0: @ 802C7E0
- push {r4,lr}
- bl sub_802C818
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- bl sub_802C838
- lsls r0, 16
- lsrs r0, 4
- ldr r1, =0x00000fff
- ands r4, r1
- orrs r0, r4
- lsls r0, 16
- lsrs r0, 16
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_802C7E0
-
- thumb_func_start sub_802C808
-sub_802C808: @ 802C808
- lsls r0, 16
- lsrs r3, r0, 28
- strh r3, [r2]
- lsls r0, 4
- lsrs r0, 20
- strh r0, [r1]
- bx lr
- thumb_func_end sub_802C808
-
- thumb_func_start sub_802C818
-sub_802C818: @ 802C818
- push {lr}
- bl Random
- lsls r0, 16
- movs r1, 0xE0
- lsls r1, 11
- ands r1, r0
- ldr r0, =gUnknown_082FB704
- lsrs r1, 15
- adds r1, r0
- ldrh r0, [r1]
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_802C818
-
- thumb_func_start sub_802C838
-sub_802C838: @ 802C838
- push {r4-r6,lr}
- movs r5, 0
- movs r4, 0
- ldr r3, =gUnknown_02022CFC
- ldr r0, [r3]
- ldr r2, =gUnknown_082FB714
- ldr r1, [r0, 0x78]
- ldr r0, [r2]
- cmp r1, r0
- bcc _0802C874
- ldr r5, [r2, 0x4]
- adds r6, r3, 0
- adds r3, r2, 0x4
-_0802C852:
- adds r3, 0x8
- adds r2, 0x8
- adds r4, 0x1
- cmp r4, 0x4
- bhi _0802C874
- ldr r0, [r6]
- ldr r1, [r0, 0x78]
- ldr r0, [r2]
- cmp r1, r0
- bcc _0802C874
- ldr r5, [r3]
- b _0802C852
- .pool
-_0802C874:
- lsls r0, r5, 16
- lsrs r0, 16
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_802C838
-
- thumb_func_start sub_802C880
-sub_802C880: @ 802C880
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 16
- lsrs r4, r1, 16
- b _0802C892
-_0802C88C:
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
-_0802C892:
- cmp r4, 0
- beq _0802C8A4
- adds r0, r5, 0
- adds r1, r4, 0
- bl CheckBagHasSpace
- lsls r0, 24
- cmp r0, 0
- beq _0802C88C
-_0802C8A4:
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_802C880
-
- thumb_func_start sub_802C8AC
-sub_802C8AC: @ 802C8AC
- push {lr}
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_802C8AC
-
- thumb_func_start sub_802C8BC
-sub_802C8BC: @ 802C8BC
- ldr r0, =gUnknown_02022CFC
- ldr r0, [r0]
- ldrb r0, [r0, 0x6]
- bx lr
- .pool
- thumb_func_end sub_802C8BC
-
- thumb_func_start sub_802C8C8
-sub_802C8C8: @ 802C8C8
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gUnknown_02022CFC
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- ldr r0, =0x000082a8
- adds r1, r0
- ldr r0, [r2]
- adds r0, r1
- bx lr
- .pool
- thumb_func_end sub_802C8C8
-
- thumb_func_start sub_802C8E8
-sub_802C8E8: @ 802C8E8
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =gUnknown_02022CFC
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r1, [r2]
- adds r0, r1
- movs r1, 0x83
- lsls r1, 8
- adds r0, r1
- bx lr
- .pool
- thumb_func_end sub_802C8E8
-
- thumb_func_start sub_802C908
-sub_802C908: @ 802C908
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- bl sub_802AC00
- lsls r0, 16
- asrs r0, 16
- mvns r0, r0
- lsrs r0, 31
- pop {r1}
- bx r1
- thumb_func_end sub_802C908
-
- thumb_func_start sub_802C920
-sub_802C920: @ 802C920
- push {r4,r5,lr}
- movs r5, 0
-_0802C924:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x5
- bl GetMonData
- cmp r0, 0
- beq _0802C95C
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl sub_802C908
- cmp r0, 0
- beq _0802C95C
- ldr r1, =gSpecialVar_Result
- movs r0, 0x1
- b _0802C966
- .pool
-_0802C95C:
- adds r5, 0x1
- cmp r5, 0x5
- ble _0802C924
- ldr r1, =gSpecialVar_Result
- movs r0, 0
-_0802C966:
- strh r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802C920
-
- thumb_func_start sub_802C974
-sub_802C974: @ 802C974
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r4, 0
- ldr r5, =gUnknown_082FBE08
-_0802C97C:
- adds r0, r5, 0
- bl LoadCompressedSpriteSheet
- adds r5, 0x8
- adds r4, 0x1
- cmp r4, 0x4
- bls _0802C97C
- movs r4, 0
- ldr r5, =gUnknown_082FBE30
-_0802C98E:
- adds r0, r5, 0
- bl LoadSpritePalette
- adds r5, 0x8
- adds r4, 0x1
- cmp r4, 0x1
- bls _0802C98E
- movs r0, 0x5
- bl IndexOfSpritePaletteTag
- strb r0, [r6, 0xE]
- movs r0, 0x6
- bl IndexOfSpritePaletteTag
- strb r0, [r6, 0xF]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802C974
-
- thumb_func_start sub_802C9BC
-sub_802C9BC: @ 802C9BC
- push {lr}
- movs r2, 0
- movs r1, 0x7
- adds r0, 0x3C
-_0802C9C4:
- strh r2, [r0]
- subs r0, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _0802C9C4
- pop {r0}
- bx r0
- thumb_func_end sub_802C9BC
-
- thumb_func_start sub_802C9D4
-sub_802C9D4: @ 802C9D4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x34
- mov r9, r0
- adds r7, r1, 0
- ldr r0, [sp, 0x54]
- lsls r2, 16
- lsrs r2, 16
- str r2, [sp, 0x28]
- lsls r3, 16
- lsrs r3, 16
- str r3, [sp, 0x2C]
- lsls r0, 24
- lsrs r6, r0, 24
- mov r1, sp
- ldr r0, =gUnknown_082FBE40
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- movs r0, 0x80
- lsls r0, 6
- bl Alloc
- mov r8, r0
- movs r0, 0x80
- lsls r0, 4
- bl Alloc
- mov r10, r0
- bl sub_802C8BC
- lsls r0, 16
- lsrs r0, 16
- cmp r6, r0
- bne _0802CA2C
- movs r0, 0x3
- b _0802CA32
- .pool
-_0802CA2C:
- adds r0, r6, 0x4
- lsls r0, 24
- lsrs r0, 24
-_0802CA32:
- str r0, [sp, 0x30]
- mov r1, r8
- cmp r1, 0
- beq _0802CAF4
- mov r2, r10
- cmp r2, 0
- beq _0802CAF4
- ldrh r2, [r7]
- lsls r0, r2, 3
- ldr r1, =gMonStillFrontPicTable
- adds r0, r1
- ldr r3, [r7, 0x8]
- mov r1, r8
- bl HandleLoadSpecialPokePic
- mov r3, r8
- str r3, [sp, 0x18]
- adds r4, r6, 0
- add r0, sp, 0x18
- ldr r5, =0xffff0000
- lsls r1, r4, 16
- movs r2, 0x80
- lsls r2, 4
- orrs r1, r2
- str r1, [r0, 0x4]
- bl LoadSpriteSheet
- ldrh r0, [r7]
- ldr r1, [r7, 0x4]
- ldr r2, [r7, 0x8]
- bl GetFrontSpritePalFromSpeciesAndPersonality
- str r0, [sp, 0x20]
- add r0, sp, 0x20
- ldr r1, [r0, 0x4]
- ands r1, r5
- orrs r1, r4
- str r1, [r0, 0x4]
- bl LoadCompressedSpritePalette
- mov r0, r8
- bl Free
- mov r0, r10
- bl Free
- mov r1, sp
- mov r0, sp
- ldrh r0, [r0]
- adds r0, r6
- strh r0, [r1]
- mov r0, sp
- ldrh r0, [r0, 0x2]
- adds r0, r6
- strh r0, [r1, 0x2]
- ldr r4, [sp, 0x28]
- lsls r1, r4, 16
- asrs r1, 16
- ldr r0, [sp, 0x2C]
- lsls r2, r0, 16
- asrs r2, 16
- mov r0, sp
- ldr r3, [sp, 0x30]
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _0802CAF4
- lsls r0, r6, 2
- ldr r2, =0x000081a8
- add r2, r9
- adds r2, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- str r0, [r2]
- ldr r0, =0x000081fc
- add r0, r9
- adds r0, r6
- add r1, sp, 0x30
- ldrb r1, [r1]
- strb r1, [r0]
- b _0802CB00
- .pool
-_0802CAF4:
- lsls r0, r6, 2
- ldr r1, =0x000081a8
- add r1, r9
- adds r1, r0
- movs r0, 0
- str r0, [r1]
-_0802CB00:
- add sp, 0x34
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802C9D4
-
- thumb_func_start sub_802CB14
-sub_802CB14: @ 802CB14
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r6, r1, 2
- ldr r0, =0x000081bc
- adds r5, r4, r0
- adds r5, r6
- ldr r0, [r5]
- bl sub_802C9BC
- ldr r2, [r5]
- ldr r0, =0x000081a8
- adds r4, r0
- adds r4, r6
- ldr r1, [r4]
- ldr r0, =gSprites
- subs r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r1, r0, 8
- adds r0, r1
- lsls r1, r0, 16
- adds r0, r1
- negs r0, r0
- asrs r0, 2
- strh r0, [r2, 0x3C]
- ldr r1, [r5]
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldr r1, [r5]
- movs r0, 0x60
- strh r0, [r1, 0x22]
- ldr r0, [r5]
- ldr r1, =sub_802CB7C
- str r1, [r0, 0x1C]
- movs r1, 0x1
- bl StartSpriteAnim
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802CB14
-
- thumb_func_start sub_802CB7C
-sub_802CB7C: @ 802CB7C
- push {lr}
- adds r2, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- beq _0802CBA8
- cmp r0, 0x1
- bgt _0802CB92
- cmp r0, 0
- beq _0802CB98
- b _0802CBE6
-_0802CB92:
- cmp r0, 0x2
- beq _0802CBC8
- b _0802CBE6
-_0802CB98:
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0802CBE6
- b _0802CBD6
-_0802CBA8:
- ldrh r1, [r2, 0x22]
- subs r1, 0x1
- strh r1, [r2, 0x22]
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x48
- bgt _0802CBE6
- movs r0, 0x48
- strh r0, [r2, 0x22]
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- b _0802CBE6
-_0802CBC8:
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2F
- ble _0802CBE6
-_0802CBD6:
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r3]
- ldr r0, =SpriteCallbackDummy
- str r0, [r2, 0x1C]
-_0802CBE6:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802CB7C
-
- thumb_func_start sub_802CBF0
-sub_802CBF0: @ 802CBF0
- push {lr}
- lsls r1, 2
- ldr r2, =0x000081a8
- adds r0, r2
- adds r0, r1
- ldr r2, [r0]
- ldr r1, =sub_802CC40
- str r1, [r2, 0x1C]
- movs r1, 0
- strh r1, [r2, 0x26]
- ldr r0, [r0]
- bl sub_802C9BC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802CBF0
-
- thumb_func_start sub_802CC18
-sub_802CC18: @ 802CC18
- push {lr}
- movs r2, 0
- lsls r1, 2
- ldr r3, =0x000081a8
- adds r0, r3
- adds r0, r1
- ldr r0, [r0]
- ldr r1, [r0, 0x1C]
- ldr r0, =sub_802CC40
- cmp r1, r0
- bne _0802CC30
- movs r2, 0x1
-_0802CC30:
- adds r0, r2, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_802CC18
-
- thumb_func_start sub_802CC40
-sub_802CC40: @ 802CC40
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0802CC6C
- ldrh r0, [r2, 0x32]
- adds r0, 0x1
- strh r0, [r2, 0x32]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0802CC64
- movs r0, 0x2
- b _0802CC66
-_0802CC64:
- ldr r0, =0x0000fffe
-_0802CC66:
- strh r0, [r2, 0x26]
- movs r0, 0
- strh r0, [r2, 0x30]
-_0802CC6C:
- movs r1, 0x32
- ldrsh r0, [r2, r1]
- cmp r0, 0xC
- ble _0802CC7C
- movs r0, 0
- strh r0, [r2, 0x26]
- ldr r0, =SpriteCallbackDummy
- str r0, [r2, 0x1C]
-_0802CC7C:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802CC40
-
- thumb_func_start sub_802CC88
-sub_802CC88: @ 802CC88
- push {r4,lr}
- adds r4, r0, 0
- lsls r1, 2
- ldr r0, =0x000081a8
- adds r4, r0
- adds r4, r1
- ldr r0, [r4]
- bl sub_802C9BC
- ldr r1, [r4]
- ldr r0, =sub_802CD08
- str r0, [r1, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802CC88
-
- thumb_func_start sub_802CCB0
-sub_802CCB0: @ 802CCB0
- push {r4-r7,lr}
- adds r4, r0, 0
- bl sub_802C8AC
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _0802CCF4
- movs r1, 0x5
- negs r1, r1
- mov r12, r1
- ldr r1, =0x000081a8
- adds r3, r4, r1
- ldr r7, =sub_802CD08
- ldr r6, =SpriteCallbackDummy
- movs r5, 0xA
- adds r4, r0, 0
-_0802CCD2:
- ldr r2, [r3]
- ldr r0, [r2, 0x1C]
- cmp r0, r7
- bne _0802CCEC
- adds r2, 0x3E
- ldrb r1, [r2]
- mov r0, r12
- ands r0, r1
- strb r0, [r2]
- ldr r0, [r3]
- str r6, [r0, 0x1C]
- adds r0, 0x43
- strb r5, [r0]
-_0802CCEC:
- adds r3, 0x4
- subs r4, 0x1
- cmp r4, 0
- bne _0802CCD2
-_0802CCF4:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802CCB0
-
- thumb_func_start sub_802CD08
-sub_802CD08: @ 802CD08
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _0802CD36
- movs r0, 0
- strh r0, [r3, 0x2E]
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_0802CD36:
- pop {r0}
- bx r0
- thumb_func_end sub_802CD08
-
- thumb_func_start sub_802CD3C
-sub_802CD3C: @ 802CD3C
- push {r4,r5,lr}
- adds r4, r0, 0
- bl sub_802C8AC
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0
- cmp r2, r3
- bge _0802CD66
- ldr r0, =0x000081fc
- adds r5, r4, r0
- subs r0, 0x54
- adds r4, r0
-_0802CD56:
- ldm r4!, {r0}
- adds r1, r5, r2
- ldrb r1, [r1]
- adds r0, 0x43
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, r3
- blt _0802CD56
-_0802CD66:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802CD3C
-
- thumb_func_start sub_802CD70
-sub_802CD70: @ 802CD70
- push {r4,lr}
- adds r4, r0, 0
- lsls r1, 2
- ldr r0, =0x000081a8
- adds r4, r0
- adds r4, r1
- ldr r0, [r4]
- bl sub_802C9BC
- ldr r1, [r4]
- ldr r0, =sub_802CDD4
- str r0, [r1, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802CD70
-
- thumb_func_start sub_802CD98
-sub_802CD98: @ 802CD98
- push {r4,r5,lr}
- adds r4, r0, 0
- bl sub_802C8AC
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0
- cmp r2, r3
- bge _0802CDCC
- ldr r5, =sub_802CDD4
- ldr r0, =0x000081a8
- adds r1, r4, r0
-_0802CDB0:
- ldr r0, [r1]
- ldr r0, [r0, 0x1C]
- cmp r0, r5
- bne _0802CDC4
- movs r0, 0x1
- b _0802CDCE
- .pool
-_0802CDC4:
- adds r1, 0x4
- adds r2, 0x1
- cmp r2, r3
- blt _0802CDB0
-_0802CDCC:
- movs r0, 0
-_0802CDCE:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_802CD98
-
- thumb_func_start sub_802CDD4
-sub_802CDD4: @ 802CDD4
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r0, 0x2E
- ldrsh r4, [r5, r0]
- cmp r4, 0
- beq _0802CDE6
- cmp r4, 0x1
- beq _0802CDF4
- b _0802CE3C
-_0802CDE6:
- movs r0, 0x22
- bl PlaySE
- strh r4, [r5, 0x30]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
-_0802CDF4:
- ldrh r0, [r5, 0x30]
- adds r0, 0x4
- strh r0, [r5, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7F
- ble _0802CE06
- movs r0, 0
- strh r0, [r5, 0x30]
-_0802CE06:
- ldr r1, =gSineTable
- movs r2, 0x30
- ldrsh r0, [r5, r2]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 19
- negs r0, r0
- strh r0, [r5, 0x26]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- cmp r1, 0
- bne _0802CE3C
- ldrh r0, [r5, 0x32]
- adds r0, 0x1
- strh r0, [r5, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bgt _0802CE38
- strh r1, [r5, 0x2E]
- b _0802CE3C
- .pool
-_0802CE38:
- ldr r0, =SpriteCallbackDummy
- str r0, [r5, 0x1C]
-_0802CE3C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802CDD4
-
- thumb_func_start sub_802CE48
-sub_802CE48: @ 802CE48
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r3, 24
- lsrs r4, r3, 24
- ldr r0, =gUnknown_082FC00C
- lsls r1, 16
- asrs r1, 16
- lsls r2, 16
- asrs r2, 16
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _0802CE88
- ldr r0, =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- adds r3, r1, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r3]
- lsls r2, r4, 2
- ldr r3, =0x000081bc
- adds r0, r5, r3
- adds r0, r2
- str r1, [r0]
-_0802CE88:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_802CE48
-
thumb_func_start sub_802CE9C
sub_802CE9C: @ 802CE9C
push {r4-r7,lr}
@@ -5212,7 +476,7 @@ _0802D178:
bl CopyBgTilemapBufferToVram
movs r0, 0x1
bl CopyBgTilemapBufferToVram
- bl sub_8199D98
+ bl ResetBgPositions
b _0802D2CC
.pool
_0802D298:
diff --git a/asm/pokenav.s b/asm/pokenav.s
deleted file mode 100644
index 8b082c2ae..000000000
--- a/asm/pokenav.s
+++ /dev/null
@@ -1,18699 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
-
-
-
-
- thumb_func_start sub_81C81D4
-sub_81C81D4: @ 81C81D4
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- adds r7, r2, 0
- ldr r1, =0x000008a4
- movs r0, 0x11
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081C821C
- ldr r1, =0x00000888
- adds r0, r4, r1
- adds r1, r5, 0
- bl sub_81C9160
- adds r0, r4, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r7, 0
- bl sub_81C91AC
- cmp r0, 0
- beq _081C821C
- ldr r0, =sub_81C8254
- movs r1, 0x6
- bl sub_81C7078
- movs r0, 0x1
- b _081C821E
- .pool
-_081C821C:
- movs r0, 0
-_081C821E:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81C81D4
-
- thumb_func_start sub_81C8224
-sub_81C8224: @ 81C8224
- push {lr}
- ldr r0, =sub_81C8254
- bl sub_81C7124
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81C8224
-
- thumb_func_start sub_81C8234
-sub_81C8234: @ 81C8234
- push {r4,lr}
- movs r0, 0x11
- bl GetSubstructPtr
- adds r4, r0, 0
- bl sub_81C8FE0
- ldrb r0, [r4, 0x8]
- bl RemoveWindow
- movs r0, 0x11
- bl FreeSubstruct
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81C8234
-
- thumb_func_start sub_81C8254
-sub_81C8254: @ 81C8254
- push {r4,lr}
- adds r4, r0, 0
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081C82C0
- movs r0, 0x11
- bl GetSubstructPtr
- adds r2, r0, 0
- cmp r4, 0x4
- bhi _081C82D6
- lsls r0, r4, 2
- ldr r1, =_081C827C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081C827C:
- .4byte _081C8290
- .4byte _081C829A
- .4byte _081C82A4
- .4byte _081C82B8
- .4byte _081C82CC
-_081C8290:
- adds r0, r2, 0
- bl sub_81C82E4
- movs r0, 0
- b _081C82D8
-_081C829A:
- adds r0, r2, 0
- bl sub_81C835C
- movs r0, 0
- b _081C82D8
-_081C82A4:
- ldr r1, =0x00000888
- adds r0, r2, r1
- adds r1, r2, 0
- bl sub_81C837C
- movs r0, 0
- b _081C82D8
- .pool
-_081C82B8:
- bl sub_81C83E0
- cmp r0, 0
- beq _081C82C4
-_081C82C0:
- movs r0, 0x2
- b _081C82D8
-_081C82C4:
- bl sub_81C8ED0
- movs r0, 0x1
- b _081C82D8
-_081C82CC:
- ldr r1, =0x00000888
- adds r0, r2, r1
- adds r1, r2, 0
- bl sub_81C8EF8
-_081C82D6:
- movs r0, 0x4
-_081C82D8:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81C8254
-
- thumb_func_start sub_81C82E4
-sub_81C82E4: @ 81C82E4
- push {r4,r5,lr}
- sub sp, 0x8
- adds r5, r0, 0
- ldrb r4, [r5, 0x1]
- lsls r4, 12
- ldrh r0, [r5, 0x6]
- orrs r4, r0
- lsls r4, 16
- lsrs r4, 16
- ldrb r0, [r5]
- ldrh r2, [r5, 0x6]
- movs r1, 0x11
- movs r3, 0x1
- bl sub_8199DF0
- ldrb r0, [r5]
- ldrh r2, [r5, 0x6]
- adds r2, 0x1
- movs r1, 0x44
- movs r3, 0x1
- bl sub_8199DF0
- ldrb r0, [r5]
- adds r1, r5, 0
- adds r1, 0x88
- bl SetBgTilemapBuffer
- ldrb r0, [r5]
- movs r1, 0x20
- str r1, [sp]
- str r1, [sp, 0x4]
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- ldrb r0, [r5]
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- ldrb r0, [r5]
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- ldrb r0, [r5]
- ldrb r1, [r5, 0x3]
- lsls r1, 11
- movs r2, 0x2
- bl ChangeBgY
- ldrb r0, [r5]
- bl CopyBgTilemapBufferToVram
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81C82E4
-
- thumb_func_start sub_81C835C
-sub_81C835C: @ 81C835C
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4, 0x8]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldrb r0, [r4, 0x8]
- bl PutWindowTilemap
- ldrb r0, [r4, 0x8]
- movs r1, 0x1
- bl CopyWindowToVram
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81C835C
-
- thumb_func_start sub_81C837C
-sub_81C837C: @ 81C837C
- push {r4,r5,lr}
- sub sp, 0x8
- adds r3, r0, 0
- adds r5, r1, 0
- ldrh r0, [r3, 0x2]
- ldrh r4, [r3]
- subs r2, r0, r4
- ldrh r0, [r3, 0x8]
- cmp r2, r0
- ble _081C8392
- adds r2, r0, 0
-_081C8392:
- ldr r0, [r3, 0x10]
- ldr r3, [r3, 0xC]
- movs r1, 0
- str r1, [sp]
- str r5, [sp, 0x4]
- adds r1, r4, 0
- bl sub_81C83AC
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81C837C
-
- thumb_func_start sub_81C83AC
-sub_81C83AC: @ 81C83AC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, [sp, 0x10]
- cmp r2, 0
- beq _081C83D6
- adds r0, r5, 0
- muls r0, r3
- adds r0, r4, r0
- str r0, [r1, 0x1C]
- str r3, [r1, 0x18]
- movs r0, 0
- strh r0, [r1, 0xC]
- strh r2, [r1, 0xE]
- str r5, [r1, 0x14]
- ldr r0, [sp, 0xC]
- str r0, [r1, 0x10]
- ldr r0, =sub_81C83F0
- movs r1, 0x5
- bl sub_81C7078
-_081C83D6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C83AC
-
- thumb_func_start sub_81C83E0
-sub_81C83E0: @ 81C83E0
- push {lr}
- ldr r0, =sub_81C83F0
- bl sub_81C7124
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81C83E0
-
- thumb_func_start sub_81C83F0
-sub_81C83F0: @ 81C83F0
- push {r4-r7,lr}
- sub sp, 0xC
- adds r6, r0, 0
- movs r0, 0x11
- bl GetSubstructPtr
- adds r4, r0, 0
- cmp r6, 0
- beq _081C8408
- cmp r6, 0x1
- beq _081C848C
- b _081C849A
-_081C8408:
- ldrh r0, [r4, 0xA]
- ldrh r1, [r4, 0xC]
- adds r0, r1
- ldr r1, [r4, 0x10]
- adds r5, r0, r1
- movs r0, 0xF
- ands r5, r0
- ldr r0, [r4, 0x1C]
- adds r7, r4, 0
- adds r7, 0x48
- ldr r2, [r4, 0x34]
- adds r1, r7, 0
- bl _call_via_r2
- ldr r3, [r4, 0x38]
- cmp r3, 0
- beq _081C8434
- ldrh r0, [r4, 0x8]
- ldr r1, [r4, 0x14]
- adds r2, r5, 0
- bl _call_via_r3
-_081C8434:
- ldrb r0, [r4, 0x8]
- ldrb r1, [r4, 0x5]
- lsls r2, r5, 4
- movs r3, 0x1
- orrs r2, r3
- str r2, [sp]
- movs r2, 0xFF
- str r2, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r2, r7, 0
- movs r3, 0x8
- bl AddTextPrinterParameterized
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r4, 0xE]
- cmp r0, r1
- bcc _081C847A
- ldr r0, [r4, 0x38]
- cmp r0, 0
- beq _081C846E
- ldrb r0, [r4, 0x8]
- movs r1, 0x3
- bl CopyWindowToVram
- b _081C8476
-_081C846E:
- ldrb r0, [r4, 0x8]
- movs r1, 0x2
- bl CopyWindowToVram
-_081C8476:
- movs r0, 0
- b _081C849C
-_081C847A:
- ldr r0, [r4, 0x1C]
- ldr r1, [r4, 0x18]
- adds r0, r1
- str r0, [r4, 0x1C]
- ldr r0, [r4, 0x14]
- adds r0, 0x1
- str r0, [r4, 0x14]
- movs r0, 0x3
- b _081C849C
-_081C848C:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081C849A
- movs r0, 0x2
- b _081C849C
-_081C849A:
- movs r0, 0x4
-_081C849C:
- add sp, 0xC
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81C83F0
-
- thumb_func_start sub_81C84A4
-sub_81C84A4: @ 81C84A4
- push {lr}
- movs r0, 0x11
- bl GetSubstructPtr
- ldr r1, =0x00000888
- adds r0, r1
- ldrh r1, [r0]
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81C84A4
-
- thumb_func_start sub_81C84C0
-sub_81C84C0: @ 81C84C0
- push {lr}
- movs r0, 0x11
- bl GetSubstructPtr
- ldr r1, =0x00000888
- adds r0, r1
- movs r3, 0
- ldrh r1, [r0]
- ldrh r2, [r0, 0x8]
- adds r1, r2
- ldrh r0, [r0, 0x2]
- cmp r1, r0
- bge _081C84DC
- movs r3, 0x1
-_081C84DC:
- adds r0, r3, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81C84C0
-
- thumb_func_start sub_81C84E8
-sub_81C84E8: @ 81C84E8
- push {r4-r7,lr}
- sub sp, 0x8
- adds r6, r0, 0
- adds r4, r1, 0
- movs r0, 0x11
- bl GetSubstructPtr
- adds r7, r0, 0
- ldr r0, =0x00000888
- adds r5, r7, r0
- cmp r6, 0
- bge _081C8524
- ldrh r1, [r5]
- adds r0, r1, r6
- cmp r0, 0
- bge _081C850A
- negs r6, r1
-_081C850A:
- cmp r4, 0
- beq _081C854E
- ldr r0, [r5, 0x10]
- adds r1, r6
- negs r2, r6
- ldr r3, [r5, 0xC]
- str r6, [sp]
- str r7, [sp, 0x4]
- bl sub_81C83AC
- b _081C854E
- .pool
-_081C8524:
- cmp r4, 0
- beq _081C854E
- ldr r2, =gUnknown_0203CF44
- ldrh r1, [r5]
- ldrh r0, [r5, 0x8]
- adds r4, r1, r0
- str r4, [r2]
- adds r0, r4, r6
- ldrh r1, [r5, 0x2]
- cmp r0, r1
- blt _081C853C
- subs r6, r1, r4
-_081C853C:
- ldr r0, [r5, 0x10]
- ldr r3, [r5, 0xC]
- ldrh r1, [r5, 0x8]
- str r1, [sp]
- str r7, [sp, 0x4]
- adds r1, r4, 0
- adds r2, r6, 0
- bl sub_81C83AC
-_081C854E:
- adds r0, r6, 0
- adds r1, r7, 0
- bl sub_81C8568
- ldrh r0, [r5]
- adds r0, r6
- strh r0, [r5]
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C84E8
-
- thumb_func_start sub_81C8568
-sub_81C8568: @ 81C8568
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- ldrb r0, [r4]
- bl GetBgY
- str r0, [r4, 0x20]
- lsls r1, r5, 12
- adds r0, r1
- str r0, [r4, 0x24]
- cmp r5, 0
- ble _081C8584
- movs r0, 0x1
- b _081C8586
-_081C8584:
- movs r0, 0x2
-_081C8586:
- str r0, [r4, 0x30]
- str r5, [r4, 0x2C]
- ldr r0, =sub_81C85A0
- movs r1, 0x6
- bl sub_81C7078
- str r0, [r4, 0x28]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C8568
-
- thumb_func_start sub_81C85A0
-sub_81C85A0: @ 81C85A0
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r0, 0x11
- bl GetSubstructPtr
- adds r4, r0, 0
- cmp r5, 0
- beq _081C85B8
- cmp r5, 0x1
- beq _081C85C4
- movs r0, 0x4
- b _081C862A
-_081C85B8:
- bl sub_81C83E0
- cmp r0, 0
- bne _081C8628
- movs r0, 0x1
- b _081C862A
-_081C85C4:
- movs r6, 0
- ldrb r0, [r4]
- bl GetBgY
- adds r5, r0, 0
- ldrb r0, [r4]
- movs r1, 0x80
- lsls r1, 5
- ldr r2, [r4, 0x30]
- lsls r2, 24
- lsrs r2, 24
- bl ChangeBgY
- adds r1, r0, 0
- ldr r0, [r4, 0x30]
- cmp r0, 0x2
- bne _081C85F8
- ldr r2, [r4, 0x24]
- cmp r5, r2
- bgt _081C85F2
- ldr r0, [r4, 0x20]
- cmp r5, r0
- bgt _081C860A
-_081C85F2:
- cmp r1, r2
- bgt _081C860A
- b _081C860E
-_081C85F8:
- ldr r2, [r4, 0x24]
- cmp r5, r2
- blt _081C8604
- ldr r0, [r4, 0x20]
- cmp r5, r0
- blt _081C860A
-_081C8604:
- cmp r1, r2
- blt _081C860A
- movs r6, 0x1
-_081C860A:
- cmp r6, 0
- beq _081C8628
-_081C860E:
- ldr r1, [r4, 0x2C]
- ldrh r0, [r4, 0xA]
- adds r0, r1
- movs r1, 0xF
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrb r0, [r4]
- adds r1, r2, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x4
- b _081C862A
-_081C8628:
- movs r0, 0x2
-_081C862A:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81C85A0
-
- thumb_func_start sub_81C8630
-sub_81C8630: @ 81C8630
- push {lr}
- movs r0, 0x11
- bl GetSubstructPtr
- ldr r0, [r0, 0x28]
- bl sub_81C70D8
- pop {r1}
- bx r1
- thumb_func_end sub_81C8630
-
- thumb_func_start sub_81C8644
-sub_81C8644: @ 81C8644
- push {lr}
- movs r0, 0x11
- bl GetSubstructPtr
- ldr r1, =0x00000888
- adds r0, r1
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81C8644
-
- thumb_func_start sub_81C8658
-sub_81C8658: @ 81C8658
- push {lr}
- bl sub_81C8644
- adds r1, r0, 0
- ldrh r0, [r1, 0x6]
- cmp r0, 0
- beq _081C866E
- subs r0, 0x1
- strh r0, [r1, 0x6]
- movs r0, 0x1
- b _081C8686
-_081C866E:
- bl sub_81C84A4
- cmp r0, 0
- bne _081C867A
- movs r0, 0
- b _081C8686
-_081C867A:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x1
- bl sub_81C84E8
- movs r0, 0x2
-_081C8686:
- pop {r1}
- bx r1
- thumb_func_end sub_81C8658
-
- thumb_func_start sub_81C868C
-sub_81C868C: @ 81C868C
- push {lr}
- bl sub_81C8644
- adds r2, r0, 0
- ldrh r1, [r2]
- ldrh r3, [r2, 0x6]
- adds r1, r3
- ldrh r0, [r2, 0x2]
- subs r0, 0x1
- cmp r1, r0
- bge _081C86BA
- ldrh r0, [r2, 0x8]
- subs r0, 0x1
- cmp r3, r0
- bge _081C86B2
- adds r0, r3, 0x1
- strh r0, [r2, 0x6]
- movs r0, 0x1
- b _081C86C8
-_081C86B2:
- bl sub_81C84C0
- cmp r0, 0
- bne _081C86BE
-_081C86BA:
- movs r0, 0
- b _081C86C8
-_081C86BE:
- movs r0, 0x1
- movs r1, 0x1
- bl sub_81C84E8
- movs r0, 0x2
-_081C86C8:
- pop {r1}
- bx r1
- thumb_func_end sub_81C868C
-
- thumb_func_start sub_81C86CC
-sub_81C86CC: @ 81C86CC
- push {r4,lr}
- bl sub_81C8644
- adds r4, r0, 0
- bl sub_81C84A4
- adds r1, r0, 0
- cmp r1, 0
- beq _081C86F8
- ldrh r0, [r4]
- ldrh r1, [r4, 0x8]
- cmp r0, r1
- bcc _081C86EA
- ldrh r0, [r4, 0x8]
- b _081C86EC
-_081C86EA:
- ldrh r0, [r4]
-_081C86EC:
- negs r0, r0
- movs r1, 0x1
- bl sub_81C84E8
- movs r0, 0x2
- b _081C8706
-_081C86F8:
- ldrh r0, [r4, 0x6]
- cmp r0, 0
- bne _081C8702
- movs r0, 0
- b _081C8706
-_081C8702:
- strh r1, [r4, 0x6]
- movs r0, 0x1
-_081C8706:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81C86CC
-
- thumb_func_start sub_81C870C
-sub_81C870C: @ 81C870C
- push {r4,lr}
- bl sub_81C8644
- adds r4, r0, 0
- bl sub_81C84C0
- cmp r0, 0
- beq _081C8736
- ldrh r0, [r4]
- ldrh r3, [r4, 0x8]
- adds r2, r0, r3
- ldrh r1, [r4, 0x4]
- subs r0, r1, r0
- cmp r2, r1
- bgt _081C872C
- adds r0, r3, 0
-_081C872C:
- movs r1, 0x1
- bl sub_81C84E8
- movs r0, 0x2
- b _081C8756
-_081C8736:
- ldrh r0, [r4, 0x2]
- ldrh r1, [r4, 0x8]
- cmp r0, r1
- bcc _081C8744
- ldrh r1, [r4, 0x6]
- ldrh r0, [r4, 0x8]
- b _081C8748
-_081C8744:
- ldrh r1, [r4, 0x6]
- ldrh r0, [r4, 0x2]
-_081C8748:
- subs r0, 0x1
- cmp r1, r0
- bge _081C8754
- strh r0, [r4, 0x6]
- movs r0, 0x1
- b _081C8756
-_081C8754:
- movs r0, 0
-_081C8756:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81C870C
-
- thumb_func_start sub_81C875C
-sub_81C875C: @ 81C875C
- push {lr}
- bl sub_81C8644
- adds r1, r0, 0
- ldrh r0, [r1]
- ldrh r1, [r1, 0x6]
- adds r0, r1
- pop {r1}
- bx r1
- thumb_func_end sub_81C875C
-
- thumb_func_start sub_81C8770
-sub_81C8770: @ 81C8770
- push {lr}
- bl sub_81C8644
- ldrh r0, [r0]
- pop {r1}
- bx r1
- thumb_func_end sub_81C8770
-
- thumb_func_start sub_81C877C
-sub_81C877C: @ 81C877C
- push {r4,lr}
- movs r0, 0x11
- bl GetSubstructPtr
- adds r4, r0, 0
- ldr r0, =0x0000089c
- adds r1, r4, r0
- movs r0, 0
- str r0, [r1]
- ldr r0, =sub_81C8870
- movs r1, 0x6
- bl sub_81C7078
- movs r1, 0x8A
- lsls r1, 4
- adds r4, r1
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C877C
-
- thumb_func_start sub_81C87AC
-sub_81C87AC: @ 81C87AC
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- movs r0, 0x11
- bl GetSubstructPtr
- adds r5, r0, 0
- ldr r0, =0x00000888
- adds r1, r5, r0
- ldrh r0, [r1]
- adds r0, r4
- movs r2, 0
- strh r0, [r1]
- ldr r1, =0x0000089c
- adds r0, r5, r1
- str r2, [r0]
- ldr r0, =sub_81C8958
- movs r1, 0x6
- bl sub_81C7078
- movs r1, 0x8A
- lsls r1, 4
- adds r5, r1
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C87AC
-
- thumb_func_start sub_81C87F0
-sub_81C87F0: @ 81C87F0
- push {r4,lr}
- movs r0, 0x11
- bl GetSubstructPtr
- adds r4, r0, 0
- ldr r0, =0x0000089c
- adds r1, r4, r0
- movs r0, 0
- str r0, [r1]
- ldr r0, =sub_81C8A28
- movs r1, 0x6
- bl sub_81C7078
- movs r1, 0x8A
- lsls r1, 4
- adds r4, r1
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C87F0
-
- thumb_func_start sub_81C8820
-sub_81C8820: @ 81C8820
- push {lr}
- movs r0, 0x11
- bl GetSubstructPtr
- movs r1, 0x8A
- lsls r1, 4
- adds r0, r1
- ldr r0, [r0]
- bl sub_81C70D8
- pop {r1}
- bx r1
- thumb_func_end sub_81C8820
-
- thumb_func_start sub_81C8838
-sub_81C8838: @ 81C8838
- push {r4,lr}
- movs r0, 0x11
- bl GetSubstructPtr
- adds r4, r0, 0
- ldr r0, =0x00000888
- adds r2, r4, r0
- ldrh r0, [r4, 0x8]
- ldrh r1, [r2]
- ldrh r3, [r2, 0x6]
- adds r1, r3
- ldrh r2, [r4, 0xA]
- adds r2, r3
- movs r3, 0xF
- ands r2, r3
- ldr r3, [r4, 0x38]
- bl _call_via_r3
- ldrb r0, [r4, 0x8]
- movs r1, 0x1
- bl CopyWindowToVram
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C8838
-
- thumb_func_start sub_81C8870
-sub_81C8870: @ 81C8870
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r0, 0x11
- bl GetSubstructPtr
- adds r4, r0, 0
- cmp r5, 0x4
- bhi _081C894C
- lsls r0, r5, 2
- ldr r1, =_081C8890
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081C8890:
- .4byte _081C88A4
- .4byte _081C88AC
- .4byte _081C88D8
- .4byte _081C8918
- .4byte _081C8938
-_081C88A4:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81C9008
-_081C88AC:
- ldr r0, =0x0000089c
- adds r5, r4, r0
- ldr r1, =0x0000088e
- adds r0, r4, r1
- ldr r1, [r5]
- ldrh r0, [r0]
- cmp r1, r0
- beq _081C88C4
- adds r0, r4, 0
- movs r2, 0x1
- bl sub_81C8B70
-_081C88C4:
- ldr r0, [r5]
- adds r0, 0x1
- str r0, [r5]
-_081C88CA:
- movs r0, 0
- b _081C894E
- .pool
-_081C88D8:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081C8942
- ldr r2, =0x0000089c
- adds r0, r4, r2
- subs r2, 0xC
- adds r1, r4, r2
- ldr r3, [r0]
- ldrh r1, [r1]
- cmp r3, r1
- beq _081C88FC
- movs r0, 0x6
- b _081C894E
- .pool
-_081C88FC:
- ldr r0, =0x0000088e
- adds r1, r4, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _081C88CA
- adds r2, r0, 0
- adds r0, r4, 0
- adds r1, r3, 0
- bl sub_81C8B70
- b _081C88CA
- .pool
-_081C8918:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081C8942
- ldr r2, =0x0000088e
- adds r1, r4, r2
- ldrh r0, [r1]
- cmp r0, 0
- beq _081C894C
- movs r1, 0
- bl sub_81C84E8
- b _081C88CA
- .pool
-_081C8938:
- bl sub_81C8630
- adds r1, r0, 0
- cmp r1, 0
- beq _081C8946
-_081C8942:
- movs r0, 0x2
- b _081C894E
-_081C8946:
- ldr r2, =0x0000088e
- adds r0, r4, r2
- strh r1, [r0]
-_081C894C:
- movs r0, 0x4
-_081C894E:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81C8870
-
- thumb_func_start sub_81C8958
-sub_81C8958: @ 81C8958
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r0, 0x11
- bl GetSubstructPtr
- adds r4, r0, 0
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081C8972
- movs r0, 0x2
- b _081C8A22
-_081C8972:
- cmp r5, 0x7
- bhi _081C8A1C
- lsls r0, r5, 2
- ldr r1, =_081C8984
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081C8984:
- .4byte _081C89A4
- .4byte _081C89B4
- .4byte _081C89BE
- .4byte _081C89D0
- .4byte _081C89DA
- .4byte _081C89EC
- .4byte _081C89F6
- .4byte _081C8A08
-_081C89A4:
- ldr r1, =0x00000888
- adds r0, r4, r1
- adds r1, r4, 0
- bl sub_81C8CB4
- b _081C8A20
- .pool
-_081C89B4:
- adds r0, r4, 0
- movs r1, 0
- bl sub_81C8DBC
- b _081C8A20
-_081C89BE:
- ldr r1, =0x00000888
- adds r0, r4, r1
- adds r1, r4, 0
- movs r2, 0
- bl sub_81C8E54
- b _081C8A20
- .pool
-_081C89D0:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81C8DBC
- b _081C8A20
-_081C89DA:
- ldr r1, =0x00000888
- adds r0, r4, r1
- adds r1, r4, 0
- movs r2, 0x1
- bl sub_81C8E54
- b _081C8A20
- .pool
-_081C89EC:
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_81C8DBC
- b _081C8A20
-_081C89F6:
- ldr r1, =0x00000888
- adds r0, r4, r1
- adds r1, r4, 0
- movs r2, 0x2
- bl sub_81C8E54
- b _081C8A20
- .pool
-_081C8A08:
- ldr r1, =0x00000888
- adds r0, r4, r1
- adds r1, r4, 0
- movs r2, 0x3
- bl sub_81C8E54
- b _081C8A20
- .pool
-_081C8A1C:
- movs r0, 0x4
- b _081C8A22
-_081C8A20:
- movs r0, 0
-_081C8A22:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81C8958
-
- thumb_func_start sub_81C8A28
-sub_81C8A28: @ 81C8A28
- push {r4-r7,lr}
- sub sp, 0x8
- adds r5, r0, 0
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081C8AA6
- movs r0, 0x11
- bl GetSubstructPtr
- adds r4, r0, 0
- ldr r0, =0x00000888
- adds r6, r4, r0
- adds r2, r4, 0
- cmp r5, 0x6
- bls _081C8A4C
- b _081C8B64
-_081C8A4C:
- lsls r0, r5, 2
- ldr r1, =_081C8A60
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081C8A60:
- .4byte _081C8A7C
- .4byte _081C8A88
- .4byte _081C8AE8
- .4byte _081C8AFC
- .4byte _081C8B14
- .4byte _081C8B34
- .4byte _081C8B5C
-_081C8A7C:
- adds r0, r6, 0
- adds r1, r2, 0
- bl sub_81C8D4C
- movs r0, 0
- b _081C8B66
-_081C8A88:
- ldr r1, =0x0000089c
- adds r7, r4, r1
- ldr r0, [r7]
- adds r1, r0, 0x1
- str r1, [r7]
- movs r3, 0x89
- lsls r3, 4
- adds r0, r4, r3
- ldrh r0, [r0]
- cmp r1, r0
- bge _081C8AB0
- adds r0, r2, 0
- movs r2, 0x1
- bl sub_81C8B70
-_081C8AA6:
- movs r0, 0x2
- b _081C8B66
- .pool
-_081C8AB0:
- movs r0, 0
- str r0, [r7]
- ldrh r0, [r6, 0x2]
- ldrh r1, [r6, 0x8]
- cmp r0, r1
- bhi _081C8AC6
- ldrh r0, [r6]
- cmp r0, 0
- beq _081C8B52
- adds r4, r0, 0
- b _081C8AD4
-_081C8AC6:
- ldrh r1, [r6]
- ldrh r0, [r6, 0x8]
- adds r4, r1, r0
- ldrh r1, [r6, 0x2]
- cmp r4, r1
- ble _081C8B52
- subs r4, r1
-_081C8AD4:
- negs r5, r4
- adds r0, r2, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_81C8B70
- strh r4, [r6, 0x6]
- str r5, [r7]
- movs r0, 0
- b _081C8B66
-_081C8AE8:
- ldr r2, =0x0000089c
- adds r0, r4, r2
- ldr r0, [r0]
- movs r1, 0
- bl sub_81C84E8
- movs r0, 0
- b _081C8B66
- .pool
-_081C8AFC:
- bl sub_81C8630
- adds r1, r0, 0
- cmp r1, 0
- bne _081C8AA6
- ldr r3, =0x0000089c
- adds r0, r4, r3
- str r1, [r0]
-_081C8B0C:
- movs r0, 0x1
- b _081C8B66
- .pool
-_081C8B14:
- ldr r0, [r6, 0x10]
- ldrh r1, [r6]
- ldr r3, =0x0000089c
- adds r2, r4, r3
- ldr r2, [r2]
- adds r1, r2
- ldr r3, [r6, 0xC]
- str r2, [sp]
- str r4, [sp, 0x4]
- movs r2, 0x1
- bl sub_81C83AC
- movs r0, 0
- b _081C8B66
- .pool
-_081C8B34:
- bl sub_81C83E0
- cmp r0, 0
- bne _081C8AA6
- ldr r0, =0x0000089c
- adds r1, r4, r0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldrh r1, [r6, 0x2]
- cmp r0, r1
- bge _081C8B0C
- ldrh r6, [r6, 0x8]
- cmp r0, r6
- bge _081C8B0C
-_081C8B52:
- movs r0, 0x9
- b _081C8B66
- .pool
-_081C8B5C:
- adds r0, r2, 0
- movs r1, 0
- bl sub_81C9008
-_081C8B64:
- movs r0, 0x4
-_081C8B66:
- add sp, 0x8
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81C8A28
-
- thumb_func_start sub_81C8B70
-sub_81C8B70: @ 81C8B70
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- mov r9, r0
- adds r7, r1, 0
- adds r6, r2, 0
- ldrb r0, [r0, 0x8]
- movs r1, 0x7
- bl GetWindowAttribute
- mov r10, r0
- mov r1, r9
- ldrb r0, [r1, 0x4]
- lsls r3, r0, 6
- ldrh r0, [r1, 0xA]
- adds r7, r0, r7
- movs r0, 0xF
- ands r7, r0
- adds r0, r7, r6
- cmp r0, 0x10
- bgt _081C8BD4
- ldr r0, =0x11111111
- str r0, [sp]
- adds r1, r7, 0
- muls r1, r3
- add r1, r10
- adds r2, r6, 0
- muls r2, r3
- lsrs r2, 2
- ldr r0, =0x001fffff
- ands r2, r0
- movs r0, 0x80
- lsls r0, 17
- orrs r2, r0
- mov r0, sp
- bl CpuFastSet
- mov r1, r9
- ldrb r0, [r1, 0x8]
- movs r1, 0x2
- bl CopyWindowToVram
- b _081C8C1E
- .pool
-_081C8BD4:
- movs r2, 0x10
- subs r2, r7
- subs r0, r6, r2
- mov r8, r0
- ldr r1, =0x11111111
- str r1, [sp, 0x4]
- add r0, sp, 0x4
- adds r1, r7, 0
- muls r1, r3
- add r1, r10
- muls r2, r3
- lsrs r2, 2
- ldr r5, =0x001fffff
- ands r2, r5
- movs r4, 0x80
- lsls r4, 17
- orrs r2, r4
- str r3, [sp, 0xC]
- bl CpuFastSet
- ldr r0, =0x11111111
- str r0, [sp, 0x8]
- add r0, sp, 0x8
- ldr r3, [sp, 0xC]
- mov r2, r8
- muls r2, r3
- lsrs r2, 2
- ands r2, r5
- orrs r2, r4
- mov r1, r10
- bl CpuFastSet
- mov r1, r9
- ldrb r0, [r1, 0x8]
- movs r1, 0x2
- bl CopyWindowToVram
-_081C8C1E:
- subs r6, 0x1
- movs r0, 0x1
- negs r0, r0
- cmp r6, r0
- beq _081C8C40
- movs r5, 0xF
- adds r4, r0, 0
-_081C8C2C:
- mov r1, r9
- ldrh r0, [r1, 0x8]
- adds r1, r7, 0
- bl sub_81CBD48
- adds r7, 0x1
- ands r7, r5
- subs r6, 0x1
- cmp r6, r4
- bne _081C8C2C
-_081C8C40:
- mov r1, r9
- ldrb r0, [r1, 0x8]
- movs r1, 0x1
- bl CopyWindowToVram
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C8B70
-
- thumb_func_start sub_81C8C64
-sub_81C8C64: @ 81C8C64
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- ldrb r0, [r5, 0x8]
- movs r1, 0
- bl GetWindowAttribute
- lsls r0, 24
- lsrs r0, 24
- bl GetBgTilemapBuffer
- adds r2, r0, 0
- ldrh r0, [r5, 0xA]
- lsls r0, 6
- ldrb r1, [r5, 0x2]
- adds r0, r1
- lsls r0, 1
- subs r0, 0x2
- adds r2, r0
- cmp r4, 0
- beq _081C8C98
- ldrb r0, [r5, 0x1]
- lsls r0, 12
- ldrh r1, [r5, 0x6]
- adds r1, 0x1
- b _081C8C9E
-_081C8C98:
- ldrb r0, [r5, 0x1]
- lsls r0, 12
- ldrh r1, [r5, 0x6]
-_081C8C9E:
- orrs r0, r1
- lsls r0, 16
- lsrs r1, r0, 16
- strh r1, [r2]
- adds r0, r2, 0
- adds r0, 0x40
- strh r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81C8C64
-
- thumb_func_start sub_81C8CB4
-sub_81C8CB4: @ 81C8CB4
- push {r4-r6,lr}
- sub sp, 0x10
- adds r5, r0, 0
- adds r4, r1, 0
- ldr r1, =gUnknown_0861FBE4
- add r0, sp, 0xC
- movs r2, 0x3
- bl memcpy
- ldrh r1, [r5]
- ldr r0, [r5, 0xC]
- muls r1, r0
- ldr r0, [r5, 0x10]
- adds r0, r1
- adds r6, r4, 0
- adds r6, 0x48
- ldr r2, [r4, 0x34]
- adds r1, r6, 0
- bl _call_via_r2
- ldrh r0, [r4, 0x8]
- ldrh r1, [r5]
- ldrh r2, [r4, 0xA]
- ldr r3, [r4, 0x38]
- bl _call_via_r3
- ldrb r0, [r4, 0x8]
- ldrh r3, [r4, 0xA]
- lsls r3, 20
- lsrs r3, 16
- ldrb r1, [r4, 0x4]
- lsls r1, 3
- str r1, [sp]
- movs r1, 0x10
- str r1, [sp, 0x4]
- movs r1, 0x44
- movs r2, 0
- bl FillWindowPixelRect
- ldrb r0, [r4, 0x8]
- ldrb r1, [r4, 0x5]
- ldrh r3, [r4, 0xA]
- lsls r3, 4
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- add r2, sp, 0xC
- str r2, [sp]
- movs r2, 0x1
- negs r2, r2
- str r2, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r2, 0x8
- bl AddTextPrinterParameterized3
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81C8C64
- ldrh r0, [r4, 0x8]
- ldrh r3, [r4, 0xA]
- lsls r3, 1
- ldrb r1, [r4, 0x4]
- str r1, [sp]
- movs r1, 0x2
- str r1, [sp, 0x4]
- movs r1, 0x3
- movs r2, 0
- bl CopyWindowRectToVram
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C8CB4
-
- thumb_func_start sub_81C8D4C
-sub_81C8D4C: @ 81C8D4C
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r1, 0
- ldrh r2, [r0]
- ldr r1, [r0, 0xC]
- muls r1, r2
- ldr r0, [r0, 0x10]
- adds r0, r1
- adds r5, r4, 0
- adds r5, 0x48
- ldr r2, [r4, 0x34]
- adds r1, r5, 0
- bl _call_via_r2
- ldrb r0, [r4, 0x8]
- ldrh r3, [r4, 0xA]
- lsls r3, 20
- lsrs r3, 16
- ldrb r1, [r4, 0x4]
- lsls r1, 3
- str r1, [sp]
- movs r1, 0x10
- str r1, [sp, 0x4]
- movs r1, 0x11
- movs r2, 0
- bl FillWindowPixelRect
- ldrb r0, [r4, 0x8]
- ldrb r1, [r4, 0x5]
- ldrh r2, [r4, 0xA]
- lsls r2, 4
- adds r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp]
- movs r2, 0xFF
- str r2, [sp, 0x4]
- movs r2, 0
- str r2, [sp, 0x8]
- adds r2, r5, 0
- movs r3, 0x8
- bl AddTextPrinterParameterized
- adds r0, r4, 0
- movs r1, 0
- bl sub_81C8C64
- ldrb r0, [r4, 0x8]
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81C8D4C
-
- thumb_func_start sub_81C8DBC
-sub_81C8DBC: @ 81C8DBC
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x1C
- adds r6, r0, 0
- mov r8, r1
- add r1, sp, 0xC
- ldr r0, =gUnknown_0861FBE8
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- add r0, sp, 0x18
- mov r9, r0
- ldr r1, =gUnknown_0861FBF4
- movs r2, 0x3
- bl memcpy
- ldrh r4, [r6, 0xA]
- mov r1, r8
- lsls r0, r1, 1
- adds r0, 0x1
- adds r4, r0
- movs r0, 0xF
- ands r4, r0
- ldrb r0, [r6, 0x8]
- lsls r5, r4, 4
- adds r3, r5, 0
- ldrb r1, [r6, 0x4]
- str r1, [sp]
- movs r1, 0x10
- str r1, [sp, 0x4]
- movs r1, 0x11
- movs r2, 0
- bl FillWindowPixelRect
- ldrb r0, [r6, 0x8]
- movs r1, 0x1
- orrs r5, r1
- mov r2, r9
- str r2, [sp]
- subs r1, 0x2
- str r1, [sp, 0x4]
- mov r3, r8
- lsls r3, 2
- mov r8, r3
- mov r1, sp
- add r1, r8
- adds r1, 0xC
- ldr r1, [r1]
- str r1, [sp, 0x8]
- movs r1, 0x7
- movs r2, 0x2
- adds r3, r5, 0
- bl AddTextPrinterParameterized3
- ldrh r0, [r6, 0x8]
- lsls r4, 1
- ldrb r1, [r6, 0x4]
- str r1, [sp]
- movs r1, 0x2
- str r1, [sp, 0x4]
- movs r2, 0
- adds r3, r4, 0
- bl CopyWindowRectToVram
- add sp, 0x1C
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C8DBC
-
- thumb_func_start sub_81C8E54
-sub_81C8E54: @ 81C8E54
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- adds r7, r1, 0
- adds r1, r2, 0
- ldrh r3, [r7, 0xA]
- ldr r2, =gUnknown_0861FBF7
- adds r2, r1, r2
- ldrb r2, [r2]
- adds r6, r3, r2
- movs r2, 0xF
- ands r6, r2
- ldrh r0, [r0]
- bl sub_81CAFD8
- adds r5, r0, 0
- cmp r5, 0
- beq _081C8EC0
- ldrh r0, [r7, 0x8]
- lsls r4, r6, 1
- ldrb r3, [r7, 0x4]
- subs r3, 0x1
- movs r1, 0x2
- mov r8, r1
- str r1, [sp]
- movs r1, 0x1
- adds r2, r4, 0
- bl sub_81DB620
- ldrb r0, [r7, 0x8]
- lsls r1, r6, 4
- movs r2, 0x1
- orrs r1, r2
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x7
- adds r2, r5, 0
- movs r3, 0x2
- bl AddTextPrinterParameterized
- ldrh r0, [r7, 0x8]
- ldrb r1, [r7, 0x4]
- str r1, [sp]
- mov r1, r8
- str r1, [sp, 0x4]
- movs r1, 0x2
- movs r2, 0
- adds r3, r4, 0
- bl CopyWindowRectToVram
-_081C8EC0:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C8E54
-
- thumb_func_start sub_81C8ED0
-sub_81C8ED0: @ 81C8ED0
- push {r4,r5,lr}
- movs r5, 0
- ldr r4, =gUnknown_0861FBFC
-_081C8ED6:
- adds r0, r4, 0
- bl LoadCompressedSpriteSheet
- adds r4, 0x8
- adds r5, 0x1
- cmp r5, 0
- beq _081C8ED6
- ldr r0, =gUnknown_0861FC04
- bl sub_81C795C
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C8ED0
-
- thumb_func_start sub_81C8EF8
-sub_81C8EF8: @ 81C8EF8
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r0, =gUnknown_0861FC1C
- ldrb r1, [r5, 0x2]
- lsls r1, 3
- adds r1, 0x3
- ldrb r2, [r5, 0x3]
- adds r2, 0x1
- lsls r2, 3
- movs r3, 0x7
- bl CreateSprite
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 4
- adds r0, r3
- lsls r0, 2
- ldr r1, =gSprites
- mov r8, r1
- add r0, r8
- str r0, [r5, 0x3C]
- ldrb r6, [r5, 0x2]
- lsls r6, 3
- ldrb r0, [r5, 0x4]
- subs r0, 0x1
- lsls r0, 2
- ldr r3, =gUnknown_0861FC3C
- mov r10, r3
- adds r6, r0
- ldrb r2, [r5, 0x3]
- lsls r2, 3
- ldrh r0, [r4, 0x8]
- lsls r0, 4
- adds r2, r0
- lsls r2, 16
- asrs r2, 16
- mov r0, r10
- adds r1, r6, 0
- movs r3, 0x7
- bl CreateSprite
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r2, r3, 4
- adds r2, r3
- lsls r2, 2
- add r2, r8
- str r2, [r5, 0x44]
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x2
- ldr r0, =0x000003ff
- mov r9, r0
- mov r0, r9
- ands r1, r0
- ldr r4, =0xfffffc00
- adds r0, r4, 0
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x4]
- ldr r1, [r5, 0x44]
- ldr r0, =sub_81C90A0
- str r0, [r1, 0x1C]
- ldrb r2, [r5, 0x3]
- lsls r2, 3
- mov r0, r10
- adds r1, r6, 0
- movs r3, 0x7
- bl CreateSprite
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- add r1, r8
- str r1, [r5, 0x40]
- ldrh r2, [r1, 0x4]
- lsls r0, r2, 22
- lsrs r0, 22
- adds r0, 0x4
- mov r3, r9
- ands r0, r3
- ands r4, r2
- orrs r4, r0
- strh r4, [r1, 0x4]
- ldr r1, [r5, 0x40]
- ldr r0, =sub_81C90F4
- str r0, [r1, 0x1C]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C8EF8
-
- thumb_func_start sub_81C8FE0
-sub_81C8FE0: @ 81C8FE0
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x3C]
- bl DestroySprite
- ldr r0, [r4, 0x40]
- bl DestroySprite
- ldr r0, [r4, 0x44]
- bl DestroySprite
- movs r0, 0xA
- bl FreeSpriteTilesByTag
- movs r0, 0x14
- bl FreeSpritePaletteByTag
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81C8FE0
-
- thumb_func_start sub_81C9008
-sub_81C9008: @ 81C9008
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- cmp r4, 0
- beq _081C9028
- ldr r2, [r5, 0x3C]
- ldr r1, =SpriteCallbackDummy
- str r1, [r2, 0x1C]
- ldr r0, [r5, 0x40]
- str r1, [r0, 0x1C]
- ldr r0, [r5, 0x44]
- str r1, [r0, 0x1C]
- b _081C903A
- .pool
-_081C9028:
- ldr r2, [r5, 0x3C]
- ldr r0, =sub_81C9080
- str r0, [r2, 0x1C]
- ldr r1, [r5, 0x40]
- ldr r0, =sub_81C90F4
- str r0, [r1, 0x1C]
- ldr r1, [r5, 0x44]
- ldr r0, =sub_81C90A0
- str r0, [r1, 0x1C]
-_081C903A:
- adds r3, r2, 0
- adds r3, 0x3E
- movs r0, 0x1
- ands r4, r0
- lsls r4, 2
- ldrb r2, [r3]
- movs r1, 0x5
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- orrs r0, r4
- strb r0, [r3]
- ldr r2, [r5, 0x40]
- adds r2, 0x3E
- ldrb r3, [r2]
- adds r0, r1, 0
- ands r0, r3
- orrs r0, r4
- strb r0, [r2]
- ldr r0, [r5, 0x44]
- adds r0, 0x3E
- ldrb r2, [r0]
- ands r1, r2
- orrs r1, r4
- strb r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C9008
-
- thumb_func_start sub_81C9080
-sub_81C9080: @ 81C9080
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x11
- bl GetSubstructPtr
- ldr r1, =0x0000088e
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 4
- strh r0, [r4, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C9080
-
- thumb_func_start sub_81C90A0
-sub_81C90A0: @ 81C90A0
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _081C90C2
- bl sub_81C84C0
- cmp r0, 0
- beq _081C90C2
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- b _081C90CC
-_081C90C2:
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
-_081C90CC:
- strb r0, [r2]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _081C90EC
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- movs r1, 0x7
- ands r0, r1
- strh r0, [r4, 0x30]
- strh r0, [r4, 0x26]
-_081C90EC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81C90A0
-
- thumb_func_start sub_81C90F4
-sub_81C90F4: @ 81C90F4
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _081C9116
- bl sub_81C84A4
- cmp r0, 0
- beq _081C9116
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- b _081C9120
-_081C9116:
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
-_081C9120:
- strb r0, [r2]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _081C9142
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- movs r1, 0x7
- ands r0, r1
- strh r0, [r4, 0x30]
- negs r0, r0
- strh r0, [r4, 0x26]
-_081C9142:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81C90F4
-
- thumb_func_start sub_81C9148
-sub_81C9148: @ 81C9148
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x11
- bl GetSubstructPtr
- ldr r1, [r0, 0x40]
- strh r4, [r1, 0x3C]
- ldr r0, [r0, 0x44]
- strh r4, [r0, 0x3C]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81C9148
-
- thumb_func_start sub_81C9160
-sub_81C9160: @ 81C9160
- push {r4,r5,lr}
- adds r2, r0, 0
- ldr r0, [r1]
- str r0, [r2, 0x10]
- ldrh r4, [r1, 0x6]
- movs r5, 0
- strh r4, [r2]
- ldrh r3, [r1, 0x4]
- strh r3, [r2, 0x2]
- ldrb r0, [r1, 0x8]
- str r0, [r2, 0xC]
- ldrb r1, [r1, 0xC]
- strh r1, [r2, 0x8]
- lsls r0, r3, 16
- lsrs r0, 16
- cmp r1, r0
- bcc _081C918A
- strh r5, [r2]
- strh r5, [r2, 0x4]
- strh r4, [r2, 0x6]
- b _081C91A6
-_081C918A:
- subs r0, r3, r1
- strh r0, [r2, 0x4]
- ldrh r1, [r2]
- ldrh r0, [r2, 0x8]
- adds r1, r0
- ldrh r0, [r2, 0x2]
- cmp r1, r0
- ble _081C91A4
- subs r0, r1, r0
- strh r0, [r2, 0x6]
- subs r0, r4, r0
- strh r0, [r2]
- b _081C91A6
-_081C91A4:
- strh r5, [r2, 0x6]
-_081C91A6:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81C9160
-
- thumb_func_start sub_81C91AC
-sub_81C91AC: @ 81C91AC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- adds r7, r0, 0
- ldr r4, [r1]
- lsls r4, 30
- lsrs r0, r4, 30
- movs r1, 0
- mov r9, r1
- strb r0, [r7]
- strh r3, [r7, 0x6]
- ldr r0, [r2, 0x10]
- str r0, [r7, 0x34]
- ldr r0, [r2, 0x14]
- str r0, [r7, 0x38]
- ldrb r6, [r2, 0xD]
- strb r6, [r7, 0x1]
- ldrb r1, [r2, 0x9]
- strb r1, [r7, 0x2]
- ldrb r0, [r2, 0xB]
- strb r0, [r7, 0x3]
- ldrb r5, [r2, 0xA]
- strb r5, [r7, 0x4]
- ldrb r0, [r2, 0xE]
- strb r0, [r7, 0x5]
- lsrs r4, 30
- ldr r2, =0xffffff00
- mov r8, r2
- ldr r0, [sp]
- ands r0, r2
- orrs r0, r4
- lsls r1, 24
- lsrs r1, 16
- ldr r2, =0xffff00ff
- ands r0, r2
- orrs r0, r1
- ldr r1, =0xff00ffff
- ands r0, r1
- lsls r5, 24
- ldr r1, =0x00ffffff
- ands r0, r1
- orrs r0, r5
- str r0, [sp]
- ldr r0, [sp, 0x4]
- mov r1, r8
- ands r0, r1
- movs r1, 0x20
- orrs r0, r1
- lsls r6, 24
- lsrs r6, 16
- ands r0, r2
- orrs r0, r6
- adds r3, 0x2
- lsls r3, 16
- ldr r1, =0x0000ffff
- ands r0, r1
- orrs r0, r3
- str r0, [sp, 0x4]
- mov r0, sp
- bl AddWindow
- strh r0, [r7, 0x8]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xFF
- beq _081C9258
- mov r2, r9
- strh r2, [r7, 0xA]
- mov r0, r9
- str r0, [r7, 0x3C]
- str r0, [r7, 0x40]
- str r0, [r7, 0x44]
- movs r0, 0x1
- b _081C925A
- .pool
-_081C9258:
- movs r0, 0
-_081C925A:
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81C91AC
-
- thumb_func_start sub_81C9268
-sub_81C9268: @ 81C9268
- push {r4,lr}
- movs r4, 0
- movs r0, 0x98
- lsls r0, 1
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _081C928A
- movs r4, 0x1
- ldr r0, =0x0000089b
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _081C928A
- movs r4, 0x2
-_081C928A:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81C9268
-
- thumb_func_start sub_81C9298
-sub_81C9298: @ 81C9298
- push {r4,lr}
- movs r0, 0x1
- movs r1, 0x10
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081C92C4
- bl sub_81C9268
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- strh r0, [r4]
- strh r1, [r4, 0x2]
- strh r1, [r4, 0x4]
- strh r1, [r4, 0x6]
- adds r0, r4, 0
- bl sub_81C939C
- movs r0, 0x1
- b _081C92C6
-_081C92C4:
- movs r0, 0
-_081C92C6:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81C9298
-
- thumb_func_start sub_81C92CC
-sub_81C92CC: @ 81C92CC
- push {r4,lr}
- movs r0, 0x1
- movs r1, 0x10
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081C92FA
- bl sub_81C9268
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- strh r0, [r4]
- movs r0, 0x2
- strh r0, [r4, 0x2]
- strh r0, [r4, 0x4]
- strh r1, [r4, 0x6]
- adds r0, r4, 0
- bl sub_81C939C
- movs r0, 0x1
- b _081C92FC
-_081C92FA:
- movs r0, 0
-_081C92FC:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81C92CC
-
- thumb_func_start sub_81C9304
-sub_81C9304: @ 81C9304
- push {r4,lr}
- movs r0, 0x1
- movs r1, 0x10
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081C932E
- bl sub_81C9268
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0x3
- strh r0, [r4, 0x2]
- strh r0, [r4, 0x4]
- adds r0, r4, 0
- bl sub_81C939C
- movs r0, 0x1
- b _081C9330
-_081C932E:
- movs r0, 0
-_081C9330:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81C9304
-
- thumb_func_start sub_81C9338
-sub_81C9338: @ 81C9338
- push {lr}
- movs r0, 0x1
- movs r1, 0x10
- bl AllocSubstruct
- adds r2, r0, 0
- cmp r2, 0
- beq _081C9360
- movs r0, 0
- movs r1, 0x3
- strh r1, [r2]
- strh r0, [r2, 0x2]
- movs r1, 0x5
- strh r1, [r2, 0x4]
- strh r0, [r2, 0x6]
- adds r0, r2, 0
- bl sub_81C939C
- movs r0, 0x1
- b _081C9362
-_081C9360:
- movs r0, 0
-_081C9362:
- pop {r1}
- bx r1
- thumb_func_end sub_81C9338
-
- thumb_func_start sub_81C9368
-sub_81C9368: @ 81C9368
- push {r4,r5,lr}
- movs r0, 0x1
- movs r1, 0x10
- bl AllocSubstruct
- adds r5, r0, 0
- cmp r5, 0
- beq _081C9394
- movs r4, 0
- movs r0, 0x4
- strh r0, [r5]
- bl sub_81C76AC
- strh r0, [r5, 0x2]
- adds r0, 0x8
- strh r0, [r5, 0x4]
- strh r4, [r5, 0x6]
- adds r0, r5, 0
- bl sub_81C939C
- movs r0, 0x1
- b _081C9396
-_081C9394:
- movs r0, 0
-_081C9396:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81C9368
-
- thumb_func_start sub_81C939C
-sub_81C939C: @ 81C939C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4]
- cmp r0, 0x4
- bhi _081C93E0
- lsls r0, 2
- ldr r1, =_081C93B4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081C93B4:
- .4byte _081C93C8
- .4byte _081C93CE
- .4byte _081C93CE
- .4byte _081C93D4
- .4byte _081C93DC
-_081C93C8:
- movs r0, 0
- bl SetPokenavMode
-_081C93CE:
- bl sub_81C93EC
- b _081C93DE
-_081C93D4:
- ldr r0, =sub_81C963C
- b _081C93DE
- .pool
-_081C93DC:
- ldr r0, =sub_81C96FC
-_081C93DE:
- str r0, [r4, 0xC]
-_081C93E0:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C939C
-
- thumb_func_start sub_81C93EC
-sub_81C93EC: @ 81C93EC
- push {lr}
- bl GetPokenavMode
- cmp r0, 0x1
- beq _081C9408
- cmp r0, 0x1
- bcc _081C93FE
- cmp r0, 0x2
- beq _081C9410
-_081C93FE:
- ldr r0, =sub_81C943C
- b _081C9412
- .pool
-_081C9408:
- ldr r0, =sub_81C9520
- b _081C9412
- .pool
-_081C9410:
- ldr r0, =c2_pre_battle_1
-_081C9412:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81C93EC
-
- thumb_func_start sub_81C941C
-sub_81C941C: @ 81C941C
- push {lr}
- movs r0, 0x1
- bl GetSubstructPtr
- ldr r1, [r0, 0xC]
- bl _call_via_r1
- pop {r1}
- bx r1
- thumb_func_end sub_81C941C
-
- thumb_func_start sub_81C9430
-sub_81C9430: @ 81C9430
- push {lr}
- movs r0, 0x1
- bl FreeSubstruct
- pop {r0}
- bx r0
- thumb_func_end sub_81C9430
-
- thumb_func_start sub_81C943C
-sub_81C943C: @ 81C943C
- push {r4,r5,lr}
- adds r4, r0, 0
- bl sub_81C9814
- cmp r0, 0
- beq _081C944C
- movs r0, 0x1
- b _081C951A
-_081C944C:
- ldr r2, =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- adds r5, r2, 0
- cmp r0, 0
- beq _081C9508
- ldr r3, =gUnknown_0861FC59
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- ldrh r2, [r4]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 1
- adds r1, r0
- adds r1, r3
- ldrb r0, [r1]
- cmp r0, 0x4
- bhi _081C9508
- lsls r0, 2
- ldr r1, =_081C9488
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081C9488:
- .4byte _081C949C
- .4byte _081C94BC
- .4byte _081C94D4
- .4byte _081C94E0
- .4byte _081C9516
-_081C949C:
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r1, [r0, 0x15]
- movs r0, 0x8
- ands r0, r1
- movs r1, 0x1
- cmp r0, 0
- beq _081C94AE
- movs r1, 0x2
-_081C94AE:
- strh r1, [r4, 0x6]
- ldr r1, =0x000186a6
- b _081C94EE
- .pool
-_081C94BC:
- movs r1, 0
- movs r0, 0x3
- strh r0, [r4]
- strh r1, [r4, 0x2]
- ldrb r0, [r3, 0x12]
- strh r0, [r4, 0x4]
- ldr r0, =sub_81C963C
- str r0, [r4, 0xC]
- movs r0, 0x2
- b _081C951A
- .pool
-_081C94D4:
- movs r0, 0x6
- strh r0, [r4, 0x6]
- ldr r1, =0x000186ab
- b _081C94EE
- .pool
-_081C94E0:
- bl CanViewRibbonsMenu
- cmp r0, 0
- beq _081C94FC
- movs r0, 0x9
- strh r0, [r4, 0x6]
- ldr r1, =0x000186ac
-_081C94EE:
- adds r0, r4, 0
- bl sub_81C97B0
- movs r0, 0x8
- b _081C951A
- .pool
-_081C94FC:
- ldr r0, =sub_81C9600
- str r0, [r4, 0xC]
- movs r0, 0x6
- b _081C951A
- .pool
-_081C9508:
- ldrh r1, [r5, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _081C9516
- movs r0, 0
- b _081C951A
-_081C9516:
- movs r0, 0x1
- negs r0, r0
-_081C951A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81C943C
-
- thumb_func_start sub_81C9520
-sub_81C9520: @ 81C9520
- push {r4,lr}
- adds r4, r0, 0
- bl sub_81C9814
- cmp r0, 0
- beq _081C9530
- movs r0, 0x1
- b _081C9580
-_081C9530:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081C9570
- ldr r3, =gUnknown_0861FC59
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- ldrh r2, [r4]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 1
- adds r1, r0
- adds r1, r3
- ldrb r0, [r1]
- cmp r0, 0x2
- bne _081C9578
- movs r0, 0x6
- strh r0, [r4, 0x6]
- ldr r1, =0x000186ab
- adds r0, r4, 0
- bl sub_81C97B0
- movs r0, 0x8
- b _081C9580
- .pool
-_081C9570:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081C957E
-_081C9578:
- movs r0, 0x20
- bl PlaySE
-_081C957E:
- movs r0, 0
-_081C9580:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81C9520
-
- thumb_func_start c2_pre_battle_1
-c2_pre_battle_1: @ 81C9588
- push {r4,lr}
- adds r4, r0, 0
- bl sub_81C9814
- cmp r0, 0
- beq _081C9598
- movs r0, 0x1
- b _081C95F8
-_081C9598:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081C95E8
- ldr r3, =gUnknown_0861FC59
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- ldrh r2, [r4]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 1
- adds r1, r0
- adds r1, r3
- ldrb r0, [r1]
- cmp r0, 0x2
- beq _081C95D4
- cmp r0, 0x4
- beq _081C95F4
- movs r0, 0x20
- bl PlaySE
- movs r0, 0
- b _081C95F8
- .pool
-_081C95D4:
- movs r0, 0x6
- strh r0, [r4, 0x6]
- ldr r1, =0x000186ab
- adds r0, r4, 0
- bl sub_81C97B0
- movs r0, 0x8
- b _081C95F8
- .pool
-_081C95E8:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _081C95F4
- movs r0, 0
- b _081C95F8
-_081C95F4:
- movs r0, 0x1
- negs r0, r0
-_081C95F8:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end c2_pre_battle_1
-
- thumb_func_start sub_81C9600
-sub_81C9600: @ 81C9600
- push {r4,lr}
- adds r4, r0, 0
- bl sub_81C9814
- cmp r0, 0
- beq _081C9616
- bl sub_81C93EC
- str r0, [r4, 0xC]
- movs r0, 0x1
- b _081C9634
-_081C9616:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _081C962C
- movs r0, 0
- b _081C9634
- .pool
-_081C962C:
- bl sub_81C93EC
- str r0, [r4, 0xC]
- movs r0, 0x7
-_081C9634:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81C9600
-
- thumb_func_start sub_81C963C
-sub_81C963C: @ 81C963C
- push {r4-r6,lr}
- adds r4, r0, 0
- bl sub_81C9814
- adds r3, r0, 0
- cmp r3, 0
- beq _081C964E
- movs r0, 0x1
- b _081C96F6
-_081C964E:
- ldr r2, =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- adds r6, r2, 0
- cmp r0, 0
- beq _081C96B8
- ldr r5, =gUnknown_0861FC59
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- ldrh r2, [r4]
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 1
- adds r0, r1
- adds r0, r5
- ldrb r0, [r0]
- cmp r0, 0x6
- beq _081C968E
- cmp r0, 0x6
- bgt _081C9688
- cmp r0, 0x5
- beq _081C96A4
- b _081C96B8
- .pool
-_081C9688:
- cmp r0, 0x7
- beq _081C96E4
- b _081C96B8
-_081C968E:
- movs r0, 0x4
- strh r0, [r4]
- strh r3, [r4, 0x2]
- ldrb r0, [r5, 0x18]
- strh r0, [r4, 0x4]
- ldr r0, =sub_81C96FC
- str r0, [r4, 0xC]
- movs r0, 0x4
- b _081C96F6
- .pool
-_081C96A4:
- strh r3, [r4, 0x6]
- ldr r1, =0x000186a7
- adds r0, r4, 0
- bl sub_81C97B0
- movs r0, 0x8
- b _081C96F6
- .pool
-_081C96B8:
- ldrh r1, [r6, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081C96F4
- movs r0, 0x2
- ldrsh r2, [r4, r0]
- ldr r1, =gUnknown_0861FC54
- ldrh r0, [r4]
- adds r0, r1
- ldrb r0, [r0]
- cmp r2, r0
- beq _081C96E4
- strh r0, [r4, 0x2]
- ldr r0, =sub_81C9798
- str r0, [r4, 0xC]
- movs r0, 0x1
- b _081C96F6
- .pool
-_081C96E4:
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_81C97C0
- movs r0, 0x3
- b _081C96F6
-_081C96F4:
- movs r0, 0
-_081C96F6:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81C963C
-
- thumb_func_start sub_81C96FC
-sub_81C96FC: @ 81C96FC
- push {r4,lr}
- adds r4, r0, 0
- bl sub_81C9814
- cmp r0, 0
- beq _081C970C
- movs r0, 0x1
- b _081C9792
-_081C970C:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081C9754
- ldr r3, =gUnknown_0861FC59
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- ldrh r2, [r4]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 1
- adds r1, r0
- adds r1, r3
- ldrb r0, [r1]
- cmp r0, 0xD
- beq _081C9780
- subs r0, 0x8
- bl sub_81C7694
- ldr r1, =0x000186a8
- adds r0, r4, 0
- bl sub_81C97B0
- movs r0, 0x3
- strh r0, [r4, 0x6]
- movs r0, 0x8
- b _081C9792
- .pool
-_081C9754:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081C9790
- movs r0, 0x2
- ldrsh r2, [r4, r0]
- ldr r1, =gUnknown_0861FC54
- ldrh r0, [r4]
- adds r0, r1
- ldrb r0, [r0]
- cmp r2, r0
- beq _081C9780
- strh r0, [r4, 0x2]
- ldr r0, =sub_81C97A4
- str r0, [r4, 0xC]
- movs r0, 0x1
- b _081C9792
- .pool
-_081C9780:
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_81C97F8
- movs r0, 0x5
- b _081C9792
-_081C9790:
- movs r0, 0
-_081C9792:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81C96FC
-
- thumb_func_start sub_81C9798
-sub_81C9798: @ 81C9798
- push {lr}
- bl sub_81C97C0
- movs r0, 0x3
- pop {r1}
- bx r1
- thumb_func_end sub_81C9798
-
- thumb_func_start sub_81C97A4
-sub_81C97A4: @ 81C97A4
- push {lr}
- bl sub_81C97F8
- movs r0, 0x5
- pop {r1}
- bx r1
- thumb_func_end sub_81C97A4
-
- thumb_func_start sub_81C97B0
-sub_81C97B0: @ 81C97B0
- str r1, [r0, 0x8]
- ldr r1, =sub_81C97BC
- str r1, [r0, 0xC]
- bx lr
- .pool
- thumb_func_end sub_81C97B0
-
- thumb_func_start sub_81C97BC
-sub_81C97BC: @ 81C97BC
- ldr r0, [r0, 0x8]
- bx lr
- thumb_func_end sub_81C97BC
-
- thumb_func_start sub_81C97C0
-sub_81C97C0: @ 81C97C0
- push {r4,lr}
- adds r4, r0, 0
- bl sub_81C9268
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0x1
- strh r0, [r4, 0x2]
- ldr r2, =gUnknown_0861FC59
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 1
- adds r0, 0x1
- adds r0, r2
- ldrb r0, [r0]
- strh r0, [r4, 0x4]
- ldr r0, =sub_81C943C
- str r0, [r4, 0xC]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C97C0
-
- thumb_func_start sub_81C97F8
-sub_81C97F8: @ 81C97F8
- movs r1, 0x3
- strh r1, [r0]
- movs r1, 0x1
- strh r1, [r0, 0x2]
- ldr r1, =gUnknown_0861FC59
- ldrb r1, [r1, 0x13]
- strh r1, [r0, 0x4]
- ldr r1, =sub_81C963C
- str r1, [r0, 0xC]
- bx lr
- .pool
- thumb_func_end sub_81C97F8
-
- thumb_func_start sub_81C9814
-sub_81C9814: @ 81C9814
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- beq _081C9848
- ldrh r0, [r4, 0x2]
- subs r0, 0x1
- strh r0, [r4, 0x2]
- lsls r0, 16
- ldrh r3, [r4]
- cmp r0, 0
- bge _081C986A
- ldr r0, =gUnknown_0861FC54
- adds r0, r3, r0
- ldrb r0, [r0]
- strh r0, [r4, 0x2]
- b _081C986A
- .pool
-_081C9848:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081C988C
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
- movs r0, 0x2
- ldrsh r2, [r4, r0]
- ldr r0, =gUnknown_0861FC54
- ldrh r1, [r4]
- adds r0, r1, r0
- adds r3, r1, 0
- ldrb r0, [r0]
- cmp r2, r0
- ble _081C986A
- strh r5, [r4, 0x2]
-_081C986A:
- ldr r2, =gUnknown_0861FC59
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 1
- adds r1, r0
- adds r1, r2
- ldrb r0, [r1]
- strh r0, [r4, 0x4]
- movs r0, 0x1
- b _081C988E
- .pool
-_081C988C:
- movs r0, 0
-_081C988E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81C9814
-
- thumb_func_start sub_81C9894
-sub_81C9894: @ 81C9894
- push {lr}
- movs r0, 0x1
- bl GetSubstructPtr
- ldrh r0, [r0]
- pop {r1}
- bx r1
- thumb_func_end sub_81C9894
-
- thumb_func_start sub_81C98A4
-sub_81C98A4: @ 81C98A4
- push {lr}
- movs r0, 0x1
- bl GetSubstructPtr
- movs r1, 0x2
- ldrsh r0, [r0, r1]
- pop {r1}
- bx r1
- thumb_func_end sub_81C98A4
-
- thumb_func_start sub_81C98B4
-sub_81C98B4: @ 81C98B4
- push {lr}
- movs r0, 0x1
- bl GetSubstructPtr
- ldrh r0, [r0, 0x4]
- pop {r1}
- bx r1
- thumb_func_end sub_81C98B4
-
- thumb_func_start sub_81C98C4
-sub_81C98C4: @ 81C98C4
- push {lr}
- movs r0, 0x1
- bl GetSubstructPtr
- ldrh r0, [r0, 0x6]
- pop {r1}
- bx r1
- thumb_func_end sub_81C98C4
-
- thumb_func_start sub_81C98D4
-sub_81C98D4: @ 81C98D4
- push {r4,lr}
- movs r4, 0
-_081C98D8:
- adds r0, r4, 0
- bl sub_81CB0C8
- ldr r1, =gMapHeader
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1, 0x14]
- cmp r0, r1
- bne _081C9914
- adds r0, r4, 0
- bl sub_81CAE08
- cmp r0, 0
- beq _081C9914
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000009ca
- adds r0, r1
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _081C9914
- movs r0, 0x1
- b _081C991C
- .pool
-_081C9914:
- adds r4, 0x1
- cmp r4, 0x4D
- ble _081C98D8
- movs r0, 0
-_081C991C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81C98D4
-
- thumb_func_start sub_81C9924
-sub_81C9924: @ 81C9924
- push {lr}
- bl sub_81C9958
- adds r1, r0, 0
- cmp r1, 0
- beq _081C9938
- movs r0, 0
- strb r0, [r1, 0xD]
- movs r0, 0x1
- b _081C993A
-_081C9938:
- movs r0, 0
-_081C993A:
- pop {r1}
- bx r1
- thumb_func_end sub_81C9924
-
- thumb_func_start sub_81C9940
-sub_81C9940: @ 81C9940
- push {lr}
- bl sub_81C9958
- adds r1, r0, 0
- cmp r1, 0
- beq _081C9952
- movs r0, 0x1
- strb r0, [r1, 0xD]
- b _081C9954
-_081C9952:
- movs r0, 0
-_081C9954:
- pop {r1}
- bx r1
- thumb_func_end sub_81C9940
-
- thumb_func_start sub_81C9958
-sub_81C9958: @ 81C9958
- push {r4,lr}
- ldr r1, =0x0000088c
- movs r0, 0x2
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081C997A
- movs r0, 0
- strb r0, [r4, 0xC]
- ldr r0, =sub_81C9A10
- movs r1, 0x1
- bl sub_81C7078
- str r0, [r4, 0x4]
- ldr r0, =sub_81C99FC
- str r0, [r4]
-_081C997A:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81C9958
-
- thumb_func_start sub_81C9990
-sub_81C9990: @ 81C9990
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x2
- bl GetSubstructPtr
- adds r5, r0, 0
- ldr r0, =gUnknown_086201A0
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- movs r1, 0x1
- bl sub_81C7078
- str r0, [r5, 0x4]
- ldr r0, =sub_81C99FC
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C9990
-
- thumb_func_start sub_81C99C0
-sub_81C99C0: @ 81C99C0
- push {lr}
- movs r0, 0x2
- bl GetSubstructPtr
- ldr r0, [r0]
- bl _call_via_r0
- pop {r1}
- bx r1
- thumb_func_end sub_81C99C0
-
- thumb_func_start sub_81C99D4
-sub_81C99D4: @ 81C99D4
- push {r4,lr}
- movs r0, 0x2
- bl GetSubstructPtr
- adds r4, r0, 0
- bl sub_81CA7F4
- ldrb r0, [r4, 0x8]
- bl RemoveWindow
- bl sub_81C9FEC
- bl sub_81CA994
- movs r0, 0x2
- bl FreeSubstruct
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81C99D4
-
- thumb_func_start sub_81C99FC
-sub_81C99FC: @ 81C99FC
- push {lr}
- movs r0, 0x2
- bl GetSubstructPtr
- ldr r0, [r0, 0x4]
- bl sub_81C70D8
- pop {r1}
- bx r1
- thumb_func_end sub_81C99FC
-
- thumb_func_start sub_81C9A10
-sub_81C9A10: @ 81C9A10
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r0, 0x2
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x9
- bls _081C9A24
- b _081C9C60
-_081C9A24:
- lsls r0, r4, 2
- ldr r1, =_081C9A34
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081C9A34:
- .4byte _081C9A5C
- .4byte _081C9AEC
- .4byte _081C9B30
- .4byte _081C9B88
- .4byte _081C9B9E
- .4byte _081C9BA4
- .4byte _081C9BB6
- .4byte _081C9BC0
- .4byte _081C9C0E
- .4byte _081C9C4C
-_081C9A5C:
- ldr r0, =gUnknown_08620194
- movs r1, 0x3
- bl InitBgTemplates
- ldr r1, =gPokenavMessageBox_Gfx
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- adds r1, r5, 0
- adds r1, 0x8C
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, =gPokenavMessageBox_Tilemap
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- ldr r0, =gPokenavMessageBox_Pal
- movs r1, 0x10
- movs r2, 0x20
- bl CopyPaletteIntoBufferUnfaded
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
-_081C9AD6:
- movs r0, 0
- b _081C9C62
- .pool
-_081C9AEC:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _081C9AFA
- b _081C9C5C
-_081C9AFA:
- ldr r1, =gUnknown_0861FD6C
- str r0, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, =gUnknown_0861FFF4
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r0, =gUnknown_0861FD4C
- movs r1, 0x20
- movs r2, 0x20
- bl CopyPaletteIntoBufferUnfaded
- b _081C9AD6
- .pool
-_081C9B30:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _081C9B3E
- b _081C9C5C
-_081C9B3E:
- ldr r1, =gUnknown_0861FC98
- str r0, [sp]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, =gUnknown_0861FCAC
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r0, =gUnknown_0861FC78
- movs r1, 0x30
- movs r2, 0x20
- bl CopyPaletteIntoBufferUnfaded
- bl sub_81C9894
- cmp r0, 0x3
- beq _081C9B76
- bl sub_81C9894
- cmp r0, 0x4
- bne _081C9AD6
-_081C9B76:
- bl sub_81CA850
- b _081C9AD6
- .pool
-_081C9B88:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _081C9C5C
- bl sub_81CA6E0
- bl sub_81CA7D4
-_081C9B9A:
- movs r0, 0x1
- b _081C9C62
-_081C9B9E:
- bl sub_81C9FC4
- b _081C9B9A
-_081C9BA4:
- bl sub_81CA714
- bl sub_81CA02C
- bl sub_81CA640
- bl sub_81CA0C8
- b _081C9AD6
-_081C9BB6:
- bl sub_81CA7C4
- cmp r0, 0
- bne _081C9C5C
- b _081C9B9A
-_081C9BC0:
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- ldrb r0, [r5, 0xD]
- cmp r0, 0
- beq _081C9BE0
- movs r0, 0x1
- bl sub_81C7AC0
- b _081C9BEC
-_081C9BE0:
- movs r0, 0x6E
- bl PlaySE
- movs r0, 0x3
- bl sub_81C7AC0
-_081C9BEC:
- bl sub_81C9894
- cmp r0, 0x3
- beq _081C9BFE
- cmp r0, 0x4
- bne _081C9C06
- movs r0, 0x7
- bl sub_81C7DFC
-_081C9BFE:
- movs r0, 0x1
- bl sub_81C7DFC
- b _081C9AD6
-_081C9C06:
- movs r0, 0
- bl sub_81C7DFC
- b _081C9AD6
-_081C9C0E:
- bl IsPaletteFadeActive
- cmp r0, 0
- bne _081C9C5C
- bl sub_81C9894
- cmp r0, 0x3
- beq _081C9C2C
- cmp r0, 0x4
- bne _081C9C38
- movs r0, 0x7
- movs r1, 0
- movs r2, 0
- bl sub_81C7FA0
-_081C9C2C:
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl sub_81C7FA0
- b _081C9C42
-_081C9C38:
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl sub_81C7FA0
-_081C9C42:
- bl sub_81CA20C
- bl titlescreen_0
- b _081C9B9A
-_081C9C4C:
- bl sub_81CA324
- cmp r0, 0
- bne _081C9C5C
- bl sub_81C8010
- cmp r0, 0
- beq _081C9C60
-_081C9C5C:
- movs r0, 0x2
- b _081C9C62
-_081C9C60:
- movs r0, 0x4
-_081C9C62:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81C9A10
-
- thumb_func_start sub_81C9C6C
-sub_81C9C6C: @ 81C9C6C
- push {lr}
- cmp r0, 0
- beq _081C9C78
- cmp r0, 0x1
- beq _081C9C8E
- b _081C9CA2
-_081C9C78:
- bl sub_81CAA3C
- bl sub_81CA278
- bl sub_81CA714
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- b _081C9CA4
-_081C9C8E:
- bl sub_81CA324
- cmp r0, 0
- bne _081C9C9E
- bl sub_81CA7C4
- cmp r0, 0
- beq _081C9CA2
-_081C9C9E:
- movs r0, 0x2
- b _081C9CA4
-_081C9CA2:
- movs r0, 0x4
-_081C9CA4:
- pop {r1}
- bx r1
- thumb_func_end sub_81C9C6C
-
- thumb_func_start sub_81C9CA8
-sub_81C9CA8: @ 81C9CA8
- push {lr}
- cmp r0, 0x1
- beq _081C9CDC
- cmp r0, 0x1
- bgt _081C9CB8
- cmp r0, 0
- beq _081C9CC2
- b _081C9D3C
-_081C9CB8:
- cmp r0, 0x2
- beq _081C9CFA
- cmp r0, 0x3
- beq _081C9D14
- b _081C9D3C
-_081C9CC2:
- bl sub_81CA9C8
- bl sub_81CA2DC
- movs r0, 0
- movs r1, 0
- bl sub_81C7FC4
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- b _081C9D3E
-_081C9CDC:
- bl sub_81CA324
- cmp r0, 0
- bne _081C9D34
- bl sub_81C8010
- cmp r0, 0
- bne _081C9D34
- bl sub_81CA0C8
- movs r0, 0x1
- bl sub_81C7DFC
- movs r0, 0
- b _081C9D3E
-_081C9CFA:
- bl sub_81CA20C
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl sub_81C7FA0
- bl sub_81CA818
- bl sub_81CA714
- movs r0, 0
- b _081C9D3E
-_081C9D14:
- bl sub_81CA324
- cmp r0, 0
- bne _081C9D34
- bl sub_81C8010
- cmp r0, 0
- bne _081C9D34
- bl sub_81CA89C
- cmp r0, 0
- bne _081C9D34
- bl sub_81CA7C4
- cmp r0, 0
- beq _081C9D38
-_081C9D34:
- movs r0, 0x2
- b _081C9D3E
-_081C9D38:
- bl sub_81CA9D8
-_081C9D3C:
- movs r0, 0x4
-_081C9D3E:
- pop {r1}
- bx r1
- thumb_func_end sub_81C9CA8
-
- thumb_func_start sub_81C9D44
-sub_81C9D44: @ 81C9D44
- push {lr}
- cmp r0, 0x1
- beq _081C9D72
- cmp r0, 0x1
- bgt _081C9D54
- cmp r0, 0
- beq _081C9D5E
- b _081C9DD2
-_081C9D54:
- cmp r0, 0x2
- beq _081C9D90
- cmp r0, 0x3
- beq _081C9DAA
- b _081C9DD2
-_081C9D5E:
- bl sub_81CA9C8
- bl sub_81CA2DC
- movs r0, 0x1
- movs r1, 0
- bl sub_81C7FC4
- movs r0, 0
- b _081C9DD4
-_081C9D72:
- bl sub_81CA324
- cmp r0, 0
- bne _081C9DCA
- bl sub_81C8010
- cmp r0, 0
- bne _081C9DCA
- bl sub_81CA0C8
- movs r0, 0
- bl sub_81C7DFC
- movs r0, 0
- b _081C9DD4
-_081C9D90:
- bl sub_81CA20C
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl sub_81C7FA0
- bl sub_81CA864
- bl sub_81CA714
- movs r0, 0
- b _081C9DD4
-_081C9DAA:
- bl sub_81CA324
- cmp r0, 0
- bne _081C9DCA
- bl sub_81C8010
- cmp r0, 0
- bne _081C9DCA
- bl sub_81CA89C
- cmp r0, 0
- bne _081C9DCA
- bl sub_81CA7C4
- cmp r0, 0
- beq _081C9DCE
-_081C9DCA:
- movs r0, 0x2
- b _081C9DD4
-_081C9DCE:
- bl sub_81CA9D8
-_081C9DD2:
- movs r0, 0x4
-_081C9DD4:
- pop {r1}
- bx r1
- thumb_func_end sub_81C9D44
-
- thumb_func_start sub_81C9DD8
-sub_81C9DD8: @ 81C9DD8
- push {lr}
- cmp r0, 0x1
- beq _081C9E04
- cmp r0, 0x1
- bgt _081C9DE8
- cmp r0, 0
- beq _081C9DF2
- b _081C9E50
-_081C9DE8:
- cmp r0, 0x2
- beq _081C9E1A
- cmp r0, 0x3
- beq _081C9E30
- b _081C9E50
-_081C9DF2:
- bl sub_81CA9C8
- bl sub_81CA2DC
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- b _081C9E52
-_081C9E04:
- bl sub_81CA324
- cmp r0, 0
- bne _081C9E48
- movs r0, 0x7
- bl sub_81C7DFC
- bl sub_81CA0C8
- movs r0, 0
- b _081C9E52
-_081C9E1A:
- bl sub_81CA20C
- movs r0, 0x7
- movs r1, 0
- movs r2, 0
- bl sub_81C7FA0
- bl sub_81CA714
- movs r0, 0
- b _081C9E52
-_081C9E30:
- bl sub_81CA324
- cmp r0, 0
- bne _081C9E48
- bl sub_81C8010
- cmp r0, 0
- bne _081C9E48
- bl sub_81CA89C
- cmp r0, 0
- beq _081C9E4C
-_081C9E48:
- movs r0, 0x2
- b _081C9E52
-_081C9E4C:
- bl sub_81CA9D8
-_081C9E50:
- movs r0, 0x4
-_081C9E52:
- pop {r1}
- bx r1
- thumb_func_end sub_81C9DD8
-
- thumb_func_start sub_81C9E58
-sub_81C9E58: @ 81C9E58
- push {lr}
- cmp r0, 0x1
- beq _081C9E86
- cmp r0, 0x1
- bgt _081C9E68
- cmp r0, 0
- beq _081C9E72
- b _081C9EC2
-_081C9E68:
- cmp r0, 0x2
- beq _081C9E9E
- cmp r0, 0x3
- beq _081C9EAA
- b _081C9EC2
-_081C9E72:
- bl sub_81CA9C8
- bl sub_81CA2DC
- movs r0, 0x7
- movs r1, 0
- bl sub_81C7FC4
- movs r0, 0
- b _081C9EC4
-_081C9E86:
- bl sub_81CA324
- cmp r0, 0
- bne _081C9EBA
- bl sub_81C8010
- cmp r0, 0
- bne _081C9EBA
- bl sub_81CA0C8
- movs r0, 0
- b _081C9EC4
-_081C9E9E:
- bl sub_81CA20C
- bl sub_81CA714
- movs r0, 0
- b _081C9EC4
-_081C9EAA:
- bl sub_81CA324
- cmp r0, 0
- bne _081C9EBA
- bl sub_81CA89C
- cmp r0, 0
- beq _081C9EBE
-_081C9EBA:
- movs r0, 0x2
- b _081C9EC4
-_081C9EBE:
- bl sub_81CA9D8
-_081C9EC2:
- movs r0, 0x4
-_081C9EC4:
- pop {r1}
- bx r1
- thumb_func_end sub_81C9E58
-
- thumb_func_start sub_81C9EC8
-sub_81C9EC8: @ 81C9EC8
- push {lr}
- cmp r0, 0
- beq _081C9ED4
- cmp r0, 0x1
- beq _081C9EE2
- b _081C9EF0
-_081C9ED4:
- movs r0, 0x20
- bl PlaySE
- bl sub_81CA770
- movs r0, 0
- b _081C9EF2
-_081C9EE2:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081C9EF0
- movs r0, 0x2
- b _081C9EF2
-_081C9EF0:
- movs r0, 0x4
-_081C9EF2:
- pop {r1}
- bx r1
- thumb_func_end sub_81C9EC8
-
- thumb_func_start sub_81C9EF8
-sub_81C9EF8: @ 81C9EF8
- push {lr}
- cmp r0, 0
- beq _081C9F04
- cmp r0, 0x1
- beq _081C9F12
- b _081C9F20
-_081C9F04:
- movs r0, 0x5
- bl PlaySE
- bl sub_81CA714
- movs r0, 0
- b _081C9F22
-_081C9F12:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081C9F20
- movs r0, 0x2
- b _081C9F22
-_081C9F20:
- movs r0, 0x4
-_081C9F22:
- pop {r1}
- bx r1
- thumb_func_end sub_81C9EF8
-
- thumb_func_start sub_81C9F28
-sub_81C9F28: @ 81C9F28
- push {lr}
- cmp r0, 0x1
- beq _081C9F52
- cmp r0, 0x1
- bgt _081C9F38
- cmp r0, 0
- beq _081C9F42
- b _081C9FBC
-_081C9F38:
- cmp r0, 0x2
- beq _081C9F96
- cmp r0, 0x3
- beq _081C9FB0
- b _081C9FBC
-_081C9F42:
- bl sub_81C98C4
- lsls r0, 16
- lsrs r0, 16
- bl sub_81C7BA4
- movs r0, 0
- b _081C9FBE
-_081C9F52:
- bl IsDma3ManagerBusyWithBgCopy_
- cmp r0, 0
- bne _081C9FB8
- bl sub_81C7880
- bl sub_81CA9C8
- bl sub_81CA2DC
- bl sub_81C9894
- cmp r0, 0x3
- beq _081C9F7A
- cmp r0, 0x4
- bne _081C9F84
- movs r0, 0x7
- movs r1, 0
- bl sub_81C7FC4
-_081C9F7A:
- movs r0, 0x1
- movs r1, 0
- bl sub_81C7FC4
- b _081C9F8C
-_081C9F84:
- movs r0, 0
- movs r1, 0
- bl sub_81C7FC4
-_081C9F8C:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- b _081C9FBE
-_081C9F96:
- bl sub_81CA324
- cmp r0, 0
- bne _081C9FB8
- bl sub_81C8010
- cmp r0, 0
- bne _081C9FB8
- movs r0, 0
- bl sub_81C7AC0
- movs r0, 0
- b _081C9FBE
-_081C9FB0:
- bl IsPaletteFadeActive
- cmp r0, 0
- beq _081C9FBC
-_081C9FB8:
- movs r0, 0x2
- b _081C9FBE
-_081C9FBC:
- movs r0, 0x4
-_081C9FBE:
- pop {r1}
- bx r1
- thumb_func_end sub_81C9F28
-
- thumb_func_start sub_81C9FC4
-sub_81C9FC4: @ 81C9FC4
- push {r4,r5,lr}
- movs r5, 0
- ldr r4, =gUnknown_086201C4
-_081C9FCA:
- adds r0, r4, 0
- bl LoadCompressedSpriteSheet
- adds r4, 0x8
- adds r5, 0x1
- cmp r5, 0x1
- bls _081C9FCA
- ldr r0, =gUnknown_086201D4
- bl sub_81C795C
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C9FC4
-
- thumb_func_start sub_81C9FEC
-sub_81C9FEC: @ 81C9FEC
- push {lr}
- movs r0, 0x3
- bl FreeSpriteTilesByTag
- movs r0, 0x1
- bl FreeSpriteTilesByTag
- movs r0, 0x4
- bl FreeSpritePaletteByTag
- movs r0, 0x5
- bl FreeSpritePaletteByTag
- movs r0, 0x6
- bl FreeSpritePaletteByTag
- movs r0, 0x7
- bl FreeSpritePaletteByTag
- movs r0, 0x8
- bl FreeSpritePaletteByTag
- movs r0, 0x3
- bl FreeSpritePaletteByTag
- bl sub_81CA094
- bl sub_81CA698
- pop {r0}
- bx r0
- thumb_func_end sub_81C9FEC
-
- thumb_func_start sub_81CA02C
-sub_81CA02C: @ 81CA02C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r0, 0x2
- bl GetSubstructPtr
- movs r2, 0
- adds r0, 0x2C
- mov r8, r0
-_081CA03E:
- movs r4, 0
- lsls r0, r2, 2
- lsls r1, r2, 4
- adds r7, r2, 0x1
- adds r0, r2
- lsls r0, 18
- movs r2, 0xA0
- lsls r2, 14
- adds r5, r0, r2
- mov r0, r8
- adds r6, r1, r0
-_081CA054:
- ldr r0, =gUnknown_0862034C
- movs r1, 0x8C
- asrs r2, r5, 16
- movs r3, 0x3
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, =gSprites
- adds r1, r0
- stm r6!, {r1}
- lsls r0, r4, 5
- strh r0, [r1, 0x24]
- adds r4, 0x1
- cmp r4, 0x3
- ble _081CA054
- adds r2, r7, 0
- cmp r2, 0x5
- ble _081CA03E
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CA02C
-
- thumb_func_start sub_81CA094
-sub_81CA094: @ 81CA094
- push {r4-r7,lr}
- movs r0, 0x2
- bl GetSubstructPtr
- movs r1, 0
- adds r7, r0, 0
- adds r7, 0x2C
-_081CA0A2:
- lsls r0, r1, 4
- adds r6, r1, 0x1
- adds r4, r0, r7
- movs r5, 0x3
-_081CA0AA:
- ldr r0, [r4]
- bl FreeSpriteOamMatrix
- ldm r4!, {r0}
- bl DestroySprite
- subs r5, 0x1
- cmp r5, 0
- bge _081CA0AA
- adds r1, r6, 0
- cmp r1, 0x5
- ble _081CA0A2
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81CA094
-
- thumb_func_start sub_81CA0C8
-sub_81CA0C8: @ 81CA0C8
- push {lr}
- bl sub_81C9894
- lsls r2, r0, 3
- subs r2, r0
- lsls r2, 2
- ldr r1, =gUnknown_08620244
- adds r0, r2, r1
- subs r1, 0x4
- adds r2, r1
- ldrh r1, [r2]
- ldrh r2, [r2, 0x2]
- bl sub_81CA0EC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CA0C8
-
- thumb_func_start sub_81CA0EC
-sub_81CA0EC: @ 81CA0EC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- adds r6, r0, 0
- str r1, [sp, 0x14]
- str r2, [sp]
- movs r0, 0x2
- bl GetSubstructPtr
- mov r10, r0
- movs r0, 0x3
- bl GetSpriteTileStartByTag
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x4]
- movs r1, 0
-_081CA114:
- ldr r0, [r6]
- cmp r0, 0
- beq _081CA1B0
- movs r5, 0
- lsls r2, r1, 4
- mov r0, r10
- adds r0, 0x2C
- lsls r3, r1, 2
- mov r9, r3
- movs r4, 0x10
- add r4, r10
- mov r8, r4
- adds r7, r6, 0x4
- str r7, [sp, 0xC]
- ldr r3, [sp, 0x14]
- ldr r4, [sp]
- adds r3, r4
- str r3, [sp, 0x8]
- adds r1, 0x1
- str r1, [sp, 0x10]
- adds r4, r2, r0
-_081CA13E:
- ldr r3, [r4]
- ldr r0, [r6]
- ldrh r2, [r0]
- ldr r7, [sp, 0x4]
- adds r2, r7
- lsls r0, r5, 3
- adds r2, r0
- ldr r1, =0x000003ff
- adds r0, r1, 0
- ands r2, r0
- ldrh r0, [r3, 0x4]
- ldr r7, =0xfffffc00
- adds r1, r7, 0
- ands r0, r1
- orrs r0, r2
- strh r0, [r3, 0x4]
- ldr r0, [r6]
- ldrh r0, [r0, 0x2]
- adds r0, 0x4
- lsls r0, 16
- lsrs r0, 16
- bl IndexOfSpritePaletteTag
- ldr r3, [r4]
- lsls r0, 4
- ldrb r2, [r3, 0x5]
- movs r1, 0xF
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x5]
- ldr r2, [r4]
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, [r4]
- mov r1, sp
- ldrh r1, [r1, 0x14]
- strh r1, [r0, 0x22]
- ldr r1, [r4]
- movs r0, 0x8C
- strh r0, [r1, 0x20]
- ldm r4!, {r1}
- lsls r0, r5, 5
- strh r0, [r1, 0x24]
- adds r5, 0x1
- cmp r5, 0x3
- ble _081CA13E
- mov r1, r8
- add r1, r9
- movs r0, 0x1
- b _081CA1EC
- .pool
-_081CA1B0:
- lsls r2, r1, 4
- mov r0, r10
- adds r0, 0x2C
- lsls r3, r1, 2
- mov r9, r3
- movs r4, 0x10
- add r4, r10
- mov r8, r4
- adds r6, 0x4
- str r6, [sp, 0xC]
- ldr r7, [sp, 0x14]
- ldr r3, [sp]
- adds r7, r3
- str r7, [sp, 0x8]
- adds r1, 0x1
- str r1, [sp, 0x10]
- movs r3, 0x4
- adds r2, r0
- movs r5, 0x3
-_081CA1D6:
- ldm r2!, {r1}
- adds r1, 0x3E
- ldrb r0, [r1]
- orrs r0, r3
- strb r0, [r1]
- subs r5, 0x1
- cmp r5, 0
- bge _081CA1D6
- mov r1, r8
- add r1, r9
- movs r0, 0
-_081CA1EC:
- str r0, [r1]
- ldr r6, [sp, 0xC]
- ldr r4, [sp, 0x8]
- str r4, [sp, 0x14]
- ldr r1, [sp, 0x10]
- cmp r1, 0x5
- ble _081CA114
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81CA0EC
-
- thumb_func_start sub_81CA20C
-sub_81CA20C: @ 81CA20C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r0, 0x2
- bl GetSubstructPtr
- adds r6, r0, 0
- bl sub_81C98A4
- mov r8, r0
- movs r7, 0
- movs r5, 0
- adds r4, r6, 0
- adds r4, 0x2C
-_081CA228:
- lsls r0, r5, 2
- adds r1, r6, 0
- adds r1, 0x10
- adds r1, r0
- ldr r0, [r1]
- cmp r0, 0
- beq _081CA25C
- adds r0, r7, 0
- adds r7, 0x1
- cmp r0, r8
- bne _081CA244
- movs r2, 0x82
- strb r5, [r6, 0xB]
- b _081CA246
-_081CA244:
- movs r2, 0x8C
-_081CA246:
- adds r0, r4, 0
- movs r1, 0x80
- lsls r1, 1
- movs r3, 0xC
- bl sub_81CA35C
- adds r0, r4, 0
- movs r1, 0
- bl sub_81CA448
- b _081CA264
-_081CA25C:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81CA448
-_081CA264:
- adds r4, 0x10
- adds r5, 0x1
- cmp r5, 0x5
- ble _081CA228
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81CA20C
-
- thumb_func_start sub_81CA278
-sub_81CA278: @ 81CA278
- push {r4,r5,lr}
- movs r0, 0x2
- bl GetSubstructPtr
- adds r4, r0, 0
- bl sub_81C98A4
- adds r3, r0, 0
- movs r2, 0
- movs r5, 0
- ldr r0, [r4, 0x10]
- cmp r0, 0
- beq _081CA298
- cmp r5, r3
- beq _081CA2B2
-_081CA296:
- adds r5, 0x1
-_081CA298:
- adds r2, 0x1
- cmp r2, 0x5
- bgt _081CA2B2
- lsls r0, r2, 2
- adds r1, r4, 0
- adds r1, 0x10
- adds r1, r0
- ldr r0, [r1]
- cmp r0, 0
- beq _081CA298
- cmp r5, r3
- bne _081CA296
- adds r5, r2, 0
-_081CA2B2:
- ldrb r0, [r4, 0xB]
- lsls r0, 4
- adds r0, 0x2C
- adds r0, r4, r0
- movs r1, 0x82
- movs r2, 0x8C
- movs r3, 0x4
- bl sub_81CA35C
- lsls r0, r5, 4
- adds r0, 0x2C
- adds r0, r4, r0
- movs r1, 0x8C
- movs r2, 0x82
- movs r3, 0x4
- bl sub_81CA35C
- strb r5, [r4, 0xB]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81CA278
-
- thumb_func_start sub_81CA2DC
-sub_81CA2DC: @ 81CA2DC
- push {r4-r6,lr}
- movs r0, 0x2
- bl GetSubstructPtr
- adds r6, r0, 0
- movs r5, 0
- adds r4, r6, 0
- adds r4, 0x2C
-_081CA2EC:
- lsls r0, r5, 2
- adds r1, r6, 0
- adds r1, 0x10
- adds r1, r0
- ldr r0, [r1]
- cmp r0, 0
- beq _081CA316
- ldrb r0, [r6, 0xB]
- cmp r0, r5
- beq _081CA310
- adds r0, r4, 0
- movs r1, 0x8C
- movs r2, 0x80
- lsls r2, 1
- movs r3, 0x8
- bl sub_81CA35C
- b _081CA316
-_081CA310:
- adds r0, r4, 0
- bl sub_81CA3B4
-_081CA316:
- adds r4, 0x10
- adds r5, 0x1
- cmp r5, 0x5
- ble _081CA2EC
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81CA2DC
-
- thumb_func_start sub_81CA324
-sub_81CA324: @ 81CA324
- push {r4,lr}
- movs r0, 0x2
- bl GetSubstructPtr
- adds r3, r0, 0
- movs r2, 0
- ldr r4, =SpriteCallbackDummy
- adds r1, r3, 0
- adds r1, 0x2C
-_081CA336:
- ldr r0, [r1]
- ldr r0, [r0, 0x1C]
- cmp r0, r4
- bne _081CA354
- adds r1, 0x10
- adds r2, 0x1
- cmp r2, 0x5
- ble _081CA336
- ldrb r0, [r3, 0xC]
- cmp r0, 0
- bne _081CA354
- movs r0, 0
- b _081CA356
- .pool
-_081CA354:
- movs r0, 0x1
-_081CA356:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CA324
-
- thumb_func_start sub_81CA35C
-sub_81CA35C: @ 81CA35C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r4, r0, 0
- adds r5, r1, 0
- mov r9, r2
- adds r6, r3, 0
- ldr r0, =sub_81CA474
- mov r8, r0
- subs r0, r2, r5
- lsls r0, 4
- adds r1, r6, 0
- bl __divsi3
- adds r3, r0, 0
- movs r1, 0x3
- lsls r2, r5, 4
-_081CA380:
- ldr r0, [r4]
- strh r5, [r0, 0x20]
- ldr r0, [r4]
- strh r6, [r0, 0x2E]
- ldr r0, [r4]
- strh r3, [r0, 0x30]
- ldr r0, [r4]
- strh r2, [r0, 0x32]
- ldr r0, [r4]
- mov r7, r9
- strh r7, [r0, 0x3C]
- ldm r4!, {r0}
- mov r7, r8
- str r7, [r0, 0x1C]
- subs r1, 0x1
- cmp r1, 0
- bge _081CA380
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CA35C
-
- thumb_func_start sub_81CA3B4
-sub_81CA3B4: @ 81CA3B4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- movs r0, 0x2
- bl GetSubstructPtr
- adds r7, r0, 0
- movs r5, 0
- mov r8, r5
-_081CA3C8:
- ldr r2, [r4]
- ldrb r1, [r2, 0x1]
- movs r3, 0xD
- negs r3, r3
- adds r0, r3, 0
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r2, 0x1]
- ldr r2, [r4]
- ldrb r0, [r2, 0x1]
- movs r1, 0x3
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldr r1, [r4]
- ldr r0, =sub_81CA4AC
- str r0, [r1, 0x1C]
- movs r6, 0x8
- strh r6, [r1, 0x2E]
- ldr r0, [r4]
- mov r1, r8
- strh r1, [r0, 0x30]
- ldr r0, [r4]
- strh r5, [r0, 0x3C]
- ldr r0, [r4]
- bl InitSpriteAffineAnim
- ldm r4!, {r0}
- movs r1, 0
- bl StartSpriteAffineAnim
- adds r5, 0x1
- cmp r5, 0x3
- ble _081CA3C8
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- ldr r0, =sub_81CA580
- movs r1, 0x3
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r6, [r1, 0x8]
- ldrb r0, [r7, 0xC]
- adds r0, 0x1
- strb r0, [r7, 0xC]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CA3B4
-
- thumb_func_start sub_81CA448
-sub_81CA448: @ 81CA448
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r0, 0x1
- ands r1, r0
- lsls r4, r1, 2
- movs r6, 0x5
- negs r6, r6
- movs r3, 0x3
-_081CA458:
- ldm r5!, {r0}
- adds r0, 0x3E
- ldrb r2, [r0]
- adds r1, r6, 0
- ands r1, r2
- orrs r1, r4
- strb r1, [r0]
- subs r3, 0x1
- cmp r3, 0
- bge _081CA458
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81CA448
-
- thumb_func_start sub_81CA474
-sub_81CA474: @ 81CA474
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- subs r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _081CA49A
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x32]
- adds r0, r1
- strh r0, [r2, 0x32]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r2, 0x20]
- b _081CA4A2
-_081CA49A:
- ldrh r0, [r2, 0x3C]
- strh r0, [r2, 0x20]
- ldr r0, =SpriteCallbackDummy
- str r0, [r2, 0x1C]
-_081CA4A2:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CA474
-
- thumb_func_start sub_81CA4AC
-sub_81CA4AC: @ 81CA4AC
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _081CA574
- movs r0, 0x30
- ldrsh r5, [r4, r0]
- cmp r5, 0
- bne _081CA4E2
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- strh r5, [r4, 0x24]
- b _081CA578
-_081CA4E2:
- ldrh r0, [r4, 0x32]
- adds r0, 0x10
- strh r0, [r4, 0x32]
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- asrs r1, r0, 3
- adds r0, r1, 0
- subs r0, 0x20
- lsrs r1, r0, 31
- adds r0, r1
- asrs r1, r0, 1
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- cmp r0, 0x1
- beq _081CA518
- cmp r0, 0x1
- bgt _081CA50A
- cmp r0, 0
- beq _081CA514
- b _081CA526
-_081CA50A:
- cmp r0, 0x2
- beq _081CA51C
- cmp r0, 0x3
- beq _081CA520
- b _081CA526
-_081CA514:
- negs r1, r1
- b _081CA520
-_081CA518:
- negs r0, r1
- b _081CA524
-_081CA51C:
- strh r1, [r4, 0x24]
- b _081CA526
-_081CA520:
- lsls r0, r1, 1
- adds r0, r1
-_081CA524:
- strh r0, [r4, 0x24]
-_081CA526:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _081CA578
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- ldrb r1, [r4, 0x1]
- lsrs r1, 6
- ldrb r2, [r4, 0x3]
- lsrs r2, 6
- adds r0, r4, 0
- movs r3, 0
- bl CalcCenterToCornerVec
- ldrb r1, [r4, 0x1]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- movs r1, 0xD
- negs r1, r1
- ands r0, r1
- strb r0, [r4, 0x1]
- ldr r0, =SpriteCallbackDummy
- str r0, [r4, 0x1C]
- b _081CA578
- .pool
-_081CA574:
- subs r0, r1, 0x1
- strh r0, [r4, 0x2E]
-_081CA578:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81CA4AC
-
- thumb_func_start sub_81CA580
-sub_81CA580: @ 81CA580
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- ldrh r0, [r4]
- movs r1, 0
- ldrsh r2, [r4, r1]
- cmp r2, 0
- bne _081CA634
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- cmp r1, 0
- beq _081CA5AC
- cmp r1, 0x1
- beq _081CA5CC
- b _081CA638
- .pool
-_081CA5AC:
- movs r0, 0x10
- strh r0, [r4, 0x4]
- strh r2, [r4, 0x6]
- movs r1, 0xFC
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
- b _081CA638
-_081CA5CC:
- ldrh r0, [r4, 0x8]
- ands r1, r0
- cmp r1, 0
- beq _081CA5E4
- ldrh r0, [r4, 0x4]
- subs r0, 0x3
- strh r0, [r4, 0x4]
- lsls r0, 16
- cmp r0, 0
- bge _081CA5F6
- strh r2, [r4, 0x4]
- b _081CA5F6
-_081CA5E4:
- ldrh r0, [r4, 0x6]
- adds r0, 0x3
- strh r0, [r4, 0x6]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _081CA5F6
- movs r0, 0x10
- strh r0, [r4, 0x6]
-_081CA5F6:
- ldrh r1, [r4, 0x6]
- lsls r1, 8
- ldrh r0, [r4, 0x4]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- bne _081CA638
- movs r0, 0x2
- bl GetSubstructPtr
- ldrb r1, [r0, 0xC]
- subs r1, 0x1
- strb r1, [r0, 0xC]
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- adds r0, r5, 0
- bl DestroyTask
- b _081CA638
-_081CA634:
- subs r0, 0x1
- strh r0, [r4]
-_081CA638:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81CA580
-
- thumb_func_start sub_81CA640
-sub_81CA640: @ 81CA640
- push {r4,lr}
- movs r0, 0x2
- bl GetSubstructPtr
- adds r4, r0, 0
- ldr r0, =gUnknown_0862036C
- movs r1, 0x10
- movs r2, 0x60
- movs r3, 0x4
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, =gSprites
- adds r1, r0
- str r1, [r4, 0x28]
- bl sub_81C98D4
- cmp r0, 0
- beq _081CA684
- ldr r1, [r4, 0x28]
- ldr r0, =sub_81CA6AC
- str r0, [r1, 0x1C]
- b _081CA690
- .pool
-_081CA684:
- ldr r0, [r4, 0x28]
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_081CA690:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81CA640
-
- thumb_func_start sub_81CA698
-sub_81CA698: @ 81CA698
- push {lr}
- movs r0, 0x2
- bl GetSubstructPtr
- ldr r0, [r0, 0x28]
- bl DestroySprite
- pop {r0}
- bx r0
- thumb_func_end sub_81CA698
-
- thumb_func_start sub_81CA6AC
-sub_81CA6AC: @ 81CA6AC
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _081CA6DA
- movs r0, 0
- strh r0, [r3, 0x2E]
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_081CA6DA:
- pop {r0}
- bx r0
- thumb_func_end sub_81CA6AC
-
- thumb_func_start sub_81CA6E0
-sub_81CA6E0: @ 81CA6E0
- push {r4,lr}
- movs r0, 0x2
- bl GetSubstructPtr
- adds r4, r0, 0
- ldr r0, =gUnknown_086202CC
- bl AddWindow
- strh r0, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- bl PutWindowTilemap
- ldrb r0, [r4, 0x8]
- movs r1, 0x66
- bl FillWindowPixelBuffer
- ldrb r0, [r4, 0x8]
- movs r1, 0x3
- bl CopyWindowToVram
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CA6E0
-
- thumb_func_start sub_81CA714
-sub_81CA714: @ 81CA714
- push {r4-r6,lr}
- sub sp, 0xC
- movs r0, 0x2
- bl GetSubstructPtr
- adds r5, r0, 0
- bl sub_81C98B4
- ldr r1, =gUnknown_086202D4
- lsls r0, 2
- adds r0, r1
- ldr r6, [r0]
- movs r2, 0x1
- negs r2, r2
- movs r0, 0x1
- adds r1, r6, 0
- bl GetStringWidth
- adds r4, r0, 0
- ldrb r0, [r5, 0x8]
- movs r1, 0x66
- bl FillWindowPixelBuffer
- ldrb r0, [r5, 0x8]
- movs r2, 0xC0
- subs r2, r4
- lsrs r2, 1
- lsls r2, 24
- lsrs r2, 24
- ldr r1, =gUnknown_0862030C
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0x1
- bl AddTextPrinterParameterized3
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CA714
-
- thumb_func_start sub_81CA770
-sub_81CA770: @ 81CA770
- push {r4-r6,lr}
- sub sp, 0xC
- movs r0, 0x2
- bl GetSubstructPtr
- adds r5, r0, 0
- ldr r6, =gText_NoRibbonWinners
- movs r2, 0x1
- negs r2, r2
- movs r0, 0x1
- adds r1, r6, 0
- bl GetStringWidth
- adds r4, r0, 0
- ldrb r0, [r5, 0x8]
- movs r1, 0x66
- bl FillWindowPixelBuffer
- ldrb r0, [r5, 0x8]
- movs r2, 0xC0
- subs r2, r4
- lsrs r2, 1
- lsls r2, 24
- lsrs r2, 24
- ldr r1, =gUnknown_0862030F
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0x1
- bl AddTextPrinterParameterized3
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CA770
-
- thumb_func_start sub_81CA7C4
-sub_81CA7C4: @ 81CA7C4
- push {lr}
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_81CA7C4
-
- thumb_func_start sub_81CA7D4
-sub_81CA7D4: @ 81CA7D4
- push {r4,lr}
- movs r0, 0x2
- bl GetSubstructPtr
- adds r4, r0, 0
- ldr r0, =sub_81CA808
- movs r1, 0x2
- bl CreateTask
- strb r0, [r4, 0xA]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CA7D4
-
- thumb_func_start sub_81CA7F4
-sub_81CA7F4: @ 81CA7F4
- push {lr}
- movs r0, 0x2
- bl GetSubstructPtr
- ldrb r0, [r0, 0xA]
- bl DestroyTask
- pop {r0}
- bx r0
- thumb_func_end sub_81CA7F4
-
- thumb_func_start sub_81CA808
-sub_81CA808: @ 81CA808
- push {lr}
- movs r0, 0x3
- movs r1, 0x80
- movs r2, 0x1
- bl ChangeBgX
- pop {r0}
- bx r0
- thumb_func_end sub_81CA808
-
- thumb_func_start sub_81CA818
-sub_81CA818: @ 81CA818
- push {r4,r5,lr}
- ldr r0, =sub_81CA8B0
- movs r1, 0x3
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, =gUnknown_0861FC78 + 2
- adds r0, r4, 0
- movs r1, 0x1
- adds r2, r5, 0
- bl SetWordTaskArg
- adds r5, 0xC
- adds r0, r4, 0
- movs r1, 0x3
- adds r2, r5, 0
- bl SetWordTaskArg
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CA818
-
- thumb_func_start sub_81CA850
-sub_81CA850: @ 81CA850
- push {lr}
- ldr r0, =gUnknown_0861FC78 + 0xE
- movs r1, 0x31
- movs r2, 0x4
- bl CopyPaletteIntoBufferUnfaded
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CA850
-
- thumb_func_start sub_81CA864
-sub_81CA864: @ 81CA864
- push {r4,r5,lr}
- ldr r0, =sub_81CA8B0
- movs r1, 0x3
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, =gUnknown_0861FC78 + 0xE
- adds r0, r4, 0
- movs r1, 0x1
- adds r2, r5, 0
- bl SetWordTaskArg
- subs r5, 0xC
- adds r0, r4, 0
- movs r1, 0x3
- adds r2, r5, 0
- bl SetWordTaskArg
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CA864
-
- thumb_func_start sub_81CA89C
-sub_81CA89C: @ 81CA89C
- push {lr}
- ldr r0, =sub_81CA8B0
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CA89C
-
- thumb_func_start sub_81CA8B0
-sub_81CA8B0: @ 81CA8B0
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r4, r6, 2
- adds r4, r6
- lsls r4, 3
- ldr r0, =gTasks + 0x8
- adds r4, r0
- adds r0, r6, 0
- movs r1, 0x1
- bl GetWordTaskArg
- adds r5, r0, 0
- adds r0, r6, 0
- movs r1, 0x3
- bl GetWordTaskArg
- adds r1, r0, 0
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- lsls r0, 16
- asrs r0, 16
- str r0, [sp]
- add r0, sp, 0x8
- str r0, [sp, 0x4]
- adds r0, r5, 0
- movs r2, 0x2
- movs r3, 0xC
- bl sub_81C79BC
- add r0, sp, 0x8
- movs r1, 0x31
- movs r2, 0x4
- bl LoadPalette
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0xC
- bne _081CA908
- adds r0, r6, 0
- bl DestroyTask
-_081CA908:
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CA8B0
-
- thumb_func_start sub_81CA914
-sub_81CA914: @ 81CA914
- push {lr}
- bl TransferPlttBuffer
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl ScanlineEffect_InitHBlankDmaTransfer
- pop {r0}
- bx r0
- thumb_func_end sub_81CA914
-
- thumb_func_start titlescreen_0
-titlescreen_0: @ 81CA92C
- push {lr}
- movs r0, 0x50
- movs r1, 0x90
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl SetGpuRegBits
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuRegBits
- movs r0, 0x4A
- movs r1, 0x1F
- bl SetGpuRegBits
- movs r0, 0x44
- movs r1, 0xA0
- bl SetGpuRegBits
- bl ScanlineEffect_Stop
- bl sub_81CAA3C
- ldr r2, =gUnknown_08620384
- ldr r0, [r2]
- ldr r1, [r2, 0x4]
- ldr r2, [r2, 0x8]
- bl ScanlineEffect_SetParams
- ldr r0, =sub_81CA914
- bl SetVBlankCallback_
- ldr r0, =sub_81CA9EC
- movs r1, 0x3
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end titlescreen_0
-
- thumb_func_start sub_81CA994
-sub_81CA994: @ 81CA994
- push {lr}
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl ClearGpuRegBits
- bl ScanlineEffect_Stop
- ldr r0, =sub_81CA9EC
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- bl SetPokenavVBlankCallback
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CA994
-
- thumb_func_start sub_81CA9C8
-sub_81CA9C8: @ 81CA9C8
- push {lr}
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- pop {r0}
- bx r0
- thumb_func_end sub_81CA9C8
-
- thumb_func_start sub_81CA9D8
-sub_81CA9D8: @ 81CA9D8
- push {lr}
- bl sub_81CAA3C
- movs r0, 0x50
- movs r1, 0x90
- bl SetGpuReg
- pop {r0}
- bx r0
- thumb_func_end sub_81CA9D8
-
- thumb_func_start sub_81CA9EC
-sub_81CA9EC: @ 81CA9EC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks + 0x8
- adds r2, r1, r0
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- lsls r0, 16
- cmp r0, 0
- ble _081CAA30
- movs r0, 0
- strh r0, [r2]
- ldrh r0, [r2, 0x2]
- adds r0, 0x3
- movs r1, 0x7F
- ands r0, r1
- strh r0, [r2, 0x2]
- ldr r1, =gSineTable
- movs r3, 0x2
- ldrsh r0, [r2, r3]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- lsls r1, 16
- asrs r1, 21
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x54
- bl SetGpuReg
-_081CAA30:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CA9EC
-
- thumb_func_start sub_81CAA3C
-sub_81CAA3C: @ 81CAA3C
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x8
- bl sub_81C9894
- adds r4, r0, 0
- bl sub_81C98A4
- ldr r2, =gUnknown_08620240
- lsls r1, r4, 3
- subs r1, r4
- lsls r1, 2
- adds r1, r2
- ldrh r2, [r1, 0x2]
- adds r4, r2, 0
- muls r4, r0
- ldrh r1, [r1]
- adds r4, r1
- subs r4, 0x8
- mov r0, sp
- movs r6, 0
- strh r6, [r0]
- ldr r5, =gScanlineEffectRegBuffers
- ldr r0, =0x010000a0
- mov r8, r0
- mov r0, sp
- adds r1, r5, 0
- mov r2, r8
- bl CpuSet
- mov r0, sp
- adds r0, 0x2
- strh r6, [r0]
- movs r1, 0xF0
- lsls r1, 3
- adds r1, r5
- mov r9, r1
- mov r2, r8
- bl CpuSet
- add r0, sp, 0x4
- ldr r1, =0x000072f0
- adds r6, r1, 0
- strh r6, [r0]
- lsls r4, 1
- adds r5, r4, r5
- ldr r1, =0x01000010
- mov r8, r1
- adds r1, r5, 0
- mov r2, r8
- bl CpuSet
- mov r0, sp
- adds r0, 0x6
- strh r6, [r0]
- add r4, r9
- adds r1, r4, 0
- mov r2, r8
- bl CpuSet
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CAA3C
-
- thumb_func_start sub_81CAADC
-sub_81CAADC: @ 81CAADC
- push {lr}
- bl sub_81CA9C8
- pop {r0}
- bx r0
- thumb_func_end sub_81CAADC
-
- thumb_func_start sub_81CAAE8
-sub_81CAAE8: @ 81CAAE8
- push {r4,lr}
- movs r1, 0xD4
- lsls r1, 1
- movs r0, 0x5
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081CAB1C
- ldr r0, =sub_81CAB44
- str r0, [r4, 0x18]
- movs r0, 0
- strh r0, [r4, 0x8]
- str r0, [r4, 0x10]
- ldr r0, =sub_81CAD20
- movs r1, 0x1
- bl sub_81C7078
- str r0, [r4, 0x14]
- movs r0, 0x1
- b _081CAB1E
- .pool
-_081CAB1C:
- movs r0, 0
-_081CAB1E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CAAE8
-
- thumb_func_start sub_81CAB24
-sub_81CAB24: @ 81CAB24
- push {lr}
- movs r0, 0x5
- bl GetSubstructPtr
- ldr r1, [r0, 0x18]
- bl _call_via_r1
- pop {r1}
- bx r1
- thumb_func_end sub_81CAB24
-
- thumb_func_start sub_81CAB38
-sub_81CAB38: @ 81CAB38
- push {lr}
- movs r0, 0x5
- bl FreeSubstruct
- pop {r0}
- bx r0
- thumb_func_end sub_81CAB38
-
- thumb_func_start sub_81CAB44
-sub_81CAB44: @ 81CAB44
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r3, =gMain
- ldrh r1, [r3, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081CAB5C
- movs r0, 0x2
- b _081CABF4
- .pool
-_081CAB5C:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081CAB68
- movs r0, 0x1
- b _081CABF4
-_081CAB68:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _081CAB74
- movs r0, 0x4
- b _081CABF4
-_081CAB74:
- movs r0, 0x10
- ands r0, r1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0
- beq _081CAB84
- movs r0, 0x3
- b _081CABF4
-_081CAB84:
- ldrh r1, [r3, 0x2E]
- movs r5, 0x1
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _081CABD0
- ldr r0, =sub_81CAC04
- str r0, [r4, 0x18]
- strh r2, [r4]
- bl sub_81C875C
- lsls r0, 2
- adds r1, r4, r0
- ldrb r0, [r1, 0x1C]
- cmp r0, 0
- beq _081CABAE
- ldrh r0, [r1, 0x1E]
- bl sub_81D17E8
- cmp r0, 0
- beq _081CABC0
-_081CABAE:
- ldr r0, =gUnknown_0862250A
- str r0, [r4, 0x4]
- movs r0, 0x2
- strh r0, [r4, 0x2]
- b _081CABC6
- .pool
-_081CABC0:
- ldr r0, =gUnknown_08622508
- str r0, [r4, 0x4]
- strh r5, [r4, 0x2]
-_081CABC6:
- movs r0, 0x5
- b _081CABF4
- .pool
-_081CABD0:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081CABF2
- bl GetPokenavMode
- cmp r0, 0x1
- beq _081CABEC
- ldr r0, =sub_81CABFC
- str r0, [r4, 0x18]
- movs r0, 0xF
- b _081CABF4
- .pool
-_081CABEC:
- movs r0, 0x20
- bl PlaySE
-_081CABF2:
- movs r0, 0
-_081CABF4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CAB44
-
- thumb_func_start sub_81CABFC
-sub_81CABFC: @ 81CABFC
- ldr r0, =0x000186a4
- bx lr
- .pool
- thumb_func_end sub_81CABFC
-
- thumb_func_start sub_81CAC04
-sub_81CAC04: @ 81CAC04
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081CAC24
- ldrh r0, [r4]
- cmp r0, 0
- beq _081CAC24
- subs r0, 0x1
- b _081CAC38
- .pool
-_081CAC24:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081CAC3E
- ldrh r0, [r4]
- ldrh r1, [r4, 0x2]
- cmp r0, r1
- bcs _081CAC3E
- adds r0, 0x1
-_081CAC38:
- strh r0, [r4]
- movs r0, 0x6
- b _081CACAC
-_081CAC3E:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081CAC98
- ldrh r1, [r4]
- ldr r0, [r4, 0x4]
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _081CAC8C
- cmp r0, 0x1
- bgt _081CAC5E
- cmp r0, 0
- beq _081CAC64
- b _081CAC98
-_081CAC5E:
- cmp r0, 0x2
- bne _081CAC98
- b _081CACA6
-_081CAC64:
- bl GetPokenavMode
- cmp r0, 0x1
- bne _081CAC72
- movs r0, 0x2
- bl SetPokenavMode
-_081CAC72:
- ldr r0, =sub_81CACF8
- str r0, [r4, 0x18]
- bl sub_81CB1D0
- cmp r0, 0
- beq _081CAC88
- movs r0, 0x9
- b _081CACAC
- .pool
-_081CAC88:
- movs r0, 0x8
- b _081CACAC
-_081CAC8C:
- ldr r0, =sub_81CACB8
- str r0, [r4, 0x18]
- movs r0, 0xB
- b _081CACAC
- .pool
-_081CAC98:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _081CACA6
- movs r0, 0
- b _081CACAC
-_081CACA6:
- ldr r0, =sub_81CAB44
- str r0, [r4, 0x18]
- movs r0, 0x7
-_081CACAC:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CAC04
-
- thumb_func_start sub_81CACB8
-sub_81CACB8: @ 81CACB8
- push {lr}
- adds r3, r0, 0
- ldr r2, =gMain
- ldrh r1, [r2, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081CACD0
- movs r0, 0xC
- b _081CACF0
- .pool
-_081CACD0:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081CACDC
- movs r0, 0xD
- b _081CACF0
-_081CACDC:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _081CACEA
- movs r0, 0
- b _081CACF0
-_081CACEA:
- ldr r0, =sub_81CAB44
- str r0, [r3, 0x18]
- movs r0, 0xE
-_081CACF0:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CACB8
-
- thumb_func_start sub_81CACF8
-sub_81CACF8: @ 81CACF8
- push {lr}
- adds r2, r0, 0
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _081CAD10
- movs r0, 0
- b _081CAD16
- .pool
-_081CAD10:
- ldr r0, =sub_81CAB44
- str r0, [r2, 0x18]
- movs r0, 0xA
-_081CAD16:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CACF8
-
- thumb_func_start sub_81CAD20
-sub_81CAD20: @ 81CAD20
- push {r4-r7,lr}
- adds r5, r0, 0
- movs r0, 0x5
- bl GetSubstructPtr
- adds r4, r0, 0
- cmp r5, 0x1
- beq _081CAD4C
- cmp r5, 0x1
- bgt _081CAD3A
- cmp r5, 0
- beq _081CAD44
- b _081CAE00
-_081CAD3A:
- cmp r5, 0x2
- beq _081CAD9C
- cmp r5, 0x3
- beq _081CADFC
- b _081CAE00
-_081CAD44:
- strh r5, [r4, 0x8]
- strh r5, [r4, 0xA]
-_081CAD48:
- movs r0, 0x1
- b _081CAE02
-_081CAD4C:
- movs r6, 0
- ldrh r5, [r4, 0x8]
-_081CAD50:
- adds r0, r5, 0
- bl MatchCallFlagGetByIndex
- cmp r0, 0
- beq _081CAD80
- ldrh r0, [r4, 0xA]
- lsls r0, 2
- adds r0, r4, r0
- strh r5, [r0, 0x1E]
- ldrh r0, [r4, 0xA]
- lsls r0, 2
- adds r0, r4, r0
- movs r1, 0x1
- strb r1, [r0, 0x1C]
- adds r0, r5, 0
- bl sub_81D16DC
- ldrh r1, [r4, 0xA]
- lsls r1, 2
- adds r1, r4, r1
- strb r0, [r1, 0x1D]
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
-_081CAD80:
- ldrh r0, [r4, 0x8]
- adds r1, r0, 0x1
- movs r2, 0
- strh r1, [r4, 0x8]
- lsls r0, r1, 16
- lsrs r0, 16
- cmp r0, 0x14
- bhi _081CADF6
- adds r6, 0x1
- adds r5, 0x1
- cmp r6, 0x1D
- ble _081CAD50
- movs r0, 0x3
- b _081CAE02
-_081CAD9C:
- movs r6, 0
- ldrh r5, [r4, 0x8]
- movs r7, 0
-_081CADA2:
- ldrh r0, [r4, 0x8]
- bl sub_81D1BF8
- cmp r0, 0
- bne _081CADDC
- ldrh r0, [r4, 0x8]
- bl sub_81CAE08
- cmp r0, 0
- beq _081CADDC
- ldrh r0, [r4, 0xA]
- lsls r0, 2
- adds r0, r4, r0
- ldrh r1, [r4, 0x8]
- strh r1, [r0, 0x1E]
- ldrh r0, [r4, 0xA]
- lsls r0, 2
- adds r0, r4, r0
- strb r7, [r0, 0x1C]
- adds r0, r5, 0
- bl sub_81CB0C8
- ldrh r1, [r4, 0xA]
- lsls r1, 2
- adds r1, r4, r1
- strb r0, [r1, 0x1D]
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
-_081CADDC:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x4D
- bhi _081CAD48
- adds r6, 0x1
- adds r5, 0x1
- cmp r6, 0x1D
- ble _081CADA2
- movs r0, 0x3
- b _081CAE02
-_081CADF6:
- strh r1, [r4, 0xC]
- strh r2, [r4, 0x8]
- b _081CAD48
-_081CADFC:
- movs r0, 0x1
- str r0, [r4, 0x10]
-_081CAE00:
- movs r0, 0x4
-_081CAE02:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81CAD20
-
- thumb_func_start sub_81CAE08
-sub_81CAE08: @ 81CAE08
- push {lr}
- cmp r0, 0x4D
- ble _081CAE12
- movs r0, 0
- b _081CAE24
-_081CAE12:
- movs r1, 0xAE
- lsls r1, 1
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
-_081CAE24:
- pop {r1}
- bx r1
- thumb_func_end sub_81CAE08
-
- thumb_func_start sub_81CAE28
-sub_81CAE28: @ 81CAE28
- push {lr}
- movs r0, 0x5
- bl GetSubstructPtr
- ldr r0, [r0, 0x10]
- pop {r1}
- bx r1
- thumb_func_end sub_81CAE28
-
- thumb_func_start sub_81CAE38
-sub_81CAE38: @ 81CAE38
- push {lr}
- movs r0, 0x5
- bl GetSubstructPtr
- ldrh r0, [r0, 0xA]
- pop {r1}
- bx r1
- thumb_func_end sub_81CAE38
-
- thumb_func_start sub_81CAE48
-sub_81CAE48: @ 81CAE48
- push {lr}
- movs r0, 0x5
- bl GetSubstructPtr
- ldrh r0, [r0, 0xC]
- pop {r1}
- bx r1
- thumb_func_end sub_81CAE48
-
- thumb_func_start sub_81CAE58
-sub_81CAE58: @ 81CAE58
- push {lr}
- movs r0, 0x5
- bl GetSubstructPtr
- adds r1, r0, 0
- ldrh r0, [r1, 0xA]
- ldrh r1, [r1, 0xC]
- subs r0, r1
- pop {r1}
- bx r1
- thumb_func_end sub_81CAE58
-
- thumb_func_start sub_81CAE6C
-sub_81CAE6C: @ 81CAE6C
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x5
- bl GetSubstructPtr
- adds r1, r0, 0
- ldrh r0, [r1, 0xC]
- adds r4, r0
- ldrh r0, [r1, 0xA]
- cmp r4, r0
- bge _081CAE8A
- lsls r0, r4, 2
- adds r0, r1, r0
- ldrh r0, [r0, 0x1E]
- b _081CAE8C
-_081CAE8A:
- movs r0, 0x4E
-_081CAE8C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CAE6C
-
- thumb_func_start sub_81CAE94
-sub_81CAE94: @ 81CAE94
- push {lr}
- movs r0, 0x5
- bl GetSubstructPtr
- adds r0, 0x1C
- pop {r1}
- bx r1
- thumb_func_end sub_81CAE94
-
- thumb_func_start sub_81CAEA4
-sub_81CAEA4: @ 81CAEA4
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x5
- bl GetSubstructPtr
- lsls r4, 2
- adds r0, r4
- ldrb r0, [r0, 0x1D]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CAEA4
-
- thumb_func_start sub_81CAEBC
-sub_81CAEBC: @ 81CAEBC
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x5
- bl GetSubstructPtr
- lsls r1, r4, 2
- adds r1, r0, r1
- ldrb r0, [r1, 0x1C]
- cmp r0, 0
- bne _081CAED4
- ldrh r4, [r1, 0x1E]
- b _081CAEDC
-_081CAED4:
- ldrh r0, [r1, 0x1E]
- bl MatchCall_GetRematchTableIdx
- adds r4, r0, 0
-_081CAEDC:
- cmp r4, 0x4E
- beq _081CAEFC
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000009ca
- adds r0, r1
- adds r0, r4
- ldrb r1, [r0]
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- b _081CAEFE
- .pool
-_081CAEFC:
- movs r0, 0
-_081CAEFE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CAEBC
-
- thumb_func_start sub_81CAF04
-sub_81CAF04: @ 81CAF04
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x5
- bl GetSubstructPtr
- lsls r1, r4, 2
- adds r1, r0, r1
- ldrb r0, [r1, 0x1C]
- cmp r0, 0
- bne _081CAF34
- ldrh r0, [r1, 0x1E]
- bl GetTrainerIdxByRematchIdx
- adds r4, r0, 0
- ldr r1, =gTrainers
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0, 0x3]
- b _081CAF6C
- .pool
-_081CAF34:
- ldrh r5, [r1, 0x1E]
- adds r0, r5, 0
- bl MatchCall_GetRematchTableIdx
- adds r4, r0, 0
- cmp r4, 0x4E
- bne _081CAF58
- adds r0, r5, 0
- bl sub_81D1BD0
- adds r4, r0, 0
- ldr r0, =gFacilityClassToPicIndex
- adds r0, r4, r0
- ldrb r0, [r0]
- b _081CAF6C
- .pool
-_081CAF58:
- adds r0, r4, 0
- bl GetTrainerIdxByRematchIdx
- adds r4, r0, 0
- ldr r0, =gTrainers
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrb r0, [r1, 0x3]
-_081CAF6C:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CAF04
-
- thumb_func_start sub_81CAF78
-sub_81CAF78: @ 81CAF78
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- movs r0, 0x5
- bl GetSubstructPtr
- adds r4, r0, 0
- movs r0, 0
- strb r0, [r6]
- ldr r0, =gMapHeader
- ldrb r0, [r0, 0x17]
- bl Overworld_MapTypeAllowsTeleportAndFly
- lsls r0, 24
- cmp r0, 0
- bne _081CAFA4
- ldr r0, =gText_CallCantBeMadeHere
- b _081CAFCE
- .pool
-_081CAFA4:
- lsls r0, r5, 2
- adds r1, r4, r0
- ldrb r0, [r1, 0x1C]
- cmp r0, 0
- bne _081CAFC4
- ldrh r0, [r1, 0x1E]
- bl GetTrainerIdxByRematchIdx
- ldr r1, =gStringVar4
- bl SelectMatchCallMessage
- strb r0, [r6]
- b _081CAFCC
- .pool
-_081CAFC4:
- ldrh r0, [r1, 0x1E]
- ldr r1, =gStringVar4
- bl MatchCall_GetMessage
-_081CAFCC:
- ldr r0, =gStringVar4
-_081CAFCE:
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CAF78
-
- thumb_func_start sub_81CAFD8
-sub_81CAFD8: @ 81CAFD8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r0, 0x5
- bl GetSubstructPtr
- lsls r4, 2
- adds r4, r0, r4
- ldrb r0, [r4, 0x1C]
- cmp r0, 0
- beq _081CB004
- ldrh r0, [r4, 0x1E]
- bl MatchCall_GetRematchTableIdx
- adds r1, r0, 0
- cmp r1, 0x4E
- bne _081CB006
- ldrh r0, [r4, 0x1E]
- adds r1, r5, 0
- bl sub_81D1B40
- b _081CB012
-_081CB004:
- ldrh r1, [r4, 0x1E]
-_081CB006:
- ldr r2, =gUnknown_08622028
- lsls r0, r5, 2
- lsls r1, 4
- adds r0, r1
- adds r0, r2
- ldr r0, [r0]
-_081CB012:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CAFD8
-
- thumb_func_start sub_81CB01C
-sub_81CB01C: @ 81CB01C
- push {lr}
- movs r0, 0x5
- bl GetSubstructPtr
- ldrh r0, [r0]
- pop {r1}
- bx r1
- thumb_func_end sub_81CB01C
-
- thumb_func_start sub_81CB02C
-sub_81CB02C: @ 81CB02C
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x5
- bl GetSubstructPtr
- adds r1, r0, 0
- ldrh r0, [r1, 0x2]
- cmp r0, r4
- blt _081CB046
- ldr r0, [r1, 0x4]
- adds r0, r4
- ldrb r0, [r0]
- b _081CB048
-_081CB046:
- movs r0, 0x3
-_081CB048:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CB02C
-
- thumb_func_start sub_81CB050
-sub_81CB050: @ 81CB050
- push {r4,lr}
- sub sp, 0x8
- adds r2, r0, 0
- adds r4, r1, 0
- ldrb r0, [r2]
- cmp r0, 0
- bne _081CB088
- ldrh r0, [r2, 0x2]
- bl GetTrainerIdxByRematchIdx
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTrainers
- adds r1, r0
- ldrb r2, [r1, 0x1]
- movs r0, 0xD
- muls r0, r2
- ldr r2, =gTrainerClassNames
- adds r0, r2
- str r0, [sp]
- adds r1, 0x4
- str r1, [sp, 0x4]
- b _081CB092
- .pool
-_081CB088:
- ldrh r0, [r2, 0x2]
- add r2, sp, 0x4
- mov r1, sp
- bl sub_81D1A78
-_081CB092:
- ldr r2, [sp]
- cmp r2, 0
- beq _081CB0B4
- ldr r0, [sp, 0x4]
- cmp r0, 0
- beq _081CB0B4
- adds r0, r4, 0
- movs r1, 0x7
- movs r3, 0x45
- bl sub_81DB494
- ldr r2, [sp, 0x4]
- movs r1, 0x7
- movs r3, 0x33
- bl sub_81DB494
- b _081CB0C0
-_081CB0B4:
- adds r0, r4, 0
- movs r1, 0x7
- movs r2, 0
- movs r3, 0x78
- bl sub_81DB494
-_081CB0C0:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81CB050
-
- thumb_func_start sub_81CB0C8
-sub_81CB0C8: @ 81CB0C8
- push {lr}
- ldr r1, =gRematchTable
- lsls r0, 4
- adds r0, r1
- ldrh r2, [r0, 0xA]
- ldrh r1, [r0, 0xC]
- adds r0, r2, 0
- bl Overworld_GetMapHeaderByGroupAndId
- ldrb r0, [r0, 0x14]
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CB0C8
-
- thumb_func_start sub_81CB0E4
-sub_81CB0E4: @ 81CB0E4
- push {r4-r7,lr}
- adds r5, r0, 0
- movs r0, 0x5
- bl GetSubstructPtr
- adds r7, r0, 0
- movs r6, 0x1
- adds r5, 0x1
- ldrh r0, [r7, 0xA]
- cmp r5, r0
- bge _081CB120
- lsls r0, r5, 2
- adds r0, 0x1C
- adds r4, r0, r7
-_081CB100:
- ldrb r0, [r4]
- cmp r0, 0
- beq _081CB110
- ldrh r0, [r4, 0x2]
- bl sub_81D17E8
- cmp r0, 0
- beq _081CB114
-_081CB110:
- adds r0, r6, 0
- b _081CB122
-_081CB114:
- adds r6, 0x1
- adds r4, 0x4
- adds r5, 0x1
- ldrh r0, [r7, 0xA]
- cmp r5, r0
- blt _081CB100
-_081CB120:
- movs r0, 0
-_081CB122:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81CB0E4
-
- thumb_func_start sub_81CB128
-sub_81CB128: @ 81CB128
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r0, 0x5
- bl GetSubstructPtr
- adds r1, r0, 0
- movs r6, 0x1
- negs r6, r6
- subs r5, 0x1
- cmp r5, 0
- blt _081CB162
- lsls r0, r5, 2
- adds r0, 0x1C
- adds r4, r0, r1
-_081CB144:
- ldrb r0, [r4]
- cmp r0, 0
- beq _081CB154
- ldrh r0, [r4, 0x2]
- bl sub_81D17E8
- cmp r0, 0
- beq _081CB158
-_081CB154:
- adds r0, r6, 0
- b _081CB164
-_081CB158:
- subs r6, 0x1
- subs r4, 0x4
- subs r5, 0x1
- cmp r5, 0
- bge _081CB144
-_081CB162:
- movs r0, 0
-_081CB164:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81CB128
-
- thumb_func_start sub_81CB16C
-sub_81CB16C: @ 81CB16C
- push {r4,lr}
- movs r4, 0
-_081CB170:
- adds r0, r4, 0
- bl sub_81CAE08
- cmp r0, 0
- beq _081CB18A
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000009ca
- adds r0, r1
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _081CB1B2
-_081CB18A:
- adds r4, 0x1
- cmp r4, 0x4D
- ble _081CB170
- movs r4, 0
-_081CB192:
- adds r0, r4, 0
- bl MatchCallFlagGetByIndex
- cmp r0, 0
- beq _081CB1C0
- adds r0, r4, 0
- bl MatchCall_GetRematchTableIdx
- ldr r1, =gSaveBlock1Ptr
- ldr r1, [r1]
- ldr r2, =0x000009ca
- adds r1, r2
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _081CB1C0
-_081CB1B2:
- movs r0, 0x1
- b _081CB1C8
- .pool
-_081CB1C0:
- adds r4, 0x1
- cmp r4, 0x14
- ble _081CB192
- movs r0, 0
-_081CB1C8:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CB16C
-
- thumb_func_start sub_81CB1D0
-sub_81CB1D0: @ 81CB1D0
- push {r4,lr}
- movs r0, 0x5
- bl GetSubstructPtr
- adds r4, r0, 0
- bl sub_81C875C
- adds r1, r0, 0
- lsls r0, r1, 2
- adds r4, r0
- ldrb r0, [r4, 0x1C]
- cmp r0, 0
- bne _081CB218
- adds r0, r1, 0
- bl sub_81CAEA4
- ldr r1, =gMapHeader
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1, 0x14]
- cmp r0, r1
- bne _081CB258
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000009ca
- adds r0, r1
- ldrh r4, [r4, 0x1E]
- adds r0, r4
- ldrb r0, [r0]
- b _081CB246
- .pool
-_081CB218:
- ldrh r0, [r4, 0x1E]
- cmp r0, 0xB
- bne _081CB258
- adds r0, r1, 0
- bl sub_81CAEA4
- ldr r1, =gMapHeader
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1, 0x14]
- cmp r0, r1
- bne _081CB258
- ldr r0, =0x0000086b
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081CB258
- movs r0, 0x5B
- bl FlagGet
- lsls r0, 24
-_081CB246:
- cmp r0, 0
- bne _081CB258
- movs r0, 0x1
- b _081CB25A
- .pool
-_081CB258:
- movs r0, 0
-_081CB25A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CB1D0
-
- thumb_func_start sub_81CB260
-sub_81CB260: @ 81CB260
- push {r4,lr}
- ldr r1, =0x00002048
- movs r0, 0x6
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081CB294
- movs r0, 0
- strb r0, [r4, 0x19]
- ldr r0, =sub_81CB324
- movs r1, 0x1
- bl sub_81C7078
- str r0, [r4, 0x4]
- ldr r0, =sub_81CB310
- str r0, [r4]
- movs r0, 0x1
- b _081CB296
- .pool
-_081CB294:
- movs r0, 0
-_081CB296:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CB260
-
- thumb_func_start sub_81CB29C
-sub_81CB29C: @ 81CB29C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x6
- bl GetSubstructPtr
- adds r5, r0, 0
- ldr r0, =gUnknown_08622798
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- movs r1, 0x1
- bl sub_81C7078
- str r0, [r5, 0x4]
- ldr r0, =sub_81CB310
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CB29C
-
- thumb_func_start sub_81CB2CC
-sub_81CB2CC: @ 81CB2CC
- push {lr}
- movs r0, 0x6
- bl GetSubstructPtr
- ldr r0, [r0]
- bl _call_via_r0
- pop {r1}
- bx r1
- thumb_func_end sub_81CB2CC
-
- thumb_func_start sub_81CB2E0
-sub_81CB2E0: @ 81CB2E0
- push {r4,lr}
- movs r0, 0x6
- bl GetSubstructPtr
- adds r4, r0, 0
- bl sub_81CC2B4
- bl sub_81CBC1C
- ldrb r0, [r4, 0x12]
- bl RemoveWindow
- ldrb r0, [r4, 0x10]
- bl RemoveWindow
- ldrb r0, [r4, 0x14]
- bl RemoveWindow
- movs r0, 0x6
- bl FreeSubstruct
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81CB2E0
-
- thumb_func_start sub_81CB310
-sub_81CB310: @ 81CB310
- push {lr}
- movs r0, 0x6
- bl GetSubstructPtr
- ldr r0, [r0, 0x4]
- bl sub_81C70D8
- pop {r1}
- bx r1
- thumb_func_end sub_81CB310
-
- thumb_func_start sub_81CB324
-sub_81CB324: @ 81CB324
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- movs r0, 0x6
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x7
- bls _081CB338
- b _081CB504
-_081CB338:
- lsls r0, r4, 2
- ldr r1, =_081CB348
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081CB348:
- .4byte _081CB368
- .4byte _081CB3D4
- .4byte _081CB424
- .4byte _081CB468
- .4byte _081CB482
- .4byte _081CB494
- .4byte _081CB4A6
- .4byte _081CB4EA
-_081CB368:
- ldr r0, =gUnknown_0862278C
- movs r1, 0x3
- bl InitBgTemplates
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- ldr r1, =gUnknown_08622530
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r0, =0x00001024
- adds r1, r5, r0
- movs r0, 0x2
- bl SetBgTilemapBuffer
- ldr r1, =gUnknown_086225D4
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- ldr r0, =gUnknown_08622510
- movs r1, 0x20
- movs r2, 0x20
- bl CopyPaletteIntoBufferUnfaded
- movs r0, 0x2
- b _081CB418
- .pool
-_081CB3D4:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- beq _081CB3E0
- b _081CB4FA
-_081CB3E0:
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_8199DF0
- adds r1, r5, 0
- adds r1, 0x24
- movs r0, 0x1
- bl SetBgTilemapBuffer
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- ldr r0, =gUnknown_086226E0
- movs r1, 0x10
- movs r2, 0x20
- bl CopyPaletteIntoBufferUnfaded
- movs r0, 0x1
-_081CB418:
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- b _081CB506
- .pool
-_081CB424:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _081CB4FA
- adds r0, r5, 0
- bl sub_81CC034
- ldr r1, =gUnknown_08622760
- str r4, [sp]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r0, =gUnknown_08622700
- movs r1, 0x30
- movs r2, 0x20
- bl CopyPaletteIntoBufferUnfaded
- ldr r0, =gUnknown_08622720
- movs r1, 0x50
- movs r2, 0x20
- bl CopyPaletteIntoBufferUnfaded
- movs r0, 0
- b _081CB506
- .pool
-_081CB468:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _081CB4FA
- bl sub_81CAE28
- cmp r0, 0
- beq _081CB4FA
- bl sub_81CBBB8
- movs r0, 0
- b _081CB506
-_081CB482:
- bl sub_81C8224
- cmp r0, 0
- bne _081CB4FA
- adds r0, r5, 0
- bl sub_81CBD78
- movs r0, 0
- b _081CB506
-_081CB494:
- adds r0, r5, 0
- bl sub_81CBDC0
- adds r0, r5, 0
- movs r1, 0
- bl sub_81CBEF8
- movs r0, 0
- b _081CB506
-_081CB4A6:
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- bl sub_81CC214
- movs r0, 0x3
- bl sub_81C7DFC
- movs r0, 0x3
- movs r1, 0x1
- movs r2, 0
- bl sub_81C7FA0
- movs r0, 0x1
- bl sub_81C7AC0
- movs r0, 0
- b _081CB506
-_081CB4EA:
- bl IsPaletteFadeActive
- cmp r0, 0
- bne _081CB4FA
- bl sub_81C8010
- cmp r0, 0
- beq _081CB4FE
-_081CB4FA:
- movs r0, 0x2
- b _081CB506
-_081CB4FE:
- movs r0, 0x1
- bl sub_81CBC38
-_081CB504:
- movs r0, 0x4
-_081CB506:
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CB324
-
- thumb_func_start sub_81CB510
-sub_81CB510: @ 81CB510
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x6
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081CB55E
- cmp r4, 0x1
- bgt _081CB52A
- cmp r4, 0
- beq _081CB534
- b _081CB580
-_081CB52A:
- cmp r4, 0x2
- beq _081CB566
- cmp r4, 0x3
- beq _081CB572
- b _081CB580
-_081CB534:
- bl sub_81C868C
- cmp r0, 0x1
- beq _081CB54C
- cmp r0, 0x1
- bgt _081CB546
- cmp r0, 0
- beq _081CB580
- b _081CB56E
-_081CB546:
- cmp r0, 0x2
- beq _081CB556
- b _081CB56E
-_081CB54C:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x7
- b _081CB582
-_081CB556:
- movs r0, 0x5
- bl PlaySE
- b _081CB56E
-_081CB55E:
- bl sub_81C8630
- cmp r0, 0
- bne _081CB57C
-_081CB566:
- adds r0, r5, 0
- movs r1, 0
- bl sub_81CBEF8
-_081CB56E:
- movs r0, 0
- b _081CB582
-_081CB572:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081CB580
-_081CB57C:
- movs r0, 0x2
- b _081CB582
-_081CB580:
- movs r0, 0x4
-_081CB582:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CB510
-
- thumb_func_start sub_81CB588
-sub_81CB588: @ 81CB588
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x6
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081CB5D6
- cmp r4, 0x1
- bgt _081CB5A2
- cmp r4, 0
- beq _081CB5AC
- b _081CB5F8
-_081CB5A2:
- cmp r4, 0x2
- beq _081CB5DE
- cmp r4, 0x3
- beq _081CB5EA
- b _081CB5F8
-_081CB5AC:
- bl sub_81C8658
- cmp r0, 0x1
- beq _081CB5C4
- cmp r0, 0x1
- bgt _081CB5BE
- cmp r0, 0
- beq _081CB5F8
- b _081CB5E6
-_081CB5BE:
- cmp r0, 0x2
- beq _081CB5CE
- b _081CB5E6
-_081CB5C4:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x7
- b _081CB5FA
-_081CB5CE:
- movs r0, 0x5
- bl PlaySE
- b _081CB5E6
-_081CB5D6:
- bl sub_81C8630
- cmp r0, 0
- bne _081CB5F4
-_081CB5DE:
- adds r0, r5, 0
- movs r1, 0
- bl sub_81CBEF8
-_081CB5E6:
- movs r0, 0
- b _081CB5FA
-_081CB5EA:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081CB5F8
-_081CB5F4:
- movs r0, 0x2
- b _081CB5FA
-_081CB5F8:
- movs r0, 0x4
-_081CB5FA:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CB588
-
- thumb_func_start sub_81CB600
-sub_81CB600: @ 81CB600
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x6
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081CB64E
- cmp r4, 0x1
- bgt _081CB61A
- cmp r4, 0
- beq _081CB624
- b _081CB670
-_081CB61A:
- cmp r4, 0x2
- beq _081CB656
- cmp r4, 0x3
- beq _081CB662
- b _081CB670
-_081CB624:
- bl sub_81C870C
- cmp r0, 0x1
- beq _081CB63C
- cmp r0, 0x1
- bgt _081CB636
- cmp r0, 0
- beq _081CB670
- b _081CB65E
-_081CB636:
- cmp r0, 0x2
- beq _081CB646
- b _081CB65E
-_081CB63C:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x7
- b _081CB672
-_081CB646:
- movs r0, 0x5
- bl PlaySE
- b _081CB65E
-_081CB64E:
- bl sub_81C8630
- cmp r0, 0
- bne _081CB66C
-_081CB656:
- adds r0, r5, 0
- movs r1, 0
- bl sub_81CBEF8
-_081CB65E:
- movs r0, 0
- b _081CB672
-_081CB662:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081CB670
-_081CB66C:
- movs r0, 0x2
- b _081CB672
-_081CB670:
- movs r0, 0x4
-_081CB672:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CB600
-
- thumb_func_start sub_81CB678
-sub_81CB678: @ 81CB678
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x6
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081CB6C6
- cmp r4, 0x1
- bgt _081CB692
- cmp r4, 0
- beq _081CB69C
- b _081CB6E8
-_081CB692:
- cmp r4, 0x2
- beq _081CB6CE
- cmp r4, 0x3
- beq _081CB6DA
- b _081CB6E8
-_081CB69C:
- bl sub_81C86CC
- cmp r0, 0x1
- beq _081CB6B4
- cmp r0, 0x1
- bgt _081CB6AE
- cmp r0, 0
- beq _081CB6E8
- b _081CB6D6
-_081CB6AE:
- cmp r0, 0x2
- beq _081CB6BE
- b _081CB6D6
-_081CB6B4:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x7
- b _081CB6EA
-_081CB6BE:
- movs r0, 0x5
- bl PlaySE
- b _081CB6D6
-_081CB6C6:
- bl sub_81C8630
- cmp r0, 0
- bne _081CB6E4
-_081CB6CE:
- adds r0, r5, 0
- movs r1, 0
- bl sub_81CBEF8
-_081CB6D6:
- movs r0, 0
- b _081CB6EA
-_081CB6DA:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081CB6E8
-_081CB6E4:
- movs r0, 0x2
- b _081CB6EA
-_081CB6E8:
- movs r0, 0x4
-_081CB6EA:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CB678
-
- thumb_func_start sub_81CB6F0
-sub_81CB6F0: @ 81CB6F0
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x6
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0
- beq _081CB706
- cmp r4, 0x1
- beq _081CB71C
- b _081CB72A
-_081CB706:
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_81CBF60
- movs r0, 0x7
- bl sub_81C7BA4
- movs r0, 0
- b _081CB72C
-_081CB71C:
- adds r0, r5, 0
- bl sub_81CBFC4
- cmp r0, 0
- beq _081CB72A
- movs r0, 0x2
- b _081CB72C
-_081CB72A:
- movs r0, 0x4
-_081CB72C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CB6F0
-
- thumb_func_start sub_81CB734
-sub_81CB734: @ 81CB734
- push {r4,lr}
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x6
- bl GetSubstructPtr
- adds r4, r0, 0
- bl sub_81CB01C
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_81CC344
- movs r0, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CB734
-
- thumb_func_start sub_81CB75C
-sub_81CB75C: @ 81CB75C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x6
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0
- beq _081CB772
- cmp r4, 0x1
- beq _081CB788
- b _081CB796
-_081CB772:
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_81CBFF0
- movs r0, 0x6
- bl sub_81C7BA4
- movs r0, 0
- b _081CB798
-_081CB788:
- adds r0, r5, 0
- bl sub_81CC004
- cmp r0, 0
- beq _081CB796
- movs r0, 0x2
- b _081CB798
-_081CB796:
- movs r0, 0x4
-_081CB798:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CB75C
-
- thumb_func_start sub_81CB7A0
-sub_81CB7A0: @ 81CB7A0
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x6
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081CB7D4
- cmp r4, 0x1
- bgt _081CB7BA
- cmp r4, 0
- beq _081CB7C4
- b _081CB81A
-_081CB7BA:
- cmp r4, 0x2
- beq _081CB7F8
- cmp r4, 0x3
- beq _081CB80C
- b _081CB81A
-_081CB7C4:
- movs r0, 0x1
- bl sub_81C9148
- adds r0, r5, 0
- bl sub_81CC058
- movs r0, 0
- b _081CB81C
-_081CB7D4:
- adds r0, r5, 0
- bl sub_81CC0D0
- adds r4, r0, 0
- cmp r4, 0
- bne _081CB816
- adds r0, r5, 0
- bl sub_81CC0E0
- ldr r0, =0x00000107
- bl PlaySE
- strb r4, [r5, 0xE]
- movs r0, 0
- b _081CB81C
- .pool
-_081CB7F8:
- adds r0, r5, 0
- bl sub_81CC104
- cmp r0, 0
- bne _081CB816
- adds r0, r5, 0
- bl sub_81CC158
- movs r0, 0
- b _081CB81C
-_081CB80C:
- adds r0, r5, 0
- bl sub_81CC194
- cmp r0, 0
- beq _081CB81A
-_081CB816:
- movs r0, 0x2
- b _081CB81C
-_081CB81A:
- movs r0, 0x4
-_081CB81C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CB7A0
-
- thumb_func_start sub_81CB824
-sub_81CB824: @ 81CB824
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x6
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081CB85E
- cmp r4, 0x1
- bgt _081CB83E
- cmp r4, 0
- beq _081CB844
- b _081CB880
-_081CB83E:
- cmp r4, 0x2
- beq _081CB872
- b _081CB880
-_081CB844:
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_81CC09C
- movs r0, 0x1
- bl sub_81C9148
- movs r0, 0x1
- strb r0, [r5, 0xE]
- movs r0, 0
- b _081CB882
-_081CB85E:
- adds r0, r5, 0
- bl sub_81CC0D0
- cmp r0, 0
- bne _081CB87C
- adds r0, r5, 0
- bl sub_81CC11C
- movs r0, 0
- b _081CB882
-_081CB872:
- adds r0, r5, 0
- bl sub_81CC140
- cmp r0, 0
- beq _081CB880
-_081CB87C:
- movs r0, 0x2
- b _081CB882
-_081CB880:
- movs r0, 0x4
-_081CB882:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CB824
-
- thumb_func_start sub_81CB888
-sub_81CB888: @ 81CB888
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r0, 0x6
- bl GetSubstructPtr
- adds r4, r0, 0
- movs r6, 0
- cmp r5, 0x6
- bhi _081CB934
- lsls r0, r5, 2
- ldr r1, =_081CB8A8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081CB8A8:
- .4byte _081CB8C4
- .4byte _081CB8DA
- .4byte _081CB8E2
- .4byte _081CB8F0
- .4byte _081CB8F8
- .4byte _081CB90C
- .4byte _081CB922
-_081CB8C4:
- ldrb r0, [r4, 0xE]
- cmp r0, 0
- bne _081CB8D2
- movs r0, 0x84
- lsls r0, 1
- bl PlaySE
-_081CB8D2:
- movs r0, 0x5
- bl PlaySE
- b _081CB934
-_081CB8DA:
- adds r0, r4, 0
- bl sub_81CC1DC
- b _081CB934
-_081CB8E2:
- adds r0, r4, 0
- bl sub_81CC204
- cmp r0, 0
- beq _081CB934
-_081CB8EC:
- movs r6, 0x2
- b _081CB934
-_081CB8F0:
- adds r0, r4, 0
- bl sub_81CBFF0
- b _081CB934
-_081CB8F8:
- adds r0, r4, 0
- bl sub_81CC004
- cmp r0, 0
- beq _081CB904
- movs r6, 0x2
-_081CB904:
- movs r0, 0x6
- bl sub_81C7BA4
- b _081CB934
-_081CB90C:
- bl IsDma3ManagerBusyWithBgCopy_
- cmp r0, 0
- bne _081CB8EC
- ldrb r0, [r4, 0xF]
- cmp r0, 0
- beq _081CB92C
- bl sub_81C8838
- movs r6, 0x1
- b _081CB934
-_081CB922:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081CB8EC
-_081CB92C:
- movs r0, 0
- bl sub_81C9148
- movs r6, 0x4
-_081CB934:
- adds r0, r6, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81CB888
-
- thumb_func_start sub_81CB93C
-sub_81CB93C: @ 81CB93C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x6
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081CB974
- cmp r4, 0x1
- bgt _081CB956
- cmp r4, 0
- beq _081CB960
- b _081CB9BE
-_081CB956:
- cmp r4, 0x2
- beq _081CB990
- cmp r4, 0x3
- beq _081CB9A0
- b _081CB9BE
-_081CB960:
- movs r0, 0x5
- bl PlaySE
- bl sub_81C877C
- adds r0, r5, 0
- bl sub_81CC014
- movs r0, 0
- b _081CB9C0
-_081CB974:
- bl sub_81C8820
- cmp r0, 0
- bne _081CB9BA
- adds r0, r5, 0
- bl sub_81CC004
- cmp r0, 0
- bne _081CB9BA
- movs r0, 0x8
- bl sub_81C7BA4
- movs r0, 0
- b _081CB9C0
-_081CB990:
- movs r0, 0
- bl sub_81C87AC
- adds r0, r5, 0
- bl sub_81CC39C
- movs r0, 0
- b _081CB9C0
-_081CB9A0:
- bl sub_81C8820
- cmp r0, 0
- bne _081CB9BA
- adds r0, r5, 0
- bl sub_81CC42C
- cmp r0, 0
- bne _081CB9BA
- bl IsDma3ManagerBusyWithBgCopy_
- cmp r0, 0
- beq _081CB9BE
-_081CB9BA:
- movs r0, 0x2
- b _081CB9C0
-_081CB9BE:
- movs r0, 0x4
-_081CB9C0:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CB93C
-
- thumb_func_start sub_81CB9C8
-sub_81CB9C8: @ 81CB9C8
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r0, 0x6
- bl GetSubstructPtr
- adds r4, r0, 0
- cmp r5, 0x4
- bhi _081CBA60
- lsls r0, r5, 2
- ldr r1, =_081CB9E8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081CB9E8:
- .4byte _081CB9FC
- .4byte _081CBA1C
- .4byte _081CBA34
- .4byte _081CBA40
- .4byte _081CBA4A
-_081CB9FC:
- bl sub_81C8770
- bl sub_81CB0E4
- adds r5, r0, 0
- cmp r5, 0
- beq _081CBA60
- movs r0, 0x5
- bl PlaySE
- strh r5, [r4, 0x16]
- adds r0, r4, 0
- bl sub_81CC420
- movs r0, 0
- b _081CBA62
-_081CBA1C:
- adds r0, r4, 0
- bl sub_81CC42C
- cmp r0, 0
- bne _081CBA5C
- movs r0, 0x16
- ldrsh r1, [r4, r0]
- adds r0, r4, 0
- bl sub_81CBEF8
- movs r0, 0
- b _081CBA62
-_081CBA34:
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- bl sub_81C87AC
- movs r0, 0
- b _081CBA62
-_081CBA40:
- adds r0, r4, 0
- bl sub_81CC39C
- movs r0, 0
- b _081CBA62
-_081CBA4A:
- bl sub_81C8820
- cmp r0, 0
- bne _081CBA5C
- adds r0, r4, 0
- bl sub_81CC42C
- cmp r0, 0
- beq _081CBA60
-_081CBA5C:
- movs r0, 0x2
- b _081CBA62
-_081CBA60:
- movs r0, 0x4
-_081CBA62:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CB9C8
-
- thumb_func_start sub_81CBA68
-sub_81CBA68: @ 81CBA68
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x6
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081CBA9C
- cmp r4, 0x1
- bgt _081CBA82
- cmp r4, 0
- beq _081CBA88
- b _081CBACC
-_081CBA82:
- cmp r4, 0x2
- beq _081CBABE
- b _081CBACC
-_081CBA88:
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_81CC420
- bl sub_81C87F0
- movs r0, 0
- b _081CBACE
-_081CBA9C:
- bl sub_81C8820
- cmp r0, 0
- bne _081CBAC8
- adds r0, r5, 0
- bl sub_81CC42C
- cmp r0, 0
- bne _081CBAC8
- movs r0, 0x6
- bl sub_81C7BA4
- adds r0, r5, 0
- bl sub_81CBDC0
- movs r0, 0
- b _081CBACE
-_081CBABE:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081CBACC
-_081CBAC8:
- movs r0, 0x2
- b _081CBACE
-_081CBACC:
- movs r0, 0x4
-_081CBACE:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CBA68
-
- thumb_func_start sub_81CBAD4
-sub_81CBAD4: @ 81CBAD4
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r0, 0x6
- bl GetSubstructPtr
- adds r4, r0, 0
- cmp r5, 0x4
- bhi _081CBB6C
- lsls r0, r5, 2
- ldr r1, =_081CBAF4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081CBAF4:
- .4byte _081CBB08
- .4byte _081CBB28
- .4byte _081CBB40
- .4byte _081CBB4C
- .4byte _081CBB56
-_081CBB08:
- bl sub_81C8770
- bl sub_81CB128
- adds r5, r0, 0
- cmp r5, 0
- beq _081CBB6C
- movs r0, 0x5
- bl PlaySE
- strh r5, [r4, 0x16]
- adds r0, r4, 0
- bl sub_81CC420
- movs r0, 0
- b _081CBB6E
-_081CBB28:
- adds r0, r4, 0
- bl sub_81CC42C
- cmp r0, 0
- bne _081CBB68
- movs r0, 0x16
- ldrsh r1, [r4, r0]
- adds r0, r4, 0
- bl sub_81CBEF8
- movs r0, 0
- b _081CBB6E
-_081CBB40:
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- bl sub_81C87AC
- movs r0, 0
- b _081CBB6E
-_081CBB4C:
- adds r0, r4, 0
- bl sub_81CC39C
- movs r0, 0
- b _081CBB6E
-_081CBB56:
- bl sub_81C8820
- cmp r0, 0
- bne _081CBB68
- adds r0, r4, 0
- bl sub_81CC42C
- cmp r0, 0
- beq _081CBB6C
-_081CBB68:
- movs r0, 0x2
- b _081CBB6E
-_081CBB6C:
- movs r0, 0x4
-_081CBB6E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CBAD4
-
- thumb_func_start sub_81CBB74
-sub_81CBB74: @ 81CBB74
- push {lr}
- cmp r0, 0
- beq _081CBB80
- cmp r0, 0x1
- beq _081CBB9A
- b _081CBBB2
-_081CBB80:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl sub_81CBC38
- movs r0, 0
- bl sub_81C7AC0
- bl sub_81C78A0
- movs r0, 0
- b _081CBBB4
-_081CBB9A:
- bl IsPaletteFadeActive
- cmp r0, 0
- bne _081CBBAA
- bl sub_81C78C0
- cmp r0, 0
- beq _081CBBAE
-_081CBBAA:
- movs r0, 0x2
- b _081CBBB4
-_081CBBAE:
- bl sub_81C7FDC
-_081CBBB2:
- movs r0, 0x4
-_081CBBB4:
- pop {r1}
- bx r1
- thumb_func_end sub_81CBB74
-
- thumb_func_start sub_81CBBB8
-sub_81CBBB8: @ 81CBBB8
- push {lr}
- sub sp, 0x18
- bl sub_81CAE94
- str r0, [sp]
- bl sub_81CAE38
- mov r1, sp
- movs r2, 0
- strh r0, [r1, 0x4]
- movs r0, 0x4
- strb r0, [r1, 0x8]
- mov r0, sp
- strh r2, [r0, 0x6]
- movs r0, 0xD
- strb r0, [r1, 0x9]
- movs r0, 0x10
- strb r0, [r1, 0xA]
- movs r0, 0x1
- strb r0, [r1, 0xB]
- movs r0, 0x8
- strb r0, [r1, 0xC]
- movs r0, 0x3
- strb r0, [r1, 0xD]
- movs r0, 0x7
- strb r0, [r1, 0xE]
- ldr r0, =sub_81CB050
- str r0, [sp, 0x10]
- ldr r0, =sub_81CBCEC
- str r0, [sp, 0x14]
- ldr r0, =gUnknown_08622794
- movs r2, 0x2
- bl sub_81C81D4
- ldr r0, =sub_81CBC64
- movs r1, 0x7
- bl CreateTask
- add sp, 0x18
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CBBB8
-
- thumb_func_start sub_81CBC1C
-sub_81CBC1C: @ 81CBC1C
- push {lr}
- bl sub_81C8234
- ldr r0, =sub_81CBC64
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CBC1C
-
- thumb_func_start sub_81CBC38
-sub_81CBC38: @ 81CBC38
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =sub_81CBC64
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _081CBC56
- ldr r1, =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0x26]
-_081CBC56:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CBC38
-
- thumb_func_start sub_81CBC64
-sub_81CBC64: @ 81CBC64
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks + 0x8
- adds r2, r1, r0
- movs r1, 0x1E
- ldrsh r0, [r2, r1]
- cmp r0, 0
- beq _081CBCC8
- ldrh r0, [r2]
- adds r0, 0x4
- movs r1, 0x7F
- ands r0, r1
- strh r0, [r2]
- ldr r1, =gSineTable
- movs r3, 0
- ldrsh r0, [r2, r3]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r2, 0x2]
- ldr r0, =gUnknown_08622720
- adds r1, r0, 0
- adds r1, 0x20
- movs r3, 0x2
- ldrsh r2, [r2, r3]
- str r2, [sp]
- ldr r4, =gPlttBufferUnfaded + 0xA0
- str r4, [sp, 0x4]
- movs r2, 0x10
- movs r3, 0x10
- bl sub_81C79BC
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081CBCC8
- ldr r1, =gPlttBufferFaded + 0xA0
- ldr r2, =0x04000008
- adds r0, r4, 0
- bl CpuSet
-_081CBCC8:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CBC64
-
- thumb_func_start sub_81CBCEC
-sub_81CBCEC: @ 81CBCEC
- push {r4-r6,lr}
- adds r5, r1, 0
- adds r4, r2, 0
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl GetWindowAttribute
- lsls r0, 24
- lsrs r0, 24
- bl GetBgTilemapBuffer
- adds r6, r0, 0
- lsls r4, 7
- adds r4, 0x3A
- adds r6, r4
- adds r0, r5, 0
- bl sub_81CAEBC
- cmp r0, 0
- beq _081CBD30
- movs r1, 0xA0
- lsls r1, 7
- adds r0, r1, 0
- strh r0, [r6]
- adds r1, r6, 0
- adds r1, 0x40
- ldr r2, =0x00005001
- adds r0, r2, 0
- strh r0, [r1]
- b _081CBD3C
- .pool
-_081CBD30:
- ldr r0, =0x00005002
- adds r1, r0, 0
- strh r1, [r6]
- adds r0, r6, 0
- adds r0, 0x40
- strh r1, [r0]
-_081CBD3C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CBCEC
-
- thumb_func_start sub_81CBD48
-sub_81CBD48: @ 81CBD48
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl GetWindowAttribute
- lsls r0, 24
- lsrs r0, 24
- bl GetBgTilemapBuffer
- lsls r4, 7
- adds r4, 0x3A
- adds r0, r4
- ldr r2, =0x00005002
- adds r1, r2, 0
- strh r1, [r0]
- adds r0, 0x40
- strh r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CBD48
-
- thumb_func_start sub_81CBD78
-sub_81CBD78: @ 81CBD78
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gUnknown_086227D8
- bl AddWindow
- strh r0, [r4, 0x10]
- ldr r0, =gUnknown_086227E0
- bl AddWindow
- strh r0, [r4, 0x12]
- ldrb r0, [r4, 0x10]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldrb r0, [r4, 0x10]
- bl PutWindowTilemap
- ldrb r0, [r4, 0x12]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldrb r0, [r4, 0x12]
- bl PutWindowTilemap
- ldrb r0, [r4, 0x10]
- movs r1, 0x1
- bl CopyWindowToVram
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CBD78
-
- thumb_func_start sub_81CBDC0
-sub_81CBDC0: @ 81CBDC0
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4, 0x12]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldrh r0, [r4, 0x12]
- bl sub_81CBDF4
- ldrh r0, [r4, 0x12]
- bl sub_81CBE0C
- ldrh r0, [r4, 0x12]
- bl sub_81CBE38
- ldrh r0, [r4, 0x12]
- bl sub_81CBE50
- ldrb r0, [r4, 0x12]
- movs r1, 0x2
- bl CopyWindowToVram
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81CBDC0
-
- thumb_func_start sub_81CBDF4
-sub_81CBDF4: @ 81CBDF4
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gText_NumberRegistered
- movs r2, 0
- bl sub_81CBE88
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CBDF4
-
- thumb_func_start sub_81CBE0C
-sub_81CBE0C: @ 81CBE0C
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- bl sub_81CAE38
- adds r1, r0, 0
- mov r0, sp
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r0, r4, 0
- mov r1, sp
- movs r2, 0x1
- bl sub_81CBEB4
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81CBE0C
-
- thumb_func_start sub_81CBE38
-sub_81CBE38: @ 81CBE38
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gText_NumberOfBattles
- movs r2, 0x2
- bl sub_81CBE88
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CBE38
-
- thumb_func_start sub_81CBE50
-sub_81CBE50: @ 81CBE50
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0x9
- bl GetGameStat
- adds r1, r0, 0
- ldr r0, =0x0001869f @ Note to decompiler: See UNKNOWN_OFFSET
- cmp r1, r0
- ble _081CBE68
- adds r1, r0, 0
-_081CBE68:
- mov r0, sp
- movs r2, 0
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- adds r0, r4, 0
- mov r1, sp
- movs r2, 0x3
- bl sub_81CBEB4
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CBE50
-
- thumb_func_start sub_81CBE88
-sub_81CBE88: @ 81CBE88
- push {lr}
- sub sp, 0xC
- adds r3, r1, 0
- lsls r2, 4
- adds r2, 0x1
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x7
- adds r2, r3, 0
- movs r3, 0x2
- bl AddTextPrinterParameterized
- add sp, 0xC
- pop {r0}
- bx r0
- thumb_func_end sub_81CBE88
-
- thumb_func_start sub_81CBEB4
-sub_81CBEB4: @ 81CBEB4
- push {r4-r6,lr}
- sub sp, 0xC
- adds r5, r0, 0
- adds r6, r1, 0
- adds r4, r2, 0
- lsls r5, 16
- lsrs r5, 16
- movs r0, 0x7
- movs r2, 0x56
- bl GetStringRightAlignXOffset
- adds r3, r0, 0
- lsls r4, 4
- adds r4, 0x1
- lsls r5, 24
- lsrs r5, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- str r4, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r5, 0
- movs r1, 0x7
- adds r2, r6, 0
- bl AddTextPrinterParameterized
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81CBEB4
-
- thumb_func_start sub_81CBEF8
-sub_81CBEF8: @ 81CBEF8
- push {r4,r5,lr}
- sub sp, 0x2C
- adds r5, r0, 0
- adds r4, r1, 0
- bl sub_81C875C
- adds r0, r4
- bl sub_81CAEA4
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0xD5
- beq _081CBF1C
- add r0, sp, 0xC
- movs r2, 0
- bl GetMapName
- b _081CBF24
-_081CBF1C:
- ldr r1, =gText_Unknown
- add r0, sp, 0xC
- bl StringCopy
-_081CBF24:
- movs r0, 0x7
- add r1, sp, 0xC
- movs r2, 0x58
- bl GetStringCenterAlignXOffset
- adds r4, r0, 0
- ldrb r0, [r5, 0x10]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldrb r0, [r5, 0x10]
- lsls r4, 24
- lsrs r4, 24
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x7
- add r2, sp, 0xC
- adds r3, r4, 0
- bl AddTextPrinterParameterized
- add sp, 0x2C
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CBEF8
-
- thumb_func_start sub_81CBF60
-sub_81CBF60: @ 81CBF60
- push {r4-r6,lr}
- sub sp, 0xC
- adds r5, r0, 0
- ldrb r0, [r5, 0x12]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- movs r4, 0
- movs r6, 0x80
- lsls r6, 17
- b _081CBF9C
-_081CBF76:
- ldrb r0, [r5, 0x12]
- ldr r2, =gUnknown_086227E8
- lsls r1, 2
- adds r1, r2
- ldr r2, [r1]
- lsrs r1, r6, 24
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x7
- movs r3, 0x10
- bl AddTextPrinterParameterized
- movs r0, 0x80
- lsls r0, 21
- adds r6, r0
- adds r4, 0x1
-_081CBF9C:
- cmp r4, 0x2
- bhi _081CBFAE
- adds r0, r4, 0
- bl sub_81CB02C
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x3
- bne _081CBF76
-_081CBFAE:
- ldrb r0, [r5, 0x12]
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CBF60
-
- thumb_func_start sub_81CBFC4
-sub_81CBFC4: @ 81CBFC4
- push {r4,lr}
- adds r4, r0, 0
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081CBFD6
- movs r0, 0x1
- b _081CBFE8
-_081CBFD6:
- bl sub_81CB01C
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_81CC2F0
- movs r0, 0
-_081CBFE8:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CBFC4
-
- thumb_func_start sub_81CBFF0
-sub_81CBFF0: @ 81CBFF0
- push {r4,lr}
- adds r4, r0, 0
- bl sub_81CC330
- adds r0, r4, 0
- bl sub_81CBDC0
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81CBFF0
-
- thumb_func_start sub_81CC004
-sub_81CC004: @ 81CC004
- push {lr}
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_81CC004
-
- thumb_func_start sub_81CC014
-sub_81CC014: @ 81CC014
- push {r4,lr}
- adds r4, r0, 0
- bl sub_81CC330
- ldrb r0, [r4, 0x12]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldrb r0, [r4, 0x12]
- movs r1, 0x2
- bl CopyWindowToVram
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81CC014
-
- thumb_func_start sub_81CC034
-sub_81CC034: @ 81CC034
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gUnknown_08622808
- bl AddWindow
- strh r0, [r4, 0x14]
- ldrh r0, [r4, 0x14]
- movs r1, 0x1
- movs r2, 0x4
- bl sub_8197184
- bl sub_81C7B40
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CC034
-
- thumb_func_start sub_81CC058
-sub_81CC058: @ 81CC058
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x14]
- movs r1, 0x1
- movs r2, 0x4
- bl sub_8197184
- ldrh r0, [r4, 0x14]
- movs r1, 0x1
- movs r2, 0x4
- bl sub_81971C4
- ldrb r0, [r4, 0x14]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldrb r0, [r4, 0x14]
- bl PutWindowTilemap
- ldrb r0, [r4, 0x14]
- movs r1, 0x3
- bl CopyWindowToVram
- bl sub_81C7CCC
- movs r2, 0
- movs r1, 0x18
- strh r1, [r0, 0x20]
- movs r1, 0x70
- strh r1, [r0, 0x22]
- strh r2, [r0, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81CC058
-
- thumb_func_start sub_81CC09C
-sub_81CC09C: @ 81CC09C
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4, 0x14]
- movs r1, 0x1
- movs r2, 0x40
- bl LoadUserWindowBorderGfx
- ldrb r0, [r4, 0x14]
- movs r1, 0x1
- movs r2, 0x4
- bl DrawTextBorderOuter
- ldrb r0, [r4, 0x14]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldrb r0, [r4, 0x14]
- bl PutWindowTilemap
- ldrb r0, [r4, 0x14]
- movs r1, 0x3
- bl CopyWindowToVram
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81CC09C
-
- thumb_func_start sub_81CC0D0
-sub_81CC0D0: @ 81CC0D0
- push {lr}
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_81CC0D0
-
- thumb_func_start sub_81CC0E0
-sub_81CC0E0: @ 81CC0E0
- push {lr}
- sub sp, 0xC
- ldrb r0, [r0, 0x14]
- ldr r2, =gUnknown_086227F4
- movs r1, 0x1
- str r1, [sp]
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0x20
- bl AddTextPrinterParameterized
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CC0E0
-
- thumb_func_start sub_81CC104
-sub_81CC104: @ 81CC104
- push {r4,lr}
- adds r4, r0, 0
- bl RunTextPrinters
- ldrb r0, [r4, 0x14]
- bl IsTextPrinterActive
- lsls r0, 16
- lsrs r0, 16
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CC104
-
- thumb_func_start sub_81CC11C
-sub_81CC11C: @ 81CC11C
- push {lr}
- sub sp, 0xC
- ldrb r0, [r0, 0x14]
- ldr r2, =gText_TrainerCloseBy
- movs r1, 0x1
- str r1, [sp]
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl AddTextPrinterParameterized
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CC11C
-
- thumb_func_start sub_81CC140
-sub_81CC140: @ 81CC140
- push {r4,lr}
- adds r4, r0, 0
- bl RunTextPrinters
- ldrb r0, [r4, 0x14]
- bl IsTextPrinterActive
- lsls r0, 16
- lsrs r0, 16
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CC140
-
- thumb_func_start sub_81CC158
-sub_81CC158: @ 81CC158
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r0, 0
- bl sub_81C875C
- adds r1, r4, 0
- adds r1, 0xF
- bl sub_81CAF78
- adds r5, r0, 0
- bl GetPlayerTextSpeedDelay
- lsls r0, 24
- lsrs r0, 24
- ldrb r2, [r4, 0x14]
- movs r1, 0x1
- str r1, [sp]
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r2, 0
- adds r2, r5, 0
- movs r3, 0x20
- bl AddTextPrinterParameterized
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81CC158
-
- thumb_func_start sub_81CC194
-sub_81CC194: @ 81CC194
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gMain
- ldrh r1, [r0, 0x2C]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081CC1B8
- ldr r0, =gTextFlags
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- b _081CC1C4
- .pool
-_081CC1B8:
- ldr r2, =gTextFlags
- ldrb r1, [r2]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_081CC1C4:
- bl RunTextPrinters
- ldrb r0, [r4, 0x14]
- bl IsTextPrinterActive
- lsls r0, 16
- lsrs r0, 16
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CC194
-
- thumb_func_start sub_81CC1DC
-sub_81CC1DC: @ 81CC1DC
- push {lr}
- sub sp, 0x8
- bl sub_81C7CE4
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_81CC1DC
-
- thumb_func_start sub_81CC204
-sub_81CC204: @ 81CC204
- push {lr}
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_81CC204
-
- thumb_func_start sub_81CC214
-sub_81CC214: @ 81CC214
- push {r4-r6,lr}
- sub sp, 0x8
- movs r0, 0x6
- bl GetSubstructPtr
- adds r6, r0, 0
- movs r5, 0
- ldr r4, =gUnknown_08622810
-_081CC224:
- adds r0, r4, 0
- bl LoadCompressedSpriteSheet
- adds r4, 0x8
- adds r5, 0x1
- cmp r5, 0
- beq _081CC224
- ldr r0, =gUnknown_08622818
- bl sub_81C795C
- movs r0, 0
- str r0, [r6, 0x1C]
- ldr r1, =0x00001828
- adds r0, r6, r1
- str r0, [sp]
- ldr r1, =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r1
- movs r1, 0x80
- lsls r1, 4
- orrs r0, r1
- ldr r1, =0x0000ffff
- ands r0, r1
- movs r1, 0x80
- lsls r1, 12
- orrs r0, r1
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- ldr r2, =0x00001824
- adds r1, r6, r2
- lsls r0, 16
- lsrs r0, 11
- ldr r2, =0x06010000
- adds r0, r2
- str r0, [r1]
- movs r0, 0xD
- bl AllocSpritePalette
- lsls r0, 24
- lsrs r0, 20
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- strh r0, [r6, 0x1A]
- bl sub_81CC370
- str r0, [r6, 0x20]
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CC214
-
- thumb_func_start sub_81CC2B4
-sub_81CC2B4: @ 81CC2B4
- push {r4,lr}
- movs r0, 0x6
- bl GetSubstructPtr
- adds r4, r0, 0
- ldr r0, [r4, 0x1C]
- cmp r0, 0
- beq _081CC2C8
- bl DestroySprite
-_081CC2C8:
- ldr r0, [r4, 0x20]
- cmp r0, 0
- beq _081CC2D2
- bl DestroySprite
-_081CC2D2:
- movs r0, 0x8
- bl FreeSpriteTilesByTag
- movs r0, 0x7
- bl FreeSpriteTilesByTag
- movs r0, 0xC
- bl FreeSpritePaletteByTag
- movs r0, 0xD
- bl FreeSpritePaletteByTag
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81CC2B4
-
- thumb_func_start sub_81CC2F0
-sub_81CC2F0: @ 81CC2F0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r0, [r4, 0x1C]
- cmp r0, 0
- bne _081CC320
- ldr r0, =gUnknown_08622830
- movs r1, 0x4
- movs r2, 0x50
- movs r3, 0x5
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, =gSprites
- adds r1, r0
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_81CC344
-_081CC320:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CC2F0
-
- thumb_func_start sub_81CC330
-sub_81CC330: @ 81CC330
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x1C]
- bl DestroySprite
- movs r0, 0
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81CC330
-
- thumb_func_start sub_81CC344
-sub_81CC344: @ 81CC344
- ldr r0, [r0, 0x1C]
- lsls r1, 4
- strh r1, [r0, 0x26]
- bx lr
- thumb_func_end sub_81CC344
-
- thumb_func_start sub_81CC34C
-sub_81CC34C: @ 81CC34C
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _081CC36C
- movs r0, 0
- strh r0, [r2, 0x2E]
- ldrh r0, [r2, 0x24]
- adds r0, 0x1
- movs r1, 0x7
- ands r0, r1
- strh r0, [r2, 0x24]
-_081CC36C:
- pop {r0}
- bx r0
- thumb_func_end sub_81CC34C
-
- thumb_func_start sub_81CC370
-sub_81CC370: @ 81CC370
- push {lr}
- ldr r0, =gUnknown_08622850
- movs r1, 0x2C
- movs r2, 0x68
- movs r3, 0x6
- bl CreateSprite
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CC370
-
- thumb_func_start sub_81CC39C
-sub_81CC39C: @ 81CC39C
- push {r4-r7,lr}
- adds r7, r0, 0
- bl sub_81C875C
- bl sub_81CAF04
- cmp r0, 0
- blt _081CC400
- lsls r4, r0, 3
- ldr r0, =gTrainerFrontPicTable
- adds r0, r4, r0
- ldr r1, =0x00001828
- adds r5, r7, r1
- adds r1, r5, 0
- movs r2, 0
- bl DecompressPicFromTable
- ldr r0, =gTrainerFrontPicPaletteTable
- adds r4, r0
- ldr r0, [r4]
- ldr r1, =0x00002028
- adds r6, r7, r1
- adds r1, r6, 0
- bl LZ77UnCompWram
- ldr r1, =0x00001824
- adds r0, r7, r1
- ldr r1, [r0]
- movs r2, 0x80
- lsls r2, 4
- adds r0, r5, 0
- movs r3, 0x1
- bl RequestDma3Copy
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldrh r1, [r7, 0x1A]
- adds r0, r6, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r1, [r7, 0x20]
- movs r0, 0
- strh r0, [r1, 0x2E]
- ldr r0, [r7, 0x20]
- strh r4, [r0, 0x3C]
- ldr r1, [r7, 0x20]
- ldr r0, =sub_81CC440
- str r0, [r1, 0x1C]
-_081CC400:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CC39C
-
- thumb_func_start sub_81CC420
-sub_81CC420: @ 81CC420
- ldr r1, [r0, 0x20]
- ldr r0, =sub_81CC4A4
- str r0, [r1, 0x1C]
- bx lr
- .pool
- thumb_func_end sub_81CC420
-
- thumb_func_start sub_81CC42C
-sub_81CC42C: @ 81CC42C
- ldr r0, [r0, 0x20]
- ldr r1, [r0, 0x1C]
- ldr r0, =SpriteCallbackDummy
- eors r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- bx lr
- .pool
- thumb_func_end sub_81CC42C
-
- thumb_func_start sub_81CC440
-sub_81CC440: @ 81CC440
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _081CC452
- cmp r0, 0x1
- beq _081CC484
- b _081CC498
-_081CC452:
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- bl CheckForSpaceForDma3Request
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _081CC498
- ldr r0, =0x0000ffb0
- strh r0, [r4, 0x24]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _081CC498
- .pool
-_081CC484:
- ldrh r0, [r4, 0x24]
- adds r0, 0x8
- strh r0, [r4, 0x24]
- lsls r0, 16
- cmp r0, 0
- blt _081CC498
- movs r0, 0
- strh r0, [r4, 0x24]
- ldr r0, =SpriteCallbackDummy
- str r0, [r4, 0x1C]
-_081CC498:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CC440
-
- thumb_func_start sub_81CC4A4
-sub_81CC4A4: @ 81CC4A4
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x24]
- subs r0, 0x8
- strh r0, [r3, 0x24]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x50
- negs r1, r1
- cmp r0, r1
- bgt _081CC4CA
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =SpriteCallbackDummy
- str r0, [r3, 0x1C]
-_081CC4CA:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CC4A4
-
- thumb_func_start sub_81CC4D4
-sub_81CC4D4: @ 81CC4D4
- push {r4,lr}
- movs r0, 0x3
- movs r1, 0x14
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081CC4F0
- ldr r1, =0x00000884
- movs r0, 0x10
- bl AllocSubstruct
- cmp r0, 0
- bne _081CC4F8
-_081CC4F0:
- movs r0, 0
- b _081CC51A
- .pool
-_081CC4F8:
- ldr r0, =gMapHeader
- ldrb r0, [r0, 0x14]
- bl sub_8124668
- str r0, [r4, 0xC]
- cmp r0, 0
- bne _081CC514
- ldr r0, =sub_81CC568
- b _081CC516
- .pool
-_081CC514:
- ldr r0, =sub_81CC5B4
-_081CC516:
- str r0, [r4, 0x10]
- movs r0, 0x1
-_081CC51A:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CC4D4
-
- thumb_func_start sub_81CC524
-sub_81CC524: @ 81CC524
- push {lr}
- bl sub_8124658
- ldr r1, =gSaveBlock2Ptr
- ldr r3, [r1]
- movs r1, 0x1
- ands r1, r0
- lsls r1, 3
- ldrb r2, [r3, 0x15]
- movs r0, 0x9
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x15]
- movs r0, 0x10
- bl FreeSubstruct
- movs r0, 0x3
- bl FreeSubstruct
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CC524
-
- thumb_func_start sub_81CC554
-sub_81CC554: @ 81CC554
- push {lr}
- movs r0, 0x3
- bl GetSubstructPtr
- ldr r1, [r0, 0x10]
- bl _call_via_r1
- pop {r1}
- bx r1
- thumb_func_end sub_81CC554
-
- thumb_func_start sub_81CC568
-sub_81CC568: @ 81CC568
- push {r4,lr}
- adds r4, r0, 0
- bl sub_81230AC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- beq _081CC58C
- cmp r0, 0x4
- bgt _081CC582
- cmp r0, 0x3
- beq _081CC588
- b _081CC5AC
-_081CC582:
- cmp r0, 0x5
- beq _081CC59E
- b _081CC5AC
-_081CC588:
- movs r0, 0x1
- b _081CC5AE
-_081CC58C:
- bl sub_8124658
- lsls r0, 24
- cmp r0, 0
- bne _081CC59A
- movs r0, 0x3
- b _081CC5AE
-_081CC59A:
- movs r0, 0x2
- b _081CC5AE
-_081CC59E:
- ldr r0, =sub_81CC5DC
- str r0, [r4, 0x10]
- movs r0, 0x4
- b _081CC5AE
- .pool
-_081CC5AC:
- movs r0, 0
-_081CC5AE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CC568
-
- thumb_func_start sub_81CC5B4
-sub_81CC5B4: @ 81CC5B4
- push {lr}
- adds r2, r0, 0
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _081CC5CC
- movs r0, 0
- b _081CC5D2
- .pool
-_081CC5CC:
- ldr r0, =sub_81CC5DC
- str r0, [r2, 0x10]
- movs r0, 0x4
-_081CC5D2:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CC5B4
-
- thumb_func_start sub_81CC5DC
-sub_81CC5DC: @ 81CC5DC
- ldr r0, =0x000186a1
- bx lr
- .pool
- thumb_func_end sub_81CC5DC
-
- thumb_func_start sub_81CC5E4
-sub_81CC5E4: @ 81CC5E4
- push {lr}
- movs r0, 0x3
- bl GetSubstructPtr
- ldr r0, [r0, 0xC]
- pop {r1}
- bx r1
- thumb_func_end sub_81CC5E4
-
- thumb_func_start sub_81CC5F4
-sub_81CC5F4: @ 81CC5F4
- push {r4,lr}
- ldr r1, =0x00001948
- movs r0, 0x4
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081CC624
- ldr r0, =sub_81CC6F4
- movs r1, 0x1
- bl sub_81C7078
- str r0, [r4, 0x4]
- ldr r0, =sub_81CC6BC
- str r0, [r4]
- movs r0, 0x1
- b _081CC626
- .pool
-_081CC624:
- movs r0, 0
-_081CC626:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CC5F4
-
- thumb_func_start sub_81CC62C
-sub_81CC62C: @ 81CC62C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x4
- bl GetSubstructPtr
- adds r5, r0, 0
- ldr r0, =gUnknown_086230E4
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- movs r1, 0x1
- bl sub_81C7078
- str r0, [r5, 0x4]
- ldr r0, =sub_81CC6BC
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CC62C
-
- thumb_func_start sub_81CC65C
-sub_81CC65C: @ 81CC65C
- push {lr}
- movs r0, 0x4
- bl GetSubstructPtr
- ldr r0, [r0]
- bl _call_via_r0
- pop {r1}
- bx r1
- thumb_func_end sub_81CC65C
-
- thumb_func_start sub_81CC670
-sub_81CC670: @ 81CC670
- push {r4,lr}
- movs r0, 0x4
- bl GetSubstructPtr
- adds r4, r0, 0
- bl FreeRegionMapIconResources
- bl sub_81CC9EC
- ldrb r0, [r4, 0x8]
- bl RemoveWindow
- movs r0, 0x10
- bl FreeSubstruct
- movs r0, 0x4
- bl FreeSubstruct
- bl SetPokenavVBlankCallback
- movs r0, 0
- bl SetBgMode
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81CC670
-
- thumb_func_start sub_81CC6A4
-sub_81CC6A4: @ 81CC6A4
- push {lr}
- bl TransferPlttBuffer
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl UpdateRegionMapVideoRegs
- pop {r0}
- bx r0
- thumb_func_end sub_81CC6A4
-
- thumb_func_start sub_81CC6BC
-sub_81CC6BC: @ 81CC6BC
- push {lr}
- movs r0, 0x4
- bl GetSubstructPtr
- ldr r0, [r0, 0x4]
- bl sub_81C70D8
- pop {r1}
- bx r1
- thumb_func_end sub_81CC6BC
-
- thumb_func_start sub_81CC6D0
-sub_81CC6D0: @ 81CC6D0
- push {lr}
- bl sub_81CC5E4
- cmp r0, 0
- bne _081CC6EC
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x15]
- lsrs r0, 3
- movs r1, 0x1
- ands r0, r1
- b _081CC6EE
- .pool
-_081CC6EC:
- movs r0, 0
-_081CC6EE:
- pop {r1}
- bx r1
- thumb_func_end sub_81CC6D0
-
- thumb_func_start sub_81CC6F4
-sub_81CC6F4: @ 81CC6F4
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x4
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x7
- bls _081CC706
- b _081CC83E
-_081CC706:
- lsls r0, r4, 2
- ldr r1, =_081CC714
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081CC714:
- .4byte _081CC734
- .4byte _081CC784
- .4byte _081CC7B6
- .4byte _081CC7BE
- .4byte _081CC7CE
- .4byte _081CC7E2
- .4byte _081CC804
- .4byte _081CC82A
-_081CC734:
- movs r0, 0
- bl SetVBlankCallback_
- movs r0, 0x1
- bl HideBg
- movs r0, 0x2
- bl HideBg
- movs r0, 0x3
- bl HideBg
- movs r0, 0x1
- bl SetBgMode
- ldr r4, =gUnknown_086230D8
- adds r0, r4, 0
- movs r1, 0x2
- bl InitBgTemplates
- movs r0, 0x10
- bl GetSubstructPtr
- adds r5, r0, 0
- adds r4, 0x4
- bl sub_81CC6D0
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_8122CF8
- bl sub_81CC9C0
-_081CC77C:
- movs r0, 0
- b _081CC840
- .pool
-_081CC784:
- bl sub_8122DB0
- lsls r0, 24
- cmp r0, 0
- bne _081CC83A
- bl sub_81CC5E4
- cmp r0, 0
- bne _081CC7AC
- movs r0, 0x4
- movs r1, 0x9
- bl CreateRegionMapPlayerIcon
- movs r0, 0x5
- movs r1, 0xA
- bl CreateRegionMapCursor
- bl sub_812454C
- b _081CC77C
-_081CC7AC:
- movs r0, 0
- movs r1, 0x6
- bl sub_8123030
- b _081CC77C
-_081CC7B6:
- bl sub_81CCD10
-_081CC7BA:
- movs r0, 0x1
- b _081CC840
-_081CC7BE:
- bl sub_81CCD24
- cmp r0, 0
- bne _081CC83A
- adds r0, r5, 0
- bl sub_81CCA1C
- b _081CC7BA
-_081CC7CE:
- bl sub_81CCAFC
- cmp r0, 0
- bne _081CC83A
- adds r0, r5, 0
- bl sub_81CCB0C
- bl sub_81C7B40
- b _081CC77C
-_081CC7E2:
- adds r0, r5, 0
- bl sub_81CCC4C
- cmp r0, 0
- bne _081CC83A
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- ldr r0, =sub_81CC6A4
- bl SetVBlankCallback_
- b _081CC77C
- .pool
-_081CC804:
- bl sub_81CC6D0
- lsls r0, 24
- movs r4, 0x5
- cmp r0, 0
- bne _081CC812
- movs r4, 0x4
-_081CC812:
- adds r0, r4, 0
- bl sub_81C7DFC
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0x1
- bl sub_81C7FA0
- movs r0, 0x1
- bl sub_81C7AC0
- b _081CC77C
-_081CC82A:
- bl IsPaletteFadeActive
- cmp r0, 0
- bne _081CC83A
- bl sub_81C8010
- cmp r0, 0
- beq _081CC7BA
-_081CC83A:
- movs r0, 0x2
- b _081CC840
-_081CC83E:
- movs r0, 0x4
-_081CC840:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CC6F4
-
- thumb_func_start sub_81CC848
-sub_81CC848: @ 81CC848
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x4
- bl GetSubstructPtr
- cmp r4, 0
- beq _081CC85C
- cmp r4, 0x1
- beq _081CC864
- b _081CC870
-_081CC85C:
- bl sub_81CCB0C
- movs r0, 0
- b _081CC872
-_081CC864:
- bl sub_81CCC4C
- cmp r0, 0
- beq _081CC870
- movs r0, 0x2
- b _081CC872
-_081CC870:
- movs r0, 0x4
-_081CC872:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CC848
-
- thumb_func_start sub_81CC878
-sub_81CC878: @ 81CC878
- push {lr}
- cmp r0, 0x1
- beq _081CC8A2
- cmp r0, 0x1
- bgt _081CC888
- cmp r0, 0
- beq _081CC88E
- b _081CC8D0
-_081CC888:
- cmp r0, 0x2
- beq _081CC8BE
- b _081CC8D0
-_081CC88E:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl sub_81CCC5C
- bl sub_8123418
- movs r0, 0
- b _081CC8D2
-_081CC8A2:
- bl sub_8123514
- lsls r0, 24
- cmp r0, 0
- bne _081CC8C6
- bl sub_81CCC88
- cmp r0, 0
- bne _081CC8C6
- movs r0, 0x1
- bl sub_81C7BA4
- movs r0, 0
- b _081CC8D2
-_081CC8BE:
- bl IsDma3ManagerBusyWithBgCopy_
- cmp r0, 0
- beq _081CC8CA
-_081CC8C6:
- movs r0, 0x2
- b _081CC8D2
-_081CC8CA:
- movs r0, 0x4
- bl sub_81C7E14
-_081CC8D0:
- movs r0, 0x4
-_081CC8D2:
- pop {r1}
- bx r1
- thumb_func_end sub_81CC878
-
- thumb_func_start sub_81CC8D8
-sub_81CC8D8: @ 81CC8D8
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x4
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081CC90C
- cmp r4, 0x1
- bgt _081CC8F2
- cmp r4, 0
- beq _081CC8FC
- b _081CC952
-_081CC8F2:
- cmp r4, 0x2
- beq _081CC924
- cmp r4, 0x3
- beq _081CC940
- b _081CC952
-_081CC8FC:
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_81CCB0C
- movs r0, 0
- b _081CC954
-_081CC90C:
- adds r0, r5, 0
- bl sub_81CCC4C
- cmp r0, 0
- bne _081CC948
- movs r0, 0x1
- bl sub_81CCC5C
- bl sub_8123418
- movs r0, 0
- b _081CC954
-_081CC924:
- bl sub_8123514
- lsls r0, 24
- cmp r0, 0
- bne _081CC948
- bl sub_81CCC88
- cmp r0, 0
- bne _081CC948
- movs r0, 0x2
- bl sub_81C7BA4
- movs r0, 0
- b _081CC954
-_081CC940:
- bl IsDma3ManagerBusyWithBgCopy_
- cmp r0, 0
- beq _081CC94C
-_081CC948:
- movs r0, 0x2
- b _081CC954
-_081CC94C:
- movs r0, 0x5
- bl sub_81C7E14
-_081CC952:
- movs r0, 0x4
-_081CC954:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CC8D8
-
- thumb_func_start sub_81CC95C
-sub_81CC95C: @ 81CC95C
- push {lr}
- cmp r0, 0x1
- beq _081CC982
- cmp r0, 0x1
- bgt _081CC96C
- cmp r0, 0
- beq _081CC972
- b _081CC9B8
-_081CC96C:
- cmp r0, 0x2
- beq _081CC996
- b _081CC9B8
-_081CC972:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl sub_81C7AC0
- movs r0, 0
- b _081CC9BA
-_081CC982:
- bl IsPaletteFadeActive
- cmp r0, 0
- bne _081CC99E
- bl sub_81C7FDC
- bl sub_81C78A0
- movs r0, 0
- b _081CC9BA
-_081CC996:
- bl sub_81C78C0
- cmp r0, 0
- beq _081CC9A2
-_081CC99E:
- movs r0, 0x2
- b _081CC9BA
-_081CC9A2:
- movs r0, 0x1
- bl HideBg
- movs r0, 0x2
- bl HideBg
- movs r0, 0x3
- bl HideBg
- movs r0, 0
- b _081CC9BA
-_081CC9B8:
- movs r0, 0x4
-_081CC9BA:
- pop {r1}
- bx r1
- thumb_func_end sub_81CC95C
-
- thumb_func_start sub_81CC9C0
-sub_81CC9C0: @ 81CC9C0
- push {r4,r5,lr}
- movs r5, 0
- ldr r4, =gUnknown_086230F8
-_081CC9C6:
- adds r0, r4, 0
- bl LoadCompressedSpriteSheet
- adds r4, 0x8
- adds r5, 0x1
- cmp r5, 0
- beq _081CC9C6
- ldr r0, =gUnknown_08623100
- bl sub_81C795C
- bl sub_81CCE58
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CC9C0
-
- thumb_func_start sub_81CC9EC
-sub_81CC9EC: @ 81CC9EC
- push {r4,r5,lr}
- movs r0, 0x4
- bl GetSubstructPtr
- adds r4, r0, 0
- movs r0, 0x6
- bl FreeSpriteTilesByTag
- movs r0, 0xB
- bl FreeSpritePaletteByTag
- adds r5, r4, 0
- adds r5, 0xC
- movs r4, 0x2
-_081CCA08:
- ldm r5!, {r0}
- bl DestroySprite
- subs r4, 0x1
- cmp r4, 0
- bge _081CCA08
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81CC9EC
-
- thumb_func_start sub_81CCA1C
-sub_81CCA1C: @ 81CCA1C
- push {r4,r5,lr}
- sub sp, 0x8
- adds r5, r0, 0
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x40
- movs r3, 0x1
- bl sub_8199DF0
- movs r0, 0x1
- movs r1, 0x11
- movs r2, 0x41
- movs r3, 0x1
- bl sub_8199DF0
- add r1, sp, 0x4
- movs r2, 0x82
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- adds r4, r5, 0
- adds r4, 0x18
- ldr r2, =0x01000400
- adds r0, r1, 0
- adds r1, r4, 0
- bl CpuSet
- movs r0, 0x1
- adds r1, r4, 0
- bl SetBgTilemapBuffer
- ldr r0, =gUnknown_08623110
- bl AddWindow
- movs r4, 0
- strh r0, [r5, 0x8]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x42
- movs r2, 0x40
- bl LoadUserWindowBorderGfx_
- ldrb r0, [r5, 0x8]
- movs r1, 0x42
- movs r2, 0x4
- bl DrawTextBorderOuter
- ldr r1, =gUnknown_08622888
- str r4, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldrb r0, [r5, 0x8]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldrb r0, [r5, 0x8]
- bl PutWindowTilemap
- ldrb r0, [r5, 0x8]
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, =gUnknown_08622868
- movs r1, 0x10
- movs r2, 0x20
- bl CopyPaletteIntoBufferUnfaded
- ldr r0, =gHoennMapZoomIcons_Pal
- movs r1, 0x30
- movs r2, 0x20
- bl CopyPaletteIntoBufferUnfaded
- bl sub_8124658
- lsls r0, 24
- cmp r0, 0
- bne _081CCAE0
- ldr r1, =0xffffa000
- movs r0, 0x1
- movs r2, 0
- bl ChangeBgY
- b _081CCAEA
- .pool
-_081CCAE0:
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
-_081CCAEA:
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81CCA1C
-
- thumb_func_start sub_81CCAFC
-sub_81CCAFC: @ 81CCAFC
- push {lr}
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_81CCAFC
-
- thumb_func_start sub_81CCB0C
-sub_81CCB0C: @ 81CCB0C
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r0, 0
- movs r0, 0x10
- bl GetSubstructPtr
- adds r5, r0, 0
- ldrb r0, [r5, 0x2]
- cmp r0, 0x4
- bls _081CCB22
- b _081CCC40
-_081CCB22:
- lsls r0, 2
- ldr r1, =_081CCB30
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081CCB30:
- .4byte _081CCC1C
- .4byte _081CCBDC
- .4byte _081CCB44
- .4byte _081CCB8E
- .4byte _081CCBDC
-_081CCB44:
- ldrb r0, [r4, 0x8]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldrb r0, [r4, 0x8]
- movs r1, 0x2
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0xC
- bl PutWindowRectTilemap
- ldrb r0, [r4, 0x8]
- adds r2, r5, 0x4
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x7
- movs r3, 0
- bl AddTextPrinterParameterized
- ldrh r1, [r5]
- ldrb r2, [r5, 0x3]
- adds r0, r4, 0
- bl sub_81CCD70
- ldrb r0, [r4, 0x8]
- movs r1, 0x3
- bl CopyWindowToVram
- movs r0, 0
- bl sub_81CCFA4
- b _081CCC40
-_081CCB8E:
- ldrb r0, [r4, 0x8]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldrb r0, [r4, 0x8]
- movs r1, 0x2
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0xC
- bl PutWindowRectTilemap
- ldrb r0, [r4, 0x8]
- adds r2, r5, 0x4
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x7
- movs r3, 0
- bl AddTextPrinterParameterized
- ldr r1, =0x00001041
- movs r0, 0xC
- str r0, [sp]
- movs r0, 0xB
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r2, 0x11
- movs r3, 0x6
- bl FillBgTilemapBufferRect
- b _081CCC0C
- .pool
-_081CCBDC:
- ldrb r0, [r4, 0x8]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldrb r0, [r4, 0x8]
- bl PutWindowTilemap
- ldrb r0, [r4, 0x8]
- adds r2, r5, 0x4
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x7
- movs r3, 0
- bl AddTextPrinterParameterized
- ldrh r1, [r5]
- ldrb r2, [r5, 0x3]
- adds r0, r4, 0
- bl sub_81CCDE8
-_081CCC0C:
- ldrb r0, [r4, 0x8]
- movs r1, 0x3
- bl CopyWindowToVram
- movs r0, 0x1
- bl sub_81CCFA4
- b _081CCC40
-_081CCC1C:
- ldr r1, =0x00001041
- movs r0, 0xC
- str r0, [sp]
- movs r0, 0xD
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r2, 0x11
- movs r3, 0x4
- bl FillBgTilemapBufferRect
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl sub_81CCFA4
-_081CCC40:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CCB0C
-
- thumb_func_start sub_81CCC4C
-sub_81CCC4C: @ 81CCC4C
- push {lr}
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_81CCC4C
-
- thumb_func_start sub_81CCC5C
-sub_81CCC5C: @ 81CCC5C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =sub_81CCC9C
- movs r1, 0x3
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CCC5C
-
- thumb_func_start sub_81CCC88
-sub_81CCC88: @ 81CCC88
- push {lr}
- ldr r0, =sub_81CCC9C
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CCC88
-
- thumb_func_start sub_81CCC9C
-sub_81CCC9C: @ 81CCC9C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _081CCCE0
- movs r1, 0x90
- lsls r1, 3
- movs r0, 0x1
- movs r2, 0x1
- bl ChangeBgY
- cmp r0, 0
- blt _081CCCD6
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- adds r0, r4, 0
- bl DestroyTask
-_081CCCD6:
- bl sub_81CCF78
- b _081CCD04
- .pool
-_081CCCE0:
- movs r1, 0x90
- lsls r1, 3
- movs r0, 0x1
- movs r2, 0x2
- bl ChangeBgY
- ldr r1, =0xffffa000
- cmp r0, r1
- bgt _081CCD00
- movs r0, 0x1
- movs r2, 0
- bl ChangeBgY
- adds r0, r5, 0
- bl DestroyTask
-_081CCD00:
- bl sub_81CCF78
-_081CCD04:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CCC9C
-
- thumb_func_start sub_81CCD10
-sub_81CCD10: @ 81CCD10
- push {lr}
- ldr r0, =sub_81CCD34
- movs r1, 0x1
- bl sub_81C7078
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CCD10
-
- thumb_func_start sub_81CCD24
-sub_81CCD24: @ 81CCD24
- push {lr}
- ldr r0, =sub_81CCD34
- bl sub_81C7124
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CCD24
-
- thumb_func_start sub_81CCD34
-sub_81CCD34: @ 81CCD34
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x4
- bl GetSubstructPtr
- adds r2, r0, 0
- cmp r4, 0x15
- ble _081CCD48
- movs r0, 0x4
- b _081CCD62
-_081CCD48:
- ldr r0, =gUnknown_08623118
- lsls r1, r4, 3
- adds r0, 0x4
- adds r1, r0
- ldr r0, [r1]
- movs r1, 0xC8
- muls r1, r4
- ldr r3, =0x00000818
- adds r1, r3
- adds r1, r2, r1
- bl LZ77UnCompWram
- movs r0, 0x1
-_081CCD62:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CCD34
-
- thumb_func_start sub_81CCD70
-sub_81CCD70: @ 81CCD70
- push {r4-r6,lr}
- sub sp, 0x8
- adds r6, r0, 0
- adds r3, r1, 0
- movs r4, 0
- ldr r0, =gUnknown_08623118
- ldrh r1, [r0]
- adds r5, r0, 0
- cmp r1, r3
- bne _081CCD8A
- ldrh r0, [r5, 0x2]
- cmp r0, r2
- beq _081CCDA0
-_081CCD8A:
- adds r4, 0x1
- cmp r4, 0x15
- bgt _081CCDA0
- lsls r0, r4, 3
- adds r1, r0, r5
- ldrh r0, [r1]
- cmp r0, r3
- bne _081CCD8A
- ldrh r0, [r1, 0x2]
- cmp r0, r2
- bne _081CCD8A
-_081CCDA0:
- cmp r4, 0x16
- beq _081CCDD4
- ldr r1, =0x00001041
- movs r0, 0xC
- str r0, [sp]
- movs r0, 0xB
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r2, 0x11
- movs r3, 0x6
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0xC8
- adds r1, r4, 0
- muls r1, r0
- ldr r0, =0x00000818
- adds r1, r0
- adds r1, r6, r1
- movs r0, 0xA
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r2, 0x12
- movs r3, 0x6
- bl CopyToBgTilemapBufferRect
-_081CCDD4:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CCD70
-
- thumb_func_start sub_81CCDE8
-sub_81CCDE8: @ 81CCDE8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- mov r9, r0
- movs r5, 0
- ldr r6, =gStringVar1
- movs r4, 0x88
- lsls r4, 21
- lsls r1, 24
- mov r8, r1
- lsls r7, r2, 24
- b _081CCE34
- .pool
-_081CCE08:
- adds r0, r6, 0
- movs r2, 0
- movs r3, 0xC
- bl StringCopyPadded
- mov r1, r9
- ldrb r0, [r1, 0x8]
- lsrs r1, r4, 24
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x7
- adds r2, r6, 0
- movs r3, 0
- bl AddTextPrinterParameterized
- movs r0, 0x80
- lsls r0, 21
- adds r4, r0
- adds r5, 0x1
-_081CCE34:
- lsls r2, r5, 24
- lsrs r2, 24
- mov r1, r8
- lsrs r0, r1, 24
- lsrs r1, r7, 24
- bl GetLandmarkName
- adds r1, r0, 0
- cmp r1, 0
- bne _081CCE08
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81CCDE8
-
- thumb_func_start sub_81CCE58
-sub_81CCE58: @ 81CCE58
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r0, 0x4
- bl GetSubstructPtr
- adds r4, r0, 0
- bl sub_8124658
- lsls r0, 24
- movs r2, 0x84
- cmp r0, 0
- bne _081CCE74
- movs r2, 0xE4
-_081CCE74:
- movs r5, 0
- lsls r7, r2, 16
- adds r4, 0xC
- mov r8, r4
- movs r6, 0x98
- lsls r6, 16
-_081CCE80:
- asrs r1, r6, 16
- ldr r0, =gUnknown_086231D0
- asrs r2, r7, 16
- movs r3, 0x8
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, =gSprites
- adds r2, r0
- movs r0, 0
- strh r0, [r2, 0x2E]
- lsls r4, r5, 2
- strh r4, [r2, 0x30]
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r0, r1, 22
- adds r1, r0, 0
- strh r0, [r2, 0x32]
- movs r0, 0x96
- strh r0, [r2, 0x34]
- strh r4, [r2, 0x36]
- adds r1, r4
- ldr r4, =0x000003ff
- adds r0, r4, 0
- ands r1, r0
- ldr r4, =0xfffffc00
- adds r0, r4, 0
- ands r3, r0
- orrs r3, r1
- strh r3, [r2, 0x4]
- mov r0, r8
- adds r0, 0x4
- mov r8, r0
- subs r0, 0x4
- stm r0!, {r2}
- movs r4, 0x80
- lsls r4, 14
- adds r6, r4
- adds r5, 0x1
- cmp r5, 0x2
- ble _081CCE80
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CCE58
-
- thumb_func_start sub_81CCEF4
-sub_81CCEF4: @ 81CCEF4
- push {r4,r5,lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x34]
- movs r1, 0x34
- ldrsh r4, [r3, r1]
- cmp r4, 0
- beq _081CCF06
- subs r0, 0x1
- b _081CCF6E
-_081CCF06:
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB
- ble _081CCF16
- strh r4, [r3, 0x2E]
-_081CCF16:
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3C
- ble _081CCF26
- strh r4, [r3, 0x30]
-_081CCF26:
- ldrh r5, [r3, 0x30]
- ldrh r2, [r3, 0x32]
- adds r1, r5, r2
- ldr r2, =0x000003ff
- adds r0, r2, 0
- ands r1, r0
- ldrh r2, [r3, 0x4]
- ldr r0, =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r3, 0x4]
- ldrh r1, [r3, 0x38]
- movs r2, 0x38
- ldrsh r0, [r3, r2]
- cmp r0, 0x3
- bgt _081CCF5C
- movs r2, 0x2E
- ldrsh r0, [r3, r2]
- cmp r0, 0
- bne _081CCF70
- adds r0, r1, 0x1
- strh r0, [r3, 0x38]
- b _081CCF6C
- .pool
-_081CCF5C:
- lsls r0, r5, 16
- asrs r0, 16
- movs r2, 0x36
- ldrsh r1, [r3, r2]
- cmp r0, r1
- bne _081CCF70
- strh r4, [r3, 0x38]
- strh r4, [r3, 0x2E]
-_081CCF6C:
- movs r0, 0x78
-_081CCF6E:
- strh r0, [r3, 0x34]
-_081CCF70:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81CCEF4
-
- thumb_func_start sub_81CCF78
-sub_81CCF78: @ 81CCF78
- push {r4,lr}
- movs r0, 0x4
- bl GetSubstructPtr
- adds r4, r0, 0
- movs r0, 0x1
- bl GetBgY
- asrs r0, 8
- movs r1, 0x84
- subs r1, r0
- adds r4, 0xC
- movs r2, 0x2
-_081CCF92:
- ldm r4!, {r0}
- strh r1, [r0, 0x22]
- subs r2, 0x1
- cmp r2, 0
- bge _081CCF92
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81CCF78
-
- thumb_func_start sub_81CCFA4
-sub_81CCFA4: @ 81CCFA4
- push {r4-r6,lr}
- adds r4, r0, 0
- movs r0, 0x4
- bl GetSubstructPtr
- movs r1, 0x1
- ands r4, r1
- lsls r5, r4, 2
- movs r6, 0x5
- negs r6, r6
- adds r4, r0, 0
- adds r4, 0xC
- movs r3, 0x2
-_081CCFBE:
- ldm r4!, {r0}
- adds r0, 0x3E
- ldrb r2, [r0]
- adds r1, r6, 0
- ands r1, r2
- orrs r1, r5
- strb r1, [r0]
- subs r3, 0x1
- cmp r3, 0
- bge _081CCFBE
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81CCFA4
-
- thumb_func_start sub_81CCFD8
-sub_81CCFD8: @ 81CCFD8
- push {r4,lr}
- ldr r1, =0x0000678c
- movs r0, 0xB
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081CD01C
- ldr r1, =0x00006428
- adds r0, r4, r1
- bl sub_81D1ED4
- bl sub_81CD970
- ldr r1, =gKeyRepeatStartDelay
- movs r0, 0x14
- strh r0, [r1]
- ldr r0, =0x00006304
- adds r1, r4, r0
- ldr r0, =sub_81CD08C
- str r0, [r1]
- movs r0, 0x1
- b _081CD01E
- .pool
-_081CD01C:
- movs r0, 0
-_081CD01E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CCFD8
-
- thumb_func_start sub_81CD024
-sub_81CD024: @ 81CD024
- push {r4,lr}
- ldr r1, =0x0000678c
- movs r0, 0xB
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081CD068
- ldr r1, =0x00006428
- adds r0, r4, r1
- bl sub_81D1ED4
- bl sub_81CD9F8
- ldr r1, =gKeyRepeatStartDelay
- movs r0, 0x14
- strh r0, [r1]
- ldr r0, =0x00006304
- adds r1, r4, r0
- ldr r0, =sub_81CD08C
- str r0, [r1]
- movs r0, 0x1
- b _081CD06A
- .pool
-_081CD068:
- movs r0, 0
-_081CD06A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CD024
-
- thumb_func_start sub_81CD070
-sub_81CD070: @ 81CD070
- push {lr}
- movs r0, 0xB
- bl GetSubstructPtr
- ldr r2, =0x00006304
- adds r1, r0, r2
- ldr r1, [r1]
- bl _call_via_r1
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CD070
-
- thumb_func_start sub_81CD08C
-sub_81CD08C: @ 81CD08C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x12
- bl GetSubstructPtr
- adds r5, r0, 0
- adds r0, r4, 0
- bl sub_81CD1E4
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _081CD100
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _081CD0D0
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081CD100
- movs r1, 0xC6
- lsls r1, 7
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _081CD0F0
- ldrh r1, [r5, 0x2]
- ldrh r0, [r5]
- subs r0, 0x1
- cmp r1, r0
- bne _081CD100
-_081CD0D0:
- movs r0, 0x5
- bl PlaySE
- ldr r0, =0x00006304
- adds r1, r4, r0
- ldr r0, =sub_81CD19C
- str r0, [r1]
- movs r2, 0x2
- b _081CD100
- .pool
-_081CD0F0:
- movs r0, 0x5
- bl PlaySE
- movs r2, 0x5
- ldr r0, =0x00006304
- adds r1, r4, r0
- ldr r0, =sub_81CD110
- str r0, [r1]
-_081CD100:
- adds r0, r2, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CD08C
-
- thumb_func_start sub_81CD110
-sub_81CD110: @ 81CD110
- push {r4-r6,lr}
- sub sp, 0x4
- adds r6, r0, 0
- movs r4, 0
- bl sub_811FBA4
- lsls r0, 24
- cmp r0, 0
- bne _081CD18A
- bl sub_81CEF14
- ldr r1, =0x00006786
- adds r5, r6, r1
- movs r1, 0
- ldrsb r1, [r5, r1]
- ldr r2, =0x00006783
- adds r4, r6, r2
- adds r1, r4, r1
- strb r0, [r1]
- movs r0, 0x12
- bl GetSubstructPtr
- ldrh r1, [r0, 0x2]
- lsls r1, 2
- adds r0, r1
- ldrb r2, [r0, 0x4]
- ldrb r3, [r0, 0x5]
- movs r0, 0
- ldrsb r0, [r5, r0]
- adds r4, r0
- ldrb r1, [r4]
- mov r0, sp
- strb r1, [r0]
- cmp r2, 0xE
- bne _081CD174
- movs r0, 0x64
- muls r0, r3
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x8
- mov r2, sp
- bl SetMonData
- b _081CD180
- .pool
-_081CD174:
- adds r0, r2, 0
- adds r1, r3, 0
- movs r2, 0x8
- mov r3, sp
- bl SetBoxMonDataAt
-_081CD180:
- ldr r0, =0x00006304
- adds r1, r6, r0
- ldr r0, =sub_81CD08C
- str r0, [r1]
- movs r4, 0x6
-_081CD18A:
- adds r0, r4, 0
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CD110
-
- thumb_func_start sub_81CD19C
-sub_81CD19C: @ 81CD19C
- push {lr}
- movs r1, 0xC6
- lsls r1, 7
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _081CD1B4
- ldr r0, =0x000186aa
- b _081CD1B6
- .pool
-_081CD1B4:
- ldr r0, =0x000186a2
-_081CD1B6:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CD19C
-
- thumb_func_start sub_81CD1C0
-sub_81CD1C0: @ 81CD1C0
- push {lr}
- movs r0, 0xB
- bl GetSubstructPtr
- movs r1, 0xC6
- lsls r1, 7
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _081CD1DA
- movs r0, 0x12
- bl FreeSubstruct
-_081CD1DA:
- movs r0, 0xB
- bl FreeSubstruct
- pop {r0}
- bx r0
- thumb_func_end sub_81CD1C0
-
- thumb_func_start sub_81CD1E4
-sub_81CD1E4: @ 81CD1E4
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x12
- bl GetSubstructPtr
- adds r2, r0, 0
- movs r3, 0
- ldr r0, =gMain
- ldrh r1, [r0, 0x2C]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081CD220
- movs r1, 0xC6
- lsls r1, 7
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _081CD210
- ldrh r0, [r2, 0x2]
- cmp r0, 0
- beq _081CD24E
-_081CD210:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- b _081CD246
- .pool
-_081CD220:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081CD24E
- movs r1, 0xC6
- lsls r1, 7
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _081CD23E
- ldrh r1, [r2, 0x2]
- ldrh r0, [r2]
- subs r0, 0x1
- cmp r1, r0
- bge _081CD24E
-_081CD23E:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
-_081CD246:
- bl sub_81CD258
- lsls r0, 24
- lsrs r3, r0, 24
-_081CD24E:
- adds r0, r3, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CD1E4
-
- thumb_func_start sub_81CD258
-sub_81CD258: @ 81CD258
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r0, 0xB
- bl GetSubstructPtr
- adds r4, r0, 0
- movs r0, 0x12
- bl GetSubstructPtr
- adds r5, r0, 0
- mov r0, r8
- cmp r0, 0
- beq _081CD284
- ldr r1, =0x00006788
- adds r0, r4, r1
- b _081CD288
- .pool
-_081CD284:
- ldr r2, =0x00006787
- adds r0, r4, r2
-_081CD288:
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r0, 16
- adds r7, r0, 0
- ldr r1, =0x00006428
- adds r0, r4, r1
- ldr r2, =0x00006786
- adds r1, r4, r2
- movs r2, 0
- ldrsb r2, [r1, r2]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 2
- ldr r3, =0x0000643c
- adds r1, r3
- adds r1, r4, r1
- lsls r2, r7, 2
- adds r2, r7
- lsls r2, 2
- adds r2, r3
- adds r2, r4, r2
- bl sub_81D1F84
- ldrh r6, [r5, 0x2]
- bl sub_81CDD5C
- cmp r0, 0
- beq _081CD2D8
- ldrh r1, [r5]
- b _081CD2DC
- .pool
-_081CD2D8:
- ldrh r1, [r5]
- subs r1, 0x1
-_081CD2DC:
- eors r1, r6
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- adds r6, r0, 0
- mov r0, r8
- cmp r0, 0
- beq _081CD332
- ldr r1, =0x00006787
- adds r2, r4, r1
- ldrb r0, [r2]
- adds r1, 0x1
- adds r3, r4, r1
- strb r0, [r3]
- ldr r0, =0x00006786
- adds r1, r4, r0
- ldrb r0, [r1]
- strb r0, [r2]
- strb r7, [r1]
- ldrb r1, [r3]
- ldr r2, =0x00006789
- adds r0, r4, r2
- strb r1, [r0]
- ldrh r0, [r5, 0x2]
- cmp r0, 0
- bne _081CD312
- ldrh r0, [r5]
-_081CD312:
- subs r1, r0, 0x1
- strh r1, [r5, 0x2]
- lsls r0, r1, 16
- cmp r0, 0
- beq _081CD32C
- subs r1, 0x1
- b _081CD384
- .pool
-_081CD32C:
- ldrh r0, [r5]
- subs r1, r0, 0x1
- b _081CD384
-_081CD332:
- ldr r0, =0x00006788
- adds r2, r4, r0
- ldrb r0, [r2]
- ldr r1, =0x00006787
- adds r3, r4, r1
- strb r0, [r3]
- ldr r0, =0x00006786
- adds r1, r4, r0
- ldrb r0, [r1]
- strb r0, [r2]
- strb r7, [r1]
- ldrb r1, [r3]
- ldr r2, =0x00006789
- adds r0, r4, r2
- strb r1, [r0]
- ldrh r1, [r5, 0x2]
- ldrh r0, [r5]
- subs r0, 0x1
- cmp r1, r0
- bge _081CD370
- adds r0, r1, 0x1
- b _081CD372
- .pool
-_081CD370:
- movs r0, 0
-_081CD372:
- strh r0, [r5, 0x2]
- ldrh r1, [r5, 0x2]
- ldrh r0, [r5]
- subs r0, 0x1
- cmp r1, r0
- bge _081CD382
- adds r1, 0x1
- b _081CD384
-_081CD382:
- movs r1, 0
-_081CD384:
- ldr r2, =0x00006302
- adds r0, r4, r2
- strh r1, [r0]
- ldrh r4, [r5, 0x2]
- bl sub_81CDD5C
- cmp r0, 0
- beq _081CD39C
- ldrh r1, [r5]
- b _081CD3A0
- .pool
-_081CD39C:
- ldrh r1, [r5]
- subs r1, 0x1
-_081CD3A0:
- eors r1, r4
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- cmp r6, 0
- bne _081CD3B0
- movs r0, 0x3
- b _081CD3BA
-_081CD3B0:
- cmp r0, 0
- beq _081CD3B8
- movs r0, 0x1
- b _081CD3BA
-_081CD3B8:
- movs r0, 0x4
-_081CD3BA:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81CD258
-
- thumb_func_start sub_81CD3C4
-sub_81CD3C4: @ 81CD3C4
- push {r4,lr}
- movs r0, 0xB
- bl GetSubstructPtr
- adds r4, r0, 0
- movs r0, 0x12
- bl GetSubstructPtr
- adds r2, r0, 0
- ldr r1, =0x0000678a
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0x9
- bls _081CD3E2
- b _081CD530
-_081CD3E2:
- lsls r0, 2
- ldr r1, =_081CD3F4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081CD3F4:
- .4byte _081CD41C
- .4byte _081CD428
- .4byte _081CD434
- .4byte _081CD440
- .4byte _081CD490
- .4byte _081CD4A8
- .4byte _081CD4C0
- .4byte _081CD4D8
- .4byte _081CD4F0
- .4byte _081CD508
-_081CD41C:
- movs r1, 0x2
- ldrsh r0, [r2, r1]
- movs r1, 0
- bl sub_81CD824
- b _081CD530
-_081CD428:
- movs r1, 0x2
- ldrsh r0, [r2, r1]
- movs r1, 0
- bl sub_81CDA1C
- b _081CD530
-_081CD434:
- movs r1, 0x2
- ldrsh r0, [r2, r1]
- movs r1, 0
- bl sub_81CDB98
- b _081CD530
-_081CD440:
- ldrh r0, [r2]
- cmp r0, 0x1
- bne _081CD468
- ldr r2, =0x00006786
- adds r0, r4, r2
- movs r1, 0
- strb r1, [r0]
- adds r2, 0x1
- adds r0, r4, r2
- strb r1, [r0]
- adds r2, 0x1
- adds r0, r4, r2
- strb r1, [r0]
- adds r2, 0x2
- adds r0, r4, r2
- strb r1, [r0]
- movs r0, 0x1
- b _081CD53C
- .pool
-_081CD468:
- ldr r0, =0x00006786
- adds r1, r4, r0
- movs r0, 0
- strb r0, [r1]
- ldr r2, =0x00006787
- adds r1, r4, r2
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, =0x00006788
- adds r1, r4, r0
- movs r0, 0x2
- strb r0, [r1]
- b _081CD530
- .pool
-_081CD490:
- ldrh r0, [r2, 0x2]
- adds r0, 0x1
- ldrh r2, [r2]
- cmp r0, r2
- blt _081CD49C
- movs r0, 0
-_081CD49C:
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- bl sub_81CD824
- b _081CD530
-_081CD4A8:
- ldrh r0, [r2, 0x2]
- adds r0, 0x1
- ldrh r2, [r2]
- cmp r0, r2
- blt _081CD4B4
- movs r0, 0
-_081CD4B4:
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- bl sub_81CDA1C
- b _081CD530
-_081CD4C0:
- ldrh r0, [r2, 0x2]
- adds r0, 0x1
- ldrh r2, [r2]
- cmp r0, r2
- blt _081CD4CC
- movs r0, 0
-_081CD4CC:
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- bl sub_81CDB98
- b _081CD530
-_081CD4D8:
- ldrh r0, [r2, 0x2]
- subs r0, 0x1
- cmp r0, 0
- bge _081CD4E4
- ldrh r0, [r2]
- subs r0, 0x1
-_081CD4E4:
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x2
- bl sub_81CD824
- b _081CD530
-_081CD4F0:
- ldrh r0, [r2, 0x2]
- subs r0, 0x1
- cmp r0, 0
- bge _081CD4FC
- ldrh r0, [r2]
- subs r0, 0x1
-_081CD4FC:
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x2
- bl sub_81CDA1C
- b _081CD530
-_081CD508:
- ldrh r0, [r2, 0x2]
- subs r0, 0x1
- cmp r0, 0
- bge _081CD514
- ldrh r0, [r2]
- subs r0, 0x1
-_081CD514:
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x2
- bl sub_81CDB98
- ldr r2, =0x0000678a
- adds r1, r4, r2
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- b _081CD53C
- .pool
-_081CD530:
- ldr r0, =0x0000678a
- adds r1, r4, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
-_081CD53C:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CD3C4
-
- thumb_func_start sub_81CD548
-sub_81CD548: @ 81CD548
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- movs r0, 0xB
- bl GetSubstructPtr
- adds r1, r0, 0
- cmp r4, 0x1
- beq _081CD588
- cmp r4, 0x1
- bgt _081CD566
- cmp r4, 0
- beq _081CD56C
- b _081CD5C4
-_081CD566:
- cmp r5, 0x2
- beq _081CD5A4
- b _081CD5C4
-_081CD56C:
- ldr r2, =0x00006302
- adds r0, r1, r2
- movs r2, 0
- ldrsh r0, [r0, r2]
- ldr r2, =0x00006789
- adds r1, r2
- ldrb r1, [r1]
- bl sub_81CD824
- b _081CD5C4
- .pool
-_081CD588:
- ldr r2, =0x00006302
- adds r0, r1, r2
- movs r2, 0
- ldrsh r0, [r0, r2]
- ldr r2, =0x00006789
- adds r1, r2
- ldrb r1, [r1]
- bl sub_81CDA1C
- b _081CD5C4
- .pool
-_081CD5A4:
- ldr r2, =0x00006302
- adds r0, r1, r2
- movs r2, 0
- ldrsh r0, [r0, r2]
- ldr r2, =0x00006789
- adds r1, r2
- ldrb r1, [r1]
- bl sub_81CDB98
- movs r0, 0x1
- b _081CD5C6
- .pool
-_081CD5C4:
- movs r0, 0
-_081CD5C6:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CD548
-
- thumb_func_start sub_81CD5CC
-sub_81CD5CC: @ 81CD5CC
- push {r4,lr}
- adds r4, r0, 0
- lsls r2, 16
- lsrs r2, 16
- b _081CD5E4
-_081CD5D6:
- strb r3, [r4]
- adds r1, 0x1
- adds r4, 0x1
- lsls r0, r2, 16
- ldr r2, =0xffff0000
- adds r0, r2
- lsrs r2, r0, 16
-_081CD5E4:
- ldrb r3, [r1]
- adds r0, r3, 0
- cmp r0, 0xFF
- bne _081CD5D6
- adds r1, r2, 0
- lsls r0, r1, 16
- ldr r2, =0xffff0000
- adds r0, r2
- lsrs r2, r0, 16
- lsls r1, 16
- cmp r1, 0
- ble _081CD612
- movs r3, 0
-_081CD5FE:
- strb r3, [r4]
- adds r4, 0x1
- adds r1, r2, 0
- lsls r0, r1, 16
- ldr r2, =0xffff0000
- adds r0, r2
- lsrs r2, r0, 16
- lsls r1, 16
- cmp r1, 0
- bgt _081CD5FE
-_081CD612:
- movs r0, 0xFF
- strb r0, [r4]
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CD5CC
-
- thumb_func_start sub_81CD624
-sub_81CD624: @ 81CD624
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r5, r0, 0
- adds r4, r1, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- movs r0, 0x12
- bl GetSubstructPtr
- lsls r4, 2
- adds r0, r4
- ldrb r4, [r0, 0x4]
- mov r8, r4
- ldrb r6, [r0, 0x5]
- mov r9, r6
- movs r0, 0xFC
- strb r0, [r5]
- adds r5, 0x1
- movs r0, 0x4
- strb r0, [r5]
- adds r5, 0x1
- movs r0, 0x8
- strb r0, [r5]
- adds r5, 0x1
- movs r0, 0
- strb r0, [r5]
- adds r5, 0x1
- movs r0, 0x9
- strb r0, [r5]
- adds r5, 0x1
- adds r0, r4, 0
- adds r1, r6, 0
- movs r2, 0x2D
- movs r3, 0
- bl GetBoxOrPartyMonData
- cmp r0, 0
- beq _081CD690
- ldr r1, =gText_EggNickname
- adds r0, r5, 0
- movs r2, 0
- movs r3, 0xC
- bl StringCopyPadded
- b _081CD80E
- .pool
-_081CD690:
- adds r0, r4, 0
- adds r1, r6, 0
- movs r2, 0x2
- adds r3, r5, 0
- bl GetBoxOrPartyMonData
- adds r0, r5, 0
- bl StringGetEnd10
- adds r0, r4, 0
- adds r1, r6, 0
- movs r2, 0xB
- movs r3, 0
- bl GetBoxOrPartyMonData
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r4, 0xE
- bne _081CD6E0
- movs r0, 0x64
- adds r4, r6, 0
- muls r4, r0
- ldr r0, =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x38
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- adds r0, r4, 0
- bl GetMonGender
- lsls r0, 24
- lsrs r6, r0, 24
- b _081CD6FE
- .pool
-_081CD6E0:
- mov r0, r8
- mov r1, r9
- bl GetBoxedMonPtr
- adds r4, r0, 0
- bl GetBoxMonGender
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r4, 0
- bl GetLevelFromBoxMonExp
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
-_081CD6FE:
- cmp r7, 0x1D
- beq _081CD706
- cmp r7, 0x20
- bne _081CD71C
-_081CD706:
- movs r0, 0xB
- adds r1, r7, 0
- muls r1, r0
- ldr r0, =gSpeciesNames
- adds r1, r0
- adds r0, r5, 0
- bl StringCompare
- cmp r0, 0
- bne _081CD71C
- movs r6, 0xFF
-_081CD71C:
- adds r3, r5, 0
- b _081CD726
- .pool
-_081CD724:
- adds r3, 0x1
-_081CD726:
- ldrb r0, [r3]
- cmp r0, 0xFF
- bne _081CD724
- movs r1, 0xFC
- strb r1, [r3]
- adds r3, 0x1
- movs r0, 0x12
- strb r0, [r3]
- adds r3, 0x1
- movs r0, 0x3C
- strb r0, [r3]
- adds r3, 0x1
- cmp r6, 0
- beq _081CD74A
- cmp r6, 0xFE
- beq _081CD76E
- movs r0, 0x77
- b _081CD790
-_081CD74A:
- strb r1, [r3]
- adds r3, 0x1
- movs r0, 0x1
- strb r0, [r3]
- adds r3, 0x1
- movs r0, 0x4
- strb r0, [r3]
- adds r3, 0x1
- strb r1, [r3]
- adds r3, 0x1
- movs r0, 0x3
- strb r0, [r3]
- adds r3, 0x1
- movs r0, 0x5
- strb r0, [r3]
- adds r3, 0x1
- movs r0, 0xB5
- b _081CD790
-_081CD76E:
- strb r1, [r3]
- adds r3, 0x1
- movs r0, 0x1
- strb r0, [r3]
- adds r3, 0x1
- movs r0, 0x6
- strb r0, [r3]
- adds r3, 0x1
- strb r1, [r3]
- adds r3, 0x1
- movs r0, 0x3
- strb r0, [r3]
- adds r3, 0x1
- movs r0, 0x7
- strb r0, [r3]
- adds r3, 0x1
- movs r0, 0xB6
-_081CD790:
- strb r0, [r3]
- adds r3, 0x1
- movs r0, 0xFC
- strb r0, [r3]
- adds r3, 0x1
- movs r0, 0x4
- strb r0, [r3]
- adds r3, 0x1
- movs r0, 0x8
- strb r0, [r3]
- adds r3, 0x1
- movs r5, 0
- strb r5, [r3]
- adds r3, 0x1
- movs r0, 0x9
- strb r0, [r3]
- adds r3, 0x1
- movs r0, 0xBA
- strb r0, [r3]
- adds r3, 0x1
- movs r0, 0xF9
- strb r0, [r3]
- adds r3, 0x1
- movs r0, 0x5
- strb r0, [r3]
- adds r3, 0x1
- adds r4, r3, 0
- adds r0, r4, 0
- mov r1, r8
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r3, r0, 0
- subs r4, r3, r4
- lsls r4, 16
- lsrs r4, 16
- strb r5, [r3]
- adds r3, 0x1
- mov r0, r10
- cmp r0, 0
- bne _081CD808
- movs r0, 0x3
- subs r0, r4
- lsls r0, 16
- ldr r1, =0xffff0000
- adds r0, r1
- lsrs r4, r0, 16
- ldr r0, =0x0000ffff
- cmp r4, r0
- beq _081CD808
- movs r2, 0
- adds r1, r0, 0
-_081CD7FA:
- strb r2, [r3]
- adds r3, 0x1
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, r1
- bne _081CD7FA
-_081CD808:
- movs r0, 0xFF
- strb r0, [r3]
- adds r0, r3, 0
-_081CD80E:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CD624
-
- thumb_func_start sub_81CD824
-sub_81CD824: @ 81CD824
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsls r1, 24
- lsrs r6, r1, 24
- movs r0, 0xB
- bl GetSubstructPtr
- adds r5, r0, 0
- movs r0, 0x12
- bl GetSubstructPtr
- adds r7, r0, 0
- mov r1, r8
- lsls r0, r1, 16
- asrs r4, r0, 16
- bl sub_81CDD5C
- cmp r0, 0
- beq _081CD85A
- ldrh r2, [r7]
- cmp r4, r2
- bne _081CD862
- b _081CD900
-_081CD85A:
- ldrh r0, [r7]
- subs r0, 0x1
- cmp r4, r0
- beq _081CD900
-_081CD862:
- lsls r0, r6, 6
- ldr r1, =0x00006368
- adds r0, r1
- adds r0, r5, r0
- mov r2, r8
- lsls r4, r2, 16
- lsrs r1, r4, 16
- movs r2, 0
- bl sub_81CD624
- asrs r4, 14
- adds r4, r7, r4
- ldrb r3, [r4, 0x4]
- lsls r0, r6, 1
- adds r0, r6
- lsls r4, r0, 3
- ldr r1, =0x00006320
- adds r0, r5, r1
- adds r0, r4
- movs r2, 0
- movs r1, 0xFC
- strb r1, [r0]
- ldr r1, =0x00006321
- adds r0, r5, r1
- adds r0, r4
- movs r1, 0x4
- strb r1, [r0]
- ldr r1, =0x00006322
- adds r0, r5, r1
- adds r0, r4
- movs r1, 0x8
- strb r1, [r0]
- ldr r1, =0x00006323
- adds r0, r5, r1
- adds r0, r4
- strb r2, [r0]
- ldr r2, =0x00006324
- adds r0, r5, r2
- adds r0, r4
- movs r1, 0x9
- strb r1, [r0]
- cmp r3, 0xE
- bne _081CD8E4
- adds r0, r4, r5
- ldr r1, =0x00006325
- adds r0, r1
- ldr r1, =gText_InParty
- b _081CD8F4
- .pool
-_081CD8E4:
- adds r4, r5
- ldr r2, =0x00006325
- adds r4, r2
- adds r0, r3, 0
- bl GetBoxNamePtr
- adds r1, r0, 0
- adds r0, r4, 0
-_081CD8F4:
- movs r2, 0x8
- bl sub_81CD5CC
- b _081CD95C
- .pool
-_081CD900:
- movs r1, 0
- lsls r4, r6, 6
- lsls r0, r6, 1
- mov r8, r0
- adds r3, r4, 0
- ldr r0, =0x00006368
- adds r2, r5, r0
- movs r7, 0
-_081CD910:
- adds r0, r1, r3
- adds r0, r2, r0
- strb r7, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0xB
- bls _081CD910
- adds r1, r4
- ldr r2, =0x00006368
- adds r0, r5, r2
- adds r0, r1
- movs r1, 0xFF
- strb r1, [r0]
- movs r1, 0
- mov r2, r8
- adds r0, r2, r6
- lsls r3, r0, 3
- ldr r0, =0x00006320
- adds r2, r5, r0
- movs r4, 0
-_081CD93A:
- adds r0, r1, r3
- adds r0, r2, r0
- strb r4, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x7
- bls _081CD93A
- mov r2, r8
- adds r0, r2, r6
- lsls r0, 3
- adds r0, r1, r0
- ldr r2, =0x00006320
- adds r1, r5, r2
- adds r1, r0
- movs r0, 0xFF
- strb r0, [r1]
-_081CD95C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CD824
-
- thumb_func_start sub_81CD970
-sub_81CD970: @ 81CD970
- push {r4-r7,lr}
- movs r0, 0xB
- bl GetSubstructPtr
- adds r7, r0, 0
- ldr r1, =0x000006ac
- movs r0, 0x12
- bl AllocSubstruct
- adds r6, r0, 0
- movs r0, 0xC6
- lsls r0, 7
- adds r1, r7, r0
- movs r0, 0
- strb r0, [r1]
- movs r4, 0
- movs r5, 0
- b _081CD9C4
- .pool
-_081CD998:
- movs r0, 0x64
- muls r0, r4
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2D
- bl GetMonData
- adds r2, r0, 0
- cmp r2, 0
- bne _081CD9BE
- lsls r1, r5, 2
- adds r1, r6, r1
- movs r0, 0xE
- strb r0, [r1, 0x4]
- strb r4, [r1, 0x5]
- strh r2, [r1, 0x6]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_081CD9BE:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
-_081CD9C4:
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcc _081CD998
- lsls r0, r5, 2
- adds r0, r6, r0
- movs r1, 0
- strb r1, [r0, 0x4]
- strb r1, [r0, 0x5]
- movs r2, 0
- strh r1, [r0, 0x6]
- strh r1, [r6, 0x2]
- adds r0, r5, 0x1
- strh r0, [r6]
- ldr r1, =0x0000678a
- adds r0, r7, r1
- strb r2, [r0]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CD970
-
- thumb_func_start sub_81CD9F8
-sub_81CD9F8: @ 81CD9F8
- push {lr}
- movs r0, 0xB
- bl GetSubstructPtr
- movs r1, 0xC6
- lsls r1, 7
- adds r2, r0, r1
- movs r3, 0
- movs r1, 0x1
- strb r1, [r2]
- ldr r1, =0x0000678a
- adds r0, r1
- strb r3, [r0]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CD9F8
-
- thumb_func_start sub_81CDA1C
-sub_81CDA1C: @ 81CDA1C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- movs r0, 0xB
- bl GetSubstructPtr
- mov r8, r0
- movs r0, 0x12
- bl GetSubstructPtr
- adds r4, r0, 0
- lsls r0, r6, 16
- asrs r5, r0, 16
- bl sub_81CDD5C
- cmp r0, 0
- beq _081CDA52
- ldrh r0, [r4]
- cmp r5, r0
- bne _081CDA5A
- b _081CDB48
-_081CDA52:
- ldrh r0, [r4]
- subs r0, 0x1
- cmp r5, r0
- beq _081CDB48
-_081CDA5A:
- lsls r0, r6, 16
- asrs r0, 14
- adds r0, r4, r0
- ldrb r6, [r0, 0x4]
- ldrb r7, [r0, 0x5]
- adds r0, r6, 0
- adds r1, r7, 0
- movs r2, 0x16
- movs r3, 0
- bl GetBoxOrPartyMonData
- mov r1, r9
- lsls r5, r1, 2
- adds r4, r5, r1
- ldr r1, =0x00006428
- add r1, r8
- adds r1, r4
- strb r0, [r1]
- adds r0, r6, 0
- adds r1, r7, 0
- movs r2, 0x2F
- movs r3, 0
- bl GetBoxOrPartyMonData
- ldr r1, =0x00006429
- add r1, r8
- adds r1, r4
- strb r0, [r1]
- adds r0, r6, 0
- adds r1, r7, 0
- movs r2, 0x21
- movs r3, 0
- bl GetBoxOrPartyMonData
- ldr r1, =0x0000642a
- add r1, r8
- adds r1, r4
- strb r0, [r1]
- adds r0, r6, 0
- adds r1, r7, 0
- movs r2, 0x18
- movs r3, 0
- bl GetBoxOrPartyMonData
- ldr r1, =0x0000642b
- add r1, r8
- adds r1, r4
- strb r0, [r1]
- adds r0, r6, 0
- adds r1, r7, 0
- movs r2, 0x17
- movs r3, 0
- bl GetBoxOrPartyMonData
- ldr r1, =0x0000642c
- add r1, r8
- adds r1, r4
- strb r0, [r1]
- movs r0, 0xCF
- lsls r0, 7
- add r0, r8
- mov r2, r9
- adds r4, r0, r2
- adds r0, r6, 0
- adds r1, r7, 0
- movs r2, 0x30
- movs r3, 0
- bl GetBoxOrPartyMonData
- cmp r0, 0xFF
- beq _081CDB10
- adds r0, r6, 0
- adds r1, r7, 0
- movs r2, 0x30
- movs r3, 0
- bl GetBoxOrPartyMonData
- movs r1, 0x1D
- bl __udivsi3
- b _081CDB12
- .pool
-_081CDB10:
- movs r0, 0x9
-_081CDB12:
- strb r0, [r4]
- adds r0, r6, 0
- adds r1, r7, 0
- movs r2, 0x8
- movs r3, 0
- bl GetBoxOrPartyMonData
- ldr r1, =0x00006783
- add r1, r8
- add r1, r9
- strb r0, [r1]
- mov r0, r9
- adds r1, r5, r0
- ldr r2, =0x00006428
- adds r0, r1, r2
- add r0, r8
- lsls r1, 2
- adds r2, 0x14
- adds r1, r2
- add r1, r8
- bl sub_81D2754
- b _081CDB80
- .pool
-_081CDB48:
- movs r2, 0
- mov r0, r9
- lsls r5, r0, 2
- add r5, r9
- ldr r4, =0x00006428
- add r4, r8
- lsls r3, r5, 2
- mov r9, r2
- ldr r7, =0x0000643c
- movs r6, 0x9B
-_081CDB5C:
- adds r0, r2, r5
- adds r0, r4, r0
- mov r1, r9
- strb r1, [r0]
- lsls r0, r2, 2
- adds r0, r3
- add r0, r8
- adds r1, r0, r7
- strh r6, [r1]
- ldr r1, =0x0000643e
- adds r0, r1
- movs r1, 0x5B
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x4
- bls _081CDB5C
-_081CDB80:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CDA1C
-
- thumb_func_start sub_81CDB98
-sub_81CDB98: @ 81CDB98
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- movs r0, 0xB
- bl GetSubstructPtr
- adds r7, r0, 0
- movs r0, 0x12
- bl GetSubstructPtr
- adds r4, r0, 0
- lsls r0, r6, 16
- asrs r5, r0, 16
- bl sub_81CDD5C
- cmp r0, 0
- beq _081CDBCC
- ldrh r0, [r4]
- b _081CDBD0
-_081CDBCC:
- ldrh r0, [r4]
- subs r0, 0x1
-_081CDBD0:
- cmp r5, r0
- beq _081CDC3E
- lsls r0, r6, 16
- asrs r0, 14
- adds r0, r4, r0
- ldrb r5, [r0, 0x4]
- ldrb r6, [r0, 0x5]
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x41
- movs r3, 0
- bl GetBoxOrPartyMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x1
- movs r3, 0
- bl GetBoxOrPartyMonData
- mov r8, r0
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0
- movs r3, 0
- bl GetBoxOrPartyMonData
- adds r5, r0, 0
- lsls r0, r4, 3
- ldr r1, =gMonFrontPicTable
- adds r0, r1
- mov r2, r9
- lsls r1, r2, 13
- movs r2, 0xC0
- lsls r2, 2
- adds r1, r2
- adds r1, r7, r1
- movs r2, 0x1
- str r2, [sp]
- adds r2, r4, 0
- adds r3, r5, 0
- bl LoadSpecialPokePic
- adds r0, r4, 0
- mov r1, r8
- adds r2, r5, 0
- bl GetFrontSpritePalFromSpeciesAndPersonality
- mov r2, r9
- lsls r1, r2, 7
- adds r1, r7, r1
- bl LZ77UnCompWram
-_081CDC3E:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CDB98
-
- thumb_func_start sub_81CDC50
-sub_81CDC50: @ 81CDC50
- push {lr}
- movs r0, 0x12
- bl GetSubstructPtr
- ldrh r0, [r0]
- pop {r1}
- bx r1
- thumb_func_end sub_81CDC50
-
- thumb_func_start sub_81CDC60
-sub_81CDC60: @ 81CDC60
- push {lr}
- movs r0, 0x12
- bl GetSubstructPtr
- ldrh r0, [r0, 0x2]
- pop {r1}
- bx r1
- thumb_func_end sub_81CDC60
-
- thumb_func_start sub_81CDC70
-sub_81CDC70: @ 81CDC70
- push {lr}
- movs r0, 0xB
- bl GetSubstructPtr
- ldr r1, =0x00006428
- adds r0, r1
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CDC70
-
- thumb_func_start sub_81CDC84
-sub_81CDC84: @ 81CDC84
- push {lr}
- movs r0, 0xB
- bl GetSubstructPtr
- ldr r1, =0x00006786
- adds r0, r1
- ldrb r0, [r0]
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CDC84
-
- thumb_func_start sub_81CDC9C
-sub_81CDC9C: @ 81CDC9C
- push {lr}
- movs r0, 0xB
- bl GetSubstructPtr
- ldr r1, =0x00006302
- adds r0, r1
- ldrb r0, [r0]
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CDC9C
-
- thumb_func_start sub_81CDCB4
-sub_81CDCB4: @ 81CDCB4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0xB
- bl GetSubstructPtr
- lsls r4, 13
- movs r1, 0xC0
- lsls r1, 2
- adds r4, r1
- adds r0, r4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CDCB4
-
- thumb_func_start sub_81CDCD4
-sub_81CDCD4: @ 81CDCD4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0xB
- bl GetSubstructPtr
- lsls r4, 7
- adds r0, r4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CDCD4
-
- thumb_func_start sub_81CDCEC
-sub_81CDCEC: @ 81CDCEC
- push {lr}
- movs r0, 0xB
- bl GetSubstructPtr
- ldr r1, =0x00006789
- adds r0, r1
- ldrb r0, [r0]
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CDCEC
-
- thumb_func_start sub_81CDD04
-sub_81CDD04: @ 81CDD04
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0xB
- bl GetSubstructPtr
- lsls r4, 6
- ldr r1, =0x00006368
- adds r4, r1
- adds r0, r4
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CDD04
-
- thumb_func_start sub_81CDD24
-sub_81CDD24: @ 81CDD24
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0xB
- bl GetSubstructPtr
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 3
- ldr r2, =0x00006320
- adds r1, r2
- adds r0, r1
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CDD24
-
- thumb_func_start sub_81CDD48
-sub_81CDD48: @ 81CDD48
- push {lr}
- movs r0, 0x12
- bl GetSubstructPtr
- ldrh r1, [r0, 0x2]
- lsls r1, 2
- adds r0, r1
- ldrh r0, [r0, 0x6]
- pop {r1}
- bx r1
- thumb_func_end sub_81CDD48
-
- thumb_func_start sub_81CDD5C
-sub_81CDD5C: @ 81CDD5C
- push {lr}
- movs r0, 0xB
- bl GetSubstructPtr
- movs r1, 0xC6
- lsls r1, 7
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _081CDD74
- movs r0, 0
- b _081CDD76
-_081CDD74:
- movs r0, 0x1
-_081CDD76:
- pop {r1}
- bx r1
- thumb_func_end sub_81CDD5C
-
- thumb_func_start sub_81CDD7C
-sub_81CDD7C: @ 81CDD7C
- push {lr}
- movs r0, 0xB
- bl GetSubstructPtr
- adds r2, r0, 0
- movs r1, 0xC6
- lsls r1, 7
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _081CDD96
- movs r0, 0
- b _081CDDA6
-_081CDD96:
- ldr r3, =0x00006786
- adds r0, r2, r3
- movs r1, 0
- ldrsb r1, [r0, r1]
- subs r3, 0x3
- adds r0, r2, r3
- adds r0, r1
- ldrb r0, [r0]
-_081CDDA6:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CDD7C
-
- thumb_func_start sub_81CDDB0
-sub_81CDDB0: @ 81CDDB0
- push {lr}
- movs r0, 0xB
- bl GetSubstructPtr
- ldr r2, =0x00006786
- adds r1, r0, r2
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- subs r2, 0x6
- adds r0, r2
- adds r0, r1
- ldrb r0, [r0]
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CDDB0
-
- thumb_func_start sub_81CDDD4
-sub_81CDDD4: @ 81CDDD4
- push {r4,lr}
- ldr r1, =0x000038ac
- movs r0, 0xC
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081CDE24
- ldr r0, =0x00001816
- adds r1, r4, r0
- movs r0, 0xFF
- strb r0, [r1]
- ldr r0, =sub_81CDE94
- movs r1, 0x1
- bl sub_81C7078
- str r0, [r4]
- ldr r0, =0x00001810
- adds r1, r4, r0
- ldr r0, =sub_81CDE80
- str r0, [r1]
- ldr r0, =0x00002908
- adds r1, r4, r0
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- b _081CDE26
- .pool
-_081CDE24:
- movs r0, 0
-_081CDE26:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CDDD4
-
- thumb_func_start sub_81CDE2C
-sub_81CDE2C: @ 81CDE2C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0xC
- bl GetSubstructPtr
- adds r5, r0, 0
- ldr r0, =gUnknown_08623384
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- movs r1, 0x1
- bl sub_81C7078
- str r0, [r5]
- ldr r0, =0x00001810
- adds r5, r0
- ldr r0, =sub_81CDE80
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CDE2C
-
- thumb_func_start sub_81CDE64
-sub_81CDE64: @ 81CDE64
- push {lr}
- movs r0, 0xC
- bl GetSubstructPtr
- ldr r1, =0x00001810
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CDE64
-
- thumb_func_start sub_81CDE80
-sub_81CDE80: @ 81CDE80
- push {lr}
- movs r0, 0xC
- bl GetSubstructPtr
- ldr r0, [r0]
- bl sub_81C70D8
- pop {r1}
- bx r1
- thumb_func_end sub_81CDE80
-
- thumb_func_start sub_81CDE94
-sub_81CDE94: @ 81CDE94
- push {r4-r6,lr}
- sub sp, 0xC
- adds r4, r0, 0
- movs r0, 0xC
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x14
- bls _081CDEA8
- b _081CE2C4
-_081CDEA8:
- lsls r0, r4, 2
- ldr r1, =_081CDEB8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081CDEB8:
- .4byte _081CDF0C
- .4byte _081CDF18
- .4byte _081CDF94
- .4byte _081CDFB8
- .4byte _081CE030
- .4byte _081CE074
- .4byte _081CE0B0
- .4byte _081CE118
- .4byte _081CE120
- .4byte _081CE126
- .4byte _081CE136
- .4byte _081CE146
- .4byte _081CE156
- .4byte _081CE16C
- .4byte _081CE1C8
- .4byte _081CE1EC
- .4byte _081CE218
- .4byte _081CE23C
- .4byte _081CE24A
- .4byte _081CE25A
- .4byte _081CE262
-_081CDF0C:
- bl sub_81CD3C4
- cmp r0, 0x1
- beq _081CDF16
- b _081CE2C0
-_081CDF16:
- b _081CDFB0
-_081CDF18:
- ldr r0, =gUnknown_08623358
- movs r1, 0x3
- bl InitBgTemplates
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- ldr r1, =0x00007940
- movs r0, 0
- bl SetGpuReg
- ldr r1, =0x00000844
- movs r0, 0x50
- bl SetGpuReg
- ldr r1, =0x0000040b
- movs r0, 0x52
- bl SetGpuReg
- ldr r1, =gPokenavCondition_Gfx
- movs r0, 0
- str r0, [sp]
- movs r0, 0x3
- b _081CDFA8
- .pool
-_081CDF94:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _081CDFA2
- b _081CE2C0
-_081CDFA2:
- ldr r1, =gUnknown_08623228
- str r0, [sp]
- movs r0, 0x2
-_081CDFA8:
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
-_081CDFB0:
- movs r0, 0
- b _081CE2C6
- .pool
-_081CDFB8:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- beq _081CDFC4
- b _081CE2C0
-_081CDFC4:
- ldr r0, =gPokenavCondition_Tilemap
- adds r4, r5, 0x4
- adds r1, r4, 0
- bl LZ77UnCompVram
- movs r0, 0x3
- adds r1, r4, 0
- bl SetBgTilemapBuffer
- bl sub_81CDD5C
- cmp r0, 0x1
- bne _081CDFF2
- ldr r1, =gPokenavOptions_Tilemap
- movs r0, 0x9
- str r0, [sp]
- movs r0, 0x4
- str r0, [sp, 0x4]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0x5
- bl CopyToBgTilemapBufferRect
-_081CDFF2:
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- ldr r0, =gPokenavCondition_Pal
- movs r1, 0x10
- movs r2, 0x20
- bl CopyPaletteIntoBufferUnfaded
- ldr r0, =gUnknown_08623208
- movs r1, 0xF0
- movs r2, 0x20
- bl CopyPaletteIntoBufferUnfaded
- ldr r0, =0x00001814
- adds r1, r5, r0
- ldr r0, =0x0000ffb0
- strh r0, [r1]
- b _081CDFB0
- .pool
-_081CE030:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- beq _081CE03C
- b _081CE2C0
-_081CE03C:
- ldr r0, =gUnknown_0862323C
- ldr r1, =0x00001004
- adds r4, r5, r1
- adds r1, r4, 0
- bl LZ77UnCompVram
- movs r0, 0x2
- adds r1, r4, 0
- bl SetBgTilemapBuffer
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- ldr r0, =gUnknown_086231E8
- movs r1, 0x30
- movs r2, 0x20
- bl CopyPaletteIntoBufferUnfaded
- movs r0, 0x2
- bl sub_81D21DC
- b _081CDFB0
- .pool
-_081CE074:
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_8199DF0
- movs r0, 0x1
- movs r1, 0x11
- movs r2, 0x1
- movs r3, 0x1
- bl sub_8199DF0
- movs r0, 0
- str r0, [sp, 0x8]
- ldr r2, =0x00000804
- adds r4, r5, r2
- ldr r2, =0x05000200
- add r0, sp, 0x8
- adds r1, r4, 0
- bl CpuSet
- movs r0, 0x1
- adds r1, r4, 0
- bl SetBgTilemapBuffer
- b _081CDFB0
- .pool
-_081CE0B0:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- beq _081CE0BC
- b _081CE2C0
-_081CE0BC:
- ldr r0, =gUnknown_08623364
- bl AddWindow
- movs r2, 0xC1
- lsls r2, 5
- adds r1, r5, r2
- strb r0, [r1]
- bl sub_81CDD5C
- cmp r0, 0x1
- bne _081CE0F6
- ldr r0, =gUnknown_0862336C
- bl AddWindow
- ldr r2, =0x00001821
- adds r1, r5, r2
- strb r0, [r1]
- ldr r0, =gUnknown_08623374
- bl AddWindow
- ldr r2, =0x00001822
- adds r1, r5, r2
- strb r0, [r1]
- ldr r0, =gUnknown_0862337C
- bl AddWindow
- ldr r2, =0x00001823
- adds r1, r5, r2
- strb r0, [r1]
-_081CE0F6:
- bl DeactivateAllTextPrinters
- b _081CDFB0
- .pool
-_081CE118:
- movs r0, 0
- bl sub_81CED30
- b _081CDFB0
-_081CE120:
- bl sub_81CE9E4
- b _081CDFB0
-_081CE126:
- bl sub_81CDD5C
- cmp r0, 0x1
- beq _081CE130
- b _081CDFB0
-_081CE130:
- bl sub_81CE934
- b _081CDFB0
-_081CE136:
- bl sub_81CDC84
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 8
- lsrs r1, 16
- movs r0, 0
- b _081CE164
-_081CE146:
- bl sub_81CDC84
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 8
- lsrs r1, 16
- movs r0, 0x1
- b _081CE164
-_081CE156:
- bl sub_81CDC84
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 8
- lsrs r1, 16
- movs r0, 0x2
-_081CE164:
- movs r2, 0x1
- bl sub_81CE754
- b _081CDFB0
-_081CE16C:
- bl sub_81CDC84
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 8
- lsrs r1, 16
- movs r0, 0x3
- movs r2, 0x1
- bl sub_81CE754
- cmp r0, 0x1
- beq _081CE186
- b _081CE2C0
-_081CE186:
- movs r1, 0xC1
- lsls r1, 5
- adds r0, r5, r1
- ldrb r0, [r0]
- bl PutWindowTilemap
- bl sub_81CDD5C
- cmp r0, 0x1
- beq _081CE19C
- b _081CDFB0
-_081CE19C:
- ldr r2, =0x00001821
- adds r0, r5, r2
- ldrb r0, [r0]
- bl PutWindowTilemap
- ldr r1, =0x00001822
- adds r0, r5, r1
- ldrb r0, [r0]
- bl PutWindowTilemap
- ldr r2, =0x00001823
- adds r0, r5, r2
- ldrb r0, [r0]
- bl PutWindowTilemap
- b _081CDFB0
- .pool
-_081CE1C8:
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl HideBg
- movs r0, 0x3
- bl ShowBg
- bl sub_81CDD5C
- cmp r0, 0x1
- beq _081CE1E4
- b _081CDFB0
-_081CE1E4:
- movs r0, 0x4
- bl sub_81C7BA4
- b _081CDFB0
-_081CE1EC:
- movs r0, 0x1
- bl sub_81C7AC0
- bl sub_81CDD5C
- cmp r0, 0
- beq _081CE1FC
- b _081CDFB0
-_081CE1FC:
- movs r0, 0x6
- bl sub_81C7DFC
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl sub_81C7FA0
- movs r0, 0x6
- movs r1, 0x1
- movs r2, 0
- bl sub_81C7FA0
- b _081CDFB0
-_081CE218:
- bl IsPaletteFadeActive
- cmp r0, 0
- bne _081CE2C0
- bl sub_81CDD5C
- cmp r0, 0
- bne _081CE230
- bl sub_81C8010
- cmp r0, 0
- bne _081CE2C0
-_081CE230:
- ldr r0, =sub_81CEE44
- bl SetVBlankCallback_
- b _081CDFB0
- .pool
-_081CE23C:
- bl sub_81CEE90
- bl sub_81CDC70
- bl sub_81D20AC
- b _081CDFB0
-_081CE24A:
- bl sub_81CDC70
- bl sub_81D20BC
- lsls r0, 24
- cmp r0, 0
- bne _081CE2C0
- b _081CDFB0
-_081CE25A:
- movs r0, 0x1
- bl sub_81CEE74
- b _081CDFB0
-_081CE262:
- bl sub_81CDC70
- ldr r2, =0x00001814
- adds r1, r5, r2
- bl sub_81D3178
- lsls r0, 24
- cmp r0, 0
- bne _081CE2C0
- ldr r0, =0x000028e0
- adds r6, r5, r0
- adds r0, r6, 0
- bl sub_81D3464
- bl sub_81CDD5C
- cmp r0, 0x1
- beq _081CE298
- bl sub_81CDC60
- adds r4, r0, 0
- bl sub_81CDC50
- lsls r4, 16
- lsls r0, 16
- cmp r4, r0
- beq _081CE2C4
-_081CE298:
- ldr r1, =0x00001816
- adds r0, r5, r1
- ldrb r4, [r0]
- bl sub_81CDDB0
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_81D3480
- b _081CE2C4
- .pool
-_081CE2C0:
- movs r0, 0x2
- b _081CE2C6
-_081CE2C4:
- movs r0, 0x4
-_081CE2C6:
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81CDE94
-
- thumb_func_start sub_81CE2D0
-sub_81CE2D0: @ 81CE2D0
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0xC
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081CE308
- cmp r4, 0x1
- bgt _081CE2EA
- cmp r4, 0
- beq _081CE2F4
- b _081CE374
-_081CE2EA:
- cmp r4, 0x2
- beq _081CE328
- cmp r4, 0x3
- beq _081CE33E
- b _081CE374
-_081CE2F4:
- bl sub_81CEEC8
- ldr r1, =0x000028e0
- adds r0, r5, r1
- bl sub_81D3520
- movs r0, 0x1
- b _081CE376
- .pool
-_081CE308:
- bl sub_81CDC70
- ldr r2, =0x00001814
- adds r1, r5, r2
- bl sub_81D31A4
- lsls r0, 24
- cmp r0, 0
- bne _081CE34E
- movs r0, 0
- bl sub_81CEE74
- movs r0, 0x1
- b _081CE376
- .pool
-_081CE328:
- movs r0, 0
- bl sub_81C7AC0
- bl sub_81CDD5C
- cmp r0, 0
- bne _081CE33A
- bl sub_81C78A0
-_081CE33A:
- movs r0, 0
- b _081CE376
-_081CE33E:
- bl IsPaletteFadeActive
- cmp r0, 0
- bne _081CE34E
- bl sub_81C78C0
- cmp r0, 0
- beq _081CE352
-_081CE34E:
- movs r0, 0x2
- b _081CE376
-_081CE352:
- ldr r1, =0x000028e0
- adds r0, r5, r1
- bl sub_81D354C
- movs r0, 0x1
- bl HideBg
- movs r0, 0x2
- bl HideBg
- movs r0, 0x3
- bl HideBg
- movs r0, 0x1
- b _081CE376
- .pool
-_081CE374:
- movs r0, 0x4
-_081CE376:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CE2D0
-
- thumb_func_start sub_81CE37C
-sub_81CE37C: @ 81CE37C
- push {r4-r6,lr}
- adds r4, r0, 0
- movs r0, 0xC
- bl GetSubstructPtr
- adds r6, r0, 0
- bl sub_81CDC70
- adds r2, r0, 0
- cmp r4, 0x9
- bls _081CE394
- b _081CE4D0
-_081CE394:
- lsls r0, r4, 2
- ldr r1, =_081CE3A4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081CE3A4:
- .4byte _081CE3CC
- .4byte _081CE3D0
- .4byte _081CE3DA
- .4byte _081CE3F0
- .4byte _081CE3F8
- .4byte _081CE418
- .4byte _081CE428
- .4byte _081CE438
- .4byte _081CE44E
- .4byte _081CE468
-_081CE3CC:
- movs r0, 0
- b _081CE3D2
-_081CE3D0:
- movs r0, 0x1
-_081CE3D2:
- bl sub_81CD548
-_081CE3D6:
- movs r0, 0x1
- b _081CE4D2
-_081CE3DA:
- movs r0, 0x2
- bl sub_81CD548
- ldr r1, =0x000028e0
- adds r0, r6, r1
- bl sub_81D3520
- b _081CE3D6
- .pool
-_081CE3F0:
- adds r0, r2, 0
- bl sub_81D2074
- b _081CE3D6
-_081CE3F8:
- ldr r1, =0x00001814
- adds r0, r6, r1
- bl sub_81D3150
- lsls r0, 24
- cmp r0, 0
- bne _081CE4CC
- bl sub_81CDC84
- lsls r0, 24
- lsrs r0, 24
- bl sub_81CED30
- b _081CE3D6
- .pool
-_081CE418:
- bl sub_81CDC84
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 8
- lsrs r1, 16
- movs r0, 0
- b _081CE446
-_081CE428:
- bl sub_81CDC84
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 8
- lsrs r1, 16
- movs r0, 0x1
- b _081CE446
-_081CE438:
- bl sub_81CDC84
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 8
- lsrs r1, 16
- movs r0, 0x2
-_081CE446:
- movs r2, 0
- bl sub_81CE754
- b _081CE3D6
-_081CE44E:
- bl sub_81CDC84
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 8
- lsrs r1, 16
- movs r0, 0x3
- movs r2, 0
- bl sub_81CE754
- cmp r0, 0x1
- beq _081CE3D6
- b _081CE4CC
-_081CE468:
- bl sub_81CDC70
- adds r2, r0, 0
- ldr r0, =0x00001814
- adds r1, r6, r0
- adds r0, r2, 0
- bl sub_81D3178
- lsls r0, 24
- cmp r0, 0
- bne _081CE4CC
- ldr r1, =0x000028e0
- adds r0, r6, r1
- bl sub_81D3464
- bl sub_81CDD5C
- cmp r0, 0x1
- beq _081CE4A0
- bl sub_81CDC60
- adds r4, r0, 0
- bl sub_81CDC50
- lsls r4, 16
- lsls r0, 16
- cmp r4, r0
- beq _081CE3D6
-_081CE4A0:
- ldr r0, =0x000028e0
- adds r5, r6, r0
- ldr r1, =0x00001816
- adds r0, r6, r1
- ldrb r4, [r0]
- bl sub_81CDDB0
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_81D3480
- b _081CE3D6
- .pool
-_081CE4CC:
- movs r0, 0x2
- b _081CE4D2
-_081CE4D0:
- movs r0, 0x4
-_081CE4D2:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81CE37C
-
- thumb_func_start sub_81CE4D8
-sub_81CE4D8: @ 81CE4D8
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0xC
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x8
- bhi _081CE5DC
- lsls r0, r4, 2
- ldr r1, =_081CE4F8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081CE4F8:
- .4byte _081CE51C
- .4byte _081CE520
- .4byte _081CE524
- .4byte _081CE52E
- .4byte _081CE53E
- .4byte _081CE54E
- .4byte _081CE55E
- .4byte _081CE576
- .4byte _081CE592
-_081CE51C:
- movs r0, 0
- b _081CE526
-_081CE520:
- movs r0, 0x1
- b _081CE526
-_081CE524:
- movs r0, 0x2
-_081CE526:
- bl sub_81CD548
- movs r0, 0x1
- b _081CE5DE
-_081CE52E:
- bl sub_81CDC84
- lsls r0, 24
- lsrs r0, 24
- bl sub_81CED30
- movs r0, 0x1
- b _081CE5DE
-_081CE53E:
- bl sub_81CDC84
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 8
- lsrs r1, 16
- movs r0, 0
- b _081CE56C
-_081CE54E:
- bl sub_81CDC84
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 8
- lsrs r1, 16
- movs r0, 0x1
- b _081CE56C
-_081CE55E:
- bl sub_81CDC84
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 8
- lsrs r1, 16
- movs r0, 0x2
-_081CE56C:
- movs r2, 0
- bl sub_81CE754
- movs r0, 0x1
- b _081CE5DE
-_081CE576:
- bl sub_81CDC84
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 8
- lsrs r1, 16
- movs r0, 0x3
- movs r2, 0
- bl sub_81CE754
- cmp r0, 0x1
- bne _081CE5D8
- movs r0, 0x1
- b _081CE5DE
-_081CE592:
- bl sub_81CDC70
- ldr r2, =0x00001814
- adds r1, r5, r2
- bl sub_81D3178
- lsls r0, 24
- cmp r0, 0
- bne _081CE5D8
- ldr r0, =0x000028e0
- adds r4, r5, r0
- adds r0, r4, 0
- bl sub_81D3464
- ldr r1, =0x00001816
- adds r0, r5, r1
- ldrb r5, [r0]
- bl sub_81CDDB0
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_81D3480
- movs r0, 0x1
- b _081CE5DE
- .pool
-_081CE5D8:
- movs r0, 0x2
- b _081CE5DE
-_081CE5DC:
- movs r0, 0x4
-_081CE5DE:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CE4D8
-
- thumb_func_start sub_81CE5E4
-sub_81CE5E4: @ 81CE5E4
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0xC
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x7
- bhi _081CE6B2
- lsls r0, r4, 2
- ldr r1, =_081CE604
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081CE604:
- .4byte _081CE624
- .4byte _081CE628
- .4byte _081CE632
- .4byte _081CE648
- .4byte _081CE660
- .4byte _081CE670
- .4byte _081CE680
- .4byte _081CE696
-_081CE624:
- movs r0, 0
- b _081CE62A
-_081CE628:
- movs r0, 0x1
-_081CE62A:
- bl sub_81CD548
-_081CE62E:
- movs r0, 0x1
- b _081CE6B4
-_081CE632:
- movs r0, 0x2
- bl sub_81CD548
- ldr r1, =0x000028e0
- adds r0, r5, r1
- bl sub_81D3520
- b _081CE62E
- .pool
-_081CE648:
- bl sub_81CDC70
- ldr r2, =0x00001814
- adds r1, r5, r2
- bl sub_81D31A4
- lsls r0, 24
- cmp r0, 0
- beq _081CE62E
- b _081CE6AE
- .pool
-_081CE660:
- bl sub_81CDC84
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 8
- lsrs r1, 16
- movs r0, 0
- b _081CE68E
-_081CE670:
- bl sub_81CDC84
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 8
- lsrs r1, 16
- movs r0, 0x1
- b _081CE68E
-_081CE680:
- bl sub_81CDC84
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 8
- lsrs r1, 16
- movs r0, 0x2
-_081CE68E:
- movs r2, 0
- bl sub_81CE754
- b _081CE62E
-_081CE696:
- bl sub_81CDC84
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 8
- lsrs r1, 16
- movs r0, 0x3
- movs r2, 0
- bl sub_81CE754
- cmp r0, 0x1
- beq _081CE62E
-_081CE6AE:
- movs r0, 0x2
- b _081CE6B4
-_081CE6B2:
- movs r0, 0x4
-_081CE6B4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CE5E4
-
- thumb_func_start sub_81CE6BC
-sub_81CE6BC: @ 81CE6BC
- push {lr}
- cmp r0, 0x1
- beq _081CE6E6
- cmp r0, 0x1
- bgt _081CE6CC
- cmp r0, 0
- beq _081CE6D2
- b _081CE6FA
-_081CE6CC:
- cmp r0, 0x2
- beq _081CE6EE
- b _081CE6FA
-_081CE6D2:
- bl sub_81CDD7C
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0xB0
- movs r2, 0x20
- bl sub_811FAA4
-_081CE6E2:
- movs r0, 0x1
- b _081CE6FC
-_081CE6E6:
- movs r0, 0x5
- bl sub_81C7BA4
- b _081CE6E2
-_081CE6EE:
- bl IsDma3ManagerBusyWithBgCopy_
- cmp r0, 0x1
- bne _081CE6E2
- movs r0, 0x2
- b _081CE6FC
-_081CE6FA:
- movs r0, 0x4
-_081CE6FC:
- pop {r1}
- bx r1
- thumb_func_end sub_81CE6BC
-
- thumb_func_start sub_81CE700
-sub_81CE700: @ 81CE700
- push {lr}
- cmp r0, 0x1
- beq _081CE71E
- cmp r0, 0x1
- bgt _081CE710
- cmp r0, 0
- beq _081CE716
- b _081CE732
-_081CE710:
- cmp r0, 0x2
- beq _081CE726
- b _081CE732
-_081CE716:
- bl sub_811FAF8
-_081CE71A:
- movs r0, 0x1
- b _081CE734
-_081CE71E:
- movs r0, 0x4
- bl sub_81C7BA4
- b _081CE71A
-_081CE726:
- bl IsDma3ManagerBusyWithBgCopy_
- cmp r0, 0x1
- bne _081CE71A
- movs r0, 0x2
- b _081CE734
-_081CE732:
- movs r0, 0x4
-_081CE734:
- pop {r1}
- bx r1
- thumb_func_end sub_81CE700
-
- thumb_func_start sub_81CE738
-sub_81CE738: @ 81CE738
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- movs r2, 0x1
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- ldr r1, =gText_Number2
- bl StringCopy
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CE738
-
- thumb_func_start sub_81CE754
-sub_81CE754: @ 81CE754
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x2C
- lsls r0, 24
- lsrs r4, r0, 24
- adds r7, r4, 0
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- lsls r2, 24
- lsrs r5, r2, 24
- movs r0, 0xC
- bl GetSubstructPtr
- adds r6, r0, 0
- cmp r4, 0x1
- beq _081CE7B8
- cmp r4, 0x1
- bgt _081CE782
- cmp r4, 0
- beq _081CE78E
- b _081CE924
-_081CE782:
- cmp r4, 0x2
- beq _081CE800
- cmp r4, 0x3
- bne _081CE78C
- b _081CE89C
-_081CE78C:
- b _081CE924
-_081CE78E:
- movs r1, 0xC1
- lsls r1, 5
- adds r0, r6, r1
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- bl sub_81CDD5C
- cmp r0, 0x1
- beq _081CE7A6
- b _081CE924
-_081CE7A6:
- ldr r1, =0x00001821
- adds r0, r6, r1
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- b _081CE924
- .pool
-_081CE7B8:
- bl sub_81CDC60
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- bl sub_81CDC50
- lsls r0, 16
- lsrs r0, 16
- subs r0, 0x1
- cmp r4, r0
- bne _081CE7DA
- bl sub_81CDD5C
- cmp r0, 0x1
- beq _081CE7DA
- b _081CE924
-_081CE7DA:
- mov r1, r8
- lsls r0, r1, 24
- lsrs r0, 24
- bl sub_81CDD04
- adds r2, r0, 0
- movs r1, 0xC1
- lsls r1, 5
- adds r0, r6, r1
- ldrb r0, [r0]
- str r7, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl AddTextPrinterParameterized
- b _081CE924
-_081CE800:
- bl sub_81CDD5C
- adds r7, r0, 0
- cmp r7, 0x1
- beq _081CE80C
- b _081CE924
-_081CE80C:
- mov r1, r8
- lsls r0, r1, 24
- lsrs r0, 24
- bl sub_81CDD24
- adds r2, r0, 0
- movs r1, 0xC1
- lsls r1, 5
- adds r0, r6, r1
- ldrb r0, [r0]
- movs r1, 0x11
- str r1, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl AddTextPrinterParameterized
- add r1, sp, 0xC
- movs r0, 0xFC
- strb r0, [r1]
- movs r0, 0x4
- strb r0, [r1, 0x1]
- movs r0, 0x8
- strb r0, [r1, 0x2]
- adds r0, r1, 0
- strb r4, [r0, 0x3]
- movs r0, 0x9
- strb r0, [r1, 0x4]
- mov r5, sp
- adds r5, 0x11
- ldr r1, =gText_Number2
- adds r0, r5, 0
- bl StringCopy
- ldr r0, =0x00001821
- adds r6, r0
- ldrb r0, [r6]
- str r7, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r1, 0x1
- add r2, sp, 0xC
- movs r3, 0x4
- bl AddTextPrinterParameterized
- bl sub_81CDD48
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r5, 0
- movs r2, 0x1
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- ldrb r0, [r6]
- str r7, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r1, 0x1
- add r2, sp, 0xC
- movs r3, 0x1C
- bl AddTextPrinterParameterized
- b _081CE924
- .pool
-_081CE89C:
- ldr r1, =0x00002908
- adds r0, r6, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _081CE8B0
- cmp r0, 0x1
- beq _081CE8EC
- b _081CE924
- .pool
-_081CE8B0:
- cmp r5, 0
- beq _081CE8C4
- movs r1, 0xC1
- lsls r1, 5
- adds r0, r6, r1
- ldrb r0, [r0]
- movs r1, 0x3
- bl CopyWindowToVram
- b _081CE8D2
-_081CE8C4:
- movs r1, 0xC1
- lsls r1, 5
- adds r0, r6, r1
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
-_081CE8D2:
- bl sub_81CDD5C
- cmp r0, 0x1
- bne _081CE910
- ldr r0, =0x00002908
- adds r1, r6, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _081CE924
- .pool
-_081CE8EC:
- cmp r5, 0
- beq _081CE904
- ldr r1, =0x00001821
- adds r0, r6, r1
- ldrb r0, [r0]
- movs r1, 0x3
- bl CopyWindowToVram
- b _081CE910
- .pool
-_081CE904:
- ldr r1, =0x00001821
- adds r0, r6, r1
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
-_081CE910:
- ldr r0, =0x00002908
- adds r1, r6, r0
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- b _081CE926
- .pool
-_081CE924:
- movs r0, 0
-_081CE926:
- add sp, 0x2C
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81CE754
-
- thumb_func_start sub_81CE934
-sub_81CE934: @ 81CE934
- push {r4,lr}
- movs r0, 0xC
- bl GetSubstructPtr
- adds r4, r0, 0
- ldr r1, =0x00001822
- adds r0, r4, r1
- ldrb r0, [r0]
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, =0x00001823
- adds r4, r0
- ldrb r0, [r4]
- movs r1, 0x3
- bl CopyWindowToVram
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CE934
-
- thumb_func_start sub_81CE964
-sub_81CE964: @ 81CE964
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r0, 0x2E
- ldrsh r4, [r5, r0]
- bl sub_81CDC60
- lsls r0, 16
- lsrs r0, 16
- cmp r4, r0
- bne _081CE982
- adds r0, r5, 0
- movs r1, 0
- bl StartSpriteAnim
- b _081CE98A
-_081CE982:
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_081CE98A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81CE964
-
- thumb_func_start sub_81CE990
-sub_81CE990: @ 81CE990
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_81CDC60
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- bl sub_81CDC50
- lsls r0, 16
- lsrs r0, 16
- subs r0, 0x1
- cmp r4, r0
- bne _081CE9B0
- movs r0, 0x65
- b _081CE9B2
-_081CE9B0:
- movs r0, 0x66
-_081CE9B2:
- bl IndexOfSpritePaletteTag
- lsls r0, 4
- ldrb r2, [r5, 0x5]
- movs r1, 0xF
- ands r1, r2
- orrs r1, r0
- strb r1, [r5, 0x5]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81CE990
-
- thumb_func_start sub_81CE9C8
-sub_81CE9C8: @ 81CE9C8
- push {r4,lr}
- adds r4, r0, 0
- bl sub_81CDD7C
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81CE9C8
-
- thumb_func_start sub_81CE9E4
-sub_81CE9E4: @ 81CE9E4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x58
- movs r0, 0xC
- bl GetSubstructPtr
- adds r6, r0, 0
- add r4, sp, 0x20
- add r5, sp, 0x38
- mov r0, sp
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_81D321C
- bl sub_81CDD5C
- adds r7, r4, 0
- mov r10, r5
- cmp r0, 0x1
- bne _081CEA78
- ldr r1, =0x00001824
- adds r0, r6, r1
- movs r2, 0x6A
- strh r2, [r0]
- ldr r3, =0x00001826
- adds r1, r6, r3
- strh r2, [r1]
- bl sub_811F90C
- bl sub_811FA90
- ldr r2, =gUnknown_08623338
- movs r0, 0x69
- movs r1, 0x69
- bl sub_811FF94
- ldrb r1, [r0, 0x5]
- movs r2, 0xC
- orrs r1, r2
- strb r1, [r0, 0x5]
- movs r1, 0xC0
- strh r1, [r0, 0x20]
- movs r1, 0x20
- strh r1, [r0, 0x22]
- ldr r1, =sub_81CE9C8
- str r1, [r0, 0x1C]
- ldr r2, =0x000028dc
- adds r1, r6, r2
- str r0, [r1]
- movs r0, 0x69
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_81C7990
- add r3, sp, 0x50
- mov r8, r3
- b _081CEBC6
- .pool
-_081CEA78:
- mov r0, sp
- bl LoadSpriteSheets
- mov r0, r10
- bl sub_81C795C
- movs r4, 0
- add r0, sp, 0x50
- mov r8, r0
- b _081CEAE8
-_081CEA8C:
- lsls r2, r4, 2
- adds r2, r4
- lsls r2, 18
- movs r1, 0x80
- lsls r1, 12
- adds r2, r1
- asrs r2, 16
- adds r0, r7, 0
- movs r1, 0xE2
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x40
- beq _081CEAD8
- ldr r2, =0x00001806
- adds r0, r6, r2
- adds r0, r4
- strb r3, [r0]
- ldr r2, =gSprites
- lsls r0, r3, 4
- adds r0, r3
- lsls r0, 2
- adds r1, r0, r2
- strh r4, [r1, 0x2E]
- adds r2, 0x1C
- adds r0, r2
- ldr r1, =sub_81CE964
- str r1, [r0]
- b _081CEAE2
- .pool
-_081CEAD8:
- ldr r3, =0x00001806
- adds r0, r6, r3
- adds r0, r4
- movs r1, 0xFF
- strb r1, [r0]
-_081CEAE2:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
-_081CEAE8:
- bl sub_81CDC50
- lsls r0, 16
- lsrs r0, 16
- subs r0, 0x1
- cmp r4, r0
- blt _081CEA8C
- movs r0, 0x67
- strh r0, [r7]
- ldr r0, =SpriteCallbackDummy
- str r0, [r7, 0x14]
- cmp r4, 0x5
- bhi _081CEB5C
- ldr r0, =0x00001806
- adds r5, r6, r0
- ldr r1, =gSprites
- mov r9, r1
-_081CEB0A:
- lsls r2, r4, 2
- adds r2, r4
- lsls r2, 18
- movs r3, 0x80
- lsls r3, 12
- adds r2, r3
- asrs r2, 16
- adds r0, r7, 0
- movs r1, 0xE6
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x40
- beq _081CEB4C
- adds r0, r5, r4
- strb r3, [r0]
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- add r1, r9
- ldrb r2, [r1, 0x3]
- movs r0, 0x3F
- ands r0, r2
- strb r0, [r1, 0x3]
- b _081CEB52
- .pool
-_081CEB4C:
- adds r1, r5, r4
- movs r0, 0xFF
- strb r0, [r1]
-_081CEB52:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x5
- bls _081CEB0A
-_081CEB5C:
- movs r0, 0x66
- strh r0, [r7]
- ldr r0, =sub_81CE990
- str r0, [r7, 0x14]
- lsls r2, r4, 2
- adds r2, r4
- lsls r2, 18
- movs r0, 0x80
- lsls r0, 12
- adds r2, r0
- asrs r2, 16
- adds r0, r7, 0
- movs r1, 0xDE
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x40
- beq _081CEBBC
- ldr r1, =0x00001806
- adds r0, r6, r1
- adds r0, r4
- strb r3, [r0]
- ldr r0, =gSprites
- lsls r2, r3, 4
- adds r2, r3
- lsls r2, 2
- adds r2, r0
- ldrb r3, [r2, 0x1]
- movs r1, 0x3F
- adds r0, r1, 0
- ands r0, r3
- movs r3, 0x40
- orrs r0, r3
- strb r0, [r2, 0x1]
- ldrb r0, [r2, 0x3]
- ands r1, r0
- movs r0, 0x80
- orrs r1, r0
- strb r1, [r2, 0x3]
- b _081CEBC6
- .pool
-_081CEBBC:
- ldr r2, =0x00001806
- adds r0, r6, r2
- adds r0, r4
- movs r1, 0xFF
- strb r1, [r0]
-_081CEBC6:
- mov r0, r8
- mov r1, r10
- bl sub_81D32B0
- mov r0, r8
- bl LoadSpriteSheet
- movs r0, 0
- mov r3, r10
- str r0, [r3, 0x8]
- mov r0, r10
- bl sub_81C795C
- add sp, 0x58
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CE9E4
-
- thumb_func_start sub_81CEBF4
-sub_81CEBF4: @ 81CEBF4
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_81CDD5C
- cmp r0, 0x1
- bne _081CEC28
- ldr r1, =0x000028dc
- adds r0, r5, r1
- ldr r0, [r0]
- bl DestroySprite
- movs r0, 0x6A
- bl FreeSpriteTilesByTag
- movs r0, 0x69
- bl FreeSpriteTilesByTag
- movs r0, 0x6A
- bl FreeSpritePaletteByTag
- movs r0, 0x69
- bl FreeSpritePaletteByTag
- b _081CEC68
- .pool
-_081CEC28:
- movs r4, 0
-_081CEC2A:
- ldr r1, =0x00001806
- adds r0, r5, r1
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x6
- bls _081CEC2A
- movs r0, 0x65
- bl FreeSpriteTilesByTag
- movs r0, 0x66
- bl FreeSpriteTilesByTag
- movs r0, 0x67
- bl FreeSpriteTilesByTag
- movs r0, 0x65
- bl FreeSpritePaletteByTag
- movs r0, 0x66
- bl FreeSpritePaletteByTag
-_081CEC68:
- ldr r0, =0x00001816
- adds r1, r5, r0
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _081CEC8E
- adds r1, r0, 0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- bl DestroySprite
- movs r0, 0x64
- bl FreeSpriteTilesByTag
- movs r0, 0x64
- bl FreeSpritePaletteByTag
-_081CEC8E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CEBF4
-
- thumb_func_start sub_81CECA0
-sub_81CECA0: @ 81CECA0
- push {r4,lr}
- movs r0, 0xC
- bl GetSubstructPtr
- adds r4, r0, 0
- movs r1, 0xC1
- lsls r1, 5
- adds r0, r4, r1
- ldrb r0, [r0]
- bl RemoveWindow
- bl sub_81CDD5C
- cmp r0, 0x1
- bne _081CECEC
- ldr r1, =0x00001821
- adds r0, r4, r1
- ldrb r0, [r0]
- bl RemoveWindow
- ldr r1, =0x00001822
- adds r0, r4, r1
- ldrb r0, [r0]
- bl RemoveWindow
- ldr r1, =0x00001823
- adds r0, r4, r1
- ldrb r0, [r0]
- bl RemoveWindow
- b _081CECF0
- .pool
-_081CECEC:
- bl sub_81C7FDC
-_081CECF0:
- movs r1, 0x8A
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl sub_81CEBF4
- bl sub_81CEE68
- movs r0, 0xC
- bl FreeSubstruct
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81CECA0
-
- thumb_func_start sub_81CED10
-sub_81CED10: @ 81CED10
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0xC
- bl GetSubstructPtr
- ldr r1, =0x00001814
- adds r0, r1
- ldrh r0, [r0]
- adds r0, 0x26
- strh r0, [r4, 0x20]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CED10
-
- thumb_func_start sub_81CED30
-sub_81CED30: @ 81CED30
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x28
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0xC
- bl GetSubstructPtr
- mov r8, r0
- ldr r7, =0x00001816
- add r7, r8
- ldrb r0, [r7]
- cmp r0, 0xFF
- bne _081CEDFC
- add r5, sp, 0x18
- add r4, sp, 0x20
- adds r0, r5, 0
- mov r1, sp
- adds r2, r4, 0
- bl sub_81D31D0
- adds r0, r6, 0
- bl sub_81CDCB4
- str r0, [sp, 0x18]
- adds r0, r6, 0
- bl sub_81CDCD4
- str r0, [sp, 0x20]
- adds r0, r4, 0
- bl LoadSpritePalette
- lsls r0, 24
- lsrs r0, 24
- ldr r4, =0x00001818
- add r4, r8
- strh r0, [r4]
- adds r0, r5, 0
- bl LoadSpriteSheet
- ldr r5, =0x0000181a
- add r5, r8
- strh r0, [r5]
- mov r0, sp
- movs r1, 0x26
- movs r2, 0x68
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strb r0, [r7]
- cmp r0, 0x40
- bne _081CEDBC
- movs r0, 0x64
- bl FreeSpriteTilesByTag
- movs r0, 0x64
- bl FreeSpritePaletteByTag
- movs r0, 0xFF
- strb r0, [r7]
- b _081CEE26
- .pool
-_081CEDBC:
- strb r0, [r7]
- ldr r2, =gSprites
- ldrb r1, [r7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, =sub_81CED10
- str r1, [r0]
- ldr r1, =0x0000181c
- add r1, r8
- ldrh r0, [r5]
- lsls r0, 5
- ldr r2, =0x06010000
- adds r0, r2
- str r0, [r1]
- ldrh r0, [r4]
- lsls r0, 4
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- strh r0, [r4]
- b _081CEE26
- .pool
-_081CEDFC:
- adds r0, r6, 0
- bl sub_81CDCB4
- ldr r1, =0x0000181c
- add r1, r8
- ldr r2, [r1]
- ldr r1, =0x040000d4
- str r0, [r1]
- str r2, [r1, 0x4]
- ldr r0, =0x80000400
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r0, r6, 0
- bl sub_81CDCD4
- ldr r1, =0x00001818
- add r1, r8
- ldrh r1, [r1]
- movs r2, 0x20
- bl LoadPalette
-_081CEE26:
- add sp, 0x28
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CED30
-
- thumb_func_start sub_81CEE44
-sub_81CEE44: @ 81CEE44
- push {r4,lr}
- bl sub_81CDC70
- adds r4, r0, 0
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- adds r0, r4, 0
- bl sub_81D2108
- bl ScanlineEffect_InitHBlankDmaTransfer
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81CEE44
-
- thumb_func_start sub_81CEE68
-sub_81CEE68: @ 81CEE68
- push {lr}
- bl SetPokenavVBlankCallback
- pop {r0}
- bx r0
- thumb_func_end sub_81CEE68
-
- thumb_func_start sub_81CEE74
-sub_81CEE74: @ 81CEE74
- push {lr}
- lsls r0, 24
- cmp r0, 0
- beq _081CEE84
- movs r0, 0x2
- bl ShowBg
- b _081CEE8A
-_081CEE84:
- movs r0, 0x2
- bl HideBg
-_081CEE8A:
- pop {r0}
- bx r0
- thumb_func_end sub_81CEE74
-
- thumb_func_start sub_81CEE90
-sub_81CEE90: @ 81CEE90
- push {r4,lr}
- bl sub_81CDC70
- adds r4, r0, 0
- bl sub_81CDC84
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_030012BC
- strb r0, [r1]
- adds r1, r4, 0
- adds r1, 0x50
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 2
- adds r2, 0x14
- adds r2, r4, r2
- adds r0, r4, 0
- bl sub_81D1F84
- adds r0, r4, 0
- bl sub_81D2074
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CEE90
-
- thumb_func_start sub_81CEEC8
-sub_81CEEC8: @ 81CEEC8
- push {r4,r5,lr}
- bl sub_81CDC70
- adds r5, r0, 0
- bl sub_81CDD5C
- cmp r0, 0
- bne _081CEEF0
- bl sub_81CDC60
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- bl sub_81CDC50
- lsls r0, 16
- lsrs r0, 16
- subs r0, 0x1
- cmp r4, r0
- beq _081CEF0C
-_081CEEF0:
- bl sub_81CDC84
- lsls r0, 24
- asrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, 0x14
- adds r1, r5, r1
- adds r2, r5, 0
- adds r2, 0x50
- adds r0, r5, 0
- bl sub_81D1F84
-_081CEF0C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81CEEC8
-
- thumb_func_start sub_81CEF14
-sub_81CEF14: @ 81CEF14
- push {r4,lr}
- movs r0, 0xC
- bl GetSubstructPtr
- adds r4, r0, 0
- bl sub_81CDD5C
- cmp r0, 0x1
- beq _081CEF2A
- movs r0, 0
- b _081CEF30
-_081CEF2A:
- ldr r1, =0x00001828
- adds r0, r4, r1
- ldrb r0, [r0]
-_081CEF30:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CEF14
-
- thumb_func_start sub_81CEF3C
-sub_81CEF3C: @ 81CEF3C
- push {r4,lr}
- movs r0, 0x7
- movs r1, 0x24
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081CEF90
- ldr r1, =0x000006ac
- movs r0, 0x12
- bl AllocSubstruct
- str r0, [r4, 0x20]
- cmp r0, 0
- beq _081CEF90
- ldr r0, =sub_81CF010
- str r0, [r4]
- ldr r0, =sub_81CF11C
- movs r1, 0x1
- bl sub_81C7078
- str r0, [r4, 0x4]
- movs r0, 0
- str r0, [r4, 0x18]
- bl sub_81C76AC
- ldr r1, =gUnknown_086233A0
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- str r0, [r4, 0x14]
- movs r0, 0x1
- b _081CEF92
- .pool
-_081CEF90:
- movs r0, 0
-_081CEF92:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CEF3C
-
- thumb_func_start sub_81CEF98
-sub_81CEF98: @ 81CEF98
- push {r4,lr}
- movs r0, 0x7
- movs r1, 0x24
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081CEFD4
- movs r0, 0x12
- bl GetSubstructPtr
- str r0, [r4, 0x20]
- ldr r0, =sub_81CF030
- str r0, [r4]
- movs r0, 0x1
- str r0, [r4, 0x18]
- bl sub_81C76AC
- ldr r1, =gUnknown_086233A0
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- str r0, [r4, 0x14]
- movs r0, 0x1
- b _081CEFD6
- .pool
-_081CEFD4:
- movs r0, 0
-_081CEFD6:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CEF98
-
- thumb_func_start sub_81CEFDC
-sub_81CEFDC: @ 81CEFDC
- push {lr}
- movs r0, 0x7
- bl GetSubstructPtr
- ldr r1, [r0]
- bl _call_via_r1
- pop {r1}
- bx r1
- thumb_func_end sub_81CEFDC
-
- thumb_func_start sub_81CEFF0
-sub_81CEFF0: @ 81CEFF0
- push {lr}
- movs r0, 0x7
- bl GetSubstructPtr
- ldr r0, [r0, 0x1C]
- cmp r0, 0
- bne _081CF004
- movs r0, 0x12
- bl FreeSubstruct
-_081CF004:
- movs r0, 0x7
- bl FreeSubstruct
- pop {r0}
- bx r0
- thumb_func_end sub_81CEFF0
-
- thumb_func_start sub_81CF010
-sub_81CF010: @ 81CF010
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x4]
- bl sub_81C70D8
- cmp r0, 0
- bne _081CF022
- ldr r0, =sub_81CF030
- str r0, [r4]
-_081CF022:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CF010
-
- thumb_func_start sub_81CF030
-sub_81CF030: @ 81CF030
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r2, =gMain
- ldrh r1, [r2, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081CF048
- movs r0, 0x1
- b _081CF0A6
- .pool
-_081CF048:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081CF054
- movs r0, 0x2
- b _081CF0A6
-_081CF054:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _081CF062
- movs r0, 0x3
- b _081CF0A6
-_081CF062:
- movs r0, 0x10
- ands r0, r1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0
- beq _081CF072
- movs r0, 0x4
- b _081CF0A6
-_081CF072:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081CF088
- str r2, [r4, 0x1C]
- ldr r0, =sub_81CF0B0
- str r0, [r4]
- movs r0, 0x5
- b _081CF0A6
- .pool
-_081CF088:
- movs r5, 0x1
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- bne _081CF096
- movs r0, 0
- b _081CF0A6
-_081CF096:
- bl sub_81C875C
- ldr r1, [r4, 0x20]
- strh r0, [r1, 0x2]
- str r5, [r4, 0x1C]
- ldr r0, =sub_81CF0B8
- str r0, [r4]
- movs r0, 0x6
-_081CF0A6:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CF030
-
- thumb_func_start sub_81CF0B0
-sub_81CF0B0: @ 81CF0B0
- ldr r0, =0x000186a3
- bx lr
- .pool
- thumb_func_end sub_81CF0B0
-
- thumb_func_start sub_81CF0B8
-sub_81CF0B8: @ 81CF0B8
- ldr r0, =0x000186a9
- bx lr
- .pool
- thumb_func_end sub_81CF0B8
-
- thumb_func_start sub_81CF0C0
-sub_81CF0C0: @ 81CF0C0
- push {lr}
- movs r0, 0x7
- bl GetSubstructPtr
- ldr r0, [r0, 0x18]
- pop {r1}
- bx r1
- thumb_func_end sub_81CF0C0
-
- thumb_func_start sub_81CF0D0
-sub_81CF0D0: @ 81CF0D0
- push {lr}
- movs r0, 0x7
- bl GetSubstructPtr
- ldr r0, [r0, 0x20]
- adds r0, 0x4
- pop {r1}
- bx r1
- thumb_func_end sub_81CF0D0
-
- thumb_func_start sub_81CF0E0
-sub_81CF0E0: @ 81CF0E0
- push {lr}
- movs r0, 0x7
- bl GetSubstructPtr
- ldr r0, [r0, 0x20]
- ldrh r0, [r0]
- pop {r1}
- bx r1
- thumb_func_end sub_81CF0E0
-
- thumb_func_start sub_81CF0F0
-sub_81CF0F0: @ 81CF0F0
- push {r4,lr}
- movs r0, 0x7
- bl GetSubstructPtr
- adds r4, r0, 0
- bl sub_81C875C
- ldr r1, [r4, 0x20]
- lsls r0, 2
- adds r1, r0
- ldrh r0, [r1, 0x6]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CF0F0
-
- thumb_func_start sub_81CF10C
-sub_81CF10C: @ 81CF10C
- push {lr}
- movs r0, 0x7
- bl GetSubstructPtr
- ldr r0, [r0, 0x20]
- ldrh r0, [r0, 0x2]
- pop {r1}
- bx r1
- thumb_func_end sub_81CF10C
-
- thumb_func_start sub_81CF11C
-sub_81CF11C: @ 81CF11C
- push {lr}
- ldr r2, =gUnknown_086233B4
- lsls r1, r0, 2
- adds r1, r2
- ldr r1, [r1]
- bl _call_via_r1
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CF11C
-
- thumb_func_start sub_81CF134
-sub_81CF134: @ 81CF134
- push {r4-r6,lr}
- sub sp, 0x4
- movs r0, 0x7
- bl GetSubstructPtr
- adds r6, r0, 0
- ldr r0, [r6, 0x20]
- movs r1, 0
- strh r1, [r0]
- ldr r0, [r6, 0x20]
- strh r1, [r0, 0x2]
- ldr r1, =0xffffff00
- ldr r0, [sp]
- ands r0, r1
- movs r1, 0xE
- orrs r0, r1
- str r0, [sp]
- movs r5, 0
-_081CF158:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x5
- bl GetMonData
- cmp r0, 0
- beq _081CF1AA
- adds r0, r4, 0
- movs r1, 0x6
- bl GetMonData
- cmp r0, 0
- bne _081CF1A4
- lsls r1, r5, 24
- lsrs r1, 16
- ldr r2, =0xffff00ff
- ldr r0, [sp]
- ands r0, r2
- orrs r0, r1
- str r0, [sp]
- ldr r1, [r6, 0x14]
- adds r0, r4, 0
- bl GetMonData
- lsls r0, 16
- ldr r2, =0x0000ffff
- ldr r1, [sp]
- ands r1, r2
- orrs r1, r0
- str r1, [sp]
- adds r0, r6, 0
- mov r1, sp
- bl sub_81CF2C4
-_081CF1A4:
- adds r5, 0x1
- cmp r5, 0x5
- ble _081CF158
-_081CF1AA:
- movs r0, 0x1
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CF134
-
- thumb_func_start sub_81CF1C4
-sub_81CF1C4: @ 81CF1C4
- push {lr}
- movs r0, 0x7
- bl GetSubstructPtr
- movs r1, 0
- str r1, [r0, 0x10]
- str r1, [r0, 0xC]
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_81CF1C4
-
- thumb_func_start sub_81CF1D8
-sub_81CF1D8: @ 81CF1D8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r0, 0x7
- bl GetSubstructPtr
- adds r6, r0, 0
- ldr r5, [r6, 0xC]
- ldr r4, [r6, 0x10]
- movs r0, 0
- mov r8, r0
- cmp r5, 0xD
- bgt _081CF268
-_081CF1F4:
- cmp r4, 0x1D
- bgt _081CF260
- lsls r0, r5, 24
- lsrs r7, r0, 24
-_081CF1FC:
- adds r0, r5, 0
- adds r1, r4, 0
- bl CheckBoxMonSanityAt
- cmp r0, 0
- beq _081CF23A
- ldr r1, =0xffffff00
- ldr r0, [sp]
- ands r0, r1
- orrs r0, r7
- lsls r1, r4, 24
- lsrs r1, 24
- lsls r3, r1, 8
- ldr r2, =0xffff00ff
- ands r0, r2
- orrs r0, r3
- str r0, [sp]
- ldr r2, [r6, 0x14]
- adds r0, r7, 0
- bl GetBoxMonDataAt
- lsls r0, 16
- ldr r2, =0x0000ffff
- ldr r1, [sp]
- ands r1, r2
- orrs r1, r0
- str r1, [sp]
- adds r0, r6, 0
- mov r1, sp
- bl sub_81CF2C4
-_081CF23A:
- movs r0, 0x1
- add r8, r0
- adds r4, 0x1
- mov r0, r8
- cmp r0, 0xE
- ble _081CF25C
- str r5, [r6, 0xC]
- str r4, [r6, 0x10]
- movs r0, 0x3
- b _081CF26A
- .pool
-_081CF25C:
- cmp r4, 0x1D
- ble _081CF1FC
-_081CF260:
- movs r4, 0
- adds r5, 0x1
- cmp r5, 0xD
- ble _081CF1F4
-_081CF268:
- movs r0, 0x1
-_081CF26A:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81CF1D8
-
- thumb_func_start sub_81CF278
-sub_81CF278: @ 81CF278
- push {r4-r6,lr}
- movs r0, 0x7
- bl GetSubstructPtr
- adds r5, r0, 0
- ldr r0, [r5, 0x20]
- ldrh r6, [r0]
- ldrh r4, [r0, 0x6]
- movs r1, 0x1
- strh r1, [r0, 0x6]
- movs r3, 0x1
- cmp r3, r6
- bge _081CF2B8
-_081CF292:
- ldr r2, [r5, 0x20]
- lsls r0, r3, 2
- adds r1, r2, r0
- ldrh r0, [r1, 0x6]
- cmp r0, r4
- bne _081CF2AC
- subs r0, r3, 0x1
- lsls r0, 2
- adds r0, r2, r0
- ldrh r0, [r0, 0x6]
- strh r0, [r1, 0x6]
- adds r0, r3, 0x1
- b _081CF2B2
-_081CF2AC:
- adds r4, r0, 0
- adds r0, r3, 0x1
- strh r0, [r1, 0x6]
-_081CF2B2:
- adds r3, r0, 0
- cmp r3, r6
- blt _081CF292
-_081CF2B8:
- movs r0, 0x1
- str r0, [r5, 0x18]
- movs r0, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81CF278
-
- thumb_func_start sub_81CF2C4
-sub_81CF2C4: @ 81CF2C4
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r7, r1, 0
- movs r1, 0
- ldr r0, [r5, 0x20]
- ldrh r2, [r0]
- lsrs r3, r2, 1
- cmp r2, r3
- beq _081CF2F4
- adds r6, r0, 0
- ldrh r4, [r7, 0x2]
-_081CF2DA:
- lsls r0, r3, 2
- adds r0, r6, r0
- ldrh r0, [r0, 0x6]
- cmp r4, r0
- bls _081CF2E8
- adds r2, r3, 0
- b _081CF2EA
-_081CF2E8:
- adds r1, r3, 0x1
-_081CF2EA:
- subs r0, r2, r1
- lsrs r0, 1
- adds r3, r1, r0
- cmp r2, r3
- bne _081CF2DA
-_081CF2F4:
- ldr r0, [r5, 0x20]
- ldrh r2, [r0]
- lsls r6, r3, 2
- cmp r2, r3
- bls _081CF318
- lsls r0, r2, 2
- subs r4, r0, 0x4
-_081CF302:
- ldr r0, [r5, 0x20]
- lsls r1, r2, 2
- adds r0, 0x4
- adds r1, r0, r1
- adds r0, r4
- ldr r0, [r0]
- str r0, [r1]
- subs r4, 0x4
- subs r2, 0x1
- cmp r2, r3
- bhi _081CF302
-_081CF318:
- ldr r0, [r5, 0x20]
- adds r0, 0x4
- adds r0, r6
- ldr r1, [r7]
- str r1, [r0]
- ldr r1, [r5, 0x20]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81CF2C4
-
- thumb_func_start sub_81CF330
-sub_81CF330: @ 81CF330
- push {r4,lr}
- movs r1, 0x81
- lsls r1, 4
- movs r0, 0x8
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081CF360
- ldr r0, =sub_81CF418
- movs r1, 0x1
- bl sub_81C7078
- str r0, [r4, 0x4]
- ldr r0, =sub_81CF3E4
- str r0, [r4]
- movs r0, 0
- str r0, [r4, 0xC]
- movs r0, 0x1
- b _081CF362
- .pool
-_081CF360:
- movs r0, 0
-_081CF362:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CF330
-
- thumb_func_start sub_81CF368
-sub_81CF368: @ 81CF368
- push {r4,lr}
- movs r1, 0x81
- lsls r1, 4
- movs r0, 0x8
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081CF398
- ldr r0, =sub_81CF418
- movs r1, 0x1
- bl sub_81C7078
- str r0, [r4, 0x4]
- ldr r0, =sub_81CF3E4
- str r0, [r4]
- movs r0, 0x1
- str r0, [r4, 0xC]
- b _081CF39A
- .pool
-_081CF398:
- movs r0, 0
-_081CF39A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CF368
-
- thumb_func_start sub_81CF3A0
-sub_81CF3A0: @ 81CF3A0
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x8
- bl GetSubstructPtr
- adds r5, r0, 0
- ldr r0, =gUnknown_08623598
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- movs r1, 0x1
- bl sub_81C7078
- str r0, [r5, 0x4]
- ldr r0, =sub_81CF3E4
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CF3A0
-
- thumb_func_start sub_81CF3D0
-sub_81CF3D0: @ 81CF3D0
- push {lr}
- movs r0, 0x8
- bl GetSubstructPtr
- ldr r0, [r0]
- bl _call_via_r0
- pop {r1}
- bx r1
- thumb_func_end sub_81CF3D0
-
- thumb_func_start sub_81CF3E4
-sub_81CF3E4: @ 81CF3E4
- push {lr}
- movs r0, 0x8
- bl GetSubstructPtr
- ldr r0, [r0, 0x4]
- bl sub_81C70D8
- pop {r1}
- bx r1
- thumb_func_end sub_81CF3E4
-
- thumb_func_start sub_81CF3F8
-sub_81CF3F8: @ 81CF3F8
- push {r4,lr}
- movs r0, 0x8
- bl GetSubstructPtr
- adds r4, r0, 0
- bl sub_81C8234
- ldrb r0, [r4, 0x8]
- bl RemoveWindow
- movs r0, 0x8
- bl FreeSubstruct
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81CF3F8
-
- thumb_func_start sub_81CF418
-sub_81CF418: @ 81CF418
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r0, 0x8
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x5
- bls _081CF42C
- b _081CF56E
-_081CF42C:
- lsls r0, r4, 2
- ldr r1, =_081CF43C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081CF43C:
- .4byte _081CF454
- .4byte _081CF4AC
- .4byte _081CF4C0
- .4byte _081CF4E0
- .4byte _081CF4F6
- .4byte _081CF55A
-_081CF454:
- ldr r0, =gUnknown_08623590
- movs r1, 0x2
- bl InitBgTemplates
- ldr r1, =gUnknown_086233E4
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- adds r1, r5, 0
- adds r1, 0x10
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, =gUnknown_086234AC
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- ldr r0, =gUnknown_086233C4
- movs r1, 0x10
- movs r2, 0x20
- bl CopyPaletteIntoBufferUnfaded
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
-_081CF498:
- movs r0, 0
- b _081CF570
- .pool
-_081CF4AC:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _081CF56A
- bl sub_81CF0C0
- cmp r0, 0
- beq _081CF56A
- b _081CF498
-_081CF4C0:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _081CF56A
- ldr r0, =gUnknown_08623570
- movs r1, 0x20
- movs r2, 0x20
- bl CopyPaletteIntoBufferUnfaded
- bl sub_81CF88C
- b _081CF498
- .pool
-_081CF4E0:
- bl sub_81C8224
- cmp r0, 0
- bne _081CF56A
- adds r0, r5, 0
- bl sub_81CF7C8
- movs r0, 0x3
- bl sub_81C7BA4
- b _081CF498
-_081CF4F6:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _081CF56A
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl HideBg
- ldr r0, [r5, 0xC]
- cmp r0, 0
- bne _081CF552
- bl sub_81C76AC
- adds r4, r0, 0
- adds r4, 0x8
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_81C7DFC
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0
- bl sub_81C7FA0
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl sub_81C7FA0
-_081CF552:
- movs r0, 0x1
- bl sub_81C7AC0
- b _081CF498
-_081CF55A:
- bl IsPaletteFadeActive
- cmp r0, 0
- bne _081CF56A
- bl sub_81C8010
- cmp r0, 0
- beq _081CF56E
-_081CF56A:
- movs r0, 0x2
- b _081CF570
-_081CF56E:
- movs r0, 0x4
-_081CF570:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CF418
-
- thumb_func_start sub_81CF578
-sub_81CF578: @ 81CF578
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x8
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081CF5C6
- cmp r4, 0x1
- bgt _081CF592
- cmp r4, 0
- beq _081CF59C
- b _081CF5E6
-_081CF592:
- cmp r4, 0x2
- beq _081CF5CE
- cmp r4, 0x3
- beq _081CF5D8
- b _081CF5E6
-_081CF59C:
- bl sub_81C8658
- cmp r0, 0x1
- beq _081CF5B4
- cmp r0, 0x1
- bgt _081CF5AE
- cmp r0, 0
- beq _081CF5E6
- b _081CF5D4
-_081CF5AE:
- cmp r0, 0x2
- beq _081CF5BE
- b _081CF5D4
-_081CF5B4:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x7
- b _081CF5E8
-_081CF5BE:
- movs r0, 0x5
- bl PlaySE
- b _081CF5D4
-_081CF5C6:
- bl sub_81C8630
- cmp r0, 0
- bne _081CF5E2
-_081CF5CE:
- adds r0, r5, 0
- bl sub_81CF7F4
-_081CF5D4:
- movs r0, 0
- b _081CF5E8
-_081CF5D8:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081CF5E6
-_081CF5E2:
- movs r0, 0x2
- b _081CF5E8
-_081CF5E6:
- movs r0, 0x4
-_081CF5E8:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CF578
-
- thumb_func_start sub_81CF5F0
-sub_81CF5F0: @ 81CF5F0
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x8
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081CF63E
- cmp r4, 0x1
- bgt _081CF60A
- cmp r4, 0
- beq _081CF614
- b _081CF65E
-_081CF60A:
- cmp r4, 0x2
- beq _081CF646
- cmp r4, 0x3
- beq _081CF650
- b _081CF65E
-_081CF614:
- bl sub_81C868C
- cmp r0, 0x1
- beq _081CF62C
- cmp r0, 0x1
- bgt _081CF626
- cmp r0, 0
- beq _081CF65E
- b _081CF64C
-_081CF626:
- cmp r0, 0x2
- beq _081CF636
- b _081CF64C
-_081CF62C:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x7
- b _081CF660
-_081CF636:
- movs r0, 0x5
- bl PlaySE
- b _081CF64C
-_081CF63E:
- bl sub_81C8630
- cmp r0, 0
- bne _081CF65A
-_081CF646:
- adds r0, r5, 0
- bl sub_81CF7F4
-_081CF64C:
- movs r0, 0
- b _081CF660
-_081CF650:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081CF65E
-_081CF65A:
- movs r0, 0x2
- b _081CF660
-_081CF65E:
- movs r0, 0x4
-_081CF660:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CF5F0
-
- thumb_func_start sub_81CF668
-sub_81CF668: @ 81CF668
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x8
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081CF6B6
- cmp r4, 0x1
- bgt _081CF682
- cmp r4, 0
- beq _081CF68C
- b _081CF6D6
-_081CF682:
- cmp r4, 0x2
- beq _081CF6BE
- cmp r4, 0x3
- beq _081CF6C8
- b _081CF6D6
-_081CF68C:
- bl sub_81C86CC
- cmp r0, 0x1
- beq _081CF6A4
- cmp r0, 0x1
- bgt _081CF69E
- cmp r0, 0
- beq _081CF6D6
- b _081CF6C4
-_081CF69E:
- cmp r0, 0x2
- beq _081CF6AE
- b _081CF6C4
-_081CF6A4:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x7
- b _081CF6D8
-_081CF6AE:
- movs r0, 0x5
- bl PlaySE
- b _081CF6C4
-_081CF6B6:
- bl sub_81C8630
- cmp r0, 0
- bne _081CF6D2
-_081CF6BE:
- adds r0, r5, 0
- bl sub_81CF7F4
-_081CF6C4:
- movs r0, 0
- b _081CF6D8
-_081CF6C8:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081CF6D6
-_081CF6D2:
- movs r0, 0x2
- b _081CF6D8
-_081CF6D6:
- movs r0, 0x4
-_081CF6D8:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CF668
-
- thumb_func_start sub_81CF6E0
-sub_81CF6E0: @ 81CF6E0
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x8
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081CF72E
- cmp r4, 0x1
- bgt _081CF6FA
- cmp r4, 0
- beq _081CF704
- b _081CF74E
-_081CF6FA:
- cmp r4, 0x2
- beq _081CF736
- cmp r4, 0x3
- beq _081CF740
- b _081CF74E
-_081CF704:
- bl sub_81C870C
- cmp r0, 0x1
- beq _081CF71C
- cmp r0, 0x1
- bgt _081CF716
- cmp r0, 0
- beq _081CF74E
- b _081CF73C
-_081CF716:
- cmp r0, 0x2
- beq _081CF726
- b _081CF73C
-_081CF71C:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x7
- b _081CF750
-_081CF726:
- movs r0, 0x5
- bl PlaySE
- b _081CF73C
-_081CF72E:
- bl sub_81C8630
- cmp r0, 0
- bne _081CF74A
-_081CF736:
- adds r0, r5, 0
- bl sub_81CF7F4
-_081CF73C:
- movs r0, 0
- b _081CF750
-_081CF740:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081CF74E
-_081CF74A:
- movs r0, 0x2
- b _081CF750
-_081CF74E:
- movs r0, 0x4
-_081CF750:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CF6E0
-
- thumb_func_start sub_81CF758
-sub_81CF758: @ 81CF758
- push {lr}
- cmp r0, 0
- beq _081CF764
- cmp r0, 0x1
- beq _081CF778
- b _081CF790
-_081CF764:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl sub_81C7AC0
- bl sub_81C78A0
- movs r0, 0
- b _081CF792
-_081CF778:
- bl IsPaletteFadeActive
- cmp r0, 0
- bne _081CF788
- bl sub_81C78C0
- cmp r0, 0
- beq _081CF78C
-_081CF788:
- movs r0, 0x2
- b _081CF792
-_081CF78C:
- bl sub_81C7FDC
-_081CF790:
- movs r0, 0x4
-_081CF792:
- pop {r1}
- bx r1
- thumb_func_end sub_81CF758
-
- thumb_func_start sub_81CF798
-sub_81CF798: @ 81CF798
- push {lr}
- cmp r0, 0
- beq _081CF7A4
- cmp r0, 0x1
- beq _081CF7B4
- b _081CF7C0
-_081CF7A4:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl sub_81C7AC0
- movs r0, 0
- b _081CF7C2
-_081CF7B4:
- bl IsPaletteFadeActive
- cmp r0, 0
- beq _081CF7C0
- movs r0, 0x2
- b _081CF7C2
-_081CF7C0:
- movs r0, 0x4
-_081CF7C2:
- pop {r1}
- bx r1
- thumb_func_end sub_81CF798
-
- thumb_func_start sub_81CF7C8
-sub_81CF7C8: @ 81CF7C8
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gUnknown_086235B4
- bl AddWindow
- strh r0, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- bl PutWindowTilemap
- ldrb r0, [r4, 0x8]
- movs r1, 0x1
- bl CopyWindowToVram
- adds r0, r4, 0
- bl sub_81CF7F4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CF7C8
-
- thumb_func_start sub_81CF7F4
-sub_81CF7F4: @ 81CF7F4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- mov r8, r0
- bl sub_81CF0F0
- adds r7, r0, 0
- bl DynamicPlaceholderTextUtil_Reset
- ldr r4, =gStringVar1
- movs r0, 0
- adds r1, r4, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- movs r0, 0xFF
- strb r0, [r4]
- ldr r5, =gStringVar2
- ldr r1, =gText_NumberF700
- adds r0, r5, 0
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
- mov r1, r8
- ldrb r0, [r1, 0x8]
- movs r1, 0x1
- mov r10, r1
- str r1, [sp]
- movs r1, 0xFF
- mov r9, r1
- str r1, [sp, 0x4]
- movs r6, 0
- str r6, [sp, 0x8]
- movs r1, 0x1
- adds r2, r5, 0
- movs r3, 0x4
- bl AddTextPrinterParameterized
- adds r0, r4, 0
- adds r1, r7, 0
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- mov r1, r8
- ldrb r0, [r1, 0x8]
- mov r1, r10
- str r1, [sp]
- mov r1, r9
- str r1, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r1, 0x1
- adds r2, r4, 0
- movs r3, 0x22
- bl AddTextPrinterParameterized
- mov r1, r8
- ldrb r0, [r1, 0x8]
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CF7F4
-
- thumb_func_start sub_81CF88C
-sub_81CF88C: @ 81CF88C
- push {r4,lr}
- sub sp, 0x18
- bl sub_81CF0D0
- str r0, [sp]
- bl sub_81CF0E0
- mov r1, sp
- movs r4, 0
- strh r0, [r1, 0x4]
- movs r0, 0x4
- strb r0, [r1, 0x8]
- bl sub_81CF10C
- mov r1, sp
- strh r0, [r1, 0x6]
- movs r0, 0xD
- strb r0, [r1, 0x9]
- movs r0, 0x11
- strb r0, [r1, 0xA]
- mov r0, sp
- movs r2, 0x1
- strb r2, [r0, 0xB]
- movs r0, 0x8
- strb r0, [r1, 0xC]
- movs r0, 0x2
- strb r0, [r1, 0xD]
- mov r0, sp
- strb r2, [r0, 0xE]
- ldr r0, =sub_81CF8E4
- str r0, [sp, 0x10]
- str r4, [sp, 0x14]
- ldr r0, =gUnknown_08623594
- movs r2, 0
- bl sub_81C81D4
- add sp, 0x18
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CF88C
-
- thumb_func_start sub_81CF8E4
-sub_81CF8E4: @ 81CF8E4
- push {r4-r7,lr}
- adds r2, r0, 0
- adds r6, r1, 0
- ldrb r0, [r2]
- cmp r0, 0xE
- bne _081CF924
- ldrb r1, [r2, 0x1]
- movs r0, 0x64
- adds r4, r1, 0
- muls r4, r0
- ldr r0, =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- bl GetMonGender
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r4, 0
- bl GetLevelFromMonExp
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r2, =gStringVar3
- adds r0, r4, 0
- movs r1, 0x2
- bl GetMonData
- b _081CF94A
- .pool
-_081CF924:
- ldrb r0, [r2]
- ldrb r1, [r2, 0x1]
- bl GetBoxedMonPtr
- adds r4, r0, 0
- bl GetBoxMonGender
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r4, 0
- bl GetLevelFromBoxMonExp
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r2, =gStringVar3
- adds r0, r4, 0
- movs r1, 0x2
- bl GetBoxMonData
-_081CF94A:
- ldr r4, =gStringVar3
- adds r0, r4, 0
- bl StringGetEnd10
- adds r0, r6, 0
- movs r1, 0x1
- adds r2, r4, 0
- movs r3, 0x3C
- bl sub_81DB494
- adds r6, r0, 0
- cmp r5, 0
- beq _081CF974
- cmp r5, 0xFE
- beq _081CF97C
- ldr r1, =gUnknown_086235D4
- b _081CF97E
- .pool
-_081CF974:
- ldr r1, =gUnknown_086235BC
- b _081CF97E
- .pool
-_081CF97C:
- ldr r1, =gUnknown_086235C8
-_081CF97E:
- ldr r4, =gStringVar1
- adds r0, r4, 0
- bl StringCopy
- movs r1, 0xBA
- strb r1, [r0]
- adds r0, 0x1
- movs r1, 0xF9
- strb r1, [r0]
- adds r0, 0x1
- movs r1, 0x5
- strb r1, [r0]
- adds r0, 0x1
- adds r1, r7, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r0, r6, 0
- movs r1, 0x1
- adds r2, r4, 0
- movs r3, 0x28
- bl sub_81DB494
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CF8E4
-
- thumb_func_start sub_81CF9BC
-sub_81CF9BC: @ 81CF9BC
- push {r4,lr}
- movs r0, 0x9
- movs r1, 0x20
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081CF9FC
- ldr r1, =0x000006ac
- movs r0, 0x12
- bl AllocSubstruct
- str r0, [r4, 0x1C]
- cmp r0, 0
- beq _081CF9FC
- ldr r0, =sub_81CFA68
- str r0, [r4]
- ldr r0, =sub_81CFB74
- movs r1, 0x1
- bl sub_81C7078
- str r0, [r4, 0x4]
- movs r0, 0
- str r0, [r4, 0x14]
- movs r0, 0x1
- b _081CF9FE
- .pool
-_081CF9FC:
- movs r0, 0
-_081CF9FE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CF9BC
-
- thumb_func_start sub_81CFA04
-sub_81CFA04: @ 81CFA04
- push {r4,lr}
- movs r0, 0x9
- movs r1, 0x20
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081CFA2C
- movs r0, 0x12
- bl GetSubstructPtr
- str r0, [r4, 0x1C]
- ldr r0, =sub_81CFA88
- str r0, [r4]
- movs r0, 0x1
- str r0, [r4, 0x14]
- b _081CFA2E
- .pool
-_081CFA2C:
- movs r0, 0
-_081CFA2E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CFA04
-
- thumb_func_start sub_81CFA34
-sub_81CFA34: @ 81CFA34
- push {lr}
- movs r0, 0x9
- bl GetSubstructPtr
- ldr r1, [r0]
- bl _call_via_r1
- pop {r1}
- bx r1
- thumb_func_end sub_81CFA34
-
- thumb_func_start sub_81CFA48
-sub_81CFA48: @ 81CFA48
- push {lr}
- movs r0, 0x9
- bl GetSubstructPtr
- ldr r0, [r0, 0x18]
- cmp r0, 0
- bne _081CFA5C
- movs r0, 0x12
- bl FreeSubstruct
-_081CFA5C:
- movs r0, 0x9
- bl FreeSubstruct
- pop {r0}
- bx r0
- thumb_func_end sub_81CFA48
-
- thumb_func_start sub_81CFA68
-sub_81CFA68: @ 81CFA68
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x4]
- bl sub_81C70D8
- cmp r0, 0
- bne _081CFA7A
- ldr r0, =sub_81CFA88
- str r0, [r4]
-_081CFA7A:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CFA68
-
- thumb_func_start sub_81CFA88
-sub_81CFA88: @ 81CFA88
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r2, =gMain
- ldrh r1, [r2, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081CFAA0
- movs r0, 0x1
- b _081CFAFE
- .pool
-_081CFAA0:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081CFAAC
- movs r0, 0x2
- b _081CFAFE
-_081CFAAC:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _081CFABA
- movs r0, 0x3
- b _081CFAFE
-_081CFABA:
- movs r0, 0x10
- ands r0, r1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0
- beq _081CFACA
- movs r0, 0x4
- b _081CFAFE
-_081CFACA:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081CFAE0
- str r2, [r4, 0x18]
- ldr r0, =sub_81CFB08
- str r0, [r4]
- movs r0, 0x5
- b _081CFAFE
- .pool
-_081CFAE0:
- movs r5, 0x1
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- bne _081CFAEE
- movs r0, 0
- b _081CFAFE
-_081CFAEE:
- bl sub_81C875C
- ldr r1, [r4, 0x1C]
- strh r0, [r1, 0x2]
- str r5, [r4, 0x18]
- ldr r0, =sub_81CFB10
- str r0, [r4]
- movs r0, 0x6
-_081CFAFE:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CFA88
-
- thumb_func_start sub_81CFB08
-sub_81CFB08: @ 81CFB08
- ldr r0, =0x000186a5
- bx lr
- .pool
- thumb_func_end sub_81CFB08
-
- thumb_func_start sub_81CFB10
-sub_81CFB10: @ 81CFB10
- ldr r0, =0x000186ad
- bx lr
- .pool
- thumb_func_end sub_81CFB10
-
- thumb_func_start sub_81CFB18
-sub_81CFB18: @ 81CFB18
- push {lr}
- movs r0, 0x9
- bl GetSubstructPtr
- ldr r0, [r0, 0x14]
- pop {r1}
- bx r1
- thumb_func_end sub_81CFB18
-
- thumb_func_start sub_81CFB28
-sub_81CFB28: @ 81CFB28
- push {lr}
- movs r0, 0x9
- bl GetSubstructPtr
- ldr r0, [r0, 0x1C]
- adds r0, 0x4
- pop {r1}
- bx r1
- thumb_func_end sub_81CFB28
-
- thumb_func_start sub_81CFB38
-sub_81CFB38: @ 81CFB38
- push {lr}
- movs r0, 0x9
- bl GetSubstructPtr
- ldr r0, [r0, 0x1C]
- ldrh r0, [r0]
- pop {r1}
- bx r1
- thumb_func_end sub_81CFB38
-
- thumb_func_start sub_81CFB48
-sub_81CFB48: @ 81CFB48
- push {r4,lr}
- movs r0, 0x9
- bl GetSubstructPtr
- adds r4, r0, 0
- bl sub_81C875C
- ldr r1, [r4, 0x1C]
- lsls r0, 2
- adds r1, r0
- ldrh r0, [r1, 0x6]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CFB48
-
- thumb_func_start sub_81CFB64
-sub_81CFB64: @ 81CFB64
- push {lr}
- movs r0, 0x9
- bl GetSubstructPtr
- ldr r0, [r0, 0x1C]
- ldrh r0, [r0, 0x2]
- pop {r1}
- bx r1
- thumb_func_end sub_81CFB64
-
- thumb_func_start sub_81CFB74
-sub_81CFB74: @ 81CFB74
- push {lr}
- ldr r2, =gUnknown_086235D8
- lsls r1, r0, 2
- adds r1, r2
- ldr r1, [r1]
- bl _call_via_r1
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CFB74
-
- thumb_func_start sub_81CFB8C
-sub_81CFB8C: @ 81CFB8C
- push {r4-r6,lr}
- sub sp, 0x4
- movs r0, 0x9
- bl GetSubstructPtr
- adds r6, r0, 0
- ldr r0, [r6, 0x1C]
- movs r1, 0
- strh r1, [r0]
- ldr r0, [r6, 0x1C]
- strh r1, [r0, 0x2]
- ldr r1, =0xffffff00
- ldr r0, [sp]
- ands r0, r1
- movs r1, 0xE
- orrs r0, r1
- str r0, [sp]
- movs r5, 0
-_081CFBB0:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x5
- bl GetMonData
- cmp r0, 0
- beq _081CFC10
- adds r0, r4, 0
- movs r1, 0x6
- bl GetMonData
- cmp r0, 0
- bne _081CFC0A
- adds r0, r4, 0
- movs r1, 0x4
- bl GetMonData
- cmp r0, 0
- bne _081CFC0A
- adds r0, r4, 0
- movs r1, 0x52
- bl GetMonData
- adds r3, r0, 0
- cmp r3, 0
- beq _081CFC0A
- lsls r1, r5, 24
- lsrs r1, 16
- ldr r2, =0xffff00ff
- ldr r0, [sp]
- ands r0, r2
- orrs r0, r1
- lsls r2, r3, 16
- ldr r1, =0x0000ffff
- ands r0, r1
- orrs r0, r2
- str r0, [sp]
- adds r0, r6, 0
- mov r1, sp
- bl sub_81CFCEC
-_081CFC0A:
- adds r5, 0x1
- cmp r5, 0x5
- ble _081CFBB0
-_081CFC10:
- movs r0, 0x1
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81CFB8C
-
- thumb_func_start sub_81CFC2C
-sub_81CFC2C: @ 81CFC2C
- push {lr}
- movs r0, 0x9
- bl GetSubstructPtr
- movs r1, 0
- str r1, [r0, 0x10]
- str r1, [r0, 0xC]
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_81CFC2C
-
- thumb_func_start sub_81CFC40
-sub_81CFC40: @ 81CFC40
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- movs r0, 0x9
- bl GetSubstructPtr
- mov r8, r0
- ldr r7, [r0, 0xC]
- ldr r6, [r0, 0x10]
- movs r0, 0
- mov r9, r0
- cmp r7, 0xD
- bgt _081CFCD4
- b _081CFCC8
-_081CFC60:
- adds r0, r7, 0
- adds r1, r6, 0
- bl CheckBoxMonSanityAt
- cmp r0, 0
- beq _081CFCA6
- lsls r0, r7, 24
- lsrs r5, r0, 24
- lsls r0, r6, 24
- lsrs r4, r0, 24
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x52
- bl GetBoxMonDataAt
- adds r3, r0, 0
- cmp r3, 0
- beq _081CFCA6
- ldr r1, =0xffffff00
- ldr r0, [sp]
- ands r0, r1
- orrs r0, r5
- lsls r2, r4, 8
- ldr r1, =0xffff00ff
- ands r0, r1
- orrs r0, r2
- lsls r2, r3, 16
- ldr r1, =0x0000ffff
- ands r0, r1
- orrs r0, r2
- str r0, [sp]
- mov r0, r8
- mov r1, sp
- bl sub_81CFCEC
-_081CFCA6:
- movs r1, 0x1
- add r9, r1
- adds r6, 0x1
- mov r0, r9
- cmp r0, 0xE
- ble _081CFCC8
- mov r1, r8
- str r7, [r1, 0xC]
- str r6, [r1, 0x10]
- movs r0, 0x3
- b _081CFCDC
- .pool
-_081CFCC8:
- cmp r6, 0x1D
- ble _081CFC60
- movs r6, 0
- adds r7, 0x1
- cmp r7, 0xD
- ble _081CFCC8
-_081CFCD4:
- movs r0, 0x1
- mov r1, r8
- str r0, [r1, 0x14]
- movs r0, 0x4
-_081CFCDC:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81CFC40
-
- thumb_func_start sub_81CFCEC
-sub_81CFCEC: @ 81CFCEC
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r7, r1, 0
- movs r1, 0
- ldr r0, [r5, 0x1C]
- ldrh r2, [r0]
- lsrs r3, r2, 1
- cmp r2, r3
- beq _081CFD1C
- adds r6, r0, 0
- ldrh r4, [r7, 0x2]
-_081CFD02:
- lsls r0, r3, 2
- adds r0, r6, r0
- ldrh r0, [r0, 0x6]
- cmp r4, r0
- bls _081CFD10
- adds r2, r3, 0
- b _081CFD12
-_081CFD10:
- adds r1, r3, 0x1
-_081CFD12:
- subs r0, r2, r1
- lsrs r0, 1
- adds r3, r1, r0
- cmp r2, r3
- bne _081CFD02
-_081CFD1C:
- ldr r0, [r5, 0x1C]
- ldrh r2, [r0]
- lsls r6, r3, 2
- cmp r2, r3
- bls _081CFD40
- lsls r0, r2, 2
- subs r4, r0, 0x4
-_081CFD2A:
- ldr r0, [r5, 0x1C]
- lsls r1, r2, 2
- adds r0, 0x4
- adds r1, r0, r1
- adds r0, r4
- ldr r0, [r0]
- str r0, [r1]
- subs r4, 0x4
- subs r2, 0x1
- cmp r2, r3
- bhi _081CFD2A
-_081CFD40:
- ldr r0, [r5, 0x1C]
- adds r0, 0x4
- adds r0, r6
- ldr r1, [r7]
- str r1, [r0]
- ldr r1, [r5, 0x1C]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81CFCEC
-
- thumb_func_start sub_81CFD58
-sub_81CFD58: @ 81CFD58
- push {r4-r6,lr}
- movs r5, 0
-_081CFD5C:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x5
- bl GetMonData
- cmp r0, 0
- beq _081CFD8A
- adds r0, r4, 0
- movs r1, 0x6
- bl GetMonData
- cmp r0, 0
- bne _081CFD8A
- adds r0, r4, 0
- movs r1, 0x53
- bl GetMonData
- cmp r0, 0
- bne _081CFDB2
-_081CFD8A:
- adds r5, 0x1
- cmp r5, 0x5
- ble _081CFD5C
- movs r5, 0
-_081CFD92:
- movs r4, 0
- lsls r6, r5, 24
-_081CFD96:
- adds r0, r5, 0
- adds r1, r4, 0
- bl CheckBoxMonSanityAt
- cmp r0, 0
- beq _081CFDBC
- lsls r1, r4, 24
- lsrs r1, 24
- lsrs r0, r6, 24
- movs r2, 0x53
- bl GetBoxMonDataAt
- cmp r0, 0
- beq _081CFDBC
-_081CFDB2:
- movs r0, 0x1
- b _081CFDCA
- .pool
-_081CFDBC:
- adds r4, 0x1
- cmp r4, 0x1D
- ble _081CFD96
- adds r5, 0x1
- cmp r5, 0xD
- ble _081CFD92
- movs r0, 0
-_081CFDCA:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81CFD58
-
- thumb_func_start sub_81CFDD0
-sub_81CFDD0: @ 81CFDD0
- push {r4,lr}
- movs r1, 0x81
- lsls r1, 4
- movs r0, 0xA
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081CFE00
- ldr r0, =sub_81CFEB8
- movs r1, 0x1
- bl sub_81C7078
- str r0, [r4, 0x4]
- ldr r0, =sub_81CFE84
- str r0, [r4]
- movs r0, 0
- str r0, [r4, 0xC]
- movs r0, 0x1
- b _081CFE02
- .pool
-_081CFE00:
- movs r0, 0
-_081CFE02:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CFDD0
-
- thumb_func_start sub_81CFE08
-sub_81CFE08: @ 81CFE08
- push {r4,lr}
- movs r1, 0x81
- lsls r1, 4
- movs r0, 0xA
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081CFE38
- ldr r0, =sub_81CFEB8
- movs r1, 0x1
- bl sub_81C7078
- str r0, [r4, 0x4]
- ldr r0, =sub_81CFE84
- str r0, [r4]
- movs r0, 0x1
- str r0, [r4, 0xC]
- b _081CFE3A
- .pool
-_081CFE38:
- movs r0, 0
-_081CFE3A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81CFE08
-
- thumb_func_start sub_81CFE40
-sub_81CFE40: @ 81CFE40
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0xA
- bl GetSubstructPtr
- adds r5, r0, 0
- ldr r0, =gUnknown_086237B8
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- movs r1, 0x1
- bl sub_81C7078
- str r0, [r5, 0x4]
- ldr r0, =sub_81CFE84
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81CFE40
-
- thumb_func_start sub_81CFE70
-sub_81CFE70: @ 81CFE70
- push {lr}
- movs r0, 0xA
- bl GetSubstructPtr
- ldr r0, [r0]
- bl _call_via_r0
- pop {r1}
- bx r1
- thumb_func_end sub_81CFE70
-
- thumb_func_start sub_81CFE84
-sub_81CFE84: @ 81CFE84
- push {lr}
- movs r0, 0xA
- bl GetSubstructPtr
- ldr r0, [r0, 0x4]
- bl sub_81C70D8
- pop {r1}
- bx r1
- thumb_func_end sub_81CFE84
-
- thumb_func_start sub_81CFE98
-sub_81CFE98: @ 81CFE98
- push {r4,lr}
- movs r0, 0xA
- bl GetSubstructPtr
- adds r4, r0, 0
- bl sub_81C8234
- ldrb r0, [r4, 0x8]
- bl RemoveWindow
- movs r0, 0xA
- bl FreeSubstruct
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81CFE98
-
- thumb_func_start sub_81CFEB8
-sub_81CFEB8: @ 81CFEB8
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r0, 0xA
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x5
- bls _081CFECC
- b _081CFFF2
-_081CFECC:
- lsls r0, r4, 2
- ldr r1, =_081CFEDC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081CFEDC:
- .4byte _081CFEF4
- .4byte _081CFF48
- .4byte _081CFF76
- .4byte _081CFF94
- .4byte _081CFFA4
- .4byte _081CFFDE
-_081CFEF4:
- ldr r0, =gUnknown_086237B0
- movs r1, 0x2
- bl InitBgTemplates
- ldr r1, =gUnknown_08623604
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- adds r1, r5, 0
- adds r1, 0x10
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, =gUnknown_086236CC
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- ldr r0, =gUnknown_086235E4
- movs r1, 0x10
- movs r2, 0x20
- bl CopyPaletteIntoBufferUnfaded
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
-_081CFF32:
- movs r0, 0
- b _081CFFF4
- .pool
-_081CFF48:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _081CFFEE
- bl sub_81CFB18
- cmp r0, 0
- beq _081CFFEE
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- bl ShowBg
- b _081CFF32
-_081CFF76:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _081CFFEE
- ldr r0, =gUnknown_08623790
- movs r1, 0x20
- movs r2, 0x20
- bl CopyPaletteIntoBufferUnfaded
- bl sub_81D0304
- b _081CFF32
- .pool
-_081CFF94:
- bl sub_81C8224
- cmp r0, 0
- bne _081CFFEE
- adds r0, r5, 0
- bl sub_81D024C
- b _081CFF32
-_081CFFA4:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _081CFFEE
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl HideBg
- movs r0, 0x9
- bl sub_81C7BA4
- movs r0, 0x1
- bl sub_81C7AC0
- ldr r0, [r5, 0xC]
- cmp r0, 0
- bne _081CFF32
- movs r0, 0x2
- bl sub_81C7DFC
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- bl sub_81C7FA0
- b _081CFF32
-_081CFFDE:
- bl IsPaletteFadeActive
- cmp r0, 0
- bne _081CFFEE
- bl sub_81C8010
- cmp r0, 0
- beq _081CFFF2
-_081CFFEE:
- movs r0, 0x2
- b _081CFFF4
-_081CFFF2:
- movs r0, 0x4
-_081CFFF4:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CFEB8
-
- thumb_func_start sub_81CFFFC
-sub_81CFFFC: @ 81CFFFC
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0xA
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081D004A
- cmp r4, 0x1
- bgt _081D0016
- cmp r4, 0
- beq _081D0020
- b _081D006A
-_081D0016:
- cmp r4, 0x2
- beq _081D0052
- cmp r4, 0x3
- beq _081D005C
- b _081D006A
-_081D0020:
- bl sub_81C8658
- cmp r0, 0x1
- beq _081D0038
- cmp r0, 0x1
- bgt _081D0032
- cmp r0, 0
- beq _081D006A
- b _081D0058
-_081D0032:
- cmp r0, 0x2
- beq _081D0042
- b _081D0058
-_081D0038:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x7
- b _081D006C
-_081D0042:
- movs r0, 0x5
- bl PlaySE
- b _081D0058
-_081D004A:
- bl sub_81C8630
- cmp r0, 0
- bne _081D0066
-_081D0052:
- adds r0, r5, 0
- bl sub_81D0288
-_081D0058:
- movs r0, 0
- b _081D006C
-_081D005C:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081D006A
-_081D0066:
- movs r0, 0x2
- b _081D006C
-_081D006A:
- movs r0, 0x4
-_081D006C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81CFFFC
-
- thumb_func_start sub_81D0074
-sub_81D0074: @ 81D0074
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0xA
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081D00C2
- cmp r4, 0x1
- bgt _081D008E
- cmp r4, 0
- beq _081D0098
- b _081D00E2
-_081D008E:
- cmp r4, 0x2
- beq _081D00CA
- cmp r4, 0x3
- beq _081D00D4
- b _081D00E2
-_081D0098:
- bl sub_81C868C
- cmp r0, 0x1
- beq _081D00B0
- cmp r0, 0x1
- bgt _081D00AA
- cmp r0, 0
- beq _081D00E2
- b _081D00D0
-_081D00AA:
- cmp r0, 0x2
- beq _081D00BA
- b _081D00D0
-_081D00B0:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x7
- b _081D00E4
-_081D00BA:
- movs r0, 0x5
- bl PlaySE
- b _081D00D0
-_081D00C2:
- bl sub_81C8630
- cmp r0, 0
- bne _081D00DE
-_081D00CA:
- adds r0, r5, 0
- bl sub_81D0288
-_081D00D0:
- movs r0, 0
- b _081D00E4
-_081D00D4:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081D00E2
-_081D00DE:
- movs r0, 0x2
- b _081D00E4
-_081D00E2:
- movs r0, 0x4
-_081D00E4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0074
-
- thumb_func_start sub_81D00EC
-sub_81D00EC: @ 81D00EC
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0xA
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081D013A
- cmp r4, 0x1
- bgt _081D0106
- cmp r4, 0
- beq _081D0110
- b _081D015A
-_081D0106:
- cmp r4, 0x2
- beq _081D0142
- cmp r4, 0x3
- beq _081D014C
- b _081D015A
-_081D0110:
- bl sub_81C86CC
- cmp r0, 0x1
- beq _081D0128
- cmp r0, 0x1
- bgt _081D0122
- cmp r0, 0
- beq _081D015A
- b _081D0148
-_081D0122:
- cmp r0, 0x2
- beq _081D0132
- b _081D0148
-_081D0128:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x7
- b _081D015C
-_081D0132:
- movs r0, 0x5
- bl PlaySE
- b _081D0148
-_081D013A:
- bl sub_81C8630
- cmp r0, 0
- bne _081D0156
-_081D0142:
- adds r0, r5, 0
- bl sub_81D0288
-_081D0148:
- movs r0, 0
- b _081D015C
-_081D014C:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081D015A
-_081D0156:
- movs r0, 0x2
- b _081D015C
-_081D015A:
- movs r0, 0x4
-_081D015C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81D00EC
-
- thumb_func_start sub_81D0164
-sub_81D0164: @ 81D0164
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0xA
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081D01B2
- cmp r4, 0x1
- bgt _081D017E
- cmp r4, 0
- beq _081D0188
- b _081D01D2
-_081D017E:
- cmp r4, 0x2
- beq _081D01BA
- cmp r4, 0x3
- beq _081D01C4
- b _081D01D2
-_081D0188:
- bl sub_81C870C
- cmp r0, 0x1
- beq _081D01A0
- cmp r0, 0x1
- bgt _081D019A
- cmp r0, 0
- beq _081D01D2
- b _081D01C0
-_081D019A:
- cmp r0, 0x2
- beq _081D01AA
- b _081D01C0
-_081D01A0:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x7
- b _081D01D4
-_081D01AA:
- movs r0, 0x5
- bl PlaySE
- b _081D01C0
-_081D01B2:
- bl sub_81C8630
- cmp r0, 0
- bne _081D01CE
-_081D01BA:
- adds r0, r5, 0
- bl sub_81D0288
-_081D01C0:
- movs r0, 0
- b _081D01D4
-_081D01C4:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081D01D2
-_081D01CE:
- movs r0, 0x2
- b _081D01D4
-_081D01D2:
- movs r0, 0x4
-_081D01D4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0164
-
- thumb_func_start sub_81D01DC
-sub_81D01DC: @ 81D01DC
- push {lr}
- cmp r0, 0
- beq _081D01E8
- cmp r0, 0x1
- beq _081D01FC
- b _081D0214
-_081D01E8:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl sub_81C7AC0
- bl sub_81C78A0
- movs r0, 0
- b _081D0216
-_081D01FC:
- bl IsPaletteFadeActive
- cmp r0, 0
- bne _081D020C
- bl sub_81C78C0
- cmp r0, 0
- beq _081D0210
-_081D020C:
- movs r0, 0x2
- b _081D0216
-_081D0210:
- bl sub_81C7FDC
-_081D0214:
- movs r0, 0x4
-_081D0216:
- pop {r1}
- bx r1
- thumb_func_end sub_81D01DC
-
- thumb_func_start sub_81D021C
-sub_81D021C: @ 81D021C
- push {lr}
- cmp r0, 0
- beq _081D0228
- cmp r0, 0x1
- beq _081D0238
- b _081D0244
-_081D0228:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl sub_81C7AC0
- movs r0, 0
- b _081D0246
-_081D0238:
- bl IsPaletteFadeActive
- cmp r0, 0
- beq _081D0244
- movs r0, 0x2
- b _081D0246
-_081D0244:
- movs r0, 0x4
-_081D0246:
- pop {r1}
- bx r1
- thumb_func_end sub_81D021C
-
- thumb_func_start sub_81D024C
-sub_81D024C: @ 81D024C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gUnknown_086237D4
- bl AddWindow
- strh r0, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- bl PutWindowTilemap
- bl sub_81CFB38
- adds r2, r0, 0
- ldrh r0, [r4, 0x8]
- movs r1, 0
- bl sub_81D02B0
- ldrb r0, [r4, 0x8]
- movs r1, 0x1
- bl CopyWindowToVram
- adds r0, r4, 0
- bl sub_81D0288
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D024C
-
- thumb_func_start sub_81D0288
-sub_81D0288: @ 81D0288
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_81C875C
- adds r4, r0, 0
- bl sub_81CFB38
- adds r2, r0, 0
- ldrh r0, [r5, 0x8]
- adds r4, 0x1
- adds r1, r4, 0
- bl sub_81D02B0
- ldrb r0, [r5, 0x8]
- movs r1, 0x2
- bl CopyWindowToVram
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81D0288
-
- thumb_func_start sub_81D02B0
-sub_81D02B0: @ 81D02B0
- push {r4,r5,lr}
- sub sp, 0x1C
- adds r4, r0, 0
- adds r5, r2, 0
- add r0, sp, 0xC
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- movs r1, 0xBA
- strb r1, [r0]
- adds r0, 0x1
- adds r1, r5, 0
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- movs r0, 0x1
- add r1, sp, 0xC
- movs r2, 0x38
- bl GetStringCenterAlignXOffset
- adds r3, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r1, 0x1
- add r2, sp, 0xC
- bl AddTextPrinterParameterized
- add sp, 0x1C
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81D02B0
-
- thumb_func_start sub_81D0304
-sub_81D0304: @ 81D0304
- push {r4,lr}
- sub sp, 0x18
- bl sub_81CFB28
- str r0, [sp]
- bl sub_81CFB38
- mov r1, sp
- movs r4, 0
- strh r0, [r1, 0x4]
- movs r0, 0x4
- strb r0, [r1, 0x8]
- bl sub_81CFB64
- mov r1, sp
- strh r0, [r1, 0x6]
- movs r0, 0xD
- strb r0, [r1, 0x9]
- movs r0, 0x11
- strb r0, [r1, 0xA]
- mov r0, sp
- movs r2, 0x1
- strb r2, [r0, 0xB]
- movs r0, 0x8
- strb r0, [r1, 0xC]
- movs r0, 0x2
- strb r0, [r1, 0xD]
- mov r0, sp
- strb r2, [r0, 0xE]
- ldr r0, =sub_81D035C
- str r0, [sp, 0x10]
- str r4, [sp, 0x14]
- ldr r0, =gUnknown_086237B4
- movs r2, 0
- bl sub_81C81D4
- add sp, 0x18
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D0304
-
- thumb_func_start sub_81D035C
-sub_81D035C: @ 81D035C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r1, 0
- adds r7, r0, 0
- ldrb r0, [r7]
- cmp r0, 0xE
- bne _081D03A4
- ldrb r1, [r7, 0x1]
- movs r0, 0x64
- adds r4, r1, 0
- muls r4, r0
- ldr r0, =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- bl GetMonGender
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r4, 0
- bl GetLevelFromMonExp
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r2, =gStringVar3
- adds r0, r4, 0
- movs r1, 0x2
- bl GetMonData
- b _081D03CC
- .pool
-_081D03A4:
- ldrb r0, [r7]
- ldrb r1, [r7, 0x1]
- bl GetBoxedMonPtr
- adds r4, r0, 0
- bl GetBoxMonGender
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r4, 0
- bl GetLevelFromBoxMonExp
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r2, =gStringVar3
- adds r0, r4, 0
- movs r1, 0x2
- bl GetBoxMonData
-_081D03CC:
- ldr r4, =gStringVar3
- adds r0, r4, 0
- bl StringGetEnd10
- adds r0, r6, 0
- movs r1, 0x1
- adds r2, r4, 0
- movs r3, 0x3C
- bl sub_81DB494
- adds r6, r0, 0
- cmp r5, 0
- beq _081D03F8
- cmp r5, 0xFE
- beq _081D0400
- ldr r1, =gUnknown_086237F4
- b _081D0402
- .pool
-_081D03F8:
- ldr r1, =gUnknown_086237DC
- b _081D0402
- .pool
-_081D0400:
- ldr r1, =gUnknown_086237E8
-_081D0402:
- ldr r4, =gStringVar1
- adds r0, r4, 0
- bl StringCopy
- movs r1, 0xBA
- strb r1, [r0]
- adds r0, 0x1
- movs r1, 0xF9
- strb r1, [r0]
- adds r0, 0x1
- movs r1, 0x5
- strb r1, [r0]
- adds r0, 0x1
- mov r1, r8
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r0, r6, 0
- movs r1, 0x1
- adds r2, r4, 0
- movs r3, 0x36
- bl sub_81DB494
- adds r6, r0, 0
- ldrh r1, [r7, 0x2]
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D035C
-
- thumb_func_start sub_81D0450
-sub_81D0450: @ 81D0450
- push {r4,lr}
- movs r0, 0xD
- movs r1, 0x9C
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081D0498
- movs r0, 0x12
- bl GetSubstructPtr
- str r0, [r4, 0x8]
- cmp r0, 0
- beq _081D0498
- adds r0, r4, 0
- bl sub_81D0814
- adds r1, r4, 0
- adds r1, 0x98
- ldr r0, =sub_81D04C4
- str r0, [r1]
- ldr r1, =gKeyRepeatContinueDelay
- movs r0, 0x3
- strh r0, [r1]
- ldr r1, =gKeyRepeatStartDelay
- movs r0, 0xA
- strh r0, [r1]
- movs r0, 0x1
- b _081D049A
- .pool
-_081D0498:
- movs r0, 0
-_081D049A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0450
-
- thumb_func_start sub_81D04A0
-sub_81D04A0: @ 81D04A0
- push {lr}
- movs r0, 0xD
- bl GetSubstructPtr
- adds r1, r0, 0
- adds r1, 0x98
- ldr r1, [r1]
- bl _call_via_r1
- pop {r1}
- bx r1
- thumb_func_end sub_81D04A0
-
- thumb_func_start sub_81D04B8
-sub_81D04B8: @ 81D04B8
- push {lr}
- movs r0, 0xD
- bl FreeSubstruct
- pop {r0}
- bx r0
- thumb_func_end sub_81D04B8
-
- thumb_func_start sub_81D04C4
-sub_81D04C4: @ 81D04C4
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, =gMain
- ldrh r1, [r2, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081D04E4
- ldr r3, [r4, 0x8]
- ldrh r0, [r3, 0x2]
- cmp r0, 0
- beq _081D04E4
- subs r0, 0x1
- b _081D04FC
- .pool
-_081D04E4:
- ldrh r1, [r2, 0x30]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081D050C
- ldr r3, [r4, 0x8]
- ldrh r1, [r3, 0x2]
- ldrh r0, [r3]
- subs r0, 0x1
- cmp r1, r0
- bge _081D050C
- adds r0, r1, 0x1
-_081D04FC:
- movs r1, 0
- strh r0, [r3, 0x2]
- strh r1, [r4, 0xC]
- adds r0, r4, 0
- bl sub_81D0814
- movs r0, 0x1
- b _081D053E
-_081D050C:
- ldrh r2, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _081D0528
- adds r1, r4, 0
- adds r1, 0x98
- ldr r0, =sub_81D0548
- str r0, [r1]
- movs r0, 0x2
- b _081D053E
- .pool
-_081D0528:
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- bne _081D0534
- movs r0, 0
- b _081D053E
-_081D0534:
- adds r1, r4, 0
- adds r1, 0x98
- ldr r0, =sub_81D05D4
- str r0, [r1]
- movs r0, 0x5
-_081D053E:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81D04C4
-
- thumb_func_start sub_81D0548
-sub_81D0548: @ 81D0548
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gMain
- ldrh r1, [r0, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081D0562
- adds r0, r4, 0
- bl sub_81D05DC
- cmp r0, 0
- bne _081D05A4
-_081D0562:
- ldr r0, =gMain
- ldrh r1, [r0, 0x30]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081D0578
- adds r0, r4, 0
- bl sub_81D061C
- cmp r0, 0
- bne _081D05A4
-_081D0578:
- ldr r0, =gMain
- ldrh r1, [r0, 0x30]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _081D058E
- adds r0, r4, 0
- bl sub_81D0664
- cmp r0, 0
- bne _081D05A4
-_081D058E:
- ldr r0, =gMain
- ldrh r1, [r0, 0x30]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081D05AC
- adds r0, r4, 0
- bl sub_81D0688
- cmp r0, 0
- beq _081D05AC
-_081D05A4:
- movs r0, 0x3
- b _081D05CA
- .pool
-_081D05AC:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _081D05C0
- movs r0, 0
- b _081D05CA
- .pool
-_081D05C0:
- adds r1, r4, 0
- adds r1, 0x98
- ldr r0, =sub_81D04C4
- str r0, [r1]
- movs r0, 0x4
-_081D05CA:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81D0548
-
- thumb_func_start sub_81D05D4
-sub_81D05D4: @ 81D05D4
- ldr r0, =0x000186ae
- bx lr
- .pool
- thumb_func_end sub_81D05D4
-
- thumb_func_start sub_81D05DC
-sub_81D05DC: @ 81D05DC
- push {r4,lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0xC]
- adds r2, r0, 0
- cmp r2, 0x18
- bhi _081D05F0
- cmp r2, 0x8
- bls _081D0612
- subs r0, 0x9
- b _081D060C
-_081D05F0:
- ldrh r3, [r1, 0x10]
- adds r2, r3, 0
- cmp r2, 0
- beq _081D0612
- ldrh r0, [r1, 0xC]
- subs r0, 0x1B
- ldrh r4, [r1, 0xE]
- adds r0, r4
- strh r0, [r1, 0xC]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r2
- bcc _081D060E
- subs r0, r3, 0x1
-_081D060C:
- strh r0, [r1, 0xC]
-_081D060E:
- movs r0, 0x1
- b _081D0614
-_081D0612:
- movs r0, 0
-_081D0614:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81D05DC
-
- thumb_func_start sub_81D061C
-sub_81D061C: @ 81D061C
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0xC]
- adds r1, r0, 0
- cmp r1, 0x18
- bhi _081D065C
- ldrh r3, [r2, 0xE]
- cmp r1, r3
- bcs _081D0640
- adds r0, 0x9
- strh r0, [r2, 0xC]
- ldrh r1, [r2, 0x10]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r1
- bcc _081D0658
- subs r0, r1, 0x1
- b _081D0656
-_081D0640:
- ldrh r0, [r2, 0x12]
- cmp r0, 0
- beq _081D065C
- ldrh r1, [r2, 0xC]
- ldrh r0, [r2, 0xE]
- subs r0, r1, r0
- ldrh r1, [r2, 0x12]
- cmp r0, r1
- blt _081D0654
- subs r0, r1, 0x1
-_081D0654:
- adds r0, 0x1B
-_081D0656:
- strh r0, [r2, 0xC]
-_081D0658:
- movs r0, 0x1
- b _081D065E
-_081D065C:
- movs r0, 0
-_081D065E:
- pop {r1}
- bx r1
- thumb_func_end sub_81D061C
-
- thumb_func_start sub_81D0664
-sub_81D0664: @ 81D0664
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r4, [r5, 0xC]
- adds r0, r4, 0
- movs r1, 0x9
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _081D067C
- movs r0, 0
- b _081D0682
-_081D067C:
- subs r0, r4, 0x1
- strh r0, [r5, 0xC]
- movs r0, 0x1
-_081D0682:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0664
-
- thumb_func_start sub_81D0688
-sub_81D0688: @ 81D0688
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r4, [r5, 0xC]
- adds r0, r4, 0
- movs r1, 0x9
- bl __umodsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x7
- bgt _081D06BC
- cmp r4, 0x1A
- bhi _081D06AC
- ldrh r0, [r5, 0x10]
- subs r0, 0x1
- cmp r4, r0
- bge _081D06BC
- b _081D06B4
-_081D06AC:
- ldrh r0, [r5, 0x12]
- subs r0, 0x1
- cmp r1, r0
- bge _081D06BC
-_081D06B4:
- adds r0, r4, 0x1
- strh r0, [r5, 0xC]
- movs r0, 0x1
- b _081D06BE
-_081D06BC:
- movs r0, 0
-_081D06BE:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0688
-
- thumb_func_start sub_81D06C4
-sub_81D06C4: @ 81D06C4
- push {lr}
- movs r0, 0xD
- bl GetSubstructPtr
- ldr r0, [r0, 0x8]
- ldrh r0, [r0, 0x2]
- pop {r1}
- bx r1
- thumb_func_end sub_81D06C4
-
- thumb_func_start sub_81D06D4
-sub_81D06D4: @ 81D06D4
- push {lr}
- movs r0, 0xD
- bl GetSubstructPtr
- ldr r0, [r0, 0x8]
- ldrh r0, [r0]
- pop {r1}
- bx r1
- thumb_func_end sub_81D06D4
-
- thumb_func_start sub_81D06E4
-sub_81D06E4: @ 81D06E4
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r7, r1, 0
- adds r6, r2, 0
- movs r0, 0xD
- bl GetSubstructPtr
- ldr r1, [r0, 0x8]
- ldrh r0, [r1, 0x2]
- lsls r0, 2
- adds r0, 0x4
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0xE
- bne _081D0730
- ldrb r1, [r1, 0x1]
- movs r0, 0x64
- adds r4, r1, 0
- muls r4, r0
- ldr r0, =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x2
- adds r2, r5, 0
- bl GetMonData
- adds r0, r4, 0
- bl GetLevelFromMonExp
- strb r0, [r7]
- adds r0, r4, 0
- bl GetMonGender
- strb r0, [r6]
- b _081D0752
- .pool
-_081D0730:
- ldrb r0, [r1]
- ldrb r1, [r1, 0x1]
- bl GetBoxedMonPtr
- adds r4, r0, 0
- bl GetBoxMonGender
- strb r0, [r6]
- adds r0, r4, 0
- bl GetLevelFromBoxMonExp
- strb r0, [r7]
- adds r0, r4, 0
- movs r1, 0x2
- adds r2, r5, 0
- bl GetBoxMonData
-_081D0752:
- adds r0, r5, 0
- bl StringGetEnd10
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81D06E4
-
- thumb_func_start sub_81D0760
-sub_81D0760: @ 81D0760
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- adds r7, r2, 0
- movs r0, 0xD
- bl GetSubstructPtr
- ldr r1, [r0, 0x8]
- ldrh r0, [r1, 0x2]
- lsls r0, 2
- adds r0, 0x4
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0xE
- bne _081D07AC
- ldrb r1, [r1, 0x1]
- movs r0, 0x64
- adds r4, r1, 0
- muls r4, r0
- ldr r0, =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- str r0, [r6]
- adds r0, r4, 0
- movs r1, 0x1
- bl GetMonData
- b _081D07D0
- .pool
-_081D07AC:
- ldrb r0, [r1]
- ldrb r1, [r1, 0x1]
- bl GetBoxedMonPtr
- adds r4, r0, 0
- movs r1, 0xB
- bl GetBoxMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0
- bl GetBoxMonData
- str r0, [r6]
- adds r0, r4, 0
- movs r1, 0x1
- bl GetBoxMonData
-_081D07D0:
- str r0, [r7]
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81D0760
-
- thumb_func_start sub_81D07D8
-sub_81D07D8: @ 81D07D8
- push {lr}
- movs r0, 0xD
- bl GetSubstructPtr
- ldr r1, [r0, 0x8]
- ldrh r0, [r1, 0x2]
- lsls r0, 2
- adds r0, 0x4
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0xE
- beq _081D07FA
- ldrb r1, [r1, 0x1]
- movs r2, 0x52
- bl GetBoxMonDataAt
- b _081D080A
-_081D07FA:
- ldrb r1, [r1, 0x1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x52
- bl GetMonData
-_081D080A:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81D07D8
-
- thumb_func_start sub_81D0814
-sub_81D0814: @ 81D0814
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrh r1, [r0, 0x2]
- lsls r1, 2
- adds r1, 0x4
- adds r1, r0, r1
- ldrb r0, [r1]
- cmp r0, 0xE
- bne _081D0848
- ldrb r1, [r1, 0x1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x53
- bl GetMonData
- b _081D0852
- .pool
-_081D0848:
- ldrb r0, [r1]
- ldrb r1, [r1, 0x1]
- movs r2, 0x53
- bl GetBoxMonDataAt
-_081D0852:
- mov r12, r0
- movs r0, 0
- strh r0, [r5, 0x10]
- strh r0, [r5, 0x12]
- movs r6, 0
- ldr r0, =gUnknown_086237F8
- mov r9, r0
- mov r10, r9
-_081D0862:
- lsls r2, r6, 2
- mov r3, r9
- adds r1, r2, r3
- movs r0, 0x1
- ldrb r3, [r1]
- lsls r0, r3
- subs r4, r0, 0x1
- mov r0, r12
- ands r4, r0
- ldrb r0, [r1, 0x3]
- adds r7, r2, 0
- cmp r0, 0
- bne _081D08AC
- movs r3, 0
- adds r6, 0x1
- mov r8, r6
- cmp r3, r4
- bge _081D08D6
- adds r6, r5, 0
- adds r6, 0x14
- mov r1, r10
- adds r0, r7, r1
- ldrb r2, [r0, 0x2]
-_081D0890:
- ldrh r0, [r5, 0x10]
- adds r1, r0, 0x1
- strh r1, [r5, 0x10]
- lsls r0, 16
- lsrs r0, 14
- adds r0, r6, r0
- adds r1, r2, r3
- str r1, [r0]
- adds r3, 0x1
- cmp r3, r4
- blt _081D0890
- b _081D08D6
- .pool
-_081D08AC:
- movs r3, 0
- adds r6, 0x1
- mov r8, r6
- cmp r3, r4
- bge _081D08D6
- adds r6, r5, 0
- adds r6, 0x78
- mov r1, r10
- adds r0, r7, r1
- ldrb r2, [r0, 0x2]
-_081D08C0:
- ldrh r0, [r5, 0x12]
- adds r1, r0, 0x1
- strh r1, [r5, 0x12]
- lsls r0, 16
- lsrs r0, 14
- adds r0, r6, r0
- adds r1, r2, r3
- str r1, [r0]
- adds r3, 0x1
- cmp r3, r4
- blt _081D08C0
-_081D08D6:
- mov r3, r9
- adds r0, r7, r3
- mov r1, r12
- ldrb r0, [r0]
- lsrs r1, r0
- mov r12, r1
- mov r6, r8
- cmp r6, 0x10
- bls _081D0862
- ldrh r0, [r5, 0x10]
- cmp r0, 0
- beq _081D0900
- subs r0, 0x1
- movs r1, 0x9
- bl __divsi3
- lsls r1, r0, 3
- adds r1, r0
- movs r0, 0
- strh r1, [r5, 0xE]
- b _081D0904
-_081D0900:
- strh r0, [r5, 0xE]
- movs r0, 0x1B
-_081D0904:
- strh r0, [r5, 0xC]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81D0814
-
- thumb_func_start sub_81D0914
-sub_81D0914: @ 81D0914
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0xD
- bl GetSubstructPtr
- ldrh r1, [r0, 0x10]
- str r1, [r4]
- adds r0, 0x14
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0914
-
- thumb_func_start sub_81D092C
-sub_81D092C: @ 81D092C
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0xD
- bl GetSubstructPtr
- ldrh r1, [r0, 0x12]
- str r1, [r4]
- adds r0, 0x78
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81D092C
-
- thumb_func_start sub_81D0944
-sub_81D0944: @ 81D0944
- push {lr}
- movs r0, 0xD
- bl GetSubstructPtr
- ldrh r0, [r0, 0xC]
- pop {r1}
- bx r1
- thumb_func_end sub_81D0944
-
- thumb_func_start sub_81D0954
-sub_81D0954: @ 81D0954
- push {lr}
- movs r0, 0xD
- bl GetSubstructPtr
- adds r1, r0, 0
- ldrh r0, [r1, 0xC]
- cmp r0, 0x18
- ble _081D096C
- subs r0, 0x1B
- lsls r0, 2
- adds r1, 0x78
- b _081D0970
-_081D096C:
- lsls r0, 2
- adds r1, 0x14
-_081D0970:
- adds r1, r0
- ldr r0, [r1]
- pop {r1}
- bx r1
- thumb_func_end sub_81D0954
-
- thumb_func_start sub_81D0978
-sub_81D0978: @ 81D0978
- push {r4,lr}
- ldr r1, =0x0000101c
- movs r0, 0xE
- bl AllocSubstruct
- adds r4, r0, 0
- cmp r4, 0
- beq _081D09A8
- ldr r0, =sub_81D0A6C
- movs r1, 0x1
- bl sub_81C7078
- str r0, [r4, 0x4]
- ldr r0, =sub_81D0A58
- str r0, [r4]
- movs r0, 0x1
- b _081D09AA
- .pool
-_081D09A8:
- movs r0, 0
-_081D09AA:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0978
-
- thumb_func_start sub_81D09B0
-sub_81D09B0: @ 81D09B0
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0xE
- bl GetSubstructPtr
- adds r5, r0, 0
- ldr r0, =gUnknown_08624BA0
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- movs r1, 0x1
- bl sub_81C7078
- str r0, [r5, 0x4]
- ldr r0, =sub_81D0A58
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D09B0
-
- thumb_func_start sub_81D09E0
-sub_81D09E0: @ 81D09E0
- push {lr}
- movs r0, 0xE
- bl GetSubstructPtr
- ldr r0, [r0]
- bl _call_via_r0
- pop {r1}
- bx r1
- thumb_func_end sub_81D09E0
-
- thumb_func_start sub_81D09F4
-sub_81D09F4: @ 81D09F4
- push {r4,lr}
- movs r0, 0xE
- bl GetSubstructPtr
- adds r4, r0, 0
- ldrb r0, [r4, 0xA]
- bl RemoveWindow
- ldrb r0, [r4, 0x8]
- bl RemoveWindow
- ldrb r0, [r4, 0xC]
- bl RemoveWindow
- ldrb r0, [r4, 0xE]
- bl RemoveWindow
- adds r0, r4, 0
- bl sub_81D1178
- movs r0, 0x9
- bl FreeSpriteTilesByTag
- movs r0, 0xF
- bl FreeSpritePaletteByTag
- movs r0, 0x10
- bl FreeSpritePaletteByTag
- movs r0, 0x11
- bl FreeSpritePaletteByTag
- movs r0, 0x12
- bl FreeSpritePaletteByTag
- movs r0, 0x13
- bl FreeSpritePaletteByTag
- ldr r0, [r4, 0x14]
- bl FreeSpriteOamMatrix
- ldr r0, [r4, 0x14]
- bl DestroySprite
- movs r0, 0xE
- bl FreeSubstruct
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81D09F4
-
- thumb_func_start sub_81D0A58
-sub_81D0A58: @ 81D0A58
- push {lr}
- movs r0, 0xE
- bl GetSubstructPtr
- ldr r0, [r0, 0x4]
- bl sub_81C70D8
- pop {r1}
- bx r1
- thumb_func_end sub_81D0A58
-
- thumb_func_start sub_81D0A6C
-sub_81D0A6C: @ 81D0A6C
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- movs r0, 0xE
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x9
- bls _081D0A80
- b _081D0C48
-_081D0A80:
- lsls r0, r4, 2
- ldr r1, =_081D0A90
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081D0A90:
- .4byte _081D0AB8
- .4byte _081D0B04
- .4byte _081D0B74
- .4byte _081D0B88
- .4byte _081D0B9C
- .4byte _081D0BB0
- .4byte _081D0BC4
- .4byte _081D0BD8
- .4byte _081D0BE8
- .4byte _081D0C3C
-_081D0AB8:
- ldr r0, =gUnknown_08624B98
- movs r1, 0x2
- bl InitBgTemplates
- ldr r1, =gUnknown_08DDE030
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- adds r1, r5, 0
- adds r1, 0x1C
- movs r0, 0x2
- bl SetBgTilemapBuffer
- ldr r1, =gUnknown_08DDE12C
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- ldr r0, =gUnknown_08DDE010
- movs r1, 0x10
- movs r2, 0x20
- bl CopyPaletteIntoBufferUnfaded
- b _081D0BBA
- .pool
-_081D0B04:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _081D0B12
- b _081D0C44
-_081D0B12:
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_8199DF0
- ldr r1, =gUnknown_086240B8
- str r4, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0x1
- bl decompress_and_copy_tile_data_to_vram
- ldr r0, =0x0000081c
- adds r1, r5, r0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- ldr r0, =gUnknown_08623FF8
- movs r1, 0x20
- movs r2, 0xA0
- bl CopyPaletteIntoBufferUnfaded
- ldr r0, =gUnknown_08624098
- movs r1, 0xA0
- movs r2, 0x20
- bl CopyPaletteIntoBufferUnfaded
- movs r0, 0x1
- b _081D0BBC
- .pool
-_081D0B74:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _081D0C44
- adds r0, r5, 0
- bl sub_81D0E60
- movs r0, 0
- b _081D0C4A
-_081D0B88:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _081D0C44
- adds r0, r5, 0
- bl sub_81D0FCC
- movs r0, 0
- b _081D0C4A
-_081D0B9C:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _081D0C44
- adds r0, r5, 0
- bl sub_81D10A4
- movs r0, 0
- b _081D0C4A
-_081D0BB0:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081D0C44
-_081D0BBA:
- movs r0, 0x2
-_081D0BBC:
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- b _081D0C4A
-_081D0BC4:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081D0C44
- adds r0, r5, 0
- bl sub_81D1148
- movs r0, 0x1
- b _081D0C4A
-_081D0BD8:
- adds r0, r5, 0
- bl sub_81D12D8
- movs r0, 0xA
- bl sub_81C7BA4
- movs r0, 0
- b _081D0C4A
-_081D0BE8:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081D0C44
- adds r0, r5, 0
- bl sub_81D13FC
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl HideBg
- movs r0, 0x1
- bl sub_81C7AC0
- movs r0, 0
- b _081D0C4A
-_081D0C3C:
- bl IsPaletteFadeActive
- cmp r0, 0
- beq _081D0C48
-_081D0C44:
- movs r0, 0x2
- b _081D0C4A
-_081D0C48:
- movs r0, 0x4
-_081D0C4A:
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0A6C
-
- thumb_func_start sub_81D0C54
-sub_81D0C54: @ 81D0C54
- push {lr}
- cmp r0, 0
- beq _081D0C60
- cmp r0, 0x1
- beq _081D0C70
- b _081D0C7C
-_081D0C60:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl sub_81C7AC0
- movs r0, 0
- b _081D0C7E
-_081D0C70:
- bl IsPaletteFadeActive
- cmp r0, 0
- beq _081D0C7C
- movs r0, 0x2
- b _081D0C7E
-_081D0C7C:
- movs r0, 0x4
-_081D0C7E:
- pop {r1}
- bx r1
- thumb_func_end sub_81D0C54
-
- thumb_func_start sub_81D0C84
-sub_81D0C84: @ 81D0C84
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r0, 0xE
- bl GetSubstructPtr
- adds r4, r0, 0
- cmp r5, 0x6
- bhi _081D0D24
- lsls r0, r5, 2
- ldr r1, =_081D0CA4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081D0CA4:
- .4byte _081D0CC0
- .4byte _081D0CD0
- .4byte _081D0CE4
- .4byte _081D0CEE
- .4byte _081D0CF8
- .4byte _081D0D02
- .4byte _081D0D16
-_081D0CC0:
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_81D11D8
- movs r0, 0
- b _081D0D26
-_081D0CD0:
- adds r0, r4, 0
- bl sub_81D1234
- cmp r0, 0
- bne _081D0D20
- adds r0, r4, 0
- bl sub_81D0FF0
- movs r0, 0x1
- b _081D0D26
-_081D0CE4:
- adds r0, r4, 0
- bl sub_81D12D8
- movs r0, 0x1
- b _081D0D26
-_081D0CEE:
- adds r0, r4, 0
- bl sub_81D10D0
- movs r0, 0x1
- b _081D0D26
-_081D0CF8:
- adds r0, r4, 0
- bl sub_81D0E84
- movs r0, 0x1
- b _081D0D26
-_081D0D02:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _081D0D20
- adds r0, r4, 0
- bl sub_81D11FC
- movs r0, 0
- b _081D0D26
-_081D0D16:
- adds r0, r4, 0
- bl sub_81D1234
- cmp r0, 0
- beq _081D0D24
-_081D0D20:
- movs r0, 0x2
- b _081D0D26
-_081D0D24:
- movs r0, 0x4
-_081D0D26:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0C84
-
- thumb_func_start sub_81D0D2C
-sub_81D0D2C: @ 81D0D2C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0xE
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081D0D5C
- cmp r4, 0x1
- bgt _081D0D46
- cmp r4, 0
- beq _081D0D4C
- b _081D0D84
-_081D0D46:
- cmp r4, 0x2
- beq _081D0D76
- b _081D0D84
-_081D0D4C:
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_81D1448
- movs r0, 0
- b _081D0D86
-_081D0D5C:
- adds r0, r5, 0
- bl sub_81D1524
- cmp r0, 0
- bne _081D0D80
- adds r0, r5, 0
- bl sub_81D0EFC
- movs r0, 0xB
- bl sub_81C7BA4
- movs r0, 0
- b _081D0D86
-_081D0D76:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081D0D84
-_081D0D80:
- movs r0, 0x2
- b _081D0D86
-_081D0D84:
- movs r0, 0x4
-_081D0D86:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0D2C
-
- thumb_func_start sub_81D0D8C
-sub_81D0D8C: @ 81D0D8C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0xE
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081D0DC0
- cmp r4, 0x1
- bgt _081D0DA6
- cmp r4, 0
- beq _081D0DB0
- b _081D0DF6
-_081D0DA6:
- cmp r4, 0x2
- beq _081D0DD4
- cmp r4, 0x3
- beq _081D0DE8
- b _081D0DF6
-_081D0DB0:
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_81D1500
- movs r0, 0
- b _081D0DF8
-_081D0DC0:
- adds r0, r5, 0
- bl sub_81D1524
- cmp r0, 0
- bne _081D0DF2
- adds r0, r5, 0
- bl sub_81D1448
- movs r0, 0
- b _081D0DF8
-_081D0DD4:
- adds r0, r5, 0
- bl sub_81D1524
- cmp r0, 0
- bne _081D0DF2
- adds r0, r5, 0
- bl sub_81D0EFC
- movs r0, 0
- b _081D0DF8
-_081D0DE8:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081D0DF6
-_081D0DF2:
- movs r0, 0x2
- b _081D0DF8
-_081D0DF6:
- movs r0, 0x4
-_081D0DF8:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0D8C
-
- thumb_func_start sub_81D0E00
-sub_81D0E00: @ 81D0E00
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0xE
- bl GetSubstructPtr
- adds r5, r0, 0
- cmp r4, 0x1
- beq _081D0E30
- cmp r4, 0x1
- bgt _081D0E1A
- cmp r4, 0
- beq _081D0E20
- b _081D0E58
-_081D0E1A:
- cmp r4, 0x2
- beq _081D0E4A
- b _081D0E58
-_081D0E20:
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_81D1500
- movs r0, 0
- b _081D0E5A
-_081D0E30:
- adds r0, r5, 0
- bl sub_81D1524
- cmp r0, 0
- bne _081D0E54
- adds r0, r5, 0
- bl sub_81D0E84
- movs r0, 0xA
- bl sub_81C7BA4
- movs r0, 0
- b _081D0E5A
-_081D0E4A:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _081D0E58
-_081D0E54:
- movs r0, 0x2
- b _081D0E5A
-_081D0E58:
- movs r0, 0x4
-_081D0E5A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81D0E00
-
- thumb_func_start sub_81D0E60
-sub_81D0E60: @ 81D0E60
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gUnknown_08624BB8
- bl AddWindow
- strh r0, [r4, 0xA]
- lsls r0, 24
- lsrs r0, 24
- bl PutWindowTilemap
- adds r0, r4, 0
- bl sub_81D0E84
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D0E60
-
- thumb_func_start sub_81D0E84
-sub_81D0E84: @ 81D0E84
- push {r4,r5,lr}
- sub sp, 0x10
- adds r5, r0, 0
- ldr r1, =gUnknown_08624BC0
- add r0, sp, 0xC
- movs r2, 0x3
- bl memcpy
- ldr r4, =gStringVar1
- bl sub_81D07D8
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- bl DynamicPlaceholderTextUtil_Reset
- movs r0, 0
- adds r1, r4, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- ldr r4, =gStringVar4
- ldr r1, =gText_RibbonsF700
- adds r0, r4, 0
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
- ldrb r0, [r5, 0xA]
- movs r1, 0x44
- bl FillWindowPixelBuffer
- ldrb r0, [r5, 0xA]
- add r1, sp, 0xC
- str r1, [sp]
- movs r1, 0x1
- negs r1, r1
- str r1, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r1, 0x1
- movs r2, 0
- movs r3, 0x1
- bl AddTextPrinterParameterized3
- ldrb r0, [r5, 0xA]
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D0E84
-
- thumb_func_start sub_81D0EFC
-sub_81D0EFC: @ 81D0EFC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- adds r7, r0, 0
- bl sub_81D0954
- adds r5, r0, 0
- ldr r1, =gUnknown_08624BC0
- add r0, sp, 0xC
- movs r2, 0x3
- bl memcpy
- ldrb r0, [r7, 0xA]
- movs r1, 0x44
- bl FillWindowPixelBuffer
- cmp r5, 0x18
- bhi _081D0F60
- lsls r1, r5, 3
- ldr r0, =gRibbonDescriptionPointers
- adds r6, r1, r0
- movs r5, 0x80
- lsls r5, 17
- movs r4, 0x1
-_081D0F2E:
- ldrb r0, [r7, 0xA]
- lsrs r3, r5, 24
- add r1, sp, 0xC
- str r1, [sp]
- movs r1, 0x1
- negs r1, r1
- str r1, [sp, 0x4]
- ldm r6!, {r1}
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r2, 0
- bl AddTextPrinterParameterized3
- movs r0, 0x80
- lsls r0, 21
- adds r5, r0
- subs r4, 0x1
- cmp r4, 0
- bge _081D0F2E
- b _081D0FAA
- .pool
-_081D0F60:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- adds r0, r5
- ldr r1, =0x0000318f
- adds r0, r1
- ldrb r5, [r0]
- cmp r5, 0
- beq _081D0FB2
- subs r5, 0x1
- movs r4, 0
- ldr r0, =gGiftRibbonDescriptionPointers
- mov r8, r0
- movs r6, 0x80
- lsls r6, 17
-_081D0F7C:
- ldrb r0, [r7, 0xA]
- lsrs r3, r6, 24
- add r1, sp, 0xC
- str r1, [sp]
- movs r1, 0x1
- negs r1, r1
- str r1, [sp, 0x4]
- lsls r1, r4, 2
- lsls r2, r5, 3
- adds r1, r2
- add r1, r8
- ldr r1, [r1]
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r2, 0
- bl AddTextPrinterParameterized3
- movs r0, 0x80
- lsls r0, 21
- adds r6, r0
- adds r4, 0x1
- cmp r4, 0x1
- ble _081D0F7C
-_081D0FAA:
- ldrb r0, [r7, 0xA]
- movs r1, 0x2
- bl CopyWindowToVram
-_081D0FB2:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D0EFC
-
- thumb_func_start sub_81D0FCC
-sub_81D0FCC: @ 81D0FCC
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gUnknown_08624BC4
- bl AddWindow
- strh r0, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- bl PutWindowTilemap
- adds r0, r4, 0
- bl sub_81D0FF0
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D0FCC
-
- thumb_func_start sub_81D0FF0
-sub_81D0FF0: @ 81D0FF0
- push {r4-r7,lr}
- sub sp, 0x10
- ldrh r7, [r0, 0x8]
- ldrb r5, [r0, 0x8]
- adds r0, r5, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r4, =gStringVar3
- mov r6, sp
- adds r6, 0xD
- adds r0, r4, 0
- add r1, sp, 0xC
- adds r2, r6, 0
- bl sub_81D06E4
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r5, 0
- movs r1, 0x1
- adds r2, r4, 0
- movs r3, 0
- bl AddTextPrinterParameterized
- ldrb r0, [r6]
- cmp r0, 0
- beq _081D1040
- cmp r0, 0xFE
- beq _081D1048
- ldr r1, =gUnknown_08624BE4
- b _081D104A
- .pool
-_081D1040:
- ldr r1, =gUnknown_08624BCC
- b _081D104A
- .pool
-_081D1048:
- ldr r1, =gUnknown_08624BD8
-_081D104A:
- ldr r5, =gStringVar1
- adds r0, r5, 0
- bl StringCopy
- movs r1, 0xBA
- strb r1, [r0]
- adds r0, 0x1
- movs r1, 0xF9
- strb r1, [r0]
- adds r0, 0x1
- movs r1, 0x5
- strb r1, [r0]
- adds r0, 0x1
- add r1, sp, 0xC
- ldrb r1, [r1]
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- lsls r4, r7, 24
- lsrs r4, 24
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r1, 0x1
- adds r2, r5, 0
- movs r3, 0x3C
- bl AddTextPrinterParameterized
- adds r0, r4, 0
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D0FF0
-
- thumb_func_start sub_81D10A4
-sub_81D10A4: @ 81D10A4
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gUnknown_08624BE8
- bl AddWindow
- strh r0, [r4, 0xC]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldrb r0, [r4, 0xC]
- bl PutWindowTilemap
- adds r0, r4, 0
- bl sub_81D10D0
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D10A4
-
- thumb_func_start sub_81D10D0
-sub_81D10D0: @ 81D10D0
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0xC
- mov r8, r0
- bl sub_81D06C4
- adds r4, r0, 0
- adds r4, 0x1
- bl sub_81D06D4
- adds r6, r0, 0
- ldr r5, =gStringVar1
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- movs r1, 0xBA
- strb r1, [r0]
- adds r0, 0x1
- adds r1, r6, 0
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- movs r0, 0x1
- adds r1, r5, 0
- movs r2, 0x38
- bl GetStringCenterAlignXOffset
- adds r3, r0, 0
- mov r1, r8
- ldrb r0, [r1, 0xC]
- lsls r3, 24
- lsrs r3, 24
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x1
- adds r2, r5, 0
- bl AddTextPrinterParameterized
- mov r1, r8
- ldrb r0, [r1, 0xC]
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D10D0
-
- thumb_func_start sub_81D1148
-sub_81D1148: @ 81D1148
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- add r1, sp, 0x4
- add r2, sp, 0x8
- mov r0, sp
- bl sub_81D0760
- bl ResetAllPicSprites
- movs r0, 0x28
- movs r1, 0x68
- bl sub_81D1184
- strh r0, [r4, 0x10]
- movs r0, 0xF
- movs r1, 0
- bl sub_81C7990
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81D1148
-
- thumb_func_start sub_81D1178
-sub_81D1178: @ 81D1178
- push {lr}
- ldrh r0, [r0, 0x10]
- bl FreeAndDestroyMonPicSprite
- pop {r0}
- bx r0
- thumb_func_end sub_81D1178
-
- thumb_func_start sub_81D1184
-sub_81D1184: @ 81D1184
- push {lr}
- sub sp, 0x1C
- add r1, sp, 0x14
- add r2, sp, 0x18
- add r0, sp, 0x10
- bl sub_81D0760
- add r0, sp, 0x10
- ldrh r0, [r0]
- ldr r1, [sp, 0x18]
- ldr r2, [sp, 0x14]
- movs r3, 0x28
- str r3, [sp]
- movs r3, 0x68
- str r3, [sp, 0x4]
- movs r3, 0xF
- str r3, [sp, 0x8]
- ldr r3, =0x0000ffff
- str r3, [sp, 0xC]
- movs r3, 0x1
- bl CreateMonPicSprite_HandleDeoxys
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- ldrb r3, [r2, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r3
- strb r1, [r2, 0x5]
- add sp, 0x1C
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81D1184
-
- thumb_func_start sub_81D11D8
-sub_81D11D8: @ 81D11D8
- push {lr}
- ldrh r1, [r0, 0x10]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r2, 0x20
- negs r2, r2
- movs r1, 0x28
- movs r3, 0x6
- bl sub_81D1258
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D11D8
-
- thumb_func_start sub_81D11FC
-sub_81D11FC: @ 81D11FC
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x10]
- bl FreeAndDestroyMonPicSprite
- movs r5, 0x20
- negs r5, r5
- adds r0, r5, 0
- movs r1, 0x68
- bl sub_81D1184
- strh r0, [r4, 0x10]
- ldrh r1, [r4, 0x10]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- adds r1, r5, 0
- movs r2, 0x28
- movs r3, 0x6
- bl sub_81D1258
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D11FC
-
- thumb_func_start sub_81D1234
-sub_81D1234: @ 81D1234
- ldr r2, =gSprites
- ldrh r1, [r0, 0x10]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, =SpriteCallbackDummy
- eors r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- bx lr
- .pool
- thumb_func_end sub_81D1234
-
- thumb_func_start sub_81D1258
-sub_81D1258: @ 81D1258
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r6, r2, 0
- adds r5, r3, 0
- subs r0, r6, r1
- strh r1, [r4, 0x20]
- lsls r1, 4
- strh r1, [r4, 0x2E]
- lsls r0, 4
- adds r1, r5, 0
- bl __udivsi3
- strh r0, [r4, 0x30]
- strh r5, [r4, 0x32]
- strh r6, [r4, 0x34]
- ldr r0, =sub_81D1284
- str r0, [r4, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D1258
-
- thumb_func_start sub_81D1284
-sub_81D1284: @ 81D1284
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x32]
- movs r3, 0x32
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _081D12C8
- subs r0, r1, 0x1
- strh r0, [r2, 0x32]
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x2E]
- adds r0, r1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r2, 0x20]
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- bgt _081D12BA
- adds r0, r2, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- b _081D12D0
-_081D12BA:
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- b _081D12D0
-_081D12C8:
- ldrh r0, [r2, 0x34]
- strh r0, [r2, 0x20]
- ldr r0, =SpriteCallbackDummy
- str r0, [r2, 0x1C]
-_081D12D0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D1284
-
- thumb_func_start sub_81D12D8
-sub_81D12D8: @ 81D12D8
- push {r4-r6,lr}
- bl sub_81D1350
- ldr r5, =gUnknown_030012C0
- adds r0, r5, 0
- bl sub_81D0914
- adds r6, r0, 0
- ldr r2, =gUnknown_030012C4
- movs r1, 0
- str r1, [r2]
- ldr r0, [r5]
- cmp r1, r0
- bcs _081D130A
- adds r4, r2, 0
-_081D12F6:
- ldr r0, [r4]
- ldm r6!, {r1}
- bl sub_81D1370
- ldr r1, [r4]
- adds r1, 0x1
- str r1, [r4]
- ldr r0, [r5]
- cmp r1, r0
- bcc _081D12F6
-_081D130A:
- ldr r4, =gUnknown_030012C0
- adds r0, r4, 0
- bl sub_81D092C
- adds r6, r0, 0
- ldr r2, =gUnknown_030012C4
- movs r1, 0
- str r1, [r2]
- ldr r0, [r4]
- cmp r1, r0
- bcs _081D133A
- adds r4, r2, 0
-_081D1322:
- ldr r0, [r4]
- adds r0, 0x1B
- ldm r6!, {r1}
- bl sub_81D1370
- ldr r1, [r4]
- adds r1, 0x1
- str r1, [r4]
- ldr r0, =gUnknown_030012C0
- ldr r0, [r0]
- cmp r1, r0
- bcc _081D1322
-_081D133A:
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D12D8
-
- thumb_func_start sub_81D1350
-sub_81D1350: @ 81D1350
- push {lr}
- sub sp, 0x8
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_81D1350
-
- thumb_func_start sub_81D1370
-sub_81D1370: @ 81D1370
- push {r4-r6,lr}
- sub sp, 0x10
- adds r4, r0, 0
- adds r6, r1, 0
- movs r1, 0x9
- bl __umodsi3
- adds r5, r0, 0
- lsls r5, 1
- adds r5, 0xB
- adds r0, r4, 0
- movs r1, 0x9
- bl __udivsi3
- adds r4, r0, 0
- lsls r4, 1
- adds r4, 0x4
- add r0, sp, 0x8
- adds r1, r6, 0
- bl sub_81D13BC
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x1
- add r1, sp, 0x8
- adds r2, r5, 0
- adds r3, r4, 0
- bl CopyToBgTilemapBufferRect
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81D1370
-
- thumb_func_start sub_81D13BC
-sub_81D13BC: @ 81D13BC
- push {r4,r5,lr}
- ldr r2, =gUnknown_08624BF8
- lsls r1, 2
- adds r1, r2
- ldrh r3, [r1, 0x2]
- adds r3, 0x2
- lsls r3, 16
- ldrh r1, [r1]
- lsls r1, 1
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- lsrs r3, 4
- adds r2, r1, 0
- orrs r2, r3
- strh r2, [r0]
- movs r5, 0x80
- lsls r5, 3
- adds r4, r5, 0
- orrs r2, r4
- strh r2, [r0, 0x2]
- adds r1, 0x1
- orrs r1, r3
- strh r1, [r0, 0x4]
- orrs r1, r4
- strh r1, [r0, 0x6]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D13BC
-
- thumb_func_start sub_81D13FC
-sub_81D13FC: @ 81D13FC
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gUnknown_08624C78
- bl LoadCompressedSpriteSheet
- ldr r0, =gUnknown_08624C80
- bl sub_81C795C
- ldr r0, =gUnknown_08624D04
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, =gSprites
- adds r1, r0
- str r1, [r4, 0x14]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D13FC
-
- thumb_func_start sub_81D1448
-sub_81D1448: @ 81D1448
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r6, r0, 0
- bl sub_81D0944
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- movs r1, 0x9
- bl __modsi3
- adds r5, r0, 0
- lsls r5, 4
- adds r5, 0x60
- adds r0, r4, 0
- movs r1, 0x9
- bl __divsi3
- lsls r0, 4
- adds r0, 0x28
- ldr r1, [r6, 0x14]
- movs r2, 0
- mov r8, r2
- strh r5, [r1, 0x20]
- ldr r1, [r6, 0x14]
- strh r0, [r1, 0x22]
- bl sub_81D0954
- adds r4, r0, 0
- movs r0, 0x9
- bl GetSpriteTileStartByTag
- ldr r3, [r6, 0x14]
- ldr r1, =gUnknown_08624BF8
- lsls r4, 2
- adds r4, r1
- ldrh r1, [r4]
- lsls r1, 4
- adds r0, r1
- ldr r2, =0x000003ff
- adds r1, r2, 0
- ands r0, r1
- ldrh r2, [r3, 0x4]
- ldr r1, =0xfffffc00
- ands r1, r2
- orrs r1, r0
- strh r1, [r3, 0x4]
- ldrh r0, [r4, 0x2]
- adds r0, 0xF
- lsls r0, 16
- lsrs r0, 16
- bl IndexOfSpritePaletteTag
- ldr r3, [r6, 0x14]
- lsls r0, 4
- ldrb r2, [r3, 0x5]
- movs r1, 0xF
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x5]
- ldr r0, [r6, 0x14]
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r1, [r6, 0x14]
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldr r0, [r6, 0x14]
- mov r1, r8
- strh r1, [r0, 0x2E]
- ldr r1, [r6, 0x14]
- ldr r0, =sub_81D1538
- str r0, [r1, 0x1C]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D1448
-
- thumb_func_start sub_81D1500
-sub_81D1500: @ 81D1500
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, [r4, 0x14]
- movs r0, 0x1
- strh r0, [r1, 0x2E]
- ldr r0, [r4, 0x14]
- movs r1, 0x2
- bl StartSpriteAffineAnim
- ldr r1, [r4, 0x14]
- ldr r0, =sub_81D1538
- str r0, [r1, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D1500
-
- thumb_func_start sub_81D1524
-sub_81D1524: @ 81D1524
- ldr r0, [r0, 0x14]
- ldr r1, [r0, 0x1C]
- ldr r0, =SpriteCallbackDummy
- eors r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- bx lr
- .pool
- thumb_func_end sub_81D1524
-
- thumb_func_start sub_81D1538
-sub_81D1538: @ 81D1538
- push {lr}
- adds r3, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _081D156A
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- movs r0, 0x1
- ldrh r1, [r3, 0x2E]
- ands r1, r0
- lsls r1, 2
- mov r0, r12
- ldrb r2, [r0]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- ldr r0, =SpriteCallbackDummy
- str r0, [r3, 0x1C]
-_081D156A:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D1538
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokenav_unk_10.s b/asm/pokenav_unk_10.s
new file mode 100644
index 000000000..b24f0b406
--- /dev/null
+++ b/asm/pokenav_unk_10.s
@@ -0,0 +1,2185 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ thumb_func_start sub_81D0450
+sub_81D0450: @ 81D0450
+ push {r4,lr}
+ movs r0, 0xD
+ movs r1, 0x9C
+ bl AllocSubstruct
+ adds r4, r0, 0
+ cmp r4, 0
+ beq _081D0498
+ movs r0, 0x12
+ bl GetSubstructPtr
+ str r0, [r4, 0x8]
+ cmp r0, 0
+ beq _081D0498
+ adds r0, r4, 0
+ bl sub_81D0814
+ adds r1, r4, 0
+ adds r1, 0x98
+ ldr r0, =sub_81D04C4
+ str r0, [r1]
+ ldr r1, =gKeyRepeatContinueDelay
+ movs r0, 0x3
+ strh r0, [r1]
+ ldr r1, =gKeyRepeatStartDelay
+ movs r0, 0xA
+ strh r0, [r1]
+ movs r0, 0x1
+ b _081D049A
+ .pool
+_081D0498:
+ movs r0, 0
+_081D049A:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D0450
+
+ thumb_func_start sub_81D04A0
+sub_81D04A0: @ 81D04A0
+ push {lr}
+ movs r0, 0xD
+ bl GetSubstructPtr
+ adds r1, r0, 0
+ adds r1, 0x98
+ ldr r1, [r1]
+ bl _call_via_r1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D04A0
+
+ thumb_func_start sub_81D04B8
+sub_81D04B8: @ 81D04B8
+ push {lr}
+ movs r0, 0xD
+ bl FreePokenavSubstruct
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81D04B8
+
+ thumb_func_start sub_81D04C4
+sub_81D04C4: @ 81D04C4
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r2, =gMain
+ ldrh r1, [r2, 0x30]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _081D04E4
+ ldr r3, [r4, 0x8]
+ ldrh r0, [r3, 0x2]
+ cmp r0, 0
+ beq _081D04E4
+ subs r0, 0x1
+ b _081D04FC
+ .pool
+_081D04E4:
+ ldrh r1, [r2, 0x30]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _081D050C
+ ldr r3, [r4, 0x8]
+ ldrh r1, [r3, 0x2]
+ ldrh r0, [r3]
+ subs r0, 0x1
+ cmp r1, r0
+ bge _081D050C
+ adds r0, r1, 0x1
+_081D04FC:
+ movs r1, 0
+ strh r0, [r3, 0x2]
+ strh r1, [r4, 0xC]
+ adds r0, r4, 0
+ bl sub_81D0814
+ movs r0, 0x1
+ b _081D053E
+_081D050C:
+ ldrh r2, [r2, 0x2E]
+ movs r0, 0x1
+ ands r0, r2
+ cmp r0, 0
+ beq _081D0528
+ adds r1, r4, 0
+ adds r1, 0x98
+ ldr r0, =sub_81D0548
+ str r0, [r1]
+ movs r0, 0x2
+ b _081D053E
+ .pool
+_081D0528:
+ movs r0, 0x2
+ ands r0, r2
+ cmp r0, 0
+ bne _081D0534
+ movs r0, 0
+ b _081D053E
+_081D0534:
+ adds r1, r4, 0
+ adds r1, 0x98
+ ldr r0, =sub_81D05D4
+ str r0, [r1]
+ movs r0, 0x5
+_081D053E:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81D04C4
+
+ thumb_func_start sub_81D0548
+sub_81D0548: @ 81D0548
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, =gMain
+ ldrh r1, [r0, 0x30]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _081D0562
+ adds r0, r4, 0
+ bl sub_81D05DC
+ cmp r0, 0
+ bne _081D05A4
+_081D0562:
+ ldr r0, =gMain
+ ldrh r1, [r0, 0x30]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _081D0578
+ adds r0, r4, 0
+ bl sub_81D061C
+ cmp r0, 0
+ bne _081D05A4
+_081D0578:
+ ldr r0, =gMain
+ ldrh r1, [r0, 0x30]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _081D058E
+ adds r0, r4, 0
+ bl sub_81D0664
+ cmp r0, 0
+ bne _081D05A4
+_081D058E:
+ ldr r0, =gMain
+ ldrh r1, [r0, 0x30]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _081D05AC
+ adds r0, r4, 0
+ bl sub_81D0688
+ cmp r0, 0
+ beq _081D05AC
+_081D05A4:
+ movs r0, 0x3
+ b _081D05CA
+ .pool
+_081D05AC:
+ ldr r0, =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _081D05C0
+ movs r0, 0
+ b _081D05CA
+ .pool
+_081D05C0:
+ adds r1, r4, 0
+ adds r1, 0x98
+ ldr r0, =sub_81D04C4
+ str r0, [r1]
+ movs r0, 0x4
+_081D05CA:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81D0548
+
+ thumb_func_start sub_81D05D4
+sub_81D05D4: @ 81D05D4
+ ldr r0, =0x000186ae
+ bx lr
+ .pool
+ thumb_func_end sub_81D05D4
+
+ thumb_func_start sub_81D05DC
+sub_81D05DC: @ 81D05DC
+ push {r4,lr}
+ adds r1, r0, 0
+ ldrh r0, [r1, 0xC]
+ adds r2, r0, 0
+ cmp r2, 0x18
+ bhi _081D05F0
+ cmp r2, 0x8
+ bls _081D0612
+ subs r0, 0x9
+ b _081D060C
+_081D05F0:
+ ldrh r3, [r1, 0x10]
+ adds r2, r3, 0
+ cmp r2, 0
+ beq _081D0612
+ ldrh r0, [r1, 0xC]
+ subs r0, 0x1B
+ ldrh r4, [r1, 0xE]
+ adds r0, r4
+ strh r0, [r1, 0xC]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, r2
+ bcc _081D060E
+ subs r0, r3, 0x1
+_081D060C:
+ strh r0, [r1, 0xC]
+_081D060E:
+ movs r0, 0x1
+ b _081D0614
+_081D0612:
+ movs r0, 0
+_081D0614:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D05DC
+
+ thumb_func_start sub_81D061C
+sub_81D061C: @ 81D061C
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0xC]
+ adds r1, r0, 0
+ cmp r1, 0x18
+ bhi _081D065C
+ ldrh r3, [r2, 0xE]
+ cmp r1, r3
+ bcs _081D0640
+ adds r0, 0x9
+ strh r0, [r2, 0xC]
+ ldrh r1, [r2, 0x10]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, r1
+ bcc _081D0658
+ subs r0, r1, 0x1
+ b _081D0656
+_081D0640:
+ ldrh r0, [r2, 0x12]
+ cmp r0, 0
+ beq _081D065C
+ ldrh r1, [r2, 0xC]
+ ldrh r0, [r2, 0xE]
+ subs r0, r1, r0
+ ldrh r1, [r2, 0x12]
+ cmp r0, r1
+ blt _081D0654
+ subs r0, r1, 0x1
+_081D0654:
+ adds r0, 0x1B
+_081D0656:
+ strh r0, [r2, 0xC]
+_081D0658:
+ movs r0, 0x1
+ b _081D065E
+_081D065C:
+ movs r0, 0
+_081D065E:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D061C
+
+ thumb_func_start sub_81D0664
+sub_81D0664: @ 81D0664
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldrh r4, [r5, 0xC]
+ adds r0, r4, 0
+ movs r1, 0x9
+ bl __umodsi3
+ lsls r0, 16
+ cmp r0, 0
+ bne _081D067C
+ movs r0, 0
+ b _081D0682
+_081D067C:
+ subs r0, r4, 0x1
+ strh r0, [r5, 0xC]
+ movs r0, 0x1
+_081D0682:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D0664
+
+ thumb_func_start sub_81D0688
+sub_81D0688: @ 81D0688
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldrh r4, [r5, 0xC]
+ adds r0, r4, 0
+ movs r1, 0x9
+ bl __umodsi3
+ lsls r0, 16
+ lsrs r1, r0, 16
+ cmp r1, 0x7
+ bgt _081D06BC
+ cmp r4, 0x1A
+ bhi _081D06AC
+ ldrh r0, [r5, 0x10]
+ subs r0, 0x1
+ cmp r4, r0
+ bge _081D06BC
+ b _081D06B4
+_081D06AC:
+ ldrh r0, [r5, 0x12]
+ subs r0, 0x1
+ cmp r1, r0
+ bge _081D06BC
+_081D06B4:
+ adds r0, r4, 0x1
+ strh r0, [r5, 0xC]
+ movs r0, 0x1
+ b _081D06BE
+_081D06BC:
+ movs r0, 0
+_081D06BE:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D0688
+
+ thumb_func_start sub_81D06C4
+sub_81D06C4: @ 81D06C4
+ push {lr}
+ movs r0, 0xD
+ bl GetSubstructPtr
+ ldr r0, [r0, 0x8]
+ ldrh r0, [r0, 0x2]
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D06C4
+
+ thumb_func_start sub_81D06D4
+sub_81D06D4: @ 81D06D4
+ push {lr}
+ movs r0, 0xD
+ bl GetSubstructPtr
+ ldr r0, [r0, 0x8]
+ ldrh r0, [r0]
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D06D4
+
+ thumb_func_start sub_81D06E4
+sub_81D06E4: @ 81D06E4
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ adds r7, r1, 0
+ adds r6, r2, 0
+ movs r0, 0xD
+ bl GetSubstructPtr
+ ldr r1, [r0, 0x8]
+ ldrh r0, [r1, 0x2]
+ lsls r0, 2
+ adds r0, 0x4
+ adds r1, r0
+ ldrb r0, [r1]
+ cmp r0, 0xE
+ bne _081D0730
+ ldrb r1, [r1, 0x1]
+ movs r0, 0x64
+ adds r4, r1, 0
+ muls r4, r0
+ ldr r0, =gPlayerParty
+ adds r4, r0
+ adds r0, r4, 0
+ movs r1, 0x2
+ adds r2, r5, 0
+ bl GetMonData
+ adds r0, r4, 0
+ bl GetLevelFromMonExp
+ strb r0, [r7]
+ adds r0, r4, 0
+ bl GetMonGender
+ strb r0, [r6]
+ b _081D0752
+ .pool
+_081D0730:
+ ldrb r0, [r1]
+ ldrb r1, [r1, 0x1]
+ bl GetBoxedMonPtr
+ adds r4, r0, 0
+ bl GetBoxMonGender
+ strb r0, [r6]
+ adds r0, r4, 0
+ bl GetLevelFromBoxMonExp
+ strb r0, [r7]
+ adds r0, r4, 0
+ movs r1, 0x2
+ adds r2, r5, 0
+ bl GetBoxMonData
+_081D0752:
+ adds r0, r5, 0
+ bl StringGetEnd10
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81D06E4
+
+ thumb_func_start sub_81D0760
+sub_81D0760: @ 81D0760
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ adds r6, r1, 0
+ adds r7, r2, 0
+ movs r0, 0xD
+ bl GetSubstructPtr
+ ldr r1, [r0, 0x8]
+ ldrh r0, [r1, 0x2]
+ lsls r0, 2
+ adds r0, 0x4
+ adds r1, r0
+ ldrb r0, [r1]
+ cmp r0, 0xE
+ bne _081D07AC
+ ldrb r1, [r1, 0x1]
+ movs r0, 0x64
+ adds r4, r1, 0
+ muls r4, r0
+ ldr r0, =gPlayerParty
+ adds r4, r0
+ adds r0, r4, 0
+ movs r1, 0xB
+ bl GetMonData
+ strh r0, [r5]
+ adds r0, r4, 0
+ movs r1, 0
+ bl GetMonData
+ str r0, [r6]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl GetMonData
+ b _081D07D0
+ .pool
+_081D07AC:
+ ldrb r0, [r1]
+ ldrb r1, [r1, 0x1]
+ bl GetBoxedMonPtr
+ adds r4, r0, 0
+ movs r1, 0xB
+ bl GetBoxMonData
+ strh r0, [r5]
+ adds r0, r4, 0
+ movs r1, 0
+ bl GetBoxMonData
+ str r0, [r6]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl GetBoxMonData
+_081D07D0:
+ str r0, [r7]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81D0760
+
+ thumb_func_start sub_81D07D8
+sub_81D07D8: @ 81D07D8
+ push {lr}
+ movs r0, 0xD
+ bl GetSubstructPtr
+ ldr r1, [r0, 0x8]
+ ldrh r0, [r1, 0x2]
+ lsls r0, 2
+ adds r0, 0x4
+ adds r1, r0
+ ldrb r0, [r1]
+ cmp r0, 0xE
+ beq _081D07FA
+ ldrb r1, [r1, 0x1]
+ movs r2, 0x52
+ bl GetBoxMonDataAt
+ b _081D080A
+_081D07FA:
+ ldrb r1, [r1, 0x1]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, =gPlayerParty
+ adds r0, r1
+ movs r1, 0x52
+ bl GetMonData
+_081D080A:
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81D07D8
+
+ thumb_func_start sub_81D0814
+sub_81D0814: @ 81D0814
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ adds r5, r0, 0
+ ldr r0, [r5, 0x8]
+ ldrh r1, [r0, 0x2]
+ lsls r1, 2
+ adds r1, 0x4
+ adds r1, r0, r1
+ ldrb r0, [r1]
+ cmp r0, 0xE
+ bne _081D0848
+ ldrb r1, [r1, 0x1]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, =gPlayerParty
+ adds r0, r1
+ movs r1, 0x53
+ bl GetMonData
+ b _081D0852
+ .pool
+_081D0848:
+ ldrb r0, [r1]
+ ldrb r1, [r1, 0x1]
+ movs r2, 0x53
+ bl GetBoxMonDataAt
+_081D0852:
+ mov r12, r0
+ movs r0, 0
+ strh r0, [r5, 0x10]
+ strh r0, [r5, 0x12]
+ movs r6, 0
+ ldr r0, =gUnknown_086237F8
+ mov r9, r0
+ mov r10, r9
+_081D0862:
+ lsls r2, r6, 2
+ mov r3, r9
+ adds r1, r2, r3
+ movs r0, 0x1
+ ldrb r3, [r1]
+ lsls r0, r3
+ subs r4, r0, 0x1
+ mov r0, r12
+ ands r4, r0
+ ldrb r0, [r1, 0x3]
+ adds r7, r2, 0
+ cmp r0, 0
+ bne _081D08AC
+ movs r3, 0
+ adds r6, 0x1
+ mov r8, r6
+ cmp r3, r4
+ bge _081D08D6
+ adds r6, r5, 0
+ adds r6, 0x14
+ mov r1, r10
+ adds r0, r7, r1
+ ldrb r2, [r0, 0x2]
+_081D0890:
+ ldrh r0, [r5, 0x10]
+ adds r1, r0, 0x1
+ strh r1, [r5, 0x10]
+ lsls r0, 16
+ lsrs r0, 14
+ adds r0, r6, r0
+ adds r1, r2, r3
+ str r1, [r0]
+ adds r3, 0x1
+ cmp r3, r4
+ blt _081D0890
+ b _081D08D6
+ .pool
+_081D08AC:
+ movs r3, 0
+ adds r6, 0x1
+ mov r8, r6
+ cmp r3, r4
+ bge _081D08D6
+ adds r6, r5, 0
+ adds r6, 0x78
+ mov r1, r10
+ adds r0, r7, r1
+ ldrb r2, [r0, 0x2]
+_081D08C0:
+ ldrh r0, [r5, 0x12]
+ adds r1, r0, 0x1
+ strh r1, [r5, 0x12]
+ lsls r0, 16
+ lsrs r0, 14
+ adds r0, r6, r0
+ adds r1, r2, r3
+ str r1, [r0]
+ adds r3, 0x1
+ cmp r3, r4
+ blt _081D08C0
+_081D08D6:
+ mov r3, r9
+ adds r0, r7, r3
+ mov r1, r12
+ ldrb r0, [r0]
+ lsrs r1, r0
+ mov r12, r1
+ mov r6, r8
+ cmp r6, 0x10
+ bls _081D0862
+ ldrh r0, [r5, 0x10]
+ cmp r0, 0
+ beq _081D0900
+ subs r0, 0x1
+ movs r1, 0x9
+ bl __divsi3
+ lsls r1, r0, 3
+ adds r1, r0
+ movs r0, 0
+ strh r1, [r5, 0xE]
+ b _081D0904
+_081D0900:
+ strh r0, [r5, 0xE]
+ movs r0, 0x1B
+_081D0904:
+ strh r0, [r5, 0xC]
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81D0814
+
+ thumb_func_start sub_81D0914
+sub_81D0914: @ 81D0914
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0xD
+ bl GetSubstructPtr
+ ldrh r1, [r0, 0x10]
+ str r1, [r4]
+ adds r0, 0x14
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D0914
+
+ thumb_func_start sub_81D092C
+sub_81D092C: @ 81D092C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0xD
+ bl GetSubstructPtr
+ ldrh r1, [r0, 0x12]
+ str r1, [r4]
+ adds r0, 0x78
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D092C
+
+ thumb_func_start sub_81D0944
+sub_81D0944: @ 81D0944
+ push {lr}
+ movs r0, 0xD
+ bl GetSubstructPtr
+ ldrh r0, [r0, 0xC]
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D0944
+
+ thumb_func_start sub_81D0954
+sub_81D0954: @ 81D0954
+ push {lr}
+ movs r0, 0xD
+ bl GetSubstructPtr
+ adds r1, r0, 0
+ ldrh r0, [r1, 0xC]
+ cmp r0, 0x18
+ ble _081D096C
+ subs r0, 0x1B
+ lsls r0, 2
+ adds r1, 0x78
+ b _081D0970
+_081D096C:
+ lsls r0, 2
+ adds r1, 0x14
+_081D0970:
+ adds r1, r0
+ ldr r0, [r1]
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D0954
+
+ thumb_func_start sub_81D0978
+sub_81D0978: @ 81D0978
+ push {r4,lr}
+ ldr r1, =0x0000101c
+ movs r0, 0xE
+ bl AllocSubstruct
+ adds r4, r0, 0
+ cmp r4, 0
+ beq _081D09A8
+ ldr r0, =sub_81D0A6C
+ movs r1, 0x1
+ bl CreateLoopedTask
+ str r0, [r4, 0x4]
+ ldr r0, =sub_81D0A58
+ str r0, [r4]
+ movs r0, 0x1
+ b _081D09AA
+ .pool
+_081D09A8:
+ movs r0, 0
+_081D09AA:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D0978
+
+ thumb_func_start sub_81D09B0
+sub_81D09B0: @ 81D09B0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0xE
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ ldr r0, =gUnknown_08624BA0
+ lsls r4, 2
+ adds r4, r0
+ ldr r0, [r4]
+ movs r1, 0x1
+ bl CreateLoopedTask
+ str r0, [r5, 0x4]
+ ldr r0, =sub_81D0A58
+ str r0, [r5]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D09B0
+
+ thumb_func_start sub_81D09E0
+sub_81D09E0: @ 81D09E0
+ push {lr}
+ movs r0, 0xE
+ bl GetSubstructPtr
+ ldr r0, [r0]
+ bl _call_via_r0
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D09E0
+
+ thumb_func_start sub_81D09F4
+sub_81D09F4: @ 81D09F4
+ push {r4,lr}
+ movs r0, 0xE
+ bl GetSubstructPtr
+ adds r4, r0, 0
+ ldrb r0, [r4, 0xA]
+ bl RemoveWindow
+ ldrb r0, [r4, 0x8]
+ bl RemoveWindow
+ ldrb r0, [r4, 0xC]
+ bl RemoveWindow
+ ldrb r0, [r4, 0xE]
+ bl RemoveWindow
+ adds r0, r4, 0
+ bl sub_81D1178
+ movs r0, 0x9
+ bl FreeSpriteTilesByTag
+ movs r0, 0xF
+ bl FreeSpritePaletteByTag
+ movs r0, 0x10
+ bl FreeSpritePaletteByTag
+ movs r0, 0x11
+ bl FreeSpritePaletteByTag
+ movs r0, 0x12
+ bl FreeSpritePaletteByTag
+ movs r0, 0x13
+ bl FreeSpritePaletteByTag
+ ldr r0, [r4, 0x14]
+ bl FreeSpriteOamMatrix
+ ldr r0, [r4, 0x14]
+ bl DestroySprite
+ movs r0, 0xE
+ bl FreePokenavSubstruct
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81D09F4
+
+ thumb_func_start sub_81D0A58
+sub_81D0A58: @ 81D0A58
+ push {lr}
+ movs r0, 0xE
+ bl GetSubstructPtr
+ ldr r0, [r0, 0x4]
+ bl IsLoopedTaskActive
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D0A58
+
+ thumb_func_start sub_81D0A6C
+sub_81D0A6C: @ 81D0A6C
+ push {r4,r5,lr}
+ sub sp, 0x8
+ adds r4, r0, 0
+ movs r0, 0xE
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ cmp r4, 0x9
+ bls _081D0A80
+ b _081D0C48
+_081D0A80:
+ lsls r0, r4, 2
+ ldr r1, =_081D0A90
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_081D0A90:
+ .4byte _081D0AB8
+ .4byte _081D0B04
+ .4byte _081D0B74
+ .4byte _081D0B88
+ .4byte _081D0B9C
+ .4byte _081D0BB0
+ .4byte _081D0BC4
+ .4byte _081D0BD8
+ .4byte _081D0BE8
+ .4byte _081D0C3C
+_081D0AB8:
+ ldr r0, =gUnknown_08624B98
+ movs r1, 0x2
+ bl InitBgTemplates
+ ldr r1, =gUnknown_08DDE030
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x2
+ movs r2, 0
+ movs r3, 0
+ bl decompress_and_copy_tile_data_to_vram
+ adds r1, r5, 0
+ adds r1, 0x1C
+ movs r0, 0x2
+ bl SetBgTilemapBuffer
+ ldr r1, =gUnknown_08DDE12C
+ movs r0, 0x2
+ movs r2, 0
+ movs r3, 0
+ bl CopyToBgTilemapBuffer
+ ldr r0, =gUnknown_08DDE010
+ movs r1, 0x10
+ movs r2, 0x20
+ bl CopyPaletteIntoBufferUnfaded
+ b _081D0BBA
+ .pool
+_081D0B04:
+ bl free_temp_tile_data_buffers_if_possible
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ beq _081D0B12
+ b _081D0C44
+_081D0B12:
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x1
+ bl sub_8199DF0
+ ldr r1, =gUnknown_086240B8
+ str r4, [sp]
+ movs r0, 0x1
+ movs r2, 0
+ movs r3, 0x1
+ bl decompress_and_copy_tile_data_to_vram
+ ldr r0, =0x0000081c
+ adds r1, r5, r0
+ movs r0, 0x1
+ bl SetBgTilemapBuffer
+ movs r0, 0x20
+ str r0, [sp]
+ movs r0, 0x14
+ str r0, [sp, 0x4]
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl FillBgTilemapBufferRect_Palette0
+ ldr r0, =gUnknown_08623FF8
+ movs r1, 0x20
+ movs r2, 0xA0
+ bl CopyPaletteIntoBufferUnfaded
+ ldr r0, =gUnknown_08624098
+ movs r1, 0xA0
+ movs r2, 0x20
+ bl CopyPaletteIntoBufferUnfaded
+ movs r0, 0x1
+ b _081D0BBC
+ .pool
+_081D0B74:
+ bl free_temp_tile_data_buffers_if_possible
+ lsls r0, 24
+ cmp r0, 0
+ bne _081D0C44
+ adds r0, r5, 0
+ bl sub_81D0E60
+ movs r0, 0
+ b _081D0C4A
+_081D0B88:
+ bl free_temp_tile_data_buffers_if_possible
+ lsls r0, 24
+ cmp r0, 0
+ bne _081D0C44
+ adds r0, r5, 0
+ bl sub_81D0FCC
+ movs r0, 0
+ b _081D0C4A
+_081D0B9C:
+ bl free_temp_tile_data_buffers_if_possible
+ lsls r0, 24
+ cmp r0, 0
+ bne _081D0C44
+ adds r0, r5, 0
+ bl sub_81D10A4
+ movs r0, 0
+ b _081D0C4A
+_081D0BB0:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ bne _081D0C44
+_081D0BBA:
+ movs r0, 0x2
+_081D0BBC:
+ bl CopyBgTilemapBufferToVram
+ movs r0, 0
+ b _081D0C4A
+_081D0BC4:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ bne _081D0C44
+ adds r0, r5, 0
+ bl sub_81D1148
+ movs r0, 0x1
+ b _081D0C4A
+_081D0BD8:
+ adds r0, r5, 0
+ bl sub_81D12D8
+ movs r0, 0xA
+ bl sub_81C7BA4
+ movs r0, 0
+ b _081D0C4A
+_081D0BE8:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ bne _081D0C44
+ adds r0, r5, 0
+ bl sub_81D13FC
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ movs r0, 0x2
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0x2
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ movs r0, 0x1
+ bl ShowBg
+ movs r0, 0x2
+ bl ShowBg
+ movs r0, 0x3
+ bl HideBg
+ movs r0, 0x1
+ bl sub_81C7AC0
+ movs r0, 0
+ b _081D0C4A
+_081D0C3C:
+ bl IsPaletteFadeActive
+ cmp r0, 0
+ beq _081D0C48
+_081D0C44:
+ movs r0, 0x2
+ b _081D0C4A
+_081D0C48:
+ movs r0, 0x4
+_081D0C4A:
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D0A6C
+
+ thumb_func_start sub_81D0C54
+sub_81D0C54: @ 81D0C54
+ push {lr}
+ cmp r0, 0
+ beq _081D0C60
+ cmp r0, 0x1
+ beq _081D0C70
+ b _081D0C7C
+_081D0C60:
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0
+ bl sub_81C7AC0
+ movs r0, 0
+ b _081D0C7E
+_081D0C70:
+ bl IsPaletteFadeActive
+ cmp r0, 0
+ beq _081D0C7C
+ movs r0, 0x2
+ b _081D0C7E
+_081D0C7C:
+ movs r0, 0x4
+_081D0C7E:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D0C54
+
+ thumb_func_start sub_81D0C84
+sub_81D0C84: @ 81D0C84
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r0, 0xE
+ bl GetSubstructPtr
+ adds r4, r0, 0
+ cmp r5, 0x6
+ bhi _081D0D24
+ lsls r0, r5, 2
+ ldr r1, =_081D0CA4
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_081D0CA4:
+ .4byte _081D0CC0
+ .4byte _081D0CD0
+ .4byte _081D0CE4
+ .4byte _081D0CEE
+ .4byte _081D0CF8
+ .4byte _081D0D02
+ .4byte _081D0D16
+_081D0CC0:
+ movs r0, 0x5
+ bl PlaySE
+ adds r0, r4, 0
+ bl sub_81D11D8
+ movs r0, 0
+ b _081D0D26
+_081D0CD0:
+ adds r0, r4, 0
+ bl sub_81D1234
+ cmp r0, 0
+ bne _081D0D20
+ adds r0, r4, 0
+ bl sub_81D0FF0
+ movs r0, 0x1
+ b _081D0D26
+_081D0CE4:
+ adds r0, r4, 0
+ bl sub_81D12D8
+ movs r0, 0x1
+ b _081D0D26
+_081D0CEE:
+ adds r0, r4, 0
+ bl sub_81D10D0
+ movs r0, 0x1
+ b _081D0D26
+_081D0CF8:
+ adds r0, r4, 0
+ bl sub_81D0E84
+ movs r0, 0x1
+ b _081D0D26
+_081D0D02:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ bne _081D0D20
+ adds r0, r4, 0
+ bl sub_81D11FC
+ movs r0, 0
+ b _081D0D26
+_081D0D16:
+ adds r0, r4, 0
+ bl sub_81D1234
+ cmp r0, 0
+ beq _081D0D24
+_081D0D20:
+ movs r0, 0x2
+ b _081D0D26
+_081D0D24:
+ movs r0, 0x4
+_081D0D26:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D0C84
+
+ thumb_func_start sub_81D0D2C
+sub_81D0D2C: @ 81D0D2C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0xE
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ cmp r4, 0x1
+ beq _081D0D5C
+ cmp r4, 0x1
+ bgt _081D0D46
+ cmp r4, 0
+ beq _081D0D4C
+ b _081D0D84
+_081D0D46:
+ cmp r4, 0x2
+ beq _081D0D76
+ b _081D0D84
+_081D0D4C:
+ movs r0, 0x5
+ bl PlaySE
+ adds r0, r5, 0
+ bl sub_81D1448
+ movs r0, 0
+ b _081D0D86
+_081D0D5C:
+ adds r0, r5, 0
+ bl sub_81D1524
+ cmp r0, 0
+ bne _081D0D80
+ adds r0, r5, 0
+ bl sub_81D0EFC
+ movs r0, 0xB
+ bl sub_81C7BA4
+ movs r0, 0
+ b _081D0D86
+_081D0D76:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ beq _081D0D84
+_081D0D80:
+ movs r0, 0x2
+ b _081D0D86
+_081D0D84:
+ movs r0, 0x4
+_081D0D86:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D0D2C
+
+ thumb_func_start sub_81D0D8C
+sub_81D0D8C: @ 81D0D8C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0xE
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ cmp r4, 0x1
+ beq _081D0DC0
+ cmp r4, 0x1
+ bgt _081D0DA6
+ cmp r4, 0
+ beq _081D0DB0
+ b _081D0DF6
+_081D0DA6:
+ cmp r4, 0x2
+ beq _081D0DD4
+ cmp r4, 0x3
+ beq _081D0DE8
+ b _081D0DF6
+_081D0DB0:
+ movs r0, 0x5
+ bl PlaySE
+ adds r0, r5, 0
+ bl sub_81D1500
+ movs r0, 0
+ b _081D0DF8
+_081D0DC0:
+ adds r0, r5, 0
+ bl sub_81D1524
+ cmp r0, 0
+ bne _081D0DF2
+ adds r0, r5, 0
+ bl sub_81D1448
+ movs r0, 0
+ b _081D0DF8
+_081D0DD4:
+ adds r0, r5, 0
+ bl sub_81D1524
+ cmp r0, 0
+ bne _081D0DF2
+ adds r0, r5, 0
+ bl sub_81D0EFC
+ movs r0, 0
+ b _081D0DF8
+_081D0DE8:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ beq _081D0DF6
+_081D0DF2:
+ movs r0, 0x2
+ b _081D0DF8
+_081D0DF6:
+ movs r0, 0x4
+_081D0DF8:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D0D8C
+
+ thumb_func_start sub_81D0E00
+sub_81D0E00: @ 81D0E00
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0xE
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ cmp r4, 0x1
+ beq _081D0E30
+ cmp r4, 0x1
+ bgt _081D0E1A
+ cmp r4, 0
+ beq _081D0E20
+ b _081D0E58
+_081D0E1A:
+ cmp r4, 0x2
+ beq _081D0E4A
+ b _081D0E58
+_081D0E20:
+ movs r0, 0x5
+ bl PlaySE
+ adds r0, r5, 0
+ bl sub_81D1500
+ movs r0, 0
+ b _081D0E5A
+_081D0E30:
+ adds r0, r5, 0
+ bl sub_81D1524
+ cmp r0, 0
+ bne _081D0E54
+ adds r0, r5, 0
+ bl sub_81D0E84
+ movs r0, 0xA
+ bl sub_81C7BA4
+ movs r0, 0
+ b _081D0E5A
+_081D0E4A:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ beq _081D0E58
+_081D0E54:
+ movs r0, 0x2
+ b _081D0E5A
+_081D0E58:
+ movs r0, 0x4
+_081D0E5A:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D0E00
+
+ thumb_func_start sub_81D0E60
+sub_81D0E60: @ 81D0E60
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, =gUnknown_08624BB8
+ bl AddWindow
+ strh r0, [r4, 0xA]
+ lsls r0, 24
+ lsrs r0, 24
+ bl PutWindowTilemap
+ adds r0, r4, 0
+ bl sub_81D0E84
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D0E60
+
+ thumb_func_start sub_81D0E84
+sub_81D0E84: @ 81D0E84
+ push {r4,r5,lr}
+ sub sp, 0x10
+ adds r5, r0, 0
+ ldr r1, =gUnknown_08624BC0
+ add r0, sp, 0xC
+ movs r2, 0x3
+ bl memcpy
+ ldr r4, =gStringVar1
+ bl sub_81D07D8
+ adds r1, r0, 0
+ adds r0, r4, 0
+ movs r2, 0
+ movs r3, 0x2
+ bl ConvertIntToDecimalStringN
+ bl DynamicPlaceholderTextUtil_Reset
+ movs r0, 0
+ adds r1, r4, 0
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
+ ldr r4, =gStringVar4
+ ldr r1, =gText_RibbonsF700
+ adds r0, r4, 0
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
+ ldrb r0, [r5, 0xA]
+ movs r1, 0x44
+ bl FillWindowPixelBuffer
+ ldrb r0, [r5, 0xA]
+ add r1, sp, 0xC
+ str r1, [sp]
+ movs r1, 0x1
+ negs r1, r1
+ str r1, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r1, 0x1
+ movs r2, 0
+ movs r3, 0x1
+ bl AddTextPrinterParameterized3
+ ldrb r0, [r5, 0xA]
+ movs r1, 0x2
+ bl CopyWindowToVram
+ add sp, 0x10
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D0E84
+
+ thumb_func_start sub_81D0EFC
+sub_81D0EFC: @ 81D0EFC
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x10
+ adds r7, r0, 0
+ bl sub_81D0954
+ adds r5, r0, 0
+ ldr r1, =gUnknown_08624BC0
+ add r0, sp, 0xC
+ movs r2, 0x3
+ bl memcpy
+ ldrb r0, [r7, 0xA]
+ movs r1, 0x44
+ bl FillWindowPixelBuffer
+ cmp r5, 0x18
+ bhi _081D0F60
+ lsls r1, r5, 3
+ ldr r0, =gRibbonDescriptionPointers
+ adds r6, r1, r0
+ movs r5, 0x80
+ lsls r5, 17
+ movs r4, 0x1
+_081D0F2E:
+ ldrb r0, [r7, 0xA]
+ lsrs r3, r5, 24
+ add r1, sp, 0xC
+ str r1, [sp]
+ movs r1, 0x1
+ negs r1, r1
+ str r1, [sp, 0x4]
+ ldm r6!, {r1}
+ str r1, [sp, 0x8]
+ movs r1, 0x1
+ movs r2, 0
+ bl AddTextPrinterParameterized3
+ movs r0, 0x80
+ lsls r0, 21
+ adds r5, r0
+ subs r4, 0x1
+ cmp r4, 0
+ bge _081D0F2E
+ b _081D0FAA
+ .pool
+_081D0F60:
+ ldr r0, =gSaveBlock1Ptr
+ ldr r0, [r0]
+ adds r0, r5
+ ldr r1, =0x0000318f
+ adds r0, r1
+ ldrb r5, [r0]
+ cmp r5, 0
+ beq _081D0FB2
+ subs r5, 0x1
+ movs r4, 0
+ ldr r0, =gGiftRibbonDescriptionPointers
+ mov r8, r0
+ movs r6, 0x80
+ lsls r6, 17
+_081D0F7C:
+ ldrb r0, [r7, 0xA]
+ lsrs r3, r6, 24
+ add r1, sp, 0xC
+ str r1, [sp]
+ movs r1, 0x1
+ negs r1, r1
+ str r1, [sp, 0x4]
+ lsls r1, r4, 2
+ lsls r2, r5, 3
+ adds r1, r2
+ add r1, r8
+ ldr r1, [r1]
+ str r1, [sp, 0x8]
+ movs r1, 0x1
+ movs r2, 0
+ bl AddTextPrinterParameterized3
+ movs r0, 0x80
+ lsls r0, 21
+ adds r6, r0
+ adds r4, 0x1
+ cmp r4, 0x1
+ ble _081D0F7C
+_081D0FAA:
+ ldrb r0, [r7, 0xA]
+ movs r1, 0x2
+ bl CopyWindowToVram
+_081D0FB2:
+ add sp, 0x10
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D0EFC
+
+ thumb_func_start sub_81D0FCC
+sub_81D0FCC: @ 81D0FCC
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, =gUnknown_08624BC4
+ bl AddWindow
+ strh r0, [r4, 0x8]
+ lsls r0, 24
+ lsrs r0, 24
+ bl PutWindowTilemap
+ adds r0, r4, 0
+ bl sub_81D0FF0
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D0FCC
+
+ thumb_func_start sub_81D0FF0
+sub_81D0FF0: @ 81D0FF0
+ push {r4-r7,lr}
+ sub sp, 0x10
+ ldrh r7, [r0, 0x8]
+ ldrb r5, [r0, 0x8]
+ adds r0, r5, 0
+ movs r1, 0x11
+ bl FillWindowPixelBuffer
+ ldr r4, =gStringVar3
+ mov r6, sp
+ adds r6, 0xD
+ adds r0, r4, 0
+ add r1, sp, 0xC
+ adds r2, r6, 0
+ bl sub_81D06E4
+ movs r0, 0x1
+ str r0, [sp]
+ movs r0, 0xFF
+ str r0, [sp, 0x4]
+ movs r0, 0
+ str r0, [sp, 0x8]
+ adds r0, r5, 0
+ movs r1, 0x1
+ adds r2, r4, 0
+ movs r3, 0
+ bl AddTextPrinterParameterized
+ ldrb r0, [r6]
+ cmp r0, 0
+ beq _081D1040
+ cmp r0, 0xFE
+ beq _081D1048
+ ldr r1, =gUnknown_08624BE4
+ b _081D104A
+ .pool
+_081D1040:
+ ldr r1, =gUnknown_08624BCC
+ b _081D104A
+ .pool
+_081D1048:
+ ldr r1, =gUnknown_08624BD8
+_081D104A:
+ ldr r5, =gStringVar1
+ adds r0, r5, 0
+ bl StringCopy
+ movs r1, 0xBA
+ strb r1, [r0]
+ adds r0, 0x1
+ movs r1, 0xF9
+ strb r1, [r0]
+ adds r0, 0x1
+ movs r1, 0x5
+ strb r1, [r0]
+ adds r0, 0x1
+ add r1, sp, 0xC
+ ldrb r1, [r1]
+ movs r2, 0
+ movs r3, 0x3
+ bl ConvertIntToDecimalStringN
+ lsls r4, r7, 24
+ lsrs r4, 24
+ movs r0, 0x1
+ str r0, [sp]
+ movs r0, 0xFF
+ str r0, [sp, 0x4]
+ movs r0, 0
+ str r0, [sp, 0x8]
+ adds r0, r4, 0
+ movs r1, 0x1
+ adds r2, r5, 0
+ movs r3, 0x3C
+ bl AddTextPrinterParameterized
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl CopyWindowToVram
+ add sp, 0x10
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D0FF0
+
+ thumb_func_start sub_81D10A4
+sub_81D10A4: @ 81D10A4
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, =gUnknown_08624BE8
+ bl AddWindow
+ strh r0, [r4, 0xC]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x11
+ bl FillWindowPixelBuffer
+ ldrb r0, [r4, 0xC]
+ bl PutWindowTilemap
+ adds r0, r4, 0
+ bl sub_81D10D0
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D10A4
+
+ thumb_func_start sub_81D10D0
+sub_81D10D0: @ 81D10D0
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ sub sp, 0xC
+ mov r8, r0
+ bl sub_81D06C4
+ adds r4, r0, 0
+ adds r4, 0x1
+ bl sub_81D06D4
+ adds r6, r0, 0
+ ldr r5, =gStringVar1
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0x1
+ movs r3, 0x3
+ bl ConvertIntToDecimalStringN
+ movs r1, 0xBA
+ strb r1, [r0]
+ adds r0, 0x1
+ adds r1, r6, 0
+ movs r2, 0x1
+ movs r3, 0x3
+ bl ConvertIntToDecimalStringN
+ movs r0, 0x1
+ adds r1, r5, 0
+ movs r2, 0x38
+ bl GetStringCenterAlignXOffset
+ adds r3, r0, 0
+ mov r1, r8
+ ldrb r0, [r1, 0xC]
+ lsls r3, 24
+ lsrs r3, 24
+ movs r1, 0x1
+ str r1, [sp]
+ movs r1, 0xFF
+ str r1, [sp, 0x4]
+ movs r1, 0
+ str r1, [sp, 0x8]
+ movs r1, 0x1
+ adds r2, r5, 0
+ bl AddTextPrinterParameterized
+ mov r1, r8
+ ldrb r0, [r1, 0xC]
+ movs r1, 0x2
+ bl CopyWindowToVram
+ add sp, 0xC
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D10D0
+
+ thumb_func_start sub_81D1148
+sub_81D1148: @ 81D1148
+ push {r4,lr}
+ sub sp, 0xC
+ adds r4, r0, 0
+ add r1, sp, 0x4
+ add r2, sp, 0x8
+ mov r0, sp
+ bl sub_81D0760
+ bl ResetAllPicSprites
+ movs r0, 0x28
+ movs r1, 0x68
+ bl sub_81D1184
+ strh r0, [r4, 0x10]
+ movs r0, 0xF
+ movs r1, 0
+ bl sub_81C7990
+ add sp, 0xC
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81D1148
+
+ thumb_func_start sub_81D1178
+sub_81D1178: @ 81D1178
+ push {lr}
+ ldrh r0, [r0, 0x10]
+ bl FreeAndDestroyMonPicSprite
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81D1178
+
+ thumb_func_start sub_81D1184
+sub_81D1184: @ 81D1184
+ push {lr}
+ sub sp, 0x1C
+ add r1, sp, 0x14
+ add r2, sp, 0x18
+ add r0, sp, 0x10
+ bl sub_81D0760
+ add r0, sp, 0x10
+ ldrh r0, [r0]
+ ldr r1, [sp, 0x18]
+ ldr r2, [sp, 0x14]
+ movs r3, 0x28
+ str r3, [sp]
+ movs r3, 0x68
+ str r3, [sp, 0x4]
+ movs r3, 0xF
+ str r3, [sp, 0x8]
+ ldr r3, =0x0000ffff
+ str r3, [sp, 0xC]
+ movs r3, 0x1
+ bl CreateMonPicSprite_HandleDeoxys
+ lsls r0, 16
+ lsrs r0, 16
+ ldr r1, =gSprites
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r1
+ ldrb r3, [r2, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r3
+ strb r1, [r2, 0x5]
+ add sp, 0x1C
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81D1184
+
+ thumb_func_start sub_81D11D8
+sub_81D11D8: @ 81D11D8
+ push {lr}
+ ldrh r1, [r0, 0x10]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, =gSprites
+ adds r0, r1
+ movs r2, 0x20
+ negs r2, r2
+ movs r1, 0x28
+ movs r3, 0x6
+ bl sub_81D1258
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D11D8
+
+ thumb_func_start sub_81D11FC
+sub_81D11FC: @ 81D11FC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x10]
+ bl FreeAndDestroyMonPicSprite
+ movs r5, 0x20
+ negs r5, r5
+ adds r0, r5, 0
+ movs r1, 0x68
+ bl sub_81D1184
+ strh r0, [r4, 0x10]
+ ldrh r1, [r4, 0x10]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, =gSprites
+ adds r0, r1
+ adds r1, r5, 0
+ movs r2, 0x28
+ movs r3, 0x6
+ bl sub_81D1258
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D11FC
+
+ thumb_func_start sub_81D1234
+sub_81D1234: @ 81D1234
+ ldr r2, =gSprites
+ ldrh r1, [r0, 0x10]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r2, 0x1C
+ adds r0, r2
+ ldr r1, [r0]
+ ldr r0, =SpriteCallbackDummy
+ eors r1, r0
+ negs r0, r1
+ orrs r0, r1
+ lsrs r0, 31
+ bx lr
+ .pool
+ thumb_func_end sub_81D1234
+
+ thumb_func_start sub_81D1258
+sub_81D1258: @ 81D1258
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ adds r6, r2, 0
+ adds r5, r3, 0
+ subs r0, r6, r1
+ strh r1, [r4, 0x20]
+ lsls r1, 4
+ strh r1, [r4, 0x2E]
+ lsls r0, 4
+ adds r1, r5, 0
+ bl __udivsi3
+ strh r0, [r4, 0x30]
+ strh r5, [r4, 0x32]
+ strh r6, [r4, 0x34]
+ ldr r0, =sub_81D1284
+ str r0, [r4, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D1258
+
+ thumb_func_start sub_81D1284
+sub_81D1284: @ 81D1284
+ push {lr}
+ adds r2, r0, 0
+ ldrh r1, [r2, 0x32]
+ movs r3, 0x32
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ beq _081D12C8
+ subs r0, r1, 0x1
+ strh r0, [r2, 0x32]
+ ldrh r0, [r2, 0x30]
+ ldrh r1, [r2, 0x2E]
+ adds r0, r1
+ strh r0, [r2, 0x2E]
+ lsls r0, 16
+ asrs r0, 20
+ strh r0, [r2, 0x20]
+ movs r1, 0x20
+ negs r1, r1
+ cmp r0, r1
+ bgt _081D12BA
+ adds r0, r2, 0
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+ b _081D12D0
+_081D12BA:
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ b _081D12D0
+_081D12C8:
+ ldrh r0, [r2, 0x34]
+ strh r0, [r2, 0x20]
+ ldr r0, =SpriteCallbackDummy
+ str r0, [r2, 0x1C]
+_081D12D0:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D1284
+
+ thumb_func_start sub_81D12D8
+sub_81D12D8: @ 81D12D8
+ push {r4-r6,lr}
+ bl sub_81D1350
+ ldr r5, =gUnknown_030012C0
+ adds r0, r5, 0
+ bl sub_81D0914
+ adds r6, r0, 0
+ ldr r2, =gUnknown_030012C4
+ movs r1, 0
+ str r1, [r2]
+ ldr r0, [r5]
+ cmp r1, r0
+ bcs _081D130A
+ adds r4, r2, 0
+_081D12F6:
+ ldr r0, [r4]
+ ldm r6!, {r1}
+ bl sub_81D1370
+ ldr r1, [r4]
+ adds r1, 0x1
+ str r1, [r4]
+ ldr r0, [r5]
+ cmp r1, r0
+ bcc _081D12F6
+_081D130A:
+ ldr r4, =gUnknown_030012C0
+ adds r0, r4, 0
+ bl sub_81D092C
+ adds r6, r0, 0
+ ldr r2, =gUnknown_030012C4
+ movs r1, 0
+ str r1, [r2]
+ ldr r0, [r4]
+ cmp r1, r0
+ bcs _081D133A
+ adds r4, r2, 0
+_081D1322:
+ ldr r0, [r4]
+ adds r0, 0x1B
+ ldm r6!, {r1}
+ bl sub_81D1370
+ ldr r1, [r4]
+ adds r1, 0x1
+ str r1, [r4]
+ ldr r0, =gUnknown_030012C0
+ ldr r0, [r0]
+ cmp r1, r0
+ bcc _081D1322
+_081D133A:
+ movs r0, 0x1
+ bl CopyBgTilemapBufferToVram
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D12D8
+
+ thumb_func_start sub_81D1350
+sub_81D1350: @ 81D1350
+ push {lr}
+ sub sp, 0x8
+ movs r0, 0x20
+ str r0, [sp]
+ movs r0, 0x14
+ str r0, [sp, 0x4]
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl FillBgTilemapBufferRect_Palette0
+ add sp, 0x8
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81D1350
+
+ thumb_func_start sub_81D1370
+sub_81D1370: @ 81D1370
+ push {r4-r6,lr}
+ sub sp, 0x10
+ adds r4, r0, 0
+ adds r6, r1, 0
+ movs r1, 0x9
+ bl __umodsi3
+ adds r5, r0, 0
+ lsls r5, 1
+ adds r5, 0xB
+ adds r0, r4, 0
+ movs r1, 0x9
+ bl __udivsi3
+ adds r4, r0, 0
+ lsls r4, 1
+ adds r4, 0x4
+ add r0, sp, 0x8
+ adds r1, r6, 0
+ bl sub_81D13BC
+ lsls r5, 24
+ lsrs r5, 24
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0x2
+ str r0, [sp]
+ str r0, [sp, 0x4]
+ movs r0, 0x1
+ add r1, sp, 0x8
+ adds r2, r5, 0
+ adds r3, r4, 0
+ bl CopyToBgTilemapBufferRect
+ add sp, 0x10
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81D1370
+
+ thumb_func_start sub_81D13BC
+sub_81D13BC: @ 81D13BC
+ push {r4,r5,lr}
+ ldr r2, =gUnknown_08624BF8
+ lsls r1, 2
+ adds r1, r2
+ ldrh r3, [r1, 0x2]
+ adds r3, 0x2
+ lsls r3, 16
+ ldrh r1, [r1]
+ lsls r1, 1
+ adds r1, 0x1
+ lsls r1, 16
+ lsrs r1, 16
+ lsrs r3, 4
+ adds r2, r1, 0
+ orrs r2, r3
+ strh r2, [r0]
+ movs r5, 0x80
+ lsls r5, 3
+ adds r4, r5, 0
+ orrs r2, r4
+ strh r2, [r0, 0x2]
+ adds r1, 0x1
+ orrs r1, r3
+ strh r1, [r0, 0x4]
+ orrs r1, r4
+ strh r1, [r0, 0x6]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D13BC
+
+ thumb_func_start sub_81D13FC
+sub_81D13FC: @ 81D13FC
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, =gUnknown_08624C78
+ bl LoadCompressedSpriteSheet
+ ldr r0, =gUnknown_08624C80
+ bl Pokenav_AllocAndLoadPalettes
+ ldr r0, =gUnknown_08624D04
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, =gSprites
+ adds r1, r0
+ str r1, [r4, 0x14]
+ adds r1, 0x3E
+ ldrb r0, [r1]
+ movs r2, 0x4
+ orrs r0, r2
+ strb r0, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D13FC
+
+ thumb_func_start sub_81D1448
+sub_81D1448: @ 81D1448
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ adds r6, r0, 0
+ bl sub_81D0944
+ adds r4, r0, 0
+ lsls r4, 16
+ lsrs r4, 16
+ adds r0, r4, 0
+ movs r1, 0x9
+ bl __modsi3
+ adds r5, r0, 0
+ lsls r5, 4
+ adds r5, 0x60
+ adds r0, r4, 0
+ movs r1, 0x9
+ bl __divsi3
+ lsls r0, 4
+ adds r0, 0x28
+ ldr r1, [r6, 0x14]
+ movs r2, 0
+ mov r8, r2
+ strh r5, [r1, 0x20]
+ ldr r1, [r6, 0x14]
+ strh r0, [r1, 0x22]
+ bl sub_81D0954
+ adds r4, r0, 0
+ movs r0, 0x9
+ bl GetSpriteTileStartByTag
+ ldr r3, [r6, 0x14]
+ ldr r1, =gUnknown_08624BF8
+ lsls r4, 2
+ adds r4, r1
+ ldrh r1, [r4]
+ lsls r1, 4
+ adds r0, r1
+ ldr r2, =0x000003ff
+ adds r1, r2, 0
+ ands r0, r1
+ ldrh r2, [r3, 0x4]
+ ldr r1, =0xfffffc00
+ ands r1, r2
+ orrs r1, r0
+ strh r1, [r3, 0x4]
+ ldrh r0, [r4, 0x2]
+ adds r0, 0xF
+ lsls r0, 16
+ lsrs r0, 16
+ bl IndexOfSpritePaletteTag
+ ldr r3, [r6, 0x14]
+ lsls r0, 4
+ ldrb r2, [r3, 0x5]
+ movs r1, 0xF
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r3, 0x5]
+ ldr r0, [r6, 0x14]
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ ldr r1, [r6, 0x14]
+ adds r1, 0x3E
+ ldrb r2, [r1]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1]
+ ldr r0, [r6, 0x14]
+ mov r1, r8
+ strh r1, [r0, 0x2E]
+ ldr r1, [r6, 0x14]
+ ldr r0, =sub_81D1538
+ str r0, [r1, 0x1C]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D1448
+
+ thumb_func_start sub_81D1500
+sub_81D1500: @ 81D1500
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r1, [r4, 0x14]
+ movs r0, 0x1
+ strh r0, [r1, 0x2E]
+ ldr r0, [r4, 0x14]
+ movs r1, 0x2
+ bl StartSpriteAffineAnim
+ ldr r1, [r4, 0x14]
+ ldr r0, =sub_81D1538
+ str r0, [r1, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D1500
+
+ thumb_func_start sub_81D1524
+sub_81D1524: @ 81D1524
+ ldr r0, [r0, 0x14]
+ ldr r1, [r0, 0x1C]
+ ldr r0, =SpriteCallbackDummy
+ eors r1, r0
+ negs r0, r1
+ orrs r0, r1
+ lsrs r0, 31
+ bx lr
+ .pool
+ thumb_func_end sub_81D1524
+
+ thumb_func_start sub_81D1538
+sub_81D1538: @ 81D1538
+ push {lr}
+ adds r3, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _081D156A
+ movs r0, 0x3E
+ adds r0, r3
+ mov r12, r0
+ movs r0, 0x1
+ ldrh r1, [r3, 0x2E]
+ ands r1, r0
+ lsls r1, 2
+ mov r0, r12
+ ldrb r2, [r0]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+ ldr r0, =SpriteCallbackDummy
+ str r0, [r3, 0x1C]
+_081D156A:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D1538
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokenav_unk_2.s b/asm/pokenav_unk_2.s
new file mode 100644
index 000000000..fd076973c
--- /dev/null
+++ b/asm/pokenav_unk_2.s
@@ -0,0 +1,2277 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+@ File centered around AllocSubstruct(2)
+
+ thumb_func_start sub_81C98D4
+sub_81C98D4: @ 81C98D4
+ push {r4,lr}
+ movs r4, 0
+_081C98D8:
+ adds r0, r4, 0
+ bl sub_81CB0C8
+ ldr r1, =gMapHeader
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1, 0x14]
+ cmp r0, r1
+ bne _081C9914
+ adds r0, r4, 0
+ bl sub_81CAE08
+ cmp r0, 0
+ beq _081C9914
+ ldr r0, =gSaveBlock1Ptr
+ ldr r0, [r0]
+ ldr r1, =0x000009ca
+ adds r0, r1
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _081C9914
+ movs r0, 0x1
+ b _081C991C
+ .pool
+_081C9914:
+ adds r4, 0x1
+ cmp r4, 0x4D
+ ble _081C98D8
+ movs r0, 0
+_081C991C:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81C98D4
+
+ thumb_func_start sub_81C9924
+sub_81C9924: @ 81C9924
+ push {lr}
+ bl sub_81C9958
+ adds r1, r0, 0
+ cmp r1, 0
+ beq _081C9938
+ movs r0, 0
+ strb r0, [r1, 0xD]
+ movs r0, 0x1
+ b _081C993A
+_081C9938:
+ movs r0, 0
+_081C993A:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81C9924
+
+ thumb_func_start sub_81C9940
+sub_81C9940: @ 81C9940
+ push {lr}
+ bl sub_81C9958
+ adds r1, r0, 0
+ cmp r1, 0
+ beq _081C9952
+ movs r0, 0x1
+ strb r0, [r1, 0xD]
+ b _081C9954
+_081C9952:
+ movs r0, 0
+_081C9954:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81C9940
+
+ thumb_func_start sub_81C9958
+sub_81C9958: @ 81C9958
+ push {r4,lr}
+ ldr r1, =0x0000088c
+ movs r0, 0x2
+ bl AllocSubstruct
+ adds r4, r0, 0
+ cmp r4, 0
+ beq _081C997A
+ movs r0, 0
+ strb r0, [r4, 0xC]
+ ldr r0, =sub_81C9A10
+ movs r1, 0x1
+ bl CreateLoopedTask
+ str r0, [r4, 0x4]
+ ldr r0, =sub_81C99FC
+ str r0, [r4]
+_081C997A:
+ adds r0, r4, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81C9958
+
+ thumb_func_start sub_81C9990
+sub_81C9990: @ 81C9990
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0x2
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ ldr r0, =gUnknown_086201A0
+ lsls r4, 2
+ adds r4, r0
+ ldr r0, [r4]
+ movs r1, 0x1
+ bl CreateLoopedTask
+ str r0, [r5, 0x4]
+ ldr r0, =sub_81C99FC
+ str r0, [r5]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81C9990
+
+ thumb_func_start sub_81C99C0
+sub_81C99C0: @ 81C99C0
+ push {lr}
+ movs r0, 0x2
+ bl GetSubstructPtr
+ ldr r0, [r0]
+ bl _call_via_r0
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81C99C0
+
+ thumb_func_start sub_81C99D4
+sub_81C99D4: @ 81C99D4
+ push {r4,lr}
+ movs r0, 0x2
+ bl GetSubstructPtr
+ adds r4, r0, 0
+ bl sub_81CA7F4
+ ldrb r0, [r4, 0x8]
+ bl RemoveWindow
+ bl sub_81C9FEC
+ bl sub_81CA994
+ movs r0, 0x2
+ bl FreePokenavSubstruct
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81C99D4
+
+ thumb_func_start sub_81C99FC
+sub_81C99FC: @ 81C99FC
+ push {lr}
+ movs r0, 0x2
+ bl GetSubstructPtr
+ ldr r0, [r0, 0x4]
+ bl IsLoopedTaskActive
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81C99FC
+
+ thumb_func_start sub_81C9A10
+sub_81C9A10: @ 81C9A10
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ movs r0, 0x2
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ cmp r4, 0x9
+ bls _081C9A24
+ b _081C9C60
+_081C9A24:
+ lsls r0, r4, 2
+ ldr r1, =_081C9A34
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_081C9A34:
+ .4byte _081C9A5C
+ .4byte _081C9AEC
+ .4byte _081C9B30
+ .4byte _081C9B88
+ .4byte _081C9B9E
+ .4byte _081C9BA4
+ .4byte _081C9BB6
+ .4byte _081C9BC0
+ .4byte _081C9C0E
+ .4byte _081C9C4C
+_081C9A5C:
+ ldr r0, =gUnknown_08620194
+ movs r1, 0x3
+ bl InitBgTemplates
+ ldr r1, =gPokenavMessageBox_Gfx
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x1
+ movs r2, 0
+ movs r3, 0
+ bl decompress_and_copy_tile_data_to_vram
+ adds r1, r5, 0
+ adds r1, 0x8C
+ movs r0, 0x1
+ bl SetBgTilemapBuffer
+ ldr r1, =gPokenavMessageBox_Tilemap
+ movs r0, 0x1
+ movs r2, 0
+ movs r3, 0
+ bl CopyToBgTilemapBuffer
+ movs r0, 0x1
+ bl CopyBgTilemapBufferToVram
+ ldr r0, =gPokenavMessageBox_Pal
+ movs r1, 0x10
+ movs r2, 0x20
+ bl CopyPaletteIntoBufferUnfaded
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ movs r0, 0x2
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0x2
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ movs r0, 0x3
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0x3
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+_081C9AD6:
+ movs r0, 0
+ b _081C9C62
+ .pool
+_081C9AEC:
+ bl free_temp_tile_data_buffers_if_possible
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ beq _081C9AFA
+ b _081C9C5C
+_081C9AFA:
+ ldr r1, =gUnknown_0861FD6C
+ str r0, [sp]
+ movs r0, 0x2
+ movs r2, 0
+ movs r3, 0
+ bl decompress_and_copy_tile_data_to_vram
+ ldr r1, =gUnknown_0861FFF4
+ movs r0, 0x1
+ str r0, [sp]
+ movs r0, 0x2
+ movs r2, 0
+ movs r3, 0
+ bl decompress_and_copy_tile_data_to_vram
+ ldr r0, =gUnknown_0861FD4C
+ movs r1, 0x20
+ movs r2, 0x20
+ bl CopyPaletteIntoBufferUnfaded
+ b _081C9AD6
+ .pool
+_081C9B30:
+ bl free_temp_tile_data_buffers_if_possible
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ beq _081C9B3E
+ b _081C9C5C
+_081C9B3E:
+ ldr r1, =gUnknown_0861FC98
+ str r0, [sp]
+ movs r0, 0x3
+ movs r2, 0
+ movs r3, 0
+ bl decompress_and_copy_tile_data_to_vram
+ ldr r1, =gUnknown_0861FCAC
+ movs r0, 0x1
+ str r0, [sp]
+ movs r0, 0x3
+ movs r2, 0
+ movs r3, 0
+ bl decompress_and_copy_tile_data_to_vram
+ ldr r0, =gUnknown_0861FC78
+ movs r1, 0x30
+ movs r2, 0x20
+ bl CopyPaletteIntoBufferUnfaded
+ bl sub_81C9894
+ cmp r0, 0x3
+ beq _081C9B76
+ bl sub_81C9894
+ cmp r0, 0x4
+ bne _081C9AD6
+_081C9B76:
+ bl sub_81CA850
+ b _081C9AD6
+ .pool
+_081C9B88:
+ bl free_temp_tile_data_buffers_if_possible
+ lsls r0, 24
+ cmp r0, 0
+ bne _081C9C5C
+ bl sub_81CA6E0
+ bl sub_81CA7D4
+_081C9B9A:
+ movs r0, 0x1
+ b _081C9C62
+_081C9B9E:
+ bl sub_81C9FC4
+ b _081C9B9A
+_081C9BA4:
+ bl sub_81CA714
+ bl sub_81CA02C
+ bl sub_81CA640
+ bl sub_81CA0C8
+ b _081C9AD6
+_081C9BB6:
+ bl sub_81CA7C4
+ cmp r0, 0
+ bne _081C9C5C
+ b _081C9B9A
+_081C9BC0:
+ movs r0, 0x1
+ bl ShowBg
+ movs r0, 0x2
+ bl ShowBg
+ movs r0, 0x3
+ bl ShowBg
+ ldrb r0, [r5, 0xD]
+ cmp r0, 0
+ beq _081C9BE0
+ movs r0, 0x1
+ bl sub_81C7AC0
+ b _081C9BEC
+_081C9BE0:
+ movs r0, 0x6E
+ bl PlaySE
+ movs r0, 0x3
+ bl sub_81C7AC0
+_081C9BEC:
+ bl sub_81C9894
+ cmp r0, 0x3
+ beq _081C9BFE
+ cmp r0, 0x4
+ bne _081C9C06
+ movs r0, 0x7
+ bl LoadLeftHeaderGfxForIndex
+_081C9BFE:
+ movs r0, 0x1
+ bl LoadLeftHeaderGfxForIndex
+ b _081C9AD6
+_081C9C06:
+ movs r0, 0
+ bl LoadLeftHeaderGfxForIndex
+ b _081C9AD6
+_081C9C0E:
+ bl IsPaletteFadeActive
+ cmp r0, 0
+ bne _081C9C5C
+ bl sub_81C9894
+ cmp r0, 0x3
+ beq _081C9C2C
+ cmp r0, 0x4
+ bne _081C9C38
+ movs r0, 0x7
+ movs r1, 0
+ movs r2, 0
+ bl sub_81C7FA0
+_081C9C2C:
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl sub_81C7FA0
+ b _081C9C42
+_081C9C38:
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0
+ bl sub_81C7FA0
+_081C9C42:
+ bl sub_81CA20C
+ bl titlescreen_0
+ b _081C9B9A
+_081C9C4C:
+ bl sub_81CA324
+ cmp r0, 0
+ bne _081C9C5C
+ bl sub_81C8010
+ cmp r0, 0
+ beq _081C9C60
+_081C9C5C:
+ movs r0, 0x2
+ b _081C9C62
+_081C9C60:
+ movs r0, 0x4
+_081C9C62:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81C9A10
+
+ thumb_func_start sub_81C9C6C
+sub_81C9C6C: @ 81C9C6C
+ push {lr}
+ cmp r0, 0
+ beq _081C9C78
+ cmp r0, 0x1
+ beq _081C9C8E
+ b _081C9CA2
+_081C9C78:
+ bl sub_81CAA3C
+ bl sub_81CA278
+ bl sub_81CA714
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0
+ b _081C9CA4
+_081C9C8E:
+ bl sub_81CA324
+ cmp r0, 0
+ bne _081C9C9E
+ bl sub_81CA7C4
+ cmp r0, 0
+ beq _081C9CA2
+_081C9C9E:
+ movs r0, 0x2
+ b _081C9CA4
+_081C9CA2:
+ movs r0, 0x4
+_081C9CA4:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81C9C6C
+
+ thumb_func_start sub_81C9CA8
+sub_81C9CA8: @ 81C9CA8
+ push {lr}
+ cmp r0, 0x1
+ beq _081C9CDC
+ cmp r0, 0x1
+ bgt _081C9CB8
+ cmp r0, 0
+ beq _081C9CC2
+ b _081C9D3C
+_081C9CB8:
+ cmp r0, 0x2
+ beq _081C9CFA
+ cmp r0, 0x3
+ beq _081C9D14
+ b _081C9D3C
+_081C9CC2:
+ bl sub_81CA9C8
+ bl sub_81CA2DC
+ movs r0, 0
+ movs r1, 0
+ bl sub_81C7FC4
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0
+ b _081C9D3E
+_081C9CDC:
+ bl sub_81CA324
+ cmp r0, 0
+ bne _081C9D34
+ bl sub_81C8010
+ cmp r0, 0
+ bne _081C9D34
+ bl sub_81CA0C8
+ movs r0, 0x1
+ bl LoadLeftHeaderGfxForIndex
+ movs r0, 0
+ b _081C9D3E
+_081C9CFA:
+ bl sub_81CA20C
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl sub_81C7FA0
+ bl sub_81CA818
+ bl sub_81CA714
+ movs r0, 0
+ b _081C9D3E
+_081C9D14:
+ bl sub_81CA324
+ cmp r0, 0
+ bne _081C9D34
+ bl sub_81C8010
+ cmp r0, 0
+ bne _081C9D34
+ bl sub_81CA89C
+ cmp r0, 0
+ bne _081C9D34
+ bl sub_81CA7C4
+ cmp r0, 0
+ beq _081C9D38
+_081C9D34:
+ movs r0, 0x2
+ b _081C9D3E
+_081C9D38:
+ bl sub_81CA9D8
+_081C9D3C:
+ movs r0, 0x4
+_081C9D3E:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81C9CA8
+
+ thumb_func_start sub_81C9D44
+sub_81C9D44: @ 81C9D44
+ push {lr}
+ cmp r0, 0x1
+ beq _081C9D72
+ cmp r0, 0x1
+ bgt _081C9D54
+ cmp r0, 0
+ beq _081C9D5E
+ b _081C9DD2
+_081C9D54:
+ cmp r0, 0x2
+ beq _081C9D90
+ cmp r0, 0x3
+ beq _081C9DAA
+ b _081C9DD2
+_081C9D5E:
+ bl sub_81CA9C8
+ bl sub_81CA2DC
+ movs r0, 0x1
+ movs r1, 0
+ bl sub_81C7FC4
+ movs r0, 0
+ b _081C9DD4
+_081C9D72:
+ bl sub_81CA324
+ cmp r0, 0
+ bne _081C9DCA
+ bl sub_81C8010
+ cmp r0, 0
+ bne _081C9DCA
+ bl sub_81CA0C8
+ movs r0, 0
+ bl LoadLeftHeaderGfxForIndex
+ movs r0, 0
+ b _081C9DD4
+_081C9D90:
+ bl sub_81CA20C
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0
+ bl sub_81C7FA0
+ bl sub_81CA864
+ bl sub_81CA714
+ movs r0, 0
+ b _081C9DD4
+_081C9DAA:
+ bl sub_81CA324
+ cmp r0, 0
+ bne _081C9DCA
+ bl sub_81C8010
+ cmp r0, 0
+ bne _081C9DCA
+ bl sub_81CA89C
+ cmp r0, 0
+ bne _081C9DCA
+ bl sub_81CA7C4
+ cmp r0, 0
+ beq _081C9DCE
+_081C9DCA:
+ movs r0, 0x2
+ b _081C9DD4
+_081C9DCE:
+ bl sub_81CA9D8
+_081C9DD2:
+ movs r0, 0x4
+_081C9DD4:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81C9D44
+
+ thumb_func_start sub_81C9DD8
+sub_81C9DD8: @ 81C9DD8
+ push {lr}
+ cmp r0, 0x1
+ beq _081C9E04
+ cmp r0, 0x1
+ bgt _081C9DE8
+ cmp r0, 0
+ beq _081C9DF2
+ b _081C9E50
+_081C9DE8:
+ cmp r0, 0x2
+ beq _081C9E1A
+ cmp r0, 0x3
+ beq _081C9E30
+ b _081C9E50
+_081C9DF2:
+ bl sub_81CA9C8
+ bl sub_81CA2DC
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0
+ b _081C9E52
+_081C9E04:
+ bl sub_81CA324
+ cmp r0, 0
+ bne _081C9E48
+ movs r0, 0x7
+ bl LoadLeftHeaderGfxForIndex
+ bl sub_81CA0C8
+ movs r0, 0
+ b _081C9E52
+_081C9E1A:
+ bl sub_81CA20C
+ movs r0, 0x7
+ movs r1, 0
+ movs r2, 0
+ bl sub_81C7FA0
+ bl sub_81CA714
+ movs r0, 0
+ b _081C9E52
+_081C9E30:
+ bl sub_81CA324
+ cmp r0, 0
+ bne _081C9E48
+ bl sub_81C8010
+ cmp r0, 0
+ bne _081C9E48
+ bl sub_81CA89C
+ cmp r0, 0
+ beq _081C9E4C
+_081C9E48:
+ movs r0, 0x2
+ b _081C9E52
+_081C9E4C:
+ bl sub_81CA9D8
+_081C9E50:
+ movs r0, 0x4
+_081C9E52:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81C9DD8
+
+ thumb_func_start sub_81C9E58
+sub_81C9E58: @ 81C9E58
+ push {lr}
+ cmp r0, 0x1
+ beq _081C9E86
+ cmp r0, 0x1
+ bgt _081C9E68
+ cmp r0, 0
+ beq _081C9E72
+ b _081C9EC2
+_081C9E68:
+ cmp r0, 0x2
+ beq _081C9E9E
+ cmp r0, 0x3
+ beq _081C9EAA
+ b _081C9EC2
+_081C9E72:
+ bl sub_81CA9C8
+ bl sub_81CA2DC
+ movs r0, 0x7
+ movs r1, 0
+ bl sub_81C7FC4
+ movs r0, 0
+ b _081C9EC4
+_081C9E86:
+ bl sub_81CA324
+ cmp r0, 0
+ bne _081C9EBA
+ bl sub_81C8010
+ cmp r0, 0
+ bne _081C9EBA
+ bl sub_81CA0C8
+ movs r0, 0
+ b _081C9EC4
+_081C9E9E:
+ bl sub_81CA20C
+ bl sub_81CA714
+ movs r0, 0
+ b _081C9EC4
+_081C9EAA:
+ bl sub_81CA324
+ cmp r0, 0
+ bne _081C9EBA
+ bl sub_81CA89C
+ cmp r0, 0
+ beq _081C9EBE
+_081C9EBA:
+ movs r0, 0x2
+ b _081C9EC4
+_081C9EBE:
+ bl sub_81CA9D8
+_081C9EC2:
+ movs r0, 0x4
+_081C9EC4:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81C9E58
+
+ thumb_func_start sub_81C9EC8
+sub_81C9EC8: @ 81C9EC8
+ push {lr}
+ cmp r0, 0
+ beq _081C9ED4
+ cmp r0, 0x1
+ beq _081C9EE2
+ b _081C9EF0
+_081C9ED4:
+ movs r0, 0x20
+ bl PlaySE
+ bl sub_81CA770
+ movs r0, 0
+ b _081C9EF2
+_081C9EE2:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ beq _081C9EF0
+ movs r0, 0x2
+ b _081C9EF2
+_081C9EF0:
+ movs r0, 0x4
+_081C9EF2:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81C9EC8
+
+ thumb_func_start sub_81C9EF8
+sub_81C9EF8: @ 81C9EF8
+ push {lr}
+ cmp r0, 0
+ beq _081C9F04
+ cmp r0, 0x1
+ beq _081C9F12
+ b _081C9F20
+_081C9F04:
+ movs r0, 0x5
+ bl PlaySE
+ bl sub_81CA714
+ movs r0, 0
+ b _081C9F22
+_081C9F12:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ beq _081C9F20
+ movs r0, 0x2
+ b _081C9F22
+_081C9F20:
+ movs r0, 0x4
+_081C9F22:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81C9EF8
+
+ thumb_func_start sub_81C9F28
+sub_81C9F28: @ 81C9F28
+ push {lr}
+ cmp r0, 0x1
+ beq _081C9F52
+ cmp r0, 0x1
+ bgt _081C9F38
+ cmp r0, 0
+ beq _081C9F42
+ b _081C9FBC
+_081C9F38:
+ cmp r0, 0x2
+ beq _081C9F96
+ cmp r0, 0x3
+ beq _081C9FB0
+ b _081C9FBC
+_081C9F42:
+ bl sub_81C98C4
+ lsls r0, 16
+ lsrs r0, 16
+ bl sub_81C7BA4
+ movs r0, 0
+ b _081C9FBE
+_081C9F52:
+ bl IsDma3ManagerBusyWithBgCopy_
+ cmp r0, 0
+ bne _081C9FB8
+ bl sub_81C7880
+ bl sub_81CA9C8
+ bl sub_81CA2DC
+ bl sub_81C9894
+ cmp r0, 0x3
+ beq _081C9F7A
+ cmp r0, 0x4
+ bne _081C9F84
+ movs r0, 0x7
+ movs r1, 0
+ bl sub_81C7FC4
+_081C9F7A:
+ movs r0, 0x1
+ movs r1, 0
+ bl sub_81C7FC4
+ b _081C9F8C
+_081C9F84:
+ movs r0, 0
+ movs r1, 0
+ bl sub_81C7FC4
+_081C9F8C:
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0
+ b _081C9FBE
+_081C9F96:
+ bl sub_81CA324
+ cmp r0, 0
+ bne _081C9FB8
+ bl sub_81C8010
+ cmp r0, 0
+ bne _081C9FB8
+ movs r0, 0
+ bl sub_81C7AC0
+ movs r0, 0
+ b _081C9FBE
+_081C9FB0:
+ bl IsPaletteFadeActive
+ cmp r0, 0
+ beq _081C9FBC
+_081C9FB8:
+ movs r0, 0x2
+ b _081C9FBE
+_081C9FBC:
+ movs r0, 0x4
+_081C9FBE:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81C9F28
+
+ thumb_func_start sub_81C9FC4
+sub_81C9FC4: @ 81C9FC4
+ push {r4,r5,lr}
+ movs r5, 0
+ ldr r4, =gUnknown_086201C4
+_081C9FCA:
+ adds r0, r4, 0
+ bl LoadCompressedSpriteSheet
+ adds r4, 0x8
+ adds r5, 0x1
+ cmp r5, 0x1
+ bls _081C9FCA
+ ldr r0, =gUnknown_086201D4
+ bl Pokenav_AllocAndLoadPalettes
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81C9FC4
+
+ thumb_func_start sub_81C9FEC
+sub_81C9FEC: @ 81C9FEC
+ push {lr}
+ movs r0, 0x3
+ bl FreeSpriteTilesByTag
+ movs r0, 0x1
+ bl FreeSpriteTilesByTag
+ movs r0, 0x4
+ bl FreeSpritePaletteByTag
+ movs r0, 0x5
+ bl FreeSpritePaletteByTag
+ movs r0, 0x6
+ bl FreeSpritePaletteByTag
+ movs r0, 0x7
+ bl FreeSpritePaletteByTag
+ movs r0, 0x8
+ bl FreeSpritePaletteByTag
+ movs r0, 0x3
+ bl FreeSpritePaletteByTag
+ bl sub_81CA094
+ bl sub_81CA698
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81C9FEC
+
+ thumb_func_start sub_81CA02C
+sub_81CA02C: @ 81CA02C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ movs r0, 0x2
+ bl GetSubstructPtr
+ movs r2, 0
+ adds r0, 0x2C
+ mov r8, r0
+_081CA03E:
+ movs r4, 0
+ lsls r0, r2, 2
+ lsls r1, r2, 4
+ adds r7, r2, 0x1
+ adds r0, r2
+ lsls r0, 18
+ movs r2, 0xA0
+ lsls r2, 14
+ adds r5, r0, r2
+ mov r0, r8
+ adds r6, r1, r0
+_081CA054:
+ ldr r0, =gUnknown_0862034C
+ movs r1, 0x8C
+ asrs r2, r5, 16
+ movs r3, 0x3
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, =gSprites
+ adds r1, r0
+ stm r6!, {r1}
+ lsls r0, r4, 5
+ strh r0, [r1, 0x24]
+ adds r4, 0x1
+ cmp r4, 0x3
+ ble _081CA054
+ adds r2, r7, 0
+ cmp r2, 0x5
+ ble _081CA03E
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CA02C
+
+ thumb_func_start sub_81CA094
+sub_81CA094: @ 81CA094
+ push {r4-r7,lr}
+ movs r0, 0x2
+ bl GetSubstructPtr
+ movs r1, 0
+ adds r7, r0, 0
+ adds r7, 0x2C
+_081CA0A2:
+ lsls r0, r1, 4
+ adds r6, r1, 0x1
+ adds r4, r0, r7
+ movs r5, 0x3
+_081CA0AA:
+ ldr r0, [r4]
+ bl FreeSpriteOamMatrix
+ ldm r4!, {r0}
+ bl DestroySprite
+ subs r5, 0x1
+ cmp r5, 0
+ bge _081CA0AA
+ adds r1, r6, 0
+ cmp r1, 0x5
+ ble _081CA0A2
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CA094
+
+ thumb_func_start sub_81CA0C8
+sub_81CA0C8: @ 81CA0C8
+ push {lr}
+ bl sub_81C9894
+ lsls r2, r0, 3
+ subs r2, r0
+ lsls r2, 2
+ ldr r1, =gUnknown_08620244
+ adds r0, r2, r1
+ subs r1, 0x4
+ adds r2, r1
+ ldrh r1, [r2]
+ ldrh r2, [r2, 0x2]
+ bl sub_81CA0EC
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CA0C8
+
+ thumb_func_start sub_81CA0EC
+sub_81CA0EC: @ 81CA0EC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x18
+ adds r6, r0, 0
+ str r1, [sp, 0x14]
+ str r2, [sp]
+ movs r0, 0x2
+ bl GetSubstructPtr
+ mov r10, r0
+ movs r0, 0x3
+ bl GetSpriteTileStartByTag
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0x4]
+ movs r1, 0
+_081CA114:
+ ldr r0, [r6]
+ cmp r0, 0
+ beq _081CA1B0
+ movs r5, 0
+ lsls r2, r1, 4
+ mov r0, r10
+ adds r0, 0x2C
+ lsls r3, r1, 2
+ mov r9, r3
+ movs r4, 0x10
+ add r4, r10
+ mov r8, r4
+ adds r7, r6, 0x4
+ str r7, [sp, 0xC]
+ ldr r3, [sp, 0x14]
+ ldr r4, [sp]
+ adds r3, r4
+ str r3, [sp, 0x8]
+ adds r1, 0x1
+ str r1, [sp, 0x10]
+ adds r4, r2, r0
+_081CA13E:
+ ldr r3, [r4]
+ ldr r0, [r6]
+ ldrh r2, [r0]
+ ldr r7, [sp, 0x4]
+ adds r2, r7
+ lsls r0, r5, 3
+ adds r2, r0
+ ldr r1, =0x000003ff
+ adds r0, r1, 0
+ ands r2, r0
+ ldrh r0, [r3, 0x4]
+ ldr r7, =0xfffffc00
+ adds r1, r7, 0
+ ands r0, r1
+ orrs r0, r2
+ strh r0, [r3, 0x4]
+ ldr r0, [r6]
+ ldrh r0, [r0, 0x2]
+ adds r0, 0x4
+ lsls r0, 16
+ lsrs r0, 16
+ bl IndexOfSpritePaletteTag
+ ldr r3, [r4]
+ lsls r0, 4
+ ldrb r2, [r3, 0x5]
+ movs r1, 0xF
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r3, 0x5]
+ ldr r2, [r4]
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, [r4]
+ mov r1, sp
+ ldrh r1, [r1, 0x14]
+ strh r1, [r0, 0x22]
+ ldr r1, [r4]
+ movs r0, 0x8C
+ strh r0, [r1, 0x20]
+ ldm r4!, {r1}
+ lsls r0, r5, 5
+ strh r0, [r1, 0x24]
+ adds r5, 0x1
+ cmp r5, 0x3
+ ble _081CA13E
+ mov r1, r8
+ add r1, r9
+ movs r0, 0x1
+ b _081CA1EC
+ .pool
+_081CA1B0:
+ lsls r2, r1, 4
+ mov r0, r10
+ adds r0, 0x2C
+ lsls r3, r1, 2
+ mov r9, r3
+ movs r4, 0x10
+ add r4, r10
+ mov r8, r4
+ adds r6, 0x4
+ str r6, [sp, 0xC]
+ ldr r7, [sp, 0x14]
+ ldr r3, [sp]
+ adds r7, r3
+ str r7, [sp, 0x8]
+ adds r1, 0x1
+ str r1, [sp, 0x10]
+ movs r3, 0x4
+ adds r2, r0
+ movs r5, 0x3
+_081CA1D6:
+ ldm r2!, {r1}
+ adds r1, 0x3E
+ ldrb r0, [r1]
+ orrs r0, r3
+ strb r0, [r1]
+ subs r5, 0x1
+ cmp r5, 0
+ bge _081CA1D6
+ mov r1, r8
+ add r1, r9
+ movs r0, 0
+_081CA1EC:
+ str r0, [r1]
+ ldr r6, [sp, 0xC]
+ ldr r4, [sp, 0x8]
+ str r4, [sp, 0x14]
+ ldr r1, [sp, 0x10]
+ cmp r1, 0x5
+ ble _081CA114
+ add sp, 0x18
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CA0EC
+
+ thumb_func_start sub_81CA20C
+sub_81CA20C: @ 81CA20C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ movs r0, 0x2
+ bl GetSubstructPtr
+ adds r6, r0, 0
+ bl sub_81C98A4
+ mov r8, r0
+ movs r7, 0
+ movs r5, 0
+ adds r4, r6, 0
+ adds r4, 0x2C
+_081CA228:
+ lsls r0, r5, 2
+ adds r1, r6, 0
+ adds r1, 0x10
+ adds r1, r0
+ ldr r0, [r1]
+ cmp r0, 0
+ beq _081CA25C
+ adds r0, r7, 0
+ adds r7, 0x1
+ cmp r0, r8
+ bne _081CA244
+ movs r2, 0x82
+ strb r5, [r6, 0xB]
+ b _081CA246
+_081CA244:
+ movs r2, 0x8C
+_081CA246:
+ adds r0, r4, 0
+ movs r1, 0x80
+ lsls r1, 1
+ movs r3, 0xC
+ bl sub_81CA35C
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_81CA448
+ b _081CA264
+_081CA25C:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_81CA448
+_081CA264:
+ adds r4, 0x10
+ adds r5, 0x1
+ cmp r5, 0x5
+ ble _081CA228
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CA20C
+
+ thumb_func_start sub_81CA278
+sub_81CA278: @ 81CA278
+ push {r4,r5,lr}
+ movs r0, 0x2
+ bl GetSubstructPtr
+ adds r4, r0, 0
+ bl sub_81C98A4
+ adds r3, r0, 0
+ movs r2, 0
+ movs r5, 0
+ ldr r0, [r4, 0x10]
+ cmp r0, 0
+ beq _081CA298
+ cmp r5, r3
+ beq _081CA2B2
+_081CA296:
+ adds r5, 0x1
+_081CA298:
+ adds r2, 0x1
+ cmp r2, 0x5
+ bgt _081CA2B2
+ lsls r0, r2, 2
+ adds r1, r4, 0
+ adds r1, 0x10
+ adds r1, r0
+ ldr r0, [r1]
+ cmp r0, 0
+ beq _081CA298
+ cmp r5, r3
+ bne _081CA296
+ adds r5, r2, 0
+_081CA2B2:
+ ldrb r0, [r4, 0xB]
+ lsls r0, 4
+ adds r0, 0x2C
+ adds r0, r4, r0
+ movs r1, 0x82
+ movs r2, 0x8C
+ movs r3, 0x4
+ bl sub_81CA35C
+ lsls r0, r5, 4
+ adds r0, 0x2C
+ adds r0, r4, r0
+ movs r1, 0x8C
+ movs r2, 0x82
+ movs r3, 0x4
+ bl sub_81CA35C
+ strb r5, [r4, 0xB]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CA278
+
+ thumb_func_start sub_81CA2DC
+sub_81CA2DC: @ 81CA2DC
+ push {r4-r6,lr}
+ movs r0, 0x2
+ bl GetSubstructPtr
+ adds r6, r0, 0
+ movs r5, 0
+ adds r4, r6, 0
+ adds r4, 0x2C
+_081CA2EC:
+ lsls r0, r5, 2
+ adds r1, r6, 0
+ adds r1, 0x10
+ adds r1, r0
+ ldr r0, [r1]
+ cmp r0, 0
+ beq _081CA316
+ ldrb r0, [r6, 0xB]
+ cmp r0, r5
+ beq _081CA310
+ adds r0, r4, 0
+ movs r1, 0x8C
+ movs r2, 0x80
+ lsls r2, 1
+ movs r3, 0x8
+ bl sub_81CA35C
+ b _081CA316
+_081CA310:
+ adds r0, r4, 0
+ bl sub_81CA3B4
+_081CA316:
+ adds r4, 0x10
+ adds r5, 0x1
+ cmp r5, 0x5
+ ble _081CA2EC
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CA2DC
+
+ thumb_func_start sub_81CA324
+sub_81CA324: @ 81CA324
+ push {r4,lr}
+ movs r0, 0x2
+ bl GetSubstructPtr
+ adds r3, r0, 0
+ movs r2, 0
+ ldr r4, =SpriteCallbackDummy
+ adds r1, r3, 0
+ adds r1, 0x2C
+_081CA336:
+ ldr r0, [r1]
+ ldr r0, [r0, 0x1C]
+ cmp r0, r4
+ bne _081CA354
+ adds r1, 0x10
+ adds r2, 0x1
+ cmp r2, 0x5
+ ble _081CA336
+ ldrb r0, [r3, 0xC]
+ cmp r0, 0
+ bne _081CA354
+ movs r0, 0
+ b _081CA356
+ .pool
+_081CA354:
+ movs r0, 0x1
+_081CA356:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CA324
+
+ thumb_func_start sub_81CA35C
+sub_81CA35C: @ 81CA35C
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ mov r9, r2
+ adds r6, r3, 0
+ ldr r0, =sub_81CA474
+ mov r8, r0
+ subs r0, r2, r5
+ lsls r0, 4
+ adds r1, r6, 0
+ bl __divsi3
+ adds r3, r0, 0
+ movs r1, 0x3
+ lsls r2, r5, 4
+_081CA380:
+ ldr r0, [r4]
+ strh r5, [r0, 0x20]
+ ldr r0, [r4]
+ strh r6, [r0, 0x2E]
+ ldr r0, [r4]
+ strh r3, [r0, 0x30]
+ ldr r0, [r4]
+ strh r2, [r0, 0x32]
+ ldr r0, [r4]
+ mov r7, r9
+ strh r7, [r0, 0x3C]
+ ldm r4!, {r0}
+ mov r7, r8
+ str r7, [r0, 0x1C]
+ subs r1, 0x1
+ cmp r1, 0
+ bge _081CA380
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CA35C
+
+ thumb_func_start sub_81CA3B4
+sub_81CA3B4: @ 81CA3B4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r4, r0, 0
+ movs r0, 0x2
+ bl GetSubstructPtr
+ adds r7, r0, 0
+ movs r5, 0
+ mov r8, r5
+_081CA3C8:
+ ldr r2, [r4]
+ ldrb r1, [r2, 0x1]
+ movs r3, 0xD
+ negs r3, r3
+ adds r0, r3, 0
+ ands r1, r0
+ movs r0, 0x4
+ orrs r1, r0
+ strb r1, [r2, 0x1]
+ ldr r2, [r4]
+ ldrb r0, [r2, 0x1]
+ movs r1, 0x3
+ orrs r0, r1
+ strb r0, [r2, 0x1]
+ ldr r1, [r4]
+ ldr r0, =sub_81CA4AC
+ str r0, [r1, 0x1C]
+ movs r6, 0x8
+ strh r6, [r1, 0x2E]
+ ldr r0, [r4]
+ mov r1, r8
+ strh r1, [r0, 0x30]
+ ldr r0, [r4]
+ strh r5, [r0, 0x3C]
+ ldr r0, [r4]
+ bl InitSpriteAffineAnim
+ ldm r4!, {r0}
+ movs r1, 0
+ bl StartSpriteAffineAnim
+ adds r5, 0x1
+ cmp r5, 0x3
+ ble _081CA3C8
+ movs r0, 0x52
+ movs r1, 0x10
+ bl SetGpuReg
+ ldr r0, =sub_81CA580
+ movs r1, 0x3
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ strh r6, [r1, 0x8]
+ ldrb r0, [r7, 0xC]
+ adds r0, 0x1
+ strb r0, [r7, 0xC]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CA3B4
+
+ thumb_func_start sub_81CA448
+sub_81CA448: @ 81CA448
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ movs r0, 0x1
+ ands r1, r0
+ lsls r4, r1, 2
+ movs r6, 0x5
+ negs r6, r6
+ movs r3, 0x3
+_081CA458:
+ ldm r5!, {r0}
+ adds r0, 0x3E
+ ldrb r2, [r0]
+ adds r1, r6, 0
+ ands r1, r2
+ orrs r1, r4
+ strb r1, [r0]
+ subs r3, 0x1
+ cmp r3, 0
+ bge _081CA458
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CA448
+
+ thumb_func_start sub_81CA474
+sub_81CA474: @ 81CA474
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x2E]
+ subs r0, 0x1
+ strh r0, [r2, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ beq _081CA49A
+ ldrh r0, [r2, 0x30]
+ ldrh r1, [r2, 0x32]
+ adds r0, r1
+ strh r0, [r2, 0x32]
+ lsls r0, 16
+ asrs r0, 20
+ strh r0, [r2, 0x20]
+ b _081CA4A2
+_081CA49A:
+ ldrh r0, [r2, 0x3C]
+ strh r0, [r2, 0x20]
+ ldr r0, =SpriteCallbackDummy
+ str r0, [r2, 0x1C]
+_081CA4A2:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CA474
+
+ thumb_func_start sub_81CA4AC
+sub_81CA4AC: @ 81CA4AC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x2E]
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _081CA574
+ movs r0, 0x30
+ ldrsh r5, [r4, r0]
+ cmp r5, 0
+ bne _081CA4E2
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x20]
+ strh r5, [r4, 0x24]
+ b _081CA578
+_081CA4E2:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x10
+ strh r0, [r4, 0x32]
+ movs r2, 0x32
+ ldrsh r0, [r4, r2]
+ asrs r1, r0, 3
+ adds r0, r1, 0
+ subs r0, 0x20
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r1, r0, 1
+ movs r2, 0x3C
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x1
+ beq _081CA518
+ cmp r0, 0x1
+ bgt _081CA50A
+ cmp r0, 0
+ beq _081CA514
+ b _081CA526
+_081CA50A:
+ cmp r0, 0x2
+ beq _081CA51C
+ cmp r0, 0x3
+ beq _081CA520
+ b _081CA526
+_081CA514:
+ negs r1, r1
+ b _081CA520
+_081CA518:
+ negs r0, r1
+ b _081CA524
+_081CA51C:
+ strh r1, [r4, 0x24]
+ b _081CA526
+_081CA520:
+ lsls r0, r1, 1
+ adds r0, r1
+_081CA524:
+ strh r0, [r4, 0x24]
+_081CA526:
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _081CA578
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldrb r0, [r4, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ bl FreeOamMatrix
+ ldrb r1, [r4, 0x1]
+ lsrs r1, 6
+ ldrb r2, [r4, 0x3]
+ lsrs r2, 6
+ adds r0, r4, 0
+ movs r3, 0
+ bl CalcCenterToCornerVec
+ ldrb r1, [r4, 0x1]
+ movs r0, 0x4
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0xD
+ negs r1, r1
+ ands r0, r1
+ strb r0, [r4, 0x1]
+ ldr r0, =SpriteCallbackDummy
+ str r0, [r4, 0x1C]
+ b _081CA578
+ .pool
+_081CA574:
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x2E]
+_081CA578:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CA4AC
+
+ thumb_func_start sub_81CA580
+sub_81CA580: @ 81CA580
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, =gTasks + 0x8
+ adds r4, r0, r1
+ ldrh r0, [r4]
+ movs r1, 0
+ ldrsh r2, [r4, r1]
+ cmp r2, 0
+ bne _081CA634
+ movs r0, 0x2
+ ldrsh r1, [r4, r0]
+ cmp r1, 0
+ beq _081CA5AC
+ cmp r1, 0x1
+ beq _081CA5CC
+ b _081CA638
+ .pool
+_081CA5AC:
+ movs r0, 0x10
+ strh r0, [r4, 0x4]
+ strh r2, [r4, 0x6]
+ movs r1, 0xFC
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0x10
+ bl SetGpuReg
+ ldrh r0, [r4, 0x2]
+ adds r0, 0x1
+ strh r0, [r4, 0x2]
+ b _081CA638
+_081CA5CC:
+ ldrh r0, [r4, 0x8]
+ ands r1, r0
+ cmp r1, 0
+ beq _081CA5E4
+ ldrh r0, [r4, 0x4]
+ subs r0, 0x3
+ strh r0, [r4, 0x4]
+ lsls r0, 16
+ cmp r0, 0
+ bge _081CA5F6
+ strh r2, [r4, 0x4]
+ b _081CA5F6
+_081CA5E4:
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x3
+ strh r0, [r4, 0x6]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ ble _081CA5F6
+ movs r0, 0x10
+ strh r0, [r4, 0x6]
+_081CA5F6:
+ ldrh r1, [r4, 0x6]
+ lsls r1, 8
+ ldrh r0, [r4, 0x4]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xC
+ bne _081CA638
+ movs r0, 0x2
+ bl GetSubstructPtr
+ ldrb r1, [r0, 0xC]
+ subs r1, 0x1
+ strb r1, [r0, 0xC]
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ adds r0, r5, 0
+ bl DestroyTask
+ b _081CA638
+_081CA634:
+ subs r0, 0x1
+ strh r0, [r4]
+_081CA638:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CA580
+
+ thumb_func_start sub_81CA640
+sub_81CA640: @ 81CA640
+ push {r4,lr}
+ movs r0, 0x2
+ bl GetSubstructPtr
+ adds r4, r0, 0
+ ldr r0, =gUnknown_0862036C
+ movs r1, 0x10
+ movs r2, 0x60
+ movs r3, 0x4
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, =gSprites
+ adds r1, r0
+ str r1, [r4, 0x28]
+ bl sub_81C98D4
+ cmp r0, 0
+ beq _081CA684
+ ldr r1, [r4, 0x28]
+ ldr r0, =sub_81CA6AC
+ str r0, [r1, 0x1C]
+ b _081CA690
+ .pool
+_081CA684:
+ ldr r0, [r4, 0x28]
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+_081CA690:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CA640
+
+ thumb_func_start sub_81CA698
+sub_81CA698: @ 81CA698
+ push {lr}
+ movs r0, 0x2
+ bl GetSubstructPtr
+ ldr r0, [r0, 0x28]
+ bl DestroySprite
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CA698
+
+ thumb_func_start sub_81CA6AC
+sub_81CA6AC: @ 81CA6AC
+ push {lr}
+ adds r3, r0, 0
+ ldrh r0, [r3, 0x2E]
+ adds r0, 0x1
+ strh r0, [r3, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ ble _081CA6DA
+ movs r0, 0
+ strh r0, [r3, 0x2E]
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+_081CA6DA:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CA6AC
+
+ thumb_func_start sub_81CA6E0
+sub_81CA6E0: @ 81CA6E0
+ push {r4,lr}
+ movs r0, 0x2
+ bl GetSubstructPtr
+ adds r4, r0, 0
+ ldr r0, =gUnknown_086202CC
+ bl AddWindow
+ strh r0, [r4, 0x8]
+ lsls r0, 24
+ lsrs r0, 24
+ bl PutWindowTilemap
+ ldrb r0, [r4, 0x8]
+ movs r1, 0x66
+ bl FillWindowPixelBuffer
+ ldrb r0, [r4, 0x8]
+ movs r1, 0x3
+ bl CopyWindowToVram
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CA6E0
+
+ thumb_func_start sub_81CA714
+sub_81CA714: @ 81CA714
+ push {r4-r6,lr}
+ sub sp, 0xC
+ movs r0, 0x2
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ bl sub_81C98B4
+ ldr r1, =gUnknown_086202D4
+ lsls r0, 2
+ adds r0, r1
+ ldr r6, [r0]
+ movs r2, 0x1
+ negs r2, r2
+ movs r0, 0x1
+ adds r1, r6, 0
+ bl GetStringWidth
+ adds r4, r0, 0
+ ldrb r0, [r5, 0x8]
+ movs r1, 0x66
+ bl FillWindowPixelBuffer
+ ldrb r0, [r5, 0x8]
+ movs r2, 0xC0
+ subs r2, r4
+ lsrs r2, 1
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r1, =gUnknown_0862030C
+ str r1, [sp]
+ movs r1, 0
+ str r1, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r1, 0x1
+ movs r3, 0x1
+ bl AddTextPrinterParameterized3
+ add sp, 0xC
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CA714
+
+ thumb_func_start sub_81CA770
+sub_81CA770: @ 81CA770
+ push {r4-r6,lr}
+ sub sp, 0xC
+ movs r0, 0x2
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ ldr r6, =gText_NoRibbonWinners
+ movs r2, 0x1
+ negs r2, r2
+ movs r0, 0x1
+ adds r1, r6, 0
+ bl GetStringWidth
+ adds r4, r0, 0
+ ldrb r0, [r5, 0x8]
+ movs r1, 0x66
+ bl FillWindowPixelBuffer
+ ldrb r0, [r5, 0x8]
+ movs r2, 0xC0
+ subs r2, r4
+ lsrs r2, 1
+ lsls r2, 24
+ lsrs r2, 24
+ ldr r1, =gUnknown_0862030F
+ str r1, [sp]
+ movs r1, 0
+ str r1, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r1, 0x1
+ movs r3, 0x1
+ bl AddTextPrinterParameterized3
+ add sp, 0xC
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CA770
+
+ thumb_func_start sub_81CA7C4
+sub_81CA7C4: @ 81CA7C4
+ push {lr}
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CA7C4
+
+ thumb_func_start sub_81CA7D4
+sub_81CA7D4: @ 81CA7D4
+ push {r4,lr}
+ movs r0, 0x2
+ bl GetSubstructPtr
+ adds r4, r0, 0
+ ldr r0, =sub_81CA808
+ movs r1, 0x2
+ bl CreateTask
+ strb r0, [r4, 0xA]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CA7D4
+
+ thumb_func_start sub_81CA7F4
+sub_81CA7F4: @ 81CA7F4
+ push {lr}
+ movs r0, 0x2
+ bl GetSubstructPtr
+ ldrb r0, [r0, 0xA]
+ bl DestroyTask
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CA7F4
+
+ thumb_func_start sub_81CA808
+sub_81CA808: @ 81CA808
+ push {lr}
+ movs r0, 0x3
+ movs r1, 0x80
+ movs r2, 0x1
+ bl ChangeBgX
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CA808
+
+ thumb_func_start sub_81CA818
+sub_81CA818: @ 81CA818
+ push {r4,r5,lr}
+ ldr r0, =sub_81CA8B0
+ movs r1, 0x3
+ bl CreateTask
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r5, =gUnknown_0861FC78 + 2
+ adds r0, r4, 0
+ movs r1, 0x1
+ adds r2, r5, 0
+ bl SetWordTaskArg
+ adds r5, 0xC
+ adds r0, r4, 0
+ movs r1, 0x3
+ adds r2, r5, 0
+ bl SetWordTaskArg
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CA818
+
+ thumb_func_start sub_81CA850
+sub_81CA850: @ 81CA850
+ push {lr}
+ ldr r0, =gUnknown_0861FC78 + 0xE
+ movs r1, 0x31
+ movs r2, 0x4
+ bl CopyPaletteIntoBufferUnfaded
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CA850
+
+ thumb_func_start sub_81CA864
+sub_81CA864: @ 81CA864
+ push {r4,r5,lr}
+ ldr r0, =sub_81CA8B0
+ movs r1, 0x3
+ bl CreateTask
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r5, =gUnknown_0861FC78 + 0xE
+ adds r0, r4, 0
+ movs r1, 0x1
+ adds r2, r5, 0
+ bl SetWordTaskArg
+ subs r5, 0xC
+ adds r0, r4, 0
+ movs r1, 0x3
+ adds r2, r5, 0
+ bl SetWordTaskArg
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CA864
+
+ thumb_func_start sub_81CA89C
+sub_81CA89C: @ 81CA89C
+ push {lr}
+ ldr r0, =sub_81CA8B0
+ bl FuncIsActiveTask
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CA89C
+
+ thumb_func_start sub_81CA8B0
+sub_81CA8B0: @ 81CA8B0
+ push {r4-r6,lr}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r4, r6, 2
+ adds r4, r6
+ lsls r4, 3
+ ldr r0, =gTasks + 0x8
+ adds r4, r0
+ adds r0, r6, 0
+ movs r1, 0x1
+ bl GetWordTaskArg
+ adds r5, r0, 0
+ adds r0, r6, 0
+ movs r1, 0x3
+ bl GetWordTaskArg
+ adds r1, r0, 0
+ ldrh r0, [r4]
+ adds r0, 0x1
+ strh r0, [r4]
+ lsls r0, 16
+ asrs r0, 16
+ str r0, [sp]
+ add r0, sp, 0x8
+ str r0, [sp, 0x4]
+ adds r0, r5, 0
+ movs r2, 0x2
+ movs r3, 0xC
+ bl sub_81C79BC
+ add r0, sp, 0x8
+ movs r1, 0x31
+ movs r2, 0x4
+ bl LoadPalette
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ cmp r0, 0xC
+ bne _081CA908
+ adds r0, r6, 0
+ bl DestroyTask
+_081CA908:
+ add sp, 0xC
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CA8B0
+
+ thumb_func_start sub_81CA914
+sub_81CA914: @ 81CA914
+ push {lr}
+ bl TransferPlttBuffer
+ bl LoadOam
+ bl ProcessSpriteCopyRequests
+ bl ScanlineEffect_InitHBlankDmaTransfer
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CA914
+
+ thumb_func_start titlescreen_0
+titlescreen_0: @ 81CA92C
+ push {lr}
+ movs r0, 0x50
+ movs r1, 0x90
+ bl SetGpuReg
+ movs r0, 0x54
+ movs r1, 0
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 6
+ movs r0, 0
+ bl SetGpuRegBits
+ movs r0, 0x48
+ movs r1, 0x3F
+ bl SetGpuRegBits
+ movs r0, 0x4A
+ movs r1, 0x1F
+ bl SetGpuRegBits
+ movs r0, 0x44
+ movs r1, 0xA0
+ bl SetGpuRegBits
+ bl ScanlineEffect_Stop
+ bl sub_81CAA3C
+ ldr r2, =gUnknown_08620384
+ ldr r0, [r2]
+ ldr r1, [r2, 0x4]
+ ldr r2, [r2, 0x8]
+ bl ScanlineEffect_SetParams
+ ldr r0, =sub_81CA914
+ bl SetVBlankCallback_
+ ldr r0, =sub_81CA9EC
+ movs r1, 0x3
+ bl CreateTask
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end titlescreen_0
+
+ thumb_func_start sub_81CA994
+sub_81CA994: @ 81CA994
+ push {lr}
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 6
+ movs r0, 0
+ bl ClearGpuRegBits
+ bl ScanlineEffect_Stop
+ ldr r0, =sub_81CA9EC
+ bl FindTaskIdByFunc
+ lsls r0, 24
+ lsrs r0, 24
+ bl DestroyTask
+ bl SetPokenavVBlankCallback
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CA994
+
+ thumb_func_start sub_81CA9C8
+sub_81CA9C8: @ 81CA9C8
+ push {lr}
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CA9C8
+
+ thumb_func_start sub_81CA9D8
+sub_81CA9D8: @ 81CA9D8
+ push {lr}
+ bl sub_81CAA3C
+ movs r0, 0x50
+ movs r1, 0x90
+ bl SetGpuReg
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CA9D8
+
+ thumb_func_start sub_81CA9EC
+sub_81CA9EC: @ 81CA9EC
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, =gTasks + 0x8
+ adds r2, r1, r0
+ ldrh r0, [r2]
+ adds r0, 0x1
+ strh r0, [r2]
+ lsls r0, 16
+ cmp r0, 0
+ ble _081CAA30
+ movs r0, 0
+ strh r0, [r2]
+ ldrh r0, [r2, 0x2]
+ adds r0, 0x3
+ movs r1, 0x7F
+ ands r0, r1
+ strh r0, [r2, 0x2]
+ ldr r1, =gSineTable
+ movs r3, 0x2
+ ldrsh r0, [r2, r3]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ lsls r1, 16
+ asrs r1, 21
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x54
+ bl SetGpuReg
+_081CAA30:
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CA9EC
+
+ thumb_func_start sub_81CAA3C
+sub_81CAA3C: @ 81CAA3C
+ push {r4-r6,lr}
+ mov r6, r9
+ mov r5, r8
+ push {r5,r6}
+ sub sp, 0x8
+ bl sub_81C9894
+ adds r4, r0, 0
+ bl sub_81C98A4
+ ldr r2, =gUnknown_08620240
+ lsls r1, r4, 3
+ subs r1, r4
+ lsls r1, 2
+ adds r1, r2
+ ldrh r2, [r1, 0x2]
+ adds r4, r2, 0
+ muls r4, r0
+ ldrh r1, [r1]
+ adds r4, r1
+ subs r4, 0x8
+ mov r0, sp
+ movs r6, 0
+ strh r6, [r0]
+ ldr r5, =gScanlineEffectRegBuffers
+ ldr r0, =0x010000a0
+ mov r8, r0
+ mov r0, sp
+ adds r1, r5, 0
+ mov r2, r8
+ bl CpuSet
+ mov r0, sp
+ adds r0, 0x2
+ strh r6, [r0]
+ movs r1, 0xF0
+ lsls r1, 3
+ adds r1, r5
+ mov r9, r1
+ mov r2, r8
+ bl CpuSet
+ add r0, sp, 0x4
+ ldr r1, =0x000072f0
+ adds r6, r1, 0
+ strh r6, [r0]
+ lsls r4, 1
+ adds r5, r4, r5
+ ldr r1, =0x01000010
+ mov r8, r1
+ adds r1, r5, 0
+ mov r2, r8
+ bl CpuSet
+ mov r0, sp
+ adds r0, 0x6
+ strh r6, [r0]
+ add r4, r9
+ adds r1, r4, 0
+ mov r2, r8
+ bl CpuSet
+ add sp, 0x8
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CAA3C
+
+ thumb_func_start sub_81CAADC
+sub_81CAADC: @ 81CAADC
+ push {lr}
+ bl sub_81CA9C8
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CAADC
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokenav_unk_6.s b/asm/pokenav_unk_6.s
new file mode 100644
index 000000000..f5e017816
--- /dev/null
+++ b/asm/pokenav_unk_6.s
@@ -0,0 +1,1752 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+@ File centered around AllocSubstruct(0xB)
+
+ thumb_func_start sub_81CCFD8
+sub_81CCFD8: @ 81CCFD8
+ push {r4,lr}
+ ldr r1, =0x0000678c
+ movs r0, 0xB
+ bl AllocSubstruct
+ adds r4, r0, 0
+ cmp r4, 0
+ beq _081CD01C
+ ldr r1, =0x00006428
+ adds r0, r4, r1
+ bl sub_81D1ED4
+ bl sub_81CD970
+ ldr r1, =gKeyRepeatStartDelay
+ movs r0, 0x14
+ strh r0, [r1]
+ ldr r0, =0x00006304
+ adds r1, r4, r0
+ ldr r0, =sub_81CD08C
+ str r0, [r1]
+ movs r0, 0x1
+ b _081CD01E
+ .pool
+_081CD01C:
+ movs r0, 0
+_081CD01E:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CCFD8
+
+ thumb_func_start sub_81CD024
+sub_81CD024: @ 81CD024
+ push {r4,lr}
+ ldr r1, =0x0000678c
+ movs r0, 0xB
+ bl AllocSubstruct
+ adds r4, r0, 0
+ cmp r4, 0
+ beq _081CD068
+ ldr r1, =0x00006428
+ adds r0, r4, r1
+ bl sub_81D1ED4
+ bl sub_81CD9F8
+ ldr r1, =gKeyRepeatStartDelay
+ movs r0, 0x14
+ strh r0, [r1]
+ ldr r0, =0x00006304
+ adds r1, r4, r0
+ ldr r0, =sub_81CD08C
+ str r0, [r1]
+ movs r0, 0x1
+ b _081CD06A
+ .pool
+_081CD068:
+ movs r0, 0
+_081CD06A:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CD024
+
+ thumb_func_start sub_81CD070
+sub_81CD070: @ 81CD070
+ push {lr}
+ movs r0, 0xB
+ bl GetSubstructPtr
+ ldr r2, =0x00006304
+ adds r1, r0, r2
+ ldr r1, [r1]
+ bl _call_via_r1
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CD070
+
+ thumb_func_start sub_81CD08C
+sub_81CD08C: @ 81CD08C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0x12
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ adds r0, r4, 0
+ bl sub_81CD1E4
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0
+ bne _081CD100
+ ldr r0, =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _081CD0D0
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _081CD100
+ movs r1, 0xC6
+ lsls r1, 7
+ adds r0, r4, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _081CD0F0
+ ldrh r1, [r5, 0x2]
+ ldrh r0, [r5]
+ subs r0, 0x1
+ cmp r1, r0
+ bne _081CD100
+_081CD0D0:
+ movs r0, 0x5
+ bl PlaySE
+ ldr r0, =0x00006304
+ adds r1, r4, r0
+ ldr r0, =sub_81CD19C
+ str r0, [r1]
+ movs r2, 0x2
+ b _081CD100
+ .pool
+_081CD0F0:
+ movs r0, 0x5
+ bl PlaySE
+ movs r2, 0x5
+ ldr r0, =0x00006304
+ adds r1, r4, r0
+ ldr r0, =sub_81CD110
+ str r0, [r1]
+_081CD100:
+ adds r0, r2, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CD08C
+
+ thumb_func_start sub_81CD110
+sub_81CD110: @ 81CD110
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r6, r0, 0
+ movs r4, 0
+ bl sub_811FBA4
+ lsls r0, 24
+ cmp r0, 0
+ bne _081CD18A
+ bl sub_81CEF14
+ ldr r1, =0x00006786
+ adds r5, r6, r1
+ movs r1, 0
+ ldrsb r1, [r5, r1]
+ ldr r2, =0x00006783
+ adds r4, r6, r2
+ adds r1, r4, r1
+ strb r0, [r1]
+ movs r0, 0x12
+ bl GetSubstructPtr
+ ldrh r1, [r0, 0x2]
+ lsls r1, 2
+ adds r0, r1
+ ldrb r2, [r0, 0x4]
+ ldrb r3, [r0, 0x5]
+ movs r0, 0
+ ldrsb r0, [r5, r0]
+ adds r4, r0
+ ldrb r1, [r4]
+ mov r0, sp
+ strb r1, [r0]
+ cmp r2, 0xE
+ bne _081CD174
+ movs r0, 0x64
+ muls r0, r3
+ ldr r1, =gPlayerParty
+ adds r0, r1
+ movs r1, 0x8
+ mov r2, sp
+ bl SetMonData
+ b _081CD180
+ .pool
+_081CD174:
+ adds r0, r2, 0
+ adds r1, r3, 0
+ movs r2, 0x8
+ mov r3, sp
+ bl SetBoxMonDataAt
+_081CD180:
+ ldr r0, =0x00006304
+ adds r1, r6, r0
+ ldr r0, =sub_81CD08C
+ str r0, [r1]
+ movs r4, 0x6
+_081CD18A:
+ adds r0, r4, 0
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CD110
+
+ thumb_func_start sub_81CD19C
+sub_81CD19C: @ 81CD19C
+ push {lr}
+ movs r1, 0xC6
+ lsls r1, 7
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _081CD1B4
+ ldr r0, =0x000186aa
+ b _081CD1B6
+ .pool
+_081CD1B4:
+ ldr r0, =0x000186a2
+_081CD1B6:
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CD19C
+
+ thumb_func_start sub_81CD1C0
+sub_81CD1C0: @ 81CD1C0
+ push {lr}
+ movs r0, 0xB
+ bl GetSubstructPtr
+ movs r1, 0xC6
+ lsls r1, 7
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _081CD1DA
+ movs r0, 0x12
+ bl FreePokenavSubstruct
+_081CD1DA:
+ movs r0, 0xB
+ bl FreePokenavSubstruct
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CD1C0
+
+ thumb_func_start sub_81CD1E4
+sub_81CD1E4: @ 81CD1E4
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x12
+ bl GetSubstructPtr
+ adds r2, r0, 0
+ movs r3, 0
+ ldr r0, =gMain
+ ldrh r1, [r0, 0x2C]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _081CD220
+ movs r1, 0xC6
+ lsls r1, 7
+ adds r0, r4, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _081CD210
+ ldrh r0, [r2, 0x2]
+ cmp r0, 0
+ beq _081CD24E
+_081CD210:
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0x1
+ b _081CD246
+ .pool
+_081CD220:
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _081CD24E
+ movs r1, 0xC6
+ lsls r1, 7
+ adds r0, r4, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _081CD23E
+ ldrh r1, [r2, 0x2]
+ ldrh r0, [r2]
+ subs r0, 0x1
+ cmp r1, r0
+ bge _081CD24E
+_081CD23E:
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0
+_081CD246:
+ bl sub_81CD258
+ lsls r0, 24
+ lsrs r3, r0, 24
+_081CD24E:
+ adds r0, r3, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CD1E4
+
+ thumb_func_start sub_81CD258
+sub_81CD258: @ 81CD258
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ movs r0, 0xB
+ bl GetSubstructPtr
+ adds r4, r0, 0
+ movs r0, 0x12
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ mov r0, r8
+ cmp r0, 0
+ beq _081CD284
+ ldr r1, =0x00006788
+ adds r0, r4, r1
+ b _081CD288
+ .pool
+_081CD284:
+ ldr r2, =0x00006787
+ adds r0, r4, r2
+_081CD288:
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ lsls r0, 16
+ lsrs r0, 16
+ adds r7, r0, 0
+ ldr r1, =0x00006428
+ adds r0, r4, r1
+ ldr r2, =0x00006786
+ adds r1, r4, r2
+ movs r2, 0
+ ldrsb r2, [r1, r2]
+ lsls r1, r2, 2
+ adds r1, r2
+ lsls r1, 2
+ ldr r3, =0x0000643c
+ adds r1, r3
+ adds r1, r4, r1
+ lsls r2, r7, 2
+ adds r2, r7
+ lsls r2, 2
+ adds r2, r3
+ adds r2, r4, r2
+ bl sub_81D1F84
+ ldrh r6, [r5, 0x2]
+ bl sub_81CDD5C
+ cmp r0, 0
+ beq _081CD2D8
+ ldrh r1, [r5]
+ b _081CD2DC
+ .pool
+_081CD2D8:
+ ldrh r1, [r5]
+ subs r1, 0x1
+_081CD2DC:
+ eors r1, r6
+ negs r0, r1
+ orrs r0, r1
+ lsrs r0, 31
+ adds r6, r0, 0
+ mov r0, r8
+ cmp r0, 0
+ beq _081CD332
+ ldr r1, =0x00006787
+ adds r2, r4, r1
+ ldrb r0, [r2]
+ adds r1, 0x1
+ adds r3, r4, r1
+ strb r0, [r3]
+ ldr r0, =0x00006786
+ adds r1, r4, r0
+ ldrb r0, [r1]
+ strb r0, [r2]
+ strb r7, [r1]
+ ldrb r1, [r3]
+ ldr r2, =0x00006789
+ adds r0, r4, r2
+ strb r1, [r0]
+ ldrh r0, [r5, 0x2]
+ cmp r0, 0
+ bne _081CD312
+ ldrh r0, [r5]
+_081CD312:
+ subs r1, r0, 0x1
+ strh r1, [r5, 0x2]
+ lsls r0, r1, 16
+ cmp r0, 0
+ beq _081CD32C
+ subs r1, 0x1
+ b _081CD384
+ .pool
+_081CD32C:
+ ldrh r0, [r5]
+ subs r1, r0, 0x1
+ b _081CD384
+_081CD332:
+ ldr r0, =0x00006788
+ adds r2, r4, r0
+ ldrb r0, [r2]
+ ldr r1, =0x00006787
+ adds r3, r4, r1
+ strb r0, [r3]
+ ldr r0, =0x00006786
+ adds r1, r4, r0
+ ldrb r0, [r1]
+ strb r0, [r2]
+ strb r7, [r1]
+ ldrb r1, [r3]
+ ldr r2, =0x00006789
+ adds r0, r4, r2
+ strb r1, [r0]
+ ldrh r1, [r5, 0x2]
+ ldrh r0, [r5]
+ subs r0, 0x1
+ cmp r1, r0
+ bge _081CD370
+ adds r0, r1, 0x1
+ b _081CD372
+ .pool
+_081CD370:
+ movs r0, 0
+_081CD372:
+ strh r0, [r5, 0x2]
+ ldrh r1, [r5, 0x2]
+ ldrh r0, [r5]
+ subs r0, 0x1
+ cmp r1, r0
+ bge _081CD382
+ adds r1, 0x1
+ b _081CD384
+_081CD382:
+ movs r1, 0
+_081CD384:
+ ldr r2, =0x00006302
+ adds r0, r4, r2
+ strh r1, [r0]
+ ldrh r4, [r5, 0x2]
+ bl sub_81CDD5C
+ cmp r0, 0
+ beq _081CD39C
+ ldrh r1, [r5]
+ b _081CD3A0
+ .pool
+_081CD39C:
+ ldrh r1, [r5]
+ subs r1, 0x1
+_081CD3A0:
+ eors r1, r4
+ negs r0, r1
+ orrs r0, r1
+ lsrs r0, 31
+ cmp r6, 0
+ bne _081CD3B0
+ movs r0, 0x3
+ b _081CD3BA
+_081CD3B0:
+ cmp r0, 0
+ beq _081CD3B8
+ movs r0, 0x1
+ b _081CD3BA
+_081CD3B8:
+ movs r0, 0x4
+_081CD3BA:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CD258
+
+ thumb_func_start sub_81CD3C4
+sub_81CD3C4: @ 81CD3C4
+ push {r4,lr}
+ movs r0, 0xB
+ bl GetSubstructPtr
+ adds r4, r0, 0
+ movs r0, 0x12
+ bl GetSubstructPtr
+ adds r2, r0, 0
+ ldr r1, =0x0000678a
+ adds r0, r4, r1
+ ldrb r0, [r0]
+ cmp r0, 0x9
+ bls _081CD3E2
+ b _081CD530
+_081CD3E2:
+ lsls r0, 2
+ ldr r1, =_081CD3F4
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_081CD3F4:
+ .4byte _081CD41C
+ .4byte _081CD428
+ .4byte _081CD434
+ .4byte _081CD440
+ .4byte _081CD490
+ .4byte _081CD4A8
+ .4byte _081CD4C0
+ .4byte _081CD4D8
+ .4byte _081CD4F0
+ .4byte _081CD508
+_081CD41C:
+ movs r1, 0x2
+ ldrsh r0, [r2, r1]
+ movs r1, 0
+ bl sub_81CD824
+ b _081CD530
+_081CD428:
+ movs r1, 0x2
+ ldrsh r0, [r2, r1]
+ movs r1, 0
+ bl sub_81CDA1C
+ b _081CD530
+_081CD434:
+ movs r1, 0x2
+ ldrsh r0, [r2, r1]
+ movs r1, 0
+ bl sub_81CDB98
+ b _081CD530
+_081CD440:
+ ldrh r0, [r2]
+ cmp r0, 0x1
+ bne _081CD468
+ ldr r2, =0x00006786
+ adds r0, r4, r2
+ movs r1, 0
+ strb r1, [r0]
+ adds r2, 0x1
+ adds r0, r4, r2
+ strb r1, [r0]
+ adds r2, 0x1
+ adds r0, r4, r2
+ strb r1, [r0]
+ adds r2, 0x2
+ adds r0, r4, r2
+ strb r1, [r0]
+ movs r0, 0x1
+ b _081CD53C
+ .pool
+_081CD468:
+ ldr r0, =0x00006786
+ adds r1, r4, r0
+ movs r0, 0
+ strb r0, [r1]
+ ldr r2, =0x00006787
+ adds r1, r4, r2
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r0, =0x00006788
+ adds r1, r4, r0
+ movs r0, 0x2
+ strb r0, [r1]
+ b _081CD530
+ .pool
+_081CD490:
+ ldrh r0, [r2, 0x2]
+ adds r0, 0x1
+ ldrh r2, [r2]
+ cmp r0, r2
+ blt _081CD49C
+ movs r0, 0
+_081CD49C:
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ bl sub_81CD824
+ b _081CD530
+_081CD4A8:
+ ldrh r0, [r2, 0x2]
+ adds r0, 0x1
+ ldrh r2, [r2]
+ cmp r0, r2
+ blt _081CD4B4
+ movs r0, 0
+_081CD4B4:
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ bl sub_81CDA1C
+ b _081CD530
+_081CD4C0:
+ ldrh r0, [r2, 0x2]
+ adds r0, 0x1
+ ldrh r2, [r2]
+ cmp r0, r2
+ blt _081CD4CC
+ movs r0, 0
+_081CD4CC:
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ bl sub_81CDB98
+ b _081CD530
+_081CD4D8:
+ ldrh r0, [r2, 0x2]
+ subs r0, 0x1
+ cmp r0, 0
+ bge _081CD4E4
+ ldrh r0, [r2]
+ subs r0, 0x1
+_081CD4E4:
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x2
+ bl sub_81CD824
+ b _081CD530
+_081CD4F0:
+ ldrh r0, [r2, 0x2]
+ subs r0, 0x1
+ cmp r0, 0
+ bge _081CD4FC
+ ldrh r0, [r2]
+ subs r0, 0x1
+_081CD4FC:
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x2
+ bl sub_81CDA1C
+ b _081CD530
+_081CD508:
+ ldrh r0, [r2, 0x2]
+ subs r0, 0x1
+ cmp r0, 0
+ bge _081CD514
+ ldrh r0, [r2]
+ subs r0, 0x1
+_081CD514:
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x2
+ bl sub_81CDB98
+ ldr r2, =0x0000678a
+ adds r1, r4, r2
+ movs r0, 0
+ strb r0, [r1]
+ movs r0, 0x1
+ b _081CD53C
+ .pool
+_081CD530:
+ ldr r0, =0x0000678a
+ adds r1, r4, r0
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ movs r0, 0
+_081CD53C:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CD3C4
+
+ thumb_func_start sub_81CD548
+sub_81CD548: @ 81CD548
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r5, r4, 0
+ movs r0, 0xB
+ bl GetSubstructPtr
+ adds r1, r0, 0
+ cmp r4, 0x1
+ beq _081CD588
+ cmp r4, 0x1
+ bgt _081CD566
+ cmp r4, 0
+ beq _081CD56C
+ b _081CD5C4
+_081CD566:
+ cmp r5, 0x2
+ beq _081CD5A4
+ b _081CD5C4
+_081CD56C:
+ ldr r2, =0x00006302
+ adds r0, r1, r2
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ ldr r2, =0x00006789
+ adds r1, r2
+ ldrb r1, [r1]
+ bl sub_81CD824
+ b _081CD5C4
+ .pool
+_081CD588:
+ ldr r2, =0x00006302
+ adds r0, r1, r2
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ ldr r2, =0x00006789
+ adds r1, r2
+ ldrb r1, [r1]
+ bl sub_81CDA1C
+ b _081CD5C4
+ .pool
+_081CD5A4:
+ ldr r2, =0x00006302
+ adds r0, r1, r2
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ ldr r2, =0x00006789
+ adds r1, r2
+ ldrb r1, [r1]
+ bl sub_81CDB98
+ movs r0, 0x1
+ b _081CD5C6
+ .pool
+_081CD5C4:
+ movs r0, 0
+_081CD5C6:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CD548
+
+ thumb_func_start sub_81CD5CC
+sub_81CD5CC: @ 81CD5CC
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r2, 16
+ lsrs r2, 16
+ b _081CD5E4
+_081CD5D6:
+ strb r3, [r4]
+ adds r1, 0x1
+ adds r4, 0x1
+ lsls r0, r2, 16
+ ldr r2, =0xffff0000
+ adds r0, r2
+ lsrs r2, r0, 16
+_081CD5E4:
+ ldrb r3, [r1]
+ adds r0, r3, 0
+ cmp r0, 0xFF
+ bne _081CD5D6
+ adds r1, r2, 0
+ lsls r0, r1, 16
+ ldr r2, =0xffff0000
+ adds r0, r2
+ lsrs r2, r0, 16
+ lsls r1, 16
+ cmp r1, 0
+ ble _081CD612
+ movs r3, 0
+_081CD5FE:
+ strb r3, [r4]
+ adds r4, 0x1
+ adds r1, r2, 0
+ lsls r0, r1, 16
+ ldr r2, =0xffff0000
+ adds r0, r2
+ lsrs r2, r0, 16
+ lsls r1, 16
+ cmp r1, 0
+ bgt _081CD5FE
+_081CD612:
+ movs r0, 0xFF
+ strb r0, [r4]
+ adds r0, r4, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CD5CC
+
+ thumb_func_start sub_81CD624
+sub_81CD624: @ 81CD624
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ lsls r4, 16
+ lsrs r4, 16
+ lsls r2, 24
+ lsrs r2, 24
+ mov r10, r2
+ movs r0, 0x12
+ bl GetSubstructPtr
+ lsls r4, 2
+ adds r0, r4
+ ldrb r4, [r0, 0x4]
+ mov r8, r4
+ ldrb r6, [r0, 0x5]
+ mov r9, r6
+ movs r0, 0xFC
+ strb r0, [r5]
+ adds r5, 0x1
+ movs r0, 0x4
+ strb r0, [r5]
+ adds r5, 0x1
+ movs r0, 0x8
+ strb r0, [r5]
+ adds r5, 0x1
+ movs r0, 0
+ strb r0, [r5]
+ adds r5, 0x1
+ movs r0, 0x9
+ strb r0, [r5]
+ adds r5, 0x1
+ adds r0, r4, 0
+ adds r1, r6, 0
+ movs r2, 0x2D
+ movs r3, 0
+ bl GetBoxOrPartyMonData
+ cmp r0, 0
+ beq _081CD690
+ ldr r1, =gText_EggNickname
+ adds r0, r5, 0
+ movs r2, 0
+ movs r3, 0xC
+ bl StringCopyPadded
+ b _081CD80E
+ .pool
+_081CD690:
+ adds r0, r4, 0
+ adds r1, r6, 0
+ movs r2, 0x2
+ adds r3, r5, 0
+ bl GetBoxOrPartyMonData
+ adds r0, r5, 0
+ bl StringGetEnd10
+ adds r0, r4, 0
+ adds r1, r6, 0
+ movs r2, 0xB
+ movs r3, 0
+ bl GetBoxOrPartyMonData
+ lsls r0, 16
+ lsrs r7, r0, 16
+ cmp r4, 0xE
+ bne _081CD6E0
+ movs r0, 0x64
+ adds r4, r6, 0
+ muls r4, r0
+ ldr r0, =gPlayerParty
+ adds r4, r0
+ adds r0, r4, 0
+ movs r1, 0x38
+ bl GetMonData
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ adds r0, r4, 0
+ bl GetMonGender
+ lsls r0, 24
+ lsrs r6, r0, 24
+ b _081CD6FE
+ .pool
+_081CD6E0:
+ mov r0, r8
+ mov r1, r9
+ bl GetBoxedMonPtr
+ adds r4, r0, 0
+ bl GetBoxMonGender
+ lsls r0, 24
+ lsrs r6, r0, 24
+ adds r0, r4, 0
+ bl GetLevelFromBoxMonExp
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+_081CD6FE:
+ cmp r7, 0x1D
+ beq _081CD706
+ cmp r7, 0x20
+ bne _081CD71C
+_081CD706:
+ movs r0, 0xB
+ adds r1, r7, 0
+ muls r1, r0
+ ldr r0, =gSpeciesNames
+ adds r1, r0
+ adds r0, r5, 0
+ bl StringCompare
+ cmp r0, 0
+ bne _081CD71C
+ movs r6, 0xFF
+_081CD71C:
+ adds r3, r5, 0
+ b _081CD726
+ .pool
+_081CD724:
+ adds r3, 0x1
+_081CD726:
+ ldrb r0, [r3]
+ cmp r0, 0xFF
+ bne _081CD724
+ movs r1, 0xFC
+ strb r1, [r3]
+ adds r3, 0x1
+ movs r0, 0x12
+ strb r0, [r3]
+ adds r3, 0x1
+ movs r0, 0x3C
+ strb r0, [r3]
+ adds r3, 0x1
+ cmp r6, 0
+ beq _081CD74A
+ cmp r6, 0xFE
+ beq _081CD76E
+ movs r0, 0x77
+ b _081CD790
+_081CD74A:
+ strb r1, [r3]
+ adds r3, 0x1
+ movs r0, 0x1
+ strb r0, [r3]
+ adds r3, 0x1
+ movs r0, 0x4
+ strb r0, [r3]
+ adds r3, 0x1
+ strb r1, [r3]
+ adds r3, 0x1
+ movs r0, 0x3
+ strb r0, [r3]
+ adds r3, 0x1
+ movs r0, 0x5
+ strb r0, [r3]
+ adds r3, 0x1
+ movs r0, 0xB5
+ b _081CD790
+_081CD76E:
+ strb r1, [r3]
+ adds r3, 0x1
+ movs r0, 0x1
+ strb r0, [r3]
+ adds r3, 0x1
+ movs r0, 0x6
+ strb r0, [r3]
+ adds r3, 0x1
+ strb r1, [r3]
+ adds r3, 0x1
+ movs r0, 0x3
+ strb r0, [r3]
+ adds r3, 0x1
+ movs r0, 0x7
+ strb r0, [r3]
+ adds r3, 0x1
+ movs r0, 0xB6
+_081CD790:
+ strb r0, [r3]
+ adds r3, 0x1
+ movs r0, 0xFC
+ strb r0, [r3]
+ adds r3, 0x1
+ movs r0, 0x4
+ strb r0, [r3]
+ adds r3, 0x1
+ movs r0, 0x8
+ strb r0, [r3]
+ adds r3, 0x1
+ movs r5, 0
+ strb r5, [r3]
+ adds r3, 0x1
+ movs r0, 0x9
+ strb r0, [r3]
+ adds r3, 0x1
+ movs r0, 0xBA
+ strb r0, [r3]
+ adds r3, 0x1
+ movs r0, 0xF9
+ strb r0, [r3]
+ adds r3, 0x1
+ movs r0, 0x5
+ strb r0, [r3]
+ adds r3, 0x1
+ adds r4, r3, 0
+ adds r0, r4, 0
+ mov r1, r8
+ movs r2, 0
+ movs r3, 0x3
+ bl ConvertIntToDecimalStringN
+ adds r3, r0, 0
+ subs r4, r3, r4
+ lsls r4, 16
+ lsrs r4, 16
+ strb r5, [r3]
+ adds r3, 0x1
+ mov r0, r10
+ cmp r0, 0
+ bne _081CD808
+ movs r0, 0x3
+ subs r0, r4
+ lsls r0, 16
+ ldr r1, =0xffff0000
+ adds r0, r1
+ lsrs r4, r0, 16
+ ldr r0, =0x0000ffff
+ cmp r4, r0
+ beq _081CD808
+ movs r2, 0
+ adds r1, r0, 0
+_081CD7FA:
+ strb r2, [r3]
+ adds r3, 0x1
+ subs r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, r1
+ bne _081CD7FA
+_081CD808:
+ movs r0, 0xFF
+ strb r0, [r3]
+ adds r0, r3, 0
+_081CD80E:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CD624
+
+ thumb_func_start sub_81CD824
+sub_81CD824: @ 81CD824
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ lsls r1, 24
+ lsrs r6, r1, 24
+ movs r0, 0xB
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ movs r0, 0x12
+ bl GetSubstructPtr
+ adds r7, r0, 0
+ mov r1, r8
+ lsls r0, r1, 16
+ asrs r4, r0, 16
+ bl sub_81CDD5C
+ cmp r0, 0
+ beq _081CD85A
+ ldrh r2, [r7]
+ cmp r4, r2
+ bne _081CD862
+ b _081CD900
+_081CD85A:
+ ldrh r0, [r7]
+ subs r0, 0x1
+ cmp r4, r0
+ beq _081CD900
+_081CD862:
+ lsls r0, r6, 6
+ ldr r1, =0x00006368
+ adds r0, r1
+ adds r0, r5, r0
+ mov r2, r8
+ lsls r4, r2, 16
+ lsrs r1, r4, 16
+ movs r2, 0
+ bl sub_81CD624
+ asrs r4, 14
+ adds r4, r7, r4
+ ldrb r3, [r4, 0x4]
+ lsls r0, r6, 1
+ adds r0, r6
+ lsls r4, r0, 3
+ ldr r1, =0x00006320
+ adds r0, r5, r1
+ adds r0, r4
+ movs r2, 0
+ movs r1, 0xFC
+ strb r1, [r0]
+ ldr r1, =0x00006321
+ adds r0, r5, r1
+ adds r0, r4
+ movs r1, 0x4
+ strb r1, [r0]
+ ldr r1, =0x00006322
+ adds r0, r5, r1
+ adds r0, r4
+ movs r1, 0x8
+ strb r1, [r0]
+ ldr r1, =0x00006323
+ adds r0, r5, r1
+ adds r0, r4
+ strb r2, [r0]
+ ldr r2, =0x00006324
+ adds r0, r5, r2
+ adds r0, r4
+ movs r1, 0x9
+ strb r1, [r0]
+ cmp r3, 0xE
+ bne _081CD8E4
+ adds r0, r4, r5
+ ldr r1, =0x00006325
+ adds r0, r1
+ ldr r1, =gText_InParty
+ b _081CD8F4
+ .pool
+_081CD8E4:
+ adds r4, r5
+ ldr r2, =0x00006325
+ adds r4, r2
+ adds r0, r3, 0
+ bl GetBoxNamePtr
+ adds r1, r0, 0
+ adds r0, r4, 0
+_081CD8F4:
+ movs r2, 0x8
+ bl sub_81CD5CC
+ b _081CD95C
+ .pool
+_081CD900:
+ movs r1, 0
+ lsls r4, r6, 6
+ lsls r0, r6, 1
+ mov r8, r0
+ adds r3, r4, 0
+ ldr r0, =0x00006368
+ adds r2, r5, r0
+ movs r7, 0
+_081CD910:
+ adds r0, r1, r3
+ adds r0, r2, r0
+ strb r7, [r0]
+ adds r0, r1, 0x1
+ lsls r0, 16
+ lsrs r1, r0, 16
+ cmp r1, 0xB
+ bls _081CD910
+ adds r1, r4
+ ldr r2, =0x00006368
+ adds r0, r5, r2
+ adds r0, r1
+ movs r1, 0xFF
+ strb r1, [r0]
+ movs r1, 0
+ mov r2, r8
+ adds r0, r2, r6
+ lsls r3, r0, 3
+ ldr r0, =0x00006320
+ adds r2, r5, r0
+ movs r4, 0
+_081CD93A:
+ adds r0, r1, r3
+ adds r0, r2, r0
+ strb r4, [r0]
+ adds r0, r1, 0x1
+ lsls r0, 16
+ lsrs r1, r0, 16
+ cmp r1, 0x7
+ bls _081CD93A
+ mov r2, r8
+ adds r0, r2, r6
+ lsls r0, 3
+ adds r0, r1, r0
+ ldr r2, =0x00006320
+ adds r1, r5, r2
+ adds r1, r0
+ movs r0, 0xFF
+ strb r0, [r1]
+_081CD95C:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CD824
+
+ thumb_func_start sub_81CD970
+sub_81CD970: @ 81CD970
+ push {r4-r7,lr}
+ movs r0, 0xB
+ bl GetSubstructPtr
+ adds r7, r0, 0
+ ldr r1, =0x000006ac
+ movs r0, 0x12
+ bl AllocSubstruct
+ adds r6, r0, 0
+ movs r0, 0xC6
+ lsls r0, 7
+ adds r1, r7, r0
+ movs r0, 0
+ strb r0, [r1]
+ movs r4, 0
+ movs r5, 0
+ b _081CD9C4
+ .pool
+_081CD998:
+ movs r0, 0x64
+ muls r0, r4
+ ldr r1, =gPlayerParty
+ adds r0, r1
+ movs r1, 0x2D
+ bl GetMonData
+ adds r2, r0, 0
+ cmp r2, 0
+ bne _081CD9BE
+ lsls r1, r5, 2
+ adds r1, r6, r1
+ movs r0, 0xE
+ strb r0, [r1, 0x4]
+ strb r4, [r1, 0x5]
+ strh r2, [r1, 0x6]
+ adds r0, r5, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+_081CD9BE:
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+_081CD9C4:
+ bl CalculatePlayerPartyCount
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ bcc _081CD998
+ lsls r0, r5, 2
+ adds r0, r6, r0
+ movs r1, 0
+ strb r1, [r0, 0x4]
+ strb r1, [r0, 0x5]
+ movs r2, 0
+ strh r1, [r0, 0x6]
+ strh r1, [r6, 0x2]
+ adds r0, r5, 0x1
+ strh r0, [r6]
+ ldr r1, =0x0000678a
+ adds r0, r7, r1
+ strb r2, [r0]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CD970
+
+ thumb_func_start sub_81CD9F8
+sub_81CD9F8: @ 81CD9F8
+ push {lr}
+ movs r0, 0xB
+ bl GetSubstructPtr
+ movs r1, 0xC6
+ lsls r1, 7
+ adds r2, r0, r1
+ movs r3, 0
+ movs r1, 0x1
+ strb r1, [r2]
+ ldr r1, =0x0000678a
+ adds r0, r1
+ strb r3, [r0]
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CD9F8
+
+ thumb_func_start sub_81CDA1C
+sub_81CDA1C: @ 81CDA1C
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 16
+ lsrs r6, r0, 16
+ lsls r1, 24
+ lsrs r1, 24
+ mov r9, r1
+ movs r0, 0xB
+ bl GetSubstructPtr
+ mov r8, r0
+ movs r0, 0x12
+ bl GetSubstructPtr
+ adds r4, r0, 0
+ lsls r0, r6, 16
+ asrs r5, r0, 16
+ bl sub_81CDD5C
+ cmp r0, 0
+ beq _081CDA52
+ ldrh r0, [r4]
+ cmp r5, r0
+ bne _081CDA5A
+ b _081CDB48
+_081CDA52:
+ ldrh r0, [r4]
+ subs r0, 0x1
+ cmp r5, r0
+ beq _081CDB48
+_081CDA5A:
+ lsls r0, r6, 16
+ asrs r0, 14
+ adds r0, r4, r0
+ ldrb r6, [r0, 0x4]
+ ldrb r7, [r0, 0x5]
+ adds r0, r6, 0
+ adds r1, r7, 0
+ movs r2, 0x16
+ movs r3, 0
+ bl GetBoxOrPartyMonData
+ mov r1, r9
+ lsls r5, r1, 2
+ adds r4, r5, r1
+ ldr r1, =0x00006428
+ add r1, r8
+ adds r1, r4
+ strb r0, [r1]
+ adds r0, r6, 0
+ adds r1, r7, 0
+ movs r2, 0x2F
+ movs r3, 0
+ bl GetBoxOrPartyMonData
+ ldr r1, =0x00006429
+ add r1, r8
+ adds r1, r4
+ strb r0, [r1]
+ adds r0, r6, 0
+ adds r1, r7, 0
+ movs r2, 0x21
+ movs r3, 0
+ bl GetBoxOrPartyMonData
+ ldr r1, =0x0000642a
+ add r1, r8
+ adds r1, r4
+ strb r0, [r1]
+ adds r0, r6, 0
+ adds r1, r7, 0
+ movs r2, 0x18
+ movs r3, 0
+ bl GetBoxOrPartyMonData
+ ldr r1, =0x0000642b
+ add r1, r8
+ adds r1, r4
+ strb r0, [r1]
+ adds r0, r6, 0
+ adds r1, r7, 0
+ movs r2, 0x17
+ movs r3, 0
+ bl GetBoxOrPartyMonData
+ ldr r1, =0x0000642c
+ add r1, r8
+ adds r1, r4
+ strb r0, [r1]
+ movs r0, 0xCF
+ lsls r0, 7
+ add r0, r8
+ mov r2, r9
+ adds r4, r0, r2
+ adds r0, r6, 0
+ adds r1, r7, 0
+ movs r2, 0x30
+ movs r3, 0
+ bl GetBoxOrPartyMonData
+ cmp r0, 0xFF
+ beq _081CDB10
+ adds r0, r6, 0
+ adds r1, r7, 0
+ movs r2, 0x30
+ movs r3, 0
+ bl GetBoxOrPartyMonData
+ movs r1, 0x1D
+ bl __udivsi3
+ b _081CDB12
+ .pool
+_081CDB10:
+ movs r0, 0x9
+_081CDB12:
+ strb r0, [r4]
+ adds r0, r6, 0
+ adds r1, r7, 0
+ movs r2, 0x8
+ movs r3, 0
+ bl GetBoxOrPartyMonData
+ ldr r1, =0x00006783
+ add r1, r8
+ add r1, r9
+ strb r0, [r1]
+ mov r0, r9
+ adds r1, r5, r0
+ ldr r2, =0x00006428
+ adds r0, r1, r2
+ add r0, r8
+ lsls r1, 2
+ adds r2, 0x14
+ adds r1, r2
+ add r1, r8
+ bl sub_81D2754
+ b _081CDB80
+ .pool
+_081CDB48:
+ movs r2, 0
+ mov r0, r9
+ lsls r5, r0, 2
+ add r5, r9
+ ldr r4, =0x00006428
+ add r4, r8
+ lsls r3, r5, 2
+ mov r9, r2
+ ldr r7, =0x0000643c
+ movs r6, 0x9B
+_081CDB5C:
+ adds r0, r2, r5
+ adds r0, r4, r0
+ mov r1, r9
+ strb r1, [r0]
+ lsls r0, r2, 2
+ adds r0, r3
+ add r0, r8
+ adds r1, r0, r7
+ strh r6, [r1]
+ ldr r1, =0x0000643e
+ adds r0, r1
+ movs r1, 0x5B
+ strh r1, [r0]
+ adds r0, r2, 0x1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r2, 0x4
+ bls _081CDB5C
+_081CDB80:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CDA1C
+
+ thumb_func_start sub_81CDB98
+sub_81CDB98: @ 81CDB98
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x4
+ lsls r0, 16
+ lsrs r6, r0, 16
+ lsls r1, 24
+ lsrs r1, 24
+ mov r9, r1
+ movs r0, 0xB
+ bl GetSubstructPtr
+ adds r7, r0, 0
+ movs r0, 0x12
+ bl GetSubstructPtr
+ adds r4, r0, 0
+ lsls r0, r6, 16
+ asrs r5, r0, 16
+ bl sub_81CDD5C
+ cmp r0, 0
+ beq _081CDBCC
+ ldrh r0, [r4]
+ b _081CDBD0
+_081CDBCC:
+ ldrh r0, [r4]
+ subs r0, 0x1
+_081CDBD0:
+ cmp r5, r0
+ beq _081CDC3E
+ lsls r0, r6, 16
+ asrs r0, 14
+ adds r0, r4, r0
+ ldrb r5, [r0, 0x4]
+ ldrb r6, [r0, 0x5]
+ adds r0, r5, 0
+ adds r1, r6, 0
+ movs r2, 0x41
+ movs r3, 0
+ bl GetBoxOrPartyMonData
+ adds r4, r0, 0
+ lsls r4, 16
+ lsrs r4, 16
+ adds r0, r5, 0
+ adds r1, r6, 0
+ movs r2, 0x1
+ movs r3, 0
+ bl GetBoxOrPartyMonData
+ mov r8, r0
+ adds r0, r5, 0
+ adds r1, r6, 0
+ movs r2, 0
+ movs r3, 0
+ bl GetBoxOrPartyMonData
+ adds r5, r0, 0
+ lsls r0, r4, 3
+ ldr r1, =gMonFrontPicTable
+ adds r0, r1
+ mov r2, r9
+ lsls r1, r2, 13
+ movs r2, 0xC0
+ lsls r2, 2
+ adds r1, r2
+ adds r1, r7, r1
+ movs r2, 0x1
+ str r2, [sp]
+ adds r2, r4, 0
+ adds r3, r5, 0
+ bl LoadSpecialPokePic
+ adds r0, r4, 0
+ mov r1, r8
+ adds r2, r5, 0
+ bl GetFrontSpritePalFromSpeciesAndPersonality
+ mov r2, r9
+ lsls r1, r2, 7
+ adds r1, r7, r1
+ bl LZ77UnCompWram
+_081CDC3E:
+ add sp, 0x4
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CDB98
+
+ thumb_func_start sub_81CDC50
+sub_81CDC50: @ 81CDC50
+ push {lr}
+ movs r0, 0x12
+ bl GetSubstructPtr
+ ldrh r0, [r0]
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CDC50
+
+ thumb_func_start sub_81CDC60
+sub_81CDC60: @ 81CDC60
+ push {lr}
+ movs r0, 0x12
+ bl GetSubstructPtr
+ ldrh r0, [r0, 0x2]
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CDC60
+
+ thumb_func_start sub_81CDC70
+sub_81CDC70: @ 81CDC70
+ push {lr}
+ movs r0, 0xB
+ bl GetSubstructPtr
+ ldr r1, =0x00006428
+ adds r0, r1
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CDC70
+
+ thumb_func_start sub_81CDC84
+sub_81CDC84: @ 81CDC84
+ push {lr}
+ movs r0, 0xB
+ bl GetSubstructPtr
+ ldr r1, =0x00006786
+ adds r0, r1
+ ldrb r0, [r0]
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CDC84
+
+ thumb_func_start sub_81CDC9C
+sub_81CDC9C: @ 81CDC9C
+ push {lr}
+ movs r0, 0xB
+ bl GetSubstructPtr
+ ldr r1, =0x00006302
+ adds r0, r1
+ ldrb r0, [r0]
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CDC9C
+
+ thumb_func_start sub_81CDCB4
+sub_81CDCB4: @ 81CDCB4
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0xB
+ bl GetSubstructPtr
+ lsls r4, 13
+ movs r1, 0xC0
+ lsls r1, 2
+ adds r4, r1
+ adds r0, r4
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CDCB4
+
+ thumb_func_start sub_81CDCD4
+sub_81CDCD4: @ 81CDCD4
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0xB
+ bl GetSubstructPtr
+ lsls r4, 7
+ adds r0, r4
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CDCD4
+
+ thumb_func_start sub_81CDCEC
+sub_81CDCEC: @ 81CDCEC
+ push {lr}
+ movs r0, 0xB
+ bl GetSubstructPtr
+ ldr r1, =0x00006789
+ adds r0, r1
+ ldrb r0, [r0]
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CDCEC
+
+ thumb_func_start sub_81CDD04
+sub_81CDD04: @ 81CDD04
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0xB
+ bl GetSubstructPtr
+ lsls r4, 6
+ ldr r1, =0x00006368
+ adds r4, r1
+ adds r0, r4
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CDD04
+
+ thumb_func_start sub_81CDD24
+sub_81CDD24: @ 81CDD24
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0xB
+ bl GetSubstructPtr
+ lsls r1, r4, 1
+ adds r1, r4
+ lsls r1, 3
+ ldr r2, =0x00006320
+ adds r1, r2
+ adds r0, r1
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CDD24
+
+ thumb_func_start sub_81CDD48
+sub_81CDD48: @ 81CDD48
+ push {lr}
+ movs r0, 0x12
+ bl GetSubstructPtr
+ ldrh r1, [r0, 0x2]
+ lsls r1, 2
+ adds r0, r1
+ ldrh r0, [r0, 0x6]
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CDD48
+
+ thumb_func_start sub_81CDD5C
+sub_81CDD5C: @ 81CDD5C
+ push {lr}
+ movs r0, 0xB
+ bl GetSubstructPtr
+ movs r1, 0xC6
+ lsls r1, 7
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _081CDD74
+ movs r0, 0
+ b _081CDD76
+_081CDD74:
+ movs r0, 0x1
+_081CDD76:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CDD5C
+
+ thumb_func_start sub_81CDD7C
+sub_81CDD7C: @ 81CDD7C
+ push {lr}
+ movs r0, 0xB
+ bl GetSubstructPtr
+ adds r2, r0, 0
+ movs r1, 0xC6
+ lsls r1, 7
+ adds r0, r2, r1
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _081CDD96
+ movs r0, 0
+ b _081CDDA6
+_081CDD96:
+ ldr r3, =0x00006786
+ adds r0, r2, r3
+ movs r1, 0
+ ldrsb r1, [r0, r1]
+ subs r3, 0x3
+ adds r0, r2, r3
+ adds r0, r1
+ ldrb r0, [r0]
+_081CDDA6:
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CDD7C
+
+ thumb_func_start sub_81CDDB0
+sub_81CDDB0: @ 81CDDB0
+ push {lr}
+ movs r0, 0xB
+ bl GetSubstructPtr
+ ldr r2, =0x00006786
+ adds r1, r0, r2
+ ldrb r1, [r1]
+ lsls r1, 24
+ asrs r1, 24
+ subs r2, 0x6
+ adds r0, r2
+ adds r0, r1
+ ldrb r0, [r0]
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CDDB0
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokenav_unk_7.s b/asm/pokenav_unk_7.s
new file mode 100644
index 000000000..6c363c01f
--- /dev/null
+++ b/asm/pokenav_unk_7.s
@@ -0,0 +1,2001 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+@ File centered around AllocSubstruct(0xC)
+
+ thumb_func_start sub_81CDDD4
+sub_81CDDD4: @ 81CDDD4
+ push {r4,lr}
+ ldr r1, =0x000038ac
+ movs r0, 0xC
+ bl AllocSubstruct
+ adds r4, r0, 0
+ cmp r4, 0
+ beq _081CDE24
+ ldr r0, =0x00001816
+ adds r1, r4, r0
+ movs r0, 0xFF
+ strb r0, [r1]
+ ldr r0, =sub_81CDE94
+ movs r1, 0x1
+ bl CreateLoopedTask
+ str r0, [r4]
+ ldr r0, =0x00001810
+ adds r1, r4, r0
+ ldr r0, =sub_81CDE80
+ str r0, [r1]
+ ldr r0, =0x00002908
+ adds r1, r4, r0
+ movs r0, 0
+ strb r0, [r1]
+ movs r0, 0x1
+ b _081CDE26
+ .pool
+_081CDE24:
+ movs r0, 0
+_081CDE26:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CDDD4
+
+ thumb_func_start sub_81CDE2C
+sub_81CDE2C: @ 81CDE2C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0xC
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ ldr r0, =gUnknown_08623384
+ lsls r4, 2
+ adds r4, r0
+ ldr r0, [r4]
+ movs r1, 0x1
+ bl CreateLoopedTask
+ str r0, [r5]
+ ldr r0, =0x00001810
+ adds r5, r0
+ ldr r0, =sub_81CDE80
+ str r0, [r5]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CDE2C
+
+ thumb_func_start sub_81CDE64
+sub_81CDE64: @ 81CDE64
+ push {lr}
+ movs r0, 0xC
+ bl GetSubstructPtr
+ ldr r1, =0x00001810
+ adds r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CDE64
+
+ thumb_func_start sub_81CDE80
+sub_81CDE80: @ 81CDE80
+ push {lr}
+ movs r0, 0xC
+ bl GetSubstructPtr
+ ldr r0, [r0]
+ bl IsLoopedTaskActive
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CDE80
+
+ thumb_func_start sub_81CDE94
+sub_81CDE94: @ 81CDE94
+ push {r4-r6,lr}
+ sub sp, 0xC
+ adds r4, r0, 0
+ movs r0, 0xC
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ cmp r4, 0x14
+ bls _081CDEA8
+ b _081CE2C4
+_081CDEA8:
+ lsls r0, r4, 2
+ ldr r1, =_081CDEB8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_081CDEB8:
+ .4byte _081CDF0C
+ .4byte _081CDF18
+ .4byte _081CDF94
+ .4byte _081CDFB8
+ .4byte _081CE030
+ .4byte _081CE074
+ .4byte _081CE0B0
+ .4byte _081CE118
+ .4byte _081CE120
+ .4byte _081CE126
+ .4byte _081CE136
+ .4byte _081CE146
+ .4byte _081CE156
+ .4byte _081CE16C
+ .4byte _081CE1C8
+ .4byte _081CE1EC
+ .4byte _081CE218
+ .4byte _081CE23C
+ .4byte _081CE24A
+ .4byte _081CE25A
+ .4byte _081CE262
+_081CDF0C:
+ bl sub_81CD3C4
+ cmp r0, 0x1
+ beq _081CDF16
+ b _081CE2C0
+_081CDF16:
+ b _081CDFB0
+_081CDF18:
+ ldr r0, =gUnknown_08623358
+ movs r1, 0x3
+ bl InitBgTemplates
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ movs r0, 0x2
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0x2
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ movs r0, 0x3
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0x3
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ ldr r1, =0x00007940
+ movs r0, 0
+ bl SetGpuReg
+ ldr r1, =0x00000844
+ movs r0, 0x50
+ bl SetGpuReg
+ ldr r1, =0x0000040b
+ movs r0, 0x52
+ bl SetGpuReg
+ ldr r1, =gPokenavCondition_Gfx
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x3
+ b _081CDFA8
+ .pool
+_081CDF94:
+ bl free_temp_tile_data_buffers_if_possible
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ beq _081CDFA2
+ b _081CE2C0
+_081CDFA2:
+ ldr r1, =gUnknown_08623228
+ str r0, [sp]
+ movs r0, 0x2
+_081CDFA8:
+ movs r2, 0
+ movs r3, 0
+ bl decompress_and_copy_tile_data_to_vram
+_081CDFB0:
+ movs r0, 0
+ b _081CE2C6
+ .pool
+_081CDFB8:
+ bl free_temp_tile_data_buffers_if_possible
+ lsls r0, 24
+ cmp r0, 0
+ beq _081CDFC4
+ b _081CE2C0
+_081CDFC4:
+ ldr r0, =gPokenavCondition_Tilemap
+ adds r4, r5, 0x4
+ adds r1, r4, 0
+ bl LZ77UnCompVram
+ movs r0, 0x3
+ adds r1, r4, 0
+ bl SetBgTilemapBuffer
+ bl sub_81CDD5C
+ cmp r0, 0x1
+ bne _081CDFF2
+ ldr r1, =gPokenavOptions_Tilemap
+ movs r0, 0x9
+ str r0, [sp]
+ movs r0, 0x4
+ str r0, [sp, 0x4]
+ movs r0, 0x3
+ movs r2, 0
+ movs r3, 0x5
+ bl CopyToBgTilemapBufferRect
+_081CDFF2:
+ movs r0, 0x3
+ bl CopyBgTilemapBufferToVram
+ ldr r0, =gPokenavCondition_Pal
+ movs r1, 0x10
+ movs r2, 0x20
+ bl CopyPaletteIntoBufferUnfaded
+ ldr r0, =gUnknown_08623208
+ movs r1, 0xF0
+ movs r2, 0x20
+ bl CopyPaletteIntoBufferUnfaded
+ ldr r0, =0x00001814
+ adds r1, r5, r0
+ ldr r0, =0x0000ffb0
+ strh r0, [r1]
+ b _081CDFB0
+ .pool
+_081CE030:
+ bl free_temp_tile_data_buffers_if_possible
+ lsls r0, 24
+ cmp r0, 0
+ beq _081CE03C
+ b _081CE2C0
+_081CE03C:
+ ldr r0, =gUnknown_0862323C
+ ldr r1, =0x00001004
+ adds r4, r5, r1
+ adds r1, r4, 0
+ bl LZ77UnCompVram
+ movs r0, 0x2
+ adds r1, r4, 0
+ bl SetBgTilemapBuffer
+ movs r0, 0x2
+ bl CopyBgTilemapBufferToVram
+ ldr r0, =gUnknown_086231E8
+ movs r1, 0x30
+ movs r2, 0x20
+ bl CopyPaletteIntoBufferUnfaded
+ movs r0, 0x2
+ bl sub_81D21DC
+ b _081CDFB0
+ .pool
+_081CE074:
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x1
+ bl sub_8199DF0
+ movs r0, 0x1
+ movs r1, 0x11
+ movs r2, 0x1
+ movs r3, 0x1
+ bl sub_8199DF0
+ movs r0, 0
+ str r0, [sp, 0x8]
+ ldr r2, =0x00000804
+ adds r4, r5, r2
+ ldr r2, =0x05000200
+ add r0, sp, 0x8
+ adds r1, r4, 0
+ bl CpuSet
+ movs r0, 0x1
+ adds r1, r4, 0
+ bl SetBgTilemapBuffer
+ b _081CDFB0
+ .pool
+_081CE0B0:
+ bl free_temp_tile_data_buffers_if_possible
+ lsls r0, 24
+ cmp r0, 0
+ beq _081CE0BC
+ b _081CE2C0
+_081CE0BC:
+ ldr r0, =gUnknown_08623364
+ bl AddWindow
+ movs r2, 0xC1
+ lsls r2, 5
+ adds r1, r5, r2
+ strb r0, [r1]
+ bl sub_81CDD5C
+ cmp r0, 0x1
+ bne _081CE0F6
+ ldr r0, =gUnknown_0862336C
+ bl AddWindow
+ ldr r2, =0x00001821
+ adds r1, r5, r2
+ strb r0, [r1]
+ ldr r0, =gUnknown_08623374
+ bl AddWindow
+ ldr r2, =0x00001822
+ adds r1, r5, r2
+ strb r0, [r1]
+ ldr r0, =gUnknown_0862337C
+ bl AddWindow
+ ldr r2, =0x00001823
+ adds r1, r5, r2
+ strb r0, [r1]
+_081CE0F6:
+ bl DeactivateAllTextPrinters
+ b _081CDFB0
+ .pool
+_081CE118:
+ movs r0, 0
+ bl sub_81CED30
+ b _081CDFB0
+_081CE120:
+ bl sub_81CE9E4
+ b _081CDFB0
+_081CE126:
+ bl sub_81CDD5C
+ cmp r0, 0x1
+ beq _081CE130
+ b _081CDFB0
+_081CE130:
+ bl sub_81CE934
+ b _081CDFB0
+_081CE136:
+ bl sub_81CDC84
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 8
+ lsrs r1, 16
+ movs r0, 0
+ b _081CE164
+_081CE146:
+ bl sub_81CDC84
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 8
+ lsrs r1, 16
+ movs r0, 0x1
+ b _081CE164
+_081CE156:
+ bl sub_81CDC84
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 8
+ lsrs r1, 16
+ movs r0, 0x2
+_081CE164:
+ movs r2, 0x1
+ bl sub_81CE754
+ b _081CDFB0
+_081CE16C:
+ bl sub_81CDC84
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 8
+ lsrs r1, 16
+ movs r0, 0x3
+ movs r2, 0x1
+ bl sub_81CE754
+ cmp r0, 0x1
+ beq _081CE186
+ b _081CE2C0
+_081CE186:
+ movs r1, 0xC1
+ lsls r1, 5
+ adds r0, r5, r1
+ ldrb r0, [r0]
+ bl PutWindowTilemap
+ bl sub_81CDD5C
+ cmp r0, 0x1
+ beq _081CE19C
+ b _081CDFB0
+_081CE19C:
+ ldr r2, =0x00001821
+ adds r0, r5, r2
+ ldrb r0, [r0]
+ bl PutWindowTilemap
+ ldr r1, =0x00001822
+ adds r0, r5, r1
+ ldrb r0, [r0]
+ bl PutWindowTilemap
+ ldr r2, =0x00001823
+ adds r0, r5, r2
+ ldrb r0, [r0]
+ bl PutWindowTilemap
+ b _081CDFB0
+ .pool
+_081CE1C8:
+ movs r0, 0x1
+ bl ShowBg
+ movs r0, 0x2
+ bl HideBg
+ movs r0, 0x3
+ bl ShowBg
+ bl sub_81CDD5C
+ cmp r0, 0x1
+ beq _081CE1E4
+ b _081CDFB0
+_081CE1E4:
+ movs r0, 0x4
+ bl sub_81C7BA4
+ b _081CDFB0
+_081CE1EC:
+ movs r0, 0x1
+ bl sub_81C7AC0
+ bl sub_81CDD5C
+ cmp r0, 0
+ beq _081CE1FC
+ b _081CDFB0
+_081CE1FC:
+ movs r0, 0x6
+ bl LoadLeftHeaderGfxForIndex
+ movs r0, 0x1
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_81C7FA0
+ movs r0, 0x6
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_81C7FA0
+ b _081CDFB0
+_081CE218:
+ bl IsPaletteFadeActive
+ cmp r0, 0
+ bne _081CE2C0
+ bl sub_81CDD5C
+ cmp r0, 0
+ bne _081CE230
+ bl sub_81C8010
+ cmp r0, 0
+ bne _081CE2C0
+_081CE230:
+ ldr r0, =sub_81CEE44
+ bl SetVBlankCallback_
+ b _081CDFB0
+ .pool
+_081CE23C:
+ bl sub_81CEE90
+ bl sub_81CDC70
+ bl sub_81D20AC
+ b _081CDFB0
+_081CE24A:
+ bl sub_81CDC70
+ bl sub_81D20BC
+ lsls r0, 24
+ cmp r0, 0
+ bne _081CE2C0
+ b _081CDFB0
+_081CE25A:
+ movs r0, 0x1
+ bl sub_81CEE74
+ b _081CDFB0
+_081CE262:
+ bl sub_81CDC70
+ ldr r2, =0x00001814
+ adds r1, r5, r2
+ bl sub_81D3178
+ lsls r0, 24
+ cmp r0, 0
+ bne _081CE2C0
+ ldr r0, =0x000028e0
+ adds r6, r5, r0
+ adds r0, r6, 0
+ bl sub_81D3464
+ bl sub_81CDD5C
+ cmp r0, 0x1
+ beq _081CE298
+ bl sub_81CDC60
+ adds r4, r0, 0
+ bl sub_81CDC50
+ lsls r4, 16
+ lsls r0, 16
+ cmp r4, r0
+ beq _081CE2C4
+_081CE298:
+ ldr r1, =0x00001816
+ adds r0, r5, r1
+ ldrb r4, [r0]
+ bl sub_81CDDB0
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r6, 0
+ adds r1, r4, 0
+ bl sub_81D3480
+ b _081CE2C4
+ .pool
+_081CE2C0:
+ movs r0, 0x2
+ b _081CE2C6
+_081CE2C4:
+ movs r0, 0x4
+_081CE2C6:
+ add sp, 0xC
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CDE94
+
+ thumb_func_start sub_81CE2D0
+sub_81CE2D0: @ 81CE2D0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0xC
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ cmp r4, 0x1
+ beq _081CE308
+ cmp r4, 0x1
+ bgt _081CE2EA
+ cmp r4, 0
+ beq _081CE2F4
+ b _081CE374
+_081CE2EA:
+ cmp r4, 0x2
+ beq _081CE328
+ cmp r4, 0x3
+ beq _081CE33E
+ b _081CE374
+_081CE2F4:
+ bl sub_81CEEC8
+ ldr r1, =0x000028e0
+ adds r0, r5, r1
+ bl sub_81D3520
+ movs r0, 0x1
+ b _081CE376
+ .pool
+_081CE308:
+ bl sub_81CDC70
+ ldr r2, =0x00001814
+ adds r1, r5, r2
+ bl sub_81D31A4
+ lsls r0, 24
+ cmp r0, 0
+ bne _081CE34E
+ movs r0, 0
+ bl sub_81CEE74
+ movs r0, 0x1
+ b _081CE376
+ .pool
+_081CE328:
+ movs r0, 0
+ bl sub_81C7AC0
+ bl sub_81CDD5C
+ cmp r0, 0
+ bne _081CE33A
+ bl sub_81C78A0
+_081CE33A:
+ movs r0, 0
+ b _081CE376
+_081CE33E:
+ bl IsPaletteFadeActive
+ cmp r0, 0
+ bne _081CE34E
+ bl MainMenuLoopedTaskIsBusy
+ cmp r0, 0
+ beq _081CE352
+_081CE34E:
+ movs r0, 0x2
+ b _081CE376
+_081CE352:
+ ldr r1, =0x000028e0
+ adds r0, r5, r1
+ bl sub_81D354C
+ movs r0, 0x1
+ bl HideBg
+ movs r0, 0x2
+ bl HideBg
+ movs r0, 0x3
+ bl HideBg
+ movs r0, 0x1
+ b _081CE376
+ .pool
+_081CE374:
+ movs r0, 0x4
+_081CE376:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CE2D0
+
+ thumb_func_start sub_81CE37C
+sub_81CE37C: @ 81CE37C
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ movs r0, 0xC
+ bl GetSubstructPtr
+ adds r6, r0, 0
+ bl sub_81CDC70
+ adds r2, r0, 0
+ cmp r4, 0x9
+ bls _081CE394
+ b _081CE4D0
+_081CE394:
+ lsls r0, r4, 2
+ ldr r1, =_081CE3A4
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_081CE3A4:
+ .4byte _081CE3CC
+ .4byte _081CE3D0
+ .4byte _081CE3DA
+ .4byte _081CE3F0
+ .4byte _081CE3F8
+ .4byte _081CE418
+ .4byte _081CE428
+ .4byte _081CE438
+ .4byte _081CE44E
+ .4byte _081CE468
+_081CE3CC:
+ movs r0, 0
+ b _081CE3D2
+_081CE3D0:
+ movs r0, 0x1
+_081CE3D2:
+ bl sub_81CD548
+_081CE3D6:
+ movs r0, 0x1
+ b _081CE4D2
+_081CE3DA:
+ movs r0, 0x2
+ bl sub_81CD548
+ ldr r1, =0x000028e0
+ adds r0, r6, r1
+ bl sub_81D3520
+ b _081CE3D6
+ .pool
+_081CE3F0:
+ adds r0, r2, 0
+ bl sub_81D2074
+ b _081CE3D6
+_081CE3F8:
+ ldr r1, =0x00001814
+ adds r0, r6, r1
+ bl sub_81D3150
+ lsls r0, 24
+ cmp r0, 0
+ bne _081CE4CC
+ bl sub_81CDC84
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_81CED30
+ b _081CE3D6
+ .pool
+_081CE418:
+ bl sub_81CDC84
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 8
+ lsrs r1, 16
+ movs r0, 0
+ b _081CE446
+_081CE428:
+ bl sub_81CDC84
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 8
+ lsrs r1, 16
+ movs r0, 0x1
+ b _081CE446
+_081CE438:
+ bl sub_81CDC84
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 8
+ lsrs r1, 16
+ movs r0, 0x2
+_081CE446:
+ movs r2, 0
+ bl sub_81CE754
+ b _081CE3D6
+_081CE44E:
+ bl sub_81CDC84
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 8
+ lsrs r1, 16
+ movs r0, 0x3
+ movs r2, 0
+ bl sub_81CE754
+ cmp r0, 0x1
+ beq _081CE3D6
+ b _081CE4CC
+_081CE468:
+ bl sub_81CDC70
+ adds r2, r0, 0
+ ldr r0, =0x00001814
+ adds r1, r6, r0
+ adds r0, r2, 0
+ bl sub_81D3178
+ lsls r0, 24
+ cmp r0, 0
+ bne _081CE4CC
+ ldr r1, =0x000028e0
+ adds r0, r6, r1
+ bl sub_81D3464
+ bl sub_81CDD5C
+ cmp r0, 0x1
+ beq _081CE4A0
+ bl sub_81CDC60
+ adds r4, r0, 0
+ bl sub_81CDC50
+ lsls r4, 16
+ lsls r0, 16
+ cmp r4, r0
+ beq _081CE3D6
+_081CE4A0:
+ ldr r0, =0x000028e0
+ adds r5, r6, r0
+ ldr r1, =0x00001816
+ adds r0, r6, r1
+ ldrb r4, [r0]
+ bl sub_81CDDB0
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_81D3480
+ b _081CE3D6
+ .pool
+_081CE4CC:
+ movs r0, 0x2
+ b _081CE4D2
+_081CE4D0:
+ movs r0, 0x4
+_081CE4D2:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CE37C
+
+ thumb_func_start sub_81CE4D8
+sub_81CE4D8: @ 81CE4D8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0xC
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ cmp r4, 0x8
+ bhi _081CE5DC
+ lsls r0, r4, 2
+ ldr r1, =_081CE4F8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_081CE4F8:
+ .4byte _081CE51C
+ .4byte _081CE520
+ .4byte _081CE524
+ .4byte _081CE52E
+ .4byte _081CE53E
+ .4byte _081CE54E
+ .4byte _081CE55E
+ .4byte _081CE576
+ .4byte _081CE592
+_081CE51C:
+ movs r0, 0
+ b _081CE526
+_081CE520:
+ movs r0, 0x1
+ b _081CE526
+_081CE524:
+ movs r0, 0x2
+_081CE526:
+ bl sub_81CD548
+ movs r0, 0x1
+ b _081CE5DE
+_081CE52E:
+ bl sub_81CDC84
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_81CED30
+ movs r0, 0x1
+ b _081CE5DE
+_081CE53E:
+ bl sub_81CDC84
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 8
+ lsrs r1, 16
+ movs r0, 0
+ b _081CE56C
+_081CE54E:
+ bl sub_81CDC84
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 8
+ lsrs r1, 16
+ movs r0, 0x1
+ b _081CE56C
+_081CE55E:
+ bl sub_81CDC84
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 8
+ lsrs r1, 16
+ movs r0, 0x2
+_081CE56C:
+ movs r2, 0
+ bl sub_81CE754
+ movs r0, 0x1
+ b _081CE5DE
+_081CE576:
+ bl sub_81CDC84
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 8
+ lsrs r1, 16
+ movs r0, 0x3
+ movs r2, 0
+ bl sub_81CE754
+ cmp r0, 0x1
+ bne _081CE5D8
+ movs r0, 0x1
+ b _081CE5DE
+_081CE592:
+ bl sub_81CDC70
+ ldr r2, =0x00001814
+ adds r1, r5, r2
+ bl sub_81D3178
+ lsls r0, 24
+ cmp r0, 0
+ bne _081CE5D8
+ ldr r0, =0x000028e0
+ adds r4, r5, r0
+ adds r0, r4, 0
+ bl sub_81D3464
+ ldr r1, =0x00001816
+ adds r0, r5, r1
+ ldrb r5, [r0]
+ bl sub_81CDDB0
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_81D3480
+ movs r0, 0x1
+ b _081CE5DE
+ .pool
+_081CE5D8:
+ movs r0, 0x2
+ b _081CE5DE
+_081CE5DC:
+ movs r0, 0x4
+_081CE5DE:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CE4D8
+
+ thumb_func_start sub_81CE5E4
+sub_81CE5E4: @ 81CE5E4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0xC
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ cmp r4, 0x7
+ bhi _081CE6B2
+ lsls r0, r4, 2
+ ldr r1, =_081CE604
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_081CE604:
+ .4byte _081CE624
+ .4byte _081CE628
+ .4byte _081CE632
+ .4byte _081CE648
+ .4byte _081CE660
+ .4byte _081CE670
+ .4byte _081CE680
+ .4byte _081CE696
+_081CE624:
+ movs r0, 0
+ b _081CE62A
+_081CE628:
+ movs r0, 0x1
+_081CE62A:
+ bl sub_81CD548
+_081CE62E:
+ movs r0, 0x1
+ b _081CE6B4
+_081CE632:
+ movs r0, 0x2
+ bl sub_81CD548
+ ldr r1, =0x000028e0
+ adds r0, r5, r1
+ bl sub_81D3520
+ b _081CE62E
+ .pool
+_081CE648:
+ bl sub_81CDC70
+ ldr r2, =0x00001814
+ adds r1, r5, r2
+ bl sub_81D31A4
+ lsls r0, 24
+ cmp r0, 0
+ beq _081CE62E
+ b _081CE6AE
+ .pool
+_081CE660:
+ bl sub_81CDC84
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 8
+ lsrs r1, 16
+ movs r0, 0
+ b _081CE68E
+_081CE670:
+ bl sub_81CDC84
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 8
+ lsrs r1, 16
+ movs r0, 0x1
+ b _081CE68E
+_081CE680:
+ bl sub_81CDC84
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 8
+ lsrs r1, 16
+ movs r0, 0x2
+_081CE68E:
+ movs r2, 0
+ bl sub_81CE754
+ b _081CE62E
+_081CE696:
+ bl sub_81CDC84
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 8
+ lsrs r1, 16
+ movs r0, 0x3
+ movs r2, 0
+ bl sub_81CE754
+ cmp r0, 0x1
+ beq _081CE62E
+_081CE6AE:
+ movs r0, 0x2
+ b _081CE6B4
+_081CE6B2:
+ movs r0, 0x4
+_081CE6B4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CE5E4
+
+ thumb_func_start sub_81CE6BC
+sub_81CE6BC: @ 81CE6BC
+ push {lr}
+ cmp r0, 0x1
+ beq _081CE6E6
+ cmp r0, 0x1
+ bgt _081CE6CC
+ cmp r0, 0
+ beq _081CE6D2
+ b _081CE6FA
+_081CE6CC:
+ cmp r0, 0x2
+ beq _081CE6EE
+ b _081CE6FA
+_081CE6D2:
+ bl sub_81CDD7C
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0xB0
+ movs r2, 0x20
+ bl sub_811FAA4
+_081CE6E2:
+ movs r0, 0x1
+ b _081CE6FC
+_081CE6E6:
+ movs r0, 0x5
+ bl sub_81C7BA4
+ b _081CE6E2
+_081CE6EE:
+ bl IsDma3ManagerBusyWithBgCopy_
+ cmp r0, 0x1
+ bne _081CE6E2
+ movs r0, 0x2
+ b _081CE6FC
+_081CE6FA:
+ movs r0, 0x4
+_081CE6FC:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CE6BC
+
+ thumb_func_start sub_81CE700
+sub_81CE700: @ 81CE700
+ push {lr}
+ cmp r0, 0x1
+ beq _081CE71E
+ cmp r0, 0x1
+ bgt _081CE710
+ cmp r0, 0
+ beq _081CE716
+ b _081CE732
+_081CE710:
+ cmp r0, 0x2
+ beq _081CE726
+ b _081CE732
+_081CE716:
+ bl sub_811FAF8
+_081CE71A:
+ movs r0, 0x1
+ b _081CE734
+_081CE71E:
+ movs r0, 0x4
+ bl sub_81C7BA4
+ b _081CE71A
+_081CE726:
+ bl IsDma3ManagerBusyWithBgCopy_
+ cmp r0, 0x1
+ bne _081CE71A
+ movs r0, 0x2
+ b _081CE734
+_081CE732:
+ movs r0, 0x4
+_081CE734:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CE700
+
+ thumb_func_start sub_81CE738
+sub_81CE738: @ 81CE738
+ push {lr}
+ lsls r1, 16
+ lsrs r1, 16
+ movs r2, 0x1
+ movs r3, 0x4
+ bl ConvertIntToDecimalStringN
+ ldr r1, =gText_Number2
+ bl StringCopy
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CE738
+
+ thumb_func_start sub_81CE754
+sub_81CE754: @ 81CE754
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x2C
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r7, r4, 0
+ lsls r1, 16
+ lsrs r1, 16
+ mov r8, r1
+ lsls r2, 24
+ lsrs r5, r2, 24
+ movs r0, 0xC
+ bl GetSubstructPtr
+ adds r6, r0, 0
+ cmp r4, 0x1
+ beq _081CE7B8
+ cmp r4, 0x1
+ bgt _081CE782
+ cmp r4, 0
+ beq _081CE78E
+ b _081CE924
+_081CE782:
+ cmp r4, 0x2
+ beq _081CE800
+ cmp r4, 0x3
+ bne _081CE78C
+ b _081CE89C
+_081CE78C:
+ b _081CE924
+_081CE78E:
+ movs r1, 0xC1
+ lsls r1, 5
+ adds r0, r6, r1
+ ldrb r0, [r0]
+ movs r1, 0
+ bl FillWindowPixelBuffer
+ bl sub_81CDD5C
+ cmp r0, 0x1
+ beq _081CE7A6
+ b _081CE924
+_081CE7A6:
+ ldr r1, =0x00001821
+ adds r0, r6, r1
+ ldrb r0, [r0]
+ movs r1, 0
+ bl FillWindowPixelBuffer
+ b _081CE924
+ .pool
+_081CE7B8:
+ bl sub_81CDC60
+ adds r4, r0, 0
+ lsls r4, 16
+ lsrs r4, 16
+ bl sub_81CDC50
+ lsls r0, 16
+ lsrs r0, 16
+ subs r0, 0x1
+ cmp r4, r0
+ bne _081CE7DA
+ bl sub_81CDD5C
+ cmp r0, 0x1
+ beq _081CE7DA
+ b _081CE924
+_081CE7DA:
+ mov r1, r8
+ lsls r0, r1, 24
+ lsrs r0, 24
+ bl sub_81CDD04
+ adds r2, r0, 0
+ movs r1, 0xC1
+ lsls r1, 5
+ adds r0, r6, r1
+ ldrb r0, [r0]
+ str r7, [sp]
+ movs r1, 0
+ str r1, [sp, 0x4]
+ str r1, [sp, 0x8]
+ movs r1, 0x1
+ movs r3, 0
+ bl AddTextPrinterParameterized
+ b _081CE924
+_081CE800:
+ bl sub_81CDD5C
+ adds r7, r0, 0
+ cmp r7, 0x1
+ beq _081CE80C
+ b _081CE924
+_081CE80C:
+ mov r1, r8
+ lsls r0, r1, 24
+ lsrs r0, 24
+ bl sub_81CDD24
+ adds r2, r0, 0
+ movs r1, 0xC1
+ lsls r1, 5
+ adds r0, r6, r1
+ ldrb r0, [r0]
+ movs r1, 0x11
+ str r1, [sp]
+ movs r4, 0
+ str r4, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r1, 0x1
+ movs r3, 0
+ bl AddTextPrinterParameterized
+ add r1, sp, 0xC
+ movs r0, 0xFC
+ strb r0, [r1]
+ movs r0, 0x4
+ strb r0, [r1, 0x1]
+ movs r0, 0x8
+ strb r0, [r1, 0x2]
+ adds r0, r1, 0
+ strb r4, [r0, 0x3]
+ movs r0, 0x9
+ strb r0, [r1, 0x4]
+ mov r5, sp
+ adds r5, 0x11
+ ldr r1, =gText_Number2
+ adds r0, r5, 0
+ bl StringCopy
+ ldr r0, =0x00001821
+ adds r6, r0
+ ldrb r0, [r6]
+ str r7, [sp]
+ str r4, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r1, 0x1
+ add r2, sp, 0xC
+ movs r3, 0x4
+ bl AddTextPrinterParameterized
+ bl sub_81CDD48
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, r5, 0
+ movs r2, 0x1
+ movs r3, 0x4
+ bl ConvertIntToDecimalStringN
+ ldrb r0, [r6]
+ str r7, [sp]
+ str r4, [sp, 0x4]
+ str r4, [sp, 0x8]
+ movs r1, 0x1
+ add r2, sp, 0xC
+ movs r3, 0x1C
+ bl AddTextPrinterParameterized
+ b _081CE924
+ .pool
+_081CE89C:
+ ldr r1, =0x00002908
+ adds r0, r6, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _081CE8B0
+ cmp r0, 0x1
+ beq _081CE8EC
+ b _081CE924
+ .pool
+_081CE8B0:
+ cmp r5, 0
+ beq _081CE8C4
+ movs r1, 0xC1
+ lsls r1, 5
+ adds r0, r6, r1
+ ldrb r0, [r0]
+ movs r1, 0x3
+ bl CopyWindowToVram
+ b _081CE8D2
+_081CE8C4:
+ movs r1, 0xC1
+ lsls r1, 5
+ adds r0, r6, r1
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl CopyWindowToVram
+_081CE8D2:
+ bl sub_81CDD5C
+ cmp r0, 0x1
+ bne _081CE910
+ ldr r0, =0x00002908
+ adds r1, r6, r0
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _081CE924
+ .pool
+_081CE8EC:
+ cmp r5, 0
+ beq _081CE904
+ ldr r1, =0x00001821
+ adds r0, r6, r1
+ ldrb r0, [r0]
+ movs r1, 0x3
+ bl CopyWindowToVram
+ b _081CE910
+ .pool
+_081CE904:
+ ldr r1, =0x00001821
+ adds r0, r6, r1
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl CopyWindowToVram
+_081CE910:
+ ldr r0, =0x00002908
+ adds r1, r6, r0
+ movs r0, 0
+ strb r0, [r1]
+ movs r0, 0x1
+ b _081CE926
+ .pool
+_081CE924:
+ movs r0, 0
+_081CE926:
+ add sp, 0x2C
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CE754
+
+ thumb_func_start sub_81CE934
+sub_81CE934: @ 81CE934
+ push {r4,lr}
+ movs r0, 0xC
+ bl GetSubstructPtr
+ adds r4, r0, 0
+ ldr r1, =0x00001822
+ adds r0, r4, r1
+ ldrb r0, [r0]
+ movs r1, 0x3
+ bl CopyWindowToVram
+ ldr r0, =0x00001823
+ adds r4, r0
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl CopyWindowToVram
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CE934
+
+ thumb_func_start sub_81CE964
+sub_81CE964: @ 81CE964
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r0, 0x2E
+ ldrsh r4, [r5, r0]
+ bl sub_81CDC60
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r4, r0
+ bne _081CE982
+ adds r0, r5, 0
+ movs r1, 0
+ bl StartSpriteAnim
+ b _081CE98A
+_081CE982:
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+_081CE98A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CE964
+
+ thumb_func_start sub_81CE990
+sub_81CE990: @ 81CE990
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ bl sub_81CDC60
+ adds r4, r0, 0
+ lsls r4, 16
+ lsrs r4, 16
+ bl sub_81CDC50
+ lsls r0, 16
+ lsrs r0, 16
+ subs r0, 0x1
+ cmp r4, r0
+ bne _081CE9B0
+ movs r0, 0x65
+ b _081CE9B2
+_081CE9B0:
+ movs r0, 0x66
+_081CE9B2:
+ bl IndexOfSpritePaletteTag
+ lsls r0, 4
+ ldrb r2, [r5, 0x5]
+ movs r1, 0xF
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r5, 0x5]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CE990
+
+ thumb_func_start sub_81CE9C8
+sub_81CE9C8: @ 81CE9C8
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_81CDD7C
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CE9C8
+
+ thumb_func_start sub_81CE9E4
+sub_81CE9E4: @ 81CE9E4
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x58
+ movs r0, 0xC
+ bl GetSubstructPtr
+ adds r6, r0, 0
+ add r4, sp, 0x20
+ add r5, sp, 0x38
+ mov r0, sp
+ adds r1, r4, 0
+ adds r2, r5, 0
+ bl sub_81D321C
+ bl sub_81CDD5C
+ adds r7, r4, 0
+ mov r10, r5
+ cmp r0, 0x1
+ bne _081CEA78
+ ldr r1, =0x00001824
+ adds r0, r6, r1
+ movs r2, 0x6A
+ strh r2, [r0]
+ ldr r3, =0x00001826
+ adds r1, r6, r3
+ strh r2, [r1]
+ bl sub_811F90C
+ bl sub_811FA90
+ ldr r2, =gUnknown_08623338
+ movs r0, 0x69
+ movs r1, 0x69
+ bl sub_811FF94
+ ldrb r1, [r0, 0x5]
+ movs r2, 0xC
+ orrs r1, r2
+ strb r1, [r0, 0x5]
+ movs r1, 0xC0
+ strh r1, [r0, 0x20]
+ movs r1, 0x20
+ strh r1, [r0, 0x22]
+ ldr r1, =sub_81CE9C8
+ str r1, [r0, 0x1C]
+ ldr r2, =0x000028dc
+ adds r1, r6, r2
+ str r0, [r1]
+ movs r0, 0x69
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0
+ bl sub_81C7990
+ add r3, sp, 0x50
+ mov r8, r3
+ b _081CEBC6
+ .pool
+_081CEA78:
+ mov r0, sp
+ bl LoadSpriteSheets
+ mov r0, r10
+ bl Pokenav_AllocAndLoadPalettes
+ movs r4, 0
+ add r0, sp, 0x50
+ mov r8, r0
+ b _081CEAE8
+_081CEA8C:
+ lsls r2, r4, 2
+ adds r2, r4
+ lsls r2, 18
+ movs r1, 0x80
+ lsls r1, 12
+ adds r2, r1
+ asrs r2, 16
+ adds r0, r7, 0
+ movs r1, 0xE2
+ movs r3, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x40
+ beq _081CEAD8
+ ldr r2, =0x00001806
+ adds r0, r6, r2
+ adds r0, r4
+ strb r3, [r0]
+ ldr r2, =gSprites
+ lsls r0, r3, 4
+ adds r0, r3
+ lsls r0, 2
+ adds r1, r0, r2
+ strh r4, [r1, 0x2E]
+ adds r2, 0x1C
+ adds r0, r2
+ ldr r1, =sub_81CE964
+ str r1, [r0]
+ b _081CEAE2
+ .pool
+_081CEAD8:
+ ldr r3, =0x00001806
+ adds r0, r6, r3
+ adds r0, r4
+ movs r1, 0xFF
+ strb r1, [r0]
+_081CEAE2:
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+_081CEAE8:
+ bl sub_81CDC50
+ lsls r0, 16
+ lsrs r0, 16
+ subs r0, 0x1
+ cmp r4, r0
+ blt _081CEA8C
+ movs r0, 0x67
+ strh r0, [r7]
+ ldr r0, =SpriteCallbackDummy
+ str r0, [r7, 0x14]
+ cmp r4, 0x5
+ bhi _081CEB5C
+ ldr r0, =0x00001806
+ adds r5, r6, r0
+ ldr r1, =gSprites
+ mov r9, r1
+_081CEB0A:
+ lsls r2, r4, 2
+ adds r2, r4
+ lsls r2, 18
+ movs r3, 0x80
+ lsls r3, 12
+ adds r2, r3
+ asrs r2, 16
+ adds r0, r7, 0
+ movs r1, 0xE6
+ movs r3, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x40
+ beq _081CEB4C
+ adds r0, r5, r4
+ strb r3, [r0]
+ lsls r1, r3, 4
+ adds r1, r3
+ lsls r1, 2
+ add r1, r9
+ ldrb r2, [r1, 0x3]
+ movs r0, 0x3F
+ ands r0, r2
+ strb r0, [r1, 0x3]
+ b _081CEB52
+ .pool
+_081CEB4C:
+ adds r1, r5, r4
+ movs r0, 0xFF
+ strb r0, [r1]
+_081CEB52:
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x5
+ bls _081CEB0A
+_081CEB5C:
+ movs r0, 0x66
+ strh r0, [r7]
+ ldr r0, =sub_81CE990
+ str r0, [r7, 0x14]
+ lsls r2, r4, 2
+ adds r2, r4
+ lsls r2, 18
+ movs r0, 0x80
+ lsls r0, 12
+ adds r2, r0
+ asrs r2, 16
+ adds r0, r7, 0
+ movs r1, 0xDE
+ movs r3, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x40
+ beq _081CEBBC
+ ldr r1, =0x00001806
+ adds r0, r6, r1
+ adds r0, r4
+ strb r3, [r0]
+ ldr r0, =gSprites
+ lsls r2, r3, 4
+ adds r2, r3
+ lsls r2, 2
+ adds r2, r0
+ ldrb r3, [r2, 0x1]
+ movs r1, 0x3F
+ adds r0, r1, 0
+ ands r0, r3
+ movs r3, 0x40
+ orrs r0, r3
+ strb r0, [r2, 0x1]
+ ldrb r0, [r2, 0x3]
+ ands r1, r0
+ movs r0, 0x80
+ orrs r1, r0
+ strb r1, [r2, 0x3]
+ b _081CEBC6
+ .pool
+_081CEBBC:
+ ldr r2, =0x00001806
+ adds r0, r6, r2
+ adds r0, r4
+ movs r1, 0xFF
+ strb r1, [r0]
+_081CEBC6:
+ mov r0, r8
+ mov r1, r10
+ bl sub_81D32B0
+ mov r0, r8
+ bl LoadSpriteSheet
+ movs r0, 0
+ mov r3, r10
+ str r0, [r3, 0x8]
+ mov r0, r10
+ bl Pokenav_AllocAndLoadPalettes
+ add sp, 0x58
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CE9E4
+
+ thumb_func_start sub_81CEBF4
+sub_81CEBF4: @ 81CEBF4
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ bl sub_81CDD5C
+ cmp r0, 0x1
+ bne _081CEC28
+ ldr r1, =0x000028dc
+ adds r0, r5, r1
+ ldr r0, [r0]
+ bl DestroySprite
+ movs r0, 0x6A
+ bl FreeSpriteTilesByTag
+ movs r0, 0x69
+ bl FreeSpriteTilesByTag
+ movs r0, 0x6A
+ bl FreeSpritePaletteByTag
+ movs r0, 0x69
+ bl FreeSpritePaletteByTag
+ b _081CEC68
+ .pool
+_081CEC28:
+ movs r4, 0
+_081CEC2A:
+ ldr r1, =0x00001806
+ adds r0, r5, r1
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, =gSprites
+ adds r0, r1
+ bl DestroySprite
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x6
+ bls _081CEC2A
+ movs r0, 0x65
+ bl FreeSpriteTilesByTag
+ movs r0, 0x66
+ bl FreeSpriteTilesByTag
+ movs r0, 0x67
+ bl FreeSpriteTilesByTag
+ movs r0, 0x65
+ bl FreeSpritePaletteByTag
+ movs r0, 0x66
+ bl FreeSpritePaletteByTag
+_081CEC68:
+ ldr r0, =0x00001816
+ adds r1, r5, r0
+ ldrb r0, [r1]
+ cmp r0, 0xFF
+ beq _081CEC8E
+ adds r1, r0, 0
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, =gSprites
+ adds r0, r1
+ bl DestroySprite
+ movs r0, 0x64
+ bl FreeSpriteTilesByTag
+ movs r0, 0x64
+ bl FreeSpritePaletteByTag
+_081CEC8E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CEBF4
+
+ thumb_func_start sub_81CECA0
+sub_81CECA0: @ 81CECA0
+ push {r4,lr}
+ movs r0, 0xC
+ bl GetSubstructPtr
+ adds r4, r0, 0
+ movs r1, 0xC1
+ lsls r1, 5
+ adds r0, r4, r1
+ ldrb r0, [r0]
+ bl RemoveWindow
+ bl sub_81CDD5C
+ cmp r0, 0x1
+ bne _081CECEC
+ ldr r1, =0x00001821
+ adds r0, r4, r1
+ ldrb r0, [r0]
+ bl RemoveWindow
+ ldr r1, =0x00001822
+ adds r0, r4, r1
+ ldrb r0, [r0]
+ bl RemoveWindow
+ ldr r1, =0x00001823
+ adds r0, r4, r1
+ ldrb r0, [r0]
+ bl RemoveWindow
+ b _081CECF0
+ .pool
+_081CECEC:
+ bl sub_81C7FDC
+_081CECF0:
+ movs r1, 0x8A
+ lsls r1, 5
+ movs r0, 0
+ bl SetGpuReg
+ adds r0, r4, 0
+ bl sub_81CEBF4
+ bl sub_81CEE68
+ movs r0, 0xC
+ bl FreePokenavSubstruct
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CECA0
+
+ thumb_func_start sub_81CED10
+sub_81CED10: @ 81CED10
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0xC
+ bl GetSubstructPtr
+ ldr r1, =0x00001814
+ adds r0, r1
+ ldrh r0, [r0]
+ adds r0, 0x26
+ strh r0, [r4, 0x20]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CED10
+
+ thumb_func_start sub_81CED30
+sub_81CED30: @ 81CED30
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x28
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r0, 0xC
+ bl GetSubstructPtr
+ mov r8, r0
+ ldr r7, =0x00001816
+ add r7, r8
+ ldrb r0, [r7]
+ cmp r0, 0xFF
+ bne _081CEDFC
+ add r5, sp, 0x18
+ add r4, sp, 0x20
+ adds r0, r5, 0
+ mov r1, sp
+ adds r2, r4, 0
+ bl sub_81D31D0
+ adds r0, r6, 0
+ bl sub_81CDCB4
+ str r0, [sp, 0x18]
+ adds r0, r6, 0
+ bl sub_81CDCD4
+ str r0, [sp, 0x20]
+ adds r0, r4, 0
+ bl LoadSpritePalette
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r4, =0x00001818
+ add r4, r8
+ strh r0, [r4]
+ adds r0, r5, 0
+ bl LoadSpriteSheet
+ ldr r5, =0x0000181a
+ add r5, r8
+ strh r0, [r5]
+ mov r0, sp
+ movs r1, 0x26
+ movs r2, 0x68
+ movs r3, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ strb r0, [r7]
+ cmp r0, 0x40
+ bne _081CEDBC
+ movs r0, 0x64
+ bl FreeSpriteTilesByTag
+ movs r0, 0x64
+ bl FreeSpritePaletteByTag
+ movs r0, 0xFF
+ strb r0, [r7]
+ b _081CEE26
+ .pool
+_081CEDBC:
+ strb r0, [r7]
+ ldr r2, =gSprites
+ ldrb r1, [r7]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r2, 0x1C
+ adds r0, r2
+ ldr r1, =sub_81CED10
+ str r1, [r0]
+ ldr r1, =0x0000181c
+ add r1, r8
+ ldrh r0, [r5]
+ lsls r0, 5
+ ldr r2, =0x06010000
+ adds r0, r2
+ str r0, [r1]
+ ldrh r0, [r4]
+ lsls r0, 4
+ movs r1, 0x80
+ lsls r1, 1
+ adds r0, r1
+ strh r0, [r4]
+ b _081CEE26
+ .pool
+_081CEDFC:
+ adds r0, r6, 0
+ bl sub_81CDCB4
+ ldr r1, =0x0000181c
+ add r1, r8
+ ldr r2, [r1]
+ ldr r1, =0x040000d4
+ str r0, [r1]
+ str r2, [r1, 0x4]
+ ldr r0, =0x80000400
+ str r0, [r1, 0x8]
+ ldr r0, [r1, 0x8]
+ adds r0, r6, 0
+ bl sub_81CDCD4
+ ldr r1, =0x00001818
+ add r1, r8
+ ldrh r1, [r1]
+ movs r2, 0x20
+ bl LoadPalette
+_081CEE26:
+ add sp, 0x28
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CED30
+
+ thumb_func_start sub_81CEE44
+sub_81CEE44: @ 81CEE44
+ push {r4,lr}
+ bl sub_81CDC70
+ adds r4, r0, 0
+ bl LoadOam
+ bl ProcessSpriteCopyRequests
+ bl TransferPlttBuffer
+ adds r0, r4, 0
+ bl sub_81D2108
+ bl ScanlineEffect_InitHBlankDmaTransfer
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CEE44
+
+ thumb_func_start sub_81CEE68
+sub_81CEE68: @ 81CEE68
+ push {lr}
+ bl SetPokenavVBlankCallback
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CEE68
+
+ thumb_func_start sub_81CEE74
+sub_81CEE74: @ 81CEE74
+ push {lr}
+ lsls r0, 24
+ cmp r0, 0
+ beq _081CEE84
+ movs r0, 0x2
+ bl ShowBg
+ b _081CEE8A
+_081CEE84:
+ movs r0, 0x2
+ bl HideBg
+_081CEE8A:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CEE74
+
+ thumb_func_start sub_81CEE90
+sub_81CEE90: @ 81CEE90
+ push {r4,lr}
+ bl sub_81CDC70
+ adds r4, r0, 0
+ bl sub_81CDC84
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =gUnknown_030012BC
+ strb r0, [r1]
+ adds r1, r4, 0
+ adds r1, 0x50
+ lsls r2, r0, 2
+ adds r2, r0
+ lsls r2, 2
+ adds r2, 0x14
+ adds r2, r4, r2
+ adds r0, r4, 0
+ bl sub_81D1F84
+ adds r0, r4, 0
+ bl sub_81D2074
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CEE90
+
+ thumb_func_start sub_81CEEC8
+sub_81CEEC8: @ 81CEEC8
+ push {r4,r5,lr}
+ bl sub_81CDC70
+ adds r5, r0, 0
+ bl sub_81CDD5C
+ cmp r0, 0
+ bne _081CEEF0
+ bl sub_81CDC60
+ adds r4, r0, 0
+ lsls r4, 16
+ lsrs r4, 16
+ bl sub_81CDC50
+ lsls r0, 16
+ lsrs r0, 16
+ subs r0, 0x1
+ cmp r4, r0
+ beq _081CEF0C
+_081CEEF0:
+ bl sub_81CDC84
+ lsls r0, 24
+ asrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 2
+ adds r1, 0x14
+ adds r1, r5, r1
+ adds r2, r5, 0
+ adds r2, 0x50
+ adds r0, r5, 0
+ bl sub_81D1F84
+_081CEF0C:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CEEC8
+
+ thumb_func_start sub_81CEF14
+sub_81CEF14: @ 81CEF14
+ push {r4,lr}
+ movs r0, 0xC
+ bl GetSubstructPtr
+ adds r4, r0, 0
+ bl sub_81CDD5C
+ cmp r0, 0x1
+ beq _081CEF2A
+ movs r0, 0
+ b _081CEF30
+_081CEF2A:
+ ldr r1, =0x00001828
+ adds r0, r4, r1
+ ldrb r0, [r0]
+_081CEF30:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CEF14
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokenav_unk_8.s b/asm/pokenav_unk_8.s
new file mode 100644
index 000000000..5bba161bb
--- /dev/null
+++ b/asm/pokenav_unk_8.s
@@ -0,0 +1,1377 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+@ File centered around AllocSubstruct(7)
+
+ thumb_func_start sub_81CEF3C
+sub_81CEF3C: @ 81CEF3C
+ push {r4,lr}
+ movs r0, 0x7
+ movs r1, 0x24
+ bl AllocSubstruct
+ adds r4, r0, 0
+ cmp r4, 0
+ beq _081CEF90
+ ldr r1, =0x000006ac
+ movs r0, 0x12
+ bl AllocSubstruct
+ str r0, [r4, 0x20]
+ cmp r0, 0
+ beq _081CEF90
+ ldr r0, =sub_81CF010
+ str r0, [r4]
+ ldr r0, =sub_81CF11C
+ movs r1, 0x1
+ bl CreateLoopedTask
+ str r0, [r4, 0x4]
+ movs r0, 0
+ str r0, [r4, 0x18]
+ bl sub_81C76AC
+ ldr r1, =gUnknown_086233A0
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ str r0, [r4, 0x14]
+ movs r0, 0x1
+ b _081CEF92
+ .pool
+_081CEF90:
+ movs r0, 0
+_081CEF92:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CEF3C
+
+ thumb_func_start sub_81CEF98
+sub_81CEF98: @ 81CEF98
+ push {r4,lr}
+ movs r0, 0x7
+ movs r1, 0x24
+ bl AllocSubstruct
+ adds r4, r0, 0
+ cmp r4, 0
+ beq _081CEFD4
+ movs r0, 0x12
+ bl GetSubstructPtr
+ str r0, [r4, 0x20]
+ ldr r0, =sub_81CF030
+ str r0, [r4]
+ movs r0, 0x1
+ str r0, [r4, 0x18]
+ bl sub_81C76AC
+ ldr r1, =gUnknown_086233A0
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ str r0, [r4, 0x14]
+ movs r0, 0x1
+ b _081CEFD6
+ .pool
+_081CEFD4:
+ movs r0, 0
+_081CEFD6:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CEF98
+
+ thumb_func_start sub_81CEFDC
+sub_81CEFDC: @ 81CEFDC
+ push {lr}
+ movs r0, 0x7
+ bl GetSubstructPtr
+ ldr r1, [r0]
+ bl _call_via_r1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CEFDC
+
+ thumb_func_start sub_81CEFF0
+sub_81CEFF0: @ 81CEFF0
+ push {lr}
+ movs r0, 0x7
+ bl GetSubstructPtr
+ ldr r0, [r0, 0x1C]
+ cmp r0, 0
+ bne _081CF004
+ movs r0, 0x12
+ bl FreePokenavSubstruct
+_081CF004:
+ movs r0, 0x7
+ bl FreePokenavSubstruct
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CEFF0
+
+ thumb_func_start sub_81CF010
+sub_81CF010: @ 81CF010
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, [r4, 0x4]
+ bl IsLoopedTaskActive
+ cmp r0, 0
+ bne _081CF022
+ ldr r0, =sub_81CF030
+ str r0, [r4]
+_081CF022:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CF010
+
+ thumb_func_start sub_81CF030
+sub_81CF030: @ 81CF030
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r2, =gMain
+ ldrh r1, [r2, 0x30]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _081CF048
+ movs r0, 0x1
+ b _081CF0A6
+ .pool
+_081CF048:
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _081CF054
+ movs r0, 0x2
+ b _081CF0A6
+_081CF054:
+ ldrh r1, [r2, 0x2E]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _081CF062
+ movs r0, 0x3
+ b _081CF0A6
+_081CF062:
+ movs r0, 0x10
+ ands r0, r1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r2, 0
+ beq _081CF072
+ movs r0, 0x4
+ b _081CF0A6
+_081CF072:
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _081CF088
+ str r2, [r4, 0x1C]
+ ldr r0, =sub_81CF0B0
+ str r0, [r4]
+ movs r0, 0x5
+ b _081CF0A6
+ .pool
+_081CF088:
+ movs r5, 0x1
+ adds r0, r5, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _081CF096
+ movs r0, 0
+ b _081CF0A6
+_081CF096:
+ bl GetSelectedMatchCall
+ ldr r1, [r4, 0x20]
+ strh r0, [r1, 0x2]
+ str r5, [r4, 0x1C]
+ ldr r0, =sub_81CF0B8
+ str r0, [r4]
+ movs r0, 0x6
+_081CF0A6:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CF030
+
+ thumb_func_start sub_81CF0B0
+sub_81CF0B0: @ 81CF0B0
+ ldr r0, =0x000186a3
+ bx lr
+ .pool
+ thumb_func_end sub_81CF0B0
+
+ thumb_func_start sub_81CF0B8
+sub_81CF0B8: @ 81CF0B8
+ ldr r0, =0x000186a9
+ bx lr
+ .pool
+ thumb_func_end sub_81CF0B8
+
+ thumb_func_start sub_81CF0C0
+sub_81CF0C0: @ 81CF0C0
+ push {lr}
+ movs r0, 0x7
+ bl GetSubstructPtr
+ ldr r0, [r0, 0x18]
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CF0C0
+
+ thumb_func_start sub_81CF0D0
+sub_81CF0D0: @ 81CF0D0
+ push {lr}
+ movs r0, 0x7
+ bl GetSubstructPtr
+ ldr r0, [r0, 0x20]
+ adds r0, 0x4
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CF0D0
+
+ thumb_func_start sub_81CF0E0
+sub_81CF0E0: @ 81CF0E0
+ push {lr}
+ movs r0, 0x7
+ bl GetSubstructPtr
+ ldr r0, [r0, 0x20]
+ ldrh r0, [r0]
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CF0E0
+
+ thumb_func_start sub_81CF0F0
+sub_81CF0F0: @ 81CF0F0
+ push {r4,lr}
+ movs r0, 0x7
+ bl GetSubstructPtr
+ adds r4, r0, 0
+ bl GetSelectedMatchCall
+ ldr r1, [r4, 0x20]
+ lsls r0, 2
+ adds r1, r0
+ ldrh r0, [r1, 0x6]
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CF0F0
+
+ thumb_func_start sub_81CF10C
+sub_81CF10C: @ 81CF10C
+ push {lr}
+ movs r0, 0x7
+ bl GetSubstructPtr
+ ldr r0, [r0, 0x20]
+ ldrh r0, [r0, 0x2]
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CF10C
+
+ thumb_func_start sub_81CF11C
+sub_81CF11C: @ 81CF11C
+ push {lr}
+ ldr r2, =gUnknown_086233B4
+ lsls r1, r0, 2
+ adds r1, r2
+ ldr r1, [r1]
+ bl _call_via_r1
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CF11C
+
+ thumb_func_start sub_81CF134
+sub_81CF134: @ 81CF134
+ push {r4-r6,lr}
+ sub sp, 0x4
+ movs r0, 0x7
+ bl GetSubstructPtr
+ adds r6, r0, 0
+ ldr r0, [r6, 0x20]
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, [r6, 0x20]
+ strh r1, [r0, 0x2]
+ ldr r1, =0xffffff00
+ ldr r0, [sp]
+ ands r0, r1
+ movs r1, 0xE
+ orrs r0, r1
+ str r0, [sp]
+ movs r5, 0
+_081CF158:
+ movs r0, 0x64
+ adds r1, r5, 0
+ muls r1, r0
+ ldr r0, =gPlayerParty
+ adds r4, r1, r0
+ adds r0, r4, 0
+ movs r1, 0x5
+ bl GetMonData
+ cmp r0, 0
+ beq _081CF1AA
+ adds r0, r4, 0
+ movs r1, 0x6
+ bl GetMonData
+ cmp r0, 0
+ bne _081CF1A4
+ lsls r1, r5, 24
+ lsrs r1, 16
+ ldr r2, =0xffff00ff
+ ldr r0, [sp]
+ ands r0, r2
+ orrs r0, r1
+ str r0, [sp]
+ ldr r1, [r6, 0x14]
+ adds r0, r4, 0
+ bl GetMonData
+ lsls r0, 16
+ ldr r2, =0x0000ffff
+ ldr r1, [sp]
+ ands r1, r2
+ orrs r1, r0
+ str r1, [sp]
+ adds r0, r6, 0
+ mov r1, sp
+ bl sub_81CF2C4
+_081CF1A4:
+ adds r5, 0x1
+ cmp r5, 0x5
+ ble _081CF158
+_081CF1AA:
+ movs r0, 0x1
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CF134
+
+ thumb_func_start sub_81CF1C4
+sub_81CF1C4: @ 81CF1C4
+ push {lr}
+ movs r0, 0x7
+ bl GetSubstructPtr
+ movs r1, 0
+ str r1, [r0, 0x10]
+ str r1, [r0, 0xC]
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CF1C4
+
+ thumb_func_start sub_81CF1D8
+sub_81CF1D8: @ 81CF1D8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ movs r0, 0x7
+ bl GetSubstructPtr
+ adds r6, r0, 0
+ ldr r5, [r6, 0xC]
+ ldr r4, [r6, 0x10]
+ movs r0, 0
+ mov r8, r0
+ cmp r5, 0xD
+ bgt _081CF268
+_081CF1F4:
+ cmp r4, 0x1D
+ bgt _081CF260
+ lsls r0, r5, 24
+ lsrs r7, r0, 24
+_081CF1FC:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl CheckBoxMonSanityAt
+ cmp r0, 0
+ beq _081CF23A
+ ldr r1, =0xffffff00
+ ldr r0, [sp]
+ ands r0, r1
+ orrs r0, r7
+ lsls r1, r4, 24
+ lsrs r1, 24
+ lsls r3, r1, 8
+ ldr r2, =0xffff00ff
+ ands r0, r2
+ orrs r0, r3
+ str r0, [sp]
+ ldr r2, [r6, 0x14]
+ adds r0, r7, 0
+ bl GetBoxMonDataAt
+ lsls r0, 16
+ ldr r2, =0x0000ffff
+ ldr r1, [sp]
+ ands r1, r2
+ orrs r1, r0
+ str r1, [sp]
+ adds r0, r6, 0
+ mov r1, sp
+ bl sub_81CF2C4
+_081CF23A:
+ movs r0, 0x1
+ add r8, r0
+ adds r4, 0x1
+ mov r0, r8
+ cmp r0, 0xE
+ ble _081CF25C
+ str r5, [r6, 0xC]
+ str r4, [r6, 0x10]
+ movs r0, 0x3
+ b _081CF26A
+ .pool
+_081CF25C:
+ cmp r4, 0x1D
+ ble _081CF1FC
+_081CF260:
+ movs r4, 0
+ adds r5, 0x1
+ cmp r5, 0xD
+ ble _081CF1F4
+_081CF268:
+ movs r0, 0x1
+_081CF26A:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CF1D8
+
+ thumb_func_start sub_81CF278
+sub_81CF278: @ 81CF278
+ push {r4-r6,lr}
+ movs r0, 0x7
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ ldr r0, [r5, 0x20]
+ ldrh r6, [r0]
+ ldrh r4, [r0, 0x6]
+ movs r1, 0x1
+ strh r1, [r0, 0x6]
+ movs r3, 0x1
+ cmp r3, r6
+ bge _081CF2B8
+_081CF292:
+ ldr r2, [r5, 0x20]
+ lsls r0, r3, 2
+ adds r1, r2, r0
+ ldrh r0, [r1, 0x6]
+ cmp r0, r4
+ bne _081CF2AC
+ subs r0, r3, 0x1
+ lsls r0, 2
+ adds r0, r2, r0
+ ldrh r0, [r0, 0x6]
+ strh r0, [r1, 0x6]
+ adds r0, r3, 0x1
+ b _081CF2B2
+_081CF2AC:
+ adds r4, r0, 0
+ adds r0, r3, 0x1
+ strh r0, [r1, 0x6]
+_081CF2B2:
+ adds r3, r0, 0
+ cmp r3, r6
+ blt _081CF292
+_081CF2B8:
+ movs r0, 0x1
+ str r0, [r5, 0x18]
+ movs r0, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CF278
+
+ thumb_func_start sub_81CF2C4
+sub_81CF2C4: @ 81CF2C4
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ adds r7, r1, 0
+ movs r1, 0
+ ldr r0, [r5, 0x20]
+ ldrh r2, [r0]
+ lsrs r3, r2, 1
+ cmp r2, r3
+ beq _081CF2F4
+ adds r6, r0, 0
+ ldrh r4, [r7, 0x2]
+_081CF2DA:
+ lsls r0, r3, 2
+ adds r0, r6, r0
+ ldrh r0, [r0, 0x6]
+ cmp r4, r0
+ bls _081CF2E8
+ adds r2, r3, 0
+ b _081CF2EA
+_081CF2E8:
+ adds r1, r3, 0x1
+_081CF2EA:
+ subs r0, r2, r1
+ lsrs r0, 1
+ adds r3, r1, r0
+ cmp r2, r3
+ bne _081CF2DA
+_081CF2F4:
+ ldr r0, [r5, 0x20]
+ ldrh r2, [r0]
+ lsls r6, r3, 2
+ cmp r2, r3
+ bls _081CF318
+ lsls r0, r2, 2
+ subs r4, r0, 0x4
+_081CF302:
+ ldr r0, [r5, 0x20]
+ lsls r1, r2, 2
+ adds r0, 0x4
+ adds r1, r0, r1
+ adds r0, r4
+ ldr r0, [r0]
+ str r0, [r1]
+ subs r4, 0x4
+ subs r2, 0x1
+ cmp r2, r3
+ bhi _081CF302
+_081CF318:
+ ldr r0, [r5, 0x20]
+ adds r0, 0x4
+ adds r0, r6
+ ldr r1, [r7]
+ str r1, [r0]
+ ldr r1, [r5, 0x20]
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CF2C4
+
+ thumb_func_start sub_81CF330
+sub_81CF330: @ 81CF330
+ push {r4,lr}
+ movs r1, 0x81
+ lsls r1, 4
+ movs r0, 0x8
+ bl AllocSubstruct
+ adds r4, r0, 0
+ cmp r4, 0
+ beq _081CF360
+ ldr r0, =sub_81CF418
+ movs r1, 0x1
+ bl CreateLoopedTask
+ str r0, [r4, 0x4]
+ ldr r0, =sub_81CF3E4
+ str r0, [r4]
+ movs r0, 0
+ str r0, [r4, 0xC]
+ movs r0, 0x1
+ b _081CF362
+ .pool
+_081CF360:
+ movs r0, 0
+_081CF362:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CF330
+
+ thumb_func_start sub_81CF368
+sub_81CF368: @ 81CF368
+ push {r4,lr}
+ movs r1, 0x81
+ lsls r1, 4
+ movs r0, 0x8
+ bl AllocSubstruct
+ adds r4, r0, 0
+ cmp r4, 0
+ beq _081CF398
+ ldr r0, =sub_81CF418
+ movs r1, 0x1
+ bl CreateLoopedTask
+ str r0, [r4, 0x4]
+ ldr r0, =sub_81CF3E4
+ str r0, [r4]
+ movs r0, 0x1
+ str r0, [r4, 0xC]
+ b _081CF39A
+ .pool
+_081CF398:
+ movs r0, 0
+_081CF39A:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CF368
+
+ thumb_func_start sub_81CF3A0
+sub_81CF3A0: @ 81CF3A0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0x8
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ ldr r0, =gUnknown_08623598
+ lsls r4, 2
+ adds r4, r0
+ ldr r0, [r4]
+ movs r1, 0x1
+ bl CreateLoopedTask
+ str r0, [r5, 0x4]
+ ldr r0, =sub_81CF3E4
+ str r0, [r5]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CF3A0
+
+ thumb_func_start sub_81CF3D0
+sub_81CF3D0: @ 81CF3D0
+ push {lr}
+ movs r0, 0x8
+ bl GetSubstructPtr
+ ldr r0, [r0]
+ bl _call_via_r0
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CF3D0
+
+ thumb_func_start sub_81CF3E4
+sub_81CF3E4: @ 81CF3E4
+ push {lr}
+ movs r0, 0x8
+ bl GetSubstructPtr
+ ldr r0, [r0, 0x4]
+ bl IsLoopedTaskActive
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CF3E4
+
+ thumb_func_start sub_81CF3F8
+sub_81CF3F8: @ 81CF3F8
+ push {r4,lr}
+ movs r0, 0x8
+ bl GetSubstructPtr
+ adds r4, r0, 0
+ bl sub_81C8234
+ ldrb r0, [r4, 0x8]
+ bl RemoveWindow
+ movs r0, 0x8
+ bl FreePokenavSubstruct
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CF3F8
+
+ thumb_func_start sub_81CF418
+sub_81CF418: @ 81CF418
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ movs r0, 0x8
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ cmp r4, 0x5
+ bls _081CF42C
+ b _081CF56E
+_081CF42C:
+ lsls r0, r4, 2
+ ldr r1, =_081CF43C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_081CF43C:
+ .4byte _081CF454
+ .4byte _081CF4AC
+ .4byte _081CF4C0
+ .4byte _081CF4E0
+ .4byte _081CF4F6
+ .4byte _081CF55A
+_081CF454:
+ ldr r0, =gUnknown_08623590
+ movs r1, 0x2
+ bl InitBgTemplates
+ ldr r1, =gUnknown_086233E4
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x1
+ movs r2, 0
+ movs r3, 0
+ bl decompress_and_copy_tile_data_to_vram
+ adds r1, r5, 0
+ adds r1, 0x10
+ movs r0, 0x1
+ bl SetBgTilemapBuffer
+ ldr r1, =gUnknown_086234AC
+ movs r0, 0x1
+ movs r2, 0
+ movs r3, 0
+ bl CopyToBgTilemapBuffer
+ movs r0, 0x1
+ bl CopyBgTilemapBufferToVram
+ ldr r0, =gUnknown_086233C4
+ movs r1, 0x10
+ movs r2, 0x20
+ bl CopyPaletteIntoBufferUnfaded
+ movs r0, 0x1
+ bl CopyBgTilemapBufferToVram
+_081CF498:
+ movs r0, 0
+ b _081CF570
+ .pool
+_081CF4AC:
+ bl free_temp_tile_data_buffers_if_possible
+ lsls r0, 24
+ cmp r0, 0
+ bne _081CF56A
+ bl sub_81CF0C0
+ cmp r0, 0
+ beq _081CF56A
+ b _081CF498
+_081CF4C0:
+ bl free_temp_tile_data_buffers_if_possible
+ lsls r0, 24
+ cmp r0, 0
+ bne _081CF56A
+ ldr r0, =gUnknown_08623570
+ movs r1, 0x20
+ movs r2, 0x20
+ bl CopyPaletteIntoBufferUnfaded
+ bl sub_81CF88C
+ b _081CF498
+ .pool
+_081CF4E0:
+ bl sub_81C8224
+ cmp r0, 0
+ bne _081CF56A
+ adds r0, r5, 0
+ bl sub_81CF7C8
+ movs r0, 0x3
+ bl sub_81C7BA4
+ b _081CF498
+_081CF4F6:
+ bl free_temp_tile_data_buffers_if_possible
+ lsls r0, 24
+ cmp r0, 0
+ bne _081CF56A
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ movs r0, 0x1
+ bl ShowBg
+ movs r0, 0x2
+ bl ShowBg
+ movs r0, 0x3
+ bl HideBg
+ ldr r0, [r5, 0xC]
+ cmp r0, 0
+ bne _081CF552
+ bl sub_81C76AC
+ adds r4, r0, 0
+ adds r4, 0x8
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r4, 0
+ bl LoadLeftHeaderGfxForIndex
+ adds r0, r4, 0
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_81C7FA0
+ movs r0, 0x1
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_81C7FA0
+_081CF552:
+ movs r0, 0x1
+ bl sub_81C7AC0
+ b _081CF498
+_081CF55A:
+ bl IsPaletteFadeActive
+ cmp r0, 0
+ bne _081CF56A
+ bl sub_81C8010
+ cmp r0, 0
+ beq _081CF56E
+_081CF56A:
+ movs r0, 0x2
+ b _081CF570
+_081CF56E:
+ movs r0, 0x4
+_081CF570:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CF418
+
+ thumb_func_start sub_81CF578
+sub_81CF578: @ 81CF578
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0x8
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ cmp r4, 0x1
+ beq _081CF5C6
+ cmp r4, 0x1
+ bgt _081CF592
+ cmp r4, 0
+ beq _081CF59C
+ b _081CF5E6
+_081CF592:
+ cmp r4, 0x2
+ beq _081CF5CE
+ cmp r4, 0x3
+ beq _081CF5D8
+ b _081CF5E6
+_081CF59C:
+ bl MatchCall_MoveCursorUp
+ cmp r0, 0x1
+ beq _081CF5B4
+ cmp r0, 0x1
+ bgt _081CF5AE
+ cmp r0, 0
+ beq _081CF5E6
+ b _081CF5D4
+_081CF5AE:
+ cmp r0, 0x2
+ beq _081CF5BE
+ b _081CF5D4
+_081CF5B4:
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0x7
+ b _081CF5E8
+_081CF5BE:
+ movs r0, 0x5
+ bl PlaySE
+ b _081CF5D4
+_081CF5C6:
+ bl sub_81C8630
+ cmp r0, 0
+ bne _081CF5E2
+_081CF5CE:
+ adds r0, r5, 0
+ bl sub_81CF7F4
+_081CF5D4:
+ movs r0, 0
+ b _081CF5E8
+_081CF5D8:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ beq _081CF5E6
+_081CF5E2:
+ movs r0, 0x2
+ b _081CF5E8
+_081CF5E6:
+ movs r0, 0x4
+_081CF5E8:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CF578
+
+ thumb_func_start sub_81CF5F0
+sub_81CF5F0: @ 81CF5F0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0x8
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ cmp r4, 0x1
+ beq _081CF63E
+ cmp r4, 0x1
+ bgt _081CF60A
+ cmp r4, 0
+ beq _081CF614
+ b _081CF65E
+_081CF60A:
+ cmp r4, 0x2
+ beq _081CF646
+ cmp r4, 0x3
+ beq _081CF650
+ b _081CF65E
+_081CF614:
+ bl MatchCall_MoveCursorDown
+ cmp r0, 0x1
+ beq _081CF62C
+ cmp r0, 0x1
+ bgt _081CF626
+ cmp r0, 0
+ beq _081CF65E
+ b _081CF64C
+_081CF626:
+ cmp r0, 0x2
+ beq _081CF636
+ b _081CF64C
+_081CF62C:
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0x7
+ b _081CF660
+_081CF636:
+ movs r0, 0x5
+ bl PlaySE
+ b _081CF64C
+_081CF63E:
+ bl sub_81C8630
+ cmp r0, 0
+ bne _081CF65A
+_081CF646:
+ adds r0, r5, 0
+ bl sub_81CF7F4
+_081CF64C:
+ movs r0, 0
+ b _081CF660
+_081CF650:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ beq _081CF65E
+_081CF65A:
+ movs r0, 0x2
+ b _081CF660
+_081CF65E:
+ movs r0, 0x4
+_081CF660:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CF5F0
+
+ thumb_func_start sub_81CF668
+sub_81CF668: @ 81CF668
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0x8
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ cmp r4, 0x1
+ beq _081CF6B6
+ cmp r4, 0x1
+ bgt _081CF682
+ cmp r4, 0
+ beq _081CF68C
+ b _081CF6D6
+_081CF682:
+ cmp r4, 0x2
+ beq _081CF6BE
+ cmp r4, 0x3
+ beq _081CF6C8
+ b _081CF6D6
+_081CF68C:
+ bl MatchCall_PageUp
+ cmp r0, 0x1
+ beq _081CF6A4
+ cmp r0, 0x1
+ bgt _081CF69E
+ cmp r0, 0
+ beq _081CF6D6
+ b _081CF6C4
+_081CF69E:
+ cmp r0, 0x2
+ beq _081CF6AE
+ b _081CF6C4
+_081CF6A4:
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0x7
+ b _081CF6D8
+_081CF6AE:
+ movs r0, 0x5
+ bl PlaySE
+ b _081CF6C4
+_081CF6B6:
+ bl sub_81C8630
+ cmp r0, 0
+ bne _081CF6D2
+_081CF6BE:
+ adds r0, r5, 0
+ bl sub_81CF7F4
+_081CF6C4:
+ movs r0, 0
+ b _081CF6D8
+_081CF6C8:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ beq _081CF6D6
+_081CF6D2:
+ movs r0, 0x2
+ b _081CF6D8
+_081CF6D6:
+ movs r0, 0x4
+_081CF6D8:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CF668
+
+ thumb_func_start sub_81CF6E0
+sub_81CF6E0: @ 81CF6E0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0x8
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ cmp r4, 0x1
+ beq _081CF72E
+ cmp r4, 0x1
+ bgt _081CF6FA
+ cmp r4, 0
+ beq _081CF704
+ b _081CF74E
+_081CF6FA:
+ cmp r4, 0x2
+ beq _081CF736
+ cmp r4, 0x3
+ beq _081CF740
+ b _081CF74E
+_081CF704:
+ bl MatchCall_PageDown
+ cmp r0, 0x1
+ beq _081CF71C
+ cmp r0, 0x1
+ bgt _081CF716
+ cmp r0, 0
+ beq _081CF74E
+ b _081CF73C
+_081CF716:
+ cmp r0, 0x2
+ beq _081CF726
+ b _081CF73C
+_081CF71C:
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0x7
+ b _081CF750
+_081CF726:
+ movs r0, 0x5
+ bl PlaySE
+ b _081CF73C
+_081CF72E:
+ bl sub_81C8630
+ cmp r0, 0
+ bne _081CF74A
+_081CF736:
+ adds r0, r5, 0
+ bl sub_81CF7F4
+_081CF73C:
+ movs r0, 0
+ b _081CF750
+_081CF740:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ beq _081CF74E
+_081CF74A:
+ movs r0, 0x2
+ b _081CF750
+_081CF74E:
+ movs r0, 0x4
+_081CF750:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CF6E0
+
+ thumb_func_start sub_81CF758
+sub_81CF758: @ 81CF758
+ push {lr}
+ cmp r0, 0
+ beq _081CF764
+ cmp r0, 0x1
+ beq _081CF778
+ b _081CF790
+_081CF764:
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0
+ bl sub_81C7AC0
+ bl sub_81C78A0
+ movs r0, 0
+ b _081CF792
+_081CF778:
+ bl IsPaletteFadeActive
+ cmp r0, 0
+ bne _081CF788
+ bl MainMenuLoopedTaskIsBusy
+ cmp r0, 0
+ beq _081CF78C
+_081CF788:
+ movs r0, 0x2
+ b _081CF792
+_081CF78C:
+ bl sub_81C7FDC
+_081CF790:
+ movs r0, 0x4
+_081CF792:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CF758
+
+ thumb_func_start sub_81CF798
+sub_81CF798: @ 81CF798
+ push {lr}
+ cmp r0, 0
+ beq _081CF7A4
+ cmp r0, 0x1
+ beq _081CF7B4
+ b _081CF7C0
+_081CF7A4:
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0
+ bl sub_81C7AC0
+ movs r0, 0
+ b _081CF7C2
+_081CF7B4:
+ bl IsPaletteFadeActive
+ cmp r0, 0
+ beq _081CF7C0
+ movs r0, 0x2
+ b _081CF7C2
+_081CF7C0:
+ movs r0, 0x4
+_081CF7C2:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CF798
+
+ thumb_func_start sub_81CF7C8
+sub_81CF7C8: @ 81CF7C8
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, =gUnknown_086235B4
+ bl AddWindow
+ strh r0, [r4, 0x8]
+ lsls r0, 24
+ lsrs r0, 24
+ bl PutWindowTilemap
+ ldrb r0, [r4, 0x8]
+ movs r1, 0x1
+ bl CopyWindowToVram
+ adds r0, r4, 0
+ bl sub_81CF7F4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CF7C8
+
+ thumb_func_start sub_81CF7F4
+sub_81CF7F4: @ 81CF7F4
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0xC
+ mov r8, r0
+ bl sub_81CF0F0
+ adds r7, r0, 0
+ bl DynamicPlaceholderTextUtil_Reset
+ ldr r4, =gStringVar1
+ movs r0, 0
+ adds r1, r4, 0
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
+ movs r0, 0xFF
+ strb r0, [r4]
+ ldr r5, =gStringVar2
+ ldr r1, =gText_NumberF700
+ adds r0, r5, 0
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
+ mov r1, r8
+ ldrb r0, [r1, 0x8]
+ movs r1, 0x1
+ mov r10, r1
+ str r1, [sp]
+ movs r1, 0xFF
+ mov r9, r1
+ str r1, [sp, 0x4]
+ movs r6, 0
+ str r6, [sp, 0x8]
+ movs r1, 0x1
+ adds r2, r5, 0
+ movs r3, 0x4
+ bl AddTextPrinterParameterized
+ adds r0, r4, 0
+ adds r1, r7, 0
+ movs r2, 0x1
+ movs r3, 0x3
+ bl ConvertIntToDecimalStringN
+ mov r1, r8
+ ldrb r0, [r1, 0x8]
+ mov r1, r10
+ str r1, [sp]
+ mov r1, r9
+ str r1, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r1, 0x1
+ adds r2, r4, 0
+ movs r3, 0x22
+ bl AddTextPrinterParameterized
+ mov r1, r8
+ ldrb r0, [r1, 0x8]
+ movs r1, 0x2
+ bl CopyWindowToVram
+ add sp, 0xC
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CF7F4
+
+ thumb_func_start sub_81CF88C
+sub_81CF88C: @ 81CF88C
+ push {r4,lr}
+ sub sp, 0x18
+ bl sub_81CF0D0
+ str r0, [sp]
+ bl sub_81CF0E0
+ mov r1, sp
+ movs r4, 0
+ strh r0, [r1, 0x4]
+ movs r0, 0x4
+ strb r0, [r1, 0x8]
+ bl sub_81CF10C
+ mov r1, sp
+ strh r0, [r1, 0x6]
+ movs r0, 0xD
+ strb r0, [r1, 0x9]
+ movs r0, 0x11
+ strb r0, [r1, 0xA]
+ mov r0, sp
+ movs r2, 0x1
+ strb r2, [r0, 0xB]
+ movs r0, 0x8
+ strb r0, [r1, 0xC]
+ movs r0, 0x2
+ strb r0, [r1, 0xD]
+ mov r0, sp
+ strb r2, [r0, 0xE]
+ ldr r0, =sub_81CF8E4
+ str r0, [sp, 0x10]
+ str r4, [sp, 0x14]
+ ldr r0, =gUnknown_08623594
+ movs r2, 0
+ bl sub_81C81D4
+ add sp, 0x18
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CF88C
+
+ thumb_func_start sub_81CF8E4
+sub_81CF8E4: @ 81CF8E4
+ push {r4-r7,lr}
+ adds r2, r0, 0
+ adds r6, r1, 0
+ ldrb r0, [r2]
+ cmp r0, 0xE
+ bne _081CF924
+ ldrb r1, [r2, 0x1]
+ movs r0, 0x64
+ adds r4, r1, 0
+ muls r4, r0
+ ldr r0, =gPlayerParty
+ adds r4, r0
+ adds r0, r4, 0
+ bl GetMonGender
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r4, 0
+ bl GetLevelFromMonExp
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r2, =gStringVar3
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl GetMonData
+ b _081CF94A
+ .pool
+_081CF924:
+ ldrb r0, [r2]
+ ldrb r1, [r2, 0x1]
+ bl GetBoxedMonPtr
+ adds r4, r0, 0
+ bl GetBoxMonGender
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r4, 0
+ bl GetLevelFromBoxMonExp
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r2, =gStringVar3
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl GetBoxMonData
+_081CF94A:
+ ldr r4, =gStringVar3
+ adds r0, r4, 0
+ bl StringGetEnd10
+ adds r0, r6, 0
+ movs r1, 0x1
+ adds r2, r4, 0
+ movs r3, 0x3C
+ bl sub_81DB494
+ adds r6, r0, 0
+ cmp r5, 0
+ beq _081CF974
+ cmp r5, 0xFE
+ beq _081CF97C
+ ldr r1, =gUnknown_086235D4
+ b _081CF97E
+ .pool
+_081CF974:
+ ldr r1, =gUnknown_086235BC
+ b _081CF97E
+ .pool
+_081CF97C:
+ ldr r1, =gUnknown_086235C8
+_081CF97E:
+ ldr r4, =gStringVar1
+ adds r0, r4, 0
+ bl StringCopy
+ movs r1, 0xBA
+ strb r1, [r0]
+ adds r0, 0x1
+ movs r1, 0xF9
+ strb r1, [r0]
+ adds r0, 0x1
+ movs r1, 0x5
+ strb r1, [r0]
+ adds r0, 0x1
+ adds r1, r7, 0
+ movs r2, 0
+ movs r3, 0x3
+ bl ConvertIntToDecimalStringN
+ adds r0, r6, 0
+ movs r1, 0x1
+ adds r2, r4, 0
+ movs r3, 0x28
+ bl sub_81DB494
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CF8E4
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokenav_unk_9.s b/asm/pokenav_unk_9.s
new file mode 100644
index 000000000..7f9d5d15b
--- /dev/null
+++ b/asm/pokenav_unk_9.s
@@ -0,0 +1,1393 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+@ File centered around AllocSubstruct(9)
+
+ thumb_func_start sub_81CF9BC
+sub_81CF9BC: @ 81CF9BC
+ push {r4,lr}
+ movs r0, 0x9
+ movs r1, 0x20
+ bl AllocSubstruct
+ adds r4, r0, 0
+ cmp r4, 0
+ beq _081CF9FC
+ ldr r1, =0x000006ac
+ movs r0, 0x12
+ bl AllocSubstruct
+ str r0, [r4, 0x1C]
+ cmp r0, 0
+ beq _081CF9FC
+ ldr r0, =sub_81CFA68
+ str r0, [r4]
+ ldr r0, =sub_81CFB74
+ movs r1, 0x1
+ bl CreateLoopedTask
+ str r0, [r4, 0x4]
+ movs r0, 0
+ str r0, [r4, 0x14]
+ movs r0, 0x1
+ b _081CF9FE
+ .pool
+_081CF9FC:
+ movs r0, 0
+_081CF9FE:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CF9BC
+
+ thumb_func_start sub_81CFA04
+sub_81CFA04: @ 81CFA04
+ push {r4,lr}
+ movs r0, 0x9
+ movs r1, 0x20
+ bl AllocSubstruct
+ adds r4, r0, 0
+ cmp r4, 0
+ beq _081CFA2C
+ movs r0, 0x12
+ bl GetSubstructPtr
+ str r0, [r4, 0x1C]
+ ldr r0, =sub_81CFA88
+ str r0, [r4]
+ movs r0, 0x1
+ str r0, [r4, 0x14]
+ b _081CFA2E
+ .pool
+_081CFA2C:
+ movs r0, 0
+_081CFA2E:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CFA04
+
+ thumb_func_start sub_81CFA34
+sub_81CFA34: @ 81CFA34
+ push {lr}
+ movs r0, 0x9
+ bl GetSubstructPtr
+ ldr r1, [r0]
+ bl _call_via_r1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CFA34
+
+ thumb_func_start sub_81CFA48
+sub_81CFA48: @ 81CFA48
+ push {lr}
+ movs r0, 0x9
+ bl GetSubstructPtr
+ ldr r0, [r0, 0x18]
+ cmp r0, 0
+ bne _081CFA5C
+ movs r0, 0x12
+ bl FreePokenavSubstruct
+_081CFA5C:
+ movs r0, 0x9
+ bl FreePokenavSubstruct
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CFA48
+
+ thumb_func_start sub_81CFA68
+sub_81CFA68: @ 81CFA68
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, [r4, 0x4]
+ bl IsLoopedTaskActive
+ cmp r0, 0
+ bne _081CFA7A
+ ldr r0, =sub_81CFA88
+ str r0, [r4]
+_081CFA7A:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CFA68
+
+ thumb_func_start sub_81CFA88
+sub_81CFA88: @ 81CFA88
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r2, =gMain
+ ldrh r1, [r2, 0x30]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _081CFAA0
+ movs r0, 0x1
+ b _081CFAFE
+ .pool
+_081CFAA0:
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _081CFAAC
+ movs r0, 0x2
+ b _081CFAFE
+_081CFAAC:
+ ldrh r1, [r2, 0x2E]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _081CFABA
+ movs r0, 0x3
+ b _081CFAFE
+_081CFABA:
+ movs r0, 0x10
+ ands r0, r1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r2, 0
+ beq _081CFACA
+ movs r0, 0x4
+ b _081CFAFE
+_081CFACA:
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _081CFAE0
+ str r2, [r4, 0x18]
+ ldr r0, =sub_81CFB08
+ str r0, [r4]
+ movs r0, 0x5
+ b _081CFAFE
+ .pool
+_081CFAE0:
+ movs r5, 0x1
+ adds r0, r5, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _081CFAEE
+ movs r0, 0
+ b _081CFAFE
+_081CFAEE:
+ bl GetSelectedMatchCall
+ ldr r1, [r4, 0x1C]
+ strh r0, [r1, 0x2]
+ str r5, [r4, 0x18]
+ ldr r0, =sub_81CFB10
+ str r0, [r4]
+ movs r0, 0x6
+_081CFAFE:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CFA88
+
+ thumb_func_start sub_81CFB08
+sub_81CFB08: @ 81CFB08
+ ldr r0, =0x000186a5
+ bx lr
+ .pool
+ thumb_func_end sub_81CFB08
+
+ thumb_func_start sub_81CFB10
+sub_81CFB10: @ 81CFB10
+ ldr r0, =0x000186ad
+ bx lr
+ .pool
+ thumb_func_end sub_81CFB10
+
+ thumb_func_start sub_81CFB18
+sub_81CFB18: @ 81CFB18
+ push {lr}
+ movs r0, 0x9
+ bl GetSubstructPtr
+ ldr r0, [r0, 0x14]
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CFB18
+
+ thumb_func_start sub_81CFB28
+sub_81CFB28: @ 81CFB28
+ push {lr}
+ movs r0, 0x9
+ bl GetSubstructPtr
+ ldr r0, [r0, 0x1C]
+ adds r0, 0x4
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CFB28
+
+ thumb_func_start sub_81CFB38
+sub_81CFB38: @ 81CFB38
+ push {lr}
+ movs r0, 0x9
+ bl GetSubstructPtr
+ ldr r0, [r0, 0x1C]
+ ldrh r0, [r0]
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CFB38
+
+ thumb_func_start sub_81CFB48
+sub_81CFB48: @ 81CFB48
+ push {r4,lr}
+ movs r0, 0x9
+ bl GetSubstructPtr
+ adds r4, r0, 0
+ bl GetSelectedMatchCall
+ ldr r1, [r4, 0x1C]
+ lsls r0, 2
+ adds r1, r0
+ ldrh r0, [r1, 0x6]
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CFB48
+
+ thumb_func_start sub_81CFB64
+sub_81CFB64: @ 81CFB64
+ push {lr}
+ movs r0, 0x9
+ bl GetSubstructPtr
+ ldr r0, [r0, 0x1C]
+ ldrh r0, [r0, 0x2]
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CFB64
+
+ thumb_func_start sub_81CFB74
+sub_81CFB74: @ 81CFB74
+ push {lr}
+ ldr r2, =gUnknown_086235D8
+ lsls r1, r0, 2
+ adds r1, r2
+ ldr r1, [r1]
+ bl _call_via_r1
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CFB74
+
+ thumb_func_start sub_81CFB8C
+sub_81CFB8C: @ 81CFB8C
+ push {r4-r6,lr}
+ sub sp, 0x4
+ movs r0, 0x9
+ bl GetSubstructPtr
+ adds r6, r0, 0
+ ldr r0, [r6, 0x1C]
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, [r6, 0x1C]
+ strh r1, [r0, 0x2]
+ ldr r1, =0xffffff00
+ ldr r0, [sp]
+ ands r0, r1
+ movs r1, 0xE
+ orrs r0, r1
+ str r0, [sp]
+ movs r5, 0
+_081CFBB0:
+ movs r0, 0x64
+ adds r1, r5, 0
+ muls r1, r0
+ ldr r0, =gPlayerParty
+ adds r4, r1, r0
+ adds r0, r4, 0
+ movs r1, 0x5
+ bl GetMonData
+ cmp r0, 0
+ beq _081CFC10
+ adds r0, r4, 0
+ movs r1, 0x6
+ bl GetMonData
+ cmp r0, 0
+ bne _081CFC0A
+ adds r0, r4, 0
+ movs r1, 0x4
+ bl GetMonData
+ cmp r0, 0
+ bne _081CFC0A
+ adds r0, r4, 0
+ movs r1, 0x52
+ bl GetMonData
+ adds r3, r0, 0
+ cmp r3, 0
+ beq _081CFC0A
+ lsls r1, r5, 24
+ lsrs r1, 16
+ ldr r2, =0xffff00ff
+ ldr r0, [sp]
+ ands r0, r2
+ orrs r0, r1
+ lsls r2, r3, 16
+ ldr r1, =0x0000ffff
+ ands r0, r1
+ orrs r0, r2
+ str r0, [sp]
+ adds r0, r6, 0
+ mov r1, sp
+ bl sub_81CFCEC
+_081CFC0A:
+ adds r5, 0x1
+ cmp r5, 0x5
+ ble _081CFBB0
+_081CFC10:
+ movs r0, 0x1
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_81CFB8C
+
+ thumb_func_start sub_81CFC2C
+sub_81CFC2C: @ 81CFC2C
+ push {lr}
+ movs r0, 0x9
+ bl GetSubstructPtr
+ movs r1, 0
+ str r1, [r0, 0x10]
+ str r1, [r0, 0xC]
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CFC2C
+
+ thumb_func_start sub_81CFC40
+sub_81CFC40: @ 81CFC40
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x4
+ movs r0, 0x9
+ bl GetSubstructPtr
+ mov r8, r0
+ ldr r7, [r0, 0xC]
+ ldr r6, [r0, 0x10]
+ movs r0, 0
+ mov r9, r0
+ cmp r7, 0xD
+ bgt _081CFCD4
+ b _081CFCC8
+_081CFC60:
+ adds r0, r7, 0
+ adds r1, r6, 0
+ bl CheckBoxMonSanityAt
+ cmp r0, 0
+ beq _081CFCA6
+ lsls r0, r7, 24
+ lsrs r5, r0, 24
+ lsls r0, r6, 24
+ lsrs r4, r0, 24
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0x52
+ bl GetBoxMonDataAt
+ adds r3, r0, 0
+ cmp r3, 0
+ beq _081CFCA6
+ ldr r1, =0xffffff00
+ ldr r0, [sp]
+ ands r0, r1
+ orrs r0, r5
+ lsls r2, r4, 8
+ ldr r1, =0xffff00ff
+ ands r0, r1
+ orrs r0, r2
+ lsls r2, r3, 16
+ ldr r1, =0x0000ffff
+ ands r0, r1
+ orrs r0, r2
+ str r0, [sp]
+ mov r0, r8
+ mov r1, sp
+ bl sub_81CFCEC
+_081CFCA6:
+ movs r1, 0x1
+ add r9, r1
+ adds r6, 0x1
+ mov r0, r9
+ cmp r0, 0xE
+ ble _081CFCC8
+ mov r1, r8
+ str r7, [r1, 0xC]
+ str r6, [r1, 0x10]
+ movs r0, 0x3
+ b _081CFCDC
+ .pool
+_081CFCC8:
+ cmp r6, 0x1D
+ ble _081CFC60
+ movs r6, 0
+ adds r7, 0x1
+ cmp r7, 0xD
+ ble _081CFCC8
+_081CFCD4:
+ movs r0, 0x1
+ mov r1, r8
+ str r0, [r1, 0x14]
+ movs r0, 0x4
+_081CFCDC:
+ add sp, 0x4
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CFC40
+
+ thumb_func_start sub_81CFCEC
+sub_81CFCEC: @ 81CFCEC
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ adds r7, r1, 0
+ movs r1, 0
+ ldr r0, [r5, 0x1C]
+ ldrh r2, [r0]
+ lsrs r3, r2, 1
+ cmp r2, r3
+ beq _081CFD1C
+ adds r6, r0, 0
+ ldrh r4, [r7, 0x2]
+_081CFD02:
+ lsls r0, r3, 2
+ adds r0, r6, r0
+ ldrh r0, [r0, 0x6]
+ cmp r4, r0
+ bls _081CFD10
+ adds r2, r3, 0
+ b _081CFD12
+_081CFD10:
+ adds r1, r3, 0x1
+_081CFD12:
+ subs r0, r2, r1
+ lsrs r0, 1
+ adds r3, r1, r0
+ cmp r2, r3
+ bne _081CFD02
+_081CFD1C:
+ ldr r0, [r5, 0x1C]
+ ldrh r2, [r0]
+ lsls r6, r3, 2
+ cmp r2, r3
+ bls _081CFD40
+ lsls r0, r2, 2
+ subs r4, r0, 0x4
+_081CFD2A:
+ ldr r0, [r5, 0x1C]
+ lsls r1, r2, 2
+ adds r0, 0x4
+ adds r1, r0, r1
+ adds r0, r4
+ ldr r0, [r0]
+ str r0, [r1]
+ subs r4, 0x4
+ subs r2, 0x1
+ cmp r2, r3
+ bhi _081CFD2A
+_081CFD40:
+ ldr r0, [r5, 0x1C]
+ adds r0, 0x4
+ adds r0, r6
+ ldr r1, [r7]
+ str r1, [r0]
+ ldr r1, [r5, 0x1C]
+ ldrh r0, [r1]
+ adds r0, 0x1
+ strh r0, [r1]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CFCEC
+
+ thumb_func_start sub_81CFD58
+sub_81CFD58: @ 81CFD58
+ push {r4-r6,lr}
+ movs r5, 0
+_081CFD5C:
+ movs r0, 0x64
+ adds r1, r5, 0
+ muls r1, r0
+ ldr r0, =gPlayerParty
+ adds r4, r1, r0
+ adds r0, r4, 0
+ movs r1, 0x5
+ bl GetMonData
+ cmp r0, 0
+ beq _081CFD8A
+ adds r0, r4, 0
+ movs r1, 0x6
+ bl GetMonData
+ cmp r0, 0
+ bne _081CFD8A
+ adds r0, r4, 0
+ movs r1, 0x53
+ bl GetMonData
+ cmp r0, 0
+ bne _081CFDB2
+_081CFD8A:
+ adds r5, 0x1
+ cmp r5, 0x5
+ ble _081CFD5C
+ movs r5, 0
+_081CFD92:
+ movs r4, 0
+ lsls r6, r5, 24
+_081CFD96:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl CheckBoxMonSanityAt
+ cmp r0, 0
+ beq _081CFDBC
+ lsls r1, r4, 24
+ lsrs r1, 24
+ lsrs r0, r6, 24
+ movs r2, 0x53
+ bl GetBoxMonDataAt
+ cmp r0, 0
+ beq _081CFDBC
+_081CFDB2:
+ movs r0, 0x1
+ b _081CFDCA
+ .pool
+_081CFDBC:
+ adds r4, 0x1
+ cmp r4, 0x1D
+ ble _081CFD96
+ adds r5, 0x1
+ cmp r5, 0xD
+ ble _081CFD92
+ movs r0, 0
+_081CFDCA:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CFD58
+
+ thumb_func_start sub_81CFDD0
+sub_81CFDD0: @ 81CFDD0
+ push {r4,lr}
+ movs r1, 0x81
+ lsls r1, 4
+ movs r0, 0xA
+ bl AllocSubstruct
+ adds r4, r0, 0
+ cmp r4, 0
+ beq _081CFE00
+ ldr r0, =sub_81CFEB8
+ movs r1, 0x1
+ bl CreateLoopedTask
+ str r0, [r4, 0x4]
+ ldr r0, =sub_81CFE84
+ str r0, [r4]
+ movs r0, 0
+ str r0, [r4, 0xC]
+ movs r0, 0x1
+ b _081CFE02
+ .pool
+_081CFE00:
+ movs r0, 0
+_081CFE02:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CFDD0
+
+ thumb_func_start sub_81CFE08
+sub_81CFE08: @ 81CFE08
+ push {r4,lr}
+ movs r1, 0x81
+ lsls r1, 4
+ movs r0, 0xA
+ bl AllocSubstruct
+ adds r4, r0, 0
+ cmp r4, 0
+ beq _081CFE38
+ ldr r0, =sub_81CFEB8
+ movs r1, 0x1
+ bl CreateLoopedTask
+ str r0, [r4, 0x4]
+ ldr r0, =sub_81CFE84
+ str r0, [r4]
+ movs r0, 0x1
+ str r0, [r4, 0xC]
+ b _081CFE3A
+ .pool
+_081CFE38:
+ movs r0, 0
+_081CFE3A:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CFE08
+
+ thumb_func_start sub_81CFE40
+sub_81CFE40: @ 81CFE40
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0xA
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ ldr r0, =gUnknown_086237B8
+ lsls r4, 2
+ adds r4, r0
+ ldr r0, [r4]
+ movs r1, 0x1
+ bl CreateLoopedTask
+ str r0, [r5, 0x4]
+ ldr r0, =sub_81CFE84
+ str r0, [r5]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81CFE40
+
+ thumb_func_start sub_81CFE70
+sub_81CFE70: @ 81CFE70
+ push {lr}
+ movs r0, 0xA
+ bl GetSubstructPtr
+ ldr r0, [r0]
+ bl _call_via_r0
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CFE70
+
+ thumb_func_start sub_81CFE84
+sub_81CFE84: @ 81CFE84
+ push {lr}
+ movs r0, 0xA
+ bl GetSubstructPtr
+ ldr r0, [r0, 0x4]
+ bl IsLoopedTaskActive
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CFE84
+
+ thumb_func_start sub_81CFE98
+sub_81CFE98: @ 81CFE98
+ push {r4,lr}
+ movs r0, 0xA
+ bl GetSubstructPtr
+ adds r4, r0, 0
+ bl sub_81C8234
+ ldrb r0, [r4, 0x8]
+ bl RemoveWindow
+ movs r0, 0xA
+ bl FreePokenavSubstruct
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81CFE98
+
+ thumb_func_start sub_81CFEB8
+sub_81CFEB8: @ 81CFEB8
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ movs r0, 0xA
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ cmp r4, 0x5
+ bls _081CFECC
+ b _081CFFF2
+_081CFECC:
+ lsls r0, r4, 2
+ ldr r1, =_081CFEDC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_081CFEDC:
+ .4byte _081CFEF4
+ .4byte _081CFF48
+ .4byte _081CFF76
+ .4byte _081CFF94
+ .4byte _081CFFA4
+ .4byte _081CFFDE
+_081CFEF4:
+ ldr r0, =gUnknown_086237B0
+ movs r1, 0x2
+ bl InitBgTemplates
+ ldr r1, =gUnknown_08623604
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x1
+ movs r2, 0
+ movs r3, 0
+ bl decompress_and_copy_tile_data_to_vram
+ adds r1, r5, 0
+ adds r1, 0x10
+ movs r0, 0x1
+ bl SetBgTilemapBuffer
+ ldr r1, =gUnknown_086236CC
+ movs r0, 0x1
+ movs r2, 0
+ movs r3, 0
+ bl CopyToBgTilemapBuffer
+ ldr r0, =gUnknown_086235E4
+ movs r1, 0x10
+ movs r2, 0x20
+ bl CopyPaletteIntoBufferUnfaded
+ movs r0, 0x1
+ bl CopyBgTilemapBufferToVram
+_081CFF32:
+ movs r0, 0
+ b _081CFFF4
+ .pool
+_081CFF48:
+ bl free_temp_tile_data_buffers_if_possible
+ lsls r0, 24
+ cmp r0, 0
+ bne _081CFFEE
+ bl sub_81CFB18
+ cmp r0, 0
+ beq _081CFFEE
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ movs r0, 0x1
+ bl ShowBg
+ b _081CFF32
+_081CFF76:
+ bl free_temp_tile_data_buffers_if_possible
+ lsls r0, 24
+ cmp r0, 0
+ bne _081CFFEE
+ ldr r0, =gUnknown_08623790
+ movs r1, 0x20
+ movs r2, 0x20
+ bl CopyPaletteIntoBufferUnfaded
+ bl sub_81D0304
+ b _081CFF32
+ .pool
+_081CFF94:
+ bl sub_81C8224
+ cmp r0, 0
+ bne _081CFFEE
+ adds r0, r5, 0
+ bl sub_81D024C
+ b _081CFF32
+_081CFFA4:
+ bl free_temp_tile_data_buffers_if_possible
+ lsls r0, 24
+ cmp r0, 0
+ bne _081CFFEE
+ movs r0, 0x2
+ bl ShowBg
+ movs r0, 0x3
+ bl HideBg
+ movs r0, 0x9
+ bl sub_81C7BA4
+ movs r0, 0x1
+ bl sub_81C7AC0
+ ldr r0, [r5, 0xC]
+ cmp r0, 0
+ bne _081CFF32
+ movs r0, 0x2
+ bl LoadLeftHeaderGfxForIndex
+ movs r0, 0x2
+ movs r1, 0x1
+ movs r2, 0
+ bl sub_81C7FA0
+ b _081CFF32
+_081CFFDE:
+ bl IsPaletteFadeActive
+ cmp r0, 0
+ bne _081CFFEE
+ bl sub_81C8010
+ cmp r0, 0
+ beq _081CFFF2
+_081CFFEE:
+ movs r0, 0x2
+ b _081CFFF4
+_081CFFF2:
+ movs r0, 0x4
+_081CFFF4:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CFEB8
+
+ thumb_func_start sub_81CFFFC
+sub_81CFFFC: @ 81CFFFC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0xA
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ cmp r4, 0x1
+ beq _081D004A
+ cmp r4, 0x1
+ bgt _081D0016
+ cmp r4, 0
+ beq _081D0020
+ b _081D006A
+_081D0016:
+ cmp r4, 0x2
+ beq _081D0052
+ cmp r4, 0x3
+ beq _081D005C
+ b _081D006A
+_081D0020:
+ bl MatchCall_MoveCursorUp
+ cmp r0, 0x1
+ beq _081D0038
+ cmp r0, 0x1
+ bgt _081D0032
+ cmp r0, 0
+ beq _081D006A
+ b _081D0058
+_081D0032:
+ cmp r0, 0x2
+ beq _081D0042
+ b _081D0058
+_081D0038:
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0x7
+ b _081D006C
+_081D0042:
+ movs r0, 0x5
+ bl PlaySE
+ b _081D0058
+_081D004A:
+ bl sub_81C8630
+ cmp r0, 0
+ bne _081D0066
+_081D0052:
+ adds r0, r5, 0
+ bl sub_81D0288
+_081D0058:
+ movs r0, 0
+ b _081D006C
+_081D005C:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ beq _081D006A
+_081D0066:
+ movs r0, 0x2
+ b _081D006C
+_081D006A:
+ movs r0, 0x4
+_081D006C:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81CFFFC
+
+ thumb_func_start sub_81D0074
+sub_81D0074: @ 81D0074
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0xA
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ cmp r4, 0x1
+ beq _081D00C2
+ cmp r4, 0x1
+ bgt _081D008E
+ cmp r4, 0
+ beq _081D0098
+ b _081D00E2
+_081D008E:
+ cmp r4, 0x2
+ beq _081D00CA
+ cmp r4, 0x3
+ beq _081D00D4
+ b _081D00E2
+_081D0098:
+ bl MatchCall_MoveCursorDown
+ cmp r0, 0x1
+ beq _081D00B0
+ cmp r0, 0x1
+ bgt _081D00AA
+ cmp r0, 0
+ beq _081D00E2
+ b _081D00D0
+_081D00AA:
+ cmp r0, 0x2
+ beq _081D00BA
+ b _081D00D0
+_081D00B0:
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0x7
+ b _081D00E4
+_081D00BA:
+ movs r0, 0x5
+ bl PlaySE
+ b _081D00D0
+_081D00C2:
+ bl sub_81C8630
+ cmp r0, 0
+ bne _081D00DE
+_081D00CA:
+ adds r0, r5, 0
+ bl sub_81D0288
+_081D00D0:
+ movs r0, 0
+ b _081D00E4
+_081D00D4:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ beq _081D00E2
+_081D00DE:
+ movs r0, 0x2
+ b _081D00E4
+_081D00E2:
+ movs r0, 0x4
+_081D00E4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D0074
+
+ thumb_func_start sub_81D00EC
+sub_81D00EC: @ 81D00EC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0xA
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ cmp r4, 0x1
+ beq _081D013A
+ cmp r4, 0x1
+ bgt _081D0106
+ cmp r4, 0
+ beq _081D0110
+ b _081D015A
+_081D0106:
+ cmp r4, 0x2
+ beq _081D0142
+ cmp r4, 0x3
+ beq _081D014C
+ b _081D015A
+_081D0110:
+ bl MatchCall_PageUp
+ cmp r0, 0x1
+ beq _081D0128
+ cmp r0, 0x1
+ bgt _081D0122
+ cmp r0, 0
+ beq _081D015A
+ b _081D0148
+_081D0122:
+ cmp r0, 0x2
+ beq _081D0132
+ b _081D0148
+_081D0128:
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0x7
+ b _081D015C
+_081D0132:
+ movs r0, 0x5
+ bl PlaySE
+ b _081D0148
+_081D013A:
+ bl sub_81C8630
+ cmp r0, 0
+ bne _081D0156
+_081D0142:
+ adds r0, r5, 0
+ bl sub_81D0288
+_081D0148:
+ movs r0, 0
+ b _081D015C
+_081D014C:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ beq _081D015A
+_081D0156:
+ movs r0, 0x2
+ b _081D015C
+_081D015A:
+ movs r0, 0x4
+_081D015C:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D00EC
+
+ thumb_func_start sub_81D0164
+sub_81D0164: @ 81D0164
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r0, 0xA
+ bl GetSubstructPtr
+ adds r5, r0, 0
+ cmp r4, 0x1
+ beq _081D01B2
+ cmp r4, 0x1
+ bgt _081D017E
+ cmp r4, 0
+ beq _081D0188
+ b _081D01D2
+_081D017E:
+ cmp r4, 0x2
+ beq _081D01BA
+ cmp r4, 0x3
+ beq _081D01C4
+ b _081D01D2
+_081D0188:
+ bl MatchCall_PageDown
+ cmp r0, 0x1
+ beq _081D01A0
+ cmp r0, 0x1
+ bgt _081D019A
+ cmp r0, 0
+ beq _081D01D2
+ b _081D01C0
+_081D019A:
+ cmp r0, 0x2
+ beq _081D01AA
+ b _081D01C0
+_081D01A0:
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0x7
+ b _081D01D4
+_081D01AA:
+ movs r0, 0x5
+ bl PlaySE
+ b _081D01C0
+_081D01B2:
+ bl sub_81C8630
+ cmp r0, 0
+ bne _081D01CE
+_081D01BA:
+ adds r0, r5, 0
+ bl sub_81D0288
+_081D01C0:
+ movs r0, 0
+ b _081D01D4
+_081D01C4:
+ bl IsDma3ManagerBusyWithBgCopy
+ lsls r0, 24
+ cmp r0, 0
+ beq _081D01D2
+_081D01CE:
+ movs r0, 0x2
+ b _081D01D4
+_081D01D2:
+ movs r0, 0x4
+_081D01D4:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D0164
+
+ thumb_func_start sub_81D01DC
+sub_81D01DC: @ 81D01DC
+ push {lr}
+ cmp r0, 0
+ beq _081D01E8
+ cmp r0, 0x1
+ beq _081D01FC
+ b _081D0214
+_081D01E8:
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0
+ bl sub_81C7AC0
+ bl sub_81C78A0
+ movs r0, 0
+ b _081D0216
+_081D01FC:
+ bl IsPaletteFadeActive
+ cmp r0, 0
+ bne _081D020C
+ bl MainMenuLoopedTaskIsBusy
+ cmp r0, 0
+ beq _081D0210
+_081D020C:
+ movs r0, 0x2
+ b _081D0216
+_081D0210:
+ bl sub_81C7FDC
+_081D0214:
+ movs r0, 0x4
+_081D0216:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D01DC
+
+ thumb_func_start sub_81D021C
+sub_81D021C: @ 81D021C
+ push {lr}
+ cmp r0, 0
+ beq _081D0228
+ cmp r0, 0x1
+ beq _081D0238
+ b _081D0244
+_081D0228:
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0
+ bl sub_81C7AC0
+ movs r0, 0
+ b _081D0246
+_081D0238:
+ bl IsPaletteFadeActive
+ cmp r0, 0
+ beq _081D0244
+ movs r0, 0x2
+ b _081D0246
+_081D0244:
+ movs r0, 0x4
+_081D0246:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81D021C
+
+ thumb_func_start sub_81D024C
+sub_81D024C: @ 81D024C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, =gUnknown_086237D4
+ bl AddWindow
+ strh r0, [r4, 0x8]
+ lsls r0, 24
+ lsrs r0, 24
+ bl PutWindowTilemap
+ bl sub_81CFB38
+ adds r2, r0, 0
+ ldrh r0, [r4, 0x8]
+ movs r1, 0
+ bl sub_81D02B0
+ ldrb r0, [r4, 0x8]
+ movs r1, 0x1
+ bl CopyWindowToVram
+ adds r0, r4, 0
+ bl sub_81D0288
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D024C
+
+ thumb_func_start sub_81D0288
+sub_81D0288: @ 81D0288
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ bl GetSelectedMatchCall
+ adds r4, r0, 0
+ bl sub_81CFB38
+ adds r2, r0, 0
+ ldrh r0, [r5, 0x8]
+ adds r4, 0x1
+ adds r1, r4, 0
+ bl sub_81D02B0
+ ldrb r0, [r5, 0x8]
+ movs r1, 0x2
+ bl CopyWindowToVram
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81D0288
+
+ thumb_func_start sub_81D02B0
+sub_81D02B0: @ 81D02B0
+ push {r4,r5,lr}
+ sub sp, 0x1C
+ adds r4, r0, 0
+ adds r5, r2, 0
+ add r0, sp, 0xC
+ movs r2, 0x1
+ movs r3, 0x3
+ bl ConvertIntToDecimalStringN
+ movs r1, 0xBA
+ strb r1, [r0]
+ adds r0, 0x1
+ adds r1, r5, 0
+ movs r2, 0x1
+ movs r3, 0x3
+ bl ConvertIntToDecimalStringN
+ movs r0, 0x1
+ add r1, sp, 0xC
+ movs r2, 0x38
+ bl GetStringCenterAlignXOffset
+ adds r3, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x1
+ str r0, [sp]
+ movs r0, 0xFF
+ str r0, [sp, 0x4]
+ movs r0, 0
+ str r0, [sp, 0x8]
+ adds r0, r4, 0
+ movs r1, 0x1
+ add r2, sp, 0xC
+ bl AddTextPrinterParameterized
+ add sp, 0x1C
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81D02B0
+
+ thumb_func_start sub_81D0304
+sub_81D0304: @ 81D0304
+ push {r4,lr}
+ sub sp, 0x18
+ bl sub_81CFB28
+ str r0, [sp]
+ bl sub_81CFB38
+ mov r1, sp
+ movs r4, 0
+ strh r0, [r1, 0x4]
+ movs r0, 0x4
+ strb r0, [r1, 0x8]
+ bl sub_81CFB64
+ mov r1, sp
+ strh r0, [r1, 0x6]
+ movs r0, 0xD
+ strb r0, [r1, 0x9]
+ movs r0, 0x11
+ strb r0, [r1, 0xA]
+ mov r0, sp
+ movs r2, 0x1
+ strb r2, [r0, 0xB]
+ movs r0, 0x8
+ strb r0, [r1, 0xC]
+ movs r0, 0x2
+ strb r0, [r1, 0xD]
+ mov r0, sp
+ strb r2, [r0, 0xE]
+ ldr r0, =sub_81D035C
+ str r0, [sp, 0x10]
+ str r4, [sp, 0x14]
+ ldr r0, =gUnknown_086237B4
+ movs r2, 0
+ bl sub_81C81D4
+ add sp, 0x18
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D0304
+
+ thumb_func_start sub_81D035C
+sub_81D035C: @ 81D035C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r1, 0
+ adds r7, r0, 0
+ ldrb r0, [r7]
+ cmp r0, 0xE
+ bne _081D03A4
+ ldrb r1, [r7, 0x1]
+ movs r0, 0x64
+ adds r4, r1, 0
+ muls r4, r0
+ ldr r0, =gPlayerParty
+ adds r4, r0
+ adds r0, r4, 0
+ bl GetMonGender
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r4, 0
+ bl GetLevelFromMonExp
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r2, =gStringVar3
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl GetMonData
+ b _081D03CC
+ .pool
+_081D03A4:
+ ldrb r0, [r7]
+ ldrb r1, [r7, 0x1]
+ bl GetBoxedMonPtr
+ adds r4, r0, 0
+ bl GetBoxMonGender
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r4, 0
+ bl GetLevelFromBoxMonExp
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r2, =gStringVar3
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl GetBoxMonData
+_081D03CC:
+ ldr r4, =gStringVar3
+ adds r0, r4, 0
+ bl StringGetEnd10
+ adds r0, r6, 0
+ movs r1, 0x1
+ adds r2, r4, 0
+ movs r3, 0x3C
+ bl sub_81DB494
+ adds r6, r0, 0
+ cmp r5, 0
+ beq _081D03F8
+ cmp r5, 0xFE
+ beq _081D0400
+ ldr r1, =gUnknown_086237F4
+ b _081D0402
+ .pool
+_081D03F8:
+ ldr r1, =gUnknown_086237DC
+ b _081D0402
+ .pool
+_081D0400:
+ ldr r1, =gUnknown_086237E8
+_081D0402:
+ ldr r4, =gStringVar1
+ adds r0, r4, 0
+ bl StringCopy
+ movs r1, 0xBA
+ strb r1, [r0]
+ adds r0, 0x1
+ movs r1, 0xF9
+ strb r1, [r0]
+ adds r0, 0x1
+ movs r1, 0x5
+ strb r1, [r0]
+ adds r0, 0x1
+ mov r1, r8
+ movs r2, 0
+ movs r3, 0x3
+ bl ConvertIntToDecimalStringN
+ adds r0, r6, 0
+ movs r1, 0x1
+ adds r2, r4, 0
+ movs r3, 0x36
+ bl sub_81DB494
+ adds r6, r0, 0
+ ldrh r1, [r7, 0x2]
+ movs r2, 0x1
+ movs r3, 0x2
+ bl ConvertIntToDecimalStringN
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81D035C
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asmdiff.ps1 b/asmdiff.ps1
index 169f14776..9d6657301 100644
--- a/asmdiff.ps1
+++ b/asmdiff.ps1
@@ -107,8 +107,10 @@ if ($start_num -gt 0x1000000)
$end_str = [System.Convert]::ToString($start_num + $offset_num, 16)
$end_str = "0x$end_str"
-Write-Host "$Start - $end_str"
+$start_str = "0x$Start"
+
+Write-Host "$start_str - $end_str"
$objdump = Join-Path -Path $env:DEVKITARM -ChildPath "arm-none-eabi\bin\objdump.exe"
-&$objdump -D -bbinary -marmv4t -Mforce-thumb --start-address="$Start" --stop-address="$end_str" .\baserom.gba > .\baserom.dump
-&$objdump -D -bbinary -marmv4t -Mforce-thumb --start-address="$Start" --stop-address="$end_str" .\pokeemerald.gba > .\pokeemerald.dump
+&$objdump -D -bbinary -marmv4t -Mforce-thumb --start-address="$start_str" --stop-address="$end_str" .\baserom.gba > .\baserom.dump
+&$objdump -D -bbinary -marmv4t -Mforce-thumb --start-address="$start_str" --stop-address="$end_str" .\pokeemerald.gba > .\pokeemerald.dump
Invoke-Expression "$DiffTool .\baserom.dump .\pokeemerald.dump"
diff --git a/build_tools.sh b/build_tools.sh
index 429a9cef0..b11a9a1b2 100755
--- a/build_tools.sh
+++ b/build_tools.sh
@@ -9,3 +9,4 @@ make -C tools/ramscrgen CXX=${1:-g++}
make -C tools/gbafix CXX=${1:-g++}
make -C tools/mid2agb CXX=${1:-g++}
make -C tools/mapjson CXX=${1:-g++}
+make -C tools/jsonproc CXX=${1:-g++}
diff --git a/charmap.txt b/charmap.txt
index 26d48e101..43ff737a0 100644
--- a/charmap.txt
+++ b/charmap.txt
@@ -61,6 +61,10 @@ UP_ARROW = 79
DOWN_ARROW = 7A
LEFT_ARROW = 7B
RIGHT_ARROW = 7C
+SUPER_E = 84
+'<' = 85
+'>' = 86
+SUPER_RE = A0
'0' = A1
'1' = A2
'2' = A3
diff --git a/data/battle_ai_scripts.s b/data/battle_ai_scripts.s
index 8f3cfb657..03f76fe29 100644
--- a/data/battle_ai_scripts.s
+++ b/data/battle_ai_scripts.s
@@ -3307,7 +3307,7 @@ AI_HPAware_DiscouragedEffectsWhenTargetLowHP: @ 82DE2B1
.byte EFFECT_TOXIC
.byte EFFECT_LIGHT_SCREEN
.byte EFFECT_OHKO
- .byte EFFECT_SUPER_FANG
+ .byte EFFECT_SUPER_FANG //Maybe supposed to be EFFECT_RAZOR_WIND
.byte EFFECT_SUPER_FANG
.byte EFFECT_MIST
.byte EFFECT_FOCUS_ENERGY
diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s
index 8655d9bc3..f366d4426 100644
--- a/data/battle_anim_scripts.s
+++ b/data/battle_anim_scripts.s
@@ -2960,7 +2960,7 @@ SkyAttackSetUpAgainstPartner:
SkyAttackUnleash:
loadspritegfx ANIM_TAG_IMPACT
loadspritegfx ANIM_TAG_BIRD
- call SetFlyingBg
+ call SetSkyBg
monbg ANIM_ATTACKER
createvisualtask sub_8116620, 10, 2, 0, 0, 16, RGB_WHITE
delay 4
@@ -2977,7 +2977,7 @@ SkyAttackUnleash:
createvisualtask sub_8116620, 10, 2, 0, 15, 0, RGB_WHITE
waitforvisualfinish
clearmonbg ANIM_ATTACKER
- call UnsetFlyingBg
+ call UnsetSkyBg
goto SkyAttackEnd
Move_FLASH:
@@ -5392,7 +5392,7 @@ Move_WITHDRAW:
Move_AURORA_BEAM:
loadspritegfx ANIM_TAG_RAINBOW_RINGS
- fadetobg BG_AURORABEAM
+ fadetobg BG_AURORA
waitbgfadein
playsewithpan SE_W062, SOUND_PAN_ATTACKER
setarg 7, 0
@@ -6195,7 +6195,7 @@ Move_AEROBLAST:
loadspritegfx ANIM_TAG_AIR_WAVE_2
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER
- call SetFlyingBg
+ call SetSkyBg
monbgprio_28 ANIM_TARGET
setalpha 12, 8
call Aeroblast1
@@ -6211,7 +6211,7 @@ Move_AEROBLAST:
clearmonbg ANIM_DEF_PARTNER
blendoff
delay 0
- call UnsetFlyingBg
+ call UnsetSkyBg
end
Aeroblast1:
playsewithpan SE_W026, SOUND_PAN_ATTACKER
@@ -6568,7 +6568,7 @@ Move_DYNAMIC_PUNCH:
loadspritegfx ANIM_TAG_HANDS_AND_FEET
loadspritegfx ANIM_TAG_IMPACT
loadspritegfx ANIM_TAG_EXPLOSION
- loadspritegfx ANIM_TAG_UNUSED_EXPLOSION
+ loadspritegfx ANIM_TAG_EXPLOSION_6
delay 1
monbg ANIM_DEF_PARTNER
setalpha 12, 8
@@ -9419,7 +9419,7 @@ Move_SEISMIC_TOSS:
waitforvisualfinish
createvisualtask AnimTask_GetSeismicTossDamageLevel, 3
delay 1
- fadetobg BG_SEISMICTOSS_SKUUPPERCUT
+ fadetobg BG_IN_AIR
waitbgfadeout
createvisualtask sub_811152C, 3
playsewithpan SE_W327, 0
@@ -9589,7 +9589,7 @@ Move_SKY_UPPERCUT:
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET
- fadetobg BG_SEISMICTOSS_SKUUPPERCUT
+ fadetobg BG_IN_AIR
waitbgfadeout
playsewithpan SE_W327, SOUND_PAN_ATTACKER
createvisualtask sub_810DABC, 5, 55
@@ -10165,21 +10165,21 @@ UnsetPsychicBackground:
waitbgfadein
return
-SetFlyingBg:
- jumpifcontest SetBgFlyingContest
- fadetobg BG_FLYING
+SetSkyBg:
+ jumpifcontest SetSkyBgContest
+ fadetobg BG_SKY
waitbgfadeout
createvisualtask sub_8117660, 5, -2304, 768, 1, -1
-SetBgFlyingContinue:
+SetSkyBgContinue:
waitbgfadein
return
-SetBgFlyingContest:
- fadetobg BG_FLYING_CONTESTS
+SetSkyBgContest:
+ fadetobg BG_SKY_CONTESTS
waitbgfadeout
createvisualtask sub_8117660, 5, 2304, 768, 0, -1
- goto SetBgFlyingContinue
+ goto SetSkyBgContinue
-UnsetFlyingBg:
+UnsetSkyBg:
restorebg
waitbgfadeout
setarg 7, -1
@@ -10331,15 +10331,15 @@ General_SubstituteAppear:
General_PokeblockThrow:
createvisualtask sub_817345C, 2, 0
- createvisualtask sub_81732B0, 2
+ createvisualtask AnimTask_LoadPokeblockGfx, 2
delay 0
waitplaysewithpan SE_W026, SOUND_PAN_ATTACKER, 22
- createsprite gBattleAnimSpriteTemplate_85E5338, ANIM_TARGET, 3, -18, 12, 0, 32
+ createsprite gPokeblockSpriteTemplate, ANIM_TARGET, 3, -18, 12, 0, 32
delay 50
loopsewithpan SE_W039, SOUND_PAN_TARGET, 19, 2
createvisualtask AnimTask_SwayMon, 5, 1, 8, 1536, 2, ANIM_TARGET
waitforvisualfinish
- createvisualtask sub_81732E4, 2
+ createvisualtask AnimTask_FreePokeblockGfx, 2
end
General_ItemKnockoff:
@@ -10516,7 +10516,7 @@ General_Hail:
goto Move_HAIL
General_LeechSeedDrain:
- createvisualtask sub_817351C, 5
+ createvisualtask AnimTask_GetBattlersFromArg, 5
delay 0
goto Move_ABSORB
@@ -10535,7 +10535,7 @@ General_MonHit:
General_ItemSteal:
loadspritegfx ANIM_TAG_ITEM_BAG
createvisualtask sub_8117F30, 2
- createvisualtask sub_8172ED0, 2
+ createvisualtask AnimTask_TargetToEffectBattler, 2
delay 1
createsprite gItemStealSpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2, -1
end
@@ -10664,8 +10664,8 @@ General_WishHeal:
end
AnimScript_82D85A3:
- createvisualtask sub_8172E9C, 2
- jumpreteq 1, AnimScript_82D85B4
+ createvisualtask AnimTask_IsAttackerBehindSubstitute, 2
+ jumprettrue AnimScript_82D85B4
AnimScript_82D85B2:
waitforvisualfinish
return
@@ -10675,8 +10675,8 @@ AnimScript_82D85B4:
goto AnimScript_82D85B2
AnimScript_82D85C3:
- createvisualtask sub_8172E9C, 2
- jumpreteq 1, AnimScript_82D85D4
+ createvisualtask AnimTask_IsAttackerBehindSubstitute, 2
+ jumprettrue AnimScript_82D85D4
AnimScript_82D85D2:
waitforvisualfinish
return
diff --git a/data/contest_ai_scripts.s b/data/contest_ai_scripts.s
index 6eb254dae..7346876d7 100644
--- a/data/contest_ai_scripts.s
+++ b/data/contest_ai_scripts.s
@@ -11,39 +11,40 @@
enum MON_4
.align 2
-gContestAIs:: @ 82DE350
- .4byte AI_CheckForBadMove
- .4byte AI_CheckForCombo
- .4byte AI_CheckBoring
- .4byte AI_CheckExcitement
- .4byte AI_CheckOrder
- .4byte AI_CheckForGoodMove
- .4byte AI_Erratic
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
- .4byte AI_Nothing
+gContestAIChecks:: @ 82DE350
+ .4byte AI_CheckForBadMove // 0x00000001
+ .4byte AI_CheckForCombo // 0x00000002
+ .4byte AI_CheckBoring // 0x00000004
+ .4byte AI_CheckExcitement // 0x00000008
+ .4byte AI_CheckOrder // 0x00000010
+ .4byte AI_CheckForGoodMove // 0x00000020
+ .4byte AI_Erratic // 0x00000040
+ .4byte AI_Nothing // 0x00000080
+ .4byte AI_Nothing // 0x00000100
+ .4byte AI_Nothing // 0x00000200
+ .4byte AI_Nothing // 0x00000400
+ .4byte AI_Nothing // 0x00000800
+ .4byte AI_Nothing // 0x00001000
+ .4byte AI_Nothing // 0x00002000
+ .4byte AI_Nothing // 0x00004000
+ .4byte AI_Nothing // 0x00008000
+ .4byte AI_Nothing // 0x00010000
+ .4byte AI_Nothing // 0x00020000
+ .4byte AI_Nothing // 0x00040000
+ .4byte AI_Nothing // 0x00080000
+ .4byte AI_Nothing // 0x00100000
+ .4byte AI_Nothing // 0x00200000
+ .4byte AI_Nothing // 0x00400000
+ .4byte AI_Nothing // 0x00800000
+ .4byte AI_Nothing // 0x01000000
+ .4byte AI_Nothing // 0x02000000
+ .4byte AI_Nothing // 0x04000000
+ .4byte AI_Nothing // 0x08000000
+ .4byte AI_Nothing // 0x10000000
+ .4byte AI_Nothing // 0x20000000
+ .4byte AI_Nothing // 0x40000000
+ .4byte AI_Nothing // 0x80000000
+
@ Unreferenced AI routine to encourage moves that improve condition on the first
@ turn. Additionally, it checks the appeal order of the user and the effect
diff --git a/data/event_scripts.s b/data/event_scripts.s
index 5c3c408aa..bf32eae83 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -6,6 +6,7 @@
#include "constants/event_object_movement_constants.h"
#include "constants/field_effects.h"
#include "constants/flags.h"
+#include "constants/decorations.h"
#include "constants/items.h"
#include "constants/heal_locations.h"
#include "constants/layouts.h"
@@ -454,7 +455,7 @@ EventScript_SecretBasePC:: @ 823B4BB
EventScript_SecretBasePCShowMainMenu:: @ 823B4D3
message Text_SecretBasePCStartMenu
waitmessage
- goto_if_set FLAG_DECORATION_16, EventScript_SecretBasePCMainMenuChoice
+ goto_if_set FLAG_SECRET_BASE_REGISTRY_ENABLED, EventScript_SecretBasePCMainMenuChoice
goto EventScript_23B531
end
@@ -487,16 +488,16 @@ EventScript_23B568:: @ 823B568
compare VAR_RESULT, 0
goto_if_eq EventScript_SecretBasePCShowMainMenu
closemessage
- special sub_80E9AC0
+ special MoveOutOfSecretBase
releaseall
end
EventScript_23B581:: @ 823B581
- special sub_80E9C74
+ special ShowSecretBaseDecorationMenu
end
EventScript_23B585:: @ 823B585
- special sub_80E9C88
+ special ShowSecretBaseRegistryMenu
end
EventScript_RecordMixingSecretBasePC:: @ 823B589
@@ -529,17 +530,17 @@ gUnknown_0823B5E9:: @ 823B5E9
end
EventScript_23B5F0:: @ 823B5F0
- special sub_80E9BDC
+ special GetCurSecretBaseRegistrationValidity
compare VAR_RESULT, 1
goto_if_eq EventScript_23B62F
compare VAR_RESULT, 2
goto_if_eq EventScript_CantRegisterTooManyBases
- special sub_80E980C
- msgbox Text_276707, MSGBOX_YESNO
+ special CopyCurSecretBaseOwnerName_StrVar1
+ msgbox Text_WantToRegisterSecretBase, MSGBOX_YESNO
compare VAR_RESULT, 0
goto_if_eq EventScript_23B5A1
msgbox Text_2767D1, MSGBOX_SIGN
- special sub_80E9C2C
+ special ToggleCurSecretBaseRegistry
special DoSecretBasePCTurnOffEffect
releaseall
end
@@ -549,7 +550,7 @@ EventScript_23B62F:: @ 823B62F
compare VAR_RESULT, 0
goto_if_eq EventScript_23B5A1
msgbox Text_2767E9, MSGBOX_SIGN
- special sub_80E9C2C
+ special ToggleCurSecretBaseRegistry
special DoSecretBasePCTurnOffEffect
releaseall
end
@@ -573,23 +574,23 @@ EventScript_23B66E:: @ 823B66E
end
EventScript_23B674:: @ 823B674
- special sub_80EB498
+ special SetSecretBaseSecretsTvFlags_Poster
end
EventScript_23B678:: @ 823B678
- special sub_80EB56C
+ special SetSecretBaseSecretsTvFlags_MiscFurnature
end
EventScript_23B67C:: @ 823B67C
- special sub_80EB9E0
+ special SetSecretBaseSecretsTvFlags_LargeDecorationSpot
end
EventScript_23B680:: @ 823B680
- special sub_80EBB28
+ special SetSecretBaseSecretsTvFlags_SmallDecorationSpot
end
EventScript_SecretBaseSandOrnament:: @ 823B684
- special sub_80EBE7C
+ special SetSecretBaseSecretsTvFlags_SandOrnament
dofieldeffect FLDEFF_SAND_PILLAR
waitstate
end
@@ -825,7 +826,7 @@ Std_10: @ 8271347
waitmessage
return
-EventScript_27134E: @ 827134E
+EventScript_UnusedReturn: @ 827134E
return
Common_EventScript_SaveGame:: @ 827134F
@@ -846,7 +847,7 @@ Std_MsgboxAutoclose:: @ 8271494
release
return
-EventScript_27149D:: @ 827149D
+EventScript_ResetAllBerries:: @ 827149D
setberrytree 2, 7, 5
setberrytree 1, 3, 5
setberrytree 11, 7, 5
@@ -1089,13 +1090,13 @@ EventScript_ResetAllMapFlags:: @ 82715DE
setflag FLAG_HIDE_EVER_GRANDE_POKEMON_CENTER_1F_SCOTT
setflag FLAG_HIDE_SKY_PILLAR_WALLACE
setflag FLAG_RAYQUAZA_ON_SKY_TOWER_SUMMIT
- call EventScript_27149D
+ call EventScript_ResetAllBerries
end
EverGrandeCity_HallOfFame_EventScript_2717C1:: @ 82717C1
special sub_81AFDD0
setflag FLAG_IS_CHAMPION
- call EverGrandeCity_HallOfFame_EventScript_271829
+ call EverGrandeCity_HallOfFame_EventScript_ResetDefeatedEventLegendaries
compare VAR_FOSSIL_MANIAC_STATE, 0
call_if_eq EverGrandeCity_HallOfFame_EventScript_271839
clearflag FLAG_HIDE_LILCOVE_MOTEL_GAME_DESIGNERS
@@ -1120,7 +1121,7 @@ EverGrandeCity_HallOfFame_EventScript_2717C1:: @ 82717C1
call_if_eq EverGrandeCity_HallOfFame_EventScript_271851
return
-EverGrandeCity_HallOfFame_EventScript_271829:: @ 8271829
+EverGrandeCity_HallOfFame_EventScript_ResetDefeatedEventLegendaries:: @ 8271829
clearflag FLAG_DEFEATED_MEW
clearflag FLAG_DEFEATED_LATIAS_OR_LATIOS
clearflag FLAG_DEFEATED_DEOXYS
@@ -1193,7 +1194,7 @@ EventScript_MoveMrBrineyToRoute108:: @ 82718B3
end
EverGrandeCity_HallOfFame_EventScript_ResetEliteFour:: @ 82718CC
- clearflag FLAG_DEFEATED_ELITE_4_SYDNEY
+ clearflag FLAG_DEFEATED_ELITE_4_SIDNEY
clearflag FLAG_DEFEATED_ELITE_4_PHOEBE
clearflag FLAG_DEFEATED_ELITE_4_GLACIA
clearflag FLAG_DEFEATED_ELITE_4_DRAKE
@@ -2766,7 +2767,7 @@ EventScript_2736F8:: @ 82736F8
Common_EventScript_NopReturn:: @ 827374E
return
-EventScript_27374F:: @ 827374F
+EventScript_UnusedSetVarResult1:: @ 827374F
setvar VAR_RESULT, 1
return
@@ -3460,7 +3461,7 @@ EventScript_GotoTrainerScript:: @ 82742F6
gUnknown_0827E8CE:: @ 827E8CE
.string "Missed turn$"
-gUnknown_0827E8DA:: @ 827E8DA
+gText_LinkStandby4:: @ 827E8DA
.string "Link standby!$"
gUnknown_0827E8E8:: @ 827E8E8
diff --git a/data/maps/AbandonedShip_HiddenFloorRooms/scripts.inc b/data/maps/AbandonedShip_HiddenFloorRooms/scripts.inc
index 1c517735e..2d6f7ee77 100644
--- a/data/maps/AbandonedShip_HiddenFloorRooms/scripts.inc
+++ b/data/maps/AbandonedShip_HiddenFloorRooms/scripts.inc
@@ -42,11 +42,11 @@ AbandonedShip_HiddenFloorRooms_EventScript_238CE3:: @ 8238CE3
setfieldeffectargument 0, 10
setfieldeffectargument 1, 10
setfieldeffectargument 2, 0
- dofieldeffect 54
+ dofieldeffect FLDEFF_SPARKLE
specialvar VAR_RESULT, FoundAbandonedShipRoom4Key
compare VAR_RESULT, 0
call_if_eq AbandonedShip_HiddenFloorRooms_EventScript_238DD3
- waitfieldeffect 54
+ waitfieldeffect FLDEFF_SPARKLE
delay 10
end
@@ -60,7 +60,7 @@ AbandonedShip_HiddenFloorRooms_EventScript_238D0D:: @ 8238D0D
delay 20
compare VAR_RESULT, 0
call_if_eq AbandonedShip_HiddenFloorRooms_EventScript_238DB3
- waitfieldeffect 54
+ waitfieldeffect FLDEFF_SPARKLE
delay 10
end
@@ -72,15 +72,15 @@ AbandonedShip_HiddenFloorRooms_EventScript_238D33:: @ 8238D33
setfieldeffectargument 0, 8
setfieldeffectargument 1, 5
setfieldeffectargument 2, 0
- dofieldeffect 54
+ dofieldeffect FLDEFF_SPARKLE
setfieldeffectargument 0, 11
setfieldeffectargument 1, 3
setfieldeffectargument 2, 0
- dofieldeffect 54
+ dofieldeffect FLDEFF_SPARKLE
specialvar VAR_RESULT, FoundAbandonedShipRoom6Key
compare VAR_RESULT, 0
call_if_eq AbandonedShip_HiddenFloorRooms_EventScript_238DE3
- waitfieldeffect 54
+ waitfieldeffect FLDEFF_SPARKLE
delay 10
end
@@ -89,19 +89,19 @@ AbandonedShip_HiddenFloorRooms_EventScript_238D6B:: @ 8238D6B
setfieldeffectargument 0, 16
setfieldeffectargument 1, 3
setfieldeffectargument 2, 0
- dofieldeffect 54
+ dofieldeffect FLDEFF_SPARKLE
setfieldeffectargument 0, 25
setfieldeffectargument 1, 2
setfieldeffectargument 2, 0
- dofieldeffect 54
+ dofieldeffect FLDEFF_SPARKLE
setfieldeffectargument 0, 24
setfieldeffectargument 1, 6
setfieldeffectargument 2, 0
- dofieldeffect 54
+ dofieldeffect FLDEFF_SPARKLE
specialvar VAR_RESULT, FoundAbandonedShipRoom2Key
compare VAR_RESULT, 0
call_if_eq AbandonedShip_HiddenFloorRooms_EventScript_238DC3
- waitfieldeffect 54
+ waitfieldeffect FLDEFF_SPARKLE
delay 10
end
@@ -112,28 +112,28 @@ AbandonedShip_HiddenFloorRooms_EventScript_238DB3:: @ 8238DB3
setfieldeffectargument 0, 42
setfieldeffectargument 1, 10
setfieldeffectargument 2, 0
- dofieldeffect 54
+ dofieldeffect FLDEFF_SPARKLE
return
AbandonedShip_HiddenFloorRooms_EventScript_238DC3:: @ 8238DC3
setfieldeffectargument 0, 20
setfieldeffectargument 1, 5
setfieldeffectargument 2, 0
- dofieldeffect 54
+ dofieldeffect FLDEFF_SPARKLE
return
AbandonedShip_HiddenFloorRooms_EventScript_238DD3:: @ 8238DD3
setfieldeffectargument 0, 1
setfieldeffectargument 1, 12
setfieldeffectargument 2, 0
- dofieldeffect 54
+ dofieldeffect FLDEFF_SPARKLE
return
AbandonedShip_HiddenFloorRooms_EventScript_238DE3:: @ 8238DE3
setfieldeffectargument 0, 1
setfieldeffectargument 1, 2
setfieldeffectargument 2, 0
- dofieldeffect 54
+ dofieldeffect FLDEFF_SPARKLE
return
AbandonedShip_HiddenFloorRooms_EventScript_238DF3:: @ 8238DF3
diff --git a/data/maps/AquaHideout_B1F/scripts.inc b/data/maps/AquaHideout_B1F/scripts.inc
index 2995f48dc..589e41612 100644
--- a/data/maps/AquaHideout_B1F/scripts.inc
+++ b/data/maps/AquaHideout_B1F/scripts.inc
@@ -1,6 +1,6 @@
AquaHideout_B1F_MapScripts:: @ 82339A7
map_script MAP_SCRIPT_ON_RESUME, AquaHideout_B1F_MapScript1_2339B2
- map_script MAP_SCRIPT_ON_TRANSITION, AquaHideout_B1F_MapScript1_2339D0
+ map_script MAP_SCRIPT_ON_TRANSITION, AquaHideout_B1F_OnTransition
.byte 0
AquaHideout_B1F_MapScript1_2339B2: @ 82339B2
@@ -14,7 +14,7 @@ AquaHideout_B1F_EventScript_2339BC:: @ 82339BC
removeobject VAR_LAST_TALKED
return
-AquaHideout_B1F_MapScript1_2339D0: @ 82339D0
+AquaHideout_B1F_OnTransition: @ 82339D0
call_if_unset FLAG_DEFEATED_ELECTRODE_1_AQUA_HIDEOUT, AquaHideout_B1F_EventScript_2339E3
call_if_unset FLAG_DEFEATED_ELECTRODE_2_AQUA_HIDEOUT, AquaHideout_B1F_EventScript_2339E7
end
diff --git a/data/maps/AquaHideout_B2F/scripts.inc b/data/maps/AquaHideout_B2F/scripts.inc
index cdfe3f58e..975715fc2 100644
--- a/data/maps/AquaHideout_B2F/scripts.inc
+++ b/data/maps/AquaHideout_B2F/scripts.inc
@@ -1,8 +1,8 @@
AquaHideout_B2F_MapScripts:: @ 8233DCF
- map_script MAP_SCRIPT_ON_TRANSITION, AquaHideout_B2F_MapScript1_233DD5
+ map_script MAP_SCRIPT_ON_TRANSITION, AquaHideout_B2F_OnTransition
.byte 0
-AquaHideout_B2F_MapScript1_233DD5: @ 8233DD5
+AquaHideout_B2F_OnTransition: @ 8233DD5
call_if_set FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, AquaHideout_B2F_EventScript_233DDF
end
diff --git a/data/maps/BattleFrontier_PokemonCenter_2F/scripts.inc b/data/maps/BattleFrontier_PokemonCenter_2F/scripts.inc
index c6ae8da2a..59ede7f6a 100644
--- a/data/maps/BattleFrontier_PokemonCenter_2F/scripts.inc
+++ b/data/maps/BattleFrontier_PokemonCenter_2F/scripts.inc
@@ -2,7 +2,7 @@ BattleFrontier_PokemonCenter_2F_MapScripts:: @ 8267AA4
map_script MAP_SCRIPT_ON_FRAME_TABLE, BattleFrontier_PokemonCenter_2F_MapScript2_276C3B
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, BattleFrontier_PokemonCenter_2F_MapScript2_276B6C
map_script MAP_SCRIPT_ON_LOAD, BattleFrontier_PokemonCenter_2F_MapScript1_276BBE
- map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_PokemonCenter_2F_MapScript1_276ACF
+ map_script MAP_SCRIPT_ON_TRANSITION, PokemonCenter_2F_OnTransition
.byte 0
BattleFrontier_PokemonCenter_2F_EventScript_267AB9:: @ 8267AB9
diff --git a/data/maps/BirthIsland_Exterior/scripts.inc b/data/maps/BirthIsland_Exterior/scripts.inc
index 594790ff3..3eb491e0f 100644
--- a/data/maps/BirthIsland_Exterior/scripts.inc
+++ b/data/maps/BirthIsland_Exterior/scripts.inc
@@ -1,5 +1,5 @@
BirthIsland_Exterior_MapScripts:: @ 8267F15
- map_script MAP_SCRIPT_ON_TRANSITION, BirthIsland_Exterior_MapScript1_267F29
+ map_script MAP_SCRIPT_ON_TRANSITION, BirthIsland_Exterior_OnTransition
map_script MAP_SCRIPT_ON_RESUME, BirthIsland_Exterior_MapScript1_267F65
map_script MAP_SCRIPT_ON_RETURN_TO_FIELD, BirthIsland_Exterior_MapScript1_267F25
.byte 0
@@ -8,7 +8,7 @@ BirthIsland_Exterior_MapScript1_267F25: @ 8267F25
special sub_813B1D0
end
-BirthIsland_Exterior_MapScript1_267F29: @ 8267F29
+BirthIsland_Exterior_OnTransition: @ 8267F29
setflag FLAG_MAP_SCRIPT_CHECKED_DEOXYS
setvar VAR_OBJ_GFX_ID_0, EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL
setvar VAR_DEOXYS_ROCK_STEP_COUNT, 0
@@ -68,9 +68,9 @@ BirthIsland_Exterior_EventScript_267FC1:: @ 8267FC1
setfieldeffectargument 0, 1
setfieldeffectargument 1, 58
setfieldeffectargument 2, 26
- dofieldeffect 65
+ dofieldeffect FLDEFF_65
playbgm MUS_RG_DEOEYE, 0
- waitfieldeffect 65
+ waitfieldeffect FLDEFF_65
addobject 2
applymovement 2, BirthIsland_Exterior_Movement_268054
waitmovement 0
diff --git a/data/maps/CaveOfOrigin_1F/scripts.inc b/data/maps/CaveOfOrigin_1F/scripts.inc
index e8d722dee..8c72ec4b8 100644
--- a/data/maps/CaveOfOrigin_1F/scripts.inc
+++ b/data/maps/CaveOfOrigin_1F/scripts.inc
@@ -1,7 +1,7 @@
CaveOfOrigin_1F_MapScripts:: @ 8235768
- map_script MAP_SCRIPT_ON_TRANSITION, CaveOfOrigin_1F_MapScript1_23576E
+ map_script MAP_SCRIPT_ON_TRANSITION, CaveOfOrigin_1F_OnTransition
.byte 0
-CaveOfOrigin_1F_MapScript1_23576E: @ 823576E
+CaveOfOrigin_1F_OnTransition: @ 823576E
call_if_set FLAG_UNUSED_RS_LEGENDARY_BATTLE_DONE, CaveOfOrigin_1F_EventScript_2722C1
end
diff --git a/data/maps/CaveOfOrigin_UnusedRubySapphireMap1/scripts.inc b/data/maps/CaveOfOrigin_UnusedRubySapphireMap1/scripts.inc
index e3e296945..bc574be2d 100644
--- a/data/maps/CaveOfOrigin_UnusedRubySapphireMap1/scripts.inc
+++ b/data/maps/CaveOfOrigin_UnusedRubySapphireMap1/scripts.inc
@@ -1,7 +1,7 @@
CaveOfOrigin_UnusedRubySapphireMap1_MapScripts:: @ 8235778
- map_script MAP_SCRIPT_ON_TRANSITION, CaveOfOrigin_UnusedRubySapphireMap1_MapScript1_23577E
+ map_script MAP_SCRIPT_ON_TRANSITION, CaveOfOrigin_UnusedRubySapphireMap1_OnTransition
.byte 0
-CaveOfOrigin_UnusedRubySapphireMap1_MapScript1_23577E: @ 823577E
+CaveOfOrigin_UnusedRubySapphireMap1_OnTransition: @ 823577E
call_if_set FLAG_UNUSED_RS_LEGENDARY_BATTLE_DONE, CaveOfOrigin_UnusedRubySapphireMap1_EventScript_2722C1
end
diff --git a/data/maps/CaveOfOrigin_UnusedRubySapphireMap2/scripts.inc b/data/maps/CaveOfOrigin_UnusedRubySapphireMap2/scripts.inc
index 417a7369a..340e4a585 100644
--- a/data/maps/CaveOfOrigin_UnusedRubySapphireMap2/scripts.inc
+++ b/data/maps/CaveOfOrigin_UnusedRubySapphireMap2/scripts.inc
@@ -1,8 +1,8 @@
CaveOfOrigin_UnusedRubySapphireMap2_MapScripts:: @ 8235788
- map_script MAP_SCRIPT_ON_TRANSITION, CaveOfOrigin_UnusedRubySapphireMap2_MapScript1_23578E
+ map_script MAP_SCRIPT_ON_TRANSITION, CaveOfOrigin_UnusedRubySapphireMap2_OnTransition
.byte 0
-CaveOfOrigin_UnusedRubySapphireMap2_MapScript1_23578E: @ 823578E
+CaveOfOrigin_UnusedRubySapphireMap2_OnTransition: @ 823578E
call_if_set FLAG_UNUSED_RS_LEGENDARY_BATTLE_DONE, CaveOfOrigin_UnusedRubySapphireMap2_EventScript_2722C1
end
diff --git a/data/maps/CaveOfOrigin_UnusedRubySapphireMap3/scripts.inc b/data/maps/CaveOfOrigin_UnusedRubySapphireMap3/scripts.inc
index 51d9b8654..f2e118907 100644
--- a/data/maps/CaveOfOrigin_UnusedRubySapphireMap3/scripts.inc
+++ b/data/maps/CaveOfOrigin_UnusedRubySapphireMap3/scripts.inc
@@ -1,8 +1,8 @@
CaveOfOrigin_UnusedRubySapphireMap3_MapScripts:: @ 8235798
- map_script MAP_SCRIPT_ON_TRANSITION, CaveOfOrigin_UnusedRubySapphireMap3_MapScript1_23579E
+ map_script MAP_SCRIPT_ON_TRANSITION, CaveOfOrigin_UnusedRubySapphireMap3_OnTransition
.byte 0
-CaveOfOrigin_UnusedRubySapphireMap3_MapScript1_23579E: @ 823579E
+CaveOfOrigin_UnusedRubySapphireMap3_OnTransition: @ 823579E
call_if_set FLAG_UNUSED_RS_LEGENDARY_BATTLE_DONE, CaveOfOrigin_UnusedRubySapphireMap3_EventScript_2722C1
end
diff --git a/data/maps/DewfordTown/scripts.inc b/data/maps/DewfordTown/scripts.inc
index ed8acea17..1fcaab8d6 100644
--- a/data/maps/DewfordTown/scripts.inc
+++ b/data/maps/DewfordTown/scripts.inc
@@ -1,8 +1,8 @@
DewfordTown_MapScripts:: @ 81E9507
- map_script MAP_SCRIPT_ON_TRANSITION, DewfordTown_MapScript1_1E950D
+ map_script MAP_SCRIPT_ON_TRANSITION, DewfordTown_OnTransition
.byte 0
-DewfordTown_MapScript1_1E950D: @ 81E950D
+DewfordTown_OnTransition: @ 81E950D
setflag FLAG_VISITED_DEWFORD_TOWN
end
diff --git a/data/maps/DewfordTown_Gym/scripts.inc b/data/maps/DewfordTown_Gym/scripts.inc
index eb8183585..5601c7477 100644
--- a/data/maps/DewfordTown_Gym/scripts.inc
+++ b/data/maps/DewfordTown_Gym/scripts.inc
@@ -1,8 +1,8 @@
DewfordTown_Gym_MapScripts:: @ 81FC63C
- map_script MAP_SCRIPT_ON_TRANSITION, DewfordTown_Gym_MapScript1_1FC642
+ map_script MAP_SCRIPT_ON_TRANSITION, DewfordTown_Gym_OnTransition
.byte 0
-DewfordTown_Gym_MapScript1_1FC642: @ 81FC642
+DewfordTown_Gym_OnTransition: @ 81FC642
call DewfordTown_Gym_EventScript_1FC648
end
diff --git a/data/maps/DewfordTown_PokemonCenter_1F/scripts.inc b/data/maps/DewfordTown_PokemonCenter_1F/scripts.inc
index b4f5fc4c6..be9005d7d 100644
--- a/data/maps/DewfordTown_PokemonCenter_1F/scripts.inc
+++ b/data/maps/DewfordTown_PokemonCenter_1F/scripts.inc
@@ -1,9 +1,9 @@
DewfordTown_PokemonCenter_1F_MapScripts:: @ 81FC523
- map_script MAP_SCRIPT_ON_TRANSITION, DewfordTown_PokemonCenter_1F_MapScript1_1FC52E
+ map_script MAP_SCRIPT_ON_TRANSITION, DewfordTown_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, DewfordTown_PokemonCenter_1F_MapScript1_277C30
.byte 0
-DewfordTown_PokemonCenter_1F_MapScript1_1FC52E: @ 81FC52E
+DewfordTown_PokemonCenter_1F_OnTransition: @ 81FC52E
setrespawn HEAL_LOCATION_DEWFORD_TOWN
call DewfordTown_PokemonCenter_1F_EventScript_2718DE
end
diff --git a/data/maps/DewfordTown_PokemonCenter_2F/scripts.inc b/data/maps/DewfordTown_PokemonCenter_2F/scripts.inc
index 58b0b63a1..f49560d8c 100644
--- a/data/maps/DewfordTown_PokemonCenter_2F/scripts.inc
+++ b/data/maps/DewfordTown_PokemonCenter_2F/scripts.inc
@@ -2,7 +2,7 @@ DewfordTown_PokemonCenter_2F_MapScripts:: @ 81FC615
map_script MAP_SCRIPT_ON_FRAME_TABLE, DewfordTown_PokemonCenter_2F_MapScript2_276C3B
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, DewfordTown_PokemonCenter_2F_MapScript2_276B6C
map_script MAP_SCRIPT_ON_LOAD, DewfordTown_PokemonCenter_2F_MapScript1_276BBE
- map_script MAP_SCRIPT_ON_TRANSITION, DewfordTown_PokemonCenter_2F_MapScript1_276ACF
+ map_script MAP_SCRIPT_ON_TRANSITION, PokemonCenter_2F_OnTransition
.byte 0
DewfordTown_PokemonCenter_2F_EventScript_1FC62A:: @ 81FC62A
diff --git a/data/maps/EverGrandeCity/scripts.inc b/data/maps/EverGrandeCity/scripts.inc
index ffbf5a6cd..39e57f563 100644
--- a/data/maps/EverGrandeCity/scripts.inc
+++ b/data/maps/EverGrandeCity/scripts.inc
@@ -1,8 +1,8 @@
EverGrandeCity_MapScripts:: @ 81E7D1B
- map_script MAP_SCRIPT_ON_TRANSITION, EverGrandeCity_MapScript1_1E7D21
+ map_script MAP_SCRIPT_ON_TRANSITION, EverGrandeCity_OnTransition
.byte 0
-EverGrandeCity_MapScript1_1E7D21: @ 81E7D21
+EverGrandeCity_OnTransition: @ 81E7D21
call_if_set FLAG_SYS_WEATHER_CTRL, Common_EventScript_SetWeather15
end
diff --git a/data/maps/EverGrandeCity_ChampionsRoom/scripts.inc b/data/maps/EverGrandeCity_ChampionsRoom/scripts.inc
index 49411aeb4..72c5cc916 100644
--- a/data/maps/EverGrandeCity_ChampionsRoom/scripts.inc
+++ b/data/maps/EverGrandeCity_ChampionsRoom/scripts.inc
@@ -1,10 +1,10 @@
EverGrandeCity_ChampionsRoom_MapScripts:: @ 82289EF
- map_script MAP_SCRIPT_ON_TRANSITION, EverGrandeCity_ChampionsRoom_MapScript1_2289FF
+ map_script MAP_SCRIPT_ON_TRANSITION, EverGrandeCity_ChampionsRoom_OnTransition
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, EverGrandeCity_ChampionsRoom_MapScript2_228A05
map_script MAP_SCRIPT_ON_FRAME_TABLE, EverGrandeCity_ChampionsRoom_MapScript2_228A14
.byte 0
-EverGrandeCity_ChampionsRoom_MapScript1_2289FF: @ 82289FF
+EverGrandeCity_ChampionsRoom_OnTransition: @ 82289FF
call Common_EventScript_SetupRivalGender
end
diff --git a/data/maps/EverGrandeCity_HallOfFame/scripts.inc b/data/maps/EverGrandeCity_HallOfFame/scripts.inc
index f61547c14..343614d85 100644
--- a/data/maps/EverGrandeCity_HallOfFame/scripts.inc
+++ b/data/maps/EverGrandeCity_HallOfFame/scripts.inc
@@ -38,8 +38,8 @@ EverGrandeCity_HallOfFame_EventScript_229850:: @ 8229850
applymovement EVENT_OBJ_ID_PLAYER, Common_Movement_WalkInPlaceUp
waitmovement 0
delay 20
- dofieldeffect 62
- waitfieldeffect 62
+ dofieldeffect FLDEFF_HALL_OF_FAME_RECORD
+ waitfieldeffect FLDEFF_HALL_OF_FAME_RECORD
delay 40
setvar VAR_TEMP_1, 1
call EverGrandeCity_HallOfFame_EventScript_2717C1
diff --git a/data/maps/EverGrandeCity_PokemonCenter_1F/scripts.inc b/data/maps/EverGrandeCity_PokemonCenter_1F/scripts.inc
index 12c6bbb77..0b292530e 100644
--- a/data/maps/EverGrandeCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/EverGrandeCity_PokemonCenter_1F/scripts.inc
@@ -1,9 +1,9 @@
EverGrandeCity_PokemonCenter_1F_MapScripts:: @ 8229A34
- map_script MAP_SCRIPT_ON_TRANSITION, EverGrandeCity_PokemonCenter_1F_MapScript1_229A3F
+ map_script MAP_SCRIPT_ON_TRANSITION, EverGrandeCity_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, EverGrandeCity_PokemonCenter_1F_MapScript1_277C30
.byte 0
-EverGrandeCity_PokemonCenter_1F_MapScript1_229A3F: @ 8229A3F
+EverGrandeCity_PokemonCenter_1F_OnTransition: @ 8229A3F
setrespawn HEAL_LOCATION_EVER_GRANDE_CITY_1
call_if_unset FLAG_MET_SCOTT_IN_EVERGRANDE, EverGrandeCity_PokemonCenter_1F_EventScript_229A4C
end
diff --git a/data/maps/EverGrandeCity_PokemonCenter_2F/scripts.inc b/data/maps/EverGrandeCity_PokemonCenter_2F/scripts.inc
index 40408c1f8..690032b8a 100644
--- a/data/maps/EverGrandeCity_PokemonCenter_2F/scripts.inc
+++ b/data/maps/EverGrandeCity_PokemonCenter_2F/scripts.inc
@@ -2,7 +2,7 @@ EverGrandeCity_PokemonCenter_2F_MapScripts:: @ 8229CE0
map_script MAP_SCRIPT_ON_FRAME_TABLE, EverGrandeCity_PokemonCenter_2F_MapScript2_276C3B
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, EverGrandeCity_PokemonCenter_2F_MapScript2_276B6C
map_script MAP_SCRIPT_ON_LOAD, EverGrandeCity_PokemonCenter_2F_MapScript1_276BBE
- map_script MAP_SCRIPT_ON_TRANSITION, EverGrandeCity_PokemonCenter_2F_MapScript1_276ACF
+ map_script MAP_SCRIPT_ON_TRANSITION, PokemonCenter_2F_OnTransition
.byte 0
EverGrandeCity_PokemonCenter_2F_EventScript_229CF5:: @ 8229CF5
diff --git a/data/maps/EverGrandeCity_PokemonLeague_2F/scripts.inc b/data/maps/EverGrandeCity_PokemonLeague_2F/scripts.inc
index 2d2d916a3..2a2652938 100644
--- a/data/maps/EverGrandeCity_PokemonLeague_2F/scripts.inc
+++ b/data/maps/EverGrandeCity_PokemonLeague_2F/scripts.inc
@@ -2,7 +2,7 @@ EverGrandeCity_PokemonLeague_2F_MapScripts:: @ 8229D07
map_script MAP_SCRIPT_ON_FRAME_TABLE, EverGrandeCity_PokemonLeague_2F_MapScript2_276C3B
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, EverGrandeCity_PokemonLeague_2F_MapScript2_276B6C
map_script MAP_SCRIPT_ON_LOAD, EverGrandeCity_PokemonLeague_2F_MapScript1_276BBE
- map_script MAP_SCRIPT_ON_TRANSITION, EverGrandeCity_PokemonLeague_2F_MapScript1_276ACF
+ map_script MAP_SCRIPT_ON_TRANSITION, PokemonCenter_2F_OnTransition
.byte 0
EverGrandeCity_PokemonLeague_2F_EventScript_229D1C:: @ 8229D1C
diff --git a/data/maps/EverGrandeCity_SidneysRoom/scripts.inc b/data/maps/EverGrandeCity_SidneysRoom/scripts.inc
index 1713a6d3e..380b3aaf7 100644
--- a/data/maps/EverGrandeCity_SidneysRoom/scripts.inc
+++ b/data/maps/EverGrandeCity_SidneysRoom/scripts.inc
@@ -1,17 +1,17 @@
EverGrandeCity_SidneysRoom_MapScripts:: @ 8227F01
map_script MAP_SCRIPT_ON_LOAD, EverGrandeCity_SidneysRoom_MapScript1_227F1D
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, EverGrandeCity_SidneysRoom_MapScript2_227F3E
- map_script MAP_SCRIPT_ON_TRANSITION, EverGrandeCity_SidneysRoom_MapScript1_227F16
+ map_script MAP_SCRIPT_ON_TRANSITION, EverGrandeCity_SidneysRoom_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, EverGrandeCity_SidneysRoom_MapScript2_227F4D
.byte 0
-EverGrandeCity_SidneysRoom_MapScript1_227F16: @ 8227F16
+EverGrandeCity_SidneysRoom_OnTransition: @ 8227F16
setflag FLAG_MET_SCOTT_IN_EVERGRANDE
setflag FLAG_HIDE_EVER_GRANDE_POKEMON_CENTER_1F_SCOTT
end
EverGrandeCity_SidneysRoom_MapScript1_227F1D: @ 8227F1D
- call_if_set FLAG_DEFEATED_ELITE_4_SYDNEY, EverGrandeCity_SidneysRoom_EventScript_227F32
+ call_if_set FLAG_DEFEATED_ELITE_4_SIDNEY, EverGrandeCity_SidneysRoom_EventScript_227F32
compare VAR_ELITE_4_STATE, 1
call_if_eq EverGrandeCity_SidneysRoom_EventScript_227F38
end
@@ -47,7 +47,7 @@ EverGrandeCity_SidneysRoom_EventScript_227F57:: @ 8227F57
EverGrandeCity_SidneysRoom_EventScript_227F64:: @ 8227F64
lock
faceplayer
- goto_if_set FLAG_DEFEATED_ELITE_4_SYDNEY, EverGrandeCity_SidneysRoom_EventScript_227F8B
+ goto_if_set FLAG_DEFEATED_ELITE_4_SIDNEY, EverGrandeCity_SidneysRoom_EventScript_227F8B
playbgm MUS_SITENNOU, 0
msgbox EverGrandeCity_SidneysRoom_Text_227FA7, MSGBOX_DEFAULT
trainerbattle_no_intro TRAINER_SIDNEY, EverGrandeCity_SidneysRoom_Text_2280A2
@@ -60,7 +60,7 @@ EverGrandeCity_SidneysRoom_EventScript_227F8B:: @ 8227F8B
end
EverGrandeCity_SidneysRoom_EventScript_227F95:: @ 8227F95
- setflag FLAG_DEFEATED_ELITE_4_SYDNEY
+ setflag FLAG_DEFEATED_ELITE_4_SIDNEY
call EverGrandeCity_SidneysRoom_EventScript_2723F8
msgbox EverGrandeCity_SidneysRoom_Text_2280EC, MSGBOX_DEFAULT
release
diff --git a/data/maps/FallarborTown/scripts.inc b/data/maps/FallarborTown/scripts.inc
index 50e19cfe5..15942007b 100644
--- a/data/maps/FallarborTown/scripts.inc
+++ b/data/maps/FallarborTown/scripts.inc
@@ -1,8 +1,8 @@
FallarborTown_MapScripts:: @ 81EB1FA
- map_script MAP_SCRIPT_ON_TRANSITION, FallarborTown_MapScript1_1EB200
+ map_script MAP_SCRIPT_ON_TRANSITION, FallarborTown_OnTransition
.byte 0
-FallarborTown_MapScript1_1EB200: @ 81EB200
+FallarborTown_OnTransition: @ 81EB200
setflag FLAG_VISITED_FALLARBOR_TOWN
setvar VAR_LINK_CONTEST_ROOM_STATE, 0
clearflag FLAG_CONTEST_SKETCH_CREATED
diff --git a/data/maps/FallarborTown_BattleTentBattleRoom/scripts.inc b/data/maps/FallarborTown_BattleTentBattleRoom/scripts.inc
index b376f72e4..7501f6e8d 100644
--- a/data/maps/FallarborTown_BattleTentBattleRoom/scripts.inc
+++ b/data/maps/FallarborTown_BattleTentBattleRoom/scripts.inc
@@ -1,10 +1,10 @@
FallarborTown_BattleTentBattleRoom_MapScripts:: @ 8200899
- map_script MAP_SCRIPT_ON_TRANSITION, FallarborTown_BattleTentBattleRoom_MapScript1_2008A9
+ map_script MAP_SCRIPT_ON_TRANSITION, FallarborTown_BattleTentBattleRoom_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, FallarborTown_BattleTentBattleRoom_MapScript2_2008DD
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, FallarborTown_BattleTentBattleRoom_MapScript2_200BB0
.byte 0
-FallarborTown_BattleTentBattleRoom_MapScript1_2008A9: @ 82008A9
+FallarborTown_BattleTentBattleRoom_OnTransition: @ 82008A9
call FallarborTown_BattleTentBattleRoom_EventScript_2008AF
end
diff --git a/data/maps/FallarborTown_PokemonCenter_1F/scripts.inc b/data/maps/FallarborTown_PokemonCenter_1F/scripts.inc
index d34e139eb..5dbd35b48 100644
--- a/data/maps/FallarborTown_PokemonCenter_1F/scripts.inc
+++ b/data/maps/FallarborTown_PokemonCenter_1F/scripts.inc
@@ -1,9 +1,9 @@
FallarborTown_PokemonCenter_1F_MapScripts:: @ 8200BCD
- map_script MAP_SCRIPT_ON_TRANSITION, FallarborTown_PokemonCenter_1F_MapScript1_200BD8
+ map_script MAP_SCRIPT_ON_TRANSITION, FallarborTown_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, FallarborTown_PokemonCenter_1F_MapScript1_277C30
.byte 0
-FallarborTown_PokemonCenter_1F_MapScript1_200BD8: @ 8200BD8
+FallarborTown_PokemonCenter_1F_OnTransition: @ 8200BD8
setrespawn HEAL_LOCATION_FALLARBOR_TOWN
call FallarborTown_PokemonCenter_1F_EventScript_2718DE
end
diff --git a/data/maps/FallarborTown_PokemonCenter_2F/scripts.inc b/data/maps/FallarborTown_PokemonCenter_2F/scripts.inc
index 8fce8e729..0d5332647 100644
--- a/data/maps/FallarborTown_PokemonCenter_2F/scripts.inc
+++ b/data/maps/FallarborTown_PokemonCenter_2F/scripts.inc
@@ -2,7 +2,7 @@ FallarborTown_PokemonCenter_2F_MapScripts:: @ 8200EEB
map_script MAP_SCRIPT_ON_FRAME_TABLE, FallarborTown_PokemonCenter_2F_MapScript2_276C3B
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, FallarborTown_PokemonCenter_2F_MapScript2_276B6C
map_script MAP_SCRIPT_ON_LOAD, FallarborTown_PokemonCenter_2F_MapScript1_276BBE
- map_script MAP_SCRIPT_ON_TRANSITION, FallarborTown_PokemonCenter_2F_MapScript1_276ACF
+ map_script MAP_SCRIPT_ON_TRANSITION, PokemonCenter_2F_OnTransition
.byte 0
FallarborTown_PokemonCenter_2F_EventScript_200F00:: @ 8200F00
diff --git a/data/maps/FarawayIsland_Entrance/scripts.inc b/data/maps/FarawayIsland_Entrance/scripts.inc
index 347c89aa0..bd91918c3 100644
--- a/data/maps/FarawayIsland_Entrance/scripts.inc
+++ b/data/maps/FarawayIsland_Entrance/scripts.inc
@@ -1,8 +1,8 @@
FarawayIsland_Entrance_MapScripts:: @ 8267C8E
- map_script MAP_SCRIPT_ON_TRANSITION, FarawayIsland_Entrance_MapScript1_267C94
+ map_script MAP_SCRIPT_ON_TRANSITION, FarawayIsland_Entrance_OnTransition
.byte 0
-FarawayIsland_Entrance_MapScript1_267C94: @ 8267C94
+FarawayIsland_Entrance_OnTransition: @ 8267C94
setflag FLAG_ARRIVED_ON_FARAWAY_ISLAND
end
diff --git a/data/maps/FarawayIsland_Interior/scripts.inc b/data/maps/FarawayIsland_Interior/scripts.inc
index fe180184b..b6a278b03 100644
--- a/data/maps/FarawayIsland_Interior/scripts.inc
+++ b/data/maps/FarawayIsland_Interior/scripts.inc
@@ -1,6 +1,6 @@
FarawayIsland_Interior_MapScripts:: @ 8267CFA
map_script MAP_SCRIPT_ON_RESUME, FarawayIsland_Interior_MapScript1_267D54
- map_script MAP_SCRIPT_ON_TRANSITION, FarawayIsland_Interior_MapScript1_267D72
+ map_script MAP_SCRIPT_ON_TRANSITION, FarawayIsland_Interior_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, FarawayIsland_Interior_MapScript2_267D98
map_script MAP_SCRIPT_ON_RETURN_TO_FIELD, FarawayIsland_Interior_MapScript1_267D0F
.byte 0
@@ -37,7 +37,7 @@ FarawayIsland_Interior_EventScript_267D5E:: @ 8267D5E
removeobject VAR_LAST_TALKED
return
-FarawayIsland_Interior_MapScript1_267D72: @ 8267D72
+FarawayIsland_Interior_OnTransition: @ 8267D72
setvar VAR_FARAWAY_ISLAND_STEP_COUNTER, 0
setvar VAR_TEMP_1, 1
call_if_unset FLAG_CAUGHT_MEW, FarawayIsland_Interior_EventScript_267D86
diff --git a/data/maps/FieryPath/map.json b/data/maps/FieryPath/map.json
index 9bb09fe5a..70d1a2cfd 100644
--- a/data/maps/FieryPath/map.json
+++ b/data/maps/FieryPath/map.json
@@ -37,7 +37,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "FieryPath_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_11"
},
{
@@ -50,7 +50,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "FieryPath_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_12"
},
{
@@ -63,7 +63,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "FieryPath_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_13"
},
{
@@ -76,7 +76,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "FieryPath_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_14"
},
{
@@ -89,7 +89,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "FieryPath_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_15"
},
{
@@ -102,7 +102,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "FieryPath_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_16"
},
{
diff --git a/data/maps/FortreeCity/scripts.inc b/data/maps/FortreeCity/scripts.inc
index 1c464df9d..30f617f78 100644
--- a/data/maps/FortreeCity/scripts.inc
+++ b/data/maps/FortreeCity/scripts.inc
@@ -1,9 +1,9 @@
FortreeCity_MapScripts:: @ 81E25A4
- map_script MAP_SCRIPT_ON_TRANSITION, FortreeCity_MapScript1_1E25AF
+ map_script MAP_SCRIPT_ON_TRANSITION, FortreeCity_OnTransition
map_script MAP_SCRIPT_ON_RESUME, FortreeCity_MapScript1_1E25B3
.byte 0
-FortreeCity_MapScript1_1E25AF: @ 81E25AF
+FortreeCity_OnTransition: @ 81E25AF
setflag FLAG_VISITED_FORTREE_CITY
end
diff --git a/data/maps/FortreeCity_DecorationShop/scripts.inc b/data/maps/FortreeCity_DecorationShop/scripts.inc
index 5274daeda..3b0021cf3 100644
--- a/data/maps/FortreeCity_DecorationShop/scripts.inc
+++ b/data/maps/FortreeCity_DecorationShop/scripts.inc
@@ -14,22 +14,22 @@ FortreeCity_DecorationShop_EventScript_218020:: @ 8218020
faceplayer
message gUnknown_08272A21
waitmessage
- pokemartdecoration FortreeCity_DecorationShop_PokemartDecor_218038
+ pokemartdecoration FortreeCity_DecorationShop_PokemartDecor_Desks
msgbox gUnknown_08272A3F, MSGBOX_DEFAULT
release
end
.align 2
-FortreeCity_DecorationShop_PokemartDecor_218038: @ 8218038
- .2byte 1
- .2byte 2
- .2byte 3
- .2byte 4
- .2byte 5
- .2byte 7
- .2byte 8
- .2byte 9
- .2byte 0
+FortreeCity_DecorationShop_PokemartDecor_Desks: @ 8218038
+ .2byte DECOR_SMALL_DESK
+ .2byte DECOR_POKEMON_DESK
+ .2byte DECOR_HEAVY_DESK
+ .2byte DECOR_RAGGED_DESK
+ .2byte DECOR_COMFORT_DESK
+ .2byte DECOR_BRICK_DESK
+ .2byte DECOR_CAMP_DESK
+ .2byte DECOR_HARD_DESK
+ .2byte DECOR_NONE
release
end
@@ -38,22 +38,22 @@ FortreeCity_DecorationShop_EventScript_21804C:: @ 821804C
faceplayer
message gUnknown_08272A21
waitmessage
- pokemartdecoration FortreeCity_DecorationShop_PokemartDecor_218064
+ pokemartdecoration FortreeCity_DecorationShop_PokemartDecor_Chairs
msgbox gUnknown_08272A3F, MSGBOX_DEFAULT
release
end
.align 2
-FortreeCity_DecorationShop_PokemartDecor_218064: @ 8218064
- .2byte 10
- .2byte 11
- .2byte 12
- .2byte 15
- .2byte 14
- .2byte 16
- .2byte 17
- .2byte 18
- .2byte 0
+FortreeCity_DecorationShop_PokemartDecor_Chairs: @ 8218064
+ .2byte DECOR_SMALL_CHAIR
+ .2byte DECOR_POKEMON_CHAIR
+ .2byte DECOR_HEAVY_CHAIR
+ .2byte DECOR_RAGGED_CHAIR
+ .2byte DECOR_COMFORT_CHAIR
+ .2byte DECOR_BRICK_CHAIR
+ .2byte DECOR_CAMP_CHAIR
+ .2byte DECOR_HARD_CHAIR
+ .2byte DECOR_NONE
release
end
diff --git a/data/maps/FortreeCity_Gym/scripts.inc b/data/maps/FortreeCity_Gym/scripts.inc
index 8192e2039..1b3cf29e9 100644
--- a/data/maps/FortreeCity_Gym/scripts.inc
+++ b/data/maps/FortreeCity_Gym/scripts.inc
@@ -1,9 +1,9 @@
FortreeCity_Gym_MapScripts:: @ 82165AB
- map_script MAP_SCRIPT_ON_TRANSITION, FortreeCity_Gym_MapScript1_2165B6
+ map_script MAP_SCRIPT_ON_TRANSITION, FortreeCity_Gym_OnTransition
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, FortreeCity_Gym_MapScript2_2165BA
.byte 0
-FortreeCity_Gym_MapScript1_2165B6: @ 82165B6
+FortreeCity_Gym_OnTransition: @ 82165B6
special RotatingGate_InitPuzzle
end
diff --git a/data/maps/FortreeCity_PokemonCenter_1F/scripts.inc b/data/maps/FortreeCity_PokemonCenter_1F/scripts.inc
index 070956590..0c62f97e2 100644
--- a/data/maps/FortreeCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/FortreeCity_PokemonCenter_1F/scripts.inc
@@ -1,9 +1,9 @@
FortreeCity_PokemonCenter_1F_MapScripts:: @ 82173D8
- map_script MAP_SCRIPT_ON_TRANSITION, FortreeCity_PokemonCenter_1F_MapScript1_2173E3
+ map_script MAP_SCRIPT_ON_TRANSITION, FortreeCity_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, FortreeCity_PokemonCenter_1F_MapScript1_277C30
.byte 0
-FortreeCity_PokemonCenter_1F_MapScript1_2173E3: @ 82173E3
+FortreeCity_PokemonCenter_1F_OnTransition: @ 82173E3
setrespawn HEAL_LOCATION_FORTREE_CITY
end
diff --git a/data/maps/FortreeCity_PokemonCenter_2F/scripts.inc b/data/maps/FortreeCity_PokemonCenter_2F/scripts.inc
index dbe2e31ec..2ab9510f3 100644
--- a/data/maps/FortreeCity_PokemonCenter_2F/scripts.inc
+++ b/data/maps/FortreeCity_PokemonCenter_2F/scripts.inc
@@ -2,7 +2,7 @@ FortreeCity_PokemonCenter_2F_MapScripts:: @ 821763E
map_script MAP_SCRIPT_ON_FRAME_TABLE, FortreeCity_PokemonCenter_2F_MapScript2_276C3B
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, FortreeCity_PokemonCenter_2F_MapScript2_276B6C
map_script MAP_SCRIPT_ON_LOAD, FortreeCity_PokemonCenter_2F_MapScript1_276BBE
- map_script MAP_SCRIPT_ON_TRANSITION, FortreeCity_PokemonCenter_2F_MapScript1_276ACF
+ map_script MAP_SCRIPT_ON_TRANSITION, PokemonCenter_2F_OnTransition
.byte 0
FortreeCity_PokemonCenter_2F_EventScript_217653:: @ 8217653
diff --git a/data/maps/GraniteCave_B2F/map.json b/data/maps/GraniteCave_B2F/map.json
index 73a13d6d2..72e403046 100644
--- a/data/maps/GraniteCave_B2F/map.json
+++ b/data/maps/GraniteCave_B2F/map.json
@@ -50,7 +50,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "GraniteCave_B2F_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_11"
},
{
@@ -63,7 +63,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "GraniteCave_B2F_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_12"
},
{
@@ -76,7 +76,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "GraniteCave_B2F_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_13"
},
{
@@ -89,7 +89,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "GraniteCave_B2F_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_14"
},
{
@@ -102,7 +102,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "GraniteCave_B2F_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_15"
},
{
@@ -115,7 +115,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "GraniteCave_B2F_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_16"
},
{
@@ -128,7 +128,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "GraniteCave_B2F_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_17"
}
],
diff --git a/data/maps/JaggedPass/scripts.inc b/data/maps/JaggedPass/scripts.inc
index c51a5ec26..34ff367ae 100644
--- a/data/maps/JaggedPass/scripts.inc
+++ b/data/maps/JaggedPass/scripts.inc
@@ -1,6 +1,6 @@
JaggedPass_MapScripts:: @ 8230656
map_script MAP_SCRIPT_ON_RESUME, JaggedPass_MapScript1_230666
- map_script MAP_SCRIPT_ON_TRANSITION, JaggedPass_MapScript1_23068B
+ map_script MAP_SCRIPT_ON_TRANSITION, JaggedPass_OnTransition
map_script MAP_SCRIPT_ON_LOAD, JaggedPass_MapScript1_23069C
.byte 0
@@ -20,7 +20,7 @@ JaggedPass_EventScript_230685:: @ 8230685
setvar VAR_JAGGED_PASS_STATE, 1
return
-JaggedPass_MapScript1_23068B: @ 823068B
+JaggedPass_OnTransition: @ 823068B
compare VAR_JAGGED_PASS_ASH_WEATHER, 1
call_if_eq JaggedPass_EventScript_230697
end
diff --git a/data/maps/LavaridgeTown/scripts.inc b/data/maps/LavaridgeTown/scripts.inc
index acbb3fcd2..9e20673b7 100644
--- a/data/maps/LavaridgeTown/scripts.inc
+++ b/data/maps/LavaridgeTown/scripts.inc
@@ -1,9 +1,9 @@
LavaridgeTown_MapScripts:: @ 81EA4D3
- map_script MAP_SCRIPT_ON_TRANSITION, LavaridgeTown_MapScript1_1EA4DE
+ map_script MAP_SCRIPT_ON_TRANSITION, LavaridgeTown_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, LavaridgeTown_MapScript2_1EA547
.byte 0
-LavaridgeTown_MapScript1_1EA4DE: @ 81EA4DE
+LavaridgeTown_OnTransition: @ 81EA4DE
setflag FLAG_VISITED_LAVARIDGE_TOWN
call_if_set FLAG_FLANNERY_GIVES_BADGE_INFO, LavaridgeTown_EventScript_1EA514
call_if_set FLAG_DEFEATED_EVIL_TEAM_MT_CHIMNEY, LavaridgeTown_EventScript_1EA53F
diff --git a/data/maps/LavaridgeTown_Gym_1F/scripts.inc b/data/maps/LavaridgeTown_Gym_1F/scripts.inc
index bccd1dfef..bdc1da32f 100644
--- a/data/maps/LavaridgeTown_Gym_1F/scripts.inc
+++ b/data/maps/LavaridgeTown_Gym_1F/scripts.inc
@@ -1,8 +1,8 @@
LavaridgeTown_Gym_1F_MapScripts:: @ 81FE6F4
- map_script MAP_SCRIPT_ON_TRANSITION, LavaridgeTown_Gym_1F_MapScript1_1FE6FA
+ map_script MAP_SCRIPT_ON_TRANSITION, LavaridgeTown_Gym_1F_OnTransition
.byte 0
-LavaridgeTown_Gym_1F_MapScript1_1FE6FA: @ 81FE6FA
+LavaridgeTown_Gym_1F_OnTransition: @ 81FE6FA
call LavaridgeTown_Gym_1F_EventScript_1FE705
call LavaridgeTown_Gym_1F_EventScript_1FE757
end
diff --git a/data/maps/LavaridgeTown_Gym_B1F/scripts.inc b/data/maps/LavaridgeTown_Gym_B1F/scripts.inc
index d2e8d90b5..4f3bb062d 100644
--- a/data/maps/LavaridgeTown_Gym_B1F/scripts.inc
+++ b/data/maps/LavaridgeTown_Gym_B1F/scripts.inc
@@ -1,8 +1,8 @@
LavaridgeTown_Gym_B1F_MapScripts:: @ 81FF87E
- map_script MAP_SCRIPT_ON_TRANSITION, LavaridgeTown_Gym_B1F_MapScript1_1FF884
+ map_script MAP_SCRIPT_ON_TRANSITION, LavaridgeTown_Gym_B1F_OnTransition
.byte 0
-LavaridgeTown_Gym_B1F_MapScript1_1FF884: @ 81FF884
+LavaridgeTown_Gym_B1F_OnTransition: @ 81FF884
call LavaridgeTown_Gym_B1F_EventScript_1FF88F
call LavaridgeTown_Gym_B1F_EventScript_1FF8DC
end
diff --git a/data/maps/LavaridgeTown_PokemonCenter_1F/scripts.inc b/data/maps/LavaridgeTown_PokemonCenter_1F/scripts.inc
index 2a0cb4a1e..4905a5bce 100644
--- a/data/maps/LavaridgeTown_PokemonCenter_1F/scripts.inc
+++ b/data/maps/LavaridgeTown_PokemonCenter_1F/scripts.inc
@@ -1,9 +1,9 @@
LavaridgeTown_PokemonCenter_1F_MapScripts:: @ 81FFAFA
- map_script MAP_SCRIPT_ON_TRANSITION, LavaridgeTown_PokemonCenter_1F_MapScript1_1FFB05
+ map_script MAP_SCRIPT_ON_TRANSITION, LavaridgeTown_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, LavaridgeTown_PokemonCenter_1F_MapScript1_277C30
.byte 0
-LavaridgeTown_PokemonCenter_1F_MapScript1_1FFB05: @ 81FFB05
+LavaridgeTown_PokemonCenter_1F_OnTransition: @ 81FFB05
setrespawn HEAL_LOCATION_LAVARIDGE_TOWN
call LavaridgeTown_PokemonCenter_1F_EventScript_2718DE
end
diff --git a/data/maps/LavaridgeTown_PokemonCenter_2F/scripts.inc b/data/maps/LavaridgeTown_PokemonCenter_2F/scripts.inc
index b022df141..c8e52468f 100644
--- a/data/maps/LavaridgeTown_PokemonCenter_2F/scripts.inc
+++ b/data/maps/LavaridgeTown_PokemonCenter_2F/scripts.inc
@@ -2,7 +2,7 @@ LavaridgeTown_PokemonCenter_2F_MapScripts:: @ 81FFC97
map_script MAP_SCRIPT_ON_FRAME_TABLE, LavaridgeTown_PokemonCenter_2F_MapScript2_276C3B
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, LavaridgeTown_PokemonCenter_2F_MapScript2_276B6C
map_script MAP_SCRIPT_ON_LOAD, LavaridgeTown_PokemonCenter_2F_MapScript1_276BBE
- map_script MAP_SCRIPT_ON_TRANSITION, LavaridgeTown_PokemonCenter_2F_MapScript1_276ACF
+ map_script MAP_SCRIPT_ON_TRANSITION, PokemonCenter_2F_OnTransition
.byte 0
LavaridgeTown_PokemonCenter_2F_EventScript_1FFCAC:: @ 81FFCAC
diff --git a/data/maps/LilycoveCity/scripts.inc b/data/maps/LilycoveCity/scripts.inc
index 7f4c9e3fd..68ffd5f99 100644
--- a/data/maps/LilycoveCity/scripts.inc
+++ b/data/maps/LilycoveCity/scripts.inc
@@ -1,9 +1,9 @@
LilycoveCity_MapScripts:: @ 81E2B3C
- map_script MAP_SCRIPT_ON_TRANSITION, LilycoveCity_MapScript1_1E2B47
+ map_script MAP_SCRIPT_ON_TRANSITION, LilycoveCity_OnTransition
map_script MAP_SCRIPT_ON_LOAD, LilycoveCity_MapScript1_1E2B61
.byte 0
-LilycoveCity_MapScript1_1E2B47: @ 81E2B47
+LilycoveCity_OnTransition: @ 81E2B47
setflag FLAG_VISITED_LILYCOVE_CITY
setvar VAR_LINK_CONTEST_ROOM_STATE, 0
setflag FLAG_HIDE_LILYCOVE_CONTEST_HALL_REPORTER
@@ -391,10 +391,10 @@ LilycoveCity_EventScript_1E3006:: @ 81E3006
waitmovement 0
delay 50
setfieldeffectargument 0, 1
- dofieldeffect 30
+ dofieldeffect FLDEFF_NPCFLY_OUT
delay 15
removeobject VAR_LAST_TALKED
- waitfieldeffect 30
+ waitfieldeffect FLDEFF_NPCFLY_OUT
savebgm MUS_DUMMY
fadedefaultbgm
setflag FLAG_MET_RIVAL_LILYCOVE
diff --git a/data/maps/LilycoveCity_ContestLobby/scripts.inc b/data/maps/LilycoveCity_ContestLobby/scripts.inc
index d5dac8bfd..34afac0a5 100644
--- a/data/maps/LilycoveCity_ContestLobby/scripts.inc
+++ b/data/maps/LilycoveCity_ContestLobby/scripts.inc
@@ -1,9 +1,9 @@
LilycoveCity_ContestLobby_MapScripts:: @ 821A211
- map_script MAP_SCRIPT_ON_TRANSITION, LilycoveCity_ContestLobby_MapScript1_21A21C
+ map_script MAP_SCRIPT_ON_TRANSITION, LilycoveCity_ContestLobby_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, LilycoveCity_ContestLobby_MapScript2_21A243
.byte 0
-LilycoveCity_ContestLobby_MapScript1_21A21C: @ 821A21C
+LilycoveCity_ContestLobby_OnTransition: @ 821A21C
call LilycoveCity_ContestLobby_EventScript_28CB2B
call LilycoveCity_ContestLobby_EventScript_21A227
end
diff --git a/data/maps/LilycoveCity_DepartmentStoreRooftop/scripts.inc b/data/maps/LilycoveCity_DepartmentStoreRooftop/scripts.inc
index 4e292a1f9..42ced50b9 100644
--- a/data/maps/LilycoveCity_DepartmentStoreRooftop/scripts.inc
+++ b/data/maps/LilycoveCity_DepartmentStoreRooftop/scripts.inc
@@ -1,8 +1,8 @@
LilycoveCity_DepartmentStoreRooftop_MapScripts:: @ 8220207
- map_script MAP_SCRIPT_ON_TRANSITION, LilycoveCity_DepartmentStoreRooftop_MapScript1_22020D
+ map_script MAP_SCRIPT_ON_TRANSITION, LilycoveCity_DepartmentStoreRooftop_OnTransition
.byte 0
-LilycoveCity_DepartmentStoreRooftop_MapScript1_22020D: @ 822020D
+LilycoveCity_DepartmentStoreRooftop_OnTransition: @ 822020D
getpricereduction 3
compare VAR_RESULT, 1
call_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_220227
@@ -30,20 +30,20 @@ LilycoveCity_DepartmentStoreRooftop_EventScript_22022F:: @ 822022F
.align 2
LilycoveCity_DepartmentStoreRooftop_PokemartDecor_220248: @ 8220248
- .2byte 39
- .2byte 35
- .2byte 36
- .2byte 37
- .2byte 40
- .2byte 33
- .2byte 41
- .2byte 38
- .2byte 34
- .2byte 45
- .2byte 46
- .2byte 47
- .2byte 117
- .2byte 112
+ .2byte DECOR_MUD_BALL
+ .2byte DECOR_FENCE_LENGTH
+ .2byte DECOR_FENCE_WIDTH
+ .2byte DECOR_TIRE
+ .2byte DECOR_BREAKABLE_DOOR
+ .2byte DECOR_SOLID_BOARD
+ .2byte DECOR_SAND_ORNAMENT
+ .2byte DECOR_STAND
+ .2byte DECOR_SLIDE
+ .2byte DECOR_TV
+ .2byte DECOR_ROUND_TV
+ .2byte DECOR_CUTE_TV
+ .2byte DECOR_WAILMER_DOLL
+ .2byte DECOR_RHYDON_DOLL
.2byte 0
release
end
@@ -235,4 +235,3 @@ LilycoveCity_DepartmentStoreRooftop_Text_2205F1: @ 82205F1
LilycoveCity_DepartmentStoreRooftop_Text_220603: @ 8220603
.string "Decided against buying a drink.$"
-
diff --git a/data/maps/LilycoveCity_DepartmentStore_5F/scripts.inc b/data/maps/LilycoveCity_DepartmentStore_5F/scripts.inc
index 7cab0f1fa..8dd40f4b3 100644
--- a/data/maps/LilycoveCity_DepartmentStore_5F/scripts.inc
+++ b/data/maps/LilycoveCity_DepartmentStore_5F/scripts.inc
@@ -18,26 +18,26 @@ LilycoveCity_DepartmentStore_5F_EventScript_21FFA6:: @ 821FFA6
faceplayer
message gUnknown_08272A21
waitmessage
- pokemartdecoration2 LilycoveCity_DepartmentStore_5F_Pokemart_21FFC0
+ pokemartdecoration2 LilycoveCity_DepartmentStore_5F_Pokemart_Dolls
msgbox gUnknown_08272A3F, MSGBOX_DEFAULT
release
end
.align 2
-LilycoveCity_DepartmentStore_5F_Pokemart_21FFC0: @ 821FFC0
- .2byte ITEM_X_DEFEND
- .2byte ITEM_X_SPEED
- .2byte ITEM_X_ACCURACY
- .2byte ITEM_SUPER_REPEL
- .2byte 91
- .2byte 92
- .2byte ITEM_SUN_STONE
- .2byte ITEM_MOON_STONE
- .2byte ITEM_FIRE_STONE
- .2byte ITEM_THUNDER_STONE
- .2byte ITEM_WATER_STONE
- .2byte ITEM_LEAF_STONE
- .2byte ITEM_NONE
+LilycoveCity_DepartmentStore_5F_Pokemart_Dolls: @ 821FFC0
+ .2byte DECOR_PICHU_DOLL
+ .2byte DECOR_PIKACHU_DOLL
+ .2byte DECOR_MARILL_DOLL
+ .2byte DECOR_JIGGLYPUFF_DOLL
+ .2byte DECOR_DUSKULL_DOLL
+ .2byte DECOR_WYNAUT_DOLL
+ .2byte DECOR_BALTOY_DOLL
+ .2byte DECOR_KECLEON_DOLL
+ .2byte DECOR_AZURILL_DOLL
+ .2byte DECOR_SKITTY_DOLL
+ .2byte DECOR_SWABLU_DOLL
+ .2byte DECOR_GULPIN_DOLL
+ .2byte DECOR_NONE
release
end
@@ -46,23 +46,23 @@ LilycoveCity_DepartmentStore_5F_EventScript_21FFDC:: @ 821FFDC
faceplayer
message gUnknown_08272A21
waitmessage
- pokemartdecoration2 LilycoveCity_DepartmentStore_5F_Pokemart_21FFF4
+ pokemartdecoration2 LilycoveCity_DepartmentStore_5F_Pokemart_Cushions
msgbox gUnknown_08272A3F, MSGBOX_DEFAULT
release
end
.align 2
-LilycoveCity_DepartmentStore_5F_Pokemart_21FFF4: @ 821FFF4
- .2byte 101
- .2byte 102
- .2byte ITEM_BIG_MUSHROOM
- .2byte 105
- .2byte ITEM_PEARL
- .2byte ITEM_BIG_PEARL
- .2byte ITEM_STARDUST
- .2byte ITEM_STAR_PIECE
- .2byte ITEM_NUGGET
- .2byte ITEM_NONE
+LilycoveCity_DepartmentStore_5F_Pokemart_Cushions: @ 821FFF4
+ .2byte DECOR_PIKA_CUSHION
+ .2byte DECOR_ROUND_CUSHION
+ .2byte DECOR_ZIGZAG_CUSHION
+ .2byte DECOR_SPIN_CUSHION
+ .2byte DECOR_DIAMOND_CUSHION
+ .2byte DECOR_BALL_CUSHION
+ .2byte DECOR_GRASS_CUSHION
+ .2byte DECOR_FIRE_CUSHION
+ .2byte DECOR_WATER_CUSHION
+ .2byte DECOR_NONE
release
end
@@ -71,23 +71,23 @@ LilycoveCity_DepartmentStore_5F_EventScript_22000A:: @ 822000A
faceplayer
message gUnknown_08272A21
waitmessage
- pokemartdecoration2 LilycoveCity_DepartmentStore_5F_Pokemart_220024
+ pokemartdecoration2 LilycoveCity_DepartmentStore_5F_Pokemart_Posters
msgbox gUnknown_08272A3F, MSGBOX_DEFAULT
release
end
.align 2
-LilycoveCity_DepartmentStore_5F_Pokemart_220024: @ 8220024
- .2byte ITEM_CARBOS
- .2byte ITEM_CALCIUM
- .2byte ITEM_RARE_CANDY
- .2byte ITEM_PP_UP
- .2byte ITEM_ZINC
- .2byte ITEM_PP_MAX
- .2byte 72
- .2byte ITEM_GUARD_SPEC
- .2byte ITEM_DIRE_HIT
- .2byte ITEM_NONE
+LilycoveCity_DepartmentStore_5F_Pokemart_Posters: @ 8220024
+ .2byte DECOR_BALL_POSTER
+ .2byte DECOR_GREEN_POSTER
+ .2byte DECOR_RED_POSTER
+ .2byte DECOR_BLUE_POSTER
+ .2byte DECOR_CUTE_POSTER
+ .2byte DECOR_PIKA_POSTER
+ .2byte DECOR_LONG_POSTER
+ .2byte DECOR_SEA_POSTER
+ .2byte DECOR_SKY_POSTER
+ .2byte DECOR_NONE
release
end
@@ -96,24 +96,24 @@ LilycoveCity_DepartmentStore_5F_EventScript_22003A:: @ 822003A
faceplayer
message gUnknown_08272A21
waitmessage
- pokemartdecoration2 LilycoveCity_DepartmentStore_5F_Pokemart_220054
+ pokemartdecoration2 LilycoveCity_DepartmentStore_5F_Pokemart_Mats
msgbox gUnknown_08272A3F, MSGBOX_DEFAULT
release
end
.align 2
-LilycoveCity_DepartmentStore_5F_Pokemart_220054: @ 8220054
- .2byte 59
- .2byte 60
- .2byte 61
- .2byte 62
- .2byte ITEM_HP_UP
- .2byte ITEM_PROTEIN
- .2byte ITEM_IRON
- .2byte ITEM_RED_SHARD
- .2byte ITEM_BLUE_SHARD
- .2byte ITEM_YELLOW_SHARD
- .2byte ITEM_NONE
+LilycoveCity_DepartmentStore_5F_Pokemart_Mats: @ 8220054
+ .2byte DECOR_SURF_MAT
+ .2byte DECOR_THUNDER_MAT
+ .2byte DECOR_FIRE_BLAST_MAT
+ .2byte DECOR_POWDER_SNOW_MAT
+ .2byte DECOR_ATTRACT_MAT
+ .2byte DECOR_FISSURE_MAT
+ .2byte DECOR_SPIKES_MAT
+ .2byte DECOR_GLITTER_MAT
+ .2byte DECOR_JUMP_MAT
+ .2byte DECOR_SPIN_MAT
+ .2byte DECOR_NONE
release
end
@@ -167,4 +167,3 @@ LilycoveCity_DepartmentStore_5F_Text_22016B: @ 822016B
LilycoveCity_DepartmentStore_5F_Text_2201C4: @ 82201C4
.string "I think they closed the rooftop\n"
.string "because the weather is wild today.$"
-
diff --git a/data/maps/LilycoveCity_Harbor/scripts.inc b/data/maps/LilycoveCity_Harbor/scripts.inc
index 67b05c692..4b446c39b 100644
--- a/data/maps/LilycoveCity_Harbor/scripts.inc
+++ b/data/maps/LilycoveCity_Harbor/scripts.inc
@@ -1,8 +1,8 @@
LilycoveCity_Harbor_MapScripts:: @ 821E000
- map_script MAP_SCRIPT_ON_TRANSITION, LilycoveCity_Harbor_MapScript1_21E006
+ map_script MAP_SCRIPT_ON_TRANSITION, LilycoveCity_Harbor_OnTransition
.byte 0
-LilycoveCity_Harbor_MapScript1_21E006: @ 821E006
+LilycoveCity_Harbor_OnTransition: @ 821E006
setescapewarp MAP_LILYCOVE_CITY, 255, 12, 33
end
diff --git a/data/maps/LilycoveCity_House3/scripts.inc b/data/maps/LilycoveCity_House3/scripts.inc
index ad8989b4c..7d949fd8b 100644
--- a/data/maps/LilycoveCity_House3/scripts.inc
+++ b/data/maps/LilycoveCity_House3/scripts.inc
@@ -1,8 +1,8 @@
LilycoveCity_House3_MapScripts:: @ 821EE3C
- map_script MAP_SCRIPT_ON_TRANSITION, LilycoveCity_House3_MapScript1_21EE42
+ map_script MAP_SCRIPT_ON_TRANSITION, LilycoveCity_House3_OnTransition
.byte 0
-LilycoveCity_House3_MapScript1_21EE42: @ 821EE42
+LilycoveCity_House3_OnTransition: @ 821EE42
random 4
copyvar VAR_TEMP_1, VAR_RESULT
end
diff --git a/data/maps/LilycoveCity_PokemonCenter_1F/scripts.inc b/data/maps/LilycoveCity_PokemonCenter_1F/scripts.inc
index 0d8da38d5..236eb3d23 100644
--- a/data/maps/LilycoveCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/LilycoveCity_PokemonCenter_1F/scripts.inc
@@ -1,9 +1,9 @@
LilycoveCity_PokemonCenter_1F_MapScripts:: @ 821C5B2
- map_script MAP_SCRIPT_ON_TRANSITION, LilycoveCity_PokemonCenter_1F_MapScript1_21C5BD
+ map_script MAP_SCRIPT_ON_TRANSITION, LilycoveCity_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, LilycoveCity_PokemonCenter_1F_MapScript1_277C30
.byte 0
-LilycoveCity_PokemonCenter_1F_MapScript1_21C5BD: @ 821C5BD
+LilycoveCity_PokemonCenter_1F_OnTransition: @ 821C5BD
setrespawn HEAL_LOCATION_LILYCOVE_CITY
goto LilycoveCity_PokemonCenter_1F_EventScript_21C5C6
end
diff --git a/data/maps/LilycoveCity_PokemonCenter_2F/scripts.inc b/data/maps/LilycoveCity_PokemonCenter_2F/scripts.inc
index 1e8035483..9bbf4f349 100644
--- a/data/maps/LilycoveCity_PokemonCenter_2F/scripts.inc
+++ b/data/maps/LilycoveCity_PokemonCenter_2F/scripts.inc
@@ -2,7 +2,7 @@ LilycoveCity_PokemonCenter_2F_MapScripts:: @ 821C75D
map_script MAP_SCRIPT_ON_FRAME_TABLE, LilycoveCity_PokemonCenter_2F_MapScript2_276C3B
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, LilycoveCity_PokemonCenter_2F_MapScript2_276B6C
map_script MAP_SCRIPT_ON_LOAD, LilycoveCity_PokemonCenter_2F_MapScript1_276BBE
- map_script MAP_SCRIPT_ON_TRANSITION, LilycoveCity_PokemonCenter_2F_MapScript1_276ACF
+ map_script MAP_SCRIPT_ON_TRANSITION, PokemonCenter_2F_OnTransition
.byte 0
LilycoveCity_PokemonCenter_2F_EventScript_21C772:: @ 821C772
diff --git a/data/maps/LilycoveCity_PokemonTrainerFanClub/scripts.inc b/data/maps/LilycoveCity_PokemonTrainerFanClub/scripts.inc
index f83be42b9..62fdd3427 100644
--- a/data/maps/LilycoveCity_PokemonTrainerFanClub/scripts.inc
+++ b/data/maps/LilycoveCity_PokemonTrainerFanClub/scripts.inc
@@ -1,6 +1,6 @@
LilycoveCity_PokemonTrainerFanClub_MapScripts:: @ 821C785
map_script MAP_SCRIPT_ON_FRAME_TABLE, LilycoveCity_PokemonTrainerFanClub_MapScript2_21C790
- map_script MAP_SCRIPT_ON_TRANSITION, LilycoveCity_PokemonTrainerFanClub_MapScript1_21C80D
+ map_script MAP_SCRIPT_ON_TRANSITION, LilycoveCity_PokemonTrainerFanClub_OnTransition
.byte 0
LilycoveCity_PokemonTrainerFanClub_MapScript2_21C790: @ 821C790
@@ -60,7 +60,7 @@ LilycoveCity_PokemonTrainerFanClub_Movement_21C807: @ 821C807
walk_in_place_fastest_down
step_end
-LilycoveCity_PokemonTrainerFanClub_MapScript1_21C80D: @ 821C80D
+LilycoveCity_PokemonTrainerFanClub_OnTransition: @ 821C80D
call LilycoveCity_PokemonTrainerFanClub_EventScript_21C8DA
compare VAR_LILYCOVE_FAN_CLUB_STATE, 1
goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_21C9F8
diff --git a/data/maps/LinkContestRoom1/scripts.inc b/data/maps/LinkContestRoom1/scripts.inc
index b81f35834..8b753471a 100644
--- a/data/maps/LinkContestRoom1/scripts.inc
+++ b/data/maps/LinkContestRoom1/scripts.inc
@@ -1,7 +1,7 @@
LinkContestRoom1_MapScripts:: @ 823B781
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, LinkContestRoom1_MapScript2_23B81F
map_script MAP_SCRIPT_ON_FRAME_TABLE, LinkContestRoom1_MapScript2_23B815
- map_script MAP_SCRIPT_ON_TRANSITION, LinkContestRoom1_MapScript1_23B79F
+ map_script MAP_SCRIPT_ON_TRANSITION, LinkContestRoom1_OnTransition
map_script MAP_SCRIPT_ON_RESUME, LinkContestRoom1_MapScript1_23B803
map_script MAP_SCRIPT_ON_RETURN_TO_FIELD, LinkContestRoom1_MapScript1_23B79B
.byte 0
@@ -10,7 +10,7 @@ LinkContestRoom1_MapScript1_23B79B: @ 823B79B
special sub_80F8B94
end
-LinkContestRoom1_MapScript1_23B79F: @ 823B79F
+LinkContestRoom1_OnTransition: @ 823B79F
call LinkContestRoom1_EventScript_23B7AF
setvar VAR_TEMP_0, 1
call LinkContestRoom1_EventScript_23B842
diff --git a/data/maps/MagmaHideout_1F/map.json b/data/maps/MagmaHideout_1F/map.json
index 2bbcf77a0..350c52b4f 100644
--- a/data/maps/MagmaHideout_1F/map.json
+++ b/data/maps/MagmaHideout_1F/map.json
@@ -63,7 +63,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "MagmaHideout_1F_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_11"
},
{
@@ -76,7 +76,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "MagmaHideout_1F_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_12"
},
{
@@ -89,7 +89,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "MagmaHideout_1F_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_13"
}
],
diff --git a/data/maps/MagmaHideout_1F/scripts.inc b/data/maps/MagmaHideout_1F/scripts.inc
index 0e0360990..2fe4ad581 100644
--- a/data/maps/MagmaHideout_1F/scripts.inc
+++ b/data/maps/MagmaHideout_1F/scripts.inc
@@ -1,8 +1,8 @@
MagmaHideout_1F_MapScripts:: @ 8239880
- map_script MAP_SCRIPT_ON_TRANSITION, MagmaHideout_1F_MapScript1_239886
+ map_script MAP_SCRIPT_ON_TRANSITION, MagmaHideout_1F_OnTransition
.byte 0
-MagmaHideout_1F_MapScript1_239886: @ 8239886
+MagmaHideout_1F_OnTransition: @ 8239886
setvar VAR_JAGGED_PASS_ASH_WEATHER, 0
end
diff --git a/data/maps/MagmaHideout_4F/scripts.inc b/data/maps/MagmaHideout_4F/scripts.inc
index 77c339b11..e6464a7f9 100644
--- a/data/maps/MagmaHideout_4F/scripts.inc
+++ b/data/maps/MagmaHideout_4F/scripts.inc
@@ -12,8 +12,8 @@ MagmaHideout_4F_EventScript_23A560:: @ 823A560
setfieldeffectargument 0, 18
setfieldeffectargument 1, 42
setfieldeffectargument 2, 0
- dofieldeffect 54
- waitfieldeffect 54
+ dofieldeffect FLDEFF_SPARKLE
+ waitfieldeffect FLDEFF_SPARKLE
setvar VAR_RESULT, 1
playfanfare MUS_ME_TAMA
playse SE_TAMA
diff --git a/data/maps/MarineCave_End/scripts.inc b/data/maps/MarineCave_End/scripts.inc
index 028075648..be3a6a57b 100644
--- a/data/maps/MarineCave_End/scripts.inc
+++ b/data/maps/MarineCave_End/scripts.inc
@@ -1,6 +1,6 @@
MarineCave_End_MapScripts:: @ 823AFDF
map_script MAP_SCRIPT_ON_RESUME, MarineCave_End_MapScript1_23AFEA
- map_script MAP_SCRIPT_ON_TRANSITION, MarineCave_End_MapScript1_23B008
+ map_script MAP_SCRIPT_ON_TRANSITION, MarineCave_End_OnTransition
.byte 0
MarineCave_End_MapScript1_23AFEA: @ 823AFEA
@@ -14,7 +14,7 @@ MarineCave_End_EventScript_23AFF4:: @ 823AFF4
removeobject 1
return
-MarineCave_End_MapScript1_23B008: @ 823B008
+MarineCave_End_OnTransition: @ 823B008
call_if_unset FLAG_DEFEATED_KYOGRE, MarineCave_End_EventScript_23B012
end
diff --git a/data/maps/MauvilleCity/scripts.inc b/data/maps/MauvilleCity/scripts.inc
index 61839d108..445930e70 100644
--- a/data/maps/MauvilleCity/scripts.inc
+++ b/data/maps/MauvilleCity/scripts.inc
@@ -1,8 +1,8 @@
MauvilleCity_MapScripts:: @ 81DF385
- map_script MAP_SCRIPT_ON_TRANSITION, MauvilleCity_MapScript1_1DF38B
+ map_script MAP_SCRIPT_ON_TRANSITION, MauvilleCity_OnTransition
.byte 0
-MauvilleCity_MapScript1_1DF38B: @ 81DF38B
+MauvilleCity_OnTransition: @ 81DF38B
setflag FLAG_VISITED_MAUVILLE_CITY
clearflag FLAG_FORCE_MIRAGE_TOWER_VISIBLE
clearflag FLAG_HIDE_SLATEPORT_MUSEUM_POPULATION
diff --git a/data/maps/MauvilleCity_PokemonCenter_1F/scripts.inc b/data/maps/MauvilleCity_PokemonCenter_1F/scripts.inc
index a866e6aa4..50250de8e 100644
--- a/data/maps/MauvilleCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/MauvilleCity_PokemonCenter_1F/scripts.inc
@@ -1,9 +1,9 @@
MauvilleCity_PokemonCenter_1F_MapScripts:: @ 8210E5B
- map_script MAP_SCRIPT_ON_TRANSITION, MauvilleCity_PokemonCenter_1F_MapScript1_210E66
+ map_script MAP_SCRIPT_ON_TRANSITION, MauvilleCity_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, MauvilleCity_PokemonCenter_1F_MapScript1_277C30
.byte 0
-MauvilleCity_PokemonCenter_1F_MapScript1_210E66: @ 8210E66
+MauvilleCity_PokemonCenter_1F_OnTransition: @ 8210E66
setrespawn HEAL_LOCATION_MAUVILLE_CITY
call MauvilleCity_PokemonCenter_1F_EventScript_2718DE
goto MauvilleCity_PokemonCenter_1F_EventScript_210E74
diff --git a/data/maps/MauvilleCity_PokemonCenter_2F/scripts.inc b/data/maps/MauvilleCity_PokemonCenter_2F/scripts.inc
index a289886a3..c0200ea1f 100644
--- a/data/maps/MauvilleCity_PokemonCenter_2F/scripts.inc
+++ b/data/maps/MauvilleCity_PokemonCenter_2F/scripts.inc
@@ -2,7 +2,7 @@ MauvilleCity_PokemonCenter_2F_MapScripts:: @ 8211008
map_script MAP_SCRIPT_ON_FRAME_TABLE, MauvilleCity_PokemonCenter_2F_MapScript2_276C3B
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, MauvilleCity_PokemonCenter_2F_MapScript2_276B6C
map_script MAP_SCRIPT_ON_LOAD, MauvilleCity_PokemonCenter_2F_MapScript1_276BBE
- map_script MAP_SCRIPT_ON_TRANSITION, MauvilleCity_PokemonCenter_2F_MapScript1_276ACF
+ map_script MAP_SCRIPT_ON_TRANSITION, PokemonCenter_2F_OnTransition
.byte 0
MauvilleCity_PokemonCenter_2F_EventScript_21101D:: @ 821101D
diff --git a/data/maps/MirageTower_3F/map.json b/data/maps/MirageTower_3F/map.json
index a653c6e52..c24e2a006 100644
--- a/data/maps/MirageTower_3F/map.json
+++ b/data/maps/MirageTower_3F/map.json
@@ -24,7 +24,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "MirageTower_3F_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_11"
},
{
@@ -37,7 +37,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "MirageTower_3F_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_12"
}
],
diff --git a/data/maps/MirageTower_4F/map.json b/data/maps/MirageTower_4F/map.json
index d6b69a14c..45e5fa62b 100644
--- a/data/maps/MirageTower_4F/map.json
+++ b/data/maps/MirageTower_4F/map.json
@@ -50,7 +50,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "MirageTower_4F_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_11"
}
],
diff --git a/data/maps/MossdeepCity/scripts.inc b/data/maps/MossdeepCity/scripts.inc
index 493cded0a..2da9f1f19 100644
--- a/data/maps/MossdeepCity/scripts.inc
+++ b/data/maps/MossdeepCity/scripts.inc
@@ -1,8 +1,8 @@
MossdeepCity_MapScripts:: @ 81E4A96
- map_script MAP_SCRIPT_ON_TRANSITION, MossdeepCity_MapScript1_1E4A9C
+ map_script MAP_SCRIPT_ON_TRANSITION, MossdeepCity_OnTransition
.byte 0
-MossdeepCity_MapScript1_1E4A9C: @ 81E4A9C
+MossdeepCity_OnTransition: @ 81E4A9C
clearflag FLAG_MOSSDEEP_GYM_SWITCH_1
clearflag FLAG_MOSSDEEP_GYM_SWITCH_2
clearflag FLAG_MOSSDEEP_GYM_SWITCH_3
diff --git a/data/maps/MossdeepCity_House4/scripts.inc b/data/maps/MossdeepCity_House4/scripts.inc
index 1763a9c46..4505b1f03 100644
--- a/data/maps/MossdeepCity_House4/scripts.inc
+++ b/data/maps/MossdeepCity_House4/scripts.inc
@@ -17,7 +17,7 @@ MossdeepCity_House4_EventScript_222DED:: @ 8222DED
MossdeepCity_House4_EventScript_222DF7:: @ 8222DF7
lock
faceplayer
- special sub_80E8BC8
+ special CheckPlayerHasSecretBase
compare VAR_RESULT, 0
goto_if_eq MossdeepCity_House4_EventScript_222E14
special GetSecretBaseNearbyMapName
diff --git a/data/maps/MossdeepCity_PokemonCenter_1F/scripts.inc b/data/maps/MossdeepCity_PokemonCenter_1F/scripts.inc
index 9dbead25e..3806bfc5a 100644
--- a/data/maps/MossdeepCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/MossdeepCity_PokemonCenter_1F/scripts.inc
@@ -1,9 +1,9 @@
MossdeepCity_PokemonCenter_1F_MapScripts:: @ 822223F
- map_script MAP_SCRIPT_ON_TRANSITION, MossdeepCity_PokemonCenter_1F_MapScript1_22224A
+ map_script MAP_SCRIPT_ON_TRANSITION, MossdeepCity_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, MossdeepCity_PokemonCenter_1F_MapScript1_277C30
.byte 0
-MossdeepCity_PokemonCenter_1F_MapScript1_22224A: @ 822224A
+MossdeepCity_PokemonCenter_1F_OnTransition: @ 822224A
setrespawn HEAL_LOCATION_MOSSDEEP_CITY
end
diff --git a/data/maps/MossdeepCity_PokemonCenter_2F/scripts.inc b/data/maps/MossdeepCity_PokemonCenter_2F/scripts.inc
index 922c9a064..1c9c89fef 100644
--- a/data/maps/MossdeepCity_PokemonCenter_2F/scripts.inc
+++ b/data/maps/MossdeepCity_PokemonCenter_2F/scripts.inc
@@ -2,7 +2,7 @@ MossdeepCity_PokemonCenter_2F_MapScripts:: @ 8222334
map_script MAP_SCRIPT_ON_FRAME_TABLE, MossdeepCity_PokemonCenter_2F_MapScript2_276C3B
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, MossdeepCity_PokemonCenter_2F_MapScript2_276B6C
map_script MAP_SCRIPT_ON_LOAD, MossdeepCity_PokemonCenter_2F_MapScript1_276BBE
- map_script MAP_SCRIPT_ON_TRANSITION, MossdeepCity_PokemonCenter_2F_MapScript1_276ACF
+ map_script MAP_SCRIPT_ON_TRANSITION, PokemonCenter_2F_OnTransition
.byte 0
MossdeepCity_PokemonCenter_2F_EventScript_222349:: @ 8222349
diff --git a/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc b/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc
index 13bf111ba..bb60fc2f6 100644
--- a/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc
+++ b/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc
@@ -1,9 +1,9 @@
MossdeepCity_SpaceCenter_1F_MapScripts:: @ 8222F41
map_script MAP_SCRIPT_ON_LOAD, MossdeepCity_SpaceCenter_1F_MapScript1_222FC2
- map_script MAP_SCRIPT_ON_TRANSITION, MossdeepCity_SpaceCenter_1F_MapScript1_222F4C
+ map_script MAP_SCRIPT_ON_TRANSITION, MossdeepCity_SpaceCenter_1F_OnTransition
.byte 0
-MossdeepCity_SpaceCenter_1F_MapScript1_222F4C: @ 8222F4C
+MossdeepCity_SpaceCenter_1F_OnTransition: @ 8222F4C
compare VAR_MOSSDEEP_STATE, 2
goto_if_eq MossdeepCity_SpaceCenter_1F_EventScript_222F58
end
diff --git a/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc b/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc
index 41f8af97c..b258740ac 100644
--- a/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc
+++ b/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc
@@ -1,9 +1,9 @@
MossdeepCity_SpaceCenter_2F_MapScripts:: @ 8223D58
- map_script MAP_SCRIPT_ON_TRANSITION, MossdeepCity_SpaceCenter_2F_MapScript1_223D63
+ map_script MAP_SCRIPT_ON_TRANSITION, MossdeepCity_SpaceCenter_2F_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, MossdeepCity_SpaceCenter_2F_MapScript2_223DB5
.byte 0
-MossdeepCity_SpaceCenter_2F_MapScript1_223D63: @ 8223D63
+MossdeepCity_SpaceCenter_2F_OnTransition: @ 8223D63
compare VAR_MOSSDEEP_STATE, 2
call_if_eq MossdeepCity_SpaceCenter_2F_EventScript_223D7A
compare VAR_MOSSDEEP_SPACE_CENTER_STATE_2, 2
diff --git a/data/maps/MossdeepCity_StevensHouse/scripts.inc b/data/maps/MossdeepCity_StevensHouse/scripts.inc
index b3a704443..55c32653a 100644
--- a/data/maps/MossdeepCity_StevensHouse/scripts.inc
+++ b/data/maps/MossdeepCity_StevensHouse/scripts.inc
@@ -1,6 +1,6 @@
MossdeepCity_StevensHouse_MapScripts:: @ 8222784
map_script MAP_SCRIPT_ON_LOAD, MossdeepCity_StevensHouse_MapScript1_222794
- map_script MAP_SCRIPT_ON_TRANSITION, MossdeepCity_StevensHouse_MapScript1_2227A8
+ map_script MAP_SCRIPT_ON_TRANSITION, MossdeepCity_StevensHouse_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, MossdeepCity_StevensHouse_MapScript2_2227C0
.byte 0
@@ -12,7 +12,7 @@ MossdeepCity_StevensHouse_EventScript_22279E:: @ 822279E
setmetatile 6, 4, 753, 1
return
-MossdeepCity_StevensHouse_MapScript1_2227A8: @ 82227A8
+MossdeepCity_StevensHouse_OnTransition: @ 82227A8
compare VAR_STEVENS_HOUSE_STATE, 2
call_if_eq MossdeepCity_StevensHouse_EventScript_2227B4
end
diff --git a/data/maps/MtChimney/scripts.inc b/data/maps/MtChimney/scripts.inc
index db1fd59ef..d770f095c 100644
--- a/data/maps/MtChimney/scripts.inc
+++ b/data/maps/MtChimney/scripts.inc
@@ -1,9 +1,9 @@
MtChimney_MapScripts:: @ 822EDC1
map_script MAP_SCRIPT_ON_RESUME, MtChimney_MapScript1_22EDD2
- map_script MAP_SCRIPT_ON_TRANSITION, MtChimney_MapScript1_22EDCC
+ map_script MAP_SCRIPT_ON_TRANSITION, MtChimney_OnTransition
.byte 0
-MtChimney_MapScript1_22EDCC: @ 822EDCC
+MtChimney_OnTransition: @ 822EDCC
setvar VAR_JAGGED_PASS_ASH_WEATHER, 1
end
diff --git a/data/maps/MtChimney_CableCarStation/scripts.inc b/data/maps/MtChimney_CableCarStation/scripts.inc
index 057001111..444f62d9f 100644
--- a/data/maps/MtChimney_CableCarStation/scripts.inc
+++ b/data/maps/MtChimney_CableCarStation/scripts.inc
@@ -1,9 +1,9 @@
MtChimney_CableCarStation_MapScripts:: @ 822ABFA
- map_script MAP_SCRIPT_ON_TRANSITION, MtChimney_CableCarStation_MapScript1_22AC05
+ map_script MAP_SCRIPT_ON_TRANSITION, MtChimney_CableCarStation_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, MtChimney_CableCarStation_MapScript2_22AC1D
.byte 0
-MtChimney_CableCarStation_MapScript1_22AC05: @ 822AC05
+MtChimney_CableCarStation_OnTransition: @ 822AC05
compare VAR_CABLE_CAR_STATION_STATE, 1
call_if_eq MtChimney_CableCarStation_EventScript_22AC11
end
diff --git a/data/maps/MtPyre_Exterior/scripts.inc b/data/maps/MtPyre_Exterior/scripts.inc
index e24f8ea68..b66c50374 100644
--- a/data/maps/MtPyre_Exterior/scripts.inc
+++ b/data/maps/MtPyre_Exterior/scripts.inc
@@ -1,8 +1,8 @@
MtPyre_Exterior_MapScripts:: @ 8231FCC
- map_script MAP_SCRIPT_ON_TRANSITION, MtPyre_Exterior_MapScript1_231FD2
+ map_script MAP_SCRIPT_ON_TRANSITION, MtPyre_Exterior_OnTransition
.byte 0
-MtPyre_Exterior_MapScript1_231FD2: @ 8231FD2
+MtPyre_Exterior_OnTransition: @ 8231FD2
call MtPyre_Exterior_EventScript_231FD8
end
diff --git a/data/maps/MtPyre_Summit/scripts.inc b/data/maps/MtPyre_Summit/scripts.inc
index a0da7e907..eb61c4c2d 100644
--- a/data/maps/MtPyre_Summit/scripts.inc
+++ b/data/maps/MtPyre_Summit/scripts.inc
@@ -1,8 +1,8 @@
MtPyre_Summit_MapScripts:: @ 8231FF7
- map_script MAP_SCRIPT_ON_TRANSITION, MtPyre_Summit_MapScript1_231FFD
+ map_script MAP_SCRIPT_ON_TRANSITION, MtPyre_Summit_OnTransition
.byte 0
-MtPyre_Summit_MapScript1_231FFD: @ 8231FFD
+MtPyre_Summit_OnTransition: @ 8231FFD
compare VAR_MT_PYRE_STATE, 2
call_if_eq MtPyre_Summit_EventScript_232009
end
diff --git a/data/maps/NavelRock_Bottom/scripts.inc b/data/maps/NavelRock_Bottom/scripts.inc
index 8a617236c..f3c244e3d 100644
--- a/data/maps/NavelRock_Bottom/scripts.inc
+++ b/data/maps/NavelRock_Bottom/scripts.inc
@@ -1,9 +1,9 @@
NavelRock_Bottom_MapScripts:: @ 8269255
- map_script MAP_SCRIPT_ON_TRANSITION, NavelRock_Bottom_MapScript1_269260
+ map_script MAP_SCRIPT_ON_TRANSITION, NavelRock_Bottom_OnTransition
map_script MAP_SCRIPT_ON_RESUME, NavelRock_Bottom_MapScript1_269284
.byte 0
-NavelRock_Bottom_MapScript1_269260: @ 8269260
+NavelRock_Bottom_OnTransition: @ 8269260
call_if_set FLAG_CAUGHT_LUGIA, NavelRock_Bottom_EventScript_269273
call_if_unset FLAG_CAUGHT_LUGIA, NavelRock_Bottom_EventScript_269277
end
diff --git a/data/maps/NavelRock_Exterior/scripts.inc b/data/maps/NavelRock_Exterior/scripts.inc
index 33bbb6391..827408068 100644
--- a/data/maps/NavelRock_Exterior/scripts.inc
+++ b/data/maps/NavelRock_Exterior/scripts.inc
@@ -1,8 +1,8 @@
NavelRock_Exterior_MapScripts:: @ 82690B2
- map_script MAP_SCRIPT_ON_TRANSITION, NavelRock_Exterior_MapScript1_2690B8
+ map_script MAP_SCRIPT_ON_TRANSITION, NavelRock_Exterior_OnTransition
.byte 0
-NavelRock_Exterior_MapScript1_2690B8: @ 82690B8
+NavelRock_Exterior_OnTransition: @ 82690B8
setflag FLAG_ARRIVED_AT_NAVEL_ROCK
end
diff --git a/data/maps/NavelRock_Top/scripts.inc b/data/maps/NavelRock_Top/scripts.inc
index af011e058..816e20206 100644
--- a/data/maps/NavelRock_Top/scripts.inc
+++ b/data/maps/NavelRock_Top/scripts.inc
@@ -1,9 +1,9 @@
NavelRock_Top_MapScripts:: @ 8269113
- map_script MAP_SCRIPT_ON_TRANSITION, NavelRock_Top_MapScript1_26911E
+ map_script MAP_SCRIPT_ON_TRANSITION, NavelRock_Top_OnTransition
map_script MAP_SCRIPT_ON_RESUME, NavelRock_Top_MapScript1_269151
.byte 0
-NavelRock_Top_MapScript1_26911E: @ 826911E
+NavelRock_Top_OnTransition: @ 826911E
call_if_set FLAG_CAUGHT_HO_OH, NavelRock_Top_EventScript_269131
call_if_unset FLAG_CAUGHT_HO_OH, NavelRock_Top_EventScript_26913A
end
diff --git a/data/maps/NewMauville_Inside/scripts.inc b/data/maps/NewMauville_Inside/scripts.inc
index 15d2cb02a..0582e2a32 100644
--- a/data/maps/NewMauville_Inside/scripts.inc
+++ b/data/maps/NewMauville_Inside/scripts.inc
@@ -1,6 +1,6 @@
NewMauville_Inside_MapScripts:: @ 82373D7
map_script MAP_SCRIPT_ON_RESUME, NewMauville_Inside_MapScript1_2373E7
- map_script MAP_SCRIPT_ON_TRANSITION, NewMauville_Inside_MapScript1_23741B
+ map_script MAP_SCRIPT_ON_TRANSITION, NewMauville_Inside_OnTransition
map_script MAP_SCRIPT_ON_LOAD, NewMauville_Inside_MapScript1_23744D
.byte 0
@@ -19,7 +19,7 @@ NewMauville_Inside_EventScript_237407:: @ 8237407
removeobject VAR_LAST_TALKED
return
-NewMauville_Inside_MapScript1_23741B: @ 823741B
+NewMauville_Inside_OnTransition: @ 823741B
setvar VAR_TEMP_1, 0
setvar VAR_TEMP_2, 0
call_if_unset FLAG_DEFEATED_VOLTORB_1_NEW_MAUVILLE, NewMauville_Inside_EventScript_237441
diff --git a/data/maps/OldaleTown/scripts.inc b/data/maps/OldaleTown/scripts.inc
index c68ecbd08..3a8b8046b 100644
--- a/data/maps/OldaleTown/scripts.inc
+++ b/data/maps/OldaleTown/scripts.inc
@@ -1,8 +1,8 @@
OldaleTown_MapScripts:: @ 81E8EA2
- map_script MAP_SCRIPT_ON_TRANSITION, OldaleTown_MapScript1_1E8EA8
+ map_script MAP_SCRIPT_ON_TRANSITION, OldaleTown_OnTransition
.byte 0
-OldaleTown_MapScript1_1E8EA8: @ 81E8EA8
+OldaleTown_OnTransition: @ 81E8EA8
call Common_EventScript_SetupRivalGender
setflag FLAG_VISITED_OLDALE_TOWN
call_if_unset FLAG_ADVENTURE_STARTED, OldaleTown_EventScript_1E8ED2
diff --git a/data/maps/OldaleTown_PokemonCenter_1F/scripts.inc b/data/maps/OldaleTown_PokemonCenter_1F/scripts.inc
index 49452da71..2396573dc 100644
--- a/data/maps/OldaleTown_PokemonCenter_1F/scripts.inc
+++ b/data/maps/OldaleTown_PokemonCenter_1F/scripts.inc
@@ -1,9 +1,9 @@
OldaleTown_PokemonCenter_1F_MapScripts:: @ 81FC006
- map_script MAP_SCRIPT_ON_TRANSITION, OldaleTown_PokemonCenter_1F_MapScript1_1FC011
+ map_script MAP_SCRIPT_ON_TRANSITION, OldaleTown_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, OldaleTown_PokemonCenter_1F_MapScript1_277C30
.byte 0
-OldaleTown_PokemonCenter_1F_MapScript1_1FC011: @ 81FC011
+OldaleTown_PokemonCenter_1F_OnTransition: @ 81FC011
setrespawn HEAL_LOCATION_OLDALE_TOWN
call OldaleTown_PokemonCenter_1F_EventScript_2718DE
end
diff --git a/data/maps/OldaleTown_PokemonCenter_2F/scripts.inc b/data/maps/OldaleTown_PokemonCenter_2F/scripts.inc
index b6795876b..aead0bd65 100644
--- a/data/maps/OldaleTown_PokemonCenter_2F/scripts.inc
+++ b/data/maps/OldaleTown_PokemonCenter_2F/scripts.inc
@@ -2,7 +2,7 @@ OldaleTown_PokemonCenter_2F_MapScripts:: @ 81FC218
map_script MAP_SCRIPT_ON_FRAME_TABLE, OldaleTown_PokemonCenter_2F_MapScript2_276C3B
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, OldaleTown_PokemonCenter_2F_MapScript2_276B6C
map_script MAP_SCRIPT_ON_LOAD, OldaleTown_PokemonCenter_2F_MapScript1_276BBE
- map_script MAP_SCRIPT_ON_TRANSITION, OldaleTown_PokemonCenter_2F_MapScript1_276ACF
+ map_script MAP_SCRIPT_ON_TRANSITION, PokemonCenter_2F_OnTransition
.byte 0
OldaleTown_PokemonCenter_2F_EventScript_1FC22D:: @ 81FC22D
diff --git a/data/maps/PacifidlogTown/scripts.inc b/data/maps/PacifidlogTown/scripts.inc
index 0ae0a53a8..1d1518c0a 100644
--- a/data/maps/PacifidlogTown/scripts.inc
+++ b/data/maps/PacifidlogTown/scripts.inc
@@ -1,9 +1,9 @@
PacifidlogTown_MapScripts:: @ 81EBAB1
- map_script MAP_SCRIPT_ON_TRANSITION, PacifidlogTown_MapScript1_1EBABC
+ map_script MAP_SCRIPT_ON_TRANSITION, PacifidlogTown_OnTransition
map_script MAP_SCRIPT_ON_RESUME, PacifidlogTown_MapScript1_1EBAC0
.byte 0
-PacifidlogTown_MapScript1_1EBABC: @ 81EBABC
+PacifidlogTown_OnTransition: @ 81EBABC
setflag FLAG_VISITED_PACIFIDLOG_TOWN
end
diff --git a/data/maps/PacifidlogTown_PokemonCenter_1F/scripts.inc b/data/maps/PacifidlogTown_PokemonCenter_1F/scripts.inc
index 89fec7f6b..f4fe115e5 100644
--- a/data/maps/PacifidlogTown_PokemonCenter_1F/scripts.inc
+++ b/data/maps/PacifidlogTown_PokemonCenter_1F/scripts.inc
@@ -1,9 +1,9 @@
PacifidlogTown_PokemonCenter_1F_MapScripts:: @ 82034A7
- map_script MAP_SCRIPT_ON_TRANSITION, PacifidlogTown_PokemonCenter_1F_MapScript1_2034B2
+ map_script MAP_SCRIPT_ON_TRANSITION, PacifidlogTown_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, PacifidlogTown_PokemonCenter_1F_MapScript1_277C30
.byte 0
-PacifidlogTown_PokemonCenter_1F_MapScript1_2034B2: @ 82034B2
+PacifidlogTown_PokemonCenter_1F_OnTransition: @ 82034B2
setrespawn HEAL_LOCATION_PACIFIDLOG_TOWN
end
diff --git a/data/maps/PacifidlogTown_PokemonCenter_2F/scripts.inc b/data/maps/PacifidlogTown_PokemonCenter_2F/scripts.inc
index cb28d577e..fcb4f1ab4 100644
--- a/data/maps/PacifidlogTown_PokemonCenter_2F/scripts.inc
+++ b/data/maps/PacifidlogTown_PokemonCenter_2F/scripts.inc
@@ -2,7 +2,7 @@ PacifidlogTown_PokemonCenter_2F_MapScripts:: @ 8203635
map_script MAP_SCRIPT_ON_FRAME_TABLE, PacifidlogTown_PokemonCenter_2F_MapScript2_276C3B
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, PacifidlogTown_PokemonCenter_2F_MapScript2_276B6C
map_script MAP_SCRIPT_ON_LOAD, PacifidlogTown_PokemonCenter_2F_MapScript1_276BBE
- map_script MAP_SCRIPT_ON_TRANSITION, PacifidlogTown_PokemonCenter_2F_MapScript1_276ACF
+ map_script MAP_SCRIPT_ON_TRANSITION, PokemonCenter_2F_OnTransition
.byte 0
PacifidlogTown_PokemonCenter_2F_EventScript_20364A:: @ 820364A
diff --git a/data/maps/PetalburgCity/scripts.inc b/data/maps/PetalburgCity/scripts.inc
index c8b723383..59e28734d 100644
--- a/data/maps/PetalburgCity/scripts.inc
+++ b/data/maps/PetalburgCity/scripts.inc
@@ -1,9 +1,9 @@
PetalburgCity_MapScripts::
- map_script MAP_SCRIPT_ON_TRANSITION, PetalburgCity_MapScript1_1DC2D7
+ map_script MAP_SCRIPT_ON_TRANSITION, PetalburgCity_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, PetalburgCity_MapScript2_1DC31C
.byte 0
-PetalburgCity_MapScript1_1DC2D7: @ 81DC2D7
+PetalburgCity_OnTransition: @ 81DC2D7
setflag FLAG_VISITED_PETALBURG_CITY
compare VAR_PETALBURG_STATE, 0
call_if_eq PetalburgCity_EventScript_1DC307
diff --git a/data/maps/PetalburgCity_Gym/scripts.inc b/data/maps/PetalburgCity_Gym/scripts.inc
index a256a6547..f5d1f3ff6 100644
--- a/data/maps/PetalburgCity_Gym/scripts.inc
+++ b/data/maps/PetalburgCity_Gym/scripts.inc
@@ -1,11 +1,11 @@
PetalburgCity_Gym_MapScripts:: @ 8204889
- map_script MAP_SCRIPT_ON_LOAD, PetalburgCity_Gym_MapScript1_20489E
+ map_script MAP_SCRIPT_ON_LOAD, PetalburgCity_Gym_OnTransition
map_script MAP_SCRIPT_ON_TRANSITION, PetalburgCity_Gym_MapScript1_20492D
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, PetalburgCity_Gym_MapScript2_20498B
map_script MAP_SCRIPT_ON_FRAME_TABLE, PetalburgCity_Gym_MapScript2_20499A
.byte 0
-PetalburgCity_Gym_MapScript1_20489E: @ 820489E
+PetalburgCity_Gym_OnTransition: @ 820489E
compare VAR_PETALBURG_GYM_STATE, 6
goto_if_eq PetalburgCity_Gym_EventScript_2048B5
compare VAR_PETALBURG_GYM_STATE, 7
diff --git a/data/maps/PetalburgCity_PokemonCenter_1F/scripts.inc b/data/maps/PetalburgCity_PokemonCenter_1F/scripts.inc
index 382847bc7..286b9f7d9 100644
--- a/data/maps/PetalburgCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/PetalburgCity_PokemonCenter_1F/scripts.inc
@@ -1,9 +1,9 @@
PetalburgCity_PokemonCenter_1F_MapScripts:: @ 82079E8
- map_script MAP_SCRIPT_ON_TRANSITION, PetalburgCity_PokemonCenter_1F_MapScript1_2079F3
+ map_script MAP_SCRIPT_ON_TRANSITION, PetalburgCity_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, PetalburgCity_PokemonCenter_1F_MapScript1_277C30
.byte 0
-PetalburgCity_PokemonCenter_1F_MapScript1_2079F3: @ 82079F3
+PetalburgCity_PokemonCenter_1F_OnTransition: @ 82079F3
setrespawn HEAL_LOCATION_PETALBURG_CITY
call PetalburgCity_PokemonCenter_1F_EventScript_2718DE
end
diff --git a/data/maps/PetalburgCity_PokemonCenter_2F/scripts.inc b/data/maps/PetalburgCity_PokemonCenter_2F/scripts.inc
index 7b5f5af55..d2370c6b1 100644
--- a/data/maps/PetalburgCity_PokemonCenter_2F/scripts.inc
+++ b/data/maps/PetalburgCity_PokemonCenter_2F/scripts.inc
@@ -2,7 +2,7 @@ PetalburgCity_PokemonCenter_2F_MapScripts:: @ 8207D41
map_script MAP_SCRIPT_ON_FRAME_TABLE, PetalburgCity_PokemonCenter_2F_MapScript2_276C3B
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, PetalburgCity_PokemonCenter_2F_MapScript2_276B6C
map_script MAP_SCRIPT_ON_LOAD, PetalburgCity_PokemonCenter_2F_MapScript1_276BBE
- map_script MAP_SCRIPT_ON_TRANSITION, PetalburgCity_PokemonCenter_2F_MapScript1_276ACF
+ map_script MAP_SCRIPT_ON_TRANSITION, PokemonCenter_2F_OnTransition
.byte 0
PetalburgCity_PokemonCenter_2F_EventScript_207D56:: @ 8207D56
diff --git a/data/maps/PetalburgWoods/map.json b/data/maps/PetalburgWoods/map.json
index 6d1bc22a5..7e7de784a 100644
--- a/data/maps/PetalburgWoods/map.json
+++ b/data/maps/PetalburgWoods/map.json
@@ -24,7 +24,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "PetalburgWoods_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_11"
},
{
@@ -37,7 +37,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "PetalburgWoods_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_12"
},
{
diff --git a/data/maps/Route101/scripts.inc b/data/maps/Route101/scripts.inc
index 47663e1dd..73bfe570c 100644
--- a/data/maps/Route101/scripts.inc
+++ b/data/maps/Route101/scripts.inc
@@ -1,9 +1,9 @@
Route101_MapScripts:: @ 81EBCBA
- map_script MAP_SCRIPT_ON_TRANSITION, Route101_MapScript1_1EBCC5
+ map_script MAP_SCRIPT_ON_TRANSITION, Route101_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, Route101_MapScript2_1EBCCB
.byte 0
-Route101_MapScript1_1EBCC5: @ 81EBCC5
+Route101_OnTransition: @ 81EBCC5
call Route101_EventScript_2720AD
end
diff --git a/data/maps/Route103/map.json b/data/maps/Route103/map.json
index 91004d1ab..bf207ec2f 100644
--- a/data/maps/Route103/map.json
+++ b/data/maps/Route103/map.json
@@ -204,7 +204,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route103_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_12"
},
{
@@ -217,7 +217,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route103_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_13"
},
{
diff --git a/data/maps/Route103/scripts.inc b/data/maps/Route103/scripts.inc
index f711416fd..710f26e7c 100644
--- a/data/maps/Route103/scripts.inc
+++ b/data/maps/Route103/scripts.inc
@@ -1,9 +1,9 @@
Route103_MapScripts:: @ 81EC38E
- map_script MAP_SCRIPT_ON_TRANSITION, Route103_MapScript1_1EC399
+ map_script MAP_SCRIPT_ON_TRANSITION, Route103_OnTransition
map_script MAP_SCRIPT_ON_LOAD, Route103_MapScript1_1EC3A4
.byte 0
-Route103_MapScript1_1EC399: @ 81EC399
+Route103_OnTransition: @ 81EC399
call Common_EventScript_SetupRivalGender
call Route103_EventScript_2720AD
end
diff --git a/data/maps/Route104/map.json b/data/maps/Route104/map.json
index 7bfe6e164..d2c7cc146 100644
--- a/data/maps/Route104/map.json
+++ b/data/maps/Route104/map.json
@@ -417,7 +417,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route104_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_11"
},
{
diff --git a/data/maps/Route104/scripts.inc b/data/maps/Route104/scripts.inc
index 1daa9e52c..33200b800 100644
--- a/data/maps/Route104/scripts.inc
+++ b/data/maps/Route104/scripts.inc
@@ -1,6 +1,6 @@
Route104_MapScripts:: @ 81ECC32
map_script MAP_SCRIPT_ON_FRAME_TABLE, Route104_MapScript2_1ECC3D
- map_script MAP_SCRIPT_ON_TRANSITION, Route104_MapScript1_1ECC4E
+ map_script MAP_SCRIPT_ON_TRANSITION, Route104_OnTransition
.byte 0
Route104_MapScript2_1ECC3D: @ 81ECC3D
@@ -12,7 +12,7 @@ Route104_EventScript_1ECC47:: @ 81ECC47
goto Route104_EventScript_1ED099
end
-Route104_MapScript1_1ECC4E: @ 81ECC4E
+Route104_OnTransition: @ 81ECC4E
call Common_EventScript_SetupRivalGender
call Route104_EventScript_1ECC78
call Route104_EventScript_1ECC5E
diff --git a/data/maps/Route104_PrettyPetalFlowerShop/scripts.inc b/data/maps/Route104_PrettyPetalFlowerShop/scripts.inc
index 2a8a8b88e..b4d10cf0f 100644
--- a/data/maps/Route104_PrettyPetalFlowerShop/scripts.inc
+++ b/data/maps/Route104_PrettyPetalFlowerShop/scripts.inc
@@ -48,20 +48,20 @@ Route104_PrettyPetalFlowerShop_EventScript_22A3DB:: @ 822A3DB
Route104_PrettyPetalFlowerShop_EventScript_22A3E4:: @ 822A3E4
message gUnknown_08272A52
waitmessage
- pokemartdecoration2 Route104_PrettyPetalFlowerShop_Pokemart_22A3FC
+ pokemartdecoration2 Route104_PrettyPetalFlowerShop_Pokemart_Plants
msgbox gUnknown_08272A3F, MSGBOX_DEFAULT
release
end
.align 2
-Route104_PrettyPetalFlowerShop_Pokemart_22A3FC: @ 822A3FC
- .2byte ITEM_FULL_RESTORE
- .2byte ITEM_MAX_POTION
- .2byte ITEM_HYPER_POTION
- .2byte ITEM_SUPER_POTION
- .2byte ITEM_FULL_HEAL
- .2byte ITEM_REVIVE
- .2byte ITEM_NONE
+Route104_PrettyPetalFlowerShop_Pokemart_Plants: @ 822A3FC
+ .2byte DECOR_RED_PLANT
+ .2byte DECOR_TROPICAL_PLANT
+ .2byte DECOR_PRETTY_FLOWERS
+ .2byte DECOR_COLORFUL_PLANT
+ .2byte DECOR_BIG_PLANT
+ .2byte DECOR_GORGEOUS_PLANT
+ .2byte DECOR_NONE
release
end
@@ -101,4 +101,3 @@ Route104_PrettyPetalFlowerShop_EventScript_22A482:: @ 822A482
msgbox Route104_PrettyPetalFlowerShop_Text_2A7AF3, MSGBOX_DEFAULT
release
end
-
diff --git a/data/maps/Route105/scripts.inc b/data/maps/Route105/scripts.inc
index 2b8ebe305..041a64709 100644
--- a/data/maps/Route105/scripts.inc
+++ b/data/maps/Route105/scripts.inc
@@ -1,6 +1,6 @@
Route105_MapScripts:: @ 81EE1DB
map_script MAP_SCRIPT_ON_LOAD, Route105_MapScript1_1EE1EB
- map_script MAP_SCRIPT_ON_TRANSITION, Route105_MapScript1_1EE21E
+ map_script MAP_SCRIPT_ON_TRANSITION, Route105_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, Route105_MapScript2_1EE240
.byte 0
@@ -17,7 +17,7 @@ Route105_EventScript_1EE20B:: @ 81EE20B
setmetatile 9, 20, 145, 1
return
-Route105_MapScript1_1EE21E: @ 81EE21E
+Route105_OnTransition: @ 81EE21E
compare VAR_SHOULD_END_UNUSUAL_WEATHER, 1
call_if_eq Route105_EventScript_273D13
compare VAR_UNUSUAL_WEATHER_LOCATION, UNUSUAL_WEATHER_ROUTE_105_NORTH
diff --git a/data/maps/Route110/scripts.inc b/data/maps/Route110/scripts.inc
index cddfbebcc..bc4768207 100644
--- a/data/maps/Route110/scripts.inc
+++ b/data/maps/Route110/scripts.inc
@@ -1,6 +1,6 @@
Route110_MapScripts:: @ 81EF269
map_script MAP_SCRIPT_ON_RESUME, Route110_MapScript1_1EF279
- map_script MAP_SCRIPT_ON_TRANSITION, Route110_MapScript1_1EF27D
+ map_script MAP_SCRIPT_ON_TRANSITION, Route110_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, Route110_MapScript2_1EF297
.byte 0
@@ -8,7 +8,7 @@ Route110_MapScript1_1EF279: @ 81EF279
special UpdateCyclingRoadState
end
-Route110_MapScript1_1EF27D: @ 81EF27D
+Route110_OnTransition: @ 81EF27D
call Common_EventScript_SetupRivalGender
call Common_EventScript_SetupRivalOnBikeGender
compare VAR_CYCLING_CHALLENGE_STATE, 1
diff --git a/data/maps/Route110_SeasideCyclingRoadSouthEntrance/scripts.inc b/data/maps/Route110_SeasideCyclingRoadSouthEntrance/scripts.inc
index 1d353dcdd..1d0ca55bb 100644
--- a/data/maps/Route110_SeasideCyclingRoadSouthEntrance/scripts.inc
+++ b/data/maps/Route110_SeasideCyclingRoadSouthEntrance/scripts.inc
@@ -1,8 +1,8 @@
Route110_SeasideCyclingRoadSouthEntrance_MapScripts:: @ 826EBA1
- map_script MAP_SCRIPT_ON_TRANSITION, Route110_SeasideCyclingRoadSouthEntrance_MapScript1_26EBA7
+ map_script MAP_SCRIPT_ON_TRANSITION, Route110_SeasideCyclingRoadSouthEntrance_OnTransition
.byte 0
-Route110_SeasideCyclingRoadSouthEntrance_MapScript1_26EBA7: @ 826EBA7
+Route110_SeasideCyclingRoadSouthEntrance_OnTransition: @ 826EBA7
compare VAR_CYCLING_CHALLENGE_STATE, 3
call_if_eq Route110_SeasideCyclingRoadSouthEntrance_EventScript_26EBBE
compare VAR_CYCLING_CHALLENGE_STATE, 2
diff --git a/data/maps/Route110_TrickHouseCorridor/scripts.inc b/data/maps/Route110_TrickHouseCorridor/scripts.inc
index 996f9d605..80a6ac3dd 100644
--- a/data/maps/Route110_TrickHouseCorridor/scripts.inc
+++ b/data/maps/Route110_TrickHouseCorridor/scripts.inc
@@ -1,8 +1,8 @@
Route110_TrickHouseCorridor_MapScripts:: @ 826B903
- map_script MAP_SCRIPT_ON_TRANSITION, Route110_TrickHouseCorridor_MapScript1_26B909
+ map_script MAP_SCRIPT_ON_TRANSITION, Route110_TrickHouseCorridor_OnTransition
.byte 0
-Route110_TrickHouseCorridor_MapScript1_26B909: @ 826B909
+Route110_TrickHouseCorridor_OnTransition: @ 826B909
setvar VAR_TRICK_HOUSE_STATE, 1
end
diff --git a/data/maps/Route110_TrickHouseEnd/scripts.inc b/data/maps/Route110_TrickHouseEnd/scripts.inc
index 3ce8cfd5e..1c1aa76b4 100644
--- a/data/maps/Route110_TrickHouseEnd/scripts.inc
+++ b/data/maps/Route110_TrickHouseEnd/scripts.inc
@@ -1,6 +1,6 @@
Route110_TrickHouseEnd_MapScripts:: @ 826ACAF
map_script MAP_SCRIPT_ON_RESUME, Route110_TrickHouseEnd_MapScript1_26ACC4
- map_script MAP_SCRIPT_ON_TRANSITION, Route110_TrickHouseEnd_MapScript1_26ACD0
+ map_script MAP_SCRIPT_ON_TRANSITION, Route110_TrickHouseEnd_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, Route110_TrickHouseEnd_MapScript2_26ACF5
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, Route110_TrickHouseEnd_MapScript2_26ACDE
.byte 0
@@ -10,7 +10,7 @@ Route110_TrickHouseEnd_MapScript1_26ACC4: @ 826ACC4
call_if_eq Route110_TrickHouseEnd_EventScript_26AD0D
end
-Route110_TrickHouseEnd_MapScript1_26ACD0: @ 826ACD0
+Route110_TrickHouseEnd_OnTransition: @ 826ACD0
setvar VAR_TEMP_1, 0
setvar VAR_TEMP_2, 0
special SetTrickHouseEndRoomFlag
diff --git a/data/maps/Route110_TrickHouseEntrance/scripts.inc b/data/maps/Route110_TrickHouseEntrance/scripts.inc
index 46610937e..aae615a62 100644
--- a/data/maps/Route110_TrickHouseEntrance/scripts.inc
+++ b/data/maps/Route110_TrickHouseEntrance/scripts.inc
@@ -759,8 +759,8 @@ Route110_TrickHouseEntrance_EventScript_26A459:: @ 826A459
setfieldeffectargument 0, VAR_0x8004
setfieldeffectargument 1, VAR_0x8005
setfieldeffectargument 2, VAR_0x8006
- dofieldeffect 54
- waitfieldeffect 54
+ dofieldeffect FLDEFF_SPARKLE
+ waitfieldeffect FLDEFF_SPARKLE
delay 10
return
diff --git a/data/maps/Route110_TrickHousePuzzle1/map.json b/data/maps/Route110_TrickHousePuzzle1/map.json
index c6609d103..18dc10027 100644
--- a/data/maps/Route110_TrickHousePuzzle1/map.json
+++ b/data/maps/Route110_TrickHousePuzzle1/map.json
@@ -63,7 +63,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle1_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_13"
},
{
@@ -76,7 +76,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle1_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_12"
},
{
@@ -89,7 +89,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle1_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_14"
},
{
@@ -102,7 +102,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle1_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_17"
},
{
@@ -115,7 +115,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle1_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_16"
},
{
@@ -128,7 +128,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle1_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_15"
},
{
@@ -141,7 +141,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle1_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_19"
},
{
@@ -154,7 +154,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle1_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_18"
},
{
@@ -167,7 +167,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle1_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_1B"
},
{
@@ -193,7 +193,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle1_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_1C"
},
{
@@ -206,7 +206,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle1_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_1E"
}
],
diff --git a/data/maps/Route110_TrickHousePuzzle2/scripts.inc b/data/maps/Route110_TrickHousePuzzle2/scripts.inc
index 2c8ef8cb0..057f6ea32 100644
--- a/data/maps/Route110_TrickHousePuzzle2/scripts.inc
+++ b/data/maps/Route110_TrickHousePuzzle2/scripts.inc
@@ -1,6 +1,6 @@
Route110_TrickHousePuzzle2_MapScripts:: @ 826BB73
map_script MAP_SCRIPT_ON_RESUME, Route110_TrickHousePuzzle2_MapScript1_26BB7E
- map_script MAP_SCRIPT_ON_TRANSITION, Route110_TrickHousePuzzle2_MapScript1_26BBAB
+ map_script MAP_SCRIPT_ON_TRANSITION, Route110_TrickHousePuzzle2_OnTransition
.byte 0
Route110_TrickHousePuzzle2_MapScript1_26BB7E: @ 826BB7E
@@ -14,7 +14,7 @@ Route110_TrickHousePuzzle2_MapScript1_26BB7E: @ 826BB7E
call_if_eq Route110_TrickHousePuzzle2_EventScript_26BC62
end
-Route110_TrickHousePuzzle2_MapScript1_26BBAB: @ 826BBAB
+Route110_TrickHousePuzzle2_OnTransition: @ 826BBAB
setvar VAR_TEMP_1, 0
setvar VAR_TEMP_2, 0
setvar VAR_TEMP_3, 0
diff --git a/data/maps/Route110_TrickHousePuzzle3/map.json b/data/maps/Route110_TrickHousePuzzle3/map.json
index e69580793..a37498fd2 100644
--- a/data/maps/Route110_TrickHousePuzzle3/map.json
+++ b/data/maps/Route110_TrickHousePuzzle3/map.json
@@ -89,7 +89,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle3_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_15"
},
{
@@ -102,7 +102,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle3_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_16"
}
],
diff --git a/data/maps/Route110_TrickHousePuzzle3/scripts.inc b/data/maps/Route110_TrickHousePuzzle3/scripts.inc
index d93ef95e8..48b81e0cc 100644
--- a/data/maps/Route110_TrickHousePuzzle3/scripts.inc
+++ b/data/maps/Route110_TrickHousePuzzle3/scripts.inc
@@ -1,6 +1,6 @@
Route110_TrickHousePuzzle3_MapScripts:: @ 826BED8
map_script MAP_SCRIPT_ON_RESUME, Route110_TrickHousePuzzle3_MapScript1_26BEE3
- map_script MAP_SCRIPT_ON_TRANSITION, Route110_TrickHousePuzzle3_MapScript1_26BEFF
+ map_script MAP_SCRIPT_ON_TRANSITION, Route110_TrickHousePuzzle3_OnTransition
.byte 0
Route110_TrickHousePuzzle3_MapScript1_26BEE3: @ 826BEE3
@@ -11,7 +11,7 @@ Route110_TrickHousePuzzle3_MapScript1_26BEE3: @ 826BEE3
call_if_eq Route110_TrickHousePuzzle3_EventScript_26C232
end
-Route110_TrickHousePuzzle3_MapScript1_26BEFF: @ 826BEFF
+Route110_TrickHousePuzzle3_OnTransition: @ 826BEFF
setvar VAR_TEMP_1, 0
setvar VAR_TEMP_2, 0
setvar VAR_TEMP_3, 0
diff --git a/data/maps/Route110_TrickHousePuzzle4/map.json b/data/maps/Route110_TrickHousePuzzle4/map.json
index 47238a559..f77fa9b22 100644
--- a/data/maps/Route110_TrickHousePuzzle4/map.json
+++ b/data/maps/Route110_TrickHousePuzzle4/map.json
@@ -76,7 +76,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle4_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_11"
},
{
@@ -89,7 +89,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle4_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_12"
},
{
@@ -102,7 +102,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle4_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_13"
},
{
@@ -115,7 +115,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle4_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_14"
},
{
@@ -128,7 +128,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle4_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_15"
},
{
@@ -141,7 +141,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle4_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_16"
},
{
@@ -154,7 +154,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle4_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_17"
},
{
@@ -167,7 +167,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle4_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_18"
},
{
@@ -180,7 +180,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle4_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_19"
},
{
@@ -193,7 +193,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route110_TrickHousePuzzle4_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_1A"
}
],
diff --git a/data/maps/Route110_TrickHousePuzzle5/scripts.inc b/data/maps/Route110_TrickHousePuzzle5/scripts.inc
index 86b950e8a..9ae8dc759 100644
--- a/data/maps/Route110_TrickHousePuzzle5/scripts.inc
+++ b/data/maps/Route110_TrickHousePuzzle5/scripts.inc
@@ -1,8 +1,8 @@
Route110_TrickHousePuzzle5_MapScripts:: @ 826CAF0
- map_script MAP_SCRIPT_ON_TRANSITION, Route110_TrickHousePuzzle5_MapScript1_26CAF6
+ map_script MAP_SCRIPT_ON_TRANSITION, Route110_TrickHousePuzzle5_OnTransition
.byte 0
-Route110_TrickHousePuzzle5_MapScript1_26CAF6: @ 826CAF6
+Route110_TrickHousePuzzle5_OnTransition: @ 826CAF6
setvar VAR_TEMP_1, 0
setvar VAR_TEMP_2, 0
setvar VAR_TEMP_3, 0
diff --git a/data/maps/Route110_TrickHousePuzzle6/scripts.inc b/data/maps/Route110_TrickHousePuzzle6/scripts.inc
index a5b433d13..685a0170b 100644
--- a/data/maps/Route110_TrickHousePuzzle6/scripts.inc
+++ b/data/maps/Route110_TrickHousePuzzle6/scripts.inc
@@ -1,9 +1,9 @@
Route110_TrickHousePuzzle6_MapScripts:: @ 826DDA7
- map_script MAP_SCRIPT_ON_TRANSITION, Route110_TrickHousePuzzle6_MapScript1_26DDB2
+ map_script MAP_SCRIPT_ON_TRANSITION, Route110_TrickHousePuzzle6_OnTransition
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, Route110_TrickHousePuzzle6_MapScript2_26DDB6
.byte 0
-Route110_TrickHousePuzzle6_MapScript1_26DDB2: @ 826DDB2
+Route110_TrickHousePuzzle6_OnTransition: @ 826DDB2
special RotatingGate_InitPuzzle
end
diff --git a/data/maps/Route110_TrickHousePuzzle7/scripts.inc b/data/maps/Route110_TrickHousePuzzle7/scripts.inc
index b4bd782cf..27177ed22 100644
--- a/data/maps/Route110_TrickHousePuzzle7/scripts.inc
+++ b/data/maps/Route110_TrickHousePuzzle7/scripts.inc
@@ -1,6 +1,6 @@
Route110_TrickHousePuzzle7_MapScripts:: @ 826E091
map_script MAP_SCRIPT_ON_RESUME, Route110_TrickHousePuzzle7_MapScript1_26E0A6
- map_script MAP_SCRIPT_ON_TRANSITION, Route110_TrickHousePuzzle7_MapScript1_26E198
+ map_script MAP_SCRIPT_ON_TRANSITION, Route110_TrickHousePuzzle7_OnTransition
map_script MAP_SCRIPT_ON_LOAD, Route110_TrickHousePuzzle7_MapScript1_26E1B4
map_script MAP_SCRIPT_ON_FRAME_TABLE, Route110_TrickHousePuzzle7_MapScript2_26E1C0
.byte 0
@@ -67,7 +67,7 @@ Route110_TrickHousePuzzle7_EventScript_26E185:: @ 826E185
setmetatile 7, 5, 574, 1
return
-Route110_TrickHousePuzzle7_MapScript1_26E198: @ 826E198
+Route110_TrickHousePuzzle7_OnTransition: @ 826E198
compare VAR_TRICK_HOUSE_PUZZLE_7_STATE_2, 1
goto_if_eq Route110_TrickHousePuzzle7_EventScript_26E1B3
clearflag FLAG_TRICK_HOUSE_PUZZLE_7_SWITCH_1
diff --git a/data/maps/Route111/map.json b/data/maps/Route111/map.json
index d3428f8c6..ef7e29999 100644
--- a/data/maps/Route111/map.json
+++ b/data/maps/Route111/map.json
@@ -222,7 +222,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route111_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_11"
},
{
@@ -235,7 +235,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route111_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_12"
},
{
@@ -378,7 +378,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route111_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_13"
},
{
diff --git a/data/maps/Route111/scripts.inc b/data/maps/Route111/scripts.inc
index 3755ee5e4..8371071da 100644
--- a/data/maps/Route111/scripts.inc
+++ b/data/maps/Route111/scripts.inc
@@ -1,6 +1,6 @@
Route111_MapScripts:: @ 81F0CA7
map_script MAP_SCRIPT_ON_LOAD, Route111_MapScript1_1F0CBC
- map_script MAP_SCRIPT_ON_TRANSITION, Route111_MapScript1_1F0D87
+ map_script MAP_SCRIPT_ON_TRANSITION, Route111_OnTransition
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, Route111_MapScript2_1F0E46
map_script MAP_SCRIPT_ON_FRAME_TABLE, Route111_MapScript2_1F0E56
.byte 0
@@ -37,7 +37,7 @@ Route111_EventScript_1F0CE4:: @ 81F0CE4
setmetatile 20, 58, 997, 0
return
-Route111_MapScript1_1F0D87: @ 81F0D87
+Route111_OnTransition: @ 81F0D87
setvar VAR_TRAINER_HILL_IS_ACTIVE, 0
special SetMirageTowerVisibility
call_if_unset FLAG_MIRAGE_TOWER_VISIBLE, Route111_EventScript_1F0E3C
diff --git a/data/maps/Route112/scripts.inc b/data/maps/Route112/scripts.inc
index abc3ca4cd..58109bd40 100644
--- a/data/maps/Route112/scripts.inc
+++ b/data/maps/Route112/scripts.inc
@@ -1,8 +1,8 @@
Route112_MapScripts:: @ 81F1DA8
- map_script MAP_SCRIPT_ON_TRANSITION, Route112_MapScript1_1F1DAE
+ map_script MAP_SCRIPT_ON_TRANSITION, Route112_OnTransition
.byte 0
-Route112_MapScript1_1F1DAE: @ 81F1DAE
+Route112_OnTransition: @ 81F1DAE
clearflag FLAG_FORCE_MIRAGE_TOWER_VISIBLE
setvar VAR_JAGGED_PASS_ASH_WEATHER, 0
end
diff --git a/data/maps/Route112_CableCarStation/scripts.inc b/data/maps/Route112_CableCarStation/scripts.inc
index f3cdae8f9..d9eec8efd 100644
--- a/data/maps/Route112_CableCarStation/scripts.inc
+++ b/data/maps/Route112_CableCarStation/scripts.inc
@@ -1,9 +1,9 @@
Route112_CableCarStation_MapScripts:: @ 822AABE
- map_script MAP_SCRIPT_ON_TRANSITION, Route112_CableCarStation_MapScript1_22AAC9
+ map_script MAP_SCRIPT_ON_TRANSITION, Route112_CableCarStation_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, Route112_CableCarStation_MapScript2_22AAE9
.byte 0
-Route112_CableCarStation_MapScript1_22AAC9: @ 822AAC9
+Route112_CableCarStation_OnTransition: @ 822AAC9
setescapewarp MAP_ROUTE112, 255, 28, 28
compare VAR_CABLE_CAR_STATION_STATE, 2
call_if_eq Route112_CableCarStation_EventScript_22AADD
diff --git a/data/maps/Route113/scripts.inc b/data/maps/Route113/scripts.inc
index 6efd05d6e..e8fb08ee4 100644
--- a/data/maps/Route113/scripts.inc
+++ b/data/maps/Route113/scripts.inc
@@ -1,13 +1,13 @@
Route113_MapScripts:: @ 81F2153
map_script MAP_SCRIPT_ON_RESUME, Route113_MapScript1_1F215E
- map_script MAP_SCRIPT_ON_TRANSITION, Route113_MapScript1_1F2161
+ map_script MAP_SCRIPT_ON_TRANSITION, Route113_OnTransition
.byte 0
Route113_MapScript1_1F215E: @ 81F215E
setstepcallback 1
end
-Route113_MapScript1_1F2161: @ 81F2161
+Route113_OnTransition: @ 81F2161
clearflag FLAG_FORCE_MIRAGE_TOWER_VISIBLE
call Route113_EventScript_1F216A
end
diff --git a/data/maps/Route114/map.json b/data/maps/Route114/map.json
index 08f2996d2..1aee2d422 100644
--- a/data/maps/Route114/map.json
+++ b/data/maps/Route114/map.json
@@ -165,7 +165,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route114_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_11"
},
{
@@ -256,7 +256,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route114_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_12"
},
{
@@ -269,7 +269,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route114_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_13"
},
{
@@ -282,7 +282,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route114_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_14"
},
{
@@ -295,7 +295,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route114_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_15"
},
{
diff --git a/data/maps/Route114/scripts.inc b/data/maps/Route114/scripts.inc
index b03a2f228..925f693fa 100644
--- a/data/maps/Route114/scripts.inc
+++ b/data/maps/Route114/scripts.inc
@@ -1,10 +1,10 @@
Route114_MapScripts:: @ 81F252F
- map_script MAP_SCRIPT_ON_TRANSITION, Route114_MapScript1_1F253F
+ map_script MAP_SCRIPT_ON_TRANSITION, Route114_OnTransition
map_script MAP_SCRIPT_ON_LOAD, Route114_MapScript1_1F2561
map_script MAP_SCRIPT_ON_FRAME_TABLE, Route114_MapScript2_1F2578
.byte 0
-Route114_MapScript1_1F253F: @ 81F253F
+Route114_OnTransition: @ 81F253F
compare VAR_SHOULD_END_UNUSUAL_WEATHER, 1
call_if_eq Route114_EventScript_273D13
compare VAR_UNUSUAL_WEATHER_LOCATION, UNUSUAL_WEATHER_ROUTE_114_NORTH
diff --git a/data/maps/Route114_FossilManiacsTunnel/scripts.inc b/data/maps/Route114_FossilManiacsTunnel/scripts.inc
index 8ab83a441..8cfd754a3 100644
--- a/data/maps/Route114_FossilManiacsTunnel/scripts.inc
+++ b/data/maps/Route114_FossilManiacsTunnel/scripts.inc
@@ -1,9 +1,9 @@
Route114_FossilManiacsTunnel_MapScripts:: @ 822AF28
- map_script MAP_SCRIPT_ON_TRANSITION, Route114_FossilManiacsTunnel_MapScript1_22AF33
+ map_script MAP_SCRIPT_ON_TRANSITION, Route114_FossilManiacsTunnel_OnTransition
map_script MAP_SCRIPT_ON_LOAD, Route114_FossilManiacsTunnel_MapScript1_22AF49
.byte 0
-Route114_FossilManiacsTunnel_MapScript1_22AF33: @ 822AF33
+Route114_FossilManiacsTunnel_OnTransition: @ 822AF33
call_if_set FLAG_SYS_GAME_CLEAR, Route114_FossilManiacsTunnel_EventScript_22AF3D
end
diff --git a/data/maps/Route115/map.json b/data/maps/Route115/map.json
index 484699ec6..53ce80ce7 100644
--- a/data/maps/Route115/map.json
+++ b/data/maps/Route115/map.json
@@ -217,7 +217,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route115_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_11"
},
{
diff --git a/data/maps/Route115/scripts.inc b/data/maps/Route115/scripts.inc
index 259cd5904..7c5b63bcd 100644
--- a/data/maps/Route115/scripts.inc
+++ b/data/maps/Route115/scripts.inc
@@ -1,6 +1,6 @@
Route115_MapScripts:: @ 81F2920
map_script MAP_SCRIPT_ON_LOAD, Route115_MapScript1_1F2930
- map_script MAP_SCRIPT_ON_TRANSITION, Route115_MapScript1_1F2947
+ map_script MAP_SCRIPT_ON_TRANSITION, Route115_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, Route115_MapScript2_1F2969
.byte 0
@@ -11,7 +11,7 @@ Route115_MapScript1_1F2930: @ 81F2930
call_if_eq UnusualWeather_EventScript_PlaceTilesRoute115East
end
-Route115_MapScript1_1F2947: @ 81F2947
+Route115_OnTransition: @ 81F2947
compare VAR_SHOULD_END_UNUSUAL_WEATHER, 1
call_if_eq Route115_EventScript_273D13
compare VAR_UNUSUAL_WEATHER_LOCATION, UNUSUAL_WEATHER_ROUTE_115_WEST
diff --git a/data/maps/Route116/map.json b/data/maps/Route116/map.json
index 0745af08c..8a369e407 100644
--- a/data/maps/Route116/map.json
+++ b/data/maps/Route116/map.json
@@ -74,7 +74,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route116_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_11"
},
{
@@ -87,7 +87,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route116_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_12"
},
{
@@ -178,7 +178,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route116_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_13"
},
{
@@ -204,7 +204,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route116_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_14"
},
{
@@ -360,7 +360,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route116_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_15"
},
{
diff --git a/data/maps/Route116/scripts.inc b/data/maps/Route116/scripts.inc
index 454201307..161e9be51 100644
--- a/data/maps/Route116/scripts.inc
+++ b/data/maps/Route116/scripts.inc
@@ -1,10 +1,10 @@
Route116_MapScripts:: @ 81F2C0C
- map_script MAP_SCRIPT_ON_TRANSITION, Route116_MapScript1_1F2C1C
+ map_script MAP_SCRIPT_ON_TRANSITION, Route116_OnTransition
map_script MAP_SCRIPT_ON_LOAD, Route116_MapScript1_1F2C4F
map_script MAP_SCRIPT_ON_FRAME_TABLE, Route116_MapScript2_1F2C66
.byte 0
-Route116_MapScript1_1F2C1C: @ 81F2C1C
+Route116_OnTransition: @ 81F2C1C
call_if_set FLAG_RECOVERED_DEVON_GOODS, Route116_EventScript_1F2C47
compare VAR_SHOULD_END_UNUSUAL_WEATHER, 1
call_if_eq Route116_EventScript_273D13
diff --git a/data/maps/Route117/map.json b/data/maps/Route117/map.json
index efaad2802..b29b58639 100644
--- a/data/maps/Route117/map.json
+++ b/data/maps/Route117/map.json
@@ -217,7 +217,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route117_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_11"
},
{
diff --git a/data/maps/Route117/scripts.inc b/data/maps/Route117/scripts.inc
index 08571690f..5435595ee 100644
--- a/data/maps/Route117/scripts.inc
+++ b/data/maps/Route117/scripts.inc
@@ -1,8 +1,8 @@
Route117_MapScripts:: @ 81F397D
- map_script MAP_SCRIPT_ON_TRANSITION, Route117_MapScript1_1F3983
+ map_script MAP_SCRIPT_ON_TRANSITION, Route117_OnTransition
.byte 0
-Route117_MapScript1_1F3983: @ 81F3983
+Route117_OnTransition: @ 81F3983
call Route117_EventScript_1F3989
end
diff --git a/data/maps/Route118/map.json b/data/maps/Route118/map.json
index 0a3fee210..e7737bf1e 100644
--- a/data/maps/Route118/map.json
+++ b/data/maps/Route118/map.json
@@ -183,7 +183,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route118_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_11"
},
{
diff --git a/data/maps/Route118/scripts.inc b/data/maps/Route118/scripts.inc
index 9c1ec46ca..858f0d598 100644
--- a/data/maps/Route118/scripts.inc
+++ b/data/maps/Route118/scripts.inc
@@ -1,10 +1,10 @@
Route118_MapScripts:: @ 81F3DBC
- map_script MAP_SCRIPT_ON_TRANSITION, Route118_MapScript1_1F3DCC
+ map_script MAP_SCRIPT_ON_TRANSITION, Route118_OnTransition
map_script MAP_SCRIPT_ON_LOAD, Route118_MapScript1_1F3DF3
map_script MAP_SCRIPT_ON_FRAME_TABLE, Route118_MapScript2_1F3E0A
.byte 0
-Route118_MapScript1_1F3DCC: @ 81F3DCC
+Route118_OnTransition: @ 81F3DCC
call Route118_EventScript_28CCC7
compare VAR_SHOULD_END_UNUSUAL_WEATHER, 1
call_if_eq Route118_EventScript_273D13
diff --git a/data/maps/Route119/scripts.inc b/data/maps/Route119/scripts.inc
index 22a73b74b..1902333ed 100644
--- a/data/maps/Route119/scripts.inc
+++ b/data/maps/Route119/scripts.inc
@@ -1,6 +1,6 @@
Route119_MapScripts:: @ 81F4424
map_script MAP_SCRIPT_ON_RESUME, Route119_MapScript1_1F442F
- map_script MAP_SCRIPT_ON_TRANSITION, Route119_MapScript1_1F444D
+ map_script MAP_SCRIPT_ON_TRANSITION, Route119_OnTransition
.byte 0
Route119_MapScript1_1F442F: @ 81F442F
@@ -14,7 +14,7 @@ Route119_EventScript_1F4439:: @ 81F4439
removeobject VAR_LAST_TALKED
return
-Route119_MapScript1_1F444D: @ 81F444D
+Route119_OnTransition: @ 81F444D
call Common_EventScript_SetupRivalGender
call Common_EventScript_SetupRivalOnBikeGender
compare VAR_WEATHER_INSTITUTE_STATE, 1
diff --git a/data/maps/Route119_WeatherInstitute_1F/scripts.inc b/data/maps/Route119_WeatherInstitute_1F/scripts.inc
index 09ed3c4f5..b4b309d80 100644
--- a/data/maps/Route119_WeatherInstitute_1F/scripts.inc
+++ b/data/maps/Route119_WeatherInstitute_1F/scripts.inc
@@ -1,8 +1,8 @@
Route119_WeatherInstitute_1F_MapScripts:: @ 826FA86
- map_script MAP_SCRIPT_ON_TRANSITION, Route119_WeatherInstitute_1F_MapScript1_26FA8C
+ map_script MAP_SCRIPT_ON_TRANSITION, Route119_WeatherInstitute_1F_OnTransition
.byte 0
-Route119_WeatherInstitute_1F_MapScript1_26FA8C: @ 826FA8C
+Route119_WeatherInstitute_1F_OnTransition: @ 826FA8C
compare VAR_WEATHER_INSTITUTE_STATE, 0
call_if_eq Route119_WeatherInstitute_1F_EventScript_26FA98
end
diff --git a/data/maps/Route119_WeatherInstitute_2F/scripts.inc b/data/maps/Route119_WeatherInstitute_2F/scripts.inc
index e41960fde..1a9ccfa7e 100644
--- a/data/maps/Route119_WeatherInstitute_2F/scripts.inc
+++ b/data/maps/Route119_WeatherInstitute_2F/scripts.inc
@@ -1,8 +1,8 @@
Route119_WeatherInstitute_2F_MapScripts:: @ 826FF1E
- map_script MAP_SCRIPT_ON_TRANSITION, Route119_WeatherInstitute_2F_MapScript1_26FF24
+ map_script MAP_SCRIPT_ON_TRANSITION, Route119_WeatherInstitute_2F_OnTransition
.byte 0
-Route119_WeatherInstitute_2F_MapScript1_26FF24: @ 826FF24
+Route119_WeatherInstitute_2F_OnTransition: @ 826FF24
compare VAR_WEATHER_INSTITUTE_STATE, 0
call_if_eq Route119_WeatherInstitute_2F_EventScript_26FF44
compare VAR_WEATHER_INSTITUTE_STATE, 1
diff --git a/data/maps/Route120/map.json b/data/maps/Route120/map.json
index 1bdbd0bca..fccf5c88e 100644
--- a/data/maps/Route120/map.json
+++ b/data/maps/Route120/map.json
@@ -295,7 +295,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route120_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_11"
},
{
@@ -438,7 +438,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route120_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_14"
},
{
@@ -451,7 +451,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route120_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_12"
},
{
diff --git a/data/maps/Route120/scripts.inc b/data/maps/Route120/scripts.inc
index 40c9ee09a..1268b9965 100644
--- a/data/maps/Route120/scripts.inc
+++ b/data/maps/Route120/scripts.inc
@@ -1,6 +1,6 @@
Route120_MapScripts:: @ 81F53EC
map_script MAP_SCRIPT_ON_RESUME, Route120_MapScript1_1F53FC
- map_script MAP_SCRIPT_ON_TRANSITION, Route120_MapScript1_1F54CD
+ map_script MAP_SCRIPT_ON_TRANSITION, Route120_OnTransition
map_script MAP_SCRIPT_ON_LOAD, Route120_MapScript1_1F5474
.byte 0
@@ -60,7 +60,7 @@ Route120_EventScript_1F54C8:: @ 81F54C8
setobjectmovementtype 36, MOVEMENT_TYPE_FACE_RIGHT
return
-Route120_MapScript1_1F54CD: @ 81F54CD
+Route120_OnTransition: @ 81F54CD
call Route120_EventScript_28CCC7
call Route120_EventScript_1F54D8
end
@@ -245,10 +245,10 @@ Route120_EventScript_1F572C:: @ 81F572C
waitmovement 0
delay 50
setfieldeffectargument 0, 1
- dofieldeffect 30
+ dofieldeffect FLDEFF_NPCFLY_OUT
delay 15
removeobject 31
- waitfieldeffect 30
+ waitfieldeffect FLDEFF_NPCFLY_OUT
setmetatile 13, 15, 663, 0
setmetatile 12, 16, 671, 0
setmetatile 12, 17, 161, 0
diff --git a/data/maps/Route121/map.json b/data/maps/Route121/map.json
index f1152b465..9382ab375 100644
--- a/data/maps/Route121/map.json
+++ b/data/maps/Route121/map.json
@@ -222,7 +222,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route121_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_11"
},
{
@@ -235,7 +235,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route121_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_12"
},
{
@@ -313,7 +313,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route121_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_13"
},
{
diff --git a/data/maps/Route123/map.json b/data/maps/Route123/map.json
index 1e562420d..c13d17a0c 100644
--- a/data/maps/Route123/map.json
+++ b/data/maps/Route123/map.json
@@ -256,7 +256,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route123_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_11"
},
{
@@ -269,7 +269,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route123_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_12"
},
{
@@ -282,7 +282,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route123_EventScript_2906BB",
+ "script": "EventScript_CutTree",
"flag": "FLAG_TEMP_13"
},
{
diff --git a/data/maps/Route123/scripts.inc b/data/maps/Route123/scripts.inc
index 8e1692114..ce74cbadc 100644
--- a/data/maps/Route123/scripts.inc
+++ b/data/maps/Route123/scripts.inc
@@ -1,8 +1,8 @@
Route123_MapScripts:: @ 81F6147
- map_script MAP_SCRIPT_ON_TRANSITION, Route123_MapScript1_1F614D
+ map_script MAP_SCRIPT_ON_TRANSITION, Route123_OnTransition
.byte 0
-Route123_MapScript1_1F614D: @ 81F614D
+Route123_OnTransition: @ 81F614D
special SetRoute123Weather
end
diff --git a/data/maps/Route124/scripts.inc b/data/maps/Route124/scripts.inc
index 34e315792..9a11cec2c 100644
--- a/data/maps/Route124/scripts.inc
+++ b/data/maps/Route124/scripts.inc
@@ -1,8 +1,8 @@
Route124_MapScripts:: @ 81F656C
- map_script MAP_SCRIPT_ON_TRANSITION, Route124_MapScript1_1F6572
+ map_script MAP_SCRIPT_ON_TRANSITION, Route124_OnTransition
.byte 0
-Route124_MapScript1_1F6572: @ 81F6572
+Route124_OnTransition: @ 81F6572
call_if_set FLAG_SYS_WEATHER_CTRL, Common_EventScript_SetWeather15
end
diff --git a/data/maps/Route125/scripts.inc b/data/maps/Route125/scripts.inc
index 8abcbe787..2c15eee3d 100644
--- a/data/maps/Route125/scripts.inc
+++ b/data/maps/Route125/scripts.inc
@@ -1,10 +1,10 @@
Route125_MapScripts:: @ 81F6748
- map_script MAP_SCRIPT_ON_TRANSITION, Route125_MapScript1_1F6758
+ map_script MAP_SCRIPT_ON_TRANSITION, Route125_OnTransition
map_script MAP_SCRIPT_ON_LOAD, Route125_MapScript1_1F6783
map_script MAP_SCRIPT_ON_FRAME_TABLE, Route125_MapScript2_1F679A
.byte 0
-Route125_MapScript1_1F6758: @ 81F6758
+Route125_OnTransition: @ 81F6758
call_if_set FLAG_SYS_WEATHER_CTRL, Common_EventScript_SetWeather15
compare VAR_SHOULD_END_UNUSUAL_WEATHER, 1
call_if_eq Route125_EventScript_273D13
diff --git a/data/maps/Route126/scripts.inc b/data/maps/Route126/scripts.inc
index 71bc77b28..7a606e020 100644
--- a/data/maps/Route126/scripts.inc
+++ b/data/maps/Route126/scripts.inc
@@ -1,8 +1,8 @@
Route126_MapScripts:: @ 81F68C6
- map_script MAP_SCRIPT_ON_TRANSITION, Route126_MapScript1_1F68CC
+ map_script MAP_SCRIPT_ON_TRANSITION, Route126_OnTransition
.byte 0
-Route126_MapScript1_1F68CC: @ 81F68CC
+Route126_OnTransition: @ 81F68CC
call_if_set FLAG_SYS_WEATHER_CTRL, Common_EventScript_SetWeather15
end
diff --git a/data/maps/Route127/scripts.inc b/data/maps/Route127/scripts.inc
index 91fab2b61..1829dbcfd 100644
--- a/data/maps/Route127/scripts.inc
+++ b/data/maps/Route127/scripts.inc
@@ -1,10 +1,10 @@
Route127_MapScripts:: @ 81F69D9
- map_script MAP_SCRIPT_ON_TRANSITION, Route127_MapScript1_1F69E9
+ map_script MAP_SCRIPT_ON_TRANSITION, Route127_OnTransition
map_script MAP_SCRIPT_ON_LOAD, Route127_MapScript1_1F6A14
map_script MAP_SCRIPT_ON_FRAME_TABLE, Route127_MapScript2_1F6A2B
.byte 0
-Route127_MapScript1_1F69E9: @ 81F69E9
+Route127_OnTransition: @ 81F69E9
call_if_set FLAG_SYS_WEATHER_CTRL, Common_EventScript_SetWeather15
compare VAR_SHOULD_END_UNUSUAL_WEATHER, 1
call_if_eq Route127_EventScript_273D13
diff --git a/data/maps/Route128/scripts.inc b/data/maps/Route128/scripts.inc
index 84091ac3a..bad74f451 100644
--- a/data/maps/Route128/scripts.inc
+++ b/data/maps/Route128/scripts.inc
@@ -1,9 +1,9 @@
Route128_MapScripts:: @ 81F6B38
- map_script MAP_SCRIPT_ON_TRANSITION, Route128_MapScript1_1F6B43
+ map_script MAP_SCRIPT_ON_TRANSITION, Route128_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, Route128_MapScript2_1F6B4D
.byte 0
-Route128_MapScript1_1F6B43: @ 81F6B43
+Route128_OnTransition: @ 81F6B43
call_if_set FLAG_SYS_WEATHER_CTRL, Common_EventScript_SetWeather15
end
@@ -48,8 +48,8 @@ Route128_EventScript_1F6B57:: @ 81F6B57
removeobject 4
delay 100
setfieldeffectargument 0, 1
- dofieldeffect 30
- waitfieldeffect 30
+ dofieldeffect FLDEFF_NPCFLY_OUT
+ waitfieldeffect FLDEFF_NPCFLY_OUT
addobject 3
applymovement 3, Route128_Movement_1F6C87
waitmovement 0
@@ -69,10 +69,10 @@ Route128_EventScript_1F6B57:: @ 81F6B57
waitmovement 0
delay 50
setfieldeffectargument 0, 1
- dofieldeffect 30
+ dofieldeffect FLDEFF_NPCFLY_OUT
delay 15
removeobject 3
- waitfieldeffect 30
+ waitfieldeffect FLDEFF_NPCFLY_OUT
clearflag FLAG_HIDE_MAP_NAME_POPUP
setvar VAR_ROUTE128_STATE, 2
releaseall
diff --git a/data/maps/Route129/scripts.inc b/data/maps/Route129/scripts.inc
index 25aa675a6..49b26011a 100644
--- a/data/maps/Route129/scripts.inc
+++ b/data/maps/Route129/scripts.inc
@@ -1,5 +1,5 @@
Route129_MapScripts:: @ 81F7284
- map_script MAP_SCRIPT_ON_TRANSITION, Route129_MapScript1_1F72AB
+ map_script MAP_SCRIPT_ON_TRANSITION, Route129_OnTransition
map_script MAP_SCRIPT_ON_LOAD, Route129_MapScript1_1F7294
map_script MAP_SCRIPT_ON_FRAME_TABLE, Route129_MapScript2_1F72E2
.byte 0
@@ -11,7 +11,7 @@ Route129_MapScript1_1F7294: @ 81F7294
call_if_eq UnusualWeather_EventScript_PlaceTilesRoute129East
end
-Route129_MapScript1_1F72AB: @ 81F72AB
+Route129_OnTransition: @ 81F72AB
compare VAR_SHOULD_END_UNUSUAL_WEATHER, 1
call_if_eq Route129_EventScript_273D13
compare VAR_RAYQUAZA_STATE, 4
diff --git a/data/maps/Route130/scripts.inc b/data/maps/Route130/scripts.inc
index cdcc61550..213287237 100644
--- a/data/maps/Route130/scripts.inc
+++ b/data/maps/Route130/scripts.inc
@@ -1,8 +1,8 @@
Route130_MapScripts:: @ 81F735F
- map_script MAP_SCRIPT_ON_TRANSITION, Route130_MapScript1_1F7365
+ map_script MAP_SCRIPT_ON_TRANSITION, Route130_OnTransition
.byte 0
-Route130_MapScript1_1F7365: @ 81F7365
+Route130_OnTransition: @ 81F7365
compare VAR_RAYQUAZA_STATE, 4
call_if_ge Route130_EventScript_1F73B5
specialvar VAR_RESULT, IsMirageIslandPresent
diff --git a/data/maps/Route131/scripts.inc b/data/maps/Route131/scripts.inc
index 0d178e969..17ac3f52f 100644
--- a/data/maps/Route131/scripts.inc
+++ b/data/maps/Route131/scripts.inc
@@ -1,8 +1,8 @@
Route131_MapScripts:: @ 81F7404
- map_script MAP_SCRIPT_ON_TRANSITION, Route131_MapScript1_1F740A
+ map_script MAP_SCRIPT_ON_TRANSITION, Route131_OnTransition
.byte 0
-Route131_MapScript1_1F740A: @ 81F740A
+Route131_OnTransition: @ 81F740A
compare VAR_RAYQUAZA_STATE, 4
call_if_ge Route131_EventScript_1F741F
call Route131_EventScript_1F741B
diff --git a/data/maps/RustboroCity/scripts.inc b/data/maps/RustboroCity/scripts.inc
index 1ba63c959..e72496ff3 100644
--- a/data/maps/RustboroCity/scripts.inc
+++ b/data/maps/RustboroCity/scripts.inc
@@ -1,9 +1,9 @@
RustboroCity_MapScripts:: @ 81E06BD
- map_script MAP_SCRIPT_ON_TRANSITION, RustboroCity_MapScript1_1E06C8
+ map_script MAP_SCRIPT_ON_TRANSITION, RustboroCity_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, RustboroCity_MapScript2_1E070B
.byte 0
-RustboroCity_MapScript1_1E06C8: @ 81E06C8
+RustboroCity_OnTransition: @ 81E06C8
setflag FLAG_VISITED_RUSTBORO_CITY
call Common_EventScript_SetupRivalGender
compare VAR_RUSTBORO_STATE, 6
diff --git a/data/maps/RustboroCity_DevonCorp_1F/scripts.inc b/data/maps/RustboroCity_DevonCorp_1F/scripts.inc
index 4f1971c80..788a403f2 100644
--- a/data/maps/RustboroCity_DevonCorp_1F/scripts.inc
+++ b/data/maps/RustboroCity_DevonCorp_1F/scripts.inc
@@ -1,8 +1,8 @@
RustboroCity_DevonCorp_1F_MapScripts:: @ 8211245
- map_script MAP_SCRIPT_ON_TRANSITION, RustboroCity_DevonCorp_1F_MapScript1_21124B
+ map_script MAP_SCRIPT_ON_TRANSITION, RustboroCity_DevonCorp_1F_OnTransition
.byte 0
-RustboroCity_DevonCorp_1F_MapScript1_21124B: @ 821124B
+RustboroCity_DevonCorp_1F_OnTransition: @ 821124B
call_if_unset FLAG_RETURNED_DEVON_GOODS, RustboroCity_DevonCorp_1F_EventScript_211255
end
diff --git a/data/maps/RustboroCity_DevonCorp_2F/scripts.inc b/data/maps/RustboroCity_DevonCorp_2F/scripts.inc
index fab587fb7..dfcd03dc6 100644
--- a/data/maps/RustboroCity_DevonCorp_2F/scripts.inc
+++ b/data/maps/RustboroCity_DevonCorp_2F/scripts.inc
@@ -1,8 +1,8 @@
RustboroCity_DevonCorp_2F_MapScripts:: @ 8211857
- map_script MAP_SCRIPT_ON_TRANSITION, RustboroCity_DevonCorp_2F_MapScript1_21185D
+ map_script MAP_SCRIPT_ON_TRANSITION, RustboroCity_DevonCorp_2F_OnTransition
.byte 0
-RustboroCity_DevonCorp_2F_MapScript1_21185D: @ 821185D
+RustboroCity_DevonCorp_2F_OnTransition: @ 821185D
compare VAR_FOSSIL_RESURRECTION_STATE, 1
call_if_eq RustboroCity_DevonCorp_2F_EventScript_211869
end
diff --git a/data/maps/RustboroCity_DevonCorp_3F/scripts.inc b/data/maps/RustboroCity_DevonCorp_3F/scripts.inc
index 6d0a78a42..6be85a0b0 100644
--- a/data/maps/RustboroCity_DevonCorp_3F/scripts.inc
+++ b/data/maps/RustboroCity_DevonCorp_3F/scripts.inc
@@ -1,10 +1,10 @@
RustboroCity_DevonCorp_3F_MapScripts:: @ 821242D
- map_script MAP_SCRIPT_ON_TRANSITION, RustboroCity_DevonCorp_3F_MapScript1_21243D
+ map_script MAP_SCRIPT_ON_TRANSITION, RustboroCity_DevonCorp_3F_OnTransition
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, RustboroCity_DevonCorp_3F_MapScript2_212455
map_script MAP_SCRIPT_ON_FRAME_TABLE, RustboroCity_DevonCorp_3F_MapScript2_212464
.byte 0
-RustboroCity_DevonCorp_3F_MapScript1_21243D: @ 821243D
+RustboroCity_DevonCorp_3F_OnTransition: @ 821243D
compare VAR_DEVON_CORP_3F_STATE, 0
call_if_eq RustboroCity_DevonCorp_3F_EventScript_212449
end
diff --git a/data/maps/RustboroCity_PokemonCenter_1F/scripts.inc b/data/maps/RustboroCity_PokemonCenter_1F/scripts.inc
index e7bea0f0d..4d50ca89c 100644
--- a/data/maps/RustboroCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/RustboroCity_PokemonCenter_1F/scripts.inc
@@ -1,9 +1,9 @@
RustboroCity_PokemonCenter_1F_MapScripts:: @ 8214D62
- map_script MAP_SCRIPT_ON_TRANSITION, RustboroCity_PokemonCenter_1F_MapScript1_214D6D
+ map_script MAP_SCRIPT_ON_TRANSITION, RustboroCity_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, RustboroCity_PokemonCenter_1F_MapScript1_277C30
.byte 0
-RustboroCity_PokemonCenter_1F_MapScript1_214D6D: @ 8214D6D
+RustboroCity_PokemonCenter_1F_OnTransition: @ 8214D6D
setrespawn HEAL_LOCATION_RUSTBORO_CITY
call RustboroCity_PokemonCenter_1F_EventScript_2718DE
end
diff --git a/data/maps/RustboroCity_PokemonCenter_2F/scripts.inc b/data/maps/RustboroCity_PokemonCenter_2F/scripts.inc
index fac3cb059..3c62abc4a 100644
--- a/data/maps/RustboroCity_PokemonCenter_2F/scripts.inc
+++ b/data/maps/RustboroCity_PokemonCenter_2F/scripts.inc
@@ -2,7 +2,7 @@ RustboroCity_PokemonCenter_2F_MapScripts:: @ 8214EDE
map_script MAP_SCRIPT_ON_FRAME_TABLE, RustboroCity_PokemonCenter_2F_MapScript2_276C3B
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, RustboroCity_PokemonCenter_2F_MapScript2_276B6C
map_script MAP_SCRIPT_ON_LOAD, RustboroCity_PokemonCenter_2F_MapScript1_276BBE
- map_script MAP_SCRIPT_ON_TRANSITION, RustboroCity_PokemonCenter_2F_MapScript1_276ACF
+ map_script MAP_SCRIPT_ON_TRANSITION, PokemonCenter_2F_OnTransition
.byte 0
RustboroCity_PokemonCenter_2F_EventScript_214EF3:: @ 8214EF3
diff --git a/data/maps/RusturfTunnel/map.json b/data/maps/RusturfTunnel/map.json
index 9fc378729..bd5c8206d 100644
--- a/data/maps/RusturfTunnel/map.json
+++ b/data/maps/RusturfTunnel/map.json
@@ -37,7 +37,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "RusturfTunnel_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_HIDE_RUSTURF_TUNNEL_ROCK_1"
},
{
@@ -115,7 +115,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "RusturfTunnel_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_HIDE_RUSTURF_TUNNEL_ROCK_2"
},
{
diff --git a/data/maps/RusturfTunnel/scripts.inc b/data/maps/RusturfTunnel/scripts.inc
index 8e7e2342e..e489580c9 100644
--- a/data/maps/RusturfTunnel/scripts.inc
+++ b/data/maps/RusturfTunnel/scripts.inc
@@ -1,5 +1,5 @@
RusturfTunnel_MapScripts:: @ 822CE27
- map_script MAP_SCRIPT_ON_TRANSITION, RusturfTunnel_MapScript1_22CE44
+ map_script MAP_SCRIPT_ON_TRANSITION, RusturfTunnel_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, RusturfTunnel_MapScript2_22CE32
.byte 0
@@ -8,7 +8,7 @@ RusturfTunnel_MapScript2_22CE32: @ 822CE32
map_script_2 VAR_RUSTURF_TUNNEL_STATE, 5, RusturfTunnel_EventScript_22CEAE
.2byte 0
-RusturfTunnel_MapScript1_22CE44: @ 822CE44
+RusturfTunnel_OnTransition: @ 822CE44
compare VAR_RUSTURF_TUNNEL_STATE, 2
call_if_eq RusturfTunnel_EventScript_22CE50
end
diff --git a/data/maps/SafariZone_North/map.json b/data/maps/SafariZone_North/map.json
index 967e55f3e..0dafeb180 100644
--- a/data/maps/SafariZone_North/map.json
+++ b/data/maps/SafariZone_North/map.json
@@ -66,7 +66,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SafariZone_North_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_11"
},
{
@@ -79,7 +79,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SafariZone_North_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_12"
},
{
@@ -92,7 +92,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SafariZone_North_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_13"
},
{
@@ -105,7 +105,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SafariZone_North_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_14"
},
{
@@ -118,7 +118,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SafariZone_North_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_15"
},
{
@@ -131,7 +131,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SafariZone_North_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_16"
},
{
diff --git a/data/maps/SafariZone_Northeast/map.json b/data/maps/SafariZone_Northeast/map.json
index 94c2c268f..798563263 100644
--- a/data/maps/SafariZone_Northeast/map.json
+++ b/data/maps/SafariZone_Northeast/map.json
@@ -61,7 +61,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SafariZone_Northeast_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_15"
},
{
@@ -87,7 +87,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SafariZone_Northeast_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_13"
},
{
@@ -100,7 +100,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SafariZone_Northeast_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_11"
},
{
@@ -113,7 +113,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SafariZone_Northeast_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_14"
},
{
@@ -126,7 +126,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SafariZone_Northeast_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_12"
},
{
diff --git a/data/maps/SafariZone_South/scripts.inc b/data/maps/SafariZone_South/scripts.inc
index 75ec95d33..45273de12 100644
--- a/data/maps/SafariZone_South/scripts.inc
+++ b/data/maps/SafariZone_South/scripts.inc
@@ -1,5 +1,5 @@
SafariZone_South_MapScripts:: @ 823D279
- map_script MAP_SCRIPT_ON_TRANSITION, SafariZone_South_MapScript1_23D2B1
+ map_script MAP_SCRIPT_ON_TRANSITION, SafariZone_South_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, SafariZone_South_MapScript2_23D284
.byte 0
@@ -18,7 +18,7 @@ SafariZone_South_EventScript_23D28E:: @ 823D28E
releaseall
end
-SafariZone_South_MapScript1_23D2B1: @ 823D2B1
+SafariZone_South_OnTransition: @ 823D2B1
compare VAR_SAFARI_ZONE_STATE, 2
call_if_eq SafariZone_South_EventScript_23D2BD
end
diff --git a/data/maps/SeafloorCavern_Room1/map.json b/data/maps/SeafloorCavern_Room1/map.json
index bcac09256..88db72b4a 100644
--- a/data/maps/SeafloorCavern_Room1/map.json
+++ b/data/maps/SeafloorCavern_Room1/map.json
@@ -24,7 +24,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room1_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_11"
},
{
@@ -37,7 +37,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room1_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_12"
},
{
@@ -50,7 +50,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room1_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_13"
},
{
diff --git a/data/maps/SeafloorCavern_Room2/map.json b/data/maps/SeafloorCavern_Room2/map.json
index 3e5d6b127..f402b50d0 100644
--- a/data/maps/SeafloorCavern_Room2/map.json
+++ b/data/maps/SeafloorCavern_Room2/map.json
@@ -24,7 +24,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room2_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_12"
},
{
@@ -37,7 +37,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room2_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_13"
},
{
@@ -50,7 +50,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room2_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_11"
},
{
@@ -63,7 +63,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room2_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_15"
},
{
@@ -76,7 +76,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room2_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_16"
},
{
@@ -89,7 +89,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room2_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_18"
},
{
@@ -102,7 +102,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room2_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_19"
},
{
@@ -115,7 +115,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room2_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_17"
}
],
diff --git a/data/maps/SeafloorCavern_Room3/map.json b/data/maps/SeafloorCavern_Room3/map.json
index c7a90b42d..2a33c44cf 100644
--- a/data/maps/SeafloorCavern_Room3/map.json
+++ b/data/maps/SeafloorCavern_Room3/map.json
@@ -24,7 +24,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room3_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_12"
},
{
@@ -37,7 +37,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room3_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_14"
},
{
@@ -50,7 +50,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room3_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_15"
},
{
@@ -63,7 +63,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room3_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_16"
},
{
@@ -76,7 +76,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room3_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_17"
},
{
@@ -89,7 +89,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room3_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_18"
},
{
@@ -102,7 +102,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room3_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_19"
},
{
diff --git a/data/maps/SeafloorCavern_Room5/map.json b/data/maps/SeafloorCavern_Room5/map.json
index 975fc6a98..b9c85c9bf 100644
--- a/data/maps/SeafloorCavern_Room5/map.json
+++ b/data/maps/SeafloorCavern_Room5/map.json
@@ -24,7 +24,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room5_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_11"
},
{
@@ -37,7 +37,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room5_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_12"
},
{
@@ -50,7 +50,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room5_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_13"
},
{
@@ -63,7 +63,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room5_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_15"
},
{
@@ -76,7 +76,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room5_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_16"
},
{
@@ -89,7 +89,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room5_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_14"
}
],
diff --git a/data/maps/SeafloorCavern_Room8/map.json b/data/maps/SeafloorCavern_Room8/map.json
index 88ea40e3a..c1d3b6cc2 100644
--- a/data/maps/SeafloorCavern_Room8/map.json
+++ b/data/maps/SeafloorCavern_Room8/map.json
@@ -24,7 +24,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room8_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_11"
},
{
@@ -37,7 +37,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room8_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_12"
},
{
@@ -50,7 +50,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room8_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_13"
},
{
@@ -63,7 +63,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room8_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_14"
},
{
@@ -76,7 +76,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room8_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_15"
},
{
@@ -89,7 +89,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room8_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_16"
},
{
@@ -102,7 +102,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room8_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_17"
},
{
@@ -115,7 +115,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room8_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_18"
},
{
@@ -128,7 +128,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room8_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_19"
},
{
@@ -141,7 +141,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room8_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_1A"
},
{
@@ -154,7 +154,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room8_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_1B"
},
{
@@ -167,7 +167,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "SeafloorCavern_Room8_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_1C"
}
],
diff --git a/data/maps/SeafloorCavern_Room9/scripts.inc b/data/maps/SeafloorCavern_Room9/scripts.inc
index 4c630a1d4..b5e5034e7 100644
--- a/data/maps/SeafloorCavern_Room9/scripts.inc
+++ b/data/maps/SeafloorCavern_Room9/scripts.inc
@@ -40,8 +40,8 @@ SeafloorCavern_Room9_EventScript_234DC9:: @ 8234DC9
setfieldeffectargument 0, 16
setfieldeffectargument 1, 42
setfieldeffectargument 2, 0
- dofieldeffect 54
- waitfieldeffect 54
+ dofieldeffect FLDEFF_SPARKLE
+ waitfieldeffect FLDEFF_SPARKLE
closemessage
setvar VAR_RESULT, 0
playfanfare MUS_ME_TAMA
diff --git a/data/maps/SecretBase_YellowCave4/scripts.inc b/data/maps/SecretBase_YellowCave4/scripts.inc
index 805d7e299..c05ea13c0 100644
--- a/data/maps/SecretBase_YellowCave4/scripts.inc
+++ b/data/maps/SecretBase_YellowCave4/scripts.inc
@@ -1,6 +1,6 @@
SecretBase_YellowCave4_MapScripts:: @ 823B483
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, SecretBase_RedCave1_MapScript2_23B498
- map_script MAP_SCRIPT_ON_TRANSITION, SecretBase_RedCave1_MapScript1_23B4A2
+ map_script MAP_SCRIPT_ON_TRANSITION, SecretBase_RedCave1_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, SecretBase_RedCave1_MapScript2_23B4AE
map_script MAP_SCRIPT_ON_RESUME, SecretBase_RedCave1_MapScript1_23B4B8
.byte 0
@@ -9,9 +9,9 @@ SecretBase_RedCave1_MapScript2_23B498: @ 823B498
map_script_2 VAR_SECRET_BASE_INITIALIZED, 0, EventScript_275D0C
.2byte 0
-SecretBase_RedCave1_MapScript1_23B4A2: @ 823B4A2
+SecretBase_RedCave1_OnTransition: @ 823B4A2
call SecretBase_RedCave1_EventScript_275CE1
- special sub_80E95D4
+ special SetSecretBaseOwnerGfxId
special sub_80EB1AC
end
diff --git a/data/maps/ShoalCave_LowTideEntranceRoom/scripts.inc b/data/maps/ShoalCave_LowTideEntranceRoom/scripts.inc
index 218cabc67..13d8f92d9 100644
--- a/data/maps/ShoalCave_LowTideEntranceRoom/scripts.inc
+++ b/data/maps/ShoalCave_LowTideEntranceRoom/scripts.inc
@@ -1,8 +1,8 @@
ShoalCave_LowTideEntranceRoom_MapScripts:: @ 8236DBA
- map_script MAP_SCRIPT_ON_TRANSITION, ShoalCave_LowTideEntranceRoom_MapScript1_236DC0
+ map_script MAP_SCRIPT_ON_TRANSITION, ShoalCave_LowTideEntranceRoom_OnTransition
.byte 0
-ShoalCave_LowTideEntranceRoom_MapScript1_236DC0: @ 8236DC0
+ShoalCave_LowTideEntranceRoom_OnTransition: @ 8236DC0
special UpdateShoalTideFlag
goto_if_set FLAG_SYS_SHOAL_TIDE, ShoalCave_LowTideEntranceRoom_EventScript_236DD1
goto ShoalCave_LowTideEntranceRoom_EventScript_236DD5
diff --git a/data/maps/ShoalCave_LowTideInnerRoom/scripts.inc b/data/maps/ShoalCave_LowTideInnerRoom/scripts.inc
index f1a29b28a..300d06317 100644
--- a/data/maps/ShoalCave_LowTideInnerRoom/scripts.inc
+++ b/data/maps/ShoalCave_LowTideInnerRoom/scripts.inc
@@ -1,9 +1,9 @@
ShoalCave_LowTideInnerRoom_MapScripts:: @ 8236EF5
map_script MAP_SCRIPT_ON_LOAD, ShoalCave_LowTideInnerRoom_MapScript1_236F16
- map_script MAP_SCRIPT_ON_TRANSITION, ShoalCave_LowTideInnerRoom_MapScript1_236F00
+ map_script MAP_SCRIPT_ON_TRANSITION, ShoalCave_LowTideInnerRoom_OnTransition
.byte 0
-ShoalCave_LowTideInnerRoom_MapScript1_236F00: @ 8236F00
+ShoalCave_LowTideInnerRoom_OnTransition: @ 8236F00
goto_if_set FLAG_SYS_SHOAL_TIDE, ShoalCave_LowTideInnerRoom_EventScript_236F0E
goto ShoalCave_LowTideInnerRoom_EventScript_236F12
diff --git a/data/maps/ShoalCave_LowTideLowerRoom/map.json b/data/maps/ShoalCave_LowTideLowerRoom/map.json
index 92f0fd11a..fad5ddc00 100644
--- a/data/maps/ShoalCave_LowTideLowerRoom/map.json
+++ b/data/maps/ShoalCave_LowTideLowerRoom/map.json
@@ -24,7 +24,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "ShoalCave_LowTideLowerRoom_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_11"
},
{
diff --git a/data/maps/SkyPillar_1F/scripts.inc b/data/maps/SkyPillar_1F/scripts.inc
index 18ec43ad6..d60feb155 100644
--- a/data/maps/SkyPillar_1F/scripts.inc
+++ b/data/maps/SkyPillar_1F/scripts.inc
@@ -1,13 +1,13 @@
SkyPillar_1F_MapScripts:: @ 8239615
- map_script MAP_SCRIPT_ON_TRANSITION, SkyPillar_1F_MapScript1_23961B
+ map_script MAP_SCRIPT_ON_TRANSITION, SkyPillar_1F_OnTransition
.byte 0
-SkyPillar_1F_MapScript1_23961B: @ 823961B
+SkyPillar_1F_OnTransition: @ 823961B
compare VAR_SKY_PILLAR_STATE, 2
- call_if_lt SkyPillar_1F_EventScript_239627
+ call_if_lt SkyPillar_1F_EventScript_CleanFloor
end
-SkyPillar_1F_EventScript_239627:: @ 8239627
+SkyPillar_1F_EventScript_CleanFloor:: @ 8239627
setmaplayoutindex LAYOUT_SKY_PILLAR_1F_CLEAN
return
diff --git a/data/maps/SkyPillar_2F/scripts.inc b/data/maps/SkyPillar_2F/scripts.inc
index 9059bd246..dcbff3642 100644
--- a/data/maps/SkyPillar_2F/scripts.inc
+++ b/data/maps/SkyPillar_2F/scripts.inc
@@ -1,16 +1,16 @@
SkyPillar_2F_MapScripts:: @ 823962B
map_script MAP_SCRIPT_ON_FRAME_TABLE, SkyPillar_2F_MapScript2_2A8327
- map_script MAP_SCRIPT_ON_TRANSITION, SkyPillar_2F_MapScript1_23963B
+ map_script MAP_SCRIPT_ON_TRANSITION, SkyPillar_2F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, SkyPillar_2F_MapScript1_239650
.byte 0
-SkyPillar_2F_MapScript1_23963B: @ 823963B
+SkyPillar_2F_OnTransition: @ 823963B
compare VAR_SKY_PILLAR_STATE, 2
- call_if_lt SkyPillar_2F_EventScript_23964C
+ call_if_lt SkyPillar_2F_EventScript_CleanFloor
copyvar VAR_ICE_STEP_COUNT, 0x1
end
-SkyPillar_2F_EventScript_23964C:: @ 823964C
+SkyPillar_2F_EventScript_CleanFloor:: @ 823964C
setmaplayoutindex LAYOUT_SKY_PILLAR_2F_CLEAN
return
diff --git a/data/maps/SkyPillar_3F/scripts.inc b/data/maps/SkyPillar_3F/scripts.inc
index ba6a5128d..d55ac27af 100644
--- a/data/maps/SkyPillar_3F/scripts.inc
+++ b/data/maps/SkyPillar_3F/scripts.inc
@@ -1,13 +1,13 @@
SkyPillar_3F_MapScripts:: @ 823965B
- map_script MAP_SCRIPT_ON_TRANSITION, SkyPillar_3F_MapScript1_239661
+ map_script MAP_SCRIPT_ON_TRANSITION, SkyPillar_3F_OnTransition
.byte 0
-SkyPillar_3F_MapScript1_239661: @ 8239661
+SkyPillar_3F_OnTransition: @ 8239661
compare VAR_SKY_PILLAR_STATE, 2
- call_if_lt SkyPillar_3F_EventScript_23966D
+ call_if_lt SkyPillar_3F_EventScript_CleanFloor
end
-SkyPillar_3F_EventScript_23966D:: @ 823966D
+SkyPillar_3F_EventScript_CleanFloor:: @ 823966D
setmaplayoutindex LAYOUT_SKY_PILLAR_3F_CLEAN
return
diff --git a/data/maps/SkyPillar_4F/scripts.inc b/data/maps/SkyPillar_4F/scripts.inc
index 355530fdc..413f56521 100644
--- a/data/maps/SkyPillar_4F/scripts.inc
+++ b/data/maps/SkyPillar_4F/scripts.inc
@@ -1,16 +1,16 @@
SkyPillar_4F_MapScripts:: @ 8239671
map_script MAP_SCRIPT_ON_FRAME_TABLE, SkyPillar_4F_MapScript2_2A8327
- map_script MAP_SCRIPT_ON_TRANSITION, SkyPillar_4F_MapScript1_239681
+ map_script MAP_SCRIPT_ON_TRANSITION, SkyPillar_4F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, SkyPillar_4F_MapScript1_239696
.byte 0
-SkyPillar_4F_MapScript1_239681: @ 8239681
+SkyPillar_4F_OnTransition: @ 8239681
compare VAR_SKY_PILLAR_STATE, 2
- call_if_lt SkyPillar_4F_EventScript_239692
+ call_if_lt SkyPillar_4F_EventScript_CleanFloor
copyvar VAR_ICE_STEP_COUNT, 0x1
end
-SkyPillar_4F_EventScript_239692:: @ 8239692
+SkyPillar_4F_EventScript_CleanFloor:: @ 8239692
setmaplayoutindex LAYOUT_SKY_PILLAR_4F_CLEAN
return
diff --git a/data/maps/SkyPillar_5F/scripts.inc b/data/maps/SkyPillar_5F/scripts.inc
index ba35e16f2..2ba0c0db8 100644
--- a/data/maps/SkyPillar_5F/scripts.inc
+++ b/data/maps/SkyPillar_5F/scripts.inc
@@ -1,13 +1,13 @@
SkyPillar_5F_MapScripts:: @ 82396A2
- map_script MAP_SCRIPT_ON_TRANSITION, SkyPillar_5F_MapScript1_2396A8
+ map_script MAP_SCRIPT_ON_TRANSITION, SkyPillar_5F_OnTransition
.byte 0
-SkyPillar_5F_MapScript1_2396A8: @ 82396A8
+SkyPillar_5F_OnTransition: @ 82396A8
compare VAR_SKY_PILLAR_STATE, 2
- call_if_lt SkyPillar_5F_EventScript_2396B4
+ call_if_lt SkyPillar_5F_EventScript_CleanFloor
return
-SkyPillar_5F_EventScript_2396B4:: @ 82396B4
+SkyPillar_5F_EventScript_CleanFloor:: @ 82396B4
setmaplayoutindex LAYOUT_SKY_PILLAR_5F_CLEAN
return
diff --git a/data/maps/SkyPillar_Outside/scripts.inc b/data/maps/SkyPillar_Outside/scripts.inc
index c4769c990..ffc581fd4 100644
--- a/data/maps/SkyPillar_Outside/scripts.inc
+++ b/data/maps/SkyPillar_Outside/scripts.inc
@@ -1,10 +1,10 @@
SkyPillar_Outside_MapScripts:: @ 82392A8
- map_script MAP_SCRIPT_ON_TRANSITION, SkyPillar_Outside_MapScript1_2392B8
+ map_script MAP_SCRIPT_ON_TRANSITION, SkyPillar_Outside_OnTransition
map_script MAP_SCRIPT_ON_LOAD, SkyPillar_Outside_MapScript1_2392DD
map_script MAP_SCRIPT_ON_FRAME_TABLE, SkyPillar_Outside_MapScript2_2392FA
.byte 0
-SkyPillar_Outside_MapScript1_2392B8: @ 82392B8
+SkyPillar_Outside_OnTransition: @ 82392B8
compare VAR_RAYQUAZA_STATE, 3
call_if_eq SkyPillar_Outside_EventScript_2392CF
compare VAR_RAYQUAZA_STATE, 4
diff --git a/data/maps/SkyPillar_Top/scripts.inc b/data/maps/SkyPillar_Top/scripts.inc
index dccdac1b4..6afbbd58c 100644
--- a/data/maps/SkyPillar_Top/scripts.inc
+++ b/data/maps/SkyPillar_Top/scripts.inc
@@ -1,6 +1,6 @@
SkyPillar_Top_MapScripts:: @ 82396B8
map_script MAP_SCRIPT_ON_RESUME, SkyPillar_Top_MapScript1_2396C8
- map_script MAP_SCRIPT_ON_TRANSITION, SkyPillar_Top_MapScript1_2396E6
+ map_script MAP_SCRIPT_ON_TRANSITION, SkyPillar_Top_OnTransition
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, SkyPillar_Top_MapScript2_239713
.byte 0
@@ -15,7 +15,7 @@ SkyPillar_Top_EventScript_2396D2:: @ 82396D2
removeobject VAR_LAST_TALKED
return
-SkyPillar_Top_MapScript1_2396E6: @ 82396E6
+SkyPillar_Top_OnTransition: @ 82396E6
compare VAR_SKY_PILLAR_STATE, 2
call_if_lt SkyPillar_Top_EventScript_2396FD
compare VAR_SKY_PILLAR_STATE, 2
diff --git a/data/maps/SlateportCity/scripts.inc b/data/maps/SlateportCity/scripts.inc
index 88bcb2e6c..f537694dd 100644
--- a/data/maps/SlateportCity/scripts.inc
+++ b/data/maps/SlateportCity/scripts.inc
@@ -1,9 +1,9 @@
SlateportCity_MapScripts:: @ 81DCC61
- map_script MAP_SCRIPT_ON_TRANSITION, SlateportCity_MapScript1_1DCC6C
+ map_script MAP_SCRIPT_ON_TRANSITION, SlateportCity_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, SlateportCity_MapScript2_1DCD12
.byte 0
-SlateportCity_MapScript1_1DCC6C: @ 81DCC6C
+SlateportCity_OnTransition: @ 81DCC6C
setvar VAR_SLATEPORT_MUSEUM_1F_STATE, 0
call SlateportCity_EventScript_1DCC8D
compare VAR_SLATEPORT_STATE, 1
@@ -491,17 +491,17 @@ SlateportCity_EventScript_1DD16A:: @ 81DD16A
faceplayer
message gUnknown_08272A21
waitmessage
- pokemartdecoration SlateportCity_PokemartDecor_1DD184
+ pokemartdecoration SlateportCity_PokemartDecor_Dolls
msgbox gUnknown_08272A3F, MSGBOX_DEFAULT
release
end
.align 2
-SlateportCity_PokemartDecor_1DD184: @ 81DD184
- .2byte 95
- .2byte 78
- .2byte 96
- .2byte 0
+SlateportCity_PokemartDecor_Dolls: @ 81DD184
+ .2byte DECOR_AZURILL_DOLL
+ .2byte DECOR_MARILL_DOLL
+ .2byte DECOR_SKITTY_DOLL
+ .2byte DECOR_NONE
release
end
@@ -522,21 +522,21 @@ SlateportCity_EventScript_1DD198:: @ 81DD198
end
SlateportCity_PokemartDecor_1DD1B8: @ 81DD1B8
- .2byte 25
- .2byte 27
- .2byte 26
- .2byte 28
- .2byte 29
- .2byte 30
- .2byte 51
- .2byte 52
- .2byte 53
- .2byte 54
- .2byte 55
- .2byte 56
- .2byte 57
- .2byte 58
- .2byte 0
+ .2byte DECOR_RED_BRICK
+ .2byte DECOR_BLUE_BRICK
+ .2byte DECOR_YELLOW_BRICK
+ .2byte DECOR_RED_BALLOON
+ .2byte DECOR_BLUE_BALLOON
+ .2byte DECOR_YELLOW_BALLOON
+ .2byte DECOR_C_LOW_NOTE_MAT
+ .2byte DECOR_D_NOTE_MAT
+ .2byte DECOR_E_NOTE_MAT
+ .2byte DECOR_F_NOTE_MAT
+ .2byte DECOR_G_NOTE_MAT
+ .2byte DECOR_A_NOTE_MAT
+ .2byte DECOR_B_NOTE_MAT
+ .2byte DECOR_C_HIGH_NOTE_MAT
+ .2byte DECOR_NONE
release
end
@@ -1372,4 +1372,4 @@ SlateportCity_Text_1DF28C: @ 81DF28C
.string "That's a really great idea!\p"
.string "After all, a tough TRAINER is\n"
.string "the perfect fit for the BATTLE TENT!\p"
- .string "Give it your best effort!$"
+ .string "Give it your best effort!$" \ No newline at end of file
diff --git a/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc b/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc
index a5e2a493c..e178155a9 100644
--- a/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc
+++ b/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc
@@ -1,10 +1,10 @@
SlateportCity_BattleTentBattleRoom_MapScripts:: @ 8209960
- map_script MAP_SCRIPT_ON_TRANSITION, SlateportCity_BattleTentBattleRoom_MapScript1_209970
+ map_script MAP_SCRIPT_ON_TRANSITION, SlateportCity_BattleTentBattleRoom_OnTransition
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, SlateportCity_BattleTentBattleRoom_MapScript2_20999A
map_script MAP_SCRIPT_ON_FRAME_TABLE, SlateportCity_BattleTentBattleRoom_MapScript2_2099B4
.byte 0
-SlateportCity_BattleTentBattleRoom_MapScript1_209970: @ 8209970
+SlateportCity_BattleTentBattleRoom_OnTransition: @ 8209970
call SlateportCity_BattleTentBattleRoom_EventScript_209976
end
diff --git a/data/maps/SlateportCity_Harbor/scripts.inc b/data/maps/SlateportCity_Harbor/scripts.inc
index 8f9f77e97..32fa9fa5d 100644
--- a/data/maps/SlateportCity_Harbor/scripts.inc
+++ b/data/maps/SlateportCity_Harbor/scripts.inc
@@ -1,8 +1,8 @@
SlateportCity_Harbor_MapScripts:: @ 820C97D
- map_script MAP_SCRIPT_ON_TRANSITION, SlateportCity_Harbor_MapScript1_20C983
+ map_script MAP_SCRIPT_ON_TRANSITION, SlateportCity_Harbor_OnTransition
.byte 0
-SlateportCity_Harbor_MapScript1_20C983: @ 820C983
+SlateportCity_Harbor_OnTransition: @ 820C983
setescapewarp MAP_SLATEPORT_CITY, 255, 28, 13
setvar VAR_TEMP_1, 0
compare VAR_SLATEPORT_HARBOR_STATE, 1
diff --git a/data/maps/SlateportCity_PokemonCenter_1F/scripts.inc b/data/maps/SlateportCity_PokemonCenter_1F/scripts.inc
index 8c1f87e63..4c6b3ec7f 100644
--- a/data/maps/SlateportCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/SlateportCity_PokemonCenter_1F/scripts.inc
@@ -1,9 +1,9 @@
SlateportCity_PokemonCenter_1F_MapScripts:: @ 820DABF
- map_script MAP_SCRIPT_ON_TRANSITION, SlateportCity_PokemonCenter_1F_MapScript1_20DACA
+ map_script MAP_SCRIPT_ON_TRANSITION, SlateportCity_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, SlateportCity_PokemonCenter_1F_MapScript1_277C30
.byte 0
-SlateportCity_PokemonCenter_1F_MapScript1_20DACA: @ 820DACA
+SlateportCity_PokemonCenter_1F_OnTransition: @ 820DACA
setrespawn HEAL_LOCATION_SLATEPORT_CITY
call SlateportCity_PokemonCenter_1F_EventScript_2718DE
end
diff --git a/data/maps/SlateportCity_PokemonCenter_2F/scripts.inc b/data/maps/SlateportCity_PokemonCenter_2F/scripts.inc
index 1ddbcc0be..a9d48f43d 100644
--- a/data/maps/SlateportCity_PokemonCenter_2F/scripts.inc
+++ b/data/maps/SlateportCity_PokemonCenter_2F/scripts.inc
@@ -2,7 +2,7 @@ SlateportCity_PokemonCenter_2F_MapScripts:: @ 820DC21
map_script MAP_SCRIPT_ON_FRAME_TABLE, SlateportCity_PokemonCenter_2F_MapScript2_276C3B
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, SlateportCity_PokemonCenter_2F_MapScript2_276B6C
map_script MAP_SCRIPT_ON_LOAD, SlateportCity_PokemonCenter_2F_MapScript1_276BBE
- map_script MAP_SCRIPT_ON_TRANSITION, SlateportCity_PokemonCenter_2F_MapScript1_276ACF
+ map_script MAP_SCRIPT_ON_TRANSITION, PokemonCenter_2F_OnTransition
.byte 0
SlateportCity_PokemonCenter_2F_EventScript_20DC36:: @ 820DC36
diff --git a/data/maps/SootopolisCity/scripts.inc b/data/maps/SootopolisCity/scripts.inc
index ad72120f9..afad44536 100644
--- a/data/maps/SootopolisCity/scripts.inc
+++ b/data/maps/SootopolisCity/scripts.inc
@@ -1,6 +1,6 @@
SootopolisCity_MapScripts:: @ 81E565C
map_script MAP_SCRIPT_ON_LOAD, SootopolisCity_MapScript1_1E5676
- map_script MAP_SCRIPT_ON_TRANSITION, SootopolisCity_MapScript1_1E56EF
+ map_script MAP_SCRIPT_ON_TRANSITION, SootopolisCity_OnTransition
map_script MAP_SCRIPT_ON_RESUME, SootopolisCity_MapScript1_1E590B
map_script MAP_SCRIPT_ON_FRAME_TABLE, SootopolisCity_MapScript2_1E5914
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, SootopolisCity_MapScript2_1E58DB
@@ -31,7 +31,7 @@ SootopolisCity_EventScript_1E56E5:: @ 81E56E5
setmetatile 31, 32, 592, 1
return
-SootopolisCity_MapScript1_1E56EF: @ 81E56EF
+SootopolisCity_OnTransition: @ 81E56EF
setflag FLAG_VISITED_SOOTOPOLIS_CITY
compare VAR_RAYQUAZA_STATE, 1
call_if_eq SootopolisCity_EventScript_1E5781
diff --git a/data/maps/SootopolisCity_Gym_1F/scripts.inc b/data/maps/SootopolisCity_Gym_1F/scripts.inc
index b9abdf656..e9b5d327f 100644
--- a/data/maps/SootopolisCity_Gym_1F/scripts.inc
+++ b/data/maps/SootopolisCity_Gym_1F/scripts.inc
@@ -2,10 +2,10 @@ SootopolisCity_Gym_1F_MapScripts:: @ 8224E4C
map_script MAP_SCRIPT_ON_FRAME_TABLE, SootopolisCity_Gym_1F_MapScript2_224ECB
map_script MAP_SCRIPT_ON_RESUME, SootopolisCity_Gym_1F_MapScript1_224E67
map_script MAP_SCRIPT_ON_LOAD, SootopolisCity_Gym_1F_MapScript1_224E6A
- map_script MAP_SCRIPT_ON_TRANSITION, SootopolisCity_Gym_1F_MapScript1_224E61
+ map_script MAP_SCRIPT_ON_TRANSITION, SootopolisCity_Gym_1F_OnTransition
.byte 0
-SootopolisCity_Gym_1F_MapScript1_224E61: @ 8224E61
+SootopolisCity_Gym_1F_OnTransition: @ 8224E61
setvar VAR_ICE_STEP_COUNT, 1
end
diff --git a/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc b/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc
index c7ceb0a4f..5f2352645 100644
--- a/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc
+++ b/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc
@@ -1,9 +1,9 @@
SootopolisCity_MysteryEventsHouse_1F_MapScripts:: @ 8227953
- map_script MAP_SCRIPT_ON_TRANSITION, SootopolisCity_MysteryEventsHouse_1F_MapScript1_22795E
+ map_script MAP_SCRIPT_ON_TRANSITION, SootopolisCity_MysteryEventsHouse_1F_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, SootopolisCity_MysteryEventsHouse_1F_MapScript2_22799D
.byte 0
-SootopolisCity_MysteryEventsHouse_1F_MapScript1_22795E: @ 822795E
+SootopolisCity_MysteryEventsHouse_1F_OnTransition: @ 822795E
setvar VAR_0x8004, 16
special CallFrontierUtilFunc
compare VAR_RESULT, 0
diff --git a/data/maps/SootopolisCity_MysteryEventsHouse_B1F/scripts.inc b/data/maps/SootopolisCity_MysteryEventsHouse_B1F/scripts.inc
index 374aa6270..16533649c 100644
--- a/data/maps/SootopolisCity_MysteryEventsHouse_B1F/scripts.inc
+++ b/data/maps/SootopolisCity_MysteryEventsHouse_B1F/scripts.inc
@@ -1,9 +1,9 @@
SootopolisCity_MysteryEventsHouse_B1F_MapScripts:: @ 8227E4F
- map_script MAP_SCRIPT_ON_TRANSITION, SootopolisCity_MysteryEventsHouse_B1F_MapScript1_227E5A
+ map_script MAP_SCRIPT_ON_TRANSITION, SootopolisCity_MysteryEventsHouse_B1F_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, SootopolisCity_MysteryEventsHouse_B1F_MapScript2_227E5E
.byte 0
-SootopolisCity_MysteryEventsHouse_B1F_MapScript1_227E5A: @ 8227E5A
+SootopolisCity_MysteryEventsHouse_B1F_OnTransition: @ 8227E5A
special SetEReaderTrainerGfxId
end
diff --git a/data/maps/SootopolisCity_PokemonCenter_1F/scripts.inc b/data/maps/SootopolisCity_PokemonCenter_1F/scripts.inc
index 97cb2d4d7..d3dfb91b0 100644
--- a/data/maps/SootopolisCity_PokemonCenter_1F/scripts.inc
+++ b/data/maps/SootopolisCity_PokemonCenter_1F/scripts.inc
@@ -1,9 +1,9 @@
SootopolisCity_PokemonCenter_1F_MapScripts:: @ 82264F1
- map_script MAP_SCRIPT_ON_TRANSITION, SootopolisCity_PokemonCenter_1F_MapScript1_2264FC
+ map_script MAP_SCRIPT_ON_TRANSITION, SootopolisCity_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, SootopolisCity_PokemonCenter_1F_MapScript1_277C30
.byte 0
-SootopolisCity_PokemonCenter_1F_MapScript1_2264FC: @ 82264FC
+SootopolisCity_PokemonCenter_1F_OnTransition: @ 82264FC
setrespawn HEAL_LOCATION_SOOTOPOLIS_CITY
end
diff --git a/data/maps/SootopolisCity_PokemonCenter_2F/scripts.inc b/data/maps/SootopolisCity_PokemonCenter_2F/scripts.inc
index 275fe3046..4c9fce912 100644
--- a/data/maps/SootopolisCity_PokemonCenter_2F/scripts.inc
+++ b/data/maps/SootopolisCity_PokemonCenter_2F/scripts.inc
@@ -2,7 +2,7 @@ SootopolisCity_PokemonCenter_2F_MapScripts:: @ 822676D
map_script MAP_SCRIPT_ON_FRAME_TABLE, SootopolisCity_PokemonCenter_2F_MapScript2_276C3B
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, SootopolisCity_PokemonCenter_2F_MapScript2_276B6C
map_script MAP_SCRIPT_ON_LOAD, SootopolisCity_PokemonCenter_2F_MapScript1_276BBE
- map_script MAP_SCRIPT_ON_TRANSITION, SootopolisCity_PokemonCenter_2F_MapScript1_276ACF
+ map_script MAP_SCRIPT_ON_TRANSITION, PokemonCenter_2F_OnTransition
.byte 0
SootopolisCity_PokemonCenter_2F_EventScript_226782:: @ 8226782
diff --git a/data/maps/SouthernIsland_Interior/scripts.inc b/data/maps/SouthernIsland_Interior/scripts.inc
index 958c5f546..a87b59079 100644
--- a/data/maps/SouthernIsland_Interior/scripts.inc
+++ b/data/maps/SouthernIsland_Interior/scripts.inc
@@ -1,6 +1,6 @@
SouthernIsland_Interior_MapScripts:: @ 8242A45
map_script MAP_SCRIPT_ON_RESUME, SouthernIsland_Interior_MapScript1_242A50
- map_script MAP_SCRIPT_ON_TRANSITION, SouthernIsland_Interior_MapScript1_242A6E
+ map_script MAP_SCRIPT_ON_TRANSITION, SouthernIsland_Interior_OnTransition
.byte 0
SouthernIsland_Interior_MapScript1_242A50: @ 8242A50
@@ -14,7 +14,7 @@ SouthernIsland_Interior_EventScript_242A5A:: @ 8242A5A
removeobject 2
return
-SouthernIsland_Interior_MapScript1_242A6E: @ 8242A6E
+SouthernIsland_Interior_OnTransition: @ 8242A6E
compare VAR_ROAMER_POKEMON, 0
call_if_eq SouthernIsland_Interior_EventScript_242A8A
compare VAR_ROAMER_POKEMON, 0
diff --git a/data/maps/TerraCave_End/scripts.inc b/data/maps/TerraCave_End/scripts.inc
index b5a664a76..79b209e8a 100644
--- a/data/maps/TerraCave_End/scripts.inc
+++ b/data/maps/TerraCave_End/scripts.inc
@@ -1,6 +1,6 @@
TerraCave_End_MapScripts:: @ 823B0B0
map_script MAP_SCRIPT_ON_RESUME, TerraCave_End_MapScript1_23B0BB
- map_script MAP_SCRIPT_ON_TRANSITION, TerraCave_End_MapScript1_23B0D9
+ map_script MAP_SCRIPT_ON_TRANSITION, TerraCave_End_OnTransition
.byte 0
TerraCave_End_MapScript1_23B0BB: @ 823B0BB
@@ -14,7 +14,7 @@ TerraCave_End_EventScript_23B0C5:: @ 823B0C5
removeobject 1
return
-TerraCave_End_MapScript1_23B0D9: @ 823B0D9
+TerraCave_End_OnTransition: @ 823B0D9
call_if_unset FLAG_DEFEATED_GROUDON, TerraCave_End_EventScript_23B0E3
end
diff --git a/data/maps/TerraCave_Entrance/scripts.inc b/data/maps/TerraCave_Entrance/scripts.inc
index b9e3e5910..70aa9cdfa 100644
--- a/data/maps/TerraCave_Entrance/scripts.inc
+++ b/data/maps/TerraCave_Entrance/scripts.inc
@@ -1,8 +1,8 @@
TerraCave_Entrance_MapScripts:: @ 823B0A6
- map_script MAP_SCRIPT_ON_TRANSITION, TerraCave_Entrance_MapScript1_23B0AC
+ map_script MAP_SCRIPT_ON_TRANSITION, TerraCave_Entrance_OnTransition
.byte 0
-TerraCave_Entrance_MapScript1_23B0AC: @ 823B0AC
+TerraCave_Entrance_OnTransition: @ 823B0AC
setflag FLAG_ARRIVED_AT_TERRA_CAVE_ENTRANCE
end
diff --git a/data/maps/Underwater_MarineCave/scripts.inc b/data/maps/Underwater_MarineCave/scripts.inc
index 9309d51f4..248854dd7 100644
--- a/data/maps/Underwater_MarineCave/scripts.inc
+++ b/data/maps/Underwater_MarineCave/scripts.inc
@@ -1,13 +1,13 @@
Underwater_MarineCave_MapScripts:: @ 823AFB8
- map_script MAP_SCRIPT_ON_RESUME, Underwater_MarineCave_MapScript1_23AFC7
- map_script MAP_SCRIPT_ON_TRANSITION, Underwater_MarineCave_MapScript1_23AFC3
+ map_script MAP_SCRIPT_ON_RESUME, Underwater_MarineCave_MapScript1_OnResume
+ map_script MAP_SCRIPT_ON_TRANSITION, Underwater_MarineCave_OnTransition
.byte 0
-Underwater_MarineCave_MapScript1_23AFC3: @ 823AFC3
+Underwater_MarineCave_OnTransition: @ 823AFC3
setflag FLAG_ARRIVED_AT_MARINE_CAVE_EMERGE_SPOT
end
-Underwater_MarineCave_MapScript1_23AFC7: @ 823AFC7
+Underwater_MarineCave_MapScript1_OnResume: @ 823AFC7
setdivewarp MAP_MARINE_CAVE_ENTRANCE, 255, 10, 17
end
diff --git a/data/maps/UnionRoom/scripts.inc b/data/maps/UnionRoom/scripts.inc
index 0871ae033..c2f375e0f 100644
--- a/data/maps/UnionRoom/scripts.inc
+++ b/data/maps/UnionRoom/scripts.inc
@@ -1,6 +1,6 @@
UnionRoom_MapScripts:: @ 823D1A6
map_script MAP_SCRIPT_ON_RESUME, UnionRoom_MapScript1_23D1B1
- map_script MAP_SCRIPT_ON_TRANSITION, UnionRoom_MapScript1_23D1E5
+ map_script MAP_SCRIPT_ON_TRANSITION, UnionRoom_OnTransition
.byte 0
UnionRoom_MapScript1_23D1B1: @ 823D1B1
@@ -23,7 +23,7 @@ UnionRoom_MapScript1_23D1B1: @ 823D1B1
special UnionRoomSpecial
end
-UnionRoom_MapScript1_23D1E5: @ 823D1E5
+UnionRoom_OnTransition: @ 823D1E5
end
UnionRoom_EventScript_23D1E6:: @ 823D1E6
diff --git a/data/maps/VerdanturfTown/scripts.inc b/data/maps/VerdanturfTown/scripts.inc
index bd2bce048..bd8328db8 100644
--- a/data/maps/VerdanturfTown/scripts.inc
+++ b/data/maps/VerdanturfTown/scripts.inc
@@ -1,8 +1,8 @@
VerdanturfTown_MapScripts:: @ 81EB566
- map_script MAP_SCRIPT_ON_TRANSITION, VerdanturfTown_MapScript1_1EB56C
+ map_script MAP_SCRIPT_ON_TRANSITION, VerdanturfTown_OnTransition
.byte 0
-VerdanturfTown_MapScript1_1EB56C: @ 81EB56C
+VerdanturfTown_OnTransition: @ 81EB56C
setflag FLAG_VISITED_VERDANTURF_TOWN
setvar VAR_LINK_CONTEST_ROOM_STATE, 0
end
diff --git a/data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc b/data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc
index 9d98e790c..b43bc6077 100644
--- a/data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc
+++ b/data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc
@@ -1,10 +1,10 @@
VerdanturfTown_BattleTentBattleRoom_MapScripts:: @ 82022FA
- map_script MAP_SCRIPT_ON_TRANSITION, VerdanturfTown_BattleTentBattleRoom_MapScript1_20230A
+ map_script MAP_SCRIPT_ON_TRANSITION, VerdanturfTown_BattleTentBattleRoom_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, VerdanturfTown_BattleTentBattleRoom_MapScript2_20233E
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, VerdanturfTown_BattleTentBattleRoom_MapScript2_202541
.byte 0
-VerdanturfTown_BattleTentBattleRoom_MapScript1_20230A: @ 820230A
+VerdanturfTown_BattleTentBattleRoom_OnTransition: @ 820230A
call VerdanturfTown_BattleTentBattleRoom_EventScript_202310
end
diff --git a/data/maps/VerdanturfTown_PokemonCenter_1F/scripts.inc b/data/maps/VerdanturfTown_PokemonCenter_1F/scripts.inc
index 474448132..5eb738e73 100644
--- a/data/maps/VerdanturfTown_PokemonCenter_1F/scripts.inc
+++ b/data/maps/VerdanturfTown_PokemonCenter_1F/scripts.inc
@@ -1,9 +1,9 @@
VerdanturfTown_PokemonCenter_1F_MapScripts:: @ 8202726
- map_script MAP_SCRIPT_ON_TRANSITION, VerdanturfTown_PokemonCenter_1F_MapScript1_202731
+ map_script MAP_SCRIPT_ON_TRANSITION, VerdanturfTown_PokemonCenter_1F_OnTransition
map_script MAP_SCRIPT_ON_RESUME, VerdanturfTown_PokemonCenter_1F_MapScript1_277C30
.byte 0
-VerdanturfTown_PokemonCenter_1F_MapScript1_202731: @ 8202731
+VerdanturfTown_PokemonCenter_1F_OnTransition: @ 8202731
setrespawn HEAL_LOCATION_VERDANTURF_TOWN
call VerdanturfTown_PokemonCenter_1F_EventScript_2718DE
end
diff --git a/data/maps/VerdanturfTown_PokemonCenter_2F/scripts.inc b/data/maps/VerdanturfTown_PokemonCenter_2F/scripts.inc
index b09335fb2..0964fa96f 100644
--- a/data/maps/VerdanturfTown_PokemonCenter_2F/scripts.inc
+++ b/data/maps/VerdanturfTown_PokemonCenter_2F/scripts.inc
@@ -2,7 +2,7 @@ VerdanturfTown_PokemonCenter_2F_MapScripts:: @ 8202897
map_script MAP_SCRIPT_ON_FRAME_TABLE, VerdanturfTown_PokemonCenter_2F_MapScript2_276C3B
map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, VerdanturfTown_PokemonCenter_2F_MapScript2_276B6C
map_script MAP_SCRIPT_ON_LOAD, VerdanturfTown_PokemonCenter_2F_MapScript1_276BBE
- map_script MAP_SCRIPT_ON_TRANSITION, VerdanturfTown_PokemonCenter_2F_MapScript1_276ACF
+ map_script MAP_SCRIPT_ON_TRANSITION, PokemonCenter_2F_OnTransition
.byte 0
VerdanturfTown_PokemonCenter_2F_EventScript_2028AC:: @ 82028AC
diff --git a/data/maps/VictoryRoad_1F/scripts.inc b/data/maps/VictoryRoad_1F/scripts.inc
index 96f3c6f42..5214edc44 100644
--- a/data/maps/VictoryRoad_1F/scripts.inc
+++ b/data/maps/VictoryRoad_1F/scripts.inc
@@ -1,8 +1,8 @@
VictoryRoad_1F_MapScripts:: @ 8235D7A
- map_script MAP_SCRIPT_ON_TRANSITION, VictoryRoad_1F_MapScript1_235D80
+ map_script MAP_SCRIPT_ON_TRANSITION, VictoryRoad_1F_OnTransition
.byte 0
-VictoryRoad_1F_MapScript1_235D80: @ 8235D80
+VictoryRoad_1F_OnTransition: @ 8235D80
compare VAR_VICTORY_ROAD_1F_STATE, 1
call_if_eq VictoryRoad_1F_EventScript_235D97
compare VAR_VICTORY_ROAD_1F_STATE, 2
diff --git a/data/maps/VictoryRoad_B1F/map.json b/data/maps/VictoryRoad_B1F/map.json
index 74bd3dbf8..b8f00f4fb 100644
--- a/data/maps/VictoryRoad_B1F/map.json
+++ b/data/maps/VictoryRoad_B1F/map.json
@@ -24,7 +24,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "VictoryRoad_B1F_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_13"
},
{
@@ -37,7 +37,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "VictoryRoad_B1F_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_14"
},
{
@@ -50,7 +50,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "VictoryRoad_B1F_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_11"
},
{
@@ -63,7 +63,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "VictoryRoad_B1F_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_12"
},
{
@@ -76,7 +76,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "VictoryRoad_B1F_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_17"
},
{
@@ -89,7 +89,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "VictoryRoad_B1F_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_16"
},
{
@@ -102,7 +102,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "VictoryRoad_B1F_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_1E"
},
{
@@ -115,7 +115,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "VictoryRoad_B1F_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_19"
},
{
@@ -128,7 +128,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "VictoryRoad_B1F_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_1A"
},
{
@@ -141,7 +141,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "VictoryRoad_B1F_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_1B"
},
{
@@ -154,7 +154,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "VictoryRoad_B1F_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_1C"
},
{
@@ -167,7 +167,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "VictoryRoad_B1F_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_1D"
},
{
@@ -180,7 +180,7 @@
"movement_range_y": 0,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "VictoryRoad_B1F_EventScript_2908BA",
+ "script": "EventScript_StrengthBoulder",
"flag": "FLAG_TEMP_1F"
},
{
@@ -232,7 +232,7 @@
"movement_range_y": 1,
"trainer_type": "0",
"trainer_sight_or_berry_tree_id": "0",
- "script": "VictoryRoad_B1F_EventScript_2907A6",
+ "script": "EventScript_RockSmash",
"flag": "FLAG_TEMP_15"
},
{
diff --git a/data/menu_specialized.s b/data/menu_specialized.s
deleted file mode 100644
index 2005d5bf6..000000000
--- a/data/menu_specialized.s
+++ /dev/null
@@ -1,72 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-
-
-gUnknown_08625AD0:: @ 8625AD0
- .2byte 0
- .2byte 0x4000
- .2byte 0
- .2byte 0
-
-gUnknown_08625AD8:: @ 8625AD8
- .2byte 0
- .2byte 5
- .2byte 4
- .2byte 5
-
-gUnknown_08625AE0:: @ 8625AE0
- .2byte 8
- .2byte 5
- .2byte 12
- .2byte 5
-
-gUnknown_08625AE8:: @ 8625AE8
- .2byte 16
- .2byte 5
- .2byte 20
- .2byte 5
-
-gUnknown_08625AF0:: @ 8625AF0
- .2byte 24
- .2byte 5
- .2byte 0xFFFF
- .2byte 0
-
-gUnknown_08625AF8:: @ 8625AF8
- .4byte gUnknown_08625AD8
- .4byte gUnknown_08625AE0
-
-gUnknown_08625B00:: @ 8625B00
- .4byte gUnknown_08625AE8
- .4byte gUnknown_08625AF0
-
-gUnknown_08625B08:: @ 8625B08
- .4byte gUnknown_08625AF8
- .4byte gUnknown_08625B00
- .4byte gUnknown_08625B08
-
-gUnknown_08625B14:: @ 8625B14
- spr_template 0x68, 0x68, gUnknown_08625AD0, gUnknown_08625AF8, NULL gDummySpriteAffineAnimTable, sub_81D3564
-
-gUnknown_08625B2C:: @ 8625B2C
- .2byte 0, 0xFFDD
- .2byte 20, 0xFFE4
- .2byte 33, 0xFFF6
- .2byte 33, 10
- .2byte 20, 28
- .2byte 0, 35
- .2byte 0xFFEC, 28
- .2byte 0xFFDF, 10
- .2byte 0xFFDF, 0xFFF6
- .2byte 0xFFEC, 0xFFE4
-
-gUnknown_08625B54:: @ 8625B54
- .4byte gUnknown_085EEA46
- .4byte gUnknown_085EEA4E
- .4byte gUnknown_085EEA55
- .4byte gUnknown_085EEA63
- .4byte gUnknown_085EEA6B
- .4byte gUnknown_085EEA5D
diff --git a/data/pokemon_jump.s b/data/pokemon_jump.s
index 8ef0201e4..b10c37600 100755
--- a/data/pokemon_jump.s
+++ b/data/pokemon_jump.s
@@ -5,133 +5,6 @@
.section .rodata
.align 2
-gPkmnJumpSpecies:: @ 82FB464
- .2byte SPECIES_BULBASAUR, 0x0002
- .2byte SPECIES_CHARMANDER, 0x0001
- .2byte SPECIES_SQUIRTLE, 0x0000
- .2byte SPECIES_CATERPIE, 0x0001
- .2byte SPECIES_METAPOD, 0x0001
- .2byte SPECIES_WEEDLE, 0x0001
- .2byte SPECIES_KAKUNA, 0x0001
- .2byte SPECIES_RATTATA, 0x0001
- .2byte SPECIES_RATICATE, 0x0001
- .2byte SPECIES_PIKACHU, 0x0000
- .2byte SPECIES_SANDSHREW, 0x0000
- .2byte SPECIES_NIDORAN_F, 0x0000
- .2byte SPECIES_NIDORAN_M, 0x0000
- .2byte SPECIES_CLEFAIRY, 0x0000
- .2byte SPECIES_VULPIX, 0x0000
- .2byte SPECIES_JIGGLYPUFF, 0x0002
- .2byte SPECIES_ODDISH, 0x0002
- .2byte SPECIES_PARAS, 0x0001
- .2byte SPECIES_MEOWTH, 0x0000
- .2byte SPECIES_PSYDUCK, 0x0002
- .2byte SPECIES_MANKEY, 0x0001
- .2byte SPECIES_GROWLITHE, 0x0001
- .2byte SPECIES_POLIWAG, 0x0002
- .2byte SPECIES_BELLSPROUT, 0x0002
- .2byte SPECIES_SHELLDER, 0x0001
- .2byte SPECIES_KRABBY, 0x0001
- .2byte SPECIES_EXEGGCUTE, 0x0002
- .2byte SPECIES_CUBONE, 0x0000
- .2byte SPECIES_DITTO, 0x0002
- .2byte SPECIES_EEVEE, 0x0000
- .2byte SPECIES_OMANYTE, 0x0001
- .2byte SPECIES_KABUTO, 0x0001
- .2byte SPECIES_CHIKORITA, 0x0002
- .2byte SPECIES_CYNDAQUIL, 0x0001
- .2byte SPECIES_TOTODILE, 0x0000
- .2byte SPECIES_SPINARAK, 0x0001
- .2byte SPECIES_PICHU, 0x0000
- .2byte SPECIES_CLEFFA, 0x0000
- .2byte SPECIES_IGGLYBUFF, 0x0002
- .2byte SPECIES_TOGEPI, 0x0002
- .2byte SPECIES_MAREEP, 0x0000
- .2byte SPECIES_BELLOSSOM, 0x0002
- .2byte SPECIES_MARILL, 0x0002
- .2byte SPECIES_SUNKERN, 0x0002
- .2byte SPECIES_WOOPER, 0x0002
- .2byte SPECIES_PINECO, 0x0002
- .2byte SPECIES_SNUBBULL, 0x0000
- .2byte SPECIES_SHUCKLE, 0x0002
- .2byte SPECIES_TEDDIURSA, 0x0000
- .2byte SPECIES_SLUGMA, 0x0002
- .2byte SPECIES_SWINUB, 0x0000
- .2byte SPECIES_HOUNDOUR, 0x0001
- .2byte SPECIES_PHANPY, 0x0000
- .2byte SPECIES_PORYGON2, 0x0000
- .2byte SPECIES_TYROGUE, 0x0001
- .2byte SPECIES_SMOOCHUM, 0x0002
- .2byte SPECIES_ELEKID, 0x0001
- .2byte SPECIES_MAGBY, 0x0001
- .2byte SPECIES_LARVITAR, 0x0001
- .2byte SPECIES_TREECKO, 0x0001
- .2byte SPECIES_TORCHIC, 0x0002
- .2byte SPECIES_MUDKIP, 0x0000
- .2byte SPECIES_MARSHTOMP, 0x0000
- .2byte SPECIES_POOCHYENA, 0x0001
- .2byte SPECIES_ZIGZAGOON, 0x0000
- .2byte SPECIES_LINOONE, 0x0000
- .2byte SPECIES_WURMPLE, 0x0001
- .2byte SPECIES_SILCOON, 0x0002
- .2byte SPECIES_CASCOON, 0x0002
- .2byte SPECIES_LOTAD, 0x0002
- .2byte SPECIES_SEEDOT, 0x0001
- .2byte SPECIES_RALTS, 0x0000
- .2byte SPECIES_KIRLIA, 0x0000
- .2byte SPECIES_SURSKIT, 0x0002
- .2byte SPECIES_SHROOMISH, 0x0002
- .2byte SPECIES_NINCADA, 0x0001
- .2byte SPECIES_WHISMUR, 0x0000
- .2byte SPECIES_AZURILL, 0x0002
- .2byte SPECIES_SKITTY, 0x0000
- .2byte SPECIES_SABLEYE, 0x0000
- .2byte SPECIES_MAWILE, 0x0000
- .2byte SPECIES_ARON, 0x0001
- .2byte SPECIES_MEDITITE, 0x0002
- .2byte SPECIES_ELECTRIKE, 0x0001
- .2byte SPECIES_PLUSLE, 0x0001
- .2byte SPECIES_MINUN, 0x0001
- .2byte SPECIES_VOLBEAT, 0x0000
- .2byte SPECIES_ILLUMISE, 0x0000
- .2byte SPECIES_ROSELIA, 0x0002
- .2byte SPECIES_GULPIN, 0x0002
- .2byte SPECIES_NUMEL, 0x0002
- .2byte SPECIES_TORKOAL, 0x0002
- .2byte SPECIES_SPOINK, 0x0000
- .2byte SPECIES_TRAPINCH, 0x0002
- .2byte SPECIES_CACNEA, 0x0002
- .2byte SPECIES_ANORITH, 0x0001
- .2byte SPECIES_WYNAUT, 0x0000
- .2byte SPECIES_SNORUNT, 0x0000
- .2byte SPECIES_CLAMPERL, 0x0001
- .2byte SPECIES_BAGON, 0x0001
-
- .align 2
-gUnknown_082FB5F4:: @ 82FB5F4
- .4byte sub_802B248
- .4byte sub_802B2D4
- .4byte sub_802B368
- .4byte sub_802B3D4
- .4byte sub_802B4CC
- .4byte sub_802B5C8
- .4byte sub_802B664
- .4byte sub_802B6B8
- .4byte sub_802B720
-
- .align 2
-gUnknown_082FB618:: @ 82FB618
- .4byte sub_802B29C
- .4byte sub_802B31C
- .4byte sub_802B3B4
- .4byte sub_802B470
- .4byte sub_802B568
- .4byte sub_802B628
- .4byte sub_802B664
- .4byte sub_802B704
- .4byte sub_802B720
-
- .align 2
gUnknown_082FB63C:: @ 82FB63C
.2byte 0x001a, 0x001f, 0x0024, 0x0029, 0x002e, 0x0033, 0x0038, 0x003d
@@ -151,12 +24,14 @@ gUnknown_082FB65C:: @ 82FB65C
.byte 0xee, 0xef, 0xf1, 0xf3, 0xf5, 0xf8, 0xfa, 0xfc
.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
.byte 0xfd, 0xfa, 0xf7, 0xf5, 0xf2, 0xf0, 0xee, 0xec
.byte 0xea, 0xe8, 0xe6, 0xe4, 0xe3, 0xe2, 0xe2, 0xe4
.byte 0xe6, 0xe8, 0xea, 0xec, 0xee, 0xf0, 0xf2, 0xf5
.byte 0xf7, 0xfa, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
.byte 0xfd, 0xfa, 0xf7, 0xf5, 0xf3, 0xf1, 0xef, 0xed
.byte 0xeb, 0xe9, 0xe7, 0xe5, 0xe4, 0xe3, 0xe2, 0xe2
.byte 0xe2, 0xe2, 0xe3, 0xe3, 0xe4, 0xe4, 0xe5, 0xe5
diff --git a/data/pokenav.s b/data/pokenav.s
index cb5030b4b..81ee9024d 100644
--- a/data/pokenav.s
+++ b/data/pokenav.s
@@ -3,128 +3,7 @@
.section .rodata
-gUnknown_0861FA6C:: @ 861FA6C
- obj_tiles gPokenavLeftHeaderMainMenu_Gfx, 0x20, 3
- obj_tiles gPokenavLeftHeaderCondition_Gfx, 0x20, 1
- obj_tiles gPokenavLeftHeaderRibbons_Gfx, 0x20, 2
- obj_tiles gPokenavLeftHeaderMatchCall_Gfx, 0x20, 4
- obj_tiles gPokenavLeftHeaderHoennMap_Gfx, 0x20, 0
- obj_tiles gPokenavLeftHeaderHoennMap_Gfx, 0x40, 0
-
-gUnknown_0861FA9C:: @ 861FA9C
- .4byte gPokenavLeftHeaderParty_Gfx, 1
- .4byte gPokenavLeftHeaderSearch_Gfx, 1
- .4byte gPokenavLeftHeaderCool_Gfx, 4
- .4byte gPokenavLeftHeaderBeauty_Gfx, 1
- .4byte gPokenavLeftHeaderCute_Gfx, 2
- .4byte gPokenavLeftHeaderSmart_Gfx, 0
- .4byte gPokenavLeftHeaderTough_Gfx, 0
-
-gUnknown_0861FAD4:: @ 861FAD4
- .2byte 0x0
- .2byte 0x8000
- .2byte 0x0
- .2byte 0x0
-
-gUnknown_0861FADC::
- obj_image_anim_frame 0, 8
- obj_image_anim_frame 16, 8
- obj_image_anim_frame 32, 8
- obj_image_anim_frame 48, 8
- obj_image_anim_frame 64, 8
- obj_image_anim_frame 80, 8
- obj_image_anim_frame 96, 8
- obj_image_anim_frame 112, 8
- obj_image_anim_jump 0
-
-gUnknown_0861FB00::
- .4byte gUnknown_0861FADC
-
-gUnknown_0861FB04:: @ 861FB04
- spr_template 0, 0, gUnknown_0861FAD4, gUnknown_0861FB00, NULL, gDummySpriteAffineAnimTable, sub_81C7CB4
-
-gUnknown_0861FB1C::
- .2byte 0x4000
- .2byte 0xC000
- .2byte 0x400
- .2byte 0x0
-
-gUnknown_0861FB24::
- .2byte 0x4000
- .2byte 0x8000
- .2byte 0x400
- .2byte 0x0
-
-gUnknown_0861FB2C:: @ 861FB2C
- spr_template 2, 1, gUnknown_0861FB1C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_0861FB44:: @ 861FB44
- spr_template 2, 2, gUnknown_0861FB24, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_0861FB5C:: @ 861FB5C
- .incbin "graphics/pokenav/arrows_matchcall.gbapal"
-
-gUnknown_0861FB7C:: @ 861FB7C
- .incbin "graphics/pokenav/arrows_matchcall.4bpp.lz"
-
-gUnknown_0861FBE4:: @ 861FBE4
- .byte 0x0
- .byte 0x2
- .byte 0x5
- .byte 0x0
-
-gUnknown_0861FBE8:: @ 861FBE8
- .4byte gUnknown_085EBEA8
- .4byte gUnknown_085EBEB1
- .4byte gUnknown_085EBEC3
-
-gUnknown_0861FBF4:: @ 861FBF4
- .byte 0x1
- .byte 0x4
- .byte 0x5
-
-gUnknown_0861FBF7:: @ 861FBF7
- .byte 0x2
- .byte 0x4
- .byte 0x6
- .byte 0x7
- .byte 0x0
-
-gUnknown_0861FBFC:: @ 861FBFC
- .4byte gUnknown_0861FB7C
- .2byte 0xC0
- .2byte 0xA
-
-gUnknown_0861FC04:: @ 861FC04
- .4byte gUnknown_0861FB5C
- .4byte 0x14
- .4byte 0x0
- .4byte 0x0
-
-gUnknown_0861FC14:: @ 861FC14
- .4byte 0x8000
- .4byte 0x800
-
-gUnknown_0861FC1C:: @ 861FC1C
- spr_template 10, 20, gUnknown_0861FC14, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81C9080
-
-gUnknown_0861FC34:: @ 861FC34
- .4byte 0x4000
- .4byte 0x800
-
-gUnknown_0861FC3C:: @ 861FC3C
- spr_template 10, 20, gUnknown_0861FC34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_0861FC54:: @ 861FC54
- .byte 2
- .byte 3
- .byte 4
- .byte 2
- .byte 5
-
-gUnknown_0861FC59:: @ 861FC59
- .byte 0, 1, 4, 4, 4, 4, 0, 1, 2, 4, 4, 4, 0, 1, 2, 3, 4, 4, 5, 6, 7, 4, 4, 4, 8, 9, 10, 11, 12, 13, 0
-
+// pokenav_unk_2.s
gUnknown_0861FC78:: @ 861FC78
.incbin "graphics/pokenav/bg.gbapal"
@@ -313,7 +192,8 @@ gUnknown_08620384:: @ 8620384
.4byte 0x4000040
.4byte 0xa2600001
.byte 1, 0, 0, 0
-
+
+// pokenav_unk_3.s
gUnknown_08620390:: @ 8620390
.string "Becalm fighting emotions.$"
@@ -1339,6 +1219,7 @@ gUnknown_08622508:: @ 8622508
gUnknown_0862250A:: @ 862250A
.byte 0, 1, 2, 0, 0, 0
+// pokenav_unk_4.s
gUnknown_08622510:: @ 8622510
.incbin "graphics/pokenav/ui_matchcall.gbapal"
@@ -1371,7 +1252,7 @@ gUnknown_0862278C:: @ 862278C
.4byte 0x20206A
gUnknown_08622794:: @ 8622794
- .4byte 0x3077
+ .4byte 0x00003077
gUnknown_08622798:: @ 8622798
.4byte NULL
@@ -1435,6 +1316,7 @@ gUnknown_08622848:: @ 8622848
gUnknown_08622850:: @ 8622850
spr_template 8, 13, gUnknown_08622848, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+// pokenav_unk_5.s
gUnknown_08622868:: @ 8622868
.incbin "graphics/pokenav/8622868.gbapal"
@@ -1568,6 +1450,10 @@ gUnknown_086231C8:: @ 86231C8
gUnknown_086231D0:: @ 86231D0
spr_template 6, 11, gUnknown_086231C8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81CCEF4
+// pokenav_unk_6.s
+// <none>
+
+// pokenav_unk_7.s
gUnknown_086231E8:: @ 86231E8
.incbin "graphics/pokenav/86231E8.gbapal"
@@ -1600,6 +1486,7 @@ gUnknown_08623374:: @ 8623374
gUnknown_0862337C:: @ 862337C
window_template 1, 13, 0x1C, 3, 2, 15, 0x44
+// pokenav_unk_8.s
gUnknown_08623384:: @ 8623384
.4byte NULL
.4byte sub_81CE37C
@@ -1660,6 +1547,7 @@ gUnknown_086235D4:: @ 86235D4
.string "{UNK_SPACER}$"
.align 2
+// pokenav_unk_9.s
gUnknown_086235D8:: @ 86235D8
.4byte sub_81CFB8C
.4byte sub_81CFC2C
@@ -1707,6 +1595,7 @@ gUnknown_086237F4:: @ 86237F4
.string "{UNK_SPACER}$"
.align 2
+// pokenav_unk_10.s
gUnknown_086237F8:: @ 86237F8
.byte 1, 1, 0, 0
.byte 3, 4, 1, 0
diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc
index c755493dc..fe3fa9fae 100644
--- a/data/scripts/cable_club.inc
+++ b/data/scripts/cable_club.inc
@@ -1,24 +1,8 @@
-BattleFrontier_PokemonCenter_2F_MapScript1_276ACF: @ 8276ACF
-DewfordTown_PokemonCenter_2F_MapScript1_276ACF: @ 8276ACF
-EverGrandeCity_PokemonCenter_2F_MapScript1_276ACF: @ 8276ACF
-EverGrandeCity_PokemonLeague_2F_MapScript1_276ACF: @ 8276ACF
-FallarborTown_PokemonCenter_2F_MapScript1_276ACF: @ 8276ACF
-FortreeCity_PokemonCenter_2F_MapScript1_276ACF: @ 8276ACF
-LavaridgeTown_PokemonCenter_2F_MapScript1_276ACF: @ 8276ACF
-LilycoveCity_PokemonCenter_2F_MapScript1_276ACF: @ 8276ACF
-MauvilleCity_PokemonCenter_2F_MapScript1_276ACF: @ 8276ACF
-MossdeepCity_PokemonCenter_2F_MapScript1_276ACF: @ 8276ACF
-OldaleTown_PokemonCenter_2F_MapScript1_276ACF: @ 8276ACF
-PacifidlogTown_PokemonCenter_2F_MapScript1_276ACF: @ 8276ACF
-PetalburgCity_PokemonCenter_2F_MapScript1_276ACF: @ 8276ACF
-RustboroCity_PokemonCenter_2F_MapScript1_276ACF: @ 8276ACF
-SlateportCity_PokemonCenter_2F_MapScript1_276ACF: @ 8276ACF
-SootopolisCity_PokemonCenter_2F_MapScript1_276ACF: @ 8276ACF
-VerdanturfTown_PokemonCenter_2F_MapScript1_276ACF: @ 8276ACF
- call OldaleTown_PokemonCenter_2F_EventScript_276AD5
- end
-
-OldaleTown_PokemonCenter_2F_EventScript_276AD5:: @ 8276AD5
+PokemonCenter_2F_OnTransition: @ 8276ACF
+ call OldaleTown_PokemonCenter_2F_EventScript_OnTransitionCheckMysteryGift
+ end
+
+OldaleTown_PokemonCenter_2F_EventScript_OnTransitionCheckMysteryGift:: @ 8276AD5
specialvar VAR_RESULT, sub_813B514
compare VAR_RESULT, 1
goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_276AFB
diff --git a/data/scripts/field_move_scripts.inc b/data/scripts/field_move_scripts.inc
index 024ffbf85..6eae55294 100644
--- a/data/scripts/field_move_scripts.inc
+++ b/data/scripts/field_move_scripts.inc
@@ -1,221 +1,189 @@
-PetalburgWoods_EventScript_2906BB:: @ 82906BB
-Route103_EventScript_2906BB:: @ 82906BB
-Route104_EventScript_2906BB:: @ 82906BB
-Route110_TrickHousePuzzle1_EventScript_2906BB:: @ 82906BB
-Route111_EventScript_2906BB:: @ 82906BB
-Route116_EventScript_2906BB:: @ 82906BB
-Route117_EventScript_2906BB:: @ 82906BB
-Route118_EventScript_2906BB:: @ 82906BB
-Route120_EventScript_2906BB:: @ 82906BB
-Route121_EventScript_2906BB:: @ 82906BB
-Route123_EventScript_2906BB:: @ 82906BB
+
+EventScript_CutTree:: @ 82906BB
lockall
- goto_if_unset FLAG_BADGE01_GET, Route103_EventScript_290721
+ goto_if_unset FLAG_BADGE01_GET, EventScript_CheckTreeCantCut
checkpartymove MOVE_CUT
compare VAR_RESULT, 6
- goto_if_eq Route103_EventScript_290721
+ goto_if_eq EventScript_CheckTreeCantCut
setfieldeffectargument 0, VAR_RESULT
bufferpartymonnick 0, VAR_RESULT
buffermovename 1, MOVE_CUT
- msgbox Route103_Text_29072E, MSGBOX_YESNO
+ msgbox Text_WantToCut, MSGBOX_YESNO
compare VAR_RESULT, 0
- goto_if_eq Route103_EventScript_29072B
- msgbox Route103_Text_290771, MSGBOX_DEFAULT
+ goto_if_eq EventScript_CancelCut
+ msgbox Text_MonUsedHM, MSGBOX_DEFAULT
closemessage
- dofieldeffect 2
+ dofieldeffect FLDEFF_USE_CUT_ON_TREE
waitstate
- goto Route103_EventScript_290710
+ goto EventScript_CutTreeDown
end
-Route103_EventScript_290705:: @ 8290705
+EventScript_FldEffCut:: @ 8290705
lockall
- dofieldeffect 2
+ dofieldeffect FLDEFF_USE_CUT_ON_TREE
waitstate
- goto Route103_EventScript_290710
+ goto EventScript_CutTreeDown
end
-Route103_EventScript_290710:: @ 8290710
- applymovement VAR_LAST_TALKED, Route103_Movement_29071F
+EventScript_CutTreeDown:: @ 8290710
+ applymovement VAR_LAST_TALKED, Movement_CutTreeDown
waitmovement 0
removeobject VAR_LAST_TALKED
releaseall
end
-Route103_Movement_29071F: @ 829071F
+Movement_CutTreeDown: @ 829071F
cut_tree
step_end
-Route103_EventScript_290721:: @ 8290721
- msgbox Route103_Text_29077D, MSGBOX_DEFAULT
+EventScript_CheckTreeCantCut:: @ 8290721
+ msgbox Text_CantCut, MSGBOX_DEFAULT
releaseall
end
-Route103_EventScript_29072B:: @ 829072B
+EventScript_CancelCut:: @ 829072B
closemessage
releaseall
end
-Route103_Text_29072E: @ 829072E
+Text_WantToCut: @ 829072E
.string "This tree looks like it can be\n"
.string "CUT down!\p"
.string "Would you like to CUT it?$"
-Route103_Text_290771: @ 8290771
-Route111_Text_290771: @ 8290771
+Text_MonUsedHM: @ 8290771
.string "{STR_VAR_1} used {STR_VAR_2}!$"
-Route103_Text_29077D: @ 829077D
+Text_CantCut: @ 829077D
.string "This tree looks like it can be\n"
.string "CUT down!$"
-GraniteCave_B2F_EventScript_2907A6:: @ 82907A6
-MirageTower_3F_EventScript_2907A6:: @ 82907A6
-MirageTower_4F_EventScript_2907A6:: @ 82907A6
-Route110_TrickHousePuzzle3_EventScript_2907A6:: @ 82907A6
-Route111_EventScript_2907A6:: @ 82907A6
-Route114_EventScript_2907A6:: @ 82907A6
-Route115_EventScript_2907A6:: @ 82907A6
-RusturfTunnel_EventScript_2907A6:: @ 82907A6
-SafariZone_North_EventScript_2907A6:: @ 82907A6
-SafariZone_Northeast_EventScript_2907A6:: @ 82907A6
-SeafloorCavern_Room1_EventScript_2907A6:: @ 82907A6
-SeafloorCavern_Room2_EventScript_2907A6:: @ 82907A6
-SeafloorCavern_Room5_EventScript_2907A6:: @ 82907A6
-VictoryRoad_B1F_EventScript_2907A6:: @ 82907A6
+EventScript_RockSmash:: @ 82907A6
lockall
- goto_if_unset FLAG_BADGE03_GET, Route111_EventScript_29082D
+ goto_if_unset FLAG_BADGE03_GET, EventScript_CantSmashRock
checkpartymove MOVE_ROCK_SMASH
compare VAR_RESULT, 6
- goto_if_eq Route111_EventScript_29082D
+ goto_if_eq EventScript_CantSmashRock
setfieldeffectargument 0, VAR_RESULT
bufferpartymonnick 0, VAR_RESULT
buffermovename 1, MOVE_ROCK_SMASH
- msgbox Route111_Text_29083A, MSGBOX_YESNO
+ msgbox Text_WantToSmash, MSGBOX_YESNO
compare VAR_RESULT, 0
- goto_if_eq Route111_EventScript_290837
- msgbox Route111_Text_290771, MSGBOX_DEFAULT
+ goto_if_eq EventScript_CancelSmash
+ msgbox Text_MonUsedHM, MSGBOX_DEFAULT
closemessage
- dofieldeffect 37
+ dofieldeffect FLDEFF_USE_ROCK_SMASH
waitstate
- goto Route111_EventScript_2907FB
+ goto EventScript_SmashRock
end
-Route111_EventScript_2907F0:: @ 82907F0
+EventScript_FldEffRockSmash:: @ 82907F0
lockall
- dofieldeffect 37
+ dofieldeffect FLDEFF_USE_ROCK_SMASH
waitstate
- goto Route111_EventScript_2907FB
+ goto EventScript_SmashRock
end
-Route111_EventScript_2907FB:: @ 82907FB
- applymovement VAR_LAST_TALKED, Route111_Movement_29082B
+EventScript_SmashRock:: @ 82907FB
+ applymovement VAR_LAST_TALKED, Movement_SmashRock
waitmovement 0
removeobject VAR_LAST_TALKED
specialvar VAR_RESULT, TryUpdateRusturfTunnelState
compare VAR_RESULT, 1
- goto_if_eq Route111_EventScript_290829
+ goto_if_eq EventScript_EndSmash
special RockSmashWildEncounter
compare VAR_RESULT, 0
- goto_if_eq Route111_EventScript_290829
+ goto_if_eq EventScript_EndSmash
waitstate
releaseall
end
-Route111_EventScript_290829:: @ 8290829
+EventScript_EndSmash:: @ 8290829
releaseall
end
-Route111_Movement_29082B: @ 829082B
+Movement_SmashRock: @ 829082B
rock_smash_break
step_end
-Route111_EventScript_29082D:: @ 829082D
- msgbox Route111_Text_29087F, MSGBOX_DEFAULT
+EventScript_CantSmashRock:: @ 829082D
+ msgbox Text_CantSmash, MSGBOX_DEFAULT
releaseall
end
-Route111_EventScript_290837:: @ 8290837
+EventScript_CancelSmash:: @ 8290837
closemessage
releaseall
end
-Route111_Text_29083A: @ 829083A
+Text_WantToSmash: @ 829083A
.string "This rock appears to be breakable.\n"
.string "Would you like to use ROCK SMASH?$"
-Route111_Text_29087F: @ 829087F
+Text_CantSmash: @ 829087F
.string "It's a rugged rock, but a POKéMON\n"
.string "may be able to smash it.$"
-FieryPath_EventScript_2908BA:: @ 82908BA
-MagmaHideout_1F_EventScript_2908BA:: @ 82908BA
-Route110_TrickHousePuzzle4_EventScript_2908BA:: @ 82908BA
-SeafloorCavern_Room1_EventScript_2908BA:: @ 82908BA
-SeafloorCavern_Room2_EventScript_2908BA:: @ 82908BA
-SeafloorCavern_Room3_EventScript_2908BA:: @ 82908BA
-SeafloorCavern_Room5_EventScript_2908BA:: @ 82908BA
-SeafloorCavern_Room8_EventScript_2908BA:: @ 82908BA
-ShoalCave_LowTideLowerRoom_EventScript_2908BA:: @ 82908BA
-VictoryRoad_B1F_EventScript_2908BA:: @ 82908BA
+EventScript_StrengthBoulder:: @ 82908BA
lockall
- goto_if_unset FLAG_BADGE04_GET, FieryPath_EventScript_290915
- goto_if_set FLAG_SYS_USE_STRENGTH, FieryPath_EventScript_29091F
+ goto_if_unset FLAG_BADGE04_GET, EventScript_CantStrength
+ goto_if_set FLAG_SYS_USE_STRENGTH, EventScript_CheckActivatedBoulder
checkpartymove MOVE_STRENGTH
compare VAR_RESULT, 6
- goto_if_eq FieryPath_EventScript_290915
+ goto_if_eq EventScript_CantStrength
setfieldeffectargument 0, VAR_RESULT
- msgbox FieryPath_Text_29092C, MSGBOX_YESNO
+ msgbox Text_WantToStrength, MSGBOX_YESNO
compare VAR_RESULT, 0
- goto_if_eq FieryPath_EventScript_290929
+ goto_if_eq EventScript_CancelStrength
closemessage
- dofieldeffect 40
+ dofieldeffect FLDEFF_USE_STRENGTH
waitstate
- goto FieryPath_EventScript_290908
+ goto EventScript_ActivateStrength
end
-FieryPath_EventScript_2908FD:: @ 82908FD
+EventScript_FldEffStrength:: @ 82908FD
lockall
- dofieldeffect 40
+ dofieldeffect FLDEFF_USE_STRENGTH
waitstate
- goto FieryPath_EventScript_290908
+ goto EventScript_ActivateStrength
end
-FieryPath_EventScript_290908:: @ 8290908
+EventScript_ActivateStrength:: @ 8290908
setflag FLAG_SYS_USE_STRENGTH
- msgbox FieryPath_Text_29098C, MSGBOX_DEFAULT
+ msgbox Text_MonUsedStrength, MSGBOX_DEFAULT
releaseall
end
-FieryPath_EventScript_290915:: @ 8290915
- msgbox FieryPath_Text_2909D6, MSGBOX_DEFAULT
+EventScript_CantStrength:: @ 8290915
+ msgbox Text_CantStrength, MSGBOX_DEFAULT
releaseall
end
-FieryPath_EventScript_29091F:: @ 829091F
- msgbox FieryPath_Text_290A16, MSGBOX_DEFAULT
+EventScript_CheckActivatedBoulder:: @ 829091F
+ msgbox Text_StrengthActivated, MSGBOX_DEFAULT
releaseall
end
-FieryPath_EventScript_290929:: @ 8290929
+EventScript_CancelStrength:: @ 8290929
closemessage
releaseall
end
-FieryPath_Text_29092C: @ 829092C
+Text_WantToStrength: @ 829092C
.string "It's a big boulder, but a POKéMON\n"
.string "may be able to push it aside.\p"
.string "Would you like to use STRENGTH?$"
-FieryPath_Text_29098C: @ 829098C
+Text_MonUsedStrength: @ 829098C
.string "{STR_VAR_1} used STRENGTH!\p"
.string "{STR_VAR_1}'s STRENGTH made it\n"
.string "possible to move boulders around!$"
-FieryPath_Text_2909D6: @ 82909D6
+Text_CantStrength: @ 82909D6
.string "It's a big boulder, but a POKéMON\n"
.string "may be able to push it aside.$"
-FieryPath_Text_290A16: @ 8290A16
+Text_StrengthActivated: @ 8290A16
.string "STRENGTH made it possible to move\n"
.string "boulders around.$"
@@ -223,59 +191,59 @@ EventScript_UseWaterfall:: @ 8290A49
lockall
checkpartymove MOVE_WATERFALL
compare VAR_RESULT, 6
- goto_if_eq EventScript_290A84
+ goto_if_eq EventScript_CantWaterfall
bufferpartymonnick 0, VAR_RESULT
setfieldeffectargument 0, VAR_RESULT
- msgbox Text_290AC3, MSGBOX_YESNO
+ msgbox Text_WantToWaterfall, MSGBOX_YESNO
compare VAR_RESULT, 0
- goto_if_eq EventScript_290A8C
- msgbox Text_290AFC, MSGBOX_DEFAULT
- dofieldeffect 43
- goto EventScript_290A8C
+ goto_if_eq EventScript_EndWaterfall
+ msgbox Text_MonUsedWaterfall, MSGBOX_DEFAULT
+ dofieldeffect FLDEFF_USE_WATERFALL
+ goto EventScript_EndWaterfall
EventScript_CannotUseWaterfall:: @ 8290A83
lockall
-EventScript_290A84:: @ 8290A84
- msgbox Text_290A8E, MSGBOX_DEFAULT
+EventScript_CantWaterfall:: @ 8290A84
+ msgbox Text_CantWaterfall, MSGBOX_DEFAULT
-EventScript_290A8C:: @ 8290A8C
+EventScript_EndWaterfall:: @ 8290A8C
releaseall
end
-Text_290A8E: @ 8290A8E
+Text_CantWaterfall: @ 8290A8E
.string "A wall of water is crashing down with\n"
.string "a mighty roar.$"
-Text_290AC3: @ 8290AC3
+Text_WantToWaterfall: @ 8290AC3
.string "It's a large waterfall.\n"
.string "Would you like to use WATERFALL?$"
-Text_290AFC: @ 8290AFC
+Text_MonUsedWaterfall: @ 8290AFC
.string "{STR_VAR_1} used WATERFALL.$"
EventScript_UseDive:: @ 8290B0F
lockall
checkpartymove MOVE_DIVE
compare VAR_RESULT, 6
- goto_if_eq EventScript_290B4E
+ goto_if_eq EventScript_CantDive
bufferpartymonnick 0, VAR_RESULT
setfieldeffectargument 0, VAR_RESULT
setfieldeffectargument 1, 1
- msgbox Text_290BE8, MSGBOX_YESNO
+ msgbox Text_WantToDive, MSGBOX_YESNO
compare VAR_RESULT, 0
- goto_if_eq EventScript_290B58
- msgbox Text_290C1A, MSGBOX_DEFAULT
- dofieldeffect 44
- goto EventScript_290B58
+ goto_if_eq EventScript_EndDive
+ msgbox Text_MonUsedDive, MSGBOX_DEFAULT
+ dofieldeffect FLDEFF_USE_DIVE
+ goto EventScript_EndDive
end
-EventScript_290B4E:: @ 8290B4E
- msgbox Text_290BAA, MSGBOX_DEFAULT
+EventScript_CantDive:: @ 8290B4E
+ msgbox Text_CantDive, MSGBOX_DEFAULT
releaseall
end
-EventScript_290B58:: @ 8290B58
+EventScript_EndDive:: @ 8290B58
releaseall
end
@@ -283,50 +251,50 @@ EventScript_UseDiveUnderwater:: @ 8290B5A
lockall
checkpartymove MOVE_DIVE
compare VAR_RESULT, 6
- goto_if_eq EventScript_290B99
+ goto_if_eq EventScript_CantSurface
bufferpartymonnick 0, VAR_RESULT
setfieldeffectargument 0, VAR_RESULT
setfieldeffectargument 1, 1
- msgbox Text_290C6E, MSGBOX_YESNO
+ msgbox Text_WantToSurface, MSGBOX_YESNO
compare VAR_RESULT, 0
- goto_if_eq EventScript_290BA8
- msgbox Text_290C1A, MSGBOX_DEFAULT
- dofieldeffect 44
- goto EventScript_290BA8
+ goto_if_eq EventScript_EndSurface
+ msgbox Text_MonUsedDive, MSGBOX_DEFAULT
+ dofieldeffect FLDEFF_USE_DIVE
+ goto EventScript_EndSurface
end
-EventScript_290B99:: @ 8290B99
+EventScript_CantSurface:: @ 8290B99
lockall
- msgbox Text_290C28, MSGBOX_DEFAULT
- goto EventScript_290BA8
+ msgbox Text_CantSurface, MSGBOX_DEFAULT
+ goto EventScript_EndSurface
end
-EventScript_290BA8:: @ 8290BA8
+EventScript_EndSurface:: @ 8290BA8
releaseall
end
-Text_290BAA: @ 8290BAA
+Text_CantDive: @ 8290BAA
.string "The sea is deep here. A POKéMON\n"
.string "may be able to go underwater.$"
-Text_290BE8: @ 8290BE8
+Text_WantToDive: @ 8290BE8
.string "The sea is deep here.\n"
.string "Would you like to use DIVE?$"
-Text_290C1A: @ 8290C1A
+Text_MonUsedDive: @ 8290C1A
.string "{STR_VAR_1} used DIVE.$"
-Text_290C28: @ 8290C28
+Text_CantSurface: @ 8290C28
.string "Light is filtering down from above.\n"
.string "A POKéMON may be able to surface.$"
-Text_290C6E: @ 8290C6E
+Text_WantToSurface: @ 8290C6E
.string "Light is filtering down from above.\n"
.string "Would you like to use DIVE?$"
-EventScript_290CAE:: @ 8290CAE
- msgbox Text_290CB7, MSGBOX_SIGN
+EventScript_FailSweetScent:: @ 8290CAE
+ msgbox Text_FailSweetScent, MSGBOX_SIGN
end
-Text_290CB7: @ 8290CB7
+Text_FailSweetScent: @ 8290CB7
.string "Looks like there's nothing here…$"
diff --git a/data/scripts/secret_base.inc b/data/scripts/secret_base.inc
index 347513636..81bd388f8 100644
--- a/data/scripts/secret_base.inc
+++ b/data/scripts/secret_base.inc
@@ -310,8 +310,8 @@ SecretBase_RedCave1_Text_275944: @ 8275944
.string "Are you speechless?$"
EventScript_2759F1:: @ 82759F1
- special sub_80E8C98
- special sub_80E8BC8
+ special GetSecretBaseTypeInFrontOfPlayer
+ special CheckPlayerHasSecretBase
compare VAR_RESULT, 1
goto_if_eq EventScript_275BE8
checkpartymove MOVE_SECRET_POWER
@@ -339,7 +339,7 @@ EventScript_275A50:: @ 8275A50
msgbox gText_23B704, MSGBOX_YESNO
compare VAR_RESULT, 0
goto_if_eq EventScript_275CDE
- msgbox Route103_Text_290771, MSGBOX_DEFAULT
+ msgbox Text_MonUsedHM, MSGBOX_DEFAULT
closemessage
dofieldeffect FLDEFF_USE_SECRET_POWER_CAVE
waitstate
@@ -371,7 +371,7 @@ EventScript_275AA9:: @ 8275AA9
msgbox Text_274779, MSGBOX_YESNO
compare VAR_RESULT, 0
goto_if_eq EventScript_275CDE
- msgbox Route103_Text_290771, MSGBOX_DEFAULT
+ msgbox Text_MonUsedHM, MSGBOX_DEFAULT
closemessage
dofieldeffect FLDEFF_USE_SECRET_POWER_TREE
waitstate
@@ -403,7 +403,7 @@ EventScript_275B02:: @ 8275B02
msgbox Text_274825, MSGBOX_YESNO
compare VAR_RESULT, 0
goto_if_eq EventScript_275CDE
- msgbox Route103_Text_290771, MSGBOX_DEFAULT
+ msgbox Text_MonUsedHM, MSGBOX_DEFAULT
closemessage
dofieldeffect FLDEFF_USE_SECRET_POWER_SHRUB
waitstate
@@ -432,11 +432,11 @@ EventScript_275B5B:: @ 8275B5B
playse SE_KAIDAN
setvar VAR_INIT_SECRET_BASE, 0
setflag FLAG_DECORATION_0
- special sub_80E8E18
- special sub_80E9068
+ special SetPlayerSecretBase
+ special EnterSecretBase
setvar VAR_0x8004, 0
setvar VAR_0x8005, 0
- special sub_80E933C
+ special InitSecretBaseDecorationSprites
setvar VAR_SECRET_BASE_INITIALIZED, 1
waitstate
end
@@ -450,13 +450,13 @@ SecretBase_RedCave1_EventScript_275B81:: @ 8275B81
goto_if_eq SecretBase_RedCave1_EventScript_275BAB
closemessage
playse SE_KAIDAN
- special sub_80E9A90
+ special ClearAndLeaveSecretBase
end
SecretBase_RedCave1_EventScript_275BAB:: @ 8275BAB
closemessage
setflag FLAG_RECEIVED_SECRET_POWER
- special sub_80E91F8
+ special EnterNewlyCreatedSecretBase
waitstate
end
@@ -469,18 +469,18 @@ EventScript_275BB7:: @ 8275BB7
lockall
setvar VAR_INIT_SECRET_BASE, 1
playse SE_KAIDAN
- special sub_80E9744
+ special IsCurSecretBaseOwnedByAnotherPlayer
compare VAR_RESULT, 0
goto_if_eq EventScript_275BDB
clearflag FLAG_DECORATION_0
- special sub_80E9068
+ special EnterSecretBase
setvar VAR_SECRET_BASE_INITIALIZED, 0
waitstate
end
EventScript_275BDB:: @ 8275BDB
setflag FLAG_DECORATION_0
- special sub_80E9068
+ special EnterSecretBase
setvar VAR_SECRET_BASE_INITIALIZED, 0
waitstate
end
@@ -500,7 +500,7 @@ EventScript_275BE8:: @ 8275BE8
compare VAR_RESULT, 0
goto_if_eq EventScript_275CDE
fadescreenswapbuffers 1
- special sub_80E9B70
+ special MoveOutOfSecretBaseFromOutside
closemessage
fadescreenswapbuffers 0
msgbox Text_276A95, MSGBOX_YESNO
@@ -508,7 +508,7 @@ EventScript_275BE8:: @ 8275BE8
goto_if_eq EventScript_275CDE
bufferpartymonnick 0, VAR_0x8004
buffermovename 1, MOVE_SECRET_POWER
- msgbox Route103_Text_290771, MSGBOX_DEFAULT
+ msgbox Text_MonUsedHM, MSGBOX_DEFAULT
closemessage
closemessage
compare VAR_0x8007, 1
@@ -569,7 +569,7 @@ SecretBase_RedCave1_EventScript_275CE1:: @ 8275CE1
EventScript_275D0C:: @ 8275D0C
setvar VAR_0x8004, 0
setvar VAR_0x8005, 0
- special sub_80E933C
+ special InitSecretBaseDecorationSprites
setvar VAR_SECRET_BASE_INITIALIZED, 1
end
@@ -626,7 +626,7 @@ SecretBase_YellowCave1_EventScript_275D64:: @ 8275D64
SecretBase_YellowCave2_EventScript_275D64:: @ 8275D64
SecretBase_YellowCave3_EventScript_275D64:: @ 8275D64
SecretBase_YellowCave4_EventScript_275D64:: @ 8275D64
- special sub_80EA354
+ special GetSecretBaseOwnerInteractionState
compare VAR_0x8004, 0
goto_if_eq SecretBase_RedCave1_EventScript_275DD6
compare VAR_0x8004, 1
@@ -1010,7 +1010,7 @@ SecretBase_RedCave1_EventScript_27627C:: @ 827627C
end
SecretBase_RedCave1_EventScript_276286:: @ 8276286
- special sub_80EA2E4
+ special PrepSecretBaseBattleFlags
setvar VAR_0x8004, SPECIAL_BATTLE_SECRET_BASE
setvar VAR_0x8005, 0
special DoSpecialTrainerBattle
@@ -1039,12 +1039,20 @@ SecretBase_RedCave1_EventScript_2762C5:: @ 82762C5
.include "data/scripts/secret_power_tm.inc"
+SecretBase_EventScript_DollInteract:: @ 82766A2
+ special sub_80EB290
+ end
+
+SecretBase_EventScript_CushionInteract:: @ 82766A6
+ special sub_80EB2C8
+ end
+
Text_2766AA: @ 82766AA
.string "All decorations and furniture in your\n"
.string "SECRET BASE will be returned to your PC.\p"
.string "Is that okay?$"
-Text_276707: @ 8276707
+Text_WantToRegisterSecretBase: @ 8276707
.string "Do you want to register\n"
.string "{STR_VAR_1}'s SECRET BASE?$"
diff --git a/data/scripts/secret_power_tm.inc b/data/scripts/secret_power_tm.inc
index ed7216357..647064829 100644
--- a/data/scripts/secret_power_tm.inc
+++ b/data/scripts/secret_power_tm.inc
@@ -103,11 +103,3 @@ Route111_Movement_276696: @ 8276696
walk_down
walk_down
step_end
-
-EventScript_SecretPower1:: @ 82766A2
- special sub_80EB290
- end
-
-EventScript_SecretPower2:: @ 82766A6
- special sub_80EB2C8
- end
diff --git a/data/specials.inc b/data/specials.inc
index e16b2753d..7a2b0f975 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -14,25 +14,25 @@ gSpecials:: @ 81DBA64
def_special sub_80AF9F8
def_special CleanupLinkRoomState
def_special ExitLinkRoom
- def_special sub_80E8E18
- def_special sub_80E8BC8
- def_special sub_80E9068
- def_special sub_80E9A90
- def_special sub_80E9AC0
- def_special sub_80E9744
- def_special sub_80E9BDC
- def_special sub_80E9C2C
- def_special sub_80E9C74
- def_special sub_80E9C88
- def_special sub_80EA2E4
- def_special sub_80EA354
- def_special sub_80E933C
+ def_special SetPlayerSecretBase
+ def_special CheckPlayerHasSecretBase
+ def_special EnterSecretBase
+ def_special ClearAndLeaveSecretBase
+ def_special MoveOutOfSecretBase
+ def_special IsCurSecretBaseOwnedByAnotherPlayer
+ def_special GetCurSecretBaseRegistrationValidity
+ def_special ToggleCurSecretBaseRegistry
+ def_special ShowSecretBaseDecorationMenu
+ def_special ShowSecretBaseRegistryMenu
+ def_special PrepSecretBaseBattleFlags
+ def_special GetSecretBaseOwnerInteractionState
+ def_special InitSecretBaseDecorationSprites
def_special sub_8127E18
def_special sub_81297AC
- def_special sub_80E8C98
- def_special sub_80E95D4
+ def_special GetSecretBaseTypeInFrontOfPlayer
+ def_special SetSecretBaseOwnerGfxId
def_special sub_8129708
- def_special sub_80E91F8
+ def_special EnterNewlyCreatedSecretBase
def_special sub_80EA30C
def_special DoSecretBasePCTurnOffEffect
def_special RecordMixingPlayerSpotTriggered
@@ -313,7 +313,7 @@ gSpecials:: @ 81DBA64
def_special sub_80AFC60
def_special PutZigzagoonInPlayerParty
def_special IsStarterInParty
- def_special sub_80E980C
+ def_special CopyCurSecretBaseOwnerName_StrVar1
def_special ScriptCheckFreePokemonStorageSpace
def_special DoSealedChamberShakingEffect1
def_special sub_8139B60
@@ -340,7 +340,7 @@ gSpecials:: @ 81DBA64
def_special ScriptGetPartyMonSpecies
def_special sub_81B98DC
def_special nullsub_54
- def_special sub_80E9B70
+ def_special MoveOutOfSecretBaseFromOutside
def_special LoadPlayerBag
def_special sub_80B05B4
def_special SetPacifidlogTMReceivedDay
@@ -361,17 +361,17 @@ gSpecials:: @ 81DBA64
def_special sub_80EED10
def_special sub_80EED34
def_special sub_80EB1AC
- def_special sub_80EBE7C
+ def_special SetSecretBaseSecretsTvFlags_SandOrnament
def_special sub_80EB300
def_special sub_80EB438
def_special sub_80EB368
def_special sub_80EB3D0
def_special sub_80EB290
def_special sub_80EB2C8
- def_special sub_80EB56C
- def_special sub_80EB9E0
- def_special sub_80EBB28
- def_special sub_80EB498
+ def_special SetSecretBaseSecretsTvFlags_MiscFurnature
+ def_special SetSecretBaseSecretsTvFlags_LargeDecorationSpot
+ def_special SetSecretBaseSecretsTvFlags_SmallDecorationSpot
+ def_special SetSecretBaseSecretsTvFlags_Poster
def_special sub_818D9C0
def_special sub_818DAEC
def_special sub_818DBE8
diff --git a/data/text/contest_strings.inc b/data/text/contest_strings.inc
index 1406ba3cb..e332e16bb 100644
--- a/data/text/contest_strings.inc
+++ b/data/text/contest_strings.inc
@@ -633,7 +633,7 @@ gText_0827E6C4:: @ 827E6C4
.string "{STR_VAR_1} was\n"
.string "unaffected.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gText_0827E6E3:: @ 827E6E3
+gText_RepeatedAppeal:: @ 827E6E3
.string "{STR_VAR_1} disappointed\n"
.string "by repeating an appeal.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
diff --git a/graphics/battle_anims/backgrounds/20.bin b/graphics/battle_anims/backgrounds/aurora.bin
index d72acf171..d72acf171 100644
--- a/graphics/battle_anims/backgrounds/20.bin
+++ b/graphics/battle_anims/backgrounds/aurora.bin
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/20.png b/graphics/battle_anims/backgrounds/aurora.png
index 34f22002a..34f22002a 100644
--- a/graphics/battle_anims/backgrounds/20.png
+++ b/graphics/battle_anims/backgrounds/aurora.png
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/22.pal b/graphics/battle_anims/backgrounds/bug.pal
index e8c5f59dc..e8c5f59dc 100644
--- a/graphics/battle_anims/backgrounds/22.pal
+++ b/graphics/battle_anims/backgrounds/bug.pal
diff --git a/graphics/battle_anims/backgrounds/16.bin b/graphics/battle_anims/backgrounds/cosmic.bin
index 54740367a..54740367a 100644
--- a/graphics/battle_anims/backgrounds/16.bin
+++ b/graphics/battle_anims/backgrounds/cosmic.bin
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/16.png b/graphics/battle_anims/backgrounds/cosmic.png
index 6b0aa4973..6b0aa4973 100644
--- a/graphics/battle_anims/backgrounds/16.png
+++ b/graphics/battle_anims/backgrounds/cosmic.png
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/00.bin b/graphics/battle_anims/backgrounds/dark.bin
index dc70b2cf8..dc70b2cf8 100644
--- a/graphics/battle_anims/backgrounds/00.bin
+++ b/graphics/battle_anims/backgrounds/dark.bin
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/00.png b/graphics/battle_anims/backgrounds/dark.png
index f88de79c3..f88de79c3 100644
--- a/graphics/battle_anims/backgrounds/00.png
+++ b/graphics/battle_anims/backgrounds/dark.png
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/07.bin b/graphics/battle_anims/backgrounds/drill.bin
index ca591c75e..ca591c75e 100644
--- a/graphics/battle_anims/backgrounds/07.bin
+++ b/graphics/battle_anims/backgrounds/drill.bin
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/07.png b/graphics/battle_anims/backgrounds/drill.png
index 893bcee52..893bcee52 100644
--- a/graphics/battle_anims/backgrounds/07.png
+++ b/graphics/battle_anims/backgrounds/drill.png
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/08.bin b/graphics/battle_anims/backgrounds/drill_contests.bin
index 8c9716842..8c9716842 100644
--- a/graphics/battle_anims/backgrounds/08.bin
+++ b/graphics/battle_anims/backgrounds/drill_contests.bin
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/21.bin b/graphics/battle_anims/backgrounds/fissure.bin
index e3d6f46e9..e3d6f46e9 100644
--- a/graphics/battle_anims/backgrounds/21.bin
+++ b/graphics/battle_anims/backgrounds/fissure.bin
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/21.png b/graphics/battle_anims/backgrounds/fissure.png
index 1571a1d69..1571a1d69 100644
--- a/graphics/battle_anims/backgrounds/21.png
+++ b/graphics/battle_anims/backgrounds/fissure.png
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/02.bin b/graphics/battle_anims/backgrounds/ghost.bin
index fabe87b3f..fabe87b3f 100644
--- a/graphics/battle_anims/backgrounds/02.bin
+++ b/graphics/battle_anims/backgrounds/ghost.bin
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/02.png b/graphics/battle_anims/backgrounds/ghost.png
index c4519d909..c4519d909 100644
--- a/graphics/battle_anims/backgrounds/02.png
+++ b/graphics/battle_anims/backgrounds/ghost.png
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/12.png b/graphics/battle_anims/backgrounds/guillotine.png
index cd831bb8f..cd831bb8f 100644
--- a/graphics/battle_anims/backgrounds/12.png
+++ b/graphics/battle_anims/backgrounds/guillotine.png
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/14.bin b/graphics/battle_anims/backgrounds/guillotine_contests.bin
index 2181a0227..2181a0227 100644
--- a/graphics/battle_anims/backgrounds/14.bin
+++ b/graphics/battle_anims/backgrounds/guillotine_contests.bin
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/12.bin b/graphics/battle_anims/backgrounds/guillotine_opponent.bin
index 1c0ae690e..1c0ae690e 100644
--- a/graphics/battle_anims/backgrounds/12.bin
+++ b/graphics/battle_anims/backgrounds/guillotine_opponent.bin
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/13.bin b/graphics/battle_anims/backgrounds/guillotine_player.bin
index 89556edc3..89556edc3 100644
--- a/graphics/battle_anims/backgrounds/13.bin
+++ b/graphics/battle_anims/backgrounds/guillotine_player.bin
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/09.png b/graphics/battle_anims/backgrounds/highspeed.png
index 5746191e7..5746191e7 100644
--- a/graphics/battle_anims/backgrounds/09.png
+++ b/graphics/battle_anims/backgrounds/highspeed.png
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/09.bin b/graphics/battle_anims/backgrounds/highspeed_opponent.bin
index d414051ce..d414051ce 100644
--- a/graphics/battle_anims/backgrounds/09.bin
+++ b/graphics/battle_anims/backgrounds/highspeed_opponent.bin
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/10.bin b/graphics/battle_anims/backgrounds/highspeed_player.bin
index 99b488a43..99b488a43 100644
--- a/graphics/battle_anims/backgrounds/10.bin
+++ b/graphics/battle_anims/backgrounds/highspeed_player.bin
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/15.bin b/graphics/battle_anims/backgrounds/ice.bin
index 5b0aff44b..5b0aff44b 100644
--- a/graphics/battle_anims/backgrounds/15.bin
+++ b/graphics/battle_anims/backgrounds/ice.bin
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/15.png b/graphics/battle_anims/backgrounds/ice.png
index 818811701..818811701 100644
--- a/graphics/battle_anims/backgrounds/15.png
+++ b/graphics/battle_anims/backgrounds/ice.png
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/04.png b/graphics/battle_anims/backgrounds/impact.png
index 071684622..071684622 100644
--- a/graphics/battle_anims/backgrounds/04.png
+++ b/graphics/battle_anims/backgrounds/impact.png
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/06.bin b/graphics/battle_anims/backgrounds/impact_contests.bin
index ef73f747c..ef73f747c 100644
--- a/graphics/battle_anims/backgrounds/06.bin
+++ b/graphics/battle_anims/backgrounds/impact_contests.bin
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/04.bin b/graphics/battle_anims/backgrounds/impact_opponent.bin
index 91230cb01..91230cb01 100644
--- a/graphics/battle_anims/backgrounds/04.bin
+++ b/graphics/battle_anims/backgrounds/impact_opponent.bin
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/05.bin b/graphics/battle_anims/backgrounds/impact_player.bin
index 42b26559c..42b26559c 100644
--- a/graphics/battle_anims/backgrounds/05.bin
+++ b/graphics/battle_anims/backgrounds/impact_player.bin
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/17.bin b/graphics/battle_anims/backgrounds/in_air.bin
index 8cb199d05..8cb199d05 100644
--- a/graphics/battle_anims/backgrounds/17.bin
+++ b/graphics/battle_anims/backgrounds/in_air.bin
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/17.png b/graphics/battle_anims/backgrounds/in_air.png
index 5f9dd14dd..5f9dd14dd 100644
--- a/graphics/battle_anims/backgrounds/17.png
+++ b/graphics/battle_anims/backgrounds/in_air.png
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/03.bin b/graphics/battle_anims/backgrounds/psychic.bin
index f642d1c7a..f642d1c7a 100644
--- a/graphics/battle_anims/backgrounds/03.bin
+++ b/graphics/battle_anims/backgrounds/psychic.bin
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/03.png b/graphics/battle_anims/backgrounds/psychic.png
index 2c2f9de87..2c2f9de87 100644
--- a/graphics/battle_anims/backgrounds/03.png
+++ b/graphics/battle_anims/backgrounds/psychic.png
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/18.pal b/graphics/battle_anims/backgrounds/sky.pal
index df2b878f6..df2b878f6 100644
--- a/graphics/battle_anims/backgrounds/18.pal
+++ b/graphics/battle_anims/backgrounds/sky.pal
diff --git a/graphics/battle_anims/backgrounds/24.pal b/graphics/battle_anims/backgrounds/solarbeam.pal
index 5eec18c67..5eec18c67 100644
--- a/graphics/battle_anims/backgrounds/24.pal
+++ b/graphics/battle_anims/backgrounds/solarbeam.pal
diff --git a/graphics/battle_anims/backgrounds/11.bin b/graphics/battle_anims/backgrounds/thunder.bin
index 6aaaae228..6aaaae228 100644
--- a/graphics/battle_anims/backgrounds/11.bin
+++ b/graphics/battle_anims/backgrounds/thunder.bin
Binary files differ
diff --git a/graphics/battle_anims/backgrounds/11.png b/graphics/battle_anims/backgrounds/thunder.png
index 1d63d85bf..1d63d85bf 100644
--- a/graphics/battle_anims/backgrounds/11.png
+++ b/graphics/battle_anims/backgrounds/thunder.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/061.png b/graphics/battle_anims/sprites/air_slash.png
index 6efa4e537..6efa4e537 100644
--- a/graphics/battle_anims/sprites/061.png
+++ b/graphics/battle_anims/sprites/air_slash.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/003.png b/graphics/battle_anims/sprites/air_wave.png
index b3164ff01..b3164ff01 100644
--- a/graphics/battle_anims/sprites/003.png
+++ b/graphics/battle_anims/sprites/air_wave.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/154.png b/graphics/battle_anims/sprites/air_wave_2.png
index 8b55a24a2..8b55a24a2 100644
--- a/graphics/battle_anims/sprites/154.png
+++ b/graphics/battle_anims/sprites/air_wave_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/075.png b/graphics/battle_anims/sprites/alert.png
index 9455a1962..9455a1962 100644
--- a/graphics/battle_anims/sprites/075.png
+++ b/graphics/battle_anims/sprites/alert.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/093.png b/graphics/battle_anims/sprites/amnesia.png
index 29f9e6a50..29f9e6a50 100644
--- a/graphics/battle_anims/sprites/093.png
+++ b/graphics/battle_anims/sprites/amnesia.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/220.png b/graphics/battle_anims/sprites/angel.png
index 900a9e428..900a9e428 100644
--- a/graphics/battle_anims/sprites/220.png
+++ b/graphics/battle_anims/sprites/angel.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/087.png b/graphics/battle_anims/sprites/anger.png
index e0e88687e..e0e88687e 100644
--- a/graphics/battle_anims/sprites/087.png
+++ b/graphics/battle_anims/sprites/anger.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/205.png b/graphics/battle_anims/sprites/bell.png
index 8c558c433..8c558c433 100644
--- a/graphics/battle_anims/sprites/205.png
+++ b/graphics/battle_anims/sprites/bell.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/080.png b/graphics/battle_anims/sprites/bell_2.png
index f4089ee01..f4089ee01 100644
--- a/graphics/battle_anims/sprites/080.png
+++ b/graphics/battle_anims/sprites/bell_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/097.png b/graphics/battle_anims/sprites/bent_spoon.png
index 5366d02cf..5366d02cf 100644
--- a/graphics/battle_anims/sprites/097.png
+++ b/graphics/battle_anims/sprites/bent_spoon.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/284.png b/graphics/battle_anims/sprites/bird.png
index 67c1bcd0a..67c1bcd0a 100644
--- a/graphics/battle_anims/sprites/284.png
+++ b/graphics/battle_anims/sprites/bird.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/017.png b/graphics/battle_anims/sprites/black_ball.png
index e287698b4..e287698b4 100644
--- a/graphics/battle_anims/sprites/017.png
+++ b/graphics/battle_anims/sprites/black_ball.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/171.png b/graphics/battle_anims/sprites/black_ball_2.png
index 7b60d7450..7b60d7450 100644
--- a/graphics/battle_anims/sprites/171.png
+++ b/graphics/battle_anims/sprites/black_ball_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/016.png b/graphics/battle_anims/sprites/black_smoke.png
index df9651411..df9651411 100644
--- a/graphics/battle_anims/sprites/016.png
+++ b/graphics/battle_anims/sprites/black_smoke.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/028.png b/graphics/battle_anims/sprites/blue_burst.png
index b3a096996..b3a096996 100644
--- a/graphics/battle_anims/sprites/028.png
+++ b/graphics/battle_anims/sprites/blue_burst.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/076.png b/graphics/battle_anims/sprites/blue_flames.png
index 4d6d9d0c1..4d6d9d0c1 100644
--- a/graphics/battle_anims/sprites/076.png
+++ b/graphics/battle_anims/sprites/blue_flames.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/077.png b/graphics/battle_anims/sprites/blue_flames_2.png
index c2cc22be3..c2cc22be3 100644
--- a/graphics/battle_anims/sprites/077.png
+++ b/graphics/battle_anims/sprites/blue_flames_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/167.pal b/graphics/battle_anims/sprites/blue_light_wall.pal
index 5f4852f39..5f4852f39 100644
--- a/graphics/battle_anims/sprites/167.pal
+++ b/graphics/battle_anims/sprites/blue_light_wall.pal
diff --git a/graphics/battle_anims/sprites/082.png b/graphics/battle_anims/sprites/blue_lines.png
index a1b2d7318..a1b2d7318 100644
--- a/graphics/battle_anims/sprites/082.png
+++ b/graphics/battle_anims/sprites/blue_lines.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/236.pal b/graphics/battle_anims/sprites/blue_orb.pal
index 0b587a87c..0b587a87c 100644
--- a/graphics/battle_anims/sprites/236.pal
+++ b/graphics/battle_anims/sprites/blue_orb.pal
diff --git a/graphics/battle_anims/sprites/165.pal b/graphics/battle_anims/sprites/blue_ring.pal
index 048980708..048980708 100644
--- a/graphics/battle_anims/sprites/165.pal
+++ b/graphics/battle_anims/sprites/blue_ring.pal
diff --git a/graphics/battle_anims/sprites/288.pal b/graphics/battle_anims/sprites/blue_ring_2.pal
index f8ea0ca54..f8ea0ca54 100644
--- a/graphics/battle_anims/sprites/288.pal
+++ b/graphics/battle_anims/sprites/blue_ring_2.pal
diff --git a/graphics/battle_anims/sprites/023.png b/graphics/battle_anims/sprites/blue_shards.png
index a1dbc20c2..a1dbc20c2 100644
--- a/graphics/battle_anims/sprites/023.png
+++ b/graphics/battle_anims/sprites/blue_shards.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/031.png b/graphics/battle_anims/sprites/blue_star.png
index c6727ad1c..c6727ad1c 100644
--- a/graphics/battle_anims/sprites/031.png
+++ b/graphics/battle_anims/sprites/blue_star.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/251.png b/graphics/battle_anims/sprites/bluegreen_orb.png
index ad16940d9..ad16940d9 100644
--- a/graphics/battle_anims/sprites/251.png
+++ b/graphics/battle_anims/sprites/bluegreen_orb.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/000.png b/graphics/battle_anims/sprites/bone.png
index 3d8662a86..3d8662a86 100644
--- a/graphics/battle_anims/sprites/000.png
+++ b/graphics/battle_anims/sprites/bone.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/119.png b/graphics/battle_anims/sprites/bone_2.png
index 93e03bb00..93e03bb00 100644
--- a/graphics/battle_anims/sprites/119.png
+++ b/graphics/battle_anims/sprites/bone_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/202.png b/graphics/battle_anims/sprites/breaking_egg.png
index 48af9a21e..48af9a21e 100644
--- a/graphics/battle_anims/sprites/202.png
+++ b/graphics/battle_anims/sprites/breaking_egg.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/086.png b/graphics/battle_anims/sprites/breath.png
index ba93d952e..ba93d952e 100644
--- a/graphics/battle_anims/sprites/086.png
+++ b/graphics/battle_anims/sprites/breath.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/259.pal b/graphics/battle_anims/sprites/brown_orb.pal
index ead25c0c6..ead25c0c6 100644
--- a/graphics/battle_anims/sprites/259.pal
+++ b/graphics/battle_anims/sprites/brown_orb.pal
diff --git a/graphics/battle_anims/sprites/066.png b/graphics/battle_anims/sprites/brown_triangle.png
index d70924235..d70924235 100644
--- a/graphics/battle_anims/sprites/066.png
+++ b/graphics/battle_anims/sprites/brown_triangle.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/146.png b/graphics/battle_anims/sprites/bubble.png
index e7b0360a6..e7b0360a6 100644
--- a/graphics/battle_anims/sprites/146.png
+++ b/graphics/battle_anims/sprites/bubble.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/032.png b/graphics/battle_anims/sprites/bubble_burst.png
index 80ffb7b72..80ffb7b72 100644
--- a/graphics/battle_anims/sprites/032.png
+++ b/graphics/battle_anims/sprites/bubble_burst.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/042.png b/graphics/battle_anims/sprites/bubble_burst_2.png
index cf8909080..cf8909080 100644
--- a/graphics/battle_anims/sprites/042.png
+++ b/graphics/battle_anims/sprites/bubble_burst_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/136.png b/graphics/battle_anims/sprites/circle_impact.png
index cc99103d5..cc99103d5 100644
--- a/graphics/battle_anims/sprites/136.png
+++ b/graphics/battle_anims/sprites/circle_impact.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/212.png b/graphics/battle_anims/sprites/circle_of_light.png
index 8a8c3a0ac..8a8c3a0ac 100644
--- a/graphics/battle_anims/sprites/212.png
+++ b/graphics/battle_anims/sprites/circle_of_light.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/145.png b/graphics/battle_anims/sprites/clamp.png
index b44edaadb..b44edaadb 100644
--- a/graphics/battle_anims/sprites/145.png
+++ b/graphics/battle_anims/sprites/clamp.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/091.png b/graphics/battle_anims/sprites/clapping.png
index 7648de5aa..7648de5aa 100644
--- a/graphics/battle_anims/sprites/091.png
+++ b/graphics/battle_anims/sprites/clapping.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/039.png b/graphics/battle_anims/sprites/claw_slash.png
index bc61b20d7..bc61b20d7 100644
--- a/graphics/battle_anims/sprites/039.png
+++ b/graphics/battle_anims/sprites/claw_slash.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/038.png b/graphics/battle_anims/sprites/claw_slash_2.png
index 2dfa037c1..2dfa037c1 100644
--- a/graphics/battle_anims/sprites/038.png
+++ b/graphics/battle_anims/sprites/claw_slash_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/024.png b/graphics/battle_anims/sprites/closing_eye.png
index 7c5d0f382..7c5d0f382 100644
--- a/graphics/battle_anims/sprites/024.png
+++ b/graphics/battle_anims/sprites/closing_eye.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/125.png b/graphics/battle_anims/sprites/closing_eye_2.png
index 2bc2c212f..2bc2c212f 100644
--- a/graphics/battle_anims/sprites/125.png
+++ b/graphics/battle_anims/sprites/closing_eye_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/100.png b/graphics/battle_anims/sprites/coin.png
index 057655918..057655918 100644
--- a/graphics/battle_anims/sprites/100.png
+++ b/graphics/battle_anims/sprites/coin.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/240.png b/graphics/battle_anims/sprites/confetti.png
index 783dd40f9..783dd40f9 100644
--- a/graphics/battle_anims/sprites/240.png
+++ b/graphics/battle_anims/sprites/confetti.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/018.png b/graphics/battle_anims/sprites/conversion.png
index c760ff81a..c760ff81a 100644
--- a/graphics/battle_anims/sprites/018.png
+++ b/graphics/battle_anims/sprites/conversion.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/101.png b/graphics/battle_anims/sprites/cracked_egg.png
index f2fa227f2..f2fa227f2 100644
--- a/graphics/battle_anims/sprites/101.png
+++ b/graphics/battle_anims/sprites/cracked_egg.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/285.png b/graphics/battle_anims/sprites/cross_impact.png
index eb54111b2..eb54111b2 100644
--- a/graphics/battle_anims/sprites/285.png
+++ b/graphics/battle_anims/sprites/cross_impact.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/138.png b/graphics/battle_anims/sprites/cut.png
index 559244bbc..559244bbc 100644
--- a/graphics/battle_anims/sprites/138.png
+++ b/graphics/battle_anims/sprites/cut.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/221.png b/graphics/battle_anims/sprites/devil.png
index f30ca7907..f30ca7907 100644
--- a/graphics/battle_anims/sprites/221.png
+++ b/graphics/battle_anims/sprites/devil.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/281.png b/graphics/battle_anims/sprites/dirt_mound.png
index e3cc13492..e3cc13492 100644
--- a/graphics/battle_anims/sprites/281.png
+++ b/graphics/battle_anims/sprites/dirt_mound.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/073.png b/graphics/battle_anims/sprites/duck.png
index 95484d2a0..95484d2a0 100644
--- a/graphics/battle_anims/sprites/073.png
+++ b/graphics/battle_anims/sprites/duck.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/234.png b/graphics/battle_anims/sprites/eclipsing_orb.png
index e5efece20..e5efece20 100644
--- a/graphics/battle_anims/sprites/234.png
+++ b/graphics/battle_anims/sprites/eclipsing_orb.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/211.png b/graphics/battle_anims/sprites/electric_orbs.png
index 28f5317e5..28f5317e5 100644
--- a/graphics/battle_anims/sprites/211.png
+++ b/graphics/battle_anims/sprites/electric_orbs.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/213.png b/graphics/battle_anims/sprites/electricity.png
index 90a622f64..90a622f64 100644
--- a/graphics/battle_anims/sprites/213.png
+++ b/graphics/battle_anims/sprites/electricity.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/198.png b/graphics/battle_anims/sprites/explosion.png
index abe613212..abe613212 100644
--- a/graphics/battle_anims/sprites/198.png
+++ b/graphics/battle_anims/sprites/explosion.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/105.png b/graphics/battle_anims/sprites/explosion_2.png
index 5df0e7215..5df0e7215 100644
--- a/graphics/battle_anims/sprites/105.png
+++ b/graphics/battle_anims/sprites/explosion_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/106.png b/graphics/battle_anims/sprites/explosion_3.png
index 82297fb00..82297fb00 100644
--- a/graphics/battle_anims/sprites/106.png
+++ b/graphics/battle_anims/sprites/explosion_3.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/130.png b/graphics/battle_anims/sprites/explosion_4.png
index 4a753e6d5..4a753e6d5 100644
--- a/graphics/battle_anims/sprites/130.png
+++ b/graphics/battle_anims/sprites/explosion_4.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/131.png b/graphics/battle_anims/sprites/explosion_5.png
index 4683e161f..4683e161f 100644
--- a/graphics/battle_anims/sprites/131.png
+++ b/graphics/battle_anims/sprites/explosion_5.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/007.png b/graphics/battle_anims/sprites/explosion_6.png
index 5a2369dad..5a2369dad 100644
--- a/graphics/battle_anims/sprites/007.png
+++ b/graphics/battle_anims/sprites/explosion_6.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/187.png b/graphics/battle_anims/sprites/eye.png
index b0caeb98f..b0caeb98f 100644
--- a/graphics/battle_anims/sprites/187.png
+++ b/graphics/battle_anims/sprites/eye.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/218.png b/graphics/battle_anims/sprites/eye_sparkle.png
index d22ff8ef9..d22ff8ef9 100644
--- a/graphics/battle_anims/sprites/218.png
+++ b/graphics/battle_anims/sprites/eye_sparkle.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/192.png b/graphics/battle_anims/sprites/fang_attack.png
index 1f76354ab..1f76354ab 100644
--- a/graphics/battle_anims/sprites/192.png
+++ b/graphics/battle_anims/sprites/fang_attack.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/104.png b/graphics/battle_anims/sprites/fangs.png
index 7c4244da0..7c4244da0 100644
--- a/graphics/battle_anims/sprites/104.png
+++ b/graphics/battle_anims/sprites/fangs.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/064.png b/graphics/battle_anims/sprites/finger.png
index 069f4a311..069f4a311 100644
--- a/graphics/battle_anims/sprites/064.png
+++ b/graphics/battle_anims/sprites/finger.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/214.png b/graphics/battle_anims/sprites/finger_2.png
index 9f6fc8d81..9f6fc8d81 100644
--- a/graphics/battle_anims/sprites/214.png
+++ b/graphics/battle_anims/sprites/finger_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/033.png b/graphics/battle_anims/sprites/fire.png
index eb1ed3473..eb1ed3473 100644
--- a/graphics/battle_anims/sprites/033.png
+++ b/graphics/battle_anims/sprites/fire.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/035.png b/graphics/battle_anims/sprites/fire_plume.png
index cde2105dd..cde2105dd 100644
--- a/graphics/battle_anims/sprites/035.png
+++ b/graphics/battle_anims/sprites/fire_plume.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/257.png b/graphics/battle_anims/sprites/flat_rock.png
index d3fba6c4f..d3fba6c4f 100644
--- a/graphics/battle_anims/sprites/257.png
+++ b/graphics/battle_anims/sprites/flat_rock.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/001.pal b/graphics/battle_anims/sprites/flower.pal
index 81af310e1..81af310e1 100644
--- a/graphics/battle_anims/sprites/001.pal
+++ b/graphics/battle_anims/sprites/flower.pal
diff --git a/graphics/battle_anims/sprites/159_0.png b/graphics/battle_anims/sprites/flower_0.png
index 4e9831863..4e9831863 100644
--- a/graphics/battle_anims/sprites/159_0.png
+++ b/graphics/battle_anims/sprites/flower_0.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/159_1.png b/graphics/battle_anims/sprites/flower_1.png
index 065ea5052..065ea5052 100644
--- a/graphics/battle_anims/sprites/159_1.png
+++ b/graphics/battle_anims/sprites/flower_1.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/261.png b/graphics/battle_anims/sprites/flying_dirt.png
index 12f0b1744..12f0b1744 100644
--- a/graphics/battle_anims/sprites/261.png
+++ b/graphics/battle_anims/sprites/flying_dirt.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/184.png b/graphics/battle_anims/sprites/focus_energy.png
index 99ba7e475..99ba7e475 100644
--- a/graphics/battle_anims/sprites/184.png
+++ b/graphics/battle_anims/sprites/focus_energy.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/103.png b/graphics/battle_anims/sprites/fresh_egg.png
index 0ad9c1b14..0ad9c1b14 100644
--- a/graphics/battle_anims/sprites/103.png
+++ b/graphics/battle_anims/sprites/fresh_egg.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/116.png b/graphics/battle_anims/sprites/fury_swipes.png
index b9e0df20e..b9e0df20e 100644
--- a/graphics/battle_anims/sprites/116.png
+++ b/graphics/battle_anims/sprites/fury_swipes.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/274.png b/graphics/battle_anims/sprites/gem_1.png
index e284c57a6..e284c57a6 100644
--- a/graphics/battle_anims/sprites/274.png
+++ b/graphics/battle_anims/sprites/gem_1.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/275.png b/graphics/battle_anims/sprites/gem_2.png
index b1b7b6644..b1b7b6644 100644
--- a/graphics/battle_anims/sprites/275.png
+++ b/graphics/battle_anims/sprites/gem_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/276.png b/graphics/battle_anims/sprites/gem_3.png
index 21d51a22b..21d51a22b 100644
--- a/graphics/battle_anims/sprites/276.png
+++ b/graphics/battle_anims/sprites/gem_3.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/200.png b/graphics/battle_anims/sprites/ghostly_spirit.png
index b7b9d16e6..b7b9d16e6 100644
--- a/graphics/battle_anims/sprites/200.png
+++ b/graphics/battle_anims/sprites/ghostly_spirit.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/019.png b/graphics/battle_anims/sprites/glass.png
index af29ec730..af29ec730 100644
--- a/graphics/battle_anims/sprites/019.png
+++ b/graphics/battle_anims/sprites/glass.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/044.png b/graphics/battle_anims/sprites/glass_2.png
index 7baf82357..7baf82357 100644
--- a/graphics/battle_anims/sprites/044.png
+++ b/graphics/battle_anims/sprites/glass_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/268.pal b/graphics/battle_anims/sprites/glowy_blue_orb.pal
index d40d72f69..d40d72f69 100644
--- a/graphics/battle_anims/sprites/268.pal
+++ b/graphics/battle_anims/sprites/glowy_blue_orb.pal
diff --git a/graphics/battle_anims/sprites/265.pal b/graphics/battle_anims/sprites/glowy_green_orb.pal
index 34914d257..34914d257 100644
--- a/graphics/battle_anims/sprites/265.pal
+++ b/graphics/battle_anims/sprites/glowy_green_orb.pal
diff --git a/graphics/battle_anims/sprites/264.png b/graphics/battle_anims/sprites/glowy_red_orb.png
index a590d96a5..a590d96a5 100644
--- a/graphics/battle_anims/sprites/264.png
+++ b/graphics/battle_anims/sprites/glowy_red_orb.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/163.png b/graphics/battle_anims/sprites/gold_ring.png
index 29c06f9b7..29c06f9b7 100644
--- a/graphics/battle_anims/sprites/163.png
+++ b/graphics/battle_anims/sprites/gold_ring.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/233.png b/graphics/battle_anims/sprites/gold_stars.png
index e71e97eda..e71e97eda 100644
--- a/graphics/battle_anims/sprites/233.png
+++ b/graphics/battle_anims/sprites/gold_stars.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/169.pal b/graphics/battle_anims/sprites/gray_light_wall.pal
index 6d037b09f..6d037b09f 100644
--- a/graphics/battle_anims/sprites/169.pal
+++ b/graphics/battle_anims/sprites/gray_light_wall.pal
diff --git a/graphics/battle_anims/sprites/235.png b/graphics/battle_anims/sprites/gray_orb.png
index 1bbd9c027..1bbd9c027 100644
--- a/graphics/battle_anims/sprites/235.png
+++ b/graphics/battle_anims/sprites/gray_orb.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/030.png b/graphics/battle_anims/sprites/gray_smoke.png
index ba7161fa1..ba7161fa1 100644
--- a/graphics/battle_anims/sprites/030.png
+++ b/graphics/battle_anims/sprites/gray_smoke.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/166.png b/graphics/battle_anims/sprites/green_light_wall.png
index b5fefee24..b5fefee24 100644
--- a/graphics/battle_anims/sprites/166.png
+++ b/graphics/battle_anims/sprites/green_light_wall.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/195.png b/graphics/battle_anims/sprites/green_sparkle.png
index 9aefe398e..9aefe398e 100644
--- a/graphics/battle_anims/sprites/195.png
+++ b/graphics/battle_anims/sprites/green_sparkle.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/266.png b/graphics/battle_anims/sprites/green_spike.png
index c53e8059c..c53e8059c 100644
--- a/graphics/battle_anims/sprites/266.png
+++ b/graphics/battle_anims/sprites/green_spike.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/241.png b/graphics/battle_anims/sprites/green_star.png
index 21218ceb6..21218ceb6 100644
--- a/graphics/battle_anims/sprites/241.png
+++ b/graphics/battle_anims/sprites/green_star.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/244.png b/graphics/battle_anims/sprites/guard_ring.png
index 09e0c0d68..09e0c0d68 100644
--- a/graphics/battle_anims/sprites/244.png
+++ b/graphics/battle_anims/sprites/guard_ring.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/009.png b/graphics/battle_anims/sprites/gust.png
index 5818ae41d..5818ae41d 100644
--- a/graphics/battle_anims/sprites/009.png
+++ b/graphics/battle_anims/sprites/gust.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/263.png b/graphics/battle_anims/sprites/hail.png
index 53148056c..53148056c 100644
--- a/graphics/battle_anims/sprites/263.png
+++ b/graphics/battle_anims/sprites/hail.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/143.png b/graphics/battle_anims/sprites/hands_and_feet.png
index da3f273ac..da3f273ac 100644
--- a/graphics/battle_anims/sprites/143.png
+++ b/graphics/battle_anims/sprites/hands_and_feet.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/102.png b/graphics/battle_anims/sprites/hatched_egg.png
index aa8842244..aa8842244 100644
--- a/graphics/battle_anims/sprites/102.png
+++ b/graphics/battle_anims/sprites/hatched_egg.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/021.png b/graphics/battle_anims/sprites/hit.png
index c531b820c..c531b820c 100644
--- a/graphics/battle_anims/sprites/021.png
+++ b/graphics/battle_anims/sprites/hit.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/022.pal b/graphics/battle_anims/sprites/hit_2.pal
index 35cbf0096..35cbf0096 100644
--- a/graphics/battle_anims/sprites/022.pal
+++ b/graphics/battle_anims/sprites/hit_2.pal
diff --git a/graphics/battle_anims/sprites/026.png b/graphics/battle_anims/sprites/hit_duplicate.png
index c531b820c..c531b820c 100644
--- a/graphics/battle_anims/sprites/026.png
+++ b/graphics/battle_anims/sprites/hit_duplicate.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/249.png b/graphics/battle_anims/sprites/hollow_orb.png
index 33d6511ff..33d6511ff 100644
--- a/graphics/battle_anims/sprites/249.png
+++ b/graphics/battle_anims/sprites/hollow_orb.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/020.png b/graphics/battle_anims/sprites/horn_hit.png
index 73c7f1344..73c7f1344 100644
--- a/graphics/battle_anims/sprites/020.png
+++ b/graphics/battle_anims/sprites/horn_hit.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/153.png b/graphics/battle_anims/sprites/horn_hit_2.png
index d3dd12ae1..d3dd12ae1 100644
--- a/graphics/battle_anims/sprites/153.png
+++ b/graphics/battle_anims/sprites/horn_hit_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/050.png b/graphics/battle_anims/sprites/humanoid_foot.png
index 9f2c101e4..9f2c101e4 100644
--- a/graphics/battle_anims/sprites/050.png
+++ b/graphics/battle_anims/sprites/humanoid_foot.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/052.png b/graphics/battle_anims/sprites/humanoid_hand.png
index 9928271d5..9928271d5 100644
--- a/graphics/battle_anims/sprites/052.png
+++ b/graphics/battle_anims/sprites/humanoid_hand.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/043.png b/graphics/battle_anims/sprites/ice_chunk.png
index e5e929ede..e5e929ede 100644
--- a/graphics/battle_anims/sprites/043.png
+++ b/graphics/battle_anims/sprites/ice_chunk.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/010.pal b/graphics/battle_anims/sprites/ice_crystals.pal
index c5f241feb..c5f241feb 100644
--- a/graphics/battle_anims/sprites/010.pal
+++ b/graphics/battle_anims/sprites/ice_crystals.pal
diff --git a/graphics/battle_anims/sprites/141_0.png b/graphics/battle_anims/sprites/ice_crystals_0.png
index 631d344c8..631d344c8 100644
--- a/graphics/battle_anims/sprites/141_0.png
+++ b/graphics/battle_anims/sprites/ice_crystals_0.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/141_1.png b/graphics/battle_anims/sprites/ice_crystals_1.png
index 95f24953f..95f24953f 100644
--- a/graphics/battle_anims/sprites/141_1.png
+++ b/graphics/battle_anims/sprites/ice_crystals_1.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/141_2.png b/graphics/battle_anims/sprites/ice_crystals_2.png
index ec1e4b090..ec1e4b090 100644
--- a/graphics/battle_anims/sprites/141_2.png
+++ b/graphics/battle_anims/sprites/ice_crystals_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/141_3.png b/graphics/battle_anims/sprites/ice_crystals_3.png
index 02ac9d68e..02ac9d68e 100644
--- a/graphics/battle_anims/sprites/141_3.png
+++ b/graphics/battle_anims/sprites/ice_crystals_3.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/141_4.png b/graphics/battle_anims/sprites/ice_crystals_4.png
index a7af91f4b..a7af91f4b 100644
--- a/graphics/battle_anims/sprites/141_4.png
+++ b/graphics/battle_anims/sprites/ice_crystals_4.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/141.pal b/graphics/battle_anims/sprites/ice_cube.pal
index c5f241feb..c5f241feb 100644
--- a/graphics/battle_anims/sprites/141.pal
+++ b/graphics/battle_anims/sprites/ice_cube.pal
diff --git a/graphics/battle_anims/sprites/010_0.png b/graphics/battle_anims/sprites/ice_cube_0.png
index 8eea99de0..8eea99de0 100644
--- a/graphics/battle_anims/sprites/010_0.png
+++ b/graphics/battle_anims/sprites/ice_cube_0.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/010_1.png b/graphics/battle_anims/sprites/ice_cube_1.png
index ba3ca6192..ba3ca6192 100644
--- a/graphics/battle_anims/sprites/010_1.png
+++ b/graphics/battle_anims/sprites/ice_cube_1.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/010_2.png b/graphics/battle_anims/sprites/ice_cube_2.png
index b71a875e7..b71a875e7 100644
--- a/graphics/battle_anims/sprites/010_2.png
+++ b/graphics/battle_anims/sprites/ice_cube_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/010_3.png b/graphics/battle_anims/sprites/ice_cube_3.png
index e310ca5df..e310ca5df 100644
--- a/graphics/battle_anims/sprites/010_3.png
+++ b/graphics/battle_anims/sprites/ice_cube_3.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/142.png b/graphics/battle_anims/sprites/ice_spikes.png
index 130bcf82e..130bcf82e 100644
--- a/graphics/battle_anims/sprites/142.png
+++ b/graphics/battle_anims/sprites/ice_spikes.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/262.png b/graphics/battle_anims/sprites/icicle_spear.png
index 857558fd2..857558fd2 100644
--- a/graphics/battle_anims/sprites/262.png
+++ b/graphics/battle_anims/sprites/icicle_spear.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/135.png b/graphics/battle_anims/sprites/impact.png
index 38a04f373..38a04f373 100644
--- a/graphics/battle_anims/sprites/135.png
+++ b/graphics/battle_anims/sprites/impact.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/084.png b/graphics/battle_anims/sprites/impact_2.png
index 306668035..306668035 100644
--- a/graphics/battle_anims/sprites/084.png
+++ b/graphics/battle_anims/sprites/impact_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/083.png b/graphics/battle_anims/sprites/impact_3.png
index 8e8178422..8e8178422 100644
--- a/graphics/battle_anims/sprites/083.png
+++ b/graphics/battle_anims/sprites/impact_3.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/224.png b/graphics/battle_anims/sprites/item_bag.png
index c6e8a1c63..c6e8a1c63 100644
--- a/graphics/battle_anims/sprites/224.png
+++ b/graphics/battle_anims/sprites/item_bag.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/225.png b/graphics/battle_anims/sprites/jagged_music_note.png
index c4efbf2de..c4efbf2de 100644
--- a/graphics/battle_anims/sprites/225.png
+++ b/graphics/battle_anims/sprites/jagged_music_note.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/175.png b/graphics/battle_anims/sprites/large_fresh_egg.png
index 042ef87ac..042ef87ac 100644
--- a/graphics/battle_anims/sprites/175.png
+++ b/graphics/battle_anims/sprites/large_fresh_egg.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/063.png b/graphics/battle_anims/sprites/leaf.png
index 8828f4e8d..8828f4e8d 100644
--- a/graphics/battle_anims/sprites/063.png
+++ b/graphics/battle_anims/sprites/leaf.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/027.png b/graphics/battle_anims/sprites/leer.png
index 28b3876b7..28b3876b7 100644
--- a/graphics/battle_anims/sprites/027.png
+++ b/graphics/battle_anims/sprites/leer.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/228.png b/graphics/battle_anims/sprites/letter_z.png
index e569fea34..e569fea34 100644
--- a/graphics/battle_anims/sprites/228.png
+++ b/graphics/battle_anims/sprites/letter_z.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/177.png b/graphics/battle_anims/sprites/lick.png
index ec1b2246b..ec1b2246b 100644
--- a/graphics/battle_anims/sprites/177.png
+++ b/graphics/battle_anims/sprites/lick.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/182.png b/graphics/battle_anims/sprites/lightbulb.png
index e586f630b..e586f630b 100644
--- a/graphics/battle_anims/sprites/182.png
+++ b/graphics/battle_anims/sprites/lightbulb.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/037.png b/graphics/battle_anims/sprites/lightning.png
index 62a692036..62a692036 100644
--- a/graphics/battle_anims/sprites/037.png
+++ b/graphics/battle_anims/sprites/lightning.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/036.png b/graphics/battle_anims/sprites/lightning_2.png
index bddf4a25a..bddf4a25a 100644
--- a/graphics/battle_anims/sprites/036.png
+++ b/graphics/battle_anims/sprites/lightning_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/014.png b/graphics/battle_anims/sprites/lock_on.png
index ab635306b..ab635306b 100644
--- a/graphics/battle_anims/sprites/014.png
+++ b/graphics/battle_anims/sprites/lock_on.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/210.png b/graphics/battle_anims/sprites/magenta_heart.png
index 5ebfa0684..5ebfa0684 100644
--- a/graphics/battle_anims/sprites/210.png
+++ b/graphics/battle_anims/sprites/magenta_heart.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/258.png b/graphics/battle_anims/sprites/magnifying_glass.png
index bf50cc099..bf50cc099 100644
--- a/graphics/battle_anims/sprites/258.png
+++ b/graphics/battle_anims/sprites/magnifying_glass.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/126.png b/graphics/battle_anims/sprites/metal_ball.png
index 9f1962902..9f1962902 100644
--- a/graphics/battle_anims/sprites/126.png
+++ b/graphics/battle_anims/sprites/metal_ball.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/260.png b/graphics/battle_anims/sprites/metal_sound_waves.png
index c7883c900..c7883c900 100644
--- a/graphics/battle_anims/sprites/260.png
+++ b/graphics/battle_anims/sprites/metal_sound_waves.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/256.png b/graphics/battle_anims/sprites/meteor.png
index 7043d824b..7043d824b 100644
--- a/graphics/battle_anims/sprites/256.png
+++ b/graphics/battle_anims/sprites/meteor.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/099.png b/graphics/battle_anims/sprites/milk_bottle.png
index a7a79f8bf..a7a79f8bf 100644
--- a/graphics/battle_anims/sprites/099.png
+++ b/graphics/battle_anims/sprites/milk_bottle.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/144.png b/graphics/battle_anims/sprites/mist_cloud.png
index 069926395..069926395 100644
--- a/graphics/battle_anims/sprites/144.png
+++ b/graphics/battle_anims/sprites/mist_cloud.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/127.png b/graphics/battle_anims/sprites/monster_doll.png
index 55706275c..55706275c 100644
--- a/graphics/battle_anims/sprites/127.png
+++ b/graphics/battle_anims/sprites/monster_doll.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/051.png b/graphics/battle_anims/sprites/monster_foot.png
index 14d7036bc..14d7036bc 100644
--- a/graphics/battle_anims/sprites/051.png
+++ b/graphics/battle_anims/sprites/monster_foot.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/194.png b/graphics/battle_anims/sprites/moon.png
index 228013658..228013658 100644
--- a/graphics/battle_anims/sprites/194.png
+++ b/graphics/battle_anims/sprites/moon.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/215.png b/graphics/battle_anims/sprites/movement_waves.png
index 895ab4ec5..895ab4ec5 100644
--- a/graphics/battle_anims/sprites/215.png
+++ b/graphics/battle_anims/sprites/movement_waves.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/074.pal b/graphics/battle_anims/sprites/mud_sand.pal
index f8976f672..f8976f672 100644
--- a/graphics/battle_anims/sprites/074.pal
+++ b/graphics/battle_anims/sprites/mud_sand.pal
diff --git a/graphics/battle_anims/sprites/074_0.png b/graphics/battle_anims/sprites/mud_sand_0.png
index 81af47193..81af47193 100644
--- a/graphics/battle_anims/sprites/074_0.png
+++ b/graphics/battle_anims/sprites/mud_sand_0.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/074_1.png b/graphics/battle_anims/sprites/mud_sand_1.png
index 827ec5d48..827ec5d48 100644
--- a/graphics/battle_anims/sprites/074_1.png
+++ b/graphics/battle_anims/sprites/mud_sand_1.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/114.png b/graphics/battle_anims/sprites/mud_unk.png
index b1bee0080..b1bee0080 100644
--- a/graphics/battle_anims/sprites/114.png
+++ b/graphics/battle_anims/sprites/mud_unk.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/072.png b/graphics/battle_anims/sprites/music_notes.png
index 14976ded1..14976ded1 100644
--- a/graphics/battle_anims/sprites/072.png
+++ b/graphics/battle_anims/sprites/music_notes.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/206.pal b/graphics/battle_anims/sprites/music_notes_2.pal
index b90e8d645..b90e8d645 100644
--- a/graphics/battle_anims/sprites/206.pal
+++ b/graphics/battle_anims/sprites/music_notes_2.pal
diff --git a/graphics/battle_anims/sprites/206.png b/graphics/battle_anims/sprites/music_notes_2.png
index d3584f855..d3584f855 100644
--- a/graphics/battle_anims/sprites/206.png
+++ b/graphics/battle_anims/sprites/music_notes_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/199.png b/graphics/battle_anims/sprites/nail.png
index 9468fddc9..9468fddc9 100644
--- a/graphics/battle_anims/sprites/199.png
+++ b/graphics/battle_anims/sprites/nail.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/161.png b/graphics/battle_anims/sprites/needle.png
index 5976b2b8c..5976b2b8c 100644
--- a/graphics/battle_anims/sprites/161.png
+++ b/graphics/battle_anims/sprites/needle.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/053.png b/graphics/battle_anims/sprites/noise_line.png
index 9aaccf334..9aaccf334 100644
--- a/graphics/battle_anims/sprites/053.png
+++ b/graphics/battle_anims/sprites/noise_line.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/190.png b/graphics/battle_anims/sprites/opening_eye.png
index 6fcb4826e..6fcb4826e 100644
--- a/graphics/battle_anims/sprites/190.png
+++ b/graphics/battle_anims/sprites/opening_eye.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/012.png b/graphics/battle_anims/sprites/orange.png
index 1a9e4c870..1a9e4c870 100644
--- a/graphics/battle_anims/sprites/012.png
+++ b/graphics/battle_anims/sprites/orange.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/170.pal b/graphics/battle_anims/sprites/orange_light_wall.pal
index 63ff0a239..63ff0a239 100644
--- a/graphics/battle_anims/sprites/170.pal
+++ b/graphics/battle_anims/sprites/orange_light_wall.pal
diff --git a/graphics/battle_anims/sprites/004.png b/graphics/battle_anims/sprites/orb.png
index c7cad5ef9..c7cad5ef9 100644
--- a/graphics/battle_anims/sprites/004.png
+++ b/graphics/battle_anims/sprites/orb.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/147.png b/graphics/battle_anims/sprites/orbs.png
index 6dcc9cdff..6dcc9cdff 100644
--- a/graphics/battle_anims/sprites/147.png
+++ b/graphics/battle_anims/sprites/orbs.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/239.png b/graphics/battle_anims/sprites/pain_split.png
index b2c2d72ce..b2c2d72ce 100644
--- a/graphics/battle_anims/sprites/239.png
+++ b/graphics/battle_anims/sprites/pain_split.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/252.png b/graphics/battle_anims/sprites/paw_print.png
index 2ed8eee4a..2ed8eee4a 100644
--- a/graphics/battle_anims/sprites/252.png
+++ b/graphics/battle_anims/sprites/paw_print.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/002.png b/graphics/battle_anims/sprites/pencil.png
index c2a98f6f5..c2a98f6f5 100644
--- a/graphics/battle_anims/sprites/002.png
+++ b/graphics/battle_anims/sprites/pencil.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/095.png b/graphics/battle_anims/sprites/pencil_2.png
index 616b02121..616b02121 100644
--- a/graphics/battle_anims/sprites/095.png
+++ b/graphics/battle_anims/sprites/pencil_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/096.png b/graphics/battle_anims/sprites/petal.png
index 99873ba10..99873ba10 100644
--- a/graphics/battle_anims/sprites/096.png
+++ b/graphics/battle_anims/sprites/petal.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/242.png b/graphics/battle_anims/sprites/pink_cloud.png
index 414225c8f..414225c8f 100644
--- a/graphics/battle_anims/sprites/242.png
+++ b/graphics/battle_anims/sprites/pink_cloud.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/081.png b/graphics/battle_anims/sprites/pink_glove.png
index 0d6783cd9..0d6783cd9 100644
--- a/graphics/battle_anims/sprites/081.png
+++ b/graphics/battle_anims/sprites/pink_glove.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/219.pal b/graphics/battle_anims/sprites/pink_heart.pal
index 27cf421cc..27cf421cc 100644
--- a/graphics/battle_anims/sprites/219.pal
+++ b/graphics/battle_anims/sprites/pink_heart.pal
diff --git a/graphics/battle_anims/sprites/045.png b/graphics/battle_anims/sprites/pink_heart_2.png
index 45aeae356..45aeae356 100644
--- a/graphics/battle_anims/sprites/045.png
+++ b/graphics/battle_anims/sprites/pink_heart_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/008.png b/graphics/battle_anims/sprites/pink_orb.png
index 634c4d2bb..634c4d2bb 100644
--- a/graphics/battle_anims/sprites/008.png
+++ b/graphics/battle_anims/sprites/pink_orb.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/238.png b/graphics/battle_anims/sprites/pink_petal.png
index 1c9565881..1c9565881 100644
--- a/graphics/battle_anims/sprites/238.png
+++ b/graphics/battle_anims/sprites/pink_petal.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/150.png b/graphics/battle_anims/sprites/poison_bubble.png
index e6c55b573..e6c55b573 100644
--- a/graphics/battle_anims/sprites/150.png
+++ b/graphics/battle_anims/sprites/poison_bubble.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/065.png b/graphics/battle_anims/sprites/poison_powder.png
index 8916253e4..8916253e4 100644
--- a/graphics/battle_anims/sprites/065.png
+++ b/graphics/battle_anims/sprites/poison_powder.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/226.png b/graphics/battle_anims/sprites/pokeball.png
index a8b2e817a..a8b2e817a 100644
--- a/graphics/battle_anims/sprites/226.png
+++ b/graphics/battle_anims/sprites/pokeball.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/269.png b/graphics/battle_anims/sprites/pokeblock.png
index d699f4c48..d699f4c48 100644
--- a/graphics/battle_anims/sprites/269.png
+++ b/graphics/battle_anims/sprites/pokeblock.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/280.png b/graphics/battle_anims/sprites/protect.png
index ce7f086fd..ce7f086fd 100644
--- a/graphics/battle_anims/sprites/280.png
+++ b/graphics/battle_anims/sprites/protect.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/204.png b/graphics/battle_anims/sprites/punch_impact.png
index c36d57e10..c36d57e10 100644
--- a/graphics/battle_anims/sprites/204.png
+++ b/graphics/battle_anims/sprites/punch_impact.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/122.png b/graphics/battle_anims/sprites/purple_coral.png
index 0a1da6c03..0a1da6c03 100644
--- a/graphics/battle_anims/sprites/122.png
+++ b/graphics/battle_anims/sprites/purple_coral.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/123.png b/graphics/battle_anims/sprites/purple_droplet.png
index c1d71a8b7..c1d71a8b7 100644
--- a/graphics/battle_anims/sprites/123.png
+++ b/graphics/battle_anims/sprites/purple_droplet.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/253.png b/graphics/battle_anims/sprites/purple_flame.png
index 22f08ddef..22f08ddef 100644
--- a/graphics/battle_anims/sprites/253.png
+++ b/graphics/battle_anims/sprites/purple_flame.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/172.pal b/graphics/battle_anims/sprites/purple_gas_cloud.pal
index 4b1755b0c..4b1755b0c 100644
--- a/graphics/battle_anims/sprites/172.pal
+++ b/graphics/battle_anims/sprites/purple_gas_cloud.pal
diff --git a/graphics/battle_anims/sprites/112.png b/graphics/battle_anims/sprites/purple_green_unk.png
index 4503849e9..4503849e9 100644
--- a/graphics/battle_anims/sprites/112.png
+++ b/graphics/battle_anims/sprites/purple_green_unk.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/193.png b/graphics/battle_anims/sprites/purple_hand_outline.png
index f3b6bd2c2..f3b6bd2c2 100644
--- a/graphics/battle_anims/sprites/193.png
+++ b/graphics/battle_anims/sprites/purple_hand_outline.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/164.pal b/graphics/battle_anims/sprites/purple_ring.pal
index 4fdffdcdb..4fdffdcdb 100644
--- a/graphics/battle_anims/sprites/164.pal
+++ b/graphics/battle_anims/sprites/purple_ring.pal
diff --git a/graphics/battle_anims/sprites/245.png b/graphics/battle_anims/sprites/purple_scratch.png
index 39618d394..39618d394 100644
--- a/graphics/battle_anims/sprites/245.png
+++ b/graphics/battle_anims/sprites/purple_scratch.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/246.png b/graphics/battle_anims/sprites/purple_swipe.png
index d1835b10b..d1835b10b 100644
--- a/graphics/battle_anims/sprites/246.png
+++ b/graphics/battle_anims/sprites/purple_swipe.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/115.png b/graphics/battle_anims/sprites/rain_drops.png
index 51c909134..51c909134 100644
--- a/graphics/battle_anims/sprites/115.png
+++ b/graphics/battle_anims/sprites/rain_drops.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/140.png b/graphics/battle_anims/sprites/rainbow_rings.png
index 1133f2ee8..1133f2ee8 100644
--- a/graphics/battle_anims/sprites/140.png
+++ b/graphics/battle_anims/sprites/rainbow_rings.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/229.png b/graphics/battle_anims/sprites/rapid_spin.png
index be1e038da..be1e038da 100644
--- a/graphics/battle_anims/sprites/229.png
+++ b/graphics/battle_anims/sprites/rapid_spin.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/160.png b/graphics/battle_anims/sprites/razor_leaf.png
index 35459b66b..35459b66b 100644
--- a/graphics/battle_anims/sprites/160.png
+++ b/graphics/battle_anims/sprites/razor_leaf.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/278.png b/graphics/battle_anims/sprites/recycle.png
index 7281bfdbd..7281bfdbd 100644
--- a/graphics/battle_anims/sprites/278.png
+++ b/graphics/battle_anims/sprites/recycle.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/254.png b/graphics/battle_anims/sprites/red_ball.png
index 1aa77e17f..1aa77e17f 100644
--- a/graphics/battle_anims/sprites/254.png
+++ b/graphics/battle_anims/sprites/red_ball.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/055.png b/graphics/battle_anims/sprites/red_fist.png
index bd6590322..bd6590322 100644
--- a/graphics/battle_anims/sprites/055.png
+++ b/graphics/battle_anims/sprites/red_fist.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/216.pal b/graphics/battle_anims/sprites/red_heart.pal
index 225cf9cf6..225cf9cf6 100644
--- a/graphics/battle_anims/sprites/216.pal
+++ b/graphics/battle_anims/sprites/red_heart.pal
diff --git a/graphics/battle_anims/sprites/168.pal b/graphics/battle_anims/sprites/red_light_wall.pal
index a99d113d2..a99d113d2 100644
--- a/graphics/battle_anims/sprites/168.pal
+++ b/graphics/battle_anims/sprites/red_light_wall.pal
diff --git a/graphics/battle_anims/sprites/217.png b/graphics/battle_anims/sprites/red_orb.png
index 3583670eb..3583670eb 100644
--- a/graphics/battle_anims/sprites/217.png
+++ b/graphics/battle_anims/sprites/red_orb.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/237.pal b/graphics/battle_anims/sprites/red_orb_2.pal
index 3eddc5612..3eddc5612 100644
--- a/graphics/battle_anims/sprites/237.pal
+++ b/graphics/battle_anims/sprites/red_orb_2.pal
diff --git a/graphics/battle_anims/sprites/279.png b/graphics/battle_anims/sprites/red_particles.png
index 46933b76e..46933b76e 100644
--- a/graphics/battle_anims/sprites/279.png
+++ b/graphics/battle_anims/sprites/red_particles.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/092.png b/graphics/battle_anims/sprites/red_tube.png
index 8d98d6eaa..8d98d6eaa 100644
--- a/graphics/battle_anims/sprites/092.png
+++ b/graphics/battle_anims/sprites/red_tube.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/111.png b/graphics/battle_anims/sprites/red_wand.png
index 2bbbe8694..2bbbe8694 100644
--- a/graphics/battle_anims/sprites/111.png
+++ b/graphics/battle_anims/sprites/red_wand.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/085.png b/graphics/battle_anims/sprites/reticle.png
index ab9fdce5e..ab9fdce5e 100644
--- a/graphics/battle_anims/sprites/085.png
+++ b/graphics/battle_anims/sprites/reticle.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/057.png b/graphics/battle_anims/sprites/ring.png
index ffc3f7634..ffc3f7634 100644
--- a/graphics/battle_anims/sprites/057.png
+++ b/graphics/battle_anims/sprites/ring.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/058.png b/graphics/battle_anims/sprites/rocks.png
index 89e01f78a..89e01f78a 100644
--- a/graphics/battle_anims/sprites/058.png
+++ b/graphics/battle_anims/sprites/rocks.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/223.png b/graphics/battle_anims/sprites/roots.png
index 5f9dbf83e..5f9dbf83e 100644
--- a/graphics/battle_anims/sprites/223.png
+++ b/graphics/battle_anims/sprites/roots.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/156.png b/graphics/battle_anims/sprites/round_shadow.png
index c0567df8c..c0567df8c 100644
--- a/graphics/battle_anims/sprites/156.png
+++ b/graphics/battle_anims/sprites/round_shadow.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/191.png b/graphics/battle_anims/sprites/round_white_halo.png
index e1442ff5c..e1442ff5c 100644
--- a/graphics/battle_anims/sprites/191.png
+++ b/graphics/battle_anims/sprites/round_white_halo.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/046.png b/graphics/battle_anims/sprites/sap_drip.png
index 85a052486..85a052486 100644
--- a/graphics/battle_anims/sprites/046.png
+++ b/graphics/battle_anims/sprites/sap_drip.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/047.pal b/graphics/battle_anims/sprites/sap_drip_2.pal
index 226cf039a..226cf039a 100644
--- a/graphics/battle_anims/sprites/047.pal
+++ b/graphics/battle_anims/sprites/sap_drip_2.pal
diff --git a/graphics/battle_anims/sprites/137.png b/graphics/battle_anims/sprites/scratch.png
index 7f3d26644..7f3d26644 100644
--- a/graphics/battle_anims/sprites/137.png
+++ b/graphics/battle_anims/sprites/scratch.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/041.png b/graphics/battle_anims/sprites/scratch_2.png
index e088c1f86..e088c1f86 100644
--- a/graphics/battle_anims/sprites/041.png
+++ b/graphics/battle_anims/sprites/scratch_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/040.png b/graphics/battle_anims/sprites/scratch_3.png
index c7d493d92..c7d493d92 100644
--- a/graphics/battle_anims/sprites/040.png
+++ b/graphics/battle_anims/sprites/scratch_3.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/006.png b/graphics/battle_anims/sprites/seed.png
index 30e2dffc1..30e2dffc1 100644
--- a/graphics/battle_anims/sprites/006.png
+++ b/graphics/battle_anims/sprites/seed.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/109.png b/graphics/battle_anims/sprites/seed_2.png
index f848e388b..f848e388b 100644
--- a/graphics/battle_anims/sprites/109.png
+++ b/graphics/battle_anims/sprites/seed_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/176.png b/graphics/battle_anims/sprites/shadow_ball.png
index aaa3c2f96..aaa3c2f96 100644
--- a/graphics/battle_anims/sprites/176.png
+++ b/graphics/battle_anims/sprites/shadow_ball.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/139.png b/graphics/battle_anims/sprites/sharp_teeth.png
index 38b74a9e4..38b74a9e4 100644
--- a/graphics/battle_anims/sprites/139.png
+++ b/graphics/battle_anims/sprites/sharp_teeth.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/079.png b/graphics/battle_anims/sprites/shock.png
index 193ba3942..193ba3942 100644
--- a/graphics/battle_anims/sprites/079.png
+++ b/graphics/battle_anims/sprites/shock.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/124.png b/graphics/battle_anims/sprites/shock_2.png
index 343705a07..343705a07 100644
--- a/graphics/battle_anims/sprites/124.png
+++ b/graphics/battle_anims/sprites/shock_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/282.png b/graphics/battle_anims/sprites/shock_3.png
index d89aab1ad..d89aab1ad 100644
--- a/graphics/battle_anims/sprites/282.png
+++ b/graphics/battle_anims/sprites/shock_3.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/078.png b/graphics/battle_anims/sprites/shock_4.png
index b48af4900..b48af4900 100644
--- a/graphics/battle_anims/sprites/078.png
+++ b/graphics/battle_anims/sprites/shock_4.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/056.png b/graphics/battle_anims/sprites/slam_hit.png
index 1a10645a4..1a10645a4 100644
--- a/graphics/battle_anims/sprites/056.png
+++ b/graphics/battle_anims/sprites/slam_hit.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/277.png b/graphics/battle_anims/sprites/slam_hit_2.png
index 7745fc28c..7745fc28c 100644
--- a/graphics/battle_anims/sprites/277.png
+++ b/graphics/battle_anims/sprites/slam_hit_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/183.png b/graphics/battle_anims/sprites/slash.png
index 55b2044b8..55b2044b8 100644
--- a/graphics/battle_anims/sprites/183.png
+++ b/graphics/battle_anims/sprites/slash.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/286.pal b/graphics/battle_anims/sprites/slash_2.pal
index a2703b853..a2703b853 100644
--- a/graphics/battle_anims/sprites/286.pal
+++ b/graphics/battle_anims/sprites/slash_2.pal
diff --git a/graphics/battle_anims/sprites/067.pal b/graphics/battle_anims/sprites/sleep_powder.pal
index 4c3a4265e..4c3a4265e 100644
--- a/graphics/battle_anims/sprites/067.pal
+++ b/graphics/battle_anims/sprites/sleep_powder.pal
diff --git a/graphics/battle_anims/sprites/155.png b/graphics/battle_anims/sprites/small_bubbles.png
index 9547b39fa..9547b39fa 100644
--- a/graphics/battle_anims/sprites/155.png
+++ b/graphics/battle_anims/sprites/small_bubbles.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/029.png b/graphics/battle_anims/sprites/small_ember.png
index b04a8dc65..b04a8dc65 100644
--- a/graphics/battle_anims/sprites/029.png
+++ b/graphics/battle_anims/sprites/small_ember.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/248.png b/graphics/battle_anims/sprites/small_red_eye.png
index 5a3fb393f..5a3fb393f 100644
--- a/graphics/battle_anims/sprites/248.png
+++ b/graphics/battle_anims/sprites/small_red_eye.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/255.png b/graphics/battle_anims/sprites/smellingsalt_effect.png
index f5f8c9e8b..f5f8c9e8b 100644
--- a/graphics/battle_anims/sprites/255.png
+++ b/graphics/battle_anims/sprites/smellingsalt_effect.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/133.png b/graphics/battle_anims/sprites/smoke.png
index cebce575e..cebce575e 100644
--- a/graphics/battle_anims/sprites/133.png
+++ b/graphics/battle_anims/sprites/smoke.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/134.png b/graphics/battle_anims/sprites/smoke_2.png
index 933852b07..933852b07 100644
--- a/graphics/battle_anims/sprites/134.png
+++ b/graphics/battle_anims/sprites/smoke_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/197.png b/graphics/battle_anims/sprites/snore_z.png
index ac7ac5083..ac7ac5083 100644
--- a/graphics/battle_anims/sprites/197.png
+++ b/graphics/battle_anims/sprites/snore_z.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/088.png b/graphics/battle_anims/sprites/snowball.png
index 09fed7d85..09fed7d85 100644
--- a/graphics/battle_anims/sprites/088.png
+++ b/graphics/battle_anims/sprites/snowball.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/159.pal b/graphics/battle_anims/sprites/spark.pal
index 81af310e1..81af310e1 100644
--- a/graphics/battle_anims/sprites/159.pal
+++ b/graphics/battle_anims/sprites/spark.pal
diff --git a/graphics/battle_anims/sprites/001_0.png b/graphics/battle_anims/sprites/spark_0.png
index 77c454dcb..77c454dcb 100644
--- a/graphics/battle_anims/sprites/001_0.png
+++ b/graphics/battle_anims/sprites/spark_0.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/001_1.png b/graphics/battle_anims/sprites/spark_1.png
index 2cfd6bd0b..2cfd6bd0b 100644
--- a/graphics/battle_anims/sprites/001_1.png
+++ b/graphics/battle_anims/sprites/spark_1.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/011.png b/graphics/battle_anims/sprites/spark_2.png
index 23ce049b0..23ce049b0 100644
--- a/graphics/battle_anims/sprites/011.png
+++ b/graphics/battle_anims/sprites/spark_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/173.png b/graphics/battle_anims/sprites/spark_h.png
index d50982122..d50982122 100644
--- a/graphics/battle_anims/sprites/173.png
+++ b/graphics/battle_anims/sprites/spark_h.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/048.png b/graphics/battle_anims/sprites/sparkle_1.png
index 4a6631ab8..4a6631ab8 100644
--- a/graphics/battle_anims/sprites/048.png
+++ b/graphics/battle_anims/sprites/sparkle_1.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/049.pal b/graphics/battle_anims/sprites/sparkle_2.pal
index 268ce4f4f..268ce4f4f 100644
--- a/graphics/battle_anims/sprites/049.pal
+++ b/graphics/battle_anims/sprites/sparkle_2.pal
diff --git a/graphics/battle_anims/sprites/070.png b/graphics/battle_anims/sprites/sparkle_3.png
index dfb03010c..dfb03010c 100644
--- a/graphics/battle_anims/sprites/070.png
+++ b/graphics/battle_anims/sprites/sparkle_3.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/071.png b/graphics/battle_anims/sprites/sparkle_4.png
index 88d20bb5e..88d20bb5e 100644
--- a/graphics/battle_anims/sprites/071.png
+++ b/graphics/battle_anims/sprites/sparkle_4.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/271.png b/graphics/battle_anims/sprites/sparkle_6.png
index d77ca0682..d77ca0682 100644
--- a/graphics/battle_anims/sprites/271.png
+++ b/graphics/battle_anims/sprites/sparkle_6.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/207.png b/graphics/battle_anims/sprites/speed_dust.png
index 0d3450c6e..0d3450c6e 100644
--- a/graphics/battle_anims/sprites/207.png
+++ b/graphics/battle_anims/sprites/speed_dust.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/185.png b/graphics/battle_anims/sprites/sphere_to_cube.png
index f3a4305c5..f3a4305c5 100644
--- a/graphics/battle_anims/sprites/185.png
+++ b/graphics/battle_anims/sprites/sphere_to_cube.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/181.png b/graphics/battle_anims/sprites/spider_web.png
index ea561b9db..ea561b9db 100644
--- a/graphics/battle_anims/sprites/181.png
+++ b/graphics/battle_anims/sprites/spider_web.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/152.png b/graphics/battle_anims/sprites/spikes.png
index 1b5e8e904..1b5e8e904 100644
--- a/graphics/battle_anims/sprites/152.png
+++ b/graphics/battle_anims/sprites/spikes.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/034.png b/graphics/battle_anims/sprites/spinning_fire.png
index 22f836d1e..22f836d1e 100644
--- a/graphics/battle_anims/sprites/034.png
+++ b/graphics/battle_anims/sprites/spinning_fire.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/062.png b/graphics/battle_anims/sprites/spinning_green_orbs.png
index bdfaa78c4..bdfaa78c4 100644
--- a/graphics/battle_anims/sprites/062.png
+++ b/graphics/battle_anims/sprites/spinning_green_orbs.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/196.png b/graphics/battle_anims/sprites/spiral.png
index c3dee2e0a..c3dee2e0a 100644
--- a/graphics/battle_anims/sprites/196.png
+++ b/graphics/battle_anims/sprites/spiral.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/272.png b/graphics/battle_anims/sprites/splash.png
index 0acaa474d..0acaa474d 100644
--- a/graphics/battle_anims/sprites/272.png
+++ b/graphics/battle_anims/sprites/splash.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/158.png b/graphics/battle_anims/sprites/spore.png
index a91eaafdb..a91eaafdb 100644
--- a/graphics/battle_anims/sprites/158.png
+++ b/graphics/battle_anims/sprites/spore.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/227.png b/graphics/battle_anims/sprites/spotlight.png
index baa51d106..baa51d106 100644
--- a/graphics/battle_anims/sprites/227.png
+++ b/graphics/battle_anims/sprites/spotlight.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/110.png b/graphics/battle_anims/sprites/sprout.png
index 787cb58c3..787cb58c3 100644
--- a/graphics/battle_anims/sprites/110.png
+++ b/graphics/battle_anims/sprites/sprout.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/179.png b/graphics/battle_anims/sprites/string.png
index 94f102402..94f102402 100644
--- a/graphics/battle_anims/sprites/179.png
+++ b/graphics/battle_anims/sprites/string.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/094.png b/graphics/battle_anims/sprites/string_2.png
index c29ff535d..c29ff535d 100644
--- a/graphics/battle_anims/sprites/094.png
+++ b/graphics/battle_anims/sprites/string_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/068.pal b/graphics/battle_anims/sprites/stun_spore.pal
index 3075ab6b6..3075ab6b6 100644
--- a/graphics/battle_anims/sprites/068.pal
+++ b/graphics/battle_anims/sprites/stun_spore.pal
diff --git a/graphics/battle_anims/sprites/157.png b/graphics/battle_anims/sprites/sunlight.png
index 7fa6a0531..7fa6a0531 100644
--- a/graphics/battle_anims/sprites/157.png
+++ b/graphics/battle_anims/sprites/sunlight.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/273.png b/graphics/battle_anims/sprites/sweat_bead.png
index 6398df8c0..6398df8c0 100644
--- a/graphics/battle_anims/sprites/273.png
+++ b/graphics/battle_anims/sprites/sweat_bead.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/243.png b/graphics/battle_anims/sprites/sweat_drop.png
index 15cffcc85..15cffcc85 100644
--- a/graphics/battle_anims/sprites/243.png
+++ b/graphics/battle_anims/sprites/sweat_drop.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/222.png b/graphics/battle_anims/sprites/swipe.png
index 1205494d4..1205494d4 100644
--- a/graphics/battle_anims/sprites/222.png
+++ b/graphics/battle_anims/sprites/swipe.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/005.png b/graphics/battle_anims/sprites/sword.png
index 8bd4ac426..8bd4ac426 100644
--- a/graphics/battle_anims/sprites/005.png
+++ b/graphics/battle_anims/sprites/sword.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/090.png b/graphics/battle_anims/sprites/sword_2.png
index c90ff299d..c90ff299d 100644
--- a/graphics/battle_anims/sprites/090.png
+++ b/graphics/battle_anims/sprites/sword_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/247.png b/graphics/battle_anims/sprites/tag_hand.png
index 858d4640d..858d4640d 100644
--- a/graphics/battle_anims/sprites/247.png
+++ b/graphics/battle_anims/sprites/tag_hand.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/189.png b/graphics/battle_anims/sprites/teal_alert.png
index 67fdd4536..67fdd4536 100644
--- a/graphics/battle_anims/sprites/189.png
+++ b/graphics/battle_anims/sprites/teal_alert.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/118.png b/graphics/battle_anims/sprites/teeth.png
index 6e2075e51..6e2075e51 100644
--- a/graphics/battle_anims/sprites/118.png
+++ b/graphics/battle_anims/sprites/teeth.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/186.png b/graphics/battle_anims/sprites/tendrils.png
index 8fbc31367..8fbc31367 100644
--- a/graphics/battle_anims/sprites/186.png
+++ b/graphics/battle_anims/sprites/tendrils.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/203.png b/graphics/battle_anims/sprites/thin_ring.png
index f7a81679f..f7a81679f 100644
--- a/graphics/battle_anims/sprites/203.png
+++ b/graphics/battle_anims/sprites/thin_ring.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/209.png b/graphics/battle_anims/sprites/thought_bubble.png
index dea2a60bb..dea2a60bb 100644
--- a/graphics/battle_anims/sprites/209.png
+++ b/graphics/battle_anims/sprites/thought_bubble.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/015.png b/graphics/battle_anims/sprites/tied_bag.png
index 48895d36a..48895d36a 100644
--- a/graphics/battle_anims/sprites/015.png
+++ b/graphics/battle_anims/sprites/tied_bag.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/132.png b/graphics/battle_anims/sprites/tongue.png
index ebed3740a..ebed3740a 100644
--- a/graphics/battle_anims/sprites/132.png
+++ b/graphics/battle_anims/sprites/tongue.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/208.png b/graphics/battle_anims/sprites/torn_metal.png
index 61bac622e..61bac622e 100644
--- a/graphics/battle_anims/sprites/208.png
+++ b/graphics/battle_anims/sprites/torn_metal.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/151.png b/graphics/battle_anims/sprites/toxic_bubble.png
index bf7819273..bf7819273 100644
--- a/graphics/battle_anims/sprites/151.png
+++ b/graphics/battle_anims/sprites/toxic_bubble.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/230.png b/graphics/battle_anims/sprites/tri_force_triangle.png
index 9157118fd..9157118fd 100644
--- a/graphics/battle_anims/sprites/230.png
+++ b/graphics/battle_anims/sprites/tri_force_triangle.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/121.png b/graphics/battle_anims/sprites/unknown.png
index c4fc11f86..c4fc11f86 100644
--- a/graphics/battle_anims/sprites/121.png
+++ b/graphics/battle_anims/sprites/unknown.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/089.png b/graphics/battle_anims/sprites/vine.png
index 19155f2c4..19155f2c4 100644
--- a/graphics/battle_anims/sprites/089.png
+++ b/graphics/battle_anims/sprites/vine.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/117.png b/graphics/battle_anims/sprites/vine_2.png
index f2c7e1b41..f2c7e1b41 100644
--- a/graphics/battle_anims/sprites/117.png
+++ b/graphics/battle_anims/sprites/vine_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/178.png b/graphics/battle_anims/sprites/void_lines.png
index c7b68d278..c7b68d278 100644
--- a/graphics/battle_anims/sprites/178.png
+++ b/graphics/battle_anims/sprites/void_lines.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/201.png b/graphics/battle_anims/sprites/warm_rock.png
index 4b8cb700c..4b8cb700c 100644
--- a/graphics/battle_anims/sprites/201.png
+++ b/graphics/battle_anims/sprites/warm_rock.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/113.png b/graphics/battle_anims/sprites/water_column.png
index 3a4a5b328..3a4a5b328 100644
--- a/graphics/battle_anims/sprites/113.png
+++ b/graphics/battle_anims/sprites/water_column.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/107.png b/graphics/battle_anims/sprites/water_droplet.png
index 202152ab4..202152ab4 100644
--- a/graphics/battle_anims/sprites/107.png
+++ b/graphics/battle_anims/sprites/water_droplet.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/108.png b/graphics/battle_anims/sprites/water_droplet_2.png
index f3f5871b4..f3f5871b4 100644
--- a/graphics/battle_anims/sprites/108.png
+++ b/graphics/battle_anims/sprites/water_droplet_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/148.png b/graphics/battle_anims/sprites/water_impact.png
index ea5738321..ea5738321 100644
--- a/graphics/battle_anims/sprites/148.png
+++ b/graphics/battle_anims/sprites/water_impact.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/149.png b/graphics/battle_anims/sprites/water_orb.png
index 8e52802d7..8e52802d7 100644
--- a/graphics/battle_anims/sprites/149.png
+++ b/graphics/battle_anims/sprites/water_orb.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/025.png b/graphics/battle_anims/sprites/waving_hand.png
index 864f71065..864f71065 100644
--- a/graphics/battle_anims/sprites/025.png
+++ b/graphics/battle_anims/sprites/waving_hand.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/283.png b/graphics/battle_anims/sprites/weather_ball.png
index 03853aef6..03853aef6 100644
--- a/graphics/battle_anims/sprites/283.png
+++ b/graphics/battle_anims/sprites/weather_ball.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/098.png b/graphics/battle_anims/sprites/web.png
index 33cfd705c..33cfd705c 100644
--- a/graphics/battle_anims/sprites/098.png
+++ b/graphics/battle_anims/sprites/web.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/180.png b/graphics/battle_anims/sprites/web_thread.png
index 76eb7c9a8..76eb7c9a8 100644
--- a/graphics/battle_anims/sprites/180.png
+++ b/graphics/battle_anims/sprites/web_thread.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/287.pal b/graphics/battle_anims/sprites/whip_hit.pal
index 631948567..631948567 100644
--- a/graphics/battle_anims/sprites/287.pal
+++ b/graphics/battle_anims/sprites/whip_hit.pal
diff --git a/graphics/battle_anims/sprites/128.png b/graphics/battle_anims/sprites/whirlwind.png
index fb9e61980..fb9e61980 100644
--- a/graphics/battle_anims/sprites/128.png
+++ b/graphics/battle_anims/sprites/whirlwind.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/129.png b/graphics/battle_anims/sprites/whirlwind_2.png
index c29a44c06..c29a44c06 100644
--- a/graphics/battle_anims/sprites/129.png
+++ b/graphics/battle_anims/sprites/whirlwind_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/162.png b/graphics/battle_anims/sprites/whirlwind_lines.png
index f1fac116b..f1fac116b 100644
--- a/graphics/battle_anims/sprites/162.png
+++ b/graphics/battle_anims/sprites/whirlwind_lines.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/120.png b/graphics/battle_anims/sprites/white_bag.png
index 58e15e018..58e15e018 100644
--- a/graphics/battle_anims/sprites/120.png
+++ b/graphics/battle_anims/sprites/white_bag.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/267.pal b/graphics/battle_anims/sprites/white_circle_of_light.pal
index 1973e6f45..1973e6f45 100644
--- a/graphics/battle_anims/sprites/267.pal
+++ b/graphics/battle_anims/sprites/white_circle_of_light.pal
diff --git a/graphics/battle_anims/sprites/270.png b/graphics/battle_anims/sprites/white_feather.png
index 1581ad1ea..1581ad1ea 100644
--- a/graphics/battle_anims/sprites/270.png
+++ b/graphics/battle_anims/sprites/white_feather.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/188.png b/graphics/battle_anims/sprites/white_shadow.png
index 3b0b6f402..3b0b6f402 100644
--- a/graphics/battle_anims/sprites/188.png
+++ b/graphics/battle_anims/sprites/white_shadow.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/232.png b/graphics/battle_anims/sprites/wisp_fire.png
index ebdf118e1..ebdf118e1 100644
--- a/graphics/battle_anims/sprites/232.png
+++ b/graphics/battle_anims/sprites/wisp_fire.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/231.png b/graphics/battle_anims/sprites/wisp_orb.png
index 7b3474bb9..7b3474bb9 100644
--- a/graphics/battle_anims/sprites/231.png
+++ b/graphics/battle_anims/sprites/wisp_orb.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/250.png b/graphics/battle_anims/sprites/x_sign.png
index 4088e3328..4088e3328 100644
--- a/graphics/battle_anims/sprites/250.png
+++ b/graphics/battle_anims/sprites/x_sign.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/013.png b/graphics/battle_anims/sprites/yellow_ball.png
index 407671ff6..407671ff6 100644
--- a/graphics/battle_anims/sprites/013.png
+++ b/graphics/battle_anims/sprites/yellow_ball.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/174.png b/graphics/battle_anims/sprites/yellow_star.png
index d8cf8dbe4..d8cf8dbe4 100644
--- a/graphics/battle_anims/sprites/174.png
+++ b/graphics/battle_anims/sprites/yellow_star.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/054.png b/graphics/battle_anims/sprites/yellow_unk.png
index afffd9e77..afffd9e77 100644
--- a/graphics/battle_anims/sprites/054.png
+++ b/graphics/battle_anims/sprites/yellow_unk.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/060.png b/graphics/battle_anims/sprites/yellow_unk_2.png
index c4c0fb53e..c4c0fb53e 100644
--- a/graphics/battle_anims/sprites/060.png
+++ b/graphics/battle_anims/sprites/yellow_unk_2.png
Binary files differ
diff --git a/graphics/battle_anims/sprites/059.png b/graphics/battle_anims/sprites/z.png
index 4d93be124..4d93be124 100644
--- a/graphics/battle_anims/sprites/059.png
+++ b/graphics/battle_anims/sprites/z.png
Binary files differ
diff --git a/graphics/decorations/unk_85a6bb0.pal b/graphics/decorations/decoration_menu.pal
index 4239a1f5e..4239a1f5e 100644
--- a/graphics/decorations/unk_85a6bb0.pal
+++ b/graphics/decorations/decoration_menu.pal
diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk
index 0516a8a4d..bc51b1e1f 100644
--- a/graphics_file_rules.mk
+++ b/graphics_file_rules.mk
@@ -325,10 +325,10 @@ $(BATINTGFXDIR)/textbox.gbapal: $(BATINTGFXDIR)/textbox_0.gbapal \
$(BATINTGFXDIR)/textbox_1.gbapal
@cat $^ >$@
-$(BTLANMSPRGFXDIR)/010.4bpp: $(BTLANMSPRGFXDIR)/010_0.4bpp \
- $(BTLANMSPRGFXDIR)/010_1.4bpp \
- $(BTLANMSPRGFXDIR)/010_2.4bpp \
- $(BTLANMSPRGFXDIR)/010_3.4bpp
+$(BTLANMSPRGFXDIR)/ice_cube.4bpp: $(BTLANMSPRGFXDIR)/ice_cube_0.4bpp \
+ $(BTLANMSPRGFXDIR)/ice_cube_1.4bpp \
+ $(BTLANMSPRGFXDIR)/ice_cube_2.4bpp \
+ $(BTLANMSPRGFXDIR)/ice_cube_3.4bpp
@cat $^ >$@
$(UNUSEDGFXDIR)/obi_palpak1.gbapal: $(UNUSEDGFXDIR)/old_pal1.gbapal \
@@ -384,23 +384,23 @@ $(UNUSEDGFXDIR)/old_contest_2.4bpp: $(UNUSEDGFXDIR)/old_contest_2_1.4bpp \
$(UNKNOWNGFXDIR)/unknown_C19470.4bpp: %.4bpp: %.png
$(GFX) $< $@ -num_tiles 36
-$(BTLANMSPRGFXDIR)/141.4bpp: $(BTLANMSPRGFXDIR)/141_0.4bpp \
- $(BTLANMSPRGFXDIR)/141_1.4bpp \
- $(BTLANMSPRGFXDIR)/141_2.4bpp \
- $(BTLANMSPRGFXDIR)/141_3.4bpp \
- $(BTLANMSPRGFXDIR)/141_4.4bpp
+$(BTLANMSPRGFXDIR)/ice_crystals.4bpp: $(BTLANMSPRGFXDIR)/ice_crystals_0.4bpp \
+ $(BTLANMSPRGFXDIR)/ice_crystals_1.4bpp \
+ $(BTLANMSPRGFXDIR)/ice_crystals_2.4bpp \
+ $(BTLANMSPRGFXDIR)/ice_crystals_3.4bpp \
+ $(BTLANMSPRGFXDIR)/ice_crystals_4.4bpp
@cat $^ >$@
-$(BTLANMSPRGFXDIR)/074.4bpp: $(BTLANMSPRGFXDIR)/074_0.4bpp \
- $(BTLANMSPRGFXDIR)/074_1.4bpp
+$(BTLANMSPRGFXDIR)/mud_sand.4bpp: $(BTLANMSPRGFXDIR)/mud_sand_0.4bpp \
+ $(BTLANMSPRGFXDIR)/mud_sand_1.4bpp
@cat $^ >$@
-$(BTLANMSPRGFXDIR)/159.4bpp: $(BTLANMSPRGFXDIR)/159_0.4bpp \
- $(BTLANMSPRGFXDIR)/159_1.4bpp
+$(BTLANMSPRGFXDIR)/flower.4bpp: $(BTLANMSPRGFXDIR)/flower_0.4bpp \
+ $(BTLANMSPRGFXDIR)/flower_1.4bpp
@cat $^ >$@
-$(BTLANMSPRGFXDIR)/001.4bpp: $(BTLANMSPRGFXDIR)/001_0.4bpp \
- $(BTLANMSPRGFXDIR)/001_1.4bpp
+$(BTLANMSPRGFXDIR)/spark.4bpp: $(BTLANMSPRGFXDIR)/spark_0.4bpp \
+ $(BTLANMSPRGFXDIR)/spark_1.4bpp
@cat $^ >$@
$(MASKSGFXDIR)/unknown_C2EA50.4bpp: %.4bpp: %.png
diff --git a/include/battle.h b/include/battle.h
index 13c1851cf..0f4087c90 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -62,70 +62,12 @@
#define BATTLE_BUFFER_LINK_SIZE 0x1000
-struct TrainerMonNoItemDefaultMoves
-{
- u16 iv;
- u8 lvl;
- u16 species;
-};
-
-struct TrainerMonItemDefaultMoves
-{
- u16 iv;
- u8 lvl;
- u16 species;
- u16 heldItem;
-};
-
-struct TrainerMonNoItemCustomMoves
-{
- u16 iv;
- u8 lvl;
- u16 species;
- u16 moves[4];
-};
-
-struct TrainerMonItemCustomMoves
-{
- u16 iv;
- u8 lvl;
- u16 species;
- u16 heldItem;
- u16 moves[4];
-};
-
-union TrainerMonPtr
-{
- const struct TrainerMonNoItemDefaultMoves *NoItemDefaultMoves;
- const struct TrainerMonNoItemCustomMoves *NoItemCustomMoves;
- const struct TrainerMonItemDefaultMoves *ItemDefaultMoves;
- const struct TrainerMonItemCustomMoves *ItemCustomMoves;
-};
-
-struct Trainer
-{
- /*0x00*/ u8 partyFlags;
- /*0x01*/ u8 trainerClass;
- /*0x02*/ u8 encounterMusic_gender; // last bit is gender
- /*0x03*/ u8 trainerPic;
- /*0x04*/ u8 trainerName[12];
- /*0x10*/ u16 items[4];
- /*0x18*/ bool8 doubleBattle;
- /*0x1C*/ u32 aiFlags;
- /*0x20*/ u8 partySize;
- /*0x24*/ union TrainerMonPtr party;
-};
-
-extern const struct Trainer gTrainers[];
-
-#define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F))
-
-struct UnknownFlags
+struct ResourceFlags
{
u32 flags[4];
};
-#define UNKNOWN_FLAG_FLASH_FIRE 1
+#define RESOURCE_FLAG_FLASH_FIRE 1
struct DisableStruct
{
@@ -276,21 +218,16 @@ struct BattleCallbacksStack
struct StatsArray
{
- u16 hp;
- u16 atk;
- u16 def;
- u16 spd;
- u16 spAtk;
- u16 spDef;
+ u16 stats[NUM_STATS];
};
struct BattleResources
{
- struct SecretBaseRecord* secretBase;
- struct UnknownFlags *flags;
+ struct SecretBase* secretBase;
+ struct ResourceFlags *flags;
struct BattleScriptsStack* battleScriptsStack;
struct BattleCallbacksStack* battleCallbackStack;
- struct StatsArray* statsBeforeLvlUp;
+ struct StatsArray* beforeLvlUp;
struct AI_ThinkingStruct *ai;
struct BattleHistory *battleHistory;
struct BattleScriptsStack *AI_ScriptsStack;
@@ -774,6 +711,5 @@ extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
extern u8 gMultiUsePlayerCursor;
extern u8 gNumberOfMovesToChoose;
extern u8 gUnknown_03005D7C[MAX_BATTLERS_COUNT];
-extern const u8 gTrainerClassNames[][13];
#endif // GUARD_BATTLE_H
diff --git a/include/battle_anim.h b/include/battle_anim.h
index 949bc236b..a7b71bd85 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -62,7 +62,7 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
bool8 IsContest(void);
s8 BattleAnimAdjustPanning(s8 pan);
s8 BattleAnimAdjustPanning2(s8 pan);
-s16 KeepPanInRange(s16 a);
+s16 KeepPanInRange(s16 a, int oldPan);
s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
void sub_80A4720(u16 a, u16 *b, u32 c, u8 d);
void sub_80A477C(bool8);
diff --git a/include/battle_transition.h b/include/battle_transition.h
index 0d6ef3c83..db06a5638 100644
--- a/include/battle_transition.h
+++ b/include/battle_transition.h
@@ -13,7 +13,7 @@ extern const struct SpritePalette gFieldEffectObjectPaletteInfo10;
enum // TRANSITION_MUGSHOT
{
- MUGSHOT_SYDNEY,
+ MUGSHOT_SIDNEY,
MUGSHOT_PHOEBE,
MUGSHOT_GLACIA,
MUGSHOT_DRAKE,
@@ -36,7 +36,7 @@ enum // TRANSITION_MUGSHOT
#define B_TRANSITION_WHITEFADE 9
#define B_TRANSITION_GRID_SQUARES 10
#define B_TRANSITION_SHARDS 11
-#define B_TRANSITION_SYDNEY 12
+#define B_TRANSITION_SIDNEY 12
#define B_TRANSITION_PHOEBE 13
#define B_TRANSITION_GLACIA 14
#define B_TRANSITION_DRAKE 15
diff --git a/include/berry.h b/include/berry.h
index ee581b9c1..9ff18e198 100644
--- a/include/berry.h
+++ b/include/berry.h
@@ -34,12 +34,6 @@ enum
BERRY_STAGE_SPARKLING = 0xFF,
};
-#define NUM_BERRIES 44
-
-extern const u8 *const gBerryTreeEventObjectGraphicsIdTablePointers[];
-extern const struct SpriteFrameImage *const gBerryTreePicTablePointers[];
-extern const u8 *const gBerryTreePaletteSlotTablePointers[];
-
void ClearEnigmaBerries(void);
void SetEnigmaBerry(u8 *src);
bool32 IsEnigmaBerryValid(void);
diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h
index 34a45395c..0a023f0c2 100644
--- a/include/constants/battle_anim.h
+++ b/include/constants/battle_anim.h
@@ -11,137 +11,137 @@
#define ANIM_TAG_SPARK (ANIM_SPRITES_START + 1)
#define ANIM_TAG_PENCIL (ANIM_SPRITES_START + 2)
#define ANIM_TAG_AIR_WAVE (ANIM_SPRITES_START + 3)
-#define ANIM_TAG_UNUSED_ORB (ANIM_SPRITES_START + 4)
+#define ANIM_TAG_ORB (ANIM_SPRITES_START + 4)
#define ANIM_TAG_SWORD (ANIM_SPRITES_START + 5)
#define ANIM_TAG_SEED (ANIM_SPRITES_START + 6)
-#define ANIM_TAG_UNUSED_EXPLOSION (ANIM_SPRITES_START + 7)
-#define ANIM_TAG_UNUSED_PINK_ORB (ANIM_SPRITES_START + 8)
+#define ANIM_TAG_EXPLOSION_6 (ANIM_SPRITES_START + 7)
+#define ANIM_TAG_PINK_ORB (ANIM_SPRITES_START + 8) // unused
#define ANIM_TAG_GUST (ANIM_SPRITES_START + 9)
#define ANIM_TAG_ICE_CUBE (ANIM_SPRITES_START + 10)
#define ANIM_TAG_SPARK_2 (ANIM_SPRITES_START + 11)
-#define ANIM_TAG_UNUSED_ORANGE (ANIM_SPRITES_START + 12)
+#define ANIM_TAG_ORANGE (ANIM_SPRITES_START + 12) // unused
#define ANIM_TAG_YELLOW_BALL (ANIM_SPRITES_START + 13)
#define ANIM_TAG_LOCK_ON (ANIM_SPRITES_START + 14)
#define ANIM_TAG_TIED_BAG (ANIM_SPRITES_START + 15)
#define ANIM_TAG_BLACK_SMOKE (ANIM_SPRITES_START + 16)
#define ANIM_TAG_BLACK_BALL (ANIM_SPRITES_START + 17)
#define ANIM_TAG_CONVERSION (ANIM_SPRITES_START + 18)
-#define ANIM_TAG_UNUSED_GLASS (ANIM_SPRITES_START + 19)
+#define ANIM_TAG_GLASS (ANIM_SPRITES_START + 19) // unused
#define ANIM_TAG_HORN_HIT (ANIM_SPRITES_START + 20)
-#define ANIM_TAG_UNUSED_HIT (ANIM_SPRITES_START + 21)
-#define ANIM_TAG_UNUSED_HIT_2 (ANIM_SPRITES_START + 22)
-#define ANIM_TAG_UNUSED_BLUE_SHARDS (ANIM_SPRITES_START + 23)
-#define ANIM_TAG_UNUSED_CLOSING_EYE (ANIM_SPRITES_START + 24)
-#define ANIM_TAG_UNUSED_WAVING_HAND (ANIM_SPRITES_START + 25)
-#define ANIM_TAG_UNUSED_HIT_DUPLICATE (ANIM_SPRITES_START + 26)
+#define ANIM_TAG_HIT (ANIM_SPRITES_START + 21)
+#define ANIM_TAG_HIT_2 (ANIM_SPRITES_START + 22)
+#define ANIM_TAG_BLUE_SHARDS (ANIM_SPRITES_START + 23) // unused
+#define ANIM_TAG_CLOSING_EYE (ANIM_SPRITES_START + 24) // unused
+#define ANIM_TAG_WAVING_HAND (ANIM_SPRITES_START + 25) // unused
+#define ANIM_TAG_HIT_DUPLICATE (ANIM_SPRITES_START + 26) // unused
#define ANIM_TAG_LEER (ANIM_SPRITES_START + 27)
-#define ANIM_TAG_UNUSED_BLUE_BURST (ANIM_SPRITES_START + 28)
+#define ANIM_TAG_BLUE_BURST (ANIM_SPRITES_START + 28) // unused
#define ANIM_TAG_SMALL_EMBER (ANIM_SPRITES_START + 29)
#define ANIM_TAG_GRAY_SMOKE (ANIM_SPRITES_START + 30)
#define ANIM_TAG_BLUE_STAR (ANIM_SPRITES_START + 31)
-#define ANIM_TAG_UNUSED_BUBBLE_BURST (ANIM_SPRITES_START + 32)
+#define ANIM_TAG_BUBBLE_BURST (ANIM_SPRITES_START + 32)
#define ANIM_TAG_FIRE (ANIM_SPRITES_START + 33)
-#define ANIM_TAG_UNUSED_SPINNING_FIRE (ANIM_SPRITES_START + 34)
+#define ANIM_TAG_SPINNING_FIRE (ANIM_SPRITES_START + 34) // unused
#define ANIM_TAG_FIRE_PLUME (ANIM_SPRITES_START + 35)
-#define ANIM_TAG_UNUSED_LIGHTNING (ANIM_SPRITES_START + 36)
+#define ANIM_TAG_LIGHTNING_2 (ANIM_SPRITES_START + 36) // unused
#define ANIM_TAG_LIGHTNING (ANIM_SPRITES_START + 37)
-#define ANIM_TAG_UNUSED_CLAW_SLASH (ANIM_SPRITES_START + 38)
+#define ANIM_TAG_CLAW_SLASH_2 (ANIM_SPRITES_START + 38) // unused
#define ANIM_TAG_CLAW_SLASH (ANIM_SPRITES_START + 39)
-#define ANIM_TAG_UNUSED_SCRATCH (ANIM_SPRITES_START + 40)
-#define ANIM_TAG_UNUSED_SCRATCH_2 (ANIM_SPRITES_START + 41)
-#define ANIM_TAG_UNUSED_BUBBLE_BURST_2 (ANIM_SPRITES_START + 42)
+#define ANIM_TAG_SCRATCH_3 (ANIM_SPRITES_START + 40) // unused
+#define ANIM_TAG_SCRATCH_2 (ANIM_SPRITES_START + 41) // unused
+#define ANIM_TAG_BUBBLE_BURST_2 (ANIM_SPRITES_START + 42) // unused
#define ANIM_TAG_ICE_CHUNK (ANIM_SPRITES_START + 43)
-#define ANIM_TAG_UNUSED_GLASS_2 (ANIM_SPRITES_START + 44)
-#define ANIM_TAG_UNUSED_PINK_HEART (ANIM_SPRITES_START + 45)
-#define ANIM_TAG_UNUSED_SAP_DRIP (ANIM_SPRITES_START + 46)
-#define ANIM_TAG_UNUSED_SAP_DRIP_2 (ANIM_SPRITES_START + 47)
+#define ANIM_TAG_GLASS_2 (ANIM_SPRITES_START + 44) // unused
+#define ANIM_TAG_PINK_HEART_2 (ANIM_SPRITES_START + 45) // unused
+#define ANIM_TAG_SAP_DRIP (ANIM_SPRITES_START + 46) // unused
+#define ANIM_TAG_SAP_DRIP_2 (ANIM_SPRITES_START + 47) // unused
#define ANIM_TAG_SPARKLE_1 (ANIM_SPRITES_START + 48)
#define ANIM_TAG_SPARKLE_2 (ANIM_SPRITES_START + 49)
#define ANIM_TAG_HUMANOID_FOOT (ANIM_SPRITES_START + 50)
-#define ANIM_TAG_UNUSED_MONSTER_FOOT (ANIM_SPRITES_START + 51)
-#define ANIM_TAG_UNUSED_HUMANOID_HAND (ANIM_SPRITES_START + 52)
+#define ANIM_TAG_MONSTER_FOOT (ANIM_SPRITES_START + 51)
+#define ANIM_TAG_HUMANOID_HAND (ANIM_SPRITES_START + 52) // unused
#define ANIM_TAG_NOISE_LINE (ANIM_SPRITES_START + 53)
-#define ANIM_TAG_UNUSED_YELLOW_UNK (ANIM_SPRITES_START + 54)
-#define ANIM_TAG_UNUSED_RED_FIST (ANIM_SPRITES_START + 55)
+#define ANIM_TAG_YELLOW_UNK (ANIM_SPRITES_START + 54) // unused
+#define ANIM_TAG_RED_FIST (ANIM_SPRITES_START + 55) // unused
#define ANIM_TAG_SLAM_HIT (ANIM_SPRITES_START + 56)
-#define ANIM_TAG_UNUSED_RING (ANIM_SPRITES_START + 57)
+#define ANIM_TAG_RING (ANIM_SPRITES_START + 57) // unused
#define ANIM_TAG_ROCKS (ANIM_SPRITES_START + 58)
-#define ANIM_TAG_UNUSED_Z (ANIM_SPRITES_START + 59)
-#define ANIM_TAG_UNUSED_YELLOW_UNK_2 (ANIM_SPRITES_START + 60)
-#define ANIM_TAG_UNUSED_AIR_SLASH (ANIM_SPRITES_START + 61)
-#define ANIM_TAG_UNUSED_SPINNING_GREEN_ORBS (ANIM_SPRITES_START + 62)
+#define ANIM_TAG_Z (ANIM_SPRITES_START + 59) // unused
+#define ANIM_TAG_YELLOW_UNK_2 (ANIM_SPRITES_START + 60) // unused
+#define ANIM_TAG_AIR_SLASH (ANIM_SPRITES_START + 61) // unused
+#define ANIM_TAG_SPINNING_GREEN_ORBS (ANIM_SPRITES_START + 62) // unused
#define ANIM_TAG_LEAF (ANIM_SPRITES_START + 63)
#define ANIM_TAG_FINGER (ANIM_SPRITES_START + 64)
#define ANIM_TAG_POISON_POWDER (ANIM_SPRITES_START + 65)
-#define ANIM_TAG_UNUSED_BROWN_TRIANGLE (ANIM_SPRITES_START + 66)
+#define ANIM_TAG_BROWN_TRIANGLE (ANIM_SPRITES_START + 66) // unused
#define ANIM_TAG_SLEEP_POWDER (ANIM_SPRITES_START + 67)
#define ANIM_TAG_STUN_SPORE (ANIM_SPRITES_START + 68)
-#define ANIM_TAG_UNUSED_POWDER (ANIM_SPRITES_START + 69)
+#define ANIM_TAG_POWDER (ANIM_SPRITES_START + 69) // unused
#define ANIM_TAG_SPARKLE_3 (ANIM_SPRITES_START + 70)
#define ANIM_TAG_SPARKLE_4 (ANIM_SPRITES_START + 71)
#define ANIM_TAG_MUSIC_NOTES (ANIM_SPRITES_START + 72)
#define ANIM_TAG_DUCK (ANIM_SPRITES_START + 73)
#define ANIM_TAG_MUD_SAND (ANIM_SPRITES_START + 74)
#define ANIM_TAG_ALERT (ANIM_SPRITES_START + 75)
-#define ANIM_TAG_UNUSED_BLUE_FLAMES (ANIM_SPRITES_START + 76)
-#define ANIM_TAG_UNUSED_BLUE_FLAMES_2 (ANIM_SPRITES_START + 77)
-#define ANIM_TAG_UNUSED_SHOCK (ANIM_SPRITES_START + 78)
+#define ANIM_TAG_BLUE_FLAMES (ANIM_SPRITES_START + 76) // unused
+#define ANIM_TAG_BLUE_FLAMES_2 (ANIM_SPRITES_START + 77) // unused
+#define ANIM_TAG_SHOCK_4 (ANIM_SPRITES_START + 78) // unused
#define ANIM_TAG_SHOCK (ANIM_SPRITES_START + 79)
-#define ANIM_TAG_UNUSED_BELL (ANIM_SPRITES_START + 80)
-#define ANIM_TAG_UNUSED_PINK_GLOVE (ANIM_SPRITES_START + 81)
-#define ANIM_TAG_UNUSED_BLUE_LINES (ANIM_SPRITES_START + 82)
-#define ANIM_TAG_UNUSED_IMPACT (ANIM_SPRITES_START + 83)
-#define ANIM_TAG_UNUSED_IMPACT_2 (ANIM_SPRITES_START + 84)
-#define ANIM_TAG_UNUSED_RETICLE (ANIM_SPRITES_START + 85)
+#define ANIM_TAG_BELL_2 (ANIM_SPRITES_START + 80) // unused
+#define ANIM_TAG_PINK_GLOVE (ANIM_SPRITES_START + 81) // unused
+#define ANIM_TAG_BLUE_LINES (ANIM_SPRITES_START + 82) // unused
+#define ANIM_TAG_IMPACT_3 (ANIM_SPRITES_START + 83) // unused
+#define ANIM_TAG_IMPACT_2 (ANIM_SPRITES_START + 84) // unused
+#define ANIM_TAG_RETICLE (ANIM_SPRITES_START + 85) // unused
#define ANIM_TAG_BREATH (ANIM_SPRITES_START + 86)
#define ANIM_TAG_ANGER (ANIM_SPRITES_START + 87)
-#define ANIM_TAG_UNUSED_SNOWBALL (ANIM_SPRITES_START + 88)
-#define ANIM_TAG_UNUSED_VINE (ANIM_SPRITES_START + 89)
-#define ANIM_TAG_UNUSED_SWORD (ANIM_SPRITES_START + 90)
-#define ANIM_TAG_UNUSED_CLAPPING (ANIM_SPRITES_START + 91)
-#define ANIM_TAG_UNUSED_RED_TUBE (ANIM_SPRITES_START + 92)
+#define ANIM_TAG_SNOWBALL (ANIM_SPRITES_START + 88) // unused
+#define ANIM_TAG_VINE (ANIM_SPRITES_START + 89) // unused
+#define ANIM_TAG_SWORD_2 (ANIM_SPRITES_START + 90) // unused
+#define ANIM_TAG_CLAPPING (ANIM_SPRITES_START + 91) // unused
+#define ANIM_TAG_RED_TUBE (ANIM_SPRITES_START + 92) // unused
#define ANIM_TAG_AMNESIA (ANIM_SPRITES_START + 93)
-#define ANIM_TAG_UNUSED_STRING (ANIM_SPRITES_START + 94)
-#define ANIM_TAG_UNUSED_PENCIL (ANIM_SPRITES_START + 95)
-#define ANIM_TAG_UNUSED_PETAL (ANIM_SPRITES_START + 96)
+#define ANIM_TAG_STRING_2 (ANIM_SPRITES_START + 94) // unused
+#define ANIM_TAG_PENCIL_2 (ANIM_SPRITES_START + 95) // unused
+#define ANIM_TAG_PETAL (ANIM_SPRITES_START + 96) // unused
#define ANIM_TAG_BENT_SPOON (ANIM_SPRITES_START + 97)
-#define ANIM_TAG_UNUSED_WEB (ANIM_SPRITES_START + 98)
+#define ANIM_TAG_WEB (ANIM_SPRITES_START + 98) // unused
#define ANIM_TAG_MILK_BOTTLE (ANIM_SPRITES_START + 99)
#define ANIM_TAG_COIN (ANIM_SPRITES_START + 100)
-#define ANIM_TAG_UNUSED_CRACKED_EGG (ANIM_SPRITES_START + 101)
-#define ANIM_TAG_UNUSED_HATCHED_EGG (ANIM_SPRITES_START + 102)
-#define ANIM_TAG_UNUSED_FRESH_EGG (ANIM_SPRITES_START + 103)
-#define ANIM_TAG_UNUSED_FANGS (ANIM_SPRITES_START + 104)
-#define ANIM_TAG_UNUSED_EXPLOSION_2 (ANIM_SPRITES_START + 105)
-#define ANIM_TAG_UNUSED_EXPLOSION_3 (ANIM_SPRITES_START + 106)
-#define ANIM_TAG_UNUSED_WATER_DROPLET (ANIM_SPRITES_START + 107)
-#define ANIM_TAG_UNUSED_WATER_DROPLET_2 (ANIM_SPRITES_START + 108)
-#define ANIM_TAG_UNUSED_SEED (ANIM_SPRITES_START + 109)
-#define ANIM_TAG_UNUSED_SPROUT (ANIM_SPRITES_START + 110)
-#define ANIM_TAG_UNUSED_RED_WAND (ANIM_SPRITES_START + 111)
-#define ANIM_TAG_UNUSED_PURPLE_GREEN_UNK (ANIM_SPRITES_START + 112)
-#define ANIM_TAG_UNUSED_WATER_COLUMN (ANIM_SPRITES_START + 113)
-#define ANIM_TAG_UNUSED_MUD_UNK (ANIM_SPRITES_START + 114)
+#define ANIM_TAG_CRACKED_EGG (ANIM_SPRITES_START + 101) // unused
+#define ANIM_TAG_HATCHED_EGG (ANIM_SPRITES_START + 102) // unused
+#define ANIM_TAG_FRESH_EGG (ANIM_SPRITES_START + 103) // unused
+#define ANIM_TAG_FANGS (ANIM_SPRITES_START + 104) // unused
+#define ANIM_TAG_EXPLOSION_2 (ANIM_SPRITES_START + 105) // unused
+#define ANIM_TAG_EXPLOSION_3 (ANIM_SPRITES_START + 106) // unused
+#define ANIM_TAG_WATER_DROPLET (ANIM_SPRITES_START + 107) // unused
+#define ANIM_TAG_WATER_DROPLET_2 (ANIM_SPRITES_START + 108) // unused
+#define ANIM_TAG_SEED_2 (ANIM_SPRITES_START + 109) // unused
+#define ANIM_TAG_SPROUT (ANIM_SPRITES_START + 110) // unused
+#define ANIM_TAG_RED_WAND (ANIM_SPRITES_START + 111) // unused
+#define ANIM_TAG_PURPLE_GREEN_UNK (ANIM_SPRITES_START + 112) // unused
+#define ANIM_TAG_WATER_COLUMN (ANIM_SPRITES_START + 113) // unused
+#define ANIM_TAG_MUD_UNK (ANIM_SPRITES_START + 114) // unused
#define ANIM_TAG_RAIN_DROPS (ANIM_SPRITES_START + 115)
-#define ANIM_TAG_UNUSED_FURY_SWIPES (ANIM_SPRITES_START + 116)
-#define ANIM_TAG_UNUSED_VINE_2 (ANIM_SPRITES_START + 117)
-#define ANIM_TAG_UNUSED_TEETH (ANIM_SPRITES_START + 118)
-#define ANIM_TAG_UNUSED_BONE (ANIM_SPRITES_START + 119)
-#define ANIM_TAG_UNUSED_WHITE_BAG (ANIM_SPRITES_START + 120)
-#define ANIM_TAG_UNUSED_UNKNOWN (ANIM_SPRITES_START + 121)
-#define ANIM_TAG_UNUSED_PURPLE_CORAL (ANIM_SPRITES_START + 122)
-#define ANIM_TAG_UNUSED_PURPLE_DROPLET (ANIM_SPRITES_START + 123)
-#define ANIM_TAG_UNUSED_SHOCK_2 (ANIM_SPRITES_START + 124)
-#define ANIM_TAG_UNUSED_CLOSING_EYE_2 (ANIM_SPRITES_START + 125)
-#define ANIM_TAG_UNUSED_METAL_BALL (ANIM_SPRITES_START + 126)
-#define ANIM_TAG_UNUSED_MONSTER_DOLL (ANIM_SPRITES_START + 127)
-#define ANIM_TAG_UNUSED_WHIRLWIND (ANIM_SPRITES_START + 128)
-#define ANIM_TAG_UNUSED_WHIRLWIND_2 (ANIM_SPRITES_START + 129)
-#define ANIM_TAG_UNUSED_EXPLOSION_4 (ANIM_SPRITES_START + 130)
-#define ANIM_TAG_UNUSED_EXPLOSION_5 (ANIM_SPRITES_START + 131)
-#define ANIM_TAG_UNUSED_TONGUE (ANIM_SPRITES_START + 132)
-#define ANIM_TAG_UNUSED_SMOKE (ANIM_SPRITES_START + 133)
-#define ANIM_TAG_UNUSED_SMOKE_2 (ANIM_SPRITES_START + 134)
+#define ANIM_TAG_FURY_SWIPES (ANIM_SPRITES_START + 116) // unused
+#define ANIM_TAG_VINE_2 (ANIM_SPRITES_START + 117) // unused
+#define ANIM_TAG_TEETH (ANIM_SPRITES_START + 118) // unused
+#define ANIM_TAG_BONE_2 (ANIM_SPRITES_START + 119) // unused
+#define ANIM_TAG_WHITE_BAG (ANIM_SPRITES_START + 120) // unused
+#define ANIM_TAG_UNKNOWN (ANIM_SPRITES_START + 121) // unused
+#define ANIM_TAG_PURPLE_CORAL (ANIM_SPRITES_START + 122) // unused
+#define ANIM_TAG_PURPLE_DROPLET (ANIM_SPRITES_START + 123) // unused
+#define ANIM_TAG_SHOCK_2 (ANIM_SPRITES_START + 124) // unused
+#define ANIM_TAG_CLOSING_EYE_2 (ANIM_SPRITES_START + 125) // unused
+#define ANIM_TAG_METAL_BALL (ANIM_SPRITES_START + 126) // unused
+#define ANIM_TAG_MONSTER_DOLL (ANIM_SPRITES_START + 127) // unused
+#define ANIM_TAG_WHIRLWIND (ANIM_SPRITES_START + 128) // unused
+#define ANIM_TAG_WHIRLWIND_2 (ANIM_SPRITES_START + 129) // unused
+#define ANIM_TAG_EXPLOSION_4 (ANIM_SPRITES_START + 130) // unused
+#define ANIM_TAG_EXPLOSION_5 (ANIM_SPRITES_START + 131) // unused
+#define ANIM_TAG_TONGUE (ANIM_SPRITES_START + 132) // unused
+#define ANIM_TAG_SMOKE (ANIM_SPRITES_START + 133) // unused
+#define ANIM_TAG_SMOKE_2 (ANIM_SPRITES_START + 134) // unused
#define ANIM_TAG_IMPACT (ANIM_SPRITES_START + 135)
#define ANIM_TAG_CIRCLE_IMPACT (ANIM_SPRITES_START + 136)
#define ANIM_TAG_SCRATCH (ANIM_SPRITES_START + 137)
@@ -185,11 +185,11 @@
#define ANIM_TAG_LARGE_FRESH_EGG (ANIM_SPRITES_START + 175)
#define ANIM_TAG_SHADOW_BALL (ANIM_SPRITES_START + 176)
#define ANIM_TAG_LICK (ANIM_SPRITES_START + 177)
-#define ANIM_TAG_UNUSED_VOID_LINES (ANIM_SPRITES_START + 178)
+#define ANIM_TAG_VOID_LINES (ANIM_SPRITES_START + 178)
#define ANIM_TAG_STRING (ANIM_SPRITES_START + 179)
#define ANIM_TAG_WEB_THREAD (ANIM_SPRITES_START + 180)
#define ANIM_TAG_SPIDER_WEB (ANIM_SPRITES_START + 181)
-#define ANIM_TAG_UNUSED_LIGHTBULB (ANIM_SPRITES_START + 182)
+#define ANIM_TAG_LIGHTBULB (ANIM_SPRITES_START + 182) // unused
#define ANIM_TAG_SLASH (ANIM_SPRITES_START + 183)
#define ANIM_TAG_FOCUS_ENERGY (ANIM_SPRITES_START + 184)
#define ANIM_TAG_SPHERE_TO_CUBE (ANIM_SPRITES_START + 185)
@@ -211,7 +211,7 @@
#define ANIM_TAG_WARM_ROCK (ANIM_SPRITES_START + 201)
#define ANIM_TAG_BREAKING_EGG (ANIM_SPRITES_START + 202)
#define ANIM_TAG_THIN_RING (ANIM_SPRITES_START + 203)
-#define ANIM_TAG_UNUSED_PUNCH_IMPACT (ANIM_SPRITES_START + 204)
+#define ANIM_TAG_PUNCH_IMPACT (ANIM_SPRITES_START + 204) // unused
#define ANIM_TAG_BELL (ANIM_SPRITES_START + 205)
#define ANIM_TAG_MUSIC_NOTES_2 (ANIM_SPRITES_START + 206)
#define ANIM_TAG_SPEED_DUST (ANIM_SPRITES_START + 207)
@@ -276,17 +276,17 @@
#define ANIM_TAG_GREEN_SPIKE (ANIM_SPRITES_START + 266)
#define ANIM_TAG_WHITE_CIRCLE_OF_LIGHT (ANIM_SPRITES_START + 267)
#define ANIM_TAG_GLOWY_BLUE_ORB (ANIM_SPRITES_START + 268)
-#define ANIM_TAG_UNUSED_RED_BRICK (ANIM_SPRITES_START + 269)
+#define ANIM_TAG_POKEBLOCK (ANIM_SPRITES_START + 269)
#define ANIM_TAG_WHITE_FEATHER (ANIM_SPRITES_START + 270)
#define ANIM_TAG_SPARKLE_6 (ANIM_SPRITES_START + 271)
#define ANIM_TAG_SPLASH (ANIM_SPRITES_START + 272)
#define ANIM_TAG_SWEAT_BEAD (ANIM_SPRITES_START + 273)
-#define ANIM_TAG_UNUSED_GEM_1 (ANIM_SPRITES_START + 274)
-#define ANIM_TAG_UNUSED_GEM_2 (ANIM_SPRITES_START + 275)
-#define ANIM_TAG_UNUSED_GEM_3 (ANIM_SPRITES_START + 276)
+#define ANIM_TAG_GEM_1 (ANIM_SPRITES_START + 274) // unused
+#define ANIM_TAG_GEM_2 (ANIM_SPRITES_START + 275) // unused
+#define ANIM_TAG_GEM_3 (ANIM_SPRITES_START + 276) // unused
#define ANIM_TAG_SLAM_HIT_2 (ANIM_SPRITES_START + 277)
#define ANIM_TAG_RECYCLE (ANIM_SPRITES_START + 278)
-#define ANIM_TAG_UNUSED_RED_PARTICLES (ANIM_SPRITES_START + 279)
+#define ANIM_TAG_RED_PARTICLES (ANIM_SPRITES_START + 279) // unused
#define ANIM_TAG_PROTECT (ANIM_SPRITES_START + 280)
#define ANIM_TAG_DIRT_MOUND (ANIM_SPRITES_START + 281)
#define ANIM_TAG_SHOCK_3 (ANIM_SPRITES_START + 282)
@@ -313,7 +313,7 @@
// . .
// . .
// 127
-//
+//
#define SOUND_PAN_ATTACKER -64
#define SOUND_PAN_TARGET 63
@@ -335,10 +335,10 @@
#define BG_GUILLOTINE_CONTESTS 14
#define BG_ICE 15
#define BG_COSMIC 16
-#define BG_SEISMICTOSS_SKUUPPERCUT 17
-#define BG_FLYING 18
-#define BG_FLYING_CONTESTS 19
-#define BG_AURORABEAM 20
+#define BG_IN_AIR 17
+#define BG_SKY 18
+#define BG_SKY_CONTESTS 19
+#define BG_AURORA 20
#define BG_FISSURE 21
#define BG_BUG_OPPONENT 22
#define BG_BUG_PLAYER 23
@@ -411,32 +411,32 @@
#define ANIM_WEATHER_HAIL 4
// Battle mon back animations.
-#define BACK_ANIM_NONE 0x00
-#define BACK_ANIM_H_SLIDE_QUICK 0x01
-#define BACK_ANIM_H_SLIDE 0x02
-#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_1 0x03
-#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_2 0x04
-#define BACK_ANIM_SHRINK_GROW_1 0x05
-#define BACK_ANIM_GROW_1 0x06
-#define BACK_ANIM_CIRCLE_MOVE_COUNTERCLOCKWISE 0x07
-#define BACK_ANIM_HORIZONTAL_SHAKE 0x08
-#define BACK_ANIM_VERTICAL_SHAKE 0x09
-#define BACK_ANIM_V_SHAKE_WITH_H_SLIDE 0x0a
-#define BACK_ANIM_VERTICAL_STRETCH 0x0b
-#define BACK_ANIM_HORIZONTAL_STRETCH 0x0c
-#define BACK_ANIM_GROW_2 0x0d
-#define BACK_ANIM_V_SHAKE_WITH_PAUSE 0x0e
-#define BACK_ANIM_CIRCLE_MOVE_CLOCKWISE 0x0f
-#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL 0x10
-#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE 0x11
-#define BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE 0x12
-#define BACK_ANIM_DIP_RIGHT_SIDE 0x13
-#define BACK_ANIM_SHRINK_GROW_2 0x14
-#define BACK_ANIM_JOLT_RIGHT 0x15
-#define BACK_ANIM_FLASH_YELLOW_WITH_SHAKE 0x16
-#define BACK_ANIM_FADE_RED_WITH_SHAKE 0x17
-#define BACK_ANIM_FADE_GREEN_WITH_SHAKE 0x18
-#define BACK_ANIM_FADE_BLUE_WITH_SHAKE 0x19
+#define BACK_ANIM_NONE 0x00
+#define BACK_ANIM_H_SLIDE_QUICK 0x01
+#define BACK_ANIM_H_SLIDE 0x02
+#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_1 0x03
+#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_2 0x04
+#define BACK_ANIM_SHRINK_GROW_1 0x05
+#define BACK_ANIM_GROW_1 0x06
+#define BACK_ANIM_CIRCLE_MOVE_COUNTERCLOCKWISE 0x07
+#define BACK_ANIM_HORIZONTAL_SHAKE 0x08
+#define BACK_ANIM_VERTICAL_SHAKE 0x09
+#define BACK_ANIM_V_SHAKE_WITH_H_SLIDE 0x0a
+#define BACK_ANIM_VERTICAL_STRETCH 0x0b
+#define BACK_ANIM_HORIZONTAL_STRETCH 0x0c
+#define BACK_ANIM_GROW_2 0x0d
+#define BACK_ANIM_V_SHAKE_WITH_PAUSE 0x0e
+#define BACK_ANIM_CIRCLE_MOVE_CLOCKWISE 0x0f
+#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL 0x10
+#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE 0x11
+#define BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE 0x12
+#define BACK_ANIM_DIP_RIGHT_SIDE 0x13
+#define BACK_ANIM_SHRINK_GROW_2 0x14
+#define BACK_ANIM_JOLT_RIGHT 0x15
+#define BACK_ANIM_FLASH_YELLOW_WITH_SHAKE 0x16
+#define BACK_ANIM_FADE_RED_WITH_SHAKE 0x17
+#define BACK_ANIM_FADE_GREEN_WITH_SHAKE 0x18
+#define BACK_ANIM_FADE_BLUE_WITH_SHAKE 0x19
#endif // GUARD_CONSTANTS_BATTLE_ANIM_H
diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h
index 9973477da..07ed2d40c 100644
--- a/include/constants/event_objects.h
+++ b/include/constants/event_objects.h
@@ -274,6 +274,8 @@
#define TRACKS_FOOT 1
#define TRACKS_BIKE_TIRE 2
+#define FIRST_DECORATION_SPRITE_GFX EVENT_OBJ_GFX_PICHU_DOLL
+
#define EVENT_OBJ_ID_PLAYER 0xFF
#define EVENT_OBJ_ID_CAMERA 0x7F
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 0450e988d..732c68764 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -287,7 +287,7 @@
#define FLAG_RECEIVED_TM41 0x109
#define FLAG_RECEIVED_LAVARIDGE_EGG 0x10A
#define FLAG_RECEIVED_REVIVED_FOSSIL_MON 0x10B
-#define FLAG_DECORATION_16 0x10C
+#define FLAG_SECRET_BASE_REGISTRY_ENABLED 0x10C
#define FLAG_RECEIVED_TM46 0x10D
#define FLAG_CONTEST_SKETCH_CREATED 0x10E
#define FLAG_EVIL_TEAM_ESCAPED_STERN_SPOKE 0x10F
@@ -1248,7 +1248,7 @@
#define FLAG_UNUSED_0x4F9 0x4F9 // Unused Flag
#define FLAG_UNUSED_0x4FA 0x4FA // Unused Flag
-#define FLAG_DEFEATED_ELITE_4_SYDNEY 0x4FB
+#define FLAG_DEFEATED_ELITE_4_SIDNEY 0x4FB
#define FLAG_DEFEATED_ELITE_4_PHOEBE 0x4FC
#define FLAG_DEFEATED_ELITE_4_GLACIA 0x4FD
#define FLAG_DEFEATED_ELITE_4_DRAKE 0x4FE
diff --git a/include/constants/item_effects.h b/include/constants/item_effects.h
new file mode 100644
index 000000000..a5bb77035
--- /dev/null
+++ b/include/constants/item_effects.h
@@ -0,0 +1,79 @@
+#ifndef GUARD_CONSTANTS_ITEM_EFFECTS_H
+#define GUARD_CONSTANTS_ITEM_EFFECTS_H
+
+// field 0 masks
+#define ITEM0_X_ATTACK 0x0F
+#define ITEM0_HIGH_CRIT 0x30 // For Dire Hit, works the same way as move Focus Energy.
+#define ITEM0_SACRED_ASH 0x40
+#define ITEM0_INFATUATION 0x80
+
+// field 1 masks
+#define ITEM1_X_SPEED 0x0F
+#define ITEM1_X_DEFEND 0xF0
+
+// field 2 masks
+#define ITEM2_X_SPATK 0x0F
+#define ITEM2_X_ACCURACY 0xF0
+
+// field 3 masks
+#define ITEM3_CONFUSION 0x1
+#define ITEM3_PARALYSIS 0x2
+#define ITEM3_FREEZE 0x4
+#define ITEM3_BURN 0x8
+#define ITEM3_POISON 0x10
+#define ITEM3_SLEEP 0x20
+#define ITEM3_LEVEL_UP 0x40
+#define ITEM3_MIST 0x80 // For Guard Specs, works the same way as move Mist.
+
+#define ITEM3_STATUS_ALL (ITEM3_CONFUSION | ITEM3_PARALYSIS | ITEM3_FREEZE | ITEM3_BURN | ITEM3_POISON | ITEM3_SLEEP)
+
+// field 4 masks
+#define ITEM4_EV_HP 0x1
+#define ITEM4_EV_ATK 0x2
+#define ITEM4_HEAL_HP 0x4
+#define ITEM4_HEAL_PP_ALL 0x8
+#define ITEM4_HEAL_PP_ONE 0x10
+#define ITEM4_PP_UP 0x20
+#define ITEM4_REVIVE 0x40
+#define ITEM4_EVO_STONE 0x80
+
+// field 5 masks
+#define ITEM5_EV_DEF 0x1
+#define ITEM5_EV_SPEED 0x2
+#define ITEM5_EV_SPDEF 0x4
+#define ITEM5_EV_SPATK 0x8
+#define ITEM5_PP_MAX 0x10
+#define ITEM5_FRIENDSHIP_LOW 0x20
+#define ITEM5_FRIENDSHIP_MID 0x40
+#define ITEM5_FRIENDSHIP_HIGH 0x80
+
+#define ITEM5_FRIENDSHIP_ALL (ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID | ITEM5_FRIENDSHIP_HIGH)
+
+// fields 6 and onwards are item-specific arguments
+
+// Used for GetItemEffectType.
+#define ITEM_EFFECT_X_ITEM 0
+#define ITEM_EFFECT_RAISE_LEVEL 1
+#define ITEM_EFFECT_HEAL_HP 2
+#define ITEM_EFFECT_CURE_POISON 3
+#define ITEM_EFFECT_CURE_SLEEP 4
+#define ITEM_EFFECT_CURE_BURN 5
+#define ITEM_EFFECT_CURE_FREEZE 6
+#define ITEM_EFFECT_CURE_PARALYSIS 7
+#define ITEM_EFFECT_CURE_CONFUSION 8
+#define ITEM_EFFECT_CURE_INFATUATION 9
+#define ITEM_EFFECT_SACRED_ASH 10
+#define ITEM_EFFECT_CURE_ALL_STATUS 11
+#define ITEM_EFFECT_ATK_EV 12
+#define ITEM_EFFECT_HP_EV 13
+#define ITEM_EFFECT_SPATK_EV 14
+#define ITEM_EFFECT_SPDEF_EV 15
+#define ITEM_EFFECT_SPEED_EV 16
+#define ITEM_EFFECT_DEF_EV 17
+#define ITEM_EFFECT_EVO_STONE 18
+#define ITEM_EFFECT_PP_UP 19
+#define ITEM_EFFECT_PP_MAX 20
+#define ITEM_EFFECT_HEAL_PP 21
+#define ITEM_EFFECT_NONE 22
+
+#endif // GUARD_CONSTANTS_ITEM_EFFECTS_H
diff --git a/include/constants/items.h b/include/constants/items.h
index 294499c8b..3a894f8ff 100644
--- a/include/constants/items.h
+++ b/include/constants/items.h
@@ -473,6 +473,6 @@
#define NUM_HIDDEN_MACHINES 8
// Check if the item is one that can be used on a Pokemon.
-#define IS_POKEMON_ITEM(item) ((item) >= ITEM_POTION && (item) <= ITEM_0B2)
+#define ITEM_HAS_EFFECT(item) ((item) >= ITEM_POTION && (item) <= ITEM_0B2)
#endif // GUARD_CONSTANTS_ITEMS_H
diff --git a/include/constants/metatile_behaviors.h b/include/constants/metatile_behaviors.h
index d8d75066c..44bbd9729 100755
--- a/include/constants/metatile_behaviors.h
+++ b/include/constants/metatile_behaviors.h
@@ -182,7 +182,7 @@
#define MB_SECRET_BASE_UNUSED 0xB2
#define MB_BLOCK_DECORATION 0xB3
#define MB_SECRET_BASE_DECORATION 0xB4
-#define MB_SECRET_BASE_LARGE_MAT_EDGE 0xB5
+#define MB_HOLDS_SMALL_DECORATION 0xB5
#define MB_UNUSED_B6 0xB6
#define MB_SECRET_BASE_NORTH_WALL 0xB7
#define MB_SECRET_BASE_BALLOON 0xB8
@@ -196,7 +196,7 @@
#define MB_IMPASSABLE_SOUTH_AND_NORTH 0xC0
#define MB_IMPASSABLE_WEST_AND_EAST 0xC1
#define MB_SECRET_BASE_HOLE 0xC2
-#define MB_LARGE_MAT_CENTER 0xC3
+#define MB_HOLDS_LARGE_DECORATION 0xC3
#define MB_SECRET_BASE_TV_SHIELD 0xC4
#define MB_PLAYER_ROOM_PC_ON 0xC5
#define MB_C6 0xC6
diff --git a/include/constants/songs.h b/include/constants/songs.h
index 3778d5f08..b44c9f7a8 100644
--- a/include/constants/songs.h
+++ b/include/constants/songs.h
@@ -463,7 +463,7 @@
#define MUS_RG_SOUSA 535 // Starting Tutorial
#define MUS_RG_SEKAIKAN 536 // Starting Tutorial 2
#define MUS_RG_SEIBETU 537 // Starting Tutorial 3
-#define MUS_RG_JUMP 538 // Jumping Minigame
+#define MUS_RG_JUMP 538 // Pokemon Jump Minigame
#define MUS_RG_UNION 539 // Union Room
#define MUS_RG_NETWORK 540 // Network Center
#define MUS_RG_OKURIMONO 541 // Mystery Gift
diff --git a/include/constants/vars.h b/include/constants/vars.h
index 20524611b..6fd1c16dd 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -1,8 +1,6 @@
#ifndef GUARD_CONSTANTS_VARS_H
#define GUARD_CONSTANTS_VARS_H
-#define UNKNOWN_VAR_OFFSET_3F20 0x3F20
-
#define VARS_START 0x4000
// temporary vars
diff --git a/include/contest.h b/include/contest.h
index a0b1a6b34..a4e209bcb 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -1,6 +1,27 @@
#ifndef GUARD_CONTEST_H
#define GUARD_CONTEST_H
+#include "palette.h"
+
+#define CONTESTANT_COUNT 4
+#define APPLAUSE_METER_SIZE 5
+#define CONTEST_TURN_COUNT 5
+
+enum
+{
+ CONTEST_DEBUG_MODE_OFF,
+ // Prints the totalPoints value for each contestant.
+ CONTEST_DEBUG_MODE_PRINT_POINT_TOTAL,
+ // Prints the ContestResourcesField1C::unk_C value as a bitstring for each contestant.
+ CONTEST_DEBUG_MODE_PRINT_UNK_C,
+ // Prints the ContestResourcesField1C::unk_D value as a bitstring for each contestant.
+ CONTEST_DEBUG_MODE_PRINT_UNK_D
+};
+
+#define LINK_CONTEST_FLAG_IS_LINK (1 << 0)
+#define LINK_CONTEST_FLAG_IS_WIRELESS (1 << 1)
+#define LINK_CONTEST_FLAG_HAS_RS_PLAYER (1 << 2)
+
enum
{
CONTEST_CATEGORY_COOL,
@@ -216,7 +237,7 @@ struct ContestPokemon
/*0x02*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
/*0x0D*/ u8 trainerName[PLAYER_NAME_LENGTH + 1];
/*0x15*/ u8 trainerGfxId;
- /*0x18*/ u32 flags;
+ /*0x18*/ u32 aiChecks;
/*0x1C*/ u8 whichRank:2; // 0x1 0x2
u8 aiPool_Cool:1; // 0x4
u8 aiPool_Beauty:1; // 0x8
@@ -235,14 +256,12 @@ struct ContestPokemon
/*0x3C*/ u32 otId; // otId
};
-struct Shared18000
+struct Shared1A004
{
- /*0x18000*/ u8 unk18000;
- /*0x18001*/ u8 filler18001[3];
- /*0x18004*/ u16 unk18004[16][16];
- /*0x18204*/ u16 unk18204[0x200];
- /*0x18604*/ u16 unk18604[0x200];
- /*0x18A04*/ u8 unk18A04[0x800];
+ u16 cachedWindowPalettes[16][16]; // Saved palette data before a move happens?
+ u16 unk18204[PLTT_BUFFER_SIZE]; // Saved copy of gPlttBufferUnfaded
+ u16 unk18604[PLTT_BUFFER_SIZE]; // Saved copy of gPlttBufferFaded
+ u8 savedJunk[0x800];
};
struct ContestStruct_field_18
@@ -260,14 +279,14 @@ struct Contest
{
/*0x0*/ u8 playerMoveChoice;
/*0x1*/ u8 turnNumber;
- /*0x2*/ u8 unk19206[4]; // seems to only be used by an unref function
+ /*0x2*/ u8 unused2[CONTESTANT_COUNT];
/*0x6*/ u16 unk1920A_0:1; // Task active flags?
u16 unk1920A_1:1;
u16 unk1920A_2:1;
u16 unk1920A_3:1;
u16 unk1920A_4:1;
- u16 unk1920A_5:1;
- u16 unk1920A_6:1;
+ u16 isShowingApplauseMeter:1;
+ u16 applauseMeterIsMoving:1;
u16 unk1920A_7:1;
/*0x7*/ u16 unk1920B_0:1;
u16 unk1920B_1:1;
@@ -281,12 +300,12 @@ struct Contest
/*0x11*/ u8 unk19215;
/*0x12*/ u8 unk19216; // sprite ID
/*0x13*/ s8 applauseLevel;
- /*0x19218*/ u8 unk19218[4];
+ /*0x19218*/ u8 prevTurnOrder[CONTESTANT_COUNT];
/*0x1921C*/ u32 unk1921C; // saved RNG value?
- u16 unk19220[5][4]; // move history?
- u8 unk19248[5][4]; // excitement history
- u8 applauseMeterSpriteId; // sprite ID
- /*0x1925D*/ u8 unk1925D;
+ u16 moveHistory[CONTEST_TURN_COUNT][CONTESTANT_COUNT];
+ u8 excitementHistory[CONTEST_TURN_COUNT][CONTESTANT_COUNT];
+ u8 applauseMeterSpriteId;
+ /*0x1925D*/ u8 contestSetupState;
/*0x1925E*/ u8 unk1925E;
};
@@ -294,11 +313,11 @@ struct ContestantStatus
{
/*0x00*/ s16 appeal1; // move appeal?
/*0x02*/ s16 appeal2; // final appeal after end of turn, maybe?
- /*0x04*/ s16 unk4;
+ /*0x04*/ s16 pointTotal;
/*0x06*/ u16 currMove;
/*0x08*/ u16 prevMove;
/*0x0A*/ u8 moveCategory;
- /*0x0B*/ u8 unkB_0:2;
+ /*0x0B*/ u8 ranking:2;
u8 unkB_2:2;
u8 moveRepeatCount:3;
u8 noMoreTurns:1; // used a one-time move?
@@ -341,24 +360,24 @@ struct ContestantStatus
struct UnknownContestStruct7
{
- u8 turnOrder[4];
+ u8 turnOrder[CONTESTANT_COUNT];
s16 jam;
s16 jam2;
u8 jamQueue[5];
- u8 unnervedPokes[4];
+ u8 unnervedPokes[CONTESTANT_COUNT];
u8 contestant;
};
struct ContestAIInfo
{
/*0x00*/ u8 aiState;
- /*0x02*/ u16 unk2;
- /*0x04*/ u8 unk4;
+ /*0x02*/ u16 nextMove;
+ /*0x04*/ u8 nextMoveIndex;
/*0x05*/ u8 unk5[4];
/*0x09*/ u8 aiAction;
/*0x0A*/ u8 fillerA[0x6]; // TODO: don't know what's here
- /*0x10*/ u8 unk10;
- /*0x14*/ u32 flags;
+ /*0x10*/ u8 currentAICheck;
+ /*0x14*/ u32 aiChecks;
/*0x18*/ s16 scriptResult;
/*0x1A*/ s16 scriptArr[3];
/*0x20*/ const u8 *stack[8];
@@ -408,30 +427,31 @@ struct ContestResourcesField20
struct ContestResources
{
- struct Contest *field_0;
- struct ContestantStatus *field_4;
+ struct Contest *contest;
+ struct ContestantStatus *status;
struct UnknownContestStruct7 *field_8;
- struct ContestAIInfo *field_C;
+ struct ContestAIInfo *aiData;
struct UnknownContestStruct5 *field_10;
struct UnknownContestStruct4 *field_14;
struct ContestStruct_field_18 *field_18;
struct ContestResourcesField1C * field_1c;
struct ContestResourcesField20 * field_20;
- u8 * field_24[4];
+ u8 * contestBgTilemaps[CONTESTANT_COUNT];
void * field_34;
void * field_38;
void * field_3c;
};
-#define sContest (*gContestResources->field_0)
-#define sContestantStatus (gContestResources->field_4)
-#define shared192D0 (*gContestResources->field_8)
-#define eContestAI (gContestResources->field_C)
-#define shared19328 (*gContestResources->field_10)
-#define shared19338 (*gContestResources->field_14)
-#define shared15800 (gHeap + 0x18000)
-#define shared16800 (gHeap + 0x19000)
-#define shared18000 (*(struct Shared18000 *)(gHeap + 0x1a000))
+#define eContest (*gContestResources->contest)
+#define eContestantStatus (gContestResources->status)
+#define eContestResources8 (*gContestResources->field_8)
+#define eContestAI (*gContestResources->aiData)
+#define eContestResources10 (*gContestResources->field_10)
+#define eContestResources14 (*gContestResources->field_14)
+#define eUnzippedContestAudienceGfx (gHeap + 0x18000)
+#define eUnknownHeap19000 (gHeap + 0x19000)
+#define eContestDebugMode (gHeap[0x1a000])
+#define eUnknownHeap1A004 (*(struct Shared1A004 *)(gHeap + 0x1a004))
extern struct ContestPokemon gContestMons[4];
extern s16 gContestMonConditions[4];
@@ -441,8 +461,8 @@ extern s16 gUnknown_02039F18[4];
extern u8 gContestFinalStandings[4];
extern u8 gContestMonPartyIndex;
extern u8 gContestPlayerMonIndex;
-extern u8 gUnknown_02039F26[4];
-extern u8 gIsLinkContest;
+extern u8 gContestantTurnOrder[4];
+extern u8 gLinkContestFlags;
extern u8 gUnknown_02039F2B;
extern u16 gSpecialVar_ContestCategory;
extern u16 gSpecialVar_ContestRank;
@@ -459,7 +479,7 @@ extern u32 gContestRngValue;
// contest.c
void ResetLinkContestBoolean(void);
void LoadContestBgAfterMoveAnim(void);
-void sub_80D7B24(void);
+void CB2_StartContest(void);
void sub_80DA8C8(u8 partyIndex);
void sub_80DAB8C(u8 contestType, u8 rank);
void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame);
@@ -467,8 +487,8 @@ u8 sub_80DAE0C(struct Pokemon *pkmn);
void sub_80DB09C(u8 contestCategory);
bool8 IsSpeciesNotUnown(u16 species);
bool8 Contest_IsMonsTurnDisabled(u8 a);
-void sub_80DBED4(void);
-void sub_80DCE58(u8 a);
+void SaveLinkContestResults(void);
+void SortContestants(bool8 a);
void SetContestantEffectStringID(u8 a, u8 b);
void SetContestantEffectStringID2(u8 a, u8 b);
void SetStartledString(u8 contestant, u8 jam);
diff --git a/include/data.h b/include/data.h
new file mode 100644
index 000000000..f1a4caa6a
--- /dev/null
+++ b/include/data.h
@@ -0,0 +1,119 @@
+#ifndef GUARD_DATA_H
+#define GUARD_DATA_H
+
+#include "constants/moves.h"
+#include "constants/species.h"
+
+#define SPECIES_SHINY_TAG 500
+
+struct MonCoords
+{
+ // This would use a bitfield, but some function
+ // uses it as a u8 and casting won't match.
+ u8 size; // u8 width:4, height:4;
+ u8 y_offset;
+};
+
+struct TrainerMonNoItemDefaultMoves
+{
+ u16 iv;
+ u8 lvl;
+ u16 species;
+};
+
+struct TrainerMonItemDefaultMoves
+{
+ u16 iv;
+ u8 lvl;
+ u16 species;
+ u16 heldItem;
+};
+
+struct TrainerMonNoItemCustomMoves
+{
+ u16 iv;
+ u8 lvl;
+ u16 species;
+ u16 moves[4];
+};
+
+struct TrainerMonItemCustomMoves
+{
+ u16 iv;
+ u8 lvl;
+ u16 species;
+ u16 heldItem;
+ u16 moves[4];
+};
+
+union TrainerMonPtr
+{
+ const struct TrainerMonNoItemDefaultMoves *NoItemDefaultMoves;
+ const struct TrainerMonNoItemCustomMoves *NoItemCustomMoves;
+ const struct TrainerMonItemDefaultMoves *ItemDefaultMoves;
+ const struct TrainerMonItemCustomMoves *ItemCustomMoves;
+};
+
+struct Trainer
+{
+ /*0x00*/ u8 partyFlags;
+ /*0x01*/ u8 trainerClass;
+ /*0x02*/ u8 encounterMusic_gender; // last bit is gender
+ /*0x03*/ u8 trainerPic;
+ /*0x04*/ u8 trainerName[12];
+ /*0x10*/ u16 items[4];
+ /*0x18*/ bool8 doubleBattle;
+ /*0x1C*/ u32 aiFlags;
+ /*0x20*/ u8 partySize;
+ /*0x24*/ union TrainerMonPtr party;
+};
+
+#define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F))
+
+extern const u16 gUnknown_082FF1D8[];
+extern const u32 gUnknown_082FF1F8[];
+
+extern const struct SpriteFrameImage gUnknown_082FF3A8[];
+extern const struct SpriteFrameImage gUnknown_082FF3C8[];
+extern const struct SpriteFrameImage gUnknown_082FF3E8[];
+extern const struct SpriteFrameImage gUnknown_082FF408[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_Brendan[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_May[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_Red[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_Leaf[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireBrendan[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireMay[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_Wally[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_Steven[];
+
+extern const union AffineAnimCmd *const gUnknown_082FF618[];
+extern const union AffineAnimCmd *const gUnknown_082FF694[];
+extern const union AffineAnimCmd *const gUnknown_082FF6C0[];
+
+extern const union AnimCmd *const gUnknown_082FF70C[];
+extern const struct MonCoords gMonFrontPicCoords[];
+extern const struct CompressedSpriteSheet gMonStillFrontPicTable[];
+extern const struct MonCoords gMonBackPicCoords[];
+extern const struct CompressedSpriteSheet gMonBackPicTable[];
+extern const struct CompressedSpritePalette gMonPaletteTable[];
+extern const struct CompressedSpritePalette gMonShinyPaletteTable[];
+extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[];
+extern const struct MonCoords gTrainerFrontPicCoords[];
+extern const struct CompressedSpriteSheet gTrainerFrontPicTable[];
+extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
+extern const union AnimCmd *const *const gTrainerBackAnimsPtrTable[];
+extern const struct MonCoords gTrainerBackPicCoords[];
+extern const struct CompressedSpriteSheet gTrainerBackPicTable[]; // functionally unused
+extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
+
+extern const u8 gEnemyMonElevation[NUM_SPECIES];
+
+extern const union AnimCmd *const *const gMonFrontAnimsPtrTable[];
+extern const struct CompressedSpriteSheet gMonFrontPicTable[];
+
+extern const struct Trainer gTrainers[];
+extern const u8 gTrainerClassNames[][13];
+extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1];
+extern const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1];
+
+#endif // GUARD_DATA_H
diff --git a/include/data2.h b/include/data2.h
deleted file mode 100644
index c1a2608ae..000000000
--- a/include/data2.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef GUARD_DATA2_H
-#define GUARD_DATA2_H
-
-struct MonCoords
-{
- // This would use a bitfield, but some function
- // uses it as a u8 and casting won't match.
- u8 size; // u8 width:4, height:4;
- u8 y_offset;
-};
-
-extern const struct MonCoords gTrainerBackPicCoords[];
-extern const struct MonCoords gTrainerFrontPicCoords[];
-
-extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1];
-extern const u8 gMoveNames[][MOVE_NAME_LENGTH + 1];
-extern struct CompressedSpriteSheet gUnknown_0831C620;
-extern struct CompressedSpritePalette gUnknown_0831C628;
-extern const struct SpriteTemplate gUnknown_0831C688;
-extern const struct CompressedSpriteSheet gMonBackPicTable[];
-
-#endif // GUARD_DATA2_H
diff --git a/include/decoration.h b/include/decoration.h
index f613c25d2..eed930356 100644
--- a/include/decoration.h
+++ b/include/decoration.h
@@ -1,7 +1,8 @@
#ifndef GUARD_DECORATION_H
#define GUARD_DECORATION_H
-enum DecorPerm {
+enum DecorationPermission
+{
/*
* The nomenclature here describes collision and placement permissions, in that order.
*/
@@ -9,13 +10,11 @@ enum DecorPerm {
DECORPERM_PASS_FLOOR,
DECORPERM_BEHIND_FLOOR,
DECORPERM_NA_WALL,
- DECORPERM_SOLID_MAT
+ DECORPERM_SPRITE,
};
-enum DecorShape {
- /*
- * Width-x-height
- */
+enum DecorationShape
+{
DECORSHAPE_1x1,
DECORSHAPE_2x1,
DECORSHAPE_3x1, // unused
@@ -25,53 +24,52 @@ enum DecorShape {
DECORSHAPE_1x3, // unused
DECORSHAPE_2x4,
DECORSHAPE_3x3,
- DECORSHAPE_3x2
+ DECORSHAPE_3x2,
};
-enum DecorCat {
- /*
- * In which category you can find the decoration in the PC.
- */
- /*0*/ DECORCAT_DESK,
- /*1*/ DECORCAT_CHAIR,
- /*2*/ DECORCAT_PLANT,
- /*3*/ DECORCAT_ORNAMENT,
- /*4*/ DECORCAT_MAT,
- /*5*/ DECORCAT_POSTER,
- /*6*/ DECORCAT_DOLL,
- /*7*/ DECORCAT_CUSHION
+enum DecorationCategory
+{
+ DECORCAT_DESK,
+ DECORCAT_CHAIR,
+ DECORCAT_PLANT,
+ DECORCAT_ORNAMENT,
+ DECORCAT_MAT,
+ DECORCAT_POSTER,
+ DECORCAT_DOLL,
+ DECORCAT_CUSHION,
+ DECORCAT_COUNT,
};
struct Decoration
{
- /*0x00*/ u8 id;
- /*0x01*/ u8 name[16];
- /*0x11*/ u8 permission;
- /*0x12*/ u8 shape;
- /*0x13*/ u8 category;
- /*0x14*/ u16 price;
- /*0x18*/ const u8 *description;
- /*0x1c*/ const u16 *tiles;
+ u8 id;
+ u8 name[16];
+ u8 permission;
+ u8 shape;
+ u8 category;
+ u16 price;
+ const u8 *description;
+ const u16 *tiles;
};
-struct DecorPCPointers
+struct DecorationPCContext
{
- /* 0x00 */ u8 *items;
- /* 0x04 */ u8 *pos;
- /* 0x08 */ u8 size;
- /* 0x09 */ u8 isPlayerRoom;
+ u8 *items;
+ u8 *pos;
+ u8 size;
+ u8 isPlayerRoom;
};
extern const struct Decoration gDecorations[];
-extern EWRAM_DATA u8 *gCurDecorInventoryItems;
+extern EWRAM_DATA u8 *gCurDecorationItems;
extern EWRAM_DATA u8 gCurDecorationIndex;
-void sub_8126968(void);
-void sub_8126AD8(u8 taskId);
-void sub_8127D38(u16 mapX, u16 mapY, u16 decor);
-void sub_8126B2C(u8 taskId);
-void sub_8127208(u8 taskId);
-void sub_8127250(u8 *dest, u8 decorCat);
+void InitDecorationContextItems(void);
+void DoSecretBaseDecorationMenu(u8 taskId);
+void ShowDecorationOnMap(u16 mapX, u16 mapY, u16 decor);
+void DoPlayerRoomDecorationMenu(u8 taskId);
+void ShowDecorationCategoriesWindow(u8 taskId);
+void CopyDecorationCategoryName(u8 *dest, u8 decorCat);
bool8 IsSelectedDecorInThePC(void);
u8 AddDecorationIconObject(u8 decor, s16 x, s16 y, u8 priority, u16 tilesTag, u16 paletteTag);
diff --git a/include/decoration_inventory.h b/include/decoration_inventory.h
index 7539f7240..7362c2da2 100644
--- a/include/decoration_inventory.h
+++ b/include/decoration_inventory.h
@@ -11,13 +11,13 @@ extern struct DecorationInventory gDecorationInventories[];
void SetDecorationInventoriesPointers(void);
void ClearDecorationInventories(void);
-s8 GetFirstEmptyDecorSlot(u8 idx);
+s8 GetFirstEmptyDecorSlot(u8 category);
u8 CheckHasDecoration(u8);
u8 DecorationAdd(u8);
u8 DecorationCheckSpace(u8);
s8 DecorationRemove(u8);
-void CondenseDecorationCategoryN(u8);
-u8 CountDecorationCategoryN(u8 idx);
-u8 CountDecorations(void);
+void CondenseDecorationsInCategory(u8 category);
+u8 GetNumOwnedDecorationsInCategory(u8 category);
+u8 GetNumOwnedDecorations(void);
#endif // GUARD_DECORATION_INVENTORY_H
diff --git a/include/event_object_movement.h b/include/event_object_movement.h
index ab555fda0..93f73e635 100644
--- a/include/event_object_movement.h
+++ b/include/event_object_movement.h
@@ -64,6 +64,10 @@ extern const struct OamData gEventObjectBaseOam_32x32;
extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[];
extern const u8 gReflectionEffectPaletteMap[];
+extern const u8 *const gBerryTreeEventObjectGraphicsIdTablePointers[];
+extern const struct SpriteFrameImage *const gBerryTreePicTablePointers[];
+extern const u8 *const gBerryTreePaletteSlotTablePointers[];
+
void ResetEventObjects(void);
u8 GetMoveDirectionAnimNum(u8);
u8 GetEventObjectIdByLocalIdAndMap(u8, u8, u8);
@@ -74,10 +78,10 @@ u8 GetFirstInactiveEventObjectId(void);
void RemoveEventObjectByLocalIdAndMap(u8, u8, u8);
void LoadPlayerObjectReflectionPalette(u16, u8);
void LoadSpecialObjectReflectionPalette(u16, u8);
-void sub_808EBA8(u8, u8, u8, s16, s16);
+void TryMoveEventObjectToMapCoords(u8, u8, u8, s16, s16);
void PatchObjectPalette(u16, u8);
void sub_808E16C(s16, s16);
-void sub_808F28C(u8 localId, u8 mapNum, u8 mapGroup, u8 decorCat);
+void OverrideSecretBaseDecorationSpriteScript(u8 localId, u8 mapNum, u8 mapGroup, u8 decorCat);
void sub_8092FF0(s16, s16, s16 *, s16 *);
u8 GetFaceDirectionAnimNum(u8);
void sub_80930E0(s16 *, s16 *, s16, s16);
@@ -86,7 +90,7 @@ void EventObjectClearHeldMovementIfActive(struct EventObject *);
void TrySpawnEventObjects(s16, s16);
u8 sprite_new(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction);
u8 AddPseudoEventObject(u16, void (*)(struct Sprite *), s16 x, s16 y, u8 subpriority);
-u8 show_sprite(u8, u8, u8);
+u8 TrySpawnEventObject(u8, u8, u8);
u8 SpawnSpecialEventObjectParameterized(u8 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 z);
u8 SpawnSpecialEventObject(struct EventObjectTemplate *);
void SetSpritePosToMapCoords(s16, s16, s16 *, s16 *);
@@ -103,8 +107,8 @@ void sub_808E78C(u8, u8, u8, u8);
void sub_808E75C(s16, s16);
void EventObjectGetLocalIdAndMap(struct EventObject *eventObject, void *localId, void *mapNum, void *mapGroup);
void ShiftEventObjectCoords(struct EventObject *, s16, s16);
-void sub_808EB08(struct EventObject *, s16, s16);
-void sub_808F254(u8, u8, u8);
+void MoveEventObjectToMapCoords(struct EventObject *, s16, s16);
+void TryOverrideEventObjectTemplateCoords(u8, u8, u8);
void InitEventObjectPalettes(u8 palSlot);
void UpdateEventObjectCurrentMovement(struct EventObject *, struct Sprite *, bool8(struct EventObject *, struct Sprite *));
u8 EventObjectFaceOppositeDirection(struct EventObject *, u8);
diff --git a/include/event_scripts.h b/include/event_scripts.h
index bf7084326..fc0b3cde0 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -15,9 +15,10 @@ extern const u8 EventScript_TryDoDoubleTrainerBattle[];
extern const u8 EventScript_TryDoNormalTrainerBattle[];
extern const u8 EventScript_TryDoDoubleRematchBattle[];
extern const u8 EventScript_TryDoRematchBattle[];
-extern const u8 EventScript_SecretPower1[];
-extern const u8 EventScript_SecretPower2[];
+extern const u8 SecretBase_EventScript_DollInteract[];
+extern const u8 SecretBase_EventScript_CushionInteract[];
+extern const u8 BerryTreeScript[];
extern const u8 gTVBravoTrainerText00[];
extern const u8 gTVBravoTrainerText01[];
@@ -381,10 +382,10 @@ extern const u8 SecretBase_RedCave1_Text_2758CC[];
extern const u8 BattleFrontier_BattlePyramidEmptySquare_EventScript_252C88[];
//field effects
-extern const u8 FieryPath_EventScript_2908FD[];
-extern const u8 EventScript_290CAE[];
+extern const u8 EventScript_FldEffStrength[];
+extern const u8 EventScript_FailSweetScent[];
extern const u8 EventScript_2926F8[];
-extern const u8 Route111_EventScript_2907F0[];
+extern const u8 EventScript_FldEffRockSmash[];
//player pc
extern const u8 LittlerootTown_BrendansHouse_2F_EventScript_1F863F[];
@@ -528,8 +529,6 @@ extern const u8 EventScript_PlayerPCMale[];
extern const u8 EventScript_PlayerPCFemale[];
extern const u8 EventScript_SecretBasePC[];
extern const u8 EventScript_RecordMixingSecretBasePC[];
-extern const u8 EventScript_SecretPower1[];
-extern const u8 EventScript_SecretPower2[];
extern const u8 EventScript_PC[];
extern const u8 EventScript_TestSignpostMsg[];
extern const u8 EventScript_HiddenItemScript[];
diff --git a/include/field_effect.h b/include/field_effect.h
index 1f5f4ee29..0dbe600d3 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -1,9 +1,7 @@
#ifndef GUARD_FIELD_EFFECTS_H
#define GUARD_FIELD_EFFECTS_H
-extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[2];
extern const struct SpritePalette gNewGameBirchObjectPaletteInfo;
-extern const struct CompressedSpriteSheet gTrainerFrontPicTable[2];
extern const struct SpriteTemplate gNewGameBirchObjectTemplate;
extern const struct OamData gNewGameBirchOamAttributes;
@@ -53,4 +51,4 @@ void FreeResourcesAndDestroySprite(struct Sprite *sprite, u8 spriteId);
u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority);
void StartEscapeRopeFieldEffect(void);
-#endif //GUARD_FIELD_EFFECTS_H
+#endif // GUARD_FIELD_EFFECTS_H
diff --git a/include/field_specials.h b/include/field_specials.h
index 68b233074..b1a50c811 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -1,6 +1,9 @@
#ifndef GUARD_FIELD_SPECIALS_H
#define GUARD_FIELD_SPECIALS_H
+extern bool8 gBikeCyclingChallenge;
+extern u8 gBikeCollisions;
+
u8 GetLeadMonIndex(void);
u8 sub_813B260(void);
u16 get_unknown_box_id(void);
diff --git a/include/gba/types.h b/include/gba/types.h
index cb370c785..9f2594703 100644
--- a/include/gba/types.h
+++ b/include/gba/types.h
@@ -107,8 +107,8 @@ struct OamData
#define SPRITE_SIZE_16x32 ((ST_OAM_SIZE_2 << 2) | (ST_OAM_V_RECTANGLE))
#define SPRITE_SIZE_32x64 ((ST_OAM_SIZE_3 << 2) | (ST_OAM_V_RECTANGLE))
-#define SPRITE_SIZE(dim) (SPRITE_SIZE_##dim >> 2)
-#define SPRITE_SHAPE(dim) (SPRITE_SIZE_##dim & 0xFF)
+#define SPRITE_SIZE(dim) ((SPRITE_SIZE_##dim >> 2) & 0x03)
+#define SPRITE_SHAPE(dim) (SPRITE_SIZE_##dim & 0x03)
struct BgAffineSrcData
{
diff --git a/include/global.h b/include/global.h
index 0a44ed3a9..8b61164f6 100644
--- a/include/global.h
+++ b/include/global.h
@@ -476,21 +476,21 @@ struct SecretBaseParty
u8 EVs[PARTY_SIZE];
};
-struct SecretBaseRecord
+struct SecretBase
{
/*0x1A9C*/ u8 secretBaseId;
/*0x1A9D*/ u8 sbr_field_1_0:4;
/*0x1A9D*/ u8 gender:1;
- /*0x1A9D*/ u8 sbr_field_1_5:1;
- /*0x1A9D*/ u8 sbr_field_1_6:2;
+ /*0x1A9D*/ u8 battledOwnerToday:1;
+ /*0x1A9D*/ u8 registryStatus:2;
/*0x1A9E*/ u8 trainerName[PLAYER_NAME_LENGTH];
/*0x1AA5*/ u8 trainerId[4]; // byte 0 is used for determining trainer class
/*0x1AA9*/ u8 language;
- /*0x1AAA*/ u16 sbr_field_e;
- /*0x1AAC*/ u8 sbr_field_10;
+ /*0x1AAA*/ u16 numSecretBasesReceived;
+ /*0x1AAC*/ u8 numTimesEntered;
/*0x1AAD*/ u8 sbr_field_11;
/*0x1AAE*/ u8 decorations[16];
- /*0x1ABE*/ u8 decorationPos[16];
+ /*0x1ABE*/ u8 decorationPositions[16];
/*0x1AD0*/ struct SecretBaseParty party;
};
@@ -920,7 +920,7 @@ struct SaveBlock1
/*0x139C*/ u16 vars[VARS_COUNT];
/*0x159C*/ u32 gameStats[NUM_GAME_STATS];
/*0x169C*/ struct BerryTree berryTrees[BERRY_TREES_COUNT];
- /*0x1A9C*/ struct SecretBaseRecord secretBases[SECRET_BASES_COUNT];
+ /*0x1A9C*/ struct SecretBase secretBases[SECRET_BASES_COUNT];
/*0x271C*/ u8 playerRoomDecor[12];
/*0x2728*/ u8 playerRoomDecorPos[12];
/*0x2734*/ u8 decorDesk[10];
diff --git a/include/graphics.h b/include/graphics.h
index 30ca2af82..4e558b508 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4019,6 +4019,13 @@ extern const u32 gPokenavLeftHeaderMainMenu_Gfx[];
extern const u32 gPokenavLeftHeaderCondition_Gfx[];
extern const u32 gPokenavLeftHeaderRibbons_Gfx[];
extern const u32 gPokenavLeftHeaderMatchCall_Gfx[];
+extern const u32 gPokenavLeftHeaderParty_Gfx[];
+extern const u32 gPokenavLeftHeaderSearch_Gfx[];
+extern const u32 gPokenavLeftHeaderCool_Gfx[];
+extern const u32 gPokenavLeftHeaderBeauty_Gfx[];
+extern const u32 gPokenavLeftHeaderCute_Gfx[];
+extern const u32 gPokenavLeftHeaderSmart_Gfx[];
+extern const u32 gPokenavLeftHeaderTough_Gfx[];
extern const u32 gPageInfoTilemap[];
extern const u32 gUnknown_08D98CC8[];
@@ -4122,620 +4129,620 @@ extern const u32 gBattleArenaJudgementSymbolsGfx[];
extern const u32 gBattleArenaJudgementSymbolsPalette[];
extern const u32 gContest2Pal[];
-extern const u32 gBattleAnimSpriteSheet_000[];
-extern const u32 gBattleAnimSpriteSheet_001[];
-extern const u32 gBattleAnimSpriteSheet_002[];
-extern const u32 gBattleAnimSpriteSheet_003[];
-extern const u32 gBattleAnimSpriteSheet_004[];
-extern const u32 gBattleAnimSpriteSheet_005[];
-extern const u32 gBattleAnimSpriteSheet_006[];
-extern const u32 gBattleAnimSpriteSheet_007[];
-extern const u32 gBattleAnimSpriteSheet_008[];
-extern const u32 gBattleAnimSpriteSheet_009[];
-extern const u32 gBattleAnimSpriteSheet_010[];
-extern const u32 gBattleAnimSpriteSheet_011[];
-extern const u32 gBattleAnimSpriteSheet_012[];
-extern const u32 gBattleAnimSpriteSheet_013[];
-extern const u32 gBattleAnimSpriteSheet_014[];
-extern const u32 gBattleAnimSpriteSheet_015[];
-extern const u32 gBattleAnimSpriteSheet_016[];
-extern const u32 gBattleAnimSpriteSheet_017[];
-extern const u32 gBattleAnimSpriteSheet_018[];
-extern const u32 gBattleAnimSpriteSheet_019[];
-extern const u32 gBattleAnimSpriteSheet_020[];
-extern const u32 gBattleAnimSpriteSheet_021[];
-extern const u32 gBattleAnimSpriteSheet_021[];
-extern const u32 gBattleAnimSpriteSheet_023[];
-extern const u32 gBattleAnimSpriteSheet_024[];
-extern const u32 gBattleAnimSpriteSheet_025[];
-extern const u32 gBattleAnimSpriteSheet_026[];
-extern const u32 gBattleAnimSpriteSheet_027[];
-extern const u32 gBattleAnimSpriteSheet_028[];
-extern const u32 gBattleAnimSpriteSheet_029[];
-extern const u32 gBattleAnimSpriteSheet_030[];
-extern const u32 gBattleAnimSpriteSheet_031[];
-extern const u32 gBattleAnimSpriteSheet_032[];
-extern const u32 gBattleAnimSpriteSheet_033[];
-extern const u32 gBattleAnimSpriteSheet_034[];
-extern const u32 gBattleAnimSpriteSheet_035[];
-extern const u32 gBattleAnimSpriteSheet_036[];
-extern const u32 gBattleAnimSpriteSheet_037[];
-extern const u32 gBattleAnimSpriteSheet_038[];
-extern const u32 gBattleAnimSpriteSheet_039[];
-extern const u32 gBattleAnimSpriteSheet_040[];
-extern const u32 gBattleAnimSpriteSheet_041[];
-extern const u32 gBattleAnimSpriteSheet_042[];
-extern const u32 gBattleAnimSpriteSheet_043[];
-extern const u32 gBattleAnimSpriteSheet_044[];
-extern const u32 gBattleAnimSpriteSheet_045[];
-extern const u32 gBattleAnimSpriteSheet_046[];
-extern const u32 gBattleAnimSpriteSheet_046[];
-extern const u32 gBattleAnimSpriteSheet_048[];
-extern const u32 gBattleAnimSpriteSheet_048[];
-extern const u32 gBattleAnimSpriteSheet_050[];
-extern const u32 gBattleAnimSpriteSheet_051[];
-extern const u32 gBattleAnimSpriteSheet_052[];
-extern const u32 gBattleAnimSpriteSheet_053[];
+extern const u32 gBattleAnimSpriteGfx_Bone[];
+extern const u32 gBattleAnimSpriteGfx_Spark[];
+extern const u32 gBattleAnimSpriteGfx_Pencil[];
+extern const u32 gBattleAnimSpriteGfx_AirWave[];
+extern const u32 gBattleAnimSpriteGfx_Orb[];
+extern const u32 gBattleAnimSpriteGfx_Sword[];
+extern const u32 gBattleAnimSpriteGfx_Seed[];
+extern const u32 gBattleAnimSpriteGfx_Explosion6[];
+extern const u32 gBattleAnimSpriteGfx_PinkOrb[];
+extern const u32 gBattleAnimSpriteGfx_Gust[];
+extern const u32 gBattleAnimSpriteGfx_IceCube[];
+extern const u32 gBattleAnimSpriteGfx_Spark2[];
+extern const u32 gBattleAnimSpriteGfx_Orange[];
+extern const u32 gBattleAnimSpriteGfx_YellowBall[];
+extern const u32 gBattleAnimSpriteGfx_LockOn[];
+extern const u32 gBattleAnimSpriteGfx_TiedBag[];
+extern const u32 gBattleAnimSpriteGfx_BlackSmoke[];
+extern const u32 gBattleAnimSpriteGfx_BlackBall[];
+extern const u32 gBattleAnimSpriteGfx_Conversion[];
+extern const u32 gBattleAnimSpriteGfx_Glass[];
+extern const u32 gBattleAnimSpriteGfx_HornHit[];
+extern const u32 gBattleAnimSpriteGfx_Hit[];
+extern const u32 gBattleAnimSpriteGfx_Hit[];
+extern const u32 gBattleAnimSpriteGfx_BlueShards[];
+extern const u32 gBattleAnimSpriteGfx_ClosingEye[];
+extern const u32 gBattleAnimSpriteGfx_WavingHand[];
+extern const u32 gBattleAnimSpriteGfx_HitDuplicate[];
+extern const u32 gBattleAnimSpriteGfx_Leer[];
+extern const u32 gBattleAnimSpriteGfx_BlueBurst[];
+extern const u32 gBattleAnimSpriteGfx_SmallEmber[];
+extern const u32 gBattleAnimSpriteGfx_GraySmoke[];
+extern const u32 gBattleAnimSpriteGfx_BlueStar[];
+extern const u32 gBattleAnimSpriteGfx_BubbleBurst[];
+extern const u32 gBattleAnimSpriteGfx_Fire[];
+extern const u32 gBattleAnimSpriteGfx_SpinningFire[];
+extern const u32 gBattleAnimSpriteGfx_FirePlume[];
+extern const u32 gBattleAnimSpriteGfx_Lightning2[];
+extern const u32 gBattleAnimSpriteGfx_Lightning[];
+extern const u32 gBattleAnimSpriteGfx_ClawSlash2[];
+extern const u32 gBattleAnimSpriteGfx_ClawSlash[];
+extern const u32 gBattleAnimSpriteGfx_Scratch3[];
+extern const u32 gBattleAnimSpriteGfx_Scratch2[];
+extern const u32 gBattleAnimSpriteGfx_BubbleBurst2[];
+extern const u32 gBattleAnimSpriteGfx_IceChunk[];
+extern const u32 gBattleAnimSpriteGfx_Glass2[];
+extern const u32 gBattleAnimSpriteGfx_PinkHeart2[];
+extern const u32 gBattleAnimSpriteGfx_SapDrip[];
+extern const u32 gBattleAnimSpriteGfx_SapDrip[];
+extern const u32 gBattleAnimSpriteGfx_Sparkle1[];
+extern const u32 gBattleAnimSpriteGfx_Sparkle1[];
+extern const u32 gBattleAnimSpriteGfx_HumanoidFoot[];
+extern const u32 gBattleAnimSpriteGfx_MonsterFoot[];
+extern const u32 gBattleAnimSpriteGfx_HumanoidHand[];
+extern const u32 gBattleAnimSpriteGfx_NoiseLine[];
extern const u32 gUnknown_08C2EA50[];
extern const u32 gUnknown_08C2EA9C[];
-extern const u32 gBattleAnimSpriteSheet_054[];
-extern const u32 gBattleAnimSpriteSheet_055[];
-extern const u32 gBattleAnimSpriteSheet_056[];
-extern const u32 gBattleAnimSpriteSheet_057[];
-extern const u32 gBattleAnimSpriteSheet_058[];
-extern const u32 gBattleAnimSpriteSheet_059[];
-extern const u32 gBattleAnimSpriteSheet_060[];
-extern const u32 gBattleAnimSpriteSheet_061[];
-extern const u32 gBattleAnimSpriteSheet_062[];
-extern const u32 gBattleAnimSpriteSheet_063[];
-extern const u32 gBattleAnimSpriteSheet_064[];
-extern const u32 gBattleAnimSpriteSheet_065[];
-extern const u32 gBattleAnimSpriteSheet_066[];
-extern const u32 gBattleAnimSpriteSheet_070[];
-extern const u32 gBattleAnimSpriteSheet_071[];
-extern const u32 gBattleAnimSpriteSheet_072[];
-extern const u32 gBattleAnimSpriteSheet_073[];
-extern const u32 gBattleAnimSpriteSheet_074[];
-extern const u32 gBattleAnimSpriteSheet_075[];
-extern const u32 gBattleAnimSpriteSheet_076[];
-extern const u32 gBattleAnimSpriteSheet_077[];
-extern const u32 gBattleAnimSpriteSheet_078[];
-extern const u32 gBattleAnimSpriteSheet_079[];
-extern const u32 gBattleAnimSpriteSheet_080[];
-extern const u32 gBattleAnimSpriteSheet_081[];
-extern const u32 gBattleAnimSpriteSheet_082[];
-extern const u32 gBattleAnimSpriteSheet_083[];
-extern const u32 gBattleAnimSpriteSheet_084[];
-extern const u32 gBattleAnimSpriteSheet_085[];
-extern const u32 gBattleAnimSpriteSheet_086[];
-extern const u32 gBattleAnimSpriteSheet_087[];
-extern const u32 gBattleAnimSpriteSheet_088[];
-extern const u32 gBattleAnimSpriteSheet_089[];
-extern const u32 gBattleAnimSpriteSheet_090[];
-extern const u32 gBattleAnimSpriteSheet_091[];
-extern const u32 gBattleAnimSpriteSheet_092[];
-extern const u32 gBattleAnimSpriteSheet_093[];
-extern const u32 gBattleAnimSpriteSheet_094[];
-extern const u32 gBattleAnimSpriteSheet_095[];
-extern const u32 gBattleAnimSpriteSheet_096[];
-extern const u32 gBattleAnimSpriteSheet_097[];
-extern const u32 gBattleAnimSpriteSheet_098[];
-extern const u32 gBattleAnimSpriteSheet_099[];
-extern const u32 gBattleAnimSpriteSheet_100[];
-extern const u32 gBattleAnimSpriteSheet_101[];
-extern const u32 gBattleAnimSpriteSheet_102[];
-extern const u32 gBattleAnimSpriteSheet_103[];
-extern const u32 gBattleAnimSpriteSheet_104[];
-extern const u32 gBattleAnimSpriteSheet_105[];
-extern const u32 gBattleAnimSpriteSheet_106[];
-extern const u32 gBattleAnimSpriteSheet_107[];
-extern const u32 gBattleAnimSpriteSheet_108[];
-extern const u32 gBattleAnimSpriteSheet_109[];
-extern const u32 gBattleAnimSpriteSheet_110[];
-extern const u32 gBattleAnimSpriteSheet_111[];
-extern const u32 gBattleAnimSpriteSheet_112[];
-extern const u32 gBattleAnimSpriteSheet_113[];
-extern const u32 gBattleAnimSpriteSheet_114[];
-extern const u32 gBattleAnimSpriteSheet_115[];
-extern const u32 gBattleAnimSpriteSheet_116[];
-extern const u32 gBattleAnimSpriteSheet_117[];
-extern const u32 gBattleAnimSpriteSheet_118[];
-extern const u32 gBattleAnimSpriteSheet_119[];
-extern const u32 gBattleAnimSpriteSheet_120[];
-extern const u32 gBattleAnimSpriteSheet_121[];
-extern const u32 gBattleAnimSpriteSheet_122[];
-extern const u32 gBattleAnimSpriteSheet_123[];
-extern const u32 gBattleAnimSpriteSheet_124[];
-extern const u32 gBattleAnimSpriteSheet_125[];
-extern const u32 gBattleAnimSpriteSheet_126[];
-extern const u32 gBattleAnimSpriteSheet_127[];
-extern const u32 gBattleAnimSpriteSheet_128[];
-extern const u32 gBattleAnimSpriteSheet_129[];
-extern const u32 gBattleAnimSpriteSheet_130[];
-extern const u32 gBattleAnimSpriteSheet_131[];
-extern const u32 gBattleAnimSpriteSheet_132[];
-extern const u32 gBattleAnimSpriteSheet_133[];
-extern const u32 gBattleAnimSpriteSheet_134[];
-extern const u32 gBattleAnimSpriteSheet_135[];
-extern const u32 gBattleAnimSpriteSheet_Particles[];
-extern const u32 gBattleAnimSpriteSheet_136[];
-extern const u32 gBattleAnimSpriteSheet_137[];
-extern const u32 gBattleAnimSpriteSheet_138[];
-extern const u32 gBattleAnimSpriteSheet_139[];
-extern const u32 gBattleAnimSpriteSheet_140[];
-extern const u32 gBattleAnimSpriteSheet_141[];
-extern const u32 gBattleAnimSpriteSheet_142[];
-extern const u32 gBattleAnimSpriteSheet_143[];
-extern const u32 gBattleAnimSpriteSheet_144[];
-extern const u32 gBattleAnimSpriteSheet_145[];
-//extern const struct CompressedSpriteSheet gBattleAnimSpriteSheet_146[];
-extern const u32 gBattleAnimSpriteSheet_146[];
-extern const u32 gBattleAnimSpriteSheet_147[];
-extern const u32 gBattleAnimSpriteSheet_148[];
-extern const u32 gBattleAnimSpriteSheet_149[];
-extern const u32 gBattleAnimSpriteSheet_150[];
-extern const u32 gBattleAnimSpriteSheet_151[];
-extern const u32 gBattleAnimSpriteSheet_152[];
-extern const u32 gBattleAnimSpriteSheet_153[];
-extern const u32 gBattleAnimSpriteSheet_154[];
-extern const u32 gBattleAnimSpriteSheet_155[];
-extern const u32 gBattleAnimSpriteSheet_156[];
-extern const u32 gBattleAnimSpriteSheet_157[];
-extern const u32 gBattleAnimSpriteSheet_158[];
-extern const u32 gBattleAnimSpriteSheet_159[];
-extern const u32 gBattleAnimSpriteSheet_160[];
-extern const u32 gBattleAnimSpriteSheet_161[];
-extern const u32 gBattleAnimSpriteSheet_162[];
-extern const u32 gBattleAnimSpriteSheet_163[];
-extern const u32 gBattleAnimSpriteSheet_166[];
-extern const u32 gBattleAnimSpriteSheet_171[];
-extern const u32 gBattleAnimSpriteSheet_173[];
-extern const u32 gBattleAnimSpriteSheet_174[];
-extern const u32 gBattleAnimSpriteSheet_175[];
-extern const u32 gBattleAnimSpriteSheet_176[];
-extern const u32 gBattleAnimSpriteSheet_177[];
-extern const u32 gBattleAnimSpriteSheet_178[];
-extern const u32 gBattleAnimSpriteSheet_179[];
-extern const u32 gBattleAnimSpriteSheet_180[];
-extern const u32 gBattleAnimSpriteSheet_181[];
-extern const u32 gBattleAnimSpriteSheet_182[];
-extern const u32 gBattleAnimSpriteSheet_183[];
-extern const u32 gBattleAnimSpriteSheet_184[];
-extern const u32 gBattleAnimSpriteSheet_185[];
-extern const u32 gBattleAnimSpriteSheet_186[];
-extern const u32 gBattleAnimSpriteSheet_187[];
-extern const u32 gBattleAnimSpriteSheet_188[];
-extern const u32 gBattleAnimSpriteSheet_189[];
-extern const u32 gBattleAnimSpriteSheet_190[];
-extern const u32 gBattleAnimSpriteSheet_191[];
-extern const u32 gBattleAnimSpriteSheet_192[];
-extern const u32 gBattleAnimSpriteSheet_193[];
-extern const u32 gBattleAnimSpriteSheet_194[];
-extern const u32 gBattleAnimSpriteSheet_195[];
-extern const u32 gBattleAnimSpriteSheet_196[];
-extern const u32 gBattleAnimSpriteSheet_197[];
-extern const u32 gBattleAnimSpriteSheet_198[];
-extern const u32 gBattleAnimSpriteSheet_199[];
-extern const u32 gBattleAnimSpriteSheet_200[];
-extern const u32 gBattleAnimSpriteSheet_201[];
-extern const u32 gBattleAnimSpriteSheet_202[];
-extern const u32 gBattleAnimSpriteSheet_203[];
-extern const u32 gBattleAnimSpriteSheet_204[];
-extern const u32 gBattleAnimSpriteSheet_205[];
-extern const u32 gBattleAnimSpriteSheet_206[];
-extern const u32 gBattleAnimSpriteSheet_207[];
-extern const u32 gBattleAnimSpriteSheet_208[];
-extern const u32 gBattleAnimSpriteSheet_209[];
-extern const u32 gBattleAnimSpriteSheet_210[];
-extern const u32 gBattleAnimSpriteSheet_211[];
-extern const u32 gBattleAnimSpriteSheet_212[];
-extern const u32 gBattleAnimSpriteSheet_213[];
-extern const u32 gBattleAnimSpriteSheet_214[];
-extern const u32 gBattleAnimSpriteSheet_215[];
-extern const u32 gBattleAnimSpriteSheet_210[];
-extern const u32 gBattleAnimSpriteSheet_217[];
-extern const u32 gBattleAnimSpriteSheet_218[];
-extern const u32 gBattleAnimSpriteSheet_210[];
-extern const u32 gBattleAnimSpriteSheet_220[];
-extern const u32 gBattleAnimSpriteSheet_221[];
-extern const u32 gBattleAnimSpriteSheet_222[];
-extern const u32 gBattleAnimSpriteSheet_223[];
-extern const u32 gBattleAnimSpriteSheet_224[];
-extern const u32 gBattleAnimSpriteSheet_225[];
-extern const u32 gBattleAnimSpriteSheet_226[];
-extern const u32 gBattleAnimSpriteSheet_227[];
-extern const u32 gBattleAnimSpriteSheet_228[];
-extern const u32 gBattleAnimSpriteSheet_229[];
-extern const u32 gBattleAnimSpriteSheet_230[];
-extern const u32 gBattleAnimSpriteSheet_231[];
-extern const u32 gBattleAnimSpriteSheet_232[];
-extern const u32 gBattleAnimSpriteSheet_233[];
-extern const u32 gBattleAnimSpriteSheet_234[];
-extern const u32 gBattleAnimSpriteSheet_235[];
-extern const u32 gBattleAnimSpriteSheet_235[];
-extern const u32 gBattleAnimSpriteSheet_235[];
-extern const u32 gBattleAnimSpriteSheet_238[];
-extern const u32 gBattleAnimSpriteSheet_239[];
-extern const u32 gBattleAnimSpriteSheet_240[];
-extern const u32 gBattleAnimSpriteSheet_241[];
-extern const u32 gBattleAnimSpriteSheet_242[];
-extern const u32 gBattleAnimSpriteSheet_243[];
-extern const u32 gBattleAnimSpriteSheet_244[];
-extern const u32 gBattleAnimSpriteSheet_245[];
-extern const u32 gBattleAnimSpriteSheet_246[];
-extern const u32 gBattleAnimSpriteSheet_247[];
-extern const u32 gBattleAnimSpriteSheet_248[];
-extern const u32 gBattleAnimSpriteSheet_249[];
-extern const u32 gBattleAnimSpriteSheet_250[];
-extern const u32 gBattleAnimSpriteSheet_251[];
-extern const u32 gBattleAnimSpriteSheet_252[];
-extern const u32 gBattleAnimSpriteSheet_253[];
-extern const u32 gBattleAnimSpriteSheet_254[];
-extern const u32 gBattleAnimSpriteSheet_255[];
-extern const u32 gBattleAnimSpriteSheet_256[];
-extern const u32 gBattleAnimSpriteSheet_257[];
-extern const u32 gBattleAnimSpriteSheet_258[];
-extern const u32 gBattleAnimSpriteSheet_260[];
-extern const u32 gBattleAnimSpriteSheet_261[];
-extern const u32 gBattleAnimSpriteSheet_262[];
-extern const u32 gBattleAnimSpriteSheet_263[];
-extern const u32 gBattleAnimSpriteSheet_264[];
-extern const u32 gBattleAnimSpriteSheet_266[];
-extern const u32 gBattleAnimSpriteSheet_269[];
-extern const u32 gBattleAnimSpriteSheet_270[];
-extern const u32 gBattleAnimSpriteSheet_271[];
-extern const u32 gBattleAnimSpriteSheet_272[];
-extern const u32 gBattleAnimSpriteSheet_273[];
-extern const u32 gBattleAnimSpriteSheet_274[];
-extern const u32 gBattleAnimSpriteSheet_275[];
-extern const u32 gBattleAnimSpriteSheet_276[];
-extern const u32 gBattleAnimSpriteSheet_277[];
-extern const u32 gBattleAnimSpriteSheet_278[];
-extern const u32 gBattleAnimSpriteSheet_279[];
-extern const u32 gBattleAnimSpriteSheet_280[];
-extern const u32 gBattleAnimSpriteSheet_281[];
-extern const u32 gBattleAnimSpriteSheet_282[];
-extern const u32 gBattleAnimSpriteSheet_283[];
-extern const u32 gBattleAnimBackgroundTilemap_ScaryFacePlayer[];
-extern const u32 gBattleAnimBackgroundTilemap_ScaryFaceOpponent[];
-extern const u32 gBattleAnimBackgroundTilemap_ScaryFaceContest[];
-extern const u32 gBattleAnimSpriteSheet_284[];
-extern const u32 gBattleAnimSpriteSheet_285[];
+extern const u32 gBattleAnimSpriteGfx_YellowUnk[];
+extern const u32 gBattleAnimSpriteGfx_RedFist[];
+extern const u32 gBattleAnimSpriteGfx_SlamHit[];
+extern const u32 gBattleAnimSpriteGfx_Ring[];
+extern const u32 gBattleAnimSpriteGfx_Rocks[];
+extern const u32 gBattleAnimSpriteGfx_Z[];
+extern const u32 gBattleAnimSpriteGfx_YellowUnk2[];
+extern const u32 gBattleAnimSpriteGfx_AirSlash[];
+extern const u32 gBattleAnimSpriteGfx_SpinningGreenOrbs[];
+extern const u32 gBattleAnimSpriteGfx_Leaf[];
+extern const u32 gBattleAnimSpriteGfx_Finger[];
+extern const u32 gBattleAnimSpriteGfx_PoisonPowder[];
+extern const u32 gBattleAnimSpriteGfx_BrownTriangle[];
+extern const u32 gBattleAnimSpriteGfx_Sparkle3[];
+extern const u32 gBattleAnimSpriteGfx_Sparkle4[];
+extern const u32 gBattleAnimSpriteGfx_MusicNotes[];
+extern const u32 gBattleAnimSpriteGfx_Duck[];
+extern const u32 gBattleAnimSpriteGfx_MudSand[];
+extern const u32 gBattleAnimSpriteGfx_Alert[];
+extern const u32 gBattleAnimSpriteGfx_BlueFlames[];
+extern const u32 gBattleAnimSpriteGfx_BlueFlames2[];
+extern const u32 gBattleAnimSpriteGfx_Shock4[];
+extern const u32 gBattleAnimSpriteGfx_Shock[];
+extern const u32 gBattleAnimSpriteGfx_Bell2[];
+extern const u32 gBattleAnimSpriteGfx_PinkGlove[];
+extern const u32 gBattleAnimSpriteGfx_BlueLines[];
+extern const u32 gBattleAnimSpriteGfx_Impact3[];
+extern const u32 gBattleAnimSpriteGfx_Impact2[];
+extern const u32 gBattleAnimSpriteGfx_Reticle[];
+extern const u32 gBattleAnimSpriteGfx_Breath[];
+extern const u32 gBattleAnimSpriteGfx_Anger[];
+extern const u32 gBattleAnimSpriteGfx_Snowball[];
+extern const u32 gBattleAnimSpriteGfx_Vine[];
+extern const u32 gBattleAnimSpriteGfx_Sword2[];
+extern const u32 gBattleAnimSpriteGfx_Clapping[];
+extern const u32 gBattleAnimSpriteGfx_RedTube[];
+extern const u32 gBattleAnimSpriteGfx_Amnesia[];
+extern const u32 gBattleAnimSpriteGfx_String2[];
+extern const u32 gBattleAnimSpriteGfx_Pencil2[];
+extern const u32 gBattleAnimSpriteGfx_Petal[];
+extern const u32 gBattleAnimSpriteGfx_BentSpoon[];
+extern const u32 gBattleAnimSpriteGfx_Web[];
+extern const u32 gBattleAnimSpriteGfx_MilkBottle[];
+extern const u32 gBattleAnimSpriteGfx_Coin[];
+extern const u32 gBattleAnimSpriteGfx_CrackedEgg[];
+extern const u32 gBattleAnimSpriteGfx_HatchedEgg[];
+extern const u32 gBattleAnimSpriteGfx_FreshEgg[];
+extern const u32 gBattleAnimSpriteGfx_Fangs[];
+extern const u32 gBattleAnimSpriteGfx_Explosion2[];
+extern const u32 gBattleAnimSpriteGfx_Explosion3[];
+extern const u32 gBattleAnimSpriteGfx_WaterDroplet[];
+extern const u32 gBattleAnimSpriteGfx_WaterDroplet2[];
+extern const u32 gBattleAnimSpriteGfx_Seed2[];
+extern const u32 gBattleAnimSpriteGfx_Sprout[];
+extern const u32 gBattleAnimSpriteGfx_RedWand[];
+extern const u32 gBattleAnimSpriteGfx_PurpleGreenUnk[];
+extern const u32 gBattleAnimSpriteGfx_WaterColumn[];
+extern const u32 gBattleAnimSpriteGfx_MudUnk[];
+extern const u32 gBattleAnimSpriteGfx_RainDrops[];
+extern const u32 gBattleAnimSpriteGfx_FurySwipes[];
+extern const u32 gBattleAnimSpriteGfx_Vine2[];
+extern const u32 gBattleAnimSpriteGfx_Teeth[];
+extern const u32 gBattleAnimSpriteGfx_Bone2[];
+extern const u32 gBattleAnimSpriteGfx_WhiteBag[];
+extern const u32 gBattleAnimSpriteGfx_Unknown[];
+extern const u32 gBattleAnimSpriteGfx_PurpleCoral[];
+extern const u32 gBattleAnimSpriteGfx_PurpleDroplet[];
+extern const u32 gBattleAnimSpriteGfx_Shock2[];
+extern const u32 gBattleAnimSpriteGfx_ClosingEye2[];
+extern const u32 gBattleAnimSpriteGfx_MetalBall[];
+extern const u32 gBattleAnimSpriteGfx_MonsterDoll[];
+extern const u32 gBattleAnimSpriteGfx_Whirlwind[];
+extern const u32 gBattleAnimSpriteGfx_Whirlwind2[];
+extern const u32 gBattleAnimSpriteGfx_Explosion4[];
+extern const u32 gBattleAnimSpriteGfx_Explosion5[];
+extern const u32 gBattleAnimSpriteGfx_Tongue[];
+extern const u32 gBattleAnimSpriteGfx_Smoke[];
+extern const u32 gBattleAnimSpriteGfx_Smoke2[];
+extern const u32 gBattleAnimSpriteGfx_Impact[];
+extern const u32 gBattleAnimSpriteGfx_Particles[];
+extern const u32 gBattleAnimSpriteGfx_CircleImpact[];
+extern const u32 gBattleAnimSpriteGfx_Scratch[];
+extern const u32 gBattleAnimSpriteGfx_Cut[];
+extern const u32 gBattleAnimSpriteGfx_SharpTeeth[];
+extern const u32 gBattleAnimSpriteGfx_RainbowRings[];
+extern const u32 gBattleAnimSpriteGfx_IceCrystals[];
+extern const u32 gBattleAnimSpriteGfx_IceSpikes[];
+extern const u32 gBattleAnimSpriteGfx_HandsAndFeet[];
+extern const u32 gBattleAnimSpriteGfx_MistCloud[];
+extern const u32 gBattleAnimSpriteGfx_Clamp[];
+//extern const struct CompressedSpriteSheet gBattleAnimSpriteGfx_146[];
+extern const u32 gBattleAnimSpriteGfx_Bubble[];
+extern const u32 gBattleAnimSpriteGfx_Orbs[];
+extern const u32 gBattleAnimSpriteGfx_WaterImpact[];
+extern const u32 gBattleAnimSpriteGfx_WaterOrb[];
+extern const u32 gBattleAnimSpriteGfx_PoisonBubble[];
+extern const u32 gBattleAnimSpriteGfx_ToxicBubble[];
+extern const u32 gBattleAnimSpriteGfx_Spikes[];
+extern const u32 gBattleAnimSpriteGfx_HornHit2[];
+extern const u32 gBattleAnimSpriteGfx_AirWave2[];
+extern const u32 gBattleAnimSpriteGfx_SmallBubbles[];
+extern const u32 gBattleAnimSpriteGfx_RoundShadow[];
+extern const u32 gBattleAnimSpriteGfx_Sunlight[];
+extern const u32 gBattleAnimSpriteGfx_Spore[];
+extern const u32 gBattleAnimSpriteGfx_Flower[];
+extern const u32 gBattleAnimSpriteGfx_RazorLeaf[];
+extern const u32 gBattleAnimSpriteGfx_Needle[];
+extern const u32 gBattleAnimSpriteGfx_WhirlwindLines[];
+extern const u32 gBattleAnimSpriteGfx_GoldRing[];
+extern const u32 gBattleAnimSpriteGfx_GreenLightWall[];
+extern const u32 gBattleAnimSpriteGfx_BlackBall2[];
+extern const u32 gBattleAnimSpriteGfx_SparkH[];
+extern const u32 gBattleAnimSpriteGfx_YellowStar[];
+extern const u32 gBattleAnimSpriteGfx_LargeFreshEgg[];
+extern const u32 gBattleAnimSpriteGfx_ShadowBall[];
+extern const u32 gBattleAnimSpriteGfx_Lick[];
+extern const u32 gBattleAnimSpriteGfx_VoidLines[];
+extern const u32 gBattleAnimSpriteGfx_String[];
+extern const u32 gBattleAnimSpriteGfx_WebThread[];
+extern const u32 gBattleAnimSpriteGfx_SpiderWeb[];
+extern const u32 gBattleAnimSpriteGfx_Lightbulb[];
+extern const u32 gBattleAnimSpriteGfx_Slash[];
+extern const u32 gBattleAnimSpriteGfx_FocusEnergy[];
+extern const u32 gBattleAnimSpriteGfx_SphereToCube[];
+extern const u32 gBattleAnimSpriteGfx_Tendrils[];
+extern const u32 gBattleAnimSpriteGfx_Eye[];
+extern const u32 gBattleAnimSpriteGfx_WhiteShadow[];
+extern const u32 gBattleAnimSpriteGfx_TealAlert[];
+extern const u32 gBattleAnimSpriteGfx_OpeningEye[];
+extern const u32 gBattleAnimSpriteGfx_RoundWhiteHalo[];
+extern const u32 gBattleAnimSpriteGfx_FangAttack[];
+extern const u32 gBattleAnimSpriteGfx_PurpleHandOutline[];
+extern const u32 gBattleAnimSpriteGfx_Moon[];
+extern const u32 gBattleAnimSpriteGfx_GreenSparkle[];
+extern const u32 gBattleAnimSpriteGfx_Spiral[];
+extern const u32 gBattleAnimSpriteGfx_SnoreZ[];
+extern const u32 gBattleAnimSpriteGfx_Explosion[];
+extern const u32 gBattleAnimSpriteGfx_Nail[];
+extern const u32 gBattleAnimSpriteGfx_GhostlySpirit[];
+extern const u32 gBattleAnimSpriteGfx_WarmRock[];
+extern const u32 gBattleAnimSpriteGfx_BreakingEgg[];
+extern const u32 gBattleAnimSpriteGfx_ThinRing[];
+extern const u32 gBattleAnimSpriteGfx_PunchImpact[];
+extern const u32 gBattleAnimSpriteGfx_Bell[];
+extern const u32 gBattleAnimSpriteGfx_MusicNotes2[];
+extern const u32 gBattleAnimSpriteGfx_SpeedDust[];
+extern const u32 gBattleAnimSpriteGfx_TornMetal[];
+extern const u32 gBattleAnimSpriteGfx_ThoughtBubble[];
+extern const u32 gBattleAnimSpriteGfx_MagentaHeart[];
+extern const u32 gBattleAnimSpriteGfx_ElectricOrbs[];
+extern const u32 gBattleAnimSpriteGfx_CircleOfLight[];
+extern const u32 gBattleAnimSpriteGfx_Electricity[];
+extern const u32 gBattleAnimSpriteGfx_Finger2[];
+extern const u32 gBattleAnimSpriteGfx_MovementWaves[];
+extern const u32 gBattleAnimSpriteGfx_MagentaHeart[];
+extern const u32 gBattleAnimSpriteGfx_RedOrb[];
+extern const u32 gBattleAnimSpriteGfx_EyeSparkle[];
+extern const u32 gBattleAnimSpriteGfx_MagentaHeart[];
+extern const u32 gBattleAnimSpriteGfx_Angel[];
+extern const u32 gBattleAnimSpriteGfx_Devil[];
+extern const u32 gBattleAnimSpriteGfx_Swipe[];
+extern const u32 gBattleAnimSpriteGfx_Roots[];
+extern const u32 gBattleAnimSpriteGfx_ItemBag[];
+extern const u32 gBattleAnimSpriteGfx_JaggedMusicNote[];
+extern const u32 gBattleAnimSpriteGfx_Pokeball[];
+extern const u32 gBattleAnimSpriteGfx_Spotlight[];
+extern const u32 gBattleAnimSpriteGfx_LetterZ[];
+extern const u32 gBattleAnimSpriteGfx_RapidSpin[];
+extern const u32 gBattleAnimSpriteGfx_TriForceTriangle[];
+extern const u32 gBattleAnimSpriteGfx_WispOrb[];
+extern const u32 gBattleAnimSpriteGfx_WispFire[];
+extern const u32 gBattleAnimSpriteGfx_GoldStars[];
+extern const u32 gBattleAnimSpriteGfx_EclipsingOrb[];
+extern const u32 gBattleAnimSpriteGfx_GrayOrb[];
+extern const u32 gBattleAnimSpriteGfx_GrayOrb[];
+extern const u32 gBattleAnimSpriteGfx_GrayOrb[];
+extern const u32 gBattleAnimSpriteGfx_PinkPetal[];
+extern const u32 gBattleAnimSpriteGfx_PainSplit[];
+extern const u32 gBattleAnimSpriteGfx_Confetti[];
+extern const u32 gBattleAnimSpriteGfx_GreenStar[];
+extern const u32 gBattleAnimSpriteGfx_PinkCloud[];
+extern const u32 gBattleAnimSpriteGfx_SweatDrop[];
+extern const u32 gBattleAnimSpriteGfx_GuardRing[];
+extern const u32 gBattleAnimSpriteGfx_PurpleScratch[];
+extern const u32 gBattleAnimSpriteGfx_PurpleSwipe[];
+extern const u32 gBattleAnimSpriteGfx_TagHand[];
+extern const u32 gBattleAnimSpriteGfx_SmallRedEye[];
+extern const u32 gBattleAnimSpriteGfx_HollowOrb[];
+extern const u32 gBattleAnimSpriteGfx_XSign[];
+extern const u32 gBattleAnimSpriteGfx_BluegreenOrb[];
+extern const u32 gBattleAnimSpriteGfx_PawPrint[];
+extern const u32 gBattleAnimSpriteGfx_PurpleFlame[];
+extern const u32 gBattleAnimSpriteGfx_RedBall[];
+extern const u32 gBattleAnimSpriteGfx_SmellingsaltEffect[];
+extern const u32 gBattleAnimSpriteGfx_Meteor[];
+extern const u32 gBattleAnimSpriteGfx_FlatRock[];
+extern const u32 gBattleAnimSpriteGfx_MagnifyingGlass[];
+extern const u32 gBattleAnimSpriteGfx_MetalSoundWaves[];
+extern const u32 gBattleAnimSpriteGfx_FlyingDirt[];
+extern const u32 gBattleAnimSpriteGfx_IcicleSpear[];
+extern const u32 gBattleAnimSpriteGfx_Hail[];
+extern const u32 gBattleAnimSpriteGfx_GlowyRedOrb[];
+extern const u32 gBattleAnimSpriteGfx_GreenSpike[];
+extern const u32 gBattleAnimSpriteGfx_Pokeblock[];
+extern const u32 gBattleAnimSpriteGfx_WhiteFeather[];
+extern const u32 gBattleAnimSpriteGfx_Sparkle6[];
+extern const u32 gBattleAnimSpriteGfx_Splash[];
+extern const u32 gBattleAnimSpriteGfx_SweatBead[];
+extern const u32 gBattleAnimSpriteGfx_Gem1[];
+extern const u32 gBattleAnimSpriteGfx_Gem2[];
+extern const u32 gBattleAnimSpriteGfx_Gem3[];
+extern const u32 gBattleAnimSpriteGfx_SlamHit2[];
+extern const u32 gBattleAnimSpriteGfx_Recycle[];
+extern const u32 gBattleAnimSpriteGfx_RedParticles[];
+extern const u32 gBattleAnimSpriteGfx_Protect[];
+extern const u32 gBattleAnimSpriteGfx_DirtMound[];
+extern const u32 gBattleAnimSpriteGfx_Shock3[];
+extern const u32 gBattleAnimSpriteGfx_WeatherBall[];
+extern const u32 gBattleAnimBgTilemap_ScaryFacePlayer[];
+extern const u32 gBattleAnimBgTilemap_ScaryFaceOpponent[];
+extern const u32 gBattleAnimBgTilemap_ScaryFaceContest[];
+extern const u32 gBattleAnimSpriteGfx_Bird[];
+extern const u32 gBattleAnimSpriteGfx_CrossImpact[];
-extern const u32 gBattleAnimSpritePalette_000[];
-extern const u32 gBattleAnimSpritePalette_001[];
-extern const u32 gBattleAnimSpritePalette_002[];
-extern const u32 gBattleAnimSpritePalette_003[];
-extern const u32 gBattleAnimSpritePalette_004[];
-extern const u32 gBattleAnimSpritePalette_005[];
-extern const u32 gBattleAnimSpritePalette_006[];
-extern const u32 gBattleAnimSpritePalette_007[];
-extern const u32 gBattleAnimSpritePalette_008[];
-extern const u32 gBattleAnimSpritePalette_009[];
-extern const u32 gBattleAnimSpritePalette_010[];
-extern const u32 gBattleAnimSpritePalette_011[];
-extern const u32 gBattleAnimSpritePalette_012[];
-extern const u32 gBattleAnimSpritePalette_013[];
-extern const u32 gBattleAnimSpritePalette_014[];
-extern const u32 gBattleAnimSpritePalette_015[];
-extern const u32 gBattleAnimSpritePalette_016[];
-extern const u32 gBattleAnimSpritePalette_016[];
-extern const u32 gBattleAnimSpritePalette_018[];
-extern const u32 gBattleAnimSpritePalette_019[];
-extern const u32 gBattleAnimSpritePalette_020[];
-extern const u32 gBattleAnimSpritePalette_021[];
-extern const u32 gBattleAnimSpritePalette_022[];
-extern const u32 gBattleAnimSpritePalette_023[];
-extern const u32 gBattleAnimSpritePalette_024[];
-extern const u32 gBattleAnimSpritePalette_025[];
-extern const u32 gBattleAnimSpritePalette_026[];
-extern const u32 gBattleAnimSpritePalette_027[];
-extern const u32 gBattleAnimSpritePalette_028[];
-extern const u32 gBattleAnimSpritePalette_029[];
-extern const u32 gBattleAnimSpritePalette_030[];
-extern const u32 gBattleAnimSpritePalette_031[];
-extern const u32 gBattleAnimSpritePalette_032[];
-extern const u32 gBattleAnimSpritePalette_033[];
-extern const u32 gBattleAnimSpritePalette_033[];
-extern const u32 gBattleAnimSpritePalette_033[];
-extern const u32 gBattleAnimSpritePalette_036[];
-extern const u32 gBattleAnimSpritePalette_036[];
-extern const u32 gBattleAnimSpritePalette_038[];
-extern const u32 gBattleAnimSpritePalette_039[];
-extern const u32 gBattleAnimSpritePalette_038[];
-extern const u32 gBattleAnimSpritePalette_038[];
-extern const u32 gBattleAnimSpritePalette_042[];
-extern const u32 gBattleAnimSpritePalette_043[];
-extern const u32 gBattleAnimSpritePalette_044[];
-extern const u32 gBattleAnimSpritePalette_045[];
-extern const u32 gBattleAnimSpritePalette_046[];
-extern const u32 gBattleAnimSpritePalette_047[];
-extern const u32 gBattleAnimSpritePalette_048[];
-extern const u32 gBattleAnimSpritePalette_049[];
-extern const u32 gBattleAnimSpritePalette_050[];
-extern const u32 gBattleAnimSpritePalette_050[];
-extern const u32 gBattleAnimSpritePalette_050[];
-extern const u32 gBattleAnimSpritePalette_026[];
-extern const u32 gBattleAnimSpritePalette_054[];
-extern const u32 gBattleAnimSpritePalette_050[];
-extern const u32 gBattleAnimSpritePalette_056[];
-extern const u32 gBattleAnimSpritePalette_057[];
-extern const u32 gBattleAnimSpritePalette_058[];
-extern const u32 gBattleAnimSpritePalette_059[];
-extern const u32 gBattleAnimSpritePalette_060[];
-extern const u32 gBattleAnimSpritePalette_061[];
-extern const u32 gBattleAnimSpritePalette_062[];
-extern const u32 gBattleAnimSpritePalette_063[];
-extern const u32 gBattleAnimSpritePalette_064[];
-extern const u32 gBattleAnimSpritePalette_065[];
-extern const u32 gBattleAnimSpritePalette_066[];
-extern const u32 gBattleAnimSpritePalette_067[];
-extern const u32 gBattleAnimSpritePalette_068[];
-extern const u32 gBattleAnimSpritePalette_065[];
-extern const u32 gBattleAnimSpritePalette_070[];
-extern const u32 gBattleAnimSpritePalette_070[];
-extern const u32 gBattleAnimSpritePalette_072[];
-extern const u32 gBattleAnimSpritePalette_073[];
-extern const u32 gBattleAnimSpritePalette_074[];
-extern const u32 gBattleAnimSpritePalette_075[];
-extern const u32 gBattleAnimSpritePalette_076[];
-extern const u32 gBattleAnimSpritePalette_076[];
-extern const u32 gBattleAnimSpritePalette_078[];
-extern const u32 gBattleAnimSpritePalette_078[];
-extern const u32 gBattleAnimSpritePalette_080[];
-extern const u32 gBattleAnimSpritePalette_081[];
-extern const u32 gBattleAnimSpritePalette_082[];
-extern const u32 gBattleAnimSpritePalette_083[];
-extern const u32 gBattleAnimSpritePalette_084[];
-extern const u32 gBattleAnimSpritePalette_085[];
-extern const u32 gBattleAnimSpritePalette_086[];
-extern const u32 gBattleAnimSpritePalette_087[];
-extern const u32 gBattleAnimSpritePalette_088[];
-extern const u32 gBattleAnimSpritePalette_089[];
-extern const u32 gBattleAnimSpritePalette_090[];
-extern const u32 gBattleAnimSpritePalette_091[];
-extern const u32 gBattleAnimSpritePalette_092[];
-extern const u32 gBattleAnimSpritePalette_093[];
-extern const u32 gBattleAnimSpritePalette_094[];
-extern const u32 gBattleAnimSpritePalette_095[];
-extern const u32 gBattleAnimSpritePalette_096[];
-extern const u32 gBattleAnimSpritePalette_097[];
-extern const u32 gBattleAnimSpritePalette_094[];
-extern const u32 gBattleAnimSpritePalette_099[];
-extern const u32 gBattleAnimSpritePalette_100[];
-extern const u32 gBattleAnimSpritePalette_101[];
-extern const u32 gBattleAnimSpritePalette_101[];
-extern const u32 gBattleAnimSpritePalette_103[];
-extern const u32 gBattleAnimSpritePalette_104[];
-extern const u32 gBattleAnimSpritePalette_105[];
-extern const u32 gBattleAnimSpritePalette_105[];
-extern const u32 gBattleAnimSpritePalette_107[];
-extern const u32 gBattleAnimSpritePalette_107[];
-extern const u32 gBattleAnimSpritePalette_109[];
-extern const u32 gBattleAnimSpritePalette_109[];
-extern const u32 gBattleAnimSpritePalette_111[];
-extern const u32 gBattleAnimSpritePalette_112[];
-extern const u32 gBattleAnimSpritePalette_113[];
-extern const u32 gBattleAnimSpritePalette_114[];
-extern const u32 gBattleAnimSpritePalette_115[];
-extern const u32 gBattleAnimSpritePalette_116[];
-extern const u32 gBattleAnimSpritePalette_117[];
-extern const u32 gBattleAnimSpritePalette_118[];
-extern const u32 gBattleAnimSpritePalette_119[];
-extern const u32 gBattleAnimSpritePalette_120[];
-extern const u32 gBattleAnimSpritePalette_121[];
-extern const u32 gBattleAnimSpritePalette_122[];
-extern const u32 gBattleAnimSpritePalette_122[];
-extern const u32 gBattleAnimSpritePalette_124[];
-extern const u32 gBattleAnimSpritePalette_125[];
-extern const u32 gBattleAnimSpritePalette_126[];
-extern const u32 gBattleAnimSpritePalette_127[];
-extern const u32 gBattleAnimSpritePalette_128[];
-extern const u32 gBattleAnimSpritePalette_128[];
-extern const u32 gBattleAnimSpritePalette_130[];
-extern const u32 gBattleAnimSpritePalette_130[];
-extern const u32 gBattleAnimSpritePalette_132[];
-extern const u32 gBattleAnimSpritePalette_133[];
-extern const u32 gBattleAnimSpritePalette_133[];
-extern const u32 gBattleAnimSpritePalette_135[];
-extern const u32 gBattleAnimSpritePalette_136[];
-extern const u32 gBattleAnimSpritePalette_135[];
-extern const u32 gBattleAnimSpritePalette_135[];
-extern const u32 gBattleAnimSpritePalette_139[];
-extern const u32 gBattleAnimSpritePalette_140[];
-extern const u32 gBattleAnimSpritePalette_141[];
-extern const u32 gBattleAnimSpritePalette_141[];
-extern const u32 gBattleAnimSpritePalette_143[];
-extern const u32 gBattleAnimSpritePalette_144[];
-extern const u32 gBattleAnimSpritePalette_139[];
-extern const u32 gBattleAnimSpritePalette_115[];
-extern const u32 gBattleAnimSpritePalette_147[];
-extern const u32 gBattleAnimSpritePalette_148[];
-extern const u32 gBattleAnimSpritePalette_148[];
-extern const u32 gBattleAnimSpritePalette_150[];
-extern const u32 gBattleAnimSpritePalette_150[];
-extern const u32 gBattleAnimSpritePalette_152[];
-extern const u32 gBattleAnimSpritePalette_153[];
-extern const u32 gBattleAnimSpritePalette_154[];
-extern const u32 gBattleAnimSpritePalette_155[];
-extern const u32 gBattleAnimSpritePalette_156[];
-extern const u32 gBattleAnimSpritePalette_157[];
-extern const u32 gBattleAnimSpritePalette_158[];
-extern const u32 gBattleAnimSpritePalette_159[];
-extern const u32 gBattleAnimSpritePalette_160[];
-extern const u32 gBattleAnimSpritePalette_161[];
-extern const u32 gBattleAnimSpritePalette_162[];
-extern const u32 gBattleAnimSpritePalette_163[];
-extern const u32 gBattleAnimSpritePalette_164[];
-extern const u32 gBattleAnimSpritePalette_165[];
-extern const u32 gBattleAnimSpritePalette_166[];
-extern const u32 gBattleAnimSpritePalette_167[];
-extern const u32 gBattleAnimSpritePalette_168[];
-extern const u32 gBattleAnimSpritePalette_169[];
-extern const u32 gBattleAnimSpritePalette_170[];
-extern const u32 gBattleAnimSpritePalette_171[];
-extern const u32 gBattleAnimSpritePalette_172[];
-extern const u32 gBattleAnimSpritePalette_174[];
-extern const u32 gBattleAnimSpritePalette_175[];
-extern const u32 gBattleAnimSpritePalette_176[];
-extern const u32 gBattleAnimSpritePalette_177[];
-extern const u32 gBattleAnimSpritePalette_178[];
-extern const u32 gBattleAnimSpritePalette_179[];
-extern const u32 gBattleAnimSpritePalette_182[];
-extern const u32 gBattleAnimSpritePalette_183[];
-extern const u32 gBattleAnimSpritePalette_184[];
-extern const u32 gBattleAnimSpritePalette_185[];
-extern const u32 gBattleAnimSpritePalette_186[];
-extern const u32 gBattleAnimSpritePalette_187[];
-extern const u32 gBattleAnimSpritePalette_188[];
-extern const u32 gBattleAnimSpritePalette_189[];
-extern const u32 gBattleAnimSpritePalette_190[];
-extern const u32 gBattleAnimSpritePalette_191[];
-extern const u32 gBattleAnimSpritePalette_192[];
-extern const u32 gBattleAnimSpritePalette_193[];
-extern const u32 gBattleAnimSpritePalette_194[];
-extern const u32 gBattleAnimSpritePalette_195[];
-extern const u32 gBattleAnimSpritePalette_196[];
-extern const u32 gBattleAnimSpritePalette_197[];
-extern const u32 gBattleAnimSpritePalette_198[];
-extern const u32 gBattleAnimSpritePalette_199[];
-extern const u32 gBattleAnimSpritePalette_200[];
-extern const u32 gBattleAnimSpritePalette_201[];
-extern const u32 gBattleAnimSpritePalette_202[];
-extern const u32 gBattleAnimSpritePalette_203[];
-extern const u32 gBattleAnimSpritePalette_204[];
-extern const u32 gBattleAnimSpritePalette_205[];
-extern const u32 gBattleAnimSpritePalette_206[];
-extern const u32 gBattleAnimSpritePalette_207[];
-extern const u32 gBattleAnimSpritePalette_209[];
-extern const u32 gBattleAnimSpritePalette_210[];
-extern const u32 gBattleAnimSpritePalette_211[];
-extern const u32 gBattleAnimSpritePalette_215[];
+extern const u32 gBattleAnimSpritePal_Bone[];
+extern const u32 gBattleAnimSpritePal_Spark[];
+extern const u32 gBattleAnimSpritePal_Pencil[];
+extern const u32 gBattleAnimSpritePal_AirWave[];
+extern const u32 gBattleAnimSpritePal_Orb[];
+extern const u32 gBattleAnimSpritePal_Sword[];
+extern const u32 gBattleAnimSpritePal_Seed[];
+extern const u32 gBattleAnimSpritePal_Explosion6[];
+extern const u32 gBattleAnimSpritePal_PinkOrb[];
+extern const u32 gBattleAnimSpritePal_Gust[];
+extern const u32 gBattleAnimSpritePal_IceCube[];
+extern const u32 gBattleAnimSpritePal_Spark2[];
+extern const u32 gBattleAnimSpritePal_Orange[];
+extern const u32 gBattleAnimSpritePal_YellowBall[];
+extern const u32 gBattleAnimSpritePal_LockOn[];
+extern const u32 gBattleAnimSpritePal_TiedBag[];
+extern const u32 gBattleAnimSpritePal_BlackSmoke[];
+extern const u32 gBattleAnimSpritePal_BlackSmoke[];
+extern const u32 gBattleAnimSpritePal_Conversion[];
+extern const u32 gBattleAnimSpritePal_Glass[];
+extern const u32 gBattleAnimSpritePal_HornHit[];
+extern const u32 gBattleAnimSpritePal_Hit[];
+extern const u32 gBattleAnimSpritePal_Hit2[];
+extern const u32 gBattleAnimSpritePal_BlueShards[];
+extern const u32 gBattleAnimSpritePal_ClosingEye[];
+extern const u32 gBattleAnimSpritePal_WavingHand[];
+extern const u32 gBattleAnimSpritePal_HitDuplicate[];
+extern const u32 gBattleAnimSpritePal_Leer[];
+extern const u32 gBattleAnimSpritePal_BlueBurst[];
+extern const u32 gBattleAnimSpritePal_SmallEmber[];
+extern const u32 gBattleAnimSpritePal_GraySmoke[];
+extern const u32 gBattleAnimSpritePal_BlueStar[];
+extern const u32 gBattleAnimSpritePal_BubbleBurst[];
+extern const u32 gBattleAnimSpritePal_Fire[];
+extern const u32 gBattleAnimSpritePal_Fire[];
+extern const u32 gBattleAnimSpritePal_Fire[];
+extern const u32 gBattleAnimSpritePal_Lightning2[];
+extern const u32 gBattleAnimSpritePal_Lightning2[];
+extern const u32 gBattleAnimSpritePal_ClawSlash2[];
+extern const u32 gBattleAnimSpritePal_ClawSlash[];
+extern const u32 gBattleAnimSpritePal_ClawSlash2[];
+extern const u32 gBattleAnimSpritePal_ClawSlash2[];
+extern const u32 gBattleAnimSpritePal_BubbleBurst2[];
+extern const u32 gBattleAnimSpritePal_IceChunk[];
+extern const u32 gBattleAnimSpritePal_Glass2[];
+extern const u32 gBattleAnimSpritePal_PinkHeart2[];
+extern const u32 gBattleAnimSpritePal_SapDrip[];
+extern const u32 gBattleAnimSpritePal_SapDrip2[];
+extern const u32 gBattleAnimSpritePal_Sparkle1[];
+extern const u32 gBattleAnimSpritePal_Sparkle2[];
+extern const u32 gBattleAnimSpritePal_HumanoidFoot[];
+extern const u32 gBattleAnimSpritePal_HumanoidFoot[];
+extern const u32 gBattleAnimSpritePal_HumanoidFoot[];
+extern const u32 gBattleAnimSpritePal_HitDuplicate[];
+extern const u32 gBattleAnimSpritePal_YellowUnk[];
+extern const u32 gBattleAnimSpritePal_HumanoidFoot[];
+extern const u32 gBattleAnimSpritePal_SlamHit[];
+extern const u32 gBattleAnimSpritePal_Ring[];
+extern const u32 gBattleAnimSpritePal_Rocks[];
+extern const u32 gBattleAnimSpritePal_Z[];
+extern const u32 gBattleAnimSpritePal_YellowUnk2[];
+extern const u32 gBattleAnimSpritePal_AirSlash[];
+extern const u32 gBattleAnimSpritePal_SpinningGreenOrbs[];
+extern const u32 gBattleAnimSpritePal_Leaf[];
+extern const u32 gBattleAnimSpritePal_Finger[];
+extern const u32 gBattleAnimSpritePal_PoisonPowder[];
+extern const u32 gBattleAnimSpritePal_BrownTriangle[];
+extern const u32 gBattleAnimSpritePal_SleepPowder[];
+extern const u32 gBattleAnimSpritePal_StunSpore[];
+extern const u32 gBattleAnimSpritePal_PoisonPowder[];
+extern const u32 gBattleAnimSpritePal_Sparkle3[];
+extern const u32 gBattleAnimSpritePal_Sparkle3[];
+extern const u32 gBattleAnimSpritePal_MusicNotes[];
+extern const u32 gBattleAnimSpritePal_Duck[];
+extern const u32 gBattleAnimSpritePal_MudSand[];
+extern const u32 gBattleAnimSpritePal_Alert[];
+extern const u32 gBattleAnimSpritePal_BlueFlames[];
+extern const u32 gBattleAnimSpritePal_BlueFlames[];
+extern const u32 gBattleAnimSpritePal_Shock4[];
+extern const u32 gBattleAnimSpritePal_Shock4[];
+extern const u32 gBattleAnimSpritePal_Bell2[];
+extern const u32 gBattleAnimSpritePal_PinkGlove[];
+extern const u32 gBattleAnimSpritePal_BlueLines[];
+extern const u32 gBattleAnimSpritePal_Impact3[];
+extern const u32 gBattleAnimSpritePal_Impact2[];
+extern const u32 gBattleAnimSpritePal_Reticle[];
+extern const u32 gBattleAnimSpritePal_Breath[];
+extern const u32 gBattleAnimSpritePal_Anger[];
+extern const u32 gBattleAnimSpritePal_Snowball[];
+extern const u32 gBattleAnimSpritePal_Vine[];
+extern const u32 gBattleAnimSpritePal_Sword2[];
+extern const u32 gBattleAnimSpritePal_Clapping[];
+extern const u32 gBattleAnimSpritePal_RedTube[];
+extern const u32 gBattleAnimSpritePal_Amnesia[];
+extern const u32 gBattleAnimSpritePal_String2[];
+extern const u32 gBattleAnimSpritePal_Pencil2[];
+extern const u32 gBattleAnimSpritePal_Petal[];
+extern const u32 gBattleAnimSpritePal_BentSpoon[];
+extern const u32 gBattleAnimSpritePal_String2[];
+extern const u32 gBattleAnimSpritePal_MilkBottle[];
+extern const u32 gBattleAnimSpritePal_Coin[];
+extern const u32 gBattleAnimSpritePal_CrackedEgg[];
+extern const u32 gBattleAnimSpritePal_CrackedEgg[];
+extern const u32 gBattleAnimSpritePal_FreshEgg[];
+extern const u32 gBattleAnimSpritePal_Fangs[];
+extern const u32 gBattleAnimSpritePal_Explosion2[];
+extern const u32 gBattleAnimSpritePal_Explosion2[];
+extern const u32 gBattleAnimSpritePal_WaterDroplet[];
+extern const u32 gBattleAnimSpritePal_WaterDroplet[];
+extern const u32 gBattleAnimSpritePal_Seed2[];
+extern const u32 gBattleAnimSpritePal_Seed2[];
+extern const u32 gBattleAnimSpritePal_RedWand[];
+extern const u32 gBattleAnimSpritePal_PurpleGreenUnk[];
+extern const u32 gBattleAnimSpritePal_WaterColumn[];
+extern const u32 gBattleAnimSpritePal_MudUnk[];
+extern const u32 gBattleAnimSpritePal_RainDrops[];
+extern const u32 gBattleAnimSpritePal_FurySwipes[];
+extern const u32 gBattleAnimSpritePal_Vine2[];
+extern const u32 gBattleAnimSpritePal_Teeth[];
+extern const u32 gBattleAnimSpritePal_Bone2[];
+extern const u32 gBattleAnimSpritePal_WhiteBag[];
+extern const u32 gBattleAnimSpritePal_Unknown[];
+extern const u32 gBattleAnimSpritePal_PurpleCoral[];
+extern const u32 gBattleAnimSpritePal_PurpleCoral[];
+extern const u32 gBattleAnimSpritePal_Shock2[];
+extern const u32 gBattleAnimSpritePal_ClosingEye2[];
+extern const u32 gBattleAnimSpritePal_MetalBall[];
+extern const u32 gBattleAnimSpritePal_MonsterDoll[];
+extern const u32 gBattleAnimSpritePal_Whirlwind[];
+extern const u32 gBattleAnimSpritePal_Whirlwind[];
+extern const u32 gBattleAnimSpritePal_Explosion4[];
+extern const u32 gBattleAnimSpritePal_Explosion4[];
+extern const u32 gBattleAnimSpritePal_Tongue[];
+extern const u32 gBattleAnimSpritePal_Smoke[];
+extern const u32 gBattleAnimSpritePal_Smoke[];
+extern const u32 gBattleAnimSpritePal_Impact[];
+extern const u32 gBattleAnimSpritePal_CircleImpact[];
+extern const u32 gBattleAnimSpritePal_Impact[];
+extern const u32 gBattleAnimSpritePal_Impact[];
+extern const u32 gBattleAnimSpritePal_SharpTeeth[];
+extern const u32 gBattleAnimSpritePal_RainbowRings[];
+extern const u32 gBattleAnimSpritePal_IceCrystals[];
+extern const u32 gBattleAnimSpritePal_IceCrystals[];
+extern const u32 gBattleAnimSpritePal_HandsAndFeet[];
+extern const u32 gBattleAnimSpritePal_MistCloud[];
+extern const u32 gBattleAnimSpritePal_SharpTeeth[];
+extern const u32 gBattleAnimSpritePal_RainDrops[];
+extern const u32 gBattleAnimSpritePal_Orbs[];
+extern const u32 gBattleAnimSpritePal_WaterImpact[];
+extern const u32 gBattleAnimSpritePal_WaterImpact[];
+extern const u32 gBattleAnimSpritePal_PoisonBubble[];
+extern const u32 gBattleAnimSpritePal_PoisonBubble[];
+extern const u32 gBattleAnimSpritePal_Spikes[];
+extern const u32 gBattleAnimSpritePal_HornHit2[];
+extern const u32 gBattleAnimSpritePal_AirWave2[];
+extern const u32 gBattleAnimSpritePal_SmallBubbles[];
+extern const u32 gBattleAnimSpritePal_RoundShadow[];
+extern const u32 gBattleAnimSpritePal_Sunlight[];
+extern const u32 gBattleAnimSpritePal_Spore[];
+extern const u32 gBattleAnimSpritePal_Flower[];
+extern const u32 gBattleAnimSpritePal_RazorLeaf[];
+extern const u32 gBattleAnimSpritePal_Needle[];
+extern const u32 gBattleAnimSpritePal_WhirlwindLines[];
+extern const u32 gBattleAnimSpritePal_GoldRing[];
+extern const u32 gBattleAnimSpritePal_PurpleRing[];
+extern const u32 gBattleAnimSpritePal_BlueRing[];
+extern const u32 gBattleAnimSpritePal_GreenLightWall[];
+extern const u32 gBattleAnimSpritePal_BlueLightWall[];
+extern const u32 gBattleAnimSpritePal_RedLightWall[];
+extern const u32 gBattleAnimSpritePal_GrayLightWall[];
+extern const u32 gBattleAnimSpritePal_OrangeLightWall[];
+extern const u32 gBattleAnimSpritePal_BlackBall2[];
+extern const u32 gBattleAnimSpritePal_PurpleGasCloud[];
+extern const u32 gBattleAnimSpritePal_YellowStar[];
+extern const u32 gBattleAnimSpritePal_LargeFreshEgg[];
+extern const u32 gBattleAnimSpritePal_ShadowBall[];
+extern const u32 gBattleAnimSpritePal_Lick[];
+extern const u32 gBattleAnimSpritePal_VoidLines[];
+extern const u32 gBattleAnimSpritePal_String[];
+extern const u32 gBattleAnimSpritePal_Lightbulb[];
+extern const u32 gBattleAnimSpritePal_Slash[];
+extern const u32 gBattleAnimSpritePal_FocusEnergy[];
+extern const u32 gBattleAnimSpritePal_SphereToCube[];
+extern const u32 gBattleAnimSpritePal_Tendrils[];
+extern const u32 gBattleAnimSpritePal_Eye[];
+extern const u32 gBattleAnimSpritePal_WhiteShadow[];
+extern const u32 gBattleAnimSpritePal_TealAlert[];
+extern const u32 gBattleAnimSpritePal_OpeningEye[];
+extern const u32 gBattleAnimSpritePal_RoundWhiteHalo[];
+extern const u32 gBattleAnimSpritePal_FangAttack[];
+extern const u32 gBattleAnimSpritePal_PurpleHandOutline[];
+extern const u32 gBattleAnimSpritePal_Moon[];
+extern const u32 gBattleAnimSpritePal_GreenSparkle[];
+extern const u32 gBattleAnimSpritePal_Spiral[];
+extern const u32 gBattleAnimSpritePal_SnoreZ[];
+extern const u32 gBattleAnimSpritePal_Explosion[];
+extern const u32 gBattleAnimSpritePal_Nail[];
+extern const u32 gBattleAnimSpritePal_GhostlySpirit[];
+extern const u32 gBattleAnimSpritePal_WarmRock[];
+extern const u32 gBattleAnimSpritePal_BreakingEgg[];
+extern const u32 gBattleAnimSpritePal_ThinRing[];
+extern const u32 gBattleAnimSpritePal_PunchImpact[];
+extern const u32 gBattleAnimSpritePal_Bell[];
+extern const u32 gBattleAnimSpritePal_MusicNotes2[];
+extern const u32 gBattleAnimSpritePal_SpeedDust[];
+extern const u32 gBattleAnimSpritePal_ThoughtBubble[];
+extern const u32 gBattleAnimSpritePal_MagentaHeart[];
+extern const u32 gBattleAnimSpritePal_ElectricOrbs[];
+extern const u32 gBattleAnimSpritePal_MovementWaves[];
extern const u32 gUnknown_08C249D0[];
extern const u32 gUnknown_08C249F8[];
-extern const u32 gBattleAnimSpritePalette_216[];
-extern const u32 gBattleAnimSpritePalette_217[];
-extern const u32 gBattleAnimSpritePalette_218[];
-extern const u32 gBattleAnimSpritePalette_219[];
+extern const u32 gBattleAnimSpritePal_RedHeart[];
+extern const u32 gBattleAnimSpritePal_RedOrb[];
+extern const u32 gBattleAnimSpritePal_EyeSparkle[];
+extern const u32 gBattleAnimSpritePal_PinkHeart[];
extern const u32 gUnknown_08C232E0;
extern const u32 gUnknown_08C23D50;
extern const u32 gUnknown_08C23D78;
-extern const u32 gBattleAnimSpritePalette_220[];
-extern const u32 gBattleAnimSpritePalette_221[];
-extern const u32 gBattleAnimSpritePalette_222[];
-extern const u32 gBattleAnimSpritePalette_223[];
-extern const u32 gBattleAnimSpritePalette_224[];
-extern const u32 gBattleAnimSpritePalette_225[];
-extern const u32 gBattleAnimSpritePalette_226[];
-extern const u32 gBattleAnimSpritePalette_228[];
-extern const u32 gBattleAnimSpritePalette_229[];
-extern const u32 gBattleAnimSpritePalette_230[];
-extern const u32 gBattleAnimSpritePalette_231[];
-extern const u32 gBattleAnimSpritePalette_233[];
-extern const u32 gBattleAnimSpritePalette_234[];
-extern const u32 gBattleAnimSpritePalette_235[];
-extern const u32 gBattleAnimSpritePalette_236[];
-extern const u32 gBattleAnimSpritePalette_237[];
-extern const u32 gBattleAnimSpritePalette_238[];
-extern const u32 gBattleAnimSpritePalette_239[];
-extern const u32 gBattleAnimSpritePalette_240[];
-extern const u32 gBattleAnimSpritePalette_241[];
-extern const u32 gBattleAnimSpritePalette_242[];
-extern const u32 gBattleAnimSpritePalette_243[];
-extern const u32 gBattleAnimSpritePalette_244[];
+extern const u32 gBattleAnimSpritePal_Angel[];
+extern const u32 gBattleAnimSpritePal_Devil[];
+extern const u32 gBattleAnimSpritePal_Swipe[];
+extern const u32 gBattleAnimSpritePal_Roots[];
+extern const u32 gBattleAnimSpritePal_ItemBag[];
+extern const u32 gBattleAnimSpritePal_JaggedMusicNote[];
+extern const u32 gBattleAnimSpritePal_Pokeball[];
+extern const u32 gBattleAnimSpritePal_LetterZ[];
+extern const u32 gBattleAnimSpritePal_RapidSpin[];
+extern const u32 gBattleAnimSpritePal_TriForceTriangle[];
+extern const u32 gBattleAnimSpritePal_WispOrb[];
+extern const u32 gBattleAnimSpritePal_GoldStars[];
+extern const u32 gBattleAnimSpritePal_EclipsingOrb[];
+extern const u32 gBattleAnimSpritePal_GrayOrb[];
+extern const u32 gBattleAnimSpritePal_BlueOrb[];
+extern const u32 gBattleAnimSpritePal_RedOrb2[];
+extern const u32 gBattleAnimSpritePal_PinkPetal[];
+extern const u32 gBattleAnimSpritePal_PainSplit[];
+extern const u32 gBattleAnimSpritePal_Confetti[];
+extern const u32 gBattleAnimSpritePal_GreenStar[];
+extern const u32 gBattleAnimSpritePal_PinkCloud[];
+extern const u32 gBattleAnimSpritePal_SweatDrop[];
+extern const u32 gBattleAnimSpritePal_GuardRing[];
extern const u32 gCureBubblesGfx[];
extern const u32 gCureBubblesPal[];
extern const u32 gCureBubblesTilemap[];
-extern const u32 gBattleAnimSpritePalette_245[];
-extern const u32 gBattleAnimSpritePalette_248[];
-extern const u32 gBattleAnimSpritePalette_249[];
-extern const u32 gBattleAnimSpritePalette_251[];
-extern const u32 gBattleAnimSpritePalette_252[];
-extern const u32 gBattleAnimSpritePalette_253[];
-extern const u32 gBattleAnimSpritePalette_254[];
-extern const u32 gBattleAnimSpritePalette_255[];
-extern const u32 gBattleAnimSpritePalette_256[];
-extern const u32 gBattleAnimSpritePalette_257[];
-extern const u32 gBattleAnimSpritePalette_258[];
-extern const u32 gBattleAnimSpritePalette_259[];
-extern const u32 gBattleAnimSpritePalette_260[];
-extern const u32 gBattleAnimSpritePalette_261[];
-extern const u32 gBattleAnimSpritePalette_262[];
-extern const u32 gBattleAnimSpritePalette_263[];
-extern const u32 gBattleAnimSpritePalette_264[];
-extern const u32 gBattleAnimSpritePalette_265[];
-extern const u32 gBattleAnimSpritePalette_266[];
-extern const u32 gBattleAnimSpritePalette_267[];
-extern const u32 gBattleAnimSpritePalette_268[];
-extern const u32 gBattleAnimSpritePalette_269[];
-extern const u32 gBattleAnimSpritePalette_270[];
-extern const u32 gBattleAnimSpritePalette_271[];
-extern const u32 gBattleAnimSpritePalette_272[];
-extern const u32 gBattleAnimSpritePalette_274[];
-extern const u32 gBattleAnimSpritePalette_277[];
-extern const u32 gBattleAnimSpritePalette_278[];
-extern const u32 gBattleAnimSpritePalette_279[];
-extern const u32 gBattleAnimSpritePalette_280[];
-extern const u32 gBattleAnimSpritePalette_281[];
-extern const u32 gBattleAnimSpritePalette_282[];
-extern const u32 gBattleAnimSpritePalette_283[];
-extern const u32 gBattleAnimSpritePalette_284[];
-extern const u32 gBattleAnimSpritePalette_285[];
-extern const u32 gBattleAnimSpritePalette_286[];
-extern const u32 gBattleAnimSpritePalette_287[];
-extern const u32 gBattleAnimSpritePalette_288[];
+extern const u32 gBattleAnimSpritePal_PurpleScratch[];
+extern const u32 gBattleAnimSpritePal_SmallRedEye[];
+extern const u32 gBattleAnimSpritePal_HollowOrb[];
+extern const u32 gBattleAnimSpritePal_BluegreenOrb[];
+extern const u32 gBattleAnimSpritePal_PawPrint[];
+extern const u32 gBattleAnimSpritePal_PurpleFlame[];
+extern const u32 gBattleAnimSpritePal_RedBall[];
+extern const u32 gBattleAnimSpritePal_SmellingsaltEffect[];
+extern const u32 gBattleAnimSpritePal_Meteor[];
+extern const u32 gBattleAnimSpritePal_FlatRock[];
+extern const u32 gBattleAnimSpritePal_MagnifyingGlass[];
+extern const u32 gBattleAnimSpritePal_BrownOrb[];
+extern const u32 gBattleAnimSpritePal_MetalSoundWaves[];
+extern const u32 gBattleAnimSpritePal_FlyingDirt[];
+extern const u32 gBattleAnimSpritePal_IcicleSpear[];
+extern const u32 gBattleAnimSpritePal_Hail[];
+extern const u32 gBattleAnimSpritePal_GlowyRedOrb[];
+extern const u32 gBattleAnimSpritePal_GlowyGreenOrb[];
+extern const u32 gBattleAnimSpritePal_GreenSpike[];
+extern const u32 gBattleAnimSpritePal_WhiteCircleOfLight[];
+extern const u32 gBattleAnimSpritePal_GlowyBlueOrb[];
+extern const u32 gBattleAnimSpritePal_Pokeblock[];
+extern const u32 gBattleAnimSpritePal_WhiteFeather[];
+extern const u32 gBattleAnimSpritePal_Sparkle6[];
+extern const u32 gBattleAnimSpritePal_Splash[];
+extern const u32 gBattleAnimSpritePal_Gem1[];
+extern const u32 gBattleAnimSpritePal_SlamHit2[];
+extern const u32 gBattleAnimSpritePal_Recycle[];
+extern const u32 gBattleAnimSpritePal_RedParticles[];
+extern const u32 gBattleAnimSpritePal_Protect[];
+extern const u32 gBattleAnimSpritePal_DirtMound[];
+extern const u32 gBattleAnimSpritePal_Shock3[];
+extern const u32 gBattleAnimSpritePal_WeatherBall[];
+extern const u32 gBattleAnimSpritePal_Bird[];
+extern const u32 gBattleAnimSpritePal_CrossImpact[];
+extern const u32 gBattleAnimSpritePal_Slash2[];
+extern const u32 gBattleAnimSpritePal_WhipHit[];
+extern const u32 gBattleAnimSpritePal_BlueRing2[];
-extern const u32 gBattleAnimBackgroundImage_00[];
-extern const u32 gBattleAnimBackgroundImage_02[];
-extern const u32 gBattleAnimBackgroundImage_03[];
-extern const u32 gBattleAnimBackgroundImage_04[];
-extern const u32 gBattleAnimBackgroundImage_07[];
-extern const u32 gBattleAnimBackgroundImage_09[];
-extern const u32 gBattleAnimBackgroundImage_11[];
-extern const u32 gBattleAnimBackgroundImage_12[];
-extern const u32 gBattleAnimBackgroundImage_15[];
-extern const u32 gBattleAnimBackgroundImage_16[];
-extern const u32 gBattleAnimBackgroundImage_17[];
-extern const u32 gBattleAnimBackgroundImage_20[];
-extern const u32 gBattleAnimBackgroundImage_21[];
-extern const u32 gBattleAnimBackgroundPalette_00[];
-extern const u32 gBattleAnimBackgroundPalette_02[];
-extern const u32 gBattleAnimBackgroundPalette_03[];
-extern const u32 gBattleAnimBackgroundPalette_04[];
-extern const u32 gBattleAnimBackgroundPalette_07[];
-extern const u32 gBattleAnimBackgroundPalette_09[];
-extern const u32 gBattleAnimBackgroundPalette_11[];
-extern const u32 gBattleAnimBackgroundPalette_12[];
-extern const u32 gBattleAnimBackgroundPalette_15[];
-extern const u32 gBattleAnimBackgroundPalette_16[];
-extern const u32 gBattleAnimBackgroundPalette_17[];
-extern const u32 gBattleAnimBackgroundPalette_18[];
-extern const u32 gBattleAnimBackgroundPalette_20[];
-extern const u32 gBattleAnimBackgroundPalette_21[];
-extern const u32 gBattleAnimBackgroundPalette_22[];
-extern const u32 gBattleAnimBackgroundPalette_24[];
-extern const u32 gBattleAnimBackgroundTilemap_00[];
-extern const u32 gBattleAnimBackgroundTilemap_02[];
-extern const u32 gBattleAnimBackgroundTilemap_03[];
-extern const u32 gBattleAnimBackgroundTilemap_04[];
-extern const u32 gBattleAnimBackgroundTilemap_05[];
-extern const u32 gBattleAnimBackgroundTilemap_06[];
-extern const u32 gBattleAnimBackgroundTilemap_07[];
-extern const u32 gBattleAnimBackgroundTilemap_08[];
-extern const u32 gBattleAnimBackgroundTilemap_09[];
-extern const u32 gBattleAnimBackgroundTilemap_10[];
+extern const u32 gBattleAnimBgImage_Dark[];
+extern const u32 gBattleAnimBgImage_Ghost[];
+extern const u32 gBattleAnimBgImage_Psychic[];
+extern const u32 gBattleAnimBgImage_Impact[];
+extern const u32 gBattleAnimBgImage_Drill[];
+extern const u32 gBattleAnimBgImage_Highspeed[];
+extern const u32 gBattleAnimBgImage_Thunder[];
+extern const u32 gBattleAnimBgImage_Guillotine[];
+extern const u32 gBattleAnimBgImage_Ice[];
+extern const u32 gBattleAnimBgImage_Cosmic[];
+extern const u32 gBattleAnimBgImage_InAir[];
+extern const u32 gBattleAnimBgImage_Aurora[];
+extern const u32 gBattleAnimBgImage_Fissure[];
+extern const u32 gBattleAnimBgPalette_Dark[];
+extern const u32 gBattleAnimBgPalette_Ghost[];
+extern const u32 gBattleAnimBgPalette_Psychic[];
+extern const u32 gBattleAnimBgPalette_Impact[];
+extern const u32 gBattleAnimBgPalette_Drill[];
+extern const u32 gBattleAnimBgPalette_Highspeed[];
+extern const u32 gBattleAnimBgPalette_Thunder[];
+extern const u32 gBattleAnimBgPalette_Guillotine[];
+extern const u32 gBattleAnimBgPalette_Ice[];
+extern const u32 gBattleAnimBgPalette_Cosmic[];
+extern const u32 gBattleAnimBgPalette_InAir[];
+extern const u32 gBattleAnimBgPalette_Sky[];
+extern const u32 gBattleAnimBgPalette_Aurora[];
+extern const u32 gBattleAnimBgPalette_Fissure[];
+extern const u32 gBattleAnimBgPalette_Bug[];
+extern const u32 gBattleAnimBgPalette_Solarbeam[];
+extern const u32 gBattleAnimBgTilemap_Dark[];
+extern const u32 gBattleAnimBgTilemap_Ghost[];
+extern const u32 gBattleAnimBgTilemap_Psychic[];
+extern const u32 gBattleAnimBgTilemap_ImpactOpponent[];
+extern const u32 gBattleAnimBgTilemap_ImpactPlayer[];
+extern const u32 gBattleAnimBgTilemap_ImpactContests[];
+extern const u32 gBattleAnimBgTilemap_Drill[];
+extern const u32 gBattleAnimBgTilemap_DrillContests[];
+extern const u32 gBattleAnimBgTilemap_HighspeedOpponent[];
+extern const u32 gBattleAnimBgTilemap_HighspeedPlayer[];
extern const u32 gUnknown_08C2A634[];
extern const u32 gUnknown_08C2A6D4[];
extern const u32 gUnknown_08C2A6EC[];
-extern const u32 gBattleAnimBackgroundTilemap_11[];
-extern const u32 gBattleAnimBackgroundTilemap_12[];
-extern const u32 gBattleAnimBackgroundTilemap_13[];
-extern const u32 gBattleAnimBackgroundTilemap_14[];
-extern const u32 gBattleAnimBackgroundTilemap_15[];
-extern const u32 gBattleAnimBackgroundTilemap_16[];
-extern const u32 gBattleAnimBackgroundTilemap_17[];
-extern const u32 gBattleAnimBackgroundTilemap_20[];
-extern const u32 gBattleAnimBackgroundTilemap_21[];
+extern const u32 gBattleAnimBgTilemap_Thunder[];
+extern const u32 gBattleAnimBgTilemap_GuillotineOpponent[];
+extern const u32 gBattleAnimBgTilemap_GuillotinePlayer[];
+extern const u32 gBattleAnimBgTilemap_GuillotineContests[];
+extern const u32 gBattleAnimBgTilemap_Ice[];
+extern const u32 gBattleAnimBgTilemap_Cosmic[];
+extern const u32 gBattleAnimBgTilemap_InAir[];
+extern const u32 gBattleAnimBgTilemap_Aurora[];
+extern const u32 gBattleAnimBgTilemap_Fissure[];
extern const u32 gMetalShineGfx[];
extern const u32 gMetalShinePalette[];
@@ -4761,8 +4768,8 @@ extern const u32 gContestAudienceGfx[];
extern const u8 gContestApplauseMeterGfx[];
extern const u8 gContestNextTurnNumbersGfx[];
extern const u8 gContestNextTurnRandomGfx[];
-extern const u32 gUnknown_08C16FA8[];
-extern const u32 gUnknown_08C16E90[];
+extern const u32 gOldContestGfx[];
+extern const u32 gOldContestPalette[];
extern const u32 gUnknown_08C17170[];
extern const u32 gUnknown_08C17980[];
extern const u32 gTiles_8C19450[];
@@ -4777,8 +4784,8 @@ extern const u32 gContest3Pal[];
extern const u32 gUnknown_08D95E00[];
extern const u32 gUnknown_08D960D0[];
extern const u32 gUnknown_08D963A4[];
-extern const u32 gBattleAnimBackgroundImage_Surf[];
-extern const u32 gBattleAnimBackgroundPalette_Surf[];
+extern const u32 gBattleAnimBgImage_Surf[];
+extern const u32 gBattleAnimBgPalette_Surf[];
extern const u32 gBattleAnimBackgroundImageMuddyWater_Pal[];
extern const u32 gBattleAnimFogTilemap[];
diff --git a/include/international_string_util.h b/include/international_string_util.h
index 911cd6935..cf3c5f723 100644
--- a/include/international_string_util.h
+++ b/include/international_string_util.h
@@ -14,7 +14,7 @@ int GetMaxWidthInMenuTable(const struct MenuAction *str, int arg1);
int sub_81DB3D8(const struct MenuAction *str, const u8* arg1, int arg2);
int Intl_GetListMenuWidth(const struct ListMenuTemplate *listMenu);
void CopyMonCategoryText(int dexNum, u8 *dest);
-u8 *sub_81DB494(u8 *str, int fontId, u8 *str2, int totalStringWidth);
+u8 *sub_81DB494(u8 *str, int fontId, const u8 *str2, int totalStringWidth);
void PadNameString(u8 *dest, u8 padChar);
void sub_81DB554(u8 *, u8);
void sub_81DB5AC(u8 *);
diff --git a/include/link.h b/include/link.h
index 62ae7761c..c14084066 100644
--- a/include/link.h
+++ b/include/link.h
@@ -235,7 +235,7 @@ void LinkVSync(void);
void Timer3Intr(void);
void SerialCB(void);
bool32 InUnionRoom(void);
-void sub_800E0E8(void);
+void LoadWirelessStatusIndicatorSpriteGfx(void);
bool8 IsLinkTaskFinished(void);
void CreateWirelessStatusIndicatorSprite(u8, u8);
void sub_800ADF8(void);
diff --git a/include/match_call.h b/include/match_call.h
index 6803d2f26..52eab63ec 100644
--- a/include/match_call.h
+++ b/include/match_call.h
@@ -14,7 +14,10 @@ s32 GetRematchIdxByTrainerIdx(s32 trainerIdx);
void InitMatchCallCounters(void);
bool32 TryStartMatchCall(void);
bool32 IsMatchCallTaskActive(void);
-void StartMatchCallFromScript(u8* script);
+void StartMatchCallFromScript(u8 *message);
void sub_8197080(u8 *destStr);
+bool32 SelectMatchCallMessage(int, u8 *);
+void sub_8197184(u32 windowId, u32 destOffset, u32 paletteId);
+void sub_81971C4(u32 windowId, u32 tileOffset, u32 paletteId);
#endif //GUARD_MATCH_CALL_H
diff --git a/include/menu.h b/include/menu.h
index 4d55fc955..08cad40bd 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -99,6 +99,7 @@ void sub_8199CBC(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height);
u8 sub_81980F0(u8 bg, u8 xPos, u8 yPos, u8 palette, u16 baseTile);
void sub_8198314(void);
void sub_8198180(const u8 *string, u8 a2, bool8 copyToVram);
+void ResetBgPositions(void);
void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonPress, u8 speed);
void sub_8198C78(void);
void PrintTextArray(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs);
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
index 63af4c731..3b6c13172 100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -30,7 +30,7 @@ bool8 itemid_80BF6D8_mail_related(u16 itemId);
bool8 sub_81221AC(void);
bool8 sub_81221EC(void);
void sub_812220C(struct ItemSlot *slots, u8 count, u8 *arg2, u8 *usedSlotsCount, u8 maxUsedSlotsCount);
-void sub_812225C(u16 *arg0, u16 *arg1, u8 arg2, u8 arg3);
+void sub_812225C(u16 *scrollOffset, u16 *cursorPos, u8 maxShownItems, u8 numItems);
void sub_8122298(u16 *arg0, u16 *arg1, u8 arg2, u8 arg3, u8 arg4);
void LoadListMenuArrowsGfx(void);
void sub_8122344(u8 *spriteIds, u8 count);
diff --git a/include/menu_specialized.h b/include/menu_specialized.h
index 405d78830..014ee2585 100644
--- a/include/menu_specialized.h
+++ b/include/menu_specialized.h
@@ -32,8 +32,6 @@ u8 sub_81D1DC0(struct PlayerPCItemPageStruct *page);
void sub_81D1E90(struct PlayerPCItemPageStruct *page);
void sub_81D1EC0(void);
void sub_81D1D04(u8 a0);
-void DrawLevelUpWindowPg1(u16 arg0, u16 *statStoreLocation1, u16 *statStoreLocation2, u8 arg3, u8 arg4, u8 arg5);
-void DrawLevelUpWindowPg2(u16 arg0, u16 *statStoreLocation1, u8 arg2, u8 arg3, u8 arg4);
void sub_81D1ED4(struct UnknownStruct_81D1ED4 *a0);
void sub_81D2108(struct UnknownStruct_81D1ED4 *arg0);
void sub_81D20AC(struct UnknownStruct_81D1ED4 *arg0);
@@ -47,7 +45,6 @@ bool16 MoveRelearnerRunTextPrinters(void);
void MoveRelearnerCreateYesNoMenu(void);
u8 LoadMoveRelearnerMovesList(const struct ListMenuItem *items, u16 numChoices);
void InitMoveRelearnerWindows(bool8 useContextWindow);
-void GetMonLevelUpWindowStats(struct Pokemon *mon, u16 *statStoreLocation);
s32 GetBoxOrPartyMonData(u16 boxId, u16 monId, s32 request, u8 *dst);
void sub_81D2ED4(u8 *dst, u8 *nameDst, u16 boxId, u16 monId, u16 arg5, u16 arg6, bool8 arg7);
void sub_81D2F78(struct UnknownStruct_81D1ED4 *arg0, u8 *sheen, u16 boxId, u16 monId, u16 arg5, u16 id, u16 arg7, bool8 arg8);
@@ -63,5 +60,8 @@ void sub_81D3464(struct Sprite **sprites);
void sub_81D3480(struct Sprite **sprites, u8 arg1, u8 arg2);
void sub_81D3520(struct Sprite **sprites);
void sub_81D354C(struct Sprite **sprites);
+void DrawLevelUpWindowPg1(u16 windowId, u16 *statsBefore, u16 *statsAfter, u8 bgClr, u8 fgClr, u8 shadowClr);
+void DrawLevelUpWindowPg2(u16 windowId, u16 *currStats, u8 bgClr, u8 fgClr, u8 shadowClr);
+void GetMonLevelUpWindowStats(struct Pokemon *mon, u16 *currStats);
#endif // GUARD_MENU_SPECIALIZED_H
diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h
index e18639faf..7fd1d1301 100644
--- a/include/metatile_behavior.h
+++ b/include/metatile_behavior.h
@@ -59,8 +59,8 @@ bool8 MetatileBehavior_IsSecretBasePoster(u8);
bool8 MetatileBehavior_IsNormal(u8);
bool8 MetatileBehavior_IsSecretBaseNorthWall(u8);
bool8 MetatileBehavior_IsMB_B2_Duplicate(u8);
-bool8 MetatileBehavior_IsSecretBaseLargeMatEdge(u8);
-bool8 MetatileBehavior_IsLargeMatCenter(u8);
+bool8 MetatileBehavior_HoldsSmallDecoration(u8);
+bool8 MetatileBehavior_HoldsLargeDecoration(u8);
bool8 MetatileBehavior_IsSecretBaseHole(u8);
bool8 MetatileBehavior_IsSecretBaseBalloon(u8);
bool8 MetatileBehavior_IsSecretBaseBreakableDoor(u8);
diff --git a/include/new_game.h b/include/new_game.h
index 8fab05483..9b96ba478 100644
--- a/include/new_game.h
+++ b/include/new_game.h
@@ -2,7 +2,9 @@
#define GUARD_NEW_GAME_H
extern bool8 gDifferentSaveFile;
-extern bool8 gUnknown_020322D5; // The purpose of this variable is unknown as it's read only 3 times(2 times in contest.c and 1 time in berry_blender.c), never written to.
+// Shortcuts some randomness in berry_blender.c, and enables debug printing
+// in contest.c.
+extern bool8 gEnableContestDebugging;
void SetTrainerId(u32 trainerId, u8 *dst);
u32 GetTrainerId(u8 *trainerId);
diff --git a/include/pokemon.h b/include/pokemon.h
index 60ccb27f4..c5fea6df7 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -14,7 +14,7 @@
#define MON_DATA_OT_NAME 7
#define MON_DATA_MARKINGS 8
#define MON_DATA_CHECKSUM 9
-#define MON_DATA_10 10
+#define MON_DATA_ENCRYPT_SEPARATOR 10
#define MON_DATA_SPECIES 11
#define MON_DATA_HELD_ITEM 12
#define MON_DATA_MOVE1 13
@@ -487,7 +487,7 @@ u8 GetDefaultMoveTarget(u8 battlerId);
u8 GetMonGender(struct Pokemon *mon);
u8 GetBoxMonGender(struct BoxPokemon *boxMon);
u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality);
-void SetMultiuseSpriteTemplateToPokemon(u16 species, u8 battlerPosition);
+void SetMultiuseSpriteTemplateToPokemon(u16 speciesTag, u8 battlerPosition);
void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosition);
void SetMultiuseSpriteTemplateToTrainerFront(u16 arg0, u8 battlerPosition);
@@ -509,7 +509,7 @@ u8 GetMonsStateToDoubles(void);
u8 GetMonsStateToDoubles_2(void);
u8 GetAbilityBySpecies(u16 species, bool8 altAbility);
u8 GetMonAbility(struct Pokemon *mon);
-void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord);
+void CreateSecretBaseEnemyParty(struct SecretBase *secretBaseRecord);
u8 GetSecretBaseTrainerPicIndex(void);
u8 GetSecretBaseTrainerClass(void);
bool8 IsPlayerPartyAndPokemonStorageFull(void);
diff --git a/include/pokemon_jump.h b/include/pokemon_jump.h
index f54e0d460..9dbf194d0 100644
--- a/include/pokemon_jump.h
+++ b/include/pokemon_jump.h
@@ -1,7 +1,11 @@
#ifndef GUARD_POKEMON_JUMP_H
#define GUARD_POKEMON_JUMP_H
+#include "main.h"
+
void sub_802EB24(u8, u8, u8, u8, u8);
bool32 sub_802EB84(void);
+void sub_802A9A8(u16 monId, MainCallback callback);
+bool32 sub_802C908(u16 species);
#endif //GUARD_POKEMON_JUMP_H
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
index 19994b77f..20d881702 100755
--- a/include/pokemon_summary_screen.h
+++ b/include/pokemon_summary_screen.h
@@ -4,7 +4,9 @@
#include "main.h"
extern u8 gLastViewedMonIndex;
+
extern const u8 *const gMoveDescriptionPointers[];
+extern const u8 *const gNatureNamePointers[];
void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
void sub_81C4F98(u8, void(*)(void));
diff --git a/include/pokenav.h b/include/pokenav.h
index 4e1648c93..0d46f04f3 100644
--- a/include/pokenav.h
+++ b/include/pokenav.h
@@ -1,6 +1,186 @@
#ifndef GUARD_POKENAV_H
#define GUARD_POKENAV_H
+#include "bg.h"
+#include "main.h"
+
+typedef u32 (*LoopedTask)(int state);
+
+// Return values of LoopedTask functions.
+#define LT_INC_AND_PAUSE 0
+#define LT_INC_AND_CONTINUE 1
+#define LT_PAUSE 2
+#define LT_CONTINUE 3
+#define LT_FINISH 4
+#define LT_SET_STATE(newState) (newState + 5)
+
+enum
+{
+ POKENAV_MODE_NORMAL, // Chosen from Start menu.
+ POKENAV_MODE_FORCE_CALL_1, // Used for the script's special. Has to choose Match Call and make a call.
+ POKENAV_MODE_FORCE_CALL_2, // Set after making a call, has to exit Pokenav.
+};
+
+#define POKENAV_MENU_IDS_START 100000
+enum
+{
+ POKENAV_MENU_0 = POKENAV_MENU_IDS_START,
+ POKENAV_MENU_1,
+ POKENAV_MENU_2,
+ POKENAV_MENU_3,
+ POKENAV_MENU_4,
+ POKENAV_MENU_5,
+ POKENAV_MENU_6,
+ POKENAV_MENU_7,
+ POKENAV_MENU_8,
+ POKENAV_MENU_9,
+ POKENAV_MENU_A,
+ POKENAV_MENU_B,
+ POKENAV_MENU_C,
+ POKENAV_MENU_D,
+ POKENAV_MENU_E,
+};
+
+// pokenav.c
+void sub_81C7694(u32);
+u16 sub_81C76AC(void);
+
void CB2_InitPokeNav(void);
+u32 CreateLoopedTask(LoopedTask loopedTask, u32 priority);
+bool32 FuncIsActiveLoopedTask(LoopedTask func);
+void *GetSubstructPtr(u32 index);
+void FreePokenavSubstruct(u32 index);
+void *AllocSubstruct(u32 index, u32 size);
+void Pokenav_AllocAndLoadPalettes(const struct SpritePalette *palettes);
+bool32 IsLoopedTaskActive(u32 taskId);
+void SetPokenavMode(u16 mode);
+u32 GetPokenavMode(void);
+bool32 CanViewRibbonsMenu(void);
+void SetPokenavVBlankCallback(void);
+void SetVBlankCallback_(IntrCallback callback);
+
+// pokenav_match_call_ui.c
+struct MatchCallListTemplate
+{
+ u32 unk0;
+ u16 unk4;
+ u16 unk6;
+ u8 unk8;
+ u8 unk9;
+ u8 unkA;
+ u8 unkB;
+ u8 unkC;
+ u8 unkD;
+ u8 unkE;
+ void (*unk10)(u32, u8 *a1);
+ void (*unk14)(u16 a0, u32 a1, u32 a2);
+};
+u32 GetSelectedMatchCall(void);
+bool32 sub_81C8224(void);
+int MatchCall_MoveCursorUp(void);
+int MatchCall_MoveCursorDown(void);
+int MatchCall_PageDown(void);
+int MatchCall_PageUp(void);
+bool32 sub_81C8630(void);
+void ToggleMatchCallVerticalArrows(bool32 shouldHide);
+void sub_81C8838(void);
+void sub_81C877C(void);
+bool32 sub_81C8820(void);
+void sub_81C87AC(s16 a0);
+u32 GetMatchCallListTopIndex(void);
+void sub_81C87F0(void);
+bool32 sub_81C81D4(const struct BgTemplate *arg0, struct MatchCallListTemplate *arg1, s32 arg2);
+void sub_81C8234(void);
+
+// pokenav_match_call_data.c
+bool32 sub_81D17E8(u32 idx);
+u8 sub_81D16DC(u32 idx);
+bool32 sub_81D1BF8(u32 idx);
+bool32 MatchCallFlagGetByIndex(u32 idx);
+u32 MatchCall_GetRematchTableIdx(u32 idx);
+u32 GetTrainerIdxByRematchIdx(u32 rematchIdx);
+int sub_81D1BD0(u32 idx);
+void MatchCall_GetMessage(u32 idx, u8 *dest);
+const u8 *sub_81D1B40(u32 idx, u32 offset);
+void sub_81D1A78(u32 idx, const u8 **desc, const u8 **name);
+
+// pokenav_main_menu.c
+bool32 InitPokenavMainMenu(void);
+void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 bufferOffset, u32 size);
+void sub_81C7850(u32 a0);
+u32 sub_81C786C(void);
+void LoadLeftHeaderGfxForIndex(u32 arg0);
+void sub_81C7FA0(u32 arg0, bool32 arg1, bool32 arg2);
+void sub_81C7AC0(int a0);
+bool32 sub_81C8010(void);
+void InitBgTemplates(const struct BgTemplate *templates, int count);
+bool32 IsPaletteFadeActive(void);
+void sub_81C7BA4(u32 helpBarIndex);
+bool32 IsDma3ManagerBusyWithBgCopy_(void);
+void sub_81C78A0(void);
+bool32 MainMenuLoopedTaskIsBusy(void);
+void sub_81C7FDC(void);
+void sub_81C79BC(const u16 *a0, const u16 *a1, u32 a2, u32 a3, u32 a4, u16 *a5);
+void sub_81C7B40(void);
+struct Sprite *PauseSpinningPokenavSprite(void);
+void ResumeSpinningPokenavSprite(void);
+void sub_81C7E14(u32 arg0);
+
+// pokenav_unk_1.c
+bool32 sub_81C9298(void);
+bool32 sub_81C92CC(void);
+bool32 sub_81C9304(void);
+bool32 sub_81C9338(void);
+bool32 sub_81C9368(void);
+u32 sub_81C941C(void);
+void sub_81C9430(void);
+int sub_81C9894(void);
+const u8 *sub_81CAF78(int index, u8 *arg1);
+
+// pokenav_unk_2.c
+void sub_81C99D4(void);
+void sub_81CAADC(void);
+
+// pokenav_unk_3.c
+struct Pokenav3Struct_Unk1C
+{
+ u8 unk0;
+ u8 unk1;
+ u16 unk2;
+};
+bool32 sub_81CAAE8(void);
+u32 sub_81CAB24(void);
+void sub_81CAB38(void);
+int sub_81CAE28(void);
+int sub_81CAE38(void);
+int sub_81CAE48(void);
+struct Pokenav3Struct_Unk1C *sub_81CAE94(void);
+u16 sub_81CAEA4(int);
+bool32 sub_81CAEBC(int index);
+int sub_81CAF04(int index);
+const u8 *sub_81CAFD8(int index, int textType);
+u16 sub_81CB01C(void);
+u16 sub_81CB02C(int arg0);
+void sub_81CB050(u32 arg0, u8 *str);
+int sub_81CB0C8(int rematchIndex);
+int sub_81CB0E4(int index);
+bool32 sub_81CAE08(int);
+int sub_81CB128(int index);
+
+// pokenav_unk_4.c
+bool32 sub_81CB260(void);
+void sub_81CB29C(int index);
+u32 sub_81CB2CC(void);
+void sub_81CB2E0(void);
+void sub_81CBD48(u16 windowId, u32 a1);
+
+// pokenav_unk_5.c
+u32 sub_81CC4D4(void);
+void sub_81CC524(void);
+u32 sub_81CC554(void);
+bool32 sub_81CC5F4(void);
+void sub_81CC62C(int);
+u32 sub_81CC65C(void);
+void sub_81CC670(void);
#endif //GUARD_POKENAV_H
diff --git a/include/region_map.h b/include/region_map.h
index ed1c1a201..798e6f56d 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -90,7 +90,7 @@ struct RegionMapLocation
// Exported RAM declarations
// Exported ROM declarations
-void sub_8122CF8(struct RegionMap *regionMap, struct BgTemplate *template, bool8 zoomed);
+void sub_8122CF8(struct RegionMap *regionMap, const struct BgTemplate *template, bool8 zoomed);
bool8 sub_8122DB0(void);
void UpdateRegionMapVideoRegs(void);
void InitRegionMap(struct RegionMap *regionMap, u8 argument);
@@ -108,6 +108,10 @@ u16 CorrectSpecialMapSecId(u16 mapSecId);
void sub_8122D88(struct RegionMap *regionMap);
void PokedexAreaScreen_UpdateRegionMapVariablesAndVideoRegs(s16 x, s16 y);
void MCB2_FlyMap(void);
+bool8 sub_8124658(void);
+void sub_812454C(void);
+void sub_8123030(u16 a0, u32 a1);
+void sub_8123418(void);
extern const struct RegionMapLocation gRegionMapEntries[];
diff --git a/include/secret_base.h b/include/secret_base.h
index 17efc314d..4e323b0c6 100644
--- a/include/secret_base.h
+++ b/include/secret_base.h
@@ -1,40 +1,30 @@
#ifndef GUARD_SECRET_BASE_H
#define GUARD_SECRET_BASE_H
-// Exported type declarations
-
-// Exported RAM declarations
-
-// Exported ROM declarations
-void sub_80E9578(void);
-void sub_80E980C(void);
-void sub_80EB18C(struct SecretBaseRecord *dest);
-void sub_80E9914(void);
+void HideSecretBaseDecorationSprites(void);
+void CopyCurSecretBaseOwnerName_StrVar1(void);
+void ClearJapaneseSecretBases(struct SecretBase *dest);
+void SetPlayerSecretBaseParty(void);
u8 *GetSecretBaseMapName(u8 *dest);
const u8 *GetSecretBaseTrainerLoseText(void);
-void sub_80E8EE0(struct MapEvents const *events);
-void sub_80E9238(u8 flagIn);
-bool8 CurrentMapIsSecretBase(void);
+void SetOccupiedSecretBaseEntranceMetatiles(struct MapEvents const *events);
+void InitSecretBaseAppearance(bool8 hidePC);
+bool8 CurMapIsSecretBase(void);
void SecretBasePerStepCallback(u8 taskId);
-bool8 sub_80E9680(void);
-void sub_80EB498(void);
-void sub_80EB56C(void);
-void sub_80EB9E0(void);
-void sub_80EBB28(void);
+bool8 TrySetCurSecretBase(void);
+void SetSecretBaseSecretsTvFlags_Poster(void);
+void SetSecretBaseSecretsTvFlags_MiscFurnature(void);
+void SetSecretBaseSecretsTvFlags_LargeDecorationSpot(void);
+void SetSecretBaseSecretsTvFlags_SmallDecorationSpot(void);
void WarpIntoSecretBase(const struct MapPosition *position, const struct MapEvents *events);
-bool8 sub_80E909C(void);
+bool8 SecretBaseMapPopupEnabled(void);
void sub_80EB218(void);
-void ResetSecretBases(void);
-
-// SetCurrentSecretBaseFromPosition
-void sub_80E9608(const struct MapPosition *position, const struct MapEvents *events);
-// SetCurrentSecretBaseVar
-void sub_80E8B6C(void);
-void sub_80E8BC8(void);
-void sub_80E8D4C(void);
+void ClearSecretBases(void);
+void SetCurSecretBaseIdFromPosition(const struct MapPosition *position, const struct MapEvents *events);
+void TrySetCurSecretBaseIndex(void);
+void CheckPlayerHasSecretBase(void);
+void ToggleSecretBaseEntranceMetatile(void);
void EnableBothScriptContexts(void);
void ReceiveSecretBasesData(void *records, size_t recordSize, u8 linkIdx);
-
-
#endif //GUARD_SECRET_BASE_H
diff --git a/include/shop.h b/include/shop.h
index 1e4ffdb5c..9a5f8eb14 100644
--- a/include/shop.h
+++ b/include/shop.h
@@ -5,9 +5,9 @@ extern EWRAM_DATA struct ItemSlot gMartPurchaseHistory[3];
enum
{
- MART_TYPE_0, // normal mart
- MART_TYPE_1,
- MART_TYPE_2,
+ MART_TYPE_NORMAL, // normal mart
+ MART_TYPE_DECOR,
+ MART_TYPE_DECOR2,
};
// shop view window NPC info enum
@@ -49,4 +49,4 @@ void CreateDecorationShop1Menu(const u16 *);
void CreateDecorationShop2Menu(const u16 *);
void CB2_ExitSellMenu(void);
-#endif // GUARD_SHOP_H
+#endif // GUARD_SHOP_H \ No newline at end of file
diff --git a/include/strings.h b/include/strings.h
index cb54afb13..964c46ef2 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -132,7 +132,7 @@ extern const u8 gText_ApostropheSBase[];
extern const u8 gText_NoRegistry[];
extern const u8 gText_OkayToDeleteFromRegistry[];
extern const u8 gText_RegisteredDataDeleted[];
-extern const u8 gUnknown_085EA79D[];
+extern const u8 gText_DelRegist[];
extern const u8 gText_CommErrorEllipsis[];
extern const u8 gText_MoveCloserToLinkPartner[];
extern const u8 gText_CommErrorCheckConnections[];
@@ -471,6 +471,12 @@ extern const u8 gText_EggCantBattle[];
extern const u8 gText_PkmnAlreadySelected[];
extern const u8 gText_PkmnAlreadyInBattle[];
extern const u8 gText_PkmnCantSwitchOut[];
+extern const u8 gUnknown_085EEA46[];
+extern const u8 gUnknown_085EEA4E[];
+extern const u8 gUnknown_085EEA55[];
+extern const u8 gUnknown_085EEA63[];
+extern const u8 gUnknown_085EEA6B[];
+extern const u8 gUnknown_085EEA5D[];
extern const u8 gText_Dash[];
extern const u8 gText_UnkCtrlF904[];
@@ -1002,18 +1008,21 @@ extern const u8 gText_SomeonesPC[];
extern const u8 gText_PlayersPC[];
extern const u8 gText_WhichPCShouldBeAccessed[];
-extern const u8 gText_Navgear_ClearButtonList[];
-extern const u8 gText_NavgearMap_ZoomedOutButtons[];
-extern const u8 gText_NavgearMap_ZoomedInButtons[];
-extern const u8 gText_NavgearCondition_MonListButtons[];
-extern const u8 gText_NavgearCondition_MonStatusButtons[];
-extern const u8 gText_NavgearCondition_MarkingButtons[];
-extern const u8 gText_NavgearMatchCall_TrainerListButtons[];
-extern const u8 gText_NavgearMatchCall_CallMenuButtons[];
-extern const u8 gText_NavgearMatchCall_CheckTrainerButtons[];
-extern const u8 gText_NavgearRibbons_MonListButtons[];
-extern const u8 gText_NavgearRibbons_RibbonListButtons[];
-extern const u8 gText_NavgearRibbons_RibbonCheckButtons[];
+extern const u8 gText_PokenavMatchCall_Strategy[];
+extern const u8 gText_PokenavMatchCall_TrainerPokemon[];
+extern const u8 gText_PokenavMatchCall_SelfIntroduction[];
+extern const u8 gText_Pokenav_ClearButtonList[];
+extern const u8 gText_PokenavMap_ZoomedOutButtons[];
+extern const u8 gText_PokenavMap_ZoomedInButtons[];
+extern const u8 gText_PokenavCondition_MonListButtons[];
+extern const u8 gText_PokenavCondition_MonStatusButtons[];
+extern const u8 gText_PokenavCondition_MarkingButtons[];
+extern const u8 gText_PokenavMatchCall_TrainerListButtons[];
+extern const u8 gText_PokenavMatchCall_CallMenuButtons[];
+extern const u8 gText_PokenavMatchCall_CheckTrainerButtons[];
+extern const u8 gText_PokenavRibbons_MonListButtons[];
+extern const u8 gText_PokenavRibbons_RibbonListButtons[];
+extern const u8 gText_PokenavRibbons_RibbonCheckButtons[];
extern const u8 gUnknown_085EAD37[];
extern const u8 gUnknown_085EAD41[];
@@ -2699,4 +2708,11 @@ extern const u8 gText_Symbols[];
extern const u8 gText_Register2[];
extern const u8 gText_Exit2[];
+// Pokenav Match Call
+extern const u8 gText_CallCantBeMadeHere[];
+extern const u8 gText_NumberRegistered[];
+extern const u8 gText_NumberOfBattles[];
+extern const u8 gText_Unknown[];
+extern const u8 gText_TrainerCloseBy[];
+
#endif // GUARD_STRINGS_H
diff --git a/include/trader.h b/include/trader.h
index c07ea81bd..25d72bd3b 100644
--- a/include/trader.h
+++ b/include/trader.h
@@ -6,7 +6,7 @@
#define GUARD_TRADER_H
void sub_8133DA0(u8 taskId);
-void sub_8133E1C(u8 taskId);
+void ExitTraderMenu(u8 taskId);
void TraderSetup(void);
void Trader_ResetFlag(void);
diff --git a/include/union_room.h b/include/union_room.h
index 538d37716..facc63986 100644
--- a/include/union_room.h
+++ b/include/union_room.h
@@ -162,7 +162,6 @@ extern u8 gUnknown_02022C3E;
// Exported ROM declarations
u8 sub_8013F78(void);
-bool32 sub_802C908(u16);
void nullsub_89(u8 taskId);
void var_800D_set_xB(void);
void MEvent_CreateTask_CardOrNewsWithFriend(u32 arg0);
diff --git a/json_data_rules.mk b/json_data_rules.mk
new file mode 100755
index 000000000..1de3c79f3
--- /dev/null
+++ b/json_data_rules.mk
@@ -0,0 +1,8 @@
+# JSON files are run through jsonproc, which is a tool that converts JSON data to an output file
+# based on an Inja template. https://github.com/pantor/inja
+
+AUTO_GEN_TARGETS += $(DATA_SRC_SUBDIR)/wild_encounters.h
+$(DATA_SRC_SUBDIR)/wild_encounters.h: $(DATA_SRC_SUBDIR)/wild_encounters.json $(DATA_SRC_SUBDIR)/wild_encounters.json.txt
+ $(JSONPROC) $^ $@
+
+$(C_BUILDDIR)/wild_encounter.o: c_dep += $(DATA_SRC_SUBDIR)/wild_encounters.h
diff --git a/ld_script.txt b/ld_script.txt
index 386bde8b0..af0709056 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -70,6 +70,7 @@ SECTIONS {
src/berry_powder.o(.text);
src/dodrio_berry_picking.o(.text);
asm/dodrio_berry_picking.o(.text);
+ src/pokemon_jump.o(.text);
asm/pokemon_jump.o(.text);
src/rtc.o(.text);
src/main_menu.o(.text);
@@ -301,8 +302,19 @@ SECTIONS {
src/unk_pokedex_area_screen_helper.o(.text);
src/battle_pyramid_bag.o(.text);
src/pokenav.o(.text);
- asm/pokenav.o(.text);
- src/pokenav_match_call.o(.text);
+ src/pokenav_main_menu.o(.text);
+ src/pokenav_match_call_ui.o(.text);
+ src/pokenav_unk_1.o(.text);
+ asm/pokenav_unk_2.o(.text);
+ src/pokenav_unk_3.o(.text);
+ src/pokenav_unk_4.o(.text);
+ src/pokenav_unk_5.o(.text);
+ asm/pokenav_unk_6.o(.text);
+ asm/pokenav_unk_7.o(.text);
+ asm/pokenav_unk_8.o(.text);
+ asm/pokenav_unk_9.o(.text);
+ asm/pokenav_unk_10.o(.text);
+ src/pokenav_match_call_data.o(.text);
src/menu_specialized.o(.text);
src/ereader_helpers.o(.text);
src/faraway_island.o(.text);
@@ -424,12 +436,12 @@ SECTIONS {
data/berry_powder.o(.rodata);
src/dodrio_berry_picking.o(.rodata);
data/dodrio_berry_picking.o(.rodata);
+ src/pokemon_jump.o(.rodata);
data/pokemon_jump.o(.rodata);
src/rtc.o(.rodata);
src/main_menu.o(.rodata);
src/rom_8034C54.o(.rodata);
- src/data2b.o(.rodata);
- src/battle_data.o(.rodata);
+ src/data.o(.rodata);
src/battle_bg.o(.rodata);
src/battle_main.o(.rodata);
src/battle_util.o(.rodata);
@@ -620,10 +632,12 @@ SECTIONS {
src/unk_pokedex_area_screen_helper.o(.rodata);
src/battle_pyramid_bag.o(.rodata);
src/pokenav.o(.rodata);
+ src/pokenav_main_menu.o(.rodata);
+ src/pokenav_match_call_ui.o(.rodata);
+ src/pokenav_unk_1.o(.rodata);
data/pokenav.o(.rodata);
- src/pokenav_match_call.o(.rodata);
+ src/pokenav_match_call_data.o(.rodata);
src/menu_specialized.o(.rodata);
- data/menu_specialized.o(.rodata);
data/ereader_helpers.o(.rodata);
src/faraway_island.o(.rodata);
data/ereader_screen.o(.rodata);
diff --git a/porymap.project.cfg b/porymap.project.cfg
deleted file mode 100755
index c6ba8781e..000000000
--- a/porymap.project.cfg
+++ /dev/null
@@ -1 +0,0 @@
-base_game_version=pokeemerald
diff --git a/src/alloc.c b/src/alloc.c
index 2944bc1c6..4d1a9fe5c 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -178,12 +178,12 @@ void InitHeap(void *heapStart, u32 heapSize)
void *Alloc(u32 size)
{
- AllocInternal(sHeapStart, size);
+ return AllocInternal(sHeapStart, size);
}
void *AllocZeroed(u32 size)
{
- AllocZeroedInternal(sHeapStart, size);
+ return AllocZeroedInternal(sHeapStart, size);
}
void Free(void *pointer)
diff --git a/src/apprentice.c b/src/apprentice.c
index 27ff8e36e..4ad295e1a 100644
--- a/src/apprentice.c
+++ b/src/apprentice.c
@@ -2,7 +2,7 @@
#include "apprentice.h"
#include "battle.h"
#include "battle_tower.h"
-#include "data2.h"
+#include "data.h"
#include "event_data.h"
#include "event_object_movement.h"
#include "field_player_avatar.h"
@@ -2013,28 +2013,27 @@ static void sub_81A1218(void)
sub_81AAC28();
}
-#ifdef NONMATCHING
static void sub_81A1224(void)
{
- u8 count;
u8 i, j;
+ u8 count;
if (PLAYER_APPRENTICE.field_B1_1 < 3)
return;
- count = 0;
- for (j = 0; j < 9 && PLAYER_APPRENTICE.field_B8[j].unk0_0; count++, j++)
+ for (count = 0, j = 0; j < 9 && PLAYER_APPRENTICE.field_B8[j].unk0_0; count++, j++)
;
for (i = 0; i < count && i < PLAYER_APPRENTICE.field_B1_1 - 3; i++)
{
+ do {} while(0);
if (PLAYER_APPRENTICE.field_B8[i].unk0_0 == 1
&& PLAYER_APPRENTICE.field_B8[i].unk0_3
&& PLAYER_APPRENTICE.field_B8[i].unk2 == gSpecialVar_0x8005)
{
PLAYER_APPRENTICE.field_B8[PLAYER_APPRENTICE.field_B1_1 - 3].unk0_3 = 0;
PLAYER_APPRENTICE.field_B8[PLAYER_APPRENTICE.field_B1_1 - 3].unk2 = gSpecialVar_0x8005;
- gSpecialVar_Result = i;
+ gSpecialVar_Result = 0;
return;
}
}
@@ -2043,180 +2042,6 @@ static void sub_81A1224(void)
PLAYER_APPRENTICE.field_B8[PLAYER_APPRENTICE.field_B1_1 - 3].unk2 = gSpecialVar_0x8005;
gSpecialVar_Result = 1;
}
-#else
-NAKED
-static void sub_81A1224(void)
-{
- asm_unified("\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- ldr r1, =gSaveBlock2Ptr\n\
- ldr r3, [r1]\n\
- adds r0, r3, 0\n\
- adds r0, 0xB1\n\
- ldrb r0, [r0]\n\
- lsls r0, 26\n\
- lsrs r0, 28\n\
- adds r7, r1, 0\n\
- cmp r0, 0x2\n\
- bhi _081A1242\n\
- b _081A1362\n\
-_081A1242:\n\
- movs r5, 0\n\
- movs r2, 0\n\
- adds r0, r3, 0\n\
- adds r0, 0xB8\n\
- ldrb r0, [r0]\n\
- lsls r0, 30\n\
- ldr r1, =gSpecialVar_0x8005\n\
- mov r12, r1\n\
- ldr r1, =gSpecialVar_Result\n\
- mov r8, r1\n\
- cmp r0, 0\n\
- beq _081A127C\n\
- adds r3, r7, 0\n\
-_081A125C:\n\
- adds r0, r5, 0x1\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- adds r0, r2, 0x1\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
- cmp r2, 0x8\n\
- bhi _081A127C\n\
- ldr r0, [r3]\n\
- lsls r1, r2, 2\n\
- adds r0, r1\n\
- adds r0, 0xB8\n\
- ldrb r0, [r0]\n\
- lsls r0, 30\n\
- cmp r0, 0\n\
- bne _081A125C\n\
-_081A127C:\n\
- movs r4, 0\n\
- cmp r4, r5\n\
- bcs _081A1322\n\
- ldr r0, [r7]\n\
- adds r0, 0xB1\n\
- ldrb r0, [r0]\n\
- lsls r0, 26\n\
- lsrs r0, 28\n\
- subs r0, 0x3\n\
- cmp r4, r0\n\
- bge _081A1322\n\
- adds r6, r7, 0\n\
- mov r9, r4\n\
-_081A1296:\n\
- ldr r3, [r6]\n\
- lsls r0, r4, 2\n\
- adds r2, r3, r0\n\
- adds r0, r2, 0\n\
- adds r0, 0xB8\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 30\n\
- lsrs r0, 30\n\
- cmp r0, 0x1\n\
- bne _081A1308\n\
- lsrs r0, r1, 6\n\
- cmp r0, 0\n\
- beq _081A1308\n\
- adds r0, r2, 0\n\
- adds r0, 0xBA\n\
- ldrh r0, [r0]\n\
- mov r2, r12\n\
- ldrh r2, [r2]\n\
- cmp r0, r2\n\
- bne _081A1308\n\
- adds r0, r3, 0\n\
- adds r0, 0xB1\n\
- ldrb r0, [r0]\n\
- lsls r0, 26\n\
- lsrs r0, 28\n\
- subs r0, 0x3\n\
- lsls r0, 2\n\
- adds r0, r3, r0\n\
- adds r0, 0xB8\n\
- ldrb r2, [r0]\n\
- movs r1, 0x3F\n\
- ands r1, r2\n\
- strb r1, [r0]\n\
- ldr r1, [r6]\n\
- adds r0, r1, 0\n\
- adds r0, 0xB1\n\
- ldrb r0, [r0]\n\
- lsls r0, 26\n\
- lsrs r0, 28\n\
- subs r0, 0x3\n\
- lsls r0, 2\n\
- adds r1, r0\n\
- mov r2, r12\n\
- ldrh r0, [r2]\n\
- adds r1, 0xBA\n\
- strh r0, [r1]\n\
- mov r1, r9\n\
- mov r0, r8\n\
- strh r1, [r0]\n\
- b _081A1362\n\
- .pool\n\
-_081A1308:\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, r5\n\
- bcs _081A1322\n\
- ldr r0, [r6]\n\
- adds r0, 0xB1\n\
- ldrb r0, [r0]\n\
- lsls r0, 26\n\
- lsrs r0, 28\n\
- subs r0, 0x3\n\
- cmp r4, r0\n\
- blt _081A1296\n\
-_081A1322:\n\
- ldr r2, [r7]\n\
- adds r0, r2, 0\n\
- adds r0, 0xB1\n\
- ldrb r0, [r0]\n\
- lsls r0, 26\n\
- lsrs r0, 28\n\
- subs r0, 0x3\n\
- lsls r0, 2\n\
- adds r2, r0\n\
- adds r2, 0xB8\n\
- ldrb r1, [r2]\n\
- movs r0, 0x3F\n\
- ands r0, r1\n\
- movs r1, 0x40\n\
- orrs r0, r1\n\
- strb r0, [r2]\n\
- ldr r1, [r7]\n\
- adds r0, r1, 0\n\
- adds r0, 0xB1\n\
- ldrb r0, [r0]\n\
- lsls r0, 26\n\
- lsrs r0, 28\n\
- subs r0, 0x3\n\
- lsls r0, 2\n\
- adds r1, r0\n\
- mov r2, r12\n\
- ldrh r0, [r2]\n\
- adds r1, 0xBA\n\
- strh r0, [r1]\n\
- movs r0, 0x1\n\
- mov r1, r8\n\
- strh r0, [r1]\n\
-_081A1362:\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
-");
-}
-#endif // NONMATCHING
static void sub_81A1370(void)
{
diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c
index 61876e0de..5e832aba0 100644
--- a/src/battle_ai_script_commands.c
+++ b/src/battle_ai_script_commands.c
@@ -4,6 +4,7 @@
#include "battle_ai_script_commands.h"
#include "battle_factory.h"
#include "battle_setup.h"
+#include "data.h"
#include "item.h"
#include "pokemon.h"
#include "random.h"
@@ -2217,7 +2218,7 @@ static void BattleAICmd_if_flash_fired(void)
{
u8 battlerId = BattleAI_GetWantedBattler(gAIScriptPtr[1]);
- if (gBattleResources->flags->flags[battlerId] & UNKNOWN_FLAG_FLASH_FIRE)
+ if (gBattleResources->flags->flags[battlerId] & RESOURCE_FLAG_FLASH_FIRE)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c
index 2d67fda99..de798eee3 100644
--- a/src/battle_ai_switch_items.c
+++ b/src/battle_ai_switch_items.c
@@ -6,6 +6,7 @@
#include "random.h"
#include "util.h"
#include "constants/abilities.h"
+#include "constants/item_effects.h"
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/species.h"
@@ -778,18 +779,17 @@ u8 GetMostSuitableMonToSwitchInto(void)
return bestMonId;
}
-// TODO: use PokemonItemEffect struct instead of u8 once it's documented.
static u8 GetAI_ItemType(u8 itemId, const u8 *itemEffect) // NOTE: should take u16 as item Id argument
{
if (itemId == ITEM_FULL_RESTORE)
return AI_ITEM_FULL_RESTORE;
- else if (itemEffect[4] & 4)
+ else if (itemEffect[4] & ITEM4_HEAL_HP)
return AI_ITEM_HEAL_HP;
- else if (itemEffect[3] & 0x3F)
+ else if (itemEffect[3] & ITEM3_STATUS_ALL)
return AI_ITEM_CURE_CONDITION;
- else if (itemEffect[0] & 0x3F || itemEffect[1] != 0 || itemEffect[2] != 0)
+ else if (itemEffect[0] & (ITEM0_HIGH_CRIT | ITEM0_X_ATTACK) || itemEffect[1] != 0 || itemEffect[2] != 0)
return AI_ITEM_X_STAT;
- else if (itemEffect[3] & 0x80)
+ else if (itemEffect[3] & ITEM3_MIST)
return AI_ITEM_GUARD_SPECS;
else
return AI_ITEM_NOT_RECOGNIZABLE;
@@ -832,13 +832,13 @@ static bool8 ShouldUseItem(void)
item = gBattleResources->battleHistory->trainerItems[i];
if (item == ITEM_NONE)
continue;
- if (gItemEffectTable[item - 13] == NULL)
+ if (gItemEffectTable[item - ITEM_POTION] == NULL)
continue;
if (item == ITEM_ENIGMA_BERRY)
itemEffects = gSaveBlock1Ptr->enigmaBerry.itemEffect;
else
- itemEffects = gItemEffectTable[item - 13];
+ itemEffects = gItemEffectTable[item - ITEM_POTION];
*(gBattleStruct->AI_itemType + gActiveBattler / 2) = GetAI_ItemType(item, itemEffects);
@@ -862,32 +862,32 @@ static bool8 ShouldUseItem(void)
break;
case AI_ITEM_CURE_CONDITION:
*(gBattleStruct->AI_itemFlags + gActiveBattler / 2) = 0;
- if (itemEffects[3] & 0x20 && gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP)
+ if (itemEffects[3] & ITEM3_SLEEP && gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP)
{
*(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x20;
shouldUse = TRUE;
}
- if (itemEffects[3] & 0x10 && (gBattleMons[gActiveBattler].status1 & STATUS1_POISON || gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_POISON))
+ if (itemEffects[3] & ITEM3_POISON && (gBattleMons[gActiveBattler].status1 & STATUS1_POISON || gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_POISON))
{
*(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x10;
shouldUse = TRUE;
}
- if (itemEffects[3] & 0x8 && gBattleMons[gActiveBattler].status1 & STATUS1_BURN)
+ if (itemEffects[3] & ITEM3_BURN && gBattleMons[gActiveBattler].status1 & STATUS1_BURN)
{
*(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x8;
shouldUse = TRUE;
}
- if (itemEffects[3] & 0x4 && gBattleMons[gActiveBattler].status1 & STATUS1_FREEZE)
+ if (itemEffects[3] & ITEM3_FREEZE && gBattleMons[gActiveBattler].status1 & STATUS1_FREEZE)
{
*(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x4;
shouldUse = TRUE;
}
- if (itemEffects[3] & 0x2 && gBattleMons[gActiveBattler].status1 & STATUS1_PARALYSIS)
+ if (itemEffects[3] & ITEM3_PARALYSIS && gBattleMons[gActiveBattler].status1 & STATUS1_PARALYSIS)
{
*(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x2;
shouldUse = TRUE;
}
- if (itemEffects[3] & 0x1 && gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION)
+ if (itemEffects[3] & ITEM3_CONFUSION && gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION)
{
*(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x1;
shouldUse = TRUE;
@@ -897,17 +897,17 @@ static bool8 ShouldUseItem(void)
*(gBattleStruct->AI_itemFlags + gActiveBattler / 2) = 0;
if (gDisableStructs[gActiveBattler].isFirstTurn == 0)
break;
- if (itemEffects[0] & 0xF)
+ if (itemEffects[0] & ITEM0_X_ATTACK)
*(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x1;
- if (itemEffects[1] & 0xF0)
+ if (itemEffects[1] & ITEM1_X_DEFEND)
*(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x2;
- if (itemEffects[1] & 0xF)
+ if (itemEffects[1] & ITEM1_X_SPEED)
*(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x4;
- if (itemEffects[2] & 0xF)
+ if (itemEffects[2] & ITEM2_X_SPATK)
*(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x8;
- if (itemEffects[2] & 0xF0)
+ if (itemEffects[2] & ITEM2_X_ACCURACY)
*(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x20;
- if (itemEffects[0] & 0x30)
+ if (itemEffects[0] & ITEM0_HIGH_CRIT)
*(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x80;
shouldUse = TRUE;
break;
diff --git a/src/battle_anim.c b/src/battle_anim.c
index 88de3ee88..3cac9f33e 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -26,7 +26,6 @@ extern struct MusicPlayerInfo gMPlayInfo_SE2;
extern const u16 gMovesWithQuietBGM[];
extern const u8 *const gBattleAnims_Moves[];
-extern const struct BattleAnimBackground gBattleAnimBackgroundTable[];
// this file's functions
static void ScriptCmd_loadspritegfx(void);
@@ -1126,620 +1125,619 @@ const struct OamData gUnknown_08524B3C =
const struct CompressedSpriteSheet gBattleAnimPicTable[] =
{
- {gBattleAnimSpriteSheet_000, 0x0200, ANIM_TAG_BONE},
- {gBattleAnimSpriteSheet_001, 0x0300, ANIM_TAG_SPARK},
- {gBattleAnimSpriteSheet_002, 0x0200, ANIM_TAG_PENCIL},
- {gBattleAnimSpriteSheet_003, 0x0100, ANIM_TAG_AIR_WAVE},
- {gBattleAnimSpriteSheet_004, 0x0200, ANIM_TAG_UNUSED_ORB},
- {gBattleAnimSpriteSheet_005, 0x0400, ANIM_TAG_SWORD},
- {gBattleAnimSpriteSheet_006, 0x0180, ANIM_TAG_SEED},
- {gBattleAnimSpriteSheet_007, 0x0800, ANIM_TAG_UNUSED_EXPLOSION},
- {gBattleAnimSpriteSheet_008, 0x0020, ANIM_TAG_UNUSED_PINK_ORB},
- {gBattleAnimSpriteSheet_009, 0x0400, ANIM_TAG_GUST},
- {gBattleAnimSpriteSheet_010, 0x1200, ANIM_TAG_ICE_CUBE},
- {gBattleAnimSpriteSheet_011, 0x0180, ANIM_TAG_SPARK_2},
- {gBattleAnimSpriteSheet_012, 0x0080, ANIM_TAG_UNUSED_ORANGE},
- {gBattleAnimSpriteSheet_013, 0x0080, ANIM_TAG_YELLOW_BALL},
- {gBattleAnimSpriteSheet_014, 0x0280, ANIM_TAG_LOCK_ON},
- {gBattleAnimSpriteSheet_015, 0x0080, ANIM_TAG_TIED_BAG},
- {gBattleAnimSpriteSheet_016, 0x0100, ANIM_TAG_BLACK_SMOKE},
- {gBattleAnimSpriteSheet_017, 0x0020, ANIM_TAG_BLACK_BALL},
- {gBattleAnimSpriteSheet_018, 0x0080, ANIM_TAG_CONVERSION},
- {gBattleAnimSpriteSheet_019, 0x0400, ANIM_TAG_UNUSED_GLASS},
- {gBattleAnimSpriteSheet_020, 0x0200, ANIM_TAG_HORN_HIT},
- {gBattleAnimSpriteSheet_021, 0x0A00, ANIM_TAG_UNUSED_HIT},
- {gBattleAnimSpriteSheet_021, 0x0A00, ANIM_TAG_UNUSED_HIT_2},
- {gBattleAnimSpriteSheet_023, 0x0380, ANIM_TAG_UNUSED_BLUE_SHARDS},
- {gBattleAnimSpriteSheet_024, 0x0300, ANIM_TAG_UNUSED_CLOSING_EYE},
- {gBattleAnimSpriteSheet_025, 0x0A00, ANIM_TAG_UNUSED_WAVING_HAND},
- {gBattleAnimSpriteSheet_026, 0x0A00, ANIM_TAG_UNUSED_HIT_DUPLICATE},
- {gBattleAnimSpriteSheet_027, 0x0A00, ANIM_TAG_LEER},
- {gBattleAnimSpriteSheet_028, 0x0A00, ANIM_TAG_UNUSED_BLUE_BURST},
- {gBattleAnimSpriteSheet_029, 0x0A00, ANIM_TAG_SMALL_EMBER},
- {gBattleAnimSpriteSheet_030, 0x0A00, ANIM_TAG_GRAY_SMOKE},
- {gBattleAnimSpriteSheet_031, 0x0E00, ANIM_TAG_BLUE_STAR},
- {gBattleAnimSpriteSheet_032, 0x0380, ANIM_TAG_UNUSED_BUBBLE_BURST},
- {gBattleAnimSpriteSheet_033, 0x1000, ANIM_TAG_FIRE},
- {gBattleAnimSpriteSheet_034, 0x0800, ANIM_TAG_UNUSED_SPINNING_FIRE},
- {gBattleAnimSpriteSheet_035, 0x0A00, ANIM_TAG_FIRE_PLUME},
- {gBattleAnimSpriteSheet_036, 0x0800, ANIM_TAG_UNUSED_LIGHTNING},
- {gBattleAnimSpriteSheet_037, 0x0A00, ANIM_TAG_LIGHTNING},
- {gBattleAnimSpriteSheet_038, 0x0A00, ANIM_TAG_UNUSED_CLAW_SLASH},
- {gBattleAnimSpriteSheet_039, 0x0A00, ANIM_TAG_CLAW_SLASH},
- {gBattleAnimSpriteSheet_040, 0x0A00, ANIM_TAG_UNUSED_SCRATCH},
- {gBattleAnimSpriteSheet_041, 0x0A00, ANIM_TAG_UNUSED_SCRATCH_2},
- {gBattleAnimSpriteSheet_042, 0x0A00, ANIM_TAG_UNUSED_BUBBLE_BURST_2},
- {gBattleAnimSpriteSheet_043, 0x0A00, ANIM_TAG_ICE_CHUNK},
- {gBattleAnimSpriteSheet_044, 0x0A00, ANIM_TAG_UNUSED_GLASS_2},
- {gBattleAnimSpriteSheet_045, 0x0A00, ANIM_TAG_UNUSED_PINK_HEART},
- {gBattleAnimSpriteSheet_046, 0x1000, ANIM_TAG_UNUSED_SAP_DRIP},
- {gBattleAnimSpriteSheet_046, 0x1000, ANIM_TAG_UNUSED_SAP_DRIP_2},
- {gBattleAnimSpriteSheet_048, 0x1000, ANIM_TAG_SPARKLE_1},
- {gBattleAnimSpriteSheet_048, 0x1000, ANIM_TAG_SPARKLE_2},
- {gBattleAnimSpriteSheet_050, 0x0200, ANIM_TAG_HUMANOID_FOOT},
- {gBattleAnimSpriteSheet_051, 0x0200, ANIM_TAG_UNUSED_MONSTER_FOOT},
- {gBattleAnimSpriteSheet_052, 0x0200, ANIM_TAG_UNUSED_HUMANOID_HAND},
- {gBattleAnimSpriteSheet_053, 0x0800, ANIM_TAG_NOISE_LINE},
- {gBattleAnimSpriteSheet_054, 0x0080, ANIM_TAG_UNUSED_YELLOW_UNK},
- {gBattleAnimSpriteSheet_055, 0x0200, ANIM_TAG_UNUSED_RED_FIST},
- {gBattleAnimSpriteSheet_056, 0x1000, ANIM_TAG_SLAM_HIT},
- {gBattleAnimSpriteSheet_057, 0x0180, ANIM_TAG_UNUSED_RING},
- {gBattleAnimSpriteSheet_058, 0x0C00, ANIM_TAG_ROCKS},
- {gBattleAnimSpriteSheet_059, 0x0100, ANIM_TAG_UNUSED_Z},
- {gBattleAnimSpriteSheet_060, 0x0040, ANIM_TAG_UNUSED_YELLOW_UNK_2},
- {gBattleAnimSpriteSheet_061, 0x0180, ANIM_TAG_UNUSED_AIR_SLASH},
- {gBattleAnimSpriteSheet_062, 0x0800, ANIM_TAG_UNUSED_SPINNING_GREEN_ORBS},
- {gBattleAnimSpriteSheet_063, 0x0480, ANIM_TAG_LEAF},
- {gBattleAnimSpriteSheet_064, 0x0200, ANIM_TAG_FINGER},
- {gBattleAnimSpriteSheet_065, 0x0200, ANIM_TAG_POISON_POWDER},
- {gBattleAnimSpriteSheet_066, 0x0100, ANIM_TAG_UNUSED_BROWN_TRIANGLE},
- {gBattleAnimSpriteSheet_065, 0x0200, ANIM_TAG_SLEEP_POWDER},
- {gBattleAnimSpriteSheet_065, 0x0200, ANIM_TAG_STUN_SPORE},
- {gBattleAnimSpriteSheet_065, 0x0200, ANIM_TAG_UNUSED_POWDER},
- {gBattleAnimSpriteSheet_070, 0x0200, ANIM_TAG_SPARKLE_3},
- {gBattleAnimSpriteSheet_071, 0x0A00, ANIM_TAG_SPARKLE_4},
- {gBattleAnimSpriteSheet_072, 0x0300, ANIM_TAG_MUSIC_NOTES},
- {gBattleAnimSpriteSheet_073, 0x0180, ANIM_TAG_DUCK},
- {gBattleAnimSpriteSheet_074, 0x00A0, ANIM_TAG_MUD_SAND},
- {gBattleAnimSpriteSheet_075, 0x0700, ANIM_TAG_ALERT},
- {gBattleAnimSpriteSheet_076, 0x0400, ANIM_TAG_UNUSED_BLUE_FLAMES},
- {gBattleAnimSpriteSheet_077, 0x0200, ANIM_TAG_UNUSED_BLUE_FLAMES_2},
- {gBattleAnimSpriteSheet_078, 0x0300, ANIM_TAG_UNUSED_SHOCK},
- {gBattleAnimSpriteSheet_079, 0x0C00, ANIM_TAG_SHOCK},
- {gBattleAnimSpriteSheet_080, 0x0A00, ANIM_TAG_UNUSED_BELL},
- {gBattleAnimSpriteSheet_081, 0x0080, ANIM_TAG_UNUSED_PINK_GLOVE},
- {gBattleAnimSpriteSheet_082, 0x0040, ANIM_TAG_UNUSED_BLUE_LINES},
- {gBattleAnimSpriteSheet_083, 0x0E00, ANIM_TAG_UNUSED_IMPACT},
- {gBattleAnimSpriteSheet_084, 0x0E00, ANIM_TAG_UNUSED_IMPACT_2},
- {gBattleAnimSpriteSheet_085, 0x0280, ANIM_TAG_UNUSED_RETICLE},
- {gBattleAnimSpriteSheet_086, 0x0200, ANIM_TAG_BREATH},
- {gBattleAnimSpriteSheet_087, 0x0080, ANIM_TAG_ANGER},
- {gBattleAnimSpriteSheet_088, 0x00C0, ANIM_TAG_UNUSED_SNOWBALL},
- {gBattleAnimSpriteSheet_089, 0x0A00, ANIM_TAG_UNUSED_VINE},
- {gBattleAnimSpriteSheet_090, 0x0200, ANIM_TAG_UNUSED_SWORD},
- {gBattleAnimSpriteSheet_091, 0x0180, ANIM_TAG_UNUSED_CLAPPING},
- {gBattleAnimSpriteSheet_092, 0x0080, ANIM_TAG_UNUSED_RED_TUBE},
- {gBattleAnimSpriteSheet_093, 0x1000, ANIM_TAG_AMNESIA},
- {gBattleAnimSpriteSheet_094, 0x0A00, ANIM_TAG_UNUSED_STRING},
- {gBattleAnimSpriteSheet_095, 0x0180, ANIM_TAG_UNUSED_PENCIL},
- {gBattleAnimSpriteSheet_096, 0x0380, ANIM_TAG_UNUSED_PETAL},
- {gBattleAnimSpriteSheet_097, 0x0C00, ANIM_TAG_BENT_SPOON},
- {gBattleAnimSpriteSheet_098, 0x0200, ANIM_TAG_UNUSED_WEB},
- {gBattleAnimSpriteSheet_099, 0x0200, ANIM_TAG_MILK_BOTTLE},
- {gBattleAnimSpriteSheet_100, 0x0200, ANIM_TAG_COIN},
- {gBattleAnimSpriteSheet_101, 0x0200, ANIM_TAG_UNUSED_CRACKED_EGG},
- {gBattleAnimSpriteSheet_102, 0x0400, ANIM_TAG_UNUSED_HATCHED_EGG},
- {gBattleAnimSpriteSheet_103, 0x0080, ANIM_TAG_UNUSED_FRESH_EGG},
- {gBattleAnimSpriteSheet_104, 0x0400, ANIM_TAG_UNUSED_FANGS},
- {gBattleAnimSpriteSheet_105, 0x0c00, ANIM_TAG_UNUSED_EXPLOSION_2},
- {gBattleAnimSpriteSheet_106, 0x0200, ANIM_TAG_UNUSED_EXPLOSION_3},
- {gBattleAnimSpriteSheet_107, 0x1000, ANIM_TAG_UNUSED_WATER_DROPLET},
- {gBattleAnimSpriteSheet_108, 0x0a00, ANIM_TAG_UNUSED_WATER_DROPLET_2},
- {gBattleAnimSpriteSheet_109, 0x0020, ANIM_TAG_UNUSED_SEED},
- {gBattleAnimSpriteSheet_110, 0x0e00, ANIM_TAG_UNUSED_SPROUT},
- {gBattleAnimSpriteSheet_111, 0x0080, ANIM_TAG_UNUSED_RED_WAND},
- {gBattleAnimSpriteSheet_112, 0x0a00, ANIM_TAG_UNUSED_PURPLE_GREEN_UNK},
- {gBattleAnimSpriteSheet_113, 0x0400, ANIM_TAG_UNUSED_WATER_COLUMN},
- {gBattleAnimSpriteSheet_114, 0x0200, ANIM_TAG_UNUSED_MUD_UNK},
- {gBattleAnimSpriteSheet_115, 0x0700, ANIM_TAG_RAIN_DROPS},
- {gBattleAnimSpriteSheet_116, 0x0800, ANIM_TAG_UNUSED_FURY_SWIPES},
- {gBattleAnimSpriteSheet_117, 0x0a00, ANIM_TAG_UNUSED_VINE_2},
- {gBattleAnimSpriteSheet_118, 0x0600, ANIM_TAG_UNUSED_TEETH},
- {gBattleAnimSpriteSheet_119, 0x0800, ANIM_TAG_UNUSED_BONE},
- {gBattleAnimSpriteSheet_120, 0x0200, ANIM_TAG_UNUSED_WHITE_BAG},
- {gBattleAnimSpriteSheet_121, 0x0040, ANIM_TAG_UNUSED_UNKNOWN},
- {gBattleAnimSpriteSheet_122, 0x0180, ANIM_TAG_UNUSED_PURPLE_CORAL},
- {gBattleAnimSpriteSheet_123, 0x0600, ANIM_TAG_UNUSED_PURPLE_DROPLET},
- {gBattleAnimSpriteSheet_124, 0x0600, ANIM_TAG_UNUSED_SHOCK_2},
- {gBattleAnimSpriteSheet_125, 0x0200, ANIM_TAG_UNUSED_CLOSING_EYE_2},
- {gBattleAnimSpriteSheet_126, 0x0080, ANIM_TAG_UNUSED_METAL_BALL},
- {gBattleAnimSpriteSheet_127, 0x0200, ANIM_TAG_UNUSED_MONSTER_DOLL},
- {gBattleAnimSpriteSheet_128, 0x0800, ANIM_TAG_UNUSED_WHIRLWIND},
- {gBattleAnimSpriteSheet_129, 0x0080, ANIM_TAG_UNUSED_WHIRLWIND_2},
- {gBattleAnimSpriteSheet_130, 0x0a00, ANIM_TAG_UNUSED_EXPLOSION_4},
- {gBattleAnimSpriteSheet_131, 0x0280, ANIM_TAG_UNUSED_EXPLOSION_5},
- {gBattleAnimSpriteSheet_132, 0x0280, ANIM_TAG_UNUSED_TONGUE},
- {gBattleAnimSpriteSheet_133, 0x0100, ANIM_TAG_UNUSED_SMOKE},
- {gBattleAnimSpriteSheet_134, 0x0200, ANIM_TAG_UNUSED_SMOKE_2},
- {gBattleAnimSpriteSheet_135, 0x0200, ANIM_TAG_IMPACT},
- {gBattleAnimSpriteSheet_136, 0x0020, ANIM_TAG_CIRCLE_IMPACT},
- {gBattleAnimSpriteSheet_137, 0x0a00, ANIM_TAG_SCRATCH},
- {gBattleAnimSpriteSheet_138, 0x0800, ANIM_TAG_CUT},
- {gBattleAnimSpriteSheet_139, 0x0800, ANIM_TAG_SHARP_TEETH},
- {gBattleAnimSpriteSheet_140, 0x00c0, ANIM_TAG_RAINBOW_RINGS},
- {gBattleAnimSpriteSheet_141, 0x01c0, ANIM_TAG_ICE_CRYSTALS},
- {gBattleAnimSpriteSheet_142, 0x0100, ANIM_TAG_ICE_SPIKES},
- {gBattleAnimSpriteSheet_143, 0x0800, ANIM_TAG_HANDS_AND_FEET},
- {gBattleAnimSpriteSheet_144, 0x0200, ANIM_TAG_MIST_CLOUD},
- {gBattleAnimSpriteSheet_145, 0x0800, ANIM_TAG_CLAMP},
- {gBattleAnimSpriteSheet_146, 0x0180, ANIM_TAG_BUBBLE},
- {gBattleAnimSpriteSheet_147, 0x0180, ANIM_TAG_ORBS},
- {gBattleAnimSpriteSheet_148, 0x0200, ANIM_TAG_WATER_IMPACT},
- {gBattleAnimSpriteSheet_149, 0x0200, ANIM_TAG_WATER_ORB},
- {gBattleAnimSpriteSheet_150, 0x0180, ANIM_TAG_POISON_BUBBLE},
- {gBattleAnimSpriteSheet_151, 0x0400, ANIM_TAG_TOXIC_BUBBLE},
- {gBattleAnimSpriteSheet_152, 0x0080, ANIM_TAG_SPIKES},
- {gBattleAnimSpriteSheet_153, 0x0100, ANIM_TAG_HORN_HIT_2},
- {gBattleAnimSpriteSheet_154, 0x0100, ANIM_TAG_AIR_WAVE_2},
- {gBattleAnimSpriteSheet_155, 0x0140, ANIM_TAG_SMALL_BUBBLES},
- {gBattleAnimSpriteSheet_156, 0x0800, ANIM_TAG_ROUND_SHADOW},
- {gBattleAnimSpriteSheet_157, 0x0200, ANIM_TAG_SUNLIGHT},
- {gBattleAnimSpriteSheet_158, 0x0100, ANIM_TAG_SPORE},
- {gBattleAnimSpriteSheet_159, 0x00a0, ANIM_TAG_FLOWER},
- {gBattleAnimSpriteSheet_160, 0x0100, ANIM_TAG_RAZOR_LEAF},
- {gBattleAnimSpriteSheet_161, 0x0080, ANIM_TAG_NEEDLE},
- {gBattleAnimSpriteSheet_162, 0x0300, ANIM_TAG_WHIRLWIND_LINES},
- {gBattleAnimSpriteSheet_163, 0x0100, ANIM_TAG_GOLD_RING},
- {gBattleAnimSpriteSheet_163, 0x0100, ANIM_TAG_PURPLE_RING},
- {gBattleAnimSpriteSheet_163, 0x0100, ANIM_TAG_BLUE_RING},
- {gBattleAnimSpriteSheet_166, 0x0800, ANIM_TAG_GREEN_LIGHT_WALL},
- {gBattleAnimSpriteSheet_166, 0x0800, ANIM_TAG_BLUE_LIGHT_WALL},
- {gBattleAnimSpriteSheet_166, 0x0800, ANIM_TAG_RED_LIGHT_WALL},
- {gBattleAnimSpriteSheet_166, 0x0800, ANIM_TAG_GRAY_LIGHT_WALL},
- {gBattleAnimSpriteSheet_166, 0x0800, ANIM_TAG_ORANGE_LIGHT_WALL},
- {gBattleAnimSpriteSheet_171, 0x0080, ANIM_TAG_BLACK_BALL_2},
- {gBattleAnimSpriteSheet_144, 0x0200, ANIM_TAG_PURPLE_GAS_CLOUD},
- {gBattleAnimSpriteSheet_173, 0x0200, ANIM_TAG_SPARK_H},
- {gBattleAnimSpriteSheet_174, 0x0200, ANIM_TAG_YELLOW_STAR},
- {gBattleAnimSpriteSheet_175, 0x0080, ANIM_TAG_LARGE_FRESH_EGG},
- {gBattleAnimSpriteSheet_176, 0x0200, ANIM_TAG_SHADOW_BALL},
- {gBattleAnimSpriteSheet_177, 0x0500, ANIM_TAG_LICK},
- {gBattleAnimSpriteSheet_178, 0x0800, ANIM_TAG_UNUSED_VOID_LINES},
- {gBattleAnimSpriteSheet_179, 0x0400, ANIM_TAG_STRING},
- {gBattleAnimSpriteSheet_180, 0x0020, ANIM_TAG_WEB_THREAD},
- {gBattleAnimSpriteSheet_181, 0x0800, ANIM_TAG_SPIDER_WEB},
- {gBattleAnimSpriteSheet_182, 0x0100, ANIM_TAG_UNUSED_LIGHTBULB},
- {gBattleAnimSpriteSheet_183, 0x0800, ANIM_TAG_SLASH},
- {gBattleAnimSpriteSheet_184, 0x0400, ANIM_TAG_FOCUS_ENERGY},
- {gBattleAnimSpriteSheet_185, 0x0a00, ANIM_TAG_SPHERE_TO_CUBE},
- {gBattleAnimSpriteSheet_186, 0x1000, ANIM_TAG_TENDRILS},
- {gBattleAnimSpriteSheet_187, 0x0800, ANIM_TAG_EYE},
- {gBattleAnimSpriteSheet_188, 0x0400, ANIM_TAG_WHITE_SHADOW},
- {gBattleAnimSpriteSheet_189, 0x0200, ANIM_TAG_TEAL_ALERT},
- {gBattleAnimSpriteSheet_190, 0x0800, ANIM_TAG_OPENING_EYE},
- {gBattleAnimSpriteSheet_191, 0x0800, ANIM_TAG_ROUND_WHITE_HALO},
- {gBattleAnimSpriteSheet_192, 0x0800, ANIM_TAG_FANG_ATTACK},
- {gBattleAnimSpriteSheet_193, 0x0200, ANIM_TAG_PURPLE_HAND_OUTLINE},
- {gBattleAnimSpriteSheet_194, 0x0800, ANIM_TAG_MOON},
- {gBattleAnimSpriteSheet_195, 0x0200, ANIM_TAG_GREEN_SPARKLE},
- {gBattleAnimSpriteSheet_196, 0x0800, ANIM_TAG_SPIRAL},
- {gBattleAnimSpriteSheet_197, 0x0200, ANIM_TAG_SNORE_Z},
- {gBattleAnimSpriteSheet_198, 0x0800, ANIM_TAG_EXPLOSION},
- {gBattleAnimSpriteSheet_199, 0x0400, ANIM_TAG_NAIL},
- {gBattleAnimSpriteSheet_200, 0x0200, ANIM_TAG_GHOSTLY_SPIRIT},
- {gBattleAnimSpriteSheet_201, 0x0a80, ANIM_TAG_WARM_ROCK},
- {gBattleAnimSpriteSheet_202, 0x0600, ANIM_TAG_BREAKING_EGG},
- {gBattleAnimSpriteSheet_203, 0x0800, ANIM_TAG_THIN_RING},
- {gBattleAnimSpriteSheet_204, 0x0200, ANIM_TAG_UNUSED_PUNCH_IMPACT},
- {gBattleAnimSpriteSheet_205, 0x0600, ANIM_TAG_BELL},
- {gBattleAnimSpriteSheet_206, 0x0800, ANIM_TAG_MUSIC_NOTES_2},
- {gBattleAnimSpriteSheet_207, 0x0180, ANIM_TAG_SPEED_DUST},
- {gBattleAnimSpriteSheet_208, 0x0800, ANIM_TAG_TORN_METAL},
- {gBattleAnimSpriteSheet_209, 0x0800, ANIM_TAG_THOUGHT_BUBBLE},
- {gBattleAnimSpriteSheet_210, 0x0080, ANIM_TAG_MAGENTA_HEART},
- {gBattleAnimSpriteSheet_211, 0x0080, ANIM_TAG_ELECTRIC_ORBS},
- {gBattleAnimSpriteSheet_212, 0x0800, ANIM_TAG_CIRCLE_OF_LIGHT},
- {gBattleAnimSpriteSheet_213, 0x0800, ANIM_TAG_ELECTRICITY},
- {gBattleAnimSpriteSheet_214, 0x0600, ANIM_TAG_FINGER_2},
- {gBattleAnimSpriteSheet_215, 0x0600, ANIM_TAG_MOVEMENT_WAVES},
- {gBattleAnimSpriteSheet_210, 0x0080, ANIM_TAG_RED_HEART},
- {gBattleAnimSpriteSheet_217, 0x0080, ANIM_TAG_RED_ORB},
- {gBattleAnimSpriteSheet_218, 0x0180, ANIM_TAG_EYE_SPARKLE},
- {gBattleAnimSpriteSheet_210, 0x0080, ANIM_TAG_PINK_HEART},
- {gBattleAnimSpriteSheet_220, 0x0200, ANIM_TAG_ANGEL},
- {gBattleAnimSpriteSheet_221, 0x0400, ANIM_TAG_DEVIL},
- {gBattleAnimSpriteSheet_222, 0x0a00, ANIM_TAG_SWIPE},
- {gBattleAnimSpriteSheet_223, 0x0800, ANIM_TAG_ROOTS},
- {gBattleAnimSpriteSheet_224, 0x0200, ANIM_TAG_ITEM_BAG},
- {gBattleAnimSpriteSheet_225, 0x0400, ANIM_TAG_JAGGED_MUSIC_NOTE},
- {gBattleAnimSpriteSheet_226, 0x0080, ANIM_TAG_POKEBALL},
- {gBattleAnimSpriteSheet_227, 0x0800, ANIM_TAG_SPOTLIGHT},
- {gBattleAnimSpriteSheet_228, 0x0200, ANIM_TAG_LETTER_Z},
- {gBattleAnimSpriteSheet_229, 0x0300, ANIM_TAG_RAPID_SPIN},
- {gBattleAnimSpriteSheet_230, 0x0800, ANIM_TAG_TRI_FORCE_TRIANGLE},
- {gBattleAnimSpriteSheet_231, 0x0380, ANIM_TAG_WISP_ORB},
- {gBattleAnimSpriteSheet_232, 0x0800, ANIM_TAG_WISP_FIRE},
- {gBattleAnimSpriteSheet_233, 0x00c0, ANIM_TAG_GOLD_STARS},
- {gBattleAnimSpriteSheet_234, 0x0800, ANIM_TAG_ECLIPSING_ORB},
- {gBattleAnimSpriteSheet_235, 0x0060, ANIM_TAG_GRAY_ORB},
- {gBattleAnimSpriteSheet_235, 0x0060, ANIM_TAG_BLUE_ORB},
- {gBattleAnimSpriteSheet_235, 0x0060, ANIM_TAG_RED_ORB_2},
- {gBattleAnimSpriteSheet_238, 0x0080, ANIM_TAG_PINK_PETAL},
- {gBattleAnimSpriteSheet_239, 0x0180, ANIM_TAG_PAIN_SPLIT},
- {gBattleAnimSpriteSheet_240, 0x0180, ANIM_TAG_CONFETTI},
- {gBattleAnimSpriteSheet_241, 0x0200, ANIM_TAG_GREEN_STAR},
- {gBattleAnimSpriteSheet_242, 0x0200, ANIM_TAG_PINK_CLOUD},
- {gBattleAnimSpriteSheet_243, 0x0020, ANIM_TAG_SWEAT_DROP},
- {gBattleAnimSpriteSheet_244, 0x0400, ANIM_TAG_GUARD_RING},
- {gBattleAnimSpriteSheet_245, 0x0600, ANIM_TAG_PURPLE_SCRATCH},
- {gBattleAnimSpriteSheet_246, 0x1000, ANIM_TAG_PURPLE_SWIPE},
- {gBattleAnimSpriteSheet_247, 0x0400, ANIM_TAG_TAG_HAND},
- {gBattleAnimSpriteSheet_248, 0x0020, ANIM_TAG_SMALL_RED_EYE},
- {gBattleAnimSpriteSheet_249, 0x0080, ANIM_TAG_HOLLOW_ORB},
- {gBattleAnimSpriteSheet_250, 0x0800, ANIM_TAG_X_SIGN},
- {gBattleAnimSpriteSheet_251, 0x0080, ANIM_TAG_BLUEGREEN_ORB},
- {gBattleAnimSpriteSheet_252, 0x0200, ANIM_TAG_PAW_PRINT},
- {gBattleAnimSpriteSheet_253, 0x0400, ANIM_TAG_PURPLE_FLAME},
- {gBattleAnimSpriteSheet_254, 0x0200, ANIM_TAG_RED_BALL},
- {gBattleAnimSpriteSheet_255, 0x0200, ANIM_TAG_SMELLINGSALT_EFFECT},
- {gBattleAnimSpriteSheet_256, 0x0800, ANIM_TAG_METEOR},
- {gBattleAnimSpriteSheet_257, 0x0280, ANIM_TAG_FLAT_ROCK},
- {gBattleAnimSpriteSheet_258, 0x0200, ANIM_TAG_MAGNIFYING_GLASS},
- {gBattleAnimSpriteSheet_149, 0x0200, ANIM_TAG_BROWN_ORB},
- {gBattleAnimSpriteSheet_260, 0x0400, ANIM_TAG_METAL_SOUND_WAVES},
- {gBattleAnimSpriteSheet_261, 0x0200, ANIM_TAG_FLYING_DIRT},
- {gBattleAnimSpriteSheet_262, 0x0200, ANIM_TAG_ICICLE_SPEAR},
- {gBattleAnimSpriteSheet_263, 0x0080, ANIM_TAG_HAIL},
- {gBattleAnimSpriteSheet_264, 0x0020, ANIM_TAG_GLOWY_RED_ORB},
- {gBattleAnimSpriteSheet_264, 0x0020, ANIM_TAG_GLOWY_GREEN_ORB},
- {gBattleAnimSpriteSheet_266, 0x0080, ANIM_TAG_GREEN_SPIKE},
- {gBattleAnimSpriteSheet_212, 0x0800, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT},
- {gBattleAnimSpriteSheet_264, 0x0020, ANIM_TAG_GLOWY_BLUE_ORB},
- {gBattleAnimSpriteSheet_269, 0x0080, ANIM_TAG_UNUSED_RED_BRICK},
- {gBattleAnimSpriteSheet_270, 0x0400, ANIM_TAG_WHITE_FEATHER},
- {gBattleAnimSpriteSheet_271, 0x0080, ANIM_TAG_SPARKLE_6},
- {gBattleAnimSpriteSheet_272, 0x0800, ANIM_TAG_SPLASH},
- {gBattleAnimSpriteSheet_273, 0x0020, ANIM_TAG_SWEAT_BEAD},
- {gBattleAnimSpriteSheet_274, 0x0800, ANIM_TAG_UNUSED_GEM_1},
- {gBattleAnimSpriteSheet_275, 0x0800, ANIM_TAG_UNUSED_GEM_2},
- {gBattleAnimSpriteSheet_276, 0x0800, ANIM_TAG_UNUSED_GEM_3},
- {gBattleAnimSpriteSheet_277, 0x1000, ANIM_TAG_SLAM_HIT_2},
- {gBattleAnimSpriteSheet_278, 0x0800, ANIM_TAG_RECYCLE},
- {gBattleAnimSpriteSheet_279, 0x00a0, ANIM_TAG_UNUSED_RED_PARTICLES},
- {gBattleAnimSpriteSheet_280, 0x0800, ANIM_TAG_PROTECT},
- {gBattleAnimSpriteSheet_281, 0x0200, ANIM_TAG_DIRT_MOUND},
- {gBattleAnimSpriteSheet_282, 0x0600, ANIM_TAG_SHOCK_3},
- {gBattleAnimSpriteSheet_283, 0x0200, ANIM_TAG_WEATHER_BALL},
- {gBattleAnimSpriteSheet_284, 0x0800, ANIM_TAG_BIRD},
- {gBattleAnimSpriteSheet_285, 0x0200, ANIM_TAG_CROSS_IMPACT},
- {gBattleAnimSpriteSheet_183, 0x0800, ANIM_TAG_SLASH_2},
- {gBattleAnimSpriteSheet_056, 0x1000, ANIM_TAG_WHIP_HIT},
- {gBattleAnimSpriteSheet_163, 0x0100, ANIM_TAG_BLUE_RING_2},
+ {gBattleAnimSpriteGfx_Bone, 0x0200, ANIM_TAG_BONE},
+ {gBattleAnimSpriteGfx_Spark, 0x0300, ANIM_TAG_SPARK},
+ {gBattleAnimSpriteGfx_Pencil, 0x0200, ANIM_TAG_PENCIL},
+ {gBattleAnimSpriteGfx_AirWave, 0x0100, ANIM_TAG_AIR_WAVE},
+ {gBattleAnimSpriteGfx_Orb, 0x0200, ANIM_TAG_ORB},
+ {gBattleAnimSpriteGfx_Sword, 0x0400, ANIM_TAG_SWORD},
+ {gBattleAnimSpriteGfx_Seed, 0x0180, ANIM_TAG_SEED},
+ {gBattleAnimSpriteGfx_Explosion6, 0x0800, ANIM_TAG_EXPLOSION_6},
+ {gBattleAnimSpriteGfx_PinkOrb, 0x0020, ANIM_TAG_PINK_ORB},
+ {gBattleAnimSpriteGfx_Gust, 0x0400, ANIM_TAG_GUST},
+ {gBattleAnimSpriteGfx_IceCube, 0x1200, ANIM_TAG_ICE_CUBE},
+ {gBattleAnimSpriteGfx_Spark2, 0x0180, ANIM_TAG_SPARK_2},
+ {gBattleAnimSpriteGfx_Orange, 0x0080, ANIM_TAG_ORANGE},
+ {gBattleAnimSpriteGfx_YellowBall, 0x0080, ANIM_TAG_YELLOW_BALL},
+ {gBattleAnimSpriteGfx_LockOn, 0x0280, ANIM_TAG_LOCK_ON},
+ {gBattleAnimSpriteGfx_TiedBag, 0x0080, ANIM_TAG_TIED_BAG},
+ {gBattleAnimSpriteGfx_BlackSmoke, 0x0100, ANIM_TAG_BLACK_SMOKE},
+ {gBattleAnimSpriteGfx_BlackBall, 0x0020, ANIM_TAG_BLACK_BALL},
+ {gBattleAnimSpriteGfx_Conversion, 0x0080, ANIM_TAG_CONVERSION},
+ {gBattleAnimSpriteGfx_Glass, 0x0400, ANIM_TAG_GLASS},
+ {gBattleAnimSpriteGfx_HornHit, 0x0200, ANIM_TAG_HORN_HIT},
+ {gBattleAnimSpriteGfx_Hit, 0x0A00, ANIM_TAG_HIT},
+ {gBattleAnimSpriteGfx_Hit, 0x0A00, ANIM_TAG_HIT_2},
+ {gBattleAnimSpriteGfx_BlueShards, 0x0380, ANIM_TAG_BLUE_SHARDS},
+ {gBattleAnimSpriteGfx_ClosingEye, 0x0300, ANIM_TAG_CLOSING_EYE},
+ {gBattleAnimSpriteGfx_WavingHand, 0x0A00, ANIM_TAG_WAVING_HAND},
+ {gBattleAnimSpriteGfx_HitDuplicate, 0x0A00, ANIM_TAG_HIT_DUPLICATE},
+ {gBattleAnimSpriteGfx_Leer, 0x0A00, ANIM_TAG_LEER},
+ {gBattleAnimSpriteGfx_BlueBurst, 0x0A00, ANIM_TAG_BLUE_BURST},
+ {gBattleAnimSpriteGfx_SmallEmber, 0x0A00, ANIM_TAG_SMALL_EMBER},
+ {gBattleAnimSpriteGfx_GraySmoke, 0x0A00, ANIM_TAG_GRAY_SMOKE},
+ {gBattleAnimSpriteGfx_BlueStar, 0x0E00, ANIM_TAG_BLUE_STAR},
+ {gBattleAnimSpriteGfx_BubbleBurst, 0x0380, ANIM_TAG_BUBBLE_BURST},
+ {gBattleAnimSpriteGfx_Fire, 0x1000, ANIM_TAG_FIRE},
+ {gBattleAnimSpriteGfx_SpinningFire, 0x0800, ANIM_TAG_SPINNING_FIRE},
+ {gBattleAnimSpriteGfx_FirePlume, 0x0A00, ANIM_TAG_FIRE_PLUME},
+ {gBattleAnimSpriteGfx_Lightning2, 0x0800, ANIM_TAG_LIGHTNING_2},
+ {gBattleAnimSpriteGfx_Lightning, 0x0A00, ANIM_TAG_LIGHTNING},
+ {gBattleAnimSpriteGfx_ClawSlash2, 0x0A00, ANIM_TAG_CLAW_SLASH_2},
+ {gBattleAnimSpriteGfx_ClawSlash, 0x0A00, ANIM_TAG_CLAW_SLASH},
+ {gBattleAnimSpriteGfx_Scratch3, 0x0A00, ANIM_TAG_SCRATCH_3},
+ {gBattleAnimSpriteGfx_Scratch2, 0x0A00, ANIM_TAG_SCRATCH_2},
+ {gBattleAnimSpriteGfx_BubbleBurst2, 0x0A00, ANIM_TAG_BUBBLE_BURST_2},
+ {gBattleAnimSpriteGfx_IceChunk, 0x0A00, ANIM_TAG_ICE_CHUNK},
+ {gBattleAnimSpriteGfx_Glass2, 0x0A00, ANIM_TAG_GLASS_2},
+ {gBattleAnimSpriteGfx_PinkHeart2, 0x0A00, ANIM_TAG_PINK_HEART_2},
+ {gBattleAnimSpriteGfx_SapDrip, 0x1000, ANIM_TAG_SAP_DRIP},
+ {gBattleAnimSpriteGfx_SapDrip, 0x1000, ANIM_TAG_SAP_DRIP_2},
+ {gBattleAnimSpriteGfx_Sparkle1, 0x1000, ANIM_TAG_SPARKLE_1},
+ {gBattleAnimSpriteGfx_Sparkle1, 0x1000, ANIM_TAG_SPARKLE_2},
+ {gBattleAnimSpriteGfx_HumanoidFoot, 0x0200, ANIM_TAG_HUMANOID_FOOT},
+ {gBattleAnimSpriteGfx_MonsterFoot, 0x0200, ANIM_TAG_MONSTER_FOOT},
+ {gBattleAnimSpriteGfx_HumanoidHand, 0x0200, ANIM_TAG_HUMANOID_HAND},
+ {gBattleAnimSpriteGfx_NoiseLine, 0x0800, ANIM_TAG_NOISE_LINE},
+ {gBattleAnimSpriteGfx_YellowUnk, 0x0080, ANIM_TAG_YELLOW_UNK},
+ {gBattleAnimSpriteGfx_RedFist, 0x0200, ANIM_TAG_RED_FIST},
+ {gBattleAnimSpriteGfx_SlamHit, 0x1000, ANIM_TAG_SLAM_HIT},
+ {gBattleAnimSpriteGfx_Ring, 0x0180, ANIM_TAG_RING},
+ {gBattleAnimSpriteGfx_Rocks, 0x0C00, ANIM_TAG_ROCKS},
+ {gBattleAnimSpriteGfx_Z, 0x0100, ANIM_TAG_Z},
+ {gBattleAnimSpriteGfx_YellowUnk2, 0x0040, ANIM_TAG_YELLOW_UNK_2},
+ {gBattleAnimSpriteGfx_AirSlash, 0x0180, ANIM_TAG_AIR_SLASH},
+ {gBattleAnimSpriteGfx_SpinningGreenOrbs, 0x0800, ANIM_TAG_SPINNING_GREEN_ORBS},
+ {gBattleAnimSpriteGfx_Leaf, 0x0480, ANIM_TAG_LEAF},
+ {gBattleAnimSpriteGfx_Finger, 0x0200, ANIM_TAG_FINGER},
+ {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_POISON_POWDER},
+ {gBattleAnimSpriteGfx_BrownTriangle, 0x0100, ANIM_TAG_BROWN_TRIANGLE},
+ {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_SLEEP_POWDER},
+ {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_STUN_SPORE},
+ {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_POWDER},
+ {gBattleAnimSpriteGfx_Sparkle3, 0x0200, ANIM_TAG_SPARKLE_3},
+ {gBattleAnimSpriteGfx_Sparkle4, 0x0A00, ANIM_TAG_SPARKLE_4},
+ {gBattleAnimSpriteGfx_MusicNotes, 0x0300, ANIM_TAG_MUSIC_NOTES},
+ {gBattleAnimSpriteGfx_Duck, 0x0180, ANIM_TAG_DUCK},
+ {gBattleAnimSpriteGfx_MudSand, 0x00A0, ANIM_TAG_MUD_SAND},
+ {gBattleAnimSpriteGfx_Alert, 0x0700, ANIM_TAG_ALERT},
+ {gBattleAnimSpriteGfx_BlueFlames, 0x0400, ANIM_TAG_BLUE_FLAMES},
+ {gBattleAnimSpriteGfx_BlueFlames2, 0x0200, ANIM_TAG_BLUE_FLAMES_2},
+ {gBattleAnimSpriteGfx_Shock4, 0x0300, ANIM_TAG_SHOCK_4},
+ {gBattleAnimSpriteGfx_Shock, 0x0C00, ANIM_TAG_SHOCK},
+ {gBattleAnimSpriteGfx_Bell2, 0x0A00, ANIM_TAG_BELL_2},
+ {gBattleAnimSpriteGfx_PinkGlove, 0x0080, ANIM_TAG_PINK_GLOVE},
+ {gBattleAnimSpriteGfx_BlueLines, 0x0040, ANIM_TAG_BLUE_LINES},
+ {gBattleAnimSpriteGfx_Impact3, 0x0E00, ANIM_TAG_IMPACT_3},
+ {gBattleAnimSpriteGfx_Impact2, 0x0E00, ANIM_TAG_IMPACT_2},
+ {gBattleAnimSpriteGfx_Reticle, 0x0280, ANIM_TAG_RETICLE},
+ {gBattleAnimSpriteGfx_Breath, 0x0200, ANIM_TAG_BREATH},
+ {gBattleAnimSpriteGfx_Anger, 0x0080, ANIM_TAG_ANGER},
+ {gBattleAnimSpriteGfx_Snowball, 0x00C0, ANIM_TAG_SNOWBALL},
+ {gBattleAnimSpriteGfx_Vine, 0x0A00, ANIM_TAG_VINE},
+ {gBattleAnimSpriteGfx_Sword2, 0x0200, ANIM_TAG_SWORD_2},
+ {gBattleAnimSpriteGfx_Clapping, 0x0180, ANIM_TAG_CLAPPING},
+ {gBattleAnimSpriteGfx_RedTube, 0x0080, ANIM_TAG_RED_TUBE},
+ {gBattleAnimSpriteGfx_Amnesia, 0x1000, ANIM_TAG_AMNESIA},
+ {gBattleAnimSpriteGfx_String2, 0x0A00, ANIM_TAG_STRING_2},
+ {gBattleAnimSpriteGfx_Pencil2, 0x0180, ANIM_TAG_PENCIL_2},
+ {gBattleAnimSpriteGfx_Petal, 0x0380, ANIM_TAG_PETAL},
+ {gBattleAnimSpriteGfx_BentSpoon, 0x0C00, ANIM_TAG_BENT_SPOON},
+ {gBattleAnimSpriteGfx_Web, 0x0200, ANIM_TAG_WEB},
+ {gBattleAnimSpriteGfx_MilkBottle, 0x0200, ANIM_TAG_MILK_BOTTLE},
+ {gBattleAnimSpriteGfx_Coin, 0x0200, ANIM_TAG_COIN},
+ {gBattleAnimSpriteGfx_CrackedEgg, 0x0200, ANIM_TAG_CRACKED_EGG},
+ {gBattleAnimSpriteGfx_HatchedEgg, 0x0400, ANIM_TAG_HATCHED_EGG},
+ {gBattleAnimSpriteGfx_FreshEgg, 0x0080, ANIM_TAG_FRESH_EGG},
+ {gBattleAnimSpriteGfx_Fangs, 0x0400, ANIM_TAG_FANGS},
+ {gBattleAnimSpriteGfx_Explosion2, 0x0c00, ANIM_TAG_EXPLOSION_2},
+ {gBattleAnimSpriteGfx_Explosion3, 0x0200, ANIM_TAG_EXPLOSION_3},
+ {gBattleAnimSpriteGfx_WaterDroplet, 0x1000, ANIM_TAG_WATER_DROPLET},
+ {gBattleAnimSpriteGfx_WaterDroplet2, 0x0a00, ANIM_TAG_WATER_DROPLET_2},
+ {gBattleAnimSpriteGfx_Seed2, 0x0020, ANIM_TAG_SEED_2},
+ {gBattleAnimSpriteGfx_Sprout, 0x0e00, ANIM_TAG_SPROUT},
+ {gBattleAnimSpriteGfx_RedWand, 0x0080, ANIM_TAG_RED_WAND},
+ {gBattleAnimSpriteGfx_PurpleGreenUnk, 0x0a00, ANIM_TAG_PURPLE_GREEN_UNK},
+ {gBattleAnimSpriteGfx_WaterColumn, 0x0400, ANIM_TAG_WATER_COLUMN},
+ {gBattleAnimSpriteGfx_MudUnk, 0x0200, ANIM_TAG_MUD_UNK},
+ {gBattleAnimSpriteGfx_RainDrops, 0x0700, ANIM_TAG_RAIN_DROPS},
+ {gBattleAnimSpriteGfx_FurySwipes, 0x0800, ANIM_TAG_FURY_SWIPES},
+ {gBattleAnimSpriteGfx_Vine2, 0x0a00, ANIM_TAG_VINE_2},
+ {gBattleAnimSpriteGfx_Teeth, 0x0600, ANIM_TAG_TEETH},
+ {gBattleAnimSpriteGfx_Bone2, 0x0800, ANIM_TAG_BONE_2},
+ {gBattleAnimSpriteGfx_WhiteBag, 0x0200, ANIM_TAG_WHITE_BAG},
+ {gBattleAnimSpriteGfx_Unknown, 0x0040, ANIM_TAG_UNKNOWN},
+ {gBattleAnimSpriteGfx_PurpleCoral, 0x0180, ANIM_TAG_PURPLE_CORAL},
+ {gBattleAnimSpriteGfx_PurpleDroplet, 0x0600, ANIM_TAG_PURPLE_DROPLET},
+ {gBattleAnimSpriteGfx_Shock2, 0x0600, ANIM_TAG_SHOCK_2},
+ {gBattleAnimSpriteGfx_ClosingEye2, 0x0200, ANIM_TAG_CLOSING_EYE_2},
+ {gBattleAnimSpriteGfx_MetalBall, 0x0080, ANIM_TAG_METAL_BALL},
+ {gBattleAnimSpriteGfx_MonsterDoll, 0x0200, ANIM_TAG_MONSTER_DOLL},
+ {gBattleAnimSpriteGfx_Whirlwind, 0x0800, ANIM_TAG_WHIRLWIND},
+ {gBattleAnimSpriteGfx_Whirlwind2, 0x0080, ANIM_TAG_WHIRLWIND_2},
+ {gBattleAnimSpriteGfx_Explosion4, 0x0a00, ANIM_TAG_EXPLOSION_4},
+ {gBattleAnimSpriteGfx_Explosion5, 0x0280, ANIM_TAG_EXPLOSION_5},
+ {gBattleAnimSpriteGfx_Tongue, 0x0280, ANIM_TAG_TONGUE},
+ {gBattleAnimSpriteGfx_Smoke, 0x0100, ANIM_TAG_SMOKE},
+ {gBattleAnimSpriteGfx_Smoke2, 0x0200, ANIM_TAG_SMOKE_2},
+ {gBattleAnimSpriteGfx_Impact, 0x0200, ANIM_TAG_IMPACT},
+ {gBattleAnimSpriteGfx_CircleImpact, 0x0020, ANIM_TAG_CIRCLE_IMPACT},
+ {gBattleAnimSpriteGfx_Scratch, 0x0a00, ANIM_TAG_SCRATCH},
+ {gBattleAnimSpriteGfx_Cut, 0x0800, ANIM_TAG_CUT},
+ {gBattleAnimSpriteGfx_SharpTeeth, 0x0800, ANIM_TAG_SHARP_TEETH},
+ {gBattleAnimSpriteGfx_RainbowRings, 0x00c0, ANIM_TAG_RAINBOW_RINGS},
+ {gBattleAnimSpriteGfx_IceCrystals, 0x01c0, ANIM_TAG_ICE_CRYSTALS},
+ {gBattleAnimSpriteGfx_IceSpikes, 0x0100, ANIM_TAG_ICE_SPIKES},
+ {gBattleAnimSpriteGfx_HandsAndFeet, 0x0800, ANIM_TAG_HANDS_AND_FEET},
+ {gBattleAnimSpriteGfx_MistCloud, 0x0200, ANIM_TAG_MIST_CLOUD},
+ {gBattleAnimSpriteGfx_Clamp, 0x0800, ANIM_TAG_CLAMP},
+ {gBattleAnimSpriteGfx_Bubble, 0x0180, ANIM_TAG_BUBBLE},
+ {gBattleAnimSpriteGfx_Orbs, 0x0180, ANIM_TAG_ORBS},
+ {gBattleAnimSpriteGfx_WaterImpact, 0x0200, ANIM_TAG_WATER_IMPACT},
+ {gBattleAnimSpriteGfx_WaterOrb, 0x0200, ANIM_TAG_WATER_ORB},
+ {gBattleAnimSpriteGfx_PoisonBubble, 0x0180, ANIM_TAG_POISON_BUBBLE},
+ {gBattleAnimSpriteGfx_ToxicBubble, 0x0400, ANIM_TAG_TOXIC_BUBBLE},
+ {gBattleAnimSpriteGfx_Spikes, 0x0080, ANIM_TAG_SPIKES},
+ {gBattleAnimSpriteGfx_HornHit2, 0x0100, ANIM_TAG_HORN_HIT_2},
+ {gBattleAnimSpriteGfx_AirWave2, 0x0100, ANIM_TAG_AIR_WAVE_2},
+ {gBattleAnimSpriteGfx_SmallBubbles, 0x0140, ANIM_TAG_SMALL_BUBBLES},
+ {gBattleAnimSpriteGfx_RoundShadow, 0x0800, ANIM_TAG_ROUND_SHADOW},
+ {gBattleAnimSpriteGfx_Sunlight, 0x0200, ANIM_TAG_SUNLIGHT},
+ {gBattleAnimSpriteGfx_Spore, 0x0100, ANIM_TAG_SPORE},
+ {gBattleAnimSpriteGfx_Flower, 0x00a0, ANIM_TAG_FLOWER},
+ {gBattleAnimSpriteGfx_RazorLeaf, 0x0100, ANIM_TAG_RAZOR_LEAF},
+ {gBattleAnimSpriteGfx_Needle, 0x0080, ANIM_TAG_NEEDLE},
+ {gBattleAnimSpriteGfx_WhirlwindLines, 0x0300, ANIM_TAG_WHIRLWIND_LINES},
+ {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_GOLD_RING},
+ {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_PURPLE_RING},
+ {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_BLUE_RING},
+ {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_GREEN_LIGHT_WALL},
+ {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_BLUE_LIGHT_WALL},
+ {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_RED_LIGHT_WALL},
+ {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_GRAY_LIGHT_WALL},
+ {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_ORANGE_LIGHT_WALL},
+ {gBattleAnimSpriteGfx_BlackBall2, 0x0080, ANIM_TAG_BLACK_BALL_2},
+ {gBattleAnimSpriteGfx_MistCloud, 0x0200, ANIM_TAG_PURPLE_GAS_CLOUD},
+ {gBattleAnimSpriteGfx_SparkH, 0x0200, ANIM_TAG_SPARK_H},
+ {gBattleAnimSpriteGfx_YellowStar, 0x0200, ANIM_TAG_YELLOW_STAR},
+ {gBattleAnimSpriteGfx_LargeFreshEgg, 0x0080, ANIM_TAG_LARGE_FRESH_EGG},
+ {gBattleAnimSpriteGfx_ShadowBall, 0x0200, ANIM_TAG_SHADOW_BALL},
+ {gBattleAnimSpriteGfx_Lick, 0x0500, ANIM_TAG_LICK},
+ {gBattleAnimSpriteGfx_VoidLines, 0x0800, ANIM_TAG_VOID_LINES},
+ {gBattleAnimSpriteGfx_String, 0x0400, ANIM_TAG_STRING},
+ {gBattleAnimSpriteGfx_WebThread, 0x0020, ANIM_TAG_WEB_THREAD},
+ {gBattleAnimSpriteGfx_SpiderWeb, 0x0800, ANIM_TAG_SPIDER_WEB},
+ {gBattleAnimSpriteGfx_Lightbulb, 0x0100, ANIM_TAG_LIGHTBULB},
+ {gBattleAnimSpriteGfx_Slash, 0x0800, ANIM_TAG_SLASH},
+ {gBattleAnimSpriteGfx_FocusEnergy, 0x0400, ANIM_TAG_FOCUS_ENERGY},
+ {gBattleAnimSpriteGfx_SphereToCube, 0x0a00, ANIM_TAG_SPHERE_TO_CUBE},
+ {gBattleAnimSpriteGfx_Tendrils, 0x1000, ANIM_TAG_TENDRILS},
+ {gBattleAnimSpriteGfx_Eye, 0x0800, ANIM_TAG_EYE},
+ {gBattleAnimSpriteGfx_WhiteShadow, 0x0400, ANIM_TAG_WHITE_SHADOW},
+ {gBattleAnimSpriteGfx_TealAlert, 0x0200, ANIM_TAG_TEAL_ALERT},
+ {gBattleAnimSpriteGfx_OpeningEye, 0x0800, ANIM_TAG_OPENING_EYE},
+ {gBattleAnimSpriteGfx_RoundWhiteHalo, 0x0800, ANIM_TAG_ROUND_WHITE_HALO},
+ {gBattleAnimSpriteGfx_FangAttack, 0x0800, ANIM_TAG_FANG_ATTACK},
+ {gBattleAnimSpriteGfx_PurpleHandOutline, 0x0200, ANIM_TAG_PURPLE_HAND_OUTLINE},
+ {gBattleAnimSpriteGfx_Moon, 0x0800, ANIM_TAG_MOON},
+ {gBattleAnimSpriteGfx_GreenSparkle, 0x0200, ANIM_TAG_GREEN_SPARKLE},
+ {gBattleAnimSpriteGfx_Spiral, 0x0800, ANIM_TAG_SPIRAL},
+ {gBattleAnimSpriteGfx_SnoreZ, 0x0200, ANIM_TAG_SNORE_Z},
+ {gBattleAnimSpriteGfx_Explosion, 0x0800, ANIM_TAG_EXPLOSION},
+ {gBattleAnimSpriteGfx_Nail, 0x0400, ANIM_TAG_NAIL},
+ {gBattleAnimSpriteGfx_GhostlySpirit, 0x0200, ANIM_TAG_GHOSTLY_SPIRIT},
+ {gBattleAnimSpriteGfx_WarmRock, 0x0a80, ANIM_TAG_WARM_ROCK},
+ {gBattleAnimSpriteGfx_BreakingEgg, 0x0600, ANIM_TAG_BREAKING_EGG},
+ {gBattleAnimSpriteGfx_ThinRing, 0x0800, ANIM_TAG_THIN_RING},
+ {gBattleAnimSpriteGfx_PunchImpact, 0x0200, ANIM_TAG_PUNCH_IMPACT},
+ {gBattleAnimSpriteGfx_Bell, 0x0600, ANIM_TAG_BELL},
+ {gBattleAnimSpriteGfx_MusicNotes2, 0x0800, ANIM_TAG_MUSIC_NOTES_2},
+ {gBattleAnimSpriteGfx_SpeedDust, 0x0180, ANIM_TAG_SPEED_DUST},
+ {gBattleAnimSpriteGfx_TornMetal, 0x0800, ANIM_TAG_TORN_METAL},
+ {gBattleAnimSpriteGfx_ThoughtBubble, 0x0800, ANIM_TAG_THOUGHT_BUBBLE},
+ {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_MAGENTA_HEART},
+ {gBattleAnimSpriteGfx_ElectricOrbs, 0x0080, ANIM_TAG_ELECTRIC_ORBS},
+ {gBattleAnimSpriteGfx_CircleOfLight, 0x0800, ANIM_TAG_CIRCLE_OF_LIGHT},
+ {gBattleAnimSpriteGfx_Electricity, 0x0800, ANIM_TAG_ELECTRICITY},
+ {gBattleAnimSpriteGfx_Finger2, 0x0600, ANIM_TAG_FINGER_2},
+ {gBattleAnimSpriteGfx_MovementWaves, 0x0600, ANIM_TAG_MOVEMENT_WAVES},
+ {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_RED_HEART},
+ {gBattleAnimSpriteGfx_RedOrb, 0x0080, ANIM_TAG_RED_ORB},
+ {gBattleAnimSpriteGfx_EyeSparkle, 0x0180, ANIM_TAG_EYE_SPARKLE},
+ {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_PINK_HEART},
+ {gBattleAnimSpriteGfx_Angel, 0x0200, ANIM_TAG_ANGEL},
+ {gBattleAnimSpriteGfx_Devil, 0x0400, ANIM_TAG_DEVIL},
+ {gBattleAnimSpriteGfx_Swipe, 0x0a00, ANIM_TAG_SWIPE},
+ {gBattleAnimSpriteGfx_Roots, 0x0800, ANIM_TAG_ROOTS},
+ {gBattleAnimSpriteGfx_ItemBag, 0x0200, ANIM_TAG_ITEM_BAG},
+ {gBattleAnimSpriteGfx_JaggedMusicNote, 0x0400, ANIM_TAG_JAGGED_MUSIC_NOTE},
+ {gBattleAnimSpriteGfx_Pokeball, 0x0080, ANIM_TAG_POKEBALL},
+ {gBattleAnimSpriteGfx_Spotlight, 0x0800, ANIM_TAG_SPOTLIGHT},
+ {gBattleAnimSpriteGfx_LetterZ, 0x0200, ANIM_TAG_LETTER_Z},
+ {gBattleAnimSpriteGfx_RapidSpin, 0x0300, ANIM_TAG_RAPID_SPIN},
+ {gBattleAnimSpriteGfx_TriForceTriangle, 0x0800, ANIM_TAG_TRI_FORCE_TRIANGLE},
+ {gBattleAnimSpriteGfx_WispOrb, 0x0380, ANIM_TAG_WISP_ORB},
+ {gBattleAnimSpriteGfx_WispFire, 0x0800, ANIM_TAG_WISP_FIRE},
+ {gBattleAnimSpriteGfx_GoldStars, 0x00c0, ANIM_TAG_GOLD_STARS},
+ {gBattleAnimSpriteGfx_EclipsingOrb, 0x0800, ANIM_TAG_ECLIPSING_ORB},
+ {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_GRAY_ORB},
+ {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_BLUE_ORB},
+ {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_RED_ORB_2},
+ {gBattleAnimSpriteGfx_PinkPetal, 0x0080, ANIM_TAG_PINK_PETAL},
+ {gBattleAnimSpriteGfx_PainSplit, 0x0180, ANIM_TAG_PAIN_SPLIT},
+ {gBattleAnimSpriteGfx_Confetti, 0x0180, ANIM_TAG_CONFETTI},
+ {gBattleAnimSpriteGfx_GreenStar, 0x0200, ANIM_TAG_GREEN_STAR},
+ {gBattleAnimSpriteGfx_PinkCloud, 0x0200, ANIM_TAG_PINK_CLOUD},
+ {gBattleAnimSpriteGfx_SweatDrop, 0x0020, ANIM_TAG_SWEAT_DROP},
+ {gBattleAnimSpriteGfx_GuardRing, 0x0400, ANIM_TAG_GUARD_RING},
+ {gBattleAnimSpriteGfx_PurpleScratch, 0x0600, ANIM_TAG_PURPLE_SCRATCH},
+ {gBattleAnimSpriteGfx_PurpleSwipe, 0x1000, ANIM_TAG_PURPLE_SWIPE},
+ {gBattleAnimSpriteGfx_TagHand, 0x0400, ANIM_TAG_TAG_HAND},
+ {gBattleAnimSpriteGfx_SmallRedEye, 0x0020, ANIM_TAG_SMALL_RED_EYE},
+ {gBattleAnimSpriteGfx_HollowOrb, 0x0080, ANIM_TAG_HOLLOW_ORB},
+ {gBattleAnimSpriteGfx_XSign, 0x0800, ANIM_TAG_X_SIGN},
+ {gBattleAnimSpriteGfx_BluegreenOrb, 0x0080, ANIM_TAG_BLUEGREEN_ORB},
+ {gBattleAnimSpriteGfx_PawPrint, 0x0200, ANIM_TAG_PAW_PRINT},
+ {gBattleAnimSpriteGfx_PurpleFlame, 0x0400, ANIM_TAG_PURPLE_FLAME},
+ {gBattleAnimSpriteGfx_RedBall, 0x0200, ANIM_TAG_RED_BALL},
+ {gBattleAnimSpriteGfx_SmellingsaltEffect, 0x0200, ANIM_TAG_SMELLINGSALT_EFFECT},
+ {gBattleAnimSpriteGfx_Meteor, 0x0800, ANIM_TAG_METEOR},
+ {gBattleAnimSpriteGfx_FlatRock, 0x0280, ANIM_TAG_FLAT_ROCK},
+ {gBattleAnimSpriteGfx_MagnifyingGlass, 0x0200, ANIM_TAG_MAGNIFYING_GLASS},
+ {gBattleAnimSpriteGfx_WaterOrb, 0x0200, ANIM_TAG_BROWN_ORB},
+ {gBattleAnimSpriteGfx_MetalSoundWaves, 0x0400, ANIM_TAG_METAL_SOUND_WAVES},
+ {gBattleAnimSpriteGfx_FlyingDirt, 0x0200, ANIM_TAG_FLYING_DIRT},
+ {gBattleAnimSpriteGfx_IcicleSpear, 0x0200, ANIM_TAG_ICICLE_SPEAR},
+ {gBattleAnimSpriteGfx_Hail, 0x0080, ANIM_TAG_HAIL},
+ {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_RED_ORB},
+ {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_GREEN_ORB},
+ {gBattleAnimSpriteGfx_GreenSpike, 0x0080, ANIM_TAG_GREEN_SPIKE},
+ {gBattleAnimSpriteGfx_CircleOfLight, 0x0800, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT},
+ {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_BLUE_ORB},
+ {gBattleAnimSpriteGfx_Pokeblock, 0x0080, ANIM_TAG_POKEBLOCK},
+ {gBattleAnimSpriteGfx_WhiteFeather, 0x0400, ANIM_TAG_WHITE_FEATHER},
+ {gBattleAnimSpriteGfx_Sparkle6, 0x0080, ANIM_TAG_SPARKLE_6},
+ {gBattleAnimSpriteGfx_Splash, 0x0800, ANIM_TAG_SPLASH},
+ {gBattleAnimSpriteGfx_SweatBead, 0x0020, ANIM_TAG_SWEAT_BEAD},
+ {gBattleAnimSpriteGfx_Gem1, 0x0800, ANIM_TAG_GEM_1},
+ {gBattleAnimSpriteGfx_Gem2, 0x0800, ANIM_TAG_GEM_2},
+ {gBattleAnimSpriteGfx_Gem3, 0x0800, ANIM_TAG_GEM_3},
+ {gBattleAnimSpriteGfx_SlamHit2, 0x1000, ANIM_TAG_SLAM_HIT_2},
+ {gBattleAnimSpriteGfx_Recycle, 0x0800, ANIM_TAG_RECYCLE},
+ {gBattleAnimSpriteGfx_RedParticles, 0x00a0, ANIM_TAG_RED_PARTICLES},
+ {gBattleAnimSpriteGfx_Protect, 0x0800, ANIM_TAG_PROTECT},
+ {gBattleAnimSpriteGfx_DirtMound, 0x0200, ANIM_TAG_DIRT_MOUND},
+ {gBattleAnimSpriteGfx_Shock3, 0x0600, ANIM_TAG_SHOCK_3},
+ {gBattleAnimSpriteGfx_WeatherBall, 0x0200, ANIM_TAG_WEATHER_BALL},
+ {gBattleAnimSpriteGfx_Bird, 0x0800, ANIM_TAG_BIRD},
+ {gBattleAnimSpriteGfx_CrossImpact, 0x0200, ANIM_TAG_CROSS_IMPACT},
+ {gBattleAnimSpriteGfx_Slash, 0x0800, ANIM_TAG_SLASH_2},
+ {gBattleAnimSpriteGfx_SlamHit, 0x1000, ANIM_TAG_WHIP_HIT},
+ {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_BLUE_RING_2},
};
-
const struct CompressedSpritePalette gBattleAnimPaletteTable[] =
{
- {gBattleAnimSpritePalette_000, ANIM_TAG_BONE},
- {gBattleAnimSpritePalette_001, ANIM_TAG_SPARK},
- {gBattleAnimSpritePalette_002, ANIM_TAG_PENCIL},
- {gBattleAnimSpritePalette_003, ANIM_TAG_AIR_WAVE},
- {gBattleAnimSpritePalette_004, ANIM_TAG_UNUSED_ORB},
- {gBattleAnimSpritePalette_005, ANIM_TAG_SWORD},
- {gBattleAnimSpritePalette_006, ANIM_TAG_SEED},
- {gBattleAnimSpritePalette_007, ANIM_TAG_UNUSED_EXPLOSION},
- {gBattleAnimSpritePalette_008, ANIM_TAG_UNUSED_PINK_ORB},
- {gBattleAnimSpritePalette_009, ANIM_TAG_GUST},
- {gBattleAnimSpritePalette_010, ANIM_TAG_ICE_CUBE},
- {gBattleAnimSpritePalette_011, ANIM_TAG_SPARK_2},
- {gBattleAnimSpritePalette_012, ANIM_TAG_UNUSED_ORANGE},
- {gBattleAnimSpritePalette_013, ANIM_TAG_YELLOW_BALL},
- {gBattleAnimSpritePalette_014, ANIM_TAG_LOCK_ON},
- {gBattleAnimSpritePalette_015, ANIM_TAG_TIED_BAG},
- {gBattleAnimSpritePalette_016, ANIM_TAG_BLACK_SMOKE},
- {gBattleAnimSpritePalette_016, ANIM_TAG_BLACK_BALL},
- {gBattleAnimSpritePalette_018, ANIM_TAG_CONVERSION},
- {gBattleAnimSpritePalette_019, ANIM_TAG_UNUSED_GLASS},
- {gBattleAnimSpritePalette_020, ANIM_TAG_HORN_HIT},
- {gBattleAnimSpritePalette_021, ANIM_TAG_UNUSED_HIT},
- {gBattleAnimSpritePalette_022, ANIM_TAG_UNUSED_HIT_2},
- {gBattleAnimSpritePalette_023, ANIM_TAG_UNUSED_BLUE_SHARDS},
- {gBattleAnimSpritePalette_024, ANIM_TAG_UNUSED_CLOSING_EYE},
- {gBattleAnimSpritePalette_025, ANIM_TAG_UNUSED_WAVING_HAND},
- {gBattleAnimSpritePalette_026, ANIM_TAG_UNUSED_HIT_DUPLICATE},
- {gBattleAnimSpritePalette_027, ANIM_TAG_LEER},
- {gBattleAnimSpritePalette_028, ANIM_TAG_UNUSED_BLUE_BURST},
- {gBattleAnimSpritePalette_029, ANIM_TAG_SMALL_EMBER},
- {gBattleAnimSpritePalette_030, ANIM_TAG_GRAY_SMOKE},
- {gBattleAnimSpritePalette_031, ANIM_TAG_BLUE_STAR},
- {gBattleAnimSpritePalette_032, ANIM_TAG_UNUSED_BUBBLE_BURST},
- {gBattleAnimSpritePalette_033, ANIM_TAG_FIRE},
- {gBattleAnimSpritePalette_033, ANIM_TAG_UNUSED_SPINNING_FIRE},
- {gBattleAnimSpritePalette_033, ANIM_TAG_FIRE_PLUME},
- {gBattleAnimSpritePalette_036, ANIM_TAG_UNUSED_LIGHTNING},
- {gBattleAnimSpritePalette_036, ANIM_TAG_LIGHTNING},
- {gBattleAnimSpritePalette_038, ANIM_TAG_UNUSED_CLAW_SLASH},
- {gBattleAnimSpritePalette_039, ANIM_TAG_CLAW_SLASH},
- {gBattleAnimSpritePalette_038, ANIM_TAG_UNUSED_SCRATCH},
- {gBattleAnimSpritePalette_038, ANIM_TAG_UNUSED_SCRATCH_2},
- {gBattleAnimSpritePalette_042, ANIM_TAG_UNUSED_BUBBLE_BURST_2},
- {gBattleAnimSpritePalette_043, ANIM_TAG_ICE_CHUNK},
- {gBattleAnimSpritePalette_044, ANIM_TAG_UNUSED_GLASS_2},
- {gBattleAnimSpritePalette_045, ANIM_TAG_UNUSED_PINK_HEART},
- {gBattleAnimSpritePalette_046, ANIM_TAG_UNUSED_SAP_DRIP},
- {gBattleAnimSpritePalette_047, ANIM_TAG_UNUSED_SAP_DRIP},
- {gBattleAnimSpritePalette_048, ANIM_TAG_SPARKLE_1},
- {gBattleAnimSpritePalette_049, ANIM_TAG_SPARKLE_2},
- {gBattleAnimSpritePalette_050, ANIM_TAG_HUMANOID_FOOT},
- {gBattleAnimSpritePalette_050, ANIM_TAG_UNUSED_MONSTER_FOOT},
- {gBattleAnimSpritePalette_050, ANIM_TAG_UNUSED_HUMANOID_HAND},
- {gBattleAnimSpritePalette_026, ANIM_TAG_NOISE_LINE},
- {gBattleAnimSpritePalette_054, ANIM_TAG_UNUSED_YELLOW_UNK},
- {gBattleAnimSpritePalette_050, ANIM_TAG_UNUSED_RED_FIST},
- {gBattleAnimSpritePalette_056, ANIM_TAG_SLAM_HIT},
- {gBattleAnimSpritePalette_057, ANIM_TAG_UNUSED_RING},
- {gBattleAnimSpritePalette_058, ANIM_TAG_ROCKS},
- {gBattleAnimSpritePalette_059, ANIM_TAG_UNUSED_Z},
- {gBattleAnimSpritePalette_060, ANIM_TAG_UNUSED_YELLOW_UNK_2},
- {gBattleAnimSpritePalette_061, ANIM_TAG_UNUSED_AIR_SLASH},
- {gBattleAnimSpritePalette_062, ANIM_TAG_UNUSED_SPINNING_GREEN_ORBS},
- {gBattleAnimSpritePalette_063, ANIM_TAG_LEAF},
- {gBattleAnimSpritePalette_064, ANIM_TAG_FINGER},
- {gBattleAnimSpritePalette_065, ANIM_TAG_POISON_POWDER},
- {gBattleAnimSpritePalette_066, ANIM_TAG_UNUSED_BROWN_TRIANGLE},
- {gBattleAnimSpritePalette_067, ANIM_TAG_SLEEP_POWDER},
- {gBattleAnimSpritePalette_068, ANIM_TAG_STUN_SPORE},
- {gBattleAnimSpritePalette_065, ANIM_TAG_UNUSED_POWDER},
- {gBattleAnimSpritePalette_070, ANIM_TAG_SPARKLE_3},
- {gBattleAnimSpritePalette_070, ANIM_TAG_SPARKLE_4},
- {gBattleAnimSpritePalette_072, ANIM_TAG_MUSIC_NOTES},
- {gBattleAnimSpritePalette_073, ANIM_TAG_DUCK},
- {gBattleAnimSpritePalette_074, ANIM_TAG_MUD_SAND},
- {gBattleAnimSpritePalette_075, ANIM_TAG_ALERT},
- {gBattleAnimSpritePalette_076, ANIM_TAG_UNUSED_BLUE_FLAMES},
- {gBattleAnimSpritePalette_076, ANIM_TAG_UNUSED_BLUE_FLAMES_2},
- {gBattleAnimSpritePalette_078, ANIM_TAG_UNUSED_SHOCK},
- {gBattleAnimSpritePalette_078, ANIM_TAG_SHOCK},
- {gBattleAnimSpritePalette_080, ANIM_TAG_UNUSED_BELL},
- {gBattleAnimSpritePalette_081, ANIM_TAG_UNUSED_PINK_GLOVE},
- {gBattleAnimSpritePalette_082, ANIM_TAG_UNUSED_BLUE_LINES},
- {gBattleAnimSpritePalette_083, ANIM_TAG_UNUSED_IMPACT},
- {gBattleAnimSpritePalette_084, ANIM_TAG_UNUSED_IMPACT_2},
- {gBattleAnimSpritePalette_085, ANIM_TAG_UNUSED_RETICLE},
- {gBattleAnimSpritePalette_086, ANIM_TAG_BREATH},
- {gBattleAnimSpritePalette_087, ANIM_TAG_ANGER},
- {gBattleAnimSpritePalette_088, ANIM_TAG_UNUSED_SNOWBALL},
- {gBattleAnimSpritePalette_089, ANIM_TAG_UNUSED_VINE},
- {gBattleAnimSpritePalette_090, ANIM_TAG_UNUSED_SWORD},
- {gBattleAnimSpritePalette_091, ANIM_TAG_UNUSED_CLAPPING},
- {gBattleAnimSpritePalette_092, ANIM_TAG_UNUSED_RED_TUBE},
- {gBattleAnimSpritePalette_093, ANIM_TAG_AMNESIA},
- {gBattleAnimSpritePalette_094, ANIM_TAG_UNUSED_STRING},
- {gBattleAnimSpritePalette_095, ANIM_TAG_UNUSED_PENCIL},
- {gBattleAnimSpritePalette_096, ANIM_TAG_UNUSED_PETAL},
- {gBattleAnimSpritePalette_097, ANIM_TAG_BENT_SPOON},
- {gBattleAnimSpritePalette_094, ANIM_TAG_UNUSED_WEB},
- {gBattleAnimSpritePalette_099, ANIM_TAG_MILK_BOTTLE},
- {gBattleAnimSpritePalette_100, ANIM_TAG_COIN},
- {gBattleAnimSpritePalette_101, ANIM_TAG_UNUSED_CRACKED_EGG},
- {gBattleAnimSpritePalette_101, ANIM_TAG_UNUSED_HATCHED_EGG},
- {gBattleAnimSpritePalette_103, ANIM_TAG_UNUSED_FRESH_EGG},
- {gBattleAnimSpritePalette_104, ANIM_TAG_UNUSED_FANGS},
- {gBattleAnimSpritePalette_105, ANIM_TAG_UNUSED_EXPLOSION_2},
- {gBattleAnimSpritePalette_105, ANIM_TAG_UNUSED_EXPLOSION_3},
- {gBattleAnimSpritePalette_107, ANIM_TAG_UNUSED_WATER_DROPLET},
- {gBattleAnimSpritePalette_107, ANIM_TAG_UNUSED_WATER_DROPLET_2},
- {gBattleAnimSpritePalette_109, ANIM_TAG_UNUSED_SEED},
- {gBattleAnimSpritePalette_109, ANIM_TAG_UNUSED_SPROUT},
- {gBattleAnimSpritePalette_111, ANIM_TAG_UNUSED_RED_WAND},
- {gBattleAnimSpritePalette_112, ANIM_TAG_UNUSED_PURPLE_GREEN_UNK},
- {gBattleAnimSpritePalette_113, ANIM_TAG_UNUSED_WATER_COLUMN},
- {gBattleAnimSpritePalette_114, ANIM_TAG_UNUSED_MUD_UNK},
- {gBattleAnimSpritePalette_115, ANIM_TAG_RAIN_DROPS},
- {gBattleAnimSpritePalette_116, ANIM_TAG_UNUSED_FURY_SWIPES},
- {gBattleAnimSpritePalette_117, ANIM_TAG_UNUSED_VINE_2},
- {gBattleAnimSpritePalette_118, ANIM_TAG_UNUSED_TEETH},
- {gBattleAnimSpritePalette_119, ANIM_TAG_UNUSED_BONE},
- {gBattleAnimSpritePalette_120, ANIM_TAG_UNUSED_WHITE_BAG},
- {gBattleAnimSpritePalette_121, ANIM_TAG_UNUSED_UNKNOWN},
- {gBattleAnimSpritePalette_122, ANIM_TAG_UNUSED_PURPLE_CORAL},
- {gBattleAnimSpritePalette_122, ANIM_TAG_UNUSED_PURPLE_DROPLET},
- {gBattleAnimSpritePalette_124, ANIM_TAG_UNUSED_SHOCK_2},
- {gBattleAnimSpritePalette_125, ANIM_TAG_UNUSED_CLOSING_EYE_2},
- {gBattleAnimSpritePalette_126, ANIM_TAG_UNUSED_METAL_BALL},
- {gBattleAnimSpritePalette_127, ANIM_TAG_UNUSED_MONSTER_DOLL},
- {gBattleAnimSpritePalette_128, ANIM_TAG_UNUSED_WHIRLWIND},
- {gBattleAnimSpritePalette_128, ANIM_TAG_UNUSED_WHIRLWIND_2},
- {gBattleAnimSpritePalette_130, ANIM_TAG_UNUSED_EXPLOSION_4},
- {gBattleAnimSpritePalette_130, ANIM_TAG_UNUSED_EXPLOSION_5},
- {gBattleAnimSpritePalette_132, ANIM_TAG_UNUSED_TONGUE},
- {gBattleAnimSpritePalette_133, ANIM_TAG_UNUSED_SMOKE},
- {gBattleAnimSpritePalette_133, ANIM_TAG_UNUSED_SMOKE_2},
- {gBattleAnimSpritePalette_135, ANIM_TAG_IMPACT},
- {gBattleAnimSpritePalette_136, ANIM_TAG_CIRCLE_IMPACT},
- {gBattleAnimSpritePalette_135, ANIM_TAG_SCRATCH},
- {gBattleAnimSpritePalette_135, ANIM_TAG_CUT},
- {gBattleAnimSpritePalette_139, ANIM_TAG_SHARP_TEETH},
- {gBattleAnimSpritePalette_140, ANIM_TAG_RAINBOW_RINGS},
- {gBattleAnimSpritePalette_141, ANIM_TAG_ICE_CRYSTALS},
- {gBattleAnimSpritePalette_141, ANIM_TAG_ICE_SPIKES},
- {gBattleAnimSpritePalette_143, ANIM_TAG_HANDS_AND_FEET},
- {gBattleAnimSpritePalette_144, ANIM_TAG_MIST_CLOUD},
- {gBattleAnimSpritePalette_139, ANIM_TAG_CLAMP},
- {gBattleAnimSpritePalette_115, ANIM_TAG_BUBBLE},
- {gBattleAnimSpritePalette_147, ANIM_TAG_ORBS},
- {gBattleAnimSpritePalette_148, ANIM_TAG_WATER_IMPACT},
- {gBattleAnimSpritePalette_148, ANIM_TAG_WATER_ORB},
- {gBattleAnimSpritePalette_150, ANIM_TAG_POISON_BUBBLE},
- {gBattleAnimSpritePalette_150, ANIM_TAG_TOXIC_BUBBLE},
- {gBattleAnimSpritePalette_152, ANIM_TAG_SPIKES},
- {gBattleAnimSpritePalette_153, ANIM_TAG_HORN_HIT_2},
- {gBattleAnimSpritePalette_154, ANIM_TAG_AIR_WAVE_2},
- {gBattleAnimSpritePalette_155, ANIM_TAG_SMALL_BUBBLES},
- {gBattleAnimSpritePalette_156, ANIM_TAG_ROUND_SHADOW},
- {gBattleAnimSpritePalette_157, ANIM_TAG_SUNLIGHT},
- {gBattleAnimSpritePalette_158, ANIM_TAG_SPORE},
- {gBattleAnimSpritePalette_159, ANIM_TAG_FLOWER},
- {gBattleAnimSpritePalette_160, ANIM_TAG_RAZOR_LEAF},
- {gBattleAnimSpritePalette_161, ANIM_TAG_NEEDLE},
- {gBattleAnimSpritePalette_162, ANIM_TAG_WHIRLWIND_LINES},
- {gBattleAnimSpritePalette_163, ANIM_TAG_GOLD_RING},
- {gBattleAnimSpritePalette_164, ANIM_TAG_PURPLE_RING},
- {gBattleAnimSpritePalette_165, ANIM_TAG_BLUE_RING},
- {gBattleAnimSpritePalette_166, ANIM_TAG_GREEN_LIGHT_WALL},
- {gBattleAnimSpritePalette_167, ANIM_TAG_BLUE_LIGHT_WALL},
- {gBattleAnimSpritePalette_168, ANIM_TAG_RED_LIGHT_WALL},
- {gBattleAnimSpritePalette_169, ANIM_TAG_GRAY_LIGHT_WALL},
- {gBattleAnimSpritePalette_170, ANIM_TAG_ORANGE_LIGHT_WALL},
- {gBattleAnimSpritePalette_171, ANIM_TAG_BLACK_BALL_2},
- {gBattleAnimSpritePalette_172, ANIM_TAG_PURPLE_GAS_CLOUD},
- {gBattleAnimSpritePalette_001, ANIM_TAG_SPARK_H},
- {gBattleAnimSpritePalette_174, ANIM_TAG_YELLOW_STAR},
- {gBattleAnimSpritePalette_175, ANIM_TAG_LARGE_FRESH_EGG},
- {gBattleAnimSpritePalette_176, ANIM_TAG_SHADOW_BALL},
- {gBattleAnimSpritePalette_177, ANIM_TAG_LICK},
- {gBattleAnimSpritePalette_178, ANIM_TAG_UNUSED_VOID_LINES},
- {gBattleAnimSpritePalette_179, ANIM_TAG_STRING},
- {gBattleAnimSpritePalette_179, ANIM_TAG_WEB_THREAD},
- {gBattleAnimSpritePalette_179, ANIM_TAG_SPIDER_WEB},
- {gBattleAnimSpritePalette_182, ANIM_TAG_UNUSED_LIGHTBULB},
- {gBattleAnimSpritePalette_183, ANIM_TAG_SLASH},
- {gBattleAnimSpritePalette_184, ANIM_TAG_FOCUS_ENERGY},
- {gBattleAnimSpritePalette_185, ANIM_TAG_SPHERE_TO_CUBE},
- {gBattleAnimSpritePalette_186, ANIM_TAG_TENDRILS},
- {gBattleAnimSpritePalette_187, ANIM_TAG_EYE},
- {gBattleAnimSpritePalette_188, ANIM_TAG_WHITE_SHADOW},
- {gBattleAnimSpritePalette_189, ANIM_TAG_TEAL_ALERT},
- {gBattleAnimSpritePalette_190, ANIM_TAG_OPENING_EYE},
- {gBattleAnimSpritePalette_191, ANIM_TAG_ROUND_WHITE_HALO},
- {gBattleAnimSpritePalette_192, ANIM_TAG_FANG_ATTACK},
- {gBattleAnimSpritePalette_193, ANIM_TAG_PURPLE_HAND_OUTLINE},
- {gBattleAnimSpritePalette_194, ANIM_TAG_MOON},
- {gBattleAnimSpritePalette_195, ANIM_TAG_GREEN_SPARKLE},
- {gBattleAnimSpritePalette_196, ANIM_TAG_SPIRAL},
- {gBattleAnimSpritePalette_197, ANIM_TAG_SNORE_Z},
- {gBattleAnimSpritePalette_198, ANIM_TAG_EXPLOSION},
- {gBattleAnimSpritePalette_199, ANIM_TAG_NAIL},
- {gBattleAnimSpritePalette_200, ANIM_TAG_GHOSTLY_SPIRIT},
- {gBattleAnimSpritePalette_201, ANIM_TAG_WARM_ROCK},
- {gBattleAnimSpritePalette_202, ANIM_TAG_BREAKING_EGG},
- {gBattleAnimSpritePalette_203, ANIM_TAG_THIN_RING},
- {gBattleAnimSpritePalette_204, ANIM_TAG_UNUSED_PUNCH_IMPACT},
- {gBattleAnimSpritePalette_205, ANIM_TAG_BELL},
- {gBattleAnimSpritePalette_206, ANIM_TAG_MUSIC_NOTES_2},
- {gBattleAnimSpritePalette_207, ANIM_TAG_SPEED_DUST},
- {gBattleAnimSpritePalette_167, ANIM_TAG_TORN_METAL},
- {gBattleAnimSpritePalette_209, ANIM_TAG_THOUGHT_BUBBLE},
- {gBattleAnimSpritePalette_210, ANIM_TAG_MAGENTA_HEART},
- {gBattleAnimSpritePalette_211, ANIM_TAG_ELECTRIC_ORBS},
- {gBattleAnimSpritePalette_211, ANIM_TAG_CIRCLE_OF_LIGHT},
- {gBattleAnimSpritePalette_211, ANIM_TAG_ELECTRICITY},
- {gBattleAnimSpritePalette_064, ANIM_TAG_FINGER_2},
- {gBattleAnimSpritePalette_215, ANIM_TAG_MOVEMENT_WAVES},
- {gBattleAnimSpritePalette_216, ANIM_TAG_RED_HEART},
- {gBattleAnimSpritePalette_217, ANIM_TAG_RED_ORB},
- {gBattleAnimSpritePalette_218, ANIM_TAG_EYE_SPARKLE},
- {gBattleAnimSpritePalette_219, ANIM_TAG_PINK_HEART},
- {gBattleAnimSpritePalette_220, ANIM_TAG_ANGEL},
- {gBattleAnimSpritePalette_221, ANIM_TAG_DEVIL},
- {gBattleAnimSpritePalette_222, ANIM_TAG_SWIPE},
- {gBattleAnimSpritePalette_223, ANIM_TAG_ROOTS},
- {gBattleAnimSpritePalette_224, ANIM_TAG_ITEM_BAG},
- {gBattleAnimSpritePalette_225, ANIM_TAG_JAGGED_MUSIC_NOTE},
- {gBattleAnimSpritePalette_226, ANIM_TAG_POKEBALL},
- {gBattleAnimSpritePalette_226, ANIM_TAG_SPOTLIGHT},
- {gBattleAnimSpritePalette_228, ANIM_TAG_LETTER_Z},
- {gBattleAnimSpritePalette_229, ANIM_TAG_RAPID_SPIN},
- {gBattleAnimSpritePalette_230, ANIM_TAG_TRI_FORCE_TRIANGLE},
- {gBattleAnimSpritePalette_231, ANIM_TAG_WISP_ORB},
- {gBattleAnimSpritePalette_231, ANIM_TAG_WISP_FIRE},
- {gBattleAnimSpritePalette_233, ANIM_TAG_GOLD_STARS},
- {gBattleAnimSpritePalette_234, ANIM_TAG_ECLIPSING_ORB},
- {gBattleAnimSpritePalette_235, ANIM_TAG_GRAY_ORB},
- {gBattleAnimSpritePalette_236, ANIM_TAG_BLUE_ORB},
- {gBattleAnimSpritePalette_237, ANIM_TAG_RED_ORB_2},
- {gBattleAnimSpritePalette_238, ANIM_TAG_PINK_PETAL},
- {gBattleAnimSpritePalette_239, ANIM_TAG_PAIN_SPLIT},
- {gBattleAnimSpritePalette_240, ANIM_TAG_CONFETTI},
- {gBattleAnimSpritePalette_241, ANIM_TAG_GREEN_STAR},
- {gBattleAnimSpritePalette_242, ANIM_TAG_PINK_CLOUD},
- {gBattleAnimSpritePalette_243, ANIM_TAG_SWEAT_DROP},
- {gBattleAnimSpritePalette_244, ANIM_TAG_GUARD_RING},
- {gBattleAnimSpritePalette_245, ANIM_TAG_PURPLE_SCRATCH},
- {gBattleAnimSpritePalette_245, ANIM_TAG_PURPLE_SWIPE},
- {gBattleAnimSpritePalette_064, ANIM_TAG_TAG_HAND},
- {gBattleAnimSpritePalette_248, ANIM_TAG_SMALL_RED_EYE},
- {gBattleAnimSpritePalette_249, ANIM_TAG_HOLLOW_ORB},
- {gBattleAnimSpritePalette_249, ANIM_TAG_X_SIGN},
- {gBattleAnimSpritePalette_251, ANIM_TAG_BLUEGREEN_ORB},
- {gBattleAnimSpritePalette_252, ANIM_TAG_PAW_PRINT},
- {gBattleAnimSpritePalette_253, ANIM_TAG_PURPLE_FLAME},
- {gBattleAnimSpritePalette_254, ANIM_TAG_RED_BALL},
- {gBattleAnimSpritePalette_255, ANIM_TAG_SMELLINGSALT_EFFECT},
- {gBattleAnimSpritePalette_256, ANIM_TAG_METEOR},
- {gBattleAnimSpritePalette_257, ANIM_TAG_FLAT_ROCK},
- {gBattleAnimSpritePalette_258, ANIM_TAG_MAGNIFYING_GLASS},
- {gBattleAnimSpritePalette_259, ANIM_TAG_BROWN_ORB},
- {gBattleAnimSpritePalette_260, ANIM_TAG_METAL_SOUND_WAVES},
- {gBattleAnimSpritePalette_261, ANIM_TAG_FLYING_DIRT},
- {gBattleAnimSpritePalette_262, ANIM_TAG_ICICLE_SPEAR},
- {gBattleAnimSpritePalette_263, ANIM_TAG_HAIL},
- {gBattleAnimSpritePalette_264, ANIM_TAG_GLOWY_RED_ORB},
- {gBattleAnimSpritePalette_265, ANIM_TAG_GLOWY_GREEN_ORB},
- {gBattleAnimSpritePalette_266, ANIM_TAG_GREEN_SPIKE},
- {gBattleAnimSpritePalette_267, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT},
- {gBattleAnimSpritePalette_268, ANIM_TAG_GLOWY_BLUE_ORB},
- {gBattleAnimSpritePalette_269, ANIM_TAG_UNUSED_RED_BRICK},
- {gBattleAnimSpritePalette_270, ANIM_TAG_WHITE_FEATHER},
- {gBattleAnimSpritePalette_271, ANIM_TAG_SPARKLE_6},
- {gBattleAnimSpritePalette_272, ANIM_TAG_SPLASH},
- {gBattleAnimSpritePalette_272, ANIM_TAG_SWEAT_BEAD},
- {gBattleAnimSpritePalette_274, ANIM_TAG_UNUSED_GEM_1},
- {gBattleAnimSpritePalette_274, ANIM_TAG_UNUSED_GEM_2},
- {gBattleAnimSpritePalette_274, ANIM_TAG_UNUSED_GEM_3},
- {gBattleAnimSpritePalette_277, ANIM_TAG_SLAM_HIT_2},
- {gBattleAnimSpritePalette_278, ANIM_TAG_RECYCLE},
- {gBattleAnimSpritePalette_279, ANIM_TAG_UNUSED_RED_PARTICLES},
- {gBattleAnimSpritePalette_280, ANIM_TAG_PROTECT},
- {gBattleAnimSpritePalette_281, ANIM_TAG_DIRT_MOUND},
- {gBattleAnimSpritePalette_282, ANIM_TAG_SHOCK_3},
- {gBattleAnimSpritePalette_283, ANIM_TAG_WEATHER_BALL},
- {gBattleAnimSpritePalette_284, ANIM_TAG_BIRD},
- {gBattleAnimSpritePalette_285, ANIM_TAG_CROSS_IMPACT},
- {gBattleAnimSpritePalette_286, ANIM_TAG_SLASH_2},
- {gBattleAnimSpritePalette_287, ANIM_TAG_WHIP_HIT},
- {gBattleAnimSpritePalette_288, ANIM_TAG_BLUE_RING_2},
+ {gBattleAnimSpritePal_Bone, ANIM_TAG_BONE},
+ {gBattleAnimSpritePal_Spark, ANIM_TAG_SPARK},
+ {gBattleAnimSpritePal_Pencil, ANIM_TAG_PENCIL},
+ {gBattleAnimSpritePal_AirWave, ANIM_TAG_AIR_WAVE},
+ {gBattleAnimSpritePal_Orb, ANIM_TAG_ORB},
+ {gBattleAnimSpritePal_Sword, ANIM_TAG_SWORD},
+ {gBattleAnimSpritePal_Seed, ANIM_TAG_SEED},
+ {gBattleAnimSpritePal_Explosion6, ANIM_TAG_EXPLOSION_6},
+ {gBattleAnimSpritePal_PinkOrb, ANIM_TAG_PINK_ORB},
+ {gBattleAnimSpritePal_Gust, ANIM_TAG_GUST},
+ {gBattleAnimSpritePal_IceCube, ANIM_TAG_ICE_CUBE},
+ {gBattleAnimSpritePal_Spark2, ANIM_TAG_SPARK_2},
+ {gBattleAnimSpritePal_Orange, ANIM_TAG_ORANGE},
+ {gBattleAnimSpritePal_YellowBall, ANIM_TAG_YELLOW_BALL},
+ {gBattleAnimSpritePal_LockOn, ANIM_TAG_LOCK_ON},
+ {gBattleAnimSpritePal_TiedBag, ANIM_TAG_TIED_BAG},
+ {gBattleAnimSpritePal_BlackSmoke, ANIM_TAG_BLACK_SMOKE},
+ {gBattleAnimSpritePal_BlackSmoke, ANIM_TAG_BLACK_BALL},
+ {gBattleAnimSpritePal_Conversion, ANIM_TAG_CONVERSION},
+ {gBattleAnimSpritePal_Glass, ANIM_TAG_GLASS},
+ {gBattleAnimSpritePal_HornHit, ANIM_TAG_HORN_HIT},
+ {gBattleAnimSpritePal_Hit, ANIM_TAG_HIT},
+ {gBattleAnimSpritePal_Hit2, ANIM_TAG_HIT_2},
+ {gBattleAnimSpritePal_BlueShards, ANIM_TAG_BLUE_SHARDS},
+ {gBattleAnimSpritePal_ClosingEye, ANIM_TAG_CLOSING_EYE},
+ {gBattleAnimSpritePal_WavingHand, ANIM_TAG_WAVING_HAND},
+ {gBattleAnimSpritePal_HitDuplicate, ANIM_TAG_HIT_DUPLICATE},
+ {gBattleAnimSpritePal_Leer, ANIM_TAG_LEER},
+ {gBattleAnimSpritePal_BlueBurst, ANIM_TAG_BLUE_BURST},
+ {gBattleAnimSpritePal_SmallEmber, ANIM_TAG_SMALL_EMBER},
+ {gBattleAnimSpritePal_GraySmoke, ANIM_TAG_GRAY_SMOKE},
+ {gBattleAnimSpritePal_BlueStar, ANIM_TAG_BLUE_STAR},
+ {gBattleAnimSpritePal_BubbleBurst, ANIM_TAG_BUBBLE_BURST},
+ {gBattleAnimSpritePal_Fire, ANIM_TAG_FIRE},
+ {gBattleAnimSpritePal_Fire, ANIM_TAG_SPINNING_FIRE},
+ {gBattleAnimSpritePal_Fire, ANIM_TAG_FIRE_PLUME},
+ {gBattleAnimSpritePal_Lightning2, ANIM_TAG_LIGHTNING_2},
+ {gBattleAnimSpritePal_Lightning2, ANIM_TAG_LIGHTNING},
+ {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_CLAW_SLASH_2},
+ {gBattleAnimSpritePal_ClawSlash, ANIM_TAG_CLAW_SLASH},
+ {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_SCRATCH_3},
+ {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_SCRATCH_2},
+ {gBattleAnimSpritePal_BubbleBurst2, ANIM_TAG_BUBBLE_BURST_2},
+ {gBattleAnimSpritePal_IceChunk, ANIM_TAG_ICE_CHUNK},
+ {gBattleAnimSpritePal_Glass2, ANIM_TAG_GLASS_2},
+ {gBattleAnimSpritePal_PinkHeart2, ANIM_TAG_PINK_HEART_2},
+ {gBattleAnimSpritePal_SapDrip, ANIM_TAG_SAP_DRIP},
+ {gBattleAnimSpritePal_SapDrip2, ANIM_TAG_SAP_DRIP},
+ {gBattleAnimSpritePal_Sparkle1, ANIM_TAG_SPARKLE_1},
+ {gBattleAnimSpritePal_Sparkle2, ANIM_TAG_SPARKLE_2},
+ {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_HUMANOID_FOOT},
+ {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_MONSTER_FOOT},
+ {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_HUMANOID_HAND},
+ {gBattleAnimSpritePal_HitDuplicate, ANIM_TAG_NOISE_LINE},
+ {gBattleAnimSpritePal_YellowUnk, ANIM_TAG_YELLOW_UNK},
+ {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_RED_FIST},
+ {gBattleAnimSpritePal_SlamHit, ANIM_TAG_SLAM_HIT},
+ {gBattleAnimSpritePal_Ring, ANIM_TAG_RING},
+ {gBattleAnimSpritePal_Rocks, ANIM_TAG_ROCKS},
+ {gBattleAnimSpritePal_Z, ANIM_TAG_Z},
+ {gBattleAnimSpritePal_YellowUnk2, ANIM_TAG_YELLOW_UNK_2},
+ {gBattleAnimSpritePal_AirSlash, ANIM_TAG_AIR_SLASH},
+ {gBattleAnimSpritePal_SpinningGreenOrbs, ANIM_TAG_SPINNING_GREEN_ORBS},
+ {gBattleAnimSpritePal_Leaf, ANIM_TAG_LEAF},
+ {gBattleAnimSpritePal_Finger, ANIM_TAG_FINGER},
+ {gBattleAnimSpritePal_PoisonPowder, ANIM_TAG_POISON_POWDER},
+ {gBattleAnimSpritePal_BrownTriangle, ANIM_TAG_BROWN_TRIANGLE},
+ {gBattleAnimSpritePal_SleepPowder, ANIM_TAG_SLEEP_POWDER},
+ {gBattleAnimSpritePal_StunSpore, ANIM_TAG_STUN_SPORE},
+ {gBattleAnimSpritePal_PoisonPowder, ANIM_TAG_POWDER},
+ {gBattleAnimSpritePal_Sparkle3, ANIM_TAG_SPARKLE_3},
+ {gBattleAnimSpritePal_Sparkle3, ANIM_TAG_SPARKLE_4},
+ {gBattleAnimSpritePal_MusicNotes, ANIM_TAG_MUSIC_NOTES},
+ {gBattleAnimSpritePal_Duck, ANIM_TAG_DUCK},
+ {gBattleAnimSpritePal_MudSand, ANIM_TAG_MUD_SAND},
+ {gBattleAnimSpritePal_Alert, ANIM_TAG_ALERT},
+ {gBattleAnimSpritePal_BlueFlames, ANIM_TAG_BLUE_FLAMES},
+ {gBattleAnimSpritePal_BlueFlames, ANIM_TAG_BLUE_FLAMES_2},
+ {gBattleAnimSpritePal_Shock4, ANIM_TAG_SHOCK_4},
+ {gBattleAnimSpritePal_Shock4, ANIM_TAG_SHOCK},
+ {gBattleAnimSpritePal_Bell2, ANIM_TAG_BELL_2},
+ {gBattleAnimSpritePal_PinkGlove, ANIM_TAG_PINK_GLOVE},
+ {gBattleAnimSpritePal_BlueLines, ANIM_TAG_BLUE_LINES},
+ {gBattleAnimSpritePal_Impact3, ANIM_TAG_IMPACT_3},
+ {gBattleAnimSpritePal_Impact2, ANIM_TAG_IMPACT_2},
+ {gBattleAnimSpritePal_Reticle, ANIM_TAG_RETICLE},
+ {gBattleAnimSpritePal_Breath, ANIM_TAG_BREATH},
+ {gBattleAnimSpritePal_Anger, ANIM_TAG_ANGER},
+ {gBattleAnimSpritePal_Snowball, ANIM_TAG_SNOWBALL},
+ {gBattleAnimSpritePal_Vine, ANIM_TAG_VINE},
+ {gBattleAnimSpritePal_Sword2, ANIM_TAG_SWORD_2},
+ {gBattleAnimSpritePal_Clapping, ANIM_TAG_CLAPPING},
+ {gBattleAnimSpritePal_RedTube, ANIM_TAG_RED_TUBE},
+ {gBattleAnimSpritePal_Amnesia, ANIM_TAG_AMNESIA},
+ {gBattleAnimSpritePal_String2, ANIM_TAG_STRING_2},
+ {gBattleAnimSpritePal_Pencil2, ANIM_TAG_PENCIL_2},
+ {gBattleAnimSpritePal_Petal, ANIM_TAG_PETAL},
+ {gBattleAnimSpritePal_BentSpoon, ANIM_TAG_BENT_SPOON},
+ {gBattleAnimSpritePal_String2, ANIM_TAG_WEB},
+ {gBattleAnimSpritePal_MilkBottle, ANIM_TAG_MILK_BOTTLE},
+ {gBattleAnimSpritePal_Coin, ANIM_TAG_COIN},
+ {gBattleAnimSpritePal_CrackedEgg, ANIM_TAG_CRACKED_EGG},
+ {gBattleAnimSpritePal_CrackedEgg, ANIM_TAG_HATCHED_EGG},
+ {gBattleAnimSpritePal_FreshEgg, ANIM_TAG_FRESH_EGG},
+ {gBattleAnimSpritePal_Fangs, ANIM_TAG_FANGS},
+ {gBattleAnimSpritePal_Explosion2, ANIM_TAG_EXPLOSION_2},
+ {gBattleAnimSpritePal_Explosion2, ANIM_TAG_EXPLOSION_3},
+ {gBattleAnimSpritePal_WaterDroplet, ANIM_TAG_WATER_DROPLET},
+ {gBattleAnimSpritePal_WaterDroplet, ANIM_TAG_WATER_DROPLET_2},
+ {gBattleAnimSpritePal_Seed2, ANIM_TAG_SEED_2},
+ {gBattleAnimSpritePal_Seed2, ANIM_TAG_SPROUT},
+ {gBattleAnimSpritePal_RedWand, ANIM_TAG_RED_WAND},
+ {gBattleAnimSpritePal_PurpleGreenUnk, ANIM_TAG_PURPLE_GREEN_UNK},
+ {gBattleAnimSpritePal_WaterColumn, ANIM_TAG_WATER_COLUMN},
+ {gBattleAnimSpritePal_MudUnk, ANIM_TAG_MUD_UNK},
+ {gBattleAnimSpritePal_RainDrops, ANIM_TAG_RAIN_DROPS},
+ {gBattleAnimSpritePal_FurySwipes, ANIM_TAG_FURY_SWIPES},
+ {gBattleAnimSpritePal_Vine2, ANIM_TAG_VINE_2},
+ {gBattleAnimSpritePal_Teeth, ANIM_TAG_TEETH},
+ {gBattleAnimSpritePal_Bone2, ANIM_TAG_BONE_2},
+ {gBattleAnimSpritePal_WhiteBag, ANIM_TAG_WHITE_BAG},
+ {gBattleAnimSpritePal_Unknown, ANIM_TAG_UNKNOWN},
+ {gBattleAnimSpritePal_PurpleCoral, ANIM_TAG_PURPLE_CORAL},
+ {gBattleAnimSpritePal_PurpleCoral, ANIM_TAG_PURPLE_DROPLET},
+ {gBattleAnimSpritePal_Shock2, ANIM_TAG_SHOCK_2},
+ {gBattleAnimSpritePal_ClosingEye2, ANIM_TAG_CLOSING_EYE_2},
+ {gBattleAnimSpritePal_MetalBall, ANIM_TAG_METAL_BALL},
+ {gBattleAnimSpritePal_MonsterDoll, ANIM_TAG_MONSTER_DOLL},
+ {gBattleAnimSpritePal_Whirlwind, ANIM_TAG_WHIRLWIND},
+ {gBattleAnimSpritePal_Whirlwind, ANIM_TAG_WHIRLWIND_2},
+ {gBattleAnimSpritePal_Explosion4, ANIM_TAG_EXPLOSION_4},
+ {gBattleAnimSpritePal_Explosion4, ANIM_TAG_EXPLOSION_5},
+ {gBattleAnimSpritePal_Tongue, ANIM_TAG_TONGUE},
+ {gBattleAnimSpritePal_Smoke, ANIM_TAG_SMOKE},
+ {gBattleAnimSpritePal_Smoke, ANIM_TAG_SMOKE_2},
+ {gBattleAnimSpritePal_Impact, ANIM_TAG_IMPACT},
+ {gBattleAnimSpritePal_CircleImpact, ANIM_TAG_CIRCLE_IMPACT},
+ {gBattleAnimSpritePal_Impact, ANIM_TAG_SCRATCH},
+ {gBattleAnimSpritePal_Impact, ANIM_TAG_CUT},
+ {gBattleAnimSpritePal_SharpTeeth, ANIM_TAG_SHARP_TEETH},
+ {gBattleAnimSpritePal_RainbowRings, ANIM_TAG_RAINBOW_RINGS},
+ {gBattleAnimSpritePal_IceCrystals, ANIM_TAG_ICE_CRYSTALS},
+ {gBattleAnimSpritePal_IceCrystals, ANIM_TAG_ICE_SPIKES},
+ {gBattleAnimSpritePal_HandsAndFeet, ANIM_TAG_HANDS_AND_FEET},
+ {gBattleAnimSpritePal_MistCloud, ANIM_TAG_MIST_CLOUD},
+ {gBattleAnimSpritePal_SharpTeeth, ANIM_TAG_CLAMP},
+ {gBattleAnimSpritePal_RainDrops, ANIM_TAG_BUBBLE},
+ {gBattleAnimSpritePal_Orbs, ANIM_TAG_ORBS},
+ {gBattleAnimSpritePal_WaterImpact, ANIM_TAG_WATER_IMPACT},
+ {gBattleAnimSpritePal_WaterImpact, ANIM_TAG_WATER_ORB},
+ {gBattleAnimSpritePal_PoisonBubble, ANIM_TAG_POISON_BUBBLE},
+ {gBattleAnimSpritePal_PoisonBubble, ANIM_TAG_TOXIC_BUBBLE},
+ {gBattleAnimSpritePal_Spikes, ANIM_TAG_SPIKES},
+ {gBattleAnimSpritePal_HornHit2, ANIM_TAG_HORN_HIT_2},
+ {gBattleAnimSpritePal_AirWave2, ANIM_TAG_AIR_WAVE_2},
+ {gBattleAnimSpritePal_SmallBubbles, ANIM_TAG_SMALL_BUBBLES},
+ {gBattleAnimSpritePal_RoundShadow, ANIM_TAG_ROUND_SHADOW},
+ {gBattleAnimSpritePal_Sunlight, ANIM_TAG_SUNLIGHT},
+ {gBattleAnimSpritePal_Spore, ANIM_TAG_SPORE},
+ {gBattleAnimSpritePal_Flower, ANIM_TAG_FLOWER},
+ {gBattleAnimSpritePal_RazorLeaf, ANIM_TAG_RAZOR_LEAF},
+ {gBattleAnimSpritePal_Needle, ANIM_TAG_NEEDLE},
+ {gBattleAnimSpritePal_WhirlwindLines, ANIM_TAG_WHIRLWIND_LINES},
+ {gBattleAnimSpritePal_GoldRing, ANIM_TAG_GOLD_RING},
+ {gBattleAnimSpritePal_PurpleRing, ANIM_TAG_PURPLE_RING},
+ {gBattleAnimSpritePal_BlueRing, ANIM_TAG_BLUE_RING},
+ {gBattleAnimSpritePal_GreenLightWall, ANIM_TAG_GREEN_LIGHT_WALL},
+ {gBattleAnimSpritePal_BlueLightWall, ANIM_TAG_BLUE_LIGHT_WALL},
+ {gBattleAnimSpritePal_RedLightWall, ANIM_TAG_RED_LIGHT_WALL},
+ {gBattleAnimSpritePal_GrayLightWall, ANIM_TAG_GRAY_LIGHT_WALL},
+ {gBattleAnimSpritePal_OrangeLightWall, ANIM_TAG_ORANGE_LIGHT_WALL},
+ {gBattleAnimSpritePal_BlackBall2, ANIM_TAG_BLACK_BALL_2},
+ {gBattleAnimSpritePal_PurpleGasCloud, ANIM_TAG_PURPLE_GAS_CLOUD},
+ {gBattleAnimSpritePal_Spark, ANIM_TAG_SPARK_H},
+ {gBattleAnimSpritePal_YellowStar, ANIM_TAG_YELLOW_STAR},
+ {gBattleAnimSpritePal_LargeFreshEgg, ANIM_TAG_LARGE_FRESH_EGG},
+ {gBattleAnimSpritePal_ShadowBall, ANIM_TAG_SHADOW_BALL},
+ {gBattleAnimSpritePal_Lick, ANIM_TAG_LICK},
+ {gBattleAnimSpritePal_VoidLines, ANIM_TAG_VOID_LINES},
+ {gBattleAnimSpritePal_String, ANIM_TAG_STRING},
+ {gBattleAnimSpritePal_String, ANIM_TAG_WEB_THREAD},
+ {gBattleAnimSpritePal_String, ANIM_TAG_SPIDER_WEB},
+ {gBattleAnimSpritePal_Lightbulb, ANIM_TAG_LIGHTBULB},
+ {gBattleAnimSpritePal_Slash, ANIM_TAG_SLASH},
+ {gBattleAnimSpritePal_FocusEnergy, ANIM_TAG_FOCUS_ENERGY},
+ {gBattleAnimSpritePal_SphereToCube, ANIM_TAG_SPHERE_TO_CUBE},
+ {gBattleAnimSpritePal_Tendrils, ANIM_TAG_TENDRILS},
+ {gBattleAnimSpritePal_Eye, ANIM_TAG_EYE},
+ {gBattleAnimSpritePal_WhiteShadow, ANIM_TAG_WHITE_SHADOW},
+ {gBattleAnimSpritePal_TealAlert, ANIM_TAG_TEAL_ALERT},
+ {gBattleAnimSpritePal_OpeningEye, ANIM_TAG_OPENING_EYE},
+ {gBattleAnimSpritePal_RoundWhiteHalo, ANIM_TAG_ROUND_WHITE_HALO},
+ {gBattleAnimSpritePal_FangAttack, ANIM_TAG_FANG_ATTACK},
+ {gBattleAnimSpritePal_PurpleHandOutline, ANIM_TAG_PURPLE_HAND_OUTLINE},
+ {gBattleAnimSpritePal_Moon, ANIM_TAG_MOON},
+ {gBattleAnimSpritePal_GreenSparkle, ANIM_TAG_GREEN_SPARKLE},
+ {gBattleAnimSpritePal_Spiral, ANIM_TAG_SPIRAL},
+ {gBattleAnimSpritePal_SnoreZ, ANIM_TAG_SNORE_Z},
+ {gBattleAnimSpritePal_Explosion, ANIM_TAG_EXPLOSION},
+ {gBattleAnimSpritePal_Nail, ANIM_TAG_NAIL},
+ {gBattleAnimSpritePal_GhostlySpirit, ANIM_TAG_GHOSTLY_SPIRIT},
+ {gBattleAnimSpritePal_WarmRock, ANIM_TAG_WARM_ROCK},
+ {gBattleAnimSpritePal_BreakingEgg, ANIM_TAG_BREAKING_EGG},
+ {gBattleAnimSpritePal_ThinRing, ANIM_TAG_THIN_RING},
+ {gBattleAnimSpritePal_PunchImpact, ANIM_TAG_PUNCH_IMPACT},
+ {gBattleAnimSpritePal_Bell, ANIM_TAG_BELL},
+ {gBattleAnimSpritePal_MusicNotes2, ANIM_TAG_MUSIC_NOTES_2},
+ {gBattleAnimSpritePal_SpeedDust, ANIM_TAG_SPEED_DUST},
+ {gBattleAnimSpritePal_BlueLightWall, ANIM_TAG_TORN_METAL},
+ {gBattleAnimSpritePal_ThoughtBubble, ANIM_TAG_THOUGHT_BUBBLE},
+ {gBattleAnimSpritePal_MagentaHeart, ANIM_TAG_MAGENTA_HEART},
+ {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_ELECTRIC_ORBS},
+ {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_CIRCLE_OF_LIGHT},
+ {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_ELECTRICITY},
+ {gBattleAnimSpritePal_Finger, ANIM_TAG_FINGER_2},
+ {gBattleAnimSpritePal_MovementWaves, ANIM_TAG_MOVEMENT_WAVES},
+ {gBattleAnimSpritePal_RedHeart, ANIM_TAG_RED_HEART},
+ {gBattleAnimSpritePal_RedOrb, ANIM_TAG_RED_ORB},
+ {gBattleAnimSpritePal_EyeSparkle, ANIM_TAG_EYE_SPARKLE},
+ {gBattleAnimSpritePal_PinkHeart, ANIM_TAG_PINK_HEART},
+ {gBattleAnimSpritePal_Angel, ANIM_TAG_ANGEL},
+ {gBattleAnimSpritePal_Devil, ANIM_TAG_DEVIL},
+ {gBattleAnimSpritePal_Swipe, ANIM_TAG_SWIPE},
+ {gBattleAnimSpritePal_Roots, ANIM_TAG_ROOTS},
+ {gBattleAnimSpritePal_ItemBag, ANIM_TAG_ITEM_BAG},
+ {gBattleAnimSpritePal_JaggedMusicNote, ANIM_TAG_JAGGED_MUSIC_NOTE},
+ {gBattleAnimSpritePal_Pokeball, ANIM_TAG_POKEBALL},
+ {gBattleAnimSpritePal_Pokeball, ANIM_TAG_SPOTLIGHT},
+ {gBattleAnimSpritePal_LetterZ, ANIM_TAG_LETTER_Z},
+ {gBattleAnimSpritePal_RapidSpin, ANIM_TAG_RAPID_SPIN},
+ {gBattleAnimSpritePal_TriForceTriangle, ANIM_TAG_TRI_FORCE_TRIANGLE},
+ {gBattleAnimSpritePal_WispOrb, ANIM_TAG_WISP_ORB},
+ {gBattleAnimSpritePal_WispOrb, ANIM_TAG_WISP_FIRE},
+ {gBattleAnimSpritePal_GoldStars, ANIM_TAG_GOLD_STARS},
+ {gBattleAnimSpritePal_EclipsingOrb, ANIM_TAG_ECLIPSING_ORB},
+ {gBattleAnimSpritePal_GrayOrb, ANIM_TAG_GRAY_ORB},
+ {gBattleAnimSpritePal_BlueOrb, ANIM_TAG_BLUE_ORB},
+ {gBattleAnimSpritePal_RedOrb2, ANIM_TAG_RED_ORB_2},
+ {gBattleAnimSpritePal_PinkPetal, ANIM_TAG_PINK_PETAL},
+ {gBattleAnimSpritePal_PainSplit, ANIM_TAG_PAIN_SPLIT},
+ {gBattleAnimSpritePal_Confetti, ANIM_TAG_CONFETTI},
+ {gBattleAnimSpritePal_GreenStar, ANIM_TAG_GREEN_STAR},
+ {gBattleAnimSpritePal_PinkCloud, ANIM_TAG_PINK_CLOUD},
+ {gBattleAnimSpritePal_SweatDrop, ANIM_TAG_SWEAT_DROP},
+ {gBattleAnimSpritePal_GuardRing, ANIM_TAG_GUARD_RING},
+ {gBattleAnimSpritePal_PurpleScratch, ANIM_TAG_PURPLE_SCRATCH},
+ {gBattleAnimSpritePal_PurpleScratch, ANIM_TAG_PURPLE_SWIPE},
+ {gBattleAnimSpritePal_Finger, ANIM_TAG_TAG_HAND},
+ {gBattleAnimSpritePal_SmallRedEye, ANIM_TAG_SMALL_RED_EYE},
+ {gBattleAnimSpritePal_HollowOrb, ANIM_TAG_HOLLOW_ORB},
+ {gBattleAnimSpritePal_HollowOrb, ANIM_TAG_X_SIGN},
+ {gBattleAnimSpritePal_BluegreenOrb, ANIM_TAG_BLUEGREEN_ORB},
+ {gBattleAnimSpritePal_PawPrint, ANIM_TAG_PAW_PRINT},
+ {gBattleAnimSpritePal_PurpleFlame, ANIM_TAG_PURPLE_FLAME},
+ {gBattleAnimSpritePal_RedBall, ANIM_TAG_RED_BALL},
+ {gBattleAnimSpritePal_SmellingsaltEffect, ANIM_TAG_SMELLINGSALT_EFFECT},
+ {gBattleAnimSpritePal_Meteor, ANIM_TAG_METEOR},
+ {gBattleAnimSpritePal_FlatRock, ANIM_TAG_FLAT_ROCK},
+ {gBattleAnimSpritePal_MagnifyingGlass, ANIM_TAG_MAGNIFYING_GLASS},
+ {gBattleAnimSpritePal_BrownOrb, ANIM_TAG_BROWN_ORB},
+ {gBattleAnimSpritePal_MetalSoundWaves, ANIM_TAG_METAL_SOUND_WAVES},
+ {gBattleAnimSpritePal_FlyingDirt, ANIM_TAG_FLYING_DIRT},
+ {gBattleAnimSpritePal_IcicleSpear, ANIM_TAG_ICICLE_SPEAR},
+ {gBattleAnimSpritePal_Hail, ANIM_TAG_HAIL},
+ {gBattleAnimSpritePal_GlowyRedOrb, ANIM_TAG_GLOWY_RED_ORB},
+ {gBattleAnimSpritePal_GlowyGreenOrb, ANIM_TAG_GLOWY_GREEN_ORB},
+ {gBattleAnimSpritePal_GreenSpike, ANIM_TAG_GREEN_SPIKE},
+ {gBattleAnimSpritePal_WhiteCircleOfLight, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT},
+ {gBattleAnimSpritePal_GlowyBlueOrb, ANIM_TAG_GLOWY_BLUE_ORB},
+ {gBattleAnimSpritePal_Pokeblock, ANIM_TAG_POKEBLOCK},
+ {gBattleAnimSpritePal_WhiteFeather, ANIM_TAG_WHITE_FEATHER},
+ {gBattleAnimSpritePal_Sparkle6, ANIM_TAG_SPARKLE_6},
+ {gBattleAnimSpritePal_Splash, ANIM_TAG_SPLASH},
+ {gBattleAnimSpritePal_Splash, ANIM_TAG_SWEAT_BEAD},
+ {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_1},
+ {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_2},
+ {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_3},
+ {gBattleAnimSpritePal_SlamHit2, ANIM_TAG_SLAM_HIT_2},
+ {gBattleAnimSpritePal_Recycle, ANIM_TAG_RECYCLE},
+ {gBattleAnimSpritePal_RedParticles, ANIM_TAG_RED_PARTICLES},
+ {gBattleAnimSpritePal_Protect, ANIM_TAG_PROTECT},
+ {gBattleAnimSpritePal_DirtMound, ANIM_TAG_DIRT_MOUND},
+ {gBattleAnimSpritePal_Shock3, ANIM_TAG_SHOCK_3},
+ {gBattleAnimSpritePal_WeatherBall, ANIM_TAG_WEATHER_BALL},
+ {gBattleAnimSpritePal_Bird, ANIM_TAG_BIRD},
+ {gBattleAnimSpritePal_CrossImpact, ANIM_TAG_CROSS_IMPACT},
+ {gBattleAnimSpritePal_Slash2, ANIM_TAG_SLASH_2},
+ {gBattleAnimSpritePal_WhipHit, ANIM_TAG_WHIP_HIT},
+ {gBattleAnimSpritePal_BlueRing2, ANIM_TAG_BLUE_RING_2},
};
const struct BattleAnimBackground gBattleAnimBackgroundTable[] =
{
- {gBattleAnimBackgroundImage_00, gBattleAnimBackgroundPalette_00, gBattleAnimBackgroundTilemap_00},
- {gBattleAnimBackgroundImage_00, gBattleAnimBackgroundPalette_00, gBattleAnimBackgroundTilemap_00},
- {gBattleAnimBackgroundImage_02, gBattleAnimBackgroundPalette_02, gBattleAnimBackgroundTilemap_02},
- {gBattleAnimBackgroundImage_03, gBattleAnimBackgroundPalette_03, gBattleAnimBackgroundTilemap_03},
- {gBattleAnimBackgroundImage_04, gBattleAnimBackgroundPalette_04, gBattleAnimBackgroundTilemap_04},
- {gBattleAnimBackgroundImage_04, gBattleAnimBackgroundPalette_04, gBattleAnimBackgroundTilemap_05},
- {gBattleAnimBackgroundImage_04, gBattleAnimBackgroundPalette_04, gBattleAnimBackgroundTilemap_06},
- {gBattleAnimBackgroundImage_07, gBattleAnimBackgroundPalette_07, gBattleAnimBackgroundTilemap_07},
- {gBattleAnimBackgroundImage_07, gBattleAnimBackgroundPalette_07, gBattleAnimBackgroundTilemap_08},
- {gBattleAnimBackgroundImage_09, gBattleAnimBackgroundPalette_09, gBattleAnimBackgroundTilemap_09},
- {gBattleAnimBackgroundImage_09, gBattleAnimBackgroundPalette_09, gBattleAnimBackgroundTilemap_10},
- {gBattleAnimBackgroundImage_11, gBattleAnimBackgroundPalette_11, gBattleAnimBackgroundTilemap_11},
- {gBattleAnimBackgroundImage_12, gBattleAnimBackgroundPalette_12, gBattleAnimBackgroundTilemap_12},
- {gBattleAnimBackgroundImage_12, gBattleAnimBackgroundPalette_12, gBattleAnimBackgroundTilemap_13},
- {gBattleAnimBackgroundImage_12, gBattleAnimBackgroundPalette_12, gBattleAnimBackgroundTilemap_14},
- {gBattleAnimBackgroundImage_15, gBattleAnimBackgroundPalette_15, gBattleAnimBackgroundTilemap_15},
- {gBattleAnimBackgroundImage_16, gBattleAnimBackgroundPalette_16, gBattleAnimBackgroundTilemap_16},
- {gBattleAnimBackgroundImage_17, gBattleAnimBackgroundPalette_17, gBattleAnimBackgroundTilemap_17},
- {gBattleAnimBackgroundImage_07, gBattleAnimBackgroundPalette_18, gBattleAnimBackgroundTilemap_07},
- {gBattleAnimBackgroundImage_07, gBattleAnimBackgroundPalette_18, gBattleAnimBackgroundTilemap_08},
- {gBattleAnimBackgroundImage_20, gBattleAnimBackgroundPalette_20, gBattleAnimBackgroundTilemap_20},
- {gBattleAnimBackgroundImage_21, gBattleAnimBackgroundPalette_21, gBattleAnimBackgroundTilemap_21},
- {gBattleAnimBackgroundImage_09, gBattleAnimBackgroundPalette_22, gBattleAnimBackgroundTilemap_09},
- {gBattleAnimBackgroundImage_09, gBattleAnimBackgroundPalette_22, gBattleAnimBackgroundTilemap_10},
- {gBattleAnimBackgroundImage_04, gBattleAnimBackgroundPalette_24, gBattleAnimBackgroundTilemap_04},
- {gBattleAnimBackgroundImage_04, gBattleAnimBackgroundPalette_24, gBattleAnimBackgroundTilemap_05},
- {gBattleAnimBackgroundImage_04, gBattleAnimBackgroundPalette_24, gBattleAnimBackgroundTilemap_06},
+ [BG_DARK_] = {gBattleAnimBgImage_Dark, gBattleAnimBgPalette_Dark, gBattleAnimBgTilemap_Dark},
+ [BG_DARK] = {gBattleAnimBgImage_Dark, gBattleAnimBgPalette_Dark, gBattleAnimBgTilemap_Dark},
+ [BG_GHOST] = {gBattleAnimBgImage_Ghost, gBattleAnimBgPalette_Ghost, gBattleAnimBgTilemap_Ghost},
+ [BG_PSYCHIC] = {gBattleAnimBgImage_Psychic, gBattleAnimBgPalette_Psychic, gBattleAnimBgTilemap_Psychic},
+ [BG_IMPACT_OPPONENT] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactOpponent},
+ [BG_IMPACT_PLAYER] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactPlayer},
+ [BG_IMPACT_CONTESTS] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactContests},
+ [BG_DRILL] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Drill, gBattleAnimBgTilemap_Drill},
+ [BG_DRILL_CONTESTS] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Drill, gBattleAnimBgTilemap_DrillContests},
+ [BG_HIGHSPEED_OPPONENT] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Highspeed, gBattleAnimBgTilemap_HighspeedOpponent},
+ [BG_HIGHSPEED_PLAYER] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Highspeed, gBattleAnimBgTilemap_HighspeedPlayer},
+ [BG_THUNDER] = {gBattleAnimBgImage_Thunder, gBattleAnimBgPalette_Thunder, gBattleAnimBgTilemap_Thunder},
+ [BG_GUILLOTINE_OPPONENT] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotineOpponent},
+ [BG_GUILLOTINE_PLAYER] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotinePlayer},
+ [BG_GUILLOTINE_CONTESTS] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotineContests},
+ [BG_ICE] = {gBattleAnimBgImage_Ice, gBattleAnimBgPalette_Ice, gBattleAnimBgTilemap_Ice},
+ [BG_COSMIC] = {gBattleAnimBgImage_Cosmic, gBattleAnimBgPalette_Cosmic, gBattleAnimBgTilemap_Cosmic},
+ [BG_IN_AIR] = {gBattleAnimBgImage_InAir, gBattleAnimBgPalette_InAir, gBattleAnimBgTilemap_InAir},
+ [BG_SKY] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Sky, gBattleAnimBgTilemap_Drill},
+ [BG_SKY_CONTESTS] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Sky, gBattleAnimBgTilemap_DrillContests},
+ [BG_AURORA] = {gBattleAnimBgImage_Aurora, gBattleAnimBgPalette_Aurora, gBattleAnimBgTilemap_Aurora},
+ [BG_FISSURE] = {gBattleAnimBgImage_Fissure, gBattleAnimBgPalette_Fissure, gBattleAnimBgTilemap_Fissure},
+ [BG_BUG_OPPONENT] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Bug, gBattleAnimBgTilemap_HighspeedOpponent},
+ [BG_BUG_PLAYER] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Bug, gBattleAnimBgTilemap_HighspeedPlayer},
+ [BG_SOLARBEAM_OPPONENT] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Solarbeam, gBattleAnimBgTilemap_ImpactOpponent},
+ [BG_SOLARBEAM_PLAYER] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Solarbeam, gBattleAnimBgTilemap_ImpactPlayer},
+ [BG_SOLARBEAM_CONTESTS] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Solarbeam, gBattleAnimBgTilemap_ImpactContests},
};
static void (* const sScriptCmdTable[])(void) =
@@ -2938,7 +2936,7 @@ s8 BattleAnimAdjustPanning2(s8 pan)
return pan;
}
-s16 KeepPanInRange(s16 panArg)
+s16 KeepPanInRange(s16 panArg, int oldPan)
{
s16 pan = panArg;
@@ -3448,5 +3446,3 @@ static void ScriptCmd_stopsound(void)
m4aMPlayStop(&gMPlayInfo_SE2);
sBattleAnimScriptPtr++;
}
-
-
diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c
index af4bc19ec..49bb0216b 100644
--- a/src/battle_anim_effects_1.c
+++ b/src/battle_anim_effects_1.c
@@ -1121,8 +1121,8 @@ const union AnimCmd *const gUnknown_08592918[] =
const struct SpriteTemplate gUnknown_0859291C =
{
- .tileTag = ANIM_TAG_UNUSED_HIT,
- .paletteTag = ANIM_TAG_UNUSED_HIT,
+ .tileTag = ANIM_TAG_HIT,
+ .paletteTag = ANIM_TAG_HIT,
.oam = &gUnknown_08524914,
.anims = gUnknown_08592918,
.images = NULL,
@@ -1132,8 +1132,8 @@ const struct SpriteTemplate gUnknown_0859291C =
const struct SpriteTemplate gUnknown_08592934 =
{
- .tileTag = ANIM_TAG_UNUSED_HIT_2,
- .paletteTag = ANIM_TAG_UNUSED_HIT_2,
+ .tileTag = ANIM_TAG_HIT_2,
+ .paletteTag = ANIM_TAG_HIT_2,
.oam = &gUnknown_08524914,
.anims = gUnknown_08592918,
.images = NULL,
@@ -1442,8 +1442,8 @@ const union AnimCmd *const gUnknown_08592BF4[] =
const struct SpriteTemplate gUnknown_08592BFC =
{
- .tileTag = ANIM_TAG_UNUSED_BUBBLE_BURST,
- .paletteTag = ANIM_TAG_UNUSED_BUBBLE_BURST,
+ .tileTag = ANIM_TAG_BUBBLE_BURST,
+ .paletteTag = ANIM_TAG_BUBBLE_BURST,
.oam = &gUnknown_0852490C,
.anims = gUnknown_08592BF4,
.images = NULL,
diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c
index e3295acb8..65cc55604 100755
--- a/src/battle_anim_effects_2.c
+++ b/src/battle_anim_effects_2.c
@@ -189,8 +189,8 @@ const union AffineAnimCmd *const gUnknown_08593300[] =
const struct SpriteTemplate gUnknown_08593304 =
{
- .tileTag = ANIM_TAG_UNUSED_EXPLOSION,
- .paletteTag = ANIM_TAG_UNUSED_EXPLOSION,
+ .tileTag = ANIM_TAG_EXPLOSION_6,
+ .paletteTag = ANIM_TAG_EXPLOSION_6,
.oam = &gUnknown_08524974,
.anims = gUnknown_085932E4,
.images = NULL,
@@ -359,8 +359,8 @@ const struct SpriteTemplate gUnknown_08593488 =
const struct SpriteTemplate gUnknown_085934A0 =
{
- .tileTag = ANIM_TAG_UNUSED_VOID_LINES,
- .paletteTag = ANIM_TAG_UNUSED_VOID_LINES,
+ .tileTag = ANIM_TAG_VOID_LINES,
+ .paletteTag = ANIM_TAG_VOID_LINES,
.oam = &gUnknown_08524A3C,
.anims = gDummySpriteAnimTable,
.images = NULL,
@@ -1734,90 +1734,25 @@ void sub_8103FE8(struct Sprite *sprite)
sprite->callback = sub_8104018;
}
-#ifdef NONMATCHING
static void sub_8104018(struct Sprite *sprite)
{
- u16 r7;
- u16 r5;
+ u16 id, val;
int i;
+
if (++sprite->data[1] == 2)
{
sprite->data[1] = 0;
- r5 = sprite->data[0];
- r7 = gPlttBufferFaded[8 + r5];
- for (i = 0; i < 8; i++)
- {
- gPlttBufferFaded[i + r5 + 8] = gPlttBufferFaded[i + r5 + 9];
- }
- gPlttBufferFaded[r5 + 15] = r7;
+ id = sprite->data[0];
+ val = gPlttBufferFaded[8 + id];
+ for (i = 8; i < 16; i++)
+ gPlttBufferFaded[i + id] = gPlttBufferFaded[i + id + 1];
+
+ gPlttBufferFaded[id + 15] = val;
if (++sprite->data[2] == 24)
DestroyAnimSprite(sprite);
}
}
-#else
-NAKED
-static void sub_8104018(struct Sprite *sprite)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- adds r4, r0, 0\n\
- ldrh r0, [r4, 0x30]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x30]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x2\n\
- bne _0810407C\n\
- movs r0, 0\n\
- strh r0, [r4, 0x30]\n\
- ldrh r5, [r4, 0x2E]\n\
- ldr r1, =gPlttBufferFaded\n\
- adds r0, r5, 0\n\
- adds r0, 0x8\n\
- lsls r0, 1\n\
- adds r0, r1 \n\
- ldrh r7, [r0]\n\
- adds r6, r1, 0\n\
- adds r1, r5, 0\n\
- adds r1, 0x9\n\
- lsls r0, r5, 1\n\
- adds r0, r6\n\
- adds r2, r0, 0\n\
- adds r2, 0x10\n\
- movs r3, 0x7\n\
- lsls r1, 1\n\
- adds r1, r6\n\
-_08104050:\n\
- ldrh r0, [r1]\n\
- strh r0, [r2]\n\
- adds r1, 0x2\n\
- adds r2, 0x2\n\
- subs r3, 0x1\n\
- cmp r3, 0\n\
- bge _08104050\n\
- adds r0, r5, 0\n\
- adds r0, 0xF\n\
- lsls r0, 1\n\
- adds r0, r6\n\
- strh r7, [r0]\n\
- ldrh r0, [r4, 0x32]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x32]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x18\n\
- bne _0810407C\n\
- adds r0, r4, 0\n\
- bl DestroyAnimSprite\n\
-_0810407C:\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n\
-.syntax divided\n");
-}
-#endif
void sub_8104088(struct Sprite *sprite)
{
@@ -3067,7 +3002,7 @@ void sub_8105CB4(u8 taskId)
paletteNums[i] = AllocSpritePalette(ANIM_SPRITES_START - i);
gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000);
- LZDecompressWram(gBattleAnimSpritePalette_206, gMonSpritesGfxPtr->field_17C);
+ LZDecompressWram(gBattleAnimSpritePal_MusicNotes2, gMonSpritesGfxPtr->field_17C);
for (i = 0; i < 3; i++)
LoadPalette(&gMonSpritesGfxPtr->field_17C[i * 32], (u16)((paletteNums[i] << 4) + 0x100), 32);
@@ -3381,11 +3316,11 @@ void sub_81064F8(u8 taskId)
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
sub_80A6B30(&animBg);
if (IsContest())
- sub_80A6D60(&animBg, &gBattleAnimBackgroundTilemap_ScaryFaceContest, 0);
+ sub_80A6D60(&animBg, &gBattleAnimBgTilemap_ScaryFaceContest, 0);
else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT)
- sub_80A6D60(&animBg, &gBattleAnimBackgroundTilemap_ScaryFacePlayer, 0);
+ sub_80A6D60(&animBg, &gBattleAnimBgTilemap_ScaryFacePlayer, 0);
else
- sub_80A6D60(&animBg, &gBattleAnimBackgroundTilemap_ScaryFaceOpponent, 0);
+ sub_80A6D60(&animBg, &gBattleAnimBgTilemap_ScaryFaceOpponent, 0);
AnimLoadCompressedBgGfx(animBg.bgId, gUnknown_08C249F8, animBg.tilesOffset);
LoadCompressedPalette(gUnknown_08C249D0, animBg.paletteId * 16, 32);
diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c
index efa2620fd..ab765b8c1 100755
--- a/src/battle_anim_effects_3.c
+++ b/src/battle_anim_effects_3.c
@@ -4,7 +4,7 @@
#include "battle_anim.h"
#include "bg.h"
#include "contest.h"
-#include "data2.h"
+#include "data.h"
#include "decompress.h"
#include "dma3.h"
#include "gpu_regs.h"
@@ -25,8 +25,6 @@
#include "constants/weather.h"
extern const struct SpriteTemplate gUnknown_08593114;
-extern const union AffineAnimCmd *const gUnknown_082FF6C0[];
-extern const union AffineAnimCmd *const gUnknown_082FF694[];
void sub_815A0D4(struct Sprite *);
void sub_815A1B0(struct Sprite *);
diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c
index 372377a0c..c6058204d 100644
--- a/src/battle_anim_mons.c
+++ b/src/battle_anim_mons.c
@@ -3,7 +3,7 @@
#include "battle_anim.h"
#include "bg.h"
#include "contest.h"
-#include "data2.h"
+#include "data.h"
#include "decompress.h"
#include "dma3.h"
#include "gpu_regs.h"
@@ -27,11 +27,6 @@
#define IS_DOUBLE_BATTLE() ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
extern const struct OamData gUnknown_0852497C;
-extern const struct MonCoords gMonFrontPicCoords[];
-extern const struct MonCoords gMonBackPicCoords[];
-extern const u8 gEnemyMonElevation[];
-extern const struct CompressedSpriteSheet gMonFrontPicTable[];
-extern const union AffineAnimCmd *gUnknown_082FF6C0[];
static void sub_80A6FB4(struct Sprite *sprite);
static void sub_80A7144(struct Sprite *sprite);
diff --git a/src/battle_anim_sound_tasks.c b/src/battle_anim_sound_tasks.c
index e5f0cd165..573feb41c 100644
--- a/src/battle_anim_sound_tasks.c
+++ b/src/battle_anim_sound_tasks.c
@@ -53,7 +53,7 @@ static void sub_8158B98(u8 taskId)
PlaySE12WithPanning(gTasks[taskId].data[0], pan);
}
pan += panIncrement;
- gTasks[taskId].data[2] = KeepPanInRange(pan);
+ gTasks[taskId].data[2] = KeepPanInRange(pan, panIncrement);
}
}
@@ -116,9 +116,12 @@ static void sub_8158D08(u8 taskId)
if (gTasks[taskId].data[10]++ == gTasks[taskId].data[5])
{
+ u16 dPan, oldPan;
gTasks[taskId].data[10] = 0;
- gTasks[taskId].data[11] += gTasks[taskId].data[3];
- gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11]);
+ dPan = gTasks[taskId].data[3];
+ oldPan = gTasks[taskId].data[11] ;
+ gTasks[taskId].data[11] = dPan + oldPan;
+ gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11], oldPan);
}
}
// task end
@@ -368,71 +371,21 @@ void sub_8159278(u8 taskId)
sub_8159308(taskId);
}
-#ifdef NONMATCHING
void sub_8159308(u8 taskId)
{
- s16 panIncrement = gTasks[taskId].data[3];
+ u16 panIncrement = gTasks[taskId].data[3];
if (gTasks[taskId].data[10]++ == gTasks[taskId].data[5])
{
+ u16 oldPan;
gTasks[taskId].data[10] = 0;
-
- gTasks[taskId].data[11] += panIncrement;
- gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11]);
+ oldPan = gTasks[taskId].data[11];
+ gTasks[taskId].data[11] = panIncrement + oldPan;
+ gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11], oldPan);
}
gUnknown_02038440 = gTasks[taskId].data[11];
if (gTasks[taskId].data[11] == gTasks[taskId].data[2])
DestroyAnimVisualTask(taskId);
}
-#else
-NAKED
-void sub_8159308(u8 taskId)
-{
- asm_unified(" push {r4,r5,lr}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- adds r5, r0, 0\n\
- ldr r1, =gTasks\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r4, r0, r1\n\
- ldrh r2, [r4, 0xE]\n\
- ldrh r0, [r4, 0x1C]\n\
- adds r1, r0, 0x1\n\
- strh r1, [r4, 0x1C]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- movs r3, 0x12\n\
- ldrsh r1, [r4, r3]\n\
- cmp r0, r1\n\
- bne _08159342\n\
- movs r0, 0\n\
- strh r0, [r4, 0x1C]\n\
- ldrh r1, [r4, 0x1E]\n\
- adds r0, r2, r1\n\
- strh r0, [r4, 0x1E]\n\
- movs r2, 0x1E\n\
- ldrsh r0, [r4, r2]\n\
- bl KeepPanInRange\n\
- strh r0, [r4, 0x1E]\n\
-_08159342:\n\
- ldr r1, =gUnknown_02038440\n\
- ldrh r0, [r4, 0x1E]\n\
- strb r0, [r1]\n\
- movs r3, 0x1E\n\
- ldrsh r1, [r4, r3]\n\
- movs r2, 0xC\n\
- ldrsh r0, [r4, r2]\n\
- cmp r1, r0\n\
- bne _0815935A\n\
- adds r0, r5, 0\n\
- bl DestroyAnimVisualTask\n\
-_0815935A:\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .pool");
-}
-#endif
+
diff --git a/src/battle_anim_special.c b/src/battle_anim_special.c
index 92874fe09..740340d14 100755
--- a/src/battle_anim_special.c
+++ b/src/battle_anim_special.c
@@ -16,9 +16,10 @@
#include "task.h"
#include "trig.h"
#include "util.h"
-#include "constants/rgb.h"
#include "constants/items.h"
+#include "constants/moves.h"
#include "constants/songs.h"
+#include "constants/rgb.h"
// iwram
int gUnknown_030062DC;
@@ -103,39 +104,52 @@ static const struct BallCaptureSuccessStarData sBallCaptureSuccessStarData[] =
},
};
-const struct CompressedSpriteSheet gBallOpenParticleSpritesheets[] =
-{
- {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6EC},
- {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6ED},
- {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6EE},
- {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6EF},
- {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F0},
- {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F1},
- {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F2},
- {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F3},
- {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F4},
- {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F5},
- {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F6},
- {gBattleAnimSpriteSheet_Particles, 0x100, 0xD6F7},
+#define TAG_PARTICLES_POKEBALL 55020
+#define TAG_PARTICLES_GREATBALL 55021
+#define TAG_PARTICLES_SAFARIBALL 55022
+#define TAG_PARTICLES_ULTRABALL 55023
+#define TAG_PARTICLES_MASTERBALL 55024
+#define TAG_PARTICLES_NETBALL 55025
+#define TAG_PARTICLES_DIVEBALL 55026
+#define TAG_PARTICLES_NESTBALL 55027
+#define TAG_PARTICLES_REPEATBALL 55028
+#define TAG_PARTICLES_TIMERBALL 55029
+#define TAG_PARTICLES_LUXURYBALL 55030
+#define TAG_PARTICLES_PREMIERBALL 55031
+
+const struct CompressedSpriteSheet gBallParticleSpritesheets[] =
+{
+ {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_POKEBALL},
+ {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_GREATBALL},
+ {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_SAFARIBALL},
+ {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_ULTRABALL},
+ {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_MASTERBALL},
+ {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_NETBALL},
+ {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_DIVEBALL},
+ {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_NESTBALL},
+ {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_REPEATBALL},
+ {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_TIMERBALL},
+ {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_LUXURYBALL},
+ {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_PREMIERBALL},
};
-const struct CompressedSpritePalette gBallOpenParticlePalettes[] =
-{
- {gBattleAnimSpritePalette_136, 0xD6EC},
- {gBattleAnimSpritePalette_136, 0xD6ED},
- {gBattleAnimSpritePalette_136, 0xD6EE},
- {gBattleAnimSpritePalette_136, 0xD6EF},
- {gBattleAnimSpritePalette_136, 0xD6F0},
- {gBattleAnimSpritePalette_136, 0xD6F1},
- {gBattleAnimSpritePalette_136, 0xD6F2},
- {gBattleAnimSpritePalette_136, 0xD6F3},
- {gBattleAnimSpritePalette_136, 0xD6F4},
- {gBattleAnimSpritePalette_136, 0xD6F5},
- {gBattleAnimSpritePalette_136, 0xD6F6},
- {gBattleAnimSpritePalette_136, 0xD6F7},
+const struct CompressedSpritePalette gBallParticlePalettes[] =
+{
+ {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_POKEBALL},
+ {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_GREATBALL},
+ {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_SAFARIBALL},
+ {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_ULTRABALL},
+ {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_MASTERBALL},
+ {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_NETBALL},
+ {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_DIVEBALL},
+ {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_NESTBALL},
+ {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_REPEATBALL},
+ {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_TIMERBALL},
+ {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_LUXURYBALL},
+ {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_PREMIERBALL},
};
-const union AnimCmd gUnknown_085E5154[] =
+const union AnimCmd gAnim_RegularBall[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_FRAME(1, 1),
@@ -146,64 +160,64 @@ const union AnimCmd gUnknown_085E5154[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gUnknown_085E5170[] =
+const union AnimCmd gAnim_MasterBall[] =
{
ANIMCMD_FRAME(3, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_085E5178[] =
+const union AnimCmd gAnim_NetDiveBall[] =
{
ANIMCMD_FRAME(4, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_085E5180[] =
+const union AnimCmd gAnim_NestBall[] =
{
ANIMCMD_FRAME(5, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_085E5188[] =
+const union AnimCmd gAnim_LuxuryPremierBall[] =
{
ANIMCMD_FRAME(6, 4),
ANIMCMD_FRAME(7, 4),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gUnknown_085E5194[] =
+const union AnimCmd gAnim_UltraRepeatTimerBall[] =
{
ANIMCMD_FRAME(7, 4),
ANIMCMD_END,
};
-const union AnimCmd *const gUnknown_085E519C[] =
+const union AnimCmd *const gAnims_BallParticles[] =
{
- gUnknown_085E5154,
- gUnknown_085E5170,
- gUnknown_085E5178,
- gUnknown_085E5180,
- gUnknown_085E5188,
- gUnknown_085E5194,
+ gAnim_RegularBall,
+ gAnim_MasterBall,
+ gAnim_NetDiveBall,
+ gAnim_NestBall,
+ gAnim_LuxuryPremierBall,
+ gAnim_UltraRepeatTimerBall,
};
-const u8 gBallOpenParticleAnimNums[] =
-{
- 0,
- 0,
- 0,
- 5,
- 1,
- 2,
- 2,
- 3,
- 5,
- 5,
- 4,
- 4,
+const u8 gBallParticleAnimNums[] =
+{
+ [BALL_POKE] = 0,
+ [BALL_GREAT] = 0,
+ [BALL_SAFARI] = 0,
+ [BALL_ULTRA] = 5,
+ [BALL_MASTER] = 1,
+ [BALL_NET] = 2,
+ [BALL_DIVE] = 2,
+ [BALL_NEST] = 3,
+ [BALL_REPEAT] = 5,
+ [BALL_TIMER] = 5,
+ [BALL_LUXURY] = 4,
+ [BALL_PREMIER] = 4,
};
-const TaskFunc gBallOpenParticleAnimationFuncs[] =
+const TaskFunc gBallParticleAnimationFuncs[] =
{
PokeBallOpenParticleAnimation,
GreatBallOpenParticleAnimation,
@@ -219,132 +233,134 @@ const TaskFunc gBallOpenParticleAnimationFuncs[] =
PremierBallOpenParticleAnimation,
};
-const struct SpriteTemplate gUnknown_085E51F0[] =
+const struct SpriteTemplate gBallParticlesSpriteTemplates[] =
{
{
- .tileTag = 55020,
- .paletteTag = 55020,
+ .tileTag = TAG_PARTICLES_POKEBALL,
+ .paletteTag = TAG_PARTICLES_POKEBALL,
.oam = &gUnknown_08524904,
- .anims = gUnknown_085E519C,
+ .anims = gAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
{
- .tileTag = 55021,
- .paletteTag = 55021,
+ .tileTag = TAG_PARTICLES_GREATBALL,
+ .paletteTag = TAG_PARTICLES_GREATBALL,
.oam = &gUnknown_08524904,
- .anims = gUnknown_085E519C,
+ .anims = gAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
{
- .tileTag = 55022,
- .paletteTag = 55022,
+ .tileTag = TAG_PARTICLES_SAFARIBALL,
+ .paletteTag = TAG_PARTICLES_SAFARIBALL,
.oam = &gUnknown_08524904,
- .anims = gUnknown_085E519C,
+ .anims = gAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
{
- .tileTag = 55023,
- .paletteTag = 55023,
+ .tileTag = TAG_PARTICLES_ULTRABALL,
+ .paletteTag = TAG_PARTICLES_ULTRABALL,
.oam = &gUnknown_08524904,
- .anims = gUnknown_085E519C,
+ .anims = gAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
{
- .tileTag = 55024,
- .paletteTag = 55024,
+ .tileTag = TAG_PARTICLES_MASTERBALL,
+ .paletteTag = TAG_PARTICLES_MASTERBALL,
.oam = &gUnknown_08524904,
- .anims = gUnknown_085E519C,
+ .anims = gAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
{
- .tileTag = 55025,
- .paletteTag = 55025,
+ .tileTag = TAG_PARTICLES_NETBALL,
+ .paletteTag = TAG_PARTICLES_NETBALL,
.oam = &gUnknown_08524904,
- .anims = gUnknown_085E519C,
+ .anims = gAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
{
- .tileTag = 55026,
- .paletteTag = 55026,
+ .tileTag = TAG_PARTICLES_DIVEBALL,
+ .paletteTag = TAG_PARTICLES_DIVEBALL,
.oam = &gUnknown_08524904,
- .anims = gUnknown_085E519C,
+ .anims = gAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
{
- .tileTag = 55027,
- .paletteTag = 55027,
+ .tileTag = TAG_PARTICLES_NESTBALL,
+ .paletteTag = TAG_PARTICLES_NESTBALL,
.oam = &gUnknown_08524904,
- .anims = gUnknown_085E519C,
+ .anims = gAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
{
- .tileTag = 55028,
- .paletteTag = 55028,
+ .tileTag = TAG_PARTICLES_REPEATBALL,
+ .paletteTag = TAG_PARTICLES_REPEATBALL,
.oam = &gUnknown_08524904,
- .anims = gUnknown_085E519C,
+ .anims = gAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
{
- .tileTag = 55029,
- .paletteTag = 55029,
+ .tileTag = TAG_PARTICLES_TIMERBALL,
+ .paletteTag = TAG_PARTICLES_TIMERBALL,
.oam = &gUnknown_08524904,
- .anims = gUnknown_085E519C,
+ .anims = gAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
{
- .tileTag = 55030,
- .paletteTag = 55030,
+ .tileTag = TAG_PARTICLES_LUXURYBALL,
+ .paletteTag = TAG_PARTICLES_LUXURYBALL,
.oam = &gUnknown_08524904,
- .anims = gUnknown_085E519C,
+ .anims = gAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
{
- .tileTag = 55031,
- .paletteTag = 55031,
+ .tileTag = TAG_PARTICLES_PREMIERBALL,
+ .paletteTag = TAG_PARTICLES_PREMIERBALL,
.oam = &gUnknown_08524904,
- .anims = gUnknown_085E519C,
+ .anims = gAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
};
-const u16 gUnknown_085E5310[] =
-{
- RGB(31, 22, 30),
- RGB(16, 23, 30),
- RGB(23, 30, 20),
- RGB(31, 31, 15),
- RGB(23, 20, 28),
- RGB(21, 31, 25),
- RGB(12, 25, 30),
- RGB(30, 27, 10),
- RGB(31, 24, 16),
- RGB(29, 30, 30),
- RGB(31, 17, 10),
- RGB(31, 9, 10),
+const u16 gBallOpenFadeColors[] =
+{
+ [BALL_POKE] = RGB(31, 22, 30),
+ [BALL_GREAT] = RGB(16, 23, 30),
+ [BALL_SAFARI] = RGB(23, 30, 20),
+ [BALL_ULTRA] = RGB(31, 31, 15),
+ [BALL_MASTER] = RGB(23, 20, 28),
+ [BALL_NET] = RGB(21, 31, 25),
+ [BALL_DIVE] = RGB(12, 25, 30),
+ [BALL_NEST] = RGB(30, 27, 10),
+ [BALL_REPEAT] = RGB(31, 24, 16),
+ [BALL_TIMER] = RGB(29, 30, 30),
+ [BALL_LUXURY] = RGB(31, 17, 10),
+ [BALL_PREMIER] = RGB(31, 9, 10),
+
+ // Garbage data
RGB(0, 0, 0),
RGB(1, 16, 0),
RGB(3, 0, 1),
@@ -355,10 +371,10 @@ const u16 gUnknown_085E5310[] =
RGB(4, 0, 0),
};
-const struct SpriteTemplate gBattleAnimSpriteTemplate_85E5338 =
+const struct SpriteTemplate gPokeblockSpriteTemplate =
{
- .tileTag = ANIM_TAG_UNUSED_RED_BRICK,
- .paletteTag = ANIM_TAG_UNUSED_RED_BRICK,
+ .tileTag = ANIM_TAG_POKEBLOCK,
+ .paletteTag = ANIM_TAG_POKEBLOCK,
.oam = &gUnknown_0852490C,
.anims = gDummySpriteAnimTable,
.images = NULL,
@@ -675,9 +691,9 @@ void sub_8170D24(u8 taskId)
void AnimTask_IsBallBlockedByTrainer(u8 taskId)
{
if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_TRAINER_BLOCK)
- gBattleAnimArgs[7] = -1;
+ gBattleAnimArgs[ARG_RET_ID] = -1;
else
- gBattleAnimArgs[7] = 0;
+ gBattleAnimArgs[ARG_RET_ID] = 0;
DestroyAnimVisualTask(taskId);
}
@@ -687,30 +703,30 @@ u8 ItemIdToBallId(u16 ballItem)
switch (ballItem)
{
case ITEM_MASTER_BALL:
- return 4;
+ return BALL_MASTER;
case ITEM_ULTRA_BALL:
- return 3;
+ return BALL_ULTRA;
case ITEM_GREAT_BALL:
- return 1;
+ return BALL_GREAT;
case ITEM_SAFARI_BALL:
- return 2;
+ return BALL_SAFARI;
case ITEM_NET_BALL:
- return 5;
+ return BALL_NET;
case ITEM_DIVE_BALL:
- return 6;
+ return BALL_DIVE;
case ITEM_NEST_BALL:
- return 7;
+ return BALL_NEST;
case ITEM_REPEAT_BALL:
- return 8;
+ return BALL_REPEAT;
case ITEM_TIMER_BALL:
- return 9;
+ return BALL_TIMER;
case ITEM_LUXURY_BALL:
- return 10;
+ return BALL_LUXURY;
case ITEM_PREMIER_BALL:
- return 11;
+ return BALL_PREMIER;
case ITEM_POKE_BALL:
default:
- return 0;
+ return BALL_POKE;
}
}
@@ -804,7 +820,6 @@ static void sub_8171134(struct Sprite *sprite)
{
int i;
u8 ballId;
- int ballId2; // extra var needed to match
if (TranslateAnimHorizontalArc(sprite))
{
@@ -825,15 +840,15 @@ static void sub_8171134(struct Sprite *sprite)
sprite->data[5] = 0;
sprite->callback = sub_81711E8;
+
ballId = ItemIdToBallId(gLastUsedItem);
- ballId2 = ballId;
- if (ballId2 > 11)
- return;
- if (ballId2 < 0)
- return;
-
- AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId);
- LaunchBallFadeMonTask(0, gBattleAnimTarget, 14, ballId);
+ switch (ballId)
+ {
+ case 0 ... POKEBALL_COUNT - 1:
+ AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId);
+ LaunchBallFadeMonTask(0, gBattleAnimTarget, 14, ballId);
+ break;
+ }
}
}
}
@@ -1259,7 +1274,7 @@ static void sub_81719EC(struct Sprite *sprite)
sub_8171D60(4);
for (i = 0; i < 3; i++)
{
- u8 spriteId = CreateSprite(&gUnknown_085E51F0[4], sprite->pos1.x, sprite->pos1.y, subpriority);
+ u8 spriteId = CreateSprite(&gBallParticlesSpriteTemplates[4], sprite->pos1.x, sprite->pos1.y, subpriority);
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].data[0] = 24;
@@ -1268,7 +1283,7 @@ static void sub_81719EC(struct Sprite *sprite)
gSprites[spriteId].data[5] = sBallCaptureSuccessStarData[i].unk2;
InitAnimArcTranslation(&gSprites[spriteId]);
gSprites[spriteId].callback = sub_8171AAC;
- StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[4]);
+ StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[4]);
}
}
}
@@ -1280,28 +1295,23 @@ static void sub_8171AAC(struct Sprite *sprite)
DestroySprite(sprite);
}
-// fakematching. I think the return type of ItemIdToBallId()
-// is wrong because of the weird required casting.
static void sub_8171AE4(struct Sprite *sprite)
{
u8 ballId;
- int ballId2; // extra var needed to match
StartSpriteAnim(sprite, 1);
StartSpriteAffineAnim(sprite, 0);
sprite->callback = sub_8171BAC;
ballId = ItemIdToBallId(gLastUsedItem);
- ballId2 = ballId;
- if (ballId2 > 11)
- goto LABEL;
- if (ballId2 < 0)
- goto LABEL;
-
- AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId);
- LaunchBallFadeMonTask(1, gBattleAnimTarget, 14, ballId);
+ switch (ballId)
+ {
+ case 0 ... POKEBALL_COUNT - 1:
+ AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId);
+ LaunchBallFadeMonTask(1, gBattleAnimTarget, 14, ballId);
+ break;
+ }
- LABEL:
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = 0;
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], 1);
AnimateSprite(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]]);
@@ -1314,7 +1324,7 @@ static void sub_8171BAC(struct Sprite *sprite)
if (sprite->animEnded)
sprite->invisible = 1;
-
+
if (gSprites[gBattlerSpriteIds[gBattleAnimTarget]].affineAnimEnded)
{
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], 0);
@@ -1323,7 +1333,7 @@ static void sub_8171BAC(struct Sprite *sprite)
else
{
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] -= 288;
- gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] >> 8;
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] >> 8;
}
if (sprite->animEnded && next)
@@ -1374,10 +1384,10 @@ static void sub_8171D60(u8 ballId)
{
u8 taskId;
- if (GetSpriteTileStartByTag(gBallOpenParticleSpritesheets[ballId].tag) == 0xFFFF)
+ if (GetSpriteTileStartByTag(gBallParticleSpritesheets[ballId].tag) == 0xFFFF)
{
- LoadCompressedSpriteSheetUsingHeap(&gBallOpenParticleSpritesheets[ballId]);
- LoadCompressedSpritePaletteUsingHeap(&gBallOpenParticlePalettes[ballId]);
+ LoadCompressedSpriteSheetUsingHeap(&gBallParticleSpritesheets[ballId]);
+ LoadCompressedSpritePaletteUsingHeap(&gBallParticlePalettes[ballId]);
}
}
@@ -1386,7 +1396,7 @@ u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId)
u8 taskId;
sub_8171D60(ballId);
- taskId = CreateTask(gBallOpenParticleAnimationFuncs[ballId], 5);
+ taskId = CreateTask(gBallParticleAnimationFuncs[ballId], 5);
gTasks[taskId].data[1] = x;
gTasks[taskId].data[2] = y;
gTasks[taskId].data[3] = priority;
@@ -1419,11 +1429,11 @@ static void PokeBallOpenParticleAnimation(u8 taskId)
priority = gTasks[taskId].data[3];
subpriority = gTasks[taskId].data[4];
- spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
sub_8171E20();
- StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = PokeBallOpenParticleAnimation_Step1;
gSprites[spriteId].oam.priority = priority;
@@ -1478,11 +1488,11 @@ static void TimerBallOpenParticleAnimation(u8 taskId)
for (i = 0; i < 8; i++)
{
- spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
sub_8171E20();
- StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 32;
@@ -1512,11 +1522,11 @@ static void DiveBallOpenParticleAnimation(u8 taskId)
for (i = 0; i < 8; i++)
{
- spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
sub_8171E20();
- StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 32;
@@ -1547,11 +1557,11 @@ static void SafariBallOpenParticleAnimation(u8 taskId)
for (i = 0; i < 8; i++)
{
- spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
sub_8171E20();
- StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 32;
@@ -1582,11 +1592,11 @@ static void UltraBallOpenParticleAnimation(u8 taskId)
for (i = 0; i < 10; i++)
{
- spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
sub_8171E20();
- StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 25;
@@ -1623,11 +1633,11 @@ static void GreatBallOpenParticleAnimation(u8 taskId)
for (i = 0; i < 8; i++)
{
- spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
sub_8171E20();
- StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 32;
@@ -1671,13 +1681,13 @@ static void RepeatBallOpenParticleAnimation(u8 taskId)
priority = gTasks[taskId].data[3];
subpriority = gTasks[taskId].data[4];
- for (i = 0; i < 12; i++)
+ for (i = 0; i < POKEBALL_COUNT; i++)
{
- spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
sub_8171E20();
- StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = RepeatBallOpenParticleAnimation_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 21;
@@ -1717,11 +1727,11 @@ static void MasterBallOpenParticleAnimation(u8 taskId)
{
for (i = 0; i < 8; i++)
{
- spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
sub_8171E20();
- StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 32;
@@ -1761,11 +1771,11 @@ static void PremierBallOpenParticleAnimation(u8 taskId)
for (i = 0; i < 8; i++)
{
- spriteId = CreateSprite(&gUnknown_085E51F0[ballId], x, y, subpriority);
+ spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
sub_8171E20();
- StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballId]);
+ StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = PremierBallOpenParticleAnimation_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 32;
@@ -1792,12 +1802,10 @@ static void PremierBallOpenParticleAnimation_Step1(struct Sprite *sprite)
static void DestroyBallOpenAnimationParticle(struct Sprite *sprite)
{
int i, j;
- int temp;
if (!gMain.inBattle)
{
- temp = sprite->data[7]; // temp var needed to match
- if (temp == 1)
+ if (sprite->data[7] == 1)
DestroySpriteAndFreeResources(sprite);
else
DestroySprite(sprite);
@@ -1807,18 +1815,18 @@ static void DestroyBallOpenAnimationParticle(struct Sprite *sprite)
gBattleSpritesDataPtr->animationData->field_A--;
if (gBattleSpritesDataPtr->animationData->field_A == 0)
{
- for (i = 0; i < 12; i++)
+ for (i = 0; i < POKEBALL_COUNT; i++)
{
- if (FuncIsActiveTask(gBallOpenParticleAnimationFuncs[i]) == TRUE)
+ if (FuncIsActiveTask(gBallParticleAnimationFuncs[i]) == TRUE)
break;
}
- if (i == 12)
+ if (i == POKEBALL_COUNT)
{
- for (j = 0; j < 12; j++)
+ for (j = 0; j < POKEBALL_COUNT; j++)
{
- FreeSpriteTilesByTag(gBallOpenParticleSpritesheets[j].tag);
- FreeSpritePaletteByTag(gBallOpenParticlePalettes[j].tag);
+ FreeSpriteTilesByTag(gBallParticleSpritesheets[j].tag);
+ FreeSpritePaletteByTag(gBallParticlePalettes[j].tag);
}
}
@@ -1843,12 +1851,12 @@ u8 LaunchBallFadeMonTask(u8 unfadeLater, u8 battler, u32 selectedPalettes, u8 ba
if (!unfadeLater)
{
- BlendPalette(battler * 16 + 0x100, 16, 0, gUnknown_085E5310[ballId]);
+ BlendPalette(battler * 16 + 0x100, 16, 0, gBallOpenFadeColors[ballId]);
gTasks[taskId].data[1] = 1;
}
else
{
- BlendPalette(battler * 16 + 0x100, 16, 16, gUnknown_085E5310[ballId]);
+ BlendPalette(battler * 16 + 0x100, 16, 16, gBallOpenFadeColors[ballId]);
gTasks[taskId].data[0] = 16;
gTasks[taskId].data[1] = -1;
gTasks[taskId].func = sub_8172B40;
@@ -1864,7 +1872,7 @@ static void sub_8172AB0(u8 taskId)
if (gTasks[taskId].data[2] <= 16)
{
- BlendPalette(gTasks[taskId].data[3] * 16 + 0x100, 16, gTasks[taskId].data[0], gUnknown_085E5310[ballId]);
+ BlendPalette(gTasks[taskId].data[3] * 16 + 0x100, 16, gTasks[taskId].data[0], gBallOpenFadeColors[ballId]);
gTasks[taskId].data[0] += gTasks[taskId].data[1];
gTasks[taskId].data[2]++;
}
@@ -1892,7 +1900,7 @@ static void sub_8172B90(u8 taskId)
if (gTasks[taskId].data[2] <= 16)
{
- BlendPalette(gTasks[taskId].data[3] * 16 + 0x100, 16, gTasks[taskId].data[0], gUnknown_085E5310[ballId]);
+ BlendPalette(gTasks[taskId].data[3] * 16 + 0x100, 16, gTasks[taskId].data[0], gBallOpenFadeColors[ballId]);
gTasks[taskId].data[0] += gTasks[taskId].data[1];
gTasks[taskId].data[2]++;
}
@@ -1906,9 +1914,8 @@ void sub_8172BF0(u8 taskId)
{
u8 spriteId;
u32 x;
- u32 done;
-
- done = FALSE;
+ u32 done = FALSE;
+
spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
switch (gTasks[taskId].data[10])
{
@@ -1942,8 +1949,7 @@ void sub_8172BF0(u8 taskId)
if (gSprites[spriteId].pos2.x <= 0)
{
gSprites[spriteId].pos2.x = 0;
- // done = FALSE; // fakematching--can't get the tail merge correct
- goto DONE;
+ done = TRUE;
}
}
else
@@ -1956,10 +1962,8 @@ void sub_8172BF0(u8 taskId)
}
if (done)
- {
- DONE:
DestroyAnimVisualTask(taskId);
- }
+
break;
}
}
@@ -1998,13 +2002,13 @@ void sub_8172D98(u8 taskId)
}
}
-void sub_8172E9C(u8 taskId)
+void AnimTask_IsAttackerBehindSubstitute(u8 taskId)
{
- gBattleAnimArgs[7] = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].behindSubstitute;
+ gBattleAnimArgs[ARG_RET_ID] = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].behindSubstitute;
DestroyAnimVisualTask(taskId);
}
-void sub_8172ED0(u8 taskId)
+void AnimTask_TargetToEffectBattler(u8 taskId)
{
gBattleAnimTarget = gEffectBattler;
DestroyAnimVisualTask(taskId);
@@ -2030,10 +2034,10 @@ void sub_8172EF0(u8 battler, struct Pokemon *mon)
if (isShiny)
{
- if (GetSpriteTileStartByTag(0x27F9) == 0xFFFF)
+ if (GetSpriteTileStartByTag(ANIM_TAG_GOLD_STARS) == 0xFFFF)
{
- LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[233]);
- LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[233]);
+ LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[ANIM_TAG_GOLD_STARS - ANIM_SPRITES_START]);
+ LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[ANIM_TAG_GOLD_STARS - ANIM_SPRITES_START]);
}
taskId1 = CreateTask(sub_8172FEC, 10);
@@ -2063,7 +2067,7 @@ static void sub_8172FEC(u8 taskId)
gTasks[taskId].data[13]++;
return;
}
-
+
if (gBattleSpritesDataPtr->animationData->field_A)
return;
@@ -2103,7 +2107,7 @@ static void sub_8172FEC(u8 taskId)
if (gTasks[taskId].data[11] == 0)
{
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
- pan = 192;
+ pan = -64;
else
pan = 63;
@@ -2169,20 +2173,20 @@ static void sub_8173250(struct Sprite *sprite)
}
}
-void sub_81732B0(u8 taskId)
+void AnimTask_LoadPokeblockGfx(u8 taskId)
{
u8 paletteIndex;
- LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[269]);
- LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[269]);
- paletteIndex = IndexOfSpritePaletteTag(0x281D); // unused
+ LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[ANIM_TAG_POKEBLOCK - ANIM_SPRITES_START]);
+ LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[ANIM_TAG_POKEBLOCK - ANIM_SPRITES_START]);
+ paletteIndex = IndexOfSpritePaletteTag(ANIM_TAG_POKEBLOCK); // unused
DestroyAnimVisualTask(taskId);
}
-void sub_81732E4(u8 taskId)
+void AnimTask_FreePokeblockGfx(u8 taskId)
{
- FreeSpriteTilesByTag(0x281D);
- FreeSpritePaletteByTag(0x281D);
+ FreeSpriteTilesByTag(ANIM_TAG_POKEBLOCK);
+ FreeSpritePaletteByTag(ANIM_TAG_POKEBLOCK);
DestroyAnimVisualTask(taskId);
}
@@ -2245,21 +2249,21 @@ void sub_817345C(u8 taskId)
void AnimTask_GetTrappedMoveAnimId(u8 taskId)
{
- if (gBattleSpritesDataPtr->animationData->animArg == 83)
- gBattleAnimArgs[0] = 1;
- else if (gBattleSpritesDataPtr->animationData->animArg == 250)
- gBattleAnimArgs[0] = 2;
- else if (gBattleSpritesDataPtr->animationData->animArg == 128)
- gBattleAnimArgs[0] = 3;
- else if (gBattleSpritesDataPtr->animationData->animArg == 328)
- gBattleAnimArgs[0] = 4;
+ if (gBattleSpritesDataPtr->animationData->animArg == MOVE_FIRE_SPIN)
+ gBattleAnimArgs[0] = TRAP_ANIM_FIRE_SPIN;
+ else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_WHIRLPOOL)
+ gBattleAnimArgs[0] = TRAP_ANIM_WHIRLPOOL;
+ else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_CLAMP)
+ gBattleAnimArgs[0] = TRAP_ANIM_CLAMP;
+ else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_SAND_TOMB)
+ gBattleAnimArgs[0] = TRAP_ANIM_SAND_TOMB;
else
- gBattleAnimArgs[0] = 0;
+ gBattleAnimArgs[0] = TRAP_ANIM_BIND;
DestroyAnimVisualTask(taskId);
}
-void sub_817351C(u8 taskId)
+void AnimTask_GetBattlersFromArg(u8 taskId)
{
gBattleAnimAttacker = gBattleSpritesDataPtr->animationData->animArg;
gBattleAnimTarget = gBattleSpritesDataPtr->animationData->animArg >> 8;
diff --git a/src/battle_anim_status_effects.c b/src/battle_anim_status_effects.c
index 1271680e0..7ed78ea9a 100644
--- a/src/battle_anim_status_effects.c
+++ b/src/battle_anim_status_effects.c
@@ -44,8 +44,8 @@ static const union AnimCmd *const sSpriteAnimTable_853EDF8[] =
const struct SpriteTemplate gUnknown_0853EDFC =
{
- .tileTag = ANIM_TAG_UNUSED_ORB,
- .paletteTag = ANIM_TAG_UNUSED_ORB,
+ .tileTag = ANIM_TAG_ORB,
+ .paletteTag = ANIM_TAG_ORB,
.oam = &gUnknown_0852490C,
.anims = sSpriteAnimTable_853EDF8,
.images = NULL,
@@ -55,8 +55,8 @@ const struct SpriteTemplate gUnknown_0853EDFC =
const struct SpriteTemplate gUnknown_0853EE14 =
{
- .tileTag = ANIM_TAG_UNUSED_ORB,
- .paletteTag = ANIM_TAG_UNUSED_ORB,
+ .tileTag = ANIM_TAG_ORB,
+ .paletteTag = ANIM_TAG_ORB,
.oam = &gUnknown_0852490C,
.anims = sSpriteAnimTable_853EDF8,
.images = NULL,
@@ -125,8 +125,8 @@ const struct SpriteTemplate gUnknown_0853EE84 =
const struct SpriteTemplate gUnknown_0853EE9C =
{
- .tileTag = ANIM_TAG_UNUSED_MONSTER_FOOT,
- .paletteTag = ANIM_TAG_UNUSED_MONSTER_FOOT,
+ .tileTag = ANIM_TAG_MONSTER_FOOT,
+ .paletteTag = ANIM_TAG_MONSTER_FOOT,
.oam = &gUnknown_08524914,
.anims = gDummySpriteAnimTable,
.images = NULL,
@@ -195,8 +195,8 @@ static const union AffineAnimCmd *const sSpriteAffineAnimTable_853EEF8[] =
const struct SpriteTemplate gUnknown_0853EF18 =
{
- .tileTag = ANIM_TAG_UNUSED_ORB,
- .paletteTag = ANIM_TAG_UNUSED_ORB,
+ .tileTag = ANIM_TAG_ORB,
+ .paletteTag = ANIM_TAG_ORB,
.oam = &gUnknown_085249CC,
.anims = sSpriteAnimTable_853EEF8,
.images = NULL,
diff --git a/src/battle_bg.c b/src/battle_bg.c
index 814e8dad9..a08873857 100644
--- a/src/battle_bg.c
+++ b/src/battle_bg.c
@@ -5,6 +5,7 @@
#include "battle_message.h"
#include "battle_setup.h"
#include "bg.h"
+#include "data.h"
#include "decompress.h"
#include "gpu_regs.h"
#include "graphics.h"
@@ -597,6 +598,7 @@ const struct WindowTemplate * const gBattleWindowTemplates[] =
static const struct BattleBackground gBattleTerrainTable[] =
{
+ [BATTLE_TERRAIN_GRASS] =
{
.tileset = gBattleTerrainTiles_TallGrass,
.tilemap = gBattleTerrainTilemap_TallGrass,
@@ -604,6 +606,8 @@ static const struct BattleBackground gBattleTerrainTable[] =
.entryTilemap = gBattleTerrainAnimTilemap_TallGrass,
.palette = gBattleTerrainPalette_TallGrass,
},
+
+ [BATTLE_TERRAIN_LONG_GRASS] =
{
.tileset = gBattleTerrainTiles_LongGrass,
.tilemap = gBattleTerrainTilemap_LongGrass,
@@ -611,6 +615,8 @@ static const struct BattleBackground gBattleTerrainTable[] =
.entryTilemap = gBattleTerrainAnimTilemap_LongGrass,
.palette = gBattleTerrainPalette_LongGrass,
},
+
+ [BATTLE_TERRAIN_SAND] =
{
.tileset = gBattleTerrainTiles_Sand,
.tilemap = gBattleTerrainTilemap_Sand,
@@ -618,6 +624,8 @@ static const struct BattleBackground gBattleTerrainTable[] =
.entryTilemap = gBattleTerrainAnimTilemap_Sand,
.palette = gBattleTerrainPalette_Sand,
},
+
+ [BATTLE_TERRAIN_UNDERWATER] =
{
.tileset = gBattleTerrainTiles_Underwater,
.tilemap = gBattleTerrainTilemap_Underwater,
@@ -625,6 +633,8 @@ static const struct BattleBackground gBattleTerrainTable[] =
.entryTilemap = gBattleTerrainAnimTilemap_Underwater,
.palette = gBattleTerrainPalette_Underwater,
},
+
+ [BATTLE_TERRAIN_WATER] =
{
.tileset = gBattleTerrainTiles_Water,
.tilemap = gBattleTerrainTilemap_Water,
@@ -632,6 +642,8 @@ static const struct BattleBackground gBattleTerrainTable[] =
.entryTilemap = gBattleTerrainAnimTilemap_Water,
.palette = gBattleTerrainPalette_Water,
},
+
+ [BATTLE_TERRAIN_POND] =
{
.tileset = gBattleTerrainTiles_PondWater,
.tilemap = gBattleTerrainTilemap_PondWater,
@@ -639,6 +651,8 @@ static const struct BattleBackground gBattleTerrainTable[] =
.entryTilemap = gBattleTerrainAnimTilemap_PondWater,
.palette = gBattleTerrainPalette_PondWater,
},
+
+ [BATTLE_TERRAIN_MOUNTAIN] =
{
.tileset = gBattleTerrainTiles_Rock,
.tilemap = gBattleTerrainTilemap_Rock,
@@ -646,6 +660,8 @@ static const struct BattleBackground gBattleTerrainTable[] =
.entryTilemap = gBattleTerrainAnimTilemap_Rock,
.palette = gBattleTerrainPalette_Rock,
},
+
+ [BATTLE_TERRAIN_CAVE] =
{
.tileset = gBattleTerrainTiles_Cave,
.tilemap = gBattleTerrainTilemap_Cave,
@@ -653,6 +669,8 @@ static const struct BattleBackground gBattleTerrainTable[] =
.entryTilemap = gBattleTerrainAnimTilemap_Cave,
.palette = gBattleTerrainPalette_Cave,
},
+
+ [BATTLE_TERRAIN_BUILDING] =
{
.tileset = gBattleTerrainTiles_Building,
.tilemap = gBattleTerrainTilemap_Building,
@@ -660,7 +678,9 @@ static const struct BattleBackground gBattleTerrainTable[] =
.entryTilemap = gBattleTerrainAnimTilemap_Building,
.palette = gBattleTerrainPalette_Building,
},
- {// plain
+
+ [BATTLE_TERRAIN_PLAIN] =
+ {
.tileset = gBattleTerrainTiles_Building,
.tilemap = gBattleTerrainTilemap_Building,
.entryTileset = gBattleTerrainAnimTiles_Building,
diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c
index 23d469c27..3fb5da9dc 100644
--- a/src/battle_controller_link_opponent.c
+++ b/src/battle_controller_link_opponent.c
@@ -9,7 +9,7 @@
#include "battle_tower.h"
#include "battle_tv.h"
#include "bg.h"
-#include "data2.h"
+#include "data.h"
#include "link.h"
#include "main.h"
#include "m4a.h"
@@ -31,8 +31,6 @@
extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
-
// this file's functions
static void LinkOpponentHandleGetMonData(void);
static void LinkOpponentHandleGetRawMonData(void);
diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c
index 22633c5bc..6fc73a604 100644
--- a/src/battle_controller_link_partner.c
+++ b/src/battle_controller_link_partner.c
@@ -9,7 +9,7 @@
#include "battle_tower.h"
#include "battle_tv.h"
#include "bg.h"
-#include "data2.h"
+#include "data.h"
#include "link.h"
#include "main.h"
#include "m4a.h"
@@ -29,9 +29,6 @@
#include "constants/trainers.h"
#include "recorded_battle.h"
-extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
-extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
-
// this file's functions
static void LinkPartnerHandleGetMonData(void);
static void LinkPartnerHandleGetRawMonData(void);
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index 7d940cb89..392811327 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -10,7 +10,7 @@
#include "battle_tower.h"
#include "battle_tv.h"
#include "bg.h"
-#include "data2.h"
+#include "data.h"
#include "frontier_util.h"
#include "item.h"
#include "link.h"
@@ -36,8 +36,6 @@
extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
-
// this file's functions
static void OpponentHandleGetMonData(void);
static void OpponentHandleGetRawMonData(void);
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index b377ecf64..e4b5b5c18 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -9,7 +9,7 @@
#include "battle_setup.h"
#include "battle_tv.h"
#include "bg.h"
-#include "data2.h"
+#include "data.h"
#include "item.h"
#include "item_menu.h"
#include "link.h"
@@ -33,12 +33,10 @@
#include "constants/moves.h"
#include "constants/songs.h"
#include "constants/trainers.h"
+#include "constants/rgb.h"
extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
-extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
-
// this file's functions
static void PlayerHandleGetMonData(void);
static void PlayerHandleSetMonData(void);
@@ -2408,7 +2406,7 @@ static void PlayerHandleFaintAnimation(void)
static void PlayerHandlePaletteFade(void)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, RGB_BLACK);
PlayerBufferExecCompleted();
}
@@ -2630,7 +2628,7 @@ static void PlayerHandleChooseItem(void)
{
s32 i;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gBattlerControllerFuncs[gActiveBattler] = OpenBagAndChooseItem;
gBattlerInMenuId = gActiveBattler;
@@ -2657,7 +2655,7 @@ static void PlayerHandleChoosePokemon(void)
*(&gBattleStruct->battlerPreventingSwitchout) = gBattleBufferA[gActiveBattler][1] >> 4;
*(&gBattleStruct->field_8B) = gBattleBufferA[gActiveBattler][2];
*(&gBattleStruct->abilityPreventingSwitchout) = gBattleBufferA[gActiveBattler][3];
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gBattlerControllerFuncs[gActiveBattler] = OpenPartyMenuToChooseMon;
gBattlerInMenuId = gActiveBattler;
}
@@ -2666,7 +2664,7 @@ static void PlayerHandleChoosePokemon(void)
static void PlayerHandleCmd23(void)
{
BattleStopLowHpSound();
- BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, RGB_BLACK);
PlayerBufferExecCompleted();
}
diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c
index 2c53938c1..0ec21fd22 100644
--- a/src/battle_controller_player_partner.c
+++ b/src/battle_controller_player_partner.c
@@ -8,7 +8,7 @@
#include "battle_setup.h"
#include "battle_tower.h"
#include "bg.h"
-#include "data2.h"
+#include "data.h"
#include "item_use.h"
#include "link.h"
#include "main.h"
@@ -27,9 +27,6 @@
#include "constants/songs.h"
#include "constants/trainers.h"
-extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
-extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
-
// this file's functions
static void PlayerPartnerHandleGetMonData(void);
static void PlayerPartnerHandleGetRawMonData(void);
diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c
index e43c5f8ae..69d840020 100644
--- a/src/battle_controller_recorded_opponent.c
+++ b/src/battle_controller_recorded_opponent.c
@@ -9,7 +9,7 @@
#include "battle_tower.h"
#include "battle_tv.h"
#include "bg.h"
-#include "data2.h"
+#include "data.h"
#include "item_use.h"
#include "link.h"
#include "main.h"
@@ -31,8 +31,6 @@
extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
-
// this file's functions
static void RecordedOpponentHandleGetMonData(void);
static void RecordedOpponentHandleGetRawMonData(void);
diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c
index 412c49f17..95683225e 100644
--- a/src/battle_controller_recorded_player.c
+++ b/src/battle_controller_recorded_player.c
@@ -6,7 +6,7 @@
#include "battle_message.h"
#include "battle_interface.h"
#include "bg.h"
-#include "data2.h"
+#include "data.h"
#include "item_use.h"
#include "link.h"
#include "main.h"
@@ -27,9 +27,6 @@
extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
-extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
-
// this file's functions
static void RecordedPlayerHandleGetMonData(void);
static void RecordedPlayerHandleGetRawMonData(void);
diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c
index e9da16252..c39b904c9 100644
--- a/src/battle_controller_safari.c
+++ b/src/battle_controller_safari.c
@@ -5,7 +5,7 @@
#include "battle_interface.h"
#include "battle_message.h"
#include "bg.h"
-#include "data2.h"
+#include "data.h"
#include "item_menu.h"
#include "link.h"
#include "main.h"
@@ -22,8 +22,7 @@
#include "window.h"
#include "constants/battle_anim.h"
#include "constants/songs.h"
-
-extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
+#include "constants/rgb.h"
// this file's functions
static void SafariHandleGetMonData(void);
@@ -473,7 +472,7 @@ static void SafariHandleChooseItem(void)
{
s32 i;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gBattlerControllerFuncs[gActiveBattler] = SafariOpenPokeblockCase;
gBattlerInMenuId = gActiveBattler;
}
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index f1b783b21..6a5b23e59 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -7,7 +7,7 @@
#include "battle_setup.h"
#include "battle_tv.h"
#include "bg.h"
-#include "data2.h"
+#include "data.h"
#include "item.h"
#include "item_menu.h"
#include "link.h"
@@ -30,8 +30,7 @@
#include "constants/moves.h"
#include "constants/songs.h"
#include "constants/trainers.h"
-
-extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
+#include "constants/rgb.h"
// this file's functions
static void WallyHandleGetMonData(void);
@@ -1244,7 +1243,7 @@ static void WallyHandleChooseMove(void)
static void WallyHandleChooseItem(void)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gBattlerControllerFuncs[gActiveBattler] = OpenBagAfterPaletteFade;
gBattlerInMenuId = gActiveBattler;
}
diff --git a/src/battle_data.c b/src/battle_data.c
deleted file mode 100644
index 7f86385aa..000000000
--- a/src/battle_data.c
+++ /dev/null
@@ -1,14 +0,0 @@
-#include "global.h"
-#include "battle.h"
-#include "data2.h"
-#include "constants/items.h"
-#include "constants/moves.h"
-#include "constants/species.h"
-#include "constants/trainers.h"
-#include "constants/battle_ai.h"
-
-#include "data/trainer_parties.h"
-#include "data/text/trainer_class_names.h"
-#include "data/trainers.h"
-#include "data/text/species_names.h"
-#include "data/text/move_names.h"
diff --git a/src/battle_dome.c b/src/battle_dome.c
index 1b7953180..95fce49a3 100644
--- a/src/battle_dome.c
+++ b/src/battle_dome.c
@@ -24,7 +24,7 @@
#include "menu.h"
#include "sound.h"
#include "pokemon_icon.h"
-#include "data2.h"
+#include "data.h"
#include "international_string_util.h"
#include "trainer_pokemon_sprites.h"
#include "scanline_effect.h"
@@ -59,9 +59,6 @@ struct UnkStruct_860DD10
u16 src;
};
-// text
-extern const u8 gTrainerClassNames[][13];
-
// This file's functions.
static u8 GetDomeTrainerMonIvs(u16 trainerId);
static void SwapDomeTrainers(int id1, int id2, u16 *statsArray);
diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c
index 367c1401f..02804ba0b 100644
--- a/src/battle_factory_screen.c
+++ b/src/battle_factory_screen.c
@@ -17,7 +17,7 @@
#include "string_util.h"
#include "international_string_util.h"
#include "window.h"
-#include "data2.h"
+#include "data.h"
#include "decompress.h"
#include "pokemon_summary_screen.h"
#include "sound.h"
@@ -1166,7 +1166,7 @@ static void CB2_InitSelectScreen(void)
ShowBg(0);
ShowBg(1);
SetVBlankCallback(Select_VblankCb);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP);
if (sFactorySelectScreen->fromSummaryScreen == TRUE)
{
@@ -1405,7 +1405,7 @@ static void Task_FromSelectScreenToSummaryScreen(u8 taskId)
{
case 6:
gPlttBufferUnfaded[228] = gPlttBufferFaded[228];
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].data[0] = 7;
break;
case 7:
@@ -1442,7 +1442,7 @@ static void Task_CloseSelectionScreen(u8 taskId)
switch (gTasks[taskId].data[0])
{
case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].data[0]++;
break;
case 1:
@@ -2274,7 +2274,7 @@ static void Task_FromSwapScreenToSummaryScreen(u8 taskId)
switch (gTasks[taskId].data[0])
{
case 6:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].data[0] = 7;
break;
case 7:
@@ -2327,7 +2327,7 @@ static void Task_CloseSwapScreen(u8 taskId)
gTasks[taskId].data[0]++;
break;
case 2:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].data[0]++;
break;
case 3:
@@ -3218,7 +3218,7 @@ static void CB2_InitSwapScreen(void)
gMain.state++;
break;
case 14:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
ShowBg(0);
ShowBg(1);
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index 7c6b74304..d6b1b6dee 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -19,7 +19,7 @@
#include "m4a.h"
#include "constants/species.h"
#include "decompress.h"
-#include "data2.h"
+#include "data.h"
#include "palette.h"
#include "contest.h"
#include "constants/songs.h"
@@ -32,16 +32,8 @@ extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern const u8 gUnknown_0831C604[];
extern const u8 * const gBattleAnims_General[];
extern const u8 * const gBattleAnims_Special[];
-extern const struct CompressedSpriteSheet gMonFrontPicTable[];
-extern const struct CompressedSpriteSheet gMonBackPicTable[];
-extern const struct CompressedSpriteSheet gTrainerFrontPicTable[];
-extern const struct CompressedSpriteSheet gTrainerBackPicTable[];
-extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
-extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
-extern const union AnimCmd* const * const gMonAnimationsSpriteAnimsPtrTable[];
extern const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow;
extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow;
-extern const u8 gEnemyMonElevation[];
// this file's functions
static u8 sub_805D4A8(u16 move);
@@ -932,7 +924,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
if (targetSpecies == SPECIES_CASTFORM)
{
- gSprites[gBattlerSpriteIds[battlerAtk]].anims = gMonAnimationsSpriteAnimsPtrTable[targetSpecies];
+ gSprites[gBattlerSpriteIds[battlerAtk]].anims = gMonFrontAnimsPtrTable[targetSpecies];
LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]);
LoadPalette(gBattleStruct->castformPalette[0] + gBattleMonForms[battlerDef] * 16, paletteOffset, 32);
}
diff --git a/src/battle_interface.c b/src/battle_interface.c
index a8651f6cf..922437597 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -23,7 +23,8 @@
#include "battle_anim.h"
#include "constants/battle_anim.h"
#include "constants/rgb.h"
-#include "data2.h"
+#include "data.h"
+#include "pokemon_summary_screen.h"
struct TestingBar
{
@@ -157,8 +158,6 @@ enum
HEALTHBOX_GFX_117, //unknown_D1300C
};
-extern const u8 *const gNatureNamePointers[];
-
// strings
extern const u8 gText_Slash[];
extern const u8 gText_HighlightDarkGrey[];
diff --git a/src/battle_main.c b/src/battle_main.c
index 92f12636d..76bd6d877 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -13,7 +13,7 @@
#include "battle_tower.h"
#include "berry.h"
#include "bg.h"
-#include "data2.h"
+#include "data.h"
#include "decompress.h"
#include "dma3.h"
#include "event_data.h"
@@ -977,7 +977,7 @@ static void CB2_HandleStartBattle(void)
gBattleCommunication[MULTIUSE_STATE] = 1;
}
if (gWirelessCommType)
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
break;
case 1:
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
@@ -1172,7 +1172,7 @@ static void CB2_HandleStartMultiPartnerBattle(void)
gBattleCommunication[MULTIUSE_STATE] = 1;
}
if (gWirelessCommType)
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
// fall through
case 1:
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
@@ -1572,7 +1572,7 @@ static void CB2_HandleStartMultiBattle(void)
gBattleCommunication[MULTIUSE_STATE] = 1;
}
if (gWirelessCommType)
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
break;
case 1:
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
diff --git a/src/battle_message.c b/src/battle_message.c
index f93765b89..3fec571f4 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -5,7 +5,7 @@
#include "battle_message.h"
#include "battle_setup.h"
#include "battle_tower.h"
-#include "data2.h"
+#include "data.h"
#include "event_data.h"
#include "frontier_util.h"
#include "international_string_util.h"
@@ -38,7 +38,6 @@ struct BattleWindowText
u8 shadowColor;
};
-extern const u8 gTrainerClassNames[][13];
extern const u16 gUnknown_08D85620[];
// this file's functions
diff --git a/src/battle_records.c b/src/battle_records.c
index fdd915d07..3d4cabcb0 100644
--- a/src/battle_records.c
+++ b/src/battle_records.c
@@ -22,6 +22,7 @@
#include "gpu_regs.h"
#include "constants/game_stat.h"
#include "trainer_hill.h"
+#include "constants/rgb.h"
// this file's functions
static void Task_CloseTrainerHillRecordsOnButton(u8 taskId);
@@ -364,7 +365,7 @@ static void Task_CloseTrainerHillRecordsOnButton(u8 taskId)
static void Task_BeginPaletteFade(u8 taskId)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].func = Task_ExitTrainerHillRecords;
}
@@ -511,7 +512,7 @@ static void CB2_ShowTrainerHillRecords(void)
gMain.state++;
break;
case 6:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
gMain.state++;
break;
case 7:
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 2e78e1ca0..837fb5bac 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -50,6 +50,8 @@
#include "pokemon_summary_screen.h"
#include "pokenav.h"
#include "menu_specialized.h"
+#include "constants/rgb.h"
+#include "data.h"
extern struct MusicPlayerInfo gMPlayInfo_BGM;
@@ -66,8 +68,8 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8* BS_ptr);
static bool32 IsMonGettingExpSentOut(void);
static void sub_804F17C(void);
static bool8 sub_804F1CC(void);
-static void sub_804F100(void);
-static void sub_804F144(void);
+static void DrawLevelUpWindow1(void);
+static void DrawLevelUpWindow2(void);
static bool8 sub_804F344(void);
static void PutMonIconOnLvlUpBox(void);
static void PutLevelAndGenderOnLvlUpBox(void);
@@ -1274,8 +1276,8 @@ static void atk04_critcalc(void)
+ 2 * (holdEffect == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[gBattlerAttacker].species == SPECIES_CHANSEY)
+ 2 * (holdEffect == HOLD_EFFECT_STICK && gBattleMons[gBattlerAttacker].species == SPECIES_FARFETCHD);
- if (critChance > 4)
- critChance = 4;
+ if (critChance >= ARRAY_COUNT(sCriticalHitChance))
+ critChance = ARRAY_COUNT(sCriticalHitChance) - 1;
if ((gBattleMons[gBattlerTarget].ability != ABILITY_BATTLE_ARMOR && gBattleMons[gBattlerTarget].ability != ABILITY_SHELL_ARMOR)
&& !(gStatuses3[gBattlerAttacker] & STATUS3_CANT_SCORE_A_CRIT)
@@ -3238,9 +3240,8 @@ static void atk23_getexp(void)
s32 i; // also used as stringId
u8 holdEffect;
s32 sentIn;
-
s32 viaExpShare = 0;
- u16* exp = &gBattleStruct->expValue;
+ u16 *exp = &gBattleStruct->expValue;
gBattlerFainted = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
sentIn = gSentPokesToOpponent[(gBattlerFainted & 2) >> 1];
@@ -3391,14 +3392,14 @@ static void atk23_getexp(void)
}
}
else
+ {
gBattleStruct->expGetterBattlerId = 0;
+ }
- PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattleStruct->expGetterBattlerId, gBattleStruct->expGetterMonId)
-
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattleStruct->expGetterBattlerId, gBattleStruct->expGetterMonId);
// buffer 'gained' or 'gained a boosted'
- PREPARE_STRING_BUFFER(gBattleTextBuff2, i)
-
- PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff3, 5, gBattleMoveDamage)
+ PREPARE_STRING_BUFFER(gBattleTextBuff2, i);
+ PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff3, 5, gBattleMoveDamage);
PrepareStringBattle(STRINGID_PKMNGAINEDEXP, gBattleStruct->expGetterBattlerId);
MonGainEVs(&gPlayerParty[gBattleStruct->expGetterMonId], gBattleMons[gBattlerFainted].species);
@@ -3414,12 +3415,12 @@ static void atk23_getexp(void)
gBattleBufferB[gBattleStruct->expGetterBattlerId][0] = 0;
if (GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP) && GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL) != MAX_LEVEL)
{
- gBattleResources->statsBeforeLvlUp->hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP);
- gBattleResources->statsBeforeLvlUp->atk = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK);
- gBattleResources->statsBeforeLvlUp->def = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF);
- gBattleResources->statsBeforeLvlUp->spd = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
- gBattleResources->statsBeforeLvlUp->spAtk = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK);
- gBattleResources->statsBeforeLvlUp->spDef = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPDEF);
+ gBattleResources->beforeLvlUp->stats[STAT_HP] = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP);
+ gBattleResources->beforeLvlUp->stats[STAT_ATK] = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK);
+ gBattleResources->beforeLvlUp->stats[STAT_DEF] = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF);
+ gBattleResources->beforeLvlUp->stats[STAT_SPEED] = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
+ gBattleResources->beforeLvlUp->stats[STAT_SPATK] = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK);
+ gBattleResources->beforeLvlUp->stats[STAT_SPDEF] = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPDEF);
gActiveBattler = gBattleStruct->expGetterBattlerId;
BtlController_EmitExpUpdate(0, gBattleStruct->expGetterMonId, gBattleMoveDamage);
@@ -3437,9 +3438,8 @@ static void atk23_getexp(void)
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId)
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
- PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBattler, gBattleStruct->expGetterMonId)
-
- PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 3, GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL))
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBattler, gBattleStruct->expGetterMonId);
+ PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 3, GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL));
BattleScriptPushCursor();
gLeveledUpInBattle |= gBitTable[gBattleStruct->expGetterMonId];
@@ -3487,7 +3487,9 @@ static void atk23_getexp(void)
break;
case 5: // looper increment
if (gBattleMoveDamage) // there is exp to give, goto case 3 that gives exp
+ {
gBattleScripting.atk23_state = 3;
+ }
else
{
gBattleStruct->expGetterMonId++;
@@ -5695,7 +5697,7 @@ static void atk5A_yesnoboxlearnmove(void)
if (gBattleCommunication[1] == 0)
{
HandleBattleWindow(0x18, 0x8, 0x1D, 0xD, WINDOW_CLEAR);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gBattleScripting.learnMoveState++;
}
else
@@ -5911,8 +5913,7 @@ static void atk5D_getmoneyreward(void)
moneyReward += GetTrainerMoneyToGive(gTrainerBattleOpponent_B);
AddMoney(&gSaveBlock1Ptr->money, moneyReward);
-
- PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff1, 5, moneyReward)
+ PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff1, 5, moneyReward);
gBattlescriptCurrInstr++;
}
@@ -6233,7 +6234,7 @@ static void atk6C_drawlvlupbox(void)
gBattleScripting.atk6C_state = 4;
break;
case 4:
- sub_804F100();
+ DrawLevelUpWindow1();
PutWindowTilemap(13);
CopyWindowToVram(13, 3);
gBattleScripting.atk6C_state++;
@@ -6250,7 +6251,7 @@ static void atk6C_drawlvlupbox(void)
if (gMain.newKeys != 0)
{
PlaySE(SE_SELECT);
- sub_804F144();
+ DrawLevelUpWindow2();
CopyWindowToVram(13, 2);
gBattleScripting.atk6C_state++;
}
@@ -6291,20 +6292,20 @@ static void atk6C_drawlvlupbox(void)
}
}
-static void sub_804F100(void)
+static void DrawLevelUpWindow1(void)
{
- struct StatsArray currentStats;
+ u16 currStats[NUM_STATS];
- GetMonLevelUpWindowStats(&gPlayerParty[gBattleStruct->expGetterMonId], (u16*) &currentStats);
- DrawLevelUpWindowPg1(0xD, (u16*) gBattleResources->statsBeforeLvlUp,(u16*) &currentStats, 0xE, 0xD, 0xF);
+ GetMonLevelUpWindowStats(&gPlayerParty[gBattleStruct->expGetterMonId], currStats);
+ DrawLevelUpWindowPg1(0xD, gBattleResources->beforeLvlUp->stats, currStats, 0xE, 0xD, 0xF);
}
-static void sub_804F144(void)
+static void DrawLevelUpWindow2(void)
{
- struct StatsArray currentStats;
+ u16 currStats[NUM_STATS];
- GetMonLevelUpWindowStats(&gPlayerParty[gBattleStruct->expGetterMonId], (u16*) &currentStats);
- DrawLevelUpWindowPg2(0xD, (u16*) &currentStats, 0xE, 0xD, 0xF);
+ GetMonLevelUpWindowStats(&gPlayerParty[gBattleStruct->expGetterMonId], currStats);
+ DrawLevelUpWindowPg2(0xD, currStats, 0xE, 0xD, 0xF);
}
static void sub_804F17C(void)
@@ -10274,7 +10275,7 @@ static void atkF2_displaydexinfo(void)
switch (gBattleCommunication[0])
{
case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gBattleCommunication[0]++;
break;
case 1:
@@ -10305,7 +10306,7 @@ static void atkF2_displaydexinfo(void)
case 4:
if (!IsDma3ManagerBusyWithBgCopy())
{
- BeginNormalPaletteFade(0xFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFF, 0, 0x10, 0, RGB_BLACK);
ShowBg(0);
ShowBg(3);
gBattleCommunication[0]++;
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 7395c175b..288fdb3e9 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -45,6 +45,7 @@
#include "constants/map_types.h"
#include "constants/battle_frontier.h"
#include "field_screen_effect.h"
+#include "data.h"
enum
{
@@ -792,7 +793,7 @@ static u8 GetTrainerBattleTransition(void)
if (gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_ELITE_FOUR)
{
if (gTrainerBattleOpponent_A == TRAINER_SIDNEY)
- return B_TRANSITION_SYDNEY;
+ return B_TRANSITION_SIDNEY;
if (gTrainerBattleOpponent_A == TRAINER_PHOEBE)
return B_TRANSITION_PHOEBE;
if (gTrainerBattleOpponent_A == TRAINER_GLACIA)
diff --git a/src/battle_tower.c b/src/battle_tower.c
index 46aab4bac..6f8e3e25f 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -18,7 +18,7 @@
#include "trainer_see.h"
#include "new_game.h"
#include "string_util.h"
-#include "data2.h"
+#include "data.h"
#include "link.h"
#include "field_message_box.h"
#include "tv.h"
diff --git a/src/battle_transition.c b/src/battle_transition.c
index df6180d19..7edb1bd93 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -23,6 +23,7 @@
#include "constants/field_effects.h"
#include "constants/songs.h"
#include "constants/trainers.h"
+#include "constants/rgb.h"
struct TransitionData
{
@@ -75,7 +76,7 @@ static void Phase2Task_Slice(u8 taskId);
static void Phase2Task_WhiteFade(u8 taskId);
static void Phase2Task_GridSquares(u8 taskId);
static void Phase2Task_Shards(u8 taskId);
-static void Phase2Task_Sydney(u8 taskId);
+static void Phase2Task_Sidney(u8 taskId);
static void Phase2Task_Phoebe(u8 taskId);
static void Phase2Task_Glacia(u8 taskId);
static void Phase2Task_Drake(u8 taskId);
@@ -330,7 +331,7 @@ static const TaskFunc sPhase2_Tasks[B_TRANSITION_COUNT] =
Phase2Task_WhiteFade, // 9
Phase2Task_GridSquares, // 10
Phase2Task_Shards, // 11
- Phase2Task_Sydney, // 12
+ Phase2Task_Sidney, // 12
Phase2Task_Phoebe, // 13
Phase2Task_Glacia, // 14
Phase2Task_Drake, // 15
@@ -823,7 +824,7 @@ const struct SpritePalette gFieldEffectObjectPaletteInfo10 =
gFieldEffectObjectPalette10, 0x1009
};
-static const u16 sMugshotPal_Sydney[] = INCBIN_U16("graphics/battle_transitions/sidney_bg.gbapal");
+static const u16 sMugshotPal_Sidney[] = INCBIN_U16("graphics/battle_transitions/sidney_bg.gbapal");
static const u16 sMugshotPal_Phoebe[] = INCBIN_U16("graphics/battle_transitions/phoebe_bg.gbapal");
static const u16 sMugshotPal_Glacia[] = INCBIN_U16("graphics/battle_transitions/glacia_bg.gbapal");
static const u16 sMugshotPal_Drake[] = INCBIN_U16("graphics/battle_transitions/drake_bg.gbapal");
@@ -833,7 +834,7 @@ static const u16 sMugshotPal_May[] = INCBIN_U16("graphics/battle_transitions/may
static const u16 *const sOpponentMugshotsPals[MUGSHOTS_COUNT] =
{
- sMugshotPal_Sydney,
+ sMugshotPal_Sidney,
sMugshotPal_Phoebe,
sMugshotPal_Glacia,
sMugshotPal_Drake,
@@ -1076,7 +1077,7 @@ static bool8 Phase2_Blur_Func2(struct Task *task)
{
task->tData1 = 4;
if (++task->tData2 == 10)
- BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 0x10, RGB_BLACK);
SetGpuReg(REG_OFFSET_MOSAIC, (task->tData2 & 15) * 17);
if (task->tData2 > 14)
task->tState++;
@@ -1103,7 +1104,7 @@ static bool8 Phase2_Swirl_Func1(struct Task *task)
{
sub_8149F08();
ScanlineEffect_Clear();
- BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 0x10, RGB_BLACK);
sub_8149F98(gScanlineEffectRegBuffers[1], sTransitionStructPtr->field_14, 0, 2, 0, 160);
SetVBlankCallback(VBlankCB_Phase2_Swirl);
@@ -1158,7 +1159,7 @@ static bool8 Phase2_Shuffle_Func1(struct Task *task)
sub_8149F08();
ScanlineEffect_Clear();
- BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 0x10, RGB_BLACK);
memset(gScanlineEffectRegBuffers[1], sTransitionStructPtr->field_16, 0x140);
SetVBlankCallback(VBlankCB_Phase2_Shuffle);
@@ -1461,7 +1462,7 @@ static bool8 Phase2_Kyogre_Func5(struct Task *task)
static bool8 Phase2_WeatherDuo_Func6(struct Task *task)
{
- BeginNormalPaletteFade(0xFFFF8000, 1, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFF8000, 1, 0, 0x10, RGB_BLACK);
task->tState++;
return FALSE;
}
@@ -1546,7 +1547,7 @@ static bool8 Phase2_FramesCountdown(struct Task *task)
static bool8 Phase2_WeatherTrio_Func1(struct Task *task)
{
- BeginNormalPaletteFade(0x0000FFFF, 1, 0, 0x10, 0);
+ BeginNormalPaletteFade(0x0000FFFF, 1, 0, 0x10, RGB_BLACK);
task->tState++;
return FALSE;
}
@@ -1969,7 +1970,7 @@ static bool8 Phase2_Ripple_Func2(struct Task *task)
if (++task->tData3 == 81)
{
task->tData4++;
- BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 0x10, RGB_BLACK);
}
if (task->tData4 != 0 && !gPaletteFade.active)
@@ -2072,9 +2073,9 @@ static void VBlankCB_Phase2_Wave(void)
DmaSet(0, gScanlineEffectRegBuffers[1], &REG_WIN0H, 0xA2400001);
}
-static void Phase2Task_Sydney(u8 taskId)
+static void Phase2Task_Sidney(u8 taskId)
{
- gTasks[taskId].tMugshotId = MUGSHOT_SYDNEY;
+ gTasks[taskId].tMugshotId = MUGSHOT_SIDNEY;
Phase2Task_MugShotTransition(taskId);
}
@@ -3159,7 +3160,7 @@ static bool8 Phase2_Rayquaza_Func6(struct Task *task)
{
task->tState++;
task->tData1 = 0;
- BeginNormalPaletteFade(0xFFFF8000, 2, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFF8000, 2, 0, 0x10, RGB_BLACK);
}
return FALSE;
@@ -3978,7 +3979,7 @@ static bool8 Phase2_30_Func4(struct Task *task)
if (++task->tData3 == 101)
{
task->tData4++;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
}
if (task->tData4 != 0 && !gPaletteFade.active)
diff --git a/src/battle_util.c b/src/battle_util.c
index a7962b7f7..03f1482da 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -2041,7 +2041,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
case ABILITY_FLASH_FIRE:
if (moveType == TYPE_FIRE && !(gBattleMons[battler].status1 & STATUS1_FREEZE))
{
- if (!(gBattleResources->flags->flags[battler] & UNKNOWN_FLAG_FLASH_FIRE))
+ if (!(gBattleResources->flags->flags[battler] & RESOURCE_FLAG_FLASH_FIRE))
{
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
if (gProtectStructs[gBattlerAttacker].notFirstStrike)
@@ -2049,7 +2049,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
else
gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss;
- gBattleResources->flags->flags[battler] |= UNKNOWN_FLAG_FLASH_FIRE;
+ gBattleResources->flags->flags[battler] |= RESOURCE_FLAG_FLASH_FIRE;
effect = 2;
}
else
diff --git a/src/battle_util2.c b/src/battle_util2.c
index 5ef969fd5..f840cd58b 100644
--- a/src/battle_util2.c
+++ b/src/battle_util2.c
@@ -25,7 +25,7 @@ void AllocateBattleResources(void)
gBattleResources->flags = AllocZeroed(sizeof(*gBattleResources->flags));
gBattleResources->battleScriptsStack = AllocZeroed(sizeof(*gBattleResources->battleScriptsStack));
gBattleResources->battleCallbackStack = AllocZeroed(sizeof(*gBattleResources->battleCallbackStack));
- gBattleResources->statsBeforeLvlUp = AllocZeroed(sizeof(*gBattleResources->statsBeforeLvlUp));
+ gBattleResources->beforeLvlUp = AllocZeroed(sizeof(*gBattleResources->beforeLvlUp));
gBattleResources->ai = AllocZeroed(sizeof(*gBattleResources->ai));
gBattleResources->battleHistory = AllocZeroed(sizeof(*gBattleResources->battleHistory));
gBattleResources->AI_ScriptsStack = AllocZeroed(sizeof(*gBattleResources->AI_ScriptsStack));
@@ -56,7 +56,7 @@ void FreeBattleResources(void)
FREE_AND_SET_NULL(gBattleResources->flags);
FREE_AND_SET_NULL(gBattleResources->battleScriptsStack);
FREE_AND_SET_NULL(gBattleResources->battleCallbackStack);
- FREE_AND_SET_NULL(gBattleResources->statsBeforeLvlUp);
+ FREE_AND_SET_NULL(gBattleResources->beforeLvlUp);
FREE_AND_SET_NULL(gBattleResources->ai);
FREE_AND_SET_NULL(gBattleResources->battleHistory);
FREE_AND_SET_NULL(gBattleResources->AI_ScriptsStack);
diff --git a/src/berry.c b/src/berry.c
index cbac06a3d..49acb7d10 100644
--- a/src/berry.c
+++ b/src/berry.c
@@ -1,6 +1,8 @@
#include "global.h"
#include "berry.h"
#include "event_data.h"
+#include "event_object_movement.h"
+#include "event_scripts.h"
#include "field_control_avatar.h"
#include "fieldmap.h"
#include "item.h"
@@ -11,11 +13,6 @@
#include "text.h"
#include "constants/event_object_movement_constants.h"
#include "constants/items.h"
-#include "event_object_movement.h"
-
-
-
-extern const u8 BerryTreeScript[];
static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry);
static bool32 BerryTreeGrow(struct BerryTree *tree);
@@ -117,6 +114,7 @@ static const u8 sBerryDescriptionPart2_Enigma[] = _("Appears to have the power o
const struct Berry gBerries[] =
{
+ [ITEM_CHERI_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("CHERI"),
.firmness = BERRY_FIRMNESS_SOFT,
@@ -133,6 +131,8 @@ const struct Berry gBerries[] =
.sour = 0,
.smoothness = 25,
},
+
+ [ITEM_CHESTO_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("CHESTO"),
.firmness = BERRY_FIRMNESS_SUPER_HARD,
@@ -149,6 +149,8 @@ const struct Berry gBerries[] =
.sour = 0,
.smoothness = 25,
},
+
+ [ITEM_PECHA_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("PECHA"),
.firmness = BERRY_FIRMNESS_VERY_SOFT,
@@ -165,6 +167,8 @@ const struct Berry gBerries[] =
.sour = 0,
.smoothness = 25,
},
+
+ [ITEM_RAWST_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("RAWST"),
.firmness = BERRY_FIRMNESS_HARD,
@@ -181,6 +185,8 @@ const struct Berry gBerries[] =
.sour = 0,
.smoothness = 25,
},
+
+ [ITEM_ASPEAR_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("ASPEAR"),
.firmness = BERRY_FIRMNESS_SUPER_HARD,
@@ -197,6 +203,8 @@ const struct Berry gBerries[] =
.sour = 10,
.smoothness = 25,
},
+
+ [ITEM_LEPPA_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("LEPPA"),
.firmness = BERRY_FIRMNESS_VERY_HARD,
@@ -213,6 +221,8 @@ const struct Berry gBerries[] =
.sour = 10,
.smoothness = 20,
},
+
+ [ITEM_ORAN_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("ORAN"),
.firmness = BERRY_FIRMNESS_SUPER_HARD,
@@ -229,6 +239,8 @@ const struct Berry gBerries[] =
.sour = 10,
.smoothness = 20,
},
+
+ [ITEM_PERSIM_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("PERSIM"),
.firmness = BERRY_FIRMNESS_HARD,
@@ -245,6 +257,8 @@ const struct Berry gBerries[] =
.sour = 10,
.smoothness = 20,
},
+
+ [ITEM_LUM_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("LUM"),
.firmness = BERRY_FIRMNESS_SUPER_HARD,
@@ -261,6 +275,8 @@ const struct Berry gBerries[] =
.sour = 10,
.smoothness = 20,
},
+
+ [ITEM_SITRUS_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("SITRUS"),
.firmness = BERRY_FIRMNESS_VERY_HARD,
@@ -277,6 +293,8 @@ const struct Berry gBerries[] =
.sour = 10,
.smoothness = 20,
},
+
+ [ITEM_FIGY_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("FIGY"),
.firmness = BERRY_FIRMNESS_SOFT,
@@ -293,6 +311,8 @@ const struct Berry gBerries[] =
.sour = 0,
.smoothness = 25,
},
+
+ [ITEM_WIKI_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("WIKI"),
.firmness = BERRY_FIRMNESS_HARD,
@@ -309,6 +329,8 @@ const struct Berry gBerries[] =
.sour = 0,
.smoothness = 25,
},
+
+ [ITEM_MAGO_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("MAGO"),
.firmness = BERRY_FIRMNESS_HARD,
@@ -325,6 +347,8 @@ const struct Berry gBerries[] =
.sour = 0,
.smoothness = 25,
},
+
+ [ITEM_AGUAV_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("AGUAV"),
.firmness = BERRY_FIRMNESS_SUPER_HARD,
@@ -341,6 +365,8 @@ const struct Berry gBerries[] =
.sour = 0,
.smoothness = 25,
},
+
+ [ITEM_IAPAPA_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("IAPAPA"),
.firmness = BERRY_FIRMNESS_SOFT,
@@ -357,6 +383,8 @@ const struct Berry gBerries[] =
.sour = 10,
.smoothness = 25,
},
+
+ [ITEM_RAZZ_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("RAZZ"),
.firmness = BERRY_FIRMNESS_VERY_HARD,
@@ -373,6 +401,8 @@ const struct Berry gBerries[] =
.sour = 0,
.smoothness = 20,
},
+
+ [ITEM_BLUK_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("BLUK"),
.firmness = BERRY_FIRMNESS_SOFT,
@@ -389,6 +419,8 @@ const struct Berry gBerries[] =
.sour = 0,
.smoothness = 20,
},
+
+ [ITEM_NANAB_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("NANAB"),
.firmness = BERRY_FIRMNESS_VERY_HARD,
@@ -405,6 +437,8 @@ const struct Berry gBerries[] =
.sour = 0,
.smoothness = 20,
},
+
+ [ITEM_WEPEAR_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("WEPEAR"),
.firmness = BERRY_FIRMNESS_SUPER_HARD,
@@ -421,6 +455,8 @@ const struct Berry gBerries[] =
.sour = 10,
.smoothness = 20,
},
+
+ [ITEM_PINAP_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("PINAP"),
.firmness = BERRY_FIRMNESS_HARD,
@@ -437,6 +473,8 @@ const struct Berry gBerries[] =
.sour = 10,
.smoothness = 20,
},
+
+ [ITEM_POMEG_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("POMEG"),
.firmness = BERRY_FIRMNESS_VERY_HARD,
@@ -453,6 +491,8 @@ const struct Berry gBerries[] =
.sour = 0,
.smoothness = 20,
},
+
+ [ITEM_KELPSY_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("KELPSY"),
.firmness = BERRY_FIRMNESS_HARD,
@@ -469,6 +509,8 @@ const struct Berry gBerries[] =
.sour = 10,
.smoothness = 20,
},
+
+ [ITEM_QUALOT_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("QUALOT"),
.firmness = BERRY_FIRMNESS_HARD,
@@ -485,6 +527,8 @@ const struct Berry gBerries[] =
.sour = 10,
.smoothness = 20,
},
+
+ [ITEM_HONDEW_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("HONDEW"),
.firmness = BERRY_FIRMNESS_HARD,
@@ -501,6 +545,8 @@ const struct Berry gBerries[] =
.sour = 0,
.smoothness = 20,
},
+
+ [ITEM_GREPA_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("GREPA"),
.firmness = BERRY_FIRMNESS_SOFT,
@@ -517,6 +563,8 @@ const struct Berry gBerries[] =
.sour = 10,
.smoothness = 20,
},
+
+ [ITEM_TAMATO_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("TAMATO"),
.firmness = BERRY_FIRMNESS_SOFT,
@@ -533,6 +581,8 @@ const struct Berry gBerries[] =
.sour = 0,
.smoothness = 30,
},
+
+ [ITEM_CORNN_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("CORNN"),
.firmness = BERRY_FIRMNESS_HARD,
@@ -549,6 +599,8 @@ const struct Berry gBerries[] =
.sour = 0,
.smoothness = 30,
},
+
+ [ITEM_MAGOST_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("MAGOST"),
.firmness = BERRY_FIRMNESS_HARD,
@@ -565,6 +617,8 @@ const struct Berry gBerries[] =
.sour = 0,
.smoothness = 30,
},
+
+ [ITEM_RABUTA_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("RABUTA"),
.firmness = BERRY_FIRMNESS_SOFT,
@@ -581,6 +635,8 @@ const struct Berry gBerries[] =
.sour = 10,
.smoothness = 30,
},
+
+ [ITEM_NOMEL_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("NOMEL"),
.firmness = BERRY_FIRMNESS_SUPER_HARD,
@@ -597,6 +653,8 @@ const struct Berry gBerries[] =
.sour = 20,
.smoothness = 30,
},
+
+ [ITEM_SPELON_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("SPELON"),
.firmness = BERRY_FIRMNESS_SOFT,
@@ -613,6 +671,8 @@ const struct Berry gBerries[] =
.sour = 0,
.smoothness = 70,
},
+
+ [ITEM_PAMTRE_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("PAMTRE"),
.firmness = BERRY_FIRMNESS_VERY_SOFT,
@@ -629,6 +689,8 @@ const struct Berry gBerries[] =
.sour = 0,
.smoothness = 70,
},
+
+ [ITEM_WATMEL_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("WATMEL"),
.firmness = BERRY_FIRMNESS_SOFT,
@@ -645,6 +707,8 @@ const struct Berry gBerries[] =
.sour = 0,
.smoothness = 70,
},
+
+ [ITEM_DURIN_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("DURIN"),
.firmness = BERRY_FIRMNESS_HARD,
@@ -661,6 +725,8 @@ const struct Berry gBerries[] =
.sour = 10,
.smoothness = 70,
},
+
+ [ITEM_BELUE_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("BELUE"),
.firmness = BERRY_FIRMNESS_VERY_SOFT,
@@ -677,6 +743,8 @@ const struct Berry gBerries[] =
.sour = 40,
.smoothness = 70,
},
+
+ [ITEM_LIECHI_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("LIECHI"),
.firmness = BERRY_FIRMNESS_VERY_HARD,
@@ -693,6 +761,8 @@ const struct Berry gBerries[] =
.sour = 10,
.smoothness = 80,
},
+
+ [ITEM_GANLON_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("GANLON"),
.firmness = BERRY_FIRMNESS_VERY_HARD,
@@ -709,6 +779,8 @@ const struct Berry gBerries[] =
.sour = 0,
.smoothness = 80,
},
+
+ [ITEM_SALAC_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("SALAC"),
.firmness = BERRY_FIRMNESS_VERY_HARD,
@@ -725,6 +797,8 @@ const struct Berry gBerries[] =
.sour = 40,
.smoothness = 80,
},
+
+ [ITEM_PETAYA_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("PETAYA"),
.firmness = BERRY_FIRMNESS_VERY_HARD,
@@ -741,6 +815,8 @@ const struct Berry gBerries[] =
.sour = 0,
.smoothness = 80,
},
+
+ [ITEM_APICOT_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("APICOT"),
.firmness = BERRY_FIRMNESS_HARD,
@@ -757,6 +833,8 @@ const struct Berry gBerries[] =
.sour = 40,
.smoothness = 80,
},
+
+ [ITEM_LANSAT_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("LANSAT"),
.firmness = BERRY_FIRMNESS_SOFT,
@@ -773,6 +851,8 @@ const struct Berry gBerries[] =
.sour = 10,
.smoothness = 30,
},
+
+ [ITEM_STARF_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("STARF"),
.firmness = BERRY_FIRMNESS_SUPER_HARD,
@@ -789,6 +869,8 @@ const struct Berry gBerries[] =
.sour = 10,
.smoothness = 30,
},
+
+ [ITEM_ENIGMA_BERRY - FIRST_BERRY_INDEX] =
{
.name = _("ENIGMA"),
.firmness = BERRY_FIRMNESS_UNKNOWN,
diff --git a/src/berry_blender.c b/src/berry_blender.c
index 26327a634..c1c664c1a 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -36,6 +36,7 @@
#include "new_game.h"
#include "save.h"
#include "link.h"
+#include "constants/rgb.h"
#define BLENDER_SCORE_BEST 0
#define BLENDER_SCORE_GOOD 1
@@ -996,7 +997,7 @@ static void sub_807FAC8(void)
}
if (gReceivedRemoteLinkPlayers != 0 && gWirelessCommType)
{
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0);
}
SetVBlankCallback(VBlankCB0_BerryBlender);
@@ -1004,7 +1005,7 @@ static void sub_807FAC8(void)
}
break;
case 2:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
sub_8082D28();
sBerryBlenderData->mainState++;
break;
@@ -1018,7 +1019,7 @@ static void sub_807FAC8(void)
sBerryBlenderData->mainState++;
break;
case 5:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
sBerryBlenderData->mainState++;
break;
case 6:
@@ -1202,13 +1203,13 @@ static void sub_8080018(void)
}
if (gReceivedRemoteLinkPlayers != 0 && gWirelessCommType)
{
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0);
}
sBerryBlenderData->mainState++;
break;
case 3:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
sBerryBlenderData->mainState++;
break;
case 4:
@@ -1534,7 +1535,7 @@ static void sub_80808D4(void)
sBerryBlenderData->mainState++;
break;
case 3:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
sBerryBlenderData->mainState++;
sBerryBlenderData->framesToWait = 0;
break;
@@ -2037,7 +2038,7 @@ static void sub_8081744(void)
sBerryBlenderData->field_4C--;
sBerryBlenderData->field_72 = 0;
}
- if (gUnknown_020322D5 && gMain.newKeys & L_BUTTON)
+ if (gEnableContestDebugging && gMain.newKeys & L_BUTTON)
sBerryBlenderData->field_123 ^= 1;
}
@@ -2700,7 +2701,7 @@ static void CB2_HandlePlayerLinkPlayAgainChoice(void)
case 9:
if (IsLinkTaskFinished())
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
sBerryBlenderData->gameEndState++;
}
break;
diff --git a/src/berry_crush.c b/src/berry_crush.c
index 307bd49a7..a5d964cc9 100755
--- a/src/berry_crush.c
+++ b/src/berry_crush.c
@@ -337,7 +337,7 @@ void sub_8020FC4(struct BerryCrushGame *arg0)
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);
@@ -511,7 +511,7 @@ int sub_802104C(void)
CopyBgTilemapBufferToVram(3);
break;
case 8:
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0);
sub_8022730(var0);
SetGpuReg(REG_OFFSET_BG1VOFS, -gSpriteCoordOffsetY);
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index a7cf4daf2..d0f89ab8a 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -28,6 +28,7 @@
#include "item_menu_icons.h"
#include "decompress.h"
#include "international_string_util.h"
+#include "constants/rgb.h"
// There are 4 windows used in berry tag screen.
enum
@@ -279,7 +280,7 @@ static bool8 InitBerryTagScreen(void)
gMain.state++;
break;
case 15:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
gPaletteFade.bufferTransferDisabled = 0;
gMain.state++;
break;
@@ -513,7 +514,7 @@ static void DestroyFlavorCircleSprites(void)
static void PrepareToCloseBerryTagScreen(u8 taskId)
{
PlaySE(SE_SELECT);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].func = Task_CloseBerryTagScreen;
}
diff --git a/src/bike.c b/src/bike.c
index 530742bdf..7f84f350b 100644
--- a/src/bike.c
+++ b/src/bike.c
@@ -3,7 +3,7 @@
#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "fieldmap.h"
-#include "global.fieldmap.h"
+#include "field_specials.h"
#include "metatile_behavior.h"
#include "overworld.h"
#include "sound.h"
@@ -11,9 +11,6 @@
#include "constants/map_types.h"
#include "constants/songs.h"
-extern bool8 gBikeCyclingChallenge;
-extern u8 gBikeCollisions;
-
// this file's functions
static void MovePlayerOnMachBike(u8, u16, u16);
static u8 GetMachBikeTransition(u8 *);
diff --git a/src/cable_club.c b/src/cable_club.c
index fab187b07..303cc76d1 100644
--- a/src/cable_club.c
+++ b/src/cable_club.c
@@ -4,7 +4,7 @@
#include "battle_records.h"
#include "battle_setup.h"
#include "cable_club.h"
-#include "data2.h"
+#include "data.h"
#include "event_data.h"
#include "field_message_box.h"
#include "field_specials.h"
diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c
index c1d6930c7..b91506352 100644
--- a/src/clear_save_data_screen.c
+++ b/src/clear_save_data_screen.c
@@ -163,7 +163,7 @@ static bool8 SetupClearSaveDataScreen(void)
ShowBg(3);
SetGpuReg(REG_OFFSET_BLDCNT, 0);
InitClearSaveDataScreenWindows();
- BeginNormalPaletteFade(0x0000FFFF, 0, 0x10, 0, 0xFFFF);
+ BeginNormalPaletteFade(0x0000FFFF, 0, 0x10, 0, RGB_WHITEALPHA);
EnableInterrupts(INTR_FLAG_VBLANK);
SetVBlankCallback(VBlankCB);
gMain.state = 1;
diff --git a/src/contest.c b/src/contest.c
index 02d7038cf..eb3252f72 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -11,7 +11,7 @@
#include "battle.h"
#include "battle_anim.h"
#include "contest.h"
-#include "data2.h"
+#include "data.h"
#include "decompress.h"
#include "graphics.h"
#include "link.h"
@@ -41,10 +41,37 @@
#include "contest_link_80FC4F4.h"
#include "script_pokemon_util_80F87D8.h"
#include "international_string_util.h"
-#include "data2.h"
+#include "data.h"
#include "constants/rgb.h"
#include "contest_ai.h"
+#define APPLAUSE_METER_GFX_TAG 0xABE2
+
+// An index into a palette where the text color for each contestant is stored.
+// Contestant 0 will use palette color 10, contestant 1 will use color 11, etc.
+#define CONTESTANT_TEXT_COLOR_START 10
+
+enum
+{
+// The "{Pokemon Name} / {Trainer Name}" windows.
+ CONTEST_WINDOW_CONTESTANT0_NAME,
+ CONTEST_WINDOW_CONTESTANT1_NAME,
+ CONTEST_WINDOW_CONTESTANT2_NAME,
+ CONTEST_WINDOW_CONTESTANT3_NAME,
+ CONTEST_WINDOW_GENERAL_TEXT,
+ // The available moves, from top to bottom
+ CONTEST_WINDOW_MOVE0,
+ CONTEST_WINDOW_MOVE1,
+ CONTEST_WINDOW_MOVE2,
+ CONTEST_WINDOW_MOVE3,
+ // The small "/" character between the move category and the
+ // appeal/jam display
+ CONTEST_WINDOW_SLASH,
+ CONTEST_WINDOW_MOVE_DESCRIPTION
+};
+
+#define MOVE_WINDOWS_START CONTEST_WINDOW_MOVE0
+
// This file's functions.
static void sub_80D782C(void);
static void sub_80D7C7C(u8 taskId);
@@ -52,11 +79,11 @@ static void sub_80D7CB4(u8 taskId);
static void sub_80D7DAC(u8 taskId);
static void sub_80D7DC8(u8 taskId);
static void sub_80D7DE8(u8 taskId);
-static bool8 sub_80D7E44(u8 *);
+static bool8 SetupContestGraphics(u8 *stateVar);
static void sub_80D80C8(u8 taskId);
static void sub_80D8108(u8 taskId);
static void vblank_cb_battle(void);
-static void sub_80D823C(void);
+static void CB2_ContestMain(void);
static void sub_80D833C(u8 taskId);
static void sub_80D8424(u8 taskId);
static void sub_80D8610(u8 taskId);
@@ -94,31 +121,31 @@ static void sub_80DA7EC(u8);
static void sub_80DA830(u8);
static void sub_80DA874(void);
static bool8 sub_80DA8A4(void);
-static void sub_80DAF04(u8);
-static void sub_80DAF1C(u8 a0, u8 a1);
-static void sub_80DAF88(u8);
-static void sub_80DAFA0(u8, u8);
+static void PrintContestantTrainerName(u8);
+static void PrintContestantTrainerNameWithColor(u8 a0, u8 a1);
+static void PrintContestantMonName(u8);
+static void PrintContestantMonNameWithColor(u8, u8);
static u8 sub_80DB0C4(void);
static u8 sub_80DB120(void);
static u8 sub_80DB174(u16, u32, u32, u32);
-static void prints_contest_move_description(u16);
+static void PrintContestMoveDescription(u16);
static u16 SanitizeSpecies(u16);
-static void sub_80DB89C(void);
+static void ContestClearGeneralTextWindow(void);
static u16 GetChosenMove(u8);
-static void sub_80DB918(void);
-static void sub_80DBF68(void);
-static void sub_80DBF90(void);
+static void GetAllChosenMoves(void);
+static void ContestPrintLinkStandby(void);
+static void FillContestantWindowBgs(void);
static void sub_80DC2BC(void);
static void sub_80DC490(bool8);
static void sub_80DC4F0(void);
static void CreateApplauseMeterSprite(void);
static void sub_80DC5E8(void);
static void sub_80DC7EC(void);
-static void sub_80DCD48(void);
-static void sub_80DD04C(void);
-static void sub_80DD590(void);
-static void sub_80DDB0C(void);
-static void sub_80DDBE8(void);
+static void ContestDebugDoPrint(void);
+static void DrawContestantWindows(void);
+static void ApplyNextTurnOrder(void);
+static void StartMoveApplauseMeterOnscreen(void);
+static void TryMoveApplauseMeterOffscreen(void);
static void sub_80DE224(void);
static void sub_80DE350(void);
static void sub_80DE424(u8);
@@ -127,7 +154,7 @@ static void sub_80DEA20(void);
static void Contest_StartTextPrinter(const u8 *, u32);
static void ContestBG_FillBoxWithIncrementingTile(u8, u16, u8, u8, u8, u8, u8, s16);
static bool32 Contest_RunTextPrinters(void);
-static void Contest_SetBgCopyFlags(u32);
+static void Contest_SetBgCopyFlags(u32 flagIndex);
static void sub_80DBD18(void);
static void sub_80DD080(u8);
static void sub_80DE9DC(u8);
@@ -148,10 +175,10 @@ static bool8 sub_80DB798(u8);
static void sub_80DB884(void);
static void sub_80DC9B4(u8);
static void sub_80DDED0(s8, s8);
-static void sub_80DDCDC(s8);
+static void ShowAndUpdateApplauseMeter(s8 unused);
static void sub_80DDE0C(void);
-static void sub_80DD940(void);
-static void sub_80DB944(void);
+static void UpdateApplauseMeter(void);
+static void RankContestants(void);
static void sub_80DBA18(void);
static void sub_80DC3AC(void);
static bool8 sub_80DC3C4(void);
@@ -169,11 +196,11 @@ static void sub_80DC81C(u8);
static void sub_80DC87C(u8);
static void sub_80DCC84(struct Sprite *);
static void sub_80DCCD8(struct Sprite *sprite);
-static u8 sub_80DDA20(void);
-static void c3_08130B10(u8);
-static void sub_80DDB6C(u8);
-static void task08_080CD1CC(u8);
-static void sub_80DDD20(u8);
+static u8 StartApplauseOverflowAnimation(void);
+static void Task_ApplauseOverflowAnimation(u8);
+static void Task_MoveApplauseMeterOnscreen(u8);
+static void Task_MoveApplauseMeterOffscreen(u8);
+static void Task_ShowAndUpdateApplauseMeter(u8);
static void sub_80DDE30(u8);
static void sub_80DDF80(u8);
static const u8 *GetTurnOrderNumberGfx(u8);
@@ -186,10 +213,10 @@ static void sub_80DEA5C(void);
static void sub_80DF250(void);
static void sub_80DF4F8(void);
static void sub_80DF080(u8);
-static void sub_80DF750(void);
+static void ContestDebugPrintBitStrings(void);
static void sub_80DF9D4(u8 *);
static void sub_80DF9E0(u8 *, s32);
-static void sub_80DB2BC(void);
+static void SwapMoveDescAndContestTilemaps(void);
// EWRAM vars.
EWRAM_DATA struct ContestPokemon gContestMons[4] = {0};
@@ -200,8 +227,8 @@ EWRAM_DATA s16 gUnknown_02039F18[4] = {0};
EWRAM_DATA u8 gContestFinalStandings[4] = {0};
EWRAM_DATA u8 gContestMonPartyIndex = 0;
EWRAM_DATA u8 gContestPlayerMonIndex = 0;
-EWRAM_DATA u8 gUnknown_02039F26[4] = {0};
-EWRAM_DATA u8 gIsLinkContest = 0;
+EWRAM_DATA u8 gContestantTurnOrder[4] = {0};
+EWRAM_DATA u8 gLinkContestFlags = 0;
// Bit 0: Is a link contest
// Bit 1: Link contest uses wireless adapter
EWRAM_DATA u8 gUnknown_02039F2B = 0;
@@ -218,14 +245,14 @@ EWRAM_DATA u8 gUnknown_02039F5D = 0;
// IWRAM common vars.
u32 gContestRngValue;
-extern const u8 *const gUnknown_0827E8DA[];
+extern const u8 gText_LinkStandby4[];
extern const u8 gText_0827D55A[];
extern const u8 gText_0827E793[];
extern const u8 gText_0827E32E[];
extern const u8 gText_0827E35B[];
extern const u8 gText_0827E38D[];
extern const u8 gText_0827E2FE[];
-extern const u8 gText_0827E6E3[];
+extern const u8 gText_RepeatedAppeal[];
extern const u8 gText_0827E73C[];
extern const u8 gText_0827E717[];
extern const u8 gText_0827E76A[];
@@ -242,8 +269,6 @@ extern const u8 gText_Contest_Fear[];
extern const u8 gText_BDot[];
extern const u8 gText_CDot[];
extern const u8 *const gUnknown_08587E10[];
-extern const union AffineAnimCmd *const gUnknown_082FF6C0[];
-extern const union AffineAnimCmd *const gUnknown_082FF694[];
extern const struct SpriteTemplate gSpriteTemplate_8587AD0;
extern const struct SpriteTemplate gSpriteTemplate_8587B18[];
extern void (*const gContestEffectFuncs[])(void);
@@ -467,20 +492,20 @@ const struct SpriteTemplate gSpriteTemplate_8587B98 =
.callback = SpriteCallbackDummy
};
-const struct CompressedSpriteSheet gUnknown_08587BB0 =
+static const struct CompressedSpriteSheet sApplauseMeterSpriteSheet =
{
.data = gContestApplauseGfx,
.size = 0x400,
- .tag = 0xABE2
+ .tag = APPLAUSE_METER_GFX_TAG
};
-const struct SpritePalette gUnknown_08587BB8 =
+static const struct SpritePalette sApplauseMeterPalette =
{
.data = gContestPal,
- .tag = 0xABE2
+ .tag = APPLAUSE_METER_GFX_TAG
};
-const struct OamData gOamData_8587BC0 =
+static const struct OamData sApplauseMeterOamData =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -494,11 +519,11 @@ const struct OamData gOamData_8587BC0 =
.paletteNum = 0,
};
-const struct SpriteTemplate gSpriteTemplate_8587BC8 =
+static const struct SpriteTemplate sApplauseMeterSpriteTemplate =
{
- .tileTag = 0xABE2,
- .paletteTag = 0xABE2,
- .oam = &gOamData_8587BC0,
+ .tileTag = APPLAUSE_METER_GFX_TAG,
+ .paletteTag = APPLAUSE_METER_GFX_TAG,
+ .oam = &sApplauseMeterOamData,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
@@ -565,7 +590,7 @@ const u16 gUnknown_08587C30[] = INCBIN_U16("graphics/unknown/unknown_587C30.gbap
#include "data/contest_text_tables.h"
-const struct BgTemplate gUnknown_08587F34[] =
+static const struct BgTemplate sContestBgTemplates[] =
{
{
.bg = 0,
@@ -605,9 +630,9 @@ const struct BgTemplate gUnknown_08587F34[] =
}
};
-const struct WindowTemplate gUnknown_08587F44[] =
+static const struct WindowTemplate sContestWindowTemplates[] =
{
- {
+ [CONTEST_WINDOW_CONTESTANT0_NAME] = {
.bg = 0,
.tilemapLeft = 18,
.tilemapTop = 0,
@@ -616,7 +641,7 @@ const struct WindowTemplate gUnknown_08587F44[] =
.paletteNum = 0xF,
.baseBlock = 0x200
},
- {
+ [CONTEST_WINDOW_CONTESTANT1_NAME] = {
.bg = 0,
.tilemapLeft = 18,
.tilemapTop = 5,
@@ -625,7 +650,7 @@ const struct WindowTemplate gUnknown_08587F44[] =
.paletteNum = 0xF,
.baseBlock = 0x218
},
- {
+ [CONTEST_WINDOW_CONTESTANT2_NAME] = {
.bg = 0,
.tilemapLeft = 18,
.tilemapTop = 10,
@@ -634,7 +659,7 @@ const struct WindowTemplate gUnknown_08587F44[] =
.paletteNum = 0xF,
.baseBlock = 0x230
},
- {
+ [CONTEST_WINDOW_CONTESTANT3_NAME] = {
.bg = 0,
.tilemapLeft = 18,
.tilemapTop = 15,
@@ -643,7 +668,7 @@ const struct WindowTemplate gUnknown_08587F44[] =
.paletteNum = 0xF,
.baseBlock = 0x248
},
- {
+ [CONTEST_WINDOW_GENERAL_TEXT] = {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 15,
@@ -652,55 +677,55 @@ const struct WindowTemplate gUnknown_08587F44[] =
.paletteNum = 0xF,
.baseBlock = 0x260
},
- {
+ [CONTEST_WINDOW_MOVE0] = {
.bg = 0,
.tilemapLeft = 1,
- .tilemapTop = 0x1F,
+ .tilemapTop = 31,
.width = 9,
.height = 2,
.paletteNum = 0xF,
.baseBlock = 0x2A4
},
- {
+ [CONTEST_WINDOW_MOVE1] = {
.bg = 0,
.tilemapLeft = 1,
- .tilemapTop = 0x21,
+ .tilemapTop = 33,
.width = 9,
.height = 2,
.paletteNum = 0xF,
.baseBlock = 0x2B6
},
- {
+ [CONTEST_WINDOW_MOVE2] = {
.bg = 0,
.tilemapLeft = 1,
- .tilemapTop = 0x23,
+ .tilemapTop = 35,
.width = 9,
.height = 2,
.paletteNum = 0xF,
.baseBlock = 0x2C8
},
- {
+ [CONTEST_WINDOW_MOVE3] = {
.bg = 0,
.tilemapLeft = 1,
- .tilemapTop = 0x25,
+ .tilemapTop = 37,
.width = 9,
.height = 2,
.paletteNum = 0xF,
.baseBlock = 0x2DA
},
- {
+ [CONTEST_WINDOW_SLASH] = {
.bg = 0,
.tilemapLeft = 16,
- .tilemapTop = 0x1F,
+ .tilemapTop = 31,
.width = 1,
.height = 2,
.paletteNum = 0xF,
.baseBlock = 0x2EC
},
- {
+ [CONTEST_WINDOW_MOVE_DESCRIPTION] = {
.bg = 0,
.tilemapLeft = 11,
- .tilemapTop = 0x23,
+ .tilemapTop = 35,
.width = 18,
.height = 4,
.paletteNum = 0xF,
@@ -847,10 +872,10 @@ static void TaskDummy1(u8 taskId)
void ResetLinkContestBoolean(void)
{
- gIsLinkContest = 0;
+ gLinkContestFlags = 0;
}
-static void sub_80D7678(void)
+static void SetupContestGpuRegs(void)
{
u16 savedIme;
@@ -882,36 +907,36 @@ void LoadContestBgAfterMoveAnim(void)
LZDecompressVram(gContestMiscGfx, (void *)VRAM);
LZDecompressVram(gContestAudienceGfx, (void *)(BG_SCREEN_ADDR(4)));
- CopyToBgTilemapBuffer(3, gUnknown_08C16FA8, 0, 0);
+ CopyToBgTilemapBuffer(3, gOldContestGfx, 0, 0);
CopyBgTilemapBufferToVram(3);
- LoadCompressedPalette(gUnknown_08C16E90, 0, 0x200);
+ LoadCompressedPalette(gOldContestPalette, 0, 0x200);
sub_80D782C();
- for (i = 0; i < MAX_MON_MOVES; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- u32 var = 5 + i;
+ u32 contestantWindowId = MOVE_WINDOWS_START + i;
- LoadPalette(shared18000.unk18004[var], 16 * (5 + gUnknown_02039F26[i]), 16 * sizeof(u16));
+ LoadPalette(eUnknownHeap1A004.cachedWindowPalettes[contestantWindowId], 16 * (MOVE_WINDOWS_START + gContestantTurnOrder[i]), sizeof((eUnknownHeap1A004.cachedWindowPalettes[contestantWindowId])));
}
}
-static void sub_80D779C(void)
+static void InitContestInfoBgs(void)
{
s32 i;
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gUnknown_08587F34, ARRAY_COUNT(gUnknown_08587F34));
+ InitBgsFromTemplates(0, sContestBgTemplates, ARRAY_COUNT(sContestBgTemplates));
SetBgAttribute(3, BG_ATTR_WRAPAROUND, 1);
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- SetBgTilemapBuffer(i, gContestResources->field_24[i]);
+ SetBgTilemapBuffer(i, gContestResources->contestBgTilemaps[i]);
}
}
-static void sub_80D77E4(void)
+static void InitContestWindows(void)
{
- InitWindows(gUnknown_08587F44);
+ InitWindows(sContestWindowTemplates);
DeactivateAllTextPrinters();
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
gTextFlags.canABSpeedUpPrint = FALSE;
}
@@ -932,78 +957,82 @@ static void sub_80D782C(void)
FillPalette(RGB(31, 17, 31), 0xF3, 2);
}
-static void sub_80D787C(void)
+static void InitContestResources(void)
{
s32 i;
- *gContestResources->field_0 = (struct Contest){};
- for (i = 0; i < 4; i++)
+ eContest = (struct Contest){};
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- gContestResources->field_0->unk19206[i] = 0xFF;
+ eContest.unused2[i] = 0xFF;
}
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- gContestResources->field_4[i] = (struct ContestantStatus){};
+ eContestantStatus[i] = (struct ContestantStatus){};
}
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- gContestResources->field_4[i].unkB_0 = 0;
- gContestResources->field_4[i].effectStringId = CONTEST_STRING_NONE;
- gContestResources->field_4[i].effectStringId2 = CONTEST_STRING_NONE;
+ eContestantStatus[i].ranking = 0;
+ eContestantStatus[i].effectStringId = CONTEST_STRING_NONE;
+ eContestantStatus[i].effectStringId2 = CONTEST_STRING_NONE;
}
- *gContestResources->field_8 = (struct UnknownContestStruct7){};
- *gContestResources->field_C = (struct ContestAIInfo){};
+ eContestResources8 = (struct UnknownContestStruct7){};
+ eContestAI = (struct ContestAIInfo){};
*gContestResources->field_10 = (struct UnknownContestStruct5){};
- memset(gContestResources->field_14, 0, 4 * sizeof(struct UnknownContestStruct4));
- if (!(gIsLinkContest & 1))
- sub_80DCE58(0);
- for (i = 0; i < 4; i++)
+ memset(gContestResources->field_14, 0, CONTESTANT_COUNT * sizeof(struct UnknownContestStruct4));
+
+ if (!(gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK))
+ SortContestants(FALSE);
+
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- gContestResources->field_4[i].nextTurnOrder = 0xFF;
- gContestResources->field_0->unk19218[i] = gUnknown_02039F26[i];
+ eContestantStatus[i].nextTurnOrder = 0xFF;
+ eContest.prevTurnOrder[i] = gContestantTurnOrder[i];
}
- sub_80DD590();
- memset(gContestResources->field_1c, 0, sizeof(*gContestResources->field_1c) * 4);
+ // Calling this here while all the nextTurnOrder values are 0xFF will actually
+ // just reverse the turn order.
+ ApplyNextTurnOrder();
+ memset(gContestResources->field_1c, 0, sizeof(*gContestResources->field_1c) * CONTESTANT_COUNT);
}
-static void sub_80D7988(void)
+static void AllocContestResources(void)
{
gContestResources = AllocZeroed(sizeof(struct ContestResources));
- gContestResources->field_0 = AllocZeroed(sizeof(struct Contest));
- gContestResources->field_4 = AllocZeroed(sizeof(struct ContestantStatus) * 4);
+ gContestResources->contest = AllocZeroed(sizeof(struct Contest));
+ gContestResources->status = AllocZeroed(sizeof(struct ContestantStatus) * CONTESTANT_COUNT);
gContestResources->field_8 = AllocZeroed(sizeof(struct UnknownContestStruct7));
- gContestResources->field_C = AllocZeroed(sizeof(struct ContestAIInfo));
- gContestResources->field_10 = AllocZeroed(sizeof(struct UnknownContestStruct5) * 4);
- gContestResources->field_14 = AllocZeroed(sizeof(struct UnknownContestStruct4) * 4);
+ gContestResources->aiData = AllocZeroed(sizeof(struct ContestAIInfo));
+ gContestResources->field_10 = AllocZeroed(sizeof(struct UnknownContestStruct5) * CONTESTANT_COUNT);
+ gContestResources->field_14 = AllocZeroed(sizeof(struct UnknownContestStruct4) * CONTESTANT_COUNT);
gContestResources->field_18 = AllocZeroed(sizeof(struct ContestStruct_field_18));
- gContestResources->field_1c = AllocZeroed(sizeof(struct ContestResourcesField1C) * 4);
+ gContestResources->field_1c = AllocZeroed(sizeof(struct ContestResourcesField1C) * CONTESTANT_COUNT);
gContestResources->field_20 = AllocZeroed(sizeof(struct ContestResourcesField20));
- gContestResources->field_24[0] = AllocZeroed(0x1000);
- gContestResources->field_24[1] = AllocZeroed(0x1000);
- gContestResources->field_24[2] = AllocZeroed(0x1000);
- gContestResources->field_24[3] = AllocZeroed(0x1000);
+ gContestResources->contestBgTilemaps[0] = AllocZeroed(0x1000);
+ gContestResources->contestBgTilemaps[1] = AllocZeroed(0x1000);
+ gContestResources->contestBgTilemaps[2] = AllocZeroed(0x1000);
+ gContestResources->contestBgTilemaps[3] = AllocZeroed(0x1000);
gContestResources->field_34 = AllocZeroed(0x800);
gContestResources->field_38 = AllocZeroed(0x800);
gContestResources->field_3c = AllocZeroed(0x2000);
gUnknown_0202305C = gContestResources->field_3c;
- gUnknown_02023060 = gContestResources->field_24[1];
+ gUnknown_02023060 = gContestResources->contestBgTilemaps[1];
}
-static void sub_80D7A5C(void)
+static void FreeContestResources(void)
{
- FREE_AND_SET_NULL(gContestResources->field_0);
- FREE_AND_SET_NULL(gContestResources->field_4);
+ FREE_AND_SET_NULL(gContestResources->contest);
+ FREE_AND_SET_NULL(gContestResources->status);
FREE_AND_SET_NULL(gContestResources->field_8);
- FREE_AND_SET_NULL(gContestResources->field_C);
+ FREE_AND_SET_NULL(gContestResources->aiData);
FREE_AND_SET_NULL(gContestResources->field_10);
FREE_AND_SET_NULL(gContestResources->field_14);
FREE_AND_SET_NULL(gContestResources->field_18);
FREE_AND_SET_NULL(gContestResources->field_1c);
FREE_AND_SET_NULL(gContestResources->field_20);
- FREE_AND_SET_NULL(gContestResources->field_24[0]);
- FREE_AND_SET_NULL(gContestResources->field_24[1]);
- FREE_AND_SET_NULL(gContestResources->field_24[2]);
- FREE_AND_SET_NULL(gContestResources->field_24[3]);
+ FREE_AND_SET_NULL(gContestResources->contestBgTilemaps[0]);
+ FREE_AND_SET_NULL(gContestResources->contestBgTilemaps[1]);
+ FREE_AND_SET_NULL(gContestResources->contestBgTilemaps[2]);
+ FREE_AND_SET_NULL(gContestResources->contestBgTilemaps[3]);
FREE_AND_SET_NULL(gContestResources->field_34);
FREE_AND_SET_NULL(gContestResources->field_38);
FREE_AND_SET_NULL(gContestResources->field_3c);
@@ -1012,20 +1041,20 @@ static void sub_80D7A5C(void)
gUnknown_02023060 = NULL;
}
-void sub_80D7B24(void)
+void CB2_StartContest(void)
{
switch (gMain.state)
{
case 0:
sContestBgCopyFlags = 0;
- sub_80D7988();
+ AllocContestResources();
AllocateMonSpritesGfx();
FREE_AND_SET_NULL(gMonSpritesGfxPtr->firstDecompressed);
gMonSpritesGfxPtr->firstDecompressed = AllocZeroed(0x4000);
SetVBlankCallback(NULL);
- sub_80D779C();
- sub_80D77E4();
- sub_80D7678();
+ InitContestInfoBgs();
+ InitContestWindows();
+ SetupContestGpuRegs();
ScanlineEffect_Clear();
ResetPaletteFade();
gPaletteFade.bufferTransferDisabled = TRUE;
@@ -1033,19 +1062,18 @@ void sub_80D7B24(void)
ResetTasks();
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 4;
- //shared18000.unk18000 = 0;
- gHeap[0x1a000] = 0;
+ eContestDebugMode = CONTEST_DEBUG_MODE_OFF;
ClearBattleMonForms();
- sub_80D787C();
+ InitContestResources();
gMain.state++;
break;
case 1:
gMain.state++;
break;
case 2:
- if (sub_80D7E44(&gContestResources->field_0->unk1925D))
+ if (SetupContestGraphics(&eContest.contestSetupState))
{
- gContestResources->field_0->unk1925D = 0;
+ eContest.contestSetupState = 0;
gMain.state++;
}
break;
@@ -1056,11 +1084,11 @@ void sub_80D7B24(void)
BeginFastPaletteFade(2);
gPaletteFade.bufferTransferDisabled = FALSE;
SetVBlankCallback(vblank_cb_battle);
- gContestResources->field_0->mainTaskId = CreateTask(sub_80D7C7C, 10);
- SetMainCallback2(sub_80D823C);
- if (gIsLinkContest & 2)
+ eContest.mainTaskId = CreateTask(sub_80D7C7C, 10);
+ SetMainCallback2(CB2_ContestMain);
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_WIRELESS)
{
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(8, 8);
}
break;
@@ -1078,14 +1106,14 @@ static void sub_80D7C7C(u8 taskId)
static void sub_80D7CB4(u8 taskId)
{
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
- if (gIsLinkContest & 2)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_WIRELESS)
{
switch (gTasks[taskId].data[0])
{
case 0:
- sub_80DBF68();
+ ContestPrintLinkStandby();
gTasks[taskId].data[0]++;
// fallthrough
case 1:
@@ -1106,8 +1134,8 @@ static void sub_80D7CB4(u8 taskId)
if (!gPaletteFade.active)
{
gPaletteFade.bufferTransferDisabled = FALSE;
- if (!(gIsLinkContest & 2))
- sub_80DBF68();
+ if (!(gLinkContestFlags & LINK_CONTEST_FLAG_IS_WIRELESS))
+ ContestPrintLinkStandby();
CreateTask(sub_80D7DAC, 0);
gTasks[taskId].data[0] = 0;
gTasks[taskId].func = TaskDummy1;
@@ -1137,17 +1165,17 @@ static void sub_80D7DE8(u8 taskId)
{
GetMultiplayerId(); // unused return value
DestroyTask(taskId);
- gTasks[gContestResources->field_0->mainTaskId].func = sub_80D80C8;
+ gTasks[eContest.mainTaskId].func = sub_80D80C8;
gRngValue = gContestRngValue;
}
}
-static u8 sub_80D7E44(u8 *a)
+static bool8 SetupContestGraphics(u8 *stateVar)
{
- u16 sp0[16];
- u16 sp20[16];
+ u16 tempPalette1[16];
+ u16 tempPalette2[16];
- switch (*a)
+ switch (*stateVar)
{
case 0:
gPaletteFade.bufferTransferDisabled = TRUE;
@@ -1160,31 +1188,32 @@ static u8 sub_80D7E44(u8 *a)
break;
case 2:
LZDecompressVram(gContestAudienceGfx, (void *)(BG_SCREEN_ADDR(4)));
- DmaCopyLarge32(3, (void *)(BG_SCREEN_ADDR(4)), shared15800, 0x2000, 0x1000);
+ DmaCopyLarge32(3, (void *)(BG_SCREEN_ADDR(4)), eUnzippedContestAudienceGfx, 0x2000, 0x1000);
break;
case 3:
- CopyToBgTilemapBuffer(3, gUnknown_08C16FA8, 0, 0);
+ CopyToBgTilemapBuffer(3, gOldContestGfx, 0, 0);
CopyBgTilemapBufferToVram(3);
break;
case 4:
CopyToBgTilemapBuffer(2, gUnknown_08C17170, 0, 0);
CopyBgTilemapBufferToVram(2);
- DmaCopy32Defvars(3, gContestResources->field_24[2], shared18000.unk18A04, 0x800);
+ // This is a bug, and copies random junk. savedJunk is never read.
+ DmaCopy32Defvars(3, gContestResources->contestBgTilemaps[2], eUnknownHeap1A004.savedJunk, sizeof(eUnknownHeap1A004.savedJunk));
break;
case 5:
- LoadCompressedPalette(gUnknown_08C16E90, 0, 0x200);
- CpuCopy32(gPlttBufferUnfaded + 128, sp0, 16 * sizeof(u16));
- CpuCopy32(gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, sp20, 16 * sizeof(u16));
- CpuCopy32(sp20, gPlttBufferUnfaded + 128, 16 * sizeof(u16));
- CpuCopy32(sp0, gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, 16 * sizeof(u16));
- DmaCopy32Defvars(3, gPlttBufferUnfaded, shared18000.unk18004, 0x200);
+ LoadCompressedPalette(gOldContestPalette, 0, 0x200);
+ CpuCopy32(gPlttBufferUnfaded + 128, tempPalette1, 16 * sizeof(u16));
+ CpuCopy32(gPlttBufferUnfaded + (MOVE_WINDOWS_START + gContestPlayerMonIndex) * 16, tempPalette2, 16 * sizeof(u16));
+ CpuCopy32(tempPalette2, gPlttBufferUnfaded + 128, 16 * sizeof(u16));
+ CpuCopy32(tempPalette1, gPlttBufferUnfaded + (MOVE_WINDOWS_START + gContestPlayerMonIndex) * 16, 16 * sizeof(u16));
+ DmaCopy32Defvars(3, gPlttBufferUnfaded, eUnknownHeap1A004.cachedWindowPalettes, sizeof(eUnknownHeap1A004.cachedWindowPalettes));
sub_80D782C();
break;
case 6:
- sub_80DD04C();
- sub_80DBF90();
- sub_80DB2BC();
- gContestResources->field_0->unk19216 = sub_80DB120();
+ DrawContestantWindows();
+ FillContestantWindowBgs();
+ SwapMoveDescAndContestTilemaps();
+ eContest.unk19216 = sub_80DB120();
sub_80DC2BC();
sub_80DC4F0();
CreateApplauseMeterSprite();
@@ -1208,12 +1237,12 @@ static u8 sub_80D7E44(u8 *a)
ShowBg(1);
break;
default:
- *a = 0;
- return 1;
+ *stateVar = 0;
+ return TRUE;
}
- (*a)++;
- return 0;
+ (*stateVar)++;
+ return FALSE;
}
static void sub_80D80C8(u8 taskId)
@@ -1256,13 +1285,13 @@ static void sub_80D8108(u8 taskId)
((struct BgCnt *)&bg2Cnt)->priority = 0;
SetGpuReg(REG_OFFSET_BG0CNT, bg0Cnt);
SetGpuReg(REG_OFFSET_BG2CNT, bg2Cnt);
- sub_80DDB0C();
+ StartMoveApplauseMeterOnscreen();
gTasks[taskId].data[0]++;
break;
}
case 4:
default:
- if (gContestResources->field_0->unk1920A_6)
+ if (eContest.applauseMeterIsMoving)
break;
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
@@ -1271,7 +1300,7 @@ static void sub_80D8108(u8 taskId)
}
}
-static void sub_80D823C(void)
+static void CB2_ContestMain(void)
{
s32 i;
@@ -1314,16 +1343,16 @@ static void sub_80D833C(u8 taskId)
{
gBattle_BG0_Y = 0;
gBattle_BG2_Y = 0;
- sub_80DCD48();
- DmaCopy32Defvars(3, gPlttBufferUnfaded, shared18000.unk18204, 0x400);
- ConvertIntToDecimalStringN(gStringVar1, gContestResources->field_0->turnNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1);
+ ContestDebugDoPrint();
+ DmaCopy32Defvars(3, gPlttBufferUnfaded, eUnknownHeap1A004.unk18204, PLTT_BUFFER_SIZE * 2);
+ ConvertIntToDecimalStringN(gStringVar1, eContest.turnNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1);
if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex))
StringCopy(gDisplayedStringBattle, gText_0827D507);
else
StringCopy(gDisplayedStringBattle, gText_0827D531);
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle);
- Contest_StartTextPrinter(gStringVar4, 1);
+ Contest_StartTextPrinter(gStringVar4, TRUE);
gTasks[taskId].data[0]++;
}
else
@@ -1366,15 +1395,15 @@ static void sub_80D8490(u8 taskId)
u16 move = gContestMons[gContestPlayerMonIndex].moves[i];
u8 *r5 = sp8;
- if (gContestResources->field_4[gContestPlayerMonIndex].prevMove != MOVE_NONE
+ if (eContestantStatus[gContestPlayerMonIndex].prevMove != MOVE_NONE
&& sub_80DE1E8(gContestPlayerMonIndex)
- && AreMovesContestCombo(gContestResources->field_4[gContestPlayerMonIndex].prevMove, move) != 0
- && gContestResources->field_4[gContestPlayerMonIndex].hasJudgesAttention)
+ && AreMovesContestCombo(eContestantStatus[gContestPlayerMonIndex].prevMove, move) != 0
+ && eContestantStatus[gContestPlayerMonIndex].hasJudgesAttention)
{
r5 = StringCopy(sp8, gText_ColorLightShadowDarkGrey);
}
else if (move != 0
- && gContestResources->field_4[gContestPlayerMonIndex].prevMove == move
+ && eContestantStatus[gContestPlayerMonIndex].prevMove == move
&& gContestMoves[move].effect != CONTEST_EFFECT_REPETITION_NOT_BORING)
{
// Gray the text because it is a repeated move
@@ -1382,12 +1411,12 @@ static void sub_80D8490(u8 taskId)
}
r5 = StringCopy(r5, gMoveNames[move]);
- FillWindowPixelBuffer(i + 5, PIXEL_FILL(0));
- Contest_PrintTextToBg0WindowAt(i + 5, sp8, 5, 1, 7);
+ FillWindowPixelBuffer(i + MOVE_WINDOWS_START, PIXEL_FILL(0));
+ Contest_PrintTextToBg0WindowAt(i + MOVE_WINDOWS_START, sp8, 5, 1, 7);
}
- sub_80D880C(gContestResources->field_0->playerMoveChoice);
- prints_contest_move_description(gContestMons[gContestPlayerMonIndex].moves[gContestResources->field_0->playerMoveChoice]);
+ sub_80D880C(eContest.playerMoveChoice);
+ PrintContestMoveDescription(gContestMons[gContestPlayerMonIndex].moves[eContest.playerMoveChoice]);
gTasks[taskId].func = sub_80D8610;
}
@@ -1414,12 +1443,12 @@ static void sub_80D8610(u8 taskId)
case B_BUTTON:
PlaySE(SE_SELECT);
sub_80DC490(FALSE);
- ConvertIntToDecimalStringN(gStringVar1, gContestResources->field_0->turnNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1);
+ ConvertIntToDecimalStringN(gStringVar1, eContest.turnNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1);
if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex))
StringCopy(gDisplayedStringBattle, gText_0827D507);
else
StringCopy(gDisplayedStringBattle, gText_0827D531);
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle);
Contest_StartTextPrinter(gStringVar4, 0);
gBattle_BG0_Y = 0;
@@ -1430,24 +1459,24 @@ static void sub_80D8610(u8 taskId)
case DPAD_RIGHT:
break;
case DPAD_UP:
- sub_80D883C(gContestResources->field_0->playerMoveChoice);
- if (gContestResources->field_0->playerMoveChoice == 0)
- gContestResources->field_0->playerMoveChoice = numMoves - 1;
+ sub_80D883C(eContest.playerMoveChoice);
+ if (eContest.playerMoveChoice == 0)
+ eContest.playerMoveChoice = numMoves - 1;
else
- gContestResources->field_0->playerMoveChoice--;
- sub_80D880C(gContestResources->field_0->playerMoveChoice);
- prints_contest_move_description(gContestMons[gContestPlayerMonIndex].moves[gContestResources->field_0->playerMoveChoice]);
+ eContest.playerMoveChoice--;
+ sub_80D880C(eContest.playerMoveChoice);
+ PrintContestMoveDescription(gContestMons[gContestPlayerMonIndex].moves[eContest.playerMoveChoice]);
if (numMoves > 1)
PlaySE(SE_SELECT);
break;
case DPAD_DOWN:
- sub_80D883C(gContestResources->field_0->playerMoveChoice);
- if (gContestResources->field_0->playerMoveChoice == numMoves - 1)
- gContestResources->field_0->playerMoveChoice = 0;
+ sub_80D883C(eContest.playerMoveChoice);
+ if (eContest.playerMoveChoice == numMoves - 1)
+ eContest.playerMoveChoice = 0;
else
- gContestResources->field_0->playerMoveChoice++;
- sub_80D880C(gContestResources->field_0->playerMoveChoice);
- prints_contest_move_description(gContestMons[gContestPlayerMonIndex].moves[gContestResources->field_0->playerMoveChoice]);
+ eContest.playerMoveChoice++;
+ sub_80D880C(eContest.playerMoveChoice);
+ PrintContestMoveDescription(gContestMons[gContestPlayerMonIndex].moves[eContest.playerMoveChoice]);
if (numMoves > 1)
PlaySE(SE_SELECT);
break;
@@ -1468,21 +1497,21 @@ static void sub_80D883C(s8 a0)
static void sub_80D8894(u8 taskId)
{
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
- u16 var = GetChosenMove(gContestPlayerMonIndex);
+ u16 move = GetChosenMove(gContestPlayerMonIndex);
u8 taskId2;
- gContestResources->field_4[gContestPlayerMonIndex].currMove = var;
+ eContestantStatus[gContestPlayerMonIndex].currMove = move;
taskId2 = CreateTask(sub_80FC9F8, 0);
SetTaskFuncWithFollowupFunc(taskId2, sub_80FC9F8, sub_80D892C);
gTasks[taskId].func = TaskDummy1;
- sub_80DBF68();
+ ContestPrintLinkStandby();
sub_80DC490(FALSE);
}
else
{
- sub_80DB918();
+ GetAllChosenMoves();
gTasks[taskId].func = sub_80D895C;
}
}
@@ -1490,28 +1519,28 @@ static void sub_80D8894(u8 taskId)
static void sub_80D892C(u8 taskId)
{
DestroyTask(taskId);
- gTasks[gContestResources->field_0->mainTaskId].func = sub_80D895C;
+ gTasks[eContest.mainTaskId].func = sub_80D895C;
}
static void sub_80D895C(u8 taskId)
{
s32 i;
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
gBattle_BG0_Y = 0;
gBattle_BG2_Y = 0;
sub_80DC490(FALSE);
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- FillWindowPixelBuffer(5 + i, PIXEL_FILL(0));
- PutWindowTilemap(5 + i);
- CopyWindowToVram(5 + i, 2);
+ FillWindowPixelBuffer(MOVE_WINDOWS_START + i, PIXEL_FILL(0));
+ PutWindowTilemap(MOVE_WINDOWS_START + i);
+ CopyWindowToVram(MOVE_WINDOWS_START + i, 2);
}
Contest_SetBgCopyFlags(0);
-
- DmaCopy32Defvars(3, gPlttBufferFaded, shared18000.unk18604, 0x400);
- LoadPalette(shared18000.unk18204, 0, 0x400);
+ // This seems to be a bug; it should have just copied PLTT_BUFFER_SIZE.
+ DmaCopy32Defvars(3, gPlttBufferFaded, eUnknownHeap1A004.unk18604, PLTT_BUFFER_SIZE * 2);
+ LoadPalette(eUnknownHeap1A004.unk18204, 0, PLTT_BUFFER_SIZE * 2);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
gTasks[taskId].func = sub_80D8A04;
@@ -1524,7 +1553,7 @@ static void sub_80D8A04(u8 taskId)
gTasks[taskId].data[0] = 0;
if (++gTasks[taskId].data[1] == 2)
{
- sub_80DDBE8();
+ TryMoveApplauseMeterOffscreen();
sub_80DE69C(1);
gTasks[taskId].func = sub_80D8A50;
}
@@ -1533,7 +1562,7 @@ static void sub_80D8A04(u8 taskId)
static void sub_80D8A50(u8 taskId)
{
- if (!gContestResources->field_0->unk1920A_6 && !gContestResources->field_0->unk1920B_1)
+ if (!eContest.applauseMeterIsMoving && !eContest.unk1920B_1)
gTasks[taskId].func = sub_80D8A88;
}
@@ -1541,15 +1570,15 @@ static void sub_80D8A88(u8 taskId)
{
if (++gTasks[taskId].data[0] > 19)
{
- gContestResources->field_0->unk19214 = 0;
- gContestResources->field_0->unk1921C = gRngValue;
- if ((gIsLinkContest & 1) && sub_80DA8A4())
+ eContest.unk19214 = 0;
+ eContest.unk1921C = gRngValue;
+ if ((gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK) && sub_80DA8A4())
{
s32 i;
for (i = 0; i + gNumLinkContestPlayers < 4; i++)
{
- gContestResources->field_4[gNumLinkContestPlayers + i].currMove = GetChosenMove(gNumLinkContestPlayers + i);
+ eContestantStatus[gNumLinkContestPlayers + i].currMove = GetChosenMove(gNumLinkContestPlayers + i);
}
}
gTasks[taskId].data[0] = 0;
@@ -1561,50 +1590,50 @@ static void sub_80D8B38(u8 taskId)
{
u8 spriteId;
s32 i;
- u8 r6 = gContestResources->field_0->unk19215;
+ u8 r6 = eContest.unk19215;
s8 r3;
switch (gTasks[taskId].data[0])
{
case 0:
- sub_80DCD48();
- for (i = 0; gContestResources->field_0->unk19214 != gContestResources->field_8->turnOrder[i]; i++)
+ ContestDebugDoPrint();
+ for (i = 0; eContest.unk19214 != gContestResources->field_8->turnOrder[i]; i++)
;
- gContestResources->field_0->unk19215 = i;
- r6 = gContestResources->field_0->unk19215;
- if (gIsLinkContest & 1)
+ eContest.unk19215 = i;
+ r6 = eContest.unk19215;
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
u8 taskId2;
- gContestResources->field_0->unk1920B_2 = 1;
+ eContest.unk1920B_2 = 1;
if (sub_80DA8A4())
- sub_80DD080(gContestResources->field_0->unk19215);
+ sub_80DD080(eContest.unk19215);
taskId2 = CreateTask(sub_80FCC88, 0);
SetTaskFuncWithFollowupFunc(taskId2, sub_80FCC88, sub_80DA110);
- sub_80DBF68();
+ ContestPrintLinkStandby();
gTasks[taskId].data[0] = 1;
}
else
{
- sub_80DD080(gContestResources->field_0->unk19215);
+ sub_80DD080(eContest.unk19215);
gTasks[taskId].data[0] = 2;
}
return;
case 1:
- if (!gContestResources->field_0->unk1920B_2)
+ if (!eContest.unk1920B_2)
gTasks[taskId].data[0] = 2;
return;
case 2:
sub_80DF080(r6);
- sub_80DF750();
- if (gContestResources->field_4[r6].numTurnsSkipped != 0
- || gContestResources->field_4[r6].noMoreTurns)
+ ContestDebugPrintBitStrings();
+ if (eContestantStatus[r6].numTurnsSkipped != 0
+ || eContestantStatus[r6].noMoreTurns)
{
gTasks[taskId].data[0] = 31;
}
else
{
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[0] = 3;
}
@@ -1613,17 +1642,17 @@ static void sub_80D8B38(u8 taskId)
for (i = 0; i < 4; i++)
gBattleMonForms[i] = 0;
memset(gContestResources->field_18, 0, sizeof(*gContestResources->field_18));
- sub_80DE9DC(gContestResources->field_0->unk19215);
+ sub_80DE9DC(eContest.unk19215);
spriteId = sub_80DB174(
- gContestMons[gContestResources->field_0->unk19215].species,
- gContestMons[gContestResources->field_0->unk19215].otId,
- gContestMons[gContestResources->field_0->unk19215].personality,
- gContestResources->field_0->unk19215);
+ gContestMons[eContest.unk19215].species,
+ gContestMons[eContest.unk19215].otId,
+ gContestMons[eContest.unk19215].personality,
+ eContest.unk19215);
gSprites[spriteId].pos2.x = 120;
gSprites[spriteId].callback = sub_80DA134;
gTasks[taskId].data[2] = spriteId;
gBattlerSpriteIds[gBattlerAttacker] = spriteId;
- sub_80DCBE8(sub_80DC9EC(gContestResources->field_0->unk19215), FALSE);
+ sub_80DCBE8(sub_80DC9EC(eContest.unk19215), FALSE);
gTasks[taskId].data[0] = 4;
return;
case 4:
@@ -1635,18 +1664,18 @@ static void sub_80D8B38(u8 taskId)
}
return;
case 5:
- if (gContestResources->field_4[r6].nervous)
+ if (eContestantStatus[r6].nervous)
{
gTasks[taskId].data[0] = 33;
}
else
{
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
StringCopy(gStringVar1, gContestMons[r6].nickname);
- if (gContestResources->field_4[r6].currMove < MOVES_COUNT)
- StringCopy(gStringVar2, gMoveNames[gContestResources->field_4[r6].currMove]);
+ if (eContestantStatus[r6].currMove < MOVES_COUNT)
+ StringCopy(gStringVar2, gMoveNames[eContestantStatus[r6].currMove]);
else
- StringCopy(gStringVar2, gUnknown_08587F1C[gContestResources->field_4[r6].moveCategory]);
+ StringCopy(gStringVar2, gUnknown_08587F1C[eContestantStatus[r6].moveCategory]);
StringExpandPlaceholders(gStringVar4, gText_0827D55A);
Contest_StartTextPrinter(gStringVar4, 1);
gTasks[taskId].data[0] = 6;
@@ -1655,16 +1684,16 @@ static void sub_80D8B38(u8 taskId)
case 6:
if (!Contest_RunTextPrinters())
{
- gContestResources->field_0->unk1925E = 0;
+ eContest.unk1925E = 0;
gTasks[taskId].data[0] = 7;
}
return;
case 7:
{
- u16 move = SanitizeMove(gContestResources->field_4[gContestResources->field_0->unk19215].currMove);
+ u16 move = SanitizeMove(eContestantStatus[eContest.unk19215].currMove);
- sub_80DE864(gContestResources->field_0->unk19215);
- sub_80DE9DC(gContestResources->field_0->unk19215);
+ sub_80DE864(eContest.unk19215);
+ sub_80DE9DC(eContest.unk19215);
SelectContestMoveBankTarget(move);
DoMoveAnim(move);
gTasks[taskId].data[0] = 8;
@@ -1675,14 +1704,14 @@ static void sub_80D8B38(u8 taskId)
if (!gAnimScriptActive)
{
sub_80DE9B0(r6);
- if (gContestResources->field_0->unk1925E != 0)
+ if (eContest.unk1925E != 0)
{
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[0] = 9;
}
else
{
- if (!gContestResources->field_4[r6].hasJudgesAttention)
+ if (!eContestantStatus[r6].hasJudgesAttention)
sub_80DC674(r6);
sub_80DE12C();
gTasks[taskId].data[0] = 23;
@@ -1698,25 +1727,25 @@ static void sub_80D8B38(u8 taskId)
return;
case 23:
gTasks[taskId].data[1] = 0;
- if (gContestResources->field_4[r6].effectStringId != CONTEST_STRING_NONE)
+ if (eContestantStatus[r6].effectStringId != CONTEST_STRING_NONE)
{
- sub_80DD45C(r6, gContestResources->field_4[r6].effectStringId);
- gContestResources->field_4[r6].effectStringId = CONTEST_STRING_NONE;
+ sub_80DD45C(r6, eContestantStatus[r6].effectStringId);
+ eContestantStatus[r6].effectStringId = CONTEST_STRING_NONE;
gTasks[taskId].data[0] = 24;
}
else
{
- if (gContestResources->field_4[r6].effectStringId2 != CONTEST_STRING_NONE)
+ if (eContestantStatus[r6].effectStringId2 != CONTEST_STRING_NONE)
{
for (i = 0; i < 4; i++)
{
- if (i != r6 && gContestResources->field_4[i].effectStringId != CONTEST_STRING_NONE)
+ if (i != r6 && eContestantStatus[i].effectStringId != CONTEST_STRING_NONE)
break;
}
if (i == 4)
{
- sub_80DD45C(r6, gContestResources->field_4[r6].effectStringId2);
- gContestResources->field_4[r6].effectStringId2 = CONTEST_STRING_NONE;
+ sub_80DD45C(r6, eContestantStatus[r6].effectStringId2);
+ eContestantStatus[r6].effectStringId2 = CONTEST_STRING_NONE;
gTasks[taskId].data[0] = 24;
}
else
@@ -1735,15 +1764,15 @@ static void sub_80D8B38(u8 taskId)
gTasks[taskId].data[0] = 23;
return;
case 48:
- if (gContestResources->field_4[r6].turnOrderModAction == 1)
+ if (eContestantStatus[r6].turnOrderModAction == 1)
{
sub_80DD720(5);
}
- else if (gContestResources->field_4[r6].turnOrderModAction == 2)
+ else if (eContestantStatus[r6].turnOrderModAction == 2)
{
sub_80DD720(6);
}
- else if (gContestResources->field_4[r6].turnOrderModAction == 3)
+ else if (eContestantStatus[r6].turnOrderModAction == 3)
{
sub_80DD720(7);
}
@@ -1755,7 +1784,7 @@ static void sub_80D8B38(u8 taskId)
gTasks[taskId].data[0] = 49;
return;
case 49:
- if (!gContestResources->field_0->unk1920A_4)
+ if (!eContest.unk1920A_4)
gTasks[taskId].data[0] = 47;
return;
case 47:
@@ -1763,20 +1792,20 @@ static void sub_80D8B38(u8 taskId)
gTasks[taskId].data[0] = 12;
return;
case 12:
- sub_80DC028(0, gContestResources->field_4[r6].appeal2, r6);
+ sub_80DC028(0, eContestantStatus[r6].appeal2, r6);
gTasks[taskId].data[0] = 13;
return;
case 13:
- if (!gContestResources->field_14[gContestResources->field_0->unk19215].unk2_2)
+ if (!gContestResources->field_14[eContest.unk19215].unk2_2)
gTasks[taskId].data[0] = 35;
return;
case 35:
- if (gContestResources->field_4[r6].conditionMod == 1)
+ if (eContestantStatus[r6].conditionMod == 1)
sub_80DD720(8);
gTasks[taskId].data[0] = 36;
return;
case 36:
- if (!gContestResources->field_0->unk1920A_4)
+ if (!eContest.unk1920A_4)
gTasks[taskId].data[0] = 37;
return;
case 37:
@@ -1816,8 +1845,8 @@ static void sub_80D8B38(u8 taskId)
r3 = 0;
for (r2 = 0; r2 < 4; r2++)
{
- if (r2 != r6 && gUnknown_02039F26[r2] == i
- && gContestResources->field_4[r2].effectStringId != CONTEST_STRING_NONE)
+ if (r2 != r6 && gContestantTurnOrder[r2] == i
+ && eContestantStatus[r2].effectStringId != CONTEST_STRING_NONE)
{
r3 = 1;
break;
@@ -1828,9 +1857,9 @@ static void sub_80D8B38(u8 taskId)
}
if (r3)
{
- gTasks[taskId].data[1] = gUnknown_02039F26[r2];
- sub_80DD45C(r2, gContestResources->field_4[r2].effectStringId);
- gContestResources->field_4[r2].effectStringId = CONTEST_STRING_NONE;
+ gTasks[taskId].data[1] = gContestantTurnOrder[r2];
+ sub_80DD45C(r2, eContestantStatus[r2].effectStringId);
+ eContestantStatus[r2].effectStringId = CONTEST_STRING_NONE;
gTasks[taskId].data[0] = 27;
}
else
@@ -1847,19 +1876,19 @@ static void sub_80D8B38(u8 taskId)
gTasks[taskId].data[0] = 28;
return;
case 28:
- for (i = 0; gTasks[taskId].data[1] != gUnknown_02039F26[i]; i++)
+ for (i = 0; gTasks[taskId].data[1] != gContestantTurnOrder[i]; i++)
;
- sub_80DC028(gContestResources->field_4[i].appeal2 + gContestResources->field_4[i].jam, -gContestResources->field_4[i].jam, i);
+ sub_80DC028(eContestantStatus[i].appeal2 + eContestantStatus[i].jam, -eContestantStatus[i].jam, i);
gTasks[taskId].data[0] = 29;
return;
case 29:
- for (i = 0; gTasks[taskId].data[1] != gUnknown_02039F26[i]; i++)
+ for (i = 0; gTasks[taskId].data[1] != gContestantTurnOrder[i]; i++)
;
if (!gContestResources->field_14[i].unk2_2)
gTasks[taskId].data[0] = 39;
return;
case 39:
- for (i = 0; gTasks[taskId].data[1] != gUnknown_02039F26[i]; i++)
+ for (i = 0; gTasks[taskId].data[1] != gContestantTurnOrder[i]; i++)
;
if (sub_80DB5B8(i, 1))
{
@@ -1881,17 +1910,17 @@ static void sub_80D8B38(u8 taskId)
case 30:
for (i = 0; i < 4; i++)
{
- if (gUnknown_02039F26[i] == gTasks[taskId].data[1])
+ if (gContestantTurnOrder[i] == gTasks[taskId].data[1])
break;
}
if (sub_80DB798(i))
PlaySE(SE_C_PASI);
else
PlaySE(SE_C_SYU);
- if (gContestResources->field_4[i].judgesAttentionWasRemoved)
+ if (eContestantStatus[i].judgesAttentionWasRemoved)
{
sub_80DC674(i);
- gContestResources->field_4[i].judgesAttentionWasRemoved = 0;
+ eContestantStatus[i].judgesAttentionWasRemoved = 0;
}
gTasks[taskId].data[1]++;
gTasks[taskId].data[0] = 26;
@@ -1900,10 +1929,10 @@ static void sub_80D8B38(u8 taskId)
if (gTasks[taskId].data[10]++ > 9)
{
gTasks[taskId].data[10] = 0;
- if (gContestResources->field_4[r6].numTurnsSkipped != 0
- || gContestResources->field_4[r6].turnSkipped)
+ if (eContestantStatus[r6].numTurnsSkipped != 0
+ || eContestantStatus[r6].turnSkipped)
{
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
StringCopy(gStringVar1, gContestMons[r6].nickname);
StringExpandPlaceholders(gStringVar4, gText_0827E793);
Contest_StartTextPrinter(gStringVar4, 1);
@@ -1914,30 +1943,30 @@ static void sub_80D8B38(u8 taskId)
case 52:
if (!Contest_RunTextPrinters())
{
- if (!gContestResources->field_4[r6].unk15_6)
+ if (!eContestantStatus[r6].unk15_6)
gTasks[taskId].data[0] = 17;
else
gTasks[taskId].data[0] = 14;
}
return;
case 14:
- r3 = gContestResources->field_4[r6].unk16;
- if (gContestResources->field_4[r6].unk16 != 0)
+ r3 = eContestantStatus[r6].unk16;
+ if (eContestantStatus[r6].unk16 != 0)
{
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
if (r3 == 1)
- Contest_StartTextPrinter(gText_0827E32E, 1);
+ Contest_StartTextPrinter(gText_0827E32E, TRUE);
else if (r3 == 2)
- Contest_StartTextPrinter(gText_0827E35B, 1);
+ Contest_StartTextPrinter(gText_0827E35B, TRUE);
else
- Contest_StartTextPrinter(gText_0827E38D, 1);
+ Contest_StartTextPrinter(gText_0827E38D, TRUE);
sub_80DD720(3);
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[0] = 45;
}
else
{
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
StringCopy(gStringVar1, gContestMons[r6].nickname);
StringExpandPlaceholders(gStringVar4, gText_0827E2FE);
Contest_StartTextPrinter(gStringVar4, 1);
@@ -1947,9 +1976,9 @@ static void sub_80D8B38(u8 taskId)
}
return;
case 45:
- if (!gContestResources->field_0->unk1920A_4)
+ if (!eContest.unk1920A_4)
{
- sub_80DC9B4(gContestResources->field_0->unk19215);
+ sub_80DC9B4(eContest.unk19215);
gTasks[taskId].data[0] = 15;
}
return;
@@ -1958,13 +1987,13 @@ static void sub_80D8B38(u8 taskId)
{
if (++gTasks[taskId].data[10] > 50)
{
- if (!gContestResources->field_4[r6].hasJudgesAttention)
+ if (!eContestantStatus[r6].hasJudgesAttention)
{
sub_80DC028(
- gContestResources->field_4[r6].appeal2,
- gContestResources->field_4[r6].unk17,
+ eContestantStatus[r6].appeal2,
+ eContestantStatus[r6].unk17,
r6);
- gContestResources->field_4[r6].appeal2 += gContestResources->field_4[r6].unk17;
+ eContestantStatus[r6].appeal2 += eContestantStatus[r6].unk17;
}
gTasks[taskId].data[0] = 16;
}
@@ -1978,12 +2007,12 @@ static void sub_80D8B38(u8 taskId)
}
return;
case 17:
- if (gContestResources->field_4[r6].disappointedRepeat)
+ if (eContestantStatus[r6].disappointedRepeat)
{
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
StringCopy(gStringVar1, gContestMons[r6].nickname);
- StringExpandPlaceholders(gStringVar4, gText_0827E6E3);
- Contest_StartTextPrinter(gStringVar4, 1);
+ StringExpandPlaceholders(gStringVar4, gText_RepeatedAppeal);
+ Contest_StartTextPrinter(gStringVar4, TRUE);
gTasks[taskId].data[10] = 0;
sub_80DD720(0);
gTasks[taskId].data[0] = 46;
@@ -1994,23 +2023,23 @@ static void sub_80D8B38(u8 taskId)
}
return;
case 46:
- if (!gContestResources->field_0->unk1920A_4)
+ if (!eContest.unk1920A_4)
gTasks[taskId].data[0] = 19;
return;
case 19:
if (!Contest_RunTextPrinters())
{
- sub_80DC028(gContestResources->field_4[r6].appeal2, -gContestResources->field_4[r6].unk18, r6);
- gContestResources->field_4[r6].appeal2 -= gContestResources->field_4[r6].unk18;
+ sub_80DC028(eContestantStatus[r6].appeal2, -eContestantStatus[r6].unk18, r6);
+ eContestantStatus[r6].appeal2 -= eContestantStatus[r6].unk18;
gTasks[taskId].data[0] = 18;
}
return;
case 18:
- sub_80DCD48();
+ ContestDebugDoPrint();
if (!gContestResources->field_14[r6].unk2_2)
{
gTasks[taskId].data[10] = 0;
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
gTasks[taskId].data[0] = 41;
}
return;
@@ -2022,25 +2051,25 @@ static void sub_80D8B38(u8 taskId)
else
{
r3 = gContestResources->field_10->bits_0;
- if (gContestResources->field_4[r6].overrideCategoryExcitementMod)
+ if (eContestantStatus[r6].overrideCategoryExcitementMod)
{
r3 = 1;
- StringCopy(gStringVar3, gMoveNames[gContestResources->field_4[r6].currMove]);
+ StringCopy(gStringVar3, gMoveNames[eContestantStatus[r6].currMove]);
}
else
{
- StringCopy(gStringVar3, gUnknown_08587F08[gContestMoves[gContestResources->field_4[r6].currMove].contestCategory]);
+ StringCopy(gStringVar3, gUnknown_08587F08[gContestMoves[eContestantStatus[r6].currMove].contestCategory]);
}
if (r3 > 0)
{
- if (gContestResources->field_4[r6].disappointedRepeat)
+ if (eContestantStatus[r6].disappointedRepeat)
r3 = 0;
}
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
StringCopy(gStringVar1, gContestMons[r6].nickname);
- gContestResources->field_0->applauseLevel += r3;
- if (gContestResources->field_0->applauseLevel < 0)
- gContestResources->field_0->applauseLevel = 0;
+ eContest.applauseLevel += r3;
+ if (eContest.applauseLevel < 0)
+ eContest.applauseLevel = 0;
if (r3 == 0)
{
gTasks[taskId].data[0] = 55;
@@ -2049,7 +2078,7 @@ static void sub_80D8B38(u8 taskId)
{
if (r3 < 0)
StringExpandPlaceholders(gStringVar4, gText_0827E73C);
- else if (r3 > 0 && gContestResources->field_0->applauseLevel <= 4)
+ else if (r3 > 0 && eContest.applauseLevel <= 4)
StringExpandPlaceholders(gStringVar4, gText_0827E717);
else
StringExpandPlaceholders(gStringVar4, gText_0827E76A);
@@ -2072,14 +2101,14 @@ static void sub_80D8B38(u8 taskId)
gTasks[taskId].data[10]++;
break;
case 1:
- if (!gContestResources->field_0->unk1920B_0 && !Contest_RunTextPrinters())
+ if (!eContest.unk1920B_0 && !Contest_RunTextPrinters())
{
- sub_80DDCDC(-1);
+ ShowAndUpdateApplauseMeter(-1);
gTasks[taskId].data[10]++;
}
break;
case 2:
- if (!gContestResources->field_0->unk1920A_5)
+ if (!eContest.isShowingApplauseMeter)
{
if (gTasks[taskId].data[11]++ > 29)
{
@@ -2110,22 +2139,22 @@ static void sub_80D8B38(u8 taskId)
}
break;
case 1:
- if (!gContestResources->field_0->unk1920B_0)
+ if (!eContest.unk1920B_0)
{
sub_80DDE0C();
PlaySE(SE_W227B);
- sub_80DDCDC(1);
+ ShowAndUpdateApplauseMeter(1);
gTasks[taskId].data[10]++;
}
break;
case 2:
- if (!gContestResources->field_0->unk1920A_5)
+ if (!eContest.isShowingApplauseMeter)
{
if (gTasks[taskId].data[11]++ > 29)
{
gTasks[taskId].data[11] = 0;
- sub_80DC028(gContestResources->field_4[r6].appeal2, gContestResources->field_10->unk2, r6);
- gContestResources->field_4[r6].appeal2 += gContestResources->field_10->unk2;
+ sub_80DC028(eContestantStatus[r6].appeal2, gContestResources->field_10->unk2, r6);
+ eContestantStatus[r6].appeal2 += gContestResources->field_10->unk2;
gTasks[taskId].data[10]++;
}
}
@@ -2133,7 +2162,7 @@ static void sub_80D8B38(u8 taskId)
case 3:
if (!gContestResources->field_14[r6].unk2_2)
{
- if (!gContestResources->field_0->unk1920A_7)
+ if (!eContest.unk1920A_7)
{
sub_80DDED0(1, -1);
gTasks[taskId].data[10]++;
@@ -2153,43 +2182,43 @@ static void sub_80D8B38(u8 taskId)
case 43:
if (!gContestResources->field_14[r6].unk2_2)
{
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
gTasks[taskId].data[0] = 55;
}
return;
case 57:
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
StringCopy(gStringVar3, gContestMons[gContestResources->field_10->excitementFreezer].nickname);
StringCopy(gStringVar1, gContestMons[r6].nickname);
- StringCopy(gStringVar2, gMoveNames[gContestResources->field_4[r6].currMove]);
+ StringCopy(gStringVar2, gMoveNames[eContestantStatus[r6].currMove]);
StringExpandPlaceholders(gStringVar4, gText_0827E7EA);
- Contest_StartTextPrinter(gStringVar4, 1);
+ Contest_StartTextPrinter(gStringVar4, TRUE);
gTasks[taskId].data[0] = 58;
return;
case 58:
if (!Contest_RunTextPrinters())
{
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
StringExpandPlaceholders(gStringVar4, gText_0827E817);
- Contest_StartTextPrinter(gStringVar4, 1);
+ Contest_StartTextPrinter(gStringVar4, TRUE);
gTasks[taskId].data[0] = 59;
}
return;
case 59:
if (!Contest_RunTextPrinters())
{
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
gTasks[taskId].data[0] = 55;
}
return;
case 33:
- if (gContestResources->field_4[r6].hasJudgesAttention)
- gContestResources->field_4[r6].hasJudgesAttention = 0;
+ if (eContestantStatus[r6].hasJudgesAttention)
+ eContestantStatus[r6].hasJudgesAttention = 0;
sub_80DC9B4(r6);
StringCopy(gStringVar1, gContestMons[r6].nickname);
- StringCopy(gStringVar2, gMoveNames[gContestResources->field_4[r6].currMove]);
+ StringCopy(gStringVar2, gMoveNames[eContestantStatus[r6].currMove]);
StringExpandPlaceholders(gStringVar4, gText_0827E58A);
- Contest_StartTextPrinter(gStringVar4, 1);
+ Contest_StartTextPrinter(gStringVar4, TRUE);
gTasks[taskId].data[0] = 34;
return;
case 34:
@@ -2197,16 +2226,16 @@ static void sub_80D8B38(u8 taskId)
gTasks[taskId].data[0] = 55;
return;
case 55:
- sub_80DDBE8();
+ TryMoveApplauseMeterOffscreen();
gTasks[taskId].data[0] = 56;
return;
case 56:
- if (!gContestResources->field_0->unk1920A_6)
+ if (!eContest.applauseMeterIsMoving)
{
- if (gContestResources->field_0->applauseLevel > 4)
+ if (eContest.applauseLevel > 4)
{
- gContestResources->field_0->applauseLevel = 0;
- sub_80DD940();
+ eContest.applauseLevel = 0;
+ UpdateApplauseMeter();
}
gTasks[taskId].data[0] = 10;
}
@@ -2230,10 +2259,10 @@ static void sub_80D8B38(u8 taskId)
gTasks[taskId].data[0] = 21;
return;
case 31:
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
StringCopy(gStringVar1, gContestMons[r6].nickname);
StringExpandPlaceholders(gStringVar4, gText_0827D56F);
- Contest_StartTextPrinter(gStringVar4, 1);
+ Contest_StartTextPrinter(gStringVar4, TRUE);
gTasks[taskId].data[0] = 32;
return;
case 32:
@@ -2248,7 +2277,7 @@ static void sub_80D8B38(u8 taskId)
}
return;
case 22:
- if (++gContestResources->field_0->unk19214 == 4)
+ if (++eContest.unk19214 == 4)
{
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
@@ -2265,7 +2294,7 @@ static void sub_80D8B38(u8 taskId)
static void sub_80DA110(u8 taskId)
{
- sContest.unk1920B_2 = 0;
+ eContest.unk1920B_2 = 0;
DestroyTask(taskId);
}
@@ -2300,30 +2329,30 @@ static void sub_80DA198(u8 taskId)
switch (gTasks[taskId].data[0])
{
case 0:
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
u8 taskId2;
- sContest.unk1920B_2 = 1;
+ eContest.unk1920B_2 = 1;
if (sub_80DA8A4())
{
- sub_80DB944();
+ RankContestants();
sub_80DBA18();
}
taskId2 = CreateTask(sub_80FCC88, 0);
SetTaskFuncWithFollowupFunc(taskId2, sub_80FCC88, sub_80DA110);
- sub_80DBF68();
+ ContestPrintLinkStandby();
gTasks[taskId].data[0] = 1;
}
else
{
- sub_80DB944();
+ RankContestants();
sub_80DBA18();
gTasks[taskId].data[0] = 2;
}
break;
case 1:
- if (!sContest.unk1920B_2)
+ if (!eContest.unk1920B_2)
gTasks[taskId].data[0] = 2;
break;
case 2:
@@ -2354,7 +2383,7 @@ static void sub_80DA28C(u8 taskId)
}
break;
case 1:
- if (!sContest.unk1920B_1)
+ if (!eContest.unk1920B_1)
{
if (++gTasks[taskId].data[1] > 20)
{
@@ -2380,7 +2409,7 @@ static void sub_80DA31C(u8 taskId)
static void sub_80DA348(u8 taskId)
{
- DmaCopy32Defvars(3, shared18000.unk18204, gPlttBufferUnfaded, 0x400);
+ DmaCopy32Defvars(3, eUnknownHeap1A004.unk18204, gPlttBufferUnfaded, PLTT_BUFFER_SIZE * 2);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 2;
gTasks[taskId].func = sub_80DA38C;
@@ -2400,12 +2429,12 @@ static void sub_80DA3CC(u8 taskId)
{
if (gTasks[taskId].data[0] == 0)
{
- u8 r4 = sContestantStatus[gContestPlayerMonIndex].attentionLevel;
+ u8 r4 = eContestantStatus[gContestPlayerMonIndex].attentionLevel;
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
StringCopy(gStringVar1, gContestMons[gContestPlayerMonIndex].nickname);
StringExpandPlaceholders(gStringVar4, gUnknown_08587D90[r4]);
- Contest_StartTextPrinter(gStringVar4, 1);
+ Contest_StartTextPrinter(gStringVar4, TRUE);
gTasks[taskId].data[0]++;
}
else
@@ -2414,7 +2443,7 @@ static void sub_80DA3CC(u8 taskId)
{
gTasks[taskId].data[0] = 0;
gTasks[taskId].func = sub_80DA464;
- sub_80DCD48();
+ ContestDebugDoPrint();
}
}
}
@@ -2458,21 +2487,21 @@ static void sub_80DA51C(u8 taskId)
((vBgCnt *)&sp2)->priority = 0;
SetGpuReg(REG_OFFSET_BG0CNT, sp0);
SetGpuReg(REG_OFFSET_BG2CNT, sp2);
- sContest.turnNumber++;
- if (sContest.turnNumber == 5)
+ eContest.turnNumber++;
+ if (eContest.turnNumber == 5)
{
gTasks[taskId].func = sub_80DA5E8;
}
else
{
- sub_80DDB0C();
+ StartMoveApplauseMeterOnscreen();
gTasks[taskId].func = sub_80DA5B4;
}
}
static void sub_80DA5B4(u8 taskId)
{
- if (!sContest.unk1920A_6)
+ if (!eContest.applauseMeterIsMoving)
gTasks[taskId].func = sub_80D833C;
}
@@ -2483,20 +2512,20 @@ static void sub_80DA5E8(u8 taskId)
gBattle_BG0_Y = 0;
gBattle_BG2_Y = 0;
for (i = 0; i < 4; i++)
- gUnknown_02039F10[i] = sContestantStatus[i].unk4;
+ gUnknown_02039F10[i] = eContestantStatus[i].pointTotal;
sub_80DBD18();
- sub_80DB89C();
- if (!(gIsLinkContest & 1))
- BravoTrainerPokemonProfile_BeforeInterview1(sContestantStatus[gContestPlayerMonIndex].prevMove);
+ ContestClearGeneralTextWindow();
+ if (!(gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK))
+ BravoTrainerPokemonProfile_BeforeInterview1(eContestantStatus[gContestPlayerMonIndex].prevMove);
else
{
sub_80DF250();
sub_80DF4F8();
- sub_80DF750();
+ ContestDebugPrintBitStrings();
}
gContestRngValue = gRngValue;
StringExpandPlaceholders(gStringVar4, gText_0827D597);
- Contest_StartTextPrinter(gStringVar4, 1);
+ Contest_StartTextPrinter(gStringVar4, TRUE);
gTasks[taskId].data[2] = 0;
gTasks[taskId].func = sub_80DA6B4;
}
@@ -2519,7 +2548,7 @@ static void sub_80DA700(u8 taskId)
gBattle_BG1_Y -= 7;
if ((s16)gBattle_BG1_Y < 0)
gBattle_BG1_Y = 0;
- if (gBattle_BG1_Y == 0) // Why cast?
+ if (gBattle_BG1_Y == 0)
{
gTasks[taskId].func = sub_80DA740;
gTasks[taskId].data[0] = 0;
@@ -2531,13 +2560,13 @@ static void sub_80DA740(u8 taskId)
if (gTasks[taskId].data[0]++ >= 50)
{
gTasks[taskId].data[0] = 0;
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
gTasks[taskId].func = sub_80DA7A0;
}
else
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
gTasks[taskId].func = sub_80DA830;
}
}
@@ -2549,15 +2578,15 @@ static void sub_80DA7A0(u8 taskId)
SetTaskFuncWithFollowupFunc(taskId2, sub_80FCACC, sub_80DA7EC);
gTasks[taskId].func = TaskDummy1;
- sub_80DBF68();
+ ContestPrintLinkStandby();
sub_80DC490(FALSE);
}
static void sub_80DA7EC(u8 taskId)
{
DestroyTask(taskId);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- gTasks[sContest.mainTaskId].func = sub_80DA830;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gTasks[eContest.mainTaskId].func = sub_80DA830;
}
static void sub_80DA830(u8 taskId)
@@ -2567,7 +2596,7 @@ static void sub_80DA830(u8 taskId)
DestroyTask(taskId);
gFieldCallback = sub_80DA874;
FreeAllWindowBuffers();
- sub_80D7A5C();
+ FreeContestResources();
FreeMonSpritesGfx();
SetMainCallback2(CB2_ReturnToField);
}
@@ -2579,9 +2608,9 @@ static void sub_80DA874(void)
EnableBothScriptContexts();
}
-static void sub_80DA884(void)
+static void TryPutPlayerLast(void)
{
- if (!(gIsLinkContest & 1))
+ if (!(gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK))
gContestPlayerMonIndex = 3;
}
@@ -2603,7 +2632,7 @@ void sub_80DA8C8(u8 partyIndex)
s16 tough;
StringCopy(name, gSaveBlock2Ptr->playerName);
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
sub_80DF9D4(name);
}
@@ -2612,12 +2641,12 @@ void sub_80DA8C8(u8 partyIndex)
gContestMons[gContestPlayerMonIndex].trainerGfxId = EVENT_OBJ_GFX_LINK_BRENDAN;
else
gContestMons[gContestPlayerMonIndex].trainerGfxId = EVENT_OBJ_GFX_LINK_MAY;
- gContestMons[gContestPlayerMonIndex].flags = 0;
+ gContestMons[gContestPlayerMonIndex].aiChecks = 0;
gContestMons[gContestPlayerMonIndex].unk2C[0] = 0;
gContestMons[gContestPlayerMonIndex].species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES);
GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, name);
StringGetEnd10(name);
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
sub_80DF9E0(name, GetMonData(&gPlayerParty[partyIndex], MON_DATA_LANGUAGE));
}
@@ -2677,9 +2706,9 @@ void sub_80DAB8C(u8 contestType, u8 rank)
bool8 r7 = FALSE;
const u8 * r3;
- sub_80DA884();
+ TryPutPlayerLast();
- if (FlagGet(FLAG_SYS_GAME_CLEAR) && !(gIsLinkContest & 1))
+ if (FlagGet(FLAG_SYS_GAME_CLEAR) && !(gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK))
r7 = TRUE;
// Find all suitable opponents
@@ -2815,55 +2844,55 @@ u8 sub_80DAE0C(struct Pokemon *pkmn)
return retVal;
}
-static void sub_80DAEA4(void)
+static void DrawContestantWindowText(void)
{
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- FillWindowPixelBuffer(gUnknown_02039F26[i], PIXEL_FILL(0));
- sub_80DAF04(i);
- sub_80DAF88(i);
+ FillWindowPixelBuffer(gContestantTurnOrder[i], PIXEL_FILL(0));
+ PrintContestantTrainerName(i);
+ PrintContestantMonName(i);
}
}
-static u8 *sub_80DAED4(const u8 *src, u8 color)
+static u8 *Contest_CopyStringWithColor(const u8 *string, u8 color)
{
u8 * ptr = StringCopy(gDisplayedStringBattle, gText_ColorTransparent);
- ptr[-1] = color;
- ptr = StringCopy(ptr, src);
+ ptr[-1] = color; // Overwrites the "{COLOR TRANSPARENT}" part of the string.
+ ptr = StringCopy(ptr, string);
return ptr;
}
-static void sub_80DAF04(u8 a0)
+static void PrintContestantTrainerName(u8 contestant)
{
- sub_80DAF1C(a0, a0 + 10);
+ PrintContestantTrainerNameWithColor(contestant, contestant + CONTESTANT_TEXT_COLOR_START);
}
-static void sub_80DAF1C(u8 a0, u8 a1)
+static void PrintContestantTrainerNameWithColor(u8 contestant, u8 color)
{
u8 buffer[32];
s32 offset;
StringCopy(buffer, gText_Slash);
- StringAppend(buffer, gContestMons[a0].trainerName);
- sub_80DAED4(buffer, a1);
+ StringAppend(buffer, gContestMons[contestant].trainerName);
+ Contest_CopyStringWithColor(buffer, color);
offset = GetStringRightAlignXOffset(7, gDisplayedStringBattle, 0x60);
if (offset > 55)
offset = 55;
- Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[a0], gDisplayedStringBattle, offset, 1, 7);
+ Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[contestant], gDisplayedStringBattle, offset, 1, 7);
}
-static void sub_80DAF88(u8 a0)
+static void PrintContestantMonName(u8 contestant)
{
- sub_80DAFA0(a0, a0 + 10);
+ PrintContestantMonNameWithColor(contestant, contestant + CONTESTANT_TEXT_COLOR_START);
}
-static void sub_80DAFA0(u8 a0, u8 a1)
+static void PrintContestantMonNameWithColor(u8 contestant, u8 color)
{
- sub_80DAED4(gContestMons[a0].nickname, a1);
- Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[a0], gDisplayedStringBattle, 5, 1, 7);
+ Contest_CopyStringWithColor(gContestMons[contestant].nickname, color);
+ Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[contestant], gDisplayedStringBattle, 5, 1, 7);
}
static u16 sub_80DAFE0(u8 who, u8 contestCategory)
@@ -2973,10 +3002,13 @@ bool8 IsSpeciesNotUnown(u16 species)
return TRUE;
}
-static void sub_80DB2BC(void)
+// The contestant info windows and general-purpose text box are drawn on one half, while
+// the moves and move description windows are drawn on another screen. Only the first 32 * 20
+// tiles are actually drawn on screen.
+static void SwapMoveDescAndContestTilemaps(void)
{
- CpuCopy16(gContestResources->field_24[0], gContestResources->field_24[0] + 0x500, 0x280);
- CpuCopy16(gContestResources->field_24[2], gContestResources->field_24[2] + 0x500, 0x280);
+ CpuCopy16(gContestResources->contestBgTilemaps[0], gContestResources->contestBgTilemaps[0] + 0x500, 32 * 20);
+ CpuCopy16(gContestResources->contestBgTilemaps[2], gContestResources->contestBgTilemaps[2] + 0x500, 32 * 20);
}
static u16 sub_80DB2EC(u16 a0, u8 a1)
@@ -3002,12 +3034,13 @@ static u16 sub_80DB2EC(u16 a0, u8 a1)
return var;
}
-static void prints_contest_move_description(u16 a)
+static void PrintContestMoveDescription(u16 a)
{
u8 category;
u16 categoryTile;
u8 numHearts;
+ // The contest category icon is implemented as a 5x2 group of tiles.
category = gContestMoves[a].contestCategory;
if (category == CONTEST_CATEGORY_COOL)
categoryTile = 0x4040;
@@ -3029,7 +3062,9 @@ static void prints_contest_move_description(u16 a)
numHearts = gContestEffects[gContestMoves[a].effect].appeal / 10;
if (numHearts > 8)
numHearts = 8;
+ // Filled-in hearts
ContestBG_FillBoxWithTile(0, 0x5035, 0x15, 0x1f, 0x08, 0x01, 0x11);
+ // Empty hearts
ContestBG_FillBoxWithTile(0, 0x5012, 0x15, 0x1f, numHearts, 0x01, 0x11);
if (gContestEffects[gContestMoves[a].effect].jam == 0xFF)
@@ -3038,17 +3073,19 @@ static void prints_contest_move_description(u16 a)
numHearts = gContestEffects[gContestMoves[a].effect].jam / 10;
if (numHearts > 8)
numHearts = 8;
+ // Filled-in hearts
ContestBG_FillBoxWithTile(0, 0x5036, 0x15, 0x20, 0x08, 0x01, 0x11);
+ // Empty hearts
ContestBG_FillBoxWithTile(0, 0x5014, 0x15, 0x20, numHearts, 0x01, 0x11);
- FillWindowPixelBuffer(10, PIXEL_FILL(0));
- Contest_PrintTextToBg0WindowStd(10, gContestEffectDescriptionPointers[gContestMoves[a].effect]);
- Contest_PrintTextToBg0WindowStd(9, gText_Slash);
+ FillWindowPixelBuffer(CONTEST_WINDOW_MOVE_DESCRIPTION, PIXEL_FILL(0));
+ Contest_PrintTextToBg0WindowStd(CONTEST_WINDOW_MOVE_DESCRIPTION, gContestEffectDescriptionPointers[gContestMoves[a].effect]);
+ Contest_PrintTextToBg0WindowStd(CONTEST_WINDOW_SLASH, gText_Slash);
}
static void sub_80DB4E0(u16 move, u8 b)
{
- u8 r7 = gUnknown_02039F26[b] * 5 + 2;
+ u8 r7 = gContestantTurnOrder[b] * 5 + 2;
if (!Contest_IsMonsTurnDisabled(b) && move != MOVE_NONE)
{
@@ -3068,7 +3105,7 @@ static void sub_80DB584(void)
s32 i;
for (i = 0; i < 4; i++)
- sub_80DB4E0(gContestResources->field_4[i].currMove, i);
+ sub_80DB4E0(eContestantStatus[i].currMove, i);
}
static u16 sub_80DB5B0(void)
@@ -3081,17 +3118,17 @@ static bool8 sub_80DB5B8(u8 contestantIdx, bool8 resetMod)
u8 r6;
s32 r4;
- if (sContestantStatus[contestantIdx].conditionMod == 0)
+ if (eContestantStatus[contestantIdx].conditionMod == 0)
return FALSE;
- r6 = gUnknown_02039F26[contestantIdx] * 5 + 2;
- r4 = sContestantStatus[contestantIdx].condition / 10;
- if (sContestantStatus[contestantIdx].conditionMod == 1)
+ r6 = gContestantTurnOrder[contestantIdx] * 5 + 2;
+ r4 = eContestantStatus[contestantIdx].condition / 10;
+ if (eContestantStatus[contestantIdx].conditionMod == 1)
{
ContestBG_FillBoxWithTile(0, sub_80DB5B0(), 19, r6, 1, r4, 17);
if (resetMod)
{
PlaySE(SE_EXPMAX);
- sContestantStatus[contestantIdx].conditionMod = 0;
+ eContestantStatus[contestantIdx].conditionMod = 0;
}
}
else
@@ -3100,7 +3137,7 @@ static bool8 sub_80DB5B8(u8 contestantIdx, bool8 resetMod)
if (resetMod)
{
PlaySE(SE_FU_ZAKU2);
- sContestantStatus[contestantIdx].conditionMod = 0;
+ eContestantStatus[contestantIdx].conditionMod = 0;
}
}
return TRUE;
@@ -3111,12 +3148,12 @@ static void sub_80DB69C(void)
s32 i;
s32 r6;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- u8 r4 = gUnknown_02039F26[i] * 5 + 2;
+ u8 r4 = gContestantTurnOrder[i] * 5 + 2;
u16 r5 = sub_80DB5B0();
- r6 = sContestantStatus[i].condition / 10;
+ r6 = eContestantStatus[i].condition / 10;
ContestBG_FillBoxWithTile(0, r5, 19, r4, 1, r6, 17);
ContestBG_FillBoxWithTile(0, 0, 19, r4 + r6, 1, 3 - r6, 17);
}
@@ -3152,13 +3189,13 @@ static bool8 sub_80DB798(u8 a)
{
bool8 r9 = TRUE;
u16 r8 = 0;
- u8 r7 = gUnknown_02039F26[a] * 5 + 2;
+ u8 r7 = gContestantTurnOrder[a] * 5 + 2;
- if (sContestantStatus[a].resistant != 0 || sContestantStatus[a].immune != 0 || sContestantStatus[a].jamSafetyCount != 0 || sContestantStatus[a].jamReduction != 0)
+ if (eContestantStatus[a].resistant != 0 || eContestantStatus[a].immune != 0 || eContestantStatus[a].jamSafetyCount != 0 || eContestantStatus[a].jamReduction != 0)
r8 = sub_80DB748(0);
- else if (sContestantStatus[a].nervous)
+ else if (eContestantStatus[a].nervous)
r8 = sub_80DB748(1);
- else if (sContestantStatus[a].numTurnsSkipped != 0 || sContestantStatus[a].noMoreTurns)
+ else if (eContestantStatus[a].numTurnsSkipped != 0 || eContestantStatus[a].noMoreTurns)
r8 = sub_80DB748(2);
else
r9 = FALSE;
@@ -3182,50 +3219,52 @@ static void sub_80DB884(void)
sub_80DB798(i);
}
-static void sub_80DB89C(void)
+static void ContestClearGeneralTextWindow(void)
{
- FillWindowPixelBuffer(4, PIXEL_FILL(0));
- CopyWindowToVram(4, 2);
+ FillWindowPixelBuffer(CONTEST_WINDOW_GENERAL_TEXT, PIXEL_FILL(0));
+ CopyWindowToVram(CONTEST_WINDOW_GENERAL_TEXT, 2);
Contest_SetBgCopyFlags(0);
}
-static u16 GetChosenMove(u8 a)
+static u16 GetChosenMove(u8 contestant)
{
- if (Contest_IsMonsTurnDisabled(a))
+ if (Contest_IsMonsTurnDisabled(contestant))
return 0;
- if (a == gContestPlayerMonIndex)
+ if (contestant == gContestPlayerMonIndex)
{
- return gContestMons[a].moves[sContest.playerMoveChoice];
+ return gContestMons[contestant].moves[eContest.playerMoveChoice];
}
else
{
u8 moveChoice;
- ContestAI_ResetAI(a);
+ ContestAI_ResetAI(contestant);
moveChoice = ContestAI_GetActionToUse();
- return gContestMons[a].moves[moveChoice];
+ return gContestMons[contestant].moves[moveChoice];
}
}
-static void sub_80DB918(void)
+static void GetAllChosenMoves(void)
{
s32 i;
- for (i = 0; i < 4; i++)
- sContestantStatus[i].currMove = GetChosenMove(i);
+ for (i = 0; i < CONTESTANT_COUNT; i++)
+ eContestantStatus[i].currMove = GetChosenMove(i);
}
-static void sub_80DB944(void)
+static void RankContestants(void)
{
s32 i;
s32 j;
- s16 arr[4];
+ s16 arr[CONTESTANT_COUNT];
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- sContestantStatus[i].unk4 += sContestantStatus[i].appeal2;
- arr[i] = sContestantStatus[i].unk4;
+ eContestantStatus[i].pointTotal += eContestantStatus[i].appeal2;
+ arr[i] = eContestantStatus[i].pointTotal;
}
+
+ // Sort the point totals using bubble-sort.
for (i = 0; i < 3; i++)
{
for (j = 3; j > i; j--)
@@ -3239,49 +3278,59 @@ static void sub_80DB944(void)
}
}
}
- for (i = 0; i < 4; i++)
+
+ // For each contestant, find the best rank with their point total.
+ // Normally, each point total is different, and this will output the
+ // rankings as expected. However, if two pokemon are tied, then they
+ // both get the best rank for that point total.
+ //
+ // For example if the point totals are [100, 80, 80, 50], the ranks will
+ // be [1, 2, 2, 4]. The pokemon with a point total of 80 stop looking
+ // when they see the first 80 in the array, so they both share the '2'
+ // rank.
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- for (j = 0; j < 4; j++)
+ for (j = 0; j < CONTESTANT_COUNT; j++)
{
- if (sContestantStatus[i].unk4 == arr[j])
+ if (eContestantStatus[i].pointTotal == arr[j])
{
- sContestantStatus[i].unkB_0 = j;
+ eContestantStatus[i].ranking = j;
break;
}
}
}
- sub_80DCE58(1);
- sub_80DD590();
+ SortContestants(TRUE);
+ ApplyNextTurnOrder();
}
static void sub_80DBA18(void)
{
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
u8 attentionLevel;
- if (sContestantStatus[i].currMove == MOVE_NONE)
+ if (eContestantStatus[i].currMove == MOVE_NONE)
attentionLevel = 5;
- else if (sContestantStatus[i].appeal2 <= 0)
+ else if (eContestantStatus[i].appeal2 <= 0)
attentionLevel = 0;
- else if (sContestantStatus[i].appeal2 < 30)
+ else if (eContestantStatus[i].appeal2 < 30)
attentionLevel = 1;
- else if (sContestantStatus[i].appeal2 < 60)
+ else if (eContestantStatus[i].appeal2 < 60)
attentionLevel = 2;
- else if (sContestantStatus[i].appeal2 < 80)
+ else if (eContestantStatus[i].appeal2 < 80)
attentionLevel = 3;
else
attentionLevel = 4;
- sContestantStatus[i].attentionLevel = attentionLevel;
+ eContestantStatus[i].attentionLevel = attentionLevel;
}
}
-static bool8 sub_80DBA68(u8 a)
+static bool8 ContestantCanUseTurn(u8 contestant)
{
- if (sContestantStatus[a].numTurnsSkipped != 0 || sContestantStatus[a].noMoreTurns)
+ if (eContestantStatus[contestant].numTurnsSkipped != 0 || eContestantStatus[contestant].noMoreTurns)
return FALSE;
else
return TRUE;
@@ -3291,92 +3340,92 @@ static void sub_80DBAA0(void)
{
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- sContestantStatus[i].appeal2 = 0;
- sContestantStatus[i].appeal1 = 0;
- sContestantStatus[i].jamSafetyCount = 0;
- if (sContestantStatus[i].numTurnsSkipped > 0)
- sContestantStatus[i].numTurnsSkipped--;
- sContestantStatus[i].jam = 0;
- sContestantStatus[i].resistant = 0;
- sContestantStatus[i].jamReduction = 0;
- sContestantStatus[i].immune = 0;
- sContestantStatus[i].moreEasilyStartled = 0;
- sContestantStatus[i].usedRepeatableMove = 0;
- sContestantStatus[i].nervous = 0;
- sContestantStatus[i].effectStringId = CONTEST_STRING_NONE;
- sContestantStatus[i].effectStringId2 = CONTEST_STRING_NONE;
- sContestantStatus[i].conditionMod = 0;
- sContestantStatus[i].unk15_2 = sContestantStatus[i].disappointedRepeat;
- sContestantStatus[i].disappointedRepeat = FALSE;
- sContestantStatus[i].turnOrderModAction = 0;
- sContestantStatus[i].appealTripleCondition = 0;
- if (sContestantStatus[i].turnSkipped)
- {
- sContestantStatus[i].numTurnsSkipped = 1;
- sContestantStatus[i].turnSkipped = 0;
- }
- if (sContestantStatus[i].exploded)
- {
- sContestantStatus[i].noMoreTurns = 1;
- sContestantStatus[i].exploded = 0;
- }
- sContestantStatus[i].overrideCategoryExcitementMod = 0;
+ eContestantStatus[i].appeal2 = 0;
+ eContestantStatus[i].appeal1 = 0;
+ eContestantStatus[i].jamSafetyCount = 0;
+ if (eContestantStatus[i].numTurnsSkipped > 0)
+ eContestantStatus[i].numTurnsSkipped--;
+ eContestantStatus[i].jam = 0;
+ eContestantStatus[i].resistant = 0;
+ eContestantStatus[i].jamReduction = 0;
+ eContestantStatus[i].immune = 0;
+ eContestantStatus[i].moreEasilyStartled = 0;
+ eContestantStatus[i].usedRepeatableMove = 0;
+ eContestantStatus[i].nervous = FALSE;
+ eContestantStatus[i].effectStringId = CONTEST_STRING_NONE;
+ eContestantStatus[i].effectStringId2 = CONTEST_STRING_NONE;
+ eContestantStatus[i].conditionMod = 0;
+ eContestantStatus[i].unk15_2 = eContestantStatus[i].disappointedRepeat;
+ eContestantStatus[i].disappointedRepeat = FALSE;
+ eContestantStatus[i].turnOrderModAction = 0;
+ eContestantStatus[i].appealTripleCondition = 0;
+ if (eContestantStatus[i].turnSkipped)
+ {
+ eContestantStatus[i].numTurnsSkipped = 1;
+ eContestantStatus[i].turnSkipped = 0;
+ }
+ if (eContestantStatus[i].exploded)
+ {
+ eContestantStatus[i].noMoreTurns = 1;
+ eContestantStatus[i].exploded = 0;
+ }
+ eContestantStatus[i].overrideCategoryExcitementMod = 0;
}
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- sContestantStatus[i].prevMove = sContestantStatus[i].currMove;
- sContest.unk19220[sContest.turnNumber][i] = sContestantStatus[i].currMove;
- sContest.unk19248[sContest.turnNumber][i] = Contest_GetMoveExcitement(sContestantStatus[i].currMove);
- sContestantStatus[i].currMove = MOVE_NONE;
+ eContestantStatus[i].prevMove = eContestantStatus[i].currMove;
+ eContest.moveHistory[eContest.turnNumber][i] = eContestantStatus[i].currMove;
+ eContest.excitementHistory[eContest.turnNumber][i] = Contest_GetMoveExcitement(eContestantStatus[i].currMove);
+ eContestantStatus[i].currMove = MOVE_NONE;
}
- shared19328.excitementFrozen = 0;
+ eContestResources10.excitementFrozen = 0;
}
bool8 Contest_IsMonsTurnDisabled(u8 a)
{
- if (sContestantStatus[a].numTurnsSkipped != 0 || sContestantStatus[a].noMoreTurns)
+ if (eContestantStatus[a].numTurnsSkipped != 0 || eContestantStatus[a].noMoreTurns)
return TRUE;
else
return FALSE;
}
-static void sub_80DBCE0(u8 a)
+static void sub_80DBCE0(u8 contestant)
{
- gUnknown_02039F18[a] = sub_80DBD34(a);
- gUnknown_02039F08[a] = gContestMonConditions[a] + gUnknown_02039F18[a];
+ gUnknown_02039F18[contestant] = sub_80DBD34(contestant);
+ gUnknown_02039F08[contestant] = gContestMonConditions[contestant] + gUnknown_02039F18[contestant];
}
static void sub_80DBD18(void)
{
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
sub_80DBCE0(i);
DetermineFinalStandings();
}
-static s16 sub_80DBD34(u8 a)
+static s16 sub_80DBD34(u8 contestant)
{
- return gUnknown_02039F10[a] * 2;
+ return gUnknown_02039F10[contestant] * 2;
}
static void DetermineFinalStandings(void)
{
- u16 sp0[4] = {0};
- struct UnknownContestStruct6 sp8[4];
+ u16 randomOrdering[CONTESTANT_COUNT] = {0};
+ struct UnknownContestStruct6 sp8[CONTESTANT_COUNT];
s32 i;
s32 j;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
s32 r2;
- sp0[i] = Random();
+ randomOrdering[i] = Random();
for (r2 = 0; r2 < i; r2++)
{
- if (sp0[i] == sp0[r2])
+ if (randomOrdering[i] == randomOrdering[r2])
{
i--;
break;
@@ -3384,11 +3433,11 @@ static void DetermineFinalStandings(void)
}
}
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
sp8[i].unk0 = gUnknown_02039F08[i];
sp8[i].unk4 = gContestMonConditions[i];
- sp8[i].unk8 = sp0[i];
+ sp8[i].unk8 = randomOrdering[i];
sp8[i].unkC = i;
}
@@ -3418,13 +3467,13 @@ static void DetermineFinalStandings(void)
}
}
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
gContestFinalStandings[sp8[i].unkC] = i;
}
-void sub_80DBED4(void)
+void SaveLinkContestResults(void)
{
- if ((gIsLinkContest & 1))
+ if ((gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK))
{
gSaveBlock2Ptr->contestLinkResults[gSpecialVar_ContestCategory][gContestFinalStandings[gContestPlayerMonIndex]] =
((gSaveBlock2Ptr->contestLinkResults[gSpecialVar_ContestCategory][gContestFinalStandings[gContestPlayerMonIndex]] + 1) > 9999) ? 9999 :
@@ -3452,19 +3501,19 @@ static bool8 sub_80DBF30(s32 a, s32 b, struct UnknownContestStruct6 *c)
return retVal;
}
-static void sub_80DBF68(void)
+static void ContestPrintLinkStandby(void)
{
gBattle_BG0_Y = 0;
gBattle_BG2_Y = 0;
- sub_80DB89C();
- Contest_StartTextPrinter((u8*) &gUnknown_0827E8DA, 0);
+ ContestClearGeneralTextWindow();
+ Contest_StartTextPrinter(gText_LinkStandby4, 0);
}
-static void sub_80DBF90(void)
+static void FillContestantWindowBgs(void)
{
int i;
- for(i = 0; i < 4; i++)
+ for(i = 0; i < CONTESTANT_COUNT; i++)
{
ContestBG_FillBoxWithTile(0, 0, 0x16, 2 + i * 5, 8, 2, 0x11);
}
@@ -3592,7 +3641,7 @@ static void sub_80DC0F4(u8 taskId)
r11 = 1;
r5-= 8;
}
- ContestBG_FillBoxWithTile(0, r6, r5 + 22, gUnknown_02039F26[r7] * 5 + 2 + r11, 1, 1, 17);
+ ContestBG_FillBoxWithTile(0, r6, r5 + 22, gContestantTurnOrder[r7] * 5 + 2 + r11, 1, 1, 17);
if (r1 > 0)
{
PlaySE(SE_C_GAJI);
@@ -3614,28 +3663,28 @@ static void sub_80DC2BC(void)
s32 i;
LoadSpriteSheet(&gUnknown_08587A74);
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- u8 y = gUnknown_08587A6C[gUnknown_02039F26[i]];
+ u8 y = gUnknown_08587A6C[gContestantTurnOrder[i]];
gContestResources->field_14[i].unk0 = CreateSprite(&gSpriteTemplate_8587AD0, 180, y, 1);
}
}
-static void sub_80DC308(u8 a)
+static void sub_80DC308(u8 contestant)
{
u8 spriteId;
s16 r5;
- gContestResources->field_14[a].unk2_0 = 1;
- spriteId = gContestResources->field_14[a].unk0;
- r5 = sContestantStatus[a].unk4 / 10 * 2;
+ gContestResources->field_14[contestant].unk2_0 = 1;
+ spriteId = gContestResources->field_14[contestant].unk0;
+ r5 = eContestantStatus[contestant].pointTotal / 10 * 2;
if (r5 > 56)
r5 = 56;
else if (r5 < 0)
r5 = 0;
gSprites[spriteId].invisible = FALSE;
- gSprites[spriteId].data[0] = a;
+ gSprites[spriteId].data[0] = contestant;
gSprites[spriteId].data[1] = r5;
if (gSprites[spriteId].data[1] > gSprites[spriteId].pos2.x)
gSprites[spriteId].data[2] = 1;
@@ -3648,7 +3697,7 @@ static void sub_80DC3AC(void)
{
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
sub_80DC308(i);
}
@@ -3656,12 +3705,12 @@ static bool8 sub_80DC3C4(void)
{
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
if (gContestResources->field_14[i].unk2_0)
break;
}
- if (i == 4)
+ if (i == CONTESTANT_COUNT)
return TRUE;
else
return FALSE;
@@ -3684,17 +3733,17 @@ static void sub_80DC44C(void)
{
s32 i;
- for (i = 0; i < 4; i++)
- gSprites[gContestResources->field_14[i].unk0].pos1.y = gUnknown_08587A6C[gUnknown_02039F26[i]];
+ for (i = 0; i < CONTESTANT_COUNT; i++)
+ gSprites[gContestResources->field_14[i].unk0].pos1.y = gUnknown_08587A6C[gContestantTurnOrder[i]];
}
static void sub_80DC490(bool8 a)
{
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- if (gUnknown_02039F26[i] > 1)
+ if (gContestantTurnOrder[i] > 1)
{
if (!a)
gSprites[gContestResources->field_14[i].unk0].pos1.x = 180;
@@ -3709,12 +3758,12 @@ static void sub_80DC4F0(void)
s32 i;
LoadSpritePalette(&gUnknown_08587B08);
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
LoadCompressedSpriteSheet(&gUnknown_08587AE8[i]);
gContestResources->field_14[i].unk1 = CreateSprite(&gSpriteTemplate_8587B18[i],
204,
- gUnknown_08587A70[gUnknown_02039F26[i]],
+ gUnknown_08587A70[gContestantTurnOrder[i]],
0);
SetSubspriteTables(&gSprites[gContestResources->field_14[i].unk1], gSubspriteTables_8587B80);
gSprites[gContestResources->field_14[i].unk1].invisible = TRUE;
@@ -3725,11 +3774,11 @@ static void CreateApplauseMeterSprite(void)
{
u8 spriteId;
- LoadCompressedSpriteSheet(&gUnknown_08587BB0);
- LoadSpritePalette(&gUnknown_08587BB8);
- spriteId = CreateSprite(&gSpriteTemplate_8587BC8, 30, 44, 1);
+ LoadCompressedSpriteSheet(&sApplauseMeterSpriteSheet);
+ LoadSpritePalette(&sApplauseMeterPalette);
+ spriteId = CreateSprite(&sApplauseMeterSpriteTemplate, 30, 44, 1);
gSprites[spriteId].invisible = TRUE;
- sContest.applauseMeterSpriteId = spriteId;
+ eContest.applauseMeterSpriteId = spriteId;
}
static void sub_80DC5E8(void)
@@ -3737,15 +3786,15 @@ static void sub_80DC5E8(void)
u8 i;
u8 taskId = CreateTask(sub_80DC728, 30);
- sContest.unk19211 = taskId;
- for (i = 0; i < 4; i++)
+ eContest.unk19211 = taskId;
+ for (i = 0; i < CONTESTANT_COUNT; i++)
gTasks[taskId].data[i * 4] = 0xFF;
}
static void sub_80DC630(u8 a)
{
- gTasks[sContest.unk19211].data[a * 4 + 0] = 0;
- gTasks[sContest.unk19211].data[a * 4 + 1] = 0;
+ gTasks[eContest.unk19211].data[a * 4 + 0] = 0;
+ gTasks[eContest.unk19211].data[a * 4 + 1] = 0;
}
static void sub_80DC674(u8 a)
@@ -3759,12 +3808,12 @@ static void sub_80DC6A4(u8 taskId)
{
u8 r4 = gTasks[taskId].data[0];
- if (gTasks[sContest.unk19211].data[r4 * 4 + 0] == 0
- || gTasks[sContest.unk19211].data[r4 * 4 + 0] == 0xFF)
+ if (gTasks[eContest.unk19211].data[r4 * 4 + 0] == 0
+ || gTasks[eContest.unk19211].data[r4 * 4 + 0] == 0xFF)
{
- gTasks[sContest.unk19211].data[r4 * 4 + 0] = 0xFF;
- gTasks[sContest.unk19211].data[r4 * 4 + 1] = 0;
- BlendPalette((sContest.unk19218[r4] + 5) * 16 + 6, 2, 0, RGB(31, 31, 18));
+ gTasks[eContest.unk19211].data[r4 * 4 + 0] = 0xFF;
+ gTasks[eContest.unk19211].data[r4 * 4 + 1] = 0;
+ BlendPalette((eContest.prevTurnOrder[r4] + MOVE_WINDOWS_START) * 16 + 6, 2, 0, RGB(31, 31, 18));
DestroyTask(taskId);
}
}
@@ -3773,7 +3822,7 @@ static void sub_80DC728(u8 taskId)
{
u8 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
u8 r3 = i * 4;
@@ -3789,7 +3838,7 @@ static void sub_80DC728(u8 taskId)
gTasks[taskId].data[r3 + 1] ^= 1;
BlendPalette(
- (sContest.unk19218[i] + 5) * 16 + 6,
+ (eContest.prevTurnOrder[i] + MOVE_WINDOWS_START) * 16 + 6,
2,
gTasks[taskId].data[r3 + 0],
RGB(31, 31, 18));
@@ -3801,15 +3850,15 @@ static void sub_80DC7EC(void)
{
s32 i;
- sContest.unk19212 = CreateTask(sub_80DC8D0, 30);
- for (i = 0; i < 4; i++)
+ eContest.unk19212 = CreateTask(sub_80DC8D0, 30);
+ for (i = 0; i < CONTESTANT_COUNT; i++)
sub_80DC81C(i);
}
-static void sub_80DC81C(u8 a)
+static void sub_80DC81C(u8 contestant)
{
- gTasks[sContest.unk19212].data[a * 4 + 0] = 0xFF;
- gTasks[sContest.unk19212].data[a * 4 + 1] = 0;
+ gTasks[eContest.unk19212].data[contestant * 4 + 0] = 0xFF;
+ gTasks[eContest.unk19212].data[contestant * 4 + 1] = 0;
}
static void sub_80DC864(void)
@@ -3820,22 +3869,22 @@ static void sub_80DC864(void)
sub_80DC87C(i);
}
-static void sub_80DC87C(u8 a)
+static void sub_80DC87C(u8 contestant)
{
- u32 var;
- u32 r0;
+ u32 windowId1;
+ u32 windowId2;
- sub_80DC81C(a);
+ sub_80DC81C(contestant);
- r0 = a + 5;
+ windowId1 = contestant + MOVE_WINDOWS_START;
DmaCopy16Defvars(3,
- gPlttBufferUnfaded + r0 * 16 + 10,
- gPlttBufferFaded + r0 * 16 + 10,
+ gPlttBufferUnfaded + windowId1 * 16 + 10,
+ gPlttBufferFaded + windowId1 * 16 + 10,
2);
- var = (a + 5) * 16 + 12 + a;
+ windowId2 = (contestant + MOVE_WINDOWS_START) * 16 + 12 + contestant;
DmaCopy16Defvars(3,
- gPlttBufferUnfaded + var,
- gPlttBufferFaded + var,
+ gPlttBufferUnfaded + windowId2,
+ gPlttBufferFaded + windowId2,
2);
}
@@ -3843,7 +3892,7 @@ static void sub_80DC8D0(u8 taskId)
{
u8 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
u8 r3 = i * 4;
@@ -3862,41 +3911,41 @@ static void sub_80DC8D0(u8 taskId)
|| gTasks[taskId].data[r3 + 0] == 0)
gTasks[taskId].data[r3 + 1] ^= 1;
- BlendPalette((i + 5) * 16 + 10, 1, gTasks[taskId].data[r3 + 0], RGB(31, 31, 18));
- BlendPalette((i + 5) * 16 + 12 + i, 1, gTasks[taskId].data[r3 + 0], RGB(31, 31, 18));
+ BlendPalette((i + MOVE_WINDOWS_START) * 16 + 10, 1, gTasks[taskId].data[r3 + 0], RGB(31, 31, 18));
+ BlendPalette((i + MOVE_WINDOWS_START) * 16 + 12 + i, 1, gTasks[taskId].data[r3 + 0], RGB(31, 31, 18));
}
}
}
}
-static void sub_80DC9B4(u8 a)
+static void sub_80DC9B4(u8 contestant)
{
- if (sContestantStatus[a].hasJudgesAttention)
- sub_80DC630(a);
+ if (eContestantStatus[contestant].hasJudgesAttention)
+ sub_80DC630(contestant);
else
- sub_80DC674(a);
+ sub_80DC674(contestant);
}
-static u8 sub_80DC9EC(u8 a)
+static u8 sub_80DC9EC(u8 contestant)
{
u8 spriteId1, spriteId2;
- u8 x = gUnknown_02039F26[a] * 40 + 32;
+ u8 x = gContestantTurnOrder[contestant] * 40 + 32;
- LoadCompressedSpriteSheet(&sUnknown_08589904[a]);
- LoadSpritePalette(&sUnknown_08589924[a]);
- spriteId1 = CreateSprite(&gSpriteTemplate_858998C[a], 184, x, 29);
- spriteId2 = CreateSprite(&gSpriteTemplate_858998C[a], 248, x, 29);
+ LoadCompressedSpriteSheet(&sUnknown_08589904[contestant]);
+ LoadSpritePalette(&sUnknown_08589924[contestant]);
+ spriteId1 = CreateSprite(&gSpriteTemplate_858998C[contestant], 184, x, 29);
+ spriteId2 = CreateSprite(&gSpriteTemplate_858998C[contestant], 248, x, 29);
gSprites[spriteId2].oam.tileNum += 64;
CopySpriteTiles(0,
3,
(void *)VRAM,
- (u16 *)(BG_SCREEN_ADDR(28) + gUnknown_02039F26[a] * 5 * 64 + 0x26),
+ (u16 *)(BG_SCREEN_ADDR(28) + gContestantTurnOrder[contestant] * 5 * 64 + 0x26),
gContestResources->field_34);
CopySpriteTiles(0,
3, (void *)VRAM,
- (u16 *)(BG_SCREEN_ADDR(28) + gUnknown_02039F26[a] * 5 * 64 + 0x36),
+ (u16 *)(BG_SCREEN_ADDR(28) + gContestantTurnOrder[contestant] * 5 * 64 + 0x36),
gContestResources->field_38);
CpuFill32(0, gContestResources->field_34 + 0x500, 0x300);
@@ -3915,8 +3964,8 @@ static u8 sub_80DC9EC(u8 a)
gSprites[spriteId1].data[0] = spriteId2;
gSprites[spriteId2].data[0] = spriteId1;
- gSprites[spriteId1].data[1] = a;
- gSprites[spriteId2].data[1] = a;
+ gSprites[spriteId1].data[1] = contestant;
+ gSprites[spriteId2].data[1] = contestant;
return spriteId1;
}
@@ -3981,164 +4030,203 @@ static void sub_80DCCD8(struct Sprite *sprite)
sub_80DCBD0();
}
-static void sub_80DCD08(void)
+// Unused.
+static void ContestDebugTogglePointTotal(void)
{
- if(gHeap[0x1A000] == 1)
- gHeap[0x1A000] = 0;
+ if(eContestDebugMode == CONTEST_DEBUG_MODE_PRINT_POINT_TOTAL)
+ eContestDebugMode = CONTEST_DEBUG_MODE_OFF;
else
- gHeap[0x1A000] = 1;
+ eContestDebugMode = CONTEST_DEBUG_MODE_PRINT_POINT_TOTAL;
- if(gHeap[0x1A000] == 0)
+ if(eContestDebugMode == CONTEST_DEBUG_MODE_OFF)
{
- sub_80DAEA4();
- sub_80DB2BC();
+ DrawContestantWindowText();
+ SwapMoveDescAndContestTilemaps();
}
else
{
- sub_80DCD48();
+ ContestDebugDoPrint();
}
}
-static void sub_80DCD48(void)
+static void ContestDebugDoPrint(void)
{
u8 i;
s16 value;
u8 *txtPtr;
u8 text[8];
- if (gUnknown_020322D5 == 0)
+ if (!gEnableContestDebugging)
return;
- switch (gHeap[0x1A000])
+ switch (eContestDebugMode)
{
- case 0:
+ case CONTEST_DEBUG_MODE_OFF:
break;
- case 2:
- case 3:
- sub_80DF750();
+ case CONTEST_DEBUG_MODE_PRINT_UNK_C:
+ case CONTEST_DEBUG_MODE_PRINT_UNK_D:
+ ContestDebugPrintBitStrings();
break;
+ // The only other possible value is 1, which is only set by ContestDebugTogglePointTotal.
+ //
+ // case CONTEST_DEBUG_MODE_PRINT_POINT_TOTAL:
default:
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
FillWindowPixelBuffer(i, PIXEL_FILL(0));
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- value = sContestantStatus[i].unk4;
+ value = eContestantStatus[i].pointTotal;
txtPtr = text;
- if (sContestantStatus[i].unk4 < 0)
+ if (eContestantStatus[i].pointTotal < 0)
{
value *= -1;
txtPtr = StringCopy(txtPtr, gText_OneDash);
}
ConvertIntToDecimalStringN(txtPtr, value, STR_CONV_MODE_LEFT_ALIGN, 4);
- Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[i], text, 55, 1, 7);
+ Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[i], text, 55, 1, 7);
}
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- value = sContestantStatus[i].appeal2;
+ value = eContestantStatus[i].appeal2;
txtPtr = text;
- if (sContestantStatus[i].appeal2 < 0)
+ if (eContestantStatus[i].appeal2 < 0)
{
value *= -1;
txtPtr = StringCopy(txtPtr, gText_OneDash);
}
ConvertIntToDecimalStringN(txtPtr, value, STR_CONV_MODE_LEFT_ALIGN, 4);
- Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[i], text, 5, 1, 7);
+ Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[i], text, 5, 1, 7);
}
- sub_80DB2BC();
+ SwapMoveDescAndContestTilemaps();
break;
}
}
-void sub_80DCE58(u8 a)
+void SortContestants(bool8 useRanking)
{
- u8 sp0[4];
- u16 sp4[4] = {0};
+ u8 scratch[CONTESTANT_COUNT];
+ u16 randomOrdering[CONTESTANT_COUNT] = {0};
s32 i;
- s32 r2;
- s32 r4;
+ s32 v3;
- for (i = 0; i < 4; i++)
+ // Generate a unique random number for each contestant.
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- sp4[i] = Random();
- for (r2 = 0; r2 < i; r2++)
+ s32 j;
+ randomOrdering[i] = Random();
+
+ // Loop through all the numbers generated so far.
+ for (j = 0; j < i; j++)
{
- if (sp4[i] == sp4[r2])
+ if (randomOrdering[i] == randomOrdering[j])
{
+ // This number isn't unique; try generating again.
i--;
break;
}
}
}
- if (a == 0)
+ if (!useRanking)
{
- for (i = 0; i < 4; i++)
+ // Order based on the results of the Conditions round using Insertion Sort.
+ // Use the randomOrdering to break ties.
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- gUnknown_02039F26[i] = i;
- for (r4 = 0; r4 < i; r4++)
+ // Append this contestant to the list.
+ gContestantTurnOrder[i] = i;
+
+ // Determine where the contestant should be ordered.
+ for (v3 = 0; v3 < i; v3++)
{
- if (gContestMonConditions[gUnknown_02039F26[r4]] < gContestMonConditions[i]
- || (gContestMonConditions[gUnknown_02039F26[r4]] == gContestMonConditions[i] && sp4[gUnknown_02039F26[r4]] < sp4[i]))
+ if (gContestMonConditions[gContestantTurnOrder[v3]] < gContestMonConditions[i]
+ || (gContestMonConditions[gContestantTurnOrder[v3]] == gContestMonConditions[i] && randomOrdering[gContestantTurnOrder[v3]] < randomOrdering[i]))
{
- for (r2 = i; r2 > r4; r2--)
- gUnknown_02039F26[r2] = gUnknown_02039F26[r2 - 1];
- gUnknown_02039F26[r4] = i;
+ // Shift everything larger up to make room.
+ s32 j;
+ for (j = i; j > v3; j--)
+ gContestantTurnOrder[j] = gContestantTurnOrder[j - 1];
+
+ // Insert into the new spot.
+ gContestantTurnOrder[v3] = i;
break;
}
}
- if (r4 == i)
- gUnknown_02039F26[i] = i;
+
+ // This is redundant.
+ // Perhaps GF switched from true insertion sort to in-place insertion sort, and forgot to
+ // remove this check?
+ if (v3 == i)
+ gContestantTurnOrder[i] = i;
}
- memcpy(sp0, gUnknown_02039F26, sizeof(sp0));
- for (i = 0; i < 4; i++)
- gUnknown_02039F26[sp0[i]] = i;
+
+ // Invert gContestantTurnOrder; above, it was a list of contestant IDs. Now it's a list of turn orderings.
+ //
+ // For example, if contestant 3 had the first turn, then `gContestantTurnOrder[1] = 3`. The turn is the index,
+ // the contestant is the data. After inverting the list, `gContestantTurnOrder[3] = 1`. The contestant is the index,
+ // and the turn is the data.
+ memcpy(scratch, gContestantTurnOrder, sizeof(scratch));
+ for (i = 0; i < CONTESTANT_COUNT; i++)
+ gContestantTurnOrder[scratch[i]] = i;
}
else
{
- memset(sp0, 0xFF, sizeof(sp0));
- for (i = 0; i < 4; i++)
+ // Order contestants based on their ranking.
+ // If contestants have tied ranking, fill in the next available slot.
+ //
+ // Note that ranking is calculated so that shared places still take up a ranking
+ // space. A ranking like [1, 2, 2, 3] is not possible; it would be [1, 2, 2, 4]
+ // instead.
+ memset(scratch, 0xFF, sizeof(scratch));
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- u8 r2 = sContestantStatus[i].unkB_0;
+ u8 j = eContestantStatus[i].ranking;
while (1)
{
- u8 *ptr = &sp0[r2];
+ u8 *ptr = &scratch[j];
if (*ptr == 0xFF)
{
*ptr = i;
- gUnknown_02039F26[i] = r2;
+ gContestantTurnOrder[i] = j;
break;
}
- r2++;
+ j++;
}
}
- for (i = 0; i < 3; i++)
+
+ // Randomize the order of contestants with tied rankings using Selection Sort.
+ //
+ // Look through the array for tied ranks, and use randomOrdering to break the tie.
+ // This ensures that contestants with the same rank will be randomly ordered. This
+ // uses an in-place slection sort, which involves a lot of extra swapping.
+ for (i = 0; i < CONTESTANT_COUNT - 1; i++)
{
- for (r4 = 3; r4 > i; r4--)
+ for (v3 = CONTESTANT_COUNT - 1; v3 > i; v3--)
{
- if (sContestantStatus[r4 - 1].unkB_0 == sContestantStatus[r4].unkB_0
- && gUnknown_02039F26[r4 - 1] < gUnknown_02039F26[r4]
- && sp4[r4 - 1] < sp4[r4])
+ if (eContestantStatus[v3 - 1].ranking == eContestantStatus[v3].ranking
+ && gContestantTurnOrder[v3 - 1] < gContestantTurnOrder[v3]
+ && randomOrdering[v3 - 1] < randomOrdering[v3])
{
- u8 temp = gUnknown_02039F26[r4];
-
- gUnknown_02039F26[r4] = gUnknown_02039F26[r4 - 1];
- gUnknown_02039F26[r4 - 1] = temp;
+ u8 temp = gContestantTurnOrder[v3];
+ gContestantTurnOrder[v3] = gContestantTurnOrder[v3 - 1];
+ gContestantTurnOrder[v3 - 1] = temp;
}
}
}
}
}
-static void sub_80DD04C(void)
+static void DrawContestantWindows(void)
{
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- LoadPalette(&gHeap[0x1A004] + (i + 5) * 32, (gUnknown_02039F26[i] + 5) * 16, 32);
+ s32 windowId = i + MOVE_WINDOWS_START;
+ LoadPalette(eUnknownHeap1A004.cachedWindowPalettes[windowId], (gContestantTurnOrder[i] + MOVE_WINDOWS_START) * 16, sizeof(eUnknownHeap1A004.cachedWindowPalettes[0]));
}
- sub_80DAEA4();
+ DrawContestantWindowText();
}
static void sub_80DD080(u8 contestant)
@@ -4149,104 +4237,104 @@ static void sub_80DD080(u8 contestant)
bool8 r8;
s32 i;
- sContestantStatus[contestant].appeal2 = 0;
- sContestantStatus[contestant].appeal1 = 0;
- r8 = sub_80DBA68(contestant);
+ eContestantStatus[contestant].appeal2 = 0;
+ eContestantStatus[contestant].appeal1 = 0;
+ r8 = ContestantCanUseTurn(contestant);
if (!r8)
return;
- move = sContestantStatus[contestant].currMove;
+ move = eContestantStatus[contestant].currMove;
effect = gContestMoves[move].effect;
- sContestantStatus[contestant].moveCategory = gContestMoves[sContestantStatus[contestant].currMove].contestCategory;
- if (sContestantStatus[contestant].currMove == sContestantStatus[contestant].prevMove && sContestantStatus[contestant].currMove != MOVE_NONE)
+ eContestantStatus[contestant].moveCategory = gContestMoves[eContestantStatus[contestant].currMove].contestCategory;
+ if (eContestantStatus[contestant].currMove == eContestantStatus[contestant].prevMove && eContestantStatus[contestant].currMove != MOVE_NONE)
{
- sContestantStatus[contestant].disappointedRepeat = TRUE;
- sContestantStatus[contestant].moveRepeatCount++;
+ eContestantStatus[contestant].disappointedRepeat = TRUE;
+ eContestantStatus[contestant].moveRepeatCount++;
}
else
{
- sContestantStatus[contestant].moveRepeatCount = 0;
+ eContestantStatus[contestant].moveRepeatCount = 0;
}
- sContestantStatus[contestant].appeal1 = gContestEffects[effect].appeal;
- sContestantStatus[contestant].appeal2 = sContestantStatus[contestant].appeal1;
- shared192D0.jam = gContestEffects[effect].jam;
- shared192D0.jam2 = shared192D0.jam;
+ eContestantStatus[contestant].appeal1 = gContestEffects[effect].appeal;
+ eContestantStatus[contestant].appeal2 = eContestantStatus[contestant].appeal1;
+ eContestResources8.jam = gContestEffects[effect].jam;
+ eContestResources8.jam2 = eContestResources8.jam;
- shared192D0.contestant = contestant;
+ eContestResources8.contestant = contestant;
for (i = 0; i < 4; i++)
{
- sContestantStatus[i].jam = 0;
- shared192D0.unnervedPokes[i] = 0;
+ eContestantStatus[i].jam = 0;
+ eContestResources8.unnervedPokes[i] = 0;
}
- if (sContestantStatus[contestant].hasJudgesAttention
- && !AreMovesContestCombo(sContestantStatus[contestant].prevMove, sContestantStatus[contestant].currMove))
- sContestantStatus[contestant].hasJudgesAttention = 0;
+ if (eContestantStatus[contestant].hasJudgesAttention
+ && !AreMovesContestCombo(eContestantStatus[contestant].prevMove, eContestantStatus[contestant].currMove))
+ eContestantStatus[contestant].hasJudgesAttention = 0;
gContestEffectFuncs[effect]();
- if (sContestantStatus[contestant].conditionMod == 1)
- sContestantStatus[contestant].appeal2 += sContestantStatus[contestant].condition - 10;
- else if (sContestantStatus[contestant].appealTripleCondition)
- sContestantStatus[contestant].appeal2 += sContestantStatus[contestant].condition * 3;
+ if (eContestantStatus[contestant].conditionMod == 1)
+ eContestantStatus[contestant].appeal2 += eContestantStatus[contestant].condition - 10;
+ else if (eContestantStatus[contestant].appealTripleCondition)
+ eContestantStatus[contestant].appeal2 += eContestantStatus[contestant].condition * 3;
else
- sContestantStatus[contestant].appeal2 += sContestantStatus[contestant].condition;
+ eContestantStatus[contestant].appeal2 += eContestantStatus[contestant].condition;
- sContestantStatus[contestant].unk16 = 0;
- sContestantStatus[contestant].unk15_6 = 0;
+ eContestantStatus[contestant].unk16 = 0;
+ eContestantStatus[contestant].unk15_6 = 0;
if (sub_80DE1E8(contestant))
{
- u8 r2 = AreMovesContestCombo(sContestantStatus[contestant].prevMove, sContestantStatus[contestant].currMove);
+ u8 r2 = AreMovesContestCombo(eContestantStatus[contestant].prevMove, eContestantStatus[contestant].currMove);
- if (r2 != 0 && sContestantStatus[contestant].hasJudgesAttention)
+ if (r2 != 0 && eContestantStatus[contestant].hasJudgesAttention)
{
- sContestantStatus[contestant].unk16 = r2;
- sContestantStatus[contestant].unk15_6 = 1;
- sContestantStatus[contestant].hasJudgesAttention = 0;
- sContestantStatus[contestant].unk17 = sContestantStatus[contestant].appeal1 * sContestantStatus[contestant].unk16;
- sContestantStatus[contestant].unk15_3 = 1;
+ eContestantStatus[contestant].unk16 = r2;
+ eContestantStatus[contestant].unk15_6 = 1;
+ eContestantStatus[contestant].hasJudgesAttention = 0;
+ eContestantStatus[contestant].unk17 = eContestantStatus[contestant].appeal1 * eContestantStatus[contestant].unk16;
+ eContestantStatus[contestant].unk15_3 = 1;
}
else
{
- if (gContestMoves[sContestantStatus[contestant].currMove].comboStarterId != 0)
+ if (gContestMoves[eContestantStatus[contestant].currMove].comboStarterId != 0)
{
- sContestantStatus[contestant].hasJudgesAttention = 1;
- sContestantStatus[contestant].unk15_6 = 1;
+ eContestantStatus[contestant].hasJudgesAttention = 1;
+ eContestantStatus[contestant].unk15_6 = 1;
}
else
{
- sContestantStatus[contestant].hasJudgesAttention = 0;
+ eContestantStatus[contestant].hasJudgesAttention = 0;
}
}
}
- if (sContestantStatus[contestant].disappointedRepeat)
- sContestantStatus[contestant].unk18 = (sContestantStatus[contestant].moveRepeatCount + 1) * 10;
+ if (eContestantStatus[contestant].disappointedRepeat)
+ eContestantStatus[contestant].unk18 = (eContestantStatus[contestant].moveRepeatCount + 1) * 10;
- if (sContestantStatus[contestant].nervous)
+ if (eContestantStatus[contestant].nervous)
{
- sContestantStatus[contestant].hasJudgesAttention = 0;
- sContestantStatus[contestant].appeal2 = 0;
- sContestantStatus[contestant].appeal1 = 0;
+ eContestantStatus[contestant].hasJudgesAttention = 0;
+ eContestantStatus[contestant].appeal2 = 0;
+ eContestantStatus[contestant].appeal1 = 0;
}
- shared19328.bits_0 = Contest_GetMoveExcitement(sContestantStatus[contestant].currMove);
- if (sContestantStatus[contestant].overrideCategoryExcitementMod)
- shared19328.bits_0 = 1;
+ eContestResources10.bits_0 = Contest_GetMoveExcitement(eContestantStatus[contestant].currMove);
+ if (eContestantStatus[contestant].overrideCategoryExcitementMod)
+ eContestResources10.bits_0 = 1;
- if (shared19328.bits_0 > 0)
+ if (eContestResources10.bits_0 > 0)
{
- if (sContest.applauseLevel + shared19328.bits_0 > 4)
- shared19328.unk2 = 60;
+ if (eContest.applauseLevel + eContestResources10.bits_0 > 4)
+ eContestResources10.unk2 = 60;
else
- shared19328.unk2 = 10;
+ eContestResources10.unk2 = 10;
}
else
{
- shared19328.unk2 = 0;
+ eContestResources10.unk2 = 0;
}
rnd = Random() % 3;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
if (i != contestant)
{
@@ -4255,17 +4343,17 @@ static void sub_80DD080(u8 contestant)
rnd--;
}
}
- sContestantStatus[contestant].unk1B = i;
+ eContestantStatus[contestant].unk1B = i;
}
void SetContestantEffectStringID(u8 a, u8 b)
{
- sContestantStatus[a].effectStringId = b;
+ eContestantStatus[a].effectStringId = b;
}
void SetContestantEffectStringID2(u8 a, u8 b)
{
- sContestantStatus[a].effectStringId2 = b;
+ eContestantStatus[a].effectStringId2 = b;
}
void SetStartledString(u8 contestant, u8 jam)
@@ -4285,81 +4373,103 @@ void SetStartledString(u8 contestant, u8 jam)
static void sub_80DD45C(u8 contestant, u8 stringId)
{
StringCopy(gStringVar1, gContestMons[contestant].nickname);
- StringCopy(gStringVar2, gMoveNames[sContestantStatus[contestant].currMove]);
- if (gContestMoves[sContestantStatus[shared192D0.contestant].currMove].contestCategory == CONTEST_CATEGORY_COOL)
+ StringCopy(gStringVar2, gMoveNames[eContestantStatus[contestant].currMove]);
+ if (gContestMoves[eContestantStatus[eContestResources8.contestant].currMove].contestCategory == CONTEST_CATEGORY_COOL)
StringCopy(gStringVar3, gText_Contest_Shyness);
- else if (gContestMoves[sContestantStatus[shared192D0.contestant].currMove].contestCategory == CONTEST_CATEGORY_BEAUTY)
+ else if (gContestMoves[eContestantStatus[eContestResources8.contestant].currMove].contestCategory == CONTEST_CATEGORY_BEAUTY)
StringCopy(gStringVar3, gText_Contest_Anxiety);
- else if (gContestMoves[sContestantStatus[shared192D0.contestant].currMove].contestCategory == CONTEST_CATEGORY_CUTE)
+ else if (gContestMoves[eContestantStatus[eContestResources8.contestant].currMove].contestCategory == CONTEST_CATEGORY_CUTE)
StringCopy(gStringVar3, gText_Contest_Laziness);
- else if (gContestMoves[sContestantStatus[shared192D0.contestant].currMove].contestCategory == CONTEST_CATEGORY_SMART)
+ else if (gContestMoves[eContestantStatus[eContestResources8.contestant].currMove].contestCategory == CONTEST_CATEGORY_SMART)
StringCopy(gStringVar3, gText_Contest_Hesitancy);
else
StringCopy(gStringVar3, gText_Contest_Fear);
StringExpandPlaceholders(gStringVar4, gUnknown_08587E10[stringId]);
- sub_80DB89C();
+ ContestClearGeneralTextWindow();
Contest_StartTextPrinter(gStringVar4, 1);
}
void MakeContestantNervous(u8 p)
{
- sContestantStatus[p].nervous = 1;
- sContestantStatus[p].currMove = MOVE_NONE;
+ eContestantStatus[p].nervous = TRUE;
+ eContestantStatus[p].currMove = MOVE_NONE;
}
-static void sub_80DD590(void)
+// This function calculates the new turn order for the next round. The
+// algorithm first checks for explicit turn assignments in the
+// ContestantStatus::nextTurnOrder field of each contestant. The remaining
+// turns are assigned such that the turn order will reverse.
+//
+// For example, if no pokemon have a defined nextTurnOrder, then the 4th
+// will become 1st, the 3rd will become 2nd, etc.
+//
+// Note: This function assumes that multiple pokemon cannot have the same
+// nextTurnOrder value.
+static void ApplyNextTurnOrder(void)
{
- u8 r12 = 0;
+ u8 nextContestant = 0;
s32 i;
s32 j;
- u8 sp0[4];
- u8 sp4[4];
+ u8 newTurnOrder[CONTESTANT_COUNT];
+ bool8 isContestantOrdered[CONTESTANT_COUNT];
- for (i = 0; i < 4; i++)
+ // Copy the current turn order.
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- sp0[i] = gUnknown_02039F26[i];
- sp4[i] = 0;
+ newTurnOrder[i] = gContestantTurnOrder[i];
+ isContestantOrdered[i] = FALSE;
}
- for (i = 0; i < 4; i++)
+ // For each turn, assign a contestant to that turn.
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- for (j = 0; j < 4; j++)
+ // Look for explicit turn assignments.
+ for (j = 0; j < CONTESTANT_COUNT; j++)
{
- if (sContestantStatus[j].nextTurnOrder == i)
+ if (eContestantStatus[j].nextTurnOrder == i)
{
- sp0[j] = i;
- sp4[j] = 1;
+ newTurnOrder[j] = i;
+ isContestantOrdered[j] = TRUE;
break;
}
}
- if (j == 4)
+
+ if (j == CONTESTANT_COUNT)
{
- for (j = 0; j < 4; j++)
+ // No contestant was assigned to this turn. Look for the unassigned contestant
+ // with the highest turn order.
+ //
+ // First, look for the first unassigned contestant.
+ for (j = 0; j < CONTESTANT_COUNT; j++)
{
- if (sp4[j] == 0 && sContestantStatus[j].nextTurnOrder == 0xFF)
+ if (!isContestantOrdered[j] && eContestantStatus[j].nextTurnOrder == 0xFF)
{
- r12 = j;
+ nextContestant = j;
j++;
break;
}
}
- for (; j < 4; j++)
+
+ // Then, look for a better candidate, with a higher turn order.
+ for (; j < CONTESTANT_COUNT; j++)
{
- if (sp4[j] == 0 && sContestantStatus[j].nextTurnOrder == 0xFF
- && gUnknown_02039F26[r12] > gUnknown_02039F26[j])
- r12 = j;
+ if (!isContestantOrdered[j] && eContestantStatus[j].nextTurnOrder == 0xFF
+ && gContestantTurnOrder[nextContestant] > gContestantTurnOrder[j])
+ nextContestant = j;
}
- sp0[r12] = i;
- sp4[r12] = 1;
+
+ // Assign the contestant to this turn.
+ newTurnOrder[nextContestant] = i;
+ isContestantOrdered[nextContestant] = TRUE;
}
}
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
- shared192D0.turnOrder[i] = sp0[i];
- sContestantStatus[i].nextTurnOrder = 0xFF;
- sContestantStatus[i].turnOrderMod = 0;
- gUnknown_02039F26[i] = sp0[i];
+ eContestResources8.turnOrder[i] = newTurnOrder[i];
+ eContestantStatus[i].nextTurnOrder = 0xFF;
+ eContestantStatus[i].turnOrderMod = 0;
+ gContestantTurnOrder[i] = newTurnOrder[i];
}
}
@@ -4370,13 +4480,13 @@ static void sub_80DD6DC(struct Sprite *sprite)
sprite->data[1] = 0;
sprite->invisible = TRUE;
sprite->callback = SpriteCallbackDummy;
- sContest.unk1920A_4 = 0;
+ eContest.unk1920A_4 = 0;
}
}
static void sub_80DD720(u8 a)
{
- u8 spriteId = sContest.unk19216;
+ u8 spriteId = eContest.unk19216;
switch (a)
{
@@ -4418,26 +4528,26 @@ static void sub_80DD720(u8 a)
gSprites[spriteId].data[1] = 0;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].callback = sub_80DD6DC;
- sContest.unk1920A_4 = 1;
+ eContest.unk1920A_4 = 1;
}
-static void sub_80DD940(void)
+static void UpdateApplauseMeter(void)
{
s32 i;
- for (i = 0; i < 5; i++)
+ for (i = 0; i < APPLAUSE_METER_SIZE; i++)
{
const u8 *src;
- if (i < sContest.applauseLevel)
- src = gContestApplauseMeterGfx + 64;
+ if (i < eContest.applauseLevel)
+ src = &gContestApplauseMeterGfx[64];
else
src = gContestApplauseMeterGfx;
- CpuCopy32(src, (void *)(VRAM + 0x10000 + (gSprites[sContest.applauseMeterSpriteId].oam.tileNum + 17 + i) * 32), 32);
- CpuCopy32(src + 32, (void *)(VRAM + 0x10000 + (gSprites[sContest.applauseMeterSpriteId].oam.tileNum + 25 + i) * 32), 32);
+ CpuCopy32(src, (void *)(VRAM + 0x10000 + (gSprites[eContest.applauseMeterSpriteId].oam.tileNum + 17 + i) * 32), 32);
+ CpuCopy32(src + 32, (void *)(VRAM + 0x10000 + (gSprites[eContest.applauseMeterSpriteId].oam.tileNum + 25 + i) * 32), 32);
- if (sContest.applauseLevel > 4)
- sub_80DDA20();
+ if (eContest.applauseLevel > 4)
+ StartApplauseOverflowAnimation();
}
}
@@ -4446,48 +4556,56 @@ s8 Contest_GetMoveExcitement(u16 move)
return gContestExcitementTable[gSpecialVar_ContestCategory][gContestMoves[move].contestCategory];
}
-static u8 sub_80DDA20(void)
+static u8 StartApplauseOverflowAnimation(void)
{
- u8 taskId = CreateTask(c3_08130B10, 10);
+ u8 taskId = CreateTask(Task_ApplauseOverflowAnimation, 10);
gTasks[taskId].data[1] = 1;
- gTasks[taskId].data[2] = IndexOfSpritePaletteTag(0x0ABE2);
+ gTasks[taskId].data[2] = IndexOfSpritePaletteTag(APPLAUSE_METER_GFX_TAG);
return taskId;
}
-static void c3_08130B10(u8 taskId)
+static void Task_ApplauseOverflowAnimation(u8 taskId)
{
+ // Skip every other frame.
if (++gTasks[taskId].data[0] == 1)
{
gTasks[taskId].data[0] = 0;
+
+ // Alternate between normal colors and white.
if (gTasks[taskId].data[3] == 0)
gTasks[taskId].data[4]++;
else
gTasks[taskId].data[4]--;
- BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, gTasks[taskId].data[4], RGB(31, 31, 31));
+
+ BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, gTasks[taskId].data[4], RGB_WHITE);
+
+ // At the maximum or minimum blending, switch directions.
if (gTasks[taskId].data[4] == 0 || gTasks[taskId].data[4] == 16)
{
gTasks[taskId].data[3] ^= 1;
- if (sContest.applauseLevel < 5)
+
+ // Continue the animation until the applause meter is cleared.
+ if (eContest.applauseLevel < 5)
{
- BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, 0, RGB(31, 0, 0));
+ BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, 0, RGB_RED);
DestroyTask(taskId);
}
}
}
}
-static void sub_80DDB0C(void)
+static void StartMoveApplauseMeterOnscreen(void)
{
- CreateTask(sub_80DDB6C, 10);
- gSprites[sContest.applauseMeterSpriteId].pos2.x = -70;
- gSprites[sContest.applauseMeterSpriteId].invisible = FALSE;
- sContest.unk1920A_6 = 1;
+ CreateTask(Task_MoveApplauseMeterOnscreen, 10);
+ gSprites[eContest.applauseMeterSpriteId].pos2.x = -70;
+ gSprites[eContest.applauseMeterSpriteId].invisible = FALSE;
+ eContest.applauseMeterIsMoving = TRUE;
}
-static void sub_80DDB6C(u8 taskId)
+static void Task_MoveApplauseMeterOnscreen(u8 taskId)
{
- struct Sprite *sprite = &gSprites[sContest.applauseMeterSpriteId];
+ struct Sprite *sprite = &gSprites[eContest.applauseMeterSpriteId];
gTasks[taskId].data[10] += 1664;
sprite->pos2.x += gTasks[taskId].data[10] >> 8;
@@ -4496,28 +4614,28 @@ static void sub_80DDB6C(u8 taskId)
sprite->pos2.x = 0;
if (sprite->pos2.x == 0)
{
- sContest.unk1920A_6 = 0;
+ eContest.applauseMeterIsMoving = FALSE;
DestroyTask(taskId);
}
}
-static void sub_80DDBE8(void)
+static void TryMoveApplauseMeterOffscreen(void)
{
- if (gSprites[sContest.applauseMeterSpriteId].invisible == TRUE)
+ if (gSprites[eContest.applauseMeterSpriteId].invisible == TRUE)
{
- sContest.unk1920A_6 = 0;
+ eContest.applauseMeterIsMoving = FALSE;
}
else
{
- CreateTask(task08_080CD1CC, 10);
- gSprites[sContest.applauseMeterSpriteId].pos2.x = 0;
- sContest.unk1920A_6 = 1;
+ CreateTask(Task_MoveApplauseMeterOffscreen, 10);
+ gSprites[eContest.applauseMeterSpriteId].pos2.x = 0;
+ eContest.applauseMeterIsMoving = TRUE;
}
}
-static void task08_080CD1CC(u8 taskId)
+static void Task_MoveApplauseMeterOffscreen(u8 taskId)
{
- struct Sprite *sprite = &gSprites[sContest.applauseMeterSpriteId];
+ struct Sprite *sprite = &gSprites[eContest.applauseMeterSpriteId];
gTasks[taskId].data[10] += 1664;
sprite->pos2.x -= gTasks[taskId].data[10] >> 8;
@@ -4527,29 +4645,29 @@ static void task08_080CD1CC(u8 taskId)
if (sprite->pos2.x == -70)
{
sprite->invisible = TRUE;
- sContest.unk1920A_6 = 0;
+ eContest.applauseMeterIsMoving = FALSE;
DestroyTask(taskId);
}
}
-static void sub_80DDCDC(s8 a)
+static void ShowAndUpdateApplauseMeter(s8 unused)
{
- u8 taskId = CreateTask(sub_80DDD20, 5);
+ u8 taskId = CreateTask(Task_ShowAndUpdateApplauseMeter, 5);
- gTasks[taskId].data[0] = a;
- sContest.unk1920A_5 = 1;
+ gTasks[taskId].data[0] = unused;
+ eContest.isShowingApplauseMeter = TRUE;
}
-static void sub_80DDD20(u8 taskId)
+static void Task_ShowAndUpdateApplauseMeter(u8 taskId)
{
switch (gTasks[taskId].data[10])
{
case 0:
- sub_80DDB0C();
+ StartMoveApplauseMeterOnscreen();
gTasks[taskId].data[10]++;
break;
case 1:
- if (!sContest.unk1920A_6)
+ if (!eContest.applauseMeterIsMoving)
{
gTasks[taskId].data[10]++;
}
@@ -4558,29 +4676,31 @@ static void sub_80DDD20(u8 taskId)
if (gTasks[taskId].data[11]++ > 20)
{
gTasks[taskId].data[11] = 0;
- sub_80DD940();
- sContest.unk1920A_5 = 0;
+ UpdateApplauseMeter();
+ eContest.isShowingApplauseMeter = FALSE;
DestroyTask(taskId);
}
break;
}
}
-void unref_sub_80DDDA8(void)
+// Unused.
+void HideApplauseMeterNoAnim(void)
{
- gSprites[sContest.applauseMeterSpriteId].pos2.x = 0;
- gSprites[sContest.applauseMeterSpriteId].invisible = FALSE;
+ gSprites[eContest.applauseMeterSpriteId].pos2.x = 0;
+ gSprites[eContest.applauseMeterSpriteId].invisible = FALSE;
}
-void unref_sub_80DDDE4(void)
+// Unused.
+void ShowApplauseMeterNoAnim(void)
{
- gSprites[sContest.applauseMeterSpriteId].invisible = TRUE;
+ gSprites[eContest.applauseMeterSpriteId].invisible = TRUE;
}
static void sub_80DDE0C(void)
{
CreateTask(sub_80DDE30, 15);
- sContest.unk1920A_7 = 1;
+ eContest.unk1920A_7 = 1;
}
static void sub_80DDE30(u8 taskId)
@@ -4590,11 +4710,11 @@ static void sub_80DDE30(u8 taskId)
gTasks[taskId].data[10] = 0;
if (gTasks[taskId].data[11] == 0)
{
- RequestDma3Copy(shared16800, (void *)(BG_SCREEN_ADDR(4)), 0x1000, 1);
+ RequestDma3Copy(eUnknownHeap19000, (void *)(BG_SCREEN_ADDR(4)), 0x1000, 1);
}
else
{
- RequestDma3Copy(shared15800, (void *)(BG_SCREEN_ADDR(4)), 0x1000, 1);
+ RequestDma3Copy(eUnzippedContestAudienceGfx, (void *)(BG_SCREEN_ADDR(4)), 0x1000, 1);
gTasks[taskId].data[12]++;
}
@@ -4602,7 +4722,7 @@ static void sub_80DDE30(u8 taskId)
if (gTasks[taskId].data[12] == 9)
{
- sContest.unk1920A_7 = 0;
+ eContest.unk1920A_7 = 0;
DestroyTask(taskId);
}
}
@@ -4624,11 +4744,11 @@ static void sub_80DDED0(s8 a, s8 b)
if (b > 0)
{
blendCoeff = 0;
- r3 = sContest.applauseLevel * 3;
+ r3 = eContest.applauseLevel * 3;
}
else
{
- blendCoeff = sContest.applauseLevel * 3;
+ blendCoeff = eContest.applauseLevel * 3;
r3 = 0;
}
}
@@ -4650,7 +4770,7 @@ static void sub_80DDED0(s8 a, s8 b)
gTasks[taskId].tBlendCoeff = blendCoeff;
gTasks[taskId].data[2] = b;
gTasks[taskId].data[3] = r3;
- sContest.unk1920B_0 = 0;
+ eContest.unk1920B_0 = 0;
}
static void sub_80DDF80(u8 taskId)
@@ -4667,7 +4787,7 @@ static void sub_80DDF80(u8 taskId)
if (gTasks[taskId].tBlendCoeff == gTasks[taskId].data[3])
{
DestroyTask(taskId);
- sContest.unk1920B_0 = 0;
+ eContest.unk1920B_0 = 0;
}
}
}
@@ -4681,10 +4801,10 @@ static void sub_80DE008(bool8 a)
for (i = 0; i < 4; i++)
{
- if (sContestantStatus[i].turnOrderMod != 0 && a)
+ if (eContestantStatus[i].turnOrderMod != 0 && a)
{
CpuCopy32(GetTurnOrderNumberGfx(i), (void *)(VRAM + 0x10000 + (gSprites[gContestResources->field_14[i].unk1].oam.tileNum + 6) * 32), 32);
- gSprites[gContestResources->field_14[i].unk1].pos1.y = gUnknown_08587A70[gUnknown_02039F26[i]];
+ gSprites[gContestResources->field_14[i].unk1].pos1.y = gUnknown_08587A70[gContestantTurnOrder[i]];
gSprites[gContestResources->field_14[i].unk1].invisible = FALSE;
}
else
@@ -4696,10 +4816,10 @@ static void sub_80DE008(bool8 a)
static const u8 *GetTurnOrderNumberGfx(u8 contestant)
{
- if (sContestantStatus[contestant].turnOrderMod != 1)
+ if (eContestantStatus[contestant].turnOrderMod != 1)
return gContestNextTurnRandomGfx;
else
- return gContestNextTurnNumbersGfx + sContestantStatus[contestant].nextTurnOrder * 32;
+ return gContestNextTurnNumbersGfx + eContestantStatus[contestant].nextTurnOrder * 32;
}
static void sub_80DE12C(void)
@@ -4709,11 +4829,11 @@ static void sub_80DE12C(void)
u8 r8 = 1;
u8 r9 = 0x11;
- for (r7 = 0; r7 < 4; r7++)
+ for (r7 = 0; r7 < CONTESTANT_COUNT; r7++)
{
- if (shared192D0.unnervedPokes[r7] != 0 && !Contest_IsMonsTurnDisabled(r7))
+ if (eContestResources8.unnervedPokes[r7] != 0 && !Contest_IsMonsTurnDisabled(r7))
{
- u32 r6 = gUnknown_02039F26[r7] * 5 + 2;
+ u32 r6 = gContestantTurnOrder[r7] * 5 + 2;
u16 var = sub_80DB748(3);
ContestBG_FillBoxWithIncrementingTile(0, var, 0x14, r6, r10, r8, r9, r8);
@@ -4724,9 +4844,9 @@ static void sub_80DE12C(void)
}
}
-bool8 sub_80DE1E8(u8 a)
+bool8 sub_80DE1E8(u8 contestant)
{
- if (sContestantStatus[a].disappointedRepeat || sContestantStatus[a].nervous)
+ if (eContestantStatus[contestant].disappointedRepeat || eContestantStatus[contestant].nervous)
return FALSE;
else
return TRUE;
@@ -4758,7 +4878,7 @@ static void sub_80DE224(void)
SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
- CpuFill32(0, gContestResources->field_24[1], 0x1000);
+ CpuFill32(0, gContestResources->contestBgTilemaps[1], 0x1000);
CopyToBgTilemapBuffer(1, gUnknown_08C17980, 0, 0);
Contest_SetBgCopyFlags(1);
@@ -4775,8 +4895,8 @@ static void sub_80DE350(void)
s32 i;
u16 bg1Cnt;
- RequestDma3Fill(0,(void *)(BG_CHAR_ADDR(2)), 0x2000, 0x1);
- CpuFill32(0, gContestResources->field_24[1], 0x1000);
+ RequestDma3Fill(0,(void *)(BG_CHAR_ADDR(2)), 0x2000, 1);
+ CpuFill32(0, gContestResources->contestBgTilemaps[1], 0x1000);
Contest_SetBgCopyFlags(1);
bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT);
((vBgCnt *) &bg1Cnt)->priority = 1;
@@ -4789,7 +4909,7 @@ static void sub_80DE350(void)
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
gSprites[gContestResources->field_14[i].unk0].oam.priority = 0;
gSprites[gContestResources->field_14[i].unk1].oam.priority = 0;
@@ -4824,27 +4944,27 @@ static void sub_80DE4A8(u8 taskId)
switch (gTasks[taskId].data[0])
{
case 0:
- for (i = 0; i < 4; i++)
- sContest.unk19218[i] = gUnknown_02039F26[i];
- sub_80DBF90();
+ for (i = 0; i < CONTESTANT_COUNT; i++)
+ eContest.prevTurnOrder[i] = gContestantTurnOrder[i];
+ FillContestantWindowBgs();
sub_80DC864();
sub_80DB69C();
- sub_80DD04C();
+ DrawContestantWindows();
sub_80DE008(TRUE);
sub_80DC44C();
gTasks[taskId].data[0] = 1;
break;
case 1:
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
u8 taskId2;
- sContest.unk1920B_2 = 1;
+ eContest.unk1920B_2 = 1;
if (sub_80DA8A4())
sub_80DBAA0();
taskId2 = CreateTask(sub_80FCC88, 0);
SetTaskFuncWithFollowupFunc(taskId2, sub_80FCC88, sub_80DA110);
- sub_80DBF68();
+ ContestPrintLinkStandby();
gTasks[taskId].data[0] = 2;
}
else
@@ -4854,12 +4974,12 @@ static void sub_80DE4A8(u8 taskId)
}
break;
case 2:
- if (!sContest.unk1920B_2)
+ if (!eContest.unk1920B_2)
gTasks[taskId].data[0] = 3;
break;
case 3:
sub_80DB884();
- sub_80DB2BC();
+ SwapMoveDescAndContestTilemaps();
gTasks[taskId].data[0] = 0;
gTasks[taskId].func = sub_80DE5F4;
break;
@@ -4922,7 +5042,7 @@ static void sub_80DE69C(u8 a)
s32 i;
u8 taskId;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
gSprites[gContestResources->field_14[i].unk0].oam.matrixNum = AllocOamMatrix();
gSprites[gContestResources->field_14[i].unk0].oam.affineMode = 1;
@@ -4935,7 +5055,7 @@ static void sub_80DE69C(u8 a)
}
taskId = CreateTask(sub_80DE794, 5);
gTasks[taskId].data[0] = a;
- sContest.unk1920B_1 = 1;
+ eContest.unk1920B_1 = 1;
}
static void sub_80DE794(u8 taskId)
@@ -4946,12 +5066,12 @@ static void sub_80DE794(u8 taskId)
{
if ((u8)gTasks[taskId].data[0] == 1)
{
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
gSprites[gContestResources->field_14[i].unk0].invisible = TRUE;
}
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
FreeSpriteOamMatrix(&gSprites[gContestResources->field_14[i].unk0]);
- sContest.unk1920B_1 = 0;
+ eContest.unk1920B_1 = 0;
DestroyTask(taskId);
}
}
@@ -4973,13 +5093,13 @@ static u16 SanitizeSpecies(u16 species)
static void sub_80DE864(u8 a)
{
s32 i;
- u16 move = SanitizeMove(sContestantStatus[a].currMove);
+ u16 move = SanitizeMove(eContestantStatus[a].currMove);
u16 species = SanitizeSpecies(gContestMons[a].species);
u8 r5_2;
memset(&gContestResources->field_18->species, 0, 0x14);
ClearBattleAnimationVars();
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
gBattleMonForms[i] = 0;
switch (move)
{
@@ -4991,7 +5111,7 @@ static void sub_80DE864(u8 a)
break;
case MOVE_TRANSFORM:
case MOVE_ROLE_PLAY:
- r5_2 = sContestantStatus[a].unk1B;
+ r5_2 = eContestantStatus[a].unk1B;
gContestResources->field_18->unk2 = SanitizeSpecies(gContestMons[r5_2].species);
gContestResources->field_18->unk10 = gContestMons[r5_2].personality;
gContestResources->field_18->unk4_0 = 1;
@@ -5006,9 +5126,9 @@ static void sub_80DE864(u8 a)
case MOVE_RAZOR_WIND:
case MOVE_SKULL_BASH:
case MOVE_SKY_ATTACK:
- if (sContest.unk1925E == 0)
+ if (eContest.unk1925E == 0)
{
- sContest.unk1925E = 2;
+ eContest.unk1925E = 2;
gAnimMoveTurn = 0;
}
else
@@ -5022,17 +5142,17 @@ static void sub_80DE864(u8 a)
static void sub_80DE9B0(u8 unused)
{
- memset(&gContestResources->field_18->species, 0, 0x14);
- if (sContest.unk1925E != 0)
- sContest.unk1925E--;
+ memset(gContestResources->field_18, 0, sizeof(struct ContestStruct_field_18));
+ if (eContest.unk1925E != 0)
+ eContest.unk1925E--;
}
-static void sub_80DE9DC(u8 a)
+static void sub_80DE9DC(u8 contestant)
{
- gContestResources->field_18->unk5 = a;
- gContestResources->field_18->species = SanitizeSpecies(gContestMons[a].species);
- gContestResources->field_18->unk8 = gContestMons[a].personality;
- gContestResources->field_18->unkC = gContestMons[a].otId;
+ gContestResources->field_18->unk5 = contestant;
+ gContestResources->field_18->species = SanitizeSpecies(gContestMons[contestant].species);
+ gContestResources->field_18->unk8 = gContestMons[contestant].personality;
+ gContestResources->field_18->unkC = gContestMons[contestant].otId;
}
static void sub_80DEA20(void)
@@ -5142,7 +5262,7 @@ static void Contest_StartTextPrinter(const u8 *currChar, bool32 b)
}
else
{
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
speed = 4;
else
speed = GetPlayerTextSpeedDelay();
@@ -5153,15 +5273,15 @@ static void Contest_StartTextPrinter(const u8 *currChar, bool32 b)
Contest_SetBgCopyFlags(0);
}
-static void ContestBG_FillBoxWithIncrementingTile(u8 a, u16 b, u8 c, u8 d, u8 e, u8 f, u8 g, s16 h)
+static void ContestBG_FillBoxWithIncrementingTile(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 width, u8 height, u8 paletteSlot, s16 tileNumData)
{
- WriteSequenceToBgTilemapBuffer(a, b, c, d, e, f, g, h);
- Contest_SetBgCopyFlags(a);
+ WriteSequenceToBgTilemapBuffer(bg, firstTileNum, x, y, width, height, paletteSlot, tileNumData);
+ Contest_SetBgCopyFlags(bg);
}
-static void ContestBG_FillBoxWithTile(u8 a, u16 b, u8 c, u8 d, u8 e, u8 f, u8 g)
+static void ContestBG_FillBoxWithTile(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 width, u8 height, u8 paletteSlot)
{
- ContestBG_FillBoxWithIncrementingTile(a, b, c, d, e, f, g, 0);
+ ContestBG_FillBoxWithIncrementingTile(bg, firstTileNum, x, y, width, height, paletteSlot, 0);
}
static bool32 Contest_RunTextPrinters(void)
@@ -5170,9 +5290,9 @@ static bool32 Contest_RunTextPrinters(void)
return IsTextPrinterActive(4);
}
-static void Contest_SetBgCopyFlags(u32 var)
+static void Contest_SetBgCopyFlags(u32 flagIndex)
{
- sContestBgCopyFlags |= 1 << var;
+ sContestBgCopyFlags |= 1 << flagIndex;
}
void ResetContestLinkResults(void)
@@ -5180,7 +5300,7 @@ void ResetContestLinkResults(void)
s32 i;
s32 j;
- for(i = 0; i < 5; i++)
+ for(i = 0; i < CONTEST_CATEGORIES_COUNT; i++)
for(j = 0; j < 4; j++)
gSaveBlock2Ptr->contestLinkResults[i][j] = 0;
}
@@ -5190,7 +5310,7 @@ bool8 sub_80DEDA8(u8 a)
s32 i;
u8 r7 = Random() % 3;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < CONTESTANT_COUNT - 1; i++)
{
if (gContestFinalStandings[i] == 0)
break;
@@ -5224,7 +5344,7 @@ bool8 sub_80DEDA8(u8 a)
gSaveBlock1Ptr->contestWinners[r4].trainerId = gContestMons[i].otId;
StringCopy(gSaveBlock1Ptr->contestWinners[r4].monName, gContestMons[i].nickname);
StringCopy(gSaveBlock1Ptr->contestWinners[r4].trainerName, gContestMons[i].trainerName);
- if(gIsLinkContest & 1)
+ if(gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
gSaveBlock1Ptr->contestWinners[r4].contestRank = 4;
else
gSaveBlock1Ptr->contestWinners[r4].contestRank = gSpecialVar_ContestRank;
@@ -5295,13 +5415,13 @@ static void sub_80DF080(u8 contestant)
if (!gContestResources->field_10->excitementFrozen
&& gContestResources->field_10->bits_0 > 0
- && !gContestResources->field_4[contestant].disappointedRepeat)
+ && !eContestantStatus[contestant].disappointedRepeat)
{
gContestResources->field_1c[contestant].unkC |= 1;
gContestResources->field_1c[contestant].unkE_2 = 1;
}
- if (gContestResources->field_4[contestant].nervous)
+ if (eContestantStatus[contestant].nervous)
gContestResources->field_1c[contestant].unkC |= 2;
if (!gContestResources->field_10->excitementFrozen
@@ -5311,37 +5431,37 @@ static void sub_80DF080(u8 contestant)
gContestResources->field_1c[contestant].unkC |= 4;
}
- if (gContestResources->field_4[contestant].unk15_6
- && gContestResources->field_4[contestant].unk16 != 0)
+ if (eContestantStatus[contestant].unk15_6
+ && eContestantStatus[contestant].unk16 != 0)
{
gContestResources->field_1c[contestant].unkC |= 8;
}
for (i = 0; i < 4; i++)
{
- if (i != contestant && gContestResources->field_4[i].jam != 0)
+ if (i != contestant && eContestantStatus[i].jam != 0)
{
gContestResources->field_1c[contestant].unkC |= 0x10;
gContestResources->field_1c[i].unkC |= 0x40;
}
}
- if (gContestResources->field_4[contestant].numTurnsSkipped != 0
- || gContestResources->field_4[contestant].noMoreTurns)
+ if (eContestantStatus[contestant].numTurnsSkipped != 0
+ || eContestantStatus[contestant].noMoreTurns)
{
gContestResources->field_1c[contestant].unkC |= 0x20;
}
- else if (!gContestResources->field_4[contestant].nervous)
+ else if (!eContestantStatus[contestant].nervous)
{
gContestResources->field_1c[contestant].unkC |= 0x80;
gContestResources->field_1c[contestant].unkE_1 = 1;
- gContestResources->field_1c[contestant].unk0[gContestResources->field_0->turnNumber] = gContestResources->field_4[contestant].currMove;
+ gContestResources->field_1c[contestant].unk0[eContest.turnNumber] = eContestantStatus[contestant].currMove;
}
- if (gContestResources->field_4[contestant].disappointedRepeat)
+ if (eContestantStatus[contestant].disappointedRepeat)
gContestResources->field_1c[contestant].unkD |= 2;
- if (gContestResources->field_0->applauseLevel == 4
+ if (eContest.applauseLevel == 4
&& !gContestResources->field_10->excitementFrozen
&& gContestResources->field_10->bits_0 < 0)
{
@@ -5373,7 +5493,7 @@ static void sub_80DF250(void)
}
gContestResources->field_1c[r1].unkD |= 1;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
if (i != var_38 && gUnknown_02039F08[var_38] - gUnknown_02039F08[i] <= 50)
gContestResources->field_1c[i].unkD |= 4;
@@ -5381,7 +5501,7 @@ static void sub_80DF250(void)
if (!gContestResources->field_1c[i].unkE_2)
gContestResources->field_1c[i].unkD |= 8;
- for (j = 0; j < 4; j++)
+ for (j = 0; j < CONTESTANT_COUNT; j++)
{
if (gContestMonConditions[i] < gContestMonConditions[j])
break;
@@ -5474,7 +5594,7 @@ static void sub_80DF4F8(void)
return;
r7 = 0;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
if (gContestFinalStandings[i] == 0)
r7 = i;
@@ -5482,7 +5602,7 @@ static void sub_80DF4F8(void)
r9 = 0;
r10 = 0;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
if (gContestMonConditions[r7] < gContestMonConditions[i])
r9++;
@@ -5526,7 +5646,7 @@ static void sub_80DF4F8(void)
}
r5 = 1;
- for (; i < 4; i++)
+ for (; i < CONTESTANT_COUNT; i++)
{
if (i != r7)
{
@@ -5561,32 +5681,32 @@ static void sub_80DF4F8(void)
}
// Unused
-void sub_80DF704(u8 arg0)
+void ContestDebugToggleBitfields(bool8 showUnkD)
{
- if (gHeap[0x1A000] == 0)
+ if (eContestDebugMode == CONTEST_DEBUG_MODE_OFF)
{
- if (arg0 == 0)
- gHeap[0x1A000] = 2;
+ if (!showUnkD)
+ eContestDebugMode = CONTEST_DEBUG_MODE_PRINT_UNK_C;
else
- gHeap[0x1A000] = 3;
+ eContestDebugMode = CONTEST_DEBUG_MODE_PRINT_UNK_D;
}
else
{
- gHeap[0x1A000] = 0;
+ eContestDebugMode = CONTEST_DEBUG_MODE_OFF;
}
- if (gHeap[0x1A000] == 0)
+ if (eContestDebugMode == CONTEST_DEBUG_MODE_OFF)
{
- sub_80DAEA4();
- sub_80DB2BC();
+ DrawContestantWindowText();
+ SwapMoveDescAndContestTilemaps();
}
else
{
- sub_80DF750();
+ ContestDebugPrintBitStrings();
}
}
-static void sub_80DF750(void)
+static void ContestDebugPrintBitStrings(void)
{
u8 i;
s8 j;
@@ -5595,20 +5715,21 @@ static void sub_80DF750(void)
u8 *txtPtr;
u32 bits;
- if (gUnknown_020322D5 == 0)
+ if (!gEnableContestDebugging)
return;
- if (gHeap[0x1A000] != 2 && gHeap[0x1A000] != 3)
+
+ if (eContestDebugMode != CONTEST_DEBUG_MODE_PRINT_UNK_C && eContestDebugMode != CONTEST_DEBUG_MODE_PRINT_UNK_D)
return;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
FillWindowPixelBuffer(i, PIXEL_FILL(0));
- if (gHeap[0x1A000] == 2)
+ if (eContestDebugMode == CONTEST_DEBUG_MODE_PRINT_UNK_C)
{
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
txtPtr = StringCopy(text1, gText_CDot);
- Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[i], text1, 5, 1, 7);
+ Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[i], text1, 5, 1, 7);
bits = gContestResources->field_1c[i].unkC;
for (j = 7; j > -1; j--) // Weird loop.
{
@@ -5620,13 +5741,13 @@ static void sub_80DF750(void)
text2[j] = text1[j];
text2[j] = EOS;
- Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[i], text2, 5, 1, 7);
- Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[i], text1 + j, 55, 1, 7);
+ Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[i], text2, 5, 1, 7);
+ Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[i], text1 + j, 55, 1, 7);
}
}
else
{
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CONTESTANT_COUNT; i++)
{
StringCopy(text1, gText_BDot);
bits = gContestResources->field_1c[i].unkD;
@@ -5641,11 +5762,11 @@ static void sub_80DF750(void)
text2[j] = text1[j];
text2[j] = EOS;
- Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[i], text2, 5, 1, 7);
- Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[i], text1 + j, 55, 1, 7);
+ Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[i], text2, 5, 1, 7);
+ Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[i], text1 + j, 55, 1, 7);
}
}
- sub_80DB2BC();
+ SwapMoveDescAndContestTilemaps();
}
static u8 sub_80DF940(u8 *nickname)
diff --git a/src/contest_ai.c b/src/contest_ai.c
index 97e8c8f29..723c503ab 100644
--- a/src/contest_ai.c
+++ b/src/contest_ai.c
@@ -6,29 +6,29 @@
#include "contest_effect.h"
extern const u8 *gAIScriptPtr;
-extern const u8 *gContestAIs[];
+extern const u8 *gContestAIChecks[];
-static void ContestAICmd_unk_00(void);
+static void ContestAICmd_score(void);
static void ContestAICmd_get_turn(void);
-static void ContestAICmd_unk_02(void);
-static void ContestAICmd_unk_03(void);
-static void ContestAICmd_unk_04(void);
-static void ContestAICmd_unk_05(void);
+static void ContestAICmd_if_turn_less_than(void);
+static void ContestAICmd_if_turn_more_than(void);
+static void ContestAICmd_if_turn_eq(void);
+static void ContestAICmd_if_turn_not_eq(void);
static void ContestAICmd_get_excitement(void);
-static void ContestAICmd_unk_07(void);
-static void ContestAICmd_unk_08(void);
-static void ContestAICmd_unk_09(void);
-static void ContestAICmd_unk_0A(void);
+static void ContestAICmd_if_excitement_less_than(void);
+static void ContestAICmd_if_excitement_more_than(void);
+static void ContestAICmd_if_excitement_eq(void);
+static void ContestAICmd_if_excitement_not_eq(void);
static void ContestAICmd_get_user_order(void);
-static void ContestAICmd_unk_0C(void);
-static void ContestAICmd_unk_0D(void);
-static void ContestAICmd_unk_0E(void);
-static void ContestAICmd_unk_0F(void);
-static void ContestAICmd_get_user_condition_maybe(void);
-static void ContestAICmd_unk_11(void);
-static void ContestAICmd_unk_12(void);
-static void ContestAICmd_unk_13(void);
-static void ContestAICmd_unk_14(void);
+static void ContestAICmd_if_user_order_less_than(void);
+static void ContestAICmd_if_user_order_more_than(void);
+static void ContestAICmd_if_user_order_eq(void);
+static void ContestAICmd_if_user_order_not_eq(void);
+static void ContestAICmd_get_user_condition(void);
+static void ContestAICmd_if_user_condition_less_than(void);
+static void ContestAICmd_if_user_condition_more_than(void);
+static void ContestAICmd_if_user_condition_eq(void);
+static void ContestAICmd_if_user_condition_not_eq(void);
static void ContestAICmd_unk_15(void);
static void ContestAICmd_unk_16(void);
static void ContestAICmd_unk_17(void);
@@ -40,21 +40,21 @@ static void ContestAICmd_unk_1C(void);
static void ContestAICmd_unk_1D(void);
static void ContestAICmd_unk_1E(void);
static void ContestAICmd_get_contest_type(void);
-static void ContestAICmd_unk_20(void);
-static void ContestAICmd_unk_21(void);
+static void ContestAICmd_if_contest_type_eq(void);
+static void ContestAICmd_if_contest_type_not_eq(void);
static void ContestAICmd_get_move_excitement(void);
-static void ContestAICmd_unk_23(void);
-static void ContestAICmd_unk_24(void);
-static void ContestAICmd_unk_25(void);
-static void ContestAICmd_unk_26(void);
+static void ContestAICmd_if_move_excitement_less_than(void);
+static void ContestAICmd_if_move_excitement_greater_than(void);
+static void ContestAICmd_if_move_excitement_eq(void);
+static void ContestAICmd_if_move_excitement_not_eq(void);
static void ContestAICmd_get_move_effect(void);
-static void ContestAICmd_unk_28(void);
-static void ContestAICmd_unk_29(void);
+static void ContestAICmd_if_move_effect_eq(void);
+static void ContestAICmd_if_move_effect_not_eq(void);
static void ContestAICmd_get_move_effect_type(void);
-static void ContestAICmd_unk_2B(void);
-static void ContestAICmd_unk_2C(void);
-static void ContestAICmd_check_move_has_highest_appeal(void);
-static void ContestAICmd_unk_2E(void);
+static void ContestAICmd_if_move_effect_type_eq(void);
+static void ContestAICmd_if_move_effect_type_not_eq(void);
+static void ContestAICmd_check_most_appealing_move(void);
+static void ContestAICmd_if_most_appealing_move(void);
static void ContestAICmd_unk_2F(void);
static void ContestAICmd_unk_30(void);
static void ContestAICmd_unk_31(void);
@@ -68,35 +68,35 @@ static void ContestAICmd_unk_38(void);
static void ContestAICmd_unk_39(void);
static void ContestAICmd_unk_3A(void);
static void ContestAICmd_get_move_used_count(void);
-static void ContestAICmd_unk_3C(void);
-static void ContestAICmd_unk_3D(void);
-static void ContestAICmd_unk_3E(void);
-static void ContestAICmd_unk_3F(void);
+static void ContestAICmd_if_most_used_count_less_than(void);
+static void ContestAICmd_if_most_used_count_more_than(void);
+static void ContestAICmd_if_most_used_count_eq(void);
+static void ContestAICmd_if_most_used_count_not_eq(void);
static void ContestAICmd_check_combo_starter(void);
-static void ContestAICmd_unk_41(void);
-static void ContestAICmd_unk_42(void);
+static void ContestAICmd_if_combo_starter(void);
+static void ContestAICmd_if_not_combo_starter(void);
static void ContestAICmd_check_combo_finisher(void);
-static void ContestAICmd_unk_44(void);
-static void ContestAICmd_unk_45(void);
+static void ContestAICmd_if_combo_finisher(void);
+static void ContestAICmd_if_not_combo_finisher(void);
static void ContestAICmd_check_would_finish_combo(void);
-static void ContestAICmd_unk_47(void);
-static void ContestAICmd_unk_48(void);
+static void ContestAICmd_if_would_finish_combo(void);
+static void ContestAICmd_if_would_not_finish_combo(void);
static void ContestAICmd_get_condition(void);
-static void ContestAICmd_unk_4A(void);
-static void ContestAICmd_unk_4B(void);
-static void ContestAICmd_unk_4C(void);
-static void ContestAICmd_unk_4D(void);
+static void ContestAICmd_if_condition_less_than(void);
+static void ContestAICmd_if_condition_more_than(void);
+static void ContestAICmd_if_condition_eq(void);
+static void ContestAICmd_if_condition_not_eq(void);
static void ContestAICmd_get_used_combo_starter(void);
-static void ContestAICmd_unk_4F(void);
-static void ContestAICmd_unk_50(void);
-static void ContestAICmd_unk_51(void);
-static void ContestAICmd_unk_52(void);
+static void ContestAICmd_if_used_combo_starter_less_than(void);
+static void ContestAICmd_if_used_combo_starter_more_than(void);
+static void ContestAICmd_if_used_combo_starter_eq(void);
+static void ContestAICmd_if_used_combo_starter_not_eq(void);
static void ContestAICmd_check_can_participate(void);
-static void ContestAICmd_unk_54(void);
-static void ContestAICmd_unk_55(void);
+static void ContestAICmd_if_can_participate(void);
+static void ContestAICmd_if_cannot_participate(void);
static void ContestAICmd_get_val_812A188(void);
static void ContestAICmd_unk_57(void);
-static void ContestAICmd_unk_58(void);
+static void ContestAICmd_contest_58(void);
static void ContestAICmd_unk_59(void);
static void ContestAICmd_unk_5A(void);
static void ContestAICmd_unk_5B(void);
@@ -133,158 +133,158 @@ static void ContestAICmd_unk_79(void);
static void ContestAICmd_unk_7A(void);
static void ContestAICmd_unk_7B(void);
static void ContestAICmd_unk_7C(void);
-static void ContestAICmd_unk_7D(void);
+static void ContestAICmd_if_random(void);
static void ContestAICmd_unk_7E(void);
-static void ContestAICmd_unk_7F(void);
-static void ContestAICmd_unk_80(void);
-static void ContestAICmd_unk_81(void);
-static void ContestAICmd_check_for_exciting_move(void);
-static void ContestAICmd_unk_83(void);
-static void ContestAICmd_unk_84(void);
+static void ContestAICmd_jump(void);
+static void ContestAICmd_call(void);
+static void ContestAICmd_end(void);
+static void ContestAICmd_check_user_has_exciting_move(void);
+static void ContestAICmd_if_user_has_exciting_move(void);
+static void ContestAICmd_if_user_doesnt_have_exciting_move(void);
static void ContestAICmd_unk_85(void);
static void ContestAICmd_unk_86(void);
-static void ContestAICmd_unk_87(void);
+static void ContestAICmd_if_effect_in_user_moveset(void);
typedef void (* ContestAICmdFunc)(void);
static const ContestAICmdFunc sContestAICmdTable[] =
{
- ContestAICmd_unk_00, // 0x00
- ContestAICmd_get_turn, // 0x01
- ContestAICmd_unk_02, // 0x02
- ContestAICmd_unk_03, // 0x03
- ContestAICmd_unk_04, // 0x04
- ContestAICmd_unk_05, // 0x05
- ContestAICmd_get_excitement, // 0x06
- ContestAICmd_unk_07, // 0x07
- ContestAICmd_unk_08, // 0x08
- ContestAICmd_unk_09, // 0x09
- ContestAICmd_unk_0A, // 0x0A
- ContestAICmd_get_user_order, // 0x0B
- ContestAICmd_unk_0C, // 0x0C
- ContestAICmd_unk_0D, // 0x0D
- ContestAICmd_unk_0E, // 0x0E
- ContestAICmd_unk_0F, // 0x0F
- ContestAICmd_get_user_condition_maybe, // 0x10
- ContestAICmd_unk_11, // 0x11
- ContestAICmd_unk_12, // 0x12
- ContestAICmd_unk_13, // 0x13
- ContestAICmd_unk_14, // 0x14
- ContestAICmd_unk_15, // 0x15
- ContestAICmd_unk_16, // 0x16
- ContestAICmd_unk_17, // 0x17
- ContestAICmd_unk_18, // 0x18
- ContestAICmd_unk_19, // 0x19
- ContestAICmd_unk_1A, // 0x1A
- ContestAICmd_unk_1B, // 0x1B
- ContestAICmd_unk_1C, // 0x1C
- ContestAICmd_unk_1D, // 0x1D
- ContestAICmd_unk_1E, // 0x1E
- ContestAICmd_get_contest_type, // 0x1F
- ContestAICmd_unk_20, // 0x20
- ContestAICmd_unk_21, // 0x21
- ContestAICmd_get_move_excitement, // 0x22
- ContestAICmd_unk_23, // 0x23
- ContestAICmd_unk_24, // 0x24
- ContestAICmd_unk_25, // 0x25
- ContestAICmd_unk_26, // 0x26
- ContestAICmd_get_move_effect, // 0x27
- ContestAICmd_unk_28, // 0x28
- ContestAICmd_unk_29, // 0x29
- ContestAICmd_get_move_effect_type, // 0x2A
- ContestAICmd_unk_2B, // 0x2B
- ContestAICmd_unk_2C, // 0x2C
- ContestAICmd_check_move_has_highest_appeal, // 0x2D
- ContestAICmd_unk_2E, // 0x2E
- ContestAICmd_unk_2F, // 0x2F
- ContestAICmd_unk_30, // 0x30
- ContestAICmd_unk_31, // 0x31
- ContestAICmd_unk_32, // 0x32
- ContestAICmd_unk_33, // 0x33
- ContestAICmd_unk_34, // 0x34
- ContestAICmd_unk_35, // 0x35
- ContestAICmd_unk_36, // 0x36
- ContestAICmd_unk_37, // 0x37
- ContestAICmd_unk_38, // 0x38
- ContestAICmd_unk_39, // 0x39
- ContestAICmd_unk_3A, // 0x3A
- ContestAICmd_get_move_used_count, // 0x3B
- ContestAICmd_unk_3C, // 0x3C
- ContestAICmd_unk_3D, // 0x3D
- ContestAICmd_unk_3E, // 0x3E
- ContestAICmd_unk_3F, // 0x3F
- ContestAICmd_check_combo_starter, // 0x40
- ContestAICmd_unk_41, // 0x41
- ContestAICmd_unk_42, // 0x42
- ContestAICmd_check_combo_finisher, // 0x43
- ContestAICmd_unk_44, // 0x44
- ContestAICmd_unk_45, // 0x45
- ContestAICmd_check_would_finish_combo, // 0x46
- ContestAICmd_unk_47, // 0x47
- ContestAICmd_unk_48, // 0x48
- ContestAICmd_get_condition, // 0x49
- ContestAICmd_unk_4A, // 0x4A
- ContestAICmd_unk_4B, // 0x4B
- ContestAICmd_unk_4C, // 0x4C
- ContestAICmd_unk_4D, // 0x4D
- ContestAICmd_get_used_combo_starter, // 0x4E
- ContestAICmd_unk_4F, // 0x4F
- ContestAICmd_unk_50, // 0x50
- ContestAICmd_unk_51, // 0x51
- ContestAICmd_unk_52, // 0x52
- ContestAICmd_check_can_participate, // 0x53
- ContestAICmd_unk_54, // 0x54
- ContestAICmd_unk_55, // 0x55
- ContestAICmd_get_val_812A188, // 0x56
- ContestAICmd_unk_57, // 0x57
- ContestAICmd_unk_58, // 0x58
- ContestAICmd_unk_59, // 0x59
- ContestAICmd_unk_5A, // 0x5A
- ContestAICmd_unk_5B, // 0x5B
- ContestAICmd_unk_5C, // 0x5C
- ContestAICmd_unk_5D, // 0x5D
- ContestAICmd_unk_5E, // 0x5E
- ContestAICmd_unk_5F, // 0x5F
- ContestAICmd_unk_60, // 0x60
- ContestAICmd_unk_61, // 0x61
- ContestAICmd_unk_62, // 0x62
- ContestAICmd_unk_63, // 0x63
- ContestAICmd_unk_64, // 0x64
- ContestAICmd_unk_65, // 0x65
- ContestAICmd_unk_66, // 0x66
- ContestAICmd_unk_67, // 0x67
- ContestAICmd_unk_68, // 0x68
- ContestAICmd_unk_69, // 0x69
- ContestAICmd_unk_6A, // 0x6A
- ContestAICmd_unk_6B, // 0x6B
- ContestAICmd_unk_6C, // 0x6C
- ContestAICmd_unk_6D, // 0x6D
- ContestAICmd_unk_6E, // 0x6E
- ContestAICmd_unk_6F, // 0x6F
- ContestAICmd_unk_70, // 0x70
- ContestAICmd_unk_71, // 0x71
- ContestAICmd_unk_72, // 0x72
- ContestAICmd_unk_73, // 0x73
- ContestAICmd_unk_74, // 0x74
- ContestAICmd_unk_75, // 0x75
- ContestAICmd_unk_76, // 0x76
- ContestAICmd_unk_77, // 0x77
- ContestAICmd_unk_78, // 0x78
- ContestAICmd_unk_79, // 0x79
- ContestAICmd_unk_7A, // 0x7A
- ContestAICmd_unk_7B, // 0x7B
- ContestAICmd_unk_7C, // 0x7C
- ContestAICmd_unk_7D, // 0x7D
- ContestAICmd_unk_7E, // 0x7E
- ContestAICmd_unk_7F, // 0x7F
- ContestAICmd_unk_80, // 0x80
- ContestAICmd_unk_81, // 0x81
- ContestAICmd_check_for_exciting_move, // 0x82
- ContestAICmd_unk_83, // 0x83
- ContestAICmd_unk_84, // 0x84
- ContestAICmd_unk_85, // 0x85
- ContestAICmd_unk_86, // 0x86
- ContestAICmd_unk_87, // 0x87
+ ContestAICmd_score, // 0x00
+ ContestAICmd_get_turn, // 0x01
+ ContestAICmd_if_turn_less_than, // 0x02
+ ContestAICmd_if_turn_more_than, // 0x03
+ ContestAICmd_if_turn_eq, // 0x04
+ ContestAICmd_if_turn_not_eq, // 0x05
+ ContestAICmd_get_excitement, // 0x06
+ ContestAICmd_if_excitement_less_than, // 0x07
+ ContestAICmd_if_excitement_more_than, // 0x08
+ ContestAICmd_if_excitement_eq, // 0x09
+ ContestAICmd_if_excitement_not_eq, // 0x0A
+ ContestAICmd_get_user_order, // 0x0B
+ ContestAICmd_if_user_order_less_than, // 0x0C
+ ContestAICmd_if_user_order_more_than, // 0x0D
+ ContestAICmd_if_user_order_eq, // 0x0E
+ ContestAICmd_if_user_order_not_eq, // 0x0F
+ ContestAICmd_get_user_condition, // 0x10
+ ContestAICmd_if_user_condition_less_than, // 0x11
+ ContestAICmd_if_user_condition_more_than, // 0x12
+ ContestAICmd_if_user_condition_eq, // 0x13
+ ContestAICmd_if_user_condition_not_eq, // 0x14
+ ContestAICmd_unk_15, // 0x15
+ ContestAICmd_unk_16, // 0x16
+ ContestAICmd_unk_17, // 0x17
+ ContestAICmd_unk_18, // 0x18
+ ContestAICmd_unk_19, // 0x19
+ ContestAICmd_unk_1A, // 0x1A
+ ContestAICmd_unk_1B, // 0x1B
+ ContestAICmd_unk_1C, // 0x1C
+ ContestAICmd_unk_1D, // 0x1D
+ ContestAICmd_unk_1E, // 0x1E
+ ContestAICmd_get_contest_type, // 0x1F
+ ContestAICmd_if_contest_type_eq, // 0x20
+ ContestAICmd_if_contest_type_not_eq, // 0x21
+ ContestAICmd_get_move_excitement, // 0x22
+ ContestAICmd_if_move_excitement_less_than, // 0x23
+ ContestAICmd_if_move_excitement_greater_than, // 0x24
+ ContestAICmd_if_move_excitement_eq, // 0x25
+ ContestAICmd_if_move_excitement_not_eq, // 0x26
+ ContestAICmd_get_move_effect, // 0x27
+ ContestAICmd_if_move_effect_eq, // 0x28
+ ContestAICmd_if_move_effect_not_eq, // 0x29
+ ContestAICmd_get_move_effect_type, // 0x2A
+ ContestAICmd_if_move_effect_type_eq, // 0x2B
+ ContestAICmd_if_move_effect_type_not_eq, // 0x2C
+ ContestAICmd_check_most_appealing_move, // 0x2D
+ ContestAICmd_if_most_appealing_move, // 0x2E
+ ContestAICmd_unk_2F, // 0x2F
+ ContestAICmd_unk_30, // 0x30
+ ContestAICmd_unk_31, // 0x31
+ ContestAICmd_unk_32, // 0x32
+ ContestAICmd_unk_33, // 0x33
+ ContestAICmd_unk_34, // 0x34
+ ContestAICmd_unk_35, // 0x35
+ ContestAICmd_unk_36, // 0x36
+ ContestAICmd_unk_37, // 0x37
+ ContestAICmd_unk_38, // 0x38
+ ContestAICmd_unk_39, // 0x39
+ ContestAICmd_unk_3A, // 0x3A
+ ContestAICmd_get_move_used_count, // 0x3B
+ ContestAICmd_if_most_used_count_less_than, // 0x3C
+ ContestAICmd_if_most_used_count_more_than, // 0x3D
+ ContestAICmd_if_most_used_count_eq, // 0x3E
+ ContestAICmd_if_most_used_count_not_eq, // 0x3F
+ ContestAICmd_check_combo_starter, // 0x40
+ ContestAICmd_if_combo_starter, // 0x41
+ ContestAICmd_if_not_combo_starter, // 0x42
+ ContestAICmd_check_combo_finisher, // 0x43
+ ContestAICmd_if_combo_finisher, // 0x44
+ ContestAICmd_if_not_combo_finisher, // 0x45
+ ContestAICmd_check_would_finish_combo, // 0x46
+ ContestAICmd_if_would_finish_combo, // 0x47
+ ContestAICmd_if_would_not_finish_combo, // 0x48
+ ContestAICmd_get_condition, // 0x49
+ ContestAICmd_if_condition_less_than, // 0x4A
+ ContestAICmd_if_condition_more_than, // 0x4B
+ ContestAICmd_if_condition_eq, // 0x4C
+ ContestAICmd_if_condition_not_eq, // 0x4D
+ ContestAICmd_get_used_combo_starter, // 0x4E
+ ContestAICmd_if_used_combo_starter_less_than, // 0x4F
+ ContestAICmd_if_used_combo_starter_more_than, // 0x50
+ ContestAICmd_if_used_combo_starter_eq, // 0x51
+ ContestAICmd_if_used_combo_starter_not_eq, // 0x52
+ ContestAICmd_check_can_participate, // 0x53
+ ContestAICmd_if_can_participate, // 0x54
+ ContestAICmd_if_cannot_participate, // 0x55
+ ContestAICmd_get_val_812A188, // 0x56
+ ContestAICmd_unk_57, // 0x57
+ ContestAICmd_contest_58, // 0x58
+ ContestAICmd_unk_59, // 0x59
+ ContestAICmd_unk_5A, // 0x5A
+ ContestAICmd_unk_5B, // 0x5B
+ ContestAICmd_unk_5C, // 0x5C
+ ContestAICmd_unk_5D, // 0x5D
+ ContestAICmd_unk_5E, // 0x5E
+ ContestAICmd_unk_5F, // 0x5F
+ ContestAICmd_unk_60, // 0x60
+ ContestAICmd_unk_61, // 0x61
+ ContestAICmd_unk_62, // 0x62
+ ContestAICmd_unk_63, // 0x63
+ ContestAICmd_unk_64, // 0x64
+ ContestAICmd_unk_65, // 0x65
+ ContestAICmd_unk_66, // 0x66
+ ContestAICmd_unk_67, // 0x67
+ ContestAICmd_unk_68, // 0x68
+ ContestAICmd_unk_69, // 0x69
+ ContestAICmd_unk_6A, // 0x6A
+ ContestAICmd_unk_6B, // 0x6B
+ ContestAICmd_unk_6C, // 0x6C
+ ContestAICmd_unk_6D, // 0x6D
+ ContestAICmd_unk_6E, // 0x6E
+ ContestAICmd_unk_6F, // 0x6F
+ ContestAICmd_unk_70, // 0x70
+ ContestAICmd_unk_71, // 0x71
+ ContestAICmd_unk_72, // 0x72
+ ContestAICmd_unk_73, // 0x73
+ ContestAICmd_unk_74, // 0x74
+ ContestAICmd_unk_75, // 0x75
+ ContestAICmd_unk_76, // 0x76
+ ContestAICmd_unk_77, // 0x77
+ ContestAICmd_unk_78, // 0x78
+ ContestAICmd_unk_79, // 0x79
+ ContestAICmd_unk_7A, // 0x7A
+ ContestAICmd_unk_7B, // 0x7B
+ ContestAICmd_unk_7C, // 0x7C
+ ContestAICmd_if_random, // 0x7D
+ ContestAICmd_unk_7E, // 0x7E
+ ContestAICmd_jump, // 0x7F
+ ContestAICmd_call, // 0x80
+ ContestAICmd_end, // 0x81
+ ContestAICmd_check_user_has_exciting_move, // 0x82
+ ContestAICmd_if_user_has_exciting_move, // 0x83
+ ContestAICmd_if_user_doesnt_have_exciting_move, // 0x84
+ ContestAICmd_unk_85, // 0x85
+ ContestAICmd_unk_86, // 0x86
+ ContestAICmd_if_effect_in_user_moveset, // 0x87
};
static void ContestAI_DoAIProcessing(void);
@@ -295,38 +295,38 @@ static u8 AIStackPop(void);
void ContestAI_ResetAI(u8 contestantAI)
{
int i;
- memset(eContestAI, 0, sizeof(struct ContestAIInfo));
+ memset(&eContestAI, 0, sizeof(struct ContestAIInfo));
for (i = 0; i < 4; i++)
- eContestAI->unk5[i] = 100;
+ eContestAI.unk5[i] = 100;
- eContestAI->contestantId = contestantAI;
- eContestAI->stackSize = 0;
- eContestAI->flags = gContestMons[eContestAI->contestantId].flags;
+ eContestAI.contestantId = contestantAI;
+ eContestAI.stackSize = 0;
+ eContestAI.aiChecks = gContestMons[eContestAI.contestantId].aiChecks;
}
u8 ContestAI_GetActionToUse(void)
{
- while (eContestAI->flags != 0)
+ while (eContestAI.aiChecks != 0)
{
- if (eContestAI->flags & 1)
+ if (eContestAI.aiChecks & 1)
{
- eContestAI->aiState = 0;
+ eContestAI.aiState = CONTESTAI_SETTING_UP;
ContestAI_DoAIProcessing();
}
- eContestAI->flags >>= 1;
- eContestAI->unk10++;
- eContestAI->unk4 = 0;
+ eContestAI.aiChecks >>= 1;
+ eContestAI.currentAICheck++;
+ eContestAI.nextMoveIndex = 0;
}
while (1)
{
u8 rval = Random() & 3;
- u8 r2 = eContestAI->unk5[rval];
+ u8 r2 = eContestAI.unk5[rval];
int i;
for (i = 0; i < 4; i++)
{
- if (r2 < eContestAI->unk5[i])
+ if (r2 < eContestAI.unk5[i])
break;
}
if (i == 4)
@@ -336,37 +336,40 @@ u8 ContestAI_GetActionToUse(void)
static void ContestAI_DoAIProcessing(void)
{
- while (eContestAI->aiState != CONTESTAI_FINISHED)
+ while (eContestAI.aiState != CONTESTAI_FINISHED)
{
- switch(eContestAI->aiState)
+ switch(eContestAI.aiState)
{
case CONTESTAI_DO_NOT_PROCESS:
break;
case CONTESTAI_SETTING_UP:
- gAIScriptPtr = gContestAIs[eContestAI->unk10];
+ gAIScriptPtr = gContestAIChecks[eContestAI.currentAICheck];
- if (gContestMons[eContestAI->contestantId].moves[eContestAI->unk4] == 0)
- eContestAI->unk2 = 0; // don't process a move that doesn't exist.
+ if (gContestMons[eContestAI.contestantId].moves[eContestAI.nextMoveIndex] == 0)
+ eContestAI.nextMove = 0; // don't process a move that doesn't exist.
else
- eContestAI->unk2 = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4];
- eContestAI->aiState++;
+ eContestAI.nextMove = gContestMons[eContestAI.contestantId].moves[eContestAI.nextMoveIndex];
+ eContestAI.aiState++;
break;
case CONTESTAI_PROCESSING:
- if (eContestAI->unk2 != 0)
+ if (eContestAI.nextMove != 0)
+ {
sContestAICmdTable[*gAIScriptPtr](); // run the command.
+ }
else
{
- eContestAI->unk5[eContestAI->unk4] = 0; // don't consider a move that doesn't exist.
- eContestAI->aiAction |= 1;
+ eContestAI.unk5[eContestAI.nextMoveIndex] = 0; // don't consider a move that doesn't exist.
+ eContestAI.aiAction |= 1;
}
- if (eContestAI->aiAction & 1)
+ if (eContestAI.aiAction & 1)
{
- eContestAI->unk4++;
- if (eContestAI->unk4 < 4)
- eContestAI->aiState = 0;
+ eContestAI.nextMoveIndex++;
+ if (eContestAI.nextMoveIndex < 4)
+ eContestAI.aiState = 0;
else
- eContestAI->aiState++;
- eContestAI->aiAction &= 0xFE; // TODO: Define action flags
+ // aiState = CONTESTAI_FINISHED
+ eContestAI.aiState++;
+ eContestAI.aiAction &= 0xFE; // TODO: Define action flags
}
break;
}
@@ -378,67 +381,67 @@ static u8 sub_81563B0(u8 var)
int i;
for (i = 0; i < 4; i++)
- if (shared192D0.turnOrder[i] == var)
+ if (eContestResources8.turnOrder[i] == var)
break;
return i;
}
-static void ContestAICmd_unk_00(void)
+static void ContestAICmd_score(void)
{
- s16 score = eContestAI->unk5[eContestAI->unk4] + (s8)gAIScriptPtr[1];
+ s16 score = eContestAI.unk5[eContestAI.nextMoveIndex] + (s8)gAIScriptPtr[1];
if (score > 255)
score = 255;
else if (score < 0)
score = 0;
- eContestAI->unk5[eContestAI->unk4] = score;
+ eContestAI.unk5[eContestAI.nextMoveIndex] = score;
gAIScriptPtr += 2;
}
static void ContestAICmd_get_turn(void)
{
- eContestAI->scriptResult = sContest.turnNumber;
+ eContestAI.scriptResult = eContest.turnNumber;
gAIScriptPtr += 1;
}
-static void ContestAICmd_unk_02(void)
+static void ContestAICmd_if_turn_less_than(void)
{
ContestAICmd_get_turn();
- if (eContestAI->scriptResult < gAIScriptPtr[0])
+ if (eContestAI.scriptResult < gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_03(void)
+static void ContestAICmd_if_turn_more_than(void)
{
ContestAICmd_get_turn();
- if (eContestAI->scriptResult > gAIScriptPtr[0])
+ if (eContestAI.scriptResult > gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_04(void)
+static void ContestAICmd_if_turn_eq(void)
{
ContestAICmd_get_turn();
- if (eContestAI->scriptResult == gAIScriptPtr[0])
+ if (eContestAI.scriptResult == gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_05(void)
+static void ContestAICmd_if_turn_not_eq(void)
{
ContestAICmd_get_turn();
- if (eContestAI->scriptResult != gAIScriptPtr[0])
+ if (eContestAI.scriptResult != gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -446,45 +449,45 @@ static void ContestAICmd_unk_05(void)
static void ContestAICmd_get_excitement(void)
{
- eContestAI->scriptResult = sContest.applauseLevel;
+ eContestAI.scriptResult = eContest.applauseLevel;
gAIScriptPtr += 1;
}
-static void ContestAICmd_unk_07(void)
+static void ContestAICmd_if_excitement_less_than(void)
{
ContestAICmd_get_excitement();
- if (eContestAI->scriptResult < gAIScriptPtr[0])
+ if (eContestAI.scriptResult < gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_08(void)
+static void ContestAICmd_if_excitement_more_than(void)
{
ContestAICmd_get_excitement();
- if (eContestAI->scriptResult > gAIScriptPtr[0])
+ if (eContestAI.scriptResult > gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_09(void)
+static void ContestAICmd_if_excitement_eq(void)
{
ContestAICmd_get_excitement();
- if (eContestAI->scriptResult == gAIScriptPtr[0])
+ if (eContestAI.scriptResult == gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_0A(void)
+static void ContestAICmd_if_excitement_not_eq(void)
{
ContestAICmd_get_excitement();
- if (eContestAI->scriptResult != gAIScriptPtr[0])
+ if (eContestAI.scriptResult != gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -492,91 +495,91 @@ static void ContestAICmd_unk_0A(void)
static void ContestAICmd_get_user_order(void)
{
- eContestAI->scriptResult = shared192D0.turnOrder[eContestAI->contestantId];
+ eContestAI.scriptResult = eContestResources8.turnOrder[eContestAI.contestantId];
gAIScriptPtr += 1;
}
-static void ContestAICmd_unk_0C(void)
+static void ContestAICmd_if_user_order_less_than(void)
{
ContestAICmd_get_user_order();
- if (eContestAI->scriptResult < gAIScriptPtr[0])
+ if (eContestAI.scriptResult < gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_0D(void)
+static void ContestAICmd_if_user_order_more_than(void)
{
ContestAICmd_get_user_order();
- if (eContestAI->scriptResult > gAIScriptPtr[0])
+ if (eContestAI.scriptResult > gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_0E(void)
+static void ContestAICmd_if_user_order_eq(void)
{
ContestAICmd_get_user_order();
- if (eContestAI->scriptResult == gAIScriptPtr[0])
+ if (eContestAI.scriptResult == gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_0F(void)
+static void ContestAICmd_if_user_order_not_eq(void)
{
ContestAICmd_get_user_order();
- if (eContestAI->scriptResult != gAIScriptPtr[0])
+ if (eContestAI.scriptResult != gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_get_user_condition_maybe(void)
+static void ContestAICmd_get_user_condition(void)
{
- eContestAI->scriptResult = sContestantStatus[eContestAI->contestantId].condition / 10;
+ eContestAI.scriptResult = eContestantStatus[eContestAI.contestantId].condition / 10;
gAIScriptPtr += 1;
}
-static void ContestAICmd_unk_11(void)
+static void ContestAICmd_if_user_condition_less_than(void)
{
- ContestAICmd_get_user_condition_maybe();
+ ContestAICmd_get_user_condition();
- if (eContestAI->scriptResult < gAIScriptPtr[0])
+ if (eContestAI.scriptResult < gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_12(void)
+static void ContestAICmd_if_user_condition_more_than(void)
{
- ContestAICmd_get_user_condition_maybe();
+ ContestAICmd_get_user_condition();
- if (eContestAI->scriptResult > gAIScriptPtr[0])
+ if (eContestAI.scriptResult > gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_13(void)
+static void ContestAICmd_if_user_condition_eq(void)
{
- ContestAICmd_get_user_condition_maybe();
+ ContestAICmd_get_user_condition();
- if (eContestAI->scriptResult == gAIScriptPtr[0])
+ if (eContestAI.scriptResult == gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_14(void)
+static void ContestAICmd_if_user_condition_not_eq(void)
{
- ContestAICmd_get_user_condition_maybe();
+ ContestAICmd_get_user_condition();
- if (eContestAI->scriptResult != gAIScriptPtr[0])
+ if (eContestAI.scriptResult != gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -584,7 +587,7 @@ static void ContestAICmd_unk_14(void)
static void ContestAICmd_unk_15(void)
{
- eContestAI->scriptResult = sContestantStatus[eContestAI->contestantId].unk4;
+ eContestAI.scriptResult = eContestantStatus[eContestAI.contestantId].pointTotal;
gAIScriptPtr += 1;
}
@@ -592,7 +595,7 @@ static void ContestAICmd_unk_16(void)
{
ContestAICmd_unk_15();
- if (eContestAI->scriptResult < (s16)T1_READ_16(gAIScriptPtr + 0))
+ if (eContestAI.scriptResult < (s16)T1_READ_16(gAIScriptPtr + 0))
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -602,7 +605,7 @@ static void ContestAICmd_unk_17(void)
{
ContestAICmd_unk_15();
- if (eContestAI->scriptResult > (s16)T1_READ_16(gAIScriptPtr + 0))
+ if (eContestAI.scriptResult > (s16)T1_READ_16(gAIScriptPtr + 0))
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -612,7 +615,7 @@ static void ContestAICmd_unk_18(void)
{
ContestAICmd_unk_15();
- if (eContestAI->scriptResult == (s16)T1_READ_16(gAIScriptPtr + 0))
+ if (eContestAI.scriptResult == (s16)T1_READ_16(gAIScriptPtr + 0))
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -622,7 +625,7 @@ static void ContestAICmd_unk_19(void)
{
ContestAICmd_unk_15();
- if (eContestAI->scriptResult != (s16)T1_READ_16(gAIScriptPtr + 0))
+ if (eContestAI.scriptResult != (s16)T1_READ_16(gAIScriptPtr + 0))
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -630,7 +633,7 @@ static void ContestAICmd_unk_19(void)
static void ContestAICmd_unk_1A(void)
{
- eContestAI->scriptResult = gContestMonConditions[eContestAI->contestantId];
+ eContestAI.scriptResult = gContestMonConditions[eContestAI.contestantId];
gAIScriptPtr += 1;
}
@@ -638,7 +641,7 @@ static void ContestAICmd_unk_1B(void)
{
ContestAICmd_unk_1A();
- if (eContestAI->scriptResult < (s16)T1_READ_16(gAIScriptPtr + 0))
+ if (eContestAI.scriptResult < (s16)T1_READ_16(gAIScriptPtr + 0))
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -648,7 +651,7 @@ static void ContestAICmd_unk_1C(void)
{
ContestAICmd_unk_1A();
- if (eContestAI->scriptResult > (s16)T1_READ_16(gAIScriptPtr + 0))
+ if (eContestAI.scriptResult > (s16)T1_READ_16(gAIScriptPtr + 0))
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -658,7 +661,7 @@ static void ContestAICmd_unk_1D(void)
{
ContestAICmd_unk_1A();
- if (eContestAI->scriptResult == (s16)T1_READ_16(gAIScriptPtr + 0))
+ if (eContestAI.scriptResult == (s16)T1_READ_16(gAIScriptPtr + 0))
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -668,7 +671,7 @@ static void ContestAICmd_unk_1E(void)
{
ContestAICmd_unk_1A();
- if (eContestAI->scriptResult != (s16)T1_READ_16(gAIScriptPtr + 0))
+ if (eContestAI.scriptResult != (s16)T1_READ_16(gAIScriptPtr + 0))
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -676,25 +679,25 @@ static void ContestAICmd_unk_1E(void)
static void ContestAICmd_get_contest_type(void)
{
- eContestAI->scriptResult = gSpecialVar_ContestCategory;
+ eContestAI.scriptResult = gSpecialVar_ContestCategory;
gAIScriptPtr += 1;
}
-static void ContestAICmd_unk_20(void)
+static void ContestAICmd_if_contest_type_eq(void)
{
ContestAICmd_get_contest_type();
- if (eContestAI->scriptResult == gAIScriptPtr[0])
+ if (eContestAI.scriptResult == gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_21(void)
+static void ContestAICmd_if_contest_type_not_eq(void)
{
ContestAICmd_get_contest_type();
- if (eContestAI->scriptResult != gAIScriptPtr[0])
+ if (eContestAI.scriptResult != gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -702,45 +705,45 @@ static void ContestAICmd_unk_21(void)
static void ContestAICmd_get_move_excitement(void)
{
- eContestAI->scriptResult = Contest_GetMoveExcitement(gContestMons[eContestAI->contestantId].moves[eContestAI->unk4]);
+ eContestAI.scriptResult = Contest_GetMoveExcitement(gContestMons[eContestAI.contestantId].moves[eContestAI.nextMoveIndex]);
gAIScriptPtr += 1;
}
-static void ContestAICmd_unk_23(void)
+static void ContestAICmd_if_move_excitement_less_than(void)
{
ContestAICmd_get_move_excitement();
- if (eContestAI->scriptResult < (s8)gAIScriptPtr[0])
+ if (eContestAI.scriptResult < (s8)gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_24(void)
+static void ContestAICmd_if_move_excitement_greater_than(void)
{
ContestAICmd_get_move_excitement();
- if (eContestAI->scriptResult > (s8)gAIScriptPtr[0])
+ if (eContestAI.scriptResult > (s8)gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_25(void)
+static void ContestAICmd_if_move_excitement_eq(void)
{
ContestAICmd_get_move_excitement();
- if (eContestAI->scriptResult == (s8)gAIScriptPtr[0])
+ if (eContestAI.scriptResult == (s8)gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_26(void)
+static void ContestAICmd_if_move_excitement_not_eq(void)
{
ContestAICmd_get_move_excitement();
- if (eContestAI->scriptResult != (s8)gAIScriptPtr[0])
+ if (eContestAI.scriptResult != (s8)gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -748,27 +751,27 @@ static void ContestAICmd_unk_26(void)
static void ContestAICmd_get_move_effect(void)
{
- u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4];
+ u16 move = gContestMons[eContestAI.contestantId].moves[eContestAI.nextMoveIndex];
- eContestAI->scriptResult = gContestMoves[move].effect;
+ eContestAI.scriptResult = gContestMoves[move].effect;
gAIScriptPtr += 1;
}
-static void ContestAICmd_unk_28(void)
+static void ContestAICmd_if_move_effect_eq(void)
{
ContestAICmd_get_move_effect();
- if (eContestAI->scriptResult == gAIScriptPtr[0])
+ if (eContestAI.scriptResult == gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_29(void)
+static void ContestAICmd_if_move_effect_not_eq(void)
{
ContestAICmd_get_move_effect();
- if (eContestAI->scriptResult != gAIScriptPtr[0])
+ if (eContestAI.scriptResult != gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -776,58 +779,58 @@ static void ContestAICmd_unk_29(void)
static void ContestAICmd_get_move_effect_type(void)
{
- u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4];
+ u16 move = gContestMons[eContestAI.contestantId].moves[eContestAI.nextMoveIndex];
- eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].effectType;
+ eContestAI.scriptResult = gContestEffects[gContestMoves[move].effect].effectType;
gAIScriptPtr += 1;
}
-static void ContestAICmd_unk_2B(void)
+static void ContestAICmd_if_move_effect_type_eq(void)
{
ContestAICmd_get_move_effect_type();
- if (eContestAI->scriptResult == gAIScriptPtr[0])
+ if (eContestAI.scriptResult == gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_2C(void)
+static void ContestAICmd_if_move_effect_type_not_eq(void)
{
ContestAICmd_get_move_effect_type();
- if (eContestAI->scriptResult != gAIScriptPtr[0])
+ if (eContestAI.scriptResult != gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_check_move_has_highest_appeal(void)
+static void ContestAICmd_check_most_appealing_move(void)
{
int i;
- u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4];
+ u16 move = gContestMons[eContestAI.contestantId].moves[eContestAI.nextMoveIndex];
u8 appeal = gContestEffects[gContestMoves[move].effect].appeal;
for (i = 0; i < MAX_MON_MOVES; i++)
{
- u16 newMove = gContestMons[eContestAI->contestantId].moves[i];
+ u16 newMove = gContestMons[eContestAI.contestantId].moves[i];
if (newMove != 0 && appeal < gContestEffects[gContestMoves[newMove].effect].appeal)
break;
}
if (i == MAX_MON_MOVES)
- eContestAI->scriptResult = TRUE;
+ eContestAI.scriptResult = TRUE;
else
- eContestAI->scriptResult = FALSE;
+ eContestAI.scriptResult = FALSE;
gAIScriptPtr += 1;
}
-static void ContestAICmd_unk_2E(void)
+static void ContestAICmd_if_most_appealing_move(void)
{
- ContestAICmd_check_move_has_highest_appeal();
+ ContestAICmd_check_most_appealing_move();
- if (eContestAI->scriptResult != FALSE)
+ if (eContestAI.scriptResult != FALSE)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
@@ -836,20 +839,20 @@ static void ContestAICmd_unk_2E(void)
static void ContestAICmd_unk_2F(void)
{
int i;
- u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4];
+ u16 move = gContestMons[eContestAI.contestantId].moves[eContestAI.nextMoveIndex];
u8 jam = gContestEffects[gContestMoves[move].effect].jam;
for (i = 0; i < MAX_MON_MOVES; i++)
{
- u16 newMove = gContestMons[eContestAI->contestantId].moves[i];
+ u16 newMove = gContestMons[eContestAI.contestantId].moves[i];
if (newMove != 0 && jam < gContestEffects[gContestMoves[newMove].effect].jam)
break;
}
if (i == MAX_MON_MOVES)
- eContestAI->scriptResult = TRUE;
+ eContestAI.scriptResult = TRUE;
else
- eContestAI->scriptResult = FALSE;
+ eContestAI.scriptResult = FALSE;
gAIScriptPtr += 1;
}
@@ -858,7 +861,7 @@ static void ContestAICmd_unk_30(void)
{
ContestAICmd_unk_2F();
- if (eContestAI->scriptResult != FALSE)
+ if (eContestAI.scriptResult != FALSE)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -866,9 +869,9 @@ static void ContestAICmd_unk_30(void)
static void ContestAICmd_unk_31(void)
{
- u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4];
+ u16 move = gContestMons[eContestAI.contestantId].moves[eContestAI.nextMoveIndex];
- eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].appeal / 10;
+ eContestAI.scriptResult = gContestEffects[gContestMoves[move].effect].appeal / 10;
gAIScriptPtr += 1;
}
@@ -876,7 +879,7 @@ static void ContestAICmd_unk_32(void)
{
ContestAICmd_unk_31();
- if (eContestAI->scriptResult < gAIScriptPtr[0])
+ if (eContestAI.scriptResult < gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -886,7 +889,7 @@ static void ContestAICmd_unk_33(void)
{
ContestAICmd_unk_31();
- if (eContestAI->scriptResult > gAIScriptPtr[0])
+ if (eContestAI.scriptResult > gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -896,7 +899,7 @@ static void ContestAICmd_unk_34(void)
{
ContestAICmd_unk_31();
- if (eContestAI->scriptResult == gAIScriptPtr[0])
+ if (eContestAI.scriptResult == gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -906,7 +909,7 @@ static void ContestAICmd_unk_35(void)
{
ContestAICmd_unk_31();
- if (eContestAI->scriptResult != gAIScriptPtr[0])
+ if (eContestAI.scriptResult != gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -914,9 +917,9 @@ static void ContestAICmd_unk_35(void)
static void ContestAICmd_unk_36(void)
{
- u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4];
+ u16 move = gContestMons[eContestAI.contestantId].moves[eContestAI.nextMoveIndex];
- eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].jam / 10;
+ eContestAI.scriptResult = gContestEffects[gContestMoves[move].effect].jam / 10;
gAIScriptPtr += 1;
}
@@ -924,7 +927,7 @@ static void ContestAICmd_unk_37(void)
{
ContestAICmd_unk_36();
- if (eContestAI->scriptResult < gAIScriptPtr[0])
+ if (eContestAI.scriptResult < gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -934,7 +937,7 @@ static void ContestAICmd_unk_38(void)
{
ContestAICmd_unk_36();
- if (eContestAI->scriptResult > gAIScriptPtr[0])
+ if (eContestAI.scriptResult > gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -944,7 +947,7 @@ static void ContestAICmd_unk_39(void)
{
ContestAICmd_unk_36();
- if (eContestAI->scriptResult == gAIScriptPtr[0])
+ if (eContestAI.scriptResult == gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -954,7 +957,7 @@ static void ContestAICmd_unk_3A(void)
{
ContestAICmd_unk_36();
- if (eContestAI->scriptResult != gAIScriptPtr[0])
+ if (eContestAI.scriptResult != gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -963,52 +966,52 @@ static void ContestAICmd_unk_3A(void)
static void ContestAICmd_get_move_used_count(void)
{
s16 result;
- u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4];
+ u16 move = gContestMons[eContestAI.contestantId].moves[eContestAI.nextMoveIndex];
- if (move != sContestantStatus[eContestAI->contestantId].prevMove)
+ if (move != eContestantStatus[eContestAI.contestantId].prevMove)
result = 0; // move is unique and not reused.
else
- result = sContestantStatus[eContestAI->contestantId].moveRepeatCount + 1;
+ result = eContestantStatus[eContestAI.contestantId].moveRepeatCount + 1;
- eContestAI->scriptResult = result;
+ eContestAI.scriptResult = result;
gAIScriptPtr += 1;
}
-static void ContestAICmd_unk_3C(void)
+static void ContestAICmd_if_most_used_count_less_than(void)
{
ContestAICmd_get_move_used_count();
- if (eContestAI->scriptResult < gAIScriptPtr[0])
+ if (eContestAI.scriptResult < gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_3D(void)
+static void ContestAICmd_if_most_used_count_more_than(void)
{
ContestAICmd_get_move_used_count();
- if (eContestAI->scriptResult > gAIScriptPtr[0])
+ if (eContestAI.scriptResult > gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_3E(void)
+static void ContestAICmd_if_most_used_count_eq(void)
{
ContestAICmd_get_move_used_count();
- if (eContestAI->scriptResult == gAIScriptPtr[0])
+ if (eContestAI.scriptResult == gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_3F(void)
+static void ContestAICmd_if_most_used_count_not_eq(void)
{
ContestAICmd_get_move_used_count();
- if (eContestAI->scriptResult != gAIScriptPtr[0])
+ if (eContestAI.scriptResult != gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -1018,13 +1021,13 @@ static void ContestAICmd_check_combo_starter(void)
{
u8 result = 0;
int i;
- u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4];
+ u16 move = gContestMons[eContestAI.contestantId].moves[eContestAI.nextMoveIndex];
for (i = 0; i < MAX_MON_MOVES; i++)
{
- if (gContestMons[eContestAI->contestantId].moves[i])
+ if (gContestMons[eContestAI.contestantId].moves[i])
{
- result = AreMovesContestCombo(move, gContestMons[eContestAI->contestantId].moves[i]);
+ result = AreMovesContestCombo(move, gContestMons[eContestAI.contestantId].moves[i]);
if (result)
{
result = 1;
@@ -1036,25 +1039,25 @@ static void ContestAICmd_check_combo_starter(void)
if (result)
result = 1;
- eContestAI->scriptResult = result;
+ eContestAI.scriptResult = result;
gAIScriptPtr += 1;
}
-static void ContestAICmd_unk_41(void)
+static void ContestAICmd_if_combo_starter(void)
{
ContestAICmd_check_combo_starter();
- if (eContestAI->scriptResult != 0)
+ if (eContestAI.scriptResult != 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
}
-static void ContestAICmd_unk_42(void)
+static void ContestAICmd_if_not_combo_starter(void)
{
ContestAICmd_check_combo_starter();
- if (eContestAI->scriptResult == 0)
+ if (eContestAI.scriptResult == 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
@@ -1064,13 +1067,13 @@ static void ContestAICmd_check_combo_finisher(void)
{
u8 result = 0;
int i;
- u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4];
+ u16 move = gContestMons[eContestAI.contestantId].moves[eContestAI.nextMoveIndex];
for (i = 0; i < MAX_MON_MOVES; i++)
{
- if (gContestMons[eContestAI->contestantId].moves[i])
+ if (gContestMons[eContestAI.contestantId].moves[i])
{
- result = AreMovesContestCombo(gContestMons[eContestAI->contestantId].moves[i], move);
+ result = AreMovesContestCombo(gContestMons[eContestAI.contestantId].moves[i], move);
if (result)
{
result = 1;
@@ -1082,25 +1085,25 @@ static void ContestAICmd_check_combo_finisher(void)
if (result)
result = 1;
- eContestAI->scriptResult = result;
+ eContestAI.scriptResult = result;
gAIScriptPtr += 1;
}
-static void ContestAICmd_unk_44(void)
+static void ContestAICmd_if_combo_finisher(void)
{
ContestAICmd_check_combo_finisher();
- if (eContestAI->scriptResult != 0)
+ if (eContestAI.scriptResult != 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
}
-static void ContestAICmd_unk_45(void)
+static void ContestAICmd_if_not_combo_finisher(void)
{
ContestAICmd_check_combo_finisher();
- if (eContestAI->scriptResult == 0)
+ if (eContestAI.scriptResult == 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
@@ -1109,33 +1112,33 @@ static void ContestAICmd_unk_45(void)
static void ContestAICmd_check_would_finish_combo(void)
{
u8 result = 0;
- u16 move = gContestMons[eContestAI->contestantId].moves[eContestAI->unk4];
+ u16 move = gContestMons[eContestAI.contestantId].moves[eContestAI.nextMoveIndex];
- if (sContestantStatus[eContestAI->contestantId].prevMove)
- result = AreMovesContestCombo(sContestantStatus[eContestAI->contestantId].prevMove, move);
+ if (eContestantStatus[eContestAI.contestantId].prevMove)
+ result = AreMovesContestCombo(eContestantStatus[eContestAI.contestantId].prevMove, move);
if (result)
result = 1;
- eContestAI->scriptResult = result;
+ eContestAI.scriptResult = result;
gAIScriptPtr += 1;
}
-static void ContestAICmd_unk_47(void)
+static void ContestAICmd_if_would_finish_combo(void)
{
ContestAICmd_check_would_finish_combo();
- if (eContestAI->scriptResult != 0)
+ if (eContestAI.scriptResult != 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
}
-static void ContestAICmd_unk_48(void)
+static void ContestAICmd_if_would_not_finish_combo(void)
{
ContestAICmd_check_would_finish_combo();
- if (eContestAI->scriptResult == 0)
+ if (eContestAI.scriptResult == 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
@@ -1145,45 +1148,45 @@ static void ContestAICmd_get_condition(void)
{
int var = sub_81563B0(gAIScriptPtr[1]);
- eContestAI->scriptResult = sContestantStatus[var].condition / 10;
+ eContestAI.scriptResult = eContestantStatus[var].condition / 10;
gAIScriptPtr += 2;
}
-static void ContestAICmd_unk_4A(void)
+static void ContestAICmd_if_condition_less_than(void)
{
ContestAICmd_get_condition();
- if (eContestAI->scriptResult < gAIScriptPtr[0])
+ if (eContestAI.scriptResult < gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_4B(void)
+static void ContestAICmd_if_condition_more_than(void)
{
ContestAICmd_get_condition();
- if (eContestAI->scriptResult > gAIScriptPtr[0])
+ if (eContestAI.scriptResult > gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_4C(void)
+static void ContestAICmd_if_condition_eq(void)
{
ContestAICmd_get_condition();
- if (eContestAI->scriptResult == gAIScriptPtr[0])
+ if (eContestAI.scriptResult == gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_4D(void)
+static void ContestAICmd_if_condition_not_eq(void)
{
ContestAICmd_get_condition();
- if (eContestAI->scriptResult != gAIScriptPtr[0])
+ if (eContestAI.scriptResult != gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -1195,47 +1198,47 @@ static void ContestAICmd_get_used_combo_starter(void)
u8 var = sub_81563B0(gAIScriptPtr[1]);
if (sub_80DE1E8(var))
- result = gContestMoves[sContestantStatus[var].prevMove].comboStarterId ? 1 : 0;
+ result = gContestMoves[eContestantStatus[var].prevMove].comboStarterId ? 1 : 0;
- eContestAI->scriptResult = result;
+ eContestAI.scriptResult = result;
gAIScriptPtr += 2;
}
-static void ContestAICmd_unk_4F(void)
+static void ContestAICmd_if_used_combo_starter_less_than(void)
{
ContestAICmd_get_used_combo_starter();
- if (eContestAI->scriptResult < gAIScriptPtr[0])
+ if (eContestAI.scriptResult < gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_50(void)
+static void ContestAICmd_if_used_combo_starter_more_than(void)
{
ContestAICmd_get_used_combo_starter();
- if (eContestAI->scriptResult > gAIScriptPtr[0])
+ if (eContestAI.scriptResult > gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_51(void)
+static void ContestAICmd_if_used_combo_starter_eq(void)
{
ContestAICmd_get_used_combo_starter();
- if (eContestAI->scriptResult == gAIScriptPtr[0])
+ if (eContestAI.scriptResult == gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void ContestAICmd_unk_52(void)
+static void ContestAICmd_if_used_combo_starter_not_eq(void)
{
ContestAICmd_get_used_combo_starter();
- if (eContestAI->scriptResult != gAIScriptPtr[0])
+ if (eContestAI.scriptResult != gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -1244,28 +1247,28 @@ static void ContestAICmd_unk_52(void)
static void ContestAICmd_check_can_participate(void)
{
if (Contest_IsMonsTurnDisabled(sub_81563B0(gAIScriptPtr[1])))
- eContestAI->scriptResult = FALSE;
+ eContestAI.scriptResult = FALSE;
else
- eContestAI->scriptResult = TRUE;
+ eContestAI.scriptResult = TRUE;
gAIScriptPtr += 2;
}
-static void ContestAICmd_unk_54(void)
+static void ContestAICmd_if_can_participate(void)
{
ContestAICmd_check_can_participate();
- if (eContestAI->scriptResult != 0)
+ if (eContestAI.scriptResult != 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
}
-static void ContestAICmd_unk_55(void)
+static void ContestAICmd_if_cannot_participate(void)
{
ContestAICmd_check_can_participate();
- if (eContestAI->scriptResult == 0)
+ if (eContestAI.scriptResult == 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
@@ -1275,7 +1278,7 @@ static void ContestAICmd_get_val_812A188(void)
{
u8 var = sub_81563B0(gAIScriptPtr[1]);
- eContestAI->scriptResult = sContestantStatus[var].unk15_3;
+ eContestAI.scriptResult = eContestantStatus[var].unk15_3;
gAIScriptPtr += 2;
}
@@ -1283,17 +1286,17 @@ static void ContestAICmd_unk_57(void)
{
ContestAICmd_get_val_812A188();
- if (eContestAI->scriptResult != 0)
+ if (eContestAI.scriptResult != 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
}
-static void ContestAICmd_unk_58(void)
+static void ContestAICmd_contest_58(void)
{
ContestAICmd_get_val_812A188();
- if (eContestAI->scriptResult == 0)
+ if (eContestAI.scriptResult == 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
@@ -1303,7 +1306,7 @@ static void ContestAICmd_unk_59(void)
{
u8 var = sub_81563B0(gAIScriptPtr[1]);
- eContestAI->scriptResult = sContestantStatus[var].unk4 - sContestantStatus[eContestAI->contestantId].unk4;
+ eContestAI.scriptResult = eContestantStatus[var].pointTotal - eContestantStatus[eContestAI.contestantId].pointTotal;
gAIScriptPtr += 2;
}
@@ -1311,7 +1314,7 @@ static void ContestAICmd_unk_5A(void)
{
ContestAICmd_unk_59();
- if (eContestAI->scriptResult < 0)
+ if (eContestAI.scriptResult < 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
@@ -1321,7 +1324,7 @@ static void ContestAICmd_unk_5B(void)
{
ContestAICmd_unk_59();
- if (eContestAI->scriptResult > 0)
+ if (eContestAI.scriptResult > 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
@@ -1331,7 +1334,7 @@ static void ContestAICmd_unk_5C(void)
{
ContestAICmd_unk_59();
- if (eContestAI->scriptResult == 0)
+ if (eContestAI.scriptResult == 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
@@ -1341,7 +1344,7 @@ static void ContestAICmd_unk_5D(void)
{
ContestAICmd_unk_59();
- if (eContestAI->scriptResult != 0)
+ if (eContestAI.scriptResult != 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
@@ -1351,7 +1354,7 @@ static void ContestAICmd_unk_5E(void)
{
u8 var = sub_81563B0(gAIScriptPtr[1]);
- eContestAI->scriptResult = gContestMonConditions[var] - gContestMonConditions[eContestAI->contestantId];
+ eContestAI.scriptResult = gContestMonConditions[var] - gContestMonConditions[eContestAI.contestantId];
gAIScriptPtr += 2;
}
@@ -1359,7 +1362,7 @@ static void ContestAICmd_unk_5F(void)
{
ContestAICmd_unk_5E();
- if (eContestAI->scriptResult < 0)
+ if (eContestAI.scriptResult < 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
@@ -1369,7 +1372,7 @@ static void ContestAICmd_unk_60(void)
{
ContestAICmd_unk_5E();
- if (eContestAI->scriptResult > 0)
+ if (eContestAI.scriptResult > 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
@@ -1379,7 +1382,7 @@ static void ContestAICmd_unk_61(void)
{
ContestAICmd_unk_5E();
- if (eContestAI->scriptResult == 0)
+ if (eContestAI.scriptResult == 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
@@ -1389,7 +1392,7 @@ static void ContestAICmd_unk_62(void)
{
ContestAICmd_unk_5E();
- if (eContestAI->scriptResult != 0)
+ if (eContestAI.scriptResult != 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
@@ -1399,9 +1402,9 @@ static void ContestAICmd_unk_63(void)
{
u8 var = sub_81563B0(gAIScriptPtr[1]);
u8 var2 = gAIScriptPtr[2];
- u16 move = sContest.unk19220[var2][var];
+ u16 move = eContest.moveHistory[var2][var];
- eContestAI->scriptResult = gContestMoves[move].effect;
+ eContestAI.scriptResult = gContestMoves[move].effect;
gAIScriptPtr += 3;
}
@@ -1409,7 +1412,7 @@ static void ContestAICmd_unk_64(void)
{
ContestAICmd_unk_63();
- if (eContestAI->scriptResult < gAIScriptPtr[0])
+ if (eContestAI.scriptResult < gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -1419,7 +1422,7 @@ static void ContestAICmd_unk_65(void)
{
ContestAICmd_unk_63();
- if (eContestAI->scriptResult > gAIScriptPtr[0])
+ if (eContestAI.scriptResult > gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -1429,7 +1432,7 @@ static void ContestAICmd_unk_66(void)
{
ContestAICmd_unk_63();
- if (eContestAI->scriptResult == gAIScriptPtr[0])
+ if (eContestAI.scriptResult == gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -1439,7 +1442,7 @@ static void ContestAICmd_unk_67(void)
{
ContestAICmd_unk_63();
- if (eContestAI->scriptResult != gAIScriptPtr[0])
+ if (eContestAI.scriptResult != gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -1449,9 +1452,9 @@ static void ContestAICmd_unk_68(void)
{
u8 var = sub_81563B0(gAIScriptPtr[1]);
u8 var2 = gAIScriptPtr[2];
- s8 result = sContest.unk19248[var2][var];
+ s8 result = eContest.excitementHistory[var2][var];
- eContestAI->scriptResult = result;
+ eContestAI.scriptResult = result;
gAIScriptPtr += 3;
}
@@ -1459,7 +1462,7 @@ static void ContestAICmd_unk_69(void)
{
ContestAICmd_unk_68();
- if (eContestAI->scriptResult < gAIScriptPtr[0])
+ if (eContestAI.scriptResult < gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -1469,7 +1472,7 @@ static void ContestAICmd_unk_6A(void)
{
ContestAICmd_unk_68();
- if (eContestAI->scriptResult > gAIScriptPtr[0])
+ if (eContestAI.scriptResult > gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -1479,7 +1482,7 @@ static void ContestAICmd_unk_6B(void)
{
ContestAICmd_unk_68();
- if (eContestAI->scriptResult == gAIScriptPtr[0])
+ if (eContestAI.scriptResult == gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -1489,7 +1492,7 @@ static void ContestAICmd_unk_6C(void)
{
ContestAICmd_unk_68();
- if (eContestAI->scriptResult != gAIScriptPtr[0])
+ if (eContestAI.scriptResult != gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -1499,9 +1502,9 @@ static void ContestAICmd_unk_6D(void)
{
u8 var = sub_81563B0(gAIScriptPtr[1]);
u8 var2 = gAIScriptPtr[2];
- u16 move = sContest.unk19220[var2][var];
+ u16 move = eContest.moveHistory[var2][var];
- eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].effectType;
+ eContestAI.scriptResult = gContestEffects[gContestMoves[move].effect].effectType;
gAIScriptPtr += 3;
}
@@ -1509,7 +1512,7 @@ static void ContestAICmd_unk_6E(void)
{
ContestAICmd_unk_6D();
- if (eContestAI->scriptResult == gAIScriptPtr[0])
+ if (eContestAI.scriptResult == gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -1519,7 +1522,7 @@ static void ContestAICmd_unk_6F(void)
{
ContestAICmd_unk_6D();
- if (eContestAI->scriptResult != gAIScriptPtr[0])
+ if (eContestAI.scriptResult != gAIScriptPtr[0])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -1527,38 +1530,38 @@ static void ContestAICmd_unk_6F(void)
static void ContestAICmd_unk_70(void)
{
- eContestAI->scriptArr[gAIScriptPtr[1]] = eContestAI->scriptResult;
+ eContestAI.scriptArr[gAIScriptPtr[1]] = eContestAI.scriptResult;
gAIScriptPtr += 2;
}
static void ContestAICmd_unk_71(void)
{
- eContestAI->scriptArr[gAIScriptPtr[1]] = T1_READ_16(gAIScriptPtr + 2);
+ eContestAI.scriptArr[gAIScriptPtr[1]] = T1_READ_16(gAIScriptPtr + 2);
gAIScriptPtr += 4;
}
static void ContestAICmd_unk_72(void)
{
// wtf? shouldn't T1_READ_16 work here? why the signed 8 load by gAIScriptPtr[2]?
- eContestAI->scriptArr[gAIScriptPtr[1]] += ((s8)gAIScriptPtr[2] | gAIScriptPtr[3] << 8);
+ eContestAI.scriptArr[gAIScriptPtr[1]] += ((s8)gAIScriptPtr[2] | gAIScriptPtr[3] << 8);
gAIScriptPtr += 4;
}
static void ContestAICmd_unk_73(void)
{
- eContestAI->scriptArr[gAIScriptPtr[1]] += eContestAI->scriptArr[gAIScriptPtr[2]];
+ eContestAI.scriptArr[gAIScriptPtr[1]] += eContestAI.scriptArr[gAIScriptPtr[2]];
gAIScriptPtr += 3;
}
static void ContestAICmd_unk_74(void)
{
- eContestAI->scriptArr[gAIScriptPtr[1]] += eContestAI->scriptArr[gAIScriptPtr[2]];
+ eContestAI.scriptArr[gAIScriptPtr[1]] += eContestAI.scriptArr[gAIScriptPtr[2]];
gAIScriptPtr += 3;
}
static void ContestAICmd_unk_75(void)
{
- if (eContestAI->scriptArr[gAIScriptPtr[1]] < T1_READ_16(gAIScriptPtr + 2))
+ if (eContestAI.scriptArr[gAIScriptPtr[1]] < T1_READ_16(gAIScriptPtr + 2))
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4);
else
gAIScriptPtr += 8;
@@ -1566,7 +1569,7 @@ static void ContestAICmd_unk_75(void)
static void ContestAICmd_unk_76(void)
{
- if (eContestAI->scriptArr[gAIScriptPtr[1]] > T1_READ_16(gAIScriptPtr + 2))
+ if (eContestAI.scriptArr[gAIScriptPtr[1]] > T1_READ_16(gAIScriptPtr + 2))
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4);
else
gAIScriptPtr += 8;
@@ -1574,7 +1577,7 @@ static void ContestAICmd_unk_76(void)
static void ContestAICmd_unk_77(void)
{
- if (eContestAI->scriptArr[gAIScriptPtr[1]] == T1_READ_16(gAIScriptPtr + 2))
+ if (eContestAI.scriptArr[gAIScriptPtr[1]] == T1_READ_16(gAIScriptPtr + 2))
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4);
else
gAIScriptPtr += 8;
@@ -1582,7 +1585,7 @@ static void ContestAICmd_unk_77(void)
static void ContestAICmd_unk_78(void)
{
- if (eContestAI->scriptArr[gAIScriptPtr[1]] != T1_READ_16(gAIScriptPtr + 2))
+ if (eContestAI.scriptArr[gAIScriptPtr[1]] != T1_READ_16(gAIScriptPtr + 2))
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4);
else
gAIScriptPtr += 8;
@@ -1590,7 +1593,7 @@ static void ContestAICmd_unk_78(void)
static void ContestAICmd_unk_79(void)
{
- if (eContestAI->scriptArr[gAIScriptPtr[1]] < (eContestAI->scriptArr[gAIScriptPtr[2]]))
+ if (eContestAI.scriptArr[gAIScriptPtr[1]] < (eContestAI.scriptArr[gAIScriptPtr[2]]))
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3);
else
gAIScriptPtr += 7;
@@ -1598,7 +1601,7 @@ static void ContestAICmd_unk_79(void)
static void ContestAICmd_unk_7A(void)
{
- if (eContestAI->scriptArr[gAIScriptPtr[1]] > (eContestAI->scriptArr[gAIScriptPtr[2]]))
+ if (eContestAI.scriptArr[gAIScriptPtr[1]] > (eContestAI.scriptArr[gAIScriptPtr[2]]))
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3);
else
gAIScriptPtr += 7;
@@ -1606,7 +1609,7 @@ static void ContestAICmd_unk_7A(void)
static void ContestAICmd_unk_7B(void)
{
- if (eContestAI->scriptArr[gAIScriptPtr[1]] == (eContestAI->scriptArr[gAIScriptPtr[2]]))
+ if (eContestAI.scriptArr[gAIScriptPtr[1]] == (eContestAI.scriptArr[gAIScriptPtr[2]]))
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3);
else
gAIScriptPtr += 7;
@@ -1614,15 +1617,15 @@ static void ContestAICmd_unk_7B(void)
static void ContestAICmd_unk_7C(void)
{
- if (eContestAI->scriptArr[gAIScriptPtr[1]] != (eContestAI->scriptArr[gAIScriptPtr[2]]))
+ if (eContestAI.scriptArr[gAIScriptPtr[1]] != (eContestAI.scriptArr[gAIScriptPtr[2]]))
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3);
else
gAIScriptPtr += 7;
}
-static void ContestAICmd_unk_7D(void)
+static void ContestAICmd_if_random(void)
{
- if ((Random() & 0xFF) < eContestAI->scriptArr[gAIScriptPtr[1]])
+ if ((Random() & 0xFF) < eContestAI.scriptArr[gAIScriptPtr[1]])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -1630,41 +1633,41 @@ static void ContestAICmd_unk_7D(void)
static void ContestAICmd_unk_7E(void)
{
- if ((Random() & 0xFF) > eContestAI->scriptArr[gAIScriptPtr[1]])
+ if ((Random() & 0xFF) > eContestAI.scriptArr[gAIScriptPtr[1]])
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
// jump
-static void ContestAICmd_unk_7F(void)
+static void ContestAICmd_jump(void)
{
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
}
-static void ContestAICmd_unk_80(void)
+static void ContestAICmd_call(void)
{
AIStackPushVar(gAIScriptPtr + 5);
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
}
-static void ContestAICmd_unk_81(void)
+static void ContestAICmd_end(void)
{
if (!AIStackPop())
- eContestAI->aiAction |= 1;
+ eContestAI.aiAction |= 1;
}
static void AIStackPushVar(const u8 *ptr)
{
- eContestAI->stack[eContestAI->stackSize++] = ptr;
+ eContestAI.stack[eContestAI.stackSize++] = ptr;
}
static bool8 AIStackPop(void)
{
- if (eContestAI->stackSize != 0)
+ if (eContestAI.stackSize != 0)
{
- --eContestAI->stackSize;
- gAIScriptPtr = eContestAI->stack[eContestAI->stackSize];
+ --eContestAI.stackSize;
+ gAIScriptPtr = eContestAI.stack[eContestAI.stackSize];
return TRUE;
}
else
@@ -1673,16 +1676,16 @@ static bool8 AIStackPop(void)
}
}
-static void ContestAICmd_check_for_exciting_move(void)
+static void ContestAICmd_check_user_has_exciting_move(void)
{
int result = 0;
int i;
for (i = 0; i < MAX_MON_MOVES; i++)
{
- if (gContestMons[eContestAI->contestantId].moves[i])
+ if (gContestMons[eContestAI.contestantId].moves[i])
{
- if (Contest_GetMoveExcitement(gContestMons[eContestAI->contestantId].moves[i]) == 1)
+ if (Contest_GetMoveExcitement(gContestMons[eContestAI.contestantId].moves[i]) == 1)
{
result = 1;
break;
@@ -1690,25 +1693,25 @@ static void ContestAICmd_check_for_exciting_move(void)
}
}
- eContestAI->scriptResult = result;
+ eContestAI.scriptResult = result;
gAIScriptPtr += 1;
}
-static void ContestAICmd_unk_83(void)
+static void ContestAICmd_if_user_has_exciting_move(void)
{
- ContestAICmd_check_for_exciting_move();
+ ContestAICmd_check_user_has_exciting_move();
- if (eContestAI->scriptResult != 0)
+ if (eContestAI.scriptResult != 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
}
-static void ContestAICmd_unk_84(void)
+static void ContestAICmd_if_user_doesnt_have_exciting_move(void)
{
- ContestAICmd_check_for_exciting_move();
+ ContestAICmd_check_user_has_exciting_move();
- if (eContestAI->scriptResult == 0)
+ if (eContestAI.scriptResult == 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
@@ -1722,7 +1725,7 @@ static void ContestAICmd_unk_85(void)
for (i = 0; i < MAX_MON_MOVES; i++)
{
- u16 move = gContestMons[eContestAI->contestantId].moves[i];
+ u16 move = gContestMons[eContestAI.contestantId].moves[i];
if (move == arg)
{
result = 1;
@@ -1730,7 +1733,7 @@ static void ContestAICmd_unk_85(void)
}
}
- eContestAI->scriptResult = result;
+ eContestAI.scriptResult = result;
gAIScriptPtr += 3;
}
@@ -1738,17 +1741,17 @@ static void ContestAICmd_unk_86(void)
{
ContestAICmd_unk_85();
- if (eContestAI->scriptResult != 0)
+ if (eContestAI.scriptResult != 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
}
-static void ContestAICmd_unk_87(void)
+static void ContestAICmd_if_effect_in_user_moveset(void)
{
ContestAICmd_unk_85();
- if (eContestAI->scriptResult == 0)
+ if (eContestAI.scriptResult == 0)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
else
gAIScriptPtr += 4;
diff --git a/src/contest_effect.c b/src/contest_effect.c
index 760d74d69..d6b06c3ba 100644
--- a/src/contest_effect.c
+++ b/src/contest_effect.c
@@ -82,101 +82,101 @@ static void ContestEffect_HighlyAppealing(void)
// After this move, the user is more easily startled.
static void ContestEffect_UserMoreEasilyStartled(void)
{
- sContestantStatus[shared192D0.contestant].moreEasilyStartled = TRUE;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_MORE_CONSCIOUS);
+ eContestantStatus[eContestResources8.contestant].moreEasilyStartled = TRUE;
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_MORE_CONSCIOUS);
}
// Makes a great appeal, but allows no more to the end.
static void ContestEffect_GreatAppealButNoMoreMoves(void)
{
- sContestantStatus[shared192D0.contestant].exploded = TRUE;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_NO_APPEAL);
+ eContestantStatus[eContestResources8.contestant].exploded = TRUE;
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_NO_APPEAL);
}
// Can be used repeatedly without boring the JUDGE.
static void ContestEffect_RepetitionNotBoring(void)
{
- sContestantStatus[shared192D0.contestant].usedRepeatableMove = TRUE;
- sContestantStatus[shared192D0.contestant].disappointedRepeat = FALSE;
- sContestantStatus[shared192D0.contestant].moveRepeatCount = 0;
+ eContestantStatus[eContestResources8.contestant].usedRepeatableMove = TRUE;
+ eContestantStatus[eContestResources8.contestant].disappointedRepeat = FALSE;
+ eContestantStatus[eContestResources8.contestant].moveRepeatCount = 0;
}
// Can avoid being startled by others once.
static void ContestEffect_AvoidStartleOnce(void)
{
- sContestantStatus[shared192D0.contestant].jamSafetyCount = 1;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SETTLE_DOWN);
+ eContestantStatus[eContestResources8.contestant].jamSafetyCount = 1;
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_SETTLE_DOWN);
}
// Can avoid being startled by others.
static void ContestEffect_AvoidStartle(void)
{
- sContestantStatus[shared192D0.contestant].immune = TRUE;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_OBLIVIOUS_TO_OTHERS);
+ eContestantStatus[eContestResources8.contestant].immune = TRUE;
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_OBLIVIOUS_TO_OTHERS);
}
// Can avoid being startled by others a little.
static void ContestEffect_AvoidStartleSlightly(void)
{
- sContestantStatus[shared192D0.contestant].jamReduction = 20;
- SetContestantEffectStringID(shared192D0.contestant,CONTEST_STRING_LESS_AWARE);
+ eContestantStatus[eContestResources8.contestant].jamReduction = 20;
+ SetContestantEffectStringID(eContestResources8.contestant,CONTEST_STRING_LESS_AWARE);
}
// After this move, the user is less likely to be startled.
static void ContestEffect_UserLessEasilyStartled(void)
{
- sContestantStatus[shared192D0.contestant].resistant = TRUE;
- SetContestantEffectStringID(shared192D0.contestant,CONTEST_STRING_STOPPED_CARING);
+ eContestantStatus[eContestResources8.contestant].resistant = TRUE;
+ SetContestantEffectStringID(eContestResources8.contestant,CONTEST_STRING_STOPPED_CARING);
}
-// Slightly startles the POKéMON in front.
+// Slightly startles the POKéMON in front.
static void ContestEffect_StartleFrontMon(void)
{
u8 idx = 0;
- u8 a = shared192D0.contestant;
+ u8 a = eContestResources8.contestant;
- if (shared192D0.turnOrder[a] != 0) {
+ if (eContestResources8.turnOrder[a] != 0) {
int i;
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[a] - 1 == shared192D0.turnOrder[i])
+ if (eContestResources8.turnOrder[a] - 1 == eContestResources8.turnOrder[i])
break;
}
- shared192D0.jamQueue[0] = i;
- shared192D0.jamQueue[1] = 0xFF;
+ eContestResources8.jamQueue[0] = i;
+ eContestResources8.jamQueue[1] = 0xFF;
idx = WasAtLeastOneOpponentJammed();
}
if (idx == 0)
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID2(eContestResources8.contestant, CONTEST_STRING_MESSED_UP2);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
}
// Slightly startles those that have made appeals.
static void ContestEffect_StartlePrevMons(void)
{
u8 idx = 0;
- u8 a = shared192D0.contestant;
+ u8 a = eContestResources8.contestant;
- if (shared192D0.turnOrder[a] != 0)
+ if (eContestResources8.turnOrder[a] != 0)
{
int i, j;
for (i = 0, j = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[a] > shared192D0.turnOrder[i])
- shared192D0.jamQueue[j++] = i;
+ if (eContestResources8.turnOrder[a] > eContestResources8.turnOrder[i])
+ eContestResources8.jamQueue[j++] = i;
}
- shared192D0.jamQueue[j] = 0xFF;
+ eContestResources8.jamQueue[j] = 0xFF;
idx = WasAtLeastOneOpponentJammed();
}
if (idx == 0)
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID2(eContestResources8.contestant, CONTEST_STRING_MESSED_UP2);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
}
-// Startles the POKéMON that appealed before the user.
+// Startles the POKéMON that appealed before the user.
static void ContestEffect_StartlePrevMon2(void)
{
u8 rval = Random() % 10;
@@ -189,16 +189,16 @@ static void ContestEffect_StartlePrevMon2(void)
else
jam = 60;
- shared192D0.jam = jam;
+ eContestResources8.jam = jam;
ContestEffect_StartleFrontMon();
}
-// Startles all POKéMON that appealed before the user.
+// Startles all POKéMON that appealed before the user.
static void ContestEffect_StartlePrevMons2(void)
{
u8 numStartled = 0;
- u8 contestant = shared192D0.contestant;
- u8 turnOrder = shared192D0.turnOrder[contestant];
+ u8 contestant = eContestResources8.contestant;
+ u8 turnOrder = eContestResources8.turnOrder[contestant];
if (turnOrder != 0)
{
@@ -206,12 +206,12 @@ static void ContestEffect_StartlePrevMons2(void)
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[contestant] > shared192D0.turnOrder[i])
+ if (eContestResources8.turnOrder[contestant] > eContestResources8.turnOrder[i])
{
u8 rval, jam;
- shared192D0.jamQueue[0] = i;
- shared192D0.jamQueue[1] = 0xFF;
+ eContestResources8.jamQueue[0] = i;
+ eContestResources8.jamQueue[1] = 0xFF;
rval = Random() % 10;
if (rval == 0)
@@ -227,141 +227,141 @@ static void ContestEffect_StartlePrevMons2(void)
else
jam = 60;
- shared192D0.jam = jam;
+ eContestResources8.jam = jam;
if (WasAtLeastOneOpponentJammed())
numStartled++;
}
}
}
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
if (numStartled == 0)
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
+ SetContestantEffectStringID2(eContestResources8.contestant, CONTEST_STRING_MESSED_UP2);
}
-// Shifts the JUDGE’s attention from others.
+// Shifts the JUDGE's attention from others.
static void ContestEffect_ShiftJudgeAttention(void)
{
bool32 hitAny = FALSE;
- u8 contestant = shared192D0.contestant;
+ u8 contestant = eContestResources8.contestant;
- if (shared192D0.turnOrder[shared192D0.contestant] != 0)
+ if (eContestResources8.turnOrder[eContestResources8.contestant] != 0)
{
int i;
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[contestant] > shared192D0.turnOrder[i] &&
- sContestantStatus[i].hasJudgesAttention &&
+ if (eContestResources8.turnOrder[contestant] > eContestResources8.turnOrder[i] &&
+ eContestantStatus[i].hasJudgesAttention &&
CanUnnerveContestant(i))
{
- sContestantStatus[i].hasJudgesAttention = FALSE;
- sContestantStatus[i].judgesAttentionWasRemoved = TRUE;
+ eContestantStatus[i].hasJudgesAttention = FALSE;
+ eContestantStatus[i].judgesAttentionWasRemoved = TRUE;
SetContestantEffectStringID(i, CONTEST_STRING_JUDGE_LOOK_AWAY2);
hitAny = TRUE;
}
}
}
- SetContestantEffectStringID(shared192D0.contestant,CONTEST_STRING_DAZZLE_ATTEMPT);
+ SetContestantEffectStringID(eContestResources8.contestant,CONTEST_STRING_DAZZLE_ATTEMPT);
if (!hitAny)
{
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
+ SetContestantEffectStringID2(eContestResources8.contestant, CONTEST_STRING_MESSED_UP2);
}
}
-// Startles the POKéMON that has the JUDGE’s attention.
+// Startles the POKéMON that has the JUDGE's attention.
static void ContestEffect_StartleMonWithJudgesAttention(void)
{
u8 numStartled = 0;
- u8 contestant = shared192D0.contestant;
+ u8 contestant = eContestResources8.contestant;
- if (shared192D0.turnOrder[shared192D0.contestant] != 0)
+ if (eContestResources8.turnOrder[eContestResources8.contestant] != 0)
{
int i;
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[contestant] > shared192D0.turnOrder[i])
+ if (eContestResources8.turnOrder[contestant] > eContestResources8.turnOrder[i])
{
- if (sContestantStatus[i].hasJudgesAttention)
- shared192D0.jam = 50;
+ if (eContestantStatus[i].hasJudgesAttention)
+ eContestResources8.jam = 50;
else
- shared192D0.jam = 10;
- shared192D0.jamQueue[0] = i;
- shared192D0.jamQueue[1] = 0xFF;
+ eContestResources8.jam = 10;
+ eContestResources8.jamQueue[0] = i;
+ eContestResources8.jamQueue[1] = 0xFF;
if (WasAtLeastOneOpponentJammed())
numStartled++;
}
}
}
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
if (numStartled == 0)
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
+ SetContestantEffectStringID2(eContestResources8.contestant, CONTEST_STRING_MESSED_UP2);
}
// Jams the others, and misses one turn of appeals.
static void ContestEffect_JamsOthersButMissOneTurn(void)
{
- sContestantStatus[shared192D0.contestant].turnSkipped = TRUE;
+ eContestantStatus[eContestResources8.contestant].turnSkipped = TRUE;
ContestEffect_StartlePrevMons();
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
}
-// Startles POKéMON that made a same-type appeal.
+// Startles POKéMON that made a same-type appeal.
static void ContestEffect_StartleMonsSameTypeAppeal(void)
{
- u16 move = sContestantStatus[shared192D0.contestant].currMove;
+ u16 move = eContestantStatus[eContestResources8.contestant].currMove;
JamByMoveCategory(gContestMoves[move].contestCategory);
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
}
-// Badly startles POKéMON that made COOL appeals.
+// Badly startles POKéMON that made COOL appeals.
static void ContestEffect_StartleMonsCoolAppeal(void)
{
JamByMoveCategory(CONTEST_CATEGORY_COOL);
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
}
-// Badly startles POKéMON that made BEAUTY appeals.
+// Badly startles POKéMON that made BEAUTY appeals.
static void ContestEffect_StartleMonsBeautyAppeal(void)
{
JamByMoveCategory(CONTEST_CATEGORY_BEAUTY);
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
}
-// Badly startles POKéMON that made CUTE appeals.
+// Badly startles POKéMON that made CUTE appeals.
static void ContestEffect_StartleMonsCuteAppeal(void)
{
JamByMoveCategory(CONTEST_CATEGORY_CUTE);
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
}
-// Badly startles POKéMON that made SMART appeals.
+// Badly startles POKéMON that made SMART appeals.
static void ContestEffect_StartleMonsSmartAppeal(void)
{
JamByMoveCategory(CONTEST_CATEGORY_SMART);
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
}
-// Badly startles POKéMON that made TOUGH appeals.
+// Badly startles POKéMON that made TOUGH appeals.
static void ContestEffect_StartleMonsToughAppeal(void)
{
JamByMoveCategory(CONTEST_CATEGORY_TOUGH);
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
}
-// Makes one POKéMON after the user nervous.
+// Makes one POKéMON after the user nervous.
static void ContestEffect_MakeFollowingMonNervous(void)
{
bool32 hitAny = FALSE;
- if (shared192D0.turnOrder[shared192D0.contestant] != 3)
+ if (eContestResources8.turnOrder[eContestResources8.contestant] != 3)
{
int i;
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[shared192D0.contestant] + 1 == shared192D0.turnOrder[i])
+ if (eContestResources8.turnOrder[eContestResources8.contestant] + 1 == eContestResources8.turnOrder[i])
{
if (CanUnnerveContestant(i))
{
@@ -377,12 +377,12 @@ static void ContestEffect_MakeFollowingMonNervous(void)
}
}
}
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_UNNERVE_ATTEMPT);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_UNNERVE_ATTEMPT);
if (!hitAny)
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
+ SetContestantEffectStringID2(eContestResources8.contestant, CONTEST_STRING_MESSED_UP2);
}
-// Makes all POKéMON after the user nervous.
+// Makes all POKéMON after the user nervous.
static void ContestEffect_MakeFollowingMonsNervous(void)
{
u8 numUnnerved = 0;
@@ -396,8 +396,8 @@ static void ContestEffect_MakeFollowingMonsNervous(void)
memset(contestantIds, 0xFF, ARRAY_COUNT(contestantIds));
for (i = 0, numAfter = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[shared192D0.contestant] < shared192D0.turnOrder[i] &&
- !sContestantStatus[i].nervous && !Contest_IsMonsTurnDisabled(i))
+ if (eContestResources8.turnOrder[eContestResources8.contestant] < eContestResources8.turnOrder[i] &&
+ !eContestantStatus[i].nervous && !Contest_IsMonsTurnDisabled(i))
contestantIds[numAfter++] = i;
}
@@ -423,11 +423,11 @@ static void ContestEffect_MakeFollowingMonsNervous(void)
}
for (i = 0; i < 4; i++)
{
- if (sContestantStatus[i].hasJudgesAttention && sub_80DE1E8(i))
- oddsMod[i] = gComboStarterLookupTable[gContestMoves[sContestantStatus[i].prevMove].comboStarterId] * 10;
+ if (eContestantStatus[i].hasJudgesAttention && sub_80DE1E8(i))
+ oddsMod[i] = gComboStarterLookupTable[gContestMoves[eContestantStatus[i].prevMove].comboStarterId] * 10;
else
oddsMod[i] = 0;
- oddsMod[i] -= (sContestantStatus[i].condition / 10) * 10;
+ oddsMod[i] -= (eContestantStatus[i].condition / 10) * 10;
}
if (odds[0] != 0)
{
@@ -457,12 +457,12 @@ static void ContestEffect_MakeFollowingMonsNervous(void)
SetContestantEffectStringID(contestantIds[i], CONTEST_STRING_UNAFFECTED);
numUnnerved++;
}
- shared192D0.unnervedPokes[contestantIds[i]] = 1;
+ eContestResources8.unnervedPokes[contestantIds[i]] = 1;
}
}
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_UNNERVE_WAITING);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_UNNERVE_WAITING);
if (numUnnerved == 0)
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
+ SetContestantEffectStringID2(eContestResources8.contestant, CONTEST_STRING_MESSED_UP2);
}
// Worsens the condition of those that made appeals.
@@ -473,23 +473,23 @@ static void ContestEffect_WorsenConditionOfPrevMons(void)
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i] &&
- sContestantStatus[i].condition > 0 &&
+ if (eContestResources8.turnOrder[eContestResources8.contestant] > eContestResources8.turnOrder[i] &&
+ eContestantStatus[i].condition > 0 &&
CanUnnerveContestant(i))
{
- sContestantStatus[i].condition = 0;
- sContestantStatus[i].conditionMod = 2;
+ eContestantStatus[i].condition = 0;
+ eContestantStatus[i].conditionMod = 2;
SetContestantEffectStringID(i, CONTEST_STRING_REGAINED_FORM);
numHit++;
}
}
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_TAUNT_WELL);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_TAUNT_WELL);
if (numHit == 0)
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_IGNORED);
+ SetContestantEffectStringID2(eContestResources8.contestant, CONTEST_STRING_IGNORED);
}
-// Badly startles POKéMON in good condition.
+// Badly startles POKéMON in good condition.
static void ContestEffect_BadlyStartlesMonsInGoodCondition(void)
{
u8 numHit = 0;
@@ -497,42 +497,42 @@ static void ContestEffect_BadlyStartlesMonsInGoodCondition(void)
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i])
+ if (eContestResources8.turnOrder[eContestResources8.contestant] > eContestResources8.turnOrder[i])
{
- if (sContestantStatus[i].condition > 0)
- shared192D0.jam = 40;
+ if (eContestantStatus[i].condition > 0)
+ eContestResources8.jam = 40;
else
- shared192D0.jam = 10;
- shared192D0.jamQueue[0] = i;
- shared192D0.jamQueue[1] = 0xFF;
+ eContestResources8.jam = 10;
+ eContestResources8.jamQueue[0] = i;
+ eContestResources8.jamQueue[1] = 0xFF;
if (WasAtLeastOneOpponentJammed())
numHit++;
}
}
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_JAM_WELL);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_JAM_WELL);
if (numHit == 0)
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_IGNORED);
+ SetContestantEffectStringID2(eContestResources8.contestant, CONTEST_STRING_IGNORED);
}
// The appeal works great if performed first.
static void ContestEffect_BetterIfFirst(void)
{
- if (gUnknown_02039F26[shared192D0.contestant] == 0)
+ if (gContestantTurnOrder[eContestResources8.contestant] == 0)
{
- u16 move = sContestantStatus[shared192D0.contestant].currMove;
- sContestantStatus[shared192D0.contestant].appeal2 += 2 * gContestEffects[gContestMoves[move].effect].appeal;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_HUSTLE_STANDOUT);
+ u16 move = eContestantStatus[eContestResources8.contestant].currMove;
+ eContestantStatus[eContestResources8.contestant].appeal2 += 2 * gContestEffects[gContestMoves[move].effect].appeal;
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_HUSTLE_STANDOUT);
}
}
// The appeal works great if performed last.
static void ContestEffect_BetterIfLast(void)
{
- if (gUnknown_02039F26[shared192D0.contestant] == 3)
+ if (gContestantTurnOrder[eContestResources8.contestant] == 3)
{
- u16 move = sContestantStatus[shared192D0.contestant].currMove;
- sContestantStatus[shared192D0.contestant].appeal2 += 2 * gContestEffects[gContestMoves[move].effect].appeal;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_WORK_HARD_UNNOTICED);
+ u16 move = eContestantStatus[eContestResources8.contestant].currMove;
+ eContestantStatus[eContestResources8.contestant].appeal2 += 2 * gContestEffects[gContestMoves[move].effect].appeal;
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_WORK_HARD_UNNOTICED);
}
}
@@ -544,22 +544,22 @@ static void ContestEffect_AppealAsGoodAsPrevOnes(void)
for (i = 0, appealSum = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i])
- appealSum += sContestantStatus[i].appeal2;
+ if (eContestResources8.turnOrder[eContestResources8.contestant] > eContestResources8.turnOrder[i])
+ appealSum += eContestantStatus[i].appeal2;
}
if (appealSum < 0)
appealSum = 0;
- if (shared192D0.turnOrder[shared192D0.contestant] == 0 || appealSum == 0)
+ if (eContestResources8.turnOrder[eContestResources8.contestant] == 0 || appealSum == 0)
{
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_WELL);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_APPEAL_NOT_WELL);
}
else
{
- sContestantStatus[shared192D0.contestant].appeal2 += appealSum / 2;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_WORK_BEFORE);
+ eContestantStatus[eContestResources8.contestant].appeal2 += appealSum / 2;
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_WORK_BEFORE);
}
- sContestantStatus[shared192D0.contestant].appeal2 = RoundTowardsZero(sContestantStatus[shared192D0.contestant].appeal2);
+ eContestantStatus[eContestResources8.contestant].appeal2 = RoundTowardsZero(eContestantStatus[eContestResources8.contestant].appeal2);
}
// Makes the appeal as good as the one before it.
@@ -567,45 +567,45 @@ static void ContestEffect_AppealAsGoodAsPrevOne(void)
{
s16 appeal = 0;
- if (shared192D0.turnOrder[shared192D0.contestant] != 0)
+ if (eContestResources8.turnOrder[eContestResources8.contestant] != 0)
{
int i;
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[shared192D0.contestant] - 1 == shared192D0.turnOrder[i])
- appeal = sContestantStatus[i].appeal2;
+ if (eContestResources8.turnOrder[eContestResources8.contestant] - 1 == eContestResources8.turnOrder[i])
+ appeal = eContestantStatus[i].appeal2;
}
}
- if (shared192D0.turnOrder[shared192D0.contestant] == 0 || appeal <= 0)
+ if (eContestResources8.turnOrder[eContestResources8.contestant] == 0 || appeal <= 0)
{
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_WELL2);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_APPEAL_NOT_WELL2);
}
else
{
- sContestantStatus[shared192D0.contestant].appeal2 += appeal;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_WORK_PRECEDING);
+ eContestantStatus[eContestResources8.contestant].appeal2 += appeal;
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_WORK_PRECEDING);
}
}
// The appeal works better the later it is performed.
static void ContestEffect_BetterWhenLater(void)
{
- u8 whichTurn = shared192D0.turnOrder[shared192D0.contestant];
+ u8 whichTurn = eContestResources8.turnOrder[eContestResources8.contestant];
if (whichTurn == 0)
- sContestantStatus[shared192D0.contestant].appeal2 = 10;
+ eContestantStatus[eContestResources8.contestant].appeal2 = 10;
else
- sContestantStatus[shared192D0.contestant].appeal2 = 20 * whichTurn;
+ eContestantStatus[eContestResources8.contestant].appeal2 = 20 * whichTurn;
if (whichTurn == 0)
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_SHOWN_WELL);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_APPEAL_NOT_SHOWN_WELL);
else if (whichTurn == 1)
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_SLIGHTLY_WELL);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_APPEAL_SLIGHTLY_WELL);
else if (whichTurn == 2)
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_PRETTY_WELL);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_APPEAL_PRETTY_WELL);
else
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_EXCELLENTLY);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_APPEAL_EXCELLENTLY);
}
-// The appeal’s quality varies depending on its timing.
+// The appeal's quality varies depending on its timing.
static void ContestEffect_QualityDependsOnTiming(void)
{
u8 rval = Random() % 10;
@@ -614,31 +614,31 @@ static void ContestEffect_QualityDependsOnTiming(void)
if (rval < 3)
{
appeal = 10;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_VERY_WELL);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_APPEAL_NOT_VERY_WELL);
} else if (rval < 6)
{
appeal = 20;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_SLIGHTLY_WELL2);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_APPEAL_SLIGHTLY_WELL2);
} else if (rval < 8)
{
appeal = 40;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_PRETTY_WELL2);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_APPEAL_PRETTY_WELL2);
} else if (rval < 9)
{
appeal = 60;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_VERY_WELL);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_APPEAL_VERY_WELL);
}
else
{
appeal = 80;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_EXCELLENTLY2);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_APPEAL_EXCELLENTLY2);
}
- sContestantStatus[shared192D0.contestant].appeal2 = appeal;
+ eContestantStatus[eContestResources8.contestant].appeal2 = appeal;
}
static void ContestEffect_BetterIfSameType(void)
{
- s8 turnOrder = shared192D0.turnOrder[shared192D0.contestant];
+ s8 turnOrder = eContestResources8.turnOrder[eContestResources8.contestant];
s8 i = turnOrder - 1, j;
u16 move;
@@ -649,10 +649,10 @@ static void ContestEffect_BetterIfSameType(void)
{
for (j = 0; j < 4; j++)
{
- if (shared192D0.turnOrder[j] == i)
+ if (eContestResources8.turnOrder[j] == i)
break;
}
- if (sContestantStatus[j].noMoreTurns || sContestantStatus[j].nervous || sContestantStatus[j].numTurnsSkipped)
+ if (eContestantStatus[j].noMoreTurns || eContestantStatus[j].nervous || eContestantStatus[j].numTurnsSkipped)
{
if (--i < 0)
return;
@@ -663,29 +663,29 @@ static void ContestEffect_BetterIfSameType(void)
}
}
- move = sContestantStatus[shared192D0.contestant].currMove;
- if (gContestMoves[move].contestCategory == gContestMoves[sContestantStatus[j].currMove].contestCategory)
+ move = eContestantStatus[eContestResources8.contestant].currMove;
+ if (gContestMoves[move].contestCategory == gContestMoves[eContestantStatus[j].currMove].contestCategory)
{
- sContestantStatus[shared192D0.contestant].appeal2 += gContestEffects[gContestMoves[move].effect].appeal * 2;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SAME_TYPE_GOOD);
+ eContestantStatus[eContestResources8.contestant].appeal2 += gContestEffects[gContestMoves[move].effect].appeal * 2;
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_SAME_TYPE_GOOD);
}
}
// Works well if different in type than the one before.
static void ContestEffect_BetterIfDiffType(void)
{
- if (shared192D0.turnOrder[shared192D0.contestant] != 0)
+ if (eContestResources8.turnOrder[eContestResources8.contestant] != 0)
{
- u16 move = sContestantStatus[shared192D0.contestant].currMove;
+ u16 move = eContestantStatus[eContestResources8.contestant].currMove;
int i;
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[shared192D0.contestant] - 1 == shared192D0.turnOrder[i] &&
- gContestMoves[move].contestCategory != gContestMoves[sContestantStatus[i].currMove].contestCategory)
+ if (eContestResources8.turnOrder[eContestResources8.contestant] - 1 == eContestResources8.turnOrder[i] &&
+ gContestMoves[move].contestCategory != gContestMoves[eContestantStatus[i].currMove].contestCategory)
{
- sContestantStatus[shared192D0.contestant].appeal2 += gContestEffects[gContestMoves[move].effect].appeal * 2;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_DIFF_TYPE_GOOD);
+ eContestantStatus[eContestResources8.contestant].appeal2 += gContestEffects[gContestMoves[move].effect].appeal * 2;
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_DIFF_TYPE_GOOD);
break;
}
}
@@ -695,52 +695,52 @@ static void ContestEffect_BetterIfDiffType(void)
// Affected by how well the appeal in front goes.
static void ContestEffect_AffectedByPrevAppeal(void)
{
- if (shared192D0.turnOrder[shared192D0.contestant] != 0)
+ if (eContestResources8.turnOrder[eContestResources8.contestant] != 0)
{
int i;
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[shared192D0.contestant] - 1 == shared192D0.turnOrder[i])
+ if (eContestResources8.turnOrder[eContestResources8.contestant] - 1 == eContestResources8.turnOrder[i])
{
- if (sContestantStatus[shared192D0.contestant].appeal2 > sContestantStatus[i].appeal2)
+ if (eContestantStatus[eContestResources8.contestant].appeal2 > eContestantStatus[i].appeal2)
{
- sContestantStatus[shared192D0.contestant].appeal2 *= 2;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_STOOD_OUT_AS_MUCH);
+ eContestantStatus[eContestResources8.contestant].appeal2 *= 2;
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_STOOD_OUT_AS_MUCH);
}
- else if (sContestantStatus[shared192D0.contestant].appeal2 < sContestantStatus[i].appeal2)
+ else if (eContestantStatus[eContestResources8.contestant].appeal2 < eContestantStatus[i].appeal2)
{
- sContestantStatus[shared192D0.contestant].appeal2 = 0;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_NOT_AS_WELL);
+ eContestantStatus[eContestResources8.contestant].appeal2 = 0;
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_NOT_AS_WELL);
}
}
}
}
}
-// Ups the user’s condition. Helps prevent nervousness.
+// Ups the user's condition. Helps prevent nervousness.
static void ContestEffect_ImproveConditionPreventNervousness(void)
{
- if (sContestantStatus[shared192D0.contestant].condition < 30)
+ if (eContestantStatus[eContestResources8.contestant].condition < 30)
{
- sContestantStatus[shared192D0.contestant].condition += 10;
- sContestantStatus[shared192D0.contestant].conditionMod = 1;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_CONDITION_ROSE);
+ eContestantStatus[eContestResources8.contestant].condition += 10;
+ eContestantStatus[eContestResources8.contestant].conditionMod = 1;
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_CONDITION_ROSE);
}
else
{
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_NO_CONDITION_IMPROVE);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_NO_CONDITION_IMPROVE);
}
}
-// The appeal works well if the user’s condition is good.
+// The appeal works well if the user's condition is good.
static void ContestEffect_BetterWithGoodCondition(void)
{
- sContestantStatus[shared192D0.contestant].appealTripleCondition = TRUE;
- if (sContestantStatus[shared192D0.contestant].condition != 0)
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_HOT_STATUS);
+ eContestantStatus[eContestResources8.contestant].appealTripleCondition = TRUE;
+ if (eContestantStatus[eContestResources8.contestant].condition != 0)
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_HOT_STATUS);
else
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_BAD_CONDITION_WEAK_APPEAL);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_BAD_CONDITION_WEAK_APPEAL);
}
// The next appeal can be made earlier next turn.
@@ -750,20 +750,20 @@ static void ContestEffect_NextAppealEarlier(void)
s8 j;
u8 turnOrder[4];
- if (sContest.turnNumber != 4)
+ if (eContest.turnNumber != 4)
{
for (i = 0; i < 4; i++)
- turnOrder[i] = sContestantStatus[i].nextTurnOrder;
+ turnOrder[i] = eContestantStatus[i].nextTurnOrder;
- turnOrder[shared192D0.contestant] = 0xFF;
+ turnOrder[eContestResources8.contestant] = 0xFF;
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
- if (j != shared192D0.contestant &&
+ if (j != eContestResources8.contestant &&
i == turnOrder[j] &&
- turnOrder[j] == sContestantStatus[j].nextTurnOrder)
+ turnOrder[j] == eContestantStatus[j].nextTurnOrder)
{
turnOrder[j]++;
break;
@@ -773,15 +773,15 @@ static void ContestEffect_NextAppealEarlier(void)
break;
}
- turnOrder[shared192D0.contestant] = 0;
- sContestantStatus[shared192D0.contestant].turnOrderMod = 1;
+ turnOrder[eContestResources8.contestant] = 0;
+ eContestantStatus[eContestResources8.contestant].turnOrderMod = 1;
for (i = 0; i < 4; i++)
{
- sContestantStatus[i].nextTurnOrder = turnOrder[i];
+ eContestantStatus[i].nextTurnOrder = turnOrder[i];
}
- sContestantStatus[shared192D0.contestant].turnOrderModAction = 1;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_MOVE_UP_LINE);
+ eContestantStatus[eContestResources8.contestant].turnOrderModAction = 1;
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_MOVE_UP_LINE);
}
}
@@ -792,20 +792,20 @@ static void ContestEffect_NextAppealLater(void)
s8 j;
u8 turnOrder[4];
- if (sContest.turnNumber != 4)
+ if (eContest.turnNumber != 4)
{
for (i = 0; i < 4; i++)
- turnOrder[i] = sContestantStatus[i].nextTurnOrder;
+ turnOrder[i] = eContestantStatus[i].nextTurnOrder;
- turnOrder[shared192D0.contestant] = 0xFF;
+ turnOrder[eContestResources8.contestant] = 0xFF;
for (i = 3; i > -1; i--)
{
for (j = 0; j < 4; j++)
{
- if (j != shared192D0.contestant &&
+ if (j != eContestResources8.contestant &&
i == turnOrder[j] &&
- turnOrder[j] == sContestantStatus[j].nextTurnOrder)
+ turnOrder[j] == eContestantStatus[j].nextTurnOrder)
{
turnOrder[j]--;
break;
@@ -815,19 +815,19 @@ static void ContestEffect_NextAppealLater(void)
break;
}
- turnOrder[shared192D0.contestant] = 3;
- sContestantStatus[shared192D0.contestant].turnOrderMod = 1;
+ turnOrder[eContestResources8.contestant] = 3;
+ eContestantStatus[eContestResources8.contestant].turnOrderMod = 1;
for (i = 0; i < 4; i++)
{
- sContestantStatus[i].nextTurnOrder = turnOrder[i];
+ eContestantStatus[i].nextTurnOrder = turnOrder[i];
}
- sContestantStatus[shared192D0.contestant].turnOrderModAction = 2;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_MOVE_BACK_LINE);
+ eContestantStatus[eContestResources8.contestant].turnOrderModAction = 2;
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_MOVE_BACK_LINE);
}
}
-// Makes the next turn’s order more easily scrambled.
+// Makes the next turn's order more easily scrambled.
static void ContestEffect_MakeScramblingTurnOrderEasier(void)
{
// dummied out?
@@ -841,11 +841,11 @@ static void ContestEffect_ScrambleNextTurnOrder(void)
u8 turnOrder[4];
u8 unselectedContestants[4];
- if (sContest.turnNumber != 4)
+ if (eContest.turnNumber != 4)
{
for (i = 0; i < 4; i++)
{
- turnOrder[i] = sContestantStatus[i].nextTurnOrder;
+ turnOrder[i] = eContestantStatus[i].nextTurnOrder;
unselectedContestants[i] = i;
}
@@ -871,24 +871,24 @@ static void ContestEffect_ScrambleNextTurnOrder(void)
for (i = 0; i < 4; i++)
{
- sContestantStatus[i].nextTurnOrder = turnOrder[i];
- sContestantStatus[i].turnOrderMod = 2;
+ eContestantStatus[i].nextTurnOrder = turnOrder[i];
+ eContestantStatus[i].turnOrderMod = 2;
}
- sContestantStatus[shared192D0.contestant].turnOrderModAction = 3;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SCRAMBLE_ORDER);
+ eContestantStatus[eContestResources8.contestant].turnOrderModAction = 3;
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_SCRAMBLE_ORDER);
}
}
// An appeal that excites the audience in any CONTEST.
static void ContestEffect_ExciteAudienceInAnyContest(void)
{
- if (gContestMoves[sContestantStatus[shared192D0.contestant].currMove].contestCategory != gSpecialVar_ContestCategory)
+ if (gContestMoves[eContestantStatus[eContestResources8.contestant].currMove].contestCategory != gSpecialVar_ContestCategory)
{
- sContestantStatus[shared192D0.contestant].overrideCategoryExcitementMod = TRUE;
+ eContestantStatus[eContestResources8.contestant].overrideCategoryExcitementMod = TRUE;
}
}
-// Badly startles all POKéMON that made good appeals.
+// Badly startles all POKéMON that made good appeals.
static void ContestEffect_BadlyStartleMonsWithGoodAppeals(void)
{
int i;
@@ -896,24 +896,24 @@ static void ContestEffect_BadlyStartleMonsWithGoodAppeals(void)
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i])
+ if (eContestResources8.turnOrder[eContestResources8.contestant] > eContestResources8.turnOrder[i])
{
- if (sContestantStatus[i].appeal2 > 0)
+ if (eContestantStatus[i].appeal2 > 0)
{
- shared192D0.jam = sContestantStatus[i].appeal2 / 2;
- shared192D0.jam = RoundUp(shared192D0.jam);
+ eContestResources8.jam = eContestantStatus[i].appeal2 / 2;
+ eContestResources8.jam = RoundUp(eContestResources8.jam);
}
else
- shared192D0.jam = 10;
- shared192D0.jamQueue[0] = i;
- shared192D0.jamQueue[1] = 0xFF;
+ eContestResources8.jam = 10;
+ eContestResources8.jamQueue[0] = i;
+ eContestResources8.jamQueue[1] = 0xFF;
if (WasAtLeastOneOpponentJammed())
numJammed++;
}
}
if (numJammed == 0)
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID2(eContestResources8.contestant, CONTEST_STRING_MESSED_UP2);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
}
// The appeal works best the more the crowd is excited.
@@ -921,42 +921,42 @@ static void ContestEffect_BetterWhenAudienceExcited(void)
{
s16 appeal;
- if (sContest.applauseLevel == 0)
+ if (eContest.applauseLevel == 0)
{
appeal = 10;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_VERY_WELL);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_APPEAL_NOT_VERY_WELL);
}
- else if (sContest.applauseLevel == 1)
+ else if (eContest.applauseLevel == 1)
{
appeal = 20;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_SLIGHTLY_WELL2);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_APPEAL_SLIGHTLY_WELL2);
}
- else if (sContest.applauseLevel == 2)
+ else if (eContest.applauseLevel == 2)
{
appeal = 30;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_PRETTY_WELL2);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_APPEAL_PRETTY_WELL2);
}
- else if (sContest.applauseLevel == 3)
+ else if (eContest.applauseLevel == 3)
{
appeal = 50;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_VERY_WELL);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_APPEAL_VERY_WELL);
}
else
{
appeal = 60;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_EXCELLENTLY2);
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_APPEAL_EXCELLENTLY2);
}
- sContestantStatus[shared192D0.contestant].appeal2 = appeal;
+ eContestantStatus[eContestResources8.contestant].appeal2 = appeal;
}
// Temporarily stops the crowd from growing excited.
static void ContestEffect_DontExciteAudience(void)
{
- if (!shared19328.excitementFrozen)
+ if (!eContestResources10.excitementFrozen)
{
- shared19328.excitementFrozen = TRUE;
- shared19328.excitementFreezer = shared192D0.contestant;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTRACTED_ATTENTION);
+ eContestResources10.excitementFrozen = TRUE;
+ eContestResources10.excitementFreezer = eContestResources8.contestant;
+ SetContestantEffectStringID(eContestResources8.contestant, CONTEST_STRING_ATTRACTED_ATTENTION);
}
}
@@ -967,38 +967,38 @@ static void JamByMoveCategory(u8 category)
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i])
+ if (eContestResources8.turnOrder[eContestResources8.contestant] > eContestResources8.turnOrder[i])
{
- if (category == gContestMoves[sContestantStatus[i].currMove].contestCategory)
- shared192D0.jam = 40;
+ if (category == gContestMoves[eContestantStatus[i].currMove].contestCategory)
+ eContestResources8.jam = 40;
else
- shared192D0.jam = 10;
- shared192D0.jamQueue[0] = i;
- shared192D0.jamQueue[1] = 0xFF;
+ eContestResources8.jam = 10;
+ eContestResources8.jamQueue[0] = i;
+ eContestResources8.jamQueue[1] = 0xFF;
if (WasAtLeastOneOpponentJammed())
numJammed++;
}
}
if (numJammed == 0)
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
+ SetContestantEffectStringID2(eContestResources8.contestant, CONTEST_STRING_MESSED_UP2);
}
static bool8 CanUnnerveContestant(u8 i)
{
- shared192D0.unnervedPokes[i] = 1;
- if (sContestantStatus[i].immune)
+ eContestResources8.unnervedPokes[i] = 1;
+ if (eContestantStatus[i].immune)
{
SetContestantEffectStringID(i, CONTEST_STRING_AVOID_SEEING);
return FALSE;
}
- else if (sContestantStatus[i].jamSafetyCount != 0)
+ else if (eContestantStatus[i].jamSafetyCount != 0)
{
- sContestantStatus[i].jamSafetyCount--;
+ eContestantStatus[i].jamSafetyCount--;
SetContestantEffectStringID(i, CONTEST_STRING_AVERT_GAZE);
return FALSE;
}
- else if (!sContestantStatus[i].noMoreTurns && sContestantStatus[i].numTurnsSkipped == 0)
+ else if (!eContestantStatus[i].noMoreTurns && eContestantStatus[i].numTurnsSkipped == 0)
{
return TRUE;
}
@@ -1013,32 +1013,32 @@ static bool8 WasAtLeastOneOpponentJammed(void)
s16 jamBuffer[4] = {0};
int i;
- for (i = 0; shared192D0.jamQueue[i] != 0xFF; i++)
+ for (i = 0; eContestResources8.jamQueue[i] != 0xFF; i++)
{
- u8 contestant = shared192D0.jamQueue[i];
+ u8 contestant = eContestResources8.jamQueue[i];
if (CanUnnerveContestant(contestant))
{
- shared192D0.jam2 = shared192D0.jam;
- if (sContestantStatus[contestant].moreEasilyStartled)
- shared192D0.jam2 *= 2;
- if (sContestantStatus[contestant].resistant)
+ eContestResources8.jam2 = eContestResources8.jam;
+ if (eContestantStatus[contestant].moreEasilyStartled)
+ eContestResources8.jam2 *= 2;
+ if (eContestantStatus[contestant].resistant)
{
- shared192D0.jam2 = 10;
+ eContestResources8.jam2 = 10;
SetContestantEffectStringID(contestant, CONTEST_STRING_LITTLE_DISTRACTED);
}
else
{
- shared192D0.jam2 -= sContestantStatus[contestant].jamReduction;
- if (shared192D0.jam2 <= 0)
+ eContestResources8.jam2 -= eContestantStatus[contestant].jamReduction;
+ if (eContestResources8.jam2 <= 0)
{
- shared192D0.jam2 = 0;
+ eContestResources8.jam2 = 0;
SetContestantEffectStringID(contestant, CONTEST_STRING_NOT_FAZED);
}
else
{
- JamContestant(contestant, shared192D0.jam2);
- SetStartledString(contestant, shared192D0.jam2);
- jamBuffer[contestant] = shared192D0.jam2;
+ JamContestant(contestant, eContestResources8.jam2);
+ SetStartledString(contestant, eContestResources8.jam2);
+ jamBuffer[contestant] = eContestResources8.jam2;
}
}
}
@@ -1054,8 +1054,8 @@ static bool8 WasAtLeastOneOpponentJammed(void)
static void JamContestant(u8 i, u8 jam)
{
- sContestantStatus[i].appeal2 -= jam;
- sContestantStatus[i].jam += jam;
+ eContestantStatus[i].appeal2 -= jam;
+ eContestantStatus[i].jam += jam;
}
static s16 RoundTowardsZero(s16 score)
diff --git a/src/contest_link_80F57C4.c b/src/contest_link_80F57C4.c
index 59f41d72a..bae7859b5 100644
--- a/src/contest_link_80F57C4.c
+++ b/src/contest_link_80F57C4.c
@@ -6,6 +6,7 @@
#include "contest.h"
#include "contest_link_80F57C4.h"
#include "contest_link_80FC4F4.h"
+#include "data.h"
#include "decompress.h"
#include "dma3.h"
#include "event_data.h"
@@ -86,7 +87,6 @@ struct ContestLink80F57C4
EWRAM_DATA struct ContestLink80F57C4 *gUnknown_0203A034 = NULL;
-extern const struct CompressedSpriteSheet gMonFrontPicTable[];
extern const struct BgTemplate gUnknown_0858D888[4];
extern const struct WindowTemplate gUnknown_0858D898[];
extern const struct CompressedSpriteSheet gUnknown_0858D878[];
@@ -121,7 +121,7 @@ static void sub_80F5F30(u8);
static void sub_80F5F74(u8);
static void sub_80F7144(void);
static void sub_80F68F0(u8);
-s16 sub_80F6B78(const u8 *, u8);
+s32 sub_80F6B78(const u8 *, u8);
static void sub_80F6E9C(s16, u16, u16, u16);
static void sub_80F6058(u8);
static void sub_80F7A80(u8, u8);
@@ -309,7 +309,7 @@ void sub_80F5B00(void)
gBattle_WIN1V = 0x80A0;
CreateTask(sub_80F68B4, 20);
sub_80F7880();
- if (gIsLinkContest & 0x2)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_WIRELESS)
gPaletteFade.bufferTransferDisabled = 1;
else
PlayBGM(MUS_CON_K);
@@ -351,12 +351,12 @@ static void sub_80F5CE4(u8 taskId)
{
u16 var;
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
switch (gTasks[taskId].data[0])
{
case 0:
- sub_80DBED4();
+ SaveLinkContestResults();
if (gContestFinalStandings[gContestPlayerMonIndex] == 0)
{
IncrementGameStat(GAME_STAT_WON_LINK_CONTEST);
@@ -381,7 +381,7 @@ static void sub_80F5CE4(u8 taskId)
break;
case 1:
gTasks[taskId].data[0]++;
- if (!(gIsLinkContest & 0x2))
+ if (!(gLinkContestFlags & LINK_CONTEST_FLAG_IS_WIRELESS))
gTasks[taskId].data[0] = 100;
break;
case 2:
@@ -406,7 +406,7 @@ static void sub_80F5CE4(u8 taskId)
if (!gPaletteFade.active)
{
gTasks[taskId].data[0] = 0;
- if (gIsLinkContest & 0x1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
sub_80F707C(gText_CommunicationStandby);
gTasks[taskId].func = sub_80F5ED8;
@@ -742,7 +742,7 @@ static void sub_80F66B4(u8 taskId)
if (gMain.newKeys & A_BUTTON)
{
- if (!(gIsLinkContest & 0x1))
+ if (!(gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK))
{
for (i = 0; i < 4; i++)
{
@@ -758,7 +758,7 @@ static void sub_80F66B4(u8 taskId)
static void sub_80F671C(u8 taskId)
{
- if (gIsLinkContest & 0x1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
if (!gTasks[taskId].data[10])
{
@@ -777,7 +777,7 @@ static void sub_80F677C(u8 taskId)
{
if (!gReceivedRemoteLinkPlayers)
{
- if (gIsLinkContest & 0x2)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_WIRELESS)
DestroyWirelessStatusIndicatorSprite();
sub_80F7144();
@@ -787,7 +787,7 @@ static void sub_80F677C(u8 taskId)
static void sub_80F67C4(u8 taskId)
{
- if (!(gIsLinkContest & 0x1))
+ if (!(gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK))
BravoTrainerPokemonProfile_BeforeInterview2(gContestFinalStandings[gContestPlayerMonIndex]);
BeginHardwarePaletteFade(0xFF, 0, 0, 16, 0);
@@ -907,9 +907,9 @@ static void sub_80F6AE8(void)
u16 sheet;
u8 spriteId;
- if (gIsLinkContest & 0x2)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_WIRELESS)
{
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(8, 8);
gSprites[gWirelessStatusIndicatorSpriteId].subpriority = 1;
sheet = LoadSpriteSheet(&gUnknown_0858D8E0);
@@ -919,39 +919,76 @@ static void sub_80F6AE8(void)
}
}
-// s16 sub_80F6B78(const u8 *text, u8 spriteId)
-// {
-// int i;
-// int origWidth, strWidth;
-// const u8 *r8;
-// u8 sp10[0x10];
-// struct WindowTemplate windowTemplate;
-// int spC;
-// u8 *windowTileData;
-// u8 windowId;
-
-// memset(windowTemplate, 0, sizeof(*windowTemplate));
-// windowTemplate.width = 30;
-// windowTemplate.height = 2;
-// windowId = AddWindow(&windowTemplate);
-// FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
-// origWidth = GetStringWidth(1, text, 0) + 9;
-// strWidth = origWidth;
-// if (strWidth < 0)
-// strWidth += 7;
-
-// strWidth >>= 3;
-// if (strWidth > 30)
-// strWidth = 30;
-
-// AddTextPrinterParameterized3(windowId, 1, (strWidth * 8 - origWidth) / 2, 1, gUnknown_0858D8E8, -1, text);
-// windowTileData = (u8 *)GetWindowAttribute(windowId, WINDOW_TILE_DATA);
-// r8 = gUnknown_0858D6D0;
-// // ....
-// }
+// Functionally equivalent, the same except compiler generated variables from
+// src are placed on different stack positions.
+
+#ifdef NONMATCHING
+s32 sub_80F6B78(const u8 *text, u8 spriteId)
+{
+ u8 *windowTilesPtr;
+ u16 windowId;
+ int origWidth;
+ struct WindowTemplate windowTemplate;
+ int strWidth;
+ u8 *spriteTilePtrs[4];
+ u8 *dst;
+ int i;
+ struct Sprite *sprite;
+ const u8 *src; // The culprit.
+
+ memset(&windowTemplate, 0, sizeof(windowTemplate));
+ windowTemplate.width = 30;
+ windowTemplate.height = 2;
+ windowId = AddWindow(&windowTemplate);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+
+ origWidth = GetStringWidth(1, text, 0);
+ strWidth = (origWidth + 9) / 8;
+ if (strWidth > 30)
+ strWidth = 30;
+
+ AddTextPrinterParameterized3(windowId, 1, (strWidth * 8 - origWidth) / 2, 1, gUnknown_0858D8E8, -1, text);
+ windowTilesPtr = (u8 *)(GetWindowAttribute(windowId, WINDOW_TILE_DATA));
+ src = (u8 *)(gUnknown_0858D6D0);
+
+ sprite = &gSprites[spriteId];
+ spriteTilePtrs[0] = (u8 *)(sprite->oam.tileNum * 32 + VRAM + 0x10000);
+
+ for (i = 1; i < 4; i++)
+ spriteTilePtrs[i] = (void*)(gSprites[sprite->data[i - 1]].oam.tileNum * 32 + VRAM + 0x10000);
+
+ for (i = 0; i < 4; i++)
+ CpuFill32(0, spriteTilePtrs[i], 0x400);
+
+ dst = spriteTilePtrs[0];
+ CpuCopy32(src, dst, 0x20);
+ CpuCopy32(src + 128, dst + 0x100, 0x20);
+ CpuCopy32(src + 128, dst + 0x200, 0x20);
+ CpuCopy32(src + 64, dst + 0x300, 0x20);
+
+ for (i = 0; i < strWidth; i++)
+ {
+ dst = &spriteTilePtrs[(i + 1) / 8][((i + 1) % 8) * 32];
+ CpuCopy32(src + 192, dst, 0x20);
+ CpuCopy32(windowTilesPtr, dst + 0x100, 0x20);
+ CpuCopy32(windowTilesPtr + 960, dst + 0x200, 0x20);
+ CpuCopy32(src + 224, dst + 0x300, 0x20);
+ windowTilesPtr += 0x20;
+ }
+
+ dst = &spriteTilePtrs[(i + 1) / 8][((i + 1) % 8) * 32];
+ CpuCopy32(src + 32, dst, 0x20);
+ CpuCopy32(src + 160, dst + 0x100, 0x20);
+ CpuCopy32(src + 160, dst + 0x200, 0x20);
+ CpuCopy32(src + 96, dst + 0x300, 0x20);
+ RemoveWindow(windowId);
+
+ return (240 - (strWidth + 2) * 8) / 2;
+}
+#else
NAKED
-s16 sub_80F6B78(const u8 *text, u8 spriteId)
+s32 sub_80F6B78(const u8 *text, u8 spriteId)
{
asm_unified("\n\
push {r4-r7,lr}\n\
@@ -1224,6 +1261,7 @@ _080F6D3E:\n\
bx r1\n\
.pool");
}
+#endif // NONMATCHING
static void sub_80F6DC0(void)
{
@@ -1392,7 +1430,7 @@ static void sub_80F71C8(void)
x = 5;
y = 1;
- if (gIsLinkContest & 0x1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
CopyToBgTilemapBufferRect(2, gUnknown_08DC6498, 5, 1, 5, 2);
x = 10;
@@ -1630,7 +1668,7 @@ void sub_80F7768(struct Sprite *sprite)
sprite->pos1.y++;
if (gUnknown_0203A034->unk0->unk9)
sprite->invisible = 1;
-
+
if (sprite->pos1.x > 248 || sprite->pos1.y > 116)
{
DestroySprite(sprite);
@@ -2091,7 +2129,7 @@ _080F7A70:\n\
// if (spC)
// PlaySE(SE_PIN);
-
+
// if (sp8)
// PlaySE(SE_BAN);
// }
@@ -2358,38 +2396,32 @@ _080F7C96:\n\
bx r0");
}
-#ifdef NONMATCHING
void sub_80F7CA8(u8 taskId)
{
- register int r4 asm("r4");
- int r9;
- u8 r6;
- s16 r7;
- s16 r12;
int i;
u8 var0;
u16 tileNum;
+ bool32 r4 = FALSE;
+ bool32 endTask = FALSE;
+ u8 r6 = gTasks[taskId].data[0];
+ s16 r7 = gTasks[taskId].data[1];
+ s16 r12 = gTasks[taskId].data[2];
- r4 = 0;
- r9 = 0;
- r6 = gTasks[taskId].data[0];
- r7 = gTasks[taskId].data[1];
- r12 = gTasks[taskId].data[2];
if (r12)
{
if (gUnknown_0203A034->unk0->unkC[r6] <= 0)
- r4 = 1;
+ r4 = TRUE;
}
else
{
if (gUnknown_0203A034->unk0->unkC[r6] > 87)
- r4 = 1;
+ r4 = TRUE;
}
if (gUnknown_0203A034->unk0->unkC[r6] == r7)
- r9 = 1;
+ endTask = TRUE;
- if (!r9)
+ if (!endTask)
{
if (r4)
gUnknown_0203A034->unk0->unkC[r6] = r7;
@@ -2399,220 +2431,32 @@ void sub_80F7CA8(u8 taskId)
gUnknown_0203A034->unk0->unkC[r6] = gUnknown_0203A034->unk0->unkC[r6] + 1;
}
- if (!r4 && !r9)
+ if (!r4 && !endTask)
{
for (i = 0; i < 11; i++)
{
if (gUnknown_0203A034->unk0->unkC[r6] >= (i + 1) * 8)
- {
var0 = 8;
- }
else if (gUnknown_0203A034->unk0->unkC[r6] >= i * 8)
- {
- int var2 = gUnknown_0203A034->unk0->unkC[r6];
- int var1 = var2;
- if (var1 < 0)
- var1 += 7;
-
- var0 = var2 - ((var1 >> 3) << 3);
- }
+ var0 = gUnknown_0203A034->unk0->unkC[r6] % 8;
else
- {
var0 = 0;
- }
if (var0 < 4)
- tileNum = 0x504C;
+ tileNum = 0x504C + var0;
else
- tileNum = 0x5057;
+ tileNum = 0x5057 + var0;
- FillBgTilemapBufferRect_Palette0(2, tileNum + var0, i + 7, r6 * 3 + 6, 1, 1);
+ FillBgTilemapBufferRect_Palette0(2, tileNum, i + 7, r6 * 3 + 6, 1, 1);
}
}
-
- if (r9)
+
+ if (endTask)
{
gUnknown_0203A034->unk0->unk14--;
DestroyTask(taskId);
}
}
-#else
-NAKED
-void sub_80F7CA8(u8 taskId)
-{
- asm_unified("\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- sub sp, 0x8\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r8, r0\n\
- movs r4, 0\n\
- mov r9, r4\n\
- ldr r1, =gTasks\n\
- lsls r0, 2\n\
- add r0, r8\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- ldrb r6, [r0, 0x8]\n\
- ldrh r7, [r0, 0xA]\n\
- ldrh r1, [r0, 0xC]\n\
- mov r12, r1\n\
- movs r2, 0xC\n\
- ldrsh r0, [r0, r2]\n\
- cmp r0, 0\n\
- beq _080F7CF8\n\
- ldr r2, =gUnknown_0203A034\n\
- ldr r0, [r2]\n\
- ldr r0, [r0]\n\
- lsls r1, r6, 1\n\
- adds r0, 0xC\n\
- adds r0, r1\n\
- movs r3, 0\n\
- ldrsh r0, [r0, r3]\n\
- adds r5, r1, 0\n\
- cmp r0, 0\n\
- bgt _080F7D10\n\
- b _080F7D0E\n\
- .pool\n\
-_080F7CF8:\n\
- ldr r2, =gUnknown_0203A034\n\
- ldr r0, [r2]\n\
- ldr r0, [r0]\n\
- lsls r1, r6, 1\n\
- adds r0, 0xC\n\
- adds r0, r1\n\
- movs r3, 0\n\
- ldrsh r0, [r0, r3]\n\
- adds r5, r1, 0\n\
- cmp r0, 0x57\n\
- ble _080F7D10\n\
-_080F7D0E:\n\
- movs r4, 0x1\n\
-_080F7D10:\n\
- ldr r0, [r2]\n\
- ldr r0, [r0]\n\
- adds r0, 0xC\n\
- adds r2, r0, r5\n\
- ldrh r3, [r2]\n\
- movs r0, 0\n\
- ldrsh r1, [r2, r0]\n\
- lsls r0, r7, 16\n\
- asrs r0, 16\n\
- cmp r1, r0\n\
- bne _080F7D2A\n\
- movs r1, 0x1\n\
- mov r9, r1\n\
-_080F7D2A:\n\
- mov r0, r9\n\
- cmp r0, 0\n\
- bne _080F7D4A\n\
- cmp r4, 0\n\
- beq _080F7D3C\n\
- strh r7, [r2]\n\
- b _080F7D4A\n\
- .pool\n\
-_080F7D3C:\n\
- mov r1, r12\n\
- cmp r1, 0\n\
- beq _080F7D46\n\
- subs r0, r3, 0x1\n\
- b _080F7D48\n\
-_080F7D46:\n\
- adds r0, r3, 0x1\n\
-_080F7D48:\n\
- strh r0, [r2]\n\
-_080F7D4A:\n\
- cmp r4, 0\n\
- bne _080F7DC4\n\
- mov r2, r9\n\
- cmp r2, 0\n\
- bne _080F7DCA\n\
- movs r2, 0\n\
-_080F7D56:\n\
- ldr r0, =gUnknown_0203A034\n\
- ldr r0, [r0]\n\
- ldr r0, [r0]\n\
- adds r0, 0xC\n\
- adds r0, r5\n\
- movs r1, 0\n\
- ldrsh r3, [r0, r1]\n\
- adds r0, r2, 0x1\n\
- lsls r1, r0, 3\n\
- adds r4, r0, 0\n\
- cmp r3, r1\n\
- blt _080F7D78\n\
- movs r0, 0x8\n\
- b _080F7D94\n\
- .pool\n\
-_080F7D78:\n\
- lsls r0, r2, 3\n\
- cmp r3, r0\n\
- blt _080F7D92\n\
- adds r0, r3, 0\n\
- cmp r3, 0\n\
- bge _080F7D86\n\
- adds r0, r3, 0x7\n\
-_080F7D86:\n\
- asrs r0, 3\n\
- lsls r0, 3\n\
- subs r0, r3, r0\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- b _080F7D94\n\
-_080F7D92:\n\
- movs r0, 0\n\
-_080F7D94:\n\
- cmp r0, 0x3\n\
- bhi _080F7DA0\n\
- ldr r3, =0x0000504c\n\
- b _080F7DA2\n\
- .pool\n\
-_080F7DA0:\n\
- ldr r3, =0x00005057\n\
-_080F7DA2:\n\
- adds r1, r0, r3\n\
- adds r2, 0x7\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- adds r3, r5, r6\n\
- adds r3, 0x6\n\
- lsls r3, 24\n\
- movs r0, 0x1\n\
- str r0, [sp]\n\
- str r0, [sp, 0x4]\n\
- movs r0, 0x2\n\
- lsrs r3, 24\n\
- bl FillBgTilemapBufferRect_Palette0\n\
- adds r2, r4, 0\n\
- cmp r2, 0xA\n\
- ble _080F7D56\n\
-_080F7DC4:\n\
- mov r0, r9\n\
- cmp r0, 0\n\
- beq _080F7DDC\n\
-_080F7DCA:\n\
- ldr r0, =gUnknown_0203A034\n\
- ldr r0, [r0]\n\
- ldr r1, [r0]\n\
- ldrb r0, [r1, 0x14]\n\
- subs r0, 0x1\n\
- strb r0, [r1, 0x14]\n\
- mov r0, r8\n\
- bl DestroyTask\n\
-_080F7DDC:\n\
- add sp, 0x8\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool");
-}
-#endif // NONMATCHING
static void sub_80F7DF4(void)
{
@@ -2830,7 +2674,7 @@ void sub_80F8390(void)
void sub_80F83D0(void)
{
- SetMainCallback2(sub_80D7B24);
+ SetMainCallback2(CB2_StartContest);
}
static void sub_80F83E0(u8 taskId)
@@ -2886,7 +2730,7 @@ void sub_80F84C4(u8 taskId)
static void sub_80F8508(u8 taskId)
{
- if (gIsLinkContest & 0x4)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_HAS_RS_PLAYER)
{
sub_80DA8C8(gContestMonPartyIndex);
SetTaskFuncWithFollowupFunc(taskId, sub_80FC6BC, sub_80F8568);
@@ -2913,10 +2757,9 @@ static void sub_80F85A0(u8 taskId)
SetTaskFuncWithFollowupFunc(taskId, sub_80FC894, sub_80F85BC);
}
-#ifdef NONMATCHING
static void sub_80F85BC(u8 taskId)
{
- u32 i;
+ u8 i;
u8 sp0[4];
u8 sp4[4];
@@ -2926,9 +2769,10 @@ static void sub_80F85BC(u8 taskId)
for (i = 0; i < gNumLinkContestPlayers; i++)
sp0[i] = gTasks[taskId].data[i + 1];
- for (i = 0; i < gNumLinkContestPlayers; i++)
+ for (i = 0; i < gNumLinkContestPlayers;)
{
- if (sp0[0] != sp0[i + 1])
+ i++;
+ if (i >= gNumLinkContestPlayers || sp0[0] != sp0[i])
break;
}
@@ -2939,137 +2783,15 @@ static void sub_80F85BC(u8 taskId)
for (i = 0; i < gNumLinkContestPlayers; i++)
sp4[i] = gTasks[taskId].data[i + 5];
-
+
gUnknown_02039F2B = sub_80F86E0(sp4);
sub_80DB09C(gSpecialVar_ContestCategory);
SetTaskFuncWithFollowupFunc(taskId, sub_80FCF40, sub_80F86B8);
}
-#else
-NAKED
-static void sub_80F85BC(u8 taskId)
-{
- asm_unified("\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- sub sp, 0x8\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- str r0, [sp, 0x4]\n\
- movs r3, 0\n\
- ldr r5, =gNumLinkContestPlayers\n\
- mov r12, r5\n\
- ldr r0, =gSpecialVar_0x8004\n\
- mov r9, r0\n\
- add r1, sp, 0x4\n\
- mov r8, r1\n\
- ldrb r0, [r5]\n\
- cmp r3, r0\n\
- bcs _080F8606\n\
- lsls r0, r6, 2\n\
- adds r0, r6\n\
- lsls r4, r0, 3\n\
- ldr r7, =gTasks + 0x8\n\
-_080F85EC:\n\
- mov r1, sp\n\
- adds r2, r1, r3\n\
- adds r1, r3, 0x1\n\
- lsls r0, r1, 1\n\
- adds r0, r4\n\
- adds r0, r7\n\
- ldrh r0, [r0]\n\
- strb r0, [r2]\n\
- lsls r1, 24\n\
- lsrs r3, r1, 24\n\
- ldrb r0, [r5]\n\
- cmp r3, r0\n\
- bcc _080F85EC\n\
-_080F8606:\n\
- movs r3, 0\n\
- mov r1, r12\n\
- ldrb r0, [r1]\n\
- cmp r3, r0\n\
- bcs _080F862A\n\
- adds r4, r0, 0\n\
- mov r2, sp\n\
-_080F8614:\n\
- adds r0, r3, 0x1\n\
- lsls r0, 24\n\
- lsrs r3, r0, 24\n\
- cmp r3, r4\n\
- bcs _080F862A\n\
- mov r0, sp\n\
- adds r1, r0, r3\n\
- ldrb r0, [r2]\n\
- ldrb r1, [r1]\n\
- cmp r0, r1\n\
- beq _080F8614\n\
-_080F862A:\n\
- mov r1, r12\n\
- ldrb r1, [r1]\n\
- cmp r3, r1\n\
- bne _080F8644\n\
- movs r0, 0\n\
- b _080F8646\n\
- .pool\n\
-_080F8644:\n\
- movs r0, 0x1\n\
-_080F8646:\n\
- mov r1, r9\n\
- strh r0, [r1]\n\
- movs r3, 0\n\
- mov r4, r12\n\
- ldrb r0, [r4]\n\
- cmp r3, r0\n\
- bcs _080F8678\n\
- mov r5, r8\n\
- lsls r0, r6, 2\n\
- adds r0, r6\n\
- lsls r2, r0, 3\n\
- ldr r7, =gTasks + 0x8\n\
-_080F865E:\n\
- adds r1, r5, r3\n\
- adds r0, r3, 0x5\n\
- lsls r0, 1\n\
- adds r0, r2\n\
- adds r0, r7\n\
- ldrh r0, [r0]\n\
- strb r0, [r1]\n\
- adds r0, r3, 0x1\n\
- lsls r0, 24\n\
- lsrs r3, r0, 24\n\
- ldrb r1, [r4]\n\
- cmp r3, r1\n\
- bcc _080F865E\n\
-_080F8678:\n\
- mov r0, r8\n\
- bl sub_80F86E0\n\
- ldr r1, =gUnknown_02039F2B\n\
- strb r0, [r1]\n\
- ldr r0, =gSpecialVar_ContestCategory\n\
- ldrb r0, [r0]\n\
- bl sub_80DB09C\n\
- ldr r1, =sub_80FCF40\n\
- ldr r2, =sub_80F86B8\n\
- adds r0, r6, 0\n\
- bl SetTaskFuncWithFollowupFunc\n\
- add sp, 0x8\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool");
-}
-#endif // NONMATCHING
static void sub_80F86B8(u8 taskId)
{
- sub_80DCE58(0);
+ SortContestants(FALSE);
SetTaskFuncWithFollowupFunc(taskId, sub_80FCFD0, sub_80F8714);
}
diff --git a/src/contest_link_80FC4F4.c b/src/contest_link_80FC4F4.c
index f582626f8..d6cfea638 100644
--- a/src/contest_link_80FC4F4.c
+++ b/src/contest_link_80FC4F4.c
@@ -72,22 +72,22 @@ static void sub_80FC5DC(u8 taskId)
gContestPlayerMonIndex = GetMultiplayerId();
gNumLinkContestPlayers = GetLinkPlayerCount();
- gIsLinkContest = 1;
+ gLinkContestFlags = LINK_CONTEST_FLAG_IS_LINK;
if (gWirelessCommType == 1)
- gIsLinkContest = 3;
+ gLinkContestFlags = LINK_CONTEST_FLAG_IS_LINK | LINK_CONTEST_FLAG_IS_WIRELESS;
for (i = 0; i < gNumLinkContestPlayers && (u32)(gLinkPlayers[i].version & 0xFF) - 1 > VERSION_RUBY - 1; i++)
;
if (i < gNumLinkContestPlayers)
- gIsLinkContest |= 0x4;
+ gLinkContestFlags |= LINK_CONTEST_FLAG_HAS_RS_PLAYER;
SwitchTaskToFollowupFunc(taskId);
}
bool32 sub_80FC670(s16 *arg0)
{
- if (gIsLinkContest & 0x4)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_HAS_RS_PLAYER)
return TRUE;
switch (*arg0)
@@ -269,7 +269,7 @@ void sub_80FC9F8(u8 taskId)
case 0:
if (IsLinkTaskFinished())
{
- if (sub_80FC4F4(&gContestResources->field_4[gContestPlayerMonIndex].currMove, sizeof(gContestResources->field_4[gContestPlayerMonIndex].currMove)) == TRUE)
+ if (sub_80FC4F4(&eContestantStatus[gContestPlayerMonIndex].currMove, sizeof(eContestantStatus[gContestPlayerMonIndex].currMove)) == TRUE)
gTasks[taskId].data[0]++;
}
break;
@@ -277,7 +277,7 @@ void sub_80FC9F8(u8 taskId)
if (sub_80FC55C())
{
for (i = 0; i < gNumLinkContestPlayers; i++)
- gContestResources->field_4[i].currMove = gBlockRecvBuffer[i][0];
+ eContestantStatus[i].currMove = gBlockRecvBuffer[i][0];
gTasks[taskId].data[0]++;
}
@@ -373,14 +373,14 @@ void sub_80FCC88(u8 taskId)
case 0:
if (IsLinkTaskFinished())
{
- if (sub_80FC4F4(gContestResources->field_4, 4 * sizeof(struct ContestantStatus)) == 1)
+ if (sub_80FC4F4(eContestantStatus, 4 * sizeof(struct ContestantStatus)) == 1)
gTasks[taskId].data[0]++;
}
break;
case 1:
if (sub_80FC55C())
{
- memcpy(gContestResources->field_4, gBlockRecvBuffer[gUnknown_02039F2B], 4 * sizeof(struct ContestantStatus));
+ memcpy(eContestantStatus, gBlockRecvBuffer[gUnknown_02039F2B], 4 * sizeof(struct ContestantStatus));
gTasks[taskId].data[0]++;
}
break;
@@ -425,14 +425,14 @@ void sub_80FCC88(u8 taskId)
case 9:
if (IsLinkTaskFinished())
{
- if (sub_80FC4F4(gUnknown_02039F26, sizeof(gUnknown_02039F26)) == 1)
+ if (sub_80FC4F4(gContestantTurnOrder, sizeof(gContestantTurnOrder)) == 1)
gTasks[taskId].data[0]++;
}
break;
case 10:
if (sub_80FC55C())
{
- memcpy(gUnknown_02039F26, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gUnknown_02039F26));
+ memcpy(gContestantTurnOrder, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gContestantTurnOrder));
gTasks[taskId].data[0]++;
}
break;
@@ -528,14 +528,14 @@ void sub_80FCFD0(u8 taskId)
case 0:
if (IsLinkTaskFinished())
{
- if (sub_80FC4F4(gUnknown_02039F26, sizeof(gUnknown_02039F26)) == 1)
+ if (sub_80FC4F4(gContestantTurnOrder, sizeof(gContestantTurnOrder)) == 1)
gTasks[taskId].data[0]++;
}
break;
case 1:
if (sub_80FC55C())
{
- memcpy(gUnknown_02039F26, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gUnknown_02039F26));
+ memcpy(gContestantTurnOrder, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gContestantTurnOrder));
gTasks[taskId].data[0]++;
}
break;
diff --git a/src/contest_link_81D9DE4.c b/src/contest_link_81D9DE4.c
index 4b56c9c38..8060b6cdc 100644
--- a/src/contest_link_81D9DE4.c
+++ b/src/contest_link_81D9DE4.c
@@ -134,7 +134,7 @@ static void sub_81DA10C(u8 taskId)
static void sub_81DA138(u8 taskId)
{
- sub_80DCE58(0);
+ SortContestants(FALSE);
SetTaskFuncWithFollowupFunc(taskId, sub_80FCFD0, sub_80F8714);
}
diff --git a/src/contest_painting.c b/src/contest_painting.c
index 87598f2bd..b43923c7b 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -1,11 +1,12 @@
#include "global.h"
#include "alloc.h"
#include "battle.h"
+#include "battle_gfx_sfx_util.h"
#include "bg.h"
#include "contest.h"
#include "contest_painting.h"
#include "contest_painting_effects.h"
-#include "battle_gfx_sfx_util.h"
+#include "data.h"
#include "decompress.h"
#include "gpu_regs.h"
#include "international_string_util.h"
@@ -44,8 +45,6 @@ static void VBlankCB_ContestPainting(void);
static void sub_8130380(u8 *spritePixels, u16 *palette, u16 (*destColorBuffer)[64][64]);
extern const u8 gUnknown_0827EA0C[];
-extern const struct CompressedSpriteSheet gMonFrontPicTable[];
-extern const struct CompressedSpriteSheet gMonBackPicTable[];
extern const u8 gContestCoolness[];
extern const u8 gContestBeauty[];
extern const u8 gContestCuteness[];
diff --git a/src/data2b.c b/src/data.c
index af76390a4..7aebd63ed 100644
--- a/src/data2b.c
+++ b/src/data.c
@@ -1,11 +1,17 @@
#include "global.h"
-#include "data2.h"
-#include "graphics.h"
#include "alloc.h"
+#include "battle.h"
+#include "data.h"
+#include "graphics.h"
+#include "constants/items.h"
+#include "constants/moves.h"
#include "constants/species.h"
+#include "constants/trainers.h"
+#include "constants/battle_ai.h"
const u16 gUnknown_082FF1D8[] = INCBIN_U16("graphics/link/minigame_digits.gbapal");
const u32 gUnknown_082FF1F8[] = INCBIN_U32("graphics/link/minigame_digits.4bpp.lz");
+// unused
const u32 gUnknown_082FF2B8[] = INCBIN_U32("graphics/link/minigame_digits2.4bpp.lz");
const struct SpriteFrameImage gUnknown_082FF3A8[] =
@@ -106,45 +112,45 @@ const struct SpriteFrameImage gTrainerBackPicTable_Steven[] =
gTrainerBackPic_Steven + 0x1800, 0x0800,
};
-const union AnimCmd gAnimCmd_General_Frame0[] =
+static const union AnimCmd sAnim_GeneralFrame0[] =
{
ANIMCMD_FRAME(0, 0),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_General_Frame3[] =
+static const union AnimCmd sAnim_GeneralFrame3[] =
{
ANIMCMD_FRAME(3, 0),
ANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_082FF548[] =
+static const union AffineAnimCmd gUnknown_082FF548[] =
{
AFFINEANIMCMD_FRAME(0x0100, 0x0100, 0x00, 0x00),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_082FF558[] =
+static const union AffineAnimCmd gUnknown_082FF558[] =
{
AFFINEANIMCMD_FRAME(0xff00, 0x0100, 0x00, 0x00),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_082FF568[] =
+static const union AffineAnimCmd gUnknown_082FF568[] =
{
AFFINEANIMCMD_FRAME(0x0028, 0x0028, 0x00, 0x00),
AFFINEANIMCMD_FRAME(0x0012, 0x0012, 0x00, 0x0c),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_082FF580[] =
+static const union AffineAnimCmd gUnknown_082FF580[] =
{
AFFINEANIMCMD_FRAME(0xfffe, 0xfffe, 0x00, 0x12),
AFFINEANIMCMD_FRAME(0xfff0, 0xfff0, 0x00, 0x0f),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_082FF598[] =
+static const union AffineAnimCmd gUnknown_082FF598[] =
{
AFFINEANIMCMD_FRAME(0x00a0, 0x0100, 0x00, 0x00),
AFFINEANIMCMD_FRAME(0x0004, 0x0000, 0x00, 0x08),
@@ -152,39 +158,39 @@ const union AffineAnimCmd gUnknown_082FF598[] =
AFFINEANIMCMD_JUMP(1),
};
-const union AffineAnimCmd gUnknown_082FF5B8[] =
+static const union AffineAnimCmd gUnknown_082FF5B8[] =
{
AFFINEANIMCMD_FRAME(0x0002, 0x0002, 0x00, 0x14),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_082FF5C8[] =
+static const union AffineAnimCmd gUnknown_082FF5C8[] =
{
AFFINEANIMCMD_FRAME(0xfffe, 0xfffe, 0x00, 0x14),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_082FF5D8[] =
+static const union AffineAnimCmd gUnknown_082FF5D8[] =
{
AFFINEANIMCMD_FRAME(0x0100, 0x0100, 0x00, 0000),
AFFINEANIMCMD_FRAME(0xfff0, 0xfff0, 0x00, 0x09),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_082FF5F0[] =
+static const union AffineAnimCmd gUnknown_082FF5F0[] =
{
AFFINEANIMCMD_FRAME(0x0004, 0x0004, 0x00, 0x3f),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_082FF600[] =
+static const union AffineAnimCmd gUnknown_082FF600[] =
{
AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0xfd, 0x05),
AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0x03, 0x05),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd * const gUnknown_082FF618[] =
+const union AffineAnimCmd *const gUnknown_082FF618[] =
{
gUnknown_082FF548,
gUnknown_082FF568,
@@ -197,20 +203,20 @@ const union AffineAnimCmd * const gUnknown_082FF618[] =
gUnknown_082FF5D8,
};
-const union AffineAnimCmd gUnknown_082FF63C[] =
+static const union AffineAnimCmd gUnknown_082FF63C[] =
{
AFFINEANIMCMD_FRAME(0xfffc, 0xfffc, 0x04, 0x3f),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_082FF64C[] =
+static const union AffineAnimCmd gUnknown_082FF64C[] =
{
AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0x03, 0x05),
AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0xfd, 0x05),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_082FF664[] =
+static const union AffineAnimCmd gUnknown_082FF664[] =
{
AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0xfb, 0x14),
AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0x00, 0x14),
@@ -218,13 +224,13 @@ const union AffineAnimCmd gUnknown_082FF664[] =
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_082FF684[] =
+static const union AffineAnimCmd gUnknown_082FF684[] =
{
AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0x09, 0x6e),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd * const gUnknown_082FF694[] =
+const union AffineAnimCmd *const gUnknown_082FF694[] =
{
gUnknown_082FF548,
gUnknown_082FF568,
@@ -239,7 +245,7 @@ const union AffineAnimCmd * const gUnknown_082FF694[] =
gUnknown_082FF684,
};
-const union AffineAnimCmd * const gUnknown_082FF6C0[] =
+const union AffineAnimCmd *const gUnknown_082FF6C0[] =
{
gUnknown_082FF558,
gUnknown_082FF568,
@@ -254,6 +260,47 @@ const union AffineAnimCmd * const gUnknown_082FF6C0[] =
gUnknown_082FF684,
};
+static const union AnimCmd gUnknown_082FF6EC[] =
+{
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_082FF6F4[] =
+{
+ ANIMCMD_FRAME(1, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_082FF6FC[] =
+{
+ ANIMCMD_FRAME(2, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_082FF704[] =
+{
+ ANIMCMD_FRAME(3, 0),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_082FF70C[] =
+{
+ gUnknown_082FF6EC,
+ gUnknown_082FF6F4,
+ gUnknown_082FF6FC,
+ gUnknown_082FF704,
+};
+
+#define SPECIES_SPRITE(species, sprite) [SPECIES_##species] = {sprite, 0x800, SPECIES_##species}
+#define SPECIES_PAL(species, pal) [SPECIES_##species] = {pal, SPECIES_##species}
+#define SPECIES_SHINY_PAL(species, pal) [SPECIES_##species] = {pal, SPECIES_##species + SPECIES_SHINY_TAG}
+
+#define TRAINER_SPRITE(trainerPic, sprite, size) [TRAINER_PIC_##trainerPic] = {sprite, size, TRAINER_PIC_##trainerPic}
+#define TRAINER_PAL(trainerPic, pal) [TRAINER_PIC_##trainerPic] = {pal, TRAINER_PIC_##trainerPic}
+
+#define TRAINER_BACK_PAL(trainerPic, pal) [TRAINER_BACK_PIC_##trainerPic] = {pal, TRAINER_BACK_PIC_##trainerPic}
+
#include "data/pokemon_graphics/unknown_anims.h"
#include "data/pokemon_graphics/front_pic_coordinates.h"
#include "data/pokemon_graphics/still_front_pic_table.h"
@@ -269,10 +316,11 @@ const union AffineAnimCmd * const gUnknown_082FF6C0[] =
#include "data/trainer_graphics/back_pic_tables.h"
#include "data/pokemon_graphics/enemy_mon_elevation.h"
-#include "data/pokemon_graphics/front_anims.h"
+#include "data/pokemon_graphics/front_pic_anims.h"
#include "data/pokemon_graphics/front_pic_table.h"
-const u32 gUnknown830AF4C[] = // Potentially part of battle_data.c
+// unused
+const u32 gUnknown830AF4C[] =
{
0x00000888, 0x00000888, 0x00000888, 0x00000888,
0x00000088, 0x00000888, 0x00000888, 0x00000886,
@@ -385,3 +433,9 @@ const u32 gUnknown830AF4C[] = // Potentially part of battle_data.c
0x00000888, 0x00000888, 0x00000888, 0x00000888,
0x00000888, 0x00000888, 0x00000888, 0x00000888,
};
+
+#include "data/trainer_parties.h"
+#include "data/text/trainer_class_names.h"
+#include "data/trainers.h"
+#include "data/text/species_names.h"
+#include "data/text/move_names.h"
diff --git a/src/data/.gitignore b/src/data/.gitignore
new file mode 100755
index 000000000..eaf9e1f6d
--- /dev/null
+++ b/src/data/.gitignore
@@ -0,0 +1 @@
+wild_encounters.h
diff --git a/src/data/contest_opponents.h b/src/data/contest_opponents.h
index ef1fdba9f..010559e3b 100644
--- a/src/data/contest_opponents.h
+++ b/src/data/contest_opponents.h
@@ -183,7 +183,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("POOCHY"),
.trainerName = _("JIMMY"),
.trainerGfxId = EVENT_OBJ_GFX_BOY_1,
- .flags = 0xC000FFF,
+ .aiChecks = 0xC000FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
@@ -212,7 +212,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("MUSILLE"),
.trainerName = _("EDITH"),
.trainerGfxId = EVENT_OBJ_GFX_GIRL_1,
- .flags = 0x82000FFF,
+ .aiChecks = 0x82000FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -241,7 +241,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("DUSTER"),
.trainerName = _("EVAN"),
.trainerGfxId = EVENT_OBJ_GFX_LITTLE_BOY,
- .flags = 0x21000FFF,
+ .aiChecks = 0x21000FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -270,7 +270,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("DOTS"),
.trainerName = _("KELSEY"),
.trainerGfxId = EVENT_OBJ_GFX_WOMAN_1,
- .flags = 0x20800FFF,
+ .aiChecks = 0x20800FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -299,7 +299,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("TATAY"),
.trainerName = _("MADISON"),
.trainerGfxId = EVENT_OBJ_GFX_POKEFAN_F,
- .flags = 0x80400FFF,
+ .aiChecks = 0x80400FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
@@ -328,7 +328,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("NINDA"),
.trainerName = _("RAYMOND"),
.trainerGfxId = EVENT_OBJ_GFX_BLACK_BELT,
- .flags = 0x10200FFF,
+ .aiChecks = 0x10200FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -357,7 +357,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("SMISH"),
.trainerName = _("GRANT"),
.trainerGfxId = EVENT_OBJ_GFX_YOUNGSTER,
- .flags = 0x20100FFF,
+ .aiChecks = 0x20100FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -386,7 +386,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("SLEAL"),
.trainerName = _("PAIGE"),
.trainerGfxId = EVENT_OBJ_GFX_WOMAN_4,
- .flags = 0x8080FFF,
+ .aiChecks = 0x8080FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -415,7 +415,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("SLOKTH"),
.trainerName = _("ALEC"),
.trainerGfxId = EVENT_OBJ_GFX_CAMPER,
- .flags = 0x40040FFF,
+ .aiChecks = 0x40040FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -444,7 +444,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("WHIRIS"),
.trainerName = _("SYDNEY"),
.trainerGfxId = EVENT_OBJ_GFX_LASS,
- .flags = 0x80020FFF,
+ .aiChecks = 0x80020FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
@@ -473,7 +473,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("MAHITA"),
.trainerName = _("MORRIS"),
.trainerGfxId = EVENT_OBJ_GFX_SCHOOL_KID_M,
- .flags = 0x8010FFF,
+ .aiChecks = 0x8010FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
@@ -502,7 +502,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("RONAR"),
.trainerName = _("MARIAH"),
.trainerGfxId = EVENT_OBJ_GFX_GIRL_2,
- .flags = 0x8008FFF,
+ .aiChecks = 0x8008FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
@@ -531,7 +531,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("BATRO"),
.trainerName = _("RUSSELL"),
.trainerGfxId = EVENT_OBJ_GFX_MAN_3,
- .flags = 0x90004FFF,
+ .aiChecks = 0x90004FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -560,7 +560,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("GULIN"),
.trainerName = _("MELANIE"),
.trainerGfxId = EVENT_OBJ_GFX_TWIN,
- .flags = 0x40002FFF,
+ .aiChecks = 0x40002FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -589,7 +589,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("RIKELEC"),
.trainerName = _("CHANCE"),
.trainerGfxId = EVENT_OBJ_GFX_RICH_BOY,
- .flags = 0x80001FFF,
+ .aiChecks = 0x80001FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = TRUE,
.aiPool_Beauty = TRUE,
@@ -618,7 +618,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("BULBY"),
.trainerName = _("AGATHA"),
.trainerGfxId = EVENT_OBJ_GFX_WOMAN_2,
- .flags = 0xC000FFF,
+ .aiChecks = 0xC000FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -647,7 +647,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("FUTTERBE"),
.trainerName = _("BEAU"),
.trainerGfxId = EVENT_OBJ_GFX_HEX_MANIAC,
- .flags = 0x82000FFF,
+ .aiChecks = 0x82000FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -676,7 +676,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("PIDEOT"),
.trainerName = _("KAY"),
.trainerGfxId = EVENT_OBJ_GFX_WOMAN_5,
- .flags = 0x21000FFF,
+ .aiChecks = 0x21000FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = TRUE,
.aiPool_Beauty = TRUE,
@@ -705,7 +705,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("DIGLE"),
.trainerName = _("CALE"),
.trainerGfxId = EVENT_OBJ_GFX_HIKER,
- .flags = 0x20800FFF,
+ .aiChecks = 0x20800FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -734,7 +734,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("WAGIL"),
.trainerName = _("CAITLIN"),
.trainerGfxId = EVENT_OBJ_GFX_TUBER_F,
- .flags = 0x80400FFF,
+ .aiChecks = 0x80400FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -763,7 +763,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("TOTDIL"),
.trainerName = _("COLBY"),
.trainerGfxId = EVENT_OBJ_GFX_NINJA_BOY,
- .flags = 0x10200FFF,
+ .aiChecks = 0x10200FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = TRUE,
.aiPool_Beauty = TRUE,
@@ -792,7 +792,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("BALEDY"),
.trainerName = _("KYLIE"),
.trainerGfxId = EVENT_OBJ_GFX_BEAUTY,
- .flags = 0x20100FFF,
+ .aiChecks = 0x20100FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
@@ -821,7 +821,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("BIRDLY"),
.trainerName = _("LIAM"),
.trainerGfxId = EVENT_OBJ_GFX_MAN_5,
- .flags = 0x8080FFF,
+ .aiChecks = 0x8080FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -850,7 +850,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("TARVITAR"),
.trainerName = _("MILO"),
.trainerGfxId = EVENT_OBJ_GFX_MANIAC,
- .flags = 0x40040FFF,
+ .aiChecks = 0x40040FFF,
.whichRank = CONTEST_RANK_NORMAL,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -879,7 +879,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("RELIA"),
.trainerName = _("KARINA"),
.trainerGfxId = EVENT_OBJ_GFX_PICNICKER,
- .flags = 0x24000FFF,
+ .aiChecks = 0x24000FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -908,7 +908,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("DUODO"),
.trainerName = _("BOBBY"),
.trainerGfxId = EVENT_OBJ_GFX_RUNNING_TRIATHLETE_M,
- .flags = 0x82000FFF,
+ .aiChecks = 0x82000FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = TRUE,
@@ -937,7 +937,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("PINCHIN"),
.trainerName = _("CLAIRE"),
.trainerGfxId = EVENT_OBJ_GFX_GIRL_1,
- .flags = 0x81000FFF,
+ .aiChecks = 0x81000FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -966,7 +966,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("NACAC"),
.trainerName = _("WILLIE"),
.trainerGfxId = EVENT_OBJ_GFX_LITTLE_BOY,
- .flags = 0x80800FFF,
+ .aiChecks = 0x80800FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
@@ -995,7 +995,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("SHRAND"),
.trainerName = _("CASSIDY"),
.trainerGfxId = EVENT_OBJ_GFX_POKEFAN_F,
- .flags = 0x10400FFF,
+ .aiChecks = 0x10400FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
@@ -1024,7 +1024,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("TOYBAL"),
.trainerName = _("MORGAN"),
.trainerGfxId = EVENT_OBJ_GFX_BLACK_BELT,
- .flags = 0x8200FFF,
+ .aiChecks = 0x8200FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -1053,7 +1053,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("CHAMCHAM"),
.trainerName = _("SUMMER"),
.trainerGfxId = EVENT_OBJ_GFX_WOMAN_4,
- .flags = 0x10100FFF,
+ .aiChecks = 0x10100FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = TRUE,
@@ -1082,7 +1082,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("SPININ"),
.trainerName = _("MILES"),
.trainerGfxId = EVENT_OBJ_GFX_CAMPER,
- .flags = 0x80080FFF,
+ .aiChecks = 0x80080FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -1111,7 +1111,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("SWABY"),
.trainerName = _("AUDREY"),
.trainerGfxId = EVENT_OBJ_GFX_LASS,
- .flags = 0xA0040FFF,
+ .aiChecks = 0xA0040FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -1140,7 +1140,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("POINKER"),
.trainerName = _("AVERY"),
.trainerGfxId = EVENT_OBJ_GFX_SCHOOL_KID_M,
- .flags = 0x80020FFF,
+ .aiChecks = 0x80020FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -1169,7 +1169,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("KECON"),
.trainerName = _("ARIANA"),
.trainerGfxId = EVENT_OBJ_GFX_GIRL_2,
- .flags = 0x80010FFF,
+ .aiChecks = 0x80010FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -1198,7 +1198,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("GOLDEN"),
.trainerName = _("ASHTON"),
.trainerGfxId = EVENT_OBJ_GFX_MAN_3,
- .flags = 0x80008FFF,
+ .aiChecks = 0x80008FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = TRUE,
@@ -1227,7 +1227,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("BOBOACH"),
.trainerName = _("SANDRA"),
.trainerGfxId = EVENT_OBJ_GFX_TWIN,
- .flags = 0x80004FFF,
+ .aiChecks = 0x80004FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -1256,7 +1256,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("CORPY"),
.trainerName = _("CARSON"),
.trainerGfxId = EVENT_OBJ_GFX_YOUNGSTER,
- .flags = 0x8002FFF,
+ .aiChecks = 0x8002FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = TRUE,
@@ -1285,7 +1285,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("TADO"),
.trainerName = _("KATRINA"),
.trainerGfxId = EVENT_OBJ_GFX_WOMAN_1,
- .flags = 0x8001FFF,
+ .aiChecks = 0x8001FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -1314,7 +1314,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("BROWLO"),
.trainerName = _("LUKE"),
.trainerGfxId = EVENT_OBJ_GFX_FAT_MAN,
- .flags = 0xC000FFF,
+ .aiChecks = 0xC000FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -1343,7 +1343,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("FETCHIN"),
.trainerName = _("RAUL"),
.trainerGfxId = EVENT_OBJ_GFX_MAN_5,
- .flags = 0x82000FFF,
+ .aiChecks = 0x82000FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
@@ -1372,7 +1372,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("SEELEY"),
.trainerName = _("JADA"),
.trainerGfxId = EVENT_OBJ_GFX_WOMAN_2,
- .flags = 0x21000FFF,
+ .aiChecks = 0x21000FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -1401,7 +1401,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("DROWZIN"),
.trainerName = _("ZEEK"),
.trainerGfxId = EVENT_OBJ_GFX_PSYCHIC_M,
- .flags = 0x20800FFF,
+ .aiChecks = 0x20800FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -1430,7 +1430,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("HITEMON"),
.trainerName = _("DIEGO"),
.trainerGfxId = EVENT_OBJ_GFX_EXPERT_M,
- .flags = 0x80400FFF,
+ .aiChecks = 0x80400FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
@@ -1459,7 +1459,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("BLISS"),
.trainerName = _("ALIYAH"),
.trainerGfxId = EVENT_OBJ_GFX_TEALA,
- .flags = 0x10200FFF,
+ .aiChecks = 0x10200FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -1488,7 +1488,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("KIDLEK"),
.trainerName = _("NATALIA"),
.trainerGfxId = EVENT_OBJ_GFX_POKEFAN_F,
- .flags = 0x20100FFF,
+ .aiChecks = 0x20100FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
@@ -1517,7 +1517,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("SNUBBINS"),
.trainerName = _("DEVIN"),
.trainerGfxId = EVENT_OBJ_GFX_GENTLEMAN,
- .flags = 0x8080FFF,
+ .aiChecks = 0x8080FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -1546,7 +1546,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("DREAVIS"),
.trainerName = _("TYLOR"),
.trainerGfxId = EVENT_OBJ_GFX_HEX_MANIAC,
- .flags = 0x40040FFF,
+ .aiChecks = 0x40040FFF,
.whichRank = CONTEST_RANK_SUPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -1575,7 +1575,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("LAIRN"),
.trainerName = _("RONNIE"),
.trainerGfxId = EVENT_OBJ_GFX_HIKER,
- .flags = 0x84000FFF,
+ .aiChecks = 0x84000FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -1604,7 +1604,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("SHIFTY"),
.trainerName = _("CLAUDIA"),
.trainerGfxId = EVENT_OBJ_GFX_GIRL_1,
- .flags = 0x82000FFF,
+ .aiChecks = 0x82000FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = TRUE,
@@ -1633,7 +1633,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("NINAS"),
.trainerName = _("ELIAS"),
.trainerGfxId = EVENT_OBJ_GFX_LITTLE_BOY,
- .flags = 0x81000FFF,
+ .aiChecks = 0x81000FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -1662,7 +1662,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("WELOW"),
.trainerName = _("JADE"),
.trainerGfxId = EVENT_OBJ_GFX_POKEFAN_F,
- .flags = 0x80800FFF,
+ .aiChecks = 0x80800FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = TRUE,
@@ -1691,7 +1691,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("YENA"),
.trainerName = _("FRANCIS"),
.trainerGfxId = EVENT_OBJ_GFX_BLACK_BELT,
- .flags = 0x80400FFF,
+ .aiChecks = 0x80400FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -1720,7 +1720,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("TIFLY"),
.trainerName = _("ALISHA"),
.trainerGfxId = EVENT_OBJ_GFX_WOMAN_4,
- .flags = 0x80200FFF,
+ .aiChecks = 0x80200FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -1749,7 +1749,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("KINGSEA"),
.trainerName = _("SAUL"),
.trainerGfxId = EVENT_OBJ_GFX_CAMPER,
- .flags = 0x80100FFF,
+ .aiChecks = 0x80100FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
@@ -1778,7 +1778,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("CASTER"),
.trainerName = _("FELICIA"),
.trainerGfxId = EVENT_OBJ_GFX_LASS,
- .flags = 0x80080FFF,
+ .aiChecks = 0x80080FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = TRUE,
@@ -1807,7 +1807,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("CHOKEM"),
.trainerName = _("EMILIO"),
.trainerGfxId = EVENT_OBJ_GFX_SCHOOL_KID_M,
- .flags = 0x80040FFF,
+ .aiChecks = 0x80040FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
@@ -1836,7 +1836,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("LOMBE"),
.trainerName = _("KARLA"),
.trainerGfxId = EVENT_OBJ_GFX_GIRL_2,
- .flags = 0x80020FFF,
+ .aiChecks = 0x80020FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -1865,7 +1865,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("VIPES"),
.trainerName = _("DARRYL"),
.trainerGfxId = EVENT_OBJ_GFX_MAN_3,
- .flags = 0x80010FFF,
+ .aiChecks = 0x80010FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -1894,7 +1894,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("MERAIL"),
.trainerName = _("SELENA"),
.trainerGfxId = EVENT_OBJ_GFX_EXPERT_F,
- .flags = 0x80008FFF,
+ .aiChecks = 0x80008FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -1923,7 +1923,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("KARPAG"),
.trainerName = _("NOEL"),
.trainerGfxId = EVENT_OBJ_GFX_YOUNGSTER,
- .flags = 0x80004FFF,
+ .aiChecks = 0x80004FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -1952,7 +1952,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("LUNONE"),
.trainerName = _("LACEY"),
.trainerGfxId = EVENT_OBJ_GFX_WOMAN_1,
- .flags = 0x80002FFF,
+ .aiChecks = 0x80002FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -1981,7 +1981,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("ABSO"),
.trainerName = _("CORBIN"),
.trainerGfxId = EVENT_OBJ_GFX_MANIAC,
- .flags = 0x80001FFF,
+ .aiChecks = 0x80001FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = TRUE,
@@ -2010,7 +2010,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("EGGSOR"),
.trainerName = _("GRACIE"),
.trainerGfxId = EVENT_OBJ_GFX_PICNICKER,
- .flags = 0xC000FFF,
+ .aiChecks = 0xC000FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -2039,7 +2039,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("CUBIN"),
.trainerName = _("COLTIN"),
.trainerGfxId = EVENT_OBJ_GFX_MAN_4,
- .flags = 0x82000FFF,
+ .aiChecks = 0x82000FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -2068,7 +2068,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("HITMON"),
.trainerName = _("ELLIE"),
.trainerGfxId = EVENT_OBJ_GFX_EXPERT_F,
- .flags = 0x21000FFF,
+ .aiChecks = 0x21000FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
@@ -2097,7 +2097,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("SURTLE"),
.trainerName = _("MARCUS"),
.trainerGfxId = EVENT_OBJ_GFX_SAILOR,
- .flags = 0x20800FFF,
+ .aiChecks = 0x20800FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -2126,7 +2126,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("KHANKAN"),
.trainerName = _("KIARA"),
.trainerGfxId = EVENT_OBJ_GFX_GIRL_3,
- .flags = 0x80400FFF,
+ .aiChecks = 0x80400FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
@@ -2155,7 +2155,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("PINOC"),
.trainerName = _("BRYCE"),
.trainerGfxId = EVENT_OBJ_GFX_BUG_CATCHER,
- .flags = 0x10200FFF,
+ .aiChecks = 0x10200FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -2184,7 +2184,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("DILTOT"),
.trainerName = _("JAMIE"),
.trainerGfxId = EVENT_OBJ_GFX_WOMAN_5,
- .flags = 0x20100FFF,
+ .aiChecks = 0x20100FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -2213,7 +2213,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("DOOMOND"),
.trainerName = _("JORGE"),
.trainerGfxId = EVENT_OBJ_GFX_GENTLEMAN,
- .flags = 0x8080FFF,
+ .aiChecks = 0x8080FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = TRUE,
@@ -2242,7 +2242,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("MILKAN"),
.trainerName = _("DEVON"),
.trainerGfxId = EVENT_OBJ_GFX_POKEFAN_M,
- .flags = 0x40040FFF,
+ .aiChecks = 0x40040FFF,
.whichRank = CONTEST_RANK_HYPER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -2271,7 +2271,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("RADOS"),
.trainerName = _("JUSTINA"),
.trainerGfxId = EVENT_OBJ_GFX_PICNICKER,
- .flags = 0x84000FFF,
+ .aiChecks = 0x84000FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = TRUE,
@@ -2300,7 +2300,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("LOUDERD"),
.trainerName = _("RALPH"),
.trainerGfxId = EVENT_OBJ_GFX_EXPERT_M,
- .flags = 0x82000FFF,
+ .aiChecks = 0x82000FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
@@ -2329,7 +2329,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("SITTY"),
.trainerName = _("ROSA"),
.trainerGfxId = EVENT_OBJ_GFX_GIRL_1,
- .flags = 0x81000FFF,
+ .aiChecks = 0x81000FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -2358,7 +2358,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("SLING"),
.trainerName = _("KEATON"),
.trainerGfxId = EVENT_OBJ_GFX_LITTLE_BOY,
- .flags = 0x80800FFF,
+ .aiChecks = 0x80800FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -2387,7 +2387,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("TARIA"),
.trainerName = _("MAYRA"),
.trainerGfxId = EVENT_OBJ_GFX_POKEFAN_F,
- .flags = 0x80400FFF,
+ .aiChecks = 0x80400FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = TRUE,
@@ -2416,7 +2416,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("LIRKI"),
.trainerName = _("LAMAR"),
.trainerGfxId = EVENT_OBJ_GFX_RICH_BOY,
- .flags = 0x80200FFF,
+ .aiChecks = 0x80200FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
@@ -2445,7 +2445,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("BLOSSOM"),
.trainerName = _("AUBREY"),
.trainerGfxId = EVENT_OBJ_GFX_WOMAN_4,
- .flags = 0x80100FFF,
+ .aiChecks = 0x80100FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -2474,7 +2474,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("EYESAB"),
.trainerName = _("NIGEL"),
.trainerGfxId = EVENT_OBJ_GFX_CAMPER,
- .flags = 0x80080FFF,
+ .aiChecks = 0x80080FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -2503,7 +2503,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("UTAN"),
.trainerName = _("CAMILLE"),
.trainerGfxId = EVENT_OBJ_GFX_LASS,
- .flags = 0x80040FFF,
+ .aiChecks = 0x80040FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -2532,7 +2532,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("PEDOS"),
.trainerName = _("DEON"),
.trainerGfxId = EVENT_OBJ_GFX_SCHOOL_KID_M,
- .flags = 0x80020FFF,
+ .aiChecks = 0x80020FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
@@ -2561,7 +2561,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("LUVIS"),
.trainerName = _("JANELLE"),
.trainerGfxId = EVENT_OBJ_GFX_GIRL_2,
- .flags = 0x80010FFF,
+ .aiChecks = 0x80010FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -2590,7 +2590,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("HEROSS"),
.trainerName = _("HEATH"),
.trainerGfxId = EVENT_OBJ_GFX_MAN_3,
- .flags = 0x80008FFF,
+ .aiChecks = 0x80008FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
@@ -2619,7 +2619,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("RODLECT"),
.trainerName = _("SASHA"),
.trainerGfxId = EVENT_OBJ_GFX_TWIN,
- .flags = 0x80004FFF,
+ .aiChecks = 0x80004FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = TRUE,
@@ -2648,7 +2648,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("CHUPY"),
.trainerName = _("FRANKIE"),
.trainerGfxId = EVENT_OBJ_GFX_YOUNGSTER,
- .flags = 0x80002FFF,
+ .aiChecks = 0x80002FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -2677,7 +2677,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("WOBET"),
.trainerName = _("HELEN"),
.trainerGfxId = EVENT_OBJ_GFX_WOMAN_1,
- .flags = 0x80001FFF,
+ .aiChecks = 0x80001FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = TRUE,
@@ -2706,7 +2706,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("GAREN"),
.trainerName = _("CAMILE"),
.trainerGfxId = EVENT_OBJ_GFX_HEX_MANIAC,
- .flags = 0xC000FFF,
+ .aiChecks = 0xC000FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
@@ -2735,7 +2735,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("GONPOR"),
.trainerName = _("MARTIN"),
.trainerGfxId = EVENT_OBJ_GFX_SCIENTIST_1,
- .flags = 0x82000FFF,
+ .aiChecks = 0x82000FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = TRUE,
@@ -2764,7 +2764,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("DRITE"),
.trainerName = _("SERGIO"),
.trainerGfxId = EVENT_OBJ_GFX_BOY_1,
- .flags = 0x21000FFF,
+ .aiChecks = 0x21000FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
@@ -2793,7 +2793,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("MEOWY"),
.trainerName = _("KAILEY"),
.trainerGfxId = EVENT_OBJ_GFX_TWIN,
- .flags = 0x20800FFF,
+ .aiChecks = 0x20800FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -2822,7 +2822,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("NYX"),
.trainerName = _("PERLA"),
.trainerGfxId = EVENT_OBJ_GFX_BEAUTY,
- .flags = 0x80400FFF,
+ .aiChecks = 0x80400FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = TRUE,
@@ -2851,7 +2851,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("GEPITO"),
.trainerName = _("CLARA"),
.trainerGfxId = EVENT_OBJ_GFX_WOMAN_2,
- .flags = 0x10200FFF,
+ .aiChecks = 0x10200FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -2880,7 +2880,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("SPEON"),
.trainerName = _("JAKOB"),
.trainerGfxId = EVENT_OBJ_GFX_PSYCHIC_M,
- .flags = 0x20100FFF,
+ .aiChecks = 0x20100FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = TRUE,
@@ -2909,7 +2909,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("SLOWGO"),
.trainerName = _("TREY"),
.trainerGfxId = EVENT_OBJ_GFX_SAILOR,
- .flags = 0x8080FFF,
+ .aiChecks = 0x8080FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = FALSE,
.aiPool_Beauty = FALSE,
@@ -2938,7 +2938,7 @@ const struct ContestPokemon gContestOpponents[] =
.nickname = _("URSING"),
.trainerName = _("LANE"),
.trainerGfxId = EVENT_OBJ_GFX_BLACK_BELT,
- .flags = 0x40040FFF,
+ .aiChecks = 0x40040FFF,
.whichRank = CONTEST_RANK_MASTER,
.aiPool_Cool = TRUE,
.aiPool_Beauty = FALSE,
diff --git a/src/data/decoration/header.h b/src/data/decoration/header.h
index a909bd9fd..55458c7a3 100644
--- a/src/data/decoration/header.h
+++ b/src/data/decoration/header.h
@@ -686,7 +686,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_PICHU_DOLL,
_("PICHU DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -695,7 +695,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_PIKACHU_DOLL,
_("PIKACHU DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -704,7 +704,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_MARILL_DOLL,
_("MARILL DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -713,7 +713,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_TOGEPI_DOLL,
_("TOGEPI DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -722,7 +722,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_CYNDAQUIL_DOLL,
_("CYNDAQUIL DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -731,7 +731,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_CHIKORITA_DOLL,
_("CHIKORITA DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -740,7 +740,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_TOTODILE_DOLL,
_("TOTODILE DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -749,7 +749,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_JIGGLYPUFF_DOLL,
_("JIGGLYPUFF DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -758,7 +758,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_MEOWTH_DOLL,
_("MEOWTH DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -767,7 +767,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_CLEFAIRY_DOLL,
_("CLEFAIRY DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -776,7 +776,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_DITTO_DOLL,
_("DITTO DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -785,7 +785,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_SMOOCHUM_DOLL,
_("SMOOCHUM DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -794,7 +794,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_TREECKO_DOLL,
_("TREECKO DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -803,7 +803,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_TORCHIC_DOLL,
_("TORCHIC DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -812,7 +812,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_MUDKIP_DOLL,
_("MUDKIP DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -821,7 +821,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_DUSKULL_DOLL,
_("DUSKULL DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -830,7 +830,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_WYNAUT_DOLL,
_("WYNAUT DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -839,7 +839,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_BALTOY_DOLL,
_("BALTOY DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -848,7 +848,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_KECLEON_DOLL,
_("KECLEON DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -857,7 +857,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_AZURILL_DOLL,
_("AZURILL DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -866,7 +866,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_SKITTY_DOLL,
_("SKITTY DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -875,7 +875,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_SWABLU_DOLL,
_("SWABLU DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -884,7 +884,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_GULPIN_DOLL,
_("GULPIN DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -893,7 +893,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_LOTAD_DOLL,
_("LOTAD DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -902,7 +902,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_SEEDOT_DOLL,
_("SEEDOT DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_DOLL,
3000,
@@ -911,7 +911,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_PIKA_CUSHION,
_("PIKA CUSHION"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_CUSHION,
2000,
@@ -920,7 +920,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_ROUND_CUSHION,
_("ROUND CUSHION"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_CUSHION,
2000,
@@ -929,7 +929,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_KISS_CUSHION,
_("KISS CUSHION"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_CUSHION,
2000,
@@ -938,7 +938,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_ZIGZAG_CUSHION,
_("ZIGZAG CUSHION"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_CUSHION,
2000,
@@ -947,7 +947,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_SPIN_CUSHION,
_("SPIN CUSHION"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_CUSHION,
2000,
@@ -956,7 +956,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_DIAMOND_CUSHION,
_("DIAMOND CUSHION"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_CUSHION,
2000,
@@ -965,7 +965,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_BALL_CUSHION,
_("BALL CUSHION"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_CUSHION,
2000,
@@ -974,7 +974,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_GRASS_CUSHION,
_("GRASS CUSHION"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_CUSHION,
2000,
@@ -983,7 +983,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_FIRE_CUSHION,
_("FIRE CUSHION"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_CUSHION,
2000,
@@ -992,7 +992,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_WATER_CUSHION,
_("WATER CUSHION"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x1,
DECORCAT_CUSHION,
2000,
@@ -1001,7 +1001,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_SNORLAX_DOLL,
_("SNORLAX DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x2,
DECORCAT_DOLL,
10000,
@@ -1010,7 +1010,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_RHYDON_DOLL,
_("RHYDON DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x2,
DECORCAT_DOLL,
10000,
@@ -1019,7 +1019,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_LAPRAS_DOLL,
_("LAPRAS DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x2,
DECORCAT_DOLL,
10000,
@@ -1028,7 +1028,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_VENUSAUR_DOLL,
_("VENUSAUR DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x2,
DECORCAT_DOLL,
10000,
@@ -1037,7 +1037,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_CHARIZARD_DOLL,
_("CHARIZARD DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x2,
DECORCAT_DOLL,
10000,
@@ -1046,7 +1046,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_BLASTOISE_DOLL,
_("BLASTOISE DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x2,
DECORCAT_DOLL,
10000,
@@ -1055,7 +1055,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_WAILMER_DOLL,
_("WAILMER DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x2,
DECORCAT_DOLL,
10000,
@@ -1064,7 +1064,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_REGIROCK_DOLL,
_("REGIROCK DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x2,
DECORCAT_DOLL,
10000,
@@ -1073,7 +1073,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_REGICE_DOLL,
_("REGICE DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x2,
DECORCAT_DOLL,
10000,
@@ -1082,7 +1082,7 @@ const struct Decoration gDecorations[] = {
}, {
DECOR_REGISTEEL_DOLL,
_("REGISTEEL DOLL"),
- DECORPERM_SOLID_MAT,
+ DECORPERM_SPRITE,
DECORSHAPE_1x2,
DECORCAT_DOLL,
10000,
diff --git a/src/data/field_event_obj/berry_tree_graphics_tables.h b/src/data/field_event_obj/berry_tree_graphics_tables.h
index f5ef15af9..27d5b1f9a 100755
--- a/src/data/field_event_obj/berry_tree_graphics_tables.h
+++ b/src/data/field_event_obj/berry_tree_graphics_tables.h
@@ -423,142 +423,143 @@ const u8 gDeadBerryTreeEventObjectGraphicsIdTable[] = {EVENT_OBJ_GFX_BERRY_TREE_
const u8 gBerryTreeEventObjectGraphicsIdTable[] = {EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES, EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES, EVENT_OBJ_GFX_BERRY_TREE_LATE_STAGES, EVENT_OBJ_GFX_BERRY_TREE_LATE_STAGES, EVENT_OBJ_GFX_BERRY_TREE_LATE_STAGES};
const struct SpriteFrameImage *const gBerryTreePicTablePointers[] = {
- gEventObjectPicTable_CheriBerryTree,
- gEventObjectPicTable_ChestoBerryTree,
- gEventObjectPicTable_PechaBerryTree,
- gEventObjectPicTable_RawstBerryTree,
- gEventObjectPicTable_AspearBerryTree,
- gEventObjectPicTable_LeppaBerryTree,
- gEventObjectPicTable_OranBerryTree,
- gEventObjectPicTable_PersimBerryTree,
- gEventObjectPicTable_LumBerryTree,
- gEventObjectPicTable_SitrusBerryTree,
- gEventObjectPicTable_FigyBerryTree,
- gEventObjectPicTable_WikiBerryTree,
- gEventObjectPicTable_MagoBerryTree,
- gEventObjectPicTable_AguavBerryTree,
- gEventObjectPicTable_IapapaBerryTree,
- gEventObjectPicTable_RazzBerryTree,
- gEventObjectPicTable_RazzBerryTree,
- gEventObjectPicTable_MagoBerryTree,
- gEventObjectPicTable_WepearBerryTree,
- gEventObjectPicTable_IapapaBerryTree,
- gEventObjectPicTable_PomegBerryTree,
- gEventObjectPicTable_KelpsyBerryTree,
- gEventObjectPicTable_WepearBerryTree,
- gEventObjectPicTable_HondewBerryTree,
- gEventObjectPicTable_GrepaBerryTree,
- gEventObjectPicTable_TamatoBerryTree,
- gEventObjectPicTable_CornnBerryTree,
- gEventObjectPicTable_PomegBerryTree,
- gEventObjectPicTable_RabutaBerryTree,
- gEventObjectPicTable_NomelBerryTree,
- gEventObjectPicTable_SpelonBerryTree,
- gEventObjectPicTable_PamtreBerryTree,
- gEventObjectPicTable_RabutaBerryTree,
- gEventObjectPicTable_DurinBerryTree,
- gEventObjectPicTable_HondewBerryTree,
- gEventObjectPicTable_LiechiBerryTree,
- gEventObjectPicTable_HondewBerryTree,
- gEventObjectPicTable_AguavBerryTree,
- gEventObjectPicTable_PomegBerryTree,
- gEventObjectPicTable_GrepaBerryTree,
- gEventObjectPicTable_LansatBerryTree,
- gEventObjectPicTable_CornnBerryTree,
- gEventObjectPicTable_DurinBerryTree,
+ [ITEM_CHERI_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_CheriBerryTree,
+ [ITEM_CHESTO_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_ChestoBerryTree,
+ [ITEM_PECHA_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_PechaBerryTree,
+ [ITEM_RAWST_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_RawstBerryTree,
+ [ITEM_ASPEAR_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_AspearBerryTree,
+ [ITEM_LEPPA_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_LeppaBerryTree,
+ [ITEM_ORAN_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_OranBerryTree,
+ [ITEM_PERSIM_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_PersimBerryTree,
+ [ITEM_LUM_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_LumBerryTree,
+ [ITEM_SITRUS_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_SitrusBerryTree,
+ [ITEM_FIGY_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_FigyBerryTree,
+ [ITEM_WIKI_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_WikiBerryTree,
+ [ITEM_MAGO_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_MagoBerryTree,
+ [ITEM_AGUAV_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_AguavBerryTree,
+ [ITEM_IAPAPA_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_IapapaBerryTree,
+ [ITEM_RAZZ_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_RazzBerryTree,
+ [ITEM_BLUK_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_RazzBerryTree,
+ [ITEM_NANAB_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_MagoBerryTree,
+ [ITEM_WEPEAR_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_WepearBerryTree,
+ [ITEM_PINAP_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_IapapaBerryTree,
+ [ITEM_POMEG_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_PomegBerryTree,
+ [ITEM_KELPSY_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_KelpsyBerryTree,
+ [ITEM_QUALOT_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_WepearBerryTree,
+ [ITEM_HONDEW_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_HondewBerryTree,
+ [ITEM_GREPA_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_GrepaBerryTree,
+ [ITEM_TAMATO_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_TamatoBerryTree,
+ [ITEM_CORNN_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_CornnBerryTree,
+ [ITEM_MAGOST_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_PomegBerryTree,
+ [ITEM_RABUTA_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_RabutaBerryTree,
+ [ITEM_NOMEL_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_NomelBerryTree,
+ [ITEM_SPELON_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_SpelonBerryTree,
+ [ITEM_PAMTRE_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_PamtreBerryTree,
+ [ITEM_WATMEL_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_RabutaBerryTree,
+ [ITEM_DURIN_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_DurinBerryTree,
+ [ITEM_BELUE_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_HondewBerryTree,
+ [ITEM_LIECHI_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_LiechiBerryTree,
+ [ITEM_GANLON_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_HondewBerryTree,
+ [ITEM_SALAC_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_AguavBerryTree,
+ [ITEM_PETAYA_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_PomegBerryTree,
+ [ITEM_APICOT_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_GrepaBerryTree,
+ [ITEM_LANSAT_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_LansatBerryTree,
+ [ITEM_STARF_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_CornnBerryTree,
+ [ITEM_ENIGMA_BERRY - FIRST_BERRY_INDEX] = gEventObjectPicTable_DurinBerryTree,
};
const u8 *const gBerryTreePaletteSlotTablePointers[] = {
- gBerryTreePaletteSlotTable_Cheri,
- gBerryTreePaletteSlotTable_Chesto,
- gBerryTreePaletteSlotTable_Pecha,
- gBerryTreePaletteSlotTable_Rawst,
- gBerryTreePaletteSlotTable_Aspear,
- gBerryTreePaletteSlotTable_Leppa,
- gBerryTreePaletteSlotTable_Oran,
- gBerryTreePaletteSlotTable_Persim,
- gBerryTreePaletteSlotTable_Lum,
- gBerryTreePaletteSlotTable_Sitrus,
- gBerryTreePaletteSlotTable_Figy,
- gBerryTreePaletteSlotTable_Wiki,
- gBerryTreePaletteSlotTable_Mago,
- gBerryTreePaletteSlotTable_Aguav,
- gBerryTreePaletteSlotTable_Iapapa,
- gBerryTreePaletteSlotTable_Razz,
- gBerryTreePaletteSlotTable_Razz,
- gBerryTreePaletteSlotTable_Mago,
- gBerryTreePaletteSlotTable_Wepear,
- gBerryTreePaletteSlotTable_Iapapa,
- gBerryTreePaletteSlotTable_Pomeg,
- gBerryTreePaletteSlotTable_Kelpsy,
- gBerryTreePaletteSlotTable_Wepear,
- gBerryTreePaletteSlotTable_Hondew,
- gBerryTreePaletteSlotTable_Grepa,
- gBerryTreePaletteSlotTable_Tamato,
- gBerryTreePaletteSlotTable_Cornn,
- gBerryTreePaletteSlotTable_Pomeg,
- gBerryTreePaletteSlotTable_Rabuta,
- gBerryTreePaletteSlotTable_Nomel,
- gBerryTreePaletteSlotTable_Spelon,
- gBerryTreePaletteSlotTable_Pamtre,
- gBerryTreePaletteSlotTable_Rabuta,
- gBerryTreePaletteSlotTable_Durin,
- gBerryTreePaletteSlotTable_Hondew,
- gBerryTreePaletteSlotTable_Liechi,
- gBerryTreePaletteSlotTable_Hondew,
- gBerryTreePaletteSlotTable_Aguav,
- gBerryTreePaletteSlotTable_Pomeg,
- gBerryTreePaletteSlotTable_Grepa,
- gBerryTreePaletteSlotTable_Lansat,
- gBerryTreePaletteSlotTable_Cornn,
- gBerryTreePaletteSlotTable_Durin,
+ [ITEM_CHERI_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Cheri,
+ [ITEM_CHESTO_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Chesto,
+ [ITEM_PECHA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Pecha,
+ [ITEM_RAWST_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Rawst,
+ [ITEM_ASPEAR_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Aspear,
+ [ITEM_LEPPA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Leppa,
+ [ITEM_ORAN_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Oran,
+ [ITEM_PERSIM_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Persim,
+ [ITEM_LUM_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Lum,
+ [ITEM_SITRUS_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Sitrus,
+ [ITEM_FIGY_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Figy,
+ [ITEM_WIKI_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Wiki,
+ [ITEM_MAGO_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Mago,
+ [ITEM_AGUAV_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Aguav,
+ [ITEM_IAPAPA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Iapapa,
+ [ITEM_RAZZ_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Razz,
+ [ITEM_BLUK_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Razz,
+ [ITEM_NANAB_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Mago,
+ [ITEM_WEPEAR_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Wepear,
+ [ITEM_PINAP_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Iapapa,
+ [ITEM_POMEG_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Pomeg,
+ [ITEM_KELPSY_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Kelpsy,
+ [ITEM_QUALOT_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Wepear,
+ [ITEM_HONDEW_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Hondew,
+ [ITEM_GREPA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Grepa,
+ [ITEM_TAMATO_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Tamato,
+ [ITEM_CORNN_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Cornn,
+ [ITEM_MAGOST_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Pomeg,
+ [ITEM_RABUTA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Rabuta,
+ [ITEM_NOMEL_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Nomel,
+ [ITEM_SPELON_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Spelon,
+ [ITEM_PAMTRE_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Pamtre,
+ [ITEM_WATMEL_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Rabuta,
+ [ITEM_DURIN_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Durin,
+ [ITEM_BELUE_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Hondew,
+ [ITEM_LIECHI_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Liechi,
+ [ITEM_GANLON_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Hondew,
+ [ITEM_SALAC_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Aguav,
+ [ITEM_PETAYA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Pomeg,
+ [ITEM_APICOT_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Grepa,
+ [ITEM_LANSAT_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Lansat,
+ [ITEM_STARF_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Cornn,
+ [ITEM_ENIGMA_BERRY - FIRST_BERRY_INDEX] = gBerryTreePaletteSlotTable_Durin,
};
const u8 *const gBerryTreeEventObjectGraphicsIdTablePointers[] = {
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
- gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_CHERI_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_CHESTO_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_PECHA_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_RAWST_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_ASPEAR_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_LEPPA_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_ORAN_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_PERSIM_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_LUM_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_SITRUS_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_FIGY_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_WIKI_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_MAGO_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_AGUAV_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_IAPAPA_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_RAZZ_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_BLUK_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_NANAB_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_WEPEAR_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_PINAP_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_POMEG_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_KELPSY_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_QUALOT_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_HONDEW_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_GREPA_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_TAMATO_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_CORNN_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_MAGOST_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_RABUTA_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_NOMEL_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_SPELON_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_PAMTRE_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_WATMEL_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_DURIN_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_BELUE_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_LIECHI_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_GANLON_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_SALAC_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_PETAYA_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_APICOT_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_LANSAT_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_STARF_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_ENIGMA_BERRY - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ // 3 unused berries.
+ [ITEM_0B0 - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_0B1 - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
+ [ITEM_0B2 - FIRST_BERRY_INDEX] = gBerryTreeEventObjectGraphicsIdTable,
};
diff --git a/src/data/items.h b/src/data/items.h
index 7d7caa289..4d262e683 100644
--- a/src/data/items.h
+++ b/src/data/items.h
@@ -5,16 +5,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -25,14 +19,9 @@ const struct Item gItems[] =
.name = _("MASTER BALL"),
.itemId = ITEM_MASTER_BALL,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gMasterBallItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sMasterBallDesc,
.pocket = POCKET_POKE_BALLS,
.type = 0,
- .fieldUseFunc = NULL,
.battleUsage = 2,
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 0,
@@ -43,14 +32,9 @@ const struct Item gItems[] =
.name = _("ULTRA BALL"),
.itemId = ITEM_ULTRA_BALL,
.price = 1200,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gUltraBallItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sUltraBallDesc,
.pocket = POCKET_POKE_BALLS,
.type = 1,
- .fieldUseFunc = NULL,
.battleUsage = 2,
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 1,
@@ -61,14 +45,9 @@ const struct Item gItems[] =
.name = _("GREAT BALL"),
.itemId = ITEM_GREAT_BALL,
.price = 600,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gGreatBallItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sGreatBallDesc,
.pocket = POCKET_POKE_BALLS,
.type = 2,
- .fieldUseFunc = NULL,
.battleUsage = 2,
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 2,
@@ -79,14 +58,9 @@ const struct Item gItems[] =
.name = _("POKé BALL"),
.itemId = ITEM_POKE_BALL,
.price = 200,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gPokeBallItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sPokeBallDesc,
.pocket = POCKET_POKE_BALLS,
.type = 3,
- .fieldUseFunc = NULL,
.battleUsage = 2,
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 3,
@@ -97,14 +71,9 @@ const struct Item gItems[] =
.name = _("SAFARI BALL"),
.itemId = ITEM_SAFARI_BALL,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gSafariBallItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sSafariBallDesc,
.pocket = POCKET_POKE_BALLS,
.type = 4,
- .fieldUseFunc = NULL,
.battleUsage = 2,
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 4,
@@ -115,14 +84,9 @@ const struct Item gItems[] =
.name = _("NET BALL"),
.itemId = ITEM_NET_BALL,
.price = 1000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gNetBallItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sNetBallDesc,
.pocket = POCKET_POKE_BALLS,
.type = 5,
- .fieldUseFunc = NULL,
.battleUsage = 2,
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 5,
@@ -133,14 +97,9 @@ const struct Item gItems[] =
.name = _("DIVE BALL"),
.itemId = ITEM_DIVE_BALL,
.price = 1000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDiveBallItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDiveBallDesc,
.pocket = POCKET_POKE_BALLS,
.type = 6,
- .fieldUseFunc = NULL,
.battleUsage = 2,
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 6,
@@ -151,14 +110,9 @@ const struct Item gItems[] =
.name = _("NEST BALL"),
.itemId = ITEM_NEST_BALL,
.price = 1000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gNestBallItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sNestBallDesc,
.pocket = POCKET_POKE_BALLS,
.type = 7,
- .fieldUseFunc = NULL,
.battleUsage = 2,
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 7,
@@ -169,14 +123,9 @@ const struct Item gItems[] =
.name = _("REPEAT BALL"),
.itemId = ITEM_REPEAT_BALL,
.price = 1000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gRepeatBallItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sRepeatBallDesc,
.pocket = POCKET_POKE_BALLS,
.type = 8,
- .fieldUseFunc = NULL,
.battleUsage = 2,
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 8,
@@ -187,14 +136,9 @@ const struct Item gItems[] =
.name = _("TIMER BALL"),
.itemId = ITEM_TIMER_BALL,
.price = 1000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTimerBallItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTimerBallDesc,
.pocket = POCKET_POKE_BALLS,
.type = 9,
- .fieldUseFunc = NULL,
.battleUsage = 2,
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 9,
@@ -205,14 +149,9 @@ const struct Item gItems[] =
.name = _("LUXURY BALL"),
.itemId = ITEM_LUXURY_BALL,
.price = 1000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gLuxuryBallItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sLuxuryBallDesc,
.pocket = POCKET_POKE_BALLS,
.type = 10,
- .fieldUseFunc = NULL,
.battleUsage = 2,
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 10,
@@ -223,14 +162,9 @@ const struct Item gItems[] =
.name = _("PREMIER BALL"),
.itemId = ITEM_PREMIER_BALL,
.price = 200,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gPremierBallItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sPremierBallDesc,
.pocket = POCKET_POKE_BALLS,
.type = 11,
- .fieldUseFunc = NULL,
.battleUsage = 2,
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 11,
@@ -243,11 +177,8 @@ const struct Item gItems[] =
.name = _("POTION"),
.itemId = ITEM_POTION,
.price = 300,
- .holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 20,
- .description = gPotionItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sPotionDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -261,11 +192,7 @@ const struct Item gItems[] =
.name = _("ANTIDOTE"),
.itemId = ITEM_ANTIDOTE,
.price = 100,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gAntidoteItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sAntidoteDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -279,11 +206,7 @@ const struct Item gItems[] =
.name = _("BURN HEAL"),
.itemId = ITEM_BURN_HEAL,
.price = 250,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gBurnHealItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sBurnHealDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -297,11 +220,7 @@ const struct Item gItems[] =
.name = _("ICE HEAL"),
.itemId = ITEM_ICE_HEAL,
.price = 250,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gIceHealItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sIceHealDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -315,11 +234,7 @@ const struct Item gItems[] =
.name = _("AWAKENING"),
.itemId = ITEM_AWAKENING,
.price = 250,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gAwakeningItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sAwakeningDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -333,11 +248,7 @@ const struct Item gItems[] =
.name = _("PARLYZ HEAL"),
.itemId = ITEM_PARALYZE_HEAL,
.price = 200,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gParalyzeHealItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sParalyzeHealDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -351,11 +262,8 @@ const struct Item gItems[] =
.name = _("FULL RESTORE"),
.itemId = ITEM_FULL_RESTORE,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 255,
- .description = gFullRestoreItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sFullRestoreDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -369,11 +277,8 @@ const struct Item gItems[] =
.name = _("MAX POTION"),
.itemId = ITEM_MAX_POTION,
.price = 2500,
- .holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 255,
- .description = gMaxPotionItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sMaxPotionDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -387,11 +292,8 @@ const struct Item gItems[] =
.name = _("HYPER POTION"),
.itemId = ITEM_HYPER_POTION,
.price = 1200,
- .holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 200,
- .description = gHyperPotionItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sHyperPotionDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -405,11 +307,8 @@ const struct Item gItems[] =
.name = _("SUPER POTION"),
.itemId = ITEM_SUPER_POTION,
.price = 700,
- .holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 50,
- .description = gSuperPotionItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sSuperPotionDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -423,11 +322,7 @@ const struct Item gItems[] =
.name = _("FULL HEAL"),
.itemId = ITEM_FULL_HEAL,
.price = 600,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gFullHealItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sFullHealDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -441,11 +336,7 @@ const struct Item gItems[] =
.name = _("REVIVE"),
.itemId = ITEM_REVIVE,
.price = 1500,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gReviveItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sReviveDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -459,11 +350,7 @@ const struct Item gItems[] =
.name = _("MAX REVIVE"),
.itemId = ITEM_MAX_REVIVE,
.price = 4000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gMaxReviveItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sMaxReviveDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -477,11 +364,8 @@ const struct Item gItems[] =
.name = _("FRESH WATER"),
.itemId = ITEM_FRESH_WATER,
.price = 200,
- .holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 50,
- .description = gFreshWaterItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sFreshWaterDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -495,11 +379,8 @@ const struct Item gItems[] =
.name = _("SODA POP"),
.itemId = ITEM_SODA_POP,
.price = 300,
- .holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 60,
- .description = gSodaPopItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sSodaPopDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -513,11 +394,8 @@ const struct Item gItems[] =
.name = _("LEMONADE"),
.itemId = ITEM_LEMONADE,
.price = 350,
- .holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 80,
- .description = gLemonadeItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sLemonadeDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -531,11 +409,8 @@ const struct Item gItems[] =
.name = _("MOOMOO MILK"),
.itemId = ITEM_MOOMOO_MILK,
.price = 500,
- .holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 100,
- .description = gMoomooMilkItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sMoomooMilkDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -549,11 +424,7 @@ const struct Item gItems[] =
.name = _("ENERGYPOWDER"),
.itemId = ITEM_ENERGY_POWDER,
.price = 500,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gEnergyPowderItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sEnergyPowderDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -567,11 +438,7 @@ const struct Item gItems[] =
.name = _("ENERGY ROOT"),
.itemId = ITEM_ENERGY_ROOT,
.price = 800,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gEnergyRootItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sEnergyRootDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -585,11 +452,7 @@ const struct Item gItems[] =
.name = _("HEAL POWDER"),
.itemId = ITEM_HEAL_POWDER,
.price = 450,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gHealPowderItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sHealPowderDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -603,11 +466,7 @@ const struct Item gItems[] =
.name = _("REVIVAL HERB"),
.itemId = ITEM_REVIVAL_HERB,
.price = 2800,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gRevivalHerbItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sRevivalHerbDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -621,11 +480,8 @@ const struct Item gItems[] =
.name = _("ETHER"),
.itemId = ITEM_ETHER,
.price = 1200,
- .holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 10,
- .description = gEtherItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sEtherDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
@@ -639,11 +495,8 @@ const struct Item gItems[] =
.name = _("MAX ETHER"),
.itemId = ITEM_MAX_ETHER,
.price = 2000,
- .holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 255,
- .description = gMaxEtherItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sMaxEtherDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
@@ -657,11 +510,8 @@ const struct Item gItems[] =
.name = _("ELIXIR"),
.itemId = ITEM_ELIXIR,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 10,
- .description = gElixirItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sElixirDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
@@ -675,11 +525,8 @@ const struct Item gItems[] =
.name = _("MAX ELIXIR"),
.itemId = ITEM_MAX_ELIXIR,
.price = 4500,
- .holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 255,
- .description = gMaxElixirItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sMaxElixirDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
@@ -693,11 +540,7 @@ const struct Item gItems[] =
.name = _("LAVA COOKIE"),
.itemId = ITEM_LAVA_COOKIE,
.price = 200,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gLavaCookieItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sLavaCookieDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -711,11 +554,7 @@ const struct Item gItems[] =
.name = _("BLUE FLUTE"),
.itemId = ITEM_BLUE_FLUTE,
.price = 100,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gBlueFluteItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sBlueFluteDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -729,11 +568,7 @@ const struct Item gItems[] =
.name = _("YELLOW FLUTE"),
.itemId = ITEM_YELLOW_FLUTE,
.price = 200,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gYellowFluteItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sYellowFluteDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -747,11 +582,7 @@ const struct Item gItems[] =
.name = _("RED FLUTE"),
.itemId = ITEM_RED_FLUTE,
.price = 300,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gRedFluteItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sRedFluteDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -765,16 +596,11 @@ const struct Item gItems[] =
.name = _("BLACK FLUTE"),
.itemId = ITEM_BLACK_FLUTE,
.price = 400,
- .holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 50,
- .description = gBlackFluteItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sBlackFluteDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -783,16 +609,11 @@ const struct Item gItems[] =
.name = _("WHITE FLUTE"),
.itemId = ITEM_WHITE_FLUTE,
.price = 500,
- .holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 150,
- .description = gWhiteFluteItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sWhiteFluteDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -803,9 +624,7 @@ const struct Item gItems[] =
.price = 100,
.holdEffect = HOLD_EFFECT_RESTORE_HP,
.holdEffectParam = 20,
- .description = gBerryJuiceItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sBerryJuiceDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -819,16 +638,10 @@ const struct Item gItems[] =
.name = _("SACRED ASH"),
.itemId = ITEM_SACRED_ASH,
.price = 200,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gSacredAshItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sSacredAshDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_SacredAsh,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -839,16 +652,10 @@ const struct Item gItems[] =
.name = _("SHOAL SALT"),
.itemId = ITEM_SHOAL_SALT,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gShoalSaltItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sShoalSaltDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -857,16 +664,10 @@ const struct Item gItems[] =
.name = _("SHOAL SHELL"),
.itemId = ITEM_SHOAL_SHELL,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gShoalShellItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sShoalShellDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -875,16 +676,10 @@ const struct Item gItems[] =
.name = _("RED SHARD"),
.itemId = ITEM_RED_SHARD,
.price = 200,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gRedShardItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sRedShardDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -893,16 +688,10 @@ const struct Item gItems[] =
.name = _("BLUE SHARD"),
.itemId = ITEM_BLUE_SHARD,
.price = 200,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gBlueShardItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sBlueShardDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -911,16 +700,10 @@ const struct Item gItems[] =
.name = _("YELLOW SHARD"),
.itemId = ITEM_YELLOW_SHARD,
.price = 200,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gYellowShardItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sYellowShardDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -929,16 +712,10 @@ const struct Item gItems[] =
.name = _("GREEN SHARD"),
.itemId = ITEM_GREEN_SHARD,
.price = 200,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gGreenShardItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sGreenShardDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -947,16 +724,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -965,16 +736,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -983,16 +748,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1001,16 +760,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1019,16 +772,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1037,16 +784,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1055,16 +796,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1073,16 +808,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1091,16 +820,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1109,16 +832,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1127,16 +844,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1147,16 +858,10 @@ const struct Item gItems[] =
.name = _("HP UP"),
.itemId = ITEM_HP_UP,
.price = 9800,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gHPUpItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sHPUpDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1165,16 +870,10 @@ const struct Item gItems[] =
.name = _("PROTEIN"),
.itemId = ITEM_PROTEIN,
.price = 9800,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gProteinItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sProteinDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1183,16 +882,10 @@ const struct Item gItems[] =
.name = _("IRON"),
.itemId = ITEM_IRON,
.price = 9800,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gIronItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sIronDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1201,16 +894,10 @@ const struct Item gItems[] =
.name = _("CARBOS"),
.itemId = ITEM_CARBOS,
.price = 9800,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gCarbosItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sCarbosDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1219,16 +906,10 @@ const struct Item gItems[] =
.name = _("CALCIUM"),
.itemId = ITEM_CALCIUM,
.price = 9800,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gCalciumItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sCalciumDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1237,16 +918,10 @@ const struct Item gItems[] =
.name = _("RARE CANDY"),
.itemId = ITEM_RARE_CANDY,
.price = 4800,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gRareCandyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sRareCandyDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_RareCandy,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1255,16 +930,10 @@ const struct Item gItems[] =
.name = _("PP UP"),
.itemId = ITEM_PP_UP,
.price = 9800,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gPPUpItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sPPUpDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_PPUp,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1273,16 +942,10 @@ const struct Item gItems[] =
.name = _("ZINC"),
.itemId = ITEM_ZINC,
.price = 9800,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gZincItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sZincDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1291,16 +954,10 @@ const struct Item gItems[] =
.name = _("PP MAX"),
.itemId = ITEM_PP_MAX,
.price = 9800,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gPPMaxItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sPPMaxDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_PPUp,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1309,16 +966,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1329,11 +980,7 @@ const struct Item gItems[] =
.name = _("GUARD SPEC."),
.itemId = ITEM_GUARD_SPEC,
.price = 700,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gGuardSpecItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sGuardSpecDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1347,11 +994,7 @@ const struct Item gItems[] =
.name = _("DIRE HIT"),
.itemId = ITEM_DIRE_HIT,
.price = 650,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDireHitItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDireHitDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1365,11 +1008,7 @@ const struct Item gItems[] =
.name = _("X ATTACK"),
.itemId = ITEM_X_ATTACK,
.price = 500,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gXAttackItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sXAttackDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1383,11 +1022,7 @@ const struct Item gItems[] =
.name = _("X DEFEND"),
.itemId = ITEM_X_DEFEND,
.price = 550,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gXDefendItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sXDefendDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1401,11 +1036,7 @@ const struct Item gItems[] =
.name = _("X SPEED"),
.itemId = ITEM_X_SPEED,
.price = 350,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gXSpeedItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sXSpeedDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1419,11 +1050,7 @@ const struct Item gItems[] =
.name = _("X ACCURACY"),
.itemId = ITEM_X_ACCURACY,
.price = 950,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gXAccuracyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sXAccuracyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1437,11 +1064,7 @@ const struct Item gItems[] =
.name = _("X SPECIAL"),
.itemId = ITEM_X_SPECIAL,
.price = 350,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gXSpecialItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sXSpecialDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1455,11 +1078,7 @@ const struct Item gItems[] =
.name = _("POKé DOLL"),
.itemId = ITEM_POKE_DOLL,
.price = 1000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gPokeDollItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sPokeDollDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1473,11 +1092,7 @@ const struct Item gItems[] =
.name = _("FLUFFY TAIL"),
.itemId = ITEM_FLUFFY_TAIL,
.price = 1000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gFluffyTailItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sFluffyTailDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -1491,16 +1106,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1511,16 +1120,11 @@ const struct Item gItems[] =
.name = _("SUPER REPEL"),
.itemId = ITEM_SUPER_REPEL,
.price = 500,
- .holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 200,
- .description = gSuperRepelItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sSuperRepelDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_Repel,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1529,16 +1133,11 @@ const struct Item gItems[] =
.name = _("MAX REPEL"),
.itemId = ITEM_MAX_REPEL,
.price = 700,
- .holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 250,
- .description = gMaxRepelItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sMaxRepelDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_Repel,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1547,16 +1146,10 @@ const struct Item gItems[] =
.name = _("ESCAPE ROPE"),
.itemId = ITEM_ESCAPE_ROPE,
.price = 550,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gEscapeRopeItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sEscapeRopeDesc,
.pocket = POCKET_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_EscapeRope,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1565,16 +1158,11 @@ const struct Item gItems[] =
.name = _("REPEL"),
.itemId = ITEM_REPEL,
.price = 350,
- .holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 100,
- .description = gRepelItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sRepelDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_Repel,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1583,16 +1171,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1601,16 +1183,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1619,16 +1195,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1637,16 +1207,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1655,16 +1219,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1673,16 +1231,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1693,16 +1245,10 @@ const struct Item gItems[] =
.name = _("SUN STONE"),
.itemId = ITEM_SUN_STONE,
.price = 2100,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gSunStoneItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sSunStoneDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1711,16 +1257,10 @@ const struct Item gItems[] =
.name = _("MOON STONE"),
.itemId = ITEM_MOON_STONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gMoonStoneItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sMoonStoneDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1729,16 +1269,10 @@ const struct Item gItems[] =
.name = _("FIRE STONE"),
.itemId = ITEM_FIRE_STONE,
.price = 2100,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gFireStoneItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sFireStoneDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1747,16 +1281,10 @@ const struct Item gItems[] =
.name = _("THUNDERSTONE"),
.itemId = ITEM_THUNDER_STONE,
.price = 2100,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gThunderStoneItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sThunderStoneDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1765,16 +1293,10 @@ const struct Item gItems[] =
.name = _("WATER STONE"),
.itemId = ITEM_WATER_STONE,
.price = 2100,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gWaterStoneItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sWaterStoneDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1783,16 +1305,10 @@ const struct Item gItems[] =
.name = _("LEAF STONE"),
.itemId = ITEM_LEAF_STONE,
.price = 2100,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gLeafStoneItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sLeafStoneDesc,
.pocket = POCKET_ITEMS,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1801,16 +1317,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1819,16 +1329,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1837,16 +1341,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1855,16 +1353,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1875,16 +1367,10 @@ const struct Item gItems[] =
.name = _("TINYMUSHROOM"),
.itemId = ITEM_TINY_MUSHROOM,
.price = 500,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTinyMushroomItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTinyMushroomDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1893,16 +1379,10 @@ const struct Item gItems[] =
.name = _("BIG MUSHROOM"),
.itemId = ITEM_BIG_MUSHROOM,
.price = 5000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gBigMushroomItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sBigMushroomDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1911,16 +1391,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1929,16 +1403,10 @@ const struct Item gItems[] =
.name = _("PEARL"),
.itemId = ITEM_PEARL,
.price = 1400,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gPearlItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sPearlDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1947,16 +1415,10 @@ const struct Item gItems[] =
.name = _("BIG PEARL"),
.itemId = ITEM_BIG_PEARL,
.price = 7500,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gBigPearlItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sBigPearlDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1965,16 +1427,10 @@ const struct Item gItems[] =
.name = _("STARDUST"),
.itemId = ITEM_STARDUST,
.price = 2000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gStardustItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sStardustDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -1983,16 +1439,10 @@ const struct Item gItems[] =
.name = _("STAR PIECE"),
.itemId = ITEM_STAR_PIECE,
.price = 9800,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gStarPieceItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sStarPieceDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2001,16 +1451,10 @@ const struct Item gItems[] =
.name = _("NUGGET"),
.itemId = ITEM_NUGGET,
.price = 10000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gNuggetItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sNuggetDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2019,16 +1463,10 @@ const struct Item gItems[] =
.name = _("HEART SCALE"),
.itemId = ITEM_HEART_SCALE,
.price = 100,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gHeartScaleItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sHeartScaleDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2037,16 +1475,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2055,16 +1487,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2073,16 +1499,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2091,16 +1511,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2109,16 +1523,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2127,16 +1535,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2145,16 +1547,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2163,16 +1559,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2181,16 +1571,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2200,16 +1584,10 @@ const struct Item gItems[] =
.name = _("ORANGE MAIL"),
.itemId = ITEM_ORANGE_MAIL,
.price = 50,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gOrangeMailItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sOrangeMailDesc,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2218,16 +1596,10 @@ const struct Item gItems[] =
.name = _("HARBOR MAIL"),
.itemId = ITEM_HARBOR_MAIL,
.price = 50,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gHarborMailItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sHarborMailDesc,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 1,
},
@@ -2236,16 +1608,10 @@ const struct Item gItems[] =
.name = _("GLITTER MAIL"),
.itemId = ITEM_GLITTER_MAIL,
.price = 50,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gGlitterMailItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sGlitterMailDesc,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 2,
},
@@ -2254,16 +1620,10 @@ const struct Item gItems[] =
.name = _("MECH MAIL"),
.itemId = ITEM_MECH_MAIL,
.price = 50,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gMechMailItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sMechMailDesc,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 3,
},
@@ -2272,16 +1632,10 @@ const struct Item gItems[] =
.name = _("WOOD MAIL"),
.itemId = ITEM_WOOD_MAIL,
.price = 50,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gWoodMailItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sWoodMailDesc,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 4,
},
@@ -2290,16 +1644,10 @@ const struct Item gItems[] =
.name = _("WAVE MAIL"),
.itemId = ITEM_WAVE_MAIL,
.price = 50,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gWaveMailItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sWaveMailDesc,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 5,
},
@@ -2308,16 +1656,10 @@ const struct Item gItems[] =
.name = _("BEAD MAIL"),
.itemId = ITEM_BEAD_MAIL,
.price = 50,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gBeadMailItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sBeadMailDesc,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 6,
},
@@ -2326,16 +1668,10 @@ const struct Item gItems[] =
.name = _("SHADOW MAIL"),
.itemId = ITEM_SHADOW_MAIL,
.price = 50,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gShadowMailItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sShadowMailDesc,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 7,
},
@@ -2344,16 +1680,10 @@ const struct Item gItems[] =
.name = _("TROPIC MAIL"),
.itemId = ITEM_TROPIC_MAIL,
.price = 50,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTropicMailItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTropicMailDesc,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 8,
},
@@ -2362,16 +1692,10 @@ const struct Item gItems[] =
.name = _("DREAM MAIL"),
.itemId = ITEM_DREAM_MAIL,
.price = 50,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDreamMailItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDreamMailDesc,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 9,
},
@@ -2380,16 +1704,10 @@ const struct Item gItems[] =
.name = _("FAB MAIL"),
.itemId = ITEM_FAB_MAIL,
.price = 50,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gFabMailItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sFabMailDesc,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 10,
},
@@ -2398,16 +1716,10 @@ const struct Item gItems[] =
.name = _("RETRO MAIL"),
.itemId = ITEM_RETRO_MAIL,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gRetroMailItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sRetroMailDesc,
.pocket = POCKET_ITEMS,
.type = 0,
.fieldUseFunc = ItemUseOutOfBattle_Mail,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 11,
},
@@ -2419,10 +1731,7 @@ const struct Item gItems[] =
.itemId = ITEM_CHERI_BERRY,
.price = 20,
.holdEffect = HOLD_EFFECT_CURE_PAR,
- .holdEffectParam = 0,
- .description = gCheriBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sCheriBerryDesc,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2437,10 +1746,7 @@ const struct Item gItems[] =
.itemId = ITEM_CHESTO_BERRY,
.price = 20,
.holdEffect = HOLD_EFFECT_CURE_SLP,
- .holdEffectParam = 0,
- .description = gChestoBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sChestoBerryDesc,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2455,10 +1761,7 @@ const struct Item gItems[] =
.itemId = ITEM_PECHA_BERRY,
.price = 20,
.holdEffect = HOLD_EFFECT_CURE_PSN,
- .holdEffectParam = 0,
- .description = gPechaBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sPechaBerryDesc,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2473,10 +1776,7 @@ const struct Item gItems[] =
.itemId = ITEM_RAWST_BERRY,
.price = 20,
.holdEffect = HOLD_EFFECT_CURE_BRN,
- .holdEffectParam = 0,
- .description = gRawstBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sRawstBerryDesc,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2491,10 +1791,7 @@ const struct Item gItems[] =
.itemId = ITEM_ASPEAR_BERRY,
.price = 20,
.holdEffect = HOLD_EFFECT_CURE_FRZ,
- .holdEffectParam = 0,
- .description = gAspearBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sAspearBerryDesc,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2510,9 +1807,7 @@ const struct Item gItems[] =
.price = 20,
.holdEffect = HOLD_EFFECT_RESTORE_PP,
.holdEffectParam = 10,
- .description = gLeppaBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sLeppaBerryDesc,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
@@ -2528,9 +1823,7 @@ const struct Item gItems[] =
.price = 20,
.holdEffect = HOLD_EFFECT_RESTORE_HP,
.holdEffectParam = 10,
- .description = gOranBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sOranBerryDesc,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2545,10 +1838,7 @@ const struct Item gItems[] =
.itemId = ITEM_PERSIM_BERRY,
.price = 20,
.holdEffect = HOLD_EFFECT_CURE_CONFUSION,
- .holdEffectParam = 0,
- .description = gPersimBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sPersimBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
@@ -2563,10 +1853,7 @@ const struct Item gItems[] =
.itemId = ITEM_LUM_BERRY,
.price = 20,
.holdEffect = HOLD_EFFECT_CURE_STATUS,
- .holdEffectParam = 0,
- .description = gLumBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sLumBerryDesc,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2582,9 +1869,7 @@ const struct Item gItems[] =
.price = 20,
.holdEffect = HOLD_EFFECT_RESTORE_HP,
.holdEffectParam = 30,
- .description = gSitrusBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sSitrusBerryDesc,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_Medicine,
@@ -2600,14 +1885,10 @@ const struct Item gItems[] =
.price = 20,
.holdEffect = HOLD_EFFECT_CONFUSE_SPICY,
.holdEffectParam = 8,
- .description = gFigyBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sFigyBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2618,14 +1899,10 @@ const struct Item gItems[] =
.price = 20,
.holdEffect = HOLD_EFFECT_CONFUSE_DRY,
.holdEffectParam = 8,
- .description = gWikiBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sWikiBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2636,14 +1913,10 @@ const struct Item gItems[] =
.price = 20,
.holdEffect = HOLD_EFFECT_CONFUSE_SWEET,
.holdEffectParam = 8,
- .description = gMagoBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sMagoBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2654,14 +1927,10 @@ const struct Item gItems[] =
.price = 20,
.holdEffect = HOLD_EFFECT_CONFUSE_BITTER,
.holdEffectParam = 8,
- .description = gAguavBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sAguavBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2672,14 +1941,10 @@ const struct Item gItems[] =
.price = 20,
.holdEffect = HOLD_EFFECT_CONFUSE_SOUR,
.holdEffectParam = 8,
- .description = gIapapaBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sIapapaBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2688,16 +1953,10 @@ const struct Item gItems[] =
.name = _("RAZZ BERRY"),
.itemId = ITEM_RAZZ_BERRY,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gRazzBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sRazzBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2706,16 +1965,10 @@ const struct Item gItems[] =
.name = _("BLUK BERRY"),
.itemId = ITEM_BLUK_BERRY,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gBlukBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sBlukBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2724,16 +1977,10 @@ const struct Item gItems[] =
.name = _("NANAB BERRY"),
.itemId = ITEM_NANAB_BERRY,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gNanabBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sNanabBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2742,16 +1989,10 @@ const struct Item gItems[] =
.name = _("WEPEAR BERRY"),
.itemId = ITEM_WEPEAR_BERRY,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gWepearBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sWepearBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2760,16 +2001,10 @@ const struct Item gItems[] =
.name = _("PINAP BERRY"),
.itemId = ITEM_PINAP_BERRY,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gPinapBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sPinapBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2778,16 +2013,10 @@ const struct Item gItems[] =
.name = _("POMEG BERRY"),
.itemId = ITEM_POMEG_BERRY,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gPomegBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sPomegBerryDesc,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_ReduceEV,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2796,16 +2025,10 @@ const struct Item gItems[] =
.name = _("KELPSY BERRY"),
.itemId = ITEM_KELPSY_BERRY,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gKelpsyBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sKelpsyBerryDesc,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_ReduceEV,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2814,16 +2037,10 @@ const struct Item gItems[] =
.name = _("QUALOT BERRY"),
.itemId = ITEM_QUALOT_BERRY,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gQualotBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sQualotBerryDesc,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_ReduceEV,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2832,16 +2049,10 @@ const struct Item gItems[] =
.name = _("HONDEW BERRY"),
.itemId = ITEM_HONDEW_BERRY,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gHondewBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sHondewBerryDesc,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_ReduceEV,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2850,16 +2061,10 @@ const struct Item gItems[] =
.name = _("GREPA BERRY"),
.itemId = ITEM_GREPA_BERRY,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gGrepaBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sGrepaBerryDesc,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_ReduceEV,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2868,16 +2073,10 @@ const struct Item gItems[] =
.name = _("TAMATO BERRY"),
.itemId = ITEM_TAMATO_BERRY,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTamatoBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTamatoBerryDesc,
.pocket = POCKET_BERRIES,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_ReduceEV,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2886,16 +2085,10 @@ const struct Item gItems[] =
.name = _("CORNN BERRY"),
.itemId = ITEM_CORNN_BERRY,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gCornnBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sCornnBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2904,16 +2097,10 @@ const struct Item gItems[] =
.name = _("MAGOST BERRY"),
.itemId = ITEM_MAGOST_BERRY,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gMagostBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sMagostBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2922,16 +2109,10 @@ const struct Item gItems[] =
.name = _("RABUTA BERRY"),
.itemId = ITEM_RABUTA_BERRY,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gRabutaBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sRabutaBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2940,16 +2121,10 @@ const struct Item gItems[] =
.name = _("NOMEL BERRY"),
.itemId = ITEM_NOMEL_BERRY,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gNomelBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sNomelBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2958,16 +2133,10 @@ const struct Item gItems[] =
.name = _("SPELON BERRY"),
.itemId = ITEM_SPELON_BERRY,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gSpelonBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sSpelonBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2976,16 +2145,10 @@ const struct Item gItems[] =
.name = _("PAMTRE BERRY"),
.itemId = ITEM_PAMTRE_BERRY,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gPamtreBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sPamtreBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -2994,16 +2157,10 @@ const struct Item gItems[] =
.name = _("WATMEL BERRY"),
.itemId = ITEM_WATMEL_BERRY,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gWatmelBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sWatmelBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3012,16 +2169,10 @@ const struct Item gItems[] =
.name = _("DURIN BERRY"),
.itemId = ITEM_DURIN_BERRY,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDurinBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDurinBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3030,16 +2181,10 @@ const struct Item gItems[] =
.name = _("BELUE BERRY"),
.itemId = ITEM_BELUE_BERRY,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gBelueBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sBelueBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3050,14 +2195,10 @@ const struct Item gItems[] =
.price = 20,
.holdEffect = HOLD_EFFECT_ATTACK_UP,
.holdEffectParam = 4,
- .description = gLiechiBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sLiechiBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3068,14 +2209,10 @@ const struct Item gItems[] =
.price = 20,
.holdEffect = HOLD_EFFECT_DEFENSE_UP,
.holdEffectParam = 4,
- .description = gGanlonBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sGanlonBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3086,14 +2223,10 @@ const struct Item gItems[] =
.price = 20,
.holdEffect = HOLD_EFFECT_SPEED_UP,
.holdEffectParam = 4,
- .description = gSalacBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sSalacBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3104,14 +2237,10 @@ const struct Item gItems[] =
.price = 20,
.holdEffect = HOLD_EFFECT_SP_ATTACK_UP,
.holdEffectParam = 4,
- .description = gPetayaBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sPetayaBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3122,14 +2251,10 @@ const struct Item gItems[] =
.price = 20,
.holdEffect = HOLD_EFFECT_SP_DEFENSE_UP,
.holdEffectParam = 4,
- .description = gApicotBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sApicotBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3140,14 +2265,10 @@ const struct Item gItems[] =
.price = 20,
.holdEffect = HOLD_EFFECT_CRITICAL_UP,
.holdEffectParam = 4,
- .description = gLansatBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sLansatBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3158,14 +2279,10 @@ const struct Item gItems[] =
.price = 20,
.holdEffect = HOLD_EFFECT_RANDOM_STAT_UP,
.holdEffectParam = 4,
- .description = gStarfBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sStarfBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3174,11 +2291,7 @@ const struct Item gItems[] =
.name = _("ENIGMA BERRY"),
.itemId = ITEM_ENIGMA_BERRY,
.price = 20,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gEnigmaBerryItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sEnigmaBerryDesc,
.pocket = POCKET_BERRIES,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_EnigmaBerry,
@@ -3192,16 +2305,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3210,16 +2317,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3228,16 +2329,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3250,14 +2345,10 @@ const struct Item gItems[] =
.price = 10,
.holdEffect = HOLD_EFFECT_EVASION_UP,
.holdEffectParam = 10,
- .description = gBrightPowderItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sBrightPowderDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3267,15 +2358,10 @@ const struct Item gItems[] =
.itemId = ITEM_WHITE_HERB,
.price = 100,
.holdEffect = HOLD_EFFECT_RESTORE_STATS,
- .holdEffectParam = 0,
- .description = gWhiteHerbItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sWhiteHerbDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3285,15 +2371,10 @@ const struct Item gItems[] =
.itemId = ITEM_MACHO_BRACE,
.price = 3000,
.holdEffect = HOLD_EFFECT_MACHO_BRACE,
- .holdEffectParam = 0,
- .description = gMachoBraceItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sMachoBraceDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3303,15 +2384,10 @@ const struct Item gItems[] =
.itemId = ITEM_EXP_SHARE,
.price = 3000,
.holdEffect = HOLD_EFFECT_EXP_SHARE,
- .holdEffectParam = 0,
- .description = gExpShareItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sExpShareDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3322,14 +2398,10 @@ const struct Item gItems[] =
.price = 100,
.holdEffect = HOLD_EFFECT_QUICK_CLAW,
.holdEffectParam = 20,
- .description = gQuickClawItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sQuickClawDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3339,15 +2411,10 @@ const struct Item gItems[] =
.itemId = ITEM_SOOTHE_BELL,
.price = 100,
.holdEffect = HOLD_EFFECT_HAPPINESS_UP,
- .holdEffectParam = 0,
- .description = gSootheBellItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sSootheBellDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3357,15 +2424,10 @@ const struct Item gItems[] =
.itemId = ITEM_MENTAL_HERB,
.price = 100,
.holdEffect = HOLD_EFFECT_CURE_ATTRACT,
- .holdEffectParam = 0,
- .description = gMentalHerbItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sMentalHerbDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3375,15 +2437,10 @@ const struct Item gItems[] =
.itemId = ITEM_CHOICE_BAND,
.price = 100,
.holdEffect = HOLD_EFFECT_CHOICE_BAND,
- .holdEffectParam = 0,
- .description = gChoiceBandItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sChoiceBandDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3394,14 +2451,10 @@ const struct Item gItems[] =
.price = 100,
.holdEffect = HOLD_EFFECT_FLINCH,
.holdEffectParam = 10,
- .description = gKingsRockItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sKingsRockDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3412,14 +2465,10 @@ const struct Item gItems[] =
.price = 100,
.holdEffect = HOLD_EFFECT_BUG_POWER,
.holdEffectParam = 10,
- .description = gSilverPowderItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sSilverPowderDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3430,14 +2479,10 @@ const struct Item gItems[] =
.price = 100,
.holdEffect = HOLD_EFFECT_DOUBLE_PRIZE,
.holdEffectParam = 10,
- .description = gAmuletCoinItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sAmuletCoinDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3447,15 +2492,10 @@ const struct Item gItems[] =
.itemId = ITEM_CLEANSE_TAG,
.price = 200,
.holdEffect = HOLD_EFFECT_REPEL,
- .holdEffectParam = 0,
- .description = gCleanseTagItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sCleanseTagDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3465,15 +2505,10 @@ const struct Item gItems[] =
.itemId = ITEM_SOUL_DEW,
.price = 200,
.holdEffect = HOLD_EFFECT_SOUL_DEW,
- .holdEffectParam = 0,
- .description = gSoulDewItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sSoulDewDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3483,15 +2518,10 @@ const struct Item gItems[] =
.itemId = ITEM_DEEP_SEA_TOOTH,
.price = 200,
.holdEffect = HOLD_EFFECT_DEEP_SEA_TOOTH,
- .holdEffectParam = 0,
- .description = gDeepSeaToothItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDeepSeaToothDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3501,15 +2531,10 @@ const struct Item gItems[] =
.itemId = ITEM_DEEP_SEA_SCALE,
.price = 200,
.holdEffect = HOLD_EFFECT_DEEP_SEA_SCALE,
- .holdEffectParam = 0,
- .description = gDeepSeaScaleItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDeepSeaScaleDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3519,15 +2544,10 @@ const struct Item gItems[] =
.itemId = ITEM_SMOKE_BALL,
.price = 200,
.holdEffect = HOLD_EFFECT_CAN_ALWAYS_RUN,
- .holdEffectParam = 0,
- .description = gSmokeBallItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sSmokeBallDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3537,15 +2557,10 @@ const struct Item gItems[] =
.itemId = ITEM_EVERSTONE,
.price = 200,
.holdEffect = HOLD_EFFECT_PREVENT_EVOLVE,
- .holdEffectParam = 0,
- .description = gEverstoneItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sEverstoneDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3556,14 +2571,10 @@ const struct Item gItems[] =
.price = 200,
.holdEffect = HOLD_EFFECT_FOCUS_BAND,
.holdEffectParam = 10,
- .description = gFocusBandItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sFocusBandDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3573,15 +2584,10 @@ const struct Item gItems[] =
.itemId = ITEM_LUCKY_EGG,
.price = 200,
.holdEffect = HOLD_EFFECT_LUCKY_EGG,
- .holdEffectParam = 0,
- .description = gLuckyEggItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sLuckyEggDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3591,15 +2597,10 @@ const struct Item gItems[] =
.itemId = ITEM_SCOPE_LENS,
.price = 200,
.holdEffect = HOLD_EFFECT_SCOPE_LENS,
- .holdEffectParam = 0,
- .description = gScopeLensItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sScopeLensDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3610,14 +2611,10 @@ const struct Item gItems[] =
.price = 100,
.holdEffect = HOLD_EFFECT_STEEL_POWER,
.holdEffectParam = 10,
- .description = gMetalCoatItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sMetalCoatDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3628,14 +2625,10 @@ const struct Item gItems[] =
.price = 200,
.holdEffect = HOLD_EFFECT_LEFTOVERS,
.holdEffectParam = 10,
- .description = gLeftoversItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sLeftoversDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3646,14 +2639,10 @@ const struct Item gItems[] =
.price = 2100,
.holdEffect = HOLD_EFFECT_DRAGON_SCALE,
.holdEffectParam = 10,
- .description = gDragonScaleItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDragonScaleDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3663,15 +2652,10 @@ const struct Item gItems[] =
.itemId = ITEM_LIGHT_BALL,
.price = 100,
.holdEffect = HOLD_EFFECT_LIGHT_BALL,
- .holdEffectParam = 0,
- .description = gLightBallItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sLightBallDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3682,14 +2666,10 @@ const struct Item gItems[] =
.price = 100,
.holdEffect = HOLD_EFFECT_GROUND_POWER,
.holdEffectParam = 10,
- .description = gSoftSandItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sSoftSandDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3700,14 +2680,10 @@ const struct Item gItems[] =
.price = 100,
.holdEffect = HOLD_EFFECT_ROCK_POWER,
.holdEffectParam = 10,
- .description = gHardStoneItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sHardStoneDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3718,14 +2694,10 @@ const struct Item gItems[] =
.price = 100,
.holdEffect = HOLD_EFFECT_GRASS_POWER,
.holdEffectParam = 10,
- .description = gMiracleSeedItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sMiracleSeedDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3736,14 +2708,10 @@ const struct Item gItems[] =
.price = 100,
.holdEffect = HOLD_EFFECT_DARK_POWER,
.holdEffectParam = 10,
- .description = gBlackGlassesItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sBlackGlassesDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3754,14 +2722,10 @@ const struct Item gItems[] =
.price = 100,
.holdEffect = HOLD_EFFECT_FIGHTING_POWER,
.holdEffectParam = 10,
- .description = gBlackBeltItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sBlackBeltDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3772,14 +2736,10 @@ const struct Item gItems[] =
.price = 100,
.holdEffect = HOLD_EFFECT_ELECTRIC_POWER,
.holdEffectParam = 10,
- .description = gMagnetItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sMagnetDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3790,14 +2750,10 @@ const struct Item gItems[] =
.price = 100,
.holdEffect = HOLD_EFFECT_WATER_POWER,
.holdEffectParam = 10,
- .description = gMysticWaterItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sMysticWaterDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3808,14 +2764,10 @@ const struct Item gItems[] =
.price = 100,
.holdEffect = HOLD_EFFECT_FLYING_POWER,
.holdEffectParam = 10,
- .description = gSharpBeakItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sSharpBeakDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3826,14 +2778,10 @@ const struct Item gItems[] =
.price = 100,
.holdEffect = HOLD_EFFECT_POISON_POWER,
.holdEffectParam = 10,
- .description = gPoisonBarbItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sPoisonBarbDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3844,14 +2792,10 @@ const struct Item gItems[] =
.price = 100,
.holdEffect = HOLD_EFFECT_ICE_POWER,
.holdEffectParam = 10,
- .description = gNeverMeltIceItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sNeverMeltIceDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3862,14 +2806,10 @@ const struct Item gItems[] =
.price = 100,
.holdEffect = HOLD_EFFECT_GHOST_POWER,
.holdEffectParam = 10,
- .description = gSpellTagItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sSpellTagDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3880,14 +2820,10 @@ const struct Item gItems[] =
.price = 100,
.holdEffect = HOLD_EFFECT_PSYCHIC_POWER,
.holdEffectParam = 10,
- .description = gTwistedSpoonItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTwistedSpoonDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3898,14 +2834,10 @@ const struct Item gItems[] =
.price = 9800,
.holdEffect = HOLD_EFFECT_FIRE_POWER,
.holdEffectParam = 10,
- .description = gCharcoalItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sCharcoalDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3916,14 +2848,10 @@ const struct Item gItems[] =
.price = 100,
.holdEffect = HOLD_EFFECT_DRAGON_POWER,
.holdEffectParam = 10,
- .description = gDragonFangItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDragonFangDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3934,14 +2862,10 @@ const struct Item gItems[] =
.price = 100,
.holdEffect = HOLD_EFFECT_NORMAL_POWER,
.holdEffectParam = 10,
- .description = gSilkScarfItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sSilkScarfDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3951,15 +2875,10 @@ const struct Item gItems[] =
.itemId = ITEM_UP_GRADE,
.price = 2100,
.holdEffect = HOLD_EFFECT_UP_GRADE,
- .holdEffectParam = 0,
- .description = gUpGradeItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sUpGradeDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3970,14 +2889,10 @@ const struct Item gItems[] =
.price = 200,
.holdEffect = HOLD_EFFECT_SHELL_BELL,
.holdEffectParam = 8,
- .description = gShellBellItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sShellBellDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -3988,14 +2903,10 @@ const struct Item gItems[] =
.price = 9600,
.holdEffect = HOLD_EFFECT_WATER_POWER,
.holdEffectParam = 5,
- .description = gSeaIncenseItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sSeaIncenseDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4006,14 +2917,10 @@ const struct Item gItems[] =
.price = 9600,
.holdEffect = HOLD_EFFECT_EVASION_UP,
.holdEffectParam = 5,
- .description = gLaxIncenseItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sLaxIncenseDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4023,15 +2930,10 @@ const struct Item gItems[] =
.itemId = ITEM_LUCKY_PUNCH,
.price = 10,
.holdEffect = HOLD_EFFECT_LUCKY_PUNCH,
- .holdEffectParam = 0,
- .description = gLuckyPunchItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sLuckyPunchDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4041,15 +2943,10 @@ const struct Item gItems[] =
.itemId = ITEM_METAL_POWDER,
.price = 10,
.holdEffect = HOLD_EFFECT_METAL_POWDER,
- .holdEffectParam = 0,
- .description = gMetalPowderItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sMetalPowderDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4059,15 +2956,10 @@ const struct Item gItems[] =
.itemId = ITEM_THICK_CLUB,
.price = 500,
.holdEffect = HOLD_EFFECT_THICK_CLUB,
- .holdEffectParam = 0,
- .description = gThickClubItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sThickClubDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4077,15 +2969,10 @@ const struct Item gItems[] =
.itemId = ITEM_STICK,
.price = 200,
.holdEffect = HOLD_EFFECT_STICK,
- .holdEffectParam = 0,
- .description = gStickItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sStickDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4094,16 +2981,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4112,16 +2993,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4130,16 +3005,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4148,16 +3017,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4166,16 +3029,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4184,16 +3041,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4202,16 +3053,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4220,16 +3065,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4238,16 +3077,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4256,16 +3089,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4274,16 +3101,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4292,16 +3113,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4310,16 +3125,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4328,16 +3137,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4346,16 +3149,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4364,16 +3161,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4382,16 +3173,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4400,16 +3185,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4418,16 +3197,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4436,16 +3209,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4454,16 +3221,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4472,16 +3233,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4490,16 +3245,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4508,16 +3257,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4526,16 +3269,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4544,16 +3281,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4562,16 +3293,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4580,16 +3305,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4598,16 +3317,10 @@ const struct Item gItems[] =
.name = _("RED SCARF"),
.itemId = ITEM_RED_SCARF,
.price = 100,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gRedScarfItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sRedScarfDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4616,16 +3329,10 @@ const struct Item gItems[] =
.name = _("BLUE SCARF"),
.itemId = ITEM_BLUE_SCARF,
.price = 100,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gBlueScarfItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sBlueScarfDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4634,16 +3341,10 @@ const struct Item gItems[] =
.name = _("PINK SCARF"),
.itemId = ITEM_PINK_SCARF,
.price = 100,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gPinkScarfItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sPinkScarfDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4652,16 +3353,10 @@ const struct Item gItems[] =
.name = _("GREEN SCARF"),
.itemId = ITEM_GREEN_SCARF,
.price = 100,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gGreenScarfItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sGreenScarfDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4670,16 +3365,10 @@ const struct Item gItems[] =
.name = _("YELLOW SCARF"),
.itemId = ITEM_YELLOW_SCARF,
.price = 100,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gYellowScarfItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sYellowScarfDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4690,16 +3379,12 @@ const struct Item gItems[] =
.name = _("MACH BIKE"),
.itemId = ITEM_MACH_BIKE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gMachBikeItemDescription,
+ .description = sMachBikeDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_Bike,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4708,16 +3393,11 @@ const struct Item gItems[] =
.name = _("COIN CASE"),
.itemId = ITEM_COIN_CASE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gCoinCaseItemDescription,
+ .description = sCoinCaseDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CoinCase,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4726,16 +3406,12 @@ const struct Item gItems[] =
.name = _("ITEMFINDER"),
.itemId = ITEM_ITEMFINDER,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gItemfinderItemDescription,
+ .description = sItemfinderDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_Itemfinder,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4744,16 +3420,12 @@ const struct Item gItems[] =
.name = _("OLD ROD"),
.itemId = ITEM_OLD_ROD,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gOldRodItemDescription,
+ .description = sOldRodDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_Rod,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4762,16 +3434,12 @@ const struct Item gItems[] =
.name = _("GOOD ROD"),
.itemId = ITEM_GOOD_ROD,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gGoodRodItemDescription,
+ .description = sGoodRodDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_Rod,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 1,
},
@@ -4780,16 +3448,12 @@ const struct Item gItems[] =
.name = _("SUPER ROD"),
.itemId = ITEM_SUPER_ROD,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gSuperRodItemDescription,
+ .description = sSuperRodDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_Rod,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 2,
},
@@ -4798,16 +3462,11 @@ const struct Item gItems[] =
.name = _("S.S. TICKET"),
.itemId = ITEM_SS_TICKET,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gSSTicketItemDescription,
+ .description = sSSTicketDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4816,16 +3475,11 @@ const struct Item gItems[] =
.name = _("CONTEST PASS"),
.itemId = ITEM_CONTEST_PASS,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gContestPassItemDescription,
+ .description = sContestPassDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4834,16 +3488,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4852,16 +3500,11 @@ const struct Item gItems[] =
.name = _("WAILMER PAIL"),
.itemId = ITEM_WAILMER_PAIL,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gWailmerPailItemDescription,
+ .description = sWailmerPailDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_WailmerPail,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4870,16 +3513,11 @@ const struct Item gItems[] =
.name = _("DEVON GOODS"),
.itemId = ITEM_DEVON_GOODS,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDevonGoodsItemDescription,
+ .description = sDevonGoodsDesc,
.importance = 2,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4888,16 +3526,11 @@ const struct Item gItems[] =
.name = _("SOOT SACK"),
.itemId = ITEM_SOOT_SACK,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gSootSackItemDescription,
+ .description = sSootSackDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4906,16 +3539,11 @@ const struct Item gItems[] =
.name = _("BASEMENT KEY"),
.itemId = ITEM_BASEMENT_KEY,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gBasementKeyItemDescription,
+ .description = sBasementKeyDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4924,16 +3552,12 @@ const struct Item gItems[] =
.name = _("ACRO BIKE"),
.itemId = ITEM_ACRO_BIKE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gAcroBikeItemDescription,
+ .description = sAcroBikeDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_Bike,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 1,
},
@@ -4942,16 +3566,12 @@ const struct Item gItems[] =
.name = _("{POKEBLOCK} CASE"),
.itemId = ITEM_POKEBLOCK_CASE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gPokeblockCaseItemDescription,
+ .description = sPokeblockCaseDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 3,
.fieldUseFunc = ItemUseOutOfBattle_PokeblockCase,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4960,16 +3580,11 @@ const struct Item gItems[] =
.name = _("LETTER"),
.itemId = ITEM_LETTER,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gLetterItemDescription,
+ .description = sLetterDesc,
.importance = 2,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -4978,16 +3593,11 @@ const struct Item gItems[] =
.name = _("EON TICKET"),
.itemId = ITEM_EON_TICKET,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gEonTicketItemDescription,
+ .description = sEonTicketDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 1,
},
@@ -4996,16 +3606,11 @@ const struct Item gItems[] =
.name = _("RED ORB"),
.itemId = ITEM_RED_ORB,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gRedOrbItemDescription,
+ .description = sRedOrbDesc,
.importance = 2,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5014,16 +3619,11 @@ const struct Item gItems[] =
.name = _("BLUE ORB"),
.itemId = ITEM_BLUE_ORB,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gBlueOrbItemDescription,
+ .description = sBlueOrbDesc,
.importance = 2,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5032,16 +3632,11 @@ const struct Item gItems[] =
.name = _("SCANNER"),
.itemId = ITEM_SCANNER,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gScannerItemDescription,
+ .description = sScannerDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5050,16 +3645,11 @@ const struct Item gItems[] =
.name = _("GO-GOGGLES"),
.itemId = ITEM_GO_GOGGLES,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gGoGogglesItemDescription,
+ .description = sGoGogglesDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5068,16 +3658,11 @@ const struct Item gItems[] =
.name = _("METEORITE"),
.itemId = ITEM_METEORITE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gMeteoriteItemDescription,
+ .description = sMeteoriteDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5086,16 +3671,11 @@ const struct Item gItems[] =
.name = _("RM. 1 KEY"),
.itemId = ITEM_ROOM_1_KEY,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gRoom1KeyItemDescription,
+ .description = sRoom1KeyDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5104,16 +3684,11 @@ const struct Item gItems[] =
.name = _("RM. 2 KEY"),
.itemId = ITEM_ROOM_2_KEY,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gRoom2KeyItemDescription,
+ .description = sRoom2KeyDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5122,16 +3697,11 @@ const struct Item gItems[] =
.name = _("RM. 4 KEY"),
.itemId = ITEM_ROOM_4_KEY,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gRoom4KeyItemDescription,
+ .description = sRoom4KeyDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5140,16 +3710,11 @@ const struct Item gItems[] =
.name = _("RM. 6 KEY"),
.itemId = ITEM_ROOM_6_KEY,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gRoom6KeyItemDescription,
+ .description = sRoom6KeyDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5158,16 +3723,11 @@ const struct Item gItems[] =
.name = _("STORAGE KEY"),
.itemId = ITEM_STORAGE_KEY,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gStorageKeyItemDescription,
+ .description = sStorageKeyDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5176,16 +3736,11 @@ const struct Item gItems[] =
.name = _("ROOT FOSSIL"),
.itemId = ITEM_ROOT_FOSSIL,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gRootFossilItemDescription,
+ .description = sRootFossilDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5194,16 +3749,11 @@ const struct Item gItems[] =
.name = _("CLAW FOSSIL"),
.itemId = ITEM_CLAW_FOSSIL,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gClawFossilItemDescription,
+ .description = sClawFossilDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5212,16 +3762,11 @@ const struct Item gItems[] =
.name = _("DEVON SCOPE"),
.itemId = ITEM_DEVON_SCOPE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDevonScopeItemDescription,
+ .description = sDevonScopeDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5232,16 +3777,10 @@ const struct Item gItems[] =
.name = _("TM01"),
.itemId = ITEM_TM01_FOCUS_PUNCH,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM01ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM01Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5250,16 +3789,10 @@ const struct Item gItems[] =
.name = _("TM02"),
.itemId = ITEM_TM02_DRAGON_CLAW,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM02ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM02Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5268,16 +3801,10 @@ const struct Item gItems[] =
.name = _("TM03"),
.itemId = ITEM_TM03_WATER_PULSE,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM03ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM03Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5286,16 +3813,10 @@ const struct Item gItems[] =
.name = _("TM04"),
.itemId = ITEM_TM04_CALM_MIND,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM04ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM04Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5304,16 +3825,10 @@ const struct Item gItems[] =
.name = _("TM05"),
.itemId = ITEM_TM05_ROAR,
.price = 1000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM05ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM05Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5322,16 +3837,10 @@ const struct Item gItems[] =
.name = _("TM06"),
.itemId = ITEM_TM06_TOXIC,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM06ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM06Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5340,16 +3849,10 @@ const struct Item gItems[] =
.name = _("TM07"),
.itemId = ITEM_TM07_HAIL,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM07ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM07Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5358,16 +3861,10 @@ const struct Item gItems[] =
.name = _("TM08"),
.itemId = ITEM_TM08_BULK_UP,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM08ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM08Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5376,16 +3873,10 @@ const struct Item gItems[] =
.name = _("TM09"),
.itemId = ITEM_TM09_BULLET_SEED,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM09ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM09Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5394,16 +3885,10 @@ const struct Item gItems[] =
.name = _("TM10"),
.itemId = ITEM_TM10_HIDDEN_POWER,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM10ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM10Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5412,16 +3897,10 @@ const struct Item gItems[] =
.name = _("TM11"),
.itemId = ITEM_TM11_SUNNY_DAY,
.price = 2000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM11ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM11Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5430,16 +3909,10 @@ const struct Item gItems[] =
.name = _("TM12"),
.itemId = ITEM_TM12_TAUNT,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM12ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM12Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5448,16 +3921,10 @@ const struct Item gItems[] =
.name = _("TM13"),
.itemId = ITEM_TM13_ICE_BEAM,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM13ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM13Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5466,16 +3933,10 @@ const struct Item gItems[] =
.name = _("TM14"),
.itemId = ITEM_TM14_BLIZZARD,
.price = 5500,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM14ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM14Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5484,16 +3945,10 @@ const struct Item gItems[] =
.name = _("TM15"),
.itemId = ITEM_TM15_HYPER_BEAM,
.price = 7500,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM15ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM15Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5502,16 +3957,10 @@ const struct Item gItems[] =
.name = _("TM16"),
.itemId = ITEM_TM16_LIGHT_SCREEN,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM16ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM16Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5520,16 +3969,10 @@ const struct Item gItems[] =
.name = _("TM17"),
.itemId = ITEM_TM17_PROTECT,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM17ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM17Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5538,16 +3981,10 @@ const struct Item gItems[] =
.name = _("TM18"),
.itemId = ITEM_TM18_RAIN_DANCE,
.price = 2000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM18ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM18Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5556,16 +3993,10 @@ const struct Item gItems[] =
.name = _("TM19"),
.itemId = ITEM_TM19_GIGA_DRAIN,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM19ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM19Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5574,16 +4005,10 @@ const struct Item gItems[] =
.name = _("TM20"),
.itemId = ITEM_TM20_SAFEGUARD,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM20ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM20Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5592,16 +4017,10 @@ const struct Item gItems[] =
.name = _("TM21"),
.itemId = ITEM_TM21_FRUSTRATION,
.price = 1000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM21ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM21Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5610,16 +4029,10 @@ const struct Item gItems[] =
.name = _("TM22"),
.itemId = ITEM_TM22_SOLARBEAM,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM22ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM22Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5628,16 +4041,10 @@ const struct Item gItems[] =
.name = _("TM23"),
.itemId = ITEM_TM23_IRON_TAIL,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM23ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM23Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5646,16 +4053,10 @@ const struct Item gItems[] =
.name = _("TM24"),
.itemId = ITEM_TM24_THUNDERBOLT,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM24ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM24Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5664,16 +4065,10 @@ const struct Item gItems[] =
.name = _("TM25"),
.itemId = ITEM_TM25_THUNDER,
.price = 5500,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM25ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM25Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5682,16 +4077,10 @@ const struct Item gItems[] =
.name = _("TM26"),
.itemId = ITEM_TM26_EARTHQUAKE,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM26ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM26Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5700,16 +4089,10 @@ const struct Item gItems[] =
.name = _("TM27"),
.itemId = ITEM_TM27_RETURN,
.price = 1000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM27ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM27Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5718,16 +4101,10 @@ const struct Item gItems[] =
.name = _("TM28"),
.itemId = ITEM_TM28_DIG,
.price = 2000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM28ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM28Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5736,16 +4113,10 @@ const struct Item gItems[] =
.name = _("TM29"),
.itemId = ITEM_TM29_PSYCHIC,
.price = 2000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM29ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM29Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5754,16 +4125,10 @@ const struct Item gItems[] =
.name = _("TM30"),
.itemId = ITEM_TM30_SHADOW_BALL,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM30ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM30Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5772,16 +4137,10 @@ const struct Item gItems[] =
.name = _("TM31"),
.itemId = ITEM_TM31_BRICK_BREAK,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM31ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM31Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5790,16 +4149,10 @@ const struct Item gItems[] =
.name = _("TM32"),
.itemId = ITEM_TM32_DOUBLE_TEAM,
.price = 2000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM32ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM32Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5808,16 +4161,10 @@ const struct Item gItems[] =
.name = _("TM33"),
.itemId = ITEM_TM33_REFLECT,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM33ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM33Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5826,16 +4173,10 @@ const struct Item gItems[] =
.name = _("TM34"),
.itemId = ITEM_TM34_SHOCK_WAVE,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM34ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM34Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5844,16 +4185,10 @@ const struct Item gItems[] =
.name = _("TM35"),
.itemId = ITEM_TM35_FLAMETHROWER,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM35ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM35Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5862,16 +4197,10 @@ const struct Item gItems[] =
.name = _("TM36"),
.itemId = ITEM_TM36_SLUDGE_BOMB,
.price = 1000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM36ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM36Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5880,16 +4209,10 @@ const struct Item gItems[] =
.name = _("TM37"),
.itemId = ITEM_TM37_SANDSTORM,
.price = 2000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM37ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM37Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5898,16 +4221,10 @@ const struct Item gItems[] =
.name = _("TM38"),
.itemId = ITEM_TM38_FIRE_BLAST,
.price = 5500,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM38ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM38Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5916,16 +4233,10 @@ const struct Item gItems[] =
.name = _("TM39"),
.itemId = ITEM_TM39_ROCK_TOMB,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM39ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM39Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5934,16 +4245,10 @@ const struct Item gItems[] =
.name = _("TM40"),
.itemId = ITEM_TM40_AERIAL_ACE,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM40ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM40Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5952,16 +4257,10 @@ const struct Item gItems[] =
.name = _("TM41"),
.itemId = ITEM_TM41_TORMENT,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM41ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM41Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5970,16 +4269,10 @@ const struct Item gItems[] =
.name = _("TM42"),
.itemId = ITEM_TM42_FACADE,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM42ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM42Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -5988,16 +4281,10 @@ const struct Item gItems[] =
.name = _("TM43"),
.itemId = ITEM_TM43_SECRET_POWER,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM43ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM43Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6006,16 +4293,10 @@ const struct Item gItems[] =
.name = _("TM44"),
.itemId = ITEM_TM44_REST,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM44ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM44Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6024,16 +4305,10 @@ const struct Item gItems[] =
.name = _("TM45"),
.itemId = ITEM_TM45_ATTRACT,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM45ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM45Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6042,16 +4317,10 @@ const struct Item gItems[] =
.name = _("TM46"),
.itemId = ITEM_TM46_THIEF,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM46ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM46Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6060,16 +4329,10 @@ const struct Item gItems[] =
.name = _("TM47"),
.itemId = ITEM_TM47_STEEL_WING,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM47ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM47Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6078,16 +4341,10 @@ const struct Item gItems[] =
.name = _("TM48"),
.itemId = ITEM_TM48_SKILL_SWAP,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM48ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM48Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6096,16 +4353,10 @@ const struct Item gItems[] =
.name = _("TM49"),
.itemId = ITEM_TM49_SNATCH,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM49ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM49Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6114,16 +4365,10 @@ const struct Item gItems[] =
.name = _("TM50"),
.itemId = ITEM_TM50_OVERHEAT,
.price = 3000,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTM50ItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sTM50Desc,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6132,16 +4377,11 @@ const struct Item gItems[] =
.name = _("HM01"),
.itemId = ITEM_HM01_CUT,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gHM01ItemDescription,
+ .description = sHM01Desc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6150,16 +4390,11 @@ const struct Item gItems[] =
.name = _("HM02"),
.itemId = ITEM_HM02_FLY,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gHM02ItemDescription,
+ .description = sHM02Desc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6168,16 +4403,11 @@ const struct Item gItems[] =
.name = _("HM03"),
.itemId = ITEM_HM03_SURF,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gHM03ItemDescription,
+ .description = sHM03Desc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6186,16 +4416,11 @@ const struct Item gItems[] =
.name = _("HM04"),
.itemId = ITEM_HM04_STRENGTH,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gHM04ItemDescription,
+ .description = sHM04Desc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6204,16 +4429,11 @@ const struct Item gItems[] =
.name = _("HM05"),
.itemId = ITEM_HM05_FLASH,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gHM05ItemDescription,
+ .description = sHM05Desc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6222,16 +4442,11 @@ const struct Item gItems[] =
.name = _("HM06"),
.itemId = ITEM_HM06_ROCK_SMASH,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gHM06ItemDescription,
+ .description = sHM06Desc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6240,16 +4455,11 @@ const struct Item gItems[] =
.name = _("HM07"),
.itemId = ITEM_HM07_WATERFALL,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gHM07ItemDescription,
+ .description = sHM07Desc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6258,16 +4468,11 @@ const struct Item gItems[] =
.name = _("HM08"),
.itemId = ITEM_HM08_DIVE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gHM08ItemDescription,
+ .description = sHM08Desc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_TM_HM,
.type = 1,
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6276,16 +4481,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6294,16 +4493,10 @@ const struct Item gItems[] =
.name = _("????????"),
.itemId = ITEM_NONE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDummyItemDescription,
- .importance = 0,
- .unk19 = 0,
+ .description = sDummyDesc,
.pocket = POCKET_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6314,16 +4507,11 @@ const struct Item gItems[] =
.name = _("OAK'S PARCEL"),
.itemId = ITEM_OAKS_PARCEL,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gOaksParcelItemDescription,
+ .description = sOaksParcelDesc,
.importance = 2,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6332,16 +4520,11 @@ const struct Item gItems[] =
.name = _("POKé FLUTE"),
.itemId = ITEM_POKE_FLUTE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gPokeFluteItemDescription,
+ .description = sPokeFluteDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6350,16 +4533,11 @@ const struct Item gItems[] =
.name = _("SECRET KEY"),
.itemId = ITEM_SECRET_KEY,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gSecretKeyItemDescription,
+ .description = sSecretKeyDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6368,16 +4546,11 @@ const struct Item gItems[] =
.name = _("BIKE VOUCHER"),
.itemId = ITEM_BIKE_VOUCHER,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gBikeVoucherItemDescription,
+ .description = sBikeVoucherDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6386,16 +4559,11 @@ const struct Item gItems[] =
.name = _("GOLD TEETH"),
.itemId = ITEM_GOLD_TEETH,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gGoldTeethItemDescription,
+ .description = sGoldTeethDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6404,16 +4572,11 @@ const struct Item gItems[] =
.name = _("OLD AMBER"),
.itemId = ITEM_OLD_AMBER,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gOldAmberItemDescription,
+ .description = sOldAmberDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6422,16 +4585,11 @@ const struct Item gItems[] =
.name = _("CARD KEY"),
.itemId = ITEM_CARD_KEY,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gCardKeyItemDescription,
+ .description = sCardKeyDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6440,16 +4598,11 @@ const struct Item gItems[] =
.name = _("LIFT KEY"),
.itemId = ITEM_LIFT_KEY,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gLiftKeyItemDescription,
+ .description = sLiftKeyDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6458,16 +4611,11 @@ const struct Item gItems[] =
.name = _("HELIX FOSSIL"),
.itemId = ITEM_HELIX_FOSSIL,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gHelixFossilItemDescription,
+ .description = sHelixFossilDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6476,16 +4624,11 @@ const struct Item gItems[] =
.name = _("DOME FOSSIL"),
.itemId = ITEM_DOME_FOSSIL,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gDomeFossilItemDescription,
+ .description = sDomeFossilDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6494,16 +4637,11 @@ const struct Item gItems[] =
.name = _("SILPH SCOPE"),
.itemId = ITEM_SILPH_SCOPE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gSilphScopeItemDescription,
+ .description = sSilphScopeDesc,
.importance = 1,
- .unk19 = 0,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6512,16 +4650,12 @@ const struct Item gItems[] =
.name = _("BICYCLE"),
.itemId = ITEM_BICYCLE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gBicycleItemDescription,
+ .description = sBicycleDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6530,16 +4664,12 @@ const struct Item gItems[] =
.name = _("TOWN MAP"),
.itemId = ITEM_TOWN_MAP,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTownMapItemDescription,
+ .description = sTownMapDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6548,16 +4678,12 @@ const struct Item gItems[] =
.name = _("VS SEEKER"),
.itemId = ITEM_VS_SEEKER,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gVSSeekerItemDescription,
+ .description = sVSSeekerDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6566,16 +4692,12 @@ const struct Item gItems[] =
.name = _("FAME CHECKER"),
.itemId = ITEM_FAME_CHECKER,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gFameCheckerItemDescription,
+ .description = sFameCheckerDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6584,16 +4706,12 @@ const struct Item gItems[] =
.name = _("TM CASE"),
.itemId = ITEM_TM_CASE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTMCaseItemDescription,
+ .description = sTMCaseDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6602,16 +4720,12 @@ const struct Item gItems[] =
.name = _("BERRY POUCH"),
.itemId = ITEM_BERRY_POUCH,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gBerryPouchItemDescription,
+ .description = sBerryPouchDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6620,16 +4734,12 @@ const struct Item gItems[] =
.name = _("TEACHY TV"),
.itemId = ITEM_TEACHY_TV,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTeachyTVItemDescription,
+ .description = sTeachyTVDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6638,16 +4748,12 @@ const struct Item gItems[] =
.name = _("TRI-PASS"),
.itemId = ITEM_TRI_PASS,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTriPassItemDescription,
+ .description = sTriPassDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6656,16 +4762,12 @@ const struct Item gItems[] =
.name = _("RAINBOW PASS"),
.itemId = ITEM_RAINBOW_PASS,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gRainbowPassItemDescription,
+ .description = sRainbowPassDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6674,16 +4776,12 @@ const struct Item gItems[] =
.name = _("TEA"),
.itemId = ITEM_TEA,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gTeaItemDescription,
+ .description = sTeaDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6692,16 +4790,12 @@ const struct Item gItems[] =
.name = _("MYSTICTICKET"),
.itemId = ITEM_MYSTIC_TICKET,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gMysticTicketItemDescription,
+ .description = sMysticTicketDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6710,16 +4804,12 @@ const struct Item gItems[] =
.name = _("AURORATICKET"),
.itemId = ITEM_AURORA_TICKET,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gAuroraTicketItemDescription,
+ .description = sAuroraTicketDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6728,16 +4818,12 @@ const struct Item gItems[] =
.name = _("POWDER JAR"),
.itemId = ITEM_POWDER_JAR,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gPowderJarItemDescription,
+ .description = sPowderJarDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_PowderJar,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6746,16 +4832,12 @@ const struct Item gItems[] =
.name = _("RUBY"),
.itemId = ITEM_RUBY,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gRubyItemDescription,
+ .description = sRubyDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6764,16 +4846,12 @@ const struct Item gItems[] =
.name = _("SAPPHIRE"),
.itemId = ITEM_SAPPHIRE,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gSapphireItemDescription,
+ .description = sSapphireDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6784,16 +4862,12 @@ const struct Item gItems[] =
.name = _("MAGMA EMBLEM"),
.itemId = ITEM_MAGMA_EMBLEM,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gMagmaEmblemItemDescription,
+ .description = sMagmaEmblemDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
@@ -6802,16 +4876,12 @@ const struct Item gItems[] =
.name = _("OLD SEA MAP"),
.itemId = ITEM_OLD_SEA_MAP,
.price = 0,
- .holdEffect = HOLD_EFFECT_NONE,
- .holdEffectParam = 0,
- .description = gOldSeaMapItemDescription,
+ .description = sOldSeaMapDesc,
.importance = 1,
.unk19 = 1,
.pocket = POCKET_KEY_ITEMS,
.type = 4,
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
- .battleUsage = 0,
- .battleUseFunc = NULL,
.secondaryId = 0,
},
};
diff --git a/src/data/pokemon/item_effects.h b/src/data/pokemon/item_effects.h
index 9f5720a66..1697a1e7e 100644
--- a/src/data/pokemon/item_effects.h
+++ b/src/data/pokemon/item_effects.h
@@ -1,236 +1,476 @@
-const u8 gItemEffect_Potion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 20};
-const u8 gItemEffect_Antidote[] = {0x00, 0x00, 0x00, 0x10, 0x00, 0x00};
-const u8 gItemEffect_BurnHeal[] = {0x00, 0x00, 0x00, 0x08, 0x00, 0x00};
-const u8 gItemEffect_IceHeal[] = {0x00, 0x00, 0x00, 0x04, 0x00, 0x00};
-const u8 gItemEffect_Awakening[] = {0x00, 0x00, 0x00, 0x20, 0x00, 0x00};
-const u8 gItemEffect_ParalyzeHeal[] = {0x00, 0x00, 0x00, 0x02, 0x00, 0x00};
-const u8 gItemEffect_FullRestore[] = {0x00, 0x00, 0x00, 0x3f, 0x04, 0x00, 0xff};
-const u8 gItemEffect_MaxPotion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff};
-const u8 gItemEffect_HyperPotion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 200};
-const u8 gItemEffect_SuperPotion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 50};
-const u8 gItemEffect_FullHeal[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0x00};
-const u8 gItemEffect_Revive[] = {0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0xfe};
-const u8 gItemEffect_MaxRevive[] = {0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0xff};
-const u8 gItemEffect_FreshWater[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 50};
-const u8 gItemEffect_SodaPop[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 60};
-const u8 gItemEffect_Lemonade[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 80};
-const u8 gItemEffect_MoomooMilk[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 100};
-const u8 gItemEffect_EnergyPowder[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0xe0, 50, 0xfb, 0xfb, 0xf6};
-const u8 gItemEffect_EnergyRoot[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0xe0, 200, 0xf6, 0xf6, 0xf1};
-const u8 gItemEffect_HealPowder[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0xe0, 0xfb, 0xfb, 0xf6};
-const u8 gItemEffect_RevivalHerb[] = {0x00, 0x00, 0x00, 0x00, 0x44, 0xe0, 0xff, 0xf1, 0xf1, 0xec};
-const u8 gItemEffect_Ether[] = {0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x0a};
-const u8 gItemEffect_MaxEther[] = {0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x7f};
-const u8 gItemEffect_Elixir[] = {0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0a};
-const u8 gItemEffect_MaxElixir[] = {0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7f};
-const u8 gItemEffect_LavaCookie[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0x00};
-const u8 gItemEffect_BlueFlute[] = {0x00, 0x00, 0x00, 0x20, 0x00, 0x00};
-const u8 gItemEffect_YellowFlute[] = {0x00, 0x00, 0x00, 0x01, 0x00, 0x00};
-const u8 gItemEffect_RedFlute[] = {0x80, 0x00, 0x00, 0x00, 0x00, 0x00};
-const u8 gItemEffect_BerryJuice[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 20};
-const u8 gItemEffect_SacredAsh[] = {0x40, 0x00, 0x00, 0x00, 0x44, 0x00, 0xff};
-const u8 gItemEffect_HPUp[] = {0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x0a, 0x05, 0x03, 0x02};
-const u8 gItemEffect_Protein[] = {0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0x0a, 0x05, 0x03, 0x02};
-const u8 gItemEffect_Iron[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x0a, 0x05, 0x03, 0x02};
-const u8 gItemEffect_Carbos[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x0a, 0x05, 0x03, 0x02};
-const u8 gItemEffect_Calcium[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x0a, 0x05, 0x03, 0x02};
-const u8 gItemEffect_RareCandy[] = {0x00, 0x00, 0x00, 0x40, 0x44, 0xe0, 253, 0x05, 0x03, 0x02};
-const u8 gItemEffect_PPUp[] = {0x00, 0x00, 0x00, 0x00, 0x20, 0xe0, 0x05, 0x03, 0x02};
-const u8 gItemEffect_Zinc[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x0a, 0x05, 0x03, 0x02};
-const u8 gItemEffect_PPMax[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x05, 0x03, 0x02};
-const u8 gItemEffect_GuardSpec[] = {0x00, 0x00, 0x00, 0x80, 0x00, 0x60, 0x01, 0x01};
-const u8 gItemEffect_DireHit[] = {0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01};
-const u8 gItemEffect_XAttack[] = {0x01, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01};
-const u8 gItemEffect_XDefend[] = {0x00, 0x10, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01};
-const u8 gItemEffect_XSpeed[] = {0x00, 0x01, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01};
-const u8 gItemEffect_XAccuracy[] = {0x00, 0x00, 0x10, 0x00, 0x00, 0x60, 0x01, 0x01};
-const u8 gItemEffect_XSpecial[] = {0x00, 0x00, 0x01, 0x00, 0x00, 0x60, 0x01, 0x01};
-const u8 gItemEffect_SunStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00};
-const u8 gItemEffect_MoonStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00};
-const u8 gItemEffect_FireStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00};
-const u8 gItemEffect_ThunderStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00};
-const u8 gItemEffect_WaterStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00};
-const u8 gItemEffect_LeafStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00};
-const u8 gItemEffect_CheriBerry[] = {0x00, 0x00, 0x00, 0x02, 0x00, 0x00};
-const u8 gItemEffect_ChestoBerry[] = {0x00, 0x00, 0x00, 0x20, 0x00, 0x00};
-const u8 gItemEffect_PechaBerry[] = {0x00, 0x00, 0x00, 0x10, 0x00, 0x00};
-const u8 gItemEffect_RawstBerry[] = {0x00, 0x00, 0x00, 0x08, 0x00, 0x00};
-const u8 gItemEffect_AspearBerry[] = {0x00, 0x00, 0x00, 0x04, 0x00, 0x00};
-const u8 gItemEffect_LeppaBerry[] = {0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x0a};
-const u8 gItemEffect_OranBerry[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 10};
-const u8 gItemEffect_PersimBerry[] = {0x00, 0x00, 0x00, 0x01, 0x00, 0x00};
-const u8 gItemEffect_LumBerry[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0x00};
-const u8 gItemEffect_SitrusBerry[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 30};
-const u8 gItemEffect_PomegBerry[] = {0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0xf6, 0x0a, 0x05, 0x02};
-const u8 gItemEffect_KelpsyBerry[] = {0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xf6, 0x0a, 0x05, 0x02};
-const u8 gItemEffect_QualotBerry[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xf6, 0x0a, 0x05, 0x02};
-const u8 gItemEffect_HondrewBerry[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xf6, 0x0a, 0x05, 0x02};
-const u8 gItemEffect_GrepaBerry[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xf6, 0x0a, 0x05, 0x02};
-const u8 gItemEffect_TamatoBerry[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0xf6, 0x0a, 0x05, 0x02};
+const u8 gItemEffect_Potion[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = 20,
+};
+
+const u8 gItemEffect_Antidote[6] = {
+ [3] = ITEM3_POISON,
+};
+
+const u8 gItemEffect_BurnHeal[6] = {
+ [3] = ITEM3_BURN,
+};
+
+const u8 gItemEffect_IceHeal[6] = {
+ [3] = ITEM3_FREEZE,
+};
+
+const u8 gItemEffect_Awakening[6] = {
+ [3] = ITEM3_SLEEP,
+};
+
+const u8 gItemEffect_ParalyzeHeal[6] = {
+ [3] = ITEM3_PARALYSIS,
+};
+
+const u8 gItemEffect_FullRestore[7] = {
+ [3] = ITEM3_STATUS_ALL,
+ [4] = ITEM4_HEAL_HP,
+ [6] = -1,
+};
+
+const u8 gItemEffect_MaxPotion[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = -1,
+};
+
+const u8 gItemEffect_HyperPotion[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = 200,
+};
+
+const u8 gItemEffect_SuperPotion[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = 50,
+};
+
+const u8 gItemEffect_FullHeal[6] = {
+ [3] = ITEM3_STATUS_ALL,
+};
+
+const u8 gItemEffect_Revive[7] = {
+ [4] = ITEM4_REVIVE | ITEM4_HEAL_HP,
+ [6] = -2,
+};
+
+const u8 gItemEffect_MaxRevive[7] = {
+ [4] = ITEM4_REVIVE | ITEM4_HEAL_HP,
+ [6] = -1,
+};
+
+const u8 gItemEffect_FreshWater[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = 50,
+};
+
+const u8 gItemEffect_SodaPop[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = 60,
+};
+
+const u8 gItemEffect_Lemonade[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = 80,
+};
+
+const u8 gItemEffect_MoomooMilk[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = 100,
+};
+
+const u8 gItemEffect_EnergyPowder[10] = {
+ [4] = ITEM4_HEAL_HP,
+ [5] = ITEM5_FRIENDSHIP_ALL,
+ [6] = 50,
+ [7] = -5,
+ [8] = -5,
+ [9] = -10,
+};
+
+const u8 gItemEffect_EnergyRoot[10] = {
+ [4] = ITEM4_HEAL_HP,
+ [5] = ITEM5_FRIENDSHIP_ALL,
+ [6] = 200,
+ [7] = -10,
+ [8] = -10,
+ [9] = -15,
+};
+
+const u8 gItemEffect_HealPowder[9] = {
+ [3] = ITEM3_STATUS_ALL,
+ [5] = ITEM5_FRIENDSHIP_ALL,
+ [6] = -5,
+ [7] = -5,
+ [8] = -10,
+};
+
+const u8 gItemEffect_RevivalHerb[10] = {
+ [4] = ITEM4_REVIVE | ITEM4_HEAL_HP,
+ [5] = ITEM5_FRIENDSHIP_ALL,
+ [6] = -1,
+ [7] = -15,
+ [8] = -15,
+ [9] = -20,
+};
+
+const u8 gItemEffect_Ether[7] = {
+ [4] = ITEM4_HEAL_PP_ONE | ITEM4_HEAL_PP_ALL,
+ [6] = 10,
+};
+
+const u8 gItemEffect_MaxEther[7] = {
+ [4] = ITEM4_HEAL_PP_ONE | ITEM4_HEAL_PP_ALL,
+ [6] = 0x7F,
+};
+
+const u8 gItemEffect_Elixir[7] = {
+ [4] = ITEM4_HEAL_PP_ALL,
+ [6] = 10,
+};
+
+const u8 gItemEffect_MaxElixir[7] = {
+ [4] = ITEM4_HEAL_PP_ALL,
+ [6] = 0x7F,
+};
+
+const u8 gItemEffect_LavaCookie[6] = {
+ [3] = ITEM3_STATUS_ALL,
+};
+
+const u8 gItemEffect_BlueFlute[6] = {
+ [3] = ITEM3_SLEEP,
+};
+
+const u8 gItemEffect_YellowFlute[6] = {
+ [3] = ITEM3_CONFUSION,
+};
+
+const u8 gItemEffect_RedFlute[6] = {
+ [0] = ITEM0_INFATUATION,
+};
+
+const u8 gItemEffect_BerryJuice[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = 20,
+};
+
+const u8 gItemEffect_SacredAsh[7] = {
+ [0] = ITEM0_SACRED_ASH,
+ [4] = ITEM4_REVIVE | ITEM4_HEAL_HP,
+ [6] = -1,
+};
+
+const u8 gItemEffect_HPUp[10] = {
+ [4] = ITEM4_EV_HP,
+ [5] = ITEM5_FRIENDSHIP_ALL,
+ [6] = 10,
+ [7] = 5,
+ [8] = 3,
+ [9] = 2,
+};
+
+const u8 gItemEffect_Protein[10] = {
+ [4] = ITEM4_EV_ATK,
+ [5] = ITEM5_FRIENDSHIP_ALL,
+ [6] = 10,
+ [7] = 5,
+ [8] = 3,
+ [9] = 2,
+};
+
+const u8 gItemEffect_Iron[10] = {
+ [5] = ITEM5_EV_DEF | ITEM5_FRIENDSHIP_ALL,
+ [6] = 10,
+ [7] = 5,
+ [8] = 3,
+ [9] = 2,
+};
+
+const u8 gItemEffect_Carbos[10] = {
+ [5] = ITEM5_EV_SPEED | ITEM5_FRIENDSHIP_ALL,
+ [6] = 10,
+ [7] = 5,
+ [8] = 3,
+ [9] = 2,
+};
+
+const u8 gItemEffect_Calcium[10] = {
+ [5] = ITEM5_EV_SPATK | ITEM5_FRIENDSHIP_ALL,
+ [6] = 10,
+ [7] = 5,
+ [8] = 3,
+ [9] = 2,
+};
+
+const u8 gItemEffect_RareCandy[10] = {
+ [3] = ITEM3_LEVEL_UP,
+ [4] = ITEM4_REVIVE | ITEM4_HEAL_HP,
+ [5] = ITEM5_FRIENDSHIP_ALL,
+ [6] = 0xFD,
+ [7] = 5,
+ [8] = 3,
+ [9] = 2,
+};
+
+const u8 gItemEffect_PPUp[9] = {
+ [4] = ITEM4_PP_UP,
+ [5] = ITEM5_FRIENDSHIP_ALL,
+ [6] = 5,
+ [7] = 3,
+ [8] = 2,
+};
+
+const u8 gItemEffect_Zinc[10] = {
+ [5] = ITEM5_EV_SPDEF | ITEM5_FRIENDSHIP_ALL,
+ [6] = 10,
+ [7] = 5,
+ [8] = 3,
+ [9] = 2,
+};
+
+const u8 gItemEffect_PPMax[9] = {
+ [5] = ITEM5_PP_MAX | ITEM5_FRIENDSHIP_ALL,
+ [6] = 5,
+ [7] = 3,
+ [8] = 2,
+};
+
+const u8 gItemEffect_GuardSpec[8] = {
+ [3] = ITEM3_MIST,
+ [5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
+ [6] = 1,
+ [7] = 1,
+};
+
+const u8 gItemEffect_DireHit[8] = {
+ [0] = 2 << 4,
+ [5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
+ [6] = 1,
+ [7] = 1,
+};
+
+const u8 gItemEffect_XAttack[8] = {
+ [0] = 1,
+ [5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
+ [6] = 1,
+ [7] = 1,
+};
+
+const u8 gItemEffect_XDefend[8] = {
+ [1] = 1 << 4,
+ [5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
+ [6] = 1,
+ [7] = 1,
+};
+
+const u8 gItemEffect_XSpeed[8] = {
+ [1] = 1,
+ [5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
+ [6] = 1,
+ [7] = 1,
+};
+
+const u8 gItemEffect_XAccuracy[8] = {
+ [2] = 1 << 4,
+ [5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
+ [6] = 1,
+ [7] = 1,
+};
+
+const u8 gItemEffect_XSpecial[8] = {
+ [2] = 1,
+ [5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
+ [6] = 1,
+ [7] = 1,
+};
+
+const u8 gItemEffect_SunStone[6] = {
+ [4] = ITEM4_EVO_STONE,
+};
+
+const u8 gItemEffect_MoonStone[6] = {
+ [4] = ITEM4_EVO_STONE,
+};
+
+const u8 gItemEffect_FireStone[6] = {
+ [4] = ITEM4_EVO_STONE,
+};
+
+const u8 gItemEffect_ThunderStone[6] = {
+ [4] = ITEM4_EVO_STONE,
+};
+
+const u8 gItemEffect_WaterStone[6] = {
+ [4] = ITEM4_EVO_STONE,
+};
+
+const u8 gItemEffect_LeafStone[6] = {
+ [4] = ITEM4_EVO_STONE,
+};
+
+const u8 gItemEffect_CheriBerry[6] = {
+ [3] = ITEM3_PARALYSIS,
+};
+
+const u8 gItemEffect_ChestoBerry[6] = {
+ [3] = ITEM3_SLEEP,
+};
+
+const u8 gItemEffect_PechaBerry[6] = {
+ [3] = ITEM3_POISON,
+};
+
+const u8 gItemEffect_RawstBerry[6] = {
+ [3] = ITEM3_BURN,
+};
+
+const u8 gItemEffect_AspearBerry[6] = {
+ [3] = ITEM3_FREEZE,
+};
+
+const u8 gItemEffect_LeppaBerry[7] = {
+ [4] = ITEM4_HEAL_PP_ONE | ITEM4_HEAL_PP_ALL,
+ [6] = 10,
+};
+
+const u8 gItemEffect_OranBerry[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = 10,
+};
+
+const u8 gItemEffect_PersimBerry[6] = {
+ [3] = ITEM3_CONFUSION,
+};
+
+const u8 gItemEffect_LumBerry[6] = {
+ [3] = ITEM3_STATUS_ALL,
+};
+
+const u8 gItemEffect_SitrusBerry[7] = {
+ [4] = ITEM4_HEAL_HP,
+ [6] = 30,
+};
+
+const u8 gItemEffect_PomegBerry[10] = {
+ [4] = ITEM4_EV_HP,
+ [5] = ITEM5_FRIENDSHIP_ALL,
+ [6] = -10,
+ [7] = 10,
+ [8] = 5,
+ [9] = 2,
+};
+
+const u8 gItemEffect_KelpsyBerry[10] = {
+ [4] = ITEM4_EV_ATK,
+ [5] = ITEM5_FRIENDSHIP_ALL,
+ [6] = -10,
+ [7] = 10,
+ [8] = 5,
+ [9] = 2,
+};
+
+const u8 gItemEffect_QualotBerry[10] = {
+ [5] = ITEM5_EV_DEF | ITEM5_FRIENDSHIP_ALL,
+ [6] = -10,
+ [7] = 10,
+ [8] = 5,
+ [9] = 2,
+};
+
+const u8 gItemEffect_HondrewBerry[10] = {
+ [5] = ITEM5_EV_SPATK | ITEM5_FRIENDSHIP_ALL,
+ [6] = -10,
+ [7] = 10,
+ [8] = 5,
+ [9] = 2,
+};
+
+const u8 gItemEffect_GrepaBerry[10] = {
+ [5] = ITEM5_EV_SPDEF | ITEM5_FRIENDSHIP_ALL,
+ [6] = -10,
+ [7] = 10,
+ [8] = 5,
+ [9] = 2,
+};
+
+const u8 gItemEffect_TamatoBerry[10] = {
+ [5] = ITEM5_EV_SPEED | ITEM5_FRIENDSHIP_ALL,
+ [6] = -10,
+ [7] = 10,
+ [8] = 5,
+ [9] = 2,
+};
const u8 *const gItemEffectTable[] =
{
- gItemEffect_Potion,
- gItemEffect_Antidote,
- gItemEffect_BurnHeal,
- gItemEffect_IceHeal,
- gItemEffect_Awakening,
- gItemEffect_ParalyzeHeal,
- gItemEffect_FullRestore,
- gItemEffect_MaxPotion,
- gItemEffect_HyperPotion,
- gItemEffect_SuperPotion,
- gItemEffect_FullHeal,
- gItemEffect_Revive,
- gItemEffect_MaxRevive,
- gItemEffect_FreshWater,
- gItemEffect_SodaPop,
- gItemEffect_Lemonade,
- gItemEffect_MoomooMilk,
- gItemEffect_EnergyPowder,
- gItemEffect_EnergyRoot,
- gItemEffect_HealPowder,
- gItemEffect_RevivalHerb,
- gItemEffect_Ether,
- gItemEffect_MaxEther,
- gItemEffect_Elixir,
- gItemEffect_MaxElixir,
- gItemEffect_LavaCookie,
- gItemEffect_BlueFlute,
- gItemEffect_YellowFlute,
- gItemEffect_RedFlute,
- NULL,
- NULL,
- gItemEffect_BerryJuice,
- gItemEffect_SacredAsh,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- gItemEffect_HPUp,
- gItemEffect_Protein,
- gItemEffect_Iron,
- gItemEffect_Carbos,
- gItemEffect_Calcium,
- gItemEffect_RareCandy,
- gItemEffect_PPUp,
- gItemEffect_Zinc,
- gItemEffect_PPMax,
- NULL,
- gItemEffect_GuardSpec,
- gItemEffect_DireHit,
- gItemEffect_XAttack,
- gItemEffect_XDefend,
- gItemEffect_XSpeed,
- gItemEffect_XAccuracy,
- gItemEffect_XSpecial,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- gItemEffect_SunStone,
- gItemEffect_MoonStone,
- gItemEffect_FireStone,
- gItemEffect_ThunderStone,
- gItemEffect_WaterStone,
- gItemEffect_LeafStone,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- gItemEffect_CheriBerry,
- gItemEffect_ChestoBerry,
- gItemEffect_PechaBerry,
- gItemEffect_RawstBerry,
- gItemEffect_AspearBerry,
- gItemEffect_LeppaBerry,
- gItemEffect_OranBerry,
- gItemEffect_PersimBerry,
- gItemEffect_LumBerry,
- gItemEffect_SitrusBerry,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- gItemEffect_PomegBerry,
- gItemEffect_KelpsyBerry,
- gItemEffect_QualotBerry,
- gItemEffect_HondrewBerry,
- gItemEffect_GrepaBerry,
- gItemEffect_TamatoBerry,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
+ [ITEM_POTION - ITEM_POTION] = gItemEffect_Potion,
+ [ITEM_ANTIDOTE - ITEM_POTION] = gItemEffect_Antidote,
+ [ITEM_BURN_HEAL - ITEM_POTION] = gItemEffect_BurnHeal,
+ [ITEM_ICE_HEAL - ITEM_POTION] = gItemEffect_IceHeal,
+ [ITEM_AWAKENING - ITEM_POTION] = gItemEffect_Awakening,
+ [ITEM_PARALYZE_HEAL - ITEM_POTION] = gItemEffect_ParalyzeHeal,
+ [ITEM_FULL_RESTORE - ITEM_POTION] = gItemEffect_FullRestore,
+ [ITEM_MAX_POTION - ITEM_POTION] = gItemEffect_MaxPotion,
+ [ITEM_HYPER_POTION - ITEM_POTION] = gItemEffect_HyperPotion,
+ [ITEM_SUPER_POTION - ITEM_POTION] = gItemEffect_SuperPotion,
+ [ITEM_FULL_HEAL - ITEM_POTION] = gItemEffect_FullHeal,
+ [ITEM_REVIVE - ITEM_POTION] = gItemEffect_Revive,
+ [ITEM_MAX_REVIVE - ITEM_POTION] = gItemEffect_MaxRevive,
+ [ITEM_FRESH_WATER - ITEM_POTION] = gItemEffect_FreshWater,
+ [ITEM_SODA_POP - ITEM_POTION] = gItemEffect_SodaPop,
+ [ITEM_LEMONADE - ITEM_POTION] = gItemEffect_Lemonade,
+ [ITEM_MOOMOO_MILK - ITEM_POTION] = gItemEffect_MoomooMilk,
+ [ITEM_ENERGY_POWDER - ITEM_POTION] = gItemEffect_EnergyPowder,
+ [ITEM_ENERGY_ROOT - ITEM_POTION] = gItemEffect_EnergyRoot,
+ [ITEM_HEAL_POWDER - ITEM_POTION] = gItemEffect_HealPowder,
+ [ITEM_REVIVAL_HERB - ITEM_POTION] = gItemEffect_RevivalHerb,
+ [ITEM_ETHER - ITEM_POTION] = gItemEffect_Ether,
+ [ITEM_MAX_ETHER - ITEM_POTION] = gItemEffect_MaxEther,
+ [ITEM_ELIXIR - ITEM_POTION] = gItemEffect_Elixir,
+ [ITEM_MAX_ELIXIR - ITEM_POTION] = gItemEffect_MaxElixir,
+ [ITEM_LAVA_COOKIE - ITEM_POTION] = gItemEffect_LavaCookie,
+ [ITEM_BLUE_FLUTE - ITEM_POTION] = gItemEffect_BlueFlute,
+ [ITEM_YELLOW_FLUTE - ITEM_POTION] = gItemEffect_YellowFlute,
+ [ITEM_RED_FLUTE - ITEM_POTION] = gItemEffect_RedFlute,
+ [ITEM_BERRY_JUICE - ITEM_POTION] = gItemEffect_BerryJuice,
+ [ITEM_SACRED_ASH - ITEM_POTION] = gItemEffect_SacredAsh,
+ [ITEM_HP_UP - ITEM_POTION] = gItemEffect_HPUp,
+ [ITEM_PROTEIN - ITEM_POTION] = gItemEffect_Protein,
+ [ITEM_IRON - ITEM_POTION] = gItemEffect_Iron,
+ [ITEM_CARBOS - ITEM_POTION] = gItemEffect_Carbos,
+ [ITEM_CALCIUM - ITEM_POTION] = gItemEffect_Calcium,
+ [ITEM_RARE_CANDY - ITEM_POTION] = gItemEffect_RareCandy,
+ [ITEM_PP_UP - ITEM_POTION] = gItemEffect_PPUp,
+ [ITEM_ZINC - ITEM_POTION] = gItemEffect_Zinc,
+ [ITEM_PP_MAX - ITEM_POTION] = gItemEffect_PPMax,
+ [ITEM_GUARD_SPEC - ITEM_POTION] = gItemEffect_GuardSpec,
+ [ITEM_DIRE_HIT - ITEM_POTION] = gItemEffect_DireHit,
+ [ITEM_X_ATTACK - ITEM_POTION] = gItemEffect_XAttack,
+ [ITEM_X_DEFEND - ITEM_POTION] = gItemEffect_XDefend,
+ [ITEM_X_SPEED - ITEM_POTION] = gItemEffect_XSpeed,
+ [ITEM_X_ACCURACY - ITEM_POTION] = gItemEffect_XAccuracy,
+ [ITEM_X_SPECIAL - ITEM_POTION] = gItemEffect_XSpecial,
+ [ITEM_SUN_STONE - ITEM_POTION] = gItemEffect_SunStone,
+ [ITEM_MOON_STONE - ITEM_POTION] = gItemEffect_MoonStone,
+ [ITEM_FIRE_STONE - ITEM_POTION] = gItemEffect_FireStone,
+ [ITEM_THUNDER_STONE - ITEM_POTION] = gItemEffect_ThunderStone,
+ [ITEM_WATER_STONE - ITEM_POTION] = gItemEffect_WaterStone,
+ [ITEM_LEAF_STONE - ITEM_POTION] = gItemEffect_LeafStone,
+ [ITEM_CHERI_BERRY - ITEM_POTION] = gItemEffect_CheriBerry,
+ [ITEM_CHESTO_BERRY - ITEM_POTION] = gItemEffect_ChestoBerry,
+ [ITEM_PECHA_BERRY - ITEM_POTION] = gItemEffect_PechaBerry,
+ [ITEM_RAWST_BERRY - ITEM_POTION] = gItemEffect_RawstBerry,
+ [ITEM_ASPEAR_BERRY - ITEM_POTION] = gItemEffect_AspearBerry,
+ [ITEM_LEPPA_BERRY - ITEM_POTION] = gItemEffect_LeppaBerry,
+ [ITEM_ORAN_BERRY - ITEM_POTION] = gItemEffect_OranBerry,
+ [ITEM_PERSIM_BERRY - ITEM_POTION] = gItemEffect_PersimBerry,
+ [ITEM_LUM_BERRY - ITEM_POTION] = gItemEffect_LumBerry,
+ [ITEM_SITRUS_BERRY - ITEM_POTION] = gItemEffect_SitrusBerry,
+ [ITEM_POMEG_BERRY - ITEM_POTION] = gItemEffect_PomegBerry,
+ [ITEM_KELPSY_BERRY - ITEM_POTION] = gItemEffect_KelpsyBerry,
+ [ITEM_QUALOT_BERRY - ITEM_POTION] = gItemEffect_QualotBerry,
+ [ITEM_HONDEW_BERRY - ITEM_POTION] = gItemEffect_HondrewBerry,
+ [ITEM_GREPA_BERRY - ITEM_POTION] = gItemEffect_GrepaBerry,
+ [ITEM_TAMATO_BERRY - ITEM_POTION] = gItemEffect_TamatoBerry,
+ [LAST_BERRY_INDEX - ITEM_POTION] = NULL
};
diff --git a/src/data/pokemon_graphics/back_pic_coordinates.h b/src/data/pokemon_graphics/back_pic_coordinates.h
index 0de0bfb52..0a89f20c8 100644
--- a/src/data/pokemon_graphics/back_pic_coordinates.h
+++ b/src/data/pokemon_graphics/back_pic_coordinates.h
@@ -1,5 +1,3 @@
-#include "constants/species.h"
-
const struct MonCoords gMonBackPicCoords[] =
{
[SPECIES_NONE] =
diff --git a/src/data/pokemon_graphics/back_pic_table.h b/src/data/pokemon_graphics/back_pic_table.h
index c6fd1300b..9a98927aa 100644
--- a/src/data/pokemon_graphics/back_pic_table.h
+++ b/src/data/pokemon_graphics/back_pic_table.h
@@ -1,444 +1,443 @@
const struct CompressedSpriteSheet gMonBackPicTable[] =
{
- [SPECIES_NONE] = {gMonBackPic_CircledQuestionMark, 0x800, SPECIES_NONE},
- [SPECIES_BULBASAUR] = {gMonBackPic_Bulbasaur, 0x800, SPECIES_BULBASAUR},
- [SPECIES_IVYSAUR] = {gMonBackPic_Ivysaur, 0x800, SPECIES_IVYSAUR},
- [SPECIES_VENUSAUR] = {gMonBackPic_Venusaur, 0x800, SPECIES_VENUSAUR},
- [SPECIES_CHARMANDER] = {gMonBackPic_Charmander, 0x800, SPECIES_CHARMANDER},
- [SPECIES_CHARMELEON] = {gMonBackPic_Charmeleon, 0x800, SPECIES_CHARMELEON},
- [SPECIES_CHARIZARD] = {gMonBackPic_Charizard, 0x800, SPECIES_CHARIZARD},
- [SPECIES_SQUIRTLE] = {gMonBackPic_Squirtle, 0x800, SPECIES_SQUIRTLE},
- [SPECIES_WARTORTLE] = {gMonBackPic_Wartortle, 0x800, SPECIES_WARTORTLE},
- [SPECIES_BLASTOISE] = {gMonBackPic_Blastoise, 0x800, SPECIES_BLASTOISE},
- [SPECIES_CATERPIE] = {gMonBackPic_Caterpie, 0x800, SPECIES_CATERPIE},
- [SPECIES_METAPOD] = {gMonBackPic_Metapod, 0x800, SPECIES_METAPOD},
- [SPECIES_BUTTERFREE] = {gMonBackPic_Butterfree, 0x800, SPECIES_BUTTERFREE},
- [SPECIES_WEEDLE] = {gMonBackPic_Weedle, 0x800, SPECIES_WEEDLE},
- [SPECIES_KAKUNA] = {gMonBackPic_Kakuna, 0x800, SPECIES_KAKUNA},
- [SPECIES_BEEDRILL] = {gMonBackPic_Beedrill, 0x800, SPECIES_BEEDRILL},
- [SPECIES_PIDGEY] = {gMonBackPic_Pidgey, 0x800, SPECIES_PIDGEY},
- [SPECIES_PIDGEOTTO] = {gMonBackPic_Pidgeotto, 0x800, SPECIES_PIDGEOTTO},
- [SPECIES_PIDGEOT] = {gMonBackPic_Pidgeot, 0x800, SPECIES_PIDGEOT},
- [SPECIES_RATTATA] = {gMonBackPic_Rattata, 0x800, SPECIES_RATTATA},
- [SPECIES_RATICATE] = {gMonBackPic_Raticate, 0x800, SPECIES_RATICATE},
- [SPECIES_SPEAROW] = {gMonBackPic_Spearow, 0x800, SPECIES_SPEAROW},
- [SPECIES_FEAROW] = {gMonBackPic_Fearow, 0x800, SPECIES_FEAROW},
- [SPECIES_EKANS] = {gMonBackPic_Ekans, 0x800, SPECIES_EKANS},
- [SPECIES_ARBOK] = {gMonBackPic_Arbok, 0x800, SPECIES_ARBOK},
- [SPECIES_PIKACHU] = {gMonBackPic_Pikachu, 0x800, SPECIES_PIKACHU},
- [SPECIES_RAICHU] = {gMonBackPic_Raichu, 0x800, SPECIES_RAICHU},
- [SPECIES_SANDSHREW] = {gMonBackPic_Sandshrew, 0x800, SPECIES_SANDSHREW},
- [SPECIES_SANDSLASH] = {gMonBackPic_Sandslash, 0x800, SPECIES_SANDSLASH},
- [SPECIES_NIDORAN_F] = {gMonBackPic_NidoranF, 0x800, SPECIES_NIDORAN_F},
- [SPECIES_NIDORINA] = {gMonBackPic_Nidorina, 0x800, SPECIES_NIDORINA},
- [SPECIES_NIDOQUEEN] = {gMonBackPic_Nidoqueen, 0x800, SPECIES_NIDOQUEEN},
- [SPECIES_NIDORAN_M] = {gMonBackPic_NidoranM, 0x800, SPECIES_NIDORAN_M},
- [SPECIES_NIDORINO] = {gMonBackPic_Nidorino, 0x800, SPECIES_NIDORINO},
- [SPECIES_NIDOKING] = {gMonBackPic_Nidoking, 0x800, SPECIES_NIDOKING},
- [SPECIES_CLEFAIRY] = {gMonBackPic_Clefairy, 0x800, SPECIES_CLEFAIRY},
- [SPECIES_CLEFABLE] = {gMonBackPic_Clefable, 0x800, SPECIES_CLEFABLE},
- [SPECIES_VULPIX] = {gMonBackPic_Vulpix, 0x800, SPECIES_VULPIX},
- [SPECIES_NINETALES] = {gMonBackPic_Ninetales, 0x800, SPECIES_NINETALES},
- [SPECIES_JIGGLYPUFF] = {gMonBackPic_Jigglypuff, 0x800, SPECIES_JIGGLYPUFF},
- [SPECIES_WIGGLYTUFF] = {gMonBackPic_Wigglytuff, 0x800, SPECIES_WIGGLYTUFF},
- [SPECIES_ZUBAT] = {gMonBackPic_Zubat, 0x800, SPECIES_ZUBAT},
- [SPECIES_GOLBAT] = {gMonBackPic_Golbat, 0x800, SPECIES_GOLBAT},
- [SPECIES_ODDISH] = {gMonBackPic_Oddish, 0x800, SPECIES_ODDISH},
- [SPECIES_GLOOM] = {gMonBackPic_Gloom, 0x800, SPECIES_GLOOM},
- [SPECIES_VILEPLUME] = {gMonBackPic_Vileplume, 0x800, SPECIES_VILEPLUME},
- [SPECIES_PARAS] = {gMonBackPic_Paras, 0x800, SPECIES_PARAS},
- [SPECIES_PARASECT] = {gMonBackPic_Parasect, 0x800, SPECIES_PARASECT},
- [SPECIES_VENONAT] = {gMonBackPic_Venonat, 0x800, SPECIES_VENONAT},
- [SPECIES_VENOMOTH] = {gMonBackPic_Venomoth, 0x800, SPECIES_VENOMOTH},
- [SPECIES_DIGLETT] = {gMonBackPic_Diglett, 0x800, SPECIES_DIGLETT},
- [SPECIES_DUGTRIO] = {gMonBackPic_Dugtrio, 0x800, SPECIES_DUGTRIO},
- [SPECIES_MEOWTH] = {gMonBackPic_Meowth, 0x800, SPECIES_MEOWTH},
- [SPECIES_PERSIAN] = {gMonBackPic_Persian, 0x800, SPECIES_PERSIAN},
- [SPECIES_PSYDUCK] = {gMonBackPic_Psyduck, 0x800, SPECIES_PSYDUCK},
- [SPECIES_GOLDUCK] = {gMonBackPic_Golduck, 0x800, SPECIES_GOLDUCK},
- [SPECIES_MANKEY] = {gMonBackPic_Mankey, 0x800, SPECIES_MANKEY},
- [SPECIES_PRIMEAPE] = {gMonBackPic_Primeape, 0x800, SPECIES_PRIMEAPE},
- [SPECIES_GROWLITHE] = {gMonBackPic_Growlithe, 0x800, SPECIES_GROWLITHE},
- [SPECIES_ARCANINE] = {gMonBackPic_Arcanine, 0x800, SPECIES_ARCANINE},
- [SPECIES_POLIWAG] = {gMonBackPic_Poliwag, 0x800, SPECIES_POLIWAG},
- [SPECIES_POLIWHIRL] = {gMonBackPic_Poliwhirl, 0x800, SPECIES_POLIWHIRL},
- [SPECIES_POLIWRATH] = {gMonBackPic_Poliwrath, 0x800, SPECIES_POLIWRATH},
- [SPECIES_ABRA] = {gMonBackPic_Abra, 0x800, SPECIES_ABRA},
- [SPECIES_KADABRA] = {gMonBackPic_Kadabra, 0x800, SPECIES_KADABRA},
- [SPECIES_ALAKAZAM] = {gMonBackPic_Alakazam, 0x800, SPECIES_ALAKAZAM},
- [SPECIES_MACHOP] = {gMonBackPic_Machop, 0x800, SPECIES_MACHOP},
- [SPECIES_MACHOKE] = {gMonBackPic_Machoke, 0x800, SPECIES_MACHOKE},
- [SPECIES_MACHAMP] = {gMonBackPic_Machamp, 0x800, SPECIES_MACHAMP},
- [SPECIES_BELLSPROUT] = {gMonBackPic_Bellsprout, 0x800, SPECIES_BELLSPROUT},
- [SPECIES_WEEPINBELL] = {gMonBackPic_Weepinbell, 0x800, SPECIES_WEEPINBELL},
- [SPECIES_VICTREEBEL] = {gMonBackPic_Victreebel, 0x800, SPECIES_VICTREEBEL},
- [SPECIES_TENTACOOL] = {gMonBackPic_Tentacool, 0x800, SPECIES_TENTACOOL},
- [SPECIES_TENTACRUEL] = {gMonBackPic_Tentacruel, 0x800, SPECIES_TENTACRUEL},
- [SPECIES_GEODUDE] = {gMonBackPic_Geodude, 0x800, SPECIES_GEODUDE},
- [SPECIES_GRAVELER] = {gMonBackPic_Graveler, 0x800, SPECIES_GRAVELER},
- [SPECIES_GOLEM] = {gMonBackPic_Golem, 0x800, SPECIES_GOLEM},
- [SPECIES_PONYTA] = {gMonBackPic_Ponyta, 0x800, SPECIES_PONYTA},
- [SPECIES_RAPIDASH] = {gMonBackPic_Rapidash, 0x800, SPECIES_RAPIDASH},
- [SPECIES_SLOWPOKE] = {gMonBackPic_Slowpoke, 0x800, SPECIES_SLOWPOKE},
- [SPECIES_SLOWBRO] = {gMonBackPic_Slowbro, 0x800, SPECIES_SLOWBRO},
- [SPECIES_MAGNEMITE] = {gMonBackPic_Magnemite, 0x800, SPECIES_MAGNEMITE},
- [SPECIES_MAGNETON] = {gMonBackPic_Magneton, 0x800, SPECIES_MAGNETON},
- [SPECIES_FARFETCHD] = {gMonBackPic_Farfetchd, 0x800, SPECIES_FARFETCHD},
- [SPECIES_DODUO] = {gMonBackPic_Doduo, 0x800, SPECIES_DODUO},
- [SPECIES_DODRIO] = {gMonBackPic_Dodrio, 0x800, SPECIES_DODRIO},
- [SPECIES_SEEL] = {gMonBackPic_Seel, 0x800, SPECIES_SEEL},
- [SPECIES_DEWGONG] = {gMonBackPic_Dewgong, 0x800, SPECIES_DEWGONG},
- [SPECIES_GRIMER] = {gMonBackPic_Grimer, 0x800, SPECIES_GRIMER},
- [SPECIES_MUK] = {gMonBackPic_Muk, 0x800, SPECIES_MUK},
- [SPECIES_SHELLDER] = {gMonBackPic_Shellder, 0x800, SPECIES_SHELLDER},
- [SPECIES_CLOYSTER] = {gMonBackPic_Cloyster, 0x800, SPECIES_CLOYSTER},
- [SPECIES_GASTLY] = {gMonBackPic_Gastly, 0x800, SPECIES_GASTLY},
- [SPECIES_HAUNTER] = {gMonBackPic_Haunter, 0x800, SPECIES_HAUNTER},
- [SPECIES_GENGAR] = {gMonBackPic_Gengar, 0x800, SPECIES_GENGAR},
- [SPECIES_ONIX] = {gMonBackPic_Onix, 0x800, SPECIES_ONIX},
- [SPECIES_DROWZEE] = {gMonBackPic_Drowzee, 0x800, SPECIES_DROWZEE},
- [SPECIES_HYPNO] = {gMonBackPic_Hypno, 0x800, SPECIES_HYPNO},
- [SPECIES_KRABBY] = {gMonBackPic_Krabby, 0x800, SPECIES_KRABBY},
- [SPECIES_KINGLER] = {gMonBackPic_Kingler, 0x800, SPECIES_KINGLER},
- [SPECIES_VOLTORB] = {gMonBackPic_Voltorb, 0x800, SPECIES_VOLTORB},
- [SPECIES_ELECTRODE] = {gMonBackPic_Electrode, 0x800, SPECIES_ELECTRODE},
- [SPECIES_EXEGGCUTE] = {gMonBackPic_Exeggcute, 0x800, SPECIES_EXEGGCUTE},
- [SPECIES_EXEGGUTOR] = {gMonBackPic_Exeggutor, 0x800, SPECIES_EXEGGUTOR},
- [SPECIES_CUBONE] = {gMonBackPic_Cubone, 0x800, SPECIES_CUBONE},
- [SPECIES_MAROWAK] = {gMonBackPic_Marowak, 0x800, SPECIES_MAROWAK},
- [SPECIES_HITMONLEE] = {gMonBackPic_Hitmonlee, 0x800, SPECIES_HITMONLEE},
- [SPECIES_HITMONCHAN] = {gMonBackPic_Hitmonchan, 0x800, SPECIES_HITMONCHAN},
- [SPECIES_LICKITUNG] = {gMonBackPic_Lickitung, 0x800, SPECIES_LICKITUNG},
- [SPECIES_KOFFING] = {gMonBackPic_Koffing, 0x800, SPECIES_KOFFING},
- [SPECIES_WEEZING] = {gMonBackPic_Weezing, 0x800, SPECIES_WEEZING},
- [SPECIES_RHYHORN] = {gMonBackPic_Rhyhorn, 0x800, SPECIES_RHYHORN},
- [SPECIES_RHYDON] = {gMonBackPic_Rhydon, 0x800, SPECIES_RHYDON},
- [SPECIES_CHANSEY] = {gMonBackPic_Chansey, 0x800, SPECIES_CHANSEY},
- [SPECIES_TANGELA] = {gMonBackPic_Tangela, 0x800, SPECIES_TANGELA},
- [SPECIES_KANGASKHAN] = {gMonBackPic_Kangaskhan, 0x800, SPECIES_KANGASKHAN},
- [SPECIES_HORSEA] = {gMonBackPic_Horsea, 0x800, SPECIES_HORSEA},
- [SPECIES_SEADRA] = {gMonBackPic_Seadra, 0x800, SPECIES_SEADRA},
- [SPECIES_GOLDEEN] = {gMonBackPic_Goldeen, 0x800, SPECIES_GOLDEEN},
- [SPECIES_SEAKING] = {gMonBackPic_Seaking, 0x800, SPECIES_SEAKING},
- [SPECIES_STARYU] = {gMonBackPic_Staryu, 0x800, SPECIES_STARYU},
- [SPECIES_STARMIE] = {gMonBackPic_Starmie, 0x800, SPECIES_STARMIE},
- [SPECIES_MR_MIME] = {gMonBackPic_Mrmime, 0x800, SPECIES_MR_MIME},
- [SPECIES_SCYTHER] = {gMonBackPic_Scyther, 0x800, SPECIES_SCYTHER},
- [SPECIES_JYNX] = {gMonBackPic_Jynx, 0x800, SPECIES_JYNX},
- [SPECIES_ELECTABUZZ] = {gMonBackPic_Electabuzz, 0x800, SPECIES_ELECTABUZZ},
- [SPECIES_MAGMAR] = {gMonBackPic_Magmar, 0x800, SPECIES_MAGMAR},
- [SPECIES_PINSIR] = {gMonBackPic_Pinsir, 0x800, SPECIES_PINSIR},
- [SPECIES_TAUROS] = {gMonBackPic_Tauros, 0x800, SPECIES_TAUROS},
- [SPECIES_MAGIKARP] = {gMonBackPic_Magikarp, 0x800, SPECIES_MAGIKARP},
- [SPECIES_GYARADOS] = {gMonBackPic_Gyarados, 0x800, SPECIES_GYARADOS},
- [SPECIES_LAPRAS] = {gMonBackPic_Lapras, 0x800, SPECIES_LAPRAS},
- [SPECIES_DITTO] = {gMonBackPic_Ditto, 0x800, SPECIES_DITTO},
- [SPECIES_EEVEE] = {gMonBackPic_Eevee, 0x800, SPECIES_EEVEE},
- [SPECIES_VAPOREON] = {gMonBackPic_Vaporeon, 0x800, SPECIES_VAPOREON},
- [SPECIES_JOLTEON] = {gMonBackPic_Jolteon, 0x800, SPECIES_JOLTEON},
- [SPECIES_FLAREON] = {gMonBackPic_Flareon, 0x800, SPECIES_FLAREON},
- [SPECIES_PORYGON] = {gMonBackPic_Porygon, 0x800, SPECIES_PORYGON},
- [SPECIES_OMANYTE] = {gMonBackPic_Omanyte, 0x800, SPECIES_OMANYTE},
- [SPECIES_OMASTAR] = {gMonBackPic_Omastar, 0x800, SPECIES_OMASTAR},
- [SPECIES_KABUTO] = {gMonBackPic_Kabuto, 0x800, SPECIES_KABUTO},
- [SPECIES_KABUTOPS] = {gMonBackPic_Kabutops, 0x800, SPECIES_KABUTOPS},
- [SPECIES_AERODACTYL] = {gMonBackPic_Aerodactyl, 0x800, SPECIES_AERODACTYL},
- [SPECIES_SNORLAX] = {gMonBackPic_Snorlax, 0x800, SPECIES_SNORLAX},
- [SPECIES_ARTICUNO] = {gMonBackPic_Articuno, 0x800, SPECIES_ARTICUNO},
- [SPECIES_ZAPDOS] = {gMonBackPic_Zapdos, 0x800, SPECIES_ZAPDOS},
- [SPECIES_MOLTRES] = {gMonBackPic_Moltres, 0x800, SPECIES_MOLTRES},
- [SPECIES_DRATINI] = {gMonBackPic_Dratini, 0x800, SPECIES_DRATINI},
- [SPECIES_DRAGONAIR] = {gMonBackPic_Dragonair, 0x800, SPECIES_DRAGONAIR},
- [SPECIES_DRAGONITE] = {gMonBackPic_Dragonite, 0x800, SPECIES_DRAGONITE},
- [SPECIES_MEWTWO] = {gMonBackPic_Mewtwo, 0x800, SPECIES_MEWTWO},
- [SPECIES_MEW] = {gMonBackPic_Mew, 0x800, SPECIES_MEW},
- [SPECIES_CHIKORITA] = {gMonBackPic_Chikorita, 0x800, SPECIES_CHIKORITA},
- [SPECIES_BAYLEEF] = {gMonBackPic_Bayleef, 0x800, SPECIES_BAYLEEF},
- [SPECIES_MEGANIUM] = {gMonBackPic_Meganium, 0x800, SPECIES_MEGANIUM},
- [SPECIES_CYNDAQUIL] = {gMonBackPic_Cyndaquil, 0x800, SPECIES_CYNDAQUIL},
- [SPECIES_QUILAVA] = {gMonBackPic_Quilava, 0x800, SPECIES_QUILAVA},
- [SPECIES_TYPHLOSION] = {gMonBackPic_Typhlosion, 0x800, SPECIES_TYPHLOSION},
- [SPECIES_TOTODILE] = {gMonBackPic_Totodile, 0x800, SPECIES_TOTODILE},
- [SPECIES_CROCONAW] = {gMonBackPic_Croconaw, 0x800, SPECIES_CROCONAW},
- [SPECIES_FERALIGATR] = {gMonBackPic_Feraligatr, 0x800, SPECIES_FERALIGATR},
- [SPECIES_SENTRET] = {gMonBackPic_Sentret, 0x800, SPECIES_SENTRET},
- [SPECIES_FURRET] = {gMonBackPic_Furret, 0x800, SPECIES_FURRET},
- [SPECIES_HOOTHOOT] = {gMonBackPic_Hoothoot, 0x800, SPECIES_HOOTHOOT},
- [SPECIES_NOCTOWL] = {gMonBackPic_Noctowl, 0x800, SPECIES_NOCTOWL},
- [SPECIES_LEDYBA] = {gMonBackPic_Ledyba, 0x800, SPECIES_LEDYBA},
- [SPECIES_LEDIAN] = {gMonBackPic_Ledian, 0x800, SPECIES_LEDIAN},
- [SPECIES_SPINARAK] = {gMonBackPic_Spinarak, 0x800, SPECIES_SPINARAK},
- [SPECIES_ARIADOS] = {gMonBackPic_Ariados, 0x800, SPECIES_ARIADOS},
- [SPECIES_CROBAT] = {gMonBackPic_Crobat, 0x800, SPECIES_CROBAT},
- [SPECIES_CHINCHOU] = {gMonBackPic_Chinchou, 0x800, SPECIES_CHINCHOU},
- [SPECIES_LANTURN] = {gMonBackPic_Lanturn, 0x800, SPECIES_LANTURN},
- [SPECIES_PICHU] = {gMonBackPic_Pichu, 0x800, SPECIES_PICHU},
- [SPECIES_CLEFFA] = {gMonBackPic_Cleffa, 0x800, SPECIES_CLEFFA},
- [SPECIES_IGGLYBUFF] = {gMonBackPic_Igglybuff, 0x800, SPECIES_IGGLYBUFF},
- [SPECIES_TOGEPI] = {gMonBackPic_Togepi, 0x800, SPECIES_TOGEPI},
- [SPECIES_TOGETIC] = {gMonBackPic_Togetic, 0x800, SPECIES_TOGETIC},
- [SPECIES_NATU] = {gMonBackPic_Natu, 0x800, SPECIES_NATU},
- [SPECIES_XATU] = {gMonBackPic_Xatu, 0x800, SPECIES_XATU},
- [SPECIES_MAREEP] = {gMonBackPic_Mareep, 0x800, SPECIES_MAREEP},
- [SPECIES_FLAAFFY] = {gMonBackPic_Flaaffy, 0x800, SPECIES_FLAAFFY},
- [SPECIES_AMPHAROS] = {gMonBackPic_Ampharos, 0x800, SPECIES_AMPHAROS},
- [SPECIES_BELLOSSOM] = {gMonBackPic_Bellossom, 0x800, SPECIES_BELLOSSOM},
- [SPECIES_MARILL] = {gMonBackPic_Marill, 0x800, SPECIES_MARILL},
- [SPECIES_AZUMARILL] = {gMonBackPic_Azumarill, 0x800, SPECIES_AZUMARILL},
- [SPECIES_SUDOWOODO] = {gMonBackPic_Sudowoodo, 0x800, SPECIES_SUDOWOODO},
- [SPECIES_POLITOED] = {gMonBackPic_Politoed, 0x800, SPECIES_POLITOED},
- [SPECIES_HOPPIP] = {gMonBackPic_Hoppip, 0x800, SPECIES_HOPPIP},
- [SPECIES_SKIPLOOM] = {gMonBackPic_Skiploom, 0x800, SPECIES_SKIPLOOM},
- [SPECIES_JUMPLUFF] = {gMonBackPic_Jumpluff, 0x800, SPECIES_JUMPLUFF},
- [SPECIES_AIPOM] = {gMonBackPic_Aipom, 0x800, SPECIES_AIPOM},
- [SPECIES_SUNKERN] = {gMonBackPic_Sunkern, 0x800, SPECIES_SUNKERN},
- [SPECIES_SUNFLORA] = {gMonBackPic_Sunflora, 0x800, SPECIES_SUNFLORA},
- [SPECIES_YANMA] = {gMonBackPic_Yanma, 0x800, SPECIES_YANMA},
- [SPECIES_WOOPER] = {gMonBackPic_Wooper, 0x800, SPECIES_WOOPER},
- [SPECIES_QUAGSIRE] = {gMonBackPic_Quagsire, 0x800, SPECIES_QUAGSIRE},
- [SPECIES_ESPEON] = {gMonBackPic_Espeon, 0x800, SPECIES_ESPEON},
- [SPECIES_UMBREON] = {gMonBackPic_Umbreon, 0x800, SPECIES_UMBREON},
- [SPECIES_MURKROW] = {gMonBackPic_Murkrow, 0x800, SPECIES_MURKROW},
- [SPECIES_SLOWKING] = {gMonBackPic_Slowking, 0x800, SPECIES_SLOWKING},
- [SPECIES_MISDREAVUS] = {gMonBackPic_Misdreavus, 0x800, SPECIES_MISDREAVUS},
- [SPECIES_UNOWN] = {gMonBackPic_UnownA, 0x800, SPECIES_UNOWN},
- [SPECIES_WOBBUFFET] = {gMonBackPic_Wobbuffet, 0x800, SPECIES_WOBBUFFET},
- [SPECIES_GIRAFARIG] = {gMonBackPic_Girafarig, 0x800, SPECIES_GIRAFARIG},
- [SPECIES_PINECO] = {gMonBackPic_Pineco, 0x800, SPECIES_PINECO},
- [SPECIES_FORRETRESS] = {gMonBackPic_Forretress, 0x800, SPECIES_FORRETRESS},
- [SPECIES_DUNSPARCE] = {gMonBackPic_Dunsparce, 0x800, SPECIES_DUNSPARCE},
- [SPECIES_GLIGAR] = {gMonBackPic_Gligar, 0x800, SPECIES_GLIGAR},
- [SPECIES_STEELIX] = {gMonBackPic_Steelix, 0x800, SPECIES_STEELIX},
- [SPECIES_SNUBBULL] = {gMonBackPic_Snubbull, 0x800, SPECIES_SNUBBULL},
- [SPECIES_GRANBULL] = {gMonBackPic_Granbull, 0x800, SPECIES_GRANBULL},
- [SPECIES_QWILFISH] = {gMonBackPic_Qwilfish, 0x800, SPECIES_QWILFISH},
- [SPECIES_SCIZOR] = {gMonBackPic_Scizor, 0x800, SPECIES_SCIZOR},
- [SPECIES_SHUCKLE] = {gMonBackPic_Shuckle, 0x800, SPECIES_SHUCKLE},
- [SPECIES_HERACROSS] = {gMonBackPic_Heracross, 0x800, SPECIES_HERACROSS},
- [SPECIES_SNEASEL] = {gMonBackPic_Sneasel, 0x800, SPECIES_SNEASEL},
- [SPECIES_TEDDIURSA] = {gMonBackPic_Teddiursa, 0x800, SPECIES_TEDDIURSA},
- [SPECIES_URSARING] = {gMonBackPic_Ursaring, 0x800, SPECIES_URSARING},
- [SPECIES_SLUGMA] = {gMonBackPic_Slugma, 0x800, SPECIES_SLUGMA},
- [SPECIES_MAGCARGO] = {gMonBackPic_Magcargo, 0x800, SPECIES_MAGCARGO},
- [SPECIES_SWINUB] = {gMonBackPic_Swinub, 0x800, SPECIES_SWINUB},
- [SPECIES_PILOSWINE] = {gMonBackPic_Piloswine, 0x800, SPECIES_PILOSWINE},
- [SPECIES_CORSOLA] = {gMonBackPic_Corsola, 0x800, SPECIES_CORSOLA},
- [SPECIES_REMORAID] = {gMonBackPic_Remoraid, 0x800, SPECIES_REMORAID},
- [SPECIES_OCTILLERY] = {gMonBackPic_Octillery, 0x800, SPECIES_OCTILLERY},
- [SPECIES_DELIBIRD] = {gMonBackPic_Delibird, 0x800, SPECIES_DELIBIRD},
- [SPECIES_MANTINE] = {gMonBackPic_Mantine, 0x800, SPECIES_MANTINE},
- [SPECIES_SKARMORY] = {gMonBackPic_Skarmory, 0x800, SPECIES_SKARMORY},
- [SPECIES_HOUNDOUR] = {gMonBackPic_Houndour, 0x800, SPECIES_HOUNDOUR},
- [SPECIES_HOUNDOOM] = {gMonBackPic_Houndoom, 0x800, SPECIES_HOUNDOOM},
- [SPECIES_KINGDRA] = {gMonBackPic_Kingdra, 0x800, SPECIES_KINGDRA},
- [SPECIES_PHANPY] = {gMonBackPic_Phanpy, 0x800, SPECIES_PHANPY},
- [SPECIES_DONPHAN] = {gMonBackPic_Donphan, 0x800, SPECIES_DONPHAN},
- [SPECIES_PORYGON2] = {gMonBackPic_Porygon2, 0x800, SPECIES_PORYGON2},
- [SPECIES_STANTLER] = {gMonBackPic_Stantler, 0x800, SPECIES_STANTLER},
- [SPECIES_SMEARGLE] = {gMonBackPic_Smeargle, 0x800, SPECIES_SMEARGLE},
- [SPECIES_TYROGUE] = {gMonBackPic_Tyrogue, 0x800, SPECIES_TYROGUE},
- [SPECIES_HITMONTOP] = {gMonBackPic_Hitmontop, 0x800, SPECIES_HITMONTOP},
- [SPECIES_SMOOCHUM] = {gMonBackPic_Smoochum, 0x800, SPECIES_SMOOCHUM},
- [SPECIES_ELEKID] = {gMonBackPic_Elekid, 0x800, SPECIES_ELEKID},
- [SPECIES_MAGBY] = {gMonBackPic_Magby, 0x800, SPECIES_MAGBY},
- [SPECIES_MILTANK] = {gMonBackPic_Miltank, 0x800, SPECIES_MILTANK},
- [SPECIES_BLISSEY] = {gMonBackPic_Blissey, 0x800, SPECIES_BLISSEY},
- [SPECIES_RAIKOU] = {gMonBackPic_Raikou, 0x800, SPECIES_RAIKOU},
- [SPECIES_ENTEI] = {gMonBackPic_Entei, 0x800, SPECIES_ENTEI},
- [SPECIES_SUICUNE] = {gMonBackPic_Suicune, 0x800, SPECIES_SUICUNE},
- [SPECIES_LARVITAR] = {gMonBackPic_Larvitar, 0x800, SPECIES_LARVITAR},
- [SPECIES_PUPITAR] = {gMonBackPic_Pupitar, 0x800, SPECIES_PUPITAR},
- [SPECIES_TYRANITAR] = {gMonBackPic_Tyranitar, 0x800, SPECIES_TYRANITAR},
- [SPECIES_LUGIA] = {gMonBackPic_Lugia, 0x800, SPECIES_LUGIA},
- [SPECIES_HO_OH] = {gMonBackPic_HoOh, 0x800, SPECIES_HO_OH},
- [SPECIES_CELEBI] = {gMonBackPic_Celebi, 0x800, SPECIES_CELEBI},
- [SPECIES_OLD_UNOWN_B] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_B},
- [SPECIES_OLD_UNOWN_C] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_C},
- [SPECIES_OLD_UNOWN_D] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_D},
- [SPECIES_OLD_UNOWN_E] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_E},
- [SPECIES_OLD_UNOWN_F] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_F},
- [SPECIES_OLD_UNOWN_G] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_G},
- [SPECIES_OLD_UNOWN_H] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_H},
- [SPECIES_OLD_UNOWN_I] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_I},
- [SPECIES_OLD_UNOWN_J] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_J},
- [SPECIES_OLD_UNOWN_K] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_K},
- [SPECIES_OLD_UNOWN_L] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_L},
- [SPECIES_OLD_UNOWN_M] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_M},
- [SPECIES_OLD_UNOWN_N] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_N},
- [SPECIES_OLD_UNOWN_O] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_O},
- [SPECIES_OLD_UNOWN_P] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_P},
- [SPECIES_OLD_UNOWN_Q] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_Q},
- [SPECIES_OLD_UNOWN_R] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_R},
- [SPECIES_OLD_UNOWN_S] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_S},
- [SPECIES_OLD_UNOWN_T] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_T},
- [SPECIES_OLD_UNOWN_U] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_U},
- [SPECIES_OLD_UNOWN_V] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_V},
- [SPECIES_OLD_UNOWN_W] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_W},
- [SPECIES_OLD_UNOWN_X] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_X},
- [SPECIES_OLD_UNOWN_Y] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_Y},
- [SPECIES_OLD_UNOWN_Z] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_Z},
- [SPECIES_TREECKO] = {gMonBackPic_Treecko, 0x800, SPECIES_TREECKO},
- [SPECIES_GROVYLE] = {gMonBackPic_Grovyle, 0x800, SPECIES_GROVYLE},
- [SPECIES_SCEPTILE] = {gMonBackPic_Sceptile, 0x800, SPECIES_SCEPTILE},
- [SPECIES_TORCHIC] = {gMonBackPic_Torchic, 0x800, SPECIES_TORCHIC},
- [SPECIES_COMBUSKEN] = {gMonBackPic_Combusken, 0x800, SPECIES_COMBUSKEN},
- [SPECIES_BLAZIKEN] = {gMonBackPic_Blaziken, 0x800, SPECIES_BLAZIKEN},
- [SPECIES_MUDKIP] = {gMonBackPic_Mudkip, 0x800, SPECIES_MUDKIP},
- [SPECIES_MARSHTOMP] = {gMonBackPic_Marshtomp, 0x800, SPECIES_MARSHTOMP},
- [SPECIES_SWAMPERT] = {gMonBackPic_Swampert, 0x800, SPECIES_SWAMPERT},
- [SPECIES_POOCHYENA] = {gMonBackPic_Poochyena, 0x800, SPECIES_POOCHYENA},
- [SPECIES_MIGHTYENA] = {gMonBackPic_Mightyena, 0x800, SPECIES_MIGHTYENA},
- [SPECIES_ZIGZAGOON] = {gMonBackPic_Zigzagoon, 0x800, SPECIES_ZIGZAGOON},
- [SPECIES_LINOONE] = {gMonBackPic_Linoone, 0x800, SPECIES_LINOONE},
- [SPECIES_WURMPLE] = {gMonBackPic_Wurmple, 0x800, SPECIES_WURMPLE},
- [SPECIES_SILCOON] = {gMonBackPic_Silcoon, 0x800, SPECIES_SILCOON},
- [SPECIES_BEAUTIFLY] = {gMonBackPic_Beautifly, 0x800, SPECIES_BEAUTIFLY},
- [SPECIES_CASCOON] = {gMonBackPic_Cascoon, 0x800, SPECIES_CASCOON},
- [SPECIES_DUSTOX] = {gMonBackPic_Dustox, 0x800, SPECIES_DUSTOX},
- [SPECIES_LOTAD] = {gMonBackPic_Lotad, 0x800, SPECIES_LOTAD},
- [SPECIES_LOMBRE] = {gMonBackPic_Lombre, 0x800, SPECIES_LOMBRE},
- [SPECIES_LUDICOLO] = {gMonBackPic_Ludicolo, 0x800, SPECIES_LUDICOLO},
- [SPECIES_SEEDOT] = {gMonBackPic_Seedot, 0x800, SPECIES_SEEDOT},
- [SPECIES_NUZLEAF] = {gMonBackPic_Nuzleaf, 0x800, SPECIES_NUZLEAF},
- [SPECIES_SHIFTRY] = {gMonBackPic_Shiftry, 0x800, SPECIES_SHIFTRY},
- [SPECIES_NINCADA] = {gMonBackPic_Nincada, 0x800, SPECIES_NINCADA},
- [SPECIES_NINJASK] = {gMonBackPic_Ninjask, 0x800, SPECIES_NINJASK},
- [SPECIES_SHEDINJA] = {gMonBackPic_Shedinja, 0x800, SPECIES_SHEDINJA},
- [SPECIES_TAILLOW] = {gMonBackPic_Taillow, 0x800, SPECIES_TAILLOW},
- [SPECIES_SWELLOW] = {gMonBackPic_Swellow, 0x800, SPECIES_SWELLOW},
- [SPECIES_SHROOMISH] = {gMonBackPic_Shroomish, 0x800, SPECIES_SHROOMISH},
- [SPECIES_BRELOOM] = {gMonBackPic_Breloom, 0x800, SPECIES_BRELOOM},
- [SPECIES_SPINDA] = {gMonBackPic_Spinda, 0x800, SPECIES_SPINDA},
- [SPECIES_WINGULL] = {gMonBackPic_Wingull, 0x800, SPECIES_WINGULL},
- [SPECIES_PELIPPER] = {gMonBackPic_Pelipper, 0x800, SPECIES_PELIPPER},
- [SPECIES_SURSKIT] = {gMonBackPic_Surskit, 0x800, SPECIES_SURSKIT},
- [SPECIES_MASQUERAIN] = {gMonBackPic_Masquerain, 0x800, SPECIES_MASQUERAIN},
- [SPECIES_WAILMER] = {gMonBackPic_Wailmer, 0x800, SPECIES_WAILMER},
- [SPECIES_WAILORD] = {gMonBackPic_Wailord, 0x800, SPECIES_WAILORD},
- [SPECIES_SKITTY] = {gMonBackPic_Skitty, 0x800, SPECIES_SKITTY},
- [SPECIES_DELCATTY] = {gMonBackPic_Delcatty, 0x800, SPECIES_DELCATTY},
- [SPECIES_KECLEON] = {gMonBackPic_Kecleon, 0x800, SPECIES_KECLEON},
- [SPECIES_BALTOY] = {gMonBackPic_Baltoy, 0x800, SPECIES_BALTOY},
- [SPECIES_CLAYDOL] = {gMonBackPic_Claydol, 0x800, SPECIES_CLAYDOL},
- [SPECIES_NOSEPASS] = {gMonBackPic_Nosepass, 0x800, SPECIES_NOSEPASS},
- [SPECIES_TORKOAL] = {gMonBackPic_Torkoal, 0x800, SPECIES_TORKOAL},
- [SPECIES_SABLEYE] = {gMonBackPic_Sableye, 0x800, SPECIES_SABLEYE},
- [SPECIES_BARBOACH] = {gMonBackPic_Barboach, 0x800, SPECIES_BARBOACH},
- [SPECIES_WHISCASH] = {gMonBackPic_Whiscash, 0x800, SPECIES_WHISCASH},
- [SPECIES_LUVDISC] = {gMonBackPic_Luvdisc, 0x800, SPECIES_LUVDISC},
- [SPECIES_CORPHISH] = {gMonBackPic_Corphish, 0x800, SPECIES_CORPHISH},
- [SPECIES_CRAWDAUNT] = {gMonBackPic_Crawdaunt, 0x800, SPECIES_CRAWDAUNT},
- [SPECIES_FEEBAS] = {gMonBackPic_Feebas, 0x800, SPECIES_FEEBAS},
- [SPECIES_MILOTIC] = {gMonBackPic_Milotic, 0x800, SPECIES_MILOTIC},
- [SPECIES_CARVANHA] = {gMonBackPic_Carvanha, 0x800, SPECIES_CARVANHA},
- [SPECIES_SHARPEDO] = {gMonBackPic_Sharpedo, 0x800, SPECIES_SHARPEDO},
- [SPECIES_TRAPINCH] = {gMonBackPic_Trapinch, 0x800, SPECIES_TRAPINCH},
- [SPECIES_VIBRAVA] = {gMonBackPic_Vibrava, 0x800, SPECIES_VIBRAVA},
- [SPECIES_FLYGON] = {gMonBackPic_Flygon, 0x800, SPECIES_FLYGON},
- [SPECIES_MAKUHITA] = {gMonBackPic_Makuhita, 0x800, SPECIES_MAKUHITA},
- [SPECIES_HARIYAMA] = {gMonBackPic_Hariyama, 0x800, SPECIES_HARIYAMA},
- [SPECIES_ELECTRIKE] = {gMonBackPic_Electrike, 0x800, SPECIES_ELECTRIKE},
- [SPECIES_MANECTRIC] = {gMonBackPic_Manectric, 0x800, SPECIES_MANECTRIC},
- [SPECIES_NUMEL] = {gMonBackPic_Numel, 0x800, SPECIES_NUMEL},
- [SPECIES_CAMERUPT] = {gMonBackPic_Camerupt, 0x800, SPECIES_CAMERUPT},
- [SPECIES_SPHEAL] = {gMonBackPic_Spheal, 0x800, SPECIES_SPHEAL},
- [SPECIES_SEALEO] = {gMonBackPic_Sealeo, 0x800, SPECIES_SEALEO},
- [SPECIES_WALREIN] = {gMonBackPic_Walrein, 0x800, SPECIES_WALREIN},
- [SPECIES_CACNEA] = {gMonBackPic_Cacnea, 0x800, SPECIES_CACNEA},
- [SPECIES_CACTURNE] = {gMonBackPic_Cacturne, 0x800, SPECIES_CACTURNE},
- [SPECIES_SNORUNT] = {gMonBackPic_Snorunt, 0x800, SPECIES_SNORUNT},
- [SPECIES_GLALIE] = {gMonBackPic_Glalie, 0x800, SPECIES_GLALIE},
- [SPECIES_LUNATONE] = {gMonBackPic_Lunatone, 0x800, SPECIES_LUNATONE},
- [SPECIES_SOLROCK] = {gMonBackPic_Solrock, 0x800, SPECIES_SOLROCK},
- [SPECIES_AZURILL] = {gMonBackPic_Azurill, 0x800, SPECIES_AZURILL},
- [SPECIES_SPOINK] = {gMonBackPic_Spoink, 0x800, SPECIES_SPOINK},
- [SPECIES_GRUMPIG] = {gMonBackPic_Grumpig, 0x800, SPECIES_GRUMPIG},
- [SPECIES_PLUSLE] = {gMonBackPic_Plusle, 0x800, SPECIES_PLUSLE},
- [SPECIES_MINUN] = {gMonBackPic_Minun, 0x800, SPECIES_MINUN},
- [SPECIES_MAWILE] = {gMonBackPic_Mawile, 0x800, SPECIES_MAWILE},
- [SPECIES_MEDITITE] = {gMonBackPic_Meditite, 0x800, SPECIES_MEDITITE},
- [SPECIES_MEDICHAM] = {gMonBackPic_Medicham, 0x800, SPECIES_MEDICHAM},
- [SPECIES_SWABLU] = {gMonBackPic_Swablu, 0x800, SPECIES_SWABLU},
- [SPECIES_ALTARIA] = {gMonBackPic_Altaria, 0x800, SPECIES_ALTARIA},
- [SPECIES_WYNAUT] = {gMonBackPic_Wynaut, 0x800, SPECIES_WYNAUT},
- [SPECIES_DUSKULL] = {gMonBackPic_Duskull, 0x800, SPECIES_DUSKULL},
- [SPECIES_DUSCLOPS] = {gMonBackPic_Dusclops, 0x800, SPECIES_DUSCLOPS},
- [SPECIES_ROSELIA] = {gMonBackPic_Roselia, 0x800, SPECIES_ROSELIA},
- [SPECIES_SLAKOTH] = {gMonBackPic_Slakoth, 0x800, SPECIES_SLAKOTH},
- [SPECIES_VIGOROTH] = {gMonBackPic_Vigoroth, 0x800, SPECIES_VIGOROTH},
- [SPECIES_SLAKING] = {gMonBackPic_Slaking, 0x800, SPECIES_SLAKING},
- [SPECIES_GULPIN] = {gMonBackPic_Gulpin, 0x800, SPECIES_GULPIN},
- [SPECIES_SWALOT] = {gMonBackPic_Swalot, 0x800, SPECIES_SWALOT},
- [SPECIES_TROPIUS] = {gMonBackPic_Tropius, 0x800, SPECIES_TROPIUS},
- [SPECIES_WHISMUR] = {gMonBackPic_Whismur, 0x800, SPECIES_WHISMUR},
- [SPECIES_LOUDRED] = {gMonBackPic_Loudred, 0x800, SPECIES_LOUDRED},
- [SPECIES_EXPLOUD] = {gMonBackPic_Exploud, 0x800, SPECIES_EXPLOUD},
- [SPECIES_CLAMPERL] = {gMonBackPic_Clamperl, 0x800, SPECIES_CLAMPERL},
- [SPECIES_HUNTAIL] = {gMonBackPic_Huntail, 0x800, SPECIES_HUNTAIL},
- [SPECIES_GOREBYSS] = {gMonBackPic_Gorebyss, 0x800, SPECIES_GOREBYSS},
- [SPECIES_ABSOL] = {gMonBackPic_Absol, 0x800, SPECIES_ABSOL},
- [SPECIES_SHUPPET] = {gMonBackPic_Shuppet, 0x800, SPECIES_SHUPPET},
- [SPECIES_BANETTE] = {gMonBackPic_Banette, 0x800, SPECIES_BANETTE},
- [SPECIES_SEVIPER] = {gMonBackPic_Seviper, 0x800, SPECIES_SEVIPER},
- [SPECIES_ZANGOOSE] = {gMonBackPic_Zangoose, 0x800, SPECIES_ZANGOOSE},
- [SPECIES_RELICANTH] = {gMonBackPic_Relicanth, 0x800, SPECIES_RELICANTH},
- [SPECIES_ARON] = {gMonBackPic_Aron, 0x800, SPECIES_ARON},
- [SPECIES_LAIRON] = {gMonBackPic_Lairon, 0x800, SPECIES_LAIRON},
- [SPECIES_AGGRON] = {gMonBackPic_Aggron, 0x800, SPECIES_AGGRON},
- [SPECIES_CASTFORM] = {gMonBackPic_Castform, 0x800, SPECIES_CASTFORM},
- [SPECIES_VOLBEAT] = {gMonBackPic_Volbeat, 0x800, SPECIES_VOLBEAT},
- [SPECIES_ILLUMISE] = {gMonBackPic_Illumise, 0x800, SPECIES_ILLUMISE},
- [SPECIES_LILEEP] = {gMonBackPic_Lileep, 0x800, SPECIES_LILEEP},
- [SPECIES_CRADILY] = {gMonBackPic_Cradily, 0x800, SPECIES_CRADILY},
- [SPECIES_ANORITH] = {gMonBackPic_Anorith, 0x800, SPECIES_ANORITH},
- [SPECIES_ARMALDO] = {gMonBackPic_Armaldo, 0x800, SPECIES_ARMALDO},
- [SPECIES_RALTS] = {gMonBackPic_Ralts, 0x800, SPECIES_RALTS},
- [SPECIES_KIRLIA] = {gMonBackPic_Kirlia, 0x800, SPECIES_KIRLIA},
- [SPECIES_GARDEVOIR] = {gMonBackPic_Gardevoir, 0x800, SPECIES_GARDEVOIR},
- [SPECIES_BAGON] = {gMonBackPic_Bagon, 0x800, SPECIES_BAGON},
- [SPECIES_SHELGON] = {gMonBackPic_Shelgon, 0x800, SPECIES_SHELGON},
- [SPECIES_SALAMENCE] = {gMonBackPic_Salamence, 0x800, SPECIES_SALAMENCE},
- [SPECIES_BELDUM] = {gMonBackPic_Beldum, 0x800, SPECIES_BELDUM},
- [SPECIES_METANG] = {gMonBackPic_Metang, 0x800, SPECIES_METANG},
- [SPECIES_METAGROSS] = {gMonBackPic_Metagross, 0x800, SPECIES_METAGROSS},
- [SPECIES_REGIROCK] = {gMonBackPic_Regirock, 0x800, SPECIES_REGIROCK},
- [SPECIES_REGICE] = {gMonBackPic_Regice, 0x800, SPECIES_REGICE},
- [SPECIES_REGISTEEL] = {gMonBackPic_Registeel, 0x800, SPECIES_REGISTEEL},
- [SPECIES_KYOGRE] = {gMonBackPic_Kyogre, 0x800, SPECIES_KYOGRE},
- [SPECIES_GROUDON] = {gMonBackPic_Groudon, 0x800, SPECIES_GROUDON},
- [SPECIES_RAYQUAZA] = {gMonBackPic_Rayquaza, 0x800, SPECIES_RAYQUAZA},
- [SPECIES_LATIAS] = {gMonBackPic_Latias, 0x800, SPECIES_LATIAS},
- [SPECIES_LATIOS] = {gMonBackPic_Latios, 0x800, SPECIES_LATIOS},
- [SPECIES_JIRACHI] = {gMonBackPic_Jirachi, 0x800, SPECIES_JIRACHI},
- [SPECIES_DEOXYS] = {gMonBackPic_Deoxys, 0x800, SPECIES_DEOXYS},
- [SPECIES_CHIMECHO] = {gMonBackPic_Chimecho, 0x800, SPECIES_CHIMECHO},
- [SPECIES_EGG] = {gMonStillFrontPic_Egg, 0x800, SPECIES_EGG},
- [SPECIES_UNOWN_B] = {gMonBackPic_UnownB, 0x800, SPECIES_UNOWN_B},
- [SPECIES_UNOWN_C] = {gMonBackPic_UnownC, 0x800, SPECIES_UNOWN_C},
- [SPECIES_UNOWN_D] = {gMonBackPic_UnownD, 0x800, SPECIES_UNOWN_D},
- [SPECIES_UNOWN_E] = {gMonBackPic_UnownE, 0x800, SPECIES_UNOWN_E},
- [SPECIES_UNOWN_F] = {gMonBackPic_UnownF, 0x800, SPECIES_UNOWN_F},
- [SPECIES_UNOWN_G] = {gMonBackPic_UnownG, 0x800, SPECIES_UNOWN_G},
- [SPECIES_UNOWN_H] = {gMonBackPic_UnownH, 0x800, SPECIES_UNOWN_H},
- [SPECIES_UNOWN_I] = {gMonBackPic_UnownI, 0x800, SPECIES_UNOWN_I},
- [SPECIES_UNOWN_J] = {gMonBackPic_UnownJ, 0x800, SPECIES_UNOWN_J},
- [SPECIES_UNOWN_K] = {gMonBackPic_UnownK, 0x800, SPECIES_UNOWN_K},
- [SPECIES_UNOWN_L] = {gMonBackPic_UnownL, 0x800, SPECIES_UNOWN_L},
- [SPECIES_UNOWN_M] = {gMonBackPic_UnownM, 0x800, SPECIES_UNOWN_M},
- [SPECIES_UNOWN_N] = {gMonBackPic_UnownN, 0x800, SPECIES_UNOWN_N},
- [SPECIES_UNOWN_O] = {gMonBackPic_UnownO, 0x800, SPECIES_UNOWN_O},
- [SPECIES_UNOWN_P] = {gMonBackPic_UnownP, 0x800, SPECIES_UNOWN_P},
- [SPECIES_UNOWN_Q] = {gMonBackPic_UnownQ, 0x800, SPECIES_UNOWN_Q},
- [SPECIES_UNOWN_R] = {gMonBackPic_UnownR, 0x800, SPECIES_UNOWN_R},
- [SPECIES_UNOWN_S] = {gMonBackPic_UnownS, 0x800, SPECIES_UNOWN_S},
- [SPECIES_UNOWN_T] = {gMonBackPic_UnownT, 0x800, SPECIES_UNOWN_T},
- [SPECIES_UNOWN_U] = {gMonBackPic_UnownU, 0x800, SPECIES_UNOWN_U},
- [SPECIES_UNOWN_V] = {gMonBackPic_UnownV, 0x800, SPECIES_UNOWN_V},
- [SPECIES_UNOWN_W] = {gMonBackPic_UnownW, 0x800, SPECIES_UNOWN_W},
- [SPECIES_UNOWN_X] = {gMonBackPic_UnownX, 0x800, SPECIES_UNOWN_X},
- [SPECIES_UNOWN_Y] = {gMonBackPic_UnownY, 0x800, SPECIES_UNOWN_Y},
- [SPECIES_UNOWN_Z] = {gMonBackPic_UnownZ, 0x800, SPECIES_UNOWN_Z},
- [SPECIES_UNOWN_EMARK] = {gMonBackPic_UnownExclamationMark, 0x800, SPECIES_UNOWN_EMARK},
- [SPECIES_UNOWN_QMARK] = {gMonBackPic_UnownQuestionMark, 0x800, SPECIES_UNOWN_QMARK},
+ SPECIES_SPRITE(NONE, gMonBackPic_CircledQuestionMark),
+ SPECIES_SPRITE(BULBASAUR, gMonBackPic_Bulbasaur),
+ SPECIES_SPRITE(IVYSAUR, gMonBackPic_Ivysaur),
+ SPECIES_SPRITE(VENUSAUR, gMonBackPic_Venusaur),
+ SPECIES_SPRITE(CHARMANDER, gMonBackPic_Charmander),
+ SPECIES_SPRITE(CHARMELEON, gMonBackPic_Charmeleon),
+ SPECIES_SPRITE(CHARIZARD, gMonBackPic_Charizard),
+ SPECIES_SPRITE(SQUIRTLE, gMonBackPic_Squirtle),
+ SPECIES_SPRITE(WARTORTLE, gMonBackPic_Wartortle),
+ SPECIES_SPRITE(BLASTOISE, gMonBackPic_Blastoise),
+ SPECIES_SPRITE(CATERPIE, gMonBackPic_Caterpie),
+ SPECIES_SPRITE(METAPOD, gMonBackPic_Metapod),
+ SPECIES_SPRITE(BUTTERFREE, gMonBackPic_Butterfree),
+ SPECIES_SPRITE(WEEDLE, gMonBackPic_Weedle),
+ SPECIES_SPRITE(KAKUNA, gMonBackPic_Kakuna),
+ SPECIES_SPRITE(BEEDRILL, gMonBackPic_Beedrill),
+ SPECIES_SPRITE(PIDGEY, gMonBackPic_Pidgey),
+ SPECIES_SPRITE(PIDGEOTTO, gMonBackPic_Pidgeotto),
+ SPECIES_SPRITE(PIDGEOT, gMonBackPic_Pidgeot),
+ SPECIES_SPRITE(RATTATA, gMonBackPic_Rattata),
+ SPECIES_SPRITE(RATICATE, gMonBackPic_Raticate),
+ SPECIES_SPRITE(SPEAROW, gMonBackPic_Spearow),
+ SPECIES_SPRITE(FEAROW, gMonBackPic_Fearow),
+ SPECIES_SPRITE(EKANS, gMonBackPic_Ekans),
+ SPECIES_SPRITE(ARBOK, gMonBackPic_Arbok),
+ SPECIES_SPRITE(PIKACHU, gMonBackPic_Pikachu),
+ SPECIES_SPRITE(RAICHU, gMonBackPic_Raichu),
+ SPECIES_SPRITE(SANDSHREW, gMonBackPic_Sandshrew),
+ SPECIES_SPRITE(SANDSLASH, gMonBackPic_Sandslash),
+ SPECIES_SPRITE(NIDORAN_F, gMonBackPic_NidoranF),
+ SPECIES_SPRITE(NIDORINA, gMonBackPic_Nidorina),
+ SPECIES_SPRITE(NIDOQUEEN, gMonBackPic_Nidoqueen),
+ SPECIES_SPRITE(NIDORAN_M, gMonBackPic_NidoranM),
+ SPECIES_SPRITE(NIDORINO, gMonBackPic_Nidorino),
+ SPECIES_SPRITE(NIDOKING, gMonBackPic_Nidoking),
+ SPECIES_SPRITE(CLEFAIRY, gMonBackPic_Clefairy),
+ SPECIES_SPRITE(CLEFABLE, gMonBackPic_Clefable),
+ SPECIES_SPRITE(VULPIX, gMonBackPic_Vulpix),
+ SPECIES_SPRITE(NINETALES, gMonBackPic_Ninetales),
+ SPECIES_SPRITE(JIGGLYPUFF, gMonBackPic_Jigglypuff),
+ SPECIES_SPRITE(WIGGLYTUFF, gMonBackPic_Wigglytuff),
+ SPECIES_SPRITE(ZUBAT, gMonBackPic_Zubat),
+ SPECIES_SPRITE(GOLBAT, gMonBackPic_Golbat),
+ SPECIES_SPRITE(ODDISH, gMonBackPic_Oddish),
+ SPECIES_SPRITE(GLOOM, gMonBackPic_Gloom),
+ SPECIES_SPRITE(VILEPLUME, gMonBackPic_Vileplume),
+ SPECIES_SPRITE(PARAS, gMonBackPic_Paras),
+ SPECIES_SPRITE(PARASECT, gMonBackPic_Parasect),
+ SPECIES_SPRITE(VENONAT, gMonBackPic_Venonat),
+ SPECIES_SPRITE(VENOMOTH, gMonBackPic_Venomoth),
+ SPECIES_SPRITE(DIGLETT, gMonBackPic_Diglett),
+ SPECIES_SPRITE(DUGTRIO, gMonBackPic_Dugtrio),
+ SPECIES_SPRITE(MEOWTH, gMonBackPic_Meowth),
+ SPECIES_SPRITE(PERSIAN, gMonBackPic_Persian),
+ SPECIES_SPRITE(PSYDUCK, gMonBackPic_Psyduck),
+ SPECIES_SPRITE(GOLDUCK, gMonBackPic_Golduck),
+ SPECIES_SPRITE(MANKEY, gMonBackPic_Mankey),
+ SPECIES_SPRITE(PRIMEAPE, gMonBackPic_Primeape),
+ SPECIES_SPRITE(GROWLITHE, gMonBackPic_Growlithe),
+ SPECIES_SPRITE(ARCANINE, gMonBackPic_Arcanine),
+ SPECIES_SPRITE(POLIWAG, gMonBackPic_Poliwag),
+ SPECIES_SPRITE(POLIWHIRL, gMonBackPic_Poliwhirl),
+ SPECIES_SPRITE(POLIWRATH, gMonBackPic_Poliwrath),
+ SPECIES_SPRITE(ABRA, gMonBackPic_Abra),
+ SPECIES_SPRITE(KADABRA, gMonBackPic_Kadabra),
+ SPECIES_SPRITE(ALAKAZAM, gMonBackPic_Alakazam),
+ SPECIES_SPRITE(MACHOP, gMonBackPic_Machop),
+ SPECIES_SPRITE(MACHOKE, gMonBackPic_Machoke),
+ SPECIES_SPRITE(MACHAMP, gMonBackPic_Machamp),
+ SPECIES_SPRITE(BELLSPROUT, gMonBackPic_Bellsprout),
+ SPECIES_SPRITE(WEEPINBELL, gMonBackPic_Weepinbell),
+ SPECIES_SPRITE(VICTREEBEL, gMonBackPic_Victreebel),
+ SPECIES_SPRITE(TENTACOOL, gMonBackPic_Tentacool),
+ SPECIES_SPRITE(TENTACRUEL, gMonBackPic_Tentacruel),
+ SPECIES_SPRITE(GEODUDE, gMonBackPic_Geodude),
+ SPECIES_SPRITE(GRAVELER, gMonBackPic_Graveler),
+ SPECIES_SPRITE(GOLEM, gMonBackPic_Golem),
+ SPECIES_SPRITE(PONYTA, gMonBackPic_Ponyta),
+ SPECIES_SPRITE(RAPIDASH, gMonBackPic_Rapidash),
+ SPECIES_SPRITE(SLOWPOKE, gMonBackPic_Slowpoke),
+ SPECIES_SPRITE(SLOWBRO, gMonBackPic_Slowbro),
+ SPECIES_SPRITE(MAGNEMITE, gMonBackPic_Magnemite),
+ SPECIES_SPRITE(MAGNETON, gMonBackPic_Magneton),
+ SPECIES_SPRITE(FARFETCHD, gMonBackPic_Farfetchd),
+ SPECIES_SPRITE(DODUO, gMonBackPic_Doduo),
+ SPECIES_SPRITE(DODRIO, gMonBackPic_Dodrio),
+ SPECIES_SPRITE(SEEL, gMonBackPic_Seel),
+ SPECIES_SPRITE(DEWGONG, gMonBackPic_Dewgong),
+ SPECIES_SPRITE(GRIMER, gMonBackPic_Grimer),
+ SPECIES_SPRITE(MUK, gMonBackPic_Muk),
+ SPECIES_SPRITE(SHELLDER, gMonBackPic_Shellder),
+ SPECIES_SPRITE(CLOYSTER, gMonBackPic_Cloyster),
+ SPECIES_SPRITE(GASTLY, gMonBackPic_Gastly),
+ SPECIES_SPRITE(HAUNTER, gMonBackPic_Haunter),
+ SPECIES_SPRITE(GENGAR, gMonBackPic_Gengar),
+ SPECIES_SPRITE(ONIX, gMonBackPic_Onix),
+ SPECIES_SPRITE(DROWZEE, gMonBackPic_Drowzee),
+ SPECIES_SPRITE(HYPNO, gMonBackPic_Hypno),
+ SPECIES_SPRITE(KRABBY, gMonBackPic_Krabby),
+ SPECIES_SPRITE(KINGLER, gMonBackPic_Kingler),
+ SPECIES_SPRITE(VOLTORB, gMonBackPic_Voltorb),
+ SPECIES_SPRITE(ELECTRODE, gMonBackPic_Electrode),
+ SPECIES_SPRITE(EXEGGCUTE, gMonBackPic_Exeggcute),
+ SPECIES_SPRITE(EXEGGUTOR, gMonBackPic_Exeggutor),
+ SPECIES_SPRITE(CUBONE, gMonBackPic_Cubone),
+ SPECIES_SPRITE(MAROWAK, gMonBackPic_Marowak),
+ SPECIES_SPRITE(HITMONLEE, gMonBackPic_Hitmonlee),
+ SPECIES_SPRITE(HITMONCHAN, gMonBackPic_Hitmonchan),
+ SPECIES_SPRITE(LICKITUNG, gMonBackPic_Lickitung),
+ SPECIES_SPRITE(KOFFING, gMonBackPic_Koffing),
+ SPECIES_SPRITE(WEEZING, gMonBackPic_Weezing),
+ SPECIES_SPRITE(RHYHORN, gMonBackPic_Rhyhorn),
+ SPECIES_SPRITE(RHYDON, gMonBackPic_Rhydon),
+ SPECIES_SPRITE(CHANSEY, gMonBackPic_Chansey),
+ SPECIES_SPRITE(TANGELA, gMonBackPic_Tangela),
+ SPECIES_SPRITE(KANGASKHAN, gMonBackPic_Kangaskhan),
+ SPECIES_SPRITE(HORSEA, gMonBackPic_Horsea),
+ SPECIES_SPRITE(SEADRA, gMonBackPic_Seadra),
+ SPECIES_SPRITE(GOLDEEN, gMonBackPic_Goldeen),
+ SPECIES_SPRITE(SEAKING, gMonBackPic_Seaking),
+ SPECIES_SPRITE(STARYU, gMonBackPic_Staryu),
+ SPECIES_SPRITE(STARMIE, gMonBackPic_Starmie),
+ SPECIES_SPRITE(MR_MIME, gMonBackPic_Mrmime),
+ SPECIES_SPRITE(SCYTHER, gMonBackPic_Scyther),
+ SPECIES_SPRITE(JYNX, gMonBackPic_Jynx),
+ SPECIES_SPRITE(ELECTABUZZ, gMonBackPic_Electabuzz),
+ SPECIES_SPRITE(MAGMAR, gMonBackPic_Magmar),
+ SPECIES_SPRITE(PINSIR, gMonBackPic_Pinsir),
+ SPECIES_SPRITE(TAUROS, gMonBackPic_Tauros),
+ SPECIES_SPRITE(MAGIKARP, gMonBackPic_Magikarp),
+ SPECIES_SPRITE(GYARADOS, gMonBackPic_Gyarados),
+ SPECIES_SPRITE(LAPRAS, gMonBackPic_Lapras),
+ SPECIES_SPRITE(DITTO, gMonBackPic_Ditto),
+ SPECIES_SPRITE(EEVEE, gMonBackPic_Eevee),
+ SPECIES_SPRITE(VAPOREON, gMonBackPic_Vaporeon),
+ SPECIES_SPRITE(JOLTEON, gMonBackPic_Jolteon),
+ SPECIES_SPRITE(FLAREON, gMonBackPic_Flareon),
+ SPECIES_SPRITE(PORYGON, gMonBackPic_Porygon),
+ SPECIES_SPRITE(OMANYTE, gMonBackPic_Omanyte),
+ SPECIES_SPRITE(OMASTAR, gMonBackPic_Omastar),
+ SPECIES_SPRITE(KABUTO, gMonBackPic_Kabuto),
+ SPECIES_SPRITE(KABUTOPS, gMonBackPic_Kabutops),
+ SPECIES_SPRITE(AERODACTYL, gMonBackPic_Aerodactyl),
+ SPECIES_SPRITE(SNORLAX, gMonBackPic_Snorlax),
+ SPECIES_SPRITE(ARTICUNO, gMonBackPic_Articuno),
+ SPECIES_SPRITE(ZAPDOS, gMonBackPic_Zapdos),
+ SPECIES_SPRITE(MOLTRES, gMonBackPic_Moltres),
+ SPECIES_SPRITE(DRATINI, gMonBackPic_Dratini),
+ SPECIES_SPRITE(DRAGONAIR, gMonBackPic_Dragonair),
+ SPECIES_SPRITE(DRAGONITE, gMonBackPic_Dragonite),
+ SPECIES_SPRITE(MEWTWO, gMonBackPic_Mewtwo),
+ SPECIES_SPRITE(MEW, gMonBackPic_Mew),
+ SPECIES_SPRITE(CHIKORITA, gMonBackPic_Chikorita),
+ SPECIES_SPRITE(BAYLEEF, gMonBackPic_Bayleef),
+ SPECIES_SPRITE(MEGANIUM, gMonBackPic_Meganium),
+ SPECIES_SPRITE(CYNDAQUIL, gMonBackPic_Cyndaquil),
+ SPECIES_SPRITE(QUILAVA, gMonBackPic_Quilava),
+ SPECIES_SPRITE(TYPHLOSION, gMonBackPic_Typhlosion),
+ SPECIES_SPRITE(TOTODILE, gMonBackPic_Totodile),
+ SPECIES_SPRITE(CROCONAW, gMonBackPic_Croconaw),
+ SPECIES_SPRITE(FERALIGATR, gMonBackPic_Feraligatr),
+ SPECIES_SPRITE(SENTRET, gMonBackPic_Sentret),
+ SPECIES_SPRITE(FURRET, gMonBackPic_Furret),
+ SPECIES_SPRITE(HOOTHOOT, gMonBackPic_Hoothoot),
+ SPECIES_SPRITE(NOCTOWL, gMonBackPic_Noctowl),
+ SPECIES_SPRITE(LEDYBA, gMonBackPic_Ledyba),
+ SPECIES_SPRITE(LEDIAN, gMonBackPic_Ledian),
+ SPECIES_SPRITE(SPINARAK, gMonBackPic_Spinarak),
+ SPECIES_SPRITE(ARIADOS, gMonBackPic_Ariados),
+ SPECIES_SPRITE(CROBAT, gMonBackPic_Crobat),
+ SPECIES_SPRITE(CHINCHOU, gMonBackPic_Chinchou),
+ SPECIES_SPRITE(LANTURN, gMonBackPic_Lanturn),
+ SPECIES_SPRITE(PICHU, gMonBackPic_Pichu),
+ SPECIES_SPRITE(CLEFFA, gMonBackPic_Cleffa),
+ SPECIES_SPRITE(IGGLYBUFF, gMonBackPic_Igglybuff),
+ SPECIES_SPRITE(TOGEPI, gMonBackPic_Togepi),
+ SPECIES_SPRITE(TOGETIC, gMonBackPic_Togetic),
+ SPECIES_SPRITE(NATU, gMonBackPic_Natu),
+ SPECIES_SPRITE(XATU, gMonBackPic_Xatu),
+ SPECIES_SPRITE(MAREEP, gMonBackPic_Mareep),
+ SPECIES_SPRITE(FLAAFFY, gMonBackPic_Flaaffy),
+ SPECIES_SPRITE(AMPHAROS, gMonBackPic_Ampharos),
+ SPECIES_SPRITE(BELLOSSOM, gMonBackPic_Bellossom),
+ SPECIES_SPRITE(MARILL, gMonBackPic_Marill),
+ SPECIES_SPRITE(AZUMARILL, gMonBackPic_Azumarill),
+ SPECIES_SPRITE(SUDOWOODO, gMonBackPic_Sudowoodo),
+ SPECIES_SPRITE(POLITOED, gMonBackPic_Politoed),
+ SPECIES_SPRITE(HOPPIP, gMonBackPic_Hoppip),
+ SPECIES_SPRITE(SKIPLOOM, gMonBackPic_Skiploom),
+ SPECIES_SPRITE(JUMPLUFF, gMonBackPic_Jumpluff),
+ SPECIES_SPRITE(AIPOM, gMonBackPic_Aipom),
+ SPECIES_SPRITE(SUNKERN, gMonBackPic_Sunkern),
+ SPECIES_SPRITE(SUNFLORA, gMonBackPic_Sunflora),
+ SPECIES_SPRITE(YANMA, gMonBackPic_Yanma),
+ SPECIES_SPRITE(WOOPER, gMonBackPic_Wooper),
+ SPECIES_SPRITE(QUAGSIRE, gMonBackPic_Quagsire),
+ SPECIES_SPRITE(ESPEON, gMonBackPic_Espeon),
+ SPECIES_SPRITE(UMBREON, gMonBackPic_Umbreon),
+ SPECIES_SPRITE(MURKROW, gMonBackPic_Murkrow),
+ SPECIES_SPRITE(SLOWKING, gMonBackPic_Slowking),
+ SPECIES_SPRITE(MISDREAVUS, gMonBackPic_Misdreavus),
+ SPECIES_SPRITE(UNOWN, gMonBackPic_UnownA),
+ SPECIES_SPRITE(WOBBUFFET, gMonBackPic_Wobbuffet),
+ SPECIES_SPRITE(GIRAFARIG, gMonBackPic_Girafarig),
+ SPECIES_SPRITE(PINECO, gMonBackPic_Pineco),
+ SPECIES_SPRITE(FORRETRESS, gMonBackPic_Forretress),
+ SPECIES_SPRITE(DUNSPARCE, gMonBackPic_Dunsparce),
+ SPECIES_SPRITE(GLIGAR, gMonBackPic_Gligar),
+ SPECIES_SPRITE(STEELIX, gMonBackPic_Steelix),
+ SPECIES_SPRITE(SNUBBULL, gMonBackPic_Snubbull),
+ SPECIES_SPRITE(GRANBULL, gMonBackPic_Granbull),
+ SPECIES_SPRITE(QWILFISH, gMonBackPic_Qwilfish),
+ SPECIES_SPRITE(SCIZOR, gMonBackPic_Scizor),
+ SPECIES_SPRITE(SHUCKLE, gMonBackPic_Shuckle),
+ SPECIES_SPRITE(HERACROSS, gMonBackPic_Heracross),
+ SPECIES_SPRITE(SNEASEL, gMonBackPic_Sneasel),
+ SPECIES_SPRITE(TEDDIURSA, gMonBackPic_Teddiursa),
+ SPECIES_SPRITE(URSARING, gMonBackPic_Ursaring),
+ SPECIES_SPRITE(SLUGMA, gMonBackPic_Slugma),
+ SPECIES_SPRITE(MAGCARGO, gMonBackPic_Magcargo),
+ SPECIES_SPRITE(SWINUB, gMonBackPic_Swinub),
+ SPECIES_SPRITE(PILOSWINE, gMonBackPic_Piloswine),
+ SPECIES_SPRITE(CORSOLA, gMonBackPic_Corsola),
+ SPECIES_SPRITE(REMORAID, gMonBackPic_Remoraid),
+ SPECIES_SPRITE(OCTILLERY, gMonBackPic_Octillery),
+ SPECIES_SPRITE(DELIBIRD, gMonBackPic_Delibird),
+ SPECIES_SPRITE(MANTINE, gMonBackPic_Mantine),
+ SPECIES_SPRITE(SKARMORY, gMonBackPic_Skarmory),
+ SPECIES_SPRITE(HOUNDOUR, gMonBackPic_Houndour),
+ SPECIES_SPRITE(HOUNDOOM, gMonBackPic_Houndoom),
+ SPECIES_SPRITE(KINGDRA, gMonBackPic_Kingdra),
+ SPECIES_SPRITE(PHANPY, gMonBackPic_Phanpy),
+ SPECIES_SPRITE(DONPHAN, gMonBackPic_Donphan),
+ SPECIES_SPRITE(PORYGON2, gMonBackPic_Porygon2),
+ SPECIES_SPRITE(STANTLER, gMonBackPic_Stantler),
+ SPECIES_SPRITE(SMEARGLE, gMonBackPic_Smeargle),
+ SPECIES_SPRITE(TYROGUE, gMonBackPic_Tyrogue),
+ SPECIES_SPRITE(HITMONTOP, gMonBackPic_Hitmontop),
+ SPECIES_SPRITE(SMOOCHUM, gMonBackPic_Smoochum),
+ SPECIES_SPRITE(ELEKID, gMonBackPic_Elekid),
+ SPECIES_SPRITE(MAGBY, gMonBackPic_Magby),
+ SPECIES_SPRITE(MILTANK, gMonBackPic_Miltank),
+ SPECIES_SPRITE(BLISSEY, gMonBackPic_Blissey),
+ SPECIES_SPRITE(RAIKOU, gMonBackPic_Raikou),
+ SPECIES_SPRITE(ENTEI, gMonBackPic_Entei),
+ SPECIES_SPRITE(SUICUNE, gMonBackPic_Suicune),
+ SPECIES_SPRITE(LARVITAR, gMonBackPic_Larvitar),
+ SPECIES_SPRITE(PUPITAR, gMonBackPic_Pupitar),
+ SPECIES_SPRITE(TYRANITAR, gMonBackPic_Tyranitar),
+ SPECIES_SPRITE(LUGIA, gMonBackPic_Lugia),
+ SPECIES_SPRITE(HO_OH, gMonBackPic_HoOh),
+ SPECIES_SPRITE(CELEBI, gMonBackPic_Celebi),
+ SPECIES_SPRITE(OLD_UNOWN_B, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_C, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_D, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_E, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_F, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_G, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_H, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_I, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_J, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_K, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_L, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_M, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_N, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_O, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_P, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_Q, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_R, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_S, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_T, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_U, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_V, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_W, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_X, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_Y, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_Z, gMonBackPic_DoubleQuestionMark),
+ SPECIES_SPRITE(TREECKO, gMonBackPic_Treecko),
+ SPECIES_SPRITE(GROVYLE, gMonBackPic_Grovyle),
+ SPECIES_SPRITE(SCEPTILE, gMonBackPic_Sceptile),
+ SPECIES_SPRITE(TORCHIC, gMonBackPic_Torchic),
+ SPECIES_SPRITE(COMBUSKEN, gMonBackPic_Combusken),
+ SPECIES_SPRITE(BLAZIKEN, gMonBackPic_Blaziken),
+ SPECIES_SPRITE(MUDKIP, gMonBackPic_Mudkip),
+ SPECIES_SPRITE(MARSHTOMP, gMonBackPic_Marshtomp),
+ SPECIES_SPRITE(SWAMPERT, gMonBackPic_Swampert),
+ SPECIES_SPRITE(POOCHYENA, gMonBackPic_Poochyena),
+ SPECIES_SPRITE(MIGHTYENA, gMonBackPic_Mightyena),
+ SPECIES_SPRITE(ZIGZAGOON, gMonBackPic_Zigzagoon),
+ SPECIES_SPRITE(LINOONE, gMonBackPic_Linoone),
+ SPECIES_SPRITE(WURMPLE, gMonBackPic_Wurmple),
+ SPECIES_SPRITE(SILCOON, gMonBackPic_Silcoon),
+ SPECIES_SPRITE(BEAUTIFLY, gMonBackPic_Beautifly),
+ SPECIES_SPRITE(CASCOON, gMonBackPic_Cascoon),
+ SPECIES_SPRITE(DUSTOX, gMonBackPic_Dustox),
+ SPECIES_SPRITE(LOTAD, gMonBackPic_Lotad),
+ SPECIES_SPRITE(LOMBRE, gMonBackPic_Lombre),
+ SPECIES_SPRITE(LUDICOLO, gMonBackPic_Ludicolo),
+ SPECIES_SPRITE(SEEDOT, gMonBackPic_Seedot),
+ SPECIES_SPRITE(NUZLEAF, gMonBackPic_Nuzleaf),
+ SPECIES_SPRITE(SHIFTRY, gMonBackPic_Shiftry),
+ SPECIES_SPRITE(NINCADA, gMonBackPic_Nincada),
+ SPECIES_SPRITE(NINJASK, gMonBackPic_Ninjask),
+ SPECIES_SPRITE(SHEDINJA, gMonBackPic_Shedinja),
+ SPECIES_SPRITE(TAILLOW, gMonBackPic_Taillow),
+ SPECIES_SPRITE(SWELLOW, gMonBackPic_Swellow),
+ SPECIES_SPRITE(SHROOMISH, gMonBackPic_Shroomish),
+ SPECIES_SPRITE(BRELOOM, gMonBackPic_Breloom),
+ SPECIES_SPRITE(SPINDA, gMonBackPic_Spinda),
+ SPECIES_SPRITE(WINGULL, gMonBackPic_Wingull),
+ SPECIES_SPRITE(PELIPPER, gMonBackPic_Pelipper),
+ SPECIES_SPRITE(SURSKIT, gMonBackPic_Surskit),
+ SPECIES_SPRITE(MASQUERAIN, gMonBackPic_Masquerain),
+ SPECIES_SPRITE(WAILMER, gMonBackPic_Wailmer),
+ SPECIES_SPRITE(WAILORD, gMonBackPic_Wailord),
+ SPECIES_SPRITE(SKITTY, gMonBackPic_Skitty),
+ SPECIES_SPRITE(DELCATTY, gMonBackPic_Delcatty),
+ SPECIES_SPRITE(KECLEON, gMonBackPic_Kecleon),
+ SPECIES_SPRITE(BALTOY, gMonBackPic_Baltoy),
+ SPECIES_SPRITE(CLAYDOL, gMonBackPic_Claydol),
+ SPECIES_SPRITE(NOSEPASS, gMonBackPic_Nosepass),
+ SPECIES_SPRITE(TORKOAL, gMonBackPic_Torkoal),
+ SPECIES_SPRITE(SABLEYE, gMonBackPic_Sableye),
+ SPECIES_SPRITE(BARBOACH, gMonBackPic_Barboach),
+ SPECIES_SPRITE(WHISCASH, gMonBackPic_Whiscash),
+ SPECIES_SPRITE(LUVDISC, gMonBackPic_Luvdisc),
+ SPECIES_SPRITE(CORPHISH, gMonBackPic_Corphish),
+ SPECIES_SPRITE(CRAWDAUNT, gMonBackPic_Crawdaunt),
+ SPECIES_SPRITE(FEEBAS, gMonBackPic_Feebas),
+ SPECIES_SPRITE(MILOTIC, gMonBackPic_Milotic),
+ SPECIES_SPRITE(CARVANHA, gMonBackPic_Carvanha),
+ SPECIES_SPRITE(SHARPEDO, gMonBackPic_Sharpedo),
+ SPECIES_SPRITE(TRAPINCH, gMonBackPic_Trapinch),
+ SPECIES_SPRITE(VIBRAVA, gMonBackPic_Vibrava),
+ SPECIES_SPRITE(FLYGON, gMonBackPic_Flygon),
+ SPECIES_SPRITE(MAKUHITA, gMonBackPic_Makuhita),
+ SPECIES_SPRITE(HARIYAMA, gMonBackPic_Hariyama),
+ SPECIES_SPRITE(ELECTRIKE, gMonBackPic_Electrike),
+ SPECIES_SPRITE(MANECTRIC, gMonBackPic_Manectric),
+ SPECIES_SPRITE(NUMEL, gMonBackPic_Numel),
+ SPECIES_SPRITE(CAMERUPT, gMonBackPic_Camerupt),
+ SPECIES_SPRITE(SPHEAL, gMonBackPic_Spheal),
+ SPECIES_SPRITE(SEALEO, gMonBackPic_Sealeo),
+ SPECIES_SPRITE(WALREIN, gMonBackPic_Walrein),
+ SPECIES_SPRITE(CACNEA, gMonBackPic_Cacnea),
+ SPECIES_SPRITE(CACTURNE, gMonBackPic_Cacturne),
+ SPECIES_SPRITE(SNORUNT, gMonBackPic_Snorunt),
+ SPECIES_SPRITE(GLALIE, gMonBackPic_Glalie),
+ SPECIES_SPRITE(LUNATONE, gMonBackPic_Lunatone),
+ SPECIES_SPRITE(SOLROCK, gMonBackPic_Solrock),
+ SPECIES_SPRITE(AZURILL, gMonBackPic_Azurill),
+ SPECIES_SPRITE(SPOINK, gMonBackPic_Spoink),
+ SPECIES_SPRITE(GRUMPIG, gMonBackPic_Grumpig),
+ SPECIES_SPRITE(PLUSLE, gMonBackPic_Plusle),
+ SPECIES_SPRITE(MINUN, gMonBackPic_Minun),
+ SPECIES_SPRITE(MAWILE, gMonBackPic_Mawile),
+ SPECIES_SPRITE(MEDITITE, gMonBackPic_Meditite),
+ SPECIES_SPRITE(MEDICHAM, gMonBackPic_Medicham),
+ SPECIES_SPRITE(SWABLU, gMonBackPic_Swablu),
+ SPECIES_SPRITE(ALTARIA, gMonBackPic_Altaria),
+ SPECIES_SPRITE(WYNAUT, gMonBackPic_Wynaut),
+ SPECIES_SPRITE(DUSKULL, gMonBackPic_Duskull),
+ SPECIES_SPRITE(DUSCLOPS, gMonBackPic_Dusclops),
+ SPECIES_SPRITE(ROSELIA, gMonBackPic_Roselia),
+ SPECIES_SPRITE(SLAKOTH, gMonBackPic_Slakoth),
+ SPECIES_SPRITE(VIGOROTH, gMonBackPic_Vigoroth),
+ SPECIES_SPRITE(SLAKING, gMonBackPic_Slaking),
+ SPECIES_SPRITE(GULPIN, gMonBackPic_Gulpin),
+ SPECIES_SPRITE(SWALOT, gMonBackPic_Swalot),
+ SPECIES_SPRITE(TROPIUS, gMonBackPic_Tropius),
+ SPECIES_SPRITE(WHISMUR, gMonBackPic_Whismur),
+ SPECIES_SPRITE(LOUDRED, gMonBackPic_Loudred),
+ SPECIES_SPRITE(EXPLOUD, gMonBackPic_Exploud),
+ SPECIES_SPRITE(CLAMPERL, gMonBackPic_Clamperl),
+ SPECIES_SPRITE(HUNTAIL, gMonBackPic_Huntail),
+ SPECIES_SPRITE(GOREBYSS, gMonBackPic_Gorebyss),
+ SPECIES_SPRITE(ABSOL, gMonBackPic_Absol),
+ SPECIES_SPRITE(SHUPPET, gMonBackPic_Shuppet),
+ SPECIES_SPRITE(BANETTE, gMonBackPic_Banette),
+ SPECIES_SPRITE(SEVIPER, gMonBackPic_Seviper),
+ SPECIES_SPRITE(ZANGOOSE, gMonBackPic_Zangoose),
+ SPECIES_SPRITE(RELICANTH, gMonBackPic_Relicanth),
+ SPECIES_SPRITE(ARON, gMonBackPic_Aron),
+ SPECIES_SPRITE(LAIRON, gMonBackPic_Lairon),
+ SPECIES_SPRITE(AGGRON, gMonBackPic_Aggron),
+ SPECIES_SPRITE(CASTFORM, gMonBackPic_Castform),
+ SPECIES_SPRITE(VOLBEAT, gMonBackPic_Volbeat),
+ SPECIES_SPRITE(ILLUMISE, gMonBackPic_Illumise),
+ SPECIES_SPRITE(LILEEP, gMonBackPic_Lileep),
+ SPECIES_SPRITE(CRADILY, gMonBackPic_Cradily),
+ SPECIES_SPRITE(ANORITH, gMonBackPic_Anorith),
+ SPECIES_SPRITE(ARMALDO, gMonBackPic_Armaldo),
+ SPECIES_SPRITE(RALTS, gMonBackPic_Ralts),
+ SPECIES_SPRITE(KIRLIA, gMonBackPic_Kirlia),
+ SPECIES_SPRITE(GARDEVOIR, gMonBackPic_Gardevoir),
+ SPECIES_SPRITE(BAGON, gMonBackPic_Bagon),
+ SPECIES_SPRITE(SHELGON, gMonBackPic_Shelgon),
+ SPECIES_SPRITE(SALAMENCE, gMonBackPic_Salamence),
+ SPECIES_SPRITE(BELDUM, gMonBackPic_Beldum),
+ SPECIES_SPRITE(METANG, gMonBackPic_Metang),
+ SPECIES_SPRITE(METAGROSS, gMonBackPic_Metagross),
+ SPECIES_SPRITE(REGIROCK, gMonBackPic_Regirock),
+ SPECIES_SPRITE(REGICE, gMonBackPic_Regice),
+ SPECIES_SPRITE(REGISTEEL, gMonBackPic_Registeel),
+ SPECIES_SPRITE(KYOGRE, gMonBackPic_Kyogre),
+ SPECIES_SPRITE(GROUDON, gMonBackPic_Groudon),
+ SPECIES_SPRITE(RAYQUAZA, gMonBackPic_Rayquaza),
+ SPECIES_SPRITE(LATIAS, gMonBackPic_Latias),
+ SPECIES_SPRITE(LATIOS, gMonBackPic_Latios),
+ SPECIES_SPRITE(JIRACHI, gMonBackPic_Jirachi),
+ SPECIES_SPRITE(DEOXYS, gMonBackPic_Deoxys),
+ SPECIES_SPRITE(CHIMECHO, gMonBackPic_Chimecho),
+ SPECIES_SPRITE(EGG, gMonStillFrontPic_Egg),
+ SPECIES_SPRITE(UNOWN_B, gMonBackPic_UnownB),
+ SPECIES_SPRITE(UNOWN_C, gMonBackPic_UnownC),
+ SPECIES_SPRITE(UNOWN_D, gMonBackPic_UnownD),
+ SPECIES_SPRITE(UNOWN_E, gMonBackPic_UnownE),
+ SPECIES_SPRITE(UNOWN_F, gMonBackPic_UnownF),
+ SPECIES_SPRITE(UNOWN_G, gMonBackPic_UnownG),
+ SPECIES_SPRITE(UNOWN_H, gMonBackPic_UnownH),
+ SPECIES_SPRITE(UNOWN_I, gMonBackPic_UnownI),
+ SPECIES_SPRITE(UNOWN_J, gMonBackPic_UnownJ),
+ SPECIES_SPRITE(UNOWN_K, gMonBackPic_UnownK),
+ SPECIES_SPRITE(UNOWN_L, gMonBackPic_UnownL),
+ SPECIES_SPRITE(UNOWN_M, gMonBackPic_UnownM),
+ SPECIES_SPRITE(UNOWN_N, gMonBackPic_UnownN),
+ SPECIES_SPRITE(UNOWN_O, gMonBackPic_UnownO),
+ SPECIES_SPRITE(UNOWN_P, gMonBackPic_UnownP),
+ SPECIES_SPRITE(UNOWN_Q, gMonBackPic_UnownQ),
+ SPECIES_SPRITE(UNOWN_R, gMonBackPic_UnownR),
+ SPECIES_SPRITE(UNOWN_S, gMonBackPic_UnownS),
+ SPECIES_SPRITE(UNOWN_T, gMonBackPic_UnownT),
+ SPECIES_SPRITE(UNOWN_U, gMonBackPic_UnownU),
+ SPECIES_SPRITE(UNOWN_V, gMonBackPic_UnownV),
+ SPECIES_SPRITE(UNOWN_W, gMonBackPic_UnownW),
+ SPECIES_SPRITE(UNOWN_X, gMonBackPic_UnownX),
+ SPECIES_SPRITE(UNOWN_Y, gMonBackPic_UnownY),
+ SPECIES_SPRITE(UNOWN_Z, gMonBackPic_UnownZ),
+ SPECIES_SPRITE(UNOWN_EMARK, gMonBackPic_UnownExclamationMark),
+ SPECIES_SPRITE(UNOWN_QMARK, gMonBackPic_UnownQuestionMark),
};
-
diff --git a/src/data/pokemon_graphics/enemy_mon_elevation.h b/src/data/pokemon_graphics/enemy_mon_elevation.h
index c8f079a5c..f3d81d27e 100644
--- a/src/data/pokemon_graphics/enemy_mon_elevation.h
+++ b/src/data/pokemon_graphics/enemy_mon_elevation.h
@@ -1,415 +1,62 @@
-#include "constants/species.h"
-
// This determines how much higher above the usual position the enemy Pokémon
// is during battle. Species that float or fly have nonzero values.
-const u8 gEnemyMonElevation[] =
+const u8 gEnemyMonElevation[NUM_SPECIES] =
{
- [SPECIES_NONE] = 0,
- [SPECIES_BULBASAUR] = 0,
- [SPECIES_IVYSAUR] = 0,
- [SPECIES_VENUSAUR] = 0,
- [SPECIES_CHARMANDER] = 0,
- [SPECIES_CHARMELEON] = 0,
- [SPECIES_CHARIZARD] = 0,
- [SPECIES_SQUIRTLE] = 0,
- [SPECIES_WARTORTLE] = 0,
- [SPECIES_BLASTOISE] = 0,
- [SPECIES_CATERPIE] = 0,
- [SPECIES_METAPOD] = 0,
[SPECIES_BUTTERFREE] = 8,
- [SPECIES_WEEDLE] = 0,
- [SPECIES_KAKUNA] = 0,
[SPECIES_BEEDRILL] = 8,
[SPECIES_PIDGEY] = 16,
- [SPECIES_PIDGEOTTO] = 0,
[SPECIES_PIDGEOT] = 4,
- [SPECIES_RATTATA] = 0,
- [SPECIES_RATICATE] = 0,
- [SPECIES_SPEAROW] = 0,
[SPECIES_FEAROW] = 6,
- [SPECIES_EKANS] = 0,
- [SPECIES_ARBOK] = 0,
- [SPECIES_PIKACHU] = 0,
- [SPECIES_RAICHU] = 0,
- [SPECIES_SANDSHREW] = 0,
- [SPECIES_SANDSLASH] = 0,
- [SPECIES_NIDORAN_F] = 0,
- [SPECIES_NIDORINA] = 0,
- [SPECIES_NIDOQUEEN] = 0,
- [SPECIES_NIDORAN_M] = 0,
- [SPECIES_NIDORINO] = 0,
- [SPECIES_NIDOKING] = 0,
- [SPECIES_CLEFAIRY] = 0,
- [SPECIES_CLEFABLE] = 0,
- [SPECIES_VULPIX] = 0,
- [SPECIES_NINETALES] = 0,
- [SPECIES_JIGGLYPUFF] = 0,
- [SPECIES_WIGGLYTUFF] = 0,
[SPECIES_ZUBAT] = 8,
[SPECIES_GOLBAT] = 8,
- [SPECIES_ODDISH] = 0,
- [SPECIES_GLOOM] = 0,
- [SPECIES_VILEPLUME] = 0,
- [SPECIES_PARAS] = 0,
- [SPECIES_PARASECT] = 0,
- [SPECIES_VENONAT] = 0,
[SPECIES_VENOMOTH] = 8,
- [SPECIES_DIGLETT] = 0,
- [SPECIES_DUGTRIO] = 0,
- [SPECIES_MEOWTH] = 0,
- [SPECIES_PERSIAN] = 0,
- [SPECIES_PSYDUCK] = 0,
- [SPECIES_GOLDUCK] = 0,
- [SPECIES_MANKEY] = 0,
- [SPECIES_PRIMEAPE] = 0,
- [SPECIES_GROWLITHE] = 0,
- [SPECIES_ARCANINE] = 0,
- [SPECIES_POLIWAG] = 0,
- [SPECIES_POLIWHIRL] = 0,
- [SPECIES_POLIWRATH] = 0,
- [SPECIES_ABRA] = 0,
- [SPECIES_KADABRA] = 0,
- [SPECIES_ALAKAZAM] = 0,
- [SPECIES_MACHOP] = 0,
- [SPECIES_MACHOKE] = 0,
- [SPECIES_MACHAMP] = 0,
- [SPECIES_BELLSPROUT] = 0,
- [SPECIES_WEEPINBELL] = 0,
- [SPECIES_VICTREEBEL] = 0,
- [SPECIES_TENTACOOL] = 0,
- [SPECIES_TENTACRUEL] = 0,
[SPECIES_GEODUDE] = 16,
- [SPECIES_GRAVELER] = 0,
- [SPECIES_GOLEM] = 0,
- [SPECIES_PONYTA] = 0,
- [SPECIES_RAPIDASH] = 0,
- [SPECIES_SLOWPOKE] = 0,
- [SPECIES_SLOWBRO] = 0,
[SPECIES_MAGNEMITE] = 16,
[SPECIES_MAGNETON] = 8,
- [SPECIES_FARFETCHD] = 0,
- [SPECIES_DODUO] = 0,
- [SPECIES_DODRIO] = 0,
- [SPECIES_SEEL] = 0,
- [SPECIES_DEWGONG] = 0,
- [SPECIES_GRIMER] = 0,
- [SPECIES_MUK] = 0,
- [SPECIES_SHELLDER] = 0,
- [SPECIES_CLOYSTER] = 0,
[SPECIES_GASTLY] = 4,
[SPECIES_HAUNTER] = 4,
- [SPECIES_GENGAR] = 0,
- [SPECIES_ONIX] = 0,
- [SPECIES_DROWZEE] = 0,
- [SPECIES_HYPNO] = 0,
- [SPECIES_KRABBY] = 0,
- [SPECIES_KINGLER] = 0,
[SPECIES_VOLTORB] = 10,
[SPECIES_ELECTRODE] = 12,
- [SPECIES_EXEGGCUTE] = 0,
- [SPECIES_EXEGGUTOR] = 0,
- [SPECIES_CUBONE] = 0,
- [SPECIES_MAROWAK] = 0,
- [SPECIES_HITMONLEE] = 0,
- [SPECIES_HITMONCHAN] = 0,
- [SPECIES_LICKITUNG] = 0,
[SPECIES_KOFFING] = 8,
[SPECIES_WEEZING] = 6,
- [SPECIES_RHYHORN] = 0,
- [SPECIES_RHYDON] = 0,
- [SPECIES_CHANSEY] = 0,
- [SPECIES_TANGELA] = 0,
- [SPECIES_KANGASKHAN] = 0,
- [SPECIES_HORSEA] = 0,
- [SPECIES_SEADRA] = 0,
- [SPECIES_GOLDEEN] = 0,
- [SPECIES_SEAKING] = 0,
- [SPECIES_STARYU] = 0,
- [SPECIES_STARMIE] = 0,
- [SPECIES_MR_MIME] = 0,
- [SPECIES_SCYTHER] = 0,
- [SPECIES_JYNX] = 0,
- [SPECIES_ELECTABUZZ] = 0,
- [SPECIES_MAGMAR] = 0,
- [SPECIES_PINSIR] = 0,
- [SPECIES_TAUROS] = 0,
- [SPECIES_MAGIKARP] = 0,
- [SPECIES_GYARADOS] = 0,
- [SPECIES_LAPRAS] = 0,
- [SPECIES_DITTO] = 0,
- [SPECIES_EEVEE] = 0,
- [SPECIES_VAPOREON] = 0,
- [SPECIES_JOLTEON] = 0,
- [SPECIES_FLAREON] = 0,
- [SPECIES_PORYGON] = 0,
- [SPECIES_OMANYTE] = 0,
- [SPECIES_OMASTAR] = 0,
- [SPECIES_KABUTO] = 0,
- [SPECIES_KABUTOPS] = 0,
[SPECIES_AERODACTYL] = 7,
- [SPECIES_SNORLAX] = 0,
[SPECIES_ARTICUNO] = 6,
[SPECIES_ZAPDOS] = 8,
[SPECIES_MOLTRES] = 5,
- [SPECIES_DRATINI] = 0,
- [SPECIES_DRAGONAIR] = 0,
[SPECIES_DRAGONITE] = 6,
- [SPECIES_MEWTWO] = 0,
[SPECIES_MEW] = 8,
- [SPECIES_CHIKORITA] = 0,
- [SPECIES_BAYLEEF] = 0,
- [SPECIES_MEGANIUM] = 0,
- [SPECIES_CYNDAQUIL] = 0,
- [SPECIES_QUILAVA] = 0,
- [SPECIES_TYPHLOSION] = 0,
- [SPECIES_TOTODILE] = 0,
- [SPECIES_CROCONAW] = 0,
- [SPECIES_FERALIGATR] = 0,
- [SPECIES_SENTRET] = 0,
- [SPECIES_FURRET] = 0,
- [SPECIES_HOOTHOOT] = 0,
- [SPECIES_NOCTOWL] = 0,
- [SPECIES_LEDYBA] = 0,
[SPECIES_LEDIAN] = 8,
- [SPECIES_SPINARAK] = 0,
- [SPECIES_ARIADOS] = 0,
[SPECIES_CROBAT] = 6,
- [SPECIES_CHINCHOU] = 0,
- [SPECIES_LANTURN] = 0,
- [SPECIES_PICHU] = 0,
- [SPECIES_CLEFFA] = 0,
- [SPECIES_IGGLYBUFF] = 0,
- [SPECIES_TOGEPI] = 0,
- [SPECIES_TOGETIC] = 0,
- [SPECIES_NATU] = 0,
- [SPECIES_XATU] = 0,
- [SPECIES_MAREEP] = 0,
- [SPECIES_FLAAFFY] = 0,
- [SPECIES_AMPHAROS] = 0,
- [SPECIES_BELLOSSOM] = 0,
- [SPECIES_MARILL] = 0,
- [SPECIES_AZUMARILL] = 0,
- [SPECIES_SUDOWOODO] = 0,
- [SPECIES_POLITOED] = 0,
[SPECIES_HOPPIP] = 11,
[SPECIES_SKIPLOOM] = 12,
[SPECIES_JUMPLUFF] = 9,
- [SPECIES_AIPOM] = 0,
- [SPECIES_SUNKERN] = 0,
- [SPECIES_SUNFLORA] = 0,
[SPECIES_YANMA] = 8,
- [SPECIES_WOOPER] = 0,
- [SPECIES_QUAGSIRE] = 0,
- [SPECIES_ESPEON] = 0,
- [SPECIES_UMBREON] = 0,
- [SPECIES_MURKROW] = 0,
- [SPECIES_SLOWKING] = 0,
[SPECIES_MISDREAVUS] = 8,
[SPECIES_UNOWN] = 8,
- [SPECIES_WOBBUFFET] = 0,
- [SPECIES_GIRAFARIG] = 0,
- [SPECIES_PINECO] = 0,
- [SPECIES_FORRETRESS] = 0,
- [SPECIES_DUNSPARCE] = 0,
[SPECIES_GLIGAR] = 6,
- [SPECIES_STEELIX] = 0,
- [SPECIES_SNUBBULL] = 0,
- [SPECIES_GRANBULL] = 0,
- [SPECIES_QWILFISH] = 0,
- [SPECIES_SCIZOR] = 0,
- [SPECIES_SHUCKLE] = 0,
- [SPECIES_HERACROSS] = 0,
- [SPECIES_SNEASEL] = 0,
- [SPECIES_TEDDIURSA] = 0,
- [SPECIES_URSARING] = 0,
- [SPECIES_SLUGMA] = 0,
- [SPECIES_MAGCARGO] = 0,
- [SPECIES_SWINUB] = 0,
- [SPECIES_PILOSWINE] = 0,
- [SPECIES_CORSOLA] = 0,
- [SPECIES_REMORAID] = 0,
- [SPECIES_OCTILLERY] = 0,
- [SPECIES_DELIBIRD] = 0,
- [SPECIES_MANTINE] = 0,
- [SPECIES_SKARMORY] = 0,
- [SPECIES_HOUNDOUR] = 0,
- [SPECIES_HOUNDOOM] = 0,
- [SPECIES_KINGDRA] = 0,
- [SPECIES_PHANPY] = 0,
- [SPECIES_DONPHAN] = 0,
- [SPECIES_PORYGON2] = 0,
- [SPECIES_STANTLER] = 0,
- [SPECIES_SMEARGLE] = 0,
- [SPECIES_TYROGUE] = 0,
- [SPECIES_HITMONTOP] = 0,
- [SPECIES_SMOOCHUM] = 0,
- [SPECIES_ELEKID] = 0,
- [SPECIES_MAGBY] = 0,
- [SPECIES_MILTANK] = 0,
- [SPECIES_BLISSEY] = 0,
- [SPECIES_RAIKOU] = 0,
- [SPECIES_ENTEI] = 0,
- [SPECIES_SUICUNE] = 0,
- [SPECIES_LARVITAR] = 0,
- [SPECIES_PUPITAR] = 0,
- [SPECIES_TYRANITAR] = 0,
[SPECIES_LUGIA] = 6,
[SPECIES_HO_OH] = 6,
[SPECIES_CELEBI] = 15,
- [SPECIES_OLD_UNOWN_B] = 0,
- [SPECIES_OLD_UNOWN_C] = 0,
- [SPECIES_OLD_UNOWN_D] = 0,
- [SPECIES_OLD_UNOWN_E] = 0,
- [SPECIES_OLD_UNOWN_F] = 0,
- [SPECIES_OLD_UNOWN_G] = 0,
- [SPECIES_OLD_UNOWN_H] = 0,
- [SPECIES_OLD_UNOWN_I] = 0,
- [SPECIES_OLD_UNOWN_J] = 0,
- [SPECIES_OLD_UNOWN_K] = 0,
- [SPECIES_OLD_UNOWN_L] = 0,
- [SPECIES_OLD_UNOWN_M] = 0,
- [SPECIES_OLD_UNOWN_N] = 0,
- [SPECIES_OLD_UNOWN_O] = 0,
- [SPECIES_OLD_UNOWN_P] = 0,
- [SPECIES_OLD_UNOWN_Q] = 0,
- [SPECIES_OLD_UNOWN_R] = 0,
- [SPECIES_OLD_UNOWN_S] = 0,
- [SPECIES_OLD_UNOWN_T] = 0,
- [SPECIES_OLD_UNOWN_U] = 0,
- [SPECIES_OLD_UNOWN_V] = 0,
- [SPECIES_OLD_UNOWN_W] = 0,
- [SPECIES_OLD_UNOWN_X] = 0,
- [SPECIES_OLD_UNOWN_Y] = 0,
- [SPECIES_OLD_UNOWN_Z] = 0,
- [SPECIES_TREECKO] = 0,
- [SPECIES_GROVYLE] = 0,
- [SPECIES_SCEPTILE] = 0,
- [SPECIES_TORCHIC] = 0,
- [SPECIES_COMBUSKEN] = 0,
- [SPECIES_BLAZIKEN] = 0,
- [SPECIES_MUDKIP] = 0,
- [SPECIES_MARSHTOMP] = 0,
- [SPECIES_SWAMPERT] = 0,
- [SPECIES_POOCHYENA] = 0,
- [SPECIES_MIGHTYENA] = 0,
- [SPECIES_ZIGZAGOON] = 0,
- [SPECIES_LINOONE] = 0,
- [SPECIES_WURMPLE] = 0,
- [SPECIES_SILCOON] = 0,
[SPECIES_BEAUTIFLY] = 8,
- [SPECIES_CASCOON] = 0,
[SPECIES_DUSTOX] = 10,
- [SPECIES_LOTAD] = 0,
- [SPECIES_LOMBRE] = 0,
- [SPECIES_LUDICOLO] = 0,
- [SPECIES_SEEDOT] = 0,
- [SPECIES_NUZLEAF] = 0,
- [SPECIES_SHIFTRY] = 0,
- [SPECIES_NINCADA] = 0,
[SPECIES_NINJASK] = 10,
[SPECIES_SHEDINJA] = 8,
- [SPECIES_TAILLOW] = 0,
- [SPECIES_SWELLOW] = 0,
- [SPECIES_SHROOMISH] = 0,
- [SPECIES_BRELOOM] = 0,
- [SPECIES_SPINDA] = 0,
[SPECIES_WINGULL] = 16,
[SPECIES_PELIPPER] = 8,
- [SPECIES_SURSKIT] = 0,
[SPECIES_MASQUERAIN] = 10,
- [SPECIES_WAILMER] = 0,
- [SPECIES_WAILORD] = 0,
- [SPECIES_SKITTY] = 0,
- [SPECIES_DELCATTY] = 0,
- [SPECIES_KECLEON] = 0,
[SPECIES_BALTOY] = 4,
[SPECIES_CLAYDOL] = 10,
- [SPECIES_NOSEPASS] = 0,
- [SPECIES_TORKOAL] = 0,
- [SPECIES_SABLEYE] = 0,
- [SPECIES_BARBOACH] = 0,
- [SPECIES_WHISCASH] = 0,
- [SPECIES_LUVDISC] = 0,
- [SPECIES_CORPHISH] = 0,
- [SPECIES_CRAWDAUNT] = 0,
- [SPECIES_FEEBAS] = 0,
- [SPECIES_MILOTIC] = 0,
- [SPECIES_CARVANHA] = 0,
- [SPECIES_SHARPEDO] = 0,
- [SPECIES_TRAPINCH] = 0,
- [SPECIES_VIBRAVA] = 0,
[SPECIES_FLYGON] = 7,
- [SPECIES_MAKUHITA] = 0,
- [SPECIES_HARIYAMA] = 0,
- [SPECIES_ELECTRIKE] = 0,
- [SPECIES_MANECTRIC] = 0,
- [SPECIES_NUMEL] = 0,
- [SPECIES_CAMERUPT] = 0,
- [SPECIES_SPHEAL] = 0,
- [SPECIES_SEALEO] = 0,
- [SPECIES_WALREIN] = 0,
- [SPECIES_CACNEA] = 0,
- [SPECIES_CACTURNE] = 0,
- [SPECIES_SNORUNT] = 0,
[SPECIES_GLALIE] = 12,
[SPECIES_LUNATONE] = 13,
[SPECIES_SOLROCK] = 4,
- [SPECIES_AZURILL] = 0,
- [SPECIES_SPOINK] = 0,
- [SPECIES_GRUMPIG] = 0,
- [SPECIES_PLUSLE] = 0,
- [SPECIES_MINUN] = 0,
- [SPECIES_MAWILE] = 0,
- [SPECIES_MEDITITE] = 0,
- [SPECIES_MEDICHAM] = 0,
[SPECIES_SWABLU] = 12,
[SPECIES_ALTARIA] = 8,
- [SPECIES_WYNAUT] = 0,
[SPECIES_DUSKULL] = 9,
- [SPECIES_DUSCLOPS] = 0,
- [SPECIES_ROSELIA] = 0,
- [SPECIES_SLAKOTH] = 0,
- [SPECIES_VIGOROTH] = 0,
- [SPECIES_SLAKING] = 0,
- [SPECIES_GULPIN] = 0,
- [SPECIES_SWALOT] = 0,
- [SPECIES_TROPIUS] = 0,
- [SPECIES_WHISMUR] = 0,
- [SPECIES_LOUDRED] = 0,
- [SPECIES_EXPLOUD] = 0,
- [SPECIES_CLAMPERL] = 0,
- [SPECIES_HUNTAIL] = 0,
- [SPECIES_GOREBYSS] = 0,
- [SPECIES_ABSOL] = 0,
[SPECIES_SHUPPET] = 12,
[SPECIES_BANETTE] = 8,
- [SPECIES_SEVIPER] = 0,
- [SPECIES_ZANGOOSE] = 0,
- [SPECIES_RELICANTH] = 0,
- [SPECIES_ARON] = 0,
- [SPECIES_LAIRON] = 0,
- [SPECIES_AGGRON] = 0,
[SPECIES_CASTFORM] = 16,
- [SPECIES_VOLBEAT] = 0,
- [SPECIES_ILLUMISE] = 0,
- [SPECIES_LILEEP] = 0,
- [SPECIES_CRADILY] = 0,
- [SPECIES_ANORITH] = 0,
- [SPECIES_ARMALDO] = 0,
- [SPECIES_RALTS] = 0,
- [SPECIES_KIRLIA] = 0,
- [SPECIES_GARDEVOIR] = 0,
- [SPECIES_BAGON] = 0,
- [SPECIES_SHELGON] = 0,
- [SPECIES_SALAMENCE] = 0,
[SPECIES_BELDUM] = 8,
- [SPECIES_METANG] = 0,
- [SPECIES_METAGROSS] = 0,
- [SPECIES_REGIROCK] = 0,
- [SPECIES_REGICE] = 0,
- [SPECIES_REGISTEEL] = 0,
- [SPECIES_KYOGRE] = 0,
- [SPECIES_GROUDON] = 0,
[SPECIES_RAYQUAZA] = 6,
[SPECIES_LATIAS] = 6,
[SPECIES_LATIOS] = 6,
diff --git a/src/data/pokemon_graphics/footprint_table.h b/src/data/pokemon_graphics/footprint_table.h
index 779ce3dcd..86ca06790 100644
--- a/src/data/pokemon_graphics/footprint_table.h
+++ b/src/data/pokemon_graphics/footprint_table.h
@@ -1,416 +1,416 @@
const u8 *const gMonFootprintTable[] =
{
- gMonFootprint_Bulbasaur,
- gMonFootprint_Bulbasaur,
- gMonFootprint_Ivysaur,
- gMonFootprint_Venusaur,
- gMonFootprint_Charmander,
- gMonFootprint_Charmeleon,
- gMonFootprint_Charizard,
- gMonFootprint_Squirtle,
- gMonFootprint_Wartortle,
- gMonFootprint_Blastoise,
- gMonFootprint_Caterpie,
- gMonFootprint_Metapod,
- gMonFootprint_Butterfree,
- gMonFootprint_Weedle,
- gMonFootprint_Kakuna,
- gMonFootprint_Beedrill,
- gMonFootprint_Pidgey,
- gMonFootprint_Pidgeotto,
- gMonFootprint_Pidgeot,
- gMonFootprint_Rattata,
- gMonFootprint_Raticate,
- gMonFootprint_Spearow,
- gMonFootprint_Fearow,
- gMonFootprint_Ekans,
- gMonFootprint_Arbok,
- gMonFootprint_Pikachu,
- gMonFootprint_Raichu,
- gMonFootprint_Sandshrew,
- gMonFootprint_Sandslash,
- gMonFootprint_NidoranF,
- gMonFootprint_Nidorina,
- gMonFootprint_Nidoqueen,
- gMonFootprint_NidoranM,
- gMonFootprint_Nidorino,
- gMonFootprint_Nidoking,
- gMonFootprint_Clefairy,
- gMonFootprint_Clefable,
- gMonFootprint_Vulpix,
- gMonFootprint_Ninetales,
- gMonFootprint_Jigglypuff,
- gMonFootprint_Wigglytuff,
- gMonFootprint_Zubat,
- gMonFootprint_Golbat,
- gMonFootprint_Oddish,
- gMonFootprint_Gloom,
- gMonFootprint_Vileplume,
- gMonFootprint_Paras,
- gMonFootprint_Parasect,
- gMonFootprint_Venonat,
- gMonFootprint_Venomoth,
- gMonFootprint_Diglett,
- gMonFootprint_Dugtrio,
- gMonFootprint_Meowth,
- gMonFootprint_Persian,
- gMonFootprint_Psyduck,
- gMonFootprint_Golduck,
- gMonFootprint_Mankey,
- gMonFootprint_Primeape,
- gMonFootprint_Growlithe,
- gMonFootprint_Arcanine,
- gMonFootprint_Poliwag,
- gMonFootprint_Poliwhirl,
- gMonFootprint_Poliwrath,
- gMonFootprint_Abra,
- gMonFootprint_Kadabra,
- gMonFootprint_Alakazam,
- gMonFootprint_Machop,
- gMonFootprint_Machoke,
- gMonFootprint_Machamp,
- gMonFootprint_Bellsprout,
- gMonFootprint_Weepinbell,
- gMonFootprint_Victreebel,
- gMonFootprint_Tentacool,
- gMonFootprint_Tentacruel,
- gMonFootprint_Geodude,
- gMonFootprint_Graveler,
- gMonFootprint_Golem,
- gMonFootprint_Ponyta,
- gMonFootprint_Rapidash,
- gMonFootprint_Slowpoke,
- gMonFootprint_Slowbro,
- gMonFootprint_Magnemite,
- gMonFootprint_Magneton,
- gMonFootprint_Farfetchd,
- gMonFootprint_Doduo,
- gMonFootprint_Dodrio,
- gMonFootprint_Seel,
- gMonFootprint_Dewgong,
- gMonFootprint_Grimer,
- gMonFootprint_Muk,
- gMonFootprint_Shellder,
- gMonFootprint_Cloyster,
- gMonFootprint_Gastly,
- gMonFootprint_Haunter,
- gMonFootprint_Gengar,
- gMonFootprint_Onix,
- gMonFootprint_Drowzee,
- gMonFootprint_Hypno,
- gMonFootprint_Krabby,
- gMonFootprint_Kingler,
- gMonFootprint_Voltorb,
- gMonFootprint_Electrode,
- gMonFootprint_Exeggcute,
- gMonFootprint_Exeggutor,
- gMonFootprint_Cubone,
- gMonFootprint_Marowak,
- gMonFootprint_Hitmonlee,
- gMonFootprint_Hitmonchan,
- gMonFootprint_Lickitung,
- gMonFootprint_Koffing,
- gMonFootprint_Weezing,
- gMonFootprint_Rhyhorn,
- gMonFootprint_Rhydon,
- gMonFootprint_Chansey,
- gMonFootprint_Tangela,
- gMonFootprint_Kangaskhan,
- gMonFootprint_Horsea,
- gMonFootprint_Seadra,
- gMonFootprint_Goldeen,
- gMonFootprint_Seaking,
- gMonFootprint_Staryu,
- gMonFootprint_Starmie,
- gMonFootprint_Mrmime,
- gMonFootprint_Scyther,
- gMonFootprint_Jynx,
- gMonFootprint_Electabuzz,
- gMonFootprint_Magmar,
- gMonFootprint_Pinsir,
- gMonFootprint_Tauros,
- gMonFootprint_Magikarp,
- gMonFootprint_Gyarados,
- gMonFootprint_Lapras,
- gMonFootprint_Ditto,
- gMonFootprint_Eevee,
- gMonFootprint_Vaporeon,
- gMonFootprint_Jolteon,
- gMonFootprint_Flareon,
- gMonFootprint_Porygon,
- gMonFootprint_Omanyte,
- gMonFootprint_Omastar,
- gMonFootprint_Kabuto,
- gMonFootprint_Kabutops,
- gMonFootprint_Aerodactyl,
- gMonFootprint_Snorlax,
- gMonFootprint_Articuno,
- gMonFootprint_Zapdos,
- gMonFootprint_Moltres,
- gMonFootprint_Dratini,
- gMonFootprint_Dragonair,
- gMonFootprint_Dragonite,
- gMonFootprint_Mewtwo,
- gMonFootprint_Mew,
- gMonFootprint_Chikorita,
- gMonFootprint_Bayleef,
- gMonFootprint_Meganium,
- gMonFootprint_Cyndaquil,
- gMonFootprint_Quilava,
- gMonFootprint_Typhlosion,
- gMonFootprint_Totodile,
- gMonFootprint_Croconaw,
- gMonFootprint_Feraligatr,
- gMonFootprint_Sentret,
- gMonFootprint_Furret,
- gMonFootprint_Hoothoot,
- gMonFootprint_Noctowl,
- gMonFootprint_Ledyba,
- gMonFootprint_Ledian,
- gMonFootprint_Spinarak,
- gMonFootprint_Ariados,
- gMonFootprint_Crobat,
- gMonFootprint_Chinchou,
- gMonFootprint_Lanturn,
- gMonFootprint_Pichu,
- gMonFootprint_Cleffa,
- gMonFootprint_Igglybuff,
- gMonFootprint_Togepi,
- gMonFootprint_Togetic,
- gMonFootprint_Natu,
- gMonFootprint_Xatu,
- gMonFootprint_Mareep,
- gMonFootprint_Flaaffy,
- gMonFootprint_Ampharos,
- gMonFootprint_Bellossom,
- gMonFootprint_Marill,
- gMonFootprint_Azumarill,
- gMonFootprint_Sudowoodo,
- gMonFootprint_Politoed,
- gMonFootprint_Hoppip,
- gMonFootprint_Skiploom,
- gMonFootprint_Jumpluff,
- gMonFootprint_Aipom,
- gMonFootprint_Sunkern,
- gMonFootprint_Sunflora,
- gMonFootprint_Yanma,
- gMonFootprint_Wooper,
- gMonFootprint_Quagsire,
- gMonFootprint_Espeon,
- gMonFootprint_Umbreon,
- gMonFootprint_Murkrow,
- gMonFootprint_Slowking,
- gMonFootprint_Misdreavus,
- gMonFootprint_Unown,
- gMonFootprint_Wobbuffet,
- gMonFootprint_Girafarig,
- gMonFootprint_Pineco,
- gMonFootprint_Forretress,
- gMonFootprint_Dunsparce,
- gMonFootprint_Gligar,
- gMonFootprint_Steelix,
- gMonFootprint_Snubbull,
- gMonFootprint_Granbull,
- gMonFootprint_Qwilfish,
- gMonFootprint_Scizor,
- gMonFootprint_Shuckle,
- gMonFootprint_Heracross,
- gMonFootprint_Sneasel,
- gMonFootprint_Teddiursa,
- gMonFootprint_Ursaring,
- gMonFootprint_Slugma,
- gMonFootprint_Magcargo,
- gMonFootprint_Swinub,
- gMonFootprint_Piloswine,
- gMonFootprint_Corsola,
- gMonFootprint_Remoraid,
- gMonFootprint_Octillery,
- gMonFootprint_Delibird,
- gMonFootprint_Mantine,
- gMonFootprint_Skarmory,
- gMonFootprint_Houndour,
- gMonFootprint_Houndoom,
- gMonFootprint_Kingdra,
- gMonFootprint_Phanpy,
- gMonFootprint_Donphan,
- gMonFootprint_Porygon2,
- gMonFootprint_Stantler,
- gMonFootprint_Smeargle,
- gMonFootprint_Tyrogue,
- gMonFootprint_Hitmontop,
- gMonFootprint_Smoochum,
- gMonFootprint_Elekid,
- gMonFootprint_Magby,
- gMonFootprint_Miltank,
- gMonFootprint_Blissey,
- gMonFootprint_Raikou,
- gMonFootprint_Entei,
- gMonFootprint_Suicune,
- gMonFootprint_Larvitar,
- gMonFootprint_Pupitar,
- gMonFootprint_Tyranitar,
- gMonFootprint_Lugia,
- gMonFootprint_HoOh,
- gMonFootprint_Celebi,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_QuestionMark,
- gMonFootprint_Treecko,
- gMonFootprint_Grovyle,
- gMonFootprint_Sceptile,
- gMonFootprint_Torchic,
- gMonFootprint_Combusken,
- gMonFootprint_Blaziken,
- gMonFootprint_Mudkip,
- gMonFootprint_Marshtomp,
- gMonFootprint_Swampert,
- gMonFootprint_Poochyena,
- gMonFootprint_Mightyena,
- gMonFootprint_Zigzagoon,
- gMonFootprint_Linoone,
- gMonFootprint_Wurmple,
- gMonFootprint_Silcoon,
- gMonFootprint_Beautifly,
- gMonFootprint_Cascoon,
- gMonFootprint_Dustox,
- gMonFootprint_Lotad,
- gMonFootprint_Lombre,
- gMonFootprint_Ludicolo,
- gMonFootprint_Seedot,
- gMonFootprint_Nuzleaf,
- gMonFootprint_Shiftry,
- gMonFootprint_Nincada,
- gMonFootprint_Ninjask,
- gMonFootprint_Shedinja,
- gMonFootprint_Taillow,
- gMonFootprint_Swellow,
- gMonFootprint_Shroomish,
- gMonFootprint_Breloom,
- gMonFootprint_Spinda,
- gMonFootprint_Wingull,
- gMonFootprint_Pelipper,
- gMonFootprint_Surskit,
- gMonFootprint_Masquerain,
- gMonFootprint_Wailmer,
- gMonFootprint_Wailord,
- gMonFootprint_Skitty,
- gMonFootprint_Delcatty,
- gMonFootprint_Kecleon,
- gMonFootprint_Baltoy,
- gMonFootprint_Claydol,
- gMonFootprint_Nosepass,
- gMonFootprint_Torkoal,
- gMonFootprint_Sableye,
- gMonFootprint_Barboach,
- gMonFootprint_Whiscash,
- gMonFootprint_Luvdisc,
- gMonFootprint_Corphish,
- gMonFootprint_Crawdaunt,
- gMonFootprint_Feebas,
- gMonFootprint_Milotic,
- gMonFootprint_Carvanha,
- gMonFootprint_Sharpedo,
- gMonFootprint_Trapinch,
- gMonFootprint_Vibrava,
- gMonFootprint_Flygon,
- gMonFootprint_Makuhita,
- gMonFootprint_Hariyama,
- gMonFootprint_Electrike,
- gMonFootprint_Manectric,
- gMonFootprint_Numel,
- gMonFootprint_Camerupt,
- gMonFootprint_Spheal,
- gMonFootprint_Sealeo,
- gMonFootprint_Walrein,
- gMonFootprint_Cacnea,
- gMonFootprint_Cacturne,
- gMonFootprint_Snorunt,
- gMonFootprint_Glalie,
- gMonFootprint_Lunatone,
- gMonFootprint_Solrock,
- gMonFootprint_Azurill,
- gMonFootprint_Spoink,
- gMonFootprint_Grumpig,
- gMonFootprint_Plusle,
- gMonFootprint_Minun,
- gMonFootprint_Mawile,
- gMonFootprint_Meditite,
- gMonFootprint_Medicham,
- gMonFootprint_Swablu,
- gMonFootprint_Altaria,
- gMonFootprint_Wynaut,
- gMonFootprint_Duskull,
- gMonFootprint_Dusclops,
- gMonFootprint_Roselia,
- gMonFootprint_Slakoth,
- gMonFootprint_Vigoroth,
- gMonFootprint_Slaking,
- gMonFootprint_Gulpin,
- gMonFootprint_Swalot,
- gMonFootprint_Tropius,
- gMonFootprint_Whismur,
- gMonFootprint_Loudred,
- gMonFootprint_Exploud,
- gMonFootprint_Clamperl,
- gMonFootprint_Huntail,
- gMonFootprint_Gorebyss,
- gMonFootprint_Absol,
- gMonFootprint_Shuppet,
- gMonFootprint_Banette,
- gMonFootprint_Seviper,
- gMonFootprint_Zangoose,
- gMonFootprint_Relicanth,
- gMonFootprint_Aron,
- gMonFootprint_Lairon,
- gMonFootprint_Aggron,
- gMonFootprint_Castform,
- gMonFootprint_Volbeat,
- gMonFootprint_Illumise,
- gMonFootprint_Lileep,
- gMonFootprint_Cradily,
- gMonFootprint_Anorith,
- gMonFootprint_Armaldo,
- gMonFootprint_Ralts,
- gMonFootprint_Kirlia,
- gMonFootprint_Gardevoir,
- gMonFootprint_Bagon,
- gMonFootprint_Shelgon,
- gMonFootprint_Salamence,
- gMonFootprint_Beldum,
- gMonFootprint_Metang,
- gMonFootprint_Metagross,
- gMonFootprint_Regirock,
- gMonFootprint_Regice,
- gMonFootprint_Registeel,
- gMonFootprint_Kyogre,
- gMonFootprint_Groudon,
- gMonFootprint_Rayquaza,
- gMonFootprint_Latias,
- gMonFootprint_Latios,
- gMonFootprint_Jirachi,
- gMonFootprint_Deoxys,
- gMonFootprint_Chimecho,
- gMonFootprint_Bulbasaur,
+ [SPECIES_NONE] = gMonFootprint_Bulbasaur,
+ [SPECIES_BULBASAUR] = gMonFootprint_Bulbasaur,
+ [SPECIES_IVYSAUR] = gMonFootprint_Ivysaur,
+ [SPECIES_VENUSAUR] = gMonFootprint_Venusaur,
+ [SPECIES_CHARMANDER] = gMonFootprint_Charmander,
+ [SPECIES_CHARMELEON] = gMonFootprint_Charmeleon,
+ [SPECIES_CHARIZARD] = gMonFootprint_Charizard,
+ [SPECIES_SQUIRTLE] = gMonFootprint_Squirtle,
+ [SPECIES_WARTORTLE] = gMonFootprint_Wartortle,
+ [SPECIES_BLASTOISE] = gMonFootprint_Blastoise,
+ [SPECIES_CATERPIE] = gMonFootprint_Caterpie,
+ [SPECIES_METAPOD] = gMonFootprint_Metapod,
+ [SPECIES_BUTTERFREE] = gMonFootprint_Butterfree,
+ [SPECIES_WEEDLE] = gMonFootprint_Weedle,
+ [SPECIES_KAKUNA] = gMonFootprint_Kakuna,
+ [SPECIES_BEEDRILL] = gMonFootprint_Beedrill,
+ [SPECIES_PIDGEY] = gMonFootprint_Pidgey,
+ [SPECIES_PIDGEOTTO] = gMonFootprint_Pidgeotto,
+ [SPECIES_PIDGEOT] = gMonFootprint_Pidgeot,
+ [SPECIES_RATTATA] = gMonFootprint_Rattata,
+ [SPECIES_RATICATE] = gMonFootprint_Raticate,
+ [SPECIES_SPEAROW] = gMonFootprint_Spearow,
+ [SPECIES_FEAROW] = gMonFootprint_Fearow,
+ [SPECIES_EKANS] = gMonFootprint_Ekans,
+ [SPECIES_ARBOK] = gMonFootprint_Arbok,
+ [SPECIES_PIKACHU] = gMonFootprint_Pikachu,
+ [SPECIES_RAICHU] = gMonFootprint_Raichu,
+ [SPECIES_SANDSHREW] = gMonFootprint_Sandshrew,
+ [SPECIES_SANDSLASH] = gMonFootprint_Sandslash,
+ [SPECIES_NIDORAN_F] = gMonFootprint_NidoranF,
+ [SPECIES_NIDORINA] = gMonFootprint_Nidorina,
+ [SPECIES_NIDOQUEEN] = gMonFootprint_Nidoqueen,
+ [SPECIES_NIDORAN_M] = gMonFootprint_NidoranM,
+ [SPECIES_NIDORINO] = gMonFootprint_Nidorino,
+ [SPECIES_NIDOKING] = gMonFootprint_Nidoking,
+ [SPECIES_CLEFAIRY] = gMonFootprint_Clefairy,
+ [SPECIES_CLEFABLE] = gMonFootprint_Clefable,
+ [SPECIES_VULPIX] = gMonFootprint_Vulpix,
+ [SPECIES_NINETALES] = gMonFootprint_Ninetales,
+ [SPECIES_JIGGLYPUFF] = gMonFootprint_Jigglypuff,
+ [SPECIES_WIGGLYTUFF] = gMonFootprint_Wigglytuff,
+ [SPECIES_ZUBAT] = gMonFootprint_Zubat,
+ [SPECIES_GOLBAT] = gMonFootprint_Golbat,
+ [SPECIES_ODDISH] = gMonFootprint_Oddish,
+ [SPECIES_GLOOM] = gMonFootprint_Gloom,
+ [SPECIES_VILEPLUME] = gMonFootprint_Vileplume,
+ [SPECIES_PARAS] = gMonFootprint_Paras,
+ [SPECIES_PARASECT] = gMonFootprint_Parasect,
+ [SPECIES_VENONAT] = gMonFootprint_Venonat,
+ [SPECIES_VENOMOTH] = gMonFootprint_Venomoth,
+ [SPECIES_DIGLETT] = gMonFootprint_Diglett,
+ [SPECIES_DUGTRIO] = gMonFootprint_Dugtrio,
+ [SPECIES_MEOWTH] = gMonFootprint_Meowth,
+ [SPECIES_PERSIAN] = gMonFootprint_Persian,
+ [SPECIES_PSYDUCK] = gMonFootprint_Psyduck,
+ [SPECIES_GOLDUCK] = gMonFootprint_Golduck,
+ [SPECIES_MANKEY] = gMonFootprint_Mankey,
+ [SPECIES_PRIMEAPE] = gMonFootprint_Primeape,
+ [SPECIES_GROWLITHE] = gMonFootprint_Growlithe,
+ [SPECIES_ARCANINE] = gMonFootprint_Arcanine,
+ [SPECIES_POLIWAG] = gMonFootprint_Poliwag,
+ [SPECIES_POLIWHIRL] = gMonFootprint_Poliwhirl,
+ [SPECIES_POLIWRATH] = gMonFootprint_Poliwrath,
+ [SPECIES_ABRA] = gMonFootprint_Abra,
+ [SPECIES_KADABRA] = gMonFootprint_Kadabra,
+ [SPECIES_ALAKAZAM] = gMonFootprint_Alakazam,
+ [SPECIES_MACHOP] = gMonFootprint_Machop,
+ [SPECIES_MACHOKE] = gMonFootprint_Machoke,
+ [SPECIES_MACHAMP] = gMonFootprint_Machamp,
+ [SPECIES_BELLSPROUT] = gMonFootprint_Bellsprout,
+ [SPECIES_WEEPINBELL] = gMonFootprint_Weepinbell,
+ [SPECIES_VICTREEBEL] = gMonFootprint_Victreebel,
+ [SPECIES_TENTACOOL] = gMonFootprint_Tentacool,
+ [SPECIES_TENTACRUEL] = gMonFootprint_Tentacruel,
+ [SPECIES_GEODUDE] = gMonFootprint_Geodude,
+ [SPECIES_GRAVELER] = gMonFootprint_Graveler,
+ [SPECIES_GOLEM] = gMonFootprint_Golem,
+ [SPECIES_PONYTA] = gMonFootprint_Ponyta,
+ [SPECIES_RAPIDASH] = gMonFootprint_Rapidash,
+ [SPECIES_SLOWPOKE] = gMonFootprint_Slowpoke,
+ [SPECIES_SLOWBRO] = gMonFootprint_Slowbro,
+ [SPECIES_MAGNEMITE] = gMonFootprint_Magnemite,
+ [SPECIES_MAGNETON] = gMonFootprint_Magneton,
+ [SPECIES_FARFETCHD] = gMonFootprint_Farfetchd,
+ [SPECIES_DODUO] = gMonFootprint_Doduo,
+ [SPECIES_DODRIO] = gMonFootprint_Dodrio,
+ [SPECIES_SEEL] = gMonFootprint_Seel,
+ [SPECIES_DEWGONG] = gMonFootprint_Dewgong,
+ [SPECIES_GRIMER] = gMonFootprint_Grimer,
+ [SPECIES_MUK] = gMonFootprint_Muk,
+ [SPECIES_SHELLDER] = gMonFootprint_Shellder,
+ [SPECIES_CLOYSTER] = gMonFootprint_Cloyster,
+ [SPECIES_GASTLY] = gMonFootprint_Gastly,
+ [SPECIES_HAUNTER] = gMonFootprint_Haunter,
+ [SPECIES_GENGAR] = gMonFootprint_Gengar,
+ [SPECIES_ONIX] = gMonFootprint_Onix,
+ [SPECIES_DROWZEE] = gMonFootprint_Drowzee,
+ [SPECIES_HYPNO] = gMonFootprint_Hypno,
+ [SPECIES_KRABBY] = gMonFootprint_Krabby,
+ [SPECIES_KINGLER] = gMonFootprint_Kingler,
+ [SPECIES_VOLTORB] = gMonFootprint_Voltorb,
+ [SPECIES_ELECTRODE] = gMonFootprint_Electrode,
+ [SPECIES_EXEGGCUTE] = gMonFootprint_Exeggcute,
+ [SPECIES_EXEGGUTOR] = gMonFootprint_Exeggutor,
+ [SPECIES_CUBONE] = gMonFootprint_Cubone,
+ [SPECIES_MAROWAK] = gMonFootprint_Marowak,
+ [SPECIES_HITMONLEE] = gMonFootprint_Hitmonlee,
+ [SPECIES_HITMONCHAN] = gMonFootprint_Hitmonchan,
+ [SPECIES_LICKITUNG] = gMonFootprint_Lickitung,
+ [SPECIES_KOFFING] = gMonFootprint_Koffing,
+ [SPECIES_WEEZING] = gMonFootprint_Weezing,
+ [SPECIES_RHYHORN] = gMonFootprint_Rhyhorn,
+ [SPECIES_RHYDON] = gMonFootprint_Rhydon,
+ [SPECIES_CHANSEY] = gMonFootprint_Chansey,
+ [SPECIES_TANGELA] = gMonFootprint_Tangela,
+ [SPECIES_KANGASKHAN] = gMonFootprint_Kangaskhan,
+ [SPECIES_HORSEA] = gMonFootprint_Horsea,
+ [SPECIES_SEADRA] = gMonFootprint_Seadra,
+ [SPECIES_GOLDEEN] = gMonFootprint_Goldeen,
+ [SPECIES_SEAKING] = gMonFootprint_Seaking,
+ [SPECIES_STARYU] = gMonFootprint_Staryu,
+ [SPECIES_STARMIE] = gMonFootprint_Starmie,
+ [SPECIES_MR_MIME] = gMonFootprint_Mrmime,
+ [SPECIES_SCYTHER] = gMonFootprint_Scyther,
+ [SPECIES_JYNX] = gMonFootprint_Jynx,
+ [SPECIES_ELECTABUZZ] = gMonFootprint_Electabuzz,
+ [SPECIES_MAGMAR] = gMonFootprint_Magmar,
+ [SPECIES_PINSIR] = gMonFootprint_Pinsir,
+ [SPECIES_TAUROS] = gMonFootprint_Tauros,
+ [SPECIES_MAGIKARP] = gMonFootprint_Magikarp,
+ [SPECIES_GYARADOS] = gMonFootprint_Gyarados,
+ [SPECIES_LAPRAS] = gMonFootprint_Lapras,
+ [SPECIES_DITTO] = gMonFootprint_Ditto,
+ [SPECIES_EEVEE] = gMonFootprint_Eevee,
+ [SPECIES_VAPOREON] = gMonFootprint_Vaporeon,
+ [SPECIES_JOLTEON] = gMonFootprint_Jolteon,
+ [SPECIES_FLAREON] = gMonFootprint_Flareon,
+ [SPECIES_PORYGON] = gMonFootprint_Porygon,
+ [SPECIES_OMANYTE] = gMonFootprint_Omanyte,
+ [SPECIES_OMASTAR] = gMonFootprint_Omastar,
+ [SPECIES_KABUTO] = gMonFootprint_Kabuto,
+ [SPECIES_KABUTOPS] = gMonFootprint_Kabutops,
+ [SPECIES_AERODACTYL] = gMonFootprint_Aerodactyl,
+ [SPECIES_SNORLAX] = gMonFootprint_Snorlax,
+ [SPECIES_ARTICUNO] = gMonFootprint_Articuno,
+ [SPECIES_ZAPDOS] = gMonFootprint_Zapdos,
+ [SPECIES_MOLTRES] = gMonFootprint_Moltres,
+ [SPECIES_DRATINI] = gMonFootprint_Dratini,
+ [SPECIES_DRAGONAIR] = gMonFootprint_Dragonair,
+ [SPECIES_DRAGONITE] = gMonFootprint_Dragonite,
+ [SPECIES_MEWTWO] = gMonFootprint_Mewtwo,
+ [SPECIES_MEW] = gMonFootprint_Mew,
+ [SPECIES_CHIKORITA] = gMonFootprint_Chikorita,
+ [SPECIES_BAYLEEF] = gMonFootprint_Bayleef,
+ [SPECIES_MEGANIUM] = gMonFootprint_Meganium,
+ [SPECIES_CYNDAQUIL] = gMonFootprint_Cyndaquil,
+ [SPECIES_QUILAVA] = gMonFootprint_Quilava,
+ [SPECIES_TYPHLOSION] = gMonFootprint_Typhlosion,
+ [SPECIES_TOTODILE] = gMonFootprint_Totodile,
+ [SPECIES_CROCONAW] = gMonFootprint_Croconaw,
+ [SPECIES_FERALIGATR] = gMonFootprint_Feraligatr,
+ [SPECIES_SENTRET] = gMonFootprint_Sentret,
+ [SPECIES_FURRET] = gMonFootprint_Furret,
+ [SPECIES_HOOTHOOT] = gMonFootprint_Hoothoot,
+ [SPECIES_NOCTOWL] = gMonFootprint_Noctowl,
+ [SPECIES_LEDYBA] = gMonFootprint_Ledyba,
+ [SPECIES_LEDIAN] = gMonFootprint_Ledian,
+ [SPECIES_SPINARAK] = gMonFootprint_Spinarak,
+ [SPECIES_ARIADOS] = gMonFootprint_Ariados,
+ [SPECIES_CROBAT] = gMonFootprint_Crobat,
+ [SPECIES_CHINCHOU] = gMonFootprint_Chinchou,
+ [SPECIES_LANTURN] = gMonFootprint_Lanturn,
+ [SPECIES_PICHU] = gMonFootprint_Pichu,
+ [SPECIES_CLEFFA] = gMonFootprint_Cleffa,
+ [SPECIES_IGGLYBUFF] = gMonFootprint_Igglybuff,
+ [SPECIES_TOGEPI] = gMonFootprint_Togepi,
+ [SPECIES_TOGETIC] = gMonFootprint_Togetic,
+ [SPECIES_NATU] = gMonFootprint_Natu,
+ [SPECIES_XATU] = gMonFootprint_Xatu,
+ [SPECIES_MAREEP] = gMonFootprint_Mareep,
+ [SPECIES_FLAAFFY] = gMonFootprint_Flaaffy,
+ [SPECIES_AMPHAROS] = gMonFootprint_Ampharos,
+ [SPECIES_BELLOSSOM] = gMonFootprint_Bellossom,
+ [SPECIES_MARILL] = gMonFootprint_Marill,
+ [SPECIES_AZUMARILL] = gMonFootprint_Azumarill,
+ [SPECIES_SUDOWOODO] = gMonFootprint_Sudowoodo,
+ [SPECIES_POLITOED] = gMonFootprint_Politoed,
+ [SPECIES_HOPPIP] = gMonFootprint_Hoppip,
+ [SPECIES_SKIPLOOM] = gMonFootprint_Skiploom,
+ [SPECIES_JUMPLUFF] = gMonFootprint_Jumpluff,
+ [SPECIES_AIPOM] = gMonFootprint_Aipom,
+ [SPECIES_SUNKERN] = gMonFootprint_Sunkern,
+ [SPECIES_SUNFLORA] = gMonFootprint_Sunflora,
+ [SPECIES_YANMA] = gMonFootprint_Yanma,
+ [SPECIES_WOOPER] = gMonFootprint_Wooper,
+ [SPECIES_QUAGSIRE] = gMonFootprint_Quagsire,
+ [SPECIES_ESPEON] = gMonFootprint_Espeon,
+ [SPECIES_UMBREON] = gMonFootprint_Umbreon,
+ [SPECIES_MURKROW] = gMonFootprint_Murkrow,
+ [SPECIES_SLOWKING] = gMonFootprint_Slowking,
+ [SPECIES_MISDREAVUS] = gMonFootprint_Misdreavus,
+ [SPECIES_UNOWN] = gMonFootprint_Unown,
+ [SPECIES_WOBBUFFET] = gMonFootprint_Wobbuffet,
+ [SPECIES_GIRAFARIG] = gMonFootprint_Girafarig,
+ [SPECIES_PINECO] = gMonFootprint_Pineco,
+ [SPECIES_FORRETRESS] = gMonFootprint_Forretress,
+ [SPECIES_DUNSPARCE] = gMonFootprint_Dunsparce,
+ [SPECIES_GLIGAR] = gMonFootprint_Gligar,
+ [SPECIES_STEELIX] = gMonFootprint_Steelix,
+ [SPECIES_SNUBBULL] = gMonFootprint_Snubbull,
+ [SPECIES_GRANBULL] = gMonFootprint_Granbull,
+ [SPECIES_QWILFISH] = gMonFootprint_Qwilfish,
+ [SPECIES_SCIZOR] = gMonFootprint_Scizor,
+ [SPECIES_SHUCKLE] = gMonFootprint_Shuckle,
+ [SPECIES_HERACROSS] = gMonFootprint_Heracross,
+ [SPECIES_SNEASEL] = gMonFootprint_Sneasel,
+ [SPECIES_TEDDIURSA] = gMonFootprint_Teddiursa,
+ [SPECIES_URSARING] = gMonFootprint_Ursaring,
+ [SPECIES_SLUGMA] = gMonFootprint_Slugma,
+ [SPECIES_MAGCARGO] = gMonFootprint_Magcargo,
+ [SPECIES_SWINUB] = gMonFootprint_Swinub,
+ [SPECIES_PILOSWINE] = gMonFootprint_Piloswine,
+ [SPECIES_CORSOLA] = gMonFootprint_Corsola,
+ [SPECIES_REMORAID] = gMonFootprint_Remoraid,
+ [SPECIES_OCTILLERY] = gMonFootprint_Octillery,
+ [SPECIES_DELIBIRD] = gMonFootprint_Delibird,
+ [SPECIES_MANTINE] = gMonFootprint_Mantine,
+ [SPECIES_SKARMORY] = gMonFootprint_Skarmory,
+ [SPECIES_HOUNDOUR] = gMonFootprint_Houndour,
+ [SPECIES_HOUNDOOM] = gMonFootprint_Houndoom,
+ [SPECIES_KINGDRA] = gMonFootprint_Kingdra,
+ [SPECIES_PHANPY] = gMonFootprint_Phanpy,
+ [SPECIES_DONPHAN] = gMonFootprint_Donphan,
+ [SPECIES_PORYGON2] = gMonFootprint_Porygon2,
+ [SPECIES_STANTLER] = gMonFootprint_Stantler,
+ [SPECIES_SMEARGLE] = gMonFootprint_Smeargle,
+ [SPECIES_TYROGUE] = gMonFootprint_Tyrogue,
+ [SPECIES_HITMONTOP] = gMonFootprint_Hitmontop,
+ [SPECIES_SMOOCHUM] = gMonFootprint_Smoochum,
+ [SPECIES_ELEKID] = gMonFootprint_Elekid,
+ [SPECIES_MAGBY] = gMonFootprint_Magby,
+ [SPECIES_MILTANK] = gMonFootprint_Miltank,
+ [SPECIES_BLISSEY] = gMonFootprint_Blissey,
+ [SPECIES_RAIKOU] = gMonFootprint_Raikou,
+ [SPECIES_ENTEI] = gMonFootprint_Entei,
+ [SPECIES_SUICUNE] = gMonFootprint_Suicune,
+ [SPECIES_LARVITAR] = gMonFootprint_Larvitar,
+ [SPECIES_PUPITAR] = gMonFootprint_Pupitar,
+ [SPECIES_TYRANITAR] = gMonFootprint_Tyranitar,
+ [SPECIES_LUGIA] = gMonFootprint_Lugia,
+ [SPECIES_HO_OH] = gMonFootprint_HoOh,
+ [SPECIES_CELEBI] = gMonFootprint_Celebi,
+ [SPECIES_OLD_UNOWN_B] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_C] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_D] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_E] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_F] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_G] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_H] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_I] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_J] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_K] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_L] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_M] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_N] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_O] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_P] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_Q] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_R] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_S] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_T] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_U] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_V] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_W] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_X] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_Y] = gMonFootprint_QuestionMark,
+ [SPECIES_OLD_UNOWN_Z] = gMonFootprint_QuestionMark,
+ [SPECIES_TREECKO] = gMonFootprint_Treecko,
+ [SPECIES_GROVYLE] = gMonFootprint_Grovyle,
+ [SPECIES_SCEPTILE] = gMonFootprint_Sceptile,
+ [SPECIES_TORCHIC] = gMonFootprint_Torchic,
+ [SPECIES_COMBUSKEN] = gMonFootprint_Combusken,
+ [SPECIES_BLAZIKEN] = gMonFootprint_Blaziken,
+ [SPECIES_MUDKIP] = gMonFootprint_Mudkip,
+ [SPECIES_MARSHTOMP] = gMonFootprint_Marshtomp,
+ [SPECIES_SWAMPERT] = gMonFootprint_Swampert,
+ [SPECIES_POOCHYENA] = gMonFootprint_Poochyena,
+ [SPECIES_MIGHTYENA] = gMonFootprint_Mightyena,
+ [SPECIES_ZIGZAGOON] = gMonFootprint_Zigzagoon,
+ [SPECIES_LINOONE] = gMonFootprint_Linoone,
+ [SPECIES_WURMPLE] = gMonFootprint_Wurmple,
+ [SPECIES_SILCOON] = gMonFootprint_Silcoon,
+ [SPECIES_BEAUTIFLY] = gMonFootprint_Beautifly,
+ [SPECIES_CASCOON] = gMonFootprint_Cascoon,
+ [SPECIES_DUSTOX] = gMonFootprint_Dustox,
+ [SPECIES_LOTAD] = gMonFootprint_Lotad,
+ [SPECIES_LOMBRE] = gMonFootprint_Lombre,
+ [SPECIES_LUDICOLO] = gMonFootprint_Ludicolo,
+ [SPECIES_SEEDOT] = gMonFootprint_Seedot,
+ [SPECIES_NUZLEAF] = gMonFootprint_Nuzleaf,
+ [SPECIES_SHIFTRY] = gMonFootprint_Shiftry,
+ [SPECIES_NINCADA] = gMonFootprint_Nincada,
+ [SPECIES_NINJASK] = gMonFootprint_Ninjask,
+ [SPECIES_SHEDINJA] = gMonFootprint_Shedinja,
+ [SPECIES_TAILLOW] = gMonFootprint_Taillow,
+ [SPECIES_SWELLOW] = gMonFootprint_Swellow,
+ [SPECIES_SHROOMISH] = gMonFootprint_Shroomish,
+ [SPECIES_BRELOOM] = gMonFootprint_Breloom,
+ [SPECIES_SPINDA] = gMonFootprint_Spinda,
+ [SPECIES_WINGULL] = gMonFootprint_Wingull,
+ [SPECIES_PELIPPER] = gMonFootprint_Pelipper,
+ [SPECIES_SURSKIT] = gMonFootprint_Surskit,
+ [SPECIES_MASQUERAIN] = gMonFootprint_Masquerain,
+ [SPECIES_WAILMER] = gMonFootprint_Wailmer,
+ [SPECIES_WAILORD] = gMonFootprint_Wailord,
+ [SPECIES_SKITTY] = gMonFootprint_Skitty,
+ [SPECIES_DELCATTY] = gMonFootprint_Delcatty,
+ [SPECIES_KECLEON] = gMonFootprint_Kecleon,
+ [SPECIES_BALTOY] = gMonFootprint_Baltoy,
+ [SPECIES_CLAYDOL] = gMonFootprint_Claydol,
+ [SPECIES_NOSEPASS] = gMonFootprint_Nosepass,
+ [SPECIES_TORKOAL] = gMonFootprint_Torkoal,
+ [SPECIES_SABLEYE] = gMonFootprint_Sableye,
+ [SPECIES_BARBOACH] = gMonFootprint_Barboach,
+ [SPECIES_WHISCASH] = gMonFootprint_Whiscash,
+ [SPECIES_LUVDISC] = gMonFootprint_Luvdisc,
+ [SPECIES_CORPHISH] = gMonFootprint_Corphish,
+ [SPECIES_CRAWDAUNT] = gMonFootprint_Crawdaunt,
+ [SPECIES_FEEBAS] = gMonFootprint_Feebas,
+ [SPECIES_MILOTIC] = gMonFootprint_Milotic,
+ [SPECIES_CARVANHA] = gMonFootprint_Carvanha,
+ [SPECIES_SHARPEDO] = gMonFootprint_Sharpedo,
+ [SPECIES_TRAPINCH] = gMonFootprint_Trapinch,
+ [SPECIES_VIBRAVA] = gMonFootprint_Vibrava,
+ [SPECIES_FLYGON] = gMonFootprint_Flygon,
+ [SPECIES_MAKUHITA] = gMonFootprint_Makuhita,
+ [SPECIES_HARIYAMA] = gMonFootprint_Hariyama,
+ [SPECIES_ELECTRIKE] = gMonFootprint_Electrike,
+ [SPECIES_MANECTRIC] = gMonFootprint_Manectric,
+ [SPECIES_NUMEL] = gMonFootprint_Numel,
+ [SPECIES_CAMERUPT] = gMonFootprint_Camerupt,
+ [SPECIES_SPHEAL] = gMonFootprint_Spheal,
+ [SPECIES_SEALEO] = gMonFootprint_Sealeo,
+ [SPECIES_WALREIN] = gMonFootprint_Walrein,
+ [SPECIES_CACNEA] = gMonFootprint_Cacnea,
+ [SPECIES_CACTURNE] = gMonFootprint_Cacturne,
+ [SPECIES_SNORUNT] = gMonFootprint_Snorunt,
+ [SPECIES_GLALIE] = gMonFootprint_Glalie,
+ [SPECIES_LUNATONE] = gMonFootprint_Lunatone,
+ [SPECIES_SOLROCK] = gMonFootprint_Solrock,
+ [SPECIES_AZURILL] = gMonFootprint_Azurill,
+ [SPECIES_SPOINK] = gMonFootprint_Spoink,
+ [SPECIES_GRUMPIG] = gMonFootprint_Grumpig,
+ [SPECIES_PLUSLE] = gMonFootprint_Plusle,
+ [SPECIES_MINUN] = gMonFootprint_Minun,
+ [SPECIES_MAWILE] = gMonFootprint_Mawile,
+ [SPECIES_MEDITITE] = gMonFootprint_Meditite,
+ [SPECIES_MEDICHAM] = gMonFootprint_Medicham,
+ [SPECIES_SWABLU] = gMonFootprint_Swablu,
+ [SPECIES_ALTARIA] = gMonFootprint_Altaria,
+ [SPECIES_WYNAUT] = gMonFootprint_Wynaut,
+ [SPECIES_DUSKULL] = gMonFootprint_Duskull,
+ [SPECIES_DUSCLOPS] = gMonFootprint_Dusclops,
+ [SPECIES_ROSELIA] = gMonFootprint_Roselia,
+ [SPECIES_SLAKOTH] = gMonFootprint_Slakoth,
+ [SPECIES_VIGOROTH] = gMonFootprint_Vigoroth,
+ [SPECIES_SLAKING] = gMonFootprint_Slaking,
+ [SPECIES_GULPIN] = gMonFootprint_Gulpin,
+ [SPECIES_SWALOT] = gMonFootprint_Swalot,
+ [SPECIES_TROPIUS] = gMonFootprint_Tropius,
+ [SPECIES_WHISMUR] = gMonFootprint_Whismur,
+ [SPECIES_LOUDRED] = gMonFootprint_Loudred,
+ [SPECIES_EXPLOUD] = gMonFootprint_Exploud,
+ [SPECIES_CLAMPERL] = gMonFootprint_Clamperl,
+ [SPECIES_HUNTAIL] = gMonFootprint_Huntail,
+ [SPECIES_GOREBYSS] = gMonFootprint_Gorebyss,
+ [SPECIES_ABSOL] = gMonFootprint_Absol,
+ [SPECIES_SHUPPET] = gMonFootprint_Shuppet,
+ [SPECIES_BANETTE] = gMonFootprint_Banette,
+ [SPECIES_SEVIPER] = gMonFootprint_Seviper,
+ [SPECIES_ZANGOOSE] = gMonFootprint_Zangoose,
+ [SPECIES_RELICANTH] = gMonFootprint_Relicanth,
+ [SPECIES_ARON] = gMonFootprint_Aron,
+ [SPECIES_LAIRON] = gMonFootprint_Lairon,
+ [SPECIES_AGGRON] = gMonFootprint_Aggron,
+ [SPECIES_CASTFORM] = gMonFootprint_Castform,
+ [SPECIES_VOLBEAT] = gMonFootprint_Volbeat,
+ [SPECIES_ILLUMISE] = gMonFootprint_Illumise,
+ [SPECIES_LILEEP] = gMonFootprint_Lileep,
+ [SPECIES_CRADILY] = gMonFootprint_Cradily,
+ [SPECIES_ANORITH] = gMonFootprint_Anorith,
+ [SPECIES_ARMALDO] = gMonFootprint_Armaldo,
+ [SPECIES_RALTS] = gMonFootprint_Ralts,
+ [SPECIES_KIRLIA] = gMonFootprint_Kirlia,
+ [SPECIES_GARDEVOIR] = gMonFootprint_Gardevoir,
+ [SPECIES_BAGON] = gMonFootprint_Bagon,
+ [SPECIES_SHELGON] = gMonFootprint_Shelgon,
+ [SPECIES_SALAMENCE] = gMonFootprint_Salamence,
+ [SPECIES_BELDUM] = gMonFootprint_Beldum,
+ [SPECIES_METANG] = gMonFootprint_Metang,
+ [SPECIES_METAGROSS] = gMonFootprint_Metagross,
+ [SPECIES_REGIROCK] = gMonFootprint_Regirock,
+ [SPECIES_REGICE] = gMonFootprint_Regice,
+ [SPECIES_REGISTEEL] = gMonFootprint_Registeel,
+ [SPECIES_KYOGRE] = gMonFootprint_Kyogre,
+ [SPECIES_GROUDON] = gMonFootprint_Groudon,
+ [SPECIES_RAYQUAZA] = gMonFootprint_Rayquaza,
+ [SPECIES_LATIAS] = gMonFootprint_Latias,
+ [SPECIES_LATIOS] = gMonFootprint_Latios,
+ [SPECIES_JIRACHI] = gMonFootprint_Jirachi,
+ [SPECIES_DEOXYS] = gMonFootprint_Deoxys,
+ [SPECIES_CHIMECHO] = gMonFootprint_Chimecho,
+ [SPECIES_EGG] = gMonFootprint_Bulbasaur,
};
diff --git a/src/data/pokemon_graphics/front_anims.h b/src/data/pokemon_graphics/front_pic_anims.h
index 8a42eb5c9..4c97af1a7 100644
--- a/src/data/pokemon_graphics/front_anims.h
+++ b/src/data/pokemon_graphics/front_pic_anims.h
@@ -1,5 +1,4 @@
-
-const union AnimCmd gAnimCmd_NONE_1[] =
+static const union AnimCmd sAnim_NONE_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -7,7 +6,7 @@ const union AnimCmd gAnimCmd_NONE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_BULBASAUR_1[] =
+static const union AnimCmd sAnim_BULBASAUR_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -15,7 +14,7 @@ const union AnimCmd gAnimCmd_BULBASAUR_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_IVYSAUR_1[] =
+static const union AnimCmd sAnim_IVYSAUR_1[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_FRAME(1, 36),
@@ -23,7 +22,7 @@ const union AnimCmd gAnimCmd_IVYSAUR_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_VENUSAUR_1[] =
+static const union AnimCmd sAnim_VENUSAUR_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 25),
@@ -31,7 +30,7 @@ const union AnimCmd gAnimCmd_VENUSAUR_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CHARMANDER_1[] =
+static const union AnimCmd sAnim_CHARMANDER_1[] =
{
ANIMCMD_FRAME(0, 2),
ANIMCMD_FRAME(1, 46),
@@ -39,7 +38,7 @@ const union AnimCmd gAnimCmd_CHARMANDER_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CHARMELEON_1[] =
+static const union AnimCmd sAnim_CHARMELEON_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 25),
@@ -47,14 +46,14 @@ const union AnimCmd gAnimCmd_CHARMELEON_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CHARIZARD_1[] =
+static const union AnimCmd sAnim_CHARIZARD_1[] =
{
ANIMCMD_FRAME(1, 40),
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SQUIRTLE_1[] =
+static const union AnimCmd sAnim_SQUIRTLE_1[] =
{
ANIMCMD_FRAME(1, 50),
ANIMCMD_FRAME(1, 50),
@@ -62,7 +61,7 @@ const union AnimCmd gAnimCmd_SQUIRTLE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_WARTORTLE_1[] =
+static const union AnimCmd sAnim_WARTORTLE_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 20),
@@ -70,7 +69,7 @@ const union AnimCmd gAnimCmd_WARTORTLE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_BLASTOISE_1[] =
+static const union AnimCmd sAnim_BLASTOISE_1[] =
{
ANIMCMD_FRAME(0, 50),
ANIMCMD_FRAME(1, 25),
@@ -80,7 +79,7 @@ const union AnimCmd gAnimCmd_BLASTOISE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CATERPIE_1[] =
+static const union AnimCmd sAnim_CATERPIE_1[] =
{
ANIMCMD_FRAME(1, 15),
ANIMCMD_FRAME(0, 15),
@@ -93,14 +92,14 @@ const union AnimCmd gAnimCmd_CATERPIE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_METAPOD_1[] =
+static const union AnimCmd sAnim_METAPOD_1[] =
{
ANIMCMD_FRAME(1, 45),
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_BUTTERFREE_1[] =
+static const union AnimCmd sAnim_BUTTERFREE_1[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_FRAME(1, 5),
@@ -118,7 +117,7 @@ const union AnimCmd gAnimCmd_BUTTERFREE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_WEEDLE_1[] =
+static const union AnimCmd sAnim_WEEDLE_1[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_FRAME(1, 15),
@@ -130,7 +129,7 @@ const union AnimCmd gAnimCmd_WEEDLE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_KAKUNA_1[] =
+static const union AnimCmd sAnim_KAKUNA_1[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_FRAME(1, 5),
@@ -146,7 +145,7 @@ const union AnimCmd gAnimCmd_KAKUNA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_BEEDRILL_1[] =
+static const union AnimCmd sAnim_BEEDRILL_1[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_FRAME(1, 35),
@@ -156,7 +155,7 @@ const union AnimCmd gAnimCmd_BEEDRILL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PIDGEY_1[] =
+static const union AnimCmd sAnim_PIDGEY_1[] =
{
ANIMCMD_FRAME(1, 5),
ANIMCMD_FRAME(0, 5),
@@ -173,7 +172,7 @@ const union AnimCmd gAnimCmd_PIDGEY_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PIDGEOTTO_1[] =
+static const union AnimCmd sAnim_PIDGEOTTO_1[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_FRAME(1, 10),
@@ -183,7 +182,7 @@ const union AnimCmd gAnimCmd_PIDGEOTTO_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PIDGEOT_1[] =
+static const union AnimCmd sAnim_PIDGEOT_1[] =
{
ANIMCMD_FRAME(1, 20),
ANIMCMD_FRAME(0, 10),
@@ -193,7 +192,7 @@ const union AnimCmd gAnimCmd_PIDGEOT_1[] =
};
-const union AnimCmd gAnimCmd_RATTATA_1[] =
+static const union AnimCmd sAnim_RATTATA_1[] =
{
ANIMCMD_FRAME(0, 3),
ANIMCMD_FRAME(1, 50),
@@ -202,7 +201,7 @@ const union AnimCmd gAnimCmd_RATTATA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_RATICATE_1[] =
+static const union AnimCmd sAnim_RATICATE_1[] =
{
ANIMCMD_FRAME(1, 5),
ANIMCMD_FRAME(0, 5),
@@ -219,7 +218,7 @@ const union AnimCmd gAnimCmd_RATICATE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SPEAROW_1[] =
+static const union AnimCmd sAnim_SPEAROW_1[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_FRAME(1, 5),
@@ -240,7 +239,7 @@ const union AnimCmd gAnimCmd_SPEAROW_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_FEAROW_1[] =
+static const union AnimCmd sAnim_FEAROW_1[] =
{
ANIMCMD_FRAME(1, 7),
ANIMCMD_FRAME(0, 7),
@@ -253,7 +252,7 @@ const union AnimCmd gAnimCmd_FEAROW_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_EKANS_1[] =
+static const union AnimCmd sAnim_EKANS_1[] =
{
ANIMCMD_FRAME(1, 8),
ANIMCMD_FRAME(0, 8),
@@ -264,7 +263,7 @@ const union AnimCmd gAnimCmd_EKANS_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ARBOK_1[] =
+static const union AnimCmd sAnim_ARBOK_1[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_FRAME(1, 35),
@@ -272,7 +271,7 @@ const union AnimCmd gAnimCmd_ARBOK_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PIKACHU_1[] =
+static const union AnimCmd sAnim_PIKACHU_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 20),
@@ -282,7 +281,7 @@ const union AnimCmd gAnimCmd_PIKACHU_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PIKACHU_2[] =
+static const union AnimCmd sAnim_PIKACHU_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -291,7 +290,7 @@ const union AnimCmd gAnimCmd_PIKACHU_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_RAICHU_1[] =
+static const union AnimCmd sAnim_RAICHU_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 20),
@@ -301,7 +300,7 @@ const union AnimCmd gAnimCmd_RAICHU_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_RAICHU_2[] =
+static const union AnimCmd sAnim_RAICHU_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -310,7 +309,7 @@ const union AnimCmd gAnimCmd_RAICHU_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SANDSHREW_1[] =
+static const union AnimCmd sAnim_SANDSHREW_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -320,7 +319,7 @@ const union AnimCmd gAnimCmd_SANDSHREW_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SANDSHREW_2[] =
+static const union AnimCmd sAnim_SANDSHREW_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -329,7 +328,7 @@ const union AnimCmd gAnimCmd_SANDSHREW_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SANDSLASH_1[] =
+static const union AnimCmd sAnim_SANDSLASH_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -339,7 +338,7 @@ const union AnimCmd gAnimCmd_SANDSLASH_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SANDSLASH_2[] =
+static const union AnimCmd sAnim_SANDSLASH_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -348,7 +347,7 @@ const union AnimCmd gAnimCmd_SANDSLASH_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_NIDORAN_F_1[] =
+static const union AnimCmd sAnim_NIDORAN_F_1[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_FRAME(1, 5),
@@ -362,21 +361,21 @@ const union AnimCmd gAnimCmd_NIDORAN_F_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_NIDORINA_1[] =
+static const union AnimCmd sAnim_NIDORINA_1[] =
{
ANIMCMD_FRAME(1, 40),
ANIMCMD_FRAME(0, 10),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_NIDOQUEEN_1[] =
+static const union AnimCmd sAnim_NIDOQUEEN_1[] =
{
ANIMCMD_FRAME(1, 45),
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_NIDORAN_M_1[] =
+static const union AnimCmd sAnim_NIDORAN_M_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -384,7 +383,7 @@ const union AnimCmd gAnimCmd_NIDORAN_M_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_NIDORINO_1[] =
+static const union AnimCmd sAnim_NIDORINO_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -392,7 +391,7 @@ const union AnimCmd gAnimCmd_NIDORINO_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_NIDOKING_1[] =
+static const union AnimCmd sAnim_NIDOKING_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 15),
@@ -401,7 +400,7 @@ const union AnimCmd gAnimCmd_NIDOKING_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CLEFAIRY_1[] =
+static const union AnimCmd sAnim_CLEFAIRY_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -409,7 +408,7 @@ const union AnimCmd gAnimCmd_CLEFAIRY_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CLEFABLE_1[] =
+static const union AnimCmd sAnim_CLEFABLE_1[] =
{
ANIMCMD_FRAME(1, 27),
ANIMCMD_FRAME(0, 27),
@@ -420,7 +419,7 @@ const union AnimCmd gAnimCmd_CLEFABLE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_VULPIX_1[] =
+static const union AnimCmd sAnim_VULPIX_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 20),
@@ -430,7 +429,7 @@ const union AnimCmd gAnimCmd_VULPIX_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_VULPIX_2[] =
+static const union AnimCmd sAnim_VULPIX_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -439,7 +438,7 @@ const union AnimCmd gAnimCmd_VULPIX_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_NINETALES_1[] =
+static const union AnimCmd sAnim_NINETALES_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 20),
@@ -449,7 +448,7 @@ const union AnimCmd gAnimCmd_NINETALES_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_NINETALES_2[] =
+static const union AnimCmd sAnim_NINETALES_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -458,7 +457,7 @@ const union AnimCmd gAnimCmd_NINETALES_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_JIGGLYPUFF_1[] =
+static const union AnimCmd sAnim_JIGGLYPUFF_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 20),
@@ -468,7 +467,7 @@ const union AnimCmd gAnimCmd_JIGGLYPUFF_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_JIGGLYPUFF_2[] =
+static const union AnimCmd sAnim_JIGGLYPUFF_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -477,7 +476,7 @@ const union AnimCmd gAnimCmd_JIGGLYPUFF_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_WIGGLYTUFF_1[] =
+static const union AnimCmd sAnim_WIGGLYTUFF_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 20),
@@ -487,7 +486,7 @@ const union AnimCmd gAnimCmd_WIGGLYTUFF_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_WIGGLYTUFF_2[] =
+static const union AnimCmd sAnim_WIGGLYTUFF_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -496,7 +495,7 @@ const union AnimCmd gAnimCmd_WIGGLYTUFF_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ZUBAT_1[] =
+static const union AnimCmd sAnim_ZUBAT_1[] =
{
ANIMCMD_FRAME(0, 3),
ANIMCMD_FRAME(1, 3),
@@ -514,7 +513,7 @@ const union AnimCmd gAnimCmd_ZUBAT_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GOLBAT_1[] =
+static const union AnimCmd sAnim_GOLBAT_1[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_FRAME(1, 5),
@@ -538,7 +537,7 @@ const union AnimCmd gAnimCmd_GOLBAT_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ODDISH_1[] =
+static const union AnimCmd sAnim_ODDISH_1[] =
{
ANIMCMD_FRAME(0, 11),
ANIMCMD_FRAME(1, 11),
@@ -550,7 +549,7 @@ const union AnimCmd gAnimCmd_ODDISH_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GLOOM_1[] =
+static const union AnimCmd sAnim_GLOOM_1[] =
{
ANIMCMD_FRAME(0, 21),
ANIMCMD_FRAME(1, 45),
@@ -559,7 +558,7 @@ const union AnimCmd gAnimCmd_GLOOM_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_VILEPLUME_1[] =
+static const union AnimCmd sAnim_VILEPLUME_1[] =
{
ANIMCMD_FRAME(0, 7),
ANIMCMD_FRAME(1, 21),
@@ -569,7 +568,7 @@ const union AnimCmd gAnimCmd_VILEPLUME_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PARAS_1[] =
+static const union AnimCmd sAnim_PARAS_1[] =
{
ANIMCMD_FRAME(1, 5),
ANIMCMD_FRAME(0, 5),
@@ -590,7 +589,7 @@ const union AnimCmd gAnimCmd_PARAS_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PARASECT_1[] =
+static const union AnimCmd sAnim_PARASECT_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -601,7 +600,7 @@ const union AnimCmd gAnimCmd_PARASECT_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_VENONAT_1[] =
+static const union AnimCmd sAnim_VENONAT_1[] =
{
ANIMCMD_FRAME(1, 5),
ANIMCMD_FRAME(0, 5),
@@ -612,7 +611,7 @@ const union AnimCmd gAnimCmd_VENONAT_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_VENOMOTH_1[] =
+static const union AnimCmd sAnim_VENOMOTH_1[] =
{
ANIMCMD_FRAME(1, 4),
ANIMCMD_FRAME(0, 4),
@@ -639,7 +638,7 @@ const union AnimCmd gAnimCmd_VENOMOTH_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_DIGLETT_1[] =
+static const union AnimCmd sAnim_DIGLETT_1[] =
{
ANIMCMD_FRAME(0, 25),
ANIMCMD_FRAME(1, 35),
@@ -647,7 +646,7 @@ const union AnimCmd gAnimCmd_DIGLETT_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_DUGTRIO_1[] =
+static const union AnimCmd sAnim_DUGTRIO_1[] =
{
ANIMCMD_FRAME(1, 35),
ANIMCMD_FRAME(0, 10),
@@ -662,7 +661,7 @@ const union AnimCmd gAnimCmd_DUGTRIO_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MEOWTH_1[] =
+static const union AnimCmd sAnim_MEOWTH_1[] =
{
ANIMCMD_FRAME(1, 8),
ANIMCMD_FRAME(0, 8),
@@ -673,14 +672,14 @@ const union AnimCmd gAnimCmd_MEOWTH_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PERSIAN_1[] =
+static const union AnimCmd sAnim_PERSIAN_1[] =
{
ANIMCMD_FRAME(1, 50),
ANIMCMD_FRAME(0, 20),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PSYDUCK_1[] =
+static const union AnimCmd sAnim_PSYDUCK_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 20),
@@ -690,7 +689,7 @@ const union AnimCmd gAnimCmd_PSYDUCK_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PSYDUCK_2[] =
+static const union AnimCmd sAnim_PSYDUCK_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -699,7 +698,7 @@ const union AnimCmd gAnimCmd_PSYDUCK_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GOLDUCK_1[] =
+static const union AnimCmd sAnim_GOLDUCK_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 20),
@@ -709,7 +708,7 @@ const union AnimCmd gAnimCmd_GOLDUCK_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GOLDUCK_2[] =
+static const union AnimCmd sAnim_GOLDUCK_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -718,7 +717,7 @@ const union AnimCmd gAnimCmd_GOLDUCK_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MANKEY_1[] =
+static const union AnimCmd sAnim_MANKEY_1[] =
{
ANIMCMD_FRAME(1, 5),
ANIMCMD_FRAME(0, 5),
@@ -729,7 +728,7 @@ const union AnimCmd gAnimCmd_MANKEY_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PRIMEAPE_1[] =
+static const union AnimCmd sAnim_PRIMEAPE_1[] =
{
ANIMCMD_FRAME(1, 15),
ANIMCMD_FRAME(0, 15),
@@ -740,7 +739,7 @@ const union AnimCmd gAnimCmd_PRIMEAPE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GROWLITHE_1[] =
+static const union AnimCmd sAnim_GROWLITHE_1[] =
{
ANIMCMD_FRAME(1, 8),
ANIMCMD_FRAME(0, 8),
@@ -751,7 +750,7 @@ const union AnimCmd gAnimCmd_GROWLITHE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ARCANINE_1[] =
+static const union AnimCmd sAnim_ARCANINE_1[] =
{
ANIMCMD_FRAME(1, 8),
ANIMCMD_FRAME(0, 8),
@@ -761,7 +760,7 @@ const union AnimCmd gAnimCmd_ARCANINE_1[] =
ANIMCMD_FRAME(0, 10),
ANIMCMD_END,};
-const union AnimCmd gAnimCmd_POLIWAG_1[] =
+static const union AnimCmd sAnim_POLIWAG_1[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(1, 10),
@@ -769,7 +768,7 @@ const union AnimCmd gAnimCmd_POLIWAG_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_POLIWHIRL_1[] =
+static const union AnimCmd sAnim_POLIWHIRL_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 25),
@@ -779,14 +778,14 @@ const union AnimCmd gAnimCmd_POLIWHIRL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_POLIWRATH_1[] =
+static const union AnimCmd sAnim_POLIWRATH_1[] =
{
ANIMCMD_FRAME(1, 45),
ANIMCMD_FRAME(0, 10),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ABRA_1[] =
+static const union AnimCmd sAnim_ABRA_1[] =
{
ANIMCMD_FRAME(0, 7),
ANIMCMD_FRAME(1, 21),
@@ -796,7 +795,7 @@ const union AnimCmd gAnimCmd_ABRA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_KADABRA_1[] =
+static const union AnimCmd sAnim_KADABRA_1[] =
{
ANIMCMD_FRAME(0, 12),
ANIMCMD_FRAME(1, 45),
@@ -804,7 +803,7 @@ const union AnimCmd gAnimCmd_KADABRA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ALAKAZAM_1[] =
+static const union AnimCmd sAnim_ALAKAZAM_1[] =
{
ANIMCMD_FRAME(0, 9),
ANIMCMD_FRAME(1, 54),
@@ -812,7 +811,7 @@ const union AnimCmd gAnimCmd_ALAKAZAM_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MACHOP_1[] =
+static const union AnimCmd sAnim_MACHOP_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -824,7 +823,7 @@ const union AnimCmd gAnimCmd_MACHOP_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MACHOKE_1[] =
+static const union AnimCmd sAnim_MACHOKE_1[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(1, 44),
@@ -832,7 +831,7 @@ const union AnimCmd gAnimCmd_MACHOKE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MACHAMP_1[] =
+static const union AnimCmd sAnim_MACHAMP_1[] =
{
ANIMCMD_FRAME(0, 11),
ANIMCMD_FRAME(1, 11),
@@ -844,7 +843,7 @@ const union AnimCmd gAnimCmd_MACHAMP_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_BELLSPROUT_1[] =
+static const union AnimCmd sAnim_BELLSPROUT_1[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_FRAME(1, 25),
@@ -852,7 +851,7 @@ const union AnimCmd gAnimCmd_BELLSPROUT_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_WEEPINBELL_1[] =
+static const union AnimCmd sAnim_WEEPINBELL_1[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_FRAME(1, 25),
@@ -864,7 +863,7 @@ const union AnimCmd gAnimCmd_WEEPINBELL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_VICTREEBEL_1[] =
+static const union AnimCmd sAnim_VICTREEBEL_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -876,7 +875,7 @@ const union AnimCmd gAnimCmd_VICTREEBEL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_TENTACOOL_1[] =
+static const union AnimCmd sAnim_TENTACOOL_1[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(1, 15),
@@ -886,7 +885,7 @@ const union AnimCmd gAnimCmd_TENTACOOL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_TENTACRUEL_1[] =
+static const union AnimCmd sAnim_TENTACRUEL_1[] =
{
ANIMCMD_FRAME(0, 19),
ANIMCMD_FRAME(1, 35),
@@ -896,7 +895,7 @@ const union AnimCmd gAnimCmd_TENTACRUEL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GEODUDE_1[] =
+static const union AnimCmd sAnim_GEODUDE_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 36),
@@ -904,7 +903,7 @@ const union AnimCmd gAnimCmd_GEODUDE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GRAVELER_1[] =
+static const union AnimCmd sAnim_GRAVELER_1[] =
{
ANIMCMD_FRAME(0, 16),
ANIMCMD_FRAME(1, 16),
@@ -914,7 +913,7 @@ const union AnimCmd gAnimCmd_GRAVELER_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GOLEM_1[] =
+static const union AnimCmd sAnim_GOLEM_1[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(1, 31),
@@ -924,14 +923,14 @@ const union AnimCmd gAnimCmd_GOLEM_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PONYTA_1[] =
+static const union AnimCmd sAnim_PONYTA_1[] =
{
ANIMCMD_FRAME(1, 45),
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_RAPIDASH_1[] =
+static const union AnimCmd sAnim_RAPIDASH_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 40),
@@ -939,7 +938,7 @@ const union AnimCmd gAnimCmd_RAPIDASH_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SLOWPOKE_1[] =
+static const union AnimCmd sAnim_SLOWPOKE_1[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(1, 50),
@@ -947,7 +946,7 @@ const union AnimCmd gAnimCmd_SLOWPOKE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SLOWBRO_1[] =
+static const union AnimCmd sAnim_SLOWBRO_1[] =
{
ANIMCMD_FRAME(1, 50),
ANIMCMD_FRAME(1, 45),
@@ -955,7 +954,7 @@ const union AnimCmd gAnimCmd_SLOWBRO_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MAGNEMITE_1[] =
+static const union AnimCmd sAnim_MAGNEMITE_1[] =
{
ANIMCMD_FRAME(0, 28),
ANIMCMD_FRAME(1, 28),
@@ -965,7 +964,7 @@ const union AnimCmd gAnimCmd_MAGNEMITE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MAGNETON_1[] =
+static const union AnimCmd sAnim_MAGNETON_1[] =
{
ANIMCMD_FRAME(0, 14),
ANIMCMD_FRAME(1, 14),
@@ -977,7 +976,7 @@ const union AnimCmd gAnimCmd_MAGNETON_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_FARFETCHD_1[] =
+static const union AnimCmd sAnim_FARFETCHD_1[] =
{
ANIMCMD_FRAME(1, 5),
ANIMCMD_FRAME(0, 5),
@@ -994,7 +993,7 @@ const union AnimCmd gAnimCmd_FARFETCHD_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_DODUO_1[] =
+static const union AnimCmd sAnim_DODUO_1[] =
{
ANIMCMD_FRAME(0, 18),
ANIMCMD_FRAME(1, 18),
@@ -1004,7 +1003,7 @@ const union AnimCmd gAnimCmd_DODUO_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_DODRIO_1[] =
+static const union AnimCmd sAnim_DODRIO_1[] =
{
ANIMCMD_FRAME(0, 12),
ANIMCMD_FRAME(1, 12),
@@ -1018,7 +1017,7 @@ const union AnimCmd gAnimCmd_DODRIO_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SEEL_1[] =
+static const union AnimCmd sAnim_SEEL_1[] =
{
ANIMCMD_FRAME(1, 15),
ANIMCMD_FRAME(0, 15),
@@ -1031,7 +1030,7 @@ const union AnimCmd gAnimCmd_SEEL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_DEWGONG_1[] =
+static const union AnimCmd sAnim_DEWGONG_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -1039,7 +1038,7 @@ const union AnimCmd gAnimCmd_DEWGONG_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GRIMER_1[] =
+static const union AnimCmd sAnim_GRIMER_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -1049,7 +1048,7 @@ const union AnimCmd gAnimCmd_GRIMER_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GRIMER_2[] =
+static const union AnimCmd sAnim_GRIMER_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -1058,7 +1057,7 @@ const union AnimCmd gAnimCmd_GRIMER_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MUK_1[] =
+static const union AnimCmd sAnim_MUK_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -1068,7 +1067,7 @@ const union AnimCmd gAnimCmd_MUK_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MUK_2[] =
+static const union AnimCmd sAnim_MUK_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -1077,7 +1076,7 @@ const union AnimCmd gAnimCmd_MUK_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SHELLDER_1[] =
+static const union AnimCmd sAnim_SHELLDER_1[] =
{
ANIMCMD_FRAME(1, 5),
ANIMCMD_FRAME(0, 5),
@@ -1086,7 +1085,7 @@ const union AnimCmd gAnimCmd_SHELLDER_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CLOYSTER_1[] =
+static const union AnimCmd sAnim_CLOYSTER_1[] =
{
ANIMCMD_FRAME(1, 5),
ANIMCMD_FRAME(0, 5),
@@ -1107,7 +1106,7 @@ const union AnimCmd gAnimCmd_CLOYSTER_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GASTLY_1[] =
+static const union AnimCmd sAnim_GASTLY_1[] =
{
ANIMCMD_FRAME(1, 50),
ANIMCMD_FRAME(1, 30),
@@ -1115,7 +1114,7 @@ const union AnimCmd gAnimCmd_GASTLY_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_HAUNTER_1[] =
+static const union AnimCmd sAnim_HAUNTER_1[] =
{
ANIMCMD_FRAME(1, 8),
ANIMCMD_FRAME(0, 15),
@@ -1125,7 +1124,7 @@ const union AnimCmd gAnimCmd_HAUNTER_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GENGAR_1[] =
+static const union AnimCmd sAnim_GENGAR_1[] =
{
ANIMCMD_FRAME(1, 50),
ANIMCMD_FRAME(1, 40),
@@ -1133,7 +1132,7 @@ const union AnimCmd gAnimCmd_GENGAR_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ONIX_1[] =
+static const union AnimCmd sAnim_ONIX_1[] =
{
ANIMCMD_FRAME(1, 50),
ANIMCMD_FRAME(1, 30),
@@ -1141,7 +1140,7 @@ const union AnimCmd gAnimCmd_ONIX_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_DROWZEE_1[] =
+static const union AnimCmd sAnim_DROWZEE_1[] =
{
ANIMCMD_FRAME(1, 12),
ANIMCMD_FRAME(0, 12),
@@ -1152,7 +1151,7 @@ const union AnimCmd gAnimCmd_DROWZEE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_HYPNO_1[] =
+static const union AnimCmd sAnim_HYPNO_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -1164,7 +1163,7 @@ const union AnimCmd gAnimCmd_HYPNO_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_KRABBY_1[] =
+static const union AnimCmd sAnim_KRABBY_1[] =
{
ANIMCMD_FRAME(1, 8),
ANIMCMD_FRAME(0, 8),
@@ -1175,7 +1174,7 @@ const union AnimCmd gAnimCmd_KRABBY_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_KINGLER_1[] =
+static const union AnimCmd sAnim_KINGLER_1[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_FRAME(1, 15),
@@ -1189,7 +1188,7 @@ const union AnimCmd gAnimCmd_KINGLER_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_VOLTORB_1[] =
+static const union AnimCmd sAnim_VOLTORB_1[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(1, 25),
@@ -1199,7 +1198,7 @@ const union AnimCmd gAnimCmd_VOLTORB_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ELECTRODE_1[] =
+static const union AnimCmd sAnim_ELECTRODE_1[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(1, 30),
@@ -1209,7 +1208,7 @@ const union AnimCmd gAnimCmd_ELECTRODE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_EXEGGCUTE_1[] =
+static const union AnimCmd sAnim_EXEGGCUTE_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -1223,14 +1222,14 @@ const union AnimCmd gAnimCmd_EXEGGCUTE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_EXEGGUTOR_1[] =
+static const union AnimCmd sAnim_EXEGGUTOR_1[] =
{
ANIMCMD_FRAME(1, 35),
ANIMCMD_FRAME(0, 10),
ANIMCMD_END,};
-const union AnimCmd gAnimCmd_CUBONE_1[] =
+static const union AnimCmd sAnim_CUBONE_1[] =
{
ANIMCMD_FRAME(1, 14),
ANIMCMD_FRAME(0, 14),
@@ -1241,7 +1240,7 @@ const union AnimCmd gAnimCmd_CUBONE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MAROWAK_1[] =
+static const union AnimCmd sAnim_MAROWAK_1[] =
{
ANIMCMD_FRAME(1, 14),
ANIMCMD_FRAME(0, 14),
@@ -1252,14 +1251,14 @@ const union AnimCmd gAnimCmd_MAROWAK_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_HITMONLEE_1[] =
+static const union AnimCmd sAnim_HITMONLEE_1[] =
{
ANIMCMD_FRAME(1, 15),
ANIMCMD_FRAME(0, 20),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_HITMONCHAN_1[] =
+static const union AnimCmd sAnim_HITMONCHAN_1[] =
{
ANIMCMD_FRAME(1, 5),
ANIMCMD_FRAME(0, 5),
@@ -1272,7 +1271,7 @@ const union AnimCmd gAnimCmd_HITMONCHAN_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LICKITUNG_1[] =
+static const union AnimCmd sAnim_LICKITUNG_1[] =
{
ANIMCMD_FRAME(0, 28),
ANIMCMD_FRAME(1, 32),
@@ -1280,7 +1279,7 @@ const union AnimCmd gAnimCmd_LICKITUNG_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_KOFFING_1[] =
+static const union AnimCmd sAnim_KOFFING_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -1290,7 +1289,7 @@ const union AnimCmd gAnimCmd_KOFFING_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_KOFFING_2[] =
+static const union AnimCmd sAnim_KOFFING_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -1299,7 +1298,7 @@ const union AnimCmd gAnimCmd_KOFFING_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_WEEZING_1[] =
+static const union AnimCmd sAnim_WEEZING_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -1309,7 +1308,7 @@ const union AnimCmd gAnimCmd_WEEZING_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_WEEZING_2[] =
+static const union AnimCmd sAnim_WEEZING_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -1318,7 +1317,7 @@ const union AnimCmd gAnimCmd_WEEZING_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_RHYHORN_1[] =
+static const union AnimCmd sAnim_RHYHORN_1[] =
{
ANIMCMD_FRAME(0, 11),
ANIMCMD_FRAME(1, 10),
@@ -1328,7 +1327,7 @@ const union AnimCmd gAnimCmd_RHYHORN_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_RHYHORN_2[] =
+static const union AnimCmd sAnim_RHYHORN_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -1337,7 +1336,7 @@ const union AnimCmd gAnimCmd_RHYHORN_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_RHYDON_1[] =
+static const union AnimCmd sAnim_RHYDON_1[] =
{
ANIMCMD_FRAME(0, 11),
ANIMCMD_FRAME(1, 10),
@@ -1347,7 +1346,7 @@ const union AnimCmd gAnimCmd_RHYDON_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_RHYDON_2[] =
+static const union AnimCmd sAnim_RHYDON_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -1356,7 +1355,7 @@ const union AnimCmd gAnimCmd_RHYDON_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CHANSEY_1[] =
+static const union AnimCmd sAnim_CHANSEY_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -1364,7 +1363,7 @@ const union AnimCmd gAnimCmd_CHANSEY_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_TANGELA_1[] =
+static const union AnimCmd sAnim_TANGELA_1[] =
{
ANIMCMD_FRAME(1, 9),
ANIMCMD_FRAME(0, 9),
@@ -1379,7 +1378,7 @@ const union AnimCmd gAnimCmd_TANGELA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_KANGASKHAN_1[] =
+static const union AnimCmd sAnim_KANGASKHAN_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -1388,7 +1387,7 @@ const union AnimCmd gAnimCmd_KANGASKHAN_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_HORSEA_1[] =
+static const union AnimCmd sAnim_HORSEA_1[] =
{
ANIMCMD_FRAME(0, 11),
ANIMCMD_FRAME(1, 10),
@@ -1398,7 +1397,7 @@ const union AnimCmd gAnimCmd_HORSEA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_HORSEA_2[] =
+static const union AnimCmd sAnim_HORSEA_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -1407,7 +1406,7 @@ const union AnimCmd gAnimCmd_HORSEA_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SEADRA_1[] =
+static const union AnimCmd sAnim_SEADRA_1[] =
{
ANIMCMD_FRAME(0, 11),
ANIMCMD_FRAME(1, 10),
@@ -1417,7 +1416,7 @@ const union AnimCmd gAnimCmd_SEADRA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SEADRA_2[] =
+static const union AnimCmd sAnim_SEADRA_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -1426,7 +1425,7 @@ const union AnimCmd gAnimCmd_SEADRA_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GOLDEEN_1[] =
+static const union AnimCmd sAnim_GOLDEEN_1[] =
{
ANIMCMD_FRAME(0, 16),
ANIMCMD_FRAME(1, 16),
@@ -1440,7 +1439,7 @@ const union AnimCmd gAnimCmd_GOLDEEN_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SEAKING_1[] =
+static const union AnimCmd sAnim_SEAKING_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 20),
@@ -1450,7 +1449,7 @@ const union AnimCmd gAnimCmd_SEAKING_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_STARYU_1[] =
+static const union AnimCmd sAnim_STARYU_1[] =
{
ANIMCMD_FRAME(0, 11),
ANIMCMD_FRAME(1, 10),
@@ -1460,7 +1459,7 @@ const union AnimCmd gAnimCmd_STARYU_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_STARYU_2[] =
+static const union AnimCmd sAnim_STARYU_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -1469,7 +1468,7 @@ const union AnimCmd gAnimCmd_STARYU_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_STARMIE_1[] =
+static const union AnimCmd sAnim_STARMIE_1[] =
{
ANIMCMD_FRAME(0, 11),
ANIMCMD_FRAME(1, 10),
@@ -1479,7 +1478,7 @@ const union AnimCmd gAnimCmd_STARMIE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_STARMIE_2[] =
+static const union AnimCmd sAnim_STARMIE_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -1488,7 +1487,7 @@ const union AnimCmd gAnimCmd_STARMIE_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MR_MIME_1[] =
+static const union AnimCmd sAnim_MR_MIME_1[] =
{
ANIMCMD_FRAME(1, 15),
ANIMCMD_FRAME(0, 15),
@@ -1499,7 +1498,7 @@ const union AnimCmd gAnimCmd_MR_MIME_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SCYTHER_1[] =
+static const union AnimCmd sAnim_SCYTHER_1[] =
{
ANIMCMD_FRAME(1, 5),
ANIMCMD_FRAME(0, 5),
@@ -1512,7 +1511,7 @@ const union AnimCmd gAnimCmd_SCYTHER_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_JYNX_1[] =
+static const union AnimCmd sAnim_JYNX_1[] =
{
ANIMCMD_FRAME(1, 40),
ANIMCMD_FRAME(0, 10),
@@ -1522,7 +1521,7 @@ const union AnimCmd gAnimCmd_JYNX_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ELECTABUZZ_1[] =
+static const union AnimCmd sAnim_ELECTABUZZ_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -1531,14 +1530,14 @@ const union AnimCmd gAnimCmd_ELECTABUZZ_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MAGMAR_1[] =
+static const union AnimCmd sAnim_MAGMAR_1[] =
{
ANIMCMD_FRAME(1, 40),
ANIMCMD_FRAME(0, 10),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PINSIR_1[] =
+static const union AnimCmd sAnim_PINSIR_1[] =
{
ANIMCMD_FRAME(0, 11),
ANIMCMD_FRAME(1, 10),
@@ -1548,7 +1547,7 @@ const union AnimCmd gAnimCmd_PINSIR_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PINSIR_2[] =
+static const union AnimCmd sAnim_PINSIR_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -1557,7 +1556,7 @@ const union AnimCmd gAnimCmd_PINSIR_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_TAUROS_1[] =
+static const union AnimCmd sAnim_TAUROS_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 20),
@@ -1566,7 +1565,7 @@ const union AnimCmd gAnimCmd_TAUROS_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MAGIKARP_1[] =
+static const union AnimCmd sAnim_MAGIKARP_1[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(1, 8),
@@ -1580,7 +1579,7 @@ const union AnimCmd gAnimCmd_MAGIKARP_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GYARADOS_1[] =
+static const union AnimCmd sAnim_GYARADOS_1[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(1, 32),
@@ -1588,14 +1587,14 @@ const union AnimCmd gAnimCmd_GYARADOS_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LAPRAS_1[] =
+static const union AnimCmd sAnim_LAPRAS_1[] =
{
ANIMCMD_FRAME(1, 30),
ANIMCMD_FRAME(0, 10),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_DITTO_1[] =
+static const union AnimCmd sAnim_DITTO_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -1604,35 +1603,35 @@ const union AnimCmd gAnimCmd_DITTO_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_EEVEE_1[] =
+static const union AnimCmd sAnim_EEVEE_1[] =
{
ANIMCMD_FRAME(1, 33),
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_VAPOREON_1[] =
+static const union AnimCmd sAnim_VAPOREON_1[] =
{
ANIMCMD_FRAME(1, 40),
ANIMCMD_FRAME(0, 10),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_JOLTEON_1[] =
+static const union AnimCmd sAnim_JOLTEON_1[] =
{
ANIMCMD_FRAME(1, 15),
ANIMCMD_FRAME(0, 15),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_FLAREON_1[] =
+static const union AnimCmd sAnim_FLAREON_1[] =
{
ANIMCMD_FRAME(1, 30),
ANIMCMD_FRAME(0, 30),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PORYGON_1[] =
+static const union AnimCmd sAnim_PORYGON_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -1641,7 +1640,7 @@ const union AnimCmd gAnimCmd_PORYGON_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_OMANYTE_1[] =
+static const union AnimCmd sAnim_OMANYTE_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -1654,7 +1653,7 @@ const union AnimCmd gAnimCmd_OMANYTE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_OMASTAR_1[] =
+static const union AnimCmd sAnim_OMASTAR_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -1663,7 +1662,7 @@ const union AnimCmd gAnimCmd_OMASTAR_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_KABUTO_1[] =
+static const union AnimCmd sAnim_KABUTO_1[] =
{
ANIMCMD_FRAME(1, 8),
ANIMCMD_FRAME(0, 8),
@@ -1676,7 +1675,7 @@ const union AnimCmd gAnimCmd_KABUTO_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_KABUTOPS_1[] =
+static const union AnimCmd sAnim_KABUTOPS_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -1685,7 +1684,7 @@ const union AnimCmd gAnimCmd_KABUTOPS_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_AERODACTYL_1[] =
+static const union AnimCmd sAnim_AERODACTYL_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 25),
@@ -1694,7 +1693,7 @@ const union AnimCmd gAnimCmd_AERODACTYL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SNORLAX_1[] =
+static const union AnimCmd sAnim_SNORLAX_1[] =
{
ANIMCMD_FRAME(1, 50),
ANIMCMD_FRAME(1, 50),
@@ -1702,7 +1701,7 @@ const union AnimCmd gAnimCmd_SNORLAX_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ARTICUNO_1[] =
+static const union AnimCmd sAnim_ARTICUNO_1[] =
{
ANIMCMD_FRAME(1, 25),
ANIMCMD_FRAME(0, 15),
@@ -1711,7 +1710,7 @@ const union AnimCmd gAnimCmd_ARTICUNO_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ZAPDOS_1[] =
+static const union AnimCmd sAnim_ZAPDOS_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -1720,7 +1719,7 @@ const union AnimCmd gAnimCmd_ZAPDOS_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MOLTRES_1[] =
+static const union AnimCmd sAnim_MOLTRES_1[] =
{
ANIMCMD_FRAME(1, 3),
ANIMCMD_FRAME(0, 3),
@@ -1757,7 +1756,7 @@ const union AnimCmd gAnimCmd_MOLTRES_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_DRATINI_1[] =
+static const union AnimCmd sAnim_DRATINI_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -1765,7 +1764,7 @@ const union AnimCmd gAnimCmd_DRATINI_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_DRAGONAIR_1[] =
+static const union AnimCmd sAnim_DRAGONAIR_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -1774,7 +1773,7 @@ const union AnimCmd gAnimCmd_DRAGONAIR_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_DRAGONITE_1[] =
+static const union AnimCmd sAnim_DRAGONITE_1[] =
{
ANIMCMD_FRAME(1, 50),
ANIMCMD_FRAME(1, 30),
@@ -1782,14 +1781,14 @@ const union AnimCmd gAnimCmd_DRAGONITE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MEWTWO_1[] =
+static const union AnimCmd sAnim_MEWTWO_1[] =
{
ANIMCMD_FRAME(1, 15),
ANIMCMD_FRAME(0, 20),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MEW_1[] =
+static const union AnimCmd sAnim_MEW_1[] =
{
ANIMCMD_FRAME(1, 50),
ANIMCMD_FRAME(1, 40),
@@ -1797,7 +1796,7 @@ const union AnimCmd gAnimCmd_MEW_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CHIKORITA_1[] =
+static const union AnimCmd sAnim_CHIKORITA_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -1805,21 +1804,21 @@ const union AnimCmd gAnimCmd_CHIKORITA_1[] =
ANIMCMD_END,};
-const union AnimCmd gAnimCmd_BAYLEEF_1[] =
+static const union AnimCmd sAnim_BAYLEEF_1[] =
{
ANIMCMD_FRAME(1, 15),
ANIMCMD_FRAME(0, 15),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MEGANIUM_1[] =
+static const union AnimCmd sAnim_MEGANIUM_1[] =
{
ANIMCMD_FRAME(1, 30),
ANIMCMD_FRAME(0, 20),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CYNDAQUIL_1[] =
+static const union AnimCmd sAnim_CYNDAQUIL_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -1828,21 +1827,21 @@ const union AnimCmd gAnimCmd_CYNDAQUIL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_QUILAVA_1[] =
+static const union AnimCmd sAnim_QUILAVA_1[] =
{
ANIMCMD_FRAME(1, 30),
ANIMCMD_FRAME(0, 20),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_TYPHLOSION_1[] =
+static const union AnimCmd sAnim_TYPHLOSION_1[] =
{
ANIMCMD_FRAME(1, 20),
ANIMCMD_FRAME(0, 10),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_TOTODILE_1[] =
+static const union AnimCmd sAnim_TOTODILE_1[] =
{
ANIMCMD_FRAME(1, 8),
ANIMCMD_FRAME(0, 8),
@@ -1853,14 +1852,14 @@ const union AnimCmd gAnimCmd_TOTODILE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CROCONAW_1[] =
+static const union AnimCmd sAnim_CROCONAW_1[] =
{
ANIMCMD_FRAME(1, 40),
ANIMCMD_FRAME(0, 10),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_FERALIGATR_1[] =
+static const union AnimCmd sAnim_FERALIGATR_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -1869,7 +1868,7 @@ const union AnimCmd gAnimCmd_FERALIGATR_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SENTRET_1[] =
+static const union AnimCmd sAnim_SENTRET_1[] =
{
ANIMCMD_FRAME(1, 15),
ANIMCMD_FRAME(0, 15),
@@ -1878,14 +1877,14 @@ const union AnimCmd gAnimCmd_SENTRET_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_FURRET_1[] =
+static const union AnimCmd sAnim_FURRET_1[] =
{
ANIMCMD_FRAME(1, 35),
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_HOOTHOOT_1[] =
+static const union AnimCmd sAnim_HOOTHOOT_1[] =
{
ANIMCMD_FRAME(1, 7),
ANIMCMD_FRAME(0, 7),
@@ -1902,14 +1901,14 @@ const union AnimCmd gAnimCmd_HOOTHOOT_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_NOCTOWL_1[] =
+static const union AnimCmd sAnim_NOCTOWL_1[] =
{
ANIMCMD_FRAME(1, 40),
ANIMCMD_FRAME(0, 20),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LEDYBA_1[] =
+static const union AnimCmd sAnim_LEDYBA_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -1918,7 +1917,7 @@ const union AnimCmd gAnimCmd_LEDYBA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LEDIAN_1[] =
+static const union AnimCmd sAnim_LEDIAN_1[] =
{
ANIMCMD_FRAME(1, 3),
ANIMCMD_FRAME(0, 3),
@@ -1949,7 +1948,7 @@ const union AnimCmd gAnimCmd_LEDIAN_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SPINARAK_1[] =
+static const union AnimCmd sAnim_SPINARAK_1[] =
{
ANIMCMD_FRAME(1, 6),
ANIMCMD_FRAME(0, 6),
@@ -1962,7 +1961,7 @@ const union AnimCmd gAnimCmd_SPINARAK_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ARIADOS_1[] =
+static const union AnimCmd sAnim_ARIADOS_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -1971,7 +1970,7 @@ const union AnimCmd gAnimCmd_ARIADOS_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CROBAT_1[] =
+static const union AnimCmd sAnim_CROBAT_1[] =
{
ANIMCMD_FRAME(0, 2),
ANIMCMD_FRAME(1, 2),
@@ -1993,7 +1992,7 @@ const union AnimCmd gAnimCmd_CROBAT_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CHINCHOU_1[] =
+static const union AnimCmd sAnim_CHINCHOU_1[] =
{
ANIMCMD_FRAME(0, 11),
ANIMCMD_FRAME(1, 10),
@@ -2003,7 +2002,7 @@ const union AnimCmd gAnimCmd_CHINCHOU_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CHINCHOU_2[] =
+static const union AnimCmd sAnim_CHINCHOU_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -2012,7 +2011,7 @@ const union AnimCmd gAnimCmd_CHINCHOU_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LANTURN_1[] =
+static const union AnimCmd sAnim_LANTURN_1[] =
{
ANIMCMD_FRAME(0, 11),
ANIMCMD_FRAME(1, 10),
@@ -2022,7 +2021,7 @@ const union AnimCmd gAnimCmd_LANTURN_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LANTURN_2[] =
+static const union AnimCmd sAnim_LANTURN_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -2031,7 +2030,7 @@ const union AnimCmd gAnimCmd_LANTURN_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PICHU_1[] =
+static const union AnimCmd sAnim_PICHU_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 20),
@@ -2041,7 +2040,7 @@ const union AnimCmd gAnimCmd_PICHU_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PICHU_2[] =
+static const union AnimCmd sAnim_PICHU_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -2050,7 +2049,7 @@ const union AnimCmd gAnimCmd_PICHU_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CLEFFA_1[] =
+static const union AnimCmd sAnim_CLEFFA_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -2059,7 +2058,7 @@ const union AnimCmd gAnimCmd_CLEFFA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_IGGLYBUFF_1[] =
+static const union AnimCmd sAnim_IGGLYBUFF_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 20),
@@ -2069,7 +2068,7 @@ const union AnimCmd gAnimCmd_IGGLYBUFF_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_IGGLYBUFF_2[] =
+static const union AnimCmd sAnim_IGGLYBUFF_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -2078,7 +2077,7 @@ const union AnimCmd gAnimCmd_IGGLYBUFF_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_TOGEPI_1[] =
+static const union AnimCmd sAnim_TOGEPI_1[] =
{
ANIMCMD_FRAME(1, 50),
ANIMCMD_FRAME(1, 50),
@@ -2086,7 +2085,7 @@ const union AnimCmd gAnimCmd_TOGEPI_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_TOGETIC_1[] =
+static const union AnimCmd sAnim_TOGETIC_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -2094,7 +2093,7 @@ const union AnimCmd gAnimCmd_TOGETIC_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_NATU_1[] =
+static const union AnimCmd sAnim_NATU_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 20),
@@ -2104,7 +2103,7 @@ const union AnimCmd gAnimCmd_NATU_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_NATU_2[] =
+static const union AnimCmd sAnim_NATU_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -2113,7 +2112,7 @@ const union AnimCmd gAnimCmd_NATU_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_XATU_1[] =
+static const union AnimCmd sAnim_XATU_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 45),
@@ -2125,7 +2124,7 @@ const union AnimCmd gAnimCmd_XATU_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_XATU_2[] =
+static const union AnimCmd sAnim_XATU_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -2134,7 +2133,7 @@ const union AnimCmd gAnimCmd_XATU_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MAREEP_1[] =
+static const union AnimCmd sAnim_MAREEP_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -2145,7 +2144,7 @@ const union AnimCmd gAnimCmd_MAREEP_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_FLAAFFY_1[] =
+static const union AnimCmd sAnim_FLAAFFY_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -2154,7 +2153,7 @@ const union AnimCmd gAnimCmd_FLAAFFY_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_AMPHAROS_1[] =
+static const union AnimCmd sAnim_AMPHAROS_1[] =
{
ANIMCMD_FRAME(1, 50),
ANIMCMD_FRAME(1, 15),
@@ -2162,7 +2161,7 @@ const union AnimCmd gAnimCmd_AMPHAROS_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_BELLOSSOM_1[] =
+static const union AnimCmd sAnim_BELLOSSOM_1[] =
{
ANIMCMD_FRAME(0, 22),
ANIMCMD_FRAME(1, 22),
@@ -2174,7 +2173,7 @@ const union AnimCmd gAnimCmd_BELLOSSOM_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MARILL_1[] =
+static const union AnimCmd sAnim_MARILL_1[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(1, 44),
@@ -2184,7 +2183,7 @@ const union AnimCmd gAnimCmd_MARILL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_AZUMARILL_1[] =
+static const union AnimCmd sAnim_AZUMARILL_1[] =
{
ANIMCMD_FRAME(0, 22),
ANIMCMD_FRAME(1, 22),
@@ -2194,7 +2193,7 @@ const union AnimCmd gAnimCmd_AZUMARILL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SUDOWOODO_1[] =
+static const union AnimCmd sAnim_SUDOWOODO_1[] =
{
ANIMCMD_FRAME(1, 15),
ANIMCMD_FRAME(0, 15),
@@ -2205,7 +2204,7 @@ const union AnimCmd gAnimCmd_SUDOWOODO_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_POLITOED_1[] =
+static const union AnimCmd sAnim_POLITOED_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -2216,7 +2215,7 @@ const union AnimCmd gAnimCmd_POLITOED_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_HOPPIP_1[] =
+static const union AnimCmd sAnim_HOPPIP_1[] =
{
ANIMCMD_FRAME(1, 25),
ANIMCMD_FRAME(0, 25),
@@ -2225,7 +2224,7 @@ const union AnimCmd gAnimCmd_HOPPIP_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SKIPLOOM_1[] =
+static const union AnimCmd sAnim_SKIPLOOM_1[] =
{
ANIMCMD_FRAME(1, 12),
ANIMCMD_FRAME(0, 12),
@@ -2238,7 +2237,7 @@ const union AnimCmd gAnimCmd_SKIPLOOM_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_JUMPLUFF_1[] =
+static const union AnimCmd sAnim_JUMPLUFF_1[] =
{
ANIMCMD_FRAME(1, 15),
ANIMCMD_FRAME(0, 25),
@@ -2249,14 +2248,14 @@ const union AnimCmd gAnimCmd_JUMPLUFF_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_AIPOM_1[] =
+static const union AnimCmd sAnim_AIPOM_1[] =
{
ANIMCMD_FRAME(1, 35),
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SUNKERN_1[] =
+static const union AnimCmd sAnim_SUNKERN_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -2265,7 +2264,7 @@ const union AnimCmd gAnimCmd_SUNKERN_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SUNFLORA_1[] =
+static const union AnimCmd sAnim_SUNFLORA_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -2273,7 +2272,7 @@ const union AnimCmd gAnimCmd_SUNFLORA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_YANMA_1[] =
+static const union AnimCmd sAnim_YANMA_1[] =
{
ANIMCMD_FRAME(1, 2),
ANIMCMD_FRAME(0, 2),
@@ -2300,7 +2299,7 @@ const union AnimCmd gAnimCmd_YANMA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_WOOPER_1[] =
+static const union AnimCmd sAnim_WOOPER_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -2308,14 +2307,14 @@ const union AnimCmd gAnimCmd_WOOPER_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_QUAGSIRE_1[] =
+static const union AnimCmd sAnim_QUAGSIRE_1[] =
{
ANIMCMD_FRAME(1, 32),
ANIMCMD_FRAME(0, 20),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ESPEON_1[] =
+static const union AnimCmd sAnim_ESPEON_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 25),
@@ -2323,21 +2322,21 @@ const union AnimCmd gAnimCmd_ESPEON_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UMBREON_1[] =
+static const union AnimCmd sAnim_UMBREON_1[] =
{
ANIMCMD_FRAME(1, 40),
ANIMCMD_FRAME(0, 20),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MURKROW_1[] =
+static const union AnimCmd sAnim_MURKROW_1[] =
{
ANIMCMD_FRAME(1, 15),
ANIMCMD_FRAME(0, 20),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SLOWKING_1[] =
+static const union AnimCmd sAnim_SLOWKING_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 20),
@@ -2345,7 +2344,7 @@ const union AnimCmd gAnimCmd_SLOWKING_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MISDREAVUS_1[] =
+static const union AnimCmd sAnim_MISDREAVUS_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -2360,7 +2359,7 @@ const union AnimCmd gAnimCmd_MISDREAVUS_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_1[] =
+static const union AnimCmd sAnim_UNOWN_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -2368,7 +2367,7 @@ const union AnimCmd gAnimCmd_UNOWN_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_WOBBUFFET_1[] =
+static const union AnimCmd sAnim_WOBBUFFET_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 20),
@@ -2378,7 +2377,7 @@ const union AnimCmd gAnimCmd_WOBBUFFET_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_WOBBUFFET_2[] =
+static const union AnimCmd sAnim_WOBBUFFET_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -2387,7 +2386,7 @@ const union AnimCmd gAnimCmd_WOBBUFFET_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GIRAFARIG_1[] =
+static const union AnimCmd sAnim_GIRAFARIG_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 20),
@@ -2399,7 +2398,7 @@ const union AnimCmd gAnimCmd_GIRAFARIG_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GIRAFARIG_2[] =
+static const union AnimCmd sAnim_GIRAFARIG_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -2408,7 +2407,7 @@ const union AnimCmd gAnimCmd_GIRAFARIG_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PINECO_1[] =
+static const union AnimCmd sAnim_PINECO_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -2421,7 +2420,7 @@ const union AnimCmd gAnimCmd_PINECO_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_FORRETRESS_1[] =
+static const union AnimCmd sAnim_FORRETRESS_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -2430,7 +2429,7 @@ const union AnimCmd gAnimCmd_FORRETRESS_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_DUNSPARCE_1[] =
+static const union AnimCmd sAnim_DUNSPARCE_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 15),
@@ -2439,14 +2438,14 @@ const union AnimCmd gAnimCmd_DUNSPARCE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GLIGAR_1[] =
+static const union AnimCmd sAnim_GLIGAR_1[] =
{
ANIMCMD_FRAME(1, 17),
ANIMCMD_FRAME(0, 10),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_STEELIX_1[] =
+static const union AnimCmd sAnim_STEELIX_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 8),
@@ -2457,21 +2456,21 @@ const union AnimCmd gAnimCmd_STEELIX_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SNUBBULL_1[] =
+static const union AnimCmd sAnim_SNUBBULL_1[] =
{
ANIMCMD_FRAME(1, 32),
ANIMCMD_FRAME(0, 20),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GRANBULL_1[] =
+static const union AnimCmd sAnim_GRANBULL_1[] =
{
ANIMCMD_FRAME(1, 35),
ANIMCMD_FRAME(0, 20),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_QWILFISH_1[] =
+static const union AnimCmd sAnim_QWILFISH_1[] =
{
ANIMCMD_FRAME(1, 8),
ANIMCMD_FRAME(0, 8),
@@ -2483,14 +2482,14 @@ const union AnimCmd gAnimCmd_QWILFISH_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SCIZOR_1[] =
+static const union AnimCmd sAnim_SCIZOR_1[] =
{
ANIMCMD_FRAME(1, 20),
ANIMCMD_FRAME(0, 20),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SHUCKLE_1[] =
+static const union AnimCmd sAnim_SHUCKLE_1[] =
{
ANIMCMD_FRAME(1, 50),
ANIMCMD_FRAME(1, 50),
@@ -2498,7 +2497,7 @@ const union AnimCmd gAnimCmd_SHUCKLE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_HERACROSS_1[] =
+static const union AnimCmd sAnim_HERACROSS_1[] =
{
ANIMCMD_FRAME(0, 11),
ANIMCMD_FRAME(1, 10),
@@ -2508,7 +2507,7 @@ const union AnimCmd gAnimCmd_HERACROSS_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_HERACROSS_2[] =
+static const union AnimCmd sAnim_HERACROSS_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -2517,28 +2516,28 @@ const union AnimCmd gAnimCmd_HERACROSS_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SNEASEL_1[] =
+static const union AnimCmd sAnim_SNEASEL_1[] =
{
ANIMCMD_FRAME(1, 15),
ANIMCMD_FRAME(0, 15),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_TEDDIURSA_1[] =
+static const union AnimCmd sAnim_TEDDIURSA_1[] =
{
ANIMCMD_FRAME(1, 30),
ANIMCMD_FRAME(0, 20),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_URSARING_1[] =
+static const union AnimCmd sAnim_URSARING_1[] =
{
ANIMCMD_FRAME(1, 40),
ANIMCMD_FRAME(0, 20),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SLUGMA_1[] =
+static const union AnimCmd sAnim_SLUGMA_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -2548,7 +2547,7 @@ const union AnimCmd gAnimCmd_SLUGMA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SLUGMA_2[] =
+static const union AnimCmd sAnim_SLUGMA_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -2557,7 +2556,7 @@ const union AnimCmd gAnimCmd_SLUGMA_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MAGCARGO_1[] =
+static const union AnimCmd sAnim_MAGCARGO_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -2567,7 +2566,7 @@ const union AnimCmd gAnimCmd_MAGCARGO_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MAGCARGO_2[] =
+static const union AnimCmd sAnim_MAGCARGO_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -2576,7 +2575,7 @@ const union AnimCmd gAnimCmd_MAGCARGO_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SWINUB_1[] =
+static const union AnimCmd sAnim_SWINUB_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -2585,7 +2584,7 @@ const union AnimCmd gAnimCmd_SWINUB_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PILOSWINE_1[] =
+static const union AnimCmd sAnim_PILOSWINE_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -2594,7 +2593,7 @@ const union AnimCmd gAnimCmd_PILOSWINE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CORSOLA_1[] =
+static const union AnimCmd sAnim_CORSOLA_1[] =
{
ANIMCMD_FRAME(0, 11),
ANIMCMD_FRAME(1, 10),
@@ -2604,7 +2603,7 @@ const union AnimCmd gAnimCmd_CORSOLA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CORSOLA_2[] =
+static const union AnimCmd sAnim_CORSOLA_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -2613,7 +2612,7 @@ const union AnimCmd gAnimCmd_CORSOLA_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_REMORAID_1[] =
+static const union AnimCmd sAnim_REMORAID_1[] =
{
ANIMCMD_FRAME(1, 8),
ANIMCMD_FRAME(0, 8),
@@ -2622,7 +2621,7 @@ const union AnimCmd gAnimCmd_REMORAID_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_OCTILLERY_1[] =
+static const union AnimCmd sAnim_OCTILLERY_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -2631,7 +2630,7 @@ const union AnimCmd gAnimCmd_OCTILLERY_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_DELIBIRD_1[] =
+static const union AnimCmd sAnim_DELIBIRD_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -2640,7 +2639,7 @@ const union AnimCmd gAnimCmd_DELIBIRD_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MANTINE_1[] =
+static const union AnimCmd sAnim_MANTINE_1[] =
{
ANIMCMD_FRAME(1, 30),
ANIMCMD_FRAME(0, 30),
@@ -2649,7 +2648,7 @@ const union AnimCmd gAnimCmd_MANTINE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SKARMORY_1[] =
+static const union AnimCmd sAnim_SKARMORY_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 20),
@@ -2659,7 +2658,7 @@ const union AnimCmd gAnimCmd_SKARMORY_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SKARMORY_2[] =
+static const union AnimCmd sAnim_SKARMORY_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -2668,7 +2667,7 @@ const union AnimCmd gAnimCmd_SKARMORY_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_HOUNDOUR_1[] =
+static const union AnimCmd sAnim_HOUNDOUR_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -2677,14 +2676,14 @@ const union AnimCmd gAnimCmd_HOUNDOUR_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_HOUNDOOM_1[] =
+static const union AnimCmd sAnim_HOUNDOOM_1[] =
{
ANIMCMD_FRAME(1, 40),
ANIMCMD_FRAME(0, 30),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_KINGDRA_1[] =
+static const union AnimCmd sAnim_KINGDRA_1[] =
{
ANIMCMD_FRAME(0, 11),
ANIMCMD_FRAME(1, 10),
@@ -2694,7 +2693,7 @@ const union AnimCmd gAnimCmd_KINGDRA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_KINGDRA_2[] =
+static const union AnimCmd sAnim_KINGDRA_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -2703,7 +2702,7 @@ const union AnimCmd gAnimCmd_KINGDRA_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PHANPY_1[] =
+static const union AnimCmd sAnim_PHANPY_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 20),
@@ -2715,7 +2714,7 @@ const union AnimCmd gAnimCmd_PHANPY_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PHANPY_2[] =
+static const union AnimCmd sAnim_PHANPY_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -2724,7 +2723,7 @@ const union AnimCmd gAnimCmd_PHANPY_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_DONPHAN_1[] =
+static const union AnimCmd sAnim_DONPHAN_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 20),
@@ -2736,7 +2735,7 @@ const union AnimCmd gAnimCmd_DONPHAN_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_DONPHAN_2[] =
+static const union AnimCmd sAnim_DONPHAN_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -2745,7 +2744,7 @@ const union AnimCmd gAnimCmd_DONPHAN_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PORYGON2_1[] =
+static const union AnimCmd sAnim_PORYGON2_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -2755,14 +2754,14 @@ const union AnimCmd gAnimCmd_PORYGON2_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_STANTLER_1[] =
+static const union AnimCmd sAnim_STANTLER_1[] =
{
ANIMCMD_FRAME(1, 15),
ANIMCMD_FRAME(0, 15),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SMEARGLE_1[] =
+static const union AnimCmd sAnim_SMEARGLE_1[] =
{
ANIMCMD_FRAME(1, 12),
ANIMCMD_FRAME(0, 12),
@@ -2771,14 +2770,14 @@ const union AnimCmd gAnimCmd_SMEARGLE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_TYROGUE_1[] =
+static const union AnimCmd sAnim_TYROGUE_1[] =
{
ANIMCMD_FRAME(1, 40),
ANIMCMD_FRAME(0, 20),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_HITMONTOP_1[] =
+static const union AnimCmd sAnim_HITMONTOP_1[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(1, 4),
@@ -2794,7 +2793,7 @@ const union AnimCmd gAnimCmd_HITMONTOP_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SMOOCHUM_1[] =
+static const union AnimCmd sAnim_SMOOCHUM_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -2805,7 +2804,7 @@ const union AnimCmd gAnimCmd_SMOOCHUM_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ELEKID_1[] =
+static const union AnimCmd sAnim_ELEKID_1[] =
{
ANIMCMD_FRAME(1, 50),
ANIMCMD_FRAME(1, 5),
@@ -2813,7 +2812,7 @@ const union AnimCmd gAnimCmd_ELEKID_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MAGBY_1[] =
+static const union AnimCmd sAnim_MAGBY_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -2825,21 +2824,21 @@ const union AnimCmd gAnimCmd_MAGBY_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MILTANK_1[] =
+static const union AnimCmd sAnim_MILTANK_1[] =
{
ANIMCMD_FRAME(1, 30),
ANIMCMD_FRAME(0, 30),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_BLISSEY_1[] =
+static const union AnimCmd sAnim_BLISSEY_1[] =
{
ANIMCMD_FRAME(1, 20),
ANIMCMD_FRAME(0, 15),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_RAIKOU_1[] =
+static const union AnimCmd sAnim_RAIKOU_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -2848,21 +2847,21 @@ const union AnimCmd gAnimCmd_RAIKOU_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ENTEI_1[] =
+static const union AnimCmd sAnim_ENTEI_1[] =
{
ANIMCMD_FRAME(1, 20),
ANIMCMD_FRAME(0, 20),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SUICUNE_1[] =
+static const union AnimCmd sAnim_SUICUNE_1[] =
{
ANIMCMD_FRAME(1, 40),
ANIMCMD_FRAME(0, 20),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LARVITAR_1[] =
+static const union AnimCmd sAnim_LARVITAR_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 10),
@@ -2871,14 +2870,14 @@ const union AnimCmd gAnimCmd_LARVITAR_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PUPITAR_1[] =
+static const union AnimCmd sAnim_PUPITAR_1[] =
{
ANIMCMD_FRAME(1, 40),
ANIMCMD_FRAME(0, 10),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_TYRANITAR_1[] =
+static const union AnimCmd sAnim_TYRANITAR_1[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(0, 20),
@@ -2887,21 +2886,21 @@ const union AnimCmd gAnimCmd_TYRANITAR_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LUGIA_1[] =
+static const union AnimCmd sAnim_LUGIA_1[] =
{
ANIMCMD_FRAME(1, 20),
ANIMCMD_FRAME(0, 10),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_HO_OH_1[] =
+static const union AnimCmd sAnim_HO_OH_1[] =
{
ANIMCMD_FRAME(1, 20),
ANIMCMD_FRAME(0, 20),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CELEBI_1[] =
+static const union AnimCmd sAnim_CELEBI_1[] =
{
ANIMCMD_FRAME(1, 30),
ANIMCMD_FRAME(0, 30),
@@ -2910,7 +2909,7 @@ const union AnimCmd gAnimCmd_CELEBI_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_OLD_UNOWN_B_1[] =
+static const union AnimCmd sAnim_OLD_UNOWN_B_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -2918,7 +2917,7 @@ const union AnimCmd gAnimCmd_OLD_UNOWN_B_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_TREECKO_1[] =
+static const union AnimCmd sAnim_TREECKO_1[] =
{
ANIMCMD_FRAME(0, 6),
ANIMCMD_FRAME(1, 15),
@@ -2927,7 +2926,7 @@ const union AnimCmd gAnimCmd_TREECKO_1[] =
ANIMCMD_FRAME(0, 3),
ANIMCMD_END,};
-const union AnimCmd gAnimCmd_GROVYLE_1[] =
+static const union AnimCmd sAnim_GROVYLE_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 18),
@@ -2937,7 +2936,7 @@ const union AnimCmd gAnimCmd_GROVYLE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SCEPTILE_1[] =
+static const union AnimCmd sAnim_SCEPTILE_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 26),
@@ -2945,7 +2944,7 @@ const union AnimCmd gAnimCmd_SCEPTILE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_TORCHIC_1[] =
+static const union AnimCmd sAnim_TORCHIC_1[] =
{
ANIMCMD_FRAME(0, 7),
ANIMCMD_FRAME(1, 4),
@@ -2957,14 +2956,14 @@ const union AnimCmd gAnimCmd_TORCHIC_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_COMBUSKEN_1[] =
+static const union AnimCmd sAnim_COMBUSKEN_1[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(1, 25),
ANIMCMD_FRAME(0, 12),
ANIMCMD_END,};
-const union AnimCmd gAnimCmd_BLAZIKEN_1[] =
+static const union AnimCmd sAnim_BLAZIKEN_1[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_FRAME(1, 25),
@@ -2974,7 +2973,7 @@ const union AnimCmd gAnimCmd_BLAZIKEN_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_BLAZIKEN_2[] =
+static const union AnimCmd sAnim_BLAZIKEN_2[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_FRAME(2, 8),
@@ -2982,20 +2981,20 @@ const union AnimCmd gAnimCmd_BLAZIKEN_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_BLAZIKEN_3[] =
+static const union AnimCmd sAnim_BLAZIKEN_3[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(2, 10),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_BLAZIKEN_4[] =
+static const union AnimCmd sAnim_BLAZIKEN_4[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MUDKIP_1[] =
+static const union AnimCmd sAnim_MUDKIP_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 8),
@@ -3005,7 +3004,7 @@ const union AnimCmd gAnimCmd_MUDKIP_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MARSHTOMP_1[] =
+static const union AnimCmd sAnim_MARSHTOMP_1[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_FRAME(1, 5),
@@ -3019,7 +3018,7 @@ const union AnimCmd gAnimCmd_MARSHTOMP_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SWAMPERT_1[] =
+static const union AnimCmd sAnim_SWAMPERT_1[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(1, 44),
@@ -3029,7 +3028,7 @@ const union AnimCmd gAnimCmd_SWAMPERT_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_POOCHYENA_1[] =
+static const union AnimCmd sAnim_POOCHYENA_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 44),
@@ -3037,7 +3036,7 @@ const union AnimCmd gAnimCmd_POOCHYENA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MIGHTYENA_1[] =
+static const union AnimCmd sAnim_MIGHTYENA_1[] =
{
ANIMCMD_FRAME(0, 27),
ANIMCMD_FRAME(1, 6),
@@ -3047,7 +3046,7 @@ const union AnimCmd gAnimCmd_MIGHTYENA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ZIGZAGOON_1[] =
+static const union AnimCmd sAnim_ZIGZAGOON_1[] =
{
ANIMCMD_FRAME(0, 27),
ANIMCMD_FRAME(1, 6),
@@ -3057,7 +3056,7 @@ const union AnimCmd gAnimCmd_ZIGZAGOON_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LINOONE_1[] =
+static const union AnimCmd sAnim_LINOONE_1[] =
{
ANIMCMD_FRAME(0, 14),
ANIMCMD_FRAME(1, 14),
@@ -3067,7 +3066,7 @@ const union AnimCmd gAnimCmd_LINOONE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_WURMPLE_1[] =
+static const union AnimCmd sAnim_WURMPLE_1[] =
{
ANIMCMD_FRAME(0, 22),
ANIMCMD_FRAME(1, 35),
@@ -3075,7 +3074,7 @@ const union AnimCmd gAnimCmd_WURMPLE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SILCOON_1[] =
+static const union AnimCmd sAnim_SILCOON_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 25),
@@ -3083,13 +3082,13 @@ const union AnimCmd gAnimCmd_SILCOON_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SILCOON_2[] =
+static const union AnimCmd sAnim_SILCOON_2[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_BEAUTIFLY_1[] =
+static const union AnimCmd sAnim_BEAUTIFLY_1[] =
{
ANIMCMD_FRAME(0, 2),
ANIMCMD_FRAME(1, 2),
@@ -3103,13 +3102,13 @@ const union AnimCmd gAnimCmd_BEAUTIFLY_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_BEAUTIFLY_2[] =
+static const union AnimCmd sAnim_BEAUTIFLY_2[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CASCOON_1[] =
+static const union AnimCmd sAnim_CASCOON_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -3119,13 +3118,13 @@ const union AnimCmd gAnimCmd_CASCOON_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CASCOON_2[] =
+static const union AnimCmd sAnim_CASCOON_2[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_DUSTOX_1[] =
+static const union AnimCmd sAnim_DUSTOX_1[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_FRAME(1, 1),
@@ -3145,13 +3144,13 @@ const union AnimCmd gAnimCmd_DUSTOX_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_DUSTOX_2[] =
+static const union AnimCmd sAnim_DUSTOX_2[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LOTAD_1[] =
+static const union AnimCmd sAnim_LOTAD_1[] =
{
ANIMCMD_FRAME(0, 22),
ANIMCMD_FRAME(1, 55),
@@ -3159,7 +3158,7 @@ const union AnimCmd gAnimCmd_LOTAD_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LOMBRE_1[] =
+static const union AnimCmd sAnim_LOMBRE_1[] =
{
ANIMCMD_FRAME(0, 6),
ANIMCMD_FRAME(1, 30),
@@ -3169,7 +3168,7 @@ const union AnimCmd gAnimCmd_LOMBRE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LUDICOLO_1[] =
+static const union AnimCmd sAnim_LUDICOLO_1[] =
{
ANIMCMD_FRAME(0, 22),
ANIMCMD_FRAME(1, 22),
@@ -3181,7 +3180,7 @@ const union AnimCmd gAnimCmd_LUDICOLO_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SEEDOT_1[] =
+static const union AnimCmd sAnim_SEEDOT_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -3195,7 +3194,7 @@ const union AnimCmd gAnimCmd_SEEDOT_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_NUZLEAF_1[] =
+static const union AnimCmd sAnim_NUZLEAF_1[] =
{
ANIMCMD_FRAME(0, 7),
ANIMCMD_FRAME(1, 15),
@@ -3209,7 +3208,7 @@ const union AnimCmd gAnimCmd_NUZLEAF_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SHIFTRY_1[] =
+static const union AnimCmd sAnim_SHIFTRY_1[] =
{
ANIMCMD_FRAME(0, 7),
ANIMCMD_FRAME(1, 35),
@@ -3217,7 +3216,7 @@ const union AnimCmd gAnimCmd_SHIFTRY_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_NINCADA_1[] =
+static const union AnimCmd sAnim_NINCADA_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 22),
@@ -3227,7 +3226,7 @@ const union AnimCmd gAnimCmd_NINCADA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_NINJASK_1[] =
+static const union AnimCmd sAnim_NINJASK_1[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_FRAME(1, 1),
@@ -3250,7 +3249,7 @@ const union AnimCmd gAnimCmd_NINJASK_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SHEDINJA_1[] =
+static const union AnimCmd sAnim_SHEDINJA_1[] =
{
ANIMCMD_FRAME(0, 33),
ANIMCMD_FRAME(1, 33),
@@ -3260,7 +3259,7 @@ const union AnimCmd gAnimCmd_SHEDINJA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_TAILLOW_1[] =
+static const union AnimCmd sAnim_TAILLOW_1[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_FRAME(1, 15),
@@ -3274,7 +3273,7 @@ const union AnimCmd gAnimCmd_TAILLOW_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SWELLOW_1[] =
+static const union AnimCmd sAnim_SWELLOW_1[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_FRAME(1, 18),
@@ -3282,7 +3281,7 @@ const union AnimCmd gAnimCmd_SWELLOW_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SHROOMISH_1[] =
+static const union AnimCmd sAnim_SHROOMISH_1[] =
{
ANIMCMD_FRAME(0, 6),
ANIMCMD_FRAME(1, 6),
@@ -3298,7 +3297,7 @@ const union AnimCmd gAnimCmd_SHROOMISH_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_BRELOOM_1[] =
+static const union AnimCmd sAnim_BRELOOM_1[] =
{
ANIMCMD_FRAME(0, 6),
ANIMCMD_FRAME(1, 30),
@@ -3308,7 +3307,7 @@ const union AnimCmd gAnimCmd_BRELOOM_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_WINGULL_1[] =
+static const union AnimCmd sAnim_WINGULL_1[] =
{
ANIMCMD_FRAME(0, 17),
ANIMCMD_FRAME(1, 23),
@@ -3316,7 +3315,7 @@ const union AnimCmd gAnimCmd_WINGULL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PELIPPER_1[] =
+static const union AnimCmd sAnim_PELIPPER_1[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_FRAME(1, 5),
@@ -3330,7 +3329,7 @@ const union AnimCmd gAnimCmd_PELIPPER_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SURSKIT_1[] =
+static const union AnimCmd sAnim_SURSKIT_1[] =
{
ANIMCMD_FRAME(0, 6),
ANIMCMD_FRAME(1, 18),
@@ -3340,13 +3339,13 @@ const union AnimCmd gAnimCmd_SURSKIT_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SURSKIT_2[] =
+static const union AnimCmd sAnim_SURSKIT_2[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MASQUERAIN_1[] =
+static const union AnimCmd sAnim_MASQUERAIN_1[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(1, 8),
@@ -3360,13 +3359,13 @@ const union AnimCmd gAnimCmd_MASQUERAIN_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MASQUERAIN_2[] =
+static const union AnimCmd sAnim_MASQUERAIN_2[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_WAILMER_1[] =
+static const union AnimCmd sAnim_WAILMER_1[] =
{
ANIMCMD_FRAME(0, 22),
ANIMCMD_FRAME(1, 22),
@@ -3378,7 +3377,7 @@ const union AnimCmd gAnimCmd_WAILMER_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_WAILORD_1[] =
+static const union AnimCmd sAnim_WAILORD_1[] =
{
ANIMCMD_FRAME(0, 26),
ANIMCMD_FRAME(1, 48),
@@ -3386,7 +3385,7 @@ const union AnimCmd gAnimCmd_WAILORD_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SKITTY_1[] =
+static const union AnimCmd sAnim_SKITTY_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 35),
@@ -3394,7 +3393,7 @@ const union AnimCmd gAnimCmd_SKITTY_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_DELCATTY_1[] =
+static const union AnimCmd sAnim_DELCATTY_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 46),
@@ -3402,7 +3401,7 @@ const union AnimCmd gAnimCmd_DELCATTY_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_KECLEON_1[] =
+static const union AnimCmd sAnim_KECLEON_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 18),
@@ -3412,7 +3411,7 @@ const union AnimCmd gAnimCmd_KECLEON_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_BALTOY_1[] =
+static const union AnimCmd sAnim_BALTOY_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3424,7 +3423,7 @@ const union AnimCmd gAnimCmd_BALTOY_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CLAYDOL_1[] =
+static const union AnimCmd sAnim_CLAYDOL_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3436,7 +3435,7 @@ const union AnimCmd gAnimCmd_CLAYDOL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_NOSEPASS_1[] =
+static const union AnimCmd sAnim_NOSEPASS_1[] =
{
ANIMCMD_FRAME(0, 27),
ANIMCMD_FRAME(1, 27),
@@ -3448,7 +3447,7 @@ const union AnimCmd gAnimCmd_NOSEPASS_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_TORKOAL_1[] =
+static const union AnimCmd sAnim_TORKOAL_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3458,7 +3457,7 @@ const union AnimCmd gAnimCmd_TORKOAL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SABLEYE_1[] =
+static const union AnimCmd sAnim_SABLEYE_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -3468,7 +3467,7 @@ const union AnimCmd gAnimCmd_SABLEYE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_BARBOACH_1[] =
+static const union AnimCmd sAnim_BARBOACH_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3486,7 +3485,7 @@ const union AnimCmd gAnimCmd_BARBOACH_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_WHISCASH_1[] =
+static const union AnimCmd sAnim_WHISCASH_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3504,7 +3503,7 @@ const union AnimCmd gAnimCmd_WHISCASH_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LUVDISC_1[] =
+static const union AnimCmd sAnim_LUVDISC_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3514,7 +3513,7 @@ const union AnimCmd gAnimCmd_LUVDISC_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CORPHISH_1[] =
+static const union AnimCmd sAnim_CORPHISH_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3526,7 +3525,7 @@ const union AnimCmd gAnimCmd_CORPHISH_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CRAWDAUNT_1[] =
+static const union AnimCmd sAnim_CRAWDAUNT_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3536,7 +3535,7 @@ const union AnimCmd gAnimCmd_CRAWDAUNT_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_FEEBAS_1[] =
+static const union AnimCmd sAnim_FEEBAS_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3548,7 +3547,7 @@ const union AnimCmd gAnimCmd_FEEBAS_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MILOTIC_1[] =
+static const union AnimCmd sAnim_MILOTIC_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3560,7 +3559,7 @@ const union AnimCmd gAnimCmd_MILOTIC_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CARVANHA_1[] =
+static const union AnimCmd sAnim_CARVANHA_1[] =
{
ANIMCMD_FRAME(0, 6),
ANIMCMD_FRAME(1, 6),
@@ -3574,7 +3573,7 @@ const union AnimCmd gAnimCmd_CARVANHA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SHARPEDO_1[] =
+static const union AnimCmd sAnim_SHARPEDO_1[] =
{
ANIMCMD_FRAME(0, 6),
ANIMCMD_FRAME(1, 6),
@@ -3588,7 +3587,7 @@ const union AnimCmd gAnimCmd_SHARPEDO_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_TRAPINCH_1[] =
+static const union AnimCmd sAnim_TRAPINCH_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3598,7 +3597,7 @@ const union AnimCmd gAnimCmd_TRAPINCH_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_VIBRAVA_1[] =
+static const union AnimCmd sAnim_VIBRAVA_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3610,7 +3609,7 @@ const union AnimCmd gAnimCmd_VIBRAVA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_FLYGON_1[] =
+static const union AnimCmd sAnim_FLYGON_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3622,7 +3621,7 @@ const union AnimCmd gAnimCmd_FLYGON_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MAKUHITA_1[] =
+static const union AnimCmd sAnim_MAKUHITA_1[] =
{
ANIMCMD_FRAME(0, 7),
ANIMCMD_FRAME(1, 10),
@@ -3636,7 +3635,7 @@ const union AnimCmd gAnimCmd_MAKUHITA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_HARIYAMA_1[] =
+static const union AnimCmd sAnim_HARIYAMA_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -3645,7 +3644,7 @@ const union AnimCmd gAnimCmd_HARIYAMA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ELECTRIKE_1[] =
+static const union AnimCmd sAnim_ELECTRIKE_1[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(1, 25),
@@ -3655,7 +3654,7 @@ const union AnimCmd gAnimCmd_ELECTRIKE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MANECTRIC_1[] =
+static const union AnimCmd sAnim_MANECTRIC_1[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(1, 33),
@@ -3665,7 +3664,7 @@ const union AnimCmd gAnimCmd_MANECTRIC_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_NUMEL_1[] =
+static const union AnimCmd sAnim_NUMEL_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3675,7 +3674,7 @@ const union AnimCmd gAnimCmd_NUMEL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CAMERUPT_1[] =
+static const union AnimCmd sAnim_CAMERUPT_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3687,7 +3686,7 @@ const union AnimCmd gAnimCmd_CAMERUPT_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SPHEAL_1[] =
+static const union AnimCmd sAnim_SPHEAL_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 43),
@@ -3700,7 +3699,7 @@ const union AnimCmd gAnimCmd_SPHEAL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SEALEO_1[] =
+static const union AnimCmd sAnim_SEALEO_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3710,7 +3709,7 @@ const union AnimCmd gAnimCmd_SEALEO_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_WALREIN_1[] =
+static const union AnimCmd sAnim_WALREIN_1[] =
{
ANIMCMD_FRAME(0, 2),
ANIMCMD_FRAME(1, 10),
@@ -3720,7 +3719,7 @@ const union AnimCmd gAnimCmd_WALREIN_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CACNEA_1[] =
+static const union AnimCmd sAnim_CACNEA_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3736,7 +3735,7 @@ const union AnimCmd gAnimCmd_CACNEA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CACTURNE_1[] =
+static const union AnimCmd sAnim_CACTURNE_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3746,7 +3745,7 @@ const union AnimCmd gAnimCmd_CACTURNE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SNORUNT_1[] =
+static const union AnimCmd sAnim_SNORUNT_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3756,7 +3755,7 @@ const union AnimCmd gAnimCmd_SNORUNT_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GLALIE_1[] =
+static const union AnimCmd sAnim_GLALIE_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3766,7 +3765,7 @@ const union AnimCmd gAnimCmd_GLALIE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LUNATONE_1[] =
+static const union AnimCmd sAnim_LUNATONE_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 20),
@@ -3776,7 +3775,7 @@ const union AnimCmd gAnimCmd_LUNATONE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LUNATONE_2[] =
+static const union AnimCmd sAnim_LUNATONE_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -3785,7 +3784,7 @@ const union AnimCmd gAnimCmd_LUNATONE_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SOLROCK_1[] =
+static const union AnimCmd sAnim_SOLROCK_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 20),
@@ -3795,7 +3794,7 @@ const union AnimCmd gAnimCmd_SOLROCK_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SOLROCK_2[] =
+static const union AnimCmd sAnim_SOLROCK_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -3804,7 +3803,7 @@ const union AnimCmd gAnimCmd_SOLROCK_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_AZURILL_1[] =
+static const union AnimCmd sAnim_AZURILL_1[] =
{
ANIMCMD_FRAME(0, 12),
ANIMCMD_FRAME(1, 12),
@@ -3816,7 +3815,7 @@ const union AnimCmd gAnimCmd_AZURILL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SPOINK_1[] =
+static const union AnimCmd sAnim_SPOINK_1[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_FRAME(1, 10),
@@ -3832,7 +3831,7 @@ const union AnimCmd gAnimCmd_SPOINK_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GRUMPIG_1[] =
+static const union AnimCmd sAnim_GRUMPIG_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3842,7 +3841,7 @@ const union AnimCmd gAnimCmd_GRUMPIG_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_PLUSLE_1[] =
+static const union AnimCmd sAnim_PLUSLE_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -3852,7 +3851,7 @@ const union AnimCmd gAnimCmd_PLUSLE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MINUN_1[] =
+static const union AnimCmd sAnim_MINUN_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -3862,7 +3861,7 @@ const union AnimCmd gAnimCmd_MINUN_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MAWILE_1[] =
+static const union AnimCmd sAnim_MAWILE_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -3874,7 +3873,7 @@ const union AnimCmd gAnimCmd_MAWILE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MEDITITE_1[] =
+static const union AnimCmd sAnim_MEDITITE_1[] =
{
ANIMCMD_FRAME(0, 22),
ANIMCMD_FRAME(1, 2),
@@ -3882,7 +3881,7 @@ const union AnimCmd gAnimCmd_MEDITITE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_MEDICHAM_1[] =
+static const union AnimCmd sAnim_MEDICHAM_1[] =
{
ANIMCMD_FRAME(0, 11),
ANIMCMD_FRAME(1, 11),
@@ -3894,7 +3893,7 @@ const union AnimCmd gAnimCmd_MEDICHAM_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SWABLU_1[] =
+static const union AnimCmd sAnim_SWABLU_1[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_FRAME(1, 10),
@@ -3906,7 +3905,7 @@ const union AnimCmd gAnimCmd_SWABLU_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SWABLU_2[] =
+static const union AnimCmd sAnim_SWABLU_2[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_FRAME(2, 8),
@@ -3917,7 +3916,7 @@ const union AnimCmd gAnimCmd_SWABLU_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ALTARIA_1[] =
+static const union AnimCmd sAnim_ALTARIA_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 20),
@@ -3927,7 +3926,7 @@ const union AnimCmd gAnimCmd_ALTARIA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ALTARIA_2[] =
+static const union AnimCmd sAnim_ALTARIA_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -3936,7 +3935,7 @@ const union AnimCmd gAnimCmd_ALTARIA_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_WYNAUT_1[] =
+static const union AnimCmd sAnim_WYNAUT_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3946,7 +3945,7 @@ const union AnimCmd gAnimCmd_WYNAUT_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_DUSKULL_1[] =
+static const union AnimCmd sAnim_DUSKULL_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3956,7 +3955,7 @@ const union AnimCmd gAnimCmd_DUSKULL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_DUSCLOPS_1[] =
+static const union AnimCmd sAnim_DUSCLOPS_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -3966,7 +3965,7 @@ const union AnimCmd gAnimCmd_DUSCLOPS_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ROSELIA_1[] =
+static const union AnimCmd sAnim_ROSELIA_1[] =
{
ANIMCMD_FRAME(0, 18),
ANIMCMD_FRAME(1, 44),
@@ -3974,7 +3973,7 @@ const union AnimCmd gAnimCmd_ROSELIA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SLAKOTH_1[] =
+static const union AnimCmd sAnim_SLAKOTH_1[] =
{
ANIMCMD_FRAME(0, 13),
ANIMCMD_FRAME(1, 22),
@@ -3985,7 +3984,7 @@ const union AnimCmd gAnimCmd_SLAKOTH_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_VIGOROTH_1[] =
+static const union AnimCmd sAnim_VIGOROTH_1[] =
{
ANIMCMD_FRAME(0, 13),
ANIMCMD_FRAME(1, 7),
@@ -3997,7 +3996,7 @@ const union AnimCmd gAnimCmd_VIGOROTH_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SLAKING_1[] =
+static const union AnimCmd sAnim_SLAKING_1[] =
{
ANIMCMD_FRAME(0, 22),
ANIMCMD_FRAME(1, 22),
@@ -4009,7 +4008,7 @@ const union AnimCmd gAnimCmd_SLAKING_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GULPIN_1[] =
+static const union AnimCmd sAnim_GULPIN_1[] =
{
ANIMCMD_FRAME(0, 14),
ANIMCMD_FRAME(1, 14),
@@ -4019,7 +4018,7 @@ const union AnimCmd gAnimCmd_GULPIN_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SWALOT_1[] =
+static const union AnimCmd sAnim_SWALOT_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 30),
@@ -4028,7 +4027,7 @@ const union AnimCmd gAnimCmd_SWALOT_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_TROPIUS_1[] =
+static const union AnimCmd sAnim_TROPIUS_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -4038,7 +4037,7 @@ const union AnimCmd gAnimCmd_TROPIUS_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_WHISMUR_1[] =
+static const union AnimCmd sAnim_WHISMUR_1[] =
{
ANIMCMD_FRAME(0, 9),
ANIMCMD_FRAME(1, 9),
@@ -4053,7 +4052,7 @@ const union AnimCmd gAnimCmd_WHISMUR_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LOUDRED_1[] =
+static const union AnimCmd sAnim_LOUDRED_1[] =
{
ANIMCMD_FRAME(0, 9),
ANIMCMD_FRAME(1, 9),
@@ -4063,7 +4062,7 @@ const union AnimCmd gAnimCmd_LOUDRED_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_EXPLOUD_1[] =
+static const union AnimCmd sAnim_EXPLOUD_1[] =
{
ANIMCMD_FRAME(0, 9),
ANIMCMD_FRAME(1, 44),
@@ -4071,7 +4070,7 @@ const union AnimCmd gAnimCmd_EXPLOUD_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CLAMPERL_1[] =
+static const union AnimCmd sAnim_CLAMPERL_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -4081,7 +4080,7 @@ const union AnimCmd gAnimCmd_CLAMPERL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_HUNTAIL_1[] =
+static const union AnimCmd sAnim_HUNTAIL_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -4091,7 +4090,7 @@ const union AnimCmd gAnimCmd_HUNTAIL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GOREBYSS_1[] =
+static const union AnimCmd sAnim_GOREBYSS_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -4101,7 +4100,7 @@ const union AnimCmd gAnimCmd_GOREBYSS_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ABSOL_1[] =
+static const union AnimCmd sAnim_ABSOL_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -4111,7 +4110,7 @@ const union AnimCmd gAnimCmd_ABSOL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SHUPPET_1[] =
+static const union AnimCmd sAnim_SHUPPET_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -4123,7 +4122,7 @@ const union AnimCmd gAnimCmd_SHUPPET_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_BANETTE_1[] =
+static const union AnimCmd sAnim_BANETTE_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -4135,7 +4134,7 @@ const union AnimCmd gAnimCmd_BANETTE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SEVIPER_1[] =
+static const union AnimCmd sAnim_SEVIPER_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -4147,7 +4146,7 @@ const union AnimCmd gAnimCmd_SEVIPER_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ZANGOOSE_1[] =
+static const union AnimCmd sAnim_ZANGOOSE_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -4159,7 +4158,7 @@ const union AnimCmd gAnimCmd_ZANGOOSE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_RELICANTH_1[] =
+static const union AnimCmd sAnim_RELICANTH_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -4169,7 +4168,7 @@ const union AnimCmd gAnimCmd_RELICANTH_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ARON_1[] =
+static const union AnimCmd sAnim_ARON_1[] =
{
ANIMCMD_FRAME(0, 33),
ANIMCMD_FRAME(1, 44),
@@ -4179,7 +4178,7 @@ const union AnimCmd gAnimCmd_ARON_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LAIRON_1[] =
+static const union AnimCmd sAnim_LAIRON_1[] =
{
ANIMCMD_FRAME(0, 12),
ANIMCMD_FRAME(1, 29),
@@ -4189,7 +4188,7 @@ const union AnimCmd gAnimCmd_LAIRON_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_AGGRON_1[] =
+static const union AnimCmd sAnim_AGGRON_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 44),
@@ -4197,31 +4196,31 @@ const union AnimCmd gAnimCmd_AGGRON_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CASTFORM_0[] =
+static const union AnimCmd sAnim_CASTFORM_0[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CASTFORM_1[] =
+static const union AnimCmd sAnim_CASTFORM_1[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CASTFORM_2[] =
+static const union AnimCmd sAnim_CASTFORM_2[] =
{
ANIMCMD_FRAME(2, 1),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CASTFORM_3[] =
+static const union AnimCmd sAnim_CASTFORM_3[] =
{
ANIMCMD_FRAME(3, 1),
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_VOLBEAT_1[] =
+static const union AnimCmd sAnim_VOLBEAT_1[] =
{
ANIMCMD_FRAME(0, 11),
ANIMCMD_FRAME(1, 11),
@@ -4233,7 +4232,7 @@ const union AnimCmd gAnimCmd_VOLBEAT_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ILLUMISE_1[] =
+static const union AnimCmd sAnim_ILLUMISE_1[] =
{
ANIMCMD_FRAME(0, 22),
ANIMCMD_FRAME(1, 22),
@@ -4243,7 +4242,7 @@ const union AnimCmd gAnimCmd_ILLUMISE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LILEEP_1[] =
+static const union AnimCmd sAnim_LILEEP_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -4253,7 +4252,7 @@ const union AnimCmd gAnimCmd_LILEEP_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CRADILY_1[] =
+static const union AnimCmd sAnim_CRADILY_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -4265,7 +4264,7 @@ const union AnimCmd gAnimCmd_CRADILY_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ANORITH_1[] =
+static const union AnimCmd sAnim_ANORITH_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -4277,7 +4276,7 @@ const union AnimCmd gAnimCmd_ANORITH_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_ARMALDO_1[] =
+static const union AnimCmd sAnim_ARMALDO_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -4287,7 +4286,7 @@ const union AnimCmd gAnimCmd_ARMALDO_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_RALTS_1[] =
+static const union AnimCmd sAnim_RALTS_1[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(1, 25),
@@ -4295,7 +4294,7 @@ const union AnimCmd gAnimCmd_RALTS_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_KIRLIA_1[] =
+static const union AnimCmd sAnim_KIRLIA_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 39),
@@ -4303,7 +4302,7 @@ const union AnimCmd gAnimCmd_KIRLIA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GARDEVOIR_1[] =
+static const union AnimCmd sAnim_GARDEVOIR_1[] =
{
ANIMCMD_FRAME(0, 3),
ANIMCMD_FRAME(1, 3),
@@ -4321,7 +4320,7 @@ const union AnimCmd gAnimCmd_GARDEVOIR_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_BAGON_1[] =
+static const union AnimCmd sAnim_BAGON_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -4331,7 +4330,7 @@ const union AnimCmd gAnimCmd_BAGON_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SHELGON_1[] =
+static const union AnimCmd sAnim_SHELGON_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -4341,7 +4340,7 @@ const union AnimCmd gAnimCmd_SHELGON_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_SALAMENCE_1[] =
+static const union AnimCmd sAnim_SALAMENCE_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -4351,7 +4350,7 @@ const union AnimCmd gAnimCmd_SALAMENCE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_BELDUM_1[] =
+static const union AnimCmd sAnim_BELDUM_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -4361,7 +4360,7 @@ const union AnimCmd gAnimCmd_BELDUM_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_METANG_1[] =
+static const union AnimCmd sAnim_METANG_1[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(1, 8),
@@ -4371,7 +4370,7 @@ const union AnimCmd gAnimCmd_METANG_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_METAGROSS_1[] =
+static const union AnimCmd sAnim_METAGROSS_1[] =
{
ANIMCMD_FRAME(0, 16),
ANIMCMD_FRAME(1, 16),
@@ -4381,7 +4380,7 @@ const union AnimCmd gAnimCmd_METAGROSS_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_REGIROCK_1[] =
+static const union AnimCmd sAnim_REGIROCK_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -4391,7 +4390,7 @@ const union AnimCmd gAnimCmd_REGIROCK_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_REGIROCK_2[] =
+static const union AnimCmd sAnim_REGIROCK_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -4400,7 +4399,7 @@ const union AnimCmd gAnimCmd_REGIROCK_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_REGICE_1[] =
+static const union AnimCmd sAnim_REGICE_1[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(1, 15),
@@ -4410,7 +4409,7 @@ const union AnimCmd gAnimCmd_REGICE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_REGISTEEL_1[] =
+static const union AnimCmd sAnim_REGISTEEL_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -4420,7 +4419,7 @@ const union AnimCmd gAnimCmd_REGISTEEL_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_REGISTEEL_2[] =
+static const union AnimCmd sAnim_REGISTEEL_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -4429,7 +4428,7 @@ const union AnimCmd gAnimCmd_REGISTEEL_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_KYOGRE_1[] =
+static const union AnimCmd sAnim_KYOGRE_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -4439,7 +4438,7 @@ const union AnimCmd gAnimCmd_KYOGRE_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_KYOGRE_2[] =
+static const union AnimCmd sAnim_KYOGRE_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -4448,7 +4447,7 @@ const union AnimCmd gAnimCmd_KYOGRE_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GROUDON_1[] =
+static const union AnimCmd sAnim_GROUDON_1[] =
{
ANIMCMD_FRAME(0, 11),
ANIMCMD_FRAME(1, 10),
@@ -4458,7 +4457,7 @@ const union AnimCmd gAnimCmd_GROUDON_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_GROUDON_2[] =
+static const union AnimCmd sAnim_GROUDON_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -4467,7 +4466,7 @@ const union AnimCmd gAnimCmd_GROUDON_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_RAYQUAZA_1[] =
+static const union AnimCmd sAnim_RAYQUAZA_1[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_FRAME(1, 8),
@@ -4477,7 +4476,7 @@ const union AnimCmd gAnimCmd_RAYQUAZA_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_RAYQUAZA_2[] =
+static const union AnimCmd sAnim_RAYQUAZA_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -4486,7 +4485,7 @@ const union AnimCmd gAnimCmd_RAYQUAZA_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LATIAS_1[] =
+static const union AnimCmd sAnim_LATIAS_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -4496,7 +4495,7 @@ const union AnimCmd gAnimCmd_LATIAS_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LATIAS_2[] =
+static const union AnimCmd sAnim_LATIAS_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -4505,7 +4504,7 @@ const union AnimCmd gAnimCmd_LATIAS_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LATIOS_1[] =
+static const union AnimCmd sAnim_LATIOS_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -4515,7 +4514,7 @@ const union AnimCmd gAnimCmd_LATIOS_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_LATIOS_2[] =
+static const union AnimCmd sAnim_LATIOS_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -4524,7 +4523,7 @@ const union AnimCmd gAnimCmd_LATIOS_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_JIRACHI_1[] =
+static const union AnimCmd sAnim_JIRACHI_1[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -4539,7 +4538,7 @@ const union AnimCmd gAnimCmd_JIRACHI_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_JIRACHI_2[] =
+static const union AnimCmd sAnim_JIRACHI_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -4548,7 +4547,7 @@ const union AnimCmd gAnimCmd_JIRACHI_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_DEOXYS_1[] =
+static const union AnimCmd sAnim_DEOXYS_1[] =
{
ANIMCMD_FRAME(0, 16),
ANIMCMD_FRAME(1, 16),
@@ -4558,7 +4557,7 @@ const union AnimCmd gAnimCmd_DEOXYS_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_DEOXYS_2[] =
+static const union AnimCmd sAnim_DEOXYS_2[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -4567,7 +4566,7 @@ const union AnimCmd gAnimCmd_DEOXYS_2[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_CHIMECHO_1[] =
+static const union AnimCmd sAnim_CHIMECHO_1[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(1, 15),
@@ -4581,7 +4580,7 @@ const union AnimCmd gAnimCmd_CHIMECHO_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_EGG_1[] =
+static const union AnimCmd sAnim_EGG_1[] =
{
ANIMCMD_FRAME(0, 6),
ANIMCMD_FRAME(1, 6),
@@ -4590,7 +4589,7 @@ const union AnimCmd gAnimCmd_EGG_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_B_1[] =
+static const union AnimCmd sAnim_UNOWN_B_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4598,7 +4597,7 @@ const union AnimCmd gAnimCmd_UNOWN_B_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_C_1[] =
+static const union AnimCmd sAnim_UNOWN_C_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4606,7 +4605,7 @@ const union AnimCmd gAnimCmd_UNOWN_C_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_D_1[] =
+static const union AnimCmd sAnim_UNOWN_D_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4614,7 +4613,7 @@ const union AnimCmd gAnimCmd_UNOWN_D_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_E_1[] =
+static const union AnimCmd sAnim_UNOWN_E_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4622,7 +4621,7 @@ const union AnimCmd gAnimCmd_UNOWN_E_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_F_1[] =
+static const union AnimCmd sAnim_UNOWN_F_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4630,7 +4629,7 @@ const union AnimCmd gAnimCmd_UNOWN_F_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_G_1[] =
+static const union AnimCmd sAnim_UNOWN_G_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4638,7 +4637,7 @@ const union AnimCmd gAnimCmd_UNOWN_G_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_H_1[] =
+static const union AnimCmd sAnim_UNOWN_H_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4646,7 +4645,7 @@ const union AnimCmd gAnimCmd_UNOWN_H_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_I_1[] =
+static const union AnimCmd sAnim_UNOWN_I_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4654,7 +4653,7 @@ const union AnimCmd gAnimCmd_UNOWN_I_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_J_1[] =
+static const union AnimCmd sAnim_UNOWN_J_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4662,7 +4661,7 @@ const union AnimCmd gAnimCmd_UNOWN_J_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_K_1[] =
+static const union AnimCmd sAnim_UNOWN_K_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4670,7 +4669,7 @@ const union AnimCmd gAnimCmd_UNOWN_K_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_L_1[] =
+static const union AnimCmd sAnim_UNOWN_L_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4678,7 +4677,7 @@ const union AnimCmd gAnimCmd_UNOWN_L_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_M_1[] =
+static const union AnimCmd sAnim_UNOWN_M_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4686,7 +4685,7 @@ const union AnimCmd gAnimCmd_UNOWN_M_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_N_1[] =
+static const union AnimCmd sAnim_UNOWN_N_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4694,7 +4693,7 @@ const union AnimCmd gAnimCmd_UNOWN_N_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_O_1[] =
+static const union AnimCmd sAnim_UNOWN_O_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4702,7 +4701,7 @@ const union AnimCmd gAnimCmd_UNOWN_O_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_P_1[] =
+static const union AnimCmd sAnim_UNOWN_P_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4710,7 +4709,7 @@ const union AnimCmd gAnimCmd_UNOWN_P_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_Q_1[] =
+static const union AnimCmd sAnim_UNOWN_Q_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4718,7 +4717,7 @@ const union AnimCmd gAnimCmd_UNOWN_Q_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_R_1[] =
+static const union AnimCmd sAnim_UNOWN_R_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4726,7 +4725,7 @@ const union AnimCmd gAnimCmd_UNOWN_R_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_S_1[] =
+static const union AnimCmd sAnim_UNOWN_S_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4734,7 +4733,7 @@ const union AnimCmd gAnimCmd_UNOWN_S_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_T_1[] =
+static const union AnimCmd sAnim_UNOWN_T_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4742,7 +4741,7 @@ const union AnimCmd gAnimCmd_UNOWN_T_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_U_1[] =
+static const union AnimCmd sAnim_UNOWN_U_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4750,7 +4749,7 @@ const union AnimCmd gAnimCmd_UNOWN_U_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_V_1[] =
+static const union AnimCmd sAnim_UNOWN_V_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4758,7 +4757,7 @@ const union AnimCmd gAnimCmd_UNOWN_V_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_W_1[] =
+static const union AnimCmd sAnim_UNOWN_W_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4766,7 +4765,7 @@ const union AnimCmd gAnimCmd_UNOWN_W_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_X_1[] =
+static const union AnimCmd sAnim_UNOWN_X_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4774,7 +4773,7 @@ const union AnimCmd gAnimCmd_UNOWN_X_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_Y_1[] =
+static const union AnimCmd sAnim_UNOWN_Y_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4782,7 +4781,7 @@ const union AnimCmd gAnimCmd_UNOWN_Y_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_Z_1[] =
+static const union AnimCmd sAnim_UNOWN_Z_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4790,7 +4789,7 @@ const union AnimCmd gAnimCmd_UNOWN_Z_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_EMARK_1[] =
+static const union AnimCmd sAnim_UNOWN_EMARK_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -4798,2158 +4797,2158 @@ const union AnimCmd gAnimCmd_UNOWN_EMARK_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_UNOWN_QMARK_1[] =
+static const union AnimCmd sAnim_UNOWN_QMARK_1[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-
-const union AnimCmd *const gAnims_NONE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_NONE_1,
+
+static const union AnimCmd *const sAnims_NONE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_NONE_1,
};
-const union AnimCmd *const gAnims_BULBASAUR[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_BULBASAUR_1,
+static const union AnimCmd *const sAnims_BULBASAUR[] ={
+ sAnim_GeneralFrame0,
+ sAnim_BULBASAUR_1,
};
-const union AnimCmd *const gAnims_IVYSAUR[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_IVYSAUR_1,
+static const union AnimCmd *const sAnims_IVYSAUR[] ={
+ sAnim_GeneralFrame0,
+ sAnim_IVYSAUR_1,
};
-const union AnimCmd *const gAnims_VENUSAUR[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_VENUSAUR_1,
+static const union AnimCmd *const sAnims_VENUSAUR[] ={
+ sAnim_GeneralFrame0,
+ sAnim_VENUSAUR_1,
};
-const union AnimCmd *const gAnims_CHARMANDER[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CHARMANDER_1,
+static const union AnimCmd *const sAnims_CHARMANDER[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CHARMANDER_1,
};
-const union AnimCmd *const gAnims_CHARMELEON[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CHARMELEON_1,
+static const union AnimCmd *const sAnims_CHARMELEON[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CHARMELEON_1,
};
-const union AnimCmd *const gAnims_CHARIZARD[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CHARIZARD_1,
+static const union AnimCmd *const sAnims_CHARIZARD[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CHARIZARD_1,
};
-const union AnimCmd *const gAnims_SQUIRTLE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SQUIRTLE_1,
+static const union AnimCmd *const sAnims_SQUIRTLE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SQUIRTLE_1,
};
-const union AnimCmd *const gAnims_WARTORTLE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_WARTORTLE_1,
+static const union AnimCmd *const sAnims_WARTORTLE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_WARTORTLE_1,
};
-const union AnimCmd *const gAnims_BLASTOISE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_BLASTOISE_1,
+static const union AnimCmd *const sAnims_BLASTOISE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_BLASTOISE_1,
};
-const union AnimCmd *const gAnims_CATERPIE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CATERPIE_1,
+static const union AnimCmd *const sAnims_CATERPIE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CATERPIE_1,
};
-const union AnimCmd *const gAnims_METAPOD[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_METAPOD_1,
+static const union AnimCmd *const sAnims_METAPOD[] ={
+ sAnim_GeneralFrame0,
+ sAnim_METAPOD_1,
};
-const union AnimCmd *const gAnims_BUTTERFREE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_BUTTERFREE_1,
+static const union AnimCmd *const sAnims_BUTTERFREE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_BUTTERFREE_1,
};
-const union AnimCmd *const gAnims_WEEDLE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_WEEDLE_1,
+static const union AnimCmd *const sAnims_WEEDLE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_WEEDLE_1,
};
-const union AnimCmd *const gAnims_KAKUNA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_KAKUNA_1,
+static const union AnimCmd *const sAnims_KAKUNA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_KAKUNA_1,
};
-const union AnimCmd *const gAnims_BEEDRILL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_BEEDRILL_1,
+static const union AnimCmd *const sAnims_BEEDRILL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_BEEDRILL_1,
};
-const union AnimCmd *const gAnims_PIDGEY[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_PIDGEY_1,
+static const union AnimCmd *const sAnims_PIDGEY[] ={
+ sAnim_GeneralFrame0,
+ sAnim_PIDGEY_1,
};
-const union AnimCmd *const gAnims_PIDGEOTTO[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_PIDGEOTTO_1,
+static const union AnimCmd *const sAnims_PIDGEOTTO[] ={
+ sAnim_GeneralFrame0,
+ sAnim_PIDGEOTTO_1,
};
-const union AnimCmd *const gAnims_PIDGEOT[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_PIDGEOT_1,
+static const union AnimCmd *const sAnims_PIDGEOT[] ={
+ sAnim_GeneralFrame0,
+ sAnim_PIDGEOT_1,
};
-const union AnimCmd *const gAnims_RATTATA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_RATTATA_1,
+static const union AnimCmd *const sAnims_RATTATA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_RATTATA_1,
};
-const union AnimCmd *const gAnims_RATICATE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_RATICATE_1,
+static const union AnimCmd *const sAnims_RATICATE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_RATICATE_1,
};
-const union AnimCmd *const gAnims_SPEAROW[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SPEAROW_1,
+static const union AnimCmd *const sAnims_SPEAROW[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SPEAROW_1,
};
-const union AnimCmd *const gAnims_FEAROW[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_FEAROW_1,
+static const union AnimCmd *const sAnims_FEAROW[] ={
+ sAnim_GeneralFrame0,
+ sAnim_FEAROW_1,
};
-const union AnimCmd *const gAnims_EKANS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_EKANS_1,
+static const union AnimCmd *const sAnims_EKANS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_EKANS_1,
};
-const union AnimCmd *const gAnims_ARBOK[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ARBOK_1,
+static const union AnimCmd *const sAnims_ARBOK[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ARBOK_1,
};
-const union AnimCmd *const gAnims_PIKACHU[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_PIKACHU_1,
- gAnimCmd_PIKACHU_2,
+static const union AnimCmd *const sAnims_PIKACHU[] ={
+ sAnim_GeneralFrame0,
+ sAnim_PIKACHU_1,
+ sAnim_PIKACHU_2,
};
-const union AnimCmd *const gAnims_RAICHU[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_RAICHU_1,
- gAnimCmd_RAICHU_2,
+static const union AnimCmd *const sAnims_RAICHU[] ={
+ sAnim_GeneralFrame0,
+ sAnim_RAICHU_1,
+ sAnim_RAICHU_2,
};
-const union AnimCmd *const gAnims_SANDSHREW[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SANDSHREW_1,
- gAnimCmd_SANDSHREW_2,
+static const union AnimCmd *const sAnims_SANDSHREW[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SANDSHREW_1,
+ sAnim_SANDSHREW_2,
};
-const union AnimCmd *const gAnims_SANDSLASH[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SANDSLASH_1,
- gAnimCmd_SANDSLASH_2,
+static const union AnimCmd *const sAnims_SANDSLASH[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SANDSLASH_1,
+ sAnim_SANDSLASH_2,
};
-const union AnimCmd *const gAnims_NIDORAN_F[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_NIDORAN_F_1,
+static const union AnimCmd *const sAnims_NIDORAN_F[] ={
+ sAnim_GeneralFrame0,
+ sAnim_NIDORAN_F_1,
};
-const union AnimCmd *const gAnims_NIDORINA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_NIDORINA_1,
+static const union AnimCmd *const sAnims_NIDORINA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_NIDORINA_1,
};
-const union AnimCmd *const gAnims_NIDOQUEEN[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_NIDOQUEEN_1,
+static const union AnimCmd *const sAnims_NIDOQUEEN[] ={
+ sAnim_GeneralFrame0,
+ sAnim_NIDOQUEEN_1,
};
-const union AnimCmd *const gAnims_NIDORAN_M[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_NIDORAN_M_1,
+static const union AnimCmd *const sAnims_NIDORAN_M[] ={
+ sAnim_GeneralFrame0,
+ sAnim_NIDORAN_M_1,
};
-const union AnimCmd *const gAnims_NIDORINO[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_NIDORINO_1,
+static const union AnimCmd *const sAnims_NIDORINO[] ={
+ sAnim_GeneralFrame0,
+ sAnim_NIDORINO_1,
};
-const union AnimCmd *const gAnims_NIDOKING[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_NIDOKING_1,
+static const union AnimCmd *const sAnims_NIDOKING[] ={
+ sAnim_GeneralFrame0,
+ sAnim_NIDOKING_1,
};
-const union AnimCmd *const gAnims_CLEFAIRY[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CLEFAIRY_1,
+static const union AnimCmd *const sAnims_CLEFAIRY[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CLEFAIRY_1,
};
-const union AnimCmd *const gAnims_CLEFABLE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CLEFABLE_1,
+static const union AnimCmd *const sAnims_CLEFABLE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CLEFABLE_1,
};
-const union AnimCmd *const gAnims_VULPIX[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_VULPIX_1,
- gAnimCmd_VULPIX_2,
+static const union AnimCmd *const sAnims_VULPIX[] ={
+ sAnim_GeneralFrame0,
+ sAnim_VULPIX_1,
+ sAnim_VULPIX_2,
};
-const union AnimCmd *const gAnims_NINETALES[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_NINETALES_1,
- gAnimCmd_NINETALES_2,
+static const union AnimCmd *const sAnims_NINETALES[] ={
+ sAnim_GeneralFrame0,
+ sAnim_NINETALES_1,
+ sAnim_NINETALES_2,
};
-const union AnimCmd *const gAnims_JIGGLYPUFF[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_JIGGLYPUFF_1,
- gAnimCmd_JIGGLYPUFF_2,
+static const union AnimCmd *const sAnims_JIGGLYPUFF[] ={
+ sAnim_GeneralFrame0,
+ sAnim_JIGGLYPUFF_1,
+ sAnim_JIGGLYPUFF_2,
};
-const union AnimCmd *const gAnims_WIGGLYTUFF[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_WIGGLYTUFF_1,
- gAnimCmd_WIGGLYTUFF_2,
+static const union AnimCmd *const sAnims_WIGGLYTUFF[] ={
+ sAnim_GeneralFrame0,
+ sAnim_WIGGLYTUFF_1,
+ sAnim_WIGGLYTUFF_2,
};
-const union AnimCmd *const gAnims_ZUBAT[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ZUBAT_1,
+static const union AnimCmd *const sAnims_ZUBAT[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ZUBAT_1,
};
-const union AnimCmd *const gAnims_GOLBAT[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GOLBAT_1,
+static const union AnimCmd *const sAnims_GOLBAT[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GOLBAT_1,
};
-const union AnimCmd *const gAnims_ODDISH[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ODDISH_1,
+static const union AnimCmd *const sAnims_ODDISH[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ODDISH_1,
};
-const union AnimCmd *const gAnims_GLOOM[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GLOOM_1,
+static const union AnimCmd *const sAnims_GLOOM[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GLOOM_1,
};
-const union AnimCmd *const gAnims_VILEPLUME[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_VILEPLUME_1,
+static const union AnimCmd *const sAnims_VILEPLUME[] ={
+ sAnim_GeneralFrame0,
+ sAnim_VILEPLUME_1,
};
-const union AnimCmd *const gAnims_PARAS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_PARAS_1,
+static const union AnimCmd *const sAnims_PARAS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_PARAS_1,
};
-const union AnimCmd *const gAnims_PARASECT[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_PARASECT_1,
+static const union AnimCmd *const sAnims_PARASECT[] ={
+ sAnim_GeneralFrame0,
+ sAnim_PARASECT_1,
};
-const union AnimCmd *const gAnims_VENONAT[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_VENONAT_1,
+static const union AnimCmd *const sAnims_VENONAT[] ={
+ sAnim_GeneralFrame0,
+ sAnim_VENONAT_1,
};
-const union AnimCmd *const gAnims_VENOMOTH[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_VENOMOTH_1,
+static const union AnimCmd *const sAnims_VENOMOTH[] ={
+ sAnim_GeneralFrame0,
+ sAnim_VENOMOTH_1,
};
-const union AnimCmd *const gAnims_DIGLETT[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_DIGLETT_1,
+static const union AnimCmd *const sAnims_DIGLETT[] ={
+ sAnim_GeneralFrame0,
+ sAnim_DIGLETT_1,
};
-const union AnimCmd *const gAnims_DUGTRIO[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_DUGTRIO_1,
+static const union AnimCmd *const sAnims_DUGTRIO[] ={
+ sAnim_GeneralFrame0,
+ sAnim_DUGTRIO_1,
};
-const union AnimCmd *const gAnims_MEOWTH[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MEOWTH_1,
+static const union AnimCmd *const sAnims_MEOWTH[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MEOWTH_1,
};
-const union AnimCmd *const gAnims_PERSIAN[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_PERSIAN_1,
+static const union AnimCmd *const sAnims_PERSIAN[] ={
+ sAnim_GeneralFrame0,
+ sAnim_PERSIAN_1,
};
-const union AnimCmd *const gAnims_PSYDUCK[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_PSYDUCK_1,
- gAnimCmd_PSYDUCK_2,
+static const union AnimCmd *const sAnims_PSYDUCK[] ={
+ sAnim_GeneralFrame0,
+ sAnim_PSYDUCK_1,
+ sAnim_PSYDUCK_2,
};
-const union AnimCmd *const gAnims_GOLDUCK[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GOLDUCK_1,
- gAnimCmd_GOLDUCK_2,
+static const union AnimCmd *const sAnims_GOLDUCK[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GOLDUCK_1,
+ sAnim_GOLDUCK_2,
};
-const union AnimCmd *const gAnims_MANKEY[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MANKEY_1,
+static const union AnimCmd *const sAnims_MANKEY[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MANKEY_1,
};
-const union AnimCmd *const gAnims_PRIMEAPE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_PRIMEAPE_1,
+static const union AnimCmd *const sAnims_PRIMEAPE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_PRIMEAPE_1,
};
-const union AnimCmd *const gAnims_GROWLITHE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GROWLITHE_1,
+static const union AnimCmd *const sAnims_GROWLITHE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GROWLITHE_1,
};
-const union AnimCmd *const gAnims_ARCANINE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ARCANINE_1,
+static const union AnimCmd *const sAnims_ARCANINE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ARCANINE_1,
};
-const union AnimCmd *const gAnims_POLIWAG[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_POLIWAG_1,
+static const union AnimCmd *const sAnims_POLIWAG[] ={
+ sAnim_GeneralFrame0,
+ sAnim_POLIWAG_1,
};
-const union AnimCmd *const gAnims_POLIWHIRL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_POLIWHIRL_1,
+static const union AnimCmd *const sAnims_POLIWHIRL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_POLIWHIRL_1,
};
-const union AnimCmd *const gAnims_POLIWRATH[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_POLIWRATH_1,
+static const union AnimCmd *const sAnims_POLIWRATH[] ={
+ sAnim_GeneralFrame0,
+ sAnim_POLIWRATH_1,
};
-const union AnimCmd *const gAnims_ABRA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ABRA_1,
+static const union AnimCmd *const sAnims_ABRA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ABRA_1,
};
-const union AnimCmd *const gAnims_KADABRA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_KADABRA_1,
+static const union AnimCmd *const sAnims_KADABRA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_KADABRA_1,
};
-const union AnimCmd *const gAnims_ALAKAZAM[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ALAKAZAM_1,
+static const union AnimCmd *const sAnims_ALAKAZAM[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ALAKAZAM_1,
};
-const union AnimCmd *const gAnims_MACHOP[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MACHOP_1,
+static const union AnimCmd *const sAnims_MACHOP[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MACHOP_1,
};
-const union AnimCmd *const gAnims_MACHOKE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MACHOKE_1,
+static const union AnimCmd *const sAnims_MACHOKE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MACHOKE_1,
};
-const union AnimCmd *const gAnims_MACHAMP[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MACHAMP_1,
+static const union AnimCmd *const sAnims_MACHAMP[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MACHAMP_1,
};
-const union AnimCmd *const gAnims_BELLSPROUT[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_BELLSPROUT_1,
+static const union AnimCmd *const sAnims_BELLSPROUT[] ={
+ sAnim_GeneralFrame0,
+ sAnim_BELLSPROUT_1,
};
-const union AnimCmd *const gAnims_WEEPINBELL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_WEEPINBELL_1,
+static const union AnimCmd *const sAnims_WEEPINBELL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_WEEPINBELL_1,
};
-const union AnimCmd *const gAnims_VICTREEBEL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_VICTREEBEL_1,
+static const union AnimCmd *const sAnims_VICTREEBEL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_VICTREEBEL_1,
};
-const union AnimCmd *const gAnims_TENTACOOL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_TENTACOOL_1,
+static const union AnimCmd *const sAnims_TENTACOOL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_TENTACOOL_1,
};
-const union AnimCmd *const gAnims_TENTACRUEL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_TENTACRUEL_1,
+static const union AnimCmd *const sAnims_TENTACRUEL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_TENTACRUEL_1,
};
-const union AnimCmd *const gAnims_GEODUDE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GEODUDE_1,
+static const union AnimCmd *const sAnims_GEODUDE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GEODUDE_1,
};
-const union AnimCmd *const gAnims_GRAVELER[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GRAVELER_1,
+static const union AnimCmd *const sAnims_GRAVELER[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GRAVELER_1,
};
-const union AnimCmd *const gAnims_GOLEM[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GOLEM_1,
+static const union AnimCmd *const sAnims_GOLEM[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GOLEM_1,
};
-const union AnimCmd *const gAnims_PONYTA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_PONYTA_1,
+static const union AnimCmd *const sAnims_PONYTA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_PONYTA_1,
};
-const union AnimCmd *const gAnims_RAPIDASH[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_RAPIDASH_1,
+static const union AnimCmd *const sAnims_RAPIDASH[] ={
+ sAnim_GeneralFrame0,
+ sAnim_RAPIDASH_1,
};
-const union AnimCmd *const gAnims_SLOWPOKE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SLOWPOKE_1,
+static const union AnimCmd *const sAnims_SLOWPOKE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SLOWPOKE_1,
};
-const union AnimCmd *const gAnims_SLOWBRO[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SLOWBRO_1,
+static const union AnimCmd *const sAnims_SLOWBRO[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SLOWBRO_1,
};
-const union AnimCmd *const gAnims_MAGNEMITE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MAGNEMITE_1,
+static const union AnimCmd *const sAnims_MAGNEMITE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MAGNEMITE_1,
};
-const union AnimCmd *const gAnims_MAGNETON[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MAGNETON_1,
+static const union AnimCmd *const sAnims_MAGNETON[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MAGNETON_1,
};
-const union AnimCmd *const gAnims_FARFETCHD[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_FARFETCHD_1,
+static const union AnimCmd *const sAnims_FARFETCHD[] ={
+ sAnim_GeneralFrame0,
+ sAnim_FARFETCHD_1,
};
-const union AnimCmd *const gAnims_DODUO[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_DODUO_1,
+static const union AnimCmd *const sAnims_DODUO[] ={
+ sAnim_GeneralFrame0,
+ sAnim_DODUO_1,
};
-const union AnimCmd *const gAnims_DODRIO[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_DODRIO_1,
+static const union AnimCmd *const sAnims_DODRIO[] ={
+ sAnim_GeneralFrame0,
+ sAnim_DODRIO_1,
};
-const union AnimCmd *const gAnims_SEEL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SEEL_1,
+static const union AnimCmd *const sAnims_SEEL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SEEL_1,
};
-const union AnimCmd *const gAnims_DEWGONG[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_DEWGONG_1,
+static const union AnimCmd *const sAnims_DEWGONG[] ={
+ sAnim_GeneralFrame0,
+ sAnim_DEWGONG_1,
};
-const union AnimCmd *const gAnims_GRIMER[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GRIMER_1,
- gAnimCmd_GRIMER_2,
+static const union AnimCmd *const sAnims_GRIMER[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GRIMER_1,
+ sAnim_GRIMER_2,
};
-const union AnimCmd *const gAnims_MUK[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MUK_1,
- gAnimCmd_MUK_2,
+static const union AnimCmd *const sAnims_MUK[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MUK_1,
+ sAnim_MUK_2,
};
-const union AnimCmd *const gAnims_SHELLDER[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SHELLDER_1,
+static const union AnimCmd *const sAnims_SHELLDER[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SHELLDER_1,
};
-const union AnimCmd *const gAnims_CLOYSTER[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CLOYSTER_1,
+static const union AnimCmd *const sAnims_CLOYSTER[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CLOYSTER_1,
};
-const union AnimCmd *const gAnims_GASTLY[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GASTLY_1,
+static const union AnimCmd *const sAnims_GASTLY[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GASTLY_1,
};
-const union AnimCmd *const gAnims_HAUNTER[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_HAUNTER_1,
+static const union AnimCmd *const sAnims_HAUNTER[] ={
+ sAnim_GeneralFrame0,
+ sAnim_HAUNTER_1,
};
-const union AnimCmd *const gAnims_GENGAR[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GENGAR_1,
+static const union AnimCmd *const sAnims_GENGAR[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GENGAR_1,
};
-const union AnimCmd *const gAnims_ONIX[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ONIX_1,
+static const union AnimCmd *const sAnims_ONIX[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ONIX_1,
};
-const union AnimCmd *const gAnims_DROWZEE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_DROWZEE_1,
+static const union AnimCmd *const sAnims_DROWZEE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_DROWZEE_1,
};
-const union AnimCmd *const gAnims_HYPNO[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_HYPNO_1,
+static const union AnimCmd *const sAnims_HYPNO[] ={
+ sAnim_GeneralFrame0,
+ sAnim_HYPNO_1,
};
-const union AnimCmd *const gAnims_KRABBY[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_KRABBY_1,
+static const union AnimCmd *const sAnims_KRABBY[] ={
+ sAnim_GeneralFrame0,
+ sAnim_KRABBY_1,
};
-const union AnimCmd *const gAnims_KINGLER[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_KINGLER_1,
+static const union AnimCmd *const sAnims_KINGLER[] ={
+ sAnim_GeneralFrame0,
+ sAnim_KINGLER_1,
};
-const union AnimCmd *const gAnims_VOLTORB[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_VOLTORB_1,
+static const union AnimCmd *const sAnims_VOLTORB[] ={
+ sAnim_GeneralFrame0,
+ sAnim_VOLTORB_1,
};
-const union AnimCmd *const gAnims_ELECTRODE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ELECTRODE_1,
+static const union AnimCmd *const sAnims_ELECTRODE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ELECTRODE_1,
};
-const union AnimCmd *const gAnims_EXEGGCUTE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_EXEGGCUTE_1,
+static const union AnimCmd *const sAnims_EXEGGCUTE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_EXEGGCUTE_1,
};
-const union AnimCmd *const gAnims_EXEGGUTOR[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_EXEGGUTOR_1,
+static const union AnimCmd *const sAnims_EXEGGUTOR[] ={
+ sAnim_GeneralFrame0,
+ sAnim_EXEGGUTOR_1,
};
-const union AnimCmd *const gAnims_CUBONE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CUBONE_1,
+static const union AnimCmd *const sAnims_CUBONE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CUBONE_1,
};
-const union AnimCmd *const gAnims_MAROWAK[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MAROWAK_1,
+static const union AnimCmd *const sAnims_MAROWAK[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MAROWAK_1,
};
-const union AnimCmd *const gAnims_HITMONLEE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_HITMONLEE_1,
+static const union AnimCmd *const sAnims_HITMONLEE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_HITMONLEE_1,
};
-const union AnimCmd *const gAnims_HITMONCHAN[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_HITMONCHAN_1,
+static const union AnimCmd *const sAnims_HITMONCHAN[] ={
+ sAnim_GeneralFrame0,
+ sAnim_HITMONCHAN_1,
};
-const union AnimCmd *const gAnims_LICKITUNG[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_LICKITUNG_1,
+static const union AnimCmd *const sAnims_LICKITUNG[] ={
+ sAnim_GeneralFrame0,
+ sAnim_LICKITUNG_1,
};
-const union AnimCmd *const gAnims_KOFFING[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_KOFFING_1,
- gAnimCmd_KOFFING_2,
+static const union AnimCmd *const sAnims_KOFFING[] ={
+ sAnim_GeneralFrame0,
+ sAnim_KOFFING_1,
+ sAnim_KOFFING_2,
};
-const union AnimCmd *const gAnims_WEEZING[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_WEEZING_1,
- gAnimCmd_WEEZING_2,
+static const union AnimCmd *const sAnims_WEEZING[] ={
+ sAnim_GeneralFrame0,
+ sAnim_WEEZING_1,
+ sAnim_WEEZING_2,
};
-const union AnimCmd *const gAnims_RHYHORN[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_RHYHORN_1,
- gAnimCmd_RHYHORN_2,
+static const union AnimCmd *const sAnims_RHYHORN[] ={
+ sAnim_GeneralFrame0,
+ sAnim_RHYHORN_1,
+ sAnim_RHYHORN_2,
};
-const union AnimCmd *const gAnims_RHYDON[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_RHYDON_1,
- gAnimCmd_RHYDON_2,
+static const union AnimCmd *const sAnims_RHYDON[] ={
+ sAnim_GeneralFrame0,
+ sAnim_RHYDON_1,
+ sAnim_RHYDON_2,
};
-const union AnimCmd *const gAnims_CHANSEY[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CHANSEY_1,
+static const union AnimCmd *const sAnims_CHANSEY[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CHANSEY_1,
};
-const union AnimCmd *const gAnims_TANGELA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_TANGELA_1,
+static const union AnimCmd *const sAnims_TANGELA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_TANGELA_1,
};
-const union AnimCmd *const gAnims_KANGASKHAN[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_KANGASKHAN_1,
+static const union AnimCmd *const sAnims_KANGASKHAN[] ={
+ sAnim_GeneralFrame0,
+ sAnim_KANGASKHAN_1,
};
-const union AnimCmd *const gAnims_HORSEA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_HORSEA_1,
- gAnimCmd_HORSEA_2,
+static const union AnimCmd *const sAnims_HORSEA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_HORSEA_1,
+ sAnim_HORSEA_2,
};
-const union AnimCmd *const gAnims_SEADRA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SEADRA_1,
- gAnimCmd_SEADRA_2,
+static const union AnimCmd *const sAnims_SEADRA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SEADRA_1,
+ sAnim_SEADRA_2,
};
-const union AnimCmd *const gAnims_GOLDEEN[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GOLDEEN_1,
+static const union AnimCmd *const sAnims_GOLDEEN[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GOLDEEN_1,
};
-const union AnimCmd *const gAnims_SEAKING[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SEAKING_1,
+static const union AnimCmd *const sAnims_SEAKING[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SEAKING_1,
};
-const union AnimCmd *const gAnims_STARYU[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_STARYU_1,
- gAnimCmd_STARYU_2,
+static const union AnimCmd *const sAnims_STARYU[] ={
+ sAnim_GeneralFrame0,
+ sAnim_STARYU_1,
+ sAnim_STARYU_2,
};
-const union AnimCmd *const gAnims_STARMIE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_STARMIE_1,
- gAnimCmd_STARMIE_2,
+static const union AnimCmd *const sAnims_STARMIE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_STARMIE_1,
+ sAnim_STARMIE_2,
};
-const union AnimCmd *const gAnims_MR_MIME[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MR_MIME_1,
+static const union AnimCmd *const sAnims_MR_MIME[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MR_MIME_1,
};
-const union AnimCmd *const gAnims_SCYTHER[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SCYTHER_1,
+static const union AnimCmd *const sAnims_SCYTHER[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SCYTHER_1,
};
-const union AnimCmd *const gAnims_JYNX[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_JYNX_1,
+static const union AnimCmd *const sAnims_JYNX[] ={
+ sAnim_GeneralFrame0,
+ sAnim_JYNX_1,
};
-const union AnimCmd *const gAnims_ELECTABUZZ[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ELECTABUZZ_1,
+static const union AnimCmd *const sAnims_ELECTABUZZ[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ELECTABUZZ_1,
};
-const union AnimCmd *const gAnims_MAGMAR[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MAGMAR_1,
+static const union AnimCmd *const sAnims_MAGMAR[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MAGMAR_1,
};
-const union AnimCmd *const gAnims_PINSIR[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_PINSIR_1,
- gAnimCmd_PINSIR_2,
+static const union AnimCmd *const sAnims_PINSIR[] ={
+ sAnim_GeneralFrame0,
+ sAnim_PINSIR_1,
+ sAnim_PINSIR_2,
};
-const union AnimCmd *const gAnims_TAUROS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_TAUROS_1,
+static const union AnimCmd *const sAnims_TAUROS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_TAUROS_1,
};
-const union AnimCmd *const gAnims_MAGIKARP[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MAGIKARP_1,
+static const union AnimCmd *const sAnims_MAGIKARP[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MAGIKARP_1,
};
-const union AnimCmd *const gAnims_GYARADOS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GYARADOS_1,
+static const union AnimCmd *const sAnims_GYARADOS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GYARADOS_1,
};
-const union AnimCmd *const gAnims_LAPRAS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_LAPRAS_1,
+static const union AnimCmd *const sAnims_LAPRAS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_LAPRAS_1,
};
-const union AnimCmd *const gAnims_DITTO[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_DITTO_1,
+static const union AnimCmd *const sAnims_DITTO[] ={
+ sAnim_GeneralFrame0,
+ sAnim_DITTO_1,
};
-const union AnimCmd *const gAnims_EEVEE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_EEVEE_1,
+static const union AnimCmd *const sAnims_EEVEE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_EEVEE_1,
};
-const union AnimCmd *const gAnims_VAPOREON[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_VAPOREON_1,
+static const union AnimCmd *const sAnims_VAPOREON[] ={
+ sAnim_GeneralFrame0,
+ sAnim_VAPOREON_1,
};
-const union AnimCmd *const gAnims_JOLTEON[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_JOLTEON_1,
+static const union AnimCmd *const sAnims_JOLTEON[] ={
+ sAnim_GeneralFrame0,
+ sAnim_JOLTEON_1,
};
-const union AnimCmd *const gAnims_FLAREON[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_FLAREON_1,
+static const union AnimCmd *const sAnims_FLAREON[] ={
+ sAnim_GeneralFrame0,
+ sAnim_FLAREON_1,
};
-const union AnimCmd *const gAnims_PORYGON[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_PORYGON_1,
+static const union AnimCmd *const sAnims_PORYGON[] ={
+ sAnim_GeneralFrame0,
+ sAnim_PORYGON_1,
};
-const union AnimCmd *const gAnims_OMANYTE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_OMANYTE_1,
+static const union AnimCmd *const sAnims_OMANYTE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_OMANYTE_1,
};
-const union AnimCmd *const gAnims_OMASTAR[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_OMASTAR_1,
+static const union AnimCmd *const sAnims_OMASTAR[] ={
+ sAnim_GeneralFrame0,
+ sAnim_OMASTAR_1,
};
-const union AnimCmd *const gAnims_KABUTO[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_KABUTO_1,
+static const union AnimCmd *const sAnims_KABUTO[] ={
+ sAnim_GeneralFrame0,
+ sAnim_KABUTO_1,
};
-const union AnimCmd *const gAnims_KABUTOPS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_KABUTOPS_1,
+static const union AnimCmd *const sAnims_KABUTOPS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_KABUTOPS_1,
};
-const union AnimCmd *const gAnims_AERODACTYL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_AERODACTYL_1,
+static const union AnimCmd *const sAnims_AERODACTYL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_AERODACTYL_1,
};
-const union AnimCmd *const gAnims_SNORLAX[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SNORLAX_1,
+static const union AnimCmd *const sAnims_SNORLAX[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SNORLAX_1,
};
-const union AnimCmd *const gAnims_ARTICUNO[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ARTICUNO_1,
+static const union AnimCmd *const sAnims_ARTICUNO[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ARTICUNO_1,
};
-const union AnimCmd *const gAnims_ZAPDOS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ZAPDOS_1,
+static const union AnimCmd *const sAnims_ZAPDOS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ZAPDOS_1,
};
-const union AnimCmd *const gAnims_MOLTRES[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MOLTRES_1,
+static const union AnimCmd *const sAnims_MOLTRES[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MOLTRES_1,
};
-const union AnimCmd *const gAnims_DRATINI[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_DRATINI_1,
+static const union AnimCmd *const sAnims_DRATINI[] ={
+ sAnim_GeneralFrame0,
+ sAnim_DRATINI_1,
};
-const union AnimCmd *const gAnims_DRAGONAIR[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_DRAGONAIR_1,
+static const union AnimCmd *const sAnims_DRAGONAIR[] ={
+ sAnim_GeneralFrame0,
+ sAnim_DRAGONAIR_1,
};
-const union AnimCmd *const gAnims_DRAGONITE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_DRAGONITE_1,
+static const union AnimCmd *const sAnims_DRAGONITE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_DRAGONITE_1,
};
-const union AnimCmd *const gAnims_MEWTWO[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MEWTWO_1,
+static const union AnimCmd *const sAnims_MEWTWO[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MEWTWO_1,
};
-const union AnimCmd *const gAnims_MEW[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MEW_1,
+static const union AnimCmd *const sAnims_MEW[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MEW_1,
};
-const union AnimCmd *const gAnims_CHIKORITA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CHIKORITA_1,
+static const union AnimCmd *const sAnims_CHIKORITA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CHIKORITA_1,
};
-const union AnimCmd *const gAnims_BAYLEEF[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_BAYLEEF_1,
+static const union AnimCmd *const sAnims_BAYLEEF[] ={
+ sAnim_GeneralFrame0,
+ sAnim_BAYLEEF_1,
};
-const union AnimCmd *const gAnims_MEGANIUM[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MEGANIUM_1,
+static const union AnimCmd *const sAnims_MEGANIUM[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MEGANIUM_1,
};
-const union AnimCmd *const gAnims_CYNDAQUIL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CYNDAQUIL_1,
+static const union AnimCmd *const sAnims_CYNDAQUIL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CYNDAQUIL_1,
};
-const union AnimCmd *const gAnims_QUILAVA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_QUILAVA_1,
+static const union AnimCmd *const sAnims_QUILAVA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_QUILAVA_1,
};
-const union AnimCmd *const gAnims_TYPHLOSION[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_TYPHLOSION_1,
+static const union AnimCmd *const sAnims_TYPHLOSION[] ={
+ sAnim_GeneralFrame0,
+ sAnim_TYPHLOSION_1,
};
-const union AnimCmd *const gAnims_TOTODILE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_TOTODILE_1,
+static const union AnimCmd *const sAnims_TOTODILE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_TOTODILE_1,
};
-const union AnimCmd *const gAnims_CROCONAW[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CROCONAW_1,
+static const union AnimCmd *const sAnims_CROCONAW[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CROCONAW_1,
};
-const union AnimCmd *const gAnims_FERALIGATR[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_FERALIGATR_1,
+static const union AnimCmd *const sAnims_FERALIGATR[] ={
+ sAnim_GeneralFrame0,
+ sAnim_FERALIGATR_1,
};
-const union AnimCmd *const gAnims_SENTRET[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SENTRET_1,
+static const union AnimCmd *const sAnims_SENTRET[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SENTRET_1,
};
-const union AnimCmd *const gAnims_FURRET[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_FURRET_1,
+static const union AnimCmd *const sAnims_FURRET[] ={
+ sAnim_GeneralFrame0,
+ sAnim_FURRET_1,
};
-const union AnimCmd *const gAnims_HOOTHOOT[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_HOOTHOOT_1,
+static const union AnimCmd *const sAnims_HOOTHOOT[] ={
+ sAnim_GeneralFrame0,
+ sAnim_HOOTHOOT_1,
};
-const union AnimCmd *const gAnims_NOCTOWL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_NOCTOWL_1,
+static const union AnimCmd *const sAnims_NOCTOWL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_NOCTOWL_1,
};
-const union AnimCmd *const gAnims_LEDYBA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_LEDYBA_1,
+static const union AnimCmd *const sAnims_LEDYBA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_LEDYBA_1,
};
-const union AnimCmd *const gAnims_LEDIAN[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_LEDIAN_1,
+static const union AnimCmd *const sAnims_LEDIAN[] ={
+ sAnim_GeneralFrame0,
+ sAnim_LEDIAN_1,
};
-const union AnimCmd *const gAnims_SPINARAK[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SPINARAK_1,
+static const union AnimCmd *const sAnims_SPINARAK[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SPINARAK_1,
};
-const union AnimCmd *const gAnims_ARIADOS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ARIADOS_1,
+static const union AnimCmd *const sAnims_ARIADOS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ARIADOS_1,
};
-const union AnimCmd *const gAnims_CROBAT[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CROBAT_1,
+static const union AnimCmd *const sAnims_CROBAT[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CROBAT_1,
};
-const union AnimCmd *const gAnims_CHINCHOU[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CHINCHOU_1,
- gAnimCmd_CHINCHOU_2,
+static const union AnimCmd *const sAnims_CHINCHOU[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CHINCHOU_1,
+ sAnim_CHINCHOU_2,
};
-const union AnimCmd *const gAnims_LANTURN[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_LANTURN_1,
- gAnimCmd_LANTURN_2,
+static const union AnimCmd *const sAnims_LANTURN[] ={
+ sAnim_GeneralFrame0,
+ sAnim_LANTURN_1,
+ sAnim_LANTURN_2,
};
-const union AnimCmd *const gAnims_PICHU[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_PICHU_1,
- gAnimCmd_PICHU_2,
+static const union AnimCmd *const sAnims_PICHU[] ={
+ sAnim_GeneralFrame0,
+ sAnim_PICHU_1,
+ sAnim_PICHU_2,
};
-const union AnimCmd *const gAnims_CLEFFA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CLEFFA_1,
+static const union AnimCmd *const sAnims_CLEFFA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CLEFFA_1,
};
-const union AnimCmd *const gAnims_IGGLYBUFF[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_IGGLYBUFF_1,
- gAnimCmd_IGGLYBUFF_2,
+static const union AnimCmd *const sAnims_IGGLYBUFF[] ={
+ sAnim_GeneralFrame0,
+ sAnim_IGGLYBUFF_1,
+ sAnim_IGGLYBUFF_2,
};
-const union AnimCmd *const gAnims_TOGEPI[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_TOGEPI_1,
+static const union AnimCmd *const sAnims_TOGEPI[] ={
+ sAnim_GeneralFrame0,
+ sAnim_TOGEPI_1,
};
-const union AnimCmd *const gAnims_TOGETIC[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_TOGETIC_1,
+static const union AnimCmd *const sAnims_TOGETIC[] ={
+ sAnim_GeneralFrame0,
+ sAnim_TOGETIC_1,
};
-const union AnimCmd *const gAnims_NATU[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_NATU_1,
- gAnimCmd_NATU_2,
+static const union AnimCmd *const sAnims_NATU[] ={
+ sAnim_GeneralFrame0,
+ sAnim_NATU_1,
+ sAnim_NATU_2,
};
-const union AnimCmd *const gAnims_XATU[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_XATU_1,
- gAnimCmd_XATU_2,
+static const union AnimCmd *const sAnims_XATU[] ={
+ sAnim_GeneralFrame0,
+ sAnim_XATU_1,
+ sAnim_XATU_2,
};
-const union AnimCmd *const gAnims_MAREEP[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MAREEP_1,
+static const union AnimCmd *const sAnims_MAREEP[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MAREEP_1,
};
-const union AnimCmd *const gAnims_FLAAFFY[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_FLAAFFY_1,
+static const union AnimCmd *const sAnims_FLAAFFY[] ={
+ sAnim_GeneralFrame0,
+ sAnim_FLAAFFY_1,
};
-const union AnimCmd *const gAnims_AMPHAROS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_AMPHAROS_1,
+static const union AnimCmd *const sAnims_AMPHAROS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_AMPHAROS_1,
};
-const union AnimCmd *const gAnims_BELLOSSOM[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_BELLOSSOM_1,
+static const union AnimCmd *const sAnims_BELLOSSOM[] ={
+ sAnim_GeneralFrame0,
+ sAnim_BELLOSSOM_1,
};
-const union AnimCmd *const gAnims_MARILL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MARILL_1,
+static const union AnimCmd *const sAnims_MARILL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MARILL_1,
};
-const union AnimCmd *const gAnims_AZUMARILL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_AZUMARILL_1,
+static const union AnimCmd *const sAnims_AZUMARILL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_AZUMARILL_1,
};
-const union AnimCmd *const gAnims_SUDOWOODO[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SUDOWOODO_1,
+static const union AnimCmd *const sAnims_SUDOWOODO[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SUDOWOODO_1,
};
-const union AnimCmd *const gAnims_POLITOED[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_POLITOED_1,
+static const union AnimCmd *const sAnims_POLITOED[] ={
+ sAnim_GeneralFrame0,
+ sAnim_POLITOED_1,
};
-const union AnimCmd *const gAnims_HOPPIP[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_HOPPIP_1,
+static const union AnimCmd *const sAnims_HOPPIP[] ={
+ sAnim_GeneralFrame0,
+ sAnim_HOPPIP_1,
};
-const union AnimCmd *const gAnims_SKIPLOOM[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SKIPLOOM_1,
+static const union AnimCmd *const sAnims_SKIPLOOM[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SKIPLOOM_1,
};
-const union AnimCmd *const gAnims_JUMPLUFF[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_JUMPLUFF_1,
+static const union AnimCmd *const sAnims_JUMPLUFF[] ={
+ sAnim_GeneralFrame0,
+ sAnim_JUMPLUFF_1,
};
-const union AnimCmd *const gAnims_AIPOM[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_AIPOM_1,
+static const union AnimCmd *const sAnims_AIPOM[] ={
+ sAnim_GeneralFrame0,
+ sAnim_AIPOM_1,
};
-const union AnimCmd *const gAnims_SUNKERN[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SUNKERN_1,
+static const union AnimCmd *const sAnims_SUNKERN[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SUNKERN_1,
};
-const union AnimCmd *const gAnims_SUNFLORA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SUNFLORA_1,
+static const union AnimCmd *const sAnims_SUNFLORA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SUNFLORA_1,
};
-const union AnimCmd *const gAnims_YANMA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_YANMA_1,
+static const union AnimCmd *const sAnims_YANMA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_YANMA_1,
};
-const union AnimCmd *const gAnims_WOOPER[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_WOOPER_1,
+static const union AnimCmd *const sAnims_WOOPER[] ={
+ sAnim_GeneralFrame0,
+ sAnim_WOOPER_1,
};
-const union AnimCmd *const gAnims_QUAGSIRE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_QUAGSIRE_1,
+static const union AnimCmd *const sAnims_QUAGSIRE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_QUAGSIRE_1,
};
-const union AnimCmd *const gAnims_ESPEON[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ESPEON_1,
+static const union AnimCmd *const sAnims_ESPEON[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ESPEON_1,
};
-const union AnimCmd *const gAnims_UMBREON[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UMBREON_1,
+static const union AnimCmd *const sAnims_UMBREON[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UMBREON_1,
};
-const union AnimCmd *const gAnims_MURKROW[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MURKROW_1,
+static const union AnimCmd *const sAnims_MURKROW[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MURKROW_1,
};
-const union AnimCmd *const gAnims_SLOWKING[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SLOWKING_1,
+static const union AnimCmd *const sAnims_SLOWKING[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SLOWKING_1,
};
-const union AnimCmd *const gAnims_MISDREAVUS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MISDREAVUS_1,
+static const union AnimCmd *const sAnims_MISDREAVUS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MISDREAVUS_1,
};
-const union AnimCmd *const gAnims_UNOWN[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_1,
+static const union AnimCmd *const sAnims_UNOWN[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_1,
};
-const union AnimCmd *const gAnims_WOBBUFFET[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_WOBBUFFET_1,
- gAnimCmd_WOBBUFFET_2,
+static const union AnimCmd *const sAnims_WOBBUFFET[] ={
+ sAnim_GeneralFrame0,
+ sAnim_WOBBUFFET_1,
+ sAnim_WOBBUFFET_2,
};
-const union AnimCmd *const gAnims_GIRAFARIG[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GIRAFARIG_1,
- gAnimCmd_GIRAFARIG_2,
+static const union AnimCmd *const sAnims_GIRAFARIG[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GIRAFARIG_1,
+ sAnim_GIRAFARIG_2,
};
-const union AnimCmd *const gAnims_PINECO[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_PINECO_1,
+static const union AnimCmd *const sAnims_PINECO[] ={
+ sAnim_GeneralFrame0,
+ sAnim_PINECO_1,
};
-const union AnimCmd *const gAnims_FORRETRESS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_FORRETRESS_1,
+static const union AnimCmd *const sAnims_FORRETRESS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_FORRETRESS_1,
};
-const union AnimCmd *const gAnims_DUNSPARCE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_DUNSPARCE_1,
+static const union AnimCmd *const sAnims_DUNSPARCE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_DUNSPARCE_1,
};
-const union AnimCmd *const gAnims_GLIGAR[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GLIGAR_1,
+static const union AnimCmd *const sAnims_GLIGAR[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GLIGAR_1,
};
-const union AnimCmd *const gAnims_STEELIX[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_STEELIX_1,
+static const union AnimCmd *const sAnims_STEELIX[] ={
+ sAnim_GeneralFrame0,
+ sAnim_STEELIX_1,
};
-const union AnimCmd *const gAnims_SNUBBULL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SNUBBULL_1,
+static const union AnimCmd *const sAnims_SNUBBULL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SNUBBULL_1,
};
-const union AnimCmd *const gAnims_GRANBULL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GRANBULL_1,
+static const union AnimCmd *const sAnims_GRANBULL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GRANBULL_1,
};
-const union AnimCmd *const gAnims_QWILFISH[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_QWILFISH_1,
+static const union AnimCmd *const sAnims_QWILFISH[] ={
+ sAnim_GeneralFrame0,
+ sAnim_QWILFISH_1,
};
-const union AnimCmd *const gAnims_SCIZOR[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SCIZOR_1,
+static const union AnimCmd *const sAnims_SCIZOR[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SCIZOR_1,
};
-const union AnimCmd *const gAnims_SHUCKLE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SHUCKLE_1,
+static const union AnimCmd *const sAnims_SHUCKLE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SHUCKLE_1,
};
-const union AnimCmd *const gAnims_HERACROSS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_HERACROSS_1,
- gAnimCmd_HERACROSS_2,
+static const union AnimCmd *const sAnims_HERACROSS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_HERACROSS_1,
+ sAnim_HERACROSS_2,
};
-const union AnimCmd *const gAnims_SNEASEL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SNEASEL_1,
+static const union AnimCmd *const sAnims_SNEASEL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SNEASEL_1,
};
-const union AnimCmd *const gAnims_TEDDIURSA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_TEDDIURSA_1,
+static const union AnimCmd *const sAnims_TEDDIURSA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_TEDDIURSA_1,
};
-const union AnimCmd *const gAnims_URSARING[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_URSARING_1,
+static const union AnimCmd *const sAnims_URSARING[] ={
+ sAnim_GeneralFrame0,
+ sAnim_URSARING_1,
};
-const union AnimCmd *const gAnims_SLUGMA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SLUGMA_1,
- gAnimCmd_SLUGMA_2,
+static const union AnimCmd *const sAnims_SLUGMA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SLUGMA_1,
+ sAnim_SLUGMA_2,
};
-const union AnimCmd *const gAnims_MAGCARGO[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MAGCARGO_1,
- gAnimCmd_MAGCARGO_2,
+static const union AnimCmd *const sAnims_MAGCARGO[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MAGCARGO_1,
+ sAnim_MAGCARGO_2,
};
-const union AnimCmd *const gAnims_SWINUB[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SWINUB_1,
+static const union AnimCmd *const sAnims_SWINUB[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SWINUB_1,
};
-const union AnimCmd *const gAnims_PILOSWINE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_PILOSWINE_1,
+static const union AnimCmd *const sAnims_PILOSWINE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_PILOSWINE_1,
};
-const union AnimCmd *const gAnims_CORSOLA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CORSOLA_1,
- gAnimCmd_CORSOLA_2,
+static const union AnimCmd *const sAnims_CORSOLA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CORSOLA_1,
+ sAnim_CORSOLA_2,
};
-const union AnimCmd *const gAnims_REMORAID[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_REMORAID_1,
+static const union AnimCmd *const sAnims_REMORAID[] ={
+ sAnim_GeneralFrame0,
+ sAnim_REMORAID_1,
};
-const union AnimCmd *const gAnims_OCTILLERY[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_OCTILLERY_1,
+static const union AnimCmd *const sAnims_OCTILLERY[] ={
+ sAnim_GeneralFrame0,
+ sAnim_OCTILLERY_1,
};
-const union AnimCmd *const gAnims_DELIBIRD[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_DELIBIRD_1,
+static const union AnimCmd *const sAnims_DELIBIRD[] ={
+ sAnim_GeneralFrame0,
+ sAnim_DELIBIRD_1,
};
-const union AnimCmd *const gAnims_MANTINE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MANTINE_1,
+static const union AnimCmd *const sAnims_MANTINE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MANTINE_1,
};
-const union AnimCmd *const gAnims_SKARMORY[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SKARMORY_1,
- gAnimCmd_SKARMORY_2,
+static const union AnimCmd *const sAnims_SKARMORY[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SKARMORY_1,
+ sAnim_SKARMORY_2,
};
-const union AnimCmd *const gAnims_HOUNDOUR[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_HOUNDOUR_1,
+static const union AnimCmd *const sAnims_HOUNDOUR[] ={
+ sAnim_GeneralFrame0,
+ sAnim_HOUNDOUR_1,
};
-const union AnimCmd *const gAnims_HOUNDOOM[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_HOUNDOOM_1,
+static const union AnimCmd *const sAnims_HOUNDOOM[] ={
+ sAnim_GeneralFrame0,
+ sAnim_HOUNDOOM_1,
};
-const union AnimCmd *const gAnims_KINGDRA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_KINGDRA_1,
- gAnimCmd_KINGDRA_2,
+static const union AnimCmd *const sAnims_KINGDRA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_KINGDRA_1,
+ sAnim_KINGDRA_2,
};
-const union AnimCmd *const gAnims_PHANPY[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_PHANPY_1,
- gAnimCmd_PHANPY_2,
+static const union AnimCmd *const sAnims_PHANPY[] ={
+ sAnim_GeneralFrame0,
+ sAnim_PHANPY_1,
+ sAnim_PHANPY_2,
};
-const union AnimCmd *const gAnims_DONPHAN[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_DONPHAN_1,
- gAnimCmd_DONPHAN_2,
+static const union AnimCmd *const sAnims_DONPHAN[] ={
+ sAnim_GeneralFrame0,
+ sAnim_DONPHAN_1,
+ sAnim_DONPHAN_2,
};
-const union AnimCmd *const gAnims_PORYGON2[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_PORYGON2_1,
+static const union AnimCmd *const sAnims_PORYGON2[] ={
+ sAnim_GeneralFrame0,
+ sAnim_PORYGON2_1,
};
-const union AnimCmd *const gAnims_STANTLER[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_STANTLER_1,
+static const union AnimCmd *const sAnims_STANTLER[] ={
+ sAnim_GeneralFrame0,
+ sAnim_STANTLER_1,
};
-const union AnimCmd *const gAnims_SMEARGLE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SMEARGLE_1,
+static const union AnimCmd *const sAnims_SMEARGLE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SMEARGLE_1,
};
-const union AnimCmd *const gAnims_TYROGUE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_TYROGUE_1,
+static const union AnimCmd *const sAnims_TYROGUE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_TYROGUE_1,
};
-const union AnimCmd *const gAnims_HITMONTOP[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_HITMONTOP_1,
+static const union AnimCmd *const sAnims_HITMONTOP[] ={
+ sAnim_GeneralFrame0,
+ sAnim_HITMONTOP_1,
};
-const union AnimCmd *const gAnims_SMOOCHUM[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SMOOCHUM_1,
+static const union AnimCmd *const sAnims_SMOOCHUM[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SMOOCHUM_1,
};
-const union AnimCmd *const gAnims_ELEKID[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ELEKID_1,
+static const union AnimCmd *const sAnims_ELEKID[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ELEKID_1,
};
-const union AnimCmd *const gAnims_MAGBY[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MAGBY_1,
+static const union AnimCmd *const sAnims_MAGBY[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MAGBY_1,
};
-const union AnimCmd *const gAnims_MILTANK[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MILTANK_1,
+static const union AnimCmd *const sAnims_MILTANK[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MILTANK_1,
};
-const union AnimCmd *const gAnims_BLISSEY[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_BLISSEY_1,
+static const union AnimCmd *const sAnims_BLISSEY[] ={
+ sAnim_GeneralFrame0,
+ sAnim_BLISSEY_1,
};
-const union AnimCmd *const gAnims_RAIKOU[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_RAIKOU_1,
+static const union AnimCmd *const sAnims_RAIKOU[] ={
+ sAnim_GeneralFrame0,
+ sAnim_RAIKOU_1,
};
-const union AnimCmd *const gAnims_ENTEI[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ENTEI_1,
+static const union AnimCmd *const sAnims_ENTEI[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ENTEI_1,
};
-const union AnimCmd *const gAnims_SUICUNE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SUICUNE_1,
+static const union AnimCmd *const sAnims_SUICUNE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SUICUNE_1,
};
-const union AnimCmd *const gAnims_LARVITAR[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_LARVITAR_1,
+static const union AnimCmd *const sAnims_LARVITAR[] ={
+ sAnim_GeneralFrame0,
+ sAnim_LARVITAR_1,
};
-const union AnimCmd *const gAnims_PUPITAR[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_PUPITAR_1,
+static const union AnimCmd *const sAnims_PUPITAR[] ={
+ sAnim_GeneralFrame0,
+ sAnim_PUPITAR_1,
};
-const union AnimCmd *const gAnims_TYRANITAR[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_TYRANITAR_1,
+static const union AnimCmd *const sAnims_TYRANITAR[] ={
+ sAnim_GeneralFrame0,
+ sAnim_TYRANITAR_1,
};
-const union AnimCmd *const gAnims_LUGIA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_LUGIA_1,
+static const union AnimCmd *const sAnims_LUGIA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_LUGIA_1,
};
-const union AnimCmd *const gAnims_HO_OH[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_HO_OH_1,
+static const union AnimCmd *const sAnims_HO_OH[] ={
+ sAnim_GeneralFrame0,
+ sAnim_HO_OH_1,
};
-const union AnimCmd *const gAnims_CELEBI[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CELEBI_1,
+static const union AnimCmd *const sAnims_CELEBI[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CELEBI_1,
};
-const union AnimCmd *const gAnims_OLD_UNOWN_B[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_OLD_UNOWN_B_1,
+static const union AnimCmd *const sAnims_OLD_UNOWN_B[] ={
+ sAnim_GeneralFrame0,
+ sAnim_OLD_UNOWN_B_1,
};
-const union AnimCmd *const gAnims_TREECKO[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_TREECKO_1,
+static const union AnimCmd *const sAnims_TREECKO[] ={
+ sAnim_GeneralFrame0,
+ sAnim_TREECKO_1,
};
-const union AnimCmd *const gAnims_GROVYLE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GROVYLE_1,
+static const union AnimCmd *const sAnims_GROVYLE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GROVYLE_1,
};
-const union AnimCmd *const gAnims_SCEPTILE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SCEPTILE_1,
+static const union AnimCmd *const sAnims_SCEPTILE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SCEPTILE_1,
};
-const union AnimCmd *const gAnims_TORCHIC[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_TORCHIC_1,
+static const union AnimCmd *const sAnims_TORCHIC[] ={
+ sAnim_GeneralFrame0,
+ sAnim_TORCHIC_1,
};
-const union AnimCmd *const gAnims_COMBUSKEN[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_COMBUSKEN_1,
+static const union AnimCmd *const sAnims_COMBUSKEN[] ={
+ sAnim_GeneralFrame0,
+ sAnim_COMBUSKEN_1,
};
-const union AnimCmd *const gAnims_BLAZIKEN[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_BLAZIKEN_1,
- gAnimCmd_BLAZIKEN_2,
- gAnimCmd_BLAZIKEN_3,
- gAnimCmd_BLAZIKEN_4,
+static const union AnimCmd *const sAnims_BLAZIKEN[] ={
+ sAnim_GeneralFrame0,
+ sAnim_BLAZIKEN_1,
+ sAnim_BLAZIKEN_2,
+ sAnim_BLAZIKEN_3,
+ sAnim_BLAZIKEN_4,
};
-const union AnimCmd *const gAnims_MUDKIP[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MUDKIP_1,
+static const union AnimCmd *const sAnims_MUDKIP[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MUDKIP_1,
};
-const union AnimCmd *const gAnims_MARSHTOMP[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MARSHTOMP_1,
+static const union AnimCmd *const sAnims_MARSHTOMP[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MARSHTOMP_1,
};
-const union AnimCmd *const gAnims_SWAMPERT[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SWAMPERT_1,
+static const union AnimCmd *const sAnims_SWAMPERT[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SWAMPERT_1,
};
-const union AnimCmd *const gAnims_POOCHYENA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_POOCHYENA_1,
+static const union AnimCmd *const sAnims_POOCHYENA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_POOCHYENA_1,
};
-const union AnimCmd *const gAnims_MIGHTYENA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MIGHTYENA_1,
+static const union AnimCmd *const sAnims_MIGHTYENA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MIGHTYENA_1,
};
-const union AnimCmd *const gAnims_ZIGZAGOON[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ZIGZAGOON_1,
+static const union AnimCmd *const sAnims_ZIGZAGOON[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ZIGZAGOON_1,
};
-const union AnimCmd *const gAnims_LINOONE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_LINOONE_1,
+static const union AnimCmd *const sAnims_LINOONE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_LINOONE_1,
};
-const union AnimCmd *const gAnims_WURMPLE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_WURMPLE_1,
+static const union AnimCmd *const sAnims_WURMPLE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_WURMPLE_1,
};
-const union AnimCmd *const gAnims_SILCOON[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SILCOON_1,
- gAnimCmd_SILCOON_2,
+static const union AnimCmd *const sAnims_SILCOON[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SILCOON_1,
+ sAnim_SILCOON_2,
};
-const union AnimCmd *const gAnims_BEAUTIFLY[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_BEAUTIFLY_1,
- gAnimCmd_BEAUTIFLY_2,
+static const union AnimCmd *const sAnims_BEAUTIFLY[] ={
+ sAnim_GeneralFrame0,
+ sAnim_BEAUTIFLY_1,
+ sAnim_BEAUTIFLY_2,
};
-const union AnimCmd *const gAnims_CASCOON[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CASCOON_1,
- gAnimCmd_CASCOON_2,
+static const union AnimCmd *const sAnims_CASCOON[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CASCOON_1,
+ sAnim_CASCOON_2,
};
-const union AnimCmd *const gAnims_DUSTOX[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_DUSTOX_1,
- gAnimCmd_DUSTOX_2,
+static const union AnimCmd *const sAnims_DUSTOX[] ={
+ sAnim_GeneralFrame0,
+ sAnim_DUSTOX_1,
+ sAnim_DUSTOX_2,
};
-const union AnimCmd *const gAnims_LOTAD[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_LOTAD_1,
+static const union AnimCmd *const sAnims_LOTAD[] ={
+ sAnim_GeneralFrame0,
+ sAnim_LOTAD_1,
};
-const union AnimCmd *const gAnims_LOMBRE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_LOMBRE_1,
+static const union AnimCmd *const sAnims_LOMBRE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_LOMBRE_1,
};
-const union AnimCmd *const gAnims_LUDICOLO[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_LUDICOLO_1,
+static const union AnimCmd *const sAnims_LUDICOLO[] ={
+ sAnim_GeneralFrame0,
+ sAnim_LUDICOLO_1,
};
-const union AnimCmd *const gAnims_SEEDOT[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SEEDOT_1,
+static const union AnimCmd *const sAnims_SEEDOT[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SEEDOT_1,
};
-const union AnimCmd *const gAnims_NUZLEAF[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_NUZLEAF_1,
+static const union AnimCmd *const sAnims_NUZLEAF[] ={
+ sAnim_GeneralFrame0,
+ sAnim_NUZLEAF_1,
};
-const union AnimCmd *const gAnims_SHIFTRY[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SHIFTRY_1,
+static const union AnimCmd *const sAnims_SHIFTRY[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SHIFTRY_1,
};
-const union AnimCmd *const gAnims_NINCADA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_NINCADA_1,
+static const union AnimCmd *const sAnims_NINCADA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_NINCADA_1,
};
-const union AnimCmd *const gAnims_NINJASK[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_NINJASK_1,
+static const union AnimCmd *const sAnims_NINJASK[] ={
+ sAnim_GeneralFrame0,
+ sAnim_NINJASK_1,
};
-const union AnimCmd *const gAnims_SHEDINJA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SHEDINJA_1,
+static const union AnimCmd *const sAnims_SHEDINJA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SHEDINJA_1,
};
-const union AnimCmd *const gAnims_TAILLOW[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_TAILLOW_1,
+static const union AnimCmd *const sAnims_TAILLOW[] ={
+ sAnim_GeneralFrame0,
+ sAnim_TAILLOW_1,
};
-const union AnimCmd *const gAnims_SWELLOW[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SWELLOW_1,
+static const union AnimCmd *const sAnims_SWELLOW[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SWELLOW_1,
};
-const union AnimCmd *const gAnims_SHROOMISH[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SHROOMISH_1,
+static const union AnimCmd *const sAnims_SHROOMISH[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SHROOMISH_1,
};
-const union AnimCmd *const gAnims_BRELOOM[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_BRELOOM_1,
+static const union AnimCmd *const sAnims_BRELOOM[] ={
+ sAnim_GeneralFrame0,
+ sAnim_BRELOOM_1,
};
-const union AnimCmd *const gAnims_SPINDA[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_SPINDA[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gAnims_WINGULL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_WINGULL_1,
+static const union AnimCmd *const sAnims_WINGULL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_WINGULL_1,
};
-const union AnimCmd *const gAnims_PELIPPER[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_PELIPPER_1,
+static const union AnimCmd *const sAnims_PELIPPER[] ={
+ sAnim_GeneralFrame0,
+ sAnim_PELIPPER_1,
};
-const union AnimCmd *const gAnims_SURSKIT[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SURSKIT_1,
- gAnimCmd_SURSKIT_2,
+static const union AnimCmd *const sAnims_SURSKIT[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SURSKIT_1,
+ sAnim_SURSKIT_2,
};
-const union AnimCmd *const gAnims_MASQUERAIN[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MASQUERAIN_1,
- gAnimCmd_MASQUERAIN_2,
+static const union AnimCmd *const sAnims_MASQUERAIN[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MASQUERAIN_1,
+ sAnim_MASQUERAIN_2,
};
-const union AnimCmd *const gAnims_WAILMER[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_WAILMER_1,
+static const union AnimCmd *const sAnims_WAILMER[] ={
+ sAnim_GeneralFrame0,
+ sAnim_WAILMER_1,
};
-const union AnimCmd *const gAnims_WAILORD[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_WAILORD_1,
+static const union AnimCmd *const sAnims_WAILORD[] ={
+ sAnim_GeneralFrame0,
+ sAnim_WAILORD_1,
};
-const union AnimCmd *const gAnims_SKITTY[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SKITTY_1,
+static const union AnimCmd *const sAnims_SKITTY[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SKITTY_1,
};
-const union AnimCmd *const gAnims_DELCATTY[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_DELCATTY_1,
+static const union AnimCmd *const sAnims_DELCATTY[] ={
+ sAnim_GeneralFrame0,
+ sAnim_DELCATTY_1,
};
-const union AnimCmd *const gAnims_KECLEON[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_KECLEON_1,
+static const union AnimCmd *const sAnims_KECLEON[] ={
+ sAnim_GeneralFrame0,
+ sAnim_KECLEON_1,
};
-const union AnimCmd *const gAnims_BALTOY[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_BALTOY_1,
+static const union AnimCmd *const sAnims_BALTOY[] ={
+ sAnim_GeneralFrame0,
+ sAnim_BALTOY_1,
};
-const union AnimCmd *const gAnims_CLAYDOL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CLAYDOL_1,
+static const union AnimCmd *const sAnims_CLAYDOL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CLAYDOL_1,
};
-const union AnimCmd *const gAnims_NOSEPASS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_NOSEPASS_1,
+static const union AnimCmd *const sAnims_NOSEPASS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_NOSEPASS_1,
};
-const union AnimCmd *const gAnims_TORKOAL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_TORKOAL_1,
+static const union AnimCmd *const sAnims_TORKOAL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_TORKOAL_1,
};
-const union AnimCmd *const gAnims_SABLEYE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SABLEYE_1,
+static const union AnimCmd *const sAnims_SABLEYE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SABLEYE_1,
};
-const union AnimCmd *const gAnims_BARBOACH[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_BARBOACH_1,
+static const union AnimCmd *const sAnims_BARBOACH[] ={
+ sAnim_GeneralFrame0,
+ sAnim_BARBOACH_1,
};
-const union AnimCmd *const gAnims_WHISCASH[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_WHISCASH_1,
+static const union AnimCmd *const sAnims_WHISCASH[] ={
+ sAnim_GeneralFrame0,
+ sAnim_WHISCASH_1,
};
-const union AnimCmd *const gAnims_LUVDISC[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_LUVDISC_1,
+static const union AnimCmd *const sAnims_LUVDISC[] ={
+ sAnim_GeneralFrame0,
+ sAnim_LUVDISC_1,
};
-const union AnimCmd *const gAnims_CORPHISH[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CORPHISH_1,
+static const union AnimCmd *const sAnims_CORPHISH[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CORPHISH_1,
};
-const union AnimCmd *const gAnims_CRAWDAUNT[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CRAWDAUNT_1,
+static const union AnimCmd *const sAnims_CRAWDAUNT[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CRAWDAUNT_1,
};
-const union AnimCmd *const gAnims_FEEBAS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_FEEBAS_1,
+static const union AnimCmd *const sAnims_FEEBAS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_FEEBAS_1,
};
-const union AnimCmd *const gAnims_MILOTIC[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MILOTIC_1,
+static const union AnimCmd *const sAnims_MILOTIC[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MILOTIC_1,
};
-const union AnimCmd *const gAnims_CARVANHA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CARVANHA_1,
+static const union AnimCmd *const sAnims_CARVANHA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CARVANHA_1,
};
-const union AnimCmd *const gAnims_SHARPEDO[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SHARPEDO_1,
+static const union AnimCmd *const sAnims_SHARPEDO[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SHARPEDO_1,
};
-const union AnimCmd *const gAnims_TRAPINCH[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_TRAPINCH_1,
+static const union AnimCmd *const sAnims_TRAPINCH[] ={
+ sAnim_GeneralFrame0,
+ sAnim_TRAPINCH_1,
};
-const union AnimCmd *const gAnims_VIBRAVA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_VIBRAVA_1,
+static const union AnimCmd *const sAnims_VIBRAVA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_VIBRAVA_1,
};
-const union AnimCmd *const gAnims_FLYGON[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_FLYGON_1,
+static const union AnimCmd *const sAnims_FLYGON[] ={
+ sAnim_GeneralFrame0,
+ sAnim_FLYGON_1,
};
-const union AnimCmd *const gAnims_MAKUHITA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MAKUHITA_1,
+static const union AnimCmd *const sAnims_MAKUHITA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MAKUHITA_1,
};
-const union AnimCmd *const gAnims_HARIYAMA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_HARIYAMA_1,
+static const union AnimCmd *const sAnims_HARIYAMA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_HARIYAMA_1,
};
-const union AnimCmd *const gAnims_ELECTRIKE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ELECTRIKE_1,
+static const union AnimCmd *const sAnims_ELECTRIKE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ELECTRIKE_1,
};
-const union AnimCmd *const gAnims_MANECTRIC[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MANECTRIC_1,
+static const union AnimCmd *const sAnims_MANECTRIC[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MANECTRIC_1,
};
-const union AnimCmd *const gAnims_NUMEL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_NUMEL_1,
+static const union AnimCmd *const sAnims_NUMEL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_NUMEL_1,
};
-const union AnimCmd *const gAnims_CAMERUPT[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CAMERUPT_1,
+static const union AnimCmd *const sAnims_CAMERUPT[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CAMERUPT_1,
};
-const union AnimCmd *const gAnims_SPHEAL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SPHEAL_1,
+static const union AnimCmd *const sAnims_SPHEAL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SPHEAL_1,
};
-const union AnimCmd *const gAnims_SEALEO[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SEALEO_1,
+static const union AnimCmd *const sAnims_SEALEO[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SEALEO_1,
};
-const union AnimCmd *const gAnims_WALREIN[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_WALREIN_1,
+static const union AnimCmd *const sAnims_WALREIN[] ={
+ sAnim_GeneralFrame0,
+ sAnim_WALREIN_1,
};
-const union AnimCmd *const gAnims_CACNEA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CACNEA_1,
+static const union AnimCmd *const sAnims_CACNEA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CACNEA_1,
};
-const union AnimCmd *const gAnims_CACTURNE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CACTURNE_1,
+static const union AnimCmd *const sAnims_CACTURNE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CACTURNE_1,
};
-const union AnimCmd *const gAnims_SNORUNT[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SNORUNT_1,
+static const union AnimCmd *const sAnims_SNORUNT[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SNORUNT_1,
};
-const union AnimCmd *const gAnims_GLALIE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GLALIE_1,
+static const union AnimCmd *const sAnims_GLALIE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GLALIE_1,
};
-const union AnimCmd *const gAnims_LUNATONE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_LUNATONE_1,
- gAnimCmd_LUNATONE_2,
+static const union AnimCmd *const sAnims_LUNATONE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_LUNATONE_1,
+ sAnim_LUNATONE_2,
};
-const union AnimCmd *const gAnims_SOLROCK[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SOLROCK_1,
- gAnimCmd_SOLROCK_2,
+static const union AnimCmd *const sAnims_SOLROCK[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SOLROCK_1,
+ sAnim_SOLROCK_2,
};
-const union AnimCmd *const gAnims_AZURILL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_AZURILL_1,
+static const union AnimCmd *const sAnims_AZURILL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_AZURILL_1,
};
-const union AnimCmd *const gAnims_SPOINK[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SPOINK_1,
+static const union AnimCmd *const sAnims_SPOINK[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SPOINK_1,
};
-const union AnimCmd *const gAnims_GRUMPIG[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GRUMPIG_1,
+static const union AnimCmd *const sAnims_GRUMPIG[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GRUMPIG_1,
};
-const union AnimCmd *const gAnims_PLUSLE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_PLUSLE_1,
+static const union AnimCmd *const sAnims_PLUSLE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_PLUSLE_1,
};
-const union AnimCmd *const gAnims_MINUN[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MINUN_1,
+static const union AnimCmd *const sAnims_MINUN[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MINUN_1,
};
-const union AnimCmd *const gAnims_MAWILE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MAWILE_1,
+static const union AnimCmd *const sAnims_MAWILE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MAWILE_1,
};
-const union AnimCmd *const gAnims_MEDITITE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MEDITITE_1,
+static const union AnimCmd *const sAnims_MEDITITE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MEDITITE_1,
};
-const union AnimCmd *const gAnims_MEDICHAM[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_MEDICHAM_1,
+static const union AnimCmd *const sAnims_MEDICHAM[] ={
+ sAnim_GeneralFrame0,
+ sAnim_MEDICHAM_1,
};
-const union AnimCmd *const gAnims_SWABLU[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SWABLU_1,
- gAnimCmd_SWABLU_2,
+static const union AnimCmd *const sAnims_SWABLU[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SWABLU_1,
+ sAnim_SWABLU_2,
};
-const union AnimCmd *const gAnims_ALTARIA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ALTARIA_1,
- gAnimCmd_ALTARIA_2,
+static const union AnimCmd *const sAnims_ALTARIA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ALTARIA_1,
+ sAnim_ALTARIA_2,
};
-const union AnimCmd *const gAnims_WYNAUT[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_WYNAUT_1,
+static const union AnimCmd *const sAnims_WYNAUT[] ={
+ sAnim_GeneralFrame0,
+ sAnim_WYNAUT_1,
};
-const union AnimCmd *const gAnims_DUSKULL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_DUSKULL_1,
+static const union AnimCmd *const sAnims_DUSKULL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_DUSKULL_1,
};
-const union AnimCmd *const gAnims_DUSCLOPS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_DUSCLOPS_1,
+static const union AnimCmd *const sAnims_DUSCLOPS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_DUSCLOPS_1,
};
-const union AnimCmd *const gAnims_ROSELIA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ROSELIA_1,
+static const union AnimCmd *const sAnims_ROSELIA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ROSELIA_1,
};
-const union AnimCmd *const gAnims_SLAKOTH[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SLAKOTH_1,
+static const union AnimCmd *const sAnims_SLAKOTH[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SLAKOTH_1,
};
-const union AnimCmd *const gAnims_VIGOROTH[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_VIGOROTH_1,
+static const union AnimCmd *const sAnims_VIGOROTH[] ={
+ sAnim_GeneralFrame0,
+ sAnim_VIGOROTH_1,
};
-const union AnimCmd *const gAnims_SLAKING[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SLAKING_1,
+static const union AnimCmd *const sAnims_SLAKING[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SLAKING_1,
};
-const union AnimCmd *const gAnims_GULPIN[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GULPIN_1,
+static const union AnimCmd *const sAnims_GULPIN[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GULPIN_1,
};
-const union AnimCmd *const gAnims_SWALOT[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SWALOT_1,
+static const union AnimCmd *const sAnims_SWALOT[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SWALOT_1,
};
-const union AnimCmd *const gAnims_TROPIUS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_TROPIUS_1,
+static const union AnimCmd *const sAnims_TROPIUS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_TROPIUS_1,
};
-const union AnimCmd *const gAnims_WHISMUR[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_WHISMUR_1,
+static const union AnimCmd *const sAnims_WHISMUR[] ={
+ sAnim_GeneralFrame0,
+ sAnim_WHISMUR_1,
};
-const union AnimCmd *const gAnims_LOUDRED[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_LOUDRED_1,
+static const union AnimCmd *const sAnims_LOUDRED[] ={
+ sAnim_GeneralFrame0,
+ sAnim_LOUDRED_1,
};
-const union AnimCmd *const gAnims_EXPLOUD[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_EXPLOUD_1,
+static const union AnimCmd *const sAnims_EXPLOUD[] ={
+ sAnim_GeneralFrame0,
+ sAnim_EXPLOUD_1,
};
-const union AnimCmd *const gAnims_CLAMPERL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CLAMPERL_1,
+static const union AnimCmd *const sAnims_CLAMPERL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CLAMPERL_1,
};
-const union AnimCmd *const gAnims_HUNTAIL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_HUNTAIL_1,
+static const union AnimCmd *const sAnims_HUNTAIL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_HUNTAIL_1,
};
-const union AnimCmd *const gAnims_GOREBYSS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GOREBYSS_1,
+static const union AnimCmd *const sAnims_GOREBYSS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GOREBYSS_1,
};
-const union AnimCmd *const gAnims_ABSOL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ABSOL_1,
+static const union AnimCmd *const sAnims_ABSOL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ABSOL_1,
};
-const union AnimCmd *const gAnims_SHUPPET[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SHUPPET_1,
+static const union AnimCmd *const sAnims_SHUPPET[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SHUPPET_1,
};
-const union AnimCmd *const gAnims_BANETTE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_BANETTE_1,
+static const union AnimCmd *const sAnims_BANETTE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_BANETTE_1,
};
-const union AnimCmd *const gAnims_SEVIPER[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SEVIPER_1,
+static const union AnimCmd *const sAnims_SEVIPER[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SEVIPER_1,
};
-const union AnimCmd *const gAnims_ZANGOOSE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ZANGOOSE_1,
+static const union AnimCmd *const sAnims_ZANGOOSE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ZANGOOSE_1,
};
-const union AnimCmd *const gAnims_RELICANTH[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_RELICANTH_1,
+static const union AnimCmd *const sAnims_RELICANTH[] ={
+ sAnim_GeneralFrame0,
+ sAnim_RELICANTH_1,
};
-const union AnimCmd *const gAnims_ARON[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ARON_1,
+static const union AnimCmd *const sAnims_ARON[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ARON_1,
};
-const union AnimCmd *const gAnims_LAIRON[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_LAIRON_1,
+static const union AnimCmd *const sAnims_LAIRON[] ={
+ sAnim_GeneralFrame0,
+ sAnim_LAIRON_1,
};
-const union AnimCmd *const gAnims_AGGRON[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_AGGRON_1,
+static const union AnimCmd *const sAnims_AGGRON[] ={
+ sAnim_GeneralFrame0,
+ sAnim_AGGRON_1,
};
-const union AnimCmd *const gAnims_CASTFORM[] ={
- gAnimCmd_CASTFORM_0,
- gAnimCmd_CASTFORM_1,
- gAnimCmd_CASTFORM_2,
- gAnimCmd_CASTFORM_3,
+static const union AnimCmd *const sAnims_CASTFORM[] ={
+ sAnim_CASTFORM_0,
+ sAnim_CASTFORM_1,
+ sAnim_CASTFORM_2,
+ sAnim_CASTFORM_3,
};
-const union AnimCmd *const gAnims_VOLBEAT[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_VOLBEAT_1,
+static const union AnimCmd *const sAnims_VOLBEAT[] ={
+ sAnim_GeneralFrame0,
+ sAnim_VOLBEAT_1,
};
-const union AnimCmd *const gAnims_ILLUMISE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ILLUMISE_1,
+static const union AnimCmd *const sAnims_ILLUMISE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ILLUMISE_1,
};
-const union AnimCmd *const gAnims_LILEEP[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_LILEEP_1,
+static const union AnimCmd *const sAnims_LILEEP[] ={
+ sAnim_GeneralFrame0,
+ sAnim_LILEEP_1,
};
-const union AnimCmd *const gAnims_CRADILY[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CRADILY_1,
+static const union AnimCmd *const sAnims_CRADILY[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CRADILY_1,
};
-const union AnimCmd *const gAnims_ANORITH[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ANORITH_1,
+static const union AnimCmd *const sAnims_ANORITH[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ANORITH_1,
};
-const union AnimCmd *const gAnims_ARMALDO[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_ARMALDO_1,
+static const union AnimCmd *const sAnims_ARMALDO[] ={
+ sAnim_GeneralFrame0,
+ sAnim_ARMALDO_1,
};
-const union AnimCmd *const gAnims_RALTS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_RALTS_1,
+static const union AnimCmd *const sAnims_RALTS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_RALTS_1,
};
-const union AnimCmd *const gAnims_KIRLIA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_KIRLIA_1,
+static const union AnimCmd *const sAnims_KIRLIA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_KIRLIA_1,
};
-const union AnimCmd *const gAnims_GARDEVOIR[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GARDEVOIR_1,
+static const union AnimCmd *const sAnims_GARDEVOIR[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GARDEVOIR_1,
};
-const union AnimCmd *const gAnims_BAGON[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_BAGON_1,
+static const union AnimCmd *const sAnims_BAGON[] ={
+ sAnim_GeneralFrame0,
+ sAnim_BAGON_1,
};
-const union AnimCmd *const gAnims_SHELGON[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SHELGON_1,
+static const union AnimCmd *const sAnims_SHELGON[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SHELGON_1,
};
-const union AnimCmd *const gAnims_SALAMENCE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_SALAMENCE_1,
+static const union AnimCmd *const sAnims_SALAMENCE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_SALAMENCE_1,
};
-const union AnimCmd *const gAnims_BELDUM[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_BELDUM_1,
+static const union AnimCmd *const sAnims_BELDUM[] ={
+ sAnim_GeneralFrame0,
+ sAnim_BELDUM_1,
};
-const union AnimCmd *const gAnims_METANG[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_METANG_1,
+static const union AnimCmd *const sAnims_METANG[] ={
+ sAnim_GeneralFrame0,
+ sAnim_METANG_1,
};
-const union AnimCmd *const gAnims_METAGROSS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_METAGROSS_1,
+static const union AnimCmd *const sAnims_METAGROSS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_METAGROSS_1,
};
-const union AnimCmd *const gAnims_REGIROCK[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_REGIROCK_1,
- gAnimCmd_REGIROCK_2,
+static const union AnimCmd *const sAnims_REGIROCK[] ={
+ sAnim_GeneralFrame0,
+ sAnim_REGIROCK_1,
+ sAnim_REGIROCK_2,
};
-const union AnimCmd *const gAnims_REGICE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_REGICE_1,
+static const union AnimCmd *const sAnims_REGICE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_REGICE_1,
};
-const union AnimCmd *const gAnims_REGISTEEL[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_REGISTEEL_1,
- gAnimCmd_REGISTEEL_2,
+static const union AnimCmd *const sAnims_REGISTEEL[] ={
+ sAnim_GeneralFrame0,
+ sAnim_REGISTEEL_1,
+ sAnim_REGISTEEL_2,
};
-const union AnimCmd *const gAnims_KYOGRE[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_KYOGRE_1,
- gAnimCmd_KYOGRE_2,
+static const union AnimCmd *const sAnims_KYOGRE[] ={
+ sAnim_GeneralFrame0,
+ sAnim_KYOGRE_1,
+ sAnim_KYOGRE_2,
};
-const union AnimCmd *const gAnims_GROUDON[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_GROUDON_1,
- gAnimCmd_GROUDON_2,
+static const union AnimCmd *const sAnims_GROUDON[] ={
+ sAnim_GeneralFrame0,
+ sAnim_GROUDON_1,
+ sAnim_GROUDON_2,
};
-const union AnimCmd *const gAnims_RAYQUAZA[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_RAYQUAZA_1,
- gAnimCmd_RAYQUAZA_2,
+static const union AnimCmd *const sAnims_RAYQUAZA[] ={
+ sAnim_GeneralFrame0,
+ sAnim_RAYQUAZA_1,
+ sAnim_RAYQUAZA_2,
};
-const union AnimCmd *const gAnims_LATIAS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_LATIAS_1,
- gAnimCmd_LATIAS_2,
+static const union AnimCmd *const sAnims_LATIAS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_LATIAS_1,
+ sAnim_LATIAS_2,
};
-const union AnimCmd *const gAnims_LATIOS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_LATIOS_1,
- gAnimCmd_LATIOS_2,
+static const union AnimCmd *const sAnims_LATIOS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_LATIOS_1,
+ sAnim_LATIOS_2,
};
-const union AnimCmd *const gAnims_JIRACHI[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_JIRACHI_1,
- gAnimCmd_JIRACHI_2,
+static const union AnimCmd *const sAnims_JIRACHI[] ={
+ sAnim_GeneralFrame0,
+ sAnim_JIRACHI_1,
+ sAnim_JIRACHI_2,
};
-const union AnimCmd *const gAnims_DEOXYS[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_DEOXYS_1,
- gAnimCmd_DEOXYS_2,
+static const union AnimCmd *const sAnims_DEOXYS[] ={
+ sAnim_GeneralFrame0,
+ sAnim_DEOXYS_1,
+ sAnim_DEOXYS_2,
};
-const union AnimCmd *const gAnims_CHIMECHO[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_CHIMECHO_1,
+static const union AnimCmd *const sAnims_CHIMECHO[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CHIMECHO_1,
};
-const union AnimCmd *const gAnims_EGG[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_EGG_1,
+static const union AnimCmd *const sAnims_EGG[] ={
+ sAnim_GeneralFrame0,
+ sAnim_EGG_1,
};
-const union AnimCmd *const gAnims_UNOWN_B[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_B_1,
+static const union AnimCmd *const sAnims_UNOWN_B[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_B_1,
};
-const union AnimCmd *const gAnims_UNOWN_C[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_C_1,
+static const union AnimCmd *const sAnims_UNOWN_C[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_C_1,
};
-const union AnimCmd *const gAnims_UNOWN_D[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_D_1,
+static const union AnimCmd *const sAnims_UNOWN_D[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_D_1,
};
-const union AnimCmd *const gAnims_UNOWN_E[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_E_1,
+static const union AnimCmd *const sAnims_UNOWN_E[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_E_1,
};
-const union AnimCmd *const gAnims_UNOWN_F[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_F_1,
+static const union AnimCmd *const sAnims_UNOWN_F[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_F_1,
};
-const union AnimCmd *const gAnims_UNOWN_G[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_G_1,
+static const union AnimCmd *const sAnims_UNOWN_G[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_G_1,
};
-const union AnimCmd *const gAnims_UNOWN_H[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_H_1,
+static const union AnimCmd *const sAnims_UNOWN_H[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_H_1,
};
-const union AnimCmd *const gAnims_UNOWN_I[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_I_1,
+static const union AnimCmd *const sAnims_UNOWN_I[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_I_1,
};
-const union AnimCmd *const gAnims_UNOWN_J[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_J_1,
+static const union AnimCmd *const sAnims_UNOWN_J[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_J_1,
};
-const union AnimCmd *const gAnims_UNOWN_K[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_K_1,
+static const union AnimCmd *const sAnims_UNOWN_K[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_K_1,
};
-const union AnimCmd *const gAnims_UNOWN_L[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_L_1,
+static const union AnimCmd *const sAnims_UNOWN_L[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_L_1,
};
-const union AnimCmd *const gAnims_UNOWN_M[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_M_1,
+static const union AnimCmd *const sAnims_UNOWN_M[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_M_1,
};
-const union AnimCmd *const gAnims_UNOWN_N[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_N_1,
+static const union AnimCmd *const sAnims_UNOWN_N[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_N_1,
};
-const union AnimCmd *const gAnims_UNOWN_O[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_O_1,
+static const union AnimCmd *const sAnims_UNOWN_O[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_O_1,
};
-const union AnimCmd *const gAnims_UNOWN_P[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_P_1,
+static const union AnimCmd *const sAnims_UNOWN_P[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_P_1,
};
-const union AnimCmd *const gAnims_UNOWN_Q[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_Q_1,
+static const union AnimCmd *const sAnims_UNOWN_Q[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_Q_1,
};
-const union AnimCmd *const gAnims_UNOWN_R[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_R_1,
+static const union AnimCmd *const sAnims_UNOWN_R[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_R_1,
};
-const union AnimCmd *const gAnims_UNOWN_S[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_S_1,
+static const union AnimCmd *const sAnims_UNOWN_S[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_S_1,
};
-const union AnimCmd *const gAnims_UNOWN_T[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_T_1,
+static const union AnimCmd *const sAnims_UNOWN_T[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_T_1,
};
-const union AnimCmd *const gAnims_UNOWN_U[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_U_1,
+static const union AnimCmd *const sAnims_UNOWN_U[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_U_1,
};
-const union AnimCmd *const gAnims_UNOWN_V[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_V_1,
+static const union AnimCmd *const sAnims_UNOWN_V[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_V_1,
};
-const union AnimCmd *const gAnims_UNOWN_W[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_W_1,
+static const union AnimCmd *const sAnims_UNOWN_W[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_W_1,
};
-const union AnimCmd *const gAnims_UNOWN_X[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_X_1,
+static const union AnimCmd *const sAnims_UNOWN_X[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_X_1,
};
-const union AnimCmd *const gAnims_UNOWN_Y[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_Y_1,
+static const union AnimCmd *const sAnims_UNOWN_Y[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_Y_1,
};
-const union AnimCmd *const gAnims_UNOWN_Z[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_Z_1,
+static const union AnimCmd *const sAnims_UNOWN_Z[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_Z_1,
};
-const union AnimCmd *const gAnims_UNOWN_EMARK[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_EMARK_1,
+static const union AnimCmd *const sAnims_UNOWN_EMARK[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_EMARK_1,
};
-const union AnimCmd *const gAnims_UNOWN_QMARK[] ={
- gAnimCmd_General_Frame0,
- gAnimCmd_UNOWN_QMARK_1,
+static const union AnimCmd *const sAnims_UNOWN_QMARK[] ={
+ sAnim_GeneralFrame0,
+ sAnim_UNOWN_QMARK_1,
};
-#define ANIM_CMD(name) [SPECIES_##name] = gAnims_##name
+#define ANIM_CMD(name) [SPECIES_##name] = sAnims_##name
#define ANIM_CMD_FULL(name, anims) [SPECIES_##name] = anims
-const union AnimCmd* const * const gMonAnimationsSpriteAnimsPtrTable[] =
+const union AnimCmd *const *const gMonFrontAnimsPtrTable[] =
{
ANIM_CMD(NONE),
ANIM_CMD(BULBASAUR),
@@ -7204,30 +7203,30 @@ const union AnimCmd* const * const gMonAnimationsSpriteAnimsPtrTable[] =
ANIM_CMD(HO_OH),
ANIM_CMD(CELEBI),
ANIM_CMD(OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_C, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_D, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_E, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_F, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_G, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_H, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_I, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_J, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_K, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_L, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_M, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_N, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_O, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_P, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_Q, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_R, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_S, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_T, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_U, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_V, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_W, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_X, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_Y, gAnims_OLD_UNOWN_B),
- ANIM_CMD_FULL(OLD_UNOWN_Z, gAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_C, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_D, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_E, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_F, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_G, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_H, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_I, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_J, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_K, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_L, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_M, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_N, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_O, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_P, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_Q, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_R, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_S, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_T, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_U, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_V, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_W, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_X, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_Y, sAnims_OLD_UNOWN_B),
+ ANIM_CMD_FULL(OLD_UNOWN_Z, sAnims_OLD_UNOWN_B),
ANIM_CMD(TREECKO),
ANIM_CMD(GROVYLE),
ANIM_CMD(SCEPTILE),
diff --git a/src/data/pokemon_graphics/front_pic_coordinates.h b/src/data/pokemon_graphics/front_pic_coordinates.h
index 95ec7a132..19de9a7dd 100644
--- a/src/data/pokemon_graphics/front_pic_coordinates.h
+++ b/src/data/pokemon_graphics/front_pic_coordinates.h
@@ -1,5 +1,3 @@
-#include "constants/species.h"
-
const struct MonCoords gMonFrontPicCoords[] =
{
[SPECIES_NONE] =
diff --git a/src/data/pokemon_graphics/front_pic_table.h b/src/data/pokemon_graphics/front_pic_table.h
index 92e6bab2e..82af860d3 100644
--- a/src/data/pokemon_graphics/front_pic_table.h
+++ b/src/data/pokemon_graphics/front_pic_table.h
@@ -1,443 +1,443 @@
const struct CompressedSpriteSheet gMonFrontPicTable[] =
{
- [SPECIES_NONE] = {gMonFrontPic_CircledQuestionMark, 0x800, SPECIES_NONE},
- [SPECIES_BULBASAUR] = {gMonFrontPic_Bulbasaur, 0x800, SPECIES_BULBASAUR},
- [SPECIES_IVYSAUR] = {gMonFrontPic_Ivysaur, 0x800, SPECIES_IVYSAUR},
- [SPECIES_VENUSAUR] = {gMonFrontPic_Venusaur, 0x800, SPECIES_VENUSAUR},
- [SPECIES_CHARMANDER] = {gMonFrontPic_Charmander, 0x800, SPECIES_CHARMANDER},
- [SPECIES_CHARMELEON] = {gMonFrontPic_Charmeleon, 0x800, SPECIES_CHARMELEON},
- [SPECIES_CHARIZARD] = {gMonFrontPic_Charizard, 0x800, SPECIES_CHARIZARD},
- [SPECIES_SQUIRTLE] = {gMonFrontPic_Squirtle, 0x800, SPECIES_SQUIRTLE},
- [SPECIES_WARTORTLE] = {gMonFrontPic_Wartortle, 0x800, SPECIES_WARTORTLE},
- [SPECIES_BLASTOISE] = {gMonFrontPic_Blastoise, 0x800, SPECIES_BLASTOISE},
- [SPECIES_CATERPIE] = {gMonFrontPic_Caterpie, 0x800, SPECIES_CATERPIE},
- [SPECIES_METAPOD] = {gMonFrontPic_Metapod, 0x800, SPECIES_METAPOD},
- [SPECIES_BUTTERFREE] = {gMonFrontPic_Butterfree, 0x800, SPECIES_BUTTERFREE},
- [SPECIES_WEEDLE] = {gMonFrontPic_Weedle, 0x800, SPECIES_WEEDLE},
- [SPECIES_KAKUNA] = {gMonFrontPic_Kakuna, 0x800, SPECIES_KAKUNA},
- [SPECIES_BEEDRILL] = {gMonFrontPic_Beedrill, 0x800, SPECIES_BEEDRILL},
- [SPECIES_PIDGEY] = {gMonFrontPic_Pidgey, 0x800, SPECIES_PIDGEY},
- [SPECIES_PIDGEOTTO] = {gMonFrontPic_Pidgeotto, 0x800, SPECIES_PIDGEOTTO},
- [SPECIES_PIDGEOT] = {gMonFrontPic_Pidgeot, 0x800, SPECIES_PIDGEOT},
- [SPECIES_RATTATA] = {gMonFrontPic_Rattata, 0x800, SPECIES_RATTATA},
- [SPECIES_RATICATE] = {gMonFrontPic_Raticate, 0x800, SPECIES_RATICATE},
- [SPECIES_SPEAROW] = {gMonFrontPic_Spearow, 0x800, SPECIES_SPEAROW},
- [SPECIES_FEAROW] = {gMonFrontPic_Fearow, 0x800, SPECIES_FEAROW},
- [SPECIES_EKANS] = {gMonFrontPic_Ekans, 0x800, SPECIES_EKANS},
- [SPECIES_ARBOK] = {gMonFrontPic_Arbok, 0x800, SPECIES_ARBOK},
- [SPECIES_PIKACHU] = {gMonFrontPic_Pikachu, 0x800, SPECIES_PIKACHU},
- [SPECIES_RAICHU] = {gMonFrontPic_Raichu, 0x800, SPECIES_RAICHU},
- [SPECIES_SANDSHREW] = {gMonFrontPic_Sandshrew, 0x800, SPECIES_SANDSHREW},
- [SPECIES_SANDSLASH] = {gMonFrontPic_Sandslash, 0x800, SPECIES_SANDSLASH},
- [SPECIES_NIDORAN_F] = {gMonFrontPic_NidoranF, 0x800, SPECIES_NIDORAN_F},
- [SPECIES_NIDORINA] = {gMonFrontPic_Nidorina, 0x800, SPECIES_NIDORINA},
- [SPECIES_NIDOQUEEN] = {gMonFrontPic_Nidoqueen, 0x800, SPECIES_NIDOQUEEN},
- [SPECIES_NIDORAN_M] = {gMonFrontPic_NidoranM, 0x800, SPECIES_NIDORAN_M},
- [SPECIES_NIDORINO] = {gMonFrontPic_Nidorino, 0x800, SPECIES_NIDORINO},
- [SPECIES_NIDOKING] = {gMonFrontPic_Nidoking, 0x800, SPECIES_NIDOKING},
- [SPECIES_CLEFAIRY] = {gMonFrontPic_Clefairy, 0x800, SPECIES_CLEFAIRY},
- [SPECIES_CLEFABLE] = {gMonFrontPic_Clefable, 0x800, SPECIES_CLEFABLE},
- [SPECIES_VULPIX] = {gMonFrontPic_Vulpix, 0x800, SPECIES_VULPIX},
- [SPECIES_NINETALES] = {gMonFrontPic_Ninetales, 0x800, SPECIES_NINETALES},
- [SPECIES_JIGGLYPUFF] = {gMonFrontPic_Jigglypuff, 0x800, SPECIES_JIGGLYPUFF},
- [SPECIES_WIGGLYTUFF] = {gMonFrontPic_Wigglytuff, 0x800, SPECIES_WIGGLYTUFF},
- [SPECIES_ZUBAT] = {gMonFrontPic_Zubat, 0x800, SPECIES_ZUBAT},
- [SPECIES_GOLBAT] = {gMonFrontPic_Golbat, 0x800, SPECIES_GOLBAT},
- [SPECIES_ODDISH] = {gMonFrontPic_Oddish, 0x800, SPECIES_ODDISH},
- [SPECIES_GLOOM] = {gMonFrontPic_Gloom, 0x800, SPECIES_GLOOM},
- [SPECIES_VILEPLUME] = {gMonFrontPic_Vileplume, 0x800, SPECIES_VILEPLUME},
- [SPECIES_PARAS] = {gMonFrontPic_Paras, 0x800, SPECIES_PARAS},
- [SPECIES_PARASECT] = {gMonFrontPic_Parasect, 0x800, SPECIES_PARASECT},
- [SPECIES_VENONAT] = {gMonFrontPic_Venonat, 0x800, SPECIES_VENONAT},
- [SPECIES_VENOMOTH] = {gMonFrontPic_Venomoth, 0x800, SPECIES_VENOMOTH},
- [SPECIES_DIGLETT] = {gMonFrontPic_Diglett, 0x800, SPECIES_DIGLETT},
- [SPECIES_DUGTRIO] = {gMonFrontPic_Dugtrio, 0x800, SPECIES_DUGTRIO},
- [SPECIES_MEOWTH] = {gMonFrontPic_Meowth, 0x800, SPECIES_MEOWTH},
- [SPECIES_PERSIAN] = {gMonFrontPic_Persian, 0x800, SPECIES_PERSIAN},
- [SPECIES_PSYDUCK] = {gMonFrontPic_Psyduck, 0x800, SPECIES_PSYDUCK},
- [SPECIES_GOLDUCK] = {gMonFrontPic_Golduck, 0x800, SPECIES_GOLDUCK},
- [SPECIES_MANKEY] = {gMonFrontPic_Mankey, 0x800, SPECIES_MANKEY},
- [SPECIES_PRIMEAPE] = {gMonFrontPic_Primeape, 0x800, SPECIES_PRIMEAPE},
- [SPECIES_GROWLITHE] = {gMonFrontPic_Growlithe, 0x800, SPECIES_GROWLITHE},
- [SPECIES_ARCANINE] = {gMonFrontPic_Arcanine, 0x800, SPECIES_ARCANINE},
- [SPECIES_POLIWAG] = {gMonFrontPic_Poliwag, 0x800, SPECIES_POLIWAG},
- [SPECIES_POLIWHIRL] = {gMonFrontPic_Poliwhirl, 0x800, SPECIES_POLIWHIRL},
- [SPECIES_POLIWRATH] = {gMonFrontPic_Poliwrath, 0x800, SPECIES_POLIWRATH},
- [SPECIES_ABRA] = {gMonFrontPic_Abra, 0x800, SPECIES_ABRA},
- [SPECIES_KADABRA] = {gMonFrontPic_Kadabra, 0x800, SPECIES_KADABRA},
- [SPECIES_ALAKAZAM] = {gMonFrontPic_Alakazam, 0x800, SPECIES_ALAKAZAM},
- [SPECIES_MACHOP] = {gMonFrontPic_Machop, 0x800, SPECIES_MACHOP},
- [SPECIES_MACHOKE] = {gMonFrontPic_Machoke, 0x800, SPECIES_MACHOKE},
- [SPECIES_MACHAMP] = {gMonFrontPic_Machamp, 0x800, SPECIES_MACHAMP},
- [SPECIES_BELLSPROUT] = {gMonFrontPic_Bellsprout, 0x800, SPECIES_BELLSPROUT},
- [SPECIES_WEEPINBELL] = {gMonFrontPic_Weepinbell, 0x800, SPECIES_WEEPINBELL},
- [SPECIES_VICTREEBEL] = {gMonFrontPic_Victreebel, 0x800, SPECIES_VICTREEBEL},
- [SPECIES_TENTACOOL] = {gMonFrontPic_Tentacool, 0x800, SPECIES_TENTACOOL},
- [SPECIES_TENTACRUEL] = {gMonFrontPic_Tentacruel, 0x800, SPECIES_TENTACRUEL},
- [SPECIES_GEODUDE] = {gMonFrontPic_Geodude, 0x800, SPECIES_GEODUDE},
- [SPECIES_GRAVELER] = {gMonFrontPic_Graveler, 0x800, SPECIES_GRAVELER},
- [SPECIES_GOLEM] = {gMonFrontPic_Golem, 0x800, SPECIES_GOLEM},
- [SPECIES_PONYTA] = {gMonFrontPic_Ponyta, 0x800, SPECIES_PONYTA},
- [SPECIES_RAPIDASH] = {gMonFrontPic_Rapidash, 0x800, SPECIES_RAPIDASH},
- [SPECIES_SLOWPOKE] = {gMonFrontPic_Slowpoke, 0x800, SPECIES_SLOWPOKE},
- [SPECIES_SLOWBRO] = {gMonFrontPic_Slowbro, 0x800, SPECIES_SLOWBRO},
- [SPECIES_MAGNEMITE] = {gMonFrontPic_Magnemite, 0x800, SPECIES_MAGNEMITE},
- [SPECIES_MAGNETON] = {gMonFrontPic_Magneton, 0x800, SPECIES_MAGNETON},
- [SPECIES_FARFETCHD] = {gMonFrontPic_Farfetchd, 0x800, SPECIES_FARFETCHD},
- [SPECIES_DODUO] = {gMonFrontPic_Doduo, 0x800, SPECIES_DODUO},
- [SPECIES_DODRIO] = {gMonFrontPic_Dodrio, 0x800, SPECIES_DODRIO},
- [SPECIES_SEEL] = {gMonFrontPic_Seel, 0x800, SPECIES_SEEL},
- [SPECIES_DEWGONG] = {gMonFrontPic_Dewgong, 0x800, SPECIES_DEWGONG},
- [SPECIES_GRIMER] = {gMonFrontPic_Grimer, 0x800, SPECIES_GRIMER},
- [SPECIES_MUK] = {gMonFrontPic_Muk, 0x800, SPECIES_MUK},
- [SPECIES_SHELLDER] = {gMonFrontPic_Shellder, 0x800, SPECIES_SHELLDER},
- [SPECIES_CLOYSTER] = {gMonFrontPic_Cloyster, 0x800, SPECIES_CLOYSTER},
- [SPECIES_GASTLY] = {gMonFrontPic_Gastly, 0x800, SPECIES_GASTLY},
- [SPECIES_HAUNTER] = {gMonFrontPic_Haunter, 0x800, SPECIES_HAUNTER},
- [SPECIES_GENGAR] = {gMonFrontPic_Gengar, 0x800, SPECIES_GENGAR},
- [SPECIES_ONIX] = {gMonFrontPic_Onix, 0x800, SPECIES_ONIX},
- [SPECIES_DROWZEE] = {gMonFrontPic_Drowzee, 0x800, SPECIES_DROWZEE},
- [SPECIES_HYPNO] = {gMonFrontPic_Hypno, 0x800, SPECIES_HYPNO},
- [SPECIES_KRABBY] = {gMonFrontPic_Krabby, 0x800, SPECIES_KRABBY},
- [SPECIES_KINGLER] = {gMonFrontPic_Kingler, 0x800, SPECIES_KINGLER},
- [SPECIES_VOLTORB] = {gMonFrontPic_Voltorb, 0x800, SPECIES_VOLTORB},
- [SPECIES_ELECTRODE] = {gMonFrontPic_Electrode, 0x800, SPECIES_ELECTRODE},
- [SPECIES_EXEGGCUTE] = {gMonFrontPic_Exeggcute, 0x800, SPECIES_EXEGGCUTE},
- [SPECIES_EXEGGUTOR] = {gMonFrontPic_Exeggutor, 0x800, SPECIES_EXEGGUTOR},
- [SPECIES_CUBONE] = {gMonFrontPic_Cubone, 0x800, SPECIES_CUBONE},
- [SPECIES_MAROWAK] = {gMonFrontPic_Marowak, 0x800, SPECIES_MAROWAK},
- [SPECIES_HITMONLEE] = {gMonFrontPic_Hitmonlee, 0x800, SPECIES_HITMONLEE},
- [SPECIES_HITMONCHAN] = {gMonFrontPic_Hitmonchan, 0x800, SPECIES_HITMONCHAN},
- [SPECIES_LICKITUNG] = {gMonFrontPic_Lickitung, 0x800, SPECIES_LICKITUNG},
- [SPECIES_KOFFING] = {gMonFrontPic_Koffing, 0x800, SPECIES_KOFFING},
- [SPECIES_WEEZING] = {gMonFrontPic_Weezing, 0x800, SPECIES_WEEZING},
- [SPECIES_RHYHORN] = {gMonFrontPic_Rhyhorn, 0x800, SPECIES_RHYHORN},
- [SPECIES_RHYDON] = {gMonFrontPic_Rhydon, 0x800, SPECIES_RHYDON},
- [SPECIES_CHANSEY] = {gMonFrontPic_Chansey, 0x800, SPECIES_CHANSEY},
- [SPECIES_TANGELA] = {gMonFrontPic_Tangela, 0x800, SPECIES_TANGELA},
- [SPECIES_KANGASKHAN] = {gMonFrontPic_Kangaskhan, 0x800, SPECIES_KANGASKHAN},
- [SPECIES_HORSEA] = {gMonFrontPic_Horsea, 0x800, SPECIES_HORSEA},
- [SPECIES_SEADRA] = {gMonFrontPic_Seadra, 0x800, SPECIES_SEADRA},
- [SPECIES_GOLDEEN] = {gMonFrontPic_Goldeen, 0x800, SPECIES_GOLDEEN},
- [SPECIES_SEAKING] = {gMonFrontPic_Seaking, 0x800, SPECIES_SEAKING},
- [SPECIES_STARYU] = {gMonFrontPic_Staryu, 0x800, SPECIES_STARYU},
- [SPECIES_STARMIE] = {gMonFrontPic_Starmie, 0x800, SPECIES_STARMIE},
- [SPECIES_MR_MIME] = {gMonFrontPic_Mrmime, 0x800, SPECIES_MR_MIME},
- [SPECIES_SCYTHER] = {gMonFrontPic_Scyther, 0x800, SPECIES_SCYTHER},
- [SPECIES_JYNX] = {gMonFrontPic_Jynx, 0x800, SPECIES_JYNX},
- [SPECIES_ELECTABUZZ] = {gMonFrontPic_Electabuzz, 0x800, SPECIES_ELECTABUZZ},
- [SPECIES_MAGMAR] = {gMonFrontPic_Magmar, 0x800, SPECIES_MAGMAR},
- [SPECIES_PINSIR] = {gMonFrontPic_Pinsir, 0x800, SPECIES_PINSIR},
- [SPECIES_TAUROS] = {gMonFrontPic_Tauros, 0x800, SPECIES_TAUROS},
- [SPECIES_MAGIKARP] = {gMonFrontPic_Magikarp, 0x800, SPECIES_MAGIKARP},
- [SPECIES_GYARADOS] = {gMonFrontPic_Gyarados, 0x800, SPECIES_GYARADOS},
- [SPECIES_LAPRAS] = {gMonFrontPic_Lapras, 0x800, SPECIES_LAPRAS},
- [SPECIES_DITTO] = {gMonFrontPic_Ditto, 0x800, SPECIES_DITTO},
- [SPECIES_EEVEE] = {gMonFrontPic_Eevee, 0x800, SPECIES_EEVEE},
- [SPECIES_VAPOREON] = {gMonFrontPic_Vaporeon, 0x800, SPECIES_VAPOREON},
- [SPECIES_JOLTEON] = {gMonFrontPic_Jolteon, 0x800, SPECIES_JOLTEON},
- [SPECIES_FLAREON] = {gMonFrontPic_Flareon, 0x800, SPECIES_FLAREON},
- [SPECIES_PORYGON] = {gMonFrontPic_Porygon, 0x800, SPECIES_PORYGON},
- [SPECIES_OMANYTE] = {gMonFrontPic_Omanyte, 0x800, SPECIES_OMANYTE},
- [SPECIES_OMASTAR] = {gMonFrontPic_Omastar, 0x800, SPECIES_OMASTAR},
- [SPECIES_KABUTO] = {gMonFrontPic_Kabuto, 0x800, SPECIES_KABUTO},
- [SPECIES_KABUTOPS] = {gMonFrontPic_Kabutops, 0x800, SPECIES_KABUTOPS},
- [SPECIES_AERODACTYL] = {gMonFrontPic_Aerodactyl, 0x800, SPECIES_AERODACTYL},
- [SPECIES_SNORLAX] = {gMonFrontPic_Snorlax, 0x800, SPECIES_SNORLAX},
- [SPECIES_ARTICUNO] = {gMonFrontPic_Articuno, 0x800, SPECIES_ARTICUNO},
- [SPECIES_ZAPDOS] = {gMonFrontPic_Zapdos, 0x800, SPECIES_ZAPDOS},
- [SPECIES_MOLTRES] = {gMonFrontPic_Moltres, 0x800, SPECIES_MOLTRES},
- [SPECIES_DRATINI] = {gMonFrontPic_Dratini, 0x800, SPECIES_DRATINI},
- [SPECIES_DRAGONAIR] = {gMonFrontPic_Dragonair, 0x800, SPECIES_DRAGONAIR},
- [SPECIES_DRAGONITE] = {gMonFrontPic_Dragonite, 0x800, SPECIES_DRAGONITE},
- [SPECIES_MEWTWO] = {gMonFrontPic_Mewtwo, 0x800, SPECIES_MEWTWO},
- [SPECIES_MEW] = {gMonFrontPic_Mew, 0x800, SPECIES_MEW},
- [SPECIES_CHIKORITA] = {gMonFrontPic_Chikorita, 0x800, SPECIES_CHIKORITA},
- [SPECIES_BAYLEEF] = {gMonFrontPic_Bayleef, 0x800, SPECIES_BAYLEEF},
- [SPECIES_MEGANIUM] = {gMonFrontPic_Meganium, 0x800, SPECIES_MEGANIUM},
- [SPECIES_CYNDAQUIL] = {gMonFrontPic_Cyndaquil, 0x800, SPECIES_CYNDAQUIL},
- [SPECIES_QUILAVA] = {gMonFrontPic_Quilava, 0x800, SPECIES_QUILAVA},
- [SPECIES_TYPHLOSION] = {gMonFrontPic_Typhlosion, 0x800, SPECIES_TYPHLOSION},
- [SPECIES_TOTODILE] = {gMonFrontPic_Totodile, 0x800, SPECIES_TOTODILE},
- [SPECIES_CROCONAW] = {gMonFrontPic_Croconaw, 0x800, SPECIES_CROCONAW},
- [SPECIES_FERALIGATR] = {gMonFrontPic_Feraligatr, 0x800, SPECIES_FERALIGATR},
- [SPECIES_SENTRET] = {gMonFrontPic_Sentret, 0x800, SPECIES_SENTRET},
- [SPECIES_FURRET] = {gMonFrontPic_Furret, 0x800, SPECIES_FURRET},
- [SPECIES_HOOTHOOT] = {gMonFrontPic_Hoothoot, 0x800, SPECIES_HOOTHOOT},
- [SPECIES_NOCTOWL] = {gMonFrontPic_Noctowl, 0x800, SPECIES_NOCTOWL},
- [SPECIES_LEDYBA] = {gMonFrontPic_Ledyba, 0x800, SPECIES_LEDYBA},
- [SPECIES_LEDIAN] = {gMonFrontPic_Ledian, 0x800, SPECIES_LEDIAN},
- [SPECIES_SPINARAK] = {gMonFrontPic_Spinarak, 0x800, SPECIES_SPINARAK},
- [SPECIES_ARIADOS] = {gMonFrontPic_Ariados, 0x800, SPECIES_ARIADOS},
- [SPECIES_CROBAT] = {gMonFrontPic_Crobat, 0x800, SPECIES_CROBAT},
- [SPECIES_CHINCHOU] = {gMonFrontPic_Chinchou, 0x800, SPECIES_CHINCHOU},
- [SPECIES_LANTURN] = {gMonFrontPic_Lanturn, 0x800, SPECIES_LANTURN},
- [SPECIES_PICHU] = {gMonFrontPic_Pichu, 0x800, SPECIES_PICHU},
- [SPECIES_CLEFFA] = {gMonFrontPic_Cleffa, 0x800, SPECIES_CLEFFA},
- [SPECIES_IGGLYBUFF] = {gMonFrontPic_Igglybuff, 0x800, SPECIES_IGGLYBUFF},
- [SPECIES_TOGEPI] = {gMonFrontPic_Togepi, 0x800, SPECIES_TOGEPI},
- [SPECIES_TOGETIC] = {gMonFrontPic_Togetic, 0x800, SPECIES_TOGETIC},
- [SPECIES_NATU] = {gMonFrontPic_Natu, 0x800, SPECIES_NATU},
- [SPECIES_XATU] = {gMonFrontPic_Xatu, 0x800, SPECIES_XATU},
- [SPECIES_MAREEP] = {gMonFrontPic_Mareep, 0x800, SPECIES_MAREEP},
- [SPECIES_FLAAFFY] = {gMonFrontPic_Flaaffy, 0x800, SPECIES_FLAAFFY},
- [SPECIES_AMPHAROS] = {gMonFrontPic_Ampharos, 0x800, SPECIES_AMPHAROS},
- [SPECIES_BELLOSSOM] = {gMonFrontPic_Bellossom, 0x800, SPECIES_BELLOSSOM},
- [SPECIES_MARILL] = {gMonFrontPic_Marill, 0x800, SPECIES_MARILL},
- [SPECIES_AZUMARILL] = {gMonFrontPic_Azumarill, 0x800, SPECIES_AZUMARILL},
- [SPECIES_SUDOWOODO] = {gMonFrontPic_Sudowoodo, 0x800, SPECIES_SUDOWOODO},
- [SPECIES_POLITOED] = {gMonFrontPic_Politoed, 0x800, SPECIES_POLITOED},
- [SPECIES_HOPPIP] = {gMonFrontPic_Hoppip, 0x800, SPECIES_HOPPIP},
- [SPECIES_SKIPLOOM] = {gMonFrontPic_Skiploom, 0x800, SPECIES_SKIPLOOM},
- [SPECIES_JUMPLUFF] = {gMonFrontPic_Jumpluff, 0x800, SPECIES_JUMPLUFF},
- [SPECIES_AIPOM] = {gMonFrontPic_Aipom, 0x800, SPECIES_AIPOM},
- [SPECIES_SUNKERN] = {gMonFrontPic_Sunkern, 0x800, SPECIES_SUNKERN},
- [SPECIES_SUNFLORA] = {gMonFrontPic_Sunflora, 0x800, SPECIES_SUNFLORA},
- [SPECIES_YANMA] = {gMonFrontPic_Yanma, 0x800, SPECIES_YANMA},
- [SPECIES_WOOPER] = {gMonFrontPic_Wooper, 0x800, SPECIES_WOOPER},
- [SPECIES_QUAGSIRE] = {gMonFrontPic_Quagsire, 0x800, SPECIES_QUAGSIRE},
- [SPECIES_ESPEON] = {gMonFrontPic_Espeon, 0x800, SPECIES_ESPEON},
- [SPECIES_UMBREON] = {gMonFrontPic_Umbreon, 0x800, SPECIES_UMBREON},
- [SPECIES_MURKROW] = {gMonFrontPic_Murkrow, 0x800, SPECIES_MURKROW},
- [SPECIES_SLOWKING] = {gMonFrontPic_Slowking, 0x800, SPECIES_SLOWKING},
- [SPECIES_MISDREAVUS] = {gMonFrontPic_Misdreavus, 0x800, SPECIES_MISDREAVUS},
- [SPECIES_UNOWN] = {gMonFrontPic_UnownA, 0x800, SPECIES_UNOWN},
- [SPECIES_WOBBUFFET] = {gMonFrontPic_Wobbuffet, 0x800, SPECIES_WOBBUFFET},
- [SPECIES_GIRAFARIG] = {gMonFrontPic_Girafarig, 0x800, SPECIES_GIRAFARIG},
- [SPECIES_PINECO] = {gMonFrontPic_Pineco, 0x800, SPECIES_PINECO},
- [SPECIES_FORRETRESS] = {gMonFrontPic_Forretress, 0x800, SPECIES_FORRETRESS},
- [SPECIES_DUNSPARCE] = {gMonFrontPic_Dunsparce, 0x800, SPECIES_DUNSPARCE},
- [SPECIES_GLIGAR] = {gMonFrontPic_Gligar, 0x800, SPECIES_GLIGAR},
- [SPECIES_STEELIX] = {gMonFrontPic_Steelix, 0x800, SPECIES_STEELIX},
- [SPECIES_SNUBBULL] = {gMonFrontPic_Snubbull, 0x800, SPECIES_SNUBBULL},
- [SPECIES_GRANBULL] = {gMonFrontPic_Granbull, 0x800, SPECIES_GRANBULL},
- [SPECIES_QWILFISH] = {gMonFrontPic_Qwilfish, 0x800, SPECIES_QWILFISH},
- [SPECIES_SCIZOR] = {gMonFrontPic_Scizor, 0x800, SPECIES_SCIZOR},
- [SPECIES_SHUCKLE] = {gMonFrontPic_Shuckle, 0x800, SPECIES_SHUCKLE},
- [SPECIES_HERACROSS] = {gMonFrontPic_Heracross, 0x800, SPECIES_HERACROSS},
- [SPECIES_SNEASEL] = {gMonFrontPic_Sneasel, 0x800, SPECIES_SNEASEL},
- [SPECIES_TEDDIURSA] = {gMonFrontPic_Teddiursa, 0x800, SPECIES_TEDDIURSA},
- [SPECIES_URSARING] = {gMonFrontPic_Ursaring, 0x800, SPECIES_URSARING},
- [SPECIES_SLUGMA] = {gMonFrontPic_Slugma, 0x800, SPECIES_SLUGMA},
- [SPECIES_MAGCARGO] = {gMonFrontPic_Magcargo, 0x800, SPECIES_MAGCARGO},
- [SPECIES_SWINUB] = {gMonFrontPic_Swinub, 0x800, SPECIES_SWINUB},
- [SPECIES_PILOSWINE] = {gMonFrontPic_Piloswine, 0x800, SPECIES_PILOSWINE},
- [SPECIES_CORSOLA] = {gMonFrontPic_Corsola, 0x800, SPECIES_CORSOLA},
- [SPECIES_REMORAID] = {gMonFrontPic_Remoraid, 0x800, SPECIES_REMORAID},
- [SPECIES_OCTILLERY] = {gMonFrontPic_Octillery, 0x800, SPECIES_OCTILLERY},
- [SPECIES_DELIBIRD] = {gMonFrontPic_Delibird, 0x800, SPECIES_DELIBIRD},
- [SPECIES_MANTINE] = {gMonFrontPic_Mantine, 0x800, SPECIES_MANTINE},
- [SPECIES_SKARMORY] = {gMonFrontPic_Skarmory, 0x800, SPECIES_SKARMORY},
- [SPECIES_HOUNDOUR] = {gMonFrontPic_Houndour, 0x800, SPECIES_HOUNDOUR},
- [SPECIES_HOUNDOOM] = {gMonFrontPic_Houndoom, 0x800, SPECIES_HOUNDOOM},
- [SPECIES_KINGDRA] = {gMonFrontPic_Kingdra, 0x800, SPECIES_KINGDRA},
- [SPECIES_PHANPY] = {gMonFrontPic_Phanpy, 0x800, SPECIES_PHANPY},
- [SPECIES_DONPHAN] = {gMonFrontPic_Donphan, 0x800, SPECIES_DONPHAN},
- [SPECIES_PORYGON2] = {gMonFrontPic_Porygon2, 0x800, SPECIES_PORYGON2},
- [SPECIES_STANTLER] = {gMonFrontPic_Stantler, 0x800, SPECIES_STANTLER},
- [SPECIES_SMEARGLE] = {gMonFrontPic_Smeargle, 0x800, SPECIES_SMEARGLE},
- [SPECIES_TYROGUE] = {gMonFrontPic_Tyrogue, 0x800, SPECIES_TYROGUE},
- [SPECIES_HITMONTOP] = {gMonFrontPic_Hitmontop, 0x800, SPECIES_HITMONTOP},
- [SPECIES_SMOOCHUM] = {gMonFrontPic_Smoochum, 0x800, SPECIES_SMOOCHUM},
- [SPECIES_ELEKID] = {gMonFrontPic_Elekid, 0x800, SPECIES_ELEKID},
- [SPECIES_MAGBY] = {gMonFrontPic_Magby, 0x800, SPECIES_MAGBY},
- [SPECIES_MILTANK] = {gMonFrontPic_Miltank, 0x800, SPECIES_MILTANK},
- [SPECIES_BLISSEY] = {gMonFrontPic_Blissey, 0x800, SPECIES_BLISSEY},
- [SPECIES_RAIKOU] = {gMonFrontPic_Raikou, 0x800, SPECIES_RAIKOU},
- [SPECIES_ENTEI] = {gMonFrontPic_Entei, 0x800, SPECIES_ENTEI},
- [SPECIES_SUICUNE] = {gMonFrontPic_Suicune, 0x800, SPECIES_SUICUNE},
- [SPECIES_LARVITAR] = {gMonFrontPic_Larvitar, 0x800, SPECIES_LARVITAR},
- [SPECIES_PUPITAR] = {gMonFrontPic_Pupitar, 0x800, SPECIES_PUPITAR},
- [SPECIES_TYRANITAR] = {gMonFrontPic_Tyranitar, 0x800, SPECIES_TYRANITAR},
- [SPECIES_LUGIA] = {gMonFrontPic_Lugia, 0x800, SPECIES_LUGIA},
- [SPECIES_HO_OH] = {gMonFrontPic_HoOh, 0x800, SPECIES_HO_OH},
- [SPECIES_CELEBI] = {gMonFrontPic_Celebi, 0x800, SPECIES_CELEBI},
- [SPECIES_OLD_UNOWN_B] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_B},
- [SPECIES_OLD_UNOWN_C] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_C},
- [SPECIES_OLD_UNOWN_D] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_D},
- [SPECIES_OLD_UNOWN_E] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_E},
- [SPECIES_OLD_UNOWN_F] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_F},
- [SPECIES_OLD_UNOWN_G] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_G},
- [SPECIES_OLD_UNOWN_H] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_H},
- [SPECIES_OLD_UNOWN_I] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_I},
- [SPECIES_OLD_UNOWN_J] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_J},
- [SPECIES_OLD_UNOWN_K] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_K},
- [SPECIES_OLD_UNOWN_L] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_L},
- [SPECIES_OLD_UNOWN_M] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_M},
- [SPECIES_OLD_UNOWN_N] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_N},
- [SPECIES_OLD_UNOWN_O] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_O},
- [SPECIES_OLD_UNOWN_P] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_P},
- [SPECIES_OLD_UNOWN_Q] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_Q},
- [SPECIES_OLD_UNOWN_R] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_R},
- [SPECIES_OLD_UNOWN_S] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_S},
- [SPECIES_OLD_UNOWN_T] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_T},
- [SPECIES_OLD_UNOWN_U] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_U},
- [SPECIES_OLD_UNOWN_V] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_V},
- [SPECIES_OLD_UNOWN_W] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_W},
- [SPECIES_OLD_UNOWN_X] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_X},
- [SPECIES_OLD_UNOWN_Y] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_Y},
- [SPECIES_OLD_UNOWN_Z] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_Z},
- [SPECIES_TREECKO] = {gMonFrontPic_Treecko, 0x800, SPECIES_TREECKO},
- [SPECIES_GROVYLE] = {gMonFrontPic_Grovyle, 0x800, SPECIES_GROVYLE},
- [SPECIES_SCEPTILE] = {gMonFrontPic_Sceptile, 0x800, SPECIES_SCEPTILE},
- [SPECIES_TORCHIC] = {gMonFrontPic_Torchic, 0x800, SPECIES_TORCHIC},
- [SPECIES_COMBUSKEN] = {gMonFrontPic_Combusken, 0x800, SPECIES_COMBUSKEN},
- [SPECIES_BLAZIKEN] = {gMonFrontPic_Blaziken, 0x800, SPECIES_BLAZIKEN},
- [SPECIES_MUDKIP] = {gMonFrontPic_Mudkip, 0x800, SPECIES_MUDKIP},
- [SPECIES_MARSHTOMP] = {gMonFrontPic_Marshtomp, 0x800, SPECIES_MARSHTOMP},
- [SPECIES_SWAMPERT] = {gMonFrontPic_Swampert, 0x800, SPECIES_SWAMPERT},
- [SPECIES_POOCHYENA] = {gMonFrontPic_Poochyena, 0x800, SPECIES_POOCHYENA},
- [SPECIES_MIGHTYENA] = {gMonFrontPic_Mightyena, 0x800, SPECIES_MIGHTYENA},
- [SPECIES_ZIGZAGOON] = {gMonFrontPic_Zigzagoon, 0x800, SPECIES_ZIGZAGOON},
- [SPECIES_LINOONE] = {gMonFrontPic_Linoone, 0x800, SPECIES_LINOONE},
- [SPECIES_WURMPLE] = {gMonFrontPic_Wurmple, 0x800, SPECIES_WURMPLE},
- [SPECIES_SILCOON] = {gMonFrontPic_Silcoon, 0x800, SPECIES_SILCOON},
- [SPECIES_BEAUTIFLY] = {gMonFrontPic_Beautifly, 0x800, SPECIES_BEAUTIFLY},
- [SPECIES_CASCOON] = {gMonFrontPic_Cascoon, 0x800, SPECIES_CASCOON},
- [SPECIES_DUSTOX] = {gMonFrontPic_Dustox, 0x800, SPECIES_DUSTOX},
- [SPECIES_LOTAD] = {gMonFrontPic_Lotad, 0x800, SPECIES_LOTAD},
- [SPECIES_LOMBRE] = {gMonFrontPic_Lombre, 0x800, SPECIES_LOMBRE},
- [SPECIES_LUDICOLO] = {gMonFrontPic_Ludicolo, 0x800, SPECIES_LUDICOLO},
- [SPECIES_SEEDOT] = {gMonFrontPic_Seedot, 0x800, SPECIES_SEEDOT},
- [SPECIES_NUZLEAF] = {gMonFrontPic_Nuzleaf, 0x800, SPECIES_NUZLEAF},
- [SPECIES_SHIFTRY] = {gMonFrontPic_Shiftry, 0x800, SPECIES_SHIFTRY},
- [SPECIES_NINCADA] = {gMonFrontPic_Nincada, 0x800, SPECIES_NINCADA},
- [SPECIES_NINJASK] = {gMonFrontPic_Ninjask, 0x800, SPECIES_NINJASK},
- [SPECIES_SHEDINJA] = {gMonFrontPic_Shedinja, 0x800, SPECIES_SHEDINJA},
- [SPECIES_TAILLOW] = {gMonFrontPic_Taillow, 0x800, SPECIES_TAILLOW},
- [SPECIES_SWELLOW] = {gMonFrontPic_Swellow, 0x800, SPECIES_SWELLOW},
- [SPECIES_SHROOMISH] = {gMonFrontPic_Shroomish, 0x800, SPECIES_SHROOMISH},
- [SPECIES_BRELOOM] = {gMonFrontPic_Breloom, 0x800, SPECIES_BRELOOM},
- [SPECIES_SPINDA] = {gMonFrontPic_Spinda, 0x800, SPECIES_SPINDA},
- [SPECIES_WINGULL] = {gMonFrontPic_Wingull, 0x800, SPECIES_WINGULL},
- [SPECIES_PELIPPER] = {gMonFrontPic_Pelipper, 0x800, SPECIES_PELIPPER},
- [SPECIES_SURSKIT] = {gMonFrontPic_Surskit, 0x800, SPECIES_SURSKIT},
- [SPECIES_MASQUERAIN] = {gMonFrontPic_Masquerain, 0x800, SPECIES_MASQUERAIN},
- [SPECIES_WAILMER] = {gMonFrontPic_Wailmer, 0x800, SPECIES_WAILMER},
- [SPECIES_WAILORD] = {gMonFrontPic_Wailord, 0x800, SPECIES_WAILORD},
- [SPECIES_SKITTY] = {gMonFrontPic_Skitty, 0x800, SPECIES_SKITTY},
- [SPECIES_DELCATTY] = {gMonFrontPic_Delcatty, 0x800, SPECIES_DELCATTY},
- [SPECIES_KECLEON] = {gMonFrontPic_Kecleon, 0x800, SPECIES_KECLEON},
- [SPECIES_BALTOY] = {gMonFrontPic_Baltoy, 0x800, SPECIES_BALTOY},
- [SPECIES_CLAYDOL] = {gMonFrontPic_Claydol, 0x800, SPECIES_CLAYDOL},
- [SPECIES_NOSEPASS] = {gMonFrontPic_Nosepass, 0x800, SPECIES_NOSEPASS},
- [SPECIES_TORKOAL] = {gMonFrontPic_Torkoal, 0x800, SPECIES_TORKOAL},
- [SPECIES_SABLEYE] = {gMonFrontPic_Sableye, 0x800, SPECIES_SABLEYE},
- [SPECIES_BARBOACH] = {gMonFrontPic_Barboach, 0x800, SPECIES_BARBOACH},
- [SPECIES_WHISCASH] = {gMonFrontPic_Whiscash, 0x800, SPECIES_WHISCASH},
- [SPECIES_LUVDISC] = {gMonFrontPic_Luvdisc, 0x800, SPECIES_LUVDISC},
- [SPECIES_CORPHISH] = {gMonFrontPic_Corphish, 0x800, SPECIES_CORPHISH},
- [SPECIES_CRAWDAUNT] = {gMonFrontPic_Crawdaunt, 0x800, SPECIES_CRAWDAUNT},
- [SPECIES_FEEBAS] = {gMonFrontPic_Feebas, 0x800, SPECIES_FEEBAS},
- [SPECIES_MILOTIC] = {gMonFrontPic_Milotic, 0x800, SPECIES_MILOTIC},
- [SPECIES_CARVANHA] = {gMonFrontPic_Carvanha, 0x800, SPECIES_CARVANHA},
- [SPECIES_SHARPEDO] = {gMonFrontPic_Sharpedo, 0x800, SPECIES_SHARPEDO},
- [SPECIES_TRAPINCH] = {gMonFrontPic_Trapinch, 0x800, SPECIES_TRAPINCH},
- [SPECIES_VIBRAVA] = {gMonFrontPic_Vibrava, 0x800, SPECIES_VIBRAVA},
- [SPECIES_FLYGON] = {gMonFrontPic_Flygon, 0x800, SPECIES_FLYGON},
- [SPECIES_MAKUHITA] = {gMonFrontPic_Makuhita, 0x800, SPECIES_MAKUHITA},
- [SPECIES_HARIYAMA] = {gMonFrontPic_Hariyama, 0x800, SPECIES_HARIYAMA},
- [SPECIES_ELECTRIKE] = {gMonFrontPic_Electrike, 0x800, SPECIES_ELECTRIKE},
- [SPECIES_MANECTRIC] = {gMonFrontPic_Manectric, 0x800, SPECIES_MANECTRIC},
- [SPECIES_NUMEL] = {gMonFrontPic_Numel, 0x800, SPECIES_NUMEL},
- [SPECIES_CAMERUPT] = {gMonFrontPic_Camerupt, 0x800, SPECIES_CAMERUPT},
- [SPECIES_SPHEAL] = {gMonFrontPic_Spheal, 0x800, SPECIES_SPHEAL},
- [SPECIES_SEALEO] = {gMonFrontPic_Sealeo, 0x800, SPECIES_SEALEO},
- [SPECIES_WALREIN] = {gMonFrontPic_Walrein, 0x800, SPECIES_WALREIN},
- [SPECIES_CACNEA] = {gMonFrontPic_Cacnea, 0x800, SPECIES_CACNEA},
- [SPECIES_CACTURNE] = {gMonFrontPic_Cacturne, 0x800, SPECIES_CACTURNE},
- [SPECIES_SNORUNT] = {gMonFrontPic_Snorunt, 0x800, SPECIES_SNORUNT},
- [SPECIES_GLALIE] = {gMonFrontPic_Glalie, 0x800, SPECIES_GLALIE},
- [SPECIES_LUNATONE] = {gMonFrontPic_Lunatone, 0x800, SPECIES_LUNATONE},
- [SPECIES_SOLROCK] = {gMonFrontPic_Solrock, 0x800, SPECIES_SOLROCK},
- [SPECIES_AZURILL] = {gMonFrontPic_Azurill, 0x800, SPECIES_AZURILL},
- [SPECIES_SPOINK] = {gMonFrontPic_Spoink, 0x800, SPECIES_SPOINK},
- [SPECIES_GRUMPIG] = {gMonFrontPic_Grumpig, 0x800, SPECIES_GRUMPIG},
- [SPECIES_PLUSLE] = {gMonFrontPic_Plusle, 0x800, SPECIES_PLUSLE},
- [SPECIES_MINUN] = {gMonFrontPic_Minun, 0x800, SPECIES_MINUN},
- [SPECIES_MAWILE] = {gMonFrontPic_Mawile, 0x800, SPECIES_MAWILE},
- [SPECIES_MEDITITE] = {gMonFrontPic_Meditite, 0x800, SPECIES_MEDITITE},
- [SPECIES_MEDICHAM] = {gMonFrontPic_Medicham, 0x800, SPECIES_MEDICHAM},
- [SPECIES_SWABLU] = {gMonFrontPic_Swablu, 0x800, SPECIES_SWABLU},
- [SPECIES_ALTARIA] = {gMonFrontPic_Altaria, 0x800, SPECIES_ALTARIA},
- [SPECIES_WYNAUT] = {gMonFrontPic_Wynaut, 0x800, SPECIES_WYNAUT},
- [SPECIES_DUSKULL] = {gMonFrontPic_Duskull, 0x800, SPECIES_DUSKULL},
- [SPECIES_DUSCLOPS] = {gMonFrontPic_Dusclops, 0x800, SPECIES_DUSCLOPS},
- [SPECIES_ROSELIA] = {gMonFrontPic_Roselia, 0x800, SPECIES_ROSELIA},
- [SPECIES_SLAKOTH] = {gMonFrontPic_Slakoth, 0x800, SPECIES_SLAKOTH},
- [SPECIES_VIGOROTH] = {gMonFrontPic_Vigoroth, 0x800, SPECIES_VIGOROTH},
- [SPECIES_SLAKING] = {gMonFrontPic_Slaking, 0x800, SPECIES_SLAKING},
- [SPECIES_GULPIN] = {gMonFrontPic_Gulpin, 0x800, SPECIES_GULPIN},
- [SPECIES_SWALOT] = {gMonFrontPic_Swalot, 0x800, SPECIES_SWALOT},
- [SPECIES_TROPIUS] = {gMonFrontPic_Tropius, 0x800, SPECIES_TROPIUS},
- [SPECIES_WHISMUR] = {gMonFrontPic_Whismur, 0x800, SPECIES_WHISMUR},
- [SPECIES_LOUDRED] = {gMonFrontPic_Loudred, 0x800, SPECIES_LOUDRED},
- [SPECIES_EXPLOUD] = {gMonFrontPic_Exploud, 0x800, SPECIES_EXPLOUD},
- [SPECIES_CLAMPERL] = {gMonFrontPic_Clamperl, 0x800, SPECIES_CLAMPERL},
- [SPECIES_HUNTAIL] = {gMonFrontPic_Huntail, 0x800, SPECIES_HUNTAIL},
- [SPECIES_GOREBYSS] = {gMonFrontPic_Gorebyss, 0x800, SPECIES_GOREBYSS},
- [SPECIES_ABSOL] = {gMonFrontPic_Absol, 0x800, SPECIES_ABSOL},
- [SPECIES_SHUPPET] = {gMonFrontPic_Shuppet, 0x800, SPECIES_SHUPPET},
- [SPECIES_BANETTE] = {gMonFrontPic_Banette, 0x800, SPECIES_BANETTE},
- [SPECIES_SEVIPER] = {gMonFrontPic_Seviper, 0x800, SPECIES_SEVIPER},
- [SPECIES_ZANGOOSE] = {gMonFrontPic_Zangoose, 0x800, SPECIES_ZANGOOSE},
- [SPECIES_RELICANTH] = {gMonFrontPic_Relicanth, 0x800, SPECIES_RELICANTH},
- [SPECIES_ARON] = {gMonFrontPic_Aron, 0x800, SPECIES_ARON},
- [SPECIES_LAIRON] = {gMonFrontPic_Lairon, 0x800, SPECIES_LAIRON},
- [SPECIES_AGGRON] = {gMonFrontPic_Aggron, 0x800, SPECIES_AGGRON},
- [SPECIES_CASTFORM] = {gMonFrontPic_Castform, 0x800, SPECIES_CASTFORM},
- [SPECIES_VOLBEAT] = {gMonFrontPic_Volbeat, 0x800, SPECIES_VOLBEAT},
- [SPECIES_ILLUMISE] = {gMonFrontPic_Illumise, 0x800, SPECIES_ILLUMISE},
- [SPECIES_LILEEP] = {gMonFrontPic_Lileep, 0x800, SPECIES_LILEEP},
- [SPECIES_CRADILY] = {gMonFrontPic_Cradily, 0x800, SPECIES_CRADILY},
- [SPECIES_ANORITH] = {gMonFrontPic_Anorith, 0x800, SPECIES_ANORITH},
- [SPECIES_ARMALDO] = {gMonFrontPic_Armaldo, 0x800, SPECIES_ARMALDO},
- [SPECIES_RALTS] = {gMonFrontPic_Ralts, 0x800, SPECIES_RALTS},
- [SPECIES_KIRLIA] = {gMonFrontPic_Kirlia, 0x800, SPECIES_KIRLIA},
- [SPECIES_GARDEVOIR] = {gMonFrontPic_Gardevoir, 0x800, SPECIES_GARDEVOIR},
- [SPECIES_BAGON] = {gMonFrontPic_Bagon, 0x800, SPECIES_BAGON},
- [SPECIES_SHELGON] = {gMonFrontPic_Shelgon, 0x800, SPECIES_SHELGON},
- [SPECIES_SALAMENCE] = {gMonFrontPic_Salamence, 0x800, SPECIES_SALAMENCE},
- [SPECIES_BELDUM] = {gMonFrontPic_Beldum, 0x800, SPECIES_BELDUM},
- [SPECIES_METANG] = {gMonFrontPic_Metang, 0x800, SPECIES_METANG},
- [SPECIES_METAGROSS] = {gMonFrontPic_Metagross, 0x800, SPECIES_METAGROSS},
- [SPECIES_REGIROCK] = {gMonFrontPic_Regirock, 0x800, SPECIES_REGIROCK},
- [SPECIES_REGICE] = {gMonFrontPic_Regice, 0x800, SPECIES_REGICE},
- [SPECIES_REGISTEEL] = {gMonFrontPic_Registeel, 0x800, SPECIES_REGISTEEL},
- [SPECIES_KYOGRE] = {gMonFrontPic_Kyogre, 0x800, SPECIES_KYOGRE},
- [SPECIES_GROUDON] = {gMonFrontPic_Groudon, 0x800, SPECIES_GROUDON},
- [SPECIES_RAYQUAZA] = {gMonFrontPic_Rayquaza, 0x800, SPECIES_RAYQUAZA},
- [SPECIES_LATIAS] = {gMonFrontPic_Latias, 0x800, SPECIES_LATIAS},
- [SPECIES_LATIOS] = {gMonFrontPic_Latios, 0x800, SPECIES_LATIOS},
- [SPECIES_JIRACHI] = {gMonFrontPic_Jirachi, 0x800, SPECIES_JIRACHI},
- [SPECIES_DEOXYS] = {gMonFrontPic_Deoxys, 0x800, SPECIES_DEOXYS},
- [SPECIES_CHIMECHO] = {gMonFrontPic_Chimecho, 0x800, SPECIES_CHIMECHO},
- [SPECIES_EGG] = {gMonFrontPic_Egg, 0x800, SPECIES_EGG},
- [SPECIES_UNOWN_B] = {gMonFrontPic_UnownB, 0x800, SPECIES_UNOWN_B},
- [SPECIES_UNOWN_C] = {gMonFrontPic_UnownC, 0x800, SPECIES_UNOWN_C},
- [SPECIES_UNOWN_D] = {gMonFrontPic_UnownD, 0x800, SPECIES_UNOWN_D},
- [SPECIES_UNOWN_E] = {gMonFrontPic_UnownE, 0x800, SPECIES_UNOWN_E},
- [SPECIES_UNOWN_F] = {gMonFrontPic_UnownF, 0x800, SPECIES_UNOWN_F},
- [SPECIES_UNOWN_G] = {gMonFrontPic_UnownG, 0x800, SPECIES_UNOWN_G},
- [SPECIES_UNOWN_H] = {gMonFrontPic_UnownH, 0x800, SPECIES_UNOWN_H},
- [SPECIES_UNOWN_I] = {gMonFrontPic_UnownI, 0x800, SPECIES_UNOWN_I},
- [SPECIES_UNOWN_J] = {gMonFrontPic_UnownJ, 0x800, SPECIES_UNOWN_J},
- [SPECIES_UNOWN_K] = {gMonFrontPic_UnownK, 0x800, SPECIES_UNOWN_K},
- [SPECIES_UNOWN_L] = {gMonFrontPic_UnownL, 0x800, SPECIES_UNOWN_L},
- [SPECIES_UNOWN_M] = {gMonFrontPic_UnownM, 0x800, SPECIES_UNOWN_M},
- [SPECIES_UNOWN_N] = {gMonFrontPic_UnownN, 0x800, SPECIES_UNOWN_N},
- [SPECIES_UNOWN_O] = {gMonFrontPic_UnownO, 0x800, SPECIES_UNOWN_O},
- [SPECIES_UNOWN_P] = {gMonFrontPic_UnownP, 0x800, SPECIES_UNOWN_P},
- [SPECIES_UNOWN_Q] = {gMonFrontPic_UnownQ, 0x800, SPECIES_UNOWN_Q},
- [SPECIES_UNOWN_R] = {gMonFrontPic_UnownR, 0x800, SPECIES_UNOWN_R},
- [SPECIES_UNOWN_S] = {gMonFrontPic_UnownS, 0x800, SPECIES_UNOWN_S},
- [SPECIES_UNOWN_T] = {gMonFrontPic_UnownT, 0x800, SPECIES_UNOWN_T},
- [SPECIES_UNOWN_U] = {gMonFrontPic_UnownU, 0x800, SPECIES_UNOWN_U},
- [SPECIES_UNOWN_V] = {gMonFrontPic_UnownV, 0x800, SPECIES_UNOWN_V},
- [SPECIES_UNOWN_W] = {gMonFrontPic_UnownW, 0x800, SPECIES_UNOWN_W},
- [SPECIES_UNOWN_X] = {gMonFrontPic_UnownX, 0x800, SPECIES_UNOWN_X},
- [SPECIES_UNOWN_Y] = {gMonFrontPic_UnownY, 0x800, SPECIES_UNOWN_Y},
- [SPECIES_UNOWN_Z] = {gMonFrontPic_UnownZ, 0x800, SPECIES_UNOWN_Z},
- [SPECIES_UNOWN_EMARK] = {gMonFrontPic_UnownExclamationMark, 0x800, SPECIES_UNOWN_EMARK},
- [SPECIES_UNOWN_QMARK] = {gMonFrontPic_UnownQuestionMark, 0x800, SPECIES_UNOWN_QMARK},
+ SPECIES_SPRITE(NONE, gMonFrontPic_CircledQuestionMark),
+ SPECIES_SPRITE(BULBASAUR, gMonFrontPic_Bulbasaur),
+ SPECIES_SPRITE(IVYSAUR, gMonFrontPic_Ivysaur),
+ SPECIES_SPRITE(VENUSAUR, gMonFrontPic_Venusaur),
+ SPECIES_SPRITE(CHARMANDER, gMonFrontPic_Charmander),
+ SPECIES_SPRITE(CHARMELEON, gMonFrontPic_Charmeleon),
+ SPECIES_SPRITE(CHARIZARD, gMonFrontPic_Charizard),
+ SPECIES_SPRITE(SQUIRTLE, gMonFrontPic_Squirtle),
+ SPECIES_SPRITE(WARTORTLE, gMonFrontPic_Wartortle),
+ SPECIES_SPRITE(BLASTOISE, gMonFrontPic_Blastoise),
+ SPECIES_SPRITE(CATERPIE, gMonFrontPic_Caterpie),
+ SPECIES_SPRITE(METAPOD, gMonFrontPic_Metapod),
+ SPECIES_SPRITE(BUTTERFREE, gMonFrontPic_Butterfree),
+ SPECIES_SPRITE(WEEDLE, gMonFrontPic_Weedle),
+ SPECIES_SPRITE(KAKUNA, gMonFrontPic_Kakuna),
+ SPECIES_SPRITE(BEEDRILL, gMonFrontPic_Beedrill),
+ SPECIES_SPRITE(PIDGEY, gMonFrontPic_Pidgey),
+ SPECIES_SPRITE(PIDGEOTTO, gMonFrontPic_Pidgeotto),
+ SPECIES_SPRITE(PIDGEOT, gMonFrontPic_Pidgeot),
+ SPECIES_SPRITE(RATTATA, gMonFrontPic_Rattata),
+ SPECIES_SPRITE(RATICATE, gMonFrontPic_Raticate),
+ SPECIES_SPRITE(SPEAROW, gMonFrontPic_Spearow),
+ SPECIES_SPRITE(FEAROW, gMonFrontPic_Fearow),
+ SPECIES_SPRITE(EKANS, gMonFrontPic_Ekans),
+ SPECIES_SPRITE(ARBOK, gMonFrontPic_Arbok),
+ SPECIES_SPRITE(PIKACHU, gMonFrontPic_Pikachu),
+ SPECIES_SPRITE(RAICHU, gMonFrontPic_Raichu),
+ SPECIES_SPRITE(SANDSHREW, gMonFrontPic_Sandshrew),
+ SPECIES_SPRITE(SANDSLASH, gMonFrontPic_Sandslash),
+ SPECIES_SPRITE(NIDORAN_F, gMonFrontPic_NidoranF),
+ SPECIES_SPRITE(NIDORINA, gMonFrontPic_Nidorina),
+ SPECIES_SPRITE(NIDOQUEEN, gMonFrontPic_Nidoqueen),
+ SPECIES_SPRITE(NIDORAN_M, gMonFrontPic_NidoranM),
+ SPECIES_SPRITE(NIDORINO, gMonFrontPic_Nidorino),
+ SPECIES_SPRITE(NIDOKING, gMonFrontPic_Nidoking),
+ SPECIES_SPRITE(CLEFAIRY, gMonFrontPic_Clefairy),
+ SPECIES_SPRITE(CLEFABLE, gMonFrontPic_Clefable),
+ SPECIES_SPRITE(VULPIX, gMonFrontPic_Vulpix),
+ SPECIES_SPRITE(NINETALES, gMonFrontPic_Ninetales),
+ SPECIES_SPRITE(JIGGLYPUFF, gMonFrontPic_Jigglypuff),
+ SPECIES_SPRITE(WIGGLYTUFF, gMonFrontPic_Wigglytuff),
+ SPECIES_SPRITE(ZUBAT, gMonFrontPic_Zubat),
+ SPECIES_SPRITE(GOLBAT, gMonFrontPic_Golbat),
+ SPECIES_SPRITE(ODDISH, gMonFrontPic_Oddish),
+ SPECIES_SPRITE(GLOOM, gMonFrontPic_Gloom),
+ SPECIES_SPRITE(VILEPLUME, gMonFrontPic_Vileplume),
+ SPECIES_SPRITE(PARAS, gMonFrontPic_Paras),
+ SPECIES_SPRITE(PARASECT, gMonFrontPic_Parasect),
+ SPECIES_SPRITE(VENONAT, gMonFrontPic_Venonat),
+ SPECIES_SPRITE(VENOMOTH, gMonFrontPic_Venomoth),
+ SPECIES_SPRITE(DIGLETT, gMonFrontPic_Diglett),
+ SPECIES_SPRITE(DUGTRIO, gMonFrontPic_Dugtrio),
+ SPECIES_SPRITE(MEOWTH, gMonFrontPic_Meowth),
+ SPECIES_SPRITE(PERSIAN, gMonFrontPic_Persian),
+ SPECIES_SPRITE(PSYDUCK, gMonFrontPic_Psyduck),
+ SPECIES_SPRITE(GOLDUCK, gMonFrontPic_Golduck),
+ SPECIES_SPRITE(MANKEY, gMonFrontPic_Mankey),
+ SPECIES_SPRITE(PRIMEAPE, gMonFrontPic_Primeape),
+ SPECIES_SPRITE(GROWLITHE, gMonFrontPic_Growlithe),
+ SPECIES_SPRITE(ARCANINE, gMonFrontPic_Arcanine),
+ SPECIES_SPRITE(POLIWAG, gMonFrontPic_Poliwag),
+ SPECIES_SPRITE(POLIWHIRL, gMonFrontPic_Poliwhirl),
+ SPECIES_SPRITE(POLIWRATH, gMonFrontPic_Poliwrath),
+ SPECIES_SPRITE(ABRA, gMonFrontPic_Abra),
+ SPECIES_SPRITE(KADABRA, gMonFrontPic_Kadabra),
+ SPECIES_SPRITE(ALAKAZAM, gMonFrontPic_Alakazam),
+ SPECIES_SPRITE(MACHOP, gMonFrontPic_Machop),
+ SPECIES_SPRITE(MACHOKE, gMonFrontPic_Machoke),
+ SPECIES_SPRITE(MACHAMP, gMonFrontPic_Machamp),
+ SPECIES_SPRITE(BELLSPROUT, gMonFrontPic_Bellsprout),
+ SPECIES_SPRITE(WEEPINBELL, gMonFrontPic_Weepinbell),
+ SPECIES_SPRITE(VICTREEBEL, gMonFrontPic_Victreebel),
+ SPECIES_SPRITE(TENTACOOL, gMonFrontPic_Tentacool),
+ SPECIES_SPRITE(TENTACRUEL, gMonFrontPic_Tentacruel),
+ SPECIES_SPRITE(GEODUDE, gMonFrontPic_Geodude),
+ SPECIES_SPRITE(GRAVELER, gMonFrontPic_Graveler),
+ SPECIES_SPRITE(GOLEM, gMonFrontPic_Golem),
+ SPECIES_SPRITE(PONYTA, gMonFrontPic_Ponyta),
+ SPECIES_SPRITE(RAPIDASH, gMonFrontPic_Rapidash),
+ SPECIES_SPRITE(SLOWPOKE, gMonFrontPic_Slowpoke),
+ SPECIES_SPRITE(SLOWBRO, gMonFrontPic_Slowbro),
+ SPECIES_SPRITE(MAGNEMITE, gMonFrontPic_Magnemite),
+ SPECIES_SPRITE(MAGNETON, gMonFrontPic_Magneton),
+ SPECIES_SPRITE(FARFETCHD, gMonFrontPic_Farfetchd),
+ SPECIES_SPRITE(DODUO, gMonFrontPic_Doduo),
+ SPECIES_SPRITE(DODRIO, gMonFrontPic_Dodrio),
+ SPECIES_SPRITE(SEEL, gMonFrontPic_Seel),
+ SPECIES_SPRITE(DEWGONG, gMonFrontPic_Dewgong),
+ SPECIES_SPRITE(GRIMER, gMonFrontPic_Grimer),
+ SPECIES_SPRITE(MUK, gMonFrontPic_Muk),
+ SPECIES_SPRITE(SHELLDER, gMonFrontPic_Shellder),
+ SPECIES_SPRITE(CLOYSTER, gMonFrontPic_Cloyster),
+ SPECIES_SPRITE(GASTLY, gMonFrontPic_Gastly),
+ SPECIES_SPRITE(HAUNTER, gMonFrontPic_Haunter),
+ SPECIES_SPRITE(GENGAR, gMonFrontPic_Gengar),
+ SPECIES_SPRITE(ONIX, gMonFrontPic_Onix),
+ SPECIES_SPRITE(DROWZEE, gMonFrontPic_Drowzee),
+ SPECIES_SPRITE(HYPNO, gMonFrontPic_Hypno),
+ SPECIES_SPRITE(KRABBY, gMonFrontPic_Krabby),
+ SPECIES_SPRITE(KINGLER, gMonFrontPic_Kingler),
+ SPECIES_SPRITE(VOLTORB, gMonFrontPic_Voltorb),
+ SPECIES_SPRITE(ELECTRODE, gMonFrontPic_Electrode),
+ SPECIES_SPRITE(EXEGGCUTE, gMonFrontPic_Exeggcute),
+ SPECIES_SPRITE(EXEGGUTOR, gMonFrontPic_Exeggutor),
+ SPECIES_SPRITE(CUBONE, gMonFrontPic_Cubone),
+ SPECIES_SPRITE(MAROWAK, gMonFrontPic_Marowak),
+ SPECIES_SPRITE(HITMONLEE, gMonFrontPic_Hitmonlee),
+ SPECIES_SPRITE(HITMONCHAN, gMonFrontPic_Hitmonchan),
+ SPECIES_SPRITE(LICKITUNG, gMonFrontPic_Lickitung),
+ SPECIES_SPRITE(KOFFING, gMonFrontPic_Koffing),
+ SPECIES_SPRITE(WEEZING, gMonFrontPic_Weezing),
+ SPECIES_SPRITE(RHYHORN, gMonFrontPic_Rhyhorn),
+ SPECIES_SPRITE(RHYDON, gMonFrontPic_Rhydon),
+ SPECIES_SPRITE(CHANSEY, gMonFrontPic_Chansey),
+ SPECIES_SPRITE(TANGELA, gMonFrontPic_Tangela),
+ SPECIES_SPRITE(KANGASKHAN, gMonFrontPic_Kangaskhan),
+ SPECIES_SPRITE(HORSEA, gMonFrontPic_Horsea),
+ SPECIES_SPRITE(SEADRA, gMonFrontPic_Seadra),
+ SPECIES_SPRITE(GOLDEEN, gMonFrontPic_Goldeen),
+ SPECIES_SPRITE(SEAKING, gMonFrontPic_Seaking),
+ SPECIES_SPRITE(STARYU, gMonFrontPic_Staryu),
+ SPECIES_SPRITE(STARMIE, gMonFrontPic_Starmie),
+ SPECIES_SPRITE(MR_MIME, gMonFrontPic_Mrmime),
+ SPECIES_SPRITE(SCYTHER, gMonFrontPic_Scyther),
+ SPECIES_SPRITE(JYNX, gMonFrontPic_Jynx),
+ SPECIES_SPRITE(ELECTABUZZ, gMonFrontPic_Electabuzz),
+ SPECIES_SPRITE(MAGMAR, gMonFrontPic_Magmar),
+ SPECIES_SPRITE(PINSIR, gMonFrontPic_Pinsir),
+ SPECIES_SPRITE(TAUROS, gMonFrontPic_Tauros),
+ SPECIES_SPRITE(MAGIKARP, gMonFrontPic_Magikarp),
+ SPECIES_SPRITE(GYARADOS, gMonFrontPic_Gyarados),
+ SPECIES_SPRITE(LAPRAS, gMonFrontPic_Lapras),
+ SPECIES_SPRITE(DITTO, gMonFrontPic_Ditto),
+ SPECIES_SPRITE(EEVEE, gMonFrontPic_Eevee),
+ SPECIES_SPRITE(VAPOREON, gMonFrontPic_Vaporeon),
+ SPECIES_SPRITE(JOLTEON, gMonFrontPic_Jolteon),
+ SPECIES_SPRITE(FLAREON, gMonFrontPic_Flareon),
+ SPECIES_SPRITE(PORYGON, gMonFrontPic_Porygon),
+ SPECIES_SPRITE(OMANYTE, gMonFrontPic_Omanyte),
+ SPECIES_SPRITE(OMASTAR, gMonFrontPic_Omastar),
+ SPECIES_SPRITE(KABUTO, gMonFrontPic_Kabuto),
+ SPECIES_SPRITE(KABUTOPS, gMonFrontPic_Kabutops),
+ SPECIES_SPRITE(AERODACTYL, gMonFrontPic_Aerodactyl),
+ SPECIES_SPRITE(SNORLAX, gMonFrontPic_Snorlax),
+ SPECIES_SPRITE(ARTICUNO, gMonFrontPic_Articuno),
+ SPECIES_SPRITE(ZAPDOS, gMonFrontPic_Zapdos),
+ SPECIES_SPRITE(MOLTRES, gMonFrontPic_Moltres),
+ SPECIES_SPRITE(DRATINI, gMonFrontPic_Dratini),
+ SPECIES_SPRITE(DRAGONAIR, gMonFrontPic_Dragonair),
+ SPECIES_SPRITE(DRAGONITE, gMonFrontPic_Dragonite),
+ SPECIES_SPRITE(MEWTWO, gMonFrontPic_Mewtwo),
+ SPECIES_SPRITE(MEW, gMonFrontPic_Mew),
+ SPECIES_SPRITE(CHIKORITA, gMonFrontPic_Chikorita),
+ SPECIES_SPRITE(BAYLEEF, gMonFrontPic_Bayleef),
+ SPECIES_SPRITE(MEGANIUM, gMonFrontPic_Meganium),
+ SPECIES_SPRITE(CYNDAQUIL, gMonFrontPic_Cyndaquil),
+ SPECIES_SPRITE(QUILAVA, gMonFrontPic_Quilava),
+ SPECIES_SPRITE(TYPHLOSION, gMonFrontPic_Typhlosion),
+ SPECIES_SPRITE(TOTODILE, gMonFrontPic_Totodile),
+ SPECIES_SPRITE(CROCONAW, gMonFrontPic_Croconaw),
+ SPECIES_SPRITE(FERALIGATR, gMonFrontPic_Feraligatr),
+ SPECIES_SPRITE(SENTRET, gMonFrontPic_Sentret),
+ SPECIES_SPRITE(FURRET, gMonFrontPic_Furret),
+ SPECIES_SPRITE(HOOTHOOT, gMonFrontPic_Hoothoot),
+ SPECIES_SPRITE(NOCTOWL, gMonFrontPic_Noctowl),
+ SPECIES_SPRITE(LEDYBA, gMonFrontPic_Ledyba),
+ SPECIES_SPRITE(LEDIAN, gMonFrontPic_Ledian),
+ SPECIES_SPRITE(SPINARAK, gMonFrontPic_Spinarak),
+ SPECIES_SPRITE(ARIADOS, gMonFrontPic_Ariados),
+ SPECIES_SPRITE(CROBAT, gMonFrontPic_Crobat),
+ SPECIES_SPRITE(CHINCHOU, gMonFrontPic_Chinchou),
+ SPECIES_SPRITE(LANTURN, gMonFrontPic_Lanturn),
+ SPECIES_SPRITE(PICHU, gMonFrontPic_Pichu),
+ SPECIES_SPRITE(CLEFFA, gMonFrontPic_Cleffa),
+ SPECIES_SPRITE(IGGLYBUFF, gMonFrontPic_Igglybuff),
+ SPECIES_SPRITE(TOGEPI, gMonFrontPic_Togepi),
+ SPECIES_SPRITE(TOGETIC, gMonFrontPic_Togetic),
+ SPECIES_SPRITE(NATU, gMonFrontPic_Natu),
+ SPECIES_SPRITE(XATU, gMonFrontPic_Xatu),
+ SPECIES_SPRITE(MAREEP, gMonFrontPic_Mareep),
+ SPECIES_SPRITE(FLAAFFY, gMonFrontPic_Flaaffy),
+ SPECIES_SPRITE(AMPHAROS, gMonFrontPic_Ampharos),
+ SPECIES_SPRITE(BELLOSSOM, gMonFrontPic_Bellossom),
+ SPECIES_SPRITE(MARILL, gMonFrontPic_Marill),
+ SPECIES_SPRITE(AZUMARILL, gMonFrontPic_Azumarill),
+ SPECIES_SPRITE(SUDOWOODO, gMonFrontPic_Sudowoodo),
+ SPECIES_SPRITE(POLITOED, gMonFrontPic_Politoed),
+ SPECIES_SPRITE(HOPPIP, gMonFrontPic_Hoppip),
+ SPECIES_SPRITE(SKIPLOOM, gMonFrontPic_Skiploom),
+ SPECIES_SPRITE(JUMPLUFF, gMonFrontPic_Jumpluff),
+ SPECIES_SPRITE(AIPOM, gMonFrontPic_Aipom),
+ SPECIES_SPRITE(SUNKERN, gMonFrontPic_Sunkern),
+ SPECIES_SPRITE(SUNFLORA, gMonFrontPic_Sunflora),
+ SPECIES_SPRITE(YANMA, gMonFrontPic_Yanma),
+ SPECIES_SPRITE(WOOPER, gMonFrontPic_Wooper),
+ SPECIES_SPRITE(QUAGSIRE, gMonFrontPic_Quagsire),
+ SPECIES_SPRITE(ESPEON, gMonFrontPic_Espeon),
+ SPECIES_SPRITE(UMBREON, gMonFrontPic_Umbreon),
+ SPECIES_SPRITE(MURKROW, gMonFrontPic_Murkrow),
+ SPECIES_SPRITE(SLOWKING, gMonFrontPic_Slowking),
+ SPECIES_SPRITE(MISDREAVUS, gMonFrontPic_Misdreavus),
+ SPECIES_SPRITE(UNOWN, gMonFrontPic_UnownA),
+ SPECIES_SPRITE(WOBBUFFET, gMonFrontPic_Wobbuffet),
+ SPECIES_SPRITE(GIRAFARIG, gMonFrontPic_Girafarig),
+ SPECIES_SPRITE(PINECO, gMonFrontPic_Pineco),
+ SPECIES_SPRITE(FORRETRESS, gMonFrontPic_Forretress),
+ SPECIES_SPRITE(DUNSPARCE, gMonFrontPic_Dunsparce),
+ SPECIES_SPRITE(GLIGAR, gMonFrontPic_Gligar),
+ SPECIES_SPRITE(STEELIX, gMonFrontPic_Steelix),
+ SPECIES_SPRITE(SNUBBULL, gMonFrontPic_Snubbull),
+ SPECIES_SPRITE(GRANBULL, gMonFrontPic_Granbull),
+ SPECIES_SPRITE(QWILFISH, gMonFrontPic_Qwilfish),
+ SPECIES_SPRITE(SCIZOR, gMonFrontPic_Scizor),
+ SPECIES_SPRITE(SHUCKLE, gMonFrontPic_Shuckle),
+ SPECIES_SPRITE(HERACROSS, gMonFrontPic_Heracross),
+ SPECIES_SPRITE(SNEASEL, gMonFrontPic_Sneasel),
+ SPECIES_SPRITE(TEDDIURSA, gMonFrontPic_Teddiursa),
+ SPECIES_SPRITE(URSARING, gMonFrontPic_Ursaring),
+ SPECIES_SPRITE(SLUGMA, gMonFrontPic_Slugma),
+ SPECIES_SPRITE(MAGCARGO, gMonFrontPic_Magcargo),
+ SPECIES_SPRITE(SWINUB, gMonFrontPic_Swinub),
+ SPECIES_SPRITE(PILOSWINE, gMonFrontPic_Piloswine),
+ SPECIES_SPRITE(CORSOLA, gMonFrontPic_Corsola),
+ SPECIES_SPRITE(REMORAID, gMonFrontPic_Remoraid),
+ SPECIES_SPRITE(OCTILLERY, gMonFrontPic_Octillery),
+ SPECIES_SPRITE(DELIBIRD, gMonFrontPic_Delibird),
+ SPECIES_SPRITE(MANTINE, gMonFrontPic_Mantine),
+ SPECIES_SPRITE(SKARMORY, gMonFrontPic_Skarmory),
+ SPECIES_SPRITE(HOUNDOUR, gMonFrontPic_Houndour),
+ SPECIES_SPRITE(HOUNDOOM, gMonFrontPic_Houndoom),
+ SPECIES_SPRITE(KINGDRA, gMonFrontPic_Kingdra),
+ SPECIES_SPRITE(PHANPY, gMonFrontPic_Phanpy),
+ SPECIES_SPRITE(DONPHAN, gMonFrontPic_Donphan),
+ SPECIES_SPRITE(PORYGON2, gMonFrontPic_Porygon2),
+ SPECIES_SPRITE(STANTLER, gMonFrontPic_Stantler),
+ SPECIES_SPRITE(SMEARGLE, gMonFrontPic_Smeargle),
+ SPECIES_SPRITE(TYROGUE, gMonFrontPic_Tyrogue),
+ SPECIES_SPRITE(HITMONTOP, gMonFrontPic_Hitmontop),
+ SPECIES_SPRITE(SMOOCHUM, gMonFrontPic_Smoochum),
+ SPECIES_SPRITE(ELEKID, gMonFrontPic_Elekid),
+ SPECIES_SPRITE(MAGBY, gMonFrontPic_Magby),
+ SPECIES_SPRITE(MILTANK, gMonFrontPic_Miltank),
+ SPECIES_SPRITE(BLISSEY, gMonFrontPic_Blissey),
+ SPECIES_SPRITE(RAIKOU, gMonFrontPic_Raikou),
+ SPECIES_SPRITE(ENTEI, gMonFrontPic_Entei),
+ SPECIES_SPRITE(SUICUNE, gMonFrontPic_Suicune),
+ SPECIES_SPRITE(LARVITAR, gMonFrontPic_Larvitar),
+ SPECIES_SPRITE(PUPITAR, gMonFrontPic_Pupitar),
+ SPECIES_SPRITE(TYRANITAR, gMonFrontPic_Tyranitar),
+ SPECIES_SPRITE(LUGIA, gMonFrontPic_Lugia),
+ SPECIES_SPRITE(HO_OH, gMonFrontPic_HoOh),
+ SPECIES_SPRITE(CELEBI, gMonFrontPic_Celebi),
+ SPECIES_SPRITE(OLD_UNOWN_B, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_C, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_D, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_E, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_F, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_G, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_H, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_I, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_J, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_K, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_L, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_M, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_N, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_O, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_P, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_Q, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_R, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_S, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_T, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_U, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_V, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_W, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_X, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_Y, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_Z, gMonFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(TREECKO, gMonFrontPic_Treecko),
+ SPECIES_SPRITE(GROVYLE, gMonFrontPic_Grovyle),
+ SPECIES_SPRITE(SCEPTILE, gMonFrontPic_Sceptile),
+ SPECIES_SPRITE(TORCHIC, gMonFrontPic_Torchic),
+ SPECIES_SPRITE(COMBUSKEN, gMonFrontPic_Combusken),
+ SPECIES_SPRITE(BLAZIKEN, gMonFrontPic_Blaziken),
+ SPECIES_SPRITE(MUDKIP, gMonFrontPic_Mudkip),
+ SPECIES_SPRITE(MARSHTOMP, gMonFrontPic_Marshtomp),
+ SPECIES_SPRITE(SWAMPERT, gMonFrontPic_Swampert),
+ SPECIES_SPRITE(POOCHYENA, gMonFrontPic_Poochyena),
+ SPECIES_SPRITE(MIGHTYENA, gMonFrontPic_Mightyena),
+ SPECIES_SPRITE(ZIGZAGOON, gMonFrontPic_Zigzagoon),
+ SPECIES_SPRITE(LINOONE, gMonFrontPic_Linoone),
+ SPECIES_SPRITE(WURMPLE, gMonFrontPic_Wurmple),
+ SPECIES_SPRITE(SILCOON, gMonFrontPic_Silcoon),
+ SPECIES_SPRITE(BEAUTIFLY, gMonFrontPic_Beautifly),
+ SPECIES_SPRITE(CASCOON, gMonFrontPic_Cascoon),
+ SPECIES_SPRITE(DUSTOX, gMonFrontPic_Dustox),
+ SPECIES_SPRITE(LOTAD, gMonFrontPic_Lotad),
+ SPECIES_SPRITE(LOMBRE, gMonFrontPic_Lombre),
+ SPECIES_SPRITE(LUDICOLO, gMonFrontPic_Ludicolo),
+ SPECIES_SPRITE(SEEDOT, gMonFrontPic_Seedot),
+ SPECIES_SPRITE(NUZLEAF, gMonFrontPic_Nuzleaf),
+ SPECIES_SPRITE(SHIFTRY, gMonFrontPic_Shiftry),
+ SPECIES_SPRITE(NINCADA, gMonFrontPic_Nincada),
+ SPECIES_SPRITE(NINJASK, gMonFrontPic_Ninjask),
+ SPECIES_SPRITE(SHEDINJA, gMonFrontPic_Shedinja),
+ SPECIES_SPRITE(TAILLOW, gMonFrontPic_Taillow),
+ SPECIES_SPRITE(SWELLOW, gMonFrontPic_Swellow),
+ SPECIES_SPRITE(SHROOMISH, gMonFrontPic_Shroomish),
+ SPECIES_SPRITE(BRELOOM, gMonFrontPic_Breloom),
+ SPECIES_SPRITE(SPINDA, gMonFrontPic_Spinda),
+ SPECIES_SPRITE(WINGULL, gMonFrontPic_Wingull),
+ SPECIES_SPRITE(PELIPPER, gMonFrontPic_Pelipper),
+ SPECIES_SPRITE(SURSKIT, gMonFrontPic_Surskit),
+ SPECIES_SPRITE(MASQUERAIN, gMonFrontPic_Masquerain),
+ SPECIES_SPRITE(WAILMER, gMonFrontPic_Wailmer),
+ SPECIES_SPRITE(WAILORD, gMonFrontPic_Wailord),
+ SPECIES_SPRITE(SKITTY, gMonFrontPic_Skitty),
+ SPECIES_SPRITE(DELCATTY, gMonFrontPic_Delcatty),
+ SPECIES_SPRITE(KECLEON, gMonFrontPic_Kecleon),
+ SPECIES_SPRITE(BALTOY, gMonFrontPic_Baltoy),
+ SPECIES_SPRITE(CLAYDOL, gMonFrontPic_Claydol),
+ SPECIES_SPRITE(NOSEPASS, gMonFrontPic_Nosepass),
+ SPECIES_SPRITE(TORKOAL, gMonFrontPic_Torkoal),
+ SPECIES_SPRITE(SABLEYE, gMonFrontPic_Sableye),
+ SPECIES_SPRITE(BARBOACH, gMonFrontPic_Barboach),
+ SPECIES_SPRITE(WHISCASH, gMonFrontPic_Whiscash),
+ SPECIES_SPRITE(LUVDISC, gMonFrontPic_Luvdisc),
+ SPECIES_SPRITE(CORPHISH, gMonFrontPic_Corphish),
+ SPECIES_SPRITE(CRAWDAUNT, gMonFrontPic_Crawdaunt),
+ SPECIES_SPRITE(FEEBAS, gMonFrontPic_Feebas),
+ SPECIES_SPRITE(MILOTIC, gMonFrontPic_Milotic),
+ SPECIES_SPRITE(CARVANHA, gMonFrontPic_Carvanha),
+ SPECIES_SPRITE(SHARPEDO, gMonFrontPic_Sharpedo),
+ SPECIES_SPRITE(TRAPINCH, gMonFrontPic_Trapinch),
+ SPECIES_SPRITE(VIBRAVA, gMonFrontPic_Vibrava),
+ SPECIES_SPRITE(FLYGON, gMonFrontPic_Flygon),
+ SPECIES_SPRITE(MAKUHITA, gMonFrontPic_Makuhita),
+ SPECIES_SPRITE(HARIYAMA, gMonFrontPic_Hariyama),
+ SPECIES_SPRITE(ELECTRIKE, gMonFrontPic_Electrike),
+ SPECIES_SPRITE(MANECTRIC, gMonFrontPic_Manectric),
+ SPECIES_SPRITE(NUMEL, gMonFrontPic_Numel),
+ SPECIES_SPRITE(CAMERUPT, gMonFrontPic_Camerupt),
+ SPECIES_SPRITE(SPHEAL, gMonFrontPic_Spheal),
+ SPECIES_SPRITE(SEALEO, gMonFrontPic_Sealeo),
+ SPECIES_SPRITE(WALREIN, gMonFrontPic_Walrein),
+ SPECIES_SPRITE(CACNEA, gMonFrontPic_Cacnea),
+ SPECIES_SPRITE(CACTURNE, gMonFrontPic_Cacturne),
+ SPECIES_SPRITE(SNORUNT, gMonFrontPic_Snorunt),
+ SPECIES_SPRITE(GLALIE, gMonFrontPic_Glalie),
+ SPECIES_SPRITE(LUNATONE, gMonFrontPic_Lunatone),
+ SPECIES_SPRITE(SOLROCK, gMonFrontPic_Solrock),
+ SPECIES_SPRITE(AZURILL, gMonFrontPic_Azurill),
+ SPECIES_SPRITE(SPOINK, gMonFrontPic_Spoink),
+ SPECIES_SPRITE(GRUMPIG, gMonFrontPic_Grumpig),
+ SPECIES_SPRITE(PLUSLE, gMonFrontPic_Plusle),
+ SPECIES_SPRITE(MINUN, gMonFrontPic_Minun),
+ SPECIES_SPRITE(MAWILE, gMonFrontPic_Mawile),
+ SPECIES_SPRITE(MEDITITE, gMonFrontPic_Meditite),
+ SPECIES_SPRITE(MEDICHAM, gMonFrontPic_Medicham),
+ SPECIES_SPRITE(SWABLU, gMonFrontPic_Swablu),
+ SPECIES_SPRITE(ALTARIA, gMonFrontPic_Altaria),
+ SPECIES_SPRITE(WYNAUT, gMonFrontPic_Wynaut),
+ SPECIES_SPRITE(DUSKULL, gMonFrontPic_Duskull),
+ SPECIES_SPRITE(DUSCLOPS, gMonFrontPic_Dusclops),
+ SPECIES_SPRITE(ROSELIA, gMonFrontPic_Roselia),
+ SPECIES_SPRITE(SLAKOTH, gMonFrontPic_Slakoth),
+ SPECIES_SPRITE(VIGOROTH, gMonFrontPic_Vigoroth),
+ SPECIES_SPRITE(SLAKING, gMonFrontPic_Slaking),
+ SPECIES_SPRITE(GULPIN, gMonFrontPic_Gulpin),
+ SPECIES_SPRITE(SWALOT, gMonFrontPic_Swalot),
+ SPECIES_SPRITE(TROPIUS, gMonFrontPic_Tropius),
+ SPECIES_SPRITE(WHISMUR, gMonFrontPic_Whismur),
+ SPECIES_SPRITE(LOUDRED, gMonFrontPic_Loudred),
+ SPECIES_SPRITE(EXPLOUD, gMonFrontPic_Exploud),
+ SPECIES_SPRITE(CLAMPERL, gMonFrontPic_Clamperl),
+ SPECIES_SPRITE(HUNTAIL, gMonFrontPic_Huntail),
+ SPECIES_SPRITE(GOREBYSS, gMonFrontPic_Gorebyss),
+ SPECIES_SPRITE(ABSOL, gMonFrontPic_Absol),
+ SPECIES_SPRITE(SHUPPET, gMonFrontPic_Shuppet),
+ SPECIES_SPRITE(BANETTE, gMonFrontPic_Banette),
+ SPECIES_SPRITE(SEVIPER, gMonFrontPic_Seviper),
+ SPECIES_SPRITE(ZANGOOSE, gMonFrontPic_Zangoose),
+ SPECIES_SPRITE(RELICANTH, gMonFrontPic_Relicanth),
+ SPECIES_SPRITE(ARON, gMonFrontPic_Aron),
+ SPECIES_SPRITE(LAIRON, gMonFrontPic_Lairon),
+ SPECIES_SPRITE(AGGRON, gMonFrontPic_Aggron),
+ SPECIES_SPRITE(CASTFORM, gMonFrontPic_Castform),
+ SPECIES_SPRITE(VOLBEAT, gMonFrontPic_Volbeat),
+ SPECIES_SPRITE(ILLUMISE, gMonFrontPic_Illumise),
+ SPECIES_SPRITE(LILEEP, gMonFrontPic_Lileep),
+ SPECIES_SPRITE(CRADILY, gMonFrontPic_Cradily),
+ SPECIES_SPRITE(ANORITH, gMonFrontPic_Anorith),
+ SPECIES_SPRITE(ARMALDO, gMonFrontPic_Armaldo),
+ SPECIES_SPRITE(RALTS, gMonFrontPic_Ralts),
+ SPECIES_SPRITE(KIRLIA, gMonFrontPic_Kirlia),
+ SPECIES_SPRITE(GARDEVOIR, gMonFrontPic_Gardevoir),
+ SPECIES_SPRITE(BAGON, gMonFrontPic_Bagon),
+ SPECIES_SPRITE(SHELGON, gMonFrontPic_Shelgon),
+ SPECIES_SPRITE(SALAMENCE, gMonFrontPic_Salamence),
+ SPECIES_SPRITE(BELDUM, gMonFrontPic_Beldum),
+ SPECIES_SPRITE(METANG, gMonFrontPic_Metang),
+ SPECIES_SPRITE(METAGROSS, gMonFrontPic_Metagross),
+ SPECIES_SPRITE(REGIROCK, gMonFrontPic_Regirock),
+ SPECIES_SPRITE(REGICE, gMonFrontPic_Regice),
+ SPECIES_SPRITE(REGISTEEL, gMonFrontPic_Registeel),
+ SPECIES_SPRITE(KYOGRE, gMonFrontPic_Kyogre),
+ SPECIES_SPRITE(GROUDON, gMonFrontPic_Groudon),
+ SPECIES_SPRITE(RAYQUAZA, gMonFrontPic_Rayquaza),
+ SPECIES_SPRITE(LATIAS, gMonFrontPic_Latias),
+ SPECIES_SPRITE(LATIOS, gMonFrontPic_Latios),
+ SPECIES_SPRITE(JIRACHI, gMonFrontPic_Jirachi),
+ SPECIES_SPRITE(DEOXYS, gMonFrontPic_Deoxys),
+ SPECIES_SPRITE(CHIMECHO, gMonFrontPic_Chimecho),
+ SPECIES_SPRITE(EGG, gMonFrontPic_Egg),
+ SPECIES_SPRITE(UNOWN_B, gMonFrontPic_UnownB),
+ SPECIES_SPRITE(UNOWN_C, gMonFrontPic_UnownC),
+ SPECIES_SPRITE(UNOWN_D, gMonFrontPic_UnownD),
+ SPECIES_SPRITE(UNOWN_E, gMonFrontPic_UnownE),
+ SPECIES_SPRITE(UNOWN_F, gMonFrontPic_UnownF),
+ SPECIES_SPRITE(UNOWN_G, gMonFrontPic_UnownG),
+ SPECIES_SPRITE(UNOWN_H, gMonFrontPic_UnownH),
+ SPECIES_SPRITE(UNOWN_I, gMonFrontPic_UnownI),
+ SPECIES_SPRITE(UNOWN_J, gMonFrontPic_UnownJ),
+ SPECIES_SPRITE(UNOWN_K, gMonFrontPic_UnownK),
+ SPECIES_SPRITE(UNOWN_L, gMonFrontPic_UnownL),
+ SPECIES_SPRITE(UNOWN_M, gMonFrontPic_UnownM),
+ SPECIES_SPRITE(UNOWN_N, gMonFrontPic_UnownN),
+ SPECIES_SPRITE(UNOWN_O, gMonFrontPic_UnownO),
+ SPECIES_SPRITE(UNOWN_P, gMonFrontPic_UnownP),
+ SPECIES_SPRITE(UNOWN_Q, gMonFrontPic_UnownQ),
+ SPECIES_SPRITE(UNOWN_R, gMonFrontPic_UnownR),
+ SPECIES_SPRITE(UNOWN_S, gMonFrontPic_UnownS),
+ SPECIES_SPRITE(UNOWN_T, gMonFrontPic_UnownT),
+ SPECIES_SPRITE(UNOWN_U, gMonFrontPic_UnownU),
+ SPECIES_SPRITE(UNOWN_V, gMonFrontPic_UnownV),
+ SPECIES_SPRITE(UNOWN_W, gMonFrontPic_UnownW),
+ SPECIES_SPRITE(UNOWN_X, gMonFrontPic_UnownX),
+ SPECIES_SPRITE(UNOWN_Y, gMonFrontPic_UnownY),
+ SPECIES_SPRITE(UNOWN_Z, gMonFrontPic_UnownZ),
+ SPECIES_SPRITE(UNOWN_EMARK, gMonFrontPic_UnownExclamationMark),
+ SPECIES_SPRITE(UNOWN_QMARK, gMonFrontPic_UnownQuestionMark),
};
diff --git a/src/data/pokemon_graphics/palette_table.h b/src/data/pokemon_graphics/palette_table.h
index 3b60d8567..35edcc76c 100644
--- a/src/data/pokemon_graphics/palette_table.h
+++ b/src/data/pokemon_graphics/palette_table.h
@@ -1,443 +1,443 @@
const struct CompressedSpritePalette gMonPaletteTable[] =
{
- [SPECIES_NONE] = {gMonPalette_CircledQuestionMark, SPECIES_NONE},
- [SPECIES_BULBASAUR] = {gMonPalette_Bulbasaur, SPECIES_BULBASAUR},
- [SPECIES_IVYSAUR] = {gMonPalette_Ivysaur, SPECIES_IVYSAUR},
- [SPECIES_VENUSAUR] = {gMonPalette_Venusaur, SPECIES_VENUSAUR},
- [SPECIES_CHARMANDER] = {gMonPalette_Charmander, SPECIES_CHARMANDER},
- [SPECIES_CHARMELEON] = {gMonPalette_Charmeleon, SPECIES_CHARMELEON},
- [SPECIES_CHARIZARD] = {gMonPalette_Charizard, SPECIES_CHARIZARD},
- [SPECIES_SQUIRTLE] = {gMonPalette_Squirtle, SPECIES_SQUIRTLE},
- [SPECIES_WARTORTLE] = {gMonPalette_Wartortle, SPECIES_WARTORTLE},
- [SPECIES_BLASTOISE] = {gMonPalette_Blastoise, SPECIES_BLASTOISE},
- [SPECIES_CATERPIE] = {gMonPalette_Caterpie, SPECIES_CATERPIE},
- [SPECIES_METAPOD] = {gMonPalette_Metapod, SPECIES_METAPOD},
- [SPECIES_BUTTERFREE] = {gMonPalette_Butterfree, SPECIES_BUTTERFREE},
- [SPECIES_WEEDLE] = {gMonPalette_Weedle, SPECIES_WEEDLE},
- [SPECIES_KAKUNA] = {gMonPalette_Kakuna, SPECIES_KAKUNA},
- [SPECIES_BEEDRILL] = {gMonPalette_Beedrill, SPECIES_BEEDRILL},
- [SPECIES_PIDGEY] = {gMonPalette_Pidgey, SPECIES_PIDGEY},
- [SPECIES_PIDGEOTTO] = {gMonPalette_Pidgeotto, SPECIES_PIDGEOTTO},
- [SPECIES_PIDGEOT] = {gMonPalette_Pidgeot, SPECIES_PIDGEOT},
- [SPECIES_RATTATA] = {gMonPalette_Rattata, SPECIES_RATTATA},
- [SPECIES_RATICATE] = {gMonPalette_Raticate, SPECIES_RATICATE},
- [SPECIES_SPEAROW] = {gMonPalette_Spearow, SPECIES_SPEAROW},
- [SPECIES_FEAROW] = {gMonPalette_Fearow, SPECIES_FEAROW},
- [SPECIES_EKANS] = {gMonPalette_Ekans, SPECIES_EKANS},
- [SPECIES_ARBOK] = {gMonPalette_Arbok, SPECIES_ARBOK},
- [SPECIES_PIKACHU] = {gMonPalette_Pikachu, SPECIES_PIKACHU},
- [SPECIES_RAICHU] = {gMonPalette_Raichu, SPECIES_RAICHU},
- [SPECIES_SANDSHREW] = {gMonPalette_Sandshrew, SPECIES_SANDSHREW},
- [SPECIES_SANDSLASH] = {gMonPalette_Sandslash, SPECIES_SANDSLASH},
- [SPECIES_NIDORAN_F] = {gMonPalette_NidoranF, SPECIES_NIDORAN_F},
- [SPECIES_NIDORINA] = {gMonPalette_Nidorina, SPECIES_NIDORINA},
- [SPECIES_NIDOQUEEN] = {gMonPalette_Nidoqueen, SPECIES_NIDOQUEEN},
- [SPECIES_NIDORAN_M] = {gMonPalette_NidoranM, SPECIES_NIDORAN_M},
- [SPECIES_NIDORINO] = {gMonPalette_Nidorino, SPECIES_NIDORINO},
- [SPECIES_NIDOKING] = {gMonPalette_Nidoking, SPECIES_NIDOKING},
- [SPECIES_CLEFAIRY] = {gMonPalette_Clefairy, SPECIES_CLEFAIRY},
- [SPECIES_CLEFABLE] = {gMonPalette_Clefable, SPECIES_CLEFABLE},
- [SPECIES_VULPIX] = {gMonPalette_Vulpix, SPECIES_VULPIX},
- [SPECIES_NINETALES] = {gMonPalette_Ninetales, SPECIES_NINETALES},
- [SPECIES_JIGGLYPUFF] = {gMonPalette_Jigglypuff, SPECIES_JIGGLYPUFF},
- [SPECIES_WIGGLYTUFF] = {gMonPalette_Wigglytuff, SPECIES_WIGGLYTUFF},
- [SPECIES_ZUBAT] = {gMonPalette_Zubat, SPECIES_ZUBAT},
- [SPECIES_GOLBAT] = {gMonPalette_Golbat, SPECIES_GOLBAT},
- [SPECIES_ODDISH] = {gMonPalette_Oddish, SPECIES_ODDISH},
- [SPECIES_GLOOM] = {gMonPalette_Gloom, SPECIES_GLOOM},
- [SPECIES_VILEPLUME] = {gMonPalette_Vileplume, SPECIES_VILEPLUME},
- [SPECIES_PARAS] = {gMonPalette_Paras, SPECIES_PARAS},
- [SPECIES_PARASECT] = {gMonPalette_Parasect, SPECIES_PARASECT},
- [SPECIES_VENONAT] = {gMonPalette_Venonat, SPECIES_VENONAT},
- [SPECIES_VENOMOTH] = {gMonPalette_Venomoth, SPECIES_VENOMOTH},
- [SPECIES_DIGLETT] = {gMonPalette_Diglett, SPECIES_DIGLETT},
- [SPECIES_DUGTRIO] = {gMonPalette_Dugtrio, SPECIES_DUGTRIO},
- [SPECIES_MEOWTH] = {gMonPalette_Meowth, SPECIES_MEOWTH},
- [SPECIES_PERSIAN] = {gMonPalette_Persian, SPECIES_PERSIAN},
- [SPECIES_PSYDUCK] = {gMonPalette_Psyduck, SPECIES_PSYDUCK},
- [SPECIES_GOLDUCK] = {gMonPalette_Golduck, SPECIES_GOLDUCK},
- [SPECIES_MANKEY] = {gMonPalette_Mankey, SPECIES_MANKEY},
- [SPECIES_PRIMEAPE] = {gMonPalette_Primeape, SPECIES_PRIMEAPE},
- [SPECIES_GROWLITHE] = {gMonPalette_Growlithe, SPECIES_GROWLITHE},
- [SPECIES_ARCANINE] = {gMonPalette_Arcanine, SPECIES_ARCANINE},
- [SPECIES_POLIWAG] = {gMonPalette_Poliwag, SPECIES_POLIWAG},
- [SPECIES_POLIWHIRL] = {gMonPalette_Poliwhirl, SPECIES_POLIWHIRL},
- [SPECIES_POLIWRATH] = {gMonPalette_Poliwrath, SPECIES_POLIWRATH},
- [SPECIES_ABRA] = {gMonPalette_Abra, SPECIES_ABRA},
- [SPECIES_KADABRA] = {gMonPalette_Kadabra, SPECIES_KADABRA},
- [SPECIES_ALAKAZAM] = {gMonPalette_Alakazam, SPECIES_ALAKAZAM},
- [SPECIES_MACHOP] = {gMonPalette_Machop, SPECIES_MACHOP},
- [SPECIES_MACHOKE] = {gMonPalette_Machoke, SPECIES_MACHOKE},
- [SPECIES_MACHAMP] = {gMonPalette_Machamp, SPECIES_MACHAMP},
- [SPECIES_BELLSPROUT] = {gMonPalette_Bellsprout, SPECIES_BELLSPROUT},
- [SPECIES_WEEPINBELL] = {gMonPalette_Weepinbell, SPECIES_WEEPINBELL},
- [SPECIES_VICTREEBEL] = {gMonPalette_Victreebel, SPECIES_VICTREEBEL},
- [SPECIES_TENTACOOL] = {gMonPalette_Tentacool, SPECIES_TENTACOOL},
- [SPECIES_TENTACRUEL] = {gMonPalette_Tentacruel, SPECIES_TENTACRUEL},
- [SPECIES_GEODUDE] = {gMonPalette_Geodude, SPECIES_GEODUDE},
- [SPECIES_GRAVELER] = {gMonPalette_Graveler, SPECIES_GRAVELER},
- [SPECIES_GOLEM] = {gMonPalette_Golem, SPECIES_GOLEM},
- [SPECIES_PONYTA] = {gMonPalette_Ponyta, SPECIES_PONYTA},
- [SPECIES_RAPIDASH] = {gMonPalette_Rapidash, SPECIES_RAPIDASH},
- [SPECIES_SLOWPOKE] = {gMonPalette_Slowpoke, SPECIES_SLOWPOKE},
- [SPECIES_SLOWBRO] = {gMonPalette_Slowbro, SPECIES_SLOWBRO},
- [SPECIES_MAGNEMITE] = {gMonPalette_Magnemite, SPECIES_MAGNEMITE},
- [SPECIES_MAGNETON] = {gMonPalette_Magneton, SPECIES_MAGNETON},
- [SPECIES_FARFETCHD] = {gMonPalette_Farfetchd, SPECIES_FARFETCHD},
- [SPECIES_DODUO] = {gMonPalette_Doduo, SPECIES_DODUO},
- [SPECIES_DODRIO] = {gMonPalette_Dodrio, SPECIES_DODRIO},
- [SPECIES_SEEL] = {gMonPalette_Seel, SPECIES_SEEL},
- [SPECIES_DEWGONG] = {gMonPalette_Dewgong, SPECIES_DEWGONG},
- [SPECIES_GRIMER] = {gMonPalette_Grimer, SPECIES_GRIMER},
- [SPECIES_MUK] = {gMonPalette_Muk, SPECIES_MUK},
- [SPECIES_SHELLDER] = {gMonPalette_Shellder, SPECIES_SHELLDER},
- [SPECIES_CLOYSTER] = {gMonPalette_Cloyster, SPECIES_CLOYSTER},
- [SPECIES_GASTLY] = {gMonPalette_Gastly, SPECIES_GASTLY},
- [SPECIES_HAUNTER] = {gMonPalette_Haunter, SPECIES_HAUNTER},
- [SPECIES_GENGAR] = {gMonPalette_Gengar, SPECIES_GENGAR},
- [SPECIES_ONIX] = {gMonPalette_Onix, SPECIES_ONIX},
- [SPECIES_DROWZEE] = {gMonPalette_Drowzee, SPECIES_DROWZEE},
- [SPECIES_HYPNO] = {gMonPalette_Hypno, SPECIES_HYPNO},
- [SPECIES_KRABBY] = {gMonPalette_Krabby, SPECIES_KRABBY},
- [SPECIES_KINGLER] = {gMonPalette_Kingler, SPECIES_KINGLER},
- [SPECIES_VOLTORB] = {gMonPalette_Voltorb, SPECIES_VOLTORB},
- [SPECIES_ELECTRODE] = {gMonPalette_Electrode, SPECIES_ELECTRODE},
- [SPECIES_EXEGGCUTE] = {gMonPalette_Exeggcute, SPECIES_EXEGGCUTE},
- [SPECIES_EXEGGUTOR] = {gMonPalette_Exeggutor, SPECIES_EXEGGUTOR},
- [SPECIES_CUBONE] = {gMonPalette_Cubone, SPECIES_CUBONE},
- [SPECIES_MAROWAK] = {gMonPalette_Marowak, SPECIES_MAROWAK},
- [SPECIES_HITMONLEE] = {gMonPalette_Hitmonlee, SPECIES_HITMONLEE},
- [SPECIES_HITMONCHAN] = {gMonPalette_Hitmonchan, SPECIES_HITMONCHAN},
- [SPECIES_LICKITUNG] = {gMonPalette_Lickitung, SPECIES_LICKITUNG},
- [SPECIES_KOFFING] = {gMonPalette_Koffing, SPECIES_KOFFING},
- [SPECIES_WEEZING] = {gMonPalette_Weezing, SPECIES_WEEZING},
- [SPECIES_RHYHORN] = {gMonPalette_Rhyhorn, SPECIES_RHYHORN},
- [SPECIES_RHYDON] = {gMonPalette_Rhydon, SPECIES_RHYDON},
- [SPECIES_CHANSEY] = {gMonPalette_Chansey, SPECIES_CHANSEY},
- [SPECIES_TANGELA] = {gMonPalette_Tangela, SPECIES_TANGELA},
- [SPECIES_KANGASKHAN] = {gMonPalette_Kangaskhan, SPECIES_KANGASKHAN},
- [SPECIES_HORSEA] = {gMonPalette_Horsea, SPECIES_HORSEA},
- [SPECIES_SEADRA] = {gMonPalette_Seadra, SPECIES_SEADRA},
- [SPECIES_GOLDEEN] = {gMonPalette_Goldeen, SPECIES_GOLDEEN},
- [SPECIES_SEAKING] = {gMonPalette_Seaking, SPECIES_SEAKING},
- [SPECIES_STARYU] = {gMonPalette_Staryu, SPECIES_STARYU},
- [SPECIES_STARMIE] = {gMonPalette_Starmie, SPECIES_STARMIE},
- [SPECIES_MR_MIME] = {gMonPalette_Mrmime, SPECIES_MR_MIME},
- [SPECIES_SCYTHER] = {gMonPalette_Scyther, SPECIES_SCYTHER},
- [SPECIES_JYNX] = {gMonPalette_Jynx, SPECIES_JYNX},
- [SPECIES_ELECTABUZZ] = {gMonPalette_Electabuzz, SPECIES_ELECTABUZZ},
- [SPECIES_MAGMAR] = {gMonPalette_Magmar, SPECIES_MAGMAR},
- [SPECIES_PINSIR] = {gMonPalette_Pinsir, SPECIES_PINSIR},
- [SPECIES_TAUROS] = {gMonPalette_Tauros, SPECIES_TAUROS},
- [SPECIES_MAGIKARP] = {gMonPalette_Magikarp, SPECIES_MAGIKARP},
- [SPECIES_GYARADOS] = {gMonPalette_Gyarados, SPECIES_GYARADOS},
- [SPECIES_LAPRAS] = {gMonPalette_Lapras, SPECIES_LAPRAS},
- [SPECIES_DITTO] = {gMonPalette_Ditto, SPECIES_DITTO},
- [SPECIES_EEVEE] = {gMonPalette_Eevee, SPECIES_EEVEE},
- [SPECIES_VAPOREON] = {gMonPalette_Vaporeon, SPECIES_VAPOREON},
- [SPECIES_JOLTEON] = {gMonPalette_Jolteon, SPECIES_JOLTEON},
- [SPECIES_FLAREON] = {gMonPalette_Flareon, SPECIES_FLAREON},
- [SPECIES_PORYGON] = {gMonPalette_Porygon, SPECIES_PORYGON},
- [SPECIES_OMANYTE] = {gMonPalette_Omanyte, SPECIES_OMANYTE},
- [SPECIES_OMASTAR] = {gMonPalette_Omastar, SPECIES_OMASTAR},
- [SPECIES_KABUTO] = {gMonPalette_Kabuto, SPECIES_KABUTO},
- [SPECIES_KABUTOPS] = {gMonPalette_Kabutops, SPECIES_KABUTOPS},
- [SPECIES_AERODACTYL] = {gMonPalette_Aerodactyl, SPECIES_AERODACTYL},
- [SPECIES_SNORLAX] = {gMonPalette_Snorlax, SPECIES_SNORLAX},
- [SPECIES_ARTICUNO] = {gMonPalette_Articuno, SPECIES_ARTICUNO},
- [SPECIES_ZAPDOS] = {gMonPalette_Zapdos, SPECIES_ZAPDOS},
- [SPECIES_MOLTRES] = {gMonPalette_Moltres, SPECIES_MOLTRES},
- [SPECIES_DRATINI] = {gMonPalette_Dratini, SPECIES_DRATINI},
- [SPECIES_DRAGONAIR] = {gMonPalette_Dragonair, SPECIES_DRAGONAIR},
- [SPECIES_DRAGONITE] = {gMonPalette_Dragonite, SPECIES_DRAGONITE},
- [SPECIES_MEWTWO] = {gMonPalette_Mewtwo, SPECIES_MEWTWO},
- [SPECIES_MEW] = {gMonPalette_Mew, SPECIES_MEW},
- [SPECIES_CHIKORITA] = {gMonPalette_Chikorita, SPECIES_CHIKORITA},
- [SPECIES_BAYLEEF] = {gMonPalette_Bayleef, SPECIES_BAYLEEF},
- [SPECIES_MEGANIUM] = {gMonPalette_Meganium, SPECIES_MEGANIUM},
- [SPECIES_CYNDAQUIL] = {gMonPalette_Cyndaquil, SPECIES_CYNDAQUIL},
- [SPECIES_QUILAVA] = {gMonPalette_Quilava, SPECIES_QUILAVA},
- [SPECIES_TYPHLOSION] = {gMonPalette_Typhlosion, SPECIES_TYPHLOSION},
- [SPECIES_TOTODILE] = {gMonPalette_Totodile, SPECIES_TOTODILE},
- [SPECIES_CROCONAW] = {gMonPalette_Croconaw, SPECIES_CROCONAW},
- [SPECIES_FERALIGATR] = {gMonPalette_Feraligatr, SPECIES_FERALIGATR},
- [SPECIES_SENTRET] = {gMonPalette_Sentret, SPECIES_SENTRET},
- [SPECIES_FURRET] = {gMonPalette_Furret, SPECIES_FURRET},
- [SPECIES_HOOTHOOT] = {gMonPalette_Hoothoot, SPECIES_HOOTHOOT},
- [SPECIES_NOCTOWL] = {gMonPalette_Noctowl, SPECIES_NOCTOWL},
- [SPECIES_LEDYBA] = {gMonPalette_Ledyba, SPECIES_LEDYBA},
- [SPECIES_LEDIAN] = {gMonPalette_Ledian, SPECIES_LEDIAN},
- [SPECIES_SPINARAK] = {gMonPalette_Spinarak, SPECIES_SPINARAK},
- [SPECIES_ARIADOS] = {gMonPalette_Ariados, SPECIES_ARIADOS},
- [SPECIES_CROBAT] = {gMonPalette_Crobat, SPECIES_CROBAT},
- [SPECIES_CHINCHOU] = {gMonPalette_Chinchou, SPECIES_CHINCHOU},
- [SPECIES_LANTURN] = {gMonPalette_Lanturn, SPECIES_LANTURN},
- [SPECIES_PICHU] = {gMonPalette_Pichu, SPECIES_PICHU},
- [SPECIES_CLEFFA] = {gMonPalette_Cleffa, SPECIES_CLEFFA},
- [SPECIES_IGGLYBUFF] = {gMonPalette_Igglybuff, SPECIES_IGGLYBUFF},
- [SPECIES_TOGEPI] = {gMonPalette_Togepi, SPECIES_TOGEPI},
- [SPECIES_TOGETIC] = {gMonPalette_Togetic, SPECIES_TOGETIC},
- [SPECIES_NATU] = {gMonPalette_Natu, SPECIES_NATU},
- [SPECIES_XATU] = {gMonPalette_Xatu, SPECIES_XATU},
- [SPECIES_MAREEP] = {gMonPalette_Mareep, SPECIES_MAREEP},
- [SPECIES_FLAAFFY] = {gMonPalette_Flaaffy, SPECIES_FLAAFFY},
- [SPECIES_AMPHAROS] = {gMonPalette_Ampharos, SPECIES_AMPHAROS},
- [SPECIES_BELLOSSOM] = {gMonPalette_Bellossom, SPECIES_BELLOSSOM},
- [SPECIES_MARILL] = {gMonPalette_Marill, SPECIES_MARILL},
- [SPECIES_AZUMARILL] = {gMonPalette_Azumarill, SPECIES_AZUMARILL},
- [SPECIES_SUDOWOODO] = {gMonPalette_Sudowoodo, SPECIES_SUDOWOODO},
- [SPECIES_POLITOED] = {gMonPalette_Politoed, SPECIES_POLITOED},
- [SPECIES_HOPPIP] = {gMonPalette_Hoppip, SPECIES_HOPPIP},
- [SPECIES_SKIPLOOM] = {gMonPalette_Skiploom, SPECIES_SKIPLOOM},
- [SPECIES_JUMPLUFF] = {gMonPalette_Jumpluff, SPECIES_JUMPLUFF},
- [SPECIES_AIPOM] = {gMonPalette_Aipom, SPECIES_AIPOM},
- [SPECIES_SUNKERN] = {gMonPalette_Sunkern, SPECIES_SUNKERN},
- [SPECIES_SUNFLORA] = {gMonPalette_Sunflora, SPECIES_SUNFLORA},
- [SPECIES_YANMA] = {gMonPalette_Yanma, SPECIES_YANMA},
- [SPECIES_WOOPER] = {gMonPalette_Wooper, SPECIES_WOOPER},
- [SPECIES_QUAGSIRE] = {gMonPalette_Quagsire, SPECIES_QUAGSIRE},
- [SPECIES_ESPEON] = {gMonPalette_Espeon, SPECIES_ESPEON},
- [SPECIES_UMBREON] = {gMonPalette_Umbreon, SPECIES_UMBREON},
- [SPECIES_MURKROW] = {gMonPalette_Murkrow, SPECIES_MURKROW},
- [SPECIES_SLOWKING] = {gMonPalette_Slowking, SPECIES_SLOWKING},
- [SPECIES_MISDREAVUS] = {gMonPalette_Misdreavus, SPECIES_MISDREAVUS},
- [SPECIES_UNOWN] = {gMonPalette_Unown, SPECIES_UNOWN},
- [SPECIES_WOBBUFFET] = {gMonPalette_Wobbuffet, SPECIES_WOBBUFFET},
- [SPECIES_GIRAFARIG] = {gMonPalette_Girafarig, SPECIES_GIRAFARIG},
- [SPECIES_PINECO] = {gMonPalette_Pineco, SPECIES_PINECO},
- [SPECIES_FORRETRESS] = {gMonPalette_Forretress, SPECIES_FORRETRESS},
- [SPECIES_DUNSPARCE] = {gMonPalette_Dunsparce, SPECIES_DUNSPARCE},
- [SPECIES_GLIGAR] = {gMonPalette_Gligar, SPECIES_GLIGAR},
- [SPECIES_STEELIX] = {gMonPalette_Steelix, SPECIES_STEELIX},
- [SPECIES_SNUBBULL] = {gMonPalette_Snubbull, SPECIES_SNUBBULL},
- [SPECIES_GRANBULL] = {gMonPalette_Granbull, SPECIES_GRANBULL},
- [SPECIES_QWILFISH] = {gMonPalette_Qwilfish, SPECIES_QWILFISH},
- [SPECIES_SCIZOR] = {gMonPalette_Scizor, SPECIES_SCIZOR},
- [SPECIES_SHUCKLE] = {gMonPalette_Shuckle, SPECIES_SHUCKLE},
- [SPECIES_HERACROSS] = {gMonPalette_Heracross, SPECIES_HERACROSS},
- [SPECIES_SNEASEL] = {gMonPalette_Sneasel, SPECIES_SNEASEL},
- [SPECIES_TEDDIURSA] = {gMonPalette_Teddiursa, SPECIES_TEDDIURSA},
- [SPECIES_URSARING] = {gMonPalette_Ursaring, SPECIES_URSARING},
- [SPECIES_SLUGMA] = {gMonPalette_Slugma, SPECIES_SLUGMA},
- [SPECIES_MAGCARGO] = {gMonPalette_Magcargo, SPECIES_MAGCARGO},
- [SPECIES_SWINUB] = {gMonPalette_Swinub, SPECIES_SWINUB},
- [SPECIES_PILOSWINE] = {gMonPalette_Piloswine, SPECIES_PILOSWINE},
- [SPECIES_CORSOLA] = {gMonPalette_Corsola, SPECIES_CORSOLA},
- [SPECIES_REMORAID] = {gMonPalette_Remoraid, SPECIES_REMORAID},
- [SPECIES_OCTILLERY] = {gMonPalette_Octillery, SPECIES_OCTILLERY},
- [SPECIES_DELIBIRD] = {gMonPalette_Delibird, SPECIES_DELIBIRD},
- [SPECIES_MANTINE] = {gMonPalette_Mantine, SPECIES_MANTINE},
- [SPECIES_SKARMORY] = {gMonPalette_Skarmory, SPECIES_SKARMORY},
- [SPECIES_HOUNDOUR] = {gMonPalette_Houndour, SPECIES_HOUNDOUR},
- [SPECIES_HOUNDOOM] = {gMonPalette_Houndoom, SPECIES_HOUNDOOM},
- [SPECIES_KINGDRA] = {gMonPalette_Kingdra, SPECIES_KINGDRA},
- [SPECIES_PHANPY] = {gMonPalette_Phanpy, SPECIES_PHANPY},
- [SPECIES_DONPHAN] = {gMonPalette_Donphan, SPECIES_DONPHAN},
- [SPECIES_PORYGON2] = {gMonPalette_Porygon2, SPECIES_PORYGON2},
- [SPECIES_STANTLER] = {gMonPalette_Stantler, SPECIES_STANTLER},
- [SPECIES_SMEARGLE] = {gMonPalette_Smeargle, SPECIES_SMEARGLE},
- [SPECIES_TYROGUE] = {gMonPalette_Tyrogue, SPECIES_TYROGUE},
- [SPECIES_HITMONTOP] = {gMonPalette_Hitmontop, SPECIES_HITMONTOP},
- [SPECIES_SMOOCHUM] = {gMonPalette_Smoochum, SPECIES_SMOOCHUM},
- [SPECIES_ELEKID] = {gMonPalette_Elekid, SPECIES_ELEKID},
- [SPECIES_MAGBY] = {gMonPalette_Magby, SPECIES_MAGBY},
- [SPECIES_MILTANK] = {gMonPalette_Miltank, SPECIES_MILTANK},
- [SPECIES_BLISSEY] = {gMonPalette_Blissey, SPECIES_BLISSEY},
- [SPECIES_RAIKOU] = {gMonPalette_Raikou, SPECIES_RAIKOU},
- [SPECIES_ENTEI] = {gMonPalette_Entei, SPECIES_ENTEI},
- [SPECIES_SUICUNE] = {gMonPalette_Suicune, SPECIES_SUICUNE},
- [SPECIES_LARVITAR] = {gMonPalette_Larvitar, SPECIES_LARVITAR},
- [SPECIES_PUPITAR] = {gMonPalette_Pupitar, SPECIES_PUPITAR},
- [SPECIES_TYRANITAR] = {gMonPalette_Tyranitar, SPECIES_TYRANITAR},
- [SPECIES_LUGIA] = {gMonPalette_Lugia, SPECIES_LUGIA},
- [SPECIES_HO_OH] = {gMonPalette_HoOh, SPECIES_HO_OH},
- [SPECIES_CELEBI] = {gMonPalette_Celebi, SPECIES_CELEBI},
- [SPECIES_OLD_UNOWN_B] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_B},
- [SPECIES_OLD_UNOWN_C] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_C},
- [SPECIES_OLD_UNOWN_D] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_D},
- [SPECIES_OLD_UNOWN_E] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_E},
- [SPECIES_OLD_UNOWN_F] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_F},
- [SPECIES_OLD_UNOWN_G] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_G},
- [SPECIES_OLD_UNOWN_H] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_H},
- [SPECIES_OLD_UNOWN_I] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_I},
- [SPECIES_OLD_UNOWN_J] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_J},
- [SPECIES_OLD_UNOWN_K] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_K},
- [SPECIES_OLD_UNOWN_L] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_L},
- [SPECIES_OLD_UNOWN_M] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_M},
- [SPECIES_OLD_UNOWN_N] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_N},
- [SPECIES_OLD_UNOWN_O] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_O},
- [SPECIES_OLD_UNOWN_P] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_P},
- [SPECIES_OLD_UNOWN_Q] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_Q},
- [SPECIES_OLD_UNOWN_R] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_R},
- [SPECIES_OLD_UNOWN_S] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_S},
- [SPECIES_OLD_UNOWN_T] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_T},
- [SPECIES_OLD_UNOWN_U] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_U},
- [SPECIES_OLD_UNOWN_V] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_V},
- [SPECIES_OLD_UNOWN_W] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_W},
- [SPECIES_OLD_UNOWN_X] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_X},
- [SPECIES_OLD_UNOWN_Y] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_Y},
- [SPECIES_OLD_UNOWN_Z] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_Z},
- [SPECIES_TREECKO] = {gMonPalette_Treecko, SPECIES_TREECKO},
- [SPECIES_GROVYLE] = {gMonPalette_Grovyle, SPECIES_GROVYLE},
- [SPECIES_SCEPTILE] = {gMonPalette_Sceptile, SPECIES_SCEPTILE},
- [SPECIES_TORCHIC] = {gMonPalette_Torchic, SPECIES_TORCHIC},
- [SPECIES_COMBUSKEN] = {gMonPalette_Combusken, SPECIES_COMBUSKEN},
- [SPECIES_BLAZIKEN] = {gMonPalette_Blaziken, SPECIES_BLAZIKEN},
- [SPECIES_MUDKIP] = {gMonPalette_Mudkip, SPECIES_MUDKIP},
- [SPECIES_MARSHTOMP] = {gMonPalette_Marshtomp, SPECIES_MARSHTOMP},
- [SPECIES_SWAMPERT] = {gMonPalette_Swampert, SPECIES_SWAMPERT},
- [SPECIES_POOCHYENA] = {gMonPalette_Poochyena, SPECIES_POOCHYENA},
- [SPECIES_MIGHTYENA] = {gMonPalette_Mightyena, SPECIES_MIGHTYENA},
- [SPECIES_ZIGZAGOON] = {gMonPalette_Zigzagoon, SPECIES_ZIGZAGOON},
- [SPECIES_LINOONE] = {gMonPalette_Linoone, SPECIES_LINOONE},
- [SPECIES_WURMPLE] = {gMonPalette_Wurmple, SPECIES_WURMPLE},
- [SPECIES_SILCOON] = {gMonPalette_Silcoon, SPECIES_SILCOON},
- [SPECIES_BEAUTIFLY] = {gMonPalette_Beautifly, SPECIES_BEAUTIFLY},
- [SPECIES_CASCOON] = {gMonPalette_Cascoon, SPECIES_CASCOON},
- [SPECIES_DUSTOX] = {gMonPalette_Dustox, SPECIES_DUSTOX},
- [SPECIES_LOTAD] = {gMonPalette_Lotad, SPECIES_LOTAD},
- [SPECIES_LOMBRE] = {gMonPalette_Lombre, SPECIES_LOMBRE},
- [SPECIES_LUDICOLO] = {gMonPalette_Ludicolo, SPECIES_LUDICOLO},
- [SPECIES_SEEDOT] = {gMonPalette_Seedot, SPECIES_SEEDOT},
- [SPECIES_NUZLEAF] = {gMonPalette_Nuzleaf, SPECIES_NUZLEAF},
- [SPECIES_SHIFTRY] = {gMonPalette_Shiftry, SPECIES_SHIFTRY},
- [SPECIES_NINCADA] = {gMonPalette_Nincada, SPECIES_NINCADA},
- [SPECIES_NINJASK] = {gMonPalette_Ninjask, SPECIES_NINJASK},
- [SPECIES_SHEDINJA] = {gMonPalette_Shedinja, SPECIES_SHEDINJA},
- [SPECIES_TAILLOW] = {gMonPalette_Taillow, SPECIES_TAILLOW},
- [SPECIES_SWELLOW] = {gMonPalette_Swellow, SPECIES_SWELLOW},
- [SPECIES_SHROOMISH] = {gMonPalette_Shroomish, SPECIES_SHROOMISH},
- [SPECIES_BRELOOM] = {gMonPalette_Breloom, SPECIES_BRELOOM},
- [SPECIES_SPINDA] = {gMonPalette_Spinda, SPECIES_SPINDA},
- [SPECIES_WINGULL] = {gMonPalette_Wingull, SPECIES_WINGULL},
- [SPECIES_PELIPPER] = {gMonPalette_Pelipper, SPECIES_PELIPPER},
- [SPECIES_SURSKIT] = {gMonPalette_Surskit, SPECIES_SURSKIT},
- [SPECIES_MASQUERAIN] = {gMonPalette_Masquerain, SPECIES_MASQUERAIN},
- [SPECIES_WAILMER] = {gMonPalette_Wailmer, SPECIES_WAILMER},
- [SPECIES_WAILORD] = {gMonPalette_Wailord, SPECIES_WAILORD},
- [SPECIES_SKITTY] = {gMonPalette_Skitty, SPECIES_SKITTY},
- [SPECIES_DELCATTY] = {gMonPalette_Delcatty, SPECIES_DELCATTY},
- [SPECIES_KECLEON] = {gMonPalette_Kecleon, SPECIES_KECLEON},
- [SPECIES_BALTOY] = {gMonPalette_Baltoy, SPECIES_BALTOY},
- [SPECIES_CLAYDOL] = {gMonPalette_Claydol, SPECIES_CLAYDOL},
- [SPECIES_NOSEPASS] = {gMonPalette_Nosepass, SPECIES_NOSEPASS},
- [SPECIES_TORKOAL] = {gMonPalette_Torkoal, SPECIES_TORKOAL},
- [SPECIES_SABLEYE] = {gMonPalette_Sableye, SPECIES_SABLEYE},
- [SPECIES_BARBOACH] = {gMonPalette_Barboach, SPECIES_BARBOACH},
- [SPECIES_WHISCASH] = {gMonPalette_Whiscash, SPECIES_WHISCASH},
- [SPECIES_LUVDISC] = {gMonPalette_Luvdisc, SPECIES_LUVDISC},
- [SPECIES_CORPHISH] = {gMonPalette_Corphish, SPECIES_CORPHISH},
- [SPECIES_CRAWDAUNT] = {gMonPalette_Crawdaunt, SPECIES_CRAWDAUNT},
- [SPECIES_FEEBAS] = {gMonPalette_Feebas, SPECIES_FEEBAS},
- [SPECIES_MILOTIC] = {gMonPalette_Milotic, SPECIES_MILOTIC},
- [SPECIES_CARVANHA] = {gMonPalette_Carvanha, SPECIES_CARVANHA},
- [SPECIES_SHARPEDO] = {gMonPalette_Sharpedo, SPECIES_SHARPEDO},
- [SPECIES_TRAPINCH] = {gMonPalette_Trapinch, SPECIES_TRAPINCH},
- [SPECIES_VIBRAVA] = {gMonPalette_Vibrava, SPECIES_VIBRAVA},
- [SPECIES_FLYGON] = {gMonPalette_Flygon, SPECIES_FLYGON},
- [SPECIES_MAKUHITA] = {gMonPalette_Makuhita, SPECIES_MAKUHITA},
- [SPECIES_HARIYAMA] = {gMonPalette_Hariyama, SPECIES_HARIYAMA},
- [SPECIES_ELECTRIKE] = {gMonPalette_Electrike, SPECIES_ELECTRIKE},
- [SPECIES_MANECTRIC] = {gMonPalette_Manectric, SPECIES_MANECTRIC},
- [SPECIES_NUMEL] = {gMonPalette_Numel, SPECIES_NUMEL},
- [SPECIES_CAMERUPT] = {gMonPalette_Camerupt, SPECIES_CAMERUPT},
- [SPECIES_SPHEAL] = {gMonPalette_Spheal, SPECIES_SPHEAL},
- [SPECIES_SEALEO] = {gMonPalette_Sealeo, SPECIES_SEALEO},
- [SPECIES_WALREIN] = {gMonPalette_Walrein, SPECIES_WALREIN},
- [SPECIES_CACNEA] = {gMonPalette_Cacnea, SPECIES_CACNEA},
- [SPECIES_CACTURNE] = {gMonPalette_Cacturne, SPECIES_CACTURNE},
- [SPECIES_SNORUNT] = {gMonPalette_Snorunt, SPECIES_SNORUNT},
- [SPECIES_GLALIE] = {gMonPalette_Glalie, SPECIES_GLALIE},
- [SPECIES_LUNATONE] = {gMonPalette_Lunatone, SPECIES_LUNATONE},
- [SPECIES_SOLROCK] = {gMonPalette_Solrock, SPECIES_SOLROCK},
- [SPECIES_AZURILL] = {gMonPalette_Azurill, SPECIES_AZURILL},
- [SPECIES_SPOINK] = {gMonPalette_Spoink, SPECIES_SPOINK},
- [SPECIES_GRUMPIG] = {gMonPalette_Grumpig, SPECIES_GRUMPIG},
- [SPECIES_PLUSLE] = {gMonPalette_Plusle, SPECIES_PLUSLE},
- [SPECIES_MINUN] = {gMonPalette_Minun, SPECIES_MINUN},
- [SPECIES_MAWILE] = {gMonPalette_Mawile, SPECIES_MAWILE},
- [SPECIES_MEDITITE] = {gMonPalette_Meditite, SPECIES_MEDITITE},
- [SPECIES_MEDICHAM] = {gMonPalette_Medicham, SPECIES_MEDICHAM},
- [SPECIES_SWABLU] = {gMonPalette_Swablu, SPECIES_SWABLU},
- [SPECIES_ALTARIA] = {gMonPalette_Altaria, SPECIES_ALTARIA},
- [SPECIES_WYNAUT] = {gMonPalette_Wynaut, SPECIES_WYNAUT},
- [SPECIES_DUSKULL] = {gMonPalette_Duskull, SPECIES_DUSKULL},
- [SPECIES_DUSCLOPS] = {gMonPalette_Dusclops, SPECIES_DUSCLOPS},
- [SPECIES_ROSELIA] = {gMonPalette_Roselia, SPECIES_ROSELIA},
- [SPECIES_SLAKOTH] = {gMonPalette_Slakoth, SPECIES_SLAKOTH},
- [SPECIES_VIGOROTH] = {gMonPalette_Vigoroth, SPECIES_VIGOROTH},
- [SPECIES_SLAKING] = {gMonPalette_Slaking, SPECIES_SLAKING},
- [SPECIES_GULPIN] = {gMonPalette_Gulpin, SPECIES_GULPIN},
- [SPECIES_SWALOT] = {gMonPalette_Swalot, SPECIES_SWALOT},
- [SPECIES_TROPIUS] = {gMonPalette_Tropius, SPECIES_TROPIUS},
- [SPECIES_WHISMUR] = {gMonPalette_Whismur, SPECIES_WHISMUR},
- [SPECIES_LOUDRED] = {gMonPalette_Loudred, SPECIES_LOUDRED},
- [SPECIES_EXPLOUD] = {gMonPalette_Exploud, SPECIES_EXPLOUD},
- [SPECIES_CLAMPERL] = {gMonPalette_Clamperl, SPECIES_CLAMPERL},
- [SPECIES_HUNTAIL] = {gMonPalette_Huntail, SPECIES_HUNTAIL},
- [SPECIES_GOREBYSS] = {gMonPalette_Gorebyss, SPECIES_GOREBYSS},
- [SPECIES_ABSOL] = {gMonPalette_Absol, SPECIES_ABSOL},
- [SPECIES_SHUPPET] = {gMonPalette_Shuppet, SPECIES_SHUPPET},
- [SPECIES_BANETTE] = {gMonPalette_Banette, SPECIES_BANETTE},
- [SPECIES_SEVIPER] = {gMonPalette_Seviper, SPECIES_SEVIPER},
- [SPECIES_ZANGOOSE] = {gMonPalette_Zangoose, SPECIES_ZANGOOSE},
- [SPECIES_RELICANTH] = {gMonPalette_Relicanth, SPECIES_RELICANTH},
- [SPECIES_ARON] = {gMonPalette_Aron, SPECIES_ARON},
- [SPECIES_LAIRON] = {gMonPalette_Lairon, SPECIES_LAIRON},
- [SPECIES_AGGRON] = {gMonPalette_Aggron, SPECIES_AGGRON},
- [SPECIES_CASTFORM] = {gMonPalette_Castform, SPECIES_CASTFORM},
- [SPECIES_VOLBEAT] = {gMonPalette_Volbeat, SPECIES_VOLBEAT},
- [SPECIES_ILLUMISE] = {gMonPalette_Illumise, SPECIES_ILLUMISE},
- [SPECIES_LILEEP] = {gMonPalette_Lileep, SPECIES_LILEEP},
- [SPECIES_CRADILY] = {gMonPalette_Cradily, SPECIES_CRADILY},
- [SPECIES_ANORITH] = {gMonPalette_Anorith, SPECIES_ANORITH},
- [SPECIES_ARMALDO] = {gMonPalette_Armaldo, SPECIES_ARMALDO},
- [SPECIES_RALTS] = {gMonPalette_Ralts, SPECIES_RALTS},
- [SPECIES_KIRLIA] = {gMonPalette_Kirlia, SPECIES_KIRLIA},
- [SPECIES_GARDEVOIR] = {gMonPalette_Gardevoir, SPECIES_GARDEVOIR},
- [SPECIES_BAGON] = {gMonPalette_Bagon, SPECIES_BAGON},
- [SPECIES_SHELGON] = {gMonPalette_Shelgon, SPECIES_SHELGON},
- [SPECIES_SALAMENCE] = {gMonPalette_Salamence, SPECIES_SALAMENCE},
- [SPECIES_BELDUM] = {gMonPalette_Beldum, SPECIES_BELDUM},
- [SPECIES_METANG] = {gMonPalette_Metang, SPECIES_METANG},
- [SPECIES_METAGROSS] = {gMonPalette_Metagross, SPECIES_METAGROSS},
- [SPECIES_REGIROCK] = {gMonPalette_Regirock, SPECIES_REGIROCK},
- [SPECIES_REGICE] = {gMonPalette_Regice, SPECIES_REGICE},
- [SPECIES_REGISTEEL] = {gMonPalette_Registeel, SPECIES_REGISTEEL},
- [SPECIES_KYOGRE] = {gMonPalette_Kyogre, SPECIES_KYOGRE},
- [SPECIES_GROUDON] = {gMonPalette_Groudon, SPECIES_GROUDON},
- [SPECIES_RAYQUAZA] = {gMonPalette_Rayquaza, SPECIES_RAYQUAZA},
- [SPECIES_LATIAS] = {gMonPalette_Latias, SPECIES_LATIAS},
- [SPECIES_LATIOS] = {gMonPalette_Latios, SPECIES_LATIOS},
- [SPECIES_JIRACHI] = {gMonPalette_Jirachi, SPECIES_JIRACHI},
- [SPECIES_DEOXYS] = {gMonPalette_Deoxys, SPECIES_DEOXYS},
- [SPECIES_CHIMECHO] = {gMonPalette_Chimecho, SPECIES_CHIMECHO},
- [SPECIES_EGG] = {gMonPalette_Egg, SPECIES_EGG},
- [SPECIES_UNOWN_B] = {gMonPalette_Unown, SPECIES_UNOWN_B},
- [SPECIES_UNOWN_C] = {gMonPalette_Unown, SPECIES_UNOWN_C},
- [SPECIES_UNOWN_D] = {gMonPalette_Unown, SPECIES_UNOWN_D},
- [SPECIES_UNOWN_E] = {gMonPalette_Unown, SPECIES_UNOWN_E},
- [SPECIES_UNOWN_F] = {gMonPalette_Unown, SPECIES_UNOWN_F},
- [SPECIES_UNOWN_G] = {gMonPalette_Unown, SPECIES_UNOWN_G},
- [SPECIES_UNOWN_H] = {gMonPalette_Unown, SPECIES_UNOWN_H},
- [SPECIES_UNOWN_I] = {gMonPalette_Unown, SPECIES_UNOWN_I},
- [SPECIES_UNOWN_J] = {gMonPalette_Unown, SPECIES_UNOWN_J},
- [SPECIES_UNOWN_K] = {gMonPalette_Unown, SPECIES_UNOWN_K},
- [SPECIES_UNOWN_L] = {gMonPalette_Unown, SPECIES_UNOWN_L},
- [SPECIES_UNOWN_M] = {gMonPalette_Unown, SPECIES_UNOWN_M},
- [SPECIES_UNOWN_N] = {gMonPalette_Unown, SPECIES_UNOWN_N},
- [SPECIES_UNOWN_O] = {gMonPalette_Unown, SPECIES_UNOWN_O},
- [SPECIES_UNOWN_P] = {gMonPalette_Unown, SPECIES_UNOWN_P},
- [SPECIES_UNOWN_Q] = {gMonPalette_Unown, SPECIES_UNOWN_Q},
- [SPECIES_UNOWN_R] = {gMonPalette_Unown, SPECIES_UNOWN_R},
- [SPECIES_UNOWN_S] = {gMonPalette_Unown, SPECIES_UNOWN_S},
- [SPECIES_UNOWN_T] = {gMonPalette_Unown, SPECIES_UNOWN_T},
- [SPECIES_UNOWN_U] = {gMonPalette_Unown, SPECIES_UNOWN_U},
- [SPECIES_UNOWN_V] = {gMonPalette_Unown, SPECIES_UNOWN_V},
- [SPECIES_UNOWN_W] = {gMonPalette_Unown, SPECIES_UNOWN_W},
- [SPECIES_UNOWN_X] = {gMonPalette_Unown, SPECIES_UNOWN_X},
- [SPECIES_UNOWN_Y] = {gMonPalette_Unown, SPECIES_UNOWN_Y},
- [SPECIES_UNOWN_Z] = {gMonPalette_Unown, SPECIES_UNOWN_Z},
- [SPECIES_UNOWN_EMARK] = {gMonPalette_Unown, SPECIES_UNOWN_EMARK},
- [SPECIES_UNOWN_QMARK] = {gMonPalette_Unown, SPECIES_UNOWN_QMARK},
+ SPECIES_PAL(NONE, gMonPalette_CircledQuestionMark),
+ SPECIES_PAL(BULBASAUR, gMonPalette_Bulbasaur),
+ SPECIES_PAL(IVYSAUR, gMonPalette_Ivysaur),
+ SPECIES_PAL(VENUSAUR, gMonPalette_Venusaur),
+ SPECIES_PAL(CHARMANDER, gMonPalette_Charmander),
+ SPECIES_PAL(CHARMELEON, gMonPalette_Charmeleon),
+ SPECIES_PAL(CHARIZARD, gMonPalette_Charizard),
+ SPECIES_PAL(SQUIRTLE, gMonPalette_Squirtle),
+ SPECIES_PAL(WARTORTLE, gMonPalette_Wartortle),
+ SPECIES_PAL(BLASTOISE, gMonPalette_Blastoise),
+ SPECIES_PAL(CATERPIE, gMonPalette_Caterpie),
+ SPECIES_PAL(METAPOD, gMonPalette_Metapod),
+ SPECIES_PAL(BUTTERFREE, gMonPalette_Butterfree),
+ SPECIES_PAL(WEEDLE, gMonPalette_Weedle),
+ SPECIES_PAL(KAKUNA, gMonPalette_Kakuna),
+ SPECIES_PAL(BEEDRILL, gMonPalette_Beedrill),
+ SPECIES_PAL(PIDGEY, gMonPalette_Pidgey),
+ SPECIES_PAL(PIDGEOTTO, gMonPalette_Pidgeotto),
+ SPECIES_PAL(PIDGEOT, gMonPalette_Pidgeot),
+ SPECIES_PAL(RATTATA, gMonPalette_Rattata),
+ SPECIES_PAL(RATICATE, gMonPalette_Raticate),
+ SPECIES_PAL(SPEAROW, gMonPalette_Spearow),
+ SPECIES_PAL(FEAROW, gMonPalette_Fearow),
+ SPECIES_PAL(EKANS, gMonPalette_Ekans),
+ SPECIES_PAL(ARBOK, gMonPalette_Arbok),
+ SPECIES_PAL(PIKACHU, gMonPalette_Pikachu),
+ SPECIES_PAL(RAICHU, gMonPalette_Raichu),
+ SPECIES_PAL(SANDSHREW, gMonPalette_Sandshrew),
+ SPECIES_PAL(SANDSLASH, gMonPalette_Sandslash),
+ SPECIES_PAL(NIDORAN_F, gMonPalette_NidoranF),
+ SPECIES_PAL(NIDORINA, gMonPalette_Nidorina),
+ SPECIES_PAL(NIDOQUEEN, gMonPalette_Nidoqueen),
+ SPECIES_PAL(NIDORAN_M, gMonPalette_NidoranM),
+ SPECIES_PAL(NIDORINO, gMonPalette_Nidorino),
+ SPECIES_PAL(NIDOKING, gMonPalette_Nidoking),
+ SPECIES_PAL(CLEFAIRY, gMonPalette_Clefairy),
+ SPECIES_PAL(CLEFABLE, gMonPalette_Clefable),
+ SPECIES_PAL(VULPIX, gMonPalette_Vulpix),
+ SPECIES_PAL(NINETALES, gMonPalette_Ninetales),
+ SPECIES_PAL(JIGGLYPUFF, gMonPalette_Jigglypuff),
+ SPECIES_PAL(WIGGLYTUFF, gMonPalette_Wigglytuff),
+ SPECIES_PAL(ZUBAT, gMonPalette_Zubat),
+ SPECIES_PAL(GOLBAT, gMonPalette_Golbat),
+ SPECIES_PAL(ODDISH, gMonPalette_Oddish),
+ SPECIES_PAL(GLOOM, gMonPalette_Gloom),
+ SPECIES_PAL(VILEPLUME, gMonPalette_Vileplume),
+ SPECIES_PAL(PARAS, gMonPalette_Paras),
+ SPECIES_PAL(PARASECT, gMonPalette_Parasect),
+ SPECIES_PAL(VENONAT, gMonPalette_Venonat),
+ SPECIES_PAL(VENOMOTH, gMonPalette_Venomoth),
+ SPECIES_PAL(DIGLETT, gMonPalette_Diglett),
+ SPECIES_PAL(DUGTRIO, gMonPalette_Dugtrio),
+ SPECIES_PAL(MEOWTH, gMonPalette_Meowth),
+ SPECIES_PAL(PERSIAN, gMonPalette_Persian),
+ SPECIES_PAL(PSYDUCK, gMonPalette_Psyduck),
+ SPECIES_PAL(GOLDUCK, gMonPalette_Golduck),
+ SPECIES_PAL(MANKEY, gMonPalette_Mankey),
+ SPECIES_PAL(PRIMEAPE, gMonPalette_Primeape),
+ SPECIES_PAL(GROWLITHE, gMonPalette_Growlithe),
+ SPECIES_PAL(ARCANINE, gMonPalette_Arcanine),
+ SPECIES_PAL(POLIWAG, gMonPalette_Poliwag),
+ SPECIES_PAL(POLIWHIRL, gMonPalette_Poliwhirl),
+ SPECIES_PAL(POLIWRATH, gMonPalette_Poliwrath),
+ SPECIES_PAL(ABRA, gMonPalette_Abra),
+ SPECIES_PAL(KADABRA, gMonPalette_Kadabra),
+ SPECIES_PAL(ALAKAZAM, gMonPalette_Alakazam),
+ SPECIES_PAL(MACHOP, gMonPalette_Machop),
+ SPECIES_PAL(MACHOKE, gMonPalette_Machoke),
+ SPECIES_PAL(MACHAMP, gMonPalette_Machamp),
+ SPECIES_PAL(BELLSPROUT, gMonPalette_Bellsprout),
+ SPECIES_PAL(WEEPINBELL, gMonPalette_Weepinbell),
+ SPECIES_PAL(VICTREEBEL, gMonPalette_Victreebel),
+ SPECIES_PAL(TENTACOOL, gMonPalette_Tentacool),
+ SPECIES_PAL(TENTACRUEL, gMonPalette_Tentacruel),
+ SPECIES_PAL(GEODUDE, gMonPalette_Geodude),
+ SPECIES_PAL(GRAVELER, gMonPalette_Graveler),
+ SPECIES_PAL(GOLEM, gMonPalette_Golem),
+ SPECIES_PAL(PONYTA, gMonPalette_Ponyta),
+ SPECIES_PAL(RAPIDASH, gMonPalette_Rapidash),
+ SPECIES_PAL(SLOWPOKE, gMonPalette_Slowpoke),
+ SPECIES_PAL(SLOWBRO, gMonPalette_Slowbro),
+ SPECIES_PAL(MAGNEMITE, gMonPalette_Magnemite),
+ SPECIES_PAL(MAGNETON, gMonPalette_Magneton),
+ SPECIES_PAL(FARFETCHD, gMonPalette_Farfetchd),
+ SPECIES_PAL(DODUO, gMonPalette_Doduo),
+ SPECIES_PAL(DODRIO, gMonPalette_Dodrio),
+ SPECIES_PAL(SEEL, gMonPalette_Seel),
+ SPECIES_PAL(DEWGONG, gMonPalette_Dewgong),
+ SPECIES_PAL(GRIMER, gMonPalette_Grimer),
+ SPECIES_PAL(MUK, gMonPalette_Muk),
+ SPECIES_PAL(SHELLDER, gMonPalette_Shellder),
+ SPECIES_PAL(CLOYSTER, gMonPalette_Cloyster),
+ SPECIES_PAL(GASTLY, gMonPalette_Gastly),
+ SPECIES_PAL(HAUNTER, gMonPalette_Haunter),
+ SPECIES_PAL(GENGAR, gMonPalette_Gengar),
+ SPECIES_PAL(ONIX, gMonPalette_Onix),
+ SPECIES_PAL(DROWZEE, gMonPalette_Drowzee),
+ SPECIES_PAL(HYPNO, gMonPalette_Hypno),
+ SPECIES_PAL(KRABBY, gMonPalette_Krabby),
+ SPECIES_PAL(KINGLER, gMonPalette_Kingler),
+ SPECIES_PAL(VOLTORB, gMonPalette_Voltorb),
+ SPECIES_PAL(ELECTRODE, gMonPalette_Electrode),
+ SPECIES_PAL(EXEGGCUTE, gMonPalette_Exeggcute),
+ SPECIES_PAL(EXEGGUTOR, gMonPalette_Exeggutor),
+ SPECIES_PAL(CUBONE, gMonPalette_Cubone),
+ SPECIES_PAL(MAROWAK, gMonPalette_Marowak),
+ SPECIES_PAL(HITMONLEE, gMonPalette_Hitmonlee),
+ SPECIES_PAL(HITMONCHAN, gMonPalette_Hitmonchan),
+ SPECIES_PAL(LICKITUNG, gMonPalette_Lickitung),
+ SPECIES_PAL(KOFFING, gMonPalette_Koffing),
+ SPECIES_PAL(WEEZING, gMonPalette_Weezing),
+ SPECIES_PAL(RHYHORN, gMonPalette_Rhyhorn),
+ SPECIES_PAL(RHYDON, gMonPalette_Rhydon),
+ SPECIES_PAL(CHANSEY, gMonPalette_Chansey),
+ SPECIES_PAL(TANGELA, gMonPalette_Tangela),
+ SPECIES_PAL(KANGASKHAN, gMonPalette_Kangaskhan),
+ SPECIES_PAL(HORSEA, gMonPalette_Horsea),
+ SPECIES_PAL(SEADRA, gMonPalette_Seadra),
+ SPECIES_PAL(GOLDEEN, gMonPalette_Goldeen),
+ SPECIES_PAL(SEAKING, gMonPalette_Seaking),
+ SPECIES_PAL(STARYU, gMonPalette_Staryu),
+ SPECIES_PAL(STARMIE, gMonPalette_Starmie),
+ SPECIES_PAL(MR_MIME, gMonPalette_Mrmime),
+ SPECIES_PAL(SCYTHER, gMonPalette_Scyther),
+ SPECIES_PAL(JYNX, gMonPalette_Jynx),
+ SPECIES_PAL(ELECTABUZZ, gMonPalette_Electabuzz),
+ SPECIES_PAL(MAGMAR, gMonPalette_Magmar),
+ SPECIES_PAL(PINSIR, gMonPalette_Pinsir),
+ SPECIES_PAL(TAUROS, gMonPalette_Tauros),
+ SPECIES_PAL(MAGIKARP, gMonPalette_Magikarp),
+ SPECIES_PAL(GYARADOS, gMonPalette_Gyarados),
+ SPECIES_PAL(LAPRAS, gMonPalette_Lapras),
+ SPECIES_PAL(DITTO, gMonPalette_Ditto),
+ SPECIES_PAL(EEVEE, gMonPalette_Eevee),
+ SPECIES_PAL(VAPOREON, gMonPalette_Vaporeon),
+ SPECIES_PAL(JOLTEON, gMonPalette_Jolteon),
+ SPECIES_PAL(FLAREON, gMonPalette_Flareon),
+ SPECIES_PAL(PORYGON, gMonPalette_Porygon),
+ SPECIES_PAL(OMANYTE, gMonPalette_Omanyte),
+ SPECIES_PAL(OMASTAR, gMonPalette_Omastar),
+ SPECIES_PAL(KABUTO, gMonPalette_Kabuto),
+ SPECIES_PAL(KABUTOPS, gMonPalette_Kabutops),
+ SPECIES_PAL(AERODACTYL, gMonPalette_Aerodactyl),
+ SPECIES_PAL(SNORLAX, gMonPalette_Snorlax),
+ SPECIES_PAL(ARTICUNO, gMonPalette_Articuno),
+ SPECIES_PAL(ZAPDOS, gMonPalette_Zapdos),
+ SPECIES_PAL(MOLTRES, gMonPalette_Moltres),
+ SPECIES_PAL(DRATINI, gMonPalette_Dratini),
+ SPECIES_PAL(DRAGONAIR, gMonPalette_Dragonair),
+ SPECIES_PAL(DRAGONITE, gMonPalette_Dragonite),
+ SPECIES_PAL(MEWTWO, gMonPalette_Mewtwo),
+ SPECIES_PAL(MEW, gMonPalette_Mew),
+ SPECIES_PAL(CHIKORITA, gMonPalette_Chikorita),
+ SPECIES_PAL(BAYLEEF, gMonPalette_Bayleef),
+ SPECIES_PAL(MEGANIUM, gMonPalette_Meganium),
+ SPECIES_PAL(CYNDAQUIL, gMonPalette_Cyndaquil),
+ SPECIES_PAL(QUILAVA, gMonPalette_Quilava),
+ SPECIES_PAL(TYPHLOSION, gMonPalette_Typhlosion),
+ SPECIES_PAL(TOTODILE, gMonPalette_Totodile),
+ SPECIES_PAL(CROCONAW, gMonPalette_Croconaw),
+ SPECIES_PAL(FERALIGATR, gMonPalette_Feraligatr),
+ SPECIES_PAL(SENTRET, gMonPalette_Sentret),
+ SPECIES_PAL(FURRET, gMonPalette_Furret),
+ SPECIES_PAL(HOOTHOOT, gMonPalette_Hoothoot),
+ SPECIES_PAL(NOCTOWL, gMonPalette_Noctowl),
+ SPECIES_PAL(LEDYBA, gMonPalette_Ledyba),
+ SPECIES_PAL(LEDIAN, gMonPalette_Ledian),
+ SPECIES_PAL(SPINARAK, gMonPalette_Spinarak),
+ SPECIES_PAL(ARIADOS, gMonPalette_Ariados),
+ SPECIES_PAL(CROBAT, gMonPalette_Crobat),
+ SPECIES_PAL(CHINCHOU, gMonPalette_Chinchou),
+ SPECIES_PAL(LANTURN, gMonPalette_Lanturn),
+ SPECIES_PAL(PICHU, gMonPalette_Pichu),
+ SPECIES_PAL(CLEFFA, gMonPalette_Cleffa),
+ SPECIES_PAL(IGGLYBUFF, gMonPalette_Igglybuff),
+ SPECIES_PAL(TOGEPI, gMonPalette_Togepi),
+ SPECIES_PAL(TOGETIC, gMonPalette_Togetic),
+ SPECIES_PAL(NATU, gMonPalette_Natu),
+ SPECIES_PAL(XATU, gMonPalette_Xatu),
+ SPECIES_PAL(MAREEP, gMonPalette_Mareep),
+ SPECIES_PAL(FLAAFFY, gMonPalette_Flaaffy),
+ SPECIES_PAL(AMPHAROS, gMonPalette_Ampharos),
+ SPECIES_PAL(BELLOSSOM, gMonPalette_Bellossom),
+ SPECIES_PAL(MARILL, gMonPalette_Marill),
+ SPECIES_PAL(AZUMARILL, gMonPalette_Azumarill),
+ SPECIES_PAL(SUDOWOODO, gMonPalette_Sudowoodo),
+ SPECIES_PAL(POLITOED, gMonPalette_Politoed),
+ SPECIES_PAL(HOPPIP, gMonPalette_Hoppip),
+ SPECIES_PAL(SKIPLOOM, gMonPalette_Skiploom),
+ SPECIES_PAL(JUMPLUFF, gMonPalette_Jumpluff),
+ SPECIES_PAL(AIPOM, gMonPalette_Aipom),
+ SPECIES_PAL(SUNKERN, gMonPalette_Sunkern),
+ SPECIES_PAL(SUNFLORA, gMonPalette_Sunflora),
+ SPECIES_PAL(YANMA, gMonPalette_Yanma),
+ SPECIES_PAL(WOOPER, gMonPalette_Wooper),
+ SPECIES_PAL(QUAGSIRE, gMonPalette_Quagsire),
+ SPECIES_PAL(ESPEON, gMonPalette_Espeon),
+ SPECIES_PAL(UMBREON, gMonPalette_Umbreon),
+ SPECIES_PAL(MURKROW, gMonPalette_Murkrow),
+ SPECIES_PAL(SLOWKING, gMonPalette_Slowking),
+ SPECIES_PAL(MISDREAVUS, gMonPalette_Misdreavus),
+ SPECIES_PAL(UNOWN, gMonPalette_Unown),
+ SPECIES_PAL(WOBBUFFET, gMonPalette_Wobbuffet),
+ SPECIES_PAL(GIRAFARIG, gMonPalette_Girafarig),
+ SPECIES_PAL(PINECO, gMonPalette_Pineco),
+ SPECIES_PAL(FORRETRESS, gMonPalette_Forretress),
+ SPECIES_PAL(DUNSPARCE, gMonPalette_Dunsparce),
+ SPECIES_PAL(GLIGAR, gMonPalette_Gligar),
+ SPECIES_PAL(STEELIX, gMonPalette_Steelix),
+ SPECIES_PAL(SNUBBULL, gMonPalette_Snubbull),
+ SPECIES_PAL(GRANBULL, gMonPalette_Granbull),
+ SPECIES_PAL(QWILFISH, gMonPalette_Qwilfish),
+ SPECIES_PAL(SCIZOR, gMonPalette_Scizor),
+ SPECIES_PAL(SHUCKLE, gMonPalette_Shuckle),
+ SPECIES_PAL(HERACROSS, gMonPalette_Heracross),
+ SPECIES_PAL(SNEASEL, gMonPalette_Sneasel),
+ SPECIES_PAL(TEDDIURSA, gMonPalette_Teddiursa),
+ SPECIES_PAL(URSARING, gMonPalette_Ursaring),
+ SPECIES_PAL(SLUGMA, gMonPalette_Slugma),
+ SPECIES_PAL(MAGCARGO, gMonPalette_Magcargo),
+ SPECIES_PAL(SWINUB, gMonPalette_Swinub),
+ SPECIES_PAL(PILOSWINE, gMonPalette_Piloswine),
+ SPECIES_PAL(CORSOLA, gMonPalette_Corsola),
+ SPECIES_PAL(REMORAID, gMonPalette_Remoraid),
+ SPECIES_PAL(OCTILLERY, gMonPalette_Octillery),
+ SPECIES_PAL(DELIBIRD, gMonPalette_Delibird),
+ SPECIES_PAL(MANTINE, gMonPalette_Mantine),
+ SPECIES_PAL(SKARMORY, gMonPalette_Skarmory),
+ SPECIES_PAL(HOUNDOUR, gMonPalette_Houndour),
+ SPECIES_PAL(HOUNDOOM, gMonPalette_Houndoom),
+ SPECIES_PAL(KINGDRA, gMonPalette_Kingdra),
+ SPECIES_PAL(PHANPY, gMonPalette_Phanpy),
+ SPECIES_PAL(DONPHAN, gMonPalette_Donphan),
+ SPECIES_PAL(PORYGON2, gMonPalette_Porygon2),
+ SPECIES_PAL(STANTLER, gMonPalette_Stantler),
+ SPECIES_PAL(SMEARGLE, gMonPalette_Smeargle),
+ SPECIES_PAL(TYROGUE, gMonPalette_Tyrogue),
+ SPECIES_PAL(HITMONTOP, gMonPalette_Hitmontop),
+ SPECIES_PAL(SMOOCHUM, gMonPalette_Smoochum),
+ SPECIES_PAL(ELEKID, gMonPalette_Elekid),
+ SPECIES_PAL(MAGBY, gMonPalette_Magby),
+ SPECIES_PAL(MILTANK, gMonPalette_Miltank),
+ SPECIES_PAL(BLISSEY, gMonPalette_Blissey),
+ SPECIES_PAL(RAIKOU, gMonPalette_Raikou),
+ SPECIES_PAL(ENTEI, gMonPalette_Entei),
+ SPECIES_PAL(SUICUNE, gMonPalette_Suicune),
+ SPECIES_PAL(LARVITAR, gMonPalette_Larvitar),
+ SPECIES_PAL(PUPITAR, gMonPalette_Pupitar),
+ SPECIES_PAL(TYRANITAR, gMonPalette_Tyranitar),
+ SPECIES_PAL(LUGIA, gMonPalette_Lugia),
+ SPECIES_PAL(HO_OH, gMonPalette_HoOh),
+ SPECIES_PAL(CELEBI, gMonPalette_Celebi),
+ SPECIES_PAL(OLD_UNOWN_B, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_C, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_D, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_E, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_F, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_G, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_H, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_I, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_J, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_K, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_L, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_M, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_N, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_O, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_P, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_Q, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_R, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_S, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_T, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_U, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_V, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_W, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_X, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_Y, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(OLD_UNOWN_Z, gMonPalette_DoubleQuestionMark),
+ SPECIES_PAL(TREECKO, gMonPalette_Treecko),
+ SPECIES_PAL(GROVYLE, gMonPalette_Grovyle),
+ SPECIES_PAL(SCEPTILE, gMonPalette_Sceptile),
+ SPECIES_PAL(TORCHIC, gMonPalette_Torchic),
+ SPECIES_PAL(COMBUSKEN, gMonPalette_Combusken),
+ SPECIES_PAL(BLAZIKEN, gMonPalette_Blaziken),
+ SPECIES_PAL(MUDKIP, gMonPalette_Mudkip),
+ SPECIES_PAL(MARSHTOMP, gMonPalette_Marshtomp),
+ SPECIES_PAL(SWAMPERT, gMonPalette_Swampert),
+ SPECIES_PAL(POOCHYENA, gMonPalette_Poochyena),
+ SPECIES_PAL(MIGHTYENA, gMonPalette_Mightyena),
+ SPECIES_PAL(ZIGZAGOON, gMonPalette_Zigzagoon),
+ SPECIES_PAL(LINOONE, gMonPalette_Linoone),
+ SPECIES_PAL(WURMPLE, gMonPalette_Wurmple),
+ SPECIES_PAL(SILCOON, gMonPalette_Silcoon),
+ SPECIES_PAL(BEAUTIFLY, gMonPalette_Beautifly),
+ SPECIES_PAL(CASCOON, gMonPalette_Cascoon),
+ SPECIES_PAL(DUSTOX, gMonPalette_Dustox),
+ SPECIES_PAL(LOTAD, gMonPalette_Lotad),
+ SPECIES_PAL(LOMBRE, gMonPalette_Lombre),
+ SPECIES_PAL(LUDICOLO, gMonPalette_Ludicolo),
+ SPECIES_PAL(SEEDOT, gMonPalette_Seedot),
+ SPECIES_PAL(NUZLEAF, gMonPalette_Nuzleaf),
+ SPECIES_PAL(SHIFTRY, gMonPalette_Shiftry),
+ SPECIES_PAL(NINCADA, gMonPalette_Nincada),
+ SPECIES_PAL(NINJASK, gMonPalette_Ninjask),
+ SPECIES_PAL(SHEDINJA, gMonPalette_Shedinja),
+ SPECIES_PAL(TAILLOW, gMonPalette_Taillow),
+ SPECIES_PAL(SWELLOW, gMonPalette_Swellow),
+ SPECIES_PAL(SHROOMISH, gMonPalette_Shroomish),
+ SPECIES_PAL(BRELOOM, gMonPalette_Breloom),
+ SPECIES_PAL(SPINDA, gMonPalette_Spinda),
+ SPECIES_PAL(WINGULL, gMonPalette_Wingull),
+ SPECIES_PAL(PELIPPER, gMonPalette_Pelipper),
+ SPECIES_PAL(SURSKIT, gMonPalette_Surskit),
+ SPECIES_PAL(MASQUERAIN, gMonPalette_Masquerain),
+ SPECIES_PAL(WAILMER, gMonPalette_Wailmer),
+ SPECIES_PAL(WAILORD, gMonPalette_Wailord),
+ SPECIES_PAL(SKITTY, gMonPalette_Skitty),
+ SPECIES_PAL(DELCATTY, gMonPalette_Delcatty),
+ SPECIES_PAL(KECLEON, gMonPalette_Kecleon),
+ SPECIES_PAL(BALTOY, gMonPalette_Baltoy),
+ SPECIES_PAL(CLAYDOL, gMonPalette_Claydol),
+ SPECIES_PAL(NOSEPASS, gMonPalette_Nosepass),
+ SPECIES_PAL(TORKOAL, gMonPalette_Torkoal),
+ SPECIES_PAL(SABLEYE, gMonPalette_Sableye),
+ SPECIES_PAL(BARBOACH, gMonPalette_Barboach),
+ SPECIES_PAL(WHISCASH, gMonPalette_Whiscash),
+ SPECIES_PAL(LUVDISC, gMonPalette_Luvdisc),
+ SPECIES_PAL(CORPHISH, gMonPalette_Corphish),
+ SPECIES_PAL(CRAWDAUNT, gMonPalette_Crawdaunt),
+ SPECIES_PAL(FEEBAS, gMonPalette_Feebas),
+ SPECIES_PAL(MILOTIC, gMonPalette_Milotic),
+ SPECIES_PAL(CARVANHA, gMonPalette_Carvanha),
+ SPECIES_PAL(SHARPEDO, gMonPalette_Sharpedo),
+ SPECIES_PAL(TRAPINCH, gMonPalette_Trapinch),
+ SPECIES_PAL(VIBRAVA, gMonPalette_Vibrava),
+ SPECIES_PAL(FLYGON, gMonPalette_Flygon),
+ SPECIES_PAL(MAKUHITA, gMonPalette_Makuhita),
+ SPECIES_PAL(HARIYAMA, gMonPalette_Hariyama),
+ SPECIES_PAL(ELECTRIKE, gMonPalette_Electrike),
+ SPECIES_PAL(MANECTRIC, gMonPalette_Manectric),
+ SPECIES_PAL(NUMEL, gMonPalette_Numel),
+ SPECIES_PAL(CAMERUPT, gMonPalette_Camerupt),
+ SPECIES_PAL(SPHEAL, gMonPalette_Spheal),
+ SPECIES_PAL(SEALEO, gMonPalette_Sealeo),
+ SPECIES_PAL(WALREIN, gMonPalette_Walrein),
+ SPECIES_PAL(CACNEA, gMonPalette_Cacnea),
+ SPECIES_PAL(CACTURNE, gMonPalette_Cacturne),
+ SPECIES_PAL(SNORUNT, gMonPalette_Snorunt),
+ SPECIES_PAL(GLALIE, gMonPalette_Glalie),
+ SPECIES_PAL(LUNATONE, gMonPalette_Lunatone),
+ SPECIES_PAL(SOLROCK, gMonPalette_Solrock),
+ SPECIES_PAL(AZURILL, gMonPalette_Azurill),
+ SPECIES_PAL(SPOINK, gMonPalette_Spoink),
+ SPECIES_PAL(GRUMPIG, gMonPalette_Grumpig),
+ SPECIES_PAL(PLUSLE, gMonPalette_Plusle),
+ SPECIES_PAL(MINUN, gMonPalette_Minun),
+ SPECIES_PAL(MAWILE, gMonPalette_Mawile),
+ SPECIES_PAL(MEDITITE, gMonPalette_Meditite),
+ SPECIES_PAL(MEDICHAM, gMonPalette_Medicham),
+ SPECIES_PAL(SWABLU, gMonPalette_Swablu),
+ SPECIES_PAL(ALTARIA, gMonPalette_Altaria),
+ SPECIES_PAL(WYNAUT, gMonPalette_Wynaut),
+ SPECIES_PAL(DUSKULL, gMonPalette_Duskull),
+ SPECIES_PAL(DUSCLOPS, gMonPalette_Dusclops),
+ SPECIES_PAL(ROSELIA, gMonPalette_Roselia),
+ SPECIES_PAL(SLAKOTH, gMonPalette_Slakoth),
+ SPECIES_PAL(VIGOROTH, gMonPalette_Vigoroth),
+ SPECIES_PAL(SLAKING, gMonPalette_Slaking),
+ SPECIES_PAL(GULPIN, gMonPalette_Gulpin),
+ SPECIES_PAL(SWALOT, gMonPalette_Swalot),
+ SPECIES_PAL(TROPIUS, gMonPalette_Tropius),
+ SPECIES_PAL(WHISMUR, gMonPalette_Whismur),
+ SPECIES_PAL(LOUDRED, gMonPalette_Loudred),
+ SPECIES_PAL(EXPLOUD, gMonPalette_Exploud),
+ SPECIES_PAL(CLAMPERL, gMonPalette_Clamperl),
+ SPECIES_PAL(HUNTAIL, gMonPalette_Huntail),
+ SPECIES_PAL(GOREBYSS, gMonPalette_Gorebyss),
+ SPECIES_PAL(ABSOL, gMonPalette_Absol),
+ SPECIES_PAL(SHUPPET, gMonPalette_Shuppet),
+ SPECIES_PAL(BANETTE, gMonPalette_Banette),
+ SPECIES_PAL(SEVIPER, gMonPalette_Seviper),
+ SPECIES_PAL(ZANGOOSE, gMonPalette_Zangoose),
+ SPECIES_PAL(RELICANTH, gMonPalette_Relicanth),
+ SPECIES_PAL(ARON, gMonPalette_Aron),
+ SPECIES_PAL(LAIRON, gMonPalette_Lairon),
+ SPECIES_PAL(AGGRON, gMonPalette_Aggron),
+ SPECIES_PAL(CASTFORM, gMonPalette_Castform),
+ SPECIES_PAL(VOLBEAT, gMonPalette_Volbeat),
+ SPECIES_PAL(ILLUMISE, gMonPalette_Illumise),
+ SPECIES_PAL(LILEEP, gMonPalette_Lileep),
+ SPECIES_PAL(CRADILY, gMonPalette_Cradily),
+ SPECIES_PAL(ANORITH, gMonPalette_Anorith),
+ SPECIES_PAL(ARMALDO, gMonPalette_Armaldo),
+ SPECIES_PAL(RALTS, gMonPalette_Ralts),
+ SPECIES_PAL(KIRLIA, gMonPalette_Kirlia),
+ SPECIES_PAL(GARDEVOIR, gMonPalette_Gardevoir),
+ SPECIES_PAL(BAGON, gMonPalette_Bagon),
+ SPECIES_PAL(SHELGON, gMonPalette_Shelgon),
+ SPECIES_PAL(SALAMENCE, gMonPalette_Salamence),
+ SPECIES_PAL(BELDUM, gMonPalette_Beldum),
+ SPECIES_PAL(METANG, gMonPalette_Metang),
+ SPECIES_PAL(METAGROSS, gMonPalette_Metagross),
+ SPECIES_PAL(REGIROCK, gMonPalette_Regirock),
+ SPECIES_PAL(REGICE, gMonPalette_Regice),
+ SPECIES_PAL(REGISTEEL, gMonPalette_Registeel),
+ SPECIES_PAL(KYOGRE, gMonPalette_Kyogre),
+ SPECIES_PAL(GROUDON, gMonPalette_Groudon),
+ SPECIES_PAL(RAYQUAZA, gMonPalette_Rayquaza),
+ SPECIES_PAL(LATIAS, gMonPalette_Latias),
+ SPECIES_PAL(LATIOS, gMonPalette_Latios),
+ SPECIES_PAL(JIRACHI, gMonPalette_Jirachi),
+ SPECIES_PAL(DEOXYS, gMonPalette_Deoxys),
+ SPECIES_PAL(CHIMECHO, gMonPalette_Chimecho),
+ SPECIES_PAL(EGG, gMonPalette_Egg),
+ SPECIES_PAL(UNOWN_B, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_C, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_D, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_E, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_F, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_G, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_H, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_I, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_J, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_K, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_L, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_M, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_N, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_O, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_P, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_Q, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_R, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_S, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_T, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_U, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_V, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_W, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_X, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_Y, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_Z, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_EMARK, gMonPalette_Unown),
+ SPECIES_PAL(UNOWN_QMARK, gMonPalette_Unown),
};
diff --git a/src/data/pokemon_graphics/shiny_palette_table.h b/src/data/pokemon_graphics/shiny_palette_table.h
index 0c3f990cf..8b1cfcaac 100644
--- a/src/data/pokemon_graphics/shiny_palette_table.h
+++ b/src/data/pokemon_graphics/shiny_palette_table.h
@@ -1,443 +1,443 @@
const struct CompressedSpritePalette gMonShinyPaletteTable[] =
{
- [SPECIES_NONE] = {gMonShinyPalette_CircledQuestionMark, SPECIES_NONE + 500},
- [SPECIES_BULBASAUR] = {gMonShinyPalette_Bulbasaur, SPECIES_BULBASAUR + 500},
- [SPECIES_IVYSAUR] = {gMonShinyPalette_Ivysaur, SPECIES_IVYSAUR + 500},
- [SPECIES_VENUSAUR] = {gMonShinyPalette_Venusaur, SPECIES_VENUSAUR + 500},
- [SPECIES_CHARMANDER] = {gMonShinyPalette_Charmander, SPECIES_CHARMANDER + 500},
- [SPECIES_CHARMELEON] = {gMonShinyPalette_Charmeleon, SPECIES_CHARMELEON + 500},
- [SPECIES_CHARIZARD] = {gMonShinyPalette_Charizard, SPECIES_CHARIZARD + 500},
- [SPECIES_SQUIRTLE] = {gMonShinyPalette_Squirtle, SPECIES_SQUIRTLE + 500},
- [SPECIES_WARTORTLE] = {gMonShinyPalette_Wartortle, SPECIES_WARTORTLE + 500},
- [SPECIES_BLASTOISE] = {gMonShinyPalette_Blastoise, SPECIES_BLASTOISE + 500},
- [SPECIES_CATERPIE] = {gMonShinyPalette_Caterpie, SPECIES_CATERPIE + 500},
- [SPECIES_METAPOD] = {gMonShinyPalette_Metapod, SPECIES_METAPOD + 500},
- [SPECIES_BUTTERFREE] = {gMonShinyPalette_Butterfree, SPECIES_BUTTERFREE + 500},
- [SPECIES_WEEDLE] = {gMonShinyPalette_Weedle, SPECIES_WEEDLE + 500},
- [SPECIES_KAKUNA] = {gMonShinyPalette_Kakuna, SPECIES_KAKUNA + 500},
- [SPECIES_BEEDRILL] = {gMonShinyPalette_Beedrill, SPECIES_BEEDRILL + 500},
- [SPECIES_PIDGEY] = {gMonShinyPalette_Pidgey, SPECIES_PIDGEY + 500},
- [SPECIES_PIDGEOTTO] = {gMonShinyPalette_Pidgeotto, SPECIES_PIDGEOTTO + 500},
- [SPECIES_PIDGEOT] = {gMonShinyPalette_Pidgeot, SPECIES_PIDGEOT + 500},
- [SPECIES_RATTATA] = {gMonShinyPalette_Rattata, SPECIES_RATTATA + 500},
- [SPECIES_RATICATE] = {gMonShinyPalette_Raticate, SPECIES_RATICATE + 500},
- [SPECIES_SPEAROW] = {gMonShinyPalette_Spearow, SPECIES_SPEAROW + 500},
- [SPECIES_FEAROW] = {gMonShinyPalette_Fearow, SPECIES_FEAROW + 500},
- [SPECIES_EKANS] = {gMonShinyPalette_Ekans, SPECIES_EKANS + 500},
- [SPECIES_ARBOK] = {gMonShinyPalette_Arbok, SPECIES_ARBOK + 500},
- [SPECIES_PIKACHU] = {gMonShinyPalette_Pikachu, SPECIES_PIKACHU + 500},
- [SPECIES_RAICHU] = {gMonShinyPalette_Raichu, SPECIES_RAICHU + 500},
- [SPECIES_SANDSHREW] = {gMonShinyPalette_Sandshrew, SPECIES_SANDSHREW + 500},
- [SPECIES_SANDSLASH] = {gMonShinyPalette_Sandslash, SPECIES_SANDSLASH + 500},
- [SPECIES_NIDORAN_F] = {gMonShinyPalette_NidoranF, SPECIES_NIDORAN_F + 500},
- [SPECIES_NIDORINA] = {gMonShinyPalette_Nidorina, SPECIES_NIDORINA + 500},
- [SPECIES_NIDOQUEEN] = {gMonShinyPalette_Nidoqueen, SPECIES_NIDOQUEEN + 500},
- [SPECIES_NIDORAN_M] = {gMonShinyPalette_NidoranM, SPECIES_NIDORAN_M + 500},
- [SPECIES_NIDORINO] = {gMonShinyPalette_Nidorino, SPECIES_NIDORINO + 500},
- [SPECIES_NIDOKING] = {gMonShinyPalette_Nidoking, SPECIES_NIDOKING + 500},
- [SPECIES_CLEFAIRY] = {gMonShinyPalette_Clefairy, SPECIES_CLEFAIRY + 500},
- [SPECIES_CLEFABLE] = {gMonShinyPalette_Clefable, SPECIES_CLEFABLE + 500},
- [SPECIES_VULPIX] = {gMonShinyPalette_Vulpix, SPECIES_VULPIX + 500},
- [SPECIES_NINETALES] = {gMonShinyPalette_Ninetales, SPECIES_NINETALES + 500},
- [SPECIES_JIGGLYPUFF] = {gMonShinyPalette_Jigglypuff, SPECIES_JIGGLYPUFF + 500},
- [SPECIES_WIGGLYTUFF] = {gMonShinyPalette_Wigglytuff, SPECIES_WIGGLYTUFF + 500},
- [SPECIES_ZUBAT] = {gMonShinyPalette_Zubat, SPECIES_ZUBAT + 500},
- [SPECIES_GOLBAT] = {gMonShinyPalette_Golbat, SPECIES_GOLBAT + 500},
- [SPECIES_ODDISH] = {gMonShinyPalette_Oddish, SPECIES_ODDISH + 500},
- [SPECIES_GLOOM] = {gMonShinyPalette_Gloom, SPECIES_GLOOM + 500},
- [SPECIES_VILEPLUME] = {gMonShinyPalette_Vileplume, SPECIES_VILEPLUME + 500},
- [SPECIES_PARAS] = {gMonShinyPalette_Paras, SPECIES_PARAS + 500},
- [SPECIES_PARASECT] = {gMonShinyPalette_Parasect, SPECIES_PARASECT + 500},
- [SPECIES_VENONAT] = {gMonShinyPalette_Venonat, SPECIES_VENONAT + 500},
- [SPECIES_VENOMOTH] = {gMonShinyPalette_Venomoth, SPECIES_VENOMOTH + 500},
- [SPECIES_DIGLETT] = {gMonShinyPalette_Diglett, SPECIES_DIGLETT + 500},
- [SPECIES_DUGTRIO] = {gMonShinyPalette_Dugtrio, SPECIES_DUGTRIO + 500},
- [SPECIES_MEOWTH] = {gMonShinyPalette_Meowth, SPECIES_MEOWTH + 500},
- [SPECIES_PERSIAN] = {gMonShinyPalette_Persian, SPECIES_PERSIAN + 500},
- [SPECIES_PSYDUCK] = {gMonShinyPalette_Psyduck, SPECIES_PSYDUCK + 500},
- [SPECIES_GOLDUCK] = {gMonShinyPalette_Golduck, SPECIES_GOLDUCK + 500},
- [SPECIES_MANKEY] = {gMonShinyPalette_Mankey, SPECIES_MANKEY + 500},
- [SPECIES_PRIMEAPE] = {gMonShinyPalette_Primeape, SPECIES_PRIMEAPE + 500},
- [SPECIES_GROWLITHE] = {gMonShinyPalette_Growlithe, SPECIES_GROWLITHE + 500},
- [SPECIES_ARCANINE] = {gMonShinyPalette_Arcanine, SPECIES_ARCANINE + 500},
- [SPECIES_POLIWAG] = {gMonShinyPalette_Poliwag, SPECIES_POLIWAG + 500},
- [SPECIES_POLIWHIRL] = {gMonShinyPalette_Poliwhirl, SPECIES_POLIWHIRL + 500},
- [SPECIES_POLIWRATH] = {gMonShinyPalette_Poliwrath, SPECIES_POLIWRATH + 500},
- [SPECIES_ABRA] = {gMonShinyPalette_Abra, SPECIES_ABRA + 500},
- [SPECIES_KADABRA] = {gMonShinyPalette_Kadabra, SPECIES_KADABRA + 500},
- [SPECIES_ALAKAZAM] = {gMonShinyPalette_Alakazam, SPECIES_ALAKAZAM + 500},
- [SPECIES_MACHOP] = {gMonShinyPalette_Machop, SPECIES_MACHOP + 500},
- [SPECIES_MACHOKE] = {gMonShinyPalette_Machoke, SPECIES_MACHOKE + 500},
- [SPECIES_MACHAMP] = {gMonShinyPalette_Machamp, SPECIES_MACHAMP + 500},
- [SPECIES_BELLSPROUT] = {gMonShinyPalette_Bellsprout, SPECIES_BELLSPROUT + 500},
- [SPECIES_WEEPINBELL] = {gMonShinyPalette_Weepinbell, SPECIES_WEEPINBELL + 500},
- [SPECIES_VICTREEBEL] = {gMonShinyPalette_Victreebel, SPECIES_VICTREEBEL + 500},
- [SPECIES_TENTACOOL] = {gMonShinyPalette_Tentacool, SPECIES_TENTACOOL + 500},
- [SPECIES_TENTACRUEL] = {gMonShinyPalette_Tentacruel, SPECIES_TENTACRUEL + 500},
- [SPECIES_GEODUDE] = {gMonShinyPalette_Geodude, SPECIES_GEODUDE + 500},
- [SPECIES_GRAVELER] = {gMonShinyPalette_Graveler, SPECIES_GRAVELER + 500},
- [SPECIES_GOLEM] = {gMonShinyPalette_Golem, SPECIES_GOLEM + 500},
- [SPECIES_PONYTA] = {gMonShinyPalette_Ponyta, SPECIES_PONYTA + 500},
- [SPECIES_RAPIDASH] = {gMonShinyPalette_Rapidash, SPECIES_RAPIDASH + 500},
- [SPECIES_SLOWPOKE] = {gMonShinyPalette_Slowpoke, SPECIES_SLOWPOKE + 500},
- [SPECIES_SLOWBRO] = {gMonShinyPalette_Slowbro, SPECIES_SLOWBRO + 500},
- [SPECIES_MAGNEMITE] = {gMonShinyPalette_Magnemite, SPECIES_MAGNEMITE + 500},
- [SPECIES_MAGNETON] = {gMonShinyPalette_Magneton, SPECIES_MAGNETON + 500},
- [SPECIES_FARFETCHD] = {gMonShinyPalette_Farfetchd, SPECIES_FARFETCHD + 500},
- [SPECIES_DODUO] = {gMonShinyPalette_Doduo, SPECIES_DODUO + 500},
- [SPECIES_DODRIO] = {gMonShinyPalette_Dodrio, SPECIES_DODRIO + 500},
- [SPECIES_SEEL] = {gMonShinyPalette_Seel, SPECIES_SEEL + 500},
- [SPECIES_DEWGONG] = {gMonShinyPalette_Dewgong, SPECIES_DEWGONG + 500},
- [SPECIES_GRIMER] = {gMonShinyPalette_Grimer, SPECIES_GRIMER + 500},
- [SPECIES_MUK] = {gMonShinyPalette_Muk, SPECIES_MUK + 500},
- [SPECIES_SHELLDER] = {gMonShinyPalette_Shellder, SPECIES_SHELLDER + 500},
- [SPECIES_CLOYSTER] = {gMonShinyPalette_Cloyster, SPECIES_CLOYSTER + 500},
- [SPECIES_GASTLY] = {gMonShinyPalette_Gastly, SPECIES_GASTLY + 500},
- [SPECIES_HAUNTER] = {gMonShinyPalette_Haunter, SPECIES_HAUNTER + 500},
- [SPECIES_GENGAR] = {gMonShinyPalette_Gengar, SPECIES_GENGAR + 500},
- [SPECIES_ONIX] = {gMonShinyPalette_Onix, SPECIES_ONIX + 500},
- [SPECIES_DROWZEE] = {gMonShinyPalette_Drowzee, SPECIES_DROWZEE + 500},
- [SPECIES_HYPNO] = {gMonShinyPalette_Hypno, SPECIES_HYPNO + 500},
- [SPECIES_KRABBY] = {gMonShinyPalette_Krabby, SPECIES_KRABBY + 500},
- [SPECIES_KINGLER] = {gMonShinyPalette_Kingler, SPECIES_KINGLER + 500},
- [SPECIES_VOLTORB] = {gMonShinyPalette_Voltorb, SPECIES_VOLTORB + 500},
- [SPECIES_ELECTRODE] = {gMonShinyPalette_Electrode, SPECIES_ELECTRODE + 500},
- [SPECIES_EXEGGCUTE] = {gMonShinyPalette_Exeggcute, SPECIES_EXEGGCUTE + 500},
- [SPECIES_EXEGGUTOR] = {gMonShinyPalette_Exeggutor, SPECIES_EXEGGUTOR + 500},
- [SPECIES_CUBONE] = {gMonShinyPalette_Cubone, SPECIES_CUBONE + 500},
- [SPECIES_MAROWAK] = {gMonShinyPalette_Marowak, SPECIES_MAROWAK + 500},
- [SPECIES_HITMONLEE] = {gMonShinyPalette_Hitmonlee, SPECIES_HITMONLEE + 500},
- [SPECIES_HITMONCHAN] = {gMonShinyPalette_Hitmonchan, SPECIES_HITMONCHAN + 500},
- [SPECIES_LICKITUNG] = {gMonShinyPalette_Lickitung, SPECIES_LICKITUNG + 500},
- [SPECIES_KOFFING] = {gMonShinyPalette_Koffing, SPECIES_KOFFING + 500},
- [SPECIES_WEEZING] = {gMonShinyPalette_Weezing, SPECIES_WEEZING + 500},
- [SPECIES_RHYHORN] = {gMonShinyPalette_Rhyhorn, SPECIES_RHYHORN + 500},
- [SPECIES_RHYDON] = {gMonShinyPalette_Rhydon, SPECIES_RHYDON + 500},
- [SPECIES_CHANSEY] = {gMonShinyPalette_Chansey, SPECIES_CHANSEY + 500},
- [SPECIES_TANGELA] = {gMonShinyPalette_Tangela, SPECIES_TANGELA + 500},
- [SPECIES_KANGASKHAN] = {gMonShinyPalette_Kangaskhan, SPECIES_KANGASKHAN + 500},
- [SPECIES_HORSEA] = {gMonShinyPalette_Horsea, SPECIES_HORSEA + 500},
- [SPECIES_SEADRA] = {gMonShinyPalette_Seadra, SPECIES_SEADRA + 500},
- [SPECIES_GOLDEEN] = {gMonShinyPalette_Goldeen, SPECIES_GOLDEEN + 500},
- [SPECIES_SEAKING] = {gMonShinyPalette_Seaking, SPECIES_SEAKING + 500},
- [SPECIES_STARYU] = {gMonShinyPalette_Staryu, SPECIES_STARYU + 500},
- [SPECIES_STARMIE] = {gMonShinyPalette_Starmie, SPECIES_STARMIE + 500},
- [SPECIES_MR_MIME] = {gMonShinyPalette_Mrmime, SPECIES_MR_MIME + 500},
- [SPECIES_SCYTHER] = {gMonShinyPalette_Scyther, SPECIES_SCYTHER + 500},
- [SPECIES_JYNX] = {gMonShinyPalette_Jynx, SPECIES_JYNX + 500},
- [SPECIES_ELECTABUZZ] = {gMonShinyPalette_Electabuzz, SPECIES_ELECTABUZZ + 500},
- [SPECIES_MAGMAR] = {gMonShinyPalette_Magmar, SPECIES_MAGMAR + 500},
- [SPECIES_PINSIR] = {gMonShinyPalette_Pinsir, SPECIES_PINSIR + 500},
- [SPECIES_TAUROS] = {gMonShinyPalette_Tauros, SPECIES_TAUROS + 500},
- [SPECIES_MAGIKARP] = {gMonShinyPalette_Magikarp, SPECIES_MAGIKARP + 500},
- [SPECIES_GYARADOS] = {gMonShinyPalette_Gyarados, SPECIES_GYARADOS + 500},
- [SPECIES_LAPRAS] = {gMonShinyPalette_Lapras, SPECIES_LAPRAS + 500},
- [SPECIES_DITTO] = {gMonShinyPalette_Ditto, SPECIES_DITTO + 500},
- [SPECIES_EEVEE] = {gMonShinyPalette_Eevee, SPECIES_EEVEE + 500},
- [SPECIES_VAPOREON] = {gMonShinyPalette_Vaporeon, SPECIES_VAPOREON + 500},
- [SPECIES_JOLTEON] = {gMonShinyPalette_Jolteon, SPECIES_JOLTEON + 500},
- [SPECIES_FLAREON] = {gMonShinyPalette_Flareon, SPECIES_FLAREON + 500},
- [SPECIES_PORYGON] = {gMonShinyPalette_Porygon, SPECIES_PORYGON + 500},
- [SPECIES_OMANYTE] = {gMonShinyPalette_Omanyte, SPECIES_OMANYTE + 500},
- [SPECIES_OMASTAR] = {gMonShinyPalette_Omastar, SPECIES_OMASTAR + 500},
- [SPECIES_KABUTO] = {gMonShinyPalette_Kabuto, SPECIES_KABUTO + 500},
- [SPECIES_KABUTOPS] = {gMonShinyPalette_Kabutops, SPECIES_KABUTOPS + 500},
- [SPECIES_AERODACTYL] = {gMonShinyPalette_Aerodactyl, SPECIES_AERODACTYL + 500},
- [SPECIES_SNORLAX] = {gMonShinyPalette_Snorlax, SPECIES_SNORLAX + 500},
- [SPECIES_ARTICUNO] = {gMonShinyPalette_Articuno, SPECIES_ARTICUNO + 500},
- [SPECIES_ZAPDOS] = {gMonShinyPalette_Zapdos, SPECIES_ZAPDOS + 500},
- [SPECIES_MOLTRES] = {gMonShinyPalette_Moltres, SPECIES_MOLTRES + 500},
- [SPECIES_DRATINI] = {gMonShinyPalette_Dratini, SPECIES_DRATINI + 500},
- [SPECIES_DRAGONAIR] = {gMonShinyPalette_Dragonair, SPECIES_DRAGONAIR + 500},
- [SPECIES_DRAGONITE] = {gMonShinyPalette_Dragonite, SPECIES_DRAGONITE + 500},
- [SPECIES_MEWTWO] = {gMonShinyPalette_Mewtwo, SPECIES_MEWTWO + 500},
- [SPECIES_MEW] = {gMonShinyPalette_Mew, SPECIES_MEW + 500},
- [SPECIES_CHIKORITA] = {gMonShinyPalette_Chikorita, SPECIES_CHIKORITA + 500},
- [SPECIES_BAYLEEF] = {gMonShinyPalette_Bayleef, SPECIES_BAYLEEF + 500},
- [SPECIES_MEGANIUM] = {gMonShinyPalette_Meganium, SPECIES_MEGANIUM + 500},
- [SPECIES_CYNDAQUIL] = {gMonShinyPalette_Cyndaquil, SPECIES_CYNDAQUIL + 500},
- [SPECIES_QUILAVA] = {gMonShinyPalette_Quilava, SPECIES_QUILAVA + 500},
- [SPECIES_TYPHLOSION] = {gMonShinyPalette_Typhlosion, SPECIES_TYPHLOSION + 500},
- [SPECIES_TOTODILE] = {gMonShinyPalette_Totodile, SPECIES_TOTODILE + 500},
- [SPECIES_CROCONAW] = {gMonShinyPalette_Croconaw, SPECIES_CROCONAW + 500},
- [SPECIES_FERALIGATR] = {gMonShinyPalette_Feraligatr, SPECIES_FERALIGATR + 500},
- [SPECIES_SENTRET] = {gMonShinyPalette_Sentret, SPECIES_SENTRET + 500},
- [SPECIES_FURRET] = {gMonShinyPalette_Furret, SPECIES_FURRET + 500},
- [SPECIES_HOOTHOOT] = {gMonShinyPalette_Hoothoot, SPECIES_HOOTHOOT + 500},
- [SPECIES_NOCTOWL] = {gMonShinyPalette_Noctowl, SPECIES_NOCTOWL + 500},
- [SPECIES_LEDYBA] = {gMonShinyPalette_Ledyba, SPECIES_LEDYBA + 500},
- [SPECIES_LEDIAN] = {gMonShinyPalette_Ledian, SPECIES_LEDIAN + 500},
- [SPECIES_SPINARAK] = {gMonShinyPalette_Spinarak, SPECIES_SPINARAK + 500},
- [SPECIES_ARIADOS] = {gMonShinyPalette_Ariados, SPECIES_ARIADOS + 500},
- [SPECIES_CROBAT] = {gMonShinyPalette_Crobat, SPECIES_CROBAT + 500},
- [SPECIES_CHINCHOU] = {gMonShinyPalette_Chinchou, SPECIES_CHINCHOU + 500},
- [SPECIES_LANTURN] = {gMonShinyPalette_Lanturn, SPECIES_LANTURN + 500},
- [SPECIES_PICHU] = {gMonShinyPalette_Pichu, SPECIES_PICHU + 500},
- [SPECIES_CLEFFA] = {gMonShinyPalette_Cleffa, SPECIES_CLEFFA + 500},
- [SPECIES_IGGLYBUFF] = {gMonShinyPalette_Igglybuff, SPECIES_IGGLYBUFF + 500},
- [SPECIES_TOGEPI] = {gMonShinyPalette_Togepi, SPECIES_TOGEPI + 500},
- [SPECIES_TOGETIC] = {gMonShinyPalette_Togetic, SPECIES_TOGETIC + 500},
- [SPECIES_NATU] = {gMonShinyPalette_Natu, SPECIES_NATU + 500},
- [SPECIES_XATU] = {gMonShinyPalette_Xatu, SPECIES_XATU + 500},
- [SPECIES_MAREEP] = {gMonShinyPalette_Mareep, SPECIES_MAREEP + 500},
- [SPECIES_FLAAFFY] = {gMonShinyPalette_Flaaffy, SPECIES_FLAAFFY + 500},
- [SPECIES_AMPHAROS] = {gMonShinyPalette_Ampharos, SPECIES_AMPHAROS + 500},
- [SPECIES_BELLOSSOM] = {gMonShinyPalette_Bellossom, SPECIES_BELLOSSOM + 500},
- [SPECIES_MARILL] = {gMonShinyPalette_Marill, SPECIES_MARILL + 500},
- [SPECIES_AZUMARILL] = {gMonShinyPalette_Azumarill, SPECIES_AZUMARILL + 500},
- [SPECIES_SUDOWOODO] = {gMonShinyPalette_Sudowoodo, SPECIES_SUDOWOODO + 500},
- [SPECIES_POLITOED] = {gMonShinyPalette_Politoed, SPECIES_POLITOED + 500},
- [SPECIES_HOPPIP] = {gMonShinyPalette_Hoppip, SPECIES_HOPPIP + 500},
- [SPECIES_SKIPLOOM] = {gMonShinyPalette_Skiploom, SPECIES_SKIPLOOM + 500},
- [SPECIES_JUMPLUFF] = {gMonShinyPalette_Jumpluff, SPECIES_JUMPLUFF + 500},
- [SPECIES_AIPOM] = {gMonShinyPalette_Aipom, SPECIES_AIPOM + 500},
- [SPECIES_SUNKERN] = {gMonShinyPalette_Sunkern, SPECIES_SUNKERN + 500},
- [SPECIES_SUNFLORA] = {gMonShinyPalette_Sunflora, SPECIES_SUNFLORA + 500},
- [SPECIES_YANMA] = {gMonShinyPalette_Yanma, SPECIES_YANMA + 500},
- [SPECIES_WOOPER] = {gMonShinyPalette_Wooper, SPECIES_WOOPER + 500},
- [SPECIES_QUAGSIRE] = {gMonShinyPalette_Quagsire, SPECIES_QUAGSIRE + 500},
- [SPECIES_ESPEON] = {gMonShinyPalette_Espeon, SPECIES_ESPEON + 500},
- [SPECIES_UMBREON] = {gMonShinyPalette_Umbreon, SPECIES_UMBREON + 500},
- [SPECIES_MURKROW] = {gMonShinyPalette_Murkrow, SPECIES_MURKROW + 500},
- [SPECIES_SLOWKING] = {gMonShinyPalette_Slowking, SPECIES_SLOWKING + 500},
- [SPECIES_MISDREAVUS] = {gMonShinyPalette_Misdreavus, SPECIES_MISDREAVUS + 500},
- [SPECIES_UNOWN] = {gMonShinyPalette_Unown, SPECIES_UNOWN + 500},
- [SPECIES_WOBBUFFET] = {gMonShinyPalette_Wobbuffet, SPECIES_WOBBUFFET + 500},
- [SPECIES_GIRAFARIG] = {gMonShinyPalette_Girafarig, SPECIES_GIRAFARIG + 500},
- [SPECIES_PINECO] = {gMonShinyPalette_Pineco, SPECIES_PINECO + 500},
- [SPECIES_FORRETRESS] = {gMonShinyPalette_Forretress, SPECIES_FORRETRESS + 500},
- [SPECIES_DUNSPARCE] = {gMonShinyPalette_Dunsparce, SPECIES_DUNSPARCE + 500},
- [SPECIES_GLIGAR] = {gMonShinyPalette_Gligar, SPECIES_GLIGAR + 500},
- [SPECIES_STEELIX] = {gMonShinyPalette_Steelix, SPECIES_STEELIX + 500},
- [SPECIES_SNUBBULL] = {gMonShinyPalette_Snubbull, SPECIES_SNUBBULL + 500},
- [SPECIES_GRANBULL] = {gMonShinyPalette_Granbull, SPECIES_GRANBULL + 500},
- [SPECIES_QWILFISH] = {gMonShinyPalette_Qwilfish, SPECIES_QWILFISH + 500},
- [SPECIES_SCIZOR] = {gMonShinyPalette_Scizor, SPECIES_SCIZOR + 500},
- [SPECIES_SHUCKLE] = {gMonShinyPalette_Shuckle, SPECIES_SHUCKLE + 500},
- [SPECIES_HERACROSS] = {gMonShinyPalette_Heracross, SPECIES_HERACROSS + 500},
- [SPECIES_SNEASEL] = {gMonShinyPalette_Sneasel, SPECIES_SNEASEL + 500},
- [SPECIES_TEDDIURSA] = {gMonShinyPalette_Teddiursa, SPECIES_TEDDIURSA + 500},
- [SPECIES_URSARING] = {gMonShinyPalette_Ursaring, SPECIES_URSARING + 500},
- [SPECIES_SLUGMA] = {gMonShinyPalette_Slugma, SPECIES_SLUGMA + 500},
- [SPECIES_MAGCARGO] = {gMonShinyPalette_Magcargo, SPECIES_MAGCARGO + 500},
- [SPECIES_SWINUB] = {gMonShinyPalette_Swinub, SPECIES_SWINUB + 500},
- [SPECIES_PILOSWINE] = {gMonShinyPalette_Piloswine, SPECIES_PILOSWINE + 500},
- [SPECIES_CORSOLA] = {gMonShinyPalette_Corsola, SPECIES_CORSOLA + 500},
- [SPECIES_REMORAID] = {gMonShinyPalette_Remoraid, SPECIES_REMORAID + 500},
- [SPECIES_OCTILLERY] = {gMonShinyPalette_Octillery, SPECIES_OCTILLERY + 500},
- [SPECIES_DELIBIRD] = {gMonShinyPalette_Delibird, SPECIES_DELIBIRD + 500},
- [SPECIES_MANTINE] = {gMonShinyPalette_Mantine, SPECIES_MANTINE + 500},
- [SPECIES_SKARMORY] = {gMonShinyPalette_Skarmory, SPECIES_SKARMORY + 500},
- [SPECIES_HOUNDOUR] = {gMonShinyPalette_Houndour, SPECIES_HOUNDOUR + 500},
- [SPECIES_HOUNDOOM] = {gMonShinyPalette_Houndoom, SPECIES_HOUNDOOM + 500},
- [SPECIES_KINGDRA] = {gMonShinyPalette_Kingdra, SPECIES_KINGDRA + 500},
- [SPECIES_PHANPY] = {gMonShinyPalette_Phanpy, SPECIES_PHANPY + 500},
- [SPECIES_DONPHAN] = {gMonShinyPalette_Donphan, SPECIES_DONPHAN + 500},
- [SPECIES_PORYGON2] = {gMonShinyPalette_Porygon2, SPECIES_PORYGON2 + 500},
- [SPECIES_STANTLER] = {gMonShinyPalette_Stantler, SPECIES_STANTLER + 500},
- [SPECIES_SMEARGLE] = {gMonShinyPalette_Smeargle, SPECIES_SMEARGLE + 500},
- [SPECIES_TYROGUE] = {gMonShinyPalette_Tyrogue, SPECIES_TYROGUE + 500},
- [SPECIES_HITMONTOP] = {gMonShinyPalette_Hitmontop, SPECIES_HITMONTOP + 500},
- [SPECIES_SMOOCHUM] = {gMonShinyPalette_Smoochum, SPECIES_SMOOCHUM + 500},
- [SPECIES_ELEKID] = {gMonShinyPalette_Elekid, SPECIES_ELEKID + 500},
- [SPECIES_MAGBY] = {gMonShinyPalette_Magby, SPECIES_MAGBY + 500},
- [SPECIES_MILTANK] = {gMonShinyPalette_Miltank, SPECIES_MILTANK + 500},
- [SPECIES_BLISSEY] = {gMonShinyPalette_Blissey, SPECIES_BLISSEY + 500},
- [SPECIES_RAIKOU] = {gMonShinyPalette_Raikou, SPECIES_RAIKOU + 500},
- [SPECIES_ENTEI] = {gMonShinyPalette_Entei, SPECIES_ENTEI + 500},
- [SPECIES_SUICUNE] = {gMonShinyPalette_Suicune, SPECIES_SUICUNE + 500},
- [SPECIES_LARVITAR] = {gMonShinyPalette_Larvitar, SPECIES_LARVITAR + 500},
- [SPECIES_PUPITAR] = {gMonShinyPalette_Pupitar, SPECIES_PUPITAR + 500},
- [SPECIES_TYRANITAR] = {gMonShinyPalette_Tyranitar, SPECIES_TYRANITAR + 500},
- [SPECIES_LUGIA] = {gMonShinyPalette_Lugia, SPECIES_LUGIA + 500},
- [SPECIES_HO_OH] = {gMonShinyPalette_HoOh, SPECIES_HO_OH + 500},
- [SPECIES_CELEBI] = {gMonShinyPalette_Celebi, SPECIES_CELEBI + 500},
- [SPECIES_OLD_UNOWN_B] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_B + 500},
- [SPECIES_OLD_UNOWN_C] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_C + 500},
- [SPECIES_OLD_UNOWN_D] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_D + 500},
- [SPECIES_OLD_UNOWN_E] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_E + 500},
- [SPECIES_OLD_UNOWN_F] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_F + 500},
- [SPECIES_OLD_UNOWN_G] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_G + 500},
- [SPECIES_OLD_UNOWN_H] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_H + 500},
- [SPECIES_OLD_UNOWN_I] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_I + 500},
- [SPECIES_OLD_UNOWN_J] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_J + 500},
- [SPECIES_OLD_UNOWN_K] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_K + 500},
- [SPECIES_OLD_UNOWN_L] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_L + 500},
- [SPECIES_OLD_UNOWN_M] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_M + 500},
- [SPECIES_OLD_UNOWN_N] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_N + 500},
- [SPECIES_OLD_UNOWN_O] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_O + 500},
- [SPECIES_OLD_UNOWN_P] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_P + 500},
- [SPECIES_OLD_UNOWN_Q] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_Q + 500},
- [SPECIES_OLD_UNOWN_R] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_R + 500},
- [SPECIES_OLD_UNOWN_S] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_S + 500},
- [SPECIES_OLD_UNOWN_T] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_T + 500},
- [SPECIES_OLD_UNOWN_U] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_U + 500},
- [SPECIES_OLD_UNOWN_V] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_V + 500},
- [SPECIES_OLD_UNOWN_W] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_W + 500},
- [SPECIES_OLD_UNOWN_X] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_X + 500},
- [SPECIES_OLD_UNOWN_Y] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_Y + 500},
- [SPECIES_OLD_UNOWN_Z] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_Z + 500},
- [SPECIES_TREECKO] = {gMonShinyPalette_Treecko, SPECIES_TREECKO + 500},
- [SPECIES_GROVYLE] = {gMonShinyPalette_Grovyle, SPECIES_GROVYLE + 500},
- [SPECIES_SCEPTILE] = {gMonShinyPalette_Sceptile, SPECIES_SCEPTILE + 500},
- [SPECIES_TORCHIC] = {gMonShinyPalette_Torchic, SPECIES_TORCHIC + 500},
- [SPECIES_COMBUSKEN] = {gMonShinyPalette_Combusken, SPECIES_COMBUSKEN + 500},
- [SPECIES_BLAZIKEN] = {gMonShinyPalette_Blaziken, SPECIES_BLAZIKEN + 500},
- [SPECIES_MUDKIP] = {gMonShinyPalette_Mudkip, SPECIES_MUDKIP + 500},
- [SPECIES_MARSHTOMP] = {gMonShinyPalette_Marshtomp, SPECIES_MARSHTOMP + 500},
- [SPECIES_SWAMPERT] = {gMonShinyPalette_Swampert, SPECIES_SWAMPERT + 500},
- [SPECIES_POOCHYENA] = {gMonShinyPalette_Poochyena, SPECIES_POOCHYENA + 500},
- [SPECIES_MIGHTYENA] = {gMonShinyPalette_Mightyena, SPECIES_MIGHTYENA + 500},
- [SPECIES_ZIGZAGOON] = {gMonShinyPalette_Zigzagoon, SPECIES_ZIGZAGOON + 500},
- [SPECIES_LINOONE] = {gMonShinyPalette_Linoone, SPECIES_LINOONE + 500},
- [SPECIES_WURMPLE] = {gMonShinyPalette_Wurmple, SPECIES_WURMPLE + 500},
- [SPECIES_SILCOON] = {gMonShinyPalette_Silcoon, SPECIES_SILCOON + 500},
- [SPECIES_BEAUTIFLY] = {gMonShinyPalette_Beautifly, SPECIES_BEAUTIFLY + 500},
- [SPECIES_CASCOON] = {gMonShinyPalette_Cascoon, SPECIES_CASCOON + 500},
- [SPECIES_DUSTOX] = {gMonShinyPalette_Dustox, SPECIES_DUSTOX + 500},
- [SPECIES_LOTAD] = {gMonShinyPalette_Lotad, SPECIES_LOTAD + 500},
- [SPECIES_LOMBRE] = {gMonShinyPalette_Lombre, SPECIES_LOMBRE + 500},
- [SPECIES_LUDICOLO] = {gMonShinyPalette_Ludicolo, SPECIES_LUDICOLO + 500},
- [SPECIES_SEEDOT] = {gMonShinyPalette_Seedot, SPECIES_SEEDOT + 500},
- [SPECIES_NUZLEAF] = {gMonShinyPalette_Nuzleaf, SPECIES_NUZLEAF + 500},
- [SPECIES_SHIFTRY] = {gMonShinyPalette_Shiftry, SPECIES_SHIFTRY + 500},
- [SPECIES_NINCADA] = {gMonShinyPalette_Nincada, SPECIES_NINCADA + 500},
- [SPECIES_NINJASK] = {gMonShinyPalette_Ninjask, SPECIES_NINJASK + 500},
- [SPECIES_SHEDINJA] = {gMonShinyPalette_Shedinja, SPECIES_SHEDINJA + 500},
- [SPECIES_TAILLOW] = {gMonShinyPalette_Taillow, SPECIES_TAILLOW + 500},
- [SPECIES_SWELLOW] = {gMonShinyPalette_Swellow, SPECIES_SWELLOW + 500},
- [SPECIES_SHROOMISH] = {gMonShinyPalette_Shroomish, SPECIES_SHROOMISH + 500},
- [SPECIES_BRELOOM] = {gMonShinyPalette_Breloom, SPECIES_BRELOOM + 500},
- [SPECIES_SPINDA] = {gMonShinyPalette_Spinda, SPECIES_SPINDA + 500},
- [SPECIES_WINGULL] = {gMonShinyPalette_Wingull, SPECIES_WINGULL + 500},
- [SPECIES_PELIPPER] = {gMonShinyPalette_Pelipper, SPECIES_PELIPPER + 500},
- [SPECIES_SURSKIT] = {gMonShinyPalette_Surskit, SPECIES_SURSKIT + 500},
- [SPECIES_MASQUERAIN] = {gMonShinyPalette_Masquerain, SPECIES_MASQUERAIN + 500},
- [SPECIES_WAILMER] = {gMonShinyPalette_Wailmer, SPECIES_WAILMER + 500},
- [SPECIES_WAILORD] = {gMonShinyPalette_Wailord, SPECIES_WAILORD + 500},
- [SPECIES_SKITTY] = {gMonShinyPalette_Skitty, SPECIES_SKITTY + 500},
- [SPECIES_DELCATTY] = {gMonShinyPalette_Delcatty, SPECIES_DELCATTY + 500},
- [SPECIES_KECLEON] = {gMonShinyPalette_Kecleon, SPECIES_KECLEON + 500},
- [SPECIES_BALTOY] = {gMonShinyPalette_Baltoy, SPECIES_BALTOY + 500},
- [SPECIES_CLAYDOL] = {gMonShinyPalette_Claydol, SPECIES_CLAYDOL + 500},
- [SPECIES_NOSEPASS] = {gMonShinyPalette_Nosepass, SPECIES_NOSEPASS + 500},
- [SPECIES_TORKOAL] = {gMonShinyPalette_Torkoal, SPECIES_TORKOAL + 500},
- [SPECIES_SABLEYE] = {gMonShinyPalette_Sableye, SPECIES_SABLEYE + 500},
- [SPECIES_BARBOACH] = {gMonShinyPalette_Barboach, SPECIES_BARBOACH + 500},
- [SPECIES_WHISCASH] = {gMonShinyPalette_Whiscash, SPECIES_WHISCASH + 500},
- [SPECIES_LUVDISC] = {gMonShinyPalette_Luvdisc, SPECIES_LUVDISC + 500},
- [SPECIES_CORPHISH] = {gMonShinyPalette_Corphish, SPECIES_CORPHISH + 500},
- [SPECIES_CRAWDAUNT] = {gMonShinyPalette_Crawdaunt, SPECIES_CRAWDAUNT + 500},
- [SPECIES_FEEBAS] = {gMonShinyPalette_Feebas, SPECIES_FEEBAS + 500},
- [SPECIES_MILOTIC] = {gMonShinyPalette_Milotic, SPECIES_MILOTIC + 500},
- [SPECIES_CARVANHA] = {gMonShinyPalette_Carvanha, SPECIES_CARVANHA + 500},
- [SPECIES_SHARPEDO] = {gMonShinyPalette_Sharpedo, SPECIES_SHARPEDO + 500},
- [SPECIES_TRAPINCH] = {gMonShinyPalette_Trapinch, SPECIES_TRAPINCH + 500},
- [SPECIES_VIBRAVA] = {gMonShinyPalette_Vibrava, SPECIES_VIBRAVA + 500},
- [SPECIES_FLYGON] = {gMonShinyPalette_Flygon, SPECIES_FLYGON + 500},
- [SPECIES_MAKUHITA] = {gMonShinyPalette_Makuhita, SPECIES_MAKUHITA + 500},
- [SPECIES_HARIYAMA] = {gMonShinyPalette_Hariyama, SPECIES_HARIYAMA + 500},
- [SPECIES_ELECTRIKE] = {gMonShinyPalette_Electrike, SPECIES_ELECTRIKE + 500},
- [SPECIES_MANECTRIC] = {gMonShinyPalette_Manectric, SPECIES_MANECTRIC + 500},
- [SPECIES_NUMEL] = {gMonShinyPalette_Numel, SPECIES_NUMEL + 500},
- [SPECIES_CAMERUPT] = {gMonShinyPalette_Camerupt, SPECIES_CAMERUPT + 500},
- [SPECIES_SPHEAL] = {gMonShinyPalette_Spheal, SPECIES_SPHEAL + 500},
- [SPECIES_SEALEO] = {gMonShinyPalette_Sealeo, SPECIES_SEALEO + 500},
- [SPECIES_WALREIN] = {gMonShinyPalette_Walrein, SPECIES_WALREIN + 500},
- [SPECIES_CACNEA] = {gMonShinyPalette_Cacnea, SPECIES_CACNEA + 500},
- [SPECIES_CACTURNE] = {gMonShinyPalette_Cacturne, SPECIES_CACTURNE + 500},
- [SPECIES_SNORUNT] = {gMonShinyPalette_Snorunt, SPECIES_SNORUNT + 500},
- [SPECIES_GLALIE] = {gMonShinyPalette_Glalie, SPECIES_GLALIE + 500},
- [SPECIES_LUNATONE] = {gMonShinyPalette_Lunatone, SPECIES_LUNATONE + 500},
- [SPECIES_SOLROCK] = {gMonShinyPalette_Solrock, SPECIES_SOLROCK + 500},
- [SPECIES_AZURILL] = {gMonShinyPalette_Azurill, SPECIES_AZURILL + 500},
- [SPECIES_SPOINK] = {gMonShinyPalette_Spoink, SPECIES_SPOINK + 500},
- [SPECIES_GRUMPIG] = {gMonShinyPalette_Grumpig, SPECIES_GRUMPIG + 500},
- [SPECIES_PLUSLE] = {gMonShinyPalette_Plusle, SPECIES_PLUSLE + 500},
- [SPECIES_MINUN] = {gMonShinyPalette_Minun, SPECIES_MINUN + 500},
- [SPECIES_MAWILE] = {gMonShinyPalette_Mawile, SPECIES_MAWILE + 500},
- [SPECIES_MEDITITE] = {gMonShinyPalette_Meditite, SPECIES_MEDITITE + 500},
- [SPECIES_MEDICHAM] = {gMonShinyPalette_Medicham, SPECIES_MEDICHAM + 500},
- [SPECIES_SWABLU] = {gMonShinyPalette_Swablu, SPECIES_SWABLU + 500},
- [SPECIES_ALTARIA] = {gMonShinyPalette_Altaria, SPECIES_ALTARIA + 500},
- [SPECIES_WYNAUT] = {gMonShinyPalette_Wynaut, SPECIES_WYNAUT + 500},
- [SPECIES_DUSKULL] = {gMonShinyPalette_Duskull, SPECIES_DUSKULL + 500},
- [SPECIES_DUSCLOPS] = {gMonShinyPalette_Dusclops, SPECIES_DUSCLOPS + 500},
- [SPECIES_ROSELIA] = {gMonShinyPalette_Roselia, SPECIES_ROSELIA + 500},
- [SPECIES_SLAKOTH] = {gMonShinyPalette_Slakoth, SPECIES_SLAKOTH + 500},
- [SPECIES_VIGOROTH] = {gMonShinyPalette_Vigoroth, SPECIES_VIGOROTH + 500},
- [SPECIES_SLAKING] = {gMonShinyPalette_Slaking, SPECIES_SLAKING + 500},
- [SPECIES_GULPIN] = {gMonShinyPalette_Gulpin, SPECIES_GULPIN + 500},
- [SPECIES_SWALOT] = {gMonShinyPalette_Swalot, SPECIES_SWALOT + 500},
- [SPECIES_TROPIUS] = {gMonShinyPalette_Tropius, SPECIES_TROPIUS + 500},
- [SPECIES_WHISMUR] = {gMonShinyPalette_Whismur, SPECIES_WHISMUR + 500},
- [SPECIES_LOUDRED] = {gMonShinyPalette_Loudred, SPECIES_LOUDRED + 500},
- [SPECIES_EXPLOUD] = {gMonShinyPalette_Exploud, SPECIES_EXPLOUD + 500},
- [SPECIES_CLAMPERL] = {gMonShinyPalette_Clamperl, SPECIES_CLAMPERL + 500},
- [SPECIES_HUNTAIL] = {gMonShinyPalette_Huntail, SPECIES_HUNTAIL + 500},
- [SPECIES_GOREBYSS] = {gMonShinyPalette_Gorebyss, SPECIES_GOREBYSS + 500},
- [SPECIES_ABSOL] = {gMonShinyPalette_Absol, SPECIES_ABSOL + 500},
- [SPECIES_SHUPPET] = {gMonShinyPalette_Shuppet, SPECIES_SHUPPET + 500},
- [SPECIES_BANETTE] = {gMonShinyPalette_Banette, SPECIES_BANETTE + 500},
- [SPECIES_SEVIPER] = {gMonShinyPalette_Seviper, SPECIES_SEVIPER + 500},
- [SPECIES_ZANGOOSE] = {gMonShinyPalette_Zangoose, SPECIES_ZANGOOSE + 500},
- [SPECIES_RELICANTH] = {gMonShinyPalette_Relicanth, SPECIES_RELICANTH + 500},
- [SPECIES_ARON] = {gMonShinyPalette_Aron, SPECIES_ARON + 500},
- [SPECIES_LAIRON] = {gMonShinyPalette_Lairon, SPECIES_LAIRON + 500},
- [SPECIES_AGGRON] = {gMonShinyPalette_Aggron, SPECIES_AGGRON + 500},
- [SPECIES_CASTFORM] = {gMonShinyPalette_Castform, SPECIES_CASTFORM + 500},
- [SPECIES_VOLBEAT] = {gMonShinyPalette_Volbeat, SPECIES_VOLBEAT + 500},
- [SPECIES_ILLUMISE] = {gMonShinyPalette_Illumise, SPECIES_ILLUMISE + 500},
- [SPECIES_LILEEP] = {gMonShinyPalette_Lileep, SPECIES_LILEEP + 500},
- [SPECIES_CRADILY] = {gMonShinyPalette_Cradily, SPECIES_CRADILY + 500},
- [SPECIES_ANORITH] = {gMonShinyPalette_Anorith, SPECIES_ANORITH + 500},
- [SPECIES_ARMALDO] = {gMonShinyPalette_Armaldo, SPECIES_ARMALDO + 500},
- [SPECIES_RALTS] = {gMonShinyPalette_Ralts, SPECIES_RALTS + 500},
- [SPECIES_KIRLIA] = {gMonShinyPalette_Kirlia, SPECIES_KIRLIA + 500},
- [SPECIES_GARDEVOIR] = {gMonShinyPalette_Gardevoir, SPECIES_GARDEVOIR + 500},
- [SPECIES_BAGON] = {gMonShinyPalette_Bagon, SPECIES_BAGON + 500},
- [SPECIES_SHELGON] = {gMonShinyPalette_Shelgon, SPECIES_SHELGON + 500},
- [SPECIES_SALAMENCE] = {gMonShinyPalette_Salamence, SPECIES_SALAMENCE + 500},
- [SPECIES_BELDUM] = {gMonShinyPalette_Beldum, SPECIES_BELDUM + 500},
- [SPECIES_METANG] = {gMonShinyPalette_Metang, SPECIES_METANG + 500},
- [SPECIES_METAGROSS] = {gMonShinyPalette_Metagross, SPECIES_METAGROSS + 500},
- [SPECIES_REGIROCK] = {gMonShinyPalette_Regirock, SPECIES_REGIROCK + 500},
- [SPECIES_REGICE] = {gMonShinyPalette_Regice, SPECIES_REGICE + 500},
- [SPECIES_REGISTEEL] = {gMonShinyPalette_Registeel, SPECIES_REGISTEEL + 500},
- [SPECIES_KYOGRE] = {gMonShinyPalette_Kyogre, SPECIES_KYOGRE + 500},
- [SPECIES_GROUDON] = {gMonShinyPalette_Groudon, SPECIES_GROUDON + 500},
- [SPECIES_RAYQUAZA] = {gMonShinyPalette_Rayquaza, SPECIES_RAYQUAZA + 500},
- [SPECIES_LATIAS] = {gMonShinyPalette_Latias, SPECIES_LATIAS + 500},
- [SPECIES_LATIOS] = {gMonShinyPalette_Latios, SPECIES_LATIOS + 500},
- [SPECIES_JIRACHI] = {gMonShinyPalette_Jirachi, SPECIES_JIRACHI + 500},
- [SPECIES_DEOXYS] = {gMonShinyPalette_Deoxys, SPECIES_DEOXYS + 500},
- [SPECIES_CHIMECHO] = {gMonShinyPalette_Chimecho, SPECIES_CHIMECHO + 500},
- [SPECIES_EGG] = {gMonPalette_Egg, SPECIES_EGG + 500},
- [SPECIES_UNOWN_B] = {gMonShinyPalette_Unown, SPECIES_UNOWN_B + 500},
- [SPECIES_UNOWN_C] = {gMonShinyPalette_Unown, SPECIES_UNOWN_C + 500},
- [SPECIES_UNOWN_D] = {gMonShinyPalette_Unown, SPECIES_UNOWN_D + 500},
- [SPECIES_UNOWN_E] = {gMonShinyPalette_Unown, SPECIES_UNOWN_E + 500},
- [SPECIES_UNOWN_F] = {gMonShinyPalette_Unown, SPECIES_UNOWN_F + 500},
- [SPECIES_UNOWN_G] = {gMonShinyPalette_Unown, SPECIES_UNOWN_G + 500},
- [SPECIES_UNOWN_H] = {gMonShinyPalette_Unown, SPECIES_UNOWN_H + 500},
- [SPECIES_UNOWN_I] = {gMonShinyPalette_Unown, SPECIES_UNOWN_I + 500},
- [SPECIES_UNOWN_J] = {gMonShinyPalette_Unown, SPECIES_UNOWN_J + 500},
- [SPECIES_UNOWN_K] = {gMonShinyPalette_Unown, SPECIES_UNOWN_K + 500},
- [SPECIES_UNOWN_L] = {gMonShinyPalette_Unown, SPECIES_UNOWN_L + 500},
- [SPECIES_UNOWN_M] = {gMonShinyPalette_Unown, SPECIES_UNOWN_M + 500},
- [SPECIES_UNOWN_N] = {gMonShinyPalette_Unown, SPECIES_UNOWN_N + 500},
- [SPECIES_UNOWN_O] = {gMonShinyPalette_Unown, SPECIES_UNOWN_O + 500},
- [SPECIES_UNOWN_P] = {gMonShinyPalette_Unown, SPECIES_UNOWN_P + 500},
- [SPECIES_UNOWN_Q] = {gMonShinyPalette_Unown, SPECIES_UNOWN_Q + 500},
- [SPECIES_UNOWN_R] = {gMonShinyPalette_Unown, SPECIES_UNOWN_R + 500},
- [SPECIES_UNOWN_S] = {gMonShinyPalette_Unown, SPECIES_UNOWN_S + 500},
- [SPECIES_UNOWN_T] = {gMonShinyPalette_Unown, SPECIES_UNOWN_T + 500},
- [SPECIES_UNOWN_U] = {gMonShinyPalette_Unown, SPECIES_UNOWN_U + 500},
- [SPECIES_UNOWN_V] = {gMonShinyPalette_Unown, SPECIES_UNOWN_V + 500},
- [SPECIES_UNOWN_W] = {gMonShinyPalette_Unown, SPECIES_UNOWN_W + 500},
- [SPECIES_UNOWN_X] = {gMonShinyPalette_Unown, SPECIES_UNOWN_X + 500},
- [SPECIES_UNOWN_Y] = {gMonShinyPalette_Unown, SPECIES_UNOWN_Y + 500},
- [SPECIES_UNOWN_Z] = {gMonShinyPalette_Unown, SPECIES_UNOWN_Z + 500},
- [SPECIES_UNOWN_EMARK] = {gMonShinyPalette_Unown, SPECIES_UNOWN_EMARK + 500},
- [SPECIES_UNOWN_QMARK] = {gMonShinyPalette_Unown, SPECIES_UNOWN_QMARK + 500},
+ SPECIES_SHINY_PAL(NONE, gMonShinyPalette_CircledQuestionMark),
+ SPECIES_SHINY_PAL(BULBASAUR, gMonShinyPalette_Bulbasaur),
+ SPECIES_SHINY_PAL(IVYSAUR, gMonShinyPalette_Ivysaur),
+ SPECIES_SHINY_PAL(VENUSAUR, gMonShinyPalette_Venusaur),
+ SPECIES_SHINY_PAL(CHARMANDER, gMonShinyPalette_Charmander),
+ SPECIES_SHINY_PAL(CHARMELEON, gMonShinyPalette_Charmeleon),
+ SPECIES_SHINY_PAL(CHARIZARD, gMonShinyPalette_Charizard),
+ SPECIES_SHINY_PAL(SQUIRTLE, gMonShinyPalette_Squirtle),
+ SPECIES_SHINY_PAL(WARTORTLE, gMonShinyPalette_Wartortle),
+ SPECIES_SHINY_PAL(BLASTOISE, gMonShinyPalette_Blastoise),
+ SPECIES_SHINY_PAL(CATERPIE, gMonShinyPalette_Caterpie),
+ SPECIES_SHINY_PAL(METAPOD, gMonShinyPalette_Metapod),
+ SPECIES_SHINY_PAL(BUTTERFREE, gMonShinyPalette_Butterfree),
+ SPECIES_SHINY_PAL(WEEDLE, gMonShinyPalette_Weedle),
+ SPECIES_SHINY_PAL(KAKUNA, gMonShinyPalette_Kakuna),
+ SPECIES_SHINY_PAL(BEEDRILL, gMonShinyPalette_Beedrill),
+ SPECIES_SHINY_PAL(PIDGEY, gMonShinyPalette_Pidgey),
+ SPECIES_SHINY_PAL(PIDGEOTTO, gMonShinyPalette_Pidgeotto),
+ SPECIES_SHINY_PAL(PIDGEOT, gMonShinyPalette_Pidgeot),
+ SPECIES_SHINY_PAL(RATTATA, gMonShinyPalette_Rattata),
+ SPECIES_SHINY_PAL(RATICATE, gMonShinyPalette_Raticate),
+ SPECIES_SHINY_PAL(SPEAROW, gMonShinyPalette_Spearow),
+ SPECIES_SHINY_PAL(FEAROW, gMonShinyPalette_Fearow),
+ SPECIES_SHINY_PAL(EKANS, gMonShinyPalette_Ekans),
+ SPECIES_SHINY_PAL(ARBOK, gMonShinyPalette_Arbok),
+ SPECIES_SHINY_PAL(PIKACHU, gMonShinyPalette_Pikachu),
+ SPECIES_SHINY_PAL(RAICHU, gMonShinyPalette_Raichu),
+ SPECIES_SHINY_PAL(SANDSHREW, gMonShinyPalette_Sandshrew),
+ SPECIES_SHINY_PAL(SANDSLASH, gMonShinyPalette_Sandslash),
+ SPECIES_SHINY_PAL(NIDORAN_F, gMonShinyPalette_NidoranF),
+ SPECIES_SHINY_PAL(NIDORINA, gMonShinyPalette_Nidorina),
+ SPECIES_SHINY_PAL(NIDOQUEEN, gMonShinyPalette_Nidoqueen),
+ SPECIES_SHINY_PAL(NIDORAN_M, gMonShinyPalette_NidoranM),
+ SPECIES_SHINY_PAL(NIDORINO, gMonShinyPalette_Nidorino),
+ SPECIES_SHINY_PAL(NIDOKING, gMonShinyPalette_Nidoking),
+ SPECIES_SHINY_PAL(CLEFAIRY, gMonShinyPalette_Clefairy),
+ SPECIES_SHINY_PAL(CLEFABLE, gMonShinyPalette_Clefable),
+ SPECIES_SHINY_PAL(VULPIX, gMonShinyPalette_Vulpix),
+ SPECIES_SHINY_PAL(NINETALES, gMonShinyPalette_Ninetales),
+ SPECIES_SHINY_PAL(JIGGLYPUFF, gMonShinyPalette_Jigglypuff),
+ SPECIES_SHINY_PAL(WIGGLYTUFF, gMonShinyPalette_Wigglytuff),
+ SPECIES_SHINY_PAL(ZUBAT, gMonShinyPalette_Zubat),
+ SPECIES_SHINY_PAL(GOLBAT, gMonShinyPalette_Golbat),
+ SPECIES_SHINY_PAL(ODDISH, gMonShinyPalette_Oddish),
+ SPECIES_SHINY_PAL(GLOOM, gMonShinyPalette_Gloom),
+ SPECIES_SHINY_PAL(VILEPLUME, gMonShinyPalette_Vileplume),
+ SPECIES_SHINY_PAL(PARAS, gMonShinyPalette_Paras),
+ SPECIES_SHINY_PAL(PARASECT, gMonShinyPalette_Parasect),
+ SPECIES_SHINY_PAL(VENONAT, gMonShinyPalette_Venonat),
+ SPECIES_SHINY_PAL(VENOMOTH, gMonShinyPalette_Venomoth),
+ SPECIES_SHINY_PAL(DIGLETT, gMonShinyPalette_Diglett),
+ SPECIES_SHINY_PAL(DUGTRIO, gMonShinyPalette_Dugtrio),
+ SPECIES_SHINY_PAL(MEOWTH, gMonShinyPalette_Meowth),
+ SPECIES_SHINY_PAL(PERSIAN, gMonShinyPalette_Persian),
+ SPECIES_SHINY_PAL(PSYDUCK, gMonShinyPalette_Psyduck),
+ SPECIES_SHINY_PAL(GOLDUCK, gMonShinyPalette_Golduck),
+ SPECIES_SHINY_PAL(MANKEY, gMonShinyPalette_Mankey),
+ SPECIES_SHINY_PAL(PRIMEAPE, gMonShinyPalette_Primeape),
+ SPECIES_SHINY_PAL(GROWLITHE, gMonShinyPalette_Growlithe),
+ SPECIES_SHINY_PAL(ARCANINE, gMonShinyPalette_Arcanine),
+ SPECIES_SHINY_PAL(POLIWAG, gMonShinyPalette_Poliwag),
+ SPECIES_SHINY_PAL(POLIWHIRL, gMonShinyPalette_Poliwhirl),
+ SPECIES_SHINY_PAL(POLIWRATH, gMonShinyPalette_Poliwrath),
+ SPECIES_SHINY_PAL(ABRA, gMonShinyPalette_Abra),
+ SPECIES_SHINY_PAL(KADABRA, gMonShinyPalette_Kadabra),
+ SPECIES_SHINY_PAL(ALAKAZAM, gMonShinyPalette_Alakazam),
+ SPECIES_SHINY_PAL(MACHOP, gMonShinyPalette_Machop),
+ SPECIES_SHINY_PAL(MACHOKE, gMonShinyPalette_Machoke),
+ SPECIES_SHINY_PAL(MACHAMP, gMonShinyPalette_Machamp),
+ SPECIES_SHINY_PAL(BELLSPROUT, gMonShinyPalette_Bellsprout),
+ SPECIES_SHINY_PAL(WEEPINBELL, gMonShinyPalette_Weepinbell),
+ SPECIES_SHINY_PAL(VICTREEBEL, gMonShinyPalette_Victreebel),
+ SPECIES_SHINY_PAL(TENTACOOL, gMonShinyPalette_Tentacool),
+ SPECIES_SHINY_PAL(TENTACRUEL, gMonShinyPalette_Tentacruel),
+ SPECIES_SHINY_PAL(GEODUDE, gMonShinyPalette_Geodude),
+ SPECIES_SHINY_PAL(GRAVELER, gMonShinyPalette_Graveler),
+ SPECIES_SHINY_PAL(GOLEM, gMonShinyPalette_Golem),
+ SPECIES_SHINY_PAL(PONYTA, gMonShinyPalette_Ponyta),
+ SPECIES_SHINY_PAL(RAPIDASH, gMonShinyPalette_Rapidash),
+ SPECIES_SHINY_PAL(SLOWPOKE, gMonShinyPalette_Slowpoke),
+ SPECIES_SHINY_PAL(SLOWBRO, gMonShinyPalette_Slowbro),
+ SPECIES_SHINY_PAL(MAGNEMITE, gMonShinyPalette_Magnemite),
+ SPECIES_SHINY_PAL(MAGNETON, gMonShinyPalette_Magneton),
+ SPECIES_SHINY_PAL(FARFETCHD, gMonShinyPalette_Farfetchd),
+ SPECIES_SHINY_PAL(DODUO, gMonShinyPalette_Doduo),
+ SPECIES_SHINY_PAL(DODRIO, gMonShinyPalette_Dodrio),
+ SPECIES_SHINY_PAL(SEEL, gMonShinyPalette_Seel),
+ SPECIES_SHINY_PAL(DEWGONG, gMonShinyPalette_Dewgong),
+ SPECIES_SHINY_PAL(GRIMER, gMonShinyPalette_Grimer),
+ SPECIES_SHINY_PAL(MUK, gMonShinyPalette_Muk),
+ SPECIES_SHINY_PAL(SHELLDER, gMonShinyPalette_Shellder),
+ SPECIES_SHINY_PAL(CLOYSTER, gMonShinyPalette_Cloyster),
+ SPECIES_SHINY_PAL(GASTLY, gMonShinyPalette_Gastly),
+ SPECIES_SHINY_PAL(HAUNTER, gMonShinyPalette_Haunter),
+ SPECIES_SHINY_PAL(GENGAR, gMonShinyPalette_Gengar),
+ SPECIES_SHINY_PAL(ONIX, gMonShinyPalette_Onix),
+ SPECIES_SHINY_PAL(DROWZEE, gMonShinyPalette_Drowzee),
+ SPECIES_SHINY_PAL(HYPNO, gMonShinyPalette_Hypno),
+ SPECIES_SHINY_PAL(KRABBY, gMonShinyPalette_Krabby),
+ SPECIES_SHINY_PAL(KINGLER, gMonShinyPalette_Kingler),
+ SPECIES_SHINY_PAL(VOLTORB, gMonShinyPalette_Voltorb),
+ SPECIES_SHINY_PAL(ELECTRODE, gMonShinyPalette_Electrode),
+ SPECIES_SHINY_PAL(EXEGGCUTE, gMonShinyPalette_Exeggcute),
+ SPECIES_SHINY_PAL(EXEGGUTOR, gMonShinyPalette_Exeggutor),
+ SPECIES_SHINY_PAL(CUBONE, gMonShinyPalette_Cubone),
+ SPECIES_SHINY_PAL(MAROWAK, gMonShinyPalette_Marowak),
+ SPECIES_SHINY_PAL(HITMONLEE, gMonShinyPalette_Hitmonlee),
+ SPECIES_SHINY_PAL(HITMONCHAN, gMonShinyPalette_Hitmonchan),
+ SPECIES_SHINY_PAL(LICKITUNG, gMonShinyPalette_Lickitung),
+ SPECIES_SHINY_PAL(KOFFING, gMonShinyPalette_Koffing),
+ SPECIES_SHINY_PAL(WEEZING, gMonShinyPalette_Weezing),
+ SPECIES_SHINY_PAL(RHYHORN, gMonShinyPalette_Rhyhorn),
+ SPECIES_SHINY_PAL(RHYDON, gMonShinyPalette_Rhydon),
+ SPECIES_SHINY_PAL(CHANSEY, gMonShinyPalette_Chansey),
+ SPECIES_SHINY_PAL(TANGELA, gMonShinyPalette_Tangela),
+ SPECIES_SHINY_PAL(KANGASKHAN, gMonShinyPalette_Kangaskhan),
+ SPECIES_SHINY_PAL(HORSEA, gMonShinyPalette_Horsea),
+ SPECIES_SHINY_PAL(SEADRA, gMonShinyPalette_Seadra),
+ SPECIES_SHINY_PAL(GOLDEEN, gMonShinyPalette_Goldeen),
+ SPECIES_SHINY_PAL(SEAKING, gMonShinyPalette_Seaking),
+ SPECIES_SHINY_PAL(STARYU, gMonShinyPalette_Staryu),
+ SPECIES_SHINY_PAL(STARMIE, gMonShinyPalette_Starmie),
+ SPECIES_SHINY_PAL(MR_MIME, gMonShinyPalette_Mrmime),
+ SPECIES_SHINY_PAL(SCYTHER, gMonShinyPalette_Scyther),
+ SPECIES_SHINY_PAL(JYNX, gMonShinyPalette_Jynx),
+ SPECIES_SHINY_PAL(ELECTABUZZ, gMonShinyPalette_Electabuzz),
+ SPECIES_SHINY_PAL(MAGMAR, gMonShinyPalette_Magmar),
+ SPECIES_SHINY_PAL(PINSIR, gMonShinyPalette_Pinsir),
+ SPECIES_SHINY_PAL(TAUROS, gMonShinyPalette_Tauros),
+ SPECIES_SHINY_PAL(MAGIKARP, gMonShinyPalette_Magikarp),
+ SPECIES_SHINY_PAL(GYARADOS, gMonShinyPalette_Gyarados),
+ SPECIES_SHINY_PAL(LAPRAS, gMonShinyPalette_Lapras),
+ SPECIES_SHINY_PAL(DITTO, gMonShinyPalette_Ditto),
+ SPECIES_SHINY_PAL(EEVEE, gMonShinyPalette_Eevee),
+ SPECIES_SHINY_PAL(VAPOREON, gMonShinyPalette_Vaporeon),
+ SPECIES_SHINY_PAL(JOLTEON, gMonShinyPalette_Jolteon),
+ SPECIES_SHINY_PAL(FLAREON, gMonShinyPalette_Flareon),
+ SPECIES_SHINY_PAL(PORYGON, gMonShinyPalette_Porygon),
+ SPECIES_SHINY_PAL(OMANYTE, gMonShinyPalette_Omanyte),
+ SPECIES_SHINY_PAL(OMASTAR, gMonShinyPalette_Omastar),
+ SPECIES_SHINY_PAL(KABUTO, gMonShinyPalette_Kabuto),
+ SPECIES_SHINY_PAL(KABUTOPS, gMonShinyPalette_Kabutops),
+ SPECIES_SHINY_PAL(AERODACTYL, gMonShinyPalette_Aerodactyl),
+ SPECIES_SHINY_PAL(SNORLAX, gMonShinyPalette_Snorlax),
+ SPECIES_SHINY_PAL(ARTICUNO, gMonShinyPalette_Articuno),
+ SPECIES_SHINY_PAL(ZAPDOS, gMonShinyPalette_Zapdos),
+ SPECIES_SHINY_PAL(MOLTRES, gMonShinyPalette_Moltres),
+ SPECIES_SHINY_PAL(DRATINI, gMonShinyPalette_Dratini),
+ SPECIES_SHINY_PAL(DRAGONAIR, gMonShinyPalette_Dragonair),
+ SPECIES_SHINY_PAL(DRAGONITE, gMonShinyPalette_Dragonite),
+ SPECIES_SHINY_PAL(MEWTWO, gMonShinyPalette_Mewtwo),
+ SPECIES_SHINY_PAL(MEW, gMonShinyPalette_Mew),
+ SPECIES_SHINY_PAL(CHIKORITA, gMonShinyPalette_Chikorita),
+ SPECIES_SHINY_PAL(BAYLEEF, gMonShinyPalette_Bayleef),
+ SPECIES_SHINY_PAL(MEGANIUM, gMonShinyPalette_Meganium),
+ SPECIES_SHINY_PAL(CYNDAQUIL, gMonShinyPalette_Cyndaquil),
+ SPECIES_SHINY_PAL(QUILAVA, gMonShinyPalette_Quilava),
+ SPECIES_SHINY_PAL(TYPHLOSION, gMonShinyPalette_Typhlosion),
+ SPECIES_SHINY_PAL(TOTODILE, gMonShinyPalette_Totodile),
+ SPECIES_SHINY_PAL(CROCONAW, gMonShinyPalette_Croconaw),
+ SPECIES_SHINY_PAL(FERALIGATR, gMonShinyPalette_Feraligatr),
+ SPECIES_SHINY_PAL(SENTRET, gMonShinyPalette_Sentret),
+ SPECIES_SHINY_PAL(FURRET, gMonShinyPalette_Furret),
+ SPECIES_SHINY_PAL(HOOTHOOT, gMonShinyPalette_Hoothoot),
+ SPECIES_SHINY_PAL(NOCTOWL, gMonShinyPalette_Noctowl),
+ SPECIES_SHINY_PAL(LEDYBA, gMonShinyPalette_Ledyba),
+ SPECIES_SHINY_PAL(LEDIAN, gMonShinyPalette_Ledian),
+ SPECIES_SHINY_PAL(SPINARAK, gMonShinyPalette_Spinarak),
+ SPECIES_SHINY_PAL(ARIADOS, gMonShinyPalette_Ariados),
+ SPECIES_SHINY_PAL(CROBAT, gMonShinyPalette_Crobat),
+ SPECIES_SHINY_PAL(CHINCHOU, gMonShinyPalette_Chinchou),
+ SPECIES_SHINY_PAL(LANTURN, gMonShinyPalette_Lanturn),
+ SPECIES_SHINY_PAL(PICHU, gMonShinyPalette_Pichu),
+ SPECIES_SHINY_PAL(CLEFFA, gMonShinyPalette_Cleffa),
+ SPECIES_SHINY_PAL(IGGLYBUFF, gMonShinyPalette_Igglybuff),
+ SPECIES_SHINY_PAL(TOGEPI, gMonShinyPalette_Togepi),
+ SPECIES_SHINY_PAL(TOGETIC, gMonShinyPalette_Togetic),
+ SPECIES_SHINY_PAL(NATU, gMonShinyPalette_Natu),
+ SPECIES_SHINY_PAL(XATU, gMonShinyPalette_Xatu),
+ SPECIES_SHINY_PAL(MAREEP, gMonShinyPalette_Mareep),
+ SPECIES_SHINY_PAL(FLAAFFY, gMonShinyPalette_Flaaffy),
+ SPECIES_SHINY_PAL(AMPHAROS, gMonShinyPalette_Ampharos),
+ SPECIES_SHINY_PAL(BELLOSSOM, gMonShinyPalette_Bellossom),
+ SPECIES_SHINY_PAL(MARILL, gMonShinyPalette_Marill),
+ SPECIES_SHINY_PAL(AZUMARILL, gMonShinyPalette_Azumarill),
+ SPECIES_SHINY_PAL(SUDOWOODO, gMonShinyPalette_Sudowoodo),
+ SPECIES_SHINY_PAL(POLITOED, gMonShinyPalette_Politoed),
+ SPECIES_SHINY_PAL(HOPPIP, gMonShinyPalette_Hoppip),
+ SPECIES_SHINY_PAL(SKIPLOOM, gMonShinyPalette_Skiploom),
+ SPECIES_SHINY_PAL(JUMPLUFF, gMonShinyPalette_Jumpluff),
+ SPECIES_SHINY_PAL(AIPOM, gMonShinyPalette_Aipom),
+ SPECIES_SHINY_PAL(SUNKERN, gMonShinyPalette_Sunkern),
+ SPECIES_SHINY_PAL(SUNFLORA, gMonShinyPalette_Sunflora),
+ SPECIES_SHINY_PAL(YANMA, gMonShinyPalette_Yanma),
+ SPECIES_SHINY_PAL(WOOPER, gMonShinyPalette_Wooper),
+ SPECIES_SHINY_PAL(QUAGSIRE, gMonShinyPalette_Quagsire),
+ SPECIES_SHINY_PAL(ESPEON, gMonShinyPalette_Espeon),
+ SPECIES_SHINY_PAL(UMBREON, gMonShinyPalette_Umbreon),
+ SPECIES_SHINY_PAL(MURKROW, gMonShinyPalette_Murkrow),
+ SPECIES_SHINY_PAL(SLOWKING, gMonShinyPalette_Slowking),
+ SPECIES_SHINY_PAL(MISDREAVUS, gMonShinyPalette_Misdreavus),
+ SPECIES_SHINY_PAL(UNOWN, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(WOBBUFFET, gMonShinyPalette_Wobbuffet),
+ SPECIES_SHINY_PAL(GIRAFARIG, gMonShinyPalette_Girafarig),
+ SPECIES_SHINY_PAL(PINECO, gMonShinyPalette_Pineco),
+ SPECIES_SHINY_PAL(FORRETRESS, gMonShinyPalette_Forretress),
+ SPECIES_SHINY_PAL(DUNSPARCE, gMonShinyPalette_Dunsparce),
+ SPECIES_SHINY_PAL(GLIGAR, gMonShinyPalette_Gligar),
+ SPECIES_SHINY_PAL(STEELIX, gMonShinyPalette_Steelix),
+ SPECIES_SHINY_PAL(SNUBBULL, gMonShinyPalette_Snubbull),
+ SPECIES_SHINY_PAL(GRANBULL, gMonShinyPalette_Granbull),
+ SPECIES_SHINY_PAL(QWILFISH, gMonShinyPalette_Qwilfish),
+ SPECIES_SHINY_PAL(SCIZOR, gMonShinyPalette_Scizor),
+ SPECIES_SHINY_PAL(SHUCKLE, gMonShinyPalette_Shuckle),
+ SPECIES_SHINY_PAL(HERACROSS, gMonShinyPalette_Heracross),
+ SPECIES_SHINY_PAL(SNEASEL, gMonShinyPalette_Sneasel),
+ SPECIES_SHINY_PAL(TEDDIURSA, gMonShinyPalette_Teddiursa),
+ SPECIES_SHINY_PAL(URSARING, gMonShinyPalette_Ursaring),
+ SPECIES_SHINY_PAL(SLUGMA, gMonShinyPalette_Slugma),
+ SPECIES_SHINY_PAL(MAGCARGO, gMonShinyPalette_Magcargo),
+ SPECIES_SHINY_PAL(SWINUB, gMonShinyPalette_Swinub),
+ SPECIES_SHINY_PAL(PILOSWINE, gMonShinyPalette_Piloswine),
+ SPECIES_SHINY_PAL(CORSOLA, gMonShinyPalette_Corsola),
+ SPECIES_SHINY_PAL(REMORAID, gMonShinyPalette_Remoraid),
+ SPECIES_SHINY_PAL(OCTILLERY, gMonShinyPalette_Octillery),
+ SPECIES_SHINY_PAL(DELIBIRD, gMonShinyPalette_Delibird),
+ SPECIES_SHINY_PAL(MANTINE, gMonShinyPalette_Mantine),
+ SPECIES_SHINY_PAL(SKARMORY, gMonShinyPalette_Skarmory),
+ SPECIES_SHINY_PAL(HOUNDOUR, gMonShinyPalette_Houndour),
+ SPECIES_SHINY_PAL(HOUNDOOM, gMonShinyPalette_Houndoom),
+ SPECIES_SHINY_PAL(KINGDRA, gMonShinyPalette_Kingdra),
+ SPECIES_SHINY_PAL(PHANPY, gMonShinyPalette_Phanpy),
+ SPECIES_SHINY_PAL(DONPHAN, gMonShinyPalette_Donphan),
+ SPECIES_SHINY_PAL(PORYGON2, gMonShinyPalette_Porygon2),
+ SPECIES_SHINY_PAL(STANTLER, gMonShinyPalette_Stantler),
+ SPECIES_SHINY_PAL(SMEARGLE, gMonShinyPalette_Smeargle),
+ SPECIES_SHINY_PAL(TYROGUE, gMonShinyPalette_Tyrogue),
+ SPECIES_SHINY_PAL(HITMONTOP, gMonShinyPalette_Hitmontop),
+ SPECIES_SHINY_PAL(SMOOCHUM, gMonShinyPalette_Smoochum),
+ SPECIES_SHINY_PAL(ELEKID, gMonShinyPalette_Elekid),
+ SPECIES_SHINY_PAL(MAGBY, gMonShinyPalette_Magby),
+ SPECIES_SHINY_PAL(MILTANK, gMonShinyPalette_Miltank),
+ SPECIES_SHINY_PAL(BLISSEY, gMonShinyPalette_Blissey),
+ SPECIES_SHINY_PAL(RAIKOU, gMonShinyPalette_Raikou),
+ SPECIES_SHINY_PAL(ENTEI, gMonShinyPalette_Entei),
+ SPECIES_SHINY_PAL(SUICUNE, gMonShinyPalette_Suicune),
+ SPECIES_SHINY_PAL(LARVITAR, gMonShinyPalette_Larvitar),
+ SPECIES_SHINY_PAL(PUPITAR, gMonShinyPalette_Pupitar),
+ SPECIES_SHINY_PAL(TYRANITAR, gMonShinyPalette_Tyranitar),
+ SPECIES_SHINY_PAL(LUGIA, gMonShinyPalette_Lugia),
+ SPECIES_SHINY_PAL(HO_OH, gMonShinyPalette_HoOh),
+ SPECIES_SHINY_PAL(CELEBI, gMonShinyPalette_Celebi),
+ SPECIES_SHINY_PAL(OLD_UNOWN_B, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_C, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_D, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_E, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_F, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_G, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_H, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_I, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_J, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_K, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_L, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_M, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_N, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_O, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_P, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_Q, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_R, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_S, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_T, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_U, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_V, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_W, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_X, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_Y, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(OLD_UNOWN_Z, gMonShinyPalette_DoubleQuestionMark),
+ SPECIES_SHINY_PAL(TREECKO, gMonShinyPalette_Treecko),
+ SPECIES_SHINY_PAL(GROVYLE, gMonShinyPalette_Grovyle),
+ SPECIES_SHINY_PAL(SCEPTILE, gMonShinyPalette_Sceptile),
+ SPECIES_SHINY_PAL(TORCHIC, gMonShinyPalette_Torchic),
+ SPECIES_SHINY_PAL(COMBUSKEN, gMonShinyPalette_Combusken),
+ SPECIES_SHINY_PAL(BLAZIKEN, gMonShinyPalette_Blaziken),
+ SPECIES_SHINY_PAL(MUDKIP, gMonShinyPalette_Mudkip),
+ SPECIES_SHINY_PAL(MARSHTOMP, gMonShinyPalette_Marshtomp),
+ SPECIES_SHINY_PAL(SWAMPERT, gMonShinyPalette_Swampert),
+ SPECIES_SHINY_PAL(POOCHYENA, gMonShinyPalette_Poochyena),
+ SPECIES_SHINY_PAL(MIGHTYENA, gMonShinyPalette_Mightyena),
+ SPECIES_SHINY_PAL(ZIGZAGOON, gMonShinyPalette_Zigzagoon),
+ SPECIES_SHINY_PAL(LINOONE, gMonShinyPalette_Linoone),
+ SPECIES_SHINY_PAL(WURMPLE, gMonShinyPalette_Wurmple),
+ SPECIES_SHINY_PAL(SILCOON, gMonShinyPalette_Silcoon),
+ SPECIES_SHINY_PAL(BEAUTIFLY, gMonShinyPalette_Beautifly),
+ SPECIES_SHINY_PAL(CASCOON, gMonShinyPalette_Cascoon),
+ SPECIES_SHINY_PAL(DUSTOX, gMonShinyPalette_Dustox),
+ SPECIES_SHINY_PAL(LOTAD, gMonShinyPalette_Lotad),
+ SPECIES_SHINY_PAL(LOMBRE, gMonShinyPalette_Lombre),
+ SPECIES_SHINY_PAL(LUDICOLO, gMonShinyPalette_Ludicolo),
+ SPECIES_SHINY_PAL(SEEDOT, gMonShinyPalette_Seedot),
+ SPECIES_SHINY_PAL(NUZLEAF, gMonShinyPalette_Nuzleaf),
+ SPECIES_SHINY_PAL(SHIFTRY, gMonShinyPalette_Shiftry),
+ SPECIES_SHINY_PAL(NINCADA, gMonShinyPalette_Nincada),
+ SPECIES_SHINY_PAL(NINJASK, gMonShinyPalette_Ninjask),
+ SPECIES_SHINY_PAL(SHEDINJA, gMonShinyPalette_Shedinja),
+ SPECIES_SHINY_PAL(TAILLOW, gMonShinyPalette_Taillow),
+ SPECIES_SHINY_PAL(SWELLOW, gMonShinyPalette_Swellow),
+ SPECIES_SHINY_PAL(SHROOMISH, gMonShinyPalette_Shroomish),
+ SPECIES_SHINY_PAL(BRELOOM, gMonShinyPalette_Breloom),
+ SPECIES_SHINY_PAL(SPINDA, gMonShinyPalette_Spinda),
+ SPECIES_SHINY_PAL(WINGULL, gMonShinyPalette_Wingull),
+ SPECIES_SHINY_PAL(PELIPPER, gMonShinyPalette_Pelipper),
+ SPECIES_SHINY_PAL(SURSKIT, gMonShinyPalette_Surskit),
+ SPECIES_SHINY_PAL(MASQUERAIN, gMonShinyPalette_Masquerain),
+ SPECIES_SHINY_PAL(WAILMER, gMonShinyPalette_Wailmer),
+ SPECIES_SHINY_PAL(WAILORD, gMonShinyPalette_Wailord),
+ SPECIES_SHINY_PAL(SKITTY, gMonShinyPalette_Skitty),
+ SPECIES_SHINY_PAL(DELCATTY, gMonShinyPalette_Delcatty),
+ SPECIES_SHINY_PAL(KECLEON, gMonShinyPalette_Kecleon),
+ SPECIES_SHINY_PAL(BALTOY, gMonShinyPalette_Baltoy),
+ SPECIES_SHINY_PAL(CLAYDOL, gMonShinyPalette_Claydol),
+ SPECIES_SHINY_PAL(NOSEPASS, gMonShinyPalette_Nosepass),
+ SPECIES_SHINY_PAL(TORKOAL, gMonShinyPalette_Torkoal),
+ SPECIES_SHINY_PAL(SABLEYE, gMonShinyPalette_Sableye),
+ SPECIES_SHINY_PAL(BARBOACH, gMonShinyPalette_Barboach),
+ SPECIES_SHINY_PAL(WHISCASH, gMonShinyPalette_Whiscash),
+ SPECIES_SHINY_PAL(LUVDISC, gMonShinyPalette_Luvdisc),
+ SPECIES_SHINY_PAL(CORPHISH, gMonShinyPalette_Corphish),
+ SPECIES_SHINY_PAL(CRAWDAUNT, gMonShinyPalette_Crawdaunt),
+ SPECIES_SHINY_PAL(FEEBAS, gMonShinyPalette_Feebas),
+ SPECIES_SHINY_PAL(MILOTIC, gMonShinyPalette_Milotic),
+ SPECIES_SHINY_PAL(CARVANHA, gMonShinyPalette_Carvanha),
+ SPECIES_SHINY_PAL(SHARPEDO, gMonShinyPalette_Sharpedo),
+ SPECIES_SHINY_PAL(TRAPINCH, gMonShinyPalette_Trapinch),
+ SPECIES_SHINY_PAL(VIBRAVA, gMonShinyPalette_Vibrava),
+ SPECIES_SHINY_PAL(FLYGON, gMonShinyPalette_Flygon),
+ SPECIES_SHINY_PAL(MAKUHITA, gMonShinyPalette_Makuhita),
+ SPECIES_SHINY_PAL(HARIYAMA, gMonShinyPalette_Hariyama),
+ SPECIES_SHINY_PAL(ELECTRIKE, gMonShinyPalette_Electrike),
+ SPECIES_SHINY_PAL(MANECTRIC, gMonShinyPalette_Manectric),
+ SPECIES_SHINY_PAL(NUMEL, gMonShinyPalette_Numel),
+ SPECIES_SHINY_PAL(CAMERUPT, gMonShinyPalette_Camerupt),
+ SPECIES_SHINY_PAL(SPHEAL, gMonShinyPalette_Spheal),
+ SPECIES_SHINY_PAL(SEALEO, gMonShinyPalette_Sealeo),
+ SPECIES_SHINY_PAL(WALREIN, gMonShinyPalette_Walrein),
+ SPECIES_SHINY_PAL(CACNEA, gMonShinyPalette_Cacnea),
+ SPECIES_SHINY_PAL(CACTURNE, gMonShinyPalette_Cacturne),
+ SPECIES_SHINY_PAL(SNORUNT, gMonShinyPalette_Snorunt),
+ SPECIES_SHINY_PAL(GLALIE, gMonShinyPalette_Glalie),
+ SPECIES_SHINY_PAL(LUNATONE, gMonShinyPalette_Lunatone),
+ SPECIES_SHINY_PAL(SOLROCK, gMonShinyPalette_Solrock),
+ SPECIES_SHINY_PAL(AZURILL, gMonShinyPalette_Azurill),
+ SPECIES_SHINY_PAL(SPOINK, gMonShinyPalette_Spoink),
+ SPECIES_SHINY_PAL(GRUMPIG, gMonShinyPalette_Grumpig),
+ SPECIES_SHINY_PAL(PLUSLE, gMonShinyPalette_Plusle),
+ SPECIES_SHINY_PAL(MINUN, gMonShinyPalette_Minun),
+ SPECIES_SHINY_PAL(MAWILE, gMonShinyPalette_Mawile),
+ SPECIES_SHINY_PAL(MEDITITE, gMonShinyPalette_Meditite),
+ SPECIES_SHINY_PAL(MEDICHAM, gMonShinyPalette_Medicham),
+ SPECIES_SHINY_PAL(SWABLU, gMonShinyPalette_Swablu),
+ SPECIES_SHINY_PAL(ALTARIA, gMonShinyPalette_Altaria),
+ SPECIES_SHINY_PAL(WYNAUT, gMonShinyPalette_Wynaut),
+ SPECIES_SHINY_PAL(DUSKULL, gMonShinyPalette_Duskull),
+ SPECIES_SHINY_PAL(DUSCLOPS, gMonShinyPalette_Dusclops),
+ SPECIES_SHINY_PAL(ROSELIA, gMonShinyPalette_Roselia),
+ SPECIES_SHINY_PAL(SLAKOTH, gMonShinyPalette_Slakoth),
+ SPECIES_SHINY_PAL(VIGOROTH, gMonShinyPalette_Vigoroth),
+ SPECIES_SHINY_PAL(SLAKING, gMonShinyPalette_Slaking),
+ SPECIES_SHINY_PAL(GULPIN, gMonShinyPalette_Gulpin),
+ SPECIES_SHINY_PAL(SWALOT, gMonShinyPalette_Swalot),
+ SPECIES_SHINY_PAL(TROPIUS, gMonShinyPalette_Tropius),
+ SPECIES_SHINY_PAL(WHISMUR, gMonShinyPalette_Whismur),
+ SPECIES_SHINY_PAL(LOUDRED, gMonShinyPalette_Loudred),
+ SPECIES_SHINY_PAL(EXPLOUD, gMonShinyPalette_Exploud),
+ SPECIES_SHINY_PAL(CLAMPERL, gMonShinyPalette_Clamperl),
+ SPECIES_SHINY_PAL(HUNTAIL, gMonShinyPalette_Huntail),
+ SPECIES_SHINY_PAL(GOREBYSS, gMonShinyPalette_Gorebyss),
+ SPECIES_SHINY_PAL(ABSOL, gMonShinyPalette_Absol),
+ SPECIES_SHINY_PAL(SHUPPET, gMonShinyPalette_Shuppet),
+ SPECIES_SHINY_PAL(BANETTE, gMonShinyPalette_Banette),
+ SPECIES_SHINY_PAL(SEVIPER, gMonShinyPalette_Seviper),
+ SPECIES_SHINY_PAL(ZANGOOSE, gMonShinyPalette_Zangoose),
+ SPECIES_SHINY_PAL(RELICANTH, gMonShinyPalette_Relicanth),
+ SPECIES_SHINY_PAL(ARON, gMonShinyPalette_Aron),
+ SPECIES_SHINY_PAL(LAIRON, gMonShinyPalette_Lairon),
+ SPECIES_SHINY_PAL(AGGRON, gMonShinyPalette_Aggron),
+ SPECIES_SHINY_PAL(CASTFORM, gMonShinyPalette_Castform),
+ SPECIES_SHINY_PAL(VOLBEAT, gMonShinyPalette_Volbeat),
+ SPECIES_SHINY_PAL(ILLUMISE, gMonShinyPalette_Illumise),
+ SPECIES_SHINY_PAL(LILEEP, gMonShinyPalette_Lileep),
+ SPECIES_SHINY_PAL(CRADILY, gMonShinyPalette_Cradily),
+ SPECIES_SHINY_PAL(ANORITH, gMonShinyPalette_Anorith),
+ SPECIES_SHINY_PAL(ARMALDO, gMonShinyPalette_Armaldo),
+ SPECIES_SHINY_PAL(RALTS, gMonShinyPalette_Ralts),
+ SPECIES_SHINY_PAL(KIRLIA, gMonShinyPalette_Kirlia),
+ SPECIES_SHINY_PAL(GARDEVOIR, gMonShinyPalette_Gardevoir),
+ SPECIES_SHINY_PAL(BAGON, gMonShinyPalette_Bagon),
+ SPECIES_SHINY_PAL(SHELGON, gMonShinyPalette_Shelgon),
+ SPECIES_SHINY_PAL(SALAMENCE, gMonShinyPalette_Salamence),
+ SPECIES_SHINY_PAL(BELDUM, gMonShinyPalette_Beldum),
+ SPECIES_SHINY_PAL(METANG, gMonShinyPalette_Metang),
+ SPECIES_SHINY_PAL(METAGROSS, gMonShinyPalette_Metagross),
+ SPECIES_SHINY_PAL(REGIROCK, gMonShinyPalette_Regirock),
+ SPECIES_SHINY_PAL(REGICE, gMonShinyPalette_Regice),
+ SPECIES_SHINY_PAL(REGISTEEL, gMonShinyPalette_Registeel),
+ SPECIES_SHINY_PAL(KYOGRE, gMonShinyPalette_Kyogre),
+ SPECIES_SHINY_PAL(GROUDON, gMonShinyPalette_Groudon),
+ SPECIES_SHINY_PAL(RAYQUAZA, gMonShinyPalette_Rayquaza),
+ SPECIES_SHINY_PAL(LATIAS, gMonShinyPalette_Latias),
+ SPECIES_SHINY_PAL(LATIOS, gMonShinyPalette_Latios),
+ SPECIES_SHINY_PAL(JIRACHI, gMonShinyPalette_Jirachi),
+ SPECIES_SHINY_PAL(DEOXYS, gMonShinyPalette_Deoxys),
+ SPECIES_SHINY_PAL(CHIMECHO, gMonShinyPalette_Chimecho),
+ SPECIES_SHINY_PAL(EGG, gMonPalette_Egg),
+ SPECIES_SHINY_PAL(UNOWN_B, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_C, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_D, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_E, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_F, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_G, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_H, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_I, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_J, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_K, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_L, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_M, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_N, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_O, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_P, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_Q, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_R, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_S, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_T, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_U, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_V, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_W, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_X, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_Y, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_Z, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_EMARK, gMonShinyPalette_Unown),
+ SPECIES_SHINY_PAL(UNOWN_QMARK, gMonShinyPalette_Unown),
};
diff --git a/src/data/pokemon_graphics/still_front_pic_table.h b/src/data/pokemon_graphics/still_front_pic_table.h
index 308a872b4..985a3aa2f 100644
--- a/src/data/pokemon_graphics/still_front_pic_table.h
+++ b/src/data/pokemon_graphics/still_front_pic_table.h
@@ -1,448 +1,446 @@
-#define STILL_FRONT_PIC(species, frontpic) [SPECIES_##species] = {frontpic, 0x800, SPECIES_##species}
-
-const struct CompressedSpriteSheet gMonStillFrontPicTable[] =
+const struct CompressedSpriteSheet gMonStillFrontPicTable[] =
{
- STILL_FRONT_PIC(NONE, gMonStillFrontPic_CircledQuestionMark),
- STILL_FRONT_PIC(BULBASAUR, gMonStillFrontPic_Bulbasaur),
- STILL_FRONT_PIC(IVYSAUR, gMonStillFrontPic_Ivysaur),
- STILL_FRONT_PIC(VENUSAUR, gMonStillFrontPic_Venusaur),
- STILL_FRONT_PIC(CHARMANDER, gMonStillFrontPic_Charmander),
- STILL_FRONT_PIC(CHARMELEON, gMonStillFrontPic_Charmeleon),
- STILL_FRONT_PIC(CHARIZARD, gMonStillFrontPic_Charizard),
- STILL_FRONT_PIC(SQUIRTLE, gMonStillFrontPic_Squirtle),
- STILL_FRONT_PIC(WARTORTLE, gMonStillFrontPic_Wartortle),
- STILL_FRONT_PIC(BLASTOISE, gMonStillFrontPic_Blastoise),
- STILL_FRONT_PIC(CATERPIE, gMonStillFrontPic_Caterpie),
- STILL_FRONT_PIC(METAPOD, gMonStillFrontPic_Metapod),
- STILL_FRONT_PIC(BUTTERFREE, gMonStillFrontPic_Butterfree),
- STILL_FRONT_PIC(WEEDLE, gMonStillFrontPic_Weedle),
- STILL_FRONT_PIC(KAKUNA, gMonStillFrontPic_Kakuna),
- STILL_FRONT_PIC(BEEDRILL, gMonStillFrontPic_Beedrill),
- STILL_FRONT_PIC(PIDGEY, gMonStillFrontPic_Pidgey),
- STILL_FRONT_PIC(PIDGEOTTO, gMonStillFrontPic_Pidgeotto),
- STILL_FRONT_PIC(PIDGEOT, gMonStillFrontPic_Pidgeot),
- STILL_FRONT_PIC(RATTATA, gMonStillFrontPic_Rattata),
- STILL_FRONT_PIC(RATICATE, gMonStillFrontPic_Raticate),
- STILL_FRONT_PIC(SPEAROW, gMonStillFrontPic_Spearow),
- STILL_FRONT_PIC(FEAROW, gMonStillFrontPic_Fearow),
- STILL_FRONT_PIC(EKANS, gMonStillFrontPic_Ekans),
- STILL_FRONT_PIC(ARBOK, gMonStillFrontPic_Arbok),
- STILL_FRONT_PIC(PIKACHU, gMonStillFrontPic_Pikachu),
- STILL_FRONT_PIC(RAICHU, gMonStillFrontPic_Raichu),
- STILL_FRONT_PIC(SANDSHREW, gMonStillFrontPic_Sandshrew),
- STILL_FRONT_PIC(SANDSLASH, gMonStillFrontPic_Sandslash),
- STILL_FRONT_PIC(NIDORAN_F, gMonStillFrontPic_NidoranF),
- STILL_FRONT_PIC(NIDORINA, gMonStillFrontPic_Nidorina),
- STILL_FRONT_PIC(NIDOQUEEN, gMonStillFrontPic_Nidoqueen),
- STILL_FRONT_PIC(NIDORAN_M, gMonStillFrontPic_NidoranM),
- STILL_FRONT_PIC(NIDORINO, gMonStillFrontPic_Nidorino),
- STILL_FRONT_PIC(NIDOKING, gMonStillFrontPic_Nidoking),
- STILL_FRONT_PIC(CLEFAIRY, gMonStillFrontPic_Clefairy),
- STILL_FRONT_PIC(CLEFABLE, gMonStillFrontPic_Clefable),
- STILL_FRONT_PIC(VULPIX, gMonStillFrontPic_Vulpix),
- STILL_FRONT_PIC(NINETALES, gMonStillFrontPic_Ninetales),
- STILL_FRONT_PIC(JIGGLYPUFF, gMonStillFrontPic_Jigglypuff),
- STILL_FRONT_PIC(WIGGLYTUFF, gMonStillFrontPic_Wigglytuff),
- STILL_FRONT_PIC(ZUBAT, gMonStillFrontPic_Zubat),
- STILL_FRONT_PIC(GOLBAT, gMonStillFrontPic_Golbat),
- STILL_FRONT_PIC(ODDISH, gMonStillFrontPic_Oddish),
- STILL_FRONT_PIC(GLOOM, gMonStillFrontPic_Gloom),
- STILL_FRONT_PIC(VILEPLUME, gMonStillFrontPic_Vileplume),
- STILL_FRONT_PIC(PARAS, gMonStillFrontPic_Paras),
- STILL_FRONT_PIC(PARASECT, gMonStillFrontPic_Parasect),
- STILL_FRONT_PIC(VENONAT, gMonStillFrontPic_Venonat),
- STILL_FRONT_PIC(VENOMOTH, gMonStillFrontPic_Venomoth),
- STILL_FRONT_PIC(DIGLETT, gMonStillFrontPic_Diglett),
- STILL_FRONT_PIC(DUGTRIO, gMonStillFrontPic_Dugtrio),
- STILL_FRONT_PIC(MEOWTH, gMonStillFrontPic_Meowth),
- STILL_FRONT_PIC(PERSIAN, gMonStillFrontPic_Persian),
- STILL_FRONT_PIC(PSYDUCK, gMonStillFrontPic_Psyduck),
- STILL_FRONT_PIC(GOLDUCK, gMonStillFrontPic_Golduck),
- STILL_FRONT_PIC(MANKEY, gMonStillFrontPic_Mankey),
- STILL_FRONT_PIC(PRIMEAPE, gMonStillFrontPic_Primeape),
- STILL_FRONT_PIC(GROWLITHE, gMonStillFrontPic_Growlithe),
- STILL_FRONT_PIC(ARCANINE, gMonStillFrontPic_Arcanine),
- STILL_FRONT_PIC(POLIWAG, gMonStillFrontPic_Poliwag),
- STILL_FRONT_PIC(POLIWHIRL, gMonStillFrontPic_Poliwhirl),
- STILL_FRONT_PIC(POLIWRATH, gMonStillFrontPic_Poliwrath),
- STILL_FRONT_PIC(ABRA, gMonStillFrontPic_Abra),
- STILL_FRONT_PIC(KADABRA, gMonStillFrontPic_Kadabra),
- STILL_FRONT_PIC(ALAKAZAM, gMonStillFrontPic_Alakazam),
- STILL_FRONT_PIC(MACHOP, gMonStillFrontPic_Machop),
- STILL_FRONT_PIC(MACHOKE, gMonStillFrontPic_Machoke),
- STILL_FRONT_PIC(MACHAMP, gMonStillFrontPic_Machamp),
- STILL_FRONT_PIC(BELLSPROUT, gMonStillFrontPic_Bellsprout),
- STILL_FRONT_PIC(WEEPINBELL, gMonStillFrontPic_Weepinbell),
- STILL_FRONT_PIC(VICTREEBEL, gMonStillFrontPic_Victreebel),
- STILL_FRONT_PIC(TENTACOOL, gMonStillFrontPic_Tentacool),
- STILL_FRONT_PIC(TENTACRUEL, gMonStillFrontPic_Tentacruel),
- STILL_FRONT_PIC(GEODUDE, gMonStillFrontPic_Geodude),
- STILL_FRONT_PIC(GRAVELER, gMonStillFrontPic_Graveler),
- STILL_FRONT_PIC(GOLEM, gMonStillFrontPic_Golem),
- STILL_FRONT_PIC(PONYTA, gMonStillFrontPic_Ponyta),
- STILL_FRONT_PIC(RAPIDASH, gMonStillFrontPic_Rapidash),
- STILL_FRONT_PIC(SLOWPOKE, gMonStillFrontPic_Slowpoke),
- STILL_FRONT_PIC(SLOWBRO, gMonStillFrontPic_Slowbro),
- STILL_FRONT_PIC(MAGNEMITE, gMonStillFrontPic_Magnemite),
- STILL_FRONT_PIC(MAGNETON, gMonStillFrontPic_Magneton),
- STILL_FRONT_PIC(FARFETCHD, gMonStillFrontPic_Farfetchd),
- STILL_FRONT_PIC(DODUO, gMonStillFrontPic_Doduo),
- STILL_FRONT_PIC(DODRIO, gMonStillFrontPic_Dodrio),
- STILL_FRONT_PIC(SEEL, gMonStillFrontPic_Seel),
- STILL_FRONT_PIC(DEWGONG, gMonStillFrontPic_Dewgong),
- STILL_FRONT_PIC(GRIMER, gMonStillFrontPic_Grimer),
- STILL_FRONT_PIC(MUK, gMonStillFrontPic_Muk),
- STILL_FRONT_PIC(SHELLDER, gMonStillFrontPic_Shellder),
- STILL_FRONT_PIC(CLOYSTER, gMonStillFrontPic_Cloyster),
- STILL_FRONT_PIC(GASTLY, gMonStillFrontPic_Gastly),
- STILL_FRONT_PIC(HAUNTER, gMonStillFrontPic_Haunter),
- STILL_FRONT_PIC(GENGAR, gMonStillFrontPic_Gengar),
- STILL_FRONT_PIC(ONIX, gMonStillFrontPic_Onix),
- STILL_FRONT_PIC(DROWZEE, gMonStillFrontPic_Drowzee),
- STILL_FRONT_PIC(HYPNO, gMonStillFrontPic_Hypno),
- STILL_FRONT_PIC(KRABBY, gMonStillFrontPic_Krabby),
- STILL_FRONT_PIC(KINGLER, gMonStillFrontPic_Kingler),
- STILL_FRONT_PIC(VOLTORB, gMonStillFrontPic_Voltorb),
- STILL_FRONT_PIC(ELECTRODE, gMonStillFrontPic_Electrode),
- STILL_FRONT_PIC(EXEGGCUTE, gMonStillFrontPic_Exeggcute),
- STILL_FRONT_PIC(EXEGGUTOR, gMonStillFrontPic_Exeggutor),
- STILL_FRONT_PIC(CUBONE, gMonStillFrontPic_Cubone),
- STILL_FRONT_PIC(MAROWAK, gMonStillFrontPic_Marowak),
- STILL_FRONT_PIC(HITMONLEE, gMonStillFrontPic_Hitmonlee),
- STILL_FRONT_PIC(HITMONCHAN, gMonStillFrontPic_Hitmonchan),
- STILL_FRONT_PIC(LICKITUNG, gMonStillFrontPic_Lickitung),
- STILL_FRONT_PIC(KOFFING, gMonStillFrontPic_Koffing),
- STILL_FRONT_PIC(WEEZING, gMonStillFrontPic_Weezing),
- STILL_FRONT_PIC(RHYHORN, gMonStillFrontPic_Rhyhorn),
- STILL_FRONT_PIC(RHYDON, gMonStillFrontPic_Rhydon),
- STILL_FRONT_PIC(CHANSEY, gMonStillFrontPic_Chansey),
- STILL_FRONT_PIC(TANGELA, gMonStillFrontPic_Tangela),
- STILL_FRONT_PIC(KANGASKHAN, gMonStillFrontPic_Kangaskhan),
- STILL_FRONT_PIC(HORSEA, gMonStillFrontPic_Horsea),
- STILL_FRONT_PIC(SEADRA, gMonStillFrontPic_Seadra),
- STILL_FRONT_PIC(GOLDEEN, gMonStillFrontPic_Goldeen),
- STILL_FRONT_PIC(SEAKING, gMonStillFrontPic_Seaking),
- STILL_FRONT_PIC(STARYU, gMonStillFrontPic_Staryu),
- STILL_FRONT_PIC(STARMIE, gMonStillFrontPic_Starmie),
- STILL_FRONT_PIC(MR_MIME, gMonStillFrontPic_Mrmime),
- STILL_FRONT_PIC(SCYTHER, gMonStillFrontPic_Scyther),
- STILL_FRONT_PIC(JYNX, gMonStillFrontPic_Jynx),
- STILL_FRONT_PIC(ELECTABUZZ, gMonStillFrontPic_Electabuzz),
- STILL_FRONT_PIC(MAGMAR, gMonStillFrontPic_Magmar),
- STILL_FRONT_PIC(PINSIR, gMonStillFrontPic_Pinsir),
- STILL_FRONT_PIC(TAUROS, gMonStillFrontPic_Tauros),
- STILL_FRONT_PIC(MAGIKARP, gMonStillFrontPic_Magikarp),
- STILL_FRONT_PIC(GYARADOS, gMonStillFrontPic_Gyarados),
- STILL_FRONT_PIC(LAPRAS, gMonStillFrontPic_Lapras),
- STILL_FRONT_PIC(DITTO, gMonStillFrontPic_Ditto),
- STILL_FRONT_PIC(EEVEE, gMonStillFrontPic_Eevee),
- STILL_FRONT_PIC(VAPOREON, gMonStillFrontPic_Vaporeon),
- STILL_FRONT_PIC(JOLTEON, gMonStillFrontPic_Jolteon),
- STILL_FRONT_PIC(FLAREON, gMonStillFrontPic_Flareon),
- STILL_FRONT_PIC(PORYGON, gMonStillFrontPic_Porygon),
- STILL_FRONT_PIC(OMANYTE, gMonStillFrontPic_Omanyte),
- STILL_FRONT_PIC(OMASTAR, gMonStillFrontPic_Omastar),
- STILL_FRONT_PIC(KABUTO, gMonStillFrontPic_Kabuto),
- STILL_FRONT_PIC(KABUTOPS, gMonStillFrontPic_Kabutops),
- STILL_FRONT_PIC(AERODACTYL, gMonStillFrontPic_Aerodactyl),
- STILL_FRONT_PIC(SNORLAX, gMonStillFrontPic_Snorlax),
- STILL_FRONT_PIC(ARTICUNO, gMonStillFrontPic_Articuno),
- STILL_FRONT_PIC(ZAPDOS, gMonStillFrontPic_Zapdos),
- STILL_FRONT_PIC(MOLTRES, gMonStillFrontPic_Moltres),
- STILL_FRONT_PIC(DRATINI, gMonStillFrontPic_Dratini),
- STILL_FRONT_PIC(DRAGONAIR, gMonStillFrontPic_Dragonair),
- STILL_FRONT_PIC(DRAGONITE, gMonStillFrontPic_Dragonite),
- STILL_FRONT_PIC(MEWTWO, gMonStillFrontPic_Mewtwo),
- STILL_FRONT_PIC(MEW, gMonStillFrontPic_Mew),
+ SPECIES_SPRITE(NONE, gMonStillFrontPic_CircledQuestionMark),
+ SPECIES_SPRITE(BULBASAUR, gMonStillFrontPic_Bulbasaur),
+ SPECIES_SPRITE(IVYSAUR, gMonStillFrontPic_Ivysaur),
+ SPECIES_SPRITE(VENUSAUR, gMonStillFrontPic_Venusaur),
+ SPECIES_SPRITE(CHARMANDER, gMonStillFrontPic_Charmander),
+ SPECIES_SPRITE(CHARMELEON, gMonStillFrontPic_Charmeleon),
+ SPECIES_SPRITE(CHARIZARD, gMonStillFrontPic_Charizard),
+ SPECIES_SPRITE(SQUIRTLE, gMonStillFrontPic_Squirtle),
+ SPECIES_SPRITE(WARTORTLE, gMonStillFrontPic_Wartortle),
+ SPECIES_SPRITE(BLASTOISE, gMonStillFrontPic_Blastoise),
+ SPECIES_SPRITE(CATERPIE, gMonStillFrontPic_Caterpie),
+ SPECIES_SPRITE(METAPOD, gMonStillFrontPic_Metapod),
+ SPECIES_SPRITE(BUTTERFREE, gMonStillFrontPic_Butterfree),
+ SPECIES_SPRITE(WEEDLE, gMonStillFrontPic_Weedle),
+ SPECIES_SPRITE(KAKUNA, gMonStillFrontPic_Kakuna),
+ SPECIES_SPRITE(BEEDRILL, gMonStillFrontPic_Beedrill),
+ SPECIES_SPRITE(PIDGEY, gMonStillFrontPic_Pidgey),
+ SPECIES_SPRITE(PIDGEOTTO, gMonStillFrontPic_Pidgeotto),
+ SPECIES_SPRITE(PIDGEOT, gMonStillFrontPic_Pidgeot),
+ SPECIES_SPRITE(RATTATA, gMonStillFrontPic_Rattata),
+ SPECIES_SPRITE(RATICATE, gMonStillFrontPic_Raticate),
+ SPECIES_SPRITE(SPEAROW, gMonStillFrontPic_Spearow),
+ SPECIES_SPRITE(FEAROW, gMonStillFrontPic_Fearow),
+ SPECIES_SPRITE(EKANS, gMonStillFrontPic_Ekans),
+ SPECIES_SPRITE(ARBOK, gMonStillFrontPic_Arbok),
+ SPECIES_SPRITE(PIKACHU, gMonStillFrontPic_Pikachu),
+ SPECIES_SPRITE(RAICHU, gMonStillFrontPic_Raichu),
+ SPECIES_SPRITE(SANDSHREW, gMonStillFrontPic_Sandshrew),
+ SPECIES_SPRITE(SANDSLASH, gMonStillFrontPic_Sandslash),
+ SPECIES_SPRITE(NIDORAN_F, gMonStillFrontPic_NidoranF),
+ SPECIES_SPRITE(NIDORINA, gMonStillFrontPic_Nidorina),
+ SPECIES_SPRITE(NIDOQUEEN, gMonStillFrontPic_Nidoqueen),
+ SPECIES_SPRITE(NIDORAN_M, gMonStillFrontPic_NidoranM),
+ SPECIES_SPRITE(NIDORINO, gMonStillFrontPic_Nidorino),
+ SPECIES_SPRITE(NIDOKING, gMonStillFrontPic_Nidoking),
+ SPECIES_SPRITE(CLEFAIRY, gMonStillFrontPic_Clefairy),
+ SPECIES_SPRITE(CLEFABLE, gMonStillFrontPic_Clefable),
+ SPECIES_SPRITE(VULPIX, gMonStillFrontPic_Vulpix),
+ SPECIES_SPRITE(NINETALES, gMonStillFrontPic_Ninetales),
+ SPECIES_SPRITE(JIGGLYPUFF, gMonStillFrontPic_Jigglypuff),
+ SPECIES_SPRITE(WIGGLYTUFF, gMonStillFrontPic_Wigglytuff),
+ SPECIES_SPRITE(ZUBAT, gMonStillFrontPic_Zubat),
+ SPECIES_SPRITE(GOLBAT, gMonStillFrontPic_Golbat),
+ SPECIES_SPRITE(ODDISH, gMonStillFrontPic_Oddish),
+ SPECIES_SPRITE(GLOOM, gMonStillFrontPic_Gloom),
+ SPECIES_SPRITE(VILEPLUME, gMonStillFrontPic_Vileplume),
+ SPECIES_SPRITE(PARAS, gMonStillFrontPic_Paras),
+ SPECIES_SPRITE(PARASECT, gMonStillFrontPic_Parasect),
+ SPECIES_SPRITE(VENONAT, gMonStillFrontPic_Venonat),
+ SPECIES_SPRITE(VENOMOTH, gMonStillFrontPic_Venomoth),
+ SPECIES_SPRITE(DIGLETT, gMonStillFrontPic_Diglett),
+ SPECIES_SPRITE(DUGTRIO, gMonStillFrontPic_Dugtrio),
+ SPECIES_SPRITE(MEOWTH, gMonStillFrontPic_Meowth),
+ SPECIES_SPRITE(PERSIAN, gMonStillFrontPic_Persian),
+ SPECIES_SPRITE(PSYDUCK, gMonStillFrontPic_Psyduck),
+ SPECIES_SPRITE(GOLDUCK, gMonStillFrontPic_Golduck),
+ SPECIES_SPRITE(MANKEY, gMonStillFrontPic_Mankey),
+ SPECIES_SPRITE(PRIMEAPE, gMonStillFrontPic_Primeape),
+ SPECIES_SPRITE(GROWLITHE, gMonStillFrontPic_Growlithe),
+ SPECIES_SPRITE(ARCANINE, gMonStillFrontPic_Arcanine),
+ SPECIES_SPRITE(POLIWAG, gMonStillFrontPic_Poliwag),
+ SPECIES_SPRITE(POLIWHIRL, gMonStillFrontPic_Poliwhirl),
+ SPECIES_SPRITE(POLIWRATH, gMonStillFrontPic_Poliwrath),
+ SPECIES_SPRITE(ABRA, gMonStillFrontPic_Abra),
+ SPECIES_SPRITE(KADABRA, gMonStillFrontPic_Kadabra),
+ SPECIES_SPRITE(ALAKAZAM, gMonStillFrontPic_Alakazam),
+ SPECIES_SPRITE(MACHOP, gMonStillFrontPic_Machop),
+ SPECIES_SPRITE(MACHOKE, gMonStillFrontPic_Machoke),
+ SPECIES_SPRITE(MACHAMP, gMonStillFrontPic_Machamp),
+ SPECIES_SPRITE(BELLSPROUT, gMonStillFrontPic_Bellsprout),
+ SPECIES_SPRITE(WEEPINBELL, gMonStillFrontPic_Weepinbell),
+ SPECIES_SPRITE(VICTREEBEL, gMonStillFrontPic_Victreebel),
+ SPECIES_SPRITE(TENTACOOL, gMonStillFrontPic_Tentacool),
+ SPECIES_SPRITE(TENTACRUEL, gMonStillFrontPic_Tentacruel),
+ SPECIES_SPRITE(GEODUDE, gMonStillFrontPic_Geodude),
+ SPECIES_SPRITE(GRAVELER, gMonStillFrontPic_Graveler),
+ SPECIES_SPRITE(GOLEM, gMonStillFrontPic_Golem),
+ SPECIES_SPRITE(PONYTA, gMonStillFrontPic_Ponyta),
+ SPECIES_SPRITE(RAPIDASH, gMonStillFrontPic_Rapidash),
+ SPECIES_SPRITE(SLOWPOKE, gMonStillFrontPic_Slowpoke),
+ SPECIES_SPRITE(SLOWBRO, gMonStillFrontPic_Slowbro),
+ SPECIES_SPRITE(MAGNEMITE, gMonStillFrontPic_Magnemite),
+ SPECIES_SPRITE(MAGNETON, gMonStillFrontPic_Magneton),
+ SPECIES_SPRITE(FARFETCHD, gMonStillFrontPic_Farfetchd),
+ SPECIES_SPRITE(DODUO, gMonStillFrontPic_Doduo),
+ SPECIES_SPRITE(DODRIO, gMonStillFrontPic_Dodrio),
+ SPECIES_SPRITE(SEEL, gMonStillFrontPic_Seel),
+ SPECIES_SPRITE(DEWGONG, gMonStillFrontPic_Dewgong),
+ SPECIES_SPRITE(GRIMER, gMonStillFrontPic_Grimer),
+ SPECIES_SPRITE(MUK, gMonStillFrontPic_Muk),
+ SPECIES_SPRITE(SHELLDER, gMonStillFrontPic_Shellder),
+ SPECIES_SPRITE(CLOYSTER, gMonStillFrontPic_Cloyster),
+ SPECIES_SPRITE(GASTLY, gMonStillFrontPic_Gastly),
+ SPECIES_SPRITE(HAUNTER, gMonStillFrontPic_Haunter),
+ SPECIES_SPRITE(GENGAR, gMonStillFrontPic_Gengar),
+ SPECIES_SPRITE(ONIX, gMonStillFrontPic_Onix),
+ SPECIES_SPRITE(DROWZEE, gMonStillFrontPic_Drowzee),
+ SPECIES_SPRITE(HYPNO, gMonStillFrontPic_Hypno),
+ SPECIES_SPRITE(KRABBY, gMonStillFrontPic_Krabby),
+ SPECIES_SPRITE(KINGLER, gMonStillFrontPic_Kingler),
+ SPECIES_SPRITE(VOLTORB, gMonStillFrontPic_Voltorb),
+ SPECIES_SPRITE(ELECTRODE, gMonStillFrontPic_Electrode),
+ SPECIES_SPRITE(EXEGGCUTE, gMonStillFrontPic_Exeggcute),
+ SPECIES_SPRITE(EXEGGUTOR, gMonStillFrontPic_Exeggutor),
+ SPECIES_SPRITE(CUBONE, gMonStillFrontPic_Cubone),
+ SPECIES_SPRITE(MAROWAK, gMonStillFrontPic_Marowak),
+ SPECIES_SPRITE(HITMONLEE, gMonStillFrontPic_Hitmonlee),
+ SPECIES_SPRITE(HITMONCHAN, gMonStillFrontPic_Hitmonchan),
+ SPECIES_SPRITE(LICKITUNG, gMonStillFrontPic_Lickitung),
+ SPECIES_SPRITE(KOFFING, gMonStillFrontPic_Koffing),
+ SPECIES_SPRITE(WEEZING, gMonStillFrontPic_Weezing),
+ SPECIES_SPRITE(RHYHORN, gMonStillFrontPic_Rhyhorn),
+ SPECIES_SPRITE(RHYDON, gMonStillFrontPic_Rhydon),
+ SPECIES_SPRITE(CHANSEY, gMonStillFrontPic_Chansey),
+ SPECIES_SPRITE(TANGELA, gMonStillFrontPic_Tangela),
+ SPECIES_SPRITE(KANGASKHAN, gMonStillFrontPic_Kangaskhan),
+ SPECIES_SPRITE(HORSEA, gMonStillFrontPic_Horsea),
+ SPECIES_SPRITE(SEADRA, gMonStillFrontPic_Seadra),
+ SPECIES_SPRITE(GOLDEEN, gMonStillFrontPic_Goldeen),
+ SPECIES_SPRITE(SEAKING, gMonStillFrontPic_Seaking),
+ SPECIES_SPRITE(STARYU, gMonStillFrontPic_Staryu),
+ SPECIES_SPRITE(STARMIE, gMonStillFrontPic_Starmie),
+ SPECIES_SPRITE(MR_MIME, gMonStillFrontPic_Mrmime),
+ SPECIES_SPRITE(SCYTHER, gMonStillFrontPic_Scyther),
+ SPECIES_SPRITE(JYNX, gMonStillFrontPic_Jynx),
+ SPECIES_SPRITE(ELECTABUZZ, gMonStillFrontPic_Electabuzz),
+ SPECIES_SPRITE(MAGMAR, gMonStillFrontPic_Magmar),
+ SPECIES_SPRITE(PINSIR, gMonStillFrontPic_Pinsir),
+ SPECIES_SPRITE(TAUROS, gMonStillFrontPic_Tauros),
+ SPECIES_SPRITE(MAGIKARP, gMonStillFrontPic_Magikarp),
+ SPECIES_SPRITE(GYARADOS, gMonStillFrontPic_Gyarados),
+ SPECIES_SPRITE(LAPRAS, gMonStillFrontPic_Lapras),
+ SPECIES_SPRITE(DITTO, gMonStillFrontPic_Ditto),
+ SPECIES_SPRITE(EEVEE, gMonStillFrontPic_Eevee),
+ SPECIES_SPRITE(VAPOREON, gMonStillFrontPic_Vaporeon),
+ SPECIES_SPRITE(JOLTEON, gMonStillFrontPic_Jolteon),
+ SPECIES_SPRITE(FLAREON, gMonStillFrontPic_Flareon),
+ SPECIES_SPRITE(PORYGON, gMonStillFrontPic_Porygon),
+ SPECIES_SPRITE(OMANYTE, gMonStillFrontPic_Omanyte),
+ SPECIES_SPRITE(OMASTAR, gMonStillFrontPic_Omastar),
+ SPECIES_SPRITE(KABUTO, gMonStillFrontPic_Kabuto),
+ SPECIES_SPRITE(KABUTOPS, gMonStillFrontPic_Kabutops),
+ SPECIES_SPRITE(AERODACTYL, gMonStillFrontPic_Aerodactyl),
+ SPECIES_SPRITE(SNORLAX, gMonStillFrontPic_Snorlax),
+ SPECIES_SPRITE(ARTICUNO, gMonStillFrontPic_Articuno),
+ SPECIES_SPRITE(ZAPDOS, gMonStillFrontPic_Zapdos),
+ SPECIES_SPRITE(MOLTRES, gMonStillFrontPic_Moltres),
+ SPECIES_SPRITE(DRATINI, gMonStillFrontPic_Dratini),
+ SPECIES_SPRITE(DRAGONAIR, gMonStillFrontPic_Dragonair),
+ SPECIES_SPRITE(DRAGONITE, gMonStillFrontPic_Dragonite),
+ SPECIES_SPRITE(MEWTWO, gMonStillFrontPic_Mewtwo),
+ SPECIES_SPRITE(MEW, gMonStillFrontPic_Mew),
// Gen II
- STILL_FRONT_PIC(CHIKORITA, gMonStillFrontPic_Chikorita),
- STILL_FRONT_PIC(BAYLEEF, gMonStillFrontPic_Bayleef),
- STILL_FRONT_PIC(MEGANIUM, gMonStillFrontPic_Meganium),
- STILL_FRONT_PIC(CYNDAQUIL, gMonStillFrontPic_Cyndaquil),
- STILL_FRONT_PIC(QUILAVA, gMonStillFrontPic_Quilava),
- STILL_FRONT_PIC(TYPHLOSION, gMonStillFrontPic_Typhlosion),
- STILL_FRONT_PIC(TOTODILE, gMonStillFrontPic_Totodile),
- STILL_FRONT_PIC(CROCONAW, gMonStillFrontPic_Croconaw),
- STILL_FRONT_PIC(FERALIGATR, gMonStillFrontPic_Feraligatr),
- STILL_FRONT_PIC(SENTRET, gMonStillFrontPic_Sentret),
- STILL_FRONT_PIC(FURRET, gMonStillFrontPic_Furret),
- STILL_FRONT_PIC(HOOTHOOT, gMonStillFrontPic_Hoothoot),
- STILL_FRONT_PIC(NOCTOWL, gMonStillFrontPic_Noctowl),
- STILL_FRONT_PIC(LEDYBA, gMonStillFrontPic_Ledyba),
- STILL_FRONT_PIC(LEDIAN, gMonStillFrontPic_Ledian),
- STILL_FRONT_PIC(SPINARAK, gMonStillFrontPic_Spinarak),
- STILL_FRONT_PIC(ARIADOS, gMonStillFrontPic_Ariados),
- STILL_FRONT_PIC(CROBAT, gMonStillFrontPic_Crobat),
- STILL_FRONT_PIC(CHINCHOU, gMonStillFrontPic_Chinchou),
- STILL_FRONT_PIC(LANTURN, gMonStillFrontPic_Lanturn),
- STILL_FRONT_PIC(PICHU, gMonStillFrontPic_Pichu),
- STILL_FRONT_PIC(CLEFFA, gMonStillFrontPic_Cleffa),
- STILL_FRONT_PIC(IGGLYBUFF, gMonStillFrontPic_Igglybuff),
- STILL_FRONT_PIC(TOGEPI, gMonStillFrontPic_Togepi),
- STILL_FRONT_PIC(TOGETIC, gMonStillFrontPic_Togetic),
- STILL_FRONT_PIC(NATU, gMonStillFrontPic_Natu),
- STILL_FRONT_PIC(XATU, gMonStillFrontPic_Xatu),
- STILL_FRONT_PIC(MAREEP, gMonStillFrontPic_Mareep),
- STILL_FRONT_PIC(FLAAFFY, gMonStillFrontPic_Flaaffy),
- STILL_FRONT_PIC(AMPHAROS, gMonStillFrontPic_Ampharos),
- STILL_FRONT_PIC(BELLOSSOM, gMonStillFrontPic_Bellossom),
- STILL_FRONT_PIC(MARILL, gMonStillFrontPic_Marill),
- STILL_FRONT_PIC(AZUMARILL, gMonStillFrontPic_Azumarill),
- STILL_FRONT_PIC(SUDOWOODO, gMonStillFrontPic_Sudowoodo),
- STILL_FRONT_PIC(POLITOED, gMonStillFrontPic_Politoed),
- STILL_FRONT_PIC(HOPPIP, gMonStillFrontPic_Hoppip),
- STILL_FRONT_PIC(SKIPLOOM, gMonStillFrontPic_Skiploom),
- STILL_FRONT_PIC(JUMPLUFF, gMonStillFrontPic_Jumpluff),
- STILL_FRONT_PIC(AIPOM, gMonStillFrontPic_Aipom),
- STILL_FRONT_PIC(SUNKERN, gMonStillFrontPic_Sunkern),
- STILL_FRONT_PIC(SUNFLORA, gMonStillFrontPic_Sunflora),
- STILL_FRONT_PIC(YANMA, gMonStillFrontPic_Yanma),
- STILL_FRONT_PIC(WOOPER, gMonStillFrontPic_Wooper),
- STILL_FRONT_PIC(QUAGSIRE, gMonStillFrontPic_Quagsire),
- STILL_FRONT_PIC(ESPEON, gMonStillFrontPic_Espeon),
- STILL_FRONT_PIC(UMBREON, gMonStillFrontPic_Umbreon),
- STILL_FRONT_PIC(MURKROW, gMonStillFrontPic_Murkrow),
- STILL_FRONT_PIC(SLOWKING, gMonStillFrontPic_Slowking),
- STILL_FRONT_PIC(MISDREAVUS, gMonStillFrontPic_Misdreavus),
- STILL_FRONT_PIC(UNOWN, gMonStillFrontPic_UnownA),
- STILL_FRONT_PIC(WOBBUFFET, gMonStillFrontPic_Wobbuffet),
- STILL_FRONT_PIC(GIRAFARIG, gMonStillFrontPic_Girafarig),
- STILL_FRONT_PIC(PINECO, gMonStillFrontPic_Pineco),
- STILL_FRONT_PIC(FORRETRESS, gMonStillFrontPic_Forretress),
- STILL_FRONT_PIC(DUNSPARCE, gMonStillFrontPic_Dunsparce),
- STILL_FRONT_PIC(GLIGAR, gMonStillFrontPic_Gligar),
- STILL_FRONT_PIC(STEELIX, gMonStillFrontPic_Steelix),
- STILL_FRONT_PIC(SNUBBULL, gMonStillFrontPic_Snubbull),
- STILL_FRONT_PIC(GRANBULL, gMonStillFrontPic_Granbull),
- STILL_FRONT_PIC(QWILFISH, gMonStillFrontPic_Qwilfish),
- STILL_FRONT_PIC(SCIZOR, gMonStillFrontPic_Scizor),
- STILL_FRONT_PIC(SHUCKLE, gMonStillFrontPic_Shuckle),
- STILL_FRONT_PIC(HERACROSS, gMonStillFrontPic_Heracross),
- STILL_FRONT_PIC(SNEASEL, gMonStillFrontPic_Sneasel),
- STILL_FRONT_PIC(TEDDIURSA, gMonStillFrontPic_Teddiursa),
- STILL_FRONT_PIC(URSARING, gMonStillFrontPic_Ursaring),
- STILL_FRONT_PIC(SLUGMA, gMonStillFrontPic_Slugma),
- STILL_FRONT_PIC(MAGCARGO, gMonStillFrontPic_Magcargo),
- STILL_FRONT_PIC(SWINUB, gMonStillFrontPic_Swinub),
- STILL_FRONT_PIC(PILOSWINE, gMonStillFrontPic_Piloswine),
- STILL_FRONT_PIC(CORSOLA, gMonStillFrontPic_Corsola),
- STILL_FRONT_PIC(REMORAID, gMonStillFrontPic_Remoraid),
- STILL_FRONT_PIC(OCTILLERY, gMonStillFrontPic_Octillery),
- STILL_FRONT_PIC(DELIBIRD, gMonStillFrontPic_Delibird),
- STILL_FRONT_PIC(MANTINE, gMonStillFrontPic_Mantine),
- STILL_FRONT_PIC(SKARMORY, gMonStillFrontPic_Skarmory),
- STILL_FRONT_PIC(HOUNDOUR, gMonStillFrontPic_Houndour),
- STILL_FRONT_PIC(HOUNDOOM, gMonStillFrontPic_Houndoom),
- STILL_FRONT_PIC(KINGDRA, gMonStillFrontPic_Kingdra),
- STILL_FRONT_PIC(PHANPY, gMonStillFrontPic_Phanpy),
- STILL_FRONT_PIC(DONPHAN, gMonStillFrontPic_Donphan),
- STILL_FRONT_PIC(PORYGON2, gMonStillFrontPic_Porygon2),
- STILL_FRONT_PIC(STANTLER, gMonStillFrontPic_Stantler),
- STILL_FRONT_PIC(SMEARGLE, gMonStillFrontPic_Smeargle),
- STILL_FRONT_PIC(TYROGUE, gMonStillFrontPic_Tyrogue),
- STILL_FRONT_PIC(HITMONTOP, gMonStillFrontPic_Hitmontop),
- STILL_FRONT_PIC(SMOOCHUM, gMonStillFrontPic_Smoochum),
- STILL_FRONT_PIC(ELEKID, gMonStillFrontPic_Elekid),
- STILL_FRONT_PIC(MAGBY, gMonStillFrontPic_Magby),
- STILL_FRONT_PIC(MILTANK, gMonStillFrontPic_Miltank),
- STILL_FRONT_PIC(BLISSEY, gMonStillFrontPic_Blissey),
- STILL_FRONT_PIC(RAIKOU, gMonStillFrontPic_Raikou),
- STILL_FRONT_PIC(ENTEI, gMonStillFrontPic_Entei),
- STILL_FRONT_PIC(SUICUNE, gMonStillFrontPic_Suicune),
- STILL_FRONT_PIC(LARVITAR, gMonStillFrontPic_Larvitar),
- STILL_FRONT_PIC(PUPITAR, gMonStillFrontPic_Pupitar),
- STILL_FRONT_PIC(TYRANITAR, gMonStillFrontPic_Tyranitar),
- STILL_FRONT_PIC(LUGIA, gMonStillFrontPic_Lugia),
- STILL_FRONT_PIC(HO_OH, gMonStillFrontPic_HoOh),
- STILL_FRONT_PIC(CELEBI, gMonStillFrontPic_Celebi),
+ SPECIES_SPRITE(CHIKORITA, gMonStillFrontPic_Chikorita),
+ SPECIES_SPRITE(BAYLEEF, gMonStillFrontPic_Bayleef),
+ SPECIES_SPRITE(MEGANIUM, gMonStillFrontPic_Meganium),
+ SPECIES_SPRITE(CYNDAQUIL, gMonStillFrontPic_Cyndaquil),
+ SPECIES_SPRITE(QUILAVA, gMonStillFrontPic_Quilava),
+ SPECIES_SPRITE(TYPHLOSION, gMonStillFrontPic_Typhlosion),
+ SPECIES_SPRITE(TOTODILE, gMonStillFrontPic_Totodile),
+ SPECIES_SPRITE(CROCONAW, gMonStillFrontPic_Croconaw),
+ SPECIES_SPRITE(FERALIGATR, gMonStillFrontPic_Feraligatr),
+ SPECIES_SPRITE(SENTRET, gMonStillFrontPic_Sentret),
+ SPECIES_SPRITE(FURRET, gMonStillFrontPic_Furret),
+ SPECIES_SPRITE(HOOTHOOT, gMonStillFrontPic_Hoothoot),
+ SPECIES_SPRITE(NOCTOWL, gMonStillFrontPic_Noctowl),
+ SPECIES_SPRITE(LEDYBA, gMonStillFrontPic_Ledyba),
+ SPECIES_SPRITE(LEDIAN, gMonStillFrontPic_Ledian),
+ SPECIES_SPRITE(SPINARAK, gMonStillFrontPic_Spinarak),
+ SPECIES_SPRITE(ARIADOS, gMonStillFrontPic_Ariados),
+ SPECIES_SPRITE(CROBAT, gMonStillFrontPic_Crobat),
+ SPECIES_SPRITE(CHINCHOU, gMonStillFrontPic_Chinchou),
+ SPECIES_SPRITE(LANTURN, gMonStillFrontPic_Lanturn),
+ SPECIES_SPRITE(PICHU, gMonStillFrontPic_Pichu),
+ SPECIES_SPRITE(CLEFFA, gMonStillFrontPic_Cleffa),
+ SPECIES_SPRITE(IGGLYBUFF, gMonStillFrontPic_Igglybuff),
+ SPECIES_SPRITE(TOGEPI, gMonStillFrontPic_Togepi),
+ SPECIES_SPRITE(TOGETIC, gMonStillFrontPic_Togetic),
+ SPECIES_SPRITE(NATU, gMonStillFrontPic_Natu),
+ SPECIES_SPRITE(XATU, gMonStillFrontPic_Xatu),
+ SPECIES_SPRITE(MAREEP, gMonStillFrontPic_Mareep),
+ SPECIES_SPRITE(FLAAFFY, gMonStillFrontPic_Flaaffy),
+ SPECIES_SPRITE(AMPHAROS, gMonStillFrontPic_Ampharos),
+ SPECIES_SPRITE(BELLOSSOM, gMonStillFrontPic_Bellossom),
+ SPECIES_SPRITE(MARILL, gMonStillFrontPic_Marill),
+ SPECIES_SPRITE(AZUMARILL, gMonStillFrontPic_Azumarill),
+ SPECIES_SPRITE(SUDOWOODO, gMonStillFrontPic_Sudowoodo),
+ SPECIES_SPRITE(POLITOED, gMonStillFrontPic_Politoed),
+ SPECIES_SPRITE(HOPPIP, gMonStillFrontPic_Hoppip),
+ SPECIES_SPRITE(SKIPLOOM, gMonStillFrontPic_Skiploom),
+ SPECIES_SPRITE(JUMPLUFF, gMonStillFrontPic_Jumpluff),
+ SPECIES_SPRITE(AIPOM, gMonStillFrontPic_Aipom),
+ SPECIES_SPRITE(SUNKERN, gMonStillFrontPic_Sunkern),
+ SPECIES_SPRITE(SUNFLORA, gMonStillFrontPic_Sunflora),
+ SPECIES_SPRITE(YANMA, gMonStillFrontPic_Yanma),
+ SPECIES_SPRITE(WOOPER, gMonStillFrontPic_Wooper),
+ SPECIES_SPRITE(QUAGSIRE, gMonStillFrontPic_Quagsire),
+ SPECIES_SPRITE(ESPEON, gMonStillFrontPic_Espeon),
+ SPECIES_SPRITE(UMBREON, gMonStillFrontPic_Umbreon),
+ SPECIES_SPRITE(MURKROW, gMonStillFrontPic_Murkrow),
+ SPECIES_SPRITE(SLOWKING, gMonStillFrontPic_Slowking),
+ SPECIES_SPRITE(MISDREAVUS, gMonStillFrontPic_Misdreavus),
+ SPECIES_SPRITE(UNOWN, gMonStillFrontPic_UnownA),
+ SPECIES_SPRITE(WOBBUFFET, gMonStillFrontPic_Wobbuffet),
+ SPECIES_SPRITE(GIRAFARIG, gMonStillFrontPic_Girafarig),
+ SPECIES_SPRITE(PINECO, gMonStillFrontPic_Pineco),
+ SPECIES_SPRITE(FORRETRESS, gMonStillFrontPic_Forretress),
+ SPECIES_SPRITE(DUNSPARCE, gMonStillFrontPic_Dunsparce),
+ SPECIES_SPRITE(GLIGAR, gMonStillFrontPic_Gligar),
+ SPECIES_SPRITE(STEELIX, gMonStillFrontPic_Steelix),
+ SPECIES_SPRITE(SNUBBULL, gMonStillFrontPic_Snubbull),
+ SPECIES_SPRITE(GRANBULL, gMonStillFrontPic_Granbull),
+ SPECIES_SPRITE(QWILFISH, gMonStillFrontPic_Qwilfish),
+ SPECIES_SPRITE(SCIZOR, gMonStillFrontPic_Scizor),
+ SPECIES_SPRITE(SHUCKLE, gMonStillFrontPic_Shuckle),
+ SPECIES_SPRITE(HERACROSS, gMonStillFrontPic_Heracross),
+ SPECIES_SPRITE(SNEASEL, gMonStillFrontPic_Sneasel),
+ SPECIES_SPRITE(TEDDIURSA, gMonStillFrontPic_Teddiursa),
+ SPECIES_SPRITE(URSARING, gMonStillFrontPic_Ursaring),
+ SPECIES_SPRITE(SLUGMA, gMonStillFrontPic_Slugma),
+ SPECIES_SPRITE(MAGCARGO, gMonStillFrontPic_Magcargo),
+ SPECIES_SPRITE(SWINUB, gMonStillFrontPic_Swinub),
+ SPECIES_SPRITE(PILOSWINE, gMonStillFrontPic_Piloswine),
+ SPECIES_SPRITE(CORSOLA, gMonStillFrontPic_Corsola),
+ SPECIES_SPRITE(REMORAID, gMonStillFrontPic_Remoraid),
+ SPECIES_SPRITE(OCTILLERY, gMonStillFrontPic_Octillery),
+ SPECIES_SPRITE(DELIBIRD, gMonStillFrontPic_Delibird),
+ SPECIES_SPRITE(MANTINE, gMonStillFrontPic_Mantine),
+ SPECIES_SPRITE(SKARMORY, gMonStillFrontPic_Skarmory),
+ SPECIES_SPRITE(HOUNDOUR, gMonStillFrontPic_Houndour),
+ SPECIES_SPRITE(HOUNDOOM, gMonStillFrontPic_Houndoom),
+ SPECIES_SPRITE(KINGDRA, gMonStillFrontPic_Kingdra),
+ SPECIES_SPRITE(PHANPY, gMonStillFrontPic_Phanpy),
+ SPECIES_SPRITE(DONPHAN, gMonStillFrontPic_Donphan),
+ SPECIES_SPRITE(PORYGON2, gMonStillFrontPic_Porygon2),
+ SPECIES_SPRITE(STANTLER, gMonStillFrontPic_Stantler),
+ SPECIES_SPRITE(SMEARGLE, gMonStillFrontPic_Smeargle),
+ SPECIES_SPRITE(TYROGUE, gMonStillFrontPic_Tyrogue),
+ SPECIES_SPRITE(HITMONTOP, gMonStillFrontPic_Hitmontop),
+ SPECIES_SPRITE(SMOOCHUM, gMonStillFrontPic_Smoochum),
+ SPECIES_SPRITE(ELEKID, gMonStillFrontPic_Elekid),
+ SPECIES_SPRITE(MAGBY, gMonStillFrontPic_Magby),
+ SPECIES_SPRITE(MILTANK, gMonStillFrontPic_Miltank),
+ SPECIES_SPRITE(BLISSEY, gMonStillFrontPic_Blissey),
+ SPECIES_SPRITE(RAIKOU, gMonStillFrontPic_Raikou),
+ SPECIES_SPRITE(ENTEI, gMonStillFrontPic_Entei),
+ SPECIES_SPRITE(SUICUNE, gMonStillFrontPic_Suicune),
+ SPECIES_SPRITE(LARVITAR, gMonStillFrontPic_Larvitar),
+ SPECIES_SPRITE(PUPITAR, gMonStillFrontPic_Pupitar),
+ SPECIES_SPRITE(TYRANITAR, gMonStillFrontPic_Tyranitar),
+ SPECIES_SPRITE(LUGIA, gMonStillFrontPic_Lugia),
+ SPECIES_SPRITE(HO_OH, gMonStillFrontPic_HoOh),
+ SPECIES_SPRITE(CELEBI, gMonStillFrontPic_Celebi),
// Empty slots
- STILL_FRONT_PIC(OLD_UNOWN_B, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_C, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_D, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_E, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_F, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_G, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_H, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_I, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_J, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_K, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_L, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_M, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_N, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_O, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_P, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_Q, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_R, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_S, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_T, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_U, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_V, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_W, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_X, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_Y, gMonStillFrontPic_DoubleQuestionMark),
- STILL_FRONT_PIC(OLD_UNOWN_Z, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_B, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_C, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_D, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_E, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_F, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_G, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_H, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_I, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_J, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_K, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_L, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_M, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_N, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_O, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_P, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_Q, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_R, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_S, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_T, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_U, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_V, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_W, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_X, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_Y, gMonStillFrontPic_DoubleQuestionMark),
+ SPECIES_SPRITE(OLD_UNOWN_Z, gMonStillFrontPic_DoubleQuestionMark),
// Gen III
- STILL_FRONT_PIC(TREECKO, gMonStillFrontPic_Treecko),
- STILL_FRONT_PIC(GROVYLE, gMonStillFrontPic_Grovyle),
- STILL_FRONT_PIC(SCEPTILE, gMonStillFrontPic_Sceptile),
- STILL_FRONT_PIC(TORCHIC, gMonStillFrontPic_Torchic),
- STILL_FRONT_PIC(COMBUSKEN, gMonStillFrontPic_Combusken),
- STILL_FRONT_PIC(BLAZIKEN, gMonStillFrontPic_Blaziken),
- STILL_FRONT_PIC(MUDKIP, gMonStillFrontPic_Mudkip),
- STILL_FRONT_PIC(MARSHTOMP, gMonStillFrontPic_Marshtomp),
- STILL_FRONT_PIC(SWAMPERT, gMonStillFrontPic_Swampert),
- STILL_FRONT_PIC(POOCHYENA, gMonStillFrontPic_Poochyena),
- STILL_FRONT_PIC(MIGHTYENA, gMonStillFrontPic_Mightyena),
- STILL_FRONT_PIC(ZIGZAGOON, gMonStillFrontPic_Zigzagoon),
- STILL_FRONT_PIC(LINOONE, gMonStillFrontPic_Linoone),
- STILL_FRONT_PIC(WURMPLE, gMonStillFrontPic_Wurmple),
- STILL_FRONT_PIC(SILCOON, gMonStillFrontPic_Silcoon),
- STILL_FRONT_PIC(BEAUTIFLY, gMonStillFrontPic_Beautifly),
- STILL_FRONT_PIC(CASCOON, gMonStillFrontPic_Cascoon),
- STILL_FRONT_PIC(DUSTOX, gMonStillFrontPic_Dustox),
- STILL_FRONT_PIC(LOTAD, gMonStillFrontPic_Lotad),
- STILL_FRONT_PIC(LOMBRE, gMonStillFrontPic_Lombre),
- STILL_FRONT_PIC(LUDICOLO, gMonStillFrontPic_Ludicolo),
- STILL_FRONT_PIC(SEEDOT, gMonStillFrontPic_Seedot),
- STILL_FRONT_PIC(NUZLEAF, gMonStillFrontPic_Nuzleaf),
- STILL_FRONT_PIC(SHIFTRY, gMonStillFrontPic_Shiftry),
- STILL_FRONT_PIC(NINCADA, gMonStillFrontPic_Nincada),
- STILL_FRONT_PIC(NINJASK, gMonStillFrontPic_Ninjask),
- STILL_FRONT_PIC(SHEDINJA, gMonStillFrontPic_Shedinja),
- STILL_FRONT_PIC(TAILLOW, gMonStillFrontPic_Taillow),
- STILL_FRONT_PIC(SWELLOW, gMonStillFrontPic_Swellow),
- STILL_FRONT_PIC(SHROOMISH, gMonStillFrontPic_Shroomish),
- STILL_FRONT_PIC(BRELOOM, gMonStillFrontPic_Breloom),
- STILL_FRONT_PIC(SPINDA, gMonStillFrontPic_Spinda),
- STILL_FRONT_PIC(WINGULL, gMonStillFrontPic_Wingull),
- STILL_FRONT_PIC(PELIPPER, gMonStillFrontPic_Pelipper),
- STILL_FRONT_PIC(SURSKIT, gMonStillFrontPic_Surskit),
- STILL_FRONT_PIC(MASQUERAIN, gMonStillFrontPic_Masquerain),
- STILL_FRONT_PIC(WAILMER, gMonStillFrontPic_Wailmer),
- STILL_FRONT_PIC(WAILORD, gMonStillFrontPic_Wailord),
- STILL_FRONT_PIC(SKITTY, gMonStillFrontPic_Skitty),
- STILL_FRONT_PIC(DELCATTY, gMonStillFrontPic_Delcatty),
- STILL_FRONT_PIC(KECLEON, gMonStillFrontPic_Kecleon),
- STILL_FRONT_PIC(BALTOY, gMonStillFrontPic_Baltoy),
- STILL_FRONT_PIC(CLAYDOL, gMonStillFrontPic_Claydol),
- STILL_FRONT_PIC(NOSEPASS, gMonStillFrontPic_Nosepass),
- STILL_FRONT_PIC(TORKOAL, gMonStillFrontPic_Torkoal),
- STILL_FRONT_PIC(SABLEYE, gMonStillFrontPic_Sableye),
- STILL_FRONT_PIC(BARBOACH, gMonStillFrontPic_Barboach),
- STILL_FRONT_PIC(WHISCASH, gMonStillFrontPic_Whiscash),
- STILL_FRONT_PIC(LUVDISC, gMonStillFrontPic_Luvdisc),
- STILL_FRONT_PIC(CORPHISH, gMonStillFrontPic_Corphish),
- STILL_FRONT_PIC(CRAWDAUNT, gMonStillFrontPic_Crawdaunt),
- STILL_FRONT_PIC(FEEBAS, gMonStillFrontPic_Feebas),
- STILL_FRONT_PIC(MILOTIC, gMonStillFrontPic_Milotic),
- STILL_FRONT_PIC(CARVANHA, gMonStillFrontPic_Carvanha),
- STILL_FRONT_PIC(SHARPEDO, gMonStillFrontPic_Sharpedo),
- STILL_FRONT_PIC(TRAPINCH, gMonStillFrontPic_Trapinch),
- STILL_FRONT_PIC(VIBRAVA, gMonStillFrontPic_Vibrava),
- STILL_FRONT_PIC(FLYGON, gMonStillFrontPic_Flygon),
- STILL_FRONT_PIC(MAKUHITA, gMonStillFrontPic_Makuhita),
- STILL_FRONT_PIC(HARIYAMA, gMonStillFrontPic_Hariyama),
- STILL_FRONT_PIC(ELECTRIKE, gMonStillFrontPic_Electrike),
- STILL_FRONT_PIC(MANECTRIC, gMonStillFrontPic_Manectric),
- STILL_FRONT_PIC(NUMEL, gMonStillFrontPic_Numel),
- STILL_FRONT_PIC(CAMERUPT, gMonStillFrontPic_Camerupt),
- STILL_FRONT_PIC(SPHEAL, gMonStillFrontPic_Spheal),
- STILL_FRONT_PIC(SEALEO, gMonStillFrontPic_Sealeo),
- STILL_FRONT_PIC(WALREIN, gMonStillFrontPic_Walrein),
- STILL_FRONT_PIC(CACNEA, gMonStillFrontPic_Cacnea),
- STILL_FRONT_PIC(CACTURNE, gMonStillFrontPic_Cacturne),
- STILL_FRONT_PIC(SNORUNT, gMonStillFrontPic_Snorunt),
- STILL_FRONT_PIC(GLALIE, gMonStillFrontPic_Glalie),
- STILL_FRONT_PIC(LUNATONE, gMonStillFrontPic_Lunatone),
- STILL_FRONT_PIC(SOLROCK, gMonStillFrontPic_Solrock),
- STILL_FRONT_PIC(AZURILL, gMonStillFrontPic_Azurill),
- STILL_FRONT_PIC(SPOINK, gMonStillFrontPic_Spoink),
- STILL_FRONT_PIC(GRUMPIG, gMonStillFrontPic_Grumpig),
- STILL_FRONT_PIC(PLUSLE, gMonStillFrontPic_Plusle),
- STILL_FRONT_PIC(MINUN, gMonStillFrontPic_Minun),
- STILL_FRONT_PIC(MAWILE, gMonStillFrontPic_Mawile),
- STILL_FRONT_PIC(MEDITITE, gMonStillFrontPic_Meditite),
- STILL_FRONT_PIC(MEDICHAM, gMonStillFrontPic_Medicham),
- STILL_FRONT_PIC(SWABLU, gMonStillFrontPic_Swablu),
- STILL_FRONT_PIC(ALTARIA, gMonStillFrontPic_Altaria),
- STILL_FRONT_PIC(WYNAUT, gMonStillFrontPic_Wynaut),
- STILL_FRONT_PIC(DUSKULL, gMonStillFrontPic_Duskull),
- STILL_FRONT_PIC(DUSCLOPS, gMonStillFrontPic_Dusclops),
- STILL_FRONT_PIC(ROSELIA, gMonStillFrontPic_Roselia),
- STILL_FRONT_PIC(SLAKOTH, gMonStillFrontPic_Slakoth),
- STILL_FRONT_PIC(VIGOROTH, gMonStillFrontPic_Vigoroth),
- STILL_FRONT_PIC(SLAKING, gMonStillFrontPic_Slaking),
- STILL_FRONT_PIC(GULPIN, gMonStillFrontPic_Gulpin),
- STILL_FRONT_PIC(SWALOT, gMonStillFrontPic_Swalot),
- STILL_FRONT_PIC(TROPIUS, gMonStillFrontPic_Tropius),
- STILL_FRONT_PIC(WHISMUR, gMonStillFrontPic_Whismur),
- STILL_FRONT_PIC(LOUDRED, gMonStillFrontPic_Loudred),
- STILL_FRONT_PIC(EXPLOUD, gMonStillFrontPic_Exploud),
- STILL_FRONT_PIC(CLAMPERL, gMonStillFrontPic_Clamperl),
- STILL_FRONT_PIC(HUNTAIL, gMonStillFrontPic_Huntail),
- STILL_FRONT_PIC(GOREBYSS, gMonStillFrontPic_Gorebyss),
- STILL_FRONT_PIC(ABSOL, gMonStillFrontPic_Absol),
- STILL_FRONT_PIC(SHUPPET, gMonStillFrontPic_Shuppet),
- STILL_FRONT_PIC(BANETTE, gMonStillFrontPic_Banette),
- STILL_FRONT_PIC(SEVIPER, gMonStillFrontPic_Seviper),
- STILL_FRONT_PIC(ZANGOOSE, gMonStillFrontPic_Zangoose),
- STILL_FRONT_PIC(RELICANTH, gMonStillFrontPic_Relicanth),
- STILL_FRONT_PIC(ARON, gMonStillFrontPic_Aron),
- STILL_FRONT_PIC(LAIRON, gMonStillFrontPic_Lairon),
- STILL_FRONT_PIC(AGGRON, gMonStillFrontPic_Aggron),
- STILL_FRONT_PIC(CASTFORM, gMonStillFrontPic_Castform),
- STILL_FRONT_PIC(VOLBEAT, gMonStillFrontPic_Volbeat),
- STILL_FRONT_PIC(ILLUMISE, gMonStillFrontPic_Illumise),
- STILL_FRONT_PIC(LILEEP, gMonStillFrontPic_Lileep),
- STILL_FRONT_PIC(CRADILY, gMonStillFrontPic_Cradily),
- STILL_FRONT_PIC(ANORITH, gMonStillFrontPic_Anorith),
- STILL_FRONT_PIC(ARMALDO, gMonStillFrontPic_Armaldo),
- STILL_FRONT_PIC(RALTS, gMonStillFrontPic_Ralts),
- STILL_FRONT_PIC(KIRLIA, gMonStillFrontPic_Kirlia),
- STILL_FRONT_PIC(GARDEVOIR, gMonStillFrontPic_Gardevoir),
- STILL_FRONT_PIC(BAGON, gMonStillFrontPic_Bagon),
- STILL_FRONT_PIC(SHELGON, gMonStillFrontPic_Shelgon),
- STILL_FRONT_PIC(SALAMENCE, gMonStillFrontPic_Salamence),
- STILL_FRONT_PIC(BELDUM, gMonStillFrontPic_Beldum),
- STILL_FRONT_PIC(METANG, gMonStillFrontPic_Metang),
- STILL_FRONT_PIC(METAGROSS, gMonStillFrontPic_Metagross),
- STILL_FRONT_PIC(REGIROCK, gMonStillFrontPic_Regirock),
- STILL_FRONT_PIC(REGICE, gMonStillFrontPic_Regice),
- STILL_FRONT_PIC(REGISTEEL, gMonStillFrontPic_Registeel),
- STILL_FRONT_PIC(KYOGRE, gMonStillFrontPic_Kyogre),
- STILL_FRONT_PIC(GROUDON, gMonStillFrontPic_Groudon),
- STILL_FRONT_PIC(RAYQUAZA, gMonStillFrontPic_Rayquaza),
- STILL_FRONT_PIC(LATIAS, gMonStillFrontPic_Latias),
- STILL_FRONT_PIC(LATIOS, gMonStillFrontPic_Latios),
- STILL_FRONT_PIC(JIRACHI, gMonStillFrontPic_Jirachi),
- STILL_FRONT_PIC(DEOXYS, gMonStillFrontPic_Deoxys),
- STILL_FRONT_PIC(CHIMECHO, gMonStillFrontPic_Chimecho),
- STILL_FRONT_PIC(EGG, gMonStillFrontPic_Egg),
- STILL_FRONT_PIC(UNOWN_B, gMonStillFrontPic_UnownB),
- STILL_FRONT_PIC(UNOWN_C, gMonStillFrontPic_UnownC),
- STILL_FRONT_PIC(UNOWN_D, gMonStillFrontPic_UnownD),
- STILL_FRONT_PIC(UNOWN_E, gMonStillFrontPic_UnownE),
- STILL_FRONT_PIC(UNOWN_F, gMonStillFrontPic_UnownF),
- STILL_FRONT_PIC(UNOWN_G, gMonStillFrontPic_UnownG),
- STILL_FRONT_PIC(UNOWN_H, gMonStillFrontPic_UnownH),
- STILL_FRONT_PIC(UNOWN_I, gMonStillFrontPic_UnownI),
- STILL_FRONT_PIC(UNOWN_J, gMonStillFrontPic_UnownJ),
- STILL_FRONT_PIC(UNOWN_K, gMonStillFrontPic_UnownK),
- STILL_FRONT_PIC(UNOWN_L, gMonStillFrontPic_UnownL),
- STILL_FRONT_PIC(UNOWN_M, gMonStillFrontPic_UnownM),
- STILL_FRONT_PIC(UNOWN_N, gMonStillFrontPic_UnownN),
- STILL_FRONT_PIC(UNOWN_O, gMonStillFrontPic_UnownO),
- STILL_FRONT_PIC(UNOWN_P, gMonStillFrontPic_UnownP),
- STILL_FRONT_PIC(UNOWN_Q, gMonStillFrontPic_UnownQ),
- STILL_FRONT_PIC(UNOWN_R, gMonStillFrontPic_UnownR),
- STILL_FRONT_PIC(UNOWN_S, gMonStillFrontPic_UnownS),
- STILL_FRONT_PIC(UNOWN_T, gMonStillFrontPic_UnownT),
- STILL_FRONT_PIC(UNOWN_U, gMonStillFrontPic_UnownU),
- STILL_FRONT_PIC(UNOWN_V, gMonStillFrontPic_UnownV),
- STILL_FRONT_PIC(UNOWN_W, gMonStillFrontPic_UnownW),
- STILL_FRONT_PIC(UNOWN_X, gMonStillFrontPic_UnownX),
- STILL_FRONT_PIC(UNOWN_Y, gMonStillFrontPic_UnownY),
- STILL_FRONT_PIC(UNOWN_Z, gMonStillFrontPic_UnownZ),
- STILL_FRONT_PIC(UNOWN_EMARK, gMonStillFrontPic_UnownExclamationMark),
- STILL_FRONT_PIC(UNOWN_QMARK, gMonStillFrontPic_UnownQuestionMark),
+ SPECIES_SPRITE(TREECKO, gMonStillFrontPic_Treecko),
+ SPECIES_SPRITE(GROVYLE, gMonStillFrontPic_Grovyle),
+ SPECIES_SPRITE(SCEPTILE, gMonStillFrontPic_Sceptile),
+ SPECIES_SPRITE(TORCHIC, gMonStillFrontPic_Torchic),
+ SPECIES_SPRITE(COMBUSKEN, gMonStillFrontPic_Combusken),
+ SPECIES_SPRITE(BLAZIKEN, gMonStillFrontPic_Blaziken),
+ SPECIES_SPRITE(MUDKIP, gMonStillFrontPic_Mudkip),
+ SPECIES_SPRITE(MARSHTOMP, gMonStillFrontPic_Marshtomp),
+ SPECIES_SPRITE(SWAMPERT, gMonStillFrontPic_Swampert),
+ SPECIES_SPRITE(POOCHYENA, gMonStillFrontPic_Poochyena),
+ SPECIES_SPRITE(MIGHTYENA, gMonStillFrontPic_Mightyena),
+ SPECIES_SPRITE(ZIGZAGOON, gMonStillFrontPic_Zigzagoon),
+ SPECIES_SPRITE(LINOONE, gMonStillFrontPic_Linoone),
+ SPECIES_SPRITE(WURMPLE, gMonStillFrontPic_Wurmple),
+ SPECIES_SPRITE(SILCOON, gMonStillFrontPic_Silcoon),
+ SPECIES_SPRITE(BEAUTIFLY, gMonStillFrontPic_Beautifly),
+ SPECIES_SPRITE(CASCOON, gMonStillFrontPic_Cascoon),
+ SPECIES_SPRITE(DUSTOX, gMonStillFrontPic_Dustox),
+ SPECIES_SPRITE(LOTAD, gMonStillFrontPic_Lotad),
+ SPECIES_SPRITE(LOMBRE, gMonStillFrontPic_Lombre),
+ SPECIES_SPRITE(LUDICOLO, gMonStillFrontPic_Ludicolo),
+ SPECIES_SPRITE(SEEDOT, gMonStillFrontPic_Seedot),
+ SPECIES_SPRITE(NUZLEAF, gMonStillFrontPic_Nuzleaf),
+ SPECIES_SPRITE(SHIFTRY, gMonStillFrontPic_Shiftry),
+ SPECIES_SPRITE(NINCADA, gMonStillFrontPic_Nincada),
+ SPECIES_SPRITE(NINJASK, gMonStillFrontPic_Ninjask),
+ SPECIES_SPRITE(SHEDINJA, gMonStillFrontPic_Shedinja),
+ SPECIES_SPRITE(TAILLOW, gMonStillFrontPic_Taillow),
+ SPECIES_SPRITE(SWELLOW, gMonStillFrontPic_Swellow),
+ SPECIES_SPRITE(SHROOMISH, gMonStillFrontPic_Shroomish),
+ SPECIES_SPRITE(BRELOOM, gMonStillFrontPic_Breloom),
+ SPECIES_SPRITE(SPINDA, gMonStillFrontPic_Spinda),
+ SPECIES_SPRITE(WINGULL, gMonStillFrontPic_Wingull),
+ SPECIES_SPRITE(PELIPPER, gMonStillFrontPic_Pelipper),
+ SPECIES_SPRITE(SURSKIT, gMonStillFrontPic_Surskit),
+ SPECIES_SPRITE(MASQUERAIN, gMonStillFrontPic_Masquerain),
+ SPECIES_SPRITE(WAILMER, gMonStillFrontPic_Wailmer),
+ SPECIES_SPRITE(WAILORD, gMonStillFrontPic_Wailord),
+ SPECIES_SPRITE(SKITTY, gMonStillFrontPic_Skitty),
+ SPECIES_SPRITE(DELCATTY, gMonStillFrontPic_Delcatty),
+ SPECIES_SPRITE(KECLEON, gMonStillFrontPic_Kecleon),
+ SPECIES_SPRITE(BALTOY, gMonStillFrontPic_Baltoy),
+ SPECIES_SPRITE(CLAYDOL, gMonStillFrontPic_Claydol),
+ SPECIES_SPRITE(NOSEPASS, gMonStillFrontPic_Nosepass),
+ SPECIES_SPRITE(TORKOAL, gMonStillFrontPic_Torkoal),
+ SPECIES_SPRITE(SABLEYE, gMonStillFrontPic_Sableye),
+ SPECIES_SPRITE(BARBOACH, gMonStillFrontPic_Barboach),
+ SPECIES_SPRITE(WHISCASH, gMonStillFrontPic_Whiscash),
+ SPECIES_SPRITE(LUVDISC, gMonStillFrontPic_Luvdisc),
+ SPECIES_SPRITE(CORPHISH, gMonStillFrontPic_Corphish),
+ SPECIES_SPRITE(CRAWDAUNT, gMonStillFrontPic_Crawdaunt),
+ SPECIES_SPRITE(FEEBAS, gMonStillFrontPic_Feebas),
+ SPECIES_SPRITE(MILOTIC, gMonStillFrontPic_Milotic),
+ SPECIES_SPRITE(CARVANHA, gMonStillFrontPic_Carvanha),
+ SPECIES_SPRITE(SHARPEDO, gMonStillFrontPic_Sharpedo),
+ SPECIES_SPRITE(TRAPINCH, gMonStillFrontPic_Trapinch),
+ SPECIES_SPRITE(VIBRAVA, gMonStillFrontPic_Vibrava),
+ SPECIES_SPRITE(FLYGON, gMonStillFrontPic_Flygon),
+ SPECIES_SPRITE(MAKUHITA, gMonStillFrontPic_Makuhita),
+ SPECIES_SPRITE(HARIYAMA, gMonStillFrontPic_Hariyama),
+ SPECIES_SPRITE(ELECTRIKE, gMonStillFrontPic_Electrike),
+ SPECIES_SPRITE(MANECTRIC, gMonStillFrontPic_Manectric),
+ SPECIES_SPRITE(NUMEL, gMonStillFrontPic_Numel),
+ SPECIES_SPRITE(CAMERUPT, gMonStillFrontPic_Camerupt),
+ SPECIES_SPRITE(SPHEAL, gMonStillFrontPic_Spheal),
+ SPECIES_SPRITE(SEALEO, gMonStillFrontPic_Sealeo),
+ SPECIES_SPRITE(WALREIN, gMonStillFrontPic_Walrein),
+ SPECIES_SPRITE(CACNEA, gMonStillFrontPic_Cacnea),
+ SPECIES_SPRITE(CACTURNE, gMonStillFrontPic_Cacturne),
+ SPECIES_SPRITE(SNORUNT, gMonStillFrontPic_Snorunt),
+ SPECIES_SPRITE(GLALIE, gMonStillFrontPic_Glalie),
+ SPECIES_SPRITE(LUNATONE, gMonStillFrontPic_Lunatone),
+ SPECIES_SPRITE(SOLROCK, gMonStillFrontPic_Solrock),
+ SPECIES_SPRITE(AZURILL, gMonStillFrontPic_Azurill),
+ SPECIES_SPRITE(SPOINK, gMonStillFrontPic_Spoink),
+ SPECIES_SPRITE(GRUMPIG, gMonStillFrontPic_Grumpig),
+ SPECIES_SPRITE(PLUSLE, gMonStillFrontPic_Plusle),
+ SPECIES_SPRITE(MINUN, gMonStillFrontPic_Minun),
+ SPECIES_SPRITE(MAWILE, gMonStillFrontPic_Mawile),
+ SPECIES_SPRITE(MEDITITE, gMonStillFrontPic_Meditite),
+ SPECIES_SPRITE(MEDICHAM, gMonStillFrontPic_Medicham),
+ SPECIES_SPRITE(SWABLU, gMonStillFrontPic_Swablu),
+ SPECIES_SPRITE(ALTARIA, gMonStillFrontPic_Altaria),
+ SPECIES_SPRITE(WYNAUT, gMonStillFrontPic_Wynaut),
+ SPECIES_SPRITE(DUSKULL, gMonStillFrontPic_Duskull),
+ SPECIES_SPRITE(DUSCLOPS, gMonStillFrontPic_Dusclops),
+ SPECIES_SPRITE(ROSELIA, gMonStillFrontPic_Roselia),
+ SPECIES_SPRITE(SLAKOTH, gMonStillFrontPic_Slakoth),
+ SPECIES_SPRITE(VIGOROTH, gMonStillFrontPic_Vigoroth),
+ SPECIES_SPRITE(SLAKING, gMonStillFrontPic_Slaking),
+ SPECIES_SPRITE(GULPIN, gMonStillFrontPic_Gulpin),
+ SPECIES_SPRITE(SWALOT, gMonStillFrontPic_Swalot),
+ SPECIES_SPRITE(TROPIUS, gMonStillFrontPic_Tropius),
+ SPECIES_SPRITE(WHISMUR, gMonStillFrontPic_Whismur),
+ SPECIES_SPRITE(LOUDRED, gMonStillFrontPic_Loudred),
+ SPECIES_SPRITE(EXPLOUD, gMonStillFrontPic_Exploud),
+ SPECIES_SPRITE(CLAMPERL, gMonStillFrontPic_Clamperl),
+ SPECIES_SPRITE(HUNTAIL, gMonStillFrontPic_Huntail),
+ SPECIES_SPRITE(GOREBYSS, gMonStillFrontPic_Gorebyss),
+ SPECIES_SPRITE(ABSOL, gMonStillFrontPic_Absol),
+ SPECIES_SPRITE(SHUPPET, gMonStillFrontPic_Shuppet),
+ SPECIES_SPRITE(BANETTE, gMonStillFrontPic_Banette),
+ SPECIES_SPRITE(SEVIPER, gMonStillFrontPic_Seviper),
+ SPECIES_SPRITE(ZANGOOSE, gMonStillFrontPic_Zangoose),
+ SPECIES_SPRITE(RELICANTH, gMonStillFrontPic_Relicanth),
+ SPECIES_SPRITE(ARON, gMonStillFrontPic_Aron),
+ SPECIES_SPRITE(LAIRON, gMonStillFrontPic_Lairon),
+ SPECIES_SPRITE(AGGRON, gMonStillFrontPic_Aggron),
+ SPECIES_SPRITE(CASTFORM, gMonStillFrontPic_Castform),
+ SPECIES_SPRITE(VOLBEAT, gMonStillFrontPic_Volbeat),
+ SPECIES_SPRITE(ILLUMISE, gMonStillFrontPic_Illumise),
+ SPECIES_SPRITE(LILEEP, gMonStillFrontPic_Lileep),
+ SPECIES_SPRITE(CRADILY, gMonStillFrontPic_Cradily),
+ SPECIES_SPRITE(ANORITH, gMonStillFrontPic_Anorith),
+ SPECIES_SPRITE(ARMALDO, gMonStillFrontPic_Armaldo),
+ SPECIES_SPRITE(RALTS, gMonStillFrontPic_Ralts),
+ SPECIES_SPRITE(KIRLIA, gMonStillFrontPic_Kirlia),
+ SPECIES_SPRITE(GARDEVOIR, gMonStillFrontPic_Gardevoir),
+ SPECIES_SPRITE(BAGON, gMonStillFrontPic_Bagon),
+ SPECIES_SPRITE(SHELGON, gMonStillFrontPic_Shelgon),
+ SPECIES_SPRITE(SALAMENCE, gMonStillFrontPic_Salamence),
+ SPECIES_SPRITE(BELDUM, gMonStillFrontPic_Beldum),
+ SPECIES_SPRITE(METANG, gMonStillFrontPic_Metang),
+ SPECIES_SPRITE(METAGROSS, gMonStillFrontPic_Metagross),
+ SPECIES_SPRITE(REGIROCK, gMonStillFrontPic_Regirock),
+ SPECIES_SPRITE(REGICE, gMonStillFrontPic_Regice),
+ SPECIES_SPRITE(REGISTEEL, gMonStillFrontPic_Registeel),
+ SPECIES_SPRITE(KYOGRE, gMonStillFrontPic_Kyogre),
+ SPECIES_SPRITE(GROUDON, gMonStillFrontPic_Groudon),
+ SPECIES_SPRITE(RAYQUAZA, gMonStillFrontPic_Rayquaza),
+ SPECIES_SPRITE(LATIAS, gMonStillFrontPic_Latias),
+ SPECIES_SPRITE(LATIOS, gMonStillFrontPic_Latios),
+ SPECIES_SPRITE(JIRACHI, gMonStillFrontPic_Jirachi),
+ SPECIES_SPRITE(DEOXYS, gMonStillFrontPic_Deoxys),
+ SPECIES_SPRITE(CHIMECHO, gMonStillFrontPic_Chimecho),
+ SPECIES_SPRITE(EGG, gMonStillFrontPic_Egg),
+ SPECIES_SPRITE(UNOWN_B, gMonStillFrontPic_UnownB),
+ SPECIES_SPRITE(UNOWN_C, gMonStillFrontPic_UnownC),
+ SPECIES_SPRITE(UNOWN_D, gMonStillFrontPic_UnownD),
+ SPECIES_SPRITE(UNOWN_E, gMonStillFrontPic_UnownE),
+ SPECIES_SPRITE(UNOWN_F, gMonStillFrontPic_UnownF),
+ SPECIES_SPRITE(UNOWN_G, gMonStillFrontPic_UnownG),
+ SPECIES_SPRITE(UNOWN_H, gMonStillFrontPic_UnownH),
+ SPECIES_SPRITE(UNOWN_I, gMonStillFrontPic_UnownI),
+ SPECIES_SPRITE(UNOWN_J, gMonStillFrontPic_UnownJ),
+ SPECIES_SPRITE(UNOWN_K, gMonStillFrontPic_UnownK),
+ SPECIES_SPRITE(UNOWN_L, gMonStillFrontPic_UnownL),
+ SPECIES_SPRITE(UNOWN_M, gMonStillFrontPic_UnownM),
+ SPECIES_SPRITE(UNOWN_N, gMonStillFrontPic_UnownN),
+ SPECIES_SPRITE(UNOWN_O, gMonStillFrontPic_UnownO),
+ SPECIES_SPRITE(UNOWN_P, gMonStillFrontPic_UnownP),
+ SPECIES_SPRITE(UNOWN_Q, gMonStillFrontPic_UnownQ),
+ SPECIES_SPRITE(UNOWN_R, gMonStillFrontPic_UnownR),
+ SPECIES_SPRITE(UNOWN_S, gMonStillFrontPic_UnownS),
+ SPECIES_SPRITE(UNOWN_T, gMonStillFrontPic_UnownT),
+ SPECIES_SPRITE(UNOWN_U, gMonStillFrontPic_UnownU),
+ SPECIES_SPRITE(UNOWN_V, gMonStillFrontPic_UnownV),
+ SPECIES_SPRITE(UNOWN_W, gMonStillFrontPic_UnownW),
+ SPECIES_SPRITE(UNOWN_X, gMonStillFrontPic_UnownX),
+ SPECIES_SPRITE(UNOWN_Y, gMonStillFrontPic_UnownY),
+ SPECIES_SPRITE(UNOWN_Z, gMonStillFrontPic_UnownZ),
+ SPECIES_SPRITE(UNOWN_EMARK, gMonStillFrontPic_UnownExclamationMark),
+ SPECIES_SPRITE(UNOWN_QMARK, gMonStillFrontPic_UnownQuestionMark),
};
diff --git a/src/data/pokemon_graphics/unknown_anims.h b/src/data/pokemon_graphics/unknown_anims.h
index 313e7ae35..bb4862d09 100644
--- a/src/data/pokemon_graphics/unknown_anims.h
+++ b/src/data/pokemon_graphics/unknown_anims.h
@@ -1,36 +1,5 @@
-const union AnimCmd gUnknown_082FF6EC[] =
-{
- ANIMCMD_FRAME(0, 0),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_082FF6F4[] =
-{
- ANIMCMD_FRAME(1, 0),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_082FF6FC[] =
-{
- ANIMCMD_FRAME(2, 0),
- ANIMCMD_END,
-};
-
-const union AnimCmd gUnknown_082FF704[] =
-{
- ANIMCMD_FRAME(3, 0),
- ANIMCMD_END,
-};
-
-const union AnimCmd *const gPlayerMonSpriteAnimsTable[] =
-{
- gUnknown_082FF6EC,
- gUnknown_082FF6F4,
- gUnknown_082FF6FC,
- gUnknown_082FF704,
-};
-
-const union AnimCmd gUnknown_082FF71C[] =
+// unused and unkown
+static const union AnimCmd gUnknown_082FF71C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_FRAME(1, 25),
@@ -40,7 +9,7 @@ const union AnimCmd gUnknown_082FF71C[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF734[] =
+static const union AnimCmd gUnknown_082FF734[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_FRAME(2, 8),
@@ -48,20 +17,20 @@ const union AnimCmd gUnknown_082FF734[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF744[] =
+static const union AnimCmd gUnknown_082FF744[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(2, 10),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF750[] =
+static const union AnimCmd gUnknown_082FF750[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF758[] =
+static const union AnimCmd gUnknown_082FF758[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_FRAME(1, 5),
@@ -72,7 +41,7 @@ const union AnimCmd gUnknown_082FF758[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF774[] =
+static const union AnimCmd gUnknown_082FF774[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_FRAME(2, 12),
@@ -83,14 +52,14 @@ const union AnimCmd gUnknown_082FF774[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF790[] =
+static const union AnimCmd gUnknown_082FF790[] =
{
ANIMCMD_FRAME(0, 14),
ANIMCMD_FRAME(2, 12),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF79C[] =
+static const union AnimCmd gUnknown_082FF79C[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 10),
@@ -99,7 +68,7 @@ const union AnimCmd gUnknown_082FF79C[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF7B0[] =
+static const union AnimCmd gUnknown_082FF7B0[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(2, 10),
@@ -108,193 +77,193 @@ const union AnimCmd gUnknown_082FF7B0[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF7C4[] =
+static const union AnimCmd gUnknown_082FF7C4[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF7CC[] =
+static const union AnimCmd gUnknown_082FF7CC[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF7D4[] =
+static const union AnimCmd gUnknown_082FF7D4[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF7DC[] =
+static const union AnimCmd gUnknown_082FF7DC[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF7E4[] =
+static const union AnimCmd gUnknown_082FF7E4[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF7EC[] =
+static const union AnimCmd gUnknown_082FF7EC[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF7F4[] =
+static const union AnimCmd gUnknown_082FF7F4[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF7FC[] =
+static const union AnimCmd gUnknown_082FF7FC[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF804[] =
+static const union AnimCmd gUnknown_082FF804[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF80C[] =
+static const union AnimCmd gUnknown_082FF80C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF814[] =
+static const union AnimCmd gUnknown_082FF814[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF81C[] =
+static const union AnimCmd gUnknown_082FF81C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF824[] =
+static const union AnimCmd gUnknown_082FF824[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF82C[] =
+static const union AnimCmd gUnknown_082FF82C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF834[] =
+static const union AnimCmd gUnknown_082FF834[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF83C[] =
+static const union AnimCmd gUnknown_082FF83C[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF844[] =
+static const union AnimCmd gUnknown_082FF844[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF84C[] =
+static const union AnimCmd gUnknown_082FF84C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF854[] =
+static const union AnimCmd gUnknown_082FF854[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF85C[] =
+static const union AnimCmd gUnknown_082FF85C[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF864[] =
+static const union AnimCmd gUnknown_082FF864[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF86C[] =
+static const union AnimCmd gUnknown_082FF86C[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF874[] =
+static const union AnimCmd gUnknown_082FF874[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF87C[] =
+static const union AnimCmd gUnknown_082FF87C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF884[] =
+static const union AnimCmd gUnknown_082FF884[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF88C[] =
+static const union AnimCmd gUnknown_082FF88C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF894[] =
+static const union AnimCmd gUnknown_082FF894[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF89C[] =
+static const union AnimCmd gUnknown_082FF89C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF8A4[] =
+static const union AnimCmd gUnknown_082FF8A4[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF8AC[] =
+static const union AnimCmd gUnknown_082FF8AC[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF8B4[] =
+static const union AnimCmd gUnknown_082FF8B4[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF8BC[] =
+static const union AnimCmd gUnknown_082FF8BC[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(8, 15),
@@ -314,7 +283,7 @@ const union AnimCmd gUnknown_082FF8BC[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF8FC[] =
+static const union AnimCmd gUnknown_082FF8FC[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(8, 15),
@@ -326,7 +295,7 @@ const union AnimCmd gUnknown_082FF8FC[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF91C[] =
+static const union AnimCmd gUnknown_082FF91C[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(9, 10),
@@ -335,26 +304,26 @@ const union AnimCmd gUnknown_082FF91C[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF930[] =
+static const union AnimCmd gUnknown_082FF930[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(11, 15),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF93C[] =
+static const union AnimCmd gUnknown_082FF93C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF944[] =
+static const union AnimCmd gUnknown_082FF944[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF94C[] =
+static const union AnimCmd gUnknown_082FF94C[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 7),
@@ -381,7 +350,7 @@ const union AnimCmd gUnknown_082FF94C[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FF9A8[] =
+static const union AnimCmd gUnknown_082FF9A8[] =
{
ANIMCMD_FRAME(0, 12),
ANIMCMD_FRAME(7, 12),
@@ -407,7 +376,7 @@ const union AnimCmd gUnknown_082FF9A8[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFA00[] =
+static const union AnimCmd gUnknown_082FFA00[] =
{
ANIMCMD_FRAME(0, 12),
ANIMCMD_FRAME(7, 12),
@@ -433,182 +402,182 @@ const union AnimCmd gUnknown_082FFA00[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFA58[] =
+static const union AnimCmd gUnknown_082FFA58[] =
{
ANIMCMD_FRAME(0,18),
ANIMCMD_FRAME(10, 18),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFA64[] =
+static const union AnimCmd gUnknown_082FFA64[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFA6C[] =
+static const union AnimCmd gUnknown_082FFA6C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFA74[] =
+static const union AnimCmd gUnknown_082FFA74[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFA7C[] =
+static const union AnimCmd gUnknown_082FFA7C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFA84[] =
+static const union AnimCmd gUnknown_082FFA84[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFA8C[] =
+static const union AnimCmd gUnknown_082FFA8C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFA94[] =
+static const union AnimCmd gUnknown_082FFA94[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFA9C[] =
+static const union AnimCmd gUnknown_082FFA9C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFAA4[] =
+static const union AnimCmd gUnknown_082FFAA4[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFAAC[] =
+static const union AnimCmd gUnknown_082FFAAC[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFAB4[] =
+static const union AnimCmd gUnknown_082FFAB4[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFABC[] =
+static const union AnimCmd gUnknown_082FFABC[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFAC4[] =
+static const union AnimCmd gUnknown_082FFAC4[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFACC[] =
+static const union AnimCmd gUnknown_082FFACC[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFAD4[] =
+static const union AnimCmd gUnknown_082FFAD4[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFADC[] =
+static const union AnimCmd gUnknown_082FFADC[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFAE4[] =
+static const union AnimCmd gUnknown_082FFAE4[] =
{
ANIMCMD_FRAME(0, 63),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFAEC[] =
+static const union AnimCmd gUnknown_082FFAEC[] =
{
ANIMCMD_FRAME(0, 63),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFAF4[] =
+static const union AnimCmd gUnknown_082FFAF4[] =
{
ANIMCMD_FRAME(0, 63),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFAFC[] =
+static const union AnimCmd gUnknown_082FFAFC[] =
{
ANIMCMD_FRAME(0, 63),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFB04[] =
+static const union AnimCmd gUnknown_082FFB04[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFB0C[] =
+static const union AnimCmd gUnknown_082FFB0C[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFB14[] =
+static const union AnimCmd gUnknown_082FFB14[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFB1C[] =
+static const union AnimCmd gUnknown_082FFB1C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFB24[] =
+static const union AnimCmd gUnknown_082FFB24[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFB2C[] =
+static const union AnimCmd gUnknown_082FFB2C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFB34[] =
+static const union AnimCmd gUnknown_082FFB34[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFB3C[] =
+static const union AnimCmd gUnknown_082FFB3C[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFB44[] =
+static const union AnimCmd gUnknown_082FFB44[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_FRAME(1, 18),
@@ -619,7 +588,7 @@ const union AnimCmd gUnknown_082FFB44[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFB60[] =
+static const union AnimCmd gUnknown_082FFB60[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_FRAME(2, 18),
@@ -630,7 +599,7 @@ const union AnimCmd gUnknown_082FFB60[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFB7C[] =
+static const union AnimCmd gUnknown_082FFB7C[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_FRAME(2, 5),
@@ -650,7 +619,7 @@ const union AnimCmd gUnknown_082FFB7C[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFBBC[] =
+static const union AnimCmd gUnknown_082FFBBC[] =
{
ANIMCMD_FRAME(0, 6),
ANIMCMD_FRAME(1, 6),
@@ -663,7 +632,7 @@ const union AnimCmd gUnknown_082FFBBC[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFBE0[] =
+static const union AnimCmd gUnknown_082FFBE0[] =
{
ANIMCMD_FRAME(0, 12),
ANIMCMD_FRAME(5, 12),
@@ -672,61 +641,61 @@ const union AnimCmd gUnknown_082FFBE0[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFBF4[] =
+static const union AnimCmd gUnknown_082FFBF4[] =
{
ANIMCMD_FRAME(7, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFBFC[] =
+static const union AnimCmd gUnknown_082FFBFC[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFC04[] =
+static const union AnimCmd gUnknown_082FFC04[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFC0C[] =
+static const union AnimCmd gUnknown_082FFC0C[] =
{
ANIMCMD_FRAME(0, 63),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFC14[] =
+static const union AnimCmd gUnknown_082FFC14[] =
{
ANIMCMD_FRAME(0, 63),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFC1C[] =
+static const union AnimCmd gUnknown_082FFC1C[] =
{
ANIMCMD_FRAME(0, 63),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFC24[] =
+static const union AnimCmd gUnknown_082FFC24[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFC2C[] =
+static const union AnimCmd gUnknown_082FFC2C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFC34[] =
+static const union AnimCmd gUnknown_082FFC34[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFC3C[] =
+static const union AnimCmd gUnknown_082FFC3C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_FRAME(1, 10),
@@ -737,7 +706,7 @@ const union AnimCmd gUnknown_082FFC3C[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFC58[] =
+static const union AnimCmd gUnknown_082FFC58[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_FRAME(2, 8),
@@ -748,217 +717,217 @@ const union AnimCmd gUnknown_082FFC58[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFC74[] =
+static const union AnimCmd gUnknown_082FFC74[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFC7C[] =
+static const union AnimCmd gUnknown_082FFC7C[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFC84[] =
+static const union AnimCmd gUnknown_082FFC84[] =
{
ANIMCMD_FRAME(1, 9),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFC8C[] =
+static const union AnimCmd gUnknown_082FFC8C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFC94[] =
+static const union AnimCmd gUnknown_082FFC94[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFC9C[] =
+static const union AnimCmd gUnknown_082FFC9C[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFCA4[] =
+static const union AnimCmd gUnknown_082FFCA4[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFCAC[] =
+static const union AnimCmd gUnknown_082FFCAC[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFCB4[] =
+static const union AnimCmd gUnknown_082FFCB4[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFCBC[] =
+static const union AnimCmd gUnknown_082FFCBC[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFCC4[] =
+static const union AnimCmd gUnknown_082FFCC4[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFCCC[] =
+static const union AnimCmd gUnknown_082FFCCC[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFCD4[] =
+static const union AnimCmd gUnknown_082FFCD4[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFCDC[] =
+static const union AnimCmd gUnknown_082FFCDC[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFCE4[] =
+static const union AnimCmd gUnknown_082FFCE4[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFCEC[] =
+static const union AnimCmd gUnknown_082FFCEC[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFCF4[] =
+static const union AnimCmd gUnknown_082FFCF4[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFCFC[] =
+static const union AnimCmd gUnknown_082FFCFC[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFD04[] =
+static const union AnimCmd gUnknown_082FFD04[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFD0C[] =
+static const union AnimCmd gUnknown_082FFD0C[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFD14[] =
+static const union AnimCmd gUnknown_082FFD14[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFD1C[] =
+static const union AnimCmd gUnknown_082FFD1C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFD24[] =
+static const union AnimCmd gUnknown_082FFD24[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFD2C[] =
+static const union AnimCmd gUnknown_082FFD2C[] =
{
ANIMCMD_FRAME(2, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFD34[] =
+static const union AnimCmd gUnknown_082FFD34[] =
{
ANIMCMD_FRAME(3, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFD3C[] =
+static const union AnimCmd gUnknown_082FFD3C[] =
{
ANIMCMD_FRAME(0, 63),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFD44[] =
+static const union AnimCmd gUnknown_082FFD44[] =
{
ANIMCMD_FRAME(0, 63),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFD4C[] =
+static const union AnimCmd gUnknown_082FFD4C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFD54[] =
+static const union AnimCmd gUnknown_082FFD54[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFD5C[] =
+static const union AnimCmd gUnknown_082FFD5C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFD64[] =
+static const union AnimCmd gUnknown_082FFD64[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFD6C[] =
+static const union AnimCmd gUnknown_082FFD6C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFD74[] =
+static const union AnimCmd gUnknown_082FFD74[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFD7C[] =
+static const union AnimCmd gUnknown_082FFD7C[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFD84[] =
+static const union AnimCmd gUnknown_082FFD84[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFD8C[] =
+static const union AnimCmd gUnknown_082FFD8C[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(1, 30),
@@ -967,7 +936,7 @@ const union AnimCmd gUnknown_082FFD8C[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFDA0[] =
+static const union AnimCmd gUnknown_082FFDA0[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(2, 20),
@@ -976,933 +945,933 @@ const union AnimCmd gUnknown_082FFDA0[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFDB4[] =
+static const union AnimCmd gUnknown_082FFDB4[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFDBC[] =
+static const union AnimCmd gUnknown_082FFDBC[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_082FFDC4[] =
+static const union AnimCmd gUnknown_082FFDC4[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd *const gUnknown_082FFDCC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFDD0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFDD4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFDD8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFDDC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFDE0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFDE4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFDE8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFDEC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFDF0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFDF4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFDF8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFDFC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE00[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE04[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE08[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE0C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE10[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE14[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE18[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE1C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE20[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE24[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE28[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE2C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE30[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE34[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE38[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE3C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE40[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE44[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE48[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE4C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE50[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE54[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE58[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE5C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE60[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE64[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE68[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE6C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE70[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE74[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE78[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE7C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE80[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE84[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE88[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE8C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE90[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE94[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE98[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFE9C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFEA0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFEA4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFEA8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFEAC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFEB0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFEB4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFEB8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFEBC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFEC0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFEC4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFEC8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFECC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFED0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFED4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFED8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFEDC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFEE0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFEE4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFEE8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFEEC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFEF0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFEF4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFEF8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFEFC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF00[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF04[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF08[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF0C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF10[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF14[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF18[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF1C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF20[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF24[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF28[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF2C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF30[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF34[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF38[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF3C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF40[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF44[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF48[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF4C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF50[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF54[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF58[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF5C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF60[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF64[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF68[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF6C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF70[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF74[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF78[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF7C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF80[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF84[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF88[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF8C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF90[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF94[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF98[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFF9C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFA0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFA4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFA8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFAC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFB0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFB4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFB8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFBC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFC0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFC4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFC8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFCC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFD0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFD4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFD8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFDC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFE0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFE4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFE8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFEC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFF0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFF4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFF8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_082FFFFC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300000[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300004[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300008[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830000C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300010[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300014[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300018[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830001C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300020[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300024[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300028[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830002C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300030[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300034[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300038[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830003C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300040[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300044[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300048[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830004C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300050[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300054[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300058[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830005C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300060[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300064[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300068[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830006C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300070[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300074[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300078[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830007C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300080[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300084[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300088[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830008C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300090[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300094[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300098[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830009C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000A0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000A4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000A8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000AC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000B0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000B4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000B8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000BC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000C0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000C4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000C8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000CC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000D0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000D4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000D8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000DC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000E0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000E4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000E8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000EC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000F0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000F4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000F8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083000FC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300100[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300104[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300108[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830010C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300110[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300114[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300118[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830011C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300120[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300124[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300128[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830012C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300130[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300134[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300138[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830013C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300140[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300144[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300148[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830014C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300150[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300154[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300158[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830015C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300160[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300164[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300168[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830016C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300170[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300174[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300178[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830017C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300180[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300184[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300188[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830018C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300190[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300194[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300198[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830019C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083001A0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083001A4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083001A8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083001AC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083001B0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083001B4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083001B8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083001BC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083001C0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083001C4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083001C8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083001CC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083001D0[] = {gAnimCmd_General_Frame0};
-
-const union AnimCmd *const gUnknown_083001D4[] =
-{
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const gUnknown_082FFDCC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFDD0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFDD4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFDD8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFDDC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFDE0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFDE4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFDE8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFDEC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFDF0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFDF4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFDF8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFDFC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE00[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE04[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE08[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE0C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE10[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE14[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE18[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE1C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE20[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE24[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE28[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE2C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE30[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE34[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE38[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE3C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE40[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE44[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE48[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE4C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE50[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE54[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE58[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE5C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE60[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE64[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE68[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE6C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE70[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE74[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE78[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE7C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE80[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE84[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE88[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE8C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE90[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE94[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE98[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFE9C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFEA0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFEA4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFEA8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFEAC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFEB0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFEB4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFEB8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFEBC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFEC0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFEC4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFEC8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFECC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFED0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFED4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFED8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFEDC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFEE0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFEE4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFEE8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFEEC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFEF0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFEF4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFEF8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFEFC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF00[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF04[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF08[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF0C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF10[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF14[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF18[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF1C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF20[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF24[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF28[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF2C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF30[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF34[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF38[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF3C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF40[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF44[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF48[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF4C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF50[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF54[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF58[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF5C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF60[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF64[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF68[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF6C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF70[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF74[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF78[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF7C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF80[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF84[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF88[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF8C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF90[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF94[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF98[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFF9C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFA0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFA4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFA8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFAC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFB0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFB4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFB8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFBC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFC0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFC4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFC8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFCC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFD0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFD4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFD8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFDC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFE0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFE4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFE8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFEC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFF0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFF4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFF8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_082FFFFC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300000[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300004[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300008[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830000C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300010[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300014[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300018[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830001C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300020[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300024[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300028[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830002C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300030[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300034[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300038[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830003C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300040[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300044[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300048[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830004C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300050[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300054[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300058[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830005C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300060[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300064[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300068[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830006C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300070[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300074[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300078[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830007C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300080[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300084[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300088[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830008C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300090[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300094[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300098[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830009C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000A0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000A4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000A8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000AC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000B0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000B4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000B8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000BC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000C0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000C4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000C8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000CC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000D0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000D4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000D8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000DC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000E0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000E4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000E8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000EC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000F0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000F4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000F8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083000FC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300100[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300104[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300108[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830010C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300110[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300114[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300118[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830011C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300120[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300124[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300128[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830012C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300130[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300134[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300138[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830013C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300140[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300144[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300148[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830014C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300150[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300154[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300158[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830015C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300160[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300164[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300168[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830016C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300170[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300174[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300178[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830017C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300180[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300184[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300188[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830018C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300190[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300194[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300198[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830019C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083001A0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083001A4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083001A8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083001AC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083001B0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083001B4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083001B8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083001BC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083001C0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083001C4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083001C8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083001CC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083001D0[] = {sAnim_GeneralFrame0};
+
+static const union AnimCmd *const gUnknown_083001D4[] =
+{
+ sAnim_GeneralFrame0,
gUnknown_082FF71C,
gUnknown_082FF734,
gUnknown_082FF744,
gUnknown_082FF750,
};
-const union AnimCmd *const gUnknown_083001E8[] = {gAnimCmd_General_Frame0};
+static const union AnimCmd *const gUnknown_083001E8[] = {sAnim_GeneralFrame0};
-const union AnimCmd *const gUnknown_083001EC[] =
+static const union AnimCmd *const gUnknown_083001EC[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF758,
gUnknown_082FF774,
gUnknown_082FF790,
};
-const union AnimCmd *const gUnknown_083001FC[] = {gAnimCmd_General_Frame0};
+static const union AnimCmd *const gUnknown_083001FC[] = {sAnim_GeneralFrame0};
-const union AnimCmd *const gUnknown_08300200[] =
+static const union AnimCmd *const gUnknown_08300200[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF79C,
gUnknown_082FF7B0,
};
-const union AnimCmd *const gUnknown_0830020C[] =
+static const union AnimCmd *const gUnknown_0830020C[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF7C4,
};
-const union AnimCmd *const gUnknown_08300214[] =
+static const union AnimCmd *const gUnknown_08300214[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF7CC,
};
-const union AnimCmd *const gUnknown_0830021C[] =
+static const union AnimCmd *const gUnknown_0830021C[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF7D4,
};
-const union AnimCmd *const gUnknown_08300224[] =
+static const union AnimCmd *const gUnknown_08300224[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF7DC,
gUnknown_082FF7E4,
};
-const union AnimCmd *const gUnknown_08300230[] =
+static const union AnimCmd *const gUnknown_08300230[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF7EC,
gUnknown_082FF7F4,
};
-const union AnimCmd *const gUnknown_0830023C[] =
+static const union AnimCmd *const gUnknown_0830023C[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF7FC,
gUnknown_082FF804,
};
-const union AnimCmd *const gUnknown_08300248[] =
+static const union AnimCmd *const gUnknown_08300248[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF80C,
gUnknown_082FF814,
};
-const union AnimCmd *const gUnknown_08300254[] =
+static const union AnimCmd *const gUnknown_08300254[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF81C,
gUnknown_082FF824,
};
-const union AnimCmd *const gUnknown_08300260[] = {gAnimCmd_General_Frame0};
+static const union AnimCmd *const gUnknown_08300260[] = {sAnim_GeneralFrame0};
-const union AnimCmd *const gUnknown_08300264[] =
+static const union AnimCmd *const gUnknown_08300264[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF82C,
};
-const union AnimCmd *const gUnknown_0830026C[] =
+static const union AnimCmd *const gUnknown_0830026C[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF834,
gUnknown_082FF83C,
};
-const union AnimCmd *const gUnknown_08300278[] =
+static const union AnimCmd *const gUnknown_08300278[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF844,
};
-const union AnimCmd *const gUnknown_08300280[] =
+static const union AnimCmd *const gUnknown_08300280[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF84C,
};
-const union AnimCmd *const gUnknown_08300288[] =
+static const union AnimCmd *const gUnknown_08300288[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF854,
gUnknown_082FF85C,
};
-const union AnimCmd *const gUnknown_08300294[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300298[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830029C[] = {gAnimCmd_General_Frame0};
+static const union AnimCmd *const gUnknown_08300294[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300298[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830029C[] = {sAnim_GeneralFrame0};
-const union AnimCmd *const gUnknown_083002A0[] =
+static const union AnimCmd *const gUnknown_083002A0[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF864,
};
-const union AnimCmd *const gUnknown_083002A8[] =
+static const union AnimCmd *const gUnknown_083002A8[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF86C,
};
-const union AnimCmd *const gUnknown_083002B0[] =
+static const union AnimCmd *const gUnknown_083002B0[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF874,
};
-const union AnimCmd *const gUnknown_083002B8[] =
+static const union AnimCmd *const gUnknown_083002B8[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF87C,
};
-const union AnimCmd *const gUnknown_083002C0[] = {gAnimCmd_General_Frame0};
+static const union AnimCmd *const gUnknown_083002C0[] = {sAnim_GeneralFrame0};
-const union AnimCmd *const gUnknown_083002C4[] =
+static const union AnimCmd *const gUnknown_083002C4[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF884,
};
-const union AnimCmd *const gUnknown_083002CC[] =
+static const union AnimCmd *const gUnknown_083002CC[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF88C,
gUnknown_082FF894,
};
-const union AnimCmd *const gUnknown_083002D8[] =
+static const union AnimCmd *const gUnknown_083002D8[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF89C,
gUnknown_082FF8A4,
};
-const union AnimCmd *const gUnknown_083002E4[] =
+static const union AnimCmd *const gUnknown_083002E4[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF8AC,
gUnknown_082FF8B4,
};
-const union AnimCmd *const gUnknown_083002F0[] =
+static const union AnimCmd *const gUnknown_083002F0[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF8BC,
gUnknown_082FF8FC,
gUnknown_082FF91C,
gUnknown_082FF930,
};
-const union AnimCmd *const gUnknown_08300304[] = {gAnimCmd_General_Frame0};
+static const union AnimCmd *const gUnknown_08300304[] = {sAnim_GeneralFrame0};
-const union AnimCmd *const gUnknown_08300308[] =
+static const union AnimCmd *const gUnknown_08300308[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF93C,
};
-const union AnimCmd *const gUnknown_08300310[] =
+static const union AnimCmd *const gUnknown_08300310[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF944,
};
-const union AnimCmd *const gUnknown_08300318[] =
+static const union AnimCmd *const gUnknown_08300318[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FF94C,
gUnknown_082FF9A8,
gUnknown_082FFA00,
gUnknown_082FFA58,
};
-const union AnimCmd *const gUnknown_0830032C[] =
+static const union AnimCmd *const gUnknown_0830032C[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFA64,
};
-const union AnimCmd *const gUnknown_08300334[] =
+static const union AnimCmd *const gUnknown_08300334[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFA6C,
};
-const union AnimCmd *const gUnknown_0830033C[] =
+static const union AnimCmd *const gUnknown_0830033C[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFA74,
};
-const union AnimCmd *const gUnknown_08300344[] = {gAnimCmd_General_Frame0};
+static const union AnimCmd *const gUnknown_08300344[] = {sAnim_GeneralFrame0};
-const union AnimCmd *const gUnknown_08300348[] =
+static const union AnimCmd *const gUnknown_08300348[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFA7C,
gUnknown_082FFA84,
};
-const union AnimCmd *const gUnknown_08300354[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300358[] = {gAnimCmd_General_Frame0};
+static const union AnimCmd *const gUnknown_08300354[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300358[] = {sAnim_GeneralFrame0};
-const union AnimCmd *const gUnknown_0830035C[] =
+static const union AnimCmd *const gUnknown_0830035C[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFA8C,
gUnknown_082FFA94,
};
-const union AnimCmd *const gUnknown_08300368[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830036C[] = {gAnimCmd_General_Frame0};
+static const union AnimCmd *const gUnknown_08300368[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830036C[] = {sAnim_GeneralFrame0};
-const union AnimCmd *const gUnknown_08300370[] =
+static const union AnimCmd *const gUnknown_08300370[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFA9C,
gUnknown_082FFAA4,
};
-const union AnimCmd *const gUnknown_0830037C[] =
+static const union AnimCmd *const gUnknown_0830037C[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFAAC,
gUnknown_082FFAB4,
};
-const union AnimCmd *const gUnknown_08300388[] =
+static const union AnimCmd *const gUnknown_08300388[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFABC,
gUnknown_082FFAC4,
};
-const union AnimCmd *const gUnknown_08300394[] =
+static const union AnimCmd *const gUnknown_08300394[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFACC,
gUnknown_082FFAD4,
};
-const union AnimCmd *const gUnknown_083003A0[] =
+static const union AnimCmd *const gUnknown_083003A0[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFADC,
};
-const union AnimCmd *const gUnknown_083003A8[] =
+static const union AnimCmd *const gUnknown_083003A8[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFAE4,
};
-const union AnimCmd *const gUnknown_083003B0[] =
+static const union AnimCmd *const gUnknown_083003B0[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFAEC,
};
-const union AnimCmd *const gUnknown_083003B8[] =
+static const union AnimCmd *const gUnknown_083003B8[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFAF4,
};
-const union AnimCmd *const gUnknown_083003C0[] =
+static const union AnimCmd *const gUnknown_083003C0[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFAFC,
};
-const union AnimCmd *const gUnknown_083003C8[] =
+static const union AnimCmd *const gUnknown_083003C8[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFB04,
gUnknown_082FFB0C,
};
-const union AnimCmd *const gUnknown_083003D4[] =
+static const union AnimCmd *const gUnknown_083003D4[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFB14,
};
-const union AnimCmd *const gUnknown_083003DC[] =
+static const union AnimCmd *const gUnknown_083003DC[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFB1C,
gUnknown_082FFB24,
};
-const union AnimCmd *const gUnknown_083003E8[] =
+static const union AnimCmd *const gUnknown_083003E8[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFB2C,
};
-const union AnimCmd *const gUnknown_083003F0[] =
+static const union AnimCmd *const gUnknown_083003F0[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFB34,
};
-const union AnimCmd *const gUnknown_083003F8[] =
+static const union AnimCmd *const gUnknown_083003F8[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFB3C,
};
-const union AnimCmd *const gUnknown_08300400[] =
+static const union AnimCmd *const gUnknown_08300400[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFB44,
gUnknown_082FFB60,
};
-const union AnimCmd *const gUnknown_0830040C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300410[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300414[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300418[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830041C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300420[] = {gAnimCmd_General_Frame0};
+static const union AnimCmd *const gUnknown_0830040C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300410[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300414[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300418[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830041C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300420[] = {sAnim_GeneralFrame0};
-const union AnimCmd *const gUnknown_08300424[] =
+static const union AnimCmd *const gUnknown_08300424[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFB7C,
gUnknown_082FFBBC,
gUnknown_082FFBE0,
gUnknown_082FFBF4,
};
-const union AnimCmd *const gUnknown_08300438[] =
+static const union AnimCmd *const gUnknown_08300438[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFBFC,
gUnknown_082FFC04,
};
-const union AnimCmd *const gUnknown_08300444[] =
+static const union AnimCmd *const gUnknown_08300444[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFC0C,
};
-const union AnimCmd *const gUnknown_0830044C[] =
+static const union AnimCmd *const gUnknown_0830044C[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFC14,
};
-const union AnimCmd *const gUnknown_08300454[] =
+static const union AnimCmd *const gUnknown_08300454[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFC1C,
};
-const union AnimCmd *const gUnknown_0830045C[] =
+static const union AnimCmd *const gUnknown_0830045C[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFC24,
};
-const union AnimCmd *const gUnknown_08300464[] =
+static const union AnimCmd *const gUnknown_08300464[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFC2C,
};
-const union AnimCmd *const gUnknown_0830046C[] =
+static const union AnimCmd *const gUnknown_0830046C[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFC34,
};
-const union AnimCmd *const gUnknown_08300474[] =
+static const union AnimCmd *const gUnknown_08300474[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFC3C,
gUnknown_082FFC58,
};
-const union AnimCmd *const gUnknown_08300480[] =
+static const union AnimCmd *const gUnknown_08300480[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFC74,
};
-const union AnimCmd *const gUnknown_08300488[] =
+static const union AnimCmd *const gUnknown_08300488[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFC7C,
gUnknown_082FFC84,
};
-const union AnimCmd *const gUnknown_08300494[] =
+static const union AnimCmd *const gUnknown_08300494[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFC8C,
gUnknown_082FFC94,
};
-const union AnimCmd *const gUnknown_083004A0[] =
+static const union AnimCmd *const gUnknown_083004A0[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFC9C,
gUnknown_082FFCA4,
};
-const union AnimCmd *const gUnknown_083004AC[] = {gAnimCmd_General_Frame0};
+static const union AnimCmd *const gUnknown_083004AC[] = {sAnim_GeneralFrame0};
-const union AnimCmd *const gUnknown_083004B0[] =
+static const union AnimCmd *const gUnknown_083004B0[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFCAC,
};
-const union AnimCmd *const gUnknown_083004B8[] =
+static const union AnimCmd *const gUnknown_083004B8[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFCB4,
};
-const union AnimCmd *const gUnknown_083004C0[] =
+static const union AnimCmd *const gUnknown_083004C0[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFCBC,
};
-const union AnimCmd *const gUnknown_083004C8[] =
+static const union AnimCmd *const gUnknown_083004C8[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFCC4,
};
-const union AnimCmd *const gUnknown_083004D0[] =
+static const union AnimCmd *const gUnknown_083004D0[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFCCC,
};
-const union AnimCmd *const gUnknown_083004D8[] =
+static const union AnimCmd *const gUnknown_083004D8[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFCD4,
};
-const union AnimCmd *const gUnknown_083004E0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083004E4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083004E8[] = {gAnimCmd_General_Frame0};
+static const union AnimCmd *const gUnknown_083004E0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083004E4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083004E8[] = {sAnim_GeneralFrame0};
-const union AnimCmd *const gUnknown_083004EC[] =
+static const union AnimCmd *const gUnknown_083004EC[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFCDC,
};
-const union AnimCmd *const gUnknown_083004F4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083004F8[] = {gAnimCmd_General_Frame0};
+static const union AnimCmd *const gUnknown_083004F4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083004F8[] = {sAnim_GeneralFrame0};
-const union AnimCmd *const gUnknown_083004FC[] =
+static const union AnimCmd *const gUnknown_083004FC[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFCE4,
};
-const union AnimCmd *const gUnknown_08300504[] =
+static const union AnimCmd *const gUnknown_08300504[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFCEC,
gUnknown_082FFCF4,
};
-const union AnimCmd *const gUnknown_08300510[] =
+static const union AnimCmd *const gUnknown_08300510[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFCFC,
};
-const union AnimCmd *const gUnknown_08300518[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830051C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300520[] = {gAnimCmd_General_Frame0};
+static const union AnimCmd *const gUnknown_08300518[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830051C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300520[] = {sAnim_GeneralFrame0};
-const union AnimCmd *const gUnknown_08300524[] =
+static const union AnimCmd *const gUnknown_08300524[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFD04,
};
-const union AnimCmd *const gUnknown_0830052C[] =
+static const union AnimCmd *const gUnknown_0830052C[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFD0C,
};
-const union AnimCmd *const gUnknown_08300534[] =
+static const union AnimCmd *const gUnknown_08300534[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFD14,
};
-const union AnimCmd *const gUnknown_0830053C[] =
+static const union AnimCmd *const gUnknown_0830053C[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFD1C,
gUnknown_082FFD24,
gUnknown_082FFD2C,
gUnknown_082FFD34,
};
-const union AnimCmd *const gUnknown_08300550[] =
+static const union AnimCmd *const gUnknown_08300550[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFD3C,
};
-const union AnimCmd *const gUnknown_08300558[] =
+static const union AnimCmd *const gUnknown_08300558[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFD44,
};
-const union AnimCmd *const gUnknown_08300560[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300564[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300568[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830056C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300570[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300574[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300578[] = {gAnimCmd_General_Frame0};
+static const union AnimCmd *const gUnknown_08300560[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300564[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300568[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830056C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300570[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300574[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300578[] = {sAnim_GeneralFrame0};
-const union AnimCmd *const gUnknown_0830057C[] =
+static const union AnimCmd *const gUnknown_0830057C[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFD4C,
gUnknown_082FFD54,
};
-const union AnimCmd *const gUnknown_08300588[] = {gAnimCmd_General_Frame0};
+static const union AnimCmd *const gUnknown_08300588[] = {sAnim_GeneralFrame0};
-const union AnimCmd *const gUnknown_0830058C[] =
+static const union AnimCmd *const gUnknown_0830058C[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFD5C,
gUnknown_082FFD64,
};
-const union AnimCmd *const gUnknown_08300598[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830059C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083005A0[] = {gAnimCmd_General_Frame0};
+static const union AnimCmd *const gUnknown_08300598[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830059C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083005A0[] = {sAnim_GeneralFrame0};
-const union AnimCmd *const gUnknown_083005A4[] =
+static const union AnimCmd *const gUnknown_083005A4[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFD6C,
};
-const union AnimCmd *const gUnknown_083005AC[] =
+static const union AnimCmd *const gUnknown_083005AC[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFD74,
};
-const union AnimCmd *const gUnknown_083005B4[] =
+static const union AnimCmd *const gUnknown_083005B4[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFD7C,
gUnknown_082FFD84,
};
-const union AnimCmd *const gUnknown_083005C0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083005C4[] = {gAnimCmd_General_Frame0};
+static const union AnimCmd *const gUnknown_083005C0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083005C4[] = {sAnim_GeneralFrame0};
-const union AnimCmd *const gUnknown_083005C8[] =
+static const union AnimCmd *const gUnknown_083005C8[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFD8C,
gUnknown_082FFDA0,
};
-const union AnimCmd *const gUnknown_083005D4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083005D8[] = {gAnimCmd_General_Frame0};
+static const union AnimCmd *const gUnknown_083005D4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083005D8[] = {sAnim_GeneralFrame0};
-const union AnimCmd *const gUnknown_083005DC[] =
+static const union AnimCmd *const gUnknown_083005DC[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gUnknown_082FFDC4,
};
-const union AnimCmd *const gUnknown_083005E4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083005E8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083005EC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083005F0[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083005F4[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083005F8[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_083005FC[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300600[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300604[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300608[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830060C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300610[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300614[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300618[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830061C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300620[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300624[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300628[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830062C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300630[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300634[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300638[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830063C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300640[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300644[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300648[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_0830064C[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300650[] = {gAnimCmd_General_Frame0};
-const union AnimCmd *const gUnknown_08300654[] = {gAnimCmd_General_Frame0};
-
-const union AnimCmd *const *const gUnusedTrainerFrontAnimsPtrTable[] =
+static const union AnimCmd *const gUnknown_083005E4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083005E8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083005EC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083005F0[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083005F4[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083005F8[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_083005FC[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300600[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300604[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300608[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830060C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300610[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300614[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300618[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830061C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300620[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300624[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300628[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830062C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300630[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300634[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300638[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830063C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300640[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300644[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300648[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_0830064C[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300650[] = {sAnim_GeneralFrame0};
+static const union AnimCmd *const gUnknown_08300654[] = {sAnim_GeneralFrame0};
+
+const union AnimCmd *const *const gUnknownAnimsTable[] =
{
gUnknown_082FFDCC,
gUnknown_082FFDD0,
diff --git a/src/data/text/item_descriptions.h b/src/data/text/item_descriptions.h
index 1f048e440..5f79efc57 100644
--- a/src/data/text/item_descriptions.h
+++ b/src/data/text/item_descriptions.h
@@ -1,326 +1,1551 @@
-const u8 gDummyItemDescription[] = _("?????");
+static const u8 sDummyDesc[] = _(
+ "?????");
+
// Pokeballs
-const u8 gMasterBallItemDescription[] = _("The best BALL that\ncatches a POKéMON\nwithout fail.");
-const u8 gUltraBallItemDescription[] = _("A better BALL with\na higher catch rate\nthan a GREAT BALL.");
-const u8 gGreatBallItemDescription[] = _("A good BALL with a\nhigher catch rate\nthan a POKé BALL.");
-const u8 gPokeBallItemDescription[] = _("A tool used for\ncatching wild\nPOKéMON.");
-const u8 gSafariBallItemDescription[] = _("A special BALL that\nis used only in the\nSAFARI ZONE.");
-const u8 gNetBallItemDescription[] = _("A BALL that works\nwell on WATER- and\nBUG-type POKéMON.");
-const u8 gDiveBallItemDescription[] = _("A BALL that works\nbetter on POKéMON\non the ocean floor.");
-const u8 gNestBallItemDescription[] = _("A BALL that works\nbetter on weaker\nPOKéMON.");
-const u8 gRepeatBallItemDescription[] = _("A BALL that works\nbetter on POKéMON\ncaught before.");
-const u8 gTimerBallItemDescription[] = _("A BALL that gains\npower in battles\ntaking many turns.");
-const u8 gLuxuryBallItemDescription[] = _("A cozy BALL that\nmakes POKéMON\nmore friendly.");
-const u8 gPremierBallItemDescription[] = _("A rare BALL made\nin commemoration\nof some event.");
+static const u8 sMasterBallDesc[] = _(
+ "The best BALL that\n"
+ "catches a POKéMON\n"
+ "without fail.");
+
+static const u8 sUltraBallDesc[] = _(
+ "A better BALL with\n"
+ "a higher catch rate\n"
+ "than a GREAT BALL.");
+
+static const u8 sGreatBallDesc[] = _(
+ "A good BALL with a\n"
+ "higher catch rate\n"
+ "than a POKé BALL.");
+
+static const u8 sPokeBallDesc[] = _(
+ "A tool used for\n"
+ "catching wild\n"
+ "POKéMON.");
+
+static const u8 sSafariBallDesc[] = _(
+ "A special BALL that\n"
+ "is used only in the\n"
+ "SAFARI ZONE.");
+
+static const u8 sNetBallDesc[] = _(
+ "A BALL that works\n"
+ "well on WATER- and\n"
+ "BUG-type POKéMON.");
+
+static const u8 sDiveBallDesc[] = _(
+ "A BALL that works\n"
+ "better on POKéMON\n"
+ "on the ocean floor.");
+
+static const u8 sNestBallDesc[] = _(
+ "A BALL that works\n"
+ "better on weaker\n"
+ "POKéMON.");
+
+static const u8 sRepeatBallDesc[] = _(
+ "A BALL that works\n"
+ "better on POKéMON\n"
+ "caught before.");
+
+static const u8 sTimerBallDesc[] = _(
+ "A BALL that gains\n"
+ "power in battles\n"
+ "taking many turns.");
+
+static const u8 sLuxuryBallDesc[] = _(
+ "A cozy BALL that\n"
+ "makes POKéMON\n"
+ "more friendly.");
+
+static const u8 sPremierBallDesc[] = _(
+ "A rare BALL made\n"
+ "in commemoration\n"
+ "of some event.");
+
// Medicine
-const u8 gPotionItemDescription[] = _("Restores the HP of\na POKéMON by\n20 points.");
-const u8 gAntidoteItemDescription[] = _("Heals a poisoned\nPOKéMON.");
-const u8 gBurnHealItemDescription[] = _("Heals POKéMON\nof a burn.");
-const u8 gIceHealItemDescription[] = _("Defrosts a frozen\nPOKéMON.");
-const u8 gAwakeningItemDescription[] = _("Awakens a sleeping\nPOKéMON.");
-const u8 gParalyzeHealItemDescription[] = _("Heals a paralyzed\nPOKéMON.");
-const u8 gFullRestoreItemDescription[] = _("Fully restores the\nHP and status of a\nPOKéMON.");
-const u8 gMaxPotionItemDescription[] = _("Fully restores the\nHP of a POKéMON.");
-const u8 gHyperPotionItemDescription[] = _("Restores the HP of\na POKéMON by\n200 points.");
-const u8 gSuperPotionItemDescription[] = _("Restores the HP of\na POKéMON by\n50 points.");
-const u8 gFullHealItemDescription[] = _("Heals all the\nstatus problems of\none POKéMON.");
-const u8 gReviveItemDescription[] = _("Revives a fainted\nPOKéMON with half\nits HP.");
-const u8 gMaxReviveItemDescription[] = _("Revives a fainted\nPOKéMON with all\nits HP.");
-const u8 gFreshWaterItemDescription[] = _("A mineral water\nthat restores HP\nby 50 points.");
-const u8 gSodaPopItemDescription[] = _("A fizzy soda drink\nthat restores HP\nby 60 points.");
-const u8 gLemonadeItemDescription[] = _("A very sweet drink\nthat restores HP\nby 80 points.");
-const u8 gMoomooMilkItemDescription[] = _("A nutritious milk\nthat restores HP\nby 100 points.");
-const u8 gEnergyPowderItemDescription[] = _("A bitter powder\nthat restores HP\nby 50 points.");
-const u8 gEnergyRootItemDescription[] = _("A bitter root\nthat restores HP\nby 200 points.");
-const u8 gHealPowderItemDescription[] = _("A bitter powder\nthat heals all\nstatus problems.");
-const u8 gRevivalHerbItemDescription[] = _("A very bitter herb\nthat revives a\nfainted POKéMON.");
-const u8 gEtherItemDescription[] = _("Restores the PP\nof a selected move\nby 10.");
-const u8 gMaxEtherItemDescription[] = _("Fully restores the\nPP of a selected\nmove.");
-const u8 gElixirItemDescription[] = _("Restores the PP\nof all moves by 10.");
-const u8 gMaxElixirItemDescription[] = _("Fully restores the\nPP of a POKéMON's\nmoves.");
-const u8 gLavaCookieItemDescription[] = _("A local specialty\nthat heals all\nstatus problems.");
-const u8 gBlueFluteItemDescription[] = _("A glass flute that\nawakens sleeping\nPOKéMON.");
-const u8 gYellowFluteItemDescription[] = _("A glass flute that\nsnaps POKéMON\nout of confusion.");
-const u8 gRedFluteItemDescription[] = _("A glass flute that\nsnaps POKéMON\nout of attraction.");
-const u8 gBlackFluteItemDescription[] = _("A glass flute that\nkeeps away wild\nPOKéMON.");
-const u8 gWhiteFluteItemDescription[] = _("A glass flute that\nlures wild POKéMON.");
-const u8 gBerryJuiceItemDescription[] = _("A 100% pure juice\nthat restores HP\nby 20 points.");
-const u8 gSacredAshItemDescription[] = _("Fully revives and\nrestores all\nfainted POKéMON.");
+static const u8 sPotionDesc[] = _(
+ "Restores the HP of\n"
+ "a POKéMON by\n"
+ "20 points.");
+
+static const u8 sAntidoteDesc[] = _(
+ "Heals a poisoned\n"
+ "POKéMON.");
+
+static const u8 sBurnHealDesc[] = _(
+ "Heals POKéMON\n"
+ "of a burn.");
+
+static const u8 sIceHealDesc[] = _(
+ "Defrosts a frozen\n"
+ "POKéMON.");
+
+static const u8 sAwakeningDesc[] = _(
+ "Awakens a sleeping\n"
+ "POKéMON.");
+
+static const u8 sParalyzeHealDesc[] = _(
+ "Heals a paralyzed\n"
+ "POKéMON.");
+
+static const u8 sFullRestoreDesc[] = _(
+ "Fully restores the\n"
+ "HP and status of a\n"
+ "POKéMON.");
+
+static const u8 sMaxPotionDesc[] = _(
+ "Fully restores the\n"
+ "HP of a POKéMON.");
+
+static const u8 sHyperPotionDesc[] = _(
+ "Restores the HP of\n"
+ "a POKéMON by\n"
+ "200 points.");
+
+static const u8 sSuperPotionDesc[] = _(
+ "Restores the HP of\n"
+ "a POKéMON by\n"
+ "50 points.");
+
+static const u8 sFullHealDesc[] = _(
+ "Heals all the\n"
+ "status problems of\n"
+ "one POKéMON.");
+
+static const u8 sReviveDesc[] = _(
+ "Revives a fainted\n"
+ "POKéMON with half\n"
+ "its HP.");
+
+static const u8 sMaxReviveDesc[] = _(
+ "Revives a fainted\n"
+ "POKéMON with all\n"
+ "its HP.");
+
+static const u8 sFreshWaterDesc[] = _(
+ "A mineral water\n"
+ "that restores HP\n"
+ "by 50 points.");
+
+static const u8 sSodaPopDesc[] = _(
+ "A fizzy soda drink\n"
+ "that restores HP\n"
+ "by 60 points.");
+
+static const u8 sLemonadeDesc[] = _(
+ "A very sweet drink\n"
+ "that restores HP\n"
+ "by 80 points.");
+
+static const u8 sMoomooMilkDesc[] = _(
+ "A nutritious milk\n"
+ "that restores HP\n"
+ "by 100 points.");
+
+static const u8 sEnergyPowderDesc[] = _(
+ "A bitter powder\n"
+ "that restores HP\n"
+ "by 50 points.");
+
+static const u8 sEnergyRootDesc[] = _(
+ "A bitter root\n"
+ "that restores HP\n"
+ "by 200 points.");
+
+static const u8 sHealPowderDesc[] = _(
+ "A bitter powder\n"
+ "that heals all\n"
+ "status problems.");
+
+static const u8 sRevivalHerbDesc[] = _(
+ "A very bitter herb\n"
+ "that revives a\n"
+ "fainted POKéMON.");
+
+static const u8 sEtherDesc[] = _(
+ "Restores the PP\n"
+ "of a selected move\n"
+ "by 10.");
+
+static const u8 sMaxEtherDesc[] = _(
+ "Fully restores the\n"
+ "PP of a selected\n"
+ "move.");
+
+static const u8 sElixirDesc[] = _(
+ "Restores the PP\n"
+ "of all moves by 10.");
+
+static const u8 sMaxElixirDesc[] = _(
+ "Fully restores the\n"
+ "PP of a POKéMON's\n"
+ "moves.");
+
+static const u8 sLavaCookieDesc[] = _(
+ "A local specialty\n"
+ "that heals all\n"
+ "status problems.");
+
+static const u8 sBlueFluteDesc[] = _(
+ "A glass flute that\n"
+ "awakens sleeping\n"
+ "POKéMON.");
+
+static const u8 sYellowFluteDesc[] = _(
+ "A glass flute that\n"
+ "snaps POKéMON\n"
+ "out of confusion.");
+
+static const u8 sRedFluteDesc[] = _(
+ "A glass flute that\n"
+ "snaps POKéMON\n"
+ "out of attraction.");
+
+static const u8 sBlackFluteDesc[] = _(
+ "A glass flute that\n"
+ "keeps away wild\n"
+ "POKéMON.");
+
+static const u8 sWhiteFluteDesc[] = _(
+ "A glass flute that\n"
+ "lures wild POKéMON.");
+
+static const u8 sBerryJuiceDesc[] = _(
+ "A 100% pure juice\n"
+ "that restores HP\n"
+ "by 20 points.");
+
+static const u8 sSacredAshDesc[] = _(
+ "Fully revives and\n"
+ "restores all\n"
+ "fainted POKéMON.");
+
// Collectibles
-const u8 gShoalSaltItemDescription[] = _("Salt obtained from\ndeep inside the\nSHOAL CAVE.");
-const u8 gShoalShellItemDescription[] = _("A seashell found\ndeep inside the\nSHOAL CAVE.");
-const u8 gRedShardItemDescription[] = _("A shard from an\nancient item. Can\nbe sold cheaply.");
-const u8 gBlueShardItemDescription[] = _("A shard from an\nancient item. Can\nbe sold cheaply.");
-const u8 gYellowShardItemDescription[] = _("A shard from an\nancient item. Can\nbe sold cheaply.");
-const u8 gGreenShardItemDescription[] = _("A shard from an\nancient item. Can\nbe sold cheaply.");
+static const u8 sShoalSaltDesc[] = _(
+ "Salt obtained from\n"
+ "deep inside the\n"
+ "SHOAL CAVE.");
+
+static const u8 sShoalShellDesc[] = _(
+ "A seashell found\n"
+ "deep inside the\n"
+ "SHOAL CAVE.");
+
+static const u8 sRedShardDesc[] = _(
+ "A shard from an\n"
+ "ancient item. Can\n"
+ "be sold cheaply.");
+
+static const u8 sBlueShardDesc[] = _(
+ "A shard from an\n"
+ "ancient item. Can\n"
+ "be sold cheaply.");
+
+static const u8 sYellowShardDesc[] = _(
+ "A shard from an\n"
+ "ancient item. Can\n"
+ "be sold cheaply.");
+
+static const u8 sGreenShardDesc[] = _(
+ "A shard from an\n"
+ "ancient item. Can\n"
+ "be sold cheaply.");
+
// Vitamins
-const u8 gHPUpItemDescription[] = _("Raises the base HP\nof one POKéMON.");
-const u8 gProteinItemDescription[] = _("Raises the base\nATTACK stat of one\nPOKéMON.");
-const u8 gIronItemDescription[] = _("Raises the base\nDEFENSE stat of\none POKéMON.");
-const u8 gCarbosItemDescription[] = _("Raises the base\nSPEED stat of one\nPOKéMON.");
-const u8 gCalciumItemDescription[] = _("Raises the base\nSP. ATK stat of one\nPOKéMON.");
-const u8 gRareCandyItemDescription[] = _("Raises the level\nof a POKéMON by\none.");
-const u8 gPPUpItemDescription[] = _("Raises the maximum\nPP of a selected\nmove.");
-const u8 gZincItemDescription[] = _("Raises the base\nSP. DEF stat of one\nPOKéMON.");
-const u8 gPPMaxItemDescription[] = _("Raises the PP of a\nmove to its maximum\npoints.");
+static const u8 sHPUpDesc[] = _(
+ "Raises the base HP\n"
+ "of one POKéMON.");
+
+static const u8 sProteinDesc[] = _(
+ "Raises the base\n"
+ "ATTACK stat of one\n"
+ "POKéMON.");
+
+static const u8 sIronDesc[] = _(
+ "Raises the base\n"
+ "DEFENSE stat of\n"
+ "one POKéMON.");
+
+static const u8 sCarbosDesc[] = _(
+ "Raises the base\n"
+ "SPEED stat of one\n"
+ "POKéMON.");
+
+static const u8 sCalciumDesc[] = _(
+ "Raises the base\n"
+ "SP. ATK stat of one\n"
+ "POKéMON.");
+
+static const u8 sRareCandyDesc[] = _(
+ "Raises the level\n"
+ "of a POKéMON by\n"
+ "one.");
+
+static const u8 sPPUpDesc[] = _(
+ "Raises the maximum\n"
+ "PP of a selected\n"
+ "move.");
+
+static const u8 sZincDesc[] = _(
+ "Raises the base\n"
+ "SP. DEF stat of one\n"
+ "POKéMON.");
+
+static const u8 sPPMaxDesc[] = _(
+ "Raises the PP of a\n"
+ "move to its maximum\n"
+ "points.");
+
// Battle items
-const u8 gGuardSpecItemDescription[] = _("Prevents stat\nreduction when\nused in battle.");
-const u8 gDireHitItemDescription[] = _("Raises the\ncritical-hit ratio\nduring one battle.");
-const u8 gXAttackItemDescription[] = _("Raises the stat\nATTACK during one\nbattle.");
-const u8 gXDefendItemDescription[] = _("Raises the stat\nDEFENSE during one\nbattle.");
-const u8 gXSpeedItemDescription[] = _("Raises the stat\nSPEED during one\nbattle.");
-const u8 gXAccuracyItemDescription[] = _("Raises accuracy\nof attack moves\nduring one battle.");
-const u8 gXSpecialItemDescription[] = _("Raises the stat\nSP. ATK during one\nbattle.");
-const u8 gPokeDollItemDescription[] = _("Use to flee from\nany battle with\na wild POKéMON.");
-const u8 gFluffyTailItemDescription[] = _("Use to flee from\nany battle with\na wild POKéMON.");
+static const u8 sGuardSpecDesc[] = _(
+ "Prevents stat\n"
+ "reduction when\n"
+ "used in battle.");
+
+static const u8 sDireHitDesc[] = _(
+ "Raises the\n"
+ "critical-hit ratio\n"
+ "during one battle.");
+
+static const u8 sXAttackDesc[] = _(
+ "Raises the stat\n"
+ "ATTACK during one\n"
+ "battle.");
+
+static const u8 sXDefendDesc[] = _(
+ "Raises the stat\n"
+ "DEFENSE during one\n"
+ "battle.");
+
+static const u8 sXSpeedDesc[] = _(
+ "Raises the stat\n"
+ "SPEED during one\n"
+ "battle.");
+
+static const u8 sXAccuracyDesc[] = _(
+ "Raises accuracy\n"
+ "of attack moves\n"
+ "during one battle.");
+
+static const u8 sXSpecialDesc[] = _(
+ "Raises the stat\n"
+ "SP. ATK during one\n"
+ "battle.");
+
+static const u8 sPokeDollDesc[] = _(
+ "Use to flee from\n"
+ "any battle with\n"
+ "a wild POKéMON.");
+
+static const u8 sFluffyTailDesc[] = _(
+ "Use to flee from\n"
+ "any battle with\n"
+ "a wild POKéMON.");
+
// Field items
-const u8 gSuperRepelItemDescription[] = _("Repels weak wild\nPOKéMON for 200\nsteps.");
-const u8 gMaxRepelItemDescription[] = _("Repels weak wild\nPOKéMON for 250\nsteps.");
-const u8 gEscapeRopeItemDescription[] = _("Use to escape\ninstantly from a\ncave or a dungeon.");
-const u8 gRepelItemDescription[] = _("Repels weak wild\nPOKéMON for 100\nsteps.");
+static const u8 sSuperRepelDesc[] = _(
+ "Repels weak wild\n"
+ "POKéMON for 200\n"
+ "steps.");
+
+static const u8 sMaxRepelDesc[] = _(
+ "Repels weak wild\n"
+ "POKéMON for 250\n"
+ "steps.");
+
+static const u8 sEscapeRopeDesc[] = _(
+ "Use to escape\n"
+ "instantly from a\n"
+ "cave or a dungeon.");
+
+static const u8 sRepelDesc[] = _(
+ "Repels weak wild\n"
+ "POKéMON for 100\n"
+ "steps.");
+
// Evolution stones
-const u8 gSunStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve.");
-const u8 gMoonStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve.");
-const u8 gFireStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve.");
-const u8 gThunderStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve.");
-const u8 gWaterStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve.");
-const u8 gLeafStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve.");
+static const u8 sSunStoneDesc[] = _(
+ "Makes certain\n"
+ "species of POKéMON\n"
+ "evolve.");
+
+static const u8 sMoonStoneDesc[] = _(
+ "Makes certain\n"
+ "species of POKéMON\n"
+ "evolve.");
+
+static const u8 sFireStoneDesc[] = _(
+ "Makes certain\n"
+ "species of POKéMON\n"
+ "evolve.");
+
+static const u8 sThunderStoneDesc[] = _(
+ "Makes certain\n"
+ "species of POKéMON\n"
+ "evolve.");
+
+static const u8 sWaterStoneDesc[] = _(
+ "Makes certain\n"
+ "species of POKéMON\n"
+ "evolve.");
+
+static const u8 sLeafStoneDesc[] = _(
+ "Makes certain\n"
+ "species of POKéMON\n"
+ "evolve.");
+
// Valuable items
-const u8 gTinyMushroomItemDescription[] = _("A plain mushroom\nthat would sell\nat a cheap price.");
-const u8 gBigMushroomItemDescription[] = _("A rare mushroom\nthat would sell at a\nhigh price.");
-const u8 gPearlItemDescription[] = _("A pretty pearl\nthat would sell at a\ncheap price.");
-const u8 gBigPearlItemDescription[] = _("A lovely large pearl\nthat would sell at a\nhigh price.");
-const u8 gStardustItemDescription[] = _("Beautiful red sand.\nCan be sold at a\nhigh price.");
-const u8 gStarPieceItemDescription[] = _("A red gem shard.\nIt would sell for a\nvery high price.");
-const u8 gNuggetItemDescription[] = _("A nugget of pure\ngold. Can be sold at\na high price.");
-const u8 gHeartScaleItemDescription[] = _("A lovely scale.\nIt is coveted by\ncollectors.");
+static const u8 sTinyMushroomDesc[] = _(
+ "A plain mushroom\n"
+ "that would sell\n"
+ "at a cheap price.");
+
+static const u8 sBigMushroomDesc[] = _(
+ "A rare mushroom\n"
+ "that would sell at a\n"
+ "high price.");
+
+static const u8 sPearlDesc[] = _(
+ "A pretty pearl\n"
+ "that would sell at a\n"
+ "cheap price.");
+
+static const u8 sBigPearlDesc[] = _(
+ "A lovely large pearl\n"
+ "that would sell at a\n"
+ "high price.");
+
+static const u8 sStardustDesc[] = _(
+ "Beautiful red sand.\n"
+ "Can be sold at a\n"
+ "high price.");
+
+static const u8 sStarPieceDesc[] = _(
+ "A red gem shard.\n"
+ "It would sell for a\n"
+ "very high price.");
+
+static const u8 sNuggetDesc[] = _(
+ "A nugget of pure\n"
+ "gold. Can be sold at\n"
+ "a high price.");
+
+static const u8 sHeartScaleDesc[] = _(
+ "A lovely scale.\n"
+ "It is coveted by\n"
+ "collectors.");
+
// Mail
-const u8 gOrangeMailItemDescription[] = _("A ZIGZAGOON-print\nMAIL to be held by\na POKéMON.");
-const u8 gHarborMailItemDescription[] = _("A WINGULL-print\nMAIL to be held by\na POKéMON.");
-const u8 gGlitterMailItemDescription[] = _("A PIKACHU-print\nMAIL to be held by\na POKéMON.");
-const u8 gMechMailItemDescription[] = _("A MAGNEMITE-print\nMAIL to be held by\na POKéMON.");
-const u8 gWoodMailItemDescription[] = _("A SLAKOTH-print\nMAIL to be held by\na POKéMON.");
-const u8 gWaveMailItemDescription[] = _("A WAILMER-print\nMAIL to be held by\na POKéMON.");
-const u8 gBeadMailItemDescription[] = _("MAIL featuring a\nsketch of the\nholding POKéMON.");
-const u8 gShadowMailItemDescription[] = _("A DUSKULL-print\nMAIL to be held by\na POKéMON.");
-const u8 gTropicMailItemDescription[] = _("A BELLOSSOM-print\nMAIL to be held by\na POKéMON.");
-const u8 gDreamMailItemDescription[] = _("MAIL featuring a\nsketch of the\nholding POKéMON.");
-const u8 gFabMailItemDescription[] = _("A gorgeous-print\nMAIL to be held\nby a POKéMON.");
-const u8 gRetroMailItemDescription[] = _("MAIL featuring the\ndrawings of three\nPOKéMON.");
+static const u8 sOrangeMailDesc[] = _(
+ "A ZIGZAGOON-print\n"
+ "MAIL to be held by\n"
+ "a POKéMON.");
+
+static const u8 sHarborMailDesc[] = _(
+ "A WINGULL-print\n"
+ "MAIL to be held by\n"
+ "a POKéMON.");
+
+static const u8 sGlitterMailDesc[] = _(
+ "A PIKACHU-print\n"
+ "MAIL to be held by\n"
+ "a POKéMON.");
+
+static const u8 sMechMailDesc[] = _(
+ "A MAGNEMITE-print\n"
+ "MAIL to be held by\n"
+ "a POKéMON.");
+
+static const u8 sWoodMailDesc[] = _(
+ "A SLAKOTH-print\n"
+ "MAIL to be held by\n"
+ "a POKéMON.");
+
+static const u8 sWaveMailDesc[] = _(
+ "A WAILMER-print\n"
+ "MAIL to be held by\n"
+ "a POKéMON.");
+
+static const u8 sBeadMailDesc[] = _(
+ "MAIL featuring a\n"
+ "sketch of the\n"
+ "holding POKéMON.");
+
+static const u8 sShadowMailDesc[] = _(
+ "A DUSKULL-print\n"
+ "MAIL to be held by\n"
+ "a POKéMON.");
+
+static const u8 sTropicMailDesc[] = _(
+ "A BELLOSSOM-print\n"
+ "MAIL to be held by\n"
+ "a POKéMON.");
+
+static const u8 sDreamMailDesc[] = _(
+ "MAIL featuring a\n"
+ "sketch of the\n"
+ "holding POKéMON.");
+
+static const u8 sFabMailDesc[] = _(
+ "A gorgeous-print\n"
+ "MAIL to be held\n"
+ "by a POKéMON.");
+
+static const u8 sRetroMailDesc[] = _(
+ "MAIL featuring the\n"
+ "drawings of three\n"
+ "POKéMON.");
+
// Berries
-const u8 gCheriBerryItemDescription[] = _("A hold item that\nheals paralysis\nin battle.");
-const u8 gChestoBerryItemDescription[] = _("A hold item that\nawakens POKéMON\nin battle.");
-const u8 gPechaBerryItemDescription[] = _("A hold item that\nheals poisoning\nin battle.");
-const u8 gRawstBerryItemDescription[] = _("A hold item that\nheals a burn in\nbattle.");
-const u8 gAspearBerryItemDescription[] = _("A hold item that\ndefrosts POKéMON\nin battle.");
-const u8 gLeppaBerryItemDescription[] = _("A hold item that\nrestores 10 PP in\nbattle.");
-const u8 gOranBerryItemDescription[] = _("A hold item that\nrestores 10 HP in\nbattle.");
-const u8 gPersimBerryItemDescription[] = _("A hold item that\nheals confusion\nin battle.");
-const u8 gLumBerryItemDescription[] = _("A hold item that\nheals any status\nproblem in battle.");
-const u8 gSitrusBerryItemDescription[] = _("A hold item that\nrestores 30 HP in\nbattle.");
-const u8 gFigyBerryItemDescription[] = _("A hold item that\nrestores HP but\nmay confuse.");
-const u8 gWikiBerryItemDescription[] = _("A hold item that\nrestores HP but\nmay confuse.");
-const u8 gMagoBerryItemDescription[] = _("A hold item that\nrestores HP but\nmay confuse.");
-const u8 gAguavBerryItemDescription[] = _("A hold item that\nrestores HP but\nmay confuse.");
-const u8 gIapapaBerryItemDescription[] = _("A hold item that\nrestores HP but\nmay confuse.");
-const u8 gRazzBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow RAZZ.");
-const u8 gBlukBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow BLUK.");
-const u8 gNanabBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow NANAB.");
-const u8 gWepearBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow WEPEAR.");
-const u8 gPinapBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow PINAP.");
-const u8 gPomegBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase HP.");
-const u8 gKelpsyBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase ATTACK.");
-const u8 gQualotBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase DEFENSE.");
-const u8 gHondewBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase SP. ATK.");
-const u8 gGrepaBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase SP. DEF.");
-const u8 gTamatoBerryItemDescription[] = _("Makes a POKéMON\nfriendly but lowers\nbase SPEED.");
-const u8 gCornnBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow CORNN.");
-const u8 gMagostBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow MAGOST.");
-const u8 gRabutaBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow RABUTA.");
-const u8 gNomelBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow NOMEL.");
-const u8 gSpelonBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow SPELON.");
-const u8 gPamtreBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow PAMTRE.");
-const u8 gWatmelBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow WATMEL.");
-const u8 gDurinBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow DURIN.");
-const u8 gBelueBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow BELUE.");
-const u8 gLiechiBerryItemDescription[] = _("A hold item that\nraises ATTACK in\na pinch.");
-const u8 gGanlonBerryItemDescription[] = _("A hold item that\nraises DEFENSE in\na pinch.");
-const u8 gSalacBerryItemDescription[] = _("A hold item that\nraises SPEED in\na pinch.");
-const u8 gPetayaBerryItemDescription[] = _("A hold item that\nraises SP. ATK in\na pinch.");
-const u8 gApicotBerryItemDescription[] = _("A hold item that\nraises SP. DEF in\na pinch.");
-const u8 gLansatBerryItemDescription[] = _("A hold item that\nups the critical-\nhit rate in a pinch.");
-const u8 gStarfBerryItemDescription[] = _("A hold item that\nsharply boosts a\nstat in a pinch.");
-const u8 gEnigmaBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow a mystery.");
+static const u8 sCheriBerryDesc[] = _(
+ "A hold item that\n"
+ "heals paralysis\n"
+ "in battle.");
+
+static const u8 sChestoBerryDesc[] = _(
+ "A hold item that\n"
+ "awakens POKéMON\n"
+ "in battle.");
+
+static const u8 sPechaBerryDesc[] = _(
+ "A hold item that\n"
+ "heals poisoning\n"
+ "in battle.");
+
+static const u8 sRawstBerryDesc[] = _(
+ "A hold item that\n"
+ "heals a burn in\n"
+ "battle.");
+
+static const u8 sAspearBerryDesc[] = _(
+ "A hold item that\n"
+ "defrosts POKéMON\n"
+ "in battle.");
+
+static const u8 sLeppaBerryDesc[] = _(
+ "A hold item that\n"
+ "restores 10 PP in\n"
+ "battle.");
+
+static const u8 sOranBerryDesc[] = _(
+ "A hold item that\n"
+ "restores 10 HP in\n"
+ "battle.");
+
+static const u8 sPersimBerryDesc[] = _(
+ "A hold item that\n"
+ "heals confusion\n"
+ "in battle.");
+
+static const u8 sLumBerryDesc[] = _(
+ "A hold item that\n"
+ "heals any status\n"
+ "problem in battle.");
+
+static const u8 sSitrusBerryDesc[] = _(
+ "A hold item that\n"
+ "restores 30 HP in\n"
+ "battle.");
+
+static const u8 sFigyBerryDesc[] = _(
+ "A hold item that\n"
+ "restores HP but\n"
+ "may confuse.");
+
+static const u8 sWikiBerryDesc[] = _(
+ "A hold item that\n"
+ "restores HP but\n"
+ "may confuse.");
+
+static const u8 sMagoBerryDesc[] = _(
+ "A hold item that\n"
+ "restores HP but\n"
+ "may confuse.");
+
+static const u8 sAguavBerryDesc[] = _(
+ "A hold item that\n"
+ "restores HP but\n"
+ "may confuse.");
+
+static const u8 sIapapaBerryDesc[] = _(
+ "A hold item that\n"
+ "restores HP but\n"
+ "may confuse.");
+
+static const u8 sRazzBerryDesc[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow RAZZ.");
+
+static const u8 sBlukBerryDesc[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow BLUK.");
+
+static const u8 sNanabBerryDesc[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow NANAB.");
+
+static const u8 sWepearBerryDesc[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow WEPEAR.");
+
+static const u8 sPinapBerryDesc[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow PINAP.");
+
+static const u8 sPomegBerryDesc[] = _(
+ "Makes a POKéMON\n"
+ "friendly but lowers\n"
+ "base HP.");
+
+static const u8 sKelpsyBerryDesc[] = _(
+ "Makes a POKéMON\n"
+ "friendly but lowers\n"
+ "base ATTACK.");
+
+static const u8 sQualotBerryDesc[] = _(
+ "Makes a POKéMON\n"
+ "friendly but lowers\n"
+ "base DEFENSE.");
+
+static const u8 sHondewBerryDesc[] = _(
+ "Makes a POKéMON\n"
+ "friendly but lowers\n"
+ "base SP. ATK.");
+
+static const u8 sGrepaBerryDesc[] = _(
+ "Makes a POKéMON\n"
+ "friendly but lowers\n"
+ "base SP. DEF.");
+
+static const u8 sTamatoBerryDesc[] = _(
+ "Makes a POKéMON\n"
+ "friendly but lowers\n"
+ "base SPEED.");
+
+static const u8 sCornnBerryDesc[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow CORNN.");
+
+static const u8 sMagostBerryDesc[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow MAGOST.");
+
+static const u8 sRabutaBerryDesc[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow RABUTA.");
+
+static const u8 sNomelBerryDesc[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow NOMEL.");
+
+static const u8 sSpelonBerryDesc[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow SPELON.");
+
+static const u8 sPamtreBerryDesc[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow PAMTRE.");
+
+static const u8 sWatmelBerryDesc[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow WATMEL.");
+
+static const u8 sDurinBerryDesc[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow DURIN.");
+
+static const u8 sBelueBerryDesc[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow BELUE.");
+
+static const u8 sLiechiBerryDesc[] = _(
+ "A hold item that\n"
+ "raises ATTACK in\n"
+ "a pinch.");
+
+static const u8 sGanlonBerryDesc[] = _(
+ "A hold item that\n"
+ "raises DEFENSE in\n"
+ "a pinch.");
+
+static const u8 sSalacBerryDesc[] = _(
+ "A hold item that\n"
+ "raises SPEED in\n"
+ "a pinch.");
+
+static const u8 sPetayaBerryDesc[] = _(
+ "A hold item that\n"
+ "raises SP. ATK in\n"
+ "a pinch.");
+
+static const u8 sApicotBerryDesc[] = _(
+ "A hold item that\n"
+ "raises SP. DEF in\n"
+ "a pinch.");
+
+static const u8 sLansatBerryDesc[] = _(
+ "A hold item that\n"
+ "ups the critical-\n"
+ "hit rate in a pinch.");
+
+static const u8 sStarfBerryDesc[] = _(
+ "A hold item that\n"
+ "sharply boosts a\n"
+ "stat in a pinch.");
+
+static const u8 sEnigmaBerryDesc[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow a mystery.");
+
// Hold items
-const u8 gBrightPowderItemDescription[] = _("A hold item that\ncasts a glare to\nreduce accuracy.");
-const u8 gWhiteHerbItemDescription[] = _("A hold item that\nrestores any\nlowered stat.");
-const u8 gMachoBraceItemDescription[] = _("A hold item that\npromotes growth,\nbut reduces SPEED.");
-const u8 gExpShareItemDescription[] = _("A hold item that\ngets EXP. points\nfrom battles.");
-const u8 gQuickClawItemDescription[] = _("A hold item that\noccasionally allows\nthe first strike.");
-const u8 gSootheBellItemDescription[] = _("A hold item that\ncalms spirits and\nfosters friendship.");
-const u8 gMentalHerbItemDescription[] = _("A hold item that\nsnaps POKéMON out\nof infatuation.");
-const u8 gChoiceBandItemDescription[] = _("Raises a move's\npower, but permits\nonly that move.");
-const u8 gKingsRockItemDescription[] = _("A hold item that\nmay cause flinching\nwhen the foe is hit.");
-const u8 gSilverPowderItemDescription[] = _("A hold item that\nraises the power of\nBUG-type moves.");
-const u8 gAmuletCoinItemDescription[] = _("Doubles money in\nbattle if the\nholder takes part.");
-const u8 gCleanseTagItemDescription[] = _("A hold item that\nhelps repel wild\nPOKéMON.");
-const u8 gSoulDewItemDescription[] = _("Hold item: raises\nSP. ATK & SP. DEF of\nLATIOS & LATIAS.");
-const u8 gDeepSeaToothItemDescription[] = _("A hold item that\nraises the SP. ATK\nof CLAMPERL.");
-const u8 gDeepSeaScaleItemDescription[] = _("A hold item that\nraises the SP. DEF\nof CLAMPERL.");
-const u8 gSmokeBallItemDescription[] = _("A hold item that\nassures fleeing\nfrom wild POKéMON.");
-const u8 gEverstoneItemDescription[] = _("A wondrous hold\nitem that prevents\nevolution.");
-const u8 gFocusBandItemDescription[] = _("A hold item that\noccasionally\nprevents fainting.");
-const u8 gLuckyEggItemDescription[] = _("A hold item that\nboosts EXP. points\nearned in battle.");
-const u8 gScopeLensItemDescription[] = _("A hold item that\nimproves the\ncritical-hit rate.");
-const u8 gMetalCoatItemDescription[] = _("A hold item that\nraises the power of\nSTEEL-type moves.");
-const u8 gLeftoversItemDescription[] = _("A hold item that\ngradually restores\nHP in battle.");
-const u8 gDragonScaleItemDescription[] = _("A strange scale\nheld by DRAGON-\ntype POKéMON.");
-const u8 gLightBallItemDescription[] = _("A hold item that\nraises the SP. ATK\nof PIKACHU.");
-const u8 gSoftSandItemDescription[] = _("A hold item that\nraises the power of\nGROUND-type moves.");
-const u8 gHardStoneItemDescription[] = _("A hold item that\nraises the power of\nROCK-type moves.");
-const u8 gMiracleSeedItemDescription[] = _("A hold item that\nraises the power of\nGRASS-type moves.");
-const u8 gBlackGlassesItemDescription[] = _("A hold item that\nraises the power of\nDARK-type moves.");
-const u8 gBlackBeltItemDescription[] = _("A hold item that\nboosts FIGHTING-\ntype moves.");
-const u8 gMagnetItemDescription[] = _("A hold item that\nboosts ELECTRIC-\ntype moves.");
-const u8 gMysticWaterItemDescription[] = _("A hold item that\nraises the power of\nWATER-type moves.");
-const u8 gSharpBeakItemDescription[] = _("A hold item that\nraises the power of\nFLYING-type moves.");
-const u8 gPoisonBarbItemDescription[] = _("A hold item that\nraises the power of\nPOISON-type moves.");
-const u8 gNeverMeltIceItemDescription[] = _("A hold item that\nraises the power of\nICE-type moves.");
-const u8 gSpellTagItemDescription[] = _("A hold item that\nraises the power of\nGHOST-type moves.");
-const u8 gTwistedSpoonItemDescription[] = _("A hold item that\nboosts PSYCHIC-\ntype moves.");
-const u8 gCharcoalItemDescription[] = _("A hold item that\nraises the power of\nFIRE-type moves.");
-const u8 gDragonFangItemDescription[] = _("A hold item that\nraises the power of\nDRAGON-type moves.");
-const u8 gSilkScarfItemDescription[] = _("A hold item that\nraises the power of\nNORMAL-type moves.");
-const u8 gUpGradeItemDescription[] = _("A peculiar box made\nby SILPH CO.");
-const u8 gShellBellItemDescription[] = _("A hold item that\nrestores HP upon\nstriking the foe.");
-const u8 gSeaIncenseItemDescription[] = _("A hold item that\nslightly boosts\nWATER-type moves.");
-const u8 gLaxIncenseItemDescription[] = _("A hold item that\nslightly lowers the\nfoe's accuracy.");
-const u8 gLuckyPunchItemDescription[] = _("A hold item that\nraises CHANSEY's\ncritical-hit rate.");
-const u8 gMetalPowderItemDescription[] = _("A hold item that\nraises DITTO's\nDEFENSE.");
-const u8 gThickClubItemDescription[] = _("A hold item that \nraises CUBONE or\nMAROWAK's ATTACK.");
-const u8 gStickItemDescription[] = _("A hold item that\nraises FARFETCH'D's\ncritical-hit ratio.");
-const u8 gRedScarfItemDescription[] = _("A hold item that\nraises COOL in\nCONTESTS.");
-const u8 gBlueScarfItemDescription[] = _("A hold item that\nraises BEAUTY in\nCONTESTS.");
-const u8 gPinkScarfItemDescription[] = _("A hold item that\nraises CUTE in\nCONTESTS.");
-const u8 gGreenScarfItemDescription[] = _("A hold item that\nraises SMART in\nCONTESTS.");
-const u8 gYellowScarfItemDescription[] = _("A hold item that\nraises TOUGH in\nCONTESTS.");
+static const u8 sBrightPowderDesc[] = _(
+ "A hold item that\n"
+ "casts a glare to\n"
+ "reduce accuracy.");
+
+static const u8 sWhiteHerbDesc[] = _(
+ "A hold item that\n"
+ "restores any\n"
+ "lowered stat.");
+
+static const u8 sMachoBraceDesc[] = _(
+ "A hold item that\n"
+ "promotes growth,\n"
+ "but reduces SPEED.");
+
+static const u8 sExpShareDesc[] = _(
+ "A hold item that\n"
+ "gets EXP. points\n"
+ "from battles.");
+
+static const u8 sQuickClawDesc[] = _(
+ "A hold item that\n"
+ "occasionally allows\n"
+ "the first strike.");
+
+static const u8 sSootheBellDesc[] = _(
+ "A hold item that\n"
+ "calms spirits and\n"
+ "fosters friendship.");
+
+static const u8 sMentalHerbDesc[] = _(
+ "A hold item that\n"
+ "snaps POKéMON out\n"
+ "of infatuation.");
+
+static const u8 sChoiceBandDesc[] = _(
+ "Raises a move's\n"
+ "power, but permits\n"
+ "only that move.");
+
+static const u8 sKingsRockDesc[] = _(
+ "A hold item that\n"
+ "may cause flinching\n"
+ "when the foe is hit.");
+
+static const u8 sSilverPowderDesc[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "BUG-type moves.");
+
+static const u8 sAmuletCoinDesc[] = _(
+ "Doubles money in\n"
+ "battle if the\n"
+ "holder takes part.");
+
+static const u8 sCleanseTagDesc[] = _(
+ "A hold item that\n"
+ "helps repel wild\n"
+ "POKéMON.");
+
+static const u8 sSoulDewDesc[] = _(
+ "Hold item: raises\n"
+ "SP. ATK & SP. DEF of\n"
+ "LATIOS & LATIAS.");
+
+static const u8 sDeepSeaToothDesc[] = _(
+ "A hold item that\n"
+ "raises the SP. ATK\n"
+ "of CLAMPERL.");
+
+static const u8 sDeepSeaScaleDesc[] = _(
+ "A hold item that\n"
+ "raises the SP. DEF\n"
+ "of CLAMPERL.");
+
+static const u8 sSmokeBallDesc[] = _(
+ "A hold item that\n"
+ "assures fleeing\n"
+ "from wild POKéMON.");
+
+static const u8 sEverstoneDesc[] = _(
+ "A wondrous hold\n"
+ "item that prevents\n"
+ "evolution.");
+
+static const u8 sFocusBandDesc[] = _(
+ "A hold item that\n"
+ "occasionally\n"
+ "prevents fainting.");
+
+static const u8 sLuckyEggDesc[] = _(
+ "A hold item that\n"
+ "boosts EXP. points\n"
+ "earned in battle.");
+
+static const u8 sScopeLensDesc[] = _(
+ "A hold item that\n"
+ "improves the\n"
+ "critical-hit rate.");
+
+static const u8 sMetalCoatDesc[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "STEEL-type moves.");
+
+static const u8 sLeftoversDesc[] = _(
+ "A hold item that\n"
+ "gradually restores\n"
+ "HP in battle.");
+
+static const u8 sDragonScaleDesc[] = _(
+ "A strange scale\n"
+ "held by DRAGON-\n"
+ "type POKéMON.");
+
+static const u8 sLightBallDesc[] = _(
+ "A hold item that\n"
+ "raises the SP. ATK\n"
+ "of PIKACHU.");
+
+static const u8 sSoftSandDesc[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "GROUND-type moves.");
+
+static const u8 sHardStoneDesc[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "ROCK-type moves.");
+
+static const u8 sMiracleSeedDesc[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "GRASS-type moves.");
+
+static const u8 sBlackGlassesDesc[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "DARK-type moves.");
+
+static const u8 sBlackBeltDesc[] = _(
+ "A hold item that\n"
+ "boosts FIGHTING-\n"
+ "type moves.");
+
+static const u8 sMagnetDesc[] = _(
+ "A hold item that\n"
+ "boosts ELECTRIC-\n"
+ "type moves.");
+
+static const u8 sMysticWaterDesc[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "WATER-type moves.");
+
+static const u8 sSharpBeakDesc[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "FLYING-type moves.");
+
+static const u8 sPoisonBarbDesc[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "POISON-type moves.");
+
+static const u8 sNeverMeltIceDesc[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "ICE-type moves.");
+
+static const u8 sSpellTagDesc[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "GHOST-type moves.");
+
+static const u8 sTwistedSpoonDesc[] = _(
+ "A hold item that\n"
+ "boosts PSYCHIC-\n"
+ "type moves.");
+
+static const u8 sCharcoalDesc[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "FIRE-type moves.");
+
+static const u8 sDragonFangDesc[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "DRAGON-type moves.");
+
+static const u8 sSilkScarfDesc[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "NORMAL-type moves.");
+
+static const u8 sUpGradeDesc[] = _(
+ "A peculiar box made\n"
+ "by SILPH CO.");
+
+static const u8 sShellBellDesc[] = _(
+ "A hold item that\n"
+ "restores HP upon\n"
+ "striking the foe.");
+
+static const u8 sSeaIncenseDesc[] = _(
+ "A hold item that\n"
+ "slightly boosts\n"
+ "WATER-type moves.");
+
+static const u8 sLaxIncenseDesc[] = _(
+ "A hold item that\n"
+ "slightly lowers the\n"
+ "foe's accuracy.");
+
+static const u8 sLuckyPunchDesc[] = _(
+ "A hold item that\n"
+ "raises CHANSEY's\n"
+ "critical-hit rate.");
+
+static const u8 sMetalPowderDesc[] = _(
+ "A hold item that\n"
+ "raises DITTO's\n"
+ "DEFENSE.");
+
+static const u8 sThickClubDesc[] = _(
+ "A hold item that \n"
+ "raises CUBONE or\n"
+ "MAROWAK's ATTACK.");
+
+static const u8 sStickDesc[] = _(
+ "A hold item that\n"
+ "raises FARFETCH'D's\n"
+ "critical-hit ratio.");
+
+static const u8 sRedScarfDesc[] = _(
+ "A hold item that\n"
+ "raises COOL in\n"
+ "CONTESTS.");
+
+static const u8 sBlueScarfDesc[] = _(
+ "A hold item that\n"
+ "raises BEAUTY in\n"
+ "CONTESTS.");
+
+static const u8 sPinkScarfDesc[] = _(
+ "A hold item that\n"
+ "raises CUTE in\n"
+ "CONTESTS.");
+
+static const u8 sGreenScarfDesc[] = _(
+ "A hold item that\n"
+ "raises SMART in\n"
+ "CONTESTS.");
+
+static const u8 sYellowScarfDesc[] = _(
+ "A hold item that\n"
+ "raises TOUGH in\n"
+ "CONTESTS.");
+
// Key items
-const u8 gMachBikeItemDescription[] = _("A folding bicycle\nthat doubles your\nspeed or better.");
-const u8 gCoinCaseItemDescription[] = _("A case that holds\nup to 9,999 COINS.");
-const u8 gItemfinderItemDescription[] = _("A device that\nsignals an invisible\nitem by sound.");
-const u8 gOldRodItemDescription[] = _("Use by any body of\nwater to fish for\nwild POKéMON.");
-const u8 gGoodRodItemDescription[] = _("A decent fishing\nrod for catching\nwild POKéMON.");
-const u8 gSuperRodItemDescription[] = _("The best fishing\nrod for catching\nwild POKéMON.");
-const u8 gSSTicketItemDescription[] = _("The ticket required\nfor sailing on a\nferry.");
-const u8 gContestPassItemDescription[] = _("The pass required\nfor entering\nPOKéMON CONTESTS.");
-const u8 gWailmerPailItemDescription[] = _("A tool used for\nwatering BERRIES\nand plants.");
-const u8 gDevonGoodsItemDescription[] = _("A package that\ncontains DEVON's\nmachine parts.");
-const u8 gSootSackItemDescription[] = _("A sack used to\ngather and hold\nvolcanic ash.");
-const u8 gBasementKeyItemDescription[] = _("The key for NEW\nMAUVILLE beneath\nMAUVILLE CITY.");
-const u8 gAcroBikeItemDescription[] = _("A folding bicycle\ncapable of jumps\nand wheelies.");
-const u8 gPokeblockCaseItemDescription[] = _("A case for holding\n{POKEBLOCK}S made with\na BERRY BLENDER.");
-const u8 gLetterItemDescription[] = _("A letter to STEVEN\nfrom the PRESIDENT\nof the DEVON CORP.");
-const u8 gEonTicketItemDescription[] = _("The ticket for a\nferry to a distant\nsouthern island.");
-const u8 gRedOrbItemDescription[] = _("A red, glowing orb\nsaid to contain an\nancient power.");
-const u8 gBlueOrbItemDescription[] = _("A blue, glowing orb\nsaid to contain an\nancient power.");
-const u8 gScannerItemDescription[] = _("A device found\ninside the\nABANDONED SHIP.");
-const u8 gGoGogglesItemDescription[] = _("Nifty goggles that\nprotect eyes from\ndesert sandstorms.");
-const u8 gMeteoriteItemDescription[] = _("A meteorite found\nat METEOR FALLS.");
-const u8 gRoom1KeyItemDescription[] = _("A key that opens a\ndoor inside the\nABANDONED SHIP.");
-const u8 gRoom2KeyItemDescription[] = _("A key that opens a\ndoor inside the\nABANDONED SHIP.");
-const u8 gRoom4KeyItemDescription[] = _("A key that opens a\ndoor inside the\nABANDONED SHIP.");
-const u8 gRoom6KeyItemDescription[] = _("A key that opens a\ndoor inside the\nABANDONED SHIP.");
-const u8 gStorageKeyItemDescription[] = _("The key to the\nstorage inside the\nABANDONED SHIP.");
-const u8 gRootFossilItemDescription[] = _("A fossil of an\nancient, seafloor-\ndwelling POKéMON.");
-const u8 gClawFossilItemDescription[] = _("A fossil of an\nancient, seafloor-\ndwelling POKéMON.");
-const u8 gDevonScopeItemDescription[] = _("A device by DEVON\nthat signals any\nunseeable POKéMON.");
+static const u8 sMachBikeDesc[] = _(
+ "A folding bicycle\n"
+ "that doubles your\n"
+ "speed or better.");
+
+static const u8 sCoinCaseDesc[] = _(
+ "A case that holds\n"
+ "up to 9,999 COINS.");
+
+static const u8 sItemfinderDesc[] = _(
+ "A device that\n"
+ "signals an invisible\n"
+ "item by sound.");
+
+static const u8 sOldRodDesc[] = _(
+ "Use by any body of\n"
+ "water to fish for\n"
+ "wild POKéMON.");
+
+static const u8 sGoodRodDesc[] = _(
+ "A decent fishing\n"
+ "rod for catching\n"
+ "wild POKéMON.");
+
+static const u8 sSuperRodDesc[] = _(
+ "The best fishing\n"
+ "rod for catching\n"
+ "wild POKéMON.");
+
+static const u8 sSSTicketDesc[] = _(
+ "The ticket required\n"
+ "for sailing on a\n"
+ "ferry.");
+
+static const u8 sContestPassDesc[] = _(
+ "The pass required\n"
+ "for entering\n"
+ "POKéMON CONTESTS.");
+
+static const u8 sWailmerPailDesc[] = _(
+ "A tool used for\n"
+ "watering BERRIES\n"
+ "and plants.");
+
+static const u8 sDevonGoodsDesc[] = _(
+ "A package that\n"
+ "contains DEVON's\n"
+ "machine parts.");
+
+static const u8 sSootSackDesc[] = _(
+ "A sack used to\n"
+ "gather and hold\n"
+ "volcanic ash.");
+
+static const u8 sBasementKeyDesc[] = _(
+ "The key for NEW\n"
+ "MAUVILLE beneath\n"
+ "MAUVILLE CITY.");
+
+static const u8 sAcroBikeDesc[] = _(
+ "A folding bicycle\n"
+ "capable of jumps\n"
+ "and wheelies.");
+
+static const u8 sPokeblockCaseDesc[] = _(
+ "A case for holding\n"
+ "{POKEBLOCK}S made with\n"
+ "a BERRY BLENDER.");
+
+static const u8 sLetterDesc[] = _(
+ "A letter to STEVEN\n"
+ "from the PRESIDENT\n"
+ "of the DEVON CORP.");
+
+static const u8 sEonTicketDesc[] = _(
+ "The ticket for a\n"
+ "ferry to a distant\n"
+ "southern island.");
+
+static const u8 sRedOrbDesc[] = _(
+ "A red, glowing orb\n"
+ "said to contain an\n"
+ "ancient power.");
+
+static const u8 sBlueOrbDesc[] = _(
+ "A blue, glowing orb\n"
+ "said to contain an\n"
+ "ancient power.");
+
+static const u8 sScannerDesc[] = _(
+ "A device found\n"
+ "inside the\n"
+ "ABANDONED SHIP.");
+
+static const u8 sGoGogglesDesc[] = _(
+ "Nifty goggles that\n"
+ "protect eyes from\n"
+ "desert sandstorms.");
+
+static const u8 sMeteoriteDesc[] = _(
+ "A meteorite found\n"
+ "at METEOR FALLS.");
+
+static const u8 sRoom1KeyDesc[] = _(
+ "A key that opens a\n"
+ "door inside the\n"
+ "ABANDONED SHIP.");
+
+static const u8 sRoom2KeyDesc[] = _(
+ "A key that opens a\n"
+ "door inside the\n"
+ "ABANDONED SHIP.");
+
+static const u8 sRoom4KeyDesc[] = _(
+ "A key that opens a\n"
+ "door inside the\n"
+ "ABANDONED SHIP.");
+
+static const u8 sRoom6KeyDesc[] = _(
+ "A key that opens a\n"
+ "door inside the\n"
+ "ABANDONED SHIP.");
+
+static const u8 sStorageKeyDesc[] = _(
+ "The key to the\n"
+ "storage inside the\n"
+ "ABANDONED SHIP.");
+
+static const u8 sRootFossilDesc[] = _(
+ "A fossil of an\n"
+ "ancient, seafloor-\n"
+ "dwelling POKéMON.");
+
+static const u8 sClawFossilDesc[] = _(
+ "A fossil of an\n"
+ "ancient, seafloor-\n"
+ "dwelling POKéMON.");
+
+static const u8 sDevonScopeDesc[] = _(
+ "A device by DEVON\n"
+ "that signals any\n"
+ "unseeable POKéMON.");
+
// TMs/HMs
-const u8 gTM01ItemDescription[] = _("Powerful, but makes\nthe user flinch if\nhit by the foe.");
-const u8 gTM02ItemDescription[] = _("Hooks and slashes\nthe foe with long,\nsharp claws.");
-const u8 gTM03ItemDescription[] = _("Generates an\nultrasonic wave\nthat may confuse.");
-const u8 gTM04ItemDescription[] = _("Raises SP. ATK and\nSP. DEF by focusing\nthe mind.");
-const u8 gTM05ItemDescription[] = _("A savage roar that\nmakes the foe flee \nto end the battle.");
-const u8 gTM06ItemDescription[] = _("Poisons the foe\nwith a toxin that\ngradually worsens.");
-const u8 gTM07ItemDescription[] = _("Creates a hailstorm\nthat damages all\ntypes except ICE.");
-const u8 gTM08ItemDescription[] = _("Bulks up the body\nto boost both\nATTACK & DEFENSE.");
-const u8 gTM09ItemDescription[] = _("Shoots 2 to 5 seeds\nin a row to strike\nthe foe.");
-const u8 gTM10ItemDescription[] = _("The attack power\nvaries among\ndifferent POKéMON.");
-const u8 gTM11ItemDescription[] = _("Raises the power of\nFIRE-type moves\nfor 5 turns.");
-const u8 gTM12ItemDescription[] = _("Enrages the foe so\nit can only use\nattack moves.");
-const u8 gTM13ItemDescription[] = _("Fires an icy cold\nbeam that may\nfreeze the foe.");
-const u8 gTM14ItemDescription[] = _("A brutal snow-and-\nwind attack that\nmay freeze the foe.");
-const u8 gTM15ItemDescription[] = _("Powerful, but needs\nrecharging the\nnext turn.");
-const u8 gTM16ItemDescription[] = _("Creates a wall of\nlight that lowers\nSP. ATK damage.");
-const u8 gTM17ItemDescription[] = _("Negates all damage,\nbut may fail if used\nin succession.");
-const u8 gTM18ItemDescription[] = _("Raises the power of\nWATER-type moves\nfor 5 turns.");
-const u8 gTM19ItemDescription[] = _("Recovers half the\nHP of the damage \nthis move inflicts.");
-const u8 gTM20ItemDescription[] = _("Prevents status\nabnormality with a\nmystical power.");
-const u8 gTM21ItemDescription[] = _("The less the user\nlikes you, the more\npowerful this move.");
-const u8 gTM22ItemDescription[] = _("Absorbs sunlight in\nthe 1st turn, then\nattacks next turn.");
-const u8 gTM23ItemDescription[] = _("Slams the foe with\na hard tail. It may\nlower DEFENSE.");
-const u8 gTM24ItemDescription[] = _("A powerful electric\nattack that may\ncause paralysis.");
-const u8 gTM25ItemDescription[] = _("Strikes the foe\nwith a thunderbolt.\nIt may paralyze.");
-const u8 gTM26ItemDescription[] = _("Causes a quake\nthat has no effect\non flying foes.");
-const u8 gTM27ItemDescription[] = _("The more the user\nlikes you, the more\npowerful this move.");
-const u8 gTM28ItemDescription[] = _("Digs underground\nthe 1st turn, then\nstrikes next turn.");
-const u8 gTM29ItemDescription[] = _("A powerful psychic\nattack that may\nlower SP. DEF.");
-const u8 gTM30ItemDescription[] = _("Hurls a dark lump\nat the foe. It may\nlower SP. DEF.");
-const u8 gTM31ItemDescription[] = _("Destroys barriers\nlike LIGHT SCREEN\nand causes damage.");
-const u8 gTM32ItemDescription[] = _("Creates illusory\ncopies to enhance\nelusiveness.");
-const u8 gTM33ItemDescription[] = _("Creates a wall of\nlight that weakens\nphysical attacks.");
-const u8 gTM34ItemDescription[] = _("Zaps the foe with a\njolt of electricity\nthat never misses.");
-const u8 gTM35ItemDescription[] = _("Looses a stream of\nfire that may burn\nthe foe.");
-const u8 gTM36ItemDescription[] = _("Hurls sludge at the\nfoe. It may poison\nthe foe.");
-const u8 gTM37ItemDescription[] = _("Causes a sandstorm\nthat hits the foe\nover several turns.");
-const u8 gTM38ItemDescription[] = _("A powerful fire\nattack that may\nburn the foe.");
-const u8 gTM39ItemDescription[] = _("Stops the foe from\nmoving with rocks.\nMay lower SPEED.");
-const u8 gTM40ItemDescription[] = _("An extremely fast\nattack that can't\nbe avoided.");
-const u8 gTM41ItemDescription[] = _("Prevents the foe\nfrom using the same\nmove in a row.");
-const u8 gTM42ItemDescription[] = _("Raises ATTACK when\npoisoned, burned,\nor paralyzed.");
-const u8 gTM43ItemDescription[] = _("Adds an effect to\nattack depending\non the location.");
-const u8 gTM44ItemDescription[] = _("The user sleeps for\n2 turns to restore\nhealth and status.");
-const u8 gTM45ItemDescription[] = _("Makes it tough to\nattack a foe of the\nopposite gender.");
-const u8 gTM46ItemDescription[] = _("While attacking,\nit may steal the\nfoe's held item.");
-const u8 gTM47ItemDescription[] = _("Spreads hard-\nedged wings and\nslams into the foe.");
-const u8 gTM48ItemDescription[] = _("Switches abilities\nwith the foe on the\nturn this is used.");
-const u8 gTM49ItemDescription[] = _("Steals the effects\nof the move the foe\nis trying to use.");
-const u8 gTM50ItemDescription[] = _("Enables full-power\nattack, but sharply\nlowers SP. ATK.");
-
-const u8 gHM01ItemDescription[] = _("Attacks the foe\nwith sharp blades\nor claws.");
-const u8 gHM02ItemDescription[] = _("Flies up on the\nfirst turn, then\nattacks next turn.");
-const u8 gHM03ItemDescription[] = _("Creates a huge\nwave, then crashes\nit down on the foe.");
-const u8 gHM04ItemDescription[] = _("Builds enormous\npower, then slams\nthe foe.");
-const u8 gHM05ItemDescription[] = _("Looses a powerful\nblast of light that\nreduces accuracy.");
-const u8 gHM06ItemDescription[] = _("A rock-crushingly\ntough attack that\nmay lower DEFENSE.");
-const u8 gHM07ItemDescription[] = _("Attacks the foe\nwith enough power\nto climb waterfalls.");
-const u8 gHM08ItemDescription[] = _("Dives underwater\nthe 1st turn, then\nattacks next turn.");
+static const u8 sTM01Desc[] = _(
+ "Powerful, but makes\n"
+ "the user flinch if\n"
+ "hit by the foe.");
+
+static const u8 sTM02Desc[] = _(
+ "Hooks and slashes\n"
+ "the foe with long,\n"
+ "sharp claws.");
+
+static const u8 sTM03Desc[] = _(
+ "Generates an\n"
+ "ultrasonic wave\n"
+ "that may confuse.");
+
+static const u8 sTM04Desc[] = _(
+ "Raises SP. ATK and\n"
+ "SP. DEF by focusing\n"
+ "the mind.");
+
+static const u8 sTM05Desc[] = _(
+ "A savage roar that\n"
+ "makes the foe flee \n"
+ "to end the battle.");
+
+static const u8 sTM06Desc[] = _(
+ "Poisons the foe\n"
+ "with a toxin that\n"
+ "gradually worsens.");
+
+static const u8 sTM07Desc[] = _(
+ "Creates a hailstorm\n"
+ "that damages all\n"
+ "types except ICE.");
+
+static const u8 sTM08Desc[] = _(
+ "Bulks up the body\n"
+ "to boost both\n"
+ "ATTACK & DEFENSE.");
+
+static const u8 sTM09Desc[] = _(
+ "Shoots 2 to 5 seeds\n"
+ "in a row to strike\n"
+ "the foe.");
+
+static const u8 sTM10Desc[] = _(
+ "The attack power\n"
+ "varies among\n"
+ "different POKéMON.");
+
+static const u8 sTM11Desc[] = _(
+ "Raises the power of\n"
+ "FIRE-type moves\n"
+ "for 5 turns.");
+
+static const u8 sTM12Desc[] = _(
+ "Enrages the foe so\n"
+ "it can only use\n"
+ "attack moves.");
+
+static const u8 sTM13Desc[] = _(
+ "Fires an icy cold\n"
+ "beam that may\n"
+ "freeze the foe.");
+
+static const u8 sTM14Desc[] = _(
+ "A brutal snow-and-\n"
+ "wind attack that\n"
+ "may freeze the foe.");
+
+static const u8 sTM15Desc[] = _(
+ "Powerful, but needs\n"
+ "recharging the\n"
+ "next turn.");
+
+static const u8 sTM16Desc[] = _(
+ "Creates a wall of\n"
+ "light that lowers\n"
+ "SP. ATK damage.");
+
+static const u8 sTM17Desc[] = _(
+ "Negates all damage,\n"
+ "but may fail if used\n"
+ "in succession.");
+
+static const u8 sTM18Desc[] = _(
+ "Raises the power of\n"
+ "WATER-type moves\n"
+ "for 5 turns.");
+
+static const u8 sTM19Desc[] = _(
+ "Recovers half the\n"
+ "HP of the damage \n"
+ "this move inflicts.");
+
+static const u8 sTM20Desc[] = _(
+ "Prevents status\n"
+ "abnormality with a\n"
+ "mystical power.");
+
+static const u8 sTM21Desc[] = _(
+ "The less the user\n"
+ "likes you, the more\n"
+ "powerful this move.");
+
+static const u8 sTM22Desc[] = _(
+ "Absorbs sunlight in\n"
+ "the 1st turn, then\n"
+ "attacks next turn.");
+
+static const u8 sTM23Desc[] = _(
+ "Slams the foe with\n"
+ "a hard tail. It may\n"
+ "lower DEFENSE.");
+
+static const u8 sTM24Desc[] = _(
+ "A powerful electric\n"
+ "attack that may\n"
+ "cause paralysis.");
+
+static const u8 sTM25Desc[] = _(
+ "Strikes the foe\n"
+ "with a thunderbolt.\n"
+ "It may paralyze.");
+
+static const u8 sTM26Desc[] = _(
+ "Causes a quake\n"
+ "that has no effect\n"
+ "on flying foes.");
+
+static const u8 sTM27Desc[] = _(
+ "The more the user\n"
+ "likes you, the more\n"
+ "powerful this move.");
+
+static const u8 sTM28Desc[] = _(
+ "Digs underground\n"
+ "the 1st turn, then\n"
+ "strikes next turn.");
+
+static const u8 sTM29Desc[] = _(
+ "A powerful psychic\n"
+ "attack that may\n"
+ "lower SP. DEF.");
+
+static const u8 sTM30Desc[] = _(
+ "Hurls a dark lump\n"
+ "at the foe. It may\n"
+ "lower SP. DEF.");
+
+static const u8 sTM31Desc[] = _(
+ "Destroys barriers\n"
+ "like LIGHT SCREEN\n"
+ "and causes damage.");
+
+static const u8 sTM32Desc[] = _(
+ "Creates illusory\n"
+ "copies to enhance\n"
+ "elusiveness.");
+
+static const u8 sTM33Desc[] = _(
+ "Creates a wall of\n"
+ "light that weakens\n"
+ "physical attacks.");
+
+static const u8 sTM34Desc[] = _(
+ "Zaps the foe with a\n"
+ "jolt of electricity\n"
+ "that never misses.");
+
+static const u8 sTM35Desc[] = _(
+ "Looses a stream of\n"
+ "fire that may burn\n"
+ "the foe.");
+
+static const u8 sTM36Desc[] = _(
+ "Hurls sludge at the\n"
+ "foe. It may poison\n"
+ "the foe.");
+
+static const u8 sTM37Desc[] = _(
+ "Causes a sandstorm\n"
+ "that hits the foe\n"
+ "over several turns.");
+
+static const u8 sTM38Desc[] = _(
+ "A powerful fire\n"
+ "attack that may\n"
+ "burn the foe.");
+
+static const u8 sTM39Desc[] = _(
+ "Stops the foe from\n"
+ "moving with rocks.\n"
+ "May lower SPEED.");
+
+static const u8 sTM40Desc[] = _(
+ "An extremely fast\n"
+ "attack that can't\n"
+ "be avoided.");
+
+static const u8 sTM41Desc[] = _(
+ "Prevents the foe\n"
+ "from using the same\n"
+ "move in a row.");
+
+static const u8 sTM42Desc[] = _(
+ "Raises ATTACK when\n"
+ "poisoned, burned,\n"
+ "or paralyzed.");
+
+static const u8 sTM43Desc[] = _(
+ "Adds an effect to\n"
+ "attack depending\n"
+ "on the location.");
+
+static const u8 sTM44Desc[] = _(
+ "The user sleeps for\n"
+ "2 turns to restore\n"
+ "health and status.");
+
+static const u8 sTM45Desc[] = _(
+ "Makes it tough to\n"
+ "attack a foe of the\n"
+ "opposite gender.");
+
+static const u8 sTM46Desc[] = _(
+ "While attacking,\n"
+ "it may steal the\n"
+ "foe's held item.");
+
+static const u8 sTM47Desc[] = _(
+ "Spreads hard-\n"
+ "edged wings and\n"
+ "slams into the foe.");
+
+static const u8 sTM48Desc[] = _(
+ "Switches abilities\n"
+ "with the foe on the\n"
+ "turn this is used.");
+
+static const u8 sTM49Desc[] = _(
+ "Steals the effects\n"
+ "of the move the foe\n"
+ "is trying to use.");
+
+static const u8 sTM50Desc[] = _(
+ "Enables full-power\n"
+ "attack, but sharply\n"
+ "lowers SP. ATK.");
+
+
+static const u8 sHM01Desc[] = _(
+ "Attacks the foe\n"
+ "with sharp blades\n"
+ "or claws.");
+
+static const u8 sHM02Desc[] = _(
+ "Flies up on the\n"
+ "first turn, then\n"
+ "attacks next turn.");
+
+static const u8 sHM03Desc[] = _(
+ "Creates a huge\n"
+ "wave, then crashes\n"
+ "it down on the foe.");
+
+static const u8 sHM04Desc[] = _(
+ "Builds enormous\n"
+ "power, then slams\n"
+ "the foe.");
+
+static const u8 sHM05Desc[] = _(
+ "Looses a powerful\n"
+ "blast of light that\n"
+ "reduces accuracy.");
+
+static const u8 sHM06Desc[] = _(
+ "A rock-crushingly\n"
+ "tough attack that\n"
+ "may lower DEFENSE.");
+
+static const u8 sHM07Desc[] = _(
+ "Attacks the foe\n"
+ "with enough power\n"
+ "to climb waterfalls.");
+
+static const u8 sHM08Desc[] = _(
+ "Dives underwater\n"
+ "the 1st turn, then\n"
+ "attacks next turn.");
+
// FireRed/LeafGreen key items
-const u8 gOaksParcelItemDescription[] = _("A parcel for PROF.\nOAK from a POKéMON\nMART's clerk.");
-const u8 gPokeFluteItemDescription[] = _("A sweet-sounding\nflute that awakens\nPOKéMON.");
-const u8 gSecretKeyItemDescription[] = _("The key to the\nCINNABAR ISLAND\nGYM's entrance.");
-const u8 gBikeVoucherItemDescription[] = _("A voucher for\nobtaining a bicycle\nfrom the BIKE SHOP.");
-const u8 gGoldTeethItemDescription[] = _("Gold dentures lost\nby the SAFARI\nZONE's WARDEN.");
-const u8 gOldAmberItemDescription[] = _("A stone containing\nthe genes of an\nancient POKéMON.");
-const u8 gCardKeyItemDescription[] = _("A card-type door\nkey used in SILPH\nCO's office.");
-const u8 gLiftKeyItemDescription[] = _("An elevator key\nused in TEAM\nROCKET's HIDEOUT.");
-const u8 gHelixFossilItemDescription[] = _("A piece of an\nancient marine\nPOKéMON's seashell.");
-const u8 gDomeFossilItemDescription[] = _("A piece of an\nancient marine\nPOKéMON's shell.");
-const u8 gSilphScopeItemDescription[] = _("SILPH CO's scope\nmakes unseeable\nPOKéMON visible.");
-const u8 gBicycleItemDescription[] = _("A folding bicycle\nthat is faster than\nthe RUNNING SHOES.");
-const u8 gTownMapItemDescription[] = _("Can be viewed\nanytime. Shows your\npresent location.");
-const u8 gVSSeekerItemDescription[] = _("A rechargeable unit\nthat flags battle-\nready TRAINERS.");
-const u8 gFameCheckerItemDescription[] = _("Stores information\non famous people\nfor instant recall.");
-const u8 gTMCaseItemDescription[] = _("A convenient case \nthat holds TMs and\nHMs.");
-const u8 gBerryPouchItemDescription[] = _("A convenient\ncontainer that\nholds BERRIES.");
-const u8 gTeachyTVItemDescription[] = _("A TV set tuned to\nan advice program\nfor TRAINERS.");
-const u8 gTriPassItemDescription[] = _("A pass for ferries\nbetween ONE, TWO,\nand THREE ISLAND.");
-const u8 gRainbowPassItemDescription[] = _("For ferries serving\nVERMILION and the\nSEVII ISLANDS.");
-const u8 gTeaItemDescription[] = _("A thirst-quenching\ntea prepared by an\nold lady.");
-const u8 gMysticTicketItemDescription[] = _("A ticket required\nto board the ship\nto NAVEL ROCK.");
-const u8 gAuroraTicketItemDescription[] = _("A ticket required\nto board the ship\nto BIRTH ISLAND.");
-const u8 gPowderJarItemDescription[] = _("Stores BERRY\nPOWDER made using\na BERRY CRUSHER.");
-const u8 gRubyItemDescription[] = _("An exquisite, red-\nglowing gem that\nsymbolizes passion.");
-const u8 gSapphireItemDescription[] = _("A brilliant blue gem\nthat symbolizes\nhonesty.");
+static const u8 sOaksParcelDesc[] = _(
+ "A parcel for PROF.\n"
+ "OAK from a POKéMON\n"
+ "MART's clerk.");
+
+static const u8 sPokeFluteDesc[] = _(
+ "A sweet-sounding\n"
+ "flute that awakens\n"
+ "POKéMON.");
+
+static const u8 sSecretKeyDesc[] = _(
+ "The key to the\n"
+ "CINNABAR ISLAND\n"
+ "GYM's entrance.");
+
+static const u8 sBikeVoucherDesc[] = _(
+ "A voucher for\n"
+ "obtaining a bicycle\n"
+ "from the BIKE SHOP.");
+
+static const u8 sGoldTeethDesc[] = _(
+ "Gold dentures lost\n"
+ "by the SAFARI\n"
+ "ZONE's WARDEN.");
+
+static const u8 sOldAmberDesc[] = _(
+ "A stone containing\n"
+ "the genes of an\n"
+ "ancient POKéMON.");
+
+static const u8 sCardKeyDesc[] = _(
+ "A card-type door\n"
+ "key used in SILPH\n"
+ "CO's office.");
+
+static const u8 sLiftKeyDesc[] = _(
+ "An elevator key\n"
+ "used in TEAM\n"
+ "ROCKET's HIDEOUT.");
+
+static const u8 sHelixFossilDesc[] = _(
+ "A piece of an\n"
+ "ancient marine\n"
+ "POKéMON's seashell.");
+
+static const u8 sDomeFossilDesc[] = _(
+ "A piece of an\n"
+ "ancient marine\n"
+ "POKéMON's shell.");
+
+static const u8 sSilphScopeDesc[] = _(
+ "SILPH CO's scope\n"
+ "makes unseeable\n"
+ "POKéMON visible.");
+
+static const u8 sBicycleDesc[] = _(
+ "A folding bicycle\n"
+ "that is faster than\n"
+ "the RUNNING SHOES.");
+
+static const u8 sTownMapDesc[] = _(
+ "Can be viewed\n"
+ "anytime. Shows your\n"
+ "present location.");
+
+static const u8 sVSSeekerDesc[] = _(
+ "A rechargeable unit\n"
+ "that flags battle-\n"
+ "ready TRAINERS.");
+
+static const u8 sFameCheckerDesc[] = _(
+ "Stores information\n"
+ "on famous people\n"
+ "for instant recall.");
+
+static const u8 sTMCaseDesc[] = _(
+ "A convenient case \n"
+ "that holds TMs and\n"
+ "HMs.");
+
+static const u8 sBerryPouchDesc[] = _(
+ "A convenient\n"
+ "container that\n"
+ "holds BERRIES.");
+
+static const u8 sTeachyTVDesc[] = _(
+ "A TV set tuned to\n"
+ "an advice program\n"
+ "for TRAINERS.");
+
+static const u8 sTriPassDesc[] = _(
+ "A pass for ferries\n"
+ "between ONE, TWO,\n"
+ "and THREE ISLAND.");
+
+static const u8 sRainbowPassDesc[] = _(
+ "For ferries serving\n"
+ "VERMILION and the\n"
+ "SEVII ISLANDS.");
+
+static const u8 sTeaDesc[] = _(
+ "A thirst-quenching\n"
+ "tea prepared by an\n"
+ "old lady.");
+
+static const u8 sMysticTicketDesc[] = _(
+ "A ticket required\n"
+ "to board the ship\n"
+ "to NAVEL ROCK.");
+
+static const u8 sAuroraTicketDesc[] = _(
+ "A ticket required\n"
+ "to board the ship\n"
+ "to BIRTH ISLAND.");
+
+static const u8 sPowderJarDesc[] = _(
+ "Stores BERRY\n"
+ "POWDER made using\n"
+ "a BERRY CRUSHER.");
+
+static const u8 sRubyDesc[] = _(
+ "An exquisite, red-\n"
+ "glowing gem that\n"
+ "symbolizes passion.");
+
+static const u8 sSapphireDesc[] = _(
+ "A brilliant blue gem\n"
+ "that symbolizes\n"
+ "honesty.");
+
// Emerald-specific key items
-const u8 gMagmaEmblemItemDescription[] = _("A medal-like item in\nthe same shape as\nTEAM MAGMA's mark.");
-const u8 gOldSeaMapItemDescription[] = _("A faded sea chart\nthat shows the way\nto a certain island.");
+static const u8 sMagmaEmblemDesc[] = _(
+ "A medal-like item in\n"
+ "the same shape as\n"
+ "TEAM MAGMA's mark.");
+
+static const u8 sOldSeaMapDesc[] = _(
+ "A faded sea chart\n"
+ "that shows the way\n"
+ "to a certain island.");
diff --git a/src/data/trainer_graphics/back_pic_anims.h b/src/data/trainer_graphics/back_pic_anims.h
index 0cc4bb203..821039cb3 100644
--- a/src/data/trainer_graphics/back_pic_anims.h
+++ b/src/data/trainer_graphics/back_pic_anims.h
@@ -1,4 +1,4 @@
-const union AnimCmd gAnimCmd_Brendan_1[] =
+static const union AnimCmd gAnimCmd_Brendan_1[] =
{
ANIMCMD_FRAME(0, 24),
ANIMCMD_FRAME(1, 9),
@@ -8,7 +8,7 @@ const union AnimCmd gAnimCmd_Brendan_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_May_Steven_1[] =
+static const union AnimCmd gAnimCmd_May_Steven_1[] =
{
ANIMCMD_FRAME(0, 24),
ANIMCMD_FRAME(1, 9),
@@ -18,7 +18,7 @@ const union AnimCmd gAnimCmd_May_Steven_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_Wally_1[] =
+static const union AnimCmd gAnimCmd_Wally_1[] =
{
ANIMCMD_FRAME(0, 24),
ANIMCMD_FRAME(1, 9),
@@ -28,7 +28,7 @@ const union AnimCmd gAnimCmd_Wally_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_Red_1[] =
+static const union AnimCmd gAnimCmd_Red_1[] =
{
ANIMCMD_FRAME(1, 20),
ANIMCMD_FRAME(2, 6),
@@ -38,7 +38,7 @@ const union AnimCmd gAnimCmd_Red_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_Leaf_1[] =
+static const union AnimCmd gAnimCmd_Leaf_1[] =
{
ANIMCMD_FRAME(1, 20),
ANIMCMD_FRAME(2, 6),
@@ -48,7 +48,7 @@ const union AnimCmd gAnimCmd_Leaf_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_RubySapphireBrendan_1[] =
+static const union AnimCmd gAnimCmd_RubySapphireBrendan_1[] =
{
ANIMCMD_FRAME(0, 24),
ANIMCMD_FRAME(1, 9),
@@ -58,72 +58,72 @@ const union AnimCmd gAnimCmd_RubySapphireBrendan_1[] =
ANIMCMD_END,
};
-const union AnimCmd gAnimCmd_RubySapphireMay_1[] =
+static const union AnimCmd gAnimCmd_RubySapphireMay_1[] =
{
ANIMCMD_FRAME(0, 24),
ANIMCMD_FRAME(1, 9),
- ANIMCMD_FRAME(2, 24),
+ ANIMCMD_FRAME(2, 24),
ANIMCMD_FRAME(0, 9),
ANIMCMD_FRAME(3, 50),
ANIMCMD_END,
};
-const union AnimCmd *const gTrainerBackAnims_Brendan[] =
+static const union AnimCmd *const sBackAnims_Brendan[] =
{
- gAnimCmd_General_Frame3,
+ sAnim_GeneralFrame3,
gAnimCmd_Brendan_1,
};
-const union AnimCmd *const gTrainerBackAnims_May[] =
+static const union AnimCmd *const sBackAnims_May[] =
{
- gAnimCmd_General_Frame3,
+ sAnim_GeneralFrame3,
gAnimCmd_May_Steven_1,
};
-const union AnimCmd *const gTrainerBackAnims_Red[] =
+static const union AnimCmd *const sBackAnims_Red[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gAnimCmd_Red_1,
};
-const union AnimCmd *const gTrainerBackAnims_Leaf[] =
+static const union AnimCmd *const sBackAnims_Leaf[] =
{
- gAnimCmd_General_Frame0,
+ sAnim_GeneralFrame0,
gAnimCmd_Leaf_1,
};
-const union AnimCmd *const gTrainerBackAnims_RubySapphireBrendan[] =
+static const union AnimCmd *const sBackAnims_RubySapphireBrendan[] =
{
- gAnimCmd_General_Frame3,
+ sAnim_GeneralFrame3,
gAnimCmd_RubySapphireBrendan_1,
};
-const union AnimCmd *const gTrainerBackAnims_RubySapphireMay[] =
+static const union AnimCmd *const sBackAnims_RubySapphireMay[] =
{
- gAnimCmd_General_Frame3,
+ sAnim_GeneralFrame3,
gAnimCmd_RubySapphireMay_1,
};
-const union AnimCmd *const gTrainerBackAnims_Wally[] =
+static const union AnimCmd *const sBackAnims_Wally[] =
{
- gAnimCmd_General_Frame3,
+ sAnim_GeneralFrame3,
gAnimCmd_Wally_1,
};
-const union AnimCmd *const gTrainerBackAnims_Steven[] =
+static const union AnimCmd *const sBackAnims_Steven[] =
{
- gAnimCmd_General_Frame3,
+ sAnim_GeneralFrame3,
gAnimCmd_May_Steven_1,
};
const union AnimCmd *const *const gTrainerBackAnimsPtrTable[] =
{
- gTrainerBackAnims_Brendan,
- gTrainerBackAnims_May,
- gTrainerBackAnims_Red,
- gTrainerBackAnims_Leaf,
- gTrainerBackAnims_RubySapphireBrendan,
- gTrainerBackAnims_RubySapphireMay,
- gTrainerBackAnims_Wally,
- gTrainerBackAnims_Steven,
+ [TRAINER_BACK_PIC_BRENDAN] = sBackAnims_Brendan,
+ [TRAINER_BACK_PIC_MAY] = sBackAnims_May,
+ [TRAINER_BACK_PIC_RED] = sBackAnims_Red,
+ [TRAINER_BACK_PIC_LEAF] = sBackAnims_Leaf,
+ [TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN] = sBackAnims_RubySapphireBrendan,
+ [TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY] = sBackAnims_RubySapphireMay,
+ [TRAINER_BACK_PIC_WALLY] = sBackAnims_Wally,
+ [TRAINER_BACK_PIC_STEVEN] = sBackAnims_Steven,
};
diff --git a/src/data/trainer_graphics/back_pic_tables.h b/src/data/trainer_graphics/back_pic_tables.h
index 0f6b0cb91..86efd7905 100644
--- a/src/data/trainer_graphics/back_pic_tables.h
+++ b/src/data/trainer_graphics/back_pic_tables.h
@@ -1,13 +1,13 @@
const struct MonCoords gTrainerBackPicCoords[] =
{
- {.size = 8, .y_offset = 4},
- {.size = 8, .y_offset = 4},
- {.size = 8, .y_offset = 5},
- {.size = 8, .y_offset = 5},
- {.size = 8, .y_offset = 4},
- {.size = 8, .y_offset = 4},
- {.size = 8, .y_offset = 4},
- {.size = 8, .y_offset = 4},
+ [TRAINER_BACK_PIC_BRENDAN] = {.size = 8, .y_offset = 4},
+ [TRAINER_BACK_PIC_MAY] = {.size = 8, .y_offset = 4},
+ [TRAINER_BACK_PIC_RED] = {.size = 8, .y_offset = 5},
+ [TRAINER_BACK_PIC_LEAF] = {.size = 8, .y_offset = 5},
+ [TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN] = {.size = 8, .y_offset = 4},
+ [TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY] = {.size = 8, .y_offset = 4},
+ [TRAINER_BACK_PIC_WALLY] = {.size = 8, .y_offset = 4},
+ [TRAINER_BACK_PIC_STEVEN] = {.size = 8, .y_offset = 4},
};
// this table goes functionally unused, since none of these pics are compressed
@@ -25,14 +25,14 @@ const struct CompressedSpriteSheet gTrainerBackPicTable[] =
(const u32 *)gTrainerBackPic_Steven, 0x2000, TRAINER_BACK_PIC_STEVEN,
};
-const struct CompressedSpritePalette gTrainerBackPicPaletteTable[] =
+const struct CompressedSpritePalette gTrainerBackPicPaletteTable[] =
{
- gTrainerPalette_Brendan, TRAINER_BACK_PIC_BRENDAN,
- gTrainerPalette_May, TRAINER_BACK_PIC_MAY,
- gTrainerBackPicPalette_Red, TRAINER_BACK_PIC_RED,
- gTrainerBackPicPalette_Leaf, TRAINER_BACK_PIC_LEAF,
- gTrainerPalette_RubySapphireBrendan, TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN,
- gTrainerPalette_RubySapphireMay, TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY,
- gTrainerPalette_Wally, TRAINER_BACK_PIC_WALLY,
- gTrainerPalette_Steven, TRAINER_BACK_PIC_STEVEN,
+ TRAINER_BACK_PAL(BRENDAN, gTrainerPalette_Brendan),
+ TRAINER_BACK_PAL(MAY, gTrainerPalette_May),
+ TRAINER_BACK_PAL(RED, gTrainerBackPicPalette_Red),
+ TRAINER_BACK_PAL(LEAF, gTrainerBackPicPalette_Leaf),
+ TRAINER_BACK_PAL(RUBY_SAPPHIRE_BRENDAN, gTrainerPalette_RubySapphireBrendan),
+ TRAINER_BACK_PAL(RUBY_SAPPHIRE_MAY, gTrainerPalette_RubySapphireMay),
+ TRAINER_BACK_PAL(WALLY, gTrainerPalette_Wally),
+ TRAINER_BACK_PAL(STEVEN, gTrainerPalette_Steven),
};
diff --git a/src/data/trainer_graphics/front_pic_anims.h b/src/data/trainer_graphics/front_pic_anims.h
index 371e5a300..f01394532 100644
--- a/src/data/trainer_graphics/front_pic_anims.h
+++ b/src/data/trainer_graphics/front_pic_anims.h
@@ -1,470 +1,468 @@
-#include "constants/trainers.h"
-
-const union AnimCmd *const gTrainerFrontAnims_Hiker[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_Hiker[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_AquaGruntM[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_AquaGruntM[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_PokemonBreederF[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_PokemonBreederF[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_CoolTrainerM[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_CoolTrainerM[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_BirdKeeper[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_BirdKeeper[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_Collector[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_Collector[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_AquaGruntF[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_AquaGruntF[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_SwimmerM[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_SwimmerM[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_MagmaGruntM[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_MagmaGruntM[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_ExpertM[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_ExpertM[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_AquaAdminM[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_AquaAdminM[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_BlackBelt[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_BlackBelt[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_AquaAdminF[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_AquaAdminF[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_AquaLeaderArchie[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_AquaLeaderArchie[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_HexManiac[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_HexManiac[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_AromaLady[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_AromaLady[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_RuinManiac[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_RuinManiac[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_Interviewer[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_Interviewer[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_TuberF[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_TuberF[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_TuberM[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_TuberM[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_CoolTrainerF[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_CoolTrainerF[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_Lady[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_Lady[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_Beauty[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_Beauty[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_RichBoy[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_RichBoy[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_ExpertF[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_ExpertF[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_Pokemaniac[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_Pokemaniac[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_MagmaGruntF[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_MagmaGruntF[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_Guitarist[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_Guitarist[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_Kindler[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_Kindler[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_Camper[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_Camper[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_Picnicker[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_Picnicker[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_BugManiac[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_BugManiac[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_PokemonBreederM[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_PokemonBreederM[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_PsychicM[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_PsychicM[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_PsychicF[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_PsychicF[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_Gentleman[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_Gentleman[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_EliteFourSidney[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_EliteFourSidney[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_EliteFourPhoebe[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_EliteFourPhoebe[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_EliteFourGlacia[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_EliteFourGlacia[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_EliteFourDrake[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_EliteFourDrake[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_LeaderRoxanne[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_LeaderRoxanne[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_LeaderBrawly[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_LeaderBrawly[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_LeaderWattson[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_LeaderWattson[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_LeaderFlannery[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_LeaderFlannery[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_LeaderNorman[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_LeaderNorman[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_LeaderWinona[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_LeaderWinona[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_LeaderTateAndLiza[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_LeaderTateAndLiza[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_LeaderJuan[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_LeaderJuan[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_SchoolKidM[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_SchoolKidM[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_SchoolKidF[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_SchoolKidF[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_SrAndJr[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_SrAndJr[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_PokefanM[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_PokefanM[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_PokefanF[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_PokefanF[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_Youngster[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_Youngster[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_ChampionWallace[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_ChampionWallace[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_Fisherman[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_Fisherman[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_CyclingTriathleteM[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_CyclingTriathleteM[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_CyclingTriathleteF[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_CyclingTriathleteF[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_RunningTriathleteM[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_RunningTriathleteM[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_RunningTriathleteF[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_RunningTriathleteF[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_SwimmingTriathleteM[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_SwimmingTriathleteM[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_SwimmingTriathleteF[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_SwimmingTriathleteF[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_DragonTamer[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_DragonTamer[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_NinjaBoy[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_NinjaBoy[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_BattleGirl[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_BattleGirl[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_ParasolLady[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_ParasolLady[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_SwimmerF[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_SwimmerF[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_Twins[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_Twins[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_Sailor[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_Sailor[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_MagmaAdmin[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_MagmaAdmin[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_Wally[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_Wally[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_Brendan[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_Brendan[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_May[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_May[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_BugCatcher[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_BugCatcher[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_PokemonRangerM[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_PokemonRangerM[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_PokemonRangerF[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_PokemonRangerF[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_MagmaLeaderMaxie[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_MagmaLeaderMaxie[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_Lass[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_Lass[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_YoungCouple[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_YoungCouple[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_OldCouple[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_OldCouple[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_SisAndBro[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_SisAndBro[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_Steven[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_Steven[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_SalonMaidenAnabel[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_SalonMaidenAnabel[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_DomeAceTucker[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_DomeAceTucker[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_PalaceMavenSpenser[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_PalaceMavenSpenser[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_ArenaTycoonGreta[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_ArenaTycoonGreta[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_FactoryHeadNoland[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_FactoryHeadNoland[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_PikeQueenLucy[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_PikeQueenLucy[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_PyramidKingBrandon[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_PyramidKingBrandon[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_Red[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_Red[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_Leaf[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_Leaf[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_RubySapphireBrendan[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_RubySapphireBrendan[] ={
+ sAnim_GeneralFrame0,
};
-const union AnimCmd *const gTrainerFrontAnims_RubySapphireMay[] ={
- gAnimCmd_General_Frame0,
+static const union AnimCmd *const sAnims_RubySapphireMay[] ={
+ sAnim_GeneralFrame0,
};
const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[] =
{
- [TRAINER_PIC_HIKER] = gTrainerFrontAnims_Hiker,
- [TRAINER_PIC_AQUA_GRUNT_M] = gTrainerFrontAnims_AquaGruntM,
- [TRAINER_PIC_POKEMON_BREEDER_F] = gTrainerFrontAnims_PokemonBreederF,
- [TRAINER_PIC_COOLTRAINER_M] = gTrainerFrontAnims_CoolTrainerM,
- [TRAINER_PIC_BIRD_KEEPER] = gTrainerFrontAnims_BirdKeeper,
- [TRAINER_PIC_COLLECTOR] = gTrainerFrontAnims_Collector,
- [TRAINER_PIC_AQUA_GRUNT_F] = gTrainerFrontAnims_AquaGruntF,
- [TRAINER_PIC_SWIMMER_M] = gTrainerFrontAnims_SwimmerM,
- [TRAINER_PIC_MAGMA_GRUNT_M] = gTrainerFrontAnims_MagmaGruntM,
- [TRAINER_PIC_EXPERT_M] = gTrainerFrontAnims_ExpertM,
- [TRAINER_PIC_AQUA_ADMIN_M] = gTrainerFrontAnims_AquaAdminM,
- [TRAINER_PIC_BLACK_BELT] = gTrainerFrontAnims_BlackBelt,
- [TRAINER_PIC_AQUA_ADMIN_F] = gTrainerFrontAnims_AquaAdminF,
- [TRAINER_PIC_AQUA_LEADER_ARCHIE] = gTrainerFrontAnims_AquaLeaderArchie,
- [TRAINER_PIC_HEX_MANIAC] = gTrainerFrontAnims_HexManiac,
- [TRAINER_PIC_AROMA_LADY] = gTrainerFrontAnims_AromaLady,
- [TRAINER_PIC_RUIN_MANIAC] = gTrainerFrontAnims_RuinManiac,
- [TRAINER_PIC_INTERVIEWER] = gTrainerFrontAnims_Interviewer,
- [TRAINER_PIC_TUBER_F] = gTrainerFrontAnims_TuberF,
- [TRAINER_PIC_TUBER_M] = gTrainerFrontAnims_TuberM,
- [TRAINER_PIC_COOLTRAINER_F] = gTrainerFrontAnims_CoolTrainerF,
- [TRAINER_PIC_LADY] = gTrainerFrontAnims_Lady,
- [TRAINER_PIC_BEAUTY] = gTrainerFrontAnims_Beauty,
- [TRAINER_PIC_RICH_BOY] = gTrainerFrontAnims_RichBoy,
- [TRAINER_PIC_EXPERT_F] = gTrainerFrontAnims_ExpertF,
- [TRAINER_PIC_POKEMANIAC] = gTrainerFrontAnims_Pokemaniac,
- [TRAINER_PIC_MAGMA_GRUNT_F] = gTrainerFrontAnims_MagmaGruntF,
- [TRAINER_PIC_GUITARIST] = gTrainerFrontAnims_Guitarist,
- [TRAINER_PIC_KINDLER] = gTrainerFrontAnims_Kindler,
- [TRAINER_PIC_CAMPER] = gTrainerFrontAnims_Camper,
- [TRAINER_PIC_PICNICKER] = gTrainerFrontAnims_Picnicker,
- [TRAINER_PIC_BUG_MANIAC] = gTrainerFrontAnims_BugManiac,
- [TRAINER_PIC_POKEMON_BREEDER_M] = gTrainerFrontAnims_PokemonBreederM,
- [TRAINER_PIC_PSYCHIC_M] = gTrainerFrontAnims_PsychicM,
- [TRAINER_PIC_PSYCHIC_F] = gTrainerFrontAnims_PsychicF,
- [TRAINER_PIC_GENTLEMAN] = gTrainerFrontAnims_Gentleman,
- [TRAINER_PIC_ELITE_FOUR_SIDNEY] = gTrainerFrontAnims_EliteFourSidney,
- [TRAINER_PIC_ELITE_FOUR_PHOEBE] = gTrainerFrontAnims_EliteFourPhoebe,
- [TRAINER_PIC_ELITE_FOUR_GLACIA] = gTrainerFrontAnims_EliteFourGlacia,
- [TRAINER_PIC_ELITE_FOUR_DRAKE] = gTrainerFrontAnims_EliteFourDrake,
- [TRAINER_PIC_LEADER_ROXANNE] = gTrainerFrontAnims_LeaderRoxanne,
- [TRAINER_PIC_LEADER_BRAWLY] = gTrainerFrontAnims_LeaderBrawly,
- [TRAINER_PIC_LEADER_WATTSON] = gTrainerFrontAnims_LeaderWattson,
- [TRAINER_PIC_LEADER_FLANNERY] = gTrainerFrontAnims_LeaderFlannery,
- [TRAINER_PIC_LEADER_NORMAN] = gTrainerFrontAnims_LeaderNorman,
- [TRAINER_PIC_LEADER_WINONA] = gTrainerFrontAnims_LeaderWinona,
- [TRAINER_PIC_LEADER_TATE_AND_LIZA] = gTrainerFrontAnims_LeaderTateAndLiza,
- [TRAINER_PIC_LEADER_JUAN] = gTrainerFrontAnims_LeaderJuan,
- [TRAINER_PIC_SCHOOL_KID_M] = gTrainerFrontAnims_SchoolKidM,
- [TRAINER_PIC_SCHOOL_KID_F] = gTrainerFrontAnims_SchoolKidF,
- [TRAINER_PIC_SR_AND_JR] = gTrainerFrontAnims_SrAndJr,
- [TRAINER_PIC_POKEFAN_M] = gTrainerFrontAnims_PokefanM,
- [TRAINER_PIC_POKEFAN_F] = gTrainerFrontAnims_PokefanF,
- [TRAINER_PIC_YOUNGSTER] = gTrainerFrontAnims_Youngster,
- [TRAINER_PIC_CHAMPION_WALLACE] = gTrainerFrontAnims_ChampionWallace,
- [TRAINER_PIC_FISHERMAN] = gTrainerFrontAnims_Fisherman,
- [TRAINER_PIC_CYCLING_TRIATHLETE_M] = gTrainerFrontAnims_CyclingTriathleteM,
- [TRAINER_PIC_CYCLING_TRIATHLETE_F] = gTrainerFrontAnims_CyclingTriathleteF,
- [TRAINER_PIC_RUNNING_TRIATHLETE_M] = gTrainerFrontAnims_RunningTriathleteM,
- [TRAINER_PIC_RUNNING_TRIATHLETE_F] = gTrainerFrontAnims_RunningTriathleteF,
- [TRAINER_PIC_SWIMMING_TRIATHLETE_M] = gTrainerFrontAnims_SwimmingTriathleteM,
- [TRAINER_PIC_SWIMMING_TRIATHLETE_F] = gTrainerFrontAnims_SwimmingTriathleteF,
- [TRAINER_PIC_DRAGON_TAMER] = gTrainerFrontAnims_DragonTamer,
- [TRAINER_PIC_NINJA_BOY] = gTrainerFrontAnims_NinjaBoy,
- [TRAINER_PIC_BATTLE_GIRL] = gTrainerFrontAnims_BattleGirl,
- [TRAINER_PIC_PARASOL_LADY] = gTrainerFrontAnims_ParasolLady,
- [TRAINER_PIC_SWIMMER_F] = gTrainerFrontAnims_SwimmerF,
- [TRAINER_PIC_TWINS] = gTrainerFrontAnims_Twins,
- [TRAINER_PIC_SAILOR] = gTrainerFrontAnims_Sailor,
- [TRAINER_PIC_MAGMA_ADMIN] = gTrainerFrontAnims_MagmaAdmin,
- [TRAINER_PIC_WALLY] = gTrainerFrontAnims_Wally,
- [TRAINER_PIC_BRENDAN] = gTrainerFrontAnims_Brendan,
- [TRAINER_PIC_MAY] = gTrainerFrontAnims_May,
- [TRAINER_PIC_BUG_CATCHER] = gTrainerFrontAnims_BugCatcher,
- [TRAINER_PIC_POKEMON_RANGER_M] = gTrainerFrontAnims_PokemonRangerM,
- [TRAINER_PIC_POKEMON_RANGER_F] = gTrainerFrontAnims_PokemonRangerF,
- [TRAINER_PIC_MAGMA_LEADER_MAXIE] = gTrainerFrontAnims_MagmaLeaderMaxie,
- [TRAINER_PIC_LASS] = gTrainerFrontAnims_Lass,
- [TRAINER_PIC_YOUNG_COUPLE] = gTrainerFrontAnims_YoungCouple,
- [TRAINER_PIC_OLD_COUPLE] = gTrainerFrontAnims_OldCouple,
- [TRAINER_PIC_SIS_AND_BRO] = gTrainerFrontAnims_SisAndBro,
- [TRAINER_PIC_STEVEN] = gTrainerFrontAnims_Steven,
- [TRAINER_PIC_SALON_MAIDEN_ANABEL] = gTrainerFrontAnims_SalonMaidenAnabel,
- [TRAINER_PIC_DOME_ACE_TUCKER] = gTrainerFrontAnims_DomeAceTucker,
- [TRAINER_PIC_PALACE_MAVEN_SPENSER] = gTrainerFrontAnims_PalaceMavenSpenser,
- [TRAINER_PIC_ARENA_TYCOON_GRETA] = gTrainerFrontAnims_ArenaTycoonGreta,
- [TRAINER_PIC_FACTORY_HEAD_NOLAND] = gTrainerFrontAnims_FactoryHeadNoland,
- [TRAINER_PIC_PIKE_QUEEN_LUCY] = gTrainerFrontAnims_PikeQueenLucy,
- [TRAINER_PIC_PYRAMID_KING_BRANDON] = gTrainerFrontAnims_PyramidKingBrandon,
- [TRAINER_PIC_RED] = gTrainerFrontAnims_Red,
- [TRAINER_PIC_LEAF] = gTrainerFrontAnims_Leaf,
- [TRAINER_PIC_RS_BRENDAN] = gTrainerFrontAnims_RubySapphireBrendan,
- [TRAINER_PIC_RS_MAY] = gTrainerFrontAnims_RubySapphireMay,
+ [TRAINER_PIC_HIKER] = sAnims_Hiker,
+ [TRAINER_PIC_AQUA_GRUNT_M] = sAnims_AquaGruntM,
+ [TRAINER_PIC_POKEMON_BREEDER_F] = sAnims_PokemonBreederF,
+ [TRAINER_PIC_COOLTRAINER_M] = sAnims_CoolTrainerM,
+ [TRAINER_PIC_BIRD_KEEPER] = sAnims_BirdKeeper,
+ [TRAINER_PIC_COLLECTOR] = sAnims_Collector,
+ [TRAINER_PIC_AQUA_GRUNT_F] = sAnims_AquaGruntF,
+ [TRAINER_PIC_SWIMMER_M] = sAnims_SwimmerM,
+ [TRAINER_PIC_MAGMA_GRUNT_M] = sAnims_MagmaGruntM,
+ [TRAINER_PIC_EXPERT_M] = sAnims_ExpertM,
+ [TRAINER_PIC_AQUA_ADMIN_M] = sAnims_AquaAdminM,
+ [TRAINER_PIC_BLACK_BELT] = sAnims_BlackBelt,
+ [TRAINER_PIC_AQUA_ADMIN_F] = sAnims_AquaAdminF,
+ [TRAINER_PIC_AQUA_LEADER_ARCHIE] = sAnims_AquaLeaderArchie,
+ [TRAINER_PIC_HEX_MANIAC] = sAnims_HexManiac,
+ [TRAINER_PIC_AROMA_LADY] = sAnims_AromaLady,
+ [TRAINER_PIC_RUIN_MANIAC] = sAnims_RuinManiac,
+ [TRAINER_PIC_INTERVIEWER] = sAnims_Interviewer,
+ [TRAINER_PIC_TUBER_F] = sAnims_TuberF,
+ [TRAINER_PIC_TUBER_M] = sAnims_TuberM,
+ [TRAINER_PIC_COOLTRAINER_F] = sAnims_CoolTrainerF,
+ [TRAINER_PIC_LADY] = sAnims_Lady,
+ [TRAINER_PIC_BEAUTY] = sAnims_Beauty,
+ [TRAINER_PIC_RICH_BOY] = sAnims_RichBoy,
+ [TRAINER_PIC_EXPERT_F] = sAnims_ExpertF,
+ [TRAINER_PIC_POKEMANIAC] = sAnims_Pokemaniac,
+ [TRAINER_PIC_MAGMA_GRUNT_F] = sAnims_MagmaGruntF,
+ [TRAINER_PIC_GUITARIST] = sAnims_Guitarist,
+ [TRAINER_PIC_KINDLER] = sAnims_Kindler,
+ [TRAINER_PIC_CAMPER] = sAnims_Camper,
+ [TRAINER_PIC_PICNICKER] = sAnims_Picnicker,
+ [TRAINER_PIC_BUG_MANIAC] = sAnims_BugManiac,
+ [TRAINER_PIC_POKEMON_BREEDER_M] = sAnims_PokemonBreederM,
+ [TRAINER_PIC_PSYCHIC_M] = sAnims_PsychicM,
+ [TRAINER_PIC_PSYCHIC_F] = sAnims_PsychicF,
+ [TRAINER_PIC_GENTLEMAN] = sAnims_Gentleman,
+ [TRAINER_PIC_ELITE_FOUR_SIDNEY] = sAnims_EliteFourSidney,
+ [TRAINER_PIC_ELITE_FOUR_PHOEBE] = sAnims_EliteFourPhoebe,
+ [TRAINER_PIC_ELITE_FOUR_GLACIA] = sAnims_EliteFourGlacia,
+ [TRAINER_PIC_ELITE_FOUR_DRAKE] = sAnims_EliteFourDrake,
+ [TRAINER_PIC_LEADER_ROXANNE] = sAnims_LeaderRoxanne,
+ [TRAINER_PIC_LEADER_BRAWLY] = sAnims_LeaderBrawly,
+ [TRAINER_PIC_LEADER_WATTSON] = sAnims_LeaderWattson,
+ [TRAINER_PIC_LEADER_FLANNERY] = sAnims_LeaderFlannery,
+ [TRAINER_PIC_LEADER_NORMAN] = sAnims_LeaderNorman,
+ [TRAINER_PIC_LEADER_WINONA] = sAnims_LeaderWinona,
+ [TRAINER_PIC_LEADER_TATE_AND_LIZA] = sAnims_LeaderTateAndLiza,
+ [TRAINER_PIC_LEADER_JUAN] = sAnims_LeaderJuan,
+ [TRAINER_PIC_SCHOOL_KID_M] = sAnims_SchoolKidM,
+ [TRAINER_PIC_SCHOOL_KID_F] = sAnims_SchoolKidF,
+ [TRAINER_PIC_SR_AND_JR] = sAnims_SrAndJr,
+ [TRAINER_PIC_POKEFAN_M] = sAnims_PokefanM,
+ [TRAINER_PIC_POKEFAN_F] = sAnims_PokefanF,
+ [TRAINER_PIC_YOUNGSTER] = sAnims_Youngster,
+ [TRAINER_PIC_CHAMPION_WALLACE] = sAnims_ChampionWallace,
+ [TRAINER_PIC_FISHERMAN] = sAnims_Fisherman,
+ [TRAINER_PIC_CYCLING_TRIATHLETE_M] = sAnims_CyclingTriathleteM,
+ [TRAINER_PIC_CYCLING_TRIATHLETE_F] = sAnims_CyclingTriathleteF,
+ [TRAINER_PIC_RUNNING_TRIATHLETE_M] = sAnims_RunningTriathleteM,
+ [TRAINER_PIC_RUNNING_TRIATHLETE_F] = sAnims_RunningTriathleteF,
+ [TRAINER_PIC_SWIMMING_TRIATHLETE_M] = sAnims_SwimmingTriathleteM,
+ [TRAINER_PIC_SWIMMING_TRIATHLETE_F] = sAnims_SwimmingTriathleteF,
+ [TRAINER_PIC_DRAGON_TAMER] = sAnims_DragonTamer,
+ [TRAINER_PIC_NINJA_BOY] = sAnims_NinjaBoy,
+ [TRAINER_PIC_BATTLE_GIRL] = sAnims_BattleGirl,
+ [TRAINER_PIC_PARASOL_LADY] = sAnims_ParasolLady,
+ [TRAINER_PIC_SWIMMER_F] = sAnims_SwimmerF,
+ [TRAINER_PIC_TWINS] = sAnims_Twins,
+ [TRAINER_PIC_SAILOR] = sAnims_Sailor,
+ [TRAINER_PIC_MAGMA_ADMIN] = sAnims_MagmaAdmin,
+ [TRAINER_PIC_WALLY] = sAnims_Wally,
+ [TRAINER_PIC_BRENDAN] = sAnims_Brendan,
+ [TRAINER_PIC_MAY] = sAnims_May,
+ [TRAINER_PIC_BUG_CATCHER] = sAnims_BugCatcher,
+ [TRAINER_PIC_POKEMON_RANGER_M] = sAnims_PokemonRangerM,
+ [TRAINER_PIC_POKEMON_RANGER_F] = sAnims_PokemonRangerF,
+ [TRAINER_PIC_MAGMA_LEADER_MAXIE] = sAnims_MagmaLeaderMaxie,
+ [TRAINER_PIC_LASS] = sAnims_Lass,
+ [TRAINER_PIC_YOUNG_COUPLE] = sAnims_YoungCouple,
+ [TRAINER_PIC_OLD_COUPLE] = sAnims_OldCouple,
+ [TRAINER_PIC_SIS_AND_BRO] = sAnims_SisAndBro,
+ [TRAINER_PIC_STEVEN] = sAnims_Steven,
+ [TRAINER_PIC_SALON_MAIDEN_ANABEL] = sAnims_SalonMaidenAnabel,
+ [TRAINER_PIC_DOME_ACE_TUCKER] = sAnims_DomeAceTucker,
+ [TRAINER_PIC_PALACE_MAVEN_SPENSER] = sAnims_PalaceMavenSpenser,
+ [TRAINER_PIC_ARENA_TYCOON_GRETA] = sAnims_ArenaTycoonGreta,
+ [TRAINER_PIC_FACTORY_HEAD_NOLAND] = sAnims_FactoryHeadNoland,
+ [TRAINER_PIC_PIKE_QUEEN_LUCY] = sAnims_PikeQueenLucy,
+ [TRAINER_PIC_PYRAMID_KING_BRANDON] = sAnims_PyramidKingBrandon,
+ [TRAINER_PIC_RED] = sAnims_Red,
+ [TRAINER_PIC_LEAF] = sAnims_Leaf,
+ [TRAINER_PIC_RS_BRENDAN] = sAnims_RubySapphireBrendan,
+ [TRAINER_PIC_RS_MAY] = sAnims_RubySapphireMay,
};
diff --git a/src/data/trainer_graphics/front_pic_tables.h b/src/data/trainer_graphics/front_pic_tables.h
index fc637fc6e..c3408b4c3 100644
--- a/src/data/trainer_graphics/front_pic_tables.h
+++ b/src/data/trainer_graphics/front_pic_tables.h
@@ -1,290 +1,290 @@
const struct MonCoords gTrainerFrontPicCoords[] =
{
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 2},
- {.size = 8, .y_offset = 2},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 2},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 2},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 2},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 2},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
- {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_HIKER] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_AQUA_GRUNT_M] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_POKEMON_BREEDER_F] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_COOLTRAINER_M] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_BIRD_KEEPER] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_COLLECTOR] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_AQUA_GRUNT_F] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_SWIMMER_M] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_MAGMA_GRUNT_M] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_EXPERT_M] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_AQUA_ADMIN_M] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_BLACK_BELT] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_AQUA_ADMIN_F] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_AQUA_LEADER_ARCHIE] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_HEX_MANIAC] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_AROMA_LADY] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_RUIN_MANIAC] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_INTERVIEWER] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_TUBER_F] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_TUBER_M] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_COOLTRAINER_F] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_LADY] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_BEAUTY] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_RICH_BOY] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_EXPERT_F] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_POKEMANIAC] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_MAGMA_GRUNT_F] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_GUITARIST] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_KINDLER] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_CAMPER] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_PICNICKER] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_BUG_MANIAC] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_POKEMON_BREEDER_M] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_PSYCHIC_M] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_PSYCHIC_F] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_GENTLEMAN] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_ELITE_FOUR_SIDNEY] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_ELITE_FOUR_PHOEBE] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_ELITE_FOUR_GLACIA] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_ELITE_FOUR_DRAKE] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_LEADER_ROXANNE] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_LEADER_BRAWLY] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_LEADER_WATTSON] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_LEADER_FLANNERY] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_LEADER_NORMAN] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_LEADER_WINONA] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_LEADER_TATE_AND_LIZA] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_LEADER_JUAN] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_SCHOOL_KID_M] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_SCHOOL_KID_F] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_SR_AND_JR] = {.size = 8, .y_offset = 2},
+ [TRAINER_PIC_POKEFAN_M] = {.size = 8, .y_offset = 2},
+ [TRAINER_PIC_POKEFAN_F] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_YOUNGSTER] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_CHAMPION_WALLACE] = {.size = 8, .y_offset = 2},
+ [TRAINER_PIC_FISHERMAN] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_CYCLING_TRIATHLETE_M] = {.size = 8, .y_offset = 2},
+ [TRAINER_PIC_CYCLING_TRIATHLETE_F] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_RUNNING_TRIATHLETE_M] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_RUNNING_TRIATHLETE_F] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_SWIMMING_TRIATHLETE_M] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_SWIMMING_TRIATHLETE_F] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_DRAGON_TAMER] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_NINJA_BOY] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_BATTLE_GIRL] = {.size = 8, .y_offset = 2},
+ [TRAINER_PIC_PARASOL_LADY] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_SWIMMER_F] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_TWINS] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_SAILOR] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_MAGMA_ADMIN] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_WALLY] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_BRENDAN] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_MAY] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_BUG_CATCHER] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_POKEMON_RANGER_M] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_POKEMON_RANGER_F] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_MAGMA_LEADER_MAXIE] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_LASS] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_YOUNG_COUPLE] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_OLD_COUPLE] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_SIS_AND_BRO] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_STEVEN] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_SALON_MAIDEN_ANABEL] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_DOME_ACE_TUCKER] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_PALACE_MAVEN_SPENSER] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_ARENA_TYCOON_GRETA] = {.size = 8, .y_offset = 2},
+ [TRAINER_PIC_FACTORY_HEAD_NOLAND] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_PIKE_QUEEN_LUCY] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_PYRAMID_KING_BRANDON] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_RED] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_LEAF] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_RS_BRENDAN] = {.size = 8, .y_offset = 1},
+ [TRAINER_PIC_RS_MAY] = {.size = 8, .y_offset = 1},
};
const struct CompressedSpriteSheet gTrainerFrontPicTable[] =
{
- gTrainerFrontPic_Hiker, 0x800, 0,
- gTrainerFrontPic_AquaGruntM, 0x800, 1,
- gTrainerFrontPic_PokemonBreederF, 0x800, 2,
- gTrainerFrontPic_CoolTrainerM, 0x800, 3,
- gTrainerFrontPic_BirdKeeper, 0x800, 4,
- gTrainerFrontPic_Collector, 0x800, 5,
- gTrainerFrontPic_AquaGruntF, 0x800, 6,
- gTrainerFrontPic_SwimmerM, 0x800, 7,
- gTrainerFrontPic_MagmaGruntM, 0x800, 8,
- gTrainerFrontPic_ExpertM, 0x800, 9,
- gTrainerFrontPic_AquaAdminM, 0x800, 10,
- gTrainerFrontPic_BlackBelt, 0x800, 11,
- gTrainerFrontPic_AquaAdminF, 0x800, 12,
- gTrainerFrontPic_AquaLeaderArchie, 0x800, 13,
- gTrainerFrontPic_HexManiac, 0x800, 14,
- gTrainerFrontPic_AromaLady, 0x800, 15,
- gTrainerFrontPic_RuinManiac, 0x800, 16,
- gTrainerFrontPic_Interviewer, 0x800, 17,
- gTrainerFrontPic_TuberF, 0x800, 18,
- gTrainerFrontPic_TuberM, 0x800, 19,
- gTrainerFrontPic_CoolTrainerF, 0x800, 20,
- gTrainerFrontPic_Lady, 0x800, 21,
- gTrainerFrontPic_Beauty, 0x800, 22,
- gTrainerFrontPic_RichBoy, 0x800, 23,
- gTrainerFrontPic_ExpertF, 0x800, 24,
- gTrainerFrontPic_Pokemaniac, 0x800, 25,
- gTrainerFrontPic_MagmaGruntF, 0x800, 26,
- gTrainerFrontPic_Guitarist, 0x800, 27,
- gTrainerFrontPic_Kindler, 0x800, 28,
- gTrainerFrontPic_Camper, 0x800, 29,
- gTrainerFrontPic_Picnicker, 0x800, 30,
- gTrainerFrontPic_BugManiac, 0x800, 31,
- gTrainerFrontPic_PokemonBreederM, 0x800, 32,
- gTrainerFrontPic_PsychicM, 0x800, 33,
- gTrainerFrontPic_PsychicF, 0x800, 34,
- gTrainerFrontPic_Gentleman, 0x800, 35,
- gTrainerFrontPic_EliteFourSidney, 0x800, 36,
- gTrainerFrontPic_EliteFourPhoebe, 0x800, 37,
- gTrainerFrontPic_EliteFourGlacia, 0x800, 38,
- gTrainerFrontPic_EliteFourDrake, 0x800, 39,
- gTrainerFrontPic_LeaderRoxanne, 0x800, 40,
- gTrainerFrontPic_LeaderBrawly, 0x800, 41,
- gTrainerFrontPic_LeaderWattson, 0x800, 42,
- gTrainerFrontPic_LeaderFlannery, 0x800, 43,
- gTrainerFrontPic_LeaderNorman, 0x800, 44,
- gTrainerFrontPic_LeaderWinona, 0x800, 45,
- gTrainerFrontPic_LeaderTateAndLiza, 0x800, 46,
- gTrainerFrontPic_LeaderJuan, 0x800, 47,
- gTrainerFrontPic_SchoolKidM, 0x800, 48,
- gTrainerFrontPic_SchoolKidF, 0x800, 49,
- gTrainerFrontPic_SrAndJr, 0x1000, 50,
- gTrainerFrontPic_PokefanM, 0x1000, 51,
- gTrainerFrontPic_PokefanF, 0x800, 52,
- gTrainerFrontPic_Youngster, 0x800, 53,
- gTrainerFrontPic_ChampionWallace, 0x1000, 54,
- gTrainerFrontPic_Fisherman, 0x800, 55,
- gTrainerFrontPic_CyclingTriathleteM, 0x1000, 56,
- gTrainerFrontPic_CyclingTriathleteF, 0x800, 57,
- gTrainerFrontPic_RunningTriathleteM, 0x800, 58,
- gTrainerFrontPic_RunningTriathleteF, 0x800, 59,
- gTrainerFrontPic_SwimmingTriathleteM, 0x800, 60,
- gTrainerFrontPic_SwimmingTriathleteF, 0x800, 61,
- gTrainerFrontPic_DragonTamer, 0x800, 62,
- gTrainerFrontPic_NinjaBoy, 0x800, 63,
- gTrainerFrontPic_BattleGirl, 0x1000, 64,
- gTrainerFrontPic_ParasolLady, 0x800, 65,
- gTrainerFrontPic_SwimmerF, 0x800, 66,
- gTrainerFrontPic_Twins, 0x800, 67,
- gTrainerFrontPic_Sailor, 0x800, 68,
- gTrainerFrontPic_MagmaAdmin, 0x800, 69,
- gTrainerFrontPic_Wally, 0x800, 70,
- gTrainerFrontPic_Brendan, 0x800, 71,
- gTrainerFrontPic_May, 0x800, 72,
- gTrainerFrontPic_BugCatcher, 0x800, 73,
- gTrainerFrontPic_PokemonRangerM, 0x800, 74,
- gTrainerFrontPic_PokemonRangerF, 0x800, 75,
- gTrainerFrontPic_MagmaLeaderMaxie, 0x800, 76,
- gTrainerFrontPic_Lass, 0x800, 77,
- gTrainerFrontPic_YoungCouple, 0x800, 78,
- gTrainerFrontPic_OldCouple, 0x800, 79,
- gTrainerFrontPic_SisAndBro, 0x800, 80,
- gTrainerFrontPic_Steven, 0x800, 81,
- gTrainerFrontPic_SalonMaidenAnabel, 0x800, 82,
- gTrainerFrontPic_DomeAceTucker, 0x800, 83,
- gTrainerFrontPic_PalaceMavenSpenser, 0x800, 84,
- gTrainerFrontPic_ArenaTycoonGreta, 0x1000, 85,
- gTrainerFrontPic_FactoryHeadNoland, 0x800, 86,
- gTrainerFrontPic_PikeQueenLucy, 0x800, 87,
- gTrainerFrontPic_PyramidKingBrandon, 0x800, 88,
- gTrainerFrontPic_Red, 0x800, 89,
- gTrainerFrontPic_Leaf, 0x800, 90,
- gTrainerFrontPic_RubySapphireBrendan, 0x800, 91,
- gTrainerFrontPic_RubySapphireMay, 0x800, 92,
+ TRAINER_SPRITE(HIKER, gTrainerFrontPic_Hiker, 0x800),
+ TRAINER_SPRITE(AQUA_GRUNT_M, gTrainerFrontPic_AquaGruntM, 0x800),
+ TRAINER_SPRITE(POKEMON_BREEDER_F, gTrainerFrontPic_PokemonBreederF, 0x800),
+ TRAINER_SPRITE(COOLTRAINER_M, gTrainerFrontPic_CoolTrainerM, 0x800),
+ TRAINER_SPRITE(BIRD_KEEPER, gTrainerFrontPic_BirdKeeper, 0x800),
+ TRAINER_SPRITE(COLLECTOR, gTrainerFrontPic_Collector, 0x800),
+ TRAINER_SPRITE(AQUA_GRUNT_F, gTrainerFrontPic_AquaGruntF, 0x800),
+ TRAINER_SPRITE(SWIMMER_M, gTrainerFrontPic_SwimmerM, 0x800),
+ TRAINER_SPRITE(MAGMA_GRUNT_M, gTrainerFrontPic_MagmaGruntM, 0x800),
+ TRAINER_SPRITE(EXPERT_M, gTrainerFrontPic_ExpertM, 0x800),
+ TRAINER_SPRITE(AQUA_ADMIN_M, gTrainerFrontPic_AquaAdminM, 0x800),
+ TRAINER_SPRITE(BLACK_BELT, gTrainerFrontPic_BlackBelt, 0x800),
+ TRAINER_SPRITE(AQUA_ADMIN_F, gTrainerFrontPic_AquaAdminF, 0x800),
+ TRAINER_SPRITE(AQUA_LEADER_ARCHIE, gTrainerFrontPic_AquaLeaderArchie, 0x800),
+ TRAINER_SPRITE(HEX_MANIAC, gTrainerFrontPic_HexManiac, 0x800),
+ TRAINER_SPRITE(AROMA_LADY, gTrainerFrontPic_AromaLady, 0x800),
+ TRAINER_SPRITE(RUIN_MANIAC, gTrainerFrontPic_RuinManiac, 0x800),
+ TRAINER_SPRITE(INTERVIEWER, gTrainerFrontPic_Interviewer, 0x800),
+ TRAINER_SPRITE(TUBER_F, gTrainerFrontPic_TuberF, 0x800),
+ TRAINER_SPRITE(TUBER_M, gTrainerFrontPic_TuberM, 0x800),
+ TRAINER_SPRITE(COOLTRAINER_F, gTrainerFrontPic_CoolTrainerF, 0x800),
+ TRAINER_SPRITE(LADY, gTrainerFrontPic_Lady, 0x800),
+ TRAINER_SPRITE(BEAUTY, gTrainerFrontPic_Beauty, 0x800),
+ TRAINER_SPRITE(RICH_BOY, gTrainerFrontPic_RichBoy, 0x800),
+ TRAINER_SPRITE(EXPERT_F, gTrainerFrontPic_ExpertF, 0x800),
+ TRAINER_SPRITE(POKEMANIAC, gTrainerFrontPic_Pokemaniac, 0x800),
+ TRAINER_SPRITE(MAGMA_GRUNT_F, gTrainerFrontPic_MagmaGruntF, 0x800),
+ TRAINER_SPRITE(GUITARIST, gTrainerFrontPic_Guitarist, 0x800),
+ TRAINER_SPRITE(KINDLER, gTrainerFrontPic_Kindler, 0x800),
+ TRAINER_SPRITE(CAMPER, gTrainerFrontPic_Camper, 0x800),
+ TRAINER_SPRITE(PICNICKER, gTrainerFrontPic_Picnicker, 0x800),
+ TRAINER_SPRITE(BUG_MANIAC, gTrainerFrontPic_BugManiac, 0x800),
+ TRAINER_SPRITE(POKEMON_BREEDER_M, gTrainerFrontPic_PokemonBreederM, 0x800),
+ TRAINER_SPRITE(PSYCHIC_M, gTrainerFrontPic_PsychicM, 0x800),
+ TRAINER_SPRITE(PSYCHIC_F, gTrainerFrontPic_PsychicF, 0x800),
+ TRAINER_SPRITE(GENTLEMAN, gTrainerFrontPic_Gentleman, 0x800),
+ TRAINER_SPRITE(ELITE_FOUR_SIDNEY, gTrainerFrontPic_EliteFourSidney, 0x800),
+ TRAINER_SPRITE(ELITE_FOUR_PHOEBE, gTrainerFrontPic_EliteFourPhoebe, 0x800),
+ TRAINER_SPRITE(ELITE_FOUR_GLACIA, gTrainerFrontPic_EliteFourGlacia, 0x800),
+ TRAINER_SPRITE(ELITE_FOUR_DRAKE, gTrainerFrontPic_EliteFourDrake, 0x800),
+ TRAINER_SPRITE(LEADER_ROXANNE, gTrainerFrontPic_LeaderRoxanne, 0x800),
+ TRAINER_SPRITE(LEADER_BRAWLY, gTrainerFrontPic_LeaderBrawly, 0x800),
+ TRAINER_SPRITE(LEADER_WATTSON, gTrainerFrontPic_LeaderWattson, 0x800),
+ TRAINER_SPRITE(LEADER_FLANNERY, gTrainerFrontPic_LeaderFlannery, 0x800),
+ TRAINER_SPRITE(LEADER_NORMAN, gTrainerFrontPic_LeaderNorman, 0x800),
+ TRAINER_SPRITE(LEADER_WINONA, gTrainerFrontPic_LeaderWinona, 0x800),
+ TRAINER_SPRITE(LEADER_TATE_AND_LIZA, gTrainerFrontPic_LeaderTateAndLiza, 0x800),
+ TRAINER_SPRITE(LEADER_JUAN, gTrainerFrontPic_LeaderJuan, 0x800),
+ TRAINER_SPRITE(SCHOOL_KID_M, gTrainerFrontPic_SchoolKidM, 0x800),
+ TRAINER_SPRITE(SCHOOL_KID_F, gTrainerFrontPic_SchoolKidF, 0x800),
+ TRAINER_SPRITE(SR_AND_JR, gTrainerFrontPic_SrAndJr, 0x1000),
+ TRAINER_SPRITE(POKEFAN_M, gTrainerFrontPic_PokefanM, 0x1000),
+ TRAINER_SPRITE(POKEFAN_F, gTrainerFrontPic_PokefanF, 0x800),
+ TRAINER_SPRITE(YOUNGSTER, gTrainerFrontPic_Youngster, 0x800),
+ TRAINER_SPRITE(CHAMPION_WALLACE, gTrainerFrontPic_ChampionWallace, 0x1000),
+ TRAINER_SPRITE(FISHERMAN, gTrainerFrontPic_Fisherman, 0x800),
+ TRAINER_SPRITE(CYCLING_TRIATHLETE_M, gTrainerFrontPic_CyclingTriathleteM, 0x1000),
+ TRAINER_SPRITE(CYCLING_TRIATHLETE_F, gTrainerFrontPic_CyclingTriathleteF, 0x800),
+ TRAINER_SPRITE(RUNNING_TRIATHLETE_M, gTrainerFrontPic_RunningTriathleteM, 0x800),
+ TRAINER_SPRITE(RUNNING_TRIATHLETE_F, gTrainerFrontPic_RunningTriathleteF, 0x800),
+ TRAINER_SPRITE(SWIMMING_TRIATHLETE_M, gTrainerFrontPic_SwimmingTriathleteM, 0x800),
+ TRAINER_SPRITE(SWIMMING_TRIATHLETE_F, gTrainerFrontPic_SwimmingTriathleteF, 0x800),
+ TRAINER_SPRITE(DRAGON_TAMER, gTrainerFrontPic_DragonTamer, 0x800),
+ TRAINER_SPRITE(NINJA_BOY, gTrainerFrontPic_NinjaBoy, 0x800),
+ TRAINER_SPRITE(BATTLE_GIRL, gTrainerFrontPic_BattleGirl, 0x1000),
+ TRAINER_SPRITE(PARASOL_LADY, gTrainerFrontPic_ParasolLady, 0x800),
+ TRAINER_SPRITE(SWIMMER_F, gTrainerFrontPic_SwimmerF, 0x800),
+ TRAINER_SPRITE(TWINS, gTrainerFrontPic_Twins, 0x800),
+ TRAINER_SPRITE(SAILOR, gTrainerFrontPic_Sailor, 0x800),
+ TRAINER_SPRITE(MAGMA_ADMIN, gTrainerFrontPic_MagmaAdmin, 0x800),
+ TRAINER_SPRITE(WALLY, gTrainerFrontPic_Wally, 0x800),
+ TRAINER_SPRITE(BRENDAN, gTrainerFrontPic_Brendan, 0x800),
+ TRAINER_SPRITE(MAY, gTrainerFrontPic_May, 0x800),
+ TRAINER_SPRITE(BUG_CATCHER, gTrainerFrontPic_BugCatcher, 0x800),
+ TRAINER_SPRITE(POKEMON_RANGER_M, gTrainerFrontPic_PokemonRangerM, 0x800),
+ TRAINER_SPRITE(POKEMON_RANGER_F, gTrainerFrontPic_PokemonRangerF, 0x800),
+ TRAINER_SPRITE(MAGMA_LEADER_MAXIE, gTrainerFrontPic_MagmaLeaderMaxie, 0x800),
+ TRAINER_SPRITE(LASS, gTrainerFrontPic_Lass, 0x800),
+ TRAINER_SPRITE(YOUNG_COUPLE, gTrainerFrontPic_YoungCouple, 0x800),
+ TRAINER_SPRITE(OLD_COUPLE, gTrainerFrontPic_OldCouple, 0x800),
+ TRAINER_SPRITE(SIS_AND_BRO, gTrainerFrontPic_SisAndBro, 0x800),
+ TRAINER_SPRITE(STEVEN, gTrainerFrontPic_Steven, 0x800),
+ TRAINER_SPRITE(SALON_MAIDEN_ANABEL, gTrainerFrontPic_SalonMaidenAnabel, 0x800),
+ TRAINER_SPRITE(DOME_ACE_TUCKER, gTrainerFrontPic_DomeAceTucker, 0x800),
+ TRAINER_SPRITE(PALACE_MAVEN_SPENSER, gTrainerFrontPic_PalaceMavenSpenser, 0x800),
+ TRAINER_SPRITE(ARENA_TYCOON_GRETA, gTrainerFrontPic_ArenaTycoonGreta, 0x1000),
+ TRAINER_SPRITE(FACTORY_HEAD_NOLAND, gTrainerFrontPic_FactoryHeadNoland, 0x800),
+ TRAINER_SPRITE(PIKE_QUEEN_LUCY, gTrainerFrontPic_PikeQueenLucy, 0x800),
+ TRAINER_SPRITE(PYRAMID_KING_BRANDON, gTrainerFrontPic_PyramidKingBrandon, 0x800),
+ TRAINER_SPRITE(RED, gTrainerFrontPic_Red, 0x800),
+ TRAINER_SPRITE(LEAF, gTrainerFrontPic_Leaf, 0x800),
+ TRAINER_SPRITE(RS_BRENDAN, gTrainerFrontPic_RubySapphireBrendan, 0x800),
+ TRAINER_SPRITE(RS_MAY, gTrainerFrontPic_RubySapphireMay, 0x800),
};
const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[] =
{
- gTrainerPalette_Hiker, 0,
- gTrainerPalette_AquaGruntM, 1,
- gTrainerPalette_PokemonBreederF, 2,
- gTrainerPalette_CoolTrainerM, 3,
- gTrainerPalette_BirdKeeper, 4,
- gTrainerPalette_Collector, 5,
- gTrainerPalette_AquaGruntF, 6,
- gTrainerPalette_SwimmerM, 7,
- gTrainerPalette_MagmaGruntM, 8,
- gTrainerPalette_ExpertM, 9,
- gTrainerPalette_AquaAdminM, 10,
- gTrainerPalette_BlackBelt, 11,
- gTrainerPalette_AquaAdminF, 12,
- gTrainerPalette_AquaLeaderArchie, 13,
- gTrainerPalette_HexManiac, 14,
- gTrainerPalette_AromaLady, 15,
- gTrainerPalette_RuinManiac, 16,
- gTrainerPalette_Interviewer, 17,
- gTrainerPalette_TuberF, 18,
- gTrainerPalette_TuberM, 19,
- gTrainerPalette_CoolTrainerF, 20,
- gTrainerPalette_Lady, 21,
- gTrainerPalette_Beauty, 22,
- gTrainerPalette_RichBoy, 23,
- gTrainerPalette_ExpertF, 24,
- gTrainerPalette_Pokemaniac, 25,
- gTrainerPalette_MagmaGruntF, 26,
- gTrainerPalette_Guitarist, 27,
- gTrainerPalette_Kindler, 28,
- gTrainerPalette_Camper, 29,
- gTrainerPalette_Picnicker, 30,
- gTrainerPalette_BugManiac, 31,
- gTrainerPalette_PokemonBreederM, 32,
- gTrainerPalette_PsychicM, 33,
- gTrainerPalette_PsychicF, 34,
- gTrainerPalette_Gentleman, 35,
- gTrainerPalette_EliteFourSidney, 36,
- gTrainerPalette_EliteFourPhoebe, 37,
- gTrainerPalette_EliteFourGlacia, 38,
- gTrainerPalette_EliteFourDrake, 39,
- gTrainerPalette_LeaderRoxanne, 40,
- gTrainerPalette_LeaderBrawly, 41,
- gTrainerPalette_LeaderWattson, 42,
- gTrainerPalette_LeaderFlannery, 43,
- gTrainerPalette_LeaderNorman, 44,
- gTrainerPalette_LeaderWinona, 45,
- gTrainerPalette_LeaderTateAndLiza, 46,
- gTrainerPalette_LeaderJuan, 47,
- gTrainerPalette_SchoolKidM, 48,
- gTrainerPalette_SchoolKidF, 49,
- gTrainerPalette_SrAndJr, 50,
- gTrainerPalette_PokefanM, 51,
- gTrainerPalette_PokefanF, 52,
- gTrainerPalette_Youngster, 53,
- gTrainerPalette_ChampionWallace, 54,
- gTrainerPalette_Fisherman, 55,
- gTrainerPalette_CyclingTriathleteM, 56,
- gTrainerPalette_CyclingTriathleteF, 57,
- gTrainerPalette_RunningTriathleteM, 58,
- gTrainerPalette_RunningTriathleteF, 59,
- gTrainerPalette_SwimmingTriathleteM, 60,
- gTrainerPalette_SwimmingTriathleteF, 61,
- gTrainerPalette_DragonTamer, 62,
- gTrainerPalette_NinjaBoy, 63,
- gTrainerPalette_BattleGirl, 64,
- gTrainerPalette_ParasolLady, 65,
- gTrainerPalette_SwimmerF, 66,
- gTrainerPalette_Twins, 67,
- gTrainerPalette_Sailor, 68,
- gTrainerPalette_MagmaAdmin, 69,
- gTrainerPalette_Wally, 70,
- gTrainerPalette_Brendan, 71,
- gTrainerPalette_May, 72,
- gTrainerPalette_BugCatcher, 73,
- gTrainerPalette_PokemonRangerM, 74,
- gTrainerPalette_PokemonRangerF, 75,
- gTrainerPalette_MagmaLeaderMaxie, 76,
- gTrainerPalette_Lass, 77,
- gTrainerPalette_YoungCouple, 78,
- gTrainerPalette_OldCouple, 79,
- gTrainerPalette_SisAndBro, 80,
- gTrainerPalette_Steven, 81,
- gTrainerPalette_SalonMaidenAnabel, 82,
- gTrainerPalette_DomeAceTucker, 83,
- gTrainerPalette_PalaceMavenSpenser, 84,
- gTrainerPalette_ArenaTycoonGreta, 85,
- gTrainerPalette_FactoryHeadNoland, 86,
- gTrainerPalette_PikeQueenLucy, 87,
- gTrainerPalette_PyramidKingBrandon, 88,
- gTrainerPalette_Red, 89,
- gTrainerPalette_Leaf, 90,
- gTrainerPalette_RubySapphireBrendan, 91,
- gTrainerPalette_RubySapphireMay, 92,
+ TRAINER_PAL(HIKER, gTrainerPalette_Hiker),
+ TRAINER_PAL(AQUA_GRUNT_M, gTrainerPalette_AquaGruntM),
+ TRAINER_PAL(POKEMON_BREEDER_F, gTrainerPalette_PokemonBreederF),
+ TRAINER_PAL(COOLTRAINER_M, gTrainerPalette_CoolTrainerM),
+ TRAINER_PAL(BIRD_KEEPER, gTrainerPalette_BirdKeeper),
+ TRAINER_PAL(COLLECTOR, gTrainerPalette_Collector),
+ TRAINER_PAL(AQUA_GRUNT_F, gTrainerPalette_AquaGruntF),
+ TRAINER_PAL(SWIMMER_M, gTrainerPalette_SwimmerM),
+ TRAINER_PAL(MAGMA_GRUNT_M, gTrainerPalette_MagmaGruntM),
+ TRAINER_PAL(EXPERT_M, gTrainerPalette_ExpertM),
+ TRAINER_PAL(AQUA_ADMIN_M, gTrainerPalette_AquaAdminM),
+ TRAINER_PAL(BLACK_BELT, gTrainerPalette_BlackBelt),
+ TRAINER_PAL(AQUA_ADMIN_F, gTrainerPalette_AquaAdminF),
+ TRAINER_PAL(AQUA_LEADER_ARCHIE, gTrainerPalette_AquaLeaderArchie),
+ TRAINER_PAL(HEX_MANIAC, gTrainerPalette_HexManiac),
+ TRAINER_PAL(AROMA_LADY, gTrainerPalette_AromaLady),
+ TRAINER_PAL(RUIN_MANIAC, gTrainerPalette_RuinManiac),
+ TRAINER_PAL(INTERVIEWER, gTrainerPalette_Interviewer),
+ TRAINER_PAL(TUBER_F, gTrainerPalette_TuberF),
+ TRAINER_PAL(TUBER_M, gTrainerPalette_TuberM),
+ TRAINER_PAL(COOLTRAINER_F, gTrainerPalette_CoolTrainerF),
+ TRAINER_PAL(LADY, gTrainerPalette_Lady),
+ TRAINER_PAL(BEAUTY, gTrainerPalette_Beauty),
+ TRAINER_PAL(RICH_BOY, gTrainerPalette_RichBoy),
+ TRAINER_PAL(EXPERT_F, gTrainerPalette_ExpertF),
+ TRAINER_PAL(POKEMANIAC, gTrainerPalette_Pokemaniac),
+ TRAINER_PAL(MAGMA_GRUNT_F, gTrainerPalette_MagmaGruntF),
+ TRAINER_PAL(GUITARIST, gTrainerPalette_Guitarist),
+ TRAINER_PAL(KINDLER, gTrainerPalette_Kindler),
+ TRAINER_PAL(CAMPER, gTrainerPalette_Camper),
+ TRAINER_PAL(PICNICKER, gTrainerPalette_Picnicker),
+ TRAINER_PAL(BUG_MANIAC, gTrainerPalette_BugManiac),
+ TRAINER_PAL(POKEMON_BREEDER_M, gTrainerPalette_PokemonBreederM),
+ TRAINER_PAL(PSYCHIC_M, gTrainerPalette_PsychicM),
+ TRAINER_PAL(PSYCHIC_F, gTrainerPalette_PsychicF),
+ TRAINER_PAL(GENTLEMAN, gTrainerPalette_Gentleman),
+ TRAINER_PAL(ELITE_FOUR_SIDNEY, gTrainerPalette_EliteFourSidney),
+ TRAINER_PAL(ELITE_FOUR_PHOEBE, gTrainerPalette_EliteFourPhoebe),
+ TRAINER_PAL(ELITE_FOUR_GLACIA, gTrainerPalette_EliteFourGlacia),
+ TRAINER_PAL(ELITE_FOUR_DRAKE, gTrainerPalette_EliteFourDrake),
+ TRAINER_PAL(LEADER_ROXANNE, gTrainerPalette_LeaderRoxanne),
+ TRAINER_PAL(LEADER_BRAWLY, gTrainerPalette_LeaderBrawly),
+ TRAINER_PAL(LEADER_WATTSON, gTrainerPalette_LeaderWattson),
+ TRAINER_PAL(LEADER_FLANNERY, gTrainerPalette_LeaderFlannery),
+ TRAINER_PAL(LEADER_NORMAN, gTrainerPalette_LeaderNorman),
+ TRAINER_PAL(LEADER_WINONA, gTrainerPalette_LeaderWinona),
+ TRAINER_PAL(LEADER_TATE_AND_LIZA, gTrainerPalette_LeaderTateAndLiza),
+ TRAINER_PAL(LEADER_JUAN, gTrainerPalette_LeaderJuan),
+ TRAINER_PAL(SCHOOL_KID_M, gTrainerPalette_SchoolKidM),
+ TRAINER_PAL(SCHOOL_KID_F, gTrainerPalette_SchoolKidF),
+ TRAINER_PAL(SR_AND_JR, gTrainerPalette_SrAndJr),
+ TRAINER_PAL(POKEFAN_M, gTrainerPalette_PokefanM),
+ TRAINER_PAL(POKEFAN_F, gTrainerPalette_PokefanF),
+ TRAINER_PAL(YOUNGSTER, gTrainerPalette_Youngster),
+ TRAINER_PAL(CHAMPION_WALLACE, gTrainerPalette_ChampionWallace),
+ TRAINER_PAL(FISHERMAN, gTrainerPalette_Fisherman),
+ TRAINER_PAL(CYCLING_TRIATHLETE_M, gTrainerPalette_CyclingTriathleteM),
+ TRAINER_PAL(CYCLING_TRIATHLETE_F, gTrainerPalette_CyclingTriathleteF),
+ TRAINER_PAL(RUNNING_TRIATHLETE_M, gTrainerPalette_RunningTriathleteM),
+ TRAINER_PAL(RUNNING_TRIATHLETE_F, gTrainerPalette_RunningTriathleteF),
+ TRAINER_PAL(SWIMMING_TRIATHLETE_M, gTrainerPalette_SwimmingTriathleteM),
+ TRAINER_PAL(SWIMMING_TRIATHLETE_F, gTrainerPalette_SwimmingTriathleteF),
+ TRAINER_PAL(DRAGON_TAMER, gTrainerPalette_DragonTamer),
+ TRAINER_PAL(NINJA_BOY, gTrainerPalette_NinjaBoy),
+ TRAINER_PAL(BATTLE_GIRL, gTrainerPalette_BattleGirl),
+ TRAINER_PAL(PARASOL_LADY, gTrainerPalette_ParasolLady),
+ TRAINER_PAL(SWIMMER_F, gTrainerPalette_SwimmerF),
+ TRAINER_PAL(TWINS, gTrainerPalette_Twins),
+ TRAINER_PAL(SAILOR, gTrainerPalette_Sailor),
+ TRAINER_PAL(MAGMA_ADMIN, gTrainerPalette_MagmaAdmin),
+ TRAINER_PAL(WALLY, gTrainerPalette_Wally),
+ TRAINER_PAL(BRENDAN, gTrainerPalette_Brendan),
+ TRAINER_PAL(MAY, gTrainerPalette_May),
+ TRAINER_PAL(BUG_CATCHER, gTrainerPalette_BugCatcher),
+ TRAINER_PAL(POKEMON_RANGER_M, gTrainerPalette_PokemonRangerM),
+ TRAINER_PAL(POKEMON_RANGER_F, gTrainerPalette_PokemonRangerF),
+ TRAINER_PAL(MAGMA_LEADER_MAXIE, gTrainerPalette_MagmaLeaderMaxie),
+ TRAINER_PAL(LASS, gTrainerPalette_Lass),
+ TRAINER_PAL(YOUNG_COUPLE, gTrainerPalette_YoungCouple),
+ TRAINER_PAL(OLD_COUPLE, gTrainerPalette_OldCouple),
+ TRAINER_PAL(SIS_AND_BRO, gTrainerPalette_SisAndBro),
+ TRAINER_PAL(STEVEN, gTrainerPalette_Steven),
+ TRAINER_PAL(SALON_MAIDEN_ANABEL, gTrainerPalette_SalonMaidenAnabel),
+ TRAINER_PAL(DOME_ACE_TUCKER, gTrainerPalette_DomeAceTucker),
+ TRAINER_PAL(PALACE_MAVEN_SPENSER, gTrainerPalette_PalaceMavenSpenser),
+ TRAINER_PAL(ARENA_TYCOON_GRETA, gTrainerPalette_ArenaTycoonGreta),
+ TRAINER_PAL(FACTORY_HEAD_NOLAND, gTrainerPalette_FactoryHeadNoland),
+ TRAINER_PAL(PIKE_QUEEN_LUCY, gTrainerPalette_PikeQueenLucy),
+ TRAINER_PAL(PYRAMID_KING_BRANDON, gTrainerPalette_PyramidKingBrandon),
+ TRAINER_PAL(RED, gTrainerPalette_Red),
+ TRAINER_PAL(LEAF, gTrainerPalette_Leaf),
+ TRAINER_PAL(RS_BRENDAN, gTrainerPalette_RubySapphireBrendan),
+ TRAINER_PAL(RS_MAY, gTrainerPalette_RubySapphireMay),
};
diff --git a/src/data/trainer_parties.h b/src/data/trainer_parties.h
index b4438e5b3..252eed760 100644
--- a/src/data/trainer_parties.h
+++ b/src/data/trainer_parties.h
@@ -1,4 +1,4 @@
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sawyer1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Sawyer1[] = {
{
.iv = 0,
.lvl = 21,
@@ -6,7 +6,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sawyer1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt1[] = {
{
.iv = 0,
.lvl = 32,
@@ -14,7 +14,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt2[] = {
{
.iv = 0,
.lvl = 31,
@@ -27,7 +27,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt3[] = {
{
.iv = 0,
.lvl = 32,
@@ -35,7 +35,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt4[] = {
{
.iv = 0,
.lvl = 32,
@@ -43,7 +43,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt5[] = {
{
.iv = 0,
.lvl = 36,
@@ -51,7 +51,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt6[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt6[] = {
{
.iv = 0,
.lvl = 36,
@@ -59,7 +59,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt6[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt7[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt7[] = {
{
.iv = 0,
.lvl = 36,
@@ -67,7 +67,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt7[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Gabrielle1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Gabrielle1[] = {
{
.iv = 0,
.lvl = 26,
@@ -100,7 +100,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Gabrielle1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt8[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt8[] = {
{
.iv = 0,
.lvl = 9,
@@ -108,7 +108,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt8[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Marcel[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Marcel[] = {
{
.iv = 100,
.lvl = 29,
@@ -121,7 +121,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Marcel[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Alberto[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Alberto[] = {
{
.iv = 0,
.lvl = 30,
@@ -134,7 +134,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Alberto[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ed[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Ed[] = {
{
.iv = 0,
.lvl = 30,
@@ -147,7 +147,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ed[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt9[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt9[] = {
{
.iv = 0,
.lvl = 36,
@@ -155,7 +155,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt9[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Declan[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Declan[] = {
{
.iv = 0,
.lvl = 34,
@@ -163,7 +163,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Declan[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt10[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt10[] = {
{
.iv = 0,
.lvl = 11,
@@ -171,7 +171,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt10[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt11[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt11[] = {
{
.iv = 0,
.lvl = 27,
@@ -184,7 +184,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt11[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt12[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt12[] = {
{
.iv = 0,
.lvl = 27,
@@ -197,7 +197,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt12[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt13[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt13[] = {
{
.iv = 0,
.lvl = 26,
@@ -215,7 +215,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt13[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt14[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt14[] = {
{
.iv = 0,
.lvl = 15,
@@ -223,7 +223,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt14[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt15[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt15[] = {
{
.iv = 0,
.lvl = 14,
@@ -236,7 +236,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt15[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt16[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt16[] = {
{
.iv = 0,
.lvl = 32,
@@ -244,7 +244,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt16[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt17[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt17[] = {
{
.iv = 0,
.lvl = 32,
@@ -252,7 +252,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt17[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt18[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt18[] = {
{
.iv = 0,
.lvl = 32,
@@ -260,7 +260,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt18[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt19[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt19[] = {
{
.iv = 0,
.lvl = 30,
@@ -273,7 +273,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt19[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt20[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt20[] = {
{
.iv = 0,
.lvl = 28,
@@ -281,7 +281,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt20[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt21[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt21[] = {
{
.iv = 0,
.lvl = 32,
@@ -289,7 +289,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt21[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt22[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt22[] = {
{
.iv = 0,
.lvl = 32,
@@ -297,7 +297,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt22[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Fredrick[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Fredrick[] = {
{
.iv = 100,
.lvl = 30,
@@ -310,7 +310,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Fredrick[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Matt[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Matt[] = {
{
.iv = 50,
.lvl = 34,
@@ -323,7 +323,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Matt[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Zander[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Zander[] = {
{
.iv = 0,
.lvl = 31,
@@ -331,7 +331,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Zander[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shelly1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Shelly1[] = {
{
.iv = 50,
.lvl = 28,
@@ -344,7 +344,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shelly1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shelly2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Shelly2[] = {
{
.iv = 100,
.lvl = 37,
@@ -357,7 +357,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shelly2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Archie[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Archie[] = {
{
.iv = 150,
.lvl = 41,
@@ -375,7 +375,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Archie[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Leah[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Leah[] = {
{
.iv = 0,
.lvl = 31,
@@ -383,7 +383,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Leah[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Daisy[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Daisy[] = {
{
.iv = 0,
.lvl = 14,
@@ -396,7 +396,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Daisy[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Rose1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Rose1[] = {
{
.iv = 0,
.lvl = 14,
@@ -414,7 +414,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Rose1[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Felix[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Felix[] = {
{
.iv = 0,
.lvl = 43,
@@ -429,7 +429,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Felix[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Violet[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Violet[] = {
{
.iv = 0,
.lvl = 26,
@@ -442,7 +442,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Violet[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Rose2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Rose2[] = {
{
.iv = 10,
.lvl = 26,
@@ -455,7 +455,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Rose2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Rose3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Rose3[] = {
{
.iv = 20,
.lvl = 28,
@@ -473,7 +473,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Rose3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Rose4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Rose4[] = {
{
.iv = 30,
.lvl = 31,
@@ -491,7 +491,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Rose4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Rose5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Rose5[] = {
{
.iv = 40,
.lvl = 34,
@@ -509,7 +509,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Rose5[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Dusty1[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Dusty1[] = {
{
.iv = 50,
.lvl = 23,
@@ -518,7 +518,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Dusty1[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Chip[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Chip[] = {
{
.iv = 50,
.lvl = 27,
@@ -539,7 +539,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Chip[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Foster[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Foster[] = {
{
.iv = 100,
.lvl = 25,
@@ -554,7 +554,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Foster[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Dusty2[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Dusty2[] = {
{
.iv = 60,
.lvl = 27,
@@ -563,7 +563,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Dusty2[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Dusty3[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Dusty3[] = {
{
.iv = 70,
.lvl = 30,
@@ -572,7 +572,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Dusty3[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Dusty4[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Dusty4[] = {
{
.iv = 80,
.lvl = 33,
@@ -581,7 +581,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Dusty4[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Dusty5[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Dusty5[] = {
{
.iv = 90,
.lvl = 36,
@@ -590,7 +590,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Dusty5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_GabbyAndTy1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_GabbyAndTy1[] = {
{
.iv = 50,
.lvl = 17,
@@ -603,7 +603,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_GabbyAndTy1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_GabbyAndTy2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_GabbyAndTy2[] = {
{
.iv = 100,
.lvl = 27,
@@ -616,7 +616,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_GabbyAndTy2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_GabbyAndTy3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_GabbyAndTy3[] = {
{
.iv = 150,
.lvl = 30,
@@ -629,7 +629,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_GabbyAndTy3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_GabbyAndTy4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_GabbyAndTy4[] = {
{
.iv = 200,
.lvl = 33,
@@ -642,7 +642,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_GabbyAndTy4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_GabbyAndTy5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_GabbyAndTy5[] = {
{
.iv = 250,
.lvl = 36,
@@ -655,7 +655,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_GabbyAndTy5[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_GabbyAndTy6[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_GabbyAndTy6[] = {
{
.iv = 250,
.lvl = 39,
@@ -670,7 +670,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_GabbyAndTy6[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lola1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Lola1[] = {
{
.iv = 10,
.lvl = 12,
@@ -683,7 +683,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lola1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Austina[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Austina[] = {
{
.iv = 0,
.lvl = 26,
@@ -691,7 +691,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Austina[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Gwen[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Gwen[] = {
{
.iv = 0,
.lvl = 26,
@@ -699,7 +699,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Gwen[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lola2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Lola2[] = {
{
.iv = 10,
.lvl = 26,
@@ -712,7 +712,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lola2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lola3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Lola3[] = {
{
.iv = 20,
.lvl = 29,
@@ -725,7 +725,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lola3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lola4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Lola4[] = {
{
.iv = 30,
.lvl = 32,
@@ -738,7 +738,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lola4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lola5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Lola5[] = {
{
.iv = 40,
.lvl = 35,
@@ -751,7 +751,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lola5[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Ricky1[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Ricky1[] = {
{
.iv = 10,
.lvl = 13,
@@ -760,7 +760,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Ricky1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Simon[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Simon[] = {
{
.iv = 0,
.lvl = 12,
@@ -773,7 +773,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Simon[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Charlie[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Charlie[] = {
{
.iv = 0,
.lvl = 26,
@@ -781,7 +781,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Charlie[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Ricky2[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Ricky2[] = {
{
.iv = 10,
.lvl = 27,
@@ -790,7 +790,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Ricky2[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Ricky3[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Ricky3[] = {
{
.iv = 20,
.lvl = 30,
@@ -799,7 +799,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Ricky3[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Ricky4[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Ricky4[] = {
{
.iv = 30,
.lvl = 33,
@@ -808,7 +808,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Ricky4[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Ricky5[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Ricky5[] = {
{
.iv = 40,
.lvl = 36,
@@ -817,7 +817,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Ricky5[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Randall[] = {
+static const struct TrainerMonItemCustomMoves sParty_Randall[] = {
{
.iv = 255,
.lvl = 26,
@@ -827,7 +827,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Randall[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Parker[] = {
+static const struct TrainerMonItemCustomMoves sParty_Parker[] = {
{
.iv = 255,
.lvl = 26,
@@ -837,7 +837,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Parker[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_George[] = {
+static const struct TrainerMonItemCustomMoves sParty_George[] = {
{
.iv = 255,
.lvl = 26,
@@ -847,7 +847,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_George[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Berke[] = {
+static const struct TrainerMonItemCustomMoves sParty_Berke[] = {
{
.iv = 255,
.lvl = 26,
@@ -857,7 +857,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Berke[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Braxton[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Braxton[] = {
{
.iv = 100,
.lvl = 28,
@@ -890,7 +890,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Braxton[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Vincent[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Vincent[] = {
{
.iv = 100,
.lvl = 44,
@@ -908,7 +908,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Vincent[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Leroy[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Leroy[] = {
{
.iv = 100,
.lvl = 46,
@@ -921,7 +921,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Leroy[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Wilton1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Wilton1[] = {
{
.iv = 100,
.lvl = 17,
@@ -939,7 +939,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Wilton1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Edgar[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Edgar[] = {
{
.iv = 100,
.lvl = 43,
@@ -952,7 +952,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Edgar[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Albert[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Albert[] = {
{
.iv = 100,
.lvl = 43,
@@ -965,7 +965,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Albert[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Samuel[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Samuel[] = {
{
.iv = 100,
.lvl = 42,
@@ -983,7 +983,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Samuel[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Vito[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Vito[] = {
{
.iv = 100,
.lvl = 42,
@@ -1006,7 +1006,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Vito[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Owen[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Owen[] = {
{
.iv = 100,
.lvl = 42,
@@ -1024,7 +1024,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Owen[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Wilton2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Wilton2[] = {
{
.iv = 110,
.lvl = 26,
@@ -1042,7 +1042,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Wilton2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Wilton3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Wilton3[] = {
{
.iv = 120,
.lvl = 29,
@@ -1060,7 +1060,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Wilton3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Wilton4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Wilton4[] = {
{
.iv = 130,
.lvl = 32,
@@ -1078,7 +1078,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Wilton4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Wilton5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Wilton5[] = {
{
.iv = 140,
.lvl = 35,
@@ -1096,7 +1096,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Wilton5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Warren[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Warren[] = {
{
.iv = 100,
.lvl = 33,
@@ -1109,7 +1109,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Warren[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Mary[] = {
+static const struct TrainerMonItemCustomMoves sParty_Mary[] = {
{
.iv = 255,
.lvl = 26,
@@ -1119,7 +1119,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Mary[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Alexia[] = {
+static const struct TrainerMonItemCustomMoves sParty_Alexia[] = {
{
.iv = 255,
.lvl = 26,
@@ -1129,7 +1129,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Alexia[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Jody[] = {
+static const struct TrainerMonItemCustomMoves sParty_Jody[] = {
{
.iv = 255,
.lvl = 26,
@@ -1139,7 +1139,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Jody[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Wendy[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Wendy[] = {
{
.iv = 100,
.lvl = 29,
@@ -1160,7 +1160,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Wendy[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Keira[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Keira[] = {
{
.iv = 100,
.lvl = 45,
@@ -1173,7 +1173,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Keira[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brooke1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brooke1[] = {
{
.iv = 100,
.lvl = 17,
@@ -1191,7 +1191,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brooke1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jennifer[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jennifer[] = {
{
.iv = 200,
.lvl = 30,
@@ -1199,7 +1199,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jennifer[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Hope[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Hope[] = {
{
.iv = 100,
.lvl = 45,
@@ -1207,7 +1207,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Hope[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shannon[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Shannon[] = {
{
.iv = 100,
.lvl = 45,
@@ -1215,7 +1215,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shannon[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Michelle[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Michelle[] = {
{
.iv = 100,
.lvl = 42,
@@ -1233,7 +1233,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Michelle[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Caroline[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Caroline[] = {
{
.iv = 100,
.lvl = 43,
@@ -1246,7 +1246,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Caroline[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Julie[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Julie[] = {
{
.iv = 100,
.lvl = 42,
@@ -1264,7 +1264,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Julie[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brooke2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brooke2[] = {
{
.iv = 110,
.lvl = 26,
@@ -1282,7 +1282,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brooke2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brooke3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brooke3[] = {
{
.iv = 120,
.lvl = 29,
@@ -1300,7 +1300,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brooke3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brooke4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brooke4[] = {
{
.iv = 130,
.lvl = 32,
@@ -1318,7 +1318,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brooke4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brooke5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brooke5[] = {
{
.iv = 140,
.lvl = 34,
@@ -1336,7 +1336,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brooke5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Patricia[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Patricia[] = {
{
.iv = 0,
.lvl = 41,
@@ -1349,7 +1349,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Patricia[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kindra[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Kindra[] = {
{
.iv = 0,
.lvl = 30,
@@ -1362,7 +1362,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kindra[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tammy[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Tammy[] = {
{
.iv = 0,
.lvl = 29,
@@ -1375,7 +1375,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tammy[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Valerie1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Valerie1[] = {
{
.iv = 0,
.lvl = 32,
@@ -1383,7 +1383,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Valerie1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tasha[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Tasha[] = {
{
.iv = 50,
.lvl = 32,
@@ -1391,7 +1391,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tasha[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Valerie2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Valerie2[] = {
{
.iv = 10,
.lvl = 31,
@@ -1404,7 +1404,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Valerie2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Valerie3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Valerie3[] = {
{
.iv = 20,
.lvl = 35,
@@ -1417,7 +1417,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Valerie3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Valerie4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Valerie4[] = {
{
.iv = 30,
.lvl = 40,
@@ -1430,7 +1430,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Valerie4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Valerie5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Valerie5[] = {
{
.iv = 40,
.lvl = 42,
@@ -1448,7 +1448,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Valerie5[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Cindy1[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Cindy1[] = {
{
.iv = 0,
.lvl = 7,
@@ -1457,7 +1457,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Cindy1[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Daphne[] = {
+static const struct TrainerMonItemCustomMoves sParty_Daphne[] = {
{
.iv = 100,
.lvl = 39,
@@ -1474,7 +1474,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Daphne[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt23[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt23[] = {
{
.iv = 0,
.lvl = 26,
@@ -1492,7 +1492,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt23[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Cindy2[] = {
+static const struct TrainerMonItemCustomMoves sParty_Cindy2[] = {
{
.iv = 0,
.lvl = 11,
@@ -1502,7 +1502,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Cindy2[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Brianna[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Brianna[] = {
{
.iv = 150,
.lvl = 40,
@@ -1511,7 +1511,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Brianna[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Naomi[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Naomi[] = {
{
.iv = 100,
.lvl = 45,
@@ -1520,7 +1520,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Naomi[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Cindy3[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Cindy3[] = {
{
.iv = 10,
.lvl = 27,
@@ -1529,7 +1529,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Cindy3[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Cindy4[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Cindy4[] = {
{
.iv = 20,
.lvl = 30,
@@ -1538,7 +1538,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Cindy4[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Cindy5[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Cindy5[] = {
{
.iv = 30,
.lvl = 33,
@@ -1547,7 +1547,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Cindy5[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Cindy6[] = {
+static const struct TrainerMonItemCustomMoves sParty_Cindy6[] = {
{
.iv = 40,
.lvl = 36,
@@ -1557,7 +1557,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Cindy6[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Melissa[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Melissa[] = {
{
.iv = 0,
.lvl = 21,
@@ -1565,7 +1565,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Melissa[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sheila[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Sheila[] = {
{
.iv = 0,
.lvl = 21,
@@ -1573,7 +1573,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sheila[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shirley[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Shirley[] = {
{
.iv = 0,
.lvl = 21,
@@ -1581,7 +1581,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shirley[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Jessica1[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Jessica1[] = {
{
.iv = 0,
.lvl = 29,
@@ -1596,7 +1596,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Jessica1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Connie[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Connie[] = {
{
.iv = 100,
.lvl = 40,
@@ -1604,7 +1604,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Connie[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Bridget[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Bridget[] = {
{
.iv = 150,
.lvl = 40,
@@ -1612,7 +1612,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Bridget[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Olivia[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Olivia[] = {
{
.iv = 100,
.lvl = 35,
@@ -1633,7 +1633,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Olivia[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tiffany[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Tiffany[] = {
{
.iv = 100,
.lvl = 39,
@@ -1646,7 +1646,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tiffany[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Jessica2[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Jessica2[] = {
{
.iv = 10,
.lvl = 35,
@@ -1661,7 +1661,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Jessica2[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Jessica3[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Jessica3[] = {
{
.iv = 20,
.lvl = 38,
@@ -1676,7 +1676,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Jessica3[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Jessica4[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Jessica4[] = {
{
.iv = 30,
.lvl = 41,
@@ -1691,7 +1691,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Jessica4[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Jessica5[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Jessica5[] = {
{
.iv = 40,
.lvl = 44,
@@ -1706,7 +1706,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Jessica5[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Winston1[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Winston1[] = {
{
.iv = 0,
.lvl = 7,
@@ -1715,7 +1715,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Winston1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Mollie[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Mollie[] = {
{
.iv = 0,
.lvl = 33,
@@ -1728,7 +1728,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Mollie[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Garret[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Garret[] = {
{
.iv = 0,
.lvl = 45,
@@ -1737,7 +1737,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Garret[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Winston2[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Winston2[] = {
{
.iv = 0,
.lvl = 27,
@@ -1746,7 +1746,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Winston2[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Winston3[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Winston3[] = {
{
.iv = 0,
.lvl = 30,
@@ -1755,7 +1755,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Winston3[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Winston4[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Winston4[] = {
{
.iv = 0,
.lvl = 33,
@@ -1764,7 +1764,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Winston4[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Winston5[] = {
+static const struct TrainerMonItemCustomMoves sParty_Winston5[] = {
{
.iv = 0,
.lvl = 36,
@@ -1774,7 +1774,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Winston5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Steve1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Steve1[] = {
{
.iv = 0,
.lvl = 19,
@@ -1782,7 +1782,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Steve1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Thalia1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Thalia1[] = {
{
.iv = 0,
.lvl = 25,
@@ -1795,7 +1795,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Thalia1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Mark[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Mark[] = {
{
.iv = 0,
.lvl = 31,
@@ -1803,7 +1803,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Mark[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt24[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt24[] = {
{
.iv = 0,
.lvl = 20,
@@ -1811,7 +1811,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt24[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Steve2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Steve2[] = {
{
.iv = 10,
.lvl = 27,
@@ -1819,7 +1819,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Steve2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Steve3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Steve3[] = {
{
.iv = 20,
.lvl = 29,
@@ -1832,7 +1832,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Steve3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Steve4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Steve4[] = {
{
.iv = 30,
.lvl = 32,
@@ -1845,7 +1845,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Steve4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Steve5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Steve5[] = {
{
.iv = 40,
.lvl = 35,
@@ -1858,7 +1858,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Steve5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Luis[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Luis[] = {
{
.iv = 0,
.lvl = 26,
@@ -1866,7 +1866,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Luis[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dominik[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Dominik[] = {
{
.iv = 0,
.lvl = 26,
@@ -1874,7 +1874,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dominik[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Douglas[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Douglas[] = {
{
.iv = 10,
.lvl = 24,
@@ -1887,7 +1887,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Douglas[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Darrin[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Darrin[] = {
{
.iv = 10,
.lvl = 24,
@@ -1905,7 +1905,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Darrin[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tony1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Tony1[] = {
{
.iv = 0,
.lvl = 26,
@@ -1913,7 +1913,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tony1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jerome[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jerome[] = {
{
.iv = 0,
.lvl = 26,
@@ -1921,7 +1921,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jerome[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Matthew[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Matthew[] = {
{
.iv = 0,
.lvl = 26,
@@ -1929,7 +1929,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Matthew[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_David[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_David[] = {
{
.iv = 0,
.lvl = 25,
@@ -1942,7 +1942,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_David[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Spencer[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Spencer[] = {
{
.iv = 0,
.lvl = 33,
@@ -1955,7 +1955,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Spencer[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Roland[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Roland[] = {
{
.iv = 0,
.lvl = 34,
@@ -1963,7 +1963,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Roland[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nolen[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Nolen[] = {
{
.iv = 0,
.lvl = 34,
@@ -1971,7 +1971,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nolen[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Stan[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Stan[] = {
{
.iv = 0,
.lvl = 34,
@@ -1979,7 +1979,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Stan[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Barry[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Barry[] = {
{
.iv = 0,
.lvl = 34,
@@ -1987,7 +1987,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Barry[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dean[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Dean[] = {
{
.iv = 0,
.lvl = 31,
@@ -2005,7 +2005,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dean[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Rodney[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Rodney[] = {
{
.iv = 0,
.lvl = 34,
@@ -2013,7 +2013,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Rodney[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Richard[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Richard[] = {
{
.iv = 0,
.lvl = 34,
@@ -2021,7 +2021,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Richard[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Herman[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Herman[] = {
{
.iv = 0,
.lvl = 33,
@@ -2034,7 +2034,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Herman[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Santiago[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Santiago[] = {
{
.iv = 0,
.lvl = 33,
@@ -2047,7 +2047,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Santiago[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Gilbert[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Gilbert[] = {
{
.iv = 0,
.lvl = 34,
@@ -2055,7 +2055,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Gilbert[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Franklin[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Franklin[] = {
{
.iv = 0,
.lvl = 34,
@@ -2063,7 +2063,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Franklin[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kevin[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Kevin[] = {
{
.iv = 0,
.lvl = 34,
@@ -2071,7 +2071,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kevin[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jack[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jack[] = {
{
.iv = 0,
.lvl = 34,
@@ -2079,7 +2079,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jack[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dudley[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Dudley[] = {
{
.iv = 0,
.lvl = 33,
@@ -2097,7 +2097,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dudley[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Chad[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Chad[] = {
{
.iv = 0,
.lvl = 33,
@@ -2110,7 +2110,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Chad[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tony2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Tony2[] = {
{
.iv = 10,
.lvl = 30,
@@ -2118,7 +2118,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tony2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tony3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Tony3[] = {
{
.iv = 20,
.lvl = 33,
@@ -2126,7 +2126,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tony3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tony4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Tony4[] = {
{
.iv = 30,
.lvl = 34,
@@ -2139,7 +2139,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tony4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tony5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Tony5[] = {
{
.iv = 40,
.lvl = 37,
@@ -2152,7 +2152,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tony5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Takao[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Takao[] = {
{
.iv = 127,
.lvl = 13,
@@ -2160,7 +2160,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Takao[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Hitoshi[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Hitoshi[] = {
{
.iv = 50,
.lvl = 32,
@@ -2173,7 +2173,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Hitoshi[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kiyo[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Kiyo[] = {
{
.iv = 100,
.lvl = 34,
@@ -2181,7 +2181,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kiyo[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Koichi[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Koichi[] = {
{
.iv = 100,
.lvl = 24,
@@ -2194,7 +2194,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Koichi[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nob1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Nob1[] = {
{
.iv = 100,
.lvl = 19,
@@ -2202,7 +2202,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nob1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nob2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Nob2[] = {
{
.iv = 110,
.lvl = 27,
@@ -2210,7 +2210,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nob2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nob3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Nob3[] = {
{
.iv = 120,
.lvl = 29,
@@ -2223,7 +2223,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nob3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nob4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Nob4[] = {
{
.iv = 130,
.lvl = 31,
@@ -2241,7 +2241,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nob4[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Nob5[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Nob5[] = {
{
.iv = 140,
.lvl = 33,
@@ -2268,7 +2268,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Nob5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Yuji[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Yuji[] = {
{
.iv = 100,
.lvl = 26,
@@ -2281,7 +2281,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Yuji[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Daisuke[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Daisuke[] = {
{
.iv = 100,
.lvl = 19,
@@ -2289,7 +2289,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Daisuke[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Atsushi[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Atsushi[] = {
{
.iv = 100,
.lvl = 32,
@@ -2297,7 +2297,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Atsushi[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Kirk[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Kirk[] = {
{
.iv = 100,
.lvl = 17,
@@ -2312,7 +2312,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Kirk[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt25[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt25[] = {
{
.iv = 0,
.lvl = 31,
@@ -2325,7 +2325,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt25[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt26[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt26[] = {
{
.iv = 0,
.lvl = 32,
@@ -2333,7 +2333,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt26[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shawn[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Shawn[] = {
{
.iv = 100,
.lvl = 17,
@@ -2346,7 +2346,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shawn[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Fernando1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Fernando1[] = {
{
.iv = 0,
.lvl = 30,
@@ -2359,7 +2359,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Fernando1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dalton1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Dalton1[] = {
{
.iv = 0,
.lvl = 15,
@@ -2372,7 +2372,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dalton1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dalton2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Dalton2[] = {
{
.iv = 10,
.lvl = 25,
@@ -2390,7 +2390,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dalton2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dalton3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Dalton3[] = {
{
.iv = 20,
.lvl = 28,
@@ -2408,7 +2408,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dalton3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dalton4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Dalton4[] = {
{
.iv = 30,
.lvl = 31,
@@ -2426,7 +2426,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dalton4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dalton5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Dalton5[] = {
{
.iv = 40,
.lvl = 34,
@@ -2444,7 +2444,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dalton5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cole[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cole[] = {
{
.iv = 100,
.lvl = 23,
@@ -2452,7 +2452,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cole[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jeff[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jeff[] = {
{
.iv = 100,
.lvl = 22,
@@ -2465,7 +2465,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jeff[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Axle[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Axle[] = {
{
.iv = 100,
.lvl = 23,
@@ -2473,7 +2473,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Axle[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jace[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jace[] = {
{
.iv = 100,
.lvl = 23,
@@ -2481,7 +2481,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jace[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Keegan[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Keegan[] = {
{
.iv = 120,
.lvl = 23,
@@ -2489,7 +2489,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Keegan[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Bernie1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Bernie1[] = {
{
.iv = 0,
.lvl = 18,
@@ -2502,7 +2502,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Bernie1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Bernie2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Bernie2[] = {
{
.iv = 10,
.lvl = 26,
@@ -2515,7 +2515,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Bernie2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Bernie3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Bernie3[] = {
{
.iv = 20,
.lvl = 29,
@@ -2528,7 +2528,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Bernie3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Bernie4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Bernie4[] = {
{
.iv = 30,
.lvl = 32,
@@ -2541,7 +2541,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Bernie4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Bernie5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Bernie5[] = {
{
.iv = 40,
.lvl = 35,
@@ -2554,7 +2554,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Bernie5[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Drew[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Drew[] = {
{
.iv = 0,
.lvl = 23,
@@ -2563,7 +2563,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Drew[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Beau[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Beau[] = {
{
.iv = 0,
.lvl = 21,
@@ -2584,7 +2584,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Beau[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Larry[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Larry[] = {
{
.iv = 0,
.lvl = 18,
@@ -2592,7 +2592,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Larry[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shane[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Shane[] = {
{
.iv = 0,
.lvl = 18,
@@ -2605,7 +2605,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shane[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Justin[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Justin[] = {
{
.iv = 0,
.lvl = 24,
@@ -2613,7 +2613,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Justin[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ethan1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Ethan1[] = {
{
.iv = 0,
.lvl = 20,
@@ -2626,7 +2626,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ethan1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Autumn[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Autumn[] = {
{
.iv = 0,
.lvl = 21,
@@ -2634,7 +2634,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Autumn[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Travis[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Travis[] = {
{
.iv = 0,
.lvl = 18,
@@ -2642,7 +2642,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Travis[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ethan2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Ethan2[] = {
{
.iv = 10,
.lvl = 26,
@@ -2655,7 +2655,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ethan2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ethan3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Ethan3[] = {
{
.iv = 20,
.lvl = 29,
@@ -2668,7 +2668,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ethan3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ethan4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Ethan4[] = {
{
.iv = 30,
.lvl = 31,
@@ -2686,7 +2686,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ethan4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ethan5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Ethan5[] = {
{
.iv = 40,
.lvl = 34,
@@ -2704,7 +2704,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ethan5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brent[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brent[] = {
{
.iv = 100,
.lvl = 26,
@@ -2712,7 +2712,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brent[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Donald[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Donald[] = {
{
.iv = 100,
.lvl = 24,
@@ -2730,7 +2730,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Donald[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Taylor[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Taylor[] = {
{
.iv = 100,
.lvl = 27,
@@ -2748,7 +2748,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Taylor[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jeffrey1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jeffrey1[] = {
{
.iv = 0,
.lvl = 27,
@@ -2766,7 +2766,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jeffrey1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Derek[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Derek[] = {
{
.iv = 150,
.lvl = 16,
@@ -2779,7 +2779,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Derek[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jeffrey2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jeffrey2[] = {
{
.iv = 10,
.lvl = 31,
@@ -2797,7 +2797,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jeffrey2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jeffrey3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jeffrey3[] = {
{
.iv = 20,
.lvl = 34,
@@ -2815,7 +2815,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jeffrey3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jeffrey4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jeffrey4[] = {
{
.iv = 30,
.lvl = 36,
@@ -2838,7 +2838,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jeffrey4[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Jeffrey5[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Jeffrey5[] = {
{
.iv = 40,
.lvl = 38,
@@ -2871,7 +2871,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Jeffrey5[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Edward[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Edward[] = {
{
.iv = 0,
.lvl = 15,
@@ -2880,7 +2880,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Edward[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Preston[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Preston[] = {
{
.iv = 100,
.lvl = 36,
@@ -2888,7 +2888,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Preston[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Virgil[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Virgil[] = {
{
.iv = 100,
.lvl = 36,
@@ -2896,7 +2896,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Virgil[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Blake[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Blake[] = {
{
.iv = 100,
.lvl = 36,
@@ -2904,7 +2904,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Blake[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_William[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_William[] = {
{
.iv = 0,
.lvl = 26,
@@ -2922,7 +2922,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_William[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Joshua[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Joshua[] = {
{
.iv = 0,
.lvl = 41,
@@ -2935,7 +2935,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Joshua[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cameron1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cameron1[] = {
{
.iv = 0,
.lvl = 31,
@@ -2943,7 +2943,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cameron1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cameron2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cameron2[] = {
{
.iv = 10,
.lvl = 33,
@@ -2956,7 +2956,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cameron2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cameron3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cameron3[] = {
{
.iv = 20,
.lvl = 38,
@@ -2969,7 +2969,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cameron3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cameron4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cameron4[] = {
{
.iv = 30,
.lvl = 41,
@@ -2982,7 +2982,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cameron4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cameron5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cameron5[] = {
{
.iv = 40,
.lvl = 45,
@@ -2995,7 +2995,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cameron5[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Jaclyn[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Jaclyn[] = {
{
.iv = 0,
.lvl = 16,
@@ -3004,7 +3004,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Jaclyn[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Hannah[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Hannah[] = {
{
.iv = 100,
.lvl = 36,
@@ -3012,7 +3012,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Hannah[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Samantha[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Samantha[] = {
{
.iv = 100,
.lvl = 36,
@@ -3020,7 +3020,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Samantha[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Maura[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Maura[] = {
{
.iv = 100,
.lvl = 36,
@@ -3028,7 +3028,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Maura[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kayla[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Kayla[] = {
{
.iv = 0,
.lvl = 26,
@@ -3046,7 +3046,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kayla[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Alexis[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Alexis[] = {
{
.iv = 0,
.lvl = 41,
@@ -3059,7 +3059,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Alexis[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jacki1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jacki1[] = {
{
.iv = 0,
.lvl = 30,
@@ -3072,7 +3072,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jacki1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jacki2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jacki2[] = {
{
.iv = 10,
.lvl = 34,
@@ -3085,7 +3085,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jacki2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jacki3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jacki3[] = {
{
.iv = 20,
.lvl = 37,
@@ -3098,7 +3098,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jacki3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jacki4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jacki4[] = {
{
.iv = 30,
.lvl = 40,
@@ -3111,7 +3111,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jacki4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jacki5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jacki5[] = {
{
.iv = 40,
.lvl = 43,
@@ -3124,7 +3124,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jacki5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Walter1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Walter1[] = {
{
.iv = 0,
.lvl = 29,
@@ -3132,7 +3132,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Walter1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Micah[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Micah[] = {
{
.iv = 0,
.lvl = 44,
@@ -3145,7 +3145,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Micah[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Thomas[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Thomas[] = {
{
.iv = 0,
.lvl = 45,
@@ -3153,7 +3153,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Thomas[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Walter2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Walter2[] = {
{
.iv = 10,
.lvl = 34,
@@ -3161,7 +3161,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Walter2[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Walter3[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Walter3[] = {
{
.iv = 20,
.lvl = 36,
@@ -3176,7 +3176,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Walter3[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Walter4[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Walter4[] = {
{
.iv = 30,
.lvl = 39,
@@ -3191,7 +3191,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Walter4[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Walter5[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Walter5[] = {
{
.iv = 40,
.lvl = 41,
@@ -3212,7 +3212,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Walter5[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Sidney[] = {
+static const struct TrainerMonItemCustomMoves sParty_Sidney[] = {
{
.iv = 250,
.lvl = 46,
@@ -3250,7 +3250,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Sidney[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Phoebe[] = {
+static const struct TrainerMonItemCustomMoves sParty_Phoebe[] = {
{
.iv = 250,
.lvl = 48,
@@ -3288,7 +3288,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Phoebe[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Glacia[] = {
+static const struct TrainerMonItemCustomMoves sParty_Glacia[] = {
{
.iv = 250,
.lvl = 50,
@@ -3326,7 +3326,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Glacia[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Drake[] = {
+static const struct TrainerMonItemCustomMoves sParty_Drake[] = {
{
.iv = 250,
.lvl = 52,
@@ -3364,7 +3364,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Drake[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Roxanne1[] = {
+static const struct TrainerMonItemCustomMoves sParty_Roxanne1[] = {
{
.iv = 100,
.lvl = 12,
@@ -3388,7 +3388,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Roxanne1[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Brawly1[] = {
+static const struct TrainerMonItemCustomMoves sParty_Brawly1[] = {
{
.iv = 100,
.lvl = 16,
@@ -3412,7 +3412,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Brawly1[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Wattson1[] = {
+static const struct TrainerMonItemCustomMoves sParty_Wattson1[] = {
{
.iv = 200,
.lvl = 20,
@@ -3443,7 +3443,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Wattson1[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Flannery1[] = {
+static const struct TrainerMonItemCustomMoves sParty_Flannery1[] = {
{
.iv = 200,
.lvl = 24,
@@ -3474,7 +3474,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Flannery1[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Norman1[] = {
+static const struct TrainerMonItemCustomMoves sParty_Norman1[] = {
{
.iv = 200,
.lvl = 27,
@@ -3505,7 +3505,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Norman1[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Winona1[] = {
+static const struct TrainerMonItemCustomMoves sParty_Winona1[] = {
{
.iv = 210,
.lvl = 29,
@@ -3543,7 +3543,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Winona1[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_TateAndLiza1[] = {
+static const struct TrainerMonItemCustomMoves sParty_TateAndLiza1[] = {
{
.iv = 250,
.lvl = 41,
@@ -3574,7 +3574,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_TateAndLiza1[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Juan1[] = {
+static const struct TrainerMonItemCustomMoves sParty_Juan1[] = {
{
.iv = 200,
.lvl = 41,
@@ -3612,7 +3612,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Juan1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jerry1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jerry1[] = {
{
.iv = 10,
.lvl = 9,
@@ -3620,7 +3620,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jerry1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ted[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Ted[] = {
{
.iv = 10,
.lvl = 17,
@@ -3628,7 +3628,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ted[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Paul[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Paul[] = {
{
.iv = 10,
.lvl = 15,
@@ -3646,7 +3646,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Paul[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jerry2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jerry2[] = {
{
.iv = 20,
.lvl = 26,
@@ -3659,7 +3659,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jerry2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jerry3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jerry3[] = {
{
.iv = 30,
.lvl = 29,
@@ -3672,7 +3672,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jerry3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jerry4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jerry4[] = {
{
.iv = 40,
.lvl = 32,
@@ -3685,7 +3685,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jerry4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jerry5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jerry5[] = {
{
.iv = 50,
.lvl = 34,
@@ -3703,7 +3703,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jerry5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Karen1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Karen1[] = {
{
.iv = 10,
.lvl = 9,
@@ -3711,7 +3711,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Karen1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Georgia[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Georgia[] = {
{
.iv = 10,
.lvl = 16,
@@ -3724,7 +3724,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Georgia[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Karen2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Karen2[] = {
{
.iv = 20,
.lvl = 26,
@@ -3737,7 +3737,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Karen2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Karen3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Karen3[] = {
{
.iv = 30,
.lvl = 29,
@@ -3750,7 +3750,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Karen3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Karen4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Karen4[] = {
{
.iv = 40,
.lvl = 32,
@@ -3763,7 +3763,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Karen4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Karen5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Karen5[] = {
{
.iv = 50,
.lvl = 35,
@@ -3776,7 +3776,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Karen5[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_KateAndJoy[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_KateAndJoy[] = {
{
.iv = 0,
.lvl = 30,
@@ -3791,7 +3791,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_KateAndJoy[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_AnnaAndMeg1[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_AnnaAndMeg1[] = {
{
.iv = 0,
.lvl = 15,
@@ -3806,7 +3806,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_AnnaAndMeg1[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_AnnaAndMeg2[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_AnnaAndMeg2[] = {
{
.iv = 10,
.lvl = 28,
@@ -3821,7 +3821,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_AnnaAndMeg2[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_AnnaAndMeg3[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_AnnaAndMeg3[] = {
{
.iv = 20,
.lvl = 31,
@@ -3836,7 +3836,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_AnnaAndMeg3[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_AnnaAndMeg4[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_AnnaAndMeg4[] = {
{
.iv = 30,
.lvl = 34,
@@ -3851,7 +3851,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_AnnaAndMeg4[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_AnnaAndMeg5[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_AnnaAndMeg5[] = {
{
.iv = 40,
.lvl = 36,
@@ -3866,7 +3866,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_AnnaAndMeg5[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Victor[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Victor[] = {
{
.iv = 25,
.lvl = 16,
@@ -3881,7 +3881,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Victor[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Miguel1[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Miguel1[] = {
{
.iv = 0,
.lvl = 15,
@@ -3890,7 +3890,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Miguel1[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Colton[] = {
+static const struct TrainerMonItemCustomMoves sParty_Colton[] = {
{
.iv = 0,
.lvl = 22,
@@ -3935,7 +3935,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Colton[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Miguel2[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Miguel2[] = {
{
.iv = 0,
.lvl = 29,
@@ -3944,7 +3944,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Miguel2[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Miguel3[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Miguel3[] = {
{
.iv = 0,
.lvl = 32,
@@ -3953,7 +3953,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Miguel3[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Miguel4[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Miguel4[] = {
{
.iv = 0,
.lvl = 35,
@@ -3962,7 +3962,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Miguel4[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Miguel5[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Miguel5[] = {
{
.iv = 0,
.lvl = 38,
@@ -3971,7 +3971,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Miguel5[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Victoria[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Victoria[] = {
{
.iv = 50,
.lvl = 17,
@@ -3980,7 +3980,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Victoria[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Vanessa[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Vanessa[] = {
{
.iv = 0,
.lvl = 30,
@@ -3989,7 +3989,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Vanessa[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Bethany[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Bethany[] = {
{
.iv = 100,
.lvl = 35,
@@ -4010,7 +4010,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Bethany[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Isabel1[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Isabel1[] = {
{
.iv = 0,
.lvl = 14,
@@ -4025,7 +4025,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Isabel1[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Isabel2[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Isabel2[] = {
{
.iv = 10,
.lvl = 26,
@@ -4040,7 +4040,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Isabel2[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Isabel3[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Isabel3[] = {
{
.iv = 20,
.lvl = 29,
@@ -4055,7 +4055,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Isabel3[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Isabel4[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Isabel4[] = {
{
.iv = 30,
.lvl = 32,
@@ -4070,7 +4070,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Isabel4[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Isabel5[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Isabel5[] = {
{
.iv = 40,
.lvl = 35,
@@ -4085,7 +4085,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Isabel5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Timothy1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Timothy1[] = {
{
.iv = 200,
.lvl = 27,
@@ -4093,7 +4093,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Timothy1[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Timothy2[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Timothy2[] = {
{
.iv = 210,
.lvl = 33,
@@ -4102,7 +4102,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Timothy2[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Timothy3[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Timothy3[] = {
{
.iv = 220,
.lvl = 36,
@@ -4111,7 +4111,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Timothy3[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Timothy4[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Timothy4[] = {
{
.iv = 230,
.lvl = 39,
@@ -4120,7 +4120,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Timothy4[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Timothy5[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Timothy5[] = {
{
.iv = 240,
.lvl = 42,
@@ -4129,7 +4129,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Timothy5[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Vicky[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Vicky[] = {
{
.iv = 200,
.lvl = 18,
@@ -4138,7 +4138,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Vicky[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shelby1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Shelby1[] = {
{
.iv = 200,
.lvl = 21,
@@ -4151,7 +4151,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shelby1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shelby2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Shelby2[] = {
{
.iv = 210,
.lvl = 30,
@@ -4164,7 +4164,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shelby2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shelby3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Shelby3[] = {
{
.iv = 220,
.lvl = 33,
@@ -4177,7 +4177,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shelby3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shelby4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Shelby4[] = {
{
.iv = 230,
.lvl = 36,
@@ -4190,7 +4190,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shelby4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shelby5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Shelby5[] = {
{
.iv = 240,
.lvl = 39,
@@ -4203,7 +4203,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shelby5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Calvin1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Calvin1[] = {
{
.iv = 0,
.lvl = 5,
@@ -4211,7 +4211,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Calvin1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Billy[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Billy[] = {
{
.iv = 0,
.lvl = 5,
@@ -4224,7 +4224,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Billy[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Josh[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Josh[] = {
{
.iv = 100,
.lvl = 10,
@@ -4233,7 +4233,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Josh[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tommy[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Tommy[] = {
{
.iv = 110,
.lvl = 8,
@@ -4246,7 +4246,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tommy[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Joey[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Joey[] = {
{
.iv = 0,
.lvl = 9,
@@ -4254,7 +4254,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Joey[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Ben[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Ben[] = {
{
.iv = 150,
.lvl = 17,
@@ -4269,7 +4269,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Ben[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Quincy[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Quincy[] = {
{
.iv = 100,
.lvl = 43,
@@ -4284,7 +4284,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Quincy[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Katelynn[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Katelynn[] = {
{
.iv = 100,
.lvl = 43,
@@ -4299,7 +4299,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Katelynn[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jaylen[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jaylen[] = {
{
.iv = 0,
.lvl = 19,
@@ -4307,7 +4307,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jaylen[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dillon[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Dillon[] = {
{
.iv = 0,
.lvl = 19,
@@ -4315,7 +4315,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dillon[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Calvin2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Calvin2[] = {
{
.iv = 10,
.lvl = 27,
@@ -4323,7 +4323,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Calvin2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Calvin3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Calvin3[] = {
{
.iv = 20,
.lvl = 28,
@@ -4336,7 +4336,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Calvin3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Calvin4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Calvin4[] = {
{
.iv = 30,
.lvl = 31,
@@ -4354,7 +4354,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Calvin4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Calvin5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Calvin5[] = {
{
.iv = 40,
.lvl = 34,
@@ -4372,7 +4372,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Calvin5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Eddie[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Eddie[] = {
{
.iv = 0,
.lvl = 14,
@@ -4385,7 +4385,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Eddie[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Allen[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Allen[] = {
{
.iv = 0,
.lvl = 4,
@@ -4398,7 +4398,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Allen[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Timmy[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Timmy[] = {
{
.iv = 0,
.lvl = 15,
@@ -4411,7 +4411,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Timmy[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Wallace[] = {
+static const struct TrainerMonItemCustomMoves sParty_Wallace[] = {
{
.iv = 255,
.lvl = 57,
@@ -4456,7 +4456,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Wallace[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Andrew[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Andrew[] = {
{
.iv = 0,
.lvl = 5,
@@ -4474,7 +4474,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Andrew[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ivan[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Ivan[] = {
{
.iv = 0,
.lvl = 5,
@@ -4492,7 +4492,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ivan[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Claude[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Claude[] = {
{
.iv = 0,
.lvl = 16,
@@ -4510,7 +4510,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Claude[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Elliot1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Elliot1[] = {
{
.iv = 0,
.lvl = 10,
@@ -4528,7 +4528,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Elliot1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ned[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Ned[] = {
{
.iv = 10,
.lvl = 11,
@@ -4536,7 +4536,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ned[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dale[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Dale[] = {
{
.iv = 0,
.lvl = 11,
@@ -4559,7 +4559,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dale[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nolan[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Nolan[] = {
{
.iv = 0,
.lvl = 19,
@@ -4567,7 +4567,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nolan[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Barny[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Barny[] = {
{
.iv = 0,
.lvl = 25,
@@ -4580,7 +4580,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Barny[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Wade[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Wade[] = {
{
.iv = 0,
.lvl = 16,
@@ -4588,7 +4588,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Wade[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Carter[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Carter[] = {
{
.iv = 10,
.lvl = 25,
@@ -4601,7 +4601,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Carter[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Elliot2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Elliot2[] = {
{
.iv = 10,
.lvl = 24,
@@ -4619,7 +4619,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Elliot2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Elliot3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Elliot3[] = {
{
.iv = 20,
.lvl = 29,
@@ -4642,7 +4642,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Elliot3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Elliot4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Elliot4[] = {
{
.iv = 30,
.lvl = 31,
@@ -4665,7 +4665,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Elliot4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Elliot5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Elliot5[] = {
{
.iv = 40,
.lvl = 33,
@@ -4688,7 +4688,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Elliot5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ronald[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Ronald[] = {
{
.iv = 0,
.lvl = 19,
@@ -4721,7 +4721,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ronald[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jacob[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jacob[] = {
{
.iv = 20,
.lvl = 6,
@@ -4739,7 +4739,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jacob[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Anthony[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Anthony[] = {
{
.iv = 0,
.lvl = 14,
@@ -4752,7 +4752,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Anthony[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Benjamin1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Benjamin1[] = {
{
.iv = 0,
.lvl = 16,
@@ -4760,7 +4760,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Benjamin1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Benjamin2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Benjamin2[] = {
{
.iv = 10,
.lvl = 30,
@@ -4768,7 +4768,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Benjamin2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Benjamin3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Benjamin3[] = {
{
.iv = 20,
.lvl = 33,
@@ -4776,7 +4776,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Benjamin3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Benjamin4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Benjamin4[] = {
{
.iv = 30,
.lvl = 36,
@@ -4784,7 +4784,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Benjamin4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Benjamin5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Benjamin5[] = {
{
.iv = 40,
.lvl = 39,
@@ -4792,7 +4792,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Benjamin5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Abigail1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Abigail1[] = {
{
.iv = 0,
.lvl = 16,
@@ -4800,7 +4800,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Abigail1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jasmine[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jasmine[] = {
{
.iv = 80,
.lvl = 14,
@@ -4818,7 +4818,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jasmine[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Abigail2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Abigail2[] = {
{
.iv = 10,
.lvl = 28,
@@ -4826,7 +4826,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Abigail2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Abigail3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Abigail3[] = {
{
.iv = 20,
.lvl = 31,
@@ -4834,7 +4834,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Abigail3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Abigail4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Abigail4[] = {
{
.iv = 30,
.lvl = 34,
@@ -4842,7 +4842,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Abigail4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Abigail5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Abigail5[] = {
{
.iv = 40,
.lvl = 37,
@@ -4850,7 +4850,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Abigail5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dylan1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Dylan1[] = {
{
.iv = 0,
.lvl = 17,
@@ -4858,7 +4858,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dylan1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dylan2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Dylan2[] = {
{
.iv = 10,
.lvl = 28,
@@ -4866,7 +4866,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dylan2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dylan3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Dylan3[] = {
{
.iv = 20,
.lvl = 31,
@@ -4874,7 +4874,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dylan3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dylan4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Dylan4[] = {
{
.iv = 30,
.lvl = 34,
@@ -4882,7 +4882,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dylan4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dylan5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Dylan5[] = {
{
.iv = 40,
.lvl = 37,
@@ -4890,7 +4890,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dylan5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Maria1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Maria1[] = {
{
.iv = 0,
.lvl = 17,
@@ -4898,7 +4898,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Maria1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Maria2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Maria2[] = {
{
.iv = 10,
.lvl = 28,
@@ -4906,7 +4906,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Maria2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Maria3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Maria3[] = {
{
.iv = 20,
.lvl = 31,
@@ -4914,7 +4914,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Maria3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Maria4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Maria4[] = {
{
.iv = 30,
.lvl = 34,
@@ -4922,7 +4922,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Maria4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Maria5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Maria5[] = {
{
.iv = 40,
.lvl = 37,
@@ -4930,7 +4930,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Maria5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Camden[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Camden[] = {
{
.iv = 0,
.lvl = 33,
@@ -4943,7 +4943,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Camden[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Demetrius[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Demetrius[] = {
{
.iv = 0,
.lvl = 25,
@@ -4956,7 +4956,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Demetrius[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isaiah1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Isaiah1[] = {
{
.iv = 0,
.lvl = 35,
@@ -4964,7 +4964,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isaiah1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Pablo1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Pablo1[] = {
{
.iv = 0,
.lvl = 33,
@@ -4977,7 +4977,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Pablo1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Chase[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Chase[] = {
{
.iv = 0,
.lvl = 26,
@@ -4990,7 +4990,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Chase[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isaiah2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Isaiah2[] = {
{
.iv = 10,
.lvl = 39,
@@ -4998,7 +4998,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isaiah2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isaiah3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Isaiah3[] = {
{
.iv = 20,
.lvl = 42,
@@ -5006,7 +5006,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isaiah3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isaiah4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Isaiah4[] = {
{
.iv = 30,
.lvl = 45,
@@ -5014,7 +5014,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isaiah4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isaiah5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Isaiah5[] = {
{
.iv = 40,
.lvl = 48,
@@ -5022,7 +5022,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isaiah5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isobel[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Isobel[] = {
{
.iv = 0,
.lvl = 34,
@@ -5030,7 +5030,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isobel[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Donny[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Donny[] = {
{
.iv = 0,
.lvl = 26,
@@ -5043,7 +5043,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Donny[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Talia[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Talia[] = {
{
.iv = 0,
.lvl = 34,
@@ -5051,7 +5051,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Talia[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Katelyn1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Katelyn1[] = {
{
.iv = 0,
.lvl = 35,
@@ -5059,7 +5059,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Katelyn1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Allison[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Allison[] = {
{
.iv = 0,
.lvl = 27,
@@ -5072,7 +5072,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Allison[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Katelyn2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Katelyn2[] = {
{
.iv = 10,
.lvl = 39,
@@ -5080,7 +5080,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Katelyn2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Katelyn3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Katelyn3[] = {
{
.iv = 20,
.lvl = 42,
@@ -5088,7 +5088,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Katelyn3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Katelyn4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Katelyn4[] = {
{
.iv = 30,
.lvl = 45,
@@ -5096,7 +5096,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Katelyn4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Katelyn5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Katelyn5[] = {
{
.iv = 40,
.lvl = 48,
@@ -5104,7 +5104,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Katelyn5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nicolas1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Nicolas1[] = {
{
.iv = 100,
.lvl = 37,
@@ -5117,7 +5117,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nicolas1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nicolas2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Nicolas2[] = {
{
.iv = 110,
.lvl = 41,
@@ -5130,7 +5130,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nicolas2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nicolas3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Nicolas3[] = {
{
.iv = 120,
.lvl = 44,
@@ -5143,7 +5143,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nicolas3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nicolas4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Nicolas4[] = {
{
.iv = 130,
.lvl = 46,
@@ -5161,7 +5161,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nicolas4[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Nicolas5[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Nicolas5[] = {
{
.iv = 140,
.lvl = 49,
@@ -5182,7 +5182,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Nicolas5[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Aaron[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Aaron[] = {
{
.iv = 255,
.lvl = 34,
@@ -5191,7 +5191,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Aaron[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Perry[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Perry[] = {
{
.iv = 0,
.lvl = 26,
@@ -5199,7 +5199,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Perry[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Hugh[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Hugh[] = {
{
.iv = 0,
.lvl = 25,
@@ -5212,7 +5212,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Hugh[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Phil[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Phil[] = {
{
.iv = 0,
.lvl = 26,
@@ -5220,7 +5220,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Phil[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jared[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jared[] = {
{
.iv = 100,
.lvl = 27,
@@ -5238,7 +5238,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jared[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Humberto[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Humberto[] = {
{
.iv = 250,
.lvl = 30,
@@ -5246,7 +5246,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Humberto[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Presley[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Presley[] = {
{
.iv = 0,
.lvl = 33,
@@ -5259,7 +5259,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Presley[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Edwardo[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Edwardo[] = {
{
.iv = 150,
.lvl = 29,
@@ -5272,7 +5272,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Edwardo[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Colin[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Colin[] = {
{
.iv = 0,
.lvl = 28,
@@ -5285,7 +5285,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Colin[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Robert1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Robert1[] = {
{
.iv = 0,
.lvl = 29,
@@ -5293,7 +5293,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Robert1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Benny[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Benny[] = {
{
.iv = 0,
.lvl = 36,
@@ -5311,7 +5311,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Benny[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Chester[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Chester[] = {
{
.iv = 0,
.lvl = 25,
@@ -5324,7 +5324,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Chester[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Robert2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Robert2[] = {
{
.iv = 10,
.lvl = 32,
@@ -5337,7 +5337,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Robert2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Robert3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Robert3[] = {
{
.iv = 20,
.lvl = 35,
@@ -5350,7 +5350,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Robert3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Robert4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Robert4[] = {
{
.iv = 30,
.lvl = 38,
@@ -5363,7 +5363,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Robert4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Robert5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Robert5[] = {
{
.iv = 40,
.lvl = 41,
@@ -5376,7 +5376,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Robert5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Alex[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Alex[] = {
{
.iv = 150,
.lvl = 33,
@@ -5389,7 +5389,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Alex[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Beck[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Beck[] = {
{
.iv = 0,
.lvl = 34,
@@ -5397,7 +5397,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Beck[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Yasu[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Yasu[] = {
{
.iv = 0,
.lvl = 26,
@@ -5405,7 +5405,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Yasu[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Takashi[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Takashi[] = {
{
.iv = 0,
.lvl = 25,
@@ -5418,7 +5418,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Takashi[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Dianne[] = {
+static const struct TrainerMonItemCustomMoves sParty_Dianne[] = {
{
.iv = 0,
.lvl = 43,
@@ -5435,7 +5435,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Dianne[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jani[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jani[] = {
{
.iv = 0,
.lvl = 26,
@@ -5443,7 +5443,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jani[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Lao1[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Lao1[] = {
{
.iv = 0,
.lvl = 17,
@@ -5464,7 +5464,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Lao1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lung[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Lung[] = {
{
.iv = 0,
.lvl = 18,
@@ -5477,7 +5477,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lung[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Lao2[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Lao2[] = {
{
.iv = 0,
.lvl = 24,
@@ -5504,7 +5504,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Lao2[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Lao3[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Lao3[] = {
{
.iv = 20,
.lvl = 27,
@@ -5531,7 +5531,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Lao3[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Lao4[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Lao4[] = {
{
.iv = 30,
.lvl = 30,
@@ -5558,7 +5558,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Lao4[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Lao5[] = {
+static const struct TrainerMonItemCustomMoves sParty_Lao5[] = {
{
.iv = 40,
.lvl = 33,
@@ -5589,7 +5589,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Lao5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jocelyn[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jocelyn[] = {
{
.iv = 127,
.lvl = 13,
@@ -5597,7 +5597,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jocelyn[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Laura[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Laura[] = {
{
.iv = 150,
.lvl = 13,
@@ -5605,7 +5605,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Laura[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cyndy1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cyndy1[] = {
{
.iv = 100,
.lvl = 18,
@@ -5618,7 +5618,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cyndy1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cora[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cora[] = {
{
.iv = 100,
.lvl = 27,
@@ -5626,7 +5626,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cora[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Paula[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Paula[] = {
{
.iv = 100,
.lvl = 27,
@@ -5634,7 +5634,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Paula[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cyndy2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cyndy2[] = {
{
.iv = 110,
.lvl = 26,
@@ -5647,7 +5647,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cyndy2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cyndy3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cyndy3[] = {
{
.iv = 120,
.lvl = 29,
@@ -5660,7 +5660,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cyndy3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cyndy4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cyndy4[] = {
{
.iv = 130,
.lvl = 32,
@@ -5673,7 +5673,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cyndy4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cyndy5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cyndy5[] = {
{
.iv = 140,
.lvl = 35,
@@ -5686,7 +5686,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cyndy5[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Madeline1[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Madeline1[] = {
{
.iv = 0,
.lvl = 19,
@@ -5695,7 +5695,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Madeline1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Clarissa[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Clarissa[] = {
{
.iv = 0,
.lvl = 28,
@@ -5708,7 +5708,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Clarissa[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Angelica[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Angelica[] = {
{
.iv = 50,
.lvl = 30,
@@ -5717,7 +5717,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Angelica[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Madeline2[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Madeline2[] = {
{
.iv = 10,
.lvl = 29,
@@ -5726,7 +5726,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Madeline2[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Madeline3[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Madeline3[] = {
{
.iv = 20,
.lvl = 32,
@@ -5735,7 +5735,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Madeline3[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Madeline4[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Madeline4[] = {
{
.iv = 30,
.lvl = 34,
@@ -5750,7 +5750,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Madeline4[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Madeline5[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Madeline5[] = {
{
.iv = 40,
.lvl = 37,
@@ -5765,7 +5765,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Madeline5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Beverly[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Beverly[] = {
{
.iv = 0,
.lvl = 25,
@@ -5778,7 +5778,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Beverly[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Imani[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Imani[] = {
{
.iv = 0,
.lvl = 26,
@@ -5786,7 +5786,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Imani[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kyla[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Kyla[] = {
{
.iv = 0,
.lvl = 26,
@@ -5794,7 +5794,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kyla[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Denise[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Denise[] = {
{
.iv = 0,
.lvl = 25,
@@ -5807,7 +5807,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Denise[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Beth[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Beth[] = {
{
.iv = 0,
.lvl = 26,
@@ -5815,7 +5815,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Beth[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tara[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Tara[] = {
{
.iv = 0,
.lvl = 25,
@@ -5828,7 +5828,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tara[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Missy[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Missy[] = {
{
.iv = 0,
.lvl = 26,
@@ -5836,7 +5836,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Missy[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Alice[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Alice[] = {
{
.iv = 0,
.lvl = 24,
@@ -5854,7 +5854,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Alice[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jenny1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jenny1[] = {
{
.iv = 0,
.lvl = 34,
@@ -5862,7 +5862,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jenny1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grace[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grace[] = {
{
.iv = 0,
.lvl = 34,
@@ -5870,7 +5870,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grace[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tanya[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Tanya[] = {
{
.iv = 0,
.lvl = 34,
@@ -5878,7 +5878,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tanya[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sharon[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Sharon[] = {
{
.iv = 0,
.lvl = 34,
@@ -5886,7 +5886,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sharon[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nikki[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Nikki[] = {
{
.iv = 0,
.lvl = 33,
@@ -5899,7 +5899,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nikki[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brenda[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brenda[] = {
{
.iv = 0,
.lvl = 34,
@@ -5907,7 +5907,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brenda[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Katie[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Katie[] = {
{
.iv = 0,
.lvl = 33,
@@ -5920,7 +5920,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Katie[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Susie[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Susie[] = {
{
.iv = 0,
.lvl = 34,
@@ -5928,7 +5928,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Susie[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kara[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Kara[] = {
{
.iv = 0,
.lvl = 34,
@@ -5936,7 +5936,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kara[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dana[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Dana[] = {
{
.iv = 0,
.lvl = 34,
@@ -5944,7 +5944,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dana[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sienna[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Sienna[] = {
{
.iv = 0,
.lvl = 33,
@@ -5957,7 +5957,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sienna[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Debra[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Debra[] = {
{
.iv = 0,
.lvl = 34,
@@ -5965,7 +5965,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Debra[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Linda[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Linda[] = {
{
.iv = 0,
.lvl = 33,
@@ -5978,7 +5978,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Linda[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kaylee[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Kaylee[] = {
{
.iv = 0,
.lvl = 34,
@@ -5991,7 +5991,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kaylee[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Laurel[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Laurel[] = {
{
.iv = 0,
.lvl = 33,
@@ -6004,7 +6004,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Laurel[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Carlee[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Carlee[] = {
{
.iv = 0,
.lvl = 35,
@@ -6012,7 +6012,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Carlee[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jenny2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jenny2[] = {
{
.iv = 0,
.lvl = 38,
@@ -6020,7 +6020,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jenny2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jenny3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jenny3[] = {
{
.iv = 0,
.lvl = 41,
@@ -6028,7 +6028,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jenny3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jenny4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jenny4[] = {
{
.iv = 0,
.lvl = 43,
@@ -6041,7 +6041,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jenny4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jenny5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jenny5[] = {
{
.iv = 0,
.lvl = 45,
@@ -6059,7 +6059,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jenny5[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Heidi[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Heidi[] = {
{
.iv = 0,
.lvl = 22,
@@ -6074,7 +6074,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Heidi[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Becky[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Becky[] = {
{
.iv = 0,
.lvl = 22,
@@ -6089,7 +6089,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Becky[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Carol[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Carol[] = {
{
.iv = 0,
.lvl = 17,
@@ -6102,7 +6102,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Carol[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nancy[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Nancy[] = {
{
.iv = 0,
.lvl = 18,
@@ -6115,7 +6115,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nancy[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Martha[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Martha[] = {
{
.iv = 0,
.lvl = 23,
@@ -6128,7 +6128,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Martha[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Diana1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Diana1[] = {
{
.iv = 0,
.lvl = 19,
@@ -6146,7 +6146,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Diana1[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Cedric[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Cedric[] = {
{
.iv = 0,
.lvl = 32,
@@ -6155,7 +6155,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Cedric[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Irene[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Irene[] = {
{
.iv = 0,
.lvl = 17,
@@ -6168,7 +6168,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Irene[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Diana2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Diana2[] = {
{
.iv = 10,
.lvl = 25,
@@ -6186,7 +6186,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Diana2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Diana3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Diana3[] = {
{
.iv = 20,
.lvl = 28,
@@ -6204,7 +6204,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Diana3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Diana4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Diana4[] = {
{
.iv = 30,
.lvl = 31,
@@ -6222,7 +6222,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Diana4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Diana5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Diana5[] = {
{
.iv = 40,
.lvl = 40,
@@ -6240,7 +6240,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Diana5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_AmyAndLiv1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_AmyAndLiv1[] = {
{
.iv = 0,
.lvl = 15,
@@ -6253,7 +6253,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_AmyAndLiv1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_AmyAndLiv2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_AmyAndLiv2[] = {
{
.iv = 10,
.lvl = 27,
@@ -6266,7 +6266,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_AmyAndLiv2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_GinaAndMia1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_GinaAndMia1[] = {
{
.iv = 0,
.lvl = 6,
@@ -6279,7 +6279,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_GinaAndMia1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_MiuAndYuki[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_MiuAndYuki[] = {
{
.iv = 0,
.lvl = 26,
@@ -6292,7 +6292,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_MiuAndYuki[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_AmyAndLiv3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_AmyAndLiv3[] = {
{
.iv = 0,
.lvl = 9,
@@ -6305,7 +6305,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_AmyAndLiv3[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_GinaAndMia2[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_GinaAndMia2[] = {
{
.iv = 0,
.lvl = 10,
@@ -6320,7 +6320,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_GinaAndMia2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_AmyAndLiv4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_AmyAndLiv4[] = {
{
.iv = 20,
.lvl = 30,
@@ -6333,7 +6333,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_AmyAndLiv4[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_AmyAndLiv5[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_AmyAndLiv5[] = {
{
.iv = 30,
.lvl = 33,
@@ -6348,7 +6348,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_AmyAndLiv5[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_AmyAndLiv6[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_AmyAndLiv6[] = {
{
.iv = 40,
.lvl = 36,
@@ -6363,7 +6363,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_AmyAndLiv6[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Huey[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Huey[] = {
{
.iv = 10,
.lvl = 12,
@@ -6376,7 +6376,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Huey[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Edmond[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Edmond[] = {
{
.iv = 0,
.lvl = 13,
@@ -6384,7 +6384,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Edmond[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ernest1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Ernest1[] = {
{
.iv = 0,
.lvl = 33,
@@ -6397,7 +6397,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ernest1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dwayne[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Dwayne[] = {
{
.iv = 0,
.lvl = 11,
@@ -6415,7 +6415,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dwayne[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Phillip[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Phillip[] = {
{
.iv = 0,
.lvl = 44,
@@ -6428,7 +6428,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Phillip[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Leonard[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Leonard[] = {
{
.iv = 0,
.lvl = 43,
@@ -6446,7 +6446,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Leonard[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Duncan[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Duncan[] = {
{
.iv = 0,
.lvl = 25,
@@ -6459,7 +6459,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Duncan[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ernest2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Ernest2[] = {
{
.iv = 10,
.lvl = 36,
@@ -6477,7 +6477,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ernest2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ernest3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Ernest3[] = {
{
.iv = 20,
.lvl = 39,
@@ -6495,7 +6495,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ernest3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ernest4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Ernest4[] = {
{
.iv = 30,
.lvl = 42,
@@ -6513,7 +6513,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ernest4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ernest5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Ernest5[] = {
{
.iv = 40,
.lvl = 45,
@@ -6531,7 +6531,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ernest5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Eli[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Eli[] = {
{
.iv = 100,
.lvl = 23,
@@ -6539,7 +6539,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Eli[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Annika[] = {
+static const struct TrainerMonItemCustomMoves sParty_Annika[] = {
{
.iv = 100,
.lvl = 39,
@@ -6556,7 +6556,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Annika[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jazmyn[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jazmyn[] = {
{
.iv = 0,
.lvl = 27,
@@ -6564,7 +6564,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jazmyn[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Jonas[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Jonas[] = {
{
.iv = 0,
.lvl = 31,
@@ -6573,7 +6573,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Jonas[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Kayley[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Kayley[] = {
{
.iv = 0,
.lvl = 31,
@@ -6582,7 +6582,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Kayley[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Auron[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Auron[] = {
{
.iv = 0,
.lvl = 33,
@@ -6595,7 +6595,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Auron[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kelvin[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Kelvin[] = {
{
.iv = 150,
.lvl = 33,
@@ -6608,7 +6608,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kelvin[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Marley[] = {
+static const struct TrainerMonItemCustomMoves sParty_Marley[] = {
{
.iv = 255,
.lvl = 34,
@@ -6618,7 +6618,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Marley[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Reyna[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Reyna[] = {
{
.iv = 50,
.lvl = 33,
@@ -6631,7 +6631,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Reyna[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Hudson[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Hudson[] = {
{
.iv = 0,
.lvl = 34,
@@ -6639,7 +6639,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Hudson[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Conor[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Conor[] = {
{
.iv = 0,
.lvl = 33,
@@ -6652,7 +6652,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Conor[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Edwin1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Edwin1[] = {
{
.iv = 0,
.lvl = 14,
@@ -6665,7 +6665,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Edwin1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Hector[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Hector[] = {
{
.iv = 0,
.lvl = 18,
@@ -6678,7 +6678,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Hector[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tabitha1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Tabitha1[] = {
{
.iv = 100,
.lvl = 36,
@@ -6696,7 +6696,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tabitha1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Edwin2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Edwin2[] = {
{
.iv = 0,
.lvl = 26,
@@ -6709,7 +6709,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Edwin2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Edwin3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Edwin3[] = {
{
.iv = 0,
.lvl = 29,
@@ -6722,7 +6722,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Edwin3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Edwin4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Edwin4[] = {
{
.iv = 0,
.lvl = 32,
@@ -6735,7 +6735,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Edwin4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Edwin5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Edwin5[] = {
{
.iv = 0,
.lvl = 35,
@@ -6748,7 +6748,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Edwin5[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Wally1[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Wally1[] = {
{
.iv = 150,
.lvl = 44,
@@ -6781,7 +6781,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Wally1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brendan1[] = {
{
.iv = 0,
.lvl = 5,
@@ -6789,7 +6789,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brendan2[] = {
{
.iv = 50,
.lvl = 18,
@@ -6807,7 +6807,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brendan3[] = {
{
.iv = 100,
.lvl = 29,
@@ -6825,7 +6825,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brendan4[] = {
{
.iv = 0,
.lvl = 5,
@@ -6833,7 +6833,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brendan5[] = {
{
.iv = 50,
.lvl = 18,
@@ -6851,7 +6851,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan6[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brendan6[] = {
{
.iv = 100,
.lvl = 29,
@@ -6869,7 +6869,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan6[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan7[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brendan7[] = {
{
.iv = 0,
.lvl = 5,
@@ -6877,7 +6877,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan7[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan8[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brendan8[] = {
{
.iv = 50,
.lvl = 18,
@@ -6895,7 +6895,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan8[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan9[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brendan9[] = {
{
.iv = 100,
.lvl = 29,
@@ -6913,7 +6913,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan9[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_May1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_May1[] = {
{
.iv = 0,
.lvl = 5,
@@ -6921,7 +6921,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_May1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_May2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_May2[] = {
{
.iv = 50,
.lvl = 18,
@@ -6939,7 +6939,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_May2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_May3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_May3[] = {
{
.iv = 100,
.lvl = 29,
@@ -6957,7 +6957,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_May3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_May4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_May4[] = {
{
.iv = 0,
.lvl = 5,
@@ -6965,7 +6965,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_May4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_May5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_May5[] = {
{
.iv = 50,
.lvl = 18,
@@ -6983,7 +6983,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_May5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_May6[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_May6[] = {
{
.iv = 100,
.lvl = 29,
@@ -7001,7 +7001,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_May6[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_May7[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_May7[] = {
{
.iv = 0,
.lvl = 5,
@@ -7009,7 +7009,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_May7[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_May8[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_May8[] = {
{
.iv = 50,
.lvl = 18,
@@ -7027,7 +7027,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_May8[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_May9[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_May9[] = {
{
.iv = 100,
.lvl = 29,
@@ -7045,7 +7045,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_May9[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isaac1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Isaac1[] = {
{
.iv = 0,
.lvl = 11,
@@ -7078,7 +7078,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isaac1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Davis[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Davis[] = {
{
.iv = 0,
.lvl = 27,
@@ -7086,7 +7086,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Davis[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Mitchell[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Mitchell[] = {
{
.iv = 0,
.lvl = 43,
@@ -7101,7 +7101,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Mitchell[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isaac2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Isaac2[] = {
{
.iv = 10,
.lvl = 22,
@@ -7134,7 +7134,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isaac2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isaac3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Isaac3[] = {
{
.iv = 20,
.lvl = 25,
@@ -7167,7 +7167,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isaac3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isaac4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Isaac4[] = {
{
.iv = 30,
.lvl = 28,
@@ -7200,7 +7200,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isaac4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isaac5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Isaac5[] = {
{
.iv = 40,
.lvl = 31,
@@ -7233,7 +7233,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isaac5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lydia1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Lydia1[] = {
{
.iv = 0,
.lvl = 11,
@@ -7266,7 +7266,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lydia1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Halle[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Halle[] = {
{
.iv = 0,
.lvl = 43,
@@ -7279,7 +7279,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Halle[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Garrison[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Garrison[] = {
{
.iv = 0,
.lvl = 26,
@@ -7287,7 +7287,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Garrison[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lydia2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Lydia2[] = {
{
.iv = 10,
.lvl = 22,
@@ -7320,7 +7320,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lydia2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lydia3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Lydia3[] = {
{
.iv = 20,
.lvl = 25,
@@ -7353,7 +7353,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lydia3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lydia4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Lydia4[] = {
{
.iv = 30,
.lvl = 28,
@@ -7386,7 +7386,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lydia4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lydia5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Lydia5[] = {
{
.iv = 40,
.lvl = 31,
@@ -7419,7 +7419,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lydia5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jackson1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jackson1[] = {
{
.iv = 50,
.lvl = 27,
@@ -7427,7 +7427,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jackson1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lorenzo[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Lorenzo[] = {
{
.iv = 50,
.lvl = 28,
@@ -7445,7 +7445,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lorenzo[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sebastian[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Sebastian[] = {
{
.iv = 50,
.lvl = 39,
@@ -7453,7 +7453,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sebastian[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jackson2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jackson2[] = {
{
.iv = 60,
.lvl = 31,
@@ -7461,7 +7461,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jackson2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jackson3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jackson3[] = {
{
.iv = 70,
.lvl = 34,
@@ -7469,7 +7469,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jackson3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jackson4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jackson4[] = {
{
.iv = 80,
.lvl = 37,
@@ -7477,7 +7477,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jackson4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jackson5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jackson5[] = {
{
.iv = 90,
.lvl = 39,
@@ -7490,7 +7490,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jackson5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Catherine1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Catherine1[] = {
{
.iv = 50,
.lvl = 26,
@@ -7503,7 +7503,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Catherine1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jenna[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jenna[] = {
{
.iv = 50,
.lvl = 28,
@@ -7521,7 +7521,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jenna[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sophia[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Sophia[] = {
{
.iv = 50,
.lvl = 38,
@@ -7534,7 +7534,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sophia[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Catherine2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Catherine2[] = {
{
.iv = 60,
.lvl = 30,
@@ -7547,7 +7547,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Catherine2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Catherine3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Catherine3[] = {
{
.iv = 70,
.lvl = 33,
@@ -7560,7 +7560,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Catherine3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Catherine4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Catherine4[] = {
{
.iv = 80,
.lvl = 36,
@@ -7573,7 +7573,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Catherine4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Catherine5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Catherine5[] = {
{
.iv = 90,
.lvl = 39,
@@ -7586,7 +7586,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Catherine5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Julio[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Julio[] = {
{
.iv = 0,
.lvl = 21,
@@ -7594,7 +7594,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Julio[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt27[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt27[] = {
{
.iv = 50,
.lvl = 35,
@@ -7607,7 +7607,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt27[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt28[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt28[] = {
{
.iv = 0,
.lvl = 31,
@@ -7620,7 +7620,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt28[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt29[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt29[] = {
{
.iv = 0,
.lvl = 30,
@@ -7633,7 +7633,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt29[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt30[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt30[] = {
{
.iv = 50,
.lvl = 22,
@@ -7646,7 +7646,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt30[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Marc[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Marc[] = {
{
.iv = 120,
.lvl = 8,
@@ -7659,7 +7659,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Marc[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brenden[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brenden[] = {
{
.iv = 100,
.lvl = 13,
@@ -7667,7 +7667,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brenden[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lilith[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Lilith[] = {
{
.iv = 150,
.lvl = 13,
@@ -7675,7 +7675,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lilith[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cristian[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cristian[] = {
{
.iv = 200,
.lvl = 13,
@@ -7683,7 +7683,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cristian[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sylvia[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Sylvia[] = {
{
.iv = 100,
.lvl = 36,
@@ -7691,7 +7691,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sylvia[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Leonardo[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Leonardo[] = {
{
.iv = 0,
.lvl = 34,
@@ -7699,7 +7699,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Leonardo[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Athena[] = {
+static const struct TrainerMonItemCustomMoves sParty_Athena[] = {
{
.iv = 100,
.lvl = 32,
@@ -7716,7 +7716,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Athena[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Harrison[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Harrison[] = {
{
.iv = 0,
.lvl = 35,
@@ -7724,7 +7724,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Harrison[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt31[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt31[] = {
{
.iv = 0,
.lvl = 20,
@@ -7732,7 +7732,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt31[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Clarence[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Clarence[] = {
{
.iv = 0,
.lvl = 34,
@@ -7740,7 +7740,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Clarence[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Terry[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Terry[] = {
{
.iv = 0,
.lvl = 37,
@@ -7748,7 +7748,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Terry[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nate[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Nate[] = {
{
.iv = 100,
.lvl = 36,
@@ -7756,7 +7756,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nate[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kathleen[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Kathleen[] = {
{
.iv = 100,
.lvl = 36,
@@ -7764,7 +7764,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kathleen[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Clifford[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Clifford[] = {
{
.iv = 0,
.lvl = 36,
@@ -7772,7 +7772,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Clifford[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nicholas[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Nicholas[] = {
{
.iv = 0,
.lvl = 36,
@@ -7780,7 +7780,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Nicholas[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt32[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt32[] = {
{
.iv = 0,
.lvl = 31,
@@ -7793,7 +7793,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt32[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt33[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt33[] = {
{
.iv = 0,
.lvl = 32,
@@ -7801,7 +7801,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt33[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt34[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt34[] = {
{
.iv = 0,
.lvl = 32,
@@ -7809,7 +7809,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt34[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt35[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt35[] = {
{
.iv = 0,
.lvl = 32,
@@ -7817,7 +7817,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt35[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt36[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt36[] = {
{
.iv = 0,
.lvl = 32,
@@ -7825,7 +7825,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt36[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Macey[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Macey[] = {
{
.iv = 0,
.lvl = 36,
@@ -7833,7 +7833,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Macey[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan10[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brendan10[] = {
{
.iv = 25,
.lvl = 13,
@@ -7846,7 +7846,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan10[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan11[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brendan11[] = {
{
.iv = 25,
.lvl = 13,
@@ -7859,7 +7859,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan11[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Paxton[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Paxton[] = {
{
.iv = 0,
.lvl = 33,
@@ -7872,7 +7872,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Paxton[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isabella[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Isabella[] = {
{
.iv = 0,
.lvl = 34,
@@ -7880,7 +7880,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isabella[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt37[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt37[] = {
{
.iv = 0,
.lvl = 27,
@@ -7893,7 +7893,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt37[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tabitha2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Tabitha2[] = {
{
.iv = 50,
.lvl = 18,
@@ -7916,7 +7916,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tabitha2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jonathan[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jonathan[] = {
{
.iv = 0,
.lvl = 33,
@@ -7929,7 +7929,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jonathan[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan12[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brendan12[] = {
{
.iv = 25,
.lvl = 13,
@@ -7942,7 +7942,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan12[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_May10[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_May10[] = {
{
.iv = 25,
.lvl = 13,
@@ -7955,7 +7955,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_May10[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Maxie1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Maxie1[] = {
{
.iv = 150,
.lvl = 37,
@@ -7973,7 +7973,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Maxie1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Maxie2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Maxie2[] = {
{
.iv = 150,
.lvl = 24,
@@ -7991,7 +7991,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Maxie2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tiana[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Tiana[] = {
{
.iv = 0,
.lvl = 4,
@@ -8004,7 +8004,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tiana[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Haley1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Haley1[] = {
{
.iv = 0,
.lvl = 6,
@@ -8017,7 +8017,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Haley1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Janice[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Janice[] = {
{
.iv = 0,
.lvl = 9,
@@ -8025,7 +8025,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Janice[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Vivi[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Vivi[] = {
{
.iv = 100,
.lvl = 15,
@@ -8043,7 +8043,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Vivi[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Haley2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Haley2[] = {
{
.iv = 10,
.lvl = 26,
@@ -8056,7 +8056,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Haley2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Haley3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Haley3[] = {
{
.iv = 20,
.lvl = 29,
@@ -8069,7 +8069,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Haley3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Haley4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Haley4[] = {
{
.iv = 30,
.lvl = 32,
@@ -8082,7 +8082,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Haley4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Haley5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Haley5[] = {
{
.iv = 40,
.lvl = 34,
@@ -8100,7 +8100,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Haley5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sally[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Sally[] = {
{
.iv = 0,
.lvl = 16,
@@ -8108,7 +8108,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sally[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Robin[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Robin[] = {
{
.iv = 0,
.lvl = 14,
@@ -8126,7 +8126,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Robin[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Andrea[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Andrea[] = {
{
.iv = 100,
.lvl = 40,
@@ -8134,7 +8134,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Andrea[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Crissy[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Crissy[] = {
{
.iv = 100,
.lvl = 39,
@@ -8147,7 +8147,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Crissy[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Rick[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Rick[] = {
{
.iv = 0,
.lvl = 4,
@@ -8160,7 +8160,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Rick[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lyle[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Lyle[] = {
{
.iv = 0,
.lvl = 3,
@@ -8183,7 +8183,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lyle[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jose[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jose[] = {
{
.iv = 50,
.lvl = 8,
@@ -8196,7 +8196,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jose[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Doug[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Doug[] = {
{
.iv = 0,
.lvl = 28,
@@ -8209,7 +8209,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Doug[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Greg[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Greg[] = {
{
.iv = 0,
.lvl = 25,
@@ -8222,7 +8222,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Greg[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kent[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Kent[] = {
{
.iv = 0,
.lvl = 25,
@@ -8230,7 +8230,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kent[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_James1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_James1[] = {
{
.iv = 0,
.lvl = 6,
@@ -8243,7 +8243,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_James1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_James2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_James2[] = {
{
.iv = 10,
.lvl = 27,
@@ -8251,7 +8251,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_James2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_James3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_James3[] = {
{
.iv = 20,
.lvl = 29,
@@ -8264,7 +8264,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_James3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_James4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_James4[] = {
{
.iv = 30,
.lvl = 31,
@@ -8282,7 +8282,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_James4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_James5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_James5[] = {
{
.iv = 40,
.lvl = 33,
@@ -8305,7 +8305,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_James5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brice[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brice[] = {
{
.iv = 0,
.lvl = 17,
@@ -8318,7 +8318,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brice[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Trent1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Trent1[] = {
{
.iv = 0,
.lvl = 16,
@@ -8336,7 +8336,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Trent1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lenny[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Lenny[] = {
{
.iv = 0,
.lvl = 18,
@@ -8349,7 +8349,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lenny[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lucas1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Lucas1[] = {
{
.iv = 0,
.lvl = 18,
@@ -8362,7 +8362,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lucas1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Alan[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Alan[] = {
{
.iv = 0,
.lvl = 22,
@@ -8380,7 +8380,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Alan[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Clark[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Clark[] = {
{
.iv = 0,
.lvl = 8,
@@ -8388,7 +8388,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Clark[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Eric[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Eric[] = {
{
.iv = 0,
.lvl = 20,
@@ -8401,7 +8401,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Eric[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Lucas2[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Lucas2[] = {
{
.iv = 0,
.lvl = 9,
@@ -8410,7 +8410,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Lucas2[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Mike1[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Mike1[] = {
{
.iv = 0,
.lvl = 10,
@@ -8425,7 +8425,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Mike1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Mike2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Mike2[] = {
{
.iv = 0,
.lvl = 16,
@@ -8443,7 +8443,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Mike2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Trent2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Trent2[] = {
{
.iv = 10,
.lvl = 24,
@@ -8466,7 +8466,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Trent2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Trent3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Trent3[] = {
{
.iv = 20,
.lvl = 27,
@@ -8489,7 +8489,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Trent3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Trent4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Trent4[] = {
{
.iv = 30,
.lvl = 30,
@@ -8512,7 +8512,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Trent4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Trent5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Trent5[] = {
{
.iv = 40,
.lvl = 33,
@@ -8535,7 +8535,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Trent5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_DezAndLuke[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_DezAndLuke[] = {
{
.iv = 0,
.lvl = 31,
@@ -8548,7 +8548,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_DezAndLuke[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_LeaAndJed[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_LeaAndJed[] = {
{
.iv = 0,
.lvl = 45,
@@ -8561,7 +8561,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_LeaAndJed[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_KiraAndDan1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_KiraAndDan1[] = {
{
.iv = 0,
.lvl = 25,
@@ -8574,7 +8574,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_KiraAndDan1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_KiraAndDan2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_KiraAndDan2[] = {
{
.iv = 10,
.lvl = 30,
@@ -8587,7 +8587,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_KiraAndDan2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_KiraAndDan3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_KiraAndDan3[] = {
{
.iv = 20,
.lvl = 33,
@@ -8600,7 +8600,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_KiraAndDan3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_KiraAndDan4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_KiraAndDan4[] = {
{
.iv = 30,
.lvl = 36,
@@ -8613,7 +8613,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_KiraAndDan4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_KiraAndDan5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_KiraAndDan5[] = {
{
.iv = 40,
.lvl = 39,
@@ -8626,7 +8626,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_KiraAndDan5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Johanna[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Johanna[] = {
{
.iv = 0,
.lvl = 13,
@@ -8634,7 +8634,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Johanna[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Gerald[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Gerald[] = {
{
.iv = 100,
.lvl = 23,
@@ -8643,7 +8643,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Gerald[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Vivian[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Vivian[] = {
{
.iv = 100,
.lvl = 17,
@@ -8658,7 +8658,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Vivian[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Danielle[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Danielle[] = {
{
.iv = 100,
.lvl = 23,
@@ -8667,7 +8667,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Danielle[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Hideo[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Hideo[] = {
{
.iv = 0,
.lvl = 25,
@@ -8682,7 +8682,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Hideo[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Keigo[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Keigo[] = {
{
.iv = 0,
.lvl = 28,
@@ -8697,7 +8697,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Keigo[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Riley[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Riley[] = {
{
.iv = 0,
.lvl = 28,
@@ -8712,7 +8712,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Riley[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Flint[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Flint[] = {
{
.iv = 150,
.lvl = 29,
@@ -8725,7 +8725,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Flint[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ashley[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Ashley[] = {
{
.iv = 100,
.lvl = 27,
@@ -8743,7 +8743,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ashley[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Wally2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Wally2[] = {
{
.iv = 30,
.lvl = 16,
@@ -8751,7 +8751,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Wally2[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Wally3[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Wally3[] = {
{
.iv = 150,
.lvl = 47,
@@ -8784,7 +8784,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Wally3[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Wally4[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Wally4[] = {
{
.iv = 150,
.lvl = 50,
@@ -8817,7 +8817,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Wally4[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Wally5[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Wally5[] = {
{
.iv = 150,
.lvl = 53,
@@ -8850,7 +8850,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Wally5[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Wally6[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Wally6[] = {
{
.iv = 150,
.lvl = 56,
@@ -8883,7 +8883,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Wally6[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan13[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brendan13[] = {
{
.iv = 150,
.lvl = 31,
@@ -8906,7 +8906,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan13[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan14[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brendan14[] = {
{
.iv = 150,
.lvl = 31,
@@ -8929,7 +8929,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan14[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan15[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brendan15[] = {
{
.iv = 150,
.lvl = 31,
@@ -8952,7 +8952,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan15[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_May11[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_May11[] = {
{
.iv = 150,
.lvl = 31,
@@ -8975,7 +8975,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_May11[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_May12[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_May12[] = {
{
.iv = 150,
.lvl = 31,
@@ -8998,7 +8998,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_May12[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_May13[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_May13[] = {
{
.iv = 150,
.lvl = 31,
@@ -9021,7 +9021,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_May13[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jonah[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jonah[] = {
{
.iv = 0,
.lvl = 30,
@@ -9039,7 +9039,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jonah[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Henry[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Henry[] = {
{
.iv = 0,
.lvl = 31,
@@ -9052,7 +9052,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Henry[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Roger[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Roger[] = {
{
.iv = 0,
.lvl = 15,
@@ -9070,7 +9070,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Roger[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Alexa[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Alexa[] = {
{
.iv = 100,
.lvl = 34,
@@ -9083,7 +9083,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Alexa[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ruben[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Ruben[] = {
{
.iv = 100,
.lvl = 34,
@@ -9096,7 +9096,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Ruben[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Koji1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Koji1[] = {
{
.iv = 0,
.lvl = 34,
@@ -9104,7 +9104,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Koji1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Wayne[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Wayne[] = {
{
.iv = 0,
.lvl = 31,
@@ -9122,7 +9122,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Wayne[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Aidan[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Aidan[] = {
{
.iv = 0,
.lvl = 32,
@@ -9135,7 +9135,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Aidan[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Reed[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Reed[] = {
{
.iv = 0,
.lvl = 33,
@@ -9148,7 +9148,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Reed[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tisha[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Tisha[] = {
{
.iv = 0,
.lvl = 34,
@@ -9156,7 +9156,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tisha[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_ToriAndTia[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_ToriAndTia[] = {
{
.iv = 0,
.lvl = 19,
@@ -9169,7 +9169,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_ToriAndTia[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_KimAndIris[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_KimAndIris[] = {
{
.iv = 0,
.lvl = 32,
@@ -9184,7 +9184,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_KimAndIris[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_TyraAndIvy[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_TyraAndIvy[] = {
{
.iv = 0,
.lvl = 18,
@@ -9199,7 +9199,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_TyraAndIvy[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_MelAndPaul[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_MelAndPaul[] = {
{
.iv = 0,
.lvl = 27,
@@ -9214,7 +9214,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_MelAndPaul[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_JohnAndJay1[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_JohnAndJay1[] = {
{
.iv = 200,
.lvl = 39,
@@ -9229,7 +9229,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_JohnAndJay1[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_JohnAndJay2[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_JohnAndJay2[] = {
{
.iv = 210,
.lvl = 43,
@@ -9244,7 +9244,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_JohnAndJay2[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_JohnAndJay3[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_JohnAndJay3[] = {
{
.iv = 220,
.lvl = 46,
@@ -9259,7 +9259,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_JohnAndJay3[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_JohnAndJay4[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_JohnAndJay4[] = {
{
.iv = 230,
.lvl = 49,
@@ -9274,7 +9274,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_JohnAndJay4[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_JohnAndJay5[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_JohnAndJay5[] = {
{
.iv = 240,
.lvl = 52,
@@ -9289,7 +9289,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_JohnAndJay5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_ReliAndIan[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_ReliAndIan[] = {
{
.iv = 0,
.lvl = 35,
@@ -9302,7 +9302,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_ReliAndIan[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_LilaAndRoy1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_LilaAndRoy1[] = {
{
.iv = 0,
.lvl = 34,
@@ -9315,7 +9315,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_LilaAndRoy1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_LilaAndRoy2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_LilaAndRoy2[] = {
{
.iv = 0,
.lvl = 42,
@@ -9328,7 +9328,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_LilaAndRoy2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_LilaAndRoy3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_LilaAndRoy3[] = {
{
.iv = 0,
.lvl = 45,
@@ -9341,7 +9341,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_LilaAndRoy3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_LilaAndRoy4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_LilaAndRoy4[] = {
{
.iv = 0,
.lvl = 48,
@@ -9354,7 +9354,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_LilaAndRoy4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_LilaAndRoy5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_LilaAndRoy5[] = {
{
.iv = 0,
.lvl = 51,
@@ -9367,7 +9367,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_LilaAndRoy5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_LisaAndRay[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_LisaAndRay[] = {
{
.iv = 0,
.lvl = 27,
@@ -9380,7 +9380,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_LisaAndRay[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Chris[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Chris[] = {
{
.iv = 0,
.lvl = 29,
@@ -9403,7 +9403,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Chris[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Dawson[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Dawson[] = {
{
.iv = 0,
.lvl = 8,
@@ -9418,7 +9418,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Dawson[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Sarah[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Sarah[] = {
{
.iv = 0,
.lvl = 8,
@@ -9433,7 +9433,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Sarah[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Darian[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Darian[] = {
{
.iv = 0,
.lvl = 9,
@@ -9441,7 +9441,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Darian[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Hailey[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Hailey[] = {
{
.iv = 0,
.lvl = 13,
@@ -9449,7 +9449,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Hailey[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Chandler[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Chandler[] = {
{
.iv = 0,
.lvl = 12,
@@ -9462,7 +9462,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Chandler[] = {
}
};
-const struct TrainerMonItemDefaultMoves gTrainerParty_Kaleb[] = {
+static const struct TrainerMonItemDefaultMoves sParty_Kaleb[] = {
{
.iv = 0,
.lvl = 14,
@@ -9477,7 +9477,7 @@ const struct TrainerMonItemDefaultMoves gTrainerParty_Kaleb[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Joseph[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Joseph[] = {
{
.iv = 0,
.lvl = 14,
@@ -9490,7 +9490,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Joseph[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Alyssa[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Alyssa[] = {
{
.iv = 0,
.lvl = 15,
@@ -9498,7 +9498,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Alyssa[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Marcos[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Marcos[] = {
{
.iv = 100,
.lvl = 15,
@@ -9506,7 +9506,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Marcos[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Rhett[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Rhett[] = {
{
.iv = 100,
.lvl = 15,
@@ -9514,7 +9514,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Rhett[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tyron[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Tyron[] = {
{
.iv = 0,
.lvl = 19,
@@ -9522,7 +9522,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tyron[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Celina[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Celina[] = {
{
.iv = 0,
.lvl = 18,
@@ -9530,7 +9530,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Celina[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Bianca[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Bianca[] = {
{
.iv = 0,
.lvl = 18,
@@ -9538,7 +9538,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Bianca[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Hayden[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Hayden[] = {
{
.iv = 0,
.lvl = 18,
@@ -9546,7 +9546,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Hayden[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sophie[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Sophie[] = {
{
.iv = 0,
.lvl = 17,
@@ -9559,7 +9559,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sophie[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Coby[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Coby[] = {
{
.iv = 0,
.lvl = 17,
@@ -9572,7 +9572,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Coby[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lawrence[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Lawrence[] = {
{
.iv = 0,
.lvl = 18,
@@ -9585,7 +9585,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lawrence[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Wyatt[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Wyatt[] = {
{
.iv = 0,
.lvl = 18,
@@ -9598,7 +9598,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Wyatt[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Angelina[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Angelina[] = {
{
.iv = 0,
.lvl = 18,
@@ -9611,7 +9611,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Angelina[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kai[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Kai[] = {
{
.iv = 0,
.lvl = 19,
@@ -9619,7 +9619,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kai[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Charlotte[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Charlotte[] = {
{
.iv = 0,
.lvl = 19,
@@ -9627,7 +9627,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Charlotte[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Deandre[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Deandre[] = {
{
.iv = 0,
.lvl = 14,
@@ -9645,7 +9645,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Deandre[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt38[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt38[] = {
{
.iv = 0,
.lvl = 29,
@@ -9653,7 +9653,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt38[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt39[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt39[] = {
{
.iv = 0,
.lvl = 29,
@@ -9661,7 +9661,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt39[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt40[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt40[] = {
{
.iv = 0,
.lvl = 29,
@@ -9669,7 +9669,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt40[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt41[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt41[] = {
{
.iv = 0,
.lvl = 28,
@@ -9682,7 +9682,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt41[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt42[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt42[] = {
{
.iv = 0,
.lvl = 28,
@@ -9695,7 +9695,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt42[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt43[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt43[] = {
{
.iv = 0,
.lvl = 29,
@@ -9703,7 +9703,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt43[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt44[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt44[] = {
{
.iv = 0,
.lvl = 29,
@@ -9711,7 +9711,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt44[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt45[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt45[] = {
{
.iv = 0,
.lvl = 29,
@@ -9719,7 +9719,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt45[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt46[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt46[] = {
{
.iv = 0,
.lvl = 29,
@@ -9727,7 +9727,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt46[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt47[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt47[] = {
{
.iv = 0,
.lvl = 29,
@@ -9735,7 +9735,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt47[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt48[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt48[] = {
{
.iv = 0,
.lvl = 29,
@@ -9743,7 +9743,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt48[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt49[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt49[] = {
{
.iv = 0,
.lvl = 29,
@@ -9751,7 +9751,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt49[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt50[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt50[] = {
{
.iv = 0,
.lvl = 29,
@@ -9759,7 +9759,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt50[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt51[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt51[] = {
{
.iv = 0,
.lvl = 29,
@@ -9767,7 +9767,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt51[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt52[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt52[] = {
{
.iv = 0,
.lvl = 29,
@@ -9775,7 +9775,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt52[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt53[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Grunt53[] = {
{
.iv = 0,
.lvl = 29,
@@ -9783,7 +9783,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Grunt53[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tabitha3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Tabitha3[] = {
{
.iv = 75,
.lvl = 26,
@@ -9806,7 +9806,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tabitha3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Darcy[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Darcy[] = {
{
.iv = 0,
.lvl = 33,
@@ -9819,7 +9819,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Darcy[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Maxie3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Maxie3[] = {
{
.iv = 150,
.lvl = 42,
@@ -9837,7 +9837,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Maxie3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Pete[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Pete[] = {
{
.iv = 0,
.lvl = 15,
@@ -9845,7 +9845,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Pete[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isabelle[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Isabelle[] = {
{
.iv = 0,
.lvl = 15,
@@ -9853,7 +9853,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Isabelle[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Andres1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Andres1[] = {
{
.iv = 50,
.lvl = 25,
@@ -9866,7 +9866,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Andres1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Josue[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Josue[] = {
{
.iv = 50,
.lvl = 25,
@@ -9879,7 +9879,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Josue[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Camron[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Camron[] = {
{
.iv = 0,
.lvl = 26,
@@ -9887,7 +9887,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Camron[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cory1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cory1[] = {
{
.iv = 0,
.lvl = 24,
@@ -9905,7 +9905,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cory1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Carolina[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Carolina[] = {
{
.iv = 50,
.lvl = 24,
@@ -9923,7 +9923,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Carolina[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Elijah[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Elijah[] = {
{
.iv = 0,
.lvl = 25,
@@ -9936,7 +9936,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Elijah[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Celia[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Celia[] = {
{
.iv = 0,
.lvl = 22,
@@ -9949,7 +9949,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Celia[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Bryan[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Bryan[] = {
{
.iv = 0,
.lvl = 22,
@@ -9962,7 +9962,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Bryan[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Branden[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Branden[] = {
{
.iv = 0,
.lvl = 22,
@@ -9975,7 +9975,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Branden[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Bryant[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Bryant[] = {
{
.iv = 0,
.lvl = 18,
@@ -9988,7 +9988,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Bryant[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shayla[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Shayla[] = {
{
.iv = 0,
.lvl = 18,
@@ -10001,7 +10001,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Shayla[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kyra[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Kyra[] = {
{
.iv = 0,
.lvl = 26,
@@ -10014,7 +10014,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Kyra[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jaiden[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Jaiden[] = {
{
.iv = 0,
.lvl = 26,
@@ -10027,7 +10027,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Jaiden[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Alix[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Alix[] = {
{
.iv = 0,
.lvl = 26,
@@ -10040,7 +10040,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Alix[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Helene[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Helene[] = {
{
.iv = 0,
.lvl = 26,
@@ -10053,7 +10053,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Helene[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Marlene[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Marlene[] = {
{
.iv = 0,
.lvl = 18,
@@ -10066,7 +10066,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Marlene[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Devan[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Devan[] = {
{
.iv = 0,
.lvl = 8,
@@ -10079,7 +10079,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Devan[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Johnson[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Johnson[] = {
{
.iv = 0,
.lvl = 8,
@@ -10092,7 +10092,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Johnson[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Melina[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Melina[] = {
{
.iv = 0,
.lvl = 17,
@@ -10100,7 +10100,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Melina[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brandi[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brandi[] = {
{
.iv = 0,
.lvl = 17,
@@ -10108,7 +10108,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brandi[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Aisha[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Aisha[] = {
{
.iv = 0,
.lvl = 17,
@@ -10116,7 +10116,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Aisha[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Makayla[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Makayla[] = {
{
.iv = 0,
.lvl = 33,
@@ -10129,7 +10129,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Makayla[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Fabian[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Fabian[] = {
{
.iv = 0,
.lvl = 26,
@@ -10137,7 +10137,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Fabian[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dayton[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Dayton[] = {
{
.iv = 0,
.lvl = 25,
@@ -10150,7 +10150,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Dayton[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Rachel[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Rachel[] = {
{
.iv = 0,
.lvl = 26,
@@ -10158,7 +10158,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Rachel[] = {
}
};
-const struct TrainerMonNoItemCustomMoves gTrainerParty_Leonel[] = {
+static const struct TrainerMonNoItemCustomMoves sParty_Leonel[] = {
{
.iv = 100,
.lvl = 30,
@@ -10167,7 +10167,7 @@ const struct TrainerMonNoItemCustomMoves gTrainerParty_Leonel[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Callie[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Callie[] = {
{
.iv = 0,
.lvl = 28,
@@ -10180,7 +10180,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Callie[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cale[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cale[] = {
{
.iv = 0,
.lvl = 29,
@@ -10193,7 +10193,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cale[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Myles[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Myles[] = {
{
.iv = 10,
.lvl = 25,
@@ -10226,7 +10226,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Myles[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Pat[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Pat[] = {
{
.iv = 10,
.lvl = 25,
@@ -10259,7 +10259,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Pat[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cristin1[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cristin1[] = {
{
.iv = 100,
.lvl = 29,
@@ -10272,7 +10272,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cristin1[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_May14[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_May14[] = {
{
.iv = 25,
.lvl = 13,
@@ -10285,7 +10285,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_May14[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_May15[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_May15[] = {
{
.iv = 25,
.lvl = 13,
@@ -10298,7 +10298,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_May15[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Roxanne2[] = {
+static const struct TrainerMonItemCustomMoves sParty_Roxanne2[] = {
{
.iv = 255,
.lvl = 32,
@@ -10329,7 +10329,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Roxanne2[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Roxanne3[] = {
+static const struct TrainerMonItemCustomMoves sParty_Roxanne3[] = {
{
.iv = 255,
.lvl = 37,
@@ -10367,7 +10367,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Roxanne3[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Roxanne4[] = {
+static const struct TrainerMonItemCustomMoves sParty_Roxanne4[] = {
{
.iv = 255,
.lvl = 42,
@@ -10405,7 +10405,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Roxanne4[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Roxanne5[] = {
+static const struct TrainerMonItemCustomMoves sParty_Roxanne5[] = {
{
.iv = 255,
.lvl = 47,
@@ -10450,7 +10450,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Roxanne5[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Brawly2[] = {
+static const struct TrainerMonItemCustomMoves sParty_Brawly2[] = {
{
.iv = 255,
.lvl = 33,
@@ -10481,7 +10481,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Brawly2[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Brawly3[] = {
+static const struct TrainerMonItemCustomMoves sParty_Brawly3[] = {
{
.iv = 255,
.lvl = 38,
@@ -10512,7 +10512,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Brawly3[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Brawly4[] = {
+static const struct TrainerMonItemCustomMoves sParty_Brawly4[] = {
{
.iv = 255,
.lvl = 40,
@@ -10550,7 +10550,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Brawly4[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Brawly5[] = {
+static const struct TrainerMonItemCustomMoves sParty_Brawly5[] = {
{
.iv = 255,
.lvl = 46,
@@ -10595,7 +10595,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Brawly5[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Wattson2[] = {
+static const struct TrainerMonItemCustomMoves sParty_Wattson2[] = {
{
.iv = 255,
.lvl = 36,
@@ -10626,7 +10626,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Wattson2[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Wattson3[] = {
+static const struct TrainerMonItemCustomMoves sParty_Wattson3[] = {
{
.iv = 255,
.lvl = 39,
@@ -10664,7 +10664,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Wattson3[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Wattson4[] = {
+static const struct TrainerMonItemCustomMoves sParty_Wattson4[] = {
{
.iv = 255,
.lvl = 44,
@@ -10702,7 +10702,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Wattson4[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Wattson5[] = {
+static const struct TrainerMonItemCustomMoves sParty_Wattson5[] = {
{
.iv = 255,
.lvl = 50,
@@ -10747,7 +10747,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Wattson5[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Flannery2[] = {
+static const struct TrainerMonItemCustomMoves sParty_Flannery2[] = {
{
.iv = 255,
.lvl = 38,
@@ -10778,7 +10778,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Flannery2[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Flannery3[] = {
+static const struct TrainerMonItemCustomMoves sParty_Flannery3[] = {
{
.iv = 255,
.lvl = 41,
@@ -10816,7 +10816,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Flannery3[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Flannery4[] = {
+static const struct TrainerMonItemCustomMoves sParty_Flannery4[] = {
{
.iv = 255,
.lvl = 46,
@@ -10861,7 +10861,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Flannery4[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Flannery5[] = {
+static const struct TrainerMonItemCustomMoves sParty_Flannery5[] = {
{
.iv = 255,
.lvl = 51,
@@ -10906,7 +10906,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Flannery5[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Norman2[] = {
+static const struct TrainerMonItemCustomMoves sParty_Norman2[] = {
{
.iv = 255,
.lvl = 42,
@@ -10937,7 +10937,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Norman2[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Norman3[] = {
+static const struct TrainerMonItemCustomMoves sParty_Norman3[] = {
{
.iv = 255,
.lvl = 47,
@@ -10975,7 +10975,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Norman3[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Norman4[] = {
+static const struct TrainerMonItemCustomMoves sParty_Norman4[] = {
{
.iv = 255,
.lvl = 52,
@@ -11013,7 +11013,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Norman4[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Norman5[] = {
+static const struct TrainerMonItemCustomMoves sParty_Norman5[] = {
{
.iv = 255,
.lvl = 57,
@@ -11058,7 +11058,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Norman5[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Winona2[] = {
+static const struct TrainerMonItemCustomMoves sParty_Winona2[] = {
{
.iv = 255,
.lvl = 40,
@@ -11096,7 +11096,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Winona2[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Winona3[] = {
+static const struct TrainerMonItemCustomMoves sParty_Winona3[] = {
{
.iv = 255,
.lvl = 43,
@@ -11141,7 +11141,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Winona3[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Winona4[] = {
+static const struct TrainerMonItemCustomMoves sParty_Winona4[] = {
{
.iv = 255,
.lvl = 48,
@@ -11186,7 +11186,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Winona4[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Winona5[] = {
+static const struct TrainerMonItemCustomMoves sParty_Winona5[] = {
{
.iv = 255,
.lvl = 53,
@@ -11231,7 +11231,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Winona5[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_TateAndLiza2[] = {
+static const struct TrainerMonItemCustomMoves sParty_TateAndLiza2[] = {
{
.iv = 255,
.lvl = 48,
@@ -11269,7 +11269,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_TateAndLiza2[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_TateAndLiza3[] = {
+static const struct TrainerMonItemCustomMoves sParty_TateAndLiza3[] = {
{
.iv = 255,
.lvl = 53,
@@ -11314,7 +11314,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_TateAndLiza3[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_TateAndLiza4[] = {
+static const struct TrainerMonItemCustomMoves sParty_TateAndLiza4[] = {
{
.iv = 255,
.lvl = 58,
@@ -11359,7 +11359,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_TateAndLiza4[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_TateAndLiza5[] = {
+static const struct TrainerMonItemCustomMoves sParty_TateAndLiza5[] = {
{
.iv = 255,
.lvl = 63,
@@ -11404,7 +11404,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_TateAndLiza5[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Juan2[] = {
+static const struct TrainerMonItemCustomMoves sParty_Juan2[] = {
{
.iv = 255,
.lvl = 46,
@@ -11442,7 +11442,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Juan2[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Juan3[] = {
+static const struct TrainerMonItemCustomMoves sParty_Juan3[] = {
{
.iv = 255,
.lvl = 50,
@@ -11480,7 +11480,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Juan3[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Juan4[] = {
+static const struct TrainerMonItemCustomMoves sParty_Juan4[] = {
{
.iv = 255,
.lvl = 56,
@@ -11525,7 +11525,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Juan4[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Juan5[] = {
+static const struct TrainerMonItemCustomMoves sParty_Juan5[] = {
{
.iv = 255,
.lvl = 61,
@@ -11570,7 +11570,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Juan5[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Angelo[] = {
+static const struct TrainerMonItemCustomMoves sParty_Angelo[] = {
{
.iv = 100,
.lvl = 17,
@@ -11587,7 +11587,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Angelo[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Darius[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Darius[] = {
{
.iv = 200,
.lvl = 30,
@@ -11595,7 +11595,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Darius[] = {
}
};
-const struct TrainerMonItemCustomMoves gTrainerParty_Steven[] = {
+static const struct TrainerMonItemCustomMoves sParty_Steven[] = {
{
.iv = 255,
.lvl = 77,
@@ -11640,7 +11640,7 @@ const struct TrainerMonItemCustomMoves gTrainerParty_Steven[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Anabel[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Anabel[] = {
{
.iv = 0,
.lvl = 5,
@@ -11648,7 +11648,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Anabel[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tucker[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Tucker[] = {
{
.iv = 0,
.lvl = 5,
@@ -11656,7 +11656,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Tucker[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Spenser[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Spenser[] = {
{
.iv = 0,
.lvl = 5,
@@ -11664,7 +11664,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Spenser[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Greta[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Greta[] = {
{
.iv = 0,
.lvl = 5,
@@ -11672,7 +11672,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Greta[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Noland[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Noland[] = {
{
.iv = 0,
.lvl = 5,
@@ -11680,7 +11680,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Noland[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lucy[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Lucy[] = {
{
.iv = 0,
.lvl = 5,
@@ -11688,7 +11688,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Lucy[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brandon[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brandon[] = {
{
.iv = 0,
.lvl = 5,
@@ -11696,7 +11696,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brandon[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Andres2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Andres2[] = {
{
.iv = 10,
.lvl = 31,
@@ -11709,7 +11709,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Andres2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Andres3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Andres3[] = {
{
.iv = 20,
.lvl = 33,
@@ -11727,7 +11727,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Andres3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Andres4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Andres4[] = {
{
.iv = 30,
.lvl = 35,
@@ -11745,7 +11745,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Andres4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Andres5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Andres5[] = {
{
.iv = 40,
.lvl = 37,
@@ -11763,7 +11763,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Andres5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cory2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cory2[] = {
{
.iv = 10,
.lvl = 30,
@@ -11781,7 +11781,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cory2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cory3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cory3[] = {
{
.iv = 20,
.lvl = 32,
@@ -11799,7 +11799,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cory3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cory4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cory4[] = {
{
.iv = 30,
.lvl = 34,
@@ -11817,7 +11817,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cory4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cory5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cory5[] = {
{
.iv = 40,
.lvl = 36,
@@ -11835,7 +11835,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cory5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Pablo2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Pablo2[] = {
{
.iv = 10,
.lvl = 37,
@@ -11848,7 +11848,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Pablo2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Pablo3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Pablo3[] = {
{
.iv = 20,
.lvl = 39,
@@ -11866,7 +11866,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Pablo3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Pablo4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Pablo4[] = {
{
.iv = 30,
.lvl = 41,
@@ -11884,7 +11884,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Pablo4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Pablo5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Pablo5[] = {
{
.iv = 40,
.lvl = 43,
@@ -11902,7 +11902,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Pablo5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Koji2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Koji2[] = {
{
.iv = 10,
.lvl = 37,
@@ -11915,7 +11915,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Koji2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Koji3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Koji3[] = {
{
.iv = 20,
.lvl = 39,
@@ -11933,7 +11933,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Koji3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Koji4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Koji4[] = {
{
.iv = 30,
.lvl = 41,
@@ -11951,7 +11951,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Koji4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Koji5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Koji5[] = {
{
.iv = 40,
.lvl = 43,
@@ -11969,7 +11969,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Koji5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cristin2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cristin2[] = {
{
.iv = 110,
.lvl = 35,
@@ -11982,7 +11982,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cristin2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cristin3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cristin3[] = {
{
.iv = 120,
.lvl = 37,
@@ -12000,7 +12000,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cristin3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cristin4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cristin4[] = {
{
.iv = 130,
.lvl = 39,
@@ -12018,7 +12018,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cristin4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cristin5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Cristin5[] = {
{
.iv = 140,
.lvl = 41,
@@ -12036,7 +12036,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Cristin5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Fernando2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Fernando2[] = {
{
.iv = 10,
.lvl = 35,
@@ -12054,7 +12054,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Fernando2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Fernando3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Fernando3[] = {
{
.iv = 20,
.lvl = 37,
@@ -12072,7 +12072,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Fernando3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Fernando4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Fernando4[] = {
{
.iv = 30,
.lvl = 39,
@@ -12090,7 +12090,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Fernando4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Fernando5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Fernando5[] = {
{
.iv = 40,
.lvl = 41,
@@ -12108,7 +12108,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Fernando5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sawyer2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Sawyer2[] = {
{
.iv = 10,
.lvl = 26,
@@ -12121,7 +12121,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sawyer2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sawyer3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Sawyer3[] = {
{
.iv = 20,
.lvl = 28,
@@ -12139,7 +12139,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sawyer3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sawyer4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Sawyer4[] = {
{
.iv = 30,
.lvl = 30,
@@ -12157,7 +12157,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sawyer4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sawyer5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Sawyer5[] = {
{
.iv = 40,
.lvl = 33,
@@ -12175,7 +12175,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Sawyer5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Gabrielle2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Gabrielle2[] = {
{
.iv = 10,
.lvl = 31,
@@ -12208,7 +12208,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Gabrielle2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Gabrielle3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Gabrielle3[] = {
{
.iv = 20,
.lvl = 33,
@@ -12241,7 +12241,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Gabrielle3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Gabrielle4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Gabrielle4[] = {
{
.iv = 30,
.lvl = 35,
@@ -12274,7 +12274,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Gabrielle4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Gabrielle5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Gabrielle5[] = {
{
.iv = 40,
.lvl = 37,
@@ -12307,7 +12307,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Gabrielle5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Thalia2[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Thalia2[] = {
{
.iv = 10,
.lvl = 34,
@@ -12320,7 +12320,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Thalia2[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Thalia3[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Thalia3[] = {
{
.iv = 20,
.lvl = 36,
@@ -12338,7 +12338,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Thalia3[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Thalia4[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Thalia4[] = {
{
.iv = 30,
.lvl = 38,
@@ -12356,7 +12356,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Thalia4[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Thalia5[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Thalia5[] = {
{
.iv = 40,
.lvl = 40,
@@ -12374,7 +12374,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Thalia5[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Mariela[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Mariela[] = {
{
.iv = 0,
.lvl = 41,
@@ -12382,7 +12382,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Mariela[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Alvaro[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Alvaro[] = {
{
.iv = 0,
.lvl = 41,
@@ -12395,7 +12395,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Alvaro[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Everett[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Everett[] = {
{
.iv = 0,
.lvl = 41,
@@ -12403,7 +12403,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Everett[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Red[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Red[] = {
{
.iv = 0,
.lvl = 5,
@@ -12411,7 +12411,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Red[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Leaf[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Leaf[] = {
{
.iv = 0,
.lvl = 5,
@@ -12419,7 +12419,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Leaf[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan16[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_Brendan16[] = {
{
.iv = 0,
.lvl = 5,
@@ -12427,7 +12427,7 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_Brendan16[] = {
}
};
-const struct TrainerMonNoItemDefaultMoves gTrainerParty_May16[] = {
+static const struct TrainerMonNoItemDefaultMoves sParty_May16[] = {
{
.iv = 0,
.lvl = 5,
diff --git a/src/data/trainers.h b/src/data/trainers.h
index 7ec297eb3..5a92926cc 100644
--- a/src/data/trainers.h
+++ b/src/data/trainers.h
@@ -24,7 +24,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Sawyer1 }
+ .party = {.NoItemDefaultMoves = sParty_Sawyer1 }
},
[TRAINER_GRUNT_1] =
@@ -38,7 +38,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt1 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt1 }
},
[TRAINER_GRUNT_2] =
@@ -52,7 +52,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt2 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt2 }
},
[TRAINER_GRUNT_3] =
@@ -66,7 +66,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt3 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt3 }
},
[TRAINER_GRUNT_4] =
@@ -80,7 +80,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt4 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt4 }
},
[TRAINER_GRUNT_5] =
@@ -94,7 +94,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt5 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt5 }
},
[TRAINER_GRUNT_6] =
@@ -108,7 +108,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt6 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt6 }
},
[TRAINER_GRUNT_7] =
@@ -122,7 +122,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt7 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt7 }
},
[TRAINER_GABRIELLE_1] =
@@ -136,7 +136,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 6,
- .party = {.NoItemDefaultMoves = gTrainerParty_Gabrielle1 }
+ .party = {.NoItemDefaultMoves = sParty_Gabrielle1 }
},
[TRAINER_GRUNT_8] =
@@ -150,7 +150,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt8 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt8 }
},
[TRAINER_MARCEL] =
@@ -164,7 +164,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Marcel }
+ .party = {.NoItemDefaultMoves = sParty_Marcel }
},
[TRAINER_ALBERTO] =
@@ -178,7 +178,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Alberto }
+ .party = {.NoItemDefaultMoves = sParty_Alberto }
},
[TRAINER_ED] =
@@ -192,7 +192,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Ed }
+ .party = {.NoItemDefaultMoves = sParty_Ed }
},
[TRAINER_GRUNT_9] =
@@ -206,7 +206,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt9 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt9 }
},
[TRAINER_DECLAN] =
@@ -220,7 +220,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Declan }
+ .party = {.NoItemDefaultMoves = sParty_Declan }
},
[TRAINER_GRUNT_10] =
@@ -234,7 +234,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt10 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt10 }
},
[TRAINER_GRUNT_11] =
@@ -248,7 +248,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt11 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt11 }
},
[TRAINER_GRUNT_12] =
@@ -262,7 +262,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt12 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt12 }
},
[TRAINER_GRUNT_13] =
@@ -276,7 +276,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt13 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt13 }
},
[TRAINER_GRUNT_14] =
@@ -290,7 +290,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt14 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt14 }
},
[TRAINER_GRUNT_15] =
@@ -304,7 +304,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt15 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt15 }
},
[TRAINER_GRUNT_16] =
@@ -318,7 +318,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt16 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt16 }
},
[TRAINER_GRUNT_17] =
@@ -332,7 +332,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt17 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt17 }
},
[TRAINER_GRUNT_18] =
@@ -346,7 +346,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt18 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt18 }
},
[TRAINER_GRUNT_19] =
@@ -360,7 +360,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt19 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt19 }
},
[TRAINER_GRUNT_20] =
@@ -374,7 +374,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt20 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt20 }
},
[TRAINER_GRUNT_21] =
@@ -388,7 +388,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt21 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt21 }
},
[TRAINER_GRUNT_22] =
@@ -402,7 +402,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt22 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt22 }
},
[TRAINER_FREDRICK] =
@@ -416,7 +416,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Fredrick }
+ .party = {.NoItemDefaultMoves = sParty_Fredrick }
},
[TRAINER_MATT] =
@@ -430,7 +430,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Matt }
+ .party = {.NoItemDefaultMoves = sParty_Matt }
},
[TRAINER_ZANDER] =
@@ -444,7 +444,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Zander }
+ .party = {.NoItemDefaultMoves = sParty_Zander }
},
[TRAINER_SHELLY_1] =
@@ -458,7 +458,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Shelly1 }
+ .party = {.NoItemDefaultMoves = sParty_Shelly1 }
},
[TRAINER_SHELLY_2] =
@@ -472,7 +472,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Shelly2 }
+ .party = {.NoItemDefaultMoves = sParty_Shelly2 }
},
[TRAINER_ARCHIE] =
@@ -486,7 +486,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Archie }
+ .party = {.NoItemDefaultMoves = sParty_Archie }
},
[TRAINER_LEAH] =
@@ -500,7 +500,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Leah }
+ .party = {.NoItemDefaultMoves = sParty_Leah }
},
[TRAINER_DAISY] =
@@ -514,7 +514,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Daisy }
+ .party = {.NoItemDefaultMoves = sParty_Daisy }
},
[TRAINER_ROSE_1] =
@@ -528,7 +528,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Rose1 }
+ .party = {.NoItemDefaultMoves = sParty_Rose1 }
},
[TRAINER_FELIX] =
@@ -542,7 +542,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Felix }
+ .party = {.NoItemCustomMoves = sParty_Felix }
},
[TRAINER_VIOLET] =
@@ -556,7 +556,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Violet }
+ .party = {.NoItemDefaultMoves = sParty_Violet }
},
[TRAINER_ROSE_2] =
@@ -570,7 +570,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Rose2 }
+ .party = {.NoItemDefaultMoves = sParty_Rose2 }
},
[TRAINER_ROSE_3] =
@@ -584,7 +584,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Rose3 }
+ .party = {.NoItemDefaultMoves = sParty_Rose3 }
},
[TRAINER_ROSE_4] =
@@ -598,7 +598,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Rose4 }
+ .party = {.NoItemDefaultMoves = sParty_Rose4 }
},
[TRAINER_ROSE_5] =
@@ -612,7 +612,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Rose5 }
+ .party = {.NoItemDefaultMoves = sParty_Rose5 }
},
[TRAINER_DUSTY_1] =
@@ -626,7 +626,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Dusty1 }
+ .party = {.NoItemCustomMoves = sParty_Dusty1 }
},
[TRAINER_CHIP] =
@@ -640,7 +640,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemCustomMoves = gTrainerParty_Chip }
+ .party = {.NoItemCustomMoves = sParty_Chip }
},
[TRAINER_FOSTER] =
@@ -654,7 +654,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Foster }
+ .party = {.NoItemCustomMoves = sParty_Foster }
},
[TRAINER_DUSTY_2] =
@@ -668,7 +668,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Dusty2 }
+ .party = {.NoItemCustomMoves = sParty_Dusty2 }
},
[TRAINER_DUSTY_3] =
@@ -682,7 +682,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Dusty3 }
+ .party = {.NoItemCustomMoves = sParty_Dusty3 }
},
[TRAINER_DUSTY_4] =
@@ -696,7 +696,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Dusty4 }
+ .party = {.NoItemCustomMoves = sParty_Dusty4 }
},
[TRAINER_DUSTY_5] =
@@ -710,7 +710,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Dusty5 }
+ .party = {.NoItemCustomMoves = sParty_Dusty5 }
},
[TRAINER_GABBY_AND_TY_1] =
@@ -724,7 +724,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_GabbyAndTy1 }
+ .party = {.NoItemDefaultMoves = sParty_GabbyAndTy1 }
},
[TRAINER_GABBY_AND_TY_2] =
@@ -738,7 +738,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_GabbyAndTy2 }
+ .party = {.NoItemDefaultMoves = sParty_GabbyAndTy2 }
},
[TRAINER_GABBY_AND_TY_3] =
@@ -752,7 +752,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_GabbyAndTy3 }
+ .party = {.NoItemDefaultMoves = sParty_GabbyAndTy3 }
},
[TRAINER_GABBY_AND_TY_4] =
@@ -766,7 +766,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_GabbyAndTy4 }
+ .party = {.NoItemDefaultMoves = sParty_GabbyAndTy4 }
},
[TRAINER_GABBY_AND_TY_5] =
@@ -780,7 +780,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_GabbyAndTy5 }
+ .party = {.NoItemDefaultMoves = sParty_GabbyAndTy5 }
},
[TRAINER_GABBY_AND_TY_6] =
@@ -794,7 +794,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_GabbyAndTy6 }
+ .party = {.NoItemCustomMoves = sParty_GabbyAndTy6 }
},
[TRAINER_LOLA_1] =
@@ -808,7 +808,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Lola1 }
+ .party = {.NoItemDefaultMoves = sParty_Lola1 }
},
[TRAINER_AUSTINA] =
@@ -822,7 +822,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Austina }
+ .party = {.NoItemDefaultMoves = sParty_Austina }
},
[TRAINER_GWEN] =
@@ -836,7 +836,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Gwen }
+ .party = {.NoItemDefaultMoves = sParty_Gwen }
},
[TRAINER_LOLA_2] =
@@ -850,7 +850,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Lola2 }
+ .party = {.NoItemDefaultMoves = sParty_Lola2 }
},
[TRAINER_LOLA_3] =
@@ -864,7 +864,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Lola3 }
+ .party = {.NoItemDefaultMoves = sParty_Lola3 }
},
[TRAINER_LOLA_4] =
@@ -878,7 +878,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Lola4 }
+ .party = {.NoItemDefaultMoves = sParty_Lola4 }
},
[TRAINER_LOLA_5] =
@@ -892,7 +892,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Lola5 }
+ .party = {.NoItemDefaultMoves = sParty_Lola5 }
},
[TRAINER_RICKY_1] =
@@ -906,7 +906,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Ricky1 }
+ .party = {.NoItemCustomMoves = sParty_Ricky1 }
},
[TRAINER_SIMON] =
@@ -920,7 +920,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Simon }
+ .party = {.NoItemDefaultMoves = sParty_Simon }
},
[TRAINER_CHARLIE] =
@@ -934,7 +934,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Charlie }
+ .party = {.NoItemDefaultMoves = sParty_Charlie }
},
[TRAINER_RICKY_2] =
@@ -948,7 +948,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Ricky2 }
+ .party = {.NoItemCustomMoves = sParty_Ricky2 }
},
[TRAINER_RICKY_3] =
@@ -962,7 +962,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Ricky3 }
+ .party = {.NoItemCustomMoves = sParty_Ricky3 }
},
[TRAINER_RICKY_4] =
@@ -976,7 +976,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Ricky4 }
+ .party = {.NoItemCustomMoves = sParty_Ricky4 }
},
[TRAINER_RICKY_5] =
@@ -990,7 +990,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Ricky5 }
+ .party = {.NoItemCustomMoves = sParty_Ricky5 }
},
[TRAINER_RANDALL] =
@@ -1004,7 +1004,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.ItemCustomMoves = gTrainerParty_Randall }
+ .party = {.ItemCustomMoves = sParty_Randall }
},
[TRAINER_PARKER] =
@@ -1018,7 +1018,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.ItemCustomMoves = gTrainerParty_Parker }
+ .party = {.ItemCustomMoves = sParty_Parker }
},
[TRAINER_GEORGE] =
@@ -1032,7 +1032,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.ItemCustomMoves = gTrainerParty_George }
+ .party = {.ItemCustomMoves = sParty_George }
},
[TRAINER_BERKE] =
@@ -1046,7 +1046,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.ItemCustomMoves = gTrainerParty_Berke }
+ .party = {.ItemCustomMoves = sParty_Berke }
},
[TRAINER_BRAXTON] =
@@ -1060,7 +1060,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 5,
- .party = {.NoItemCustomMoves = gTrainerParty_Braxton }
+ .party = {.NoItemCustomMoves = sParty_Braxton }
},
[TRAINER_VINCENT] =
@@ -1074,7 +1074,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Vincent }
+ .party = {.NoItemDefaultMoves = sParty_Vincent }
},
[TRAINER_LEROY] =
@@ -1088,7 +1088,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Leroy }
+ .party = {.NoItemDefaultMoves = sParty_Leroy }
},
[TRAINER_WILTON_1] =
@@ -1102,7 +1102,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Wilton1 }
+ .party = {.NoItemDefaultMoves = sParty_Wilton1 }
},
[TRAINER_EDGAR] =
@@ -1116,7 +1116,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Edgar }
+ .party = {.NoItemDefaultMoves = sParty_Edgar }
},
[TRAINER_ALBERT] =
@@ -1130,7 +1130,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Albert }
+ .party = {.NoItemDefaultMoves = sParty_Albert }
},
[TRAINER_SAMUEL] =
@@ -1144,7 +1144,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Samuel }
+ .party = {.NoItemDefaultMoves = sParty_Samuel }
},
[TRAINER_VITO] =
@@ -1158,7 +1158,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 4,
- .party = {.NoItemDefaultMoves = gTrainerParty_Vito }
+ .party = {.NoItemDefaultMoves = sParty_Vito }
},
[TRAINER_OWEN] =
@@ -1172,7 +1172,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Owen }
+ .party = {.NoItemDefaultMoves = sParty_Owen }
},
[TRAINER_WILTON_2] =
@@ -1186,7 +1186,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Wilton2 }
+ .party = {.NoItemDefaultMoves = sParty_Wilton2 }
},
[TRAINER_WILTON_3] =
@@ -1200,7 +1200,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Wilton3 }
+ .party = {.NoItemDefaultMoves = sParty_Wilton3 }
},
[TRAINER_WILTON_4] =
@@ -1214,7 +1214,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Wilton4 }
+ .party = {.NoItemDefaultMoves = sParty_Wilton4 }
},
[TRAINER_WILTON_5] =
@@ -1228,7 +1228,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Wilton5 }
+ .party = {.NoItemDefaultMoves = sParty_Wilton5 }
},
[TRAINER_WARREN] =
@@ -1242,7 +1242,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Warren }
+ .party = {.NoItemDefaultMoves = sParty_Warren }
},
[TRAINER_MARY] =
@@ -1256,7 +1256,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.ItemCustomMoves = gTrainerParty_Mary }
+ .party = {.ItemCustomMoves = sParty_Mary }
},
[TRAINER_ALEXIA] =
@@ -1270,7 +1270,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.ItemCustomMoves = gTrainerParty_Alexia }
+ .party = {.ItemCustomMoves = sParty_Alexia }
},
[TRAINER_JODY] =
@@ -1284,7 +1284,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
.partySize = 1,
- .party = {.ItemCustomMoves = gTrainerParty_Jody }
+ .party = {.ItemCustomMoves = sParty_Jody }
},
[TRAINER_WENDY] =
@@ -1298,7 +1298,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
.partySize = 3,
- .party = {.NoItemCustomMoves = gTrainerParty_Wendy }
+ .party = {.NoItemCustomMoves = sParty_Wendy }
},
[TRAINER_KEIRA] =
@@ -1312,7 +1312,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Keira }
+ .party = {.NoItemDefaultMoves = sParty_Keira }
},
[TRAINER_BROOKE_1] =
@@ -1326,7 +1326,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brooke1 }
+ .party = {.NoItemDefaultMoves = sParty_Brooke1 }
},
[TRAINER_JENNIFER] =
@@ -1340,7 +1340,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jennifer }
+ .party = {.NoItemDefaultMoves = sParty_Jennifer }
},
[TRAINER_HOPE] =
@@ -1354,7 +1354,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Hope }
+ .party = {.NoItemDefaultMoves = sParty_Hope }
},
[TRAINER_SHANNON] =
@@ -1368,7 +1368,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Shannon }
+ .party = {.NoItemDefaultMoves = sParty_Shannon }
},
[TRAINER_MICHELLE] =
@@ -1382,7 +1382,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Michelle }
+ .party = {.NoItemDefaultMoves = sParty_Michelle }
},
[TRAINER_CAROLINE] =
@@ -1396,7 +1396,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Caroline }
+ .party = {.NoItemDefaultMoves = sParty_Caroline }
},
[TRAINER_JULIE] =
@@ -1410,7 +1410,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Julie }
+ .party = {.NoItemDefaultMoves = sParty_Julie }
},
[TRAINER_BROOKE_2] =
@@ -1424,7 +1424,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brooke2 }
+ .party = {.NoItemDefaultMoves = sParty_Brooke2 }
},
[TRAINER_BROOKE_3] =
@@ -1438,7 +1438,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brooke3 }
+ .party = {.NoItemDefaultMoves = sParty_Brooke3 }
},
[TRAINER_BROOKE_4] =
@@ -1452,7 +1452,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brooke4 }
+ .party = {.NoItemDefaultMoves = sParty_Brooke4 }
},
[TRAINER_BROOKE_5] =
@@ -1466,7 +1466,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brooke5 }
+ .party = {.NoItemDefaultMoves = sParty_Brooke5 }
},
[TRAINER_PATRICIA] =
@@ -1480,7 +1480,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Patricia }
+ .party = {.NoItemDefaultMoves = sParty_Patricia }
},
[TRAINER_KINDRA] =
@@ -1494,7 +1494,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Kindra }
+ .party = {.NoItemDefaultMoves = sParty_Kindra }
},
[TRAINER_TAMMY] =
@@ -1508,7 +1508,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Tammy }
+ .party = {.NoItemDefaultMoves = sParty_Tammy }
},
[TRAINER_VALERIE_1] =
@@ -1522,7 +1522,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Valerie1 }
+ .party = {.NoItemDefaultMoves = sParty_Valerie1 }
},
[TRAINER_TASHA] =
@@ -1536,7 +1536,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Tasha }
+ .party = {.NoItemDefaultMoves = sParty_Tasha }
},
[TRAINER_VALERIE_2] =
@@ -1550,7 +1550,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Valerie2 }
+ .party = {.NoItemDefaultMoves = sParty_Valerie2 }
},
[TRAINER_VALERIE_3] =
@@ -1564,7 +1564,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Valerie3 }
+ .party = {.NoItemDefaultMoves = sParty_Valerie3 }
},
[TRAINER_VALERIE_4] =
@@ -1578,7 +1578,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Valerie4 }
+ .party = {.NoItemDefaultMoves = sParty_Valerie4 }
},
[TRAINER_VALERIE_5] =
@@ -1592,7 +1592,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Valerie5 }
+ .party = {.NoItemDefaultMoves = sParty_Valerie5 }
},
[TRAINER_CINDY_1] =
@@ -1606,7 +1606,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.ItemDefaultMoves = gTrainerParty_Cindy1 }
+ .party = {.ItemDefaultMoves = sParty_Cindy1 }
},
[TRAINER_DAPHNE] =
@@ -1620,7 +1620,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.ItemCustomMoves = gTrainerParty_Daphne }
+ .party = {.ItemCustomMoves = sParty_Daphne }
},
[TRAINER_GRUNT_23] =
@@ -1634,7 +1634,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt23 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt23 }
},
[TRAINER_CINDY_2] =
@@ -1648,7 +1648,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.ItemCustomMoves = gTrainerParty_Cindy2 }
+ .party = {.ItemCustomMoves = sParty_Cindy2 }
},
[TRAINER_BRIANNA] =
@@ -1662,7 +1662,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.ItemDefaultMoves = gTrainerParty_Brianna }
+ .party = {.ItemDefaultMoves = sParty_Brianna }
},
[TRAINER_NAOMI] =
@@ -1676,7 +1676,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.ItemDefaultMoves = gTrainerParty_Naomi }
+ .party = {.ItemDefaultMoves = sParty_Naomi }
},
[TRAINER_CINDY_3] =
@@ -1690,7 +1690,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.ItemDefaultMoves = gTrainerParty_Cindy3 }
+ .party = {.ItemDefaultMoves = sParty_Cindy3 }
},
[TRAINER_CINDY_4] =
@@ -1704,7 +1704,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.ItemDefaultMoves = gTrainerParty_Cindy4 }
+ .party = {.ItemDefaultMoves = sParty_Cindy4 }
},
[TRAINER_CINDY_5] =
@@ -1718,7 +1718,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.ItemDefaultMoves = gTrainerParty_Cindy5 }
+ .party = {.ItemDefaultMoves = sParty_Cindy5 }
},
[TRAINER_CINDY_6] =
@@ -1732,7 +1732,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.ItemCustomMoves = gTrainerParty_Cindy6 }
+ .party = {.ItemCustomMoves = sParty_Cindy6 }
},
[TRAINER_MELISSA] =
@@ -1746,7 +1746,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Melissa }
+ .party = {.NoItemDefaultMoves = sParty_Melissa }
},
[TRAINER_SHEILA] =
@@ -1760,7 +1760,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Sheila }
+ .party = {.NoItemDefaultMoves = sParty_Sheila }
},
[TRAINER_SHIRLEY] =
@@ -1774,7 +1774,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Shirley }
+ .party = {.NoItemDefaultMoves = sParty_Shirley }
},
[TRAINER_JESSICA_1] =
@@ -1788,7 +1788,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Jessica1 }
+ .party = {.NoItemCustomMoves = sParty_Jessica1 }
},
[TRAINER_CONNIE] =
@@ -1802,7 +1802,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Connie }
+ .party = {.NoItemDefaultMoves = sParty_Connie }
},
[TRAINER_BRIDGET] =
@@ -1816,7 +1816,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Bridget }
+ .party = {.NoItemDefaultMoves = sParty_Bridget }
},
[TRAINER_OLIVIA] =
@@ -1830,7 +1830,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemCustomMoves = gTrainerParty_Olivia }
+ .party = {.NoItemCustomMoves = sParty_Olivia }
},
[TRAINER_TIFFANY] =
@@ -1844,7 +1844,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Tiffany }
+ .party = {.NoItemDefaultMoves = sParty_Tiffany }
},
[TRAINER_JESSICA_2] =
@@ -1858,7 +1858,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Jessica2 }
+ .party = {.NoItemCustomMoves = sParty_Jessica2 }
},
[TRAINER_JESSICA_3] =
@@ -1872,7 +1872,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Jessica3 }
+ .party = {.NoItemCustomMoves = sParty_Jessica3 }
},
[TRAINER_JESSICA_4] =
@@ -1886,7 +1886,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Jessica4 }
+ .party = {.NoItemCustomMoves = sParty_Jessica4 }
},
[TRAINER_JESSICA_5] =
@@ -1900,7 +1900,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Jessica5 }
+ .party = {.NoItemCustomMoves = sParty_Jessica5 }
},
[TRAINER_WINSTON_1] =
@@ -1914,7 +1914,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.ItemDefaultMoves = gTrainerParty_Winston1 }
+ .party = {.ItemDefaultMoves = sParty_Winston1 }
},
[TRAINER_MOLLIE] =
@@ -1928,7 +1928,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Mollie }
+ .party = {.NoItemDefaultMoves = sParty_Mollie }
},
[TRAINER_GARRET] =
@@ -1942,7 +1942,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.ItemDefaultMoves = gTrainerParty_Garret }
+ .party = {.ItemDefaultMoves = sParty_Garret }
},
[TRAINER_WINSTON_2] =
@@ -1956,7 +1956,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.ItemDefaultMoves = gTrainerParty_Winston2 }
+ .party = {.ItemDefaultMoves = sParty_Winston2 }
},
[TRAINER_WINSTON_3] =
@@ -1970,7 +1970,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.ItemDefaultMoves = gTrainerParty_Winston3 }
+ .party = {.ItemDefaultMoves = sParty_Winston3 }
},
[TRAINER_WINSTON_4] =
@@ -1984,7 +1984,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.ItemDefaultMoves = gTrainerParty_Winston4 }
+ .party = {.ItemDefaultMoves = sParty_Winston4 }
},
[TRAINER_WINSTON_5] =
@@ -1998,7 +1998,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.ItemCustomMoves = gTrainerParty_Winston5 }
+ .party = {.ItemCustomMoves = sParty_Winston5 }
},
[TRAINER_STEVE_1] =
@@ -2012,7 +2012,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Steve1 }
+ .party = {.NoItemDefaultMoves = sParty_Steve1 }
},
[TRAINER_THALIA_1] =
@@ -2026,7 +2026,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Thalia1 }
+ .party = {.NoItemDefaultMoves = sParty_Thalia1 }
},
[TRAINER_MARK] =
@@ -2040,7 +2040,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Mark }
+ .party = {.NoItemDefaultMoves = sParty_Mark }
},
[TRAINER_GRUNT_24] =
@@ -2054,7 +2054,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt24 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt24 }
},
[TRAINER_STEVE_2] =
@@ -2068,7 +2068,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Steve2 }
+ .party = {.NoItemDefaultMoves = sParty_Steve2 }
},
[TRAINER_STEVE_3] =
@@ -2082,7 +2082,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Steve3 }
+ .party = {.NoItemDefaultMoves = sParty_Steve3 }
},
[TRAINER_STEVE_4] =
@@ -2096,7 +2096,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Steve4 }
+ .party = {.NoItemDefaultMoves = sParty_Steve4 }
},
[TRAINER_STEVE_5] =
@@ -2110,7 +2110,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Steve5 }
+ .party = {.NoItemDefaultMoves = sParty_Steve5 }
},
[TRAINER_LUIS] =
@@ -2124,7 +2124,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Luis }
+ .party = {.NoItemDefaultMoves = sParty_Luis }
},
[TRAINER_DOMINIK] =
@@ -2138,7 +2138,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Dominik }
+ .party = {.NoItemDefaultMoves = sParty_Dominik }
},
[TRAINER_DOUGLAS] =
@@ -2152,7 +2152,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Douglas }
+ .party = {.NoItemDefaultMoves = sParty_Douglas }
},
[TRAINER_DARRIN] =
@@ -2166,7 +2166,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Darrin }
+ .party = {.NoItemDefaultMoves = sParty_Darrin }
},
[TRAINER_TONY_1] =
@@ -2180,7 +2180,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Tony1 }
+ .party = {.NoItemDefaultMoves = sParty_Tony1 }
},
[TRAINER_JEROME] =
@@ -2194,7 +2194,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jerome }
+ .party = {.NoItemDefaultMoves = sParty_Jerome }
},
[TRAINER_MATTHEW] =
@@ -2208,7 +2208,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Matthew }
+ .party = {.NoItemDefaultMoves = sParty_Matthew }
},
[TRAINER_DAVID] =
@@ -2222,7 +2222,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_David }
+ .party = {.NoItemDefaultMoves = sParty_David }
},
[TRAINER_SPENCER] =
@@ -2236,7 +2236,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Spencer }
+ .party = {.NoItemDefaultMoves = sParty_Spencer }
},
[TRAINER_ROLAND] =
@@ -2250,7 +2250,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Roland }
+ .party = {.NoItemDefaultMoves = sParty_Roland }
},
[TRAINER_NOLEN] =
@@ -2264,7 +2264,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Nolen }
+ .party = {.NoItemDefaultMoves = sParty_Nolen }
},
[TRAINER_STAN] =
@@ -2278,7 +2278,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Stan }
+ .party = {.NoItemDefaultMoves = sParty_Stan }
},
[TRAINER_BARRY] =
@@ -2292,7 +2292,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Barry }
+ .party = {.NoItemDefaultMoves = sParty_Barry }
},
[TRAINER_DEAN] =
@@ -2306,7 +2306,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Dean }
+ .party = {.NoItemDefaultMoves = sParty_Dean }
},
[TRAINER_RODNEY] =
@@ -2320,7 +2320,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Rodney }
+ .party = {.NoItemDefaultMoves = sParty_Rodney }
},
[TRAINER_RICHARD] =
@@ -2334,7 +2334,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Richard }
+ .party = {.NoItemDefaultMoves = sParty_Richard }
},
[TRAINER_HERMAN] =
@@ -2348,7 +2348,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Herman }
+ .party = {.NoItemDefaultMoves = sParty_Herman }
},
[TRAINER_SANTIAGO] =
@@ -2362,7 +2362,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Santiago }
+ .party = {.NoItemDefaultMoves = sParty_Santiago }
},
[TRAINER_GILBERT] =
@@ -2376,7 +2376,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Gilbert }
+ .party = {.NoItemDefaultMoves = sParty_Gilbert }
},
[TRAINER_FRANKLIN] =
@@ -2390,7 +2390,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Franklin }
+ .party = {.NoItemDefaultMoves = sParty_Franklin }
},
[TRAINER_KEVIN] =
@@ -2404,7 +2404,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Kevin }
+ .party = {.NoItemDefaultMoves = sParty_Kevin }
},
[TRAINER_JACK] =
@@ -2418,7 +2418,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jack }
+ .party = {.NoItemDefaultMoves = sParty_Jack }
},
[TRAINER_DUDLEY] =
@@ -2432,7 +2432,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Dudley }
+ .party = {.NoItemDefaultMoves = sParty_Dudley }
},
[TRAINER_CHAD] =
@@ -2446,7 +2446,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Chad }
+ .party = {.NoItemDefaultMoves = sParty_Chad }
},
[TRAINER_TONY_2] =
@@ -2460,7 +2460,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Tony2 }
+ .party = {.NoItemDefaultMoves = sParty_Tony2 }
},
[TRAINER_TONY_3] =
@@ -2474,7 +2474,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Tony3 }
+ .party = {.NoItemDefaultMoves = sParty_Tony3 }
},
[TRAINER_TONY_4] =
@@ -2488,7 +2488,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Tony4 }
+ .party = {.NoItemDefaultMoves = sParty_Tony4 }
},
[TRAINER_TONY_5] =
@@ -2502,7 +2502,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Tony5 }
+ .party = {.NoItemDefaultMoves = sParty_Tony5 }
},
[TRAINER_TAKAO] =
@@ -2516,7 +2516,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Takao }
+ .party = {.NoItemDefaultMoves = sParty_Takao }
},
[TRAINER_HITOSHI] =
@@ -2530,7 +2530,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Hitoshi }
+ .party = {.NoItemDefaultMoves = sParty_Hitoshi }
},
[TRAINER_KIYO] =
@@ -2544,7 +2544,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Kiyo }
+ .party = {.NoItemDefaultMoves = sParty_Kiyo }
},
[TRAINER_KOICHI] =
@@ -2558,7 +2558,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Koichi }
+ .party = {.NoItemDefaultMoves = sParty_Koichi }
},
[TRAINER_NOB_1] =
@@ -2572,7 +2572,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Nob1 }
+ .party = {.NoItemDefaultMoves = sParty_Nob1 }
},
[TRAINER_NOB_2] =
@@ -2586,7 +2586,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Nob2 }
+ .party = {.NoItemDefaultMoves = sParty_Nob2 }
},
[TRAINER_NOB_3] =
@@ -2600,7 +2600,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Nob3 }
+ .party = {.NoItemDefaultMoves = sParty_Nob3 }
},
[TRAINER_NOB_4] =
@@ -2614,7 +2614,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Nob4 }
+ .party = {.NoItemDefaultMoves = sParty_Nob4 }
},
[TRAINER_NOB_5] =
@@ -2628,7 +2628,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 4,
- .party = {.ItemDefaultMoves = gTrainerParty_Nob5 }
+ .party = {.ItemDefaultMoves = sParty_Nob5 }
},
[TRAINER_YUJI] =
@@ -2642,7 +2642,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Yuji }
+ .party = {.NoItemDefaultMoves = sParty_Yuji }
},
[TRAINER_DAISUKE] =
@@ -2656,7 +2656,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Daisuke }
+ .party = {.NoItemDefaultMoves = sParty_Daisuke }
},
[TRAINER_ATSUSHI] =
@@ -2670,7 +2670,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Atsushi }
+ .party = {.NoItemDefaultMoves = sParty_Atsushi }
},
[TRAINER_KIRK] =
@@ -2684,7 +2684,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Kirk }
+ .party = {.NoItemCustomMoves = sParty_Kirk }
},
[TRAINER_GRUNT_25] =
@@ -2698,7 +2698,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt25 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt25 }
},
[TRAINER_GRUNT_26] =
@@ -2712,7 +2712,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt26 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt26 }
},
[TRAINER_SHAWN] =
@@ -2726,7 +2726,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Shawn }
+ .party = {.NoItemDefaultMoves = sParty_Shawn }
},
[TRAINER_FERNANDO_1] =
@@ -2740,7 +2740,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Fernando1 }
+ .party = {.NoItemDefaultMoves = sParty_Fernando1 }
},
[TRAINER_DALTON_1] =
@@ -2754,7 +2754,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Dalton1 }
+ .party = {.NoItemDefaultMoves = sParty_Dalton1 }
},
[TRAINER_DALTON_2] =
@@ -2768,7 +2768,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Dalton2 }
+ .party = {.NoItemDefaultMoves = sParty_Dalton2 }
},
[TRAINER_DALTON_3] =
@@ -2782,7 +2782,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Dalton3 }
+ .party = {.NoItemDefaultMoves = sParty_Dalton3 }
},
[TRAINER_DALTON_4] =
@@ -2796,7 +2796,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Dalton4 }
+ .party = {.NoItemDefaultMoves = sParty_Dalton4 }
},
[TRAINER_DALTON_5] =
@@ -2810,7 +2810,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Dalton5 }
+ .party = {.NoItemDefaultMoves = sParty_Dalton5 }
},
[TRAINER_COLE] =
@@ -2824,7 +2824,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cole }
+ .party = {.NoItemDefaultMoves = sParty_Cole }
},
[TRAINER_JEFF] =
@@ -2838,7 +2838,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jeff }
+ .party = {.NoItemDefaultMoves = sParty_Jeff }
},
[TRAINER_AXLE] =
@@ -2852,7 +2852,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Axle }
+ .party = {.NoItemDefaultMoves = sParty_Axle }
},
[TRAINER_JACE] =
@@ -2866,7 +2866,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jace }
+ .party = {.NoItemDefaultMoves = sParty_Jace }
},
[TRAINER_KEEGAN] =
@@ -2880,7 +2880,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Keegan }
+ .party = {.NoItemDefaultMoves = sParty_Keegan }
},
[TRAINER_BERNIE_1] =
@@ -2894,7 +2894,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Bernie1 }
+ .party = {.NoItemDefaultMoves = sParty_Bernie1 }
},
[TRAINER_BERNIE_2] =
@@ -2908,7 +2908,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Bernie2 }
+ .party = {.NoItemDefaultMoves = sParty_Bernie2 }
},
[TRAINER_BERNIE_3] =
@@ -2922,7 +2922,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Bernie3 }
+ .party = {.NoItemDefaultMoves = sParty_Bernie3 }
},
[TRAINER_BERNIE_4] =
@@ -2936,7 +2936,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Bernie4 }
+ .party = {.NoItemDefaultMoves = sParty_Bernie4 }
},
[TRAINER_BERNIE_5] =
@@ -2950,7 +2950,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Bernie5 }
+ .party = {.NoItemDefaultMoves = sParty_Bernie5 }
},
[TRAINER_DREW] =
@@ -2964,7 +2964,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Drew }
+ .party = {.NoItemCustomMoves = sParty_Drew }
},
[TRAINER_BEAU] =
@@ -2978,7 +2978,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemCustomMoves = gTrainerParty_Beau }
+ .party = {.NoItemCustomMoves = sParty_Beau }
},
[TRAINER_LARRY] =
@@ -2992,7 +2992,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Larry }
+ .party = {.NoItemDefaultMoves = sParty_Larry }
},
[TRAINER_SHANE] =
@@ -3006,7 +3006,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Shane }
+ .party = {.NoItemDefaultMoves = sParty_Shane }
},
[TRAINER_JUSTIN] =
@@ -3020,7 +3020,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Justin }
+ .party = {.NoItemDefaultMoves = sParty_Justin }
},
[TRAINER_ETHAN_1] =
@@ -3034,7 +3034,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Ethan1 }
+ .party = {.NoItemDefaultMoves = sParty_Ethan1 }
},
[TRAINER_AUTUMN] =
@@ -3048,7 +3048,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Autumn }
+ .party = {.NoItemDefaultMoves = sParty_Autumn }
},
[TRAINER_TRAVIS] =
@@ -3062,7 +3062,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Travis }
+ .party = {.NoItemDefaultMoves = sParty_Travis }
},
[TRAINER_ETHAN_2] =
@@ -3076,7 +3076,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Ethan2 }
+ .party = {.NoItemDefaultMoves = sParty_Ethan2 }
},
[TRAINER_ETHAN_3] =
@@ -3090,7 +3090,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Ethan3 }
+ .party = {.NoItemDefaultMoves = sParty_Ethan3 }
},
[TRAINER_ETHAN_4] =
@@ -3104,7 +3104,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Ethan4 }
+ .party = {.NoItemDefaultMoves = sParty_Ethan4 }
},
[TRAINER_ETHAN_5] =
@@ -3118,7 +3118,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Ethan5 }
+ .party = {.NoItemDefaultMoves = sParty_Ethan5 }
},
[TRAINER_BRENT] =
@@ -3132,7 +3132,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brent }
+ .party = {.NoItemDefaultMoves = sParty_Brent }
},
[TRAINER_DONALD] =
@@ -3146,7 +3146,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Donald }
+ .party = {.NoItemDefaultMoves = sParty_Donald }
},
[TRAINER_TAYLOR] =
@@ -3160,7 +3160,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Taylor }
+ .party = {.NoItemDefaultMoves = sParty_Taylor }
},
[TRAINER_JEFFREY_1] =
@@ -3174,7 +3174,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jeffrey1 }
+ .party = {.NoItemDefaultMoves = sParty_Jeffrey1 }
},
[TRAINER_DEREK] =
@@ -3188,7 +3188,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Derek }
+ .party = {.NoItemDefaultMoves = sParty_Derek }
},
[TRAINER_JEFFREY_2] =
@@ -3202,7 +3202,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jeffrey2 }
+ .party = {.NoItemDefaultMoves = sParty_Jeffrey2 }
},
[TRAINER_JEFFREY_3] =
@@ -3216,7 +3216,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jeffrey3 }
+ .party = {.NoItemDefaultMoves = sParty_Jeffrey3 }
},
[TRAINER_JEFFREY_4] =
@@ -3230,7 +3230,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 4,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jeffrey4 }
+ .party = {.NoItemDefaultMoves = sParty_Jeffrey4 }
},
[TRAINER_JEFFREY_5] =
@@ -3244,7 +3244,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 5,
- .party = {.ItemDefaultMoves = gTrainerParty_Jeffrey5 }
+ .party = {.ItemDefaultMoves = sParty_Jeffrey5 }
},
[TRAINER_EDWARD] =
@@ -3258,7 +3258,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Edward }
+ .party = {.NoItemCustomMoves = sParty_Edward }
},
[TRAINER_PRESTON] =
@@ -3272,7 +3272,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Preston }
+ .party = {.NoItemDefaultMoves = sParty_Preston }
},
[TRAINER_VIRGIL] =
@@ -3286,7 +3286,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Virgil }
+ .party = {.NoItemDefaultMoves = sParty_Virgil }
},
[TRAINER_BLAKE] =
@@ -3300,7 +3300,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Blake }
+ .party = {.NoItemDefaultMoves = sParty_Blake }
},
[TRAINER_WILLIAM] =
@@ -3314,7 +3314,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_William }
+ .party = {.NoItemDefaultMoves = sParty_William }
},
[TRAINER_JOSHUA] =
@@ -3328,7 +3328,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Joshua }
+ .party = {.NoItemDefaultMoves = sParty_Joshua }
},
[TRAINER_CAMERON_1] =
@@ -3342,7 +3342,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cameron1 }
+ .party = {.NoItemDefaultMoves = sParty_Cameron1 }
},
[TRAINER_CAMERON_2] =
@@ -3356,7 +3356,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cameron2 }
+ .party = {.NoItemDefaultMoves = sParty_Cameron2 }
},
[TRAINER_CAMERON_3] =
@@ -3370,7 +3370,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cameron3 }
+ .party = {.NoItemDefaultMoves = sParty_Cameron3 }
},
[TRAINER_CAMERON_4] =
@@ -3384,7 +3384,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cameron4 }
+ .party = {.NoItemDefaultMoves = sParty_Cameron4 }
},
[TRAINER_CAMERON_5] =
@@ -3398,7 +3398,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cameron5 }
+ .party = {.NoItemDefaultMoves = sParty_Cameron5 }
},
[TRAINER_JACLYN] =
@@ -3412,7 +3412,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Jaclyn }
+ .party = {.NoItemCustomMoves = sParty_Jaclyn }
},
[TRAINER_HANNAH] =
@@ -3426,7 +3426,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Hannah }
+ .party = {.NoItemDefaultMoves = sParty_Hannah }
},
[TRAINER_SAMANTHA] =
@@ -3440,7 +3440,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Samantha }
+ .party = {.NoItemDefaultMoves = sParty_Samantha }
},
[TRAINER_MAURA] =
@@ -3454,7 +3454,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Maura }
+ .party = {.NoItemDefaultMoves = sParty_Maura }
},
[TRAINER_KAYLA] =
@@ -3468,7 +3468,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Kayla }
+ .party = {.NoItemDefaultMoves = sParty_Kayla }
},
[TRAINER_ALEXIS] =
@@ -3482,7 +3482,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Alexis }
+ .party = {.NoItemDefaultMoves = sParty_Alexis }
},
[TRAINER_JACKI_1] =
@@ -3496,7 +3496,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jacki1 }
+ .party = {.NoItemDefaultMoves = sParty_Jacki1 }
},
[TRAINER_JACKI_2] =
@@ -3510,7 +3510,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jacki2 }
+ .party = {.NoItemDefaultMoves = sParty_Jacki2 }
},
[TRAINER_JACKI_3] =
@@ -3524,7 +3524,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jacki3 }
+ .party = {.NoItemDefaultMoves = sParty_Jacki3 }
},
[TRAINER_JACKI_4] =
@@ -3538,7 +3538,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jacki4 }
+ .party = {.NoItemDefaultMoves = sParty_Jacki4 }
},
[TRAINER_JACKI_5] =
@@ -3552,7 +3552,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jacki5 }
+ .party = {.NoItemDefaultMoves = sParty_Jacki5 }
},
[TRAINER_WALTER_1] =
@@ -3566,7 +3566,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Walter1 }
+ .party = {.NoItemDefaultMoves = sParty_Walter1 }
},
[TRAINER_MICAH] =
@@ -3580,7 +3580,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Micah }
+ .party = {.NoItemDefaultMoves = sParty_Micah }
},
[TRAINER_THOMAS] =
@@ -3594,7 +3594,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Thomas }
+ .party = {.NoItemDefaultMoves = sParty_Thomas }
},
[TRAINER_WALTER_2] =
@@ -3608,7 +3608,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Walter2 }
+ .party = {.NoItemDefaultMoves = sParty_Walter2 }
},
[TRAINER_WALTER_3] =
@@ -3622,7 +3622,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Walter3 }
+ .party = {.NoItemCustomMoves = sParty_Walter3 }
},
[TRAINER_WALTER_4] =
@@ -3636,7 +3636,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Walter4 }
+ .party = {.NoItemCustomMoves = sParty_Walter4 }
},
[TRAINER_WALTER_5] =
@@ -3650,7 +3650,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemCustomMoves = gTrainerParty_Walter5 }
+ .party = {.NoItemCustomMoves = sParty_Walter5 }
},
[TRAINER_SIDNEY] =
@@ -3664,7 +3664,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY | AI_SCRIPT_SETUP_FIRST_TURN,
.partySize = 5,
- .party = {.ItemCustomMoves = gTrainerParty_Sidney }
+ .party = {.ItemCustomMoves = sParty_Sidney }
},
[TRAINER_PHOEBE] =
@@ -3678,7 +3678,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 5,
- .party = {.ItemCustomMoves = gTrainerParty_Phoebe }
+ .party = {.ItemCustomMoves = sParty_Phoebe }
},
[TRAINER_GLACIA] =
@@ -3692,7 +3692,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 5,
- .party = {.ItemCustomMoves = gTrainerParty_Glacia }
+ .party = {.ItemCustomMoves = sParty_Glacia }
},
[TRAINER_DRAKE] =
@@ -3706,7 +3706,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 5,
- .party = {.ItemCustomMoves = gTrainerParty_Drake }
+ .party = {.ItemCustomMoves = sParty_Drake }
},
[TRAINER_ROXANNE_1] =
@@ -3720,7 +3720,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.ItemCustomMoves = gTrainerParty_Roxanne1 }
+ .party = {.ItemCustomMoves = sParty_Roxanne1 }
},
[TRAINER_BRAWLY_1] =
@@ -3734,7 +3734,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.ItemCustomMoves = gTrainerParty_Brawly1 }
+ .party = {.ItemCustomMoves = sParty_Brawly1 }
},
[TRAINER_WATTSON_1] =
@@ -3748,7 +3748,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 4,
- .party = {.ItemCustomMoves = gTrainerParty_Wattson1 }
+ .party = {.ItemCustomMoves = sParty_Wattson1 }
},
[TRAINER_FLANNERY_1] =
@@ -3762,7 +3762,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 4,
- .party = {.ItemCustomMoves = gTrainerParty_Flannery1 }
+ .party = {.ItemCustomMoves = sParty_Flannery1 }
},
[TRAINER_NORMAN_1] =
@@ -3776,7 +3776,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 4,
- .party = {.ItemCustomMoves = gTrainerParty_Norman1 }
+ .party = {.ItemCustomMoves = sParty_Norman1 }
},
[TRAINER_WINONA_1] =
@@ -3790,7 +3790,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY | AI_SCRIPT_RISKY,
.partySize = 5,
- .party = {.ItemCustomMoves = gTrainerParty_Winona1 }
+ .party = {.ItemCustomMoves = sParty_Winona1 }
},
[TRAINER_TATE_AND_LIZA_1] =
@@ -3804,7 +3804,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 4,
- .party = {.ItemCustomMoves = gTrainerParty_TateAndLiza1 }
+ .party = {.ItemCustomMoves = sParty_TateAndLiza1 }
},
[TRAINER_JUAN_1] =
@@ -3818,7 +3818,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 5,
- .party = {.ItemCustomMoves = gTrainerParty_Juan1 }
+ .party = {.ItemCustomMoves = sParty_Juan1 }
},
[TRAINER_JERRY_1] =
@@ -3832,7 +3832,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jerry1 }
+ .party = {.NoItemDefaultMoves = sParty_Jerry1 }
},
[TRAINER_TED] =
@@ -3846,7 +3846,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Ted }
+ .party = {.NoItemDefaultMoves = sParty_Ted }
},
[TRAINER_PAUL] =
@@ -3860,7 +3860,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Paul }
+ .party = {.NoItemDefaultMoves = sParty_Paul }
},
[TRAINER_JERRY_2] =
@@ -3874,7 +3874,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jerry2 }
+ .party = {.NoItemDefaultMoves = sParty_Jerry2 }
},
[TRAINER_JERRY_3] =
@@ -3888,7 +3888,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jerry3 }
+ .party = {.NoItemDefaultMoves = sParty_Jerry3 }
},
[TRAINER_JERRY_4] =
@@ -3902,7 +3902,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jerry4 }
+ .party = {.NoItemDefaultMoves = sParty_Jerry4 }
},
[TRAINER_JERRY_5] =
@@ -3916,7 +3916,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jerry5 }
+ .party = {.NoItemDefaultMoves = sParty_Jerry5 }
},
[TRAINER_KAREN_1] =
@@ -3930,7 +3930,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Karen1 }
+ .party = {.NoItemDefaultMoves = sParty_Karen1 }
},
[TRAINER_GEORGIA] =
@@ -3944,7 +3944,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Georgia }
+ .party = {.NoItemDefaultMoves = sParty_Georgia }
},
[TRAINER_KAREN_2] =
@@ -3958,7 +3958,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Karen2 }
+ .party = {.NoItemDefaultMoves = sParty_Karen2 }
},
[TRAINER_KAREN_3] =
@@ -3972,7 +3972,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Karen3 }
+ .party = {.NoItemDefaultMoves = sParty_Karen3 }
},
[TRAINER_KAREN_4] =
@@ -3986,7 +3986,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Karen4 }
+ .party = {.NoItemDefaultMoves = sParty_Karen4 }
},
[TRAINER_KAREN_5] =
@@ -4000,7 +4000,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Karen5 }
+ .party = {.NoItemDefaultMoves = sParty_Karen5 }
},
[TRAINER_KATE_AND_JOY] =
@@ -4014,7 +4014,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_KateAndJoy }
+ .party = {.NoItemCustomMoves = sParty_KateAndJoy }
},
[TRAINER_ANNA_AND_MEG_1] =
@@ -4028,7 +4028,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_AnnaAndMeg1 }
+ .party = {.NoItemCustomMoves = sParty_AnnaAndMeg1 }
},
[TRAINER_ANNA_AND_MEG_2] =
@@ -4042,7 +4042,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_AnnaAndMeg2 }
+ .party = {.NoItemCustomMoves = sParty_AnnaAndMeg2 }
},
[TRAINER_ANNA_AND_MEG_3] =
@@ -4056,7 +4056,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_AnnaAndMeg3 }
+ .party = {.NoItemCustomMoves = sParty_AnnaAndMeg3 }
},
[TRAINER_ANNA_AND_MEG_4] =
@@ -4070,7 +4070,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_AnnaAndMeg4 }
+ .party = {.NoItemCustomMoves = sParty_AnnaAndMeg4 }
},
[TRAINER_ANNA_AND_MEG_5] =
@@ -4084,7 +4084,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_AnnaAndMeg5 }
+ .party = {.NoItemCustomMoves = sParty_AnnaAndMeg5 }
},
[TRAINER_VICTOR] =
@@ -4098,7 +4098,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.ItemDefaultMoves = gTrainerParty_Victor }
+ .party = {.ItemDefaultMoves = sParty_Victor }
},
[TRAINER_MIGUEL_1] =
@@ -4112,7 +4112,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.ItemDefaultMoves = gTrainerParty_Miguel1 }
+ .party = {.ItemDefaultMoves = sParty_Miguel1 }
},
[TRAINER_COLTON] =
@@ -4126,7 +4126,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 6,
- .party = {.ItemCustomMoves = gTrainerParty_Colton }
+ .party = {.ItemCustomMoves = sParty_Colton }
},
[TRAINER_MIGUEL_2] =
@@ -4140,7 +4140,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.ItemDefaultMoves = gTrainerParty_Miguel2 }
+ .party = {.ItemDefaultMoves = sParty_Miguel2 }
},
[TRAINER_MIGUEL_3] =
@@ -4154,7 +4154,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.ItemDefaultMoves = gTrainerParty_Miguel3 }
+ .party = {.ItemDefaultMoves = sParty_Miguel3 }
},
[TRAINER_MIGUEL_4] =
@@ -4168,7 +4168,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.ItemDefaultMoves = gTrainerParty_Miguel4 }
+ .party = {.ItemDefaultMoves = sParty_Miguel4 }
},
[TRAINER_MIGUEL_5] =
@@ -4182,7 +4182,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.ItemDefaultMoves = gTrainerParty_Miguel5 }
+ .party = {.ItemDefaultMoves = sParty_Miguel5 }
},
[TRAINER_VICTORIA] =
@@ -4196,7 +4196,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT,
.partySize = 1,
- .party = {.ItemDefaultMoves = gTrainerParty_Victoria }
+ .party = {.ItemDefaultMoves = sParty_Victoria }
},
[TRAINER_VANESSA] =
@@ -4210,7 +4210,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.ItemDefaultMoves = gTrainerParty_Vanessa }
+ .party = {.ItemDefaultMoves = sParty_Vanessa }
},
[TRAINER_BETHANY] =
@@ -4224,7 +4224,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.ItemDefaultMoves = gTrainerParty_Bethany }
+ .party = {.ItemDefaultMoves = sParty_Bethany }
},
[TRAINER_ISABEL_1] =
@@ -4238,7 +4238,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.ItemDefaultMoves = gTrainerParty_Isabel1 }
+ .party = {.ItemDefaultMoves = sParty_Isabel1 }
},
[TRAINER_ISABEL_2] =
@@ -4252,7 +4252,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.ItemDefaultMoves = gTrainerParty_Isabel2 }
+ .party = {.ItemDefaultMoves = sParty_Isabel2 }
},
[TRAINER_ISABEL_3] =
@@ -4266,7 +4266,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.ItemDefaultMoves = gTrainerParty_Isabel3 }
+ .party = {.ItemDefaultMoves = sParty_Isabel3 }
},
[TRAINER_ISABEL_4] =
@@ -4280,7 +4280,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.ItemDefaultMoves = gTrainerParty_Isabel4 }
+ .party = {.ItemDefaultMoves = sParty_Isabel4 }
},
[TRAINER_ISABEL_5] =
@@ -4294,7 +4294,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.ItemDefaultMoves = gTrainerParty_Isabel5 }
+ .party = {.ItemDefaultMoves = sParty_Isabel5 }
},
[TRAINER_TIMOTHY_1] =
@@ -4308,7 +4308,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Timothy1 }
+ .party = {.NoItemDefaultMoves = sParty_Timothy1 }
},
[TRAINER_TIMOTHY_2] =
@@ -4322,7 +4322,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Timothy2 }
+ .party = {.NoItemCustomMoves = sParty_Timothy2 }
},
[TRAINER_TIMOTHY_3] =
@@ -4336,7 +4336,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Timothy3 }
+ .party = {.NoItemCustomMoves = sParty_Timothy3 }
},
[TRAINER_TIMOTHY_4] =
@@ -4350,7 +4350,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Timothy4 }
+ .party = {.NoItemCustomMoves = sParty_Timothy4 }
},
[TRAINER_TIMOTHY_5] =
@@ -4364,7 +4364,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Timothy5 }
+ .party = {.NoItemCustomMoves = sParty_Timothy5 }
},
[TRAINER_VICKY] =
@@ -4378,7 +4378,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Vicky }
+ .party = {.NoItemCustomMoves = sParty_Vicky }
},
[TRAINER_SHELBY_1] =
@@ -4392,7 +4392,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Shelby1 }
+ .party = {.NoItemDefaultMoves = sParty_Shelby1 }
},
[TRAINER_SHELBY_2] =
@@ -4406,7 +4406,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Shelby2 }
+ .party = {.NoItemDefaultMoves = sParty_Shelby2 }
},
[TRAINER_SHELBY_3] =
@@ -4420,7 +4420,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Shelby3 }
+ .party = {.NoItemDefaultMoves = sParty_Shelby3 }
},
[TRAINER_SHELBY_4] =
@@ -4434,7 +4434,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Shelby4 }
+ .party = {.NoItemDefaultMoves = sParty_Shelby4 }
},
[TRAINER_SHELBY_5] =
@@ -4448,7 +4448,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Shelby5 }
+ .party = {.NoItemDefaultMoves = sParty_Shelby5 }
},
[TRAINER_CALVIN_1] =
@@ -4462,7 +4462,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Calvin1 }
+ .party = {.NoItemDefaultMoves = sParty_Calvin1 }
},
[TRAINER_BILLY] =
@@ -4476,7 +4476,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Billy }
+ .party = {.NoItemDefaultMoves = sParty_Billy }
},
[TRAINER_JOSH] =
@@ -4490,7 +4490,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Josh }
+ .party = {.NoItemCustomMoves = sParty_Josh }
},
[TRAINER_TOMMY] =
@@ -4504,7 +4504,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Tommy }
+ .party = {.NoItemDefaultMoves = sParty_Tommy }
},
[TRAINER_JOEY] =
@@ -4518,7 +4518,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Joey }
+ .party = {.NoItemDefaultMoves = sParty_Joey }
},
[TRAINER_BEN] =
@@ -4532,7 +4532,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Ben }
+ .party = {.NoItemCustomMoves = sParty_Ben }
},
[TRAINER_QUINCY] =
@@ -4546,7 +4546,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Quincy }
+ .party = {.NoItemCustomMoves = sParty_Quincy }
},
[TRAINER_KATELYNN] =
@@ -4560,7 +4560,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Katelynn }
+ .party = {.NoItemCustomMoves = sParty_Katelynn }
},
[TRAINER_JAYLEN] =
@@ -4574,7 +4574,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jaylen }
+ .party = {.NoItemDefaultMoves = sParty_Jaylen }
},
[TRAINER_DILLON] =
@@ -4588,7 +4588,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Dillon }
+ .party = {.NoItemDefaultMoves = sParty_Dillon }
},
[TRAINER_CALVIN_2] =
@@ -4602,7 +4602,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Calvin2 }
+ .party = {.NoItemDefaultMoves = sParty_Calvin2 }
},
[TRAINER_CALVIN_3] =
@@ -4616,7 +4616,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Calvin3 }
+ .party = {.NoItemDefaultMoves = sParty_Calvin3 }
},
[TRAINER_CALVIN_4] =
@@ -4630,7 +4630,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Calvin4 }
+ .party = {.NoItemDefaultMoves = sParty_Calvin4 }
},
[TRAINER_CALVIN_5] =
@@ -4644,7 +4644,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Calvin5 }
+ .party = {.NoItemDefaultMoves = sParty_Calvin5 }
},
[TRAINER_EDDIE] =
@@ -4658,7 +4658,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Eddie }
+ .party = {.NoItemDefaultMoves = sParty_Eddie }
},
[TRAINER_ALLEN] =
@@ -4672,7 +4672,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Allen }
+ .party = {.NoItemDefaultMoves = sParty_Allen }
},
[TRAINER_TIMMY] =
@@ -4686,7 +4686,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Timmy }
+ .party = {.NoItemDefaultMoves = sParty_Timmy }
},
[TRAINER_WALLACE] =
@@ -4700,7 +4700,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 6,
- .party = {.ItemCustomMoves = gTrainerParty_Wallace }
+ .party = {.ItemCustomMoves = sParty_Wallace }
},
[TRAINER_ANDREW] =
@@ -4714,7 +4714,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Andrew }
+ .party = {.NoItemDefaultMoves = sParty_Andrew }
},
[TRAINER_IVAN] =
@@ -4728,7 +4728,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Ivan }
+ .party = {.NoItemDefaultMoves = sParty_Ivan }
},
[TRAINER_CLAUDE] =
@@ -4742,7 +4742,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Claude }
+ .party = {.NoItemDefaultMoves = sParty_Claude }
},
[TRAINER_ELLIOT_1] =
@@ -4756,7 +4756,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Elliot1 }
+ .party = {.NoItemDefaultMoves = sParty_Elliot1 }
},
[TRAINER_NED] =
@@ -4770,7 +4770,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Ned }
+ .party = {.NoItemDefaultMoves = sParty_Ned }
},
[TRAINER_DALE] =
@@ -4784,7 +4784,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 4,
- .party = {.NoItemDefaultMoves = gTrainerParty_Dale }
+ .party = {.NoItemDefaultMoves = sParty_Dale }
},
[TRAINER_NOLAN] =
@@ -4798,7 +4798,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Nolan }
+ .party = {.NoItemDefaultMoves = sParty_Nolan }
},
[TRAINER_BARNY] =
@@ -4812,7 +4812,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Barny }
+ .party = {.NoItemDefaultMoves = sParty_Barny }
},
[TRAINER_WADE] =
@@ -4826,7 +4826,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Wade }
+ .party = {.NoItemDefaultMoves = sParty_Wade }
},
[TRAINER_CARTER] =
@@ -4840,7 +4840,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Carter }
+ .party = {.NoItemDefaultMoves = sParty_Carter }
},
[TRAINER_ELLIOT_2] =
@@ -4854,7 +4854,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Elliot2 }
+ .party = {.NoItemDefaultMoves = sParty_Elliot2 }
},
[TRAINER_ELLIOT_3] =
@@ -4868,7 +4868,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 4,
- .party = {.NoItemDefaultMoves = gTrainerParty_Elliot3 }
+ .party = {.NoItemDefaultMoves = sParty_Elliot3 }
},
[TRAINER_ELLIOT_4] =
@@ -4882,7 +4882,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 4,
- .party = {.NoItemDefaultMoves = gTrainerParty_Elliot4 }
+ .party = {.NoItemDefaultMoves = sParty_Elliot4 }
},
[TRAINER_ELLIOT_5] =
@@ -4896,7 +4896,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT,
.partySize = 4,
- .party = {.NoItemDefaultMoves = gTrainerParty_Elliot5 }
+ .party = {.NoItemDefaultMoves = sParty_Elliot5 }
},
[TRAINER_RONALD] =
@@ -4910,7 +4910,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 6,
- .party = {.NoItemDefaultMoves = gTrainerParty_Ronald }
+ .party = {.NoItemDefaultMoves = sParty_Ronald }
},
[TRAINER_JACOB] =
@@ -4924,7 +4924,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jacob }
+ .party = {.NoItemDefaultMoves = sParty_Jacob }
},
[TRAINER_ANTHONY] =
@@ -4938,7 +4938,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Anthony }
+ .party = {.NoItemDefaultMoves = sParty_Anthony }
},
[TRAINER_BENJAMIN_1] =
@@ -4952,7 +4952,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Benjamin1 }
+ .party = {.NoItemDefaultMoves = sParty_Benjamin1 }
},
[TRAINER_BENJAMIN_2] =
@@ -4966,7 +4966,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Benjamin2 }
+ .party = {.NoItemDefaultMoves = sParty_Benjamin2 }
},
[TRAINER_BENJAMIN_3] =
@@ -4980,7 +4980,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Benjamin3 }
+ .party = {.NoItemDefaultMoves = sParty_Benjamin3 }
},
[TRAINER_BENJAMIN_4] =
@@ -4994,7 +4994,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Benjamin4 }
+ .party = {.NoItemDefaultMoves = sParty_Benjamin4 }
},
[TRAINER_BENJAMIN_5] =
@@ -5008,7 +5008,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Benjamin5 }
+ .party = {.NoItemDefaultMoves = sParty_Benjamin5 }
},
[TRAINER_ABIGAIL_1] =
@@ -5022,7 +5022,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Abigail1 }
+ .party = {.NoItemDefaultMoves = sParty_Abigail1 }
},
[TRAINER_JASMINE] =
@@ -5036,7 +5036,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jasmine }
+ .party = {.NoItemDefaultMoves = sParty_Jasmine }
},
[TRAINER_ABIGAIL_2] =
@@ -5050,7 +5050,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Abigail2 }
+ .party = {.NoItemDefaultMoves = sParty_Abigail2 }
},
[TRAINER_ABIGAIL_3] =
@@ -5064,7 +5064,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Abigail3 }
+ .party = {.NoItemDefaultMoves = sParty_Abigail3 }
},
[TRAINER_ABIGAIL_4] =
@@ -5078,7 +5078,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Abigail4 }
+ .party = {.NoItemDefaultMoves = sParty_Abigail4 }
},
[TRAINER_ABIGAIL_5] =
@@ -5092,7 +5092,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Abigail5 }
+ .party = {.NoItemDefaultMoves = sParty_Abigail5 }
},
[TRAINER_DYLAN_1] =
@@ -5106,7 +5106,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Dylan1 }
+ .party = {.NoItemDefaultMoves = sParty_Dylan1 }
},
[TRAINER_DYLAN_2] =
@@ -5120,7 +5120,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Dylan2 }
+ .party = {.NoItemDefaultMoves = sParty_Dylan2 }
},
[TRAINER_DYLAN_3] =
@@ -5134,7 +5134,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Dylan3 }
+ .party = {.NoItemDefaultMoves = sParty_Dylan3 }
},
[TRAINER_DYLAN_4] =
@@ -5148,7 +5148,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Dylan4 }
+ .party = {.NoItemDefaultMoves = sParty_Dylan4 }
},
[TRAINER_DYLAN_5] =
@@ -5162,7 +5162,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Dylan5 }
+ .party = {.NoItemDefaultMoves = sParty_Dylan5 }
},
[TRAINER_MARIA_1] =
@@ -5176,7 +5176,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Maria1 }
+ .party = {.NoItemDefaultMoves = sParty_Maria1 }
},
[TRAINER_MARIA_2] =
@@ -5190,7 +5190,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Maria2 }
+ .party = {.NoItemDefaultMoves = sParty_Maria2 }
},
[TRAINER_MARIA_3] =
@@ -5204,7 +5204,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Maria3 }
+ .party = {.NoItemDefaultMoves = sParty_Maria3 }
},
[TRAINER_MARIA_4] =
@@ -5218,7 +5218,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Maria4 }
+ .party = {.NoItemDefaultMoves = sParty_Maria4 }
},
[TRAINER_MARIA_5] =
@@ -5232,7 +5232,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Maria5 }
+ .party = {.NoItemDefaultMoves = sParty_Maria5 }
},
[TRAINER_CAMDEN] =
@@ -5246,7 +5246,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Camden }
+ .party = {.NoItemDefaultMoves = sParty_Camden }
},
[TRAINER_DEMETRIUS] =
@@ -5260,7 +5260,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Demetrius }
+ .party = {.NoItemDefaultMoves = sParty_Demetrius }
},
[TRAINER_ISAIAH_1] =
@@ -5274,7 +5274,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Isaiah1 }
+ .party = {.NoItemDefaultMoves = sParty_Isaiah1 }
},
[TRAINER_PABLO_1] =
@@ -5288,7 +5288,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Pablo1 }
+ .party = {.NoItemDefaultMoves = sParty_Pablo1 }
},
[TRAINER_CHASE] =
@@ -5302,7 +5302,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Chase }
+ .party = {.NoItemDefaultMoves = sParty_Chase }
},
[TRAINER_ISAIAH_2] =
@@ -5316,7 +5316,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Isaiah2 }
+ .party = {.NoItemDefaultMoves = sParty_Isaiah2 }
},
[TRAINER_ISAIAH_3] =
@@ -5330,7 +5330,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Isaiah3 }
+ .party = {.NoItemDefaultMoves = sParty_Isaiah3 }
},
[TRAINER_ISAIAH_4] =
@@ -5344,7 +5344,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Isaiah4 }
+ .party = {.NoItemDefaultMoves = sParty_Isaiah4 }
},
[TRAINER_ISAIAH_5] =
@@ -5358,7 +5358,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Isaiah5 }
+ .party = {.NoItemDefaultMoves = sParty_Isaiah5 }
},
[TRAINER_ISOBEL] =
@@ -5372,7 +5372,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Isobel }
+ .party = {.NoItemDefaultMoves = sParty_Isobel }
},
[TRAINER_DONNY] =
@@ -5386,7 +5386,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Donny }
+ .party = {.NoItemDefaultMoves = sParty_Donny }
},
[TRAINER_TALIA] =
@@ -5400,7 +5400,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Talia }
+ .party = {.NoItemDefaultMoves = sParty_Talia }
},
[TRAINER_KATELYN_1] =
@@ -5414,7 +5414,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Katelyn1 }
+ .party = {.NoItemDefaultMoves = sParty_Katelyn1 }
},
[TRAINER_ALLISON] =
@@ -5428,7 +5428,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Allison }
+ .party = {.NoItemDefaultMoves = sParty_Allison }
},
[TRAINER_KATELYN_2] =
@@ -5442,7 +5442,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Katelyn2 }
+ .party = {.NoItemDefaultMoves = sParty_Katelyn2 }
},
[TRAINER_KATELYN_3] =
@@ -5456,7 +5456,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Katelyn3 }
+ .party = {.NoItemDefaultMoves = sParty_Katelyn3 }
},
[TRAINER_KATELYN_4] =
@@ -5470,7 +5470,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Katelyn4 }
+ .party = {.NoItemDefaultMoves = sParty_Katelyn4 }
},
[TRAINER_KATELYN_5] =
@@ -5484,7 +5484,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Katelyn5 }
+ .party = {.NoItemDefaultMoves = sParty_Katelyn5 }
},
[TRAINER_NICOLAS_1] =
@@ -5498,7 +5498,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Nicolas1 }
+ .party = {.NoItemDefaultMoves = sParty_Nicolas1 }
},
[TRAINER_NICOLAS_2] =
@@ -5512,7 +5512,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Nicolas2 }
+ .party = {.NoItemDefaultMoves = sParty_Nicolas2 }
},
[TRAINER_NICOLAS_3] =
@@ -5526,7 +5526,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Nicolas3 }
+ .party = {.NoItemDefaultMoves = sParty_Nicolas3 }
},
[TRAINER_NICOLAS_4] =
@@ -5540,7 +5540,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Nicolas4 }
+ .party = {.NoItemDefaultMoves = sParty_Nicolas4 }
},
[TRAINER_NICOLAS_5] =
@@ -5554,7 +5554,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.ItemDefaultMoves = gTrainerParty_Nicolas5 }
+ .party = {.ItemDefaultMoves = sParty_Nicolas5 }
},
[TRAINER_AARON] =
@@ -5568,7 +5568,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Aaron }
+ .party = {.NoItemCustomMoves = sParty_Aaron }
},
[TRAINER_PERRY] =
@@ -5582,7 +5582,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Perry }
+ .party = {.NoItemDefaultMoves = sParty_Perry }
},
[TRAINER_HUGH] =
@@ -5596,7 +5596,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Hugh }
+ .party = {.NoItemDefaultMoves = sParty_Hugh }
},
[TRAINER_PHIL] =
@@ -5610,7 +5610,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Phil }
+ .party = {.NoItemDefaultMoves = sParty_Phil }
},
[TRAINER_JARED] =
@@ -5624,7 +5624,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jared }
+ .party = {.NoItemDefaultMoves = sParty_Jared }
},
[TRAINER_HUMBERTO] =
@@ -5638,7 +5638,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Humberto }
+ .party = {.NoItemDefaultMoves = sParty_Humberto }
},
[TRAINER_PRESLEY] =
@@ -5652,7 +5652,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Presley }
+ .party = {.NoItemDefaultMoves = sParty_Presley }
},
[TRAINER_EDWARDO] =
@@ -5666,7 +5666,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Edwardo }
+ .party = {.NoItemDefaultMoves = sParty_Edwardo }
},
[TRAINER_COLIN] =
@@ -5680,7 +5680,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Colin }
+ .party = {.NoItemDefaultMoves = sParty_Colin }
},
[TRAINER_ROBERT_1] =
@@ -5694,7 +5694,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Robert1 }
+ .party = {.NoItemDefaultMoves = sParty_Robert1 }
},
[TRAINER_BENNY] =
@@ -5708,7 +5708,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Benny }
+ .party = {.NoItemDefaultMoves = sParty_Benny }
},
[TRAINER_CHESTER] =
@@ -5722,7 +5722,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Chester }
+ .party = {.NoItemDefaultMoves = sParty_Chester }
},
[TRAINER_ROBERT_2] =
@@ -5736,7 +5736,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Robert2 }
+ .party = {.NoItemDefaultMoves = sParty_Robert2 }
},
[TRAINER_ROBERT_3] =
@@ -5750,7 +5750,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Robert3 }
+ .party = {.NoItemDefaultMoves = sParty_Robert3 }
},
[TRAINER_ROBERT_4] =
@@ -5764,7 +5764,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Robert4 }
+ .party = {.NoItemDefaultMoves = sParty_Robert4 }
},
[TRAINER_ROBERT_5] =
@@ -5778,7 +5778,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Robert5 }
+ .party = {.NoItemDefaultMoves = sParty_Robert5 }
},
[TRAINER_ALEX] =
@@ -5792,7 +5792,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Alex }
+ .party = {.NoItemDefaultMoves = sParty_Alex }
},
[TRAINER_BECK] =
@@ -5806,7 +5806,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Beck }
+ .party = {.NoItemDefaultMoves = sParty_Beck }
},
[TRAINER_YASU] =
@@ -5820,7 +5820,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Yasu }
+ .party = {.NoItemDefaultMoves = sParty_Yasu }
},
[TRAINER_TAKASHI] =
@@ -5834,7 +5834,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Takashi }
+ .party = {.NoItemDefaultMoves = sParty_Takashi }
},
[TRAINER_DIANNE] =
@@ -5848,7 +5848,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = 0,
.partySize = 2,
- .party = {.ItemCustomMoves = gTrainerParty_Dianne }
+ .party = {.ItemCustomMoves = sParty_Dianne }
},
[TRAINER_JANI] =
@@ -5862,7 +5862,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = 0,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jani }
+ .party = {.NoItemDefaultMoves = sParty_Jani }
},
[TRAINER_LAO_1] =
@@ -5876,7 +5876,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = 0,
.partySize = 3,
- .party = {.NoItemCustomMoves = gTrainerParty_Lao1 }
+ .party = {.NoItemCustomMoves = sParty_Lao1 }
},
[TRAINER_LUNG] =
@@ -5890,7 +5890,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = 0,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Lung }
+ .party = {.NoItemDefaultMoves = sParty_Lung }
},
[TRAINER_LAO_2] =
@@ -5904,7 +5904,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = 0,
.partySize = 4,
- .party = {.NoItemCustomMoves = gTrainerParty_Lao2 }
+ .party = {.NoItemCustomMoves = sParty_Lao2 }
},
[TRAINER_LAO_3] =
@@ -5918,7 +5918,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = 0,
.partySize = 4,
- .party = {.NoItemCustomMoves = gTrainerParty_Lao3 }
+ .party = {.NoItemCustomMoves = sParty_Lao3 }
},
[TRAINER_LAO_4] =
@@ -5932,7 +5932,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = 0,
.partySize = 4,
- .party = {.NoItemCustomMoves = gTrainerParty_Lao4 }
+ .party = {.NoItemCustomMoves = sParty_Lao4 }
},
[TRAINER_LAO_5] =
@@ -5946,7 +5946,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = 0,
.partySize = 4,
- .party = {.ItemCustomMoves = gTrainerParty_Lao5 }
+ .party = {.ItemCustomMoves = sParty_Lao5 }
},
[TRAINER_JOCELYN] =
@@ -5960,7 +5960,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jocelyn }
+ .party = {.NoItemDefaultMoves = sParty_Jocelyn }
},
[TRAINER_LAURA] =
@@ -5974,7 +5974,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Laura }
+ .party = {.NoItemDefaultMoves = sParty_Laura }
},
[TRAINER_CYNDY_1] =
@@ -5988,7 +5988,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cyndy1 }
+ .party = {.NoItemDefaultMoves = sParty_Cyndy1 }
},
[TRAINER_CORA] =
@@ -6002,7 +6002,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cora }
+ .party = {.NoItemDefaultMoves = sParty_Cora }
},
[TRAINER_PAULA] =
@@ -6016,7 +6016,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Paula }
+ .party = {.NoItemDefaultMoves = sParty_Paula }
},
[TRAINER_CYNDY_2] =
@@ -6030,7 +6030,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cyndy2 }
+ .party = {.NoItemDefaultMoves = sParty_Cyndy2 }
},
[TRAINER_CYNDY_3] =
@@ -6044,7 +6044,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cyndy3 }
+ .party = {.NoItemDefaultMoves = sParty_Cyndy3 }
},
[TRAINER_CYNDY_4] =
@@ -6058,7 +6058,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cyndy4 }
+ .party = {.NoItemDefaultMoves = sParty_Cyndy4 }
},
[TRAINER_CYNDY_5] =
@@ -6072,7 +6072,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cyndy5 }
+ .party = {.NoItemDefaultMoves = sParty_Cyndy5 }
},
[TRAINER_MADELINE_1] =
@@ -6086,7 +6086,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Madeline1 }
+ .party = {.NoItemCustomMoves = sParty_Madeline1 }
},
[TRAINER_CLARISSA] =
@@ -6100,7 +6100,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Clarissa }
+ .party = {.NoItemDefaultMoves = sParty_Clarissa }
},
[TRAINER_ANGELICA] =
@@ -6114,7 +6114,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Angelica }
+ .party = {.NoItemCustomMoves = sParty_Angelica }
},
[TRAINER_MADELINE_2] =
@@ -6128,7 +6128,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Madeline2 }
+ .party = {.NoItemCustomMoves = sParty_Madeline2 }
},
[TRAINER_MADELINE_3] =
@@ -6142,7 +6142,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Madeline3 }
+ .party = {.NoItemCustomMoves = sParty_Madeline3 }
},
[TRAINER_MADELINE_4] =
@@ -6156,7 +6156,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Madeline4 }
+ .party = {.NoItemCustomMoves = sParty_Madeline4 }
},
[TRAINER_MADELINE_5] =
@@ -6170,7 +6170,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Madeline5 }
+ .party = {.NoItemCustomMoves = sParty_Madeline5 }
},
[TRAINER_BEVERLY] =
@@ -6184,7 +6184,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Beverly }
+ .party = {.NoItemDefaultMoves = sParty_Beverly }
},
[TRAINER_IMANI] =
@@ -6198,7 +6198,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Imani }
+ .party = {.NoItemDefaultMoves = sParty_Imani }
},
[TRAINER_KYLA] =
@@ -6212,7 +6212,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Kyla }
+ .party = {.NoItemDefaultMoves = sParty_Kyla }
},
[TRAINER_DENISE] =
@@ -6226,7 +6226,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Denise }
+ .party = {.NoItemDefaultMoves = sParty_Denise }
},
[TRAINER_BETH] =
@@ -6240,7 +6240,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Beth }
+ .party = {.NoItemDefaultMoves = sParty_Beth }
},
[TRAINER_TARA] =
@@ -6254,7 +6254,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Tara }
+ .party = {.NoItemDefaultMoves = sParty_Tara }
},
[TRAINER_MISSY] =
@@ -6268,7 +6268,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Missy }
+ .party = {.NoItemDefaultMoves = sParty_Missy }
},
[TRAINER_ALICE] =
@@ -6282,7 +6282,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Alice }
+ .party = {.NoItemDefaultMoves = sParty_Alice }
},
[TRAINER_JENNY_1] =
@@ -6296,7 +6296,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jenny1 }
+ .party = {.NoItemDefaultMoves = sParty_Jenny1 }
},
[TRAINER_GRACE] =
@@ -6310,7 +6310,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grace }
+ .party = {.NoItemDefaultMoves = sParty_Grace }
},
[TRAINER_TANYA] =
@@ -6324,7 +6324,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Tanya }
+ .party = {.NoItemDefaultMoves = sParty_Tanya }
},
[TRAINER_SHARON] =
@@ -6338,7 +6338,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Sharon }
+ .party = {.NoItemDefaultMoves = sParty_Sharon }
},
[TRAINER_NIKKI] =
@@ -6352,7 +6352,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Nikki }
+ .party = {.NoItemDefaultMoves = sParty_Nikki }
},
[TRAINER_BRENDA] =
@@ -6366,7 +6366,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brenda }
+ .party = {.NoItemDefaultMoves = sParty_Brenda }
},
[TRAINER_KATIE] =
@@ -6380,7 +6380,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Katie }
+ .party = {.NoItemDefaultMoves = sParty_Katie }
},
[TRAINER_SUSIE] =
@@ -6394,7 +6394,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Susie }
+ .party = {.NoItemDefaultMoves = sParty_Susie }
},
[TRAINER_KARA] =
@@ -6408,7 +6408,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Kara }
+ .party = {.NoItemDefaultMoves = sParty_Kara }
},
[TRAINER_DANA] =
@@ -6422,7 +6422,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Dana }
+ .party = {.NoItemDefaultMoves = sParty_Dana }
},
[TRAINER_SIENNA] =
@@ -6436,7 +6436,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Sienna }
+ .party = {.NoItemDefaultMoves = sParty_Sienna }
},
[TRAINER_DEBRA] =
@@ -6450,7 +6450,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Debra }
+ .party = {.NoItemDefaultMoves = sParty_Debra }
},
[TRAINER_LINDA] =
@@ -6464,7 +6464,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Linda }
+ .party = {.NoItemDefaultMoves = sParty_Linda }
},
[TRAINER_KAYLEE] =
@@ -6478,7 +6478,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Kaylee }
+ .party = {.NoItemDefaultMoves = sParty_Kaylee }
},
[TRAINER_LAUREL] =
@@ -6492,7 +6492,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Laurel }
+ .party = {.NoItemDefaultMoves = sParty_Laurel }
},
[TRAINER_CARLEE] =
@@ -6506,7 +6506,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Carlee }
+ .party = {.NoItemDefaultMoves = sParty_Carlee }
},
[TRAINER_JENNY_2] =
@@ -6520,7 +6520,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jenny2 }
+ .party = {.NoItemDefaultMoves = sParty_Jenny2 }
},
[TRAINER_JENNY_3] =
@@ -6534,7 +6534,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jenny3 }
+ .party = {.NoItemDefaultMoves = sParty_Jenny3 }
},
[TRAINER_JENNY_4] =
@@ -6548,7 +6548,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jenny4 }
+ .party = {.NoItemDefaultMoves = sParty_Jenny4 }
},
[TRAINER_JENNY_5] =
@@ -6562,7 +6562,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jenny5 }
+ .party = {.NoItemDefaultMoves = sParty_Jenny5 }
},
[TRAINER_HEIDI] =
@@ -6576,7 +6576,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Heidi }
+ .party = {.NoItemCustomMoves = sParty_Heidi }
},
[TRAINER_BECKY] =
@@ -6590,7 +6590,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Becky }
+ .party = {.NoItemCustomMoves = sParty_Becky }
},
[TRAINER_CAROL] =
@@ -6604,7 +6604,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Carol }
+ .party = {.NoItemDefaultMoves = sParty_Carol }
},
[TRAINER_NANCY] =
@@ -6618,7 +6618,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Nancy }
+ .party = {.NoItemDefaultMoves = sParty_Nancy }
},
[TRAINER_MARTHA] =
@@ -6632,7 +6632,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Martha }
+ .party = {.NoItemDefaultMoves = sParty_Martha }
},
[TRAINER_DIANA_1] =
@@ -6646,7 +6646,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Diana1 }
+ .party = {.NoItemDefaultMoves = sParty_Diana1 }
},
[TRAINER_CEDRIC] =
@@ -6660,7 +6660,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Cedric }
+ .party = {.NoItemCustomMoves = sParty_Cedric }
},
[TRAINER_IRENE] =
@@ -6674,7 +6674,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Irene }
+ .party = {.NoItemDefaultMoves = sParty_Irene }
},
[TRAINER_DIANA_2] =
@@ -6688,7 +6688,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Diana2 }
+ .party = {.NoItemDefaultMoves = sParty_Diana2 }
},
[TRAINER_DIANA_3] =
@@ -6702,7 +6702,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Diana3 }
+ .party = {.NoItemDefaultMoves = sParty_Diana3 }
},
[TRAINER_DIANA_4] =
@@ -6716,7 +6716,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Diana4 }
+ .party = {.NoItemDefaultMoves = sParty_Diana4 }
},
[TRAINER_DIANA_5] =
@@ -6730,7 +6730,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Diana5 }
+ .party = {.NoItemDefaultMoves = sParty_Diana5 }
},
[TRAINER_AMY_AND_LIV_1] =
@@ -6744,7 +6744,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_AmyAndLiv1 }
+ .party = {.NoItemDefaultMoves = sParty_AmyAndLiv1 }
},
[TRAINER_AMY_AND_LIV_2] =
@@ -6758,7 +6758,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_AmyAndLiv2 }
+ .party = {.NoItemDefaultMoves = sParty_AmyAndLiv2 }
},
[TRAINER_GINA_AND_MIA_1] =
@@ -6772,7 +6772,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_GinaAndMia1 }
+ .party = {.NoItemDefaultMoves = sParty_GinaAndMia1 }
},
[TRAINER_MIU_AND_YUKI] =
@@ -6786,7 +6786,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_MiuAndYuki }
+ .party = {.NoItemDefaultMoves = sParty_MiuAndYuki }
},
[TRAINER_AMY_AND_LIV_3] =
@@ -6800,7 +6800,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_AmyAndLiv3 }
+ .party = {.NoItemDefaultMoves = sParty_AmyAndLiv3 }
},
[TRAINER_GINA_AND_MIA_2] =
@@ -6814,7 +6814,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_GinaAndMia2 }
+ .party = {.NoItemCustomMoves = sParty_GinaAndMia2 }
},
[TRAINER_AMY_AND_LIV_4] =
@@ -6828,7 +6828,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_AmyAndLiv4 }
+ .party = {.NoItemDefaultMoves = sParty_AmyAndLiv4 }
},
[TRAINER_AMY_AND_LIV_5] =
@@ -6842,7 +6842,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_AmyAndLiv5 }
+ .party = {.NoItemCustomMoves = sParty_AmyAndLiv5 }
},
[TRAINER_AMY_AND_LIV_6] =
@@ -6856,7 +6856,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_AmyAndLiv6 }
+ .party = {.NoItemCustomMoves = sParty_AmyAndLiv6 }
},
[TRAINER_HUEY] =
@@ -6870,7 +6870,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Huey }
+ .party = {.NoItemDefaultMoves = sParty_Huey }
},
[TRAINER_EDMOND] =
@@ -6884,7 +6884,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Edmond }
+ .party = {.NoItemDefaultMoves = sParty_Edmond }
},
[TRAINER_ERNEST_1] =
@@ -6898,7 +6898,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Ernest1 }
+ .party = {.NoItemDefaultMoves = sParty_Ernest1 }
},
[TRAINER_DWAYNE] =
@@ -6912,7 +6912,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Dwayne }
+ .party = {.NoItemDefaultMoves = sParty_Dwayne }
},
[TRAINER_PHILLIP] =
@@ -6926,7 +6926,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Phillip }
+ .party = {.NoItemDefaultMoves = sParty_Phillip }
},
[TRAINER_LEONARD] =
@@ -6940,7 +6940,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Leonard }
+ .party = {.NoItemDefaultMoves = sParty_Leonard }
},
[TRAINER_DUNCAN] =
@@ -6954,7 +6954,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Duncan }
+ .party = {.NoItemDefaultMoves = sParty_Duncan }
},
[TRAINER_ERNEST_2] =
@@ -6968,7 +6968,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Ernest2 }
+ .party = {.NoItemDefaultMoves = sParty_Ernest2 }
},
[TRAINER_ERNEST_3] =
@@ -6982,7 +6982,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Ernest3 }
+ .party = {.NoItemDefaultMoves = sParty_Ernest3 }
},
[TRAINER_ERNEST_4] =
@@ -6996,7 +6996,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Ernest4 }
+ .party = {.NoItemDefaultMoves = sParty_Ernest4 }
},
[TRAINER_ERNEST_5] =
@@ -7010,7 +7010,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Ernest5 }
+ .party = {.NoItemDefaultMoves = sParty_Ernest5 }
},
[TRAINER_ELI] =
@@ -7024,7 +7024,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Eli }
+ .party = {.NoItemDefaultMoves = sParty_Eli }
},
[TRAINER_ANNIKA] =
@@ -7038,7 +7038,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.ItemCustomMoves = gTrainerParty_Annika }
+ .party = {.ItemCustomMoves = sParty_Annika }
},
[TRAINER_JAZMYN] =
@@ -7052,7 +7052,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jazmyn }
+ .party = {.NoItemDefaultMoves = sParty_Jazmyn }
},
[TRAINER_JONAS] =
@@ -7066,7 +7066,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Jonas }
+ .party = {.NoItemCustomMoves = sParty_Jonas }
},
[TRAINER_KAYLEY] =
@@ -7080,7 +7080,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Kayley }
+ .party = {.NoItemCustomMoves = sParty_Kayley }
},
[TRAINER_AURON] =
@@ -7094,7 +7094,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Auron }
+ .party = {.NoItemDefaultMoves = sParty_Auron }
},
[TRAINER_KELVIN] =
@@ -7108,7 +7108,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Kelvin }
+ .party = {.NoItemDefaultMoves = sParty_Kelvin }
},
[TRAINER_MARLEY] =
@@ -7122,7 +7122,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.ItemCustomMoves = gTrainerParty_Marley }
+ .party = {.ItemCustomMoves = sParty_Marley }
},
[TRAINER_REYNA] =
@@ -7136,7 +7136,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Reyna }
+ .party = {.NoItemDefaultMoves = sParty_Reyna }
},
[TRAINER_HUDSON] =
@@ -7150,7 +7150,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Hudson }
+ .party = {.NoItemDefaultMoves = sParty_Hudson }
},
[TRAINER_CONOR] =
@@ -7164,7 +7164,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Conor }
+ .party = {.NoItemDefaultMoves = sParty_Conor }
},
[TRAINER_EDWIN_1] =
@@ -7178,7 +7178,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Edwin1 }
+ .party = {.NoItemDefaultMoves = sParty_Edwin1 }
},
[TRAINER_HECTOR] =
@@ -7192,7 +7192,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Hector }
+ .party = {.NoItemDefaultMoves = sParty_Hector }
},
[TRAINER_TABITHA_1] =
@@ -7206,7 +7206,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Tabitha1 }
+ .party = {.NoItemDefaultMoves = sParty_Tabitha1 }
},
[TRAINER_EDWIN_2] =
@@ -7220,7 +7220,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Edwin2 }
+ .party = {.NoItemDefaultMoves = sParty_Edwin2 }
},
[TRAINER_EDWIN_3] =
@@ -7234,7 +7234,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Edwin3 }
+ .party = {.NoItemDefaultMoves = sParty_Edwin3 }
},
[TRAINER_EDWIN_4] =
@@ -7248,7 +7248,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Edwin4 }
+ .party = {.NoItemDefaultMoves = sParty_Edwin4 }
},
[TRAINER_EDWIN_5] =
@@ -7262,7 +7262,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Edwin5 }
+ .party = {.NoItemDefaultMoves = sParty_Edwin5 }
},
[TRAINER_WALLY_1] =
@@ -7276,7 +7276,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 5,
- .party = {.NoItemCustomMoves = gTrainerParty_Wally1 }
+ .party = {.NoItemCustomMoves = sParty_Wally1 }
},
[TRAINER_BRENDAN_1] =
@@ -7290,7 +7290,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brendan1 }
+ .party = {.NoItemDefaultMoves = sParty_Brendan1 }
},
[TRAINER_BRENDAN_2] =
@@ -7304,7 +7304,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brendan2 }
+ .party = {.NoItemDefaultMoves = sParty_Brendan2 }
},
[TRAINER_BRENDAN_3] =
@@ -7318,7 +7318,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brendan3 }
+ .party = {.NoItemDefaultMoves = sParty_Brendan3 }
},
[TRAINER_BRENDAN_4] =
@@ -7332,7 +7332,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brendan4 }
+ .party = {.NoItemDefaultMoves = sParty_Brendan4 }
},
[TRAINER_BRENDAN_5] =
@@ -7346,7 +7346,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brendan5 }
+ .party = {.NoItemDefaultMoves = sParty_Brendan5 }
},
[TRAINER_BRENDAN_6] =
@@ -7360,7 +7360,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brendan6 }
+ .party = {.NoItemDefaultMoves = sParty_Brendan6 }
},
[TRAINER_BRENDAN_7] =
@@ -7374,7 +7374,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brendan7 }
+ .party = {.NoItemDefaultMoves = sParty_Brendan7 }
},
[TRAINER_BRENDAN_8] =
@@ -7388,7 +7388,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brendan8 }
+ .party = {.NoItemDefaultMoves = sParty_Brendan8 }
},
[TRAINER_BRENDAN_9] =
@@ -7402,7 +7402,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brendan9 }
+ .party = {.NoItemDefaultMoves = sParty_Brendan9 }
},
[TRAINER_MAY_1] =
@@ -7416,7 +7416,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_May1 }
+ .party = {.NoItemDefaultMoves = sParty_May1 }
},
[TRAINER_MAY_2] =
@@ -7430,7 +7430,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_May2 }
+ .party = {.NoItemDefaultMoves = sParty_May2 }
},
[TRAINER_MAY_3] =
@@ -7444,7 +7444,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_May3 }
+ .party = {.NoItemDefaultMoves = sParty_May3 }
},
[TRAINER_MAY_4] =
@@ -7458,7 +7458,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_May4 }
+ .party = {.NoItemDefaultMoves = sParty_May4 }
},
[TRAINER_MAY_5] =
@@ -7472,7 +7472,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_May5 }
+ .party = {.NoItemDefaultMoves = sParty_May5 }
},
[TRAINER_MAY_6] =
@@ -7486,7 +7486,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_May6 }
+ .party = {.NoItemDefaultMoves = sParty_May6 }
},
[TRAINER_MAY_7] =
@@ -7500,7 +7500,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_May7 }
+ .party = {.NoItemDefaultMoves = sParty_May7 }
},
[TRAINER_MAY_8] =
@@ -7514,7 +7514,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_May8 }
+ .party = {.NoItemDefaultMoves = sParty_May8 }
},
[TRAINER_MAY_9] =
@@ -7528,7 +7528,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_May9 }
+ .party = {.NoItemDefaultMoves = sParty_May9 }
},
[TRAINER_ISAAC_1] =
@@ -7542,7 +7542,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 6,
- .party = {.NoItemDefaultMoves = gTrainerParty_Isaac1 }
+ .party = {.NoItemDefaultMoves = sParty_Isaac1 }
},
[TRAINER_DAVIS] =
@@ -7556,7 +7556,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Davis }
+ .party = {.NoItemDefaultMoves = sParty_Davis }
},
[TRAINER_MITCHELL] =
@@ -7570,7 +7570,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Mitchell }
+ .party = {.NoItemCustomMoves = sParty_Mitchell }
},
[TRAINER_ISAAC_2] =
@@ -7584,7 +7584,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 6,
- .party = {.NoItemDefaultMoves = gTrainerParty_Isaac2 }
+ .party = {.NoItemDefaultMoves = sParty_Isaac2 }
},
[TRAINER_ISAAC_3] =
@@ -7598,7 +7598,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 6,
- .party = {.NoItemDefaultMoves = gTrainerParty_Isaac3 }
+ .party = {.NoItemDefaultMoves = sParty_Isaac3 }
},
[TRAINER_ISAAC_4] =
@@ -7612,7 +7612,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 6,
- .party = {.NoItemDefaultMoves = gTrainerParty_Isaac4 }
+ .party = {.NoItemDefaultMoves = sParty_Isaac4 }
},
[TRAINER_ISAAC_5] =
@@ -7626,7 +7626,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 6,
- .party = {.NoItemDefaultMoves = gTrainerParty_Isaac5 }
+ .party = {.NoItemDefaultMoves = sParty_Isaac5 }
},
[TRAINER_LYDIA_1] =
@@ -7640,7 +7640,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 6,
- .party = {.NoItemDefaultMoves = gTrainerParty_Lydia1 }
+ .party = {.NoItemDefaultMoves = sParty_Lydia1 }
},
[TRAINER_HALLE] =
@@ -7654,7 +7654,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Halle }
+ .party = {.NoItemDefaultMoves = sParty_Halle }
},
[TRAINER_GARRISON] =
@@ -7668,7 +7668,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Garrison }
+ .party = {.NoItemDefaultMoves = sParty_Garrison }
},
[TRAINER_LYDIA_2] =
@@ -7682,7 +7682,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 6,
- .party = {.NoItemDefaultMoves = gTrainerParty_Lydia2 }
+ .party = {.NoItemDefaultMoves = sParty_Lydia2 }
},
[TRAINER_LYDIA_3] =
@@ -7696,7 +7696,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 6,
- .party = {.NoItemDefaultMoves = gTrainerParty_Lydia3 }
+ .party = {.NoItemDefaultMoves = sParty_Lydia3 }
},
[TRAINER_LYDIA_4] =
@@ -7710,7 +7710,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 6,
- .party = {.NoItemDefaultMoves = gTrainerParty_Lydia4 }
+ .party = {.NoItemDefaultMoves = sParty_Lydia4 }
},
[TRAINER_LYDIA_5] =
@@ -7724,7 +7724,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 6,
- .party = {.NoItemDefaultMoves = gTrainerParty_Lydia5 }
+ .party = {.NoItemDefaultMoves = sParty_Lydia5 }
},
[TRAINER_JACKSON_1] =
@@ -7738,7 +7738,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jackson1 }
+ .party = {.NoItemDefaultMoves = sParty_Jackson1 }
},
[TRAINER_LORENZO] =
@@ -7752,7 +7752,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Lorenzo }
+ .party = {.NoItemDefaultMoves = sParty_Lorenzo }
},
[TRAINER_SEBASTIAN] =
@@ -7766,7 +7766,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Sebastian }
+ .party = {.NoItemDefaultMoves = sParty_Sebastian }
},
[TRAINER_JACKSON_2] =
@@ -7780,7 +7780,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jackson2 }
+ .party = {.NoItemDefaultMoves = sParty_Jackson2 }
},
[TRAINER_JACKSON_3] =
@@ -7794,7 +7794,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jackson3 }
+ .party = {.NoItemDefaultMoves = sParty_Jackson3 }
},
[TRAINER_JACKSON_4] =
@@ -7808,7 +7808,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jackson4 }
+ .party = {.NoItemDefaultMoves = sParty_Jackson4 }
},
[TRAINER_JACKSON_5] =
@@ -7822,7 +7822,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jackson5 }
+ .party = {.NoItemDefaultMoves = sParty_Jackson5 }
},
[TRAINER_CATHERINE_1] =
@@ -7836,7 +7836,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Catherine1 }
+ .party = {.NoItemDefaultMoves = sParty_Catherine1 }
},
[TRAINER_JENNA] =
@@ -7850,7 +7850,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jenna }
+ .party = {.NoItemDefaultMoves = sParty_Jenna }
},
[TRAINER_SOPHIA] =
@@ -7864,7 +7864,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Sophia }
+ .party = {.NoItemDefaultMoves = sParty_Sophia }
},
[TRAINER_CATHERINE_2] =
@@ -7878,7 +7878,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Catherine2 }
+ .party = {.NoItemDefaultMoves = sParty_Catherine2 }
},
[TRAINER_CATHERINE_3] =
@@ -7892,7 +7892,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Catherine3 }
+ .party = {.NoItemDefaultMoves = sParty_Catherine3 }
},
[TRAINER_CATHERINE_4] =
@@ -7906,7 +7906,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Catherine4 }
+ .party = {.NoItemDefaultMoves = sParty_Catherine4 }
},
[TRAINER_CATHERINE_5] =
@@ -7920,7 +7920,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Catherine5 }
+ .party = {.NoItemDefaultMoves = sParty_Catherine5 }
},
[TRAINER_JULIO] =
@@ -7934,7 +7934,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Julio }
+ .party = {.NoItemDefaultMoves = sParty_Julio }
},
[TRAINER_GRUNT_27] =
@@ -7948,7 +7948,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt27 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt27 }
},
[TRAINER_GRUNT_28] =
@@ -7962,7 +7962,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt28 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt28 }
},
[TRAINER_GRUNT_29] =
@@ -7976,7 +7976,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt29 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt29 }
},
[TRAINER_GRUNT_30] =
@@ -7990,7 +7990,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt30 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt30 }
},
[TRAINER_MARC] =
@@ -8004,7 +8004,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Marc }
+ .party = {.NoItemDefaultMoves = sParty_Marc }
},
[TRAINER_BRENDEN] =
@@ -8018,7 +8018,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brenden }
+ .party = {.NoItemDefaultMoves = sParty_Brenden }
},
[TRAINER_LILITH] =
@@ -8032,7 +8032,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Lilith }
+ .party = {.NoItemDefaultMoves = sParty_Lilith }
},
[TRAINER_CRISTIAN] =
@@ -8046,7 +8046,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cristian }
+ .party = {.NoItemDefaultMoves = sParty_Cristian }
},
[TRAINER_SYLVIA] =
@@ -8060,7 +8060,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Sylvia }
+ .party = {.NoItemDefaultMoves = sParty_Sylvia }
},
[TRAINER_LEONARDO] =
@@ -8074,7 +8074,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Leonardo }
+ .party = {.NoItemDefaultMoves = sParty_Leonardo }
},
[TRAINER_ATHENA] =
@@ -8088,7 +8088,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.ItemCustomMoves = gTrainerParty_Athena }
+ .party = {.ItemCustomMoves = sParty_Athena }
},
[TRAINER_HARRISON] =
@@ -8102,7 +8102,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Harrison }
+ .party = {.NoItemDefaultMoves = sParty_Harrison }
},
[TRAINER_GRUNT_31] =
@@ -8116,7 +8116,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt31 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt31 }
},
[TRAINER_CLARENCE] =
@@ -8130,7 +8130,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Clarence }
+ .party = {.NoItemDefaultMoves = sParty_Clarence }
},
[TRAINER_TERRY] =
@@ -8144,7 +8144,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Terry }
+ .party = {.NoItemDefaultMoves = sParty_Terry }
},
[TRAINER_NATE] =
@@ -8158,7 +8158,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Nate }
+ .party = {.NoItemDefaultMoves = sParty_Nate }
},
[TRAINER_KATHLEEN] =
@@ -8172,7 +8172,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Kathleen }
+ .party = {.NoItemDefaultMoves = sParty_Kathleen }
},
[TRAINER_CLIFFORD] =
@@ -8186,7 +8186,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Clifford }
+ .party = {.NoItemDefaultMoves = sParty_Clifford }
},
[TRAINER_NICHOLAS] =
@@ -8200,7 +8200,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Nicholas }
+ .party = {.NoItemDefaultMoves = sParty_Nicholas }
},
[TRAINER_GRUNT_32] =
@@ -8214,7 +8214,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt32 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt32 }
},
[TRAINER_GRUNT_33] =
@@ -8228,7 +8228,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt33 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt33 }
},
[TRAINER_GRUNT_34] =
@@ -8242,7 +8242,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt34 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt34 }
},
[TRAINER_GRUNT_35] =
@@ -8256,7 +8256,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt35 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt35 }
},
[TRAINER_GRUNT_36] =
@@ -8270,7 +8270,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt36 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt36 }
},
[TRAINER_MACEY] =
@@ -8284,7 +8284,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Macey }
+ .party = {.NoItemDefaultMoves = sParty_Macey }
},
[TRAINER_BRENDAN_10] =
@@ -8298,7 +8298,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brendan10 }
+ .party = {.NoItemDefaultMoves = sParty_Brendan10 }
},
[TRAINER_BRENDAN_11] =
@@ -8312,7 +8312,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brendan11 }
+ .party = {.NoItemDefaultMoves = sParty_Brendan11 }
},
[TRAINER_PAXTON] =
@@ -8326,7 +8326,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Paxton }
+ .party = {.NoItemDefaultMoves = sParty_Paxton }
},
[TRAINER_ISABELLA] =
@@ -8340,7 +8340,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Isabella }
+ .party = {.NoItemDefaultMoves = sParty_Isabella }
},
[TRAINER_GRUNT_37] =
@@ -8354,7 +8354,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt37 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt37 }
},
[TRAINER_TABITHA_2] =
@@ -8368,7 +8368,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 4,
- .party = {.NoItemDefaultMoves = gTrainerParty_Tabitha2 }
+ .party = {.NoItemDefaultMoves = sParty_Tabitha2 }
},
[TRAINER_JONATHAN] =
@@ -8382,7 +8382,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jonathan }
+ .party = {.NoItemDefaultMoves = sParty_Jonathan }
},
[TRAINER_BRENDAN_12] =
@@ -8396,7 +8396,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brendan12 }
+ .party = {.NoItemDefaultMoves = sParty_Brendan12 }
},
[TRAINER_MAY_10] =
@@ -8410,7 +8410,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_May10 }
+ .party = {.NoItemDefaultMoves = sParty_May10 }
},
[TRAINER_MAXIE_1] =
@@ -8424,7 +8424,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Maxie1 }
+ .party = {.NoItemDefaultMoves = sParty_Maxie1 }
},
[TRAINER_MAXIE_2] =
@@ -8438,7 +8438,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Maxie2 }
+ .party = {.NoItemDefaultMoves = sParty_Maxie2 }
},
[TRAINER_TIANA] =
@@ -8452,7 +8452,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Tiana }
+ .party = {.NoItemDefaultMoves = sParty_Tiana }
},
[TRAINER_HALEY_1] =
@@ -8466,7 +8466,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Haley1 }
+ .party = {.NoItemDefaultMoves = sParty_Haley1 }
},
[TRAINER_JANICE] =
@@ -8480,7 +8480,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Janice }
+ .party = {.NoItemDefaultMoves = sParty_Janice }
},
[TRAINER_VIVI] =
@@ -8494,7 +8494,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Vivi }
+ .party = {.NoItemDefaultMoves = sParty_Vivi }
},
[TRAINER_HALEY_2] =
@@ -8508,7 +8508,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Haley2 }
+ .party = {.NoItemDefaultMoves = sParty_Haley2 }
},
[TRAINER_HALEY_3] =
@@ -8522,7 +8522,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Haley3 }
+ .party = {.NoItemDefaultMoves = sParty_Haley3 }
},
[TRAINER_HALEY_4] =
@@ -8536,7 +8536,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Haley4 }
+ .party = {.NoItemDefaultMoves = sParty_Haley4 }
},
[TRAINER_HALEY_5] =
@@ -8550,7 +8550,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Haley5 }
+ .party = {.NoItemDefaultMoves = sParty_Haley5 }
},
[TRAINER_SALLY] =
@@ -8564,7 +8564,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Sally }
+ .party = {.NoItemDefaultMoves = sParty_Sally }
},
[TRAINER_ROBIN] =
@@ -8578,7 +8578,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Robin }
+ .party = {.NoItemDefaultMoves = sParty_Robin }
},
[TRAINER_ANDREA] =
@@ -8592,7 +8592,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Andrea }
+ .party = {.NoItemDefaultMoves = sParty_Andrea }
},
[TRAINER_CRISSY] =
@@ -8606,7 +8606,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Crissy }
+ .party = {.NoItemDefaultMoves = sParty_Crissy }
},
[TRAINER_RICK] =
@@ -8620,7 +8620,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Rick }
+ .party = {.NoItemDefaultMoves = sParty_Rick }
},
[TRAINER_LYLE] =
@@ -8634,7 +8634,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 4,
- .party = {.NoItemDefaultMoves = gTrainerParty_Lyle }
+ .party = {.NoItemDefaultMoves = sParty_Lyle }
},
[TRAINER_JOSE] =
@@ -8648,7 +8648,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jose }
+ .party = {.NoItemDefaultMoves = sParty_Jose }
},
[TRAINER_DOUG] =
@@ -8662,7 +8662,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Doug }
+ .party = {.NoItemDefaultMoves = sParty_Doug }
},
[TRAINER_GREG] =
@@ -8676,7 +8676,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Greg }
+ .party = {.NoItemDefaultMoves = sParty_Greg }
},
[TRAINER_KENT] =
@@ -8690,7 +8690,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Kent }
+ .party = {.NoItemDefaultMoves = sParty_Kent }
},
[TRAINER_JAMES_1] =
@@ -8704,7 +8704,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_James1 }
+ .party = {.NoItemDefaultMoves = sParty_James1 }
},
[TRAINER_JAMES_2] =
@@ -8718,7 +8718,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_James2 }
+ .party = {.NoItemDefaultMoves = sParty_James2 }
},
[TRAINER_JAMES_3] =
@@ -8732,7 +8732,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_James3 }
+ .party = {.NoItemDefaultMoves = sParty_James3 }
},
[TRAINER_JAMES_4] =
@@ -8746,7 +8746,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_James4 }
+ .party = {.NoItemDefaultMoves = sParty_James4 }
},
[TRAINER_JAMES_5] =
@@ -8760,7 +8760,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 4,
- .party = {.NoItemDefaultMoves = gTrainerParty_James5 }
+ .party = {.NoItemDefaultMoves = sParty_James5 }
},
[TRAINER_BRICE] =
@@ -8774,7 +8774,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brice }
+ .party = {.NoItemDefaultMoves = sParty_Brice }
},
[TRAINER_TRENT_1] =
@@ -8788,7 +8788,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Trent1 }
+ .party = {.NoItemDefaultMoves = sParty_Trent1 }
},
[TRAINER_LENNY] =
@@ -8802,7 +8802,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Lenny }
+ .party = {.NoItemDefaultMoves = sParty_Lenny }
},
[TRAINER_LUCAS_1] =
@@ -8816,7 +8816,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Lucas1 }
+ .party = {.NoItemDefaultMoves = sParty_Lucas1 }
},
[TRAINER_ALAN] =
@@ -8830,7 +8830,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Alan }
+ .party = {.NoItemDefaultMoves = sParty_Alan }
},
[TRAINER_CLARK] =
@@ -8844,7 +8844,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Clark }
+ .party = {.NoItemDefaultMoves = sParty_Clark }
},
[TRAINER_ERIC] =
@@ -8858,7 +8858,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Eric }
+ .party = {.NoItemDefaultMoves = sParty_Eric }
},
[TRAINER_LUCAS_2] =
@@ -8872,7 +8872,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Lucas2 }
+ .party = {.NoItemCustomMoves = sParty_Lucas2 }
},
[TRAINER_MIKE_1] =
@@ -8886,7 +8886,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Mike1 }
+ .party = {.NoItemCustomMoves = sParty_Mike1 }
},
[TRAINER_MIKE_2] =
@@ -8900,7 +8900,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Mike2 }
+ .party = {.NoItemDefaultMoves = sParty_Mike2 }
},
[TRAINER_TRENT_2] =
@@ -8914,7 +8914,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 4,
- .party = {.NoItemDefaultMoves = gTrainerParty_Trent2 }
+ .party = {.NoItemDefaultMoves = sParty_Trent2 }
},
[TRAINER_TRENT_3] =
@@ -8928,7 +8928,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 4,
- .party = {.NoItemDefaultMoves = gTrainerParty_Trent3 }
+ .party = {.NoItemDefaultMoves = sParty_Trent3 }
},
[TRAINER_TRENT_4] =
@@ -8942,7 +8942,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 4,
- .party = {.NoItemDefaultMoves = gTrainerParty_Trent4 }
+ .party = {.NoItemDefaultMoves = sParty_Trent4 }
},
[TRAINER_TRENT_5] =
@@ -8956,7 +8956,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 4,
- .party = {.NoItemDefaultMoves = gTrainerParty_Trent5 }
+ .party = {.NoItemDefaultMoves = sParty_Trent5 }
},
[TRAINER_DEZ_AND_LUKE] =
@@ -8970,7 +8970,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_DezAndLuke }
+ .party = {.NoItemDefaultMoves = sParty_DezAndLuke }
},
[TRAINER_LEA_AND_JED] =
@@ -8984,7 +8984,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_LeaAndJed }
+ .party = {.NoItemDefaultMoves = sParty_LeaAndJed }
},
[TRAINER_KIRA_AND_DAN_1] =
@@ -8998,7 +8998,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_KiraAndDan1 }
+ .party = {.NoItemDefaultMoves = sParty_KiraAndDan1 }
},
[TRAINER_KIRA_AND_DAN_2] =
@@ -9012,7 +9012,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_KiraAndDan2 }
+ .party = {.NoItemDefaultMoves = sParty_KiraAndDan2 }
},
[TRAINER_KIRA_AND_DAN_3] =
@@ -9026,7 +9026,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_KiraAndDan3 }
+ .party = {.NoItemDefaultMoves = sParty_KiraAndDan3 }
},
[TRAINER_KIRA_AND_DAN_4] =
@@ -9040,7 +9040,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_KiraAndDan4 }
+ .party = {.NoItemDefaultMoves = sParty_KiraAndDan4 }
},
[TRAINER_KIRA_AND_DAN_5] =
@@ -9054,7 +9054,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_KiraAndDan5 }
+ .party = {.NoItemDefaultMoves = sParty_KiraAndDan5 }
},
[TRAINER_JOHANNA] =
@@ -9068,7 +9068,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Johanna }
+ .party = {.NoItemDefaultMoves = sParty_Johanna }
},
[TRAINER_GERALD] =
@@ -9082,7 +9082,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Gerald }
+ .party = {.NoItemCustomMoves = sParty_Gerald }
},
[TRAINER_VIVIAN] =
@@ -9096,7 +9096,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Vivian }
+ .party = {.NoItemCustomMoves = sParty_Vivian }
},
[TRAINER_DANIELLE] =
@@ -9110,7 +9110,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Danielle }
+ .party = {.NoItemCustomMoves = sParty_Danielle }
},
[TRAINER_HIDEO] =
@@ -9124,7 +9124,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Hideo }
+ .party = {.NoItemCustomMoves = sParty_Hideo }
},
[TRAINER_KEIGO] =
@@ -9138,7 +9138,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Keigo }
+ .party = {.NoItemCustomMoves = sParty_Keigo }
},
[TRAINER_RILEY] =
@@ -9152,7 +9152,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_Riley }
+ .party = {.NoItemCustomMoves = sParty_Riley }
},
[TRAINER_FLINT] =
@@ -9166,7 +9166,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Flint }
+ .party = {.NoItemDefaultMoves = sParty_Flint }
},
[TRAINER_ASHLEY] =
@@ -9180,7 +9180,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Ashley }
+ .party = {.NoItemDefaultMoves = sParty_Ashley }
},
[TRAINER_WALLY_2] =
@@ -9194,7 +9194,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Wally2 }
+ .party = {.NoItemDefaultMoves = sParty_Wally2 }
},
[TRAINER_WALLY_3] =
@@ -9208,7 +9208,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 5,
- .party = {.NoItemCustomMoves = gTrainerParty_Wally3 }
+ .party = {.NoItemCustomMoves = sParty_Wally3 }
},
[TRAINER_WALLY_4] =
@@ -9222,7 +9222,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 5,
- .party = {.NoItemCustomMoves = gTrainerParty_Wally4 }
+ .party = {.NoItemCustomMoves = sParty_Wally4 }
},
[TRAINER_WALLY_5] =
@@ -9236,7 +9236,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 5,
- .party = {.NoItemCustomMoves = gTrainerParty_Wally5 }
+ .party = {.NoItemCustomMoves = sParty_Wally5 }
},
[TRAINER_WALLY_6] =
@@ -9250,7 +9250,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 5,
- .party = {.NoItemCustomMoves = gTrainerParty_Wally6 }
+ .party = {.NoItemCustomMoves = sParty_Wally6 }
},
[TRAINER_BRENDAN_13] =
@@ -9264,7 +9264,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 4,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brendan13 }
+ .party = {.NoItemDefaultMoves = sParty_Brendan13 }
},
[TRAINER_BRENDAN_14] =
@@ -9278,7 +9278,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 4,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brendan14 }
+ .party = {.NoItemDefaultMoves = sParty_Brendan14 }
},
[TRAINER_BRENDAN_15] =
@@ -9292,7 +9292,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 4,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brendan15 }
+ .party = {.NoItemDefaultMoves = sParty_Brendan15 }
},
[TRAINER_MAY_11] =
@@ -9306,7 +9306,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 4,
- .party = {.NoItemDefaultMoves = gTrainerParty_May11 }
+ .party = {.NoItemDefaultMoves = sParty_May11 }
},
[TRAINER_MAY_12] =
@@ -9320,7 +9320,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 4,
- .party = {.NoItemDefaultMoves = gTrainerParty_May12 }
+ .party = {.NoItemDefaultMoves = sParty_May12 }
},
[TRAINER_MAY_13] =
@@ -9334,7 +9334,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 4,
- .party = {.NoItemDefaultMoves = gTrainerParty_May13 }
+ .party = {.NoItemDefaultMoves = sParty_May13 }
},
[TRAINER_JONAH] =
@@ -9348,7 +9348,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jonah }
+ .party = {.NoItemDefaultMoves = sParty_Jonah }
},
[TRAINER_HENRY] =
@@ -9362,7 +9362,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Henry }
+ .party = {.NoItemDefaultMoves = sParty_Henry }
},
[TRAINER_ROGER] =
@@ -9376,7 +9376,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Roger }
+ .party = {.NoItemDefaultMoves = sParty_Roger }
},
[TRAINER_ALEXA] =
@@ -9390,7 +9390,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Alexa }
+ .party = {.NoItemDefaultMoves = sParty_Alexa }
},
[TRAINER_RUBEN] =
@@ -9404,7 +9404,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Ruben }
+ .party = {.NoItemDefaultMoves = sParty_Ruben }
},
[TRAINER_KOJI_1] =
@@ -9418,7 +9418,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Koji1 }
+ .party = {.NoItemDefaultMoves = sParty_Koji1 }
},
[TRAINER_WAYNE] =
@@ -9432,7 +9432,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Wayne }
+ .party = {.NoItemDefaultMoves = sParty_Wayne }
},
[TRAINER_AIDAN] =
@@ -9446,7 +9446,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Aidan }
+ .party = {.NoItemDefaultMoves = sParty_Aidan }
},
[TRAINER_REED] =
@@ -9460,7 +9460,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Reed }
+ .party = {.NoItemDefaultMoves = sParty_Reed }
},
[TRAINER_TISHA] =
@@ -9474,7 +9474,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Tisha }
+ .party = {.NoItemDefaultMoves = sParty_Tisha }
},
[TRAINER_TORI_AND_TIA] =
@@ -9488,7 +9488,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_ToriAndTia }
+ .party = {.NoItemDefaultMoves = sParty_ToriAndTia }
},
[TRAINER_KIM_AND_IRIS] =
@@ -9502,7 +9502,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_KimAndIris }
+ .party = {.NoItemCustomMoves = sParty_KimAndIris }
},
[TRAINER_TYRA_AND_IVY] =
@@ -9516,7 +9516,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_TyraAndIvy }
+ .party = {.NoItemCustomMoves = sParty_TyraAndIvy }
},
[TRAINER_MEL_AND_PAUL] =
@@ -9530,7 +9530,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_MelAndPaul }
+ .party = {.NoItemCustomMoves = sParty_MelAndPaul }
},
[TRAINER_JOHN_AND_JAY_1] =
@@ -9544,7 +9544,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_JohnAndJay1 }
+ .party = {.NoItemCustomMoves = sParty_JohnAndJay1 }
},
[TRAINER_JOHN_AND_JAY_2] =
@@ -9558,7 +9558,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_JohnAndJay2 }
+ .party = {.NoItemCustomMoves = sParty_JohnAndJay2 }
},
[TRAINER_JOHN_AND_JAY_3] =
@@ -9572,7 +9572,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_JohnAndJay3 }
+ .party = {.NoItemCustomMoves = sParty_JohnAndJay3 }
},
[TRAINER_JOHN_AND_JAY_4] =
@@ -9586,7 +9586,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_SETUP_FIRST_TURN,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_JohnAndJay4 }
+ .party = {.NoItemCustomMoves = sParty_JohnAndJay4 }
},
[TRAINER_JOHN_AND_JAY_5] =
@@ -9600,7 +9600,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemCustomMoves = gTrainerParty_JohnAndJay5 }
+ .party = {.NoItemCustomMoves = sParty_JohnAndJay5 }
},
[TRAINER_RELI_AND_IAN] =
@@ -9614,7 +9614,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_ReliAndIan }
+ .party = {.NoItemDefaultMoves = sParty_ReliAndIan }
},
[TRAINER_LILA_AND_ROY_1] =
@@ -9628,7 +9628,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_LilaAndRoy1 }
+ .party = {.NoItemDefaultMoves = sParty_LilaAndRoy1 }
},
[TRAINER_LILA_AND_ROY_2] =
@@ -9642,7 +9642,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_LilaAndRoy2 }
+ .party = {.NoItemDefaultMoves = sParty_LilaAndRoy2 }
},
[TRAINER_LILA_AND_ROY_3] =
@@ -9656,7 +9656,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_LilaAndRoy3 }
+ .party = {.NoItemDefaultMoves = sParty_LilaAndRoy3 }
},
[TRAINER_LILA_AND_ROY_4] =
@@ -9670,7 +9670,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_LilaAndRoy4 }
+ .party = {.NoItemDefaultMoves = sParty_LilaAndRoy4 }
},
[TRAINER_LILA_AND_ROY_5] =
@@ -9684,7 +9684,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_LilaAndRoy5 }
+ .party = {.NoItemDefaultMoves = sParty_LilaAndRoy5 }
},
[TRAINER_LISA_AND_RAY] =
@@ -9698,7 +9698,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_LisaAndRay }
+ .party = {.NoItemDefaultMoves = sParty_LisaAndRay }
},
[TRAINER_CHRIS] =
@@ -9712,7 +9712,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 4,
- .party = {.NoItemDefaultMoves = gTrainerParty_Chris }
+ .party = {.NoItemDefaultMoves = sParty_Chris }
},
[TRAINER_DAWSON] =
@@ -9726,7 +9726,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.ItemDefaultMoves = gTrainerParty_Dawson }
+ .party = {.ItemDefaultMoves = sParty_Dawson }
},
[TRAINER_SARAH] =
@@ -9740,7 +9740,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.ItemDefaultMoves = gTrainerParty_Sarah }
+ .party = {.ItemDefaultMoves = sParty_Sarah }
},
[TRAINER_DARIAN] =
@@ -9754,7 +9754,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Darian }
+ .party = {.NoItemDefaultMoves = sParty_Darian }
},
[TRAINER_HAILEY] =
@@ -9768,7 +9768,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Hailey }
+ .party = {.NoItemDefaultMoves = sParty_Hailey }
},
[TRAINER_CHANDLER] =
@@ -9782,7 +9782,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Chandler }
+ .party = {.NoItemDefaultMoves = sParty_Chandler }
},
[TRAINER_KALEB] =
@@ -9796,7 +9796,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.ItemDefaultMoves = gTrainerParty_Kaleb }
+ .party = {.ItemDefaultMoves = sParty_Kaleb }
},
[TRAINER_JOSEPH] =
@@ -9810,7 +9810,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Joseph }
+ .party = {.NoItemDefaultMoves = sParty_Joseph }
},
[TRAINER_ALYSSA] =
@@ -9824,7 +9824,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Alyssa }
+ .party = {.NoItemDefaultMoves = sParty_Alyssa }
},
[TRAINER_MARCOS] =
@@ -9838,7 +9838,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Marcos }
+ .party = {.NoItemDefaultMoves = sParty_Marcos }
},
[TRAINER_RHETT] =
@@ -9852,7 +9852,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Rhett }
+ .party = {.NoItemDefaultMoves = sParty_Rhett }
},
[TRAINER_TYRON] =
@@ -9866,7 +9866,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Tyron }
+ .party = {.NoItemDefaultMoves = sParty_Tyron }
},
[TRAINER_CELINA] =
@@ -9880,7 +9880,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Celina }
+ .party = {.NoItemDefaultMoves = sParty_Celina }
},
[TRAINER_BIANCA] =
@@ -9894,7 +9894,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Bianca }
+ .party = {.NoItemDefaultMoves = sParty_Bianca }
},
[TRAINER_HAYDEN] =
@@ -9908,7 +9908,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Hayden }
+ .party = {.NoItemDefaultMoves = sParty_Hayden }
},
[TRAINER_SOPHIE] =
@@ -9922,7 +9922,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Sophie }
+ .party = {.NoItemDefaultMoves = sParty_Sophie }
},
[TRAINER_COBY] =
@@ -9936,7 +9936,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Coby }
+ .party = {.NoItemDefaultMoves = sParty_Coby }
},
[TRAINER_LAWRENCE] =
@@ -9950,7 +9950,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Lawrence }
+ .party = {.NoItemDefaultMoves = sParty_Lawrence }
},
[TRAINER_WYATT] =
@@ -9964,7 +9964,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Wyatt }
+ .party = {.NoItemDefaultMoves = sParty_Wyatt }
},
[TRAINER_ANGELINA] =
@@ -9978,7 +9978,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Angelina }
+ .party = {.NoItemDefaultMoves = sParty_Angelina }
},
[TRAINER_KAI] =
@@ -9992,7 +9992,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Kai }
+ .party = {.NoItemDefaultMoves = sParty_Kai }
},
[TRAINER_CHARLOTTE] =
@@ -10006,7 +10006,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Charlotte }
+ .party = {.NoItemDefaultMoves = sParty_Charlotte }
},
[TRAINER_DEANDRE] =
@@ -10020,7 +10020,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Deandre }
+ .party = {.NoItemDefaultMoves = sParty_Deandre }
},
[TRAINER_GRUNT_38] =
@@ -10034,7 +10034,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt38 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt38 }
},
[TRAINER_GRUNT_39] =
@@ -10048,7 +10048,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt39 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt39 }
},
[TRAINER_GRUNT_40] =
@@ -10062,7 +10062,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt40 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt40 }
},
[TRAINER_GRUNT_41] =
@@ -10076,7 +10076,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt41 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt41 }
},
[TRAINER_GRUNT_42] =
@@ -10090,7 +10090,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt42 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt42 }
},
[TRAINER_GRUNT_43] =
@@ -10104,7 +10104,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt43 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt43 }
},
[TRAINER_GRUNT_44] =
@@ -10118,7 +10118,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt44 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt44 }
},
[TRAINER_GRUNT_45] =
@@ -10132,7 +10132,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt45 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt45 }
},
[TRAINER_GRUNT_46] =
@@ -10146,7 +10146,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt46 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt46 }
},
[TRAINER_GRUNT_47] =
@@ -10160,7 +10160,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt47 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt47 }
},
[TRAINER_GRUNT_48] =
@@ -10174,7 +10174,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt48 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt48 }
},
[TRAINER_GRUNT_49] =
@@ -10188,7 +10188,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt49 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt49 }
},
[TRAINER_GRUNT_50] =
@@ -10202,7 +10202,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt50 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt50 }
},
[TRAINER_GRUNT_51] =
@@ -10216,7 +10216,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt51 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt51 }
},
[TRAINER_GRUNT_52] =
@@ -10230,7 +10230,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt52 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt52 }
},
[TRAINER_GRUNT_53] =
@@ -10244,7 +10244,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Grunt53 }
+ .party = {.NoItemDefaultMoves = sParty_Grunt53 }
},
[TRAINER_TABITHA_3] =
@@ -10258,7 +10258,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 4,
- .party = {.NoItemDefaultMoves = gTrainerParty_Tabitha3 }
+ .party = {.NoItemDefaultMoves = sParty_Tabitha3 }
},
[TRAINER_DARCY] =
@@ -10272,7 +10272,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Darcy }
+ .party = {.NoItemDefaultMoves = sParty_Darcy }
},
[TRAINER_MAXIE_3] =
@@ -10286,7 +10286,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Maxie3 }
+ .party = {.NoItemDefaultMoves = sParty_Maxie3 }
},
[TRAINER_PETE] =
@@ -10300,7 +10300,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Pete }
+ .party = {.NoItemDefaultMoves = sParty_Pete }
},
[TRAINER_ISABELLE] =
@@ -10314,7 +10314,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Isabelle }
+ .party = {.NoItemDefaultMoves = sParty_Isabelle }
},
[TRAINER_ANDRES_1] =
@@ -10328,7 +10328,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Andres1 }
+ .party = {.NoItemDefaultMoves = sParty_Andres1 }
},
[TRAINER_JOSUE] =
@@ -10342,7 +10342,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Josue }
+ .party = {.NoItemDefaultMoves = sParty_Josue }
},
[TRAINER_CAMRON] =
@@ -10356,7 +10356,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Camron }
+ .party = {.NoItemDefaultMoves = sParty_Camron }
},
[TRAINER_CORY_1] =
@@ -10370,7 +10370,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cory1 }
+ .party = {.NoItemDefaultMoves = sParty_Cory1 }
},
[TRAINER_CAROLINA] =
@@ -10384,7 +10384,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Carolina }
+ .party = {.NoItemDefaultMoves = sParty_Carolina }
},
[TRAINER_ELIJAH] =
@@ -10398,7 +10398,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Elijah }
+ .party = {.NoItemDefaultMoves = sParty_Elijah }
},
[TRAINER_CELIA] =
@@ -10412,7 +10412,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Celia }
+ .party = {.NoItemDefaultMoves = sParty_Celia }
},
[TRAINER_BRYAN] =
@@ -10426,7 +10426,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Bryan }
+ .party = {.NoItemDefaultMoves = sParty_Bryan }
},
[TRAINER_BRANDEN] =
@@ -10440,7 +10440,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Branden }
+ .party = {.NoItemDefaultMoves = sParty_Branden }
},
[TRAINER_BRYANT] =
@@ -10454,7 +10454,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Bryant }
+ .party = {.NoItemDefaultMoves = sParty_Bryant }
},
[TRAINER_SHAYLA] =
@@ -10468,7 +10468,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Shayla }
+ .party = {.NoItemDefaultMoves = sParty_Shayla }
},
[TRAINER_KYRA] =
@@ -10482,7 +10482,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Kyra }
+ .party = {.NoItemDefaultMoves = sParty_Kyra }
},
[TRAINER_JAIDEN] =
@@ -10496,7 +10496,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Jaiden }
+ .party = {.NoItemDefaultMoves = sParty_Jaiden }
},
[TRAINER_ALIX] =
@@ -10510,7 +10510,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Alix }
+ .party = {.NoItemDefaultMoves = sParty_Alix }
},
[TRAINER_HELENE] =
@@ -10524,7 +10524,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Helene }
+ .party = {.NoItemDefaultMoves = sParty_Helene }
},
[TRAINER_MARLENE] =
@@ -10538,7 +10538,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Marlene }
+ .party = {.NoItemDefaultMoves = sParty_Marlene }
},
[TRAINER_DEVAN] =
@@ -10552,7 +10552,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Devan }
+ .party = {.NoItemDefaultMoves = sParty_Devan }
},
[TRAINER_JOHNSON] =
@@ -10566,7 +10566,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Johnson }
+ .party = {.NoItemDefaultMoves = sParty_Johnson }
},
[TRAINER_MELINA] =
@@ -10580,7 +10580,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Melina }
+ .party = {.NoItemDefaultMoves = sParty_Melina }
},
[TRAINER_BRANDI] =
@@ -10594,7 +10594,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brandi }
+ .party = {.NoItemDefaultMoves = sParty_Brandi }
},
[TRAINER_AISHA] =
@@ -10608,7 +10608,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Aisha }
+ .party = {.NoItemDefaultMoves = sParty_Aisha }
},
[TRAINER_MAKAYLA] =
@@ -10622,7 +10622,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Makayla }
+ .party = {.NoItemDefaultMoves = sParty_Makayla }
},
[TRAINER_FABIAN] =
@@ -10636,7 +10636,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Fabian }
+ .party = {.NoItemDefaultMoves = sParty_Fabian }
},
[TRAINER_DAYTON] =
@@ -10650,7 +10650,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Dayton }
+ .party = {.NoItemDefaultMoves = sParty_Dayton }
},
[TRAINER_RACHEL] =
@@ -10664,7 +10664,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Rachel }
+ .party = {.NoItemDefaultMoves = sParty_Rachel }
},
[TRAINER_LEONEL] =
@@ -10678,7 +10678,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemCustomMoves = gTrainerParty_Leonel }
+ .party = {.NoItemCustomMoves = sParty_Leonel }
},
[TRAINER_CALLIE] =
@@ -10692,7 +10692,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Callie }
+ .party = {.NoItemDefaultMoves = sParty_Callie }
},
[TRAINER_CALE] =
@@ -10706,7 +10706,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cale }
+ .party = {.NoItemDefaultMoves = sParty_Cale }
},
[TRAINER_MYLES] =
@@ -10720,7 +10720,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 6,
- .party = {.NoItemDefaultMoves = gTrainerParty_Myles }
+ .party = {.NoItemDefaultMoves = sParty_Myles }
},
[TRAINER_PAT] =
@@ -10734,7 +10734,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 6,
- .party = {.NoItemDefaultMoves = gTrainerParty_Pat }
+ .party = {.NoItemDefaultMoves = sParty_Pat }
},
[TRAINER_CRISTIN_1] =
@@ -10748,7 +10748,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cristin1 }
+ .party = {.NoItemDefaultMoves = sParty_Cristin1 }
},
[TRAINER_MAY_14] =
@@ -10762,7 +10762,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_May14 }
+ .party = {.NoItemDefaultMoves = sParty_May14 }
},
[TRAINER_MAY_15] =
@@ -10776,7 +10776,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_May15 }
+ .party = {.NoItemDefaultMoves = sParty_May15 }
},
[TRAINER_ROXANNE_2] =
@@ -10790,7 +10790,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 4,
- .party = {.ItemCustomMoves = gTrainerParty_Roxanne2 }
+ .party = {.ItemCustomMoves = sParty_Roxanne2 }
},
[TRAINER_ROXANNE_3] =
@@ -10804,7 +10804,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 5,
- .party = {.ItemCustomMoves = gTrainerParty_Roxanne3 }
+ .party = {.ItemCustomMoves = sParty_Roxanne3 }
},
[TRAINER_ROXANNE_4] =
@@ -10818,7 +10818,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 5,
- .party = {.ItemCustomMoves = gTrainerParty_Roxanne4 }
+ .party = {.ItemCustomMoves = sParty_Roxanne4 }
},
[TRAINER_ROXANNE_5] =
@@ -10832,7 +10832,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 6,
- .party = {.ItemCustomMoves = gTrainerParty_Roxanne5 }
+ .party = {.ItemCustomMoves = sParty_Roxanne5 }
},
[TRAINER_BRAWLY_2] =
@@ -10846,7 +10846,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 4,
- .party = {.ItemCustomMoves = gTrainerParty_Brawly2 }
+ .party = {.ItemCustomMoves = sParty_Brawly2 }
},
[TRAINER_BRAWLY_3] =
@@ -10860,7 +10860,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 4,
- .party = {.ItemCustomMoves = gTrainerParty_Brawly3 }
+ .party = {.ItemCustomMoves = sParty_Brawly3 }
},
[TRAINER_BRAWLY_4] =
@@ -10874,7 +10874,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 5,
- .party = {.ItemCustomMoves = gTrainerParty_Brawly4 }
+ .party = {.ItemCustomMoves = sParty_Brawly4 }
},
[TRAINER_BRAWLY_5] =
@@ -10888,7 +10888,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 6,
- .party = {.ItemCustomMoves = gTrainerParty_Brawly5 }
+ .party = {.ItemCustomMoves = sParty_Brawly5 }
},
[TRAINER_WATTSON_2] =
@@ -10902,7 +10902,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 4,
- .party = {.ItemCustomMoves = gTrainerParty_Wattson2 }
+ .party = {.ItemCustomMoves = sParty_Wattson2 }
},
[TRAINER_WATTSON_3] =
@@ -10916,7 +10916,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 5,
- .party = {.ItemCustomMoves = gTrainerParty_Wattson3 }
+ .party = {.ItemCustomMoves = sParty_Wattson3 }
},
[TRAINER_WATTSON_4] =
@@ -10930,7 +10930,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 5,
- .party = {.ItemCustomMoves = gTrainerParty_Wattson4 }
+ .party = {.ItemCustomMoves = sParty_Wattson4 }
},
[TRAINER_WATTSON_5] =
@@ -10944,7 +10944,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 6,
- .party = {.ItemCustomMoves = gTrainerParty_Wattson5 }
+ .party = {.ItemCustomMoves = sParty_Wattson5 }
},
[TRAINER_FLANNERY_2] =
@@ -10958,7 +10958,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 4,
- .party = {.ItemCustomMoves = gTrainerParty_Flannery2 }
+ .party = {.ItemCustomMoves = sParty_Flannery2 }
},
[TRAINER_FLANNERY_3] =
@@ -10972,7 +10972,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 5,
- .party = {.ItemCustomMoves = gTrainerParty_Flannery3 }
+ .party = {.ItemCustomMoves = sParty_Flannery3 }
},
[TRAINER_FLANNERY_4] =
@@ -10986,7 +10986,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 6,
- .party = {.ItemCustomMoves = gTrainerParty_Flannery4 }
+ .party = {.ItemCustomMoves = sParty_Flannery4 }
},
[TRAINER_FLANNERY_5] =
@@ -11000,7 +11000,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 6,
- .party = {.ItemCustomMoves = gTrainerParty_Flannery5 }
+ .party = {.ItemCustomMoves = sParty_Flannery5 }
},
[TRAINER_NORMAN_2] =
@@ -11014,7 +11014,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 4,
- .party = {.ItemCustomMoves = gTrainerParty_Norman2 }
+ .party = {.ItemCustomMoves = sParty_Norman2 }
},
[TRAINER_NORMAN_3] =
@@ -11028,7 +11028,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 5,
- .party = {.ItemCustomMoves = gTrainerParty_Norman3 }
+ .party = {.ItemCustomMoves = sParty_Norman3 }
},
[TRAINER_NORMAN_4] =
@@ -11042,7 +11042,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 5,
- .party = {.ItemCustomMoves = gTrainerParty_Norman4 }
+ .party = {.ItemCustomMoves = sParty_Norman4 }
},
[TRAINER_NORMAN_5] =
@@ -11056,7 +11056,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 6,
- .party = {.ItemCustomMoves = gTrainerParty_Norman5 }
+ .party = {.ItemCustomMoves = sParty_Norman5 }
},
[TRAINER_WINONA_2] =
@@ -11070,7 +11070,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY | AI_SCRIPT_RISKY,
.partySize = 5,
- .party = {.ItemCustomMoves = gTrainerParty_Winona2 }
+ .party = {.ItemCustomMoves = sParty_Winona2 }
},
[TRAINER_WINONA_3] =
@@ -11084,7 +11084,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY | AI_SCRIPT_RISKY,
.partySize = 6,
- .party = {.ItemCustomMoves = gTrainerParty_Winona3 }
+ .party = {.ItemCustomMoves = sParty_Winona3 }
},
[TRAINER_WINONA_4] =
@@ -11098,7 +11098,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY | AI_SCRIPT_RISKY,
.partySize = 6,
- .party = {.ItemCustomMoves = gTrainerParty_Winona4 }
+ .party = {.ItemCustomMoves = sParty_Winona4 }
},
[TRAINER_WINONA_5] =
@@ -11112,7 +11112,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY | AI_SCRIPT_RISKY,
.partySize = 6,
- .party = {.ItemCustomMoves = gTrainerParty_Winona5 }
+ .party = {.ItemCustomMoves = sParty_Winona5 }
},
[TRAINER_TATE_AND_LIZA_2] =
@@ -11126,7 +11126,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 5,
- .party = {.ItemCustomMoves = gTrainerParty_TateAndLiza2 }
+ .party = {.ItemCustomMoves = sParty_TateAndLiza2 }
},
[TRAINER_TATE_AND_LIZA_3] =
@@ -11140,7 +11140,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 6,
- .party = {.ItemCustomMoves = gTrainerParty_TateAndLiza3 }
+ .party = {.ItemCustomMoves = sParty_TateAndLiza3 }
},
[TRAINER_TATE_AND_LIZA_4] =
@@ -11154,7 +11154,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 6,
- .party = {.ItemCustomMoves = gTrainerParty_TateAndLiza4 }
+ .party = {.ItemCustomMoves = sParty_TateAndLiza4 }
},
[TRAINER_TATE_AND_LIZA_5] =
@@ -11168,7 +11168,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 6,
- .party = {.ItemCustomMoves = gTrainerParty_TateAndLiza5 }
+ .party = {.ItemCustomMoves = sParty_TateAndLiza5 }
},
[TRAINER_JUAN_2] =
@@ -11182,7 +11182,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 5,
- .party = {.ItemCustomMoves = gTrainerParty_Juan2 }
+ .party = {.ItemCustomMoves = sParty_Juan2 }
},
[TRAINER_JUAN_3] =
@@ -11196,7 +11196,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 5,
- .party = {.ItemCustomMoves = gTrainerParty_Juan3 }
+ .party = {.ItemCustomMoves = sParty_Juan3 }
},
[TRAINER_JUAN_4] =
@@ -11210,7 +11210,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 6,
- .party = {.ItemCustomMoves = gTrainerParty_Juan4 }
+ .party = {.ItemCustomMoves = sParty_Juan4 }
},
[TRAINER_JUAN_5] =
@@ -11224,7 +11224,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = TRUE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 6,
- .party = {.ItemCustomMoves = gTrainerParty_Juan5 }
+ .party = {.ItemCustomMoves = sParty_Juan5 }
},
[TRAINER_ANGELO] =
@@ -11238,7 +11238,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.ItemCustomMoves = gTrainerParty_Angelo }
+ .party = {.ItemCustomMoves = sParty_Angelo }
},
[TRAINER_DARIUS] =
@@ -11252,7 +11252,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Darius }
+ .party = {.NoItemDefaultMoves = sParty_Darius }
},
[TRAINER_STEVEN] =
@@ -11266,7 +11266,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 6,
- .party = {.ItemCustomMoves = gTrainerParty_Steven }
+ .party = {.ItemCustomMoves = sParty_Steven }
},
[TRAINER_ANABEL] =
@@ -11280,7 +11280,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Anabel }
+ .party = {.NoItemDefaultMoves = sParty_Anabel }
},
[TRAINER_TUCKER] =
@@ -11294,7 +11294,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Tucker }
+ .party = {.NoItemDefaultMoves = sParty_Tucker }
},
[TRAINER_SPENSER] =
@@ -11308,7 +11308,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Spenser }
+ .party = {.NoItemDefaultMoves = sParty_Spenser }
},
[TRAINER_GRETA] =
@@ -11322,7 +11322,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Greta }
+ .party = {.NoItemDefaultMoves = sParty_Greta }
},
[TRAINER_NOLAND] =
@@ -11336,7 +11336,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Noland }
+ .party = {.NoItemDefaultMoves = sParty_Noland }
},
[TRAINER_LUCY] =
@@ -11350,7 +11350,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Lucy }
+ .party = {.NoItemDefaultMoves = sParty_Lucy }
},
[TRAINER_BRANDON] =
@@ -11364,7 +11364,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brandon }
+ .party = {.NoItemDefaultMoves = sParty_Brandon }
},
[TRAINER_ANDRES_2] =
@@ -11378,7 +11378,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Andres2 }
+ .party = {.NoItemDefaultMoves = sParty_Andres2 }
},
[TRAINER_ANDRES_3] =
@@ -11392,7 +11392,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Andres3 }
+ .party = {.NoItemDefaultMoves = sParty_Andres3 }
},
[TRAINER_ANDRES_4] =
@@ -11406,7 +11406,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Andres4 }
+ .party = {.NoItemDefaultMoves = sParty_Andres4 }
},
[TRAINER_ANDRES_5] =
@@ -11420,7 +11420,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Andres5 }
+ .party = {.NoItemDefaultMoves = sParty_Andres5 }
},
[TRAINER_CORY_2] =
@@ -11434,7 +11434,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cory2 }
+ .party = {.NoItemDefaultMoves = sParty_Cory2 }
},
[TRAINER_CORY_3] =
@@ -11448,7 +11448,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cory3 }
+ .party = {.NoItemDefaultMoves = sParty_Cory3 }
},
[TRAINER_CORY_4] =
@@ -11462,7 +11462,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cory4 }
+ .party = {.NoItemDefaultMoves = sParty_Cory4 }
},
[TRAINER_CORY_5] =
@@ -11476,7 +11476,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cory5 }
+ .party = {.NoItemDefaultMoves = sParty_Cory5 }
},
[TRAINER_PABLO_2] =
@@ -11490,7 +11490,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Pablo2 }
+ .party = {.NoItemDefaultMoves = sParty_Pablo2 }
},
[TRAINER_PABLO_3] =
@@ -11504,7 +11504,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Pablo3 }
+ .party = {.NoItemDefaultMoves = sParty_Pablo3 }
},
[TRAINER_PABLO_4] =
@@ -11518,7 +11518,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Pablo4 }
+ .party = {.NoItemDefaultMoves = sParty_Pablo4 }
},
[TRAINER_PABLO_5] =
@@ -11532,7 +11532,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Pablo5 }
+ .party = {.NoItemDefaultMoves = sParty_Pablo5 }
},
[TRAINER_KOJI_2] =
@@ -11546,7 +11546,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Koji2 }
+ .party = {.NoItemDefaultMoves = sParty_Koji2 }
},
[TRAINER_KOJI_3] =
@@ -11560,7 +11560,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Koji3 }
+ .party = {.NoItemDefaultMoves = sParty_Koji3 }
},
[TRAINER_KOJI_4] =
@@ -11574,7 +11574,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Koji4 }
+ .party = {.NoItemDefaultMoves = sParty_Koji4 }
},
[TRAINER_KOJI_5] =
@@ -11588,7 +11588,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Koji5 }
+ .party = {.NoItemDefaultMoves = sParty_Koji5 }
},
[TRAINER_CRISTIN_2] =
@@ -11602,7 +11602,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cristin2 }
+ .party = {.NoItemDefaultMoves = sParty_Cristin2 }
},
[TRAINER_CRISTIN_3] =
@@ -11616,7 +11616,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cristin3 }
+ .party = {.NoItemDefaultMoves = sParty_Cristin3 }
},
[TRAINER_CRISTIN_4] =
@@ -11630,7 +11630,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cristin4 }
+ .party = {.NoItemDefaultMoves = sParty_Cristin4 }
},
[TRAINER_CRISTIN_5] =
@@ -11644,7 +11644,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Cristin5 }
+ .party = {.NoItemDefaultMoves = sParty_Cristin5 }
},
[TRAINER_FERNANDO_2] =
@@ -11658,7 +11658,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Fernando2 }
+ .party = {.NoItemDefaultMoves = sParty_Fernando2 }
},
[TRAINER_FERNANDO_3] =
@@ -11672,7 +11672,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Fernando3 }
+ .party = {.NoItemDefaultMoves = sParty_Fernando3 }
},
[TRAINER_FERNANDO_4] =
@@ -11686,7 +11686,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Fernando4 }
+ .party = {.NoItemDefaultMoves = sParty_Fernando4 }
},
[TRAINER_FERNANDO_5] =
@@ -11700,7 +11700,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Fernando5 }
+ .party = {.NoItemDefaultMoves = sParty_Fernando5 }
},
[TRAINER_SAWYER_2] =
@@ -11714,7 +11714,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Sawyer2 }
+ .party = {.NoItemDefaultMoves = sParty_Sawyer2 }
},
[TRAINER_SAWYER_3] =
@@ -11728,7 +11728,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Sawyer3 }
+ .party = {.NoItemDefaultMoves = sParty_Sawyer3 }
},
[TRAINER_SAWYER_4] =
@@ -11742,7 +11742,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Sawyer4 }
+ .party = {.NoItemDefaultMoves = sParty_Sawyer4 }
},
[TRAINER_SAWYER_5] =
@@ -11756,7 +11756,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Sawyer5 }
+ .party = {.NoItemDefaultMoves = sParty_Sawyer5 }
},
[TRAINER_GABRIELLE_2] =
@@ -11770,7 +11770,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 6,
- .party = {.NoItemDefaultMoves = gTrainerParty_Gabrielle2 }
+ .party = {.NoItemDefaultMoves = sParty_Gabrielle2 }
},
[TRAINER_GABRIELLE_3] =
@@ -11784,7 +11784,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 6,
- .party = {.NoItemDefaultMoves = gTrainerParty_Gabrielle3 }
+ .party = {.NoItemDefaultMoves = sParty_Gabrielle3 }
},
[TRAINER_GABRIELLE_4] =
@@ -11798,7 +11798,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 6,
- .party = {.NoItemDefaultMoves = gTrainerParty_Gabrielle4 }
+ .party = {.NoItemDefaultMoves = sParty_Gabrielle4 }
},
[TRAINER_GABRIELLE_5] =
@@ -11812,7 +11812,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 6,
- .party = {.NoItemDefaultMoves = gTrainerParty_Gabrielle5 }
+ .party = {.NoItemDefaultMoves = sParty_Gabrielle5 }
},
[TRAINER_THALIA_2] =
@@ -11826,7 +11826,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Thalia2 }
+ .party = {.NoItemDefaultMoves = sParty_Thalia2 }
},
[TRAINER_THALIA_3] =
@@ -11840,7 +11840,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Thalia3 }
+ .party = {.NoItemDefaultMoves = sParty_Thalia3 }
},
[TRAINER_THALIA_4] =
@@ -11854,7 +11854,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Thalia4 }
+ .party = {.NoItemDefaultMoves = sParty_Thalia4 }
},
[TRAINER_THALIA_5] =
@@ -11868,7 +11868,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = AI_SCRIPT_CHECK_BAD_MOVE,
.partySize = 3,
- .party = {.NoItemDefaultMoves = gTrainerParty_Thalia5 }
+ .party = {.NoItemDefaultMoves = sParty_Thalia5 }
},
[TRAINER_MARIELA] =
@@ -11882,7 +11882,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = 0,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Mariela }
+ .party = {.NoItemDefaultMoves = sParty_Mariela }
},
[TRAINER_ALVARO] =
@@ -11896,7 +11896,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = 0,
.partySize = 2,
- .party = {.NoItemDefaultMoves = gTrainerParty_Alvaro }
+ .party = {.NoItemDefaultMoves = sParty_Alvaro }
},
[TRAINER_EVERETT] =
@@ -11910,7 +11910,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = 0,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Everett }
+ .party = {.NoItemDefaultMoves = sParty_Everett }
},
[TRAINER_RED] =
@@ -11924,7 +11924,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = 0,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Red }
+ .party = {.NoItemDefaultMoves = sParty_Red }
},
[TRAINER_LEAF] =
@@ -11938,7 +11938,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = 0,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Leaf }
+ .party = {.NoItemDefaultMoves = sParty_Leaf }
},
[TRAINER_BRENDAN_16] =
@@ -11952,7 +11952,7 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = 0,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_Brendan16 }
+ .party = {.NoItemDefaultMoves = sParty_Brendan16 }
},
[TRAINER_MAY_16] =
@@ -11966,6 +11966,6 @@ const struct Trainer gTrainers[] = {
.doubleBattle = FALSE,
.aiFlags = 0,
.partySize = 1,
- .party = {.NoItemDefaultMoves = gTrainerParty_May16 }
+ .party = {.NoItemDefaultMoves = sParty_May16 }
},
};
diff --git a/src/data/wild_encounters.h b/src/data/wild_encounters.h
deleted file mode 100644
index d1f2eb616..000000000
--- a/src/data/wild_encounters.h
+++ /dev/null
@@ -1,4573 +0,0 @@
-// const rom data
-
-/*This file consists of several parts.
- *First, the actual tables that define the available Pokemon and their level ranges.
- *Second, the headers for each area that links the tables to the actual maps.
- *Third, Battle Pyramid-specific tables and headers.
- *Fourth, Battle Pike-specific tables and headers.
- *And then finally, Feebas-related data.
- *You can search for // to jump between the sections.
- */
-
- //Start of regular Pokemon tables.
-
-const struct WildPokemon gRoute101_LandMons[] =
-{
- {2, 2, SPECIES_WURMPLE},
- {2, 2, SPECIES_POOCHYENA},
- {2, 2, SPECIES_WURMPLE},
- {3, 3, SPECIES_WURMPLE},
- {3, 3, SPECIES_POOCHYENA},
- {3, 3, SPECIES_POOCHYENA},
- {3, 3, SPECIES_WURMPLE},
- {3, 3, SPECIES_POOCHYENA},
- {2, 2, SPECIES_ZIGZAGOON},
- {2, 2, SPECIES_ZIGZAGOON},
- {3, 3, SPECIES_ZIGZAGOON},
- {3, 3, SPECIES_ZIGZAGOON},
-};
-
-const struct WildPokemonInfo gRoute101_LandMonsInfo = {20, gRoute101_LandMons};
-
-const struct WildPokemon gRoute102_LandMons[] =
-{
- {3, 3, SPECIES_POOCHYENA},
- {3, 3, SPECIES_WURMPLE},
- {4, 4, SPECIES_POOCHYENA},
- {4, 4, SPECIES_WURMPLE},
- {3, 3, SPECIES_LOTAD},
- {4, 4, SPECIES_LOTAD},
- {3, 3, SPECIES_ZIGZAGOON},
- {3, 3, SPECIES_ZIGZAGOON},
- {4, 4, SPECIES_ZIGZAGOON},
- {4, 4, SPECIES_RALTS},
- {4, 4, SPECIES_ZIGZAGOON},
- {3, 3, SPECIES_SEEDOT},
-};
-
-const struct WildPokemonInfo gRoute102_LandMonsInfo = {20, gRoute102_LandMons};
-
-const struct WildPokemon gRoute102_WaterMons[] =
-{
- {20, 30, SPECIES_MARILL},
- {10, 20, SPECIES_MARILL},
- {30, 35, SPECIES_MARILL},
- {5, 10, SPECIES_MARILL},
- {20, 30, SPECIES_GOLDEEN},
-};
-
-const struct WildPokemonInfo gRoute102_WaterMonsInfo = {4, gRoute102_WaterMons};
-
-const struct WildPokemon gRoute102_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_CORPHISH},
- {25, 30, SPECIES_CORPHISH},
- {30, 35, SPECIES_CORPHISH},
- {20, 25, SPECIES_CORPHISH},
- {35, 40, SPECIES_CORPHISH},
- {40, 45, SPECIES_CORPHISH},
-};
-
-const struct WildPokemonInfo gRoute102_FishingMonsInfo = {30, gRoute102_FishingMons};
-
-const struct WildPokemon gRoute103_LandMons[] =
-{
- {2, 2, SPECIES_POOCHYENA},
- {3, 3, SPECIES_POOCHYENA},
- {3, 3, SPECIES_POOCHYENA},
- {4, 4, SPECIES_POOCHYENA},
- {2, 2, SPECIES_WINGULL},
- {3, 3, SPECIES_ZIGZAGOON},
- {3, 3, SPECIES_ZIGZAGOON},
- {4, 4, SPECIES_ZIGZAGOON},
- {3, 3, SPECIES_WINGULL},
- {3, 3, SPECIES_WINGULL},
- {2, 2, SPECIES_WINGULL},
- {4, 4, SPECIES_WINGULL},
-};
-
-const struct WildPokemonInfo gRoute103_LandMonsInfo = {20, gRoute103_LandMons};
-
-const struct WildPokemon gRoute103_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute103_WaterMonsInfo = {4, gRoute103_WaterMons};
-
-const struct WildPokemon gRoute103_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute103_FishingMonsInfo = {30, gRoute103_FishingMons};
-
-const struct WildPokemon gRoute104_LandMons[] =
-{
- {4, 4, SPECIES_POOCHYENA},
- {4, 4, SPECIES_WURMPLE},
- {5, 5, SPECIES_POOCHYENA},
- {5, 5, SPECIES_MARILL},
- {4, 4, SPECIES_MARILL},
- {5, 5, SPECIES_POOCHYENA},
- {4, 4, SPECIES_TAILLOW},
- {5, 5, SPECIES_TAILLOW},
- {4, 4, SPECIES_WINGULL},
- {4, 4, SPECIES_WINGULL},
- {3, 3, SPECIES_WINGULL},
- {5, 5, SPECIES_WINGULL},
-};
-
-const struct WildPokemonInfo gRoute104_LandMonsInfo = {20, gRoute104_LandMons};
-
-const struct WildPokemon gRoute104_WaterMons[] =
-{
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute104_WaterMonsInfo = {4, gRoute104_WaterMons};
-
-const struct WildPokemon gRoute104_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_MAGIKARP},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_MAGIKARP},
- {25, 30, SPECIES_MAGIKARP},
- {30, 35, SPECIES_MAGIKARP},
- {20, 25, SPECIES_MAGIKARP},
- {35, 40, SPECIES_MAGIKARP},
- {40, 45, SPECIES_MAGIKARP},
-};
-
-const struct WildPokemonInfo gRoute104_FishingMonsInfo = {30, gRoute104_FishingMons};
-
-const struct WildPokemon gRoute105_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute105_WaterMonsInfo = {4, gRoute105_WaterMons};
-
-const struct WildPokemon gRoute105_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute105_FishingMonsInfo = {30, gRoute105_FishingMons};
-
-const struct WildPokemon gRoute110_LandMons[] =
-{
- {12, 12, SPECIES_POOCHYENA},
- {12, 12, SPECIES_ELECTRIKE},
- {12, 12, SPECIES_GULPIN},
- {13, 13, SPECIES_ELECTRIKE},
- {13, 13, SPECIES_MINUN},
- {13, 13, SPECIES_ODDISH},
- {13, 13, SPECIES_MINUN},
- {13, 13, SPECIES_GULPIN},
- {12, 12, SPECIES_WINGULL},
- {12, 12, SPECIES_WINGULL},
- {12, 12, SPECIES_PLUSLE},
- {13, 13, SPECIES_PLUSLE},
-};
-
-const struct WildPokemonInfo gRoute110_LandMonsInfo = {20, gRoute110_LandMons};
-
-const struct WildPokemon gRoute110_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute110_WaterMonsInfo = {4, gRoute110_WaterMons};
-
-const struct WildPokemon gRoute110_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute110_FishingMonsInfo = {30, gRoute110_FishingMons};
-
-const struct WildPokemon gRoute111_LandMons[] =
-{
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {21, 21, SPECIES_SANDSHREW},
- {21, 21, SPECIES_TRAPINCH},
- {19, 19, SPECIES_BALTOY},
- {21, 21, SPECIES_BALTOY},
- {19, 19, SPECIES_SANDSHREW},
- {19, 19, SPECIES_TRAPINCH},
- {20, 20, SPECIES_BALTOY},
- {20, 20, SPECIES_CACNEA},
- {22, 22, SPECIES_CACNEA},
- {22, 22, SPECIES_CACNEA},
-};
-
-const struct WildPokemonInfo gRoute111_LandMonsInfo = {10, gRoute111_LandMons};
-
-const struct WildPokemon gRoute111_WaterMons[] =
-{
- {20, 30, SPECIES_MARILL},
- {10, 20, SPECIES_MARILL},
- {30, 35, SPECIES_MARILL},
- {5, 10, SPECIES_MARILL},
- {20, 30, SPECIES_GOLDEEN},
-};
-
-const struct WildPokemonInfo gRoute111_WaterMonsInfo = {4, gRoute111_WaterMons};
-
-const struct WildPokemon gRoute111_RockSmashMons[] =
-{
- {10, 15, SPECIES_GEODUDE},
- {5, 10, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
-};
-
-const struct WildPokemonInfo gRoute111_RockSmashMonsInfo = {20, gRoute111_RockSmashMons};
-
-const struct WildPokemon gRoute111_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {20, 25, SPECIES_BARBOACH},
- {35, 40, SPECIES_BARBOACH},
- {40, 45, SPECIES_BARBOACH},
-};
-
-const struct WildPokemonInfo gRoute111_FishingMonsInfo = {30, gRoute111_FishingMons};
-
-const struct WildPokemon gRoute112_LandMons[] =
-{
- {15, 15, SPECIES_NUMEL},
- {15, 15, SPECIES_NUMEL},
- {15, 15, SPECIES_MARILL},
- {14, 14, SPECIES_NUMEL},
- {14, 14, SPECIES_NUMEL},
- {14, 14, SPECIES_MARILL},
- {16, 16, SPECIES_NUMEL},
- {16, 16, SPECIES_MARILL},
- {16, 16, SPECIES_NUMEL},
- {16, 16, SPECIES_NUMEL},
- {16, 16, SPECIES_NUMEL},
- {16, 16, SPECIES_NUMEL},
-};
-
-const struct WildPokemonInfo gRoute112_LandMonsInfo = {20, gRoute112_LandMons};
-
-const struct WildPokemon gRoute113_LandMons[] =
-{
- {15, 15, SPECIES_SPINDA},
- {15, 15, SPECIES_SPINDA},
- {15, 15, SPECIES_SLUGMA},
- {14, 14, SPECIES_SPINDA},
- {14, 14, SPECIES_SPINDA},
- {14, 14, SPECIES_SLUGMA},
- {16, 16, SPECIES_SPINDA},
- {16, 16, SPECIES_SLUGMA},
- {16, 16, SPECIES_SPINDA},
- {16, 16, SPECIES_SKARMORY},
- {16, 16, SPECIES_SPINDA},
- {16, 16, SPECIES_SKARMORY},
-};
-
-const struct WildPokemonInfo gRoute113_LandMonsInfo = {20, gRoute113_LandMons};
-
-const struct WildPokemon gRoute114_LandMons[] =
-{
- {16, 16, SPECIES_SWABLU},
- {16, 16, SPECIES_LOTAD},
- {17, 17, SPECIES_SWABLU},
- {15, 15, SPECIES_SWABLU},
- {15, 15, SPECIES_LOTAD},
- {16, 16, SPECIES_LOMBRE},
- {16, 16, SPECIES_LOMBRE},
- {18, 18, SPECIES_LOMBRE},
- {17, 17, SPECIES_SEVIPER},
- {15, 15, SPECIES_SEVIPER},
- {17, 17, SPECIES_SEVIPER},
- {15, 15, SPECIES_NUZLEAF},
-};
-
-const struct WildPokemonInfo gRoute114_LandMonsInfo = {20, gRoute114_LandMons};
-
-const struct WildPokemon gRoute114_WaterMons[] =
-{
- {20, 30, SPECIES_MARILL},
- {10, 20, SPECIES_MARILL},
- {30, 35, SPECIES_MARILL},
- {5, 10, SPECIES_MARILL},
- {20, 30, SPECIES_GOLDEEN},
-};
-
-const struct WildPokemonInfo gRoute114_WaterMonsInfo = {4, gRoute114_WaterMons};
-
-const struct WildPokemon gRoute114_RockSmashMons[] =
-{
- {10, 15, SPECIES_GEODUDE},
- {5, 10, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
-};
-
-const struct WildPokemonInfo gRoute114_RockSmashMonsInfo = {20, gRoute114_RockSmashMons};
-
-const struct WildPokemon gRoute114_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {20, 25, SPECIES_BARBOACH},
- {35, 40, SPECIES_BARBOACH},
- {40, 45, SPECIES_BARBOACH},
-};
-
-const struct WildPokemonInfo gRoute114_FishingMonsInfo = {30, gRoute114_FishingMons};
-
-const struct WildPokemon gRoute116_LandMons[] =
-{
- {6, 6, SPECIES_POOCHYENA},
- {6, 6, SPECIES_WHISMUR},
- {6, 6, SPECIES_NINCADA},
- {7, 7, SPECIES_ABRA},
- {7, 7, SPECIES_NINCADA},
- {6, 6, SPECIES_TAILLOW},
- {7, 7, SPECIES_TAILLOW},
- {8, 8, SPECIES_TAILLOW},
- {7, 7, SPECIES_POOCHYENA},
- {8, 8, SPECIES_POOCHYENA},
- {7, 7, SPECIES_SKITTY},
- {8, 8, SPECIES_SKITTY},
-};
-
-const struct WildPokemonInfo gRoute116_LandMonsInfo = {20, gRoute116_LandMons};
-
-const struct WildPokemon gRoute117_LandMons[] =
-{
- {13, 13, SPECIES_POOCHYENA},
- {13, 13, SPECIES_ODDISH},
- {14, 14, SPECIES_POOCHYENA},
- {14, 14, SPECIES_ODDISH},
- {13, 13, SPECIES_MARILL},
- {13, 13, SPECIES_ODDISH},
- {13, 13, SPECIES_ILLUMISE},
- {13, 13, SPECIES_ILLUMISE},
- {14, 14, SPECIES_ILLUMISE},
- {14, 14, SPECIES_ILLUMISE},
- {13, 13, SPECIES_VOLBEAT},
- {13, 13, SPECIES_SEEDOT},
-};
-
-const struct WildPokemonInfo gRoute117_LandMonsInfo = {20, gRoute117_LandMons};
-
-const struct WildPokemon gRoute117_WaterMons[] =
-{
- {20, 30, SPECIES_MARILL},
- {10, 20, SPECIES_MARILL},
- {30, 35, SPECIES_MARILL},
- {5, 10, SPECIES_MARILL},
- {20, 30, SPECIES_GOLDEEN},
-};
-
-const struct WildPokemonInfo gRoute117_WaterMonsInfo = {4, gRoute117_WaterMons};
-
-const struct WildPokemon gRoute117_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_CORPHISH},
- {25, 30, SPECIES_CORPHISH},
- {30, 35, SPECIES_CORPHISH},
- {20, 25, SPECIES_CORPHISH},
- {35, 40, SPECIES_CORPHISH},
- {40, 45, SPECIES_CORPHISH},
-};
-
-const struct WildPokemonInfo gRoute117_FishingMonsInfo = {30, gRoute117_FishingMons};
-
-const struct WildPokemon gRoute118_LandMons[] =
-{
- {24, 24, SPECIES_ZIGZAGOON},
- {24, 24, SPECIES_ELECTRIKE},
- {26, 26, SPECIES_ZIGZAGOON},
- {26, 26, SPECIES_ELECTRIKE},
- {26, 26, SPECIES_LINOONE},
- {26, 26, SPECIES_MANECTRIC},
- {25, 25, SPECIES_WINGULL},
- {25, 25, SPECIES_WINGULL},
- {26, 26, SPECIES_WINGULL},
- {26, 26, SPECIES_WINGULL},
- {27, 27, SPECIES_WINGULL},
- {25, 25, SPECIES_KECLEON},
-};
-
-const struct WildPokemonInfo gRoute118_LandMonsInfo = {20, gRoute118_LandMons};
-
-const struct WildPokemon gRoute118_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute118_WaterMonsInfo = {4, gRoute118_WaterMons};
-
-const struct WildPokemon gRoute118_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_CARVANHA},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_CARVANHA},
- {20, 25, SPECIES_CARVANHA},
- {35, 40, SPECIES_CARVANHA},
- {40, 45, SPECIES_CARVANHA},
-};
-
-const struct WildPokemonInfo gRoute118_FishingMonsInfo = {30, gRoute118_FishingMons};
-
-const struct WildPokemon gRoute124_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute124_WaterMonsInfo = {4, gRoute124_WaterMons};
-
-const struct WildPokemon gRoute124_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute124_FishingMonsInfo = {30, gRoute124_FishingMons};
-
-const struct WildPokemon gPetalburgWoods_LandMons[] =
-{
- {5, 5, SPECIES_POOCHYENA},
- {5, 5, SPECIES_WURMPLE},
- {5, 5, SPECIES_SHROOMISH},
- {6, 6, SPECIES_POOCHYENA},
- {5, 5, SPECIES_SILCOON},
- {5, 5, SPECIES_CASCOON},
- {6, 6, SPECIES_WURMPLE},
- {6, 6, SPECIES_SHROOMISH},
- {5, 5, SPECIES_TAILLOW},
- {5, 5, SPECIES_SLAKOTH},
- {6, 6, SPECIES_TAILLOW},
- {6, 6, SPECIES_SLAKOTH},
-};
-
-const struct WildPokemonInfo gPetalburgWoods_LandMonsInfo = {20, gPetalburgWoods_LandMons};
-
-const struct WildPokemon gRusturfTunnel_LandMons[] =
-{
- {6, 6, SPECIES_WHISMUR},
- {7, 7, SPECIES_WHISMUR},
- {6, 6, SPECIES_WHISMUR},
- {6, 6, SPECIES_WHISMUR},
- {7, 7, SPECIES_WHISMUR},
- {7, 7, SPECIES_WHISMUR},
- {5, 5, SPECIES_WHISMUR},
- {8, 8, SPECIES_WHISMUR},
- {5, 5, SPECIES_WHISMUR},
- {8, 8, SPECIES_WHISMUR},
- {5, 5, SPECIES_WHISMUR},
- {8, 8, SPECIES_WHISMUR},
-};
-
-const struct WildPokemonInfo gRusturfTunnel_LandMonsInfo = {10, gRusturfTunnel_LandMons};
-
-const struct WildPokemon gGraniteCave_1F_LandMons[] =
-{
- {7, 7, SPECIES_ZUBAT},
- {8, 8, SPECIES_MAKUHITA},
- {7, 7, SPECIES_MAKUHITA},
- {8, 8, SPECIES_ZUBAT},
- {9, 9, SPECIES_MAKUHITA},
- {8, 8, SPECIES_ABRA},
- {10, 10, SPECIES_MAKUHITA},
- {6, 6, SPECIES_MAKUHITA},
- {7, 7, SPECIES_GEODUDE},
- {8, 8, SPECIES_GEODUDE},
- {6, 6, SPECIES_GEODUDE},
- {9, 9, SPECIES_GEODUDE},
-};
-
-const struct WildPokemonInfo gGraniteCave_1F_LandMonsInfo = {10, gGraniteCave_1F_LandMons};
-
-const struct WildPokemon gGraniteCave_B1F_LandMons[] =
-{
- {9, 9, SPECIES_ZUBAT},
- {10, 10, SPECIES_ARON},
- {9, 9, SPECIES_ARON},
- {11, 11, SPECIES_ARON},
- {10, 10, SPECIES_ZUBAT},
- {9, 9, SPECIES_ABRA},
- {10, 10, SPECIES_MAKUHITA},
- {11, 11, SPECIES_MAKUHITA},
- {10, 10, SPECIES_SABLEYE},
- {10, 10, SPECIES_SABLEYE},
- {9, 9, SPECIES_SABLEYE},
- {11, 11, SPECIES_SABLEYE},
-};
-
-const struct WildPokemonInfo gGraniteCave_B1F_LandMonsInfo = {10, gGraniteCave_B1F_LandMons};
-
-const struct WildPokemon gMtPyre_1F_LandMons[] =
-{
- {27, 27, SPECIES_SHUPPET},
- {28, 28, SPECIES_SHUPPET},
- {26, 26, SPECIES_SHUPPET},
- {25, 25, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {23, 23, SPECIES_SHUPPET},
- {22, 22, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
-};
-
-const struct WildPokemonInfo gMtPyre_1F_LandMonsInfo = {10, gMtPyre_1F_LandMons};
-
-const struct WildPokemon gVictoryRoad_1F_LandMons[] =
-{
- {40, 40, SPECIES_GOLBAT},
- {40, 40, SPECIES_HARIYAMA},
- {40, 40, SPECIES_LAIRON},
- {40, 40, SPECIES_LOUDRED},
- {36, 36, SPECIES_ZUBAT},
- {36, 36, SPECIES_MAKUHITA},
- {38, 38, SPECIES_GOLBAT},
- {38, 38, SPECIES_HARIYAMA},
- {36, 36, SPECIES_ARON},
- {36, 36, SPECIES_WHISMUR},
- {36, 36, SPECIES_ARON},
- {36, 36, SPECIES_WHISMUR},
-};
-
-const struct WildPokemonInfo gVictoryRoad_1F_LandMonsInfo = {10, gVictoryRoad_1F_LandMons};
-
-const struct WildPokemon gSafariZone_South_LandMons[] =
-{
- {25, 25, SPECIES_ODDISH},
- {27, 27, SPECIES_ODDISH},
- {25, 25, SPECIES_GIRAFARIG},
- {27, 27, SPECIES_GIRAFARIG},
- {25, 25, SPECIES_NATU},
- {25, 25, SPECIES_DODUO},
- {25, 25, SPECIES_GLOOM},
- {27, 27, SPECIES_WOBBUFFET},
- {25, 25, SPECIES_PIKACHU},
- {27, 27, SPECIES_WOBBUFFET},
- {27, 27, SPECIES_PIKACHU},
- {29, 29, SPECIES_WOBBUFFET},
-};
-
-const struct WildPokemonInfo gSafariZone_South_LandMonsInfo = {25, gSafariZone_South_LandMons};
-
-const struct WildPokemon gUnderwater2_WaterMons[] =
-{
- {20, 30, SPECIES_CLAMPERL},
- {20, 30, SPECIES_CHINCHOU},
- {30, 35, SPECIES_CLAMPERL},
- {30, 35, SPECIES_RELICANTH},
- {30, 35, SPECIES_RELICANTH},
-};
-
-const struct WildPokemonInfo gUnderwater2_WaterMonsInfo = {4, gUnderwater2_WaterMons};
-
-const struct WildPokemon gAbandonedShip_Rooms_B1F_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_TENTACOOL},
- {30, 35, SPECIES_TENTACRUEL},
-};
-
-const struct WildPokemonInfo gAbandonedShip_Rooms_B1F_WaterMonsInfo = {4, gAbandonedShip_Rooms_B1F_WaterMons};
-
-const struct WildPokemon gAbandonedShip_Rooms_B1F_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_TENTACOOL},
- {25, 30, SPECIES_TENTACOOL},
- {30, 35, SPECIES_TENTACOOL},
- {30, 35, SPECIES_TENTACRUEL},
- {25, 30, SPECIES_TENTACRUEL},
- {20, 25, SPECIES_TENTACRUEL},
-};
-
-const struct WildPokemonInfo gAbandonedShip_Rooms_B1F_FishingMonsInfo = {20, gAbandonedShip_Rooms_B1F_FishingMons};
-
-const struct WildPokemon gGraniteCave_B2F_LandMons[] =
-{
- {10, 10, SPECIES_ZUBAT},
- {11, 11, SPECIES_ARON},
- {10, 10, SPECIES_ARON},
- {11, 11, SPECIES_ZUBAT},
- {12, 12, SPECIES_ARON},
- {10, 10, SPECIES_ABRA},
- {10, 10, SPECIES_SABLEYE},
- {11, 11, SPECIES_SABLEYE},
- {12, 12, SPECIES_SABLEYE},
- {10, 10, SPECIES_SABLEYE},
- {12, 12, SPECIES_SABLEYE},
- {10, 10, SPECIES_SABLEYE},
-};
-
-const struct WildPokemonInfo gGraniteCave_B2F_LandMonsInfo = {10, gGraniteCave_B2F_LandMons};
-
-const struct WildPokemon gGraniteCave_B2F_RockSmashMons[] =
-{
- {10, 15, SPECIES_GEODUDE},
- {10, 20, SPECIES_NOSEPASS},
- {5, 10, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
-};
-
-const struct WildPokemonInfo gGraniteCave_B2F_RockSmashMonsInfo = {20, gGraniteCave_B2F_RockSmashMons};
-
-const struct WildPokemon gFieryPath_LandMons[] =
-{
- {15, 15, SPECIES_NUMEL},
- {15, 15, SPECIES_KOFFING},
- {16, 16, SPECIES_NUMEL},
- {15, 15, SPECIES_MACHOP},
- {15, 15, SPECIES_TORKOAL},
- {15, 15, SPECIES_SLUGMA},
- {16, 16, SPECIES_KOFFING},
- {16, 16, SPECIES_MACHOP},
- {14, 14, SPECIES_TORKOAL},
- {16, 16, SPECIES_TORKOAL},
- {14, 14, SPECIES_GRIMER},
- {14, 14, SPECIES_GRIMER},
-};
-
-const struct WildPokemonInfo gFieryPath_LandMonsInfo = {10, gFieryPath_LandMons};
-
-const struct WildPokemon gMeteorFalls_B1F_2R_LandMons[] =
-{
- {33, 33, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {30, 30, SPECIES_BAGON},
- {35, 35, SPECIES_SOLROCK},
- {35, 35, SPECIES_BAGON},
- {37, 37, SPECIES_SOLROCK},
- {25, 25, SPECIES_BAGON},
- {39, 39, SPECIES_SOLROCK},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gMeteorFalls_B1F_2R_LandMonsInfo = {10, gMeteorFalls_B1F_2R_LandMons};
-
-const struct WildPokemon gMeteorFalls_B1F_2R_WaterMons[] =
-{
- {30, 35, SPECIES_GOLBAT},
- {30, 35, SPECIES_GOLBAT},
- {25, 35, SPECIES_SOLROCK},
- {15, 25, SPECIES_SOLROCK},
- {5, 15, SPECIES_SOLROCK},
-};
-
-const struct WildPokemonInfo gMeteorFalls_B1F_2R_WaterMonsInfo = {4, gMeteorFalls_B1F_2R_WaterMons};
-
-const struct WildPokemon gMeteorFalls_B1F_2R_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {30, 35, SPECIES_WHISCASH},
- {35, 40, SPECIES_WHISCASH},
- {40, 45, SPECIES_WHISCASH},
-};
-
-const struct WildPokemonInfo gMeteorFalls_B1F_2R_FishingMonsInfo = {30, gMeteorFalls_B1F_2R_FishingMons};
-
-const struct WildPokemon gJaggedPass_LandMons[] =
-{
- {21, 21, SPECIES_NUMEL},
- {21, 21, SPECIES_NUMEL},
- {21, 21, SPECIES_MACHOP},
- {20, 20, SPECIES_NUMEL},
- {20, 20, SPECIES_SPOINK},
- {20, 20, SPECIES_MACHOP},
- {21, 21, SPECIES_SPOINK},
- {22, 22, SPECIES_MACHOP},
- {22, 22, SPECIES_NUMEL},
- {22, 22, SPECIES_SPOINK},
- {22, 22, SPECIES_NUMEL},
- {22, 22, SPECIES_SPOINK},
-};
-
-const struct WildPokemonInfo gJaggedPass_LandMonsInfo = {20, gJaggedPass_LandMons};
-
-const struct WildPokemon gRoute106_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute106_WaterMonsInfo = {4, gRoute106_WaterMons};
-
-const struct WildPokemon gRoute106_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute106_FishingMonsInfo = {30, gRoute106_FishingMons};
-
-const struct WildPokemon gRoute107_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute107_WaterMonsInfo = {4, gRoute107_WaterMons};
-
-const struct WildPokemon gRoute107_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute107_FishingMonsInfo = {30, gRoute107_FishingMons};
-
-const struct WildPokemon gRoute108_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute108_WaterMonsInfo = {4, gRoute108_WaterMons};
-
-const struct WildPokemon gRoute108_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute108_FishingMonsInfo = {30, gRoute108_FishingMons};
-
-const struct WildPokemon gRoute109_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute109_WaterMonsInfo = {4, gRoute109_WaterMons};
-
-const struct WildPokemon gRoute109_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute109_FishingMonsInfo = {30, gRoute109_FishingMons};
-
-const struct WildPokemon gRoute115_LandMons[] =
-{
- {23, 23, SPECIES_SWABLU},
- {23, 23, SPECIES_TAILLOW},
- {25, 25, SPECIES_SWABLU},
- {24, 24, SPECIES_TAILLOW},
- {25, 25, SPECIES_TAILLOW},
- {25, 25, SPECIES_SWELLOW},
- {24, 24, SPECIES_JIGGLYPUFF},
- {25, 25, SPECIES_JIGGLYPUFF},
- {24, 24, SPECIES_WINGULL},
- {24, 24, SPECIES_WINGULL},
- {26, 26, SPECIES_WINGULL},
- {25, 25, SPECIES_WINGULL},
-};
-
-const struct WildPokemonInfo gRoute115_LandMonsInfo = {20, gRoute115_LandMons};
-
-const struct WildPokemon gRoute115_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute115_WaterMonsInfo = {4, gRoute115_WaterMons};
-
-const struct WildPokemon gRoute115_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute115_FishingMonsInfo = {30, gRoute115_FishingMons};
-
-const struct WildPokemon gNewMauville_Inside_LandMons[] =
-{
- {24, 24, SPECIES_VOLTORB},
- {24, 24, SPECIES_MAGNEMITE},
- {25, 25, SPECIES_VOLTORB},
- {25, 25, SPECIES_MAGNEMITE},
- {23, 23, SPECIES_VOLTORB},
- {23, 23, SPECIES_MAGNEMITE},
- {26, 26, SPECIES_VOLTORB},
- {26, 26, SPECIES_MAGNEMITE},
- {22, 22, SPECIES_VOLTORB},
- {22, 22, SPECIES_MAGNEMITE},
- {26, 26, SPECIES_ELECTRODE},
- {26, 26, SPECIES_MAGNETON},
-};
-
-const struct WildPokemonInfo gNewMauville_Inside_LandMonsInfo = {10, gNewMauville_Inside_LandMons};
-
-const struct WildPokemon gRoute119_LandMons[] =
-{
- {25, 25, SPECIES_ZIGZAGOON},
- {25, 25, SPECIES_LINOONE},
- {27, 27, SPECIES_ZIGZAGOON},
- {25, 25, SPECIES_ODDISH},
- {27, 27, SPECIES_LINOONE},
- {26, 26, SPECIES_ODDISH},
- {27, 27, SPECIES_ODDISH},
- {24, 24, SPECIES_ODDISH},
- {25, 25, SPECIES_TROPIUS},
- {26, 26, SPECIES_TROPIUS},
- {27, 27, SPECIES_TROPIUS},
- {25, 25, SPECIES_KECLEON},
-};
-
-const struct WildPokemonInfo gRoute119_LandMonsInfo = {15, gRoute119_LandMons};
-
-const struct WildPokemon gRoute119_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute119_WaterMonsInfo = {4, gRoute119_WaterMons};
-
-const struct WildPokemon gRoute119_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_CARVANHA},
- {25, 30, SPECIES_CARVANHA},
- {30, 35, SPECIES_CARVANHA},
- {20, 25, SPECIES_CARVANHA},
- {35, 40, SPECIES_CARVANHA},
- {40, 45, SPECIES_CARVANHA},
-};
-
-const struct WildPokemonInfo gRoute119_FishingMonsInfo = {30, gRoute119_FishingMons};
-
-const struct WildPokemon gRoute120_LandMons[] =
-{
- {25, 25, SPECIES_POOCHYENA},
- {25, 25, SPECIES_MIGHTYENA},
- {27, 27, SPECIES_MIGHTYENA},
- {25, 25, SPECIES_ODDISH},
- {25, 25, SPECIES_MARILL},
- {26, 26, SPECIES_ODDISH},
- {27, 27, SPECIES_ODDISH},
- {27, 27, SPECIES_MARILL},
- {25, 25, SPECIES_ABSOL},
- {27, 27, SPECIES_ABSOL},
- {25, 25, SPECIES_KECLEON},
- {25, 25, SPECIES_SEEDOT},
-};
-
-const struct WildPokemonInfo gRoute120_LandMonsInfo = {20, gRoute120_LandMons};
-
-const struct WildPokemon gRoute120_WaterMons[] =
-{
- {20, 30, SPECIES_MARILL},
- {10, 20, SPECIES_MARILL},
- {30, 35, SPECIES_MARILL},
- {5, 10, SPECIES_MARILL},
- {20, 30, SPECIES_GOLDEEN},
-};
-
-const struct WildPokemonInfo gRoute120_WaterMonsInfo = {4, gRoute120_WaterMons};
-
-const struct WildPokemon gRoute120_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {20, 25, SPECIES_BARBOACH},
- {35, 40, SPECIES_BARBOACH},
- {40, 45, SPECIES_BARBOACH},
-};
-
-const struct WildPokemonInfo gRoute120_FishingMonsInfo = {30, gRoute120_FishingMons};
-
-const struct WildPokemon gRoute121_LandMons[] =
-{
- {26, 26, SPECIES_POOCHYENA},
- {26, 26, SPECIES_SHUPPET},
- {26, 26, SPECIES_MIGHTYENA},
- {28, 28, SPECIES_SHUPPET},
- {28, 28, SPECIES_MIGHTYENA},
- {26, 26, SPECIES_ODDISH},
- {28, 28, SPECIES_ODDISH},
- {28, 28, SPECIES_GLOOM},
- {26, 26, SPECIES_WINGULL},
- {27, 27, SPECIES_WINGULL},
- {28, 28, SPECIES_WINGULL},
- {25, 25, SPECIES_KECLEON},
-};
-
-const struct WildPokemonInfo gRoute121_LandMonsInfo = {20, gRoute121_LandMons};
-
-const struct WildPokemon gRoute121_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute121_WaterMonsInfo = {4, gRoute121_WaterMons};
-
-const struct WildPokemon gRoute121_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute121_FishingMonsInfo = {30, gRoute121_FishingMons};
-
-const struct WildPokemon gRoute122_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute122_WaterMonsInfo = {4, gRoute122_WaterMons};
-
-const struct WildPokemon gRoute122_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute122_FishingMonsInfo = {30, gRoute122_FishingMons};
-
-const struct WildPokemon gRoute123_LandMons[] =
-{
- {26, 26, SPECIES_POOCHYENA},
- {26, 26, SPECIES_SHUPPET},
- {26, 26, SPECIES_MIGHTYENA},
- {28, 28, SPECIES_SHUPPET},
- {28, 28, SPECIES_MIGHTYENA},
- {26, 26, SPECIES_ODDISH},
- {28, 28, SPECIES_ODDISH},
- {28, 28, SPECIES_GLOOM},
- {26, 26, SPECIES_WINGULL},
- {27, 27, SPECIES_WINGULL},
- {28, 28, SPECIES_WINGULL},
- {25, 25, SPECIES_KECLEON},
-};
-
-const struct WildPokemonInfo gRoute123_LandMonsInfo = {20, gRoute123_LandMons};
-
-const struct WildPokemon gRoute123_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute123_WaterMonsInfo = {4, gRoute123_WaterMons};
-
-const struct WildPokemon gRoute123_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute123_FishingMonsInfo = {30, gRoute123_FishingMons};
-
-const struct WildPokemon gMtPyre_2F_LandMons[] =
-{
- {27, 27, SPECIES_SHUPPET},
- {28, 28, SPECIES_SHUPPET},
- {26, 26, SPECIES_SHUPPET},
- {25, 25, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {23, 23, SPECIES_SHUPPET},
- {22, 22, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
-};
-
-const struct WildPokemonInfo gMtPyre_2F_LandMonsInfo = {10, gMtPyre_2F_LandMons};
-
-const struct WildPokemon gMtPyre_3F_LandMons[] =
-{
- {27, 27, SPECIES_SHUPPET},
- {28, 28, SPECIES_SHUPPET},
- {26, 26, SPECIES_SHUPPET},
- {25, 25, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {23, 23, SPECIES_SHUPPET},
- {22, 22, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
-};
-
-const struct WildPokemonInfo gMtPyre_3F_LandMonsInfo = {10, gMtPyre_3F_LandMons};
-
-const struct WildPokemon gMtPyre_4F_LandMons[] =
-{
- {27, 27, SPECIES_SHUPPET},
- {28, 28, SPECIES_SHUPPET},
- {26, 26, SPECIES_SHUPPET},
- {25, 25, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {23, 23, SPECIES_SHUPPET},
- {22, 22, SPECIES_SHUPPET},
- {27, 27, SPECIES_DUSKULL},
- {27, 27, SPECIES_DUSKULL},
- {25, 25, SPECIES_DUSKULL},
- {29, 29, SPECIES_DUSKULL},
-};
-
-const struct WildPokemonInfo gMtPyre_4F_LandMonsInfo = {10, gMtPyre_4F_LandMons};
-
-const struct WildPokemon gMtPyre_5F_LandMons[] =
-{
- {27, 27, SPECIES_SHUPPET},
- {28, 28, SPECIES_SHUPPET},
- {26, 26, SPECIES_SHUPPET},
- {25, 25, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {23, 23, SPECIES_SHUPPET},
- {22, 22, SPECIES_SHUPPET},
- {27, 27, SPECIES_DUSKULL},
- {27, 27, SPECIES_DUSKULL},
- {25, 25, SPECIES_DUSKULL},
- {29, 29, SPECIES_DUSKULL},
-};
-
-const struct WildPokemonInfo gMtPyre_5F_LandMonsInfo = {10, gMtPyre_5F_LandMons};
-
-const struct WildPokemon gMtPyre_6F_LandMons[] =
-{
- {27, 27, SPECIES_SHUPPET},
- {28, 28, SPECIES_SHUPPET},
- {26, 26, SPECIES_SHUPPET},
- {25, 25, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {23, 23, SPECIES_SHUPPET},
- {22, 22, SPECIES_SHUPPET},
- {27, 27, SPECIES_DUSKULL},
- {27, 27, SPECIES_DUSKULL},
- {25, 25, SPECIES_DUSKULL},
- {29, 29, SPECIES_DUSKULL},
-};
-
-const struct WildPokemonInfo gMtPyre_6F_LandMonsInfo = {10, gMtPyre_6F_LandMons};
-
-const struct WildPokemon gMtPyre_Exterior_LandMons[] =
-{
- {27, 27, SPECIES_SHUPPET},
- {27, 27, SPECIES_SHUPPET},
- {28, 28, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {29, 29, SPECIES_VULPIX},
- {27, 27, SPECIES_VULPIX},
- {29, 29, SPECIES_VULPIX},
- {25, 25, SPECIES_VULPIX},
- {27, 27, SPECIES_WINGULL},
- {27, 27, SPECIES_WINGULL},
- {26, 26, SPECIES_WINGULL},
- {28, 28, SPECIES_WINGULL},
-};
-
-const struct WildPokemonInfo gMtPyre_Exterior_LandMonsInfo = {10, gMtPyre_Exterior_LandMons};
-
-const struct WildPokemon gMtPyre_Summit_LandMons[] =
-{
- {28, 28, SPECIES_SHUPPET},
- {29, 29, SPECIES_SHUPPET},
- {27, 27, SPECIES_SHUPPET},
- {26, 26, SPECIES_SHUPPET},
- {30, 30, SPECIES_SHUPPET},
- {25, 25, SPECIES_SHUPPET},
- {24, 24, SPECIES_SHUPPET},
- {28, 28, SPECIES_DUSKULL},
- {26, 26, SPECIES_DUSKULL},
- {30, 30, SPECIES_DUSKULL},
- {28, 28, SPECIES_CHIMECHO},
- {28, 28, SPECIES_CHIMECHO},
-};
-
-const struct WildPokemonInfo gMtPyre_Summit_LandMonsInfo = {10, gMtPyre_Summit_LandMons};
-
-const struct WildPokemon gGraniteCave_StevensRoom_LandMons[] =
-{
- {7, 7, SPECIES_ZUBAT},
- {8, 8, SPECIES_MAKUHITA},
- {7, 7, SPECIES_MAKUHITA},
- {8, 8, SPECIES_ZUBAT},
- {9, 9, SPECIES_MAKUHITA},
- {8, 8, SPECIES_ABRA},
- {10, 10, SPECIES_MAKUHITA},
- {6, 6, SPECIES_MAKUHITA},
- {7, 7, SPECIES_ARON},
- {8, 8, SPECIES_ARON},
- {7, 7, SPECIES_ARON},
- {8, 8, SPECIES_ARON},
-};
-
-const struct WildPokemonInfo gGraniteCave_StevensRoom_LandMonsInfo = {10, gGraniteCave_StevensRoom_LandMons};
-
-const struct WildPokemon gRoute125_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute125_WaterMonsInfo = {4, gRoute125_WaterMons};
-
-const struct WildPokemon gRoute125_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute125_FishingMonsInfo = {30, gRoute125_FishingMons};
-
-const struct WildPokemon gRoute126_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute126_WaterMonsInfo = {4, gRoute126_WaterMons};
-
-const struct WildPokemon gRoute126_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute126_FishingMonsInfo = {30, gRoute126_FishingMons};
-
-const struct WildPokemon gRoute127_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute127_WaterMonsInfo = {4, gRoute127_WaterMons};
-
-const struct WildPokemon gRoute127_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute127_FishingMonsInfo = {30, gRoute127_FishingMons};
-
-const struct WildPokemon gRoute128_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute128_WaterMonsInfo = {4, gRoute128_WaterMons};
-
-const struct WildPokemon gRoute128_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_LUVDISC},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_LUVDISC},
- {30, 35, SPECIES_WAILMER},
- {30, 35, SPECIES_CORSOLA},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute128_FishingMonsInfo = {30, gRoute128_FishingMons};
-
-const struct WildPokemon gRoute129_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_WAILORD},
-};
-
-const struct WildPokemonInfo gRoute129_WaterMonsInfo = {4, gRoute129_WaterMons};
-
-const struct WildPokemon gRoute129_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute129_FishingMonsInfo = {30, gRoute129_FishingMons};
-
-const struct WildPokemon gRoute130_LandMons[] =
-{
- {30, 30, SPECIES_WYNAUT},
- {35, 35, SPECIES_WYNAUT},
- {25, 25, SPECIES_WYNAUT},
- {40, 40, SPECIES_WYNAUT},
- {20, 20, SPECIES_WYNAUT},
- {45, 45, SPECIES_WYNAUT},
- {15, 15, SPECIES_WYNAUT},
- {50, 50, SPECIES_WYNAUT},
- {10, 10, SPECIES_WYNAUT},
- {5, 5, SPECIES_WYNAUT},
- {10, 10, SPECIES_WYNAUT},
- {5, 5, SPECIES_WYNAUT},
-};
-
-const struct WildPokemonInfo gRoute130_LandMonsInfo = {20, gRoute130_LandMons};
-
-const struct WildPokemon gRoute130_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute130_WaterMonsInfo = {4, gRoute130_WaterMons};
-
-const struct WildPokemon gRoute130_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute130_FishingMonsInfo = {30, gRoute130_FishingMons};
-
-const struct WildPokemon gRoute131_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute131_WaterMonsInfo = {4, gRoute131_WaterMons};
-
-const struct WildPokemon gRoute131_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute131_FishingMonsInfo = {30, gRoute131_FishingMons};
-
-const struct WildPokemon gRoute132_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute132_WaterMonsInfo = {4, gRoute132_WaterMons};
-
-const struct WildPokemon gRoute132_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_HORSEA},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute132_FishingMonsInfo = {30, gRoute132_FishingMons};
-
-const struct WildPokemon gRoute133_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute133_WaterMonsInfo = {4, gRoute133_WaterMons};
-
-const struct WildPokemon gRoute133_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_HORSEA},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute133_FishingMonsInfo = {30, gRoute133_FishingMons};
-
-const struct WildPokemon gRoute134_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gRoute134_WaterMonsInfo = {4, gRoute134_WaterMons};
-
-const struct WildPokemon gRoute134_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_HORSEA},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gRoute134_FishingMonsInfo = {30, gRoute134_FishingMons};
-
-const struct WildPokemon gAbandonedShip_HiddenFloorCorridors_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_TENTACOOL},
- {30, 35, SPECIES_TENTACRUEL},
-};
-
-const struct WildPokemonInfo gAbandonedShip_HiddenFloorCorridors_WaterMonsInfo = {4, gAbandonedShip_HiddenFloorCorridors_WaterMons};
-
-const struct WildPokemon gAbandonedShip_HiddenFloorCorridors_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_TENTACOOL},
- {25, 30, SPECIES_TENTACOOL},
- {30, 35, SPECIES_TENTACOOL},
- {30, 35, SPECIES_TENTACRUEL},
- {25, 30, SPECIES_TENTACRUEL},
- {20, 25, SPECIES_TENTACRUEL},
-};
-
-const struct WildPokemonInfo gAbandonedShip_HiddenFloorCorridors_FishingMonsInfo = {20, gAbandonedShip_HiddenFloorCorridors_FishingMons};
-
-const struct WildPokemon gSeafloorCavern_Room1_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room1_LandMonsInfo = {4, gSeafloorCavern_Room1_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Room2_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room2_LandMonsInfo = {4, gSeafloorCavern_Room2_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Room3_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room3_LandMonsInfo = {4, gSeafloorCavern_Room3_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Room4_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room4_LandMonsInfo = {4, gSeafloorCavern_Room4_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Room5_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room5_LandMonsInfo = {4, gSeafloorCavern_Room5_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Room6_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room6_LandMonsInfo = {4, gSeafloorCavern_Room6_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Room6_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_ZUBAT},
- {30, 35, SPECIES_ZUBAT},
- {30, 35, SPECIES_GOLBAT},
- {30, 35, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room6_WaterMonsInfo = {4, gSeafloorCavern_Room6_WaterMons};
-
-const struct WildPokemon gSeafloorCavern_Room6_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room6_FishingMonsInfo = {10, gSeafloorCavern_Room6_FishingMons};
-
-const struct WildPokemon gSeafloorCavern_Room7_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room7_LandMonsInfo = {4, gSeafloorCavern_Room7_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Room7_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_ZUBAT},
- {30, 35, SPECIES_ZUBAT},
- {30, 35, SPECIES_GOLBAT},
- {30, 35, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room7_WaterMonsInfo = {4, gSeafloorCavern_Room7_WaterMons};
-
-const struct WildPokemon gSeafloorCavern_Room7_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room7_FishingMonsInfo = {10, gSeafloorCavern_Room7_FishingMons};
-
-const struct WildPokemon gSeafloorCavern_Room8_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Room8_LandMonsInfo = {4, gSeafloorCavern_Room8_LandMons};
-
-const struct WildPokemon gSeafloorCavern_Entrance_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_ZUBAT},
- {30, 35, SPECIES_ZUBAT},
- {30, 35, SPECIES_GOLBAT},
- {30, 35, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Entrance_WaterMonsInfo = {4, gSeafloorCavern_Entrance_WaterMons};
-
-const struct WildPokemon gSeafloorCavern_Entrance_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gSeafloorCavern_Entrance_FishingMonsInfo = {10, gSeafloorCavern_Entrance_FishingMons};
-
-const struct WildPokemon gCaveOfOrigin_Entrance_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {33, 33, SPECIES_ZUBAT},
- {28, 28, SPECIES_ZUBAT},
- {29, 29, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {35, 35, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gCaveOfOrigin_Entrance_LandMonsInfo = {4, gCaveOfOrigin_Entrance_LandMons};
-
-const struct WildPokemon gCaveOfOrigin_1F_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {30, 30, SPECIES_SABLEYE},
- {32, 32, SPECIES_SABLEYE},
- {34, 34, SPECIES_SABLEYE},
- {33, 33, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gCaveOfOrigin_1F_LandMonsInfo = {4, gCaveOfOrigin_1F_LandMons};
-
-const struct WildPokemon gCaveOfOrigin_UnusedRubySapphireMap1_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {30, 30, SPECIES_SABLEYE},
- {32, 32, SPECIES_SABLEYE},
- {34, 34, SPECIES_SABLEYE},
- {33, 33, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gCaveOfOrigin_UnusedRubySapphireMap1_LandMonsInfo = {4, gCaveOfOrigin_UnusedRubySapphireMap1_LandMons};
-
-const struct WildPokemon gCaveOfOrigin_UnusedRubySapphireMap2_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {30, 30, SPECIES_SABLEYE},
- {32, 32, SPECIES_SABLEYE},
- {34, 34, SPECIES_SABLEYE},
- {33, 33, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gCaveOfOrigin_UnusedRubySapphireMap2_LandMonsInfo = {4, gCaveOfOrigin_UnusedRubySapphireMap2_LandMons};
-
-const struct WildPokemon gCaveOfOrigin_UnusedRubySapphireMap3_LandMons[] =
-{
- {30, 30, SPECIES_ZUBAT},
- {31, 31, SPECIES_ZUBAT},
- {32, 32, SPECIES_ZUBAT},
- {30, 30, SPECIES_SABLEYE},
- {32, 32, SPECIES_SABLEYE},
- {34, 34, SPECIES_SABLEYE},
- {33, 33, SPECIES_ZUBAT},
- {34, 34, SPECIES_ZUBAT},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {36, 36, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gCaveOfOrigin_UnusedRubySapphireMap3_LandMonsInfo = {4, gCaveOfOrigin_UnusedRubySapphireMap3_LandMons};
-
-const struct WildPokemon gNewMauville_Entrance_LandMons[] =
-{
- {24, 24, SPECIES_VOLTORB},
- {24, 24, SPECIES_MAGNEMITE},
- {25, 25, SPECIES_VOLTORB},
- {25, 25, SPECIES_MAGNEMITE},
- {23, 23, SPECIES_VOLTORB},
- {23, 23, SPECIES_MAGNEMITE},
- {26, 26, SPECIES_VOLTORB},
- {26, 26, SPECIES_MAGNEMITE},
- {22, 22, SPECIES_VOLTORB},
- {22, 22, SPECIES_MAGNEMITE},
- {22, 22, SPECIES_VOLTORB},
- {22, 22, SPECIES_MAGNEMITE},
-};
-
-const struct WildPokemonInfo gNewMauville_Entrance_LandMonsInfo = {10, gNewMauville_Entrance_LandMons};
-
-const struct WildPokemon gSafariZone_Southwest_LandMons[] =
-{
- {25, 25, SPECIES_ODDISH},
- {27, 27, SPECIES_ODDISH},
- {25, 25, SPECIES_GIRAFARIG},
- {27, 27, SPECIES_GIRAFARIG},
- {25, 25, SPECIES_NATU},
- {27, 27, SPECIES_DODUO},
- {25, 25, SPECIES_GLOOM},
- {27, 27, SPECIES_WOBBUFFET},
- {25, 25, SPECIES_PIKACHU},
- {27, 27, SPECIES_WOBBUFFET},
- {27, 27, SPECIES_PIKACHU},
- {29, 29, SPECIES_WOBBUFFET},
-};
-
-const struct WildPokemonInfo gSafariZone_Southwest_LandMonsInfo = {25, gSafariZone_Southwest_LandMons};
-
-const struct WildPokemon gSafariZone_Southwest_WaterMons[] =
-{
- {20, 30, SPECIES_PSYDUCK},
- {20, 30, SPECIES_PSYDUCK},
- {30, 35, SPECIES_PSYDUCK},
- {30, 35, SPECIES_PSYDUCK},
- {30, 35, SPECIES_PSYDUCK},
-};
-
-const struct WildPokemonInfo gSafariZone_Southwest_WaterMonsInfo = {9, gSafariZone_Southwest_WaterMons};
-
-const struct WildPokemon gSafariZone_Southwest_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 25, SPECIES_GOLDEEN},
- {10, 30, SPECIES_GOLDEEN},
- {25, 30, SPECIES_GOLDEEN},
- {30, 35, SPECIES_GOLDEEN},
- {30, 35, SPECIES_SEAKING},
- {35, 40, SPECIES_SEAKING},
- {25, 30, SPECIES_SEAKING},
-};
-
-const struct WildPokemonInfo gSafariZone_Southwest_FishingMonsInfo = {35, gSafariZone_Southwest_FishingMons};
-
-const struct WildPokemon gSafariZone_North_LandMons[] =
-{
- {27, 27, SPECIES_PHANPY},
- {27, 27, SPECIES_ODDISH},
- {29, 29, SPECIES_PHANPY},
- {29, 29, SPECIES_ODDISH},
- {27, 27, SPECIES_NATU},
- {29, 29, SPECIES_GLOOM},
- {31, 31, SPECIES_GLOOM},
- {29, 29, SPECIES_NATU},
- {29, 29, SPECIES_XATU},
- {27, 27, SPECIES_HERACROSS},
- {31, 31, SPECIES_XATU},
- {29, 29, SPECIES_HERACROSS},
-};
-
-const struct WildPokemonInfo gSafariZone_North_LandMonsInfo = {25, gSafariZone_North_LandMons};
-
-const struct WildPokemon gSafariZone_North_RockSmashMons[] =
-{
- {10, 15, SPECIES_GEODUDE},
- {5, 10, SPECIES_GEODUDE},
- {15, 20, SPECIES_GEODUDE},
- {20, 25, SPECIES_GEODUDE},
- {25, 30, SPECIES_GEODUDE},
-};
-
-const struct WildPokemonInfo gSafariZone_North_RockSmashMonsInfo = {25, gSafariZone_North_RockSmashMons};
-
-const struct WildPokemon gSafariZone_Northwest_LandMons[] =
-{
- {27, 27, SPECIES_RHYHORN},
- {27, 27, SPECIES_ODDISH},
- {29, 29, SPECIES_RHYHORN},
- {29, 29, SPECIES_ODDISH},
- {27, 27, SPECIES_DODUO},
- {29, 29, SPECIES_GLOOM},
- {31, 31, SPECIES_GLOOM},
- {29, 29, SPECIES_DODUO},
- {29, 29, SPECIES_DODRIO},
- {27, 27, SPECIES_PINSIR},
- {31, 31, SPECIES_DODRIO},
- {29, 29, SPECIES_PINSIR},
-};
-
-const struct WildPokemonInfo gSafariZone_Northwest_LandMonsInfo = {25, gSafariZone_Northwest_LandMons};
-
-const struct WildPokemon gSafariZone_Northwest_WaterMons[] =
-{
- {20, 30, SPECIES_PSYDUCK},
- {20, 30, SPECIES_PSYDUCK},
- {30, 35, SPECIES_PSYDUCK},
- {30, 35, SPECIES_GOLDUCK},
- {25, 40, SPECIES_GOLDUCK},
-};
-
-const struct WildPokemonInfo gSafariZone_Northwest_WaterMonsInfo = {9, gSafariZone_Northwest_WaterMons};
-
-const struct WildPokemon gSafariZone_Northwest_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 25, SPECIES_GOLDEEN},
- {10, 30, SPECIES_GOLDEEN},
- {25, 30, SPECIES_GOLDEEN},
- {30, 35, SPECIES_GOLDEEN},
- {30, 35, SPECIES_SEAKING},
- {35, 40, SPECIES_SEAKING},
- {25, 30, SPECIES_SEAKING},
-};
-
-const struct WildPokemonInfo gSafariZone_Northwest_FishingMonsInfo = {35, gSafariZone_Northwest_FishingMons};
-
-const struct WildPokemon gVictoryRoad_B1F_LandMons[] =
-{
- {40, 40, SPECIES_GOLBAT},
- {40, 40, SPECIES_HARIYAMA},
- {40, 40, SPECIES_LAIRON},
- {40, 40, SPECIES_LAIRON},
- {38, 38, SPECIES_GOLBAT},
- {38, 38, SPECIES_HARIYAMA},
- {42, 42, SPECIES_GOLBAT},
- {42, 42, SPECIES_HARIYAMA},
- {42, 42, SPECIES_LAIRON},
- {38, 38, SPECIES_MAWILE},
- {42, 42, SPECIES_LAIRON},
- {38, 38, SPECIES_MAWILE},
-};
-
-const struct WildPokemonInfo gVictoryRoad_B1F_LandMonsInfo = {10, gVictoryRoad_B1F_LandMons};
-
-const struct WildPokemon gVictoryRoad_B1F_RockSmashMons[] =
-{
- {30, 40, SPECIES_GRAVELER},
- {30, 40, SPECIES_GEODUDE},
- {35, 40, SPECIES_GRAVELER},
- {35, 40, SPECIES_GRAVELER},
- {35, 40, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gVictoryRoad_B1F_RockSmashMonsInfo = {20, gVictoryRoad_B1F_RockSmashMons};
-
-const struct WildPokemon gVictoryRoad_B2F_LandMons[] =
-{
- {40, 40, SPECIES_GOLBAT},
- {40, 40, SPECIES_SABLEYE},
- {40, 40, SPECIES_LAIRON},
- {40, 40, SPECIES_LAIRON},
- {42, 42, SPECIES_GOLBAT},
- {42, 42, SPECIES_SABLEYE},
- {44, 44, SPECIES_GOLBAT},
- {44, 44, SPECIES_SABLEYE},
- {42, 42, SPECIES_LAIRON},
- {42, 42, SPECIES_MAWILE},
- {44, 44, SPECIES_LAIRON},
- {44, 44, SPECIES_MAWILE},
-};
-
-const struct WildPokemonInfo gVictoryRoad_B2F_LandMonsInfo = {10, gVictoryRoad_B2F_LandMons};
-
-const struct WildPokemon gVictoryRoad_B2F_WaterMons[] =
-{
- {30, 35, SPECIES_GOLBAT},
- {25, 30, SPECIES_GOLBAT},
- {35, 40, SPECIES_GOLBAT},
- {35, 40, SPECIES_GOLBAT},
- {35, 40, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gVictoryRoad_B2F_WaterMonsInfo = {4, gVictoryRoad_B2F_WaterMons};
-
-const struct WildPokemon gVictoryRoad_B2F_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {30, 35, SPECIES_WHISCASH},
- {35, 40, SPECIES_WHISCASH},
- {40, 45, SPECIES_WHISCASH},
-};
-
-const struct WildPokemonInfo gVictoryRoad_B2F_FishingMonsInfo = {30, gVictoryRoad_B2F_FishingMons};
-
-const struct WildPokemon gMeteorFalls_1F_1R_LandMons[] =
-{
- {16, 16, SPECIES_ZUBAT},
- {17, 17, SPECIES_ZUBAT},
- {18, 18, SPECIES_ZUBAT},
- {15, 15, SPECIES_ZUBAT},
- {14, 14, SPECIES_ZUBAT},
- {16, 16, SPECIES_SOLROCK},
- {18, 18, SPECIES_SOLROCK},
- {14, 14, SPECIES_SOLROCK},
- {19, 19, SPECIES_ZUBAT},
- {20, 20, SPECIES_ZUBAT},
- {19, 19, SPECIES_ZUBAT},
- {20, 20, SPECIES_ZUBAT},
-};
-
-const struct WildPokemonInfo gMeteorFalls_1F_1R_LandMonsInfo = {10, gMeteorFalls_1F_1R_LandMons};
-
-const struct WildPokemon gMeteorFalls_1F_1R_WaterMons[] =
-{
- {5, 35, SPECIES_ZUBAT},
- {30, 35, SPECIES_ZUBAT},
- {25, 35, SPECIES_SOLROCK},
- {15, 25, SPECIES_SOLROCK},
- {5, 15, SPECIES_SOLROCK},
-};
-
-const struct WildPokemonInfo gMeteorFalls_1F_1R_WaterMonsInfo = {4, gMeteorFalls_1F_1R_WaterMons};
-
-const struct WildPokemon gMeteorFalls_1F_1R_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {20, 25, SPECIES_BARBOACH},
- {35, 40, SPECIES_BARBOACH},
- {40, 45, SPECIES_BARBOACH},
-};
-
-const struct WildPokemonInfo gMeteorFalls_1F_1R_FishingMonsInfo = {30, gMeteorFalls_1F_1R_FishingMons};
-
-const struct WildPokemon gMeteorFalls_1F_2R_LandMons[] =
-{
- {33, 33, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {35, 35, SPECIES_SOLROCK},
- {33, 33, SPECIES_SOLROCK},
- {37, 37, SPECIES_SOLROCK},
- {35, 35, SPECIES_GOLBAT},
- {39, 39, SPECIES_SOLROCK},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gMeteorFalls_1F_2R_LandMonsInfo = {10, gMeteorFalls_1F_2R_LandMons};
-
-const struct WildPokemon gMeteorFalls_1F_2R_WaterMons[] =
-{
- {30, 35, SPECIES_GOLBAT},
- {30, 35, SPECIES_GOLBAT},
- {25, 35, SPECIES_SOLROCK},
- {15, 25, SPECIES_SOLROCK},
- {5, 15, SPECIES_SOLROCK},
-};
-
-const struct WildPokemonInfo gMeteorFalls_1F_2R_WaterMonsInfo = {4, gMeteorFalls_1F_2R_WaterMons};
-
-const struct WildPokemon gMeteorFalls_1F_2R_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {30, 35, SPECIES_WHISCASH},
- {35, 40, SPECIES_WHISCASH},
- {40, 45, SPECIES_WHISCASH},
-};
-
-const struct WildPokemonInfo gMeteorFalls_1F_2R_FishingMonsInfo = {30, gMeteorFalls_1F_2R_FishingMons};
-
-const struct WildPokemon gMeteorFalls_B1F_1R_LandMons[] =
-{
- {33, 33, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {35, 35, SPECIES_SOLROCK},
- {33, 33, SPECIES_SOLROCK},
- {37, 37, SPECIES_SOLROCK},
- {35, 35, SPECIES_GOLBAT},
- {39, 39, SPECIES_SOLROCK},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gMeteorFalls_B1F_1R_LandMonsInfo = {10, gMeteorFalls_B1F_1R_LandMons};
-
-const struct WildPokemon gMeteorFalls_B1F_1R_WaterMons[] =
-{
- {30, 35, SPECIES_GOLBAT},
- {30, 35, SPECIES_GOLBAT},
- {25, 35, SPECIES_SOLROCK},
- {15, 25, SPECIES_SOLROCK},
- {5, 15, SPECIES_SOLROCK},
-};
-
-const struct WildPokemonInfo gMeteorFalls_B1F_1R_WaterMonsInfo = {4, gMeteorFalls_B1F_1R_WaterMons};
-
-const struct WildPokemon gMeteorFalls_B1F_1R_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_BARBOACH},
- {25, 30, SPECIES_BARBOACH},
- {30, 35, SPECIES_BARBOACH},
- {30, 35, SPECIES_WHISCASH},
- {35, 40, SPECIES_WHISCASH},
- {40, 45, SPECIES_WHISCASH},
-};
-
-const struct WildPokemonInfo gMeteorFalls_B1F_1R_FishingMonsInfo = {30, gMeteorFalls_B1F_1R_FishingMons};
-
-const struct WildPokemon gShoalCave_LowTideStairsRoom_LandMons[] =
-{
- {26, 26, SPECIES_ZUBAT},
- {26, 26, SPECIES_SPHEAL},
- {28, 28, SPECIES_ZUBAT},
- {28, 28, SPECIES_SPHEAL},
- {30, 30, SPECIES_ZUBAT},
- {30, 30, SPECIES_SPHEAL},
- {32, 32, SPECIES_ZUBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideStairsRoom_LandMonsInfo = {10, gShoalCave_LowTideStairsRoom_LandMons};
-
-const struct WildPokemon gShoalCave_LowTideLowerRoom_LandMons[] =
-{
- {26, 26, SPECIES_ZUBAT},
- {26, 26, SPECIES_SPHEAL},
- {28, 28, SPECIES_ZUBAT},
- {28, 28, SPECIES_SPHEAL},
- {30, 30, SPECIES_ZUBAT},
- {30, 30, SPECIES_SPHEAL},
- {32, 32, SPECIES_ZUBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideLowerRoom_LandMonsInfo = {10, gShoalCave_LowTideLowerRoom_LandMons};
-
-const struct WildPokemon gShoalCave_LowTideInnerRoom_LandMons[] =
-{
- {26, 26, SPECIES_ZUBAT},
- {26, 26, SPECIES_SPHEAL},
- {28, 28, SPECIES_ZUBAT},
- {28, 28, SPECIES_SPHEAL},
- {30, 30, SPECIES_ZUBAT},
- {30, 30, SPECIES_SPHEAL},
- {32, 32, SPECIES_ZUBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideInnerRoom_LandMonsInfo = {10, gShoalCave_LowTideInnerRoom_LandMons};
-
-const struct WildPokemon gShoalCave_LowTideInnerRoom_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_ZUBAT},
- {25, 30, SPECIES_SPHEAL},
- {25, 30, SPECIES_SPHEAL},
- {25, 35, SPECIES_SPHEAL},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideInnerRoom_WaterMonsInfo = {4, gShoalCave_LowTideInnerRoom_WaterMons};
-
-const struct WildPokemon gShoalCave_LowTideInnerRoom_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideInnerRoom_FishingMonsInfo = {10, gShoalCave_LowTideInnerRoom_FishingMons};
-
-const struct WildPokemon gShoalCave_LowTideEntranceRoom_LandMons[] =
-{
- {26, 26, SPECIES_ZUBAT},
- {26, 26, SPECIES_SPHEAL},
- {28, 28, SPECIES_ZUBAT},
- {28, 28, SPECIES_SPHEAL},
- {30, 30, SPECIES_ZUBAT},
- {30, 30, SPECIES_SPHEAL},
- {32, 32, SPECIES_ZUBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
- {32, 32, SPECIES_GOLBAT},
- {32, 32, SPECIES_SPHEAL},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideEntranceRoom_LandMonsInfo = {10, gShoalCave_LowTideEntranceRoom_LandMons};
-
-const struct WildPokemon gShoalCave_LowTideEntranceRoom_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {5, 35, SPECIES_ZUBAT},
- {25, 30, SPECIES_SPHEAL},
- {25, 30, SPECIES_SPHEAL},
- {25, 35, SPECIES_SPHEAL},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideEntranceRoom_WaterMonsInfo = {4, gShoalCave_LowTideEntranceRoom_WaterMons};
-
-const struct WildPokemon gShoalCave_LowTideEntranceRoom_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideEntranceRoom_FishingMonsInfo = {10, gShoalCave_LowTideEntranceRoom_FishingMons};
-
-const struct WildPokemon gLilycoveCity_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gLilycoveCity_WaterMonsInfo = {4, gLilycoveCity_WaterMons};
-
-const struct WildPokemon gLilycoveCity_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_STARYU},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gLilycoveCity_FishingMonsInfo = {10, gLilycoveCity_FishingMons};
-
-const struct WildPokemon gDewfordTown_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gDewfordTown_WaterMonsInfo = {4, gDewfordTown_WaterMons};
-
-const struct WildPokemon gDewfordTown_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gDewfordTown_FishingMonsInfo = {10, gDewfordTown_FishingMons};
-
-const struct WildPokemon gSlateportCity_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gSlateportCity_WaterMonsInfo = {4, gSlateportCity_WaterMons};
-
-const struct WildPokemon gSlateportCity_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_WAILMER},
- {20, 25, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gSlateportCity_FishingMonsInfo = {10, gSlateportCity_FishingMons};
-
-const struct WildPokemon gMossdeepCity_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gMossdeepCity_WaterMonsInfo = {4, gMossdeepCity_WaterMons};
-
-const struct WildPokemon gMossdeepCity_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gMossdeepCity_FishingMonsInfo = {10, gMossdeepCity_FishingMons};
-
-const struct WildPokemon gPacifidlogTown_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gPacifidlogTown_WaterMonsInfo = {4, gPacifidlogTown_WaterMons};
-
-const struct WildPokemon gPacifidlogTown_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_SHARPEDO},
- {30, 35, SPECIES_WAILMER},
- {25, 30, SPECIES_WAILMER},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gPacifidlogTown_FishingMonsInfo = {10, gPacifidlogTown_FishingMons};
-
-const struct WildPokemon gEverGrandeCity_WaterMons[] =
-{
- {5, 35, SPECIES_TENTACOOL},
- {10, 30, SPECIES_WINGULL},
- {15, 25, SPECIES_WINGULL},
- {25, 30, SPECIES_PELIPPER},
- {25, 30, SPECIES_PELIPPER},
-};
-
-const struct WildPokemonInfo gEverGrandeCity_WaterMonsInfo = {4, gEverGrandeCity_WaterMons};
-
-const struct WildPokemon gEverGrandeCity_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_LUVDISC},
- {10, 30, SPECIES_WAILMER},
- {30, 35, SPECIES_LUVDISC},
- {30, 35, SPECIES_WAILMER},
- {30, 35, SPECIES_CORSOLA},
- {35, 40, SPECIES_WAILMER},
- {40, 45, SPECIES_WAILMER},
-};
-
-const struct WildPokemonInfo gEverGrandeCity_FishingMonsInfo = {10, gEverGrandeCity_FishingMons};
-
-const struct WildPokemon gPetalburgCity_WaterMons[] =
-{
- {20, 30, SPECIES_MARILL},
- {10, 20, SPECIES_MARILL},
- {30, 35, SPECIES_MARILL},
- {5, 10, SPECIES_MARILL},
- {5, 10, SPECIES_MARILL},
-};
-
-const struct WildPokemonInfo gPetalburgCity_WaterMonsInfo = {1, gPetalburgCity_WaterMons};
-
-const struct WildPokemon gPetalburgCity_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_GOLDEEN},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_GOLDEEN},
- {10, 30, SPECIES_CORPHISH},
- {25, 30, SPECIES_CORPHISH},
- {30, 35, SPECIES_CORPHISH},
- {20, 25, SPECIES_CORPHISH},
- {35, 40, SPECIES_CORPHISH},
- {40, 45, SPECIES_CORPHISH},
-};
-
-const struct WildPokemonInfo gPetalburgCity_FishingMonsInfo = {10, gPetalburgCity_FishingMons};
-
-const struct WildPokemon gUnderwater1_WaterMons[] =
-{
- {20, 30, SPECIES_CLAMPERL},
- {20, 30, SPECIES_CHINCHOU},
- {30, 35, SPECIES_CLAMPERL},
- {30, 35, SPECIES_RELICANTH},
- {30, 35, SPECIES_RELICANTH},
-};
-
-const struct WildPokemonInfo gUnderwater1_WaterMonsInfo = {4, gUnderwater1_WaterMons};
-
-const struct WildPokemon gShoalCave_LowTideIceRoom_LandMons[] =
-{
- {26, 26, SPECIES_ZUBAT},
- {26, 26, SPECIES_SPHEAL},
- {28, 28, SPECIES_ZUBAT},
- {28, 28, SPECIES_SPHEAL},
- {30, 30, SPECIES_ZUBAT},
- {30, 30, SPECIES_SPHEAL},
- {26, 26, SPECIES_SNORUNT},
- {32, 32, SPECIES_SPHEAL},
- {30, 30, SPECIES_GOLBAT},
- {28, 28, SPECIES_SNORUNT},
- {32, 32, SPECIES_GOLBAT},
- {30, 30, SPECIES_SNORUNT},
-};
-
-const struct WildPokemonInfo gShoalCave_LowTideIceRoom_LandMonsInfo = {10, gShoalCave_LowTideIceRoom_LandMons};
-
-const struct WildPokemon gSkyPillar_1F_LandMons[] =
-{
- {33, 33, SPECIES_SABLEYE},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {34, 34, SPECIES_SABLEYE},
- {36, 36, SPECIES_CLAYDOL},
- {37, 37, SPECIES_BANETTE},
- {38, 38, SPECIES_BANETTE},
- {36, 36, SPECIES_CLAYDOL},
- {37, 37, SPECIES_CLAYDOL},
- {38, 38, SPECIES_CLAYDOL},
- {37, 37, SPECIES_CLAYDOL},
- {38, 38, SPECIES_CLAYDOL},
-};
-
-const struct WildPokemonInfo gSkyPillar_1F_LandMonsInfo = {10, gSkyPillar_1F_LandMons};
-
-const struct WildPokemon gSootopolisCity_WaterMons[] =
-{
- {5, 35, SPECIES_MAGIKARP},
- {10, 30, SPECIES_MAGIKARP},
- {15, 25, SPECIES_MAGIKARP},
- {25, 30, SPECIES_MAGIKARP},
- {25, 30, SPECIES_MAGIKARP},
-};
-
-const struct WildPokemonInfo gSootopolisCity_WaterMonsInfo = {1, gSootopolisCity_WaterMons};
-
-const struct WildPokemon gSootopolisCity_FishingMons[] =
-{
- {5, 10, SPECIES_MAGIKARP},
- {5, 10, SPECIES_TENTACOOL},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_MAGIKARP},
- {10, 30, SPECIES_MAGIKARP},
- {30, 35, SPECIES_MAGIKARP},
- {30, 35, SPECIES_MAGIKARP},
- {35, 40, SPECIES_GYARADOS},
- {35, 45, SPECIES_GYARADOS},
- {5, 45, SPECIES_GYARADOS},
-};
-
-const struct WildPokemonInfo gSootopolisCity_FishingMonsInfo = {10, gSootopolisCity_FishingMons};
-
-const struct WildPokemon gSkyPillar_3F_LandMons[] =
-{
- {33, 33, SPECIES_SABLEYE},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {34, 34, SPECIES_SABLEYE},
- {36, 36, SPECIES_CLAYDOL},
- {37, 37, SPECIES_BANETTE},
- {38, 38, SPECIES_BANETTE},
- {36, 36, SPECIES_CLAYDOL},
- {37, 37, SPECIES_CLAYDOL},
- {38, 38, SPECIES_CLAYDOL},
- {37, 37, SPECIES_CLAYDOL},
- {38, 38, SPECIES_CLAYDOL},
-};
-
-const struct WildPokemonInfo gSkyPillar_3F_LandMonsInfo = {10, gSkyPillar_3F_LandMons};
-
-const struct WildPokemon gSkyPillar_5F_LandMons[] =
-{
- {33, 33, SPECIES_SABLEYE},
- {34, 34, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {34, 34, SPECIES_SABLEYE},
- {36, 36, SPECIES_CLAYDOL},
- {37, 37, SPECIES_BANETTE},
- {38, 38, SPECIES_BANETTE},
- {36, 36, SPECIES_CLAYDOL},
- {37, 37, SPECIES_CLAYDOL},
- {38, 38, SPECIES_ALTARIA},
- {39, 39, SPECIES_ALTARIA},
- {39, 39, SPECIES_ALTARIA},
-};
-
-const struct WildPokemonInfo gSkyPillar_5F_LandMonsInfo = {10, gSkyPillar_5F_LandMons};
-
-const struct WildPokemon gSafariZone_Southeast_LandMons[] =
-{
- {33, 33, SPECIES_SUNKERN},
- {34, 34, SPECIES_MAREEP},
- {35, 35, SPECIES_SUNKERN},
- {36, 36, SPECIES_MAREEP},
- {34, 34, SPECIES_AIPOM},
- {33, 33, SPECIES_SPINARAK},
- {35, 35, SPECIES_HOOTHOOT},
- {34, 34, SPECIES_SNUBBULL},
- {36, 36, SPECIES_STANTLER},
- {37, 37, SPECIES_GLIGAR},
- {39, 39, SPECIES_STANTLER},
- {40, 40, SPECIES_GLIGAR},
-};
-
-const struct WildPokemonInfo gSafariZone_Southeast_LandMonsInfo = {25, gSafariZone_Southeast_LandMons};
-
-const struct WildPokemon gSafariZone_Southeast_WaterMons[] =
-{
- {25, 30, SPECIES_WOOPER},
- {25, 30, SPECIES_MARILL},
- {25, 30, SPECIES_MARILL},
- {30, 35, SPECIES_MARILL},
- {35, 40, SPECIES_QUAGSIRE},
-};
-
-const struct WildPokemonInfo gSafariZone_Southeast_WaterMonsInfo = {9, gSafariZone_Southeast_WaterMons};
-
-const struct WildPokemon gSafariZone_Southeast_FishingMons[] =
-{
- {25, 30, SPECIES_MAGIKARP},
- {25, 30, SPECIES_GOLDEEN},
- {25, 30, SPECIES_MAGIKARP},
- {25, 30, SPECIES_GOLDEEN},
- {30, 35, SPECIES_REMORAID},
- {25, 30, SPECIES_GOLDEEN},
- {25, 30, SPECIES_REMORAID},
- {30, 35, SPECIES_REMORAID},
- {30, 35, SPECIES_REMORAID},
- {35, 40, SPECIES_OCTILLERY},
-};
-
-const struct WildPokemonInfo gSafariZone_Southeast_FishingMonsInfo = {35, gSafariZone_Southeast_FishingMons};
-
-const struct WildPokemon gSafariZone_Northeast_LandMons[] =
-{
- {33, 33, SPECIES_AIPOM},
- {34, 34, SPECIES_TEDDIURSA},
- {35, 35, SPECIES_AIPOM},
- {36, 36, SPECIES_TEDDIURSA},
- {34, 34, SPECIES_SUNKERN},
- {33, 33, SPECIES_LEDYBA},
- {35, 35, SPECIES_HOOTHOOT},
- {34, 34, SPECIES_PINECO},
- {36, 36, SPECIES_HOUNDOUR},
- {37, 37, SPECIES_MILTANK},
- {39, 39, SPECIES_HOUNDOUR},
- {40, 40, SPECIES_MILTANK},
-};
-
-const struct WildPokemonInfo gSafariZone_Northeast_LandMonsInfo = {25, gSafariZone_Northeast_LandMons};
-
-const struct WildPokemon gSafariZone_Northeast_RockSmashMons[] =
-{
- {25, 30, SPECIES_SHUCKLE},
- {20, 25, SPECIES_SHUCKLE},
- {30, 35, SPECIES_SHUCKLE},
- {30, 35, SPECIES_SHUCKLE},
- {35, 40, SPECIES_SHUCKLE},
-};
-
-const struct WildPokemonInfo gSafariZone_Northeast_RockSmashMonsInfo = {25, gSafariZone_Northeast_RockSmashMons};
-
-const struct WildPokemon gMagmaHideout_1F_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_1F_LandMonsInfo = {10, gMagmaHideout_1F_LandMons};
-
-const struct WildPokemon gMagmaHideout_2F_1R_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_2F_1R_LandMonsInfo = {10, gMagmaHideout_2F_1R_LandMons};
-
-const struct WildPokemon gMagmaHideout_2F_2R_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_2F_2R_LandMonsInfo = {10, gMagmaHideout_2F_2R_LandMons};
-
-const struct WildPokemon gMagmaHideout_3F_1R_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_3F_1R_LandMonsInfo = {10, gMagmaHideout_3F_1R_LandMons};
-
-const struct WildPokemon gMagmaHideout_3F_2R_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_3F_2R_LandMonsInfo = {10, gMagmaHideout_3F_2R_LandMons};
-
-const struct WildPokemon gMagmaHideout_4F_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_4F_LandMonsInfo = {10, gMagmaHideout_4F_LandMons};
-
-const struct WildPokemon gMagmaHideout_3F_3R_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_3F_3R_LandMonsInfo = {10, gMagmaHideout_3F_3R_LandMons};
-
-const struct WildPokemon gMagmaHideout_2F_3R_LandMons[] =
-{
- {27, 27, SPECIES_GEODUDE},
- {28, 28, SPECIES_TORKOAL},
- {28, 28, SPECIES_GEODUDE},
- {30, 30, SPECIES_TORKOAL},
- {29, 29, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GEODUDE},
- {30, 30, SPECIES_GRAVELER},
- {30, 30, SPECIES_GRAVELER},
- {31, 31, SPECIES_GRAVELER},
- {32, 32, SPECIES_GRAVELER},
- {33, 33, SPECIES_GRAVELER},
-};
-
-const struct WildPokemonInfo gMagmaHideout_2F_3R_LandMonsInfo = {10, gMagmaHideout_2F_3R_LandMons};
-
-const struct WildPokemon gMirageTower_1F_LandMons[] =
-{
- {21, 21, SPECIES_SANDSHREW},
- {21, 21, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {22, 22, SPECIES_SANDSHREW},
- {22, 22, SPECIES_TRAPINCH},
- {23, 23, SPECIES_SANDSHREW},
- {23, 23, SPECIES_TRAPINCH},
- {24, 24, SPECIES_SANDSHREW},
- {24, 24, SPECIES_TRAPINCH},
-};
-
-const struct WildPokemonInfo gMirageTower_1F_LandMonsInfo = {10, gMirageTower_1F_LandMons};
-
-const struct WildPokemon gMirageTower_2F_LandMons[] =
-{
- {21, 21, SPECIES_SANDSHREW},
- {21, 21, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {22, 22, SPECIES_SANDSHREW},
- {22, 22, SPECIES_TRAPINCH},
- {23, 23, SPECIES_SANDSHREW},
- {23, 23, SPECIES_TRAPINCH},
- {24, 24, SPECIES_SANDSHREW},
- {24, 24, SPECIES_TRAPINCH},
-};
-
-const struct WildPokemonInfo gMirageTower_2F_LandMonsInfo = {10, gMirageTower_2F_LandMons};
-
-const struct WildPokemon gMirageTower_3F_LandMons[] =
-{
- {21, 21, SPECIES_SANDSHREW},
- {21, 21, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {22, 22, SPECIES_SANDSHREW},
- {22, 22, SPECIES_TRAPINCH},
- {23, 23, SPECIES_SANDSHREW},
- {23, 23, SPECIES_TRAPINCH},
- {24, 24, SPECIES_SANDSHREW},
- {24, 24, SPECIES_TRAPINCH},
-};
-
-const struct WildPokemonInfo gMirageTower_3F_LandMonsInfo = {10, gMirageTower_3F_LandMons};
-
-const struct WildPokemon gMirageTower_4F_LandMons[] =
-{
- {21, 21, SPECIES_SANDSHREW},
- {21, 21, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {20, 20, SPECIES_SANDSHREW},
- {20, 20, SPECIES_TRAPINCH},
- {22, 22, SPECIES_SANDSHREW},
- {22, 22, SPECIES_TRAPINCH},
- {23, 23, SPECIES_SANDSHREW},
- {23, 23, SPECIES_TRAPINCH},
- {24, 24, SPECIES_SANDSHREW},
- {24, 24, SPECIES_TRAPINCH},
-};
-
-const struct WildPokemonInfo gMirageTower_4F_LandMonsInfo = {10, gMirageTower_4F_LandMons};
-
-const struct WildPokemon gDesertUnderpass_LandMons[] =
-{
- {38, 38, SPECIES_DITTO},
- {35, 35, SPECIES_WHISMUR},
- {40, 40, SPECIES_DITTO},
- {40, 40, SPECIES_LOUDRED},
- {41, 41, SPECIES_DITTO},
- {36, 36, SPECIES_WHISMUR},
- {38, 38, SPECIES_LOUDRED},
- {42, 42, SPECIES_DITTO},
- {38, 38, SPECIES_WHISMUR},
- {43, 43, SPECIES_DITTO},
- {44, 44, SPECIES_LOUDRED},
- {45, 45, SPECIES_DITTO},
-};
-
-const struct WildPokemonInfo gDesertUnderpass_LandMonsInfo = {10, gDesertUnderpass_LandMons};
-
-const struct WildPokemon gArtisanCave_B1F_LandMons[] =
-{
- {40, 40, SPECIES_SMEARGLE},
- {41, 41, SPECIES_SMEARGLE},
- {42, 42, SPECIES_SMEARGLE},
- {43, 43, SPECIES_SMEARGLE},
- {44, 44, SPECIES_SMEARGLE},
- {45, 45, SPECIES_SMEARGLE},
- {46, 46, SPECIES_SMEARGLE},
- {47, 47, SPECIES_SMEARGLE},
- {48, 48, SPECIES_SMEARGLE},
- {49, 49, SPECIES_SMEARGLE},
- {50, 50, SPECIES_SMEARGLE},
- {50, 50, SPECIES_SMEARGLE},
-};
-
-const struct WildPokemonInfo gArtisanCave_B1F_LandMonsInfo = {10, gArtisanCave_B1F_LandMons};
-
-const struct WildPokemon gArtisanCave_1F_LandMons[] =
-{
- {40, 40, SPECIES_SMEARGLE},
- {41, 41, SPECIES_SMEARGLE},
- {42, 42, SPECIES_SMEARGLE},
- {43, 43, SPECIES_SMEARGLE},
- {44, 44, SPECIES_SMEARGLE},
- {45, 45, SPECIES_SMEARGLE},
- {46, 46, SPECIES_SMEARGLE},
- {47, 47, SPECIES_SMEARGLE},
- {48, 48, SPECIES_SMEARGLE},
- {49, 49, SPECIES_SMEARGLE},
- {50, 50, SPECIES_SMEARGLE},
- {50, 50, SPECIES_SMEARGLE},
-};
-
-const struct WildPokemonInfo gArtisanCave_1F_LandMonsInfo = {10, gArtisanCave_1F_LandMons};
-
-const struct WildPokemon gAlteringCave1_LandMons[] =
-{
- {10, 10, SPECIES_ZUBAT},
- {12, 12, SPECIES_ZUBAT},
- {8, 8, SPECIES_ZUBAT},
- {14, 14, SPECIES_ZUBAT},
- {10, 10, SPECIES_ZUBAT},
- {12, 12, SPECIES_ZUBAT},
- {16, 16, SPECIES_ZUBAT},
- {6, 6, SPECIES_ZUBAT},
- {8, 8, SPECIES_ZUBAT},
- {14, 14, SPECIES_ZUBAT},
- {8, 8, SPECIES_ZUBAT},
- {14, 14, SPECIES_ZUBAT},
-};
-
-const struct WildPokemonInfo gAlteringCave1_LandMonsInfo = {7, gAlteringCave1_LandMons};
-
-const struct WildPokemon gAlteringCave2_LandMons[] =
-{
- {7, 7, SPECIES_MAREEP},
- {9, 9, SPECIES_MAREEP},
- {5, 5, SPECIES_MAREEP},
- {11, 11, SPECIES_MAREEP},
- {7, 7, SPECIES_MAREEP},
- {9, 9, SPECIES_MAREEP},
- {13, 13, SPECIES_MAREEP},
- {3, 3, SPECIES_MAREEP},
- {5, 5, SPECIES_MAREEP},
- {11, 11, SPECIES_MAREEP},
- {5, 5, SPECIES_MAREEP},
- {11, 11, SPECIES_MAREEP},
-};
-
-const struct WildPokemonInfo gAlteringCave2_LandMonsInfo = {7, gAlteringCave2_LandMons};
-
-const struct WildPokemon gAlteringCave3_LandMons[] =
-{
- {23, 23, SPECIES_PINECO},
- {25, 25, SPECIES_PINECO},
- {22, 22, SPECIES_PINECO},
- {27, 27, SPECIES_PINECO},
- {23, 23, SPECIES_PINECO},
- {25, 25, SPECIES_PINECO},
- {29, 29, SPECIES_PINECO},
- {19, 19, SPECIES_PINECO},
- {21, 21, SPECIES_PINECO},
- {27, 27, SPECIES_PINECO},
- {21, 21, SPECIES_PINECO},
- {27, 27, SPECIES_PINECO},
-};
-
-const struct WildPokemonInfo gAlteringCave3_LandMonsInfo = {7, gAlteringCave3_LandMons};
-
-const struct WildPokemon gAlteringCave4_LandMons[] =
-{
- {16, 16, SPECIES_HOUNDOUR},
- {18, 18, SPECIES_HOUNDOUR},
- {14, 14, SPECIES_HOUNDOUR},
- {20, 20, SPECIES_HOUNDOUR},
- {16, 16, SPECIES_HOUNDOUR},
- {18, 18, SPECIES_HOUNDOUR},
- {22, 22, SPECIES_HOUNDOUR},
- {12, 12, SPECIES_HOUNDOUR},
- {14, 14, SPECIES_HOUNDOUR},
- {20, 20, SPECIES_HOUNDOUR},
- {14, 14, SPECIES_HOUNDOUR},
- {20, 20, SPECIES_HOUNDOUR},
-};
-
-const struct WildPokemonInfo gAlteringCave4_LandMonsInfo = {7, gAlteringCave4_LandMons};
-
-const struct WildPokemon gAlteringCave5_LandMons[] =
-{
- {10, 10, SPECIES_TEDDIURSA},
- {12, 12, SPECIES_TEDDIURSA},
- {8, 8, SPECIES_TEDDIURSA},
- {14, 14, SPECIES_TEDDIURSA},
- {10, 10, SPECIES_TEDDIURSA},
- {12, 12, SPECIES_TEDDIURSA},
- {16, 16, SPECIES_TEDDIURSA},
- {6, 6, SPECIES_TEDDIURSA},
- {8, 8, SPECIES_TEDDIURSA},
- {14, 14, SPECIES_TEDDIURSA},
- {8, 8, SPECIES_TEDDIURSA},
- {14, 14, SPECIES_TEDDIURSA},
-};
-
-const struct WildPokemonInfo gAlteringCave5_LandMonsInfo = {7, gAlteringCave5_LandMons};
-
-const struct WildPokemon gAlteringCave6_LandMons[] =
-{
- {22, 22, SPECIES_AIPOM},
- {24, 24, SPECIES_AIPOM},
- {20, 20, SPECIES_AIPOM},
- {26, 26, SPECIES_AIPOM},
- {22, 22, SPECIES_AIPOM},
- {24, 24, SPECIES_AIPOM},
- {28, 28, SPECIES_AIPOM},
- {18, 18, SPECIES_AIPOM},
- {20, 20, SPECIES_AIPOM},
- {26, 26, SPECIES_AIPOM},
- {20, 20, SPECIES_AIPOM},
- {26, 26, SPECIES_AIPOM},
-};
-
-const struct WildPokemonInfo gAlteringCave6_LandMonsInfo = {7, gAlteringCave6_LandMons};
-
-const struct WildPokemon gAlteringCave7_LandMons[] =
-{
- {22, 22, SPECIES_SHUCKLE},
- {24, 24, SPECIES_SHUCKLE},
- {20, 20, SPECIES_SHUCKLE},
- {26, 26, SPECIES_SHUCKLE},
- {22, 22, SPECIES_SHUCKLE},
- {24, 24, SPECIES_SHUCKLE},
- {28, 28, SPECIES_SHUCKLE},
- {18, 18, SPECIES_SHUCKLE},
- {20, 20, SPECIES_SHUCKLE},
- {26, 26, SPECIES_SHUCKLE},
- {20, 20, SPECIES_SHUCKLE},
- {26, 26, SPECIES_SHUCKLE},
-};
-
-const struct WildPokemonInfo gAlteringCave7_LandMonsInfo = {7, gAlteringCave7_LandMons};
-
-const struct WildPokemon gAlteringCave8_LandMons[] =
-{
- {22, 22, SPECIES_STANTLER},
- {24, 24, SPECIES_STANTLER},
- {20, 20, SPECIES_STANTLER},
- {26, 26, SPECIES_STANTLER},
- {22, 22, SPECIES_STANTLER},
- {24, 24, SPECIES_STANTLER},
- {28, 28, SPECIES_STANTLER},
- {18, 18, SPECIES_STANTLER},
- {20, 20, SPECIES_STANTLER},
- {26, 26, SPECIES_STANTLER},
- {20, 20, SPECIES_STANTLER},
- {26, 26, SPECIES_STANTLER},
-};
-
-const struct WildPokemonInfo gAlteringCave8_LandMonsInfo = {7, gAlteringCave8_LandMons};
-
-const struct WildPokemon gAlteringCave9_LandMons[] =
-{
- {22, 22, SPECIES_SMEARGLE},
- {24, 24, SPECIES_SMEARGLE},
- {20, 20, SPECIES_SMEARGLE},
- {26, 26, SPECIES_SMEARGLE},
- {22, 22, SPECIES_SMEARGLE},
- {24, 24, SPECIES_SMEARGLE},
- {28, 28, SPECIES_SMEARGLE},
- {18, 18, SPECIES_SMEARGLE},
- {20, 20, SPECIES_SMEARGLE},
- {26, 26, SPECIES_SMEARGLE},
- {20, 20, SPECIES_SMEARGLE},
- {26, 26, SPECIES_SMEARGLE},
-};
-
-const struct WildPokemonInfo gAlteringCave9_LandMonsInfo = {7, gAlteringCave9_LandMons};
-
-const struct WildPokemon gMeteorFalls_StevensCave_LandMons[] =
-{
- {33, 33, SPECIES_GOLBAT},
- {35, 35, SPECIES_GOLBAT},
- {33, 33, SPECIES_GOLBAT},
- {35, 35, SPECIES_SOLROCK},
- {33, 33, SPECIES_SOLROCK},
- {37, 37, SPECIES_SOLROCK},
- {35, 35, SPECIES_GOLBAT},
- {39, 39, SPECIES_SOLROCK},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
- {38, 38, SPECIES_GOLBAT},
- {40, 40, SPECIES_GOLBAT},
-};
-
-const struct WildPokemonInfo gMeteorFalls_StevensCave_LandMonsInfo = {10, gMeteorFalls_StevensCave_LandMons};
-
-//The actual headers that link the encounter tables to particular maps start here.
-
-const struct WildPokemonHeader gWildMonHeaders[] =
-{
- {
- .mapGroup = MAP_GROUP(ROUTE101),
- .mapNum = MAP_NUM(ROUTE101),
- .landMonsInfo = &gRoute101_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE102),
- .mapNum = MAP_NUM(ROUTE102),
- .landMonsInfo = &gRoute102_LandMonsInfo,
- .waterMonsInfo = &gRoute102_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute102_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE103),
- .mapNum = MAP_NUM(ROUTE103),
- .landMonsInfo = &gRoute103_LandMonsInfo,
- .waterMonsInfo = &gRoute103_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute103_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE104),
- .mapNum = MAP_NUM(ROUTE104),
- .landMonsInfo = &gRoute104_LandMonsInfo,
- .waterMonsInfo = &gRoute104_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute104_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE105),
- .mapNum = MAP_NUM(ROUTE105),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute105_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute105_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE110),
- .mapNum = MAP_NUM(ROUTE110),
- .landMonsInfo = &gRoute110_LandMonsInfo,
- .waterMonsInfo = &gRoute110_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute110_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE111),
- .mapNum = MAP_NUM(ROUTE111),
- .landMonsInfo = &gRoute111_LandMonsInfo,
- .waterMonsInfo = &gRoute111_WaterMonsInfo,
- .rockSmashMonsInfo = &gRoute111_RockSmashMonsInfo,
- .fishingMonsInfo = &gRoute111_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE112),
- .mapNum = MAP_NUM(ROUTE112),
- .landMonsInfo = &gRoute112_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE113),
- .mapNum = MAP_NUM(ROUTE113),
- .landMonsInfo = &gRoute113_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE114),
- .mapNum = MAP_NUM(ROUTE114),
- .landMonsInfo = &gRoute114_LandMonsInfo,
- .waterMonsInfo = &gRoute114_WaterMonsInfo,
- .rockSmashMonsInfo = &gRoute114_RockSmashMonsInfo,
- .fishingMonsInfo = &gRoute114_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE116),
- .mapNum = MAP_NUM(ROUTE116),
- .landMonsInfo = &gRoute116_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE117),
- .mapNum = MAP_NUM(ROUTE117),
- .landMonsInfo = &gRoute117_LandMonsInfo,
- .waterMonsInfo = &gRoute117_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute117_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE118),
- .mapNum = MAP_NUM(ROUTE118),
- .landMonsInfo = &gRoute118_LandMonsInfo,
- .waterMonsInfo = &gRoute118_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute118_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE124),
- .mapNum = MAP_NUM(ROUTE124),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute124_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute124_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(PETALBURG_WOODS),
- .mapNum = MAP_NUM(PETALBURG_WOODS),
- .landMonsInfo = &gPetalburgWoods_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(RUSTURF_TUNNEL),
- .mapNum = MAP_NUM(RUSTURF_TUNNEL),
- .landMonsInfo = &gRusturfTunnel_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(GRANITE_CAVE_1F),
- .mapNum = MAP_NUM(GRANITE_CAVE_1F),
- .landMonsInfo = &gGraniteCave_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(GRANITE_CAVE_B1F),
- .mapNum = MAP_NUM(GRANITE_CAVE_B1F),
- .landMonsInfo = &gGraniteCave_B1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_1F),
- .mapNum = MAP_NUM(MT_PYRE_1F),
- .landMonsInfo = &gMtPyre_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(VICTORY_ROAD_1F),
- .mapNum = MAP_NUM(VICTORY_ROAD_1F),
- .landMonsInfo = &gVictoryRoad_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SAFARI_ZONE_SOUTH),
- .mapNum = MAP_NUM(SAFARI_ZONE_SOUTH),
- .landMonsInfo = &gSafariZone_South_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(UNDERWATER2),
- .mapNum = MAP_NUM(UNDERWATER2),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gUnderwater2_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ABANDONED_SHIP_ROOMS_B1F),
- .mapNum = MAP_NUM(ABANDONED_SHIP_ROOMS_B1F),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gAbandonedShip_Rooms_B1F_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gAbandonedShip_Rooms_B1F_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(GRANITE_CAVE_B2F),
- .mapNum = MAP_NUM(GRANITE_CAVE_B2F),
- .landMonsInfo = &gGraniteCave_B2F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = &gGraniteCave_B2F_RockSmashMonsInfo,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(FIERY_PATH),
- .mapNum = MAP_NUM(FIERY_PATH),
- .landMonsInfo = &gFieryPath_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(METEOR_FALLS_B1F_2R),
- .mapNum = MAP_NUM(METEOR_FALLS_B1F_2R),
- .landMonsInfo = &gMeteorFalls_B1F_2R_LandMonsInfo,
- .waterMonsInfo = &gMeteorFalls_B1F_2R_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gMeteorFalls_B1F_2R_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(JAGGED_PASS),
- .mapNum = MAP_NUM(JAGGED_PASS),
- .landMonsInfo = &gJaggedPass_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE106),
- .mapNum = MAP_NUM(ROUTE106),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute106_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute106_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE107),
- .mapNum = MAP_NUM(ROUTE107),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute107_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute107_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE108),
- .mapNum = MAP_NUM(ROUTE108),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute108_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute108_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE109),
- .mapNum = MAP_NUM(ROUTE109),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute109_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute109_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE115),
- .mapNum = MAP_NUM(ROUTE115),
- .landMonsInfo = &gRoute115_LandMonsInfo,
- .waterMonsInfo = &gRoute115_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute115_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(NEW_MAUVILLE_INSIDE),
- .mapNum = MAP_NUM(NEW_MAUVILLE_INSIDE),
- .landMonsInfo = &gNewMauville_Inside_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE119),
- .mapNum = MAP_NUM(ROUTE119),
- .landMonsInfo = &gRoute119_LandMonsInfo,
- .waterMonsInfo = &gRoute119_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute119_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE120),
- .mapNum = MAP_NUM(ROUTE120),
- .landMonsInfo = &gRoute120_LandMonsInfo,
- .waterMonsInfo = &gRoute120_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute120_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE121),
- .mapNum = MAP_NUM(ROUTE121),
- .landMonsInfo = &gRoute121_LandMonsInfo,
- .waterMonsInfo = &gRoute121_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute121_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE122),
- .mapNum = MAP_NUM(ROUTE122),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute122_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute122_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE123),
- .mapNum = MAP_NUM(ROUTE123),
- .landMonsInfo = &gRoute123_LandMonsInfo,
- .waterMonsInfo = &gRoute123_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute123_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_2F),
- .mapNum = MAP_NUM(MT_PYRE_2F),
- .landMonsInfo = &gMtPyre_2F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_3F),
- .mapNum = MAP_NUM(MT_PYRE_3F),
- .landMonsInfo = &gMtPyre_3F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_4F),
- .mapNum = MAP_NUM(MT_PYRE_4F),
- .landMonsInfo = &gMtPyre_4F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_5F),
- .mapNum = MAP_NUM(MT_PYRE_5F),
- .landMonsInfo = &gMtPyre_5F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_6F),
- .mapNum = MAP_NUM(MT_PYRE_6F),
- .landMonsInfo = &gMtPyre_6F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_EXTERIOR),
- .mapNum = MAP_NUM(MT_PYRE_EXTERIOR),
- .landMonsInfo = &gMtPyre_Exterior_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MT_PYRE_SUMMIT),
- .mapNum = MAP_NUM(MT_PYRE_SUMMIT),
- .landMonsInfo = &gMtPyre_Summit_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(GRANITE_CAVE_STEVENS_ROOM),
- .mapNum = MAP_NUM(GRANITE_CAVE_STEVENS_ROOM),
- .landMonsInfo = &gGraniteCave_StevensRoom_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE125),
- .mapNum = MAP_NUM(ROUTE125),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute125_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute125_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE126),
- .mapNum = MAP_NUM(ROUTE126),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute126_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute126_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE127),
- .mapNum = MAP_NUM(ROUTE127),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute127_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute127_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE128),
- .mapNum = MAP_NUM(ROUTE128),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute128_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute128_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE129),
- .mapNum = MAP_NUM(ROUTE129),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute129_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute129_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE130),
- .mapNum = MAP_NUM(ROUTE130),
- .landMonsInfo = &gRoute130_LandMonsInfo,
- .waterMonsInfo = &gRoute130_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute130_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE131),
- .mapNum = MAP_NUM(ROUTE131),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute131_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute131_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE132),
- .mapNum = MAP_NUM(ROUTE132),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute132_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute132_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE133),
- .mapNum = MAP_NUM(ROUTE133),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute133_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute133_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ROUTE134),
- .mapNum = MAP_NUM(ROUTE134),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gRoute134_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gRoute134_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS),
- .mapNum = MAP_NUM(ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gAbandonedShip_HiddenFloorCorridors_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gAbandonedShip_HiddenFloorCorridors_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM1),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM1),
- .landMonsInfo = &gSeafloorCavern_Room1_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM2),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM2),
- .landMonsInfo = &gSeafloorCavern_Room2_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM3),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM3),
- .landMonsInfo = &gSeafloorCavern_Room3_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM4),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM4),
- .landMonsInfo = &gSeafloorCavern_Room4_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM5),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM5),
- .landMonsInfo = &gSeafloorCavern_Room5_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM6),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM6),
- .landMonsInfo = &gSeafloorCavern_Room6_LandMonsInfo,
- .waterMonsInfo = &gSeafloorCavern_Room6_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSeafloorCavern_Room6_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM7),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM7),
- .landMonsInfo = &gSeafloorCavern_Room7_LandMonsInfo,
- .waterMonsInfo = &gSeafloorCavern_Room7_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSeafloorCavern_Room7_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM8),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM8),
- .landMonsInfo = &gSeafloorCavern_Room8_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ENTRANCE),
- .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ENTRANCE),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gSeafloorCavern_Entrance_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSeafloorCavern_Entrance_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_ENTRANCE),
- .mapNum = MAP_NUM(CAVE_OF_ORIGIN_ENTRANCE),
- .landMonsInfo = &gCaveOfOrigin_Entrance_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_1F),
- .mapNum = MAP_NUM(CAVE_OF_ORIGIN_1F),
- .landMonsInfo = &gCaveOfOrigin_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1),
- .mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1),
- .landMonsInfo = &gCaveOfOrigin_UnusedRubySapphireMap1_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2),
- .mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2),
- .landMonsInfo = &gCaveOfOrigin_UnusedRubySapphireMap2_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3),
- .mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3),
- .landMonsInfo = &gCaveOfOrigin_UnusedRubySapphireMap3_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(NEW_MAUVILLE_ENTRANCE),
- .mapNum = MAP_NUM(NEW_MAUVILLE_ENTRANCE),
- .landMonsInfo = &gNewMauville_Entrance_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SAFARI_ZONE_SOUTHWEST),
- .mapNum = MAP_NUM(SAFARI_ZONE_SOUTHWEST),
- .landMonsInfo = &gSafariZone_Southwest_LandMonsInfo,
- .waterMonsInfo = &gSafariZone_Southwest_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSafariZone_Southwest_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SAFARI_ZONE_NORTH),
- .mapNum = MAP_NUM(SAFARI_ZONE_NORTH),
- .landMonsInfo = &gSafariZone_North_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = &gSafariZone_North_RockSmashMonsInfo,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SAFARI_ZONE_NORTHWEST),
- .mapNum = MAP_NUM(SAFARI_ZONE_NORTHWEST),
- .landMonsInfo = &gSafariZone_Northwest_LandMonsInfo,
- .waterMonsInfo = &gSafariZone_Northwest_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSafariZone_Northwest_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(VICTORY_ROAD_B1F),
- .mapNum = MAP_NUM(VICTORY_ROAD_B1F),
- .landMonsInfo = &gVictoryRoad_B1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = &gVictoryRoad_B1F_RockSmashMonsInfo,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(VICTORY_ROAD_B2F),
- .mapNum = MAP_NUM(VICTORY_ROAD_B2F),
- .landMonsInfo = &gVictoryRoad_B2F_LandMonsInfo,
- .waterMonsInfo = &gVictoryRoad_B2F_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gVictoryRoad_B2F_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(METEOR_FALLS_1F_1R),
- .mapNum = MAP_NUM(METEOR_FALLS_1F_1R),
- .landMonsInfo = &gMeteorFalls_1F_1R_LandMonsInfo,
- .waterMonsInfo = &gMeteorFalls_1F_1R_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gMeteorFalls_1F_1R_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(METEOR_FALLS_1F_2R),
- .mapNum = MAP_NUM(METEOR_FALLS_1F_2R),
- .landMonsInfo = &gMeteorFalls_1F_2R_LandMonsInfo,
- .waterMonsInfo = &gMeteorFalls_1F_2R_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gMeteorFalls_1F_2R_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(METEOR_FALLS_B1F_1R),
- .mapNum = MAP_NUM(METEOR_FALLS_B1F_1R),
- .landMonsInfo = &gMeteorFalls_B1F_1R_LandMonsInfo,
- .waterMonsInfo = &gMeteorFalls_B1F_1R_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gMeteorFalls_B1F_1R_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM),
- .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM),
- .landMonsInfo = &gShoalCave_LowTideStairsRoom_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_LOWER_ROOM),
- .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_LOWER_ROOM),
- .landMonsInfo = &gShoalCave_LowTideLowerRoom_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_INNER_ROOM),
- .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_INNER_ROOM),
- .landMonsInfo = &gShoalCave_LowTideInnerRoom_LandMonsInfo,
- .waterMonsInfo = &gShoalCave_LowTideInnerRoom_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gShoalCave_LowTideInnerRoom_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM),
- .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM),
- .landMonsInfo = &gShoalCave_LowTideEntranceRoom_LandMonsInfo,
- .waterMonsInfo = &gShoalCave_LowTideEntranceRoom_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gShoalCave_LowTideEntranceRoom_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(LILYCOVE_CITY),
- .mapNum = MAP_NUM(LILYCOVE_CITY),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gLilycoveCity_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gLilycoveCity_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(DEWFORD_TOWN),
- .mapNum = MAP_NUM(DEWFORD_TOWN),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gDewfordTown_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gDewfordTown_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SLATEPORT_CITY),
- .mapNum = MAP_NUM(SLATEPORT_CITY),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gSlateportCity_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSlateportCity_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(MOSSDEEP_CITY),
- .mapNum = MAP_NUM(MOSSDEEP_CITY),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gMossdeepCity_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gMossdeepCity_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(PACIFIDLOG_TOWN),
- .mapNum = MAP_NUM(PACIFIDLOG_TOWN),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gPacifidlogTown_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gPacifidlogTown_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(EVER_GRANDE_CITY),
- .mapNum = MAP_NUM(EVER_GRANDE_CITY),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gEverGrandeCity_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gEverGrandeCity_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(PETALBURG_CITY),
- .mapNum = MAP_NUM(PETALBURG_CITY),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gPetalburgCity_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gPetalburgCity_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(UNDERWATER1),
- .mapNum = MAP_NUM(UNDERWATER1),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gUnderwater1_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_ICE_ROOM),
- .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_ICE_ROOM),
- .landMonsInfo = &gShoalCave_LowTideIceRoom_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SKY_PILLAR_1F),
- .mapNum = MAP_NUM(SKY_PILLAR_1F),
- .landMonsInfo = &gSkyPillar_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SOOTOPOLIS_CITY),
- .mapNum = MAP_NUM(SOOTOPOLIS_CITY),
- .landMonsInfo = NULL,
- .waterMonsInfo = &gSootopolisCity_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSootopolisCity_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SKY_PILLAR_3F),
- .mapNum = MAP_NUM(SKY_PILLAR_3F),
- .landMonsInfo = &gSkyPillar_3F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SKY_PILLAR_5F),
- .mapNum = MAP_NUM(SKY_PILLAR_5F),
- .landMonsInfo = &gSkyPillar_5F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(SAFARI_ZONE_SOUTHEAST),
- .mapNum = MAP_NUM(SAFARI_ZONE_SOUTHEAST),
- .landMonsInfo = &gSafariZone_Southeast_LandMonsInfo,
- .waterMonsInfo = &gSafariZone_Southeast_WaterMonsInfo,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = &gSafariZone_Southeast_FishingMonsInfo,
- },
- {
- .mapGroup = MAP_GROUP(SAFARI_ZONE_NORTHEAST),
- .mapNum = MAP_NUM(SAFARI_ZONE_NORTHEAST),
- .landMonsInfo = &gSafariZone_Northeast_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = &gSafariZone_Northeast_RockSmashMonsInfo,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_1F),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_1F),
- .landMonsInfo = &gMagmaHideout_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_2F_1R),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_2F_1R),
- .landMonsInfo = &gMagmaHideout_2F_1R_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_2F_2R),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_2F_2R),
- .landMonsInfo = &gMagmaHideout_2F_2R_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_3F_1R),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_3F_1R),
- .landMonsInfo = &gMagmaHideout_3F_1R_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_3F_2R),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_3F_2R),
- .landMonsInfo = &gMagmaHideout_3F_2R_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_4F),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_4F),
- .landMonsInfo = &gMagmaHideout_4F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_3F_3R),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_3F_3R),
- .landMonsInfo = &gMagmaHideout_3F_3R_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_2F_3R),
- .mapNum = MAP_NUM(MAGMA_HIDEOUT_2F_3R),
- .landMonsInfo = &gMagmaHideout_2F_3R_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MIRAGE_TOWER_1F),
- .mapNum = MAP_NUM(MIRAGE_TOWER_1F),
- .landMonsInfo = &gMirageTower_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MIRAGE_TOWER_2F),
- .mapNum = MAP_NUM(MIRAGE_TOWER_2F),
- .landMonsInfo = &gMirageTower_2F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MIRAGE_TOWER_3F),
- .mapNum = MAP_NUM(MIRAGE_TOWER_3F),
- .landMonsInfo = &gMirageTower_3F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(MIRAGE_TOWER_4F),
- .mapNum = MAP_NUM(MIRAGE_TOWER_4F),
- .landMonsInfo = &gMirageTower_4F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(DESERT_UNDERPASS),
- .mapNum = MAP_NUM(DESERT_UNDERPASS),
- .landMonsInfo = &gDesertUnderpass_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ARTISAN_CAVE_B1F),
- .mapNum = MAP_NUM(ARTISAN_CAVE_B1F),
- .landMonsInfo = &gArtisanCave_B1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ARTISAN_CAVE_1F),
- .mapNum = MAP_NUM(ARTISAN_CAVE_1F),
- .landMonsInfo = &gArtisanCave_1F_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave1_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave2_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave3_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave4_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave5_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave6_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave7_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave8_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(ALTERING_CAVE),
- .mapNum = MAP_NUM(ALTERING_CAVE),
- .landMonsInfo = &gAlteringCave9_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(METEOR_FALLS_STEVENS_CAVE),
- .mapNum = MAP_NUM(METEOR_FALLS_STEVENS_CAVE),
- .landMonsInfo = &gMeteorFalls_StevensCave_LandMonsInfo,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = MAP_GROUP(UNDEFINED),
- .mapNum = MAP_NUM(UNDEFINED),
- .landMonsInfo = NULL,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
-};
-
-//Battle Pyramid-specific tables and headers start here.
-
-const struct WildPokemon gBattlePyramidPlaceholders_1[] =
-{
- {5, 5, SPECIES_BULBASAUR},
- {5, 5, SPECIES_BULBASAUR},
- {5, 5, SPECIES_BULBASAUR},
- {5, 5, SPECIES_BULBASAUR},
- {5, 5, SPECIES_IVYSAUR},
- {5, 5, SPECIES_IVYSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_CHARMANDER},
-};
-
-const struct WildPokemonInfo gBattlePyramidPlaceholders_1Info = {4, gBattlePyramidPlaceholders_1};
-
-const struct WildPokemon gBattlePyramidPlaceholders_2[] =
-{
- {5, 5, SPECIES_IVYSAUR},
- {5, 5, SPECIES_IVYSAUR},
- {5, 5, SPECIES_IVYSAUR},
- {5, 5, SPECIES_IVYSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMANDER},
-};
-
-const struct WildPokemonInfo gBattlePyramidPlaceholders_2Info = {4, gBattlePyramidPlaceholders_2};
-
-const struct WildPokemon gBattlePyramidPlaceholders_3[] =
-{
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_VENUSAUR},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARIZARD},
-};
-
-const struct WildPokemonInfo gBattlePyramidPlaceholders_3Info = {4, gBattlePyramidPlaceholders_3};
-
-const struct WildPokemon gBattlePyramidPlaceholders_4[] =
-{
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMANDER},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_SQUIRTLE},
-};
-
-const struct WildPokemonInfo gBattlePyramidPlaceholders_4Info = {4, gBattlePyramidPlaceholders_4};
-
-const struct WildPokemon gBattlePyramidPlaceholders_5[] =
-{
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_WARTORTLE},
-};
-
-const struct WildPokemonInfo gBattlePyramidPlaceholders_5Info = {4, gBattlePyramidPlaceholders_5};
-
-const struct WildPokemon gBattlePyramidPlaceholders_6[] =
-{
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_WARTORTLE},
-};
-
-const struct WildPokemonInfo gBattlePyramidPlaceholders_6Info = {4, gBattlePyramidPlaceholders_6};
-
-const struct WildPokemon gBattlePyramidPlaceholders_7[] =
-{
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_WARTORTLE},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_SQUIRTLE},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARIZARD},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
- {5, 5, SPECIES_CHARMELEON},
-};
-
-const struct WildPokemonInfo gBattlePyramidPlaceholders_7Info = {8, gBattlePyramidPlaceholders_7};
-
-const struct WildPokemonHeader gBattlePyramidWildMonHeaders[] =
-{
- {
- .mapGroup = 0,
- .mapNum = 1,
- .landMonsInfo = &gBattlePyramidPlaceholders_1Info,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 2,
- .landMonsInfo = &gBattlePyramidPlaceholders_2Info,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 3,
- .landMonsInfo = &gBattlePyramidPlaceholders_3Info,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 4,
- .landMonsInfo = &gBattlePyramidPlaceholders_4Info,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 5,
- .landMonsInfo = &gBattlePyramidPlaceholders_5Info,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 6,
- .landMonsInfo = &gBattlePyramidPlaceholders_6Info,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 7,
- .landMonsInfo = &gBattlePyramidPlaceholders_7Info,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 255,
- .mapNum = 255,
- .landMonsInfo = NULL,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
-};
-
-//Battle Pike-specific tables and headers start here.
-
-const struct WildPokemon gBattlePikeMons_1[] =
-{
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_DUSCLOPS},
- {5, 5, SPECIES_DUSCLOPS},
- {5, 5, SPECIES_DUSCLOPS},
- {5, 5, SPECIES_DUSCLOPS},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_DUSCLOPS},
- {5, 5, SPECIES_DUSCLOPS},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
-};
-
-const struct WildPokemonInfo gBattlePikeMonsInfo_1 = {10, gBattlePikeMons_1};
-
-const struct WildPokemon gBattlePikeMons_2[] =
-{
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_ELECTRODE},
- {5, 5, SPECIES_ELECTRODE},
- {5, 5, SPECIES_ELECTRODE},
- {5, 5, SPECIES_ELECTRODE},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_ELECTRODE},
- {5, 5, SPECIES_ELECTRODE},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
-};
-
-const struct WildPokemonInfo gBattlePikeMonsInfo_2 = {10, gBattlePikeMons_2};
-
-const struct WildPokemon gBattlePikeMons_3[] =
-{
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_BRELOOM},
- {5, 5, SPECIES_BRELOOM},
- {5, 5, SPECIES_BRELOOM},
- {5, 5, SPECIES_BRELOOM},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_BRELOOM},
- {5, 5, SPECIES_BRELOOM},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
-};
-
-const struct WildPokemonInfo gBattlePikeMonsInfo_3 = {10, gBattlePikeMons_3};
-
-const struct WildPokemon gBattlePikeMons_4[] =
-{
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_WOBBUFFET},
- {5, 5, SPECIES_WOBBUFFET},
- {5, 5, SPECIES_WOBBUFFET},
- {5, 5, SPECIES_WOBBUFFET},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
- {5, 5, SPECIES_WOBBUFFET},
- {5, 5, SPECIES_WOBBUFFET},
- {5, 5, SPECIES_SEVIPER},
- {5, 5, SPECIES_MILOTIC},
-};
-
-const struct WildPokemonInfo gBattlePikeMonsInfo_4 = {10, gBattlePikeMons_4};
-
-const struct WildPokemonHeader gBattlePikeWildMonHeaders[] =
-{
- {
- .mapGroup = 0,
- .mapNum = 1,
- .landMonsInfo = &gBattlePikeMonsInfo_1,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 2,
- .landMonsInfo = &gBattlePikeMonsInfo_2,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 3,
- .landMonsInfo = &gBattlePikeMonsInfo_3,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 0,
- .mapNum = 4,
- .landMonsInfo = &gBattlePikeMonsInfo_4,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
- {
- .mapGroup = 255,
- .mapNum = 255,
- .landMonsInfo = NULL,
- .waterMonsInfo = NULL,
- .rockSmashMonsInfo = NULL,
- .fishingMonsInfo = NULL,
- },
-};
-
-//Special Feebas-related data.
-
-const struct WildPokemon gWildFeebasRoute119Data = {20, 25, SPECIES_FEEBAS};
-
-const u16 gRoute119WaterTileData[] =
-{
- 0, 0x2D, 0,
- 0x2E, 0x5B, 0x83,
- 0x5C, 0x8B, 0x12A,
-};
-
diff --git a/src/data/wild_encounters.json b/src/data/wild_encounters.json
new file mode 100755
index 000000000..6dd24bfed
--- /dev/null
+++ b/src/data/wild_encounters.json
@@ -0,0 +1,12186 @@
+{
+ "wild_encounter_groups": [
+ {
+ "label": "gWildMonHeaders",
+ "for_maps": true,
+ "encounters": [
+ {
+ "map": "MAP_ROUTE101",
+ "base_label": "gRoute101",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 2,
+ "max_level": 2,
+ "species": "SPECIES_WURMPLE"
+ },
+ {
+ "min_level": 2,
+ "max_level": 2,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 2,
+ "max_level": 2,
+ "species": "SPECIES_WURMPLE"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_WURMPLE"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_WURMPLE"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 2,
+ "max_level": 2,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 2,
+ "max_level": 2,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_ZIGZAGOON"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE102",
+ "base_label": "gRoute102",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_WURMPLE"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_WURMPLE"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_LOTAD"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_LOTAD"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_RALTS"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_SEEDOT"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 20,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_CORPHISH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE103",
+ "base_label": "gRoute103",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 2,
+ "max_level": 2,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 2,
+ "max_level": 2,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 2,
+ "max_level": 2,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_WINGULL"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE104",
+ "base_label": "gRoute104",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_WURMPLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_TAILLOW"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_TAILLOW"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 4,
+ "max_level": 4,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WINGULL"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_MAGIKARP"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE105",
+ "base_label": "gRoute105",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE110",
+ "base_label": "gRoute110",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_ELECTRIKE"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_GULPIN"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_ELECTRIKE"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_MINUN"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_MINUN"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_GULPIN"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_PLUSLE"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_PLUSLE"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE111",
+ "base_label": "gRoute111",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 19,
+ "max_level": 19,
+ "species": "SPECIES_BALTOY"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_BALTOY"
+ },
+ {
+ "min_level": 19,
+ "max_level": 19,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 19,
+ "max_level": 19,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_BALTOY"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_CACNEA"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_CACNEA"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_CACNEA"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 20,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ }
+ ]
+ },
+ "rock_smash_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 10,
+ "max_level": 15,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 15,
+ "max_level": 20,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 15,
+ "max_level": 20,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 15,
+ "max_level": 20,
+ "species": "SPECIES_GEODUDE"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_BARBOACH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE112",
+ "base_label": "gRoute112",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_NUMEL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE113",
+ "base_label": "gRoute113",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_SPINDA"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_SPINDA"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_SLUGMA"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_SPINDA"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_SPINDA"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_SLUGMA"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_SPINDA"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_SLUGMA"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_SPINDA"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_SKARMORY"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_SPINDA"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_SKARMORY"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE114",
+ "base_label": "gRoute114",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_SWABLU"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_LOTAD"
+ },
+ {
+ "min_level": 17,
+ "max_level": 17,
+ "species": "SPECIES_SWABLU"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_SWABLU"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_LOTAD"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_LOMBRE"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_LOMBRE"
+ },
+ {
+ "min_level": 18,
+ "max_level": 18,
+ "species": "SPECIES_LOMBRE"
+ },
+ {
+ "min_level": 17,
+ "max_level": 17,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 17,
+ "max_level": 17,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_NUZLEAF"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 20,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ }
+ ]
+ },
+ "rock_smash_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 10,
+ "max_level": 15,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 15,
+ "max_level": 20,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 15,
+ "max_level": 20,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 15,
+ "max_level": 20,
+ "species": "SPECIES_GEODUDE"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_BARBOACH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE116",
+ "base_label": "gRoute116",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_NINCADA"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_ABRA"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_NINCADA"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_TAILLOW"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_TAILLOW"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_TAILLOW"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_SKITTY"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_SKITTY"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE117",
+ "base_label": "gRoute117",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_ILLUMISE"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_ILLUMISE"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_ILLUMISE"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_ILLUMISE"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_VOLBEAT"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_SEEDOT"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 20,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_CORPHISH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE118",
+ "base_label": "gRoute118",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_ELECTRIKE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ELECTRIKE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_LINOONE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_MANECTRIC"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_KECLEON"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_CARVANHA"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_CARVANHA"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_CARVANHA"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_CARVANHA"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_CARVANHA"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE124",
+ "base_label": "gRoute124",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_PETALBURG_WOODS",
+ "base_label": "gPetalburgWoods",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WURMPLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SHROOMISH"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SILCOON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CASCOON"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_WURMPLE"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_SHROOMISH"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_TAILLOW"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SLAKOTH"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_TAILLOW"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_SLAKOTH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_RUSTURF_TUNNEL",
+ "base_label": "gRusturfTunnel",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_WHISMUR"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_GRANITE_CAVE_1F",
+ "base_label": "gGraniteCave_1F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 9,
+ "max_level": 9,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_ABRA"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 9,
+ "max_level": 9,
+ "species": "SPECIES_GEODUDE"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_GRANITE_CAVE_B1F",
+ "base_label": "gGraniteCave_B1F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 9,
+ "max_level": 9,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 9,
+ "max_level": 9,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 11,
+ "max_level": 11,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 9,
+ "max_level": 9,
+ "species": "SPECIES_ABRA"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 11,
+ "max_level": 11,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 9,
+ "max_level": 9,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 11,
+ "max_level": 11,
+ "species": "SPECIES_SABLEYE"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MT_PYRE_1F",
+ "base_label": "gMtPyre_1F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_VICTORY_ROAD_1F",
+ "base_label": "gVictoryRoad_1F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_HARIYAMA"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_LAIRON"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_LOUDRED"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_HARIYAMA"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_WHISMUR"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SAFARI_ZONE_SOUTH",
+ "base_label": "gSafariZone_South",
+ "land_mons": {
+ "encounter_rate": 25,
+ "mons": [
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_GIRAFARIG"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_GIRAFARIG"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_NATU"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_DODUO"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_GLOOM"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_WOBBUFFET"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_PIKACHU"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_WOBBUFFET"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_PIKACHU"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_WOBBUFFET"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_UNDERWATER2",
+ "base_label": "gUnderwater2",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_CLAMPERL"
+ },
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_CHINCHOU"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_CLAMPERL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_RELICANTH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_RELICANTH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ABANDONED_SHIP_ROOMS_B1F",
+ "base_label": "gAbandonedShip_Rooms_B1F",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_TENTACRUEL"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_TENTACRUEL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_TENTACRUEL"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_TENTACRUEL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_GRANITE_CAVE_B2F",
+ "base_label": "gGraniteCave_B2F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 11,
+ "max_level": 11,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 11,
+ "max_level": 11,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_ABRA"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 11,
+ "max_level": 11,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_SABLEYE"
+ }
+ ]
+ },
+ "rock_smash_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 10,
+ "max_level": 15,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 10,
+ "max_level": 20,
+ "species": "SPECIES_NOSEPASS"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 15,
+ "max_level": 20,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 15,
+ "max_level": 20,
+ "species": "SPECIES_GEODUDE"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_FIERY_PATH",
+ "base_label": "gFieryPath",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_KOFFING"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_MACHOP"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_SLUGMA"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_KOFFING"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_MACHOP"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_GRIMER"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_GRIMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_METEOR_FALLS_B1F_2R",
+ "base_label": "gMeteorFalls_B1F_2R",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_BAGON"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_BAGON"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_BAGON"
+ },
+ {
+ "min_level": 39,
+ "max_level": 39,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 25,
+ "max_level": 35,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 5,
+ "max_level": 15,
+ "species": "SPECIES_SOLROCK"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WHISCASH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WHISCASH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WHISCASH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_JAGGED_PASS",
+ "base_label": "gJaggedPass",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_MACHOP"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SPOINK"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_MACHOP"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_SPOINK"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_MACHOP"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SPOINK"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_NUMEL"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SPOINK"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE106",
+ "base_label": "gRoute106",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE107",
+ "base_label": "gRoute107",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE108",
+ "base_label": "gRoute108",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE109",
+ "base_label": "gRoute109",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE115",
+ "base_label": "gRoute115",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SWABLU"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_TAILLOW"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_SWABLU"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_TAILLOW"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_TAILLOW"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_SWELLOW"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_JIGGLYPUFF"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_JIGGLYPUFF"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_NEW_MAUVILLE_INSIDE",
+ "base_label": "gNewMauville_Inside",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_MAGNEMITE"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_MAGNEMITE"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_MAGNEMITE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_MAGNEMITE"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_MAGNEMITE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ELECTRODE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_MAGNETON"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE119",
+ "base_label": "gRoute119",
+ "land_mons": {
+ "encounter_rate": 15,
+ "mons": [
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_LINOONE"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_ZIGZAGOON"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_LINOONE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_TROPIUS"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_TROPIUS"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_TROPIUS"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_KECLEON"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_CARVANHA"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_CARVANHA"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_CARVANHA"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_CARVANHA"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_CARVANHA"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_CARVANHA"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE120",
+ "base_label": "gRoute120",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_MIGHTYENA"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_MIGHTYENA"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_ABSOL"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_ABSOL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_KECLEON"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_SEEDOT"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 20,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_BARBOACH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE121",
+ "base_label": "gRoute121",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_MIGHTYENA"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_MIGHTYENA"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_GLOOM"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_KECLEON"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE122",
+ "base_label": "gRoute122",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE123",
+ "base_label": "gRoute123",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_MIGHTYENA"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_MIGHTYENA"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_GLOOM"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_KECLEON"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MT_PYRE_2F",
+ "base_label": "gMtPyre_2F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MT_PYRE_3F",
+ "base_label": "gMtPyre_3F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MT_PYRE_4F",
+ "base_label": "gMtPyre_4F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_DUSKULL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MT_PYRE_5F",
+ "base_label": "gMtPyre_5F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_DUSKULL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MT_PYRE_6F",
+ "base_label": "gMtPyre_6F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_DUSKULL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MT_PYRE_EXTERIOR",
+ "base_label": "gMtPyre_Exterior",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_VULPIX"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_VULPIX"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_VULPIX"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_VULPIX"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_WINGULL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MT_PYRE_SUMMIT",
+ "base_label": "gMtPyre_Summit",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUPPET"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_DUSKULL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_CHIMECHO"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_CHIMECHO"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_GRANITE_CAVE_STEVENS_ROOM",
+ "base_label": "gGraniteCave_StevensRoom",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 9,
+ "max_level": 9,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_ABRA"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_MAKUHITA"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_ARON"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_ARON"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE125",
+ "base_label": "gRoute125",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE126",
+ "base_label": "gRoute126",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE127",
+ "base_label": "gRoute127",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE128",
+ "base_label": "gRoute128",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_LUVDISC"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_LUVDISC"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_CORSOLA"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE129",
+ "base_label": "gRoute129",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILORD"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE130",
+ "base_label": "gRoute130",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 45,
+ "max_level": 45,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 50,
+ "max_level": 50,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_WYNAUT"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WYNAUT"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE131",
+ "base_label": "gRoute131",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE132",
+ "base_label": "gRoute132",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_HORSEA"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE133",
+ "base_label": "gRoute133",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_HORSEA"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ROUTE134",
+ "base_label": "gRoute134",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_HORSEA"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS",
+ "base_label": "gAbandonedShip_HiddenFloorCorridors",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_TENTACRUEL"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_TENTACRUEL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_TENTACRUEL"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_TENTACRUEL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SEAFLOOR_CAVERN_ROOM1",
+ "base_label": "gSeafloorCavern_Room1",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SEAFLOOR_CAVERN_ROOM2",
+ "base_label": "gSeafloorCavern_Room2",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SEAFLOOR_CAVERN_ROOM3",
+ "base_label": "gSeafloorCavern_Room3",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SEAFLOOR_CAVERN_ROOM4",
+ "base_label": "gSeafloorCavern_Room4",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SEAFLOOR_CAVERN_ROOM5",
+ "base_label": "gSeafloorCavern_Room5",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SEAFLOOR_CAVERN_ROOM6",
+ "base_label": "gSeafloorCavern_Room6",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SEAFLOOR_CAVERN_ROOM7",
+ "base_label": "gSeafloorCavern_Room7",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SEAFLOOR_CAVERN_ROOM8",
+ "base_label": "gSeafloorCavern_Room8",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SEAFLOOR_CAVERN_ENTRANCE",
+ "base_label": "gSeafloorCavern_Entrance",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_CAVE_OF_ORIGIN_ENTRANCE",
+ "base_label": "gCaveOfOrigin_Entrance",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_CAVE_OF_ORIGIN_1F",
+ "base_label": "gCaveOfOrigin_1F",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1",
+ "base_label": "gCaveOfOrigin_UnusedRubySapphireMap1",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2",
+ "base_label": "gCaveOfOrigin_UnusedRubySapphireMap2",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3",
+ "base_label": "gCaveOfOrigin_UnusedRubySapphireMap3",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_NEW_MAUVILLE_ENTRANCE",
+ "base_label": "gNewMauville_Entrance",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_MAGNEMITE"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_MAGNEMITE"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_MAGNEMITE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_MAGNEMITE"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_MAGNEMITE"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_VOLTORB"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_MAGNEMITE"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SAFARI_ZONE_SOUTHWEST",
+ "base_label": "gSafariZone_Southwest",
+ "land_mons": {
+ "encounter_rate": 25,
+ "mons": [
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_GIRAFARIG"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_GIRAFARIG"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_NATU"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_DODUO"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_GLOOM"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_WOBBUFFET"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_PIKACHU"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_WOBBUFFET"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_PIKACHU"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_WOBBUFFET"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 9,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_PSYDUCK"
+ },
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_PSYDUCK"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_PSYDUCK"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_PSYDUCK"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_PSYDUCK"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 35,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 25,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SEAKING"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_SEAKING"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_SEAKING"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SAFARI_ZONE_NORTH",
+ "base_label": "gSafariZone_North",
+ "land_mons": {
+ "encounter_rate": 25,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_PHANPY"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_PHANPY"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_NATU"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_GLOOM"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_GLOOM"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_NATU"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_XATU"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_HERACROSS"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_XATU"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_HERACROSS"
+ }
+ ]
+ },
+ "rock_smash_mons": {
+ "encounter_rate": 25,
+ "mons": [
+ {
+ "min_level": 10,
+ "max_level": 15,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 15,
+ "max_level": 20,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SAFARI_ZONE_NORTHWEST",
+ "base_label": "gSafariZone_Northwest",
+ "land_mons": {
+ "encounter_rate": 25,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_RHYHORN"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_RHYHORN"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_ODDISH"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_DODUO"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_GLOOM"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_GLOOM"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_DODUO"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_DODRIO"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_PINSIR"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_DODRIO"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_PINSIR"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 9,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_PSYDUCK"
+ },
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_PSYDUCK"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_PSYDUCK"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLDUCK"
+ },
+ {
+ "min_level": 25,
+ "max_level": 40,
+ "species": "SPECIES_GOLDUCK"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 35,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 25,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SEAKING"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_SEAKING"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_SEAKING"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_VICTORY_ROAD_B1F",
+ "base_label": "gVictoryRoad_B1F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_HARIYAMA"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_LAIRON"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_LAIRON"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_HARIYAMA"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_HARIYAMA"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_LAIRON"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_MAWILE"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_LAIRON"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_MAWILE"
+ }
+ ]
+ },
+ "rock_smash_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 40,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 40,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_GRAVELER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_VICTORY_ROAD_B2F",
+ "base_label": "gVictoryRoad_B2F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_LAIRON"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_LAIRON"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 44,
+ "max_level": 44,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 44,
+ "max_level": 44,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_LAIRON"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_MAWILE"
+ },
+ {
+ "min_level": 44,
+ "max_level": 44,
+ "species": "SPECIES_LAIRON"
+ },
+ {
+ "min_level": 44,
+ "max_level": 44,
+ "species": "SPECIES_MAWILE"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WHISCASH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WHISCASH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WHISCASH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_METEOR_FALLS_1F_1R",
+ "base_label": "gMeteorFalls_1F_1R",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 17,
+ "max_level": 17,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 18,
+ "max_level": 18,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 15,
+ "max_level": 15,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 18,
+ "max_level": 18,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 19,
+ "max_level": 19,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 19,
+ "max_level": 19,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_ZUBAT"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 25,
+ "max_level": 35,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 5,
+ "max_level": 15,
+ "species": "SPECIES_SOLROCK"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_BARBOACH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_METEOR_FALLS_1F_2R",
+ "base_label": "gMeteorFalls_1F_2R",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 39,
+ "max_level": 39,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 25,
+ "max_level": 35,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 5,
+ "max_level": 15,
+ "species": "SPECIES_SOLROCK"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WHISCASH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WHISCASH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WHISCASH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_METEOR_FALLS_B1F_1R",
+ "base_label": "gMeteorFalls_B1F_1R",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 39,
+ "max_level": 39,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 25,
+ "max_level": 35,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 5,
+ "max_level": 15,
+ "species": "SPECIES_SOLROCK"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 30,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_BARBOACH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WHISCASH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WHISCASH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WHISCASH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM",
+ "base_label": "gShoalCave_LowTideStairsRoom",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM",
+ "base_label": "gShoalCave_LowTideLowerRoom",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SHOAL_CAVE_LOW_TIDE_INNER_ROOM",
+ "base_label": "gShoalCave_LowTideInnerRoom",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 35,
+ "species": "SPECIES_SPHEAL"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM",
+ "base_label": "gShoalCave_LowTideEntranceRoom",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 35,
+ "species": "SPECIES_SPHEAL"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_LILYCOVE_CITY",
+ "base_label": "gLilycoveCity",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_STARYU"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_DEWFORD_TOWN",
+ "base_label": "gDewfordTown",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SLATEPORT_CITY",
+ "base_label": "gSlateportCity",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MOSSDEEP_CITY",
+ "base_label": "gMossdeepCity",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_PACIFIDLOG_TOWN",
+ "base_label": "gPacifidlogTown",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHARPEDO"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_EVER_GRANDE_CITY",
+ "base_label": "gEverGrandeCity",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_WINGULL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_PELIPPER"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_LUVDISC"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_LUVDISC"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_CORSOLA"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_WAILMER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_WAILMER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_PETALBURG_CITY",
+ "base_label": "gPetalburgCity",
+ "water_mons": {
+ "encounter_rate": 1,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 20,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MARILL"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_CORPHISH"
+ },
+ {
+ "min_level": 40,
+ "max_level": 45,
+ "species": "SPECIES_CORPHISH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_UNDERWATER1",
+ "base_label": "gUnderwater1",
+ "water_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_CLAMPERL"
+ },
+ {
+ "min_level": 20,
+ "max_level": 30,
+ "species": "SPECIES_CHINCHOU"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_CLAMPERL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_RELICANTH"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_RELICANTH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM",
+ "base_label": "gShoalCave_LowTideIceRoom",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SNORUNT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_SPHEAL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SNORUNT"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_SNORUNT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SKY_PILLAR_1F",
+ "base_label": "gSkyPillar_1F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_BANETTE"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_BANETTE"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_CLAYDOL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SOOTOPOLIS_CITY",
+ "base_label": "gSootopolisCity",
+ "water_mons": {
+ "encounter_rate": 1,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 35,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 15,
+ "max_level": 25,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 10,
+ "species": "SPECIES_TENTACOOL"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 10,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_GYARADOS"
+ },
+ {
+ "min_level": 35,
+ "max_level": 45,
+ "species": "SPECIES_GYARADOS"
+ },
+ {
+ "min_level": 5,
+ "max_level": 45,
+ "species": "SPECIES_GYARADOS"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SKY_PILLAR_3F",
+ "base_label": "gSkyPillar_3F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_BANETTE"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_BANETTE"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_CLAYDOL"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SKY_PILLAR_5F",
+ "base_label": "gSkyPillar_5F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_SABLEYE"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_BANETTE"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_BANETTE"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_CLAYDOL"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_ALTARIA"
+ },
+ {
+ "min_level": 39,
+ "max_level": 39,
+ "species": "SPECIES_ALTARIA"
+ },
+ {
+ "min_level": 39,
+ "max_level": 39,
+ "species": "SPECIES_ALTARIA"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SAFARI_ZONE_SOUTHEAST",
+ "base_label": "gSafariZone_Southeast",
+ "land_mons": {
+ "encounter_rate": 25,
+ "mons": [
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_SUNKERN"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_SUNKERN"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_SPINARAK"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_HOOTHOOT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_SNUBBULL"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_GLIGAR"
+ },
+ {
+ "min_level": 39,
+ "max_level": 39,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GLIGAR"
+ }
+ ]
+ },
+ "water_mons": {
+ "encounter_rate": 9,
+ "mons": [
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_WOOPER"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_MARILL"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_QUAGSIRE"
+ }
+ ]
+ },
+ "fishing_mons": {
+ "encounter_rate": 35,
+ "mons": [
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_MAGIKARP"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_REMORAID"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_GOLDEEN"
+ },
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_REMORAID"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_REMORAID"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_REMORAID"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_OCTILLERY"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_SAFARI_ZONE_NORTHEAST",
+ "base_label": "gSafariZone_Northeast",
+ "land_mons": {
+ "encounter_rate": 25,
+ "mons": [
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_SUNKERN"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_LEDYBA"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_HOOTHOOT"
+ },
+ {
+ "min_level": 34,
+ "max_level": 34,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_MILTANK"
+ },
+ {
+ "min_level": 39,
+ "max_level": 39,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_MILTANK"
+ }
+ ]
+ },
+ "rock_smash_mons": {
+ "encounter_rate": 25,
+ "mons": [
+ {
+ "min_level": 25,
+ "max_level": 30,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 20,
+ "max_level": 25,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 35,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 35,
+ "max_level": 40,
+ "species": "SPECIES_SHUCKLE"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MAGMA_HIDEOUT_1F",
+ "base_label": "gMagmaHideout_1F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GRAVELER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MAGMA_HIDEOUT_2F_1R",
+ "base_label": "gMagmaHideout_2F_1R",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GRAVELER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MAGMA_HIDEOUT_2F_2R",
+ "base_label": "gMagmaHideout_2F_2R",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GRAVELER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MAGMA_HIDEOUT_3F_1R",
+ "base_label": "gMagmaHideout_3F_1R",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GRAVELER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MAGMA_HIDEOUT_3F_2R",
+ "base_label": "gMagmaHideout_3F_2R",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GRAVELER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MAGMA_HIDEOUT_4F",
+ "base_label": "gMagmaHideout_4F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GRAVELER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MAGMA_HIDEOUT_3F_3R",
+ "base_label": "gMagmaHideout_3F_3R",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GRAVELER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MAGMA_HIDEOUT_2F_3R",
+ "base_label": "gMagmaHideout_2F_3R",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_TORKOAL"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GEODUDE"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 30,
+ "max_level": 30,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 31,
+ "max_level": 31,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 32,
+ "max_level": 32,
+ "species": "SPECIES_GRAVELER"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GRAVELER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MIRAGE_TOWER_1F",
+ "base_label": "gMirageTower_1F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_TRAPINCH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MIRAGE_TOWER_2F",
+ "base_label": "gMirageTower_2F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_TRAPINCH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MIRAGE_TOWER_3F",
+ "base_label": "gMirageTower_3F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_TRAPINCH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_MIRAGE_TOWER_4F",
+ "base_label": "gMirageTower_4F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_TRAPINCH"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SANDSHREW"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_TRAPINCH"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_DESERT_UNDERPASS",
+ "base_label": "gDesertUnderpass",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_DITTO"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_DITTO"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_LOUDRED"
+ },
+ {
+ "min_level": 41,
+ "max_level": 41,
+ "species": "SPECIES_DITTO"
+ },
+ {
+ "min_level": 36,
+ "max_level": 36,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_LOUDRED"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_DITTO"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_WHISMUR"
+ },
+ {
+ "min_level": 43,
+ "max_level": 43,
+ "species": "SPECIES_DITTO"
+ },
+ {
+ "min_level": 44,
+ "max_level": 44,
+ "species": "SPECIES_LOUDRED"
+ },
+ {
+ "min_level": 45,
+ "max_level": 45,
+ "species": "SPECIES_DITTO"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ARTISAN_CAVE_B1F",
+ "base_label": "gArtisanCave_B1F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 41,
+ "max_level": 41,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 43,
+ "max_level": 43,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 44,
+ "max_level": 44,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 45,
+ "max_level": 45,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 46,
+ "max_level": 46,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 47,
+ "max_level": 47,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 48,
+ "max_level": 48,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 49,
+ "max_level": 49,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 50,
+ "max_level": 50,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 50,
+ "max_level": 50,
+ "species": "SPECIES_SMEARGLE"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ARTISAN_CAVE_1F",
+ "base_label": "gArtisanCave_1F",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 41,
+ "max_level": 41,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 42,
+ "max_level": 42,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 43,
+ "max_level": 43,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 44,
+ "max_level": 44,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 45,
+ "max_level": 45,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 46,
+ "max_level": 46,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 47,
+ "max_level": 47,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 48,
+ "max_level": 48,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 49,
+ "max_level": 49,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 50,
+ "max_level": 50,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 50,
+ "max_level": 50,
+ "species": "SPECIES_SMEARGLE"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ALTERING_CAVE",
+ "base_label": "gAlteringCave1",
+ "land_mons": {
+ "encounter_rate": 7,
+ "mons": [
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_ZUBAT"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_ZUBAT"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ALTERING_CAVE",
+ "base_label": "gAlteringCave2",
+ "land_mons": {
+ "encounter_rate": 7,
+ "mons": [
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 9,
+ "max_level": 9,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 11,
+ "max_level": 11,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 7,
+ "max_level": 7,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 9,
+ "max_level": 9,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 13,
+ "max_level": 13,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 3,
+ "max_level": 3,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 11,
+ "max_level": 11,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MAREEP"
+ },
+ {
+ "min_level": 11,
+ "max_level": 11,
+ "species": "SPECIES_MAREEP"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ALTERING_CAVE",
+ "base_label": "gAlteringCave3",
+ "land_mons": {
+ "encounter_rate": 7,
+ "mons": [
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 23,
+ "max_level": 23,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 25,
+ "max_level": 25,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 29,
+ "max_level": 29,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 19,
+ "max_level": 19,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 21,
+ "max_level": 21,
+ "species": "SPECIES_PINECO"
+ },
+ {
+ "min_level": 27,
+ "max_level": 27,
+ "species": "SPECIES_PINECO"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ALTERING_CAVE",
+ "base_label": "gAlteringCave4",
+ "land_mons": {
+ "encounter_rate": 7,
+ "mons": [
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 18,
+ "max_level": 18,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 18,
+ "max_level": 18,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_HOUNDOUR"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_HOUNDOUR"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ALTERING_CAVE",
+ "base_label": "gAlteringCave5",
+ "land_mons": {
+ "encounter_rate": 7,
+ "mons": [
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 10,
+ "max_level": 10,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 12,
+ "max_level": 12,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 16,
+ "max_level": 16,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 6,
+ "max_level": 6,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 8,
+ "max_level": 8,
+ "species": "SPECIES_TEDDIURSA"
+ },
+ {
+ "min_level": 14,
+ "max_level": 14,
+ "species": "SPECIES_TEDDIURSA"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ALTERING_CAVE",
+ "base_label": "gAlteringCave6",
+ "land_mons": {
+ "encounter_rate": 7,
+ "mons": [
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 18,
+ "max_level": 18,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_AIPOM"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_AIPOM"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ALTERING_CAVE",
+ "base_label": "gAlteringCave7",
+ "land_mons": {
+ "encounter_rate": 7,
+ "mons": [
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 18,
+ "max_level": 18,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SHUCKLE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SHUCKLE"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ALTERING_CAVE",
+ "base_label": "gAlteringCave8",
+ "land_mons": {
+ "encounter_rate": 7,
+ "mons": [
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 18,
+ "max_level": 18,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_STANTLER"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_STANTLER"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_ALTERING_CAVE",
+ "base_label": "gAlteringCave9",
+ "land_mons": {
+ "encounter_rate": 7,
+ "mons": [
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 22,
+ "max_level": 22,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 24,
+ "max_level": 24,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 28,
+ "max_level": 28,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 18,
+ "max_level": 18,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 20,
+ "max_level": 20,
+ "species": "SPECIES_SMEARGLE"
+ },
+ {
+ "min_level": 26,
+ "max_level": 26,
+ "species": "SPECIES_SMEARGLE"
+ }
+ ]
+ }
+ },
+ {
+ "map": "MAP_METEOR_FALLS_STEVENS_CAVE",
+ "base_label": "gMeteorFalls_StevensCave",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 33,
+ "max_level": 33,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 37,
+ "max_level": 37,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 35,
+ "max_level": 35,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 39,
+ "max_level": 39,
+ "species": "SPECIES_SOLROCK"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 38,
+ "max_level": 38,
+ "species": "SPECIES_GOLBAT"
+ },
+ {
+ "min_level": 40,
+ "max_level": 40,
+ "species": "SPECIES_GOLBAT"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "label": "gBattlePyramidWildMonHeaders",
+ "for_maps": false,
+ "encounters": [
+ {
+ "base_label": "gBattlePyramid_1",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_BULBASAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_BULBASAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_BULBASAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_BULBASAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_IVYSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_IVYSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_VENUSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_VENUSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_VENUSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_VENUSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ }
+ ]
+ }
+ },
+ {
+ "base_label": "gBattlePyramid_2",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_IVYSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_IVYSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_IVYSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_IVYSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_VENUSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_VENUSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ }
+ ]
+ }
+ },
+ {
+ "base_label": "gBattlePyramid_3",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_VENUSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_VENUSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_VENUSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_VENUSAUR"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ }
+ ]
+ }
+ },
+ {
+ "base_label": "gBattlePyramid_4",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMANDER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ }
+ ]
+ }
+ },
+ {
+ "base_label": "gBattlePyramid_5",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WARTORTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WARTORTLE"
+ }
+ ]
+ }
+ },
+ {
+ "base_label": "gBattlePyramid_6",
+ "land_mons": {
+ "encounter_rate": 4,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WARTORTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WARTORTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WARTORTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WARTORTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WARTORTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WARTORTLE"
+ }
+ ]
+ }
+ },
+ {
+ "base_label": "gBattlePyramid_7",
+ "land_mons": {
+ "encounter_rate": 8,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WARTORTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WARTORTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SQUIRTLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARIZARD"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_CHARMELEON"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "label": "gBattlePikeWildMonHeaders",
+ "for_maps": false,
+ "encounters": [
+ {
+ "base_label": "gBattlePike_1",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_DUSCLOPS"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_DUSCLOPS"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_DUSCLOPS"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_DUSCLOPS"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_DUSCLOPS"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_DUSCLOPS"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ }
+ ]
+ }
+ },
+ {
+ "base_label": "gBattlePike_2",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_ELECTRODE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_ELECTRODE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_ELECTRODE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_ELECTRODE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_ELECTRODE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_ELECTRODE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ }
+ ]
+ }
+ },
+ {
+ "base_label": "gBattlePike_3",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_BRELOOM"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_BRELOOM"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_BRELOOM"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_BRELOOM"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_BRELOOM"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_BRELOOM"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ }
+ ]
+ }
+ },
+ {
+ "base_label": "gBattlePike_4",
+ "land_mons": {
+ "encounter_rate": 10,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WOBBUFFET"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WOBBUFFET"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WOBBUFFET"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WOBBUFFET"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WOBBUFFET"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WOBBUFFET"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SEVIPER"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_MILOTIC"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/data/wild_encounters.json.txt b/src/data/wild_encounters.json.txt
new file mode 100755
index 000000000..8f88cc587
--- /dev/null
+++ b/src/data/wild_encounters.json.txt
@@ -0,0 +1,67 @@
+{{ doNotModifyHeader }}
+## for wild_encounter_group in wild_encounter_groups
+## for encounter in wild_encounter_group.encounters
+{% if existsIn(encounter, "land_mons") %}
+const struct WildPokemon {{ encounter.base_label }}_LandMons[] =
+{
+## for wild_mon in encounter.land_mons.mons
+ { {{ wild_mon.min_level }}, {{ wild_mon.max_level }}, {{ wild_mon.species }} },
+## endfor
+};
+
+const struct WildPokemonInfo {{ encounter.base_label }}_LandMonsInfo = { {{encounter.land_mons.encounter_rate}}, {{ encounter.base_label }}_LandMons };
+{% endif %}
+{% if existsIn(encounter, "water_mons") %}
+const struct WildPokemon {{ encounter.base_label }}_WaterMons[] =
+{
+## for wild_mon in encounter.water_mons.mons
+ { {{ wild_mon.min_level }}, {{ wild_mon.max_level }}, {{ wild_mon.species }} },
+## endfor
+};
+
+const struct WildPokemonInfo {{ encounter.base_label }}_WaterMonsInfo = { {{encounter.water_mons.encounter_rate}}, {{ encounter.base_label }}_WaterMons };
+{% endif %}
+{% if existsIn(encounter, "rock_smash_mons") %}
+const struct WildPokemon {{ encounter.base_label }}_RockSmashMons[] =
+{
+## for wild_mon in encounter.rock_smash_mons.mons
+ { {{ wild_mon.min_level }}, {{ wild_mon.max_level }}, {{ wild_mon.species }} },
+## endfor
+};
+
+const struct WildPokemonInfo {{ encounter.base_label }}_RockSmashMonsInfo = { {{encounter.rock_smash_mons.encounter_rate}}, {{ encounter.base_label }}_RockSmashMons };
+{% endif %}
+{% if existsIn(encounter, "fishing_mons") %}
+const struct WildPokemon {{ encounter.base_label }}_FishingMons[] =
+{
+## for wild_mon in encounter.fishing_mons.mons
+ { {{ wild_mon.min_level }}, {{ wild_mon.max_level }}, {{ wild_mon.species }} },
+## endfor
+};
+
+const struct WildPokemonInfo {{ encounter.base_label }}_FishingMonsInfo = { {{encounter.fishing_mons.encounter_rate}}, {{ encounter.base_label }}_FishingMons };
+{% endif %}
+## endfor
+
+const struct WildPokemonHeader {{ wild_encounter_group.label }}[] =
+{
+## for encounter in wild_encounter_group.encounters
+ {
+ .mapGroup = {% if wild_encounter_group.for_maps %}MAP_GROUP({{ removePrefix(encounter.map, "MAP_") }}){% else %}0{% endif %},
+ .mapNum = {% if wild_encounter_group.for_maps %}MAP_NUM({{ removePrefix(encounter.map, "MAP_") }}){% else %}{{ loop.index1 }}{% endif %},
+ .landMonsInfo = {% if existsIn(encounter, "land_mons") %}&{{ encounter.base_label }}_LandMonsInfo{% else %}NULL{% endif %},
+ .waterMonsInfo = {% if existsIn(encounter, "water_mons") %}&{{ encounter.base_label }}_WaterMonsInfo{% else %}NULL{% endif %},
+ .rockSmashMonsInfo = {% if existsIn(encounter, "rock_smash_mons") %}&{{ encounter.base_label }}_RockSmashMonsInfo{% else %}NULL{% endif %},
+ .fishingMonsInfo = {% if existsIn(encounter, "fishing_mons") %}&{{ encounter.base_label }}_FishingMonsInfo{% else %}NULL{% endif %},
+ },
+## endfor
+ {
+ .mapGroup = MAP_GROUP(UNDEFINED),
+ .mapNum = MAP_NUM(UNDEFINED),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+};
+## endfor
diff --git a/src/decompress.c b/src/decompress.c
index 949b96990..46e4ef614 100644
--- a/src/decompress.c
+++ b/src/decompress.c
@@ -1,15 +1,13 @@
#include "global.h"
-#include "decompress.h"
-#include "constants/species.h"
-#include "text.h"
#include "alloc.h"
+#include "data.h"
+#include "decompress.h"
#include "pokemon.h"
+#include "text.h"
+#include "constants/species.h"
EWRAM_DATA ALIGNED(4) u8 gDecompressionBuffer[0x4000] = {0};
-extern const struct CompressedSpriteSheet gMonFrontPicTable[];
-extern const struct CompressedSpriteSheet gMonBackPicTable[];
-
static void DuplicateDeoxysTiles(void *pointer, s32 species);
void LZDecompressWram(const u32 *src, void *dest)
diff --git a/src/decoration.c b/src/decoration.c
index 4baa6d4c8..0f6dd082b 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -1,84 +1,83 @@
#include "global.h"
-#include "constants/decorations.h"
-#include "decompress.h"
#include "alloc.h"
-#include "text.h"
-#include "string_util.h"
-#include "international_string_util.h"
-#include "script.h"
-#include "task.h"
-#include "main.h"
-#include "palette.h"
-#include "constants/songs.h"
-#include "overworld.h"
-#include "fieldmap.h"
-#include "metatile_behavior.h"
-#include "field_weather.h"
-#include "field_player_avatar.h"
+#include "decompress.h"
+#include "decoration.h"
+#include "decoration_inventory.h"
+#include "event_data.h"
+#include "event_object_movement.h"
+#include "event_scripts.h"
#include "field_camera.h"
+#include "field_player_avatar.h"
#include "field_screen_effect.h"
-#include "event_object_movement.h"
+#include "field_weather.h"
+#include "fieldmap.h"
+#include "graphics.h"
+#include "international_string_util.h"
+#include "item_icon.h"
#include "list_menu.h"
-#include "menu_helpers.h"
+#include "main.h"
#include "menu.h"
-#include "sound.h"
-#include "event_scripts.h"
-#include "event_data.h"
-#include "constants/region_map_sections.h"
+#include "menu_helpers.h"
+#include "metatile_behavior.h"
+#include "overworld.h"
+#include "palette.h"
#include "player_pc.h"
-#include "strings.h"
-#include "tv.h"
+#include "script.h"
#include "secret_base.h"
+#include "sound.h"
+#include "string_util.h"
+#include "strings.h"
+#include "task.h"
+#include "text.h"
#include "tilesets.h"
-#include "item_icon.h"
#include "trader.h"
+#include "tv.h"
+#include "constants/decorations.h"
#include "constants/event_objects.h"
-#include "decoration_inventory.h"
-#include "decoration.h"
-#include "graphics.h"
-
-// Static type declarations
+#include "constants/songs.h"
+#include "constants/region_map_sections.h"
-#define OVERWORLD_PLACE_DECOR_SELECTOR_PAL_TAG 0xbe5
-#define OVERWORLD_PLACE_DECOR_PLAYER_PAL_TAG 0x008
+#define PLACE_DECORATION_SELECTOR_TAG 0xbe5
+#define PLACE_DECORATION_PLAYER_TAG 0x008
-struct DecorPCBuffer {
+struct DecorationItemsMenu
+{
struct ListMenuItem items[41];
u8 names[41][24];
- u8 unk_520;
- u8 unk_521;
- u8 unk_522;
+ u8 numMenuItems;
+ u8 maxShownItems;
+ u8 scrollIndicatorsTaskId;
};
-struct PlaceDecorationGraphicsDataBuffer {
- /*0x000; 0x0203a190*/ const struct Decoration *decoration;
- /*0x004; 0x0203a194*/ u16 tiles[0x40];
- /*0x084; 0x0203a214*/ u8 image[0x800];
- /*0x884; 0x0203aa14*/ u16 palette[16];
+struct PlaceDecorationGraphicsDataBuffer
+{
+ const struct Decoration *decoration;
+ u16 tiles[0x40];
+ u8 image[0x800];
+ u16 palette[16];
};
-struct DecorRearrangementDataBuffer {
+struct DecorRearrangementDataBuffer
+{
u8 idx;
u8 width;
u8 height;
u16 flagId;
};
-// Static RAM declarations
-
-EWRAM_DATA u8 *gCurDecorInventoryItems = NULL;
-EWRAM_DATA static u8 sSecretBasePCMenuCursorPos = 0;
-EWRAM_DATA static u8 sCurDecorCatCount = 0;
+EWRAM_DATA u8 *gCurDecorationItems = NULL;
+EWRAM_DATA static u8 sDecorationActionsCursorPos = 0;
+EWRAM_DATA static u8 sNumOwnedDecorationsInCurCategory = 0;
EWRAM_DATA static u8 sSecretBaseItemsIndicesBuffer[16] = {};
EWRAM_DATA static u8 sPlayerRoomItemsIndicesBuffer[12] = {};
-EWRAM_DATA static u16 sSecretBasePCSelectDecorLineNo = 0;
-EWRAM_DATA static u16 sSecretBasePCSelectDecorPageNo = 0;
+EWRAM_DATA static u16 sDecorationsCursorPos = 0;
+EWRAM_DATA static u16 sDecorationsScrollOffset = 0;
EWRAM_DATA u8 gCurDecorationIndex = 0;
EWRAM_DATA static u8 sCurDecorationCategory = DECORCAT_DESK;
EWRAM_DATA static u32 filler_0203a174[2] = {};
-EWRAM_DATA struct DecorPCPointers gUnknown_0203A17C = {};
-EWRAM_DATA static u8 sDecorMenuWindowIndices[4] = {};
-EWRAM_DATA struct DecorPCBuffer *sDecorPCBuffer = NULL;
+EWRAM_DATA struct DecorationPCContext gDecorationContext = {};
+EWRAM_DATA static u8 sDecorMenuWindowIds[4] = {};
+EWRAM_DATA static struct DecorationItemsMenu *sDecorationItemsMenu = NULL;
EWRAM_DATA struct PlaceDecorationGraphicsDataBuffer sPlaceDecorationGraphicsDataBuffer = {};
EWRAM_DATA static u16 sCurDecorMapX = 0;
EWRAM_DATA static u16 sCurDecorMapY = 0;
@@ -89,38 +88,36 @@ EWRAM_DATA static struct OamData sDecorSelectorOam = {};
EWRAM_DATA static struct DecorRearrangementDataBuffer sDecorRearrangementDataBuffer[16] = {};
EWRAM_DATA static u8 sCurDecorSelectedInRearrangement = 0;
-// Static ROM declarations
-
-void sub_8126B80(u8 taskId);
-void sub_8126C08(void);
-void SecretBasePC_Decorate(u8 taskId);
-void SecretBasePC_PutAway(u8 taskId);
-void SecretBasePC_Toss(u8 taskId);
-void sub_8126DA4(u8 taskId);
-void SecretBasePC_Cancel(u8 taskId);
-void SecretBasePC_PrepMenuForSelectingStoredDecors(u8 taskId);
-void sub_8126DFC(u8 taskId);
-void sub_8126E8C(u8 taskId);
-void sub_8126F68(u8 winid, u8 decorCat, u8 x, u8 y, bool8 flag, u8 speed);
-void sub_8127058(u8 *str, bool8 flag);
-void sub_8127088(u8 taskId);
-void sub_81270E8(u8 taskId);
-void sub_8127180(u8 taskId);
-void sub_812719C(u8 taskId);
-void sub_81271CC(u8 taskId);
-void sub_8127268(u8 taskId);
-void sub_8127454(u8 *dest, u16 decorId);
-void sub_8127480(s32 a0, bool8 flag, struct ListMenu *menu);
+static void HandleDecorationActionsMenuInput(u8 taskId);
+static void PrintCurMainMenuDescription(void);
+static void DecorationMenuAction_Decorate(u8 taskId);
+static void DecorationMenuAction_PutAway(u8 taskId);
+static void DecorationMenuAction_Toss(u8 taskId);
+static void DecorationMenuAction_Cancel(u8 taskId);
+static void ReturnToDecorationActionsAfterInvalidSelection(u8 taskId);
+static void SecretBasePC_PrepMenuForSelectingStoredDecors(u8 taskId);
+static void InitDecorationCategoriesWindow(u8 taskId);
+static void PrintDecorationCategoryMenuItems(u8 taskId);
+static void PrintDecorationCategoryMenuItem(u8 winid, u8 category, u8 x, u8 y, bool8 disabled, u8 speed);
+static void ColorMenuItemString(u8 *str, bool8 disabled);
+static void HandleDecorationCategoriesMenuInput(u8 taskId);
+static void SelectDecorationCategory(u8 taskId);
+static void ReturnToDecorationCategoriesAfterInvalidSelection(u8 taskId);
+static void ExitDecorationCategoriesMenu(u8 taskId);
+static void ReturnToActionsMenuFromCategories(u8 taskId);
+static void ExitTraderDecorationMenu(u8 taskId);
+static void CopyDecorationMenuItemName(u8 *dest, u16 decoration);
+static void DecorationItemsMenu_OnCursorMove(s32 itemIndex, bool8 flag, struct ListMenu *menu);
void sub_81274A0(u8 a0, s32 a1, u8 a2);
-void sub_8127620(u8 taskId);
-void sub_812764C(u8 taskId);
-void sub_8127744(u32 a0);
-void sub_81277A8(void);
+static void ShowDecorationItemsWindow(u8 taskId);
+static void HandleDecorationItemsMenuInput(u8 taskId);
+static void PrintDecorationItemDescription(u32 itemIndex);
+static void RemoveDecorationItemsOtherWindows(void);
bool8 sub_81277BC(u8 idx);
bool8 sub_81277E8(u8 idx);
-void IdentifyOwnedDecorationsCurrentlyInUse(u8 taskId);
-void sub_812759C(u8 taskId);
-void sub_8127718(u8 decorCat);
+static void IdentifyOwnedDecorationsCurrentlyInUse(u8 taskId);
+static void InitDecorationItemsWindow(u8 taskId);
+static void ShowDecorationCategorySummaryWindow(u8 category);
void sub_8127A30(u8 taskId);
void sub_8127A8C(u8 taskId);
void sub_8127F68(u8 taskId);
@@ -168,13 +165,12 @@ void sub_812A3D4(u8 taskId);
void sub_812A458(u8 taskId);
void sub_812A478(u8 taskId);
-// .rodata
-
#include "data/decoration/tiles.h"
#include "data/decoration/description.h"
#include "data/decoration/header.h"
-const u8 *const sDecorCatNames[] = {
+static const u8 *const sDecorationCategoryNames[] =
+{
gText_Desk,
gText_Chair,
gText_Plant,
@@ -185,36 +181,42 @@ const u8 *const sDecorCatNames[] = {
gText_Cushion
};
-const struct MenuAction sSecretBasePCMenuActions[] = {
+static const struct MenuAction sDecorationMainMenuActions[] =
+{
{
- gText_Decorate, {.void_u8=SecretBasePC_Decorate}
- }, {
- gText_PutAway, {.void_u8=SecretBasePC_PutAway}
- }, {
- gText_Toss2, {.void_u8=SecretBasePC_Toss}
- }, {
- gText_Cancel, {.void_u8=SecretBasePC_Cancel}
- }
+ .text = gText_Decorate,
+ .func = { .void_u8 = DecorationMenuAction_Decorate },
+ },
+ {
+ .text = gText_PutAway,
+ .func = { .void_u8 = DecorationMenuAction_PutAway },
+ },
+ {
+ .text = gText_Toss2,
+ .func = { .void_u8 = DecorationMenuAction_Toss },
+ },
+ {
+ .text = gText_Cancel,
+ .func = { .void_u8 = DecorationMenuAction_Cancel },
+ },
};
-const u8 *const sSecretBasePCMenuItemDescriptions[] = {
+static const u8 *const sSecretBasePCMenuItemDescriptions[] =
+{
gText_PutOutSelectedDecorItem,
gText_StoreChosenDecorInPC,
gText_ThrowAwayUnwantedDecors,
gText_GoBackPrevMenu
};
-void (*const SecretBasePC_SelectedDecorActions[][2])(u8 taskId) = {
- {
- sub_8127F68, sub_8127A8C
- }, {
- sub_812A3D4, sub_8127A8C
- }, {
- sub_8133DA0, sub_8127A8C
- }
+static const TaskFunc sSecretBasePC_SelectedDecorationActions[][2] =
+{
+ { sub_8127F68, sub_8127A8C },
+ { sub_812A3D4, sub_8127A8C },
+ { sub_8133DA0, sub_8127A8C },
};
-const struct WindowTemplate gUnknown_085A6B90[4] =
+static const struct WindowTemplate sDecorationWindowTemplates[4] =
{
{
.bg = 0,
@@ -254,12 +256,12 @@ const struct WindowTemplate gUnknown_085A6B90[4] =
}
};
-const u16 gUnknown_085A6BB0[] = INCBIN_U16("graphics/decorations/unk_85a6bb0.gbapal");
+static const u16 sDecorationMenuPalette[] = INCBIN_U16("graphics/decorations/decoration_menu.gbapal");
-const struct ListMenuTemplate gUnknown_085A6BD0 =
+static const struct ListMenuTemplate sDecorationItemsListMenuTemplate =
{
.items = NULL,
- .moveCursorFunc = sub_8127480,
+ .moveCursorFunc = DecorationItemsMenu_OnCursorMove,
.itemPrintFunc = sub_81274A0,
.totalItems = 0,
.maxShowed = 0,
@@ -280,118 +282,140 @@ const struct ListMenuTemplate gUnknown_085A6BD0 =
#include "data/decoration/icon.h"
#include "data/decoration/tilemaps.h"
-const struct {
+static const struct {
u8 shape;
u8 size;
- u8 x;
- u8 y;
-} gUnknown_085A7250[] = {
- {0, 1, 0x78, 0x4e},
- {1, 2, 0x80, 0x4e},
- {1, 3, 0x90, 0x56},
- {1, 3, 0x90, 0x46},
- {0, 2, 0x80, 0x46},
- {2, 2, 0x78, 0x46},
- {2, 3, 0x80, 0x56},
- {2, 3, 0x80, 0x36},
- {0, 3, 0x90, 0x46},
- {1, 3, 0x90, 0x46}
+ u8 cameraX;
+ u8 cameraY;
+} sDecorationMovementInfo[] =
+{
+ [DECORSHAPE_1x1] = {SPRITE_SHAPE(16x16), SPRITE_SIZE(16x16), 120, 78},
+ [DECORSHAPE_2x1] = {SPRITE_SHAPE(32x16), SPRITE_SIZE(32x16), 128, 78},
+ [DECORSHAPE_3x1] = {SPRITE_SHAPE(64x32), SPRITE_SIZE(64x32), 144, 86},
+ [DECORSHAPE_4x2] = {SPRITE_SHAPE(64x32), SPRITE_SIZE(64x32), 144, 70},
+ [DECORSHAPE_2x2] = {SPRITE_SHAPE(32x32), SPRITE_SIZE(32x32), 128, 70},
+ [DECORSHAPE_1x2] = {SPRITE_SHAPE(16x32), SPRITE_SIZE(16x32), 120, 70},
+ [DECORSHAPE_1x3] = {SPRITE_SHAPE(32x64), SPRITE_SIZE(32x64), 128, 86},
+ [DECORSHAPE_2x4] = {SPRITE_SHAPE(32x64), SPRITE_SIZE(32x64), 128, 54},
+ [DECORSHAPE_3x3] = {SPRITE_SHAPE(64x64), SPRITE_SIZE(64x64), 144, 70},
+ [DECORSHAPE_3x2] = {SPRITE_SHAPE(64x32), SPRITE_SIZE(64x32), 144, 70},
};
-const union AnimCmd gUnknown_085A7278[] = {
+static const union AnimCmd sDecorSelectorAnimCmd0[] =
+{
ANIMCMD_FRAME(0, 0, FALSE, FALSE),
ANIMCMD_END
};
-const union AnimCmd *const sDecorSelectorAnims[] = {
- gUnknown_085A7278
-};
+static const union AnimCmd *const sDecorSelectorAnimCmds[] = { sDecorSelectorAnimCmd0 };
-const struct SpriteFrameImage sDecorSelectorSpriteFrameImages = {
- (const u8 *)&sPlaceDecorationGraphicsDataBuffer.image, 0x800
+static const struct SpriteFrameImage sDecorSelectorSpriteFrameImages =
+{
+ .data = (const u8 *)&sPlaceDecorationGraphicsDataBuffer.image,
+ .size = 0x800,
};
-const struct SpriteTemplate sDecorSelectorSpriteTemplate = {
+static const struct SpriteTemplate sDecorationSelectorSpriteTemplate =
+{
0xFFFF,
- OVERWORLD_PLACE_DECOR_SELECTOR_PAL_TAG,
+ PLACE_DECORATION_SELECTOR_TAG,
&sDecorSelectorOam,
- sDecorSelectorAnims,
+ sDecorSelectorAnimCmds,
&sDecorSelectorSpriteFrameImages,
gDummySpriteAffineAnimTable,
SpriteCallbackDummy
};
-const struct SpriteTemplate sDecorWhilePlacingSpriteTemplate = {
+const struct SpriteTemplate sDecorWhilePlacingSpriteTemplate =
+{
0x0000,
0x0000,
&sDecorSelectorOam,
- sDecorSelectorAnims,
+ sDecorSelectorAnimCmds,
NULL,
gDummySpriteAffineAnimTable,
SpriteCallbackDummy
};
-const struct SpritePalette gUnknown_085A72BC = {
- (const u16 *)&sPlaceDecorationGraphicsDataBuffer.palette, OVERWORLD_PLACE_DECOR_SELECTOR_PAL_TAG
+const struct SpritePalette gUnknown_085A72BC =
+{
+ .data = (const u16 *)&sPlaceDecorationGraphicsDataBuffer.palette,
+ .tag = PLACE_DECORATION_SELECTOR_TAG,
};
-const struct YesNoFuncTable gUnknown_085A72C4 = {
- sub_81289F0,
- sub_8128FD8
+const struct YesNoFuncTable gUnknown_085A72C4 =
+{
+ .yesFunc = sub_81289F0,
+ .noFunc = sub_8128FD8,
};
-const struct YesNoFuncTable gUnknown_085A72CC = {
- sub_8128BA0,
- sub_8128FD8
+const struct YesNoFuncTable gUnknown_085A72CC =
+{
+ .yesFunc = sub_8128BA0,
+ .noFunc = sub_8128FD8,
};
-const struct YesNoFuncTable gUnknown_085A72D4[] = {
+const struct YesNoFuncTable gUnknown_085A72D4[] =
+{
{
- sub_81283BC,
- sub_8128414
- }, {
- sub_8129BCC,
- sub_8129BF8
+ .yesFunc = sub_81283BC,
+ .noFunc = sub_8128414,
+ },
+ {
+ .yesFunc = sub_8129BCC,
+ .noFunc = sub_8129BF8,
}
};
-const u8 gUnknown_085A72E4[] = {
- 0x04, 0x04, 0x04, 0x04, 0x00, 0x03, 0x03, 0x00
+static const u8 sDecorationStandElevations[] =
+{
+ 4, 4, 4, 4,
+ 0, 3, 3, 0
};
-const u8 gUnknown_085A72EC[] = {
- 0x04, 0x04, 0x04, 0x04, 0x00, 0x04, 0x03, 0x00
+static const u8 sDecorationSlideElevation[] =
+{
+ 4, 4,
+ 4, 4,
+ 0, 4,
+ 3, 0,
};
const u16 gUnknown_085A72F4[] = {
0x04, 0x08, 0x10, 0x20, 0x10, 0x08, 0x10, 0x20, 0x40, 0x20
};
-const u16 Unknown_085A7308[] = INCBIN_U16("graphics/decorations/unk_85a7308.gbapal");
+const u16 gUnknown_085A7308[] = INCBIN_U16("graphics/decorations/unk_85a7308.gbapal");
-const u16 Unknown_085A7328[] = INCBIN_U16("graphics/decorations/unk_85a7328.gbapal");
+const u16 gUnknown_085A7328[] = INCBIN_U16("graphics/decorations/unk_85a7328.gbapal");
-const struct YesNoFuncTable gUnknown_085A7348 = {
- sub_812A1C0,
- sub_8129B34
+const struct YesNoFuncTable gUnknown_085A7348 =
+{
+ .yesFunc = sub_812A1C0,
+ .noFunc = sub_8129B34,
};
-const struct YesNoFuncTable gUnknown_085A7350 = {
- sub_812A210,
- sub_8129B34
+const struct YesNoFuncTable gUnknown_085A7350 =
+{
+ .yesFunc = sub_812A210,
+ .noFunc = sub_8129B34,
};
-const u8 Unknown_085A7358[] = INCBIN_U8("graphics/misc/decoration_unk_85a7358.4bpp");
+const u8 gUnknown_085A7358[] = INCBIN_U8("graphics/misc/decoration_unk_85a7358.4bpp");
-const struct SpritePalette gUnknown_085A73D8 = {
- Unknown_085A7308, OVERWORLD_PLACE_DECOR_PLAYER_PAL_TAG
+const struct SpritePalette gUnknown_085A73D8 =
+{
+ .data = gUnknown_085A7308,
+ .tag = PLACE_DECORATION_PLAYER_TAG,
};
-const struct SpritePalette gUnknown_085A73E0 = {
- Unknown_085A7328, OVERWORLD_PLACE_DECOR_PLAYER_PAL_TAG
+const struct SpritePalette gUnknown_085A73E0 =
+{
+ .data = gUnknown_085A7328,
+ .tag = PLACE_DECORATION_PLAYER_TAG,
};
-const struct OamData Unknown_085A73E8 =
+const struct OamData gUnknown_085A73E8 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -405,164 +429,163 @@ const struct OamData Unknown_085A73E8 =
.paletteNum = 0,
};
-const union AnimCmd Unknown_085A73F0[] = {
+const union AnimCmd gUnknown_085A73F0[] =
+{
ANIMCMD_FRAME(0, 0, 0),
ANIMCMD_END
};
-const union AnimCmd *const Unknown_085A73F8[] = {
- Unknown_085A73F0
+const union AnimCmd *const gUnknown_085A73F8[] =
+{
+ gUnknown_085A73F0,
};
-const struct SpriteFrameImage Unknown_085A73FC = {
- Unknown_085A7358, 0x80
+const struct SpriteFrameImage gUnknown_085A73FC =
+{
+ .data = gUnknown_085A7358,
+ .size = 0x80,
};
-const struct SpriteTemplate gUnknown_085A7404 = {
+const struct SpriteTemplate gUnknown_085A7404 =
+{
0xFFFF,
- OVERWORLD_PLACE_DECOR_PLAYER_PAL_TAG,
- &Unknown_085A73E8,
- Unknown_085A73F8,
- &Unknown_085A73FC,
+ PLACE_DECORATION_PLAYER_TAG,
+ &gUnknown_085A73E8,
+ gUnknown_085A73F8,
+ &gUnknown_085A73FC,
gDummySpriteAffineAnimTable,
sub_812A36C
};
-const struct YesNoFuncTable gUnknown_085A741C = {
- sub_812A478,
- sub_8127A30
+const struct YesNoFuncTable gUnknown_085A741C =
+{
+ .yesFunc = sub_812A478,
+ .noFunc = sub_8127A30,
};
-// .text
-void sub_8126968(void)
+void InitDecorationContextItems(void)
{
- if (sCurDecorationCategory < 8)
- {
- gCurDecorInventoryItems = gDecorationInventories[sCurDecorationCategory].items;
- }
- if (gUnknown_0203A17C.isPlayerRoom == FALSE)
+ if (sCurDecorationCategory < DECORCAT_COUNT)
+ gCurDecorationItems = gDecorationInventories[sCurDecorationCategory].items;
+
+ if (gDecorationContext.isPlayerRoom == FALSE)
{
- gUnknown_0203A17C.items = gSaveBlock1Ptr->secretBases[0].decorations;
- gUnknown_0203A17C.pos = gSaveBlock1Ptr->secretBases[0].decorationPos;
+ gDecorationContext.items = gSaveBlock1Ptr->secretBases[0].decorations;
+ gDecorationContext.pos = gSaveBlock1Ptr->secretBases[0].decorationPositions;
}
- if (gUnknown_0203A17C.isPlayerRoom == TRUE)
+
+ if (gDecorationContext.isPlayerRoom == TRUE)
{
- gUnknown_0203A17C.items = gSaveBlock1Ptr->playerRoomDecor;
- gUnknown_0203A17C.pos = gSaveBlock1Ptr->playerRoomDecorPos;
+ gDecorationContext.items = gSaveBlock1Ptr->playerRoomDecor;
+ gDecorationContext.pos = gSaveBlock1Ptr->playerRoomDecorPos;
}
}
-u8 sub_81269D4(u8 idx)
+static u8 AddDecorationWindow(u8 windowIndex)
{
- u8 *winidx;
+ u8 *windowId;
struct WindowTemplate template;
- winidx = &sDecorMenuWindowIndices[idx];
- if (idx == 0)
+ windowId = &sDecorMenuWindowIds[windowIndex];
+ if (windowIndex == 0)
{
- template = gUnknown_085A6B90[0];
- template.width = GetMaxWidthInMenuTable(sSecretBasePCMenuActions, 4);
+ template = sDecorationWindowTemplates[0];
+ template.width = GetMaxWidthInMenuTable(sDecorationMainMenuActions, ARRAY_COUNT(sDecorationMainMenuActions));
if (template.width > 18)
- {
template.width = 18;
- }
- *winidx = AddWindow(&template);
+
+ *windowId = AddWindow(&template);
}
else
{
- *winidx = AddWindow(&gUnknown_085A6B90[idx]);
+ *windowId = AddWindow(&sDecorationWindowTemplates[windowIndex]);
}
- DrawStdFrameWithCustomTileAndPalette(*winidx, 0, 0x214, 0xe);
+
+ DrawStdFrameWithCustomTileAndPalette(*windowId, FALSE, 0x214, 14);
schedule_bg_copy_tilemap_to_vram(0);
- return *winidx;
+ return *windowId;
}
-void sub_8126A58(u8 idx)
+static void RemoveDecorationWindow(u8 windowIndex)
{
- ClearStdWindowAndFrameToTransparent(sDecorMenuWindowIndices[idx], FALSE);
- ClearWindowTilemap(sDecorMenuWindowIndices[idx]);
- RemoveWindow(sDecorMenuWindowIndices[idx]);
+ ClearStdWindowAndFrameToTransparent(sDecorMenuWindowIds[windowIndex], FALSE);
+ ClearWindowTilemap(sDecorMenuWindowIds[windowIndex]);
+ RemoveWindow(sDecorMenuWindowIds[windowIndex]);
schedule_bg_copy_tilemap_to_vram(0);
}
-void sub_8126A88(void)
+static void AddDecorationActionsWindow(void)
{
- u8 idx;
-
- idx = sub_81269D4(0);
- PrintMenuTable(idx, 4, sSecretBasePCMenuActions);
- InitMenuInUpperLeftCornerPlaySoundWhenAPressed(idx, 4, sSecretBasePCMenuCursorPos);
+ u8 windowId = AddDecorationWindow(0);
+ PrintMenuTable(windowId, 4, sDecorationMainMenuActions);
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, 4, sDecorationActionsCursorPos);
}
-void sub_8126ABC(void)
+static void InitDecorationActionsWindow(void)
{
- sSecretBasePCMenuCursorPos = 0;
+ sDecorationActionsCursorPos = 0;
ScriptContext2_Enable();
- sub_8126A88();
- sub_8126C08();
+ AddDecorationActionsWindow();
+ PrintCurMainMenuDescription();
}
-void sub_8126AD8(u8 taskId)
+void DoSecretBaseDecorationMenu(u8 taskId)
{
- sub_8126ABC();
- gUnknown_0203A17C.items = gSaveBlock1Ptr->secretBases[0].decorations;
- gUnknown_0203A17C.pos = gSaveBlock1Ptr->secretBases[0].decorationPos;
- gUnknown_0203A17C.size = sizeof(gSaveBlock1Ptr->secretBases[0].decorations);
- gUnknown_0203A17C.isPlayerRoom = FALSE;
- gTasks[taskId].func = sub_8126B80;
+ InitDecorationActionsWindow();
+ gDecorationContext.items = gSaveBlock1Ptr->secretBases[0].decorations;
+ gDecorationContext.pos = gSaveBlock1Ptr->secretBases[0].decorationPositions;
+ gDecorationContext.size = sizeof(gSaveBlock1Ptr->secretBases[0].decorations);
+ gDecorationContext.isPlayerRoom = FALSE;
+ gTasks[taskId].func = HandleDecorationActionsMenuInput;
}
-void sub_8126B2C(u8 taskId)
+void DoPlayerRoomDecorationMenu(u8 taskId)
{
- sub_8126ABC();
- gUnknown_0203A17C.items = gSaveBlock1Ptr->playerRoomDecor;
- gUnknown_0203A17C.pos = gSaveBlock1Ptr->playerRoomDecorPos;
- gUnknown_0203A17C.size = sizeof(gSaveBlock1Ptr->playerRoomDecor);
- gUnknown_0203A17C.isPlayerRoom = TRUE;
- gTasks[taskId].func = sub_8126B80;
+ InitDecorationActionsWindow();
+ gDecorationContext.items = gSaveBlock1Ptr->playerRoomDecor;
+ gDecorationContext.pos = gSaveBlock1Ptr->playerRoomDecorPos;
+ gDecorationContext.size = sizeof(gSaveBlock1Ptr->playerRoomDecor);
+ gDecorationContext.isPlayerRoom = TRUE;
+ gTasks[taskId].func = HandleDecorationActionsMenuInput;
}
-void sub_8126B80(u8 taskId)
+static void HandleDecorationActionsMenuInput(u8 taskId)
{
- u8 menuPos;
-
if (!gPaletteFade.active)
{
- menuPos = Menu_GetCursorPos();
+ s8 menuPos = Menu_GetCursorPos();
switch (Menu_ProcessInput())
{
- default:
- PlaySE(SE_SELECT);
- sSecretBasePCMenuActions[sSecretBasePCMenuCursorPos].func.void_u8(taskId);
- break;
- case MENU_NOTHING_CHOSEN:
- sSecretBasePCMenuCursorPos = Menu_GetCursorPos();
- if ((s8)menuPos != sSecretBasePCMenuCursorPos)
- {
- sub_8126C08();
- }
- break;
- case MENU_B_PRESSED:
- PlaySE(SE_SELECT);
- SecretBasePC_Cancel(taskId);
- break;
+ default:
+ PlaySE(SE_SELECT);
+ sDecorationMainMenuActions[sDecorationActionsCursorPos].func.void_u8(taskId);
+ break;
+ case MENU_NOTHING_CHOSEN:
+ sDecorationActionsCursorPos = Menu_GetCursorPos();
+ if (menuPos != sDecorationActionsCursorPos)
+ PrintCurMainMenuDescription();
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ DecorationMenuAction_Cancel(taskId);
+ break;
}
}
}
-void sub_8126C08(void)
+static void PrintCurMainMenuDescription(void)
{
FillWindowPixelBuffer(0, PIXEL_FILL(1));
- AddTextPrinterParameterized2(0, 1, sSecretBasePCMenuItemDescriptions[sSecretBasePCMenuCursorPos], 0, 0, 2, 1, 3);
+ AddTextPrinterParameterized2(0, 1, sSecretBasePCMenuItemDescriptions[sDecorationActionsCursorPos], 0, 0, 2, 1, 3);
}
-void SecretBasePC_Decorate(u8 taskId)
+static void DecorationMenuAction_Decorate(u8 taskId)
{
- if (CountDecorations() == 0)
+ if (GetNumOwnedDecorations() == 0)
{
StringExpandPlaceholders(gStringVar4, gText_NoDecorations);
- DisplayItemMessageOnField(taskId, gStringVar4, sub_8126DA4);
+ DisplayItemMessageOnField(taskId, gStringVar4, ReturnToDecorationActionsAfterInvalidSelection);
}
else
{
@@ -572,16 +595,16 @@ void SecretBasePC_Decorate(u8 taskId)
}
}
-void SecretBasePC_PutAway(u8 taskId)
+static void DecorationMenuAction_PutAway(u8 taskId)
{
if (!sub_81299AC(taskId))
{
StringExpandPlaceholders(gStringVar4, gText_NoDecorationsInUse);
- DisplayItemMessageOnField(taskId, gStringVar4, sub_8126DA4);
+ DisplayItemMessageOnField(taskId, gStringVar4, ReturnToDecorationActionsAfterInvalidSelection);
}
else
{
- sub_8126A58(0);
+ RemoveDecorationWindow(0);
ClearDialogWindowAndFrame(0, 0);
FadeScreen(1, 0);
gTasks[taskId].data[2] = 0;
@@ -589,12 +612,12 @@ void SecretBasePC_PutAway(u8 taskId)
}
}
-void SecretBasePC_Toss(u8 taskId)
+static void DecorationMenuAction_Toss(u8 taskId)
{
- if (CountDecorations() == 0)
+ if (GetNumOwnedDecorations() == 0)
{
StringExpandPlaceholders(gStringVar4, gText_NoDecorations);
- DisplayItemMessageOnField(taskId, gStringVar4, sub_8126DA4);
+ DisplayItemMessageOnField(taskId, gStringVar4, ReturnToDecorationActionsAfterInvalidSelection);
}
else
{
@@ -604,10 +627,10 @@ void SecretBasePC_Toss(u8 taskId)
}
}
-void SecretBasePC_Cancel(u8 taskId)
+static void DecorationMenuAction_Cancel(u8 taskId)
{
- sub_8126A58(0);
- if (!gUnknown_0203A17C.isPlayerRoom)
+ RemoveDecorationWindow(0);
+ if (!gDecorationContext.isPlayerRoom)
{
ScriptContext1_SetupScript(gUnknown_0823B4E8);
DestroyTask(taskId);
@@ -618,260 +641,237 @@ void SecretBasePC_Cancel(u8 taskId)
}
}
-void sub_8126DA4(u8 taskId)
+static void ReturnToDecorationActionsAfterInvalidSelection(u8 taskId)
{
- sub_8126C08();
- gTasks[taskId].func = sub_8126B80;
+ PrintCurMainMenuDescription();
+ gTasks[taskId].func = HandleDecorationActionsMenuInput;
}
-void SecretBasePC_PrepMenuForSelectingStoredDecors(u8 taskId)
+static void SecretBasePC_PrepMenuForSelectingStoredDecors(u8 taskId)
{
- LoadPalette(gUnknown_085A6BB0, 0xd0, 0x20);
+ LoadPalette(sDecorationMenuPalette, 0xd0, 0x20);
ClearDialogWindowAndFrame(0, 0);
- sub_8126A58(0);
- sub_8126DFC(taskId);
+ RemoveDecorationWindow(0);
+ InitDecorationCategoriesWindow(taskId);
}
-void sub_8126DFC(u8 taskId)
+static void InitDecorationCategoriesWindow(u8 taskId)
{
- u8 winIdx;
-
- winIdx = sub_81269D4(1);
- sub_8126E8C(taskId);
- InitMenuInUpperLeftCornerPlaySoundWhenAPressed(winIdx, 9, sCurDecorationCategory);
- gTasks[taskId].func = sub_8127088;
+ u8 windowId = AddDecorationWindow(1);
+ PrintDecorationCategoryMenuItems(taskId);
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, DECORCAT_COUNT + 1, sCurDecorationCategory);
+ gTasks[taskId].func = HandleDecorationCategoriesMenuInput;
}
-void sub_8126E44(u8 taskId)
+static void sub_8126E44(u8 taskId)
{
- FillWindowPixelBuffer(sDecorMenuWindowIndices[1], PIXEL_FILL(1));
- sub_8126E8C(taskId);
- InitMenuInUpperLeftCornerPlaySoundWhenAPressed(sDecorMenuWindowIndices[1], 9, sCurDecorationCategory);
- gTasks[taskId].func = sub_8127088;
+ FillWindowPixelBuffer(sDecorMenuWindowIds[1], PIXEL_FILL(1));
+ PrintDecorationCategoryMenuItems(taskId);
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(sDecorMenuWindowIds[1], DECORCAT_COUNT + 1, sCurDecorationCategory);
+ gTasks[taskId].func = HandleDecorationCategoriesMenuInput;
}
-void sub_8126E8C(u8 taskId)
+static void PrintDecorationCategoryMenuItems(u8 taskId)
{
- s16 *data;
- u8 r5;
- bool8 r8;
u8 i;
- bool8 fl;
-
- data = gTasks[taskId].data;
- r5 = sDecorMenuWindowIndices[1];
- fl = gUnknown_0203A17C.isPlayerRoom;
- r8 = FALSE;
- if (fl == TRUE && data[11] == 0)
- {
- r8 = TRUE;
- }
- for (i = 0; i < 8; i ++)
- {
- if (r8 == TRUE && i != DECORCAT_DOLL && i != DECORCAT_CUSHION)
- {
- sub_8126F68(r5, i, 8, i << 4, TRUE, 0xFF);
- }
+ s16 *data = gTasks[taskId].data;
+ u8 windowId = sDecorMenuWindowIds[1];
+ bool8 isPlayerRoom = gDecorationContext.isPlayerRoom;
+ bool8 shouldDisable = FALSE;
+ if (isPlayerRoom == TRUE && data[11] == 0)
+ shouldDisable = TRUE;
+
+ for (i = 0; i < DECORCAT_COUNT; i++)
+ {
+ // Only DOLL and CUSHION decorations are enabled when decorating the player's room.
+ if (shouldDisable == TRUE && i != DECORCAT_DOLL && i != DECORCAT_CUSHION)
+ PrintDecorationCategoryMenuItem(windowId, i, 8, i * 16, TRUE, TEXT_SPEED_FF);
else
- {
- sub_8126F68(r5, i, 8, i << 4, FALSE, 0xFF);
- }
+ PrintDecorationCategoryMenuItem(windowId, i, 8, i * 16, FALSE, TEXT_SPEED_FF);
}
- AddTextPrinterParameterized(r5, 1, gTasks[taskId].data[11] == 2 ? gText_Exit : gText_Cancel, 8, (i << 4) + 1, 0, 0);
+
+ AddTextPrinterParameterized(windowId, 1, gTasks[taskId].data[11] == 2 ? gText_Exit : gText_Cancel, 8, i * 16 + 1, 0, NULL);
schedule_bg_copy_tilemap_to_vram(0);
}
-void sub_8126F68(u8 winid, u8 decorCat, u8 x, u8 y, bool8 flag, u8 speed)
+static void PrintDecorationCategoryMenuItem(u8 winid, u8 category, u8 x, u8 y, bool8 disabled, u8 speed)
{
u8 width;
- u8 *strbuf;
+ u8 *str;
- width = x == 8 ? 0x68 : 0x60;
- y ++;
- sub_8127058(gStringVar4, flag);
- strbuf = StringLength(gStringVar4) + gStringVar4;
- StringCopy(strbuf, sDecorCatNames[decorCat]);
+ width = x == 8 ? 104 : 96;
+ y++;
+ ColorMenuItemString(gStringVar4, disabled);
+ str = StringLength(gStringVar4) + gStringVar4;
+ StringCopy(str, sDecorationCategoryNames[category]);
AddTextPrinterParameterized(winid, 1, gStringVar4, x, y, speed, NULL);
- strbuf = ConvertIntToDecimalStringN(strbuf, CountDecorationCategoryN(decorCat), STR_CONV_MODE_RIGHT_ALIGN, 2);
- *strbuf++ = CHAR_SLASH;
- ConvertIntToDecimalStringN(strbuf, gDecorationInventories[decorCat].size, STR_CONV_MODE_RIGHT_ALIGN, 2);
+ str = ConvertIntToDecimalStringN(str, GetNumOwnedDecorationsInCategory(category), STR_CONV_MODE_RIGHT_ALIGN, 2);
+ *(str++) = CHAR_SLASH;
+ ConvertIntToDecimalStringN(str, gDecorationInventories[category].size, STR_CONV_MODE_RIGHT_ALIGN, 2);
x = GetStringRightAlignXOffset(1, gStringVar4, width);
AddTextPrinterParameterized(winid, 1, gStringVar4, x, y, speed, NULL);
}
-void sub_8127058(u8 *str, bool8 flag)
+static void ColorMenuItemString(u8 *str, bool8 disabled)
{
StringCopy(str, gText_Color161Shadow161);
- if (flag == TRUE)
+ if (disabled == TRUE)
{
- str[2] = 0x04; // RED
- str[5] = 0x05; // LIGHT_RED
+ str[2] = 4;
+ str[5] = 5;
}
else
{
- str[2] = 0x02; // DARK_GREY
- str[5] = 0x03; // LIGHT_GREY
+ str[2] = 2;
+ str[5] = 3;
}
}
-void sub_8127088(u8 taskId)
+static void HandleDecorationCategoriesMenuInput(u8 taskId)
{
- s8 input;
-
if (!gPaletteFade.active)
{
- input = Menu_ProcessInput();
+ s8 input = Menu_ProcessInput();
switch (input)
{
- case MENU_B_PRESSED:
- case 8:
- PlaySE(SE_SELECT);
- sub_812719C(taskId);
- break;
- case MENU_NOTHING_CHOSEN:
- break;
- default:
- PlaySE(SE_SELECT);
- sCurDecorationCategory = input;
- sub_81270E8(taskId);
- break;
+ case MENU_B_PRESSED:
+ case DECORCAT_COUNT: // CANCEL
+ PlaySE(SE_SELECT);
+ ExitDecorationCategoriesMenu(taskId);
+ break;
+ case MENU_NOTHING_CHOSEN:
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ sCurDecorationCategory = input;
+ SelectDecorationCategory(taskId);
+ break;
}
}
}
-void sub_81270E8(u8 taskId)
+static void SelectDecorationCategory(u8 taskId)
{
- sCurDecorCatCount = CountDecorationCategoryN(sCurDecorationCategory);
- if (sCurDecorCatCount != 0)
+ sNumOwnedDecorationsInCurCategory = GetNumOwnedDecorationsInCategory(sCurDecorationCategory);
+ if (sNumOwnedDecorationsInCurCategory != 0)
{
- CondenseDecorationCategoryN(sCurDecorationCategory);
- gCurDecorInventoryItems = gDecorationInventories[sCurDecorationCategory].items;
+ CondenseDecorationsInCategory(sCurDecorationCategory);
+ gCurDecorationItems = gDecorationInventories[sCurDecorationCategory].items;
IdentifyOwnedDecorationsCurrentlyInUse(taskId);
- sSecretBasePCSelectDecorPageNo = 0;
- sSecretBasePCSelectDecorLineNo = 0;
- gTasks[taskId].func = sub_8127620;
+ sDecorationsScrollOffset = 0;
+ sDecorationsCursorPos = 0;
+ gTasks[taskId].func = ShowDecorationItemsWindow;
}
else
{
- sub_8126A58(1);
+ RemoveDecorationWindow(1);
StringExpandPlaceholders(gStringVar4, gText_NoDecorations);
- DisplayItemMessageOnField(taskId, gStringVar4, sub_8127180);
+ DisplayItemMessageOnField(taskId, gStringVar4, ReturnToDecorationCategoriesAfterInvalidSelection);
}
}
-void sub_8127180(u8 taskId)
+static void ReturnToDecorationCategoriesAfterInvalidSelection(u8 taskId)
{
ClearDialogWindowAndFrame(0, 0);
- sub_8126DFC(taskId);
+ InitDecorationCategoriesWindow(taskId);
}
-void sub_812719C(u8 taskId)
+static void ExitDecorationCategoriesMenu(u8 taskId)
{
if (gTasks[taskId].data[11] != 2)
- {
- sub_81271CC(taskId);
- }
+ ReturnToActionsMenuFromCategories(taskId);
else
- {
- sub_8127268(taskId);
- }
+ ExitTraderDecorationMenu(taskId);
}
-void sub_81271CC(u8 taskId)
+static void ReturnToActionsMenuFromCategories(u8 taskId)
{
- sub_8126A58(1);
- sub_8126A88();
+ RemoveDecorationWindow(1);
+ AddDecorationActionsWindow();
DrawDialogueFrame(0, 0);
- sub_8126C08();
- gTasks[taskId].func = sub_8126B80;
+ PrintCurMainMenuDescription();
+ gTasks[taskId].func = HandleDecorationActionsMenuInput;
}
-void sub_8127208(u8 taskId)
+void ShowDecorationCategoriesWindow(u8 taskId)
{
- LoadPalette(gUnknown_085A6BB0, 0xd0, 0x20);
+ LoadPalette(sDecorationMenuPalette, 0xd0, 0x20);
ClearDialogWindowAndFrame(0, 0);
gTasks[taskId].data[11] = 2;
sCurDecorationCategory = DECORCAT_DESK;
- sub_8126DFC(taskId);
+ InitDecorationCategoriesWindow(taskId);
}
-void sub_8127250(u8 *dest, u8 decorCat)
+void CopyDecorationCategoryName(u8 *dest, u8 category)
{
- StringCopy(dest, sDecorCatNames[decorCat]);
+ StringCopy(dest, sDecorationCategoryNames[category]);
}
-void sub_8127268(u8 taskId)
+static void ExitTraderDecorationMenu(u8 taskId)
{
- sub_8126A58(1);
- sub_8133E1C(taskId);
+ RemoveDecorationWindow(1);
+ ExitTraderMenu(taskId);
}
-void sub_8127284(void)
+static void InitDecorationItemsMenuLimits(void)
{
- sDecorPCBuffer->unk_520 = sCurDecorCatCount + 1;
- if (sDecorPCBuffer->unk_520 > 8)
- {
- sDecorPCBuffer->unk_521 = 8;
- }
+ sDecorationItemsMenu->numMenuItems = sNumOwnedDecorationsInCurCategory + 1;
+ if (sDecorationItemsMenu->numMenuItems > 8)
+ sDecorationItemsMenu->maxShownItems = 8;
else
- {
- sDecorPCBuffer->unk_521 = sDecorPCBuffer->unk_520;
- }
+ sDecorationItemsMenu->maxShownItems = sDecorationItemsMenu->numMenuItems;
}
-void sub_81272C8(void)
+static void sub_81272C8(void)
{
- sub_812225C(&sSecretBasePCSelectDecorPageNo, &sSecretBasePCSelectDecorLineNo, sDecorPCBuffer->unk_521, sDecorPCBuffer->unk_520);
+ sub_812225C(&sDecorationsScrollOffset, &sDecorationsCursorPos, sDecorationItemsMenu->maxShownItems, sDecorationItemsMenu->numMenuItems);
}
-void sub_81272F8(void)
+static void sub_81272F8(void)
{
- sub_8122298(&sSecretBasePCSelectDecorPageNo, &sSecretBasePCSelectDecorLineNo, sDecorPCBuffer->unk_521, sDecorPCBuffer->unk_520, 8);
+ sub_8122298(&sDecorationsScrollOffset, &sDecorationsCursorPos, sDecorationItemsMenu->maxShownItems, sDecorationItemsMenu->numMenuItems, 8);
}
-void sub_8127330(u8 taskId)
+static void PrintDecorationItemMenuItems(u8 taskId)
{
s16 *data;
u16 i;
data = gTasks[taskId].data;
- if ((sCurDecorationCategory < DECORCAT_DOLL || sCurDecorationCategory > DECORCAT_CUSHION) && gUnknown_0203A17C.isPlayerRoom == TRUE && data[11] == 0)
- {
- sub_8127058(gStringVar1, TRUE);
- }
+ if ((sCurDecorationCategory < DECORCAT_DOLL || sCurDecorationCategory > DECORCAT_CUSHION) && gDecorationContext.isPlayerRoom == TRUE && data[11] == 0)
+ ColorMenuItemString(gStringVar1, TRUE);
else
+ ColorMenuItemString(gStringVar1, FALSE);
+
+ for (i = 0; i < sDecorationItemsMenu->numMenuItems - 1; i++)
{
- sub_8127058(gStringVar1, FALSE);
- }
- for (i = 0; i < sDecorPCBuffer->unk_520 - 1; i ++)
- {
- sub_8127454(sDecorPCBuffer->names[i], gCurDecorInventoryItems[i]);
- sDecorPCBuffer->items[i].name = sDecorPCBuffer->names[i];
- sDecorPCBuffer->items[i].id = i;
+ CopyDecorationMenuItemName(sDecorationItemsMenu->names[i], gCurDecorationItems[i]);
+ sDecorationItemsMenu->items[i].name = sDecorationItemsMenu->names[i];
+ sDecorationItemsMenu->items[i].id = i;
}
- StringCopy(sDecorPCBuffer->names[i], gText_Cancel);
- sDecorPCBuffer->items[i].name = sDecorPCBuffer->names[i];
- sDecorPCBuffer->items[i].id = -2;
- gMultiuseListMenuTemplate = gUnknown_085A6BD0;
- gMultiuseListMenuTemplate.windowId = sDecorMenuWindowIndices[1];
- gMultiuseListMenuTemplate.totalItems = sDecorPCBuffer->unk_520;
- gMultiuseListMenuTemplate.items = sDecorPCBuffer->items;
- gMultiuseListMenuTemplate.maxShowed = sDecorPCBuffer->unk_521;
+
+ StringCopy(sDecorationItemsMenu->names[i], gText_Cancel);
+ sDecorationItemsMenu->items[i].name = sDecorationItemsMenu->names[i];
+ sDecorationItemsMenu->items[i].id = -2;
+ gMultiuseListMenuTemplate = sDecorationItemsListMenuTemplate;
+ gMultiuseListMenuTemplate.windowId = sDecorMenuWindowIds[1];
+ gMultiuseListMenuTemplate.totalItems = sDecorationItemsMenu->numMenuItems;
+ gMultiuseListMenuTemplate.items = sDecorationItemsMenu->items;
+ gMultiuseListMenuTemplate.maxShowed = sDecorationItemsMenu->maxShownItems;
}
-void sub_8127454(u8 *dest, u16 decorId)
+static void CopyDecorationMenuItemName(u8 *dest, u16 decoration)
{
StringCopy(dest, gStringVar1);
- StringAppend(dest, gDecorations[decorId].name);
+ StringAppend(dest, gDecorations[decoration].name);
}
-void sub_8127480(s32 a0, bool8 flag, struct ListMenu *menu)
+static void DecorationItemsMenu_OnCursorMove(s32 itemIndex, bool8 flag, struct ListMenu *menu)
{
if (flag != TRUE)
- {
PlaySE(SE_SELECT);
- }
- sub_8127744(a0);
+
+ PrintDecorationItemDescription(itemIndex);
}
void sub_81274A0(u8 a0, s32 a1, u8 a2)
@@ -889,53 +889,59 @@ void sub_81274A0(u8 a0, s32 a1, u8 a2)
}
}
-void sub_8127500(void)
+static void AddDecorationItemsScrollIndicators(void)
{
- if (sDecorPCBuffer->unk_522 == 0xFF)
+ if (sDecorationItemsMenu->scrollIndicatorsTaskId == 0xFF)
{
- sDecorPCBuffer->unk_522 = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0x3c, 0x0c, 0x94, sDecorPCBuffer->unk_520 - sDecorPCBuffer->unk_521, 0x6e, 0x6e, &sSecretBasePCSelectDecorPageNo);
+ sDecorationItemsMenu->scrollIndicatorsTaskId = AddScrollIndicatorArrowPairParameterized(
+ SCROLL_ARROW_UP,
+ 0x3c,
+ 0x0c,
+ 0x94,
+ sDecorationItemsMenu->numMenuItems - sDecorationItemsMenu->maxShownItems,
+ 0x6e,
+ 0x6e,
+ &sDecorationsScrollOffset);
}
}
-void sub_8127554(void)
+static void RemoveDecorationItemsScrollIndicators(void)
{
- if (sDecorPCBuffer->unk_522 != 0xFF)
+ if (sDecorationItemsMenu->scrollIndicatorsTaskId != 0xFF)
{
- RemoveScrollIndicatorArrowPair(sDecorPCBuffer->unk_522);
- sDecorPCBuffer->unk_522 = 0xFF;
+ RemoveScrollIndicatorArrowPair(sDecorationItemsMenu->scrollIndicatorsTaskId);
+ sDecorationItemsMenu->scrollIndicatorsTaskId = 0xFF;
}
}
void sub_8127580(u8 taskId)
{
- sub_81269D4(1);
- sub_812759C(taskId);
+ AddDecorationWindow(1);
+ InitDecorationItemsWindow(taskId);
}
-void sub_812759C(u8 taskId)
+static void InitDecorationItemsWindow(u8 taskId)
{
- s16 *data;
-
- data = gTasks[taskId].data;
- sub_81269D4(3);
- sub_8127718(sCurDecorationCategory);
- sDecorPCBuffer = calloc(1, sizeof(struct DecorPCBuffer));
- sDecorPCBuffer->unk_522 = 0xFF;
- sub_8127284();
+ s16 *data = gTasks[taskId].data;
+ AddDecorationWindow(3);
+ ShowDecorationCategorySummaryWindow(sCurDecorationCategory);
+ sDecorationItemsMenu = AllocZeroed(sizeof(*sDecorationItemsMenu));
+ sDecorationItemsMenu->scrollIndicatorsTaskId = 0xFF;
+ InitDecorationItemsMenuLimits();
sub_81272C8();
sub_81272F8();
- sub_8127330(taskId);
- data[13] = ListMenuInit(&gMultiuseListMenuTemplate, sSecretBasePCSelectDecorPageNo, sSecretBasePCSelectDecorLineNo);
- sub_8127500();
+ PrintDecorationItemMenuItems(taskId);
+ data[13] = ListMenuInit(&gMultiuseListMenuTemplate, sDecorationsScrollOffset, sDecorationsCursorPos);
+ AddDecorationItemsScrollIndicators();
}
-void sub_8127620(u8 taskId)
+static void ShowDecorationItemsWindow(u8 taskId)
{
- sub_812759C(taskId);
- gTasks[taskId].func = sub_812764C;
+ InitDecorationItemsWindow(taskId);
+ gTasks[taskId].func = HandleDecorationItemsMenuInput;
}
-void sub_812764C(u8 taskId)
+static void HandleDecorationItemsMenuInput(u8 taskId)
{
s16 *data;
s32 input;
@@ -944,129 +950,125 @@ void sub_812764C(u8 taskId)
if (!gPaletteFade.active)
{
input = ListMenu_ProcessInput(data[13]);
- ListMenuGetScrollAndRow(data[13], &sSecretBasePCSelectDecorPageNo, &sSecretBasePCSelectDecorLineNo);
+ ListMenuGetScrollAndRow(data[13], &sDecorationsScrollOffset, &sDecorationsCursorPos);
switch (input)
{
- case LIST_NOTHING_CHOSEN:
- break;
- case LIST_CANCEL:
- PlaySE(SE_SELECT);
- SecretBasePC_SelectedDecorActions[data[11]][1](taskId);
- break;
- default:
- PlaySE(SE_SELECT);
- gCurDecorationIndex = input;
- sub_8127554();
- DestroyListMenuTask(data[13], &sSecretBasePCSelectDecorPageNo, &sSecretBasePCSelectDecorLineNo);
- sub_8126A58(1);
- sub_81277A8();
- free(sDecorPCBuffer);
- SecretBasePC_SelectedDecorActions[data[11]][0](taskId);
- break;
+ case LIST_NOTHING_CHOSEN:
+ break;
+ case LIST_CANCEL:
+ PlaySE(SE_SELECT);
+ sSecretBasePC_SelectedDecorationActions[data[11]][1](taskId);
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ gCurDecorationIndex = input;
+ RemoveDecorationItemsScrollIndicators();
+ DestroyListMenuTask(data[13], &sDecorationsScrollOffset, &sDecorationsCursorPos);
+ RemoveDecorationWindow(1);
+ RemoveDecorationItemsOtherWindows();
+ free(sDecorationItemsMenu);
+ sSecretBasePC_SelectedDecorationActions[data[11]][0](taskId);
+ break;
}
}
}
-void sub_8127718(u8 decorCat)
+static void ShowDecorationCategorySummaryWindow(u8 category)
{
- sub_8126F68(sub_81269D4(2), decorCat, 0, 0, 0, 0);
+ PrintDecorationCategoryMenuItem(AddDecorationWindow(2), category, 0, 0, 0, 0);
}
-void sub_8127744(u32 a0)
+static void PrintDecorationItemDescription(u32 itemIndex)
{
- u8 winidx;
- const u8 *txt;
+ u8 windowId;
+ const u8 *str;
- winidx = sDecorMenuWindowIndices[3];
- FillWindowPixelBuffer(winidx, PIXEL_FILL(1));
- if (a0 >= sCurDecorCatCount)
- {
- txt = gText_GoBackPrevMenu;
- }
+ windowId = sDecorMenuWindowIds[3];
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ if (itemIndex >= sNumOwnedDecorationsInCurCategory)
+ str = gText_GoBackPrevMenu;
else
- {
- txt = gDecorations[gCurDecorInventoryItems[a0]].description;
- }
- AddTextPrinterParameterized(winidx, 1, txt, 0, 1, 0, 0);
+ str = gDecorations[gCurDecorationItems[itemIndex]].description;
+
+ AddTextPrinterParameterized(windowId, 1, str, 0, 1, 0, 0);
}
-void sub_81277A8(void)
+static void RemoveDecorationItemsOtherWindows(void)
{
- sub_8126A58(3);
- sub_8126A58(2);
+ // Remove description and category summary windows
+ RemoveDecorationWindow(3);
+ RemoveDecorationWindow(2);
}
bool8 sub_81277BC(u8 idx)
{
u8 i;
-
- for (i = 0; i < 16; i ++)
+ for (i = 0; i < ARRAY_COUNT(sSecretBaseItemsIndicesBuffer); i++)
{
if (sSecretBaseItemsIndicesBuffer[i] == idx)
- {
return TRUE;
- }
}
+
return FALSE;
}
bool8 sub_81277E8(u8 idx)
{
u8 i;
-
- for (i = 0; i < 12; i ++)
+ for (i = 0; i < ARRAY_COUNT(sPlayerRoomItemsIndicesBuffer); i++)
{
if (sPlayerRoomItemsIndicesBuffer[i] == idx)
- {
return TRUE;
- }
}
+
return FALSE;
}
-void IdentifyOwnedDecorationsCurrentlyInUseInternal(u8 taskId)
+static void IdentifyOwnedDecorationsCurrentlyInUseInternal(u8 taskId)
{
- u16 i;
- u16 j;
- u16 k;
- u16 cnt;
+ u16 i, j, k;
+ u16 count;
+
+ count = 0;
+ memset(sSecretBaseItemsIndicesBuffer, 0, sizeof(sSecretBaseItemsIndicesBuffer));
+ memset(sPlayerRoomItemsIndicesBuffer, 0, sizeof(sPlayerRoomItemsIndicesBuffer));
- cnt = 0;
- memset(sSecretBaseItemsIndicesBuffer, 0, 16);
- memset(sPlayerRoomItemsIndicesBuffer, 0, 12);
- for (i = 0; i < 16; i ++)
+ for (i = 0; i < ARRAY_COUNT(sSecretBaseItemsIndicesBuffer); i++)
{
if (gSaveBlock1Ptr->secretBases[0].decorations[i] != DECOR_NONE)
{
- for (j = 0; j < gDecorationInventories[sCurDecorationCategory].size; j ++)
+ for (j = 0; j < gDecorationInventories[sCurDecorationCategory].size; j++)
{
- if (gCurDecorInventoryItems[j] == gSaveBlock1Ptr->secretBases[0].decorations[i])
+ if (gCurDecorationItems[j] == gSaveBlock1Ptr->secretBases[0].decorations[i])
{
- for (k = 0; k < cnt && sSecretBaseItemsIndicesBuffer[k] != j + 1; k ++);
- if (k == cnt)
+ for (k = 0; k < count && sSecretBaseItemsIndicesBuffer[k] != j + 1; k++)
+ ;
+
+ if (k == count)
{
- sSecretBaseItemsIndicesBuffer[cnt] = j + 1;
- cnt ++;
+ sSecretBaseItemsIndicesBuffer[count] = j + 1;
+ count++;
break;
}
}
}
}
}
- cnt = 0;
- for (i = 0; i < 12; i ++)
+
+ count = 0;
+ for (i = 0; i < ARRAY_COUNT(sPlayerRoomItemsIndicesBuffer); i++)
{
if (gSaveBlock1Ptr->playerRoomDecor[i] != DECOR_NONE)
{
- for (j = 0; j < gDecorationInventories[sCurDecorationCategory].size; j ++)
+ for (j = 0; j < gDecorationInventories[sCurDecorationCategory].size; j++)
{
- if (gCurDecorInventoryItems[j] == gSaveBlock1Ptr->playerRoomDecor[i] && sub_81277BC(j + 1) != TRUE)
+ if (gCurDecorationItems[j] == gSaveBlock1Ptr->playerRoomDecor[i] && sub_81277BC(j + 1) != TRUE)
{
- for (k = 0; k < cnt && sPlayerRoomItemsIndicesBuffer[k] != j + 1; k ++);
- if (k == cnt)
+ for (k = 0; k < count && sPlayerRoomItemsIndicesBuffer[k] != j + 1; k++);
+ if (k == count)
{
- sPlayerRoomItemsIndicesBuffer[cnt] = j + 1;
- cnt ++;
+ sPlayerRoomItemsIndicesBuffer[count] = j + 1;
+ count++;
break;
}
}
@@ -1075,7 +1077,7 @@ void IdentifyOwnedDecorationsCurrentlyInUseInternal(u8 taskId)
}
}
-void IdentifyOwnedDecorationsCurrentlyInUse(u8 taskId)
+static void IdentifyOwnedDecorationsCurrentlyInUse(u8 taskId)
{
IdentifyOwnedDecorationsCurrentlyInUseInternal(taskId);
}
@@ -1083,24 +1085,25 @@ void IdentifyOwnedDecorationsCurrentlyInUse(u8 taskId)
bool8 IsSelectedDecorInThePC(void)
{
u16 i;
- for (i = 0; i < 16; i ++)
+ for (i = 0; i < ARRAY_COUNT(sSecretBaseItemsIndicesBuffer); i++)
{
- if (sSecretBaseItemsIndicesBuffer[i] == sSecretBasePCSelectDecorPageNo + sSecretBasePCSelectDecorLineNo + 1)
- {
+ if (sSecretBaseItemsIndicesBuffer[i] == sDecorationsScrollOffset + sDecorationsCursorPos + 1)
return FALSE;
- }
- if (i < 12 && sPlayerRoomItemsIndicesBuffer[i] == sSecretBasePCSelectDecorPageNo + sSecretBasePCSelectDecorLineNo + 1)
+
+ if (i < ARRAY_COUNT(sPlayerRoomItemsIndicesBuffer)
+ && sPlayerRoomItemsIndicesBuffer[i] == sDecorationsScrollOffset + sDecorationsCursorPos + 1)
{
return FALSE;
}
}
+
return TRUE;
}
-void sub_8127A14(u8 taskId)
+static void sub_8127A14(u8 taskId)
{
- sub_81269D4(1);
- sub_8127620(taskId);
+ AddDecorationWindow(1);
+ ShowDecorationItemsWindow(taskId);
}
void sub_8127A30(u8 taskId)
@@ -1114,20 +1117,18 @@ void sub_8127A5C(u8 taskId)
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
ClearDialogWindowAndFrame(0, 0);
- sub_81269D4(1);
- sub_8127620(taskId);
+ AddDecorationWindow(1);
+ ShowDecorationItemsWindow(taskId);
}
}
void sub_8127A8C(u8 taskId)
{
- s16 *data;
-
- data = gTasks[taskId].data;
- sub_8127554();
- sub_81277A8();
+ s16 *data = gTasks[taskId].data;
+ RemoveDecorationItemsScrollIndicators();
+ RemoveDecorationItemsOtherWindows();
DestroyListMenuTask(data[13], NULL, NULL);
- free(sDecorPCBuffer);
+ free(sDecorationItemsMenu);
sub_8126E44(taskId);
}
@@ -1145,105 +1146,91 @@ void sub_8127B04(u8 taskId)
WarpIntoMap();
}
-u16 sub_8127B54(u8 decor, u8 a1)
+static u16 GetDecorationElevation(u8 decoration, u8 tileIndex)
{
- u16 resp;
-
- resp = -1;
- switch (decor)
+ u16 elevation = -1;
+ switch (decoration)
{
- case DECOR_STAND:
- resp = gUnknown_085A72E4[a1] << 12;
- return resp;
- case DECOR_SLIDE:
- resp = gUnknown_085A72EC[a1] << 12;
- return resp;
- default:
- return resp;
+ case DECOR_STAND:
+ elevation = sDecorationStandElevations[tileIndex] << 12;
+ return elevation;
+ case DECOR_SLIDE:
+ elevation = sDecorationSlideElevation[tileIndex] << 12;
+ return elevation;
+ default:
+ return elevation;
}
}
-void sub_8127B90(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decor)
+static void ShowDecorationOnMap_(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decoration)
{
- u16 i;
- u16 j;
+ u16 i, j;
+ s16 x, y;
u16 behavior;
u16 impassableFlag;
- u16 v0;
- u16 v1;
- s16 decLeft;
- s16 decBottom;
+ u16 posterSide;
+ u16 elevation;
- for (i = 0; i < decHeight; i ++)
+ for (j = 0; j < decHeight; j++)
{
- decBottom = mapY - decHeight + 1 + i;
- for (j = 0; j < decWidth; j ++)
+ y = mapY - decHeight + 1 + j;
+ for (i = 0; i < decWidth; i++)
{
- decLeft = mapX + j;
- behavior = GetBehaviorByMetatileId(0x200 + gDecorations[decor].tiles[i * decWidth + j]);
- if (MetatileBehavior_IsSecretBaseImpassable(behavior) == TRUE || (gDecorations[decor].permission != DECORPERM_PASS_FLOOR && (behavior >> 12)))
- {
+ x = mapX + i;
+ behavior = GetBehaviorByMetatileId(0x200 + gDecorations[decoration].tiles[j * decWidth + i]);
+ if (MetatileBehavior_IsSecretBaseImpassable(behavior) == TRUE || (gDecorations[decoration].permission != DECORPERM_PASS_FLOOR && (behavior >> 12)))
impassableFlag = METATILE_COLLISION_MASK;
- }
else
- {
- impassableFlag = 0x000;
- }
- if (gDecorations[decor].permission != DECORPERM_NA_WALL && MetatileBehavior_IsSecretBaseNorthWall(MapGridGetMetatileBehaviorAt(decLeft, decBottom)) == TRUE)
- {
- v0 = 1;
- }
+ impassableFlag = 0;
+
+ if (gDecorations[decoration].permission != DECORPERM_NA_WALL && MetatileBehavior_IsSecretBaseNorthWall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE)
+ posterSide = 1;
else
- {
- v0 = 0;
- }
- v1 = sub_8127B54(gDecorations[decor].id, i * decWidth + j);
- if (v1 != 0xFFFF)
- {
- MapGridSetMetatileEntryAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | impassableFlag | v1);
- }
+ posterSide = 0;
+
+ elevation = GetDecorationElevation(gDecorations[decoration].id, j * decWidth + i);
+ if (elevation != 0xFFFF)
+ MapGridSetMetatileEntryAt(x, y, (gDecorations[decoration].tiles[j * decWidth + i] + (0x200 | posterSide)) | impassableFlag | elevation);
else
- {
- MapGridSetMetatileIdAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | impassableFlag);
- }
+ MapGridSetMetatileIdAt(x, y, (gDecorations[decoration].tiles[j * decWidth + i] + (0x200 | posterSide)) | impassableFlag);
}
}
}
-void sub_8127D38(u16 mapX, u16 mapY, u16 decor)
-{
- switch (gDecorations[decor].shape)
- {
- case DECORSHAPE_1x1:
- sub_8127B90(mapX, mapY, 1, 1, decor);
- break;
- case DECORSHAPE_2x1:
- sub_8127B90(mapX, mapY, 2, 1, decor);
- break;
- case DECORSHAPE_3x1: // unused
- sub_8127B90(mapX, mapY, 3, 1, decor);
- break;
- case DECORSHAPE_4x2:
- sub_8127B90(mapX, mapY, 4, 2, decor);
- break;
- case DECORSHAPE_2x2:
- sub_8127B90(mapX, mapY, 2, 2, decor);
- break;
- case DECORSHAPE_1x2:
- sub_8127B90(mapX, mapY, 1, 2, decor);
- break;
- case DECORSHAPE_1x3: // unused
- sub_8127B90(mapX, mapY, 1, 3, decor);
- break;
- case DECORSHAPE_2x4:
- sub_8127B90(mapX, mapY, 2, 4, decor);
- break;
- case DECORSHAPE_3x3:
- sub_8127B90(mapX, mapY, 3, 3, decor);
- break;
- case DECORSHAPE_3x2:
- sub_8127B90(mapX, mapY, 3, 2, decor);
- break;
+void ShowDecorationOnMap(u16 mapX, u16 mapY, u16 decoration)
+{
+ switch (gDecorations[decoration].shape)
+ {
+ case DECORSHAPE_1x1:
+ ShowDecorationOnMap_(mapX, mapY, 1, 1, decoration);
+ break;
+ case DECORSHAPE_2x1:
+ ShowDecorationOnMap_(mapX, mapY, 2, 1, decoration);
+ break;
+ case DECORSHAPE_3x1: // unused
+ ShowDecorationOnMap_(mapX, mapY, 3, 1, decoration);
+ break;
+ case DECORSHAPE_4x2:
+ ShowDecorationOnMap_(mapX, mapY, 4, 2, decoration);
+ break;
+ case DECORSHAPE_2x2:
+ ShowDecorationOnMap_(mapX, mapY, 2, 2, decoration);
+ break;
+ case DECORSHAPE_1x2:
+ ShowDecorationOnMap_(mapX, mapY, 1, 2, decoration);
+ break;
+ case DECORSHAPE_1x3: // unused
+ ShowDecorationOnMap_(mapX, mapY, 1, 3, decoration);
+ break;
+ case DECORSHAPE_2x4:
+ ShowDecorationOnMap_(mapX, mapY, 2, 4, decoration);
+ break;
+ case DECORSHAPE_3x3:
+ ShowDecorationOnMap_(mapX, mapY, 3, 3, decoration);
+ break;
+ case DECORSHAPE_3x2:
+ ShowDecorationOnMap_(mapX, mapY, 3, 2, decoration);
+ break;
}
}
@@ -1252,25 +1239,27 @@ void sub_8127E18(void)
u8 i;
u8 j;
- for (i = 0; i < 14; i ++)
+ for (i = 0; i < 14; i++)
{
if (FlagGet(FLAG_DECORATION_1 + i) == TRUE)
{
FlagClear(FLAG_DECORATION_1 + i);
- for (j = 0; j < gMapHeader.events->eventObjectCount; j ++)
+ for (j = 0; j < gMapHeader.events->eventObjectCount; j++)
{
if (gMapHeader.events->eventObjects[j].flagId == FLAG_DECORATION_1 + i)
- {
break;
- }
}
- VarSet(UNKNOWN_VAR_OFFSET_3F20 + gMapHeader.events->eventObjects[j].graphicsId, sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0]);
+
+ VarSet(
+ VAR_OBJ_GFX_ID_0 + (gMapHeader.events->eventObjects[j].graphicsId - EVENT_OBJ_GFX_VAR_0),
+ sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0]);
+
gSpecialVar_0x8005 = gMapHeader.events->eventObjects[j].localId;
gSpecialVar_0x8006 = sCurDecorMapX;
gSpecialVar_0x8007 = sCurDecorMapY;
- show_sprite(gSpecialVar_0x8005, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
- sub_808EBA8(gSpecialVar_0x8005, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007);
- sub_808F254(gSpecialVar_0x8005, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ TrySpawnEventObject(gSpecialVar_0x8005, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ TryMoveEventObjectToMapCoords(gSpecialVar_0x8005, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007);
+ TryOverrideEventObjectTemplateCoords(gSpecialVar_0x8005, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
break;
}
}
@@ -1280,9 +1269,9 @@ bool8 sub_8127F38(void)
{
u16 i;
- for (i = 0; i < gUnknown_0203A17C.size; i ++)
+ for (i = 0; i < gDecorationContext.size; i++)
{
- if (gUnknown_0203A17C.items[i] == DECOR_NONE)
+ if (gDecorationContext.items[i] == DECOR_NONE)
{
return TRUE;
}
@@ -1292,7 +1281,7 @@ bool8 sub_8127F38(void)
void sub_8127F68(u8 taskId)
{
- if (gUnknown_0203A17C.isPlayerRoom == TRUE && sCurDecorationCategory != DECORCAT_DOLL && sCurDecorationCategory != DECORCAT_CUSHION)
+ if (gDecorationContext.isPlayerRoom == TRUE && sCurDecorationCategory != DECORCAT_DOLL && sCurDecorationCategory != DECORCAT_CUSHION)
{
StringExpandPlaceholders(gStringVar4, gText_CantPlaceInRoom);
DisplayItemMessageOnField(taskId, gStringVar4, sub_8127A5C);
@@ -1307,8 +1296,8 @@ void sub_8127F68(u8 taskId)
}
else
{
- ConvertIntToDecimalStringN(gStringVar1, gUnknown_0203A17C.size, STR_CONV_MODE_RIGHT_ALIGN, 2);
- if (gUnknown_0203A17C.isPlayerRoom == FALSE) {
+ ConvertIntToDecimalStringN(gStringVar1, gDecorationContext.size, STR_CONV_MODE_RIGHT_ALIGN, 2);
+ if (gDecorationContext.isPlayerRoom == FALSE) {
StringExpandPlaceholders(gStringVar4, gText_NoMoreDecorations);
}
else
@@ -1338,7 +1327,7 @@ void sub_8128060(u8 taskId)
break;
case 1:
gPaletteFade.bufferTransferDisabled = TRUE;
- ConfigureCameraObjectForPlacingDecoration(&sPlaceDecorationGraphicsDataBuffer, gCurDecorInventoryItems[gCurDecorationIndex]);
+ ConfigureCameraObjectForPlacingDecoration(&sPlaceDecorationGraphicsDataBuffer, gCurDecorationItems[gCurDecorationIndex]);
sub_812826C(taskId);
SetUpPlacingDecorationPlayerAvatar(taskId, &sPlaceDecorationGraphicsDataBuffer);
pal_fill_black();
@@ -1361,27 +1350,23 @@ void ConfigureCameraObjectForPlacingDecoration(struct PlaceDecorationGraphicsDat
gFieldCamera.spriteId = gpu_pal_decompress_alloc_tag_and_upload(data, decor);
gSprites[gFieldCamera.spriteId].oam.priority = 1;
gSprites[gFieldCamera.spriteId].callback = sub_81292D0;
- gSprites[gFieldCamera.spriteId].pos1.x = gUnknown_085A7250[data->decoration->shape].x;
- gSprites[gFieldCamera.spriteId].pos1.y = gUnknown_085A7250[data->decoration->shape].y;
+ gSprites[gFieldCamera.spriteId].pos1.x = sDecorationMovementInfo[data->decoration->shape].cameraX;
+ gSprites[gFieldCamera.spriteId].pos1.y = sDecorationMovementInfo[data->decoration->shape].cameraY;
}
void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct PlaceDecorationGraphicsDataBuffer *data)
{
- u8 v0;
+ u8 x;
- v0 = 16 * (u8)gTasks[taskId].data[5] + gUnknown_085A7250[data->decoration->shape].x - 8 * ((u8)gTasks[taskId].data[5] - 1);
+ x = 16 * (u8)gTasks[taskId].data[5] + sDecorationMovementInfo[data->decoration->shape].cameraX - 8 * ((u8)gTasks[taskId].data[5] - 1);
if (data->decoration->shape == DECORSHAPE_3x1 || data->decoration->shape == DECORSHAPE_3x3 || data->decoration->shape == DECORSHAPE_3x2)
- {
- v0 -= 8;
- }
+ x -= 8;
+
if (gSaveBlock2Ptr->playerGender == MALE)
- {
- sDecor_CameraSpriteObjectIdx2 = AddPseudoEventObject(0xC1, SpriteCallbackDummy, v0, 0x48, 0);
- }
+ sDecor_CameraSpriteObjectIdx2 = AddPseudoEventObject(EVENT_OBJ_GFX_BRENDAN_DECORATING, SpriteCallbackDummy, x, 72, 0);
else
- {
- sDecor_CameraSpriteObjectIdx2 = AddPseudoEventObject(0xC2, SpriteCallbackDummy, v0, 0x48, 0);
- }
+ sDecor_CameraSpriteObjectIdx2 = AddPseudoEventObject(EVENT_OBJ_GFX_MAY_DECORATING, SpriteCallbackDummy, x, 72, 0);
+
gSprites[sDecor_CameraSpriteObjectIdx2].oam.priority = 1;
DestroySprite(&gSprites[sDecor_CameraSpriteObjectIdx1]);
sDecor_CameraSpriteObjectIdx1 = gFieldCamera.spriteId;
@@ -1389,7 +1374,7 @@ void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct PlaceDecorationGraphic
void sub_812826C(u8 taskId)
{
- switch (gDecorations[gCurDecorInventoryItems[gCurDecorationIndex]].shape)
+ switch (gDecorations[gCurDecorationItems[gCurDecorationIndex]].shape)
{
case DECORSHAPE_1x1:
gTasks[taskId].data[5] = 1;
@@ -1477,14 +1462,12 @@ bool8 sub_81284F4(u16 behaviorAt, const struct Decoration *decoration)
if (MetatileBehavior_IsBlockDecoration(behaviorAt) != TRUE)
{
if (decoration->id == DECOR_SOLID_BOARD && MetatileBehavior_IsSecretBaseHole(behaviorAt) == TRUE)
- {
return TRUE;
- }
+
if (MetatileBehavior_IsNormal(behaviorAt))
- {
return TRUE;
- }
}
+
return FALSE;
}
@@ -1503,127 +1486,108 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
switch (decoration->permission)
{
- case DECORPERM_SOLID_FLOOR:
- case DECORPERM_PASS_FLOOR:
- for (i=0; i<mapY; i++)
- {
- curY = gTasks[taskId].data[1] - i;
- for (j=0; j<mapX; j++)
- {
- curX = gTasks[taskId].data[0] + j;
- behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
- behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ELEVATION_MASK;
- if (!sub_81284F4(behaviorAt, decoration))
- {
- return FALSE;
- }
- if (!sub_81284AC(taskId, curX, curY, behaviorBy))
- {
- return FALSE;
- }
- behaviorAt = GetEventObjectIdByXYZ(curX, curY, 0);
- if (behaviorAt != 0 && behaviorAt != 16)
- {
- return FALSE;
- }
- }
- }
- break;
- case DECORPERM_BEHIND_FLOOR:
- for (i=0; i<mapY-1; i++)
- {
- curY = gTasks[taskId].data[1] - i;
- for (j=0; j<mapX; j++)
- {
- curX = gTasks[taskId].data[0] + j;
- behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
- behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ELEVATION_MASK;
- if (!MetatileBehavior_IsNormal(behaviorAt) && !sub_8128484(behaviorAt, behaviorBy))
- {
- return FALSE;
- }
- if (!sub_81284AC(taskId, curX, curY, behaviorBy))
- {
- return FALSE;
- }
- if (GetEventObjectIdByXYZ(curX, curY, 0) != 16)
- {
- return FALSE;
- }
- }
- }
- curY = gTasks[taskId].data[1] - mapY + 1;
- for (j=0; j<mapX; j++)
+ case DECORPERM_SOLID_FLOOR:
+ case DECORPERM_PASS_FLOOR:
+ for (i = 0; i < mapY; i++)
+ {
+ curY = gTasks[taskId].data[1] - i;
+ for (j = 0; j < mapX; j++)
{
curX = gTasks[taskId].data[0] + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
- behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[j]) & METATILE_ELEVATION_MASK;
- if (!MetatileBehavior_IsNormal(behaviorAt) && !MetatileBehavior_IsSecretBaseNorthWall(behaviorAt))
- {
+ behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ELEVATION_MASK;
+ if (!sub_81284F4(behaviorAt, decoration))
return FALSE;
- }
+
if (!sub_81284AC(taskId, curX, curY, behaviorBy))
- {
return FALSE;
- }
+
behaviorAt = GetEventObjectIdByXYZ(curX, curY, 0);
if (behaviorAt != 0 && behaviorAt != 16)
- {
return FALSE;
- }
}
- break;
- case DECORPERM_NA_WALL:
- for (i=0; i<mapY; i++)
- {
- curY = gTasks[taskId].data[1] - i;
- for (j=0; j<mapX; j++)
- {
- curX = gTasks[taskId].data[0] + j;
- if (!MetatileBehavior_IsSecretBaseNorthWall(MapGridGetMetatileBehaviorAt(curX, curY)))
- {
- return FALSE;
- }
- if (MapGridGetMetatileIdAt(curX, curY + 1) == 0x28c)
- {
- return FALSE;
- }
- }
- }
- break;
- case DECORPERM_SOLID_MAT:
- curY = gTasks[taskId].data[1];
- for (j=0; j<mapX; j++)
+ }
+ break;
+ case DECORPERM_BEHIND_FLOOR:
+ for (i = 0; i < mapY - 1; i++)
+ {
+ curY = gTasks[taskId].data[1] - i;
+ for (j = 0; j < mapX; j++)
{
curX = gTasks[taskId].data[0] + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
- if (decoration->shape == DECORSHAPE_1x2)
- {
- if (!MetatileBehavior_IsLargeMatCenter(behaviorAt))
- {
- return FALSE;
- }
- }
- else if (!MetatileBehavior_IsSecretBaseLargeMatEdge(behaviorAt))
- {
- if (!MetatileBehavior_IsLargeMatCenter(behaviorAt))
- {
- return FALSE;
- }
- }
+ behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ELEVATION_MASK;
+ if (!MetatileBehavior_IsNormal(behaviorAt) && !sub_8128484(behaviorAt, behaviorBy))
+ return FALSE;
+
+ if (!sub_81284AC(taskId, curX, curY, behaviorBy))
+ return FALSE;
+
if (GetEventObjectIdByXYZ(curX, curY, 0) != 16)
- {
return FALSE;
- }
}
- break;
+ }
+
+ curY = gTasks[taskId].data[1] - mapY + 1;
+ for (j = 0; j < mapX; j++)
+ {
+ curX = gTasks[taskId].data[0] + j;
+ behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
+ behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[j]) & METATILE_ELEVATION_MASK;
+ if (!MetatileBehavior_IsNormal(behaviorAt) && !MetatileBehavior_IsSecretBaseNorthWall(behaviorAt))
+ return FALSE;
+
+ if (!sub_81284AC(taskId, curX, curY, behaviorBy))
+ return FALSE;
+
+ behaviorAt = GetEventObjectIdByXYZ(curX, curY, 0);
+ if (behaviorAt != 0 && behaviorAt != 16)
+ return FALSE;
+ }
+ break;
+ case DECORPERM_NA_WALL:
+ for (i = 0; i < mapY; i++)
+ {
+ curY = gTasks[taskId].data[1] - i;
+ for (j = 0; j < mapX; j++)
+ {
+ curX = gTasks[taskId].data[0] + j;
+ if (!MetatileBehavior_IsSecretBaseNorthWall(MapGridGetMetatileBehaviorAt(curX, curY)))
+ return FALSE;
+
+ if (MapGridGetMetatileIdAt(curX, curY + 1) == 0x28c)
+ return FALSE;
+ }
+ }
+ break;
+ case DECORPERM_SPRITE:
+ curY = gTasks[taskId].data[1];
+ for (j = 0; j < mapX; j++)
+ {
+ curX = gTasks[taskId].data[0] + j;
+ behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
+ if (decoration->shape == DECORSHAPE_1x2)
+ {
+ if (!MetatileBehavior_HoldsLargeDecoration(behaviorAt))
+ return FALSE;
+ }
+ else if (!MetatileBehavior_HoldsSmallDecoration(behaviorAt))
+ {
+ if (!MetatileBehavior_HoldsLargeDecoration(behaviorAt))
+ return FALSE;
+ }
+
+ if (GetEventObjectIdByXYZ(curX, curY, 0) != 16)
+ return FALSE;
+ }
+ break;
}
return TRUE;
}
void sub_8128950(u8 taskId)
{
- if (sub_812853C(taskId, &gDecorations[gCurDecorInventoryItems[gCurDecorationIndex]]) == TRUE)
+ if (sub_812853C(taskId, &gDecorations[gCurDecorationItems[gCurDecorationIndex]]) == TRUE)
{
StringExpandPlaceholders(gStringVar4, gText_PlaceItHere);
DisplayItemMessageOnField(taskId, gStringVar4, sub_81289D0);
@@ -1646,9 +1610,9 @@ void sub_81289F0(u8 taskId)
{
ClearDialogWindowAndFrame(0, 0);
sub_8128AAC(taskId);
- if (gDecorations[gCurDecorInventoryItems[gCurDecorationIndex]].permission != DECORPERM_SOLID_MAT)
+ if (gDecorations[gCurDecorationItems[gCurDecorationIndex]].permission != DECORPERM_SPRITE)
{
- sub_8127D38(gTasks[taskId].data[0], gTasks[taskId].data[1], gCurDecorInventoryItems[gCurDecorationIndex]);
+ ShowDecorationOnMap(gTasks[taskId].data[0], gTasks[taskId].data[1], gCurDecorationItems[gCurDecorationIndex]);
}
else
{
@@ -1656,11 +1620,11 @@ void sub_81289F0(u8 taskId)
sCurDecorMapY = gTasks[taskId].data[1] - 7;
ScriptContext1_SetupScript(EventScript_275D1F);
}
+
gSprites[sDecor_CameraSpriteObjectIdx1].pos1.y += 2;
if (gMapHeader.regionMapSectionId == MAPSEC_SECRET_BASE)
- {
TV_PutSecretBaseVisitOnTheAir();
- }
+
sub_8128BBC(taskId);
}
@@ -1668,18 +1632,19 @@ void sub_8128AAC(u8 taskId)
{
u16 i;
- for (i = 0; i < gUnknown_0203A17C.size; i ++)
+ for (i = 0; i < gDecorationContext.size; i++)
{
- if (gUnknown_0203A17C.items[i] == DECOR_NONE)
+ if (gDecorationContext.items[i] == DECOR_NONE)
{
- gUnknown_0203A17C.items[i] = gCurDecorInventoryItems[gCurDecorationIndex];
- gUnknown_0203A17C.pos[i] = ((gTasks[taskId].data[0] - 7) << 4) + (gTasks[taskId].data[1] - 7);
+ gDecorationContext.items[i] = gCurDecorationItems[gCurDecorationIndex];
+ gDecorationContext.pos[i] = ((gTasks[taskId].data[0] - 7) << 4) + (gTasks[taskId].data[1] - 7);
break;
}
}
- if (!gUnknown_0203A17C.isPlayerRoom)
+
+ if (!gDecorationContext.isPlayerRoom)
{
- for (i = 0; i < 16; i ++)
+ for (i = 0; i < 16; i++)
{
if (sSecretBaseItemsIndicesBuffer[i] == 0)
{
@@ -1690,7 +1655,7 @@ void sub_8128AAC(u8 taskId)
}
else
{
- for (i = 0; i < 12; i ++)
+ for (i = 0; i < 12; i++)
{
if (sPlayerRoomItemsIndicesBuffer[i] == 0)
{
@@ -1724,49 +1689,45 @@ void c1_overworld_prev_quest(u8 taskId)
{
switch (gTasks[taskId].data[2])
{
- case 0:
- ScriptContext2_Enable();
- if (!gPaletteFade.active)
- {
- sub_8127B04(taskId);
- gTasks[taskId].data[2] = 1;
- }
- break;
- case 1:
- sub_812A3C8();
- FreeSpritePaletteByTag(OVERWORLD_PLACE_DECOR_SELECTOR_PAL_TAG);
- gFieldCallback = sub_8128CD4;
- SetMainCallback2(CB2_ReturnToField);
- DestroyTask(taskId);
- break;
+ case 0:
+ ScriptContext2_Enable();
+ if (!gPaletteFade.active)
+ {
+ sub_8127B04(taskId);
+ gTasks[taskId].data[2] = 1;
+ }
+ break;
+ case 1:
+ sub_812A3C8();
+ FreeSpritePaletteByTag(PLACE_DECORATION_SELECTOR_TAG);
+ gFieldCallback = sub_8128CD4;
+ SetMainCallback2(CB2_ReturnToField);
+ DestroyTask(taskId);
+ break;
}
}
void sub_8128C64(u8 taskId)
{
- s16 *data;
-
- data = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
switch (data[2])
{
- case 0:
- sub_80E9578();
- data[2] ++;
- break;
- case 1:
- ScriptContext1_SetupScript(EventScript_275D0C);
- data[2] ++;
- break;
- case 2:
- ScriptContext2_Enable();
- data[2] ++;
- break;
- case 3:
- if (IsWeatherNotFadingIn() == TRUE)
- {
- gTasks[taskId].func = sub_812764C;
- }
- break;
+ case 0:
+ HideSecretBaseDecorationSprites();
+ data[2]++;
+ break;
+ case 1:
+ ScriptContext1_SetupScript(EventScript_275D0C);
+ data[2]++;
+ break;
+ case 2:
+ ScriptContext2_Enable();
+ data[2]++;
+ break;
+ case 3:
+ if (IsWeatherNotFadingIn() == TRUE)
+ gTasks[taskId].func = HandleDecorationItemsMenuInput;
+ break;
}
}
@@ -1783,41 +1744,40 @@ void sub_8128CD4(void)
bool8 sub_8128D10(u8 taskId)
{
- s16 *data;
-
- data = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
if (sDecorationLastDirectionMoved == DIR_SOUTH && data[1] - data[6] - 6 < 0)
{
- data[1] ++;
+ data[1]++;
return FALSE;
}
+
if (sDecorationLastDirectionMoved == DIR_NORTH && data[1] - 7 >= gMapHeader.mapLayout->height)
{
- data[1] --;
+ data[1]--;
return FALSE;
}
+
if (sDecorationLastDirectionMoved == DIR_WEST && data[0] - 7 < 0)
{
- data[0] ++;
+ data[0]++;
return FALSE;
}
+
if (sDecorationLastDirectionMoved == DIR_EAST && data[0] + data[5] - 8 >= gMapHeader.mapLayout->width)
{
- data[0] --;
+ data[0]--;
return FALSE;
}
+
return TRUE;
}
bool8 sub_8128DB4(void)
{
- u16 heldKeys;
-
- heldKeys = gMain.heldKeys & 0x0F0;
+ u16 heldKeys = gMain.heldKeys & DPAD_ANY;
if (heldKeys != DPAD_UP && heldKeys != DPAD_DOWN && heldKeys != DPAD_LEFT && heldKeys != DPAD_RIGHT)
- {
return FALSE;
- }
+
return TRUE;
}
@@ -1830,68 +1790,69 @@ void sub_8128DE0(void)
void sub_8128E18(u8 taskId)
{
- s16 *data;
-
- data = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
if (!gSprites[sDecor_CameraSpriteObjectIdx1].data[4])
{
if (data[10] == 1)
{
gUnknown_085A72D4[data[12]].yesFunc(taskId);
return;
- } else if (data[10] == 2)
+ }
+ else if (data[10] == 2)
{
gUnknown_085A72D4[data[12]].noFunc(taskId);
return;
}
- if ((gMain.heldKeys & 0x0F0) == DPAD_UP)
+
+ if ((gMain.heldKeys & DPAD_ANY) == DPAD_UP)
{
sDecorationLastDirectionMoved = DIR_SOUTH;
gSprites[sDecor_CameraSpriteObjectIdx1].data[2] = 0;
gSprites[sDecor_CameraSpriteObjectIdx1].data[3] = -2;
data[1]--;
}
- if ((gMain.heldKeys & 0x0F0) == DPAD_DOWN)
+
+ if ((gMain.heldKeys & DPAD_ANY) == DPAD_DOWN)
{
sDecorationLastDirectionMoved = DIR_NORTH;
gSprites[sDecor_CameraSpriteObjectIdx1].data[2] = 0;
gSprites[sDecor_CameraSpriteObjectIdx1].data[3] = 2;
data[1]++;
}
- if ((gMain.heldKeys & 0x0F0) == DPAD_LEFT)
+
+ if ((gMain.heldKeys & DPAD_ANY) == DPAD_LEFT)
{
sDecorationLastDirectionMoved = DIR_WEST;
gSprites[sDecor_CameraSpriteObjectIdx1].data[2] = -2;
gSprites[sDecor_CameraSpriteObjectIdx1].data[3] = 0;
data[0]--;
}
- if ((gMain.heldKeys & 0x0F0) == DPAD_RIGHT)
+
+ if ((gMain.heldKeys & DPAD_ANY) == DPAD_RIGHT)
{
sDecorationLastDirectionMoved = DIR_EAST;
gSprites[sDecor_CameraSpriteObjectIdx1].data[2] = 2;
gSprites[sDecor_CameraSpriteObjectIdx1].data[3] = 0;
data[0]++;
}
+
if (!sub_8128DB4() || !sub_8128D10(taskId))
- {
sub_8128DE0();
- }
}
+
if (sDecorationLastDirectionMoved)
{
gSprites[sDecor_CameraSpriteObjectIdx1].data[4]++;
gSprites[sDecor_CameraSpriteObjectIdx1].data[4] &= 7;
}
+
if (!data[10])
{
if (gMain.newKeys & A_BUTTON)
- {
data[10] = A_BUTTON;
- }
+
if (gMain.newKeys & B_BUTTON)
- {
data[10] = B_BUTTON;
- }
}
}
@@ -1906,9 +1867,7 @@ void sub_8128FD8(u8 taskId)
void sub_8129020(u8 taskId)
{
if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
- {
sub_8128FD8(taskId);
- }
}
void sub_8129048(struct PlaceDecorationGraphicsDataBuffer *data)
@@ -1929,49 +1888,46 @@ void sub_8129088(u8 *dest, u16 tile)
mode = tile >> 10;
if (tile != 0)
- {
tile &= 0x03FF;
- }
+
CpuFastCopy(&((u8 *)gTilesetPointer_SecretBase->tiles)[tile << 5], buffer, 32);
switch (mode)
{
- case 0:
- CpuFastCopy(buffer, dest, 32);
- break;
- case 1:
- for (i = 0; i < 8; i ++)
- {
- dest[4 * i] = (buffer[4 * (i + 1) - 1] >> 4) + ((buffer[4 * (i + 1) - 1] & 0x0F) << 4);
- dest[4 * i + 1] = (buffer[4 * (i + 1) - 2] >> 4) + ((buffer[4 * (i + 1) - 2] & 0x0F) << 4);
- dest[4 * i + 2] = (buffer[4 * (i + 1) - 3] >> 4) + ((buffer[4 * (i + 1) - 3] & 0x0F) << 4);
- dest[4 * i + 3] = (buffer[4 * (i + 1) - 4] >> 4) + ((buffer[4 * (i + 1) - 4] & 0x0F) << 4);
- }
- break;
- case 2:
- for (i = 0; i < 8; i ++)
- {
- dest[4 * i] = buffer[4 * (7 - i)];
- dest[4 * i + 1] = buffer[4 * (7 - i) + 1];
- dest[4 * i + 2] = buffer[4 * (7 - i) + 2];
- dest[4 * i + 3] = buffer[4 * (7 - i) + 3];
- }
- break;
- case 3:
- for (i = 0; i < 32; i ++)
- {
- dest[i] = (buffer[31 - i] >> 4) + ((buffer[31 - i] & 0x0F) << 4);
- }
- break;
+ case 0:
+ CpuFastCopy(buffer, dest, 32);
+ break;
+ case 1:
+ for (i = 0; i < 8; i++)
+ {
+ dest[4 * i] = (buffer[4 * (i + 1) - 1] >> 4) + ((buffer[4 * (i + 1) - 1] & 0x0F) << 4);
+ dest[4 * i + 1] = (buffer[4 * (i + 1) - 2] >> 4) + ((buffer[4 * (i + 1) - 2] & 0x0F) << 4);
+ dest[4 * i + 2] = (buffer[4 * (i + 1) - 3] >> 4) + ((buffer[4 * (i + 1) - 3] & 0x0F) << 4);
+ dest[4 * i + 3] = (buffer[4 * (i + 1) - 4] >> 4) + ((buffer[4 * (i + 1) - 4] & 0x0F) << 4);
+ }
+ break;
+ case 2:
+ for (i = 0; i < 8; i++)
+ {
+ dest[4 * i] = buffer[4 * (7 - i)];
+ dest[4 * i + 1] = buffer[4 * (7 - i) + 1];
+ dest[4 * i + 2] = buffer[4 * (7 - i) + 2];
+ dest[4 * i + 3] = buffer[4 * (7 - i) + 3];
+ }
+ break;
+ case 3:
+ for (i = 0; i < 32; i++)
+ {
+ dest[i] = (buffer[31 - i] >> 4) + ((buffer[31 - i] & 0x0F) << 4);
+ }
+ break;
}
}
void sub_81291A4(struct PlaceDecorationGraphicsDataBuffer *data)
{
u16 i;
- for (i = 0; i < 64; i ++)
- {
+ for (i = 0; i < 64; i++)
sub_8129088(&data->image[i * 32], data->tiles[i]);
- }
}
u16 sub_81291CC(u16 tile)
@@ -1985,7 +1941,7 @@ void sub_81291E8(struct PlaceDecorationGraphicsDataBuffer *data)
u8 shape;
shape = data->decoration->shape;
- for (i = 0; i < gUnknown_085A71B0[shape].size; i ++)
+ for (i = 0; i < gUnknown_085A71B0[shape].size; i++)
{
data->tiles[gUnknown_085A71B0[shape].tiles[i]] = sub_81291CC(data->decoration->tiles[gUnknown_085A71B0[shape].y[i]] * 8 + gUnknown_085A71B0[shape].x[i]);
}
@@ -1998,10 +1954,10 @@ void SetDecorSelectionBoxOamAttributes(u8 decorShape)
sDecorSelectorOam.objMode = ST_OAM_OBJ_NORMAL;
sDecorSelectorOam.mosaic = 0;
sDecorSelectorOam.bpp = ST_OAM_4BPP;
- sDecorSelectorOam.shape = gUnknown_085A7250[decorShape].shape;
+ sDecorSelectorOam.shape = sDecorationMovementInfo[decorShape].shape;
sDecorSelectorOam.x = 0;
sDecorSelectorOam.matrixNum = 0;
- sDecorSelectorOam.size = gUnknown_085A7250[decorShape].size;
+ sDecorSelectorOam.size = sDecorationMovementInfo[decorShape].size;
sDecorSelectorOam.tileNum = 0;
sDecorSelectorOam.priority = 0;
sDecorSelectorOam.paletteNum = 0;
@@ -2023,14 +1979,11 @@ void sub_81292E8(struct Sprite *sprite)
if (sprite->data[7] == 0)
{
if (sprite->data[6] < 15)
- {
- sprite->invisible = FALSE;
- }
+ sprite->invisible = 0;
else
- {
- sprite->invisible = TRUE;
- }
- sprite->data[6] ++;
+ sprite->invisible = 1;
+
+ sprite->data[6]++;
sprite->data[6] &= 0x1F;
}
else
@@ -2043,17 +1996,16 @@ u8 gpu_pal_decompress_alloc_tag_and_upload(struct PlaceDecorationGraphicsDataBuf
{
sub_8129048(data);
data->decoration = &gDecorations[decor];
- if (data->decoration->permission == DECORPERM_SOLID_MAT)
- {
+ if (data->decoration->permission == DECORPERM_SPRITE)
return AddPseudoEventObject(data->decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1);
- }
- FreeSpritePaletteByTag(OVERWORLD_PLACE_DECOR_SELECTOR_PAL_TAG);
+
+ FreeSpritePaletteByTag(PLACE_DECORATION_SELECTOR_TAG);
sub_81291E8(data);
SetDecorSelectionBoxOamAttributes(data->decoration->shape);
sub_81291A4(data);
sub_8129068(data->palette, ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[(data->decoration->tiles[0] * 8) + 7] >> 12);
LoadSpritePalette(&gUnknown_085A72BC);
- return CreateSprite(&sDecorSelectorSpriteTemplate, 0, 0, 0);
+ return CreateSprite(&sDecorationSelectorSpriteTemplate, 0, 0, 0);
}
u8 AddDecorationIconObjectFromIconTable(u16 tilesTag, u16 paletteTag, u8 decor)
@@ -2064,9 +2016,8 @@ u8 AddDecorationIconObjectFromIconTable(u16 tilesTag, u16 paletteTag, u8 decor)
u8 spriteId;
if (!AllocItemIconTemporaryBuffers())
- {
return MAX_SPRITES;
- }
+
LZDecompressWram(GetDecorationIconPicOrPalette(decor, 0), gItemIconDecompressionBuffer);
CopyItemIconPicTo4x4Buffer(gItemIconDecompressionBuffer, gItemIcon4x4Buffer);
sheet.data = gItemIcon4x4Buffer;
@@ -2088,10 +2039,9 @@ u8 AddDecorationIconObjectFromIconTable(u16 tilesTag, u16 paletteTag, u8 decor)
const u32 *GetDecorationIconPicOrPalette(u16 decor, u8 mode)
{
- if (decor > 120)
- {
+ if (decor > NUM_DECORATIONS)
decor = DECOR_NONE;
- }
+
return gUnknown_085A6BE8[decor][mode];
}
@@ -2104,7 +2054,7 @@ u8 AddDecorationIconObjectFromEventObject(u16 tilesTag, u16 paletteTag, u8 decor
sub_8129048(&sPlaceDecorationGraphicsDataBuffer);
sPlaceDecorationGraphicsDataBuffer.decoration = &gDecorations[decor];
- if (sPlaceDecorationGraphicsDataBuffer.decoration->permission != DECORPERM_SOLID_MAT)
+ if (sPlaceDecorationGraphicsDataBuffer.decoration->permission != DECORPERM_SPRITE)
{
sub_81291E8(&sPlaceDecorationGraphicsDataBuffer);
SetDecorSelectionBoxOamAttributes(sPlaceDecorationGraphicsDataBuffer.decoration->shape);
@@ -2135,13 +2085,12 @@ u8 AddDecorationIconObject(u8 decor, s16 x, s16 y, u8 priority, u16 tilesTag, u1
{
u8 spriteId;
- if (decor > 120)
+ if (decor > NUM_DECORATIONS)
{
spriteId = AddDecorationIconObjectFromIconTable(tilesTag, paletteTag, DECOR_NONE);
if (spriteId == MAX_SPRITES)
- {
return MAX_SPRITES;
- }
+
gSprites[spriteId].pos2.x = x + 4;
gSprites[spriteId].pos2.y = y + 4;
}
@@ -2149,37 +2098,32 @@ u8 AddDecorationIconObject(u8 decor, s16 x, s16 y, u8 priority, u16 tilesTag, u1
{
spriteId = AddDecorationIconObjectFromEventObject(tilesTag, paletteTag, decor);
if (spriteId == MAX_SPRITES)
- {
return MAX_SPRITES;
- }
+
gSprites[spriteId].pos2.x = x;
if (decor == DECOR_SILVER_SHIELD || decor == DECOR_GOLD_SHIELD)
- {
gSprites[spriteId].pos2.y = y - 4;
- }
else
- {
gSprites[spriteId].pos2.y = y;
- }
}
else
{
spriteId = AddDecorationIconObjectFromIconTable(tilesTag, paletteTag, decor);
if (spriteId == MAX_SPRITES)
- {
return MAX_SPRITES;
- }
+
gSprites[spriteId].pos2.x = x + 4;
gSprites[spriteId].pos2.y = y + 4;
}
+
gSprites[spriteId].oam.priority = priority;
return spriteId;
}
void sub_81296EC(u8 idx)
{
- gUnknown_0203A17C.items[idx] = 0;
- gUnknown_0203A17C.pos[idx] = 0;
+ gDecorationContext.items[idx] = 0;
+ gDecorationContext.pos[idx] = 0;
}
void sub_8129708(void)
@@ -2192,11 +2136,11 @@ void sub_8129708(void)
{
gSpecialVar_Result = 1;
}
- else if (gDecorations[gUnknown_0203A17C.items[sDecorRearrangementDataBuffer[gSpecialVar_0x8004].idx]].permission == DECORPERM_SOLID_MAT)
+ else if (gDecorations[gDecorationContext.items[sDecorRearrangementDataBuffer[gSpecialVar_0x8004].idx]].permission == DECORPERM_SPRITE)
{
gSpecialVar_0x8005 = sDecorRearrangementDataBuffer[gSpecialVar_0x8004].flagId;
sub_81296EC(sDecorRearrangementDataBuffer[gSpecialVar_0x8004].idx);
- for (i = 0; i < gMapHeader.events->eventObjectCount; i ++)
+ for (i = 0; i < gMapHeader.events->eventObjectCount; i++)
{
if (gMapHeader.events->eventObjects[i].flagId == gSpecialVar_0x8005)
{
@@ -2211,7 +2155,7 @@ void sub_81297AC(void)
{
u8 i;
- for (i = 0; i < gMapHeader.events->eventObjectCount; i ++)
+ for (i = 0; i < gMapHeader.events->eventObjectCount; i++)
{
if (gMapHeader.events->eventObjects[i].flagId == gSpecialVar_0x8004)
{
@@ -2230,20 +2174,21 @@ void sub_81297F8(void)
int posY;
u8 perm;
- for (i = 0; i < sCurDecorSelectedInRearrangement; i ++)
+ for (i = 0; i < sCurDecorSelectedInRearrangement; i++)
{
- perm = gDecorations[gUnknown_0203A17C.items[sDecorRearrangementDataBuffer[i].idx]].permission;
- posX = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[i].idx] >> 4;
- posY = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[i].idx] & 0x0F;
- if (perm != DECORPERM_SOLID_MAT)
+ perm = gDecorations[gDecorationContext.items[sDecorRearrangementDataBuffer[i].idx]].permission;
+ posX = gDecorationContext.pos[sDecorRearrangementDataBuffer[i].idx] >> 4;
+ posY = gDecorationContext.pos[sDecorRearrangementDataBuffer[i].idx] & 0x0F;
+ if (perm != DECORPERM_SPRITE)
{
- for (y = 0; y < sDecorRearrangementDataBuffer[i].height; y ++)
+ for (y = 0; y < sDecorRearrangementDataBuffer[i].height; y++)
{
- for (x = 0; x < sDecorRearrangementDataBuffer[i].width; x ++)
+ for (x = 0; x < sDecorRearrangementDataBuffer[i].width; x++)
{
MapGridSetMetatileEntryAt(posX + 7 + x, posY + 7 - y, gMapHeader.mapLayout->map[posX + x + gMapHeader.mapLayout->width * (posY - y)] | 0x3000);
}
}
+
sub_81296EC(sDecorRearrangementDataBuffer[i].idx);
}
}
@@ -2253,35 +2198,33 @@ void sub_81298EC(u8 taskId)
{
switch (gTasks[taskId].data[2])
{
- case 0:
- sub_81297F8();
- gTasks[taskId].data[2] = 1;
- break;
- case 1:
- if (!gPaletteFade.active) {
- DrawWholeMapView();
- ScriptContext1_SetupScript(EventScript_275D2E);
- ClearDialogWindowAndFrame(0, 1);
- gTasks[taskId].data[2] = 2;
- }
- break;
- case 2:
- ScriptContext2_Enable();
- IdentifyOwnedDecorationsCurrentlyInUseInternal(taskId);
- pal_fill_black();
- gTasks[taskId].data[2] = 3;
- break;
- case 3:
- if (IsWeatherNotFadingIn() == TRUE)
- {
- StringExpandPlaceholders(gStringVar4, gText_DecorationReturnedToPC);
- DisplayItemMessageOnField(taskId, gStringVar4, sub_8129D64);
- if (gMapHeader.regionMapSectionId == MAPSEC_SECRET_BASE)
- {
- TV_PutSecretBaseVisitOnTheAir();
- }
- }
- break;
+ case 0:
+ sub_81297F8();
+ gTasks[taskId].data[2] = 1;
+ break;
+ case 1:
+ if (!gPaletteFade.active) {
+ DrawWholeMapView();
+ ScriptContext1_SetupScript(EventScript_275D2E);
+ ClearDialogWindowAndFrame(0, 1);
+ gTasks[taskId].data[2] = 2;
+ }
+ break;
+ case 2:
+ ScriptContext2_Enable();
+ IdentifyOwnedDecorationsCurrentlyInUseInternal(taskId);
+ pal_fill_black();
+ gTasks[taskId].data[2] = 3;
+ break;
+ case 3:
+ if (IsWeatherNotFadingIn() == TRUE)
+ {
+ StringExpandPlaceholders(gStringVar4, gText_DecorationReturnedToPC);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_8129D64);
+ if (gMapHeader.regionMapSectionId == MAPSEC_SECRET_BASE)
+ TV_PutSecretBaseVisitOnTheAir();
+ }
+ break;
}
}
@@ -2289,14 +2232,12 @@ void sub_81298EC(u8 taskId)
bool8 sub_81299AC(u8 taskId)
{
u16 i;
-
- for (i = 0; i < gUnknown_0203A17C.size; i ++)
+ for (i = 0; i < gDecorationContext.size; i++)
{
- if (gUnknown_0203A17C.items[i] != DECOR_NONE)
- {
+ if (gDecorationContext.items[i] != DECOR_NONE)
return TRUE;
- }
}
+
return FALSE;
}
@@ -2305,15 +2246,12 @@ void SetUpPuttingAwayDecorationPlayerAvatar(void)
GetPlayerFacingDirection();
sDecor_CameraSpriteObjectIdx1 = gSprites[gFieldCamera.spriteId].data[0];
sub_812A39C();
- gFieldCamera.spriteId = CreateSprite(&gUnknown_085A7404, 0x78, 0x50, 0);
+ gFieldCamera.spriteId = CreateSprite(&gUnknown_085A7404, 120, 80, 0);
if (gSaveBlock2Ptr->playerGender == MALE)
- {
- sDecor_CameraSpriteObjectIdx2 = AddPseudoEventObject(0xC1, SpriteCallbackDummy, 0x88, 0x48, 0);
- }
+ sDecor_CameraSpriteObjectIdx2 = AddPseudoEventObject(EVENT_OBJ_GFX_BRENDAN_DECORATING, SpriteCallbackDummy, 136, 72, 0);
else
- {
- sDecor_CameraSpriteObjectIdx2 = AddPseudoEventObject(0xC2, SpriteCallbackDummy, 0x88, 0x48, 0);
- }
+ sDecor_CameraSpriteObjectIdx2 = AddPseudoEventObject(EVENT_OBJ_GFX_MAY_DECORATING, SpriteCallbackDummy, 136, 72, 0);
+
gSprites[sDecor_CameraSpriteObjectIdx2].oam.priority = 1;
DestroySprite(&gSprites[sDecor_CameraSpriteObjectIdx1]);
sDecor_CameraSpriteObjectIdx1 = gFieldCamera.spriteId;
@@ -2327,27 +2265,27 @@ void sub_8129ABC(u8 taskId)
data = gTasks[taskId].data;
switch (data[2])
{
- case 0:
- if (!gPaletteFade.active)
- {
- sub_8127ACC(taskId);
- data[2] = 1;
- data[6] = 1;
- data[5] = 1;
- }
- break;
- case 1:
- SetUpPuttingAwayDecorationPlayerAvatar();
- pal_fill_black();
- data[2] = 2;
- break;
- case 2:
- if (IsWeatherNotFadingIn() == TRUE)
- {
- data[12] = 1;
- sub_8129B34(taskId);
- }
- break;
+ case 0:
+ if (!gPaletteFade.active)
+ {
+ sub_8127ACC(taskId);
+ data[2] = 1;
+ data[6] = 1;
+ data[5] = 1;
+ }
+ break;
+ case 1:
+ SetUpPuttingAwayDecorationPlayerAvatar();
+ pal_fill_black();
+ data[2] = 2;
+ break;
+ case 2:
+ if (IsWeatherNotFadingIn() == TRUE)
+ {
+ data[12] = 1;
+ sub_8129B34(taskId);
+ }
+ break;
}
}
@@ -2357,8 +2295,8 @@ void sub_8129B34(u8 taskId)
gSprites[sDecor_CameraSpriteObjectIdx1].data[7] = 0;
gSprites[sDecor_CameraSpriteObjectIdx1].invisible = FALSE;
gSprites[sDecor_CameraSpriteObjectIdx1].callback = sub_812A36C;
- gSprites[sDecor_CameraSpriteObjectIdx2].pos1.x = 0x88;
- gSprites[sDecor_CameraSpriteObjectIdx2].pos1.y = 0x48;
+ gSprites[sDecor_CameraSpriteObjectIdx2].pos1.x = 136;
+ gSprites[sDecor_CameraSpriteObjectIdx2].pos1.y = 72;
gTasks[taskId].data[10] = 0;
gTasks[taskId].func = sub_8128E18;
}
@@ -2413,9 +2351,7 @@ void sub_8129C74(u8 taskId)
void sub_8129D64(u8 taskId)
{
if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
- {
sub_8129B34(taskId);
- }
}
void sub_8129D8C(u8 decor, struct DecorRearrangementDataBuffer *data)
@@ -2424,39 +2360,48 @@ void sub_8129D8C(u8 decor, struct DecorRearrangementDataBuffer *data)
{
data->width = 1;
data->height = 1;
- } else if (gDecorations[decor].shape == DECORSHAPE_2x1)
+ }
+ else if (gDecorations[decor].shape == DECORSHAPE_2x1)
{
data->width = 2;
data->height = 1;
- } else if (gDecorations[decor].shape == DECORSHAPE_3x1)
+ }
+ else if (gDecorations[decor].shape == DECORSHAPE_3x1)
{
data->width = 3;
data->height = 1;
- } else if (gDecorations[decor].shape == DECORSHAPE_4x2)
+ }
+ else if (gDecorations[decor].shape == DECORSHAPE_4x2)
{
data->width = 4;
data->height = 2;
- } else if (gDecorations[decor].shape == DECORSHAPE_2x2)
+ }
+ else if (gDecorations[decor].shape == DECORSHAPE_2x2)
{
data->width = 2;
data->height = 2;
- } else if (gDecorations[decor].shape == DECORSHAPE_1x2)
+ }
+ else if (gDecorations[decor].shape == DECORSHAPE_1x2)
{
data->width = 1;
data->height = 2;
- } else if (gDecorations[decor].shape == DECORSHAPE_1x3)
+ }
+ else if (gDecorations[decor].shape == DECORSHAPE_1x3)
{
data->width = 1;
data->height = 3;
- } else if (gDecorations[decor].shape == DECORSHAPE_2x4)
+ }
+ else if (gDecorations[decor].shape == DECORSHAPE_2x4)
{
data->width = 2;
data->height = 4;
- } else if (gDecorations[decor].shape == DECORSHAPE_3x3)
+ }
+ else if (gDecorations[decor].shape == DECORSHAPE_3x3)
{
data->width = 3;
data->height = 3;
- } else if (gDecorations[decor].shape == DECORSHAPE_3x2)
+ }
+ else if (gDecorations[decor].shape == DECORSHAPE_3x2)
{
data->width = 3;
data->height = 2;
@@ -2467,8 +2412,8 @@ void sub_8129E0C(u8 x, u8 y)
{
gSprites[sDecor_CameraSpriteObjectIdx1].invisible = TRUE;
gSprites[sDecor_CameraSpriteObjectIdx1].callback = SpriteCallbackDummy;
- gSprites[sDecor_CameraSpriteObjectIdx2].pos1.x = (x << 4) + 0x88;
- gSprites[sDecor_CameraSpriteObjectIdx2].pos1.y = (y << 4) + 0x48;
+ gSprites[sDecor_CameraSpriteObjectIdx2].pos1.x = (x << 4) + 136;
+ gSprites[sDecor_CameraSpriteObjectIdx2].pos1.y = (y << 4) + 72;
}
bool8 sub_8129E74(u8 taskId, u8 idx, struct DecorRearrangementDataBuffer *data)
@@ -2481,18 +2426,18 @@ bool8 sub_8129E74(u8 taskId, u8 idx, struct DecorRearrangementDataBuffer *data)
x = gTasks[taskId].data[0] - 7;
y = gTasks[taskId].data[1] - 7;
- xOff = gUnknown_0203A17C.pos[idx] >> 4;
- yOff = gUnknown_0203A17C.pos[idx] & 0x0F;
+ xOff = gDecorationContext.pos[idx] >> 4;
+ yOff = gDecorationContext.pos[idx] & 0x0F;
ht = data->height;
- if (gUnknown_0203A17C.items[idx] == DECOR_SAND_ORNAMENT && MapGridGetMetatileIdAt(xOff + 7, yOff + 7) == 0x28C)
- {
- ht --;
- }
+ if (gDecorationContext.items[idx] == DECOR_SAND_ORNAMENT && MapGridGetMetatileIdAt(xOff + 7, yOff + 7) == 0x28C)
+ ht--;
+
if (x >= xOff && x < xOff + data->width && y > yOff - ht && y <= yOff)
{
sub_8129E0C(data->width - (x - xOff + 1), yOff - y);
return TRUE;
}
+
return FALSE;
}
@@ -2502,9 +2447,9 @@ void sub_8129F20(void)
u8 yOff;
u16 i;
- xOff = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].idx] >> 4;
- yOff = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].idx] & 0x0F;
- for (i = 0; i < 0x40; i ++)
+ xOff = gDecorationContext.pos[sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].idx] >> 4;
+ yOff = gDecorationContext.pos[sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].idx] & 0x0F;
+ for (i = 0; i < 0x40; i++)
{
if (gSaveBlock1Ptr->eventObjectTemplates[i].x == xOff && gSaveBlock1Ptr->eventObjectTemplates[i].y == yOff && !FlagGet(gSaveBlock1Ptr->eventObjectTemplates[i].flagId))
{
@@ -2518,13 +2463,13 @@ bool8 sub_8129FC8(u8 taskId)
{
u16 i;
- for (i = 0; i < gUnknown_0203A17C.size; i ++)
+ for (i = 0; i < gDecorationContext.size; i++)
{
- if (gUnknown_0203A17C.items[i] != 0)
+ if (gDecorationContext.items[i] != 0)
{
- if (gDecorations[gUnknown_0203A17C.items[i]].permission == DECORPERM_SOLID_MAT)
+ if (gDecorations[gDecorationContext.items[i]].permission == DECORPERM_SPRITE)
{
- sub_8129D8C(gUnknown_0203A17C.items[i], sDecorRearrangementDataBuffer);
+ sub_8129D8C(gDecorationContext.items[i], sDecorRearrangementDataBuffer);
if (sub_8129E74(taskId, i, sDecorRearrangementDataBuffer) == TRUE)
{
sDecorRearrangementDataBuffer->idx = i;
@@ -2545,12 +2490,12 @@ void sub_812A040(u8 left, u8 top, u8 right, u8 bottom)
u8 yOff;
u8 decorIdx;
- for (i = 0; i < gUnknown_0203A17C.size; i ++)
+ for (i = 0; i < gDecorationContext.size; i++)
{
- decorIdx = gUnknown_0203A17C.items[i];
- xOff = gUnknown_0203A17C.pos[i] >> 4;
- yOff = gUnknown_0203A17C.pos[i] & 0x0F;
- if (decorIdx != 0 && gDecorations[decorIdx].permission == DECORPERM_SOLID_MAT && left <= xOff && top <= yOff && right >= xOff && bottom >= yOff)
+ decorIdx = gDecorationContext.items[i];
+ xOff = gDecorationContext.pos[i] >> 4;
+ yOff = gDecorationContext.pos[i] & 0x0F;
+ if (decorIdx != 0 && gDecorations[decorIdx].permission == DECORPERM_SPRITE && left <= xOff && top <= yOff && right >= xOff && bottom >= yOff)
{
sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].idx = i;
sub_8129F20();
@@ -2570,9 +2515,9 @@ void sub_812A0E8(u8 taskId)
sCurDecorSelectedInRearrangement = 0;
if (sub_8129FC8(taskId) != TRUE)
{
- for (i = 0; i < gUnknown_0203A17C.size; i++)
+ for (i = 0; i < gDecorationContext.size; i++)
{
- var1 = gUnknown_0203A17C.items[i];
+ var1 = gDecorationContext.items[i];
if (var1 != DECOR_NONE)
{
sub_8129D8C(var1, &sDecorRearrangementDataBuffer[0]);
@@ -2586,8 +2531,8 @@ void sub_812A0E8(u8 taskId)
}
if (sCurDecorSelectedInRearrangement != 0)
{
- xOff = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[0].idx] >> 4;
- yOff = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[0].idx] & 0x0F;
+ xOff = gDecorationContext.pos[sDecorRearrangementDataBuffer[0].idx] >> 4;
+ yOff = gDecorationContext.pos[sDecorRearrangementDataBuffer[0].idx] & 0x0F;
var1 = yOff - sDecorRearrangementDataBuffer[0].height + 1;
var2 = sDecorRearrangementDataBuffer[0].width + xOff - 1;
@@ -2632,47 +2577,43 @@ void sub_812A25C(u8 taskId)
{
switch (gTasks[taskId].data[2])
{
- case 0:
- if (!gPaletteFade.active)
- {
- sub_8127B04(taskId);
- gTasks[taskId].data[2] = 1;
- }
- break;
- case 1:
- sub_812A3C8();
- gFieldCallback = sub_812A334;
- SetMainCallback2(CB2_ReturnToField);
- DestroyTask(taskId);
- break;
+ case 0:
+ if (!gPaletteFade.active)
+ {
+ sub_8127B04(taskId);
+ gTasks[taskId].data[2] = 1;
+ }
+ break;
+ case 1:
+ sub_812A3C8();
+ gFieldCallback = sub_812A334;
+ SetMainCallback2(CB2_ReturnToField);
+ DestroyTask(taskId);
+ break;
}
}
void sub_812A2C4(u8 taskId)
{
- s16 *data;
-
- data = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
switch (data[2])
{
- case 0:
- sub_80E9578();
- data[2] ++;
- break;
- case 1:
- ScriptContext1_SetupScript(EventScript_275D0C);
- data[2] ++;
- break;
- case 2:
- ScriptContext2_Enable();
- data[2] ++;
- break;
- case 3:
- if (IsWeatherNotFadingIn() == TRUE)
- {
- gTasks[taskId].func = sub_8126B80;
- }
- break;
+ case 0:
+ HideSecretBaseDecorationSprites();
+ data[2]++;
+ break;
+ case 1:
+ ScriptContext1_SetupScript(EventScript_275D0C);
+ data[2]++;
+ break;
+ case 2:
+ ScriptContext2_Enable();
+ data[2]++;
+ break;
+ case 3:
+ if (IsWeatherNotFadingIn() == TRUE)
+ gTasks[taskId].func = HandleDecorationActionsMenuInput;
+ break;
}
}
@@ -2682,47 +2623,39 @@ void sub_812A334(void)
pal_fill_black();
DrawDialogueFrame(0, 1);
- sub_8126ABC();
+ InitDecorationActionsWindow();
taskId = CreateTask(sub_812A2C4, 8);
gTasks[taskId].data[2] = 0;
}
void sub_812A36C(struct Sprite *sprite)
{
- sprite->data[0] ++;
+ sprite->data[0]++;
sprite->data[0] &= 0x1F;
if (sprite->data[0] > 15)
- {
sprite->invisible = TRUE;
- }
else
- {
sprite->invisible = FALSE;
- }
}
void sub_812A39C(void)
{
if (gSaveBlock2Ptr->playerGender == MALE)
- {
LoadSpritePalette(&gUnknown_085A73D8);
- }
else
- {
LoadSpritePalette(&gUnknown_085A73E0);
- }
}
void sub_812A3C8(void)
{
- FreeSpritePaletteByTag(OVERWORLD_PLACE_DECOR_PLAYER_PAL_TAG);
+ FreeSpritePaletteByTag(PLACE_DECORATION_PLAYER_TAG);
}
void sub_812A3D4(u8 taskId)
{
if (IsSelectedDecorInThePC() == TRUE)
{
- StringCopy(gStringVar1, gDecorations[gCurDecorInventoryItems[gCurDecorationIndex]].name);
+ StringCopy(gStringVar1, gDecorations[gCurDecorationItems[gCurDecorationIndex]].name);
StringExpandPlaceholders(gStringVar4, gText_DecorationWillBeDiscarded);
DisplayItemMessageOnField(taskId, gStringVar4, sub_812A458);
}
@@ -2741,9 +2674,9 @@ void sub_812A458(u8 taskId)
void sub_812A478(u8 taskId)
{
- gCurDecorInventoryItems[gCurDecorationIndex] = DECOR_NONE;
- sCurDecorCatCount = CountDecorationCategoryN(sCurDecorationCategory);
- CondenseDecorationCategoryN(sCurDecorationCategory);
+ gCurDecorationItems[gCurDecorationIndex] = DECOR_NONE;
+ sNumOwnedDecorationsInCurCategory = GetNumOwnedDecorationsInCategory(sCurDecorationCategory);
+ CondenseDecorationsInCategory(sCurDecorationCategory);
IdentifyOwnedDecorationsCurrentlyInUseInternal(taskId);
StringExpandPlaceholders(gStringVar4, gText_DecorationThrownAway);
DisplayItemMessageOnField(taskId, gStringVar4, sub_8127A5C);
diff --git a/src/decoration_inventory.c b/src/decoration_inventory.c
index 308320206..80646c69c 100644
--- a/src/decoration_inventory.c
+++ b/src/decoration_inventory.c
@@ -32,7 +32,7 @@ void SetDecorationInventoriesPointers(void)
SET_DECOR_INV(5, gSaveBlock1Ptr->decorPoster);
SET_DECOR_INV(6, gSaveBlock1Ptr->decorDoll);
SET_DECOR_INV(7, gSaveBlock1Ptr->decorCushion);
- sub_8126968();
+ InitDecorationContextItems();
}
static void ClearDecorationInventory(u8 idx)
@@ -120,7 +120,7 @@ bool8 DecorationCheckSpace(u8 decor)
s8 DecorationRemove(u8 decor)
{
u8 i;
- u8 idx;
+ u8 category;
i = 0;
if (decor == DECOR_NONE)
@@ -129,38 +129,38 @@ s8 DecorationRemove(u8 decor)
}
for (i = 0; i < gDecorationInventories[gDecorations[decor].category].size; i ++)
{
- idx = gDecorations[decor].category;
- if (gDecorationInventories[idx].items[i] == decor)
+ category = gDecorations[decor].category;
+ if (gDecorationInventories[category].items[i] == decor)
{
- gDecorationInventories[idx].items[i] = DECOR_NONE;
- CondenseDecorationCategoryN(idx);
+ gDecorationInventories[category].items[i] = DECOR_NONE;
+ CondenseDecorationsInCategory(category);
return 1;
}
}
return 0;
}
-void CondenseDecorationCategoryN(u8 idx)
+void CondenseDecorationsInCategory(u8 category)
{
u8 i;
u8 j;
u8 tmp;
- for (i = 0; i < gDecorationInventories[idx].size; i ++)
+ for (i = 0; i < gDecorationInventories[category].size; i ++)
{
- for (j = i + 1; j < gDecorationInventories[idx].size; j ++)
+ for (j = i + 1; j < gDecorationInventories[category].size; j ++)
{
- if (gDecorationInventories[idx].items[j] != DECOR_NONE && (gDecorationInventories[idx].items[i] == DECOR_NONE || gDecorationInventories[idx].items[i] > gDecorationInventories[idx].items[j]))
+ if (gDecorationInventories[category].items[j] != DECOR_NONE && (gDecorationInventories[category].items[i] == DECOR_NONE || gDecorationInventories[category].items[i] > gDecorationInventories[category].items[j]))
{
- tmp = gDecorationInventories[idx].items[i];
- gDecorationInventories[idx].items[i] = gDecorationInventories[idx].items[j];
- gDecorationInventories[idx].items[j] = tmp;
+ tmp = gDecorationInventories[category].items[i];
+ gDecorationInventories[category].items[i] = gDecorationInventories[category].items[j];
+ gDecorationInventories[category].items[j] = tmp;
}
}
}
}
-u8 CountDecorationCategoryN(u8 idx)
+u8 GetNumOwnedDecorationsInCategory(u8 idx)
{
u8 i;
u8 ct;
@@ -176,15 +176,14 @@ u8 CountDecorationCategoryN(u8 idx)
return ct;
}
-u8 CountDecorations(void)
+u8 GetNumOwnedDecorations(void)
{
- u8 idx;
- u8 ct;
+ u8 category;
+ u8 count;
- ct = 0;
- for (idx = 0; idx < 8; idx ++)
- {
- ct += CountDecorationCategoryN(idx);
- }
- return ct;
+ count = 0;
+ for (category = 0; category < DECORCAT_COUNT; category++)
+ count += GetNumOwnedDecorationsInCategory(category);
+
+ return count;
}
diff --git a/src/diploma.c b/src/diploma.c
index 2113b09ed..92c7df703 100644
--- a/src/diploma.c
+++ b/src/diploma.c
@@ -14,6 +14,7 @@
#include "overworld.h"
#include "menu.h"
#include "pokedex.h"
+#include "constants/rgb.h"
extern const u8 gText_DexNational[];
extern const u8 gText_DexHoenn[];
@@ -83,7 +84,7 @@ void CB2_ShowDiploma(void)
CopyBgTilemapBufferToVram(1);
DisplayDiplomaText();
BlendPalettes(-1, 16, 0);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
EnableInterrupts(1);
SetVBlankCallback(VBlankCB);
SetMainCallback2(MainCB2);
@@ -108,7 +109,7 @@ static void Task_DiplomaWaitForKeyPress(u8 taskId)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
gTasks[taskId].func = Task_DiplomaFadeOut;
}
}
diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c
index 38157aa92..966dccfcf 100644
--- a/src/dodrio_berry_picking.c
+++ b/src/dodrio_berry_picking.c
@@ -360,7 +360,7 @@ void sub_8024BC8(u8 taskId)
{
if (gReceivedRemoteLinkPlayers != 0)
{
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0);
}
gUnknown_02022C98->unk_000C++;
diff --git a/src/easy_chat.c b/src/easy_chat.c
index 4388592f7..93456631a 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -2,7 +2,7 @@
#include "alloc.h"
#include "bard_music.h"
#include "bg.h"
-#include "data2.h"
+#include "data.h"
#include "decompress.h"
#include "dewford_trend.h"
#include "dynamic_placeholder_text_util.h"
@@ -32,6 +32,7 @@
#include "constants/flags.h"
#include "constants/songs.h"
#include "constants/species.h"
+#include "constants/rgb.h"
#define EZCHAT_TASK_STATE 0
#define EZCHAT_TASK_TYPE 1
@@ -1139,20 +1140,20 @@ static void sub_811A2FC(u8 taskId)
case 0:
SetVBlankCallback(VBlankCallback_EasyChatScreen);
BlendPalettes(0xFFFFFFFF, 16, 0);
- BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK);
data[EZCHAT_TASK_STATE] = 5;
break;
case 1:
v0 = sub_811AAAC();
if (sub_811A88C(v0))
{
- BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK);
data[EZCHAT_TASK_STATE] = 3;
data[EZCHAT_TASK_UNK06] = v0;
}
else if (v0 == 0x18)
{
- BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK);
data[EZCHAT_TASK_STATE] = 4;
}
else if (v0 != 0)
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index fc559e001..605cd0366 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -33,7 +33,9 @@
#include "naming_screen.h"
#include "pokemon_storage_system.h"
#include "field_screen_effect.h"
+#include "data.h"
#include "battle.h" // to get rid of later
+#include "constants/rgb.h"
struct EggHatchData
{
@@ -52,7 +54,6 @@ struct EggHatchData
u8 textColor[3];
};
-extern const struct CompressedSpriteSheet gMonFrontPicTable[];
extern const u32 gUnknown_08331F60[]; // tilemap gameboy circle
extern const u8 gText_HatchedFromEgg[];
extern const u8 gText_NickHatchPrompt[];
@@ -596,7 +597,7 @@ static void CB2_EggHatch_1(void)
switch (sEggHatchData->CB2_state)
{
case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
sEggHatchData->eggSpriteID = CreateSprite(&sSpriteTemplate_EggHatch, 120, 75, 5);
ShowBg(0);
ShowBg(1);
@@ -679,7 +680,7 @@ static void CB2_EggHatch_1(void)
}
break;
case 11:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
sEggHatchData->CB2_state++;
break;
case 12:
@@ -789,7 +790,7 @@ static void SpriteCB_Egg_4(struct Sprite* sprite)
{
s16 i;
if (sprite->data[0] == 0)
- BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 0x10, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 0x10, RGB_WHITEALPHA);
if (sprite->data[0] < 4u)
{
for (i = 0; i <= 3; i++)
@@ -813,7 +814,7 @@ static void SpriteCB_Egg_5(struct Sprite* sprite)
StartSpriteAffineAnim(&gSprites[sEggHatchData->pokeSpriteID], 1);
}
if (sprite->data[0] == 8)
- BeginNormalPaletteFade(0xFFFFFFFF, -1, 0x10, 0, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0x10, 0, RGB_WHITEALPHA);
if (sprite->data[0] <= 9)
gSprites[sEggHatchData->pokeSpriteID].pos1.y -= 1;
if (sprite->data[0] > 40)
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
index 45b721f56..75f758a12 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -25,6 +25,7 @@
#include "constants/event_object_movement_constants.h"
#include "constants/event_objects.h"
#include "constants/field_effects.h"
+#include "constants/items.h"
// this file was known as evobjmv.c in Game Freak's original source
@@ -1534,10 +1535,10 @@ static u8 TrySetupEventObjectSprite(struct EventObjectTemplate *eventObjectTempl
paletteSlot -= 16;
sub_808EAB0(graphicsInfo->paletteTag1, paletteSlot);
}
+
if (eventObject->movementType == MOVEMENT_TYPE_INVISIBLE)
- {
eventObject->invisible = TRUE;
- }
+
*(u16 *)&spriteTemplate->paletteTag = 0xFFFF;
spriteId = CreateSprite(spriteTemplate, 0, 0, 0);
if (spriteId == MAX_SPRITES)
@@ -1545,6 +1546,7 @@ static u8 TrySetupEventObjectSprite(struct EventObjectTemplate *eventObjectTempl
gEventObjects[eventObjectId].active = FALSE;
return EVENT_OBJECTS_COUNT;
}
+
sprite = &gSprites[spriteId];
sub_8092FF0(eventObject->currentCoords.x + cameraX, eventObject->currentCoords.y + cameraY, &sprite->pos1.x, &sprite->pos1.y);
sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
@@ -1557,15 +1559,14 @@ static u8 TrySetupEventObjectSprite(struct EventObjectTemplate *eventObjectTempl
eventObject->spriteId = spriteId;
eventObject->inanimate = graphicsInfo->inanimate;
if (!eventObject->inanimate)
- {
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(eventObject->facingDirection));
- }
+
SetObjectSubpriorityByZCoord(eventObject->previousElevation, sprite, 1);
UpdateEventObjectVisibility(eventObject, sprite);
return eventObjectId;
}
-static u8 TrySpawnEventObject(struct EventObjectTemplate *eventObjectTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY)
+static u8 TrySpawnEventObjectTemplate(struct EventObjectTemplate *eventObjectTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY)
{
u8 eventObjectId;
struct SpriteTemplate spriteTemplate;
@@ -1579,14 +1580,12 @@ static u8 TrySpawnEventObject(struct EventObjectTemplate *eventObjectTemplate, u
spriteTemplate.images = &spriteFrameImage;
eventObjectId = TrySetupEventObjectSprite(eventObjectTemplate, &spriteTemplate, mapNum, mapGroup, cameraX, cameraY);
if (eventObjectId == EVENT_OBJECTS_COUNT)
- {
return EVENT_OBJECTS_COUNT;
- }
+
gSprites[gEventObjects[eventObjectId].spriteId].images = graphicsInfo->images;
- if (subspriteTables != NULL)
- {
+ if (subspriteTables)
SetSubspriteTables(&gSprites[gEventObjects[eventObjectId].spriteId], subspriteTables);
- }
+
return eventObjectId;
}
@@ -1596,7 +1595,7 @@ u8 SpawnSpecialEventObject(struct EventObjectTemplate *eventObjectTemplate)
s16 cameraY;
GetEventObjectMovingCameraOffset(&cameraX, &cameraY);
- return TrySpawnEventObject(eventObjectTemplate, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY);
+ return TrySpawnEventObjectTemplate(eventObjectTemplate, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY);
}
u8 SpawnSpecialEventObjectParameterized(u8 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 z)
@@ -1619,19 +1618,17 @@ u8 SpawnSpecialEventObjectParameterized(u8 graphicsId, u8 movementBehavior, u8 l
return SpawnSpecialEventObject(&eventObjectTemplate);
}
-u8 show_sprite(u8 localId, u8 mapNum, u8 mapGroup)
+u8 TrySpawnEventObject(u8 localId, u8 mapNum, u8 mapGroup)
{
struct EventObjectTemplate *eventObjectTemplate;
- s16 cameraX;
- s16 cameraY;
+ s16 cameraX, cameraY;
eventObjectTemplate = GetEventObjectTemplateByLocalIdAndMap(localId, mapNum, mapGroup);
- if (eventObjectTemplate == NULL)
- {
+ if (!eventObjectTemplate)
return EVENT_OBJECTS_COUNT;
- }
+
GetEventObjectMovingCameraOffset(&cameraX, &cameraY);
- return TrySpawnEventObject(eventObjectTemplate, mapNum, mapGroup, cameraX, cameraY);
+ return TrySpawnEventObjectTemplate(eventObjectTemplate, mapNum, mapGroup, cameraX, cameraY);
}
static void MakeObjectTemplateFromEventObjectGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables)
@@ -1765,7 +1762,7 @@ void TrySpawnEventObjects(s16 cameraX, s16 cameraY)
if (top <= npcY && bottom >= npcY && left <= npcX && right >= npcX
&& !FlagGet(template->flagId))
- TrySpawnEventObject(template, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY);
+ TrySpawnEventObjectTemplate(template, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY);
}
}
}
@@ -2009,10 +2006,9 @@ static void get_berry_tree_graphics(struct EventObject *eventObject, struct Spri
sprite->invisible = FALSE;
berryId = GetBerryTypeByBerryTreeId(eventObject->trainerRange_berryTreeId) - 1;
berryStage--;
- if (berryId >= NUM_BERRIES)
- {
+ if (berryId > ITEM_TO_BERRY(LAST_BERRY_INDEX))
berryId = 0;
- }
+
EventObjectSetGraphicsId(eventObject, gBerryTreeEventObjectGraphicsIdTablePointers[berryId][berryStage]);
sprite->images = gBerryTreePicTablePointers[berryId];
sprite->oam.paletteNum = gBerryTreePaletteSlotTablePointers[berryId][berryStage];
@@ -2245,7 +2241,7 @@ static void SetEventObjectCoords(struct EventObject *eventObject, s16 x, s16 y)
eventObject->currentCoords.y = y;
}
-void sub_808EB08(struct EventObject *eventObject, s16 x, s16 y)
+void MoveEventObjectToMapCoords(struct EventObject *eventObject, s16 x, s16 y)
{
struct Sprite *sprite;
const struct EventObjectGraphicsInfo *graphicsInfo;
@@ -2260,20 +2256,17 @@ void sub_808EB08(struct EventObject *eventObject, s16 x, s16 y)
sprite->pos1.y += 16 + sprite->centerToCornerVecY;
sub_808E38C(eventObject);
if (eventObject->trackedByCamera)
- {
CameraObjectReset1();
- }
}
-void sub_808EBA8(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
+void TryMoveEventObjectToMapCoords(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
{
u8 eventObjectId;
-
if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
{
x += 7;
y += 7;
- sub_808EB08(&gEventObjects[eventObjectId], x, y);
+ MoveEventObjectToMapCoords(&gEventObjects[eventObjectId], x, y);
}
}
@@ -2604,15 +2597,13 @@ void OverrideTemplateCoordsForEventObject(const struct EventObject *eventObject)
}
}
-void OverrideMovementTypeForEventObject(const struct EventObject *eventObject, const u8 *script)
+static void OverrideEventObjectTemplateScript(const struct EventObject *eventObject, const u8 *script)
{
struct EventObjectTemplate *eventObjectTemplate;
eventObjectTemplate = GetBaseTemplateForEventObject(eventObject);
- if (eventObjectTemplate != NULL)
- {
+ if (eventObjectTemplate)
eventObjectTemplate->script = script;
- }
}
void TryOverrideTemplateCoordsForEventObject(const struct EventObject *eventObject, u8 movementType)
@@ -2626,30 +2617,26 @@ void TryOverrideTemplateCoordsForEventObject(const struct EventObject *eventObje
}
}
-void sub_808F254(u8 localId, u8 mapNum, u8 mapGroup)
+void TryOverrideEventObjectTemplateCoords(u8 localId, u8 mapNum, u8 mapGroup)
{
u8 eventObjectId;
-
if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
- {
OverrideTemplateCoordsForEventObject(&gEventObjects[eventObjectId]);
- }
}
-void sub_808F28C(u8 localId, u8 mapNum, u8 mapGroup, u8 decorCat)
+void OverrideSecretBaseDecorationSpriteScript(u8 localId, u8 mapNum, u8 mapGroup, u8 decorationCategory)
{
u8 eventObjectId;
-
if (!TryGetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &eventObjectId))
{
- switch (decorCat)
+ switch (decorationCategory)
{
- case DECORCAT_DOLL:
- OverrideMovementTypeForEventObject(&gEventObjects[eventObjectId], EventScript_SecretPower1);
- break;
- case DECORCAT_CUSHION:
- OverrideMovementTypeForEventObject(&gEventObjects[eventObjectId], EventScript_SecretPower2);
- break;
+ case DECORCAT_DOLL:
+ OverrideEventObjectTemplateScript(&gEventObjects[eventObjectId], SecretBase_EventScript_DollInteract);
+ break;
+ case DECORCAT_CUSHION:
+ OverrideEventObjectTemplateScript(&gEventObjects[eventObjectId], SecretBase_EventScript_CushionInteract);
+ break;
}
}
}
diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c
index e36d47c2b..816929f8b 100644
--- a/src/evolution_graphics.c
+++ b/src/evolution_graphics.c
@@ -8,6 +8,7 @@
#include "sound.h"
#include "constants/songs.h"
#include "palette.h"
+#include "constants/rgb.h"
// this file's functions
static void EvoSparkle_DummySpriteCb(struct Sprite* sprite);
@@ -268,7 +269,7 @@ static void EvoTask_BeginPreSet1_FadeAndPlaySE(u8 taskID)
{
SetEvoSparklesMatrices();
gTasks[taskID].tFrameCounter = 0;
- BeginNormalPaletteFade(3 << gTasks[taskID].data[1], 0xA, 0, 0x10, 0x7FFF);
+ BeginNormalPaletteFade(3 << gTasks[taskID].data[1], 0xA, 0, 0x10, RGB_WHITE);
gTasks[taskID].func = EvoTask_CreatePreEvoSparkleSet1;
PlaySE(SE_W025);
}
@@ -386,7 +387,7 @@ static void EvoTask_BeginPostSparklesSet2_AndFlash(u8 taskID)
SetEvoSparklesMatrices();
gTasks[taskID].tFrameCounter = 0;
CpuSet(&gPlttBufferFaded[0x20], &gPlttBufferUnfaded[0x20], 0x30);
- BeginNormalPaletteFade(0xFFF9041C, 0, 0, 0x10, 0x7FFF); // was 0xFFF9001C in R/S
+ BeginNormalPaletteFade(0xFFF9041C, 0, 0, 0x10, RGB_WHITE); // was 0xFFF9001C in R/S
gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet2_AndFlash;
PlaySE(SE_W080);
}
@@ -407,7 +408,7 @@ static void EvoTask_CreatePostEvoSparklesSet2_AndFlash(u8 taskID)
CreatePostEvoSparkleSet2(i);
break;
case 32:
- BeginNormalPaletteFade(0xFFFF041C, 0x10, 0x10, 0, 0x7FFF); // was 0xFFF9001C in R/S
+ BeginNormalPaletteFade(0xFFFF041C, 0x10, 0x10, 0, RGB_WHITE); // was 0xFFF9001C in R/S
break;
}
gTasks[taskID].tFrameCounter++;
@@ -434,7 +435,7 @@ static void EvoTask_BeginPostSparklesSet2_AndFlash_Trade(u8 taskID)
SetEvoSparklesMatrices();
gTasks[taskID].tFrameCounter = 0;
CpuSet(&gPlttBufferFaded[0x20], &gPlttBufferUnfaded[0x20], 0x30);
- BeginNormalPaletteFade(0xFFF90400, 0, 0, 0x10, 0x7FFF); // was 0xFFFF0001 in R/S
+ BeginNormalPaletteFade(0xFFF90400, 0, 0, 0x10, RGB_WHITE); // was 0xFFFF0001 in R/S
gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade;
PlaySE(SE_W080);
}
@@ -455,7 +456,7 @@ static void EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade(u8 taskID)
CreatePostEvoSparkleSet2(i);
break;
case 32:
- BeginNormalPaletteFade(0xFFFF0400, 0x10, 0x10, 0, 0x7FFF); // was 0xFFFF0001 in R/S
+ BeginNormalPaletteFade(0xFFFF0400, 0x10, 0x10, 0, RGB_WHITE); // was 0xFFFF0001 in R/S
break;
}
gTasks[taskID].tFrameCounter++;
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index 8c4847b8d..96ca2ed1c 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -3,7 +3,7 @@
#include "battle.h"
#include "battle_message.h"
#include "bg.h"
-#include "data2.h"
+#include "data.h"
#include "decompress.h"
#include "evolution_scene.h"
#include "evolution_graphics.h"
@@ -32,6 +32,7 @@
#include "constants/battle_string_ids.h"
#include "constants/species.h"
#include "constants/songs.h"
+#include "constants/rgb.h"
struct EvoInfo
{
@@ -52,8 +53,6 @@ void (*gCB2_AfterEvolution)(void);
#define sEvoCursorPos gBattleCommunication[1] // when learning a new move
#define sEvoGraphicsTaskID gBattleCommunication[2]
-extern const struct CompressedSpriteSheet gMonFrontPicTable[];
-
// this file's functions
static void Task_EvolutionScene(u8 taskID);
static void Task_TradeEvolutionScene(u8 taskID);
@@ -171,7 +170,7 @@ static void Task_BeginEvolutionScene(u8 taskID)
switch (gTasks[taskID].tState)
{
case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskID].tState++;
break;
case 1:
@@ -368,7 +367,7 @@ static void CB2_EvolutionSceneLoadGraphics(void)
SetVBlankCallback(VBlankCB_EvolutionScene);
SetMainCallback2(CB2_EvolutionSceneUpdate);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
ShowBg(0);
ShowBg(1);
@@ -445,14 +444,14 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void)
case 6:
if (gWirelessCommType)
{
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0);
}
BlendPalettes(-1,0x10, 0);
gMain.state++;
break;
case 7:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
sub_807B140();
ShowBg(0);
ShowBg(1);
@@ -557,7 +556,7 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon)
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_NICKNAME, (gSpeciesNames[gEvolutionTable[preEvoSpecies][1].targetSpecies]));
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_HELD_ITEM, (&data));
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MARKINGS, (&data));
- SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_10, (&data));
+ SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_ENCRYPT_SEPARATOR, (&data));
for (i = MON_DATA_COOL_RIBBON; i < MON_DATA_COOL_RIBBON + 5; i++)
SetMonData(&gPlayerParty[gPlayerPartyCount], i, (&data));
@@ -605,7 +604,7 @@ static void Task_EvolutionScene(u8 taskID)
switch (gTasks[taskID].tState)
{
case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
gSprites[sEvoStructPtr->preEvoSpriteID].invisible = FALSE;
gTasks[taskID].tState++;
ShowBg(0);
@@ -640,7 +639,7 @@ static void Task_EvolutionScene(u8 taskID)
{
PlayNewMapMusic(MUS_SHINKA);
gTasks[taskID].tState++;
- BeginNormalPaletteFade(0x1C, 4, 0, 0x10, 0);
+ BeginNormalPaletteFade(0x1C, 4, 0, 0x10, RGB_BLACK);
}
break;
case 5: // launch moving bg task, preapre evo sparkles
@@ -698,7 +697,7 @@ static void Task_EvolutionScene(u8 taskID)
m4aMPlayAllStop();
memcpy(&gPlttBufferUnfaded[0x20], sEvoStructPtr->savedPalette, 0x60);
sub_8140174();
- BeginNormalPaletteFade(0x1C, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0x1C, 0, 0x10, 0, RGB_BLACK);
gTasks[taskID].tState++;
}
break;
@@ -753,7 +752,7 @@ static void Task_EvolutionScene(u8 taskID)
}
else // no move to learn
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskID].tState++;
}
}
@@ -781,7 +780,7 @@ static void Task_EvolutionScene(u8 taskID)
if (!gTasks[sEvoGraphicsTaskID].isActive)
{
m4aMPlayAllStop();
- BeginNormalPaletteFade(0x6001C, 0, 0x10, 0, 0x7FFF);
+ BeginNormalPaletteFade(0x6001C, 0, 0x10, 0, RGB_WHITE);
gTasks[taskID].tState++;
}
break;
@@ -887,7 +886,7 @@ static void Task_EvolutionScene(u8 taskID)
{
gTasks[taskID].tLearnMoveState = gTasks[taskID].tData7;
if (gTasks[taskID].tLearnMoveState == 5)
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
}
}
if (gMain.newKeys & B_BUTTON)
@@ -1009,7 +1008,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
{
PlayBGM(MUS_SHINKA);
gTasks[taskID].tState++;
- BeginNormalPaletteFade(0x1C, 4, 0, 0x10, 0);
+ BeginNormalPaletteFade(0x1C, 4, 0, 0x10, RGB_BLACK);
}
break;
case 4:
@@ -1130,7 +1129,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
if (!gTasks[sEvoGraphicsTaskID].isActive)
{
m4aMPlayAllStop();
- BeginNormalPaletteFade((1 << (gSprites[sEvoStructPtr->preEvoSpriteID].oam.paletteNum + 16)) | (0x4001C), 0, 0x10, 0, 0x7FFF);
+ BeginNormalPaletteFade((1 << (gSprites[sEvoStructPtr->preEvoSpriteID].oam.paletteNum + 16)) | (0x4001C), 0, 0x10, 0, RGB_WHITE);
gTasks[taskID].tState++;
}
break;
@@ -1213,7 +1212,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
sub_807F1A8(0, gDisplayedStringBattle, 1);
gTasks[taskID].tLearnMoveState = gTasks[taskID].tData7;
if (gTasks[taskID].tLearnMoveState == 5)
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
break;
case 1:
case -1:
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index 5b685173e..455c38deb 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -16,6 +16,7 @@
#include "fldeff_misc.h"
#include "item_menu.h"
#include "link.h"
+#include "match_call.h"
#include "metatile_behavior.h"
#include "overworld.h"
#include "pokemon.h"
@@ -32,7 +33,6 @@
#include "constants/map_types.h"
#include "constants/maps.h"
#include "constants/songs.h"
-#include "match_call.h"
static EWRAM_DATA u8 sWildEncounterImmunitySteps = 0;
static EWRAM_DATA u16 sPreviousPlayerMetatileBehavior = 0;
@@ -227,8 +227,8 @@ static bool8 TryStartInteractionScript(struct MapPosition *position, u16 metatil
&& script != EventScript_PlayerPCFemale
&& script != EventScript_SecretBasePC
&& script != EventScript_RecordMixingSecretBasePC
- && script != EventScript_SecretPower1
- && script != EventScript_SecretPower2
+ && script != SecretBase_EventScript_DollInteract
+ && script != SecretBase_EventScript_CushionInteract
&& script != EventScript_PC)
PlaySE(SE_SELECT);
@@ -354,7 +354,7 @@ static const u8 *GetInteractedBackgroundEventScript(struct MapPosition *position
if (direction == DIR_NORTH)
{
gSpecialVar_0x8004 = bgEvent->bgUnion.secretBaseId;
- if (sub_80E9680())
+ if (TrySetCurSecretBase())
return EventScript_2759F1;
}
return NULL;
@@ -421,23 +421,23 @@ static const u8 *GetInteractedMetatileScript(struct MapPosition *position, u8 me
return EventScript_SecretBaseShieldOrToyTV;
if (MetatileBehavior_IsMB_C6(metatileBehavior) == TRUE)
{
- sub_80EB56C();
+ SetSecretBaseSecretsTvFlags_MiscFurnature();
return NULL;
}
- if (MetatileBehavior_IsLargeMatCenter(metatileBehavior) == TRUE)
+ if (MetatileBehavior_HoldsLargeDecoration(metatileBehavior) == TRUE)
{
- sub_80EB9E0();
+ SetSecretBaseSecretsTvFlags_LargeDecorationSpot();
return NULL;
}
- if (MetatileBehavior_IsSecretBaseLargeMatEdge(metatileBehavior) == TRUE)
+ if (MetatileBehavior_HoldsSmallDecoration(metatileBehavior) == TRUE)
{
- sub_80EBB28();
+ SetSecretBaseSecretsTvFlags_SmallDecorationSpot();
return NULL;
}
}
else if (MetatileBehavior_IsSecretBasePoster(metatileBehavior) == TRUE)
{
- sub_80EB498();
+ SetSecretBaseSecretsTvFlags_Poster();
return NULL;
}
diff --git a/src/field_effect.c b/src/field_effect.c
index 93d7e5ef8..22bf44f28 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -33,8 +33,6 @@
#define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))}
-extern struct CompressedSpritePalette gMonPaletteTable[]; // GF made a mistake and did not extern it as const.
-
EWRAM_DATA s32 gFieldEffectArguments[8] = {0};
// Static type declarations
@@ -237,7 +235,9 @@ static void Fldeff_MoveDeoxysRock_Step(u8 taskId);
static IWRAM_DATA u8 sActiveList[32];
// External declarations
-
+extern struct CompressedSpritePalette gMonPaletteTable[]; // GF made a mistake and did not extern it as const.
+extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
+extern const struct CompressedSpriteSheet gTrainerFrontPicTable[];
extern u8 *gFieldEffectScriptPointers[];
extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[];
@@ -3485,7 +3485,7 @@ static void sub_80B9978(struct Task *task)
eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
sprite = &gSprites[eventObject->spriteId];
eventObject->inanimate = 0;
- sub_808EB08(eventObject, eventObject->currentCoords.x, eventObject->currentCoords.y);
+ MoveEventObjectToMapCoords(eventObject, eventObject->currentCoords.x, eventObject->currentCoords.y);
sprite->pos2.x = 0;
sprite->pos2.y = 0;
sprite->coordOffsetEnabled = 1;
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index a070fe0e1..ab2667c8c 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -1188,9 +1188,9 @@ u8 PlayerGetZCoord(void)
return gEventObjects[gPlayerAvatar.eventObjectId].previousElevation;
}
-void sub_808BC90(s16 a, s16 b)
+void sub_808BC90(s16 x, s16 y)
{
- sub_808EB08(&gEventObjects[gPlayerAvatar.eventObjectId], a, b);
+ MoveEventObjectToMapCoords(&gEventObjects[gPlayerAvatar.eventObjectId], x, y);
}
u8 TestPlayerAvatarFlags(u8 a)
diff --git a/src/field_region_map.c b/src/field_region_map.c
index 1d54333fb..ac1b26154 100644
--- a/src/field_region_map.c
+++ b/src/field_region_map.c
@@ -11,6 +11,7 @@
#include "text.h"
#include "text_window.h"
#include "window.h"
+#include "constants/rgb.h"
// Static type declarations
@@ -145,7 +146,7 @@ static void FieldUpdateRegionMap(void)
schedule_bg_copy_tilemap_to_vram(0);
DrawStdFrameWithCustomTileAndPalette(0, 0, 0x27, 0xd);
PrintRegionMapSecName();
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
sFieldRegionMapHandler->state++;
break;
case 2:
@@ -173,7 +174,7 @@ static void FieldUpdateRegionMap(void)
}
break;
case 5:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
sFieldRegionMapHandler->state++;
break;
case 6:
diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c
index 5769f44af..9a5d47156 100644
--- a/src/field_screen_effect.c
+++ b/src/field_screen_effect.c
@@ -1132,7 +1132,7 @@ static void sub_80B0318(u8 taskId)
data[0] = 1;
break;
case 1:
- sub_8199DF0(0, 17, 0, 1);
+ sub_8199DF0(0, PIXEL_FILL(1), 0, 1);
sub_80B028C(data[1]);
sub_80B003C(data[2], data[3], 1, 160, 1, 2);
data[0] = 2;
@@ -1179,7 +1179,7 @@ static void sub_80B0318(u8 taskId)
if (sub_80B02C8(data[5]) == TRUE)
{
data[0] = 5;
- sub_8199DF0(0, 0, 0, 1);
+ sub_8199DF0(0, PIXEL_FILL(0), 0, 1);
}
}
break;
diff --git a/src/field_specials.c b/src/field_specials.c
index 20c2e6173..8bd990063 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -3,7 +3,7 @@
#include "battle.h"
#include "battle_tower.h"
#include "cable_club.h"
-#include "data2.h"
+#include "data.h"
#include "decoration.h"
#include "diploma.h"
#include "event_data.h"
@@ -59,20 +59,20 @@
EWRAM_DATA bool8 gBikeCyclingChallenge = FALSE;
EWRAM_DATA u8 gBikeCollisions = 0;
-EWRAM_DATA u32 gBikeCyclingTimer = 0;
-EWRAM_DATA u8 gUnknown_0203AB5C = 0;
-EWRAM_DATA u8 gUnknown_0203AB5D = 0;
-EWRAM_DATA u8 gUnknown_0203AB5E = 0;
-EWRAM_DATA u16 gUnknown_0203AB60 = 0;
-EWRAM_DATA u16 gUnknown_0203AB62 = 0;
-EWRAM_DATA struct ListMenuItem *gUnknown_0203AB64 = NULL;
-EWRAM_DATA u16 gUnknown_0203AB68 = 0;
-EWRAM_DATA u16 gUnknown_0203AB6A = 0;
-EWRAM_DATA u8 gUnknown_0203AB6C = 0;
-EWRAM_DATA u8 gUnknown_0203AB6D = 0;
-EWRAM_DATA u8 gUnknown_0203AB6E = 0;
-EWRAM_DATA u8 gUnknown_0203AB6F = 0;
-EWRAM_DATA u32 gUnknown_0203AB70 = 0;
+static EWRAM_DATA u32 gBikeCyclingTimer = 0;
+static EWRAM_DATA u8 gUnknown_0203AB5C = 0;
+static EWRAM_DATA u8 gUnknown_0203AB5D = 0;
+static EWRAM_DATA u8 gUnknown_0203AB5E = 0;
+static EWRAM_DATA u16 gUnknown_0203AB60 = 0;
+static EWRAM_DATA u16 gUnknown_0203AB62 = 0;
+static EWRAM_DATA struct ListMenuItem *gUnknown_0203AB64 = NULL;
+static EWRAM_DATA u16 gUnknown_0203AB68 = 0;
+static EWRAM_DATA u16 gUnknown_0203AB6A = 0;
+static EWRAM_DATA u8 gUnknown_0203AB6C = 0;
+static EWRAM_DATA u8 gUnknown_0203AB6D = 0;
+static EWRAM_DATA u8 gUnknown_0203AB6E = 0;
+static EWRAM_DATA u8 gUnknown_0203AB6F = 0;
+static EWRAM_DATA u32 gUnknown_0203AB70 = 0;
struct ListMenuTemplate gUnknown_030061D0;
diff --git a/src/fieldmap.c b/src/fieldmap.c
index a96b71c0f..b2b80a2df 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -52,15 +52,15 @@ struct MapHeader const *const mapconnection_get_mapheader(struct MapConnection *
void InitMap(void)
{
InitMapLayoutData(&gMapHeader);
- sub_80E8EE0(gMapHeader.events);
+ SetOccupiedSecretBaseEntranceMetatiles(gMapHeader.events);
RunOnLoadMapScript();
}
void InitMapFromSavedGame(void)
{
InitMapLayoutData(&gMapHeader);
- sub_80E9238(0);
- sub_80E8EE0(gMapHeader.events);
+ InitSecretBaseAppearance(FALSE);
+ SetOccupiedSecretBaseEntranceMetatiles(gMapHeader.events);
LoadSavedMapView();
RunOnLoadMapScript();
UpdateTVScreensOnMap(gBackupMapLayout.width, gBackupMapLayout.height);
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c
index 3da1a9217..be655b86a 100644
--- a/src/fldeff_cut.c
+++ b/src/fldeff_cut.c
@@ -23,7 +23,7 @@
extern struct MapPosition gPlayerFacingPosition;
-extern const u8 Route103_EventScript_290705[];
+extern const u8 EventScript_FldEffCut[];
extern const u8 FarawayIsland_Interior_EventScript_267EDB[];
extern const u8 gFieldEffectPic_CutGrass[];
@@ -327,7 +327,7 @@ bool8 FldEff_UseCutOnGrass(void)
static void FieldCallback_CutTree(void)
{
gFieldEffectArguments[0] = GetCursorSelectionMonId();
- ScriptContext1_SetupScript(Route103_EventScript_290705);
+ ScriptContext1_SetupScript(EventScript_FldEffCut);
}
bool8 FldEff_UseCutOnTree(void)
diff --git a/src/fldeff_misc.c b/src/fldeff_misc.c
index efde43b76..39ed30260 100644
--- a/src/fldeff_misc.c
+++ b/src/fldeff_misc.c
@@ -488,8 +488,8 @@ static void sub_80F9DFC(u8 taskId)
static void SetCurrentSecretBase(void)
{
- sub_80E9608(&gPlayerFacingPosition, gMapHeader.events);
- sub_80E8B6C();
+ SetCurSecretBaseIdFromPosition(&gPlayerFacingPosition, gMapHeader.events);
+ TrySetCurSecretBaseIndex();
}
static void AdjustSecretPowerSpritePixelOffsets(void)
@@ -544,7 +544,7 @@ bool8 SetUpFieldMove_SecretPower(void)
{
u8 mb;
- sub_80E8BC8();
+ CheckPlayerHasSecretBase();
if (gSpecialVar_Result == 1 || GetPlayerFacingDirection() != DIR_NORTH)
return FALSE;
@@ -623,10 +623,8 @@ static void CaveEntranceSpriteCallback2(struct Sprite *sprite)
{
if (sprite->data[0] < 40)
{
- sprite->data[0]++;
-
- if (sprite->data[0] == 20)
- sub_80E8D4C();
+ if (++sprite->data[0] == 20)
+ ToggleSecretBaseEntranceMetatile();
}
else
{
@@ -681,7 +679,7 @@ bool8 FldEff_SecretPowerTree(void)
148);
if (gFieldEffectArguments[7] == 1 || gFieldEffectArguments[7] == 3)
- sub_80E8D4C();
+ ToggleSecretBaseEntranceMetatile();
return FALSE;
}
@@ -702,7 +700,7 @@ static void TreeEntranceSpriteCallback2(struct Sprite *sprite)
if (sprite->data[0] >= 40)
{
if (gFieldEffectArguments[7] == 0 || gFieldEffectArguments[7] == 2)
- sub_80E8D4C();
+ ToggleSecretBaseEntranceMetatile();
sprite->data[0] = 0;
sprite->callback = TreeEntranceSpriteCallbackEnd;
@@ -764,7 +762,7 @@ static void ShrubEntranceSpriteCallback2(struct Sprite *sprite)
sprite->data[0]++;
if (sprite->data[0] == 20)
- sub_80E8D4C();
+ ToggleSecretBaseEntranceMetatile();
}
else
{
@@ -1168,7 +1166,7 @@ void GetShieldToyTVDecorationInfo(void)
bool8 sub_80FADE4(u16 metatileId, u8 arg1)
{
- if (!CurrentMapIsSecretBase())
+ if (!CurMapIsSecretBase())
return FALSE;
if (!arg1)
diff --git a/src/fldeff_rocksmash.c b/src/fldeff_rocksmash.c
index a9077f2ff..18cebdf11 100644
--- a/src/fldeff_rocksmash.c
+++ b/src/fldeff_rocksmash.c
@@ -140,7 +140,7 @@ bool8 SetUpFieldMove_RockSmash(void)
static void sub_81356C4(void)
{
gFieldEffectArguments[0] = GetCursorSelectionMonId();
- ScriptContext1_SetupScript(Route111_EventScript_2907F0);
+ ScriptContext1_SetupScript(EventScript_FldEffRockSmash);
}
bool8 FldEff_UseRockSmash(void)
diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c
index c57ab8cdc..47fc7061c 100644
--- a/src/fldeff_strength.c
+++ b/src/fldeff_strength.c
@@ -30,7 +30,7 @@ bool8 SetUpFieldMove_Strength(void)
static void FldEff_UseStrength(void)
{
gFieldEffectArguments[0] = GetCursorSelectionMonId();
- ScriptContext1_SetupScript(FieryPath_EventScript_2908FD);
+ ScriptContext1_SetupScript(EventScript_FldEffStrength);
}
bool8 sub_8145E2C(void)
diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c
index a187353ff..788310b5d 100644
--- a/src/fldeff_sweetscent.c
+++ b/src/fldeff_sweetscent.c
@@ -93,7 +93,7 @@ static void FailSweetScentEncounter(u8 taskId)
{
CpuFastSet(gPaletteDecompressionBuffer, gPlttBufferUnfaded, 0x100);
sub_80AC3E4();
- ScriptContext1_SetupScript(EventScript_290CAE);
+ ScriptContext1_SetupScript(EventScript_FailSweetScent);
DestroyTask(taskId);
}
}
diff --git a/src/frontier_util.c b/src/frontier_util.c
index bce7b926f..4dd8159cb 100644
--- a/src/frontier_util.c
+++ b/src/frontier_util.c
@@ -21,7 +21,7 @@
#include "apprentice.h"
#include "pokedex.h"
#include "recorded_battle.h"
-#include "data2.h"
+#include "data.h"
#include "record_mixing.h"
#include "strings.h"
#include "alloc.h"
diff --git a/src/graphics.c b/src/graphics.c
index c243c64a5..0832101d8 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -21,112 +21,112 @@ const u32 gSmokescreenImpactPalette[] = INCBIN_U32("graphics/battle_anims/sprite
const u32 gBlankGfxCompressed[] = INCBIN_U32("graphics/interface/blank.4bpp.lz");
// Battle anims
-const u32 gBattleAnimSpriteSheet_146[] = INCBIN_U32("graphics/battle_anims/sprites/146.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_000[] = INCBIN_U32("graphics/battle_anims/sprites/000.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_003[] = INCBIN_U32("graphics/battle_anims/sprites/003.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_004[] = INCBIN_U32("graphics/battle_anims/sprites/004.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_005[] = INCBIN_U32("graphics/battle_anims/sprites/005.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_006[] = INCBIN_U32("graphics/battle_anims/sprites/006.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Bubble[] = INCBIN_U32("graphics/battle_anims/sprites/bubble.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Bone[] = INCBIN_U32("graphics/battle_anims/sprites/bone.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_AirWave[] = INCBIN_U32("graphics/battle_anims/sprites/air_wave.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Orb[] = INCBIN_U32("graphics/battle_anims/sprites/orb.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Sword[] = INCBIN_U32("graphics/battle_anims/sprites/sword.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Seed[] = INCBIN_U32("graphics/battle_anims/sprites/seed.4bpp.lz");
-const u32 gBattleAnimSpritePalette_115[] = INCBIN_U32("graphics/battle_anims/sprites/115.gbapal.lz");
-const u32 gBattleAnimSpritePalette_000[] = INCBIN_U32("graphics/battle_anims/sprites/000.gbapal.lz");
-const u32 gBattleAnimSpritePalette_003[] = INCBIN_U32("graphics/battle_anims/sprites/003.gbapal.lz");
-const u32 gBattleAnimSpritePalette_004[] = INCBIN_U32("graphics/battle_anims/sprites/004.gbapal.lz");
-const u32 gBattleAnimSpritePalette_005[] = INCBIN_U32("graphics/battle_anims/sprites/005.gbapal.lz");
-const u32 gBattleAnimSpritePalette_006[] = INCBIN_U32("graphics/battle_anims/sprites/006.gbapal.lz");
+const u32 gBattleAnimSpritePal_RainDrops[] = INCBIN_U32("graphics/battle_anims/sprites/rain_drops.gbapal.lz");
+const u32 gBattleAnimSpritePal_Bone[] = INCBIN_U32("graphics/battle_anims/sprites/bone.gbapal.lz");
+const u32 gBattleAnimSpritePal_AirWave[] = INCBIN_U32("graphics/battle_anims/sprites/air_wave.gbapal.lz");
+const u32 gBattleAnimSpritePal_Orb[] = INCBIN_U32("graphics/battle_anims/sprites/orb.gbapal.lz");
+const u32 gBattleAnimSpritePal_Sword[] = INCBIN_U32("graphics/battle_anims/sprites/sword.gbapal.lz");
+const u32 gBattleAnimSpritePal_Seed[] = INCBIN_U32("graphics/battle_anims/sprites/seed.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_161[] = INCBIN_U32("graphics/battle_anims/sprites/161.4bpp.lz");
-const u32 gBattleAnimSpritePalette_161[] = INCBIN_U32("graphics/battle_anims/sprites/161.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Needle[] = INCBIN_U32("graphics/battle_anims/sprites/needle.4bpp.lz");
+const u32 gBattleAnimSpritePal_Needle[] = INCBIN_U32("graphics/battle_anims/sprites/needle.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_007[] = INCBIN_U32("graphics/battle_anims/sprites/007.4bpp.lz");
-const u32 gBattleAnimSpritePalette_007[] = INCBIN_U32("graphics/battle_anims/sprites/007.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Explosion6[] = INCBIN_U32("graphics/battle_anims/sprites/explosion_6.4bpp.lz");
+const u32 gBattleAnimSpritePal_Explosion6[] = INCBIN_U32("graphics/battle_anims/sprites/explosion_6.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_008[] = INCBIN_U32("graphics/battle_anims/sprites/008.4bpp.lz");
-const u32 gBattleAnimSpritePalette_008[] = INCBIN_U32("graphics/battle_anims/sprites/008.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_PinkOrb[] = INCBIN_U32("graphics/battle_anims/sprites/pink_orb.4bpp.lz");
+const u32 gBattleAnimSpritePal_PinkOrb[] = INCBIN_U32("graphics/battle_anims/sprites/pink_orb.gbapal.lz");
-const u32 gBattleAnimSpritePalette_010[] = INCBIN_U32("graphics/battle_anims/sprites/010.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_010[] = INCBIN_U32("graphics/battle_anims/sprites/010.4bpp.lz");
+const u32 gBattleAnimSpritePal_IceCube[] = INCBIN_U32("graphics/battle_anims/sprites/ice_cube.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_IceCube[] = INCBIN_U32("graphics/battle_anims/sprites/ice_cube.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_009[] = INCBIN_U32("graphics/battle_anims/sprites/009.4bpp.lz");
-const u32 gBattleAnimSpritePalette_009[] = INCBIN_U32("graphics/battle_anims/sprites/009.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Gust[] = INCBIN_U32("graphics/battle_anims/sprites/gust.4bpp.lz");
+const u32 gBattleAnimSpritePal_Gust[] = INCBIN_U32("graphics/battle_anims/sprites/gust.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_011[] = INCBIN_U32("graphics/battle_anims/sprites/011.4bpp.lz");
-const u32 gBattleAnimSpritePalette_011[] = INCBIN_U32("graphics/battle_anims/sprites/011.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Spark2[] = INCBIN_U32("graphics/battle_anims/sprites/spark_2.4bpp.lz");
+const u32 gBattleAnimSpritePal_Spark2[] = INCBIN_U32("graphics/battle_anims/sprites/spark_2.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_012[] = INCBIN_U32("graphics/battle_anims/sprites/012.4bpp.lz");
-const u32 gBattleAnimSpritePalette_012[] = INCBIN_U32("graphics/battle_anims/sprites/012.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Orange[] = INCBIN_U32("graphics/battle_anims/sprites/orange.4bpp.lz");
+const u32 gBattleAnimSpritePal_Orange[] = INCBIN_U32("graphics/battle_anims/sprites/orange.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_152[] = INCBIN_U32("graphics/battle_anims/sprites/152.4bpp.lz");
-const u32 gBattleAnimSpritePalette_152[] = INCBIN_U32("graphics/battle_anims/sprites/152.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Spikes[] = INCBIN_U32("graphics/battle_anims/sprites/spikes.4bpp.lz");
+const u32 gBattleAnimSpritePal_Spikes[] = INCBIN_U32("graphics/battle_anims/sprites/spikes.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_013[] = INCBIN_U32("graphics/battle_anims/sprites/013.4bpp.lz");
-const u32 gBattleAnimSpritePalette_013[] = INCBIN_U32("graphics/battle_anims/sprites/013.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_YellowBall[] = INCBIN_U32("graphics/battle_anims/sprites/yellow_ball.4bpp.lz");
+const u32 gBattleAnimSpritePal_YellowBall[] = INCBIN_U32("graphics/battle_anims/sprites/yellow_ball.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_015[] = INCBIN_U32("graphics/battle_anims/sprites/015.4bpp.lz");
-const u32 gBattleAnimSpritePalette_015[] = INCBIN_U32("graphics/battle_anims/sprites/015.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_TiedBag[] = INCBIN_U32("graphics/battle_anims/sprites/tied_bag.4bpp.lz");
+const u32 gBattleAnimSpritePal_TiedBag[] = INCBIN_U32("graphics/battle_anims/sprites/tied_bag.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_016[] = INCBIN_U32("graphics/battle_anims/sprites/016.4bpp.lz");
-const u32 gBattleAnimSpritePalette_016[] = INCBIN_U32("graphics/battle_anims/sprites/016.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_BlackSmoke[] = INCBIN_U32("graphics/battle_anims/sprites/black_smoke.4bpp.lz");
+const u32 gBattleAnimSpritePal_BlackSmoke[] = INCBIN_U32("graphics/battle_anims/sprites/black_smoke.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_017[] = INCBIN_U32("graphics/battle_anims/sprites/017.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_BlackBall[] = INCBIN_U32("graphics/battle_anims/sprites/black_ball.4bpp.lz");
const u32 gUnknownGfx_C035B8[] = INCBIN_U32("graphics/unknown/unknown_C035B8.4bpp.lz");
-const u32 gBattleAnimSpritePalette_019[] = INCBIN_U32("graphics/battle_anims/sprites/019.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_019[] = INCBIN_U32("graphics/battle_anims/sprites/019.4bpp.lz");
+const u32 gBattleAnimSpritePal_Glass[] = INCBIN_U32("graphics/battle_anims/sprites/glass.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Glass[] = INCBIN_U32("graphics/battle_anims/sprites/glass.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_020[] = INCBIN_U32("graphics/battle_anims/sprites/020.4bpp.lz");
-const u32 gBattleAnimSpritePalette_020[] = INCBIN_U32("graphics/battle_anims/sprites/020.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_HornHit[] = INCBIN_U32("graphics/battle_anims/sprites/horn_hit.4bpp.lz");
+const u32 gBattleAnimSpritePal_HornHit[] = INCBIN_U32("graphics/battle_anims/sprites/horn_hit.gbapal.lz");
-const u32 gBattleAnimSpritePalette_023[] = INCBIN_U32("graphics/battle_anims/sprites/023.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_023[] = INCBIN_U32("graphics/battle_anims/sprites/023.4bpp.lz");
+const u32 gBattleAnimSpritePal_BlueShards[] = INCBIN_U32("graphics/battle_anims/sprites/blue_shards.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_BlueShards[] = INCBIN_U32("graphics/battle_anims/sprites/blue_shards.4bpp.lz");
const u32 gUnused_BattleSpritePalette_023[] = INCBIN_U32("graphics/unused/battle_anim_023.gbapal.lz");
const u32 gUnusedGfx_MusicNotes[] = INCBIN_U32("graphics/unused/music_notes.4bpp.lz");
-const u32 gBattleAnimSpritePalette_021[] = INCBIN_U32("graphics/battle_anims/sprites/021.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_021[] = INCBIN_U32("graphics/battle_anims/sprites/021.4bpp.lz");
+const u32 gBattleAnimSpritePal_Hit[] = INCBIN_U32("graphics/battle_anims/sprites/hit.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Hit[] = INCBIN_U32("graphics/battle_anims/sprites/hit.4bpp.lz");
-const u32 gBattleAnimSpritePalette_022[] = INCBIN_U32("graphics/battle_anims/sprites/022.gbapal.lz");
+const u32 gBattleAnimSpritePal_Hit2[] = INCBIN_U32("graphics/battle_anims/sprites/hit_2.gbapal.lz");
-const u32 gBattleAnimSpritePalette_025[] = INCBIN_U32("graphics/battle_anims/sprites/025.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_025[] = INCBIN_U32("graphics/battle_anims/sprites/025.4bpp.lz");
+const u32 gBattleAnimSpritePal_WavingHand[] = INCBIN_U32("graphics/battle_anims/sprites/waving_hand.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_WavingHand[] = INCBIN_U32("graphics/battle_anims/sprites/waving_hand.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_024[] = INCBIN_U32("graphics/battle_anims/sprites/024.4bpp.lz");
-const u32 gBattleAnimSpritePalette_024[] = INCBIN_U32("graphics/battle_anims/sprites/024.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_ClosingEye[] = INCBIN_U32("graphics/battle_anims/sprites/closing_eye.4bpp.lz");
+const u32 gBattleAnimSpritePal_ClosingEye[] = INCBIN_U32("graphics/battle_anims/sprites/closing_eye.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_031[] = INCBIN_U32("graphics/battle_anims/sprites/031.4bpp.lz");
-const u32 gBattleAnimSpritePalette_031[] = INCBIN_U32("graphics/battle_anims/sprites/031.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_BlueStar[] = INCBIN_U32("graphics/battle_anims/sprites/blue_star.4bpp.lz");
+const u32 gBattleAnimSpritePal_BlueStar[] = INCBIN_U32("graphics/battle_anims/sprites/blue_star.gbapal.lz");
-const u32 gBattleAnimSpritePalette_032[] = INCBIN_U32("graphics/battle_anims/sprites/032.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_032[] = INCBIN_U32("graphics/battle_anims/sprites/032.4bpp.lz");
+const u32 gBattleAnimSpritePal_BubbleBurst[] = INCBIN_U32("graphics/battle_anims/sprites/bubble_burst.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_BubbleBurst[] = INCBIN_U32("graphics/battle_anims/sprites/bubble_burst.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_026[] = INCBIN_U32("graphics/battle_anims/sprites/026.4bpp.lz");
-const u32 gBattleAnimSpritePalette_026[] = INCBIN_U32("graphics/battle_anims/sprites/026.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_HitDuplicate[] = INCBIN_U32("graphics/battle_anims/sprites/hit_duplicate.4bpp.lz");
+const u32 gBattleAnimSpritePal_HitDuplicate[] = INCBIN_U32("graphics/battle_anims/sprites/hit_duplicate.gbapal.lz");
-const u32 gBattleAnimSpritePalette_027[] = INCBIN_U32("graphics/battle_anims/sprites/027.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_027[] = INCBIN_U32("graphics/battle_anims/sprites/027.4bpp.lz");
+const u32 gBattleAnimSpritePal_Leer[] = INCBIN_U32("graphics/battle_anims/sprites/leer.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Leer[] = INCBIN_U32("graphics/battle_anims/sprites/leer.4bpp.lz");
-const u32 gBattleAnimSpritePalette_028[] = INCBIN_U32("graphics/battle_anims/sprites/028.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_028[] = INCBIN_U32("graphics/battle_anims/sprites/028.4bpp.lz");
+const u32 gBattleAnimSpritePal_BlueBurst[] = INCBIN_U32("graphics/battle_anims/sprites/blue_burst.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_BlueBurst[] = INCBIN_U32("graphics/battle_anims/sprites/blue_burst.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_029[] = INCBIN_U32("graphics/battle_anims/sprites/029.4bpp.lz");
-const u32 gBattleAnimSpritePalette_029[] = INCBIN_U32("graphics/battle_anims/sprites/029.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_SmallEmber[] = INCBIN_U32("graphics/battle_anims/sprites/small_ember.4bpp.lz");
+const u32 gBattleAnimSpritePal_SmallEmber[] = INCBIN_U32("graphics/battle_anims/sprites/small_ember.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_030[] = INCBIN_U32("graphics/battle_anims/sprites/030.4bpp.lz");
-const u32 gBattleAnimSpritePalette_030[] = INCBIN_U32("graphics/battle_anims/sprites/030.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_GraySmoke[] = INCBIN_U32("graphics/battle_anims/sprites/gray_smoke.4bpp.lz");
+const u32 gBattleAnimSpritePal_GraySmoke[] = INCBIN_U32("graphics/battle_anims/sprites/gray_smoke.gbapal.lz");
-const u32 gBattleAnimSpritePalette_033[] = INCBIN_U32("graphics/battle_anims/sprites/033.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_033[] = INCBIN_U32("graphics/battle_anims/sprites/033.4bpp.lz");
+const u32 gBattleAnimSpritePal_Fire[] = INCBIN_U32("graphics/battle_anims/sprites/fire.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Fire[] = INCBIN_U32("graphics/battle_anims/sprites/fire.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_034[] = INCBIN_U32("graphics/battle_anims/sprites/034.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_035[] = INCBIN_U32("graphics/battle_anims/sprites/035.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_SpinningFire[] = INCBIN_U32("graphics/battle_anims/sprites/spinning_fire.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_FirePlume[] = INCBIN_U32("graphics/battle_anims/sprites/fire_plume.4bpp.lz");
-const u32 gBattleAnimSpritePalette_036[] = INCBIN_U32("graphics/battle_anims/sprites/036.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_036[] = INCBIN_U32("graphics/battle_anims/sprites/036.4bpp.lz");
+const u32 gBattleAnimSpritePal_Lightning2[] = INCBIN_U32("graphics/battle_anims/sprites/lightning_2.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Lightning2[] = INCBIN_U32("graphics/battle_anims/sprites/lightning_2.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_037[] = INCBIN_U32("graphics/battle_anims/sprites/037.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Lightning[] = INCBIN_U32("graphics/battle_anims/sprites/lightning.4bpp.lz");
const u32 gUnknownGfx_C06D98[] = INCBIN_U32("graphics/unknown/unknown_C06D98.4bpp.lz");
const u32 gUnknownPal_C06D98[] = INCBIN_U32("graphics/unknown/unknown_C06D98.gbapal.lz");
@@ -141,118 +141,118 @@ const u32 gOldBattleInterfacePal_5_6_7[] = INCBIN_U32("graphics/unused/obi_palpa
const u32 gOldBattleInterfaceGfx2[] = INCBIN_U32("graphics/unused/obi2.4bpp.lz");
const u32 gOldBattleInterfaceTilemap[] = INCBIN_U32("graphics/unused/old_battle_interface_tilemap.bin.lz");
-const u32 gBattleAnimSpritePalette_038[] = INCBIN_U32("graphics/battle_anims/sprites/038.gbapal.lz");
-const u32 gBattleAnimSpritePalette_039[] = INCBIN_U32("graphics/battle_anims/sprites/039.gbapal.lz");
+const u32 gBattleAnimSpritePal_ClawSlash2[] = INCBIN_U32("graphics/battle_anims/sprites/claw_slash_2.gbapal.lz");
+const u32 gBattleAnimSpritePal_ClawSlash[] = INCBIN_U32("graphics/battle_anims/sprites/claw_slash.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_038[] = INCBIN_U32("graphics/battle_anims/sprites/038.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_039[] = INCBIN_U32("graphics/battle_anims/sprites/039.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_040[] = INCBIN_U32("graphics/battle_anims/sprites/040.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_041[] = INCBIN_U32("graphics/battle_anims/sprites/041.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_ClawSlash2[] = INCBIN_U32("graphics/battle_anims/sprites/claw_slash_2.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_ClawSlash[] = INCBIN_U32("graphics/battle_anims/sprites/claw_slash.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Scratch3[] = INCBIN_U32("graphics/battle_anims/sprites/scratch_3.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Scratch2[] = INCBIN_U32("graphics/battle_anims/sprites/scratch_2.4bpp.lz");
const u32 gPartyMenuHpBar_Gfx[] = INCBIN_U32("graphics/interface/party_menu_hpbar.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_042[] = INCBIN_U32("graphics/battle_anims/sprites/042.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_BubbleBurst2[] = INCBIN_U32("graphics/battle_anims/sprites/bubble_burst_2.4bpp.lz");
-const u32 gBattleAnimSpritePalette_042[] = INCBIN_U32("graphics/battle_anims/sprites/042.gbapal.lz");
+const u32 gBattleAnimSpritePal_BubbleBurst2[] = INCBIN_U32("graphics/battle_anims/sprites/bubble_burst_2.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_043[] = INCBIN_U32("graphics/battle_anims/sprites/043.4bpp.lz");
-const u32 gBattleAnimSpritePalette_043[] = INCBIN_U32("graphics/battle_anims/sprites/043.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_IceChunk[] = INCBIN_U32("graphics/battle_anims/sprites/ice_chunk.4bpp.lz");
+const u32 gBattleAnimSpritePal_IceChunk[] = INCBIN_U32("graphics/battle_anims/sprites/ice_chunk.gbapal.lz");
-const u32 gBattleAnimSpritePalette_044[] = INCBIN_U32("graphics/battle_anims/sprites/044.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_044[] = INCBIN_U32("graphics/battle_anims/sprites/044.4bpp.lz");
+const u32 gBattleAnimSpritePal_Glass2[] = INCBIN_U32("graphics/battle_anims/sprites/glass_2.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Glass2[] = INCBIN_U32("graphics/battle_anims/sprites/glass_2.4bpp.lz");
-const u32 gBattleAnimSpritePalette_045[] = INCBIN_U32("graphics/battle_anims/sprites/045.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_045[] = INCBIN_U32("graphics/battle_anims/sprites/045.4bpp.lz");
+const u32 gBattleAnimSpritePal_PinkHeart2[] = INCBIN_U32("graphics/battle_anims/sprites/pink_heart_2.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_PinkHeart2[] = INCBIN_U32("graphics/battle_anims/sprites/pink_heart_2.4bpp.lz");
const u32 gUnknown_08C08F0C[] = INCBIN_U32("graphics/battle_interface/unused_window.4bpp.lz");
const u32 gUnknown_08C093C8[] = INCBIN_U32("graphics/battle_interface/unused_window.gbapal.lz");
const u32 gUnknown_08C093F0[] = INCBIN_U32("graphics/interface/hp_numbers.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_046[] = INCBIN_U32("graphics/battle_anims/sprites/046.4bpp.lz");
-const u32 gBattleAnimSpritePalette_046[] = INCBIN_U32("graphics/battle_anims/sprites/046.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_SapDrip[] = INCBIN_U32("graphics/battle_anims/sprites/sap_drip.4bpp.lz");
+const u32 gBattleAnimSpritePal_SapDrip[] = INCBIN_U32("graphics/battle_anims/sprites/sap_drip.gbapal.lz");
-const u32 gBattleAnimSpritePalette_047[] = INCBIN_U32("graphics/battle_anims/sprites/047.gbapal.lz");
+const u32 gBattleAnimSpritePal_SapDrip2[] = INCBIN_U32("graphics/battle_anims/sprites/sap_drip_2.gbapal.lz");
const u32 gUnusedGfx_Window2[] = INCBIN_U32("graphics/battle_interface/unused_window2.4bpp.lz");
const u32 gUnusedGfx_Window2Bar[] = INCBIN_U32("graphics/battle_interface/unused_window2bar.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_048[] = INCBIN_U32("graphics/battle_anims/sprites/048.4bpp.lz");
-const u32 gBattleAnimSpritePalette_048[] = INCBIN_U32("graphics/battle_anims/sprites/048.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Sparkle1[] = INCBIN_U32("graphics/battle_anims/sprites/sparkle_1.4bpp.lz");
+const u32 gBattleAnimSpritePal_Sparkle1[] = INCBIN_U32("graphics/battle_anims/sprites/sparkle_1.gbapal.lz");
-const u32 gBattleAnimSpritePalette_049[] = INCBIN_U32("graphics/battle_anims/sprites/049.gbapal.lz");
-const u32 gBattleAnimSpritePalette_050[] = INCBIN_U32("graphics/battle_anims/sprites/050.gbapal.lz");
+const u32 gBattleAnimSpritePal_Sparkle2[] = INCBIN_U32("graphics/battle_anims/sprites/sparkle_2.gbapal.lz");
+const u32 gBattleAnimSpritePal_HumanoidFoot[] = INCBIN_U32("graphics/battle_anims/sprites/humanoid_foot.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_050[] = INCBIN_U32("graphics/battle_anims/sprites/050.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_051[] = INCBIN_U32("graphics/battle_anims/sprites/051.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_052[] = INCBIN_U32("graphics/battle_anims/sprites/052.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_HumanoidFoot[] = INCBIN_U32("graphics/battle_anims/sprites/humanoid_foot.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_MonsterFoot[] = INCBIN_U32("graphics/battle_anims/sprites/monster_foot.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_HumanoidHand[] = INCBIN_U32("graphics/battle_anims/sprites/humanoid_hand.4bpp.lz");
const u32 gUnusedGfx_LineSketch[] = INCBIN_U32("graphics/unused/line_sketch.4bpp.lz");
const u32 gUnusedPal_LineSketch[] = INCBIN_U32("graphics/unused/line_sketch.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_054[] = INCBIN_U32("graphics/battle_anims/sprites/054.4bpp.lz");
-const u32 gBattleAnimSpritePalette_054[] = INCBIN_U32("graphics/battle_anims/sprites/054.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_YellowUnk[] = INCBIN_U32("graphics/battle_anims/sprites/yellow_unk.4bpp.lz");
+const u32 gBattleAnimSpritePal_YellowUnk[] = INCBIN_U32("graphics/battle_anims/sprites/yellow_unk.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_056[] = INCBIN_U32("graphics/battle_anims/sprites/056.4bpp.lz");
-const u32 gBattleAnimSpritePalette_056[] = INCBIN_U32("graphics/battle_anims/sprites/056.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_SlamHit[] = INCBIN_U32("graphics/battle_anims/sprites/slam_hit.4bpp.lz");
+const u32 gBattleAnimSpritePal_SlamHit[] = INCBIN_U32("graphics/battle_anims/sprites/slam_hit.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_055[] = INCBIN_U32("graphics/battle_anims/sprites/055.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_RedFist[] = INCBIN_U32("graphics/battle_anims/sprites/red_fist.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_057[] = INCBIN_U32("graphics/battle_anims/sprites/057.4bpp.lz");
-const u32 gBattleAnimSpritePalette_057[] = INCBIN_U32("graphics/battle_anims/sprites/057.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Ring[] = INCBIN_U32("graphics/battle_anims/sprites/ring.4bpp.lz");
+const u32 gBattleAnimSpritePal_Ring[] = INCBIN_U32("graphics/battle_anims/sprites/ring.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_058[] = INCBIN_U32("graphics/battle_anims/sprites/058.4bpp.lz");
-const u32 gBattleAnimSpritePalette_058[] = INCBIN_U32("graphics/battle_anims/sprites/058.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Rocks[] = INCBIN_U32("graphics/battle_anims/sprites/rocks.4bpp.lz");
+const u32 gBattleAnimSpritePal_Rocks[] = INCBIN_U32("graphics/battle_anims/sprites/rocks.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_059[] = INCBIN_U32("graphics/battle_anims/sprites/059.4bpp.lz");
-const u32 gBattleAnimSpritePalette_059[] = INCBIN_U32("graphics/battle_anims/sprites/059.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Z[] = INCBIN_U32("graphics/battle_anims/sprites/z.4bpp.lz");
+const u32 gBattleAnimSpritePal_Z[] = INCBIN_U32("graphics/battle_anims/sprites/z.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_060[] = INCBIN_U32("graphics/battle_anims/sprites/060.4bpp.lz");
-const u32 gBattleAnimSpritePalette_060[] = INCBIN_U32("graphics/battle_anims/sprites/060.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_YellowUnk2[] = INCBIN_U32("graphics/battle_anims/sprites/yellow_unk_2.4bpp.lz");
+const u32 gBattleAnimSpritePal_YellowUnk2[] = INCBIN_U32("graphics/battle_anims/sprites/yellow_unk_2.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_061[] = INCBIN_U32("graphics/battle_anims/sprites/061.4bpp.lz");
-const u32 gBattleAnimSpritePalette_061[] = INCBIN_U32("graphics/battle_anims/sprites/061.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_AirSlash[] = INCBIN_U32("graphics/battle_anims/sprites/air_slash.4bpp.lz");
+const u32 gBattleAnimSpritePal_AirSlash[] = INCBIN_U32("graphics/battle_anims/sprites/air_slash.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_062[] = INCBIN_U32("graphics/battle_anims/sprites/062.4bpp.lz");
-const u32 gBattleAnimSpritePalette_062[] = INCBIN_U32("graphics/battle_anims/sprites/062.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_SpinningGreenOrbs[] = INCBIN_U32("graphics/battle_anims/sprites/spinning_green_orbs.4bpp.lz");
+const u32 gBattleAnimSpritePal_SpinningGreenOrbs[] = INCBIN_U32("graphics/battle_anims/sprites/spinning_green_orbs.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_063[] = INCBIN_U32("graphics/battle_anims/sprites/063.4bpp.lz");
-const u32 gBattleAnimSpritePalette_063[] = INCBIN_U32("graphics/battle_anims/sprites/063.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Leaf[] = INCBIN_U32("graphics/battle_anims/sprites/leaf.4bpp.lz");
+const u32 gBattleAnimSpritePal_Leaf[] = INCBIN_U32("graphics/battle_anims/sprites/leaf.gbapal.lz");
const u32 gUnusedGfx_Metronome[] = INCBIN_U32("graphics/unused/metronome_hand_small.4bpp.lz"); // unused, was for metronome at one point
-const u32 gBattleAnimSpritePalette_091[] = INCBIN_U32("graphics/battle_anims/sprites/091.gbapal.lz");
+const u32 gBattleAnimSpritePal_Clapping[] = INCBIN_U32("graphics/battle_anims/sprites/clapping.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_065[] = INCBIN_U32("graphics/battle_anims/sprites/065.4bpp.lz");
-const u32 gBattleAnimSpritePalette_065[] = INCBIN_U32("graphics/battle_anims/sprites/065.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_PoisonPowder[] = INCBIN_U32("graphics/battle_anims/sprites/poison_powder.4bpp.lz");
+const u32 gBattleAnimSpritePal_PoisonPowder[] = INCBIN_U32("graphics/battle_anims/sprites/poison_powder.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_066[] = INCBIN_U32("graphics/battle_anims/sprites/066.4bpp.lz");
-const u32 gBattleAnimSpritePalette_066[] = INCBIN_U32("graphics/battle_anims/sprites/066.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_BrownTriangle[] = INCBIN_U32("graphics/battle_anims/sprites/brown_triangle.4bpp.lz");
+const u32 gBattleAnimSpritePal_BrownTriangle[] = INCBIN_U32("graphics/battle_anims/sprites/brown_triangle.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_070[] = INCBIN_U32("graphics/battle_anims/sprites/070.4bpp.lz");
-const u32 gBattleAnimSpritePalette_070[] = INCBIN_U32("graphics/battle_anims/sprites/070.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Sparkle3[] = INCBIN_U32("graphics/battle_anims/sprites/sparkle_3.4bpp.lz");
+const u32 gBattleAnimSpritePal_Sparkle3[] = INCBIN_U32("graphics/battle_anims/sprites/sparkle_3.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_071[] = INCBIN_U32("graphics/battle_anims/sprites/071.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Sparkle4[] = INCBIN_U32("graphics/battle_anims/sprites/sparkle_4.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_072[] = INCBIN_U32("graphics/battle_anims/sprites/072.4bpp.lz");
-const u32 gBattleAnimSpritePalette_072[] = INCBIN_U32("graphics/battle_anims/sprites/072.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_MusicNotes[] = INCBIN_U32("graphics/battle_anims/sprites/music_notes.4bpp.lz");
+const u32 gBattleAnimSpritePal_MusicNotes[] = INCBIN_U32("graphics/battle_anims/sprites/music_notes.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_073[] = INCBIN_U32("graphics/battle_anims/sprites/073.4bpp.lz");
-const u32 gBattleAnimSpritePalette_073[] = INCBIN_U32("graphics/battle_anims/sprites/073.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Duck[] = INCBIN_U32("graphics/battle_anims/sprites/duck.4bpp.lz");
+const u32 gBattleAnimSpritePal_Duck[] = INCBIN_U32("graphics/battle_anims/sprites/duck.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_075[] = INCBIN_U32("graphics/battle_anims/sprites/075.4bpp.lz");
-const u32 gBattleAnimSpritePalette_075[] = INCBIN_U32("graphics/battle_anims/sprites/075.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Alert[] = INCBIN_U32("graphics/battle_anims/sprites/alert.4bpp.lz");
+const u32 gBattleAnimSpritePal_Alert[] = INCBIN_U32("graphics/battle_anims/sprites/alert.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_078[] = INCBIN_U32("graphics/battle_anims/sprites/078.4bpp.lz");
-const u32 gBattleAnimSpritePalette_078[] = INCBIN_U32("graphics/battle_anims/sprites/078.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Shock4[] = INCBIN_U32("graphics/battle_anims/sprites/shock_4.4bpp.lz");
+const u32 gBattleAnimSpritePal_Shock4[] = INCBIN_U32("graphics/battle_anims/sprites/shock_4.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_079[] = INCBIN_U32("graphics/battle_anims/sprites/079.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Shock[] = INCBIN_U32("graphics/battle_anims/sprites/shock.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_080[] = INCBIN_U32("graphics/battle_anims/sprites/080.4bpp.lz");
-const u32 gBattleAnimSpritePalette_080[] = INCBIN_U32("graphics/battle_anims/sprites/080.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Bell2[] = INCBIN_U32("graphics/battle_anims/sprites/bell_2.4bpp.lz");
+const u32 gBattleAnimSpritePal_Bell2[] = INCBIN_U32("graphics/battle_anims/sprites/bell_2.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_081[] = INCBIN_U32("graphics/battle_anims/sprites/081.4bpp.lz");
-const u32 gBattleAnimSpritePalette_081[] = INCBIN_U32("graphics/battle_anims/sprites/081.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_PinkGlove[] = INCBIN_U32("graphics/battle_anims/sprites/pink_glove.4bpp.lz");
+const u32 gBattleAnimSpritePal_PinkGlove[] = INCBIN_U32("graphics/battle_anims/sprites/pink_glove.gbapal.lz");
const u16 gUnknown_C0CA1C[] = INCBIN_U16("graphics/unknown/unknown_C0CA1C.bin");
const u16 gUnknown_C0CA40[] = INCBIN_U16("graphics/unknown/unknown_C0CA40.bin");
@@ -261,85 +261,85 @@ const u32 gUnusedGfx8bpp_LineSketch2[] = INCBIN_U32("graphics/unused/line_sketch
const u16 gUnknown_C0CAE0[] = INCBIN_U16("graphics/unknown/unknown_C0CAE0.bin");
const u32 gUnusedTilemap_LineSketch2[] = INCBIN_U32("graphics/unused/line_sketch_2.bin.lz");
-const u32 gBattleAnimSpriteSheet_082[] = INCBIN_U32("graphics/battle_anims/sprites/082.4bpp.lz");
-const u32 gBattleAnimSpritePalette_082[] = INCBIN_U32("graphics/battle_anims/sprites/082.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_BlueLines[] = INCBIN_U32("graphics/battle_anims/sprites/blue_lines.4bpp.lz");
+const u32 gBattleAnimSpritePal_BlueLines[] = INCBIN_U32("graphics/battle_anims/sprites/blue_lines.gbapal.lz");
-const u32 gBattleAnimSpritePalette_083[] = INCBIN_U32("graphics/battle_anims/sprites/083.gbapal.lz");
-const u32 gBattleAnimSpritePalette_084[] = INCBIN_U32("graphics/battle_anims/sprites/084.gbapal.lz");
-const u32 gBattleAnimSpritePalette_085[] = INCBIN_U32("graphics/battle_anims/sprites/085.gbapal.lz");
-const u32 gBattleAnimSpritePalette_086[] = INCBIN_U32("graphics/battle_anims/sprites/086.gbapal.lz");
-const u32 gBattleAnimSpritePalette_088[] = INCBIN_U32("graphics/battle_anims/sprites/088.gbapal.lz");
-const u32 gBattleAnimSpritePalette_089[] = INCBIN_U32("graphics/battle_anims/sprites/089.gbapal.lz");
-const u32 gBattleAnimSpritePalette_090[] = INCBIN_U32("graphics/battle_anims/sprites/090.gbapal.lz");
-const u32 gBattleAnimSpritePalette_092[] = INCBIN_U32("graphics/battle_anims/sprites/092.gbapal.lz");
-const u32 gBattleAnimSpritePalette_093[] = INCBIN_U32("graphics/battle_anims/sprites/093.gbapal.lz");
-const u32 gBattleAnimSpritePalette_094[] = INCBIN_U32("graphics/battle_anims/sprites/094.gbapal.lz");
+const u32 gBattleAnimSpritePal_Impact3[] = INCBIN_U32("graphics/battle_anims/sprites/impact_3.gbapal.lz");
+const u32 gBattleAnimSpritePal_Impact2[] = INCBIN_U32("graphics/battle_anims/sprites/impact_2.gbapal.lz");
+const u32 gBattleAnimSpritePal_Reticle[] = INCBIN_U32("graphics/battle_anims/sprites/reticle.gbapal.lz");
+const u32 gBattleAnimSpritePal_Breath[] = INCBIN_U32("graphics/battle_anims/sprites/breath.gbapal.lz");
+const u32 gBattleAnimSpritePal_Snowball[] = INCBIN_U32("graphics/battle_anims/sprites/snowball.gbapal.lz");
+const u32 gBattleAnimSpritePal_Vine[] = INCBIN_U32("graphics/battle_anims/sprites/vine.gbapal.lz");
+const u32 gBattleAnimSpritePal_Sword2[] = INCBIN_U32("graphics/battle_anims/sprites/sword_2.gbapal.lz");
+const u32 gBattleAnimSpritePal_RedTube[] = INCBIN_U32("graphics/battle_anims/sprites/red_tube.gbapal.lz");
+const u32 gBattleAnimSpritePal_Amnesia[] = INCBIN_U32("graphics/battle_anims/sprites/amnesia.gbapal.lz");
+const u32 gBattleAnimSpritePal_String2[] = INCBIN_U32("graphics/battle_anims/sprites/string_2.gbapal.lz");
const u32 gUnknown_D0D2B4[] = INCBIN_U32("graphics/unknown/unknown_D0D2B4.bin.lz");
-const u32 gBattleAnimSpritePalette_095[] = INCBIN_U32("graphics/battle_anims/sprites/095.gbapal.lz");
-const u32 gBattleAnimSpritePalette_096[] = INCBIN_U32("graphics/battle_anims/sprites/096.gbapal.lz");
-const u32 gBattleAnimSpritePalette_097[] = INCBIN_U32("graphics/battle_anims/sprites/097.gbapal.lz");
-const u32 gBattleAnimSpritePalette_100[] = INCBIN_U32("graphics/battle_anims/sprites/100.gbapal.lz");
-const u32 gBattleAnimSpritePalette_101[] = INCBIN_U32("graphics/battle_anims/sprites/101.gbapal.lz");
-const u32 gBattleAnimSpritePalette_103[] = INCBIN_U32("graphics/battle_anims/sprites/103.gbapal.lz");
+const u32 gBattleAnimSpritePal_Pencil2[] = INCBIN_U32("graphics/battle_anims/sprites/pencil_2.gbapal.lz");
+const u32 gBattleAnimSpritePal_Petal[] = INCBIN_U32("graphics/battle_anims/sprites/petal.gbapal.lz");
+const u32 gBattleAnimSpritePal_BentSpoon[] = INCBIN_U32("graphics/battle_anims/sprites/bent_spoon.gbapal.lz");
+const u32 gBattleAnimSpritePal_Coin[] = INCBIN_U32("graphics/battle_anims/sprites/coin.gbapal.lz");
+const u32 gBattleAnimSpritePal_CrackedEgg[] = INCBIN_U32("graphics/battle_anims/sprites/cracked_egg.gbapal.lz");
+const u32 gBattleAnimSpritePal_FreshEgg[] = INCBIN_U32("graphics/battle_anims/sprites/fresh_egg.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_083[] = INCBIN_U32("graphics/battle_anims/sprites/083.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_084[] = INCBIN_U32("graphics/battle_anims/sprites/084.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_085[] = INCBIN_U32("graphics/battle_anims/sprites/085.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_086[] = INCBIN_U32("graphics/battle_anims/sprites/086.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_088[] = INCBIN_U32("graphics/battle_anims/sprites/088.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_089[] = INCBIN_U32("graphics/battle_anims/sprites/089.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_090[] = INCBIN_U32("graphics/battle_anims/sprites/090.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_091[] = INCBIN_U32("graphics/battle_anims/sprites/091.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_092[] = INCBIN_U32("graphics/battle_anims/sprites/092.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_093[] = INCBIN_U32("graphics/battle_anims/sprites/093.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_094[] = INCBIN_U32("graphics/battle_anims/sprites/094.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_095[] = INCBIN_U32("graphics/battle_anims/sprites/095.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_096[] = INCBIN_U32("graphics/battle_anims/sprites/096.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_097[] = INCBIN_U32("graphics/battle_anims/sprites/097.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_098[] = INCBIN_U32("graphics/battle_anims/sprites/098.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_100[] = INCBIN_U32("graphics/battle_anims/sprites/100.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_101[] = INCBIN_U32("graphics/battle_anims/sprites/101.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_102[] = INCBIN_U32("graphics/battle_anims/sprites/102.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_103[] = INCBIN_U32("graphics/battle_anims/sprites/103.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Impact3[] = INCBIN_U32("graphics/battle_anims/sprites/impact_3.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Impact2[] = INCBIN_U32("graphics/battle_anims/sprites/impact_2.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Reticle[] = INCBIN_U32("graphics/battle_anims/sprites/reticle.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Breath[] = INCBIN_U32("graphics/battle_anims/sprites/breath.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Snowball[] = INCBIN_U32("graphics/battle_anims/sprites/snowball.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Vine[] = INCBIN_U32("graphics/battle_anims/sprites/vine.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Sword2[] = INCBIN_U32("graphics/battle_anims/sprites/sword_2.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Clapping[] = INCBIN_U32("graphics/battle_anims/sprites/clapping.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_RedTube[] = INCBIN_U32("graphics/battle_anims/sprites/red_tube.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Amnesia[] = INCBIN_U32("graphics/battle_anims/sprites/amnesia.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_String2[] = INCBIN_U32("graphics/battle_anims/sprites/string_2.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Pencil2[] = INCBIN_U32("graphics/battle_anims/sprites/pencil_2.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Petal[] = INCBIN_U32("graphics/battle_anims/sprites/petal.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_BentSpoon[] = INCBIN_U32("graphics/battle_anims/sprites/bent_spoon.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Web[] = INCBIN_U32("graphics/battle_anims/sprites/web.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Coin[] = INCBIN_U32("graphics/battle_anims/sprites/coin.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_CrackedEgg[] = INCBIN_U32("graphics/battle_anims/sprites/cracked_egg.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_HatchedEgg[] = INCBIN_U32("graphics/battle_anims/sprites/hatched_egg.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_FreshEgg[] = INCBIN_U32("graphics/battle_anims/sprites/fresh_egg.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_104[] = INCBIN_U32("graphics/battle_anims/sprites/104.4bpp.lz");
-const u32 gBattleAnimSpritePalette_104[] = INCBIN_U32("graphics/battle_anims/sprites/104.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Fangs[] = INCBIN_U32("graphics/battle_anims/sprites/fangs.4bpp.lz");
+const u32 gBattleAnimSpritePal_Fangs[] = INCBIN_U32("graphics/battle_anims/sprites/fangs.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_105[] = INCBIN_U32("graphics/battle_anims/sprites/105.4bpp.lz");
-const u32 gBattleAnimSpritePalette_105[] = INCBIN_U32("graphics/battle_anims/sprites/105.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Explosion2[] = INCBIN_U32("graphics/battle_anims/sprites/explosion_2.4bpp.lz");
+const u32 gBattleAnimSpritePal_Explosion2[] = INCBIN_U32("graphics/battle_anims/sprites/explosion_2.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_106[] = INCBIN_U32("graphics/battle_anims/sprites/106.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Explosion3[] = INCBIN_U32("graphics/battle_anims/sprites/explosion_3.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_107[] = INCBIN_U32("graphics/battle_anims/sprites/107.4bpp.lz");
-const u32 gBattleAnimSpritePalette_107[] = INCBIN_U32("graphics/battle_anims/sprites/107.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_WaterDroplet[] = INCBIN_U32("graphics/battle_anims/sprites/water_droplet.4bpp.lz");
+const u32 gBattleAnimSpritePal_WaterDroplet[] = INCBIN_U32("graphics/battle_anims/sprites/water_droplet.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_108[] = INCBIN_U32("graphics/battle_anims/sprites/108.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_WaterDroplet2[] = INCBIN_U32("graphics/battle_anims/sprites/water_droplet_2.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_109[] = INCBIN_U32("graphics/battle_anims/sprites/109.4bpp.lz");
-const u32 gBattleAnimSpritePalette_109[] = INCBIN_U32("graphics/battle_anims/sprites/109.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Seed2[] = INCBIN_U32("graphics/battle_anims/sprites/seed_2.4bpp.lz");
+const u32 gBattleAnimSpritePal_Seed2[] = INCBIN_U32("graphics/battle_anims/sprites/seed_2.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_110[] = INCBIN_U32("graphics/battle_anims/sprites/110.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Sprout[] = INCBIN_U32("graphics/battle_anims/sprites/sprout.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_111[] = INCBIN_U32("graphics/battle_anims/sprites/111.4bpp.lz");
-const u32 gBattleAnimSpritePalette_111[] = INCBIN_U32("graphics/battle_anims/sprites/111.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_RedWand[] = INCBIN_U32("graphics/battle_anims/sprites/red_wand.4bpp.lz");
+const u32 gBattleAnimSpritePal_RedWand[] = INCBIN_U32("graphics/battle_anims/sprites/red_wand.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_112[] = INCBIN_U32("graphics/battle_anims/sprites/112.4bpp.lz");
-const u32 gBattleAnimSpritePalette_112[] = INCBIN_U32("graphics/battle_anims/sprites/112.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_PurpleGreenUnk[] = INCBIN_U32("graphics/battle_anims/sprites/purple_green_unk.4bpp.lz");
+const u32 gBattleAnimSpritePal_PurpleGreenUnk[] = INCBIN_U32("graphics/battle_anims/sprites/purple_green_unk.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_113[] = INCBIN_U32("graphics/battle_anims/sprites/113.4bpp.lz");
-const u32 gBattleAnimSpritePalette_113[] = INCBIN_U32("graphics/battle_anims/sprites/113.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_WaterColumn[] = INCBIN_U32("graphics/battle_anims/sprites/water_column.4bpp.lz");
+const u32 gBattleAnimSpritePal_WaterColumn[] = INCBIN_U32("graphics/battle_anims/sprites/water_column.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_114[] = INCBIN_U32("graphics/battle_anims/sprites/114.4bpp.lz");
-const u32 gBattleAnimSpritePalette_114[] = INCBIN_U32("graphics/battle_anims/sprites/114.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_MudUnk[] = INCBIN_U32("graphics/battle_anims/sprites/mud_unk.4bpp.lz");
+const u32 gBattleAnimSpritePal_MudUnk[] = INCBIN_U32("graphics/battle_anims/sprites/mud_unk.gbapal.lz");
const u32 gUnusedTilemap_BlueFrame[] = INCBIN_U32("graphics/unused/blue_frame.bin.lz"); // P1, P2, P3 and P4 tilemaps?
const u32 gUnusedTilemap_RedYellowGreenFrame[] = INCBIN_U32("graphics/unused/redyellowgreen_frame.bin.lz");
const u32 gUnusedGfx_ColorFrames[] = INCBIN_U32("graphics/unused/color_frames.4bpp.lz");
const u32 gUnusedPal_ColorFrames[] = INCBIN_U32("graphics/unused/color_frames.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_115[] = INCBIN_U32("graphics/battle_anims/sprites/115.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_RainDrops[] = INCBIN_U32("graphics/battle_anims/sprites/rain_drops.4bpp.lz");
const u32 gUnusedGfx8bpp_WaterSplash [] = INCBIN_U32("graphics/unused/water_splash.8bpp.lz");
const u32 gUnusedTilemap_WaterSplash[] = INCBIN_U32("graphics/unused/water_splash.bin.lz");
@@ -379,63 +379,63 @@ const u8 gUnknown_D1300C[] = INCBIN_U8("graphics/unknown/unknown_D1300C.4bpp");
const u32 gBattleInterfaceGfx_UnusedWindow3[] = INCBIN_U32("graphics/battle_interface/unused_window3.4bpp.lz");
const u32 gBattleInterfaceGfx_UnusedWindow4[] = INCBIN_U32("graphics/battle_interface/unused_window4.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_116[] = INCBIN_U32("graphics/battle_anims/sprites/116.4bpp.lz");
-const u32 gBattleAnimSpritePalette_116[] = INCBIN_U32("graphics/battle_anims/sprites/116.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_FurySwipes[] = INCBIN_U32("graphics/battle_anims/sprites/fury_swipes.4bpp.lz");
+const u32 gBattleAnimSpritePal_FurySwipes[] = INCBIN_U32("graphics/battle_anims/sprites/fury_swipes.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_117[] = INCBIN_U32("graphics/battle_anims/sprites/117.4bpp.lz");
-const u32 gBattleAnimSpritePalette_117[] = INCBIN_U32("graphics/battle_anims/sprites/117.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Vine2[] = INCBIN_U32("graphics/battle_anims/sprites/vine_2.4bpp.lz");
+const u32 gBattleAnimSpritePal_Vine2[] = INCBIN_U32("graphics/battle_anims/sprites/vine_2.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_118[] = INCBIN_U32("graphics/battle_anims/sprites/118.4bpp.lz");
-const u32 gBattleAnimSpritePalette_118[] = INCBIN_U32("graphics/battle_anims/sprites/118.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Teeth[] = INCBIN_U32("graphics/battle_anims/sprites/teeth.4bpp.lz");
+const u32 gBattleAnimSpritePal_Teeth[] = INCBIN_U32("graphics/battle_anims/sprites/teeth.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_119[] = INCBIN_U32("graphics/battle_anims/sprites/119.4bpp.lz");
-const u32 gBattleAnimSpritePalette_119[] = INCBIN_U32("graphics/battle_anims/sprites/119.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Bone2[] = INCBIN_U32("graphics/battle_anims/sprites/bone_2.4bpp.lz");
+const u32 gBattleAnimSpritePal_Bone2[] = INCBIN_U32("graphics/battle_anims/sprites/bone_2.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_120[] = INCBIN_U32("graphics/battle_anims/sprites/120.4bpp.lz");
-const u32 gBattleAnimSpritePalette_120[] = INCBIN_U32("graphics/battle_anims/sprites/120.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_WhiteBag[] = INCBIN_U32("graphics/battle_anims/sprites/white_bag.4bpp.lz");
+const u32 gBattleAnimSpritePal_WhiteBag[] = INCBIN_U32("graphics/battle_anims/sprites/white_bag.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_121[] = INCBIN_U32("graphics/battle_anims/sprites/121.4bpp.lz");
-const u32 gBattleAnimSpritePalette_121[] = INCBIN_U32("graphics/battle_anims/sprites/121.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Unknown[] = INCBIN_U32("graphics/battle_anims/sprites/unknown.4bpp.lz");
+const u32 gBattleAnimSpritePal_Unknown[] = INCBIN_U32("graphics/battle_anims/sprites/unknown.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_122[] = INCBIN_U32("graphics/battle_anims/sprites/122.4bpp.lz");
-const u32 gBattleAnimSpritePalette_122[] = INCBIN_U32("graphics/battle_anims/sprites/122.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_PurpleCoral[] = INCBIN_U32("graphics/battle_anims/sprites/purple_coral.4bpp.lz");
+const u32 gBattleAnimSpritePal_PurpleCoral[] = INCBIN_U32("graphics/battle_anims/sprites/purple_coral.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_123[] = INCBIN_U32("graphics/battle_anims/sprites/123.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_PurpleDroplet[] = INCBIN_U32("graphics/battle_anims/sprites/purple_droplet.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_124[] = INCBIN_U32("graphics/battle_anims/sprites/124.4bpp.lz");
-const u32 gBattleAnimSpritePalette_124[] = INCBIN_U32("graphics/battle_anims/sprites/124.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Shock2[] = INCBIN_U32("graphics/battle_anims/sprites/shock_2.4bpp.lz");
+const u32 gBattleAnimSpritePal_Shock2[] = INCBIN_U32("graphics/battle_anims/sprites/shock_2.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_125[] = INCBIN_U32("graphics/battle_anims/sprites/125.4bpp.lz");
-const u32 gBattleAnimSpritePalette_125[] = INCBIN_U32("graphics/battle_anims/sprites/125.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_ClosingEye2[] = INCBIN_U32("graphics/battle_anims/sprites/closing_eye_2.4bpp.lz");
+const u32 gBattleAnimSpritePal_ClosingEye2[] = INCBIN_U32("graphics/battle_anims/sprites/closing_eye_2.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_126[] = INCBIN_U32("graphics/battle_anims/sprites/126.4bpp.lz");
-const u32 gBattleAnimSpritePalette_126[] = INCBIN_U32("graphics/battle_anims/sprites/126.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_MetalBall[] = INCBIN_U32("graphics/battle_anims/sprites/metal_ball.4bpp.lz");
+const u32 gBattleAnimSpritePal_MetalBall[] = INCBIN_U32("graphics/battle_anims/sprites/metal_ball.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_127[] = INCBIN_U32("graphics/battle_anims/sprites/127.4bpp.lz");
-const u32 gBattleAnimSpritePalette_127[] = INCBIN_U32("graphics/battle_anims/sprites/127.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_MonsterDoll[] = INCBIN_U32("graphics/battle_anims/sprites/monster_doll.4bpp.lz");
+const u32 gBattleAnimSpritePal_MonsterDoll[] = INCBIN_U32("graphics/battle_anims/sprites/monster_doll.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_128[] = INCBIN_U32("graphics/battle_anims/sprites/128.4bpp.lz");
-const u32 gBattleAnimSpritePalette_128[] = INCBIN_U32("graphics/battle_anims/sprites/128.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Whirlwind[] = INCBIN_U32("graphics/battle_anims/sprites/whirlwind.4bpp.lz");
+const u32 gBattleAnimSpritePal_Whirlwind[] = INCBIN_U32("graphics/battle_anims/sprites/whirlwind.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_129[] = INCBIN_U32("graphics/battle_anims/sprites/129.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Whirlwind2[] = INCBIN_U32("graphics/battle_anims/sprites/whirlwind_2.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_130[] = INCBIN_U32("graphics/battle_anims/sprites/130.4bpp.lz");
-const u32 gBattleAnimSpritePalette_130[] = INCBIN_U32("graphics/battle_anims/sprites/130.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Explosion4[] = INCBIN_U32("graphics/battle_anims/sprites/explosion_4.4bpp.lz");
+const u32 gBattleAnimSpritePal_Explosion4[] = INCBIN_U32("graphics/battle_anims/sprites/explosion_4.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_131[] = INCBIN_U32("graphics/battle_anims/sprites/131.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Explosion5[] = INCBIN_U32("graphics/battle_anims/sprites/explosion_5.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_132[] = INCBIN_U32("graphics/battle_anims/sprites/132.4bpp.lz");
-const u32 gBattleAnimSpritePalette_132[] = INCBIN_U32("graphics/battle_anims/sprites/132.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Tongue[] = INCBIN_U32("graphics/battle_anims/sprites/tongue.4bpp.lz");
+const u32 gBattleAnimSpritePal_Tongue[] = INCBIN_U32("graphics/battle_anims/sprites/tongue.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_133[] = INCBIN_U32("graphics/battle_anims/sprites/133.4bpp.lz");
-const u32 gBattleAnimSpritePalette_133[] = INCBIN_U32("graphics/battle_anims/sprites/133.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Smoke[] = INCBIN_U32("graphics/battle_anims/sprites/smoke.4bpp.lz");
+const u32 gBattleAnimSpritePal_Smoke[] = INCBIN_U32("graphics/battle_anims/sprites/smoke.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_134[] = INCBIN_U32("graphics/battle_anims/sprites/134.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Smoke2[] = INCBIN_U32("graphics/battle_anims/sprites/smoke_2.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_076[] = INCBIN_U32("graphics/battle_anims/sprites/076.4bpp.lz");
-const u32 gBattleAnimSpritePalette_076[] = INCBIN_U32("graphics/battle_anims/sprites/076.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_BlueFlames[] = INCBIN_U32("graphics/battle_anims/sprites/blue_flames.4bpp.lz");
+const u32 gBattleAnimSpritePal_BlueFlames[] = INCBIN_U32("graphics/battle_anims/sprites/blue_flames.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_077[] = INCBIN_U32("graphics/battle_anims/sprites/077.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_BlueFlames2[] = INCBIN_U32("graphics/battle_anims/sprites/blue_flames_2.4bpp.lz");
// Contest
@@ -446,8 +446,8 @@ const u32 gUnusedTilemap_OldContest[] = INCBIN_U32("graphics/unused/old_contest.
const u32 gUnknownTilemap_C15BC0[] = INCBIN_U32("graphics/unknown/unknown_C15BC0.bin.lz");
const u32 gUnusedGfx_OldContest2[] = INCBIN_U32("graphics/unused/old_contest_2.4bpp.lz");
-const u32 gUnknown_08C16E90[] = INCBIN_U32("graphics/unused/old_contest_2.gbapal.lz");
-const u32 gUnknown_08C16FA8[] = INCBIN_U32("graphics/unused/old_contest_2.bin.lz");
+const u32 gOldContestPalette[] = INCBIN_U32("graphics/unused/old_contest_2.gbapal.lz");
+const u32 gOldContestGfx[] = INCBIN_U32("graphics/unused/old_contest_2.bin.lz");
const u32 gUnknown_08C17170[] = INCBIN_U32("graphics/unknown/unknown_C17170.bin.lz");
@@ -479,118 +479,118 @@ const u32 gUnknown_08C1A12C[] = INCBIN_U32("graphics/contest/misc_2_tilemap_3.bi
const u32 gUnknown_08C1A2B4[] = INCBIN_U32("graphics/contest/misc_2.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_135[] = INCBIN_U32("graphics/battle_anims/sprites/135.4bpp.lz");
-const u32 gBattleAnimSpritePalette_135[] = INCBIN_U32("graphics/battle_anims/sprites/135.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Impact[] = INCBIN_U32("graphics/battle_anims/sprites/impact.4bpp.lz");
+const u32 gBattleAnimSpritePal_Impact[] = INCBIN_U32("graphics/battle_anims/sprites/impact.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_Particles[] = INCBIN_U32("graphics/battle_anims/sprites/particles.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Particles[] = INCBIN_U32("graphics/battle_anims/sprites/particles.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_136[] = INCBIN_U32("graphics/battle_anims/sprites/136.4bpp.lz");
-const u32 gBattleAnimSpritePalette_136[] = INCBIN_U32("graphics/battle_anims/sprites/136.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_CircleImpact[] = INCBIN_U32("graphics/battle_anims/sprites/circle_impact.4bpp.lz");
+const u32 gBattleAnimSpritePal_CircleImpact[] = INCBIN_U32("graphics/battle_anims/sprites/circle_impact.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_137[] = INCBIN_U32("graphics/battle_anims/sprites/137.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Scratch[] = INCBIN_U32("graphics/battle_anims/sprites/scratch.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_139[] = INCBIN_U32("graphics/battle_anims/sprites/139.4bpp.lz");
-const u32 gBattleAnimSpritePalette_139[] = INCBIN_U32("graphics/battle_anims/sprites/139.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_SharpTeeth[] = INCBIN_U32("graphics/battle_anims/sprites/sharp_teeth.4bpp.lz");
+const u32 gBattleAnimSpritePal_SharpTeeth[] = INCBIN_U32("graphics/battle_anims/sprites/sharp_teeth.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_145[] = INCBIN_U32("graphics/battle_anims/sprites/145.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Clamp[] = INCBIN_U32("graphics/battle_anims/sprites/clamp.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_138[] = INCBIN_U32("graphics/battle_anims/sprites/138.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Cut[] = INCBIN_U32("graphics/battle_anims/sprites/cut.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_140[] = INCBIN_U32("graphics/battle_anims/sprites/140.4bpp.lz");
-const u32 gBattleAnimSpritePalette_140[] = INCBIN_U32("graphics/battle_anims/sprites/140.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_RainbowRings[] = INCBIN_U32("graphics/battle_anims/sprites/rainbow_rings.4bpp.lz");
+const u32 gBattleAnimSpritePal_RainbowRings[] = INCBIN_U32("graphics/battle_anims/sprites/rainbow_rings.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_141[] = INCBIN_U32("graphics/battle_anims/sprites/141.4bpp.lz");
-const u32 gBattleAnimSpritePalette_141[] = INCBIN_U32("graphics/battle_anims/sprites/141.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_IceCrystals[] = INCBIN_U32("graphics/battle_anims/sprites/ice_crystals.4bpp.lz");
+const u32 gBattleAnimSpritePal_IceCrystals[] = INCBIN_U32("graphics/battle_anims/sprites/ice_crystals.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_142[] = INCBIN_U32("graphics/battle_anims/sprites/142.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_IceSpikes[] = INCBIN_U32("graphics/battle_anims/sprites/ice_spikes.4bpp.lz");
const u32 gUnusedGfx_OldBeatUp[] = INCBIN_U32("graphics/unused/old_beatup.4bpp.lz");
const u32 gUnusedPal_OldBeatUp[] = INCBIN_U32("graphics/unused/old_beatup.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_147[] = INCBIN_U32("graphics/battle_anims/sprites/147.4bpp.lz");
-const u32 gBattleAnimSpritePalette_147[] = INCBIN_U32("graphics/battle_anims/sprites/147.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Orbs[] = INCBIN_U32("graphics/battle_anims/sprites/orbs.4bpp.lz");
+const u32 gBattleAnimSpritePal_Orbs[] = INCBIN_U32("graphics/battle_anims/sprites/orbs.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_149[] = INCBIN_U32("graphics/battle_anims/sprites/149.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_WaterOrb[] = INCBIN_U32("graphics/battle_anims/sprites/water_orb.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_148[] = INCBIN_U32("graphics/battle_anims/sprites/148.4bpp.lz");
-const u32 gBattleAnimSpritePalette_148[] = INCBIN_U32("graphics/battle_anims/sprites/148.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_WaterImpact[] = INCBIN_U32("graphics/battle_anims/sprites/water_impact.4bpp.lz");
+const u32 gBattleAnimSpritePal_WaterImpact[] = INCBIN_U32("graphics/battle_anims/sprites/water_impact.gbapal.lz");
-const u32 gBattleAnimSpritePalette_259[] = INCBIN_U32("graphics/battle_anims/sprites/259.gbapal.lz");
+const u32 gBattleAnimSpritePal_BrownOrb[] = INCBIN_U32("graphics/battle_anims/sprites/brown_orb.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_074[] = INCBIN_U32("graphics/battle_anims/sprites/074.4bpp.lz");
-const u32 gBattleAnimSpritePalette_074[] = INCBIN_U32("graphics/battle_anims/sprites/074.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_MudSand[] = INCBIN_U32("graphics/battle_anims/sprites/mud_sand.4bpp.lz");
+const u32 gBattleAnimSpritePal_MudSand[] = INCBIN_U32("graphics/battle_anims/sprites/mud_sand.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_150[] = INCBIN_U32("graphics/battle_anims/sprites/150.4bpp.lz");
-const u32 gBattleAnimSpritePalette_150[] = INCBIN_U32("graphics/battle_anims/sprites/150.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_PoisonBubble[] = INCBIN_U32("graphics/battle_anims/sprites/poison_bubble.4bpp.lz");
+const u32 gBattleAnimSpritePal_PoisonBubble[] = INCBIN_U32("graphics/battle_anims/sprites/poison_bubble.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_151[] = INCBIN_U32("graphics/battle_anims/sprites/151.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_ToxicBubble[] = INCBIN_U32("graphics/battle_anims/sprites/toxic_bubble.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_153[] = INCBIN_U32("graphics/battle_anims/sprites/153.4bpp.lz");
-const u32 gBattleAnimSpritePalette_153[] = INCBIN_U32("graphics/battle_anims/sprites/153.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_HornHit2[] = INCBIN_U32("graphics/battle_anims/sprites/horn_hit_2.4bpp.lz");
+const u32 gBattleAnimSpritePal_HornHit2[] = INCBIN_U32("graphics/battle_anims/sprites/horn_hit_2.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_154[] = INCBIN_U32("graphics/battle_anims/sprites/154.4bpp.lz");
-const u32 gBattleAnimSpritePalette_154[] = INCBIN_U32("graphics/battle_anims/sprites/154.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_AirWave2[] = INCBIN_U32("graphics/battle_anims/sprites/air_wave_2.4bpp.lz");
+const u32 gBattleAnimSpritePal_AirWave2[] = INCBIN_U32("graphics/battle_anims/sprites/air_wave_2.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_155[] = INCBIN_U32("graphics/battle_anims/sprites/155.4bpp.lz");
-const u32 gBattleAnimSpritePalette_155[] = INCBIN_U32("graphics/battle_anims/sprites/155.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_SmallBubbles[] = INCBIN_U32("graphics/battle_anims/sprites/small_bubbles.4bpp.lz");
+const u32 gBattleAnimSpritePal_SmallBubbles[] = INCBIN_U32("graphics/battle_anims/sprites/small_bubbles.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_156[] = INCBIN_U32("graphics/battle_anims/sprites/156.4bpp.lz");
-const u32 gBattleAnimSpritePalette_156[] = INCBIN_U32("graphics/battle_anims/sprites/156.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_RoundShadow[] = INCBIN_U32("graphics/battle_anims/sprites/round_shadow.4bpp.lz");
+const u32 gBattleAnimSpritePal_RoundShadow[] = INCBIN_U32("graphics/battle_anims/sprites/round_shadow.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_157[] = INCBIN_U32("graphics/battle_anims/sprites/157.4bpp.lz");
-const u32 gBattleAnimSpritePalette_157[] = INCBIN_U32("graphics/battle_anims/sprites/157.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Sunlight[] = INCBIN_U32("graphics/battle_anims/sprites/sunlight.4bpp.lz");
+const u32 gBattleAnimSpritePal_Sunlight[] = INCBIN_U32("graphics/battle_anims/sprites/sunlight.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_158[] = INCBIN_U32("graphics/battle_anims/sprites/158.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Spore[] = INCBIN_U32("graphics/battle_anims/sprites/spore.4bpp.lz");
-const u32 gBattleAnimSpritePalette_158[] = INCBIN_U32("graphics/battle_anims/sprites/158.gbapal.lz");
+const u32 gBattleAnimSpritePal_Spore[] = INCBIN_U32("graphics/battle_anims/sprites/spore.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_159[] = INCBIN_U32("graphics/battle_anims/sprites/159.4bpp.lz");
-const u32 gBattleAnimSpritePalette_159[] = INCBIN_U32("graphics/battle_anims/sprites/159.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Flower[] = INCBIN_U32("graphics/battle_anims/sprites/flower.4bpp.lz");
+const u32 gBattleAnimSpritePal_Flower[] = INCBIN_U32("graphics/battle_anims/sprites/flower.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_160[] = INCBIN_U32("graphics/battle_anims/sprites/160.4bpp.lz");
-const u32 gBattleAnimSpritePalette_160[] = INCBIN_U32("graphics/battle_anims/sprites/160.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_RazorLeaf[] = INCBIN_U32("graphics/battle_anims/sprites/razor_leaf.4bpp.lz");
+const u32 gBattleAnimSpritePal_RazorLeaf[] = INCBIN_U32("graphics/battle_anims/sprites/razor_leaf.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_144[] = INCBIN_U32("graphics/battle_anims/sprites/144.4bpp.lz");
-const u32 gBattleAnimSpritePalette_144[] = INCBIN_U32("graphics/battle_anims/sprites/144.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_MistCloud[] = INCBIN_U32("graphics/battle_anims/sprites/mist_cloud.4bpp.lz");
+const u32 gBattleAnimSpritePal_MistCloud[] = INCBIN_U32("graphics/battle_anims/sprites/mist_cloud.gbapal.lz");
const u32 gUnknownGfx_D1C060[] = INCBIN_U32("graphics/unknown/unknown_D1C060.4bpp.lz");
const u32 gUnknownPal_D1C060[] = INCBIN_U32("graphics/unknown/unknown_D1C060.gbapal.lz");
const u32 gUnknownTilemap_D1C060[] = INCBIN_U32("graphics/unknown/unknown_D1C060.bin.lz");
-const u32 gBattleAnimSpriteSheet_162[] = INCBIN_U32("graphics/battle_anims/sprites/162.4bpp.lz");
-const u32 gBattleAnimSpritePalette_162[] = INCBIN_U32("graphics/battle_anims/sprites/162.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_WhirlwindLines[] = INCBIN_U32("graphics/battle_anims/sprites/whirlwind_lines.4bpp.lz");
+const u32 gBattleAnimSpritePal_WhirlwindLines[] = INCBIN_U32("graphics/battle_anims/sprites/whirlwind_lines.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_163[] = INCBIN_U32("graphics/battle_anims/sprites/163.4bpp.lz");
-const u32 gBattleAnimSpritePalette_163[] = INCBIN_U32("graphics/battle_anims/sprites/163.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_GoldRing[] = INCBIN_U32("graphics/battle_anims/sprites/gold_ring.4bpp.lz");
+const u32 gBattleAnimSpritePal_GoldRing[] = INCBIN_U32("graphics/battle_anims/sprites/gold_ring.gbapal.lz");
-const u32 gBattleAnimSpritePalette_288[] = INCBIN_U32("graphics/battle_anims/sprites/288.gbapal.lz");
-const u32 gBattleAnimSpritePalette_164[] = INCBIN_U32("graphics/battle_anims/sprites/164.gbapal.lz");
-const u32 gBattleAnimSpritePalette_165[] = INCBIN_U32("graphics/battle_anims/sprites/165.gbapal.lz");
+const u32 gBattleAnimSpritePal_BlueRing2[] = INCBIN_U32("graphics/battle_anims/sprites/blue_ring_2.gbapal.lz");
+const u32 gBattleAnimSpritePal_PurpleRing[] = INCBIN_U32("graphics/battle_anims/sprites/purple_ring.gbapal.lz");
+const u32 gBattleAnimSpritePal_BlueRing[] = INCBIN_U32("graphics/battle_anims/sprites/blue_ring.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_166[] = INCBIN_U32("graphics/battle_anims/sprites/166.4bpp.lz");
-const u32 gBattleAnimSpritePalette_166[] = INCBIN_U32("graphics/battle_anims/sprites/166.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_GreenLightWall[] = INCBIN_U32("graphics/battle_anims/sprites/green_light_wall.4bpp.lz");
+const u32 gBattleAnimSpritePal_GreenLightWall[] = INCBIN_U32("graphics/battle_anims/sprites/green_light_wall.gbapal.lz");
-const u32 gBattleAnimSpritePalette_167[] = INCBIN_U32("graphics/battle_anims/sprites/167.gbapal.lz");
-const u32 gBattleAnimSpritePalette_168[] = INCBIN_U32("graphics/battle_anims/sprites/168.gbapal.lz");
-const u32 gBattleAnimSpritePalette_169[] = INCBIN_U32("graphics/battle_anims/sprites/169.gbapal.lz");
-const u32 gBattleAnimSpritePalette_170[] = INCBIN_U32("graphics/battle_anims/sprites/170.gbapal.lz");
+const u32 gBattleAnimSpritePal_BlueLightWall[] = INCBIN_U32("graphics/battle_anims/sprites/blue_light_wall.gbapal.lz");
+const u32 gBattleAnimSpritePal_RedLightWall[] = INCBIN_U32("graphics/battle_anims/sprites/red_light_wall.gbapal.lz");
+const u32 gBattleAnimSpritePal_GrayLightWall[] = INCBIN_U32("graphics/battle_anims/sprites/gray_light_wall.gbapal.lz");
+const u32 gBattleAnimSpritePal_OrangeLightWall[] = INCBIN_U32("graphics/battle_anims/sprites/orange_light_wall.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_171[] = INCBIN_U32("graphics/battle_anims/sprites/171.4bpp.lz");
-const u32 gBattleAnimSpritePalette_171[] = INCBIN_U32("graphics/battle_anims/sprites/171.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_BlackBall2[] = INCBIN_U32("graphics/battle_anims/sprites/black_ball_2.4bpp.lz");
+const u32 gBattleAnimSpritePal_BlackBall2[] = INCBIN_U32("graphics/battle_anims/sprites/black_ball_2.gbapal.lz");
-const u32 gBattleAnimSpritePalette_172[] = INCBIN_U32("graphics/battle_anims/sprites/172.gbapal.lz");
+const u32 gBattleAnimSpritePal_PurpleGasCloud[] = INCBIN_U32("graphics/battle_anims/sprites/purple_gas_cloud.gbapal.lz");
const u32 gContestJudgeGfx[] = INCBIN_U32("graphics/contest/judge.4bpp.lz");
const u32 gContest2Pal[] = INCBIN_U32("graphics/contest/judge.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_001[] = INCBIN_U32("graphics/battle_anims/sprites/001.4bpp.lz");
-const u32 gBattleAnimSpritePalette_001[] = INCBIN_U32("graphics/battle_anims/sprites/001.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Spark[] = INCBIN_U32("graphics/battle_anims/sprites/spark.4bpp.lz");
+const u32 gBattleAnimSpritePal_Spark[] = INCBIN_U32("graphics/battle_anims/sprites/spark.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_173[] = INCBIN_U32("graphics/battle_anims/sprites/173.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_SparkH[] = INCBIN_U32("graphics/battle_anims/sprites/spark_h.4bpp.lz");
-const u32 gBattleAnimBackgroundImage_00[] = INCBIN_U32("graphics/battle_anims/backgrounds/00.4bpp.lz");
-const u32 gBattleAnimBackgroundPalette_00[] = INCBIN_U32("graphics/battle_anims/backgrounds/00.gbapal.lz");
-const u32 gBattleAnimBackgroundTilemap_00[] = INCBIN_U32("graphics/battle_anims/backgrounds/00.bin.lz");
+const u32 gBattleAnimBgImage_Dark[] = INCBIN_U32("graphics/battle_anims/backgrounds/dark.4bpp.lz");
+const u32 gBattleAnimBgPalette_Dark[] = INCBIN_U32("graphics/battle_anims/backgrounds/dark.gbapal.lz");
+const u32 gBattleAnimBgTilemap_Dark[] = INCBIN_U32("graphics/battle_anims/backgrounds/dark.bin.lz");
const u32 gMetalShineGfx[] = INCBIN_U32("graphics/battle_anims/masks/metal_shine.4bpp.lz");
const u32 gMetalShinePalette[] = INCBIN_U32("graphics/battle_anims/masks/metal_shine.gbapal.lz");
@@ -600,48 +600,48 @@ const u32 gUnusedGfx_Goosuto[] = INCBIN_U32("graphics/unused/goosuto.4bpp.lz");
const u32 gUnusedPal_Goosuto[] = INCBIN_U32("graphics/unused/goosuto.gbapal.lz");
const u32 gUnusedTilemap_Goosuto[] = INCBIN_U32("graphics/unused/goosuto.bin.lz");
-const u32 gBattleAnimSpriteSheet_174[] = INCBIN_U32("graphics/battle_anims/sprites/174.4bpp.lz");
-const u32 gBattleAnimSpritePalette_174[] = INCBIN_U32("graphics/battle_anims/sprites/174.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_YellowStar[] = INCBIN_U32("graphics/battle_anims/sprites/yellow_star.4bpp.lz");
+const u32 gBattleAnimSpritePal_YellowStar[] = INCBIN_U32("graphics/battle_anims/sprites/yellow_star.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_175[] = INCBIN_U32("graphics/battle_anims/sprites/175.4bpp.lz");
-const u32 gBattleAnimSpritePalette_175[] = INCBIN_U32("graphics/battle_anims/sprites/175.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_LargeFreshEgg[] = INCBIN_U32("graphics/battle_anims/sprites/large_fresh_egg.4bpp.lz");
+const u32 gBattleAnimSpritePal_LargeFreshEgg[] = INCBIN_U32("graphics/battle_anims/sprites/large_fresh_egg.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_176[] = INCBIN_U32("graphics/battle_anims/sprites/176.4bpp.lz");
-const u32 gBattleAnimSpritePalette_176[] = INCBIN_U32("graphics/battle_anims/sprites/176.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_ShadowBall[] = INCBIN_U32("graphics/battle_anims/sprites/shadow_ball.4bpp.lz");
+const u32 gBattleAnimSpritePal_ShadowBall[] = INCBIN_U32("graphics/battle_anims/sprites/shadow_ball.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_177[] = INCBIN_U32("graphics/battle_anims/sprites/177.4bpp.lz");
-const u32 gBattleAnimSpritePalette_177[] = INCBIN_U32("graphics/battle_anims/sprites/177.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Lick[] = INCBIN_U32("graphics/battle_anims/sprites/lick.4bpp.lz");
+const u32 gBattleAnimSpritePal_Lick[] = INCBIN_U32("graphics/battle_anims/sprites/lick.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_178[] = INCBIN_U32("graphics/battle_anims/sprites/178.4bpp.lz");
-const u32 gBattleAnimSpritePalette_178[] = INCBIN_U32("graphics/battle_anims/sprites/178.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_VoidLines[] = INCBIN_U32("graphics/battle_anims/sprites/void_lines.4bpp.lz");
+const u32 gBattleAnimSpritePal_VoidLines[] = INCBIN_U32("graphics/battle_anims/sprites/void_lines.gbapal.lz");
-const u32 gBattleAnimSpritePalette_179[] = INCBIN_U32("graphics/battle_anims/sprites/179.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_179[] = INCBIN_U32("graphics/battle_anims/sprites/179.4bpp.lz");
+const u32 gBattleAnimSpritePal_String[] = INCBIN_U32("graphics/battle_anims/sprites/string.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_String[] = INCBIN_U32("graphics/battle_anims/sprites/string.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_180[] = INCBIN_U32("graphics/battle_anims/sprites/180.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_181[] = INCBIN_U32("graphics/battle_anims/sprites/181.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_WebThread[] = INCBIN_U32("graphics/battle_anims/sprites/web_thread.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_SpiderWeb[] = INCBIN_U32("graphics/battle_anims/sprites/spider_web.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_182[] = INCBIN_U32("graphics/battle_anims/sprites/182.4bpp.lz");
-const u32 gBattleAnimSpritePalette_182[] = INCBIN_U32("graphics/battle_anims/sprites/182.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Lightbulb[] = INCBIN_U32("graphics/battle_anims/sprites/lightbulb.4bpp.lz");
+const u32 gBattleAnimSpritePal_Lightbulb[] = INCBIN_U32("graphics/battle_anims/sprites/lightbulb.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_183[] = INCBIN_U32("graphics/battle_anims/sprites/183.4bpp.lz");
-const u32 gBattleAnimSpritePalette_183[] = INCBIN_U32("graphics/battle_anims/sprites/183.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Slash[] = INCBIN_U32("graphics/battle_anims/sprites/slash.4bpp.lz");
+const u32 gBattleAnimSpritePal_Slash[] = INCBIN_U32("graphics/battle_anims/sprites/slash.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_184[] = INCBIN_U32("graphics/battle_anims/sprites/184.4bpp.lz");
-const u32 gBattleAnimSpritePalette_184[] = INCBIN_U32("graphics/battle_anims/sprites/184.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_FocusEnergy[] = INCBIN_U32("graphics/battle_anims/sprites/focus_energy.4bpp.lz");
+const u32 gBattleAnimSpritePal_FocusEnergy[] = INCBIN_U32("graphics/battle_anims/sprites/focus_energy.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_185[] = INCBIN_U32("graphics/battle_anims/sprites/185.4bpp.lz");
-const u32 gBattleAnimSpritePalette_185[] = INCBIN_U32("graphics/battle_anims/sprites/185.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_SphereToCube[] = INCBIN_U32("graphics/battle_anims/sprites/sphere_to_cube.4bpp.lz");
+const u32 gBattleAnimSpritePal_SphereToCube[] = INCBIN_U32("graphics/battle_anims/sprites/sphere_to_cube.gbapal.lz");
-const u32 gBattleAnimBackgroundImage_03[] = INCBIN_U32("graphics/battle_anims/backgrounds/03.4bpp.lz");
-const u32 gBattleAnimBackgroundPalette_03[] = INCBIN_U32("graphics/battle_anims/backgrounds/03.gbapal.lz");
-const u32 gBattleAnimBackgroundTilemap_03[] = INCBIN_U32("graphics/battle_anims/backgrounds/03.bin.lz");
+const u32 gBattleAnimBgImage_Psychic[] = INCBIN_U32("graphics/battle_anims/backgrounds/psychic.4bpp.lz");
+const u32 gBattleAnimBgPalette_Psychic[] = INCBIN_U32("graphics/battle_anims/backgrounds/psychic.gbapal.lz");
+const u32 gBattleAnimBgTilemap_Psychic[] = INCBIN_U32("graphics/battle_anims/backgrounds/psychic.bin.lz");
-const u32 gBattleAnimSpriteSheet_187[] = INCBIN_U32("graphics/battle_anims/sprites/187.4bpp.lz");
-const u32 gBattleAnimSpritePalette_187[] = INCBIN_U32("graphics/battle_anims/sprites/187.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Eye[] = INCBIN_U32("graphics/battle_anims/sprites/eye.4bpp.lz");
+const u32 gBattleAnimSpritePal_Eye[] = INCBIN_U32("graphics/battle_anims/sprites/eye.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_186[] = INCBIN_U32("graphics/battle_anims/sprites/186.4bpp.lz");
-const u32 gBattleAnimSpritePalette_186[] = INCBIN_U32("graphics/battle_anims/sprites/186.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Tendrils[] = INCBIN_U32("graphics/battle_anims/sprites/tendrils.4bpp.lz");
+const u32 gBattleAnimSpritePal_Tendrils[] = INCBIN_U32("graphics/battle_anims/sprites/tendrils.gbapal.lz");
const u32 gHealthboxSinglesPlayerGfx[] = INCBIN_U32("graphics/battle_interface/healthbox_singles_player.4bpp.lz");
const u32 gHealthboxSinglesOpponentGfx[] = INCBIN_U32("graphics/battle_interface/healthbox_singles_opponent.4bpp.lz");
@@ -652,237 +652,237 @@ const u32 gHealthboxSafariGfx[] = INCBIN_U32("graphics/battle_interface/healthbo
const u32 gUnusedGfx_Shadow[] = INCBIN_U32("graphics/unused/shadow.4bpp.lz");
const u32 gUnusedPal_Shadow[] = INCBIN_U32("graphics/unused/shadow.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_014[] = INCBIN_U32("graphics/battle_anims/sprites/014.4bpp.lz");
-const u32 gBattleAnimSpritePalette_014[] = INCBIN_U32("graphics/battle_anims/sprites/014.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_LockOn[] = INCBIN_U32("graphics/battle_anims/sprites/lock_on.4bpp.lz");
+const u32 gBattleAnimSpritePal_LockOn[] = INCBIN_U32("graphics/battle_anims/sprites/lock_on.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_190[] = INCBIN_U32("graphics/battle_anims/sprites/190.4bpp.lz");
-const u32 gBattleAnimSpritePalette_190[] = INCBIN_U32("graphics/battle_anims/sprites/190.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_OpeningEye[] = INCBIN_U32("graphics/battle_anims/sprites/opening_eye.4bpp.lz");
+const u32 gBattleAnimSpritePal_OpeningEye[] = INCBIN_U32("graphics/battle_anims/sprites/opening_eye.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_191[] = INCBIN_U32("graphics/battle_anims/sprites/191.4bpp.lz");
-const u32 gBattleAnimSpritePalette_191[] = INCBIN_U32("graphics/battle_anims/sprites/191.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_RoundWhiteHalo[] = INCBIN_U32("graphics/battle_anims/sprites/round_white_halo.4bpp.lz");
+const u32 gBattleAnimSpritePal_RoundWhiteHalo[] = INCBIN_U32("graphics/battle_anims/sprites/round_white_halo.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_189[] = INCBIN_U32("graphics/battle_anims/sprites/189.4bpp.lz");
-const u32 gBattleAnimSpritePalette_189[] = INCBIN_U32("graphics/battle_anims/sprites/189.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_TealAlert[] = INCBIN_U32("graphics/battle_anims/sprites/teal_alert.4bpp.lz");
+const u32 gBattleAnimSpritePal_TealAlert[] = INCBIN_U32("graphics/battle_anims/sprites/teal_alert.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_192[] = INCBIN_U32("graphics/battle_anims/sprites/192.4bpp.lz");
-const u32 gBattleAnimSpritePalette_192[] = INCBIN_U32("graphics/battle_anims/sprites/192.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_FangAttack[] = INCBIN_U32("graphics/battle_anims/sprites/fang_attack.4bpp.lz");
+const u32 gBattleAnimSpritePal_FangAttack[] = INCBIN_U32("graphics/battle_anims/sprites/fang_attack.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_193[] = INCBIN_U32("graphics/battle_anims/sprites/193.4bpp.lz");
-const u32 gBattleAnimSpritePalette_193[] = INCBIN_U32("graphics/battle_anims/sprites/193.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_PurpleHandOutline[] = INCBIN_U32("graphics/battle_anims/sprites/purple_hand_outline.4bpp.lz");
+const u32 gBattleAnimSpritePal_PurpleHandOutline[] = INCBIN_U32("graphics/battle_anims/sprites/purple_hand_outline.gbapal.lz");
const u32 gUnknown_08C20668[] = INCBIN_U32("graphics/battle_anims/masks/curse.4bpp.lz");
const u32 gUnknown_08C20684[] = INCBIN_U32("graphics/battle_anims/masks/curse.bin.lz");
-const u32 gBattleAnimSpriteSheet_002[] = INCBIN_U32("graphics/battle_anims/sprites/002.4bpp.lz");
-const u32 gBattleAnimSpritePalette_002[] = INCBIN_U32("graphics/battle_anims/sprites/002.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Pencil[] = INCBIN_U32("graphics/battle_anims/sprites/pencil.4bpp.lz");
+const u32 gBattleAnimSpritePal_Pencil[] = INCBIN_U32("graphics/battle_anims/sprites/pencil.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_196[] = INCBIN_U32("graphics/battle_anims/sprites/196.4bpp.lz");
-const u32 gBattleAnimSpritePalette_196[] = INCBIN_U32("graphics/battle_anims/sprites/196.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Spiral[] = INCBIN_U32("graphics/battle_anims/sprites/spiral.4bpp.lz");
+const u32 gBattleAnimSpritePal_Spiral[] = INCBIN_U32("graphics/battle_anims/sprites/spiral.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_194[] = INCBIN_U32("graphics/battle_anims/sprites/194.4bpp.lz");
-const u32 gBattleAnimSpritePalette_194[] = INCBIN_U32("graphics/battle_anims/sprites/194.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Moon[] = INCBIN_U32("graphics/battle_anims/sprites/moon.4bpp.lz");
+const u32 gBattleAnimSpritePal_Moon[] = INCBIN_U32("graphics/battle_anims/sprites/moon.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_195[] = INCBIN_U32("graphics/battle_anims/sprites/195.4bpp.lz");
-const u32 gBattleAnimSpritePalette_195[] = INCBIN_U32("graphics/battle_anims/sprites/195.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_GreenSparkle[] = INCBIN_U32("graphics/battle_anims/sprites/green_sparkle.4bpp.lz");
+const u32 gBattleAnimSpritePal_GreenSparkle[] = INCBIN_U32("graphics/battle_anims/sprites/green_sparkle.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_197[] = INCBIN_U32("graphics/battle_anims/sprites/197.4bpp.lz");
-const u32 gBattleAnimSpritePalette_197[] = INCBIN_U32("graphics/battle_anims/sprites/197.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_SnoreZ[] = INCBIN_U32("graphics/battle_anims/sprites/snore_z.4bpp.lz");
+const u32 gBattleAnimSpritePal_SnoreZ[] = INCBIN_U32("graphics/battle_anims/sprites/snore_z.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_198[] = INCBIN_U32("graphics/battle_anims/sprites/198.4bpp.lz");
-const u32 gBattleAnimSpritePalette_198[] = INCBIN_U32("graphics/battle_anims/sprites/198.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Explosion[] = INCBIN_U32("graphics/battle_anims/sprites/explosion.4bpp.lz");
+const u32 gBattleAnimSpritePal_Explosion[] = INCBIN_U32("graphics/battle_anims/sprites/explosion.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_199[] = INCBIN_U32("graphics/battle_anims/sprites/199.4bpp.lz");
-const u32 gBattleAnimSpritePalette_199[] = INCBIN_U32("graphics/battle_anims/sprites/199.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Nail[] = INCBIN_U32("graphics/battle_anims/sprites/nail.4bpp.lz");
+const u32 gBattleAnimSpritePal_Nail[] = INCBIN_U32("graphics/battle_anims/sprites/nail.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_200[] = INCBIN_U32("graphics/battle_anims/sprites/200.4bpp.lz");
-const u32 gBattleAnimSpritePalette_200[] = INCBIN_U32("graphics/battle_anims/sprites/200.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_GhostlySpirit[] = INCBIN_U32("graphics/battle_anims/sprites/ghostly_spirit.4bpp.lz");
+const u32 gBattleAnimSpritePal_GhostlySpirit[] = INCBIN_U32("graphics/battle_anims/sprites/ghostly_spirit.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_201[] = INCBIN_U32("graphics/battle_anims/sprites/201.4bpp.lz");
-const u32 gBattleAnimSpritePalette_201[] = INCBIN_U32("graphics/battle_anims/sprites/201.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_WarmRock[] = INCBIN_U32("graphics/battle_anims/sprites/warm_rock.4bpp.lz");
+const u32 gBattleAnimSpritePal_WarmRock[] = INCBIN_U32("graphics/battle_anims/sprites/warm_rock.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_204[] = INCBIN_U32("graphics/battle_anims/sprites/204.4bpp.lz");
-const u32 gBattleAnimSpritePalette_204[] = INCBIN_U32("graphics/battle_anims/sprites/204.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_PunchImpact[] = INCBIN_U32("graphics/battle_anims/sprites/punch_impact.4bpp.lz");
+const u32 gBattleAnimSpritePal_PunchImpact[] = INCBIN_U32("graphics/battle_anims/sprites/punch_impact.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_202[] = INCBIN_U32("graphics/battle_anims/sprites/202.4bpp.lz");
-const u32 gBattleAnimSpritePalette_202[] = INCBIN_U32("graphics/battle_anims/sprites/202.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_BreakingEgg[] = INCBIN_U32("graphics/battle_anims/sprites/breaking_egg.4bpp.lz");
+const u32 gBattleAnimSpritePal_BreakingEgg[] = INCBIN_U32("graphics/battle_anims/sprites/breaking_egg.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_203[] = INCBIN_U32("graphics/battle_anims/sprites/203.4bpp.lz");
-const u32 gBattleAnimSpritePalette_203[] = INCBIN_U32("graphics/battle_anims/sprites/203.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_ThinRing[] = INCBIN_U32("graphics/battle_anims/sprites/thin_ring.4bpp.lz");
+const u32 gBattleAnimSpritePal_ThinRing[] = INCBIN_U32("graphics/battle_anims/sprites/thin_ring.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_206[] = INCBIN_U32("graphics/battle_anims/sprites/206.4bpp.lz");
-const u32 gBattleAnimSpritePalette_206[] = INCBIN_U32("graphics/battle_anims/sprites/206.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_MusicNotes2[] = INCBIN_U32("graphics/battle_anims/sprites/music_notes_2.4bpp.lz");
+const u32 gBattleAnimSpritePal_MusicNotes2[] = INCBIN_U32("graphics/battle_anims/sprites/music_notes_2.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_205[] = INCBIN_U32("graphics/battle_anims/sprites/205.4bpp.lz");
-const u32 gBattleAnimSpritePalette_205[] = INCBIN_U32("graphics/battle_anims/sprites/205.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Bell[] = INCBIN_U32("graphics/battle_anims/sprites/bell.4bpp.lz");
+const u32 gBattleAnimSpritePal_Bell[] = INCBIN_U32("graphics/battle_anims/sprites/bell.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_207[] = INCBIN_U32("graphics/battle_anims/sprites/207.4bpp.lz");
-const u32 gBattleAnimSpritePalette_207[] = INCBIN_U32("graphics/battle_anims/sprites/207.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_SpeedDust[] = INCBIN_U32("graphics/battle_anims/sprites/speed_dust.4bpp.lz");
+const u32 gBattleAnimSpritePal_SpeedDust[] = INCBIN_U32("graphics/battle_anims/sprites/speed_dust.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_208[] = INCBIN_U32("graphics/battle_anims/sprites/208.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_TornMetal[] = INCBIN_U32("graphics/battle_anims/sprites/torn_metal.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_209[] = INCBIN_U32("graphics/battle_anims/sprites/209.4bpp.lz");
-const u32 gBattleAnimSpritePalette_209[] = INCBIN_U32("graphics/battle_anims/sprites/209.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_ThoughtBubble[] = INCBIN_U32("graphics/battle_anims/sprites/thought_bubble.4bpp.lz");
+const u32 gBattleAnimSpritePal_ThoughtBubble[] = INCBIN_U32("graphics/battle_anims/sprites/thought_bubble.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_064[] = INCBIN_U32("graphics/battle_anims/sprites/064.4bpp.lz");
-const u32 gBattleAnimSpritePalette_064[] = INCBIN_U32("graphics/battle_anims/sprites/064.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Finger[] = INCBIN_U32("graphics/battle_anims/sprites/finger.4bpp.lz");
+const u32 gBattleAnimSpritePal_Finger[] = INCBIN_U32("graphics/battle_anims/sprites/finger.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_210[] = INCBIN_U32("graphics/battle_anims/sprites/210.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_MagentaHeart[] = INCBIN_U32("graphics/battle_anims/sprites/magenta_heart.4bpp.lz");
-const u32 gBattleAnimSpritePalette_219[] = INCBIN_U32("graphics/battle_anims/sprites/219.gbapal.lz");
-const u32 gBattleAnimSpritePalette_210[] = INCBIN_U32("graphics/battle_anims/sprites/210.gbapal.lz");
-const u32 gBattleAnimSpritePalette_216[] = INCBIN_U32("graphics/battle_anims/sprites/216.gbapal.lz");
+const u32 gBattleAnimSpritePal_PinkHeart[] = INCBIN_U32("graphics/battle_anims/sprites/pink_heart.gbapal.lz");
+const u32 gBattleAnimSpritePal_MagentaHeart[] = INCBIN_U32("graphics/battle_anims/sprites/magenta_heart.gbapal.lz");
+const u32 gBattleAnimSpritePal_RedHeart[] = INCBIN_U32("graphics/battle_anims/sprites/red_heart.gbapal.lz");
const u32 gUnknown_08C232E0[] = INCBIN_U32("graphics/battle_anims/backgrounds/attract.4bpp.lz");
const u32 gUnknown_08C23D50[] = INCBIN_U32("graphics/battle_anims/backgrounds/attract.gbapal.lz");
const u32 gUnknown_08C23D78[] = INCBIN_U32("graphics/battle_anims/backgrounds/attract.bin.lz");
-const u32 gBattleAnimSpriteSheet_217[] = INCBIN_U32("graphics/battle_anims/sprites/217.4bpp.lz");
-const u32 gBattleAnimSpritePalette_217[] = INCBIN_U32("graphics/battle_anims/sprites/217.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_RedOrb[] = INCBIN_U32("graphics/battle_anims/sprites/red_orb.4bpp.lz");
+const u32 gBattleAnimSpritePal_RedOrb[] = INCBIN_U32("graphics/battle_anims/sprites/red_orb.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_212[] = INCBIN_U32("graphics/battle_anims/sprites/212.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_211[] = INCBIN_U32("graphics/battle_anims/sprites/211.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_213[] = INCBIN_U32("graphics/battle_anims/sprites/213.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_CircleOfLight[] = INCBIN_U32("graphics/battle_anims/sprites/circle_of_light.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_ElectricOrbs[] = INCBIN_U32("graphics/battle_anims/sprites/electric_orbs.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Electricity[] = INCBIN_U32("graphics/battle_anims/sprites/electricity.4bpp.lz");
-const u32 gBattleAnimSpritePalette_211[] = INCBIN_U32("graphics/battle_anims/sprites/211.gbapal.lz");
+const u32 gBattleAnimSpritePal_ElectricOrbs[] = INCBIN_U32("graphics/battle_anims/sprites/electric_orbs.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_214[] = INCBIN_U32("graphics/battle_anims/sprites/214.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Finger2[] = INCBIN_U32("graphics/battle_anims/sprites/finger_2.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_215[] = INCBIN_U32("graphics/battle_anims/sprites/215.4bpp.lz");
-const u32 gBattleAnimSpritePalette_215[] = INCBIN_U32("graphics/battle_anims/sprites/215.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_MovementWaves[] = INCBIN_U32("graphics/battle_anims/sprites/movement_waves.4bpp.lz");
+const u32 gBattleAnimSpritePal_MovementWaves[] = INCBIN_U32("graphics/battle_anims/sprites/movement_waves.gbapal.lz");
const u32 gUnknown_08C249D0[] = INCBIN_U32("graphics/battle_anims/backgrounds/scary_face.gbapal.lz");
const u32 gUnknown_08C249F8[] = INCBIN_U32("graphics/battle_anims/backgrounds/scary_face.4bpp.lz");
-const u32 gBattleAnimSpritePalette_218[] = INCBIN_U32("graphics/battle_anims/sprites/218.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_218[] = INCBIN_U32("graphics/battle_anims/sprites/218.4bpp.lz");
+const u32 gBattleAnimSpritePal_EyeSparkle[] = INCBIN_U32("graphics/battle_anims/sprites/eye_sparkle.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_EyeSparkle[] = INCBIN_U32("graphics/battle_anims/sprites/eye_sparkle.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_087[] = INCBIN_U32("graphics/battle_anims/sprites/087.4bpp.lz");
-const u32 gBattleAnimSpritePalette_087[] = INCBIN_U32("graphics/battle_anims/sprites/087.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Anger[] = INCBIN_U32("graphics/battle_anims/sprites/anger.4bpp.lz");
+const u32 gBattleAnimSpritePal_Anger[] = INCBIN_U32("graphics/battle_anims/sprites/anger.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_018[] = INCBIN_U32("graphics/battle_anims/sprites/018.4bpp.lz");
-const u32 gBattleAnimSpritePalette_018[] = INCBIN_U32("graphics/battle_anims/sprites/018.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Conversion[] = INCBIN_U32("graphics/battle_anims/sprites/conversion.4bpp.lz");
+const u32 gBattleAnimSpritePal_Conversion[] = INCBIN_U32("graphics/battle_anims/sprites/conversion.gbapal.lz");
-const u32 gBattleAnimSpritePalette_220[] = INCBIN_U32("graphics/battle_anims/sprites/220.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_220[] = INCBIN_U32("graphics/battle_anims/sprites/220.4bpp.lz");
+const u32 gBattleAnimSpritePal_Angel[] = INCBIN_U32("graphics/battle_anims/sprites/angel.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Angel[] = INCBIN_U32("graphics/battle_anims/sprites/angel.4bpp.lz");
-const u32 gBattleAnimSpritePalette_221[] = INCBIN_U32("graphics/battle_anims/sprites/221.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_221[] = INCBIN_U32("graphics/battle_anims/sprites/221.4bpp.lz");
+const u32 gBattleAnimSpritePal_Devil[] = INCBIN_U32("graphics/battle_anims/sprites/devil.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Devil[] = INCBIN_U32("graphics/battle_anims/sprites/devil.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_222[] = INCBIN_U32("graphics/battle_anims/sprites/222.4bpp.lz");
-const u32 gBattleAnimSpritePalette_222[] = INCBIN_U32("graphics/battle_anims/sprites/222.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Swipe[] = INCBIN_U32("graphics/battle_anims/sprites/swipe.4bpp.lz");
+const u32 gBattleAnimSpritePal_Swipe[] = INCBIN_U32("graphics/battle_anims/sprites/swipe.gbapal.lz");
-const u32 gBattleAnimSpritePalette_223[] = INCBIN_U32("graphics/battle_anims/sprites/223.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_223[] = INCBIN_U32("graphics/battle_anims/sprites/223.4bpp.lz");
+const u32 gBattleAnimSpritePal_Roots[] = INCBIN_U32("graphics/battle_anims/sprites/roots.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Roots[] = INCBIN_U32("graphics/battle_anims/sprites/roots.4bpp.lz");
-const u32 gBattleAnimSpritePalette_224[] = INCBIN_U32("graphics/battle_anims/sprites/224.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_224[] = INCBIN_U32("graphics/battle_anims/sprites/224.4bpp.lz");
+const u32 gBattleAnimSpritePal_ItemBag[] = INCBIN_U32("graphics/battle_anims/sprites/item_bag.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_ItemBag[] = INCBIN_U32("graphics/battle_anims/sprites/item_bag.4bpp.lz");
-const u32 gBattleAnimSpritePalette_230[] = INCBIN_U32("graphics/battle_anims/sprites/230.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_230[] = INCBIN_U32("graphics/battle_anims/sprites/230.4bpp.lz");
+const u32 gBattleAnimSpritePal_TriForceTriangle[] = INCBIN_U32("graphics/battle_anims/sprites/tri_force_triangle.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_TriForceTriangle[] = INCBIN_U32("graphics/battle_anims/sprites/tri_force_triangle.4bpp.lz");
-const u32 gBattleAnimSpritePalette_228[] = INCBIN_U32("graphics/battle_anims/sprites/228.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_228[] = INCBIN_U32("graphics/battle_anims/sprites/228.4bpp.lz");
+const u32 gBattleAnimSpritePal_LetterZ[] = INCBIN_U32("graphics/battle_anims/sprites/letter_z.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_LetterZ[] = INCBIN_U32("graphics/battle_anims/sprites/letter_z.4bpp.lz");
-const u32 gBattleAnimBackgroundPalette_04[] = INCBIN_U32("graphics/battle_anims/backgrounds/04.gbapal.lz");
-const u32 gBattleAnimBackgroundImage_04[] = INCBIN_U32("graphics/battle_anims/backgrounds/04.4bpp.lz");
-const u32 gBattleAnimBackgroundTilemap_04[] = INCBIN_U32("graphics/battle_anims/backgrounds/04.bin.lz");
+const u32 gBattleAnimBgPalette_Impact[] = INCBIN_U32("graphics/battle_anims/backgrounds/impact.gbapal.lz");
+const u32 gBattleAnimBgImage_Impact[] = INCBIN_U32("graphics/battle_anims/backgrounds/impact.4bpp.lz");
+const u32 gBattleAnimBgTilemap_ImpactOpponent[] = INCBIN_U32("graphics/battle_anims/backgrounds/impact_opponent.bin.lz");
-const u32 gBattleAnimBackgroundTilemap_05[] = INCBIN_U32("graphics/battle_anims/backgrounds/05.bin.lz");
-const u32 gBattleAnimBackgroundTilemap_06[] = INCBIN_U32("graphics/battle_anims/backgrounds/06.bin.lz");
+const u32 gBattleAnimBgTilemap_ImpactPlayer[] = INCBIN_U32("graphics/battle_anims/backgrounds/impact_player.bin.lz");
+const u32 gBattleAnimBgTilemap_ImpactContests[] = INCBIN_U32("graphics/battle_anims/backgrounds/impact_contests.bin.lz");
-const u32 gBattleAnimSpriteSheet_225[] = INCBIN_U32("graphics/battle_anims/sprites/225.4bpp.lz");
-const u32 gBattleAnimSpritePalette_225[] = INCBIN_U32("graphics/battle_anims/sprites/225.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_JaggedMusicNote[] = INCBIN_U32("graphics/battle_anims/sprites/jagged_music_note.4bpp.lz");
+const u32 gBattleAnimSpritePal_JaggedMusicNote[] = INCBIN_U32("graphics/battle_anims/sprites/jagged_music_note.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_227[] = INCBIN_U32("graphics/battle_anims/sprites/227.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Spotlight[] = INCBIN_U32("graphics/battle_anims/sprites/spotlight.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_226[] = INCBIN_U32("graphics/battle_anims/sprites/226.4bpp.lz");
-const u32 gBattleAnimSpritePalette_226[] = INCBIN_U32("graphics/battle_anims/sprites/226.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Pokeball[] = INCBIN_U32("graphics/battle_anims/sprites/pokeball.4bpp.lz");
+const u32 gBattleAnimSpritePal_Pokeball[] = INCBIN_U32("graphics/battle_anims/sprites/pokeball.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_229[] = INCBIN_U32("graphics/battle_anims/sprites/229.4bpp.lz");
-const u32 gBattleAnimSpritePalette_229[] = INCBIN_U32("graphics/battle_anims/sprites/229.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_RapidSpin[] = INCBIN_U32("graphics/battle_anims/sprites/rapid_spin.4bpp.lz");
+const u32 gBattleAnimSpritePal_RapidSpin[] = INCBIN_U32("graphics/battle_anims/sprites/rapid_spin.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_099[] = INCBIN_U32("graphics/battle_anims/sprites/099.4bpp.lz");
-const u32 gBattleAnimSpritePalette_099[] = INCBIN_U32("graphics/battle_anims/sprites/099.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_MilkBottle[] = INCBIN_U32("graphics/battle_anims/sprites/milk_bottle.4bpp.lz");
+const u32 gBattleAnimSpritePal_MilkBottle[] = INCBIN_U32("graphics/battle_anims/sprites/milk_bottle.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_232[] = INCBIN_U32("graphics/battle_anims/sprites/232.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_WispFire[] = INCBIN_U32("graphics/battle_anims/sprites/wisp_fire.4bpp.lz");
-const u32 gBattleAnimSpritePalette_231[] = INCBIN_U32("graphics/battle_anims/sprites/231.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_231[] = INCBIN_U32("graphics/battle_anims/sprites/231.4bpp.lz");
+const u32 gBattleAnimSpritePal_WispOrb[] = INCBIN_U32("graphics/battle_anims/sprites/wisp_orb.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_WispOrb[] = INCBIN_U32("graphics/battle_anims/sprites/wisp_orb.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_233[] = INCBIN_U32("graphics/battle_anims/sprites/233.4bpp.lz");
-const u32 gBattleAnimSpritePalette_233[] = INCBIN_U32("graphics/battle_anims/sprites/233.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_GoldStars[] = INCBIN_U32("graphics/battle_anims/sprites/gold_stars.4bpp.lz");
+const u32 gBattleAnimSpritePal_GoldStars[] = INCBIN_U32("graphics/battle_anims/sprites/gold_stars.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_234[] = INCBIN_U32("graphics/battle_anims/sprites/234.4bpp.lz");
-const u32 gBattleAnimSpritePalette_234[] = INCBIN_U32("graphics/battle_anims/sprites/234.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_EclipsingOrb[] = INCBIN_U32("graphics/battle_anims/sprites/eclipsing_orb.4bpp.lz");
+const u32 gBattleAnimSpritePal_EclipsingOrb[] = INCBIN_U32("graphics/battle_anims/sprites/eclipsing_orb.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_238[] = INCBIN_U32("graphics/battle_anims/sprites/238.4bpp.lz");
-const u32 gBattleAnimSpritePalette_238[] = INCBIN_U32("graphics/battle_anims/sprites/238.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_PinkPetal[] = INCBIN_U32("graphics/battle_anims/sprites/pink_petal.4bpp.lz");
+const u32 gBattleAnimSpritePal_PinkPetal[] = INCBIN_U32("graphics/battle_anims/sprites/pink_petal.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_235[] = INCBIN_U32("graphics/battle_anims/sprites/235.4bpp.lz");
-const u32 gBattleAnimSpritePalette_235[] = INCBIN_U32("graphics/battle_anims/sprites/235.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_GrayOrb[] = INCBIN_U32("graphics/battle_anims/sprites/gray_orb.4bpp.lz");
+const u32 gBattleAnimSpritePal_GrayOrb[] = INCBIN_U32("graphics/battle_anims/sprites/gray_orb.gbapal.lz");
-const u32 gBattleAnimSpritePalette_236[] = INCBIN_U32("graphics/battle_anims/sprites/236.gbapal.lz");
-const u32 gBattleAnimSpritePalette_237[] = INCBIN_U32("graphics/battle_anims/sprites/237.gbapal.lz");
+const u32 gBattleAnimSpritePal_BlueOrb[] = INCBIN_U32("graphics/battle_anims/sprites/blue_orb.gbapal.lz");
+const u32 gBattleAnimSpritePal_RedOrb2[] = INCBIN_U32("graphics/battle_anims/sprites/red_orb_2.gbapal.lz");
-const u32 gBattleAnimBackgroundImage_07[] = INCBIN_U32("graphics/battle_anims/backgrounds/07.4bpp.lz");
-const u32 gBattleAnimBackgroundPalette_07[] = INCBIN_U32("graphics/battle_anims/backgrounds/07.gbapal.lz");
+const u32 gBattleAnimBgImage_Drill[] = INCBIN_U32("graphics/battle_anims/backgrounds/drill.4bpp.lz");
+const u32 gBattleAnimBgPalette_Drill[] = INCBIN_U32("graphics/battle_anims/backgrounds/drill.gbapal.lz");
-const u32 gBattleAnimBackgroundPalette_18[] = INCBIN_U32("graphics/battle_anims/backgrounds/18.gbapal.lz");
+const u32 gBattleAnimBgPalette_Sky[] = INCBIN_U32("graphics/battle_anims/backgrounds/sky.gbapal.lz");
-const u32 gBattleAnimBackgroundTilemap_07[] = INCBIN_U32("graphics/battle_anims/backgrounds/07.bin.lz");
-const u32 gBattleAnimBackgroundTilemap_08[] = INCBIN_U32("graphics/battle_anims/backgrounds/08.bin.lz");
+const u32 gBattleAnimBgTilemap_Drill[] = INCBIN_U32("graphics/battle_anims/backgrounds/drill.bin.lz");
+const u32 gBattleAnimBgTilemap_DrillContests[] = INCBIN_U32("graphics/battle_anims/backgrounds/drill_contests.bin.lz");
-const u32 gBattleAnimBackgroundImage_20[] = INCBIN_U32("graphics/battle_anims/backgrounds/20.4bpp.lz");
-const u32 gBattleAnimBackgroundPalette_20[] = INCBIN_U32("graphics/battle_anims/backgrounds/20.gbapal.lz");
-const u32 gBattleAnimBackgroundTilemap_20[] = INCBIN_U32("graphics/battle_anims/backgrounds/20.bin.lz");
+const u32 gBattleAnimBgImage_Aurora[] = INCBIN_U32("graphics/battle_anims/backgrounds/aurora.4bpp.lz");
+const u32 gBattleAnimBgPalette_Aurora[] = INCBIN_U32("graphics/battle_anims/backgrounds/aurora.gbapal.lz");
+const u32 gBattleAnimBgTilemap_Aurora[] = INCBIN_U32("graphics/battle_anims/backgrounds/aurora.bin.lz");
-const u32 gBattleAnimBackgroundTilemap_09[] = INCBIN_U32("graphics/battle_anims/backgrounds/09.bin.lz");
-const u32 gBattleAnimBackgroundPalette_09[] = INCBIN_U32("graphics/battle_anims/backgrounds/09.gbapal.lz");
+const u32 gBattleAnimBgTilemap_HighspeedOpponent[] = INCBIN_U32("graphics/battle_anims/backgrounds/highspeed_opponent.bin.lz");
+const u32 gBattleAnimBgPalette_Highspeed[] = INCBIN_U32("graphics/battle_anims/backgrounds/highspeed.gbapal.lz");
-const u32 gBattleAnimBackgroundPalette_22[] = INCBIN_U32("graphics/battle_anims/backgrounds/22.gbapal.lz");
+const u32 gBattleAnimBgPalette_Bug[] = INCBIN_U32("graphics/battle_anims/backgrounds/bug.gbapal.lz");
-const u32 gBattleAnimBackgroundImage_09[] = INCBIN_U32("graphics/battle_anims/backgrounds/09.4bpp.lz");
-const u32 gBattleAnimBackgroundTilemap_10[] = INCBIN_U32("graphics/battle_anims/backgrounds/10.bin.lz");
+const u32 gBattleAnimBgImage_Highspeed[] = INCBIN_U32("graphics/battle_anims/backgrounds/highspeed.4bpp.lz");
+const u32 gBattleAnimBgTilemap_HighspeedPlayer[] = INCBIN_U32("graphics/battle_anims/backgrounds/highspeed_player.bin.lz");
const u32 gUnknown_08C2A634[] = INCBIN_U32("graphics/battle_anims/masks/morning_sun.4bpp.lz");
const u32 gUnknown_08C2A6D4[] = INCBIN_U32("graphics/battle_anims/masks/morning_sun.gbapal.lz");
const u32 gUnknown_08C2A6EC[] = INCBIN_U32("graphics/battle_anims/masks/morning_sun.bin.lz");
-const u32 gBattleAnimBackgroundTilemap_12[] = INCBIN_U32("graphics/battle_anims/backgrounds/12.bin.lz");
-const u32 gBattleAnimBackgroundTilemap_13[] = INCBIN_U32("graphics/battle_anims/backgrounds/13.bin.lz");
-const u32 gBattleAnimBackgroundTilemap_14[] = INCBIN_U32("graphics/battle_anims/backgrounds/14.bin.lz");
+const u32 gBattleAnimBgTilemap_GuillotineOpponent[] = INCBIN_U32("graphics/battle_anims/backgrounds/guillotine_opponent.bin.lz");
+const u32 gBattleAnimBgTilemap_GuillotinePlayer[] = INCBIN_U32("graphics/battle_anims/backgrounds/guillotine_player.bin.lz");
+const u32 gBattleAnimBgTilemap_GuillotineContests[] = INCBIN_U32("graphics/battle_anims/backgrounds/guillotine_contests.bin.lz");
-const u32 gBattleAnimBackgroundImage_12[] = INCBIN_U32("graphics/battle_anims/backgrounds/12.4bpp.lz");
-const u32 gBattleAnimBackgroundPalette_12[] = INCBIN_U32("graphics/battle_anims/backgrounds/12.gbapal.lz");
+const u32 gBattleAnimBgImage_Guillotine[] = INCBIN_U32("graphics/battle_anims/backgrounds/guillotine.4bpp.lz");
+const u32 gBattleAnimBgPalette_Guillotine[] = INCBIN_U32("graphics/battle_anims/backgrounds/guillotine.gbapal.lz");
-const u32 gBattleAnimBackgroundImage_11[] = INCBIN_U32("graphics/battle_anims/backgrounds/11.4bpp.lz");
-const u32 gBattleAnimBackgroundPalette_11[] = INCBIN_U32("graphics/battle_anims/backgrounds/11.gbapal.lz");
-const u32 gBattleAnimBackgroundTilemap_11[] = INCBIN_U32("graphics/battle_anims/backgrounds/11.bin.lz");
+const u32 gBattleAnimBgImage_Thunder[] = INCBIN_U32("graphics/battle_anims/backgrounds/thunder.4bpp.lz");
+const u32 gBattleAnimBgPalette_Thunder[] = INCBIN_U32("graphics/battle_anims/backgrounds/thunder.gbapal.lz");
+const u32 gBattleAnimBgTilemap_Thunder[] = INCBIN_U32("graphics/battle_anims/backgrounds/thunder.bin.lz");
-const u32 gBattleAnimSpriteSheet_239[] = INCBIN_U32("graphics/battle_anims/sprites/239.4bpp.lz");
-const u32 gBattleAnimSpritePalette_239[] = INCBIN_U32("graphics/battle_anims/sprites/239.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_PainSplit[] = INCBIN_U32("graphics/battle_anims/sprites/pain_split.4bpp.lz");
+const u32 gBattleAnimSpritePal_PainSplit[] = INCBIN_U32("graphics/battle_anims/sprites/pain_split.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_143[] = INCBIN_U32("graphics/battle_anims/sprites/143.4bpp.lz");
-const u32 gBattleAnimSpritePalette_143[] = INCBIN_U32("graphics/battle_anims/sprites/143.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_HandsAndFeet[] = INCBIN_U32("graphics/battle_anims/sprites/hands_and_feet.4bpp.lz");
+const u32 gBattleAnimSpritePal_HandsAndFeet[] = INCBIN_U32("graphics/battle_anims/sprites/hands_and_feet.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_240[] = INCBIN_U32("graphics/battle_anims/sprites/240.4bpp.lz");
-const u32 gBattleAnimSpritePalette_240[] = INCBIN_U32("graphics/battle_anims/sprites/240.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Confetti[] = INCBIN_U32("graphics/battle_anims/sprites/confetti.4bpp.lz");
+const u32 gBattleAnimSpritePal_Confetti[] = INCBIN_U32("graphics/battle_anims/sprites/confetti.gbapal.lz");
const u32 gSubstituteDollPal[] = INCBIN_U32("graphics/battle_anims/sprites/substitute.gbapal.lz");
const u32 gSubstituteDollGfx[] = INCBIN_U32("graphics/battle_anims/sprites/substitute.4bpp.lz");
const u32 gSubstituteDollTilemap[] = INCBIN_U32("graphics/battle_anims/sprites/substitute.bin.lz");
-const u32 gBattleAnimSpriteSheet_241[] = INCBIN_U32("graphics/battle_anims/sprites/241.4bpp.lz");
-const u32 gBattleAnimSpritePalette_241[] = INCBIN_U32("graphics/battle_anims/sprites/241.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_GreenStar[] = INCBIN_U32("graphics/battle_anims/sprites/green_star.4bpp.lz");
+const u32 gBattleAnimSpritePal_GreenStar[] = INCBIN_U32("graphics/battle_anims/sprites/green_star.gbapal.lz");
const u32 gContestConfetti_Gfx[] = INCBIN_U32("graphics/misc/confetti.4bpp.lz");
const u32 gContestConfetti_Pal[] = INCBIN_U32("graphics/misc/confetti.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_242[] = INCBIN_U32("graphics/battle_anims/sprites/242.4bpp.lz");
-const u32 gBattleAnimSpritePalette_242[] = INCBIN_U32("graphics/battle_anims/sprites/242.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_PinkCloud[] = INCBIN_U32("graphics/battle_anims/sprites/pink_cloud.4bpp.lz");
+const u32 gBattleAnimSpritePal_PinkCloud[] = INCBIN_U32("graphics/battle_anims/sprites/pink_cloud.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_243[] = INCBIN_U32("graphics/battle_anims/sprites/243.4bpp.lz");
-const u32 gBattleAnimSpritePalette_243[] = INCBIN_U32("graphics/battle_anims/sprites/243.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_SweatDrop[] = INCBIN_U32("graphics/battle_anims/sprites/sweat_drop.4bpp.lz");
+const u32 gBattleAnimSpritePal_SweatDrop[] = INCBIN_U32("graphics/battle_anims/sprites/sweat_drop.gbapal.lz");
const u32 gBattleStatMask_Gfx[] = INCBIN_U32("graphics/battle_anims/masks/stat.4bpp.lz");
const u32 gBattleStatMask1_Tilemap[] = INCBIN_U32("graphics/battle_anims/masks/stat_tilemap_1.bin.lz");
@@ -901,52 +901,52 @@ const u32 gCureBubblesGfx[] = INCBIN_U32("graphics/battle_anims/masks/cure_bubbl
const u32 gCureBubblesPal[] = INCBIN_U32("graphics/battle_anims/masks/cure_bubbles.gbapal.lz");
const u32 gCureBubblesTilemap[] = INCBIN_U32("graphics/battle_anims/masks/cure_bubbles.bin.lz");
-const u32 gBattleAnimSpritePalette_245[] = INCBIN_U32("graphics/battle_anims/sprites/245.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_245[] = INCBIN_U32("graphics/battle_anims/sprites/245.4bpp.lz");
+const u32 gBattleAnimSpritePal_PurpleScratch[] = INCBIN_U32("graphics/battle_anims/sprites/purple_scratch.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_PurpleScratch[] = INCBIN_U32("graphics/battle_anims/sprites/purple_scratch.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_246[] = INCBIN_U32("graphics/battle_anims/sprites/246.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_PurpleSwipe[] = INCBIN_U32("graphics/battle_anims/sprites/purple_swipe.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_244[] = INCBIN_U32("graphics/battle_anims/sprites/244.4bpp.lz");
-const u32 gBattleAnimSpritePalette_244[] = INCBIN_U32("graphics/battle_anims/sprites/244.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_GuardRing[] = INCBIN_U32("graphics/battle_anims/sprites/guard_ring.4bpp.lz");
+const u32 gBattleAnimSpritePal_GuardRing[] = INCBIN_U32("graphics/battle_anims/sprites/guard_ring.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_247[] = INCBIN_U32("graphics/battle_anims/sprites/247.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_TagHand[] = INCBIN_U32("graphics/battle_anims/sprites/tag_hand.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_053[] = INCBIN_U32("graphics/battle_anims/sprites/053.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_NoiseLine[] = INCBIN_U32("graphics/battle_anims/sprites/noise_line.4bpp.lz");
const u32 gUnknown_08C2EA50[] = INCBIN_U32("graphics/battle_anims/masks/unknown_C2EA50.4bpp.lz");
const u32 gUnknown_08C2EA9C[] = INCBIN_U32("graphics/battle_anims/masks/unknown_C2EA50.bin.lz");
-const u32 gBattleAnimSpriteSheet_248[] = INCBIN_U32("graphics/battle_anims/sprites/248.4bpp.lz");
-const u32 gBattleAnimSpritePalette_248[] = INCBIN_U32("graphics/battle_anims/sprites/248.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_SmallRedEye[] = INCBIN_U32("graphics/battle_anims/sprites/small_red_eye.4bpp.lz");
+const u32 gBattleAnimSpritePal_SmallRedEye[] = INCBIN_U32("graphics/battle_anims/sprites/small_red_eye.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_249[] = INCBIN_U32("graphics/battle_anims/sprites/249.4bpp.lz");
-const u32 gBattleAnimSpritePalette_249[] = INCBIN_U32("graphics/battle_anims/sprites/249.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_HollowOrb[] = INCBIN_U32("graphics/battle_anims/sprites/hollow_orb.4bpp.lz");
+const u32 gBattleAnimSpritePal_HollowOrb[] = INCBIN_U32("graphics/battle_anims/sprites/hollow_orb.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_250[] = INCBIN_U32("graphics/battle_anims/sprites/250.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_XSign[] = INCBIN_U32("graphics/battle_anims/sprites/x_sign.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_251[] = INCBIN_U32("graphics/battle_anims/sprites/251.4bpp.lz");
-const u32 gBattleAnimSpritePalette_251[] = INCBIN_U32("graphics/battle_anims/sprites/251.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_BluegreenOrb[] = INCBIN_U32("graphics/battle_anims/sprites/bluegreen_orb.4bpp.lz");
+const u32 gBattleAnimSpritePal_BluegreenOrb[] = INCBIN_U32("graphics/battle_anims/sprites/bluegreen_orb.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_252[] = INCBIN_U32("graphics/battle_anims/sprites/252.4bpp.lz");
-const u32 gBattleAnimSpritePalette_252[] = INCBIN_U32("graphics/battle_anims/sprites/252.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_PawPrint[] = INCBIN_U32("graphics/battle_anims/sprites/paw_print.4bpp.lz");
+const u32 gBattleAnimSpritePal_PawPrint[] = INCBIN_U32("graphics/battle_anims/sprites/paw_print.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_253[] = INCBIN_U32("graphics/battle_anims/sprites/253.4bpp.lz");
-const u32 gBattleAnimSpritePalette_253[] = INCBIN_U32("graphics/battle_anims/sprites/253.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_PurpleFlame[] = INCBIN_U32("graphics/battle_anims/sprites/purple_flame.4bpp.lz");
+const u32 gBattleAnimSpritePal_PurpleFlame[] = INCBIN_U32("graphics/battle_anims/sprites/purple_flame.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_254[] = INCBIN_U32("graphics/battle_anims/sprites/254.4bpp.lz");
-const u32 gBattleAnimSpritePalette_254[] = INCBIN_U32("graphics/battle_anims/sprites/254.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_RedBall[] = INCBIN_U32("graphics/battle_anims/sprites/red_ball.4bpp.lz");
+const u32 gBattleAnimSpritePal_RedBall[] = INCBIN_U32("graphics/battle_anims/sprites/red_ball.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_255[] = INCBIN_U32("graphics/battle_anims/sprites/255.4bpp.lz");
-const u32 gBattleAnimSpritePalette_255[] = INCBIN_U32("graphics/battle_anims/sprites/255.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_SmellingsaltEffect[] = INCBIN_U32("graphics/battle_anims/sprites/smellingsalt_effect.4bpp.lz");
+const u32 gBattleAnimSpritePal_SmellingsaltEffect[] = INCBIN_U32("graphics/battle_anims/sprites/smellingsalt_effect.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_258[] = INCBIN_U32("graphics/battle_anims/sprites/258.4bpp.lz");
-const u32 gBattleAnimSpritePalette_258[] = INCBIN_U32("graphics/battle_anims/sprites/258.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_MagnifyingGlass[] = INCBIN_U32("graphics/battle_anims/sprites/magnifying_glass.4bpp.lz");
+const u32 gBattleAnimSpritePal_MagnifyingGlass[] = INCBIN_U32("graphics/battle_anims/sprites/magnifying_glass.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_256[] = INCBIN_U32("graphics/battle_anims/sprites/256.4bpp.lz");
-const u32 gBattleAnimSpritePalette_256[] = INCBIN_U32("graphics/battle_anims/sprites/256.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Meteor[] = INCBIN_U32("graphics/battle_anims/sprites/meteor.4bpp.lz");
+const u32 gBattleAnimSpritePal_Meteor[] = INCBIN_U32("graphics/battle_anims/sprites/meteor.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_257[] = INCBIN_U32("graphics/battle_anims/sprites/257.4bpp.lz");
-const u32 gBattleAnimSpritePalette_257[] = INCBIN_U32("graphics/battle_anims/sprites/257.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_FlatRock[] = INCBIN_U32("graphics/battle_anims/sprites/flat_rock.4bpp.lz");
+const u32 gBattleAnimSpritePal_FlatRock[] = INCBIN_U32("graphics/battle_anims/sprites/flat_rock.gbapal.lz");
const u32 gUnknownPal_C2F9E0[] = INCBIN_U32("graphics/unknown/unknown_C2F9E0.gbapal.lz");
@@ -1005,58 +1005,58 @@ const u32 gUnknown_08D85A1C[] = INCBIN_U32("graphics/battle_frontier/battle_tile
#include "data/graphics/intro_scene.h"
-const u32 gBattleAnimSpriteSheet_261[] = INCBIN_U32("graphics/battle_anims/sprites/261.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_FlyingDirt[] = INCBIN_U32("graphics/battle_anims/sprites/flying_dirt.4bpp.lz");
const u32 gUnknown_08D8D410[] = INCBIN_U32("graphics/battle_anims/backgrounds/sandstorm_brew.bin.lz");
const u32 gUnknown_08D8D58C[] = INCBIN_U32("graphics/battle_anims/backgrounds/sandstorm_brew.4bpp.lz");
-const u32 gBattleAnimSpritePalette_261[] = INCBIN_U32("graphics/battle_anims/sprites/261.gbapal.lz");
+const u32 gBattleAnimSpritePal_FlyingDirt[] = INCBIN_U32("graphics/battle_anims/sprites/flying_dirt.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_260[] = INCBIN_U32("graphics/battle_anims/sprites/260.4bpp.lz");
-const u32 gBattleAnimSpritePalette_260[] = INCBIN_U32("graphics/battle_anims/sprites/260.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_MetalSoundWaves[] = INCBIN_U32("graphics/battle_anims/sprites/metal_sound_waves.4bpp.lz");
+const u32 gBattleAnimSpritePal_MetalSoundWaves[] = INCBIN_U32("graphics/battle_anims/sprites/metal_sound_waves.gbapal.lz");
-const u32 gBattleAnimBackgroundImage_15[] = INCBIN_U32("graphics/battle_anims/backgrounds/15.4bpp.lz");
-const u32 gBattleAnimBackgroundPalette_15[] = INCBIN_U32("graphics/battle_anims/backgrounds/15.gbapal.lz");
-const u32 gBattleAnimBackgroundTilemap_15[] = INCBIN_U32("graphics/battle_anims/backgrounds/15.bin.lz");
+const u32 gBattleAnimBgImage_Ice[] = INCBIN_U32("graphics/battle_anims/backgrounds/ice.4bpp.lz");
+const u32 gBattleAnimBgPalette_Ice[] = INCBIN_U32("graphics/battle_anims/backgrounds/ice.gbapal.lz");
+const u32 gBattleAnimBgTilemap_Ice[] = INCBIN_U32("graphics/battle_anims/backgrounds/ice.bin.lz");
-const u32 gBattleAnimSpriteSheet_262[] = INCBIN_U32("graphics/battle_anims/sprites/262.4bpp.lz");
-const u32 gBattleAnimSpritePalette_262[] = INCBIN_U32("graphics/battle_anims/sprites/262.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_IcicleSpear[] = INCBIN_U32("graphics/battle_anims/sprites/icicle_spear.4bpp.lz");
+const u32 gBattleAnimSpritePal_IcicleSpear[] = INCBIN_U32("graphics/battle_anims/sprites/icicle_spear.gbapal.lz");
const u32 gContestNextTurnGfx[] = INCBIN_U32("graphics/contest/nextturn.4bpp.lz");
const u8 gContestNextTurnNumbersGfx[] = INCBIN_U8("graphics/contest/nextturn_numbers.4bpp");
const u8 gContestNextTurnRandomGfx[] = INCBIN_U8("graphics/contest/nextturn_random.4bpp");
-const u32 gBattleAnimSpriteSheet_264[] = INCBIN_U32("graphics/battle_anims/sprites/264.4bpp.lz");
-const u32 gBattleAnimSpritePalette_264[] = INCBIN_U32("graphics/battle_anims/sprites/264.gbapal.lz");
-const u32 gBattleAnimSpritePalette_265[] = INCBIN_U32("graphics/battle_anims/sprites/265.gbapal.lz");
-const u32 gBattleAnimSpritePalette_067[] = INCBIN_U32("graphics/battle_anims/sprites/067.gbapal.lz");
-const u32 gBattleAnimSpritePalette_068[] = INCBIN_U32("graphics/battle_anims/sprites/068.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_GlowyRedOrb[] = INCBIN_U32("graphics/battle_anims/sprites/glowy_red_orb.4bpp.lz");
+const u32 gBattleAnimSpritePal_GlowyRedOrb[] = INCBIN_U32("graphics/battle_anims/sprites/glowy_red_orb.gbapal.lz");
+const u32 gBattleAnimSpritePal_GlowyGreenOrb[] = INCBIN_U32("graphics/battle_anims/sprites/glowy_green_orb.gbapal.lz");
+const u32 gBattleAnimSpritePal_SleepPowder[] = INCBIN_U32("graphics/battle_anims/sprites/sleep_powder.gbapal.lz");
+const u32 gBattleAnimSpritePal_StunSpore[] = INCBIN_U32("graphics/battle_anims/sprites/stun_spore.gbapal.lz");
const u32 gContestApplauseGfx[] = INCBIN_U32("graphics/contest/applause.4bpp.lz");
const u8 gContestApplauseMeterGfx[] = INCBIN_U8("graphics/contest/applause_meter.4bpp");
const u16 gContestPal[] = INCBIN_U16("graphics/contest/nextturn.gbapal");
-const u32 gBattleAnimSpriteSheet_272[] = INCBIN_U32("graphics/battle_anims/sprites/272.4bpp.lz");
-const u32 gBattleAnimSpritePalette_272[] = INCBIN_U32("graphics/battle_anims/sprites/272.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Splash[] = INCBIN_U32("graphics/battle_anims/sprites/splash.4bpp.lz");
+const u32 gBattleAnimSpritePal_Splash[] = INCBIN_U32("graphics/battle_anims/sprites/splash.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_273[] = INCBIN_U32("graphics/battle_anims/sprites/273.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_SweatBead[] = INCBIN_U32("graphics/battle_anims/sprites/sweat_bead.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_269[] = INCBIN_U32("graphics/battle_anims/sprites/269.4bpp.lz");
-const u32 gBattleAnimSpritePalette_269[] = INCBIN_U32("graphics/battle_anims/sprites/269.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Pokeblock[] = INCBIN_U32("graphics/battle_anims/sprites/pokeblock.4bpp.lz");
+const u32 gBattleAnimSpritePal_Pokeblock[] = INCBIN_U32("graphics/battle_anims/sprites/pokeblock.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_274[] = INCBIN_U32("graphics/battle_anims/sprites/274.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_275[] = INCBIN_U32("graphics/battle_anims/sprites/275.4bpp.lz");
-const u32 gBattleAnimSpriteSheet_276[] = INCBIN_U32("graphics/battle_anims/sprites/276.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Gem1[] = INCBIN_U32("graphics/battle_anims/sprites/gem_1.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Gem2[] = INCBIN_U32("graphics/battle_anims/sprites/gem_2.4bpp.lz");
+const u32 gBattleAnimSpriteGfx_Gem3[] = INCBIN_U32("graphics/battle_anims/sprites/gem_3.4bpp.lz");
-const u32 gBattleAnimSpritePalette_274[] = INCBIN_U32("graphics/battle_anims/sprites/274.gbapal.lz");
+const u32 gBattleAnimSpritePal_Gem1[] = INCBIN_U32("graphics/battle_anims/sprites/gem_1.gbapal.lz");
-const u32 gBattleAnimBackgroundImage_17[] = INCBIN_U32("graphics/battle_anims/backgrounds/17.4bpp.lz");
-const u32 gBattleAnimBackgroundPalette_17[] = INCBIN_U32("graphics/battle_anims/backgrounds/17.gbapal.lz");
-const u32 gBattleAnimBackgroundTilemap_17[] = INCBIN_U32("graphics/battle_anims/backgrounds/17.bin.lz");
+const u32 gBattleAnimBgImage_InAir[] = INCBIN_U32("graphics/battle_anims/backgrounds/in_air.4bpp.lz");
+const u32 gBattleAnimBgPalette_InAir[] = INCBIN_U32("graphics/battle_anims/backgrounds/in_air.gbapal.lz");
+const u32 gBattleAnimBgTilemap_InAir[] = INCBIN_U32("graphics/battle_anims/backgrounds/in_air.bin.lz");
-const u32 gBattleAnimSpriteSheet_280[] = INCBIN_U32("graphics/battle_anims/sprites/280.4bpp.lz");
-const u32 gBattleAnimSpritePalette_280[] = INCBIN_U32("graphics/battle_anims/sprites/280.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Protect[] = INCBIN_U32("graphics/battle_anims/sprites/protect.4bpp.lz");
+const u32 gBattleAnimSpritePal_Protect[] = INCBIN_U32("graphics/battle_anims/sprites/protect.gbapal.lz");
const u32 gBattleAnimBackgroundImageMuddyWater_Pal[] = INCBIN_U32("graphics/battle_anims/backgrounds/water_muddy.gbapal.lz");
@@ -1066,13 +1066,13 @@ const u32 gBattleInterface_BallStatusBarGfx[] = INCBIN_U32("graphics/battle_inte
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");
-const u32 gBattleAnimBackgroundTilemap_02[] = INCBIN_U32("graphics/battle_anims/backgrounds/02.bin.lz");
+const u32 gBattleAnimBgImage_Ghost[] = INCBIN_U32("graphics/battle_anims/backgrounds/ghost.4bpp.lz");
+const u32 gBattleAnimBgPalette_Ghost[] = INCBIN_U32("graphics/battle_anims/backgrounds/ghost.gbapal.lz");
+const u32 gBattleAnimBgTilemap_Ghost[] = INCBIN_U32("graphics/battle_anims/backgrounds/ghost.bin.lz");
-const u32 gBattleAnimSpritePalette_287[] = INCBIN_U32("graphics/battle_anims/sprites/287.gbapal.lz");
+const u32 gBattleAnimSpritePal_WhipHit[] = INCBIN_U32("graphics/battle_anims/sprites/whip_hit.gbapal.lz");
-const u32 gBattleAnimBackgroundPalette_24[] = INCBIN_U32("graphics/battle_anims/backgrounds/24.gbapal.lz");
+const u32 gBattleAnimBgPalette_Solarbeam[] = INCBIN_U32("graphics/battle_anims/backgrounds/solarbeam.gbapal.lz");
const u32 gUnknown_E6BC04[] = INCBIN_U32("graphics/unknown/unknown_E6BC04.bin.lz");
@@ -1081,51 +1081,51 @@ const u32 sBlenderCenterGfx[] = INCBIN_U32("graphics/berry_blender/center.8bpp.l
const u32 gUnknown_08D91DB8[] = INCBIN_U32("graphics/berry_blender/outer.4bpp.lz");
const u32 gUnknown_08D927EC[] = INCBIN_U32("graphics/berry_blender/outer_map.bin.lz");
-const u32 gBattleAnimBackgroundPalette_16[] = INCBIN_U32("graphics/battle_anims/backgrounds/16.gbapal.lz");
-const u32 gBattleAnimBackgroundImage_16[] = INCBIN_U32("graphics/battle_anims/backgrounds/16.4bpp.lz");
-const u32 gBattleAnimBackgroundTilemap_16[] = INCBIN_U32("graphics/battle_anims/backgrounds/16.bin.lz");
+const u32 gBattleAnimBgPalette_Cosmic[] = INCBIN_U32("graphics/battle_anims/backgrounds/cosmic.gbapal.lz");
+const u32 gBattleAnimBgImage_Cosmic[] = INCBIN_U32("graphics/battle_anims/backgrounds/cosmic.4bpp.lz");
+const u32 gBattleAnimBgTilemap_Cosmic[] = INCBIN_U32("graphics/battle_anims/backgrounds/cosmic.bin.lz");
-const u32 gBattleAnimSpritePalette_277[] = INCBIN_U32("graphics/battle_anims/sprites/277.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_277[] = INCBIN_U32("graphics/battle_anims/sprites/277.4bpp.lz");
+const u32 gBattleAnimSpritePal_SlamHit2[] = INCBIN_U32("graphics/battle_anims/sprites/slam_hit_2.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_SlamHit2[] = INCBIN_U32("graphics/battle_anims/sprites/slam_hit_2.4bpp.lz");
const u32 gBattleAnimFogTilemap[] = INCBIN_U32("graphics/battle_anims/backgrounds/fog.bin.lz");
-const u32 gBattleAnimSpritePalette_283[] = INCBIN_U32("graphics/battle_anims/sprites/283.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_283[] = INCBIN_U32("graphics/battle_anims/sprites/283.4bpp.lz");
+const u32 gBattleAnimSpritePal_WeatherBall[] = INCBIN_U32("graphics/battle_anims/sprites/weather_ball.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_WeatherBall[] = INCBIN_U32("graphics/battle_anims/sprites/weather_ball.4bpp.lz");
-const u32 gBattleAnimBackgroundTilemap_ScaryFacePlayer[] = INCBIN_U32("graphics/battle_anims/backgrounds/scary_face_player.bin.lz");
-const u32 gBattleAnimBackgroundTilemap_ScaryFaceOpponent[] = INCBIN_U32("graphics/battle_anims/backgrounds/scary_face_opponent.bin.lz");
-const u32 gBattleAnimBackgroundTilemap_ScaryFaceContest[] = INCBIN_U32("graphics/battle_anims/backgrounds/scary_face_contest.bin.lz");
+const u32 gBattleAnimBgTilemap_ScaryFacePlayer[] = INCBIN_U32("graphics/battle_anims/backgrounds/scary_face_player.bin.lz");
+const u32 gBattleAnimBgTilemap_ScaryFaceOpponent[] = INCBIN_U32("graphics/battle_anims/backgrounds/scary_face_opponent.bin.lz");
+const u32 gBattleAnimBgTilemap_ScaryFaceContest[] = INCBIN_U32("graphics/battle_anims/backgrounds/scary_face_contest.bin.lz");
-const u32 gBattleAnimSpriteSheet_263[] = INCBIN_U32("graphics/battle_anims/sprites/263.4bpp.lz");
-const u32 gBattleAnimSpritePalette_263[] = INCBIN_U32("graphics/battle_anims/sprites/263.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Hail[] = INCBIN_U32("graphics/battle_anims/sprites/hail.4bpp.lz");
+const u32 gBattleAnimSpritePal_Hail[] = INCBIN_U32("graphics/battle_anims/sprites/hail.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_266[] = INCBIN_U32("graphics/battle_anims/sprites/266.4bpp.lz");
-const u32 gBattleAnimSpritePalette_266[] = INCBIN_U32("graphics/battle_anims/sprites/266.gbapal.lz");
-const u32 gBattleAnimSpritePalette_267[] = INCBIN_U32("graphics/battle_anims/sprites/267.gbapal.lz");
-const u32 gBattleAnimSpritePalette_268[] = INCBIN_U32("graphics/battle_anims/sprites/268.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_GreenSpike[] = INCBIN_U32("graphics/battle_anims/sprites/green_spike.4bpp.lz");
+const u32 gBattleAnimSpritePal_GreenSpike[] = INCBIN_U32("graphics/battle_anims/sprites/green_spike.gbapal.lz");
+const u32 gBattleAnimSpritePal_WhiteCircleOfLight[] = INCBIN_U32("graphics/battle_anims/sprites/white_circle_of_light.gbapal.lz");
+const u32 gBattleAnimSpritePal_GlowyBlueOrb[] = INCBIN_U32("graphics/battle_anims/sprites/glowy_blue_orb.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_278[] = INCBIN_U32("graphics/battle_anims/sprites/278.4bpp.lz");
-const u32 gBattleAnimSpritePalette_278[] = INCBIN_U32("graphics/battle_anims/sprites/278.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Recycle[] = INCBIN_U32("graphics/battle_anims/sprites/recycle.4bpp.lz");
+const u32 gBattleAnimSpritePal_Recycle[] = INCBIN_U32("graphics/battle_anims/sprites/recycle.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_279[] = INCBIN_U32("graphics/battle_anims/sprites/279.4bpp.lz");
-const u32 gBattleAnimSpritePalette_279[] = INCBIN_U32("graphics/battle_anims/sprites/279.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_RedParticles[] = INCBIN_U32("graphics/battle_anims/sprites/red_particles.4bpp.lz");
+const u32 gBattleAnimSpritePal_RedParticles[] = INCBIN_U32("graphics/battle_anims/sprites/red_particles.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_281[] = INCBIN_U32("graphics/battle_anims/sprites/281.4bpp.lz");
-const u32 gBattleAnimSpritePalette_281[] = INCBIN_U32("graphics/battle_anims/sprites/281.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_DirtMound[] = INCBIN_U32("graphics/battle_anims/sprites/dirt_mound.4bpp.lz");
+const u32 gBattleAnimSpritePal_DirtMound[] = INCBIN_U32("graphics/battle_anims/sprites/dirt_mound.gbapal.lz");
-const u32 gBattleAnimBackgroundImage_21[] = INCBIN_U32("graphics/battle_anims/backgrounds/21.4bpp.lz");
-const u32 gBattleAnimBackgroundPalette_21[] = INCBIN_U32("graphics/battle_anims/backgrounds/21.gbapal.lz");
-const u32 gBattleAnimBackgroundTilemap_21[] = INCBIN_U32("graphics/battle_anims/backgrounds/21.bin.lz");
+const u32 gBattleAnimBgImage_Fissure[] = INCBIN_U32("graphics/battle_anims/backgrounds/fissure.4bpp.lz");
+const u32 gBattleAnimBgPalette_Fissure[] = INCBIN_U32("graphics/battle_anims/backgrounds/fissure.gbapal.lz");
+const u32 gBattleAnimBgTilemap_Fissure[] = INCBIN_U32("graphics/battle_anims/backgrounds/fissure.bin.lz");
-const u32 gBattleAnimSpriteSheet_284[] = INCBIN_U32("graphics/battle_anims/sprites/284.4bpp.lz");
-const u32 gBattleAnimSpritePalette_284[] = INCBIN_U32("graphics/battle_anims/sprites/284.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Bird[] = INCBIN_U32("graphics/battle_anims/sprites/bird.4bpp.lz");
+const u32 gBattleAnimSpritePal_Bird[] = INCBIN_U32("graphics/battle_anims/sprites/bird.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_285[] = INCBIN_U32("graphics/battle_anims/sprites/285.4bpp.lz");
-const u32 gBattleAnimSpritePalette_285[] = INCBIN_U32("graphics/battle_anims/sprites/285.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_CrossImpact[] = INCBIN_U32("graphics/battle_anims/sprites/cross_impact.4bpp.lz");
+const u32 gBattleAnimSpritePal_CrossImpact[] = INCBIN_U32("graphics/battle_anims/sprites/cross_impact.gbapal.lz");
-const u32 gBattleAnimBackgroundImage_Surf[] = INCBIN_U32("graphics/battle_anims/backgrounds/water.4bpp.lz");
-const u32 gBattleAnimBackgroundPalette_Surf[] = INCBIN_U32("graphics/battle_anims/backgrounds/water.gbapal.lz");
+const u32 gBattleAnimBgImage_Surf[] = INCBIN_U32("graphics/battle_anims/backgrounds/water.4bpp.lz");
+const u32 gBattleAnimBgPalette_Surf[] = INCBIN_U32("graphics/battle_anims/backgrounds/water.gbapal.lz");
const u32 gUnknown_08D95E00[] = INCBIN_U32("graphics/unknown/unknown_D95E00.bin.lz");
@@ -1133,10 +1133,10 @@ const u32 gUnknown_08D960D0[] = INCBIN_U32("graphics/unknown/unknown_D960D0.bin.
const u32 gUnknown_08D963A4[] = INCBIN_U32("graphics/unknown/unknown_D963A4.bin.lz");
-const u32 gBattleAnimSpritePalette_286[] = INCBIN_U32("graphics/battle_anims/sprites/286.gbapal.lz");
+const u32 gBattleAnimSpritePal_Slash2[] = INCBIN_U32("graphics/battle_anims/sprites/slash_2.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_188[] = INCBIN_U32("graphics/battle_anims/sprites/188.4bpp.lz");
-const u32 gBattleAnimSpritePalette_188[] = INCBIN_U32("graphics/battle_anims/sprites/188.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_WhiteShadow[] = INCBIN_U32("graphics/battle_anims/sprites/white_shadow.4bpp.lz");
+const u32 gBattleAnimSpritePal_WhiteShadow[] = INCBIN_U32("graphics/battle_anims/sprites/white_shadow.gbapal.lz");
const u32 gPartyMenuMisc_Gfx[] = INCBIN_U32("graphics/interface/party_menu_misc.4bpp.lz");
const u32 gPartyMenuMisc_Pal[] = INCBIN_U32("graphics/interface/party_menu_misc.gbapal.lz");
@@ -1223,14 +1223,14 @@ const u32 gUnknown_08D9BA44[] = INCBIN_U32("graphics/interface/pokeblock_feeding
#include "data/graphics/items.h"
#include "data/graphics/decorations.h"
-const u32 gBattleAnimSpritePalette_282[] = INCBIN_U32("graphics/battle_anims/sprites/282.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_282[] = INCBIN_U32("graphics/battle_anims/sprites/282.4bpp.lz");
+const u32 gBattleAnimSpritePal_Shock3[] = INCBIN_U32("graphics/battle_anims/sprites/shock_3.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Shock3[] = INCBIN_U32("graphics/battle_anims/sprites/shock_3.4bpp.lz");
-const u32 gBattleAnimSpritePalette_270[] = INCBIN_U32("graphics/battle_anims/sprites/270.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_270[] = INCBIN_U32("graphics/battle_anims/sprites/270.4bpp.lz");
+const u32 gBattleAnimSpritePal_WhiteFeather[] = INCBIN_U32("graphics/battle_anims/sprites/white_feather.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_WhiteFeather[] = INCBIN_U32("graphics/battle_anims/sprites/white_feather.4bpp.lz");
-const u32 gBattleAnimSpritePalette_271[] = INCBIN_U32("graphics/battle_anims/sprites/271.gbapal.lz");
-const u32 gBattleAnimSpriteSheet_271[] = INCBIN_U32("graphics/battle_anims/sprites/271.4bpp.lz");
+const u32 gBattleAnimSpritePal_Sparkle6[] = INCBIN_U32("graphics/battle_anims/sprites/sparkle_6.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_Sparkle6[] = INCBIN_U32("graphics/battle_anims/sprites/sparkle_6.4bpp.lz");
const u16 gUnknown_08DBA518[] = INCBIN_U16("graphics/misc/cable_car_bg.gbapal");
const u16 gCableCar_Pal[] = INCBIN_U16("graphics/misc/cable_car.gbapal");
@@ -1363,7 +1363,7 @@ const u16 gPokenavMessageBox_Pal[] = INCBIN_U16("graphics/pokenav/message.gbapal
const u32 gPokenavMessageBox_Gfx[] = INCBIN_U32("graphics/pokenav/message.4bpp.lz");
const u32 gPokenavMessageBox_Tilemap[] = INCBIN_U32("graphics/pokenav/message.bin.lz");
-const u16 gHoennMapZoomIcons_Pal[] = INCBIN_U16("graphics/pokenav/zoom.gbapal");
+const u16 gHoennMapZoomIcons_Pal[] = INCBIN_U16("graphics/pokenav/zoom_tiles.gbapal");
const u32 gHoennMapZoomIcons_Gfx[] = INCBIN_U32("graphics/pokenav/zoom.4bpp.lz");
const u16 gPokenavConditionCancel_Pal[] = INCBIN_U16("graphics/pokenav/cancel.gbapal");
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index 8eba90d96..fdf2020ff 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -32,7 +32,7 @@
#include "menu.h"
#include "fldeff_misc.h"
#include "trainer_pokemon_sprites.h"
-#include "data2.h"
+#include "data.h"
#include "rom_81520A8.h"
#include "constants/rgb.h"
diff --git a/src/hof_pc.c b/src/hof_pc.c
index d76f04372..01015ee81 100644
--- a/src/hof_pc.c
+++ b/src/hof_pc.c
@@ -6,6 +6,7 @@
#include "script.h"
#include "script_menu.h"
#include "task.h"
+#include "constants/rgb.h"
static void ReshowPCMenuAfterHallOfFamePC(void);
static void Task_WaitForPaletteFade(u8);
@@ -28,7 +29,7 @@ static void ReshowPCMenuAfterHallOfFamePC(void)
Overworld_PlaySpecialMapMusic();
ScrSpecial_CreatePCMenu();
ScriptMenu_DisplayPCStartupPrompt();
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
CreateTask(Task_WaitForPaletteFade, 10);
}
diff --git a/src/ice.c b/src/ice.c
index fa1913b96..8f0c97d82 100644
--- a/src/ice.c
+++ b/src/ice.c
@@ -47,7 +47,7 @@ void AnimIceBallParticle(struct Sprite *);
void AnimTask_Haze2(u8);
void AnimTask_OverlayFogTiles(u8);
void AnimTask_Hail2(u8);
-bool8 GenerateHailParticle(u8, u8, u8, u8);
+bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, u8 c);
const union AnimCmd gUnknown_08595A48[] =
{
@@ -522,37 +522,33 @@ const struct SpriteTemplate gUnknown_08595DFC =
.callback = InitIceBallParticle,
};
-
// probably unused
-#ifdef NONMATCHING
static void sub_810B6C4(struct Sprite *sprite)
{
s16 targetX, targetY, attackerX, attackerY;
- s16 i;
sprite->oam.tileNum += 7;
- targetX = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- targetY = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
- attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- attackerY = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ targetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ targetY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+ attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ attackerY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[1] = gBattleAnimArgs[0] + attackerX;
sprite->data[2] = gBattleAnimArgs[2] + targetX;
sprite->data[3] = gBattleAnimArgs[1] + attackerY;
sprite->data[4] = gBattleAnimArgs[3] + targetY;
sub_80A64EC(sprite);
- while ((targetX >= -32 && targetX <= 272) && (targetY >= -32 && targetY <= 192))
- {
- targetX += sprite->data[1];
- targetY += sprite->data[2];
- }
+
+ for (;(targetX >= -32 && targetX <= 272) && (targetY >= -32 && targetY <= 192);
+ targetX += sprite->data[1], targetY += sprite->data[2])
+ ;
+
sprite->data[1] = -sprite->data[1];
sprite->data[2] = -sprite->data[2];
- while ((attackerX >= -32 && attackerX <= 272) && (attackerY >= -32 && attackerY <= 192))
- {
- attackerX += sprite->data[1];
- attackerY += sprite->data[2];
- }
+ for (;(attackerX >= -32 && attackerX <= 272) && (attackerY >= -32 && attackerY <= 192);
+ attackerX += sprite->data[1], attackerY += sprite->data[2])
+ ;
+
sprite->pos1.x = attackerX;
sprite->pos1.y = attackerY;
sprite->data[0] = gBattleAnimArgs[4];
@@ -565,195 +561,6 @@ static void sub_810B6C4(struct Sprite *sprite)
sprite->data[4] = gBattleAnimArgs[6];
sprite->callback = sub_810B848;
}
-#else
-NAKED
-static void sub_810B6C4(struct Sprite *sprite)
-{
- asm_unified("push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x4\n\
- adds r5, r0, 0\n\
- ldrh r2, [r5, 0x4]\n\
- lsls r1, r2, 22\n\
- lsrs r1, 22\n\
- adds r1, 0x7\n\
- ldr r3, =0x000003ff\n\
- adds r0, r3, 0\n\
- ands r1, r0\n\
- ldr r0, =0xfffffc00\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strh r0, [r5, 0x4]\n\
- ldr r4, =gBattleAnimTarget\n\
- ldrb r0, [r4]\n\
- movs r1, 0x2\n\
- bl GetBattlerSpriteCoord\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
- ldrb r0, [r4]\n\
- movs r1, 0x3\n\
- bl GetBattlerSpriteCoord\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r8, r0\n\
- ldr r4, =gBattleAnimAttacker\n\
- ldrb r0, [r4]\n\
- movs r1, 0x2\n\
- bl GetBattlerSpriteCoord\n\
- lsls r0, 24\n\
- lsrs r3, r0, 24\n\
- ldrb r0, [r4]\n\
- movs r1, 0x3\n\
- str r3, [sp]\n\
- bl GetBattlerSpriteCoord\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- ldr r1, =gBattleAnimArgs\n\
- ldrh r0, [r1, 0x8]\n\
- strh r0, [r5, 0x2E]\n\
- ldrh r0, [r1]\n\
- ldr r3, [sp]\n\
- adds r0, r3\n\
- strh r0, [r5, 0x30]\n\
- ldrh r0, [r1, 0x4]\n\
- mov r4, r9\n\
- adds r0, r4, r0\n\
- strh r0, [r5, 0x32]\n\
- ldrh r0, [r1, 0x2]\n\
- adds r0, r6\n\
- strh r0, [r5, 0x34]\n\
- ldrh r0, [r1, 0x6]\n\
- mov r7, r8\n\
- adds r0, r7, r0\n\
- strh r0, [r5, 0x36]\n\
- adds r0, r5, 0\n\
- bl sub_80A64EC\n\
- adds r4, 0x20\n\
- movs r0, 0x98\n\
- lsls r0, 1\n\
- mov r12, r0\n\
- ldr r3, [sp]\n\
- cmp r4, r12\n\
- bhi _0810B79E\n\
- adds r0, r7, 0\n\
- adds r0, 0x20\n\
- ldrh r1, [r5, 0x30]\n\
- ldrh r2, [r5, 0x32]\n\
- cmp r0, 0xE0\n\
- bhi _0810B79E\n\
- adds r4, r1, 0\n\
- mov r10, r12\n\
-_0810B76A:\n\
- mov r7, r9\n\
- lsls r1, r7, 16\n\
- asrs r1, 16\n\
- adds r1, r4\n\
- lsls r1, 16\n\
- mov r7, r8\n\
- lsls r0, r7, 16\n\
- asrs r0, 16\n\
- adds r0, r2\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
- lsrs r0, r1, 16\n\
- mov r9, r0\n\
- movs r7, 0x80\n\
- lsls r7, 14\n\
- adds r1, r7\n\
- lsrs r1, 16\n\
- cmp r1, r10\n\
- bhi _0810B79E\n\
- mov r1, r8\n\
- lsls r0, r1, 16\n\
- adds r0, r7\n\
- lsrs r0, 16\n\
- cmp r0, 0xE0\n\
- bls _0810B76A\n\
-_0810B79E:\n\
- ldrh r0, [r5, 0x30]\n\
- negs r7, r0\n\
- strh r7, [r5, 0x30]\n\
- ldrh r0, [r5, 0x32]\n\
- negs r4, r0\n\
- strh r4, [r5, 0x32]\n\
- lsls r0, r3, 16\n\
- movs r1, 0x80\n\
- lsls r1, 14\n\
- adds r0, r1\n\
- lsrs r0, 16\n\
- movs r2, 0x98\n\
- lsls r2, 1\n\
- mov r12, r2\n\
- ldr r1, =gBattleAnimArgs\n\
- mov r10, r1\n\
- cmp r0, r12\n\
- bhi _0810B80A\n\
- lsls r1, r6, 16\n\
- movs r2, 0x80\n\
- lsls r2, 14\n\
- adds r0, r1, r2\n\
- b _0810B802\n\
- .pool\n\
-_0810B7E0:\n\
- lsls r1, r3, 16\n\
- asrs r1, 16\n\
- adds r1, r7\n\
- lsls r1, 16\n\
- asrs r0, r2, 16\n\
- adds r0, r4\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- lsrs r3, r1, 16\n\
- movs r0, 0x80\n\
- lsls r0, 14\n\
- adds r1, r0\n\
- lsrs r1, 16\n\
- cmp r1, r12\n\
- bhi _0810B80A\n\
- lsls r1, r6, 16\n\
- adds r0, r1, r0\n\
-_0810B802:\n\
- lsrs r0, 16\n\
- adds r2, r1, 0\n\
- cmp r0, 0xE0\n\
- bls _0810B7E0\n\
-_0810B80A:\n\
- strh r3, [r5, 0x20]\n\
- strh r6, [r5, 0x22]\n\
- mov r1, r10\n\
- ldrh r0, [r1, 0x8]\n\
- strh r0, [r5, 0x2E]\n\
- strh r3, [r5, 0x30]\n\
- mov r2, r9\n\
- strh r2, [r5, 0x32]\n\
- strh r6, [r5, 0x34]\n\
- mov r3, r8\n\
- strh r3, [r5, 0x36]\n\
- adds r0, r5, 0\n\
- bl sub_80A64EC\n\
- mov r7, r10\n\
- ldrh r0, [r7, 0xA]\n\
- strh r0, [r5, 0x34]\n\
- ldrh r0, [r7, 0xC]\n\
- strh r0, [r5, 0x36]\n\
- ldr r0, =sub_810B848\n\
- str r0, [r5, 0x1C]\n\
- add sp, 0x4\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n");
-}
-#endif
void sub_810B848(struct Sprite *sprite)
{
@@ -797,14 +604,14 @@ void AnimIcePunchSwirlingParticle(struct Sprite *sprite)
void AnimIceBeamParticle(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
- sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
sprite->data[2] -= gBattleAnimArgs[2];
else
sprite->data[2] += gBattleAnimArgs[2];
- sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
sprite->data[0] = gBattleAnimArgs[4];
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
sprite->callback = StartAnimLinearTranslation;
@@ -863,8 +670,8 @@ void AnimSwirlingSnowball_Step1(struct Sprite *sprite)
if (!gBattleAnimArgs[5])
{
- sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
}
else
{
@@ -983,8 +790,8 @@ void AnimMoveParticleBeyondTarget(struct Sprite *sprite)
if (!gBattleAnimArgs[7])
{
- sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
}
else
{
@@ -1274,8 +1081,8 @@ void AnimTask_Haze2(u8 taskId)
// arg 5: ??? unknown (seems to vibrate target mon somehow)
void AnimThrowMistBall(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
sprite->callback = TranslateAnimSpriteToTargetMonLocation;
}
@@ -1380,7 +1187,7 @@ void InitPoisonGasCloudAnim(struct Sprite *sprite)
{
sprite->data[0] = gBattleAnimArgs[0];
- if (GetBattlerSpriteCoord(gBattleAnimAttacker, 2) < GetBattlerSpriteCoord(gBattleAnimTarget, 2))
+ if (GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) < GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2))
sprite->data[7] = 0x8000;
if (!(gBattlerPositions[gBattleAnimTarget] & 1))
@@ -1394,22 +1201,22 @@ void InitPoisonGasCloudAnim(struct Sprite *sprite)
sprite->data[6] = 1;
}
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
if (gBattleAnimArgs[7])
{
sprite->data[1] = sprite->pos1.x + gBattleAnimArgs[1];
- sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[3];
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[3];
sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[2];
- sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[4];
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[4];
sprite->data[7] |= GetBattlerSpriteBGPriority(gBattleAnimTarget) << 8;
}
else
{
sprite->data[1] = sprite->pos1.x + gBattleAnimArgs[1];
- sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[3];
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[3];
sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[2];
- sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[4];
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[4];
sprite->data[7] |= GetBattlerSpriteBGPriority(gBattleAnimTarget) << 8;
}
@@ -1441,7 +1248,7 @@ void MovePoisonGasCloud(struct Sprite *sprite)
if (sprite->data[0] <= 0)
{
sprite->data[0] = 80;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
sprite->data[1] = sprite->pos1.x;
sprite->data[2] = sprite->pos1.x;
sprite->pos1.y += sprite->pos2.y;
@@ -1575,238 +1382,63 @@ void AnimTask_Hail2(u8 taskId)
}
}
-#ifdef NONMATCHING
-bool8 GenerateHailParticle(u8 a, u8 b, u8 taskId, u8 c)
+bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, u8 c)
{
- bool8 possibleBool = FALSE;
- // s8 unk = gUnknown_08595CB4[a].unk3;
- const struct HailStruct *hailData = &gUnknown_08595CB4[a];
- s8 unk = hailData->unk3;
- u8 battler;
+ u8 id;
s16 battlerX, battlerY;
- u8 spriteId;
- // struct Sprite *sprite;
s16 spriteX;
+ bool8 possibleBool = FALSE;
+ s8 unk = gUnknown_08595CB4[hailStructId].unk3;
if (unk != 2)
{
- battler = GetBattlerAtPosition(hailData->unk2);
- if (IsBattlerSpriteVisible(battler))
+ id = GetBattlerAtPosition(gUnknown_08595CB4[hailStructId].unk2);
+ if (IsBattlerSpriteVisible(id))
{
possibleBool = TRUE;
- battlerX = GetBattlerSpriteCoord(battler, 2);
- battlerY = GetBattlerSpriteCoord(battler, 3);
+ battlerX = GetBattlerSpriteCoord(id, BATTLER_COORD_X_2);
+ battlerY = GetBattlerSpriteCoord(id, BATTLER_COORD_Y_PIC_OFFSET);
switch (unk)
{
- case 0:
- battlerX -= GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_WIDTH) / 6;
- battlerY -= GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 6;
- break;
- case 1:
- battlerX += GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_WIDTH) / 6;
- battlerY += GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 6;
- break;
+ case 0:
+ battlerX -= GetBattlerSpriteCoordAttr(id, BATTLER_COORD_ATTR_WIDTH) / 6;
+ battlerY -= GetBattlerSpriteCoordAttr(id, BATTLER_COORD_ATTR_HEIGHT) / 6;
+ break;
+ case 1:
+ battlerX += GetBattlerSpriteCoordAttr(id, BATTLER_COORD_ATTR_WIDTH) / 6;
+ battlerY += GetBattlerSpriteCoordAttr(id, BATTLER_COORD_ATTR_HEIGHT) / 6;
+ break;
}
}
+ else
+ {
+ battlerX = (gUnknown_08595CB4[hailStructId].unk0);
+ battlerY = (gUnknown_08595CB4[hailStructId].unk1);
+ }
}
else
{
- battlerX = (hailData->unk0);
- battlerY = (hailData->unk1);
+ battlerX = (gUnknown_08595CB4[hailStructId].unk0);
+ battlerY = (gUnknown_08595CB4[hailStructId].unk1);
}
spriteX = battlerX - ((battlerY + 8) / 2);
- spriteId = CreateSprite(&gUnknown_08595D2C, spriteX, -8, 18);
- if (spriteId == MAX_SPRITES)
+ id = CreateSprite(&gUnknown_08595D2C, spriteX, -8, 18);
+ if (id == MAX_SPRITES)
+ {
return FALSE;
- // sprite = &gSprites[spriteId];
- StartSpriteAffineAnim(&gSprites[spriteId], b);
- gSprites[spriteId].data[0] = possibleBool;
- gSprites[spriteId].data[3] = battlerX;
- gSprites[spriteId].data[4] = battlerY;
- gSprites[spriteId].data[5] = b;
- gSprites[spriteId].data[6] = taskId;
- gSprites[spriteId].data[7] = c;
- return TRUE;
-}
-#else
-NAKED
-bool8 GenerateHailParticle(u8 a, u8 b, u8 taskId, u8 c)
-{
- asm_unified("push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x8\n\
- lsls r0, 24\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- mov r9, r1\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- str r2, [sp]\n\
- lsls r3, 24\n\
- lsrs r3, 24\n\
- mov r10, r3\n\
- movs r1, 0\n\
- str r1, [sp, 0x4]\n\
- ldr r1, =gUnknown_08595CB4\n\
- lsrs r0, 22\n\
- adds r4, r0, r1\n\
- ldrb r0, [r4, 0x3]\n\
- lsls r0, 24\n\
- asrs r0, 28\n\
- mov r8, r0\n\
- cmp r0, 0x2\n\
- beq _0810CAD0\n\
- ldrh r0, [r4, 0x2]\n\
- lsls r0, 20\n\
- lsrs r0, 24\n\
- bl GetBattlerAtPosition\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- adds r0, r5, 0\n\
- bl IsBattlerSpriteVisible\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0810CAD0\n\
- movs r0, 0x1\n\
- str r0, [sp, 0x4]\n\
- adds r0, r5, 0\n\
- movs r1, 0x2\n\
- bl GetBattlerSpriteCoord\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- adds r0, r5, 0\n\
- movs r1, 0x3\n\
- bl GetBattlerSpriteCoord\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- mov r1, r8\n\
- cmp r1, 0\n\
- beq _0810CA60\n\
- cmp r1, 0x1\n\
- beq _0810CA96\n\
- b _0810CAE2\n\
- .pool\n\
-_0810CA60:\n\
- adds r0, r5, 0\n\
- movs r1, 0x1\n\
- bl GetBattlerSpriteCoordAttr\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- movs r1, 0x6\n\
- bl __divsi3\n\
- lsls r1, r7, 16\n\
- asrs r1, 16\n\
- subs r1, r0\n\
- lsls r1, 16\n\
- lsrs r7, r1, 16\n\
- adds r0, r5, 0\n\
- movs r1, 0\n\
- bl GetBattlerSpriteCoordAttr\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- movs r1, 0x6\n\
- bl __divsi3\n\
- lsls r1, r6, 16\n\
- asrs r1, 16\n\
- subs r1, r0\n\
- b _0810CACA\n\
-_0810CA96:\n\
- adds r0, r5, 0\n\
- movs r1, 0x1\n\
- bl GetBattlerSpriteCoordAttr\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- movs r1, 0x6\n\
- bl __divsi3\n\
- lsls r1, r7, 16\n\
- asrs r1, 16\n\
- adds r1, r0\n\
- lsls r1, 16\n\
- lsrs r7, r1, 16\n\
- adds r0, r5, 0\n\
- movs r1, 0\n\
- bl GetBattlerSpriteCoordAttr\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- movs r1, 0x6\n\
- bl __divsi3\n\
- lsls r1, r6, 16\n\
- asrs r1, 16\n\
- adds r1, r0\n\
-_0810CACA:\n\
- lsls r1, 16\n\
- lsrs r6, r1, 16\n\
- b _0810CAE2\n\
-_0810CAD0:\n\
- ldrh r0, [r4]\n\
- lsls r0, 22\n\
- asrs r0, 6\n\
- lsrs r7, r0, 16\n\
- ldr r0, [r4]\n\
- lsls r0, 12\n\
- asrs r0, 22\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
-_0810CAE2:\n\
- lsls r0, r6, 16\n\
- asrs r0, 16\n\
- adds r0, 0x8\n\
- lsrs r1, r0, 31\n\
- adds r0, r1\n\
- asrs r0, 1\n\
- lsls r1, r7, 16\n\
- asrs r1, 16\n\
- subs r1, r0\n\
- ldr r0, =gUnknown_08595D2C\n\
- lsls r1, 16\n\
- asrs r1, 16\n\
- movs r2, 0x8\n\
- negs r2, r2\n\
- movs r3, 0x12\n\
- bl CreateSprite\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- cmp r5, 0x40\n\
- beq _0810CB44\n\
- lsls r4, r5, 4\n\
- adds r4, r5\n\
- lsls r4, 2\n\
- ldr r0, =gSprites\n\
- adds r4, r0\n\
- adds r0, r4, 0\n\
- mov r1, r9\n\
- bl StartSpriteAffineAnim\n\
- mov r0, sp\n\
- ldrh r0, [r0, 0x4]\n\
- strh r0, [r4, 0x2E]\n\
- strh r7, [r4, 0x34]\n\
- strh r6, [r4, 0x36]\n\
- mov r1, r9\n\
- strh r1, [r4, 0x38]\n\
- mov r0, sp\n\
- ldrh r0, [r0]\n\
- strh r0, [r4, 0x3A]\n\
- mov r1, r10\n\
- strh r1, [r4, 0x3C]\n\
- movs r0, 0x1\n\
- b _0810CB46\n\
- .pool\n\
-_0810CB44:\n\
- movs r0, 0\n\
-_0810CB46:\n\
- add sp, 0x8\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n");
+ }
+ else
+ {
+ StartSpriteAffineAnim(&gSprites[id], affineAnimNum);
+ gSprites[id].data[0] = possibleBool;
+ gSprites[id].data[3] = battlerX;
+ gSprites[id].data[4] = battlerY;
+ gSprites[id].data[5] = affineAnimNum;
+ gSprites[id].data[6] = taskId;
+ gSprites[id].data[7] = c;
+ return TRUE;
+ }
}
-#endif
void AnimHailBegin(struct Sprite *sprite)
{
@@ -1874,8 +1506,8 @@ void InitIceBallAnim(struct Sprite *sprite)
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
- sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
- sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[5];
InitAnimArcTranslation(sprite);
diff --git a/src/international_string_util.c b/src/international_string_util.c
index dfeda49e3..9dc795dd0 100644
--- a/src/international_string_util.c
+++ b/src/international_string_util.c
@@ -93,7 +93,7 @@ void CopyMonCategoryText(int dexNum, u8 *dest)
StringCopy(str + 1, gText_Pokemon);
}
-u8 *sub_81DB494(u8 *str, int fontId, u8 *str2, int totalStringWidth)
+u8 *sub_81DB494(u8 *str, int fontId, const u8 *str2, int totalStringWidth)
{
u8 *buffer;
int width;
diff --git a/src/item.c b/src/item.c
index 0e13ddf4c..fe8e8eadd 100644
--- a/src/item.c
+++ b/src/item.c
@@ -537,7 +537,7 @@ bool8 RemoveBagItem(u16 itemId, u16 count)
if (totalQuantity < count)
return FALSE; // We don't have enough of the item
- if (CurrentMapIsSecretBase() == TRUE)
+ if (CurMapIsSecretBase() == TRUE)
{
VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x200);
VarSet(VAR_SECRET_BASE_LAST_ITEM_USED, itemId);
diff --git a/src/item_menu.c b/src/item_menu.c
index 8edf6f279..bfeeaacd0 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -8,7 +8,7 @@
#include "bg.h"
#include "constants/items.h"
#include "constants/songs.h"
-#include "data2.h"
+#include "data.h"
#include "decompress.h"
#include "event_data.h"
#include "event_object_movement.h"
@@ -49,6 +49,7 @@
#include "window.h"
#include "apprentice.h"
#include "battle_pike.h"
+#include "constants/rgb.h"
void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *postExitMenuMainCallback2)());
void CB2_Bag(void);
@@ -659,7 +660,7 @@ bool8 setup_bag_menu(void)
gMain.state++;
break;
case 20:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
gPaletteFade.bufferTransferDisabled = FALSE;
gMain.state++;
break;
@@ -942,7 +943,7 @@ void free_bag_item_list_buffers(void)
void unknown_ItemMenu_Confirm(u8 taskId)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
gTasks[taskId].func = task_close_bag_menu_2;
}
diff --git a/src/item_use.c b/src/item_use.c
index 159ece398..97aceb7ad 100755
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -7,7 +7,7 @@
#include "berry_powder.h"
#include "bike.h"
#include "coins.h"
-#include "data2.h"
+#include "data.h"
#include "event_data.h"
#include "event_object_movement.h"
#include "fieldmap.h"
@@ -37,6 +37,7 @@
#include "constants/bg_event_constants.h"
#include "constants/event_objects.h"
#include "constants/flags.h"
+#include "constants/item_effects.h"
#include "constants/items.h"
#include "constants/songs.h"
#include "constants/vars.h"
@@ -389,7 +390,7 @@ bool8 sub_80FD6D4(const struct MapEvents *events, s16 x, s16 y)
bool8 sub_80FD730(struct MapConnection *connection, int x, int y)
{
-
+
u16 localX, localY;
u32 localOffset;
s32 localLength;
@@ -1026,44 +1027,45 @@ void ItemUseInBattle_Escape(u8 taskId)
void ItemUseOutOfBattle_EnigmaBerry(u8 taskId)
{
- switch (GetItemEffectType(gSpecialVar_ItemId) - 1)
+ switch (GetItemEffectType(gSpecialVar_ItemId))
{
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- case 10:
- case 11:
- case 12:
- case 13:
- case 14:
- case 15:
- case 16:
+ case ITEM_EFFECT_HEAL_HP:
+ case ITEM_EFFECT_CURE_POISON:
+ case ITEM_EFFECT_CURE_SLEEP:
+ case ITEM_EFFECT_CURE_BURN:
+ case ITEM_EFFECT_CURE_FREEZE:
+ case ITEM_EFFECT_CURE_PARALYSIS:
+ case ITEM_EFFECT_CURE_ALL_STATUS:
+ case ITEM_EFFECT_ATK_EV:
+ case ITEM_EFFECT_HP_EV:
+ case ITEM_EFFECT_SPATK_EV:
+ case ITEM_EFFECT_SPDEF_EV:
+ case ITEM_EFFECT_SPEED_EV:
+ case ITEM_EFFECT_DEF_EV:
gTasks[taskId].data[4] = 1;
ItemUseOutOfBattle_Medicine(taskId);
break;
- case 9:
+ case ITEM_EFFECT_SACRED_ASH:
gTasks[taskId].data[4] = 1;
ItemUseOutOfBattle_SacredAsh(taskId);
break;
- case 0:
+ case ITEM_EFFECT_RAISE_LEVEL:
gTasks[taskId].data[4] = 1;
ItemUseOutOfBattle_RareCandy(taskId);
break;
- case 18:
- case 19:
+ case ITEM_EFFECT_PP_UP:
+ case ITEM_EFFECT_PP_MAX:
gTasks[taskId].data[4] = 1;
ItemUseOutOfBattle_PPUp(taskId);
break;
- case 20:
+ case ITEM_EFFECT_HEAL_PP:
gTasks[taskId].data[4] = 1;
ItemUseOutOfBattle_PPRecovery(taskId);
break;
default:
gTasks[taskId].data[4] = 4;
ItemUseOutOfBattle_CannotUse(taskId);
+ break;
}
}
@@ -1071,25 +1073,26 @@ void ItemUseInBattle_EnigmaBerry(u8 taskId)
{
switch (GetItemEffectType(gSpecialVar_ItemId))
{
- case 0:
+ case ITEM_EFFECT_X_ITEM:
ItemUseInBattle_StatIncrease(taskId);
break;
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- case 8:
- case 9:
- case 11:
+ case ITEM_EFFECT_HEAL_HP:
+ case ITEM_EFFECT_CURE_POISON:
+ case ITEM_EFFECT_CURE_SLEEP:
+ case ITEM_EFFECT_CURE_BURN:
+ case ITEM_EFFECT_CURE_FREEZE:
+ case ITEM_EFFECT_CURE_PARALYSIS:
+ case ITEM_EFFECT_CURE_ALL_STATUS:
+ case ITEM_EFFECT_CURE_CONFUSION:
+ case ITEM_EFFECT_CURE_INFATUATION:
ItemUseInBattle_Medicine(taskId);
break;
- case 21:
+ case ITEM_EFFECT_HEAL_PP:
ItemUseInBattle_PPRecovery(taskId);
break;
default:
ItemUseOutOfBattle_CannotUse(taskId);
+ break;
}
}
diff --git a/src/link.c b/src/link.c
index 525d50d7c..bcdcb52a4 100644
--- a/src/link.c
+++ b/src/link.c
@@ -27,6 +27,7 @@
#include "battle.h"
#include "link.h"
#include "link_rfu.h"
+#include "constants/rgb.h"
extern u16 gHeldKeyCodeToSend;
@@ -444,7 +445,7 @@ static void LinkTestProcessKeyInput(void)
}
if (gMain.newKeys & L_BUTTON)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 2);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(2, 0, 0));
}
if (gMain.newKeys & START_BUTTON)
{
diff --git a/src/link_rfu.c b/src/link_rfu.c
index 7c55df783..9732e9889 100644
--- a/src/link_rfu.c
+++ b/src/link_rfu.c
@@ -2263,7 +2263,7 @@ void DestroyWirelessStatusIndicatorSprite(void)
}
}
-void sub_800E0E8(void)
+void LoadWirelessStatusIndicatorSpriteGfx(void)
{
if (GetSpriteTileStartByTag(sWirelessStatusIndicatorSpriteSheet.tag) == 0xFFFF)
{
diff --git a/src/mail.c b/src/mail.c
index 9cca4492e..0078bc4fc 100644
--- a/src/mail.c
+++ b/src/mail.c
@@ -19,6 +19,7 @@
#include "constants/species.h"
#include "alloc.h"
#include "easy_chat.h"
+#include "constants/rgb.h"
extern const u16 gMailPalette_Orange[];
extern const u16 gMailPalette_Harbor[];
@@ -417,7 +418,7 @@ static bool8 MailReadBuildGraphics(void)
ShowBg(0);
ShowBg(1);
ShowBg(2);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
gPaletteFade.bufferTransferDisabled = FALSE;
sMailRead->callback2 = CB2_WaitForPaletteExitOnKeyPress;
return TRUE;
@@ -526,7 +527,7 @@ static void CB2_ExitOnKeyPress(void)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
sMailRead->callback2 = CB2_ExitMailReadFreeVars;
}
}
diff --git a/src/main_menu.c b/src/main_menu.c
index 504c1bd33..bc509c70d 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -584,9 +584,9 @@ static u32 InitMainMenu(bool8 returningFromOptionsMenu)
ResetSpriteData();
FreeAllSpritePalettes();
if (returningFromOptionsMenu)
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0x0000); // fade to black
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); // fade to black
else
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0xFFFF); // fade to white
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_WHITEALPHA); // fade to white
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sMainMenuBgTemplates, ARRAY_COUNT(sMainMenuBgTemplates));
ChangeBgX(0, 0, 0);
@@ -1098,7 +1098,7 @@ static void Task_HandleMainMenuAPressed(u8 taskId)
SetGpuReg(REG_OFFSET_BG1VOFS, 0);
SetGpuReg(REG_OFFSET_BG0HOFS, 0);
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
return;
}
FreeAllWindowBuffers();
@@ -1287,7 +1287,7 @@ static void Task_NewGameBirchSpeech_Init(u8 taskId)
FreeAllSpritePalettes();
ResetAllPicSprites();
AddBirchSpeechObjects(taskId);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
gTasks[taskId].tBG1HOFS = 0;
gTasks[taskId].func = Task_NewGameBirchSpeech_WaitToShowBirch;
gTasks[taskId].tPlayerSpriteId = 0xFF;
@@ -1846,7 +1846,7 @@ static void CB2_NewGameBirchSpeech_ReturnFromNamingScreen(void)
gSprites[spriteId].invisible = FALSE;
gTasks[taskId].tPlayerSpriteId = spriteId;
SetGpuReg(REG_OFFSET_BG1HOFS, -60);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
SetGpuReg(REG_OFFSET_WIN0H, 0);
SetGpuReg(REG_OFFSET_WIN0V, 0);
SetGpuReg(REG_OFFSET_WININ, 0);
diff --git a/src/match_call.c b/src/match_call.c
index 641079ba9..6221affe1 100644
--- a/src/match_call.c
+++ b/src/match_call.c
@@ -3,11 +3,12 @@
#include "battle.h"
#include "battle_setup.h"
#include "bg.h"
-#include "data2.h"
+#include "data.h"
#include "event_data.h"
#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "main.h"
+#include "match_call.h"
#include "menu.h"
#include "new_game.h"
#include "overworld.h"
@@ -74,7 +75,6 @@ struct BattleFrontierStreakInfo
EWRAM_DATA struct MatchCallState gMatchCallState = {0};
EWRAM_DATA struct BattleFrontierStreakInfo gBattleFrontierStreakInfo = {0};
-bool32 SelectMatchCallMessage(int, u8 *);
static u32 GetCurrentTotalMinutes(struct Time *);
static u32 GetNumRegisteredNPCs(void);
static u32 GetActiveMatchCallTrainerId(u32);
@@ -1098,13 +1098,13 @@ bool32 TryStartMatchCall(void)
return FALSE;
}
-void StartMatchCallFromScript(void)
+void StartMatchCallFromScript(u8 *message)
{
gMatchCallState.triggeredFromScript = 1;
StartMatchCall();
}
-bool8 IsMatchCallTaskActive(void)
+bool32 IsMatchCallTaskActive(void)
{
return FuncIsActiveTask(ExecuteMatchCall);
}
@@ -2002,7 +2002,7 @@ void sub_8197080(u8 *destStr)
Free(buffer);
}
-void sub_8197184(u8 windowId, u32 destOffset, u32 paletteId)
+void sub_8197184(u32 windowId, u32 destOffset, u32 paletteId)
{
u8 bg = GetWindowAttribute(windowId, WINDOW_BG);
LoadBgTiles(bg, sUnknown_0860EA6C, 0x100, destOffset);
diff --git a/src/menu.c b/src/menu.c
index b766b1b86..354346d27 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -1919,7 +1919,7 @@ void sub_8199D3C(void *ptr, int delta, int width, int height, bool32 is8BPP)
}
}
-void sub_8199D98(void)
+void ResetBgPositions(void)
{
ChangeBgX(0, 0, 0);
ChangeBgX(1, 0, 0);
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
index b5745d812..801e2546b 100644
--- a/src/menu_helpers.c
+++ b/src/menu_helpers.c
@@ -344,17 +344,17 @@ void sub_812220C(struct ItemSlot *slots, u8 count, u8 *arg2, u8 *usedSlotsCount,
*arg2 = (*usedSlotsCount);
}
-void sub_812225C(u16 *arg0, u16 *arg1, u8 arg2, u8 arg3)
+void sub_812225C(u16 *scrollOffset, u16 *cursorPos, u8 maxShownItems, u8 numItems)
{
- if ((*arg0) != 0 && (*arg0) + arg2 > arg3)
- (*arg0) = arg3 - arg2;
+ if (*scrollOffset != 0 && *scrollOffset + maxShownItems > numItems)
+ *scrollOffset = numItems - maxShownItems;
- if ((*arg0) + (*arg1) >= arg3)
+ if (*scrollOffset + *cursorPos >= numItems)
{
- if (arg3 == 0)
- (*arg1) = 0;
+ if (numItems == 0)
+ *cursorPos = 0;
else
- (*arg1) = arg3 - 1;
+ *cursorPos = numItems - 1;
}
}
diff --git a/src/menu_specialized.c b/src/menu_specialized.c
index cbdef3d39..34dd1fe2b 100644
--- a/src/menu_specialized.c
+++ b/src/menu_specialized.c
@@ -2,7 +2,7 @@
#include "alloc.h"
#include "battle_main.h"
#include "contest_effect.h"
-#include "data2.h"
+#include "data.h"
#include "decompress.h"
#include "gpu_regs.h"
#include "graphics.h"
@@ -28,7 +28,6 @@
#include "gba/io_reg.h"
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
-extern const u8 *gUnknown_08625B54[];
EWRAM_DATA static u8 sUnknown_0203CF48[3] = {0};
EWRAM_DATA static struct ListMenuItem *sUnknown_0203CF4C = NULL;
@@ -39,7 +38,7 @@ 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_81D3564(struct Sprite *sprite);
static void sub_81D35E8(struct Sprite *sprite);
static const struct WindowTemplate sUnknown_086253E8[] =
@@ -1474,9 +1473,77 @@ static void sub_81D32F4(struct Sprite *sprite)
}
}
-// Todo: Move these variables to C.
-extern const s16 gUnknown_08625B2C[][2];
-extern const struct SpriteTemplate gUnknown_08625B14;
+static const struct OamData sOamData_8625AD0 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x16),
+ .x = 0,
+ .size = SPRITE_SIZE(16x16),
+ .priority = 0,
+};
+
+static const union AnimCmd sSpriteAnim_8625AD8[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(20, 5),
+ ANIMCMD_FRAME(24, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_8625AF8[] =
+{
+ sSpriteAnim_8625AD8,
+ sSpriteAnim_8625AD8 + 2,
+};
+
+// unused
+static const union AnimCmd *const sSpriteAnimTable_8625B00[] =
+{
+ sSpriteAnim_8625AD8 + 4,
+ sSpriteAnim_8625AD8 + 6,
+};
+
+// unused
+static const union AnimCmd *const sSpriteAnimTable_8625B08[] =
+{
+ sSpriteAnim_8625AD8 + 8,
+ sSpriteAnim_8625AD8 + 10,
+};
+
+// unused
+static const union AnimCmd *const *const sUnknown_08625B10 = sSpriteAnimTable_8625B08;
+
+const struct SpriteTemplate gUnknown_08625B14 =
+{
+ .tileTag = 104,
+ .paletteTag = 104,
+ .oam = &sOamData_8625AD0,
+ .anims = sSpriteAnimTable_8625AF8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81D3564,
+};
+
+static const s16 gUnknown_08625B2C[][2] =
+{
+ {0, -35},
+ {20, -28},
+ {33, -10},
+ {33, 10},
+ {20, 28},
+ {0, 35},
+ {-20, 28},
+ {-33, 10},
+ {-33, -10},
+ {-20, -28},
+};
void sub_81D3314(struct Sprite *sprite)
{
@@ -1595,7 +1662,7 @@ void sub_81D354C(struct Sprite **sprites)
FreeSpritePaletteByTag(104);
}
-/*static*/ void sub_81D3564(struct Sprite *sprite)
+static void sub_81D3564(struct Sprite *sprite)
{
if (sprite->data[1] != 0)
{
@@ -1641,440 +1708,127 @@ static void sub_81D35E8(struct Sprite *sprite)
}
}
-
-#ifdef NONMATCHING
-void DrawLevelUpWindowPg1(u16 arg0, u16 *statStoreLocation1, u16 *statStoreLocation2, u8 arg3, u8 arg4, u8 arg5)
+static const u8 *const sLvlUpStatStrings[] =
{
- u16 i;
- s16 array[6];
- u8 *text;
- u8 text2;
- s16 *statVal;
- s32 var;
- u8 padding;
- s32 var3;
- u8 color[11];
-
- FillWindowPixelBuffer(arg0, PIXEL_FILL(arg3));
-
- array[0] = statStoreLocation2[STAT_HP] - statStoreLocation1[STAT_HP];
- array[1] = statStoreLocation2[STAT_ATK] - statStoreLocation1[STAT_ATK];
- array[2] = statStoreLocation2[STAT_DEF] - statStoreLocation1[STAT_DEF];
- array[3] = statStoreLocation2[STAT_SPATK] - statStoreLocation1[STAT_SPATK];
- array[4] = statStoreLocation2[STAT_SPDEF] - statStoreLocation1[STAT_SPDEF];
- array[5] = statStoreLocation2[STAT_SPEED] - statStoreLocation1[STAT_SPEED];
-
- color[0] = arg3;
- color[1] = arg4;
- color[2] = arg5;
-
- for(i = 0; i <= 5; i++)
- {
- AddTextPrinterParameterized3(arg0,
- 1,
- 0,
- 15 * i,
- color,
- TEXT_SPEED_FF,
- gUnknown_08625B54[i]);
- statVal = &array[i];
- text = array[i] >= 0 ? (u8 *) gText_UnkCtrlF904 : (u8 *) gText_Dash;//Plus sign for stat gain, dash for none maybe
- StringCopy(&text2, text);
- AddTextPrinterParameterized3(arg0,
- 1,
- 56,
- 15 * i,
- color,
- TEXT_SPEED_FF,
- &text2);
- var3 = *statVal;
- var = var3;
-
- if(var3 < 0)
- {
- var = -var3;
- }
-
- padding = 12; //amount of padding
-
- if(var <= 9)
- {
- padding = 18; //more padding for single digit numbers
- }
-
- if(var3 < 0)
- {
- var3 = -var3;
- }
-
- ConvertIntToDecimalStringN(&text2, var3, STR_CONV_MODE_LEFT_ALIGN, 2);
- AddTextPrinterParameterized3(arg0,
- 1,
- padding + 56,
- 15 * i,
- color,
- TEXT_SPEED_FF,
- &text2);
+ gUnknown_085EEA46,
+ gUnknown_085EEA4E,
+ gUnknown_085EEA55,
+ gUnknown_085EEA63,
+ gUnknown_085EEA6B,
+ gUnknown_085EEA5D
+};
+
+void DrawLevelUpWindowPg1(u16 windowId, u16 *statsBefore, u16 *statsAfter, u8 bgClr, u8 fgClr, u8 shadowClr)
+{
+ u16 i, x;
+ s16 statsDiff[NUM_STATS];
+ u8 text[12];
+ u8 color[3];
+
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(bgClr));
+
+ statsDiff[0] = statsAfter[STAT_HP] - statsBefore[STAT_HP];
+ statsDiff[1] = statsAfter[STAT_ATK] - statsBefore[STAT_ATK];
+ statsDiff[2] = statsAfter[STAT_DEF] - statsBefore[STAT_DEF];
+ statsDiff[3] = statsAfter[STAT_SPATK] - statsBefore[STAT_SPATK];
+ statsDiff[4] = statsAfter[STAT_SPDEF] - statsBefore[STAT_SPDEF];
+ statsDiff[5] = statsAfter[STAT_SPEED] - statsBefore[STAT_SPEED];
+
+ color[0] = bgClr;
+ color[1] = fgClr;
+ color[2] = shadowClr;
+
+ for (i = 0; i < NUM_STATS; i++)
+ {
+
+ AddTextPrinterParameterized3(windowId,
+ 1,
+ 0,
+ 15 * i,
+ color,
+ -1,
+ sLvlUpStatStrings[i]);
+
+ StringCopy(text, (statsDiff[i] >= 0) ? gText_UnkCtrlF904 : gText_Dash);
+ AddTextPrinterParameterized3(windowId,
+ 1,
+ 56,
+ 15 * i,
+ color,
+ -1,
+ text);
+ if (abs(statsDiff[i]) <= 9)
+ x = 18;
+ else
+ x = 12;
+
+ ConvertIntToDecimalStringN(text, abs(statsDiff[i]), STR_CONV_MODE_LEFT_ALIGN, 2);
+ AddTextPrinterParameterized3(windowId,
+ 1,
+ 56 + x,
+ 15 * i,
+ color,
+ -1,
+ text);
}
}
-#else
-NAKED
-void DrawLevelUpWindowPg1(u16 arg0, u16 *statStoreLocation1, u16 *statStoreLocation2, u8 arg3, u8 arg4, u8 arg5)
-{
- asm(".syntax unified\n\
-push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x2C\n\
- mov r8, r0\n\
- adds r6, r1, 0\n\
- adds r5, r2, 0\n\
- adds r4, r3, 0\n\
- ldr r3, [sp, 0x4C]\n\
- ldr r0, [sp, 0x50]\n\
- mov r9, r0\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- lsls r3, 24\n\
- lsrs r3, 24\n\
- mov r1, r9\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- mov r9, r1\n\
- mov r0, r8\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r8, r0\n\
- lsls r1, r4, 4\n\
- orrs r1, r4\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- str r3, [sp, 0x28]\n\
- bl FillWindowPixelBuffer\n\
- add r2, sp, 0xC\n\
- ldrh r0, [r5]\n\
- ldrh r1, [r6]\n\
- subs r0, r1\n\
- strh r0, [r2]\n\
- ldrh r0, [r5, 0x2]\n\
- ldrh r1, [r6, 0x2]\n\
- subs r0, r1\n\
- strh r0, [r2, 0x2]\n\
- ldrh r0, [r5, 0x4]\n\
- ldrh r1, [r6, 0x4]\n\
- subs r0, r1\n\
- strh r0, [r2, 0x4]\n\
- ldrh r0, [r5, 0x8]\n\
- ldrh r1, [r6, 0x8]\n\
- subs r0, r1\n\
- strh r0, [r2, 0x6]\n\
- ldrh r0, [r5, 0xA]\n\
- ldrh r1, [r6, 0xA]\n\
- subs r0, r1\n\
- strh r0, [r2, 0x8]\n\
- ldrh r0, [r5, 0x6]\n\
- ldrh r1, [r6, 0x6]\n\
- subs r0, r1\n\
- strh r0, [r2, 0xA]\n\
- add r0, sp, 0x24\n\
- strb r4, [r0]\n\
- ldr r3, [sp, 0x28]\n\
- strb r3, [r0, 0x1]\n\
- mov r1, r9\n\
- strb r1, [r0, 0x2]\n\
- movs r7, 0\n\
- mov r10, r0\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- mov r9, r0\n\
- add r6, sp, 0x18\n\
-_081D36CA:\n\
- lsls r0, r7, 4\n\
- subs r0, r7\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- mov r1, r10\n\
- str r1, [sp]\n\
- mov r0, r9\n\
- str r0, [sp, 0x4]\n\
- ldr r1, =gUnknown_08625B54\n\
- lsls r0, r7, 2\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- str r0, [sp, 0x8]\n\
- mov r0, r8\n\
- movs r1, 0x1\n\
- movs r2, 0\n\
- adds r3, r5, 0\n\
- bl AddTextPrinterParameterized3\n\
- lsls r0, r7, 1\n\
- mov r4, sp\n\
- adds r4, r0\n\
- adds r4, 0xC\n\
- movs r1, 0\n\
- ldrsh r0, [r4, r1]\n\
- ldr r1, =gText_Dash\n\
- cmp r0, 0\n\
- blt _081D3704\n\
- ldr r1, =gText_UnkCtrlF904\n\
-_081D3704:\n\
- adds r0, r6, 0\n\
- bl StringCopy\n\
- mov r0, r10\n\
- str r0, [sp]\n\
- mov r1, r9\n\
- str r1, [sp, 0x4]\n\
- str r6, [sp, 0x8]\n\
- mov r0, r8\n\
- movs r1, 0x1\n\
- movs r2, 0x38\n\
- adds r3, r5, 0\n\
- bl AddTextPrinterParameterized3\n\
- movs r0, 0\n\
- ldrsh r1, [r4, r0]\n\
- adds r0, r1, 0\n\
- cmp r1, 0\n\
- bge _081D372C\n\
- negs r0, r1\n\
-_081D372C:\n\
- movs r4, 0xC\n\
- cmp r0, 0x9\n\
- bgt _081D3734\n\
- movs r4, 0x12\n\
-_081D3734:\n\
- cmp r1, 0\n\
- bge _081D373A\n\
- negs r1, r1\n\
-_081D373A:\n\
- adds r0, r6, 0\n\
- movs r2, 0\n\
- movs r3, 0x2\n\
- bl ConvertIntToDecimalStringN\n\
- adds r2, r4, 0\n\
- adds r2, 0x38\n\
- mov r1, r10\n\
- str r1, [sp]\n\
- mov r0, r9\n\
- str r0, [sp, 0x4]\n\
- str r6, [sp, 0x8]\n\
- mov r0, r8\n\
- movs r1, 0x1\n\
- adds r3, r5, 0\n\
- bl AddTextPrinterParameterized3\n\
- adds r0, r7, 0x1\n\
- lsls r0, 16\n\
- lsrs r7, r0, 16\n\
- cmp r7, 0x5\n\
- bls _081D36CA\n\
- add sp, 0x2C\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n\
- .syntax divided");
-}
-#endif // NONMATCHING
-
-#ifdef NONMATCHING
-void DrawLevelUpWindowPg2(u16 arg0, u16 *statStoreLocation1, u8 arg2, u8 arg3, u8 arg4)
-{
- s32 i;
- s16 *var;
- s32 numDigits;
- u8 text;
- s16 array[6];
- u8 color[11];
-
- FillWindowPixelBuffer(arg0, PIXEL_FILL(arg2));
-
- array[0] = statStoreLocation1[STAT_HP];
- array[1] = statStoreLocation1[STAT_ATK];
- array[2] = statStoreLocation1[STAT_DEF];
- array[3] = statStoreLocation1[STAT_SPATK];
- array[4] = statStoreLocation1[STAT_SPDEF];
- array[5] = statStoreLocation1[STAT_SPEED];
-
- color[0] = arg2;
- color[1] = arg3;
- color[2] = arg4;
-
- for(i = 0; i <= 5; i++)
- {
- numDigits = 3; //3 digit stat
- if(array[i] <= 99)
- {
- numDigits = 1; //1 digit stat
- if(array[i] > 9)
- {
- numDigits = 2; //2 digit stat
- }
- }
- ConvertIntToDecimalStringN(&text, array[i], STR_CONV_MODE_LEFT_ALIGN, numDigits);
- AddTextPrinterParameterized3(arg0,
- 1,
- 0,
- 15 * i,
- color,
- TEXT_SPEED_FF,
- gUnknown_08625B54[i]);
- AddTextPrinterParameterized3(arg0,
- 1,
- 6 * (4 - numDigits) + 56,
- 15 * i,
- color,
- TEXT_SPEED_FF,
- &text);
+
+void DrawLevelUpWindowPg2(u16 windowId, u16 *currStats, u8 bgClr, u8 fgClr, u8 shadowClr)
+{
+ u16 i, numDigits, x;
+ s16 stats[NUM_STATS];
+ u8 text[12];
+ u8 color[3];
+
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(bgClr));
+
+ stats[0] = currStats[STAT_HP];
+ stats[1] = currStats[STAT_ATK];
+ stats[2] = currStats[STAT_DEF];
+ stats[3] = currStats[STAT_SPATK];
+ stats[4] = currStats[STAT_SPDEF];
+ stats[5] = currStats[STAT_SPEED];
+
+ color[0] = bgClr;
+ color[1] = fgClr;
+ color[2] = shadowClr;
+
+ for (i = 0; i < NUM_STATS; i++)
+ {
+ if (stats[i] > 99)
+ numDigits = 3;
+ else if (stats[i] > 9)
+ numDigits = 2;
+ else
+ numDigits = 1;
+
+ ConvertIntToDecimalStringN(text, stats[i], STR_CONV_MODE_LEFT_ALIGN, numDigits);
+ x = 6 * (4 - numDigits);
+
+ AddTextPrinterParameterized3(windowId,
+ 1,
+ 0,
+ 15 * i,
+ color,
+ -1,
+ sLvlUpStatStrings[i]);
+
+ AddTextPrinterParameterized3(windowId,
+ 1,
+ 56 + x,
+ 15 * i,
+ color,
+ -1,
+ text);
}
}
-#else
-NAKED
-void DrawLevelUpWindowPg2(u16 arg0, u16 *statStoreLocation1, u8 arg2, u8 arg3, u8 arg4)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x2C\n\
- mov r8, r0\n\
- adds r5, r1, 0\n\
- adds r4, r2, 0\n\
- adds r6, r3, 0\n\
- ldr r2, [sp, 0x4C]\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- lsls r6, 24\n\
- lsrs r6, 24\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r8, r0\n\
- lsls r1, r4, 4\n\
- orrs r1, r4\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- str r2, [sp, 0x28]\n\
- bl FillWindowPixelBuffer\n\
- add r1, sp, 0xC\n\
- ldrh r0, [r5]\n\
- strh r0, [r1]\n\
- ldrh r0, [r5, 0x2]\n\
- strh r0, [r1, 0x2]\n\
- ldrh r0, [r5, 0x4]\n\
- strh r0, [r1, 0x4]\n\
- ldrh r0, [r5, 0x8]\n\
- strh r0, [r1, 0x6]\n\
- ldrh r0, [r5, 0xA]\n\
- strh r0, [r1, 0x8]\n\
- ldrh r0, [r5, 0x6]\n\
- strh r0, [r1, 0xA]\n\
- add r0, sp, 0x24\n\
- strb r4, [r0]\n\
- strb r6, [r0, 0x1]\n\
- ldr r2, [sp, 0x28]\n\
- strb r2, [r0, 0x2]\n\
- movs r6, 0\n\
- add r1, sp, 0x18\n\
- mov r9, r1\n\
- mov r7, r8\n\
- mov r10, r0\n\
- movs r2, 0x1\n\
- negs r2, r2\n\
- mov r8, r2\n\
-_081D37EE:\n\
- lsls r1, r6, 1\n\
- mov r0, sp\n\
- adds r0, r1\n\
- adds r0, 0xC\n\
- movs r2, 0\n\
- ldrsh r0, [r0, r2]\n\
- movs r4, 0x3\n\
- cmp r0, 0x63\n\
- bgt _081D3808\n\
- movs r4, 0x1\n\
- cmp r0, 0x9\n\
- ble _081D3808\n\
- movs r4, 0x2\n\
-_081D3808:\n\
- mov r0, sp\n\
- adds r0, r1\n\
- adds r0, 0xC\n\
- movs r2, 0\n\
- ldrsh r1, [r0, r2]\n\
- mov r0, r9\n\
- movs r2, 0\n\
- adds r3, r4, 0\n\
- bl ConvertIntToDecimalStringN\n\
- movs r0, 0x4\n\
- subs r0, r4\n\
- lsls r4, r0, 1\n\
- adds r4, r0\n\
- lsls r4, 17\n\
- lsrs r4, 16\n\
- lsls r5, r6, 4\n\
- subs r5, r6\n\
- lsls r5, 24\n\
- lsrs r5, 24\n\
- mov r0, r10\n\
- str r0, [sp]\n\
- mov r1, r8\n\
- str r1, [sp, 0x4]\n\
- ldr r1, =gUnknown_08625B54\n\
- lsls r0, r6, 2\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- str r0, [sp, 0x8]\n\
- adds r0, r7, 0\n\
- movs r1, 0x1\n\
- movs r2, 0\n\
- adds r3, r5, 0\n\
- bl AddTextPrinterParameterized3\n\
- adds r4, 0x38\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- mov r2, r10\n\
- str r2, [sp]\n\
- mov r0, r8\n\
- str r0, [sp, 0x4]\n\
- mov r1, r9\n\
- str r1, [sp, 0x8]\n\
- adds r0, r7, 0\n\
- movs r1, 0x1\n\
- adds r2, r4, 0\n\
- adds r3, r5, 0\n\
- bl AddTextPrinterParameterized3\n\
- adds r0, r6, 0x1\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- cmp r6, 0x5\n\
- bls _081D37EE\n\
- add sp, 0x2C\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n\
- .syntax divided");
-}
-#endif // NONMATCHING
-void GetMonLevelUpWindowStats(struct Pokemon *mon, u16 *statStoreLocation)
+void GetMonLevelUpWindowStats(struct Pokemon *mon, u16 *currStats)
{
- statStoreLocation[STAT_HP] = GetMonData(mon, MON_DATA_MAX_HP);
- statStoreLocation[STAT_ATK] = GetMonData(mon, MON_DATA_ATK);
- statStoreLocation[STAT_DEF] = GetMonData(mon, MON_DATA_DEF);
- statStoreLocation[STAT_SPEED] = GetMonData(mon, MON_DATA_SPEED);
- statStoreLocation[STAT_SPATK] = GetMonData(mon, MON_DATA_SPATK);
- statStoreLocation[STAT_SPDEF] = GetMonData(mon, MON_DATA_SPDEF);
+ currStats[STAT_HP] = GetMonData(mon, MON_DATA_MAX_HP);
+ currStats[STAT_ATK] = GetMonData(mon, MON_DATA_ATK);
+ currStats[STAT_DEF] = GetMonData(mon, MON_DATA_DEF);
+ currStats[STAT_SPEED] = GetMonData(mon, MON_DATA_SPEED);
+ currStats[STAT_SPATK] = GetMonData(mon, MON_DATA_SPATK);
+ currStats[STAT_SPDEF] = GetMonData(mon, MON_DATA_SPDEF);
}
diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c
index 8a2c3ad91..16298183b 100644
--- a/src/metatile_behavior.c
+++ b/src/metatile_behavior.c
@@ -191,7 +191,7 @@ static const u8 sTileBitAttributes[] =
[MB_SECRET_BASE_UNUSED] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
[MB_BLOCK_DECORATION] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
[MB_SECRET_BASE_DECORATION] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
- [MB_SECRET_BASE_LARGE_MAT_EDGE] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ [MB_HOLDS_SMALL_DECORATION] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
[MB_UNUSED_B6] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
[MB_SECRET_BASE_NORTH_WALL] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
[MB_SECRET_BASE_BALLOON] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
@@ -205,7 +205,7 @@ static const u8 sTileBitAttributes[] =
[MB_IMPASSABLE_SOUTH_AND_NORTH] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
[MB_IMPASSABLE_WEST_AND_EAST] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
[MB_SECRET_BASE_HOLE] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
- [MB_LARGE_MAT_CENTER] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
+ [MB_HOLDS_LARGE_DECORATION] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
[MB_SECRET_BASE_TV_SHIELD] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
[MB_PLAYER_ROOM_PC_ON] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE),
[MB_C6] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE),
@@ -751,17 +751,17 @@ bool8 Unref_MetatileBehavior_IsSecretBaseUnused_B2_2(u8 metatileBehavior)
return FALSE;
}
-bool8 MetatileBehavior_IsSecretBaseLargeMatEdge(u8 metatileBehavior)
+bool8 MetatileBehavior_HoldsSmallDecoration(u8 metatileBehavior)
{
- if (metatileBehavior == MB_SECRET_BASE_LARGE_MAT_EDGE)
+ if (metatileBehavior == MB_HOLDS_SMALL_DECORATION)
return TRUE;
else
return FALSE;
}
-bool8 MetatileBehavior_IsLargeMatCenter(u8 metatileBehavior)
+bool8 MetatileBehavior_HoldsLargeDecoration(u8 metatileBehavior)
{
- if (metatileBehavior == MB_LARGE_MAT_CENTER)
+ if (metatileBehavior == MB_HOLDS_LARGE_DECORATION)
return TRUE;
else
return FALSE;
diff --git a/src/mevent_801BAAC.c b/src/mevent_801BAAC.c
index 62240af98..8f5b2d636 100644
--- a/src/mevent_801BAAC.c
+++ b/src/mevent_801BAAC.c
@@ -14,6 +14,7 @@
#include "link_rfu.h"
#include "mevent.h"
#include "mystery_gift.h"
+#include "constants/rgb.h"
struct UnkStruct_8467FB8
{
@@ -186,7 +187,7 @@ s32 FadeToWonderCardMenu(void)
switch(sWonderCardData->unk_0174)
{
case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
break;
case 1:
if (UpdatePaletteFade())
@@ -231,7 +232,7 @@ s32 FadeToWonderCardMenu(void)
ShowBg(2);
gPaletteFade.bufferTransferDisabled = FALSE;
sub_801C4C0();
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
UpdatePaletteFade();
break;
default:
@@ -251,7 +252,7 @@ s32 FadeOutFromWonderCard(bool32 flag)
switch (sWonderCardData->unk_0174)
{
case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
break;
case 1:
if (UpdatePaletteFade())
@@ -279,7 +280,7 @@ s32 FadeOutFromWonderCard(bool32 flag)
case 5:
PrintMysteryGiftOrEReaderTopMenu(gGiftIsFromEReader, flag);
CopyBgTilemapBufferToVram(0);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
break;
default:
if (UpdatePaletteFade())
@@ -575,7 +576,7 @@ s32 FadeToWonderNewsMenu(void)
switch (sWonderNewsData->unk_01C0_1)
{
case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
break;
case 1:
if (UpdatePaletteFade())
@@ -629,7 +630,7 @@ s32 FadeToWonderNewsMenu(void)
ShowBg(3);
gPaletteFade.bufferTransferDisabled = FALSE;
sWonderNewsData->unk_01C1 = AddScrollIndicatorArrowPair(&sWonderNewsData->unk_0394, &sWonderNewsData->unk_01C6);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
UpdatePaletteFade();
break;
default:
@@ -650,7 +651,7 @@ s32 FadeOutFromWonderNews(bool32 flag)
switch (sWonderNewsData->unk_01C0_1)
{
case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
break;
case 1:
if (UpdatePaletteFade())
@@ -692,7 +693,7 @@ s32 FadeOutFromWonderNews(bool32 flag)
MG_DrawCheckerboardPattern(3);
CopyBgTilemapBufferToVram(0);
CopyBgTilemapBufferToVram(3);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
break;
default:
if (UpdatePaletteFade())
diff --git a/src/move_relearner.c b/src/move_relearner.c
index e148b9ace..0b0b4a5aa 100644
--- a/src/move_relearner.c
+++ b/src/move_relearner.c
@@ -3,7 +3,7 @@
#include "battle.h"
#include "bg.h"
#include "contest_effect.h"
-#include "data2.h"
+#include "data.h"
#include "event_data.h"
#include "field_screen_effect.h"
#include "gpu_regs.h"
diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c
index 850b22d5b..c77a48615 100644
--- a/src/mystery_event_menu.c
+++ b/src/mystery_event_menu.c
@@ -18,6 +18,7 @@
#include "gpu_regs.h"
#include "text_window.h"
#include "decompress.h"
+#include "constants/rgb.h"
// this file's functions
static void CB2_MysteryEventMenu(void);
@@ -137,7 +138,7 @@ static void CB2_MysteryEventMenu(void)
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
ShowBg(0);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
gMain.state++;
break;
case 1:
@@ -280,7 +281,7 @@ static void CB2_MysteryEventMenu(void)
}
break;
case 15:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gMain.state++;
break;
case 16:
diff --git a/src/naming_screen.c b/src/naming_screen.c
index e43a259e7..7da7d99b0 100644
--- a/src/naming_screen.c
+++ b/src/naming_screen.c
@@ -21,12 +21,13 @@
#include "trig.h"
#include "field_effect.h"
#include "pokemon_icon.h"
-#include "data2.h"
+#include "data.h"
#include "strings.h"
#include "menu.h"
#include "text_window.h"
#include "overworld.h"
#include "constants/event_objects.h"
+#include "constants/rgb.h"
EWRAM_DATA static struct NamingScreenData *gNamingScreenData = NULL;
extern u16 gKeyRepeatStartDelay;
@@ -463,7 +464,7 @@ static bool8 MainState_BeginFadeIn(void)
CopyBgTilemapBufferToVram(2);
CopyBgTilemapBufferToVram(3);
BlendPalettes(-1, 16, 0);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
gNamingScreenData->state++;
return FALSE;
}
@@ -517,7 +518,7 @@ static bool8 MainState_6(void)
static bool8 MainState_BeginFadeInOut(void)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
gNamingScreenData->state++;
return FALSE;
}
diff --git a/src/new_game.c b/src/new_game.c
index 19f3461b4..7a0c668a4 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -56,7 +56,7 @@ static void ResetMiniGamesResults(void);
// EWRAM vars
EWRAM_DATA bool8 gDifferentSaveFile = FALSE;
-EWRAM_DATA bool8 gUnknown_020322D5 = FALSE;
+EWRAM_DATA bool8 gEnableContestDebugging = FALSE;
// const rom data
static const struct ContestWinner sContestWinnerPicDummy =
@@ -170,7 +170,7 @@ void NewGameInitData(void)
InitEventData();
ClearTVShowData();
ResetGabbyAndTy();
- ResetSecretBases();
+ ClearSecretBases();
ClearBerryTrees();
SetMoney(&gSaveBlock1Ptr->money, 3000);
SetCoins(0);
diff --git a/src/option_menu.c b/src/option_menu.c
index 2fc0d6f3e..3ffb2738f 100644
--- a/src/option_menu.c
+++ b/src/option_menu.c
@@ -14,6 +14,7 @@
#include "international_string_util.h"
#include "strings.h"
#include "gba/m4a_internal.h"
+#include "constants/rgb.h"
// Task data
enum
@@ -250,7 +251,7 @@ void CB2_InitOptionMenu(void)
break;
}
case 11:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
SetVBlankCallback(VBlankCB);
SetMainCallback2(MainCB2);
return;
@@ -359,7 +360,7 @@ static void Task_OptionMenuSave(u8 taskId)
gSaveBlock2Ptr->optionsButtonMode = gTasks[taskId].data[TD_BUTTONMODE];
gSaveBlock2Ptr->optionsWindowFrameType = gTasks[taskId].data[TD_FRAMETYPE];
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].func = Task_OptionMenuFadeOut;
}
diff --git a/src/overworld.c b/src/overworld.c
index 9ed147c0a..4356752c1 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -889,7 +889,7 @@ static void mli0_load_map(u32 a1)
if (a1 != 1 && isIndoors)
{
UpdateTVScreensOnMap(gBackupMapLayout.width, gBackupMapLayout.height);
- sub_80E9238(1);
+ InitSecretBaseAppearance(TRUE);
}
}
@@ -1508,7 +1508,7 @@ void SetUnusedCallback(void *func)
static bool8 map_post_load_hook_exec(void)
{
- if (gFieldCallback2 != NULL)
+ if (gFieldCallback2)
{
if (!gFieldCallback2())
{
@@ -1522,7 +1522,7 @@ static bool8 map_post_load_hook_exec(void)
}
else
{
- if (gFieldCallback != NULL)
+ if (gFieldCallback)
gFieldCallback();
else
mapldr_default();
@@ -1701,7 +1701,7 @@ void sub_80861E8(void)
static void sub_8086204(void)
{
- if ((gMapHeader.flags & 0xF8) == 8 && sub_80E909C() == TRUE)
+ if ((gMapHeader.flags & 0xF8) == 8 && SecretBaseMapPopupEnabled() == TRUE)
ShowMapNamePopup();
sub_80AF3C8();
}
@@ -1874,7 +1874,7 @@ static bool32 map_loading_iteration_3(u8 *state)
case 11:
if (gWirelessCommType != 0)
{
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0);
}
(*state)++;
@@ -1947,7 +1947,7 @@ static bool32 load_map_stuff(u8 *state, u32 a2)
(*state)++;
break;
case 11:
- if ((gMapHeader.flags & 0xF8) == 8 && sub_80E909C() == 1)
+ if ((gMapHeader.flags & 0xF8) == 8 && SecretBaseMapPopupEnabled() == TRUE)
ShowMapNamePopup();
(*state)++;
break;
@@ -2046,7 +2046,7 @@ static bool32 map_loading_iteration_2_link(u8 *state)
case 11:
if (gWirelessCommType != 0)
{
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0);
}
(*state)++;
diff --git a/src/party_menu.c b/src/party_menu.c
index 6233558ff..d13dc1e97 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -10,7 +10,7 @@
#include "battle_pyramid_bag.h"
#include "bg.h"
#include "contest.h"
-#include "data2.h"
+#include "data.h"
#include "decompress.h"
#include "easy_chat.h"
#include "event_data.h"
@@ -45,11 +45,11 @@
#include "player_pc.h"
#include "pokemon.h"
#include "pokemon_icon.h"
+#include "pokemon_jump.h"
#include "pokemon_storage_system.h"
#include "pokemon_summary_screen.h"
#include "region_map.h"
#include "reshow_battle_screen.h"
-#include "union_room.h"
#include "scanline_effect.h"
#include "script.h"
#include "sound.h"
@@ -61,12 +61,14 @@
#include "text.h"
#include "text_window.h"
#include "trade.h"
+#include "union_room.h"
#include "window.h"
#include "constants/battle.h"
#include "constants/battle_frontier.h"
#include "constants/easy_chat.h"
#include "constants/field_effects.h"
#include "constants/flags.h"
+#include "constants/item_effects.h"
#include "constants/items.h"
#include "constants/maps.h"
#include "constants/moves.h"
@@ -297,8 +299,8 @@ static u8 sub_81B8984(void);
static void sub_81B6280(u8);
static void c2_815ABFC(void);
static void sub_81B672C(u8);
-static u16 sub_81B691C(struct Pokemon*, u8);
-static void option_menu_get_string(u8, u8*);
+static u16 ItemEffectToMonEv(struct Pokemon*, u8);
+static void ItemEffectToStatString(u8, u8*);
static void sub_81B6BB4(u8);
static void ether_effect_related_2(u8);
static void ether_effect_related(u8);
@@ -5229,7 +5231,7 @@ void sub_81B617C(void)
doubleBattleStatus = 0;
}
- if (GetItemEffectType(gSpecialVar_ItemId) == 10)
+ if (GetItemEffectType(gSpecialVar_ItemId) == ITEM_EFFECT_SACRED_ASH)
{
gUnknown_0203CEC8.unk9 = 0;
for (i = 0; i < PARTY_SIZE; i++)
@@ -5283,7 +5285,7 @@ static bool8 IsHPRecoveryItem(u16 item)
else
effect = gItemEffectTable[item - ITEM_POTION];
- if ((effect[4] & 4) != 0)
+ if (effect[4] & ITEM4_HEAL_HP)
return TRUE;
else
return FALSE;
@@ -5293,59 +5295,59 @@ static void GetMedicineItemEffectMessage(u16 item)
{
switch (GetItemEffectType(item))
{
- case 3:
+ case ITEM_EFFECT_CURE_POISON:
StringExpandPlaceholders(gStringVar4, gText_PkmnCuredOfPoison);
break;
- case 4:
+ case ITEM_EFFECT_CURE_SLEEP:
StringExpandPlaceholders(gStringVar4, gText_PkmnWokeUp2);
break;
- case 5:
+ case ITEM_EFFECT_CURE_BURN:
StringExpandPlaceholders(gStringVar4, gText_PkmnBurnHealed);
break;
- case 6:
+ case ITEM_EFFECT_CURE_FREEZE:
StringExpandPlaceholders(gStringVar4, gText_PkmnThawedOut);
break;
- case 7:
+ case ITEM_EFFECT_CURE_PARALYSIS:
StringExpandPlaceholders(gStringVar4, gText_PkmnCuredOfParalysis);
break;
- case 8:
+ case ITEM_EFFECT_CURE_CONFUSION:
StringExpandPlaceholders(gStringVar4, gText_PkmnSnappedOutOfConfusion);
break;
- case 9:
+ case ITEM_EFFECT_CURE_INFATUATION:
StringExpandPlaceholders(gStringVar4, gText_PkmnGotOverInfatuation);
break;
- case 11:
+ case ITEM_EFFECT_CURE_ALL_STATUS:
StringExpandPlaceholders(gStringVar4, gText_PkmnBecameHealthy);
break;
- case 13:
+ case ITEM_EFFECT_HP_EV:
StringCopy(gStringVar2, gText_HP3);
StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
break;
- case 12:
+ case ITEM_EFFECT_ATK_EV:
StringCopy(gStringVar2, gText_Attack3);
StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
break;
- case 17:
+ case ITEM_EFFECT_DEF_EV:
StringCopy(gStringVar2, gText_Defense3);
StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
break;
- case 16:
+ case ITEM_EFFECT_SPEED_EV:
StringCopy(gStringVar2, gText_Speed2);
StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
break;
- case 14:
+ case ITEM_EFFECT_SPATK_EV:
StringCopy(gStringVar2, gText_SpAtk3);
StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
break;
- case 15:
+ case ITEM_EFFECT_SPDEF_EV:
StringCopy(gStringVar2, gText_SpDef3);
StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
break;
- case 19:
- case 20:
+ case ITEM_EFFECT_PP_UP:
+ case ITEM_EFFECT_PP_MAX:
StringExpandPlaceholders(gStringVar4, gText_MovesPPIncreased);
break;
- case 21:
+ case ITEM_EFFECT_HEAL_PP:
StringExpandPlaceholders(gStringVar4, gText_PPWasRestored);
break;
default:
@@ -5356,12 +5358,12 @@ static void GetMedicineItemEffectMessage(u16 item)
static bool8 UsingHPEVItemOnShedinja(struct Pokemon *mon, u16 item)
{
- if (GetItemEffectType(item) == 13 && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_SHEDINJA)
+ if (GetItemEffectType(item) == ITEM_EFFECT_HP_EV && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_SHEDINJA)
return FALSE;
return TRUE;
}
-static bool8 IsBlueYellowRedFlute(u16 item)
+static bool8 IsItemFlute(u16 item)
{
if (item == ITEM_BLUE_FLUTE || item == ITEM_RED_FLUTE || item == ITEM_YELLOW_FLUTE)
return TRUE;
@@ -5408,7 +5410,7 @@ void ItemUseCB_Medicine(u8 taskId, TaskFunc task)
goto iTriedHonestlyIDid;
}
gUnknown_0203CEE8 = 1;
- if (IsBlueYellowRedFlute(item) == FALSE)
+ if (IsItemFlute(item) == FALSE)
{
PlaySE(SE_KAIFUKU);
if (gUnknown_0203CEC8.unkB != 14)
@@ -5465,10 +5467,10 @@ void sub_81B67C8(u8 taskId, TaskFunc task)
u16 item = gSpecialVar_ItemId;
u8 effectType = GetItemEffectType(item);
u16 friendship = GetMonData(mon, MON_DATA_FRIENDSHIP);
- u16 relevantEV = sub_81B691C(mon, effectType);
+ u16 relevantEV = ItemEffectToMonEv(mon, effectType);
bool8 cannotUseEffect = ExecuteTableBasedItemEffect__(gUnknown_0203CEC8.unk9, item, 0);
u16 newFriendship = GetMonData(mon, MON_DATA_FRIENDSHIP);
- u16 newRelevantEV = sub_81B691C(mon, effectType);
+ u16 newRelevantEV = ItemEffectToMonEv(mon, effectType);
if (cannotUseEffect || (friendship == newFriendship && relevantEV == newRelevantEV))
{
@@ -5484,7 +5486,7 @@ void sub_81B67C8(u8 taskId, TaskFunc task)
PlaySE(SE_KAIFUKU);
RemoveBagItem(item, 1);
GetMonNickname(mon, gStringVar1);
- option_menu_get_string(effectType, gStringVar2);
+ ItemEffectToStatString(effectType, gStringVar2);
if (friendship != newFriendship)
{
if (relevantEV != newRelevantEV)
@@ -5502,48 +5504,48 @@ void sub_81B67C8(u8 taskId, TaskFunc task)
}
}
-static u16 sub_81B691C(struct Pokemon *mon, u8 effectType)
+static u16 ItemEffectToMonEv(struct Pokemon *mon, u8 effectType)
{
switch (effectType)
{
- case 13:
+ case ITEM_EFFECT_HP_EV:
if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_SHEDINJA)
return GetMonData(mon, MON_DATA_HP_EV);
break;
- case 12:
+ case ITEM_EFFECT_ATK_EV:
return GetMonData(mon, MON_DATA_ATK_EV);
- case 17:
+ case ITEM_EFFECT_DEF_EV:
return GetMonData(mon, MON_DATA_DEF_EV);
- case 16:
+ case ITEM_EFFECT_SPEED_EV:
return GetMonData(mon, MON_DATA_SPEED_EV);
- case 14:
+ case ITEM_EFFECT_SPATK_EV:
return GetMonData(mon, MON_DATA_SPATK_EV);
- case 15:
+ case ITEM_EFFECT_SPDEF_EV:
return GetMonData(mon, MON_DATA_SPDEF_EV);
}
return 0;
}
-static void option_menu_get_string(u8 effectType, u8 *dest)
+static void ItemEffectToStatString(u8 effectType, u8 *dest)
{
switch (effectType)
{
- case 13:
+ case ITEM_EFFECT_HP_EV:
StringCopy(dest, gText_HP3);
break;
- case 12:
+ case ITEM_EFFECT_ATK_EV:
StringCopy(dest, gText_Attack3);
break;
- case 17:
+ case ITEM_EFFECT_DEF_EV:
StringCopy(dest, gText_Defense3);
break;
- case 16:
+ case ITEM_EFFECT_SPEED_EV:
StringCopy(dest, gText_Speed2);
break;
- case 14:
+ case ITEM_EFFECT_SPATK_EV:
StringCopy(dest, gText_SpAtk3);
break;
- case 15:
+ case ITEM_EFFECT_SPDEF_EV:
StringCopy(dest, gText_SpDef3);
break;
}
@@ -5597,7 +5599,7 @@ void dp05_ether(u8 taskId, TaskFunc task)
else
effect = gItemEffectTable[item - ITEM_POTION];
- if ((effect[4] & 0x10) == 0)
+ if (!(effect[4] & ITEM4_HEAL_PP_ONE))
{
gUnknown_0203CEC8.unkE = 0;
ether_effect_related(taskId);
@@ -6220,8 +6222,8 @@ u8 GetItemEffectType(u16 item)
const u8 *itemEffect;
u32 statusCure;
- if (!IS_POKEMON_ITEM(item))
- return 22;
+ if (!ITEM_HAS_EFFECT(item))
+ return ITEM_EFFECT_NONE;
// Read the item's effect properties.
if (item == ITEM_ENIGMA_BERRY)
@@ -6229,58 +6231,58 @@ u8 GetItemEffectType(u16 item)
else
itemEffect = gItemEffectTable[item - ITEM_POTION];
- if ((itemEffect[0] & 0x3F) || itemEffect[1] || itemEffect[2] || (itemEffect[3] & 0x80))
- return 0;
- else if (itemEffect[0] & 0x40)
- return 10;
- else if (itemEffect[3] & 0x40)
- return 1;
+ if ((itemEffect[0] & (ITEM0_HIGH_CRIT | ITEM0_X_ATTACK)) || itemEffect[1] || itemEffect[2] || (itemEffect[3] & ITEM3_MIST))
+ return ITEM_EFFECT_X_ITEM;
+ else if (itemEffect[0] & ITEM0_SACRED_ASH)
+ return ITEM_EFFECT_SACRED_ASH;
+ else if (itemEffect[3] & ITEM3_LEVEL_UP)
+ return ITEM_EFFECT_RAISE_LEVEL;
- statusCure = itemEffect[3] & 0x3F;
+ statusCure = itemEffect[3] & ITEM3_STATUS_ALL;
if (statusCure || (itemEffect[0] >> 7))
{
- if (statusCure == 0x20)
- return 4;
- else if (statusCure == 0x10)
- return 3;
- else if (statusCure == 0x8)
- return 5;
- else if (statusCure == 0x4)
- return 6;
- else if (statusCure == 0x2)
- return 7;
- else if (statusCure == 0x1)
- return 8;
+ if (statusCure == ITEM3_SLEEP)
+ return ITEM_EFFECT_CURE_SLEEP;
+ else if (statusCure == ITEM3_POISON)
+ return ITEM_EFFECT_CURE_POISON;
+ else if (statusCure == ITEM3_BURN)
+ return ITEM_EFFECT_CURE_BURN;
+ else if (statusCure == ITEM3_FREEZE)
+ return ITEM_EFFECT_CURE_FREEZE;
+ else if (statusCure == ITEM3_PARALYSIS)
+ return ITEM_EFFECT_CURE_PARALYSIS;
+ else if (statusCure == ITEM3_CONFUSION)
+ return ITEM_EFFECT_CURE_CONFUSION;
else if (itemEffect[0] >> 7 && !statusCure)
- return 9;
+ return ITEM_EFFECT_CURE_INFATUATION;
else
- return 11;
- }
-
- if (itemEffect[4] & 0x44)
- return 2;
- else if (itemEffect[4] & 0x2)
- return 12;
- else if (itemEffect[4] & 0x1)
- return 13;
- else if (itemEffect[5] & 0x8)
- return 14;
- else if (itemEffect[5] & 0x4)
- return 15;
- else if (itemEffect[5] & 0x2)
- return 16;
- else if (itemEffect[5] & 0x1)
- return 17;
- else if (itemEffect[4] & 0x80)
- return 18;
- else if (itemEffect[4] & 0x20)
- return 19;
- else if (itemEffect[5] & 0x10)
- return 20;
- else if (itemEffect[4] & 0x18)
- return 21;
+ return ITEM_EFFECT_CURE_ALL_STATUS;
+ }
+
+ if (itemEffect[4] & (ITEM4_REVIVE | ITEM4_HEAL_HP))
+ return ITEM_EFFECT_HEAL_HP;
+ else if (itemEffect[4] & ITEM4_EV_ATK)
+ return ITEM_EFFECT_ATK_EV;
+ else if (itemEffect[4] & ITEM4_EV_HP)
+ return ITEM_EFFECT_HP_EV;
+ else if (itemEffect[5] & ITEM5_EV_SPATK)
+ return ITEM_EFFECT_SPATK_EV;
+ else if (itemEffect[5] & ITEM5_EV_SPDEF)
+ return ITEM_EFFECT_SPDEF_EV;
+ else if (itemEffect[5] & ITEM5_EV_SPEED)
+ return ITEM_EFFECT_SPEED_EV;
+ else if (itemEffect[5] & ITEM5_EV_DEF)
+ return ITEM_EFFECT_DEF_EV;
+ else if (itemEffect[4] & ITEM4_EVO_STONE)
+ return ITEM_EFFECT_EVO_STONE;
+ else if (itemEffect[4] & ITEM4_PP_UP)
+ return ITEM_EFFECT_PP_UP;
+ else if (itemEffect[5] & ITEM5_PP_MAX)
+ return ITEM_EFFECT_PP_MAX;
+ else if (itemEffect[4] & (ITEM4_HEAL_PP_ALL | ITEM4_HEAL_PP_ONE))
+ return ITEM_EFFECT_HEAL_PP;
else
- return 22;
+ return ITEM_EFFECT_NONE;
}
static void sub_81B7E4C(u8 taskId)
diff --git a/src/player_pc.c b/src/player_pc.c
index 49b9cc5f5..08f24d379 100644
--- a/src/player_pc.c
+++ b/src/player_pc.c
@@ -412,9 +412,9 @@ static void PlayerPC_Mailbox(u8 taskId)
}
}
-static void PlayerPC_Decoration(u8 var)
+static void PlayerPC_Decoration(u8 taskId)
{
- sub_8126B2C(var); //DoPlayerPCDecoration(var);
+ DoPlayerRoomDecorationMenu(taskId);
}
static void PlayerPC_TurnOff(u8 taskId)
diff --git a/src/pokeblock.c b/src/pokeblock.c
index 325c2d5d0..0d8469132 100644
--- a/src/pokeblock.c
+++ b/src/pokeblock.c
@@ -32,6 +32,7 @@
#include "text_window.h"
#include "constants/items.h"
#include "constants/songs.h"
+#include "constants/rgb.h"
#define POKEBLOCK_MAX_FEEL 99
#define FIELD_E75_COUNT 7
@@ -585,7 +586,7 @@ static bool8 InitPokeblockMenu(void)
gMain.state++;
break;
case 18:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
gPaletteFade.bufferTransferDisabled = 0;
gMain.state++;
break;
@@ -948,7 +949,7 @@ static void sub_8136470(struct Sprite *sprite)
static void FadePaletteAndSetTaskToClosePokeblockCase(u8 taskId)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].func = Task_FreeDataAndExitPokeblockCase;
}
diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c
index 59ba1b4dc..4ad15414d 100644
--- a/src/pokeblock_feed.c
+++ b/src/pokeblock_feed.c
@@ -1,13 +1,14 @@
#include "global.h"
-#include "battle.h" // to get rid of once gMonSpritesGfxPtr is put elsewhere
+#include "alloc.h"
+#include "battle.h"
#include "bg.h"
-#include "data2.h"
+#include "data.h"
#include "decompress.h"
#include "event_data.h"
#include "gpu_regs.h"
#include "graphics.h"
+#include "item_menu.h"
#include "main.h"
-#include "alloc.h"
#include "menu.h"
#include "menu_helpers.h"
#include "m4a.h"
@@ -23,6 +24,7 @@
#include "text_window.h"
#include "trig.h"
#include "util.h"
+#include "constants/rgb.h"
struct PokeblockFeedStruct
{
@@ -49,10 +51,8 @@ struct PokeblockFeedStruct
u8 unused;
};
-extern u16 gSpecialVar_ItemId;
extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern const struct CompressedSpriteSheet gMonFrontPicTable[];
extern const u16 gUnknown_0860F074[];
// this file's functions
@@ -591,7 +591,7 @@ static bool8 TransitionToPokeblockFeedScene(void)
gMain.state++;
break;
case 13:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
gPaletteFade.bufferTransferDisabled = 0;
gMain.state++;
break;
@@ -805,7 +805,7 @@ static void Task_ReturnAfterPaletteFade(u8 taskId)
static void Task_PaletteFadeToReturn(u8 taskId)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].func = Task_ReturnAfterPaletteFade;
}
diff --git a/src/pokedex.c b/src/pokedex.c
index cceb50ba1..2588e2b73 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "battle_main.h"
#include "bg.h"
-#include "data2.h"
+#include "data.h"
#include "decompress.h"
#include "event_data.h"
#include "gpu_regs.h"
@@ -205,7 +205,7 @@ void blockset_load_palette_to_gpu(u8);
void sub_80C01CC(struct Sprite *sprite);
void sub_80C020C(u32, u32, u32, u32);
void sub_80C0354(u16, u8, u8);
-void sub_80C0460(u16, u8, u8);
+void sub_80C0460(u16 weight, u8 left, u8 top);
void sub_80C09B0(u16);
u8 sub_80C0B44(u8, u16, u8, u8);
void sub_80C0D30(u8, u16);
@@ -2969,7 +2969,7 @@ void sub_80BEA24(u8 taskId)
r3 = 0x14;
if (gTasks[taskId].data[1] != 0)
r3 |= (1 << (gSprites[gTasks[taskId].data[4]].oam.paletteNum + 16));
- BeginNormalPaletteFade(~r3, 0, 16, 0, 0);
+ BeginNormalPaletteFade(~r3, 0, 16, 0, RGB_BLACK);
SetVBlankCallback(gUnknown_030060B4);
gMain.state++;
}
@@ -3926,9 +3926,6 @@ void sub_80C020C(u32 num, u32 value, u32 c, u32 d)
sub_80BE8DC(text3, GetStringCenterAlignXOffset(1, text3, 0xF0), 0x5F);
}
-#define CHAR_PRIME (0xB4)
-#define CHAR_DOUBLE_PRIME (0xB2)
-
void sub_80C0354(u16 height, u8 left, u8 top)
{
u8 buffer[16];
@@ -3954,10 +3951,10 @@ void sub_80C0354(u16 height, u8 left, u8 top)
buffer[i++] = feet / 10 + CHAR_0;
buffer[i++] = (feet % 10) + CHAR_0;
}
- buffer[i++] = CHAR_PRIME;
+ buffer[i++] = CHAR_SGL_QUOT_RIGHT;
buffer[i++] = (inches / 10) + CHAR_0;
buffer[i++] = (inches % 10) + CHAR_0;
- buffer[i++] = CHAR_DOUBLE_PRIME;
+ buffer[i++] = CHAR_DBL_QUOT_RIGHT;
buffer[i++] = EOS;
sub_80BE8DC(buffer, left, top);
}
@@ -3968,12 +3965,11 @@ void sub_80C0354(u16 height, u8 left, u8 top)
void sub_80C0460(u16 weight, u8 left, u8 top)
{
u8 buffer[16];
- u32 lbs;
- u8 i = 0;
bool8 output;
+ u8 i = 0;
+ u32 lbs = (weight * 100000) / 4536;
- lbs = (weight * 100000) / 4536;
- if (lbs % 10 >= 5)
+ if (lbs % 10u >= 5)
lbs += 10;
output = FALSE;
@@ -3988,9 +3984,9 @@ void sub_80C0460(u16 weight, u8 left, u8 top)
i++;
}
- lbs = (lbs % 100000);
+ lbs %= 100000;
buffer[i] = (lbs / 10000) + CHAR_0;
- if (buffer[i] == CHAR_0 && output == FALSE)
+ if (buffer[i] == CHAR_0 && !output)
{
buffer[i++] = 0x77;
}
@@ -4000,9 +3996,9 @@ void sub_80C0460(u16 weight, u8 left, u8 top)
i++;
}
- lbs = (lbs % 10000);
+ lbs %= 10000;
buffer[i] = (lbs / 1000) + CHAR_0;
- if (buffer[i] == CHAR_0 && output == FALSE)
+ if (buffer[i] == CHAR_0 && !output)
{
buffer[i++] = 0x77;
}
@@ -4010,9 +4006,10 @@ void sub_80C0460(u16 weight, u8 left, u8 top)
{
i++;
}
- lbs = (lbs % 1000);
+
+ lbs %= 1000;
buffer[i++] = (lbs / 100) + CHAR_0;
- lbs = (lbs % 100);
+ lbs %= 100;
buffer[i++] = CHAR_PERIOD;
buffer[i++] = (lbs / 10) + CHAR_0;
buffer[i++] = CHAR_SPACE;
@@ -4042,7 +4039,7 @@ void sub_80C0460(u16 weight, u8 left, u8 top)
lsls r2, 24\n\
lsrs r2, 24\n\
str r2, [sp, 0x10]\n\
- ldr r5, =0x000186a0 @ Note to decompiler: See UNKNOWN_OFFSET\n\
+ ldr r5, =0x000186a0\n\
muls r0, r5\n\
ldr r1, =0x000011b8\n\
bl __divsi3\n\
@@ -4076,7 +4073,7 @@ _080C04C0:\n\
mov r8, r1\n\
movs r6, 0x1\n\
_080C04C6:\n\
- ldr r1, =0x000186a0 @ Note to decompiler: See UNKNOWN_OFFSET\n\
+ ldr r1, =0x000186a0\n\
adds r0, r7, 0\n\
bl __umodsi3\n\
adds r7, r0, 0\n\
diff --git a/src/pokemon.c b/src/pokemon.c
index a75701cb0..4479fa448 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -9,6 +9,7 @@
#include "battle_pyramid.h"
#include "battle_setup.h"
#include "battle_tower.h"
+#include "data.h"
#include "event_data.h"
#include "evolution_scene.h"
#include "field_specials.h"
@@ -38,6 +39,7 @@
#include "constants/battle_frontier.h"
#include "constants/battle_move_effects.h"
#include "constants/hold_effects.h"
+#include "constants/item_effects.h"
#include "constants/items.h"
#include "constants/layouts.h"
#include "constants/moves.h"
@@ -51,29 +53,6 @@ struct SpeciesItem
u16 item;
};
-extern const struct SpriteFrameImage gUnknown_082FF3A8[];
-extern const struct SpriteFrameImage gUnknown_082FF3C8[];
-extern const struct SpriteFrameImage gUnknown_082FF3E8[];
-extern const struct SpriteFrameImage gUnknown_082FF408[];
-extern const struct SpriteFrameImage gTrainerBackPicTable_Brendan[];
-extern const struct SpriteFrameImage gTrainerBackPicTable_May[];
-extern const struct SpriteFrameImage gTrainerBackPicTable_Red[];
-extern const struct SpriteFrameImage gTrainerBackPicTable_Leaf[];
-extern const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireBrendan[];
-extern const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireMay[];
-extern const struct SpriteFrameImage gTrainerBackPicTable_Wally[];
-extern const struct SpriteFrameImage gTrainerBackPicTable_Steven[];
-extern const union AffineAnimCmd *const gUnknown_082FF618[];
-extern const union AffineAnimCmd *const gUnknown_082FF694[];
-extern const union AnimCmd *gPlayerMonSpriteAnimsTable[];
-extern const union AnimCmd *const *const gMonAnimationsSpriteAnimsPtrTable[];
-extern const union AnimCmd *const *const gTrainerBackAnimsPtrTable[];
-extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[];
-extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1];
-extern const struct CompressedSpritePalette gMonPaletteTable[];
-extern const struct CompressedSpritePalette gMonShinyPaletteTable[];
-extern const u8 gTrainerClassNames[][13];
-
// this file's functions
static u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon);
static union PokemonSubstruct *GetSubstruct(struct BoxPokemon *boxMon, u32 personality, u8 substructType);
@@ -3315,7 +3294,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
}
// flash fire triggered
- if ((gBattleResources->flags->flags[battlerIdAtk] & UNKNOWN_FLAG_FLASH_FIRE) && type == TYPE_FIRE)
+ if ((gBattleResources->flags->flags[battlerIdAtk] & RESOURCE_FLAG_FLASH_FIRE) && type == TYPE_FIRE)
damage = (15 * damage) / 10;
}
@@ -3435,7 +3414,7 @@ u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality)
return MON_MALE;
}
-void SetMultiuseSpriteTemplateToPokemon(u16 species, u8 battlerPosition)
+void SetMultiuseSpriteTemplateToPokemon(u16 speciesTag, u8 battlerPosition)
{
if (gMonSpritesGfxPtr != NULL)
gMultiuseSpriteTemplate = gMonSpritesGfxPtr->templates[battlerPosition];
@@ -3446,13 +3425,13 @@ void SetMultiuseSpriteTemplateToPokemon(u16 species, u8 battlerPosition)
else
gMultiuseSpriteTemplate = gUnknown_08329D98[battlerPosition];
- gMultiuseSpriteTemplate.paletteTag = species;
+ gMultiuseSpriteTemplate.paletteTag = speciesTag;
if (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_PLAYER_RIGHT)
- gMultiuseSpriteTemplate.anims = gPlayerMonSpriteAnimsTable;
- else if (species > 500)
- gMultiuseSpriteTemplate.anims = gMonAnimationsSpriteAnimsPtrTable[species - 500];
+ gMultiuseSpriteTemplate.anims = gUnknown_082FF70C;
+ else if (speciesTag > SPECIES_SHINY_TAG)
+ gMultiuseSpriteTemplate.anims = gMonFrontAnimsPtrTable[speciesTag - SPECIES_SHINY_TAG];
else
- gMultiuseSpriteTemplate.anims = gMonAnimationsSpriteAnimsPtrTable[species];
+ gMultiuseSpriteTemplate.anims = gMonFrontAnimsPtrTable[speciesTag];
}
void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosition)
@@ -3663,7 +3642,8 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
struct PokemonSubstruct2 *substruct2 = NULL;
struct PokemonSubstruct3 *substruct3 = NULL;
- if (field > MON_DATA_10)
+ // Any field greater than MON_DATA_ENCRYPT_SEPARATOR is encrypted and must be treated as such
+ if (field > MON_DATA_ENCRYPT_SEPARATOR)
{
substruct0 = &(GetSubstruct(boxMon, boxMon->personality, 0)->type0);
substruct1 = &(GetSubstruct(boxMon, boxMon->personality, 1)->type1);
@@ -3757,7 +3737,7 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
case MON_DATA_CHECKSUM:
retVal = boxMon->checksum;
break;
- case MON_DATA_10:
+ case MON_DATA_ENCRYPT_SEPARATOR:
retVal = boxMon->unknown;
break;
case MON_DATA_SPECIES:
@@ -3998,7 +3978,7 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
break;
}
- if (field > MON_DATA_10)
+ if (field > MON_DATA_ENCRYPT_SEPARATOR)
EncryptBoxMon(boxMon);
return retVal;
@@ -4061,7 +4041,7 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg)
struct PokemonSubstruct2 *substruct2 = NULL;
struct PokemonSubstruct3 *substruct3 = NULL;
- if (field > MON_DATA_10)
+ if (field > MON_DATA_ENCRYPT_SEPARATOR)
{
substruct0 = &(GetSubstruct(boxMon, boxMon->personality, 0)->type0);
substruct1 = &(GetSubstruct(boxMon, boxMon->personality, 1)->type1);
@@ -4120,7 +4100,7 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg)
case MON_DATA_CHECKSUM:
SET16(boxMon->checksum);
break;
- case MON_DATA_10:
+ case MON_DATA_ENCRYPT_SEPARATOR:
SET16(boxMon->unknown);
break;
case MON_DATA_SPECIES:
@@ -4316,7 +4296,7 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg)
break;
}
- if (field > MON_DATA_10)
+ if (field > MON_DATA_ENCRYPT_SEPARATOR)
{
boxMon->checksum = CalculateBoxMonChecksum(boxMon);
EncryptBoxMon(boxMon);
@@ -4466,7 +4446,7 @@ u8 GetMonAbility(struct Pokemon *mon)
return GetAbilityBySpecies(species, altAbility);
}
-void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord)
+void CreateSecretBaseEnemyParty(struct SecretBase *secretBaseRecord)
{
s32 i, j;
@@ -4686,9 +4666,9 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
battlerId = MAX_BATTLERS_COUNT;
}
- if (!IS_POKEMON_ITEM(item))
+ if (!ITEM_HAS_EFFECT(item))
return TRUE;
- if (gItemEffectTable[item - 13] == NULL && item != ITEM_ENIGMA_BERRY)
+ if (gItemEffectTable[item - ITEM_POTION] == NULL && item != ITEM_ENIGMA_BERRY)
return TRUE;
if (item == ITEM_ENIGMA_BERRY)
@@ -4700,82 +4680,82 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
}
else
{
- itemEffect = gItemEffectTable[item - 13];
+ itemEffect = gItemEffectTable[item - ITEM_POTION];
}
for (cmdIndex = 0; cmdIndex < 6; cmdIndex++)
{
switch (cmdIndex)
{
- // status healing effects
+ // infatuation heal, x attack, sacred ash and dire hit
case 0:
- if ((itemEffect[cmdIndex] & 0x80)
- && gMain.inBattle && battlerId != 4 && (gBattleMons[battlerId].status2 & STATUS2_INFATUATION))
+ if ((itemEffect[cmdIndex] & ITEM0_INFATUATION)
+ && gMain.inBattle && battlerId != MAX_BATTLERS_COUNT && (gBattleMons[battlerId].status2 & STATUS2_INFATUATION))
{
gBattleMons[battlerId].status2 &= ~STATUS2_INFATUATION;
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & 0x30)
+ if ((itemEffect[cmdIndex] & ITEM0_HIGH_CRIT)
&& !(gBattleMons[gActiveBattler].status2 & STATUS2_FOCUS_ENERGY))
{
gBattleMons[gActiveBattler].status2 |= STATUS2_FOCUS_ENERGY;
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & 0xF)
+ if ((itemEffect[cmdIndex] & ITEM0_X_ATTACK)
&& gBattleMons[gActiveBattler].statStages[STAT_ATK] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_ATK] += itemEffect[cmdIndex] & 0xF;
+ gBattleMons[gActiveBattler].statStages[STAT_ATK] += itemEffect[cmdIndex] & ITEM0_X_ATTACK;
if (gBattleMons[gActiveBattler].statStages[STAT_ATK] > 12)
gBattleMons[gActiveBattler].statStages[STAT_ATK] = 12;
retVal = FALSE;
}
break;
- // in-battle stat boosting effects?
+ // in-battle stat boosting effects
case 1:
- if ((itemEffect[cmdIndex] & 0xF0)
+ if ((itemEffect[cmdIndex] & ITEM1_X_DEFEND)
&& gBattleMons[gActiveBattler].statStages[STAT_DEF] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_DEF] += (itemEffect[cmdIndex] & 0xF0) >> 4;
+ gBattleMons[gActiveBattler].statStages[STAT_DEF] += (itemEffect[cmdIndex] & ITEM1_X_DEFEND) >> 4;
if (gBattleMons[gActiveBattler].statStages[STAT_DEF] > 12)
gBattleMons[gActiveBattler].statStages[STAT_DEF] = 12;
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & 0xF)
+ if ((itemEffect[cmdIndex] & ITEM1_X_SPEED)
&& gBattleMons[gActiveBattler].statStages[STAT_SPEED] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_SPEED] += itemEffect[cmdIndex] & 0xF;
+ gBattleMons[gActiveBattler].statStages[STAT_SPEED] += itemEffect[cmdIndex] & ITEM1_X_SPEED;
if (gBattleMons[gActiveBattler].statStages[STAT_SPEED] > 12)
gBattleMons[gActiveBattler].statStages[STAT_SPEED] = 12;
retVal = FALSE;
}
break;
- // more stat boosting effects?
+ // more stat boosting effects
case 2:
- if ((itemEffect[cmdIndex] & 0xF0)
+ if ((itemEffect[cmdIndex] & ITEM2_X_ACCURACY)
&& gBattleMons[gActiveBattler].statStages[STAT_ACC] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_ACC] += (itemEffect[cmdIndex] & 0xF0) >> 4;
+ gBattleMons[gActiveBattler].statStages[STAT_ACC] += (itemEffect[cmdIndex] & ITEM2_X_ACCURACY) >> 4;
if (gBattleMons[gActiveBattler].statStages[STAT_ACC] > 12)
gBattleMons[gActiveBattler].statStages[STAT_ACC] = 12;
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & 0xF)
+ if ((itemEffect[cmdIndex] & ITEM2_X_SPATK)
&& gBattleMons[gActiveBattler].statStages[STAT_SPATK] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_SPATK] += itemEffect[cmdIndex] & 0xF;
+ gBattleMons[gActiveBattler].statStages[STAT_SPATK] += itemEffect[cmdIndex] & ITEM2_X_SPATK;
if (gBattleMons[gActiveBattler].statStages[STAT_SPATK] > 12)
gBattleMons[gActiveBattler].statStages[STAT_SPATK] = 12;
retVal = FALSE;
}
break;
case 3:
- if ((itemEffect[cmdIndex] & 0x80)
+ if ((itemEffect[cmdIndex] & ITEM3_MIST)
&& gSideTimers[GetBattlerSide(gActiveBattler)].mistTimer == 0)
{
gSideTimers[GetBattlerSide(gActiveBattler)].mistTimer = 5;
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & 0x40) // raise level
+ if ((itemEffect[cmdIndex] & ITEM3_LEVEL_UP)
&& GetMonData(mon, MON_DATA_LEVEL, NULL) != MAX_LEVEL)
{
dataUnsigned = gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(mon, MON_DATA_LEVEL, NULL) + 1];
@@ -4783,23 +4763,23 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
CalculateMonStats(mon);
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & 0x20)
+ if ((itemEffect[cmdIndex] & ITEM3_SLEEP)
&& HealStatusConditions(mon, partyIndex, 7, battlerId) == 0)
{
if (battlerId != 4)
gBattleMons[battlerId].status2 &= ~STATUS2_NIGHTMARE;
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & 0x10) && HealStatusConditions(mon, partyIndex, STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER, battlerId) == 0)
+ if ((itemEffect[cmdIndex] & ITEM3_POISON) && HealStatusConditions(mon, partyIndex, STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER, battlerId) == 0)
retVal = FALSE;
- if ((itemEffect[cmdIndex] & 8) && HealStatusConditions(mon, partyIndex, STATUS1_BURN, battlerId) == 0)
+ if ((itemEffect[cmdIndex] & ITEM3_BURN) && HealStatusConditions(mon, partyIndex, STATUS1_BURN, battlerId) == 0)
retVal = FALSE;
- if ((itemEffect[cmdIndex] & 4) && HealStatusConditions(mon, partyIndex, STATUS1_FREEZE, battlerId) == 0)
+ if ((itemEffect[cmdIndex] & ITEM3_FREEZE) && HealStatusConditions(mon, partyIndex, STATUS1_FREEZE, battlerId) == 0)
retVal = FALSE;
- if ((itemEffect[cmdIndex] & 2) && HealStatusConditions(mon, partyIndex, STATUS1_PARALYSIS, battlerId) == 0)
+ if ((itemEffect[cmdIndex] & ITEM3_PARALYSIS) && HealStatusConditions(mon, partyIndex, STATUS1_PARALYSIS, battlerId) == 0)
retVal = FALSE;
- if ((itemEffect[cmdIndex] & 1) // heal confusion
- && gMain.inBattle && battlerId != 4 && (gBattleMons[battlerId].status2 & STATUS2_CONFUSION))
+ if ((itemEffect[cmdIndex] & ITEM3_CONFUSION) // heal confusion
+ && gMain.inBattle && battlerId != MAX_BATTLERS_COUNT && (gBattleMons[battlerId].status2 & STATUS2_CONFUSION))
{
gBattleMons[battlerId].status2 &= ~STATUS2_CONFUSION;
retVal = FALSE;
@@ -4808,9 +4788,9 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
// EV, HP, and PP raising effects
case 4:
r10 = itemEffect[cmdIndex];
- if (r10 & 0x20)
+ if (r10 & ITEM4_PP_UP)
{
- r10 &= ~0x20;
+ r10 &= ~ITEM4_PP_UP;
dataUnsigned = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2);
var_38 = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex);
if (dataUnsigned <= 2 && var_38 > 4)
@@ -4833,6 +4813,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
{
case 0:
case 1:
+ // ev raise
evCount = GetMonEVCount(mon);
r5 = itemEffect[var_3C];
dataSigned = GetMonData(mon, sGetMonDataEVConstants[var_38], NULL);
@@ -4871,7 +4852,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
retVal = FALSE;
break;
case 2:
- // revive?
+ // revive
if (r10 & 0x10)
{
if (GetMonData(mon, MON_DATA_HP, NULL) != 0)
@@ -4952,6 +4933,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
r10 &= 0xEF;
break;
case 3:
+ // Heal pp in all moves.
if (!(r10 & 2))
{
for (r5 = 0; (signed)(r5) < (signed)(4); r5++)
@@ -4971,7 +4953,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
}
SetMonData(mon, MON_DATA_PP1 + r5, &dataUnsigned);
if (gMain.inBattle
- && battlerId != 4 && !(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED)
+ && battlerId != MAX_BATTLERS_COUNT && !(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED)
&& !(gDisableStructs[battlerId].mimickedMoves & gBitTable[r5]))
gBattleMons[battlerId].pp[r5] = dataUnsigned;
retVal = FALSE;
@@ -4979,6 +4961,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
}
var_3C++;
}
+ // Heal pp in one move.
else
{
u16 moveId;
@@ -5003,6 +4986,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
}
}
break;
+ // Evolution stone
case 7:
{
u16 targetSpecies = GetEvolutionTargetSpecies(mon, 2, item);
@@ -5020,6 +5004,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
r10 >>= 1;
}
break;
+ // EV and friendship
case 5:
r10 = itemEffect[cmdIndex];
var_38 = 0;
@@ -5202,7 +5187,7 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit)
offset = 6;
- temp = gItemEffectTable[itemId - 13];
+ temp = gItemEffectTable[itemId - ITEM_POTION];
if (!temp && itemId != ITEM_ENIGMA_BERRY)
return 0;
@@ -5227,8 +5212,8 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit)
break;
case 4:
val = itemEffect[4];
- if (val & 0x20)
- val &= 0xDF;
+ if (val & ITEM4_PP_UP)
+ val &= ~(ITEM4_PP_UP);
j = 0;
while (val)
{
@@ -5326,7 +5311,7 @@ u8 *sub_806CF78(u16 itemId)
}
else
{
- itemEffect = gItemEffectTable[itemId - 13];
+ itemEffect = gItemEffectTable[itemId - ITEM_POTION];
}
gPotentialItemEffectBattler = gBattlerInMenuId;
@@ -5349,7 +5334,7 @@ u8 *sub_806CF78(u16 itemId)
}
}
- if (itemEffect[3] & 0x80)
+ if (itemEffect[3] & ITEM3_MIST)
{
gBattlerAttacker = gBattlerInMenuId;
BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnShroudedInMist);
@@ -6819,7 +6804,7 @@ static void sub_806F1FC(struct Unknown_806F160_Struct* structPtr)
structPtr->frameImages[i * structPtr->field_0_0 + j].data = &structPtr->byteArrays[i][j * 0x800];
}
structPtr->templates[i].images = &structPtr->frameImages[i * structPtr->field_0_0];
- structPtr->templates[i].anims = gPlayerMonSpriteAnimsTable;
+ structPtr->templates[i].anims = gUnknown_082FF70C;
structPtr->templates[i].paletteTag = i;
}
}
diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c
new file mode 100755
index 000000000..4a457adc4
--- /dev/null
+++ b/src/pokemon_jump.c
@@ -0,0 +1,2406 @@
+#include "global.h"
+#include "alloc.h"
+#include "data.h"
+#include "decompress.h"
+#include "event_data.h"
+#include "item.h"
+#include "link.h"
+#include "link_rfu.h"
+#include "main.h"
+#include "menu.h"
+#include "palette.h"
+#include "random.h"
+#include "save.h"
+#include "sound.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "task.h"
+#include "trig.h"
+#include "pokemon.h"
+#include "pokemon_jump.h"
+#include "constants/rgb.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+
+struct PokemonJump1_MonInfo
+{
+ u16 species;
+ u32 otId;
+ u32 personality;
+};
+
+struct PokemonJump1_82E4
+{
+ int unk0;
+ int unk4;
+ u8 filler8[0x4];
+ u16 unkC;
+ u16 unkE;
+ u16 unk10;
+ u16 unk12;
+ int unk14;
+ int unk18;
+ u8 unk1C[11];
+};
+
+struct PokemonJump1
+{
+ MainCallback returnCallback;
+ u8 unk4;
+ u8 unk5;
+ u8 unk6;
+ u8 unk7;
+ u16 unk8;
+ u16 unkA;
+ u16 unkC;
+ u16 unkE;
+ int unk10;
+ u32 unk14;
+ u32 unk18;
+ int unk1C;
+ u32 unk20;
+ u32 unk24;
+ u32 unk28;
+ int unk2C;
+ u32 unk30;
+ u16 unk34;
+ u16 unk36;
+ u8 filler38[0x2];
+ u16 unk3A;
+ u16 unk3C;
+ u16 unk3E;
+ u16 unk40;
+ u16 unk42;
+ u8 unk44;
+ u8 unk45;
+ u8 unk46;
+ u8 isLeader;
+ u8 unk48;
+ u8 unk49;
+ u16 unk4A;
+ u8 unk4C;
+ u8 unk4D;
+ u16 unk4E;
+ u8 unk50;
+ u8 unk51;
+ u8 filler52[0x2];
+ int unk54;
+ int unk58;
+ int unk5C;
+ int unk60;
+ int unk64;
+ int unk68;
+ int unk6C;
+ u8 unk70;
+ u8 unk71;
+ u16 unk72;
+ u16 unk74;
+ u32 unk78;
+ u8 unk7C[MAX_RFU_PLAYERS];
+ u8 unk81[MAX_RFU_PLAYERS];
+ u8 unk86[MAX_RFU_PLAYERS];
+ u8 unk8B[MAX_RFU_PLAYERS];
+ u16 unk90[MAX_RFU_PLAYERS];
+ u16 unk9A[MAX_RFU_PLAYERS];
+ void **unkA4;
+ u8 fillerA8[0x8200];
+ struct PokemonJump1_MonInfo unk82A8[MAX_RFU_PLAYERS];
+ struct PokemonJump1_82E4 unk82E4[MAX_RFU_PLAYERS];
+ struct PokemonJump1_82E4 *unk83AC;
+};
+
+struct PokemonJumpMons
+{
+ u16 species;
+ u16 unk2;
+};
+
+struct Unk802B078
+{
+ u8 unk0;
+ u8 unk1;
+ u16 unk2;
+ u16 unk4;
+ u16 unk6;
+ int unk8;
+};
+
+
+struct PokemonJump2
+{
+ u8 filler0[0xE];
+ u8 unkE;
+ u8 unkF;
+ u8 filler10[0x8198];
+ struct Sprite *unk81A8[MAX_RFU_PLAYERS];
+ struct Sprite *unk81BC[MAX_RFU_PLAYERS];
+ struct Sprite *unk81D0[8];
+ u8 filler81F0[0xC];
+ u8 unk81FC[MAX_RFU_PLAYERS];
+};
+
+static void sub_802AA60(struct PokemonJump1 *);
+void sub_802AA94(struct PokemonJump1 *);
+void sub_802AB20(void);
+static void sub_802AB98(void);
+static s16 sub_802AC00(u16 species);
+static void sub_802AC2C(struct PokemonJump1_MonInfo *monInfo, struct Pokemon *mon);
+static void sub_802AC6C(void);
+static void sub_802ACA0(u8 taskId);
+static void sub_802AF80(u8 taskId);
+static void sub_802B008(void);
+static void sub_802B194(u8 taskId);
+static void sub_802B1FC(void);
+static bool32 sub_802B248(void);
+static bool32 sub_802B2D4(void);
+static bool32 sub_802B368(void);
+static bool32 sub_802B3D4(void);
+static bool32 sub_802B470(void);
+static bool32 sub_802B4CC(void);
+static bool32 sub_802B568(void);
+static bool32 sub_802B5C8(void);
+static bool32 sub_802B628(void);
+static bool32 sub_802B664(void);
+static bool32 sub_802B6B8(void);
+static bool32 sub_802B704(void);
+static bool32 sub_802B720(void);
+static bool32 sub_802B7E0(void);
+static bool32 sub_802B8CC(void);
+static bool32 sub_802B964(void);
+static bool32 sub_802B29C(void);
+static bool32 sub_802B31C(void);
+static bool32 sub_802B3B4(void);
+static bool32 sub_802BA58(void);
+static bool32 sub_802BB84(void);
+static bool32 sub_802BC60(void);
+static bool32 sub_802BD30(void);
+static void sub_802BD84(u8 taskId);
+static void sub_802BE60(TaskFunc func, u8 taskPriority);
+static void sub_802BE80(void);
+static void sub_802BEA0(void);
+static void sub_802BEE4(void);
+static int sub_802BF48(void);
+static void sub_802BF7C(void);
+static int sub_802C098(void);
+static void sub_802C0B8(void);
+static void sub_802C0E8(void);
+static void sub_802C114(void);
+static bool32 sub_802C130(u16);
+static void sub_802C164(void);
+static void sub_802C1DC(void);
+static void sub_802C240(void);
+static void sub_802C260(void);
+static void sub_802C270(void);
+static void sub_802C280(void);
+static void sub_802C398(int);
+static void sub_802C43C(void);
+static bool32 sub_802C538(void);
+static bool32 sub_802C5DC(void);
+static bool32 sub_802C618(void);
+static bool32 sub_802C650(void);
+static void sub_802C688(int);
+static int sub_802C6B0(void);
+static bool32 sub_802C70C(void);
+static int sub_802C73C(u8 *);
+static void sub_802C780(void);
+static int sub_802C790(int);
+static void sub_802C7A0(u16);
+static bool32 sub_802C7BC(void);
+static u16 sub_802C7E0(void);
+static void sub_802C808(u16, u16 *, u16 *);
+static u16 sub_802C818(void);
+static u16 sub_802C838(void);
+static u16 sub_802C880(u16 item, u16 quantity);
+static void sub_802CB7C(struct Sprite *sprite);
+static void sub_802CC40(struct Sprite *sprite);
+static void sub_802CD08(struct Sprite *sprite);
+static void sub_802CDD4(struct Sprite *sprite);
+void sub_802DC9C(u32);
+void sub_802D074(void *);
+void sub_802D0AC(void);
+void sub_802D0C8(int);
+int sub_802D0F0(void);
+void sub_802D764(void);
+bool32 sub_802D788(void);
+void sub_802D7E8(u16, u16);
+void sub_802D884(u16);
+void sub_802D8FC(u16);
+bool32 sub_802D974(void);
+void sub_802DA14(void);
+void sub_802DC80(int, s8);
+void sub_802DD88(u8);
+bool32 sub_802DA44(void);
+void sub_802DD64(int);
+s8 sub_802DA8C(void);
+int sub_802DCCC(u8);
+void sub_802DD74(u16);
+void sub_802DDA0(u8);
+int sub_802DDB8(int);
+void sub_802DDCC(void);
+void sub_802DDE0(void);
+void sub_802DDF4(int);
+int sub_802DE08(void);
+void sub_802E0AC(struct PokemonJump1_MonInfo *);
+bool32 sub_802E0D0(int, struct PokemonJump1_MonInfo *);
+void sub_802E138(struct PokemonJump1_82E4 *, u8 *);
+bool32 sub_802E1BC(struct PokemonJump1_82E4 *, struct Unk802B078 *);
+void sub_802E234(struct PokemonJump1_82E4 *, u8 , u16);
+bool32 sub_802E264(struct PokemonJump1_82E4 *, int, u8 *, u16 *);
+bool32 sub_802E2D0(struct PokemonJump1_82E4 *, int);
+int sub_802E354(int, u16, u16);
+void sub_802E3A8(void);
+
+extern struct PokemonJump1 *gUnknown_02022CFC;
+extern struct PokemonJump2 *gUnknown_02022D00;
+
+const struct PokemonJumpMons gPkmnJumpSpecies[] =
+{
+ { .species = SPECIES_BULBASAUR, .unk2 = 2, },
+ { .species = SPECIES_CHARMANDER, .unk2 = 1, },
+ { .species = SPECIES_SQUIRTLE, .unk2 = 0, },
+ { .species = SPECIES_CATERPIE, .unk2 = 1, },
+ { .species = SPECIES_METAPOD, .unk2 = 1, },
+ { .species = SPECIES_WEEDLE, .unk2 = 1, },
+ { .species = SPECIES_KAKUNA, .unk2 = 1, },
+ { .species = SPECIES_RATTATA, .unk2 = 1, },
+ { .species = SPECIES_RATICATE, .unk2 = 1, },
+ { .species = SPECIES_PIKACHU, .unk2 = 0, },
+ { .species = SPECIES_SANDSHREW, .unk2 = 0, },
+ { .species = SPECIES_NIDORAN_F, .unk2 = 0, },
+ { .species = SPECIES_NIDORAN_M, .unk2 = 0, },
+ { .species = SPECIES_CLEFAIRY, .unk2 = 0, },
+ { .species = SPECIES_VULPIX, .unk2 = 0, },
+ { .species = SPECIES_JIGGLYPUFF, .unk2 = 2, },
+ { .species = SPECIES_ODDISH, .unk2 = 2, },
+ { .species = SPECIES_PARAS, .unk2 = 1, },
+ { .species = SPECIES_MEOWTH, .unk2 = 0, },
+ { .species = SPECIES_PSYDUCK, .unk2 = 2, },
+ { .species = SPECIES_MANKEY, .unk2 = 1, },
+ { .species = SPECIES_GROWLITHE, .unk2 = 1, },
+ { .species = SPECIES_POLIWAG, .unk2 = 2, },
+ { .species = SPECIES_BELLSPROUT, .unk2 = 2, },
+ { .species = SPECIES_SHELLDER, .unk2 = 1, },
+ { .species = SPECIES_KRABBY, .unk2 = 1, },
+ { .species = SPECIES_EXEGGCUTE, .unk2 = 2, },
+ { .species = SPECIES_CUBONE, .unk2 = 0, },
+ { .species = SPECIES_DITTO, .unk2 = 2, },
+ { .species = SPECIES_EEVEE, .unk2 = 0, },
+ { .species = SPECIES_OMANYTE, .unk2 = 1, },
+ { .species = SPECIES_KABUTO, .unk2 = 1, },
+ { .species = SPECIES_CHIKORITA, .unk2 = 2, },
+ { .species = SPECIES_CYNDAQUIL, .unk2 = 1, },
+ { .species = SPECIES_TOTODILE, .unk2 = 0, },
+ { .species = SPECIES_SPINARAK, .unk2 = 1, },
+ { .species = SPECIES_PICHU, .unk2 = 0, },
+ { .species = SPECIES_CLEFFA, .unk2 = 0, },
+ { .species = SPECIES_IGGLYBUFF, .unk2 = 2, },
+ { .species = SPECIES_TOGEPI, .unk2 = 2, },
+ { .species = SPECIES_MAREEP, .unk2 = 0, },
+ { .species = SPECIES_BELLOSSOM, .unk2 = 2, },
+ { .species = SPECIES_MARILL, .unk2 = 2, },
+ { .species = SPECIES_SUNKERN, .unk2 = 2, },
+ { .species = SPECIES_WOOPER, .unk2 = 2, },
+ { .species = SPECIES_PINECO, .unk2 = 2, },
+ { .species = SPECIES_SNUBBULL, .unk2 = 0, },
+ { .species = SPECIES_SHUCKLE, .unk2 = 2, },
+ { .species = SPECIES_TEDDIURSA, .unk2 = 0, },
+ { .species = SPECIES_SLUGMA, .unk2 = 2, },
+ { .species = SPECIES_SWINUB, .unk2 = 0, },
+ { .species = SPECIES_HOUNDOUR, .unk2 = 1, },
+ { .species = SPECIES_PHANPY, .unk2 = 0, },
+ { .species = SPECIES_PORYGON2, .unk2 = 0, },
+ { .species = SPECIES_TYROGUE, .unk2 = 1, },
+ { .species = SPECIES_SMOOCHUM, .unk2 = 2, },
+ { .species = SPECIES_ELEKID, .unk2 = 1, },
+ { .species = SPECIES_MAGBY, .unk2 = 1, },
+ { .species = SPECIES_LARVITAR, .unk2 = 1, },
+ { .species = SPECIES_TREECKO, .unk2 = 1, },
+ { .species = SPECIES_TORCHIC, .unk2 = 2, },
+ { .species = SPECIES_MUDKIP, .unk2 = 0, },
+ { .species = SPECIES_MARSHTOMP, .unk2 = 0, },
+ { .species = SPECIES_POOCHYENA, .unk2 = 1, },
+ { .species = SPECIES_ZIGZAGOON, .unk2 = 0, },
+ { .species = SPECIES_LINOONE, .unk2 = 0, },
+ { .species = SPECIES_WURMPLE, .unk2 = 1, },
+ { .species = SPECIES_SILCOON, .unk2 = 2, },
+ { .species = SPECIES_CASCOON, .unk2 = 2, },
+ { .species = SPECIES_LOTAD, .unk2 = 2, },
+ { .species = SPECIES_SEEDOT, .unk2 = 1, },
+ { .species = SPECIES_RALTS, .unk2 = 0, },
+ { .species = SPECIES_KIRLIA, .unk2 = 0, },
+ { .species = SPECIES_SURSKIT, .unk2 = 2, },
+ { .species = SPECIES_SHROOMISH, .unk2 = 2, },
+ { .species = SPECIES_NINCADA, .unk2 = 1, },
+ { .species = SPECIES_WHISMUR, .unk2 = 0, },
+ { .species = SPECIES_AZURILL, .unk2 = 2, },
+ { .species = SPECIES_SKITTY, .unk2 = 0, },
+ { .species = SPECIES_SABLEYE, .unk2 = 0, },
+ { .species = SPECIES_MAWILE, .unk2 = 0, },
+ { .species = SPECIES_ARON, .unk2 = 1, },
+ { .species = SPECIES_MEDITITE, .unk2 = 2, },
+ { .species = SPECIES_ELECTRIKE, .unk2 = 1, },
+ { .species = SPECIES_PLUSLE, .unk2 = 1, },
+ { .species = SPECIES_MINUN, .unk2 = 1, },
+ { .species = SPECIES_VOLBEAT, .unk2 = 0, },
+ { .species = SPECIES_ILLUMISE, .unk2 = 0, },
+ { .species = SPECIES_ROSELIA, .unk2 = 2, },
+ { .species = SPECIES_GULPIN, .unk2 = 2, },
+ { .species = SPECIES_NUMEL, .unk2 = 2, },
+ { .species = SPECIES_TORKOAL, .unk2 = 2, },
+ { .species = SPECIES_SPOINK, .unk2 = 0, },
+ { .species = SPECIES_TRAPINCH, .unk2 = 2, },
+ { .species = SPECIES_CACNEA, .unk2 = 2, },
+ { .species = SPECIES_ANORITH, .unk2 = 1, },
+ { .species = SPECIES_WYNAUT, .unk2 = 0, },
+ { .species = SPECIES_SNORUNT, .unk2 = 0, },
+ { .species = SPECIES_CLAMPERL, .unk2 = 1, },
+ { .species = SPECIES_BAGON, .unk2 = 1, },
+};
+
+bool32 (* const gUnknown_082FB5F4[])(void) =
+{
+ sub_802B248,
+ sub_802B2D4,
+ sub_802B368,
+ sub_802B3D4,
+ sub_802B4CC,
+ sub_802B5C8,
+ sub_802B664,
+ sub_802B6B8,
+ sub_802B720,
+};
+
+bool32 (* const gUnknown_082FB618[])(void) =
+{
+ sub_802B29C,
+ sub_802B31C,
+ sub_802B3B4,
+ sub_802B470,
+ sub_802B568,
+ sub_802B628,
+ sub_802B664,
+ sub_802B704,
+ sub_802B720,
+};
+
+extern const u16 gUnknown_082FB63C[];
+extern const u16 gUnknown_082FB64C[4];
+extern const u16 gUnknown_082FB654[];
+extern const s8 gUnknown_082FB65C[][48];
+extern const int gUnknown_082FB6EC[];
+extern const int gUnknown_082FB714[];
+extern const u16 gUnknown_082FB704[8];
+extern const struct CompressedSpriteSheet gUnknown_082FBE08[5];
+extern const struct SpritePalette gUnknown_082FBE30[2];
+extern const struct SpriteTemplate gUnknown_082FBE40;
+extern const struct SpriteTemplate gUnknown_082FC00C;
+extern const s16 gUnknown_082FBE58[];
+extern const s16 gUnknown_082FBEA8[8];
+extern const struct SpriteTemplate gUnknown_082FBEB8[4];
+
+void sub_802A9A8(u16 partyIndex, MainCallback callback)
+{
+ u8 taskId;
+
+ if (gReceivedRemoteLinkPlayers)
+ {
+ gUnknown_02022CFC = Alloc(sizeof(*gUnknown_02022CFC));
+ if (gUnknown_02022CFC)
+ {
+ ResetTasks();
+ taskId = CreateTask(sub_802ACA0, 1);
+ gUnknown_02022CFC->unk8 = 0;
+ gUnknown_02022CFC->returnCallback = callback;
+ gUnknown_02022CFC->unk4 = taskId;
+ gUnknown_02022CFC->unk6 = GetMultiplayerId();
+ sub_802AC2C(&gUnknown_02022CFC->unk82A8[gUnknown_02022CFC->unk6], &gPlayerParty[partyIndex]);
+ sub_802AA60(gUnknown_02022CFC);
+ SetWordTaskArg(taskId, 2, (u32)gUnknown_02022CFC);
+ SetMainCallback2(sub_802AC6C);
+ return;
+ }
+ }
+
+ SetMainCallback2(callback);
+}
+
+static void sub_802AA48(void)
+{
+ sub_802D0AC();
+ Free(gUnknown_02022CFC);
+}
+
+static void sub_802AA60(struct PokemonJump1 *arg0)
+{
+ arg0->unk5 = GetLinkPlayerCount();
+ arg0->unk70 = 5;
+ arg0->unk72 = 0;
+ sub_802AB20();
+ sub_802AA94(arg0);
+ if (arg0->unk5 == MAX_RFU_PLAYERS)
+ sub_802E3A8();
+}
+
+void sub_802AA94(struct PokemonJump1 *arg0)
+{
+ int i;
+
+ arg0->unk14 = 6;
+ arg0->unk18 = 6;
+ arg0->unk4A = 0;
+ arg0->unk1C = 0;
+ arg0->unk5C = 0;
+ arg0->isLeader = GetMultiplayerId() == 0;
+ arg0->unk8 = 0;
+ arg0->unkA = 0;
+ arg0->unkC = 0;
+ arg0->unkE = 0;
+ arg0->unk58 = 0;
+ arg0->unk3A = 0;
+ arg0->unk44 = 0;
+ arg0->unk54 = 0;
+ arg0->unk46 = 0;
+ arg0->unk49 = 0;
+ arg0->unk48 = 1;
+ arg0->unk78 = 0;
+ arg0->unk71 = 0;
+ arg0->unk74 = 0;
+ arg0->unk60 = 1;
+ arg0->unk4D = 0;
+ arg0->unk68 = 0;
+ arg0->unk64 = 0;
+ arg0->unk2C = 0;
+ arg0->unk30 = 0;
+ sub_802AB98();
+ sub_802C0E8();
+
+ for (i = 0; i < MAX_RFU_PLAYERS; i++)
+ {
+ arg0->unk7C[i] = 0;
+ arg0->unk9A[i] = 0;
+ }
+}
+
+void sub_802AB20(void)
+{
+ int i, index;
+
+ for (i = 0; i < MAX_RFU_PLAYERS; i++)
+ {
+ index = sub_802AC00(gUnknown_02022CFC->unk82A8[i].species);
+ gUnknown_02022CFC->unk82E4[i].unkC = gPkmnJumpSpecies[index].unk2;
+ }
+
+ gUnknown_02022CFC->unk83AC = &gUnknown_02022CFC->unk82E4[gUnknown_02022CFC->unk6];
+}
+
+static void sub_802AB98(void)
+{
+ int i;
+
+ for (i = 0; i < MAX_RFU_PLAYERS; i++)
+ {
+ gUnknown_02022CFC->unk82E4[i].unkE = 0;
+ gUnknown_02022CFC->unk82E4[i].unk10 = 0;
+ gUnknown_02022CFC->unk82E4[i].unk12 = 0;
+ gUnknown_02022CFC->unk82E4[i].unk0 = 0;
+ gUnknown_02022CFC->unk82E4[i].unk4 = 0x7FFFFFFF;
+ gUnknown_02022CFC->unk82E4[i].unk14 = 0;
+ gUnknown_02022CFC->unk8B[i] = 9;
+ }
+}
+
+static s16 sub_802AC00(u16 species)
+{
+ u32 i;
+ for (i = 0; i < ARRAY_COUNT(gPkmnJumpSpecies); i++)
+ {
+ if (gPkmnJumpSpecies[i].species == species)
+ return i;
+ }
+
+ return -1;
+}
+
+static void sub_802AC2C(struct PokemonJump1_MonInfo *monInfo, struct Pokemon *mon)
+{
+ monInfo->species = GetMonData(mon, MON_DATA_SPECIES);
+ monInfo->otId = GetMonData(mon, MON_DATA_OT_ID);
+ monInfo->personality = GetMonData(mon, MON_DATA_PERSONALITY);
+}
+
+static void sub_802AC58(void)
+{
+ TransferPlttBuffer();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+}
+
+static void sub_802AC6C(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_802AC84(TaskFunc func)
+{
+ gUnknown_02022CFC->unk4 = CreateTask(func, 1);
+ gUnknown_02022CFC->unk8 = 0;
+}
+
+static void sub_802ACA0(u8 taskId)
+{
+ switch (gUnknown_02022CFC->unk8)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ sub_802BE60(sub_802BD84, 5);
+ FadeOutMapMusic(4);
+ gUnknown_02022CFC->unk8++;
+ break;
+ case 1:
+ if (!FuncIsActiveTask(sub_802BD84))
+ {
+ sub_802D074(&gUnknown_02022CFC->unkA4);
+ LoadWirelessStatusIndicatorSpriteGfx();
+ CreateWirelessStatusIndicatorSprite(0, 0);
+ gUnknown_02022CFC->unk8++;
+ }
+ break;
+ case 2:
+ if (!sub_802D0F0() && IsNotWaitingForBGMStop() == TRUE)
+ {
+ FadeOutAndPlayNewMapMusic(MUS_RG_JUMP, 8);
+ gUnknown_02022CFC->unk8++;
+ }
+ break;
+ case 3:
+ if (IsLinkTaskFinished())
+ {
+ BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK);
+ SetVBlankCallback(sub_802AC58);
+ gUnknown_02022CFC->unk8++;
+ }
+ break;
+ case 4:
+ UpdatePaletteFade();
+ if (!gPaletteFade.active)
+ {
+ gUnknown_02022CFC->unk7 = 0;
+ gUnknown_02022CFC->unk8++;
+ }
+ break;
+ case 5:
+ gUnknown_02022CFC->unk7++;
+ if (gUnknown_02022CFC->unk7 >= 20)
+ {
+ if (gUnknown_02022CFC->isLeader)
+ sub_802AC84(sub_802AF80);
+ else
+ sub_802AC84(sub_802B194);
+
+ sub_802BE80();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static void sub_802AE14(int arg0)
+{
+ if (arg0 == 0)
+ {
+ gUnknown_02022CFC->unk30 = 0x1111;
+ gUnknown_02022CFC->unk2C = 1;
+ }
+ else
+ {
+ gUnknown_02022CFC->unk30 = (1 << (arg0 - 1)) - 1;
+ gUnknown_02022CFC->unk2C = 0;
+ }
+}
+
+static void sub_802AE50(u8 arg0)
+{
+ int i;
+
+ gUnknown_02022CFC->unk70 = arg0;
+ gUnknown_02022CFC->unk8 = 0;
+ gUnknown_02022CFC->unkA = 0;
+ gUnknown_02022CFC->unk48 = 1;
+ gUnknown_02022CFC->unk49 = 0;
+ for (i = 1; i < gUnknown_02022CFC->unk5; i++)
+ gUnknown_02022CFC->unk82E4[i].unk18 = 0;
+}
+
+static void sub_802AEA4(void)
+{
+ int i;
+ int count;
+ u16 var0;
+ u8 var1;
+ u16 var2;
+
+ for (i = 1, count = 0; i < gUnknown_02022CFC->unk5; i++)
+ {
+ var0 = gUnknown_02022CFC->unk82E4[i].unk10;
+ if (sub_802E264(&gUnknown_02022CFC->unk82E4[i], i, &var1, &var2))
+ {
+ gUnknown_02022CFC->unk90[i] = var2;
+ gUnknown_02022CFC->unk8B[i] = var1;
+ gUnknown_02022CFC->unk82E4[i].unk12 = var0;
+ }
+
+ if (gUnknown_02022CFC->unk82E4[i].unk18 && gUnknown_02022CFC->unk8B[i] == gUnknown_02022CFC->unk70)
+ count++;
+ }
+
+ if (count == gUnknown_02022CFC->unk5 - 1)
+ gUnknown_02022CFC->unk49 = 1;
+}
+
+static void sub_802AF80(u8 taskId)
+{
+ sub_802AEA4();
+ sub_802C43C();
+ if (!gUnknown_02022CFC->unk48 && gUnknown_02022CFC->unk49)
+ {
+ sub_802AE50(gUnknown_02022CFC->unk4C);
+ sub_802AE14(3);
+ }
+
+ if (gUnknown_02022CFC->unk48 == 1)
+ {
+ if (!gUnknown_082FB5F4[gUnknown_02022CFC->unk70]())
+ {
+ gUnknown_02022CFC->unk48 = 0;
+ gUnknown_02022CFC->unk82E4[gUnknown_02022CFC->unk6].unk18 = 1;
+ }
+ }
+
+ sub_802C1DC();
+ sub_802B008();
+}
+
+static void sub_802B008(void)
+{
+ if (!gUnknown_02022CFC->unk2C)
+ sub_802E138(gUnknown_02022CFC->unk82E4, &gUnknown_02022CFC->unk70);
+
+ if (gUnknown_02022CFC->unk30 != 0x1111)
+ {
+ gUnknown_02022CFC->unk2C++;
+ gUnknown_02022CFC->unk2C &= gUnknown_02022CFC->unk30;
+ }
+}
+
+static void sub_802B044(u8 arg0)
+{
+ gUnknown_02022CFC->unk70 = arg0;
+ gUnknown_02022CFC->unk8 = 0;
+ gUnknown_02022CFC->unkA = 0;
+ gUnknown_02022CFC->unk48 = 1;
+ gUnknown_02022CFC->unk82E4[gUnknown_02022CFC->unk6].unk18 = 0;
+}
+
+static void sub_802B078(void)
+{
+ int i;
+ u16 var0;
+ struct Unk802B078 sp0;
+
+ var0 = gUnknown_02022CFC->unk82E4[0].unk10;
+ if (sub_802E1BC(gUnknown_02022CFC->unk82E4, &sp0))
+ {
+ if (gUnknown_02022CFC->unk82E4[gUnknown_02022CFC->unk6].unk18 == 1
+ && sp0.unk0 != gUnknown_02022CFC->unk70)
+ {
+ sub_802B044(sp0.unk0);
+ }
+
+ if (gUnknown_02022CFC->unk78 != sp0.unk8)
+ {
+ gUnknown_02022CFC->unk78 = sp0.unk8;
+ gUnknown_02022CFC->unk5C = 1;
+ gUnknown_02022CFC->unk71 = sp0.unk1;
+ if (gUnknown_02022CFC->unk71)
+ gUnknown_02022CFC->unk4D = 1;
+ else
+ gUnknown_02022CFC->unk4D = 0;
+ }
+
+ gUnknown_02022CFC->unk72 = sp0.unk2;
+ gUnknown_02022CFC->unk74 = sp0.unk4;
+ gUnknown_02022CFC->unk82E4[0].unk12 = var0;
+ }
+
+ for (i = 1; i < gUnknown_02022CFC->unk5; i++)
+ {
+ if (i != gUnknown_02022CFC->unk6)
+ {
+ var0 = gUnknown_02022CFC->unk82E4[i].unk10;
+ if (sub_802E2D0(&gUnknown_02022CFC->unk82E4[i], i))
+ gUnknown_02022CFC->unk82E4[i].unk12 = var0;
+ }
+ }
+}
+
+static void sub_802B194(u8 taskId)
+{
+ sub_802B078();
+ if (gUnknown_02022CFC->unk48)
+ {
+ if (!gUnknown_082FB618[gUnknown_02022CFC->unk70]())
+ {
+ gUnknown_02022CFC->unk48 = 0;
+ gUnknown_02022CFC->unk82E4[gUnknown_02022CFC->unk6].unk18 = 1;
+ sub_802AE14(3);
+ }
+ }
+
+ sub_802C1DC();
+ sub_802B1FC();
+}
+
+static void sub_802B1FC(void)
+{
+ if (!gUnknown_02022CFC->unk2C)
+ sub_802E234(&gUnknown_02022CFC->unk82E4[gUnknown_02022CFC->unk6], gUnknown_02022CFC->unk70, gUnknown_02022CFC->unk42);
+
+ if (gUnknown_02022CFC->unk30 != 0x1111)
+ {
+ gUnknown_02022CFC->unk2C++;
+ gUnknown_02022CFC->unk2C &= gUnknown_02022CFC->unk30;
+ }
+}
+
+static bool32 sub_802B248(void)
+{
+ switch (gUnknown_02022CFC->unk8)
+ {
+ case 0:
+ sub_802AE14(3);
+ gUnknown_02022CFC->unk8++;
+ // fall through
+ case 1:
+ if (!sub_802B7E0())
+ {
+ gUnknown_02022CFC->unk72 = gUnknown_02022CFC->unk4A;
+ gUnknown_02022CFC->unk4C = 1;
+ return FALSE;
+ }
+ break;
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_802B29C(void)
+{
+ switch (gUnknown_02022CFC->unk8)
+ {
+ case 0:
+ sub_802AE14(0);
+ gUnknown_02022CFC->unk24 = gUnknown_02022CFC->unk72;
+ gUnknown_02022CFC->unk8++;
+ // fall through
+ case 1:
+ return sub_802B7E0();
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_802B2D4(void)
+{
+ switch (gUnknown_02022CFC->unk8)
+ {
+ case 0:
+ sub_802C0E8();
+ sub_802AE14(5);
+ gUnknown_02022CFC->unk8++;
+ break;
+ case 1:
+ if (gUnknown_02022CFC->unk49)
+ {
+ gUnknown_02022CFC->unk4C = 2;
+ return FALSE;
+ }
+ break;
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_802B31C(void)
+{
+ switch (gUnknown_02022CFC->unk8)
+ {
+ case 0:
+ sub_802C0E8();
+ sub_802AE14(0);
+ gUnknown_02022CFC->unk4A = gUnknown_02022CFC->unk72;
+ gUnknown_02022CFC->unk8++;
+ // fall through
+ case 1:
+ if (sub_802C70C())
+ return FALSE;
+ break;
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_802B368(void)
+{
+ if (!sub_802B8CC())
+ {
+ gUnknown_02022CFC->unk72 = gUnknown_02022CFC->unk4A;
+ gUnknown_02022CFC->unk4C = 1;
+ }
+ else if (sub_802C538())
+ {
+ return TRUE;
+ }
+ else
+ {
+ sub_802C0B8();
+ gUnknown_02022CFC->unk4C = 3;
+ }
+
+ return FALSE;
+}
+
+static bool32 sub_802B3B4(void)
+{
+ if (!sub_802B8CC())
+ ;
+ else if (sub_802C538())
+ return TRUE;
+ else
+ sub_802C0B8();
+
+ return FALSE;
+}
+
+static bool32 sub_802B3D4(void)
+{
+ switch (gUnknown_02022CFC->unk8)
+ {
+ case 0:
+ sub_802C538();
+ if (sub_802C5DC())
+ gUnknown_02022CFC->unk8++;
+ break;
+ case 1:
+ if (!sub_802B964())
+ {
+ if (sub_802C7BC())
+ {
+ gUnknown_02022CFC->unk72 = sub_802C7E0();
+ gUnknown_02022CFC->unk4C = 7;
+ }
+ else if (gUnknown_02022CFC->unk74 >= 200)
+ {
+ gUnknown_02022CFC->unk72 = gUnknown_02022CFC->unkE;
+ gUnknown_02022CFC->unk4C = 8;
+ }
+ else
+ {
+ gUnknown_02022CFC->unk72 = gUnknown_02022CFC->unkE;
+ gUnknown_02022CFC->unk4C = 4;
+ }
+
+ gUnknown_02022CFC->unk8++;
+ return FALSE;
+ }
+ break;
+ case 2:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_802B470(void)
+{
+ switch (gUnknown_02022CFC->unk8)
+ {
+ case 0:
+ if (!sub_802C538())
+ sub_802C0B8();
+ if (sub_802C5DC())
+ gUnknown_02022CFC->unk8++;
+ break;
+ case 1:
+ if (!sub_802B964())
+ {
+ gUnknown_02022CFC->unk8++;
+ return FALSE;
+ }
+ break;
+ case 2:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_802B4CC(void)
+{
+ switch (gUnknown_02022CFC->unk8)
+ {
+ case 0:
+ sub_802AE14(4);
+ gUnknown_02022CFC->unk8++;
+ // fall through
+ case 1:
+ if (!sub_802BB84())
+ {
+ sub_802E354(gUnknown_02022CFC->unk78, gUnknown_02022CFC->unk74, gUnknown_02022CFC->unk72);
+ gUnknown_02022CFC->unk8++;
+ }
+ break;
+ case 2:
+ if (gUnknown_02022CFC->unk49)
+ {
+ if (sub_802C650())
+ gUnknown_02022CFC->unk4C = 5;
+ else
+ gUnknown_02022CFC->unk4C = 6;
+
+ gUnknown_02022CFC->unk8++;
+ return FALSE;
+ }
+ break;
+ case 3:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_802B568(void)
+{
+ switch (gUnknown_02022CFC->unk8)
+ {
+ case 0:
+ sub_802AE14(0);
+ gUnknown_02022CFC->unk8++;
+ // fall through
+ case 1:
+ if (!sub_802BB84())
+ {
+ sub_802E354(gUnknown_02022CFC->unk78, gUnknown_02022CFC->unk74, gUnknown_02022CFC->unk72);
+ gUnknown_02022CFC->unk42 = gUnknown_02022CFC->unk45;
+ return FALSE;
+ }
+ break;
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_802B5C8(void)
+{
+ switch (gUnknown_02022CFC->unk8)
+ {
+ case 0:
+ if (!sub_802BD30())
+ gUnknown_02022CFC->unk8++;
+ break;
+ case 1:
+ if (gUnknown_02022CFC->unk49)
+ {
+ sub_802AA94(gUnknown_02022CFC);
+ gUnknown_02022CFC->unk24 = Random();
+ gUnknown_02022CFC->unk72 = gUnknown_02022CFC->unk24;
+ gUnknown_02022CFC->unk4C = 0;
+ return FALSE;
+ }
+ break;
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_802B628(void)
+{
+ switch (gUnknown_02022CFC->unk8)
+ {
+ case 0:
+ if (!sub_802BD30())
+ {
+ sub_802AA94(gUnknown_02022CFC);
+ gUnknown_02022CFC->unk8++;
+ return FALSE;
+ }
+ break;
+ case 1:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_802B664(void)
+{
+ switch (gUnknown_02022CFC->unk8)
+ {
+ case 0:
+ gUnknown_02022CFC->unk8 = 1;
+ break;
+ case 1:
+ sub_802AE14(0);
+ gUnknown_02022CFC->unk8++;
+ break;
+ case 2:
+ if (!sub_802BC60())
+ {
+ SetMainCallback2(gUnknown_02022CFC->returnCallback);
+ sub_802AA48();
+ }
+ break;
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_802B6B8(void)
+{
+ switch (gUnknown_02022CFC->unk8)
+ {
+ case 0:
+ sub_802AE14(4);
+ gUnknown_02022CFC->unk8++;
+ break;
+ case 1:
+ if (!sub_802BA58())
+ {
+ gUnknown_02022CFC->unk72 = gUnknown_02022CFC->unkE;
+ gUnknown_02022CFC->unk4C = 8;
+ return FALSE;
+ }
+ break;
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_802B704(void)
+{
+ sub_802AE14(0);
+ if (!sub_802BA58())
+ return FALSE;
+ else
+ return TRUE;
+}
+
+static bool32 sub_802B720(void)
+{
+ switch (gUnknown_02022CFC->unk8)
+ {
+ case 0:
+ sub_802E354(gUnknown_02022CFC->unk78, gUnknown_02022CFC->unk74, gUnknown_02022CFC->unk72);
+ sub_802D0C8(5);
+ gUnknown_02022CFC->unk8++;
+ break;
+ case 1:
+ if (!sub_802D0F0())
+ {
+ sub_802AE14(0);
+ gUnknown_02022CFC->unk8++;
+ }
+ break;
+ case 2:
+ if (sub_802C70C())
+ {
+ CreateTask(sub_8153688, 6);
+ gUnknown_02022CFC->unk8++;
+ }
+ break;
+ case 3:
+ if (!FuncIsActiveTask(sub_8153688))
+ {
+ sub_802DA14();
+ gUnknown_02022CFC->unk8++;
+ }
+ break;
+ case 4:
+ if (!sub_802DA44())
+ {
+ gUnknown_02022CFC->unk4C = 4;
+ return FALSE;
+ }
+ break;
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_802B7E0(void)
+{
+ int var0;
+
+ switch (gUnknown_02022CFC->unkA)
+ {
+ case 0:
+ sub_802D0C8(2);
+ sub_802DDE0();
+ gUnknown_02022CFC->unkA++;
+ break;
+ case 1:
+ var0 = sub_802D0F0();
+ if (!var0)
+ {
+ sub_802DDF4(gUnknown_02022CFC->unk6);
+ gUnknown_02022CFC->unk3C = 0;
+ gUnknown_02022CFC->unkA++;
+ }
+ break;
+ case 2:
+ if (++gUnknown_02022CFC->unk3C > 120)
+ {
+ sub_802D0C8(3);
+ gUnknown_02022CFC->unkA++;
+ }
+ break;
+ case 3:
+ if (sub_802D0F0() != 1 && sub_802DE08() != 1)
+ gUnknown_02022CFC->unkA++;
+ break;
+ case 4:
+ sub_802D0C8(9);
+ gUnknown_02022CFC->unkA++;
+ break;
+ case 5:
+ if (!sub_802D0F0())
+ {
+ sub_802C260();
+ sub_802D764();
+ gUnknown_02022CFC->unkA++;
+ }
+ break;
+ case 6:
+ if (!sub_802D788())
+ {
+ sub_802C270();
+ sub_802BEA0();
+ gUnknown_02022CFC->unkA++;
+ return FALSE;
+ }
+ break;
+ case 7:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_802B8CC(void)
+{
+ sub_802BEE4();
+ if (gUnknown_02022CFC->unk36)
+ {
+ gUnknown_02022CFC->unk36 = 0;
+ return FALSE;
+ }
+
+ switch (gUnknown_02022CFC->unkA)
+ {
+ case 0:
+ if (sub_802C130(0))
+ gUnknown_02022CFC->unkA++;
+ else
+ break;
+ // fall through
+ case 1:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ sub_802C164();
+ sub_802AE14(3);
+ gUnknown_02022CFC->unkA++;
+ }
+ break;
+ case 2:
+ if (sub_802C130(1) == TRUE)
+ gUnknown_02022CFC->unkA++;
+ break;
+ case 3:
+ if (sub_802C130(0) == TRUE)
+ gUnknown_02022CFC->unkA = 0;
+ break;
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_802B964(void)
+{
+ int i;
+
+ switch (gUnknown_02022CFC->unkA)
+ {
+ case 0:
+ for (i = 0; i < gUnknown_02022CFC->unk5; i++)
+ {
+ if (sub_802DDB8(i) == 1)
+ return TRUE;
+ }
+
+ gUnknown_02022CFC->unkA++;
+ break;
+ case 1:
+ for (i = 0; i < gUnknown_02022CFC->unk5; i++)
+ {
+ if (gUnknown_02022CFC->unk82E4[i].unk10 == 2)
+ sub_802DDA0(i);
+ }
+
+ sub_802D0C8(1);
+ gUnknown_02022CFC->unk3C = 0;
+ gUnknown_02022CFC->unkA++;
+ break;
+ case 2:
+ if (++gUnknown_02022CFC->unk3C > 100)
+ {
+ sub_802D0C8(3);
+ gUnknown_02022CFC->unk3C = 0;
+ gUnknown_02022CFC->unkA++;
+ }
+ break;
+ case 3:
+ if (!sub_802D0F0())
+ {
+ sub_802DDCC();
+ gUnknown_02022CFC->unk71 = 0;
+ sub_802C114();
+ gUnknown_02022CFC->unkA++;
+ return FALSE;
+ }
+ break;
+ case 4:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_802BA58(void)
+{
+ switch (gUnknown_02022CFC->unkA)
+ {
+ case 0:
+ sub_802C808(gUnknown_02022CFC->unk72, &gUnknown_02022CFC->unk3E, &gUnknown_02022CFC->unk40);
+ sub_802D7E8(gUnknown_02022CFC->unk3E, gUnknown_02022CFC->unk40);
+ gUnknown_02022CFC->unkA++;
+ break;
+ case 1:
+ case 4:
+ if (!sub_802D974())
+ {
+ gUnknown_02022CFC->unk3C = 0;
+ gUnknown_02022CFC->unkA++;
+ }
+ break;
+ case 2:
+ case 5:
+ gUnknown_02022CFC->unk3C++;
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON) || gUnknown_02022CFC->unk3C > 180)
+ {
+ sub_802DA14();
+ gUnknown_02022CFC->unkA++;
+ }
+ break;
+ case 3:
+ if (!sub_802DA44())
+ {
+ gUnknown_02022CFC->unk40 = sub_802C880(gUnknown_02022CFC->unk3E, gUnknown_02022CFC->unk40);
+ if (gUnknown_02022CFC->unk40 && AddBagItem(gUnknown_02022CFC->unk3E, gUnknown_02022CFC->unk40))
+ {
+ if (!CheckBagHasSpace(gUnknown_02022CFC->unk3E, 1))
+ {
+ sub_802D884(gUnknown_02022CFC->unk3E);
+ gUnknown_02022CFC->unkA = 4;
+ }
+ else
+ {
+ gUnknown_02022CFC->unkA = 6;
+ break;
+ }
+ }
+ else
+ {
+ sub_802D8FC(gUnknown_02022CFC->unk3E);
+ gUnknown_02022CFC->unkA = 4;
+ }
+ }
+ break;
+ case 6:
+ if (!sub_802DA44())
+ return FALSE;
+ break;
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_802BB84(void)
+{
+ s8 input;
+
+ switch (gUnknown_02022CFC->unkA)
+ {
+ case 0:
+ sub_802D0C8(4);
+ gUnknown_02022CFC->unkA++;
+ break;
+ case 1:
+ if (!sub_802D0F0())
+ gUnknown_02022CFC->unkA++;
+ break;
+ case 2:
+ input = sub_802DA8C();
+ switch (input)
+ {
+ case MENU_B_PRESSED:
+ case 1:
+ gUnknown_02022CFC->unk45 = 1;
+ sub_802D0C8(6);
+ gUnknown_02022CFC->unkA++;
+ break;
+ case 0:
+ gUnknown_02022CFC->unk45 = 2;
+ sub_802D0C8(6);
+ gUnknown_02022CFC->unkA++;
+ break;
+ }
+ break;
+ case 3:
+ if (!sub_802D0F0())
+ gUnknown_02022CFC->unkA++;
+ break;
+ case 4:
+ sub_802D0C8(8);
+ gUnknown_02022CFC->unkA++;
+ break;
+ case 5:
+ if (!sub_802D0F0())
+ {
+ gUnknown_02022CFC->unkA++;
+ return FALSE;
+ }
+ break;
+ case 6:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_802BC60(void)
+{
+ int var0;
+
+ switch (gUnknown_02022CFC->unkA)
+ {
+ case 0:
+ sub_802DA14();
+ gUnknown_02022CFC->unkA++;
+ break;
+ case 1:
+ if (!sub_802DA44())
+ {
+ sub_802D0C8(7);
+ gUnknown_02022CFC->unkA++;
+ }
+ break;
+ case 2:
+ var0 = sub_802D0F0();
+ if (!var0)
+ {
+ gUnknown_02022CFC->unk3C = var0;
+ gUnknown_02022CFC->unkA++;
+ }
+ break;
+ case 3:
+ if (++gUnknown_02022CFC->unk3C > 120)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK);
+ gUnknown_02022CFC->unkA++;
+ }
+ break;
+ case 4:
+ if (!gPaletteFade.active)
+ {
+ sub_800AC34();
+ gUnknown_02022CFC->unkA++;
+ }
+ break;
+ case 5:
+ if (!gReceivedRemoteLinkPlayers)
+ return FALSE;
+ break;
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_802BD30(void)
+{
+ switch (gUnknown_02022CFC->unkA)
+ {
+ case 0:
+ sub_802DA14();
+ sub_802DD64(0);
+ gUnknown_02022CFC->unkA++;
+ break;
+ case 1:
+ if (!sub_802DA44())
+ {
+ gUnknown_02022CFC->unkA++;
+ return FALSE;
+ }
+ break;
+ case 2:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void sub_802BD84(u8 taskId)
+{
+ int i;
+ s16 *taskData = gTasks[taskId].data;
+ struct PokemonJump1 *ptr = (struct PokemonJump1 *)GetWordTaskArg(taskId, 14);
+
+ switch (taskData[0])
+ {
+ case 0:
+ for (i = 0; i < MAX_RFU_PLAYERS; i++)
+ taskData[i + 2] = 0;
+
+ taskData[0]++;
+ // fall through
+ case 1:
+ sub_802E0AC(&ptr->unk82A8[ptr->unk6]);
+ for (i = 0; i < MAX_RFU_PLAYERS; i++)
+ {
+ if (!taskData[i + 2] && sub_802E0D0(i, &ptr->unk82A8[i]))
+ {
+ StringCopy(ptr->unk82E4[i].unk1C, gLinkPlayers[i].name);
+ taskData[i + 2] = 1;
+ taskData[1]++;
+ if (taskData[1] == ptr->unk5)
+ {
+ sub_802AB20();
+ DestroyTask(taskId);
+ break;
+ }
+ }
+ }
+ break;
+ }
+}
+
+static void sub_802BE60(TaskFunc func, u8 taskPriority)
+{
+ u8 taskId = CreateTask(func, taskPriority);
+ SetWordTaskArg(taskId, 14, (u32)gUnknown_02022CFC);
+}
+
+static void sub_802BE80(void)
+{
+ gUnknown_02022CFC->unk4A = 0;
+ gUnknown_02022CFC->unk14 = 6;
+ gUnknown_02022CFC->unk34 = 0;
+ gUnknown_02022CFC->unk1C = 0;
+ gUnknown_02022CFC->unk36 = 0;
+ gUnknown_02022CFC->unk10 = 0;
+}
+
+static void sub_802BEA0(void)
+{
+ gUnknown_02022CFC->unk4A = 0;
+ gUnknown_02022CFC->unk34 = 0x6FF;
+ gUnknown_02022CFC->unk14 = 7;
+ gUnknown_02022CFC->unk36 = 0;
+ gUnknown_02022CFC->unk10 = 0;
+ gUnknown_02022CFC->unk51 = 0;
+ gUnknown_02022CFC->unk50 = 0;
+ gUnknown_02022CFC->unk20 = 0;
+ gUnknown_02022CFC->unk4E = 0;
+ gUnknown_02022CFC->unk6C = 0;
+ sub_802BF7C();
+}
+
+static void sub_802BEE4(void)
+{
+ if (gUnknown_02022CFC->unk46)
+ {
+ gUnknown_02022CFC->unk4A++;
+ gUnknown_02022CFC->unk34 += sub_802BF48();
+ if (gUnknown_02022CFC->unk34 >= 0x9FF)
+ gUnknown_02022CFC->unk34 -= 0x9FF;
+
+ gUnknown_02022CFC->unk18 = gUnknown_02022CFC->unk14;
+ gUnknown_02022CFC->unk14 = gUnknown_02022CFC->unk34 >> 8;
+ if (gUnknown_02022CFC->unk14 > 6 && gUnknown_02022CFC->unk18 < 7)
+ {
+ gUnknown_02022CFC->unk36++;
+ sub_802BF7C();
+ }
+ }
+}
+
+static int sub_802BF48(void)
+{
+ int result;
+
+ if (gUnknown_02022CFC->unk10)
+ return 0;
+
+ result = gUnknown_02022CFC->unk1C;
+ if (gUnknown_02022CFC->unk34 <= 0x5FF)
+ {
+ gUnknown_02022CFC->unk20 += 80;
+ result += gUnknown_02022CFC->unk20 >> 8;
+ }
+
+ return result;
+}
+
+static void sub_802BF7C(void)
+{
+ int var0;
+
+ gUnknown_02022CFC->unk20 = 0;
+ if (gUnknown_02022CFC->unk4E)
+ {
+ gUnknown_02022CFC->unk4E--;
+ if (gUnknown_02022CFC->unk6C)
+ {
+ if (sub_802C098() % 4 != 0)
+ {
+ gUnknown_02022CFC->unk1C = gUnknown_02022CFC->unk28;
+ }
+ else
+ {
+ if (gUnknown_02022CFC->unk28 > 54)
+ gUnknown_02022CFC->unk1C = 30;
+ else
+ gUnknown_02022CFC->unk1C = 82;
+ }
+ }
+ }
+ else
+ {
+ if (!(gUnknown_02022CFC->unk50 & 8))
+ {
+ gUnknown_02022CFC->unk28 = gUnknown_082FB63C[gUnknown_02022CFC->unk50] + (gUnknown_02022CFC->unk51 * 7);
+ gUnknown_02022CFC->unk4E = gUnknown_082FB64C[sub_802C098() % ARRAY_COUNT(gUnknown_082FB64C)] + 2;
+ gUnknown_02022CFC->unk50++;
+ }
+ else
+ {
+ if (gUnknown_02022CFC->unk50 == 8)
+ {
+ if (gUnknown_02022CFC->unk51 < 3)
+ gUnknown_02022CFC->unk51++;
+ else
+ gUnknown_02022CFC->unk6C = 1;
+ }
+
+ var0 = gUnknown_082FB63C[15 - gUnknown_02022CFC->unk50];
+ gUnknown_02022CFC->unk28 = var0 + (gUnknown_02022CFC->unk51 * 7);
+ if (++gUnknown_02022CFC->unk50 > 15)
+ {
+ if (sub_802C098() % 4 == 0)
+ gUnknown_02022CFC->unk28 -= 5;
+
+ gUnknown_02022CFC->unk50 = 0;
+ }
+ }
+
+ gUnknown_02022CFC->unk1C = gUnknown_02022CFC->unk28;
+ }
+}
+
+static int sub_802C098(void)
+{
+ // The number 1103515245 comes from the example implementation of rand and srand
+ gUnknown_02022CFC->unk24 = gUnknown_02022CFC->unk24 * 1103515245 + 24691;
+ return gUnknown_02022CFC->unk24 >> 16;
+}
+
+static void sub_802C0B8(void)
+{
+ gUnknown_02022CFC->unk10 = 1;
+ gUnknown_02022CFC->unk14 = 6;
+ gUnknown_02022CFC->unk34 = 0x5FF;
+ sub_802C270();
+}
+
+static int sub_802C0DC(void)
+{
+ return gUnknown_02022CFC->unk10;
+}
+
+static void sub_802C0E8(void)
+{
+ int i;
+ for (i = 0; i < MAX_RFU_PLAYERS; i++)
+ gUnknown_02022CFC->unk82E4[i].unk14 = 0;
+}
+
+static void sub_802C114(void)
+{
+ gUnknown_02022CFC->unk83AC->unk10 = 0;
+ gUnknown_02022CFC->unk83AC->unk12 = 0;
+}
+
+static bool32 sub_802C130(u16 arg0)
+{
+ if (gUnknown_02022CFC->unk82E4[gUnknown_02022CFC->unk6].unk10 == arg0)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void sub_802C164(void)
+{
+ gUnknown_02022CFC->unk83AC->unkE = gUnknown_02022CFC->unk4A;
+ gUnknown_02022CFC->unk83AC->unk12 = gUnknown_02022CFC->unk83AC->unk10;
+ gUnknown_02022CFC->unk83AC->unk10 = 1;
+}
+
+static void sub_802C18C(void)
+{
+ gUnknown_02022CFC->unk83AC->unk12 = gUnknown_02022CFC->unk83AC->unk10;
+ gUnknown_02022CFC->unk83AC->unk10 = 2;
+ gUnknown_02022CFC->unk83AC->unkE = gUnknown_02022CFC->unk4A;
+ gUnknown_02022CFC->unk83AC->unk14 = 2;
+}
+
+static void sub_802C1BC(void)
+{
+ gUnknown_02022CFC->unk83AC->unk12 = gUnknown_02022CFC->unk83AC->unk10;
+ gUnknown_02022CFC->unk83AC->unk10 = 0;
+}
+
+static void sub_802C1DC(void)
+{
+ if (gUnknown_02022CFC->unk5C)
+ {
+ sub_802DD64(gUnknown_02022CFC->unk78);
+ gUnknown_02022CFC->unk5C = 0;
+ if (gUnknown_02022CFC->unk4D)
+ {
+ int index = sub_802DCCC(gUnknown_02022CFC->unk71);
+ PlaySE(gUnknown_082FB654[index - 2]);
+ gUnknown_02022CFC->unk4D = 0;
+ }
+ }
+
+ sub_802DD74(gUnknown_02022CFC->unk74);
+ sub_802C280();
+ sub_802C240();
+}
+
+static void sub_802C240(void)
+{
+ if (gUnknown_02022CFC->unk46)
+ sub_802DC9C(gUnknown_02022CFC->unk14);
+}
+
+static void sub_802C260(void)
+{
+ gUnknown_02022CFC->unk46 = 0;
+}
+
+static void sub_802C270(void)
+{
+ gUnknown_02022CFC->unk46 = 1;
+}
+
+static void sub_802C280(void)
+{
+ int i;
+ int whichSound = 0;
+ int numLinkPlayers = gUnknown_02022CFC->unk5;
+
+ for (i = 0; i < numLinkPlayers; i++)
+ {
+ switch (gUnknown_02022CFC->unk82E4[i].unk10)
+ {
+ case 0:
+ sub_802DC80(i, 0);
+ break;
+ case 1:
+ if (gUnknown_02022CFC->unk82E4[i].unk12 != 1 || gUnknown_02022CFC->unk82E4[i].unkE != gUnknown_02022CFC->unk9A[i])
+ {
+ if (i == gUnknown_02022CFC->unk6)
+ gUnknown_02022CFC->unk82E4[i].unk12 = 1;
+
+ whichSound |= 0x1;
+ gUnknown_02022CFC->unk82E4[i].unk4 = 0x7FFFFFFF;
+ gUnknown_02022CFC->unk9A[i] = gUnknown_02022CFC->unk82E4[i].unkE;
+ }
+
+ sub_802C398(i);
+ break;
+ case 2:
+ if (gUnknown_02022CFC->unk82E4[i].unk12 != 2)
+ {
+ if (i == gUnknown_02022CFC->unk6)
+ gUnknown_02022CFC->unk82E4[i].unk12 = 2;
+
+ whichSound |= 0x2;
+ sub_802DD88(i);
+ }
+ break;
+ }
+ }
+
+ if (whichSound & 0x2)
+ PlaySE(SE_RG_NAWAMISS);
+ else if (whichSound & 0x1)
+ PlaySE(SE_DANSA);
+}
+
+static void sub_802C398(int multiplayerId)
+{
+ int var0;
+ int var1;
+ struct PokemonJump1_82E4 *player;
+
+ if (gUnknown_02022CFC->unk68)
+ return;
+
+ player = &gUnknown_02022CFC->unk82E4[multiplayerId];
+ if (player->unk4 != 0x7FFFFFFF)
+ {
+ player->unk4++;
+ var0 = player->unk4;
+ }
+ else
+ {
+ var0 = gUnknown_02022CFC->unk4A - player->unkE;
+ if (var0 >= 65000)
+ {
+ var0 -= 65000;
+ var0 += gUnknown_02022CFC->unk4A;
+ }
+
+ player->unk4 = var0;
+ }
+
+ if (var0 < 4)
+ return;
+
+ var0 -= 4;
+ if (var0 < 48)
+ var1 = gUnknown_082FB65C[player->unkC][var0];
+ else
+ var1 = 0;
+
+ sub_802DC80(multiplayerId, var1);
+ if (!var1 && multiplayerId == gUnknown_02022CFC->unk6)
+ sub_802C1BC();
+
+ player->unk0 = var1;
+}
+
+static void sub_802C43C(void)
+{
+ if (gUnknown_02022CFC->unk14 == 8 && gUnknown_02022CFC->unk18 == 7)
+ {
+ if (gUnknown_02022CFC->unk58 == 0)
+ {
+ sub_802C780();
+ gUnknown_02022CFC->unk54 = 0;
+ gUnknown_02022CFC->unk58 = 1;
+ gUnknown_02022CFC->unk71 = 0;
+ }
+ else
+ {
+ if (gUnknown_02022CFC->unk54 == 5)
+ {
+ gUnknown_02022CFC->unkC++;
+ sub_802C7A0(gUnknown_02022CFC->unkC);
+ }
+ else
+ {
+ gUnknown_02022CFC->unkC = 0;
+ }
+
+ if (gUnknown_02022CFC->unk54 > 1)
+ {
+ gUnknown_02022CFC->unk64 = 1;
+ memcpy(gUnknown_02022CFC->unk86, gUnknown_02022CFC->unk81, sizeof(u8) * MAX_RFU_PLAYERS);
+ }
+
+ sub_802C780();
+ gUnknown_02022CFC->unk54 = 0;
+ gUnknown_02022CFC->unk58 = 1;
+ gUnknown_02022CFC->unk71 = 0;
+ if (gUnknown_02022CFC->unk74 < 9999)
+ gUnknown_02022CFC->unk74++;
+
+ sub_802C688(10);
+ sub_802AE14(3);
+ }
+ }
+
+ if (gUnknown_02022CFC->unk64 && (sub_802C618() == TRUE || !gUnknown_02022CFC->unk14))
+ {
+ int var0 = sub_802C73C(gUnknown_02022CFC->unk86);
+ sub_802C688(sub_802C790(var0));
+ sub_802AE14(3);
+ gUnknown_02022CFC->unk64 = 0;
+ }
+
+ if (gUnknown_02022CFC->unk58)
+ {
+ int var1 = sub_802C6B0();
+ if (var1 > gUnknown_02022CFC->unk54)
+ {
+ gUnknown_02022CFC->unk54 = var1;
+ memcpy(gUnknown_02022CFC->unk81, gUnknown_02022CFC->unk7C, sizeof(u8) * MAX_RFU_PLAYERS);
+ }
+ }
+}
+
+static bool32 sub_802C538(void)
+{
+ int i;
+
+ if (gUnknown_02022CFC->unk14 == 6 && !gUnknown_02022CFC->unk83AC->unk0)
+ {
+ if (gUnknown_02022CFC->unk83AC->unk12 == 1 && sub_802C0DC() == 1)
+ {
+ gUnknown_02022CFC->unk83AC->unk14 = 1;
+ }
+ else
+ {
+ sub_802C18C();
+ sub_802AE14(3);
+ }
+ }
+
+ if (gUnknown_02022CFC->unk14 == 7
+ && gUnknown_02022CFC->unk18 == 6
+ && gUnknown_02022CFC->unk83AC->unk10 != 2)
+ {
+ gUnknown_02022CFC->unk83AC->unk14 = 1;
+ sub_802AE14(3);
+ }
+
+ for (i = 0; i < gUnknown_02022CFC->unk5; i++)
+ {
+ if (gUnknown_02022CFC->unk82E4[i].unk10 == 2)
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_802C5DC(void)
+{
+ int i;
+ int numPlayers = gUnknown_02022CFC->unk5;
+ int count = 0;
+ for (i = 0; i < numPlayers; i++)
+ {
+ if (gUnknown_02022CFC->unk82E4[i].unk14)
+ count++;
+ }
+
+ return count == numPlayers;
+}
+
+static bool32 sub_802C618(void)
+{
+ int i;
+ for (i = 0; i < gUnknown_02022CFC->unk5; i++)
+ {
+ if (gUnknown_02022CFC->unk82E4[i].unk14 != 1)
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_802C650(void)
+{
+ int i;
+
+ if (gUnknown_02022CFC->unk45 == 1)
+ return FALSE;
+
+ for (i = 1; i < gUnknown_02022CFC->unk5; i++)
+ {
+ if (gUnknown_02022CFC->unk90[i] == 1)
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void sub_802C688(int arg0)
+{
+ gUnknown_02022CFC->unk78 += arg0;
+ gUnknown_02022CFC->unk5C = 1;
+ if (gUnknown_02022CFC->unk78 >= 99990)
+ gUnknown_02022CFC->unk78 = 99990;
+}
+
+static int sub_802C6B0(void)
+{
+ int i;
+ int count = 0;
+ int numPlayers = gUnknown_02022CFC->unk5;
+
+ for (i = 0; i < numPlayers; i++)
+ {
+ if (gUnknown_02022CFC->unk82E4[i].unk0 == -30)
+ {
+ gUnknown_02022CFC->unk7C[i] = 1;
+ count++;
+ }
+ else
+ {
+ gUnknown_02022CFC->unk7C[i] = 0;
+ }
+ }
+
+ return count;
+}
+
+static bool32 sub_802C70C(void)
+{
+ return !gUnknown_03005000.unk_124.unk_8c2 && !gUnknown_03005000.unk_9e8.unk_232;
+}
+
+static int sub_802C73C(u8 *arg0)
+{
+ int i;
+ int flags;
+ int count;
+
+ for (i = 0, flags = 0, count = 0; i < MAX_RFU_PLAYERS; i++)
+ {
+ if (arg0[i])
+ {
+ flags |= 1 << i;
+ count++;
+ }
+ }
+
+ gUnknown_02022CFC->unk71 = flags;
+ if (flags)
+ gUnknown_02022CFC->unk4D = 1;
+
+ return count;
+}
+
+static void sub_802C780(void)
+{
+ gUnknown_02022CFC->unk44 = 0;
+}
+
+static int sub_802C790(int arg0)
+{
+ return gUnknown_082FB6EC[arg0];
+}
+
+static void sub_802C7A0(u16 arg0)
+{
+ if (arg0 > gUnknown_02022CFC->unkE)
+ gUnknown_02022CFC->unkE = arg0;
+}
+
+static bool32 sub_802C7BC(void)
+{
+ if (gUnknown_02022CFC->unk78 >= gUnknown_082FB714[0])
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static u16 sub_802C7E0(void)
+{
+ u16 lo = sub_802C818();
+ u16 hi = sub_802C838();
+ return (hi << 12) | (lo & 0xFFF);
+}
+
+static void sub_802C808(u16 arg0, u16 *arg1, u16 *arg2)
+{
+ *arg2 = arg0 >> 12;
+ *arg1 = arg0 & 0xFFF;
+}
+
+static u16 sub_802C818(void)
+{
+ u16 index = Random() % ARRAY_COUNT(gUnknown_082FB704);
+ return gUnknown_082FB704[index];
+}
+
+NAKED
+static u16 sub_802C838(void)
+{
+ asm_unified("\n\
+ push {r4-r6,lr}\n\
+ movs r5, 0\n\
+ movs r4, 0\n\
+ ldr r3, =gUnknown_02022CFC\n\
+ ldr r0, [r3]\n\
+ ldr r2, =gUnknown_082FB714\n\
+ ldr r1, [r0, 0x78]\n\
+ ldr r0, [r2]\n\
+ cmp r1, r0\n\
+ bcc _0802C874\n\
+ ldr r5, [r2, 0x4]\n\
+ adds r6, r3, 0\n\
+ adds r3, r2, 0x4\n\
+_0802C852:\n\
+ adds r3, 0x8\n\
+ adds r2, 0x8\n\
+ adds r4, 0x1\n\
+ cmp r4, 0x4\n\
+ bhi _0802C874\n\
+ ldr r0, [r6]\n\
+ ldr r1, [r0, 0x78]\n\
+ ldr r0, [r2]\n\
+ cmp r1, r0\n\
+ bcc _0802C874\n\
+ ldr r5, [r3]\n\
+ b _0802C852\n\
+ .pool\n\
+_0802C874:\n\
+ lsls r0, r5, 16\n\
+ lsrs r0, 16\n\
+ pop {r4-r6}\n\
+ pop {r1}\n\
+ bx r1");
+}
+
+static u16 sub_802C880(u16 item, u16 quantity)
+{
+ while (quantity && !CheckBagHasSpace(item, quantity))
+ quantity--;
+
+ return quantity;
+}
+
+u16 sub_802C8AC(void)
+{
+ return GetLinkPlayerCount();
+}
+
+u16 sub_802C8BC(void)
+{
+ return gUnknown_02022CFC->unk6;
+}
+
+struct PokemonJump1_MonInfo *sub_802C8C8(u8 multiplayerId)
+{
+ return &gUnknown_02022CFC->unk82A8[multiplayerId];
+}
+
+u8 *sub_802C8E8(u8 multiplayerId)
+{
+ return gUnknown_02022CFC->unk82E4[multiplayerId].unk1C;
+}
+
+bool32 sub_802C908(u16 species)
+{
+ return sub_802AC00(species) > -1;
+}
+
+void sub_802C920(void)
+{
+ int i;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SANITY_HAS_SPECIES))
+ {
+ u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ if (sub_802C908(species))
+ {
+ gSpecialVar_Result = 1;
+ return;
+ }
+ }
+ }
+
+ gSpecialVar_Result = 0;
+}
+
+void sub_802C974(struct PokemonJump2 *arg0)
+{
+ int i;
+
+ for (i = 0; i < ARRAY_COUNT(gUnknown_082FBE08); i++)
+ LoadCompressedSpriteSheet(&gUnknown_082FBE08[i]);
+
+ for (i = 0; i < ARRAY_COUNT(gUnknown_082FBE30); i++)
+ LoadSpritePalette(&gUnknown_082FBE30[i]);
+
+ arg0->unkE = IndexOfSpritePaletteTag(5);
+ arg0->unkF = IndexOfSpritePaletteTag(6);
+}
+
+static void sub_802C9BC(struct Sprite *sprite)
+{
+ int i;
+ for (i = 0; i < 8; i++)
+ sprite->data[i] = 0;
+}
+
+void sub_802C9D4(struct PokemonJump2 *arg0, struct PokemonJump1_MonInfo *jumpMon, u16 x, u16 y, u8 multiplayerId)
+{
+ struct SpriteTemplate spriteTemplate;
+ struct SpriteSheet spriteSheet;
+ struct CompressedSpritePalette spritePalette;
+ u8 *buffer;
+ u8 *unusedBuffer;
+ u8 subpriority;
+ u8 spriteId;
+
+ spriteTemplate = gUnknown_082FBE40;
+ buffer = Alloc(0x2000);
+ unusedBuffer = Alloc(0x800);
+ if (multiplayerId == sub_802C8BC())
+ subpriority = 3;
+ else
+ subpriority = multiplayerId + 4;
+
+ if (buffer && unusedBuffer)
+ {
+ HandleLoadSpecialPokePic(
+ &gMonStillFrontPicTable[jumpMon->species],
+ buffer,
+ jumpMon->species,
+ jumpMon->personality);
+
+ spriteSheet.data = buffer;
+ spriteSheet.tag = multiplayerId;
+ spriteSheet.size = 0x800;
+ LoadSpriteSheet(&spriteSheet);
+
+ spritePalette.data = GetFrontSpritePalFromSpeciesAndPersonality(jumpMon->species, jumpMon->otId, jumpMon->personality);
+ spritePalette.tag = multiplayerId;
+ LoadCompressedSpritePalette(&spritePalette);
+
+ Free(buffer);
+ Free(unusedBuffer);
+
+ spriteTemplate.tileTag += multiplayerId;
+ spriteTemplate.paletteTag += multiplayerId;
+ spriteId = CreateSprite(&spriteTemplate, x, y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ arg0->unk81A8[multiplayerId] = &gSprites[spriteId];
+ arg0->unk81FC[multiplayerId] = subpriority;
+ return;
+ }
+ }
+
+ arg0->unk81A8[multiplayerId] = NULL;
+}
+
+void sub_802CB14(struct PokemonJump2 *arg0, int multiplayerId)
+{
+ sub_802C9BC(arg0->unk81BC[multiplayerId]);
+ arg0->unk81BC[multiplayerId]->data[7] = arg0->unk81A8[multiplayerId] - gSprites;
+ arg0->unk81BC[multiplayerId]->invisible = 0;
+ arg0->unk81BC[multiplayerId]->pos1.y = 96;
+ arg0->unk81BC[multiplayerId]->callback = sub_802CB7C;
+ StartSpriteAnim(arg0->unk81BC[multiplayerId], 1);
+}
+
+static void sub_802CB7C(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (sprite->animEnded)
+ {
+ sprite->invisible = 1;
+ sprite->callback = SpriteCallbackDummy;
+ }
+ break;
+ case 1:
+ sprite->pos1.y--;
+ sprite->data[1]++;
+ if (sprite->pos1.y <= 72)
+ {
+ sprite->pos1.y = 72;
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ if (++sprite->data[1] >= 48)
+ {
+ sprite->invisible = 1;
+ sprite->callback = SpriteCallbackDummy;
+ }
+ break;
+ }
+}
+
+void sub_802CBF0(struct PokemonJump2 *arg0, int multiplayerId)
+{
+ arg0->unk81A8[multiplayerId]->callback = sub_802CC40;
+ arg0->unk81A8[multiplayerId]->pos2.y = 0;
+ sub_802C9BC(arg0->unk81A8[multiplayerId]);
+}
+
+bool32 sub_802CC18(struct PokemonJump2 *arg0, int multiplayerId)
+{
+ return arg0->unk81A8[multiplayerId]->callback == sub_802CC40;
+}
+
+static void sub_802CC40(struct Sprite *sprite)
+{
+ if (++sprite->data[1] > 1)
+ {
+ if (++sprite->data[2] & 1)
+ sprite->pos2.y = 2;
+ else
+ sprite->pos2.y = -2;
+
+ sprite->data[1] = 0;
+ }
+
+ if (sprite->data[2] > 12)
+ {
+ sprite->pos2.y = 0;
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+void sub_802CC88(struct PokemonJump2 *arg0, int multiplayerId)
+{
+ sub_802C9BC(arg0->unk81A8[multiplayerId]);
+ arg0->unk81A8[multiplayerId]->callback = sub_802CD08;
+}
+
+void sub_802CCB0(struct PokemonJump2 *arg0)
+{
+ int i;
+ u16 numPlayers = sub_802C8AC();
+ for (i = 0; i < numPlayers; i++)
+ {
+ if (arg0->unk81A8[i]->callback == sub_802CD08)
+ {
+ arg0->unk81A8[i]->invisible = 0;
+ arg0->unk81A8[i]->callback = SpriteCallbackDummy;
+ arg0->unk81A8[i]->subpriority = 10;
+ }
+ }
+}
+
+static void sub_802CD08(struct Sprite *sprite)
+{
+ if (++sprite->data[0] > 3)
+ {
+ sprite->data[0] = 0;
+ sprite->invisible ^= 1;
+ }
+}
+
+void sub_802CD3C(struct PokemonJump2 *arg0)
+{
+ int i;
+ u16 numPlayers = sub_802C8AC();
+ for (i = 0; i < numPlayers; i++)
+ arg0->unk81A8[i]->subpriority = arg0->unk81FC[i];
+}
+
+void sub_802CD70(struct PokemonJump2 *arg0, int multiplayerId)
+{
+ sub_802C9BC(arg0->unk81A8[multiplayerId]);
+ arg0->unk81A8[multiplayerId]->callback = sub_802CDD4;
+}
+
+bool32 sub_802CD98(struct PokemonJump2 *arg0)
+{
+ int i;
+ u16 numPlayers = sub_802C8AC();
+ for (i = 0; i < numPlayers; i++)
+ {
+ if (arg0->unk81A8[i]->callback == sub_802CDD4)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void sub_802CDD4(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ PlaySE(SE_JITE_PYOKO);
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ // fall through
+ case 1:
+ sprite->data[1] += 4;
+ if (sprite->data[1] > 0x7F)
+ sprite->data[1] = 0;
+
+ sprite->pos2.y = -(gSineTable[sprite->data[1]] >> 3);
+ if (sprite->data[1] == 0)
+ {
+ if (++sprite->data[2] < 2)
+ sprite->data[0] = 0;
+ else
+ sprite->callback = SpriteCallbackDummy;
+ }
+ break;
+ }
+}
+
+void sub_802CE48(struct PokemonJump2 *arg0, s16 x, s16 y, u8 multiplayerId)
+{
+ u8 spriteId = CreateSprite(&gUnknown_082FC00C, x, y, 1);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].invisible = 1;
+ arg0->unk81BC[multiplayerId] = &gSprites[spriteId];
+ }
+}
+
+// void sub_802CE9C(struct PokemonJump2 *arg0)
+// {
+// int i;
+// int count;
+// u8 spriteId;
+
+// count = 0;
+// for (i = 0; i < 4; i++)
+// {
+// spriteId = CreateSprite(&gUnknown_082FBEB8[i], gUnknown_082FBEA8[count], gUnknown_082FBE58[i * 10], 2);
+// arg0->unk81D0[count] = &gSprites[spriteId];
+// count++;
+// }
+
+// for (i = 0; i < 4; i++)
+// {
+// spriteId = CreateSprite(&gUnknown_082FBEB8[i], gUnknown_082FBEA8[count], gUnknown_082FBE58[i * 10], 2);
+// arg0->unk81D0[count] = &gSprites[spriteId];
+// arg0->unk81D0[count]->hFlip = 1;
+// count++;
+// }
+// }
diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c
index 98d83d8ce..f63e1ccba 100644
--- a/src/pokemon_size_record.c
+++ b/src/pokemon_size_record.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "data.h"
#include "event_data.h"
#include "pokedex.h"
#include "pokemon.h"
@@ -45,7 +46,6 @@ static const u8 sGiftRibbonsMonDataIds[] =
extern const u8 gText_DecimalPoint[];
extern const u8 gText_Marco[];
-extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1];
#define CM_PER_INCH 2.54
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index fb1be0698..148be7c5c 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "alloc.h"
#include "bg.h"
-#include "data2.h"
+#include "data.h"
#include "decompress.h"
#include "dma3.h"
#include "dynamic_placeholder_text_util.h"
@@ -463,8 +463,6 @@ EWRAM_DATA static u8 sMovingMonOrigBoxId = 0;
EWRAM_DATA static u8 sMovingMonOrigBoxPos = 0;
EWRAM_DATA static bool8 sCanOnlyMove = 0;
-extern const struct CompressedSpriteSheet gMonFrontPicTable[];
-
// This file's functions.
static void CreatePCMenu(u8 whichMenu, s16 *windowIdPtr);
static void Cb2_EnterPSS(u8 boxOption);
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 3a5b06d45..2ec088628 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -9,7 +9,7 @@
#include "bg.h"
#include "contest.h"
#include "contest_effect.h"
-#include "data2.h"
+#include "data.h"
#include "daycare.h"
#include "decompress.h"
#include "dynamic_placeholder_text_util.h"
@@ -164,7 +164,6 @@ static EWRAM_DATA struct PokemonSummaryScreenData
EWRAM_DATA u8 gLastViewedMonIndex = 0;
static EWRAM_DATA u8 sUnknown_0203CF21 = 0;
ALIGNED(4) static EWRAM_DATA u8 sUnknownTaskId = 0;
-extern const struct CompressedSpriteSheet gMonFrontPicTable[];
struct UnkStruct_61CC04
{
diff --git a/src/pokenav.c b/src/pokenav.c
index 42114a4b2..be3826bed 100644
--- a/src/pokenav.c
+++ b/src/pokenav.c
@@ -6,500 +6,356 @@
#include "field_weather.h"
#include "palette.h"
#include "pokemon_storage_system.h"
-#include "sound.h"
-#include "constants/songs.h"
-#include "window.h"
-#include "gpu_regs.h"
-#include "bg.h"
-#include "menu.h"
-#include "graphics.h"
-#include "dma3.h"
-#include "gba/macro.h"
-#include "decompress.h"
-#include "strings.h"
-#include "constants/rgb.h"
+#include "pokenav.h"
-enum
-{
- MODE_NORMAL, // Chosen from Start menu.
- MODE_FORCE_CALL_1, // Used for the script's special. Has to choose Match Call and make a call.
- MODE_FORCE_CALL_2, // Set after making a call, has to exit Pokenav.
-};
-
-#define UNKNOWN_OFFSET 100000
+#define LOOPED_TASK_DECODE_STATE(action) (action - 5)
-struct UnknownSubStruct_0203CF40
-{
- void (*unk0)(u32);
- u32 (*unk4)(void);
- u32 unk8;
- u32 unkC;
- u32 unk10;
- u32 unk14;
- struct Sprite *unk18;
- struct Sprite *unk1C[2];
- struct Sprite *unk24[2];
- u8 tilemapBuffer[0x1000];
-};
+#define LOOPED_TASK_ID(primary, secondary) (((secondary) << 16) |(primary))
+#define LOOPED_TASK_PRIMARY_ID(taskId) (taskId & 0xFFFF)
+#define LOOPED_TASK_SECONDARY_ID(taskId) (taskId >> 16)
#define SUBSTRUCT_COUNT 19
-struct UnknownStruct_0203CF40
+struct PokenavResources
{
- u32 (*field0)(void);
- u32 field4;
+ u32 (*currentMenuCb1)(void);
+ u32 currentMenuIndex;
u16 mode;
u16 fieldA;
bool32 hasAnyRibbons;
- struct UnknownSubStruct_0203CF40 *field10[SUBSTRUCT_COUNT];
+ void *field10[SUBSTRUCT_COUNT];
+};
+
+struct UnknownPokenavCallbackStruct
+{
+ bool32 (*unk0)(void);
+ u32 (*unk4)(void);
+ bool32 (*unk8)(void);
+ void (*unkC)(int);
+ u32 (*unk10)(void);
+ void (*unk14)(void);
+ void (*unk18)(void);
};
-extern u32 sub_81C9430(void);
-extern void sub_81CAADC(void);
-extern u32 sub_81C99D4(void);
-extern void sub_8199D98(void);
-extern void sub_81C7D28(void);
-extern u32 sub_81C9298(void);
-extern u32 sub_81C941C(void);
-extern u32 sub_81C9924(void);
+extern bool32 sub_81C9924(void);
extern u32 sub_81C99C0(void);
-extern u32 sub_81C9990(void);
-extern u32 sub_81C9940(void);
-extern u32 sub_81C9338(void);
-extern u32 sub_81C9368(void);
-extern u32 sub_81C92CC(void);
-extern u32 sub_81C9304(void);
-extern u32 sub_81CC4D4(void);
-extern u32 sub_81CC554(void);
-extern u32 sub_81CC5F4(void);
-extern u32 sub_81CC62C(void);
-extern u32 sub_81CC65C(void);
-extern u32 sub_81CC524(void);
-extern u32 sub_81CC670(void);
+extern void sub_81C9990(int);
+extern bool32 sub_81C9940(void);
extern u32 sub_81CCFD8(void);
extern u32 sub_81CD070(void);
-extern u32 sub_81CDDD4(void);
-extern u32 sub_81CDE2C(void);
+extern bool32 sub_81CDDD4(void);
+extern void sub_81CDE2C(int);
extern u32 sub_81CDE64(void);
-extern u32 sub_81CD1C0(void);
-extern u32 sub_81CECA0(void);
+extern void sub_81CD1C0(void);
+extern void sub_81CECA0(void);
extern u32 sub_81CEF3C(void);
extern u32 sub_81CEFDC(void);
-extern u32 sub_81CF330(void);
-extern u32 sub_81CF3A0(void);
+extern bool32 sub_81CF330(void);
+extern void sub_81CF3A0(int);
extern u32 sub_81CF3D0(void);
-extern u32 sub_81CEFF0(void);
-extern u32 sub_81CF3F8(void);
+extern void sub_81CEFF0(void);
+extern void sub_81CF3F8(void);
extern u32 sub_81CD024(void);
extern u32 sub_81CEF98(void);
-extern u32 sub_81CF368(void);
-extern u32 sub_81CAAE8(void);
-extern u32 sub_81CAB24(void);
-extern u32 sub_81CB260(void);
-extern u32 sub_81CB29C(void);
-extern u32 sub_81CB2CC(void);
-extern u32 sub_81CAB38(void);
-extern u32 sub_81CB2E0(void);
+extern bool32 sub_81CF368(void);
extern u32 sub_81CF9BC(void);
extern u32 sub_81CFA34(void);
-extern u32 sub_81CFDD0(void);
-extern u32 sub_81CFE40(void);
+extern bool32 sub_81CFDD0(void);
+extern void sub_81CFE40(int);
extern u32 sub_81CFE70(void);
-extern u32 sub_81CFA48(void);
-extern u32 sub_81CFE98(void);
+extern void sub_81CFA48(void);
+extern void sub_81CFE98(void);
extern u32 sub_81D0450(void);
extern u32 sub_81D04A0(void);
-extern u32 sub_81D0978(void);
-extern u32 sub_81D09B0(void);
+extern bool32 sub_81D0978(void);
+extern void sub_81D09B0(int);
extern u32 sub_81D09E0(void);
-extern u32 sub_81D04B8(void);
-extern u32 sub_81D09F4(void);
+extern void sub_81D04B8(void);
+extern void sub_81D09F4(void);
extern u32 sub_81CFA04(void);
-extern u32 sub_81CFE08(void);
+extern bool32 sub_81CFE08(void);
-u32 sub_81C791C(s32 a0);
-bool32 sub_81C756C(u32 a0);
-bool32 sub_81C76C4(void);
+static bool32 SetActivePokenavMenu(u32 menuId);
static bool32 AnyMonHasRibbon(void);
u32 sub_81C75E0(void);
u32 sub_81C75D4(void);
-u32 sub_81C76FC(void);
-u32 sub_81C786C(void);
-u32 sub_81C7764(s32 a0);
-u32 sub_81C78D4(s32 a0);
-bool32 sub_81C7738(void);
-void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 a1, u32 a2);
+u32 PokenavMainMenuLoopedTaskIsActive(void);
+bool32 WaitForPokenavShutdownFade(void);
void sub_81C7834(void *func1, void *func2);
-static void InitMainStruct(struct UnknownStruct_0203CF40 *a0);
-void FreeSubstruct(u32 index);
-void sub_81C7850(u32 a0);
-void sub_81C7BF8(u32 a0);
-void sub_81C71E4(u8 a0);
-void sub_81C7170(u8 taskId);
+static void InitPokenavResources(struct PokenavResources *a0);
+void Task_RunLoopedTask_LinkMode(u8 a0);
+void Task_RunLoopedTask(u8 taskId);
void sub_81C742C(u8 taskId);
-void sub_81C7710(void);
+void ShutdownPokenav(void);
static void InitKeys_(void);
-static void FreeVars(void);
-static void VblankCb_Pokenav(void);
+static void FreePokenavResources(void);
+static void VBlankCB_Pokenav(void);
static void CB2_Pokenav(void);
-void sub_81C7C28(void);
void sub_81C72BC(void);
-void sub_81C7B74(void);
-void sub_81C7C94(void);
-void sub_81C7F24(u32 arg0);
-void sub_81C7E58(u32 arg0);
-void sub_81C8110(bool32 arg0);
-void sub_81C80D4(bool32 arg0);
-void sub_81C803C(u32 arg0, bool32 arg1);
-void sub_81C8088(u32 arg0, bool32 arg1);
-void sub_81C814C(struct Sprite *sprite, s32 arg1, s32 arg2, s32 arg3);
-void sub_81C817C(struct Sprite *sprite);
-// Const rom data.
-u32 (*const gUnknown_0861F3EC[15][7])(void) =
+const struct UnknownPokenavCallbackStruct PokenavMenuCallbacks[15] =
{
{
- sub_81C9298,
- sub_81C941C,
- sub_81C9924,
- sub_81C9990,
- sub_81C99C0,
- sub_81C9430,
- sub_81C99D4,
+ .unk0 = sub_81C9298,
+ .unk4 = sub_81C941C,
+ .unk8 = sub_81C9924,
+ .unkC = sub_81C9990,
+ .unk10 = sub_81C99C0,
+ .unk14 = sub_81C9430,
+ .unk18 = sub_81C99D4,
},
{
- sub_81C9298,
- sub_81C941C,
- sub_81C9940,
- sub_81C9990,
- sub_81C99C0,
- sub_81C9430,
- sub_81C99D4,
+ .unk0 = sub_81C9298,
+ .unk4 = sub_81C941C,
+ .unk8 = sub_81C9940,
+ .unkC = sub_81C9990,
+ .unk10 = sub_81C99C0,
+ .unk14 = sub_81C9430,
+ .unk18 = sub_81C99D4,
},
{
- sub_81C9338,
- sub_81C941C,
- sub_81C9940,
- sub_81C9990,
- sub_81C99C0,
- sub_81C9430,
- sub_81C99D4,
+ .unk0 = sub_81C9338,
+ .unk4 = sub_81C941C,
+ .unk8 = sub_81C9940,
+ .unkC = sub_81C9990,
+ .unk10 = sub_81C99C0,
+ .unk14 = sub_81C9430,
+ .unk18 = sub_81C99D4,
},
{
- sub_81C9368,
- sub_81C941C,
- sub_81C9940,
- sub_81C9990,
- sub_81C99C0,
- sub_81C9430,
- sub_81C99D4,
+ .unk0 = sub_81C9368,
+ .unk4 = sub_81C941C,
+ .unk8 = sub_81C9940,
+ .unkC = sub_81C9990,
+ .unk10 = sub_81C99C0,
+ .unk14 = sub_81C9430,
+ .unk18 = sub_81C99D4,
},
{
- sub_81C92CC,
- sub_81C941C,
- sub_81C9940,
- sub_81C9990,
- sub_81C99C0,
- sub_81C9430,
- sub_81C99D4,
+ .unk0 = sub_81C92CC,
+ .unk4 = sub_81C941C,
+ .unk8 = sub_81C9940,
+ .unkC = sub_81C9990,
+ .unk10 =sub_81C99C0,
+ .unk14 = sub_81C9430,
+ .unk18 = sub_81C99D4,
},
{
- sub_81C9304,
- sub_81C941C,
- sub_81C9940,
- sub_81C9990,
- sub_81C99C0,
- sub_81C9430,
- sub_81C99D4,
+ .unk0 = sub_81C9304,
+ .unk4 = sub_81C941C,
+ .unk8 = sub_81C9940,
+ .unkC = sub_81C9990,
+ .unk10 = sub_81C99C0,
+ .unk14 = sub_81C9430,
+ .unk18 = sub_81C99D4,
},
{
- sub_81CC4D4,
- sub_81CC554,
- sub_81CC5F4,
- sub_81CC62C,
- sub_81CC65C,
- sub_81CC524,
- sub_81CC670,
+ .unk0 = sub_81CC4D4,
+ .unk4 = sub_81CC554,
+ .unk8 = sub_81CC5F4,
+ .unkC = sub_81CC62C,
+ .unk10 = sub_81CC65C,
+ .unk14 = sub_81CC524,
+ .unk18 = sub_81CC670,
},
{
- sub_81CCFD8,
- sub_81CD070,
- sub_81CDDD4,
- sub_81CDE2C,
- sub_81CDE64,
- sub_81CD1C0,
- sub_81CECA0,
+ .unk0 = sub_81CCFD8,
+ .unk4 = sub_81CD070,
+ .unk8 = sub_81CDDD4,
+ .unkC = sub_81CDE2C,
+ .unk10 = sub_81CDE64,
+ .unk14 = sub_81CD1C0,
+ .unk18 = sub_81CECA0,
},
{
- sub_81CEF3C,
- sub_81CEFDC,
- sub_81CF330,
- sub_81CF3A0,
- sub_81CF3D0,
- sub_81CEFF0,
- sub_81CF3F8,
+ .unk0 = sub_81CEF3C,
+ .unk4 = sub_81CEFDC,
+ .unk8 = sub_81CF330,
+ .unkC = sub_81CF3A0,
+ .unk10 = sub_81CF3D0,
+ .unk14 = sub_81CEFF0,
+ .unk18 = sub_81CF3F8,
},
{
- sub_81CD024,
- sub_81CD070,
- sub_81CDDD4,
- sub_81CDE2C,
- sub_81CDE64,
- sub_81CD1C0,
- sub_81CECA0,
+ .unk0 = sub_81CD024,
+ .unk4 = sub_81CD070,
+ .unk8 = sub_81CDDD4,
+ .unkC = sub_81CDE2C,
+ .unk10 = sub_81CDE64,
+ .unk14 = sub_81CD1C0,
+ .unk18 = sub_81CECA0,
},
{
- sub_81CEF98,
- sub_81CEFDC,
- sub_81CF368,
- sub_81CF3A0,
- sub_81CF3D0,
- sub_81CEFF0,
- sub_81CF3F8,
+ .unk0 = sub_81CEF98,
+ .unk4 = sub_81CEFDC,
+ .unk8 = sub_81CF368,
+ .unkC = sub_81CF3A0,
+ .unk10 = sub_81CF3D0,
+ .unk14 = sub_81CEFF0,
+ .unk18 = sub_81CF3F8,
},
{
- sub_81CAAE8,
- sub_81CAB24,
- sub_81CB260,
- sub_81CB29C,
- sub_81CB2CC,
- sub_81CAB38,
- sub_81CB2E0,
+ .unk0 = sub_81CAAE8,
+ .unk4 = sub_81CAB24,
+ .unk8 = sub_81CB260,
+ .unkC = sub_81CB29C,
+ .unk10 = sub_81CB2CC,
+ .unk14 = sub_81CAB38,
+ .unk18 = sub_81CB2E0,
},
{
- sub_81CF9BC,
- sub_81CFA34,
- sub_81CFDD0,
- sub_81CFE40,
- sub_81CFE70,
- sub_81CFA48,
- sub_81CFE98,
- },
- {
- sub_81D0450,
- sub_81D04A0,
- sub_81D0978,
- sub_81D09B0,
- sub_81D09E0,
- sub_81D04B8,
- sub_81D09F4,
- },
- {
- sub_81CFA04,
- sub_81CFA34,
- sub_81CFE08,
- sub_81CFE40,
- sub_81CFE70,
- sub_81CFA48,
- sub_81CFE98,
- },
-};
-
-const u16 gUnknown_0861F590[] = INCBIN_U16("graphics/pokenav/icon2.gbapal");
-const u32 gUnknown_0861F5B0[] = INCBIN_U32("graphics/pokenav/icon2.4bpp.lz");
-const u32 gUnknown_0861F994[] = INCBIN_U32("graphics/pokenav/icon2_unused.4bpp.lz");
-
-const struct BgTemplate gUnknown_0861FA04[] =
-{
- {
- .bg = 0,
- .charBaseIndex = 0,
- .mapBaseIndex = 5,
- .screenSize = 0,
- .paletteMode = 0,
- .priority = 0,
- .baseTile = 0,
- }
-};
-
-const struct WindowTemplate gUnknown_0861FA08[2] =
-{
- {
- .bg = 0,
- .tilemapLeft = 1,
- .tilemapTop = 22,
- .width = 16,
- .height = 2,
- .paletteNum = 0,
- .baseBlock = 0x36,
+ .unk0 = sub_81CF9BC,
+ .unk4 = sub_81CFA34,
+ .unk8 = sub_81CFDD0,
+ .unkC = sub_81CFE40,
+ .unk10 = sub_81CFE70,
+ .unk14 = sub_81CFA48,
+ .unk18 = sub_81CFE98,
},
{
- .bg = 0xFF,
- .tilemapLeft = 0,
- .tilemapTop = 0,
- .width = 0,
- .height = 0,
- .paletteNum = 0,
- .baseBlock = 0,
+ .unk0 = sub_81D0450,
+ .unk4 = sub_81D04A0,
+ .unk8 = sub_81D0978,
+ .unkC = sub_81D09B0,
+ .unk10 = sub_81D09E0,
+ .unk14 = sub_81D04B8,
+ .unk18 = sub_81D09F4,
},
-};
-
-const u8 *const (sMenuButtonReminders[12]) =
-{
- gText_Navgear_ClearButtonList,
- gText_NavgearMap_ZoomedOutButtons,
- gText_NavgearMap_ZoomedInButtons,
- gText_NavgearCondition_MonListButtons,
- gText_NavgearCondition_MonStatusButtons,
- gText_NavgearCondition_MarkingButtons,
- gText_NavgearMatchCall_TrainerListButtons,
- gText_NavgearMatchCall_CallMenuButtons,
- gText_NavgearMatchCall_CheckTrainerButtons,
- gText_NavgearRibbons_MonListButtons,
- gText_NavgearRibbons_RibbonListButtons,
- gText_NavgearRibbons_RibbonCheckButtons,
-};
-
-const u8 gMenuButtonReminderColor[4] =
-{
- 4, 1, 2, 0
-};
-
-const struct CompressedSpriteSheet gUnknown_0861FA4C[] =
-{
- {
- .data = gUnknown_0861F5B0,
- .size = 0x1000,
- .tag = 0,
- }
-};
-
-const struct SpritePalette gUnknown_0861FA54[2] =
-{
{
- .data = gUnknown_0861F590,
- .tag = 0,
+ .unk0 = sub_81CFA04,
+ .unk4 = sub_81CFA34,
+ .unk8 = sub_81CFE08,
+ .unkC = sub_81CFE40,
+ .unk10 = sub_81CFE70,
+ .unk14 = sub_81CFA48,
+ .unk18 = sub_81CFE98,
},
};
-const struct CompressedSpriteSheet gUnknown_0861FA64 =
-{
- .data = gPokenavLeftHeaderHoennMap_Gfx,
- .size = 0xC00,
- .tag = 2
-};
-
-extern struct UnknownStruct_0203CF40 *gUnknown_0203CF40;
-extern u8 gUnknown_0203CF3C;
-extern const struct SpriteTemplate gUnknown_0861FB04;
+EWRAM_DATA u8 gNextLoopedTaskId = 0;
+EWRAM_DATA struct PokenavResources *gPokenavResources = NULL;
// code
-u32 sub_81C7078(u32 (*func)(s32), u32 priority)
+u32 CreateLoopedTask(LoopedTask loopedTask, u32 priority)
{
u16 taskId;
if (!IsUpdateLinkStateCBActive())
- taskId = CreateTask(sub_81C7170, priority);
+ taskId = CreateTask(Task_RunLoopedTask, priority);
else
- taskId = CreateTask(sub_81C71E4, priority);
+ taskId = CreateTask(Task_RunLoopedTask_LinkMode, priority);
- SetWordTaskArg(taskId, 1, (u32)func);
+ SetWordTaskArg(taskId, 1, (u32)loopedTask);
- gTasks[taskId].data[3] = gUnknown_0203CF3C;
- return ((gUnknown_0203CF3C++) << 16) | taskId;
+ gTasks[taskId].data[3] = gNextLoopedTaskId;
+ return LOOPED_TASK_ID(taskId, gNextLoopedTaskId++);
}
-bool32 sub_81C70D8(u32 a0)
+bool32 IsLoopedTaskActive(u32 taskId)
{
- u32 taskId = a0 & 0xFFFF;
- u32 v2 = a0 >> 16;
+ u32 primaryId = LOOPED_TASK_PRIMARY_ID(taskId);
+ u32 secondaryId = LOOPED_TASK_SECONDARY_ID(taskId);
- if (gTasks[taskId].isActive
- && (gTasks[taskId].func == sub_81C7170 || gTasks[taskId].func == sub_81C71E4)
- && gTasks[taskId].data[3] == v2)
+ if (gTasks[primaryId].isActive
+ && (gTasks[primaryId].func == Task_RunLoopedTask || gTasks[primaryId].func == Task_RunLoopedTask_LinkMode)
+ && gTasks[primaryId].data[3] == secondaryId)
return TRUE;
else
return FALSE;
}
-bool32 sub_81C7124(u32 a0)
+bool32 FuncIsActiveLoopedTask(LoopedTask func)
{
- s32 i;
+ int i;
for (i = 0; i < NUM_TASKS; i++)
{
if (gTasks[i].isActive
- && (gTasks[i].func == sub_81C7170 || gTasks[i].func == sub_81C71E4)
- && GetWordTaskArg(i, 1) == a0)
+ && (gTasks[i].func == Task_RunLoopedTask || gTasks[i].func == Task_RunLoopedTask_LinkMode)
+ && (LoopedTask)GetWordTaskArg(i, 1) == func)
return TRUE;
}
return FALSE;
}
-void sub_81C7170(u8 taskId)
+void Task_RunLoopedTask(u8 taskId)
{
- u32 (*func)(s32) = (void *)GetWordTaskArg(taskId, 1);
- s16 *data = gTasks[taskId].data;
+ LoopedTask loopedTask = (LoopedTask)GetWordTaskArg(taskId, 1);
+ s16 *state = &gTasks[taskId].data[0];
bool32 exitLoop = FALSE;
while (!exitLoop)
{
- u32 var = func(data[0]);
- switch (var)
+ u32 action = loopedTask(*state);
+ switch (action)
{
- case 1:
- data[0] = data[0] + 1;
+ case LT_INC_AND_CONTINUE:
+ (*state)++;
break;
- case 0:
- data[0]++;
+ case LT_INC_AND_PAUSE:
+ (*state)++;
return;
- case 4:
+ case LT_FINISH:
DestroyTask(taskId);
return;
+ // case LT_SET_STATE:
default:
- data[0] = var - 5;
+ *state = LOOPED_TASK_DECODE_STATE(action);
break;
- case 3:
+ case LT_CONTINUE:
break;
- case 2:
+ case LT_PAUSE:
return;
}
}
}
-void sub_81C71E4(u8 taskId)
+// Every "Continue" action pauses instead.
+void Task_RunLoopedTask_LinkMode(u8 taskId)
{
- u32 (*func)(u32);
- s16 *data;
- u32 v1;
+ LoopedTask task;
+ s16 *state;
+ u32 action;
if (sub_8087598())
return;
- func = (u32 (*)(u32))GetWordTaskArg(taskId, 1);
- data = gTasks[taskId].data;
- v1 = func(data[0]);
- switch (v1)
- {
- case 0:
- case 1:
- data[0]++;
+
+ task = (LoopedTask)GetWordTaskArg(taskId, 1);
+ state = &gTasks[taskId].data[0];
+ action = task(*state);
+ switch (action)
+ {
+ case LT_INC_AND_PAUSE:
+ case LT_INC_AND_CONTINUE:
+ (*state)++;
break;
- case 4:
+ case LT_FINISH:
DestroyTask(taskId);
break;
+ // case: LT_SET_STATE:
default:
- data[0] = v1 - 5;
+ *state = LOOPED_TASK_DECODE_STATE(action);
break;
- case 2:
- case 3:
+ case LT_PAUSE:
+ case LT_CONTINUE:
break;
}
}
void CB2_InitPokeNav(void)
{
- gUnknown_0203CF40 = Alloc(sizeof(*gUnknown_0203CF40));
- if (gUnknown_0203CF40 == NULL)
+ gPokenavResources = Alloc(sizeof(*gPokenavResources));
+ if (gPokenavResources == NULL)
{
SetMainCallback2(CB2_ReturnToFieldWithOpenMenu);
}
else
{
- InitMainStruct(gUnknown_0203CF40);
+ InitPokenavResources(gPokenavResources);
ResetTasks();
SetVBlankCallback(NULL);
CreateTask(sub_81C742C, 0);
SetMainCallback2(CB2_Pokenav);
- SetVBlankCallback(VblankCb_Pokenav);
+ SetVBlankCallback(VBlankCB_Pokenav);
}
}
@@ -515,53 +371,52 @@ void sub_81C72BC(void)
if (gPaletteFade.active)
return;
- gUnknown_0203CF40 = Alloc(sizeof(*gUnknown_0203CF40));
- if (gUnknown_0203CF40 == NULL)
+ gPokenavResources = Alloc(sizeof(*gPokenavResources));
+ if (gPokenavResources == NULL)
{
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
}
else
{
- InitMainStruct(gUnknown_0203CF40);
- gUnknown_0203CF40->mode = MODE_FORCE_CALL_1;
+ InitPokenavResources(gPokenavResources);
+ gPokenavResources->mode = POKENAV_MODE_FORCE_CALL_1;
ResetTasks();
ResetSpriteData();
FreeAllSpritePalettes();
SetVBlankCallback(NULL);
CreateTask(sub_81C742C, 0);
SetMainCallback2(CB2_Pokenav);
- SetVBlankCallback(VblankCb_Pokenav);
+ SetVBlankCallback(VBlankCB_Pokenav);
}
}
-static void FreeVars(void)
+static void FreePokenavResources(void)
{
- s32 i;
+ int i;
for (i = 0; i < SUBSTRUCT_COUNT; i++)
- FreeSubstruct(i);
+ FreePokenavSubstruct(i);
- FREE_AND_SET_NULL(gUnknown_0203CF40);
+ FREE_AND_SET_NULL(gPokenavResources);
InitKeys();
}
-// Clears UnknownStruct_0203CF40
-static void InitMainStruct(struct UnknownStruct_0203CF40 *a0)
+static void InitPokenavResources(struct PokenavResources *a0)
{
- s32 i;
+ int i;
for (i = 0; i < SUBSTRUCT_COUNT; i++)
a0->field10[i] = NULL;
- a0->mode = MODE_NORMAL;
- a0->field4 = 0;
+ a0->mode = POKENAV_MODE_NORMAL;
+ a0->currentMenuIndex = 0;
a0->hasAnyRibbons = AnyMonHasRibbon();
- a0->field0 = NULL;
+ a0->currentMenuCb1 = NULL;
}
static bool32 AnyMonHasRibbon(void)
{
- s32 i, j;
+ int i, j;
for (i = 0; i < PARTY_SIZE; i++)
{
@@ -596,7 +451,7 @@ static void CB2_Pokenav(void)
UpdatePaletteFade();
}
-static void VblankCb_Pokenav(void)
+static void VBlankCB_Pokenav(void)
{
TransferPlttBuffer();
LoadOam();
@@ -611,13 +466,14 @@ void sub_81C742C(u8 taskId)
switch (data[0])
{
case 0:
- sub_81C76C4();
+ InitPokenavMainMenu();
data[0] = 1;
break;
case 1:
- if (sub_81C76FC())
+ // Wait for LoopedTask_InitPokenavMenu to finish
+ if (PokenavMainMenuLoopedTaskIsActive())
break;
- sub_81C756C(UNKNOWN_OFFSET);
+ SetActivePokenavMenu(POKENAV_MENU_0);
data[0] = 4;
break;
case 2:
@@ -628,20 +484,20 @@ void sub_81C742C(u8 taskId)
v1 = sub_81C75E0();
if (v1 == -1)
{
- sub_81C7710();
+ ShutdownPokenav();
data[0] = 5;
}
- else if (v1 >= UNKNOWN_OFFSET)
+ else if (v1 >= POKENAV_MENU_IDS_START)
{
- gUnknown_0861F3EC[gUnknown_0203CF40->field4][6]();
- gUnknown_0861F3EC[gUnknown_0203CF40->field4][5]();
- if (sub_81C756C(v1))
+ PokenavMenuCallbacks[gPokenavResources->currentMenuIndex].unk18();
+ PokenavMenuCallbacks[gPokenavResources->currentMenuIndex].unk14();
+ if (SetActivePokenavMenu(v1))
{
data[0] = 4;
}
else
{
- sub_81C7710();
+ ShutdownPokenav();
data[0] = 5;
}
}
@@ -657,12 +513,12 @@ void sub_81C742C(u8 taskId)
data[0] = 3;
break;
case 5:
- if (!sub_81C7738())
+ if (!WaitForPokenavShutdownFade())
{
- bool32 calledFromScript = (gUnknown_0203CF40->mode != MODE_NORMAL);
+ bool32 calledFromScript = (gPokenavResources->mode != POKENAV_MODE_NORMAL);
sub_81C9430();
- FreeVars();
+ FreePokenavResources();
if (calledFromScript)
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
else
@@ -672,19 +528,19 @@ void sub_81C742C(u8 taskId)
}
}
-bool32 sub_81C756C(u32 a0)
+static bool32 SetActivePokenavMenu(u32 menuId)
{
- u32 index = a0 - UNKNOWN_OFFSET;
+ u32 index = menuId - POKENAV_MENU_IDS_START;
InitKeys_();
- if (!gUnknown_0861F3EC[index][0]())
+ if (!PokenavMenuCallbacks[index].unk0())
return FALSE;
- if (!gUnknown_0861F3EC[index][2]())
+ if (!PokenavMenuCallbacks[index].unk8())
return FALSE;
- sub_81C7834(gUnknown_0861F3EC[index][3], gUnknown_0861F3EC[index][4]);
- gUnknown_0203CF40->field0 = gUnknown_0861F3EC[index][1];
- gUnknown_0203CF40->field4 = index;
+ sub_81C7834(PokenavMenuCallbacks[index].unkC, PokenavMenuCallbacks[index].unk10);
+ gPokenavResources->currentMenuCb1 = PokenavMenuCallbacks[index].unk4;
+ gPokenavResources->currentMenuIndex = index;
return TRUE;
}
@@ -695,7 +551,7 @@ u32 sub_81C75D4(void)
u32 sub_81C75E0(void)
{
- return gUnknown_0203CF40->field0();
+ return gPokenavResources->currentMenuCb1();
}
static void InitKeys_(void)
@@ -710,33 +566,34 @@ void SetVBlankCallback_(IntrCallback callback)
void SetPokenavVBlankCallback(void)
{
- SetVBlankCallback(VblankCb_Pokenav);
+ SetVBlankCallback(VBlankCB_Pokenav);
}
void *AllocSubstruct(u32 index, u32 size)
{
- return gUnknown_0203CF40->field10[index] = Alloc(size);
+ gPokenavResources->field10[index] = Alloc(size);
+ return gPokenavResources->field10[index];
}
-struct UnknownSubStruct_0203CF40 *GetSubstructPtr(u32 index)
+void *GetSubstructPtr(u32 index)
{
- return gUnknown_0203CF40->field10[index];
+ return gPokenavResources->field10[index];
}
-void FreeSubstruct(u32 index)
+void FreePokenavSubstruct(u32 index)
{
- if (gUnknown_0203CF40->field10[index] != NULL)
- FREE_AND_SET_NULL(gUnknown_0203CF40->field10[index]);
+ if (gPokenavResources->field10[index] != NULL)
+ FREE_AND_SET_NULL(gPokenavResources->field10[index]);
}
-u16 GetPokenavMode(void)
+u32 GetPokenavMode(void)
{
- return gUnknown_0203CF40->mode;
+ return gPokenavResources->mode;
}
void SetPokenavMode(u16 mode)
{
- gUnknown_0203CF40->mode = mode;
+ gPokenavResources->mode = mode;
}
void sub_81C7694(u32 a0)
@@ -745,689 +602,15 @@ void sub_81C7694(u32 a0)
if (value > 4)
value = 0;
- gUnknown_0203CF40->fieldA = value;
+ gPokenavResources->fieldA = value;
}
u16 sub_81C76AC(void)
{
- return gUnknown_0203CF40->fieldA;
+ return gPokenavResources->fieldA;
}
bool32 CanViewRibbonsMenu(void)
{
- return gUnknown_0203CF40->hasAnyRibbons;
-}
-
-bool32 sub_81C76C4(void)
-{
- struct UnknownSubStruct_0203CF40 *structPtr = AllocSubstruct(0, 0x82C);
- if (structPtr == NULL)
- return FALSE;
-
- ResetSpriteData();
- FreeAllSpritePalettes();
- structPtr->unkC = sub_81C7078(sub_81C7764, 1);
- return TRUE;
-}
-
-u32 sub_81C76FC(void)
-{
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
- return sub_81C70D8(structPtr->unkC);
-}
-
-void sub_81C7710(void)
-{
- PlaySE(SE_PN_OFF);
- sub_81CAADC();
- BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK);
-}
-
-bool32 sub_81C7738(void)
-{
- if (!gPaletteFade.active)
- {
- sub_81C99D4();
- sub_81C7C94();
- FreeAllWindowBuffers();
- return FALSE;
- }
-
- return TRUE;
-}
-
-u32 sub_81C7764(s32 a0)
-{
- struct UnknownSubStruct_0203CF40 *structPtr;
-
- switch (a0)
- {
- case 0:
- SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
- FreeAllWindowBuffers();
- ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gUnknown_0861FA04, ARRAY_COUNT(gUnknown_0861FA04));
- sub_8199D98();
- reset_temp_tile_data_buffers();
- return 1;
- case 1:
- structPtr = GetSubstructPtr(0);
- decompress_and_copy_tile_data_to_vram(0, &gPokenavHeader_Gfx, 0, 0, 0);
- SetBgTilemapBuffer(0, structPtr->tilemapBuffer);
- CopyToBgTilemapBuffer(0, &gPokenavHeader_Tilemap, 0, 0);
- CopyPaletteIntoBufferUnfaded(gPokenavHeader_Pal, 0, 0x20);
- CopyBgTilemapBufferToVram(0);
- return 0;
- case 2:
- if (free_temp_tile_data_buffers_if_possible())
- return 2;
-
- sub_81C7B74();
- return 0;
- case 3:
- if (IsDma3ManagerBusyWithBgCopy())
- return 2;
-
- sub_81C7C28();
- sub_81C7D28();
- ShowBg(0);
- return 4;
- default:
- return 4;
- }
-}
-
-void sub_81C7834(void *func1, void *func2) // Fix types later.
-{
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
- structPtr->unk0 = func1;
- structPtr->unk4 = func2;
- structPtr->unk8 = 0;
-}
-
-void sub_81C7850(u32 a0)
-{
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
- structPtr->unk8 = 0;
- structPtr->unk0(a0);
-}
-
-u32 sub_81C786C(void)
-{
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
- return structPtr->unk4();
-}
-
-void sub_81C7880(void)
-{
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
- structPtr->unkC = sub_81C7078(sub_81C78D4, 4);
-}
-
-void sub_81C78A0(void)
-{
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
- structPtr->unkC = sub_81C7078(sub_81C791C, 4);
-}
-
-bool32 sub_81C78C0(void)
-{
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
- return sub_81C70D8(structPtr->unkC);
-}
-
-u32 sub_81C78D4(s32 a0)
-{
- switch (a0)
- {
- default:
- return 4;
- case 1:
- return 0;
- case 0:
- return 0;
- case 2:
- if (ChangeBgY(0, 384, 1) >= 0x2000u)
- {
- ChangeBgY(0, 0x2000, 0);
- return 4;
- }
-
- return 2;
- }
-}
-
-u32 sub_81C791C(s32 a0)
-{
- if (ChangeBgY(0, 384, 2) <= 0)
- {
- ChangeBgY(0, 0, 0);
- return 4;
- }
- return 2;
-}
-
-void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 bufferOffset, u32 size)
-{
- CpuCopy16(palette, gPlttBufferUnfaded + bufferOffset, size);
-}
-
-void sub_81C795C(const struct SpritePalette *palettes)
-{
- const struct SpritePalette *current;
- u32 index;
-
- for (current = palettes; current->data != NULL; current++)
- {
- index = AllocSpritePalette(current->tag);
- if (index == 0xFF)
- {
- break;
- }
- else
- {
- index = (index * 16) + 0x100;
- CopyPaletteIntoBufferUnfaded(current->data, index, 0x20);
- }
- }
-}
-
-void sub_81C7990(u32 a0, u16 a1)
-{
- CpuFill16(a1, gPlttBufferFaded + 0x100 + (a0 * 16), 16 * sizeof(u16));
-}
-
-__attribute__((naked))
-void sub_81C79BC(u16 *a0, u16 *a1, u32 a2, u32 a3, u32 a4, u32 a5)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0xC\n\
- str r0, [sp]\n\
- str r1, [sp, 0x4]\n\
- mov r10, r2\n\
- str r3, [sp, 0x8]\n\
- ldr r0, [sp, 0x2C]\n\
- cmp r0, 0\n\
- bne _081C79E4\n\
- ldr r2, =0x001fffff\n\
- mov r1, r10\n\
- ands r2, r1\n\
- ldr r0, [sp]\n\
- b _081C79F4\n\
- .pool\n\
-_081C79E4:\n\
- ldr r2, [sp, 0x2C]\n\
- ldr r0, [sp, 0x8]\n\
- cmp r2, r0\n\
- blt _081C7A00\n\
- ldr r2, =0x001fffff\n\
- mov r1, r10\n\
- ands r2, r1\n\
- ldr r0, [sp, 0x4]\n\
-_081C79F4:\n\
- ldr r1, [sp, 0x30]\n\
- bl CpuSet\n\
- b _081C7AAE\n\
- .pool\n\
-_081C7A00:\n\
- movs r2, 0x1\n\
- negs r2, r2\n\
- add r10, r2\n\
- b _081C7AA6\n\
-_081C7A08:\n\
- ldr r1, [sp]\n\
- ldrh r0, [r1]\n\
- movs r2, 0x1F\n\
- mov r9, r2\n\
- mov r1, r9\n\
- ands r1, r0\n\
- mov r9, r1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 21\n\
- movs r1, 0x1F\n\
- ands r1, r2\n\
- mov r8, r1\n\
- lsrs r7, r0, 26\n\
- movs r2, 0x1F\n\
- ands r7, r2\n\
- ldr r0, [sp, 0x4]\n\
- ldrh r4, [r0]\n\
- movs r0, 0x1F\n\
- ands r0, r4\n\
- mov r1, r9\n\
- subs r0, r1\n\
- lsls r0, 8\n\
- ldr r1, [sp, 0x8]\n\
- bl __divsi3\n\
- ldr r2, [sp, 0x2C]\n\
- adds r6, r0, 0\n\
- muls r6, r2\n\
- asrs r6, 8\n\
- lsls r4, 16\n\
- lsrs r0, r4, 21\n\
- movs r1, 0x1F\n\
- ands r0, r1\n\
- mov r2, r8\n\
- subs r0, r2\n\
- lsls r0, 8\n\
- ldr r1, [sp, 0x8]\n\
- bl __divsi3\n\
- ldr r1, [sp, 0x2C]\n\
- adds r5, r0, 0\n\
- muls r5, r1\n\
- asrs r5, 8\n\
- lsrs r4, 26\n\
- movs r2, 0x1F\n\
- ands r4, r2\n\
- subs r4, r7\n\
- lsls r4, 8\n\
- adds r0, r4, 0\n\
- ldr r1, [sp, 0x8]\n\
- bl __divsi3\n\
- ldr r1, [sp, 0x2C]\n\
- muls r0, r1\n\
- asrs r0, 8\n\
- add r6, r9\n\
- movs r2, 0x1F\n\
- ands r6, r2\n\
- add r5, r8\n\
- ands r5, r2\n\
- adds r0, r7, r0\n\
- ands r0, r2\n\
- lsls r0, 10\n\
- lsls r5, 5\n\
- orrs r0, r5\n\
- orrs r0, r6\n\
- ldr r1, [sp, 0x30]\n\
- strh r0, [r1]\n\
- ldr r2, [sp]\n\
- adds r2, 0x2\n\
- str r2, [sp]\n\
- ldr r0, [sp, 0x4]\n\
- adds r0, 0x2\n\
- str r0, [sp, 0x4]\n\
- adds r1, 0x2\n\
- str r1, [sp, 0x30]\n\
- movs r1, 0x1\n\
- negs r1, r1\n\
- add r10, r1\n\
-_081C7AA6:\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- cmp r10, r0\n\
- bne _081C7A08\n\
-_081C7AAE:\n\
- add sp, 0xC\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided");
-}
-
-void sub_81C7AC0(s32 a0)
-{
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
-
- switch (a0)
- {
- case 0:
- BeginNormalPaletteFade(structPtr->unk14, -2, 0, 16, RGB_BLACK);
- break;
- case 1:
- BeginNormalPaletteFade(structPtr->unk14, -2, 16, 0, RGB_BLACK);
- break;
- case 2:
- BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK);
- break;
- case 3:
- BeginNormalPaletteFade(0xFFFFFFFF, -2, 16, 0, RGB_BLACK);
- break;
- }
-}
-
-bool32 IsPaletteFadeActive(void)
-{
- return gPaletteFade.active;
-}
-
-void sub_81C7B40(void)
-{
- BlendPalettes(0xFFFEFFFE, 16, RGB_BLACK);
-}
-
-void InitBgTemplates(const struct BgTemplate *templates, s32 count)
-{
- s32 i;
-
- for (i = 0; i < count; i++)
- InitBgFromTemplate(templates++);
-}
-
-void sub_81C7B74(void)
-{
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
-
- InitWindows(&gUnknown_0861FA08[0]);
- structPtr->unk10 = 0;
- sub_81C7BF8(structPtr->unk10);
- PutWindowTilemap(structPtr->unk10);
- CopyWindowToVram(structPtr->unk10, 3); // TODO: Use a defined constant here.
-}
-
-void sub_81C7BA4(u32 a0)
-{
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
-
- sub_81C7BF8(structPtr->unk10);
- AddTextPrinterParameterized3(structPtr->unk10, 1, 0, 1, gMenuButtonReminderColor, 0, sMenuButtonReminders[a0]);
-}
-
-bool32 IsDma3ManagerBusyWithBgCopy_(void)
-{
- return IsDma3ManagerBusyWithBgCopy();
-}
-
-void sub_81C7BF8(u32 windowId)
-{
- FillWindowPixelBuffer(windowId, PIXEL_FILL(4));
- FillWindowPixelRect(windowId, PIXEL_FILL(5), 0, 0, 0x80, 1);
-}
-
-void sub_81C7C28(void)
-{
- s32 i;
- u8 spriteId;
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
-
- for (i = 0; i < ARRAY_COUNT(gUnknown_0861FA4C); i++)
- LoadCompressedSpriteSheet(&gUnknown_0861FA4C[i]);
-
- sub_81C795C(gUnknown_0861FA54);
- structPtr->unk14 = ~1 & ~(0x10000 << IndexOfSpritePaletteTag(0));
- spriteId = CreateSprite(&gUnknown_0861FB04, 220, 12, 0);
- structPtr->unk18 = &gSprites[spriteId];
-}
-
-void sub_81C7C94(void)
-{
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
-
- DestroySprite(structPtr->unk18);
- FreeSpriteTilesByTag(0);
- FreeSpritePaletteByTag(0);
-}
-
-void sub_81C7CB4(struct Sprite *sprite)
-{
- sprite->pos2.y = (GetBgY(0) / 256u) * -1;
-}
-
-struct Sprite *sub_81C7CCC(void)
-{
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
-
- structPtr->unk18->callback = SpriteCallbackDummy;
- return structPtr->unk18;
-}
-
-void sub_81C7CE4(void)
-{
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
-
- structPtr->unk18->pos1.x = 220;
- structPtr->unk18->pos1.y = 12;
- structPtr->unk18->callback = sub_81C7CB4;
- structPtr->unk18->invisible = FALSE;
- structPtr->unk18->oam.priority = 0;
- structPtr->unk18->subpriority = 0;
-}
-
-extern const struct SpriteTemplate gUnknown_0861FB2C;
-extern const struct SpriteTemplate gUnknown_0861FB44;
-extern const struct CompressedSpriteSheet gUnknown_0861FA6C[];
-
-void sub_81C7D28(void)
-{
- s32 i, spriteId;
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
-
- LoadCompressedSpriteSheet(&gUnknown_0861FA64);
- AllocSpritePalette(1);
- AllocSpritePalette(2);
- for (i = 0; i < 2; i++)
- {
- spriteId = CreateSprite(&gUnknown_0861FB2C, 0, 0, 1);
- structPtr->unk1C[i] = &gSprites[spriteId];
- structPtr->unk1C[i]->invisible = TRUE;
- structPtr->unk1C[i]->pos2.x = i * 64;
-
- spriteId = CreateSprite(&gUnknown_0861FB44, 0, 0, 2);
- structPtr->unk24[i] = &gSprites[spriteId];
- structPtr->unk24[i]->invisible = TRUE;
- structPtr->unk24[i]->pos2.x = i * 32;
- structPtr->unk24[i]->pos2.y = 18;
- structPtr->unk24[i]->oam.tileNum += (i * 8) + 64;
- }
-}
-
-void sub_81C7DFC(u32 arg0)
-{
- if (arg0 < 6)
- sub_81C7E58(arg0);
- else
- sub_81C7F24(arg0 - 6);
-}
-
-void sub_81C7E14(u32 arg0)
-{
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
-
- if (arg0 == 4)
- structPtr->unk1C[1]->oam.tileNum = GetSpriteTileStartByTag(2) + 32;
- else
- structPtr->unk1C[1]->oam.tileNum = GetSpriteTileStartByTag(2) + 64;
-}
-
-void sub_81C7E58(u32 arg0)
-{
- struct UnknownSubStruct_0203CF40 *structPtr;
- u32 size, tag;
-
- if (arg0 >= 6)
- return;
-
- structPtr = GetSubstructPtr(0);
- tag = gUnknown_0861FA6C[arg0].tag;
- size = GetDecompressedDataSize(gUnknown_0861FA6C[arg0].data);
- LoadPalette(&gPokenavLeftHeader_Pal[tag * 16], (IndexOfSpritePaletteTag(1) * 16) + 0x100, 0x20);
- LZ77UnCompWram(gUnknown_0861FA6C[arg0].data, gDecompressionBuffer);
- RequestDma3Copy(gDecompressionBuffer, (void *)VRAM + 0x10000 + (GetSpriteTileStartByTag(2) * 32), size, 1);
- structPtr->unk1C[1]->oam.tileNum = GetSpriteTileStartByTag(2) + gUnknown_0861FA6C[arg0].size;
-
- if (arg0 == 4 || arg0 == 5)
- structPtr->unk1C[1]->pos2.x = 56;
- else
- structPtr->unk1C[1]->pos2.x = 64;
-}
-
-// Needed to match u32/u16 tag field difference.
-struct CompressedSpritePalette_
-{
- const u32 *data; // LZ77 compressed palette data
- u32 tag;
-};
-
-extern const struct CompressedSpritePalette_ gUnknown_0861FA9C[];
-
-void sub_81C7F24(u32 arg0)
-{
- u32 size, tag;
-
- if (arg0 >= 7)
- return;
-
- tag = gUnknown_0861FA9C[arg0].tag;
- size = GetDecompressedDataSize(gUnknown_0861FA9C[arg0].data);
- LoadPalette(&gPokenavLeftHeader_Pal[tag * 16], (IndexOfSpritePaletteTag(2) * 16) + 0x100, 0x20);
- LZ77UnCompWram(gUnknown_0861FA9C[arg0].data, &gDecompressionBuffer[0x1000]);
- RequestDma3Copy(&gDecompressionBuffer[0x1000], (void *)VRAM + 0x10800 + (GetSpriteTileStartByTag(2) * 32), size, 1);
-}
-
-void sub_81C7FA0(u32 arg0, bool32 arg1, bool32 arg2)
-{
- u32 var;
-
- if (!arg1)
- var = 0x30;
- else
- var = 0x10;
-
- if (arg0 < 6)
- sub_81C803C(var, arg2);
- else
- sub_81C8088(var, arg2);
-}
-
-void sub_81C7FC4(u32 arg0, bool32 arg1)
-{
- if (arg0 < 6)
- sub_81C80D4(arg1);
- else
- sub_81C8110(arg1);
-}
-
-void sub_81C7FDC(void)
-{
- s32 i;
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
-
- for (i = 0; i < 2; i++)
- {
- structPtr->unk1C[i]->invisible = TRUE;
- structPtr->unk24[i]->invisible = TRUE;
- }
-}
-
-bool32 sub_81C8010(void)
-{
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
-
- if (structPtr->unk1C[0]->callback == SpriteCallbackDummy && structPtr->unk24[0]->callback == SpriteCallbackDummy)
- return FALSE;
- else
- return TRUE;
-}
-
-void sub_81C803C(u32 arg0, bool32 arg1)
-{
- s32 var1, var2, i;
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
-
- if (!arg1)
- var1 = -96, var2 = 32;
- else
- var1 = 256, var2 = 160;
-
- for (i = 0; i < 2; i++)
- {
- structPtr->unk1C[i]->pos1.y = arg0;
- sub_81C814C(structPtr->unk1C[i], var1, var2, 12);
- }
-}
-
-void sub_81C8088(u32 arg0, bool32 arg1)
-{
- s32 var1, var2, i;
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
-
- if (!arg1)
- var1 = -96, var2 = 16;
- else
- var1 = 256, var2 = 192;
-
- for (i = 0; i < 2; i++)
- {
- structPtr->unk24[i]->pos1.y = arg0;
- sub_81C814C(structPtr->unk24[i], var1, var2, 12);
- }
-}
-
-void sub_81C80D4(bool32 arg0)
-{
- s32 var1, var2, i;
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
-
- if (!arg0)
- var1 = 32, var2 = -96;
- else
- var1 = 192, var2 = 256;
-
- for (i = 0; i < 2; i++)
- {
- sub_81C814C(structPtr->unk1C[i], var1, var2, 12);
- }
-}
-
-void sub_81C8110(bool32 arg0)
-{
- s32 var1, var2, i;
- struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
-
- if (!arg0)
- var1 = 16, var2 = -96;
- else
- var1 = 192, var2 = 256;
-
- for (i = 0; i < 2; i++)
- {
- sub_81C814C(structPtr->unk24[i], var1, var2, 12);
- }
-}
-
-void sub_81C814C(struct Sprite *sprite, s32 arg1, s32 arg2, s32 arg3)
-{
- sprite->pos1.x = arg1;
- sprite->data[0] = arg1 * 16;
- sprite->data[1] = (arg2 - arg1) * 16 / arg3;
- sprite->data[2] = arg3;
- sprite->data[7] = arg2;
- sprite->callback = sub_81C817C;
-}
-
-void sub_81C817C(struct Sprite *sprite)
-{
- if (sprite->data[2] != 0)
- {
- sprite->data[2]--;
- sprite->data[0] += sprite->data[1];
- sprite->pos1.x = sprite->data[0] >> 4;
- if (sprite->pos1.x < -16 || sprite->pos1.x > 256)
- sprite->invisible = TRUE;
- else
- sprite->invisible = FALSE;
- }
- else
- {
- sprite->pos1.x = sprite->data[7];
- sprite->callback = SpriteCallbackDummy;
- }
-}
-
-/*
-bool32 sub_81C81D4(const void *arg0, void *arg1, s32 arg3)
-{
- struct UnknownSubStruct_0203CF40 *structPtr = AllocSubstruct(0x11, 0x8A4);
-
- if (structPtr == NULL)
- return FALSE;
+ return gPokenavResources->hasAnyRibbons;
}
-*/
diff --git a/src/pokenav_main_menu.c b/src/pokenav_main_menu.c
new file mode 100644
index 000000000..94dab60bb
--- /dev/null
+++ b/src/pokenav_main_menu.c
@@ -0,0 +1,975 @@
+#include "global.h"
+#include "pokenav.h"
+#include "constants/songs.h"
+#include "sound.h"
+#include "constants/rgb.h"
+#include "palette.h"
+#include "bg.h"
+#include "window.h"
+#include "strings.h"
+#include "graphics.h"
+#include "decompress.h"
+#include "gpu_regs.h"
+#include "menu.h"
+#include "dma3.h"
+
+enum
+{
+ POKENAV_GFX_MAIN_MENU,
+ POKENAV_GFX_CONDITION_MENU,
+ POKENAV_GFX_RIBBONS_MENU,
+ POKENAV_GFX_MATCH_CALL_MENU,
+ // One of these is for the zoomed-in map, and the other is for the
+ // zoomed-out map. Don't know which is which yet.
+ POKENAV_GFX_MAP_MENU_UNK0,
+ POKENAV_GFX_MAP_MENU_UNK1,
+ POKENAV_GFX_PARTY_MENU,
+ POKENAV_GFX_SEARCH_MENU,
+ POKENAV_GFX_COOL_MENU,
+ POKENAV_GFX_BEAUTY_MENU,
+ POKENAV_GFX_CUTE_MENU,
+ POKENAV_GFX_SMART_MENU,
+ POKENAV_GFX_TOUGH_MENU,
+ POKENAV_GFX_MENUS_END,
+};
+
+#define POKENAV_GFX_SUBMENUS_START POKENAV_GFX_PARTY_MENU
+
+struct PokenavMainMenuResources
+{
+ void (*unk0)(u32);
+ u32 (*unk4)(void);
+ u32 unk8;
+ u32 currentTaskId;
+ u32 unk10;
+ u32 unk14;
+ struct Sprite *spinningPokenav;
+ struct Sprite *leftHeaderSprites[2];
+ struct Sprite *submenuLeftHeaderSprites[2];
+ u8 tilemapBuffer[0x800];
+};
+
+// This struct uses a 32bit tag, and doesn't have a size field.
+// Needed to match LoadLeftHeaderGfxForSubMenu.
+struct CompressedSpriteSheetNoSize
+{
+ const u32 *data; // LZ77 compressed palette data
+ u32 tag;
+};
+
+static void CleanupPokenavMainMenuResources(void);
+static void LoadLeftHeaderGfxForSubMenu(u32 arg0);
+static void LoadLeftHeaderGfxForMenu(u32 index);
+static void HideLeftHeaderSubmenuSprites(bool32 isOnRightSide);
+static void HideLeftHeaderSprites(bool32 isOnRightSide);
+static void ShowLeftHeaderSprites(u32 startY, bool32 isOnRightSide);
+static void ShowLeftHeaderSubmenuSprites(u32 startY, bool32 isOnRightSide);
+static void MoveLeftHeader(struct Sprite *sprite, int startX, int endX, int duration);
+static void SpriteCB_MoveLeftHeader(struct Sprite *sprite);
+static void InitPokenavMainMenuResources(void);
+static void InitHoennMapHeaderSprites(void);
+static void sub_81C7B74(void);
+static u32 LoopedTask_ScrollMenuHeaderDown(int a0);
+static u32 LoopedTask_ScrollMenuHeaderUp(int a0);
+static void sub_81C7BF8(u32 a0);
+static void SpriteCB_SpinningPokenav(struct Sprite* sprite);
+static u32 LoopedTask_InitPokenavMenu(int a0);
+
+const u16 gSpinningPokenavPaletteData[] = INCBIN_U16("graphics/pokenav/icon2.gbapal");
+const u32 gSpinningPokenavGfx[] = INCBIN_U32("graphics/pokenav/icon2.4bpp.lz");
+const u32 gUnused_SpinningPokenavGfx2[] = INCBIN_U32("graphics/pokenav/icon2_unused.4bpp.lz");
+
+const struct BgTemplate gPokenavMainMenuBgTemplates[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 5,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0,
+ }
+};
+
+const struct WindowTemplate gUnknown_0861FA08[2] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 22,
+ .width = 16,
+ .height = 2,
+ .paletteNum = 0,
+ .baseBlock = 0x36,
+ },
+ {
+ .bg = 0xFF,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 0,
+ .height = 0,
+ .paletteNum = 0,
+ .baseBlock = 0,
+ },
+};
+
+const u8 *const sHelpBarTexts[12] =
+{
+ gText_Pokenav_ClearButtonList,
+ gText_PokenavMap_ZoomedOutButtons,
+ gText_PokenavMap_ZoomedInButtons,
+ gText_PokenavCondition_MonListButtons,
+ gText_PokenavCondition_MonStatusButtons,
+ gText_PokenavCondition_MarkingButtons,
+ gText_PokenavMatchCall_TrainerListButtons,
+ gText_PokenavMatchCall_CallMenuButtons,
+ gText_PokenavMatchCall_CheckTrainerButtons,
+ gText_PokenavRibbons_MonListButtons,
+ gText_PokenavRibbons_RibbonListButtons,
+ gText_PokenavRibbons_RibbonCheckButtons,
+};
+
+const u8 gMenuButtonReminderColor[3] =
+{
+ 4, 1, 2
+};
+
+static const struct CompressedSpriteSheet gSpinningPokenavSpriteSheet[] =
+{
+ {
+ .data = gSpinningPokenavGfx,
+ .size = 0x1000,
+ .tag = 0,
+ }
+};
+
+static const struct SpritePalette gSpinningNavgearPalettes[] =
+{
+ {
+ .data = gSpinningPokenavPaletteData,
+ .tag = 0,
+ },
+ {}
+};
+
+static const struct CompressedSpriteSheet sPokenavHoennMapLeftHeaderSpriteSheet =
+{
+ .data = gPokenavLeftHeaderHoennMap_Gfx,
+ .size = 0xC00,
+ .tag = 2
+};
+
+static const struct CompressedSpriteSheet sPokenavMenuLeftHeaderSpriteSheets[] =
+{
+ [POKENAV_GFX_MAIN_MENU] = {
+ .data = gPokenavLeftHeaderMainMenu_Gfx,
+ .size = 0x20,
+ .tag = 3
+ },
+ [POKENAV_GFX_CONDITION_MENU] = {
+ .data = gPokenavLeftHeaderCondition_Gfx,
+ .size = 0x20,
+ .tag = 1
+ },
+ [POKENAV_GFX_RIBBONS_MENU] = {
+ .data = gPokenavLeftHeaderRibbons_Gfx,
+ .size = 0x20,
+ .tag = 2
+ },
+ [POKENAV_GFX_MATCH_CALL_MENU] = {
+ .data = gPokenavLeftHeaderMatchCall_Gfx,
+ .size = 0x20,
+ .tag = 4
+ },
+ [POKENAV_GFX_MAP_MENU_UNK0] = {
+ .data = gPokenavLeftHeaderHoennMap_Gfx,
+ .size = 0x20,
+ .tag = 0
+ },
+ [POKENAV_GFX_MAP_MENU_UNK1] = {
+ .data = gPokenavLeftHeaderHoennMap_Gfx,
+ .size = 0x40,
+ .tag = 0
+ }
+};
+
+static const struct CompressedSpriteSheetNoSize sPokenavSubMenuLeftHeaderSpriteSheets[] =
+{
+ [POKENAV_GFX_PARTY_MENU - POKENAV_GFX_SUBMENUS_START] = {
+ .data = gPokenavLeftHeaderParty_Gfx,
+ .tag = 1
+ },
+ [POKENAV_GFX_SEARCH_MENU - POKENAV_GFX_SUBMENUS_START] = {
+ .data = gPokenavLeftHeaderSearch_Gfx,
+ .tag = 1
+ },
+ [POKENAV_GFX_COOL_MENU - POKENAV_GFX_SUBMENUS_START] = {
+ .data = gPokenavLeftHeaderCool_Gfx,
+ .tag = 4
+ },
+ [POKENAV_GFX_BEAUTY_MENU - POKENAV_GFX_SUBMENUS_START] = {
+ .data = gPokenavLeftHeaderBeauty_Gfx,
+ .tag = 1
+ },
+ [POKENAV_GFX_CUTE_MENU - POKENAV_GFX_SUBMENUS_START] = {
+ .data = gPokenavLeftHeaderCute_Gfx,
+ .tag = 2
+ },
+ [POKENAV_GFX_SMART_MENU - POKENAV_GFX_SUBMENUS_START] = {
+ .data = gPokenavLeftHeaderSmart_Gfx,
+ .tag = 0
+ },
+ [POKENAV_GFX_TOUGH_MENU - POKENAV_GFX_SUBMENUS_START] = {
+ .data = gPokenavLeftHeaderTough_Gfx,
+ .tag = 0
+ }
+};
+
+static const struct OamData sSpinningPokenavSpriteOam =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x32),
+ .x = 0,
+ .size = SPRITE_SIZE(32x32),
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+};
+
+static const union AnimCmd sSpinningPokenavAnims[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_FRAME(32, 8),
+ ANIMCMD_FRAME(48, 8),
+ ANIMCMD_FRAME(64, 8),
+ ANIMCMD_FRAME(80, 8),
+ ANIMCMD_FRAME(96, 8),
+ ANIMCMD_FRAME(112, 8),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const sSpinningPokenavAnimTable[] =
+{
+ sSpinningPokenavAnims
+};
+
+static const struct SpriteTemplate sSpinningPokenavSpriteTemplate =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &sSpinningPokenavSpriteOam,
+ .anims = sSpinningPokenavAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_SpinningPokenav
+};
+
+static const struct OamData sPokenavLeftHeaderHoennMapSpriteOam =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x32),
+ .x = 0,
+ .size = SPRITE_SIZE(64x32),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+};
+
+static const struct OamData sUnknown_0861FB24 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(32x16),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(32x16),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+};
+
+static const struct SpriteTemplate sPokenavLeftHeaderHoennMapSpriteTemplate =
+{
+ .tileTag = 2,
+ .paletteTag = 1,
+ .oam = &sPokenavLeftHeaderHoennMapSpriteOam,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate sUnknown_0861FB44 =
+{
+ .tileTag = 2,
+ .paletteTag = 2,
+ .oam = &sUnknown_0861FB24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+bool32 InitPokenavMainMenu(void)
+{
+ struct PokenavMainMenuResources *structPtr;
+
+ structPtr = AllocSubstruct(0, sizeof(struct PokenavMainMenuResources));
+ if (structPtr == NULL)
+ return FALSE;
+
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ structPtr->currentTaskId = CreateLoopedTask(LoopedTask_InitPokenavMenu, 1);
+ return TRUE;
+}
+
+u32 PokenavMainMenuLoopedTaskIsActive(void)
+{
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ return IsLoopedTaskActive(structPtr->currentTaskId);
+}
+
+void ShutdownPokenav(void)
+{
+ PlaySE(SE_PN_OFF);
+ sub_81CAADC();
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK);
+}
+
+bool32 WaitForPokenavShutdownFade(void)
+{
+ if (!gPaletteFade.active)
+ {
+ sub_81C99D4();
+ CleanupPokenavMainMenuResources();
+ FreeAllWindowBuffers();
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static u32 LoopedTask_InitPokenavMenu(int a0)
+{
+ struct PokenavMainMenuResources *structPtr;
+
+ switch (a0)
+ {
+ case 0:
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ FreeAllWindowBuffers();
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gPokenavMainMenuBgTemplates, ARRAY_COUNT(gPokenavMainMenuBgTemplates));
+ ResetBgPositions();
+ reset_temp_tile_data_buffers();
+ return LT_INC_AND_CONTINUE;
+ case 1:
+ structPtr = GetSubstructPtr(0);
+ decompress_and_copy_tile_data_to_vram(0, &gPokenavHeader_Gfx, 0, 0, 0);
+ SetBgTilemapBuffer(0, structPtr->tilemapBuffer);
+ CopyToBgTilemapBuffer(0, &gPokenavHeader_Tilemap, 0, 0);
+ CopyPaletteIntoBufferUnfaded(gPokenavHeader_Pal, 0, 0x20);
+ CopyBgTilemapBufferToVram(0);
+ return LT_INC_AND_PAUSE;
+ case 2:
+ if (free_temp_tile_data_buffers_if_possible())
+ return LT_PAUSE;
+
+ sub_81C7B74();
+ return LT_INC_AND_PAUSE;
+ case 3:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return LT_PAUSE;
+
+ InitPokenavMainMenuResources();
+ InitHoennMapHeaderSprites();
+ ShowBg(0);
+ return LT_FINISH;
+ default:
+ return LT_FINISH;
+ }
+}
+
+void sub_81C7834(void *func1, void *func2) // Fix types later.
+{
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ structPtr->unk0 = func1;
+ structPtr->unk4 = func2;
+ structPtr->unk8 = 0;
+}
+
+void sub_81C7850(u32 a0)
+{
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ structPtr->unk8 = 0;
+ structPtr->unk0(a0);
+}
+
+u32 sub_81C786C(void)
+{
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ return structPtr->unk4();
+}
+
+void sub_81C7880(void)
+{
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ structPtr->currentTaskId = CreateLoopedTask(LoopedTask_ScrollMenuHeaderDown, 4);
+}
+
+void sub_81C78A0(void)
+{
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ structPtr->currentTaskId = CreateLoopedTask(LoopedTask_ScrollMenuHeaderUp, 4);
+}
+
+bool32 MainMenuLoopedTaskIsBusy(void)
+{
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ return IsLoopedTaskActive(structPtr->currentTaskId);
+}
+
+static u32 LoopedTask_ScrollMenuHeaderDown(int a0)
+{
+ switch (a0)
+ {
+ default:
+ return LT_FINISH;
+ case 1:
+ return LT_INC_AND_PAUSE;
+ case 0:
+ return LT_INC_AND_PAUSE;
+ case 2:
+ if (ChangeBgY(0, 384, 1) >= 0x2000u)
+ {
+ ChangeBgY(0, 0x2000, 0);
+ return LT_FINISH;
+ }
+
+ return LT_PAUSE;
+ }
+}
+
+static u32 LoopedTask_ScrollMenuHeaderUp(int a0)
+{
+ if (ChangeBgY(0, 384, 2) <= 0)
+ {
+ ChangeBgY(0, 0, 0);
+ return 4;
+ }
+ return 2;
+}
+
+void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 bufferOffset, u32 size)
+{
+ CpuCopy16(palette, gPlttBufferUnfaded + bufferOffset, size);
+}
+
+void Pokenav_AllocAndLoadPalettes(const struct SpritePalette *palettes)
+{
+ const struct SpritePalette *current;
+ u32 index;
+
+ for (current = palettes; current->data != NULL; current++)
+ {
+ index = AllocSpritePalette(current->tag);
+ if (index == 0xFF)
+ {
+ break;
+ }
+ else
+ {
+ index = (index * 16) + 0x100;
+ CopyPaletteIntoBufferUnfaded(current->data, index, 0x20);
+ }
+ }
+}
+
+void sub_81C7990(u32 a0, u16 a1)
+{
+ CpuFill16(a1, gPlttBufferFaded + 0x100 + (a0 * 16), 16 * sizeof(u16));
+}
+
+NAKED
+void sub_81C79BC(const u16 *a0, const u16 *a1, u32 a2, u32 a3, u32 a4, u16 *a5)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0xC\n\
+ str r0, [sp]\n\
+ str r1, [sp, 0x4]\n\
+ mov r10, r2\n\
+ str r3, [sp, 0x8]\n\
+ ldr r0, [sp, 0x2C]\n\
+ cmp r0, 0\n\
+ bne _081C79E4\n\
+ ldr r2, =0x001fffff\n\
+ mov r1, r10\n\
+ ands r2, r1\n\
+ ldr r0, [sp]\n\
+ b _081C79F4\n\
+ .pool\n\
+_081C79E4:\n\
+ ldr r2, [sp, 0x2C]\n\
+ ldr r0, [sp, 0x8]\n\
+ cmp r2, r0\n\
+ blt _081C7A00\n\
+ ldr r2, =0x001fffff\n\
+ mov r1, r10\n\
+ ands r2, r1\n\
+ ldr r0, [sp, 0x4]\n\
+_081C79F4:\n\
+ ldr r1, [sp, 0x30]\n\
+ bl CpuSet\n\
+ b _081C7AAE\n\
+ .pool\n\
+_081C7A00:\n\
+ movs r2, 0x1\n\
+ negs r2, r2\n\
+ add r10, r2\n\
+ b _081C7AA6\n\
+_081C7A08:\n\
+ ldr r1, [sp]\n\
+ ldrh r0, [r1]\n\
+ movs r2, 0x1F\n\
+ mov r9, r2\n\
+ mov r1, r9\n\
+ ands r1, r0\n\
+ mov r9, r1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 21\n\
+ movs r1, 0x1F\n\
+ ands r1, r2\n\
+ mov r8, r1\n\
+ lsrs r7, r0, 26\n\
+ movs r2, 0x1F\n\
+ ands r7, r2\n\
+ ldr r0, [sp, 0x4]\n\
+ ldrh r4, [r0]\n\
+ movs r0, 0x1F\n\
+ ands r0, r4\n\
+ mov r1, r9\n\
+ subs r0, r1\n\
+ lsls r0, 8\n\
+ ldr r1, [sp, 0x8]\n\
+ bl __divsi3\n\
+ ldr r2, [sp, 0x2C]\n\
+ adds r6, r0, 0\n\
+ muls r6, r2\n\
+ asrs r6, 8\n\
+ lsls r4, 16\n\
+ lsrs r0, r4, 21\n\
+ movs r1, 0x1F\n\
+ ands r0, r1\n\
+ mov r2, r8\n\
+ subs r0, r2\n\
+ lsls r0, 8\n\
+ ldr r1, [sp, 0x8]\n\
+ bl __divsi3\n\
+ ldr r1, [sp, 0x2C]\n\
+ adds r5, r0, 0\n\
+ muls r5, r1\n\
+ asrs r5, 8\n\
+ lsrs r4, 26\n\
+ movs r2, 0x1F\n\
+ ands r4, r2\n\
+ subs r4, r7\n\
+ lsls r4, 8\n\
+ adds r0, r4, 0\n\
+ ldr r1, [sp, 0x8]\n\
+ bl __divsi3\n\
+ ldr r1, [sp, 0x2C]\n\
+ muls r0, r1\n\
+ asrs r0, 8\n\
+ add r6, r9\n\
+ movs r2, 0x1F\n\
+ ands r6, r2\n\
+ add r5, r8\n\
+ ands r5, r2\n\
+ adds r0, r7, r0\n\
+ ands r0, r2\n\
+ lsls r0, 10\n\
+ lsls r5, 5\n\
+ orrs r0, r5\n\
+ orrs r0, r6\n\
+ ldr r1, [sp, 0x30]\n\
+ strh r0, [r1]\n\
+ ldr r2, [sp]\n\
+ adds r2, 0x2\n\
+ str r2, [sp]\n\
+ ldr r0, [sp, 0x4]\n\
+ adds r0, 0x2\n\
+ str r0, [sp, 0x4]\n\
+ adds r1, 0x2\n\
+ str r1, [sp, 0x30]\n\
+ movs r1, 0x1\n\
+ negs r1, r1\n\
+ add r10, r1\n\
+_081C7AA6:\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ cmp r10, r0\n\
+ bne _081C7A08\n\
+_081C7AAE:\n\
+ add sp, 0xC\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided");
+}
+
+void sub_81C7AC0(int a0)
+{
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+
+ switch (a0)
+ {
+ case 0:
+ BeginNormalPaletteFade(structPtr->unk14, -2, 0, 16, RGB_BLACK);
+ break;
+ case 1:
+ BeginNormalPaletteFade(structPtr->unk14, -2, 16, 0, RGB_BLACK);
+ break;
+ case 2:
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK);
+ break;
+ case 3:
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 16, 0, RGB_BLACK);
+ break;
+ }
+}
+
+bool32 IsPaletteFadeActive(void)
+{
+ return gPaletteFade.active;
+}
+
+void sub_81C7B40(void)
+{
+ BlendPalettes(0xFFFEFFFE, 16, RGB_BLACK);
+}
+
+void InitBgTemplates(const struct BgTemplate *templates, int count)
+{
+ int i;
+
+ for (i = 0; i < count; i++)
+ InitBgFromTemplate(templates++);
+}
+
+static void sub_81C7B74(void)
+{
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+
+ InitWindows(&gUnknown_0861FA08[0]);
+ structPtr->unk10 = 0;
+ sub_81C7BF8(structPtr->unk10);
+ PutWindowTilemap(structPtr->unk10);
+ CopyWindowToVram(structPtr->unk10, 3); // TODO: Use a defined constant here.
+}
+
+void sub_81C7BA4(u32 helpBarIndex)
+{
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+
+ sub_81C7BF8(structPtr->unk10);
+ AddTextPrinterParameterized3(structPtr->unk10, 1, 0, 1, gMenuButtonReminderColor, 0, sHelpBarTexts[helpBarIndex]);
+}
+
+bool32 IsDma3ManagerBusyWithBgCopy_(void)
+{
+ return IsDma3ManagerBusyWithBgCopy();
+}
+
+static void sub_81C7BF8(u32 windowId)
+{
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(4));
+ FillWindowPixelRect(windowId, PIXEL_FILL(5), 0, 0, 0x80, 1);
+}
+
+static void InitPokenavMainMenuResources(void)
+{
+ int i;
+ u8 spriteId;
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+
+ for (i = 0; i < ARRAY_COUNT(gSpinningPokenavSpriteSheet); i++)
+ LoadCompressedSpriteSheet(&gSpinningPokenavSpriteSheet[i]);
+
+ Pokenav_AllocAndLoadPalettes(gSpinningNavgearPalettes);
+ structPtr->unk14 = ~1 & ~(0x10000 << IndexOfSpritePaletteTag(0));
+ spriteId = CreateSprite(&sSpinningPokenavSpriteTemplate, 220, 12, 0);
+ structPtr->spinningPokenav = &gSprites[spriteId];
+}
+
+static void CleanupPokenavMainMenuResources(void)
+{
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+
+ DestroySprite(structPtr->spinningPokenav);
+ FreeSpriteTilesByTag(0);
+ FreeSpritePaletteByTag(0);
+}
+
+static void SpriteCB_SpinningPokenav(struct Sprite *sprite)
+{
+ // If the background starts scrolling, follow it.
+ sprite->pos2.y = (GetBgY(0) / 256u) * -1;
+}
+
+struct Sprite *PauseSpinningPokenavSprite(void)
+{
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+
+ structPtr->spinningPokenav->callback = SpriteCallbackDummy;
+ return structPtr->spinningPokenav;
+}
+
+void ResumeSpinningPokenavSprite(void)
+{
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+
+ structPtr->spinningPokenav->pos1.x = 220;
+ structPtr->spinningPokenav->pos1.y = 12;
+ structPtr->spinningPokenav->callback = SpriteCB_SpinningPokenav;
+ structPtr->spinningPokenav->invisible = FALSE;
+ structPtr->spinningPokenav->oam.priority = 0;
+ structPtr->spinningPokenav->subpriority = 0;
+}
+
+static void InitHoennMapHeaderSprites(void)
+{
+ int i, spriteId;
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+
+ LoadCompressedSpriteSheet(&sPokenavHoennMapLeftHeaderSpriteSheet);
+ AllocSpritePalette(1);
+ AllocSpritePalette(2);
+ for (i = 0; i < (int)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
+ {
+ spriteId = CreateSprite(&sPokenavLeftHeaderHoennMapSpriteTemplate, 0, 0, 1);
+ structPtr->leftHeaderSprites[i] = &gSprites[spriteId];
+ structPtr->leftHeaderSprites[i]->invisible = TRUE;
+ structPtr->leftHeaderSprites[i]->pos2.x = i * 64;
+
+ spriteId = CreateSprite(&sUnknown_0861FB44, 0, 0, 2);
+ structPtr->submenuLeftHeaderSprites[i] = &gSprites[spriteId];
+ structPtr->submenuLeftHeaderSprites[i]->invisible = TRUE;
+ structPtr->submenuLeftHeaderSprites[i]->pos2.x = i * 32;
+ structPtr->submenuLeftHeaderSprites[i]->pos2.y = 18;
+ structPtr->submenuLeftHeaderSprites[i]->oam.tileNum += (i * 8) + 64;
+ }
+}
+
+void LoadLeftHeaderGfxForIndex(u32 arg0)
+{
+ if (arg0 < POKENAV_GFX_SUBMENUS_START)
+ LoadLeftHeaderGfxForMenu(arg0);
+ else
+ LoadLeftHeaderGfxForSubMenu(arg0 - POKENAV_GFX_SUBMENUS_START);
+}
+
+void sub_81C7E14(u32 arg0)
+{
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+
+ if (arg0 == 4)
+ structPtr->leftHeaderSprites[1]->oam.tileNum = GetSpriteTileStartByTag(2) + 32;
+ else
+ structPtr->leftHeaderSprites[1]->oam.tileNum = GetSpriteTileStartByTag(2) + 64;
+}
+
+static void LoadLeftHeaderGfxForMenu(u32 index)
+{
+ struct PokenavMainMenuResources *structPtr;
+ u32 size, tag;
+
+ if (index >= POKENAV_GFX_SUBMENUS_START)
+ return;
+
+ structPtr = GetSubstructPtr(0);
+ tag = sPokenavMenuLeftHeaderSpriteSheets[index].tag;
+ size = GetDecompressedDataSize(sPokenavMenuLeftHeaderSpriteSheets[index].data);
+ LoadPalette(&gPokenavLeftHeader_Pal[tag * 16], (IndexOfSpritePaletteTag(1) * 16) + 0x100, 0x20);
+ LZ77UnCompWram(sPokenavMenuLeftHeaderSpriteSheets[index].data, gDecompressionBuffer);
+ RequestDma3Copy(gDecompressionBuffer, (void *)VRAM + 0x10000 + (GetSpriteTileStartByTag(2) * 32), size, 1);
+ structPtr->leftHeaderSprites[1]->oam.tileNum = GetSpriteTileStartByTag(2) + sPokenavMenuLeftHeaderSpriteSheets[index].size;
+
+ if (index == POKENAV_GFX_MAP_MENU_UNK0 || index == POKENAV_GFX_MAP_MENU_UNK1)
+ structPtr->leftHeaderSprites[1]->pos2.x = 56;
+ else
+ structPtr->leftHeaderSprites[1]->pos2.x = 64;
+}
+
+static void LoadLeftHeaderGfxForSubMenu(u32 arg0)
+{
+ u32 size, tag;
+
+ if (arg0 >= POKENAV_GFX_MENUS_END - POKENAV_GFX_SUBMENUS_START)
+ return;
+
+ tag = sPokenavSubMenuLeftHeaderSpriteSheets[arg0].tag;
+ size = GetDecompressedDataSize(sPokenavSubMenuLeftHeaderSpriteSheets[arg0].data);
+ LoadPalette(&gPokenavLeftHeader_Pal[tag * 16], (IndexOfSpritePaletteTag(2) * 16) + 0x100, 0x20);
+ LZ77UnCompWram(sPokenavSubMenuLeftHeaderSpriteSheets[arg0].data, &gDecompressionBuffer[0x1000]);
+ RequestDma3Copy(&gDecompressionBuffer[0x1000], (void *)VRAM + 0x10800 + (GetSpriteTileStartByTag(2) * 32), size, 1);
+}
+
+void sub_81C7FA0(u32 arg0, bool32 arg1, bool32 arg2)
+{
+ u32 var;
+
+ if (!arg1)
+ var = 0x30;
+ else
+ var = 0x10;
+
+ if (arg0 < 6)
+ ShowLeftHeaderSprites(var, arg2);
+ else
+ ShowLeftHeaderSubmenuSprites(var, arg2);
+}
+
+void sub_81C7FC4(u32 arg0, bool32 arg1)
+{
+ if (arg0 < 6)
+ HideLeftHeaderSprites(arg1);
+ else
+ HideLeftHeaderSubmenuSprites(arg1);
+}
+
+void sub_81C7FDC(void)
+{
+ int i;
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+
+ for (i = 0; i < (int)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
+ {
+ structPtr->leftHeaderSprites[i]->invisible = TRUE;
+ structPtr->submenuLeftHeaderSprites[i]->invisible = TRUE;
+ }
+}
+
+bool32 sub_81C8010(void)
+{
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+
+ if (structPtr->leftHeaderSprites[0]->callback == SpriteCallbackDummy && structPtr->submenuLeftHeaderSprites[0]->callback == SpriteCallbackDummy)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+static void ShowLeftHeaderSprites(u32 startY, bool32 isOnRightSide)
+{
+ int start, end, i;
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+
+ if (!isOnRightSide)
+ start = -96, end = 32;
+ else
+ start = 256, end = 160;
+
+ for (i = 0; i < (int)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
+ {
+ structPtr->leftHeaderSprites[i]->pos1.y = startY;
+ MoveLeftHeader(structPtr->leftHeaderSprites[i], start, end, 12);
+ }
+}
+
+static void ShowLeftHeaderSubmenuSprites(u32 startY, bool32 isOnRightSide)
+{
+ int start, end, i;
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+
+ if (!isOnRightSide)
+ start = -96, end = 16;
+ else
+ start = 256, end = 192;
+
+ for (i = 0; i < (int)ARRAY_COUNT(structPtr->submenuLeftHeaderSprites); i++)
+ {
+ structPtr->submenuLeftHeaderSprites[i]->pos1.y = startY;
+ MoveLeftHeader(structPtr->submenuLeftHeaderSprites[i], start, end, 12);
+ }
+}
+
+static void HideLeftHeaderSprites(bool32 isOnRightSide)
+{
+ int start, end, i;
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+
+ if (!isOnRightSide)
+ start = 32, end = -96;
+ else
+ start = 192, end = 256;
+
+ for (i = 0; i < (int)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
+ {
+ MoveLeftHeader(structPtr->leftHeaderSprites[i], start, end, 12);
+ }
+}
+
+static void HideLeftHeaderSubmenuSprites(bool32 isOnRightSide)
+{
+ int start, end, i;
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+
+ if (!isOnRightSide)
+ start = 16, end = -96;
+ else
+ start = 192, end = 256;
+
+ for (i = 0; i < (int)ARRAY_COUNT(structPtr->submenuLeftHeaderSprites); i++)
+ {
+ MoveLeftHeader(structPtr->submenuLeftHeaderSprites[i], start, end, 12);
+ }
+}
+
+static void MoveLeftHeader(struct Sprite *sprite, int startX, int endX, int duration)
+{
+ sprite->pos1.x = startX;
+ sprite->data[0] = startX * 16;
+ sprite->data[1] = (endX - startX) * 16 / duration;
+ sprite->data[2] = duration;
+ sprite->data[7] = endX;
+ sprite->callback = SpriteCB_MoveLeftHeader;
+}
+
+static void SpriteCB_MoveLeftHeader(struct Sprite *sprite)
+{
+ if (sprite->data[2] != 0)
+ {
+ sprite->data[2]--;
+ sprite->data[0] += sprite->data[1];
+ sprite->pos1.x = sprite->data[0] >> 4;
+ if (sprite->pos1.x < -16 || sprite->pos1.x > 256)
+ sprite->invisible = TRUE;
+ else
+ sprite->invisible = FALSE;
+ }
+ else
+ {
+ sprite->pos1.x = sprite->data[7];
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
diff --git a/src/pokenav_match_call.c b/src/pokenav_match_call_data.c
index ce00401a9..70fa42541 100644
--- a/src/pokenav_match_call.c
+++ b/src/pokenav_match_call_data.c
@@ -1,13 +1,12 @@
#include "global.h"
#include "battle_setup.h"
+#include "data.h"
#include "event_data.h"
#include "string_util.h"
#include "battle.h"
#include "gym_leader_rematch.h"
#include "match_call.h"
-extern const u8 gTrainerClassNames[][13];
-
// Static type declarations
typedef struct MatchCallTextDataStruct {
@@ -423,7 +422,7 @@ static const match_call_text_data_t sMayTextScripts[] = {
{ NULL, 0xFFFF, 0xFFFF }
};
-static const struct MatchCallStruct4 sMayMatchCallHeader =
+static const struct MatchCallStruct4 sBrendanMatchCallHeader =
{
.type = 4,
.gender = MALE,
@@ -452,7 +451,7 @@ static const match_call_text_data_t sBrendanTextScripts[] = {
{ NULL, 0xFFFF, 0xFFFF }
};
-static const struct MatchCallStruct4 sBrendanMatchCallHeader =
+static const struct MatchCallStruct4 sMayMatchCallHeader =
{
.type = 4,
.gender = FEMALE,
@@ -729,8 +728,8 @@ static const struct MatchCallStruct5 sWallaceMatchCallHeader =
static const match_call_t sMatchCallHeaders[] = {
{.type0 = &sMrStoneMatchCallHeader},
{.type3 = &sProfBirchMatchCallHeader},
- {.type4 = &sBrendanMatchCallHeader},
{.type4 = &sMayMatchCallHeader},
+ {.type4 = &sBrendanMatchCallHeader},
{.type2 = &sWallyMatchCallHeader},
{.type5 = &sNormanMatchCallHeader},
{.type0 = &sMomMatchCallHeader},
@@ -1102,7 +1101,7 @@ static void MatchCall_GetMessage_Type4(match_call_t matchCall, u8 *dest)
sub_8197080(dest);
}
-void sub_81D1920(const match_call_text_data_t *sub0, u8 *dest)
+static void sub_81D1920(const match_call_text_data_t *sub0, u8 *dest)
{
u32 i;
for (i = 0; sub0[i].text != NULL; i++)
@@ -1120,8 +1119,6 @@ void sub_81D1920(const match_call_text_data_t *sub0, u8 *dest)
StringExpandPlaceholders(dest, sub0[i].text);
}
-#ifdef NONMATCHING
-// There's some weird upmerge going on that I cannot replicate at this time.
static void sub_81D199C(const match_call_text_data_t *sub0, u16 idx, u8 *dest)
{
u32 i;
@@ -1129,7 +1126,7 @@ static void sub_81D199C(const match_call_text_data_t *sub0, u16 idx, u8 *dest)
{
if (sub0[i].flag == 0xfffe)
break;
- if (sub0[i].flag == 0xffff && !FlagGet(sub0[i].flag))
+ if (sub0[i].flag != 0xffff && !FlagGet(sub0[i].flag))
break;
}
if (sub0[i].flag != 0xfffe)
@@ -1142,127 +1139,22 @@ static void sub_81D199C(const match_call_text_data_t *sub0, u16 idx, u8 *dest)
}
else
{
- if (!FlagGet(FLAG_SYS_GAME_CLEAR))
- ;
- else if (gSaveBlock1Ptr->trainerRematches[idx])
- i += 2;
- else if (CountBattledRematchTeams(idx) >= 2)
- i += 3;
- else
- i++;
+ if (FlagGet(FLAG_SYS_GAME_CLEAR))
+ {
+ do
+ {
+ if (gSaveBlock1Ptr->trainerRematches[idx])
+ i += 2;
+ else if (CountBattledRematchTeams(idx) >= 2)
+ i += 3;
+ else
+ i++;
+ } while (0);
+ }
+
StringExpandPlaceholders(dest, sub0[i].text);
}
}
-#else
-static NAKED void sub_81D199C(const match_call_text_data_t *sub0, u16 idx, u8 *dest)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r10\n"
- "\tmov r6, r9\n"
- "\tmov r5, r8\n"
- "\tpush {r5-r7}\n"
- "\tadds r6, r0, 0\n"
- "\tmov r10, r2\n"
- "\tlsls r1, 16\n"
- "\tlsrs r7, r1, 16\n"
- "\tmovs r5, 0\n"
- "\tldr r0, [r6]\n"
- "\tcmp r0, 0\n"
- "\tbeq _081D19E6\n"
- "\tldrh r0, [r6, 0x4]\n"
- "\tldr r1, =0x0000fffe\n"
- "\tcmp r0, r1\n"
- "\tbeq _081D1A24\n"
- "\tldr r0, =0x0000ffff\n"
- "\tmov r9, r0\n"
- "\tmov r8, r1\n"
- "\tadds r4, r6, 0\n"
- "_081D19C6:\n"
- "\tldrh r0, [r4, 0x4]\n"
- "\tcmp r0, r9\n"
- "\tbeq _081D19D6\n"
- "\tbl FlagGet\n"
- "\tlsls r0, 24\n"
- "\tcmp r0, 0\n"
- "\tbeq _081D19E6\n"
- "_081D19D6:\n"
- "\tadds r4, 0x8\n"
- "\tadds r5, 0x1\n"
- "\tldr r0, [r4]\n"
- "\tcmp r0, 0\n"
- "\tbeq _081D19E6\n"
- "\tldrh r0, [r4, 0x4]\n"
- "\tcmp r0, r8\n"
- "\tbne _081D19C6\n"
- "_081D19E6:\n"
- "\tlsls r0, r5, 3\n"
- "\tadds r0, r6\n"
- "\tldrh r1, [r0, 0x4]\n"
- "\tldr r0, =0x0000fffe\n"
- "\tcmp r1, r0\n"
- "\tbeq _081D1A24\n"
- "\tcmp r5, 0\n"
- "\tbeq _081D19F8\n"
- "\tsubs r5, 0x1\n"
- "_081D19F8:\n"
- "\tlsls r0, r5, 3\n"
- "\tadds r4, r0, r6\n"
- "\tldrh r1, [r4, 0x6]\n"
- "\tldr r0, =0x0000ffff\n"
- "\tcmp r1, r0\n"
- "\tbeq _081D1A0A\n"
- "\tadds r0, r1, 0\n"
- "\tbl FlagSet\n"
- "_081D1A0A:\n"
- "\tldr r1, [r4]\n"
- "\tmov r0, r10\n"
- "\tbl StringExpandPlaceholders\n"
- "\tb _081D1A5C\n"
- "\t.pool\n"
- "_081D1A1C:\n"
- "\tadds r5, 0x2\n"
- "\tb _081D1A50\n"
- "_081D1A20:\n"
- "\tadds r5, 0x3\n"
- "\tb _081D1A50\n"
- "_081D1A24:\n"
- "\tldr r0, =0x00000864\n"
- "\tbl FlagGet\n"
- "\tlsls r0, 24\n"
- "\tcmp r0, 0\n"
- "\tbeq _081D1A50\n"
- "\tldr r0, =gSaveBlock1Ptr\n"
- "\tldr r0, [r0]\n"
- "\tldr r1, =0x000009ca\n"
- "\tadds r0, r1\n"
- "\tadds r0, r7\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0\n"
- "\tbne _081D1A1C\n"
- "\tadds r0, r7, 0\n"
- "\tbl CountBattledRematchTeams\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tcmp r0, 0x1\n"
- "\tbhi _081D1A20\n"
- "\tadds r5, 0x1\n"
- "_081D1A50:\n"
- "\tlsls r0, r5, 3\n"
- "\tadds r0, r6\n"
- "\tldr r1, [r0]\n"
- "\tmov r0, r10\n"
- "\tbl StringExpandPlaceholders\n"
- "_081D1A5C:\n"
- "\tpop {r3-r5}\n"
- "\tmov r8, r3\n"
- "\tmov r9, r4\n"
- "\tmov r10, r5\n"
- "\tpop {r4-r7}\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.pool");
-}
-#endif
void sub_81D1A78(u32 idx, const u8 **desc, const u8 **name)
{
@@ -1416,7 +1308,7 @@ NAKED const u8 *sub_81D1B40(u32 idx, u32 offset)
}
#endif
-s32 sub_81D1BD0(u32 idx)
+int sub_81D1BD0(u32 idx)
{
u32 i;
@@ -1430,9 +1322,9 @@ s32 sub_81D1BD0(u32 idx)
bool32 sub_81D1BF8(u32 idx)
{
- s32 i;
+ int i;
- for (i = 0; i < (s32)ARRAY_COUNT(sMatchCallHeaders); i++)
+ for (i = 0; i < (int)ARRAY_COUNT(sMatchCallHeaders); i++)
{
u32 r0 = MatchCall_GetRematchTableIdx(i);
if (r0 != REMATCH_TABLE_ENTRIES && r0 == idx)
@@ -1443,7 +1335,7 @@ bool32 sub_81D1BF8(u32 idx)
void SetMatchCallRegisteredFlag(void)
{
- s32 r0 = GetRematchIdxByTrainerIdx(gSpecialVar_0x8004);
+ int r0 = GetRematchIdxByTrainerIdx(gSpecialVar_0x8004);
if (r0 >= 0)
FlagSet(FLAG_MATCH_CALL_REGISTERED + r0);
}
diff --git a/src/pokenav_match_call_ui.c b/src/pokenav_match_call_ui.c
new file mode 100644
index 000000000..795b4d599
--- /dev/null
+++ b/src/pokenav_match_call_ui.c
@@ -0,0 +1,1167 @@
+#include "global.h"
+#include "pokenav.h"
+#include "window.h"
+#include "strings.h"
+#include "text.h"
+#include "bg.h"
+#include "menu.h"
+#include "decompress.h"
+
+struct UnknownSubSubStruct_0203CF40 {
+ u8 bg;
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+ u8 unk4;
+ u8 fontId;
+ u16 unk6;
+ u16 windowId;
+ u16 unkA;
+ u16 unkC;
+ u16 unkE;
+};
+
+struct MatchCallWindowState {
+ // The index of the element at the top of the window.
+ u16 windowTopIndex;
+ u16 listLength;
+ u16 unk4;
+ // The index of the cursor, relative to the top of the window.
+ u16 selectedIndexOffset;
+ u16 visibleEntries;
+ u16 unkA;
+ u32 unkC;
+ u32 unk10;
+};
+
+struct UnknownInnerStruct_81C81D4
+{
+ struct UnknownSubSubStruct_0203CF40 unk0;
+ u32 unk10;
+ u32 unk14;
+ u32 unk18;
+ u32 unk1C;
+ s32 unk20;
+ s32 unk24;
+ u32 unk28;
+ s32 unk2C;
+ u32 unk30;
+ void (*unk34)(u32, u8*);
+ void (*unk38)(u16, u32, u32);
+ struct Sprite *rightArrow;
+ struct Sprite *upArrow;
+ struct Sprite *downArrow;
+ u8 unkTextBuffer[0x40];
+};
+
+// Generally at index 0x11 (17)
+struct UnknownSubStruct_81C81D4
+{
+ struct UnknownInnerStruct_81C81D4 unk0;
+ u8 tilemapBuffer[0x800];
+ struct MatchCallWindowState unk888;
+ u32 unk89C;
+ u32 unk8A0;
+};
+
+extern void sub_81DB620(u32 windowId, u32 a1, u32 a2, u32 a3, u32 a4);
+
+void sub_81C82E4(struct UnknownSubStruct_81C81D4 *a0);
+u32 sub_81C91AC(struct UnknownInnerStruct_81C81D4 *a0, const struct BgTemplate *a1, struct MatchCallListTemplate *a2, s32 a3);
+void sub_81C9160(struct MatchCallWindowState *a0, struct MatchCallListTemplate *a1);
+void SpriteCB_MatchCallUpArrow(struct Sprite *sprite);
+void SpriteCB_MatchCallDownArrow(struct Sprite *sprite);
+void SpriteCB_MatchCallRightArrow(struct Sprite *sprite);
+void ToggleMatchCallArrows(struct UnknownInnerStruct_81C81D4 *a0, u32 a1);
+void sub_81C8FE0(struct UnknownInnerStruct_81C81D4 *a0);
+void sub_81C8EF8(struct MatchCallWindowState *a0, struct UnknownInnerStruct_81C81D4 *a1);
+void sub_81C8ED0(void);
+void sub_81C8E54(struct MatchCallWindowState *a0, struct UnknownInnerStruct_81C81D4 *a1, u32 a2);
+void PrintMatchCallFieldNames(struct UnknownInnerStruct_81C81D4 *a0, u32 a1);
+void sub_81C8D4C(struct MatchCallWindowState *a0, struct UnknownInnerStruct_81C81D4 *a1);
+void sub_81C8CB4(struct MatchCallWindowState *a0, struct UnknownInnerStruct_81C81D4 *a1);
+void sub_81C8B70(struct UnknownSubSubStruct_0203CF40 *a0, u32 a1, u32 a2);
+void sub_81C8568(s32 a0, struct UnknownInnerStruct_81C81D4 *a1);
+void sub_81C83AC(u32 a0, u32 a1, u32 a2, u32 a3, u32 a4, struct UnknownInnerStruct_81C81D4 *a5);
+void sub_81C837C(struct MatchCallWindowState *a0, struct UnknownInnerStruct_81C81D4 *a1);
+void sub_81C835C(struct UnknownSubSubStruct_0203CF40 *a0);
+u32 LoopedTask_sub_81C8254(s32 a0);
+bool32 sub_81C83E0(void);
+u32 LoopedTask_sub_81C83F0(s32 a0);
+u32 LoopedTask_sub_81C85A0(s32 a0);
+u32 LoopedTask_sub_81C8870(s32 a0);
+u32 LoopedTask_sub_81C8A28(s32 a0);
+u32 LoopedTask_sub_81C8958(s32 a0);
+
+static const u16 sMatchcallArrowPaletteData[] = INCBIN_U16("graphics/pokenav/arrows_matchcall.gbapal");
+static const u32 sMatchcallArrowSpriteSheetData[] = INCBIN_U32("graphics/pokenav/arrows_matchcall.4bpp.lz");
+
+static const u8 sPokenavColors_0861FBE4[] =
+{
+ 0, 2, 5
+};
+
+static const u8 *const sMatchCallFieldNames[] =
+{
+ gText_PokenavMatchCall_Strategy,
+ gText_PokenavMatchCall_TrainerPokemon,
+ gText_PokenavMatchCall_SelfIntroduction
+};
+
+static const u8 sMatchCallFieldColors[] =
+{
+ 1, 4, 5
+};
+
+static const u8 sUnknown_0861FBF7[] =
+{
+ 2, 4, 6, 7, 0
+};
+
+static const struct CompressedSpriteSheet sMatchcallArrowSpriteSheets[] =
+{
+ {
+ .data = sMatchcallArrowSpriteSheetData,
+ .size = 192,
+ .tag = 0xA
+ }
+};
+
+static const struct SpritePalette sMatchcallArrowPalettes[] =
+{
+ {
+ .data = sMatchcallArrowPaletteData,
+ .tag = 0x14
+ },
+ {}
+};
+
+static const struct OamData sMatchCallRightArrowSpriteOam =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x16),
+ .x = 0,
+ .size = SPRITE_SIZE(8x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0
+};
+
+static const struct SpriteTemplate sMatchCallRightArrowSprite =
+{
+ .tileTag = 0xA,
+ .paletteTag = 0x14,
+ .oam = &sMatchCallRightArrowSpriteOam,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_MatchCallRightArrow
+};
+
+static const struct OamData sMatchCallUpDownArrowSpriteOam =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x8),
+ .x = 0,
+ .size = SPRITE_SIZE(16x8),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0
+};
+
+static const struct SpriteTemplate sMatchCallUpDownArrowSprite =
+{
+ .tileTag = 0xA,
+ .paletteTag = 0x14,
+ .oam = &sMatchCallUpDownArrowSpriteOam,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+EWRAM_DATA u32 gUnknown_0203CF44 = 0;
+
+bool32 sub_81C81D4(const struct BgTemplate *arg0, struct MatchCallListTemplate *arg1, s32 arg2)
+{
+ u32 v1;
+ struct UnknownSubStruct_81C81D4 *structPtr;
+
+ structPtr = AllocSubstruct(0x11, sizeof(struct UnknownSubStruct_81C81D4));
+
+ if (structPtr == NULL)
+ return FALSE;
+
+ sub_81C9160(&structPtr->unk888, arg1);
+
+ v1 = sub_81C91AC(&structPtr->unk0, arg0, arg1, arg2);
+ if (v1 == 0)
+ return FALSE;
+
+ CreateLoopedTask(LoopedTask_sub_81C8254, 6);
+ return TRUE;
+}
+
+bool32 sub_81C8224(void)
+{
+ return FuncIsActiveLoopedTask(LoopedTask_sub_81C8254);
+}
+
+void sub_81C8234(void)
+{
+ struct UnknownSubStruct_81C81D4 *structPtr;
+
+ structPtr = GetSubstructPtr(0x11);
+ sub_81C8FE0(&structPtr->unk0);
+ RemoveWindow(structPtr->unk0.unk0.windowId);
+ FreePokenavSubstruct(0x11);
+}
+
+u32 LoopedTask_sub_81C8254(s32 a0)
+{
+ struct UnknownSubStruct_81C81D4 *structPtr;
+
+ if (IsDma3ManagerBusyWithBgCopy())
+ return 2;
+
+ structPtr = GetSubstructPtr(0x11);
+
+ switch (a0)
+ {
+ case 0:
+ sub_81C82E4(structPtr);
+ return 0;
+ case 1:
+ sub_81C835C(&structPtr->unk0.unk0);
+ return 0;
+ case 2:
+ sub_81C837C(&structPtr->unk888, &structPtr->unk0);
+ return 0;
+ case 3:
+ if (sub_81C83E0())
+ {
+ return 2;
+ }
+ else
+ {
+ sub_81C8ED0();
+ return 1;
+ }
+ case 4:
+ sub_81C8EF8(&structPtr->unk888, &structPtr->unk0);
+ return 4;
+ default:
+ return 4;
+ }
+}
+
+void sub_81C82E4(struct UnknownSubStruct_81C81D4 *a0)
+{
+ u16 v1 = (a0->unk0.unk0.unk1 << 12) | a0->unk0.unk0.unk6;
+ sub_8199DF0(a0->unk0.unk0.bg, PIXEL_FILL(1), a0->unk0.unk0.unk6, 1);
+ sub_8199DF0(a0->unk0.unk0.bg, PIXEL_FILL(4), a0->unk0.unk0.unk6 + 1, 1);
+ SetBgTilemapBuffer(a0->unk0.unk0.bg, a0->tilemapBuffer);
+ FillBgTilemapBufferRect_Palette0(a0->unk0.unk0.bg, v1, 0, 0, 32, 32);
+ ChangeBgY(a0->unk0.unk0.bg, 0, 0);
+ ChangeBgX(a0->unk0.unk0.bg, 0, 0);
+ ChangeBgY(a0->unk0.unk0.bg, a0->unk0.unk0.unk3 << 11, 2);
+ CopyBgTilemapBufferToVram(a0->unk0.unk0.bg);
+}
+
+void sub_81C835C(struct UnknownSubSubStruct_0203CF40 *a0)
+{
+ FillWindowPixelBuffer(a0->windowId, PIXEL_FILL(1));
+ PutWindowTilemap(a0->windowId);
+ CopyWindowToVram(a0->windowId, 1);
+}
+
+void sub_81C837C(struct MatchCallWindowState *a0, struct UnknownInnerStruct_81C81D4 *a1)
+{
+ s32 v1;
+ s32 v2;
+
+ // TODO: Clean this up.
+ v1 = a0->listLength - a0->windowTopIndex;
+ v2 = a0->visibleEntries;
+ if (v1 > a0->visibleEntries)
+ v1 = v2;
+ sub_81C83AC(a0->unk10, a0->windowTopIndex, v1, a0->unkC, 0, a1);
+}
+
+void sub_81C83AC(u32 a0, u32 a1, u32 a2, u32 a3, u32 a4, struct UnknownInnerStruct_81C81D4 *a5)
+{
+ if (a2 == 0)
+ return;
+
+ a5->unk1C = a0 + a1 * a3;
+ a5->unk18 = a3;
+ a5->unk0.unkC = 0;
+ a5->unk0.unkE = a2;
+ a5->unk14 = a1;
+ a5->unk10 = a4;
+ CreateLoopedTask(LoopedTask_sub_81C83F0, 5);
+}
+
+bool32 sub_81C83E0(void)
+{
+ return FuncIsActiveLoopedTask(LoopedTask_sub_81C83F0);
+}
+
+u32 LoopedTask_sub_81C83F0(s32 a0)
+{
+ struct UnknownInnerStruct_81C81D4 *structPtr;
+ u32 v1;
+
+ structPtr = &((struct UnknownSubStruct_81C81D4*)GetSubstructPtr(0x11))->unk0;
+ switch (a0)
+ {
+ case 0:
+ v1 = (structPtr->unk0.unkA + structPtr->unk0.unkC + structPtr->unk10) & 0xF;
+ structPtr->unk34(structPtr->unk1C, structPtr->unkTextBuffer);
+ if (structPtr->unk38 != NULL)
+ // Accessing unk0.windowId as if it were a u16...?
+ // It's accessed as a u8 again in the very next line...
+ structPtr->unk38(*(u16*)(&structPtr->unk0.windowId), structPtr->unk14, v1);
+
+ AddTextPrinterParameterized(structPtr->unk0.windowId, structPtr->unk0.fontId, structPtr->unkTextBuffer, 8, (v1 << 4) + 1, 255, NULL);
+
+ if (++structPtr->unk0.unkC >= structPtr->unk0.unkE)
+ {
+ if (structPtr->unk38 != NULL)
+ CopyWindowToVram(structPtr->unk0.windowId, 3);
+ else
+ CopyWindowToVram(structPtr->unk0.windowId, 2);
+ return 0;
+ }
+ else
+ {
+ structPtr->unk1C += structPtr->unk18;
+ structPtr->unk14++;
+ return 3;
+ }
+ case 1:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return 2;
+ else
+ return 4;
+ default:
+ return 4;
+ }
+}
+
+bool32 ShouldShowUpArrow(void)
+{
+ u16 v1;
+ s32 v2;
+ struct UnknownSubStruct_81C81D4 *structPtr;
+ structPtr = GetSubstructPtr(0x11);
+
+ return structPtr->unk888.windowTopIndex != 0;
+}
+
+bool32 ShouldShowDownArrow(void)
+{
+ struct MatchCallWindowState *subPtr;
+ struct UnknownSubStruct_81C81D4 *structPtr;
+ structPtr = GetSubstructPtr(0x11);
+ subPtr = &structPtr->unk888;
+
+ return subPtr->windowTopIndex + subPtr->visibleEntries < subPtr->listLength;
+}
+
+void MatchCall_MoveWindow(s32 a0, bool32 a1_)
+{
+ register bool32 a1 asm("r4")= a1_;
+ s32 v1;
+ struct UnknownSubStruct_81C81D4 *structPtr = GetSubstructPtr(0x11);
+ register struct MatchCallWindowState *subPtr asm("r5") = &structPtr->unk888;
+
+ if (a0 < 0)
+ {
+ u16 temp = subPtr->windowTopIndex;
+ if (temp + a0 < 0)
+ v1 = -1 * temp;
+ else
+ v1 = a0;
+ if (a1)
+ sub_81C83AC(subPtr->unk10, temp + v1, v1 * -1, subPtr->unkC, v1, &structPtr->unk0);
+ }
+ else if (a1)
+ {
+ s32 temp = gUnknown_0203CF44 = subPtr->windowTopIndex + subPtr->visibleEntries;
+ s32 listLength;
+ if (temp + a0 >= (listLength = subPtr->listLength))
+ v1 = listLength - temp;
+ else
+ v1 = a0;
+
+ sub_81C83AC(subPtr->unk10, gUnknown_0203CF44, v1, subPtr->unkC, subPtr->visibleEntries, &structPtr->unk0);
+ // Needed to prevent GCC from combining the two sub_81C83AC calls.
+ asm("");
+ }
+ else
+ {
+ v1 = a0;
+ }
+
+ sub_81C8568(v1, &structPtr->unk0);
+ subPtr->windowTopIndex += v1;
+}
+
+void sub_81C8568(s32 a0, struct UnknownInnerStruct_81C81D4 *a1)
+{
+ a1->unk20 = GetBgY(a1->unk0.bg);
+ a1->unk24 = a1->unk20 + (a0 << 12);
+ if (a0 > 0)
+ a1->unk30 = 1;
+ else
+ a1->unk30 = 2;
+ a1->unk2C = a0;
+ a1->unk28 = CreateLoopedTask(LoopedTask_sub_81C85A0, 6);
+}
+
+u32 LoopedTask_sub_81C85A0(s32 a0)
+{
+ s32 y;
+ s32 v1;
+ bool32 flag;
+ struct UnknownInnerStruct_81C81D4 *structPtr;
+ structPtr = &((struct UnknownSubStruct_81C81D4 *)GetSubstructPtr(0x11))->unk0;
+
+ switch (a0)
+ {
+ case 0:
+ if (sub_81C83E0() == FALSE)
+ return 1;
+ else
+ return 2;
+ case 1:
+ flag = FALSE;
+ y = GetBgY(structPtr->unk0.bg);
+ v1 = ChangeBgY(structPtr->unk0.bg, 0x1000, structPtr->unk30);
+ if (structPtr->unk30 == 2)
+ {
+ if ((y > structPtr->unk24 || y <= structPtr->unk20) && v1 <= structPtr->unk24)
+ {
+ flag = TRUE;
+ }
+ }
+ else
+ {
+ if ((y < structPtr->unk24 || y >= structPtr->unk20) && v1 >= structPtr->unk24)
+ {
+ flag = TRUE;
+ }
+ }
+ if (flag)
+ {
+ structPtr->unk0.unkA = (structPtr->unk0.unkA + structPtr->unk2C) & 0xF;
+ ChangeBgY(structPtr->unk0.bg, structPtr->unk24, 0);
+ return 4;
+ }
+ else
+ {
+ return 2;
+ }
+ default:
+ return 4;
+ }
+}
+
+bool32 sub_81C8630(void)
+{
+ struct UnknownSubStruct_81C81D4 *structPtr;
+ structPtr = GetSubstructPtr(0x11);
+ return IsLoopedTaskActive(structPtr->unk0.unk28);
+}
+
+struct MatchCallWindowState *GetMatchCallWindowStruct(void)
+{
+ struct UnknownSubStruct_81C81D4 *structPtr;
+ structPtr = GetSubstructPtr(0x11);
+ return &structPtr->unk888;
+}
+
+int MatchCall_MoveCursorUp(void)
+{
+ struct MatchCallWindowState *structPtr;
+ structPtr = GetMatchCallWindowStruct();
+
+ if (structPtr->selectedIndexOffset != 0)
+ {
+ structPtr->selectedIndexOffset--;
+ return 1;
+ }
+ else
+ {
+ if (ShouldShowUpArrow())
+ {
+ MatchCall_MoveWindow(-1, TRUE);
+ return 2;
+ }
+ else
+ {
+ return 0;
+ }
+ }
+}
+
+int MatchCall_MoveCursorDown(void)
+{
+ struct MatchCallWindowState *structPtr;
+ structPtr = GetMatchCallWindowStruct();
+
+ if (structPtr->windowTopIndex + structPtr->selectedIndexOffset < structPtr->listLength - 1)
+ {
+ if (structPtr->selectedIndexOffset < structPtr->visibleEntries - 1)
+ {
+ structPtr->selectedIndexOffset++;
+ return 1;
+ }
+ else if (!ShouldShowDownArrow())
+ {
+ return 0;
+ }
+ }
+ else
+ {
+ return 0;
+ }
+ MatchCall_MoveWindow(1, TRUE);
+ return 2;
+}
+
+int MatchCall_PageUp(void)
+{
+ struct MatchCallWindowState *structPtr;
+ s32 scroll;
+
+ structPtr = GetMatchCallWindowStruct();
+ if (ShouldShowUpArrow())
+ {
+ if (structPtr->windowTopIndex >= structPtr->visibleEntries)
+ scroll = structPtr->visibleEntries;
+ else
+ scroll = structPtr->windowTopIndex;
+ MatchCall_MoveWindow(scroll * -1, TRUE);
+ return 2;
+ }
+ else if (structPtr->selectedIndexOffset != 0)
+ {
+ structPtr->selectedIndexOffset = 0;
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+int MatchCall_PageDown(void)
+{
+ struct MatchCallWindowState *structPtr;
+ structPtr = GetMatchCallWindowStruct();
+
+ if (ShouldShowDownArrow())
+ {
+ s32 scroll;
+ s32 windowBottomIndex;
+ s32 v3;
+ windowBottomIndex = structPtr->windowTopIndex + structPtr->visibleEntries;
+ scroll = structPtr->unk4 - structPtr->windowTopIndex;
+ if (windowBottomIndex <= structPtr->unk4)
+ scroll = structPtr->visibleEntries;
+ MatchCall_MoveWindow(scroll, TRUE);
+ return 2;
+ }
+ else
+ {
+ s32 cursor;
+ s32 lastVisibleIndex;
+ if (structPtr->listLength >= structPtr->visibleEntries)
+ {
+ cursor = structPtr->selectedIndexOffset;
+ lastVisibleIndex = structPtr->visibleEntries;
+ }
+ else
+ {
+ cursor = structPtr->selectedIndexOffset;
+ lastVisibleIndex = structPtr->listLength;
+ }
+ lastVisibleIndex -= 1;
+ if (cursor >= lastVisibleIndex)
+ {
+ return 0;
+ }
+ else
+ {
+ structPtr->selectedIndexOffset = lastVisibleIndex;
+ return 1;
+ }
+ }
+}
+
+u32 GetSelectedMatchCall(void)
+{
+ struct MatchCallWindowState *structPtr;
+ structPtr = GetMatchCallWindowStruct();
+
+ return structPtr->windowTopIndex + structPtr->selectedIndexOffset;
+}
+
+u32 GetMatchCallListTopIndex(void)
+{
+ struct MatchCallWindowState *structPtr;
+ structPtr = GetMatchCallWindowStruct();
+
+ return structPtr->windowTopIndex;
+}
+
+void sub_81C877C(void)
+{
+ struct UnknownSubStruct_81C81D4 *structPtr;
+ structPtr = GetSubstructPtr(0x11);
+ structPtr->unk89C = 0;
+ structPtr->unk8A0 = CreateLoopedTask(LoopedTask_sub_81C8870, 6);
+}
+
+void sub_81C87AC(s16 a0)
+{
+ u16 temp;
+ struct UnknownSubStruct_81C81D4 *structPtr;
+ structPtr = GetSubstructPtr(0x11);
+ temp = structPtr->unk888.windowTopIndex;
+ temp += a0;
+ structPtr->unk888.windowTopIndex = temp;
+ structPtr->unk89C = 0;
+ structPtr->unk8A0 = CreateLoopedTask(LoopedTask_sub_81C8958, 6);
+}
+
+void sub_81C87F0(void)
+{
+ struct UnknownSubStruct_81C81D4 *structPtr;
+ structPtr = GetSubstructPtr(0x11);
+ structPtr->unk89C = 0;
+ structPtr->unk8A0 = CreateLoopedTask(LoopedTask_sub_81C8A28, 6);
+}
+
+bool32 sub_81C8820(void)
+{
+ struct UnknownSubStruct_81C81D4 *structPtr;
+ structPtr = GetSubstructPtr(0x11);
+ return IsLoopedTaskActive(structPtr->unk8A0);
+}
+
+void sub_81C8838(void)
+{
+ struct UnknownSubStruct_81C81D4 *structPtr;
+ struct MatchCallWindowState *subStr;
+ structPtr = GetSubstructPtr(0x11);
+ subStr = &structPtr->unk888;
+ structPtr->unk0.unk38(structPtr->unk0.unk0.windowId, subStr->windowTopIndex + subStr->selectedIndexOffset, (structPtr->unk0.unk0.unkA + subStr->selectedIndexOffset) & 0xF);
+ CopyWindowToVram(structPtr->unk0.unk0.windowId, 1);
+}
+
+u32 LoopedTask_sub_81C8870(s32 a0)
+{
+ struct UnknownSubStruct_81C81D4 *structPtr;
+ u16 v1;
+ u32 v2;
+
+ // Needed to fix a register renaming issue.
+ register u16* temp asm("r1");
+ structPtr = GetSubstructPtr(0x11);
+
+ switch (a0)
+ {
+ case 0:
+ ToggleMatchCallArrows(&structPtr->unk0, 1);
+ // fall-through
+ case 1:
+ if (structPtr->unk89C != structPtr->unk888.selectedIndexOffset)
+ sub_81C8B70(&structPtr->unk0.unk0, structPtr->unk89C, 1);
+
+ structPtr->unk89C++;
+ return 0;
+ case 2:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return 2;
+
+ if (structPtr->unk89C != structPtr->unk888.visibleEntries)
+ return 6;
+
+ if (structPtr->unk888.selectedIndexOffset != 0)
+ sub_81C8B70(&structPtr->unk0.unk0, structPtr->unk89C, structPtr->unk888.selectedIndexOffset);
+
+ return 0;
+ case 3:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return 2;
+ temp = &structPtr->unk888.selectedIndexOffset;
+ v1 = *temp;
+ if (v1 == 0)
+ return 4;
+
+ MatchCall_MoveWindow(v1, FALSE);
+ return 0;
+ case 4:
+ v2 = sub_81C8630();
+ if (v2)
+ return 2;
+
+ structPtr->unk888.selectedIndexOffset = v2;
+ return 4;
+ default:
+ return 4;
+ }
+}
+
+u32 LoopedTask_sub_81C8958(s32 a0)
+{
+ struct UnknownSubStruct_81C81D4 *structPtr;
+ structPtr = GetSubstructPtr(0x11);
+ if (IsDma3ManagerBusyWithBgCopy())
+ return 2;
+
+ switch (a0)
+ {
+ case 0:
+ sub_81C8CB4(&structPtr->unk888, &structPtr->unk0);
+ break;
+ case 1:
+ PrintMatchCallFieldNames(&structPtr->unk0, 0);
+ break;
+ case 2:
+ sub_81C8E54(&structPtr->unk888, &structPtr->unk0, 0);
+ break;
+ case 3:
+ PrintMatchCallFieldNames(&structPtr->unk0, 1);
+ break;
+ case 4:
+ sub_81C8E54(&structPtr->unk888, &structPtr->unk0, 1);
+ break;
+ case 5:
+ PrintMatchCallFieldNames(&structPtr->unk0, 2);
+ break;
+ case 6:
+ sub_81C8E54(&structPtr->unk888, &structPtr->unk0, 2);
+ break;
+ case 7:
+ sub_81C8E54(&structPtr->unk888, &structPtr->unk0, 3);
+ break;
+ default:
+ return 4;
+ }
+ return 0;
+}
+
+u32 LoopedTask_sub_81C8A28(s32 a0)
+{
+ struct UnknownSubStruct_81C81D4 *structPtr;
+ struct MatchCallWindowState *subPtr888;
+ register struct UnknownInnerStruct_81C81D4 *subPtr0 asm("r2");
+ s32 v4;
+
+ if (IsDma3ManagerBusyWithBgCopy())
+ {
+ return 2;
+ }
+
+ structPtr = GetSubstructPtr(0x11);
+ subPtr888 = &structPtr->unk888;
+ subPtr0 = &structPtr->unk0;
+
+ switch (a0)
+ {
+ default:
+ return 4;
+ case 0:
+ sub_81C8D4C(subPtr888, subPtr0);
+ return 0;
+ case 1:
+ {
+ s32 v1;
+ s32 v2;
+ u32 *v3;
+ register s32 v4 asm("r5");
+
+ v3 = &structPtr->unk89C;
+ v1 = *v3 + 1;
+ *v3 = v1;
+ if (v1 < structPtr->unk888.visibleEntries)
+ {
+ sub_81C8B70(&subPtr0->unk0, v1, 1);
+ return 2;
+ }
+
+ *v3 = 0;
+ if (subPtr888->listLength <= subPtr888->visibleEntries)
+ {
+ register u32 temp asm("r0");
+ temp = subPtr888->windowTopIndex;
+ if (temp == 0)
+ return 9;
+ v2 = temp;
+ }
+ else
+ {
+ register s32 temp asm("r1");
+ v2 = subPtr888->windowTopIndex + subPtr888->visibleEntries;
+ temp = (s32)subPtr888->listLength;
+ if (v2 <= temp)
+ return 9;
+ v2 -= temp;
+ }
+ v4 = v2 * -1;
+ sub_81C8B70(&subPtr0->unk0, v4, v2);
+ subPtr888->selectedIndexOffset = v2;
+ *v3 = v4;
+ return 0;
+ }
+ case 2:
+ MatchCall_MoveWindow(structPtr->unk89C, FALSE);
+ return 0;
+ case 3:
+ if (sub_81C8630())
+ return 2;
+
+ structPtr->unk89C = 0;
+ return 1;
+ case 4:
+ sub_81C83AC(subPtr888->unk10, subPtr888->windowTopIndex + structPtr->unk89C, 1, subPtr888->unkC, structPtr->unk89C, &structPtr->unk0);
+ return 0;
+ case 5:
+ if (sub_81C83E0())
+ return 2;
+
+ v4 = ++structPtr->unk89C;
+ if (v4 >= subPtr888->listLength || v4 >= subPtr888->visibleEntries)
+ return 1;
+ return 9;
+ case 6:
+ ToggleMatchCallArrows(subPtr0, 0);
+ return 4;
+ }
+}
+
+void sub_81C8B70(struct UnknownSubSubStruct_0203CF40 *a0, u32 a1, u32 a2)
+{
+ u8 *v1;
+ u32 v2;
+
+ v1 = (u8*)GetWindowAttribute(a0->windowId, WINDOW_TILE_DATA);
+ v2 = a0->unk4 * 64;
+
+ a1 = (a0->unkA + a1) & 0xF;
+ if ((s32)(a1 + a2) <= 16)
+ {
+ CpuFastFill8(PIXEL_FILL(1), v1 + a1 * v2, a2 * v2);
+ CopyWindowToVram(a0->windowId, 2);
+ }
+ else
+ {
+ u32 v3;
+ u32 v4;
+
+ v3 = 16 - a1;
+ v4 = a2 - v3;
+
+ CpuFastFill8(PIXEL_FILL(1), v1 + a1 * v2, v3 * v2);
+ CpuFastFill8(PIXEL_FILL(1), v1, v4 * v2);
+ CopyWindowToVram(a0->windowId, 2);
+ }
+
+ a2 -= 1;
+ for (a2; a2 != -1; a1 = (a1 + 1) & 0xF, a2--)
+ {
+ sub_81CBD48(a0->windowId, a1);
+ }
+
+ CopyWindowToVram(a0->windowId, 1);
+}
+
+void sub_81C8C64(struct UnknownSubSubStruct_0203CF40 *a0, u32 a1)
+{
+ u16 *v1;
+ register u32 v2 asm("r0");
+ u32 v3;
+
+ v1 = (u16*)GetBgTilemapBuffer(GetWindowAttribute(a0->windowId, WINDOW_BG));
+
+ v1 = &v1[(a0->unkA << 6) + a0->unk2 - 1];
+
+ if (a1 != 0)
+ {
+ v2 = a0->unk1 << 12;
+ v3 = a0->unk6 + 1;
+ }
+ else
+ {
+ v2 = a0->unk1 << 12;
+ v3 = a0->unk6;
+ }
+ {
+ register u16 v5 asm("r1");
+ register u32 v6 asm("r0");
+ v6 = (v3 | v2);
+ v6 = v6 << 16;
+ v5 = v6 >> 16;
+ v1[0] = v5;
+ v1[0x20] = v5;
+ }
+}
+
+void sub_81C8CB4(struct MatchCallWindowState *a0, struct UnknownInnerStruct_81C81D4 *a1)
+{
+ u8 colors[3];
+
+
+ memcpy(colors, sPokenavColors_0861FBE4, ARRAY_COUNT(sPokenavColors_0861FBE4));
+
+ a1->unk34(a0->unk10 + a0->unkC * a0->windowTopIndex, a1->unkTextBuffer);
+ a1->unk38(a1->unk0.windowId, a0->windowTopIndex, a1->unk0.unkA);
+ FillWindowPixelRect(a1->unk0.windowId, PIXEL_FILL(4), 0, a1->unk0.unkA * 16, a1->unk0.unk4 * 8, 16);
+ AddTextPrinterParameterized3(a1->unk0.windowId, a1->unk0.fontId, 8, (a1->unk0.unkA * 16) + 1, colors, TEXT_SPEED_FF, a1->unkTextBuffer);
+ sub_81C8C64(&a1->unk0, 1);
+ CopyWindowRectToVram(a1->unk0.windowId, 3, 0, a1->unk0.unkA * 2, a1->unk0.unk4, 2);
+}
+
+void sub_81C8D4C(struct MatchCallWindowState *a0, struct UnknownInnerStruct_81C81D4 *a1)
+{
+ a1->unk34(a0->unk10 + a0->unkC * a0->windowTopIndex, a1->unkTextBuffer);
+ FillWindowPixelRect(a1->unk0.windowId, PIXEL_FILL(1), 0, a1->unk0.unkA * 16, a1->unk0.unk4 * 8, 16);
+ AddTextPrinterParameterized(a1->unk0.windowId, a1->unk0.fontId, a1->unkTextBuffer, 8, a1->unk0.unkA * 16 + 1, TEXT_SPEED_FF, NULL);
+ sub_81C8C64(&a1->unk0, 0);
+ CopyWindowToVram(a1->unk0.windowId, 3);
+}
+
+void PrintMatchCallFieldNames(struct UnknownInnerStruct_81C81D4 *a0, u32 fieldId)
+{
+ const u8 *fieldNames[3];
+ u8 colors[3];
+ u32 r4;
+ u32 r5;
+ u32 tmp;
+ u32 one;
+
+ memcpy(fieldNames, sMatchCallFieldNames, sizeof(sMatchCallFieldNames));
+ memcpy(colors, sMatchCallFieldColors, sizeof(sMatchCallFieldColors));
+
+ r4 = a0->unk0.unkA;
+ tmp = fieldId * 2 + 1;
+ r4 += tmp;
+ r4 &= 0xF;
+ FillWindowPixelRect(a0->unk0.windowId, PIXEL_FILL(1), 0, r4 << 4, a0->unk0.unk4, 16);
+
+ // This is a fake match. It should be this:
+ // AddTextPrinterParameterized3(a0->unk0.windowId, 7, 2, r4 << 4 + 1, colors, TEXT_SPEED_FF, fieldNames[fieldId]);
+ // But the original GCC does some clever reuse of the `1` constant that the current GCC doesn't.
+ one = 1;
+ AddTextPrinterParameterized3(a0->unk0.windowId, 7, 2, (r4 << 4) + one, colors, one - 2, fieldNames[fieldId]);
+ CopyWindowRectToVram(a0->unk0.windowId, 2, 0, r4 << 1, a0->unk0.unk4, 2);
+}
+
+void sub_81C8E54(struct MatchCallWindowState *a0, struct UnknownInnerStruct_81C81D4 *a1, u32 a2)
+{
+ const u8 *str;
+ u32 r6;
+
+ r6 = (a1->unk0.unkA + sUnknown_0861FBF7[a2]) & 0xF;
+
+ str = sub_81CAFD8(a0->windowTopIndex, a2);
+ if (str != NULL) {
+ sub_81DB620(a1->unk0.windowId, 1, r6 * 2, a1->unk0.unk4 - 1, 2);
+ AddTextPrinterParameterized(a1->unk0.windowId, 7, str, 2, (r6 << 4) + 1, TEXT_SPEED_FF, NULL);
+ CopyWindowRectToVram(a1->unk0.windowId, 2, 0, r6 * 2, a1->unk0.unk4, 2);
+ }
+}
+
+void sub_81C8ED0(void)
+{
+ u32 i;
+ const struct CompressedSpriteSheet *ptr;
+
+ for (i = 0, ptr = sMatchcallArrowSpriteSheets; i < ARRAY_COUNT(sMatchcallArrowSpriteSheets); ptr++, i++)
+ {
+ LoadCompressedSpriteSheet(ptr);
+ }
+ Pokenav_AllocAndLoadPalettes(sMatchcallArrowPalettes);
+}
+
+void sub_81C8EF8(struct MatchCallWindowState *a0, struct UnknownInnerStruct_81C81D4 *a1)
+{
+ register u32 spriteId asm("r3");
+ s16 temp;
+
+ spriteId = (u8)CreateSprite(&sMatchCallRightArrowSprite, a1->unk0.unk2 * 8 + 3, (a1->unk0.unk3 + 1) * 8, 7);
+ a1->rightArrow = &gSprites[spriteId];
+
+ temp = a1->unk0.unk2 * 8 + (a1->unk0.unk4 - 1) * 4;
+ spriteId = (u8)CreateSprite(&sMatchCallUpDownArrowSprite, temp, a1->unk0.unk3 * 8 + a0->visibleEntries * 16, 7);
+ a1->downArrow = &gSprites[spriteId];
+ a1->downArrow->oam.tileNum += 2;
+ a1->downArrow->callback = SpriteCB_MatchCallDownArrow;
+
+ spriteId = (u8)CreateSprite(&sMatchCallUpDownArrowSprite, temp, a1->unk0.unk3 * 8, 7);
+ a1->upArrow = &gSprites[spriteId];
+ a1->upArrow->oam.tileNum += 4;
+ a1->upArrow->callback = SpriteCB_MatchCallUpArrow;
+}
+
+void sub_81C8FE0(struct UnknownInnerStruct_81C81D4 *a0)
+{
+ DestroySprite(a0->rightArrow);
+ DestroySprite(a0->upArrow);
+ DestroySprite(a0->downArrow);
+ FreeSpriteTilesByTag(0xA);
+ FreeSpritePaletteByTag(0x14);
+}
+
+void ToggleMatchCallArrows(struct UnknownInnerStruct_81C81D4 *a0, bool32 shouldHide)
+{
+ if (shouldHide)
+ {
+ a0->rightArrow->callback = SpriteCallbackDummy;
+ a0->upArrow->callback = SpriteCallbackDummy;
+ a0->downArrow->callback = SpriteCallbackDummy;
+ }
+ else
+ {
+ a0->rightArrow->callback = SpriteCB_MatchCallRightArrow;
+ a0->upArrow->callback = SpriteCB_MatchCallUpArrow;
+ a0->downArrow->callback = SpriteCB_MatchCallDownArrow;
+ }
+ a0->rightArrow->invisible = shouldHide;
+ a0->upArrow->invisible = shouldHide;
+ a0->downArrow->invisible = shouldHide;
+}
+
+void SpriteCB_MatchCallRightArrow(struct Sprite *sprite)
+{
+ struct UnknownSubStruct_81C81D4 *structPtr;
+ structPtr = GetSubstructPtr(0x11);
+ sprite->pos2.y = structPtr->unk888.selectedIndexOffset << 4;
+}
+
+void SpriteCB_MatchCallDownArrow(struct Sprite *sprite)
+{
+ if (sprite->data[7] == 0 && ShouldShowDownArrow())
+ sprite->invisible = FALSE;
+ else
+ sprite->invisible = TRUE;
+
+ if (++sprite->data[0] > 3)
+ {
+ s16 offset;
+
+ sprite->data[0] = 0;
+ offset = (sprite->data[1] + 1) & 7;
+ sprite->data[1] = offset;
+ sprite->pos2.y = offset;
+ }
+}
+
+void SpriteCB_MatchCallUpArrow(struct Sprite *sprite)
+{
+ if (sprite->data[7] == 0 && ShouldShowUpArrow())
+ sprite->invisible = FALSE;
+ else
+ sprite->invisible = TRUE;
+
+ if (++sprite->data[0] > 3)
+ {
+ s16 offset;
+
+ sprite->data[0] = 0;
+ offset = (sprite->data[1] + 1) & 7;
+ sprite->data[1] = offset;
+ sprite->pos2.y = -1 * offset;
+ }
+}
+
+void ToggleMatchCallVerticalArrows(bool32 shouldHide)
+{
+ struct UnknownSubStruct_81C81D4 *structPtr;
+ structPtr = GetSubstructPtr(0x11);
+ structPtr->unk0.upArrow->data[7] = shouldHide;
+ structPtr->unk0.downArrow->data[7] = shouldHide;
+}
+
+void sub_81C9160(struct MatchCallWindowState *a0, struct MatchCallListTemplate *a1)
+{
+ u32 unused1 = a0->unk10 = a1->unk0;
+ u32 v0 = a1->unk6;
+ u32 zero = 0;
+ u32 unused2 = a0->windowTopIndex = v0;
+ u32 v1 = a0->listLength = a1->unk4;
+
+ a0->unkC = a1->unk8;
+ a0->visibleEntries = a1->unkC;
+ if (a0->visibleEntries >= (u16)v1)
+ {
+ a0->windowTopIndex = 0;
+ a0->unk4 = 0;
+ a0->selectedIndexOffset = v0;
+ }
+ else
+ {
+ s32 v2;
+ a0->unk4 = a0->listLength - a0->visibleEntries;
+ v2 = a0->windowTopIndex + a0->visibleEntries;
+ if (v2 > a0->listLength) {
+ a0->selectedIndexOffset = v2 - a0->listLength;
+ a0->windowTopIndex = v0 - a0->selectedIndexOffset;
+ }
+ else
+ {
+ a0->selectedIndexOffset = 0;
+ }
+ }
+}
+
+u32 sub_81C91AC(struct UnknownInnerStruct_81C81D4 *a0, const struct BgTemplate *a1, struct MatchCallListTemplate *a2, s32 a3)
+{
+ register u32 raw_bg asm("r4") = ((a1->bg) << 30);
+ u8 bg = raw_bg >> 30;
+ u32 unknown = 0;
+ struct WindowTemplate window;
+ u8 bg_again;
+
+ a0->unk0.bg = bg;
+ a0->unk0.unk6 = a3;
+ a0->unk34 = a2->unk10;
+ a0->unk38 = a2->unk14;
+ a0->unk0.unk1 = a2->unkD;
+ a0->unk0.unk2 = a2->unk9;
+ a0->unk0.unk3 = a2->unkB;
+ a0->unk0.unk4 = a2->unkA;
+ a0->unk0.fontId = a2->unkE;
+
+ window.bg = raw_bg >> 30;
+ window.tilemapLeft = a2->unk9;
+ window.tilemapTop = 0;
+ window.width = a2->unkA;
+ window.height = 32;
+ window.paletteNum = a2->unkD;
+ window.baseBlock = a3 + 2;
+
+ a0->unk0.windowId = AddWindow(&window);
+ if (a0->unk0.windowId == 0xFF)
+ {
+ return 0;
+ }
+ else
+ {
+ a0->unk0.unkA = unknown;
+ a0->rightArrow = NULL;
+ a0->upArrow = NULL;
+ a0->downArrow = NULL;
+ return 1;
+ }
+} \ No newline at end of file
diff --git a/src/pokenav_unk_1.c b/src/pokenav_unk_1.c
new file mode 100644
index 000000000..96ecf9c8b
--- /dev/null
+++ b/src/pokenav_unk_1.c
@@ -0,0 +1,466 @@
+#include "global.h"
+#include "pokenav.h"
+#include "event_data.h"
+#include "main.h"
+#include "sound.h"
+#include "constants/songs.h"
+
+struct Pokenav1Struct
+{
+ u16 menuType;
+ s16 cursorPos;
+ u16 descriptionId;
+ u16 helpBarIndex;
+ u32 unk8;
+ u32 (*callback)(struct Pokenav1Struct*);
+};
+
+static bool32 sub_81C9814(struct Pokenav1Struct *a0);
+static void sub_81C97F8(struct Pokenav1Struct *a0);
+static void sub_81C97C0(struct Pokenav1Struct *a0);
+static u32 sub_81C97BC(struct Pokenav1Struct *a0);
+static void sub_81C97B0(struct Pokenav1Struct *a0, u32 a1);
+static u32 sub_81C97A4(struct Pokenav1Struct *a0);
+static u32 sub_81C9798(struct Pokenav1Struct *a0);
+static u32 sub_81C96FC(struct Pokenav1Struct *a0);
+static u32 sub_81C963C(struct Pokenav1Struct *a0);
+static u32 sub_81C9600(struct Pokenav1Struct *a0);
+static u32 sub_81C9588(struct Pokenav1Struct *a0);
+static u32 sub_81C9520(struct Pokenav1Struct *a0);
+static u32 sub_81C943C(struct Pokenav1Struct *a0);
+static u32 (*sub_81C93EC(void))(struct Pokenav1Struct*);
+static void sub_81C939C(struct Pokenav1Struct *state);
+
+static const u8 sLastCursorPositions[] = {2, 3, 4, 2, 5};
+
+static const u8 sDescriptionIds[][6] =
+{
+ { 0, 1, 4, 4, 4, 4 },
+ { 0, 1, 2, 4, 4, 4 },
+ { 0, 1, 2, 3, 4, 4 },
+ { 5, 6, 7, 4, 4, 4 },
+ { 8, 9, 10, 11, 12, 13 },
+};
+
+static u8 GetPokenavMainMenuType(void)
+{
+ u8 retVal = 0;
+ if (FlagGet(FLAG_ADDED_MATCH_CALL_TO_POKENAV))
+ {
+ retVal = 1;
+ if (FlagGet(FLAG_SYS_RIBBON_GET))
+ retVal = 2;
+ }
+
+ return retVal;
+}
+
+bool32 sub_81C9298(void)
+{
+ struct Pokenav1Struct *state = AllocSubstruct(1, sizeof(struct Pokenav1Struct));
+ if (!state)
+ return FALSE;
+
+ state->menuType = GetPokenavMainMenuType();
+ state->cursorPos = 0;
+ state->descriptionId = 0;
+ state->helpBarIndex = 0;
+ sub_81C939C(state);
+ return TRUE;
+}
+
+bool32 sub_81C92CC(void)
+{
+ struct Pokenav1Struct *state = AllocSubstruct(1, sizeof(struct Pokenav1Struct));
+ if (!state)
+ return FALSE;
+
+ state->menuType = GetPokenavMainMenuType();
+ state->cursorPos = 2;
+ state->descriptionId = 2;
+ state->helpBarIndex = 0;
+ sub_81C939C(state);
+ return TRUE;
+}
+
+bool32 sub_81C9304(void)
+{
+ struct Pokenav1Struct *state = AllocSubstruct(1, sizeof(struct Pokenav1Struct));
+ if (!state)
+ return FALSE;
+
+ state->menuType = GetPokenavMainMenuType();
+ state->cursorPos = 3;
+ state->descriptionId = 3;
+ sub_81C939C(state);
+ return TRUE;
+}
+
+bool32 sub_81C9338(void)
+{
+ struct Pokenav1Struct *state = AllocSubstruct(1, sizeof(struct Pokenav1Struct));
+ if (!state)
+ return FALSE;
+
+ state->menuType = 3;
+ state->cursorPos = 0;
+ state->descriptionId = 5;
+ state->helpBarIndex = 0;
+ sub_81C939C(state);
+ return TRUE;
+}
+
+bool32 sub_81C9368(void)
+{
+ struct Pokenav1Struct *state = AllocSubstruct(1, sizeof(struct Pokenav1Struct));
+ if (!state)
+ return FALSE;
+
+ state->menuType = 4;
+ state->cursorPos = sub_81C76AC();
+ state->descriptionId = state->cursorPos + 8;
+ state->helpBarIndex = 0;
+ sub_81C939C(state);
+ return TRUE;
+}
+
+static void sub_81C939C(struct Pokenav1Struct *state)
+{
+ switch (state->menuType)
+ {
+ case 0:
+ SetPokenavMode(POKENAV_MODE_NORMAL);
+ // fallthrough
+ case 1:
+ case 2:
+ state->callback = sub_81C93EC();
+ break;
+ case 3:
+ state->callback = sub_81C963C;
+ break;
+ case 4:
+ state->callback = sub_81C96FC;
+ break;
+ }
+}
+
+static u32 (*sub_81C93EC(void))(struct Pokenav1Struct*)
+{
+ switch (GetPokenavMode())
+ {
+ default:
+ case POKENAV_MODE_NORMAL:
+ return sub_81C943C;
+ case POKENAV_MODE_FORCE_CALL_1:
+ return sub_81C9520;
+ case POKENAV_MODE_FORCE_CALL_2:
+ return sub_81C9588;
+ }
+}
+
+u32 sub_81C941C(void)
+{
+ struct Pokenav1Struct *state = GetSubstructPtr(1);
+ return state->callback(state);
+}
+
+void sub_81C9430(void)
+{
+ FreePokenavSubstruct(1);
+}
+
+static u32 sub_81C943C(struct Pokenav1Struct *a0)
+{
+ if (sub_81C9814(a0))
+ return 1;
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ switch (sDescriptionIds[a0->menuType][a0->cursorPos])
+ {
+ case 0:
+ a0->helpBarIndex = gSaveBlock2Ptr->regionMapZoom ? 2 : 1;
+ sub_81C97B0(a0, POKENAV_MENU_6);
+ return 8;
+ case 1:
+ a0->menuType = 3;
+ a0->cursorPos = 0;
+ a0->descriptionId = sDescriptionIds[3][0];
+ a0->callback = sub_81C963C;
+ return 2;
+ case 2:
+ a0->helpBarIndex = 6;
+ sub_81C97B0(a0, POKENAV_MENU_B);
+ return 8;
+ case 3:
+ if (CanViewRibbonsMenu())
+ {
+ a0->helpBarIndex = 9;
+ sub_81C97B0(a0, POKENAV_MENU_C);
+ return 8;
+ }
+ else
+ {
+ a0->callback = sub_81C9600;
+ return 6;
+ }
+ case 4:
+ return -1;
+ }
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ return -1;
+
+ return 0;
+}
+
+static u32 sub_81C9520(struct Pokenav1Struct *a0)
+{
+ if (sub_81C9814(a0))
+ return 1;
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if (sDescriptionIds[a0->menuType][a0->cursorPos] == 2)
+ {
+ a0->helpBarIndex = 6;
+ sub_81C97B0(a0, POKENAV_MENU_B);
+ return 8;
+ }
+ else
+ {
+ PlaySE(SE_HAZURE);
+ return 0;
+ }
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_HAZURE);
+ return 0;
+ }
+
+ return 0;
+}
+
+static u32 sub_81C9588(struct Pokenav1Struct *a0)
+{
+ if (sub_81C9814(a0))
+ return 1;
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ u32 v0 = sDescriptionIds[a0->menuType][a0->cursorPos];
+ if (v0 != 2 && v0 != 4)
+ {
+ PlaySE(SE_HAZURE);
+ return 0;
+ }
+ else if (v0 == 2)
+ {
+ a0->helpBarIndex = 6;
+ sub_81C97B0(a0, POKENAV_MENU_B);
+ return 8;
+ }
+ else
+ {
+ return -1;
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ return -1;
+ }
+ return 0;
+}
+
+static u32 sub_81C9600(struct Pokenav1Struct *a0)
+{
+ if (sub_81C9814(a0))
+ {
+ a0->callback = sub_81C93EC();
+ return 1;
+ }
+
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ a0->callback = sub_81C93EC();
+ return 7;
+ }
+
+ return 0;
+}
+
+static u32 sub_81C963C(struct Pokenav1Struct *a0)
+{
+ u32 v0 = sub_81C9814(a0);
+ if (v0)
+ return 1;
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ switch (sDescriptionIds[a0->menuType][a0->cursorPos])
+ {
+ case 6:
+ a0->menuType = 4;
+ a0->cursorPos = v0;
+ a0->descriptionId = sDescriptionIds[4][0];
+ a0->callback = sub_81C96FC;
+ return 4;
+ case 5:
+ a0->helpBarIndex = v0;
+ sub_81C97B0(a0, POKENAV_MENU_7);
+ return 8;
+ case 7:
+ PlaySE(SE_SELECT);
+ sub_81C97C0(a0);
+ return 3;
+ }
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ if (a0->cursorPos != sLastCursorPositions[a0->menuType])
+ {
+ a0->cursorPos = sLastCursorPositions[a0->menuType];
+ a0->callback = sub_81C9798;
+ return 1;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ sub_81C97C0(a0);
+ return 3;
+ }
+ }
+
+ return 0;
+}
+
+static u32 sub_81C96FC(struct Pokenav1Struct *a0)
+{
+ if (sub_81C9814(a0))
+ return 1;
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ u8 v0 = sDescriptionIds[a0->menuType][a0->cursorPos];
+ if (v0 != 13)
+ {
+ sub_81C7694(v0 - 8);
+ sub_81C97B0(a0, POKENAV_MENU_8);
+ a0->helpBarIndex = 3;
+ return 8;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ sub_81C97F8(a0);
+ return 5;
+ }
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ if (a0->cursorPos != sLastCursorPositions[a0->menuType])
+ {
+ a0->cursorPos = sLastCursorPositions[a0->menuType];
+ a0->callback = sub_81C97A4;
+ return 1;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ sub_81C97F8(a0);
+ return 5;
+ }
+ }
+ return 0;
+}
+
+static u32 sub_81C9798(struct Pokenav1Struct *a0)
+{
+ sub_81C97C0(a0);
+ return 3;
+}
+
+static u32 sub_81C97A4(struct Pokenav1Struct *a0)
+{
+ sub_81C97F8(a0);
+ return 5;
+}
+
+static void sub_81C97B0(struct Pokenav1Struct *a0, u32 a1)
+{
+ a0->unk8 = a1;
+ a0->callback = sub_81C97BC;
+}
+
+static u32 sub_81C97BC(struct Pokenav1Struct *a0)
+{
+ return a0->unk8;
+}
+
+static void sub_81C97C0(struct Pokenav1Struct *a0)
+{
+ a0->menuType = GetPokenavMainMenuType();
+ a0->cursorPos = 1;
+ a0->descriptionId = sDescriptionIds[a0->menuType][a0->cursorPos];
+ a0->callback = sub_81C943C;
+}
+
+static void sub_81C97F8(struct Pokenav1Struct *a0)
+{
+ a0->menuType = 3;
+ a0->cursorPos = 1;
+ a0->descriptionId = sDescriptionIds[3][1];
+ a0->callback = sub_81C963C;
+}
+
+static bool32 sub_81C9814(struct Pokenav1Struct *a0)
+{
+ if (gMain.newKeys & DPAD_UP)
+ {
+ if (--a0->cursorPos < 0)
+ a0->cursorPos = sLastCursorPositions[a0->menuType];
+
+ a0->descriptionId = sDescriptionIds[a0->menuType][a0->cursorPos];
+ return TRUE;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ a0->cursorPos++;
+ if (a0->cursorPos > sLastCursorPositions[a0->menuType])
+ a0->cursorPos = 0;
+
+ a0->descriptionId = sDescriptionIds[a0->menuType][a0->cursorPos];
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+int sub_81C9894(void)
+{
+ struct Pokenav1Struct *state = GetSubstructPtr(1);
+ return state->menuType;
+}
+
+int sub_81C98A4(void)
+{
+ struct Pokenav1Struct *state = GetSubstructPtr(1);
+ return state->cursorPos;
+}
+
+int sub_81C98B4(void)
+{
+ struct Pokenav1Struct *state = GetSubstructPtr(1);
+ return state->descriptionId;
+}
+
+int sub_81C98C4(void)
+{
+ struct Pokenav1Struct *state = GetSubstructPtr(1);
+ return state->helpBarIndex;
+}
diff --git a/src/pokenav_unk_3.c b/src/pokenav_unk_3.c
new file mode 100755
index 000000000..c6705a352
--- /dev/null
+++ b/src/pokenav_unk_3.c
@@ -0,0 +1,504 @@
+#include "global.h"
+#include "battle_setup.h"
+#include "data.h"
+#include "event_data.h"
+#include "gym_leader_rematch.h"
+#include "international_string_util.h"
+#include "main.h"
+#include "match_call.h"
+#include "overworld.h"
+#include "pokemon.h"
+#include "pokenav.h"
+#include "sound.h"
+#include "string_util.h"
+#include "strings.h"
+#include "constants/flags.h"
+#include "constants/songs.h"
+
+struct Pokenav3Struct
+{
+ u16 unk0;
+ u16 unk2;
+ const u8 *unk4;
+ u16 unk8;
+ u16 unkA;
+ u16 unkC;
+ u32 unk10;
+ u32 unk14;
+ u32 (*callback)(struct Pokenav3Struct*);
+ struct Pokenav3Struct_Unk1C unk1C[99];
+};
+
+static u32 sub_81CAB44(struct Pokenav3Struct *);
+static u32 sub_81CABFC(struct Pokenav3Struct *);
+static u32 sub_81CAC04(struct Pokenav3Struct *);
+static u32 sub_81CACB8(struct Pokenav3Struct *);
+static u32 sub_81CACF8(struct Pokenav3Struct *);
+static u32 sub_81CAD20(int);
+static bool32 sub_81CB1D0(void);
+
+extern const u8 gUnknown_08622508[];
+extern const u8 gUnknown_0862250A[];
+extern const u8 *const gUnknown_08622028[][4];
+
+bool32 sub_81CAAE8(void)
+{
+ struct Pokenav3Struct *state = AllocSubstruct(5, sizeof(struct Pokenav3Struct));
+ if (!state)
+ return FALSE;
+
+ state->callback = sub_81CAB44;
+ state->unk8 = 0;
+ state->unk10 = 0;
+ state->unk14 = CreateLoopedTask(sub_81CAD20, 1);
+ return TRUE;
+}
+
+u32 sub_81CAB24(void)
+{
+ struct Pokenav3Struct *state = GetSubstructPtr(5);
+ return state->callback(state);
+}
+
+void sub_81CAB38(void)
+{
+ FreePokenavSubstruct(5);
+}
+
+static u32 sub_81CAB44(struct Pokenav3Struct *state)
+{
+ int selectedMatchCall;
+
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ return 2;
+ if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ return 1;
+ if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ return 4;
+ if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ return 3;
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ state->callback = sub_81CAC04;
+ state->unk0 = 0;
+ selectedMatchCall = GetSelectedMatchCall();
+ if (!state->unk1C[selectedMatchCall].unk0 || sub_81D17E8(state->unk1C[selectedMatchCall].unk2))
+ {
+ state->unk4 = gUnknown_0862250A;
+ state->unk2 = 2;
+ }
+ else
+ {
+ state->unk4 = gUnknown_08622508;
+ state->unk2 = 1;
+ }
+
+ return 5;
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ if (GetPokenavMode() != POKENAV_MODE_FORCE_CALL_1)
+ {
+ state->callback = sub_81CABFC;
+ return 15;
+ }
+ else
+ {
+ PlaySE(SE_HAZURE);
+ }
+ }
+
+ return 0;
+}
+
+static u32 sub_81CABFC(struct Pokenav3Struct *state)
+{
+ return POKENAV_MENU_4;
+}
+
+static u32 sub_81CAC04(struct Pokenav3Struct *state)
+{
+ if ((gMain.newKeys & DPAD_UP) && state->unk0)
+ {
+ state->unk0--;
+ return 6;
+ }
+
+ if ((gMain.newKeys & DPAD_DOWN) && state->unk0 < state->unk2)
+ {
+ state->unk0++;
+ return 6;
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ switch (state->unk4[state->unk0])
+ {
+ case 2:
+ state->callback = sub_81CAB44;
+ return 7;
+ case 0:
+ if (GetPokenavMode() == POKENAV_MODE_FORCE_CALL_1)
+ SetPokenavMode(POKENAV_MODE_FORCE_CALL_2);
+
+ state->callback = sub_81CACF8;
+ if (sub_81CB1D0())
+ return 9;
+
+ return 8;
+ case 1:
+ state->callback = sub_81CACB8;
+ return 11;
+ }
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ state->callback = sub_81CAB44;
+ return 7;
+ }
+
+ return 0;
+}
+
+static u32 sub_81CACB8(struct Pokenav3Struct *state)
+{
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ return 12;
+ if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ return 13;
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ state->callback = sub_81CAB44;
+ return 14;
+ }
+
+ return 0;
+}
+
+static u32 sub_81CACF8(struct Pokenav3Struct *state)
+{
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ state->callback = sub_81CAB44;
+ return 10;
+ }
+
+ return 0;
+}
+
+static u32 sub_81CAD20(int taskState)
+{
+ int i, j;
+ struct Pokenav3Struct *state = GetSubstructPtr(5);
+ switch (taskState)
+ {
+ case 0:
+ state->unk8 = 0;
+ state->unkA = 0;
+ return LT_INC_AND_CONTINUE;
+ case 1:
+ for (i = 0, j = state->unk8; i < 30; i++, j++)
+ {
+ if (MatchCallFlagGetByIndex(j))
+ {
+ state->unk1C[state->unkA].unk2 = j;
+ state->unk1C[state->unkA].unk0 = 1;
+ state->unk1C[state->unkA].unk1 = sub_81D16DC(j);
+ state->unkA++;
+ }
+
+ if (++state->unk8 >= 21) // TODO: This is the size of sMatchCallHeaders
+ {
+ state->unkC = state->unk8;
+ state->unk8 = 0;
+ return LT_INC_AND_CONTINUE;
+ }
+ }
+
+ return LT_CONTINUE;
+ case 2:
+ for (i = 0, j = state->unk8; i < 30; i++, j++)
+ {
+ if (!sub_81D1BF8(state->unk8) && sub_81CAE08(state->unk8))
+ {
+ state->unk1C[state->unkA].unk2 = state->unk8;
+ state->unk1C[state->unkA].unk0 = 0;
+ state->unk1C[state->unkA].unk1 = sub_81CB0C8(j);
+ state->unkA++;
+ }
+
+ if (++state->unk8 > REMATCH_TABLE_ENTRIES - 1)
+ return LT_INC_AND_CONTINUE;
+ }
+
+ return LT_CONTINUE;
+ case 3:
+ state->unk10 = 1;
+ break;
+ }
+
+ return LT_FINISH;
+}
+
+bool32 sub_81CAE08(int rematchIndex)
+{
+ if (rematchIndex < REMATCH_TABLE_ENTRIES)
+ return FlagGet(FLAG_MATCH_CALL_REGISTERED + rematchIndex);
+
+ return FALSE;
+}
+
+int sub_81CAE28(void)
+{
+ struct Pokenav3Struct *state = GetSubstructPtr(5);
+ return state->unk10;
+}
+
+int sub_81CAE38(void)
+{
+ struct Pokenav3Struct *state = GetSubstructPtr(5);
+ return state->unkA;
+}
+
+int sub_81CAE48(void)
+{
+ struct Pokenav3Struct *state = GetSubstructPtr(5);
+ return state->unkC;
+}
+
+int unref_sub_81CAE58(void)
+{
+ struct Pokenav3Struct *state = GetSubstructPtr(5);
+ return state->unkA - state->unkC;
+}
+
+int unref_sub_81CAE6C(int arg0)
+{
+ struct Pokenav3Struct *state = GetSubstructPtr(5);
+ arg0 += state->unkC;
+ if (arg0 >= state->unkA)
+ return REMATCH_TABLE_ENTRIES;
+
+ return state->unk1C[arg0].unk2;
+}
+
+struct Pokenav3Struct_Unk1C *sub_81CAE94(void)
+{
+ struct Pokenav3Struct *state = GetSubstructPtr(5);
+ return state->unk1C;
+}
+
+u16 sub_81CAEA4(int index)
+{
+ struct Pokenav3Struct *state = GetSubstructPtr(5);
+ return state->unk1C[index].unk1;
+}
+
+bool32 sub_81CAEBC(int index)
+{
+ struct Pokenav3Struct *state = GetSubstructPtr(5);
+ if (!state->unk1C[index].unk0)
+ index = state->unk1C[index].unk2;
+ else
+ index = MatchCall_GetRematchTableIdx(state->unk1C[index].unk2);
+
+ if (index == REMATCH_TABLE_ENTRIES)
+ return FALSE;
+
+ return gSaveBlock1Ptr->trainerRematches[index] != 0;
+}
+
+int sub_81CAF04(int index)
+{
+ int var0;
+ struct Pokenav3Struct *state = GetSubstructPtr(5);
+ if (!state->unk1C[index].unk0)
+ {
+ index = GetTrainerIdxByRematchIdx(state->unk1C[index].unk2);
+ return gTrainers[index].trainerPic;
+ }
+
+ var0 = state->unk1C[index].unk2;
+ index = MatchCall_GetRematchTableIdx(var0);
+ if (index != REMATCH_TABLE_ENTRIES)
+ {
+ index = GetTrainerIdxByRematchIdx(index);
+ return gTrainers[index].trainerPic;
+ }
+
+ index = sub_81D1BD0(var0);
+ return gFacilityClassToPicIndex[index];
+}
+
+const u8 *sub_81CAF78(int index, u8 *arg1)
+{
+ struct Pokenav3Struct *state = GetSubstructPtr(5);
+ *arg1 = 0;
+ if (!Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType))
+ return gText_CallCantBeMadeHere;
+
+ if (!state->unk1C[index].unk0)
+ *arg1 = SelectMatchCallMessage(GetTrainerIdxByRematchIdx(state->unk1C[index].unk2), gStringVar4);
+ else
+ MatchCall_GetMessage(state->unk1C[index].unk2, gStringVar4);
+
+ return gStringVar4;
+}
+
+const u8 *sub_81CAFD8(int index, int textType)
+{
+ int var0;
+ struct Pokenav3Struct *state = GetSubstructPtr(5);
+ if (state->unk1C[index].unk0)
+ {
+ var0 = MatchCall_GetRematchTableIdx(state->unk1C[index].unk2);
+ if (var0 == REMATCH_TABLE_ENTRIES)
+ return sub_81D1B40(state->unk1C[index].unk2, textType);
+ }
+ else
+ {
+ var0 = state->unk1C[index].unk2;
+ }
+
+ return gUnknown_08622028[var0][textType];
+}
+
+u16 sub_81CB01C(void)
+{
+ struct Pokenav3Struct *state = GetSubstructPtr(5);
+ return state->unk0;
+}
+
+u16 sub_81CB02C(int arg0)
+{
+ struct Pokenav3Struct *state = GetSubstructPtr(5);
+ if (state->unk2 < arg0)
+ return 3;
+
+ return state->unk4[arg0];
+}
+
+void sub_81CB050(u32 arg0, u8 *str)
+{
+ struct Pokenav3Struct_Unk1C *var0 = (struct Pokenav3Struct_Unk1C *)arg0;
+ const u8 *trainerName;
+ const u8 *className;
+ if (!var0->unk0)
+ {
+ int index = GetTrainerIdxByRematchIdx(var0->unk2);
+ const struct Trainer *trainer = &gTrainers[index];
+ int class = trainer->trainerClass;
+ className = gTrainerClassNames[class];
+ trainerName = trainer->trainerName;
+ }
+ else
+ {
+ sub_81D1A78(var0->unk2, &className, &trainerName);
+ }
+
+ if (className && trainerName)
+ {
+ u8 *str2 = sub_81DB494(str, 7, className, 69);
+ sub_81DB494(str2, 7, trainerName, 51);
+ }
+ else
+ {
+ sub_81DB494(str, 7, NULL, 120);
+ }
+}
+
+int sub_81CB0C8(int rematchIndex)
+{
+ int mapGroup = gRematchTable[rematchIndex].mapGroup;
+ int mapNum = gRematchTable[rematchIndex].mapNum;
+ return Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum)->regionMapSectionId;
+}
+
+int sub_81CB0E4(int index)
+{
+ struct Pokenav3Struct *state = GetSubstructPtr(5);
+ int count = 1;
+ while (++index < state->unkA)
+ {
+ if (!state->unk1C[index].unk0)
+ return count;
+ if (sub_81D17E8(state->unk1C[index].unk2))
+ return count;
+
+ count++;
+ }
+
+ return 0;
+}
+
+int sub_81CB128(int index)
+{
+ struct Pokenav3Struct *state = GetSubstructPtr(5);
+ int count = -1;
+ while (--index >= 0)
+ {
+ if (!state->unk1C[index].unk0)
+ return count;
+ if (sub_81D17E8(state->unk1C[index].unk2))
+ return count;
+
+ count--;
+ }
+
+ return 0;
+}
+
+bool32 unref_sub_81CB16C(void)
+{
+ int i;
+
+ for (i = 0; i < REMATCH_TABLE_ENTRIES; i++)
+ {
+ if (sub_81CAE08(i) && gSaveBlock1Ptr->trainerRematches[i])
+ return TRUE;
+ }
+
+ for (i = 0; i < 21; i++) // TODO: This is the size of sMatchCallHeaders
+ {
+ if (MatchCallFlagGetByIndex(i))
+ {
+ int index = MatchCall_GetRematchTableIdx(i);
+ if (gSaveBlock1Ptr->trainerRematches[index])
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static bool32 sub_81CB1D0(void)
+{
+ struct Pokenav3Struct *state = GetSubstructPtr(5);
+ int index = GetSelectedMatchCall();
+ if (!state->unk1C[index].unk0)
+ {
+ if (sub_81CAEA4(index) == gMapHeader.regionMapSectionId)
+ {
+ if (!gSaveBlock1Ptr->trainerRematches[state->unk1C[index].unk2])
+ return TRUE;
+ }
+ }
+ else
+ {
+ if (state->unk1C[index].unk2 == 11)
+ {
+ if (sub_81CAEA4(index) == gMapHeader.regionMapSectionId
+ && FlagGet(FLAG_BADGE05_GET) == TRUE)
+ {
+ if (!FlagGet(FLAG_WATTSON_REMATCH_AVAILABLE))
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+}
diff --git a/src/pokenav_unk_4.c b/src/pokenav_unk_4.c
new file mode 100755
index 000000000..6fa76daf2
--- /dev/null
+++ b/src/pokenav_unk_4.c
@@ -0,0 +1,1119 @@
+#include "global.h"
+#include "bg.h"
+#include "data.h"
+#include "decompress.h"
+#include "dma3.h"
+#include "international_string_util.h"
+#include "main.h"
+#include "match_call.h"
+#include "menu.h"
+#include "overworld.h"
+#include "palette.h"
+#include "pokenav.h"
+#include "region_map.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 "trig.h"
+#include "window.h"
+#include "constants/game_stat.h"
+#include "constants/region_map_sections.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+
+struct Pokenav4Struct
+{
+ bool32 (*unk0)(void);
+ u32 unk4;
+ u8 filler8[0x6];
+ u8 unkE;
+ u8 unkF;
+ u16 unk10;
+ u16 unk12;
+ u16 unk14;
+ s16 unk16;
+ u8 unused18;
+ u8 unk19;
+ u16 unk1A;
+ struct Sprite *unk1C;
+ struct Sprite *unk20;
+ u8 unk24[0x800];
+ u8 unk824[0x800];
+ u8 unk1024[0x800];
+ u8 *unk1824;
+ u8 unk1828[0x800];
+ u8 unk2028[0x20];
+};
+
+static bool32 sub_81CB310(void);
+static u32 sub_81CB324(int);
+static void sub_81CBBB8(void);
+static void sub_81CBC1C(void);
+static void sub_81CC2B4(void);
+static void sub_81CC034(struct Pokenav4Struct *);
+static void sub_81CBD78(struct Pokenav4Struct *);
+static void sub_81CBDC0(struct Pokenav4Struct *);
+static void sub_81CBEF8(struct Pokenav4Struct *, int);
+static void sub_81CC214(void);
+static void sub_81CBC38(int);
+static void sub_81CBF60(struct Pokenav4Struct *);
+static bool32 sub_81CBFC4(struct Pokenav4Struct *);
+static void sub_81CC344(struct Pokenav4Struct *, int);
+static bool32 sub_81CC004(struct Pokenav4Struct *);
+static void sub_81CBFF0(struct Pokenav4Struct *);
+static void sub_81CC058(struct Pokenav4Struct *);
+static bool32 sub_81CC0D0(struct Pokenav4Struct *);
+static void sub_81CC0E0(struct Pokenav4Struct *);
+static bool32 sub_81CC104(struct Pokenav4Struct *);
+static void sub_81CC158(struct Pokenav4Struct *);
+static bool32 sub_81CC194(struct Pokenav4Struct *);
+static void sub_81CC09C(struct Pokenav4Struct *);
+static void sub_81CC11C(struct Pokenav4Struct *);
+static bool32 sub_81CC140(struct Pokenav4Struct *);
+static void sub_81CC1DC(struct Pokenav4Struct *);
+static bool32 sub_81CC204(struct Pokenav4Struct *);
+static void sub_81CC014(struct Pokenav4Struct *);
+static void sub_81CC39C(struct Pokenav4Struct *);
+static bool32 sub_81CC42C(struct Pokenav4Struct *);
+static void sub_81CC420(struct Pokenav4Struct *);
+static void sub_81CBC64(u8 taskId);
+static void sub_81CBCEC(u16 windowId, u32, u32);
+static void sub_81CBDF4(u16 windowId);
+static void sub_81CBE0C(u16 windowId);
+static void sub_81CBE38(u16 windowId);
+static void sub_81CBE50(u16 windowId);
+static void sub_81CBE88(u16 windowId, const u8 *str, int top);
+static void sub_81CBEB4(u16 windowId, const u8 *str, int top);
+static void sub_81CC2F0(struct Pokenav4Struct *, int);
+static void sub_81CC330(struct Pokenav4Struct *);
+static struct Sprite *sub_81CC370(void);
+static void sub_81CC440(struct Sprite *sprite);
+static void sub_81CC4A4(struct Sprite *sprite);
+
+extern const LoopedTask gUnknown_08622798[];
+extern const struct BgTemplate gUnknown_0862278C[3];
+extern const u16 gUnknown_08622510[];
+extern const u32 gUnknown_08622530[];
+extern const u32 gUnknown_08622760[];
+extern const u16 gUnknown_08622700[];
+extern const u16 gUnknown_08622720[];
+extern const u8 gUnknown_086225D4[];
+extern const u16 gUnknown_086226E0[];
+extern const struct BgTemplate gUnknown_08622794;
+extern const struct WindowTemplate gUnknown_086227D8;
+extern const struct WindowTemplate gUnknown_086227E0;
+extern const u8 *const gUnknown_086227E8[];
+extern const struct WindowTemplate gUnknown_08622808;
+extern const u8 gUnknown_086227F4[];
+extern const struct CompressedSpriteSheet gUnknown_08622810[1];
+extern const struct SpritePalette gUnknown_08622818[];
+extern const struct SpriteTemplate gUnknown_08622830;
+extern const struct SpriteTemplate gUnknown_08622850;
+
+bool32 sub_81CB260(void)
+{
+ struct Pokenav4Struct *state = AllocSubstruct(6, sizeof(struct Pokenav4Struct));
+ if (!state)
+ return FALSE;
+
+ state->unk19 = 0;
+ state->unk4 = CreateLoopedTask(sub_81CB324, 1);
+ state->unk0 = sub_81CB310;
+ return TRUE;
+}
+
+void sub_81CB29C(int index)
+{
+ struct Pokenav4Struct *state = GetSubstructPtr(6);
+ state->unk4 = CreateLoopedTask(gUnknown_08622798[index], 1);
+ state->unk0 = sub_81CB310;
+}
+
+u32 sub_81CB2CC(void)
+{
+ struct Pokenav4Struct *state = GetSubstructPtr(6);
+ return state->unk0();
+}
+
+void sub_81CB2E0(void)
+{
+ struct Pokenav4Struct *state = GetSubstructPtr(6);
+ sub_81CC2B4();
+ sub_81CBC1C();
+ RemoveWindow(state->unk12);
+ RemoveWindow(state->unk10);
+ RemoveWindow(state->unk14);
+ FreePokenavSubstruct(6);
+}
+
+static bool32 sub_81CB310(void)
+{
+ struct Pokenav4Struct *state = GetSubstructPtr(6);
+ return IsLoopedTaskActive(state->unk4);
+}
+
+static u32 sub_81CB324(int taskState)
+{
+ struct Pokenav4Struct *state = GetSubstructPtr(6);
+ switch (taskState)
+ {
+ case 0:
+ InitBgTemplates(gUnknown_0862278C, ARRAY_COUNT(gUnknown_0862278C));
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ decompress_and_copy_tile_data_to_vram(2, gUnknown_08622530, 0, 0, 0);
+ SetBgTilemapBuffer(2, state->unk1024);
+ CopyToBgTilemapBuffer(2, gUnknown_086225D4, 0, 0);
+ CopyBgTilemapBufferToVram(2);
+ CopyPaletteIntoBufferUnfaded(gUnknown_08622510, 0x20, 0x20);
+ CopyBgTilemapBufferToVram(2);
+ return 0;
+ case 1:
+ if (free_temp_tile_data_buffers_if_possible())
+ return 2;
+
+ sub_8199DF0(1, 0, 0, 1);
+ SetBgTilemapBuffer(1, state->unk24);
+ FillBgTilemapBufferRect_Palette0(1, 0x1000, 0, 0, 32, 20);
+ CopyPaletteIntoBufferUnfaded(gUnknown_086226E0, 0x10, 0x20);
+ CopyBgTilemapBufferToVram(1);
+ return 0;
+ case 2:
+ if (free_temp_tile_data_buffers_if_possible())
+ return 2;
+
+ sub_81CC034(state);
+ decompress_and_copy_tile_data_to_vram(3, gUnknown_08622760, 0, 0, 0);
+ CopyPaletteIntoBufferUnfaded(gUnknown_08622700, 0x30, 0x20);
+ CopyPaletteIntoBufferUnfaded(gUnknown_08622720, 0x50, 0x20);
+ return 0;
+ case 3:
+ if (free_temp_tile_data_buffers_if_possible() || !sub_81CAE28())
+ return 2;
+
+ sub_81CBBB8();
+ return 0;
+ case 4:
+ if (sub_81C8224())
+ return 2;
+
+ sub_81CBD78(state);
+ return 0;
+ case 5:
+ sub_81CBDC0(state);
+ sub_81CBEF8(state, 0);
+ return 0;
+ case 6:
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ShowBg(2);
+ ShowBg(3);
+ ShowBg(1);
+ sub_81CC214();
+ LoadLeftHeaderGfxForIndex(3);
+ sub_81C7FA0(3, 1, 0);
+ sub_81C7AC0(1);
+ return 0;
+ case 7:
+ if (IsPaletteFadeActive() || sub_81C8010())
+ return 2;
+
+ sub_81CBC38(1);
+ return 4;
+ default:
+ return 4;
+ }
+}
+
+u32 sub_81CB510(int taskState)
+{
+ struct Pokenav4Struct *state = GetSubstructPtr(6);
+ switch (taskState)
+ {
+ case 0:
+ switch (MatchCall_MoveCursorDown())
+ {
+ case 0:
+ break;
+ case 1:
+ PlaySE(SE_SELECT);
+ return 7;
+ case 2:
+ PlaySE(SE_SELECT);
+ // fall through
+ default:
+ return 0;
+ }
+ break;
+ case 1:
+ if (sub_81C8630())
+ return 2;
+
+ sub_81CBEF8(state, 0);
+ return 0;
+ case 2:
+ sub_81CBEF8(state, 0);
+ return 0;
+ case 3:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return 2;
+ break;
+ }
+ return 4;
+}
+
+u32 sub_81CB588(int taskState)
+{
+ struct Pokenav4Struct *state = GetSubstructPtr(6);
+ switch (taskState)
+ {
+ case 0:
+ switch (MatchCall_MoveCursorUp())
+ {
+ case 0:
+ break;
+ case 1:
+ PlaySE(SE_SELECT);
+ return 7;
+ case 2:
+ PlaySE(SE_SELECT);
+ // fall through
+ default:
+ return 0;
+ }
+ break;
+ case 1:
+ if (sub_81C8630())
+ return 2;
+
+ sub_81CBEF8(state, 0);
+ return 0;
+ case 2:
+ sub_81CBEF8(state, 0);
+ return 0;
+ case 3:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return 2;
+ break;
+ }
+ return 4;
+}
+
+u32 sub_81CB600(int taskState)
+{
+ struct Pokenav4Struct *state = GetSubstructPtr(6);
+ switch (taskState)
+ {
+ case 0:
+ switch (MatchCall_PageDown())
+ {
+ case 0:
+ break;
+ case 1:
+ PlaySE(SE_SELECT);
+ return 7;
+ case 2:
+ PlaySE(SE_SELECT);
+ // fall through
+ default:
+ return 0;
+ }
+ break;
+ case 1:
+ if (sub_81C8630())
+ return 2;
+
+ sub_81CBEF8(state, 0);
+ return 0;
+ case 2:
+ sub_81CBEF8(state, 0);
+ return 0;
+ case 3:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return 2;
+ break;
+ }
+ return 4;
+}
+
+u32 sub_81CB678(int taskState)
+{
+ struct Pokenav4Struct *state = GetSubstructPtr(6);
+ switch (taskState)
+ {
+ case 0:
+ switch (MatchCall_PageUp())
+ {
+ case 0:
+ break;
+ case 1:
+ PlaySE(SE_SELECT);
+ return 7;
+ case 2:
+ PlaySE(SE_SELECT);
+ // fall through
+ default:
+ return 0;
+ }
+ break;
+ case 1:
+ if (sub_81C8630())
+ return 2;
+
+ sub_81CBEF8(state, 0);
+ return 0;
+ case 2:
+ sub_81CBEF8(state, 0);
+ return 0;
+ case 3:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return 2;
+ break;
+ }
+ return 4;
+}
+
+u32 sub_81CB6F0(int taskState)
+{
+ struct Pokenav4Struct *state = GetSubstructPtr(6);
+ switch (taskState)
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ sub_81CBF60(state);
+ sub_81C7BA4(7);
+ return 0;
+ case 1:
+ if (sub_81CBFC4(state))
+ return 2;
+ break;
+ }
+
+ return 4;
+}
+
+u32 sub_81CB734(int taskState)
+{
+ struct Pokenav4Struct *state;
+ u16 var0;
+
+ PlaySE(SE_SELECT);
+ state = GetSubstructPtr(6);
+ var0 = sub_81CB01C();
+ sub_81CC344(state, var0);
+ return 4;
+}
+
+u32 sub_81CB75C(int taskState)
+{
+ struct Pokenav4Struct *state = GetSubstructPtr(6);
+ switch (taskState)
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ sub_81CBFF0(state);
+ sub_81C7BA4(6);
+ return 0;
+ case 1:
+ if (sub_81CC004(state))
+ return 2;
+ break;
+ }
+
+ return 4;
+}
+
+u32 sub_81CB7A0(int taskState)
+{
+ struct Pokenav4Struct *state = GetSubstructPtr(6);
+ switch (taskState)
+ {
+ case 0:
+ ToggleMatchCallVerticalArrows(TRUE);
+ sub_81CC058(state);
+ return 0;
+ case 1:
+ if (sub_81CC0D0(state))
+ return 2;
+
+ sub_81CC0E0(state);
+ PlaySE(SE_TOREEYE);
+ state->unkE = 0;
+ return 0;
+ case 2:
+ if (sub_81CC104(state))
+ return 2;
+
+ sub_81CC158(state);
+ return 0;
+ case 3:
+ if (sub_81CC194(state))
+ return 2;
+ break;
+ }
+
+ return 4;
+}
+
+u32 sub_81CB824(int taskState)
+{
+ struct Pokenav4Struct *state = GetSubstructPtr(6);
+ switch (taskState)
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ sub_81CC09C(state);
+ ToggleMatchCallVerticalArrows(TRUE);
+ state->unkE = 1;
+ return 0;
+ case 1:
+ if (sub_81CC0D0(state))
+ return 2;
+
+ sub_81CC11C(state);
+ return 0;
+ case 2:
+ if (sub_81CC140(state))
+ return 2;
+ break;
+ }
+
+ return 4;
+}
+
+u32 sub_81CB888(int taskState)
+{
+ struct Pokenav4Struct *state = GetSubstructPtr(6);
+ u32 result = 0;
+
+ switch (taskState)
+ {
+ case 0:
+ if (!state->unkE)
+ PlaySE(SE_TOREOFF);
+
+ PlaySE(SE_SELECT);
+ break;
+ case 1:
+ sub_81CC1DC(state);
+ break;
+ case 2:
+ if (sub_81CC204(state))
+ result = 2;
+ break;
+ case 3:
+ sub_81CBFF0(state);
+ break;
+ case 4:
+ if (sub_81CC004(state))
+ result = 2;
+
+ sub_81C7BA4(6);
+ break;
+ case 5:
+ if (IsDma3ManagerBusyWithBgCopy_())
+ {
+ result = 2;
+ }
+ else
+ {
+ if (state->unkF)
+ {
+ sub_81C8838();
+ result = 1;
+ }
+ else
+ {
+ ToggleMatchCallVerticalArrows(FALSE);
+ result = 4;
+ }
+ }
+ break;
+ case 6:
+ if (IsDma3ManagerBusyWithBgCopy())
+ {
+ result = 2;
+ }
+ else
+ {
+ ToggleMatchCallVerticalArrows(FALSE);
+ result = 4;
+ }
+ break;
+ }
+
+ return result;
+}
+
+u32 sub_81CB93C(int taskState)
+{
+ struct Pokenav4Struct *state = GetSubstructPtr(6);
+ switch (taskState)
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ sub_81C877C();
+ sub_81CC014(state);
+ return 0;
+ case 1:
+ if (sub_81C8820() || sub_81CC004(state))
+ return 2;
+
+ sub_81C7BA4(8);
+ return 0;
+ case 2:
+ sub_81C87AC(0);
+ sub_81CC39C(state);
+ return 0;
+ case 3:
+ if (sub_81C8820() || sub_81CC42C(state) || IsDma3ManagerBusyWithBgCopy_())
+ return 2;
+ break;
+ }
+
+ return 4;
+}
+
+u32 sub_81CB9C8(int taskState)
+{
+ int index;
+ int var0;
+ struct Pokenav4Struct *state = GetSubstructPtr(6);
+ switch (taskState)
+ {
+ case 0:
+ index = GetMatchCallListTopIndex();
+ var0 = sub_81CB0E4(index);
+ if (var0)
+ {
+ PlaySE(SE_SELECT);
+ state->unk16 = var0;
+ sub_81CC420(state);
+ return 0;
+ }
+ break;
+ case 1:
+ if (sub_81CC42C(state))
+ return 2;
+
+ sub_81CBEF8(state, state->unk16);
+ return 0;
+ case 2:
+ sub_81C87AC(state->unk16);
+ return 0;
+ case 3:
+ sub_81CC39C(state);
+ return 0;
+ case 4:
+ if (sub_81C8820() || sub_81CC42C(state))
+ return 2;
+ break;
+ }
+
+ return 4;
+}
+
+u32 sub_81CBA68(int taskState)
+{
+ struct Pokenav4Struct *state = GetSubstructPtr(6);
+ switch (taskState)
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ sub_81CC420(state);
+ sub_81C87F0();
+ return 0;
+ case 1:
+ if (sub_81C8820() || sub_81CC42C(state))
+ return 2;
+
+ sub_81C7BA4(6);
+ sub_81CBDC0(state);
+ return 0;
+ case 2:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return 2;
+ break;
+ }
+
+ return 4;
+}
+
+u32 sub_81CBAD4(int taskState)
+{
+ int index;
+ int var0;
+ struct Pokenav4Struct *state = GetSubstructPtr(6);
+ switch (taskState)
+ {
+ case 0:
+ index = GetMatchCallListTopIndex();
+ var0 = sub_81CB128(index);
+ if (var0)
+ {
+ PlaySE(SE_SELECT);
+ state->unk16 = var0;
+ sub_81CC420(state);
+ return 0;
+ }
+ break;
+ case 1:
+ if (sub_81CC42C(state))
+ return 2;
+
+ sub_81CBEF8(state, state->unk16);
+ return 0;
+ case 2:
+ sub_81C87AC(state->unk16);
+ return 0;
+ case 3:
+ sub_81CC39C(state);
+ return 0;
+ case 4:
+ if (sub_81C8820() || sub_81CC42C(state))
+ return 2;
+ break;
+ }
+
+ return 4;
+}
+
+u32 sub_81CBB74(int taskState)
+{
+ switch (taskState)
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ sub_81CBC38(0);
+ sub_81C7AC0(0);
+ sub_81C78A0();
+ return 0;
+ case 1:
+ if (IsPaletteFadeActive() || MainMenuLoopedTaskIsBusy())
+ return 2;
+
+ sub_81C7FDC();
+ break;
+ }
+
+ return 4;
+}
+
+static void sub_81CBBB8(void)
+{
+ struct MatchCallListTemplate template;
+ template.unk0 = (u32)sub_81CAE94();
+ template.unk4 = sub_81CAE38();
+ template.unk8 = 4;
+ template.unk6 = 0;
+ template.unk9 = 13;
+ template.unkA = 16;
+ template.unkB = 1;
+ template.unkC = 8;
+ template.unkD = 3;
+ template.unkE = 7;
+ template.unk10 = sub_81CB050;
+ template.unk14 = sub_81CBCEC;
+ sub_81C81D4(&gUnknown_08622794, &template, 2);
+ CreateTask(sub_81CBC64, 7);
+}
+
+static void sub_81CBC1C(void)
+{
+ sub_81C8234();
+ DestroyTask(FindTaskIdByFunc(sub_81CBC64));
+}
+
+static void sub_81CBC38(int arg0)
+{
+ u8 taskId = FindTaskIdByFunc(sub_81CBC64);
+ if (taskId != 0xFF)
+ gTasks[taskId].data[15] = arg0;
+}
+
+static void sub_81CBC64(u8 taskId)
+{
+ s16 *taskData = gTasks[taskId].data;
+ if (taskData[15])
+ {
+ taskData[0] += 4;
+ taskData[0] &= 0x7F;
+ taskData[1] = gSineTable[taskData[0]] >> 4;
+ sub_81C79BC(gUnknown_08622720, gUnknown_08622720 + 0x10, 0x10, 0x10, taskData[1], gPlttBufferUnfaded + 0x50);
+ if (!gPaletteFade.active)
+ CpuCopy32(gPlttBufferUnfaded + 0x50, gPlttBufferFaded + 0x50, 0x20);
+ }
+}
+
+static void sub_81CBCEC(u16 windowId, u32 arg1, u32 arg2)
+{
+ u8 bg = GetWindowAttribute(windowId, WINDOW_BG);
+ u16 *tilemap = GetBgTilemapBuffer(bg);
+ tilemap += arg2 * 0x40 + 0x1D;
+ if (sub_81CAEBC(arg1))
+ {
+ tilemap[0] = 0x5000;
+ tilemap[0x20] = 0x5001;
+ }
+ else
+ {
+ tilemap[0] = 0x5002;
+ tilemap[0x20] = 0x5002;
+ }
+}
+
+void sub_81CBD48(u16 windowId, u32 arg0)
+{
+ u8 bg = GetWindowAttribute(windowId, WINDOW_BG);
+ u16 *tilemap = GetBgTilemapBuffer(bg);
+ tilemap += arg0 * 0x40 + 0x1D;
+ tilemap[0] = 0x5002;
+ tilemap[0x20] = 0x5002;
+}
+
+static void sub_81CBD78(struct Pokenav4Struct *state)
+{
+ state->unk10 = AddWindow(&gUnknown_086227D8);
+ state->unk12 = AddWindow(&gUnknown_086227E0);
+ FillWindowPixelBuffer(state->unk10, PIXEL_FILL(1));
+ PutWindowTilemap(state->unk10);
+ FillWindowPixelBuffer(state->unk12, PIXEL_FILL(1));
+ PutWindowTilemap(state->unk12);
+ CopyWindowToVram(state->unk10, 1);
+}
+
+static void sub_81CBDC0(struct Pokenav4Struct *state)
+{
+ FillWindowPixelBuffer(state->unk12, PIXEL_FILL(1));
+ sub_81CBDF4(state->unk12);
+ sub_81CBE0C(state->unk12);
+ sub_81CBE38(state->unk12);
+ sub_81CBE50(state->unk12);
+ CopyWindowToVram(state->unk12, 2);
+}
+
+static void sub_81CBDF4(u16 windowId)
+{
+ sub_81CBE88(windowId, gText_NumberRegistered, 0);
+}
+
+static void sub_81CBE0C(u16 windowId)
+{
+ u8 str[3];
+ ConvertIntToDecimalStringN(str, sub_81CAE38(), STR_CONV_MODE_LEFT_ALIGN, 3);
+ sub_81CBEB4(windowId, str, 1);
+}
+
+static void sub_81CBE38(u16 windowId)
+{
+ sub_81CBE88(windowId, gText_NumberOfBattles, 2);
+}
+
+static void sub_81CBE50(u16 windowId)
+{
+ u8 str[5];
+ int numTrainerBattles = GetGameStat(GAME_STAT_TRAINER_BATTLES);
+ if (numTrainerBattles > 99999)
+ numTrainerBattles = 99999;
+
+ ConvertIntToDecimalStringN(str, numTrainerBattles, STR_CONV_MODE_LEFT_ALIGN, 5);
+ sub_81CBEB4(windowId, str, 3);
+}
+
+static void sub_81CBE88(u16 windowId, const u8 *str, int top)
+{
+ int y = top * 16 + 1;
+ AddTextPrinterParameterized(windowId, 7, str, 2, y, TEXT_SPEED_FF, NULL);
+}
+
+static void sub_81CBEB4(u16 windowId, const u8 *str, int top)
+{
+ int x = GetStringRightAlignXOffset(7, str, 86);
+ int y = top * 16 + 1;
+ AddTextPrinterParameterized(windowId, 7, str, x, y, TEXT_SPEED_FF, NULL);
+}
+
+static void sub_81CBEF8(struct Pokenav4Struct *state, int arg1)
+{
+ u8 mapName[32];
+ int x;
+ int index = GetSelectedMatchCall() + arg1;
+ int regionMapSection = sub_81CAEA4(index);
+ if (regionMapSection != MAPSEC_NONE)
+ GetMapName(mapName, regionMapSection, 0);
+ else
+ StringCopy(mapName, gText_Unknown);
+
+ x = GetStringCenterAlignXOffset(7, mapName, 88);
+ FillWindowPixelBuffer(state->unk10, PIXEL_FILL(1));
+ AddTextPrinterParameterized(state->unk10, 7, mapName, x, 1, 0, NULL);
+}
+
+static void sub_81CBF60(struct Pokenav4Struct *state)
+{
+ u32 i;
+
+ FillWindowPixelBuffer(state->unk12, PIXEL_FILL(1));
+ for (i = 0; i < 3; i++)
+ {
+ int messageId = sub_81CB02C(i);
+ if (messageId == 3)
+ break;
+
+ AddTextPrinterParameterized(state->unk12, 7, gUnknown_086227E8[messageId], 16, i * 16 + 1, TEXT_SPEED_FF, NULL);
+ }
+
+ CopyWindowToVram(state->unk12, 2);
+}
+
+static bool32 sub_81CBFC4(struct Pokenav4Struct *state)
+{
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_81CC2F0(state, sub_81CB01C());
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void sub_81CBFF0(struct Pokenav4Struct *state)
+{
+ sub_81CC330(state);
+ sub_81CBDC0(state);
+}
+
+static bool32 sub_81CC004(struct Pokenav4Struct *state)
+{
+ return IsDma3ManagerBusyWithBgCopy();
+}
+
+static void sub_81CC014(struct Pokenav4Struct *state)
+{
+ sub_81CC330(state);
+ FillWindowPixelBuffer(state->unk12, PIXEL_FILL(1));
+ CopyWindowToVram(state->unk12, 2);
+}
+
+static void sub_81CC034(struct Pokenav4Struct *state)
+{
+ state->unk14 = AddWindow(&gUnknown_08622808);
+ sub_8197184(state->unk14, 1, 4);
+ sub_81C7B40();
+}
+
+static void sub_81CC058(struct Pokenav4Struct *state)
+{
+ struct Sprite *sprite;
+ sub_8197184(state->unk14, 1, 4);
+ sub_81971C4(state->unk14, 1, 4);
+ FillWindowPixelBuffer(state->unk14, PIXEL_FILL(1));
+ PutWindowTilemap(state->unk14);
+ CopyWindowToVram(state->unk14, 3);
+ sprite = PauseSpinningPokenavSprite();
+ sprite->pos1.x = 24;
+ sprite->pos1.y = 112;
+ sprite->pos2.y = 0;
+}
+
+static void sub_81CC09C(struct Pokenav4Struct *state)
+{
+ LoadUserWindowBorderGfx(state->unk14, 1, 0x40);
+ DrawTextBorderOuter(state->unk14, 1, 4);
+ FillWindowPixelBuffer(state->unk14, PIXEL_FILL(1));
+ PutWindowTilemap(state->unk14);
+ CopyWindowToVram(state->unk14, 3);
+}
+
+static bool32 sub_81CC0D0(struct Pokenav4Struct *state)
+{
+ return IsDma3ManagerBusyWithBgCopy();
+}
+
+static void sub_81CC0E0(struct Pokenav4Struct *state)
+{
+ AddTextPrinterParameterized(state->unk14, 1, gUnknown_086227F4, 32, 1, 1, NULL);
+}
+
+static bool32 sub_81CC104(struct Pokenav4Struct *state)
+{
+ RunTextPrinters();
+ return IsTextPrinterActive(state->unk14);
+}
+
+static void sub_81CC11C(struct Pokenav4Struct *state)
+{
+ AddTextPrinterParameterized(state->unk14, 1, gText_TrainerCloseBy, 0, 1, 1, NULL);
+}
+
+static bool32 sub_81CC140(struct Pokenav4Struct *state)
+{
+ RunTextPrinters();
+ return IsTextPrinterActive(state->unk14);
+}
+
+static void sub_81CC158(struct Pokenav4Struct *state)
+{
+ int index = GetSelectedMatchCall();
+ const u8 *str = sub_81CAF78(index, &state->unkF);
+ u8 speed = GetPlayerTextSpeedDelay();
+ AddTextPrinterParameterized(state->unk14, 1, str, 32, 1, speed, NULL);
+}
+
+static bool32 sub_81CC194(struct Pokenav4Struct *state)
+{
+ if (gMain.heldKeys & A_BUTTON)
+ gTextFlags.canABSpeedUpPrint = 1;
+ else
+ gTextFlags.canABSpeedUpPrint = 0;
+
+ RunTextPrinters();
+ return IsTextPrinterActive(state->unk14);
+}
+
+static void sub_81CC1DC(struct Pokenav4Struct *state)
+{
+ ResumeSpinningPokenavSprite();
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 32, 20);
+ CopyBgTilemapBufferToVram(1);
+}
+
+static bool32 sub_81CC204(struct Pokenav4Struct *state)
+{
+ return IsDma3ManagerBusyWithBgCopy();
+}
+
+static void sub_81CC214(void)
+{
+ int i;
+ u8 paletteNum;
+ struct SpriteSheet spriteSheet;
+ struct Pokenav4Struct *state = GetSubstructPtr(6);
+
+ for (i = 0; i < ARRAY_COUNT(gUnknown_08622810); i++)
+ LoadCompressedSpriteSheet(&gUnknown_08622810[i]);
+
+ Pokenav_AllocAndLoadPalettes(gUnknown_08622818);
+ state->unk1C = NULL;
+ spriteSheet.data = state->unk1828;
+ spriteSheet.size = 0x800;
+ spriteSheet.tag = 8;
+ state->unk1824 = (u8 *)OBJ_VRAM0 + LoadSpriteSheet(&spriteSheet) * 0x20;
+ paletteNum = AllocSpritePalette(13);
+ state->unk1A = 0x100 + paletteNum * 0x10;
+ state->unk20 = sub_81CC370();
+ state->unk20->invisible = 1;
+}
+
+static void sub_81CC2B4(void)
+{
+ struct Pokenav4Struct *state = GetSubstructPtr(6);
+ if (state->unk1C)
+ DestroySprite(state->unk1C);
+ if (state->unk20)
+ DestroySprite(state->unk20);
+
+ FreeSpriteTilesByTag(8);
+ FreeSpriteTilesByTag(7);
+ FreeSpritePaletteByTag(12);
+ FreeSpritePaletteByTag(13);
+}
+
+static void sub_81CC2F0(struct Pokenav4Struct *state, int top)
+{
+ if (!state->unk1C)
+ {
+ u8 spriteId = CreateSprite(&gUnknown_08622830, 4, 80, 5);
+ state->unk1C = &gSprites[spriteId];
+ sub_81CC344(state, top);
+ }
+}
+
+static void sub_81CC330(struct Pokenav4Struct *state)
+{
+ DestroySprite(state->unk1C);
+ state->unk1C = NULL;
+}
+
+static void sub_81CC344(struct Pokenav4Struct *state, int top)
+{
+ state->unk1C->pos2.y = top * 16;
+}
+
+void sub_81CC34C(struct Sprite *sprite)
+{
+ if (++sprite->data[0] > 3)
+ {
+ sprite->data[0] = 0;
+ sprite->pos2.x = (sprite->pos2.x + 1) & 0x7;
+ }
+}
+
+static struct Sprite *sub_81CC370(void)
+{
+ u8 spriteId = CreateSprite(&gUnknown_08622850, 44, 104, 6);
+ return &gSprites[spriteId];
+}
+
+static void sub_81CC39C(struct Pokenav4Struct *state)
+{
+ u16 cursor;
+ int trainerId = sub_81CAF04(GetSelectedMatchCall());
+ if (trainerId >= 0)
+ {
+ DecompressPicFromTable(&gTrainerFrontPicTable[trainerId], state->unk1828, SPECIES_NONE);
+ LZ77UnCompWram(gTrainerFrontPicPaletteTable[trainerId].data, state->unk2028);
+ cursor = RequestDma3Copy(state->unk1828, state->unk1824, 0x800, 1);
+ LoadPalette(state->unk2028, state->unk1A, 0x20);
+ state->unk20->data[0] = 0;
+ state->unk20->data[7] = cursor;
+ state->unk20->callback = sub_81CC440;
+ }
+}
+
+static void sub_81CC420(struct Pokenav4Struct *state)
+{
+ state->unk20->callback = sub_81CC4A4;
+}
+
+static bool32 sub_81CC42C(struct Pokenav4Struct *state)
+{
+ return state->unk20->callback != SpriteCallbackDummy;
+}
+
+static void sub_81CC440(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (CheckForSpaceForDma3Request(sprite->data[7]) != -1)
+ {
+ sprite->pos2.x = -80;
+ sprite->invisible = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ sprite->pos2.x += 8;
+ if (sprite->pos2.x >= 0)
+ {
+ sprite->pos2.x = 0;
+ sprite->callback = SpriteCallbackDummy;
+ }
+ break;
+ }
+}
+
+static void sub_81CC4A4(struct Sprite *sprite)
+{
+ sprite->pos2.x -= 8;
+ if (sprite->pos2.x <= -80)
+ {
+ sprite->invisible = 1;
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
diff --git a/src/pokenav_unk_5.c b/src/pokenav_unk_5.c
new file mode 100755
index 000000000..eccc200d5
--- /dev/null
+++ b/src/pokenav_unk_5.c
@@ -0,0 +1,636 @@
+#include "global.h"
+#include "bg.h"
+#include "decompress.h"
+#include "landmark.h"
+#include "main.h"
+#include "menu.h"
+#include "palette.h"
+#include "pokenav.h"
+#include "region_map.h"
+#include "sound.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "task.h"
+#include "text_window.h"
+#include "window.h"
+#include "constants/songs.h"
+
+struct Pokenav5Struct
+{
+ u8 filler0[0xC];
+ bool32 unkC;
+ u32 (*unk10)(struct Pokenav5Struct *);
+};
+
+struct Pokenav5Struct_2
+{
+ bool32 (*unk0)(void);
+ u32 unk4;
+ u16 unk8;
+ struct Sprite *cityFeatureTextSprites[3];
+ u8 unk18[0x800];
+ u8 cityZoomPics[22][0xC8];
+};
+
+struct CityZoomPic
+{
+ u16 mapSecId;
+ u16 unk2;
+ const u32 *data;
+};
+
+static u32 sub_81CC568(struct Pokenav5Struct *);
+static u32 sub_81CC5B4(struct Pokenav5Struct *);
+static u32 sub_81CC5DC(struct Pokenav5Struct *);
+static u32 sub_81CC6F4(int);
+static u32 sub_81CCD34(int);
+static bool32 sub_81CC6BC(void);
+static void sub_81CC9EC(void);
+static void sub_81CC9C0(void);
+static void sub_81CCD10(void);
+static bool32 sub_81CCD24(void);
+static void sub_81CCA1C(struct Pokenav5Struct_2 *);
+static bool32 sub_81CCAFC(void);
+static void sub_81CCB0C(struct Pokenav5Struct_2 *);
+static bool32 sub_81CCC4C(struct Pokenav5Struct_2 *);
+static void sub_81CCC5C(int);
+static bool32 sub_81CCC88(void);
+static void sub_81CCE58(void);
+static void sub_81CCD70(struct Pokenav5Struct_2 *, int, int);
+static void sub_81CCDE8(struct Pokenav5Struct_2 *, int, int);
+static void sub_81CCFA4(int);
+static void sub_81CCC9C(u8 taskId);
+static void sub_81CCF78(void);
+
+extern const LoopedTask gUnknown_086230E4[];
+extern const struct BgTemplate gUnknown_086230D8[2];
+extern const struct CompressedSpriteSheet gUnknown_086230F8[1];
+extern const struct SpritePalette gUnknown_08623100[];
+extern const struct WindowTemplate gUnknown_08623110;
+extern const u32 gUnknown_08622888[];
+extern const u16 gUnknown_08622868[];
+extern const u16 gHoennMapZoomIcons_Pal[];
+extern const struct CityZoomPic gUnknown_08623118[22];
+extern const struct SpriteTemplate gUnknown_086231D0;
+
+u32 sub_81CC4D4(void)
+{
+ struct Pokenav5Struct *state = AllocSubstruct(3, sizeof(struct Pokenav5Struct));
+ if (!state)
+ return FALSE;
+
+ if (!AllocSubstruct(16, sizeof(struct RegionMap)))
+ return FALSE;
+
+ state->unkC = sub_8124668(gMapHeader.regionMapSectionId);
+ if (!state->unkC)
+ state->unk10 = sub_81CC568;
+ else
+ state->unk10 = sub_81CC5B4;
+
+ return TRUE;
+}
+
+void sub_81CC524(void)
+{
+ gSaveBlock2Ptr->regionMapZoom = sub_8124658();
+ FreePokenavSubstruct(16);
+ FreePokenavSubstruct(3);
+}
+
+u32 sub_81CC554(void)
+{
+ struct Pokenav5Struct *state = GetSubstructPtr(3);
+ state->unk10(state);
+}
+
+static u32 sub_81CC568(struct Pokenav5Struct *state)
+{
+ switch (sub_81230AC())
+ {
+ case 3:
+ return 1;
+ case 4:
+ if (!sub_8124658())
+ return 3;
+ return 2;
+ case 5:
+ state->unk10 = sub_81CC5DC;
+ return 4;
+ }
+
+ return 0;
+}
+
+static u32 sub_81CC5B4(struct Pokenav5Struct *state)
+{
+ if (gMain.newKeys & B_BUTTON)
+ {
+ state->unk10 = sub_81CC5DC;
+ return 4;
+ }
+
+ return 0;
+}
+
+static u32 sub_81CC5DC(struct Pokenav5Struct *state)
+{
+ return POKENAV_MENU_1;
+}
+
+bool32 sub_81CC5E4(void)
+{
+ struct Pokenav5Struct *state = GetSubstructPtr(3);
+ return state->unkC;
+}
+
+bool32 sub_81CC5F4(void)
+{
+ struct Pokenav5Struct_2 *state = AllocSubstruct(4, sizeof(struct Pokenav5Struct_2));
+ if (!state)
+ return FALSE;
+
+ state->unk4 = CreateLoopedTask(sub_81CC6F4, 1);
+ state->unk0 = sub_81CC6BC;
+ return TRUE;
+}
+
+void sub_81CC62C(int index)
+{
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ state->unk4 = CreateLoopedTask(gUnknown_086230E4[index], 1);
+ state->unk0 = sub_81CC6BC;
+}
+
+u32 sub_81CC65C(void)
+{
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ return state->unk0();
+}
+
+void sub_81CC670(void)
+{
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ FreeRegionMapIconResources();
+ sub_81CC9EC();
+ RemoveWindow(state->unk8);
+ FreePokenavSubstruct(16);
+ FreePokenavSubstruct(4);
+ SetPokenavVBlankCallback();
+ SetBgMode(0);
+}
+
+static void sub_81CC6A4(void)
+{
+ TransferPlttBuffer();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ UpdateRegionMapVideoRegs();
+}
+
+static bool32 sub_81CC6BC(void)
+{
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ return IsLoopedTaskActive(state->unk4);
+}
+
+static bool8 sub_81CC6D0(void)
+{
+ if (sub_81CC5E4())
+ return FALSE;
+
+ return gSaveBlock2Ptr->regionMapZoom == 1;
+}
+
+static u32 sub_81CC6F4(int taskState)
+{
+ int var0;
+ struct RegionMap *regionMap;
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ switch (taskState)
+ {
+ case 0:
+ SetVBlankCallback_(NULL);
+ HideBg(1);
+ HideBg(2);
+ HideBg(3);
+ SetBgMode(1);
+ InitBgTemplates(gUnknown_086230D8, ARRAY_COUNT(gUnknown_086230D8));
+ regionMap = GetSubstructPtr(16);
+ sub_8122CF8(regionMap, &gUnknown_086230D8[1], sub_81CC6D0());
+ sub_81CC9C0();
+ return 0;
+ case 1:
+ if (sub_8122DB0())
+ return 2;
+
+ if (!sub_81CC5E4())
+ {
+ CreateRegionMapPlayerIcon(4, 9);
+ CreateRegionMapCursor(5, 10);
+ sub_812454C();
+ }
+ else
+ {
+ sub_8123030(0, 6);
+ }
+ return 0;
+ case 2:
+ sub_81CCD10();
+ return 1;
+ case 3:
+ if (sub_81CCD24())
+ return 2;
+
+ sub_81CCA1C(state);
+ return 1;
+ case 4:
+ if (sub_81CCAFC())
+ return 2;
+
+ sub_81CCB0C(state);
+ sub_81C7B40();
+ return 0;
+ case 5:
+ if (sub_81CCC4C(state))
+ return 2;
+
+ ShowBg(1);
+ ShowBg(2);
+ SetVBlankCallback_(sub_81CC6A4);
+ return 0;
+ case 6:
+ if (!sub_81CC6D0())
+ var0 = 4;
+ else
+ var0 = 5;
+
+ LoadLeftHeaderGfxForIndex(var0);
+ sub_81C7FA0(var0, 1, 1);
+ sub_81C7AC0(1);
+ return 0;
+ case 7:
+ if (IsPaletteFadeActive() || sub_81C8010())
+ return 2;
+ return 1;
+ default:
+ return 4;
+ }
+}
+
+u32 sub_81CC848(int taskState)
+{
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ switch (taskState)
+ {
+ case 0:
+ sub_81CCB0C(state);
+ return 0;
+ case 1:
+ if (sub_81CCC4C(state))
+ return 2;
+ break;
+ }
+
+ return 4;
+}
+
+u32 sub_81CC878(int taskState)
+{
+ switch (taskState)
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ sub_81CCC5C(0);
+ sub_8123418();
+ return 0;
+ case 1:
+ if (sub_8123514() || sub_81CCC88())
+ return 2;
+
+ sub_81C7BA4(1);
+ return 0;
+ case 2:
+ if (IsDma3ManagerBusyWithBgCopy_())
+ return 2;
+
+ sub_81C7E14(4);
+ break;
+ }
+
+ return 4;
+}
+
+u32 sub_81CC8D8(int taskState)
+{
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ switch (taskState)
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ sub_81CCB0C(state);
+ return 0;
+ case 1:
+ if (sub_81CCC4C(state))
+ return 2;
+
+ sub_81CCC5C(1);
+ sub_8123418();
+ return 0;
+ case 2:
+ if (sub_8123514() || sub_81CCC88())
+ return 2;
+
+ sub_81C7BA4(2);
+ return 0;
+ case 3:
+ if (IsDma3ManagerBusyWithBgCopy_())
+ return 2;
+
+ sub_81C7E14(5);
+ break;
+ }
+
+ return 4;
+}
+
+u32 sub_81CC95C(int taskState)
+{
+ switch (taskState)
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ sub_81C7AC0(0);
+ return 0;
+ case 1:
+ if (IsPaletteFadeActive())
+ return 2;
+
+ sub_81C7FDC();
+ sub_81C78A0();
+ return 0;
+ case 2:
+ if (MainMenuLoopedTaskIsBusy())
+ return 2;
+
+ HideBg(1);
+ HideBg(2);
+ HideBg(3);
+ return 0;
+ }
+
+ return 4;
+}
+
+static void sub_81CC9C0(void)
+{
+ int i;
+ for (i = 0; i < ARRAY_COUNT(gUnknown_086230F8); i++)
+ LoadCompressedSpriteSheet(&gUnknown_086230F8[i]);
+
+ Pokenav_AllocAndLoadPalettes(gUnknown_08623100);
+ sub_81CCE58();
+}
+
+static void sub_81CC9EC(void)
+{
+ int i;
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ FreeSpriteTilesByTag(6);
+ FreeSpritePaletteByTag(11);
+ for (i = 0; i < 3; i++)
+ DestroySprite(state->cityFeatureTextSprites[i]);
+}
+
+static void sub_81CCA1C(struct Pokenav5Struct_2 *state)
+{
+ sub_8199DF0(1, PIXEL_FILL(0), 0x40, 1);
+ sub_8199DF0(1, PIXEL_FILL(1), 0x41, 1);
+ CpuFill16(0x1040, state->unk18, 0x800);
+ SetBgTilemapBuffer(1, state->unk18);
+ state->unk8 = AddWindow(&gUnknown_08623110);
+ LoadUserWindowBorderGfx_(state->unk8, 0x42, 0x40);
+ DrawTextBorderOuter(state->unk8, 0x42, 4);
+ decompress_and_copy_tile_data_to_vram(1, gUnknown_08622888, 0, 0, 0);
+ FillWindowPixelBuffer(state->unk8, PIXEL_FILL(1));
+ PutWindowTilemap(state->unk8);
+ CopyWindowToVram(state->unk8, 3);
+ CopyPaletteIntoBufferUnfaded(gUnknown_08622868, 0x10, 0x20);
+ CopyPaletteIntoBufferUnfaded(gHoennMapZoomIcons_Pal, 0x30, 0x20);
+ if (!sub_8124658())
+ ChangeBgY(1, -0x6000, 0);
+ else
+ ChangeBgY(1, 0, 0);
+
+ ChangeBgX(1, 0, 0);
+}
+
+static bool32 sub_81CCAFC(void)
+{
+ return free_temp_tile_data_buffers_if_possible();
+}
+
+static void sub_81CCB0C(struct Pokenav5Struct_2 *state)
+{
+ struct RegionMap *regionMap = GetSubstructPtr(16);
+ switch (regionMap->iconDrawType)
+ {
+ case MAPSECTYPE_CITY_CANFLY:
+ FillWindowPixelBuffer(state->unk8, PIXEL_FILL(1));
+ PutWindowRectTilemap(state->unk8, 0, 0, 12, 2);
+ AddTextPrinterParameterized(state->unk8, 7, regionMap->mapSecName, 0, 1, TEXT_SPEED_FF, NULL);
+ sub_81CCD70(state, regionMap->mapSecId, regionMap->posWithinMapSec);
+ CopyWindowToVram(state->unk8, 3);
+ sub_81CCFA4(0);
+ break;
+ case MAPSECTYPE_CITY_CANTFLY:
+ FillWindowPixelBuffer(state->unk8, PIXEL_FILL(1));
+ PutWindowRectTilemap(state->unk8, 0, 0, 12, 2);
+ AddTextPrinterParameterized(state->unk8, 7, regionMap->mapSecName, 0, 1, TEXT_SPEED_FF, NULL);
+ FillBgTilemapBufferRect(1, 0x1041, 17, 6, 12, 11, 17);
+ CopyWindowToVram(state->unk8, 3);
+ sub_81CCFA4(1);
+ break;
+ case MAPSECTYPE_PLAIN:
+ case MAPSECTYPE_BATTLE_FRONTIER:
+ FillWindowPixelBuffer(state->unk8, PIXEL_FILL(1));
+ PutWindowTilemap(state->unk8);
+ AddTextPrinterParameterized(state->unk8, 7, regionMap->mapSecName, 0, 1, TEXT_SPEED_FF, NULL);
+ sub_81CCDE8(state, regionMap->mapSecId, regionMap->posWithinMapSec);
+ CopyWindowToVram(state->unk8, 3);
+ sub_81CCFA4(1);
+ break;
+ case MAPSECTYPE_NONE:
+ FillBgTilemapBufferRect(1, 0x1041, 17, 4, 12, 13, 17);
+ CopyBgTilemapBufferToVram(1);
+ sub_81CCFA4(1);
+ break;
+ }
+}
+
+static bool32 sub_81CCC4C(struct Pokenav5Struct_2 *state)
+{
+ return IsDma3ManagerBusyWithBgCopy();
+}
+
+static void sub_81CCC5C(int arg0)
+{
+ u8 taskId = CreateTask(sub_81CCC9C, 3);
+ gTasks[taskId].data[0] = arg0;
+}
+
+static bool32 sub_81CCC88(void)
+{
+ return FuncIsActiveTask(sub_81CCC9C);
+}
+
+static void sub_81CCC9C(u8 taskId)
+{
+ if (gTasks[taskId].data[0])
+ {
+ if (ChangeBgY(1, 0x480, 1) >= 0)
+ {
+ ChangeBgY(1, 0, 0);
+ DestroyTask(taskId);
+ }
+
+ sub_81CCF78();
+ }
+ else
+ {
+ if (ChangeBgY(1, 0x480, 2) <= -0x6000)
+ {
+ ChangeBgY(1, -0x6000, 0);
+ DestroyTask(taskId);
+ }
+
+ sub_81CCF78();
+ }
+}
+
+static void sub_81CCD10(void)
+{
+ CreateLoopedTask(sub_81CCD34, 1);
+}
+
+static bool32 sub_81CCD24(void)
+{
+ return FuncIsActiveLoopedTask(sub_81CCD34);
+}
+
+static u32 sub_81CCD34(int taskState)
+{
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ if (taskState < (int)ARRAY_COUNT(gUnknown_08623118))
+ {
+ LZ77UnCompWram(gUnknown_08623118[taskState].data, state->cityZoomPics[taskState]);
+ return 1;
+ }
+
+ return 4;
+}
+
+static void sub_81CCD70(struct Pokenav5Struct_2 *state, int mapSecId, int pos)
+{
+ int i;
+ for (i = 0; i < (int)ARRAY_COUNT(gUnknown_08623118) && (gUnknown_08623118[i].mapSecId != mapSecId || gUnknown_08623118[i].unk2 != pos); i++)
+ ;
+
+ if (i == ARRAY_COUNT(gUnknown_08623118))
+ return;
+
+ FillBgTilemapBufferRect_Palette0(1, 0x1041, 17, 6, 12, 11);
+ CopyToBgTilemapBufferRect(1, state->cityZoomPics[i], 18, 6, 10, 10);
+}
+
+static void sub_81CCDE8(struct Pokenav5Struct_2 *state, int mapSecId, int pos)
+{
+ int i = 0;
+ while (1)
+ {
+ const u8 *landmarkName = GetLandmarkName(mapSecId, pos, i);
+ if (!landmarkName)
+ break;
+
+ StringCopyPadded(gStringVar1, landmarkName, CHAR_SPACE, 12);
+ AddTextPrinterParameterized(state->unk8, 7, gStringVar1, 0, i * 16 + 17, TEXT_SPEED_FF, NULL);
+ i++;
+ }
+}
+
+static void sub_81CCE58(void)
+{
+ int i;
+ int y;
+ struct Sprite *sprite;
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+
+ if (!sub_8124658())
+ y = 228;
+ else
+ y = 132;
+
+ for (i = 0; i < 3; i++)
+ {
+ u8 spriteId = CreateSprite(&gUnknown_086231D0, 152 + i * 32, y, 8);
+ sprite = &gSprites[spriteId];
+ sprite->data[0] = 0;
+ sprite->data[1] = i * 4;
+ sprite->data[2] = sprite->oam.tileNum;
+ sprite->data[3] = 150;
+ sprite->data[4] = i * 4;
+ sprite->oam.tileNum += i * 4;
+ state->cityFeatureTextSprites[i] = sprite;
+ }
+}
+
+void sub_81CCEF4(struct Sprite *sprite)
+{
+ if (sprite->data[3])
+ {
+ sprite->data[3]--;
+ return;
+ }
+
+ if (++sprite->data[0] > 11)
+ sprite->data[0] = 0;
+
+ if (++sprite->data[1] > 60)
+ sprite->data[1] = 0;
+
+ sprite->oam.tileNum = sprite->data[2] + sprite->data[1];
+ if (sprite->data[5] < 4)
+ {
+ if (sprite->data[0] == 0)
+ {
+ sprite->data[5]++;
+ sprite->data[3] = 120;
+ }
+ }
+ else
+ {
+ if (sprite->data[1] == sprite->data[4])
+ {
+ sprite->data[5] = 0;
+ sprite->data[0] = 0;
+ sprite->data[3] = 120;
+ }
+ }
+}
+
+static void sub_81CCF78(void)
+{
+ int i;
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ int y = 132 - (GetBgY(1) >> 8);
+ for (i = 0; i < 3; i++)
+ state->cityFeatureTextSprites[i]->pos1.y = y;
+}
+
+static void sub_81CCFA4(int invisible)
+{
+ int i;
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ for (i = 0; i < 3; i++)
+ state->cityFeatureTextSprites[i]->invisible = invisible;
+}
diff --git a/src/rayquaza_scene.c b/src/rayquaza_scene.c
index e2497a8dc..fc2860797 100644
--- a/src/rayquaza_scene.c
+++ b/src/rayquaza_scene.c
@@ -1563,7 +1563,7 @@ static void Task_DuoFightAnim(u8 taskId)
}
BlendPalettes(-1, 0x10, 0);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
SetVBlankCallback(VBlankCB_DuoFight);
PlaySE(SE_T_OOAME);
}
@@ -1715,7 +1715,7 @@ static void sub_81D752C(u8 taskId)
static void DuoFightEnd(u8 taskId, s8 palDelay)
{
PlaySE(SE_T_OOAME_E);
- BeginNormalPaletteFade(0xFFFFFFFF, palDelay, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, palDelay, 0, 0x10, RGB_BLACK);
gTasks[taskId].func = Task_DuoFightEnd;
}
@@ -1971,7 +1971,7 @@ static void Task_HandleRayTakesFlight(u8 taskId)
case 0:
if (data[1] == 8)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
data[2] = 0;
data[3] = 30;
data[4] = 0;
@@ -2012,7 +2012,7 @@ static void Task_HandleRayTakesFlight(u8 taskId)
if (data[1] > 295)
{
data[0]++;
- BeginNormalPaletteFade(0xFFFFFFFF, 6, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 6, 0, 0x10, RGB_BLACK);
}
}
break;
@@ -2174,7 +2174,7 @@ static void Task_HandleRayDescends(u8 taskId)
case 0:
if (data[1] == 8)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
data[1] = 0;
data[0]++;
}
@@ -2219,7 +2219,7 @@ static void Task_HandleRayDescends(u8 taskId)
}
break;
case 4:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].func = Task_RayDescendsEnd;
break;
}
@@ -2366,7 +2366,7 @@ static void Task_HandleRayCharges(u8 taskId)
case 0:
if (data[1] == 8)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
data[1] = 0;
data[0]++;
}
@@ -2399,7 +2399,7 @@ static void Task_HandleRayCharges(u8 taskId)
}
break;
case 3:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].func = Task_RayChargesEnd;
break;
}
@@ -2532,7 +2532,7 @@ static void Task_HandleRayChasesAway(u8 taskId)
if (data[1] == 8)
{
sub_81D90A8(taskId);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
data[1] = 0;
data[0]++;
}
@@ -2574,7 +2574,7 @@ static void Task_HandleRayChasesAway(u8 taskId)
}
break;
case 3:
- BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 0x10, RGB_BLACK);
gTasks[taskId].func = Task_RayChasesAwayEnd;
break;
}
diff --git a/src/record_mixing.c b/src/record_mixing.c
index 3a16f817e..85b52e478 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -47,7 +47,7 @@ struct RecordMixingHallRecords
struct PlayerRecordsRS
{
- struct SecretBaseRecord secretBases[SECRET_BASES_COUNT];
+ struct SecretBase secretBases[SECRET_BASES_COUNT];
TVShow tvShows[TV_SHOWS_COUNT];
PokeNews pokeNews[POKE_NEWS_COUNT];
OldMan oldMan;
@@ -60,7 +60,7 @@ struct PlayerRecordsRS
struct PlayerRecordsEmerald
{
- /* 0x0000 */ struct SecretBaseRecord secretBases[SECRET_BASES_COUNT];
+ /* 0x0000 */ struct SecretBase secretBases[SECRET_BASES_COUNT];
/* 0x0c80 */ TVShow tvShows[TV_SHOWS_COUNT];
/* 0x1004 */ PokeNews pokeNews[POKE_NEWS_COUNT];
/* 0x1044 */ OldMan oldMan;
@@ -83,7 +83,7 @@ union PlayerRecords
// Static RAM declarations
static IWRAM_DATA bool8 gUnknown_03001130;
-static IWRAM_DATA struct SecretBaseRecord *sSecretBasesSave;
+static IWRAM_DATA struct SecretBase *sSecretBasesSave;
static IWRAM_DATA TVShow *sTvShowsSave;
static IWRAM_DATA PokeNews *sPokeNewsSave;
static IWRAM_DATA OldMan *sOldManSave;
@@ -208,7 +208,7 @@ static void PrepareUnknownExchangePacket(struct PlayerRecordsRS *dest)
static void PrepareExchangePacketForRubySapphire(struct PlayerRecordsRS *dest)
{
memcpy(dest->secretBases, sSecretBasesSave, sizeof(dest->secretBases));
- sub_80EB18C(dest->secretBases);
+ ClearJapaneseSecretBases(dest->secretBases);
memcpy(dest->tvShows, sTvShowsSave, sizeof(dest->tvShows));
sub_80F1208(dest->tvShows);
memcpy(dest->pokeNews, sPokeNewsSave, sizeof(dest->pokeNews));
@@ -226,7 +226,7 @@ static void PrepareExchangePacketForRubySapphire(struct PlayerRecordsRS *dest)
static void PrepareExchangePacket(void)
{
- sub_80E9914();
+ SetPlayerSecretBaseParty();
sub_80F0BB8();
SetSrcLookupPointers();
diff --git a/src/recorded_battle.c b/src/recorded_battle.c
index 9f2be36af..ac97dfcd6 100644
--- a/src/recorded_battle.c
+++ b/src/recorded_battle.c
@@ -17,6 +17,7 @@
#include "battle_setup.h"
#include "frontier_util.h"
#include "constants/trainers.h"
+#include "constants/rgb.h"
#define BATTLER_RECORD_SIZE 664
#define ILLEGAL_BATTLE_TYPES ((BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_FIRST_BATTLE \
@@ -220,7 +221,7 @@ u8 RecordedBattle_GetBattlerAction(u8 battlerId)
{
gSpecialVar_Result = gBattleOutcome = B_OUTCOME_PLAYER_TELEPORTED; // hah
ResetPaletteFadeControl();
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
SetMainCallback2(CB2_QuitRecordedBattle);
return 0xFF;
}
diff --git a/src/region_map.c b/src/region_map.c
index 25b47479d..a98964e5c 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -26,6 +26,7 @@
#include "heal_location.h"
#include "constants/heal_locations.h"
#include "constants/map_types.h"
+#include "constants/rgb.h"
#define MAP_WIDTH 28
#define MAP_HEIGHT 15
@@ -492,7 +493,7 @@ void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed)
while (sub_8122DB0());
}
-void sub_8122CF8(struct RegionMap *regionMap, struct BgTemplate *template, bool8 zoomed)
+void sub_8122CF8(struct RegionMap *regionMap, const struct BgTemplate *template, bool8 zoomed)
{
gRegionMap = regionMap;
gRegionMap->initStep = 0;
@@ -1941,7 +1942,7 @@ static void sub_8124D14(void)
switch (sFlyMap->unk_004)
{
case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
sFlyMap->unk_004++;
break;
case 1:
@@ -1988,7 +1989,7 @@ static void sub_8124E0C(void)
switch (sFlyMap->unk_004)
{
case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
sFlyMap->unk_004++;
break;
case 1:
diff --git a/src/reset_rtc_screen.c b/src/reset_rtc_screen.c
index 6ee757607..d675c49d1 100644
--- a/src/reset_rtc_screen.c
+++ b/src/reset_rtc_screen.c
@@ -17,6 +17,7 @@
#include "bg.h"
#include "window.h"
#include "gpu_regs.h"
+#include "constants/rgb.h"
struct ResetRtcStruct
{
@@ -552,7 +553,7 @@ static void Task_ResetRtcScreen(u8 taskId)
switch (data[0])
{
case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 1, 0x10, 0, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, 1, 0x10, 0, RGB_WHITEALPHA);
data[0] = 1;
break;
case 1:
@@ -621,7 +622,7 @@ static void Task_ResetRtcScreen(u8 taskId)
case 5:
if (gMain.newKeys & A_BUTTON)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 1, 0, 0x10, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, 1, 0, 0x10, RGB_WHITEALPHA);
data[0] = 6;
}
else
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
index dd177f884..46fc4cd41 100644
--- a/src/reshow_battle_screen.c
+++ b/src/reshow_battle_screen.c
@@ -15,9 +15,7 @@
#include "constants/trainers.h"
#include "battle_interface.h"
#include "battle_anim.h"
-#include "data2.h"
-
-extern const union AnimCmd * const * const gMonAnimationsSpriteAnimsPtrTable[];
+#include "data.h"
// this file's functions
static void CB2_ReshowBattleScreenAfterMenu(void);
@@ -154,7 +152,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
if (gWirelessCommType != 0 && gReceivedRemoteLinkPlayers != 0)
{
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0);
}
}
@@ -233,7 +231,7 @@ static void CreateBattlerSprite(u8 battler)
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], gBattleMonForms[battler]);
if (gBattleSpritesDataPtr->battlerData[battler].transformSpecies == SPECIES_CASTFORM)
- gSprites[gBattlerSpriteIds[battler]].anims = gMonAnimationsSpriteAnimsPtrTable[SPECIES_CASTFORM];
+ gSprites[gBattlerSpriteIds[battler]].anims = gMonFrontAnimsPtrTable[SPECIES_CASTFORM];
}
else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && battler == B_POSITION_PLAYER_LEFT)
{
@@ -269,7 +267,7 @@ static void CreateBattlerSprite(u8 battler)
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], gBattleMonForms[battler]);
if (gBattleSpritesDataPtr->battlerData[battler].transformSpecies == SPECIES_CASTFORM)
- gSprites[gBattlerSpriteIds[battler]].anims = gMonAnimationsSpriteAnimsPtrTable[SPECIES_CASTFORM];
+ gSprites[gBattlerSpriteIds[battler]].anims = gMonFrontAnimsPtrTable[SPECIES_CASTFORM];
}
gSprites[gBattlerSpriteIds[battler]].invisible = gBattleSpritesDataPtr->battlerData[battler].invisible;
diff --git a/src/rock.c b/src/rock.c
index 814b1d88b..f05816362 100644
--- a/src/rock.c
+++ b/src/rock.c
@@ -419,7 +419,7 @@ void AnimTask_LoadSandstormBackground(u8 taskId)
sub_80A6B30(&animBg);
AnimLoadCompressedBgGfx(animBg.bgId, gUnknown_08D8D58C, animBg.tilesOffset);
sub_80A6D60(&animBg, gUnknown_08D8D410, 0);
- LoadCompressedPalette(gBattleAnimSpritePalette_261, animBg.paletteId * 16, 32);
+ LoadCompressedPalette(gBattleAnimSpritePal_FlyingDirt, animBg.paletteId * 16, 32);
if (gBattleAnimArgs[0] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
var0 = 1;
diff --git a/src/roulette.c b/src/roulette.c
index 39db5630b..25c079cda 100644
--- a/src/roulette.c
+++ b/src/roulette.c
@@ -902,7 +902,7 @@ static void sub_8140470(void)
{
sub_815168C(&gUnknown_0203AB88->varB8, i, &gUnknown_085B6388[i]);
}
-
+
for (i = 0; i < PARTY_SIZE; i++)
{
switch (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2))
@@ -953,7 +953,7 @@ static void sub_81405CC(void)
case 4:
if (free_temp_tile_data_buffers_if_possible())
return;
-
+
sub_8140470();
CopyToBgTilemapBuffer(2, gUnknown_085B5FA0, 0, 0);
break;
@@ -1379,8 +1379,6 @@ static u8 sub_814118C(u16 r0, u16 r1)
}
}
-// r7/r8 swap
-#ifdef NONMATCHING
static void sub_8141344(u8 taskId)
{
u8 randf;
@@ -1412,8 +1410,7 @@ static void sub_8141344(u8 taskId)
g = S16TOPOSFLOAT(g) / 5.0f;
gUnknown_0203AB88->var82 = g * 3;
- gUnknown_0203AB88->var84 = g;
- gUnknown_0203AB88->var86 = g;
+ gUnknown_0203AB88->var86 = gUnknown_0203AB88->var84 = g;
gUnknown_0203AB88->var88 = S16TOPOSFLOAT(angles[(rand & 1) + r5]);
gUnknown_0203AB88->var8C = S16TOPOSFLOAT(gUnknown_085B6348[gUnknown_0203AB88->var04_0].var18);
@@ -1424,260 +1421,6 @@ static void sub_8141344(u8 taskId)
gUnknown_0203AB88->varA0 = 36.0f;
gTasks[taskId].func = sub_814155C;
}
-#else
-static const u16 gUnknown_085B6422[4] = {0, 180, 90, 270};
-NAKED
-static void sub_8141344(u8 taskId)
-{
- asm_unified(" push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x8\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- movs r4, 0\n\
- ldr r1, =gUnknown_085B6422\n\
- mov r0, sp\n\
- movs r2, 0x8\n\
- bl memcpy\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r7, r0, 16\n\
- adds r0, r7, 0\n\
- movs r1, 0x64\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- ldr r3, =gUnknown_0203AB88\n\
- ldr r0, [r3]\n\
- ldr r2, =gTasks\n\
- mov r5, r10\n\
- lsls r1, r5, 2\n\
- add r1, r10\n\
- lsls r1, 3\n\
- adds r1, r2\n\
- ldrh r2, [r1, 0x14]\n\
- adds r0, 0x7C\n\
- strb r2, [r0]\n\
- ldr r0, [r3]\n\
- adds r2, r0, 0\n\
- adds r2, 0x7F\n\
- strb r4, [r2]\n\
- subs r2, 0x1\n\
- strb r4, [r2]\n\
- adds r0, 0x7D\n\
- strb r4, [r0]\n\
- ldrh r0, [r1, 0x18]\n\
- adds r1, r7, 0\n\
- bl sub_814118C\n\
- adds r4, r0, 0\n\
- lsls r4, 24\n\
- lsrs r1, r4, 24\n\
- adds r0, r7, 0\n\
- bl __modsi3\n\
- lsrs r4, 25\n\
- subs r0, r4\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- ldr r0, =gLocalTime\n\
- ldrb r0, [r0, 0x2]\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
- movs r5, 0x1\n\
- cmp r0, 0xC\n\
- bgt _081413C8\n\
- movs r5, 0\n\
-_081413C8:\n\
- cmp r6, 0x4F\n\
- bhi _081413E0\n\
- lsls r0, r5, 25\n\
- b _081413EA\n\
- .pool\n\
-_081413E0:\n\
- lsls r1, r5, 24\n\
- asrs r1, 24\n\
- movs r0, 0x1\n\
- subs r0, r1\n\
- lsls r0, 25\n\
-_081413EA:\n\
- lsrs r5, r0, 24\n\
- ldr r0, _08141530 @ =gUnknown_0203AB88\n\
- ldr r6, [r0]\n\
- ldrb r0, [r6, 0x4]\n\
- lsls r0, 30\n\
- lsrs r0, 25\n\
- ldr r1, _08141534 @ =gUnknown_085B6348\n\
- adds r0, r1\n\
- lsls r4, 24\n\
- asrs r4, 24\n\
- ldrh r0, [r0, 0x1A]\n\
- adds r4, r0\n\
- adds r0, r6, 0\n\
- adds r0, 0x80\n\
- strh r4, [r0]\n\
- lsls r4, 16\n\
- asrs r4, 16\n\
- adds r0, r4, 0\n\
- bl __floatsisf\n\
- cmp r4, 0\n\
- bge _0814141C\n\
- ldr r1, _08141538 @ =0x47800000\n\
- bl __addsf3\n\
-_0814141C:\n\
- ldr r1, _0814153C @ =0x40A00000\n\
- bl __divsf3\n\
- bl __fixunssfsi\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- lsls r0, r4, 1\n\
- adds r0, r4\n\
- movs r2, 0x82\n\
- adds r2, r6\n\
- mov r8, r2\n\
- strh r0, [r2]\n\
- adds r0, r6, 0\n\
- adds r0, 0x84\n\
- strh r4, [r0]\n\
- adds r0, 0x2\n\
- strh r4, [r0]\n\
- movs r0, 0x88\n\
- adds r0, r6\n\
- mov r9, r0\n\
- movs r0, 0x1\n\
- ands r0, r7\n\
- lsls r1, r5, 24\n\
- asrs r1, 24\n\
- adds r0, r1\n\
- lsls r0, 1\n\
- add r0, sp\n\
- movs r1, 0\n\
- ldrsh r4, [r0, r1]\n\
- adds r0, r4, 0\n\
- bl __floatsisf\n\
- cmp r4, 0\n\
- bge _08141468\n\
- ldr r1, _08141538 @ =0x47800000\n\
- bl __addsf3\n\
-_08141468:\n\
- mov r2, r9\n\
- str r0, [r2]\n\
- adds r7, r6, 0\n\
- adds r7, 0x8C\n\
- ldrb r0, [r6, 0x4]\n\
- lsls r0, 30\n\
- lsrs r0, 25\n\
- ldr r5, _08141534 @ =gUnknown_085B6348\n\
- adds r0, r5\n\
- movs r1, 0x18\n\
- ldrsh r4, [r0, r1]\n\
- adds r0, r4, 0\n\
- bl __floatsisf\n\
- adds r5, r0, 0\n\
- cmp r4, 0\n\
- bge _08141492\n\
- ldr r1, _08141538 @ =0x47800000\n\
- bl __addsf3\n\
- adds r5, r0, 0\n\
-_08141492:\n\
- str r5, [r7]\n\
- adds r7, r6, 0\n\
- adds r7, 0x90\n\
- ldr r1, _08141540 @ =0x3F000000\n\
- adds r0, r5, 0\n\
- bl __mulsf3\n\
- adds r1, r5, 0\n\
- bl __subsf3\n\
- adds r5, r0, 0\n\
- mov r2, r8\n\
- movs r0, 0\n\
- ldrsh r4, [r2, r0]\n\
- adds r0, r4, 0\n\
- bl __floatsisf\n\
- adds r2, r0, 0\n\
- cmp r4, 0\n\
- bge _081414C2\n\
- ldr r1, _08141538 @ =0x47800000\n\
- bl __addsf3\n\
- adds r2, r0, 0\n\
-_081414C2:\n\
- adds r0, r5, 0\n\
- adds r1, r2, 0\n\
- bl __divsf3\n\
- str r0, [r7]\n\
- adds r1, r6, 0\n\
- adds r1, 0x94\n\
- ldr r0, _08141544 @ =0x42880000\n\
- str r0, [r1]\n\
- adds r1, 0x8\n\
- ldr r0, _08141548 @ =0x00000000\n\
- str r0, [r1]\n\
- adds r5, r6, 0\n\
- adds r5, 0x98\n\
- mov r1, r8\n\
- movs r2, 0\n\
- ldrsh r4, [r1, r2]\n\
- adds r0, r4, 0\n\
- bl __floatsisf\n\
- adds r2, r0, 0\n\
- cmp r4, 0\n\
- bge _081414F8\n\
- ldr r1, _08141538 @ =0x47800000\n\
- bl __addsf3\n\
- adds r2, r0, 0\n\
-_081414F8:\n\
- ldr r0, _0814154C @ =0x41000000\n\
- adds r1, r2, 0\n\
- bl __divsf3\n\
- bl __negsf2\n\
- str r0, [r5]\n\
- adds r1, r6, 0\n\
- adds r1, 0xA0\n\
- ldr r0, _08141550 @ =0x42100000\n\
- str r0, [r1]\n\
- ldr r1, _08141554 @ =gTasks\n\
- mov r5, r10\n\
- lsls r0, r5, 2\n\
- add r0, r10\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- ldr r1, _08141558 @ =sub_814155C\n\
- str r1, [r0]\n\
- add sp, 0x8\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08141530:\n\
- .4byte gUnknown_0203AB88\n\
-_08141534:\n\
- .4byte gUnknown_085B6348\n\
-_08141538:\n\
- .4byte 0x47800000\n\
-_0814153C:\n\
- .4byte 0x40A00000\n\
-_08141540:\n\
- .4byte 0x3F000000\n\
-_08141544:\n\
- .4byte 0x42880000\n\
-_08141548:\n\
- .4byte 0x00000000\n\
-_0814154C:\n\
- .4byte 0x41000000\n\
-_08141550:\n\
- .4byte 0x42100000\n\
-_08141554:\n\
- .4byte gTasks\n\
-_08141558:\n\
- .4byte sub_814155C");
-}
-#endif // NONMATCHING
static void sub_814155C(u8 taskId)
{
@@ -4345,17 +4088,17 @@ static void sub_81448B8(struct Sprite *sprite)
gUnknown_0203AB88->var38 = sprite;
}
-#ifdef NONMATCHING
static void sub_8144A24(struct Sprite *sprite)
{
u8 z;
u16 o;
- u8 h = 0; // r10 (sp+0xc)
- u8 j = 5; // r9 (r9)
- u8 p = 0; // sp+0xc (sp+0x10)
- u8 i;
- u8 s[10] = {}; // sp+0 (sp+0)
- u16 t = Random(); // sp+0x10 (r10)
+ u8 h = 0;
+ u8 j = 5;
+ u8 p = 0;
+ u8 i = 0;
+ u8 val;
+ u8 s[10] = {};
+ u16 rand = Random();
gUnknown_0203AB88->var7D = 1;
gUnknown_0203AB88->var03_5 = TRUE;
@@ -4364,13 +4107,14 @@ static void sub_8144A24(struct Sprite *sprite)
gUnknown_0203AB88->var88 = sprite->data[3];
gUnknown_0203AB88->var98 = 0.0f;
gUnknown_0203AB88->var8C = gUnknown_085B6348[gUnknown_0203AB88->var04_0].var1C;
+
o = (gUnknown_0203AB88->var04_0 * 30 + 33) + (0x1 - gUnknown_0203AB88->var03_0) * 15;
for (i = 0; i < 4; i++)
{
if (o < sprite->data[3] && sprite->data[3] <= o + 90)
{
sprite->data[0] = i / 2;
- gUnknown_0203AB88->var03_0 = i & 1;
+ gUnknown_0203AB88->var03_0 = i % 2;
break;
}
if (i == 3)
@@ -4381,354 +4125,52 @@ static void sub_8144A24(struct Sprite *sprite)
}
o += 90;
}
+
if (gUnknown_0203AB88->var03_0)
{
if (sprite->data[0])
- {
PlayCry1(SPECIES_TAILLOW, -63);
- }
else
- {
PlayCry1(SPECIES_TAILLOW, 63);
- }
}
else
{
PlayCry1(SPECIES_SHROOMISH, -63);
}
- i = 2;
+
+ val = 2;
z = (gUnknown_0203AB88->var7F + 2) % 12;
+
if (gUnknown_0203AB88->var03_0 == 1 && gUnknown_0203AB88->var04_0 == 1)
j += 6;
else
- j += i;
- for (; i < j; i++)
+ j += val;
+
+ for (i = val; i < j; i++)
{
if (!(gUnknown_0203AB88->var08 & gUnknown_085B62E4[z].var04))
{
s[h++] = i;
- if (!p && (gUnknown_085B62E4[z].var04 & gUnknown_085B6154[gUnknown_0203AB88->var1B[gUnknown_0203AB88->var1A_0]].var00))
- {
+ if (p == 0 && (gUnknown_085B62E4[z].var04 & gUnknown_085B6154[gUnknown_0203AB88->var1B[gUnknown_0203AB88->var1A_0]].var0C))
p = i;
- }
}
z = (z + 1) % 0xC;
}
+
if ((gUnknown_0203AB88->var03_0 + 1) & gUnknown_0203AB88->var02)
{
- if (p && (t & 0xFF) < 0xc0)
- {
+ if (p && (rand & 0xFF) < 0xc0)
sprite->data[7] = p;
- }
else
- {
- sprite->data[7] = s[t % h];
- }
+ sprite->data[7] = s[rand % h];
}
else
{
- sprite->data[7] = s[t % h];
+ sprite->data[7] = s[rand % h];
}
+
sprite->callback = sub_8144168;
}
-#else
-NAKED
-static void sub_8144A24(struct Sprite *sprite)
-{
- asm_unified("push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x14\n\
- adds r7, r0, 0\n\
- movs r0, 0\n\
- mov r9, r0\n\
- movs r1, 0x5\n\
- mov r8, r1\n\
- str r0, [sp, 0xC]\n\
- mov r0, sp\n\
- movs r1, 0\n\
- movs r2, 0xA\n\
- bl memset\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x10]\n\
- ldr r3, _08144B10 @ =gUnknown_0203AB88\n\
- ldr r0, [r3]\n\
- adds r0, 0x7D\n\
- movs r5, 0x1\n\
- strb r5, [r0]\n\
- ldr r2, [r3]\n\
- ldrb r0, [r2, 0x3]\n\
- movs r1, 0x20\n\
- orrs r0, r1\n\
- strb r0, [r2, 0x3]\n\
- ldr r2, [r3]\n\
- ldrb r1, [r2, 0x3]\n\
- movs r0, 0x41\n\
- negs r0, r0\n\
- ands r0, r1\n\
- strb r0, [r2, 0x3]\n\
- ldr r0, [r3]\n\
- adds r0, 0x7E\n\
- movs r1, 0xFF\n\
- strb r1, [r0]\n\
- ldr r6, [r3]\n\
- adds r4, r6, 0\n\
- adds r4, 0x88\n\
- movs r1, 0x34\n\
- ldrsh r0, [r7, r1]\n\
- bl __floatsisf\n\
- str r0, [r4]\n\
- adds r1, r6, 0\n\
- adds r1, 0x98\n\
- ldr r0, _08144B14 @ =0x00000000\n\
- str r0, [r1]\n\
- adds r2, r6, 0\n\
- adds r2, 0x8C\n\
- ldr r1, _08144B18 @ =gUnknown_085B6348\n\
- ldrb r0, [r6, 0x4]\n\
- lsls r0, 30\n\
- lsrs r0, 25\n\
- adds r1, 0x1C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- str r0, [r2]\n\
- ldrb r0, [r6, 0x4]\n\
- lsls r0, 30\n\
- lsrs r0, 30\n\
- lsls r1, r0, 4\n\
- subs r1, r0\n\
- lsls r1, 1\n\
- adds r1, 0x21\n\
- ldrb r0, [r6, 0x3]\n\
- lsls r0, 27\n\
- lsrs r0, 27\n\
- subs r5, r0\n\
- lsls r0, r5, 4\n\
- subs r0, r5\n\
- adds r1, r0\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- mov r5, r9\n\
- movs r0, 0x34\n\
- ldrsh r2, [r7, r0]\n\
-_08144ACA:\n\
- cmp r1, r2\n\
- bge _08144AD6\n\
- adds r0, r1, 0\n\
- adds r0, 0x5A\n\
- cmp r2, r0\n\
- ble _08144B38\n\
-_08144AD6:\n\
- cmp r5, 0x3\n\
- beq _08144B1C\n\
- adds r0, r1, 0\n\
- adds r0, 0x5A\n\
- lsls r0, 16\n\
- lsrs r1, r0, 16\n\
- adds r0, r5, 0x1\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- cmp r5, 0x3\n\
- bls _08144ACA\n\
-_08144AEC:\n\
- ldr r0, _08144B10 @ =gUnknown_0203AB88\n\
- ldr r0, [r0]\n\
- ldrb r1, [r0, 0x3]\n\
- movs r0, 0x1F\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08144B64\n\
- movs r1, 0x2E\n\
- ldrsh r0, [r7, r1]\n\
- cmp r0, 0\n\
- beq _08144B58\n\
- movs r0, 0x98\n\
- lsls r0, 1\n\
- movs r1, 0x3F\n\
- negs r1, r1\n\
- bl PlayCry1\n\
- b _08144B70\n\
- .align 2, 0\n\
-_08144B10:\n\
- .4byte gUnknown_0203AB88\n\
-_08144B14:\n\
- .4byte 0x00000000\n\
-_08144B18:\n\
- .4byte gUnknown_085B6348\n\
-_08144B1C:\n\
- movs r0, 0x1\n\
- strh r0, [r7, 0x2E]\n\
- ldr r0, =gUnknown_0203AB88\n\
- ldr r2, [r0]\n\
- ldrb r1, [r2, 0x3]\n\
- movs r0, 0x20\n\
- negs r0, r0\n\
- ands r0, r1\n\
- movs r1, 0x1\n\
- orrs r0, r1\n\
- strb r0, [r2, 0x3]\n\
- b _08144AEC\n\
- .pool\n\
-_08144B38:\n\
- lsrs r0, r5, 1\n\
- strh r0, [r7, 0x2E]\n\
- ldr r0, =gUnknown_0203AB88\n\
- ldr r3, [r0]\n\
- movs r1, 0x1\n\
- ands r1, r5\n\
- ldrb r2, [r3, 0x3]\n\
- movs r0, 0x20\n\
- negs r0, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r3, 0x3]\n\
- b _08144AEC\n\
- .pool\n\
-_08144B58:\n\
- movs r0, 0x98\n\
- lsls r0, 1\n\
- movs r1, 0x3F\n\
- bl PlayCry1\n\
- b _08144B70\n\
-_08144B64:\n\
- movs r0, 0x99\n\
- lsls r0, 1\n\
- movs r1, 0x3F\n\
- negs r1, r1\n\
- bl PlayCry1\n\
-_08144B70:\n\
- movs r0, 0x2\n\
- mov r10, r0\n\
- ldr r4, =gUnknown_0203AB88\n\
- ldr r5, [r4]\n\
- adds r0, r5, 0\n\
- adds r0, 0x7F\n\
- ldrb r0, [r0]\n\
- adds r0, 0x2\n\
- movs r1, 0xC\n\
- bl __modsi3\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- ldrb r1, [r5, 0x3]\n\
- movs r0, 0x1F\n\
- ands r0, r1\n\
- cmp r0, 0x1\n\
- bne _08144BA8\n\
- ldrb r1, [r5, 0x4]\n\
- movs r0, 0x3\n\
- ands r0, r1\n\
- cmp r0, 0x1\n\
- bne _08144BA8\n\
- mov r0, r8\n\
- adds r0, 0x6\n\
- b _08144BAC\n\
- .pool\n\
-_08144BA8:\n\
- mov r0, r8\n\
- add r0, r10\n\
-_08144BAC:\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r8, r0\n\
- mov r5, r10\n\
- cmp r5, r8\n\
- bcs _08144C18\n\
- ldr r1, =gUnknown_085B6154+0xC\n\
- mov r10, r1\n\
-_08144BBC:\n\
- ldr r3, [r4]\n\
- lsls r0, r6, 3\n\
- ldr r1, =gUnknown_085B62E4+0x4\n\
- adds r0, r1\n\
- ldr r1, [r3, 0x8]\n\
- ldr r2, [r0]\n\
- ands r1, r2\n\
- cmp r1, 0\n\
- bne _08144C02\n\
- mov r0, r9\n\
- adds r1, r0, 0x1\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- mov r9, r1\n\
- add r0, sp\n\
- strb r5, [r0]\n\
- ldr r0, [sp, 0xC]\n\
- cmp r0, 0\n\
- bne _08144C02\n\
- ldrb r1, [r3, 0x1A]\n\
- lsls r1, 28\n\
- lsrs r1, 28\n\
- adds r0, r3, 0\n\
- adds r0, 0x1B\n\
- adds r0, r1\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- add r0, r10\n\
- ldr r0, [r0]\n\
- ands r2, r0\n\
- cmp r2, 0\n\
- beq _08144C02\n\
- str r5, [sp, 0xC]\n\
-_08144C02:\n\
- adds r0, r6, 0x1\n\
- movs r1, 0xC\n\
- bl __modsi3\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- adds r0, r5, 0x1\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- cmp r5, r8\n\
- bcc _08144BBC\n\
-_08144C18:\n\
- ldr r0, [r4]\n\
- ldrb r1, [r0, 0x3]\n\
- lsls r1, 27\n\
- lsrs r1, 27\n\
- adds r1, 0x1\n\
- ldrb r0, [r0, 0x2]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- beq _08144C48\n\
- ldr r1, [sp, 0xC]\n\
- cmp r1, 0\n\
- beq _08144C48\n\
- movs r0, 0xFF\n\
- ldr r1, [sp, 0x10]\n\
- ands r0, r1\n\
- cmp r0, 0xBF\n\
- bhi _08144C48\n\
- mov r0, sp\n\
- ldrh r0, [r0, 0xC]\n\
- b _08144C54\n\
- .pool\n\
-_08144C48:\n\
- ldr r0, [sp, 0x10]\n\
- mov r1, r9\n\
- bl __modsi3\n\
- add r0, sp\n\
- ldrb r0, [r0]\n\
-_08144C54:\n\
- strh r0, [r7, 0x3C]\n\
- ldr r1, =sub_8144168\n\
- str r1, [r7, 0x1C]\n\
- add sp, 0x14\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool");
-}
-#endif // NONMATCHING
static const u16 gUnknown_085B7B1A[] = {
0x907,
@@ -4955,7 +4397,7 @@ static void sub_81450D8(struct Sprite *sprite)
static void sub_8145218(struct Sprite *sprite)
{
s8 t[2] = {-1, 1};
-
+
if (sprite->data[1]-- >= 0)
{
sprite->pos1.x += t[gUnknown_0203AB88->var38->data[0]] * 2;
diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c
index 415907585..6d45370b8 100644
--- a/src/save_failed_screen.c
+++ b/src/save_failed_screen.c
@@ -321,7 +321,7 @@ static void CB2_FadeAndReturnToTitleScreen(void)
if (gMain.newKeys & A_BUTTON)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
SetVBlankCallback(VBlankCB);
SetMainCallback2(CB2_ReturnToTitleScreen);
}
diff --git a/src/scanline_effect.c b/src/scanline_effect.c
index a9ae9427b..0a4b0b8fd 100644
--- a/src/scanline_effect.c
+++ b/src/scanline_effect.c
@@ -1,6 +1,6 @@
#include "global.h"
#include "battle.h"
-#include "data2.h"
+#include "data.h"
#include "task.h"
#include "trig.h"
#include "scanline_effect.h"
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 125a57c01..8d597b887 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -7,7 +7,7 @@
#include "contest.h"
#include "contest_link_80F57C4.h"
#include "contest_painting.h"
-#include "data2.h"
+#include "data.h"
#include "decoration.h"
#include "decoration_inventory.h"
#include "event_data.h"
@@ -1068,7 +1068,7 @@ bool8 ScrCmd_addobject(struct ScriptContext *ctx)
{
u16 objectId = VarGet(ScriptReadHalfword(ctx));
- show_sprite(objectId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ TrySpawnEventObject(objectId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
return FALSE;
}
@@ -1078,7 +1078,7 @@ bool8 ScrCmd_addobject_at(struct ScriptContext *ctx)
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
- show_sprite(objectId, mapNum, mapGroup);
+ TrySpawnEventObject(objectId, mapNum, mapGroup);
return FALSE;
}
@@ -1088,7 +1088,7 @@ bool8 ScrCmd_setobjectxy(struct ScriptContext *ctx)
u16 x = VarGet(ScriptReadHalfword(ctx));
u16 y = VarGet(ScriptReadHalfword(ctx));
- sub_808EBA8(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, x, y);
+ TryMoveEventObjectToMapCoords(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, x, y);
return FALSE;
}
@@ -1106,7 +1106,7 @@ bool8 ScrCmd_moveobjectoffscreen(struct ScriptContext *ctx)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
- sub_808F254(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ TryOverrideEventObjectTemplateCoords(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
return FALSE;
}
diff --git a/src/script_pokemon_util_80F87D8.c b/src/script_pokemon_util_80F87D8.c
index ece030395..2c7a9c775 100755
--- a/src/script_pokemon_util_80F87D8.c
+++ b/src/script_pokemon_util_80F87D8.c
@@ -5,6 +5,7 @@
#include "contest.h"
#include "contest_link_80F57C4.h"
#include "contest_painting.h"
+#include "data.h"
#include "daycare.h"
#include "decompress.h"
#include "event_data.h"
@@ -35,7 +36,6 @@ extern const u16 gEventObjectPalette8[];
extern const u16 gEventObjectPalette17[];
extern const u16 gEventObjectPalette33[];
extern const u16 gEventObjectPalette34[];
-extern const struct CompressedSpriteSheet gMonFrontPicTable[];
static const u8 gUnknown_0858D8EC[] = { 3, 4, 5, 14 };
@@ -227,7 +227,7 @@ void sub_80F8AFC(void)
{
int i;
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
for (i = 0; i < gNumLinkContestPlayers; i++)
{
@@ -256,7 +256,7 @@ void sub_80F8B94(void)
struct Sprite *sprite;
gReservedSpritePaletteCount = 12;
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
for (i = 0; i < gNumLinkContestPlayers; i++)
{
@@ -339,9 +339,9 @@ void ShowContestEntryMonPic(void)
gMultiuseSpriteTemplate.paletteTag = palette->tag;
spriteId = CreateSprite(&gMultiuseSpriteTemplate, (left + 1) * 8 + 32, (top * 8) + 40, 0);
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
- if (!(gIsLinkContest & 4))
+ if (!(gLinkContestFlags & LINK_CONTEST_FLAG_HAS_RS_PLAYER))
DoMonFrontSpriteAnimation(&gSprites[spriteId], species, FALSE, 0);
}
else
@@ -403,7 +403,7 @@ static void sub_80F8EE8(u8 taskId)
void ScriptGetMultiplayerId(void)
{
- if ((gIsLinkContest & 1) && gNumLinkContestPlayers == 4 && !(gIsLinkContest & 2))
+ if ((gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK) && gNumLinkContestPlayers == 4 && !(gLinkContestFlags & LINK_CONTEST_FLAG_IS_WIRELESS))
gSpecialVar_Result = GetMultiplayerId();
else
gSpecialVar_Result = 4;
@@ -414,7 +414,7 @@ void ScriptRandom(void)
u16 random;
u16 *scriptPtr;
- if (gIsLinkContest & 1)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
gContestRngValue = 1103515245 * gContestRngValue + 24691;
random = gContestRngValue >> 16;
@@ -436,7 +436,7 @@ u16 sub_80F903C(void)
u8 sub_80F905C(void)
{
- if (gIsLinkContest & 2)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_WIRELESS)
{
CreateTask(sub_80F9088, 5);
return 1;
@@ -473,11 +473,11 @@ static void sub_80F9088(u8 taskId)
void sub_80F90DC(void)
{
- if (gIsLinkContest & 2)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_WIRELESS)
{
if (gReceivedRemoteLinkPlayers)
{
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(8, 8);
}
}
@@ -485,7 +485,7 @@ void sub_80F90DC(void)
void sub_80F910C(void)
{
- if (gIsLinkContest & 2)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_WIRELESS)
{
if (gReceivedRemoteLinkPlayers)
DestroyWirelessStatusIndicatorSprite();
@@ -494,7 +494,7 @@ void sub_80F910C(void)
u8 sub_80F9134(void)
{
- if (gIsLinkContest & 4)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_HAS_RS_PLAYER)
return 1;
else
return 0;
@@ -502,12 +502,12 @@ u8 sub_80F9134(void)
void sub_80F9154(void)
{
- gIsLinkContest = 0;
+ gLinkContestFlags = 0;
}
u8 sub_80F9160(void)
{
- if (gIsLinkContest & 2)
+ if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_WIRELESS)
return 1;
else
return 0;
diff --git a/src/secret_base.c b/src/secret_base.c
index e19aecba3..ac35a090a 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -35,322 +35,351 @@
#include "window.h"
#include "constants/bg_event_constants.h"
#include "constants/decorations.h"
+#include "constants/event_objects.h"
+#include "constants/items.h"
#include "constants/maps.h"
#include "constants/map_types.h"
#include "constants/metatile_behaviors.h"
+#include "constants/moves.h"
#include "constants/secret_bases.h"
#include "constants/songs.h"
#include "constants/species.h"
#include "constants/trainers.h"
-// Static type declarations
-
-struct SecretBaseListMenuBuffer {
+struct SecretBaseRegistryMenu
+{
struct ListMenuItem items[11];
u8 names[11][32];
};
-struct SecretBaseRecordMixer {
- struct SecretBaseRecord *records;
+struct SecretBaseRecordMixer
+{
+ struct SecretBase *secretBases;
u32 version;
u32 language;
};
-// Static RAM declarations
-EWRAM_DATA u8 sCurSecretBaseId = 0;
-EWRAM_DATA bool8 gInFriendSecretBase = FALSE;
-EWRAM_DATA struct SecretBaseListMenuBuffer *gUnknown_0203A020 = NULL;
-
-// Static ROM declarations
-
-void sub_80E9C9C(u8 taskId);
-void game_continue(u8 taskId);
-void sub_80E9DEC(s32 a0, bool8 flag, struct ListMenu *menu);
-void sub_80E9E00(u8 taskId);
-void sub_80E9E44(u8 taskId);
-void sub_80E9E90(u8 taskId);
-void sub_80E9F20(u8 taskId);
-void sub_80E9FB0(u8 taskId);
-void sub_80E9FFC(u8 taskId);
-void sub_80EA06C(u8 taskId);
-void sub_80EA120(u8 taskId);
-void sub_80EA13C(u8 taskId);
-void sub_80EA18C(u8 taskId);
-void task_pc_turn_off(u8 taskId);
-u8 sub_80EA20C(u8 secretBaseRecordId);
-
-// .rodata
-
-const struct {
- u16 tile1;
- u16 tile2;
-} gUnknown_0858CFCC[] = {
- {0x0026, 0x0036},
- {0x0027, 0x0037},
- {0x01a0, 0x01a1},
- {0x01a8, 0x01a9},
- {0x01b0, 0x01b1},
- {0x0208, 0x0210},
- {0x0271, 0x0278}
+struct SecretBaseEntranceMetatiles
+{
+ u16 closedMetatileId;
+ u16 openMetatileId;
};
-const u8 gUnknown_0858CFE8[] = {
- MAP_NUM(SECRET_BASE_RED_CAVE1), 0x00, 0x01, 0x03,
- MAP_NUM(SECRET_BASE_RED_CAVE2), 0x00, 0x05, 0x09,
- MAP_NUM(SECRET_BASE_RED_CAVE3), 0x00, 0x01, 0x03,
- MAP_NUM(SECRET_BASE_RED_CAVE4), 0x00, 0x07, 0x0d,
- MAP_NUM(SECRET_BASE_BROWN_CAVE1), 0x00, 0x02, 0x03,
- MAP_NUM(SECRET_BASE_BROWN_CAVE2), 0x00, 0x09, 0x02,
- MAP_NUM(SECRET_BASE_BROWN_CAVE3), 0x00, 0x0d, 0x04,
- MAP_NUM(SECRET_BASE_BROWN_CAVE4), 0x00, 0x01, 0x02,
- MAP_NUM(SECRET_BASE_BLUE_CAVE1), 0x00, 0x01, 0x03,
- MAP_NUM(SECRET_BASE_BLUE_CAVE2), 0x00, 0x01, 0x02,
- MAP_NUM(SECRET_BASE_BLUE_CAVE3), 0x00, 0x03, 0x0f,
- MAP_NUM(SECRET_BASE_BLUE_CAVE4), 0x00, 0x03, 0x0e,
- MAP_NUM(SECRET_BASE_YELLOW_CAVE1), 0x00, 0x09, 0x03,
- MAP_NUM(SECRET_BASE_YELLOW_CAVE2), 0x00, 0x08, 0x07,
- MAP_NUM(SECRET_BASE_YELLOW_CAVE3), 0x00, 0x03, 0x06,
- MAP_NUM(SECRET_BASE_YELLOW_CAVE4), 0x00, 0x05, 0x09,
- MAP_NUM(SECRET_BASE_TREE1), 0x00, 0x02, 0x03,
- MAP_NUM(SECRET_BASE_TREE2), 0x00, 0x05, 0x06,
- MAP_NUM(SECRET_BASE_TREE3), 0x00, 0x0f, 0x03,
- MAP_NUM(SECRET_BASE_TREE4), 0x00, 0x04, 0x0a,
- MAP_NUM(SECRET_BASE_SHRUB1), 0x00, 0x03, 0x03,
- MAP_NUM(SECRET_BASE_SHRUB2), 0x00, 0x01, 0x02,
- MAP_NUM(SECRET_BASE_SHRUB3), 0x00, 0x07, 0x08,
- MAP_NUM(SECRET_BASE_SHRUB4), 0x00, 0x09, 0x06
+static EWRAM_DATA u8 sCurSecretBaseId = 0;
+static EWRAM_DATA bool8 sInFriendSecretBase = FALSE;
+static EWRAM_DATA struct SecretBaseRegistryMenu *sRegistryMenu = NULL;
+
+static void Task_ShowSecretBaseRegistryMenu(u8 taskId);
+static void BuildRegistryMenuItems(u8 taskId);
+static void RegistryMenu_OnCursorMove(int unused, bool8 flag, struct ListMenu *menu);
+static void FinalizeRegistryMenu(u8 taskId);
+static void AddRegistryMenuScrollArrows(u8 taskId);
+static void HandleRegistryMenuInput(u8 taskId);
+static void ShowRegistryMenuActions(u8 taskId);
+static void HandleRegistryMenuActionsInput(u8 taskId);
+static void ShowRegistryMenuDeleteConfirmation(u8 taskId);
+static void ShowRegistryMenuDeleteYesNo(u8 taskId);
+static void DeleteRegistry_Yes(u8 taskId);
+static void DeleteRegistry_No(u8 taskId);
+static void ReturnToMainRegistryMenu(u8 taskId);
+static void GoToSecretBasePCMainMenu(u8 taskId);
+static u8 GetSecretBaseOwnerType(u8 secretBaseId);
+
+static const struct SecretBaseEntranceMetatiles sSecretBaseEntranceMetatiles[] =
+{
+ {.closedMetatileId = 0x0026, .openMetatileId = 0x0036},
+ {.closedMetatileId = 0x0027, .openMetatileId = 0x0037},
+ {.closedMetatileId = 0x01a0, .openMetatileId = 0x01a1},
+ {.closedMetatileId = 0x01a8, .openMetatileId = 0x01a9},
+ {.closedMetatileId = 0x01b0, .openMetatileId = 0x01b1},
+ {.closedMetatileId = 0x0208, .openMetatileId = 0x0210},
+ {.closedMetatileId = 0x0271, .openMetatileId = 0x0278},
};
-const struct MenuAction gUnknown_0858D048[] = {
- {gUnknown_085EA79D, {.void_u8 = sub_80E9FFC}},
- {gText_Cancel, {.void_u8 = sub_80EA18C}}
+// mapNum, warpId, x, y
+// x, y positions are for when the player warps in for the first time (in front of the computer)
+static const u8 sSecretBaseEntrancePositions[] =
+{
+ MAP_NUM(SECRET_BASE_RED_CAVE1), 0, 1, 3,
+ MAP_NUM(SECRET_BASE_RED_CAVE2), 0, 5, 9,
+ MAP_NUM(SECRET_BASE_RED_CAVE3), 0, 1, 3,
+ MAP_NUM(SECRET_BASE_RED_CAVE4), 0, 7, 13,
+ MAP_NUM(SECRET_BASE_BROWN_CAVE1), 0, 2, 3,
+ MAP_NUM(SECRET_BASE_BROWN_CAVE2), 0, 9, 2,
+ MAP_NUM(SECRET_BASE_BROWN_CAVE3), 0, 13, 4,
+ MAP_NUM(SECRET_BASE_BROWN_CAVE4), 0, 1, 2,
+ MAP_NUM(SECRET_BASE_BLUE_CAVE1), 0, 1, 3,
+ MAP_NUM(SECRET_BASE_BLUE_CAVE2), 0, 1, 2,
+ MAP_NUM(SECRET_BASE_BLUE_CAVE3), 0, 3, 15,
+ MAP_NUM(SECRET_BASE_BLUE_CAVE4), 0, 3, 14,
+ MAP_NUM(SECRET_BASE_YELLOW_CAVE1), 0, 9, 3,
+ MAP_NUM(SECRET_BASE_YELLOW_CAVE2), 0, 8, 7,
+ MAP_NUM(SECRET_BASE_YELLOW_CAVE3), 0, 3, 6,
+ MAP_NUM(SECRET_BASE_YELLOW_CAVE4), 0, 5, 9,
+ MAP_NUM(SECRET_BASE_TREE1), 0, 2, 3,
+ MAP_NUM(SECRET_BASE_TREE2), 0, 5, 6,
+ MAP_NUM(SECRET_BASE_TREE3), 0, 15, 3,
+ MAP_NUM(SECRET_BASE_TREE4), 0, 4, 10,
+ MAP_NUM(SECRET_BASE_SHRUB1), 0, 3, 3,
+ MAP_NUM(SECRET_BASE_SHRUB2), 0, 1, 2,
+ MAP_NUM(SECRET_BASE_SHRUB3), 0, 7, 8,
+ MAP_NUM(SECRET_BASE_SHRUB4), 0, 9, 6,
};
-const struct YesNoFuncTable gUnknown_0858D058 = {
- sub_80EA120, sub_80EA13C
+static const struct MenuAction sRegistryMenuActions[] =
+{
+ {
+ .text = gText_DelRegist,
+ .func = { .void_u8 = ShowRegistryMenuDeleteConfirmation },
+ },
+ {
+ .text = gText_Cancel,
+ .func = { .void_u8 = ReturnToMainRegistryMenu },
+ },
};
-const u8 gUnknown_0858D060[10] = {
- 0x23, 0x24, 0x0f, 0x1f, 0x21,
- 0x2f, 0x0e, 0x14, 0x20, 0x22
+static const struct YesNoFuncTable sDeleteRegistryYesNoFuncs =
+{
+ .yesFunc = DeleteRegistry_Yes,
+ .noFunc = DeleteRegistry_No,
};
-const struct WindowTemplate gUnknown_0858D06C[] = {
- { 0, 18, 1, 11, 18, 15, 0x01 },
- { 0, 2, 1, 28, 4, 15, 0xc7 }
+static const u8 sSecretBaseOwnerGfxIds[10] =
+{
+ // Male
+ EVENT_OBJ_GFX_YOUNGSTER,
+ EVENT_OBJ_GFX_BUG_CATCHER,
+ EVENT_OBJ_GFX_RICH_BOY,
+ EVENT_OBJ_GFX_CAMPER,
+ EVENT_OBJ_GFX_MAN_3,
+ // Female
+ EVENT_OBJ_GFX_LASS,
+ EVENT_OBJ_GFX_GIRL_3,
+ EVENT_OBJ_GFX_WOMAN_2,
+ EVENT_OBJ_GFX_PICNICKER,
+ EVENT_OBJ_GFX_WOMAN_5,
};
-const struct ListMenuTemplate gUnknown_0858D07C = {
- NULL,
- sub_80E9DEC,
- NULL,
- 0, 0,
- 0, 0, 8, 0,
- 9, 2, 1, 3, FALSE, 0, FALSE, 1
+static const struct WindowTemplate sRegistryWindowTemplates[] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 18,
+ .tilemapTop = 1,
+ .width = 11,
+ .height = 18,
+ .paletteNum = 15,
+ .baseBlock = 0x01,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 1,
+ .width = 28,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0xc7,
+ }
};
-// .text
+static const struct ListMenuTemplate sRegistryListMenuTemplate =
+{
+ .items = NULL,
+ .moveCursorFunc = RegistryMenu_OnCursorMove,
+ .itemPrintFunc = NULL,
+ .totalItems = 0,
+ .maxShowed = 0,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 9,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 0,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
+ .fontId = 1,
+ .cursorKind = 0,
+};
-void ClearSecretBase(struct SecretBaseRecord *sbr)
+static void ClearSecretBase(struct SecretBase *secretBase)
{
u16 i;
-
- CpuFastFill16(0, sbr, sizeof(struct SecretBaseRecord));
- for (i = 0; i < 7; i ++)
- {
- sbr->trainerName[i] = EOS;
- }
+ CpuFastFill16(0, secretBase, sizeof(struct SecretBase));
+ for (i = 0; i < PLAYER_NAME_LENGTH; i++)
+ secretBase->trainerName[i] = EOS;
}
-void ResetSecretBases(void)
+void ClearSecretBases(void)
{
u16 i;
-
- for (i = 0; i < SECRET_BASES_COUNT; i ++)
- {
+ for (i = 0; i < SECRET_BASES_COUNT; i++)
ClearSecretBase(&gSaveBlock1Ptr->secretBases[i]);
- }
}
-void sub_80E8B58(void)
+static void SetCurSecretBaseId(void)
{
sCurSecretBaseId = gSpecialVar_0x8004;
}
-void sub_80E8B6C(void)
+void TrySetCurSecretBaseIndex(void)
{
u16 i;
gSpecialVar_Result = FALSE;
- for (i = 0; i < SECRET_BASES_COUNT; i ++)
+ for (i = 0; i < SECRET_BASES_COUNT; i++)
{
- if (sCurSecretBaseId != gSaveBlock1Ptr->secretBases[i].secretBaseId)
+ if (sCurSecretBaseId == gSaveBlock1Ptr->secretBases[i].secretBaseId)
{
- continue;
+ gSpecialVar_Result = TRUE;
+ VarSet(VAR_CURRENT_SECRET_BASE, i);
+ break;
}
- gSpecialVar_Result = TRUE;
- VarSet(VAR_CURRENT_SECRET_BASE, i);
- break;
}
}
-void sub_80E8BC8(void)
+void CheckPlayerHasSecretBase(void)
{
- if (gSaveBlock1Ptr->secretBases[0].secretBaseId != 0)
- {
+ // The player's secret base is always the first in the array.
+ if (gSaveBlock1Ptr->secretBases[0].secretBaseId)
gSpecialVar_Result = TRUE;
- }
else
- {
gSpecialVar_Result = FALSE;
- }
}
-u8 sub_80E8BF8(void)
+static u8 GetSecretBaseTypeInFrontOfPlayer_(void)
{
- s16 x;
- s16 y;
+ s16 x, y;
s16 behavior;
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
behavior = MapGridGetMetatileBehaviorAt(x, y) & 0xFFF;
if (behavior == MB_SECRET_BASE_SPOT_RED_CAVE || behavior == MB_SECRET_BASE_SPOT_RED_CAVE_OPEN)
- {
return SECRET_BASE_RED_CAVE;
- }
+
if (behavior == MB_SECRET_BASE_SPOT_BROWN_CAVE || behavior == MB_SECRET_BASE_SPOT_BROWN_CAVE_OPEN)
- {
return SECRET_BASE_BROWN_CAVE;
- }
+
if (behavior == MB_SECRET_BASE_SPOT_BLUE_CAVE || behavior == MB_SECRET_BASE_SPOT_BLUE_CAVE_OPEN)
- {
return SECRET_BASE_BLUE_CAVE;
- }
+
if (behavior == MB_SECRET_BASE_SPOT_YELLOW_CAVE || behavior == MB_SECRET_BASE_SPOT_YELLOW_CAVE_OPEN)
- {
return SECRET_BASE_YELLOW_CAVE;
- }
- if (behavior == MB_SECRET_BASE_SPOT_TREE_LEFT || behavior == MB_SECRET_BASE_SPOT_TREE_LEFT_OPEN || behavior == MB_SECRET_BASE_SPOT_TREE_RIGHT || behavior == MB_SECRET_BASE_SPOT_TREE_RIGHT_OPEN)
- {
+
+ if (behavior == MB_SECRET_BASE_SPOT_TREE_LEFT || behavior == MB_SECRET_BASE_SPOT_TREE_LEFT_OPEN
+ || behavior == MB_SECRET_BASE_SPOT_TREE_RIGHT || behavior == MB_SECRET_BASE_SPOT_TREE_RIGHT_OPEN)
return SECRET_BASE_TREE;
- }
+
if (behavior == MB_SECRET_BASE_SPOT_SHRUB || behavior == MB_SECRET_BASE_SPOT_SHRUB_OPEN)
- {
return SECRET_BASE_SHRUB;
- }
+
return 0;
}
-void sub_80E8C98(void)
+void GetSecretBaseTypeInFrontOfPlayer(void)
{
- gSpecialVar_0x8007 = sub_80E8BF8();
+ gSpecialVar_0x8007 = GetSecretBaseTypeInFrontOfPlayer_();
}
-void sub_80E8CB0(s16 *xPtr, s16 *yPtr, u16 tile)
+static void FindMetatileIdMapCoords(s16 *x, s16 *y, u16 metatileId)
{
- const struct MapLayout *mapLayout;
- s16 x;
- s16 y;
+ s16 i, j;
+ const struct MapLayout *mapLayout = gMapHeader.mapLayout;
- mapLayout = gMapHeader.mapLayout;
- for (y = 0; y < mapLayout->height; y ++)
+ for (j = 0; j < mapLayout->height; j++)
{
- for (x = 0; x < mapLayout->width; x ++)
+ for (i = 0; i < mapLayout->width; i++)
{
- if ((mapLayout->map[y * mapLayout->width + x] & METATILE_ID_MASK) == tile)
+ if ((mapLayout->map[j * mapLayout->width + i] & METATILE_ID_MASK) == metatileId)
{
- *xPtr = x;
- *yPtr = y;
+ *x = i;
+ *y = j;
return;
}
}
}
}
-void sub_80E8D4C(void)
+// Opens or closes the secret base entrance metatile in front of the player.
+void ToggleSecretBaseEntranceMetatile(void)
{
- s16 x;
- s16 y;
- s16 tile;
u16 i;
+ s16 x, y;
+ s16 metatileId;
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
- tile = MapGridGetMetatileIdAt(x, y);
- for (i = 0; i < 7; i ++)
+ metatileId = MapGridGetMetatileIdAt(x, y);
+ for (i = 0; i < ARRAY_COUNT(sSecretBaseEntranceMetatiles); i++)
{
- if (gUnknown_0858CFCC[i].tile1 == tile)
+ if (sSecretBaseEntranceMetatiles[i].closedMetatileId == metatileId)
{
- MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile2 | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(x, y, sSecretBaseEntranceMetatiles[i].openMetatileId | METATILE_COLLISION_MASK);
CurrentMapDrawMetatileAt(x, y);
return;
}
}
- for (i = 0; i < 7; i ++)
+
+ for (i = 0; i < ARRAY_COUNT(sSecretBaseEntranceMetatiles); i++)
{
- if (gUnknown_0858CFCC[i].tile2 == tile)
+ if (sSecretBaseEntranceMetatiles[i].openMetatileId == metatileId)
{
- MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile1 | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(x, y, sSecretBaseEntranceMetatiles[i].closedMetatileId | METATILE_COLLISION_MASK);
CurrentMapDrawMetatileAt(x, y);
return;
}
}
}
-u8 sub_80E8DF4(const u8 *src)
+static u8 GetNameLength(const u8 *secretBaseOwnerName)
{
u8 i;
-
- for (i = 0; i < 7; i ++)
+ for (i = 0; i < PLAYER_NAME_LENGTH; i++)
{
- if (src[i] == EOS)
- {
+ if (secretBaseOwnerName[i] == EOS)
return i;
- }
}
- return 7;
+
+ return PLAYER_NAME_LENGTH;
}
-void sub_80E8E18(void)
+void SetPlayerSecretBase(void)
{
u16 i;
gSaveBlock1Ptr->secretBases[0].secretBaseId = sCurSecretBaseId;
- for (i = 0; i < 4; i ++)
- {
+ for (i = 0; i < 4; i++)
gSaveBlock1Ptr->secretBases[0].trainerId[i] = gSaveBlock2Ptr->playerTrainerId[i];
- }
+
VarSet(VAR_CURRENT_SECRET_BASE, 0);
- StringCopyN(gSaveBlock1Ptr->secretBases[0].trainerName, gSaveBlock2Ptr->playerName, sub_80E8DF4(gSaveBlock2Ptr->playerName));
+ StringCopyN(gSaveBlock1Ptr->secretBases[0].trainerName, gSaveBlock2Ptr->playerName, GetNameLength(gSaveBlock2Ptr->playerName));
gSaveBlock1Ptr->secretBases[0].gender = gSaveBlock2Ptr->playerGender;
gSaveBlock1Ptr->secretBases[0].language = GAME_LANGUAGE;
VarSet(VAR_SECRET_BASE_MAP, gMapHeader.regionMapSectionId);
}
-void sub_80E8EE0(struct MapEvents const *events)
+void SetOccupiedSecretBaseEntranceMetatiles(struct MapEvents const *events)
{
- u16 bgEventIndex;
- u16 i;
- u16 j;
- s16 tile_id;
- s16 x;
- s16 y;
+ u16 bgId;
+ u16 i, j;
- for (bgEventIndex = 0; bgEventIndex < events->bgEventCount; bgEventIndex ++)
+ for (bgId = 0; bgId < events->bgEventCount; bgId++)
{
- if (events->bgEvents[bgEventIndex].kind == BG_EVENT_SECRET_BASE)
+ if (events->bgEvents[bgId].kind == BG_EVENT_SECRET_BASE)
{
- for (j = 0; j < SECRET_BASES_COUNT; j ++)
+ for (j = 0; j < SECRET_BASES_COUNT; j++)
{
- if (gSaveBlock1Ptr->secretBases[j].secretBaseId == events->bgEvents[bgEventIndex].bgUnion.secretBaseId)
+ if (gSaveBlock1Ptr->secretBases[j].secretBaseId == events->bgEvents[bgId].bgUnion.secretBaseId)
{
- x = events->bgEvents[bgEventIndex].x + 7;
- y = events->bgEvents[bgEventIndex].y + 7;
- tile_id = MapGridGetMetatileIdAt(x, y);
- for (i = 0; i < 7; i ++)
+ s16 x = events->bgEvents[bgId].x + 7;
+ s16 y = events->bgEvents[bgId].y + 7;
+ s16 tile_id = MapGridGetMetatileIdAt(x, y);
+ for (i = 0; i < ARRAY_COUNT(sSecretBaseEntranceMetatiles); i++)
{
- if (gUnknown_0858CFCC[i].tile1 == tile_id)
+ if (sSecretBaseEntranceMetatiles[i].closedMetatileId == tile_id)
{
- MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile2 | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(x, y, sSecretBaseEntranceMetatiles[i].openMetatileId | METATILE_COLLISION_MASK);
break;
}
}
@@ -361,58 +390,52 @@ void sub_80E8EE0(struct MapEvents const *events)
}
}
-void sub_80E8F9C(void)
+static void SetSecretBaseWarpDestination(void)
{
- s8 idx;
-
- idx = sCurSecretBaseId / 10 * 4;
- SetWarpDestinationToMapWarp(MAP_GROUP(SECRET_BASE_RED_CAVE1), gUnknown_0858CFE8[idx], gUnknown_0858CFE8[idx + 1]);
+ s8 offset = (sCurSecretBaseId / 10) * 4;
+ SetWarpDestinationToMapWarp(MAP_GROUP(SECRET_BASE_RED_CAVE1), sSecretBaseEntrancePositions[offset], sSecretBaseEntrancePositions[offset + 1]);
}
-void sub_80E8FD0(u8 taskId)
+static void Task_EnterSecretBase(u8 taskId)
{
- u16 secretBaseRecordId;
+ u16 secretBaseId;
switch (gTasks[taskId].data[0])
{
- case 0:
- if (!gPaletteFade.active)
- {
- gTasks[taskId].data[0] = 1;
- }
- break;
- case 1:
- secretBaseRecordId = VarGet(VAR_CURRENT_SECRET_BASE);
- if (gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_10 < 255)
- {
- gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_10 ++;
- }
- sub_80E8F9C();
- WarpIntoMap();
- gFieldCallback = FieldCallback_ReturnToEventScript2;
- SetMainCallback2(CB2_LoadMap);
- DestroyTask(taskId);
- break;
+ case 0:
+ if (!gPaletteFade.active)
+ gTasks[taskId].data[0] = 1;
+ break;
+ case 1:
+ secretBaseId = VarGet(VAR_CURRENT_SECRET_BASE);
+ if (gSaveBlock1Ptr->secretBases[secretBaseId].numTimesEntered < 255)
+ gSaveBlock1Ptr->secretBases[secretBaseId].numTimesEntered++;
+
+ SetSecretBaseWarpDestination();
+ WarpIntoMap();
+ gFieldCallback = FieldCallback_ReturnToEventScript2;
+ SetMainCallback2(CB2_LoadMap);
+ DestroyTask(taskId);
+ break;
}
}
-void sub_80E9068(void)
+void EnterSecretBase(void)
{
- CreateTask(sub_80E8FD0, 0);
+ CreateTask(Task_EnterSecretBase, 0);
FadeScreen(1, 0);
SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
}
-bool8 sub_80E909C(void)
+bool8 SecretBaseMapPopupEnabled(void)
{
if (gMapHeader.mapType == MAP_TYPE_SECRET_BASE && VarGet(VAR_INIT_SECRET_BASE) == 0)
- {
return FALSE;
- }
+
return TRUE;
}
-void sub_80E90C8(u8 taskId)
+static void EnterNewlyCreatedSecretBase_WaitFadeIn(u8 taskId)
{
EventObjectTurn(&gEventObjects[gPlayerAvatar.eventObjectId], DIR_NORTH);
if (IsWeatherNotFadingIn() == TRUE)
@@ -422,189 +445,202 @@ void sub_80E90C8(u8 taskId)
}
}
-void sub_80E9108(void)
+static void EnterNewlyCreatedSecretBase_StartFadeIn(void)
{
- s16 x;
- s16 y;
+ s16 x, y;
ScriptContext2_Enable();
HideMapNamePopUpWindow();
- sub_80E8CB0(&x, &y, 0x220);
+ FindMetatileIdMapCoords(&x, &y, 0x220);
x += 7;
y += 7;
MapGridSetMetatileIdAt(x, y, 0x220 | METATILE_COLLISION_MASK);
CurrentMapDrawMetatileAt(x, y);
pal_fill_black();
- CreateTask(sub_80E90C8, 0);
+ CreateTask(EnterNewlyCreatedSecretBase_WaitFadeIn, 0);
}
-void sub_80E916C(u8 taskId)
+static void Task_EnterNewlyCreatedSecretBase(u8 taskId)
{
- s8 idx;
-
if (!gPaletteFade.active)
{
- idx = sCurSecretBaseId / 10 * 4;
- SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, gUnknown_0858CFE8[idx + 2], gUnknown_0858CFE8[idx + 3]);
+ s8 offset = sCurSecretBaseId / 10 * 4;
+ SetWarpDestination(
+ gSaveBlock1Ptr->location.mapGroup,
+ gSaveBlock1Ptr->location.mapNum,
+ -1,
+ sSecretBaseEntrancePositions[offset + 2],
+ sSecretBaseEntrancePositions[offset + 3]);
WarpIntoMap();
- gFieldCallback = sub_80E9108;
+ gFieldCallback = EnterNewlyCreatedSecretBase_StartFadeIn;
SetMainCallback2(CB2_LoadMap);
DestroyTask(taskId);
}
}
-void sub_80E91F8(void)
+void EnterNewlyCreatedSecretBase(void)
{
- CreateTask(sub_80E916C, 0);
- FadeScreen(1, 0);
+ CreateTask(Task_EnterNewlyCreatedSecretBase, 0);
+ FadeScreen(FADE_TO_BLACK, 0);
}
-bool8 CurrentMapIsSecretBase(void)
+bool8 CurMapIsSecretBase(void)
{
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SECRET_BASE_RED_CAVE1) && (u8)gSaveBlock1Ptr->location.mapNum <= MAP_NUM(SECRET_BASE_SHRUB4))
- {
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SECRET_BASE_RED_CAVE1)
+ && (u8)gSaveBlock1Ptr->location.mapNum <= MAP_NUM(SECRET_BASE_SHRUB4))
return TRUE;
- }
- return FALSE;
+ else
+ return FALSE;
}
-void sub_80E9238(u8 flagIn)
+void InitSecretBaseAppearance(bool8 hidePC)
{
- u16 curBaseId;
- u16 x;
- u16 y;
+ u16 secretBaseId;
+ u16 x, y;
u8 *decorations;
u8 *decorPos;
- if (CurrentMapIsSecretBase())
+ if (CurMapIsSecretBase())
{
- curBaseId = VarGet(VAR_CURRENT_SECRET_BASE);
- decorations = gSaveBlock1Ptr->secretBases[curBaseId].decorations;
- decorPos = gSaveBlock1Ptr->secretBases[curBaseId].decorationPos;
- for (x = 0; x < 16; x ++)
+ secretBaseId = VarGet(VAR_CURRENT_SECRET_BASE);
+ decorations = gSaveBlock1Ptr->secretBases[secretBaseId].decorations;
+ decorPos = gSaveBlock1Ptr->secretBases[secretBaseId].decorationPositions;
+ for (x = 0; x < 16; x++)
{
- if (decorations[x] > 0 && decorations[x] <= 0x78 && gDecorations[decorations[x]].permission != DECORPERM_SOLID_MAT) {
- sub_8127D38((decorPos[x] >> 4) + 7, (decorPos[x] & 0xF) + 7, decorations[x]);
- }
+ if (decorations[x] > 0 && decorations[x] <= NUM_DECORATIONS && gDecorations[decorations[x]].permission != DECORPERM_SPRITE)
+ ShowDecorationOnMap((decorPos[x] >> 4) + 7, (decorPos[x] & 0xF) + 7, decorations[x]);
}
- if (curBaseId != 0)
+
+ if (secretBaseId != 0)
{
- sub_80E8CB0(&x, &y, 0x220);
+ // Another player's secret base. Change PC type to the "Register" PC.
+ FindMetatileIdMapCoords(&x, &y, 0x220);
MapGridSetMetatileIdAt(x + 7, y + 7, 0x221 | METATILE_COLLISION_MASK);
}
- else if (flagIn == 1 && VarGet(VAR_SECRET_BASE_INITIALIZED) == 1)
+ else if (hidePC == TRUE && VarGet(VAR_SECRET_BASE_INITIALIZED) == 1)
{
- sub_80E8CB0(&x, &y, 0x220);
+ // Change PC to regular ground tile.
+ FindMetatileIdMapCoords(&x, &y, 0x220);
MapGridSetMetatileIdAt(x + 7, y + 7, 0x20a | METATILE_COLLISION_MASK);
}
}
}
-void sub_80E933C(void)
+void InitSecretBaseDecorationSprites(void)
{
- u8 *roomDecor;
- u8 *roomDecorPos;
- u8 decorIdx;
- u8 objIdx;
- u8 metatile;
+ u8 i;
+ u8 *decorations;
+ u8 *decorationPositions;
+ u8 eventObjectId;
+ u8 metatileBehavior;
u8 category;
u8 permission;
- u8 nDecor;
- u16 curBase;
+ u8 numDecorations;
- objIdx = 0;
- if (!CurrentMapIsSecretBase())
+ eventObjectId = 0;
+ if (!CurMapIsSecretBase())
{
- roomDecor = gSaveBlock1Ptr->playerRoomDecor;
- roomDecorPos = gSaveBlock1Ptr->playerRoomDecorPos;
- nDecor = 12;
+ decorations = gSaveBlock1Ptr->playerRoomDecor;
+ decorationPositions = gSaveBlock1Ptr->playerRoomDecorPos;
+ numDecorations = 12;
}
else
{
- curBase = VarGet(VAR_CURRENT_SECRET_BASE);
- roomDecor = gSaveBlock1Ptr->secretBases[curBase].decorations;
- roomDecorPos = gSaveBlock1Ptr->secretBases[curBase].decorationPos;
- nDecor = 16;
+ u16 secretBaseId = VarGet(VAR_CURRENT_SECRET_BASE);
+ decorations = gSaveBlock1Ptr->secretBases[secretBaseId].decorations;
+ decorationPositions = gSaveBlock1Ptr->secretBases[secretBaseId].decorationPositions;
+ numDecorations = 16;
}
- for (decorIdx = 0; decorIdx < nDecor; decorIdx ++)
+
+ for (i = 0; i < numDecorations; i++)
{
- if (roomDecor[decorIdx] != DECOR_NONE)
+ if (decorations[i] == DECOR_NONE)
+ continue;
+
+ permission = gDecorations[decorations[i]].permission;
+ category = gDecorations[decorations[i]].category;
+ if (permission == DECORPERM_SPRITE)
{
- permission = gDecorations[roomDecor[decorIdx]].permission;
- category = gDecorations[roomDecor[decorIdx]].category;
- if (permission == DECORPERM_SOLID_MAT)
+ for (eventObjectId = 0; eventObjectId < gMapHeader.events->eventObjectCount; eventObjectId++)
{
- for (objIdx = 0; objIdx < gMapHeader.events->eventObjectCount; objIdx ++)
+ if (gMapHeader.events->eventObjects[eventObjectId].flagId == FLAG_DECORATION_1 + gSpecialVar_0x8004)
+ break;
+ }
+
+ if (eventObjectId == gMapHeader.events->eventObjectCount)
+ continue;
+
+ gSpecialVar_0x8006 = decorationPositions[i] >> 4;
+ gSpecialVar_0x8007 = decorationPositions[i] & 0xF;
+ metatileBehavior = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7);
+ if (MetatileBehavior_HoldsSmallDecoration(metatileBehavior) == TRUE
+ || MetatileBehavior_HoldsLargeDecoration(metatileBehavior) == TRUE)
+ {
+ gSpecialVar_Result = VAR_OBJ_GFX_ID_0 + (gMapHeader.events->eventObjects[eventObjectId].graphicsId - EVENT_OBJ_GFX_VAR_0);
+ VarSet(gSpecialVar_Result, gDecorations[decorations[i]].tiles[0]);
+ gSpecialVar_Result = gMapHeader.events->eventObjects[eventObjectId].localId;
+ FlagClear(FLAG_DECORATION_1 + gSpecialVar_0x8004);
+ TrySpawnEventObject(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ TryMoveEventObjectToMapCoords(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007);
+ TryOverrideEventObjectTemplateCoords(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ if (CurMapIsSecretBase() == TRUE && VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- if (gMapHeader.events->eventObjects[objIdx].flagId == gSpecialVar_0x8004 + 0xAE)
+ if (category == DECORCAT_DOLL)
{
- break;
+ OverrideSecretBaseDecorationSpriteScript(
+ gSpecialVar_Result,
+ gSaveBlock1Ptr->location.mapNum,
+ gSaveBlock1Ptr->location.mapGroup,
+ DECORCAT_DOLL);
}
- }
- if (objIdx == gMapHeader.events->eventObjectCount)
- {
- continue;
- }
- gSpecialVar_0x8006 = roomDecorPos[decorIdx] >> 4;
- gSpecialVar_0x8007 = roomDecorPos[decorIdx] & 0xF;
- metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7);
- if (MetatileBehavior_IsSecretBaseLargeMatEdge(metatile) == TRUE || MetatileBehavior_IsLargeMatCenter(metatile) == TRUE)
- {
- gSpecialVar_Result = gMapHeader.events->eventObjects[objIdx].graphicsId + UNKNOWN_VAR_OFFSET_3F20;
- VarSet(gSpecialVar_Result, gDecorations[roomDecor[decorIdx]].tiles[0]);
- gSpecialVar_Result = gMapHeader.events->eventObjects[objIdx].localId;
- FlagClear(gSpecialVar_0x8004 + 0xAE);
- show_sprite(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
- sub_808EBA8(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007);
- sub_808F254(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
- if (CurrentMapIsSecretBase() == TRUE && VarGet(VAR_CURRENT_SECRET_BASE) != 0)
+ else if (category == DECORCAT_CUSHION)
{
- if (category == DECORCAT_DOLL)
- {
- sub_808F28C(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, DECORCAT_DOLL);
- }
- else if (category == DECORCAT_CUSHION)
- {
- sub_808F28C(gSpecialVar_Result, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, DECORCAT_CUSHION);
- }
+ OverrideSecretBaseDecorationSpriteScript(
+ gSpecialVar_Result,
+ gSaveBlock1Ptr->location.mapNum,
+ gSaveBlock1Ptr->location.mapGroup,
+ DECORCAT_CUSHION);
}
- gSpecialVar_0x8004 ++;
}
+
+ gSpecialVar_0x8004++;
}
}
}
}
-void sub_80E9578(void)
+void HideSecretBaseDecorationSprites(void)
{
- u8 objectEventIdx;
- u16 flagId;
+ u8 eventObjectId;
+ u16 flag;
- for (objectEventIdx = 0; objectEventIdx < gMapHeader.events->eventObjectCount; objectEventIdx ++)
+ for (eventObjectId = 0; eventObjectId < gMapHeader.events->eventObjectCount; eventObjectId++)
{
- flagId = gMapHeader.events->eventObjects[objectEventIdx].flagId;
- if (flagId >= FLAG_DECORATION_1 && flagId <= FLAG_DECORATION_14)
+ flag = gMapHeader.events->eventObjects[eventObjectId].flagId;
+ if (flag >= FLAG_DECORATION_1 && flag <= FLAG_DECORATION_14)
{
- RemoveEventObjectByLocalIdAndMap(gMapHeader.events->eventObjects[objectEventIdx].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
- FlagSet(flagId);
+ RemoveEventObjectByLocalIdAndMap(
+ gMapHeader.events->eventObjects[eventObjectId].localId,
+ gSaveBlock1Ptr->location.mapNum,
+ gSaveBlock1Ptr->location.mapGroup);
+ FlagSet(flag);
}
}
}
-void sub_80E95D4(void)
+void SetSecretBaseOwnerGfxId(void)
{
- VarSet(VAR_OBJ_GFX_ID_F, gUnknown_0858D060[sub_80EA20C(VarGet(VAR_CURRENT_SECRET_BASE))]);
+ VarSet(VAR_OBJ_GFX_ID_F, sSecretBaseOwnerGfxIds[GetSecretBaseOwnerType(VarGet(VAR_CURRENT_SECRET_BASE))]);
}
-void sub_80E9608(const struct MapPosition *position, const struct MapEvents *events)
+void SetCurSecretBaseIdFromPosition(const struct MapPosition *position, const struct MapEvents *events)
{
- s16 bgEventIdx;
-
- for (bgEventIdx = 0; bgEventIdx < events->bgEventCount; bgEventIdx ++)
+ s16 i;
+ for (i = 0; i < events->bgEventCount; i++)
{
- if (events->bgEvents[bgEventIdx].kind == BG_EVENT_SECRET_BASE && position->x == events->bgEvents[bgEventIdx].x + 7 && position->y == events->bgEvents[bgEventIdx].y + 7)
+ if (events->bgEvents[i].kind == BG_EVENT_SECRET_BASE && position->x == events->bgEvents[i].x + 7 && position->y == events->bgEvents[i].y + 7)
{
- sCurSecretBaseId = events->bgEvents[bgEventIdx].bgUnion.secretBaseId;
+ sCurSecretBaseId = events->bgEvents[i].bgUnion.secretBaseId;
break;
}
}
@@ -612,101 +648,92 @@ void sub_80E9608(const struct MapPosition *position, const struct MapEvents *eve
void WarpIntoSecretBase(const struct MapPosition *position, const struct MapEvents *events)
{
- sub_80E9608(position, events);
- sub_80E8B6C();
+ SetCurSecretBaseIdFromPosition(position, events);
+ TrySetCurSecretBaseIndex();
ScriptContext1_SetupScript(EventScript_275BB7);
}
-bool8 sub_80E9680(void)
+bool8 TrySetCurSecretBase(void)
{
- sub_80E8B58();
- sub_80E8B6C();
+ SetCurSecretBaseId();
+ TrySetCurSecretBaseIndex();
if (gSpecialVar_Result == TRUE)
- {
return FALSE;
- }
+
return TRUE;
}
-void sub_80E96A4(u8 taskId)
+static void Task_WarpOutOfSecretBase(u8 taskId)
{
switch (gTasks[taskId].data[0])
{
- case 0:
- ScriptContext2_Enable();
- gTasks[taskId].data[0] = 1;
- break;
- case 1:
- if (!gPaletteFade.active)
- {
- gTasks[taskId].data[0] = 2;
- }
- break;
- case 2:
- SetWarpDestinationToDynamicWarp(0x7e);
- WarpIntoMap();
- gFieldCallback = mapldr_default;
- SetMainCallback2(CB2_LoadMap);
- ScriptContext2_Disable();
- DestroyTask(taskId);
- break;
+ case 0:
+ ScriptContext2_Enable();
+ gTasks[taskId].data[0] = 1;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ gTasks[taskId].data[0] = 2;
+ break;
+ case 2:
+ SetWarpDestinationToDynamicWarp(0x7e);
+ WarpIntoMap();
+ gFieldCallback = mapldr_default;
+ SetMainCallback2(CB2_LoadMap);
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ break;
}
}
-void sub_80E9728(void)
+static void WarpOutOfSecretBase(void)
{
- CreateTask(sub_80E96A4, 0);
- FadeScreen(1, 0);
+ CreateTask(Task_WarpOutOfSecretBase, 0);
+ FadeScreen(FADE_TO_BLACK, 0);
}
-void sub_80E9744(void)
+void IsCurSecretBaseOwnedByAnotherPlayer(void)
{
if (gSaveBlock1Ptr->secretBases[0].secretBaseId != sCurSecretBaseId)
- {
gSpecialVar_Result = TRUE;
- }
else
- {
gSpecialVar_Result = FALSE;
- }
}
-u8 *sub_80E9780(u8 *dest, u8 secretBaseRecordId)
+static u8 *GetSecretBaseName(u8 *dest, u8 secretBaseId)
{
- *StringCopyN(dest, gSaveBlock1Ptr->secretBases[secretBaseRecordId].trainerName, sub_80E8DF4(gSaveBlock1Ptr->secretBases[secretBaseRecordId].trainerName)) = EOS;
- ConvertInternationalString(dest, gSaveBlock1Ptr->secretBases[secretBaseRecordId].language);
+ *StringCopyN(dest, gSaveBlock1Ptr->secretBases[secretBaseId].trainerName, GetNameLength(gSaveBlock1Ptr->secretBases[secretBaseId].trainerName)) = EOS;
+ ConvertInternationalString(dest, gSaveBlock1Ptr->secretBases[secretBaseId].language);
return StringAppend(dest, gText_ApostropheSBase);
}
u8 *GetSecretBaseMapName(u8 *dest)
{
- return sub_80E9780(dest, VarGet(VAR_CURRENT_SECRET_BASE));
+ return GetSecretBaseName(dest, VarGet(VAR_CURRENT_SECRET_BASE));
}
-void sub_80E980C(void)
+void CopyCurSecretBaseOwnerName_StrVar1(void)
{
- u8 secretBaseRecordId;
- const u8 *src;
+ u8 secretBaseId;
+ const u8 *name;
- secretBaseRecordId = VarGet(VAR_CURRENT_SECRET_BASE);
- src = gSaveBlock1Ptr->secretBases[secretBaseRecordId].trainerName;
- *StringCopyN(gStringVar1, src, sub_80E8DF4(src)) = EOS;
- ConvertInternationalString(gStringVar1, gSaveBlock1Ptr->secretBases[secretBaseRecordId].language);
+ secretBaseId = VarGet(VAR_CURRENT_SECRET_BASE);
+ name = gSaveBlock1Ptr->secretBases[secretBaseId].trainerName;
+ *StringCopyN(gStringVar1, name, GetNameLength(name)) = EOS;
+ ConvertInternationalString(gStringVar1, gSaveBlock1Ptr->secretBases[secretBaseId].language);
}
-bool8 sub_80E9878(u8 secretBaseRecordId)
+static bool8 IsSecretBaseRegistered(u8 secretBaseId)
{
- if (gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_1_6 != 0)
- {
+ if (gSaveBlock1Ptr->secretBases[secretBaseId].registryStatus)
return TRUE;
- }
+
return FALSE;
}
-u8 sub_80E98AC(struct Pokemon *pokemon)
+static u8 GetAverageEVs(struct Pokemon *pokemon)
{
u16 evTotal;
-
evTotal = GetMonData(pokemon, MON_DATA_HP_EV);
evTotal += GetMonData(pokemon, MON_DATA_ATK_EV);
evTotal += GetMonData(pokemon, MON_DATA_DEF_EV);
@@ -716,173 +743,162 @@ u8 sub_80E98AC(struct Pokemon *pokemon)
return evTotal / 6;
}
-void sub_80E9914(void)
+void SetPlayerSecretBaseParty(void)
{
- u16 partyIdx;
+ u16 i;
u16 moveIdx;
- u16 sbPartyIdx;
+ u16 partyId;
struct SecretBaseParty *party;
- sbPartyIdx = 0;
+ partyId = 0;
party = &gSaveBlock1Ptr->secretBases[0].party;
- if (gSaveBlock1Ptr->secretBases[0].secretBaseId != 0)
+ if (gSaveBlock1Ptr->secretBases[0].secretBaseId)
{
- for (partyIdx = 0; partyIdx < PARTY_SIZE; partyIdx++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
- for (moveIdx = 0; moveIdx < 4; moveIdx++)
- {
- party->moves[partyIdx * 4 + moveIdx] = 0;
- }
- party->species[partyIdx] = 0;
- party->heldItems[partyIdx] = 0;
- party->levels[partyIdx] = 0;
- party->personality[partyIdx] = 0;
- party->EVs[partyIdx] = 0;
- if (GetMonData(&gPlayerParty[partyIdx], MON_DATA_SPECIES) != SPECIES_NONE
- && !GetMonData(&gPlayerParty[partyIdx], MON_DATA_IS_EGG))
+ for (moveIdx = 0; moveIdx < MAX_MON_MOVES; moveIdx++)
+ party->moves[i * MAX_MON_MOVES + moveIdx] = MOVE_NONE;
+
+ party->species[i] = SPECIES_NONE;
+ party->heldItems[i] = ITEM_NONE;
+ party->levels[i] = 0;
+ party->personality[i] = 0;
+ party->EVs[i] = 0;
+
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE
+ && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
{
- for (moveIdx = 0; moveIdx < 4; moveIdx++)
- {
- party->moves[sbPartyIdx * 4 + moveIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_MOVE1 + moveIdx);
- }
- party->species[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_SPECIES);
- party->heldItems[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_HELD_ITEM);
- party->levels[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_LEVEL);
- party->personality[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_PERSONALITY);
- party->EVs[sbPartyIdx] = sub_80E98AC(&gPlayerParty[partyIdx]);
- sbPartyIdx++;
+ for (moveIdx = 0; moveIdx < MAX_MON_MOVES; moveIdx++)
+ party->moves[partyId * MAX_MON_MOVES + moveIdx] = GetMonData(&gPlayerParty[i], MON_DATA_MOVE1 + moveIdx);
+
+ party->species[partyId] = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES);
+ party->heldItems[partyId] = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
+ party->levels[partyId] = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
+ party->personality[partyId] = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY);
+ party->EVs[partyId] = GetAverageEVs(&gPlayerParty[i]);
+ partyId++;
}
}
}
}
-void sub_80E9A90(void)
+void ClearAndLeaveSecretBase(void)
{
- u16 sbr_e;
-
- sbr_e = gSaveBlock1Ptr->secretBases[0].sbr_field_e;
+ u16 temp = gSaveBlock1Ptr->secretBases[0].numSecretBasesReceived;
ClearSecretBase(&gSaveBlock1Ptr->secretBases[0]);
- gSaveBlock1Ptr->secretBases[0].sbr_field_e = sbr_e;
- sub_80E9728();
+ gSaveBlock1Ptr->secretBases[0].numSecretBasesReceived = temp;
+ WarpOutOfSecretBase();
}
-void sub_80E9AC0(void)
+void MoveOutOfSecretBase(void)
{
IncrementGameStat(GAME_STAT_MOVED_SECRET_BASE);
- sub_80E9A90();
+ ClearAndLeaveSecretBase();
}
-void sub_80E9AD0(void)
+static void ClosePlayerSecretBaseEntrance(void)
{
u16 i;
u16 j;
- s16 tile;
- const struct MapEvents *events;
+ s16 metatileId;
+ const struct MapEvents *events = gMapHeader.events;
- events = gMapHeader.events;
- for (i = 0; i < events->bgEventCount; i ++)
+ for (i = 0; i < events->bgEventCount; i++)
{
- if (events->bgEvents[i].kind == BG_EVENT_SECRET_BASE && gSaveBlock1Ptr->secretBases[0].secretBaseId == events->bgEvents[i].bgUnion.secretBaseId)
+ if (events->bgEvents[i].kind == BG_EVENT_SECRET_BASE
+ && gSaveBlock1Ptr->secretBases[0].secretBaseId == events->bgEvents[i].bgUnion.secretBaseId)
{
- tile = MapGridGetMetatileIdAt(events->bgEvents[i].x + 7, events->bgEvents[i].y + 7);
- for (j = 0; j < 7; j ++)
+ metatileId = MapGridGetMetatileIdAt(events->bgEvents[i].x + 7, events->bgEvents[i].y + 7);
+ for (j = 0; j < 7; j++)
{
- if (gUnknown_0858CFCC[j].tile2 == tile)
+ if (sSecretBaseEntranceMetatiles[j].openMetatileId == metatileId)
{
- MapGridSetMetatileIdAt(events->bgEvents[i].x + 7, events->bgEvents[i].y + 7, gUnknown_0858CFCC[j].tile1 | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(events->bgEvents[i].x + 7, events->bgEvents[i].y + 7, sSecretBaseEntranceMetatiles[j].closedMetatileId | METATILE_COLLISION_MASK);
break;
}
}
+
DrawWholeMapView();
break;
}
}
}
-void sub_80E9B70(void)
+// When the player moves to a new secret base by interacting with a new secret base
+// entrance in the overworld.
+void MoveOutOfSecretBaseFromOutside(void)
{
- u16 sbr_e;
+ u16 temp;
- sub_80E9AD0();
+ ClosePlayerSecretBaseEntrance();
IncrementGameStat(GAME_STAT_MOVED_SECRET_BASE);
- sbr_e = gSaveBlock1Ptr->secretBases[0].sbr_field_e;
+ temp = gSaveBlock1Ptr->secretBases[0].numSecretBasesReceived;
ClearSecretBase(&gSaveBlock1Ptr->secretBases[0]);
- gSaveBlock1Ptr->secretBases[0].sbr_field_e = sbr_e;
+ gSaveBlock1Ptr->secretBases[0].numSecretBasesReceived = temp;
}
-u8 sub_80E9BA8(void)
+static u8 GetNumRegisteredSecretBases(void)
{
- u8 sum;
s16 i;
-
- sum = 0;
- for (i = 1; i < SECRET_BASES_COUNT; i ++)
+ u8 count = 0;
+ for (i = 1; i < SECRET_BASES_COUNT; i++)
{
- if (sub_80E9878(i) == TRUE)
- {
- sum ++;
- }
+ if (IsSecretBaseRegistered(i) == TRUE)
+ count++;
}
- return sum;
+
+ return count;
}
-void sub_80E9BDC(void)
+void GetCurSecretBaseRegistrationValidity(void)
{
- if (sub_80E9878(VarGet(VAR_CURRENT_SECRET_BASE)) == TRUE)
- {
+ if (IsSecretBaseRegistered(VarGet(VAR_CURRENT_SECRET_BASE)) == TRUE)
gSpecialVar_Result = 1;
- }
- else if (sub_80E9BA8() > 9)
- {
+ else if (GetNumRegisteredSecretBases() >= 10)
gSpecialVar_Result = 2;
- }
else
- {
gSpecialVar_Result = 0;
- }
}
-void sub_80E9C2C(void)
+void ToggleCurSecretBaseRegistry(void)
{
- gSaveBlock1Ptr->secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].sbr_field_1_6 ^= 1;
- FlagSet(FLAG_DECORATION_16);
+ gSaveBlock1Ptr->secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].registryStatus ^= 1;
+ FlagSet(FLAG_SECRET_BASE_REGISTRY_ENABLED);
}
-void sub_80E9C74(void)
+void ShowSecretBaseDecorationMenu(void)
{
- CreateTask(sub_8126AD8, 0);
+ CreateTask(DoSecretBaseDecorationMenu, 0);
}
-void sub_80E9C88(void)
+void ShowSecretBaseRegistryMenu(void)
{
- CreateTask(sub_80E9C9C, 0);
+ CreateTask(Task_ShowSecretBaseRegistryMenu, 0);
}
-void sub_80E9C9C(u8 taskId)
+static void Task_ShowSecretBaseRegistryMenu(u8 taskId)
{
- s16 *data;
-
- data = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
ScriptContext2_Enable();
- data[0] = sub_80E9BA8();
+ data[0] = GetNumRegisteredSecretBases();
if (data[0] != 0)
{
data[1] = 0;
data[2] = 0;
ClearDialogWindowAndFrame(0, 0);
- gUnknown_0203A020 = calloc(1, sizeof(struct SecretBaseListMenuBuffer));
- data[6] = AddWindow(&gUnknown_0858D06C[0]);
- game_continue(taskId);
- sub_80E9E00(taskId);
- gTasks[taskId].func = sub_80E9E90;
+ sRegistryMenu = calloc(1, sizeof(*sRegistryMenu));
+ data[6] = AddWindow(&sRegistryWindowTemplates[0]);
+ BuildRegistryMenuItems(taskId);
+ FinalizeRegistryMenu(taskId);
+ gTasks[taskId].func = HandleRegistryMenuInput;
}
else
{
- DisplayItemMessageOnField(taskId, gText_NoRegistry, task_pc_turn_off);
+ DisplayItemMessageOnField(taskId, gText_NoRegistry, GoToSecretBasePCMainMenu);
}
}
-void game_continue(u8 taskId)
+static void BuildRegistryMenuItems(u8 taskId)
{
s16 *data;
u8 i;
@@ -890,62 +906,54 @@ void game_continue(u8 taskId)
data = gTasks[taskId].data;
count = 0;
- for (i = 1; i < SECRET_BASES_COUNT; i ++)
+ for (i = 1; i < SECRET_BASES_COUNT; i++)
{
- if (sub_80E9878(i))
+ if (IsSecretBaseRegistered(i))
{
- sub_80E9780(gUnknown_0203A020->names[count], i);
- gUnknown_0203A020->items[count].name = gUnknown_0203A020->names[count];
- gUnknown_0203A020->items[count].id = i;
- count ++;
+ GetSecretBaseName(sRegistryMenu->names[count], i);
+ sRegistryMenu->items[count].name = sRegistryMenu->names[count];
+ sRegistryMenu->items[count].id = i;
+ count++;
}
}
- gUnknown_0203A020->items[count].name = gText_Cancel;
- gUnknown_0203A020->items[count].id = -2;
+
+ sRegistryMenu->items[count].name = gText_Cancel;
+ sRegistryMenu->items[count].id = -2;
data[0] = count + 1;
if (data[0] < 8)
- {
data[3] = data[0];
- }
else
- {
data[3] = 8;
- }
- gMultiuseListMenuTemplate = gUnknown_0858D07C;
+
+ gMultiuseListMenuTemplate = sRegistryListMenuTemplate;
gMultiuseListMenuTemplate.windowId = data[6];
gMultiuseListMenuTemplate.totalItems = data[0];
- gMultiuseListMenuTemplate.items = gUnknown_0203A020->items;
+ gMultiuseListMenuTemplate.items = sRegistryMenu->items;
gMultiuseListMenuTemplate.maxShowed = data[3];
}
-void sub_80E9DEC(s32 a0, bool8 flag, struct ListMenu *menu)
+static void RegistryMenu_OnCursorMove(int unused, bool8 flag, struct ListMenu *menu)
{
if (flag != TRUE)
- {
PlaySE(SE_SELECT);
- }
}
-void sub_80E9E00(u8 taskId)
+static void FinalizeRegistryMenu(u8 taskId)
{
- s16 *data;
-
- data = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
SetStandardWindowBorderStyle(data[6], 0);
data[5] = ListMenuInit(&gMultiuseListMenuTemplate, data[2], data[1]);
- sub_80E9E44(taskId);
+ AddRegistryMenuScrollArrows(taskId);
schedule_bg_copy_tilemap_to_vram(0);
}
-void sub_80E9E44(u8 taskId)
+static void AddRegistryMenuScrollArrows(u8 taskId)
{
- s16 *data;
-
- data = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
data[8] = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0xbc, 0x0c, 0x94, data[0] - data[3], 0x13f8, 0x13f8, &data[2]);
}
-void sub_80E9E90(u8 taskId)
+static void HandleRegistryMenuInput(u8 taskId)
{
s16 *data;
s32 input;
@@ -955,219 +963,185 @@ void sub_80E9E90(u8 taskId)
ListMenuGetScrollAndRow(data[5], &data[2], &data[1]);
switch (input)
{
- case LIST_NOTHING_CHOSEN:
- break;
- case LIST_CANCEL:
- PlaySE(SE_SELECT);
- DestroyListMenuTask(data[5], NULL, NULL);
- RemoveScrollIndicatorArrowPair(data[8]);
- ClearStdWindowAndFrame(data[6], 0);
- ClearWindowTilemap(data[6]);
- RemoveWindow(data[6]);
- schedule_bg_copy_tilemap_to_vram(0);
- free(gUnknown_0203A020);
- task_pc_turn_off(taskId);
- break;
- default:
- PlaySE(SE_SELECT);
- data[4] = input;
- sub_80E9F20(taskId);
- break;
+ case LIST_NOTHING_CHOSEN:
+ break;
+ case LIST_CANCEL:
+ PlaySE(SE_SELECT);
+ DestroyListMenuTask(data[5], NULL, NULL);
+ RemoveScrollIndicatorArrowPair(data[8]);
+ ClearStdWindowAndFrame(data[6], 0);
+ ClearWindowTilemap(data[6]);
+ RemoveWindow(data[6]);
+ schedule_bg_copy_tilemap_to_vram(0);
+ free(sRegistryMenu);
+ GoToSecretBasePCMainMenu(taskId);
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ data[4] = input;
+ ShowRegistryMenuActions(taskId);
+ break;
}
}
-void sub_80E9F20(u8 taskId)
+static void ShowRegistryMenuActions(u8 taskId)
{
struct WindowTemplate template;
- s16 *data;
-
- data = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
RemoveScrollIndicatorArrowPair(data[8]);
- template = gUnknown_0858D06C[1];
- template.width = GetMaxWidthInMenuTable(gUnknown_0858D048, 2);
+ template = sRegistryWindowTemplates[1];
+ template.width = GetMaxWidthInMenuTable(sRegistryMenuActions, 2);
data[7] = AddWindow(&template);
SetStandardWindowBorderStyle(data[7], 0);
- PrintMenuTable(data[7], 2, gUnknown_0858D048);
+ PrintMenuTable(data[7], 2, sRegistryMenuActions);
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(data[7], 2, 0);
schedule_bg_copy_tilemap_to_vram(0);
- gTasks[taskId].func = sub_80E9FB0;
+ gTasks[taskId].func = HandleRegistryMenuActionsInput;
}
-void sub_80E9FB0(u8 taskId)
+static void HandleRegistryMenuActionsInput(u8 taskId)
{
- s8 input;
-
- input = Menu_ProcessInputNoWrap();
+ s8 input = Menu_ProcessInputNoWrap();
switch (input)
{
- case MENU_B_PRESSED:
- PlaySE(SE_SELECT);
- sub_80EA18C(taskId);
- break;
- case MENU_NOTHING_CHOSEN:
- break;
- default:
- PlaySE(SE_SELECT);
- gUnknown_0858D048[input].func.void_u8(taskId);
- break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ ReturnToMainRegistryMenu(taskId);
+ break;
+ case MENU_NOTHING_CHOSEN:
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ sRegistryMenuActions[input].func.void_u8(taskId);
+ break;
}
}
-void sub_80E9FFC(u8 taskId)
+static void ShowRegistryMenuDeleteConfirmation(u8 taskId)
{
- s16 *data;
-
- data = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
ClearStdWindowAndFrame(data[6], FALSE);
ClearStdWindowAndFrame(data[7], FALSE);
ClearWindowTilemap(data[6]);
ClearWindowTilemap(data[7]);
RemoveWindow(data[7]);
schedule_bg_copy_tilemap_to_vram(0);
- sub_80E9780(gStringVar1, data[4]);
+ GetSecretBaseName(gStringVar1, data[4]);
StringExpandPlaceholders(gStringVar4, gText_OkayToDeleteFromRegistry);
- DisplayItemMessageOnField(taskId, gStringVar4, sub_80EA06C);
+ DisplayItemMessageOnField(taskId, gStringVar4, ShowRegistryMenuDeleteYesNo);
}
-void sub_80EA06C(u8 taskId)
+static void ShowRegistryMenuDeleteYesNo(u8 taskId)
{
DisplayYesNoMenuDefaultYes();
- DoYesNoFuncWithChoice(taskId, &gUnknown_0858D058);
+ DoYesNoFuncWithChoice(taskId, &sDeleteRegistryYesNoFuncs);
}
-void sub_80EA08C(u8 taskId)
+void DeleteRegistry_Yes_Callback(u8 taskId)
{
- s16 *data;
-
- data = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
ClearDialogWindowAndFrame(0, 0);
DestroyListMenuTask(data[5], &data[2], &data[1]);
- gSaveBlock1Ptr->secretBases[data[4]].sbr_field_1_6 = 0;
- game_continue(taskId);
+ gSaveBlock1Ptr->secretBases[data[4]].registryStatus = 0;
+ BuildRegistryMenuItems(taskId);
sub_812225C(&data[2], &data[1], data[3], data[0]);
- sub_80E9E00(taskId);
- gTasks[taskId].func = sub_80E9E90;
+ FinalizeRegistryMenu(taskId);
+ gTasks[taskId].func = HandleRegistryMenuInput;
}
-void sub_80EA120(u8 taskId)
+static void DeleteRegistry_Yes(u8 taskId)
{
- DisplayItemMessageOnField(taskId, gText_RegisteredDataDeleted, sub_80EA08C);
+ DisplayItemMessageOnField(taskId, gText_RegisteredDataDeleted, DeleteRegistry_Yes_Callback);
}
-void sub_80EA13C(u8 taskId)
+static void DeleteRegistry_No(u8 taskId)
{
- s16 *data;
-
- data = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
ClearDialogWindowAndFrame(0, 0);
DestroyListMenuTask(data[5], &data[2], &data[1]);
- sub_80E9E00(taskId);
- gTasks[taskId].func = sub_80E9E90;
+ FinalizeRegistryMenu(taskId);
+ gTasks[taskId].func = HandleRegistryMenuInput;
}
-void sub_80EA18C(u8 taskId)
+static void ReturnToMainRegistryMenu(u8 taskId)
{
- s16 *data;
-
- data = gTasks[taskId].data;
- sub_80E9E44(taskId);
+ s16 *data = gTasks[taskId].data;
+ AddRegistryMenuScrollArrows(taskId);
ClearStdWindowAndFrame(data[7], 0);
ClearWindowTilemap(data[7]);
RemoveWindow(data[7]);
schedule_bg_copy_tilemap_to_vram(0);
- gTasks[taskId].func = sub_80E9E90;
+ gTasks[taskId].func = HandleRegistryMenuInput;
}
-void task_pc_turn_off(u8 taskId)
+static void GoToSecretBasePCMainMenu(u8 taskId)
{
if (VarGet(VAR_CURRENT_SECRET_BASE) == 0)
- {
ScriptContext1_SetupScript(gUnknown_0823B4E8);
- }
else
- {
ScriptContext1_SetupScript(gUnknown_0823B5E9);
- }
+
DestroyTask(taskId);
}
-u8 sub_80EA20C(u8 secretBaseRecordId)
+static u8 GetSecretBaseOwnerType(u8 secretBaseId)
{
- return (gSaveBlock1Ptr->secretBases[secretBaseRecordId].trainerId[0] % 5) + (gSaveBlock1Ptr->secretBases[secretBaseRecordId].gender * 5);
+ return (gSaveBlock1Ptr->secretBases[secretBaseId].trainerId[0] % 5)
+ + (gSaveBlock1Ptr->secretBases[secretBaseId].gender * 5);
}
const u8 *GetSecretBaseTrainerLoseText(void)
{
- u8 param;
-
- param = sub_80EA20C(VarGet(VAR_CURRENT_SECRET_BASE));
- if (param == 0)
- {
+ u8 ownerType = GetSecretBaseOwnerType(VarGet(VAR_CURRENT_SECRET_BASE));
+ if (ownerType == 0)
return SecretBase_RedCave1_Text_274966;
- }
- if (param == 1)
- {
+ else if (ownerType == 1)
return SecretBase_RedCave1_Text_274D13;
- }
- if (param == 2)
- {
+ else if (ownerType == 2)
return SecretBase_RedCave1_Text_274FFE;
- }
- if (param == 3)
- {
+ else if (ownerType == 3)
return SecretBase_RedCave1_Text_275367;
- }
- if (param == 4)
- {
+ else if (ownerType == 4)
return SecretBase_RedCave1_Text_2756C7;
- }
- if (param == 5)
- {
+ else if (ownerType == 5)
return SecretBase_RedCave1_Text_274B24;
- }
- if (param == 6)
- {
+ else if (ownerType == 6)
return SecretBase_RedCave1_Text_274E75;
- }
- if (param == 7)
- {
+ else if (ownerType == 7)
return SecretBase_RedCave1_Text_2751E1;
- }
- if (param == 8)
- {
+ else if (ownerType == 8)
return SecretBase_RedCave1_Text_2754F6;
- }
- return SecretBase_RedCave1_Text_2758CC;
+ else
+ return SecretBase_RedCave1_Text_2758CC;
}
-void sub_80EA2E4(void)
+void PrepSecretBaseBattleFlags(void)
{
- sub_813BADC(TRUE);
+ sub_813BADC(1);
gTrainerBattleOpponent_A = TRAINER_SECRET_BASE;
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_SECRET_BASE;
}
void sub_80EA30C(void)
{
- gSaveBlock1Ptr->secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].sbr_field_1_5 = gSpecialVar_Result;
+ gSaveBlock1Ptr->secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].battledOwnerToday = gSpecialVar_Result;
}
-void sub_80EA354(void)
+void GetSecretBaseOwnerInteractionState(void)
{
- u16 secretBaseRecordId;
+ u16 secretBaseId;
u8 i;
- secretBaseRecordId = VarGet(VAR_CURRENT_SECRET_BASE);
+ secretBaseId = VarGet(VAR_CURRENT_SECRET_BASE);
if (!FlagGet(FLAG_DAILY_SECRET_BASE))
{
- for (i = 0; i < SECRET_BASES_COUNT; i ++)
- {
- gSaveBlock1Ptr->secretBases[i].sbr_field_1_5 = FALSE;
- }
+ for (i = 0; i < SECRET_BASES_COUNT; i++)
+ gSaveBlock1Ptr->secretBases[i].battledOwnerToday = FALSE;
+
FlagSet(FLAG_DAILY_SECRET_BASE);
}
- gSpecialVar_0x8004 = sub_80EA20C(secretBaseRecordId);
- gSpecialVar_Result = gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_1_5;
+ gSpecialVar_0x8004 = GetSecretBaseOwnerType(secretBaseId);
+ gSpecialVar_Result = gSaveBlock1Ptr->secretBases[secretBaseId].battledOwnerToday;
}
void SecretBasePerStepCallback(u8 taskId)
@@ -1181,318 +1155,286 @@ void SecretBasePerStepCallback(u8 taskId)
data = gTasks[taskId].data;
switch (data[1])
{
- case 0:
- if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
+ case 0:
+ if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
+ sInFriendSecretBase = TRUE;
+ else
+ sInFriendSecretBase = FALSE;
+
+ PlayerGetDestCoords(&data[2], &data[3]);
+ data[1] = 1;
+ break;
+ case 1:
+ PlayerGetDestCoords(&x, &y);
+ if (x != data[2] || y != data[3])
+ {
+ data[2] = x;
+ data[3] = y;
+ VarSet(VAR_SECRET_BASE_STEP_COUNTER, VarGet(VAR_SECRET_BASE_STEP_COUNTER) + 1);
+ behavior = MapGridGetMetatileBehaviorAt(x, y);
+ tileId = MapGridGetMetatileIdAt(x, y);
+ if (tileId == 0x234 || tileId == 0x23C)
{
- gInFriendSecretBase = TRUE;
+ if (sInFriendSecretBase == TRUE)
+ {
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x20);
+ }
}
- else
+ else if (tileId == 0x2b8 || tileId == 0x2b9 || tileId == 0x2ba || tileId == 0x2c0 || tileId == 0x2c1 || tileId == 0x2c2 || tileId == 0x2c8 || tileId == 0x2c9 || tileId == 0x2ca)
{
- gInFriendSecretBase = FALSE;
+ if (sInFriendSecretBase == TRUE)
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x01);
}
- PlayerGetDestCoords(&data[2], &data[3]);
- data[1] = 1;
- break;
- case 1:
- PlayerGetDestCoords(&x, &y);
- if (x != data[2] || y != data[3])
+ else if (tileId == 0x239 || tileId == 0x241 || tileId == 0x251 || tileId == 0x259)
{
- data[2] = x;
- data[3] = y;
- VarSet(VAR_SECRET_BASE_STEP_COUNTER, VarGet(VAR_SECRET_BASE_STEP_COUNTER) + 1);
- behavior = MapGridGetMetatileBehaviorAt(x, y);
- tileId = MapGridGetMetatileIdAt(x, y);
- if (tileId == 0x234 || tileId == 0x23C)
- {
- if (gInFriendSecretBase == TRUE)
- {
- VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x20);
- }
- }
- else if (tileId == 0x2b8 || tileId == 0x2b9 || tileId == 0x2ba || tileId == 0x2c0 || tileId == 0x2c1 || tileId == 0x2c2 || tileId == 0x2c8 || tileId == 0x2c9 || tileId == 0x2ca)
- {
- if (gInFriendSecretBase == TRUE)
- {
- VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x01);
- }
- }
- else if (tileId == 0x239 || tileId == 0x241 || tileId == 0x251 || tileId == 0x259)
- {
- if (gInFriendSecretBase == TRUE)
- {
- VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x04);
- }
- }
- else if ((behavior == 0x34 && tileId == 0x26d) || (behavior == 0x35 && MapGridGetMetatileIdAt(x, y) == 0x26a))
- {
- if (gInFriendSecretBase == TRUE)
- {
- VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x200);
- }
- }
- else if (behavior == 0xc1 && tileId == 0x23d)
- {
- if (gInFriendSecretBase == TRUE)
- {
- VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) ^ 0x1000);
- VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x2000);
- }
- }
- else if (behavior == 0x47 && tileId == 0x23e)
- {
- if (gInFriendSecretBase == TRUE)
- {
- VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x1000);
- VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) ^ 0x2000);
- }
- }
- else if (MetatileBehavior_IsSecretBaseGlitterMat(behavior) == TRUE)
- {
- if (gInFriendSecretBase == TRUE)
- {
- VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x80);
- }
- }
- else if (MetatileBehavior_IsSecretBaseBalloon(behavior) == TRUE)
- {
- PopSecretBaseBalloon(MapGridGetMetatileIdAt(x, y), x, y);
- if (gInFriendSecretBase == TRUE)
- {
- switch ((int)MapGridGetMetatileIdAt(x, y))
- {
- case 0x338:
- case 0x33c:
- case 0x340:
- VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x02);
- break;
- case 0x228:
- VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x100);
- break;
- }
- }
- }
- else if (MetatileBehavior_IsSecretBaseBreakableDoor(behavior) == TRUE)
+ if (sInFriendSecretBase == TRUE)
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x04);
+ }
+ else if ((behavior == 0x34 && tileId == 0x26d) || (behavior == 0x35 && MapGridGetMetatileIdAt(x, y) == 0x26a))
+ {
+ if (sInFriendSecretBase == TRUE)
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x200);
+ }
+ else if (behavior == 0xc1 && tileId == 0x23d)
+ {
+ if (sInFriendSecretBase == TRUE)
{
- if (gInFriendSecretBase == TRUE)
- {
- VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x400);
- }
- ShatterSecretBaseBreakableDoor(x, y);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) ^ 0x1000);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x2000);
}
- else if (MetatileBehavior_IsSecretBaseSoundMat(behavior) == TRUE){
- if (gInFriendSecretBase == TRUE) {
- VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x8000);
- }
- }
- else if (MetatileBehavior_IsSecretBaseJumpMat(behavior) == TRUE)
+ }
+ else if (behavior == 0x47 && tileId == 0x23e)
+ {
+ if (sInFriendSecretBase == TRUE)
{
- if (gInFriendSecretBase == TRUE)
- {
- VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x4000);
- }
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x1000);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) ^ 0x2000);
}
- else if (MetatileBehavior_IsSecretBaseSpinMat(behavior) == TRUE)
+ }
+ else if (MetatileBehavior_IsSecretBaseGlitterMat(behavior) == TRUE)
+ {
+ if (sInFriendSecretBase == TRUE)
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x80);
+ }
+ else if (MetatileBehavior_IsSecretBaseBalloon(behavior) == TRUE)
+ {
+ PopSecretBaseBalloon(MapGridGetMetatileIdAt(x, y), x, y);
+ if (sInFriendSecretBase == TRUE)
{
- if (gInFriendSecretBase == TRUE)
+ switch ((int)MapGridGetMetatileIdAt(x, y))
{
- VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x02);
+ case 0x338:
+ case 0x33c:
+ case 0x340:
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x02);
+ break;
+ case 0x228:
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x100);
+ break;
}
}
}
- break;
- case 2:
- if (!FieldEffectActiveListContains(data[4]))
+ else if (MetatileBehavior_IsSecretBaseBreakableDoor(behavior) == TRUE)
{
- data[1] = 1;
+ if (sInFriendSecretBase == TRUE)
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x400);
+
+ ShatterSecretBaseBreakableDoor(x, y);
}
- break;
+ else if (MetatileBehavior_IsSecretBaseSoundMat(behavior) == TRUE){
+ if (sInFriendSecretBase == TRUE)
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x8000);
+ }
+ else if (MetatileBehavior_IsSecretBaseJumpMat(behavior) == TRUE)
+ {
+ if (sInFriendSecretBase == TRUE)
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x4000);
+ }
+ else if (MetatileBehavior_IsSecretBaseSpinMat(behavior) == TRUE)
+ {
+ if (sInFriendSecretBase == TRUE)
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x02);
+ }
+ }
+ break;
+ case 2:
+ if (!FieldEffectActiveListContains(data[4]))
+ data[1] = 1;
+ break;
}
}
-void sub_80EA828(u8 secretBaseRecordId, struct SecretBaseRecord *base, u32 version, u32 language)
+static void SetSecretBaseDataAndLanguage(u8 secretBaseId, struct SecretBase *secretBase, u32 version, u32 language)
{
int stringLength;
u8 *name;
- gSaveBlock1Ptr->secretBases[secretBaseRecordId] = *base;
- gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_1_6 = 2;
+ gSaveBlock1Ptr->secretBases[secretBaseId] = *secretBase;
+ gSaveBlock1Ptr->secretBases[secretBaseId].registryStatus = 2;
if (version == VERSION_SAPPHIRE || version == VERSION_RUBY)
- {
- gSaveBlock1Ptr->secretBases[secretBaseRecordId].language = LANGUAGE_ENGLISH;
- }
+ gSaveBlock1Ptr->secretBases[secretBaseId].language = LANGUAGE_ENGLISH;
+
if (version == VERSION_EMERALD && language == LANGUAGE_JAPANESE)
{
- name = gSaveBlock1Ptr->secretBases[secretBaseRecordId].trainerName;
- for (stringLength = 0; stringLength < 7; stringLength ++)
+ name = gSaveBlock1Ptr->secretBases[secretBaseId].trainerName;
+ for (stringLength = 0; stringLength < 7; stringLength++)
{
if (name[stringLength] == EOS)
- {
break;
- }
}
+
if (stringLength > 5)
- {
- gSaveBlock1Ptr->secretBases[secretBaseRecordId].language = LANGUAGE_ENGLISH;
- }
+ gSaveBlock1Ptr->secretBases[secretBaseId].language = LANGUAGE_ENGLISH;
}
}
-bool8 sub_80EA8D4(struct SecretBaseRecord *sbr1, struct SecretBaseRecord *sbr2)
+static bool8 SecretBasesHaveSameTrainerId(struct SecretBase *secretBase1, struct SecretBase *secretBase2)
{
u8 i;
- for (i = 0; i < 4; i ++)
+ for (i = 0; i < 4; i++)
{
- if (sbr1->trainerId[i] != sbr2->trainerId[i])
- {
+ if (secretBase1->trainerId[i] != secretBase2->trainerId[i])
return FALSE;
- }
}
+
return TRUE;
}
-bool8 sub_80EA904(struct SecretBaseRecord *sbr1, struct SecretBaseRecord *sbr2)
+static bool8 SecretBasesHaveSameTrainerName(struct SecretBase *sbr1, struct SecretBase *sbr2)
{
u8 i;
-
for (i = 0; i < PLAYER_NAME_LENGTH && (sbr1->trainerName[i] != EOS || sbr2->trainerName[i] != EOS); i++)
{
if (sbr1->trainerName[i] != sbr2->trainerName[i])
- {
return FALSE;
- }
}
+
return TRUE;
}
-bool8 sub_80EA950(struct SecretBaseRecord *sbr1, struct SecretBaseRecord *sbr2)
+static bool8 SecretBasesBelongToSamePlayer(struct SecretBase *secretBase1, struct SecretBase *secretBase2)
{
- if (sbr1->gender == sbr2->gender && sub_80EA8D4(sbr1, sbr2) && sub_80EA904(sbr1, sbr2))
+ if (secretBase1->gender == secretBase2->gender
+ && SecretBasesHaveSameTrainerId(secretBase1, secretBase2)
+ && SecretBasesHaveSameTrainerName(secretBase1, secretBase2))
{
return TRUE;
}
+
return FALSE;
}
-s16 sub_80EA990(u8 secretBaseRecordId)
+static s16 GetSecretBaseIndexFromId(u8 secretBaseId)
{
s16 i;
-
- for (i = 0; i < SECRET_BASES_COUNT; i ++)
+ for (i = 0; i < SECRET_BASES_COUNT; i++)
{
- if (gSaveBlock1Ptr->secretBases[i].secretBaseId == secretBaseRecordId)
- {
+ if (gSaveBlock1Ptr->secretBases[i].secretBaseId == secretBaseId)
return i;
- }
}
+
return -1;
}
-u8 sub_80EA9D8(void)
+static u8 FindAvailableSecretBaseIndex(void)
{
s16 i;
-
- for (i = 1; i < SECRET_BASES_COUNT; i ++)
+ for (i = 1; i < SECRET_BASES_COUNT; i++)
{
if (gSaveBlock1Ptr->secretBases[i].secretBaseId == 0)
- {
return i;
- }
}
+
return 0;
}
-u8 sub_80EAA18(void)
+static u8 sub_80EAA18(void)
{
s16 i;
-
- for (i = 1; i < SECRET_BASES_COUNT; i ++)
+ for (i = 1; i < SECRET_BASES_COUNT; i++)
{
- if (gSaveBlock1Ptr->secretBases[i].sbr_field_1_6 == 0 && gSaveBlock1Ptr->secretBases[i].sbr_field_1_0 == 0)
- {
+ if (gSaveBlock1Ptr->secretBases[i].registryStatus == 0 && gSaveBlock1Ptr->secretBases[i].sbr_field_1_0 == 0)
return i;
- }
}
+
return 0;
}
-u8 sub_80EAA64(struct SecretBaseRecord *base, u32 version, u32 language)
+static u8 sub_80EAA64(struct SecretBase *secretBase, u32 version, u32 language)
{
- s16 secretBaseRecordId;
+ s16 index;
- if (base->secretBaseId == 0)
- {
+ if (!secretBase->secretBaseId)
return 0;
- }
- secretBaseRecordId = sub_80EA990(base->secretBaseId);
- if (secretBaseRecordId != 0)
+
+ index = GetSecretBaseIndexFromId(secretBase->secretBaseId);
+ if (index != 0)
{
- if (secretBaseRecordId != -1)
+ if (index != -1)
{
- if (gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_1_0 == 1)
- {
+ if (gSaveBlock1Ptr->secretBases[index].sbr_field_1_0 == 1)
return 0;
- }
- if (gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_1_6 != 2 || base->sbr_field_1_0 == 1)
+
+ if (gSaveBlock1Ptr->secretBases[index].registryStatus != 2 || secretBase->sbr_field_1_0 == 1)
{
- sub_80EA828(secretBaseRecordId, base, version, language);
- return secretBaseRecordId;
+ SetSecretBaseDataAndLanguage(index, secretBase, version, language);
+ return index;
}
}
else
{
- secretBaseRecordId = sub_80EA9D8();
- if (secretBaseRecordId != 0)
+ index = FindAvailableSecretBaseIndex();
+ if (index != 0)
{
- sub_80EA828(secretBaseRecordId, base, version, language);
- return secretBaseRecordId;
+ SetSecretBaseDataAndLanguage(index, secretBase, version, language);
+ return index;
}
- secretBaseRecordId = sub_80EAA18();
- if (secretBaseRecordId != 0)
+
+ index = sub_80EAA18();
+ if (index != 0)
{
- sub_80EA828(secretBaseRecordId, base, version, language);
- return secretBaseRecordId;
+ SetSecretBaseDataAndLanguage(index, secretBase, version, language);
+ return index;
}
}
}
return 0;
}
-void sub_80EAAF4(void)
+// Moves the registered secret bases to the beginning of the array, so that
+// they won't be forgotten during record mixing.
+static void SortSecretBasesByRegistryStatus(void)
{
u8 i;
u8 j;
- struct SecretBaseRecord base;
- struct SecretBaseRecord *secretBases;
+ struct SecretBase *secretBases;
secretBases = gSaveBlock1Ptr->secretBases;
- for (i = 1; i < 19; i ++)
+ for (i = 1; i < 19; i++)
{
- for (j = i + 1; j < SECRET_BASES_COUNT; j ++)
+ for (j = i + 1; j < SECRET_BASES_COUNT; j++)
{
- if ((secretBases[i].sbr_field_1_6 == 0 && secretBases[j].sbr_field_1_6 == 1) || (secretBases[i].sbr_field_1_6 == 2 && secretBases[j].sbr_field_1_6 != 2))
+ if ((secretBases[i].registryStatus == 0 && secretBases[j].registryStatus == 1) || (secretBases[i].registryStatus == 2 && secretBases[j].registryStatus != 2))
{
- base = secretBases[i];
+ struct SecretBase temp = secretBases[i];
secretBases[i] = secretBases[j];
- secretBases[j] = base;
+ secretBases[j] = temp;
}
}
}
}
-void sub_80EABA4(struct SecretBaseRecordMixer *mixer, u8 b)
+void sub_80EABA4(struct SecretBaseRecordMixer *mixer, u8 registryStatus)
{
u16 i;
-
- for (i = 1; i < SECRET_BASES_COUNT; i ++)
+ for (i = 1; i < SECRET_BASES_COUNT; i++)
{
- if (mixer->records[i].sbr_field_1_6 == b)
- {
- sub_80EAA64(&mixer->records[i], mixer->version, mixer->language);
- }
+ if (mixer->secretBases[i].registryStatus == registryStatus)
+ sub_80EAA64(&mixer->secretBases[i], mixer->version, mixer->language);
}
}
-bool8 DoesSecretBaseBelongToPlayer(struct SecretBaseRecord *secretBase)
+bool8 SecretBaseBelongsToPlayer(struct SecretBase *secretBase)
{
u8 i;
@@ -1503,13 +1445,13 @@ bool8 DoesSecretBaseBelongToPlayer(struct SecretBaseRecord *secretBase)
return FALSE;
// Check if the player's trainer Id matches the secret base's id.
- for (i = 0; i < 4; i ++)
+ for (i = 0; i < 4; i++)
{
if (secretBase->trainerId[i] != gSaveBlock2Ptr->playerTrainerId[i])
return FALSE;
}
- for (i = 0; i < PLAYER_NAME_LENGTH && (secretBase->trainerName[i] != EOS || gSaveBlock2Ptr->playerName[i] != EOS); i ++)
+ for (i = 0; i < PLAYER_NAME_LENGTH && (secretBase->trainerName[i] != EOS || gSaveBlock2Ptr->playerName[i] != EOS); i++)
{
if (secretBase->trainerName[i] != gSaveBlock2Ptr->playerName[i])
return FALSE;
@@ -1518,16 +1460,16 @@ bool8 DoesSecretBaseBelongToPlayer(struct SecretBaseRecord *secretBase)
return TRUE;
}
-void DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords(struct SecretBaseRecord *basesA, struct SecretBaseRecord *basesB, struct SecretBaseRecord *basesC)
+void DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords(struct SecretBase *basesA, struct SecretBase *basesB, struct SecretBase *basesC)
{
u8 i;
u8 sbFlags = 0x0;
- for (i = 0; i < SECRET_BASES_COUNT; i ++)
+ for (i = 0; i < SECRET_BASES_COUNT; i++)
{
if (!(sbFlags & 0x1)) // 001
{
- if (DoesSecretBaseBelongToPlayer(&basesA[i]) == TRUE)
+ if (SecretBaseBelongsToPlayer(&basesA[i]) == TRUE)
{
ClearSecretBase(&basesA[i]);
sbFlags |= 1;
@@ -1536,7 +1478,7 @@ void DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords(struct SecretBaseR
if (!(sbFlags & 0x2)) // 010
{
- if (DoesSecretBaseBelongToPlayer(&basesB[i]) == TRUE)
+ if (SecretBaseBelongsToPlayer(&basesB[i]) == TRUE)
{
ClearSecretBase(&basesB[i]);
sbFlags |= 2;
@@ -1545,7 +1487,7 @@ void DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords(struct SecretBaseR
if (!(sbFlags & 0x4)) // 100
{
- if (DoesSecretBaseBelongToPlayer(&basesC[i]) == TRUE)
+ if (SecretBaseBelongsToPlayer(&basesC[i]) == TRUE)
{
ClearSecretBase(&basesC[i]);
sbFlags |= 4;
@@ -1559,15 +1501,15 @@ void DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords(struct SecretBaseR
}
}
-bool8 sub_80EAD14(struct SecretBaseRecord *base, struct SecretBaseRecord *secretBases, u8 c)
+bool8 sub_80EAD14(struct SecretBase *secretBase, struct SecretBase *secretBases, u8 c)
{
u8 i;
- for (i = 0; i < SECRET_BASES_COUNT; i ++)
+ for (i = 0; i < SECRET_BASES_COUNT; i++)
{
if (secretBases[i].secretBaseId != 0)
{
- if (sub_80EA950(base, &secretBases[i]) == TRUE)
+ if (SecretBasesBelongToSamePlayer(secretBase, &secretBases[i]) == TRUE)
{
if (c == 0)
{
@@ -1575,15 +1517,14 @@ bool8 sub_80EAD14(struct SecretBaseRecord *base, struct SecretBaseRecord *secret
return FALSE;
}
- if (base->sbr_field_e > secretBases[i].sbr_field_e)
+ if (secretBase->numSecretBasesReceived > secretBases[i].numSecretBasesReceived)
{
ClearSecretBase(&secretBases[i]);
return FALSE;
}
- secretBases[i].sbr_field_1_0 = base->sbr_field_1_0;
-
- ClearSecretBase(base);
+ secretBases[i].sbr_field_1_0 = secretBase->sbr_field_1_0;
+ ClearSecretBase(secretBase);
return TRUE;
}
}
@@ -1592,15 +1533,15 @@ bool8 sub_80EAD14(struct SecretBaseRecord *base, struct SecretBaseRecord *secret
return FALSE;
}
-void sub_80EAD94(struct SecretBaseRecord *basesA, struct SecretBaseRecord *basesB, struct SecretBaseRecord *basesC, struct SecretBaseRecord *basesD)
+void sub_80EAD94(struct SecretBase *basesA, struct SecretBase *basesB, struct SecretBase *basesC, struct SecretBase *basesD)
{
u8 i;
- for (i = 1; i < SECRET_BASES_COUNT; i ++)
+ for (i = 1; i < SECRET_BASES_COUNT; i++)
{
if (basesA[i].secretBaseId)
{
- if (basesA[i].sbr_field_1_6 == 1)
+ if (basesA[i].registryStatus == 1)
{
basesA[i].sbr_field_1_0 = 1;
}
@@ -1613,32 +1554,32 @@ void sub_80EAD94(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
}
}
}
- for (i = 0; i < SECRET_BASES_COUNT; i ++)
+ for (i = 0; i < SECRET_BASES_COUNT; i++)
{
if (basesB[i].secretBaseId)
{
- basesB[i].sbr_field_1_5 = 0;
+ basesB[i].battledOwnerToday = 0;
if (!sub_80EAD14(&basesB[i], basesC, i))
{
sub_80EAD14(&basesB[i], basesD, i);
}
}
}
- for (i = 0; i < SECRET_BASES_COUNT; i ++)
+ for (i = 0; i < SECRET_BASES_COUNT; i++)
{
if (basesC[i].secretBaseId)
{
- basesC[i].sbr_field_1_5 = 0;
+ basesC[i].battledOwnerToday = 0;
sub_80EAD14(&basesC[i], basesD, i);
}
if (basesD[i].secretBaseId)
{
- basesD[i].sbr_field_1_5 = 0;
+ basesD[i].battledOwnerToday = 0;
}
}
}
-void sub_80EAE90(struct SecretBaseRecord *base, u32 version, u32 language)
+void sub_80EAE90(struct SecretBase *base, u32 version, u32 language)
{
if (base->sbr_field_1_0 == 1)
{
@@ -1651,22 +1592,22 @@ void sub_80EAEB4(struct SecretBaseRecordMixer *mixers)
{
u16 i;
- for (i = 0; i < SECRET_BASES_COUNT; i ++)
+ for (i = 0; i < SECRET_BASES_COUNT; i++)
{
- sub_80EAE90(&mixers[0].records[i], mixers[0].version, mixers[0].language);
- sub_80EAE90(&mixers[1].records[i], mixers[1].version, mixers[1].language);
- sub_80EAE90(&mixers[2].records[i], mixers[2].version, mixers[2].language);
+ sub_80EAE90(&mixers[0].secretBases[i], mixers[0].version, mixers[0].language);
+ sub_80EAE90(&mixers[1].secretBases[i], mixers[1].version, mixers[1].language);
+ sub_80EAE90(&mixers[2].secretBases[i], mixers[2].version, mixers[2].language);
}
}
void sub_80EAEF4(struct SecretBaseRecordMixer *mixers)
{
- DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords(mixers[0].records, mixers[1].records, mixers[2].records);
- sub_80EAD94(gSaveBlock1Ptr->secretBases, mixers[0].records, mixers[1].records, mixers[2].records);
+ DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords(mixers[0].secretBases, mixers[1].secretBases, mixers[2].secretBases);
+ sub_80EAD94(gSaveBlock1Ptr->secretBases, mixers[0].secretBases, mixers[1].secretBases, mixers[2].secretBases);
sub_80EAEB4(mixers);
- sub_80EAA64(mixers[0].records, mixers[0].version, mixers[0].language);
- sub_80EAA64(mixers[1].records, mixers[1].version, mixers[1].language);
- sub_80EAA64(mixers[2].records, mixers[2].version, mixers[2].language);
+ sub_80EAA64(mixers[0].secretBases, mixers[0].version, mixers[0].language);
+ sub_80EAA64(mixers[1].secretBases, mixers[1].version, mixers[1].language);
+ sub_80EAA64(mixers[2].secretBases, mixers[2].version, mixers[2].language);
sub_80EABA4(&mixers[0], 1);
sub_80EABA4(&mixers[1], 1);
sub_80EABA4(&mixers[2], 1);
@@ -1675,7 +1616,7 @@ void sub_80EAEF4(struct SecretBaseRecordMixer *mixers)
sub_80EABA4(&mixers[2], 0);
}
-void ReceiveSecretBasesData(void *records, size_t recordSize, u8 linkIdx)
+void ReceiveSecretBasesData(void *secretBases, size_t recordSize, u8 linkIdx)
{
struct SecretBaseRecordMixer mixers[3];
u16 i;
@@ -1684,95 +1625,97 @@ void ReceiveSecretBasesData(void *records, size_t recordSize, u8 linkIdx)
{
switch (GetLinkPlayerCount())
{
- case 2:
- memset(records + 2 * recordSize, 0, recordSize);
- memset(records + 3 * recordSize, 0, recordSize);
- break;
- case 3:
- memset(records + 3 * recordSize, 0, recordSize);
- break;
+ case 2:
+ memset(secretBases + 2 * recordSize, 0, recordSize);
+ memset(secretBases + 3 * recordSize, 0, recordSize);
+ break;
+ case 3:
+ memset(secretBases + 3 * recordSize, 0, recordSize);
+ break;
}
+
switch (linkIdx)
{
- case 0:
- mixers[0].records = records + 1 * recordSize;
- mixers[0].version = gLinkPlayers[1].version & 0xFF;
- mixers[0].language = gLinkPlayers[1].language;
- mixers[1].records = records + 2 * recordSize;
- mixers[1].version = gLinkPlayers[2].version & 0xFF;
- mixers[1].language = gLinkPlayers[2].language;
- mixers[2].records = records + 3 * recordSize;
- mixers[2].version = gLinkPlayers[3].version & 0xFF;
- mixers[2].language = gLinkPlayers[3].language;
- break;
- case 1:
- mixers[0].records = records + 2 * recordSize;
- mixers[0].version = gLinkPlayers[2].version & 0xFF;
- mixers[0].language = gLinkPlayers[2].language;
- mixers[1].records = records + 3 * recordSize;
- mixers[1].version = gLinkPlayers[3].version & 0xFF;
- mixers[1].language = gLinkPlayers[3].language;
- mixers[2].records = records + 0 * recordSize;
- mixers[2].version = gLinkPlayers[0].version & 0xFF;
- mixers[2].language = gLinkPlayers[0].language;
- break;
- case 2:
- mixers[0].records = records + 3 * recordSize;
- mixers[0].version = gLinkPlayers[3].version & 0xFF;
- mixers[0].language = gLinkPlayers[3].language;
- mixers[1].records = records + 0 * recordSize;
- mixers[1].version = gLinkPlayers[0].version & 0xFF;
- mixers[1].language = gLinkPlayers[0].language;
- mixers[2].records = records + 1 * recordSize;
- mixers[2].version = gLinkPlayers[1].version & 0xFF;
- mixers[2].language = gLinkPlayers[1].language;
- break;
- case 3:
- mixers[0].records = records + 0 * recordSize;
- mixers[0].version = gLinkPlayers[0].version & 0xFF;
- mixers[0].language = gLinkPlayers[0].language;
- mixers[1].records = records + 1 * recordSize;
- mixers[1].version = gLinkPlayers[1].version & 0xFF;
- mixers[1].language = gLinkPlayers[1].language;
- mixers[2].records = records + 2 * recordSize;
- mixers[2].version = gLinkPlayers[2].version & 0xFF;
- mixers[2].language = gLinkPlayers[2].language;
- break;
+ case 0:
+ mixers[0].secretBases = secretBases + 1 * recordSize;
+ mixers[0].version = gLinkPlayers[1].version & 0xFF;
+ mixers[0].language = gLinkPlayers[1].language;
+ mixers[1].secretBases = secretBases + 2 * recordSize;
+ mixers[1].version = gLinkPlayers[2].version & 0xFF;
+ mixers[1].language = gLinkPlayers[2].language;
+ mixers[2].secretBases = secretBases + 3 * recordSize;
+ mixers[2].version = gLinkPlayers[3].version & 0xFF;
+ mixers[2].language = gLinkPlayers[3].language;
+ break;
+ case 1:
+ mixers[0].secretBases = secretBases + 2 * recordSize;
+ mixers[0].version = gLinkPlayers[2].version & 0xFF;
+ mixers[0].language = gLinkPlayers[2].language;
+ mixers[1].secretBases = secretBases + 3 * recordSize;
+ mixers[1].version = gLinkPlayers[3].version & 0xFF;
+ mixers[1].language = gLinkPlayers[3].language;
+ mixers[2].secretBases = secretBases + 0 * recordSize;
+ mixers[2].version = gLinkPlayers[0].version & 0xFF;
+ mixers[2].language = gLinkPlayers[0].language;
+ break;
+ case 2:
+ mixers[0].secretBases = secretBases + 3 * recordSize;
+ mixers[0].version = gLinkPlayers[3].version & 0xFF;
+ mixers[0].language = gLinkPlayers[3].language;
+ mixers[1].secretBases = secretBases + 0 * recordSize;
+ mixers[1].version = gLinkPlayers[0].version & 0xFF;
+ mixers[1].language = gLinkPlayers[0].language;
+ mixers[2].secretBases = secretBases + 1 * recordSize;
+ mixers[2].version = gLinkPlayers[1].version & 0xFF;
+ mixers[2].language = gLinkPlayers[1].language;
+ break;
+ case 3:
+ mixers[0].secretBases = secretBases + 0 * recordSize;
+ mixers[0].version = gLinkPlayers[0].version & 0xFF;
+ mixers[0].language = gLinkPlayers[0].language;
+ mixers[1].secretBases = secretBases + 1 * recordSize;
+ mixers[1].version = gLinkPlayers[1].version & 0xFF;
+ mixers[1].language = gLinkPlayers[1].language;
+ mixers[2].secretBases = secretBases + 2 * recordSize;
+ mixers[2].version = gLinkPlayers[2].version & 0xFF;
+ mixers[2].language = gLinkPlayers[2].language;
+ break;
}
+
sub_80EAEF4(mixers);
- for (i = 1; i < SECRET_BASES_COUNT; i ++)
+ for (i = 1; i < SECRET_BASES_COUNT; i++)
{
if (gSaveBlock1Ptr->secretBases[i].sbr_field_1_0 == 1)
{
- gSaveBlock1Ptr->secretBases[i].sbr_field_1_6 = 1;
+ gSaveBlock1Ptr->secretBases[i].registryStatus = 1;
gSaveBlock1Ptr->secretBases[i].sbr_field_1_0 = 0;
}
}
- sub_80EAAF4();
- for (i = 1; i < SECRET_BASES_COUNT; i ++)
+
+ SortSecretBasesByRegistryStatus();
+ for (i = 1; i < SECRET_BASES_COUNT; i++)
{
- if (gSaveBlock1Ptr->secretBases[i].sbr_field_1_6 == 2)
+ if (gSaveBlock1Ptr->secretBases[i].registryStatus == 2)
{
- gSaveBlock1Ptr->secretBases[i].sbr_field_1_6 = 0;
+ gSaveBlock1Ptr->secretBases[i].registryStatus = 0;
}
}
- if (gSaveBlock1Ptr->secretBases[0].secretBaseId != 0 && gSaveBlock1Ptr->secretBases[0].sbr_field_e != 0xFFFF)
+
+ if (gSaveBlock1Ptr->secretBases[0].secretBaseId != 0
+ && gSaveBlock1Ptr->secretBases[0].numSecretBasesReceived != 0xFFFF)
{
- gSaveBlock1Ptr->secretBases[0].sbr_field_e ++;
+ gSaveBlock1Ptr->secretBases[0].numSecretBasesReceived++;
}
}
}
-void sub_80EB18C(struct SecretBaseRecord *bases)
+void ClearJapaneseSecretBases(struct SecretBase *bases)
{
u32 i;
-
- for (i = 0; i < SECRET_BASES_COUNT; i ++)
+ for (i = 0; i < SECRET_BASES_COUNT; i++)
{
if (bases[i].language == LANGUAGE_JAPANESE)
- {
ClearSecretBase(&bases[i]);
- }
}
}
@@ -1783,22 +1726,19 @@ void sub_80EB1AC(void)
VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, 0);
VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, 0);
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
- {
VarSet(VAR_SECRET_BASE_IS_NOT_LOCAL, TRUE);
- }
else
- {
VarSet(VAR_SECRET_BASE_IS_NOT_LOCAL, FALSE);
- }
- gInFriendSecretBase = FALSE;
+
+ sInFriendSecretBase = FALSE;
}
void sub_80EB218(void)
{
- if (VarGet(VAR_SECRET_BASE_IS_NOT_LOCAL) && gInFriendSecretBase == TRUE && !CurrentMapIsSecretBase())
+ if (VarGet(VAR_SECRET_BASE_IS_NOT_LOCAL) && sInFriendSecretBase == TRUE && !CurMapIsSecretBase())
{
VarSet(VAR_SECRET_BASE_IS_NOT_LOCAL, FALSE);
- gInFriendSecretBase = FALSE;
+ sInFriendSecretBase = FALSE;
sub_80EEA70();
VarSet(VAR_SECRET_BASE_STEP_COUNTER, 0);
VarSet(VAR_SECRET_BASE_LAST_ITEM_USED, 0);
@@ -1811,17 +1751,13 @@ void sub_80EB218(void)
void sub_80EB290(void)
{
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
- {
VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x800);
- }
}
void sub_80EB2C8(void)
{
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
- {
VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x400);
- }
}
void sub_80EB300(void)
@@ -1864,10 +1800,9 @@ void sub_80EB438(void)
}
}
-void sub_80EB498(void)
+void SetSecretBaseSecretsTvFlags_Poster(void)
{
- s16 x;
- s16 y;
+ s16 x, y;
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
switch (MapGridGetMetatileIdAt(x, y))
@@ -1888,27 +1823,23 @@ void sub_80EB498(void)
case 0x333:
case 0x334:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
- {
VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x4000);
- }
break;
}
}
-void sub_80EB56C(void)
+void SetSecretBaseSecretsTvFlags_MiscFurnature(void)
{
- s16 x;
- s16 y;
+ s16 x, y;
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
switch (MapGridGetMetatileIdAt(x, y))
{
case 0x28a:
case 0x28b:
+ // Bird Statue
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
- {
VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x40);
- }
break;
case 0x2d8:
case 0x2d9:
@@ -1928,32 +1859,28 @@ void sub_80EB56C(void)
case 0x2f9:
case 0x2fa:
case 0x2fb:
+ // Plants
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
- {
VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x8);
- }
break;
case 0x22c:
case 0x233:
+ // Fence
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
- {
VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x40);
- }
break;
case 0x288:
case 0x289:
+ // Tire
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
- {
VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x100);
- }
break;
case 0x22d:
case 0x22e:
case 0x22f:
+ // Bricks
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
- {
VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x10);
- }
break;
case 0x287:
case 0x28f:
@@ -1978,18 +1905,16 @@ void sub_80EB56C(void)
case 0x2cd:
case 0x2ce:
case 0x2cf:
+ // Tables
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
- {
VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x8);
- }
break;
}
}
-void sub_80EB9E0(void)
+void SetSecretBaseSecretsTvFlags_LargeDecorationSpot(void)
{
- s16 x;
- s16 y;
+ s16 x, y;
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
switch (MapGridGetMetatileIdAt(x, y))
@@ -2006,17 +1931,14 @@ void sub_80EB9E0(void)
case 0x2c3:
case 0x2c6:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
- {
VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x8);
- }
break;
}
}
-void sub_80EBB28(void)
+void SetSecretBaseSecretsTvFlags_SmallDecorationSpot(void)
{
- s16 x;
- s16 y;
+ s16 x, y;
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
switch (MapGridGetMetatileIdAt(x, y))
@@ -2044,42 +1966,34 @@ void sub_80EBB28(void)
case 0x2c5:
case 0x2c7:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
- {
VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x8);
- }
break;
case 0x280:
case 0x281:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
- {
VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x100);
- }
break;
case 0x225:
case 0x226:
case 0x227:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
- {
VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x10);
- }
break;
}
}
-void sub_80EBE7C(void)
+void SetSecretBaseSecretsTvFlags_SandOrnament(void)
{
- s16 x;
- s16 y;
+ s16 x, y;
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
switch ((int)MapGridGetMetatileIdAt(x, y))
{
case 0x28d:
case 0x28e:
+ // Sand Ornament
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
- {
VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x4);
- }
break;
}
}
diff --git a/src/shop.c b/src/shop.c
index 32caafb64..1c6d7cf2e 100755
--- a/src/shop.c
+++ b/src/shop.c
@@ -1,6 +1,6 @@
#include "global.h"
#include "bg.h"
-#include "data2.h"
+#include "data.h"
#include "decompress.h"
#include "decoration.h"
#include "decoration_inventory.h"
@@ -33,6 +33,7 @@
#include "strings.h"
#include "text_window.h"
#include "tv.h"
+#include "constants/decorations.h"
#include "constants/items.h"
#include "constants/metatile_behaviors.h"
#include "constants/rgb.h"
@@ -276,7 +277,7 @@ static u8 CreateShopMenu(u8 martType)
ScriptContext2_Enable();
gMartInfo.martType = martType;
- if (martType == MART_TYPE_0)
+ if (martType == MART_TYPE_NORMAL)
{
struct WindowTemplate winTemplate;
winTemplate = sShopMenuWindowTemplates[0];
@@ -396,7 +397,7 @@ static void Task_ReturnToShopMenu(u8 taskId)
{
if (IsWeatherNotFadingIn() == TRUE)
{
- if (gMartInfo.martType == MART_TYPE_2)
+ if (gMartInfo.martType == MART_TYPE_DECOR2)
DisplayItemMessageOnField(taskId, gText_CanIHelpWithAnythingElse, ShowShopMenuAfterExitingBuyOrSellMenu);
else
DisplayItemMessageOnField(taskId, gText_AnythingElseICanHelp, ShowShopMenuAfterExitingBuyOrSellMenu);
@@ -511,7 +512,7 @@ static void BuyMenuBuildListMenuTemplate(void)
static void BuyMenuSetListEntry(struct ListMenuItem *menuItem, u16 item, u8 *name)
{
- if (gMartInfo.martType == MART_TYPE_0)
+ if (gMartInfo.martType == MART_TYPE_NORMAL)
CopyItemName(item, name);
else
StringCopy(name, gDecorations[item].name);
@@ -535,7 +536,7 @@ static void BuyMenuPrintItemDescriptionAndShowItemIcon(int item, bool8 onInit, s
gShopDataPtr->iconSlot ^= 1;
if (item != -2)
{
- if (gMartInfo.martType == MART_TYPE_0)
+ if (gMartInfo.martType == MART_TYPE_NORMAL)
description = ItemId_GetDescription(item);
else
description = gDecorations[item].description;
@@ -555,7 +556,7 @@ static void BuyMenuPrintPriceInList(u8 windowId, int item, u8 y)
if (item != -2)
{
- if (gMartInfo.martType == MART_TYPE_0)
+ if (gMartInfo.martType == MART_TYPE_NORMAL)
{
ConvertIntToDecimalStringN(
gStringVar1,
@@ -616,7 +617,7 @@ static void BuyMenuAddItemIcon(u16 item, u8 iconSlot)
if (*spriteIdPtr != 0xFF)
return;
- if (gMartInfo.martType == MART_TYPE_0 || item == 0xFFFF)
+ if (gMartInfo.martType == MART_TYPE_NORMAL || item == 0xFFFF)
{
spriteId = AddItemIconSprite(iconSlot + 2110, iconSlot + 2110, item);
if (spriteId != MAX_SPRITES)
@@ -929,7 +930,7 @@ static void Task_BuyMenu(u8 taskId)
BuyMenuRemoveScrollIndicatorArrows();
BuyMenuPrintCursor(tListTaskId, 2);
- if (gMartInfo.martType == MART_TYPE_0)
+ if (gMartInfo.martType == MART_TYPE_NORMAL)
{
gShopDataPtr->totalCost = (ItemId_GetPrice(itemId) >> GetPriceReduction(1));
}
@@ -944,7 +945,7 @@ static void Task_BuyMenu(u8 taskId)
}
else
{
- if (gMartInfo.martType == MART_TYPE_0)
+ if (gMartInfo.martType == MART_TYPE_NORMAL)
{
CopyItemName(itemId, gStringVar1);
if (ItemId_GetPocket(itemId) == POCKET_TM_HM)
@@ -962,7 +963,7 @@ static void Task_BuyMenu(u8 taskId)
StringCopy(gStringVar1, gDecorations[itemId].name);
ConvertIntToDecimalStringN(gStringVar2, gShopDataPtr->totalCost, STR_CONV_MODE_LEFT_ALIGN, 6);
- if (gMartInfo.martType == MART_TYPE_1)
+ if (gMartInfo.martType == MART_TYPE_DECOR)
StringExpandPlaceholders(gStringVar4, gText_Var1IsItThatllBeVar2);
else
StringExpandPlaceholders(gStringVar4, gText_YouWantedVar1ThatllBeVar2);
@@ -1051,7 +1052,7 @@ static void BuyMenuTryMakePurchase(u8 taskId)
PutWindowTilemap(1);
- if (gMartInfo.martType == MART_TYPE_0)
+ if (gMartInfo.martType == MART_TYPE_NORMAL)
{
if (AddBagItem(tItemId, tItemCount) == TRUE)
{
@@ -1067,7 +1068,7 @@ static void BuyMenuTryMakePurchase(u8 taskId)
{
if (DecorationAdd(tItemId))
{
- if (gMartInfo.martType == MART_TYPE_1)
+ if (gMartInfo.martType == MART_TYPE_DECOR)
{
BuyMenuDisplayMessage(taskId, gText_ThankYouIllSendItHome, BuyMenuSubtractMoney);
}
@@ -1090,7 +1091,7 @@ static void BuyMenuSubtractMoney(u8 taskId)
PlaySE(SE_REGI);
PrintMoneyAmountInMoneyBox(0, GetMoney(&gSaveBlock1Ptr->money), 0);
- if (gMartInfo.martType == MART_TYPE_0)
+ if (gMartInfo.martType == MART_TYPE_NORMAL)
{
gTasks[taskId].func = Task_ReturnToItemListAfterItemPurchase;
}
@@ -1154,7 +1155,7 @@ static void BuyMenuPrintItemQuantityAndPrice(u8 taskId)
static void ExitBuyMenu(u8 taskId)
{
gFieldCallback = MapPostLoadHook_ReturnToShopMenu;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
gTasks[taskId].func = Task_ExitBuyMenu;
}
@@ -1211,7 +1212,7 @@ static void RecordItemPurchase(u8 taskId)
void CreatePokemartMenu(const u16 *itemsForSale)
{
- CreateShopMenu(MART_TYPE_0);
+ CreateShopMenu(MART_TYPE_NORMAL);
SetShopItemsForSale(itemsForSale);
ClearItemPurchases();
SetShopMenuCallback(EnableBothScriptContexts);
@@ -1219,14 +1220,14 @@ void CreatePokemartMenu(const u16 *itemsForSale)
void CreateDecorationShop1Menu(const u16 *itemsForSale)
{
- CreateShopMenu(MART_TYPE_1);
+ CreateShopMenu(MART_TYPE_DECOR);
SetShopItemsForSale(itemsForSale);
SetShopMenuCallback(EnableBothScriptContexts);
}
void CreateDecorationShop2Menu(const u16 *itemsForSale)
{
- CreateShopMenu(MART_TYPE_2);
+ CreateShopMenu(MART_TYPE_DECOR2);
SetShopItemsForSale(itemsForSale);
SetShopMenuCallback(EnableBothScriptContexts);
-}
+} \ No newline at end of file
diff --git a/src/slot_machine.c b/src/slot_machine.c
index a2e1f1554..b853daa39 100644
--- a/src/slot_machine.c
+++ b/src/slot_machine.c
@@ -658,7 +658,7 @@ static void Task_FadeToSlotMachine(u8 taskId)
switch (gTasks[taskId].tState)
{
case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].tState++;
break;
case 1:
@@ -718,7 +718,7 @@ static void CB2_SlotMachineSetup(void)
gMain.state++;
break;
case 7:
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, RGB_BLACK);
ShowBg(0);
ShowBg(1);
ShowBg(2);
diff --git a/src/smokescreen.c b/src/smokescreen.c
index d9780bbb6..61e011451 100644
--- a/src/smokescreen.c
+++ b/src/smokescreen.c
@@ -1,11 +1,15 @@
#include "global.h"
-#include "data2.h"
+#include "data.h"
#include "decompress.h"
#include "sprite.h"
#include "util.h"
static void sub_8075370(struct Sprite *);
+extern const struct CompressedSpriteSheet gUnknown_0831C620;
+extern const struct CompressedSpritePalette gUnknown_0831C628;
+extern const struct SpriteTemplate gUnknown_0831C688;
+
u8 sub_807521C(s16 x, s16 y, u8 a3)
{
u8 mainSpriteId;
diff --git a/src/start_menu.c b/src/start_menu.c
index 5b527e15e..fcde176ac 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -45,6 +45,7 @@
#include "constants/songs.h"
#include "rom_8011DC0.h"
#include "union_room.h"
+#include "constants/rgb.h"
// Menu actions
enum
@@ -1237,7 +1238,7 @@ static void sub_80A0550(u8 taskId)
DrawTextBorderOuter(0, 8, 14);
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
if (gWirelessCommType != 0 && InUnionRoom())
{
@@ -1270,7 +1271,7 @@ static void sub_80A0550(u8 taskId)
}
break;
case 3:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
*step = 4;
break;
case 4:
diff --git a/src/starter_choose.c b/src/starter_choose.c
index c3d636175..886daa45a 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -1,6 +1,6 @@
#include "global.h"
#include "bg.h"
-#include "data2.h"
+#include "data.h"
#include "decompress.h"
#include "event_data.h"
#include "gpu_regs.h"
@@ -22,6 +22,7 @@
#include "window.h"
#include "constants/songs.h"
#include "constants/species.h"
+#include "constants/rgb.h"
#define STARTER_MON_COUNT 3
@@ -429,7 +430,7 @@ void CB2_ChooseStarter(void)
LoadCompressedSpriteSheet(&gUnknown_085B1ED8[0]);
LoadCompressedSpriteSheet(&gUnknown_085B1EE8[0]);
LoadSpritePalettes(gUnknown_085B1EF8);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
EnableInterrupts(DISPSTAT_VBLANK);
SetVBlankCallback(VblankCB_StarterChoose);
diff --git a/src/strings.c b/src/strings.c
index 577d26f5c..793256edb 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -162,8 +162,8 @@ const u8 gText_DexSearchTypeNone[] = _("NONE");
const u8 gText_SelectorArrow[] = _("â–¶");
const u8 gUnknown_085E8B3C[] = _(" ");
const u8 gText_WelcomeToHOF[] = _("Welcome to the HALL OF FAME!");
-const u8 gUnknown_085E8B5B[] = _("Spotted POKéMON: {STR_VAR_1}!\nOwned POKéMON: {STR_VAR_2}!\pPROF. BIRCH's POKéDEX rating!\pPROF. BIRCH: Let's see…\p");
-const u8 gUnknown_085E8BBA[] = _("SAVING…\nDON'T TURN OFF THE POWER.");
+const u8 gText_HOFDexRating[] = _("Spotted POKéMON: {STR_VAR_1}!\nOwned POKéMON: {STR_VAR_2}!\pPROF. BIRCH's POKéDEX rating!\pPROF. BIRCH: Let's see…\p");
+const u8 gText_HOFDexSaving[] = _("SAVING…\nDON'T TURN OFF THE POWER.");
const u8 gText_HOFCorrupted[] = _("The HALL OF FAME data is corrupted.");
const u8 gText_HOFNumber[] = _("HALL OF FAME No. {STR_VAR_1}");
const u8 gText_LeagueChamp[] = _("LEAGUE CHAMPION!\nCONGRATULATIONS!");
@@ -529,7 +529,7 @@ const u8 gText_ApostropheSBase[] = _("'s BASE");
const u8 gText_OkayToDeleteFromRegistry[] = _("Is it okay to delete {STR_VAR_1}\nfrom the REGISTRY?");
const u8 gText_RegisteredDataDeleted[] = _("The registered data was deleted.{PAUSE_UNTIL_PRESS}");
const u8 gText_NoRegistry[] = _("There is no REGISTRY.{PAUSE_UNTIL_PRESS}");
-const u8 gUnknown_085EA79D[] = _("DEL REGIST.");
+const u8 gText_DelRegist[] = _("DEL REGIST.");
const u8 gUnknown_085EA7A9[] = _("{STR_VAR_3}{STR_VAR_1}/{STR_VAR_2}");
const u8 gText_Decorate[] = _("DECORATE");
const u8 gText_PutAway[] = _("PUT AWAY");
@@ -962,21 +962,21 @@ const u8 gUnknown_085EBE7D[] = _("DETAIL");
const u8 gUnknown_085EBE84[] = _("CALL");
const u8 gUnknown_085EBE89[] = _("EXIT");
const u8 gUnknown_085EBE8E[] = _("Can't call opponent here.");
-const u8 gUnknown_085EBEA8[] = _("STRATEGY");
-const u8 gUnknown_085EBEB1[] = _("TRAINER'S POKéMON");
-const u8 gUnknown_085EBEC3[] = _("SELF-INTRODUCTION");
-const u8 gText_Navgear_ClearButtonList[] = _("{CLEAR 0x80}");
-const u8 gText_NavgearMap_ZoomedOutButtons[] = _("{A_BUTTON}ZOOM {B_BUTTON}CANCEL");
-const u8 gText_NavgearMap_ZoomedInButtons[] = _("{A_BUTTON}FULL {B_BUTTON}CANCEL");
-const u8 gText_NavgearCondition_MonListButtons[] = _("{A_BUTTON}CONDITION {B_BUTTON}CANCEL");
-const u8 gText_NavgearCondition_MonStatusButtons[] = _("{A_BUTTON}MARKINGS {B_BUTTON}CANCEL");
-const u8 gText_NavgearCondition_MarkingButtons[] = _("{A_BUTTON}SELECT MARK {B_BUTTON}CANCEL");
-const u8 gText_NavgearMatchCall_TrainerListButtons[] = _("{A_BUTTON}MENU {B_BUTTON}CANCEL");
-const u8 gText_NavgearMatchCall_CallMenuButtons[] = _("{A_BUTTON}OK {B_BUTTON}CANCEL");
-const u8 gText_NavgearMatchCall_CheckTrainerButtons[] = _("{B_BUTTON}CANCEL");
-const u8 gText_NavgearRibbons_MonListButtons[] = _("{A_BUTTON}RIBBONS {B_BUTTON}CANCEL");
-const u8 gText_NavgearRibbons_RibbonListButtons[] = _("{A_BUTTON}CHECK {B_BUTTON}CANCEL");
-const u8 gText_NavgearRibbons_RibbonCheckButtons[] = _("{B_BUTTON}CANCEL");
+const u8 gText_PokenavMatchCall_Strategy[] = _("STRATEGY");
+const u8 gText_PokenavMatchCall_TrainerPokemon[] = _("TRAINER'S POKéMON");
+const u8 gText_PokenavMatchCall_SelfIntroduction[] = _("SELF-INTRODUCTION");
+const u8 gText_Pokenav_ClearButtonList[] = _("{CLEAR 0x80}");
+const u8 gText_PokenavMap_ZoomedOutButtons[] = _("{A_BUTTON}ZOOM {B_BUTTON}CANCEL");
+const u8 gText_PokenavMap_ZoomedInButtons[] = _("{A_BUTTON}FULL {B_BUTTON}CANCEL");
+const u8 gText_PokenavCondition_MonListButtons[] = _("{A_BUTTON}CONDITION {B_BUTTON}CANCEL");
+const u8 gText_PokenavCondition_MonStatusButtons[] = _("{A_BUTTON}MARKINGS {B_BUTTON}CANCEL");
+const u8 gText_PokenavCondition_MarkingButtons[] = _("{A_BUTTON}SELECT MARK {B_BUTTON}CANCEL");
+const u8 gText_PokenavMatchCall_TrainerListButtons[] = _("{A_BUTTON}MENU {B_BUTTON}CANCEL");
+const u8 gText_PokenavMatchCall_CallMenuButtons[] = _("{A_BUTTON}OK {B_BUTTON}CANCEL");
+const u8 gText_PokenavMatchCall_CheckTrainerButtons[] = _("{B_BUTTON}CANCEL");
+const u8 gText_PokenavRibbons_MonListButtons[] = _("{A_BUTTON}RIBBONS {B_BUTTON}CANCEL");
+const u8 gText_PokenavRibbons_RibbonListButtons[] = _("{A_BUTTON}CHECK {B_BUTTON}CANCEL");
+const u8 gText_PokenavRibbons_RibbonCheckButtons[] = _("{B_BUTTON}CANCEL");
const u8 gText_NatureSlash[] = _("NATURE/");
const u8 gText_TrainerCloseBy[] = _("That TRAINER is close by.\nTalk to the TRAINER in person!");
const u8 gText_InParty[] = _("IN PARTY");
diff --git a/src/title_screen.c b/src/title_screen.c
index b9ef53000..8310ef811 100644
--- a/src/title_screen.c
+++ b/src/title_screen.c
@@ -575,7 +575,7 @@ void CB2_InitTitleScreen(void)
break;
}
case 3:
- BeginNormalPaletteFade(0xFFFFFFFF, 1, 0x10, 0, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, 1, 0x10, 0, RGB_WHITEALPHA);
SetVBlankCallback(VBlankCB);
gMain.state = 4;
break;
@@ -725,7 +725,7 @@ static void Task_TitleScreenPhase3(u8 taskId)
if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & START_BUTTON))
{
FadeOutBGM(4);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_WHITEALPHA);
SetMainCallback2(CB2_GoToMainMenu);
}
else if ((gMain.heldKeys & CLEAR_SAVE_BUTTON_COMBO) == CLEAR_SAVE_BUTTON_COMBO)
@@ -736,13 +736,13 @@ static void Task_TitleScreenPhase3(u8 taskId)
&& CanResetRTC() == TRUE)
{
FadeOutBGM(4);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
SetMainCallback2(CB2_GoToResetRtcScreen);
}
else if ((gMain.heldKeys & BERRY_UPDATE_BUTTON_COMBO) == BERRY_UPDATE_BUTTON_COMBO)
{
FadeOutBGM(4);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
SetMainCallback2(CB2_GoToBerryFixScreen);
}
else
@@ -759,7 +759,7 @@ static void Task_TitleScreenPhase3(u8 taskId)
UpdateLegendaryMarkingColor(gTasks[taskId].tCounter);
if ((gMPlayInfo_BGM.status & 0xFFFF) == 0)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0xFFFF);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_WHITEALPHA);
SetMainCallback2(CB2_GoToCopyrightScreen);
}
}
diff --git a/src/trade.c b/src/trade.c
index 80c74d2cd..d97325174 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -4,7 +4,7 @@
#include "battle_interface.h"
#include "bg.h"
#include "cable_club.h"
-#include "data2.h"
+#include "data.h"
#include "daycare.h"
#include "decompress.h"
#include "event_data.h"
@@ -1384,10 +1384,6 @@ static const u8 gUnknown_08339090[][2] =
{0, 0}
};
-// external to this file
-extern const struct CompressedSpriteSheet gMonFrontPicTable[];
-extern const struct MonCoords gMonFrontPicCoords[];
-
static bool8 sub_8077170(const void *a0, u32 a1)
{
if (gUnknown_02022C2C == 29)
@@ -1626,7 +1622,7 @@ static void sub_80773D0(void)
if (sub_8010500())
{
gMain.state++;
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0);
}
}
@@ -1820,7 +1816,7 @@ static void sub_8077B74(void)
case 5:
if (gWirelessCommType)
{
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0);
}
gMain.state++;
@@ -4246,7 +4242,7 @@ void sub_807AE50(void)
{
if (gWirelessCommType)
{
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0);
}
SetMainCallback2(sub_807EA2C);
diff --git a/src/trader.c b/src/trader.c
index 97bc4626f..dcf1fa076 100644
--- a/src/trader.c
+++ b/src/trader.c
@@ -142,7 +142,7 @@ void ScrSpecial_DoesPlayerHaveNoDecorations(void)
for (i = 0; i < 8; i++)
{
- if (CountDecorationCategoryN(i))
+ if (GetNumOwnedDecorationsInCategory(i))
{
gSpecialVar_Result = FALSE;
return;
@@ -157,21 +157,21 @@ void ScrSpecial_IsDecorationFull(void)
if (gDecorations[gSpecialVar_0x8004].category != gDecorations[gSpecialVar_0x8006].category
&& GetFirstEmptyDecorSlot(gDecorations[gSpecialVar_0x8004].category) == -1)
{
- sub_8127250(gStringVar2, gDecorations[gSpecialVar_0x8004].category);
+ CopyDecorationCategoryName(gStringVar2, gDecorations[gSpecialVar_0x8004].category);
gSpecialVar_Result = TRUE;
}
}
void ScrSpecial_TraderMenuGiveDecoration(void)
{
- CreateTask(sub_8127208, 0);
+ CreateTask(ShowDecorationCategoriesWindow, 0);
}
void sub_8133DA0(u8 taskId)
{
if (IsSelectedDecorInThePC() == TRUE)
{
- gSpecialVar_0x8006 = gCurDecorInventoryItems[gCurDecorationIndex];
+ gSpecialVar_0x8006 = gCurDecorationItems[gCurDecorationIndex];
StringCopy(gStringVar3, gDecorations[gSpecialVar_0x8004].name);
StringCopy(gStringVar2, gDecorations[gSpecialVar_0x8006].name);
}
@@ -183,7 +183,7 @@ void sub_8133DA0(u8 taskId)
EnableBothScriptContexts();
}
-void sub_8133E1C(u8 taskId)
+void ExitTraderMenu(u8 taskId)
{
gSpecialVar_0x8006 = 0;
DestroyTask(taskId);
diff --git a/src/trainer_card.c b/src/trainer_card.c
index 01839d598..52a060ae9 100755
--- a/src/trainer_card.c
+++ b/src/trainer_card.c
@@ -30,6 +30,7 @@
#include "constants/flags.h"
#include "constants/game_stat.h"
#include "constants/battle_frontier.h"
+#include "constants/rgb.h"
enum
{
@@ -381,7 +382,7 @@ static void sub_80C2760(u8 taskId)
case 7:
if (gWirelessCommType == 1 && gReceivedRemoteLinkPlayers == TRUE)
{
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(230, 150);
}
BlendPalettes(0xFFFFFFFF, 16, sData->var_52C);
diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c
index 8172f09e6..6824e8747 100644
--- a/src/trainer_pokemon_sprites.c
+++ b/src/trainer_pokemon_sprites.c
@@ -6,21 +6,10 @@
#include "palette.h"
#include "decompress.h"
#include "trainer_pokemon_sprites.h"
-#include "data2.h"
+#include "data.h"
#include "pokemon.h"
#include "constants/trainers.h"
-extern const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES];
-extern const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES];
-extern const struct CompressedSpriteSheet gTrainerFrontPicTable[];
-extern const struct CompressedSpriteSheet gTrainerBackPicTable[];
-extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
-extern const union AffineAnimCmd *const gUnknown_082FF618[];
-extern const union AffineAnimCmd *const gUnknown_082FF694[];
-extern const union AnimCmd *const gPlayerMonSpriteAnimsTable[];
-extern const union AnimCmd *const *const gMonAnimationsSpriteAnimsPtrTable[NUM_SPECIES];
-extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[];
-
// Static type declarations
struct PicData
@@ -149,7 +138,7 @@ static void LoadPicPaletteBySlot(u16 species, u32 otId, u32 personality, u8 pale
static void AssignSpriteAnimsTable(bool8 isTrainer)
{
if (!isTrainer)
- sCreatingSpriteTemplate.anims = gPlayerMonSpriteAnimsTable;
+ sCreatingSpriteTemplate.anims = gUnknown_082FF70C;
else
sCreatingSpriteTemplate.anims = gTrainerFrontAnimsPtrTable[0];
}
@@ -270,7 +259,7 @@ u16 CreatePicSprite2(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s1
images[j].size = 0x800;
}
sCreatingSpriteTemplate.tileTag = 0xFFFF;
- sCreatingSpriteTemplate.anims = gMonAnimationsSpriteAnimsPtrTable[species];
+ sCreatingSpriteTemplate.anims = gMonFrontAnimsPtrTable[species];
sCreatingSpriteTemplate.images = images;
if (flags2 == 0x01)
{
diff --git a/src/tv.c b/src/tv.c
index 17243a456..01b43f100 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -37,7 +37,7 @@
#include "decoration.h"
#include "secret_base.h"
#include "tv.h"
-#include "data2.h"
+#include "data.h"
#include "constants/layouts.h"
#include "constants/metatile_behaviors.h"
@@ -2567,7 +2567,7 @@ void sub_80EEA70(void)
show->secretBaseSecrets.active = FALSE;
StringCopy(show->secretBaseSecrets.playerName, gSaveBlock2Ptr->playerName);
show->secretBaseSecrets.stepsInBase = VarGet(VAR_SECRET_BASE_STEP_COUNTER);
- sub_80E980C();
+ CopyCurSecretBaseOwnerName_StrVar1();
StringCopy(strbuf, gStringVar1);
StripExtCtrlCodes(strbuf);
StringCopy(show->secretBaseSecrets.baseOwnersName, strbuf);
@@ -7366,7 +7366,7 @@ u8 TVShowGetFlagCount(TVShow *show)
return tot;
}
-u8 TVShowGetStateForFlagNumber(TVShow *show, u8 a1)
+static u8 SecretBaseSecrets_GetStateForFlagNumber(TVShow *show, u8 a1)
{
u8 i;
u8 tot;
@@ -7409,7 +7409,7 @@ static void DoTVShowSecretBaseSecrets(void)
{
show->secretBaseSecrets.savedState = 1;
sTVSecretBaseSecretsRandomValues[0] = Random() % bitCount;
- sTVShowState = TVShowGetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[0]);
+ sTVShowState = SecretBaseSecrets_GetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[0]);
}
break;
case 1:
@@ -7424,11 +7424,11 @@ static void DoTVShowSecretBaseSecrets(void)
show->secretBaseSecrets.savedState = 2;
if (sTVSecretBaseSecretsRandomValues[0] == 0)
{
- sTVShowState = TVShowGetStateForFlagNumber(show, 1);
+ sTVShowState = SecretBaseSecrets_GetStateForFlagNumber(show, 1);
}
else
{
- sTVShowState = TVShowGetStateForFlagNumber(show, 0);
+ sTVShowState = SecretBaseSecrets_GetStateForFlagNumber(show, 0);
}
break;
default:
@@ -7441,7 +7441,7 @@ static void DoTVShowSecretBaseSecrets(void)
}
}
show->secretBaseSecrets.savedState = 2;
- sTVShowState = TVShowGetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[1]);
+ sTVShowState = SecretBaseSecrets_GetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[1]);
break;
}
break;
@@ -7463,7 +7463,7 @@ static void DoTVShowSecretBaseSecrets(void)
}
}
show->secretBaseSecrets.savedState = 3;
- sTVShowState = TVShowGetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[2]);
+ sTVShowState = SecretBaseSecrets_GetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[2]);
}
break;
case 3:
diff --git a/src/union_room.c b/src/union_room.c
index ea3658903..6e7c0965d 100644
--- a/src/union_room.c
+++ b/src/union_room.c
@@ -32,7 +32,7 @@
#include "palette.h"
#include "decompress.h"
#include "start_menu.h"
-#include "data2.h"
+#include "data.h"
#include "field_screen_effect.h"
#include "script_pokemon_util_80F87D8.h"
#include "international_string_util.h"
@@ -47,6 +47,7 @@
#include "berry_crush.h"
#include "mystery_gift.h"
#include "union_room_player_avatar.h"
+#include "pokemon_jump.h"
EWRAM_DATA u8 gUnknown_02022C20[12] = {};
EWRAM_DATA u8 gUnknown_02022C2C = 0;
@@ -97,7 +98,6 @@ 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_801AC54(void);
-void sub_802A9A8(u8 monId, MainCallback callback);
void sub_802493C(u8 monId, MainCallback callback);
void sub_80149D8(void);
void MG_DrawTextBorder(u8 windowId);
@@ -1404,7 +1404,7 @@ void sub_8012780(u8 taskId)
switch (sub_80170B8(&data->textState, sub_801064C(ReadAsU16(data->field_0->arr[data->field_13].unk.field_0.unk_00.playerTrainerId), data->field_0->arr[data->field_13].unk.playerName)))
{
case 0:
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0);
data->field_19 = 5;
sub_8010688(5, ReadAsU16(data->field_0->arr[data->field_13].unk.field_0.unk_00.playerTrainerId), data->field_0->arr[data->field_13].unk.playerName);
@@ -2130,7 +2130,7 @@ u32 sub_8013B8C(struct UnkStruct_Group *arg0, s32 id)
void sub_8013BD8(struct UnkStruct_Group *data, s32 id)
{
data->field_F = id;
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0);
RedrawListMenu(data->listTaskId);
sub_8018404(gStringVar1, &data->field_0->arr[data->field_F]);
@@ -2782,7 +2782,7 @@ void sub_8014A40(u8 taskId)
switch (mevent_message_print_and_prompt_yes_no(&data->textState, &data->field_14, 0, gStringVar4))
{
case 0:
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0);
data->field_0->arr[data->field_13].field_1B = 0;
RedrawListMenu(data->listTaskId);
@@ -2985,7 +2985,7 @@ void sub_8014F48(u8 taskId)
if (data->field_0->arr[id].field_1A_0 == 1 && !data->field_0->arr[id].unk.field_0.unk_0a_7)
{
data->field_F = id;
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0);
RedrawListMenu(data->listTaskId);
sub_8018404(gStringVar1, &data->field_0->arr[data->field_F]);
@@ -3148,7 +3148,7 @@ void sub_80152F4(u8 taskId)
{
data->field_F = 0;
data->field_14 = 0;
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0);
sub_8011FC8(data->field_0->arr[0].unk.playerName, ReadAsU16(data->field_0->arr[0].unk.field_0.unk_00.playerTrainerId));
PlaySE(SE_PN_ON);
@@ -3905,7 +3905,7 @@ void sub_80156E0(u8 taskId)
}
break;
case 53:
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK);
data->state = 54;
break;
case 54:
diff --git a/src/union_room_chat.c b/src/union_room_chat.c
index 84a0406be..4afeb99cf 100755
--- a/src/union_room_chat.c
+++ b/src/union_room_chat.c
@@ -610,7 +610,7 @@ static void c2_081284E0(void)
SetMainCallback2(sub_801DF38);
gUnknown_02022C84->unkE = CreateTask(sub_801DF54, 8);
gUnknown_02022C84->unkF = CreateTask(sub_801F2B4, 7);
- sub_800E0E8();
+ LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(232, 150);
}
break;
diff --git a/src/union_room_player_avatar.c b/src/union_room_player_avatar.c
index 61be86a37..4c302c5eb 100644
--- a/src/union_room_player_avatar.c
+++ b/src/union_room_player_avatar.c
@@ -125,7 +125,7 @@ static void SetUnionRoomPlayerGfx(u32 playerIdx, u32 gfxId)
static void CreateUnionRoomPlayerEventObject(u32 playerIdx)
{
- show_sprite(gUnknown_082F0774[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ TrySpawnEventObject(gUnknown_082F0774[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
}
static void RemoveUnionRoomPlayerEventObject(u32 playerIdx)
diff --git a/src/unk_transition.c b/src/unk_transition.c
index 99479c866..cd91af07e 100644
--- a/src/unk_transition.c
+++ b/src/unk_transition.c
@@ -8,6 +8,7 @@
#include "trig.h"
#include "bg.h"
#include "gpu_regs.h"
+#include "constants/rgb.h"
typedef bool8 (*TransitionStateFunc)(struct Task *task);
@@ -361,7 +362,7 @@ static bool8 sub_81DAB4C(struct Task *task)
{
if (task->data[3] == 31)
{
- BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 0x10, RGB_BLACK);
task->tState++;
}
else
diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c
index 4eaf60be4..f28b651cc 100644
--- a/src/use_pokeblock.c
+++ b/src/use_pokeblock.c
@@ -21,6 +21,8 @@
#include "menu.h"
#include "gpu_regs.h"
#include "graphics.h"
+#include "pokemon_summary_screen.h"
+#include "item_menu.h"
struct UsePokeblockSubStruct
{
@@ -83,8 +85,6 @@ struct UsePokeblockStruct
/*0x7FD0*/ struct UsePokeblockSubStruct info;
};
-extern u16 gKeyRepeatStartDelay;
-
extern void sub_81D21DC(u8);
// this file's functions
@@ -133,7 +133,6 @@ 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[];
@@ -152,8 +151,6 @@ 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;
EWRAM_DATA void (*gUnknown_0203BC94)(void) = NULL;
diff --git a/src/wallclock.c b/src/wallclock.c
index 810abb1d1..01900dc8e 100644
--- a/src/wallclock.c
+++ b/src/wallclock.c
@@ -18,6 +18,7 @@
#include "trig.h"
#include "wallclock.h"
#include "window.h"
+#include "constants/rgb.h"
#include "constants/songs.h"
// static declarations
@@ -671,7 +672,7 @@ static void LoadWallClockGraphics(void)
static void WallClockInit(void)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
EnableInterrupts(INTR_FLAG_VBLANK);
SetVBlankCallback(WallClockVblankCallback);
SetMainCallback2(WallClockMainCallback);
@@ -864,7 +865,7 @@ static void Task_SetClock4(u8 taskId)
static void Task_SetClock5(u8 taskId)
{
RtcInitLocalTimeOffset(gTasks[taskId].tHours, gTasks[taskId].tMinutes);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
gTasks[taskId].func = Task_SetClock6;
}
@@ -896,7 +897,7 @@ static void Task_ViewClock2(u8 taskId)
static void Task_ViewClock3(u8 taskId)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
gTasks[taskId].func = Task_ViewClock4;
}
diff --git a/src/water.c b/src/water.c
index 20bf2542d..4480c3f43 100644
--- a/src/water.c
+++ b/src/water.c
@@ -483,7 +483,7 @@ extern const struct SpriteTemplate gUnknown_08597388;
void AnimTask_CreateRaindrops(u8 taskId)
{
u8 x, y;
-
+
if (gTasks[taskId].data[0] == 0)
{
gTasks[taskId].data[1] = gBattleAnimArgs[0];
@@ -520,7 +520,7 @@ void sub_8107228(struct Sprite *sprite)
void sub_8107260(struct Sprite *sprite)
{
u8 spriteId;
-
+
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) - gBattleAnimArgs[0];
@@ -559,7 +559,7 @@ void sub_8107380(struct Sprite *sprite)
u8 otherSpriteId = sprite->data[5];
u8 timer = gSprites[otherSpriteId].data[4];
u16 trigIndex = gSprites[otherSpriteId].data[3];
-
+
sprite->data[0] = 1;
AnimTranslateLinear(sprite);
sprite->pos2.x += Sin(trigIndex >> 8, gSprites[otherSpriteId].data[0]);
@@ -593,7 +593,7 @@ void sub_8107430(struct Sprite *sprite)
void sub_810744C(struct Sprite *sprite)
{
s16 unkArg;
-
+
InitSpritePosToAnimAttacker(sprite, TRUE);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
unkArg = -gBattleAnimArgs[2];
@@ -636,7 +636,7 @@ void sub_810756C(u8 taskId)
u16 *palPtr1;
u16 *palPtr2;
u16 rgbBuffer;
-
+
if (++gTasks[taskId].data[10] == 3)
{
gTasks[taskId].data[10] = 0;
@@ -724,7 +724,7 @@ _081075DE:\n\
void sub_81075EC(struct Sprite *sprite)
{
u16 retArg;
-
+
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[0] = 30;
sprite->data[1] = sprite->pos1.x;
@@ -781,7 +781,7 @@ void sub_81076F4(u8 taskId)
void sub_8107730(struct Sprite *sprite)
{
u8 priority;
-
+
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
sprite->pos2.y = -10;
@@ -797,7 +797,7 @@ void sub_8107730(struct Sprite *sprite)
{
sprite->pos2.x = -10;
sprite->subpriority = priority - 2;
- }
+ }
}
else
{
@@ -876,7 +876,7 @@ void AnimTask_CreateSurfWave(u8 taskId)
{
struct BattleAnimBgData animBg;
u8 taskId2;
-
+
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
@@ -894,9 +894,9 @@ void AnimTask_CreateSurfWave(u8 taskId)
{
sub_80A6D60(&animBg, gUnknown_08D963A4, 1);
}
- AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBackgroundImage_Surf, animBg.tilesOffset);
+ AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_Surf, animBg.tilesOffset);
if (gBattleAnimArgs[0] == 0)
- LoadCompressedPalette(gBattleAnimBackgroundPalette_Surf, animBg.paletteId * 16, 32);
+ LoadCompressedPalette(gBattleAnimBgPalette_Surf, animBg.paletteId * 16, 32);
else
LoadCompressedPalette(gBattleAnimBackgroundImageMuddyWater_Pal, animBg.paletteId * 16, 32);
taskId2 = CreateTask(sub_8107D58, gTasks[taskId].priority + 1);
@@ -1009,7 +1009,7 @@ _081079E0:\n\
_081079EA:\n\
mov r0, sp\n\
ldrb r0, [r0, 0x9]\n\
- ldr r1, =gBattleAnimBackgroundImage_Surf\n\
+ ldr r1, =gBattleAnimBgImage_Surf\n\
mov r2, sp\n\
ldrh r2, [r2, 0xA]\n\
bl AnimLoadCompressedBgGfx\n\
@@ -1018,7 +1018,7 @@ _081079EA:\n\
ldrsh r0, [r0, r1]\n\
cmp r0, 0\n\
bne _08107A24\n\
- ldr r0, =gBattleAnimBackgroundPalette_Surf\n\
+ ldr r0, =gBattleAnimBgPalette_Surf\n\
mov r1, sp\n\
ldrb r1, [r1, 0x8]\n\
lsls r1, 4\n\
@@ -1182,7 +1182,7 @@ void sub_8107B84(u8 taskId)
s16 unkUse;
u32 palOffset;
u16 palNum;
-
+
*BGptrX += gTasks[taskId].data[0];
*BGptrY += gTasks[taskId].data[1];
sub_80A6B30(&animBg);
@@ -1405,485 +1405,77 @@ void sub_8107CC4(u8 taskId)
}
}
-#ifdef NONMATCHING
void sub_8107D58(u8 taskId)
{
s16 i;
struct ScanlineEffectParams params;
struct Task *task = &gTasks[taskId];
- // u16 *scanlineBuffer;
-
+
switch (task->data[0])
{
- case 0:
- for (i = 0; i < task->data[4]; i++)
- {
- /* scanlineBuffer = &gScanlineEffectRegBuffers[0][i];
- *(u16 *)(&gScanlineEffect) = task->data[2];
- *scanlineBuffer = task->data[2] & -1; */
- gScanlineEffectRegBuffers[1][i] = task->data[2];
- gScanlineEffectRegBuffers[0][i] = (u16)((int)(task->data[2] & 0xFFFF));
- }
- for (i = task->data[4]; i < task->data[5]; i++)
- {
- gScanlineEffectRegBuffers[1][i] = task->data[1];
- gScanlineEffectRegBuffers[0][i] = (u16)((int)(task->data[1] & 0xFFFF));
- }
- for (i = task->data[5]; i < 160; i++)
- {
- gScanlineEffectRegBuffers[1][i] = task->data[2];
- gScanlineEffectRegBuffers[0][i] = (u16)((int)(task->data[2] & 0xFFFF));
- }
- if (task->data[4] == 0)
- {
- gScanlineEffectRegBuffers[1][i] = task->data[1];
- gScanlineEffectRegBuffers[0][i] = task->data[1];
- }
- else
- {
- gScanlineEffectRegBuffers[1][i] = task->data[2];
- gScanlineEffectRegBuffers[0][i] = task->data[2];
- }
- params.dmaDest = (vu16 *)REG_ADDR_BLDALPHA;
- params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
- params.initState = 1;
- params.unused9 = 0;
- ScanlineEffect_SetParams(params);
- task->data[0]++;
- break;
- case 1:
- if (task->data[3] == 0)
- {
- if (--task->data[4] <= 0)
- {
- task->data[4] = 0;
- task->data[0]++;
- }
- }
- else if (++task->data[5] > 111)
+ case 0:
+ for (i = 0; i < task->data[4]; i++)
+ gScanlineEffectRegBuffers[0][i] = gScanlineEffectRegBuffers[1][i] = task->data[2];
+ for (i = task->data[4]; i < task->data[5]; i++)
+ gScanlineEffectRegBuffers[0][i] = gScanlineEffectRegBuffers[1][i] = task->data[1];
+ for (i = task->data[5]; i < 160; i++)
+ gScanlineEffectRegBuffers[0][i] = gScanlineEffectRegBuffers[1][i] = task->data[2];
+
+ if (task->data[4] == 0)
+ gScanlineEffectRegBuffers[0][i] = gScanlineEffectRegBuffers[1][i] = task->data[1];
+ else
+ gScanlineEffectRegBuffers[0][i] = gScanlineEffectRegBuffers[1][i] = task->data[2];
+
+ params.dmaDest = (vu16 *)REG_ADDR_BLDALPHA;
+ params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
+ params.initState = 1;
+ params.unused9 = 0;
+ ScanlineEffect_SetParams(params);
+ task->data[0]++;
+ break;
+ case 1:
+ if (task->data[3] == 0)
+ {
+ if (--task->data[4] <= 0)
{
+ task->data[4] = 0;
task->data[0]++;
}
- for (i = 0; i < task->data[4]; i++)
- {
- gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
- }
- for (i = task->data[4]; i < task->data[5]; i++)
- {
- gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[1];
- }
- for (i = task->data[5]; i < 160; i++)
- {
- gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
- }
- break;
- case 2:
- for (i = 0; i < task->data[4]; i++)
- {
- gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
- }
- for (i = task->data[4]; i < task->data[5]; i++)
- {
- gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[1];
- }
- for (i = task->data[5]; i < 160; i++)
- {
- gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
- }
- if (task->data[15] == -1)
- {
- ScanlineEffect_Stop();
- DestroyTask(taskId);
- }
- break;
+ }
+ else if (++task->data[5] > 111)
+ {
+ task->data[0]++;
+ }
+
+ for (i = 0; i < task->data[4]; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
+ for (i = task->data[4]; i < task->data[5]; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[1];
+ for (i = task->data[5]; i < 160; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
+ break;
+ case 2:
+ for (i = 0; i < task->data[4]; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
+ for (i = task->data[4]; i < task->data[5]; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[1];
+ for (i = task->data[5]; i < 160; i++)
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[2];
+
+ if (task->data[15] == -1)
+ {
+ ScanlineEffect_Stop();
+ DestroyTask(taskId);
+ }
+ break;
}
}
-#else
-NAKED
-void sub_8107D58(u8 taskId)
-{
- asm_unified("push {r4-r7,lr}\n\
- sub sp, 0xC\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- lsls r0, r7, 2\n\
- adds r0, r7\n\
- lsls r0, 3\n\
- ldr r1, =gTasks\n\
- adds r4, r0, r1\n\
- movs r1, 0x8\n\
- ldrsh r0, [r4, r1]\n\
- cmp r0, 0x1\n\
- bne _08107D74\n\
- b _08107EAC\n\
-_08107D74:\n\
- cmp r0, 0x1\n\
- bgt _08107D84\n\
- cmp r0, 0\n\
- beq _08107D8C\n\
- b _08108022\n\
- .pool\n\
-_08107D84:\n\
- cmp r0, 0x2\n\
- bne _08107D8A\n\
- b _08107F78\n\
-_08107D8A:\n\
- b _08108022\n\
-_08107D8C:\n\
- movs r3, 0\n\
- movs r2, 0x10\n\
- ldrsh r0, [r4, r2]\n\
- ldr r1, =gScanlineEffectRegBuffers\n\
- mov r12, r1\n\
- cmp r3, r0\n\
- bge _08107DCA\n\
- mov r7, r12\n\
- movs r5, 0xF0\n\
- lsls r5, 3\n\
- add r5, r12\n\
- ldr r6, =0x0000ffff\n\
-_08107DA4:\n\
- lsls r2, r3, 16\n\
- asrs r2, 16\n\
- lsls r1, r2, 1\n\
- adds r3, r1, r7\n\
- adds r1, r5\n\
- ldrh r0, [r4, 0xC]\n\
- strh r0, [r1]\n\
- ldrh r1, [r4, 0xC]\n\
- adds r0, r6, 0\n\
- ands r0, r1\n\
- strh r0, [r3]\n\
- adds r2, 0x1\n\
- lsls r2, 16\n\
- lsrs r3, r2, 16\n\
- asrs r2, 16\n\
- movs r1, 0x10\n\
- ldrsh r0, [r4, r1]\n\
- cmp r2, r0\n\
- blt _08107DA4\n\
-_08107DCA:\n\
- ldrh r3, [r4, 0x10]\n\
- lsls r2, r3, 16\n\
- asrs r1, r2, 16\n\
- movs r3, 0x12\n\
- ldrsh r0, [r4, r3]\n\
- cmp r1, r0\n\
- bge _08107E04\n\
- ldr r5, =gScanlineEffectRegBuffers\n\
- movs r0, 0xF0\n\
- lsls r0, 3\n\
- adds r6, r5, r0\n\
- ldr r7, =0x0000ffff\n\
-_08107DE2:\n\
- asrs r2, 16\n\
- lsls r1, r2, 1\n\
- adds r3, r1, r5\n\
- adds r1, r6\n\
- ldrh r0, [r4, 0xA]\n\
- strh r0, [r1]\n\
- ldrh r1, [r4, 0xA]\n\
- adds r0, r7, 0\n\
- ands r0, r1\n\
- strh r0, [r3]\n\
- adds r2, 0x1\n\
- lsls r2, 16\n\
- asrs r1, r2, 16\n\
- movs r3, 0x12\n\
- ldrsh r0, [r4, r3]\n\
- cmp r1, r0\n\
- blt _08107DE2\n\
-_08107E04:\n\
- ldrh r3, [r4, 0x12]\n\
- lsls r2, r3, 16\n\
- asrs r0, r2, 16\n\
- cmp r0, 0x9F\n\
- bgt _08107E3A\n\
- ldr r5, =gScanlineEffectRegBuffers\n\
- movs r0, 0xF0\n\
- lsls r0, 3\n\
- adds r6, r5, r0\n\
- ldr r7, =0x0000ffff\n\
-_08107E18:\n\
- asrs r2, 16\n\
- lsls r1, r2, 1\n\
- adds r3, r1, r5\n\
- adds r1, r6\n\
- ldrh r0, [r4, 0xC]\n\
- strh r0, [r1]\n\
- ldrh r1, [r4, 0xC]\n\
- adds r0, r7, 0\n\
- ands r0, r1\n\
- strh r0, [r3]\n\
- adds r2, 0x1\n\
- lsls r2, 16\n\
- lsrs r3, r2, 16\n\
- lsls r2, r3, 16\n\
- asrs r0, r2, 16\n\
- cmp r0, 0x9F\n\
- ble _08107E18\n\
-_08107E3A:\n\
- movs r1, 0x10\n\
- ldrsh r0, [r4, r1]\n\
- cmp r0, 0\n\
- bne _08107E64\n\
- lsls r0, r3, 16\n\
- asrs r0, 15\n\
- mov r3, r12\n\
- adds r2, r0, r3\n\
- movs r1, 0xF0\n\
- lsls r1, 3\n\
- add r1, r12\n\
- adds r0, r1\n\
- ldrh r1, [r4, 0xA]\n\
- strh r1, [r0]\n\
- ldrh r0, [r4, 0xA]\n\
- b _08107E7A\n\
- .pool\n\
-_08107E64:\n\
- lsls r0, r3, 16\n\
- asrs r0, 15\n\
- mov r1, r12\n\
- adds r2, r0, r1\n\
- movs r1, 0xF0\n\
- lsls r1, 3\n\
- add r1, r12\n\
- adds r0, r1\n\
- ldrh r1, [r4, 0xC]\n\
- strh r1, [r0]\n\
- ldrh r0, [r4, 0xC]\n\
-_08107E7A:\n\
- strh r0, [r2]\n\
- ldr r0, =0x04000052\n\
- str r0, [sp]\n\
- ldr r0, =0xa2600001\n\
- str r0, [sp, 0x4]\n\
- mov r1, sp\n\
- movs r2, 0\n\
- movs r0, 0x1\n\
- strb r0, [r1, 0x8]\n\
- mov r0, sp\n\
- strb r2, [r0, 0x9]\n\
- ldr r0, [sp]\n\
- ldr r1, [sp, 0x4]\n\
- ldr r2, [sp, 0x8]\n\
- bl ScanlineEffect_SetParams\n\
- ldrh r0, [r4, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x8]\n\
- b _08108022\n\
- .pool\n\
-_08107EAC:\n\
- movs r2, 0xE\n\
- ldrsh r1, [r4, r2]\n\
- cmp r1, 0\n\
- bne _08107EC4\n\
- ldrh r0, [r4, 0x10]\n\
- subs r0, 0x1\n\
- strh r0, [r4, 0x10]\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- bgt _08107ED8\n\
- strh r1, [r4, 0x10]\n\
- b _08107ED2\n\
-_08107EC4:\n\
- ldrh r0, [r4, 0x12]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x12]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x6F\n\
- ble _08107ED8\n\
-_08107ED2:\n\
- ldrh r0, [r4, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x8]\n\
-_08107ED8:\n\
- movs r3, 0\n\
- movs r1, 0x10\n\
- ldrsh r0, [r4, r1]\n\
- cmp r3, r0\n\
- bge _08107F0C\n\
- ldr r6, =gScanlineEffectRegBuffers\n\
- ldr r5, =gScanlineEffect\n\
-_08107EE6:\n\
- lsls r1, r3, 16\n\
- asrs r1, 16\n\
- lsls r3, r1, 1\n\
- ldrb r2, [r5, 0x14]\n\
- lsls r0, r2, 4\n\
- subs r0, r2\n\
- lsls r0, 7\n\
- adds r3, r0\n\
- adds r3, r6\n\
- ldrh r0, [r4, 0xC]\n\
- strh r0, [r3]\n\
- adds r1, 0x1\n\
- lsls r1, 16\n\
- lsrs r3, r1, 16\n\
- asrs r1, 16\n\
- movs r2, 0x10\n\
- ldrsh r0, [r4, r2]\n\
- cmp r1, r0\n\
- blt _08107EE6\n\
-_08107F0C:\n\
- ldrh r3, [r4, 0x10]\n\
- lsls r2, r3, 16\n\
- asrs r1, r2, 16\n\
- movs r3, 0x12\n\
- ldrsh r0, [r4, r3]\n\
- cmp r1, r0\n\
- bge _08107F40\n\
- ldr r6, =gScanlineEffectRegBuffers\n\
- ldr r5, =gScanlineEffect\n\
-_08107F1E:\n\
- asrs r3, r2, 16\n\
- lsls r2, r3, 1\n\
- ldrb r1, [r5, 0x14]\n\
- lsls r0, r1, 4\n\
- subs r0, r1\n\
- lsls r0, 7\n\
- adds r2, r0\n\
- adds r2, r6\n\
- ldrh r0, [r4, 0xA]\n\
- strh r0, [r2]\n\
- adds r3, 0x1\n\
- lsls r2, r3, 16\n\
- asrs r1, r2, 16\n\
- movs r3, 0x12\n\
- ldrsh r0, [r4, r3]\n\
- cmp r1, r0\n\
- blt _08107F1E\n\
-_08107F40:\n\
- ldrh r3, [r4, 0x12]\n\
- lsls r1, r3, 16\n\
- asrs r0, r1, 16\n\
- cmp r0, 0x9F\n\
- bgt _08108022\n\
- ldr r6, =gScanlineEffectRegBuffers\n\
- ldr r5, =gScanlineEffect\n\
-_08107F4E:\n\
- asrs r3, r1, 16\n\
- lsls r2, r3, 1\n\
- ldrb r1, [r5, 0x14]\n\
- lsls r0, r1, 4\n\
- subs r0, r1\n\
- lsls r0, 7\n\
- adds r2, r0\n\
- adds r2, r6\n\
- ldrh r0, [r4, 0xC]\n\
- strh r0, [r2]\n\
- adds r3, 0x1\n\
- lsls r1, r3, 16\n\
- asrs r0, r1, 16\n\
- cmp r0, 0x9F\n\
- ble _08107F4E\n\
- b _08108022\n\
- .pool\n\
-_08107F78:\n\
- movs r3, 0\n\
- movs r1, 0x10\n\
- ldrsh r0, [r4, r1]\n\
- cmp r3, r0\n\
- bge _08107FAC\n\
- ldr r6, =gScanlineEffectRegBuffers\n\
- ldr r5, =gScanlineEffect\n\
-_08107F86:\n\
- lsls r1, r3, 16\n\
- asrs r1, 16\n\
- lsls r3, r1, 1\n\
- ldrb r2, [r5, 0x14]\n\
- lsls r0, r2, 4\n\
- subs r0, r2\n\
- lsls r0, 7\n\
- adds r3, r0\n\
- adds r3, r6\n\
- ldrh r0, [r4, 0xC]\n\
- strh r0, [r3]\n\
- adds r1, 0x1\n\
- lsls r1, 16\n\
- lsrs r3, r1, 16\n\
- asrs r1, 16\n\
- movs r2, 0x10\n\
- ldrsh r0, [r4, r2]\n\
- cmp r1, r0\n\
- blt _08107F86\n\
-_08107FAC:\n\
- ldrh r3, [r4, 0x10]\n\
- lsls r2, r3, 16\n\
- asrs r1, r2, 16\n\
- movs r3, 0x12\n\
- ldrsh r0, [r4, r3]\n\
- cmp r1, r0\n\
- bge _08107FE0\n\
- ldr r6, =gScanlineEffectRegBuffers\n\
- ldr r5, =gScanlineEffect\n\
-_08107FBE:\n\
- asrs r3, r2, 16\n\
- lsls r2, r3, 1\n\
- ldrb r1, [r5, 0x14]\n\
- lsls r0, r1, 4\n\
- subs r0, r1\n\
- lsls r0, 7\n\
- adds r2, r0\n\
- adds r2, r6\n\
- ldrh r0, [r4, 0xA]\n\
- strh r0, [r2]\n\
- adds r3, 0x1\n\
- lsls r2, r3, 16\n\
- asrs r1, r2, 16\n\
- movs r3, 0x12\n\
- ldrsh r0, [r4, r3]\n\
- cmp r1, r0\n\
- blt _08107FBE\n\
-_08107FE0:\n\
- ldrh r3, [r4, 0x12]\n\
- lsls r1, r3, 16\n\
- asrs r0, r1, 16\n\
- cmp r0, 0x9F\n\
- bgt _0810800C\n\
- ldr r6, =gScanlineEffectRegBuffers\n\
- ldr r5, =gScanlineEffect\n\
-_08107FEE:\n\
- asrs r3, r1, 16\n\
- lsls r2, r3, 1\n\
- ldrb r1, [r5, 0x14]\n\
- lsls r0, r1, 4\n\
- subs r0, r1\n\
- lsls r0, 7\n\
- adds r2, r0\n\
- adds r2, r6\n\
- ldrh r0, [r4, 0xC]\n\
- strh r0, [r2]\n\
- adds r3, 0x1\n\
- lsls r1, r3, 16\n\
- asrs r0, r1, 16\n\
- cmp r0, 0x9F\n\
- ble _08107FEE\n\
-_0810800C:\n\
- movs r0, 0x26\n\
- ldrsh r1, [r4, r0]\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- cmp r1, r0\n\
- bne _08108022\n\
- bl ScanlineEffect_Stop\n\
- adds r0, r7, 0\n\
- bl DestroyTask\n\
-_08108022:\n\
- add sp, 0xC\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n");
-}
-#endif
void sub_8108034(struct Sprite *sprite)
{
s16 randData;
s16 randData2;
-
+
sprite->oam.tileNum += 8;
InitSpritePosToAnimTarget(sprite, TRUE);
randData = (Random2() & 0xFF) | 256;
@@ -1911,7 +1503,7 @@ void sub_8108098(struct Sprite *sprite)
void sub_81080E4(u8 taskId)
{
struct Task *task = &gTasks[taskId];
-
+
task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
task->data[5] = gSprites[task->data[15]].pos1.y;
task->data[1] = sub_8108384();
@@ -1922,85 +1514,85 @@ void sub_81080E4(u8 taskId)
void sub_8108140(u8 taskId)
{
struct Task *task = &gTasks[taskId];
-
+
switch (task->data[0])
{
- case 0:
- sub_80A805C(task, task->data[15], 0x100, 0x100, 224, 0x200, 32);
- task->data[0]++;
- case 1:
- if (++task->data[3] > 1)
- {
- task->data[3] = 0;
- if (++task->data[4] & 1)
- {
- gSprites[task->data[15]].pos2.x = 3;
- gSprites[task->data[15]].pos1.y++;
- }
- else
- {
- gSprites[task->data[15]].pos2.x = -3;
- }
- }
- if (sub_80A80C8(task) == 0)
- {
- SetBattlerSpriteYOffsetFromYScale(task->data[15]);
- gSprites[task->data[15]].pos2.x = 0;
- task->data[3] = 0;
- task->data[4] = 0;
- task->data[0]++;
- }
- break;
- case 2:
- if (++task->data[3] > 4)
+ case 0:
+ sub_80A805C(task, task->data[15], 0x100, 0x100, 224, 0x200, 32);
+ task->data[0]++;
+ case 1:
+ if (++task->data[3] > 1)
+ {
+ task->data[3] = 0;
+ if (++task->data[4] & 1)
{
- sub_80A805C(task, task->data[15], 224, 0x200, 384, 224, 8);
- task->data[3] = 0;
- task->data[0]++;
+ gSprites[task->data[15]].pos2.x = 3;
+ gSprites[task->data[15]].pos1.y++;
}
- break;
- case 3:
- if (sub_80A80C8(task) == 0)
+ else
{
- task->data[3] = 0;
- task->data[4] = 0;
- task->data[0]++;
+ gSprites[task->data[15]].pos2.x = -3;
}
- break;
- case 4:
- sub_8108408(task, taskId);
+ }
+ if (sub_80A80C8(task) == 0)
+ {
+ SetBattlerSpriteYOffsetFromYScale(task->data[15]);
+ gSprites[task->data[15]].pos2.x = 0;
+ task->data[3] = 0;
+ task->data[4] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (++task->data[3] > 4)
+ {
+ sub_80A805C(task, task->data[15], 224, 0x200, 384, 224, 8);
+ task->data[3] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 3:
+ if (sub_80A80C8(task) == 0)
+ {
+ task->data[3] = 0;
+ task->data[4] = 0;
task->data[0]++;
- case 5:
- if (++task->data[3] > 1)
+ }
+ break;
+ case 4:
+ sub_8108408(task, taskId);
+ task->data[0]++;
+ case 5:
+ if (++task->data[3] > 1)
+ {
+ task->data[3] = 0;
+ if (++task->data[4] & 1)
+ gSprites[task->data[15]].pos2.y += 2;
+ else
+ gSprites[task->data[15]].pos2.y -= 2;
+ if (task->data[4] == 10)
{
+ sub_80A805C(task, task->data[15], 384, 224, 0x100, 0x100, 8);
task->data[3] = 0;
- if (++task->data[4] & 1)
- gSprites[task->data[15]].pos2.y += 2;
- else
- gSprites[task->data[15]].pos2.y -= 2;
- if (task->data[4] == 10)
- {
- sub_80A805C(task, task->data[15], 384, 224, 0x100, 0x100, 8);
- task->data[3] = 0;
- task->data[4] = 0;
- task->data[0]++;
- }
- }
- break;
- case 6:
- gSprites[task->data[15]].pos1.y--;
- if (sub_80A80C8(task) == 0)
- {
- ResetSpriteRotScale(task->data[15]);
- gSprites[task->data[15]].pos1.y = task->data[5];
task->data[4] = 0;
task->data[0]++;
}
- break;
- case 7:
- if (task->data[2] == 0)
- DestroyAnimVisualTask(taskId);
- break;
+ }
+ break;
+ case 6:
+ gSprites[task->data[15]].pos1.y--;
+ if (sub_80A80C8(task) == 0)
+ {
+ ResetSpriteRotScale(task->data[15]);
+ gSprites[task->data[15]].pos1.y = task->data[5];
+ task->data[4] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 7:
+ if (task->data[2] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
}
}
@@ -2011,7 +1603,7 @@ u8 sub_8108384(void)
u16 maxhp;
u16 partyIndex;
struct Pokemon *slot;
-
+
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
partyIndex = gBattlerPartyIndexes[gBattleAnimAttacker];
@@ -2045,7 +1637,7 @@ void sub_8108408(struct Task *task, u8 taskId)
u8 subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1;
s16 increment = 4 - task->data[1];
u8 spriteId;
-
+
if (increment <= 0)
increment = 1;
for (i = 0; i < 20; i += increment)
@@ -2073,28 +1665,28 @@ void sub_810851C(struct Sprite *sprite)
{
switch (sprite->data[0])
{
- case 0:
- sprite->data[4] += (sprite->data[1] % 6) * 3;
- sprite->data[5] += (sprite->data[1] % 3) * 3;
- sprite->data[0]++;
- case 1:
- sprite->data[2] += sprite->data[4];
- sprite->data[3] += sprite->data[5];
- sprite->pos1.x = sprite->data[2] >> 4;
- sprite->pos1.y = sprite->data[3] >> 4;
- if (sprite->pos1.x < -8 || sprite->pos1.x > 248 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
- {
- gTasks[sprite->data[6]].data[sprite->data[7]]--;
- DestroySprite(sprite);
- }
- break;
+ case 0:
+ sprite->data[4] += (sprite->data[1] % 6) * 3;
+ sprite->data[5] += (sprite->data[1] % 3) * 3;
+ sprite->data[0]++;
+ case 1:
+ sprite->data[2] += sprite->data[4];
+ sprite->data[3] += sprite->data[5];
+ sprite->pos1.x = sprite->data[2] >> 4;
+ sprite->pos1.y = sprite->data[3] >> 4;
+ if (sprite->pos1.x < -8 || sprite->pos1.x > 248 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
+ {
+ gTasks[sprite->data[6]].data[sprite->data[7]]--;
+ DestroySprite(sprite);
+ }
+ break;
}
}
void sub_81085C8(u8 taskId)
{
struct Task *task = &gTasks[taskId];
-
+
task->data[1] = sub_8108384();
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
@@ -2116,42 +1708,42 @@ void sub_810862C(u8 taskId)
{
struct Task *task = &gTasks[taskId];
u8 taskId2;
-
+
switch (task->data[0])
{
- case 0:
- if (++task->data[2] > 2)
+ case 0:
+ if (++task->data[2] > 2)
+ {
+ task->data[2] = 0;
+ sub_810871C(task, taskId);
+ }
+ if (task->data[10] != 0 && task->data[13] == 0)
+ {
+ gBattleAnimArgs[0] = 1;
+ gBattleAnimArgs[1] = 0;
+ gBattleAnimArgs[2] = 12;
+ taskId2 = CreateTask(sub_81152DC, 80);
+ if (taskId2 != 0xFF)
{
- task->data[2] = 0;
- sub_810871C(task, taskId);
+ gTasks[taskId2].func(taskId2);
+ gAnimVisualTaskCount++;
}
- if (task->data[10] != 0 && task->data[13] == 0)
+ gBattleAnimArgs[0] = 3;
+ taskId2 = CreateTask(sub_81152DC, 80);
+ if (taskId2 != 0xFF)
{
- gBattleAnimArgs[0] = 1;
- gBattleAnimArgs[1] = 0;
- gBattleAnimArgs[2] = 12;
- taskId2 = CreateTask(sub_81152DC, 80);
- if (taskId2 != 0xFF)
- {
- gTasks[taskId2].func(taskId2);
- gAnimVisualTaskCount++;
- }
- gBattleAnimArgs[0] = 3;
- taskId2 = CreateTask(sub_81152DC, 80);
- if (taskId2 != 0xFF)
- {
- gTasks[taskId2].func(taskId2);
- gAnimVisualTaskCount++;
- }
- task->data[13] = 1;
+ gTasks[taskId2].func(taskId2);
+ gAnimVisualTaskCount++;
}
- if (task->data[11] >= task->data[12])
- task->data[0]++;
- break;
- case 1:
- if (task->data[9] == 0)
- DestroyAnimVisualTask(taskId);
- break;
+ task->data[13] = 1;
+ }
+ if (task->data[11] >= task->data[12])
+ task->data[0]++;
+ break;
+ case 1:
+ if (task->data[9] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
}
}
@@ -2159,7 +1751,7 @@ void sub_810871C(struct Task *task, u8 taskId)
{
u16 yPosArg = ((gSineTable[task->data[8]] + 3) >> 4) + task->data[6];
u8 spriteId = CreateSprite(&gUnknown_08595268, task->data[7], 0, 0);
-
+
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].callback = sub_81087C0;
@@ -2212,7 +1804,7 @@ void sub_810886C(struct Sprite *sprite)
void sub_81088E4(u8 taskId)
{
struct Task *task = &gTasks[taskId];
-
+
task->data[3] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
task->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
task->data[7] = (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) ? 1 : -1;
@@ -2229,76 +1821,76 @@ void sub_81088E4(u8 taskId)
void sub_8108978(u8 taskId)
{
struct Task *task = &gTasks[taskId];
-
+
switch (task->data[0])
{
- case 0:
- sub_8108AC0(task);
- if (task->data[10] != 0)
- task->data[0]++;
- break;
- case 1:
- sub_8108AC0(task);
- if (++task->data[1] > 16)
+ case 0:
+ sub_8108AC0(task);
+ if (task->data[10] != 0)
+ task->data[0]++;
+ break;
+ case 1:
+ sub_8108AC0(task);
+ if (++task->data[1] > 16)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ sub_8108AC0(task);
+ task->data[5] += task->data[7] * 6;
+ if (!(task->data[5] >= -16 && task->data[5] <= 256))
+ {
+ if (++task->data[12] > 2)
{
+ task->data[13] = 1;
+ task->data[0] = 6;
task->data[1] = 0;
- task->data[0]++;
}
- break;
- case 2:
- sub_8108AC0(task);
- task->data[5] += task->data[7] * 6;
- if (!(task->data[5] >= -16 && task->data[5] <= 256))
- {
- if (++task->data[12] > 2)
- {
- task->data[13] = 1;
- task->data[0] = 6;
- task->data[1] = 0;
- }
- else
- {
- task->data[1] = 0;
- task->data[0]++;
- }
- }
- break;
- case 3:
- sub_8108AC0(task);
- task->data[6] -= task->data[7] * 2;
- if (++task->data[1] > 7)
- task->data[0]++;
- break;
- case 4:
- sub_8108AC0(task);
- task->data[5] -= task->data[7] * 6;
- if (!(task->data[5] >= -16 && task->data[5] <= 256))
+ else
{
- task->data[12]++;
task->data[1] = 0;
task->data[0]++;
}
- break;
- case 5:
- sub_8108AC0(task);
- task->data[6] -= task->data[7] * 2;
- if (++task->data[1] > 7)
- task->data[0] = 2;
- break;
- case 6:
- if (task->data[8] == 0)
- task->data[0]++;
- break;
- default:
- DestroyAnimVisualTask(taskId);
- break;
+ }
+ break;
+ case 3:
+ sub_8108AC0(task);
+ task->data[6] -= task->data[7] * 2;
+ if (++task->data[1] > 7)
+ task->data[0]++;
+ break;
+ case 4:
+ sub_8108AC0(task);
+ task->data[5] -= task->data[7] * 6;
+ if (!(task->data[5] >= -16 && task->data[5] <= 256))
+ {
+ task->data[12]++;
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 5:
+ sub_8108AC0(task);
+ task->data[6] -= task->data[7] * 2;
+ if (++task->data[1] > 7)
+ task->data[0] = 2;
+ break;
+ case 6:
+ if (task->data[8] == 0)
+ task->data[0]++;
+ break;
+ default:
+ DestroyAnimVisualTask(taskId);
+ break;
}
}
void sub_8108AC0(struct Task *task)
{
u8 spriteId;
-
+
if (++task->data[2] > 1)
{
task->data[2] = 0;
@@ -2334,7 +1926,7 @@ void sub_8108B2C(struct Sprite *sprite)
void sub_8108B94(struct Sprite *sprite)
{
u16 i;
-
+
if (TranslateAnimHorizontalArc(sprite))
{
for (i = 0; i < NUM_TASKS; i++)
@@ -2397,7 +1989,7 @@ void sub_8108CDC(struct Sprite *sprite)
{
int xDiff = sprite->data[1] - sprite->pos1.x;
int yDiff = sprite->data[2] - sprite->pos1.y;
-
+
sprite->pos2.x = (sprite->data[0] * xDiff) / sprite->data[3];
sprite->pos2.y = (sprite->data[0] * yDiff) / sprite->data[3];
if (++sprite->data[5] == sprite->data[4])
@@ -2420,7 +2012,7 @@ void sub_8108D54(struct Sprite *sprite, int xDiff, int yDiff)
s16 randomSomethingX = -xDiff + (Random2() % 10) - 5;
s16 i;
u8 spriteId;
-
+
for (i = 0; i <= 0; i++)
{
spriteId = CreateSprite(&gUnknown_08595310, combinedX, combinedY + something, 130);
diff --git a/src/wild_encounter.c b/src/wild_encounter.c
index e42bf8a23..84275526e 100644
--- a/src/wild_encounter.c
+++ b/src/wild_encounter.c
@@ -42,6 +42,16 @@ EWRAM_DATA static u32 sFeebasRngValue = 0;
#include "data/wild_encounters.h"
+//Special Feebas-related data.
+const struct WildPokemon gWildFeebasRoute119Data = {20, 25, SPECIES_FEEBAS};
+
+const u16 gRoute119WaterTileData[] =
+{
+ 0, 0x2D, 0,
+ 0x2E, 0x5B, 0x83,
+ 0x5C, 0x8B, 0x12A,
+};
+
// code
void DisableWildEncounters(bool8 disabled)
{
diff --git a/sym_ewram.txt b/sym_ewram.txt
index d12cfd76a..5fbcba779 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -146,17 +146,8 @@ gUnknown_02022D00: @ 2022D00
.include "src/pokemon_summary_screen.o"
.include "src/unk_pokedex_area_screen_helper.o"
.include "src/battle_pyramid_bag.o"
-
- @ pokenav
-gUnknown_0203CF3C: @ 203CF3C
- .space 0x4
-
-gUnknown_0203CF40: @ 203CF40
- .space 0x4
-
-gUnknown_0203CF44: @ 203CF44
- .space 0x4
-
+ .include "src/pokenav.o"
+ .include "src/pokenav_match_call_ui.o"
.include "src/menu_specialized.o"
.include "src/faraway_island.o"
.include "src/trainer_hill.o"
diff --git a/tools/jsonproc/.gitignore b/tools/jsonproc/.gitignore
new file mode 100755
index 000000000..a613cf2d7
--- /dev/null
+++ b/tools/jsonproc/.gitignore
@@ -0,0 +1 @@
+jsonproc
diff --git a/tools/jsonproc/Makefile b/tools/jsonproc/Makefile
new file mode 100755
index 000000000..69093a216
--- /dev/null
+++ b/tools/jsonproc/Makefile
@@ -0,0 +1,17 @@
+CXX := g++
+
+CXXFLAGS := -Wall -std=c++11 -O2
+
+INCLUDES := -I .
+
+SRCS := jsonproc.cpp
+
+HEADERS := jsonproc.h inja.hpp nlohmann/json.hpp
+
+.PHONY: clean
+
+jsonproc: $(SRCS) $(HEADERS)
+ $(CXX) $(CXXFLAGS) $(INCLUDES) $(SRCS) -o $@ $(LDFLAGS)
+
+clean:
+ $(RM) jsonproc jsonproc.exe
diff --git a/tools/jsonproc/inja.hpp b/tools/jsonproc/inja.hpp
new file mode 100755
index 000000000..3b7263546
--- /dev/null
+++ b/tools/jsonproc/inja.hpp
@@ -0,0 +1,3396 @@
+// MIT License
+
+// Copyright (c) 2018 lbersch
+
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+
+// The above copyright notice and this permission notice shall be included in all
+// copies or substantial portions of the Software.
+
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
+
+
+// ---
+
+
+// Copyright (c) 2009-2018 FIRST
+// All rights reserved.
+
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+// * Neither the name of the FIRST nor the
+// names of its contributors may be used to endorse or promote products
+// derived from this software without specific prior written permission.
+
+// THIS SOFTWARE IS PROVIDED BY FIRST AND CONTRIBUTORS``AS IS'' AND ANY
+// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+// WARRANTIES OF MERCHANTABILITY NONINFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL FIRST OR CONTRIBUTORS BE LIABLE FOR
+// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef PANTOR_INJA_HPP
+#define PANTOR_INJA_HPP
+
+#include <functional>
+#include <iostream>
+#include <map>
+#include <memory>
+#include <sstream>
+#include <string>
+#include <vector>
+
+#include <nlohmann/json.hpp>
+
+// #include "environment.hpp"
+#ifndef PANTOR_INJA_ENVIRONMENT_HPP
+#define PANTOR_INJA_ENVIRONMENT_HPP
+
+#include <memory>
+#include <fstream>
+#include <sstream>
+#include <string>
+
+#include <nlohmann/json.hpp>
+
+// #include "config.hpp"
+#ifndef PANTOR_INJA_CONFIG_HPP
+#define PANTOR_INJA_CONFIG_HPP
+
+#include <functional>
+#include <string>
+
+// #include "string_view.hpp"
+// Copyright 2017-2019 by Martin Moene
+//
+// string-view lite, a C++17-like string_view for C++98 and later.
+// For more information see https://github.com/martinmoene/string-view-lite
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+
+#ifndef NONSTD_SV_LITE_H_INCLUDED
+#define NONSTD_SV_LITE_H_INCLUDED
+
+#define string_view_lite_MAJOR 1
+#define string_view_lite_MINOR 1
+#define string_view_lite_PATCH 0
+
+#define string_view_lite_VERSION nssv_STRINGIFY(string_view_lite_MAJOR) "." nssv_STRINGIFY(string_view_lite_MINOR) "." nssv_STRINGIFY(string_view_lite_PATCH)
+
+#define nssv_STRINGIFY( x ) nssv_STRINGIFY_( x )
+#define nssv_STRINGIFY_( x ) #x
+
+// string-view lite configuration:
+
+#define nssv_STRING_VIEW_DEFAULT 0
+#define nssv_STRING_VIEW_NONSTD 1
+#define nssv_STRING_VIEW_STD 2
+
+#if !defined( nssv_CONFIG_SELECT_STRING_VIEW )
+# define nssv_CONFIG_SELECT_STRING_VIEW ( nssv_HAVE_STD_STRING_VIEW ? nssv_STRING_VIEW_STD : nssv_STRING_VIEW_NONSTD )
+#endif
+
+#if defined( nssv_CONFIG_SELECT_STD_STRING_VIEW ) || defined( nssv_CONFIG_SELECT_NONSTD_STRING_VIEW )
+# error nssv_CONFIG_SELECT_STD_STRING_VIEW and nssv_CONFIG_SELECT_NONSTD_STRING_VIEW are deprecated and removed, please use nssv_CONFIG_SELECT_STRING_VIEW=nssv_STRING_VIEW_...
+#endif
+
+#ifndef nssv_CONFIG_STD_SV_OPERATOR
+# define nssv_CONFIG_STD_SV_OPERATOR 0
+#endif
+
+#ifndef nssv_CONFIG_USR_SV_OPERATOR
+# define nssv_CONFIG_USR_SV_OPERATOR 1
+#endif
+
+#ifdef nssv_CONFIG_CONVERSION_STD_STRING
+# define nssv_CONFIG_CONVERSION_STD_STRING_CLASS_METHODS nssv_CONFIG_CONVERSION_STD_STRING
+# define nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS nssv_CONFIG_CONVERSION_STD_STRING
+#endif
+
+#ifndef nssv_CONFIG_CONVERSION_STD_STRING_CLASS_METHODS
+# define nssv_CONFIG_CONVERSION_STD_STRING_CLASS_METHODS 1
+#endif
+
+#ifndef nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS
+# define nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS 1
+#endif
+
+// Control presence of exception handling (try and auto discover):
+
+#ifndef nssv_CONFIG_NO_EXCEPTIONS
+# if defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)
+# define nssv_CONFIG_NO_EXCEPTIONS 0
+# else
+# define nssv_CONFIG_NO_EXCEPTIONS 1
+# endif
+#endif
+
+// C++ language version detection (C++20 is speculative):
+// Note: VC14.0/1900 (VS2015) lacks too much from C++14.
+
+#ifndef nssv_CPLUSPLUS
+# if defined(_MSVC_LANG ) && !defined(__clang__)
+# define nssv_CPLUSPLUS (_MSC_VER == 1900 ? 201103L : _MSVC_LANG )
+# else
+# define nssv_CPLUSPLUS __cplusplus
+# endif
+#endif
+
+#define nssv_CPP98_OR_GREATER ( nssv_CPLUSPLUS >= 199711L )
+#define nssv_CPP11_OR_GREATER ( nssv_CPLUSPLUS >= 201103L )
+#define nssv_CPP11_OR_GREATER_ ( nssv_CPLUSPLUS >= 201103L )
+#define nssv_CPP14_OR_GREATER ( nssv_CPLUSPLUS >= 201402L )
+#define nssv_CPP17_OR_GREATER ( nssv_CPLUSPLUS >= 201703L )
+#define nssv_CPP20_OR_GREATER ( nssv_CPLUSPLUS >= 202000L )
+
+// use C++17 std::string_view if available and requested:
+
+#if nssv_CPP17_OR_GREATER && defined(__has_include )
+# if __has_include( <string_view> )
+# define nssv_HAVE_STD_STRING_VIEW 1
+# else
+# define nssv_HAVE_STD_STRING_VIEW 0
+# endif
+#else
+# define nssv_HAVE_STD_STRING_VIEW 0
+#endif
+
+#define nssv_USES_STD_STRING_VIEW ( (nssv_CONFIG_SELECT_STRING_VIEW == nssv_STRING_VIEW_STD) || ((nssv_CONFIG_SELECT_STRING_VIEW == nssv_STRING_VIEW_DEFAULT) && nssv_HAVE_STD_STRING_VIEW) )
+
+#define nssv_HAVE_STARTS_WITH ( nssv_CPP20_OR_GREATER || !nssv_USES_STD_STRING_VIEW )
+#define nssv_HAVE_ENDS_WITH nssv_HAVE_STARTS_WITH
+
+//
+// Use C++17 std::string_view:
+//
+
+#if nssv_USES_STD_STRING_VIEW
+
+#include <string_view>
+
+// Extensions for std::string:
+
+#if nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS
+
+namespace nonstd {
+
+template< class CharT, class Traits, class Allocator = std::allocator<CharT> >
+std::basic_string<CharT, Traits, Allocator>
+to_string( std::basic_string_view<CharT, Traits> v, Allocator const & a = Allocator() )
+{
+ return std::basic_string<CharT,Traits, Allocator>( v.begin(), v.end(), a );
+}
+
+template< class CharT, class Traits, class Allocator >
+std::basic_string_view<CharT, Traits>
+to_string_view( std::basic_string<CharT, Traits, Allocator> const & s )
+{
+ return std::basic_string_view<CharT, Traits>( s.data(), s.size() );
+}
+
+// Literal operators sv and _sv:
+
+#if nssv_CONFIG_STD_SV_OPERATOR
+
+using namespace std::literals::string_view_literals;
+
+#endif
+
+#if nssv_CONFIG_USR_SV_OPERATOR
+
+inline namespace literals {
+inline namespace string_view_literals {
+
+
+constexpr std::string_view operator "" _sv( const char* str, size_t len ) noexcept // (1)
+{
+ return std::string_view{ str, len };
+}
+
+constexpr std::u16string_view operator "" _sv( const char16_t* str, size_t len ) noexcept // (2)
+{
+ return std::u16string_view{ str, len };
+}
+
+constexpr std::u32string_view operator "" _sv( const char32_t* str, size_t len ) noexcept // (3)
+{
+ return std::u32string_view{ str, len };
+}
+
+constexpr std::wstring_view operator "" _sv( const wchar_t* str, size_t len ) noexcept // (4)
+{
+ return std::wstring_view{ str, len };
+}
+
+}} // namespace literals::string_view_literals
+
+#endif // nssv_CONFIG_USR_SV_OPERATOR
+
+} // namespace nonstd
+
+#endif // nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS
+
+namespace nonstd {
+
+using std::string_view;
+using std::wstring_view;
+using std::u16string_view;
+using std::u32string_view;
+using std::basic_string_view;
+
+// literal "sv" and "_sv", see above
+
+using std::operator==;
+using std::operator!=;
+using std::operator<;
+using std::operator<=;
+using std::operator>;
+using std::operator>=;
+
+using std::operator<<;
+
+} // namespace nonstd
+
+#else // nssv_HAVE_STD_STRING_VIEW
+
+//
+// Before C++17: use string_view lite:
+//
+
+// Compiler versions:
+//
+// MSVC++ 6.0 _MSC_VER == 1200 (Visual Studio 6.0)
+// MSVC++ 7.0 _MSC_VER == 1300 (Visual Studio .NET 2002)
+// MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio .NET 2003)
+// MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005)
+// MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008)
+// MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010)
+// MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012)
+// MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013)
+// MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015)
+// MSVC++ 14.1 _MSC_VER >= 1910 (Visual Studio 2017)
+
+#if defined(_MSC_VER ) && !defined(__clang__)
+# define nssv_COMPILER_MSVC_VER (_MSC_VER )
+# define nssv_COMPILER_MSVC_VERSION (_MSC_VER / 10 - 10 * ( 5 + (_MSC_VER < 1900 ) ) )
+#else
+# define nssv_COMPILER_MSVC_VER 0
+# define nssv_COMPILER_MSVC_VERSION 0
+#endif
+
+#define nssv_COMPILER_VERSION( major, minor, patch ) (10 * ( 10 * major + minor) + patch)
+
+#if defined(__clang__)
+# define nssv_COMPILER_CLANG_VERSION nssv_COMPILER_VERSION(__clang_major__, __clang_minor__, __clang_patchlevel__)
+#else
+# define nssv_COMPILER_CLANG_VERSION 0
+#endif
+
+#if defined(__GNUC__) && !defined(__clang__)
+# define nssv_COMPILER_GNUC_VERSION nssv_COMPILER_VERSION(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__)
+#else
+# define nssv_COMPILER_GNUC_VERSION 0
+#endif
+
+// half-open range [lo..hi):
+#define nssv_BETWEEN( v, lo, hi ) ( (lo) <= (v) && (v) < (hi) )
+
+// Presence of language and library features:
+
+#ifdef _HAS_CPP0X
+# define nssv_HAS_CPP0X _HAS_CPP0X
+#else
+# define nssv_HAS_CPP0X 0
+#endif
+
+// Unless defined otherwise below, consider VC14 as C++11 for variant-lite:
+
+#if nssv_COMPILER_MSVC_VER >= 1900
+# undef nssv_CPP11_OR_GREATER
+# define nssv_CPP11_OR_GREATER 1
+#endif
+
+#define nssv_CPP11_90 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1500)
+#define nssv_CPP11_100 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1600)
+#define nssv_CPP11_110 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1700)
+#define nssv_CPP11_120 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1800)
+#define nssv_CPP11_140 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1900)
+#define nssv_CPP11_141 (nssv_CPP11_OR_GREATER_ || nssv_COMPILER_MSVC_VER >= 1910)
+
+#define nssv_CPP14_000 (nssv_CPP14_OR_GREATER)
+#define nssv_CPP17_000 (nssv_CPP17_OR_GREATER)
+
+// Presence of C++11 language features:
+
+#define nssv_HAVE_CONSTEXPR_11 nssv_CPP11_140
+#define nssv_HAVE_EXPLICIT_CONVERSION nssv_CPP11_140
+#define nssv_HAVE_INLINE_NAMESPACE nssv_CPP11_140
+#define nssv_HAVE_NOEXCEPT nssv_CPP11_140
+#define nssv_HAVE_NULLPTR nssv_CPP11_100
+#define nssv_HAVE_REF_QUALIFIER nssv_CPP11_140
+#define nssv_HAVE_UNICODE_LITERALS nssv_CPP11_140
+#define nssv_HAVE_USER_DEFINED_LITERALS nssv_CPP11_140
+#define nssv_HAVE_WCHAR16_T nssv_CPP11_100
+#define nssv_HAVE_WCHAR32_T nssv_CPP11_100
+
+#if ! ( ( nssv_CPP11 && nssv_COMPILER_CLANG_VERSION ) || nssv_BETWEEN( nssv_COMPILER_CLANG_VERSION, 300, 400 ) )
+# define nssv_HAVE_STD_DEFINED_LITERALS nssv_CPP11_140
+#endif
+
+// Presence of C++14 language features:
+
+#define nssv_HAVE_CONSTEXPR_14 nssv_CPP14_000
+
+// Presence of C++17 language features:
+
+#define nssv_HAVE_NODISCARD nssv_CPP17_000
+
+// Presence of C++ library features:
+
+#define nssv_HAVE_STD_HASH nssv_CPP11_120
+
+// C++ feature usage:
+
+#if nssv_HAVE_CONSTEXPR_11
+# define nssv_constexpr constexpr
+#else
+# define nssv_constexpr /*constexpr*/
+#endif
+
+#if nssv_HAVE_CONSTEXPR_14
+# define nssv_constexpr14 constexpr
+#else
+# define nssv_constexpr14 /*constexpr*/
+#endif
+
+#if nssv_HAVE_EXPLICIT_CONVERSION
+# define nssv_explicit explicit
+#else
+# define nssv_explicit /*explicit*/
+#endif
+
+#if nssv_HAVE_INLINE_NAMESPACE
+# define nssv_inline_ns inline
+#else
+# define nssv_inline_ns /*inline*/
+#endif
+
+#if nssv_HAVE_NOEXCEPT
+# define nssv_noexcept noexcept
+#else
+# define nssv_noexcept /*noexcept*/
+#endif
+
+//#if nssv_HAVE_REF_QUALIFIER
+//# define nssv_ref_qual &
+//# define nssv_refref_qual &&
+//#else
+//# define nssv_ref_qual /*&*/
+//# define nssv_refref_qual /*&&*/
+//#endif
+
+#if nssv_HAVE_NULLPTR
+# define nssv_nullptr nullptr
+#else
+# define nssv_nullptr NULL
+#endif
+
+#if nssv_HAVE_NODISCARD
+# define nssv_nodiscard [[nodiscard]]
+#else
+# define nssv_nodiscard /*[[nodiscard]]*/
+#endif
+
+// Additional includes:
+
+#include <algorithm>
+#include <cassert>
+#include <iterator>
+#include <limits>
+#include <ostream>
+#include <string> // std::char_traits<>
+
+#if ! nssv_CONFIG_NO_EXCEPTIONS
+# include <stdexcept>
+#endif
+
+#if nssv_CPP11_OR_GREATER
+# include <type_traits>
+#endif
+
+// Clang, GNUC, MSVC warning suppression macros:
+
+#if defined(__clang__)
+# pragma clang diagnostic ignored "-Wreserved-user-defined-literal"
+# pragma clang diagnostic push
+# pragma clang diagnostic ignored "-Wuser-defined-literals"
+#elif defined(__GNUC__)
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wliteral-suffix"
+#endif // __clang__
+
+#if nssv_COMPILER_MSVC_VERSION >= 140
+# define nssv_SUPPRESS_MSGSL_WARNING(expr) [[gsl::suppress(expr)]]
+# define nssv_SUPPRESS_MSVC_WARNING(code, descr) __pragma(warning(suppress: code) )
+# define nssv_DISABLE_MSVC_WARNINGS(codes) __pragma(warning(push)) __pragma(warning(disable: codes))
+#else
+# define nssv_SUPPRESS_MSGSL_WARNING(expr)
+# define nssv_SUPPRESS_MSVC_WARNING(code, descr)
+# define nssv_DISABLE_MSVC_WARNINGS(codes)
+#endif
+
+#if defined(__clang__)
+# define nssv_RESTORE_WARNINGS() _Pragma("clang diagnostic pop")
+#elif defined(__GNUC__)
+# define nssv_RESTORE_WARNINGS() _Pragma("GCC diagnostic pop")
+#elif nssv_COMPILER_MSVC_VERSION >= 140
+# define nssv_RESTORE_WARNINGS() __pragma(warning(pop ))
+#else
+# define nssv_RESTORE_WARNINGS()
+#endif
+
+// Suppress the following MSVC (GSL) warnings:
+// - C4455, non-gsl : 'operator ""sv': literal suffix identifiers that do not
+// start with an underscore are reserved
+// - C26472, gsl::t.1 : don't use a static_cast for arithmetic conversions;
+// use brace initialization, gsl::narrow_cast or gsl::narow
+// - C26481: gsl::b.1 : don't use pointer arithmetic. Use span instead
+
+nssv_DISABLE_MSVC_WARNINGS( 4455 26481 26472 )
+//nssv_DISABLE_CLANG_WARNINGS( "-Wuser-defined-literals" )
+//nssv_DISABLE_GNUC_WARNINGS( -Wliteral-suffix )
+
+namespace nonstd { namespace sv_lite {
+
+template
+<
+ class CharT,
+ class Traits = std::char_traits<CharT>
+>
+class basic_string_view;
+
+//
+// basic_string_view:
+//
+
+template
+<
+ class CharT,
+ class Traits /* = std::char_traits<CharT> */
+>
+class basic_string_view
+{
+public:
+ // Member types:
+
+ typedef Traits traits_type;
+ typedef CharT value_type;
+
+ typedef CharT * pointer;
+ typedef CharT const * const_pointer;
+ typedef CharT & reference;
+ typedef CharT const & const_reference;
+
+ typedef const_pointer iterator;
+ typedef const_pointer const_iterator;
+ typedef std::reverse_iterator< const_iterator > reverse_iterator;
+ typedef std::reverse_iterator< const_iterator > const_reverse_iterator;
+
+ typedef std::size_t size_type;
+ typedef std::ptrdiff_t difference_type;
+
+ // 24.4.2.1 Construction and assignment:
+
+ nssv_constexpr basic_string_view() nssv_noexcept
+ : data_( nssv_nullptr )
+ , size_( 0 )
+ {}
+
+#if nssv_CPP11_OR_GREATER
+ nssv_constexpr basic_string_view( basic_string_view const & other ) nssv_noexcept = default;
+#else
+ nssv_constexpr basic_string_view( basic_string_view const & other ) nssv_noexcept
+ : data_( other.data_)
+ , size_( other.size_)
+ {}
+#endif
+
+ nssv_constexpr basic_string_view( CharT const * s, size_type count )
+ : data_( s )
+ , size_( count )
+ {}
+
+ nssv_constexpr basic_string_view( CharT const * s)
+ : data_( s )
+ , size_( Traits::length(s) )
+ {}
+
+ // Assignment:
+
+#if nssv_CPP11_OR_GREATER
+ nssv_constexpr14 basic_string_view & operator=( basic_string_view const & other ) nssv_noexcept = default;
+#else
+ nssv_constexpr14 basic_string_view & operator=( basic_string_view const & other ) nssv_noexcept
+ {
+ data_ = other.data_;
+ size_ = other.size_;
+ return *this;
+ }
+#endif
+
+ // 24.4.2.2 Iterator support:
+
+ nssv_constexpr const_iterator begin() const nssv_noexcept { return data_; }
+ nssv_constexpr const_iterator end() const nssv_noexcept { return data_ + size_; }
+
+ nssv_constexpr const_iterator cbegin() const nssv_noexcept { return begin(); }
+ nssv_constexpr const_iterator cend() const nssv_noexcept { return end(); }
+
+ nssv_constexpr const_reverse_iterator rbegin() const nssv_noexcept { return const_reverse_iterator( end() ); }
+ nssv_constexpr const_reverse_iterator rend() const nssv_noexcept { return const_reverse_iterator( begin() ); }
+
+ nssv_constexpr const_reverse_iterator crbegin() const nssv_noexcept { return rbegin(); }
+ nssv_constexpr const_reverse_iterator crend() const nssv_noexcept { return rend(); }
+
+ // 24.4.2.3 Capacity:
+
+ nssv_constexpr size_type size() const nssv_noexcept { return size_; }
+ nssv_constexpr size_type length() const nssv_noexcept { return size_; }
+ nssv_constexpr size_type max_size() const nssv_noexcept { return (std::numeric_limits< size_type >::max)(); }
+
+ // since C++20
+ nssv_nodiscard nssv_constexpr bool empty() const nssv_noexcept
+ {
+ return 0 == size_;
+ }
+
+ // 24.4.2.4 Element access:
+
+ nssv_constexpr const_reference operator[]( size_type pos ) const
+ {
+ return data_at( pos );
+ }
+
+ nssv_constexpr14 const_reference at( size_type pos ) const
+ {
+#if nssv_CONFIG_NO_EXCEPTIONS
+ assert( pos < size() );
+#else
+ if ( pos >= size() )
+ {
+ throw std::out_of_range("nonst::string_view::at()");
+ }
+#endif
+ return data_at( pos );
+ }
+
+ nssv_constexpr const_reference front() const { return data_at( 0 ); }
+ nssv_constexpr const_reference back() const { return data_at( size() - 1 ); }
+
+ nssv_constexpr const_pointer data() const nssv_noexcept { return data_; }
+
+ // 24.4.2.5 Modifiers:
+
+ nssv_constexpr14 void remove_prefix( size_type n )
+ {
+ assert( n <= size() );
+ data_ += n;
+ size_ -= n;
+ }
+
+ nssv_constexpr14 void remove_suffix( size_type n )
+ {
+ assert( n <= size() );
+ size_ -= n;
+ }
+
+ nssv_constexpr14 void swap( basic_string_view & other ) nssv_noexcept
+ {
+ using std::swap;
+ swap( data_, other.data_ );
+ swap( size_, other.size_ );
+ }
+
+ // 24.4.2.6 String operations:
+
+ size_type copy( CharT * dest, size_type n, size_type pos = 0 ) const
+ {
+#if nssv_CONFIG_NO_EXCEPTIONS
+ assert( pos <= size() );
+#else
+ if ( pos > size() )
+ {
+ throw std::out_of_range("nonst::string_view::copy()");
+ }
+#endif
+ const size_type rlen = (std::min)( n, size() - pos );
+
+ (void) Traits::copy( dest, data() + pos, rlen );
+
+ return rlen;
+ }
+
+ nssv_constexpr14 basic_string_view substr( size_type pos = 0, size_type n = npos ) const
+ {
+#if nssv_CONFIG_NO_EXCEPTIONS
+ assert( pos <= size() );
+#else
+ if ( pos > size() )
+ {
+ throw std::out_of_range("nonst::string_view::substr()");
+ }
+#endif
+ return basic_string_view( data() + pos, (std::min)( n, size() - pos ) );
+ }
+
+ // compare(), 6x:
+
+ nssv_constexpr14 int compare( basic_string_view other ) const nssv_noexcept // (1)
+ {
+ if ( const int result = Traits::compare( data(), other.data(), (std::min)( size(), other.size() ) ) )
+ return result;
+
+ return size() == other.size() ? 0 : size() < other.size() ? -1 : 1;
+ }
+
+ nssv_constexpr int compare( size_type pos1, size_type n1, basic_string_view other ) const // (2)
+ {
+ return substr( pos1, n1 ).compare( other );
+ }
+
+ nssv_constexpr int compare( size_type pos1, size_type n1, basic_string_view other, size_type pos2, size_type n2 ) const // (3)
+ {
+ return substr( pos1, n1 ).compare( other.substr( pos2, n2 ) );
+ }
+
+ nssv_constexpr int compare( CharT const * s ) const // (4)
+ {
+ return compare( basic_string_view( s ) );
+ }
+
+ nssv_constexpr int compare( size_type pos1, size_type n1, CharT const * s ) const // (5)
+ {
+ return substr( pos1, n1 ).compare( basic_string_view( s ) );
+ }
+
+ nssv_constexpr int compare( size_type pos1, size_type n1, CharT const * s, size_type n2 ) const // (6)
+ {
+ return substr( pos1, n1 ).compare( basic_string_view( s, n2 ) );
+ }
+
+ // 24.4.2.7 Searching:
+
+ // starts_with(), 3x, since C++20:
+
+ nssv_constexpr bool starts_with( basic_string_view v ) const nssv_noexcept // (1)
+ {
+ return size() >= v.size() && compare( 0, v.size(), v ) == 0;
+ }
+
+ nssv_constexpr bool starts_with( CharT c ) const nssv_noexcept // (2)
+ {
+ return starts_with( basic_string_view( &c, 1 ) );
+ }
+
+ nssv_constexpr bool starts_with( CharT const * s ) const // (3)
+ {
+ return starts_with( basic_string_view( s ) );
+ }
+
+ // ends_with(), 3x, since C++20:
+
+ nssv_constexpr bool ends_with( basic_string_view v ) const nssv_noexcept // (1)
+ {
+ return size() >= v.size() && compare( size() - v.size(), npos, v ) == 0;
+ }
+
+ nssv_constexpr bool ends_with( CharT c ) const nssv_noexcept // (2)
+ {
+ return ends_with( basic_string_view( &c, 1 ) );
+ }
+
+ nssv_constexpr bool ends_with( CharT const * s ) const // (3)
+ {
+ return ends_with( basic_string_view( s ) );
+ }
+
+ // find(), 4x:
+
+ nssv_constexpr14 size_type find( basic_string_view v, size_type pos = 0 ) const nssv_noexcept // (1)
+ {
+ return assert( v.size() == 0 || v.data() != nssv_nullptr )
+ , pos >= size()
+ ? npos
+ : to_pos( std::search( cbegin() + pos, cend(), v.cbegin(), v.cend(), Traits::eq ) );
+ }
+
+ nssv_constexpr14 size_type find( CharT c, size_type pos = 0 ) const nssv_noexcept // (2)
+ {
+ return find( basic_string_view( &c, 1 ), pos );
+ }
+
+ nssv_constexpr14 size_type find( CharT const * s, size_type pos, size_type n ) const // (3)
+ {
+ return find( basic_string_view( s, n ), pos );
+ }
+
+ nssv_constexpr14 size_type find( CharT const * s, size_type pos = 0 ) const // (4)
+ {
+ return find( basic_string_view( s ), pos );
+ }
+
+ // rfind(), 4x:
+
+ nssv_constexpr14 size_type rfind( basic_string_view v, size_type pos = npos ) const nssv_noexcept // (1)
+ {
+ if ( size() < v.size() )
+ return npos;
+
+ if ( v.empty() )
+ return (std::min)( size(), pos );
+
+ const_iterator last = cbegin() + (std::min)( size() - v.size(), pos ) + v.size();
+ const_iterator result = std::find_end( cbegin(), last, v.cbegin(), v.cend(), Traits::eq );
+
+ return result != last ? size_type( result - cbegin() ) : npos;
+ }
+
+ nssv_constexpr14 size_type rfind( CharT c, size_type pos = npos ) const nssv_noexcept // (2)
+ {
+ return rfind( basic_string_view( &c, 1 ), pos );
+ }
+
+ nssv_constexpr14 size_type rfind( CharT const * s, size_type pos, size_type n ) const // (3)
+ {
+ return rfind( basic_string_view( s, n ), pos );
+ }
+
+ nssv_constexpr14 size_type rfind( CharT const * s, size_type pos = npos ) const // (4)
+ {
+ return rfind( basic_string_view( s ), pos );
+ }
+
+ // find_first_of(), 4x:
+
+ nssv_constexpr size_type find_first_of( basic_string_view v, size_type pos = 0 ) const nssv_noexcept // (1)
+ {
+ return pos >= size()
+ ? npos
+ : to_pos( std::find_first_of( cbegin() + pos, cend(), v.cbegin(), v.cend(), Traits::eq ) );
+ }
+
+ nssv_constexpr size_type find_first_of( CharT c, size_type pos = 0 ) const nssv_noexcept // (2)
+ {
+ return find_first_of( basic_string_view( &c, 1 ), pos );
+ }
+
+ nssv_constexpr size_type find_first_of( CharT const * s, size_type pos, size_type n ) const // (3)
+ {
+ return find_first_of( basic_string_view( s, n ), pos );
+ }
+
+ nssv_constexpr size_type find_first_of( CharT const * s, size_type pos = 0 ) const // (4)
+ {
+ return find_first_of( basic_string_view( s ), pos );
+ }
+
+ // find_last_of(), 4x:
+
+ nssv_constexpr size_type find_last_of( basic_string_view v, size_type pos = npos ) const nssv_noexcept // (1)
+ {
+ return empty()
+ ? npos
+ : pos >= size()
+ ? find_last_of( v, size() - 1 )
+ : to_pos( std::find_first_of( const_reverse_iterator( cbegin() + pos + 1 ), crend(), v.cbegin(), v.cend(), Traits::eq ) );
+ }
+
+ nssv_constexpr size_type find_last_of( CharT c, size_type pos = npos ) const nssv_noexcept // (2)
+ {
+ return find_last_of( basic_string_view( &c, 1 ), pos );
+ }
+
+ nssv_constexpr size_type find_last_of( CharT const * s, size_type pos, size_type count ) const // (3)
+ {
+ return find_last_of( basic_string_view( s, count ), pos );
+ }
+
+ nssv_constexpr size_type find_last_of( CharT const * s, size_type pos = npos ) const // (4)
+ {
+ return find_last_of( basic_string_view( s ), pos );
+ }
+
+ // find_first_not_of(), 4x:
+
+ nssv_constexpr size_type find_first_not_of( basic_string_view v, size_type pos = 0 ) const nssv_noexcept // (1)
+ {
+ return pos >= size()
+ ? npos
+ : to_pos( std::find_if( cbegin() + pos, cend(), not_in_view( v ) ) );
+ }
+
+ nssv_constexpr size_type find_first_not_of( CharT c, size_type pos = 0 ) const nssv_noexcept // (2)
+ {
+ return find_first_not_of( basic_string_view( &c, 1 ), pos );
+ }
+
+ nssv_constexpr size_type find_first_not_of( CharT const * s, size_type pos, size_type count ) const // (3)
+ {
+ return find_first_not_of( basic_string_view( s, count ), pos );
+ }
+
+ nssv_constexpr size_type find_first_not_of( CharT const * s, size_type pos = 0 ) const // (4)
+ {
+ return find_first_not_of( basic_string_view( s ), pos );
+ }
+
+ // find_last_not_of(), 4x:
+
+ nssv_constexpr size_type find_last_not_of( basic_string_view v, size_type pos = npos ) const nssv_noexcept // (1)
+ {
+ return empty()
+ ? npos
+ : pos >= size()
+ ? find_last_not_of( v, size() - 1 )
+ : to_pos( std::find_if( const_reverse_iterator( cbegin() + pos + 1 ), crend(), not_in_view( v ) ) );
+ }
+
+ nssv_constexpr size_type find_last_not_of( CharT c, size_type pos = npos ) const nssv_noexcept // (2)
+ {
+ return find_last_not_of( basic_string_view( &c, 1 ), pos );
+ }
+
+ nssv_constexpr size_type find_last_not_of( CharT const * s, size_type pos, size_type count ) const // (3)
+ {
+ return find_last_not_of( basic_string_view( s, count ), pos );
+ }
+
+ nssv_constexpr size_type find_last_not_of( CharT const * s, size_type pos = npos ) const // (4)
+ {
+ return find_last_not_of( basic_string_view( s ), pos );
+ }
+
+ // Constants:
+
+#if nssv_CPP17_OR_GREATER
+ static nssv_constexpr size_type npos = size_type(-1);
+#elif nssv_CPP11_OR_GREATER
+ enum : size_type { npos = size_type(-1) };
+#else
+ enum { npos = size_type(-1) };
+#endif
+
+private:
+ struct not_in_view
+ {
+ const basic_string_view v;
+
+ nssv_constexpr not_in_view( basic_string_view v ) : v( v ) {}
+
+ nssv_constexpr bool operator()( CharT c ) const
+ {
+ return npos == v.find_first_of( c );
+ }
+ };
+
+ nssv_constexpr size_type to_pos( const_iterator it ) const
+ {
+ return it == cend() ? npos : size_type( it - cbegin() );
+ }
+
+ nssv_constexpr size_type to_pos( const_reverse_iterator it ) const
+ {
+ return it == crend() ? npos : size_type( crend() - it - 1 );
+ }
+
+ nssv_constexpr const_reference data_at( size_type pos ) const
+ {
+#if nssv_BETWEEN( nssv_COMPILER_GNUC_VERSION, 1, 500 )
+ return data_[pos];
+#else
+ return assert( pos < size() ), data_[pos];
+#endif
+ }
+
+private:
+ const_pointer data_;
+ size_type size_;
+
+public:
+#if nssv_CONFIG_CONVERSION_STD_STRING_CLASS_METHODS
+
+ template< class Allocator >
+ basic_string_view( std::basic_string<CharT, Traits, Allocator> const & s ) nssv_noexcept
+ : data_( s.data() )
+ , size_( s.size() )
+ {}
+
+#if nssv_HAVE_EXPLICIT_CONVERSION
+
+ template< class Allocator >
+ explicit operator std::basic_string<CharT, Traits, Allocator>() const
+ {
+ return to_string( Allocator() );
+ }
+
+#endif // nssv_HAVE_EXPLICIT_CONVERSION
+
+#if nssv_CPP11_OR_GREATER
+
+ template< class Allocator = std::allocator<CharT> >
+ std::basic_string<CharT, Traits, Allocator>
+ to_string( Allocator const & a = Allocator() ) const
+ {
+ return std::basic_string<CharT, Traits, Allocator>( begin(), end(), a );
+ }
+
+#else
+
+ std::basic_string<CharT, Traits>
+ to_string() const
+ {
+ return std::basic_string<CharT, Traits>( begin(), end() );
+ }
+
+ template< class Allocator >
+ std::basic_string<CharT, Traits, Allocator>
+ to_string( Allocator const & a ) const
+ {
+ return std::basic_string<CharT, Traits, Allocator>( begin(), end(), a );
+ }
+
+#endif // nssv_CPP11_OR_GREATER
+
+#endif // nssv_CONFIG_CONVERSION_STD_STRING_CLASS_METHODS
+};
+
+//
+// Non-member functions:
+//
+
+// 24.4.3 Non-member comparison functions:
+// lexicographically compare two string views (function template):
+
+template< class CharT, class Traits >
+nssv_constexpr bool operator== (
+ basic_string_view <CharT, Traits> lhs,
+ basic_string_view <CharT, Traits> rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) == 0 ; }
+
+template< class CharT, class Traits >
+nssv_constexpr bool operator!= (
+ basic_string_view <CharT, Traits> lhs,
+ basic_string_view <CharT, Traits> rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) != 0 ; }
+
+template< class CharT, class Traits >
+nssv_constexpr bool operator< (
+ basic_string_view <CharT, Traits> lhs,
+ basic_string_view <CharT, Traits> rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) < 0 ; }
+
+template< class CharT, class Traits >
+nssv_constexpr bool operator<= (
+ basic_string_view <CharT, Traits> lhs,
+ basic_string_view <CharT, Traits> rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) <= 0 ; }
+
+template< class CharT, class Traits >
+nssv_constexpr bool operator> (
+ basic_string_view <CharT, Traits> lhs,
+ basic_string_view <CharT, Traits> rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) > 0 ; }
+
+template< class CharT, class Traits >
+nssv_constexpr bool operator>= (
+ basic_string_view <CharT, Traits> lhs,
+ basic_string_view <CharT, Traits> rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) >= 0 ; }
+
+// Let S be basic_string_view<CharT, Traits>, and sv be an instance of S.
+// Implementations shall provide sufficient additional overloads marked
+// constexpr and noexcept so that an object t with an implicit conversion
+// to S can be compared according to Table 67.
+
+#if nssv_CPP11_OR_GREATER && ! nssv_BETWEEN( nssv_COMPILER_MSVC_VERSION, 100, 141 )
+
+#define nssv_BASIC_STRING_VIEW_I(T,U) typename std::decay< basic_string_view<T,U> >::type
+
+#if nssv_BETWEEN( nssv_COMPILER_MSVC_VERSION, 140, 150 )
+# define nssv_MSVC_ORDER(x) , int=x
+#else
+# define nssv_MSVC_ORDER(x) /*, int=x*/
+#endif
+
+// ==
+
+template< class CharT, class Traits nssv_MSVC_ORDER(1) >
+nssv_constexpr bool operator==(
+ basic_string_view <CharT, Traits> lhs,
+ nssv_BASIC_STRING_VIEW_I(CharT, Traits) rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) == 0; }
+
+template< class CharT, class Traits nssv_MSVC_ORDER(2) >
+nssv_constexpr bool operator==(
+ nssv_BASIC_STRING_VIEW_I(CharT, Traits) lhs,
+ basic_string_view <CharT, Traits> rhs ) nssv_noexcept
+{ return lhs.size() == rhs.size() && lhs.compare( rhs ) == 0; }
+
+// !=
+
+template< class CharT, class Traits nssv_MSVC_ORDER(1) >
+nssv_constexpr bool operator!= (
+ basic_string_view < CharT, Traits > lhs,
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) rhs ) nssv_noexcept
+{ return lhs.size() != rhs.size() || lhs.compare( rhs ) != 0 ; }
+
+template< class CharT, class Traits nssv_MSVC_ORDER(2) >
+nssv_constexpr bool operator!= (
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) lhs,
+ basic_string_view < CharT, Traits > rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) != 0 ; }
+
+// <
+
+template< class CharT, class Traits nssv_MSVC_ORDER(1) >
+nssv_constexpr bool operator< (
+ basic_string_view < CharT, Traits > lhs,
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) < 0 ; }
+
+template< class CharT, class Traits nssv_MSVC_ORDER(2) >
+nssv_constexpr bool operator< (
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) lhs,
+ basic_string_view < CharT, Traits > rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) < 0 ; }
+
+// <=
+
+template< class CharT, class Traits nssv_MSVC_ORDER(1) >
+nssv_constexpr bool operator<= (
+ basic_string_view < CharT, Traits > lhs,
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) <= 0 ; }
+
+template< class CharT, class Traits nssv_MSVC_ORDER(2) >
+nssv_constexpr bool operator<= (
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) lhs,
+ basic_string_view < CharT, Traits > rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) <= 0 ; }
+
+// >
+
+template< class CharT, class Traits nssv_MSVC_ORDER(1) >
+nssv_constexpr bool operator> (
+ basic_string_view < CharT, Traits > lhs,
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) > 0 ; }
+
+template< class CharT, class Traits nssv_MSVC_ORDER(2) >
+nssv_constexpr bool operator> (
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) lhs,
+ basic_string_view < CharT, Traits > rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) > 0 ; }
+
+// >=
+
+template< class CharT, class Traits nssv_MSVC_ORDER(1) >
+nssv_constexpr bool operator>= (
+ basic_string_view < CharT, Traits > lhs,
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) >= 0 ; }
+
+template< class CharT, class Traits nssv_MSVC_ORDER(2) >
+nssv_constexpr bool operator>= (
+ nssv_BASIC_STRING_VIEW_I( CharT, Traits ) lhs,
+ basic_string_view < CharT, Traits > rhs ) nssv_noexcept
+{ return lhs.compare( rhs ) >= 0 ; }
+
+#undef nssv_MSVC_ORDER
+#undef nssv_BASIC_STRING_VIEW_I
+
+#endif // nssv_CPP11_OR_GREATER
+
+// 24.4.4 Inserters and extractors:
+
+namespace detail {
+
+template< class Stream >
+void write_padding( Stream & os, std::streamsize n )
+{
+ for ( std::streamsize i = 0; i < n; ++i )
+ os.rdbuf()->sputc( os.fill() );
+}
+
+template< class Stream, class View >
+Stream & write_to_stream( Stream & os, View const & sv )
+{
+ typename Stream::sentry sentry( os );
+
+ if ( !os )
+ return os;
+
+ const std::streamsize length = static_cast<std::streamsize>( sv.length() );
+
+ // Whether, and how, to pad:
+ const bool pad = ( length < os.width() );
+ const bool left_pad = pad && ( os.flags() & std::ios_base::adjustfield ) == std::ios_base::right;
+
+ if ( left_pad )
+ write_padding( os, os.width() - length );
+
+ // Write span characters:
+ os.rdbuf()->sputn( sv.begin(), length );
+
+ if ( pad && !left_pad )
+ write_padding( os, os.width() - length );
+
+ // Reset output stream width:
+ os.width( 0 );
+
+ return os;
+}
+
+} // namespace detail
+
+template< class CharT, class Traits >
+std::basic_ostream<CharT, Traits> &
+operator<<(
+ std::basic_ostream<CharT, Traits>& os,
+ basic_string_view <CharT, Traits> sv )
+{
+ return detail::write_to_stream( os, sv );
+}
+
+// Several typedefs for common character types are provided:
+
+typedef basic_string_view<char> string_view;
+typedef basic_string_view<wchar_t> wstring_view;
+#if nssv_HAVE_WCHAR16_T
+typedef basic_string_view<char16_t> u16string_view;
+typedef basic_string_view<char32_t> u32string_view;
+#endif
+
+}} // namespace nonstd::sv_lite
+
+//
+// 24.4.6 Suffix for basic_string_view literals:
+//
+
+#if nssv_HAVE_USER_DEFINED_LITERALS
+
+namespace nonstd {
+nssv_inline_ns namespace literals {
+nssv_inline_ns namespace string_view_literals {
+
+#if nssv_CONFIG_STD_SV_OPERATOR && nssv_HAVE_STD_DEFINED_LITERALS
+
+nssv_constexpr nonstd::sv_lite::string_view operator "" sv( const char* str, size_t len ) nssv_noexcept // (1)
+{
+ return nonstd::sv_lite::string_view{ str, len };
+}
+
+nssv_constexpr nonstd::sv_lite::u16string_view operator "" sv( const char16_t* str, size_t len ) nssv_noexcept // (2)
+{
+ return nonstd::sv_lite::u16string_view{ str, len };
+}
+
+nssv_constexpr nonstd::sv_lite::u32string_view operator "" sv( const char32_t* str, size_t len ) nssv_noexcept // (3)
+{
+ return nonstd::sv_lite::u32string_view{ str, len };
+}
+
+nssv_constexpr nonstd::sv_lite::wstring_view operator "" sv( const wchar_t* str, size_t len ) nssv_noexcept // (4)
+{
+ return nonstd::sv_lite::wstring_view{ str, len };
+}
+
+#endif // nssv_CONFIG_STD_SV_OPERATOR && nssv_HAVE_STD_DEFINED_LITERALS
+
+#if nssv_CONFIG_USR_SV_OPERATOR
+
+nssv_constexpr nonstd::sv_lite::string_view operator "" _sv( const char* str, size_t len ) nssv_noexcept // (1)
+{
+ return nonstd::sv_lite::string_view{ str, len };
+}
+
+nssv_constexpr nonstd::sv_lite::u16string_view operator "" _sv( const char16_t* str, size_t len ) nssv_noexcept // (2)
+{
+ return nonstd::sv_lite::u16string_view{ str, len };
+}
+
+nssv_constexpr nonstd::sv_lite::u32string_view operator "" _sv( const char32_t* str, size_t len ) nssv_noexcept // (3)
+{
+ return nonstd::sv_lite::u32string_view{ str, len };
+}
+
+nssv_constexpr nonstd::sv_lite::wstring_view operator "" _sv( const wchar_t* str, size_t len ) nssv_noexcept // (4)
+{
+ return nonstd::sv_lite::wstring_view{ str, len };
+}
+
+#endif // nssv_CONFIG_USR_SV_OPERATOR
+
+}}} // namespace nonstd::literals::string_view_literals
+
+#endif
+
+//
+// Extensions for std::string:
+//
+
+#if nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS
+
+namespace nonstd {
+namespace sv_lite {
+
+// Exclude MSVC 14 (19.00): it yields ambiguous to_string():
+
+#if nssv_CPP11_OR_GREATER && nssv_COMPILER_MSVC_VERSION != 140
+
+template< class CharT, class Traits, class Allocator = std::allocator<CharT> >
+std::basic_string<CharT, Traits, Allocator>
+to_string( basic_string_view<CharT, Traits> v, Allocator const & a = Allocator() )
+{
+ return std::basic_string<CharT,Traits, Allocator>( v.begin(), v.end(), a );
+}
+
+#else
+
+template< class CharT, class Traits >
+std::basic_string<CharT, Traits>
+to_string( basic_string_view<CharT, Traits> v )
+{
+ return std::basic_string<CharT, Traits>( v.begin(), v.end() );
+}
+
+template< class CharT, class Traits, class Allocator >
+std::basic_string<CharT, Traits, Allocator>
+to_string( basic_string_view<CharT, Traits> v, Allocator const & a )
+{
+ return std::basic_string<CharT, Traits, Allocator>( v.begin(), v.end(), a );
+}
+
+#endif // nssv_CPP11_OR_GREATER
+
+template< class CharT, class Traits, class Allocator >
+basic_string_view<CharT, Traits>
+to_string_view( std::basic_string<CharT, Traits, Allocator> const & s )
+{
+ return basic_string_view<CharT, Traits>( s.data(), s.size() );
+}
+
+}} // namespace nonstd::sv_lite
+
+#endif // nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS
+
+//
+// make types and algorithms available in namespace nonstd:
+//
+
+namespace nonstd {
+
+using sv_lite::basic_string_view;
+using sv_lite::string_view;
+using sv_lite::wstring_view;
+
+#if nssv_HAVE_WCHAR16_T
+using sv_lite::u16string_view;
+#endif
+#if nssv_HAVE_WCHAR32_T
+using sv_lite::u32string_view;
+#endif
+
+// literal "sv"
+
+using sv_lite::operator==;
+using sv_lite::operator!=;
+using sv_lite::operator<;
+using sv_lite::operator<=;
+using sv_lite::operator>;
+using sv_lite::operator>=;
+
+using sv_lite::operator<<;
+
+#if nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS
+using sv_lite::to_string;
+using sv_lite::to_string_view;
+#endif
+
+} // namespace nonstd
+
+// 24.4.5 Hash support (C++11):
+
+// Note: The hash value of a string view object is equal to the hash value of
+// the corresponding string object.
+
+#if nssv_HAVE_STD_HASH
+
+#include <functional>
+
+namespace std {
+
+template<>
+struct hash< nonstd::string_view >
+{
+public:
+ std::size_t operator()( nonstd::string_view v ) const nssv_noexcept
+ {
+ return std::hash<std::string>()( std::string( v.data(), v.size() ) );
+ }
+};
+
+template<>
+struct hash< nonstd::wstring_view >
+{
+public:
+ std::size_t operator()( nonstd::wstring_view v ) const nssv_noexcept
+ {
+ return std::hash<std::wstring>()( std::wstring( v.data(), v.size() ) );
+ }
+};
+
+template<>
+struct hash< nonstd::u16string_view >
+{
+public:
+ std::size_t operator()( nonstd::u16string_view v ) const nssv_noexcept
+ {
+ return std::hash<std::u16string>()( std::u16string( v.data(), v.size() ) );
+ }
+};
+
+template<>
+struct hash< nonstd::u32string_view >
+{
+public:
+ std::size_t operator()( nonstd::u32string_view v ) const nssv_noexcept
+ {
+ return std::hash<std::u32string>()( std::u32string( v.data(), v.size() ) );
+ }
+};
+
+} // namespace std
+
+#endif // nssv_HAVE_STD_HASH
+
+nssv_RESTORE_WARNINGS()
+
+#endif // nssv_HAVE_STD_STRING_VIEW
+#endif // NONSTD_SV_LITE_H_INCLUDED
+
+
+
+namespace inja {
+
+enum class ElementNotation {
+ Dot,
+ Pointer
+};
+
+struct LexerConfig {
+ std::string statement_open {"{%"};
+ std::string statement_close {"%}"};
+ std::string line_statement {"##"};
+ std::string expression_open {"{{"};
+ std::string expression_close {"}}"};
+ std::string comment_open {"{#"};
+ std::string comment_close {"#}"};
+ std::string open_chars {"#{"};
+
+ void update_open_chars() {
+ open_chars = "";
+ if (open_chars.find(line_statement[0]) == std::string::npos) {
+ open_chars += line_statement[0];
+ }
+ if (open_chars.find(statement_open[0]) == std::string::npos) {
+ open_chars += statement_open[0];
+ }
+ if (open_chars.find(expression_open[0]) == std::string::npos) {
+ open_chars += expression_open[0];
+ }
+ if (open_chars.find(comment_open[0]) == std::string::npos) {
+ open_chars += comment_open[0];
+ }
+ }
+};
+
+struct ParserConfig {
+ ElementNotation notation {ElementNotation::Dot};
+};
+
+}
+
+#endif // PANTOR_INJA_CONFIG_HPP
+
+// #include "function_storage.hpp"
+#ifndef PANTOR_INJA_FUNCTION_STORAGE_HPP
+#define PANTOR_INJA_FUNCTION_STORAGE_HPP
+
+// #include "bytecode.hpp"
+#ifndef PANTOR_INJA_BYTECODE_HPP
+#define PANTOR_INJA_BYTECODE_HPP
+
+#include <utility>
+
+#include <nlohmann/json.hpp>
+
+// #include "string_view.hpp"
+
+
+
+namespace inja {
+
+using namespace nlohmann;
+
+
+struct Bytecode {
+ enum class Op : uint8_t {
+ Nop,
+ // print StringRef (always immediate)
+ PrintText,
+ // print value
+ PrintValue,
+ // push value onto stack (always immediate)
+ Push,
+
+ // builtin functions
+ // result is pushed to stack
+ // args specify number of arguments
+ // all functions can take their "last" argument either immediate
+ // or popped off stack (e.g. if immediate, it's like the immediate was
+ // just pushed to the stack)
+ Not,
+ And,
+ Or,
+ In,
+ Equal,
+ Greater,
+ GreaterEqual,
+ Less,
+ LessEqual,
+ Different,
+ DivisibleBy,
+ Even,
+ First,
+ Float,
+ Int,
+ Last,
+ Length,
+ Lower,
+ Max,
+ Min,
+ Odd,
+ Range,
+ Result,
+ Round,
+ Sort,
+ Upper,
+ Exists,
+ ExistsInObject,
+ IsBoolean,
+ IsNumber,
+ IsInteger,
+ IsFloat,
+ IsObject,
+ IsArray,
+ IsString,
+ Default,
+
+ // include another template
+ // value is the template name
+ Include,
+
+ // callback function
+ // str is the function name (this means it cannot be a lookup)
+ // args specify number of arguments
+ // as with builtin functions, "last" argument can be immediate
+ Callback,
+
+ // unconditional jump
+ // args is the index of the bytecode to jump to.
+ Jump,
+
+ // conditional jump
+ // value popped off stack is checked for truthyness
+ // if false, args is the index of the bytecode to jump to.
+ // if true, no action is taken (falls through)
+ ConditionalJump,
+
+ // start loop
+ // value popped off stack is what is iterated over
+ // args is index of bytecode after end loop (jumped to if iterable is
+ // empty)
+ // immediate value is key name (for maps)
+ // str is value name
+ StartLoop,
+
+ // end a loop
+ // args is index of the first bytecode in the loop body
+ EndLoop,
+ };
+
+ enum Flag {
+ // location of value for value-taking ops (mask)
+ ValueMask = 0x03,
+ // pop value off stack
+ ValuePop = 0x00,
+ // value is immediate rather than on stack
+ ValueImmediate = 0x01,
+ // lookup immediate str (dot notation)
+ ValueLookupDot = 0x02,
+ // lookup immediate str (json pointer notation)
+ ValueLookupPointer = 0x03,
+ };
+
+ Op op {Op::Nop};
+ uint32_t args: 30;
+ uint32_t flags: 2;
+
+ json value;
+ std::string str;
+
+ Bytecode(): args(0), flags(0) {}
+ explicit Bytecode(Op op, unsigned int args = 0): op(op), args(args), flags(0) {}
+ explicit Bytecode(Op op, nonstd::string_view str, unsigned int flags): op(op), args(0), flags(flags), str(str) {}
+ explicit Bytecode(Op op, json&& value, unsigned int flags): op(op), args(0), flags(flags), value(std::move(value)) {}
+};
+
+} // namespace inja
+
+#endif // PANTOR_INJA_BYTECODE_HPP
+
+// #include "string_view.hpp"
+
+
+
+namespace inja {
+
+using namespace nlohmann;
+
+using Arguments = std::vector<const json*>;
+using CallbackFunction = std::function<json(Arguments& args)>;
+
+class FunctionStorage {
+ public:
+ void add_builtin(nonstd::string_view name, unsigned int num_args, Bytecode::Op op) {
+ auto& data = get_or_new(name, num_args);
+ data.op = op;
+ }
+
+ void add_callback(nonstd::string_view name, unsigned int num_args, const CallbackFunction& function) {
+ auto& data = get_or_new(name, num_args);
+ data.function = function;
+ }
+
+ Bytecode::Op find_builtin(nonstd::string_view name, unsigned int num_args) const {
+ if (auto ptr = get(name, num_args)) {
+ return ptr->op;
+ }
+ return Bytecode::Op::Nop;
+ }
+
+ CallbackFunction find_callback(nonstd::string_view name, unsigned int num_args) const {
+ if (auto ptr = get(name, num_args)) {
+ return ptr->function;
+ }
+ return nullptr;
+ }
+
+ private:
+ struct FunctionData {
+ unsigned int num_args {0};
+ Bytecode::Op op {Bytecode::Op::Nop}; // for builtins
+ CallbackFunction function; // for callbacks
+ };
+
+ FunctionData& get_or_new(nonstd::string_view name, unsigned int num_args) {
+ auto &vec = m_map[static_cast<std::string>(name)];
+ for (auto &i: vec) {
+ if (i.num_args == num_args) return i;
+ }
+ vec.emplace_back();
+ vec.back().num_args = num_args;
+ return vec.back();
+ }
+
+ const FunctionData* get(nonstd::string_view name, unsigned int num_args) const {
+ auto it = m_map.find(static_cast<std::string>(name));
+ if (it == m_map.end()) return nullptr;
+ for (auto &&i: it->second) {
+ if (i.num_args == num_args) return &i;
+ }
+ return nullptr;
+ }
+
+ std::map<std::string, std::vector<FunctionData>> m_map;
+};
+
+}
+
+#endif // PANTOR_INJA_FUNCTION_STORAGE_HPP
+
+// #include "parser.hpp"
+#ifndef PANTOR_INJA_PARSER_HPP
+#define PANTOR_INJA_PARSER_HPP
+
+#include <limits>
+
+// #include "bytecode.hpp"
+
+// #include "config.hpp"
+
+// #include "function_storage.hpp"
+
+// #include "lexer.hpp"
+#ifndef PANTOR_INJA_LEXER_HPP
+#define PANTOR_INJA_LEXER_HPP
+
+#include <cctype>
+#include <locale>
+
+// #include "config.hpp"
+
+// #include "token.hpp"
+#ifndef PANTOR_INJA_TOKEN_HPP
+#define PANTOR_INJA_TOKEN_HPP
+
+// #include "string_view.hpp"
+
+
+
+namespace inja {
+
+struct Token {
+ enum class Kind {
+ Text,
+ ExpressionOpen, // {{
+ ExpressionClose, // }}
+ LineStatementOpen, // ##
+ LineStatementClose, // \n
+ StatementOpen, // {%
+ StatementClose, // %}
+ CommentOpen, // {#
+ CommentClose, // #}
+ Id, // this, this.foo
+ Number, // 1, 2, -1, 5.2, -5.3
+ String, // "this"
+ Comma, // ,
+ Colon, // :
+ LeftParen, // (
+ RightParen, // )
+ LeftBracket, // [
+ RightBracket, // ]
+ LeftBrace, // {
+ RightBrace, // }
+ Equal, // ==
+ GreaterThan, // >
+ GreaterEqual, // >=
+ LessThan, // <
+ LessEqual, // <=
+ NotEqual, // !=
+ Unknown,
+ Eof
+ } kind {Kind::Unknown};
+
+ nonstd::string_view text;
+
+ constexpr Token() = default;
+ constexpr Token(Kind kind, nonstd::string_view text): kind(kind), text(text) {}
+
+ std::string describe() const {
+ switch (kind) {
+ case Kind::Text:
+ return "<text>";
+ case Kind::LineStatementClose:
+ return "<eol>";
+ case Kind::Eof:
+ return "<eof>";
+ default:
+ return static_cast<std::string>(text);
+ }
+ }
+};
+
+}
+
+#endif // PANTOR_INJA_TOKEN_HPP
+
+// #include "utils.hpp"
+#ifndef PANTOR_INJA_UTILS_HPP
+#define PANTOR_INJA_UTILS_HPP
+
+#include <stdexcept>
+
+// #include "string_view.hpp"
+
+
+
+namespace inja {
+
+inline void inja_throw(const std::string& type, const std::string& message) {
+ throw std::runtime_error("[inja.exception." + type + "] " + message);
+}
+
+namespace string_view {
+ inline nonstd::string_view slice(nonstd::string_view view, size_t start, size_t end) {
+ start = std::min(start, view.size());
+ end = std::min(std::max(start, end), view.size());
+ return view.substr(start, end - start); // StringRef(Data + Start, End - Start);
+ }
+
+ inline std::pair<nonstd::string_view, nonstd::string_view> split(nonstd::string_view view, char Separator) {
+ size_t idx = view.find(Separator);
+ if (idx == nonstd::string_view::npos) {
+ return std::make_pair(view, nonstd::string_view());
+ }
+ return std::make_pair(slice(view, 0, idx), slice(view, idx + 1, nonstd::string_view::npos));
+ }
+
+ inline bool starts_with(nonstd::string_view view, nonstd::string_view prefix) {
+ return (view.size() >= prefix.size() && view.compare(0, prefix.size(), prefix) == 0);
+ }
+} // namespace string
+
+} // namespace inja
+
+#endif // PANTOR_INJA_UTILS_HPP
+
+
+
+namespace inja {
+
+class Lexer {
+ enum class State {
+ Text,
+ ExpressionStart,
+ ExpressionBody,
+ LineStart,
+ LineBody,
+ StatementStart,
+ StatementBody,
+ CommentStart,
+ CommentBody
+ } m_state;
+
+ const LexerConfig& m_config;
+ nonstd::string_view m_in;
+ size_t m_tok_start;
+ size_t m_pos;
+
+ public:
+ explicit Lexer(const LexerConfig& config) : m_config(config) {}
+
+ void start(nonstd::string_view in) {
+ m_in = in;
+ m_tok_start = 0;
+ m_pos = 0;
+ m_state = State::Text;
+ }
+
+ Token scan() {
+ m_tok_start = m_pos;
+
+ again:
+ if (m_tok_start >= m_in.size()) return make_token(Token::Kind::Eof);
+
+ switch (m_state) {
+ default:
+ case State::Text: {
+ // fast-scan to first open character
+ size_t open_start = m_in.substr(m_pos).find_first_of(m_config.open_chars);
+ if (open_start == nonstd::string_view::npos) {
+ // didn't find open, return remaining text as text token
+ m_pos = m_in.size();
+ return make_token(Token::Kind::Text);
+ }
+ m_pos += open_start;
+
+ // try to match one of the opening sequences, and get the close
+ nonstd::string_view open_str = m_in.substr(m_pos);
+ if (inja::string_view::starts_with(open_str, m_config.expression_open)) {
+ m_state = State::ExpressionStart;
+ } else if (inja::string_view::starts_with(open_str, m_config.statement_open)) {
+ m_state = State::StatementStart;
+ } else if (inja::string_view::starts_with(open_str, m_config.comment_open)) {
+ m_state = State::CommentStart;
+ } else if ((m_pos == 0 || m_in[m_pos - 1] == '\n') &&
+ inja::string_view::starts_with(open_str, m_config.line_statement)) {
+ m_state = State::LineStart;
+ } else {
+ m_pos += 1; // wasn't actually an opening sequence
+ goto again;
+ }
+ if (m_pos == m_tok_start) goto again; // don't generate empty token
+ return make_token(Token::Kind::Text);
+ }
+ case State::ExpressionStart: {
+ m_state = State::ExpressionBody;
+ m_pos += m_config.expression_open.size();
+ return make_token(Token::Kind::ExpressionOpen);
+ }
+ case State::LineStart: {
+ m_state = State::LineBody;
+ m_pos += m_config.line_statement.size();
+ return make_token(Token::Kind::LineStatementOpen);
+ }
+ case State::StatementStart: {
+ m_state = State::StatementBody;
+ m_pos += m_config.statement_open.size();
+ return make_token(Token::Kind::StatementOpen);
+ }
+ case State::CommentStart: {
+ m_state = State::CommentBody;
+ m_pos += m_config.comment_open.size();
+ return make_token(Token::Kind::CommentOpen);
+ }
+ case State::ExpressionBody:
+ return scan_body(m_config.expression_close, Token::Kind::ExpressionClose);
+ case State::LineBody:
+ return scan_body("\n", Token::Kind::LineStatementClose);
+ case State::StatementBody:
+ return scan_body(m_config.statement_close, Token::Kind::StatementClose);
+ case State::CommentBody: {
+ // fast-scan to comment close
+ size_t end = m_in.substr(m_pos).find(m_config.comment_close);
+ if (end == nonstd::string_view::npos) {
+ m_pos = m_in.size();
+ return make_token(Token::Kind::Eof);
+ }
+ // return the entire comment in the close token
+ m_state = State::Text;
+ m_pos += end + m_config.comment_close.size();
+ return make_token(Token::Kind::CommentClose);
+ }
+ }
+ }
+
+ const LexerConfig& get_config() const { return m_config; }
+
+ private:
+ Token scan_body(nonstd::string_view close, Token::Kind closeKind) {
+ again:
+ // skip whitespace (except for \n as it might be a close)
+ if (m_tok_start >= m_in.size()) return make_token(Token::Kind::Eof);
+ char ch = m_in[m_tok_start];
+ if (ch == ' ' || ch == '\t' || ch == '\r') {
+ m_tok_start += 1;
+ goto again;
+ }
+
+ // check for close
+ if (inja::string_view::starts_with(m_in.substr(m_tok_start), close)) {
+ m_state = State::Text;
+ m_pos = m_tok_start + close.size();
+ return make_token(closeKind);
+ }
+
+ // skip \n
+ if (ch == '\n') {
+ m_tok_start += 1;
+ goto again;
+ }
+
+ m_pos = m_tok_start + 1;
+ if (std::isalpha(ch)) return scan_id();
+ switch (ch) {
+ case ',':
+ return make_token(Token::Kind::Comma);
+ case ':':
+ return make_token(Token::Kind::Colon);
+ case '(':
+ return make_token(Token::Kind::LeftParen);
+ case ')':
+ return make_token(Token::Kind::RightParen);
+ case '[':
+ return make_token(Token::Kind::LeftBracket);
+ case ']':
+ return make_token(Token::Kind::RightBracket);
+ case '{':
+ return make_token(Token::Kind::LeftBrace);
+ case '}':
+ return make_token(Token::Kind::RightBrace);
+ case '>':
+ if (m_pos < m_in.size() && m_in[m_pos] == '=') {
+ m_pos += 1;
+ return make_token(Token::Kind::GreaterEqual);
+ }
+ return make_token(Token::Kind::GreaterThan);
+ case '<':
+ if (m_pos < m_in.size() && m_in[m_pos] == '=') {
+ m_pos += 1;
+ return make_token(Token::Kind::LessEqual);
+ }
+ return make_token(Token::Kind::LessThan);
+ case '=':
+ if (m_pos < m_in.size() && m_in[m_pos] == '=') {
+ m_pos += 1;
+ return make_token(Token::Kind::Equal);
+ }
+ return make_token(Token::Kind::Unknown);
+ case '!':
+ if (m_pos < m_in.size() && m_in[m_pos] == '=') {
+ m_pos += 1;
+ return make_token(Token::Kind::NotEqual);
+ }
+ return make_token(Token::Kind::Unknown);
+ case '\"':
+ return scan_string();
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case '-':
+ return scan_number();
+ case '_':
+ return scan_id();
+ default:
+ return make_token(Token::Kind::Unknown);
+ }
+ }
+
+ Token scan_id() {
+ for (;;) {
+ if (m_pos >= m_in.size()) {
+ break;
+ }
+ char ch = m_in[m_pos];
+ if (!std::isalnum(ch) && ch != '.' && ch != '/' && ch != '_' && ch != '-') {
+ break;
+ }
+ m_pos += 1;
+ }
+ return make_token(Token::Kind::Id);
+ }
+
+ Token scan_number() {
+ for (;;) {
+ if (m_pos >= m_in.size()) {
+ break;
+ }
+ char ch = m_in[m_pos];
+ // be very permissive in lexer (we'll catch errors when conversion happens)
+ if (!std::isdigit(ch) && ch != '.' && ch != 'e' && ch != 'E' && ch != '+' && ch != '-') {
+ break;
+ }
+ m_pos += 1;
+ }
+ return make_token(Token::Kind::Number);
+ }
+
+ Token scan_string() {
+ bool escape {false};
+ for (;;) {
+ if (m_pos >= m_in.size()) break;
+ char ch = m_in[m_pos++];
+ if (ch == '\\') {
+ escape = true;
+ } else if (!escape && ch == m_in[m_tok_start]) {
+ break;
+ } else {
+ escape = false;
+ }
+ }
+ return make_token(Token::Kind::String);
+ }
+
+ Token make_token(Token::Kind kind) const {
+ return Token(kind, string_view::slice(m_in, m_tok_start, m_pos));
+ }
+};
+
+}
+
+#endif // PANTOR_INJA_LEXER_HPP
+
+// #include "template.hpp"
+#ifndef PANTOR_INJA_TEMPLATE_HPP
+#define PANTOR_INJA_TEMPLATE_HPP
+
+#include <string>
+#include <vector>
+
+// #include "bytecode.hpp"
+
+
+
+namespace inja {
+
+struct Template {
+ std::vector<Bytecode> bytecodes;
+ std::string content;
+};
+
+using TemplateStorage = std::map<std::string, Template>;
+
+}
+
+#endif // PANTOR_INJA_TEMPLATE_HPP
+
+// #include "token.hpp"
+
+// #include "utils.hpp"
+
+
+#include <nlohmann/json.hpp>
+
+
+namespace inja {
+
+class ParserStatic {
+ ParserStatic() {
+ functions.add_builtin("default", 2, Bytecode::Op::Default);
+ functions.add_builtin("divisibleBy", 2, Bytecode::Op::DivisibleBy);
+ functions.add_builtin("even", 1, Bytecode::Op::Even);
+ functions.add_builtin("first", 1, Bytecode::Op::First);
+ functions.add_builtin("float", 1, Bytecode::Op::Float);
+ functions.add_builtin("int", 1, Bytecode::Op::Int);
+ functions.add_builtin("last", 1, Bytecode::Op::Last);
+ functions.add_builtin("length", 1, Bytecode::Op::Length);
+ functions.add_builtin("lower", 1, Bytecode::Op::Lower);
+ functions.add_builtin("max", 1, Bytecode::Op::Max);
+ functions.add_builtin("min", 1, Bytecode::Op::Min);
+ functions.add_builtin("odd", 1, Bytecode::Op::Odd);
+ functions.add_builtin("range", 1, Bytecode::Op::Range);
+ functions.add_builtin("round", 2, Bytecode::Op::Round);
+ functions.add_builtin("sort", 1, Bytecode::Op::Sort);
+ functions.add_builtin("upper", 1, Bytecode::Op::Upper);
+ functions.add_builtin("exists", 1, Bytecode::Op::Exists);
+ functions.add_builtin("existsIn", 2, Bytecode::Op::ExistsInObject);
+ functions.add_builtin("isBoolean", 1, Bytecode::Op::IsBoolean);
+ functions.add_builtin("isNumber", 1, Bytecode::Op::IsNumber);
+ functions.add_builtin("isInteger", 1, Bytecode::Op::IsInteger);
+ functions.add_builtin("isFloat", 1, Bytecode::Op::IsFloat);
+ functions.add_builtin("isObject", 1, Bytecode::Op::IsObject);
+ functions.add_builtin("isArray", 1, Bytecode::Op::IsArray);
+ functions.add_builtin("isString", 1, Bytecode::Op::IsString);
+ }
+
+ public:
+ ParserStatic(const ParserStatic&) = delete;
+ ParserStatic& operator=(const ParserStatic&) = delete;
+
+ static const ParserStatic& get_instance() {
+ static ParserStatic inst;
+ return inst;
+ }
+
+ FunctionStorage functions;
+};
+
+class Parser {
+ public:
+ explicit Parser(const ParserConfig& parser_config, const LexerConfig& lexer_config, TemplateStorage& included_templates): m_config(parser_config), m_lexer(lexer_config), m_included_templates(included_templates), m_static(ParserStatic::get_instance()) { }
+
+ bool parse_expression(Template& tmpl) {
+ if (!parse_expression_and(tmpl)) return false;
+ if (m_tok.kind != Token::Kind::Id || m_tok.text != "or") return true;
+ get_next_token();
+ if (!parse_expression_and(tmpl)) return false;
+ append_function(tmpl, Bytecode::Op::Or, 2);
+ return true;
+ }
+
+ bool parse_expression_and(Template& tmpl) {
+ if (!parse_expression_not(tmpl)) return false;
+ if (m_tok.kind != Token::Kind::Id || m_tok.text != "and") return true;
+ get_next_token();
+ if (!parse_expression_not(tmpl)) return false;
+ append_function(tmpl, Bytecode::Op::And, 2);
+ return true;
+ }
+
+ bool parse_expression_not(Template& tmpl) {
+ if (m_tok.kind == Token::Kind::Id && m_tok.text == "not") {
+ get_next_token();
+ if (!parse_expression_not(tmpl)) return false;
+ append_function(tmpl, Bytecode::Op::Not, 1);
+ return true;
+ } else {
+ return parse_expression_comparison(tmpl);
+ }
+ }
+
+ bool parse_expression_comparison(Template& tmpl) {
+ if (!parse_expression_datum(tmpl)) return false;
+ Bytecode::Op op;
+ switch (m_tok.kind) {
+ case Token::Kind::Id:
+ if (m_tok.text == "in")
+ op = Bytecode::Op::In;
+ else
+ return true;
+ break;
+ case Token::Kind::Equal:
+ op = Bytecode::Op::Equal;
+ break;
+ case Token::Kind::GreaterThan:
+ op = Bytecode::Op::Greater;
+ break;
+ case Token::Kind::LessThan:
+ op = Bytecode::Op::Less;
+ break;
+ case Token::Kind::LessEqual:
+ op = Bytecode::Op::LessEqual;
+ break;
+ case Token::Kind::GreaterEqual:
+ op = Bytecode::Op::GreaterEqual;
+ break;
+ case Token::Kind::NotEqual:
+ op = Bytecode::Op::Different;
+ break;
+ default:
+ return true;
+ }
+ get_next_token();
+ if (!parse_expression_datum(tmpl)) return false;
+ append_function(tmpl, op, 2);
+ return true;
+ }
+
+ bool parse_expression_datum(Template& tmpl) {
+ nonstd::string_view json_first;
+ size_t bracket_level = 0;
+ size_t brace_level = 0;
+
+ for (;;) {
+ switch (m_tok.kind) {
+ case Token::Kind::LeftParen: {
+ get_next_token();
+ if (!parse_expression(tmpl)) return false;
+ if (m_tok.kind != Token::Kind::RightParen) {
+ inja_throw("parser_error", "unmatched '('");
+ }
+ get_next_token();
+ return true;
+ }
+ case Token::Kind::Id:
+ get_peek_token();
+ if (m_peek_tok.kind == Token::Kind::LeftParen) {
+ // function call, parse arguments
+ Token func_token = m_tok;
+ get_next_token(); // id
+ get_next_token(); // leftParen
+ unsigned int num_args = 0;
+ if (m_tok.kind == Token::Kind::RightParen) {
+ // no args
+ get_next_token();
+ } else {
+ for (;;) {
+ if (!parse_expression(tmpl)) {
+ inja_throw("parser_error", "expected expression, got '" + m_tok.describe() + "'");
+ }
+ num_args += 1;
+ if (m_tok.kind == Token::Kind::RightParen) {
+ get_next_token();
+ break;
+ }
+ if (m_tok.kind != Token::Kind::Comma) {
+ inja_throw("parser_error", "expected ')' or ',', got '" + m_tok.describe() + "'");
+ }
+ get_next_token();
+ }
+ }
+
+ auto op = m_static.functions.find_builtin(func_token.text, num_args);
+
+ if (op != Bytecode::Op::Nop) {
+ // swap arguments for default(); see comment in RenderTo()
+ if (op == Bytecode::Op::Default)
+ std::swap(tmpl.bytecodes.back(), *(tmpl.bytecodes.rbegin() + 1));
+ append_function(tmpl, op, num_args);
+ return true;
+ } else {
+ append_callback(tmpl, func_token.text, num_args);
+ return true;
+ }
+ } else if (m_tok.text == "true" || m_tok.text == "false" || m_tok.text == "null") {
+ // true, false, null are json literals
+ if (brace_level == 0 && bracket_level == 0) {
+ json_first = m_tok.text;
+ goto returnJson;
+ }
+ break;
+ } else {
+ // normal literal (json read)
+ tmpl.bytecodes.emplace_back(
+ Bytecode::Op::Push, m_tok.text,
+ m_config.notation == ElementNotation::Pointer ? Bytecode::Flag::ValueLookupPointer : Bytecode::Flag::ValueLookupDot);
+ get_next_token();
+ return true;
+ }
+ // json passthrough
+ case Token::Kind::Number:
+ case Token::Kind::String:
+ if (brace_level == 0 && bracket_level == 0) {
+ json_first = m_tok.text;
+ goto returnJson;
+ }
+ break;
+ case Token::Kind::Comma:
+ case Token::Kind::Colon:
+ if (brace_level == 0 && bracket_level == 0) {
+ inja_throw("parser_error", "unexpected token '" + m_tok.describe() + "'");
+ }
+ break;
+ case Token::Kind::LeftBracket:
+ if (brace_level == 0 && bracket_level == 0) {
+ json_first = m_tok.text;
+ }
+ bracket_level += 1;
+ break;
+ case Token::Kind::LeftBrace:
+ if (brace_level == 0 && bracket_level == 0) {
+ json_first = m_tok.text;
+ }
+ brace_level += 1;
+ break;
+ case Token::Kind::RightBracket:
+ if (bracket_level == 0) {
+ inja_throw("parser_error", "unexpected ']'");
+ }
+ --bracket_level;
+ if (brace_level == 0 && bracket_level == 0) goto returnJson;
+ break;
+ case Token::Kind::RightBrace:
+ if (brace_level == 0) {
+ inja_throw("parser_error", "unexpected '}'");
+ }
+ --brace_level;
+ if (brace_level == 0 && bracket_level == 0) goto returnJson;
+ break;
+ default:
+ if (brace_level != 0) {
+ inja_throw("parser_error", "unmatched '{'");
+ }
+ if (bracket_level != 0) {
+ inja_throw("parser_error", "unmatched '['");
+ }
+ return false;
+ }
+
+ get_next_token();
+ }
+
+ returnJson:
+ // bridge across all intermediate tokens
+ nonstd::string_view json_text(json_first.data(), m_tok.text.data() - json_first.data() + m_tok.text.size());
+ tmpl.bytecodes.emplace_back(Bytecode::Op::Push, json::parse(json_text), Bytecode::Flag::ValueImmediate);
+ get_next_token();
+ return true;
+ }
+
+ bool parse_statement(Template& tmpl, nonstd::string_view path) {
+ if (m_tok.kind != Token::Kind::Id) return false;
+
+ if (m_tok.text == "if") {
+ get_next_token();
+
+ // evaluate expression
+ if (!parse_expression(tmpl)) return false;
+
+ // start a new if block on if stack
+ m_if_stack.emplace_back(tmpl.bytecodes.size());
+
+ // conditional jump; destination will be filled in by else or endif
+ tmpl.bytecodes.emplace_back(Bytecode::Op::ConditionalJump);
+ } else if (m_tok.text == "endif") {
+ if (m_if_stack.empty()) {
+ inja_throw("parser_error", "endif without matching if");
+ }
+ auto& if_data = m_if_stack.back();
+ get_next_token();
+
+ // previous conditional jump jumps here
+ if (if_data.prev_cond_jump != std::numeric_limits<unsigned int>::max()) {
+ tmpl.bytecodes[if_data.prev_cond_jump].args = tmpl.bytecodes.size();
+ }
+
+ // update all previous unconditional jumps to here
+ for (unsigned int i: if_data.uncond_jumps) {
+ tmpl.bytecodes[i].args = tmpl.bytecodes.size();
+ }
+
+ // pop if stack
+ m_if_stack.pop_back();
+ } else if (m_tok.text == "else") {
+ if (m_if_stack.empty())
+ inja_throw("parser_error", "else without matching if");
+ auto& if_data = m_if_stack.back();
+ get_next_token();
+
+ // end previous block with unconditional jump to endif; destination will be
+ // filled in by endif
+ if_data.uncond_jumps.push_back(tmpl.bytecodes.size());
+ tmpl.bytecodes.emplace_back(Bytecode::Op::Jump);
+
+ // previous conditional jump jumps here
+ tmpl.bytecodes[if_data.prev_cond_jump].args = tmpl.bytecodes.size();
+ if_data.prev_cond_jump = std::numeric_limits<unsigned int>::max();
+
+ // chained else if
+ if (m_tok.kind == Token::Kind::Id && m_tok.text == "if") {
+ get_next_token();
+
+ // evaluate expression
+ if (!parse_expression(tmpl)) return false;
+
+ // update "previous jump"
+ if_data.prev_cond_jump = tmpl.bytecodes.size();
+
+ // conditional jump; destination will be filled in by else or endif
+ tmpl.bytecodes.emplace_back(Bytecode::Op::ConditionalJump);
+ }
+ } else if (m_tok.text == "for") {
+ get_next_token();
+
+ // options: for a in arr; for a, b in obj
+ if (m_tok.kind != Token::Kind::Id)
+ inja_throw("parser_error", "expected id, got '" + m_tok.describe() + "'");
+ Token value_token = m_tok;
+ get_next_token();
+
+ Token key_token;
+ if (m_tok.kind == Token::Kind::Comma) {
+ get_next_token();
+ if (m_tok.kind != Token::Kind::Id)
+ inja_throw("parser_error", "expected id, got '" + m_tok.describe() + "'");
+ key_token = std::move(value_token);
+ value_token = m_tok;
+ get_next_token();
+ }
+
+ if (m_tok.kind != Token::Kind::Id || m_tok.text != "in")
+ inja_throw("parser_error",
+ "expected 'in', got '" + m_tok.describe() + "'");
+ get_next_token();
+
+ if (!parse_expression(tmpl)) return false;
+
+ m_loop_stack.push_back(tmpl.bytecodes.size());
+
+ tmpl.bytecodes.emplace_back(Bytecode::Op::StartLoop);
+ if (!key_token.text.empty()) {
+ tmpl.bytecodes.back().value = key_token.text;
+ }
+ tmpl.bytecodes.back().str = static_cast<std::string>(value_token.text);
+ } else if (m_tok.text == "endfor") {
+ get_next_token();
+ if (m_loop_stack.empty()) {
+ inja_throw("parser_error", "endfor without matching for");
+ }
+
+ // update loop with EndLoop index (for empty case)
+ tmpl.bytecodes[m_loop_stack.back()].args = tmpl.bytecodes.size();
+
+ tmpl.bytecodes.emplace_back(Bytecode::Op::EndLoop);
+ tmpl.bytecodes.back().args = m_loop_stack.back() + 1; // loop body
+ m_loop_stack.pop_back();
+ } else if (m_tok.text == "include") {
+ get_next_token();
+
+ if (m_tok.kind != Token::Kind::String) {
+ inja_throw("parser_error", "expected string, got '" + m_tok.describe() + "'");
+ }
+
+ // build the relative path
+ json json_name = json::parse(m_tok.text);
+ std::string pathname = static_cast<std::string>(path);
+ pathname += json_name.get_ref<const std::string&>();
+ if (pathname.compare(0, 2, "./") == 0) {
+ pathname.erase(0, 2);
+ }
+ // sys::path::remove_dots(pathname, true, sys::path::Style::posix);
+
+ Template include_template = parse_template(pathname);
+ m_included_templates.emplace(pathname, include_template);
+
+ // generate a reference bytecode
+ tmpl.bytecodes.emplace_back(Bytecode::Op::Include, json(pathname), Bytecode::Flag::ValueImmediate);
+
+ get_next_token();
+ } else {
+ return false;
+ }
+ return true;
+ }
+
+ void append_function(Template& tmpl, Bytecode::Op op, unsigned int num_args) {
+ // we can merge with back-to-back push
+ if (!tmpl.bytecodes.empty()) {
+ Bytecode& last = tmpl.bytecodes.back();
+ if (last.op == Bytecode::Op::Push) {
+ last.op = op;
+ last.args = num_args;
+ return;
+ }
+ }
+
+ // otherwise just add it to the end
+ tmpl.bytecodes.emplace_back(op, num_args);
+ }
+
+ void append_callback(Template& tmpl, nonstd::string_view name, unsigned int num_args) {
+ // we can merge with back-to-back push value (not lookup)
+ if (!tmpl.bytecodes.empty()) {
+ Bytecode& last = tmpl.bytecodes.back();
+ if (last.op == Bytecode::Op::Push &&
+ (last.flags & Bytecode::Flag::ValueMask) == Bytecode::Flag::ValueImmediate) {
+ last.op = Bytecode::Op::Callback;
+ last.args = num_args;
+ last.str = static_cast<std::string>(name);
+ return;
+ }
+ }
+
+ // otherwise just add it to the end
+ tmpl.bytecodes.emplace_back(Bytecode::Op::Callback, num_args);
+ tmpl.bytecodes.back().str = static_cast<std::string>(name);
+ }
+
+ void parse_into(Template& tmpl, nonstd::string_view path) {
+ m_lexer.start(tmpl.content);
+
+ for (;;) {
+ get_next_token();
+ switch (m_tok.kind) {
+ case Token::Kind::Eof:
+ if (!m_if_stack.empty()) inja_throw("parser_error", "unmatched if");
+ if (!m_loop_stack.empty()) inja_throw("parser_error", "unmatched for");
+ return;
+ case Token::Kind::Text:
+ tmpl.bytecodes.emplace_back(Bytecode::Op::PrintText, m_tok.text, 0u);
+ break;
+ case Token::Kind::StatementOpen:
+ get_next_token();
+ if (!parse_statement(tmpl, path)) {
+ inja_throw("parser_error", "expected statement, got '" + m_tok.describe() + "'");
+ }
+ if (m_tok.kind != Token::Kind::StatementClose) {
+ inja_throw("parser_error", "expected statement close, got '" + m_tok.describe() + "'");
+ }
+ break;
+ case Token::Kind::LineStatementOpen:
+ get_next_token();
+ parse_statement(tmpl, path);
+ if (m_tok.kind != Token::Kind::LineStatementClose &&
+ m_tok.kind != Token::Kind::Eof) {
+ inja_throw("parser_error", "expected line statement close, got '" + m_tok.describe() + "'");
+ }
+ break;
+ case Token::Kind::ExpressionOpen:
+ get_next_token();
+ if (!parse_expression(tmpl)) {
+ inja_throw("parser_error", "expected expression, got '" + m_tok.describe() + "'");
+ }
+ append_function(tmpl, Bytecode::Op::PrintValue, 1);
+ if (m_tok.kind != Token::Kind::ExpressionClose) {
+ inja_throw("parser_error", "expected expression close, got '" + m_tok.describe() + "'");
+ }
+ break;
+ case Token::Kind::CommentOpen:
+ get_next_token();
+ if (m_tok.kind != Token::Kind::CommentClose) {
+ inja_throw("parser_error", "expected comment close, got '" + m_tok.describe() + "'");
+ }
+ break;
+ default:
+ inja_throw("parser_error", "unexpected token '" + m_tok.describe() + "'");
+ break;
+ }
+ }
+ }
+
+ Template parse(nonstd::string_view input, nonstd::string_view path) {
+ Template result;
+ result.content = static_cast<std::string>(input);
+ parse_into(result, path);
+ return result;
+ }
+
+ Template parse(nonstd::string_view input) {
+ return parse(input, "./");
+ }
+
+ Template parse_template(nonstd::string_view filename) {
+ Template result;
+ result.content = load_file(filename);
+
+ nonstd::string_view path = filename.substr(0, filename.find_last_of("/\\") + 1);
+ // StringRef path = sys::path::parent_path(filename);
+ Parser(m_config, m_lexer.get_config(), m_included_templates).parse_into(result, path);
+ return result;
+ }
+
+ std::string load_file(nonstd::string_view filename) {
+ std::ifstream file(static_cast<std::string>(filename));
+ std::string text((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
+ return text;
+ }
+
+ private:
+ const ParserConfig& m_config;
+ Lexer m_lexer;
+ Token m_tok;
+ Token m_peek_tok;
+ bool m_have_peek_tok {false};
+ TemplateStorage& m_included_templates;
+ const ParserStatic& m_static;
+
+ struct IfData {
+ unsigned int prev_cond_jump;
+ std::vector<unsigned int> uncond_jumps;
+
+ explicit IfData(unsigned int condJump): prev_cond_jump(condJump) {}
+ };
+
+ std::vector<IfData> m_if_stack;
+ std::vector<unsigned int> m_loop_stack;
+
+ void get_next_token() {
+ if (m_have_peek_tok) {
+ m_tok = m_peek_tok;
+ m_have_peek_tok = false;
+ } else {
+ m_tok = m_lexer.scan();
+ }
+ }
+
+ void get_peek_token() {
+ if (!m_have_peek_tok) {
+ m_peek_tok = m_lexer.scan();
+ m_have_peek_tok = true;
+ }
+ }
+};
+
+} // namespace inja
+
+#endif // PANTOR_INJA_PARSER_HPP
+
+// #include "polyfill.hpp"
+#ifndef PANTOR_INJA_POLYFILL_HPP
+#define PANTOR_INJA_POLYFILL_HPP
+
+
+#if __cplusplus < 201402L
+
+#include <cstddef>
+#include <type_traits>
+#include <utility>
+
+
+namespace stdinja {
+ template<class T> struct _Unique_if {
+ typedef std::unique_ptr<T> _Single_object;
+ };
+
+ template<class T> struct _Unique_if<T[]> {
+ typedef std::unique_ptr<T[]> _Unknown_bound;
+ };
+
+ template<class T, size_t N> struct _Unique_if<T[N]> {
+ typedef void _Known_bound;
+ };
+
+ template<class T, class... Args>
+ typename _Unique_if<T>::_Single_object
+ make_unique(Args&&... args) {
+ return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
+ }
+
+ template<class T>
+ typename _Unique_if<T>::_Unknown_bound
+ make_unique(size_t n) {
+ typedef typename std::remove_extent<T>::type U;
+ return std::unique_ptr<T>(new U[n]());
+ }
+
+ template<class T, class... Args>
+ typename _Unique_if<T>::_Known_bound
+ make_unique(Args&&...) = delete;
+}
+
+#else
+
+namespace stdinja = std;
+
+#endif // memory */
+
+
+#endif // PANTOR_INJA_POLYFILL_HPP
+
+// #include "renderer.hpp"
+#ifndef PANTOR_INJA_RENDERER_HPP
+#define PANTOR_INJA_RENDERER_HPP
+
+#include <algorithm>
+#include <numeric>
+
+#include <nlohmann/json.hpp>
+
+// #include "bytecode.hpp"
+
+// #include "template.hpp"
+
+// #include "utils.hpp"
+
+
+
+namespace inja {
+
+inline nonstd::string_view convert_dot_to_json_pointer(nonstd::string_view dot, std::string& out) {
+ out.clear();
+ do {
+ nonstd::string_view part;
+ std::tie(part, dot) = string_view::split(dot, '.');
+ out.push_back('/');
+ out.append(part.begin(), part.end());
+ } while (!dot.empty());
+ return nonstd::string_view(out.data(), out.size());
+}
+
+class Renderer {
+ std::vector<const json*>& get_args(const Bytecode& bc) {
+ m_tmp_args.clear();
+
+ bool has_imm = ((bc.flags & Bytecode::Flag::ValueMask) != Bytecode::Flag::ValuePop);
+
+ // get args from stack
+ unsigned int pop_args = bc.args;
+ if (has_imm) {
+ pop_args -= 1;
+ }
+
+ for (auto i = std::prev(m_stack.end(), pop_args); i != m_stack.end(); i++) {
+ m_tmp_args.push_back(&(*i));
+ }
+
+ // get immediate arg
+ if (has_imm) {
+ m_tmp_args.push_back(get_imm(bc));
+ }
+
+ return m_tmp_args;
+ }
+
+ void pop_args(const Bytecode& bc) {
+ unsigned int popArgs = bc.args;
+ if ((bc.flags & Bytecode::Flag::ValueMask) != Bytecode::Flag::ValuePop) {
+ popArgs -= 1;
+ }
+ for (unsigned int i = 0; i < popArgs; ++i) {
+ m_stack.pop_back();
+ }
+ }
+
+ const json* get_imm(const Bytecode& bc) {
+ std::string ptr_buffer;
+ nonstd::string_view ptr;
+ switch (bc.flags & Bytecode::Flag::ValueMask) {
+ case Bytecode::Flag::ValuePop:
+ return nullptr;
+ case Bytecode::Flag::ValueImmediate:
+ return &bc.value;
+ case Bytecode::Flag::ValueLookupDot:
+ ptr = convert_dot_to_json_pointer(bc.str, ptr_buffer);
+ break;
+ case Bytecode::Flag::ValueLookupPointer:
+ ptr_buffer += '/';
+ ptr_buffer += bc.str;
+ ptr = ptr_buffer;
+ break;
+ }
+ try {
+ return &m_data->at(json::json_pointer(ptr.data()));
+ } catch (std::exception&) {
+ // try to evaluate as a no-argument callback
+ if (auto callback = m_callbacks.find_callback(bc.str, 0)) {
+ std::vector<const json*> arguments {};
+ m_tmp_val = callback(arguments);
+ return &m_tmp_val;
+ }
+ inja_throw("render_error", "variable '" + static_cast<std::string>(bc.str) + "' not found");
+ return nullptr;
+ }
+ }
+
+ bool truthy(const json& var) const {
+ if (var.empty()) {
+ return false;
+ } else if (var.is_number()) {
+ return (var != 0);
+ } else if (var.is_string()) {
+ return !var.empty();
+ }
+
+ try {
+ return var.get<bool>();
+ } catch (json::type_error& e) {
+ inja_throw("json_error", e.what());
+ throw;
+ }
+ }
+
+ void update_loop_data() {
+ LoopLevel& level = m_loop_stack.back();
+
+ if (level.loop_type == LoopLevel::Type::Array) {
+ level.data[static_cast<std::string>(level.value_name)] = level.values.at(level.index); // *level.it;
+ auto& loopData = level.data["loop"];
+ loopData["index"] = level.index;
+ loopData["index1"] = level.index + 1;
+ loopData["is_first"] = (level.index == 0);
+ loopData["is_last"] = (level.index == level.size - 1);
+ } else {
+ level.data[static_cast<std::string>(level.key_name)] = level.map_it->first;
+ level.data[static_cast<std::string>(level.value_name)] = *level.map_it->second;
+ }
+ }
+
+ const TemplateStorage& m_included_templates;
+ const FunctionStorage& m_callbacks;
+
+ std::vector<json> m_stack;
+
+
+ struct LoopLevel {
+ enum class Type { Map, Array };
+
+ Type loop_type;
+ nonstd::string_view key_name; // variable name for keys
+ nonstd::string_view value_name; // variable name for values
+ json data; // data with loop info added
+
+ json values; // values to iterate over
+
+ // loop over list
+ size_t index; // current list index
+ size_t size; // length of list
+
+ // loop over map
+ using KeyValue = std::pair<nonstd::string_view, json*>;
+ using MapValues = std::vector<KeyValue>;
+ MapValues map_values; // values to iterate over
+ MapValues::iterator map_it; // iterator over values
+
+ };
+
+ std::vector<LoopLevel> m_loop_stack;
+ const json* m_data;
+
+ std::vector<const json*> m_tmp_args;
+ json m_tmp_val;
+
+
+ public:
+ Renderer(const TemplateStorage& included_templates, const FunctionStorage& callbacks): m_included_templates(included_templates), m_callbacks(callbacks) {
+ m_stack.reserve(16);
+ m_tmp_args.reserve(4);
+ m_loop_stack.reserve(16);
+ }
+
+ void render_to(std::ostream& os, const Template& tmpl, const json& data) {
+ m_data = &data;
+
+ for (size_t i = 0; i < tmpl.bytecodes.size(); ++i) {
+ const auto& bc = tmpl.bytecodes[i];
+
+ switch (bc.op) {
+ case Bytecode::Op::Nop: {
+ break;
+ }
+ case Bytecode::Op::PrintText: {
+ os << bc.str;
+ break;
+ }
+ case Bytecode::Op::PrintValue: {
+ const json& val = *get_args(bc)[0];
+ if (val.is_string())
+ os << val.get_ref<const std::string&>();
+ else
+ os << val.dump();
+ // val.dump(os);
+ pop_args(bc);
+ break;
+ }
+ case Bytecode::Op::Push: {
+ m_stack.emplace_back(*get_imm(bc));
+ break;
+ }
+ case Bytecode::Op::Upper: {
+ auto result = get_args(bc)[0]->get<std::string>();
+ std::transform(result.begin(), result.end(), result.begin(), ::toupper);
+ pop_args(bc);
+ m_stack.emplace_back(std::move(result));
+ break;
+ }
+ case Bytecode::Op::Lower: {
+ auto result = get_args(bc)[0]->get<std::string>();
+ std::transform(result.begin(), result.end(), result.begin(), ::tolower);
+ pop_args(bc);
+ m_stack.emplace_back(std::move(result));
+ break;
+ }
+ case Bytecode::Op::Range: {
+ int number = get_args(bc)[0]->get<int>();
+ std::vector<int> result(number);
+ std::iota(std::begin(result), std::end(result), 0);
+ pop_args(bc);
+ m_stack.emplace_back(std::move(result));
+ break;
+ }
+ case Bytecode::Op::Length: {
+ auto result = get_args(bc)[0]->size();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Sort: {
+ auto result = get_args(bc)[0]->get<std::vector<json>>();
+ std::sort(result.begin(), result.end());
+ pop_args(bc);
+ m_stack.emplace_back(std::move(result));
+ break;
+ }
+ case Bytecode::Op::First: {
+ auto result = get_args(bc)[0]->front();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Last: {
+ auto result = get_args(bc)[0]->back();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Round: {
+ auto args = get_args(bc);
+ double number = args[0]->get<double>();
+ int precision = args[1]->get<int>();
+ pop_args(bc);
+ m_stack.emplace_back(std::round(number * std::pow(10.0, precision)) / std::pow(10.0, precision));
+ break;
+ }
+ case Bytecode::Op::DivisibleBy: {
+ auto args = get_args(bc);
+ int number = args[0]->get<int>();
+ int divisor = args[1]->get<int>();
+ pop_args(bc);
+ m_stack.emplace_back((divisor != 0) && (number % divisor == 0));
+ break;
+ }
+ case Bytecode::Op::Odd: {
+ int number = get_args(bc)[0]->get<int>();
+ pop_args(bc);
+ m_stack.emplace_back(number % 2 != 0);
+ break;
+ }
+ case Bytecode::Op::Even: {
+ int number = get_args(bc)[0]->get<int>();
+ pop_args(bc);
+ m_stack.emplace_back(number % 2 == 0);
+ break;
+ }
+ case Bytecode::Op::Max: {
+ auto args = get_args(bc);
+ auto result = *std::max_element(args[0]->begin(), args[0]->end());
+ pop_args(bc);
+ m_stack.emplace_back(std::move(result));
+ break;
+ }
+ case Bytecode::Op::Min: {
+ auto args = get_args(bc);
+ auto result = *std::min_element(args[0]->begin(), args[0]->end());
+ pop_args(bc);
+ m_stack.emplace_back(std::move(result));
+ break;
+ }
+ case Bytecode::Op::Not: {
+ bool result = !truthy(*get_args(bc)[0]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::And: {
+ auto args = get_args(bc);
+ bool result = truthy(*args[0]) && truthy(*args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Or: {
+ auto args = get_args(bc);
+ bool result = truthy(*args[0]) || truthy(*args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::In: {
+ auto args = get_args(bc);
+ bool result = std::find(args[1]->begin(), args[1]->end(), *args[0]) !=
+ args[1]->end();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Equal: {
+ auto args = get_args(bc);
+ bool result = (*args[0] == *args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Greater: {
+ auto args = get_args(bc);
+ bool result = (*args[0] > *args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Less: {
+ auto args = get_args(bc);
+ bool result = (*args[0] < *args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::GreaterEqual: {
+ auto args = get_args(bc);
+ bool result = (*args[0] >= *args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::LessEqual: {
+ auto args = get_args(bc);
+ bool result = (*args[0] <= *args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Different: {
+ auto args = get_args(bc);
+ bool result = (*args[0] != *args[1]);
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Float: {
+ double result =
+ std::stod(get_args(bc)[0]->get_ref<const std::string&>());
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Int: {
+ int result = std::stoi(get_args(bc)[0]->get_ref<const std::string&>());
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Exists: {
+ auto&& name = get_args(bc)[0]->get_ref<const std::string&>();
+ bool result = (data.find(name) != data.end());
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::ExistsInObject: {
+ auto args = get_args(bc);
+ auto&& name = args[1]->get_ref<const std::string&>();
+ bool result = (args[0]->find(name) != args[0]->end());
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::IsBoolean: {
+ bool result = get_args(bc)[0]->is_boolean();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::IsNumber: {
+ bool result = get_args(bc)[0]->is_number();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::IsInteger: {
+ bool result = get_args(bc)[0]->is_number_integer();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::IsFloat: {
+ bool result = get_args(bc)[0]->is_number_float();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::IsObject: {
+ bool result = get_args(bc)[0]->is_object();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::IsArray: {
+ bool result = get_args(bc)[0]->is_array();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::IsString: {
+ bool result = get_args(bc)[0]->is_string();
+ pop_args(bc);
+ m_stack.emplace_back(result);
+ break;
+ }
+ case Bytecode::Op::Default: {
+ // default needs to be a bit "magic"; we can't evaluate the first
+ // argument during the push operation, so we swap the arguments during
+ // the parse phase so the second argument is pushed on the stack and
+ // the first argument is in the immediate
+ try {
+ const json* imm = get_imm(bc);
+ // if no exception was raised, replace the stack value with it
+ m_stack.back() = *imm;
+ } catch (std::exception&) {
+ // couldn't read immediate, just leave the stack as is
+ }
+ break;
+ }
+ case Bytecode::Op::Include:
+ Renderer(m_included_templates, m_callbacks).render_to(os, m_included_templates.find(get_imm(bc)->get_ref<const std::string&>())->second, data);
+ break;
+ case Bytecode::Op::Callback: {
+ auto callback = m_callbacks.find_callback(bc.str, bc.args);
+ if (!callback) {
+ inja_throw("render_error", "function '" + static_cast<std::string>(bc.str) + "' (" + std::to_string(static_cast<unsigned int>(bc.args)) + ") not found");
+ }
+ json result = callback(get_args(bc));
+ pop_args(bc);
+ m_stack.emplace_back(std::move(result));
+ break;
+ }
+ case Bytecode::Op::Jump: {
+ i = bc.args - 1; // -1 due to ++i in loop
+ break;
+ }
+ case Bytecode::Op::ConditionalJump: {
+ if (!truthy(m_stack.back())) {
+ i = bc.args - 1; // -1 due to ++i in loop
+ }
+ m_stack.pop_back();
+ break;
+ }
+ case Bytecode::Op::StartLoop: {
+ // jump past loop body if empty
+ if (m_stack.back().empty()) {
+ m_stack.pop_back();
+ i = bc.args; // ++i in loop will take it past EndLoop
+ break;
+ }
+
+ m_loop_stack.emplace_back();
+ LoopLevel& level = m_loop_stack.back();
+ level.value_name = bc.str;
+ level.values = std::move(m_stack.back());
+ level.data = (*m_data);
+ m_stack.pop_back();
+
+ if (bc.value.is_string()) {
+ // map iterator
+ if (!level.values.is_object()) {
+ m_loop_stack.pop_back();
+ inja_throw("render_error", "for key, value requires object");
+ }
+ level.loop_type = LoopLevel::Type::Map;
+ level.key_name = bc.value.get_ref<const std::string&>();
+
+ // sort by key
+ for (auto it = level.values.begin(), end = level.values.end(); it != end; ++it) {
+ level.map_values.emplace_back(it.key(), &it.value());
+ }
+ std::sort(level.map_values.begin(), level.map_values.end(), [](const LoopLevel::KeyValue& a, const LoopLevel::KeyValue& b) { return a.first < b.first; });
+ level.map_it = level.map_values.begin();
+ } else {
+ if (!level.values.is_array()) {
+ m_loop_stack.pop_back();
+ inja_throw("render_error", "type must be array");
+ }
+
+ // list iterator
+ level.loop_type = LoopLevel::Type::Array;
+ level.index = 0;
+ level.size = level.values.size();
+ }
+
+ // provide parent access in nested loop
+ auto parent_loop_it = level.data.find("loop");
+ if (parent_loop_it != level.data.end()) {
+ json loop_copy = *parent_loop_it;
+ (*parent_loop_it)["parent"] = std::move(loop_copy);
+ }
+
+ // set "current" data to loop data
+ m_data = &level.data;
+ update_loop_data();
+ break;
+ }
+ case Bytecode::Op::EndLoop: {
+ if (m_loop_stack.empty()) {
+ inja_throw("render_error", "unexpected state in renderer");
+ }
+ LoopLevel& level = m_loop_stack.back();
+
+ bool done;
+ if (level.loop_type == LoopLevel::Type::Array) {
+ level.index += 1;
+ done = (level.index == level.values.size());
+ } else {
+ level.map_it += 1;
+ done = (level.map_it == level.map_values.end());
+ }
+
+ if (done) {
+ m_loop_stack.pop_back();
+ // set "current" data to outer loop data or main data as appropriate
+ if (!m_loop_stack.empty()) {
+ m_data = &m_loop_stack.back().data;
+ } else {
+ m_data = &data;
+ }
+ break;
+ }
+
+ update_loop_data();
+
+ // jump back to start of loop
+ i = bc.args - 1; // -1 due to ++i in loop
+ break;
+ }
+ default: {
+ inja_throw("render_error", "unknown op in renderer: " + std::to_string(static_cast<unsigned int>(bc.op)));
+ }
+ }
+ }
+ }
+};
+
+} // namespace inja
+
+#endif // PANTOR_INJA_RENDERER_HPP
+
+// #include "string_view.hpp"
+
+// #include "template.hpp"
+
+
+
+namespace inja {
+
+using namespace nlohmann;
+
+class Environment {
+ class Impl {
+ public:
+ std::string input_path;
+ std::string output_path;
+
+ LexerConfig lexer_config;
+ ParserConfig parser_config;
+
+ FunctionStorage callbacks;
+ TemplateStorage included_templates;
+ };
+
+ std::unique_ptr<Impl> m_impl;
+
+ public:
+ Environment(): Environment("./") { }
+
+ explicit Environment(const std::string& global_path): m_impl(stdinja::make_unique<Impl>()) {
+ m_impl->input_path = global_path;
+ m_impl->output_path = global_path;
+ }
+
+ explicit Environment(const std::string& input_path, const std::string& output_path): m_impl(stdinja::make_unique<Impl>()) {
+ m_impl->input_path = input_path;
+ m_impl->output_path = output_path;
+ }
+
+ /// Sets the opener and closer for template statements
+ void set_statement(const std::string& open, const std::string& close) {
+ m_impl->lexer_config.statement_open = open;
+ m_impl->lexer_config.statement_close = close;
+ m_impl->lexer_config.update_open_chars();
+ }
+
+ /// Sets the opener for template line statements
+ void set_line_statement(const std::string& open) {
+ m_impl->lexer_config.line_statement = open;
+ m_impl->lexer_config.update_open_chars();
+ }
+
+ /// Sets the opener and closer for template expressions
+ void set_expression(const std::string& open, const std::string& close) {
+ m_impl->lexer_config.expression_open = open;
+ m_impl->lexer_config.expression_close = close;
+ m_impl->lexer_config.update_open_chars();
+ }
+
+ /// Sets the opener and closer for template comments
+ void set_comment(const std::string& open, const std::string& close) {
+ m_impl->lexer_config.comment_open = open;
+ m_impl->lexer_config.comment_close = close;
+ m_impl->lexer_config.update_open_chars();
+ }
+
+ /// Sets the element notation syntax
+ void set_element_notation(ElementNotation notation) {
+ m_impl->parser_config.notation = notation;
+ }
+
+
+ Template parse(nonstd::string_view input) {
+ Parser parser(m_impl->parser_config, m_impl->lexer_config, m_impl->included_templates);
+ return parser.parse(input);
+ }
+
+ Template parse_template(const std::string& filename) {
+ Parser parser(m_impl->parser_config, m_impl->lexer_config, m_impl->included_templates);
+ return parser.parse_template(m_impl->input_path + static_cast<std::string>(filename));
+ }
+
+ std::string render(nonstd::string_view input, const json& data) {
+ return render(parse(input), data);
+ }
+
+ std::string render(const Template& tmpl, const json& data) {
+ std::stringstream os;
+ render_to(os, tmpl, data);
+ return os.str();
+ }
+
+ std::string render_file(const std::string& filename, const json& data) {
+ return render(parse_template(filename), data);
+ }
+
+ std::string render_file_with_json_file(const std::string& filename, const std::string& filename_data) {
+ const json data = load_json(filename_data);
+ return render_file(filename, data);
+ }
+
+ void write(const std::string& filename, const json& data, const std::string& filename_out) {
+ std::ofstream file(m_impl->output_path + filename_out);
+ file << render_file(filename, data);
+ file.close();
+ }
+
+ void write(const Template& temp, const json& data, const std::string& filename_out) {
+ std::ofstream file(m_impl->output_path + filename_out);
+ file << render(temp, data);
+ file.close();
+ }
+
+ void write_with_json_file(const std::string& filename, const std::string& filename_data, const std::string& filename_out) {
+ const json data = load_json(filename_data);
+ write(filename, data, filename_out);
+ }
+
+ void write_with_json_file(const Template& temp, const std::string& filename_data, const std::string& filename_out) {
+ const json data = load_json(filename_data);
+ write(temp, data, filename_out);
+ }
+
+ std::ostream& render_to(std::ostream& os, const Template& tmpl, const json& data) {
+ Renderer(m_impl->included_templates, m_impl->callbacks).render_to(os, tmpl, data);
+ return os;
+ }
+
+ std::string load_file(const std::string& filename) {
+ Parser parser(m_impl->parser_config, m_impl->lexer_config, m_impl->included_templates);
+ return parser.load_file(m_impl->input_path + filename);
+ }
+
+ json load_json(const std::string& filename) {
+ std::ifstream file(m_impl->input_path + filename);
+ json j;
+ file >> j;
+ return j;
+ }
+
+ void add_callback(const std::string& name, unsigned int numArgs, const CallbackFunction& callback) {
+ m_impl->callbacks.add_callback(name, numArgs, callback);
+ }
+
+ /** Includes a template with a given name into the environment.
+ * Then, a template can be rendered in another template using the
+ * include "<name>" syntax.
+ */
+ void include_template(const std::string& name, const Template& tmpl) {
+ m_impl->included_templates[name] = tmpl;
+ }
+};
+
+/*!
+@brief render with default settings to a string
+*/
+inline std::string render(nonstd::string_view input, const json& data) {
+ return Environment().render(input, data);
+}
+
+/*!
+@brief render with default settings to the given output stream
+*/
+inline void render_to(std::ostream& os, nonstd::string_view input, const json& data) {
+ Environment env;
+ env.render_to(os, env.parse(input), data);
+}
+
+}
+
+#endif // PANTOR_INJA_ENVIRONMENT_HPP
+
+// #include "string_view.hpp"
+
+// #include "template.hpp"
+
+// #include "parser.hpp"
+
+// #include "renderer.hpp"
+
+
+
+#endif // PANTOR_INJA_HPP
diff --git a/tools/jsonproc/jsonproc.cpp b/tools/jsonproc/jsonproc.cpp
new file mode 100755
index 000000000..efe48f39f
--- /dev/null
+++ b/tools/jsonproc/jsonproc.cpp
@@ -0,0 +1,91 @@
+// jsonproc.cpp
+
+#include "jsonproc.h"
+
+#include <map>
+
+#include <string>
+using std::string;
+
+#include <inja.hpp>
+using namespace inja;
+using json = nlohmann::json;
+
+std::map<string, string> customVars;
+
+void set_custom_var(string key, string value)
+{
+ customVars[key] = value;
+}
+
+string get_custom_var(string key)
+{
+ return customVars[key];
+}
+
+int main(int argc, char *argv[])
+{
+ if (argc != 4)
+ FATAL_ERROR("USAGE: jsonproc <json-filepath> <template-filepath> <output-filepath>\n");
+
+ string jsonfilepath = argv[1];
+ string templateFilepath = argv[2];
+ string outputFilepath = argv[3];
+
+ Environment env;
+
+ // Add custom command callbacks.
+ env.add_callback("doNotModifyHeader", 0, [jsonfilepath, templateFilepath](Arguments& args) {
+ return "//\n// DO NOT MODIFY THIS FILE! IT IS AUTO-GENERATED FROM " + jsonfilepath +" and Inja template " + templateFilepath + "\n//\n";
+ });
+
+ env.add_callback("setVar", 2, [=](Arguments& args) {
+ string key = args.at(0)->get<string>();
+ string value = args.at(1)->get<string>();
+ set_custom_var(key, value);
+ return "";
+ });
+
+ env.add_callback("getVar", 1, [=](Arguments& args) {
+ string key = args.at(0)->get<string>();
+ return get_custom_var(key);
+ });
+
+ env.add_callback("concat", 2, [](Arguments& args) {
+ string first = args.at(0)->get<string>();
+ string second = args.at(1)->get<string>();
+ return first + second;
+ });
+
+ env.add_callback("removePrefix", 2, [](Arguments& args) {
+ string rawValue = args.at(0)->get<string>();
+ string prefix = args.at(1)->get<string>();
+ string::size_type i = rawValue.find(prefix);
+ if (i != 0)
+ return rawValue;
+
+ return rawValue.erase(0, prefix.length());
+ });
+
+ // Add custom command callbacks.
+ env.add_callback("removeSuffix", 2, [](Arguments& args) {
+ string rawValue = args.at(0)->get<string>();
+ string suffix = args.at(1)->get<string>();
+ string::size_type i = rawValue.rfind(suffix);
+ if (i == string::npos)
+ return rawValue;
+
+ return rawValue.substr(0, i);
+ });
+
+ try
+ {
+ env.write_with_json_file(templateFilepath, jsonfilepath, outputFilepath);
+ }
+ catch (const std::exception& e)
+ {
+ FATAL_ERROR("JSONPROC_ERROR: %s\n", e.what());
+ }
+
+ return 0;
+}
diff --git a/tools/jsonproc/jsonproc.h b/tools/jsonproc/jsonproc.h
new file mode 100755
index 000000000..575fb3756
--- /dev/null
+++ b/tools/jsonproc/jsonproc.h
@@ -0,0 +1,32 @@
+// jsonproc.h
+
+#ifndef JSONPROC_H
+#define JSONPROC_H
+
+#include <cstdlib>
+#include <cstdio>
+using std::fprintf; using std::exit;
+
+#include <cstdlib>
+
+#ifdef _MSC_VER
+
+#define FATAL_ERROR(format, ...) \
+do \
+{ \
+ fprintf(stderr, format, __VA_ARGS__); \
+ exit(1); \
+} while (0)
+
+#else
+
+#define FATAL_ERROR(format, ...) \
+do \
+{ \
+ fprintf(stderr, format, ##__VA_ARGS__); \
+ exit(1); \
+} while (0)
+
+#endif // _MSC_VER
+
+#endif // JSONPROC_H
diff --git a/tools/jsonproc/nlohmann/json.hpp b/tools/jsonproc/nlohmann/json.hpp
new file mode 100755
index 000000000..5003a4fa2
--- /dev/null
+++ b/tools/jsonproc/nlohmann/json.hpp
@@ -0,0 +1,20842 @@
+/*
+ __ _____ _____ _____
+ __| | __| | | | JSON for Modern C++
+| | |__ | | | | | | version 3.6.1
+|_____|_____|_____|_|___| https://github.com/nlohmann/json
+
+Licensed under the MIT License <http://opensource.org/licenses/MIT>.
+SPDX-License-Identifier: MIT
+Copyright (c) 2013-2019 Niels Lohmann <http://nlohmann.me>.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+#ifndef INCLUDE_NLOHMANN_JSON_HPP_
+#define INCLUDE_NLOHMANN_JSON_HPP_
+
+#define NLOHMANN_JSON_VERSION_MAJOR 3
+#define NLOHMANN_JSON_VERSION_MINOR 6
+#define NLOHMANN_JSON_VERSION_PATCH 1
+
+#include <algorithm> // all_of, find, for_each
+#include <cassert> // assert
+#include <ciso646> // and, not, or
+#include <cstddef> // nullptr_t, ptrdiff_t, size_t
+#include <functional> // hash, less
+#include <initializer_list> // initializer_list
+#include <iosfwd> // istream, ostream
+#include <iterator> // random_access_iterator_tag
+#include <memory> // unique_ptr
+#include <numeric> // accumulate
+#include <string> // string, stoi, to_string
+#include <utility> // declval, forward, move, pair, swap
+#include <vector> // vector
+
+// #include <nlohmann/adl_serializer.hpp>
+
+
+#include <utility>
+
+// #include <nlohmann/detail/conversions/from_json.hpp>
+
+
+#include <algorithm> // transform
+#include <array> // array
+#include <ciso646> // and, not
+#include <forward_list> // forward_list
+#include <iterator> // inserter, front_inserter, end
+#include <map> // map
+#include <string> // string
+#include <tuple> // tuple, make_tuple
+#include <type_traits> // is_arithmetic, is_same, is_enum, underlying_type, is_convertible
+#include <unordered_map> // unordered_map
+#include <utility> // pair, declval
+#include <valarray> // valarray
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+
+#include <exception> // exception
+#include <stdexcept> // runtime_error
+#include <string> // to_string
+
+// #include <nlohmann/detail/input/position_t.hpp>
+
+
+#include <cstddef> // size_t
+
+namespace nlohmann
+{
+namespace detail
+{
+/// struct to capture the start position of the current token
+struct position_t
+{
+ /// the total number of characters read
+ std::size_t chars_read_total = 0;
+ /// the number of characters read in the current line
+ std::size_t chars_read_current_line = 0;
+ /// the number of lines read
+ std::size_t lines_read = 0;
+
+ /// conversion to size_t to preserve SAX interface
+ constexpr operator size_t() const
+ {
+ return chars_read_total;
+ }
+};
+
+} // namespace detail
+} // namespace nlohmann
+
+
+namespace nlohmann
+{
+namespace detail
+{
+////////////////
+// exceptions //
+////////////////
+
+/*!
+@brief general exception of the @ref basic_json class
+
+This class is an extension of `std::exception` objects with a member @a id for
+exception ids. It is used as the base class for all exceptions thrown by the
+@ref basic_json class. This class can hence be used as "wildcard" to catch
+exceptions.
+
+Subclasses:
+- @ref parse_error for exceptions indicating a parse error
+- @ref invalid_iterator for exceptions indicating errors with iterators
+- @ref type_error for exceptions indicating executing a member function with
+ a wrong type
+- @ref out_of_range for exceptions indicating access out of the defined range
+- @ref other_error for exceptions indicating other library errors
+
+@internal
+@note To have nothrow-copy-constructible exceptions, we internally use
+ `std::runtime_error` which can cope with arbitrary-length error messages.
+ Intermediate strings are built with static functions and then passed to
+ the actual constructor.
+@endinternal
+
+@liveexample{The following code shows how arbitrary library exceptions can be
+caught.,exception}
+
+@since version 3.0.0
+*/
+class exception : public std::exception
+{
+ public:
+ /// returns the explanatory string
+ const char* what() const noexcept override
+ {
+ return m.what();
+ }
+
+ /// the id of the exception
+ const int id;
+
+ protected:
+ exception(int id_, const char* what_arg) : id(id_), m(what_arg) {}
+
+ static std::string name(const std::string& ename, int id_)
+ {
+ return "[json.exception." + ename + "." + std::to_string(id_) + "] ";
+ }
+
+ private:
+ /// an exception object as storage for error messages
+ std::runtime_error m;
+};
+
+/*!
+@brief exception indicating a parse error
+
+This exception is thrown by the library when a parse error occurs. Parse errors
+can occur during the deserialization of JSON text, CBOR, MessagePack, as well
+as when using JSON Patch.
+
+Member @a byte holds the byte index of the last read character in the input
+file.
+
+Exceptions have ids 1xx.
+
+name / id | example message | description
+------------------------------ | --------------- | -------------------------
+json.exception.parse_error.101 | parse error at 2: unexpected end of input; expected string literal | This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member @a byte indicates the error position.
+json.exception.parse_error.102 | parse error at 14: missing or wrong low surrogate | JSON uses the `\uxxxx` format to describe Unicode characters. Code points above above 0xFFFF are split into two `\uxxxx` entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point.
+json.exception.parse_error.103 | parse error: code points above 0x10FFFF are invalid | Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid.
+json.exception.parse_error.104 | parse error: JSON patch must be an array of objects | [RFC 6902](https://tools.ietf.org/html/rfc6902) requires a JSON Patch document to be a JSON document that represents an array of objects.
+json.exception.parse_error.105 | parse error: operation must have string member 'op' | An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors.
+json.exception.parse_error.106 | parse error: array index '01' must not begin with '0' | An array index in a JSON Pointer ([RFC 6901](https://tools.ietf.org/html/rfc6901)) may be `0` or any number without a leading `0`.
+json.exception.parse_error.107 | parse error: JSON pointer must be empty or begin with '/' - was: 'foo' | A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a `/` character.
+json.exception.parse_error.108 | parse error: escape character '~' must be followed with '0' or '1' | In a JSON Pointer, only `~0` and `~1` are valid escape sequences.
+json.exception.parse_error.109 | parse error: array index 'one' is not a number | A JSON Pointer array index must be a number.
+json.exception.parse_error.110 | parse error at 1: cannot read 2 bytes from vector | When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read.
+json.exception.parse_error.112 | parse error at 1: error reading CBOR; last byte: 0xF8 | Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read.
+json.exception.parse_error.113 | parse error at 2: expected a CBOR string; last byte: 0x98 | While parsing a map key, a value that is not a string has been read.
+json.exception.parse_error.114 | parse error: Unsupported BSON record type 0x0F | The parsing of the corresponding BSON record type is not implemented (yet).
+
+@note For an input with n bytes, 1 is the index of the first character and n+1
+ is the index of the terminating null byte or the end of file. This also
+ holds true when reading a byte vector (CBOR or MessagePack).
+
+@liveexample{The following code shows how a `parse_error` exception can be
+caught.,parse_error}
+
+@sa - @ref exception for the base class of the library exceptions
+@sa - @ref invalid_iterator for exceptions indicating errors with iterators
+@sa - @ref type_error for exceptions indicating executing a member function with
+ a wrong type
+@sa - @ref out_of_range for exceptions indicating access out of the defined range
+@sa - @ref other_error for exceptions indicating other library errors
+
+@since version 3.0.0
+*/
+class parse_error : public exception
+{
+ public:
+ /*!
+ @brief create a parse error exception
+ @param[in] id_ the id of the exception
+ @param[in] pos the position where the error occurred (or with
+ chars_read_total=0 if the position cannot be
+ determined)
+ @param[in] what_arg the explanatory string
+ @return parse_error object
+ */
+ static parse_error create(int id_, const position_t& pos, const std::string& what_arg)
+ {
+ std::string w = exception::name("parse_error", id_) + "parse error" +
+ position_string(pos) + ": " + what_arg;
+ return parse_error(id_, pos.chars_read_total, w.c_str());
+ }
+
+ static parse_error create(int id_, std::size_t byte_, const std::string& what_arg)
+ {
+ std::string w = exception::name("parse_error", id_) + "parse error" +
+ (byte_ != 0 ? (" at byte " + std::to_string(byte_)) : "") +
+ ": " + what_arg;
+ return parse_error(id_, byte_, w.c_str());
+ }
+
+ /*!
+ @brief byte index of the parse error
+
+ The byte index of the last read character in the input file.
+
+ @note For an input with n bytes, 1 is the index of the first character and
+ n+1 is the index of the terminating null byte or the end of file.
+ This also holds true when reading a byte vector (CBOR or MessagePack).
+ */
+ const std::size_t byte;
+
+ private:
+ parse_error(int id_, std::size_t byte_, const char* what_arg)
+ : exception(id_, what_arg), byte(byte_) {}
+
+ static std::string position_string(const position_t& pos)
+ {
+ return " at line " + std::to_string(pos.lines_read + 1) +
+ ", column " + std::to_string(pos.chars_read_current_line);
+ }
+};
+
+/*!
+@brief exception indicating errors with iterators
+
+This exception is thrown if iterators passed to a library function do not match
+the expected semantics.
+
+Exceptions have ids 2xx.
+
+name / id | example message | description
+----------------------------------- | --------------- | -------------------------
+json.exception.invalid_iterator.201 | iterators are not compatible | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid.
+json.exception.invalid_iterator.202 | iterator does not fit current value | In an erase or insert function, the passed iterator @a pos does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion.
+json.exception.invalid_iterator.203 | iterators do not fit current value | Either iterator passed to function @ref erase(IteratorType first, IteratorType last) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from.
+json.exception.invalid_iterator.204 | iterators out of range | When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (@ref begin(), @ref end()), because this is the only way the single stored value is expressed. All other ranges are invalid.
+json.exception.invalid_iterator.205 | iterator out of range | When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the @ref begin() iterator, because it is the only way to address the stored value. All other iterators are invalid.
+json.exception.invalid_iterator.206 | cannot construct with iterators from null | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) belong to a JSON null value and hence to not define a valid range.
+json.exception.invalid_iterator.207 | cannot use key() for non-object iterators | The key() member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key.
+json.exception.invalid_iterator.208 | cannot use operator[] for object iterators | The operator[] to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered.
+json.exception.invalid_iterator.209 | cannot use offsets with object iterators | The offset operators (+, -, +=, -=) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered.
+json.exception.invalid_iterator.210 | iterators do not fit | The iterator range passed to the insert function are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid.
+json.exception.invalid_iterator.211 | passed iterators may not belong to container | The iterator range passed to the insert function must not be a subrange of the container to insert to.
+json.exception.invalid_iterator.212 | cannot compare iterators of different containers | When two iterators are compared, they must belong to the same container.
+json.exception.invalid_iterator.213 | cannot compare order of object iterators | The order of object iterators cannot be compared, because JSON objects are unordered.
+json.exception.invalid_iterator.214 | cannot get value | Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to @ref begin().
+
+@liveexample{The following code shows how an `invalid_iterator` exception can be
+caught.,invalid_iterator}
+
+@sa - @ref exception for the base class of the library exceptions
+@sa - @ref parse_error for exceptions indicating a parse error
+@sa - @ref type_error for exceptions indicating executing a member function with
+ a wrong type
+@sa - @ref out_of_range for exceptions indicating access out of the defined range
+@sa - @ref other_error for exceptions indicating other library errors
+
+@since version 3.0.0
+*/
+class invalid_iterator : public exception
+{
+ public:
+ static invalid_iterator create(int id_, const std::string& what_arg)
+ {
+ std::string w = exception::name("invalid_iterator", id_) + what_arg;
+ return invalid_iterator(id_, w.c_str());
+ }
+
+ private:
+ invalid_iterator(int id_, const char* what_arg)
+ : exception(id_, what_arg) {}
+};
+
+/*!
+@brief exception indicating executing a member function with a wrong type
+
+This exception is thrown in case of a type error; that is, a library function is
+executed on a JSON value whose type does not match the expected semantics.
+
+Exceptions have ids 3xx.
+
+name / id | example message | description
+----------------------------- | --------------- | -------------------------
+json.exception.type_error.301 | cannot create object from initializer list | To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead.
+json.exception.type_error.302 | type must be object, but is array | During implicit or explicit value conversion, the JSON type must be compatible to the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types.
+json.exception.type_error.303 | incompatible ReferenceType for get_ref, actual type is object | To retrieve a reference to a value stored in a @ref basic_json object with @ref get_ref, the type of the reference must match the value type. For instance, for a JSON array, the @a ReferenceType must be @ref array_t &.
+json.exception.type_error.304 | cannot use at() with string | The @ref at() member functions can only be executed for certain JSON types.
+json.exception.type_error.305 | cannot use operator[] with string | The @ref operator[] member functions can only be executed for certain JSON types.
+json.exception.type_error.306 | cannot use value() with string | The @ref value() member functions can only be executed for certain JSON types.
+json.exception.type_error.307 | cannot use erase() with string | The @ref erase() member functions can only be executed for certain JSON types.
+json.exception.type_error.308 | cannot use push_back() with string | The @ref push_back() and @ref operator+= member functions can only be executed for certain JSON types.
+json.exception.type_error.309 | cannot use insert() with | The @ref insert() member functions can only be executed for certain JSON types.
+json.exception.type_error.310 | cannot use swap() with number | The @ref swap() member functions can only be executed for certain JSON types.
+json.exception.type_error.311 | cannot use emplace_back() with string | The @ref emplace_back() member function can only be executed for certain JSON types.
+json.exception.type_error.312 | cannot use update() with string | The @ref update() member functions can only be executed for certain JSON types.
+json.exception.type_error.313 | invalid value to unflatten | The @ref unflatten function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well defined.
+json.exception.type_error.314 | only objects can be unflattened | The @ref unflatten function only works for an object whose keys are JSON Pointers.
+json.exception.type_error.315 | values in object must be primitive | The @ref unflatten function only works for an object whose keys are JSON Pointers and whose values are primitive.
+json.exception.type_error.316 | invalid UTF-8 byte at index 10: 0x7E | The @ref dump function only works with UTF-8 encoded strings; that is, if you assign a `std::string` to a JSON value, make sure it is UTF-8 encoded. |
+json.exception.type_error.317 | JSON value cannot be serialized to requested format | The dynamic type of the object cannot be represented in the requested serialization format (e.g. a raw `true` or `null` JSON object cannot be serialized to BSON) |
+
+@liveexample{The following code shows how a `type_error` exception can be
+caught.,type_error}
+
+@sa - @ref exception for the base class of the library exceptions
+@sa - @ref parse_error for exceptions indicating a parse error
+@sa - @ref invalid_iterator for exceptions indicating errors with iterators
+@sa - @ref out_of_range for exceptions indicating access out of the defined range
+@sa - @ref other_error for exceptions indicating other library errors
+
+@since version 3.0.0
+*/
+class type_error : public exception
+{
+ public:
+ static type_error create(int id_, const std::string& what_arg)
+ {
+ std::string w = exception::name("type_error", id_) + what_arg;
+ return type_error(id_, w.c_str());
+ }
+
+ private:
+ type_error(int id_, const char* what_arg) : exception(id_, what_arg) {}
+};
+
+/*!
+@brief exception indicating access out of the defined range
+
+This exception is thrown in case a library function is called on an input
+parameter that exceeds the expected range, for instance in case of array
+indices or nonexisting object keys.
+
+Exceptions have ids 4xx.
+
+name / id | example message | description
+------------------------------- | --------------- | -------------------------
+json.exception.out_of_range.401 | array index 3 is out of range | The provided array index @a i is larger than @a size-1.
+json.exception.out_of_range.402 | array index '-' (3) is out of range | The special array index `-` in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it.
+json.exception.out_of_range.403 | key 'foo' not found | The provided key was not found in the JSON object.
+json.exception.out_of_range.404 | unresolved reference token 'foo' | A reference token in a JSON Pointer could not be resolved.
+json.exception.out_of_range.405 | JSON pointer has no parent | The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value.
+json.exception.out_of_range.406 | number overflow parsing '10E1000' | A parsed number could not be stored as without changing it to NaN or INF.
+json.exception.out_of_range.407 | number overflow serializing '9223372036854775808' | UBJSON and BSON only support integer numbers up to 9223372036854775807. |
+json.exception.out_of_range.408 | excessive array size: 8658170730974374167 | The size (following `#`) of an UBJSON array or object exceeds the maximal capacity. |
+json.exception.out_of_range.409 | BSON key cannot contain code point U+0000 (at byte 2) | Key identifiers to be serialized to BSON cannot contain code point U+0000, since the key is stored as zero-terminated c-string |
+
+@liveexample{The following code shows how an `out_of_range` exception can be
+caught.,out_of_range}
+
+@sa - @ref exception for the base class of the library exceptions
+@sa - @ref parse_error for exceptions indicating a parse error
+@sa - @ref invalid_iterator for exceptions indicating errors with iterators
+@sa - @ref type_error for exceptions indicating executing a member function with
+ a wrong type
+@sa - @ref other_error for exceptions indicating other library errors
+
+@since version 3.0.0
+*/
+class out_of_range : public exception
+{
+ public:
+ static out_of_range create(int id_, const std::string& what_arg)
+ {
+ std::string w = exception::name("out_of_range", id_) + what_arg;
+ return out_of_range(id_, w.c_str());
+ }
+
+ private:
+ out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {}
+};
+
+/*!
+@brief exception indicating other library errors
+
+This exception is thrown in case of errors that cannot be classified with the
+other exception types.
+
+Exceptions have ids 5xx.
+
+name / id | example message | description
+------------------------------ | --------------- | -------------------------
+json.exception.other_error.501 | unsuccessful: {"op":"test","path":"/baz", "value":"bar"} | A JSON Patch operation 'test' failed. The unsuccessful operation is also printed.
+
+@sa - @ref exception for the base class of the library exceptions
+@sa - @ref parse_error for exceptions indicating a parse error
+@sa - @ref invalid_iterator for exceptions indicating errors with iterators
+@sa - @ref type_error for exceptions indicating executing a member function with
+ a wrong type
+@sa - @ref out_of_range for exceptions indicating access out of the defined range
+
+@liveexample{The following code shows how an `other_error` exception can be
+caught.,other_error}
+
+@since version 3.0.0
+*/
+class other_error : public exception
+{
+ public:
+ static other_error create(int id_, const std::string& what_arg)
+ {
+ std::string w = exception::name("other_error", id_) + what_arg;
+ return other_error(id_, w.c_str());
+ }
+
+ private:
+ other_error(int id_, const char* what_arg) : exception(id_, what_arg) {}
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+
+#include <utility> // pair
+
+// This file contains all internal macro definitions
+// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them
+
+// exclude unsupported compilers
+#if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK)
+ #if defined(__clang__)
+ #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400
+ #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers"
+ #endif
+ #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER))
+ #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800
+ #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers"
+ #endif
+ #endif
+#endif
+
+// disable float-equal warnings on GCC/clang
+#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wfloat-equal"
+#endif
+
+// disable documentation warnings on clang
+#if defined(__clang__)
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wdocumentation"
+#endif
+
+// allow for portable deprecation warnings
+#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
+ #define JSON_DEPRECATED __attribute__((deprecated))
+#elif defined(_MSC_VER)
+ #define JSON_DEPRECATED __declspec(deprecated)
+#else
+ #define JSON_DEPRECATED
+#endif
+
+// allow for portable nodiscard warnings
+#if defined(__has_cpp_attribute)
+ #if __has_cpp_attribute(nodiscard)
+ #define JSON_NODISCARD [[nodiscard]]
+ #elif __has_cpp_attribute(gnu::warn_unused_result)
+ #define JSON_NODISCARD [[gnu::warn_unused_result]]
+ #else
+ #define JSON_NODISCARD
+ #endif
+#else
+ #define JSON_NODISCARD
+#endif
+
+// allow to disable exceptions
+#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION)
+ #define JSON_THROW(exception) throw exception
+ #define JSON_TRY try
+ #define JSON_CATCH(exception) catch(exception)
+ #define JSON_INTERNAL_CATCH(exception) catch(exception)
+#else
+ #include <cstdlib>
+ #define JSON_THROW(exception) std::abort()
+ #define JSON_TRY if(true)
+ #define JSON_CATCH(exception) if(false)
+ #define JSON_INTERNAL_CATCH(exception) if(false)
+#endif
+
+// override exception macros
+#if defined(JSON_THROW_USER)
+ #undef JSON_THROW
+ #define JSON_THROW JSON_THROW_USER
+#endif
+#if defined(JSON_TRY_USER)
+ #undef JSON_TRY
+ #define JSON_TRY JSON_TRY_USER
+#endif
+#if defined(JSON_CATCH_USER)
+ #undef JSON_CATCH
+ #define JSON_CATCH JSON_CATCH_USER
+ #undef JSON_INTERNAL_CATCH
+ #define JSON_INTERNAL_CATCH JSON_CATCH_USER
+#endif
+#if defined(JSON_INTERNAL_CATCH_USER)
+ #undef JSON_INTERNAL_CATCH
+ #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER
+#endif
+
+// manual branch prediction
+#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
+ #define JSON_LIKELY(x) __builtin_expect(x, 1)
+ #define JSON_UNLIKELY(x) __builtin_expect(x, 0)
+#else
+ #define JSON_LIKELY(x) x
+ #define JSON_UNLIKELY(x) x
+#endif
+
+// C++ language standard detection
+#if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464
+ #define JSON_HAS_CPP_17
+ #define JSON_HAS_CPP_14
+#elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1)
+ #define JSON_HAS_CPP_14
+#endif
+
+/*!
+@brief macro to briefly define a mapping between an enum and JSON
+@def NLOHMANN_JSON_SERIALIZE_ENUM
+@since version 3.4.0
+*/
+#define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \
+ template<typename BasicJsonType> \
+ inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \
+ { \
+ static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \
+ static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \
+ auto it = std::find_if(std::begin(m), std::end(m), \
+ [e](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \
+ { \
+ return ej_pair.first == e; \
+ }); \
+ j = ((it != std::end(m)) ? it : std::begin(m))->second; \
+ } \
+ template<typename BasicJsonType> \
+ inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \
+ { \
+ static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \
+ static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \
+ auto it = std::find_if(std::begin(m), std::end(m), \
+ [j](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \
+ { \
+ return ej_pair.second == j; \
+ }); \
+ e = ((it != std::end(m)) ? it : std::begin(m))->first; \
+ }
+
+// Ugly macros to avoid uglier copy-paste when specializing basic_json. They
+// may be removed in the future once the class is split.
+
+#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \
+ template<template<typename, typename, typename...> class ObjectType, \
+ template<typename, typename...> class ArrayType, \
+ class StringType, class BooleanType, class NumberIntegerType, \
+ class NumberUnsignedType, class NumberFloatType, \
+ template<typename> class AllocatorType, \
+ template<typename, typename = void> class JSONSerializer>
+
+#define NLOHMANN_BASIC_JSON_TPL \
+ basic_json<ObjectType, ArrayType, StringType, BooleanType, \
+ NumberIntegerType, NumberUnsignedType, NumberFloatType, \
+ AllocatorType, JSONSerializer>
+
+// #include <nlohmann/detail/meta/cpp_future.hpp>
+
+
+#include <ciso646> // not
+#include <cstddef> // size_t
+#include <type_traits> // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type
+
+namespace nlohmann
+{
+namespace detail
+{
+// alias templates to reduce boilerplate
+template<bool B, typename T = void>
+using enable_if_t = typename std::enable_if<B, T>::type;
+
+template<typename T>
+using uncvref_t = typename std::remove_cv<typename std::remove_reference<T>::type>::type;
+
+// implementation of C++14 index_sequence and affiliates
+// source: https://stackoverflow.com/a/32223343
+template<std::size_t... Ints>
+struct index_sequence
+{
+ using type = index_sequence;
+ using value_type = std::size_t;
+ static constexpr std::size_t size() noexcept
+ {
+ return sizeof...(Ints);
+ }
+};
+
+template<class Sequence1, class Sequence2>
+struct merge_and_renumber;
+
+template<std::size_t... I1, std::size_t... I2>
+struct merge_and_renumber<index_sequence<I1...>, index_sequence<I2...>>
+ : index_sequence < I1..., (sizeof...(I1) + I2)... > {};
+
+template<std::size_t N>
+struct make_index_sequence
+ : merge_and_renumber < typename make_index_sequence < N / 2 >::type,
+ typename make_index_sequence < N - N / 2 >::type > {};
+
+template<> struct make_index_sequence<0> : index_sequence<> {};
+template<> struct make_index_sequence<1> : index_sequence<0> {};
+
+template<typename... Ts>
+using index_sequence_for = make_index_sequence<sizeof...(Ts)>;
+
+// dispatch utility (taken from ranges-v3)
+template<unsigned N> struct priority_tag : priority_tag < N - 1 > {};
+template<> struct priority_tag<0> {};
+
+// taken from ranges-v3
+template<typename T>
+struct static_const
+{
+ static constexpr T value{};
+};
+
+template<typename T>
+constexpr T static_const<T>::value;
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/meta/type_traits.hpp>
+
+
+#include <ciso646> // not
+#include <limits> // numeric_limits
+#include <type_traits> // false_type, is_constructible, is_integral, is_same, true_type
+#include <utility> // declval
+
+// #include <nlohmann/detail/iterators/iterator_traits.hpp>
+
+
+#include <iterator> // random_access_iterator_tag
+
+// #include <nlohmann/detail/meta/void_t.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+template <typename ...Ts> struct make_void
+{
+ using type = void;
+};
+template <typename ...Ts> using void_t = typename make_void<Ts...>::type;
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/meta/cpp_future.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+template <typename It, typename = void>
+struct iterator_types {};
+
+template <typename It>
+struct iterator_types <
+ It,
+ void_t<typename It::difference_type, typename It::value_type, typename It::pointer,
+ typename It::reference, typename It::iterator_category >>
+{
+ using difference_type = typename It::difference_type;
+ using value_type = typename It::value_type;
+ using pointer = typename It::pointer;
+ using reference = typename It::reference;
+ using iterator_category = typename It::iterator_category;
+};
+
+// This is required as some compilers implement std::iterator_traits in a way that
+// doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341.
+template <typename T, typename = void>
+struct iterator_traits
+{
+};
+
+template <typename T>
+struct iterator_traits < T, enable_if_t < !std::is_pointer<T>::value >>
+ : iterator_types<T>
+{
+};
+
+template <typename T>
+struct iterator_traits<T*, enable_if_t<std::is_object<T>::value>>
+{
+ using iterator_category = std::random_access_iterator_tag;
+ using value_type = T;
+ using difference_type = ptrdiff_t;
+ using pointer = T*;
+ using reference = T&;
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+// #include <nlohmann/detail/meta/cpp_future.hpp>
+
+// #include <nlohmann/detail/meta/detected.hpp>
+
+
+#include <type_traits>
+
+// #include <nlohmann/detail/meta/void_t.hpp>
+
+
+// http://en.cppreference.com/w/cpp/experimental/is_detected
+namespace nlohmann
+{
+namespace detail
+{
+struct nonesuch
+{
+ nonesuch() = delete;
+ ~nonesuch() = delete;
+ nonesuch(nonesuch const&) = delete;
+ nonesuch(nonesuch const&&) = delete;
+ void operator=(nonesuch const&) = delete;
+ void operator=(nonesuch&&) = delete;
+};
+
+template <class Default,
+ class AlwaysVoid,
+ template <class...> class Op,
+ class... Args>
+struct detector
+{
+ using value_t = std::false_type;
+ using type = Default;
+};
+
+template <class Default, template <class...> class Op, class... Args>
+struct detector<Default, void_t<Op<Args...>>, Op, Args...>
+{
+ using value_t = std::true_type;
+ using type = Op<Args...>;
+};
+
+template <template <class...> class Op, class... Args>
+using is_detected = typename detector<nonesuch, void, Op, Args...>::value_t;
+
+template <template <class...> class Op, class... Args>
+using detected_t = typename detector<nonesuch, void, Op, Args...>::type;
+
+template <class Default, template <class...> class Op, class... Args>
+using detected_or = detector<Default, void, Op, Args...>;
+
+template <class Default, template <class...> class Op, class... Args>
+using detected_or_t = typename detected_or<Default, Op, Args...>::type;
+
+template <class Expected, template <class...> class Op, class... Args>
+using is_detected_exact = std::is_same<Expected, detected_t<Op, Args...>>;
+
+template <class To, template <class...> class Op, class... Args>
+using is_detected_convertible =
+ std::is_convertible<detected_t<Op, Args...>, To>;
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/json_fwd.hpp>
+#ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_
+#define INCLUDE_NLOHMANN_JSON_FWD_HPP_
+
+#include <cstdint> // int64_t, uint64_t
+#include <map> // map
+#include <memory> // allocator
+#include <string> // string
+#include <vector> // vector
+
+/*!
+@brief namespace for Niels Lohmann
+@see https://github.com/nlohmann
+@since version 1.0.0
+*/
+namespace nlohmann
+{
+/*!
+@brief default JSONSerializer template argument
+
+This serializer ignores the template arguments and uses ADL
+([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl))
+for serialization.
+*/
+template<typename T = void, typename SFINAE = void>
+struct adl_serializer;
+
+template<template<typename U, typename V, typename... Args> class ObjectType =
+ std::map,
+ template<typename U, typename... Args> class ArrayType = std::vector,
+ class StringType = std::string, class BooleanType = bool,
+ class NumberIntegerType = std::int64_t,
+ class NumberUnsignedType = std::uint64_t,
+ class NumberFloatType = double,
+ template<typename U> class AllocatorType = std::allocator,
+ template<typename T, typename SFINAE = void> class JSONSerializer =
+ adl_serializer>
+class basic_json;
+
+/*!
+@brief JSON Pointer
+
+A JSON pointer defines a string syntax for identifying a specific value
+within a JSON document. It can be used with functions `at` and
+`operator[]`. Furthermore, JSON pointers are the base for JSON patches.
+
+@sa [RFC 6901](https://tools.ietf.org/html/rfc6901)
+
+@since version 2.0.0
+*/
+template<typename BasicJsonType>
+class json_pointer;
+
+/*!
+@brief default JSON class
+
+This type is the default specialization of the @ref basic_json class which
+uses the standard template types.
+
+@since version 1.0.0
+*/
+using json = basic_json<>;
+} // namespace nlohmann
+
+#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_
+
+
+namespace nlohmann
+{
+/*!
+@brief detail namespace with internal helper functions
+
+This namespace collects functions that should not be exposed,
+implementations of some @ref basic_json methods, and meta-programming helpers.
+
+@since version 2.1.0
+*/
+namespace detail
+{
+/////////////
+// helpers //
+/////////////
+
+// Note to maintainers:
+//
+// Every trait in this file expects a non CV-qualified type.
+// The only exceptions are in the 'aliases for detected' section
+// (i.e. those of the form: decltype(T::member_function(std::declval<T>())))
+//
+// In this case, T has to be properly CV-qualified to constraint the function arguments
+// (e.g. to_json(BasicJsonType&, const T&))
+
+template<typename> struct is_basic_json : std::false_type {};
+
+NLOHMANN_BASIC_JSON_TPL_DECLARATION
+struct is_basic_json<NLOHMANN_BASIC_JSON_TPL> : std::true_type {};
+
+//////////////////////////
+// aliases for detected //
+//////////////////////////
+
+template <typename T>
+using mapped_type_t = typename T::mapped_type;
+
+template <typename T>
+using key_type_t = typename T::key_type;
+
+template <typename T>
+using value_type_t = typename T::value_type;
+
+template <typename T>
+using difference_type_t = typename T::difference_type;
+
+template <typename T>
+using pointer_t = typename T::pointer;
+
+template <typename T>
+using reference_t = typename T::reference;
+
+template <typename T>
+using iterator_category_t = typename T::iterator_category;
+
+template <typename T>
+using iterator_t = typename T::iterator;
+
+template <typename T, typename... Args>
+using to_json_function = decltype(T::to_json(std::declval<Args>()...));
+
+template <typename T, typename... Args>
+using from_json_function = decltype(T::from_json(std::declval<Args>()...));
+
+template <typename T, typename U>
+using get_template_function = decltype(std::declval<T>().template get<U>());
+
+// trait checking if JSONSerializer<T>::from_json(json const&, udt&) exists
+template <typename BasicJsonType, typename T, typename = void>
+struct has_from_json : std::false_type {};
+
+template <typename BasicJsonType, typename T>
+struct has_from_json<BasicJsonType, T,
+ enable_if_t<not is_basic_json<T>::value>>
+{
+ using serializer = typename BasicJsonType::template json_serializer<T, void>;
+
+ static constexpr bool value =
+ is_detected_exact<void, from_json_function, serializer,
+ const BasicJsonType&, T&>::value;
+};
+
+// This trait checks if JSONSerializer<T>::from_json(json const&) exists
+// this overload is used for non-default-constructible user-defined-types
+template <typename BasicJsonType, typename T, typename = void>
+struct has_non_default_from_json : std::false_type {};
+
+template<typename BasicJsonType, typename T>
+struct has_non_default_from_json<BasicJsonType, T, enable_if_t<not is_basic_json<T>::value>>
+{
+ using serializer = typename BasicJsonType::template json_serializer<T, void>;
+
+ static constexpr bool value =
+ is_detected_exact<T, from_json_function, serializer,
+ const BasicJsonType&>::value;
+};
+
+// This trait checks if BasicJsonType::json_serializer<T>::to_json exists
+// Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion.
+template <typename BasicJsonType, typename T, typename = void>
+struct has_to_json : std::false_type {};
+
+template <typename BasicJsonType, typename T>
+struct has_to_json<BasicJsonType, T, enable_if_t<not is_basic_json<T>::value>>
+{
+ using serializer = typename BasicJsonType::template json_serializer<T, void>;
+
+ static constexpr bool value =
+ is_detected_exact<void, to_json_function, serializer, BasicJsonType&,
+ T>::value;
+};
+
+
+///////////////////
+// is_ functions //
+///////////////////
+
+template <typename T, typename = void>
+struct is_iterator_traits : std::false_type {};
+
+template <typename T>
+struct is_iterator_traits<iterator_traits<T>>
+{
+ private:
+ using traits = iterator_traits<T>;
+
+ public:
+ static constexpr auto value =
+ is_detected<value_type_t, traits>::value &&
+ is_detected<difference_type_t, traits>::value &&
+ is_detected<pointer_t, traits>::value &&
+ is_detected<iterator_category_t, traits>::value &&
+ is_detected<reference_t, traits>::value;
+};
+
+// source: https://stackoverflow.com/a/37193089/4116453
+
+template <typename T, typename = void>
+struct is_complete_type : std::false_type {};
+
+template <typename T>
+struct is_complete_type<T, decltype(void(sizeof(T)))> : std::true_type {};
+
+template <typename BasicJsonType, typename CompatibleObjectType,
+ typename = void>
+struct is_compatible_object_type_impl : std::false_type {};
+
+template <typename BasicJsonType, typename CompatibleObjectType>
+struct is_compatible_object_type_impl <
+ BasicJsonType, CompatibleObjectType,
+ enable_if_t<is_detected<mapped_type_t, CompatibleObjectType>::value and
+ is_detected<key_type_t, CompatibleObjectType>::value >>
+{
+
+ using object_t = typename BasicJsonType::object_t;
+
+ // macOS's is_constructible does not play well with nonesuch...
+ static constexpr bool value =
+ std::is_constructible<typename object_t::key_type,
+ typename CompatibleObjectType::key_type>::value and
+ std::is_constructible<typename object_t::mapped_type,
+ typename CompatibleObjectType::mapped_type>::value;
+};
+
+template <typename BasicJsonType, typename CompatibleObjectType>
+struct is_compatible_object_type
+ : is_compatible_object_type_impl<BasicJsonType, CompatibleObjectType> {};
+
+template <typename BasicJsonType, typename ConstructibleObjectType,
+ typename = void>
+struct is_constructible_object_type_impl : std::false_type {};
+
+template <typename BasicJsonType, typename ConstructibleObjectType>
+struct is_constructible_object_type_impl <
+ BasicJsonType, ConstructibleObjectType,
+ enable_if_t<is_detected<mapped_type_t, ConstructibleObjectType>::value and
+ is_detected<key_type_t, ConstructibleObjectType>::value >>
+{
+ using object_t = typename BasicJsonType::object_t;
+
+ static constexpr bool value =
+ (std::is_constructible<typename ConstructibleObjectType::key_type, typename object_t::key_type>::value and
+ std::is_same<typename object_t::mapped_type, typename ConstructibleObjectType::mapped_type>::value) or
+ (has_from_json<BasicJsonType, typename ConstructibleObjectType::mapped_type>::value or
+ has_non_default_from_json<BasicJsonType, typename ConstructibleObjectType::mapped_type >::value);
+};
+
+template <typename BasicJsonType, typename ConstructibleObjectType>
+struct is_constructible_object_type
+ : is_constructible_object_type_impl<BasicJsonType,
+ ConstructibleObjectType> {};
+
+template <typename BasicJsonType, typename CompatibleStringType,
+ typename = void>
+struct is_compatible_string_type_impl : std::false_type {};
+
+template <typename BasicJsonType, typename CompatibleStringType>
+struct is_compatible_string_type_impl <
+ BasicJsonType, CompatibleStringType,
+ enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type,
+ value_type_t, CompatibleStringType>::value >>
+{
+ static constexpr auto value =
+ std::is_constructible<typename BasicJsonType::string_t, CompatibleStringType>::value;
+};
+
+template <typename BasicJsonType, typename ConstructibleStringType>
+struct is_compatible_string_type
+ : is_compatible_string_type_impl<BasicJsonType, ConstructibleStringType> {};
+
+template <typename BasicJsonType, typename ConstructibleStringType,
+ typename = void>
+struct is_constructible_string_type_impl : std::false_type {};
+
+template <typename BasicJsonType, typename ConstructibleStringType>
+struct is_constructible_string_type_impl <
+ BasicJsonType, ConstructibleStringType,
+ enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type,
+ value_type_t, ConstructibleStringType>::value >>
+{
+ static constexpr auto value =
+ std::is_constructible<ConstructibleStringType,
+ typename BasicJsonType::string_t>::value;
+};
+
+template <typename BasicJsonType, typename ConstructibleStringType>
+struct is_constructible_string_type
+ : is_constructible_string_type_impl<BasicJsonType, ConstructibleStringType> {};
+
+template <typename BasicJsonType, typename CompatibleArrayType, typename = void>
+struct is_compatible_array_type_impl : std::false_type {};
+
+template <typename BasicJsonType, typename CompatibleArrayType>
+struct is_compatible_array_type_impl <
+ BasicJsonType, CompatibleArrayType,
+ enable_if_t<is_detected<value_type_t, CompatibleArrayType>::value and
+ is_detected<iterator_t, CompatibleArrayType>::value and
+// This is needed because json_reverse_iterator has a ::iterator type...
+// Therefore it is detected as a CompatibleArrayType.
+// The real fix would be to have an Iterable concept.
+ not is_iterator_traits<
+ iterator_traits<CompatibleArrayType>>::value >>
+{
+ static constexpr bool value =
+ std::is_constructible<BasicJsonType,
+ typename CompatibleArrayType::value_type>::value;
+};
+
+template <typename BasicJsonType, typename CompatibleArrayType>
+struct is_compatible_array_type
+ : is_compatible_array_type_impl<BasicJsonType, CompatibleArrayType> {};
+
+template <typename BasicJsonType, typename ConstructibleArrayType, typename = void>
+struct is_constructible_array_type_impl : std::false_type {};
+
+template <typename BasicJsonType, typename ConstructibleArrayType>
+struct is_constructible_array_type_impl <
+ BasicJsonType, ConstructibleArrayType,
+ enable_if_t<std::is_same<ConstructibleArrayType,
+ typename BasicJsonType::value_type>::value >>
+ : std::true_type {};
+
+template <typename BasicJsonType, typename ConstructibleArrayType>
+struct is_constructible_array_type_impl <
+ BasicJsonType, ConstructibleArrayType,
+ enable_if_t<not std::is_same<ConstructibleArrayType,
+ typename BasicJsonType::value_type>::value and
+ is_detected<value_type_t, ConstructibleArrayType>::value and
+ is_detected<iterator_t, ConstructibleArrayType>::value and
+ is_complete_type<
+ detected_t<value_type_t, ConstructibleArrayType>>::value >>
+{
+ static constexpr bool value =
+ // This is needed because json_reverse_iterator has a ::iterator type,
+ // furthermore, std::back_insert_iterator (and other iterators) have a base class `iterator`...
+ // Therefore it is detected as a ConstructibleArrayType.
+ // The real fix would be to have an Iterable concept.
+ not is_iterator_traits <
+ iterator_traits<ConstructibleArrayType >>::value and
+
+ (std::is_same<typename ConstructibleArrayType::value_type, typename BasicJsonType::array_t::value_type>::value or
+ has_from_json<BasicJsonType,
+ typename ConstructibleArrayType::value_type>::value or
+ has_non_default_from_json <
+ BasicJsonType, typename ConstructibleArrayType::value_type >::value);
+};
+
+template <typename BasicJsonType, typename ConstructibleArrayType>
+struct is_constructible_array_type
+ : is_constructible_array_type_impl<BasicJsonType, ConstructibleArrayType> {};
+
+template <typename RealIntegerType, typename CompatibleNumberIntegerType,
+ typename = void>
+struct is_compatible_integer_type_impl : std::false_type {};
+
+template <typename RealIntegerType, typename CompatibleNumberIntegerType>
+struct is_compatible_integer_type_impl <
+ RealIntegerType, CompatibleNumberIntegerType,
+ enable_if_t<std::is_integral<RealIntegerType>::value and
+ std::is_integral<CompatibleNumberIntegerType>::value and
+ not std::is_same<bool, CompatibleNumberIntegerType>::value >>
+{
+ // is there an assert somewhere on overflows?
+ using RealLimits = std::numeric_limits<RealIntegerType>;
+ using CompatibleLimits = std::numeric_limits<CompatibleNumberIntegerType>;
+
+ static constexpr auto value =
+ std::is_constructible<RealIntegerType,
+ CompatibleNumberIntegerType>::value and
+ CompatibleLimits::is_integer and
+ RealLimits::is_signed == CompatibleLimits::is_signed;
+};
+
+template <typename RealIntegerType, typename CompatibleNumberIntegerType>
+struct is_compatible_integer_type
+ : is_compatible_integer_type_impl<RealIntegerType,
+ CompatibleNumberIntegerType> {};
+
+template <typename BasicJsonType, typename CompatibleType, typename = void>
+struct is_compatible_type_impl: std::false_type {};
+
+template <typename BasicJsonType, typename CompatibleType>
+struct is_compatible_type_impl <
+ BasicJsonType, CompatibleType,
+ enable_if_t<is_complete_type<CompatibleType>::value >>
+{
+ static constexpr bool value =
+ has_to_json<BasicJsonType, CompatibleType>::value;
+};
+
+template <typename BasicJsonType, typename CompatibleType>
+struct is_compatible_type
+ : is_compatible_type_impl<BasicJsonType, CompatibleType> {};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+#include <array> // array
+#include <ciso646> // and
+#include <cstddef> // size_t
+#include <cstdint> // uint8_t
+#include <string> // string
+
+namespace nlohmann
+{
+namespace detail
+{
+///////////////////////////
+// JSON type enumeration //
+///////////////////////////
+
+/*!
+@brief the JSON type enumeration
+
+This enumeration collects the different JSON types. It is internally used to
+distinguish the stored values, and the functions @ref basic_json::is_null(),
+@ref basic_json::is_object(), @ref basic_json::is_array(),
+@ref basic_json::is_string(), @ref basic_json::is_boolean(),
+@ref basic_json::is_number() (with @ref basic_json::is_number_integer(),
+@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()),
+@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and
+@ref basic_json::is_structured() rely on it.
+
+@note There are three enumeration entries (number_integer, number_unsigned, and
+number_float), because the library distinguishes these three types for numbers:
+@ref basic_json::number_unsigned_t is used for unsigned integers,
+@ref basic_json::number_integer_t is used for signed integers, and
+@ref basic_json::number_float_t is used for floating-point numbers or to
+approximate integers which do not fit in the limits of their respective type.
+
+@sa @ref basic_json::basic_json(const value_t value_type) -- create a JSON
+value with the default value for a given type
+
+@since version 1.0.0
+*/
+enum class value_t : std::uint8_t
+{
+ null, ///< null value
+ object, ///< object (unordered set of name/value pairs)
+ array, ///< array (ordered collection of values)
+ string, ///< string value
+ boolean, ///< boolean value
+ number_integer, ///< number value (signed integer)
+ number_unsigned, ///< number value (unsigned integer)
+ number_float, ///< number value (floating-point)
+ discarded ///< discarded by the the parser callback function
+};
+
+/*!
+@brief comparison operator for JSON types
+
+Returns an ordering that is similar to Python:
+- order: null < boolean < number < object < array < string
+- furthermore, each type is not smaller than itself
+- discarded values are not comparable
+
+@since version 1.0.0
+*/
+inline bool operator<(const value_t lhs, const value_t rhs) noexcept
+{
+ static constexpr std::array<std::uint8_t, 8> order = {{
+ 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */,
+ 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */
+ }
+ };
+
+ const auto l_index = static_cast<std::size_t>(lhs);
+ const auto r_index = static_cast<std::size_t>(rhs);
+ return l_index < order.size() and r_index < order.size() and order[l_index] < order[r_index];
+}
+} // namespace detail
+} // namespace nlohmann
+
+
+namespace nlohmann
+{
+namespace detail
+{
+template<typename BasicJsonType>
+void from_json(const BasicJsonType& j, typename std::nullptr_t& n)
+{
+ if (JSON_UNLIKELY(not j.is_null()))
+ {
+ JSON_THROW(type_error::create(302, "type must be null, but is " + std::string(j.type_name())));
+ }
+ n = nullptr;
+}
+
+// overloads for basic_json template parameters
+template<typename BasicJsonType, typename ArithmeticType,
+ enable_if_t<std::is_arithmetic<ArithmeticType>::value and
+ not std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value,
+ int> = 0>
+void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val)
+{
+ switch (static_cast<value_t>(j))
+ {
+ case value_t::number_unsigned:
+ {
+ val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>());
+ break;
+ }
+ case value_t::number_integer:
+ {
+ val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>());
+ break;
+ }
+ case value_t::number_float:
+ {
+ val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>());
+ break;
+ }
+
+ default:
+ JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name())));
+ }
+}
+
+template<typename BasicJsonType>
+void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b)
+{
+ if (JSON_UNLIKELY(not j.is_boolean()))
+ {
+ JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(j.type_name())));
+ }
+ b = *j.template get_ptr<const typename BasicJsonType::boolean_t*>();
+}
+
+template<typename BasicJsonType>
+void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s)
+{
+ if (JSON_UNLIKELY(not j.is_string()))
+ {
+ JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name())));
+ }
+ s = *j.template get_ptr<const typename BasicJsonType::string_t*>();
+}
+
+template <
+ typename BasicJsonType, typename ConstructibleStringType,
+ enable_if_t <
+ is_constructible_string_type<BasicJsonType, ConstructibleStringType>::value and
+ not std::is_same<typename BasicJsonType::string_t,
+ ConstructibleStringType>::value,
+ int > = 0 >
+void from_json(const BasicJsonType& j, ConstructibleStringType& s)
+{
+ if (JSON_UNLIKELY(not j.is_string()))
+ {
+ JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name())));
+ }
+
+ s = *j.template get_ptr<const typename BasicJsonType::string_t*>();
+}
+
+template<typename BasicJsonType>
+void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val)
+{
+ get_arithmetic_value(j, val);
+}
+
+template<typename BasicJsonType>
+void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val)
+{
+ get_arithmetic_value(j, val);
+}
+
+template<typename BasicJsonType>
+void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val)
+{
+ get_arithmetic_value(j, val);
+}
+
+template<typename BasicJsonType, typename EnumType,
+ enable_if_t<std::is_enum<EnumType>::value, int> = 0>
+void from_json(const BasicJsonType& j, EnumType& e)
+{
+ typename std::underlying_type<EnumType>::type val;
+ get_arithmetic_value(j, val);
+ e = static_cast<EnumType>(val);
+}
+
+// forward_list doesn't have an insert method
+template<typename BasicJsonType, typename T, typename Allocator,
+ enable_if_t<std::is_convertible<BasicJsonType, T>::value, int> = 0>
+void from_json(const BasicJsonType& j, std::forward_list<T, Allocator>& l)
+{
+ if (JSON_UNLIKELY(not j.is_array()))
+ {
+ JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
+ }
+ std::transform(j.rbegin(), j.rend(),
+ std::front_inserter(l), [](const BasicJsonType & i)
+ {
+ return i.template get<T>();
+ });
+}
+
+// valarray doesn't have an insert method
+template<typename BasicJsonType, typename T,
+ enable_if_t<std::is_convertible<BasicJsonType, T>::value, int> = 0>
+void from_json(const BasicJsonType& j, std::valarray<T>& l)
+{
+ if (JSON_UNLIKELY(not j.is_array()))
+ {
+ JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
+ }
+ l.resize(j.size());
+ std::copy(j.m_value.array->begin(), j.m_value.array->end(), std::begin(l));
+}
+
+template<typename BasicJsonType>
+void from_json_array_impl(const BasicJsonType& j, typename BasicJsonType::array_t& arr, priority_tag<3> /*unused*/)
+{
+ arr = *j.template get_ptr<const typename BasicJsonType::array_t*>();
+}
+
+template <typename BasicJsonType, typename T, std::size_t N>
+auto from_json_array_impl(const BasicJsonType& j, std::array<T, N>& arr,
+ priority_tag<2> /*unused*/)
+-> decltype(j.template get<T>(), void())
+{
+ for (std::size_t i = 0; i < N; ++i)
+ {
+ arr[i] = j.at(i).template get<T>();
+ }
+}
+
+template<typename BasicJsonType, typename ConstructibleArrayType>
+auto from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr, priority_tag<1> /*unused*/)
+-> decltype(
+ arr.reserve(std::declval<typename ConstructibleArrayType::size_type>()),
+ j.template get<typename ConstructibleArrayType::value_type>(),
+ void())
+{
+ using std::end;
+
+ arr.reserve(j.size());
+ std::transform(j.begin(), j.end(),
+ std::inserter(arr, end(arr)), [](const BasicJsonType & i)
+ {
+ // get<BasicJsonType>() returns *this, this won't call a from_json
+ // method when value_type is BasicJsonType
+ return i.template get<typename ConstructibleArrayType::value_type>();
+ });
+}
+
+template <typename BasicJsonType, typename ConstructibleArrayType>
+void from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr,
+ priority_tag<0> /*unused*/)
+{
+ using std::end;
+
+ std::transform(
+ j.begin(), j.end(), std::inserter(arr, end(arr)),
+ [](const BasicJsonType & i)
+ {
+ // get<BasicJsonType>() returns *this, this won't call a from_json
+ // method when value_type is BasicJsonType
+ return i.template get<typename ConstructibleArrayType::value_type>();
+ });
+}
+
+template <typename BasicJsonType, typename ConstructibleArrayType,
+ enable_if_t <
+ is_constructible_array_type<BasicJsonType, ConstructibleArrayType>::value and
+ not is_constructible_object_type<BasicJsonType, ConstructibleArrayType>::value and
+ not is_constructible_string_type<BasicJsonType, ConstructibleArrayType>::value and
+ not is_basic_json<ConstructibleArrayType>::value,
+ int > = 0 >
+
+auto from_json(const BasicJsonType& j, ConstructibleArrayType& arr)
+-> decltype(from_json_array_impl(j, arr, priority_tag<3> {}),
+j.template get<typename ConstructibleArrayType::value_type>(),
+void())
+{
+ if (JSON_UNLIKELY(not j.is_array()))
+ {
+ JSON_THROW(type_error::create(302, "type must be array, but is " +
+ std::string(j.type_name())));
+ }
+
+ from_json_array_impl(j, arr, priority_tag<3> {});
+}
+
+template<typename BasicJsonType, typename ConstructibleObjectType,
+ enable_if_t<is_constructible_object_type<BasicJsonType, ConstructibleObjectType>::value, int> = 0>
+void from_json(const BasicJsonType& j, ConstructibleObjectType& obj)
+{
+ if (JSON_UNLIKELY(not j.is_object()))
+ {
+ JSON_THROW(type_error::create(302, "type must be object, but is " + std::string(j.type_name())));
+ }
+
+ auto inner_object = j.template get_ptr<const typename BasicJsonType::object_t*>();
+ using value_type = typename ConstructibleObjectType::value_type;
+ std::transform(
+ inner_object->begin(), inner_object->end(),
+ std::inserter(obj, obj.begin()),
+ [](typename BasicJsonType::object_t::value_type const & p)
+ {
+ return value_type(p.first, p.second.template get<typename ConstructibleObjectType::mapped_type>());
+ });
+}
+
+// overload for arithmetic types, not chosen for basic_json template arguments
+// (BooleanType, etc..); note: Is it really necessary to provide explicit
+// overloads for boolean_t etc. in case of a custom BooleanType which is not
+// an arithmetic type?
+template<typename BasicJsonType, typename ArithmeticType,
+ enable_if_t <
+ std::is_arithmetic<ArithmeticType>::value and
+ not std::is_same<ArithmeticType, typename BasicJsonType::number_unsigned_t>::value and
+ not std::is_same<ArithmeticType, typename BasicJsonType::number_integer_t>::value and
+ not std::is_same<ArithmeticType, typename BasicJsonType::number_float_t>::value and
+ not std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value,
+ int> = 0>
+void from_json(const BasicJsonType& j, ArithmeticType& val)
+{
+ switch (static_cast<value_t>(j))
+ {
+ case value_t::number_unsigned:
+ {
+ val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>());
+ break;
+ }
+ case value_t::number_integer:
+ {
+ val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>());
+ break;
+ }
+ case value_t::number_float:
+ {
+ val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>());
+ break;
+ }
+ case value_t::boolean:
+ {
+ val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::boolean_t*>());
+ break;
+ }
+
+ default:
+ JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name())));
+ }
+}
+
+template<typename BasicJsonType, typename A1, typename A2>
+void from_json(const BasicJsonType& j, std::pair<A1, A2>& p)
+{
+ p = {j.at(0).template get<A1>(), j.at(1).template get<A2>()};
+}
+
+template<typename BasicJsonType, typename Tuple, std::size_t... Idx>
+void from_json_tuple_impl(const BasicJsonType& j, Tuple& t, index_sequence<Idx...> /*unused*/)
+{
+ t = std::make_tuple(j.at(Idx).template get<typename std::tuple_element<Idx, Tuple>::type>()...);
+}
+
+template<typename BasicJsonType, typename... Args>
+void from_json(const BasicJsonType& j, std::tuple<Args...>& t)
+{
+ from_json_tuple_impl(j, t, index_sequence_for<Args...> {});
+}
+
+template <typename BasicJsonType, typename Key, typename Value, typename Compare, typename Allocator,
+ typename = enable_if_t<not std::is_constructible<
+ typename BasicJsonType::string_t, Key>::value>>
+void from_json(const BasicJsonType& j, std::map<Key, Value, Compare, Allocator>& m)
+{
+ if (JSON_UNLIKELY(not j.is_array()))
+ {
+ JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
+ }
+ for (const auto& p : j)
+ {
+ if (JSON_UNLIKELY(not p.is_array()))
+ {
+ JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(p.type_name())));
+ }
+ m.emplace(p.at(0).template get<Key>(), p.at(1).template get<Value>());
+ }
+}
+
+template <typename BasicJsonType, typename Key, typename Value, typename Hash, typename KeyEqual, typename Allocator,
+ typename = enable_if_t<not std::is_constructible<
+ typename BasicJsonType::string_t, Key>::value>>
+void from_json(const BasicJsonType& j, std::unordered_map<Key, Value, Hash, KeyEqual, Allocator>& m)
+{
+ if (JSON_UNLIKELY(not j.is_array()))
+ {
+ JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
+ }
+ for (const auto& p : j)
+ {
+ if (JSON_UNLIKELY(not p.is_array()))
+ {
+ JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(p.type_name())));
+ }
+ m.emplace(p.at(0).template get<Key>(), p.at(1).template get<Value>());
+ }
+}
+
+struct from_json_fn
+{
+ template<typename BasicJsonType, typename T>
+ auto operator()(const BasicJsonType& j, T& val) const
+ noexcept(noexcept(from_json(j, val)))
+ -> decltype(from_json(j, val), void())
+ {
+ return from_json(j, val);
+ }
+};
+} // namespace detail
+
+/// namespace to hold default `from_json` function
+/// to see why this is required:
+/// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4381.html
+namespace
+{
+constexpr const auto& from_json = detail::static_const<detail::from_json_fn>::value;
+} // namespace
+} // namespace nlohmann
+
+// #include <nlohmann/detail/conversions/to_json.hpp>
+
+
+#include <algorithm> // copy
+#include <ciso646> // or, and, not
+#include <iterator> // begin, end
+#include <string> // string
+#include <tuple> // tuple, get
+#include <type_traits> // is_same, is_constructible, is_floating_point, is_enum, underlying_type
+#include <utility> // move, forward, declval, pair
+#include <valarray> // valarray
+#include <vector> // vector
+
+// #include <nlohmann/detail/iterators/iteration_proxy.hpp>
+
+
+#include <cstddef> // size_t
+#include <iterator> // input_iterator_tag
+#include <string> // string, to_string
+#include <tuple> // tuple_size, get, tuple_element
+
+// #include <nlohmann/detail/meta/type_traits.hpp>
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+template <typename IteratorType> class iteration_proxy_value
+{
+ public:
+ using difference_type = std::ptrdiff_t;
+ using value_type = iteration_proxy_value;
+ using pointer = value_type * ;
+ using reference = value_type & ;
+ using iterator_category = std::input_iterator_tag;
+
+ private:
+ /// the iterator
+ IteratorType anchor;
+ /// an index for arrays (used to create key names)
+ std::size_t array_index = 0;
+ /// last stringified array index
+ mutable std::size_t array_index_last = 0;
+ /// a string representation of the array index
+ mutable std::string array_index_str = "0";
+ /// an empty string (to return a reference for primitive values)
+ const std::string empty_str = "";
+
+ public:
+ explicit iteration_proxy_value(IteratorType it) noexcept : anchor(it) {}
+
+ /// dereference operator (needed for range-based for)
+ iteration_proxy_value& operator*()
+ {
+ return *this;
+ }
+
+ /// increment operator (needed for range-based for)
+ iteration_proxy_value& operator++()
+ {
+ ++anchor;
+ ++array_index;
+
+ return *this;
+ }
+
+ /// equality operator (needed for InputIterator)
+ bool operator==(const iteration_proxy_value& o) const
+ {
+ return anchor == o.anchor;
+ }
+
+ /// inequality operator (needed for range-based for)
+ bool operator!=(const iteration_proxy_value& o) const
+ {
+ return anchor != o.anchor;
+ }
+
+ /// return key of the iterator
+ const std::string& key() const
+ {
+ assert(anchor.m_object != nullptr);
+
+ switch (anchor.m_object->type())
+ {
+ // use integer array index as key
+ case value_t::array:
+ {
+ if (array_index != array_index_last)
+ {
+ array_index_str = std::to_string(array_index);
+ array_index_last = array_index;
+ }
+ return array_index_str;
+ }
+
+ // use key from the object
+ case value_t::object:
+ return anchor.key();
+
+ // use an empty key for all primitive types
+ default:
+ return empty_str;
+ }
+ }
+
+ /// return value of the iterator
+ typename IteratorType::reference value() const
+ {
+ return anchor.value();
+ }
+};
+
+/// proxy class for the items() function
+template<typename IteratorType> class iteration_proxy
+{
+ private:
+ /// the container to iterate
+ typename IteratorType::reference container;
+
+ public:
+ /// construct iteration proxy from a container
+ explicit iteration_proxy(typename IteratorType::reference cont) noexcept
+ : container(cont) {}
+
+ /// return iterator begin (needed for range-based for)
+ iteration_proxy_value<IteratorType> begin() noexcept
+ {
+ return iteration_proxy_value<IteratorType>(container.begin());
+ }
+
+ /// return iterator end (needed for range-based for)
+ iteration_proxy_value<IteratorType> end() noexcept
+ {
+ return iteration_proxy_value<IteratorType>(container.end());
+ }
+};
+// Structured Bindings Support
+// For further reference see https://blog.tartanllama.xyz/structured-bindings/
+// And see https://github.com/nlohmann/json/pull/1391
+template <std::size_t N, typename IteratorType, enable_if_t<N == 0, int> = 0>
+auto get(const nlohmann::detail::iteration_proxy_value<IteratorType>& i) -> decltype(i.key())
+{
+ return i.key();
+}
+// Structured Bindings Support
+// For further reference see https://blog.tartanllama.xyz/structured-bindings/
+// And see https://github.com/nlohmann/json/pull/1391
+template <std::size_t N, typename IteratorType, enable_if_t<N == 1, int> = 0>
+auto get(const nlohmann::detail::iteration_proxy_value<IteratorType>& i) -> decltype(i.value())
+{
+ return i.value();
+}
+} // namespace detail
+} // namespace nlohmann
+
+// The Addition to the STD Namespace is required to add
+// Structured Bindings Support to the iteration_proxy_value class
+// For further reference see https://blog.tartanllama.xyz/structured-bindings/
+// And see https://github.com/nlohmann/json/pull/1391
+namespace std
+{
+#if defined(__clang__)
+ // Fix: https://github.com/nlohmann/json/issues/1401
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wmismatched-tags"
+#endif
+template <typename IteratorType>
+class tuple_size<::nlohmann::detail::iteration_proxy_value<IteratorType>>
+ : public std::integral_constant<std::size_t, 2> {};
+
+template <std::size_t N, typename IteratorType>
+class tuple_element<N, ::nlohmann::detail::iteration_proxy_value<IteratorType >>
+{
+ public:
+ using type = decltype(
+ get<N>(std::declval <
+ ::nlohmann::detail::iteration_proxy_value<IteratorType >> ()));
+};
+#if defined(__clang__)
+ #pragma clang diagnostic pop
+#endif
+} // namespace std
+
+// #include <nlohmann/detail/meta/cpp_future.hpp>
+
+// #include <nlohmann/detail/meta/type_traits.hpp>
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+//////////////////
+// constructors //
+//////////////////
+
+template<value_t> struct external_constructor;
+
+template<>
+struct external_constructor<value_t::boolean>
+{
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept
+ {
+ j.m_type = value_t::boolean;
+ j.m_value = b;
+ j.assert_invariant();
+ }
+};
+
+template<>
+struct external_constructor<value_t::string>
+{
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, const typename BasicJsonType::string_t& s)
+ {
+ j.m_type = value_t::string;
+ j.m_value = s;
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, typename BasicJsonType::string_t&& s)
+ {
+ j.m_type = value_t::string;
+ j.m_value = std::move(s);
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType, typename CompatibleStringType,
+ enable_if_t<not std::is_same<CompatibleStringType, typename BasicJsonType::string_t>::value,
+ int> = 0>
+ static void construct(BasicJsonType& j, const CompatibleStringType& str)
+ {
+ j.m_type = value_t::string;
+ j.m_value.string = j.template create<typename BasicJsonType::string_t>(str);
+ j.assert_invariant();
+ }
+};
+
+template<>
+struct external_constructor<value_t::number_float>
+{
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept
+ {
+ j.m_type = value_t::number_float;
+ j.m_value = val;
+ j.assert_invariant();
+ }
+};
+
+template<>
+struct external_constructor<value_t::number_unsigned>
+{
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept
+ {
+ j.m_type = value_t::number_unsigned;
+ j.m_value = val;
+ j.assert_invariant();
+ }
+};
+
+template<>
+struct external_constructor<value_t::number_integer>
+{
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept
+ {
+ j.m_type = value_t::number_integer;
+ j.m_value = val;
+ j.assert_invariant();
+ }
+};
+
+template<>
+struct external_constructor<value_t::array>
+{
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, const typename BasicJsonType::array_t& arr)
+ {
+ j.m_type = value_t::array;
+ j.m_value = arr;
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, typename BasicJsonType::array_t&& arr)
+ {
+ j.m_type = value_t::array;
+ j.m_value = std::move(arr);
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType, typename CompatibleArrayType,
+ enable_if_t<not std::is_same<CompatibleArrayType, typename BasicJsonType::array_t>::value,
+ int> = 0>
+ static void construct(BasicJsonType& j, const CompatibleArrayType& arr)
+ {
+ using std::begin;
+ using std::end;
+ j.m_type = value_t::array;
+ j.m_value.array = j.template create<typename BasicJsonType::array_t>(begin(arr), end(arr));
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, const std::vector<bool>& arr)
+ {
+ j.m_type = value_t::array;
+ j.m_value = value_t::array;
+ j.m_value.array->reserve(arr.size());
+ for (const bool x : arr)
+ {
+ j.m_value.array->push_back(x);
+ }
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType, typename T,
+ enable_if_t<std::is_convertible<T, BasicJsonType>::value, int> = 0>
+ static void construct(BasicJsonType& j, const std::valarray<T>& arr)
+ {
+ j.m_type = value_t::array;
+ j.m_value = value_t::array;
+ j.m_value.array->resize(arr.size());
+ std::copy(std::begin(arr), std::end(arr), j.m_value.array->begin());
+ j.assert_invariant();
+ }
+};
+
+template<>
+struct external_constructor<value_t::object>
+{
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, const typename BasicJsonType::object_t& obj)
+ {
+ j.m_type = value_t::object;
+ j.m_value = obj;
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType>
+ static void construct(BasicJsonType& j, typename BasicJsonType::object_t&& obj)
+ {
+ j.m_type = value_t::object;
+ j.m_value = std::move(obj);
+ j.assert_invariant();
+ }
+
+ template<typename BasicJsonType, typename CompatibleObjectType,
+ enable_if_t<not std::is_same<CompatibleObjectType, typename BasicJsonType::object_t>::value, int> = 0>
+ static void construct(BasicJsonType& j, const CompatibleObjectType& obj)
+ {
+ using std::begin;
+ using std::end;
+
+ j.m_type = value_t::object;
+ j.m_value.object = j.template create<typename BasicJsonType::object_t>(begin(obj), end(obj));
+ j.assert_invariant();
+ }
+};
+
+/////////////
+// to_json //
+/////////////
+
+template<typename BasicJsonType, typename T,
+ enable_if_t<std::is_same<T, typename BasicJsonType::boolean_t>::value, int> = 0>
+void to_json(BasicJsonType& j, T b) noexcept
+{
+ external_constructor<value_t::boolean>::construct(j, b);
+}
+
+template<typename BasicJsonType, typename CompatibleString,
+ enable_if_t<std::is_constructible<typename BasicJsonType::string_t, CompatibleString>::value, int> = 0>
+void to_json(BasicJsonType& j, const CompatibleString& s)
+{
+ external_constructor<value_t::string>::construct(j, s);
+}
+
+template<typename BasicJsonType>
+void to_json(BasicJsonType& j, typename BasicJsonType::string_t&& s)
+{
+ external_constructor<value_t::string>::construct(j, std::move(s));
+}
+
+template<typename BasicJsonType, typename FloatType,
+ enable_if_t<std::is_floating_point<FloatType>::value, int> = 0>
+void to_json(BasicJsonType& j, FloatType val) noexcept
+{
+ external_constructor<value_t::number_float>::construct(j, static_cast<typename BasicJsonType::number_float_t>(val));
+}
+
+template<typename BasicJsonType, typename CompatibleNumberUnsignedType,
+ enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_unsigned_t, CompatibleNumberUnsignedType>::value, int> = 0>
+void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept
+{
+ external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename BasicJsonType::number_unsigned_t>(val));
+}
+
+template<typename BasicJsonType, typename CompatibleNumberIntegerType,
+ enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_integer_t, CompatibleNumberIntegerType>::value, int> = 0>
+void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept
+{
+ external_constructor<value_t::number_integer>::construct(j, static_cast<typename BasicJsonType::number_integer_t>(val));
+}
+
+template<typename BasicJsonType, typename EnumType,
+ enable_if_t<std::is_enum<EnumType>::value, int> = 0>
+void to_json(BasicJsonType& j, EnumType e) noexcept
+{
+ using underlying_type = typename std::underlying_type<EnumType>::type;
+ external_constructor<value_t::number_integer>::construct(j, static_cast<underlying_type>(e));
+}
+
+template<typename BasicJsonType>
+void to_json(BasicJsonType& j, const std::vector<bool>& e)
+{
+ external_constructor<value_t::array>::construct(j, e);
+}
+
+template <typename BasicJsonType, typename CompatibleArrayType,
+ enable_if_t<is_compatible_array_type<BasicJsonType,
+ CompatibleArrayType>::value and
+ not is_compatible_object_type<
+ BasicJsonType, CompatibleArrayType>::value and
+ not is_compatible_string_type<BasicJsonType, CompatibleArrayType>::value and
+ not is_basic_json<CompatibleArrayType>::value,
+ int> = 0>
+void to_json(BasicJsonType& j, const CompatibleArrayType& arr)
+{
+ external_constructor<value_t::array>::construct(j, arr);
+}
+
+template<typename BasicJsonType, typename T,
+ enable_if_t<std::is_convertible<T, BasicJsonType>::value, int> = 0>
+void to_json(BasicJsonType& j, const std::valarray<T>& arr)
+{
+ external_constructor<value_t::array>::construct(j, std::move(arr));
+}
+
+template<typename BasicJsonType>
+void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr)
+{
+ external_constructor<value_t::array>::construct(j, std::move(arr));
+}
+
+template<typename BasicJsonType, typename CompatibleObjectType,
+ enable_if_t<is_compatible_object_type<BasicJsonType, CompatibleObjectType>::value and not is_basic_json<CompatibleObjectType>::value, int> = 0>
+void to_json(BasicJsonType& j, const CompatibleObjectType& obj)
+{
+ external_constructor<value_t::object>::construct(j, obj);
+}
+
+template<typename BasicJsonType>
+void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj)
+{
+ external_constructor<value_t::object>::construct(j, std::move(obj));
+}
+
+template <
+ typename BasicJsonType, typename T, std::size_t N,
+ enable_if_t<not std::is_constructible<typename BasicJsonType::string_t,
+ const T(&)[N]>::value,
+ int> = 0 >
+void to_json(BasicJsonType& j, const T(&arr)[N])
+{
+ external_constructor<value_t::array>::construct(j, arr);
+}
+
+template<typename BasicJsonType, typename... Args>
+void to_json(BasicJsonType& j, const std::pair<Args...>& p)
+{
+ j = { p.first, p.second };
+}
+
+// for https://github.com/nlohmann/json/pull/1134
+template < typename BasicJsonType, typename T,
+ enable_if_t<std::is_same<T, iteration_proxy_value<typename BasicJsonType::iterator>>::value, int> = 0>
+void to_json(BasicJsonType& j, const T& b)
+{
+ j = { {b.key(), b.value()} };
+}
+
+template<typename BasicJsonType, typename Tuple, std::size_t... Idx>
+void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequence<Idx...> /*unused*/)
+{
+ j = { std::get<Idx>(t)... };
+}
+
+template<typename BasicJsonType, typename... Args>
+void to_json(BasicJsonType& j, const std::tuple<Args...>& t)
+{
+ to_json_tuple_impl(j, t, index_sequence_for<Args...> {});
+}
+
+struct to_json_fn
+{
+ template<typename BasicJsonType, typename T>
+ auto operator()(BasicJsonType& j, T&& val) const noexcept(noexcept(to_json(j, std::forward<T>(val))))
+ -> decltype(to_json(j, std::forward<T>(val)), void())
+ {
+ return to_json(j, std::forward<T>(val));
+ }
+};
+} // namespace detail
+
+/// namespace to hold default `to_json` function
+namespace
+{
+constexpr const auto& to_json = detail::static_const<detail::to_json_fn>::value;
+} // namespace
+} // namespace nlohmann
+
+
+namespace nlohmann
+{
+
+template<typename, typename>
+struct adl_serializer
+{
+ /*!
+ @brief convert a JSON value to any value type
+
+ This function is usually called by the `get()` function of the
+ @ref basic_json class (either explicit or via conversion operators).
+
+ @param[in] j JSON value to read from
+ @param[in,out] val value to write to
+ */
+ template<typename BasicJsonType, typename ValueType>
+ static auto from_json(BasicJsonType&& j, ValueType& val) noexcept(
+ noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val)))
+ -> decltype(::nlohmann::from_json(std::forward<BasicJsonType>(j), val), void())
+ {
+ ::nlohmann::from_json(std::forward<BasicJsonType>(j), val);
+ }
+
+ /*!
+ @brief convert any value type to a JSON value
+
+ This function is usually called by the constructors of the @ref basic_json
+ class.
+
+ @param[in,out] j JSON value to write to
+ @param[in] val value to read from
+ */
+ template <typename BasicJsonType, typename ValueType>
+ static auto to_json(BasicJsonType& j, ValueType&& val) noexcept(
+ noexcept(::nlohmann::to_json(j, std::forward<ValueType>(val))))
+ -> decltype(::nlohmann::to_json(j, std::forward<ValueType>(val)), void())
+ {
+ ::nlohmann::to_json(j, std::forward<ValueType>(val));
+ }
+};
+
+} // namespace nlohmann
+
+// #include <nlohmann/detail/conversions/from_json.hpp>
+
+// #include <nlohmann/detail/conversions/to_json.hpp>
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+// #include <nlohmann/detail/input/binary_reader.hpp>
+
+
+#include <algorithm> // generate_n
+#include <array> // array
+#include <cassert> // assert
+#include <cmath> // ldexp
+#include <cstddef> // size_t
+#include <cstdint> // uint8_t, uint16_t, uint32_t, uint64_t
+#include <cstdio> // snprintf
+#include <cstring> // memcpy
+#include <iterator> // back_inserter
+#include <limits> // numeric_limits
+#include <string> // char_traits, string
+#include <utility> // make_pair, move
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+// #include <nlohmann/detail/input/input_adapters.hpp>
+
+
+#include <array> // array
+#include <cassert> // assert
+#include <cstddef> // size_t
+#include <cstdio> //FILE *
+#include <cstring> // strlen
+#include <istream> // istream
+#include <iterator> // begin, end, iterator_traits, random_access_iterator_tag, distance, next
+#include <memory> // shared_ptr, make_shared, addressof
+#include <numeric> // accumulate
+#include <string> // string, char_traits
+#include <type_traits> // enable_if, is_base_of, is_pointer, is_integral, remove_pointer
+#include <utility> // pair, declval
+
+// #include <nlohmann/detail/iterators/iterator_traits.hpp>
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+/// the supported input formats
+enum class input_format_t { json, cbor, msgpack, ubjson, bson };
+
+////////////////////
+// input adapters //
+////////////////////
+
+/*!
+@brief abstract input adapter interface
+
+Produces a stream of std::char_traits<char>::int_type characters from a
+std::istream, a buffer, or some other input type. Accepts the return of
+exactly one non-EOF character for future input. The int_type characters
+returned consist of all valid char values as positive values (typically
+unsigned char), plus an EOF value outside that range, specified by the value
+of the function std::char_traits<char>::eof(). This value is typically -1, but
+could be any arbitrary value which is not a valid char value.
+*/
+struct input_adapter_protocol
+{
+ /// get a character [0,255] or std::char_traits<char>::eof().
+ virtual std::char_traits<char>::int_type get_character() = 0;
+ virtual ~input_adapter_protocol() = default;
+};
+
+/// a type to simplify interfaces
+using input_adapter_t = std::shared_ptr<input_adapter_protocol>;
+
+/*!
+Input adapter for stdio file access. This adapter read only 1 byte and do not use any
+ buffer. This adapter is a very low level adapter.
+*/
+class file_input_adapter : public input_adapter_protocol
+{
+ public:
+ explicit file_input_adapter(std::FILE* f) noexcept
+ : m_file(f)
+ {}
+
+ // make class move-only
+ file_input_adapter(const file_input_adapter&) = delete;
+ file_input_adapter(file_input_adapter&&) = default;
+ file_input_adapter& operator=(const file_input_adapter&) = delete;
+ file_input_adapter& operator=(file_input_adapter&&) = default;
+ ~file_input_adapter() override = default;
+
+ std::char_traits<char>::int_type get_character() noexcept override
+ {
+ return std::fgetc(m_file);
+ }
+
+ private:
+ /// the file pointer to read from
+ std::FILE* m_file;
+};
+
+
+/*!
+Input adapter for a (caching) istream. Ignores a UFT Byte Order Mark at
+beginning of input. Does not support changing the underlying std::streambuf
+in mid-input. Maintains underlying std::istream and std::streambuf to support
+subsequent use of standard std::istream operations to process any input
+characters following those used in parsing the JSON input. Clears the
+std::istream flags; any input errors (e.g., EOF) will be detected by the first
+subsequent call for input from the std::istream.
+*/
+class input_stream_adapter : public input_adapter_protocol
+{
+ public:
+ ~input_stream_adapter() override
+ {
+ // clear stream flags; we use underlying streambuf I/O, do not
+ // maintain ifstream flags, except eof
+ is.clear(is.rdstate() & std::ios::eofbit);
+ }
+
+ explicit input_stream_adapter(std::istream& i)
+ : is(i), sb(*i.rdbuf())
+ {}
+
+ // delete because of pointer members
+ input_stream_adapter(const input_stream_adapter&) = delete;
+ input_stream_adapter& operator=(input_stream_adapter&) = delete;
+ input_stream_adapter(input_stream_adapter&&) = delete;
+ input_stream_adapter& operator=(input_stream_adapter&&) = delete;
+
+ // std::istream/std::streambuf use std::char_traits<char>::to_int_type, to
+ // ensure that std::char_traits<char>::eof() and the character 0xFF do not
+ // end up as the same value, eg. 0xFFFFFFFF.
+ std::char_traits<char>::int_type get_character() override
+ {
+ auto res = sb.sbumpc();
+ // set eof manually, as we don't use the istream interface.
+ if (res == EOF)
+ {
+ is.clear(is.rdstate() | std::ios::eofbit);
+ }
+ return res;
+ }
+
+ private:
+ /// the associated input stream
+ std::istream& is;
+ std::streambuf& sb;
+};
+
+/// input adapter for buffer input
+class input_buffer_adapter : public input_adapter_protocol
+{
+ public:
+ input_buffer_adapter(const char* b, const std::size_t l) noexcept
+ : cursor(b), limit(b + l)
+ {}
+
+ // delete because of pointer members
+ input_buffer_adapter(const input_buffer_adapter&) = delete;
+ input_buffer_adapter& operator=(input_buffer_adapter&) = delete;
+ input_buffer_adapter(input_buffer_adapter&&) = delete;
+ input_buffer_adapter& operator=(input_buffer_adapter&&) = delete;
+ ~input_buffer_adapter() override = default;
+
+ std::char_traits<char>::int_type get_character() noexcept override
+ {
+ if (JSON_LIKELY(cursor < limit))
+ {
+ return std::char_traits<char>::to_int_type(*(cursor++));
+ }
+
+ return std::char_traits<char>::eof();
+ }
+
+ private:
+ /// pointer to the current character
+ const char* cursor;
+ /// pointer past the last character
+ const char* const limit;
+};
+
+template<typename WideStringType, size_t T>
+struct wide_string_input_helper
+{
+ // UTF-32
+ static void fill_buffer(const WideStringType& str,
+ size_t& current_wchar,
+ std::array<std::char_traits<char>::int_type, 4>& utf8_bytes,
+ size_t& utf8_bytes_index,
+ size_t& utf8_bytes_filled)
+ {
+ utf8_bytes_index = 0;
+
+ if (current_wchar == str.size())
+ {
+ utf8_bytes[0] = std::char_traits<char>::eof();
+ utf8_bytes_filled = 1;
+ }
+ else
+ {
+ // get the current character
+ const auto wc = static_cast<unsigned int>(str[current_wchar++]);
+
+ // UTF-32 to UTF-8 encoding
+ if (wc < 0x80)
+ {
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
+ utf8_bytes_filled = 1;
+ }
+ else if (wc <= 0x7FF)
+ {
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xC0u | ((wc >> 6u) & 0x1Fu));
+ utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
+ utf8_bytes_filled = 2;
+ }
+ else if (wc <= 0xFFFF)
+ {
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xE0u | ((wc >> 12u) & 0x0Fu));
+ utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 6u) & 0x3Fu));
+ utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
+ utf8_bytes_filled = 3;
+ }
+ else if (wc <= 0x10FFFF)
+ {
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xF0u | ((wc >> 18u) & 0x07u));
+ utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 12u) & 0x3Fu));
+ utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 6u) & 0x3Fu));
+ utf8_bytes[3] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
+ utf8_bytes_filled = 4;
+ }
+ else
+ {
+ // unknown character
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
+ utf8_bytes_filled = 1;
+ }
+ }
+ }
+};
+
+template<typename WideStringType>
+struct wide_string_input_helper<WideStringType, 2>
+{
+ // UTF-16
+ static void fill_buffer(const WideStringType& str,
+ size_t& current_wchar,
+ std::array<std::char_traits<char>::int_type, 4>& utf8_bytes,
+ size_t& utf8_bytes_index,
+ size_t& utf8_bytes_filled)
+ {
+ utf8_bytes_index = 0;
+
+ if (current_wchar == str.size())
+ {
+ utf8_bytes[0] = std::char_traits<char>::eof();
+ utf8_bytes_filled = 1;
+ }
+ else
+ {
+ // get the current character
+ const auto wc = static_cast<unsigned int>(str[current_wchar++]);
+
+ // UTF-16 to UTF-8 encoding
+ if (wc < 0x80)
+ {
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
+ utf8_bytes_filled = 1;
+ }
+ else if (wc <= 0x7FF)
+ {
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xC0u | ((wc >> 6u)));
+ utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
+ utf8_bytes_filled = 2;
+ }
+ else if (0xD800 > wc or wc >= 0xE000)
+ {
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xE0u | ((wc >> 12u)));
+ utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 6u) & 0x3Fu));
+ utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
+ utf8_bytes_filled = 3;
+ }
+ else
+ {
+ if (current_wchar < str.size())
+ {
+ const auto wc2 = static_cast<unsigned int>(str[current_wchar++]);
+ const auto charcode = 0x10000u + (((wc & 0x3FFu) << 10u) | (wc2 & 0x3FFu));
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xF0u | (charcode >> 18u));
+ utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((charcode >> 12u) & 0x3Fu));
+ utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | ((charcode >> 6u) & 0x3Fu));
+ utf8_bytes[3] = static_cast<std::char_traits<char>::int_type>(0x80u | (charcode & 0x3Fu));
+ utf8_bytes_filled = 4;
+ }
+ else
+ {
+ // unknown character
+ ++current_wchar;
+ utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
+ utf8_bytes_filled = 1;
+ }
+ }
+ }
+ }
+};
+
+template<typename WideStringType>
+class wide_string_input_adapter : public input_adapter_protocol
+{
+ public:
+ explicit wide_string_input_adapter(const WideStringType& w) noexcept
+ : str(w)
+ {}
+
+ std::char_traits<char>::int_type get_character() noexcept override
+ {
+ // check if buffer needs to be filled
+ if (utf8_bytes_index == utf8_bytes_filled)
+ {
+ fill_buffer<sizeof(typename WideStringType::value_type)>();
+
+ assert(utf8_bytes_filled > 0);
+ assert(utf8_bytes_index == 0);
+ }
+
+ // use buffer
+ assert(utf8_bytes_filled > 0);
+ assert(utf8_bytes_index < utf8_bytes_filled);
+ return utf8_bytes[utf8_bytes_index++];
+ }
+
+ private:
+ template<size_t T>
+ void fill_buffer()
+ {
+ wide_string_input_helper<WideStringType, T>::fill_buffer(str, current_wchar, utf8_bytes, utf8_bytes_index, utf8_bytes_filled);
+ }
+
+ /// the wstring to process
+ const WideStringType& str;
+
+ /// index of the current wchar in str
+ std::size_t current_wchar = 0;
+
+ /// a buffer for UTF-8 bytes
+ std::array<std::char_traits<char>::int_type, 4> utf8_bytes = {{0, 0, 0, 0}};
+
+ /// index to the utf8_codes array for the next valid byte
+ std::size_t utf8_bytes_index = 0;
+ /// number of valid bytes in the utf8_codes array
+ std::size_t utf8_bytes_filled = 0;
+};
+
+class input_adapter
+{
+ public:
+ // native support
+ input_adapter(std::FILE* file)
+ : ia(std::make_shared<file_input_adapter>(file)) {}
+ /// input adapter for input stream
+ input_adapter(std::istream& i)
+ : ia(std::make_shared<input_stream_adapter>(i)) {}
+
+ /// input adapter for input stream
+ input_adapter(std::istream&& i)
+ : ia(std::make_shared<input_stream_adapter>(i)) {}
+
+ input_adapter(const std::wstring& ws)
+ : ia(std::make_shared<wide_string_input_adapter<std::wstring>>(ws)) {}
+
+ input_adapter(const std::u16string& ws)
+ : ia(std::make_shared<wide_string_input_adapter<std::u16string>>(ws)) {}
+
+ input_adapter(const std::u32string& ws)
+ : ia(std::make_shared<wide_string_input_adapter<std::u32string>>(ws)) {}
+
+ /// input adapter for buffer
+ template<typename CharT,
+ typename std::enable_if<
+ std::is_pointer<CharT>::value and
+ std::is_integral<typename std::remove_pointer<CharT>::type>::value and
+ sizeof(typename std::remove_pointer<CharT>::type) == 1,
+ int>::type = 0>
+ input_adapter(CharT b, std::size_t l)
+ : ia(std::make_shared<input_buffer_adapter>(reinterpret_cast<const char*>(b), l)) {}
+
+ // derived support
+
+ /// input adapter for string literal
+ template<typename CharT,
+ typename std::enable_if<
+ std::is_pointer<CharT>::value and
+ std::is_integral<typename std::remove_pointer<CharT>::type>::value and
+ sizeof(typename std::remove_pointer<CharT>::type) == 1,
+ int>::type = 0>
+ input_adapter(CharT b)
+ : input_adapter(reinterpret_cast<const char*>(b),
+ std::strlen(reinterpret_cast<const char*>(b))) {}
+
+ /// input adapter for iterator range with contiguous storage
+ template<class IteratorType,
+ typename std::enable_if<
+ std::is_same<typename iterator_traits<IteratorType>::iterator_category, std::random_access_iterator_tag>::value,
+ int>::type = 0>
+ input_adapter(IteratorType first, IteratorType last)
+ {
+#ifndef NDEBUG
+ // assertion to check that the iterator range is indeed contiguous,
+ // see http://stackoverflow.com/a/35008842/266378 for more discussion
+ const auto is_contiguous = std::accumulate(
+ first, last, std::pair<bool, int>(true, 0),
+ [&first](std::pair<bool, int> res, decltype(*first) val)
+ {
+ res.first &= (val == *(std::next(std::addressof(*first), res.second++)));
+ return res;
+ }).first;
+ assert(is_contiguous);
+#endif
+
+ // assertion to check that each element is 1 byte long
+ static_assert(
+ sizeof(typename iterator_traits<IteratorType>::value_type) == 1,
+ "each element in the iterator range must have the size of 1 byte");
+
+ const auto len = static_cast<size_t>(std::distance(first, last));
+ if (JSON_LIKELY(len > 0))
+ {
+ // there is at least one element: use the address of first
+ ia = std::make_shared<input_buffer_adapter>(reinterpret_cast<const char*>(&(*first)), len);
+ }
+ else
+ {
+ // the address of first cannot be used: use nullptr
+ ia = std::make_shared<input_buffer_adapter>(nullptr, len);
+ }
+ }
+
+ /// input adapter for array
+ template<class T, std::size_t N>
+ input_adapter(T (&array)[N])
+ : input_adapter(std::begin(array), std::end(array)) {}
+
+ /// input adapter for contiguous container
+ template<class ContiguousContainer, typename
+ std::enable_if<not std::is_pointer<ContiguousContainer>::value and
+ std::is_base_of<std::random_access_iterator_tag, typename iterator_traits<decltype(std::begin(std::declval<ContiguousContainer const>()))>::iterator_category>::value,
+ int>::type = 0>
+ input_adapter(const ContiguousContainer& c)
+ : input_adapter(std::begin(c), std::end(c)) {}
+
+ operator input_adapter_t()
+ {
+ return ia;
+ }
+
+ private:
+ /// the actual adapter
+ input_adapter_t ia = nullptr;
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/input/json_sax.hpp>
+
+
+#include <cassert> // assert
+#include <cstddef>
+#include <string> // string
+#include <utility> // move
+#include <vector> // vector
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+
+namespace nlohmann
+{
+
+/*!
+@brief SAX interface
+
+This class describes the SAX interface used by @ref nlohmann::json::sax_parse.
+Each function is called in different situations while the input is parsed. The
+boolean return value informs the parser whether to continue processing the
+input.
+*/
+template<typename BasicJsonType>
+struct json_sax
+{
+ /// type for (signed) integers
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ /// type for unsigned integers
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ /// type for floating-point numbers
+ using number_float_t = typename BasicJsonType::number_float_t;
+ /// type for strings
+ using string_t = typename BasicJsonType::string_t;
+
+ /*!
+ @brief a null value was read
+ @return whether parsing should proceed
+ */
+ virtual bool null() = 0;
+
+ /*!
+ @brief a boolean value was read
+ @param[in] val boolean value
+ @return whether parsing should proceed
+ */
+ virtual bool boolean(bool val) = 0;
+
+ /*!
+ @brief an integer number was read
+ @param[in] val integer value
+ @return whether parsing should proceed
+ */
+ virtual bool number_integer(number_integer_t val) = 0;
+
+ /*!
+ @brief an unsigned integer number was read
+ @param[in] val unsigned integer value
+ @return whether parsing should proceed
+ */
+ virtual bool number_unsigned(number_unsigned_t val) = 0;
+
+ /*!
+ @brief an floating-point number was read
+ @param[in] val floating-point value
+ @param[in] s raw token value
+ @return whether parsing should proceed
+ */
+ virtual bool number_float(number_float_t val, const string_t& s) = 0;
+
+ /*!
+ @brief a string was read
+ @param[in] val string value
+ @return whether parsing should proceed
+ @note It is safe to move the passed string.
+ */
+ virtual bool string(string_t& val) = 0;
+
+ /*!
+ @brief the beginning of an object was read
+ @param[in] elements number of object elements or -1 if unknown
+ @return whether parsing should proceed
+ @note binary formats may report the number of elements
+ */
+ virtual bool start_object(std::size_t elements) = 0;
+
+ /*!
+ @brief an object key was read
+ @param[in] val object key
+ @return whether parsing should proceed
+ @note It is safe to move the passed string.
+ */
+ virtual bool key(string_t& val) = 0;
+
+ /*!
+ @brief the end of an object was read
+ @return whether parsing should proceed
+ */
+ virtual bool end_object() = 0;
+
+ /*!
+ @brief the beginning of an array was read
+ @param[in] elements number of array elements or -1 if unknown
+ @return whether parsing should proceed
+ @note binary formats may report the number of elements
+ */
+ virtual bool start_array(std::size_t elements) = 0;
+
+ /*!
+ @brief the end of an array was read
+ @return whether parsing should proceed
+ */
+ virtual bool end_array() = 0;
+
+ /*!
+ @brief a parse error occurred
+ @param[in] position the position in the input where the error occurs
+ @param[in] last_token the last read token
+ @param[in] ex an exception object describing the error
+ @return whether parsing should proceed (must return false)
+ */
+ virtual bool parse_error(std::size_t position,
+ const std::string& last_token,
+ const detail::exception& ex) = 0;
+
+ virtual ~json_sax() = default;
+};
+
+
+namespace detail
+{
+/*!
+@brief SAX implementation to create a JSON value from SAX events
+
+This class implements the @ref json_sax interface and processes the SAX events
+to create a JSON value which makes it basically a DOM parser. The structure or
+hierarchy of the JSON value is managed by the stack `ref_stack` which contains
+a pointer to the respective array or object for each recursion depth.
+
+After successful parsing, the value that is passed by reference to the
+constructor contains the parsed value.
+
+@tparam BasicJsonType the JSON type
+*/
+template<typename BasicJsonType>
+class json_sax_dom_parser
+{
+ public:
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+
+ /*!
+ @param[in, out] r reference to a JSON value that is manipulated while
+ parsing
+ @param[in] allow_exceptions_ whether parse errors yield exceptions
+ */
+ explicit json_sax_dom_parser(BasicJsonType& r, const bool allow_exceptions_ = true)
+ : root(r), allow_exceptions(allow_exceptions_)
+ {}
+
+ // make class move-only
+ json_sax_dom_parser(const json_sax_dom_parser&) = delete;
+ json_sax_dom_parser(json_sax_dom_parser&&) = default;
+ json_sax_dom_parser& operator=(const json_sax_dom_parser&) = delete;
+ json_sax_dom_parser& operator=(json_sax_dom_parser&&) = default;
+ ~json_sax_dom_parser() = default;
+
+ bool null()
+ {
+ handle_value(nullptr);
+ return true;
+ }
+
+ bool boolean(bool val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool number_integer(number_integer_t val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool number_unsigned(number_unsigned_t val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool number_float(number_float_t val, const string_t& /*unused*/)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool string(string_t& val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool start_object(std::size_t len)
+ {
+ ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
+
+ if (JSON_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size()))
+ {
+ JSON_THROW(out_of_range::create(408,
+ "excessive object size: " + std::to_string(len)));
+ }
+
+ return true;
+ }
+
+ bool key(string_t& val)
+ {
+ // add null at given key and store the reference for later
+ object_element = &(ref_stack.back()->m_value.object->operator[](val));
+ return true;
+ }
+
+ bool end_object()
+ {
+ ref_stack.pop_back();
+ return true;
+ }
+
+ bool start_array(std::size_t len)
+ {
+ ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
+
+ if (JSON_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size()))
+ {
+ JSON_THROW(out_of_range::create(408,
+ "excessive array size: " + std::to_string(len)));
+ }
+
+ return true;
+ }
+
+ bool end_array()
+ {
+ ref_stack.pop_back();
+ return true;
+ }
+
+ bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/,
+ const detail::exception& ex)
+ {
+ errored = true;
+ if (allow_exceptions)
+ {
+ // determine the proper exception type from the id
+ switch ((ex.id / 100) % 100)
+ {
+ case 1:
+ JSON_THROW(*static_cast<const detail::parse_error*>(&ex));
+ case 4:
+ JSON_THROW(*static_cast<const detail::out_of_range*>(&ex));
+ // LCOV_EXCL_START
+ case 2:
+ JSON_THROW(*static_cast<const detail::invalid_iterator*>(&ex));
+ case 3:
+ JSON_THROW(*static_cast<const detail::type_error*>(&ex));
+ case 5:
+ JSON_THROW(*static_cast<const detail::other_error*>(&ex));
+ default:
+ assert(false);
+ // LCOV_EXCL_STOP
+ }
+ }
+ return false;
+ }
+
+ constexpr bool is_errored() const
+ {
+ return errored;
+ }
+
+ private:
+ /*!
+ @invariant If the ref stack is empty, then the passed value will be the new
+ root.
+ @invariant If the ref stack contains a value, then it is an array or an
+ object to which we can add elements
+ */
+ template<typename Value>
+ BasicJsonType* handle_value(Value&& v)
+ {
+ if (ref_stack.empty())
+ {
+ root = BasicJsonType(std::forward<Value>(v));
+ return &root;
+ }
+
+ assert(ref_stack.back()->is_array() or ref_stack.back()->is_object());
+
+ if (ref_stack.back()->is_array())
+ {
+ ref_stack.back()->m_value.array->emplace_back(std::forward<Value>(v));
+ return &(ref_stack.back()->m_value.array->back());
+ }
+
+ assert(ref_stack.back()->is_object());
+ assert(object_element);
+ *object_element = BasicJsonType(std::forward<Value>(v));
+ return object_element;
+ }
+
+ /// the parsed JSON value
+ BasicJsonType& root;
+ /// stack to model hierarchy of values
+ std::vector<BasicJsonType*> ref_stack {};
+ /// helper to hold the reference for the next object element
+ BasicJsonType* object_element = nullptr;
+ /// whether a syntax error occurred
+ bool errored = false;
+ /// whether to throw exceptions in case of errors
+ const bool allow_exceptions = true;
+};
+
+template<typename BasicJsonType>
+class json_sax_dom_callback_parser
+{
+ public:
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+ using parser_callback_t = typename BasicJsonType::parser_callback_t;
+ using parse_event_t = typename BasicJsonType::parse_event_t;
+
+ json_sax_dom_callback_parser(BasicJsonType& r,
+ const parser_callback_t cb,
+ const bool allow_exceptions_ = true)
+ : root(r), callback(cb), allow_exceptions(allow_exceptions_)
+ {
+ keep_stack.push_back(true);
+ }
+
+ // make class move-only
+ json_sax_dom_callback_parser(const json_sax_dom_callback_parser&) = delete;
+ json_sax_dom_callback_parser(json_sax_dom_callback_parser&&) = default;
+ json_sax_dom_callback_parser& operator=(const json_sax_dom_callback_parser&) = delete;
+ json_sax_dom_callback_parser& operator=(json_sax_dom_callback_parser&&) = default;
+ ~json_sax_dom_callback_parser() = default;
+
+ bool null()
+ {
+ handle_value(nullptr);
+ return true;
+ }
+
+ bool boolean(bool val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool number_integer(number_integer_t val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool number_unsigned(number_unsigned_t val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool number_float(number_float_t val, const string_t& /*unused*/)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool string(string_t& val)
+ {
+ handle_value(val);
+ return true;
+ }
+
+ bool start_object(std::size_t len)
+ {
+ // check callback for object start
+ const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::object_start, discarded);
+ keep_stack.push_back(keep);
+
+ auto val = handle_value(BasicJsonType::value_t::object, true);
+ ref_stack.push_back(val.second);
+
+ // check object limit
+ if (ref_stack.back() and JSON_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size()))
+ {
+ JSON_THROW(out_of_range::create(408, "excessive object size: " + std::to_string(len)));
+ }
+
+ return true;
+ }
+
+ bool key(string_t& val)
+ {
+ BasicJsonType k = BasicJsonType(val);
+
+ // check callback for key
+ const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::key, k);
+ key_keep_stack.push_back(keep);
+
+ // add discarded value at given key and store the reference for later
+ if (keep and ref_stack.back())
+ {
+ object_element = &(ref_stack.back()->m_value.object->operator[](val) = discarded);
+ }
+
+ return true;
+ }
+
+ bool end_object()
+ {
+ if (ref_stack.back() and not callback(static_cast<int>(ref_stack.size()) - 1, parse_event_t::object_end, *ref_stack.back()))
+ {
+ // discard object
+ *ref_stack.back() = discarded;
+ }
+
+ assert(not ref_stack.empty());
+ assert(not keep_stack.empty());
+ ref_stack.pop_back();
+ keep_stack.pop_back();
+
+ if (not ref_stack.empty() and ref_stack.back() and ref_stack.back()->is_object())
+ {
+ // remove discarded value
+ for (auto it = ref_stack.back()->begin(); it != ref_stack.back()->end(); ++it)
+ {
+ if (it->is_discarded())
+ {
+ ref_stack.back()->erase(it);
+ break;
+ }
+ }
+ }
+
+ return true;
+ }
+
+ bool start_array(std::size_t len)
+ {
+ const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::array_start, discarded);
+ keep_stack.push_back(keep);
+
+ auto val = handle_value(BasicJsonType::value_t::array, true);
+ ref_stack.push_back(val.second);
+
+ // check array limit
+ if (ref_stack.back() and JSON_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size()))
+ {
+ JSON_THROW(out_of_range::create(408, "excessive array size: " + std::to_string(len)));
+ }
+
+ return true;
+ }
+
+ bool end_array()
+ {
+ bool keep = true;
+
+ if (ref_stack.back())
+ {
+ keep = callback(static_cast<int>(ref_stack.size()) - 1, parse_event_t::array_end, *ref_stack.back());
+ if (not keep)
+ {
+ // discard array
+ *ref_stack.back() = discarded;
+ }
+ }
+
+ assert(not ref_stack.empty());
+ assert(not keep_stack.empty());
+ ref_stack.pop_back();
+ keep_stack.pop_back();
+
+ // remove discarded value
+ if (not keep and not ref_stack.empty() and ref_stack.back()->is_array())
+ {
+ ref_stack.back()->m_value.array->pop_back();
+ }
+
+ return true;
+ }
+
+ bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/,
+ const detail::exception& ex)
+ {
+ errored = true;
+ if (allow_exceptions)
+ {
+ // determine the proper exception type from the id
+ switch ((ex.id / 100) % 100)
+ {
+ case 1:
+ JSON_THROW(*static_cast<const detail::parse_error*>(&ex));
+ case 4:
+ JSON_THROW(*static_cast<const detail::out_of_range*>(&ex));
+ // LCOV_EXCL_START
+ case 2:
+ JSON_THROW(*static_cast<const detail::invalid_iterator*>(&ex));
+ case 3:
+ JSON_THROW(*static_cast<const detail::type_error*>(&ex));
+ case 5:
+ JSON_THROW(*static_cast<const detail::other_error*>(&ex));
+ default:
+ assert(false);
+ // LCOV_EXCL_STOP
+ }
+ }
+ return false;
+ }
+
+ constexpr bool is_errored() const
+ {
+ return errored;
+ }
+
+ private:
+ /*!
+ @param[in] v value to add to the JSON value we build during parsing
+ @param[in] skip_callback whether we should skip calling the callback
+ function; this is required after start_array() and
+ start_object() SAX events, because otherwise we would call the
+ callback function with an empty array or object, respectively.
+
+ @invariant If the ref stack is empty, then the passed value will be the new
+ root.
+ @invariant If the ref stack contains a value, then it is an array or an
+ object to which we can add elements
+
+ @return pair of boolean (whether value should be kept) and pointer (to the
+ passed value in the ref_stack hierarchy; nullptr if not kept)
+ */
+ template<typename Value>
+ std::pair<bool, BasicJsonType*> handle_value(Value&& v, const bool skip_callback = false)
+ {
+ assert(not keep_stack.empty());
+
+ // do not handle this value if we know it would be added to a discarded
+ // container
+ if (not keep_stack.back())
+ {
+ return {false, nullptr};
+ }
+
+ // create value
+ auto value = BasicJsonType(std::forward<Value>(v));
+
+ // check callback
+ const bool keep = skip_callback or callback(static_cast<int>(ref_stack.size()), parse_event_t::value, value);
+
+ // do not handle this value if we just learnt it shall be discarded
+ if (not keep)
+ {
+ return {false, nullptr};
+ }
+
+ if (ref_stack.empty())
+ {
+ root = std::move(value);
+ return {true, &root};
+ }
+
+ // skip this value if we already decided to skip the parent
+ // (https://github.com/nlohmann/json/issues/971#issuecomment-413678360)
+ if (not ref_stack.back())
+ {
+ return {false, nullptr};
+ }
+
+ // we now only expect arrays and objects
+ assert(ref_stack.back()->is_array() or ref_stack.back()->is_object());
+
+ // array
+ if (ref_stack.back()->is_array())
+ {
+ ref_stack.back()->m_value.array->push_back(std::move(value));
+ return {true, &(ref_stack.back()->m_value.array->back())};
+ }
+
+ // object
+ assert(ref_stack.back()->is_object());
+ // check if we should store an element for the current key
+ assert(not key_keep_stack.empty());
+ const bool store_element = key_keep_stack.back();
+ key_keep_stack.pop_back();
+
+ if (not store_element)
+ {
+ return {false, nullptr};
+ }
+
+ assert(object_element);
+ *object_element = std::move(value);
+ return {true, object_element};
+ }
+
+ /// the parsed JSON value
+ BasicJsonType& root;
+ /// stack to model hierarchy of values
+ std::vector<BasicJsonType*> ref_stack {};
+ /// stack to manage which values to keep
+ std::vector<bool> keep_stack {};
+ /// stack to manage which object keys to keep
+ std::vector<bool> key_keep_stack {};
+ /// helper to hold the reference for the next object element
+ BasicJsonType* object_element = nullptr;
+ /// whether a syntax error occurred
+ bool errored = false;
+ /// callback function
+ const parser_callback_t callback = nullptr;
+ /// whether to throw exceptions in case of errors
+ const bool allow_exceptions = true;
+ /// a discarded value for the callback
+ BasicJsonType discarded = BasicJsonType::value_t::discarded;
+};
+
+template<typename BasicJsonType>
+class json_sax_acceptor
+{
+ public:
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+
+ bool null()
+ {
+ return true;
+ }
+
+ bool boolean(bool /*unused*/)
+ {
+ return true;
+ }
+
+ bool number_integer(number_integer_t /*unused*/)
+ {
+ return true;
+ }
+
+ bool number_unsigned(number_unsigned_t /*unused*/)
+ {
+ return true;
+ }
+
+ bool number_float(number_float_t /*unused*/, const string_t& /*unused*/)
+ {
+ return true;
+ }
+
+ bool string(string_t& /*unused*/)
+ {
+ return true;
+ }
+
+ bool start_object(std::size_t /*unused*/ = std::size_t(-1))
+ {
+ return true;
+ }
+
+ bool key(string_t& /*unused*/)
+ {
+ return true;
+ }
+
+ bool end_object()
+ {
+ return true;
+ }
+
+ bool start_array(std::size_t /*unused*/ = std::size_t(-1))
+ {
+ return true;
+ }
+
+ bool end_array()
+ {
+ return true;
+ }
+
+ bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, const detail::exception& /*unused*/)
+ {
+ return false;
+ }
+};
+} // namespace detail
+
+} // namespace nlohmann
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+// #include <nlohmann/detail/meta/is_sax.hpp>
+
+
+#include <cstdint> // size_t
+#include <utility> // declval
+#include <string> // string
+
+// #include <nlohmann/detail/meta/detected.hpp>
+
+// #include <nlohmann/detail/meta/type_traits.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+template <typename T>
+using null_function_t = decltype(std::declval<T&>().null());
+
+template <typename T>
+using boolean_function_t =
+ decltype(std::declval<T&>().boolean(std::declval<bool>()));
+
+template <typename T, typename Integer>
+using number_integer_function_t =
+ decltype(std::declval<T&>().number_integer(std::declval<Integer>()));
+
+template <typename T, typename Unsigned>
+using number_unsigned_function_t =
+ decltype(std::declval<T&>().number_unsigned(std::declval<Unsigned>()));
+
+template <typename T, typename Float, typename String>
+using number_float_function_t = decltype(std::declval<T&>().number_float(
+ std::declval<Float>(), std::declval<const String&>()));
+
+template <typename T, typename String>
+using string_function_t =
+ decltype(std::declval<T&>().string(std::declval<String&>()));
+
+template <typename T>
+using start_object_function_t =
+ decltype(std::declval<T&>().start_object(std::declval<std::size_t>()));
+
+template <typename T, typename String>
+using key_function_t =
+ decltype(std::declval<T&>().key(std::declval<String&>()));
+
+template <typename T>
+using end_object_function_t = decltype(std::declval<T&>().end_object());
+
+template <typename T>
+using start_array_function_t =
+ decltype(std::declval<T&>().start_array(std::declval<std::size_t>()));
+
+template <typename T>
+using end_array_function_t = decltype(std::declval<T&>().end_array());
+
+template <typename T, typename Exception>
+using parse_error_function_t = decltype(std::declval<T&>().parse_error(
+ std::declval<std::size_t>(), std::declval<const std::string&>(),
+ std::declval<const Exception&>()));
+
+template <typename SAX, typename BasicJsonType>
+struct is_sax
+{
+ private:
+ static_assert(is_basic_json<BasicJsonType>::value,
+ "BasicJsonType must be of type basic_json<...>");
+
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+ using exception_t = typename BasicJsonType::exception;
+
+ public:
+ static constexpr bool value =
+ is_detected_exact<bool, null_function_t, SAX>::value &&
+ is_detected_exact<bool, boolean_function_t, SAX>::value &&
+ is_detected_exact<bool, number_integer_function_t, SAX,
+ number_integer_t>::value &&
+ is_detected_exact<bool, number_unsigned_function_t, SAX,
+ number_unsigned_t>::value &&
+ is_detected_exact<bool, number_float_function_t, SAX, number_float_t,
+ string_t>::value &&
+ is_detected_exact<bool, string_function_t, SAX, string_t>::value &&
+ is_detected_exact<bool, start_object_function_t, SAX>::value &&
+ is_detected_exact<bool, key_function_t, SAX, string_t>::value &&
+ is_detected_exact<bool, end_object_function_t, SAX>::value &&
+ is_detected_exact<bool, start_array_function_t, SAX>::value &&
+ is_detected_exact<bool, end_array_function_t, SAX>::value &&
+ is_detected_exact<bool, parse_error_function_t, SAX, exception_t>::value;
+};
+
+template <typename SAX, typename BasicJsonType>
+struct is_sax_static_asserts
+{
+ private:
+ static_assert(is_basic_json<BasicJsonType>::value,
+ "BasicJsonType must be of type basic_json<...>");
+
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+ using exception_t = typename BasicJsonType::exception;
+
+ public:
+ static_assert(is_detected_exact<bool, null_function_t, SAX>::value,
+ "Missing/invalid function: bool null()");
+ static_assert(is_detected_exact<bool, boolean_function_t, SAX>::value,
+ "Missing/invalid function: bool boolean(bool)");
+ static_assert(is_detected_exact<bool, boolean_function_t, SAX>::value,
+ "Missing/invalid function: bool boolean(bool)");
+ static_assert(
+ is_detected_exact<bool, number_integer_function_t, SAX,
+ number_integer_t>::value,
+ "Missing/invalid function: bool number_integer(number_integer_t)");
+ static_assert(
+ is_detected_exact<bool, number_unsigned_function_t, SAX,
+ number_unsigned_t>::value,
+ "Missing/invalid function: bool number_unsigned(number_unsigned_t)");
+ static_assert(is_detected_exact<bool, number_float_function_t, SAX,
+ number_float_t, string_t>::value,
+ "Missing/invalid function: bool number_float(number_float_t, const string_t&)");
+ static_assert(
+ is_detected_exact<bool, string_function_t, SAX, string_t>::value,
+ "Missing/invalid function: bool string(string_t&)");
+ static_assert(is_detected_exact<bool, start_object_function_t, SAX>::value,
+ "Missing/invalid function: bool start_object(std::size_t)");
+ static_assert(is_detected_exact<bool, key_function_t, SAX, string_t>::value,
+ "Missing/invalid function: bool key(string_t&)");
+ static_assert(is_detected_exact<bool, end_object_function_t, SAX>::value,
+ "Missing/invalid function: bool end_object()");
+ static_assert(is_detected_exact<bool, start_array_function_t, SAX>::value,
+ "Missing/invalid function: bool start_array(std::size_t)");
+ static_assert(is_detected_exact<bool, end_array_function_t, SAX>::value,
+ "Missing/invalid function: bool end_array()");
+ static_assert(
+ is_detected_exact<bool, parse_error_function_t, SAX, exception_t>::value,
+ "Missing/invalid function: bool parse_error(std::size_t, const "
+ "std::string&, const exception&)");
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+///////////////////
+// binary reader //
+///////////////////
+
+/*!
+@brief deserialization of CBOR, MessagePack, and UBJSON values
+*/
+template<typename BasicJsonType, typename SAX = json_sax_dom_parser<BasicJsonType>>
+class binary_reader
+{
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+ using json_sax_t = SAX;
+
+ public:
+ /*!
+ @brief create a binary reader
+
+ @param[in] adapter input adapter to read from
+ */
+ explicit binary_reader(input_adapter_t adapter) : ia(std::move(adapter))
+ {
+ (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
+ assert(ia);
+ }
+
+ // make class move-only
+ binary_reader(const binary_reader&) = delete;
+ binary_reader(binary_reader&&) = default;
+ binary_reader& operator=(const binary_reader&) = delete;
+ binary_reader& operator=(binary_reader&&) = default;
+ ~binary_reader() = default;
+
+ /*!
+ @param[in] format the binary format to parse
+ @param[in] sax_ a SAX event processor
+ @param[in] strict whether to expect the input to be consumed completed
+
+ @return
+ */
+ bool sax_parse(const input_format_t format,
+ json_sax_t* sax_,
+ const bool strict = true)
+ {
+ sax = sax_;
+ bool result = false;
+
+ switch (format)
+ {
+ case input_format_t::bson:
+ result = parse_bson_internal();
+ break;
+
+ case input_format_t::cbor:
+ result = parse_cbor_internal();
+ break;
+
+ case input_format_t::msgpack:
+ result = parse_msgpack_internal();
+ break;
+
+ case input_format_t::ubjson:
+ result = parse_ubjson_internal();
+ break;
+
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+
+ // strict mode: next byte must be EOF
+ if (result and strict)
+ {
+ if (format == input_format_t::ubjson)
+ {
+ get_ignore_noop();
+ }
+ else
+ {
+ get();
+ }
+
+ if (JSON_UNLIKELY(current != std::char_traits<char>::eof()))
+ {
+ return sax->parse_error(chars_read, get_token_string(),
+ parse_error::create(110, chars_read, exception_message(format, "expected end of input; last byte: 0x" + get_token_string(), "value")));
+ }
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief determine system byte order
+
+ @return true if and only if system's byte order is little endian
+
+ @note from http://stackoverflow.com/a/1001328/266378
+ */
+ static constexpr bool little_endianess(int num = 1) noexcept
+ {
+ return *reinterpret_cast<char*>(&num) == 1;
+ }
+
+ private:
+ //////////
+ // BSON //
+ //////////
+
+ /*!
+ @brief Reads in a BSON-object and passes it to the SAX-parser.
+ @return whether a valid BSON-value was passed to the SAX parser
+ */
+ bool parse_bson_internal()
+ {
+ std::int32_t document_size;
+ get_number<std::int32_t, true>(input_format_t::bson, document_size);
+
+ if (JSON_UNLIKELY(not sax->start_object(std::size_t(-1))))
+ {
+ return false;
+ }
+
+ if (JSON_UNLIKELY(not parse_bson_element_list(/*is_array*/false)))
+ {
+ return false;
+ }
+
+ return sax->end_object();
+ }
+
+ /*!
+ @brief Parses a C-style string from the BSON input.
+ @param[in, out] result A reference to the string variable where the read
+ string is to be stored.
+ @return `true` if the \x00-byte indicating the end of the string was
+ encountered before the EOF; false` indicates an unexpected EOF.
+ */
+ bool get_bson_cstr(string_t& result)
+ {
+ auto out = std::back_inserter(result);
+ while (true)
+ {
+ get();
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::bson, "cstring")))
+ {
+ return false;
+ }
+ if (current == 0x00)
+ {
+ return true;
+ }
+ *out++ = static_cast<char>(current);
+ }
+
+ return true;
+ }
+
+ /*!
+ @brief Parses a zero-terminated string of length @a len from the BSON
+ input.
+ @param[in] len The length (including the zero-byte at the end) of the
+ string to be read.
+ @param[in, out] result A reference to the string variable where the read
+ string is to be stored.
+ @tparam NumberType The type of the length @a len
+ @pre len >= 1
+ @return `true` if the string was successfully parsed
+ */
+ template<typename NumberType>
+ bool get_bson_string(const NumberType len, string_t& result)
+ {
+ if (JSON_UNLIKELY(len < 1))
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::bson, "string length must be at least 1, is " + std::to_string(len), "string")));
+ }
+
+ return get_string(input_format_t::bson, len - static_cast<NumberType>(1), result) and get() != std::char_traits<char>::eof();
+ }
+
+ /*!
+ @brief Read a BSON document element of the given @a element_type.
+ @param[in] element_type The BSON element type, c.f. http://bsonspec.org/spec.html
+ @param[in] element_type_parse_position The position in the input stream,
+ where the `element_type` was read.
+ @warning Not all BSON element types are supported yet. An unsupported
+ @a element_type will give rise to a parse_error.114:
+ Unsupported BSON record type 0x...
+ @return whether a valid BSON-object/array was passed to the SAX parser
+ */
+ bool parse_bson_element_internal(const int element_type,
+ const std::size_t element_type_parse_position)
+ {
+ switch (element_type)
+ {
+ case 0x01: // double
+ {
+ double number;
+ return get_number<double, true>(input_format_t::bson, number) and sax->number_float(static_cast<number_float_t>(number), "");
+ }
+
+ case 0x02: // string
+ {
+ std::int32_t len;
+ string_t value;
+ return get_number<std::int32_t, true>(input_format_t::bson, len) and get_bson_string(len, value) and sax->string(value);
+ }
+
+ case 0x03: // object
+ {
+ return parse_bson_internal();
+ }
+
+ case 0x04: // array
+ {
+ return parse_bson_array();
+ }
+
+ case 0x08: // boolean
+ {
+ return sax->boolean(get() != 0);
+ }
+
+ case 0x0A: // null
+ {
+ return sax->null();
+ }
+
+ case 0x10: // int32
+ {
+ std::int32_t value;
+ return get_number<std::int32_t, true>(input_format_t::bson, value) and sax->number_integer(value);
+ }
+
+ case 0x12: // int64
+ {
+ std::int64_t value;
+ return get_number<std::int64_t, true>(input_format_t::bson, value) and sax->number_integer(value);
+ }
+
+ default: // anything else not supported (yet)
+ {
+ std::array<char, 3> cr{{}};
+ (std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast<unsigned char>(element_type));
+ return sax->parse_error(element_type_parse_position, std::string(cr.data()), parse_error::create(114, element_type_parse_position, "Unsupported BSON record type 0x" + std::string(cr.data())));
+ }
+ }
+ }
+
+ /*!
+ @brief Read a BSON element list (as specified in the BSON-spec)
+
+ The same binary layout is used for objects and arrays, hence it must be
+ indicated with the argument @a is_array which one is expected
+ (true --> array, false --> object).
+
+ @param[in] is_array Determines if the element list being read is to be
+ treated as an object (@a is_array == false), or as an
+ array (@a is_array == true).
+ @return whether a valid BSON-object/array was passed to the SAX parser
+ */
+ bool parse_bson_element_list(const bool is_array)
+ {
+ string_t key;
+ while (int element_type = get())
+ {
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::bson, "element list")))
+ {
+ return false;
+ }
+
+ const std::size_t element_type_parse_position = chars_read;
+ if (JSON_UNLIKELY(not get_bson_cstr(key)))
+ {
+ return false;
+ }
+
+ if (not is_array and not sax->key(key))
+ {
+ return false;
+ }
+
+ if (JSON_UNLIKELY(not parse_bson_element_internal(element_type, element_type_parse_position)))
+ {
+ return false;
+ }
+
+ // get_bson_cstr only appends
+ key.clear();
+ }
+
+ return true;
+ }
+
+ /*!
+ @brief Reads an array from the BSON input and passes it to the SAX-parser.
+ @return whether a valid BSON-array was passed to the SAX parser
+ */
+ bool parse_bson_array()
+ {
+ std::int32_t document_size;
+ get_number<std::int32_t, true>(input_format_t::bson, document_size);
+
+ if (JSON_UNLIKELY(not sax->start_array(std::size_t(-1))))
+ {
+ return false;
+ }
+
+ if (JSON_UNLIKELY(not parse_bson_element_list(/*is_array*/true)))
+ {
+ return false;
+ }
+
+ return sax->end_array();
+ }
+
+ //////////
+ // CBOR //
+ //////////
+
+ /*!
+ @param[in] get_char whether a new character should be retrieved from the
+ input (true, default) or whether the last read
+ character should be considered instead
+
+ @return whether a valid CBOR value was passed to the SAX parser
+ */
+ bool parse_cbor_internal(const bool get_char = true)
+ {
+ switch (get_char ? get() : current)
+ {
+ // EOF
+ case std::char_traits<char>::eof():
+ return unexpect_eof(input_format_t::cbor, "value");
+
+ // Integer 0x00..0x17 (0..23)
+ case 0x00:
+ case 0x01:
+ case 0x02:
+ case 0x03:
+ case 0x04:
+ case 0x05:
+ case 0x06:
+ case 0x07:
+ case 0x08:
+ case 0x09:
+ case 0x0A:
+ case 0x0B:
+ case 0x0C:
+ case 0x0D:
+ case 0x0E:
+ case 0x0F:
+ case 0x10:
+ case 0x11:
+ case 0x12:
+ case 0x13:
+ case 0x14:
+ case 0x15:
+ case 0x16:
+ case 0x17:
+ return sax->number_unsigned(static_cast<number_unsigned_t>(current));
+
+ case 0x18: // Unsigned integer (one-byte uint8_t follows)
+ {
+ std::uint8_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_unsigned(number);
+ }
+
+ case 0x19: // Unsigned integer (two-byte uint16_t follows)
+ {
+ std::uint16_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_unsigned(number);
+ }
+
+ case 0x1A: // Unsigned integer (four-byte uint32_t follows)
+ {
+ std::uint32_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_unsigned(number);
+ }
+
+ case 0x1B: // Unsigned integer (eight-byte uint64_t follows)
+ {
+ std::uint64_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_unsigned(number);
+ }
+
+ // Negative integer -1-0x00..-1-0x17 (-1..-24)
+ case 0x20:
+ case 0x21:
+ case 0x22:
+ case 0x23:
+ case 0x24:
+ case 0x25:
+ case 0x26:
+ case 0x27:
+ case 0x28:
+ case 0x29:
+ case 0x2A:
+ case 0x2B:
+ case 0x2C:
+ case 0x2D:
+ case 0x2E:
+ case 0x2F:
+ case 0x30:
+ case 0x31:
+ case 0x32:
+ case 0x33:
+ case 0x34:
+ case 0x35:
+ case 0x36:
+ case 0x37:
+ return sax->number_integer(static_cast<std::int8_t>(0x20 - 1 - current));
+
+ case 0x38: // Negative integer (one-byte uint8_t follows)
+ {
+ std::uint8_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1) - number);
+ }
+
+ case 0x39: // Negative integer -1-n (two-byte uint16_t follows)
+ {
+ std::uint16_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1) - number);
+ }
+
+ case 0x3A: // Negative integer -1-n (four-byte uint32_t follows)
+ {
+ std::uint32_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1) - number);
+ }
+
+ case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows)
+ {
+ std::uint64_t number;
+ return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1)
+ - static_cast<number_integer_t>(number));
+ }
+
+ // UTF-8 string (0x00..0x17 bytes follow)
+ case 0x60:
+ case 0x61:
+ case 0x62:
+ case 0x63:
+ case 0x64:
+ case 0x65:
+ case 0x66:
+ case 0x67:
+ case 0x68:
+ case 0x69:
+ case 0x6A:
+ case 0x6B:
+ case 0x6C:
+ case 0x6D:
+ case 0x6E:
+ case 0x6F:
+ case 0x70:
+ case 0x71:
+ case 0x72:
+ case 0x73:
+ case 0x74:
+ case 0x75:
+ case 0x76:
+ case 0x77:
+ case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
+ case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
+ case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
+ case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
+ case 0x7F: // UTF-8 string (indefinite length)
+ {
+ string_t s;
+ return get_cbor_string(s) and sax->string(s);
+ }
+
+ // array (0x00..0x17 data items follow)
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ return get_cbor_array(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
+
+ case 0x98: // array (one-byte uint8_t for n follows)
+ {
+ std::uint8_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len));
+ }
+
+ case 0x99: // array (two-byte uint16_t for n follow)
+ {
+ std::uint16_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len));
+ }
+
+ case 0x9A: // array (four-byte uint32_t for n follow)
+ {
+ std::uint32_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len));
+ }
+
+ case 0x9B: // array (eight-byte uint64_t for n follow)
+ {
+ std::uint64_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len));
+ }
+
+ case 0x9F: // array (indefinite length)
+ return get_cbor_array(std::size_t(-1));
+
+ // map (0x00..0x17 pairs of data items follow)
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ return get_cbor_object(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
+
+ case 0xB8: // map (one-byte uint8_t for n follows)
+ {
+ std::uint8_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len));
+ }
+
+ case 0xB9: // map (two-byte uint16_t for n follow)
+ {
+ std::uint16_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len));
+ }
+
+ case 0xBA: // map (four-byte uint32_t for n follow)
+ {
+ std::uint32_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len));
+ }
+
+ case 0xBB: // map (eight-byte uint64_t for n follow)
+ {
+ std::uint64_t len;
+ return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len));
+ }
+
+ case 0xBF: // map (indefinite length)
+ return get_cbor_object(std::size_t(-1));
+
+ case 0xF4: // false
+ return sax->boolean(false);
+
+ case 0xF5: // true
+ return sax->boolean(true);
+
+ case 0xF6: // null
+ return sax->null();
+
+ case 0xF9: // Half-Precision Float (two-byte IEEE 754)
+ {
+ const int byte1_raw = get();
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::cbor, "number")))
+ {
+ return false;
+ }
+ const int byte2_raw = get();
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::cbor, "number")))
+ {
+ return false;
+ }
+
+ const auto byte1 = static_cast<unsigned char>(byte1_raw);
+ const auto byte2 = static_cast<unsigned char>(byte2_raw);
+
+ // code from RFC 7049, Appendix D, Figure 3:
+ // As half-precision floating-point numbers were only added
+ // to IEEE 754 in 2008, today's programming platforms often
+ // still only have limited support for them. It is very
+ // easy to include at least decoding support for them even
+ // without such support. An example of a small decoder for
+ // half-precision floating-point numbers in the C language
+ // is shown in Fig. 3.
+ const auto half = static_cast<unsigned int>((byte1 << 8u) + byte2);
+ const double val = [&half]
+ {
+ const int exp = (half >> 10u) & 0x1Fu;
+ const unsigned int mant = half & 0x3FFu;
+ assert(0 <= exp and exp <= 32);
+ assert(0 <= mant and mant <= 1024);
+ switch (exp)
+ {
+ case 0:
+ return std::ldexp(mant, -24);
+ case 31:
+ return (mant == 0)
+ ? std::numeric_limits<double>::infinity()
+ : std::numeric_limits<double>::quiet_NaN();
+ default:
+ return std::ldexp(mant + 1024, exp - 25);
+ }
+ }();
+ return sax->number_float((half & 0x8000u) != 0
+ ? static_cast<number_float_t>(-val)
+ : static_cast<number_float_t>(val), "");
+ }
+
+ case 0xFA: // Single-Precision Float (four-byte IEEE 754)
+ {
+ float number;
+ return get_number(input_format_t::cbor, number) and sax->number_float(static_cast<number_float_t>(number), "");
+ }
+
+ case 0xFB: // Double-Precision Float (eight-byte IEEE 754)
+ {
+ double number;
+ return get_number(input_format_t::cbor, number) and sax->number_float(static_cast<number_float_t>(number), "");
+ }
+
+ default: // anything else (0xFF is handled inside the other types)
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::cbor, "invalid byte: 0x" + last_token, "value")));
+ }
+ }
+ }
+
+ /*!
+ @brief reads a CBOR string
+
+ This function first reads starting bytes to determine the expected
+ string length and then copies this number of bytes into a string.
+ Additionally, CBOR's strings with indefinite lengths are supported.
+
+ @param[out] result created string
+
+ @return whether string creation completed
+ */
+ bool get_cbor_string(string_t& result)
+ {
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::cbor, "string")))
+ {
+ return false;
+ }
+
+ switch (current)
+ {
+ // UTF-8 string (0x00..0x17 bytes follow)
+ case 0x60:
+ case 0x61:
+ case 0x62:
+ case 0x63:
+ case 0x64:
+ case 0x65:
+ case 0x66:
+ case 0x67:
+ case 0x68:
+ case 0x69:
+ case 0x6A:
+ case 0x6B:
+ case 0x6C:
+ case 0x6D:
+ case 0x6E:
+ case 0x6F:
+ case 0x70:
+ case 0x71:
+ case 0x72:
+ case 0x73:
+ case 0x74:
+ case 0x75:
+ case 0x76:
+ case 0x77:
+ {
+ return get_string(input_format_t::cbor, static_cast<unsigned int>(current) & 0x1Fu, result);
+ }
+
+ case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
+ {
+ std::uint8_t len;
+ return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result);
+ }
+
+ case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
+ {
+ std::uint16_t len;
+ return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result);
+ }
+
+ case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
+ {
+ std::uint32_t len;
+ return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result);
+ }
+
+ case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
+ {
+ std::uint64_t len;
+ return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result);
+ }
+
+ case 0x7F: // UTF-8 string (indefinite length)
+ {
+ while (get() != 0xFF)
+ {
+ string_t chunk;
+ if (not get_cbor_string(chunk))
+ {
+ return false;
+ }
+ result.append(chunk);
+ }
+ return true;
+ }
+
+ default:
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::cbor, "expected length specification (0x60-0x7B) or indefinite string type (0x7F); last byte: 0x" + last_token, "string")));
+ }
+ }
+ }
+
+ /*!
+ @param[in] len the length of the array or std::size_t(-1) for an
+ array of indefinite size
+ @return whether array creation completed
+ */
+ bool get_cbor_array(const std::size_t len)
+ {
+ if (JSON_UNLIKELY(not sax->start_array(len)))
+ {
+ return false;
+ }
+
+ if (len != std::size_t(-1))
+ {
+ for (std::size_t i = 0; i < len; ++i)
+ {
+ if (JSON_UNLIKELY(not parse_cbor_internal()))
+ {
+ return false;
+ }
+ }
+ }
+ else
+ {
+ while (get() != 0xFF)
+ {
+ if (JSON_UNLIKELY(not parse_cbor_internal(false)))
+ {
+ return false;
+ }
+ }
+ }
+
+ return sax->end_array();
+ }
+
+ /*!
+ @param[in] len the length of the object or std::size_t(-1) for an
+ object of indefinite size
+ @return whether object creation completed
+ */
+ bool get_cbor_object(const std::size_t len)
+ {
+ if (JSON_UNLIKELY(not sax->start_object(len)))
+ {
+ return false;
+ }
+
+ string_t key;
+ if (len != std::size_t(-1))
+ {
+ for (std::size_t i = 0; i < len; ++i)
+ {
+ get();
+ if (JSON_UNLIKELY(not get_cbor_string(key) or not sax->key(key)))
+ {
+ return false;
+ }
+
+ if (JSON_UNLIKELY(not parse_cbor_internal()))
+ {
+ return false;
+ }
+ key.clear();
+ }
+ }
+ else
+ {
+ while (get() != 0xFF)
+ {
+ if (JSON_UNLIKELY(not get_cbor_string(key) or not sax->key(key)))
+ {
+ return false;
+ }
+
+ if (JSON_UNLIKELY(not parse_cbor_internal()))
+ {
+ return false;
+ }
+ key.clear();
+ }
+ }
+
+ return sax->end_object();
+ }
+
+ /////////////
+ // MsgPack //
+ /////////////
+
+ /*!
+ @return whether a valid MessagePack value was passed to the SAX parser
+ */
+ bool parse_msgpack_internal()
+ {
+ switch (get())
+ {
+ // EOF
+ case std::char_traits<char>::eof():
+ return unexpect_eof(input_format_t::msgpack, "value");
+
+ // positive fixint
+ case 0x00:
+ case 0x01:
+ case 0x02:
+ case 0x03:
+ case 0x04:
+ case 0x05:
+ case 0x06:
+ case 0x07:
+ case 0x08:
+ case 0x09:
+ case 0x0A:
+ case 0x0B:
+ case 0x0C:
+ case 0x0D:
+ case 0x0E:
+ case 0x0F:
+ case 0x10:
+ case 0x11:
+ case 0x12:
+ case 0x13:
+ case 0x14:
+ case 0x15:
+ case 0x16:
+ case 0x17:
+ case 0x18:
+ case 0x19:
+ case 0x1A:
+ case 0x1B:
+ case 0x1C:
+ case 0x1D:
+ case 0x1E:
+ case 0x1F:
+ case 0x20:
+ case 0x21:
+ case 0x22:
+ case 0x23:
+ case 0x24:
+ case 0x25:
+ case 0x26:
+ case 0x27:
+ case 0x28:
+ case 0x29:
+ case 0x2A:
+ case 0x2B:
+ case 0x2C:
+ case 0x2D:
+ case 0x2E:
+ case 0x2F:
+ case 0x30:
+ case 0x31:
+ case 0x32:
+ case 0x33:
+ case 0x34:
+ case 0x35:
+ case 0x36:
+ case 0x37:
+ case 0x38:
+ case 0x39:
+ case 0x3A:
+ case 0x3B:
+ case 0x3C:
+ case 0x3D:
+ case 0x3E:
+ case 0x3F:
+ case 0x40:
+ case 0x41:
+ case 0x42:
+ case 0x43:
+ case 0x44:
+ case 0x45:
+ case 0x46:
+ case 0x47:
+ case 0x48:
+ case 0x49:
+ case 0x4A:
+ case 0x4B:
+ case 0x4C:
+ case 0x4D:
+ case 0x4E:
+ case 0x4F:
+ case 0x50:
+ case 0x51:
+ case 0x52:
+ case 0x53:
+ case 0x54:
+ case 0x55:
+ case 0x56:
+ case 0x57:
+ case 0x58:
+ case 0x59:
+ case 0x5A:
+ case 0x5B:
+ case 0x5C:
+ case 0x5D:
+ case 0x5E:
+ case 0x5F:
+ case 0x60:
+ case 0x61:
+ case 0x62:
+ case 0x63:
+ case 0x64:
+ case 0x65:
+ case 0x66:
+ case 0x67:
+ case 0x68:
+ case 0x69:
+ case 0x6A:
+ case 0x6B:
+ case 0x6C:
+ case 0x6D:
+ case 0x6E:
+ case 0x6F:
+ case 0x70:
+ case 0x71:
+ case 0x72:
+ case 0x73:
+ case 0x74:
+ case 0x75:
+ case 0x76:
+ case 0x77:
+ case 0x78:
+ case 0x79:
+ case 0x7A:
+ case 0x7B:
+ case 0x7C:
+ case 0x7D:
+ case 0x7E:
+ case 0x7F:
+ return sax->number_unsigned(static_cast<number_unsigned_t>(current));
+
+ // fixmap
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ return get_msgpack_object(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
+
+ // fixarray
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ return get_msgpack_array(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
+
+ // fixstr
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF:
+ {
+ string_t s;
+ return get_msgpack_string(s) and sax->string(s);
+ }
+
+ case 0xC0: // nil
+ return sax->null();
+
+ case 0xC2: // false
+ return sax->boolean(false);
+
+ case 0xC3: // true
+ return sax->boolean(true);
+
+ case 0xCA: // float 32
+ {
+ float number;
+ return get_number(input_format_t::msgpack, number) and sax->number_float(static_cast<number_float_t>(number), "");
+ }
+
+ case 0xCB: // float 64
+ {
+ double number;
+ return get_number(input_format_t::msgpack, number) and sax->number_float(static_cast<number_float_t>(number), "");
+ }
+
+ case 0xCC: // uint 8
+ {
+ std::uint8_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number);
+ }
+
+ case 0xCD: // uint 16
+ {
+ std::uint16_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number);
+ }
+
+ case 0xCE: // uint 32
+ {
+ std::uint32_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number);
+ }
+
+ case 0xCF: // uint 64
+ {
+ std::uint64_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number);
+ }
+
+ case 0xD0: // int 8
+ {
+ std::int8_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_integer(number);
+ }
+
+ case 0xD1: // int 16
+ {
+ std::int16_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_integer(number);
+ }
+
+ case 0xD2: // int 32
+ {
+ std::int32_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_integer(number);
+ }
+
+ case 0xD3: // int 64
+ {
+ std::int64_t number;
+ return get_number(input_format_t::msgpack, number) and sax->number_integer(number);
+ }
+
+ case 0xD9: // str 8
+ case 0xDA: // str 16
+ case 0xDB: // str 32
+ {
+ string_t s;
+ return get_msgpack_string(s) and sax->string(s);
+ }
+
+ case 0xDC: // array 16
+ {
+ std::uint16_t len;
+ return get_number(input_format_t::msgpack, len) and get_msgpack_array(static_cast<std::size_t>(len));
+ }
+
+ case 0xDD: // array 32
+ {
+ std::uint32_t len;
+ return get_number(input_format_t::msgpack, len) and get_msgpack_array(static_cast<std::size_t>(len));
+ }
+
+ case 0xDE: // map 16
+ {
+ std::uint16_t len;
+ return get_number(input_format_t::msgpack, len) and get_msgpack_object(static_cast<std::size_t>(len));
+ }
+
+ case 0xDF: // map 32
+ {
+ std::uint32_t len;
+ return get_number(input_format_t::msgpack, len) and get_msgpack_object(static_cast<std::size_t>(len));
+ }
+
+ // negative fixint
+ case 0xE0:
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF:
+ case 0xF0:
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ case 0xF4:
+ case 0xF5:
+ case 0xF6:
+ case 0xF7:
+ case 0xF8:
+ case 0xF9:
+ case 0xFA:
+ case 0xFB:
+ case 0xFC:
+ case 0xFD:
+ case 0xFE:
+ case 0xFF:
+ return sax->number_integer(static_cast<std::int8_t>(current));
+
+ default: // anything else
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::msgpack, "invalid byte: 0x" + last_token, "value")));
+ }
+ }
+ }
+
+ /*!
+ @brief reads a MessagePack string
+
+ This function first reads starting bytes to determine the expected
+ string length and then copies this number of bytes into a string.
+
+ @param[out] result created string
+
+ @return whether string creation completed
+ */
+ bool get_msgpack_string(string_t& result)
+ {
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::msgpack, "string")))
+ {
+ return false;
+ }
+
+ switch (current)
+ {
+ // fixstr
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF:
+ {
+ return get_string(input_format_t::msgpack, static_cast<unsigned int>(current) & 0x1Fu, result);
+ }
+
+ case 0xD9: // str 8
+ {
+ std::uint8_t len;
+ return get_number(input_format_t::msgpack, len) and get_string(input_format_t::msgpack, len, result);
+ }
+
+ case 0xDA: // str 16
+ {
+ std::uint16_t len;
+ return get_number(input_format_t::msgpack, len) and get_string(input_format_t::msgpack, len, result);
+ }
+
+ case 0xDB: // str 32
+ {
+ std::uint32_t len;
+ return get_number(input_format_t::msgpack, len) and get_string(input_format_t::msgpack, len, result);
+ }
+
+ default:
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::msgpack, "expected length specification (0xA0-0xBF, 0xD9-0xDB); last byte: 0x" + last_token, "string")));
+ }
+ }
+ }
+
+ /*!
+ @param[in] len the length of the array
+ @return whether array creation completed
+ */
+ bool get_msgpack_array(const std::size_t len)
+ {
+ if (JSON_UNLIKELY(not sax->start_array(len)))
+ {
+ return false;
+ }
+
+ for (std::size_t i = 0; i < len; ++i)
+ {
+ if (JSON_UNLIKELY(not parse_msgpack_internal()))
+ {
+ return false;
+ }
+ }
+
+ return sax->end_array();
+ }
+
+ /*!
+ @param[in] len the length of the object
+ @return whether object creation completed
+ */
+ bool get_msgpack_object(const std::size_t len)
+ {
+ if (JSON_UNLIKELY(not sax->start_object(len)))
+ {
+ return false;
+ }
+
+ string_t key;
+ for (std::size_t i = 0; i < len; ++i)
+ {
+ get();
+ if (JSON_UNLIKELY(not get_msgpack_string(key) or not sax->key(key)))
+ {
+ return false;
+ }
+
+ if (JSON_UNLIKELY(not parse_msgpack_internal()))
+ {
+ return false;
+ }
+ key.clear();
+ }
+
+ return sax->end_object();
+ }
+
+ ////////////
+ // UBJSON //
+ ////////////
+
+ /*!
+ @param[in] get_char whether a new character should be retrieved from the
+ input (true, default) or whether the last read
+ character should be considered instead
+
+ @return whether a valid UBJSON value was passed to the SAX parser
+ */
+ bool parse_ubjson_internal(const bool get_char = true)
+ {
+ return get_ubjson_value(get_char ? get_ignore_noop() : current);
+ }
+
+ /*!
+ @brief reads a UBJSON string
+
+ This function is either called after reading the 'S' byte explicitly
+ indicating a string, or in case of an object key where the 'S' byte can be
+ left out.
+
+ @param[out] result created string
+ @param[in] get_char whether a new character should be retrieved from the
+ input (true, default) or whether the last read
+ character should be considered instead
+
+ @return whether string creation completed
+ */
+ bool get_ubjson_string(string_t& result, const bool get_char = true)
+ {
+ if (get_char)
+ {
+ get(); // TODO(niels): may we ignore N here?
+ }
+
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "value")))
+ {
+ return false;
+ }
+
+ switch (current)
+ {
+ case 'U':
+ {
+ std::uint8_t len;
+ return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
+ }
+
+ case 'i':
+ {
+ std::int8_t len;
+ return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
+ }
+
+ case 'I':
+ {
+ std::int16_t len;
+ return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
+ }
+
+ case 'l':
+ {
+ std::int32_t len;
+ return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
+ }
+
+ case 'L':
+ {
+ std::int64_t len;
+ return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
+ }
+
+ default:
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "expected length type specification (U, i, I, l, L); last byte: 0x" + last_token, "string")));
+ }
+ }
+
+ /*!
+ @param[out] result determined size
+ @return whether size determination completed
+ */
+ bool get_ubjson_size_value(std::size_t& result)
+ {
+ switch (get_ignore_noop())
+ {
+ case 'U':
+ {
+ std::uint8_t number;
+ if (JSON_UNLIKELY(not get_number(input_format_t::ubjson, number)))
+ {
+ return false;
+ }
+ result = static_cast<std::size_t>(number);
+ return true;
+ }
+
+ case 'i':
+ {
+ std::int8_t number;
+ if (JSON_UNLIKELY(not get_number(input_format_t::ubjson, number)))
+ {
+ return false;
+ }
+ result = static_cast<std::size_t>(number);
+ return true;
+ }
+
+ case 'I':
+ {
+ std::int16_t number;
+ if (JSON_UNLIKELY(not get_number(input_format_t::ubjson, number)))
+ {
+ return false;
+ }
+ result = static_cast<std::size_t>(number);
+ return true;
+ }
+
+ case 'l':
+ {
+ std::int32_t number;
+ if (JSON_UNLIKELY(not get_number(input_format_t::ubjson, number)))
+ {
+ return false;
+ }
+ result = static_cast<std::size_t>(number);
+ return true;
+ }
+
+ case 'L':
+ {
+ std::int64_t number;
+ if (JSON_UNLIKELY(not get_number(input_format_t::ubjson, number)))
+ {
+ return false;
+ }
+ result = static_cast<std::size_t>(number);
+ return true;
+ }
+
+ default:
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "expected length type specification (U, i, I, l, L) after '#'; last byte: 0x" + last_token, "size")));
+ }
+ }
+ }
+
+ /*!
+ @brief determine the type and size for a container
+
+ In the optimized UBJSON format, a type and a size can be provided to allow
+ for a more compact representation.
+
+ @param[out] result pair of the size and the type
+
+ @return whether pair creation completed
+ */
+ bool get_ubjson_size_type(std::pair<std::size_t, int>& result)
+ {
+ result.first = string_t::npos; // size
+ result.second = 0; // type
+
+ get_ignore_noop();
+
+ if (current == '$')
+ {
+ result.second = get(); // must not ignore 'N', because 'N' maybe the type
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "type")))
+ {
+ return false;
+ }
+
+ get_ignore_noop();
+ if (JSON_UNLIKELY(current != '#'))
+ {
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "value")))
+ {
+ return false;
+ }
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::ubjson, "expected '#' after type information; last byte: 0x" + last_token, "size")));
+ }
+
+ return get_ubjson_size_value(result.first);
+ }
+
+ if (current == '#')
+ {
+ return get_ubjson_size_value(result.first);
+ }
+
+ return true;
+ }
+
+ /*!
+ @param prefix the previously read or set type prefix
+ @return whether value creation completed
+ */
+ bool get_ubjson_value(const int prefix)
+ {
+ switch (prefix)
+ {
+ case std::char_traits<char>::eof(): // EOF
+ return unexpect_eof(input_format_t::ubjson, "value");
+
+ case 'T': // true
+ return sax->boolean(true);
+ case 'F': // false
+ return sax->boolean(false);
+
+ case 'Z': // null
+ return sax->null();
+
+ case 'U':
+ {
+ std::uint8_t number;
+ return get_number(input_format_t::ubjson, number) and sax->number_unsigned(number);
+ }
+
+ case 'i':
+ {
+ std::int8_t number;
+ return get_number(input_format_t::ubjson, number) and sax->number_integer(number);
+ }
+
+ case 'I':
+ {
+ std::int16_t number;
+ return get_number(input_format_t::ubjson, number) and sax->number_integer(number);
+ }
+
+ case 'l':
+ {
+ std::int32_t number;
+ return get_number(input_format_t::ubjson, number) and sax->number_integer(number);
+ }
+
+ case 'L':
+ {
+ std::int64_t number;
+ return get_number(input_format_t::ubjson, number) and sax->number_integer(number);
+ }
+
+ case 'd':
+ {
+ float number;
+ return get_number(input_format_t::ubjson, number) and sax->number_float(static_cast<number_float_t>(number), "");
+ }
+
+ case 'D':
+ {
+ double number;
+ return get_number(input_format_t::ubjson, number) and sax->number_float(static_cast<number_float_t>(number), "");
+ }
+
+ case 'C': // char
+ {
+ get();
+ if (JSON_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "char")))
+ {
+ return false;
+ }
+ if (JSON_UNLIKELY(current > 127))
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "byte after 'C' must be in range 0x00..0x7F; last byte: 0x" + last_token, "char")));
+ }
+ string_t s(1, static_cast<char>(current));
+ return sax->string(s);
+ }
+
+ case 'S': // string
+ {
+ string_t s;
+ return get_ubjson_string(s) and sax->string(s);
+ }
+
+ case '[': // array
+ return get_ubjson_array();
+
+ case '{': // object
+ return get_ubjson_object();
+
+ default: // anything else
+ {
+ auto last_token = get_token_string();
+ return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::ubjson, "invalid byte: 0x" + last_token, "value")));
+ }
+ }
+ }
+
+ /*!
+ @return whether array creation completed
+ */
+ bool get_ubjson_array()
+ {
+ std::pair<std::size_t, int> size_and_type;
+ if (JSON_UNLIKELY(not get_ubjson_size_type(size_and_type)))
+ {
+ return false;
+ }
+
+ if (size_and_type.first != string_t::npos)
+ {
+ if (JSON_UNLIKELY(not sax->start_array(size_and_type.first)))
+ {
+ return false;
+ }
+
+ if (size_and_type.second != 0)
+ {
+ if (size_and_type.second != 'N')
+ {
+ for (std::size_t i = 0; i < size_and_type.first; ++i)
+ {
+ if (JSON_UNLIKELY(not get_ubjson_value(size_and_type.second)))
+ {
+ return false;
+ }
+ }
+ }
+ }
+ else
+ {
+ for (std::size_t i = 0; i < size_and_type.first; ++i)
+ {
+ if (JSON_UNLIKELY(not parse_ubjson_internal()))
+ {
+ return false;
+ }
+ }
+ }
+ }
+ else
+ {
+ if (JSON_UNLIKELY(not sax->start_array(std::size_t(-1))))
+ {
+ return false;
+ }
+
+ while (current != ']')
+ {
+ if (JSON_UNLIKELY(not parse_ubjson_internal(false)))
+ {
+ return false;
+ }
+ get_ignore_noop();
+ }
+ }
+
+ return sax->end_array();
+ }
+
+ /*!
+ @return whether object creation completed
+ */
+ bool get_ubjson_object()
+ {
+ std::pair<std::size_t, int> size_and_type;
+ if (JSON_UNLIKELY(not get_ubjson_size_type(size_and_type)))
+ {
+ return false;
+ }
+
+ string_t key;
+ if (size_and_type.first != string_t::npos)
+ {
+ if (JSON_UNLIKELY(not sax->start_object(size_and_type.first)))
+ {
+ return false;
+ }
+
+ if (size_and_type.second != 0)
+ {
+ for (std::size_t i = 0; i < size_and_type.first; ++i)
+ {
+ if (JSON_UNLIKELY(not get_ubjson_string(key) or not sax->key(key)))
+ {
+ return false;
+ }
+ if (JSON_UNLIKELY(not get_ubjson_value(size_and_type.second)))
+ {
+ return false;
+ }
+ key.clear();
+ }
+ }
+ else
+ {
+ for (std::size_t i = 0; i < size_and_type.first; ++i)
+ {
+ if (JSON_UNLIKELY(not get_ubjson_string(key) or not sax->key(key)))
+ {
+ return false;
+ }
+ if (JSON_UNLIKELY(not parse_ubjson_internal()))
+ {
+ return false;
+ }
+ key.clear();
+ }
+ }
+ }
+ else
+ {
+ if (JSON_UNLIKELY(not sax->start_object(std::size_t(-1))))
+ {
+ return false;
+ }
+
+ while (current != '}')
+ {
+ if (JSON_UNLIKELY(not get_ubjson_string(key, false) or not sax->key(key)))
+ {
+ return false;
+ }
+ if (JSON_UNLIKELY(not parse_ubjson_internal()))
+ {
+ return false;
+ }
+ get_ignore_noop();
+ key.clear();
+ }
+ }
+
+ return sax->end_object();
+ }
+
+ ///////////////////////
+ // Utility functions //
+ ///////////////////////
+
+ /*!
+ @brief get next character from the input
+
+ This function provides the interface to the used input adapter. It does
+ not throw in case the input reached EOF, but returns a -'ve valued
+ `std::char_traits<char>::eof()` in that case.
+
+ @return character read from the input
+ */
+ int get()
+ {
+ ++chars_read;
+ return current = ia->get_character();
+ }
+
+ /*!
+ @return character read from the input after ignoring all 'N' entries
+ */
+ int get_ignore_noop()
+ {
+ do
+ {
+ get();
+ }
+ while (current == 'N');
+
+ return current;
+ }
+
+ /*
+ @brief read a number from the input
+
+ @tparam NumberType the type of the number
+ @param[in] format the current format (for diagnostics)
+ @param[out] result number of type @a NumberType
+
+ @return whether conversion completed
+
+ @note This function needs to respect the system's endianess, because
+ bytes in CBOR, MessagePack, and UBJSON are stored in network order
+ (big endian) and therefore need reordering on little endian systems.
+ */
+ template<typename NumberType, bool InputIsLittleEndian = false>
+ bool get_number(const input_format_t format, NumberType& result)
+ {
+ // step 1: read input into array with system's byte order
+ std::array<std::uint8_t, sizeof(NumberType)> vec;
+ for (std::size_t i = 0; i < sizeof(NumberType); ++i)
+ {
+ get();
+ if (JSON_UNLIKELY(not unexpect_eof(format, "number")))
+ {
+ return false;
+ }
+
+ // reverse byte order prior to conversion if necessary
+ if (is_little_endian != InputIsLittleEndian)
+ {
+ vec[sizeof(NumberType) - i - 1] = static_cast<std::uint8_t>(current);
+ }
+ else
+ {
+ vec[i] = static_cast<std::uint8_t>(current); // LCOV_EXCL_LINE
+ }
+ }
+
+ // step 2: convert array into number of type T and return
+ std::memcpy(&result, vec.data(), sizeof(NumberType));
+ return true;
+ }
+
+ /*!
+ @brief create a string by reading characters from the input
+
+ @tparam NumberType the type of the number
+ @param[in] format the current format (for diagnostics)
+ @param[in] len number of characters to read
+ @param[out] result string created by reading @a len bytes
+
+ @return whether string creation completed
+
+ @note We can not reserve @a len bytes for the result, because @a len
+ may be too large. Usually, @ref unexpect_eof() detects the end of
+ the input before we run out of string memory.
+ */
+ template<typename NumberType>
+ bool get_string(const input_format_t format,
+ const NumberType len,
+ string_t& result)
+ {
+ bool success = true;
+ std::generate_n(std::back_inserter(result), len, [this, &success, &format]()
+ {
+ get();
+ if (JSON_UNLIKELY(not unexpect_eof(format, "string")))
+ {
+ success = false;
+ }
+ return static_cast<char>(current);
+ });
+ return success;
+ }
+
+ /*!
+ @param[in] format the current format (for diagnostics)
+ @param[in] context further context information (for diagnostics)
+ @return whether the last read character is not EOF
+ */
+ bool unexpect_eof(const input_format_t format, const char* context) const
+ {
+ if (JSON_UNLIKELY(current == std::char_traits<char>::eof()))
+ {
+ return sax->parse_error(chars_read, "<end of file>",
+ parse_error::create(110, chars_read, exception_message(format, "unexpected end of input", context)));
+ }
+ return true;
+ }
+
+ /*!
+ @return a string representation of the last read byte
+ */
+ std::string get_token_string() const
+ {
+ std::array<char, 3> cr{{}};
+ (std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast<unsigned char>(current));
+ return std::string{cr.data()};
+ }
+
+ /*!
+ @param[in] format the current format
+ @param[in] detail a detailed error message
+ @param[in] context further contect information
+ @return a message string to use in the parse_error exceptions
+ */
+ std::string exception_message(const input_format_t format,
+ const std::string& detail,
+ const std::string& context) const
+ {
+ std::string error_msg = "syntax error while parsing ";
+
+ switch (format)
+ {
+ case input_format_t::cbor:
+ error_msg += "CBOR";
+ break;
+
+ case input_format_t::msgpack:
+ error_msg += "MessagePack";
+ break;
+
+ case input_format_t::ubjson:
+ error_msg += "UBJSON";
+ break;
+
+ case input_format_t::bson:
+ error_msg += "BSON";
+ break;
+
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+
+ return error_msg + " " + context + ": " + detail;
+ }
+
+ private:
+ /// input adapter
+ input_adapter_t ia = nullptr;
+
+ /// the current character
+ int current = std::char_traits<char>::eof();
+
+ /// the number of characters read
+ std::size_t chars_read = 0;
+
+ /// whether we can assume little endianess
+ const bool is_little_endian = little_endianess();
+
+ /// the SAX parser
+ json_sax_t* sax = nullptr;
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/input/input_adapters.hpp>
+
+// #include <nlohmann/detail/input/lexer.hpp>
+
+
+#include <array> // array
+#include <clocale> // localeconv
+#include <cstddef> // size_t
+#include <cstdio> // snprintf
+#include <cstdlib> // strtof, strtod, strtold, strtoll, strtoull
+#include <initializer_list> // initializer_list
+#include <string> // char_traits, string
+#include <utility> // move
+#include <vector> // vector
+
+// #include <nlohmann/detail/input/input_adapters.hpp>
+
+// #include <nlohmann/detail/input/position_t.hpp>
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+///////////
+// lexer //
+///////////
+
+/*!
+@brief lexical analysis
+
+This class organizes the lexical analysis during JSON deserialization.
+*/
+template<typename BasicJsonType>
+class lexer
+{
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+
+ public:
+ /// token types for the parser
+ enum class token_type
+ {
+ uninitialized, ///< indicating the scanner is uninitialized
+ literal_true, ///< the `true` literal
+ literal_false, ///< the `false` literal
+ literal_null, ///< the `null` literal
+ value_string, ///< a string -- use get_string() for actual value
+ value_unsigned, ///< an unsigned integer -- use get_number_unsigned() for actual value
+ value_integer, ///< a signed integer -- use get_number_integer() for actual value
+ value_float, ///< an floating point number -- use get_number_float() for actual value
+ begin_array, ///< the character for array begin `[`
+ begin_object, ///< the character for object begin `{`
+ end_array, ///< the character for array end `]`
+ end_object, ///< the character for object end `}`
+ name_separator, ///< the name separator `:`
+ value_separator, ///< the value separator `,`
+ parse_error, ///< indicating a parse error
+ end_of_input, ///< indicating the end of the input buffer
+ literal_or_value ///< a literal or the begin of a value (only for diagnostics)
+ };
+
+ /// return name of values of type token_type (only used for errors)
+ static const char* token_type_name(const token_type t) noexcept
+ {
+ switch (t)
+ {
+ case token_type::uninitialized:
+ return "<uninitialized>";
+ case token_type::literal_true:
+ return "true literal";
+ case token_type::literal_false:
+ return "false literal";
+ case token_type::literal_null:
+ return "null literal";
+ case token_type::value_string:
+ return "string literal";
+ case lexer::token_type::value_unsigned:
+ case lexer::token_type::value_integer:
+ case lexer::token_type::value_float:
+ return "number literal";
+ case token_type::begin_array:
+ return "'['";
+ case token_type::begin_object:
+ return "'{'";
+ case token_type::end_array:
+ return "']'";
+ case token_type::end_object:
+ return "'}'";
+ case token_type::name_separator:
+ return "':'";
+ case token_type::value_separator:
+ return "','";
+ case token_type::parse_error:
+ return "<parse error>";
+ case token_type::end_of_input:
+ return "end of input";
+ case token_type::literal_or_value:
+ return "'[', '{', or a literal";
+ // LCOV_EXCL_START
+ default: // catch non-enum values
+ return "unknown token";
+ // LCOV_EXCL_STOP
+ }
+ }
+
+ explicit lexer(detail::input_adapter_t&& adapter)
+ : ia(std::move(adapter)), decimal_point_char(get_decimal_point()) {}
+
+ // delete because of pointer members
+ lexer(const lexer&) = delete;
+ lexer(lexer&&) = delete;
+ lexer& operator=(lexer&) = delete;
+ lexer& operator=(lexer&&) = delete;
+ ~lexer() = default;
+
+ private:
+ /////////////////////
+ // locales
+ /////////////////////
+
+ /// return the locale-dependent decimal point
+ static char get_decimal_point() noexcept
+ {
+ const auto loc = localeconv();
+ assert(loc != nullptr);
+ return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point);
+ }
+
+ /////////////////////
+ // scan functions
+ /////////////////////
+
+ /*!
+ @brief get codepoint from 4 hex characters following `\u`
+
+ For input "\u c1 c2 c3 c4" the codepoint is:
+ (c1 * 0x1000) + (c2 * 0x0100) + (c3 * 0x0010) + c4
+ = (c1 << 12) + (c2 << 8) + (c3 << 4) + (c4 << 0)
+
+ Furthermore, the possible characters '0'..'9', 'A'..'F', and 'a'..'f'
+ must be converted to the integers 0x0..0x9, 0xA..0xF, 0xA..0xF, resp. The
+ conversion is done by subtracting the offset (0x30, 0x37, and 0x57)
+ between the ASCII value of the character and the desired integer value.
+
+ @return codepoint (0x0000..0xFFFF) or -1 in case of an error (e.g. EOF or
+ non-hex character)
+ */
+ int get_codepoint()
+ {
+ // this function only makes sense after reading `\u`
+ assert(current == 'u');
+ int codepoint = 0;
+
+ const auto factors = { 12u, 8u, 4u, 0u };
+ for (const auto factor : factors)
+ {
+ get();
+
+ if (current >= '0' and current <= '9')
+ {
+ codepoint += static_cast<int>((static_cast<unsigned int>(current) - 0x30u) << factor);
+ }
+ else if (current >= 'A' and current <= 'F')
+ {
+ codepoint += static_cast<int>((static_cast<unsigned int>(current) - 0x37u) << factor);
+ }
+ else if (current >= 'a' and current <= 'f')
+ {
+ codepoint += static_cast<int>((static_cast<unsigned int>(current) - 0x57u) << factor);
+ }
+ else
+ {
+ return -1;
+ }
+ }
+
+ assert(0x0000 <= codepoint and codepoint <= 0xFFFF);
+ return codepoint;
+ }
+
+ /*!
+ @brief check if the next byte(s) are inside a given range
+
+ Adds the current byte and, for each passed range, reads a new byte and
+ checks if it is inside the range. If a violation was detected, set up an
+ error message and return false. Otherwise, return true.
+
+ @param[in] ranges list of integers; interpreted as list of pairs of
+ inclusive lower and upper bound, respectively
+
+ @pre The passed list @a ranges must have 2, 4, or 6 elements; that is,
+ 1, 2, or 3 pairs. This precondition is enforced by an assertion.
+
+ @return true if and only if no range violation was detected
+ */
+ bool next_byte_in_range(std::initializer_list<int> ranges)
+ {
+ assert(ranges.size() == 2 or ranges.size() == 4 or ranges.size() == 6);
+ add(current);
+
+ for (auto range = ranges.begin(); range != ranges.end(); ++range)
+ {
+ get();
+ if (JSON_LIKELY(*range <= current and current <= *(++range)))
+ {
+ add(current);
+ }
+ else
+ {
+ error_message = "invalid string: ill-formed UTF-8 byte";
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /*!
+ @brief scan a string literal
+
+ This function scans a string according to Sect. 7 of RFC 7159. While
+ scanning, bytes are escaped and copied into buffer token_buffer. Then the
+ function returns successfully, token_buffer is *not* null-terminated (as it
+ may contain \0 bytes), and token_buffer.size() is the number of bytes in the
+ string.
+
+ @return token_type::value_string if string could be successfully scanned,
+ token_type::parse_error otherwise
+
+ @note In case of errors, variable error_message contains a textual
+ description.
+ */
+ token_type scan_string()
+ {
+ // reset token_buffer (ignore opening quote)
+ reset();
+
+ // we entered the function by reading an open quote
+ assert(current == '\"');
+
+ while (true)
+ {
+ // get next character
+ switch (get())
+ {
+ // end of file while parsing string
+ case std::char_traits<char>::eof():
+ {
+ error_message = "invalid string: missing closing quote";
+ return token_type::parse_error;
+ }
+
+ // closing quote
+ case '\"':
+ {
+ return token_type::value_string;
+ }
+
+ // escapes
+ case '\\':
+ {
+ switch (get())
+ {
+ // quotation mark
+ case '\"':
+ add('\"');
+ break;
+ // reverse solidus
+ case '\\':
+ add('\\');
+ break;
+ // solidus
+ case '/':
+ add('/');
+ break;
+ // backspace
+ case 'b':
+ add('\b');
+ break;
+ // form feed
+ case 'f':
+ add('\f');
+ break;
+ // line feed
+ case 'n':
+ add('\n');
+ break;
+ // carriage return
+ case 'r':
+ add('\r');
+ break;
+ // tab
+ case 't':
+ add('\t');
+ break;
+
+ // unicode escapes
+ case 'u':
+ {
+ const int codepoint1 = get_codepoint();
+ int codepoint = codepoint1; // start with codepoint1
+
+ if (JSON_UNLIKELY(codepoint1 == -1))
+ {
+ error_message = "invalid string: '\\u' must be followed by 4 hex digits";
+ return token_type::parse_error;
+ }
+
+ // check if code point is a high surrogate
+ if (0xD800 <= codepoint1 and codepoint1 <= 0xDBFF)
+ {
+ // expect next \uxxxx entry
+ if (JSON_LIKELY(get() == '\\' and get() == 'u'))
+ {
+ const int codepoint2 = get_codepoint();
+
+ if (JSON_UNLIKELY(codepoint2 == -1))
+ {
+ error_message = "invalid string: '\\u' must be followed by 4 hex digits";
+ return token_type::parse_error;
+ }
+
+ // check if codepoint2 is a low surrogate
+ if (JSON_LIKELY(0xDC00 <= codepoint2 and codepoint2 <= 0xDFFF))
+ {
+ // overwrite codepoint
+ codepoint = static_cast<int>(
+ // high surrogate occupies the most significant 22 bits
+ (static_cast<unsigned int>(codepoint1) << 10u)
+ // low surrogate occupies the least significant 15 bits
+ + static_cast<unsigned int>(codepoint2)
+ // there is still the 0xD800, 0xDC00 and 0x10000 noise
+ // in the result so we have to subtract with:
+ // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00
+ - 0x35FDC00u);
+ }
+ else
+ {
+ error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF";
+ return token_type::parse_error;
+ }
+ }
+ else
+ {
+ error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF";
+ return token_type::parse_error;
+ }
+ }
+ else
+ {
+ if (JSON_UNLIKELY(0xDC00 <= codepoint1 and codepoint1 <= 0xDFFF))
+ {
+ error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF";
+ return token_type::parse_error;
+ }
+ }
+
+ // result of the above calculation yields a proper codepoint
+ assert(0x00 <= codepoint and codepoint <= 0x10FFFF);
+
+ // translate codepoint into bytes
+ if (codepoint < 0x80)
+ {
+ // 1-byte characters: 0xxxxxxx (ASCII)
+ add(codepoint);
+ }
+ else if (codepoint <= 0x7FF)
+ {
+ // 2-byte characters: 110xxxxx 10xxxxxx
+ add(static_cast<int>(0xC0u | (static_cast<unsigned int>(codepoint) >> 6u)));
+ add(static_cast<int>(0x80u | (static_cast<unsigned int>(codepoint) & 0x3Fu)));
+ }
+ else if (codepoint <= 0xFFFF)
+ {
+ // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx
+ add(static_cast<int>(0xE0u | (static_cast<unsigned int>(codepoint) >> 12u)));
+ add(static_cast<int>(0x80u | ((static_cast<unsigned int>(codepoint) >> 6u) & 0x3Fu)));
+ add(static_cast<int>(0x80u | (static_cast<unsigned int>(codepoint) & 0x3Fu)));
+ }
+ else
+ {
+ // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+ add(static_cast<int>(0xF0u | (static_cast<unsigned int>(codepoint) >> 18u)));
+ add(static_cast<int>(0x80u | ((static_cast<unsigned int>(codepoint) >> 12u) & 0x3Fu)));
+ add(static_cast<int>(0x80u | ((static_cast<unsigned int>(codepoint) >> 6u) & 0x3Fu)));
+ add(static_cast<int>(0x80u | (static_cast<unsigned int>(codepoint) & 0x3Fu)));
+ }
+
+ break;
+ }
+
+ // other characters after escape
+ default:
+ error_message = "invalid string: forbidden character after backslash";
+ return token_type::parse_error;
+ }
+
+ break;
+ }
+
+ // invalid control characters
+ case 0x00:
+ {
+ error_message = "invalid string: control character U+0000 (NUL) must be escaped to \\u0000";
+ return token_type::parse_error;
+ }
+
+ case 0x01:
+ {
+ error_message = "invalid string: control character U+0001 (SOH) must be escaped to \\u0001";
+ return token_type::parse_error;
+ }
+
+ case 0x02:
+ {
+ error_message = "invalid string: control character U+0002 (STX) must be escaped to \\u0002";
+ return token_type::parse_error;
+ }
+
+ case 0x03:
+ {
+ error_message = "invalid string: control character U+0003 (ETX) must be escaped to \\u0003";
+ return token_type::parse_error;
+ }
+
+ case 0x04:
+ {
+ error_message = "invalid string: control character U+0004 (EOT) must be escaped to \\u0004";
+ return token_type::parse_error;
+ }
+
+ case 0x05:
+ {
+ error_message = "invalid string: control character U+0005 (ENQ) must be escaped to \\u0005";
+ return token_type::parse_error;
+ }
+
+ case 0x06:
+ {
+ error_message = "invalid string: control character U+0006 (ACK) must be escaped to \\u0006";
+ return token_type::parse_error;
+ }
+
+ case 0x07:
+ {
+ error_message = "invalid string: control character U+0007 (BEL) must be escaped to \\u0007";
+ return token_type::parse_error;
+ }
+
+ case 0x08:
+ {
+ error_message = "invalid string: control character U+0008 (BS) must be escaped to \\u0008 or \\b";
+ return token_type::parse_error;
+ }
+
+ case 0x09:
+ {
+ error_message = "invalid string: control character U+0009 (HT) must be escaped to \\u0009 or \\t";
+ return token_type::parse_error;
+ }
+
+ case 0x0A:
+ {
+ error_message = "invalid string: control character U+000A (LF) must be escaped to \\u000A or \\n";
+ return token_type::parse_error;
+ }
+
+ case 0x0B:
+ {
+ error_message = "invalid string: control character U+000B (VT) must be escaped to \\u000B";
+ return token_type::parse_error;
+ }
+
+ case 0x0C:
+ {
+ error_message = "invalid string: control character U+000C (FF) must be escaped to \\u000C or \\f";
+ return token_type::parse_error;
+ }
+
+ case 0x0D:
+ {
+ error_message = "invalid string: control character U+000D (CR) must be escaped to \\u000D or \\r";
+ return token_type::parse_error;
+ }
+
+ case 0x0E:
+ {
+ error_message = "invalid string: control character U+000E (SO) must be escaped to \\u000E";
+ return token_type::parse_error;
+ }
+
+ case 0x0F:
+ {
+ error_message = "invalid string: control character U+000F (SI) must be escaped to \\u000F";
+ return token_type::parse_error;
+ }
+
+ case 0x10:
+ {
+ error_message = "invalid string: control character U+0010 (DLE) must be escaped to \\u0010";
+ return token_type::parse_error;
+ }
+
+ case 0x11:
+ {
+ error_message = "invalid string: control character U+0011 (DC1) must be escaped to \\u0011";
+ return token_type::parse_error;
+ }
+
+ case 0x12:
+ {
+ error_message = "invalid string: control character U+0012 (DC2) must be escaped to \\u0012";
+ return token_type::parse_error;
+ }
+
+ case 0x13:
+ {
+ error_message = "invalid string: control character U+0013 (DC3) must be escaped to \\u0013";
+ return token_type::parse_error;
+ }
+
+ case 0x14:
+ {
+ error_message = "invalid string: control character U+0014 (DC4) must be escaped to \\u0014";
+ return token_type::parse_error;
+ }
+
+ case 0x15:
+ {
+ error_message = "invalid string: control character U+0015 (NAK) must be escaped to \\u0015";
+ return token_type::parse_error;
+ }
+
+ case 0x16:
+ {
+ error_message = "invalid string: control character U+0016 (SYN) must be escaped to \\u0016";
+ return token_type::parse_error;
+ }
+
+ case 0x17:
+ {
+ error_message = "invalid string: control character U+0017 (ETB) must be escaped to \\u0017";
+ return token_type::parse_error;
+ }
+
+ case 0x18:
+ {
+ error_message = "invalid string: control character U+0018 (CAN) must be escaped to \\u0018";
+ return token_type::parse_error;
+ }
+
+ case 0x19:
+ {
+ error_message = "invalid string: control character U+0019 (EM) must be escaped to \\u0019";
+ return token_type::parse_error;
+ }
+
+ case 0x1A:
+ {
+ error_message = "invalid string: control character U+001A (SUB) must be escaped to \\u001A";
+ return token_type::parse_error;
+ }
+
+ case 0x1B:
+ {
+ error_message = "invalid string: control character U+001B (ESC) must be escaped to \\u001B";
+ return token_type::parse_error;
+ }
+
+ case 0x1C:
+ {
+ error_message = "invalid string: control character U+001C (FS) must be escaped to \\u001C";
+ return token_type::parse_error;
+ }
+
+ case 0x1D:
+ {
+ error_message = "invalid string: control character U+001D (GS) must be escaped to \\u001D";
+ return token_type::parse_error;
+ }
+
+ case 0x1E:
+ {
+ error_message = "invalid string: control character U+001E (RS) must be escaped to \\u001E";
+ return token_type::parse_error;
+ }
+
+ case 0x1F:
+ {
+ error_message = "invalid string: control character U+001F (US) must be escaped to \\u001F";
+ return token_type::parse_error;
+ }
+
+ // U+0020..U+007F (except U+0022 (quote) and U+005C (backspace))
+ case 0x20:
+ case 0x21:
+ case 0x23:
+ case 0x24:
+ case 0x25:
+ case 0x26:
+ case 0x27:
+ case 0x28:
+ case 0x29:
+ case 0x2A:
+ case 0x2B:
+ case 0x2C:
+ case 0x2D:
+ case 0x2E:
+ case 0x2F:
+ case 0x30:
+ case 0x31:
+ case 0x32:
+ case 0x33:
+ case 0x34:
+ case 0x35:
+ case 0x36:
+ case 0x37:
+ case 0x38:
+ case 0x39:
+ case 0x3A:
+ case 0x3B:
+ case 0x3C:
+ case 0x3D:
+ case 0x3E:
+ case 0x3F:
+ case 0x40:
+ case 0x41:
+ case 0x42:
+ case 0x43:
+ case 0x44:
+ case 0x45:
+ case 0x46:
+ case 0x47:
+ case 0x48:
+ case 0x49:
+ case 0x4A:
+ case 0x4B:
+ case 0x4C:
+ case 0x4D:
+ case 0x4E:
+ case 0x4F:
+ case 0x50:
+ case 0x51:
+ case 0x52:
+ case 0x53:
+ case 0x54:
+ case 0x55:
+ case 0x56:
+ case 0x57:
+ case 0x58:
+ case 0x59:
+ case 0x5A:
+ case 0x5B:
+ case 0x5D:
+ case 0x5E:
+ case 0x5F:
+ case 0x60:
+ case 0x61:
+ case 0x62:
+ case 0x63:
+ case 0x64:
+ case 0x65:
+ case 0x66:
+ case 0x67:
+ case 0x68:
+ case 0x69:
+ case 0x6A:
+ case 0x6B:
+ case 0x6C:
+ case 0x6D:
+ case 0x6E:
+ case 0x6F:
+ case 0x70:
+ case 0x71:
+ case 0x72:
+ case 0x73:
+ case 0x74:
+ case 0x75:
+ case 0x76:
+ case 0x77:
+ case 0x78:
+ case 0x79:
+ case 0x7A:
+ case 0x7B:
+ case 0x7C:
+ case 0x7D:
+ case 0x7E:
+ case 0x7F:
+ {
+ add(current);
+ break;
+ }
+
+ // U+0080..U+07FF: bytes C2..DF 80..BF
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF:
+ {
+ if (JSON_UNLIKELY(not next_byte_in_range({0x80, 0xBF})))
+ {
+ return token_type::parse_error;
+ }
+ break;
+ }
+
+ // U+0800..U+0FFF: bytes E0 A0..BF 80..BF
+ case 0xE0:
+ {
+ if (JSON_UNLIKELY(not (next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF}))))
+ {
+ return token_type::parse_error;
+ }
+ break;
+ }
+
+ // U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF
+ // U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xEE:
+ case 0xEF:
+ {
+ if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF}))))
+ {
+ return token_type::parse_error;
+ }
+ break;
+ }
+
+ // U+D000..U+D7FF: bytes ED 80..9F 80..BF
+ case 0xED:
+ {
+ if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x9F, 0x80, 0xBF}))))
+ {
+ return token_type::parse_error;
+ }
+ break;
+ }
+
+ // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF
+ case 0xF0:
+ {
+ if (JSON_UNLIKELY(not (next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF}))))
+ {
+ return token_type::parse_error;
+ }
+ break;
+ }
+
+ // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF
+ case 0xF1:
+ case 0xF2:
+ case 0xF3:
+ {
+ if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF}))))
+ {
+ return token_type::parse_error;
+ }
+ break;
+ }
+
+ // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF
+ case 0xF4:
+ {
+ if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF}))))
+ {
+ return token_type::parse_error;
+ }
+ break;
+ }
+
+ // remaining bytes (80..C1 and F5..FF) are ill-formed
+ default:
+ {
+ error_message = "invalid string: ill-formed UTF-8 byte";
+ return token_type::parse_error;
+ }
+ }
+ }
+ }
+
+ static void strtof(float& f, const char* str, char** endptr) noexcept
+ {
+ f = std::strtof(str, endptr);
+ }
+
+ static void strtof(double& f, const char* str, char** endptr) noexcept
+ {
+ f = std::strtod(str, endptr);
+ }
+
+ static void strtof(long double& f, const char* str, char** endptr) noexcept
+ {
+ f = std::strtold(str, endptr);
+ }
+
+ /*!
+ @brief scan a number literal
+
+ This function scans a string according to Sect. 6 of RFC 7159.
+
+ The function is realized with a deterministic finite state machine derived
+ from the grammar described in RFC 7159. Starting in state "init", the
+ input is read and used to determined the next state. Only state "done"
+ accepts the number. State "error" is a trap state to model errors. In the
+ table below, "anything" means any character but the ones listed before.
+
+ state | 0 | 1-9 | e E | + | - | . | anything
+ ---------|----------|----------|----------|---------|---------|----------|-----------
+ init | zero | any1 | [error] | [error] | minus | [error] | [error]
+ minus | zero | any1 | [error] | [error] | [error] | [error] | [error]
+ zero | done | done | exponent | done | done | decimal1 | done
+ any1 | any1 | any1 | exponent | done | done | decimal1 | done
+ decimal1 | decimal2 | [error] | [error] | [error] | [error] | [error] | [error]
+ decimal2 | decimal2 | decimal2 | exponent | done | done | done | done
+ exponent | any2 | any2 | [error] | sign | sign | [error] | [error]
+ sign | any2 | any2 | [error] | [error] | [error] | [error] | [error]
+ any2 | any2 | any2 | done | done | done | done | done
+
+ The state machine is realized with one label per state (prefixed with
+ "scan_number_") and `goto` statements between them. The state machine
+ contains cycles, but any cycle can be left when EOF is read. Therefore,
+ the function is guaranteed to terminate.
+
+ During scanning, the read bytes are stored in token_buffer. This string is
+ then converted to a signed integer, an unsigned integer, or a
+ floating-point number.
+
+ @return token_type::value_unsigned, token_type::value_integer, or
+ token_type::value_float if number could be successfully scanned,
+ token_type::parse_error otherwise
+
+ @note The scanner is independent of the current locale. Internally, the
+ locale's decimal point is used instead of `.` to work with the
+ locale-dependent converters.
+ */
+ token_type scan_number() // lgtm [cpp/use-of-goto]
+ {
+ // reset token_buffer to store the number's bytes
+ reset();
+
+ // the type of the parsed number; initially set to unsigned; will be
+ // changed if minus sign, decimal point or exponent is read
+ token_type number_type = token_type::value_unsigned;
+
+ // state (init): we just found out we need to scan a number
+ switch (current)
+ {
+ case '-':
+ {
+ add(current);
+ goto scan_number_minus;
+ }
+
+ case '0':
+ {
+ add(current);
+ goto scan_number_zero;
+ }
+
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_any1;
+ }
+
+ // all other characters are rejected outside scan_number()
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+
+scan_number_minus:
+ // state: we just parsed a leading minus sign
+ number_type = token_type::value_integer;
+ switch (get())
+ {
+ case '0':
+ {
+ add(current);
+ goto scan_number_zero;
+ }
+
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_any1;
+ }
+
+ default:
+ {
+ error_message = "invalid number; expected digit after '-'";
+ return token_type::parse_error;
+ }
+ }
+
+scan_number_zero:
+ // state: we just parse a zero (maybe with a leading minus sign)
+ switch (get())
+ {
+ case '.':
+ {
+ add(decimal_point_char);
+ goto scan_number_decimal1;
+ }
+
+ case 'e':
+ case 'E':
+ {
+ add(current);
+ goto scan_number_exponent;
+ }
+
+ default:
+ goto scan_number_done;
+ }
+
+scan_number_any1:
+ // state: we just parsed a number 0-9 (maybe with a leading minus sign)
+ switch (get())
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_any1;
+ }
+
+ case '.':
+ {
+ add(decimal_point_char);
+ goto scan_number_decimal1;
+ }
+
+ case 'e':
+ case 'E':
+ {
+ add(current);
+ goto scan_number_exponent;
+ }
+
+ default:
+ goto scan_number_done;
+ }
+
+scan_number_decimal1:
+ // state: we just parsed a decimal point
+ number_type = token_type::value_float;
+ switch (get())
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_decimal2;
+ }
+
+ default:
+ {
+ error_message = "invalid number; expected digit after '.'";
+ return token_type::parse_error;
+ }
+ }
+
+scan_number_decimal2:
+ // we just parsed at least one number after a decimal point
+ switch (get())
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_decimal2;
+ }
+
+ case 'e':
+ case 'E':
+ {
+ add(current);
+ goto scan_number_exponent;
+ }
+
+ default:
+ goto scan_number_done;
+ }
+
+scan_number_exponent:
+ // we just parsed an exponent
+ number_type = token_type::value_float;
+ switch (get())
+ {
+ case '+':
+ case '-':
+ {
+ add(current);
+ goto scan_number_sign;
+ }
+
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_any2;
+ }
+
+ default:
+ {
+ error_message =
+ "invalid number; expected '+', '-', or digit after exponent";
+ return token_type::parse_error;
+ }
+ }
+
+scan_number_sign:
+ // we just parsed an exponent sign
+ switch (get())
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_any2;
+ }
+
+ default:
+ {
+ error_message = "invalid number; expected digit after exponent sign";
+ return token_type::parse_error;
+ }
+ }
+
+scan_number_any2:
+ // we just parsed a number after the exponent or exponent sign
+ switch (get())
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ add(current);
+ goto scan_number_any2;
+ }
+
+ default:
+ goto scan_number_done;
+ }
+
+scan_number_done:
+ // unget the character after the number (we only read it to know that
+ // we are done scanning a number)
+ unget();
+
+ char* endptr = nullptr;
+ errno = 0;
+
+ // try to parse integers first and fall back to floats
+ if (number_type == token_type::value_unsigned)
+ {
+ const auto x = std::strtoull(token_buffer.data(), &endptr, 10);
+
+ // we checked the number format before
+ assert(endptr == token_buffer.data() + token_buffer.size());
+
+ if (errno == 0)
+ {
+ value_unsigned = static_cast<number_unsigned_t>(x);
+ if (value_unsigned == x)
+ {
+ return token_type::value_unsigned;
+ }
+ }
+ }
+ else if (number_type == token_type::value_integer)
+ {
+ const auto x = std::strtoll(token_buffer.data(), &endptr, 10);
+
+ // we checked the number format before
+ assert(endptr == token_buffer.data() + token_buffer.size());
+
+ if (errno == 0)
+ {
+ value_integer = static_cast<number_integer_t>(x);
+ if (value_integer == x)
+ {
+ return token_type::value_integer;
+ }
+ }
+ }
+
+ // this code is reached if we parse a floating-point number or if an
+ // integer conversion above failed
+ strtof(value_float, token_buffer.data(), &endptr);
+
+ // we checked the number format before
+ assert(endptr == token_buffer.data() + token_buffer.size());
+
+ return token_type::value_float;
+ }
+
+ /*!
+ @param[in] literal_text the literal text to expect
+ @param[in] length the length of the passed literal text
+ @param[in] return_type the token type to return on success
+ */
+ token_type scan_literal(const char* literal_text, const std::size_t length,
+ token_type return_type)
+ {
+ assert(current == literal_text[0]);
+ for (std::size_t i = 1; i < length; ++i)
+ {
+ if (JSON_UNLIKELY(get() != literal_text[i]))
+ {
+ error_message = "invalid literal";
+ return token_type::parse_error;
+ }
+ }
+ return return_type;
+ }
+
+ /////////////////////
+ // input management
+ /////////////////////
+
+ /// reset token_buffer; current character is beginning of token
+ void reset() noexcept
+ {
+ token_buffer.clear();
+ token_string.clear();
+ token_string.push_back(std::char_traits<char>::to_char_type(current));
+ }
+
+ /*
+ @brief get next character from the input
+
+ This function provides the interface to the used input adapter. It does
+ not throw in case the input reached EOF, but returns a
+ `std::char_traits<char>::eof()` in that case. Stores the scanned characters
+ for use in error messages.
+
+ @return character read from the input
+ */
+ std::char_traits<char>::int_type get()
+ {
+ ++position.chars_read_total;
+ ++position.chars_read_current_line;
+
+ if (next_unget)
+ {
+ // just reset the next_unget variable and work with current
+ next_unget = false;
+ }
+ else
+ {
+ current = ia->get_character();
+ }
+
+ if (JSON_LIKELY(current != std::char_traits<char>::eof()))
+ {
+ token_string.push_back(std::char_traits<char>::to_char_type(current));
+ }
+
+ if (current == '\n')
+ {
+ ++position.lines_read;
+ position.chars_read_current_line = 0;
+ }
+
+ return current;
+ }
+
+ /*!
+ @brief unget current character (read it again on next get)
+
+ We implement unget by setting variable next_unget to true. The input is not
+ changed - we just simulate ungetting by modifying chars_read_total,
+ chars_read_current_line, and token_string. The next call to get() will
+ behave as if the unget character is read again.
+ */
+ void unget()
+ {
+ next_unget = true;
+
+ --position.chars_read_total;
+
+ // in case we "unget" a newline, we have to also decrement the lines_read
+ if (position.chars_read_current_line == 0)
+ {
+ if (position.lines_read > 0)
+ {
+ --position.lines_read;
+ }
+ }
+ else
+ {
+ --position.chars_read_current_line;
+ }
+
+ if (JSON_LIKELY(current != std::char_traits<char>::eof()))
+ {
+ assert(not token_string.empty());
+ token_string.pop_back();
+ }
+ }
+
+ /// add a character to token_buffer
+ void add(int c)
+ {
+ token_buffer.push_back(std::char_traits<char>::to_char_type(c));
+ }
+
+ public:
+ /////////////////////
+ // value getters
+ /////////////////////
+
+ /// return integer value
+ constexpr number_integer_t get_number_integer() const noexcept
+ {
+ return value_integer;
+ }
+
+ /// return unsigned integer value
+ constexpr number_unsigned_t get_number_unsigned() const noexcept
+ {
+ return value_unsigned;
+ }
+
+ /// return floating-point value
+ constexpr number_float_t get_number_float() const noexcept
+ {
+ return value_float;
+ }
+
+ /// return current string value (implicitly resets the token; useful only once)
+ string_t& get_string()
+ {
+ return token_buffer;
+ }
+
+ /////////////////////
+ // diagnostics
+ /////////////////////
+
+ /// return position of last read token
+ constexpr position_t get_position() const noexcept
+ {
+ return position;
+ }
+
+ /// return the last read token (for errors only). Will never contain EOF
+ /// (an arbitrary value that is not a valid char value, often -1), because
+ /// 255 may legitimately occur. May contain NUL, which should be escaped.
+ std::string get_token_string() const
+ {
+ // escape control characters
+ std::string result;
+ for (const auto c : token_string)
+ {
+ if ('\x00' <= c and c <= '\x1F')
+ {
+ // escape control characters
+ std::array<char, 9> cs{{}};
+ (std::snprintf)(cs.data(), cs.size(), "<U+%.4X>", static_cast<unsigned char>(c));
+ result += cs.data();
+ }
+ else
+ {
+ // add character as is
+ result.push_back(c);
+ }
+ }
+
+ return result;
+ }
+
+ /// return syntax error message
+ constexpr const char* get_error_message() const noexcept
+ {
+ return error_message;
+ }
+
+ /////////////////////
+ // actual scanner
+ /////////////////////
+
+ /*!
+ @brief skip the UTF-8 byte order mark
+ @return true iff there is no BOM or the correct BOM has been skipped
+ */
+ bool skip_bom()
+ {
+ if (get() == 0xEF)
+ {
+ // check if we completely parse the BOM
+ return get() == 0xBB and get() == 0xBF;
+ }
+
+ // the first character is not the beginning of the BOM; unget it to
+ // process is later
+ unget();
+ return true;
+ }
+
+ token_type scan()
+ {
+ // initially, skip the BOM
+ if (position.chars_read_total == 0 and not skip_bom())
+ {
+ error_message = "invalid BOM; must be 0xEF 0xBB 0xBF if given";
+ return token_type::parse_error;
+ }
+
+ // read next character and ignore whitespace
+ do
+ {
+ get();
+ }
+ while (current == ' ' or current == '\t' or current == '\n' or current == '\r');
+
+ switch (current)
+ {
+ // structural characters
+ case '[':
+ return token_type::begin_array;
+ case ']':
+ return token_type::end_array;
+ case '{':
+ return token_type::begin_object;
+ case '}':
+ return token_type::end_object;
+ case ':':
+ return token_type::name_separator;
+ case ',':
+ return token_type::value_separator;
+
+ // literals
+ case 't':
+ return scan_literal("true", 4, token_type::literal_true);
+ case 'f':
+ return scan_literal("false", 5, token_type::literal_false);
+ case 'n':
+ return scan_literal("null", 4, token_type::literal_null);
+
+ // string
+ case '\"':
+ return scan_string();
+
+ // number
+ case '-':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ return scan_number();
+
+ // end of input (the null byte is needed when parsing from
+ // string literals)
+ case '\0':
+ case std::char_traits<char>::eof():
+ return token_type::end_of_input;
+
+ // error
+ default:
+ error_message = "invalid literal";
+ return token_type::parse_error;
+ }
+ }
+
+ private:
+ /// input adapter
+ detail::input_adapter_t ia = nullptr;
+
+ /// the current character
+ std::char_traits<char>::int_type current = std::char_traits<char>::eof();
+
+ /// whether the next get() call should just return current
+ bool next_unget = false;
+
+ /// the start position of the current token
+ position_t position {};
+
+ /// raw input token string (for error messages)
+ std::vector<char> token_string {};
+
+ /// buffer for variable-length tokens (numbers, strings)
+ string_t token_buffer {};
+
+ /// a description of occurred lexer errors
+ const char* error_message = "";
+
+ // number values
+ number_integer_t value_integer = 0;
+ number_unsigned_t value_unsigned = 0;
+ number_float_t value_float = 0;
+
+ /// the decimal point
+ const char decimal_point_char = '.';
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/input/parser.hpp>
+
+
+#include <cassert> // assert
+#include <cmath> // isfinite
+#include <cstdint> // uint8_t
+#include <functional> // function
+#include <string> // string
+#include <utility> // move
+#include <vector> // vector
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+// #include <nlohmann/detail/input/input_adapters.hpp>
+
+// #include <nlohmann/detail/input/json_sax.hpp>
+
+// #include <nlohmann/detail/input/lexer.hpp>
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+// #include <nlohmann/detail/meta/is_sax.hpp>
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+////////////
+// parser //
+////////////
+
+/*!
+@brief syntax analysis
+
+This class implements a recursive decent parser.
+*/
+template<typename BasicJsonType>
+class parser
+{
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using string_t = typename BasicJsonType::string_t;
+ using lexer_t = lexer<BasicJsonType>;
+ using token_type = typename lexer_t::token_type;
+
+ public:
+ enum class parse_event_t : uint8_t
+ {
+ /// the parser read `{` and started to process a JSON object
+ object_start,
+ /// the parser read `}` and finished processing a JSON object
+ object_end,
+ /// the parser read `[` and started to process a JSON array
+ array_start,
+ /// the parser read `]` and finished processing a JSON array
+ array_end,
+ /// the parser read a key of a value in an object
+ key,
+ /// the parser finished reading a JSON value
+ value
+ };
+
+ using parser_callback_t =
+ std::function<bool(int depth, parse_event_t event, BasicJsonType& parsed)>;
+
+ /// a parser reading from an input adapter
+ explicit parser(detail::input_adapter_t&& adapter,
+ const parser_callback_t cb = nullptr,
+ const bool allow_exceptions_ = true)
+ : callback(cb), m_lexer(std::move(adapter)), allow_exceptions(allow_exceptions_)
+ {
+ // read first token
+ get_token();
+ }
+
+ /*!
+ @brief public parser interface
+
+ @param[in] strict whether to expect the last token to be EOF
+ @param[in,out] result parsed JSON value
+
+ @throw parse_error.101 in case of an unexpected token
+ @throw parse_error.102 if to_unicode fails or surrogate error
+ @throw parse_error.103 if to_unicode fails
+ */
+ void parse(const bool strict, BasicJsonType& result)
+ {
+ if (callback)
+ {
+ json_sax_dom_callback_parser<BasicJsonType> sdp(result, callback, allow_exceptions);
+ sax_parse_internal(&sdp);
+ result.assert_invariant();
+
+ // in strict mode, input must be completely read
+ if (strict and (get_token() != token_type::end_of_input))
+ {
+ sdp.parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::end_of_input, "value")));
+ }
+
+ // in case of an error, return discarded value
+ if (sdp.is_errored())
+ {
+ result = value_t::discarded;
+ return;
+ }
+
+ // set top-level value to null if it was discarded by the callback
+ // function
+ if (result.is_discarded())
+ {
+ result = nullptr;
+ }
+ }
+ else
+ {
+ json_sax_dom_parser<BasicJsonType> sdp(result, allow_exceptions);
+ sax_parse_internal(&sdp);
+ result.assert_invariant();
+
+ // in strict mode, input must be completely read
+ if (strict and (get_token() != token_type::end_of_input))
+ {
+ sdp.parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::end_of_input, "value")));
+ }
+
+ // in case of an error, return discarded value
+ if (sdp.is_errored())
+ {
+ result = value_t::discarded;
+ return;
+ }
+ }
+ }
+
+ /*!
+ @brief public accept interface
+
+ @param[in] strict whether to expect the last token to be EOF
+ @return whether the input is a proper JSON text
+ */
+ bool accept(const bool strict = true)
+ {
+ json_sax_acceptor<BasicJsonType> sax_acceptor;
+ return sax_parse(&sax_acceptor, strict);
+ }
+
+ template <typename SAX>
+ bool sax_parse(SAX* sax, const bool strict = true)
+ {
+ (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
+ const bool result = sax_parse_internal(sax);
+
+ // strict mode: next byte must be EOF
+ if (result and strict and (get_token() != token_type::end_of_input))
+ {
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::end_of_input, "value")));
+ }
+
+ return result;
+ }
+
+ private:
+ template <typename SAX>
+ bool sax_parse_internal(SAX* sax)
+ {
+ // stack to remember the hierarchy of structured values we are parsing
+ // true = array; false = object
+ std::vector<bool> states;
+ // value to avoid a goto (see comment where set to true)
+ bool skip_to_state_evaluation = false;
+
+ while (true)
+ {
+ if (not skip_to_state_evaluation)
+ {
+ // invariant: get_token() was called before each iteration
+ switch (last_token)
+ {
+ case token_type::begin_object:
+ {
+ if (JSON_UNLIKELY(not sax->start_object(std::size_t(-1))))
+ {
+ return false;
+ }
+
+ // closing } -> we are done
+ if (get_token() == token_type::end_object)
+ {
+ if (JSON_UNLIKELY(not sax->end_object()))
+ {
+ return false;
+ }
+ break;
+ }
+
+ // parse key
+ if (JSON_UNLIKELY(last_token != token_type::value_string))
+ {
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::value_string, "object key")));
+ }
+ if (JSON_UNLIKELY(not sax->key(m_lexer.get_string())))
+ {
+ return false;
+ }
+
+ // parse separator (:)
+ if (JSON_UNLIKELY(get_token() != token_type::name_separator))
+ {
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::name_separator, "object separator")));
+ }
+
+ // remember we are now inside an object
+ states.push_back(false);
+
+ // parse values
+ get_token();
+ continue;
+ }
+
+ case token_type::begin_array:
+ {
+ if (JSON_UNLIKELY(not sax->start_array(std::size_t(-1))))
+ {
+ return false;
+ }
+
+ // closing ] -> we are done
+ if (get_token() == token_type::end_array)
+ {
+ if (JSON_UNLIKELY(not sax->end_array()))
+ {
+ return false;
+ }
+ break;
+ }
+
+ // remember we are now inside an array
+ states.push_back(true);
+
+ // parse values (no need to call get_token)
+ continue;
+ }
+
+ case token_type::value_float:
+ {
+ const auto res = m_lexer.get_number_float();
+
+ if (JSON_UNLIKELY(not std::isfinite(res)))
+ {
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ out_of_range::create(406, "number overflow parsing '" + m_lexer.get_token_string() + "'"));
+ }
+
+ if (JSON_UNLIKELY(not sax->number_float(res, m_lexer.get_string())))
+ {
+ return false;
+ }
+
+ break;
+ }
+
+ case token_type::literal_false:
+ {
+ if (JSON_UNLIKELY(not sax->boolean(false)))
+ {
+ return false;
+ }
+ break;
+ }
+
+ case token_type::literal_null:
+ {
+ if (JSON_UNLIKELY(not sax->null()))
+ {
+ return false;
+ }
+ break;
+ }
+
+ case token_type::literal_true:
+ {
+ if (JSON_UNLIKELY(not sax->boolean(true)))
+ {
+ return false;
+ }
+ break;
+ }
+
+ case token_type::value_integer:
+ {
+ if (JSON_UNLIKELY(not sax->number_integer(m_lexer.get_number_integer())))
+ {
+ return false;
+ }
+ break;
+ }
+
+ case token_type::value_string:
+ {
+ if (JSON_UNLIKELY(not sax->string(m_lexer.get_string())))
+ {
+ return false;
+ }
+ break;
+ }
+
+ case token_type::value_unsigned:
+ {
+ if (JSON_UNLIKELY(not sax->number_unsigned(m_lexer.get_number_unsigned())))
+ {
+ return false;
+ }
+ break;
+ }
+
+ case token_type::parse_error:
+ {
+ // using "uninitialized" to avoid "expected" message
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::uninitialized, "value")));
+ }
+
+ default: // the last token was unexpected
+ {
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::literal_or_value, "value")));
+ }
+ }
+ }
+ else
+ {
+ skip_to_state_evaluation = false;
+ }
+
+ // we reached this line after we successfully parsed a value
+ if (states.empty())
+ {
+ // empty stack: we reached the end of the hierarchy: done
+ return true;
+ }
+
+ if (states.back()) // array
+ {
+ // comma -> next value
+ if (get_token() == token_type::value_separator)
+ {
+ // parse a new value
+ get_token();
+ continue;
+ }
+
+ // closing ]
+ if (JSON_LIKELY(last_token == token_type::end_array))
+ {
+ if (JSON_UNLIKELY(not sax->end_array()))
+ {
+ return false;
+ }
+
+ // We are done with this array. Before we can parse a
+ // new value, we need to evaluate the new state first.
+ // By setting skip_to_state_evaluation to false, we
+ // are effectively jumping to the beginning of this if.
+ assert(not states.empty());
+ states.pop_back();
+ skip_to_state_evaluation = true;
+ continue;
+ }
+
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::end_array, "array")));
+ }
+ else // object
+ {
+ // comma -> next value
+ if (get_token() == token_type::value_separator)
+ {
+ // parse key
+ if (JSON_UNLIKELY(get_token() != token_type::value_string))
+ {
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::value_string, "object key")));
+ }
+
+ if (JSON_UNLIKELY(not sax->key(m_lexer.get_string())))
+ {
+ return false;
+ }
+
+ // parse separator (:)
+ if (JSON_UNLIKELY(get_token() != token_type::name_separator))
+ {
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::name_separator, "object separator")));
+ }
+
+ // parse values
+ get_token();
+ continue;
+ }
+
+ // closing }
+ if (JSON_LIKELY(last_token == token_type::end_object))
+ {
+ if (JSON_UNLIKELY(not sax->end_object()))
+ {
+ return false;
+ }
+
+ // We are done with this object. Before we can parse a
+ // new value, we need to evaluate the new state first.
+ // By setting skip_to_state_evaluation to false, we
+ // are effectively jumping to the beginning of this if.
+ assert(not states.empty());
+ states.pop_back();
+ skip_to_state_evaluation = true;
+ continue;
+ }
+
+ return sax->parse_error(m_lexer.get_position(),
+ m_lexer.get_token_string(),
+ parse_error::create(101, m_lexer.get_position(),
+ exception_message(token_type::end_object, "object")));
+ }
+ }
+ }
+
+ /// get next token from lexer
+ token_type get_token()
+ {
+ return last_token = m_lexer.scan();
+ }
+
+ std::string exception_message(const token_type expected, const std::string& context)
+ {
+ std::string error_msg = "syntax error ";
+
+ if (not context.empty())
+ {
+ error_msg += "while parsing " + context + " ";
+ }
+
+ error_msg += "- ";
+
+ if (last_token == token_type::parse_error)
+ {
+ error_msg += std::string(m_lexer.get_error_message()) + "; last read: '" +
+ m_lexer.get_token_string() + "'";
+ }
+ else
+ {
+ error_msg += "unexpected " + std::string(lexer_t::token_type_name(last_token));
+ }
+
+ if (expected != token_type::uninitialized)
+ {
+ error_msg += "; expected " + std::string(lexer_t::token_type_name(expected));
+ }
+
+ return error_msg;
+ }
+
+ private:
+ /// callback function
+ const parser_callback_t callback = nullptr;
+ /// the type of the last read token
+ token_type last_token = token_type::uninitialized;
+ /// the lexer
+ lexer_t m_lexer;
+ /// whether to throw exceptions in case of errors
+ const bool allow_exceptions = true;
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/iterators/internal_iterator.hpp>
+
+
+// #include <nlohmann/detail/iterators/primitive_iterator.hpp>
+
+
+#include <cstddef> // ptrdiff_t
+#include <limits> // numeric_limits
+
+namespace nlohmann
+{
+namespace detail
+{
+/*
+@brief an iterator for primitive JSON types
+
+This class models an iterator for primitive JSON types (boolean, number,
+string). It's only purpose is to allow the iterator/const_iterator classes
+to "iterate" over primitive values. Internally, the iterator is modeled by
+a `difference_type` variable. Value begin_value (`0`) models the begin,
+end_value (`1`) models past the end.
+*/
+class primitive_iterator_t
+{
+ private:
+ using difference_type = std::ptrdiff_t;
+ static constexpr difference_type begin_value = 0;
+ static constexpr difference_type end_value = begin_value + 1;
+
+ /// iterator as signed integer type
+ difference_type m_it = (std::numeric_limits<std::ptrdiff_t>::min)();
+
+ public:
+ constexpr difference_type get_value() const noexcept
+ {
+ return m_it;
+ }
+
+ /// set iterator to a defined beginning
+ void set_begin() noexcept
+ {
+ m_it = begin_value;
+ }
+
+ /// set iterator to a defined past the end
+ void set_end() noexcept
+ {
+ m_it = end_value;
+ }
+
+ /// return whether the iterator can be dereferenced
+ constexpr bool is_begin() const noexcept
+ {
+ return m_it == begin_value;
+ }
+
+ /// return whether the iterator is at end
+ constexpr bool is_end() const noexcept
+ {
+ return m_it == end_value;
+ }
+
+ friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
+ {
+ return lhs.m_it == rhs.m_it;
+ }
+
+ friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
+ {
+ return lhs.m_it < rhs.m_it;
+ }
+
+ primitive_iterator_t operator+(difference_type n) noexcept
+ {
+ auto result = *this;
+ result += n;
+ return result;
+ }
+
+ friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
+ {
+ return lhs.m_it - rhs.m_it;
+ }
+
+ primitive_iterator_t& operator++() noexcept
+ {
+ ++m_it;
+ return *this;
+ }
+
+ primitive_iterator_t const operator++(int) noexcept
+ {
+ auto result = *this;
+ ++m_it;
+ return result;
+ }
+
+ primitive_iterator_t& operator--() noexcept
+ {
+ --m_it;
+ return *this;
+ }
+
+ primitive_iterator_t const operator--(int) noexcept
+ {
+ auto result = *this;
+ --m_it;
+ return result;
+ }
+
+ primitive_iterator_t& operator+=(difference_type n) noexcept
+ {
+ m_it += n;
+ return *this;
+ }
+
+ primitive_iterator_t& operator-=(difference_type n) noexcept
+ {
+ m_it -= n;
+ return *this;
+ }
+};
+} // namespace detail
+} // namespace nlohmann
+
+
+namespace nlohmann
+{
+namespace detail
+{
+/*!
+@brief an iterator value
+
+@note This structure could easily be a union, but MSVC currently does not allow
+unions members with complex constructors, see https://github.com/nlohmann/json/pull/105.
+*/
+template<typename BasicJsonType> struct internal_iterator
+{
+ /// iterator for JSON objects
+ typename BasicJsonType::object_t::iterator object_iterator {};
+ /// iterator for JSON arrays
+ typename BasicJsonType::array_t::iterator array_iterator {};
+ /// generic iterator for all other types
+ primitive_iterator_t primitive_iterator {};
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/iterators/iter_impl.hpp>
+
+
+#include <ciso646> // not
+#include <iterator> // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next
+#include <type_traits> // conditional, is_const, remove_const
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+// #include <nlohmann/detail/iterators/internal_iterator.hpp>
+
+// #include <nlohmann/detail/iterators/primitive_iterator.hpp>
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+// #include <nlohmann/detail/meta/cpp_future.hpp>
+
+// #include <nlohmann/detail/meta/type_traits.hpp>
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+// forward declare, to be able to friend it later on
+template<typename IteratorType> class iteration_proxy;
+template<typename IteratorType> class iteration_proxy_value;
+
+/*!
+@brief a template for a bidirectional iterator for the @ref basic_json class
+This class implements a both iterators (iterator and const_iterator) for the
+@ref basic_json class.
+@note An iterator is called *initialized* when a pointer to a JSON value has
+ been set (e.g., by a constructor or a copy assignment). If the iterator is
+ default-constructed, it is *uninitialized* and most methods are undefined.
+ **The library uses assertions to detect calls on uninitialized iterators.**
+@requirement The class satisfies the following concept requirements:
+-
+[BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator):
+ The iterator that can be moved can be moved in both directions (i.e.
+ incremented and decremented).
+@since version 1.0.0, simplified in version 2.0.9, change to bidirectional
+ iterators in version 3.0.0 (see https://github.com/nlohmann/json/issues/593)
+*/
+template<typename BasicJsonType>
+class iter_impl
+{
+ /// allow basic_json to access private members
+ friend iter_impl<typename std::conditional<std::is_const<BasicJsonType>::value, typename std::remove_const<BasicJsonType>::type, const BasicJsonType>::type>;
+ friend BasicJsonType;
+ friend iteration_proxy<iter_impl>;
+ friend iteration_proxy_value<iter_impl>;
+
+ using object_t = typename BasicJsonType::object_t;
+ using array_t = typename BasicJsonType::array_t;
+ // make sure BasicJsonType is basic_json or const basic_json
+ static_assert(is_basic_json<typename std::remove_const<BasicJsonType>::type>::value,
+ "iter_impl only accepts (const) basic_json");
+
+ public:
+
+ /// The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17.
+ /// The C++ Standard has never required user-defined iterators to derive from std::iterator.
+ /// A user-defined iterator should provide publicly accessible typedefs named
+ /// iterator_category, value_type, difference_type, pointer, and reference.
+ /// Note that value_type is required to be non-const, even for constant iterators.
+ using iterator_category = std::bidirectional_iterator_tag;
+
+ /// the type of the values when the iterator is dereferenced
+ using value_type = typename BasicJsonType::value_type;
+ /// a type to represent differences between iterators
+ using difference_type = typename BasicJsonType::difference_type;
+ /// defines a pointer to the type iterated over (value_type)
+ using pointer = typename std::conditional<std::is_const<BasicJsonType>::value,
+ typename BasicJsonType::const_pointer,
+ typename BasicJsonType::pointer>::type;
+ /// defines a reference to the type iterated over (value_type)
+ using reference =
+ typename std::conditional<std::is_const<BasicJsonType>::value,
+ typename BasicJsonType::const_reference,
+ typename BasicJsonType::reference>::type;
+
+ /// default constructor
+ iter_impl() = default;
+
+ /*!
+ @brief constructor for a given JSON instance
+ @param[in] object pointer to a JSON object for this iterator
+ @pre object != nullptr
+ @post The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ explicit iter_impl(pointer object) noexcept : m_object(object)
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ {
+ m_it.object_iterator = typename object_t::iterator();
+ break;
+ }
+
+ case value_t::array:
+ {
+ m_it.array_iterator = typename array_t::iterator();
+ break;
+ }
+
+ default:
+ {
+ m_it.primitive_iterator = primitive_iterator_t();
+ break;
+ }
+ }
+ }
+
+ /*!
+ @note The conventional copy constructor and copy assignment are implicitly
+ defined. Combined with the following converting constructor and
+ assignment, they support: (1) copy from iterator to iterator, (2)
+ copy from const iterator to const iterator, and (3) conversion from
+ iterator to const iterator. However conversion from const iterator
+ to iterator is not defined.
+ */
+
+ /*!
+ @brief converting constructor
+ @param[in] other non-const iterator to copy from
+ @note It is not checked whether @a other is initialized.
+ */
+ iter_impl(const iter_impl<typename std::remove_const<BasicJsonType>::type>& other) noexcept
+ : m_object(other.m_object), m_it(other.m_it) {}
+
+ /*!
+ @brief converting assignment
+ @param[in,out] other non-const iterator to copy from
+ @return const/non-const iterator
+ @note It is not checked whether @a other is initialized.
+ */
+ iter_impl& operator=(const iter_impl<typename std::remove_const<BasicJsonType>::type>& other) noexcept
+ {
+ m_object = other.m_object;
+ m_it = other.m_it;
+ return *this;
+ }
+
+ private:
+ /*!
+ @brief set the iterator to the first value
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ void set_begin() noexcept
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ {
+ m_it.object_iterator = m_object->m_value.object->begin();
+ break;
+ }
+
+ case value_t::array:
+ {
+ m_it.array_iterator = m_object->m_value.array->begin();
+ break;
+ }
+
+ case value_t::null:
+ {
+ // set to end so begin()==end() is true: null is empty
+ m_it.primitive_iterator.set_end();
+ break;
+ }
+
+ default:
+ {
+ m_it.primitive_iterator.set_begin();
+ break;
+ }
+ }
+ }
+
+ /*!
+ @brief set the iterator past the last value
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ void set_end() noexcept
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ {
+ m_it.object_iterator = m_object->m_value.object->end();
+ break;
+ }
+
+ case value_t::array:
+ {
+ m_it.array_iterator = m_object->m_value.array->end();
+ break;
+ }
+
+ default:
+ {
+ m_it.primitive_iterator.set_end();
+ break;
+ }
+ }
+ }
+
+ public:
+ /*!
+ @brief return a reference to the value pointed to by the iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ reference operator*() const
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ {
+ assert(m_it.object_iterator != m_object->m_value.object->end());
+ return m_it.object_iterator->second;
+ }
+
+ case value_t::array:
+ {
+ assert(m_it.array_iterator != m_object->m_value.array->end());
+ return *m_it.array_iterator;
+ }
+
+ case value_t::null:
+ JSON_THROW(invalid_iterator::create(214, "cannot get value"));
+
+ default:
+ {
+ if (JSON_LIKELY(m_it.primitive_iterator.is_begin()))
+ {
+ return *m_object;
+ }
+
+ JSON_THROW(invalid_iterator::create(214, "cannot get value"));
+ }
+ }
+ }
+
+ /*!
+ @brief dereference the iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ pointer operator->() const
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ {
+ assert(m_it.object_iterator != m_object->m_value.object->end());
+ return &(m_it.object_iterator->second);
+ }
+
+ case value_t::array:
+ {
+ assert(m_it.array_iterator != m_object->m_value.array->end());
+ return &*m_it.array_iterator;
+ }
+
+ default:
+ {
+ if (JSON_LIKELY(m_it.primitive_iterator.is_begin()))
+ {
+ return m_object;
+ }
+
+ JSON_THROW(invalid_iterator::create(214, "cannot get value"));
+ }
+ }
+ }
+
+ /*!
+ @brief post-increment (it++)
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl const operator++(int)
+ {
+ auto result = *this;
+ ++(*this);
+ return result;
+ }
+
+ /*!
+ @brief pre-increment (++it)
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl& operator++()
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ {
+ std::advance(m_it.object_iterator, 1);
+ break;
+ }
+
+ case value_t::array:
+ {
+ std::advance(m_it.array_iterator, 1);
+ break;
+ }
+
+ default:
+ {
+ ++m_it.primitive_iterator;
+ break;
+ }
+ }
+
+ return *this;
+ }
+
+ /*!
+ @brief post-decrement (it--)
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl const operator--(int)
+ {
+ auto result = *this;
+ --(*this);
+ return result;
+ }
+
+ /*!
+ @brief pre-decrement (--it)
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl& operator--()
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ {
+ std::advance(m_it.object_iterator, -1);
+ break;
+ }
+
+ case value_t::array:
+ {
+ std::advance(m_it.array_iterator, -1);
+ break;
+ }
+
+ default:
+ {
+ --m_it.primitive_iterator;
+ break;
+ }
+ }
+
+ return *this;
+ }
+
+ /*!
+ @brief comparison: equal
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ bool operator==(const iter_impl& other) const
+ {
+ // if objects are not the same, the comparison is undefined
+ if (JSON_UNLIKELY(m_object != other.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers"));
+ }
+
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ return (m_it.object_iterator == other.m_it.object_iterator);
+
+ case value_t::array:
+ return (m_it.array_iterator == other.m_it.array_iterator);
+
+ default:
+ return (m_it.primitive_iterator == other.m_it.primitive_iterator);
+ }
+ }
+
+ /*!
+ @brief comparison: not equal
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ bool operator!=(const iter_impl& other) const
+ {
+ return not operator==(other);
+ }
+
+ /*!
+ @brief comparison: smaller
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ bool operator<(const iter_impl& other) const
+ {
+ // if objects are not the same, the comparison is undefined
+ if (JSON_UNLIKELY(m_object != other.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers"));
+ }
+
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ JSON_THROW(invalid_iterator::create(213, "cannot compare order of object iterators"));
+
+ case value_t::array:
+ return (m_it.array_iterator < other.m_it.array_iterator);
+
+ default:
+ return (m_it.primitive_iterator < other.m_it.primitive_iterator);
+ }
+ }
+
+ /*!
+ @brief comparison: less than or equal
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ bool operator<=(const iter_impl& other) const
+ {
+ return not other.operator < (*this);
+ }
+
+ /*!
+ @brief comparison: greater than
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ bool operator>(const iter_impl& other) const
+ {
+ return not operator<=(other);
+ }
+
+ /*!
+ @brief comparison: greater than or equal
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ bool operator>=(const iter_impl& other) const
+ {
+ return not operator<(other);
+ }
+
+ /*!
+ @brief add to iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl& operator+=(difference_type i)
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators"));
+
+ case value_t::array:
+ {
+ std::advance(m_it.array_iterator, i);
+ break;
+ }
+
+ default:
+ {
+ m_it.primitive_iterator += i;
+ break;
+ }
+ }
+
+ return *this;
+ }
+
+ /*!
+ @brief subtract from iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl& operator-=(difference_type i)
+ {
+ return operator+=(-i);
+ }
+
+ /*!
+ @brief add to iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl operator+(difference_type i) const
+ {
+ auto result = *this;
+ result += i;
+ return result;
+ }
+
+ /*!
+ @brief addition of distance and iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ friend iter_impl operator+(difference_type i, const iter_impl& it)
+ {
+ auto result = it;
+ result += i;
+ return result;
+ }
+
+ /*!
+ @brief subtract from iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ iter_impl operator-(difference_type i) const
+ {
+ auto result = *this;
+ result -= i;
+ return result;
+ }
+
+ /*!
+ @brief return difference
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ difference_type operator-(const iter_impl& other) const
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators"));
+
+ case value_t::array:
+ return m_it.array_iterator - other.m_it.array_iterator;
+
+ default:
+ return m_it.primitive_iterator - other.m_it.primitive_iterator;
+ }
+ }
+
+ /*!
+ @brief access to successor
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ reference operator[](difference_type n) const
+ {
+ assert(m_object != nullptr);
+
+ switch (m_object->m_type)
+ {
+ case value_t::object:
+ JSON_THROW(invalid_iterator::create(208, "cannot use operator[] for object iterators"));
+
+ case value_t::array:
+ return *std::next(m_it.array_iterator, n);
+
+ case value_t::null:
+ JSON_THROW(invalid_iterator::create(214, "cannot get value"));
+
+ default:
+ {
+ if (JSON_LIKELY(m_it.primitive_iterator.get_value() == -n))
+ {
+ return *m_object;
+ }
+
+ JSON_THROW(invalid_iterator::create(214, "cannot get value"));
+ }
+ }
+ }
+
+ /*!
+ @brief return the key of an object iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ const typename object_t::key_type& key() const
+ {
+ assert(m_object != nullptr);
+
+ if (JSON_LIKELY(m_object->is_object()))
+ {
+ return m_it.object_iterator->first;
+ }
+
+ JSON_THROW(invalid_iterator::create(207, "cannot use key() for non-object iterators"));
+ }
+
+ /*!
+ @brief return the value of an iterator
+ @pre The iterator is initialized; i.e. `m_object != nullptr`.
+ */
+ reference value() const
+ {
+ return operator*();
+ }
+
+ private:
+ /// associated JSON instance
+ pointer m_object = nullptr;
+ /// the actual iterator of the associated instance
+ internal_iterator<typename std::remove_const<BasicJsonType>::type> m_it {};
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/iterators/iteration_proxy.hpp>
+
+// #include <nlohmann/detail/iterators/json_reverse_iterator.hpp>
+
+
+#include <cstddef> // ptrdiff_t
+#include <iterator> // reverse_iterator
+#include <utility> // declval
+
+namespace nlohmann
+{
+namespace detail
+{
+//////////////////////
+// reverse_iterator //
+//////////////////////
+
+/*!
+@brief a template for a reverse iterator class
+
+@tparam Base the base iterator type to reverse. Valid types are @ref
+iterator (to create @ref reverse_iterator) and @ref const_iterator (to
+create @ref const_reverse_iterator).
+
+@requirement The class satisfies the following concept requirements:
+-
+[BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator):
+ The iterator that can be moved can be moved in both directions (i.e.
+ incremented and decremented).
+- [OutputIterator](https://en.cppreference.com/w/cpp/named_req/OutputIterator):
+ It is possible to write to the pointed-to element (only if @a Base is
+ @ref iterator).
+
+@since version 1.0.0
+*/
+template<typename Base>
+class json_reverse_iterator : public std::reverse_iterator<Base>
+{
+ public:
+ using difference_type = std::ptrdiff_t;
+ /// shortcut to the reverse iterator adapter
+ using base_iterator = std::reverse_iterator<Base>;
+ /// the reference type for the pointed-to element
+ using reference = typename Base::reference;
+
+ /// create reverse iterator from iterator
+ explicit json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept
+ : base_iterator(it) {}
+
+ /// create reverse iterator from base class
+ explicit json_reverse_iterator(const base_iterator& it) noexcept : base_iterator(it) {}
+
+ /// post-increment (it++)
+ json_reverse_iterator const operator++(int)
+ {
+ return static_cast<json_reverse_iterator>(base_iterator::operator++(1));
+ }
+
+ /// pre-increment (++it)
+ json_reverse_iterator& operator++()
+ {
+ return static_cast<json_reverse_iterator&>(base_iterator::operator++());
+ }
+
+ /// post-decrement (it--)
+ json_reverse_iterator const operator--(int)
+ {
+ return static_cast<json_reverse_iterator>(base_iterator::operator--(1));
+ }
+
+ /// pre-decrement (--it)
+ json_reverse_iterator& operator--()
+ {
+ return static_cast<json_reverse_iterator&>(base_iterator::operator--());
+ }
+
+ /// add to iterator
+ json_reverse_iterator& operator+=(difference_type i)
+ {
+ return static_cast<json_reverse_iterator&>(base_iterator::operator+=(i));
+ }
+
+ /// add to iterator
+ json_reverse_iterator operator+(difference_type i) const
+ {
+ return static_cast<json_reverse_iterator>(base_iterator::operator+(i));
+ }
+
+ /// subtract from iterator
+ json_reverse_iterator operator-(difference_type i) const
+ {
+ return static_cast<json_reverse_iterator>(base_iterator::operator-(i));
+ }
+
+ /// return difference
+ difference_type operator-(const json_reverse_iterator& other) const
+ {
+ return base_iterator(*this) - base_iterator(other);
+ }
+
+ /// access to successor
+ reference operator[](difference_type n) const
+ {
+ return *(this->operator+(n));
+ }
+
+ /// return the key of an object iterator
+ auto key() const -> decltype(std::declval<Base>().key())
+ {
+ auto it = --this->base();
+ return it.key();
+ }
+
+ /// return the value of an iterator
+ reference value() const
+ {
+ auto it = --this->base();
+ return it.operator * ();
+ }
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/iterators/primitive_iterator.hpp>
+
+// #include <nlohmann/detail/json_pointer.hpp>
+
+
+#include <algorithm> // all_of
+#include <cassert> // assert
+#include <numeric> // accumulate
+#include <string> // string
+#include <utility> // move
+#include <vector> // vector
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+namespace nlohmann
+{
+template<typename BasicJsonType>
+class json_pointer
+{
+ // allow basic_json to access private members
+ NLOHMANN_BASIC_JSON_TPL_DECLARATION
+ friend class basic_json;
+
+ public:
+ /*!
+ @brief create JSON pointer
+
+ Create a JSON pointer according to the syntax described in
+ [Section 3 of RFC6901](https://tools.ietf.org/html/rfc6901#section-3).
+
+ @param[in] s string representing the JSON pointer; if omitted, the empty
+ string is assumed which references the whole JSON value
+
+ @throw parse_error.107 if the given JSON pointer @a s is nonempty and does
+ not begin with a slash (`/`); see example below
+
+ @throw parse_error.108 if a tilde (`~`) in the given JSON pointer @a s is
+ not followed by `0` (representing `~`) or `1` (representing `/`); see
+ example below
+
+ @liveexample{The example shows the construction several valid JSON pointers
+ as well as the exceptional behavior.,json_pointer}
+
+ @since version 2.0.0
+ */
+ explicit json_pointer(const std::string& s = "")
+ : reference_tokens(split(s))
+ {}
+
+ /*!
+ @brief return a string representation of the JSON pointer
+
+ @invariant For each JSON pointer `ptr`, it holds:
+ @code {.cpp}
+ ptr == json_pointer(ptr.to_string());
+ @endcode
+
+ @return a string representation of the JSON pointer
+
+ @liveexample{The example shows the result of `to_string`.,json_pointer__to_string}
+
+ @since version 2.0.0
+ */
+ std::string to_string() const
+ {
+ return std::accumulate(reference_tokens.begin(), reference_tokens.end(),
+ std::string{},
+ [](const std::string & a, const std::string & b)
+ {
+ return a + "/" + escape(b);
+ });
+ }
+
+ /// @copydoc to_string()
+ operator std::string() const
+ {
+ return to_string();
+ }
+
+ /*!
+ @brief append another JSON pointer at the end of this JSON pointer
+
+ @param[in] ptr JSON pointer to append
+ @return JSON pointer with @a ptr appended
+
+ @liveexample{The example shows the usage of `operator/=`.,json_pointer__operator_add}
+
+ @complexity Linear in the length of @a ptr.
+
+ @sa @ref operator/=(std::string) to append a reference token
+ @sa @ref operator/=(std::size_t) to append an array index
+ @sa @ref operator/(const json_pointer&, const json_pointer&) for a binary operator
+
+ @since version 3.6.0
+ */
+ json_pointer& operator/=(const json_pointer& ptr)
+ {
+ reference_tokens.insert(reference_tokens.end(),
+ ptr.reference_tokens.begin(),
+ ptr.reference_tokens.end());
+ return *this;
+ }
+
+ /*!
+ @brief append an unescaped reference token at the end of this JSON pointer
+
+ @param[in] token reference token to append
+ @return JSON pointer with @a token appended without escaping @a token
+
+ @liveexample{The example shows the usage of `operator/=`.,json_pointer__operator_add}
+
+ @complexity Amortized constant.
+
+ @sa @ref operator/=(const json_pointer&) to append a JSON pointer
+ @sa @ref operator/=(std::size_t) to append an array index
+ @sa @ref operator/(const json_pointer&, std::size_t) for a binary operator
+
+ @since version 3.6.0
+ */
+ json_pointer& operator/=(std::string token)
+ {
+ push_back(std::move(token));
+ return *this;
+ }
+
+ /*!
+ @brief append an array index at the end of this JSON pointer
+
+ @param[in] array_index array index ot append
+ @return JSON pointer with @a array_index appended
+
+ @liveexample{The example shows the usage of `operator/=`.,json_pointer__operator_add}
+
+ @complexity Amortized constant.
+
+ @sa @ref operator/=(const json_pointer&) to append a JSON pointer
+ @sa @ref operator/=(std::string) to append a reference token
+ @sa @ref operator/(const json_pointer&, std::string) for a binary operator
+
+ @since version 3.6.0
+ */
+ json_pointer& operator/=(std::size_t array_index)
+ {
+ return *this /= std::to_string(array_index);
+ }
+
+ /*!
+ @brief create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer
+
+ @param[in] lhs JSON pointer
+ @param[in] rhs JSON pointer
+ @return a new JSON pointer with @a rhs appended to @a lhs
+
+ @liveexample{The example shows the usage of `operator/`.,json_pointer__operator_add_binary}
+
+ @complexity Linear in the length of @a lhs and @a rhs.
+
+ @sa @ref operator/=(const json_pointer&) to append a JSON pointer
+
+ @since version 3.6.0
+ */
+ friend json_pointer operator/(const json_pointer& lhs,
+ const json_pointer& rhs)
+ {
+ return json_pointer(lhs) /= rhs;
+ }
+
+ /*!
+ @brief create a new JSON pointer by appending the unescaped token at the end of the JSON pointer
+
+ @param[in] ptr JSON pointer
+ @param[in] token reference token
+ @return a new JSON pointer with unescaped @a token appended to @a ptr
+
+ @liveexample{The example shows the usage of `operator/`.,json_pointer__operator_add_binary}
+
+ @complexity Linear in the length of @a ptr.
+
+ @sa @ref operator/=(std::string) to append a reference token
+
+ @since version 3.6.0
+ */
+ friend json_pointer operator/(const json_pointer& ptr, std::string token)
+ {
+ return json_pointer(ptr) /= std::move(token);
+ }
+
+ /*!
+ @brief create a new JSON pointer by appending the array-index-token at the end of the JSON pointer
+
+ @param[in] ptr JSON pointer
+ @param[in] array_index array index
+ @return a new JSON pointer with @a array_index appended to @a ptr
+
+ @liveexample{The example shows the usage of `operator/`.,json_pointer__operator_add_binary}
+
+ @complexity Linear in the length of @a ptr.
+
+ @sa @ref operator/=(std::size_t) to append an array index
+
+ @since version 3.6.0
+ */
+ friend json_pointer operator/(const json_pointer& ptr, std::size_t array_index)
+ {
+ return json_pointer(ptr) /= array_index;
+ }
+
+ /*!
+ @brief returns the parent of this JSON pointer
+
+ @return parent of this JSON pointer; in case this JSON pointer is the root,
+ the root itself is returned
+
+ @complexity Linear in the length of the JSON pointer.
+
+ @liveexample{The example shows the result of `parent_pointer` for different
+ JSON Pointers.,json_pointer__parent_pointer}
+
+ @since version 3.6.0
+ */
+ json_pointer parent_pointer() const
+ {
+ if (empty())
+ {
+ return *this;
+ }
+
+ json_pointer res = *this;
+ res.pop_back();
+ return res;
+ }
+
+ /*!
+ @brief remove last reference token
+
+ @pre not `empty()`
+
+ @liveexample{The example shows the usage of `pop_back`.,json_pointer__pop_back}
+
+ @complexity Constant.
+
+ @throw out_of_range.405 if JSON pointer has no parent
+
+ @since version 3.6.0
+ */
+ void pop_back()
+ {
+ if (JSON_UNLIKELY(empty()))
+ {
+ JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent"));
+ }
+
+ reference_tokens.pop_back();
+ }
+
+ /*!
+ @brief return last reference token
+
+ @pre not `empty()`
+ @return last reference token
+
+ @liveexample{The example shows the usage of `back`.,json_pointer__back}
+
+ @complexity Constant.
+
+ @throw out_of_range.405 if JSON pointer has no parent
+
+ @since version 3.6.0
+ */
+ const std::string& back()
+ {
+ if (JSON_UNLIKELY(empty()))
+ {
+ JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent"));
+ }
+
+ return reference_tokens.back();
+ }
+
+ /*!
+ @brief append an unescaped token at the end of the reference pointer
+
+ @param[in] token token to add
+
+ @complexity Amortized constant.
+
+ @liveexample{The example shows the result of `push_back` for different
+ JSON Pointers.,json_pointer__push_back}
+
+ @since version 3.6.0
+ */
+ void push_back(const std::string& token)
+ {
+ reference_tokens.push_back(token);
+ }
+
+ /// @copydoc push_back(const std::string&)
+ void push_back(std::string&& token)
+ {
+ reference_tokens.push_back(std::move(token));
+ }
+
+ /*!
+ @brief return whether pointer points to the root document
+
+ @return true iff the JSON pointer points to the root document
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @liveexample{The example shows the result of `empty` for different JSON
+ Pointers.,json_pointer__empty}
+
+ @since version 3.6.0
+ */
+ bool empty() const noexcept
+ {
+ return reference_tokens.empty();
+ }
+
+ private:
+ /*!
+ @param[in] s reference token to be converted into an array index
+
+ @return integer representation of @a s
+
+ @throw out_of_range.404 if string @a s could not be converted to an integer
+ */
+ static int array_index(const std::string& s)
+ {
+ std::size_t processed_chars = 0;
+ const int res = std::stoi(s, &processed_chars);
+
+ // check if the string was completely read
+ if (JSON_UNLIKELY(processed_chars != s.size()))
+ {
+ JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + s + "'"));
+ }
+
+ return res;
+ }
+
+ json_pointer top() const
+ {
+ if (JSON_UNLIKELY(empty()))
+ {
+ JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent"));
+ }
+
+ json_pointer result = *this;
+ result.reference_tokens = {reference_tokens[0]};
+ return result;
+ }
+
+ /*!
+ @brief create and return a reference to the pointed to value
+
+ @complexity Linear in the number of reference tokens.
+
+ @throw parse_error.109 if array index is not a number
+ @throw type_error.313 if value cannot be unflattened
+ */
+ BasicJsonType& get_and_create(BasicJsonType& j) const
+ {
+ using size_type = typename BasicJsonType::size_type;
+ auto result = &j;
+
+ // in case no reference tokens exist, return a reference to the JSON value
+ // j which will be overwritten by a primitive value
+ for (const auto& reference_token : reference_tokens)
+ {
+ switch (result->m_type)
+ {
+ case detail::value_t::null:
+ {
+ if (reference_token == "0")
+ {
+ // start a new array if reference token is 0
+ result = &result->operator[](0);
+ }
+ else
+ {
+ // start a new object otherwise
+ result = &result->operator[](reference_token);
+ }
+ break;
+ }
+
+ case detail::value_t::object:
+ {
+ // create an entry in the object
+ result = &result->operator[](reference_token);
+ break;
+ }
+
+ case detail::value_t::array:
+ {
+ // create an entry in the array
+ JSON_TRY
+ {
+ result = &result->operator[](static_cast<size_type>(array_index(reference_token)));
+ }
+ JSON_CATCH(std::invalid_argument&)
+ {
+ JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
+ }
+ break;
+ }
+
+ /*
+ The following code is only reached if there exists a reference
+ token _and_ the current value is primitive. In this case, we have
+ an error situation, because primitive values may only occur as
+ single value; that is, with an empty list of reference tokens.
+ */
+ default:
+ JSON_THROW(detail::type_error::create(313, "invalid value to unflatten"));
+ }
+ }
+
+ return *result;
+ }
+
+ /*!
+ @brief return a reference to the pointed to value
+
+ @note This version does not throw if a value is not present, but tries to
+ create nested values instead. For instance, calling this function
+ with pointer `"/this/that"` on a null value is equivalent to calling
+ `operator[]("this").operator[]("that")` on that value, effectively
+ changing the null value to an object.
+
+ @param[in] ptr a JSON value
+
+ @return reference to the JSON value pointed to by the JSON pointer
+
+ @complexity Linear in the length of the JSON pointer.
+
+ @throw parse_error.106 if an array index begins with '0'
+ @throw parse_error.109 if an array index was not a number
+ @throw out_of_range.404 if the JSON pointer can not be resolved
+ */
+ BasicJsonType& get_unchecked(BasicJsonType* ptr) const
+ {
+ using size_type = typename BasicJsonType::size_type;
+ for (const auto& reference_token : reference_tokens)
+ {
+ // convert null values to arrays or objects before continuing
+ if (ptr->m_type == detail::value_t::null)
+ {
+ // check if reference token is a number
+ const bool nums =
+ std::all_of(reference_token.begin(), reference_token.end(),
+ [](const char x)
+ {
+ return x >= '0' and x <= '9';
+ });
+
+ // change value to array for numbers or "-" or to object otherwise
+ *ptr = (nums or reference_token == "-")
+ ? detail::value_t::array
+ : detail::value_t::object;
+ }
+
+ switch (ptr->m_type)
+ {
+ case detail::value_t::object:
+ {
+ // use unchecked object access
+ ptr = &ptr->operator[](reference_token);
+ break;
+ }
+
+ case detail::value_t::array:
+ {
+ // error condition (cf. RFC 6901, Sect. 4)
+ if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
+ {
+ JSON_THROW(detail::parse_error::create(106, 0,
+ "array index '" + reference_token +
+ "' must not begin with '0'"));
+ }
+
+ if (reference_token == "-")
+ {
+ // explicitly treat "-" as index beyond the end
+ ptr = &ptr->operator[](ptr->m_value.array->size());
+ }
+ else
+ {
+ // convert array index to number; unchecked access
+ JSON_TRY
+ {
+ ptr = &ptr->operator[](
+ static_cast<size_type>(array_index(reference_token)));
+ }
+ JSON_CATCH(std::invalid_argument&)
+ {
+ JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
+ }
+ }
+ break;
+ }
+
+ default:
+ JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
+ }
+ }
+
+ return *ptr;
+ }
+
+ /*!
+ @throw parse_error.106 if an array index begins with '0'
+ @throw parse_error.109 if an array index was not a number
+ @throw out_of_range.402 if the array index '-' is used
+ @throw out_of_range.404 if the JSON pointer can not be resolved
+ */
+ BasicJsonType& get_checked(BasicJsonType* ptr) const
+ {
+ using size_type = typename BasicJsonType::size_type;
+ for (const auto& reference_token : reference_tokens)
+ {
+ switch (ptr->m_type)
+ {
+ case detail::value_t::object:
+ {
+ // note: at performs range check
+ ptr = &ptr->at(reference_token);
+ break;
+ }
+
+ case detail::value_t::array:
+ {
+ if (JSON_UNLIKELY(reference_token == "-"))
+ {
+ // "-" always fails the range check
+ JSON_THROW(detail::out_of_range::create(402,
+ "array index '-' (" + std::to_string(ptr->m_value.array->size()) +
+ ") is out of range"));
+ }
+
+ // error condition (cf. RFC 6901, Sect. 4)
+ if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
+ {
+ JSON_THROW(detail::parse_error::create(106, 0,
+ "array index '" + reference_token +
+ "' must not begin with '0'"));
+ }
+
+ // note: at performs range check
+ JSON_TRY
+ {
+ ptr = &ptr->at(static_cast<size_type>(array_index(reference_token)));
+ }
+ JSON_CATCH(std::invalid_argument&)
+ {
+ JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
+ }
+ break;
+ }
+
+ default:
+ JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
+ }
+ }
+
+ return *ptr;
+ }
+
+ /*!
+ @brief return a const reference to the pointed to value
+
+ @param[in] ptr a JSON value
+
+ @return const reference to the JSON value pointed to by the JSON
+ pointer
+
+ @throw parse_error.106 if an array index begins with '0'
+ @throw parse_error.109 if an array index was not a number
+ @throw out_of_range.402 if the array index '-' is used
+ @throw out_of_range.404 if the JSON pointer can not be resolved
+ */
+ const BasicJsonType& get_unchecked(const BasicJsonType* ptr) const
+ {
+ using size_type = typename BasicJsonType::size_type;
+ for (const auto& reference_token : reference_tokens)
+ {
+ switch (ptr->m_type)
+ {
+ case detail::value_t::object:
+ {
+ // use unchecked object access
+ ptr = &ptr->operator[](reference_token);
+ break;
+ }
+
+ case detail::value_t::array:
+ {
+ if (JSON_UNLIKELY(reference_token == "-"))
+ {
+ // "-" cannot be used for const access
+ JSON_THROW(detail::out_of_range::create(402,
+ "array index '-' (" + std::to_string(ptr->m_value.array->size()) +
+ ") is out of range"));
+ }
+
+ // error condition (cf. RFC 6901, Sect. 4)
+ if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
+ {
+ JSON_THROW(detail::parse_error::create(106, 0,
+ "array index '" + reference_token +
+ "' must not begin with '0'"));
+ }
+
+ // use unchecked array access
+ JSON_TRY
+ {
+ ptr = &ptr->operator[](
+ static_cast<size_type>(array_index(reference_token)));
+ }
+ JSON_CATCH(std::invalid_argument&)
+ {
+ JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
+ }
+ break;
+ }
+
+ default:
+ JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
+ }
+ }
+
+ return *ptr;
+ }
+
+ /*!
+ @throw parse_error.106 if an array index begins with '0'
+ @throw parse_error.109 if an array index was not a number
+ @throw out_of_range.402 if the array index '-' is used
+ @throw out_of_range.404 if the JSON pointer can not be resolved
+ */
+ const BasicJsonType& get_checked(const BasicJsonType* ptr) const
+ {
+ using size_type = typename BasicJsonType::size_type;
+ for (const auto& reference_token : reference_tokens)
+ {
+ switch (ptr->m_type)
+ {
+ case detail::value_t::object:
+ {
+ // note: at performs range check
+ ptr = &ptr->at(reference_token);
+ break;
+ }
+
+ case detail::value_t::array:
+ {
+ if (JSON_UNLIKELY(reference_token == "-"))
+ {
+ // "-" always fails the range check
+ JSON_THROW(detail::out_of_range::create(402,
+ "array index '-' (" + std::to_string(ptr->m_value.array->size()) +
+ ") is out of range"));
+ }
+
+ // error condition (cf. RFC 6901, Sect. 4)
+ if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
+ {
+ JSON_THROW(detail::parse_error::create(106, 0,
+ "array index '" + reference_token +
+ "' must not begin with '0'"));
+ }
+
+ // note: at performs range check
+ JSON_TRY
+ {
+ ptr = &ptr->at(static_cast<size_type>(array_index(reference_token)));
+ }
+ JSON_CATCH(std::invalid_argument&)
+ {
+ JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
+ }
+ break;
+ }
+
+ default:
+ JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
+ }
+ }
+
+ return *ptr;
+ }
+
+ /*!
+ @brief split the string input to reference tokens
+
+ @note This function is only called by the json_pointer constructor.
+ All exceptions below are documented there.
+
+ @throw parse_error.107 if the pointer is not empty or begins with '/'
+ @throw parse_error.108 if character '~' is not followed by '0' or '1'
+ */
+ static std::vector<std::string> split(const std::string& reference_string)
+ {
+ std::vector<std::string> result;
+
+ // special case: empty reference string -> no reference tokens
+ if (reference_string.empty())
+ {
+ return result;
+ }
+
+ // check if nonempty reference string begins with slash
+ if (JSON_UNLIKELY(reference_string[0] != '/'))
+ {
+ JSON_THROW(detail::parse_error::create(107, 1,
+ "JSON pointer must be empty or begin with '/' - was: '" +
+ reference_string + "'"));
+ }
+
+ // extract the reference tokens:
+ // - slash: position of the last read slash (or end of string)
+ // - start: position after the previous slash
+ for (
+ // search for the first slash after the first character
+ std::size_t slash = reference_string.find_first_of('/', 1),
+ // set the beginning of the first reference token
+ start = 1;
+ // we can stop if start == 0 (if slash == std::string::npos)
+ start != 0;
+ // set the beginning of the next reference token
+ // (will eventually be 0 if slash == std::string::npos)
+ start = (slash == std::string::npos) ? 0 : slash + 1,
+ // find next slash
+ slash = reference_string.find_first_of('/', start))
+ {
+ // use the text between the beginning of the reference token
+ // (start) and the last slash (slash).
+ auto reference_token = reference_string.substr(start, slash - start);
+
+ // check reference tokens are properly escaped
+ for (std::size_t pos = reference_token.find_first_of('~');
+ pos != std::string::npos;
+ pos = reference_token.find_first_of('~', pos + 1))
+ {
+ assert(reference_token[pos] == '~');
+
+ // ~ must be followed by 0 or 1
+ if (JSON_UNLIKELY(pos == reference_token.size() - 1 or
+ (reference_token[pos + 1] != '0' and
+ reference_token[pos + 1] != '1')))
+ {
+ JSON_THROW(detail::parse_error::create(108, 0, "escape character '~' must be followed with '0' or '1'"));
+ }
+ }
+
+ // finally, store the reference token
+ unescape(reference_token);
+ result.push_back(reference_token);
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief replace all occurrences of a substring by another string
+
+ @param[in,out] s the string to manipulate; changed so that all
+ occurrences of @a f are replaced with @a t
+ @param[in] f the substring to replace with @a t
+ @param[in] t the string to replace @a f
+
+ @pre The search string @a f must not be empty. **This precondition is
+ enforced with an assertion.**
+
+ @since version 2.0.0
+ */
+ static void replace_substring(std::string& s, const std::string& f,
+ const std::string& t)
+ {
+ assert(not f.empty());
+ for (auto pos = s.find(f); // find first occurrence of f
+ pos != std::string::npos; // make sure f was found
+ s.replace(pos, f.size(), t), // replace with t, and
+ pos = s.find(f, pos + t.size())) // find next occurrence of f
+ {}
+ }
+
+ /// escape "~" to "~0" and "/" to "~1"
+ static std::string escape(std::string s)
+ {
+ replace_substring(s, "~", "~0");
+ replace_substring(s, "/", "~1");
+ return s;
+ }
+
+ /// unescape "~1" to tilde and "~0" to slash (order is important!)
+ static void unescape(std::string& s)
+ {
+ replace_substring(s, "~1", "/");
+ replace_substring(s, "~0", "~");
+ }
+
+ /*!
+ @param[in] reference_string the reference string to the current value
+ @param[in] value the value to consider
+ @param[in,out] result the result object to insert values to
+
+ @note Empty objects or arrays are flattened to `null`.
+ */
+ static void flatten(const std::string& reference_string,
+ const BasicJsonType& value,
+ BasicJsonType& result)
+ {
+ switch (value.m_type)
+ {
+ case detail::value_t::array:
+ {
+ if (value.m_value.array->empty())
+ {
+ // flatten empty array as null
+ result[reference_string] = nullptr;
+ }
+ else
+ {
+ // iterate array and use index as reference string
+ for (std::size_t i = 0; i < value.m_value.array->size(); ++i)
+ {
+ flatten(reference_string + "/" + std::to_string(i),
+ value.m_value.array->operator[](i), result);
+ }
+ }
+ break;
+ }
+
+ case detail::value_t::object:
+ {
+ if (value.m_value.object->empty())
+ {
+ // flatten empty object as null
+ result[reference_string] = nullptr;
+ }
+ else
+ {
+ // iterate object and use keys as reference string
+ for (const auto& element : *value.m_value.object)
+ {
+ flatten(reference_string + "/" + escape(element.first), element.second, result);
+ }
+ }
+ break;
+ }
+
+ default:
+ {
+ // add primitive value with its reference string
+ result[reference_string] = value;
+ break;
+ }
+ }
+ }
+
+ /*!
+ @param[in] value flattened JSON
+
+ @return unflattened JSON
+
+ @throw parse_error.109 if array index is not a number
+ @throw type_error.314 if value is not an object
+ @throw type_error.315 if object values are not primitive
+ @throw type_error.313 if value cannot be unflattened
+ */
+ static BasicJsonType
+ unflatten(const BasicJsonType& value)
+ {
+ if (JSON_UNLIKELY(not value.is_object()))
+ {
+ JSON_THROW(detail::type_error::create(314, "only objects can be unflattened"));
+ }
+
+ BasicJsonType result;
+
+ // iterate the JSON object values
+ for (const auto& element : *value.m_value.object)
+ {
+ if (JSON_UNLIKELY(not element.second.is_primitive()))
+ {
+ JSON_THROW(detail::type_error::create(315, "values in object must be primitive"));
+ }
+
+ // assign value to reference pointed to by JSON pointer; Note that if
+ // the JSON pointer is "" (i.e., points to the whole value), function
+ // get_and_create returns a reference to result itself. An assignment
+ // will then create a primitive value.
+ json_pointer(element.first).get_and_create(result) = element.second;
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief compares two JSON pointers for equality
+
+ @param[in] lhs JSON pointer to compare
+ @param[in] rhs JSON pointer to compare
+ @return whether @a lhs is equal to @a rhs
+
+ @complexity Linear in the length of the JSON pointer
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+ */
+ friend bool operator==(json_pointer const& lhs,
+ json_pointer const& rhs) noexcept
+ {
+ return lhs.reference_tokens == rhs.reference_tokens;
+ }
+
+ /*!
+ @brief compares two JSON pointers for inequality
+
+ @param[in] lhs JSON pointer to compare
+ @param[in] rhs JSON pointer to compare
+ @return whether @a lhs is not equal @a rhs
+
+ @complexity Linear in the length of the JSON pointer
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+ */
+ friend bool operator!=(json_pointer const& lhs,
+ json_pointer const& rhs) noexcept
+ {
+ return not (lhs == rhs);
+ }
+
+ /// the reference tokens
+ std::vector<std::string> reference_tokens;
+};
+} // namespace nlohmann
+
+// #include <nlohmann/detail/json_ref.hpp>
+
+
+#include <initializer_list>
+#include <utility>
+
+// #include <nlohmann/detail/meta/type_traits.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+template<typename BasicJsonType>
+class json_ref
+{
+ public:
+ using value_type = BasicJsonType;
+
+ json_ref(value_type&& value)
+ : owned_value(std::move(value)), value_ref(&owned_value), is_rvalue(true)
+ {}
+
+ json_ref(const value_type& value)
+ : value_ref(const_cast<value_type*>(&value)), is_rvalue(false)
+ {}
+
+ json_ref(std::initializer_list<json_ref> init)
+ : owned_value(init), value_ref(&owned_value), is_rvalue(true)
+ {}
+
+ template <
+ class... Args,
+ enable_if_t<std::is_constructible<value_type, Args...>::value, int> = 0 >
+ json_ref(Args && ... args)
+ : owned_value(std::forward<Args>(args)...), value_ref(&owned_value),
+ is_rvalue(true) {}
+
+ // class should be movable only
+ json_ref(json_ref&&) = default;
+ json_ref(const json_ref&) = delete;
+ json_ref& operator=(const json_ref&) = delete;
+ json_ref& operator=(json_ref&&) = delete;
+ ~json_ref() = default;
+
+ value_type moved_or_copied() const
+ {
+ if (is_rvalue)
+ {
+ return std::move(*value_ref);
+ }
+ return *value_ref;
+ }
+
+ value_type const& operator*() const
+ {
+ return *static_cast<value_type const*>(value_ref);
+ }
+
+ value_type const* operator->() const
+ {
+ return static_cast<value_type const*>(value_ref);
+ }
+
+ private:
+ mutable value_type owned_value = nullptr;
+ value_type* value_ref = nullptr;
+ const bool is_rvalue;
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+// #include <nlohmann/detail/meta/cpp_future.hpp>
+
+// #include <nlohmann/detail/meta/type_traits.hpp>
+
+// #include <nlohmann/detail/output/binary_writer.hpp>
+
+
+#include <algorithm> // reverse
+#include <array> // array
+#include <cstdint> // uint8_t, uint16_t, uint32_t, uint64_t
+#include <cstring> // memcpy
+#include <limits> // numeric_limits
+#include <string> // string
+
+// #include <nlohmann/detail/input/binary_reader.hpp>
+
+// #include <nlohmann/detail/output/output_adapters.hpp>
+
+
+#include <algorithm> // copy
+#include <cstddef> // size_t
+#include <ios> // streamsize
+#include <iterator> // back_inserter
+#include <memory> // shared_ptr, make_shared
+#include <ostream> // basic_ostream
+#include <string> // basic_string
+#include <vector> // vector
+
+namespace nlohmann
+{
+namespace detail
+{
+/// abstract output adapter interface
+template<typename CharType> struct output_adapter_protocol
+{
+ virtual void write_character(CharType c) = 0;
+ virtual void write_characters(const CharType* s, std::size_t length) = 0;
+ virtual ~output_adapter_protocol() = default;
+};
+
+/// a type to simplify interfaces
+template<typename CharType>
+using output_adapter_t = std::shared_ptr<output_adapter_protocol<CharType>>;
+
+/// output adapter for byte vectors
+template<typename CharType>
+class output_vector_adapter : public output_adapter_protocol<CharType>
+{
+ public:
+ explicit output_vector_adapter(std::vector<CharType>& vec) noexcept
+ : v(vec)
+ {}
+
+ void write_character(CharType c) override
+ {
+ v.push_back(c);
+ }
+
+ void write_characters(const CharType* s, std::size_t length) override
+ {
+ std::copy(s, s + length, std::back_inserter(v));
+ }
+
+ private:
+ std::vector<CharType>& v;
+};
+
+/// output adapter for output streams
+template<typename CharType>
+class output_stream_adapter : public output_adapter_protocol<CharType>
+{
+ public:
+ explicit output_stream_adapter(std::basic_ostream<CharType>& s) noexcept
+ : stream(s)
+ {}
+
+ void write_character(CharType c) override
+ {
+ stream.put(c);
+ }
+
+ void write_characters(const CharType* s, std::size_t length) override
+ {
+ stream.write(s, static_cast<std::streamsize>(length));
+ }
+
+ private:
+ std::basic_ostream<CharType>& stream;
+};
+
+/// output adapter for basic_string
+template<typename CharType, typename StringType = std::basic_string<CharType>>
+class output_string_adapter : public output_adapter_protocol<CharType>
+{
+ public:
+ explicit output_string_adapter(StringType& s) noexcept
+ : str(s)
+ {}
+
+ void write_character(CharType c) override
+ {
+ str.push_back(c);
+ }
+
+ void write_characters(const CharType* s, std::size_t length) override
+ {
+ str.append(s, length);
+ }
+
+ private:
+ StringType& str;
+};
+
+template<typename CharType, typename StringType = std::basic_string<CharType>>
+class output_adapter
+{
+ public:
+ output_adapter(std::vector<CharType>& vec)
+ : oa(std::make_shared<output_vector_adapter<CharType>>(vec)) {}
+
+ output_adapter(std::basic_ostream<CharType>& s)
+ : oa(std::make_shared<output_stream_adapter<CharType>>(s)) {}
+
+ output_adapter(StringType& s)
+ : oa(std::make_shared<output_string_adapter<CharType, StringType>>(s)) {}
+
+ operator output_adapter_t<CharType>()
+ {
+ return oa;
+ }
+
+ private:
+ output_adapter_t<CharType> oa = nullptr;
+};
+} // namespace detail
+} // namespace nlohmann
+
+
+namespace nlohmann
+{
+namespace detail
+{
+///////////////////
+// binary writer //
+///////////////////
+
+/*!
+@brief serialization to CBOR and MessagePack values
+*/
+template<typename BasicJsonType, typename CharType>
+class binary_writer
+{
+ using string_t = typename BasicJsonType::string_t;
+
+ public:
+ /*!
+ @brief create a binary writer
+
+ @param[in] adapter output adapter to write to
+ */
+ explicit binary_writer(output_adapter_t<CharType> adapter) : oa(adapter)
+ {
+ assert(oa);
+ }
+
+ /*!
+ @param[in] j JSON value to serialize
+ @pre j.type() == value_t::object
+ */
+ void write_bson(const BasicJsonType& j)
+ {
+ switch (j.type())
+ {
+ case value_t::object:
+ {
+ write_bson_object(*j.m_value.object);
+ break;
+ }
+
+ default:
+ {
+ JSON_THROW(type_error::create(317, "to serialize to BSON, top-level type must be object, but is " + std::string(j.type_name())));
+ }
+ }
+ }
+
+ /*!
+ @param[in] j JSON value to serialize
+ */
+ void write_cbor(const BasicJsonType& j)
+ {
+ switch (j.type())
+ {
+ case value_t::null:
+ {
+ oa->write_character(to_char_type(0xF6));
+ break;
+ }
+
+ case value_t::boolean:
+ {
+ oa->write_character(j.m_value.boolean
+ ? to_char_type(0xF5)
+ : to_char_type(0xF4));
+ break;
+ }
+
+ case value_t::number_integer:
+ {
+ if (j.m_value.number_integer >= 0)
+ {
+ // CBOR does not differentiate between positive signed
+ // integers and unsigned integers. Therefore, we used the
+ // code from the value_t::number_unsigned case here.
+ if (j.m_value.number_integer <= 0x17)
+ {
+ write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_integer <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ oa->write_character(to_char_type(0x18));
+ write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_integer <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ oa->write_character(to_char_type(0x19));
+ write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_integer <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ oa->write_character(to_char_type(0x1A));
+ write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
+ }
+ else
+ {
+ oa->write_character(to_char_type(0x1B));
+ write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
+ }
+ }
+ else
+ {
+ // The conversions below encode the sign in the first
+ // byte, and the value is converted to a positive number.
+ const auto positive_number = -1 - j.m_value.number_integer;
+ if (j.m_value.number_integer >= -24)
+ {
+ write_number(static_cast<std::uint8_t>(0x20 + positive_number));
+ }
+ else if (positive_number <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ oa->write_character(to_char_type(0x38));
+ write_number(static_cast<std::uint8_t>(positive_number));
+ }
+ else if (positive_number <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ oa->write_character(to_char_type(0x39));
+ write_number(static_cast<std::uint16_t>(positive_number));
+ }
+ else if (positive_number <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ oa->write_character(to_char_type(0x3A));
+ write_number(static_cast<std::uint32_t>(positive_number));
+ }
+ else
+ {
+ oa->write_character(to_char_type(0x3B));
+ write_number(static_cast<std::uint64_t>(positive_number));
+ }
+ }
+ break;
+ }
+
+ case value_t::number_unsigned:
+ {
+ if (j.m_value.number_unsigned <= 0x17)
+ {
+ write_number(static_cast<std::uint8_t>(j.m_value.number_unsigned));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ oa->write_character(to_char_type(0x18));
+ write_number(static_cast<std::uint8_t>(j.m_value.number_unsigned));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ oa->write_character(to_char_type(0x19));
+ write_number(static_cast<std::uint16_t>(j.m_value.number_unsigned));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ oa->write_character(to_char_type(0x1A));
+ write_number(static_cast<std::uint32_t>(j.m_value.number_unsigned));
+ }
+ else
+ {
+ oa->write_character(to_char_type(0x1B));
+ write_number(static_cast<std::uint64_t>(j.m_value.number_unsigned));
+ }
+ break;
+ }
+
+ case value_t::number_float:
+ {
+ oa->write_character(get_cbor_float_prefix(j.m_value.number_float));
+ write_number(j.m_value.number_float);
+ break;
+ }
+
+ case value_t::string:
+ {
+ // step 1: write control byte and the string length
+ const auto N = j.m_value.string->size();
+ if (N <= 0x17)
+ {
+ write_number(static_cast<std::uint8_t>(0x60 + N));
+ }
+ else if (N <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ oa->write_character(to_char_type(0x78));
+ write_number(static_cast<std::uint8_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ oa->write_character(to_char_type(0x79));
+ write_number(static_cast<std::uint16_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ oa->write_character(to_char_type(0x7A));
+ write_number(static_cast<std::uint32_t>(N));
+ }
+ // LCOV_EXCL_START
+ else if (N <= (std::numeric_limits<std::uint64_t>::max)())
+ {
+ oa->write_character(to_char_type(0x7B));
+ write_number(static_cast<std::uint64_t>(N));
+ }
+ // LCOV_EXCL_STOP
+
+ // step 2: write the string
+ oa->write_characters(
+ reinterpret_cast<const CharType*>(j.m_value.string->c_str()),
+ j.m_value.string->size());
+ break;
+ }
+
+ case value_t::array:
+ {
+ // step 1: write control byte and the array size
+ const auto N = j.m_value.array->size();
+ if (N <= 0x17)
+ {
+ write_number(static_cast<std::uint8_t>(0x80 + N));
+ }
+ else if (N <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ oa->write_character(to_char_type(0x98));
+ write_number(static_cast<std::uint8_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ oa->write_character(to_char_type(0x99));
+ write_number(static_cast<std::uint16_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ oa->write_character(to_char_type(0x9A));
+ write_number(static_cast<std::uint32_t>(N));
+ }
+ // LCOV_EXCL_START
+ else if (N <= (std::numeric_limits<std::uint64_t>::max)())
+ {
+ oa->write_character(to_char_type(0x9B));
+ write_number(static_cast<std::uint64_t>(N));
+ }
+ // LCOV_EXCL_STOP
+
+ // step 2: write each element
+ for (const auto& el : *j.m_value.array)
+ {
+ write_cbor(el);
+ }
+ break;
+ }
+
+ case value_t::object:
+ {
+ // step 1: write control byte and the object size
+ const auto N = j.m_value.object->size();
+ if (N <= 0x17)
+ {
+ write_number(static_cast<std::uint8_t>(0xA0 + N));
+ }
+ else if (N <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ oa->write_character(to_char_type(0xB8));
+ write_number(static_cast<std::uint8_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ oa->write_character(to_char_type(0xB9));
+ write_number(static_cast<std::uint16_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ oa->write_character(to_char_type(0xBA));
+ write_number(static_cast<std::uint32_t>(N));
+ }
+ // LCOV_EXCL_START
+ else if (N <= (std::numeric_limits<std::uint64_t>::max)())
+ {
+ oa->write_character(to_char_type(0xBB));
+ write_number(static_cast<std::uint64_t>(N));
+ }
+ // LCOV_EXCL_STOP
+
+ // step 2: write each element
+ for (const auto& el : *j.m_value.object)
+ {
+ write_cbor(el.first);
+ write_cbor(el.second);
+ }
+ break;
+ }
+
+ default:
+ break;
+ }
+ }
+
+ /*!
+ @param[in] j JSON value to serialize
+ */
+ void write_msgpack(const BasicJsonType& j)
+ {
+ switch (j.type())
+ {
+ case value_t::null: // nil
+ {
+ oa->write_character(to_char_type(0xC0));
+ break;
+ }
+
+ case value_t::boolean: // true and false
+ {
+ oa->write_character(j.m_value.boolean
+ ? to_char_type(0xC3)
+ : to_char_type(0xC2));
+ break;
+ }
+
+ case value_t::number_integer:
+ {
+ if (j.m_value.number_integer >= 0)
+ {
+ // MessagePack does not differentiate between positive
+ // signed integers and unsigned integers. Therefore, we used
+ // the code from the value_t::number_unsigned case here.
+ if (j.m_value.number_unsigned < 128)
+ {
+ // positive fixnum
+ write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ // uint 8
+ oa->write_character(to_char_type(0xCC));
+ write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ // uint 16
+ oa->write_character(to_char_type(0xCD));
+ write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ // uint 32
+ oa->write_character(to_char_type(0xCE));
+ write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())
+ {
+ // uint 64
+ oa->write_character(to_char_type(0xCF));
+ write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
+ }
+ }
+ else
+ {
+ if (j.m_value.number_integer >= -32)
+ {
+ // negative fixnum
+ write_number(static_cast<std::int8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_integer >= (std::numeric_limits<std::int8_t>::min)() and
+ j.m_value.number_integer <= (std::numeric_limits<std::int8_t>::max)())
+ {
+ // int 8
+ oa->write_character(to_char_type(0xD0));
+ write_number(static_cast<std::int8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_integer >= (std::numeric_limits<std::int16_t>::min)() and
+ j.m_value.number_integer <= (std::numeric_limits<std::int16_t>::max)())
+ {
+ // int 16
+ oa->write_character(to_char_type(0xD1));
+ write_number(static_cast<std::int16_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_integer >= (std::numeric_limits<std::int32_t>::min)() and
+ j.m_value.number_integer <= (std::numeric_limits<std::int32_t>::max)())
+ {
+ // int 32
+ oa->write_character(to_char_type(0xD2));
+ write_number(static_cast<std::int32_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_integer >= (std::numeric_limits<std::int64_t>::min)() and
+ j.m_value.number_integer <= (std::numeric_limits<std::int64_t>::max)())
+ {
+ // int 64
+ oa->write_character(to_char_type(0xD3));
+ write_number(static_cast<std::int64_t>(j.m_value.number_integer));
+ }
+ }
+ break;
+ }
+
+ case value_t::number_unsigned:
+ {
+ if (j.m_value.number_unsigned < 128)
+ {
+ // positive fixnum
+ write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ // uint 8
+ oa->write_character(to_char_type(0xCC));
+ write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ // uint 16
+ oa->write_character(to_char_type(0xCD));
+ write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ // uint 32
+ oa->write_character(to_char_type(0xCE));
+ write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
+ }
+ else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())
+ {
+ // uint 64
+ oa->write_character(to_char_type(0xCF));
+ write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
+ }
+ break;
+ }
+
+ case value_t::number_float:
+ {
+ oa->write_character(get_msgpack_float_prefix(j.m_value.number_float));
+ write_number(j.m_value.number_float);
+ break;
+ }
+
+ case value_t::string:
+ {
+ // step 1: write control byte and the string length
+ const auto N = j.m_value.string->size();
+ if (N <= 31)
+ {
+ // fixstr
+ write_number(static_cast<std::uint8_t>(0xA0 | N));
+ }
+ else if (N <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ // str 8
+ oa->write_character(to_char_type(0xD9));
+ write_number(static_cast<std::uint8_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ // str 16
+ oa->write_character(to_char_type(0xDA));
+ write_number(static_cast<std::uint16_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ // str 32
+ oa->write_character(to_char_type(0xDB));
+ write_number(static_cast<std::uint32_t>(N));
+ }
+
+ // step 2: write the string
+ oa->write_characters(
+ reinterpret_cast<const CharType*>(j.m_value.string->c_str()),
+ j.m_value.string->size());
+ break;
+ }
+
+ case value_t::array:
+ {
+ // step 1: write control byte and the array size
+ const auto N = j.m_value.array->size();
+ if (N <= 15)
+ {
+ // fixarray
+ write_number(static_cast<std::uint8_t>(0x90 | N));
+ }
+ else if (N <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ // array 16
+ oa->write_character(to_char_type(0xDC));
+ write_number(static_cast<std::uint16_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ // array 32
+ oa->write_character(to_char_type(0xDD));
+ write_number(static_cast<std::uint32_t>(N));
+ }
+
+ // step 2: write each element
+ for (const auto& el : *j.m_value.array)
+ {
+ write_msgpack(el);
+ }
+ break;
+ }
+
+ case value_t::object:
+ {
+ // step 1: write control byte and the object size
+ const auto N = j.m_value.object->size();
+ if (N <= 15)
+ {
+ // fixmap
+ write_number(static_cast<std::uint8_t>(0x80 | (N & 0xF)));
+ }
+ else if (N <= (std::numeric_limits<std::uint16_t>::max)())
+ {
+ // map 16
+ oa->write_character(to_char_type(0xDE));
+ write_number(static_cast<std::uint16_t>(N));
+ }
+ else if (N <= (std::numeric_limits<std::uint32_t>::max)())
+ {
+ // map 32
+ oa->write_character(to_char_type(0xDF));
+ write_number(static_cast<std::uint32_t>(N));
+ }
+
+ // step 2: write each element
+ for (const auto& el : *j.m_value.object)
+ {
+ write_msgpack(el.first);
+ write_msgpack(el.second);
+ }
+ break;
+ }
+
+ default:
+ break;
+ }
+ }
+
+ /*!
+ @param[in] j JSON value to serialize
+ @param[in] use_count whether to use '#' prefixes (optimized format)
+ @param[in] use_type whether to use '$' prefixes (optimized format)
+ @param[in] add_prefix whether prefixes need to be used for this value
+ */
+ void write_ubjson(const BasicJsonType& j, const bool use_count,
+ const bool use_type, const bool add_prefix = true)
+ {
+ switch (j.type())
+ {
+ case value_t::null:
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('Z'));
+ }
+ break;
+ }
+
+ case value_t::boolean:
+ {
+ if (add_prefix)
+ {
+ oa->write_character(j.m_value.boolean
+ ? to_char_type('T')
+ : to_char_type('F'));
+ }
+ break;
+ }
+
+ case value_t::number_integer:
+ {
+ write_number_with_ubjson_prefix(j.m_value.number_integer, add_prefix);
+ break;
+ }
+
+ case value_t::number_unsigned:
+ {
+ write_number_with_ubjson_prefix(j.m_value.number_unsigned, add_prefix);
+ break;
+ }
+
+ case value_t::number_float:
+ {
+ write_number_with_ubjson_prefix(j.m_value.number_float, add_prefix);
+ break;
+ }
+
+ case value_t::string:
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('S'));
+ }
+ write_number_with_ubjson_prefix(j.m_value.string->size(), true);
+ oa->write_characters(
+ reinterpret_cast<const CharType*>(j.m_value.string->c_str()),
+ j.m_value.string->size());
+ break;
+ }
+
+ case value_t::array:
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('['));
+ }
+
+ bool prefix_required = true;
+ if (use_type and not j.m_value.array->empty())
+ {
+ assert(use_count);
+ const CharType first_prefix = ubjson_prefix(j.front());
+ const bool same_prefix = std::all_of(j.begin() + 1, j.end(),
+ [this, first_prefix](const BasicJsonType & v)
+ {
+ return ubjson_prefix(v) == first_prefix;
+ });
+
+ if (same_prefix)
+ {
+ prefix_required = false;
+ oa->write_character(to_char_type('$'));
+ oa->write_character(first_prefix);
+ }
+ }
+
+ if (use_count)
+ {
+ oa->write_character(to_char_type('#'));
+ write_number_with_ubjson_prefix(j.m_value.array->size(), true);
+ }
+
+ for (const auto& el : *j.m_value.array)
+ {
+ write_ubjson(el, use_count, use_type, prefix_required);
+ }
+
+ if (not use_count)
+ {
+ oa->write_character(to_char_type(']'));
+ }
+
+ break;
+ }
+
+ case value_t::object:
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('{'));
+ }
+
+ bool prefix_required = true;
+ if (use_type and not j.m_value.object->empty())
+ {
+ assert(use_count);
+ const CharType first_prefix = ubjson_prefix(j.front());
+ const bool same_prefix = std::all_of(j.begin(), j.end(),
+ [this, first_prefix](const BasicJsonType & v)
+ {
+ return ubjson_prefix(v) == first_prefix;
+ });
+
+ if (same_prefix)
+ {
+ prefix_required = false;
+ oa->write_character(to_char_type('$'));
+ oa->write_character(first_prefix);
+ }
+ }
+
+ if (use_count)
+ {
+ oa->write_character(to_char_type('#'));
+ write_number_with_ubjson_prefix(j.m_value.object->size(), true);
+ }
+
+ for (const auto& el : *j.m_value.object)
+ {
+ write_number_with_ubjson_prefix(el.first.size(), true);
+ oa->write_characters(
+ reinterpret_cast<const CharType*>(el.first.c_str()),
+ el.first.size());
+ write_ubjson(el.second, use_count, use_type, prefix_required);
+ }
+
+ if (not use_count)
+ {
+ oa->write_character(to_char_type('}'));
+ }
+
+ break;
+ }
+
+ default:
+ break;
+ }
+ }
+
+ private:
+ //////////
+ // BSON //
+ //////////
+
+ /*!
+ @return The size of a BSON document entry header, including the id marker
+ and the entry name size (and its null-terminator).
+ */
+ static std::size_t calc_bson_entry_header_size(const string_t& name)
+ {
+ const auto it = name.find(static_cast<typename string_t::value_type>(0));
+ if (JSON_UNLIKELY(it != BasicJsonType::string_t::npos))
+ {
+ JSON_THROW(out_of_range::create(409,
+ "BSON key cannot contain code point U+0000 (at byte " + std::to_string(it) + ")"));
+ }
+
+ return /*id*/ 1ul + name.size() + /*zero-terminator*/1u;
+ }
+
+ /*!
+ @brief Writes the given @a element_type and @a name to the output adapter
+ */
+ void write_bson_entry_header(const string_t& name,
+ const std::uint8_t element_type)
+ {
+ oa->write_character(to_char_type(element_type)); // boolean
+ oa->write_characters(
+ reinterpret_cast<const CharType*>(name.c_str()),
+ name.size() + 1u);
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and boolean value @a value
+ */
+ void write_bson_boolean(const string_t& name,
+ const bool value)
+ {
+ write_bson_entry_header(name, 0x08);
+ oa->write_character(value ? to_char_type(0x01) : to_char_type(0x00));
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and double value @a value
+ */
+ void write_bson_double(const string_t& name,
+ const double value)
+ {
+ write_bson_entry_header(name, 0x01);
+ write_number<double, true>(value);
+ }
+
+ /*!
+ @return The size of the BSON-encoded string in @a value
+ */
+ static std::size_t calc_bson_string_size(const string_t& value)
+ {
+ return sizeof(std::int32_t) + value.size() + 1ul;
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and string value @a value
+ */
+ void write_bson_string(const string_t& name,
+ const string_t& value)
+ {
+ write_bson_entry_header(name, 0x02);
+
+ write_number<std::int32_t, true>(static_cast<std::int32_t>(value.size() + 1ul));
+ oa->write_characters(
+ reinterpret_cast<const CharType*>(value.c_str()),
+ value.size() + 1);
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and null value
+ */
+ void write_bson_null(const string_t& name)
+ {
+ write_bson_entry_header(name, 0x0A);
+ }
+
+ /*!
+ @return The size of the BSON-encoded integer @a value
+ */
+ static std::size_t calc_bson_integer_size(const std::int64_t value)
+ {
+ return (std::numeric_limits<std::int32_t>::min)() <= value and value <= (std::numeric_limits<std::int32_t>::max)()
+ ? sizeof(std::int32_t)
+ : sizeof(std::int64_t);
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and integer @a value
+ */
+ void write_bson_integer(const string_t& name,
+ const std::int64_t value)
+ {
+ if ((std::numeric_limits<std::int32_t>::min)() <= value and value <= (std::numeric_limits<std::int32_t>::max)())
+ {
+ write_bson_entry_header(name, 0x10); // int32
+ write_number<std::int32_t, true>(static_cast<std::int32_t>(value));
+ }
+ else
+ {
+ write_bson_entry_header(name, 0x12); // int64
+ write_number<std::int64_t, true>(static_cast<std::int64_t>(value));
+ }
+ }
+
+ /*!
+ @return The size of the BSON-encoded unsigned integer in @a j
+ */
+ static constexpr std::size_t calc_bson_unsigned_size(const std::uint64_t value) noexcept
+ {
+ return (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
+ ? sizeof(std::int32_t)
+ : sizeof(std::int64_t);
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and unsigned @a value
+ */
+ void write_bson_unsigned(const string_t& name,
+ const std::uint64_t value)
+ {
+ if (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
+ {
+ write_bson_entry_header(name, 0x10 /* int32 */);
+ write_number<std::int32_t, true>(static_cast<std::int32_t>(value));
+ }
+ else if (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int64_t>::max)()))
+ {
+ write_bson_entry_header(name, 0x12 /* int64 */);
+ write_number<std::int64_t, true>(static_cast<std::int64_t>(value));
+ }
+ else
+ {
+ JSON_THROW(out_of_range::create(407, "integer number " + std::to_string(value) + " cannot be represented by BSON as it does not fit int64"));
+ }
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and object @a value
+ */
+ void write_bson_object_entry(const string_t& name,
+ const typename BasicJsonType::object_t& value)
+ {
+ write_bson_entry_header(name, 0x03); // object
+ write_bson_object(value);
+ }
+
+ /*!
+ @return The size of the BSON-encoded array @a value
+ */
+ static std::size_t calc_bson_array_size(const typename BasicJsonType::array_t& value)
+ {
+ std::size_t embedded_document_size = 0ul;
+ std::size_t array_index = 0ul;
+
+ for (const auto& el : value)
+ {
+ embedded_document_size += calc_bson_element_size(std::to_string(array_index++), el);
+ }
+
+ return sizeof(std::int32_t) + embedded_document_size + 1ul;
+ }
+
+ /*!
+ @brief Writes a BSON element with key @a name and array @a value
+ */
+ void write_bson_array(const string_t& name,
+ const typename BasicJsonType::array_t& value)
+ {
+ write_bson_entry_header(name, 0x04); // array
+ write_number<std::int32_t, true>(static_cast<std::int32_t>(calc_bson_array_size(value)));
+
+ std::size_t array_index = 0ul;
+
+ for (const auto& el : value)
+ {
+ write_bson_element(std::to_string(array_index++), el);
+ }
+
+ oa->write_character(to_char_type(0x00));
+ }
+
+ /*!
+ @brief Calculates the size necessary to serialize the JSON value @a j with its @a name
+ @return The calculated size for the BSON document entry for @a j with the given @a name.
+ */
+ static std::size_t calc_bson_element_size(const string_t& name,
+ const BasicJsonType& j)
+ {
+ const auto header_size = calc_bson_entry_header_size(name);
+ switch (j.type())
+ {
+ case value_t::object:
+ return header_size + calc_bson_object_size(*j.m_value.object);
+
+ case value_t::array:
+ return header_size + calc_bson_array_size(*j.m_value.array);
+
+ case value_t::boolean:
+ return header_size + 1ul;
+
+ case value_t::number_float:
+ return header_size + 8ul;
+
+ case value_t::number_integer:
+ return header_size + calc_bson_integer_size(j.m_value.number_integer);
+
+ case value_t::number_unsigned:
+ return header_size + calc_bson_unsigned_size(j.m_value.number_unsigned);
+
+ case value_t::string:
+ return header_size + calc_bson_string_size(*j.m_value.string);
+
+ case value_t::null:
+ return header_size + 0ul;
+
+ // LCOV_EXCL_START
+ default:
+ assert(false);
+ return 0ul;
+ // LCOV_EXCL_STOP
+ }
+ }
+
+ /*!
+ @brief Serializes the JSON value @a j to BSON and associates it with the
+ key @a name.
+ @param name The name to associate with the JSON entity @a j within the
+ current BSON document
+ @return The size of the BSON entry
+ */
+ void write_bson_element(const string_t& name,
+ const BasicJsonType& j)
+ {
+ switch (j.type())
+ {
+ case value_t::object:
+ return write_bson_object_entry(name, *j.m_value.object);
+
+ case value_t::array:
+ return write_bson_array(name, *j.m_value.array);
+
+ case value_t::boolean:
+ return write_bson_boolean(name, j.m_value.boolean);
+
+ case value_t::number_float:
+ return write_bson_double(name, j.m_value.number_float);
+
+ case value_t::number_integer:
+ return write_bson_integer(name, j.m_value.number_integer);
+
+ case value_t::number_unsigned:
+ return write_bson_unsigned(name, j.m_value.number_unsigned);
+
+ case value_t::string:
+ return write_bson_string(name, *j.m_value.string);
+
+ case value_t::null:
+ return write_bson_null(name);
+
+ // LCOV_EXCL_START
+ default:
+ assert(false);
+ return;
+ // LCOV_EXCL_STOP
+ }
+ }
+
+ /*!
+ @brief Calculates the size of the BSON serialization of the given
+ JSON-object @a j.
+ @param[in] j JSON value to serialize
+ @pre j.type() == value_t::object
+ */
+ static std::size_t calc_bson_object_size(const typename BasicJsonType::object_t& value)
+ {
+ std::size_t document_size = std::accumulate(value.begin(), value.end(), 0ul,
+ [](size_t result, const typename BasicJsonType::object_t::value_type & el)
+ {
+ return result += calc_bson_element_size(el.first, el.second);
+ });
+
+ return sizeof(std::int32_t) + document_size + 1ul;
+ }
+
+ /*!
+ @param[in] j JSON value to serialize
+ @pre j.type() == value_t::object
+ */
+ void write_bson_object(const typename BasicJsonType::object_t& value)
+ {
+ write_number<std::int32_t, true>(static_cast<std::int32_t>(calc_bson_object_size(value)));
+
+ for (const auto& el : value)
+ {
+ write_bson_element(el.first, el.second);
+ }
+
+ oa->write_character(to_char_type(0x00));
+ }
+
+ //////////
+ // CBOR //
+ //////////
+
+ static constexpr CharType get_cbor_float_prefix(float /*unused*/)
+ {
+ return to_char_type(0xFA); // Single-Precision Float
+ }
+
+ static constexpr CharType get_cbor_float_prefix(double /*unused*/)
+ {
+ return to_char_type(0xFB); // Double-Precision Float
+ }
+
+ /////////////
+ // MsgPack //
+ /////////////
+
+ static constexpr CharType get_msgpack_float_prefix(float /*unused*/)
+ {
+ return to_char_type(0xCA); // float 32
+ }
+
+ static constexpr CharType get_msgpack_float_prefix(double /*unused*/)
+ {
+ return to_char_type(0xCB); // float 64
+ }
+
+ ////////////
+ // UBJSON //
+ ////////////
+
+ // UBJSON: write number (floating point)
+ template<typename NumberType, typename std::enable_if<
+ std::is_floating_point<NumberType>::value, int>::type = 0>
+ void write_number_with_ubjson_prefix(const NumberType n,
+ const bool add_prefix)
+ {
+ if (add_prefix)
+ {
+ oa->write_character(get_ubjson_float_prefix(n));
+ }
+ write_number(n);
+ }
+
+ // UBJSON: write number (unsigned integer)
+ template<typename NumberType, typename std::enable_if<
+ std::is_unsigned<NumberType>::value, int>::type = 0>
+ void write_number_with_ubjson_prefix(const NumberType n,
+ const bool add_prefix)
+ {
+ if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int8_t>::max)()))
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('i')); // int8
+ }
+ write_number(static_cast<std::uint8_t>(n));
+ }
+ else if (n <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('U')); // uint8
+ }
+ write_number(static_cast<std::uint8_t>(n));
+ }
+ else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int16_t>::max)()))
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('I')); // int16
+ }
+ write_number(static_cast<std::int16_t>(n));
+ }
+ else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('l')); // int32
+ }
+ write_number(static_cast<std::int32_t>(n));
+ }
+ else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int64_t>::max)()))
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('L')); // int64
+ }
+ write_number(static_cast<std::int64_t>(n));
+ }
+ else
+ {
+ JSON_THROW(out_of_range::create(407, "integer number " + std::to_string(n) + " cannot be represented by UBJSON as it does not fit int64"));
+ }
+ }
+
+ // UBJSON: write number (signed integer)
+ template<typename NumberType, typename std::enable_if<
+ std::is_signed<NumberType>::value and
+ not std::is_floating_point<NumberType>::value, int>::type = 0>
+ void write_number_with_ubjson_prefix(const NumberType n,
+ const bool add_prefix)
+ {
+ if ((std::numeric_limits<std::int8_t>::min)() <= n and n <= (std::numeric_limits<std::int8_t>::max)())
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('i')); // int8
+ }
+ write_number(static_cast<std::int8_t>(n));
+ }
+ else if (static_cast<std::int64_t>((std::numeric_limits<std::uint8_t>::min)()) <= n and n <= static_cast<std::int64_t>((std::numeric_limits<std::uint8_t>::max)()))
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('U')); // uint8
+ }
+ write_number(static_cast<std::uint8_t>(n));
+ }
+ else if ((std::numeric_limits<std::int16_t>::min)() <= n and n <= (std::numeric_limits<std::int16_t>::max)())
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('I')); // int16
+ }
+ write_number(static_cast<std::int16_t>(n));
+ }
+ else if ((std::numeric_limits<std::int32_t>::min)() <= n and n <= (std::numeric_limits<std::int32_t>::max)())
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('l')); // int32
+ }
+ write_number(static_cast<std::int32_t>(n));
+ }
+ else if ((std::numeric_limits<std::int64_t>::min)() <= n and n <= (std::numeric_limits<std::int64_t>::max)())
+ {
+ if (add_prefix)
+ {
+ oa->write_character(to_char_type('L')); // int64
+ }
+ write_number(static_cast<std::int64_t>(n));
+ }
+ // LCOV_EXCL_START
+ else
+ {
+ JSON_THROW(out_of_range::create(407, "integer number " + std::to_string(n) + " cannot be represented by UBJSON as it does not fit int64"));
+ }
+ // LCOV_EXCL_STOP
+ }
+
+ /*!
+ @brief determine the type prefix of container values
+
+ @note This function does not need to be 100% accurate when it comes to
+ integer limits. In case a number exceeds the limits of int64_t,
+ this will be detected by a later call to function
+ write_number_with_ubjson_prefix. Therefore, we return 'L' for any
+ value that does not fit the previous limits.
+ */
+ CharType ubjson_prefix(const BasicJsonType& j) const noexcept
+ {
+ switch (j.type())
+ {
+ case value_t::null:
+ return 'Z';
+
+ case value_t::boolean:
+ return j.m_value.boolean ? 'T' : 'F';
+
+ case value_t::number_integer:
+ {
+ if ((std::numeric_limits<std::int8_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::int8_t>::max)())
+ {
+ return 'i';
+ }
+ if ((std::numeric_limits<std::uint8_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ return 'U';
+ }
+ if ((std::numeric_limits<std::int16_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::int16_t>::max)())
+ {
+ return 'I';
+ }
+ if ((std::numeric_limits<std::int32_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::int32_t>::max)())
+ {
+ return 'l';
+ }
+ // no check and assume int64_t (see note above)
+ return 'L';
+ }
+
+ case value_t::number_unsigned:
+ {
+ if (j.m_value.number_unsigned <= (std::numeric_limits<std::int8_t>::max)())
+ {
+ return 'i';
+ }
+ if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
+ {
+ return 'U';
+ }
+ if (j.m_value.number_unsigned <= (std::numeric_limits<std::int16_t>::max)())
+ {
+ return 'I';
+ }
+ if (j.m_value.number_unsigned <= (std::numeric_limits<std::int32_t>::max)())
+ {
+ return 'l';
+ }
+ // no check and assume int64_t (see note above)
+ return 'L';
+ }
+
+ case value_t::number_float:
+ return get_ubjson_float_prefix(j.m_value.number_float);
+
+ case value_t::string:
+ return 'S';
+
+ case value_t::array:
+ return '[';
+
+ case value_t::object:
+ return '{';
+
+ default: // discarded values
+ return 'N';
+ }
+ }
+
+ static constexpr CharType get_ubjson_float_prefix(float /*unused*/)
+ {
+ return 'd'; // float 32
+ }
+
+ static constexpr CharType get_ubjson_float_prefix(double /*unused*/)
+ {
+ return 'D'; // float 64
+ }
+
+ ///////////////////////
+ // Utility functions //
+ ///////////////////////
+
+ /*
+ @brief write a number to output input
+ @param[in] n number of type @a NumberType
+ @tparam NumberType the type of the number
+ @tparam OutputIsLittleEndian Set to true if output data is
+ required to be little endian
+
+ @note This function needs to respect the system's endianess, because bytes
+ in CBOR, MessagePack, and UBJSON are stored in network order (big
+ endian) and therefore need reordering on little endian systems.
+ */
+ template<typename NumberType, bool OutputIsLittleEndian = false>
+ void write_number(const NumberType n)
+ {
+ // step 1: write number to array of length NumberType
+ std::array<CharType, sizeof(NumberType)> vec;
+ std::memcpy(vec.data(), &n, sizeof(NumberType));
+
+ // step 2: write array to output (with possible reordering)
+ if (is_little_endian != OutputIsLittleEndian)
+ {
+ // reverse byte order prior to conversion if necessary
+ std::reverse(vec.begin(), vec.end());
+ }
+
+ oa->write_characters(vec.data(), sizeof(NumberType));
+ }
+
+ public:
+ // The following to_char_type functions are implement the conversion
+ // between uint8_t and CharType. In case CharType is not unsigned,
+ // such a conversion is required to allow values greater than 128.
+ // See <https://github.com/nlohmann/json/issues/1286> for a discussion.
+ template < typename C = CharType,
+ enable_if_t < std::is_signed<C>::value and std::is_signed<char>::value > * = nullptr >
+ static constexpr CharType to_char_type(std::uint8_t x) noexcept
+ {
+ return *reinterpret_cast<char*>(&x);
+ }
+
+ template < typename C = CharType,
+ enable_if_t < std::is_signed<C>::value and std::is_unsigned<char>::value > * = nullptr >
+ static CharType to_char_type(std::uint8_t x) noexcept
+ {
+ static_assert(sizeof(std::uint8_t) == sizeof(CharType), "size of CharType must be equal to std::uint8_t");
+ static_assert(std::is_pod<CharType>::value, "CharType must be POD");
+ CharType result;
+ std::memcpy(&result, &x, sizeof(x));
+ return result;
+ }
+
+ template<typename C = CharType,
+ enable_if_t<std::is_unsigned<C>::value>* = nullptr>
+ static constexpr CharType to_char_type(std::uint8_t x) noexcept
+ {
+ return x;
+ }
+
+ template < typename InputCharType, typename C = CharType,
+ enable_if_t <
+ std::is_signed<C>::value and
+ std::is_signed<char>::value and
+ std::is_same<char, typename std::remove_cv<InputCharType>::type>::value
+ > * = nullptr >
+ static constexpr CharType to_char_type(InputCharType x) noexcept
+ {
+ return x;
+ }
+
+ private:
+ /// whether we can assume little endianess
+ const bool is_little_endian = binary_reader<BasicJsonType>::little_endianess();
+
+ /// the output
+ output_adapter_t<CharType> oa = nullptr;
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/output/output_adapters.hpp>
+
+// #include <nlohmann/detail/output/serializer.hpp>
+
+
+#include <algorithm> // reverse, remove, fill, find, none_of
+#include <array> // array
+#include <cassert> // assert
+#include <ciso646> // and, or
+#include <clocale> // localeconv, lconv
+#include <cmath> // labs, isfinite, isnan, signbit
+#include <cstddef> // size_t, ptrdiff_t
+#include <cstdint> // uint8_t
+#include <cstdio> // snprintf
+#include <limits> // numeric_limits
+#include <string> // string
+#include <type_traits> // is_same
+#include <utility> // move
+
+// #include <nlohmann/detail/conversions/to_chars.hpp>
+
+
+#include <array> // array
+#include <cassert> // assert
+#include <ciso646> // or, and, not
+#include <cmath> // signbit, isfinite
+#include <cstdint> // intN_t, uintN_t
+#include <cstring> // memcpy, memmove
+#include <limits> // numeric_limits
+#include <type_traits> // conditional
+
+namespace nlohmann
+{
+namespace detail
+{
+
+/*!
+@brief implements the Grisu2 algorithm for binary to decimal floating-point
+conversion.
+
+This implementation is a slightly modified version of the reference
+implementation which may be obtained from
+http://florian.loitsch.com/publications (bench.tar.gz).
+
+The code is distributed under the MIT license, Copyright (c) 2009 Florian Loitsch.
+
+For a detailed description of the algorithm see:
+
+[1] Loitsch, "Printing Floating-Point Numbers Quickly and Accurately with
+ Integers", Proceedings of the ACM SIGPLAN 2010 Conference on Programming
+ Language Design and Implementation, PLDI 2010
+[2] Burger, Dybvig, "Printing Floating-Point Numbers Quickly and Accurately",
+ Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language
+ Design and Implementation, PLDI 1996
+*/
+namespace dtoa_impl
+{
+
+template <typename Target, typename Source>
+Target reinterpret_bits(const Source source)
+{
+ static_assert(sizeof(Target) == sizeof(Source), "size mismatch");
+
+ Target target;
+ std::memcpy(&target, &source, sizeof(Source));
+ return target;
+}
+
+struct diyfp // f * 2^e
+{
+ static constexpr int kPrecision = 64; // = q
+
+ std::uint64_t f = 0;
+ int e = 0;
+
+ constexpr diyfp(std::uint64_t f_, int e_) noexcept : f(f_), e(e_) {}
+
+ /*!
+ @brief returns x - y
+ @pre x.e == y.e and x.f >= y.f
+ */
+ static diyfp sub(const diyfp& x, const diyfp& y) noexcept
+ {
+ assert(x.e == y.e);
+ assert(x.f >= y.f);
+
+ return {x.f - y.f, x.e};
+ }
+
+ /*!
+ @brief returns x * y
+ @note The result is rounded. (Only the upper q bits are returned.)
+ */
+ static diyfp mul(const diyfp& x, const diyfp& y) noexcept
+ {
+ static_assert(kPrecision == 64, "internal error");
+
+ // Computes:
+ // f = round((x.f * y.f) / 2^q)
+ // e = x.e + y.e + q
+
+ // Emulate the 64-bit * 64-bit multiplication:
+ //
+ // p = u * v
+ // = (u_lo + 2^32 u_hi) (v_lo + 2^32 v_hi)
+ // = (u_lo v_lo ) + 2^32 ((u_lo v_hi ) + (u_hi v_lo )) + 2^64 (u_hi v_hi )
+ // = (p0 ) + 2^32 ((p1 ) + (p2 )) + 2^64 (p3 )
+ // = (p0_lo + 2^32 p0_hi) + 2^32 ((p1_lo + 2^32 p1_hi) + (p2_lo + 2^32 p2_hi)) + 2^64 (p3 )
+ // = (p0_lo ) + 2^32 (p0_hi + p1_lo + p2_lo ) + 2^64 (p1_hi + p2_hi + p3)
+ // = (p0_lo ) + 2^32 (Q ) + 2^64 (H )
+ // = (p0_lo ) + 2^32 (Q_lo + 2^32 Q_hi ) + 2^64 (H )
+ //
+ // (Since Q might be larger than 2^32 - 1)
+ //
+ // = (p0_lo + 2^32 Q_lo) + 2^64 (Q_hi + H)
+ //
+ // (Q_hi + H does not overflow a 64-bit int)
+ //
+ // = p_lo + 2^64 p_hi
+
+ const std::uint64_t u_lo = x.f & 0xFFFFFFFFu;
+ const std::uint64_t u_hi = x.f >> 32u;
+ const std::uint64_t v_lo = y.f & 0xFFFFFFFFu;
+ const std::uint64_t v_hi = y.f >> 32u;
+
+ const std::uint64_t p0 = u_lo * v_lo;
+ const std::uint64_t p1 = u_lo * v_hi;
+ const std::uint64_t p2 = u_hi * v_lo;
+ const std::uint64_t p3 = u_hi * v_hi;
+
+ const std::uint64_t p0_hi = p0 >> 32u;
+ const std::uint64_t p1_lo = p1 & 0xFFFFFFFFu;
+ const std::uint64_t p1_hi = p1 >> 32u;
+ const std::uint64_t p2_lo = p2 & 0xFFFFFFFFu;
+ const std::uint64_t p2_hi = p2 >> 32u;
+
+ std::uint64_t Q = p0_hi + p1_lo + p2_lo;
+
+ // The full product might now be computed as
+ //
+ // p_hi = p3 + p2_hi + p1_hi + (Q >> 32)
+ // p_lo = p0_lo + (Q << 32)
+ //
+ // But in this particular case here, the full p_lo is not required.
+ // Effectively we only need to add the highest bit in p_lo to p_hi (and
+ // Q_hi + 1 does not overflow).
+
+ Q += std::uint64_t{1} << (64u - 32u - 1u); // round, ties up
+
+ const std::uint64_t h = p3 + p2_hi + p1_hi + (Q >> 32u);
+
+ return {h, x.e + y.e + 64};
+ }
+
+ /*!
+ @brief normalize x such that the significand is >= 2^(q-1)
+ @pre x.f != 0
+ */
+ static diyfp normalize(diyfp x) noexcept
+ {
+ assert(x.f != 0);
+
+ while ((x.f >> 63u) == 0)
+ {
+ x.f <<= 1u;
+ x.e--;
+ }
+
+ return x;
+ }
+
+ /*!
+ @brief normalize x such that the result has the exponent E
+ @pre e >= x.e and the upper e - x.e bits of x.f must be zero.
+ */
+ static diyfp normalize_to(const diyfp& x, const int target_exponent) noexcept
+ {
+ const int delta = x.e - target_exponent;
+
+ assert(delta >= 0);
+ assert(((x.f << delta) >> delta) == x.f);
+
+ return {x.f << delta, target_exponent};
+ }
+};
+
+struct boundaries
+{
+ diyfp w;
+ diyfp minus;
+ diyfp plus;
+};
+
+/*!
+Compute the (normalized) diyfp representing the input number 'value' and its
+boundaries.
+
+@pre value must be finite and positive
+*/
+template <typename FloatType>
+boundaries compute_boundaries(FloatType value)
+{
+ assert(std::isfinite(value));
+ assert(value > 0);
+
+ // Convert the IEEE representation into a diyfp.
+ //
+ // If v is denormal:
+ // value = 0.F * 2^(1 - bias) = ( F) * 2^(1 - bias - (p-1))
+ // If v is normalized:
+ // value = 1.F * 2^(E - bias) = (2^(p-1) + F) * 2^(E - bias - (p-1))
+
+ static_assert(std::numeric_limits<FloatType>::is_iec559,
+ "internal error: dtoa_short requires an IEEE-754 floating-point implementation");
+
+ constexpr int kPrecision = std::numeric_limits<FloatType>::digits; // = p (includes the hidden bit)
+ constexpr int kBias = std::numeric_limits<FloatType>::max_exponent - 1 + (kPrecision - 1);
+ constexpr int kMinExp = 1 - kBias;
+ constexpr std::uint64_t kHiddenBit = std::uint64_t{1} << (kPrecision - 1); // = 2^(p-1)
+
+ using bits_type = typename std::conditional<kPrecision == 24, std::uint32_t, std::uint64_t >::type;
+
+ const std::uint64_t bits = reinterpret_bits<bits_type>(value);
+ const std::uint64_t E = bits >> (kPrecision - 1);
+ const std::uint64_t F = bits & (kHiddenBit - 1);
+
+ const bool is_denormal = E == 0;
+ const diyfp v = is_denormal
+ ? diyfp(F, kMinExp)
+ : diyfp(F + kHiddenBit, static_cast<int>(E) - kBias);
+
+ // Compute the boundaries m- and m+ of the floating-point value
+ // v = f * 2^e.
+ //
+ // Determine v- and v+, the floating-point predecessor and successor if v,
+ // respectively.
+ //
+ // v- = v - 2^e if f != 2^(p-1) or e == e_min (A)
+ // = v - 2^(e-1) if f == 2^(p-1) and e > e_min (B)
+ //
+ // v+ = v + 2^e
+ //
+ // Let m- = (v- + v) / 2 and m+ = (v + v+) / 2. All real numbers _strictly_
+ // between m- and m+ round to v, regardless of how the input rounding
+ // algorithm breaks ties.
+ //
+ // ---+-------------+-------------+-------------+-------------+--- (A)
+ // v- m- v m+ v+
+ //
+ // -----------------+------+------+-------------+-------------+--- (B)
+ // v- m- v m+ v+
+
+ const bool lower_boundary_is_closer = F == 0 and E > 1;
+ const diyfp m_plus = diyfp(2 * v.f + 1, v.e - 1);
+ const diyfp m_minus = lower_boundary_is_closer
+ ? diyfp(4 * v.f - 1, v.e - 2) // (B)
+ : diyfp(2 * v.f - 1, v.e - 1); // (A)
+
+ // Determine the normalized w+ = m+.
+ const diyfp w_plus = diyfp::normalize(m_plus);
+
+ // Determine w- = m- such that e_(w-) = e_(w+).
+ const diyfp w_minus = diyfp::normalize_to(m_minus, w_plus.e);
+
+ return {diyfp::normalize(v), w_minus, w_plus};
+}
+
+// Given normalized diyfp w, Grisu needs to find a (normalized) cached
+// power-of-ten c, such that the exponent of the product c * w = f * 2^e lies
+// within a certain range [alpha, gamma] (Definition 3.2 from [1])
+//
+// alpha <= e = e_c + e_w + q <= gamma
+//
+// or
+//
+// f_c * f_w * 2^alpha <= f_c 2^(e_c) * f_w 2^(e_w) * 2^q
+// <= f_c * f_w * 2^gamma
+//
+// Since c and w are normalized, i.e. 2^(q-1) <= f < 2^q, this implies
+//
+// 2^(q-1) * 2^(q-1) * 2^alpha <= c * w * 2^q < 2^q * 2^q * 2^gamma
+//
+// or
+//
+// 2^(q - 2 + alpha) <= c * w < 2^(q + gamma)
+//
+// The choice of (alpha,gamma) determines the size of the table and the form of
+// the digit generation procedure. Using (alpha,gamma)=(-60,-32) works out well
+// in practice:
+//
+// The idea is to cut the number c * w = f * 2^e into two parts, which can be
+// processed independently: An integral part p1, and a fractional part p2:
+//
+// f * 2^e = ( (f div 2^-e) * 2^-e + (f mod 2^-e) ) * 2^e
+// = (f div 2^-e) + (f mod 2^-e) * 2^e
+// = p1 + p2 * 2^e
+//
+// The conversion of p1 into decimal form requires a series of divisions and
+// modulos by (a power of) 10. These operations are faster for 32-bit than for
+// 64-bit integers, so p1 should ideally fit into a 32-bit integer. This can be
+// achieved by choosing
+//
+// -e >= 32 or e <= -32 := gamma
+//
+// In order to convert the fractional part
+//
+// p2 * 2^e = p2 / 2^-e = d[-1] / 10^1 + d[-2] / 10^2 + ...
+//
+// into decimal form, the fraction is repeatedly multiplied by 10 and the digits
+// d[-i] are extracted in order:
+//
+// (10 * p2) div 2^-e = d[-1]
+// (10 * p2) mod 2^-e = d[-2] / 10^1 + ...
+//
+// The multiplication by 10 must not overflow. It is sufficient to choose
+//
+// 10 * p2 < 16 * p2 = 2^4 * p2 <= 2^64.
+//
+// Since p2 = f mod 2^-e < 2^-e,
+//
+// -e <= 60 or e >= -60 := alpha
+
+constexpr int kAlpha = -60;
+constexpr int kGamma = -32;
+
+struct cached_power // c = f * 2^e ~= 10^k
+{
+ std::uint64_t f;
+ int e;
+ int k;
+};
+
+/*!
+For a normalized diyfp w = f * 2^e, this function returns a (normalized) cached
+power-of-ten c = f_c * 2^e_c, such that the exponent of the product w * c
+satisfies (Definition 3.2 from [1])
+
+ alpha <= e_c + e + q <= gamma.
+*/
+inline cached_power get_cached_power_for_binary_exponent(int e)
+{
+ // Now
+ //
+ // alpha <= e_c + e + q <= gamma (1)
+ // ==> f_c * 2^alpha <= c * 2^e * 2^q
+ //
+ // and since the c's are normalized, 2^(q-1) <= f_c,
+ //
+ // ==> 2^(q - 1 + alpha) <= c * 2^(e + q)
+ // ==> 2^(alpha - e - 1) <= c
+ //
+ // If c were an exakt power of ten, i.e. c = 10^k, one may determine k as
+ //
+ // k = ceil( log_10( 2^(alpha - e - 1) ) )
+ // = ceil( (alpha - e - 1) * log_10(2) )
+ //
+ // From the paper:
+ // "In theory the result of the procedure could be wrong since c is rounded,
+ // and the computation itself is approximated [...]. In practice, however,
+ // this simple function is sufficient."
+ //
+ // For IEEE double precision floating-point numbers converted into
+ // normalized diyfp's w = f * 2^e, with q = 64,
+ //
+ // e >= -1022 (min IEEE exponent)
+ // -52 (p - 1)
+ // -52 (p - 1, possibly normalize denormal IEEE numbers)
+ // -11 (normalize the diyfp)
+ // = -1137
+ //
+ // and
+ //
+ // e <= +1023 (max IEEE exponent)
+ // -52 (p - 1)
+ // -11 (normalize the diyfp)
+ // = 960
+ //
+ // This binary exponent range [-1137,960] results in a decimal exponent
+ // range [-307,324]. One does not need to store a cached power for each
+ // k in this range. For each such k it suffices to find a cached power
+ // such that the exponent of the product lies in [alpha,gamma].
+ // This implies that the difference of the decimal exponents of adjacent
+ // table entries must be less than or equal to
+ //
+ // floor( (gamma - alpha) * log_10(2) ) = 8.
+ //
+ // (A smaller distance gamma-alpha would require a larger table.)
+
+ // NB:
+ // Actually this function returns c, such that -60 <= e_c + e + 64 <= -34.
+
+ constexpr int kCachedPowersMinDecExp = -300;
+ constexpr int kCachedPowersDecStep = 8;
+
+ static constexpr std::array<cached_power, 79> kCachedPowers =
+ {
+ {
+ { 0xAB70FE17C79AC6CA, -1060, -300 },
+ { 0xFF77B1FCBEBCDC4F, -1034, -292 },
+ { 0xBE5691EF416BD60C, -1007, -284 },
+ { 0x8DD01FAD907FFC3C, -980, -276 },
+ { 0xD3515C2831559A83, -954, -268 },
+ { 0x9D71AC8FADA6C9B5, -927, -260 },
+ { 0xEA9C227723EE8BCB, -901, -252 },
+ { 0xAECC49914078536D, -874, -244 },
+ { 0x823C12795DB6CE57, -847, -236 },
+ { 0xC21094364DFB5637, -821, -228 },
+ { 0x9096EA6F3848984F, -794, -220 },
+ { 0xD77485CB25823AC7, -768, -212 },
+ { 0xA086CFCD97BF97F4, -741, -204 },
+ { 0xEF340A98172AACE5, -715, -196 },
+ { 0xB23867FB2A35B28E, -688, -188 },
+ { 0x84C8D4DFD2C63F3B, -661, -180 },
+ { 0xC5DD44271AD3CDBA, -635, -172 },
+ { 0x936B9FCEBB25C996, -608, -164 },
+ { 0xDBAC6C247D62A584, -582, -156 },
+ { 0xA3AB66580D5FDAF6, -555, -148 },
+ { 0xF3E2F893DEC3F126, -529, -140 },
+ { 0xB5B5ADA8AAFF80B8, -502, -132 },
+ { 0x87625F056C7C4A8B, -475, -124 },
+ { 0xC9BCFF6034C13053, -449, -116 },
+ { 0x964E858C91BA2655, -422, -108 },
+ { 0xDFF9772470297EBD, -396, -100 },
+ { 0xA6DFBD9FB8E5B88F, -369, -92 },
+ { 0xF8A95FCF88747D94, -343, -84 },
+ { 0xB94470938FA89BCF, -316, -76 },
+ { 0x8A08F0F8BF0F156B, -289, -68 },
+ { 0xCDB02555653131B6, -263, -60 },
+ { 0x993FE2C6D07B7FAC, -236, -52 },
+ { 0xE45C10C42A2B3B06, -210, -44 },
+ { 0xAA242499697392D3, -183, -36 },
+ { 0xFD87B5F28300CA0E, -157, -28 },
+ { 0xBCE5086492111AEB, -130, -20 },
+ { 0x8CBCCC096F5088CC, -103, -12 },
+ { 0xD1B71758E219652C, -77, -4 },
+ { 0x9C40000000000000, -50, 4 },
+ { 0xE8D4A51000000000, -24, 12 },
+ { 0xAD78EBC5AC620000, 3, 20 },
+ { 0x813F3978F8940984, 30, 28 },
+ { 0xC097CE7BC90715B3, 56, 36 },
+ { 0x8F7E32CE7BEA5C70, 83, 44 },
+ { 0xD5D238A4ABE98068, 109, 52 },
+ { 0x9F4F2726179A2245, 136, 60 },
+ { 0xED63A231D4C4FB27, 162, 68 },
+ { 0xB0DE65388CC8ADA8, 189, 76 },
+ { 0x83C7088E1AAB65DB, 216, 84 },
+ { 0xC45D1DF942711D9A, 242, 92 },
+ { 0x924D692CA61BE758, 269, 100 },
+ { 0xDA01EE641A708DEA, 295, 108 },
+ { 0xA26DA3999AEF774A, 322, 116 },
+ { 0xF209787BB47D6B85, 348, 124 },
+ { 0xB454E4A179DD1877, 375, 132 },
+ { 0x865B86925B9BC5C2, 402, 140 },
+ { 0xC83553C5C8965D3D, 428, 148 },
+ { 0x952AB45CFA97A0B3, 455, 156 },
+ { 0xDE469FBD99A05FE3, 481, 164 },
+ { 0xA59BC234DB398C25, 508, 172 },
+ { 0xF6C69A72A3989F5C, 534, 180 },
+ { 0xB7DCBF5354E9BECE, 561, 188 },
+ { 0x88FCF317F22241E2, 588, 196 },
+ { 0xCC20CE9BD35C78A5, 614, 204 },
+ { 0x98165AF37B2153DF, 641, 212 },
+ { 0xE2A0B5DC971F303A, 667, 220 },
+ { 0xA8D9D1535CE3B396, 694, 228 },
+ { 0xFB9B7CD9A4A7443C, 720, 236 },
+ { 0xBB764C4CA7A44410, 747, 244 },
+ { 0x8BAB8EEFB6409C1A, 774, 252 },
+ { 0xD01FEF10A657842C, 800, 260 },
+ { 0x9B10A4E5E9913129, 827, 268 },
+ { 0xE7109BFBA19C0C9D, 853, 276 },
+ { 0xAC2820D9623BF429, 880, 284 },
+ { 0x80444B5E7AA7CF85, 907, 292 },
+ { 0xBF21E44003ACDD2D, 933, 300 },
+ { 0x8E679C2F5E44FF8F, 960, 308 },
+ { 0xD433179D9C8CB841, 986, 316 },
+ { 0x9E19DB92B4E31BA9, 1013, 324 },
+ }
+ };
+
+ // This computation gives exactly the same results for k as
+ // k = ceil((kAlpha - e - 1) * 0.30102999566398114)
+ // for |e| <= 1500, but doesn't require floating-point operations.
+ // NB: log_10(2) ~= 78913 / 2^18
+ assert(e >= -1500);
+ assert(e <= 1500);
+ const int f = kAlpha - e - 1;
+ const int k = (f * 78913) / (1 << 18) + static_cast<int>(f > 0);
+
+ const int index = (-kCachedPowersMinDecExp + k + (kCachedPowersDecStep - 1)) / kCachedPowersDecStep;
+ assert(index >= 0);
+ assert(static_cast<std::size_t>(index) < kCachedPowers.size());
+
+ const cached_power cached = kCachedPowers[static_cast<std::size_t>(index)];
+ assert(kAlpha <= cached.e + e + 64);
+ assert(kGamma >= cached.e + e + 64);
+
+ return cached;
+}
+
+/*!
+For n != 0, returns k, such that pow10 := 10^(k-1) <= n < 10^k.
+For n == 0, returns 1 and sets pow10 := 1.
+*/
+inline int find_largest_pow10(const std::uint32_t n, std::uint32_t& pow10)
+{
+ // LCOV_EXCL_START
+ if (n >= 1000000000)
+ {
+ pow10 = 1000000000;
+ return 10;
+ }
+ // LCOV_EXCL_STOP
+ else if (n >= 100000000)
+ {
+ pow10 = 100000000;
+ return 9;
+ }
+ else if (n >= 10000000)
+ {
+ pow10 = 10000000;
+ return 8;
+ }
+ else if (n >= 1000000)
+ {
+ pow10 = 1000000;
+ return 7;
+ }
+ else if (n >= 100000)
+ {
+ pow10 = 100000;
+ return 6;
+ }
+ else if (n >= 10000)
+ {
+ pow10 = 10000;
+ return 5;
+ }
+ else if (n >= 1000)
+ {
+ pow10 = 1000;
+ return 4;
+ }
+ else if (n >= 100)
+ {
+ pow10 = 100;
+ return 3;
+ }
+ else if (n >= 10)
+ {
+ pow10 = 10;
+ return 2;
+ }
+ else
+ {
+ pow10 = 1;
+ return 1;
+ }
+}
+
+inline void grisu2_round(char* buf, int len, std::uint64_t dist, std::uint64_t delta,
+ std::uint64_t rest, std::uint64_t ten_k)
+{
+ assert(len >= 1);
+ assert(dist <= delta);
+ assert(rest <= delta);
+ assert(ten_k > 0);
+
+ // <--------------------------- delta ---->
+ // <---- dist --------->
+ // --------------[------------------+-------------------]--------------
+ // M- w M+
+ //
+ // ten_k
+ // <------>
+ // <---- rest ---->
+ // --------------[------------------+----+--------------]--------------
+ // w V
+ // = buf * 10^k
+ //
+ // ten_k represents a unit-in-the-last-place in the decimal representation
+ // stored in buf.
+ // Decrement buf by ten_k while this takes buf closer to w.
+
+ // The tests are written in this order to avoid overflow in unsigned
+ // integer arithmetic.
+
+ while (rest < dist
+ and delta - rest >= ten_k
+ and (rest + ten_k < dist or dist - rest > rest + ten_k - dist))
+ {
+ assert(buf[len - 1] != '0');
+ buf[len - 1]--;
+ rest += ten_k;
+ }
+}
+
+/*!
+Generates V = buffer * 10^decimal_exponent, such that M- <= V <= M+.
+M- and M+ must be normalized and share the same exponent -60 <= e <= -32.
+*/
+inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent,
+ diyfp M_minus, diyfp w, diyfp M_plus)
+{
+ static_assert(kAlpha >= -60, "internal error");
+ static_assert(kGamma <= -32, "internal error");
+
+ // Generates the digits (and the exponent) of a decimal floating-point
+ // number V = buffer * 10^decimal_exponent in the range [M-, M+]. The diyfp's
+ // w, M- and M+ share the same exponent e, which satisfies alpha <= e <= gamma.
+ //
+ // <--------------------------- delta ---->
+ // <---- dist --------->
+ // --------------[------------------+-------------------]--------------
+ // M- w M+
+ //
+ // Grisu2 generates the digits of M+ from left to right and stops as soon as
+ // V is in [M-,M+].
+
+ assert(M_plus.e >= kAlpha);
+ assert(M_plus.e <= kGamma);
+
+ std::uint64_t delta = diyfp::sub(M_plus, M_minus).f; // (significand of (M+ - M-), implicit exponent is e)
+ std::uint64_t dist = diyfp::sub(M_plus, w ).f; // (significand of (M+ - w ), implicit exponent is e)
+
+ // Split M+ = f * 2^e into two parts p1 and p2 (note: e < 0):
+ //
+ // M+ = f * 2^e
+ // = ((f div 2^-e) * 2^-e + (f mod 2^-e)) * 2^e
+ // = ((p1 ) * 2^-e + (p2 )) * 2^e
+ // = p1 + p2 * 2^e
+
+ const diyfp one(std::uint64_t{1} << -M_plus.e, M_plus.e);
+
+ auto p1 = static_cast<std::uint32_t>(M_plus.f >> -one.e); // p1 = f div 2^-e (Since -e >= 32, p1 fits into a 32-bit int.)
+ std::uint64_t p2 = M_plus.f & (one.f - 1); // p2 = f mod 2^-e
+
+ // 1)
+ //
+ // Generate the digits of the integral part p1 = d[n-1]...d[1]d[0]
+
+ assert(p1 > 0);
+
+ std::uint32_t pow10;
+ const int k = find_largest_pow10(p1, pow10);
+
+ // 10^(k-1) <= p1 < 10^k, pow10 = 10^(k-1)
+ //
+ // p1 = (p1 div 10^(k-1)) * 10^(k-1) + (p1 mod 10^(k-1))
+ // = (d[k-1] ) * 10^(k-1) + (p1 mod 10^(k-1))
+ //
+ // M+ = p1 + p2 * 2^e
+ // = d[k-1] * 10^(k-1) + (p1 mod 10^(k-1)) + p2 * 2^e
+ // = d[k-1] * 10^(k-1) + ((p1 mod 10^(k-1)) * 2^-e + p2) * 2^e
+ // = d[k-1] * 10^(k-1) + ( rest) * 2^e
+ //
+ // Now generate the digits d[n] of p1 from left to right (n = k-1,...,0)
+ //
+ // p1 = d[k-1]...d[n] * 10^n + d[n-1]...d[0]
+ //
+ // but stop as soon as
+ //
+ // rest * 2^e = (d[n-1]...d[0] * 2^-e + p2) * 2^e <= delta * 2^e
+
+ int n = k;
+ while (n > 0)
+ {
+ // Invariants:
+ // M+ = buffer * 10^n + (p1 + p2 * 2^e) (buffer = 0 for n = k)
+ // pow10 = 10^(n-1) <= p1 < 10^n
+ //
+ const std::uint32_t d = p1 / pow10; // d = p1 div 10^(n-1)
+ const std::uint32_t r = p1 % pow10; // r = p1 mod 10^(n-1)
+ //
+ // M+ = buffer * 10^n + (d * 10^(n-1) + r) + p2 * 2^e
+ // = (buffer * 10 + d) * 10^(n-1) + (r + p2 * 2^e)
+ //
+ assert(d <= 9);
+ buffer[length++] = static_cast<char>('0' + d); // buffer := buffer * 10 + d
+ //
+ // M+ = buffer * 10^(n-1) + (r + p2 * 2^e)
+ //
+ p1 = r;
+ n--;
+ //
+ // M+ = buffer * 10^n + (p1 + p2 * 2^e)
+ // pow10 = 10^n
+ //
+
+ // Now check if enough digits have been generated.
+ // Compute
+ //
+ // p1 + p2 * 2^e = (p1 * 2^-e + p2) * 2^e = rest * 2^e
+ //
+ // Note:
+ // Since rest and delta share the same exponent e, it suffices to
+ // compare the significands.
+ const std::uint64_t rest = (std::uint64_t{p1} << -one.e) + p2;
+ if (rest <= delta)
+ {
+ // V = buffer * 10^n, with M- <= V <= M+.
+
+ decimal_exponent += n;
+
+ // We may now just stop. But instead look if the buffer could be
+ // decremented to bring V closer to w.
+ //
+ // pow10 = 10^n is now 1 ulp in the decimal representation V.
+ // The rounding procedure works with diyfp's with an implicit
+ // exponent of e.
+ //
+ // 10^n = (10^n * 2^-e) * 2^e = ulp * 2^e
+ //
+ const std::uint64_t ten_n = std::uint64_t{pow10} << -one.e;
+ grisu2_round(buffer, length, dist, delta, rest, ten_n);
+
+ return;
+ }
+
+ pow10 /= 10;
+ //
+ // pow10 = 10^(n-1) <= p1 < 10^n
+ // Invariants restored.
+ }
+
+ // 2)
+ //
+ // The digits of the integral part have been generated:
+ //
+ // M+ = d[k-1]...d[1]d[0] + p2 * 2^e
+ // = buffer + p2 * 2^e
+ //
+ // Now generate the digits of the fractional part p2 * 2^e.
+ //
+ // Note:
+ // No decimal point is generated: the exponent is adjusted instead.
+ //
+ // p2 actually represents the fraction
+ //
+ // p2 * 2^e
+ // = p2 / 2^-e
+ // = d[-1] / 10^1 + d[-2] / 10^2 + ...
+ //
+ // Now generate the digits d[-m] of p1 from left to right (m = 1,2,...)
+ //
+ // p2 * 2^e = d[-1]d[-2]...d[-m] * 10^-m
+ // + 10^-m * (d[-m-1] / 10^1 + d[-m-2] / 10^2 + ...)
+ //
+ // using
+ //
+ // 10^m * p2 = ((10^m * p2) div 2^-e) * 2^-e + ((10^m * p2) mod 2^-e)
+ // = ( d) * 2^-e + ( r)
+ //
+ // or
+ // 10^m * p2 * 2^e = d + r * 2^e
+ //
+ // i.e.
+ //
+ // M+ = buffer + p2 * 2^e
+ // = buffer + 10^-m * (d + r * 2^e)
+ // = (buffer * 10^m + d) * 10^-m + 10^-m * r * 2^e
+ //
+ // and stop as soon as 10^-m * r * 2^e <= delta * 2^e
+
+ assert(p2 > delta);
+
+ int m = 0;
+ for (;;)
+ {
+ // Invariant:
+ // M+ = buffer * 10^-m + 10^-m * (d[-m-1] / 10 + d[-m-2] / 10^2 + ...) * 2^e
+ // = buffer * 10^-m + 10^-m * (p2 ) * 2^e
+ // = buffer * 10^-m + 10^-m * (1/10 * (10 * p2) ) * 2^e
+ // = buffer * 10^-m + 10^-m * (1/10 * ((10*p2 div 2^-e) * 2^-e + (10*p2 mod 2^-e)) * 2^e
+ //
+ assert(p2 <= (std::numeric_limits<std::uint64_t>::max)() / 10);
+ p2 *= 10;
+ const std::uint64_t d = p2 >> -one.e; // d = (10 * p2) div 2^-e
+ const std::uint64_t r = p2 & (one.f - 1); // r = (10 * p2) mod 2^-e
+ //
+ // M+ = buffer * 10^-m + 10^-m * (1/10 * (d * 2^-e + r) * 2^e
+ // = buffer * 10^-m + 10^-m * (1/10 * (d + r * 2^e))
+ // = (buffer * 10 + d) * 10^(-m-1) + 10^(-m-1) * r * 2^e
+ //
+ assert(d <= 9);
+ buffer[length++] = static_cast<char>('0' + d); // buffer := buffer * 10 + d
+ //
+ // M+ = buffer * 10^(-m-1) + 10^(-m-1) * r * 2^e
+ //
+ p2 = r;
+ m++;
+ //
+ // M+ = buffer * 10^-m + 10^-m * p2 * 2^e
+ // Invariant restored.
+
+ // Check if enough digits have been generated.
+ //
+ // 10^-m * p2 * 2^e <= delta * 2^e
+ // p2 * 2^e <= 10^m * delta * 2^e
+ // p2 <= 10^m * delta
+ delta *= 10;
+ dist *= 10;
+ if (p2 <= delta)
+ {
+ break;
+ }
+ }
+
+ // V = buffer * 10^-m, with M- <= V <= M+.
+
+ decimal_exponent -= m;
+
+ // 1 ulp in the decimal representation is now 10^-m.
+ // Since delta and dist are now scaled by 10^m, we need to do the
+ // same with ulp in order to keep the units in sync.
+ //
+ // 10^m * 10^-m = 1 = 2^-e * 2^e = ten_m * 2^e
+ //
+ const std::uint64_t ten_m = one.f;
+ grisu2_round(buffer, length, dist, delta, p2, ten_m);
+
+ // By construction this algorithm generates the shortest possible decimal
+ // number (Loitsch, Theorem 6.2) which rounds back to w.
+ // For an input number of precision p, at least
+ //
+ // N = 1 + ceil(p * log_10(2))
+ //
+ // decimal digits are sufficient to identify all binary floating-point
+ // numbers (Matula, "In-and-Out conversions").
+ // This implies that the algorithm does not produce more than N decimal
+ // digits.
+ //
+ // N = 17 for p = 53 (IEEE double precision)
+ // N = 9 for p = 24 (IEEE single precision)
+}
+
+/*!
+v = buf * 10^decimal_exponent
+len is the length of the buffer (number of decimal digits)
+The buffer must be large enough, i.e. >= max_digits10.
+*/
+inline void grisu2(char* buf, int& len, int& decimal_exponent,
+ diyfp m_minus, diyfp v, diyfp m_plus)
+{
+ assert(m_plus.e == m_minus.e);
+ assert(m_plus.e == v.e);
+
+ // --------(-----------------------+-----------------------)-------- (A)
+ // m- v m+
+ //
+ // --------------------(-----------+-----------------------)-------- (B)
+ // m- v m+
+ //
+ // First scale v (and m- and m+) such that the exponent is in the range
+ // [alpha, gamma].
+
+ const cached_power cached = get_cached_power_for_binary_exponent(m_plus.e);
+
+ const diyfp c_minus_k(cached.f, cached.e); // = c ~= 10^-k
+
+ // The exponent of the products is = v.e + c_minus_k.e + q and is in the range [alpha,gamma]
+ const diyfp w = diyfp::mul(v, c_minus_k);
+ const diyfp w_minus = diyfp::mul(m_minus, c_minus_k);
+ const diyfp w_plus = diyfp::mul(m_plus, c_minus_k);
+
+ // ----(---+---)---------------(---+---)---------------(---+---)----
+ // w- w w+
+ // = c*m- = c*v = c*m+
+ //
+ // diyfp::mul rounds its result and c_minus_k is approximated too. w, w- and
+ // w+ are now off by a small amount.
+ // In fact:
+ //
+ // w - v * 10^k < 1 ulp
+ //
+ // To account for this inaccuracy, add resp. subtract 1 ulp.
+ //
+ // --------+---[---------------(---+---)---------------]---+--------
+ // w- M- w M+ w+
+ //
+ // Now any number in [M-, M+] (bounds included) will round to w when input,
+ // regardless of how the input rounding algorithm breaks ties.
+ //
+ // And digit_gen generates the shortest possible such number in [M-, M+].
+ // Note that this does not mean that Grisu2 always generates the shortest
+ // possible number in the interval (m-, m+).
+ const diyfp M_minus(w_minus.f + 1, w_minus.e);
+ const diyfp M_plus (w_plus.f - 1, w_plus.e );
+
+ decimal_exponent = -cached.k; // = -(-k) = k
+
+ grisu2_digit_gen(buf, len, decimal_exponent, M_minus, w, M_plus);
+}
+
+/*!
+v = buf * 10^decimal_exponent
+len is the length of the buffer (number of decimal digits)
+The buffer must be large enough, i.e. >= max_digits10.
+*/
+template <typename FloatType>
+void grisu2(char* buf, int& len, int& decimal_exponent, FloatType value)
+{
+ static_assert(diyfp::kPrecision >= std::numeric_limits<FloatType>::digits + 3,
+ "internal error: not enough precision");
+
+ assert(std::isfinite(value));
+ assert(value > 0);
+
+ // If the neighbors (and boundaries) of 'value' are always computed for double-precision
+ // numbers, all float's can be recovered using strtod (and strtof). However, the resulting
+ // decimal representations are not exactly "short".
+ //
+ // The documentation for 'std::to_chars' (https://en.cppreference.com/w/cpp/utility/to_chars)
+ // says "value is converted to a string as if by std::sprintf in the default ("C") locale"
+ // and since sprintf promotes float's to double's, I think this is exactly what 'std::to_chars'
+ // does.
+ // On the other hand, the documentation for 'std::to_chars' requires that "parsing the
+ // representation using the corresponding std::from_chars function recovers value exactly". That
+ // indicates that single precision floating-point numbers should be recovered using
+ // 'std::strtof'.
+ //
+ // NB: If the neighbors are computed for single-precision numbers, there is a single float
+ // (7.0385307e-26f) which can't be recovered using strtod. The resulting double precision
+ // value is off by 1 ulp.
+#if 0
+ const boundaries w = compute_boundaries(static_cast<double>(value));
+#else
+ const boundaries w = compute_boundaries(value);
+#endif
+
+ grisu2(buf, len, decimal_exponent, w.minus, w.w, w.plus);
+}
+
+/*!
+@brief appends a decimal representation of e to buf
+@return a pointer to the element following the exponent.
+@pre -1000 < e < 1000
+*/
+inline char* append_exponent(char* buf, int e)
+{
+ assert(e > -1000);
+ assert(e < 1000);
+
+ if (e < 0)
+ {
+ e = -e;
+ *buf++ = '-';
+ }
+ else
+ {
+ *buf++ = '+';
+ }
+
+ auto k = static_cast<std::uint32_t>(e);
+ if (k < 10)
+ {
+ // Always print at least two digits in the exponent.
+ // This is for compatibility with printf("%g").
+ *buf++ = '0';
+ *buf++ = static_cast<char>('0' + k);
+ }
+ else if (k < 100)
+ {
+ *buf++ = static_cast<char>('0' + k / 10);
+ k %= 10;
+ *buf++ = static_cast<char>('0' + k);
+ }
+ else
+ {
+ *buf++ = static_cast<char>('0' + k / 100);
+ k %= 100;
+ *buf++ = static_cast<char>('0' + k / 10);
+ k %= 10;
+ *buf++ = static_cast<char>('0' + k);
+ }
+
+ return buf;
+}
+
+/*!
+@brief prettify v = buf * 10^decimal_exponent
+
+If v is in the range [10^min_exp, 10^max_exp) it will be printed in fixed-point
+notation. Otherwise it will be printed in exponential notation.
+
+@pre min_exp < 0
+@pre max_exp > 0
+*/
+inline char* format_buffer(char* buf, int len, int decimal_exponent,
+ int min_exp, int max_exp)
+{
+ assert(min_exp < 0);
+ assert(max_exp > 0);
+
+ const int k = len;
+ const int n = len + decimal_exponent;
+
+ // v = buf * 10^(n-k)
+ // k is the length of the buffer (number of decimal digits)
+ // n is the position of the decimal point relative to the start of the buffer.
+
+ if (k <= n and n <= max_exp)
+ {
+ // digits[000]
+ // len <= max_exp + 2
+
+ std::memset(buf + k, '0', static_cast<size_t>(n - k));
+ // Make it look like a floating-point number (#362, #378)
+ buf[n + 0] = '.';
+ buf[n + 1] = '0';
+ return buf + (n + 2);
+ }
+
+ if (0 < n and n <= max_exp)
+ {
+ // dig.its
+ // len <= max_digits10 + 1
+
+ assert(k > n);
+
+ std::memmove(buf + (n + 1), buf + n, static_cast<size_t>(k - n));
+ buf[n] = '.';
+ return buf + (k + 1);
+ }
+
+ if (min_exp < n and n <= 0)
+ {
+ // 0.[000]digits
+ // len <= 2 + (-min_exp - 1) + max_digits10
+
+ std::memmove(buf + (2 + -n), buf, static_cast<size_t>(k));
+ buf[0] = '0';
+ buf[1] = '.';
+ std::memset(buf + 2, '0', static_cast<size_t>(-n));
+ return buf + (2 + (-n) + k);
+ }
+
+ if (k == 1)
+ {
+ // dE+123
+ // len <= 1 + 5
+
+ buf += 1;
+ }
+ else
+ {
+ // d.igitsE+123
+ // len <= max_digits10 + 1 + 5
+
+ std::memmove(buf + 2, buf + 1, static_cast<size_t>(k - 1));
+ buf[1] = '.';
+ buf += 1 + k;
+ }
+
+ *buf++ = 'e';
+ return append_exponent(buf, n - 1);
+}
+
+} // namespace dtoa_impl
+
+/*!
+@brief generates a decimal representation of the floating-point number value in [first, last).
+
+The format of the resulting decimal representation is similar to printf's %g
+format. Returns an iterator pointing past-the-end of the decimal representation.
+
+@note The input number must be finite, i.e. NaN's and Inf's are not supported.
+@note The buffer must be large enough.
+@note The result is NOT null-terminated.
+*/
+template <typename FloatType>
+char* to_chars(char* first, const char* last, FloatType value)
+{
+ static_cast<void>(last); // maybe unused - fix warning
+ assert(std::isfinite(value));
+
+ // Use signbit(value) instead of (value < 0) since signbit works for -0.
+ if (std::signbit(value))
+ {
+ value = -value;
+ *first++ = '-';
+ }
+
+ if (value == 0) // +-0
+ {
+ *first++ = '0';
+ // Make it look like a floating-point number (#362, #378)
+ *first++ = '.';
+ *first++ = '0';
+ return first;
+ }
+
+ assert(last - first >= std::numeric_limits<FloatType>::max_digits10);
+
+ // Compute v = buffer * 10^decimal_exponent.
+ // The decimal digits are stored in the buffer, which needs to be interpreted
+ // as an unsigned decimal integer.
+ // len is the length of the buffer, i.e. the number of decimal digits.
+ int len = 0;
+ int decimal_exponent = 0;
+ dtoa_impl::grisu2(first, len, decimal_exponent, value);
+
+ assert(len <= std::numeric_limits<FloatType>::max_digits10);
+
+ // Format the buffer like printf("%.*g", prec, value)
+ constexpr int kMinExp = -4;
+ // Use digits10 here to increase compatibility with version 2.
+ constexpr int kMaxExp = std::numeric_limits<FloatType>::digits10;
+
+ assert(last - first >= kMaxExp + 2);
+ assert(last - first >= 2 + (-kMinExp - 1) + std::numeric_limits<FloatType>::max_digits10);
+ assert(last - first >= std::numeric_limits<FloatType>::max_digits10 + 6);
+
+ return dtoa_impl::format_buffer(first, len, decimal_exponent, kMinExp, kMaxExp);
+}
+
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/exceptions.hpp>
+
+// #include <nlohmann/detail/macro_scope.hpp>
+
+// #include <nlohmann/detail/meta/cpp_future.hpp>
+
+// #include <nlohmann/detail/output/binary_writer.hpp>
+
+// #include <nlohmann/detail/output/output_adapters.hpp>
+
+// #include <nlohmann/detail/value_t.hpp>
+
+
+namespace nlohmann
+{
+namespace detail
+{
+///////////////////
+// serialization //
+///////////////////
+
+/// how to treat decoding errors
+enum class error_handler_t
+{
+ strict, ///< throw a type_error exception in case of invalid UTF-8
+ replace, ///< replace invalid UTF-8 sequences with U+FFFD
+ ignore ///< ignore invalid UTF-8 sequences
+};
+
+template<typename BasicJsonType>
+class serializer
+{
+ using string_t = typename BasicJsonType::string_t;
+ using number_float_t = typename BasicJsonType::number_float_t;
+ using number_integer_t = typename BasicJsonType::number_integer_t;
+ using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ static constexpr std::uint8_t UTF8_ACCEPT = 0;
+ static constexpr std::uint8_t UTF8_REJECT = 1;
+
+ public:
+ /*!
+ @param[in] s output stream to serialize to
+ @param[in] ichar indentation character to use
+ @param[in] error_handler_ how to react on decoding errors
+ */
+ serializer(output_adapter_t<char> s, const char ichar,
+ error_handler_t error_handler_ = error_handler_t::strict)
+ : o(std::move(s))
+ , loc(std::localeconv())
+ , thousands_sep(loc->thousands_sep == nullptr ? '\0' : * (loc->thousands_sep))
+ , decimal_point(loc->decimal_point == nullptr ? '\0' : * (loc->decimal_point))
+ , indent_char(ichar)
+ , indent_string(512, indent_char)
+ , error_handler(error_handler_)
+ {}
+
+ // delete because of pointer members
+ serializer(const serializer&) = delete;
+ serializer& operator=(const serializer&) = delete;
+ serializer(serializer&&) = delete;
+ serializer& operator=(serializer&&) = delete;
+ ~serializer() = default;
+
+ /*!
+ @brief internal implementation of the serialization function
+
+ This function is called by the public member function dump and organizes
+ the serialization internally. The indentation level is propagated as
+ additional parameter. In case of arrays and objects, the function is
+ called recursively.
+
+ - strings and object keys are escaped using `escape_string()`
+ - integer numbers are converted implicitly via `operator<<`
+ - floating-point numbers are converted to a string using `"%g"` format
+
+ @param[in] val value to serialize
+ @param[in] pretty_print whether the output shall be pretty-printed
+ @param[in] indent_step the indent level
+ @param[in] current_indent the current indent level (only used internally)
+ */
+ void dump(const BasicJsonType& val, const bool pretty_print,
+ const bool ensure_ascii,
+ const unsigned int indent_step,
+ const unsigned int current_indent = 0)
+ {
+ switch (val.m_type)
+ {
+ case value_t::object:
+ {
+ if (val.m_value.object->empty())
+ {
+ o->write_characters("{}", 2);
+ return;
+ }
+
+ if (pretty_print)
+ {
+ o->write_characters("{\n", 2);
+
+ // variable to hold indentation for recursive calls
+ const auto new_indent = current_indent + indent_step;
+ if (JSON_UNLIKELY(indent_string.size() < new_indent))
+ {
+ indent_string.resize(indent_string.size() * 2, ' ');
+ }
+
+ // first n-1 elements
+ auto i = val.m_value.object->cbegin();
+ for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i)
+ {
+ o->write_characters(indent_string.c_str(), new_indent);
+ o->write_character('\"');
+ dump_escaped(i->first, ensure_ascii);
+ o->write_characters("\": ", 3);
+ dump(i->second, true, ensure_ascii, indent_step, new_indent);
+ o->write_characters(",\n", 2);
+ }
+
+ // last element
+ assert(i != val.m_value.object->cend());
+ assert(std::next(i) == val.m_value.object->cend());
+ o->write_characters(indent_string.c_str(), new_indent);
+ o->write_character('\"');
+ dump_escaped(i->first, ensure_ascii);
+ o->write_characters("\": ", 3);
+ dump(i->second, true, ensure_ascii, indent_step, new_indent);
+
+ o->write_character('\n');
+ o->write_characters(indent_string.c_str(), current_indent);
+ o->write_character('}');
+ }
+ else
+ {
+ o->write_character('{');
+
+ // first n-1 elements
+ auto i = val.m_value.object->cbegin();
+ for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i)
+ {
+ o->write_character('\"');
+ dump_escaped(i->first, ensure_ascii);
+ o->write_characters("\":", 2);
+ dump(i->second, false, ensure_ascii, indent_step, current_indent);
+ o->write_character(',');
+ }
+
+ // last element
+ assert(i != val.m_value.object->cend());
+ assert(std::next(i) == val.m_value.object->cend());
+ o->write_character('\"');
+ dump_escaped(i->first, ensure_ascii);
+ o->write_characters("\":", 2);
+ dump(i->second, false, ensure_ascii, indent_step, current_indent);
+
+ o->write_character('}');
+ }
+
+ return;
+ }
+
+ case value_t::array:
+ {
+ if (val.m_value.array->empty())
+ {
+ o->write_characters("[]", 2);
+ return;
+ }
+
+ if (pretty_print)
+ {
+ o->write_characters("[\n", 2);
+
+ // variable to hold indentation for recursive calls
+ const auto new_indent = current_indent + indent_step;
+ if (JSON_UNLIKELY(indent_string.size() < new_indent))
+ {
+ indent_string.resize(indent_string.size() * 2, ' ');
+ }
+
+ // first n-1 elements
+ for (auto i = val.m_value.array->cbegin();
+ i != val.m_value.array->cend() - 1; ++i)
+ {
+ o->write_characters(indent_string.c_str(), new_indent);
+ dump(*i, true, ensure_ascii, indent_step, new_indent);
+ o->write_characters(",\n", 2);
+ }
+
+ // last element
+ assert(not val.m_value.array->empty());
+ o->write_characters(indent_string.c_str(), new_indent);
+ dump(val.m_value.array->back(), true, ensure_ascii, indent_step, new_indent);
+
+ o->write_character('\n');
+ o->write_characters(indent_string.c_str(), current_indent);
+ o->write_character(']');
+ }
+ else
+ {
+ o->write_character('[');
+
+ // first n-1 elements
+ for (auto i = val.m_value.array->cbegin();
+ i != val.m_value.array->cend() - 1; ++i)
+ {
+ dump(*i, false, ensure_ascii, indent_step, current_indent);
+ o->write_character(',');
+ }
+
+ // last element
+ assert(not val.m_value.array->empty());
+ dump(val.m_value.array->back(), false, ensure_ascii, indent_step, current_indent);
+
+ o->write_character(']');
+ }
+
+ return;
+ }
+
+ case value_t::string:
+ {
+ o->write_character('\"');
+ dump_escaped(*val.m_value.string, ensure_ascii);
+ o->write_character('\"');
+ return;
+ }
+
+ case value_t::boolean:
+ {
+ if (val.m_value.boolean)
+ {
+ o->write_characters("true", 4);
+ }
+ else
+ {
+ o->write_characters("false", 5);
+ }
+ return;
+ }
+
+ case value_t::number_integer:
+ {
+ dump_integer(val.m_value.number_integer);
+ return;
+ }
+
+ case value_t::number_unsigned:
+ {
+ dump_integer(val.m_value.number_unsigned);
+ return;
+ }
+
+ case value_t::number_float:
+ {
+ dump_float(val.m_value.number_float);
+ return;
+ }
+
+ case value_t::discarded:
+ {
+ o->write_characters("<discarded>", 11);
+ return;
+ }
+
+ case value_t::null:
+ {
+ o->write_characters("null", 4);
+ return;
+ }
+
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+ }
+
+ private:
+ /*!
+ @brief dump escaped string
+
+ Escape a string by replacing certain special characters by a sequence of an
+ escape character (backslash) and another character and other control
+ characters by a sequence of "\u" followed by a four-digit hex
+ representation. The escaped string is written to output stream @a o.
+
+ @param[in] s the string to escape
+ @param[in] ensure_ascii whether to escape non-ASCII characters with
+ \uXXXX sequences
+
+ @complexity Linear in the length of string @a s.
+ */
+ void dump_escaped(const string_t& s, const bool ensure_ascii)
+ {
+ std::uint32_t codepoint;
+ std::uint8_t state = UTF8_ACCEPT;
+ std::size_t bytes = 0; // number of bytes written to string_buffer
+
+ // number of bytes written at the point of the last valid byte
+ std::size_t bytes_after_last_accept = 0;
+ std::size_t undumped_chars = 0;
+
+ for (std::size_t i = 0; i < s.size(); ++i)
+ {
+ const auto byte = static_cast<uint8_t>(s[i]);
+
+ switch (decode(state, codepoint, byte))
+ {
+ case UTF8_ACCEPT: // decode found a new code point
+ {
+ switch (codepoint)
+ {
+ case 0x08: // backspace
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = 'b';
+ break;
+ }
+
+ case 0x09: // horizontal tab
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = 't';
+ break;
+ }
+
+ case 0x0A: // newline
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = 'n';
+ break;
+ }
+
+ case 0x0C: // formfeed
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = 'f';
+ break;
+ }
+
+ case 0x0D: // carriage return
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = 'r';
+ break;
+ }
+
+ case 0x22: // quotation mark
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = '\"';
+ break;
+ }
+
+ case 0x5C: // reverse solidus
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = '\\';
+ break;
+ }
+
+ default:
+ {
+ // escape control characters (0x00..0x1F) or, if
+ // ensure_ascii parameter is used, non-ASCII characters
+ if ((codepoint <= 0x1F) or (ensure_ascii and (codepoint >= 0x7F)))
+ {
+ if (codepoint <= 0xFFFF)
+ {
+ (std::snprintf)(string_buffer.data() + bytes, 7, "\\u%04x",
+ static_cast<std::uint16_t>(codepoint));
+ bytes += 6;
+ }
+ else
+ {
+ (std::snprintf)(string_buffer.data() + bytes, 13, "\\u%04x\\u%04x",
+ static_cast<std::uint16_t>(0xD7C0u + (codepoint >> 10u)),
+ static_cast<std::uint16_t>(0xDC00u + (codepoint & 0x3FFu)));
+ bytes += 12;
+ }
+ }
+ else
+ {
+ // copy byte to buffer (all previous bytes
+ // been copied have in default case above)
+ string_buffer[bytes++] = s[i];
+ }
+ break;
+ }
+ }
+
+ // write buffer and reset index; there must be 13 bytes
+ // left, as this is the maximal number of bytes to be
+ // written ("\uxxxx\uxxxx\0") for one code point
+ if (string_buffer.size() - bytes < 13)
+ {
+ o->write_characters(string_buffer.data(), bytes);
+ bytes = 0;
+ }
+
+ // remember the byte position of this accept
+ bytes_after_last_accept = bytes;
+ undumped_chars = 0;
+ break;
+ }
+
+ case UTF8_REJECT: // decode found invalid UTF-8 byte
+ {
+ switch (error_handler)
+ {
+ case error_handler_t::strict:
+ {
+ std::string sn(3, '\0');
+ (std::snprintf)(&sn[0], sn.size(), "%.2X", byte);
+ JSON_THROW(type_error::create(316, "invalid UTF-8 byte at index " + std::to_string(i) + ": 0x" + sn));
+ }
+
+ case error_handler_t::ignore:
+ case error_handler_t::replace:
+ {
+ // in case we saw this character the first time, we
+ // would like to read it again, because the byte
+ // may be OK for itself, but just not OK for the
+ // previous sequence
+ if (undumped_chars > 0)
+ {
+ --i;
+ }
+
+ // reset length buffer to the last accepted index;
+ // thus removing/ignoring the invalid characters
+ bytes = bytes_after_last_accept;
+
+ if (error_handler == error_handler_t::replace)
+ {
+ // add a replacement character
+ if (ensure_ascii)
+ {
+ string_buffer[bytes++] = '\\';
+ string_buffer[bytes++] = 'u';
+ string_buffer[bytes++] = 'f';
+ string_buffer[bytes++] = 'f';
+ string_buffer[bytes++] = 'f';
+ string_buffer[bytes++] = 'd';
+ }
+ else
+ {
+ string_buffer[bytes++] = detail::binary_writer<BasicJsonType, char>::to_char_type('\xEF');
+ string_buffer[bytes++] = detail::binary_writer<BasicJsonType, char>::to_char_type('\xBF');
+ string_buffer[bytes++] = detail::binary_writer<BasicJsonType, char>::to_char_type('\xBD');
+ }
+
+ // write buffer and reset index; there must be 13 bytes
+ // left, as this is the maximal number of bytes to be
+ // written ("\uxxxx\uxxxx\0") for one code point
+ if (string_buffer.size() - bytes < 13)
+ {
+ o->write_characters(string_buffer.data(), bytes);
+ bytes = 0;
+ }
+
+ bytes_after_last_accept = bytes;
+ }
+
+ undumped_chars = 0;
+
+ // continue processing the string
+ state = UTF8_ACCEPT;
+ break;
+ }
+
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+ break;
+ }
+
+ default: // decode found yet incomplete multi-byte code point
+ {
+ if (not ensure_ascii)
+ {
+ // code point will not be escaped - copy byte to buffer
+ string_buffer[bytes++] = s[i];
+ }
+ ++undumped_chars;
+ break;
+ }
+ }
+ }
+
+ // we finished processing the string
+ if (JSON_LIKELY(state == UTF8_ACCEPT))
+ {
+ // write buffer
+ if (bytes > 0)
+ {
+ o->write_characters(string_buffer.data(), bytes);
+ }
+ }
+ else
+ {
+ // we finish reading, but do not accept: string was incomplete
+ switch (error_handler)
+ {
+ case error_handler_t::strict:
+ {
+ std::string sn(3, '\0');
+ (std::snprintf)(&sn[0], sn.size(), "%.2X", static_cast<std::uint8_t>(s.back()));
+ JSON_THROW(type_error::create(316, "incomplete UTF-8 string; last byte: 0x" + sn));
+ }
+
+ case error_handler_t::ignore:
+ {
+ // write all accepted bytes
+ o->write_characters(string_buffer.data(), bytes_after_last_accept);
+ break;
+ }
+
+ case error_handler_t::replace:
+ {
+ // write all accepted bytes
+ o->write_characters(string_buffer.data(), bytes_after_last_accept);
+ // add a replacement character
+ if (ensure_ascii)
+ {
+ o->write_characters("\\ufffd", 6);
+ }
+ else
+ {
+ o->write_characters("\xEF\xBF\xBD", 3);
+ }
+ break;
+ }
+
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+ }
+ }
+
+ /*!
+ @brief count digits
+
+ Count the number of decimal (base 10) digits for an input unsigned integer.
+
+ @param[in] x unsigned integer number to count its digits
+ @return number of decimal digits
+ */
+ inline unsigned int count_digits(number_unsigned_t x) noexcept
+ {
+ unsigned int n_digits = 1;
+ for (;;)
+ {
+ if (x < 10)
+ {
+ return n_digits;
+ }
+ if (x < 100)
+ {
+ return n_digits + 1;
+ }
+ if (x < 1000)
+ {
+ return n_digits + 2;
+ }
+ if (x < 10000)
+ {
+ return n_digits + 3;
+ }
+ x = x / 10000u;
+ n_digits += 4;
+ }
+ }
+
+ /*!
+ @brief dump an integer
+
+ Dump a given integer to output stream @a o. Works internally with
+ @a number_buffer.
+
+ @param[in] x integer number (signed or unsigned) to dump
+ @tparam NumberType either @a number_integer_t or @a number_unsigned_t
+ */
+ template<typename NumberType, detail::enable_if_t<
+ std::is_same<NumberType, number_unsigned_t>::value or
+ std::is_same<NumberType, number_integer_t>::value,
+ int> = 0>
+ void dump_integer(NumberType x)
+ {
+ static constexpr std::array<std::array<char, 2>, 100> digits_to_99
+ {
+ {
+ {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}},
+ {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}},
+ {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}},
+ {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}},
+ {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}},
+ {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}},
+ {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}},
+ {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}},
+ {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}},
+ {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}},
+ }
+ };
+
+ // special case for "0"
+ if (x == 0)
+ {
+ o->write_character('0');
+ return;
+ }
+
+ // use a pointer to fill the buffer
+ auto buffer_ptr = number_buffer.begin();
+
+ const bool is_negative = std::is_same<NumberType, number_integer_t>::value and not(x >= 0); // see issue #755
+ number_unsigned_t abs_value;
+
+ unsigned int n_chars;
+
+ if (is_negative)
+ {
+ *buffer_ptr = '-';
+ abs_value = static_cast<number_unsigned_t>(std::abs(static_cast<std::intmax_t>(x)));
+
+ // account one more byte for the minus sign
+ n_chars = 1 + count_digits(abs_value);
+ }
+ else
+ {
+ abs_value = static_cast<number_unsigned_t>(x);
+ n_chars = count_digits(abs_value);
+ }
+
+ // spare 1 byte for '\0'
+ assert(n_chars < number_buffer.size() - 1);
+
+ // jump to the end to generate the string from backward
+ // so we later avoid reversing the result
+ buffer_ptr += n_chars;
+
+ // Fast int2ascii implementation inspired by "Fastware" talk by Andrei Alexandrescu
+ // See: https://www.youtube.com/watch?v=o4-CwDo2zpg
+ while (abs_value >= 100)
+ {
+ const auto digits_index = static_cast<unsigned>((abs_value % 100));
+ abs_value /= 100;
+ *(--buffer_ptr) = digits_to_99[digits_index][1];
+ *(--buffer_ptr) = digits_to_99[digits_index][0];
+ }
+
+ if (abs_value >= 10)
+ {
+ const auto digits_index = static_cast<unsigned>(abs_value);
+ *(--buffer_ptr) = digits_to_99[digits_index][1];
+ *(--buffer_ptr) = digits_to_99[digits_index][0];
+ }
+ else
+ {
+ *(--buffer_ptr) = static_cast<char>('0' + abs_value);
+ }
+
+ o->write_characters(number_buffer.data(), n_chars);
+ }
+
+ /*!
+ @brief dump a floating-point number
+
+ Dump a given floating-point number to output stream @a o. Works internally
+ with @a number_buffer.
+
+ @param[in] x floating-point number to dump
+ */
+ void dump_float(number_float_t x)
+ {
+ // NaN / inf
+ if (not std::isfinite(x))
+ {
+ o->write_characters("null", 4);
+ return;
+ }
+
+ // If number_float_t is an IEEE-754 single or double precision number,
+ // use the Grisu2 algorithm to produce short numbers which are
+ // guaranteed to round-trip, using strtof and strtod, resp.
+ //
+ // NB: The test below works if <long double> == <double>.
+ static constexpr bool is_ieee_single_or_double
+ = (std::numeric_limits<number_float_t>::is_iec559 and std::numeric_limits<number_float_t>::digits == 24 and std::numeric_limits<number_float_t>::max_exponent == 128) or
+ (std::numeric_limits<number_float_t>::is_iec559 and std::numeric_limits<number_float_t>::digits == 53 and std::numeric_limits<number_float_t>::max_exponent == 1024);
+
+ dump_float(x, std::integral_constant<bool, is_ieee_single_or_double>());
+ }
+
+ void dump_float(number_float_t x, std::true_type /*is_ieee_single_or_double*/)
+ {
+ char* begin = number_buffer.data();
+ char* end = ::nlohmann::detail::to_chars(begin, begin + number_buffer.size(), x);
+
+ o->write_characters(begin, static_cast<size_t>(end - begin));
+ }
+
+ void dump_float(number_float_t x, std::false_type /*is_ieee_single_or_double*/)
+ {
+ // get number of digits for a float -> text -> float round-trip
+ static constexpr auto d = std::numeric_limits<number_float_t>::max_digits10;
+
+ // the actual conversion
+ std::ptrdiff_t len = (std::snprintf)(number_buffer.data(), number_buffer.size(), "%.*g", d, x);
+
+ // negative value indicates an error
+ assert(len > 0);
+ // check if buffer was large enough
+ assert(static_cast<std::size_t>(len) < number_buffer.size());
+
+ // erase thousands separator
+ if (thousands_sep != '\0')
+ {
+ const auto end = std::remove(number_buffer.begin(),
+ number_buffer.begin() + len, thousands_sep);
+ std::fill(end, number_buffer.end(), '\0');
+ assert((end - number_buffer.begin()) <= len);
+ len = (end - number_buffer.begin());
+ }
+
+ // convert decimal point to '.'
+ if (decimal_point != '\0' and decimal_point != '.')
+ {
+ const auto dec_pos = std::find(number_buffer.begin(), number_buffer.end(), decimal_point);
+ if (dec_pos != number_buffer.end())
+ {
+ *dec_pos = '.';
+ }
+ }
+
+ o->write_characters(number_buffer.data(), static_cast<std::size_t>(len));
+
+ // determine if need to append ".0"
+ const bool value_is_int_like =
+ std::none_of(number_buffer.begin(), number_buffer.begin() + len + 1,
+ [](char c)
+ {
+ return c == '.' or c == 'e';
+ });
+
+ if (value_is_int_like)
+ {
+ o->write_characters(".0", 2);
+ }
+ }
+
+ /*!
+ @brief check whether a string is UTF-8 encoded
+
+ The function checks each byte of a string whether it is UTF-8 encoded. The
+ result of the check is stored in the @a state parameter. The function must
+ be called initially with state 0 (accept). State 1 means the string must
+ be rejected, because the current byte is not allowed. If the string is
+ completely processed, but the state is non-zero, the string ended
+ prematurely; that is, the last byte indicated more bytes should have
+ followed.
+
+ @param[in,out] state the state of the decoding
+ @param[in,out] codep codepoint (valid only if resulting state is UTF8_ACCEPT)
+ @param[in] byte next byte to decode
+ @return new state
+
+ @note The function has been edited: a std::array is used.
+
+ @copyright Copyright (c) 2008-2009 Bjoern Hoehrmann <bjoern@hoehrmann.de>
+ @sa http://bjoern.hoehrmann.de/utf-8/decoder/dfa/
+ */
+ static std::uint8_t decode(std::uint8_t& state, std::uint32_t& codep, const std::uint8_t byte) noexcept
+ {
+ static const std::array<std::uint8_t, 400> utf8d =
+ {
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00..1F
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20..3F
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40..5F
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60..7F
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, // 80..9F
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // A0..BF
+ 8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // C0..DF
+ 0xA, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, // E0..EF
+ 0xB, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, // F0..FF
+ 0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, // s0..s0
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, // s1..s2
+ 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, // s3..s4
+ 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, // s5..s6
+ 1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // s7..s8
+ }
+ };
+
+ const std::uint8_t type = utf8d[byte];
+
+ codep = (state != UTF8_ACCEPT)
+ ? (byte & 0x3fu) | (codep << 6u)
+ : (0xFFu >> type) & (byte);
+
+ state = utf8d[256u + state * 16u + type];
+ return state;
+ }
+
+ private:
+ /// the output of the serializer
+ output_adapter_t<char> o = nullptr;
+
+ /// a (hopefully) large enough character buffer
+ std::array<char, 64> number_buffer{{}};
+
+ /// the locale
+ const std::lconv* loc = nullptr;
+ /// the locale's thousand separator character
+ const char thousands_sep = '\0';
+ /// the locale's decimal point character
+ const char decimal_point = '\0';
+
+ /// string buffer
+ std::array<char, 512> string_buffer{{}};
+
+ /// the indentation character
+ const char indent_char;
+ /// the indentation string
+ string_t indent_string;
+
+ /// error_handler how to react on decoding errors
+ const error_handler_t error_handler;
+};
+} // namespace detail
+} // namespace nlohmann
+
+// #include <nlohmann/detail/value_t.hpp>
+
+// #include <nlohmann/json_fwd.hpp>
+
+
+/*!
+@brief namespace for Niels Lohmann
+@see https://github.com/nlohmann
+@since version 1.0.0
+*/
+namespace nlohmann
+{
+
+/*!
+@brief a class to store JSON values
+
+@tparam ObjectType type for JSON objects (`std::map` by default; will be used
+in @ref object_t)
+@tparam ArrayType type for JSON arrays (`std::vector` by default; will be used
+in @ref array_t)
+@tparam StringType type for JSON strings and object keys (`std::string` by
+default; will be used in @ref string_t)
+@tparam BooleanType type for JSON booleans (`bool` by default; will be used
+in @ref boolean_t)
+@tparam NumberIntegerType type for JSON integer numbers (`int64_t` by
+default; will be used in @ref number_integer_t)
+@tparam NumberUnsignedType type for JSON unsigned integer numbers (@c
+`uint64_t` by default; will be used in @ref number_unsigned_t)
+@tparam NumberFloatType type for JSON floating-point numbers (`double` by
+default; will be used in @ref number_float_t)
+@tparam AllocatorType type of the allocator to use (`std::allocator` by
+default)
+@tparam JSONSerializer the serializer to resolve internal calls to `to_json()`
+and `from_json()` (@ref adl_serializer by default)
+
+@requirement The class satisfies the following concept requirements:
+- Basic
+ - [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible):
+ JSON values can be default constructed. The result will be a JSON null
+ value.
+ - [MoveConstructible](https://en.cppreference.com/w/cpp/named_req/MoveConstructible):
+ A JSON value can be constructed from an rvalue argument.
+ - [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible):
+ A JSON value can be copy-constructed from an lvalue expression.
+ - [MoveAssignable](https://en.cppreference.com/w/cpp/named_req/MoveAssignable):
+ A JSON value van be assigned from an rvalue argument.
+ - [CopyAssignable](https://en.cppreference.com/w/cpp/named_req/CopyAssignable):
+ A JSON value can be copy-assigned from an lvalue expression.
+ - [Destructible](https://en.cppreference.com/w/cpp/named_req/Destructible):
+ JSON values can be destructed.
+- Layout
+ - [StandardLayoutType](https://en.cppreference.com/w/cpp/named_req/StandardLayoutType):
+ JSON values have
+ [standard layout](https://en.cppreference.com/w/cpp/language/data_members#Standard_layout):
+ All non-static data members are private and standard layout types, the
+ class has no virtual functions or (virtual) base classes.
+- Library-wide
+ - [EqualityComparable](https://en.cppreference.com/w/cpp/named_req/EqualityComparable):
+ JSON values can be compared with `==`, see @ref
+ operator==(const_reference,const_reference).
+ - [LessThanComparable](https://en.cppreference.com/w/cpp/named_req/LessThanComparable):
+ JSON values can be compared with `<`, see @ref
+ operator<(const_reference,const_reference).
+ - [Swappable](https://en.cppreference.com/w/cpp/named_req/Swappable):
+ Any JSON lvalue or rvalue of can be swapped with any lvalue or rvalue of
+ other compatible types, using unqualified function call @ref swap().
+ - [NullablePointer](https://en.cppreference.com/w/cpp/named_req/NullablePointer):
+ JSON values can be compared against `std::nullptr_t` objects which are used
+ to model the `null` value.
+- Container
+ - [Container](https://en.cppreference.com/w/cpp/named_req/Container):
+ JSON values can be used like STL containers and provide iterator access.
+ - [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer);
+ JSON values can be used like STL containers and provide reverse iterator
+ access.
+
+@invariant The member variables @a m_value and @a m_type have the following
+relationship:
+- If `m_type == value_t::object`, then `m_value.object != nullptr`.
+- If `m_type == value_t::array`, then `m_value.array != nullptr`.
+- If `m_type == value_t::string`, then `m_value.string != nullptr`.
+The invariants are checked by member function assert_invariant().
+
+@internal
+@note ObjectType trick from http://stackoverflow.com/a/9860911
+@endinternal
+
+@see [RFC 7159: The JavaScript Object Notation (JSON) Data Interchange
+Format](http://rfc7159.net/rfc7159)
+
+@since version 1.0.0
+
+@nosubgrouping
+*/
+NLOHMANN_BASIC_JSON_TPL_DECLARATION
+class basic_json
+{
+ private:
+ template<detail::value_t> friend struct detail::external_constructor;
+ friend ::nlohmann::json_pointer<basic_json>;
+ friend ::nlohmann::detail::parser<basic_json>;
+ friend ::nlohmann::detail::serializer<basic_json>;
+ template<typename BasicJsonType>
+ friend class ::nlohmann::detail::iter_impl;
+ template<typename BasicJsonType, typename CharType>
+ friend class ::nlohmann::detail::binary_writer;
+ template<typename BasicJsonType, typename SAX>
+ friend class ::nlohmann::detail::binary_reader;
+ template<typename BasicJsonType>
+ friend class ::nlohmann::detail::json_sax_dom_parser;
+ template<typename BasicJsonType>
+ friend class ::nlohmann::detail::json_sax_dom_callback_parser;
+
+ /// workaround type for MSVC
+ using basic_json_t = NLOHMANN_BASIC_JSON_TPL;
+
+ // convenience aliases for types residing in namespace detail;
+ using lexer = ::nlohmann::detail::lexer<basic_json>;
+ using parser = ::nlohmann::detail::parser<basic_json>;
+
+ using primitive_iterator_t = ::nlohmann::detail::primitive_iterator_t;
+ template<typename BasicJsonType>
+ using internal_iterator = ::nlohmann::detail::internal_iterator<BasicJsonType>;
+ template<typename BasicJsonType>
+ using iter_impl = ::nlohmann::detail::iter_impl<BasicJsonType>;
+ template<typename Iterator>
+ using iteration_proxy = ::nlohmann::detail::iteration_proxy<Iterator>;
+ template<typename Base> using json_reverse_iterator = ::nlohmann::detail::json_reverse_iterator<Base>;
+
+ template<typename CharType>
+ using output_adapter_t = ::nlohmann::detail::output_adapter_t<CharType>;
+
+ using binary_reader = ::nlohmann::detail::binary_reader<basic_json>;
+ template<typename CharType> using binary_writer = ::nlohmann::detail::binary_writer<basic_json, CharType>;
+
+ using serializer = ::nlohmann::detail::serializer<basic_json>;
+
+ public:
+ using value_t = detail::value_t;
+ /// JSON Pointer, see @ref nlohmann::json_pointer
+ using json_pointer = ::nlohmann::json_pointer<basic_json>;
+ template<typename T, typename SFINAE>
+ using json_serializer = JSONSerializer<T, SFINAE>;
+ /// how to treat decoding errors
+ using error_handler_t = detail::error_handler_t;
+ /// helper type for initializer lists of basic_json values
+ using initializer_list_t = std::initializer_list<detail::json_ref<basic_json>>;
+
+ using input_format_t = detail::input_format_t;
+ /// SAX interface type, see @ref nlohmann::json_sax
+ using json_sax_t = json_sax<basic_json>;
+
+ ////////////////
+ // exceptions //
+ ////////////////
+
+ /// @name exceptions
+ /// Classes to implement user-defined exceptions.
+ /// @{
+
+ /// @copydoc detail::exception
+ using exception = detail::exception;
+ /// @copydoc detail::parse_error
+ using parse_error = detail::parse_error;
+ /// @copydoc detail::invalid_iterator
+ using invalid_iterator = detail::invalid_iterator;
+ /// @copydoc detail::type_error
+ using type_error = detail::type_error;
+ /// @copydoc detail::out_of_range
+ using out_of_range = detail::out_of_range;
+ /// @copydoc detail::other_error
+ using other_error = detail::other_error;
+
+ /// @}
+
+
+ /////////////////////
+ // container types //
+ /////////////////////
+
+ /// @name container types
+ /// The canonic container types to use @ref basic_json like any other STL
+ /// container.
+ /// @{
+
+ /// the type of elements in a basic_json container
+ using value_type = basic_json;
+
+ /// the type of an element reference
+ using reference = value_type&;
+ /// the type of an element const reference
+ using const_reference = const value_type&;
+
+ /// a type to represent differences between iterators
+ using difference_type = std::ptrdiff_t;
+ /// a type to represent container sizes
+ using size_type = std::size_t;
+
+ /// the allocator type
+ using allocator_type = AllocatorType<basic_json>;
+
+ /// the type of an element pointer
+ using pointer = typename std::allocator_traits<allocator_type>::pointer;
+ /// the type of an element const pointer
+ using const_pointer = typename std::allocator_traits<allocator_type>::const_pointer;
+
+ /// an iterator for a basic_json container
+ using iterator = iter_impl<basic_json>;
+ /// a const iterator for a basic_json container
+ using const_iterator = iter_impl<const basic_json>;
+ /// a reverse iterator for a basic_json container
+ using reverse_iterator = json_reverse_iterator<typename basic_json::iterator>;
+ /// a const reverse iterator for a basic_json container
+ using const_reverse_iterator = json_reverse_iterator<typename basic_json::const_iterator>;
+
+ /// @}
+
+
+ /*!
+ @brief returns the allocator associated with the container
+ */
+ static allocator_type get_allocator()
+ {
+ return allocator_type();
+ }
+
+ /*!
+ @brief returns version information on the library
+
+ This function returns a JSON object with information about the library,
+ including the version number and information on the platform and compiler.
+
+ @return JSON object holding version information
+ key | description
+ ----------- | ---------------
+ `compiler` | Information on the used compiler. It is an object with the following keys: `c++` (the used C++ standard), `family` (the compiler family; possible values are `clang`, `icc`, `gcc`, `ilecpp`, `msvc`, `pgcpp`, `sunpro`, and `unknown`), and `version` (the compiler version).
+ `copyright` | The copyright line for the library as string.
+ `name` | The name of the library as string.
+ `platform` | The used platform as string. Possible values are `win32`, `linux`, `apple`, `unix`, and `unknown`.
+ `url` | The URL of the project as string.
+ `version` | The version of the library. It is an object with the following keys: `major`, `minor`, and `patch` as defined by [Semantic Versioning](http://semver.org), and `string` (the version string).
+
+ @liveexample{The following code shows an example output of the `meta()`
+ function.,meta}
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @complexity Constant.
+
+ @since 2.1.0
+ */
+ JSON_NODISCARD
+ static basic_json meta()
+ {
+ basic_json result;
+
+ result["copyright"] = "(C) 2013-2017 Niels Lohmann";
+ result["name"] = "JSON for Modern C++";
+ result["url"] = "https://github.com/nlohmann/json";
+ result["version"]["string"] =
+ std::to_string(NLOHMANN_JSON_VERSION_MAJOR) + "." +
+ std::to_string(NLOHMANN_JSON_VERSION_MINOR) + "." +
+ std::to_string(NLOHMANN_JSON_VERSION_PATCH);
+ result["version"]["major"] = NLOHMANN_JSON_VERSION_MAJOR;
+ result["version"]["minor"] = NLOHMANN_JSON_VERSION_MINOR;
+ result["version"]["patch"] = NLOHMANN_JSON_VERSION_PATCH;
+
+#ifdef _WIN32
+ result["platform"] = "win32";
+#elif defined __linux__
+ result["platform"] = "linux";
+#elif defined __APPLE__
+ result["platform"] = "apple";
+#elif defined __unix__
+ result["platform"] = "unix";
+#else
+ result["platform"] = "unknown";
+#endif
+
+#if defined(__ICC) || defined(__INTEL_COMPILER)
+ result["compiler"] = {{"family", "icc"}, {"version", __INTEL_COMPILER}};
+#elif defined(__clang__)
+ result["compiler"] = {{"family", "clang"}, {"version", __clang_version__}};
+#elif defined(__GNUC__) || defined(__GNUG__)
+ result["compiler"] = {{"family", "gcc"}, {"version", std::to_string(__GNUC__) + "." + std::to_string(__GNUC_MINOR__) + "." + std::to_string(__GNUC_PATCHLEVEL__)}};
+#elif defined(__HP_cc) || defined(__HP_aCC)
+ result["compiler"] = "hp"
+#elif defined(__IBMCPP__)
+ result["compiler"] = {{"family", "ilecpp"}, {"version", __IBMCPP__}};
+#elif defined(_MSC_VER)
+ result["compiler"] = {{"family", "msvc"}, {"version", _MSC_VER}};
+#elif defined(__PGI)
+ result["compiler"] = {{"family", "pgcpp"}, {"version", __PGI}};
+#elif defined(__SUNPRO_CC)
+ result["compiler"] = {{"family", "sunpro"}, {"version", __SUNPRO_CC}};
+#else
+ result["compiler"] = {{"family", "unknown"}, {"version", "unknown"}};
+#endif
+
+#ifdef __cplusplus
+ result["compiler"]["c++"] = std::to_string(__cplusplus);
+#else
+ result["compiler"]["c++"] = "unknown";
+#endif
+ return result;
+ }
+
+
+ ///////////////////////////
+ // JSON value data types //
+ ///////////////////////////
+
+ /// @name JSON value data types
+ /// The data types to store a JSON value. These types are derived from
+ /// the template arguments passed to class @ref basic_json.
+ /// @{
+
+#if defined(JSON_HAS_CPP_14)
+ // Use transparent comparator if possible, combined with perfect forwarding
+ // on find() and count() calls prevents unnecessary string construction.
+ using object_comparator_t = std::less<>;
+#else
+ using object_comparator_t = std::less<StringType>;
+#endif
+
+ /*!
+ @brief a type for an object
+
+ [RFC 7159](http://rfc7159.net/rfc7159) describes JSON objects as follows:
+ > An object is an unordered collection of zero or more name/value pairs,
+ > where a name is a string and a value is a string, number, boolean, null,
+ > object, or array.
+
+ To store objects in C++, a type is defined by the template parameters
+ described below.
+
+ @tparam ObjectType the container to store objects (e.g., `std::map` or
+ `std::unordered_map`)
+ @tparam StringType the type of the keys or names (e.g., `std::string`).
+ The comparison function `std::less<StringType>` is used to order elements
+ inside the container.
+ @tparam AllocatorType the allocator to use for objects (e.g.,
+ `std::allocator`)
+
+ #### Default type
+
+ With the default values for @a ObjectType (`std::map`), @a StringType
+ (`std::string`), and @a AllocatorType (`std::allocator`), the default
+ value for @a object_t is:
+
+ @code {.cpp}
+ std::map<
+ std::string, // key_type
+ basic_json, // value_type
+ std::less<std::string>, // key_compare
+ std::allocator<std::pair<const std::string, basic_json>> // allocator_type
+ >
+ @endcode
+
+ #### Behavior
+
+ The choice of @a object_t influences the behavior of the JSON class. With
+ the default type, objects have the following behavior:
+
+ - When all names are unique, objects will be interoperable in the sense
+ that all software implementations receiving that object will agree on
+ the name-value mappings.
+ - When the names within an object are not unique, it is unspecified which
+ one of the values for a given key will be chosen. For instance,
+ `{"key": 2, "key": 1}` could be equal to either `{"key": 1}` or
+ `{"key": 2}`.
+ - Internally, name/value pairs are stored in lexicographical order of the
+ names. Objects will also be serialized (see @ref dump) in this order.
+ For instance, `{"b": 1, "a": 2}` and `{"a": 2, "b": 1}` will be stored
+ and serialized as `{"a": 2, "b": 1}`.
+ - When comparing objects, the order of the name/value pairs is irrelevant.
+ This makes objects interoperable in the sense that they will not be
+ affected by these differences. For instance, `{"b": 1, "a": 2}` and
+ `{"a": 2, "b": 1}` will be treated as equal.
+
+ #### Limits
+
+ [RFC 7159](http://rfc7159.net/rfc7159) specifies:
+ > An implementation may set limits on the maximum depth of nesting.
+
+ In this class, the object's limit of nesting is not explicitly constrained.
+ However, a maximum depth of nesting may be introduced by the compiler or
+ runtime environment. A theoretical limit can be queried by calling the
+ @ref max_size function of a JSON object.
+
+ #### Storage
+
+ Objects are stored as pointers in a @ref basic_json type. That is, for any
+ access to object values, a pointer of type `object_t*` must be
+ dereferenced.
+
+ @sa @ref array_t -- type for an array value
+
+ @since version 1.0.0
+
+ @note The order name/value pairs are added to the object is *not*
+ preserved by the library. Therefore, iterating an object may return
+ name/value pairs in a different order than they were originally stored. In
+ fact, keys will be traversed in alphabetical order as `std::map` with
+ `std::less` is used by default. Please note this behavior conforms to [RFC
+ 7159](http://rfc7159.net/rfc7159), because any order implements the
+ specified "unordered" nature of JSON objects.
+ */
+ using object_t = ObjectType<StringType,
+ basic_json,
+ object_comparator_t,
+ AllocatorType<std::pair<const StringType,
+ basic_json>>>;
+
+ /*!
+ @brief a type for an array
+
+ [RFC 7159](http://rfc7159.net/rfc7159) describes JSON arrays as follows:
+ > An array is an ordered sequence of zero or more values.
+
+ To store objects in C++, a type is defined by the template parameters
+ explained below.
+
+ @tparam ArrayType container type to store arrays (e.g., `std::vector` or
+ `std::list`)
+ @tparam AllocatorType allocator to use for arrays (e.g., `std::allocator`)
+
+ #### Default type
+
+ With the default values for @a ArrayType (`std::vector`) and @a
+ AllocatorType (`std::allocator`), the default value for @a array_t is:
+
+ @code {.cpp}
+ std::vector<
+ basic_json, // value_type
+ std::allocator<basic_json> // allocator_type
+ >
+ @endcode
+
+ #### Limits
+
+ [RFC 7159](http://rfc7159.net/rfc7159) specifies:
+ > An implementation may set limits on the maximum depth of nesting.
+
+ In this class, the array's limit of nesting is not explicitly constrained.
+ However, a maximum depth of nesting may be introduced by the compiler or
+ runtime environment. A theoretical limit can be queried by calling the
+ @ref max_size function of a JSON array.
+
+ #### Storage
+
+ Arrays are stored as pointers in a @ref basic_json type. That is, for any
+ access to array values, a pointer of type `array_t*` must be dereferenced.
+
+ @sa @ref object_t -- type for an object value
+
+ @since version 1.0.0
+ */
+ using array_t = ArrayType<basic_json, AllocatorType<basic_json>>;
+
+ /*!
+ @brief a type for a string
+
+ [RFC 7159](http://rfc7159.net/rfc7159) describes JSON strings as follows:
+ > A string is a sequence of zero or more Unicode characters.
+
+ To store objects in C++, a type is defined by the template parameter
+ described below. Unicode values are split by the JSON class into
+ byte-sized characters during deserialization.
+
+ @tparam StringType the container to store strings (e.g., `std::string`).
+ Note this container is used for keys/names in objects, see @ref object_t.
+
+ #### Default type
+
+ With the default values for @a StringType (`std::string`), the default
+ value for @a string_t is:
+
+ @code {.cpp}
+ std::string
+ @endcode
+
+ #### Encoding
+
+ Strings are stored in UTF-8 encoding. Therefore, functions like
+ `std::string::size()` or `std::string::length()` return the number of
+ bytes in the string rather than the number of characters or glyphs.
+
+ #### String comparison
+
+ [RFC 7159](http://rfc7159.net/rfc7159) states:
+ > Software implementations are typically required to test names of object
+ > members for equality. Implementations that transform the textual
+ > representation into sequences of Unicode code units and then perform the
+ > comparison numerically, code unit by code unit, are interoperable in the
+ > sense that implementations will agree in all cases on equality or
+ > inequality of two strings. For example, implementations that compare
+ > strings with escaped characters unconverted may incorrectly find that
+ > `"a\\b"` and `"a\u005Cb"` are not equal.
+
+ This implementation is interoperable as it does compare strings code unit
+ by code unit.
+
+ #### Storage
+
+ String values are stored as pointers in a @ref basic_json type. That is,
+ for any access to string values, a pointer of type `string_t*` must be
+ dereferenced.
+
+ @since version 1.0.0
+ */
+ using string_t = StringType;
+
+ /*!
+ @brief a type for a boolean
+
+ [RFC 7159](http://rfc7159.net/rfc7159) implicitly describes a boolean as a
+ type which differentiates the two literals `true` and `false`.
+
+ To store objects in C++, a type is defined by the template parameter @a
+ BooleanType which chooses the type to use.
+
+ #### Default type
+
+ With the default values for @a BooleanType (`bool`), the default value for
+ @a boolean_t is:
+
+ @code {.cpp}
+ bool
+ @endcode
+
+ #### Storage
+
+ Boolean values are stored directly inside a @ref basic_json type.
+
+ @since version 1.0.0
+ */
+ using boolean_t = BooleanType;
+
+ /*!
+ @brief a type for a number (integer)
+
+ [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows:
+ > The representation of numbers is similar to that used in most
+ > programming languages. A number is represented in base 10 using decimal
+ > digits. It contains an integer component that may be prefixed with an
+ > optional minus sign, which may be followed by a fraction part and/or an
+ > exponent part. Leading zeros are not allowed. (...) Numeric values that
+ > cannot be represented in the grammar below (such as Infinity and NaN)
+ > are not permitted.
+
+ This description includes both integer and floating-point numbers.
+ However, C++ allows more precise storage if it is known whether the number
+ is a signed integer, an unsigned integer or a floating-point number.
+ Therefore, three different types, @ref number_integer_t, @ref
+ number_unsigned_t and @ref number_float_t are used.
+
+ To store integer numbers in C++, a type is defined by the template
+ parameter @a NumberIntegerType which chooses the type to use.
+
+ #### Default type
+
+ With the default values for @a NumberIntegerType (`int64_t`), the default
+ value for @a number_integer_t is:
+
+ @code {.cpp}
+ int64_t
+ @endcode
+
+ #### Default behavior
+
+ - The restrictions about leading zeros is not enforced in C++. Instead,
+ leading zeros in integer literals lead to an interpretation as octal
+ number. Internally, the value will be stored as decimal number. For
+ instance, the C++ integer literal `010` will be serialized to `8`.
+ During deserialization, leading zeros yield an error.
+ - Not-a-number (NaN) values will be serialized to `null`.
+
+ #### Limits
+
+ [RFC 7159](http://rfc7159.net/rfc7159) specifies:
+ > An implementation may set limits on the range and precision of numbers.
+
+ When the default type is used, the maximal integer number that can be
+ stored is `9223372036854775807` (INT64_MAX) and the minimal integer number
+ that can be stored is `-9223372036854775808` (INT64_MIN). Integer numbers
+ that are out of range will yield over/underflow when used in a
+ constructor. During deserialization, too large or small integer numbers
+ will be automatically be stored as @ref number_unsigned_t or @ref
+ number_float_t.
+
+ [RFC 7159](http://rfc7159.net/rfc7159) further states:
+ > Note that when such software is used, numbers that are integers and are
+ > in the range \f$[-2^{53}+1, 2^{53}-1]\f$ are interoperable in the sense
+ > that implementations will agree exactly on their numeric values.
+
+ As this range is a subrange of the exactly supported range [INT64_MIN,
+ INT64_MAX], this class's integer type is interoperable.
+
+ #### Storage
+
+ Integer number values are stored directly inside a @ref basic_json type.
+
+ @sa @ref number_float_t -- type for number values (floating-point)
+
+ @sa @ref number_unsigned_t -- type for number values (unsigned integer)
+
+ @since version 1.0.0
+ */
+ using number_integer_t = NumberIntegerType;
+
+ /*!
+ @brief a type for a number (unsigned)
+
+ [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows:
+ > The representation of numbers is similar to that used in most
+ > programming languages. A number is represented in base 10 using decimal
+ > digits. It contains an integer component that may be prefixed with an
+ > optional minus sign, which may be followed by a fraction part and/or an
+ > exponent part. Leading zeros are not allowed. (...) Numeric values that
+ > cannot be represented in the grammar below (such as Infinity and NaN)
+ > are not permitted.
+
+ This description includes both integer and floating-point numbers.
+ However, C++ allows more precise storage if it is known whether the number
+ is a signed integer, an unsigned integer or a floating-point number.
+ Therefore, three different types, @ref number_integer_t, @ref
+ number_unsigned_t and @ref number_float_t are used.
+
+ To store unsigned integer numbers in C++, a type is defined by the
+ template parameter @a NumberUnsignedType which chooses the type to use.
+
+ #### Default type
+
+ With the default values for @a NumberUnsignedType (`uint64_t`), the
+ default value for @a number_unsigned_t is:
+
+ @code {.cpp}
+ uint64_t
+ @endcode
+
+ #### Default behavior
+
+ - The restrictions about leading zeros is not enforced in C++. Instead,
+ leading zeros in integer literals lead to an interpretation as octal
+ number. Internally, the value will be stored as decimal number. For
+ instance, the C++ integer literal `010` will be serialized to `8`.
+ During deserialization, leading zeros yield an error.
+ - Not-a-number (NaN) values will be serialized to `null`.
+
+ #### Limits
+
+ [RFC 7159](http://rfc7159.net/rfc7159) specifies:
+ > An implementation may set limits on the range and precision of numbers.
+
+ When the default type is used, the maximal integer number that can be
+ stored is `18446744073709551615` (UINT64_MAX) and the minimal integer
+ number that can be stored is `0`. Integer numbers that are out of range
+ will yield over/underflow when used in a constructor. During
+ deserialization, too large or small integer numbers will be automatically
+ be stored as @ref number_integer_t or @ref number_float_t.
+
+ [RFC 7159](http://rfc7159.net/rfc7159) further states:
+ > Note that when such software is used, numbers that are integers and are
+ > in the range \f$[-2^{53}+1, 2^{53}-1]\f$ are interoperable in the sense
+ > that implementations will agree exactly on their numeric values.
+
+ As this range is a subrange (when considered in conjunction with the
+ number_integer_t type) of the exactly supported range [0, UINT64_MAX],
+ this class's integer type is interoperable.
+
+ #### Storage
+
+ Integer number values are stored directly inside a @ref basic_json type.
+
+ @sa @ref number_float_t -- type for number values (floating-point)
+ @sa @ref number_integer_t -- type for number values (integer)
+
+ @since version 2.0.0
+ */
+ using number_unsigned_t = NumberUnsignedType;
+
+ /*!
+ @brief a type for a number (floating-point)
+
+ [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows:
+ > The representation of numbers is similar to that used in most
+ > programming languages. A number is represented in base 10 using decimal
+ > digits. It contains an integer component that may be prefixed with an
+ > optional minus sign, which may be followed by a fraction part and/or an
+ > exponent part. Leading zeros are not allowed. (...) Numeric values that
+ > cannot be represented in the grammar below (such as Infinity and NaN)
+ > are not permitted.
+
+ This description includes both integer and floating-point numbers.
+ However, C++ allows more precise storage if it is known whether the number
+ is a signed integer, an unsigned integer or a floating-point number.
+ Therefore, three different types, @ref number_integer_t, @ref
+ number_unsigned_t and @ref number_float_t are used.
+
+ To store floating-point numbers in C++, a type is defined by the template
+ parameter @a NumberFloatType which chooses the type to use.
+
+ #### Default type
+
+ With the default values for @a NumberFloatType (`double`), the default
+ value for @a number_float_t is:
+
+ @code {.cpp}
+ double
+ @endcode
+
+ #### Default behavior
+
+ - The restrictions about leading zeros is not enforced in C++. Instead,
+ leading zeros in floating-point literals will be ignored. Internally,
+ the value will be stored as decimal number. For instance, the C++
+ floating-point literal `01.2` will be serialized to `1.2`. During
+ deserialization, leading zeros yield an error.
+ - Not-a-number (NaN) values will be serialized to `null`.
+
+ #### Limits
+
+ [RFC 7159](http://rfc7159.net/rfc7159) states:
+ > This specification allows implementations to set limits on the range and
+ > precision of numbers accepted. Since software that implements IEEE
+ > 754-2008 binary64 (double precision) numbers is generally available and
+ > widely used, good interoperability can be achieved by implementations
+ > that expect no more precision or range than these provide, in the sense
+ > that implementations will approximate JSON numbers within the expected
+ > precision.
+
+ This implementation does exactly follow this approach, as it uses double
+ precision floating-point numbers. Note values smaller than
+ `-1.79769313486232e+308` and values greater than `1.79769313486232e+308`
+ will be stored as NaN internally and be serialized to `null`.
+
+ #### Storage
+
+ Floating-point number values are stored directly inside a @ref basic_json
+ type.
+
+ @sa @ref number_integer_t -- type for number values (integer)
+
+ @sa @ref number_unsigned_t -- type for number values (unsigned integer)
+
+ @since version 1.0.0
+ */
+ using number_float_t = NumberFloatType;
+
+ /// @}
+
+ private:
+
+ /// helper for exception-safe object creation
+ template<typename T, typename... Args>
+ static T* create(Args&& ... args)
+ {
+ AllocatorType<T> alloc;
+ using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
+
+ auto deleter = [&](T * object)
+ {
+ AllocatorTraits::deallocate(alloc, object, 1);
+ };
+ std::unique_ptr<T, decltype(deleter)> object(AllocatorTraits::allocate(alloc, 1), deleter);
+ AllocatorTraits::construct(alloc, object.get(), std::forward<Args>(args)...);
+ assert(object != nullptr);
+ return object.release();
+ }
+
+ ////////////////////////
+ // JSON value storage //
+ ////////////////////////
+
+ /*!
+ @brief a JSON value
+
+ The actual storage for a JSON value of the @ref basic_json class. This
+ union combines the different storage types for the JSON value types
+ defined in @ref value_t.
+
+ JSON type | value_t type | used type
+ --------- | --------------- | ------------------------
+ object | object | pointer to @ref object_t
+ array | array | pointer to @ref array_t
+ string | string | pointer to @ref string_t
+ boolean | boolean | @ref boolean_t
+ number | number_integer | @ref number_integer_t
+ number | number_unsigned | @ref number_unsigned_t
+ number | number_float | @ref number_float_t
+ null | null | *no value is stored*
+
+ @note Variable-length types (objects, arrays, and strings) are stored as
+ pointers. The size of the union should not exceed 64 bits if the default
+ value types are used.
+
+ @since version 1.0.0
+ */
+ union json_value
+ {
+ /// object (stored with pointer to save storage)
+ object_t* object;
+ /// array (stored with pointer to save storage)
+ array_t* array;
+ /// string (stored with pointer to save storage)
+ string_t* string;
+ /// boolean
+ boolean_t boolean;
+ /// number (integer)
+ number_integer_t number_integer;
+ /// number (unsigned integer)
+ number_unsigned_t number_unsigned;
+ /// number (floating-point)
+ number_float_t number_float;
+
+ /// default constructor (for null values)
+ json_value() = default;
+ /// constructor for booleans
+ json_value(boolean_t v) noexcept : boolean(v) {}
+ /// constructor for numbers (integer)
+ json_value(number_integer_t v) noexcept : number_integer(v) {}
+ /// constructor for numbers (unsigned)
+ json_value(number_unsigned_t v) noexcept : number_unsigned(v) {}
+ /// constructor for numbers (floating-point)
+ json_value(number_float_t v) noexcept : number_float(v) {}
+ /// constructor for empty values of a given type
+ json_value(value_t t)
+ {
+ switch (t)
+ {
+ case value_t::object:
+ {
+ object = create<object_t>();
+ break;
+ }
+
+ case value_t::array:
+ {
+ array = create<array_t>();
+ break;
+ }
+
+ case value_t::string:
+ {
+ string = create<string_t>("");
+ break;
+ }
+
+ case value_t::boolean:
+ {
+ boolean = boolean_t(false);
+ break;
+ }
+
+ case value_t::number_integer:
+ {
+ number_integer = number_integer_t(0);
+ break;
+ }
+
+ case value_t::number_unsigned:
+ {
+ number_unsigned = number_unsigned_t(0);
+ break;
+ }
+
+ case value_t::number_float:
+ {
+ number_float = number_float_t(0.0);
+ break;
+ }
+
+ case value_t::null:
+ {
+ object = nullptr; // silence warning, see #821
+ break;
+ }
+
+ default:
+ {
+ object = nullptr; // silence warning, see #821
+ if (JSON_UNLIKELY(t == value_t::null))
+ {
+ JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.6.1")); // LCOV_EXCL_LINE
+ }
+ break;
+ }
+ }
+ }
+
+ /// constructor for strings
+ json_value(const string_t& value)
+ {
+ string = create<string_t>(value);
+ }
+
+ /// constructor for rvalue strings
+ json_value(string_t&& value)
+ {
+ string = create<string_t>(std::move(value));
+ }
+
+ /// constructor for objects
+ json_value(const object_t& value)
+ {
+ object = create<object_t>(value);
+ }
+
+ /// constructor for rvalue objects
+ json_value(object_t&& value)
+ {
+ object = create<object_t>(std::move(value));
+ }
+
+ /// constructor for arrays
+ json_value(const array_t& value)
+ {
+ array = create<array_t>(value);
+ }
+
+ /// constructor for rvalue arrays
+ json_value(array_t&& value)
+ {
+ array = create<array_t>(std::move(value));
+ }
+
+ void destroy(value_t t) noexcept
+ {
+ switch (t)
+ {
+ case value_t::object:
+ {
+ AllocatorType<object_t> alloc;
+ std::allocator_traits<decltype(alloc)>::destroy(alloc, object);
+ std::allocator_traits<decltype(alloc)>::deallocate(alloc, object, 1);
+ break;
+ }
+
+ case value_t::array:
+ {
+ AllocatorType<array_t> alloc;
+ std::allocator_traits<decltype(alloc)>::destroy(alloc, array);
+ std::allocator_traits<decltype(alloc)>::deallocate(alloc, array, 1);
+ break;
+ }
+
+ case value_t::string:
+ {
+ AllocatorType<string_t> alloc;
+ std::allocator_traits<decltype(alloc)>::destroy(alloc, string);
+ std::allocator_traits<decltype(alloc)>::deallocate(alloc, string, 1);
+ break;
+ }
+
+ default:
+ {
+ break;
+ }
+ }
+ }
+ };
+
+ /*!
+ @brief checks the class invariants
+
+ This function asserts the class invariants. It needs to be called at the
+ end of every constructor to make sure that created objects respect the
+ invariant. Furthermore, it has to be called each time the type of a JSON
+ value is changed, because the invariant expresses a relationship between
+ @a m_type and @a m_value.
+ */
+ void assert_invariant() const noexcept
+ {
+ assert(m_type != value_t::object or m_value.object != nullptr);
+ assert(m_type != value_t::array or m_value.array != nullptr);
+ assert(m_type != value_t::string or m_value.string != nullptr);
+ }
+
+ public:
+ //////////////////////////
+ // JSON parser callback //
+ //////////////////////////
+
+ /*!
+ @brief parser event types
+
+ The parser callback distinguishes the following events:
+ - `object_start`: the parser read `{` and started to process a JSON object
+ - `key`: the parser read a key of a value in an object
+ - `object_end`: the parser read `}` and finished processing a JSON object
+ - `array_start`: the parser read `[` and started to process a JSON array
+ - `array_end`: the parser read `]` and finished processing a JSON array
+ - `value`: the parser finished reading a JSON value
+
+ @image html callback_events.png "Example when certain parse events are triggered"
+
+ @sa @ref parser_callback_t for more information and examples
+ */
+ using parse_event_t = typename parser::parse_event_t;
+
+ /*!
+ @brief per-element parser callback type
+
+ With a parser callback function, the result of parsing a JSON text can be
+ influenced. When passed to @ref parse, it is called on certain events
+ (passed as @ref parse_event_t via parameter @a event) with a set recursion
+ depth @a depth and context JSON value @a parsed. The return value of the
+ callback function is a boolean indicating whether the element that emitted
+ the callback shall be kept or not.
+
+ We distinguish six scenarios (determined by the event type) in which the
+ callback function can be called. The following table describes the values
+ of the parameters @a depth, @a event, and @a parsed.
+
+ parameter @a event | description | parameter @a depth | parameter @a parsed
+ ------------------ | ----------- | ------------------ | -------------------
+ parse_event_t::object_start | the parser read `{` and started to process a JSON object | depth of the parent of the JSON object | a JSON value with type discarded
+ parse_event_t::key | the parser read a key of a value in an object | depth of the currently parsed JSON object | a JSON string containing the key
+ parse_event_t::object_end | the parser read `}` and finished processing a JSON object | depth of the parent of the JSON object | the parsed JSON object
+ parse_event_t::array_start | the parser read `[` and started to process a JSON array | depth of the parent of the JSON array | a JSON value with type discarded
+ parse_event_t::array_end | the parser read `]` and finished processing a JSON array | depth of the parent of the JSON array | the parsed JSON array
+ parse_event_t::value | the parser finished reading a JSON value | depth of the value | the parsed JSON value
+
+ @image html callback_events.png "Example when certain parse events are triggered"
+
+ Discarding a value (i.e., returning `false`) has different effects
+ depending on the context in which function was called:
+
+ - Discarded values in structured types are skipped. That is, the parser
+ will behave as if the discarded value was never read.
+ - In case a value outside a structured type is skipped, it is replaced
+ with `null`. This case happens if the top-level element is skipped.
+
+ @param[in] depth the depth of the recursion during parsing
+
+ @param[in] event an event of type parse_event_t indicating the context in
+ the callback function has been called
+
+ @param[in,out] parsed the current intermediate parse result; note that
+ writing to this value has no effect for parse_event_t::key events
+
+ @return Whether the JSON value which called the function during parsing
+ should be kept (`true`) or not (`false`). In the latter case, it is either
+ skipped completely or replaced by an empty discarded object.
+
+ @sa @ref parse for examples
+
+ @since version 1.0.0
+ */
+ using parser_callback_t = typename parser::parser_callback_t;
+
+ //////////////////
+ // constructors //
+ //////////////////
+
+ /// @name constructors and destructors
+ /// Constructors of class @ref basic_json, copy/move constructor, copy
+ /// assignment, static functions creating objects, and the destructor.
+ /// @{
+
+ /*!
+ @brief create an empty value with a given type
+
+ Create an empty JSON value with a given type. The value will be default
+ initialized with an empty value which depends on the type:
+
+ Value type | initial value
+ ----------- | -------------
+ null | `null`
+ boolean | `false`
+ string | `""`
+ number | `0`
+ object | `{}`
+ array | `[]`
+
+ @param[in] v the type of the value to create
+
+ @complexity Constant.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @liveexample{The following code shows the constructor for different @ref
+ value_t values,basic_json__value_t}
+
+ @sa @ref clear() -- restores the postcondition of this constructor
+
+ @since version 1.0.0
+ */
+ basic_json(const value_t v)
+ : m_type(v), m_value(v)
+ {
+ assert_invariant();
+ }
+
+ /*!
+ @brief create a null object
+
+ Create a `null` JSON value. It either takes a null pointer as parameter
+ (explicitly creating `null`) or no parameter (implicitly creating `null`).
+ The passed null pointer itself is not read -- it is only used to choose
+ the right constructor.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this constructor never throws
+ exceptions.
+
+ @liveexample{The following code shows the constructor with and without a
+ null pointer parameter.,basic_json__nullptr_t}
+
+ @since version 1.0.0
+ */
+ basic_json(std::nullptr_t = nullptr) noexcept
+ : basic_json(value_t::null)
+ {
+ assert_invariant();
+ }
+
+ /*!
+ @brief create a JSON value
+
+ This is a "catch all" constructor for all compatible JSON types; that is,
+ types for which a `to_json()` method exists. The constructor forwards the
+ parameter @a val to that method (to `json_serializer<U>::to_json` method
+ with `U = uncvref_t<CompatibleType>`, to be exact).
+
+ Template type @a CompatibleType includes, but is not limited to, the
+ following types:
+ - **arrays**: @ref array_t and all kinds of compatible containers such as
+ `std::vector`, `std::deque`, `std::list`, `std::forward_list`,
+ `std::array`, `std::valarray`, `std::set`, `std::unordered_set`,
+ `std::multiset`, and `std::unordered_multiset` with a `value_type` from
+ which a @ref basic_json value can be constructed.
+ - **objects**: @ref object_t and all kinds of compatible associative
+ containers such as `std::map`, `std::unordered_map`, `std::multimap`,
+ and `std::unordered_multimap` with a `key_type` compatible to
+ @ref string_t and a `value_type` from which a @ref basic_json value can
+ be constructed.
+ - **strings**: @ref string_t, string literals, and all compatible string
+ containers can be used.
+ - **numbers**: @ref number_integer_t, @ref number_unsigned_t,
+ @ref number_float_t, and all convertible number types such as `int`,
+ `size_t`, `int64_t`, `float` or `double` can be used.
+ - **boolean**: @ref boolean_t / `bool` can be used.
+
+ See the examples below.
+
+ @tparam CompatibleType a type such that:
+ - @a CompatibleType is not derived from `std::istream`,
+ - @a CompatibleType is not @ref basic_json (to avoid hijacking copy/move
+ constructors),
+ - @a CompatibleType is not a different @ref basic_json type (i.e. with different template arguments)
+ - @a CompatibleType is not a @ref basic_json nested type (e.g.,
+ @ref json_pointer, @ref iterator, etc ...)
+ - @ref @ref json_serializer<U> has a
+ `to_json(basic_json_t&, CompatibleType&&)` method
+
+ @tparam U = `uncvref_t<CompatibleType>`
+
+ @param[in] val the value to be forwarded to the respective constructor
+
+ @complexity Usually linear in the size of the passed @a val, also
+ depending on the implementation of the called `to_json()`
+ method.
+
+ @exceptionsafety Depends on the called constructor. For types directly
+ supported by the library (i.e., all types for which no `to_json()` function
+ was provided), strong guarantee holds: if an exception is thrown, there are
+ no changes to any JSON value.
+
+ @liveexample{The following code shows the constructor with several
+ compatible types.,basic_json__CompatibleType}
+
+ @since version 2.1.0
+ */
+ template <typename CompatibleType,
+ typename U = detail::uncvref_t<CompatibleType>,
+ detail::enable_if_t<
+ not detail::is_basic_json<U>::value and detail::is_compatible_type<basic_json_t, U>::value, int> = 0>
+ basic_json(CompatibleType && val) noexcept(noexcept(
+ JSONSerializer<U>::to_json(std::declval<basic_json_t&>(),
+ std::forward<CompatibleType>(val))))
+ {
+ JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
+ assert_invariant();
+ }
+
+ /*!
+ @brief create a JSON value from an existing one
+
+ This is a constructor for existing @ref basic_json types.
+ It does not hijack copy/move constructors, since the parameter has different
+ template arguments than the current ones.
+
+ The constructor tries to convert the internal @ref m_value of the parameter.
+
+ @tparam BasicJsonType a type such that:
+ - @a BasicJsonType is a @ref basic_json type.
+ - @a BasicJsonType has different template arguments than @ref basic_json_t.
+
+ @param[in] val the @ref basic_json value to be converted.
+
+ @complexity Usually linear in the size of the passed @a val, also
+ depending on the implementation of the called `to_json()`
+ method.
+
+ @exceptionsafety Depends on the called constructor. For types directly
+ supported by the library (i.e., all types for which no `to_json()` function
+ was provided), strong guarantee holds: if an exception is thrown, there are
+ no changes to any JSON value.
+
+ @since version 3.2.0
+ */
+ template <typename BasicJsonType,
+ detail::enable_if_t<
+ detail::is_basic_json<BasicJsonType>::value and not std::is_same<basic_json, BasicJsonType>::value, int> = 0>
+ basic_json(const BasicJsonType& val)
+ {
+ using other_boolean_t = typename BasicJsonType::boolean_t;
+ using other_number_float_t = typename BasicJsonType::number_float_t;
+ using other_number_integer_t = typename BasicJsonType::number_integer_t;
+ using other_number_unsigned_t = typename BasicJsonType::number_unsigned_t;
+ using other_string_t = typename BasicJsonType::string_t;
+ using other_object_t = typename BasicJsonType::object_t;
+ using other_array_t = typename BasicJsonType::array_t;
+
+ switch (val.type())
+ {
+ case value_t::boolean:
+ JSONSerializer<other_boolean_t>::to_json(*this, val.template get<other_boolean_t>());
+ break;
+ case value_t::number_float:
+ JSONSerializer<other_number_float_t>::to_json(*this, val.template get<other_number_float_t>());
+ break;
+ case value_t::number_integer:
+ JSONSerializer<other_number_integer_t>::to_json(*this, val.template get<other_number_integer_t>());
+ break;
+ case value_t::number_unsigned:
+ JSONSerializer<other_number_unsigned_t>::to_json(*this, val.template get<other_number_unsigned_t>());
+ break;
+ case value_t::string:
+ JSONSerializer<other_string_t>::to_json(*this, val.template get_ref<const other_string_t&>());
+ break;
+ case value_t::object:
+ JSONSerializer<other_object_t>::to_json(*this, val.template get_ref<const other_object_t&>());
+ break;
+ case value_t::array:
+ JSONSerializer<other_array_t>::to_json(*this, val.template get_ref<const other_array_t&>());
+ break;
+ case value_t::null:
+ *this = nullptr;
+ break;
+ case value_t::discarded:
+ m_type = value_t::discarded;
+ break;
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+ assert_invariant();
+ }
+
+ /*!
+ @brief create a container (array or object) from an initializer list
+
+ Creates a JSON value of type array or object from the passed initializer
+ list @a init. In case @a type_deduction is `true` (default), the type of
+ the JSON value to be created is deducted from the initializer list @a init
+ according to the following rules:
+
+ 1. If the list is empty, an empty JSON object value `{}` is created.
+ 2. If the list consists of pairs whose first element is a string, a JSON
+ object value is created where the first elements of the pairs are
+ treated as keys and the second elements are as values.
+ 3. In all other cases, an array is created.
+
+ The rules aim to create the best fit between a C++ initializer list and
+ JSON values. The rationale is as follows:
+
+ 1. The empty initializer list is written as `{}` which is exactly an empty
+ JSON object.
+ 2. C++ has no way of describing mapped types other than to list a list of
+ pairs. As JSON requires that keys must be of type string, rule 2 is the
+ weakest constraint one can pose on initializer lists to interpret them
+ as an object.
+ 3. In all other cases, the initializer list could not be interpreted as
+ JSON object type, so interpreting it as JSON array type is safe.
+
+ With the rules described above, the following JSON values cannot be
+ expressed by an initializer list:
+
+ - the empty array (`[]`): use @ref array(initializer_list_t)
+ with an empty initializer list in this case
+ - arrays whose elements satisfy rule 2: use @ref
+ array(initializer_list_t) with the same initializer list
+ in this case
+
+ @note When used without parentheses around an empty initializer list, @ref
+ basic_json() is called instead of this function, yielding the JSON null
+ value.
+
+ @param[in] init initializer list with JSON values
+
+ @param[in] type_deduction internal parameter; when set to `true`, the type
+ of the JSON value is deducted from the initializer list @a init; when set
+ to `false`, the type provided via @a manual_type is forced. This mode is
+ used by the functions @ref array(initializer_list_t) and
+ @ref object(initializer_list_t).
+
+ @param[in] manual_type internal parameter; when @a type_deduction is set
+ to `false`, the created JSON value will use the provided type (only @ref
+ value_t::array and @ref value_t::object are valid); when @a type_deduction
+ is set to `true`, this parameter has no effect
+
+ @throw type_error.301 if @a type_deduction is `false`, @a manual_type is
+ `value_t::object`, but @a init contains an element which is not a pair
+ whose first element is a string. In this case, the constructor could not
+ create an object. If @a type_deduction would have be `true`, an array
+ would have been created. See @ref object(initializer_list_t)
+ for an example.
+
+ @complexity Linear in the size of the initializer list @a init.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @liveexample{The example below shows how JSON values are created from
+ initializer lists.,basic_json__list_init_t}
+
+ @sa @ref array(initializer_list_t) -- create a JSON array
+ value from an initializer list
+ @sa @ref object(initializer_list_t) -- create a JSON object
+ value from an initializer list
+
+ @since version 1.0.0
+ */
+ basic_json(initializer_list_t init,
+ bool type_deduction = true,
+ value_t manual_type = value_t::array)
+ {
+ // check if each element is an array with two elements whose first
+ // element is a string
+ bool is_an_object = std::all_of(init.begin(), init.end(),
+ [](const detail::json_ref<basic_json>& element_ref)
+ {
+ return element_ref->is_array() and element_ref->size() == 2 and (*element_ref)[0].is_string();
+ });
+
+ // adjust type if type deduction is not wanted
+ if (not type_deduction)
+ {
+ // if array is wanted, do not create an object though possible
+ if (manual_type == value_t::array)
+ {
+ is_an_object = false;
+ }
+
+ // if object is wanted but impossible, throw an exception
+ if (JSON_UNLIKELY(manual_type == value_t::object and not is_an_object))
+ {
+ JSON_THROW(type_error::create(301, "cannot create object from initializer list"));
+ }
+ }
+
+ if (is_an_object)
+ {
+ // the initializer list is a list of pairs -> create object
+ m_type = value_t::object;
+ m_value = value_t::object;
+
+ std::for_each(init.begin(), init.end(), [this](const detail::json_ref<basic_json>& element_ref)
+ {
+ auto element = element_ref.moved_or_copied();
+ m_value.object->emplace(
+ std::move(*((*element.m_value.array)[0].m_value.string)),
+ std::move((*element.m_value.array)[1]));
+ });
+ }
+ else
+ {
+ // the initializer list describes an array -> create array
+ m_type = value_t::array;
+ m_value.array = create<array_t>(init.begin(), init.end());
+ }
+
+ assert_invariant();
+ }
+
+ /*!
+ @brief explicitly create an array from an initializer list
+
+ Creates a JSON array value from a given initializer list. That is, given a
+ list of values `a, b, c`, creates the JSON value `[a, b, c]`. If the
+ initializer list is empty, the empty array `[]` is created.
+
+ @note This function is only needed to express two edge cases that cannot
+ be realized with the initializer list constructor (@ref
+ basic_json(initializer_list_t, bool, value_t)). These cases
+ are:
+ 1. creating an array whose elements are all pairs whose first element is a
+ string -- in this case, the initializer list constructor would create an
+ object, taking the first elements as keys
+ 2. creating an empty array -- passing the empty initializer list to the
+ initializer list constructor yields an empty object
+
+ @param[in] init initializer list with JSON values to create an array from
+ (optional)
+
+ @return JSON array value
+
+ @complexity Linear in the size of @a init.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @liveexample{The following code shows an example for the `array`
+ function.,array}
+
+ @sa @ref basic_json(initializer_list_t, bool, value_t) --
+ create a JSON value from an initializer list
+ @sa @ref object(initializer_list_t) -- create a JSON object
+ value from an initializer list
+
+ @since version 1.0.0
+ */
+ JSON_NODISCARD
+ static basic_json array(initializer_list_t init = {})
+ {
+ return basic_json(init, false, value_t::array);
+ }
+
+ /*!
+ @brief explicitly create an object from an initializer list
+
+ Creates a JSON object value from a given initializer list. The initializer
+ lists elements must be pairs, and their first elements must be strings. If
+ the initializer list is empty, the empty object `{}` is created.
+
+ @note This function is only added for symmetry reasons. In contrast to the
+ related function @ref array(initializer_list_t), there are
+ no cases which can only be expressed by this function. That is, any
+ initializer list @a init can also be passed to the initializer list
+ constructor @ref basic_json(initializer_list_t, bool, value_t).
+
+ @param[in] init initializer list to create an object from (optional)
+
+ @return JSON object value
+
+ @throw type_error.301 if @a init is not a list of pairs whose first
+ elements are strings. In this case, no object can be created. When such a
+ value is passed to @ref basic_json(initializer_list_t, bool, value_t),
+ an array would have been created from the passed initializer list @a init.
+ See example below.
+
+ @complexity Linear in the size of @a init.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @liveexample{The following code shows an example for the `object`
+ function.,object}
+
+ @sa @ref basic_json(initializer_list_t, bool, value_t) --
+ create a JSON value from an initializer list
+ @sa @ref array(initializer_list_t) -- create a JSON array
+ value from an initializer list
+
+ @since version 1.0.0
+ */
+ JSON_NODISCARD
+ static basic_json object(initializer_list_t init = {})
+ {
+ return basic_json(init, false, value_t::object);
+ }
+
+ /*!
+ @brief construct an array with count copies of given value
+
+ Constructs a JSON array value by creating @a cnt copies of a passed value.
+ In case @a cnt is `0`, an empty array is created.
+
+ @param[in] cnt the number of JSON copies of @a val to create
+ @param[in] val the JSON value to copy
+
+ @post `std::distance(begin(),end()) == cnt` holds.
+
+ @complexity Linear in @a cnt.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @liveexample{The following code shows examples for the @ref
+ basic_json(size_type\, const basic_json&)
+ constructor.,basic_json__size_type_basic_json}
+
+ @since version 1.0.0
+ */
+ basic_json(size_type cnt, const basic_json& val)
+ : m_type(value_t::array)
+ {
+ m_value.array = create<array_t>(cnt, val);
+ assert_invariant();
+ }
+
+ /*!
+ @brief construct a JSON container given an iterator range
+
+ Constructs the JSON value with the contents of the range `[first, last)`.
+ The semantics depends on the different types a JSON value can have:
+ - In case of a null type, invalid_iterator.206 is thrown.
+ - In case of other primitive types (number, boolean, or string), @a first
+ must be `begin()` and @a last must be `end()`. In this case, the value is
+ copied. Otherwise, invalid_iterator.204 is thrown.
+ - In case of structured types (array, object), the constructor behaves as
+ similar versions for `std::vector` or `std::map`; that is, a JSON array
+ or object is constructed from the values in the range.
+
+ @tparam InputIT an input iterator type (@ref iterator or @ref
+ const_iterator)
+
+ @param[in] first begin of the range to copy from (included)
+ @param[in] last end of the range to copy from (excluded)
+
+ @pre Iterators @a first and @a last must be initialized. **This
+ precondition is enforced with an assertion (see warning).** If
+ assertions are switched off, a violation of this precondition yields
+ undefined behavior.
+
+ @pre Range `[first, last)` is valid. Usually, this precondition cannot be
+ checked efficiently. Only certain edge cases are detected; see the
+ description of the exceptions below. A violation of this precondition
+ yields undefined behavior.
+
+ @warning A precondition is enforced with a runtime assertion that will
+ result in calling `std::abort` if this precondition is not met.
+ Assertions can be disabled by defining `NDEBUG` at compile time.
+ See https://en.cppreference.com/w/cpp/error/assert for more
+ information.
+
+ @throw invalid_iterator.201 if iterators @a first and @a last are not
+ compatible (i.e., do not belong to the same JSON value). In this case,
+ the range `[first, last)` is undefined.
+ @throw invalid_iterator.204 if iterators @a first and @a last belong to a
+ primitive type (number, boolean, or string), but @a first does not point
+ to the first element any more. In this case, the range `[first, last)` is
+ undefined. See example code below.
+ @throw invalid_iterator.206 if iterators @a first and @a last belong to a
+ null value. In this case, the range `[first, last)` is undefined.
+
+ @complexity Linear in distance between @a first and @a last.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @liveexample{The example below shows several ways to create JSON values by
+ specifying a subrange with iterators.,basic_json__InputIt_InputIt}
+
+ @since version 1.0.0
+ */
+ template<class InputIT, typename std::enable_if<
+ std::is_same<InputIT, typename basic_json_t::iterator>::value or
+ std::is_same<InputIT, typename basic_json_t::const_iterator>::value, int>::type = 0>
+ basic_json(InputIT first, InputIT last)
+ {
+ assert(first.m_object != nullptr);
+ assert(last.m_object != nullptr);
+
+ // make sure iterator fits the current value
+ if (JSON_UNLIKELY(first.m_object != last.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(201, "iterators are not compatible"));
+ }
+
+ // copy type from first iterator
+ m_type = first.m_object->m_type;
+
+ // check if iterator range is complete for primitive values
+ switch (m_type)
+ {
+ case value_t::boolean:
+ case value_t::number_float:
+ case value_t::number_integer:
+ case value_t::number_unsigned:
+ case value_t::string:
+ {
+ if (JSON_UNLIKELY(not first.m_it.primitive_iterator.is_begin()
+ or not last.m_it.primitive_iterator.is_end()))
+ {
+ JSON_THROW(invalid_iterator::create(204, "iterators out of range"));
+ }
+ break;
+ }
+
+ default:
+ break;
+ }
+
+ switch (m_type)
+ {
+ case value_t::number_integer:
+ {
+ m_value.number_integer = first.m_object->m_value.number_integer;
+ break;
+ }
+
+ case value_t::number_unsigned:
+ {
+ m_value.number_unsigned = first.m_object->m_value.number_unsigned;
+ break;
+ }
+
+ case value_t::number_float:
+ {
+ m_value.number_float = first.m_object->m_value.number_float;
+ break;
+ }
+
+ case value_t::boolean:
+ {
+ m_value.boolean = first.m_object->m_value.boolean;
+ break;
+ }
+
+ case value_t::string:
+ {
+ m_value = *first.m_object->m_value.string;
+ break;
+ }
+
+ case value_t::object:
+ {
+ m_value.object = create<object_t>(first.m_it.object_iterator,
+ last.m_it.object_iterator);
+ break;
+ }
+
+ case value_t::array:
+ {
+ m_value.array = create<array_t>(first.m_it.array_iterator,
+ last.m_it.array_iterator);
+ break;
+ }
+
+ default:
+ JSON_THROW(invalid_iterator::create(206, "cannot construct with iterators from " +
+ std::string(first.m_object->type_name())));
+ }
+
+ assert_invariant();
+ }
+
+
+ ///////////////////////////////////////
+ // other constructors and destructor //
+ ///////////////////////////////////////
+
+ /// @private
+ basic_json(const detail::json_ref<basic_json>& ref)
+ : basic_json(ref.moved_or_copied())
+ {}
+
+ /*!
+ @brief copy constructor
+
+ Creates a copy of a given JSON value.
+
+ @param[in] other the JSON value to copy
+
+ @post `*this == other`
+
+ @complexity Linear in the size of @a other.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes to any JSON value.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is linear.
+ - As postcondition, it holds: `other == basic_json(other)`.
+
+ @liveexample{The following code shows an example for the copy
+ constructor.,basic_json__basic_json}
+
+ @since version 1.0.0
+ */
+ basic_json(const basic_json& other)
+ : m_type(other.m_type)
+ {
+ // check of passed value is valid
+ other.assert_invariant();
+
+ switch (m_type)
+ {
+ case value_t::object:
+ {
+ m_value = *other.m_value.object;
+ break;
+ }
+
+ case value_t::array:
+ {
+ m_value = *other.m_value.array;
+ break;
+ }
+
+ case value_t::string:
+ {
+ m_value = *other.m_value.string;
+ break;
+ }
+
+ case value_t::boolean:
+ {
+ m_value = other.m_value.boolean;
+ break;
+ }
+
+ case value_t::number_integer:
+ {
+ m_value = other.m_value.number_integer;
+ break;
+ }
+
+ case value_t::number_unsigned:
+ {
+ m_value = other.m_value.number_unsigned;
+ break;
+ }
+
+ case value_t::number_float:
+ {
+ m_value = other.m_value.number_float;
+ break;
+ }
+
+ default:
+ break;
+ }
+
+ assert_invariant();
+ }
+
+ /*!
+ @brief move constructor
+
+ Move constructor. Constructs a JSON value with the contents of the given
+ value @a other using move semantics. It "steals" the resources from @a
+ other and leaves it as JSON null value.
+
+ @param[in,out] other value to move to this object
+
+ @post `*this` has the same value as @a other before the call.
+ @post @a other is a JSON null value.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this constructor never throws
+ exceptions.
+
+ @requirement This function helps `basic_json` satisfying the
+ [MoveConstructible](https://en.cppreference.com/w/cpp/named_req/MoveConstructible)
+ requirements.
+
+ @liveexample{The code below shows the move constructor explicitly called
+ via std::move.,basic_json__moveconstructor}
+
+ @since version 1.0.0
+ */
+ basic_json(basic_json&& other) noexcept
+ : m_type(std::move(other.m_type)),
+ m_value(std::move(other.m_value))
+ {
+ // check that passed value is valid
+ other.assert_invariant();
+
+ // invalidate payload
+ other.m_type = value_t::null;
+ other.m_value = {};
+
+ assert_invariant();
+ }
+
+ /*!
+ @brief copy assignment
+
+ Copy assignment operator. Copies a JSON value via the "copy and swap"
+ strategy: It is expressed in terms of the copy constructor, destructor,
+ and the `swap()` member function.
+
+ @param[in] other value to copy from
+
+ @complexity Linear.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is linear.
+
+ @liveexample{The code below shows and example for the copy assignment. It
+ creates a copy of value `a` which is then swapped with `b`. Finally\, the
+ copy of `a` (which is the null value after the swap) is
+ destroyed.,basic_json__copyassignment}
+
+ @since version 1.0.0
+ */
+ basic_json& operator=(basic_json other) noexcept (
+ std::is_nothrow_move_constructible<value_t>::value and
+ std::is_nothrow_move_assignable<value_t>::value and
+ std::is_nothrow_move_constructible<json_value>::value and
+ std::is_nothrow_move_assignable<json_value>::value
+ )
+ {
+ // check that passed value is valid
+ other.assert_invariant();
+
+ using std::swap;
+ swap(m_type, other.m_type);
+ swap(m_value, other.m_value);
+
+ assert_invariant();
+ return *this;
+ }
+
+ /*!
+ @brief destructor
+
+ Destroys the JSON value and frees all allocated memory.
+
+ @complexity Linear.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is linear.
+ - All stored elements are destroyed and all memory is freed.
+
+ @since version 1.0.0
+ */
+ ~basic_json() noexcept
+ {
+ assert_invariant();
+ m_value.destroy(m_type);
+ }
+
+ /// @}
+
+ public:
+ ///////////////////////
+ // object inspection //
+ ///////////////////////
+
+ /// @name object inspection
+ /// Functions to inspect the type of a JSON value.
+ /// @{
+
+ /*!
+ @brief serialization
+
+ Serialization function for JSON values. The function tries to mimic
+ Python's `json.dumps()` function, and currently supports its @a indent
+ and @a ensure_ascii parameters.
+
+ @param[in] indent If indent is nonnegative, then array elements and object
+ members will be pretty-printed with that indent level. An indent level of
+ `0` will only insert newlines. `-1` (the default) selects the most compact
+ representation.
+ @param[in] indent_char The character to use for indentation if @a indent is
+ greater than `0`. The default is ` ` (space).
+ @param[in] ensure_ascii If @a ensure_ascii is true, all non-ASCII characters
+ in the output are escaped with `\uXXXX` sequences, and the result consists
+ of ASCII characters only.
+ @param[in] error_handler how to react on decoding errors; there are three
+ possible values: `strict` (throws and exception in case a decoding error
+ occurs; default), `replace` (replace invalid UTF-8 sequences with U+FFFD),
+ and `ignore` (ignore invalid UTF-8 sequences during serialization).
+
+ @return string containing the serialization of the JSON value
+
+ @throw type_error.316 if a string stored inside the JSON value is not
+ UTF-8 encoded
+
+ @complexity Linear.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @liveexample{The following example shows the effect of different @a indent\,
+ @a indent_char\, and @a ensure_ascii parameters to the result of the
+ serialization.,dump}
+
+ @see https://docs.python.org/2/library/json.html#json.dump
+
+ @since version 1.0.0; indentation character @a indent_char, option
+ @a ensure_ascii and exceptions added in version 3.0.0; error
+ handlers added in version 3.4.0.
+ */
+ string_t dump(const int indent = -1,
+ const char indent_char = ' ',
+ const bool ensure_ascii = false,
+ const error_handler_t error_handler = error_handler_t::strict) const
+ {
+ string_t result;
+ serializer s(detail::output_adapter<char, string_t>(result), indent_char, error_handler);
+
+ if (indent >= 0)
+ {
+ s.dump(*this, true, ensure_ascii, static_cast<unsigned int>(indent));
+ }
+ else
+ {
+ s.dump(*this, false, ensure_ascii, 0);
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief return the type of the JSON value (explicit)
+
+ Return the type of the JSON value as a value from the @ref value_t
+ enumeration.
+
+ @return the type of the JSON value
+ Value type | return value
+ ------------------------- | -------------------------
+ null | value_t::null
+ boolean | value_t::boolean
+ string | value_t::string
+ number (integer) | value_t::number_integer
+ number (unsigned integer) | value_t::number_unsigned
+ number (floating-point) | value_t::number_float
+ object | value_t::object
+ array | value_t::array
+ discarded | value_t::discarded
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `type()` for all JSON
+ types.,type}
+
+ @sa @ref operator value_t() -- return the type of the JSON value (implicit)
+ @sa @ref type_name() -- return the type as string
+
+ @since version 1.0.0
+ */
+ constexpr value_t type() const noexcept
+ {
+ return m_type;
+ }
+
+ /*!
+ @brief return whether type is primitive
+
+ This function returns true if and only if the JSON type is primitive
+ (string, number, boolean, or null).
+
+ @return `true` if type is primitive (string, number, boolean, or null),
+ `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_primitive()` for all JSON
+ types.,is_primitive}
+
+ @sa @ref is_structured() -- returns whether JSON value is structured
+ @sa @ref is_null() -- returns whether JSON value is `null`
+ @sa @ref is_string() -- returns whether JSON value is a string
+ @sa @ref is_boolean() -- returns whether JSON value is a boolean
+ @sa @ref is_number() -- returns whether JSON value is a number
+
+ @since version 1.0.0
+ */
+ constexpr bool is_primitive() const noexcept
+ {
+ return is_null() or is_string() or is_boolean() or is_number();
+ }
+
+ /*!
+ @brief return whether type is structured
+
+ This function returns true if and only if the JSON type is structured
+ (array or object).
+
+ @return `true` if type is structured (array or object), `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_structured()` for all JSON
+ types.,is_structured}
+
+ @sa @ref is_primitive() -- returns whether value is primitive
+ @sa @ref is_array() -- returns whether value is an array
+ @sa @ref is_object() -- returns whether value is an object
+
+ @since version 1.0.0
+ */
+ constexpr bool is_structured() const noexcept
+ {
+ return is_array() or is_object();
+ }
+
+ /*!
+ @brief return whether value is null
+
+ This function returns true if and only if the JSON value is null.
+
+ @return `true` if type is null, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_null()` for all JSON
+ types.,is_null}
+
+ @since version 1.0.0
+ */
+ constexpr bool is_null() const noexcept
+ {
+ return m_type == value_t::null;
+ }
+
+ /*!
+ @brief return whether value is a boolean
+
+ This function returns true if and only if the JSON value is a boolean.
+
+ @return `true` if type is boolean, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_boolean()` for all JSON
+ types.,is_boolean}
+
+ @since version 1.0.0
+ */
+ constexpr bool is_boolean() const noexcept
+ {
+ return m_type == value_t::boolean;
+ }
+
+ /*!
+ @brief return whether value is a number
+
+ This function returns true if and only if the JSON value is a number. This
+ includes both integer (signed and unsigned) and floating-point values.
+
+ @return `true` if type is number (regardless whether integer, unsigned
+ integer or floating-type), `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_number()` for all JSON
+ types.,is_number}
+
+ @sa @ref is_number_integer() -- check if value is an integer or unsigned
+ integer number
+ @sa @ref is_number_unsigned() -- check if value is an unsigned integer
+ number
+ @sa @ref is_number_float() -- check if value is a floating-point number
+
+ @since version 1.0.0
+ */
+ constexpr bool is_number() const noexcept
+ {
+ return is_number_integer() or is_number_float();
+ }
+
+ /*!
+ @brief return whether value is an integer number
+
+ This function returns true if and only if the JSON value is a signed or
+ unsigned integer number. This excludes floating-point values.
+
+ @return `true` if type is an integer or unsigned integer number, `false`
+ otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_number_integer()` for all
+ JSON types.,is_number_integer}
+
+ @sa @ref is_number() -- check if value is a number
+ @sa @ref is_number_unsigned() -- check if value is an unsigned integer
+ number
+ @sa @ref is_number_float() -- check if value is a floating-point number
+
+ @since version 1.0.0
+ */
+ constexpr bool is_number_integer() const noexcept
+ {
+ return m_type == value_t::number_integer or m_type == value_t::number_unsigned;
+ }
+
+ /*!
+ @brief return whether value is an unsigned integer number
+
+ This function returns true if and only if the JSON value is an unsigned
+ integer number. This excludes floating-point and signed integer values.
+
+ @return `true` if type is an unsigned integer number, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_number_unsigned()` for all
+ JSON types.,is_number_unsigned}
+
+ @sa @ref is_number() -- check if value is a number
+ @sa @ref is_number_integer() -- check if value is an integer or unsigned
+ integer number
+ @sa @ref is_number_float() -- check if value is a floating-point number
+
+ @since version 2.0.0
+ */
+ constexpr bool is_number_unsigned() const noexcept
+ {
+ return m_type == value_t::number_unsigned;
+ }
+
+ /*!
+ @brief return whether value is a floating-point number
+
+ This function returns true if and only if the JSON value is a
+ floating-point number. This excludes signed and unsigned integer values.
+
+ @return `true` if type is a floating-point number, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_number_float()` for all
+ JSON types.,is_number_float}
+
+ @sa @ref is_number() -- check if value is number
+ @sa @ref is_number_integer() -- check if value is an integer number
+ @sa @ref is_number_unsigned() -- check if value is an unsigned integer
+ number
+
+ @since version 1.0.0
+ */
+ constexpr bool is_number_float() const noexcept
+ {
+ return m_type == value_t::number_float;
+ }
+
+ /*!
+ @brief return whether value is an object
+
+ This function returns true if and only if the JSON value is an object.
+
+ @return `true` if type is object, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_object()` for all JSON
+ types.,is_object}
+
+ @since version 1.0.0
+ */
+ constexpr bool is_object() const noexcept
+ {
+ return m_type == value_t::object;
+ }
+
+ /*!
+ @brief return whether value is an array
+
+ This function returns true if and only if the JSON value is an array.
+
+ @return `true` if type is array, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_array()` for all JSON
+ types.,is_array}
+
+ @since version 1.0.0
+ */
+ constexpr bool is_array() const noexcept
+ {
+ return m_type == value_t::array;
+ }
+
+ /*!
+ @brief return whether value is a string
+
+ This function returns true if and only if the JSON value is a string.
+
+ @return `true` if type is string, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_string()` for all JSON
+ types.,is_string}
+
+ @since version 1.0.0
+ */
+ constexpr bool is_string() const noexcept
+ {
+ return m_type == value_t::string;
+ }
+
+ /*!
+ @brief return whether value is discarded
+
+ This function returns true if and only if the JSON value was discarded
+ during parsing with a callback function (see @ref parser_callback_t).
+
+ @note This function will always be `false` for JSON values after parsing.
+ That is, discarded values can only occur during parsing, but will be
+ removed when inside a structured value or replaced by null in other cases.
+
+ @return `true` if type is discarded, `false` otherwise.
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies `is_discarded()` for all JSON
+ types.,is_discarded}
+
+ @since version 1.0.0
+ */
+ constexpr bool is_discarded() const noexcept
+ {
+ return m_type == value_t::discarded;
+ }
+
+ /*!
+ @brief return the type of the JSON value (implicit)
+
+ Implicitly return the type of the JSON value as a value from the @ref
+ value_t enumeration.
+
+ @return the type of the JSON value
+
+ @complexity Constant.
+
+ @exceptionsafety No-throw guarantee: this member function never throws
+ exceptions.
+
+ @liveexample{The following code exemplifies the @ref value_t operator for
+ all JSON types.,operator__value_t}
+
+ @sa @ref type() -- return the type of the JSON value (explicit)
+ @sa @ref type_name() -- return the type as string
+
+ @since version 1.0.0
+ */
+ constexpr operator value_t() const noexcept
+ {
+ return m_type;
+ }
+
+ /// @}
+
+ private:
+ //////////////////
+ // value access //
+ //////////////////
+
+ /// get a boolean (explicit)
+ boolean_t get_impl(boolean_t* /*unused*/) const
+ {
+ if (JSON_LIKELY(is_boolean()))
+ {
+ return m_value.boolean;
+ }
+
+ JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(type_name())));
+ }
+
+ /// get a pointer to the value (object)
+ object_t* get_impl_ptr(object_t* /*unused*/) noexcept
+ {
+ return is_object() ? m_value.object : nullptr;
+ }
+
+ /// get a pointer to the value (object)
+ constexpr const object_t* get_impl_ptr(const object_t* /*unused*/) const noexcept
+ {
+ return is_object() ? m_value.object : nullptr;
+ }
+
+ /// get a pointer to the value (array)
+ array_t* get_impl_ptr(array_t* /*unused*/) noexcept
+ {
+ return is_array() ? m_value.array : nullptr;
+ }
+
+ /// get a pointer to the value (array)
+ constexpr const array_t* get_impl_ptr(const array_t* /*unused*/) const noexcept
+ {
+ return is_array() ? m_value.array : nullptr;
+ }
+
+ /// get a pointer to the value (string)
+ string_t* get_impl_ptr(string_t* /*unused*/) noexcept
+ {
+ return is_string() ? m_value.string : nullptr;
+ }
+
+ /// get a pointer to the value (string)
+ constexpr const string_t* get_impl_ptr(const string_t* /*unused*/) const noexcept
+ {
+ return is_string() ? m_value.string : nullptr;
+ }
+
+ /// get a pointer to the value (boolean)
+ boolean_t* get_impl_ptr(boolean_t* /*unused*/) noexcept
+ {
+ return is_boolean() ? &m_value.boolean : nullptr;
+ }
+
+ /// get a pointer to the value (boolean)
+ constexpr const boolean_t* get_impl_ptr(const boolean_t* /*unused*/) const noexcept
+ {
+ return is_boolean() ? &m_value.boolean : nullptr;
+ }
+
+ /// get a pointer to the value (integer number)
+ number_integer_t* get_impl_ptr(number_integer_t* /*unused*/) noexcept
+ {
+ return is_number_integer() ? &m_value.number_integer : nullptr;
+ }
+
+ /// get a pointer to the value (integer number)
+ constexpr const number_integer_t* get_impl_ptr(const number_integer_t* /*unused*/) const noexcept
+ {
+ return is_number_integer() ? &m_value.number_integer : nullptr;
+ }
+
+ /// get a pointer to the value (unsigned number)
+ number_unsigned_t* get_impl_ptr(number_unsigned_t* /*unused*/) noexcept
+ {
+ return is_number_unsigned() ? &m_value.number_unsigned : nullptr;
+ }
+
+ /// get a pointer to the value (unsigned number)
+ constexpr const number_unsigned_t* get_impl_ptr(const number_unsigned_t* /*unused*/) const noexcept
+ {
+ return is_number_unsigned() ? &m_value.number_unsigned : nullptr;
+ }
+
+ /// get a pointer to the value (floating-point number)
+ number_float_t* get_impl_ptr(number_float_t* /*unused*/) noexcept
+ {
+ return is_number_float() ? &m_value.number_float : nullptr;
+ }
+
+ /// get a pointer to the value (floating-point number)
+ constexpr const number_float_t* get_impl_ptr(const number_float_t* /*unused*/) const noexcept
+ {
+ return is_number_float() ? &m_value.number_float : nullptr;
+ }
+
+ /*!
+ @brief helper function to implement get_ref()
+
+ This function helps to implement get_ref() without code duplication for
+ const and non-const overloads
+
+ @tparam ThisType will be deduced as `basic_json` or `const basic_json`
+
+ @throw type_error.303 if ReferenceType does not match underlying value
+ type of the current JSON
+ */
+ template<typename ReferenceType, typename ThisType>
+ static ReferenceType get_ref_impl(ThisType& obj)
+ {
+ // delegate the call to get_ptr<>()
+ auto ptr = obj.template get_ptr<typename std::add_pointer<ReferenceType>::type>();
+
+ if (JSON_LIKELY(ptr != nullptr))
+ {
+ return *ptr;
+ }
+
+ JSON_THROW(type_error::create(303, "incompatible ReferenceType for get_ref, actual type is " + std::string(obj.type_name())));
+ }
+
+ public:
+ /// @name value access
+ /// Direct access to the stored value of a JSON value.
+ /// @{
+
+ /*!
+ @brief get special-case overload
+
+ This overloads avoids a lot of template boilerplate, it can be seen as the
+ identity method
+
+ @tparam BasicJsonType == @ref basic_json
+
+ @return a copy of *this
+
+ @complexity Constant.
+
+ @since version 2.1.0
+ */
+ template<typename BasicJsonType, detail::enable_if_t<
+ std::is_same<typename std::remove_const<BasicJsonType>::type, basic_json_t>::value,
+ int> = 0>
+ basic_json get() const
+ {
+ return *this;
+ }
+
+ /*!
+ @brief get special-case overload
+
+ This overloads converts the current @ref basic_json in a different
+ @ref basic_json type
+
+ @tparam BasicJsonType == @ref basic_json
+
+ @return a copy of *this, converted into @tparam BasicJsonType
+
+ @complexity Depending on the implementation of the called `from_json()`
+ method.
+
+ @since version 3.2.0
+ */
+ template<typename BasicJsonType, detail::enable_if_t<
+ not std::is_same<BasicJsonType, basic_json>::value and
+ detail::is_basic_json<BasicJsonType>::value, int> = 0>
+ BasicJsonType get() const
+ {
+ return *this;
+ }
+
+ /*!
+ @brief get a value (explicit)
+
+ Explicit type conversion between the JSON value and a compatible value
+ which is [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible)
+ and [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible).
+ The value is converted by calling the @ref json_serializer<ValueType>
+ `from_json()` method.
+
+ The function is equivalent to executing
+ @code {.cpp}
+ ValueType ret;
+ JSONSerializer<ValueType>::from_json(*this, ret);
+ return ret;
+ @endcode
+
+ This overloads is chosen if:
+ - @a ValueType is not @ref basic_json,
+ - @ref json_serializer<ValueType> has a `from_json()` method of the form
+ `void from_json(const basic_json&, ValueType&)`, and
+ - @ref json_serializer<ValueType> does not have a `from_json()` method of
+ the form `ValueType from_json(const basic_json&)`
+
+ @tparam ValueTypeCV the provided value type
+ @tparam ValueType the returned value type
+
+ @return copy of the JSON value, converted to @a ValueType
+
+ @throw what @ref json_serializer<ValueType> `from_json()` method throws
+
+ @liveexample{The example below shows several conversions from JSON values
+ to other types. There a few things to note: (1) Floating-point numbers can
+ be converted to integers\, (2) A JSON array can be converted to a standard
+ `std::vector<short>`\, (3) A JSON object can be converted to C++
+ associative containers such as `std::unordered_map<std::string\,
+ json>`.,get__ValueType_const}
+
+ @since version 2.1.0
+ */
+ template<typename ValueTypeCV, typename ValueType = detail::uncvref_t<ValueTypeCV>,
+ detail::enable_if_t <
+ not detail::is_basic_json<ValueType>::value and
+ detail::has_from_json<basic_json_t, ValueType>::value and
+ not detail::has_non_default_from_json<basic_json_t, ValueType>::value,
+ int> = 0>
+ ValueType get() const noexcept(noexcept(
+ JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>(), std::declval<ValueType&>())))
+ {
+ // we cannot static_assert on ValueTypeCV being non-const, because
+ // there is support for get<const basic_json_t>(), which is why we
+ // still need the uncvref
+ static_assert(not std::is_reference<ValueTypeCV>::value,
+ "get() cannot be used with reference types, you might want to use get_ref()");
+ static_assert(std::is_default_constructible<ValueType>::value,
+ "types must be DefaultConstructible when used with get()");
+
+ ValueType ret;
+ JSONSerializer<ValueType>::from_json(*this, ret);
+ return ret;
+ }
+
+ /*!
+ @brief get a value (explicit); special case
+
+ Explicit type conversion between the JSON value and a compatible value
+ which is **not** [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible)
+ and **not** [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible).
+ The value is converted by calling the @ref json_serializer<ValueType>
+ `from_json()` method.
+
+ The function is equivalent to executing
+ @code {.cpp}
+ return JSONSerializer<ValueTypeCV>::from_json(*this);
+ @endcode
+
+ This overloads is chosen if:
+ - @a ValueType is not @ref basic_json and
+ - @ref json_serializer<ValueType> has a `from_json()` method of the form
+ `ValueType from_json(const basic_json&)`
+
+ @note If @ref json_serializer<ValueType> has both overloads of
+ `from_json()`, this one is chosen.
+
+ @tparam ValueTypeCV the provided value type
+ @tparam ValueType the returned value type
+
+ @return copy of the JSON value, converted to @a ValueType
+
+ @throw what @ref json_serializer<ValueType> `from_json()` method throws
+
+ @since version 2.1.0
+ */
+ template<typename ValueTypeCV, typename ValueType = detail::uncvref_t<ValueTypeCV>,
+ detail::enable_if_t<not std::is_same<basic_json_t, ValueType>::value and
+ detail::has_non_default_from_json<basic_json_t, ValueType>::value,
+ int> = 0>
+ ValueType get() const noexcept(noexcept(
+ JSONSerializer<ValueTypeCV>::from_json(std::declval<const basic_json_t&>())))
+ {
+ static_assert(not std::is_reference<ValueTypeCV>::value,
+ "get() cannot be used with reference types, you might want to use get_ref()");
+ return JSONSerializer<ValueTypeCV>::from_json(*this);
+ }
+
+ /*!
+ @brief get a value (explicit)
+
+ Explicit type conversion between the JSON value and a compatible value.
+ The value is filled into the input parameter by calling the @ref json_serializer<ValueType>
+ `from_json()` method.
+
+ The function is equivalent to executing
+ @code {.cpp}
+ ValueType v;
+ JSONSerializer<ValueType>::from_json(*this, v);
+ @endcode
+
+ This overloads is chosen if:
+ - @a ValueType is not @ref basic_json,
+ - @ref json_serializer<ValueType> has a `from_json()` method of the form
+ `void from_json(const basic_json&, ValueType&)`, and
+
+ @tparam ValueType the input parameter type.
+
+ @return the input parameter, allowing chaining calls.
+
+ @throw what @ref json_serializer<ValueType> `from_json()` method throws
+
+ @liveexample{The example below shows several conversions from JSON values
+ to other types. There a few things to note: (1) Floating-point numbers can
+ be converted to integers\, (2) A JSON array can be converted to a standard
+ `std::vector<short>`\, (3) A JSON object can be converted to C++
+ associative containers such as `std::unordered_map<std::string\,
+ json>`.,get_to}
+
+ @since version 3.3.0
+ */
+ template<typename ValueType,
+ detail::enable_if_t <
+ not detail::is_basic_json<ValueType>::value and
+ detail::has_from_json<basic_json_t, ValueType>::value,
+ int> = 0>
+ ValueType & get_to(ValueType& v) const noexcept(noexcept(
+ JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>(), v)))
+ {
+ JSONSerializer<ValueType>::from_json(*this, v);
+ return v;
+ }
+
+
+ /*!
+ @brief get a pointer value (implicit)
+
+ Implicit pointer access to the internally stored JSON value. No copies are
+ made.
+
+ @warning Writing data to the pointee of the result yields an undefined
+ state.
+
+ @tparam PointerType pointer type; must be a pointer to @ref array_t, @ref
+ object_t, @ref string_t, @ref boolean_t, @ref number_integer_t,
+ @ref number_unsigned_t, or @ref number_float_t. Enforced by a static
+ assertion.
+
+ @return pointer to the internally stored JSON value if the requested
+ pointer type @a PointerType fits to the JSON value; `nullptr` otherwise
+
+ @complexity Constant.
+
+ @liveexample{The example below shows how pointers to internal values of a
+ JSON value can be requested. Note that no type conversions are made and a
+ `nullptr` is returned if the value and the requested pointer type does not
+ match.,get_ptr}
+
+ @since version 1.0.0
+ */
+ template<typename PointerType, typename std::enable_if<
+ std::is_pointer<PointerType>::value, int>::type = 0>
+ auto get_ptr() noexcept -> decltype(std::declval<basic_json_t&>().get_impl_ptr(std::declval<PointerType>()))
+ {
+ // delegate the call to get_impl_ptr<>()
+ return get_impl_ptr(static_cast<PointerType>(nullptr));
+ }
+
+ /*!
+ @brief get a pointer value (implicit)
+ @copydoc get_ptr()
+ */
+ template<typename PointerType, typename std::enable_if<
+ std::is_pointer<PointerType>::value and
+ std::is_const<typename std::remove_pointer<PointerType>::type>::value, int>::type = 0>
+ constexpr auto get_ptr() const noexcept -> decltype(std::declval<const basic_json_t&>().get_impl_ptr(std::declval<PointerType>()))
+ {
+ // delegate the call to get_impl_ptr<>() const
+ return get_impl_ptr(static_cast<PointerType>(nullptr));
+ }
+
+ /*!
+ @brief get a pointer value (explicit)
+
+ Explicit pointer access to the internally stored JSON value. No copies are
+ made.
+
+ @warning The pointer becomes invalid if the underlying JSON object
+ changes.
+
+ @tparam PointerType pointer type; must be a pointer to @ref array_t, @ref
+ object_t, @ref string_t, @ref boolean_t, @ref number_integer_t,
+ @ref number_unsigned_t, or @ref number_float_t.
+
+ @return pointer to the internally stored JSON value if the requested
+ pointer type @a PointerType fits to the JSON value; `nullptr` otherwise
+
+ @complexity Constant.
+
+ @liveexample{The example below shows how pointers to internal values of a
+ JSON value can be requested. Note that no type conversions are made and a
+ `nullptr` is returned if the value and the requested pointer type does not
+ match.,get__PointerType}
+
+ @sa @ref get_ptr() for explicit pointer-member access
+
+ @since version 1.0.0
+ */
+ template<typename PointerType, typename std::enable_if<
+ std::is_pointer<PointerType>::value, int>::type = 0>
+ auto get() noexcept -> decltype(std::declval<basic_json_t&>().template get_ptr<PointerType>())
+ {
+ // delegate the call to get_ptr
+ return get_ptr<PointerType>();
+ }
+
+ /*!
+ @brief get a pointer value (explicit)
+ @copydoc get()
+ */
+ template<typename PointerType, typename std::enable_if<
+ std::is_pointer<PointerType>::value, int>::type = 0>
+ constexpr auto get() const noexcept -> decltype(std::declval<const basic_json_t&>().template get_ptr<PointerType>())
+ {
+ // delegate the call to get_ptr
+ return get_ptr<PointerType>();
+ }
+
+ /*!
+ @brief get a reference value (implicit)
+
+ Implicit reference access to the internally stored JSON value. No copies
+ are made.
+
+ @warning Writing data to the referee of the result yields an undefined
+ state.
+
+ @tparam ReferenceType reference type; must be a reference to @ref array_t,
+ @ref object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, or
+ @ref number_float_t. Enforced by static assertion.
+
+ @return reference to the internally stored JSON value if the requested
+ reference type @a ReferenceType fits to the JSON value; throws
+ type_error.303 otherwise
+
+ @throw type_error.303 in case passed type @a ReferenceType is incompatible
+ with the stored JSON value; see example below
+
+ @complexity Constant.
+
+ @liveexample{The example shows several calls to `get_ref()`.,get_ref}
+
+ @since version 1.1.0
+ */
+ template<typename ReferenceType, typename std::enable_if<
+ std::is_reference<ReferenceType>::value, int>::type = 0>
+ ReferenceType get_ref()
+ {
+ // delegate call to get_ref_impl
+ return get_ref_impl<ReferenceType>(*this);
+ }
+
+ /*!
+ @brief get a reference value (implicit)
+ @copydoc get_ref()
+ */
+ template<typename ReferenceType, typename std::enable_if<
+ std::is_reference<ReferenceType>::value and
+ std::is_const<typename std::remove_reference<ReferenceType>::type>::value, int>::type = 0>
+ ReferenceType get_ref() const
+ {
+ // delegate call to get_ref_impl
+ return get_ref_impl<ReferenceType>(*this);
+ }
+
+ /*!
+ @brief get a value (implicit)
+
+ Implicit type conversion between the JSON value and a compatible value.
+ The call is realized by calling @ref get() const.
+
+ @tparam ValueType non-pointer type compatible to the JSON value, for
+ instance `int` for JSON integer numbers, `bool` for JSON booleans, or
+ `std::vector` types for JSON arrays. The character type of @ref string_t
+ as well as an initializer list of this type is excluded to avoid
+ ambiguities as these types implicitly convert to `std::string`.
+
+ @return copy of the JSON value, converted to type @a ValueType
+
+ @throw type_error.302 in case passed type @a ValueType is incompatible
+ to the JSON value type (e.g., the JSON value is of type boolean, but a
+ string is requested); see example below
+
+ @complexity Linear in the size of the JSON value.
+
+ @liveexample{The example below shows several conversions from JSON values
+ to other types. There a few things to note: (1) Floating-point numbers can
+ be converted to integers\, (2) A JSON array can be converted to a standard
+ `std::vector<short>`\, (3) A JSON object can be converted to C++
+ associative containers such as `std::unordered_map<std::string\,
+ json>`.,operator__ValueType}
+
+ @since version 1.0.0
+ */
+ template < typename ValueType, typename std::enable_if <
+ not std::is_pointer<ValueType>::value and
+ not std::is_same<ValueType, detail::json_ref<basic_json>>::value and
+ not std::is_same<ValueType, typename string_t::value_type>::value and
+ not detail::is_basic_json<ValueType>::value
+
+#ifndef _MSC_VER // fix for issue #167 operator<< ambiguity under VS2015
+ and not std::is_same<ValueType, std::initializer_list<typename string_t::value_type>>::value
+#if defined(JSON_HAS_CPP_17) && (defined(__GNUC__) || (defined(_MSC_VER) and _MSC_VER <= 1914))
+ and not std::is_same<ValueType, typename std::string_view>::value
+#endif
+#endif
+ and detail::is_detected<detail::get_template_function, const basic_json_t&, ValueType>::value
+ , int >::type = 0 >
+ operator ValueType() const
+ {
+ // delegate the call to get<>() const
+ return get<ValueType>();
+ }
+
+ /// @}
+
+
+ ////////////////////
+ // element access //
+ ////////////////////
+
+ /// @name element access
+ /// Access to the JSON value.
+ /// @{
+
+ /*!
+ @brief access specified array element with bounds checking
+
+ Returns a reference to the element at specified location @a idx, with
+ bounds checking.
+
+ @param[in] idx index of the element to access
+
+ @return reference to the element at index @a idx
+
+ @throw type_error.304 if the JSON value is not an array; in this case,
+ calling `at` with an index makes no sense. See example below.
+ @throw out_of_range.401 if the index @a idx is out of range of the array;
+ that is, `idx >= size()`. See example below.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Constant.
+
+ @since version 1.0.0
+
+ @liveexample{The example below shows how array elements can be read and
+ written using `at()`. It also demonstrates the different exceptions that
+ can be thrown.,at__size_type}
+ */
+ reference at(size_type idx)
+ {
+ // at only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ JSON_TRY
+ {
+ return m_value.array->at(idx);
+ }
+ JSON_CATCH (std::out_of_range&)
+ {
+ // create better exception explanation
+ JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
+ }
+ }
+ else
+ {
+ JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
+ }
+ }
+
+ /*!
+ @brief access specified array element with bounds checking
+
+ Returns a const reference to the element at specified location @a idx,
+ with bounds checking.
+
+ @param[in] idx index of the element to access
+
+ @return const reference to the element at index @a idx
+
+ @throw type_error.304 if the JSON value is not an array; in this case,
+ calling `at` with an index makes no sense. See example below.
+ @throw out_of_range.401 if the index @a idx is out of range of the array;
+ that is, `idx >= size()`. See example below.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Constant.
+
+ @since version 1.0.0
+
+ @liveexample{The example below shows how array elements can be read using
+ `at()`. It also demonstrates the different exceptions that can be thrown.,
+ at__size_type_const}
+ */
+ const_reference at(size_type idx) const
+ {
+ // at only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ JSON_TRY
+ {
+ return m_value.array->at(idx);
+ }
+ JSON_CATCH (std::out_of_range&)
+ {
+ // create better exception explanation
+ JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
+ }
+ }
+ else
+ {
+ JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
+ }
+ }
+
+ /*!
+ @brief access specified object element with bounds checking
+
+ Returns a reference to the element at with specified key @a key, with
+ bounds checking.
+
+ @param[in] key key of the element to access
+
+ @return reference to the element at key @a key
+
+ @throw type_error.304 if the JSON value is not an object; in this case,
+ calling `at` with a key makes no sense. See example below.
+ @throw out_of_range.403 if the key @a key is is not stored in the object;
+ that is, `find(key) == end()`. See example below.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Logarithmic in the size of the container.
+
+ @sa @ref operator[](const typename object_t::key_type&) for unchecked
+ access by reference
+ @sa @ref value() for access by value with a default value
+
+ @since version 1.0.0
+
+ @liveexample{The example below shows how object elements can be read and
+ written using `at()`. It also demonstrates the different exceptions that
+ can be thrown.,at__object_t_key_type}
+ */
+ reference at(const typename object_t::key_type& key)
+ {
+ // at only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ JSON_TRY
+ {
+ return m_value.object->at(key);
+ }
+ JSON_CATCH (std::out_of_range&)
+ {
+ // create better exception explanation
+ JSON_THROW(out_of_range::create(403, "key '" + key + "' not found"));
+ }
+ }
+ else
+ {
+ JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
+ }
+ }
+
+ /*!
+ @brief access specified object element with bounds checking
+
+ Returns a const reference to the element at with specified key @a key,
+ with bounds checking.
+
+ @param[in] key key of the element to access
+
+ @return const reference to the element at key @a key
+
+ @throw type_error.304 if the JSON value is not an object; in this case,
+ calling `at` with a key makes no sense. See example below.
+ @throw out_of_range.403 if the key @a key is is not stored in the object;
+ that is, `find(key) == end()`. See example below.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Logarithmic in the size of the container.
+
+ @sa @ref operator[](const typename object_t::key_type&) for unchecked
+ access by reference
+ @sa @ref value() for access by value with a default value
+
+ @since version 1.0.0
+
+ @liveexample{The example below shows how object elements can be read using
+ `at()`. It also demonstrates the different exceptions that can be thrown.,
+ at__object_t_key_type_const}
+ */
+ const_reference at(const typename object_t::key_type& key) const
+ {
+ // at only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ JSON_TRY
+ {
+ return m_value.object->at(key);
+ }
+ JSON_CATCH (std::out_of_range&)
+ {
+ // create better exception explanation
+ JSON_THROW(out_of_range::create(403, "key '" + key + "' not found"));
+ }
+ }
+ else
+ {
+ JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
+ }
+ }
+
+ /*!
+ @brief access specified array element
+
+ Returns a reference to the element at specified location @a idx.
+
+ @note If @a idx is beyond the range of the array (i.e., `idx >= size()`),
+ then the array is silently filled up with `null` values to make `idx` a
+ valid reference to the last stored element.
+
+ @param[in] idx index of the element to access
+
+ @return reference to the element at index @a idx
+
+ @throw type_error.305 if the JSON value is not an array or null; in that
+ cases, using the [] operator with an index makes no sense.
+
+ @complexity Constant if @a idx is in the range of the array. Otherwise
+ linear in `idx - size()`.
+
+ @liveexample{The example below shows how array elements can be read and
+ written using `[]` operator. Note the addition of `null`
+ values.,operatorarray__size_type}
+
+ @since version 1.0.0
+ */
+ reference operator[](size_type idx)
+ {
+ // implicitly convert null value to an empty array
+ if (is_null())
+ {
+ m_type = value_t::array;
+ m_value.array = create<array_t>();
+ assert_invariant();
+ }
+
+ // operator[] only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ // fill up array with null values if given idx is outside range
+ if (idx >= m_value.array->size())
+ {
+ m_value.array->insert(m_value.array->end(),
+ idx - m_value.array->size() + 1,
+ basic_json());
+ }
+
+ return m_value.array->operator[](idx);
+ }
+
+ JSON_THROW(type_error::create(305, "cannot use operator[] with a numeric argument with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief access specified array element
+
+ Returns a const reference to the element at specified location @a idx.
+
+ @param[in] idx index of the element to access
+
+ @return const reference to the element at index @a idx
+
+ @throw type_error.305 if the JSON value is not an array; in that case,
+ using the [] operator with an index makes no sense.
+
+ @complexity Constant.
+
+ @liveexample{The example below shows how array elements can be read using
+ the `[]` operator.,operatorarray__size_type_const}
+
+ @since version 1.0.0
+ */
+ const_reference operator[](size_type idx) const
+ {
+ // const operator[] only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ return m_value.array->operator[](idx);
+ }
+
+ JSON_THROW(type_error::create(305, "cannot use operator[] with a numeric argument with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief access specified object element
+
+ Returns a reference to the element at with specified key @a key.
+
+ @note If @a key is not found in the object, then it is silently added to
+ the object and filled with a `null` value to make `key` a valid reference.
+ In case the value was `null` before, it is converted to an object.
+
+ @param[in] key key of the element to access
+
+ @return reference to the element at key @a key
+
+ @throw type_error.305 if the JSON value is not an object or null; in that
+ cases, using the [] operator with a key makes no sense.
+
+ @complexity Logarithmic in the size of the container.
+
+ @liveexample{The example below shows how object elements can be read and
+ written using the `[]` operator.,operatorarray__key_type}
+
+ @sa @ref at(const typename object_t::key_type&) for access by reference
+ with range checking
+ @sa @ref value() for access by value with a default value
+
+ @since version 1.0.0
+ */
+ reference operator[](const typename object_t::key_type& key)
+ {
+ // implicitly convert null value to an empty object
+ if (is_null())
+ {
+ m_type = value_t::object;
+ m_value.object = create<object_t>();
+ assert_invariant();
+ }
+
+ // operator[] only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ return m_value.object->operator[](key);
+ }
+
+ JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief read-only access specified object element
+
+ Returns a const reference to the element at with specified key @a key. No
+ bounds checking is performed.
+
+ @warning If the element with key @a key does not exist, the behavior is
+ undefined.
+
+ @param[in] key key of the element to access
+
+ @return const reference to the element at key @a key
+
+ @pre The element with key @a key must exist. **This precondition is
+ enforced with an assertion.**
+
+ @throw type_error.305 if the JSON value is not an object; in that case,
+ using the [] operator with a key makes no sense.
+
+ @complexity Logarithmic in the size of the container.
+
+ @liveexample{The example below shows how object elements can be read using
+ the `[]` operator.,operatorarray__key_type_const}
+
+ @sa @ref at(const typename object_t::key_type&) for access by reference
+ with range checking
+ @sa @ref value() for access by value with a default value
+
+ @since version 1.0.0
+ */
+ const_reference operator[](const typename object_t::key_type& key) const
+ {
+ // const operator[] only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ assert(m_value.object->find(key) != m_value.object->end());
+ return m_value.object->find(key)->second;
+ }
+
+ JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief access specified object element
+
+ Returns a reference to the element at with specified key @a key.
+
+ @note If @a key is not found in the object, then it is silently added to
+ the object and filled with a `null` value to make `key` a valid reference.
+ In case the value was `null` before, it is converted to an object.
+
+ @param[in] key key of the element to access
+
+ @return reference to the element at key @a key
+
+ @throw type_error.305 if the JSON value is not an object or null; in that
+ cases, using the [] operator with a key makes no sense.
+
+ @complexity Logarithmic in the size of the container.
+
+ @liveexample{The example below shows how object elements can be read and
+ written using the `[]` operator.,operatorarray__key_type}
+
+ @sa @ref at(const typename object_t::key_type&) for access by reference
+ with range checking
+ @sa @ref value() for access by value with a default value
+
+ @since version 1.1.0
+ */
+ template<typename T>
+ reference operator[](T* key)
+ {
+ // implicitly convert null to object
+ if (is_null())
+ {
+ m_type = value_t::object;
+ m_value = value_t::object;
+ assert_invariant();
+ }
+
+ // at only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ return m_value.object->operator[](key);
+ }
+
+ JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief read-only access specified object element
+
+ Returns a const reference to the element at with specified key @a key. No
+ bounds checking is performed.
+
+ @warning If the element with key @a key does not exist, the behavior is
+ undefined.
+
+ @param[in] key key of the element to access
+
+ @return const reference to the element at key @a key
+
+ @pre The element with key @a key must exist. **This precondition is
+ enforced with an assertion.**
+
+ @throw type_error.305 if the JSON value is not an object; in that case,
+ using the [] operator with a key makes no sense.
+
+ @complexity Logarithmic in the size of the container.
+
+ @liveexample{The example below shows how object elements can be read using
+ the `[]` operator.,operatorarray__key_type_const}
+
+ @sa @ref at(const typename object_t::key_type&) for access by reference
+ with range checking
+ @sa @ref value() for access by value with a default value
+
+ @since version 1.1.0
+ */
+ template<typename T>
+ const_reference operator[](T* key) const
+ {
+ // at only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ assert(m_value.object->find(key) != m_value.object->end());
+ return m_value.object->find(key)->second;
+ }
+
+ JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief access specified object element with default value
+
+ Returns either a copy of an object's element at the specified key @a key
+ or a given default value if no element with key @a key exists.
+
+ The function is basically equivalent to executing
+ @code {.cpp}
+ try {
+ return at(key);
+ } catch(out_of_range) {
+ return default_value;
+ }
+ @endcode
+
+ @note Unlike @ref at(const typename object_t::key_type&), this function
+ does not throw if the given key @a key was not found.
+
+ @note Unlike @ref operator[](const typename object_t::key_type& key), this
+ function does not implicitly add an element to the position defined by @a
+ key. This function is furthermore also applicable to const objects.
+
+ @param[in] key key of the element to access
+ @param[in] default_value the value to return if @a key is not found
+
+ @tparam ValueType type compatible to JSON values, for instance `int` for
+ JSON integer numbers, `bool` for JSON booleans, or `std::vector` types for
+ JSON arrays. Note the type of the expected value at @a key and the default
+ value @a default_value must be compatible.
+
+ @return copy of the element at key @a key or @a default_value if @a key
+ is not found
+
+ @throw type_error.306 if the JSON value is not an object; in that case,
+ using `value()` with a key makes no sense.
+
+ @complexity Logarithmic in the size of the container.
+
+ @liveexample{The example below shows how object elements can be queried
+ with a default value.,basic_json__value}
+
+ @sa @ref at(const typename object_t::key_type&) for access by reference
+ with range checking
+ @sa @ref operator[](const typename object_t::key_type&) for unchecked
+ access by reference
+
+ @since version 1.0.0
+ */
+ template<class ValueType, typename std::enable_if<
+ std::is_convertible<basic_json_t, ValueType>::value, int>::type = 0>
+ ValueType value(const typename object_t::key_type& key, const ValueType& default_value) const
+ {
+ // at only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ // if key is found, return value and given default value otherwise
+ const auto it = find(key);
+ if (it != end())
+ {
+ return *it;
+ }
+
+ return default_value;
+ }
+
+ JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief overload for a default value of type const char*
+ @copydoc basic_json::value(const typename object_t::key_type&, const ValueType&) const
+ */
+ string_t value(const typename object_t::key_type& key, const char* default_value) const
+ {
+ return value(key, string_t(default_value));
+ }
+
+ /*!
+ @brief access specified object element via JSON Pointer with default value
+
+ Returns either a copy of an object's element at the specified key @a key
+ or a given default value if no element with key @a key exists.
+
+ The function is basically equivalent to executing
+ @code {.cpp}
+ try {
+ return at(ptr);
+ } catch(out_of_range) {
+ return default_value;
+ }
+ @endcode
+
+ @note Unlike @ref at(const json_pointer&), this function does not throw
+ if the given key @a key was not found.
+
+ @param[in] ptr a JSON pointer to the element to access
+ @param[in] default_value the value to return if @a ptr found no value
+
+ @tparam ValueType type compatible to JSON values, for instance `int` for
+ JSON integer numbers, `bool` for JSON booleans, or `std::vector` types for
+ JSON arrays. Note the type of the expected value at @a key and the default
+ value @a default_value must be compatible.
+
+ @return copy of the element at key @a key or @a default_value if @a key
+ is not found
+
+ @throw type_error.306 if the JSON value is not an object; in that case,
+ using `value()` with a key makes no sense.
+
+ @complexity Logarithmic in the size of the container.
+
+ @liveexample{The example below shows how object elements can be queried
+ with a default value.,basic_json__value_ptr}
+
+ @sa @ref operator[](const json_pointer&) for unchecked access by reference
+
+ @since version 2.0.2
+ */
+ template<class ValueType, typename std::enable_if<
+ std::is_convertible<basic_json_t, ValueType>::value, int>::type = 0>
+ ValueType value(const json_pointer& ptr, const ValueType& default_value) const
+ {
+ // at only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ // if pointer resolves a value, return it or use default value
+ JSON_TRY
+ {
+ return ptr.get_checked(this);
+ }
+ JSON_INTERNAL_CATCH (out_of_range&)
+ {
+ return default_value;
+ }
+ }
+
+ JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief overload for a default value of type const char*
+ @copydoc basic_json::value(const json_pointer&, ValueType) const
+ */
+ string_t value(const json_pointer& ptr, const char* default_value) const
+ {
+ return value(ptr, string_t(default_value));
+ }
+
+ /*!
+ @brief access the first element
+
+ Returns a reference to the first element in the container. For a JSON
+ container `c`, the expression `c.front()` is equivalent to `*c.begin()`.
+
+ @return In case of a structured type (array or object), a reference to the
+ first element is returned. In case of number, string, or boolean values, a
+ reference to the value is returned.
+
+ @complexity Constant.
+
+ @pre The JSON value must not be `null` (would throw `std::out_of_range`)
+ or an empty array or object (undefined behavior, **guarded by
+ assertions**).
+ @post The JSON value remains unchanged.
+
+ @throw invalid_iterator.214 when called on `null` value
+
+ @liveexample{The following code shows an example for `front()`.,front}
+
+ @sa @ref back() -- access the last element
+
+ @since version 1.0.0
+ */
+ reference front()
+ {
+ return *begin();
+ }
+
+ /*!
+ @copydoc basic_json::front()
+ */
+ const_reference front() const
+ {
+ return *cbegin();
+ }
+
+ /*!
+ @brief access the last element
+
+ Returns a reference to the last element in the container. For a JSON
+ container `c`, the expression `c.back()` is equivalent to
+ @code {.cpp}
+ auto tmp = c.end();
+ --tmp;
+ return *tmp;
+ @endcode
+
+ @return In case of a structured type (array or object), a reference to the
+ last element is returned. In case of number, string, or boolean values, a
+ reference to the value is returned.
+
+ @complexity Constant.
+
+ @pre The JSON value must not be `null` (would throw `std::out_of_range`)
+ or an empty array or object (undefined behavior, **guarded by
+ assertions**).
+ @post The JSON value remains unchanged.
+
+ @throw invalid_iterator.214 when called on a `null` value. See example
+ below.
+
+ @liveexample{The following code shows an example for `back()`.,back}
+
+ @sa @ref front() -- access the first element
+
+ @since version 1.0.0
+ */
+ reference back()
+ {
+ auto tmp = end();
+ --tmp;
+ return *tmp;
+ }
+
+ /*!
+ @copydoc basic_json::back()
+ */
+ const_reference back() const
+ {
+ auto tmp = cend();
+ --tmp;
+ return *tmp;
+ }
+
+ /*!
+ @brief remove element given an iterator
+
+ Removes the element specified by iterator @a pos. The iterator @a pos must
+ be valid and dereferenceable. Thus the `end()` iterator (which is valid,
+ but is not dereferenceable) cannot be used as a value for @a pos.
+
+ If called on a primitive type other than `null`, the resulting JSON value
+ will be `null`.
+
+ @param[in] pos iterator to the element to remove
+ @return Iterator following the last removed element. If the iterator @a
+ pos refers to the last element, the `end()` iterator is returned.
+
+ @tparam IteratorType an @ref iterator or @ref const_iterator
+
+ @post Invalidates iterators and references at or after the point of the
+ erase, including the `end()` iterator.
+
+ @throw type_error.307 if called on a `null` value; example: `"cannot use
+ erase() with null"`
+ @throw invalid_iterator.202 if called on an iterator which does not belong
+ to the current JSON value; example: `"iterator does not fit current
+ value"`
+ @throw invalid_iterator.205 if called on a primitive type with invalid
+ iterator (i.e., any iterator which is not `begin()`); example: `"iterator
+ out of range"`
+
+ @complexity The complexity depends on the type:
+ - objects: amortized constant
+ - arrays: linear in distance between @a pos and the end of the container
+ - strings: linear in the length of the string
+ - other types: constant
+
+ @liveexample{The example shows the result of `erase()` for different JSON
+ types.,erase__IteratorType}
+
+ @sa @ref erase(IteratorType, IteratorType) -- removes the elements in
+ the given range
+ @sa @ref erase(const typename object_t::key_type&) -- removes the element
+ from an object at the given key
+ @sa @ref erase(const size_type) -- removes the element from an array at
+ the given index
+
+ @since version 1.0.0
+ */
+ template<class IteratorType, typename std::enable_if<
+ std::is_same<IteratorType, typename basic_json_t::iterator>::value or
+ std::is_same<IteratorType, typename basic_json_t::const_iterator>::value, int>::type
+ = 0>
+ IteratorType erase(IteratorType pos)
+ {
+ // make sure iterator fits the current value
+ if (JSON_UNLIKELY(this != pos.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
+ }
+
+ IteratorType result = end();
+
+ switch (m_type)
+ {
+ case value_t::boolean:
+ case value_t::number_float:
+ case value_t::number_integer:
+ case value_t::number_unsigned:
+ case value_t::string:
+ {
+ if (JSON_UNLIKELY(not pos.m_it.primitive_iterator.is_begin()))
+ {
+ JSON_THROW(invalid_iterator::create(205, "iterator out of range"));
+ }
+
+ if (is_string())
+ {
+ AllocatorType<string_t> alloc;
+ std::allocator_traits<decltype(alloc)>::destroy(alloc, m_value.string);
+ std::allocator_traits<decltype(alloc)>::deallocate(alloc, m_value.string, 1);
+ m_value.string = nullptr;
+ }
+
+ m_type = value_t::null;
+ assert_invariant();
+ break;
+ }
+
+ case value_t::object:
+ {
+ result.m_it.object_iterator = m_value.object->erase(pos.m_it.object_iterator);
+ break;
+ }
+
+ case value_t::array:
+ {
+ result.m_it.array_iterator = m_value.array->erase(pos.m_it.array_iterator);
+ break;
+ }
+
+ default:
+ JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief remove elements given an iterator range
+
+ Removes the element specified by the range `[first; last)`. The iterator
+ @a first does not need to be dereferenceable if `first == last`: erasing
+ an empty range is a no-op.
+
+ If called on a primitive type other than `null`, the resulting JSON value
+ will be `null`.
+
+ @param[in] first iterator to the beginning of the range to remove
+ @param[in] last iterator past the end of the range to remove
+ @return Iterator following the last removed element. If the iterator @a
+ second refers to the last element, the `end()` iterator is returned.
+
+ @tparam IteratorType an @ref iterator or @ref const_iterator
+
+ @post Invalidates iterators and references at or after the point of the
+ erase, including the `end()` iterator.
+
+ @throw type_error.307 if called on a `null` value; example: `"cannot use
+ erase() with null"`
+ @throw invalid_iterator.203 if called on iterators which does not belong
+ to the current JSON value; example: `"iterators do not fit current value"`
+ @throw invalid_iterator.204 if called on a primitive type with invalid
+ iterators (i.e., if `first != begin()` and `last != end()`); example:
+ `"iterators out of range"`
+
+ @complexity The complexity depends on the type:
+ - objects: `log(size()) + std::distance(first, last)`
+ - arrays: linear in the distance between @a first and @a last, plus linear
+ in the distance between @a last and end of the container
+ - strings: linear in the length of the string
+ - other types: constant
+
+ @liveexample{The example shows the result of `erase()` for different JSON
+ types.,erase__IteratorType_IteratorType}
+
+ @sa @ref erase(IteratorType) -- removes the element at a given position
+ @sa @ref erase(const typename object_t::key_type&) -- removes the element
+ from an object at the given key
+ @sa @ref erase(const size_type) -- removes the element from an array at
+ the given index
+
+ @since version 1.0.0
+ */
+ template<class IteratorType, typename std::enable_if<
+ std::is_same<IteratorType, typename basic_json_t::iterator>::value or
+ std::is_same<IteratorType, typename basic_json_t::const_iterator>::value, int>::type
+ = 0>
+ IteratorType erase(IteratorType first, IteratorType last)
+ {
+ // make sure iterator fits the current value
+ if (JSON_UNLIKELY(this != first.m_object or this != last.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(203, "iterators do not fit current value"));
+ }
+
+ IteratorType result = end();
+
+ switch (m_type)
+ {
+ case value_t::boolean:
+ case value_t::number_float:
+ case value_t::number_integer:
+ case value_t::number_unsigned:
+ case value_t::string:
+ {
+ if (JSON_LIKELY(not first.m_it.primitive_iterator.is_begin()
+ or not last.m_it.primitive_iterator.is_end()))
+ {
+ JSON_THROW(invalid_iterator::create(204, "iterators out of range"));
+ }
+
+ if (is_string())
+ {
+ AllocatorType<string_t> alloc;
+ std::allocator_traits<decltype(alloc)>::destroy(alloc, m_value.string);
+ std::allocator_traits<decltype(alloc)>::deallocate(alloc, m_value.string, 1);
+ m_value.string = nullptr;
+ }
+
+ m_type = value_t::null;
+ assert_invariant();
+ break;
+ }
+
+ case value_t::object:
+ {
+ result.m_it.object_iterator = m_value.object->erase(first.m_it.object_iterator,
+ last.m_it.object_iterator);
+ break;
+ }
+
+ case value_t::array:
+ {
+ result.m_it.array_iterator = m_value.array->erase(first.m_it.array_iterator,
+ last.m_it.array_iterator);
+ break;
+ }
+
+ default:
+ JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief remove element from a JSON object given a key
+
+ Removes elements from a JSON object with the key value @a key.
+
+ @param[in] key value of the elements to remove
+
+ @return Number of elements removed. If @a ObjectType is the default
+ `std::map` type, the return value will always be `0` (@a key was not
+ found) or `1` (@a key was found).
+
+ @post References and iterators to the erased elements are invalidated.
+ Other references and iterators are not affected.
+
+ @throw type_error.307 when called on a type other than JSON object;
+ example: `"cannot use erase() with null"`
+
+ @complexity `log(size()) + count(key)`
+
+ @liveexample{The example shows the effect of `erase()`.,erase__key_type}
+
+ @sa @ref erase(IteratorType) -- removes the element at a given position
+ @sa @ref erase(IteratorType, IteratorType) -- removes the elements in
+ the given range
+ @sa @ref erase(const size_type) -- removes the element from an array at
+ the given index
+
+ @since version 1.0.0
+ */
+ size_type erase(const typename object_t::key_type& key)
+ {
+ // this erase only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ return m_value.object->erase(key);
+ }
+
+ JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief remove element from a JSON array given an index
+
+ Removes element from a JSON array at the index @a idx.
+
+ @param[in] idx index of the element to remove
+
+ @throw type_error.307 when called on a type other than JSON object;
+ example: `"cannot use erase() with null"`
+ @throw out_of_range.401 when `idx >= size()`; example: `"array index 17
+ is out of range"`
+
+ @complexity Linear in distance between @a idx and the end of the container.
+
+ @liveexample{The example shows the effect of `erase()`.,erase__size_type}
+
+ @sa @ref erase(IteratorType) -- removes the element at a given position
+ @sa @ref erase(IteratorType, IteratorType) -- removes the elements in
+ the given range
+ @sa @ref erase(const typename object_t::key_type&) -- removes the element
+ from an object at the given key
+
+ @since version 1.0.0
+ */
+ void erase(const size_type idx)
+ {
+ // this erase only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ if (JSON_UNLIKELY(idx >= size()))
+ {
+ JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
+ }
+
+ m_value.array->erase(m_value.array->begin() + static_cast<difference_type>(idx));
+ }
+ else
+ {
+ JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
+ }
+ }
+
+ /// @}
+
+
+ ////////////
+ // lookup //
+ ////////////
+
+ /// @name lookup
+ /// @{
+
+ /*!
+ @brief find an element in a JSON object
+
+ Finds an element in a JSON object with key equivalent to @a key. If the
+ element is not found or the JSON value is not an object, end() is
+ returned.
+
+ @note This method always returns @ref end() when executed on a JSON type
+ that is not an object.
+
+ @param[in] key key value of the element to search for.
+
+ @return Iterator to an element with key equivalent to @a key. If no such
+ element is found or the JSON value is not an object, past-the-end (see
+ @ref end()) iterator is returned.
+
+ @complexity Logarithmic in the size of the JSON object.
+
+ @liveexample{The example shows how `find()` is used.,find__key_type}
+
+ @sa @ref contains(KeyT&&) const -- checks whether a key exists
+
+ @since version 1.0.0
+ */
+ template<typename KeyT>
+ iterator find(KeyT&& key)
+ {
+ auto result = end();
+
+ if (is_object())
+ {
+ result.m_it.object_iterator = m_value.object->find(std::forward<KeyT>(key));
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief find an element in a JSON object
+ @copydoc find(KeyT&&)
+ */
+ template<typename KeyT>
+ const_iterator find(KeyT&& key) const
+ {
+ auto result = cend();
+
+ if (is_object())
+ {
+ result.m_it.object_iterator = m_value.object->find(std::forward<KeyT>(key));
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief returns the number of occurrences of a key in a JSON object
+
+ Returns the number of elements with key @a key. If ObjectType is the
+ default `std::map` type, the return value will always be `0` (@a key was
+ not found) or `1` (@a key was found).
+
+ @note This method always returns `0` when executed on a JSON type that is
+ not an object.
+
+ @param[in] key key value of the element to count
+
+ @return Number of elements with key @a key. If the JSON value is not an
+ object, the return value will be `0`.
+
+ @complexity Logarithmic in the size of the JSON object.
+
+ @liveexample{The example shows how `count()` is used.,count}
+
+ @since version 1.0.0
+ */
+ template<typename KeyT>
+ size_type count(KeyT&& key) const
+ {
+ // return 0 for all nonobject types
+ return is_object() ? m_value.object->count(std::forward<KeyT>(key)) : 0;
+ }
+
+ /*!
+ @brief check the existence of an element in a JSON object
+
+ Check whether an element exists in a JSON object with key equivalent to
+ @a key. If the element is not found or the JSON value is not an object,
+ false is returned.
+
+ @note This method always returns false when executed on a JSON type
+ that is not an object.
+
+ @param[in] key key value to check its existence.
+
+ @return true if an element with specified @a key exists. If no such
+ element with such key is found or the JSON value is not an object,
+ false is returned.
+
+ @complexity Logarithmic in the size of the JSON object.
+
+ @liveexample{The following code shows an example for `contains()`.,contains}
+
+ @sa @ref find(KeyT&&) -- returns an iterator to an object element
+
+ @since version 3.6.0
+ */
+ template<typename KeyT>
+ bool contains(KeyT&& key) const
+ {
+ return is_object() and m_value.object->find(std::forward<KeyT>(key)) != m_value.object->end();
+ }
+
+ /// @}
+
+
+ ///////////////
+ // iterators //
+ ///////////////
+
+ /// @name iterators
+ /// @{
+
+ /*!
+ @brief returns an iterator to the first element
+
+ Returns an iterator to the first element.
+
+ @image html range-begin-end.svg "Illustration from cppreference.com"
+
+ @return iterator to the first element
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is constant.
+
+ @liveexample{The following code shows an example for `begin()`.,begin}
+
+ @sa @ref cbegin() -- returns a const iterator to the beginning
+ @sa @ref end() -- returns an iterator to the end
+ @sa @ref cend() -- returns a const iterator to the end
+
+ @since version 1.0.0
+ */
+ iterator begin() noexcept
+ {
+ iterator result(this);
+ result.set_begin();
+ return result;
+ }
+
+ /*!
+ @copydoc basic_json::cbegin()
+ */
+ const_iterator begin() const noexcept
+ {
+ return cbegin();
+ }
+
+ /*!
+ @brief returns a const iterator to the first element
+
+ Returns a const iterator to the first element.
+
+ @image html range-begin-end.svg "Illustration from cppreference.com"
+
+ @return const iterator to the first element
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `const_cast<const basic_json&>(*this).begin()`.
+
+ @liveexample{The following code shows an example for `cbegin()`.,cbegin}
+
+ @sa @ref begin() -- returns an iterator to the beginning
+ @sa @ref end() -- returns an iterator to the end
+ @sa @ref cend() -- returns a const iterator to the end
+
+ @since version 1.0.0
+ */
+ const_iterator cbegin() const noexcept
+ {
+ const_iterator result(this);
+ result.set_begin();
+ return result;
+ }
+
+ /*!
+ @brief returns an iterator to one past the last element
+
+ Returns an iterator to one past the last element.
+
+ @image html range-begin-end.svg "Illustration from cppreference.com"
+
+ @return iterator one past the last element
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is constant.
+
+ @liveexample{The following code shows an example for `end()`.,end}
+
+ @sa @ref cend() -- returns a const iterator to the end
+ @sa @ref begin() -- returns an iterator to the beginning
+ @sa @ref cbegin() -- returns a const iterator to the beginning
+
+ @since version 1.0.0
+ */
+ iterator end() noexcept
+ {
+ iterator result(this);
+ result.set_end();
+ return result;
+ }
+
+ /*!
+ @copydoc basic_json::cend()
+ */
+ const_iterator end() const noexcept
+ {
+ return cend();
+ }
+
+ /*!
+ @brief returns a const iterator to one past the last element
+
+ Returns a const iterator to one past the last element.
+
+ @image html range-begin-end.svg "Illustration from cppreference.com"
+
+ @return const iterator one past the last element
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `const_cast<const basic_json&>(*this).end()`.
+
+ @liveexample{The following code shows an example for `cend()`.,cend}
+
+ @sa @ref end() -- returns an iterator to the end
+ @sa @ref begin() -- returns an iterator to the beginning
+ @sa @ref cbegin() -- returns a const iterator to the beginning
+
+ @since version 1.0.0
+ */
+ const_iterator cend() const noexcept
+ {
+ const_iterator result(this);
+ result.set_end();
+ return result;
+ }
+
+ /*!
+ @brief returns an iterator to the reverse-beginning
+
+ Returns an iterator to the reverse-beginning; that is, the last element.
+
+ @image html range-rbegin-rend.svg "Illustration from cppreference.com"
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `reverse_iterator(end())`.
+
+ @liveexample{The following code shows an example for `rbegin()`.,rbegin}
+
+ @sa @ref crbegin() -- returns a const reverse iterator to the beginning
+ @sa @ref rend() -- returns a reverse iterator to the end
+ @sa @ref crend() -- returns a const reverse iterator to the end
+
+ @since version 1.0.0
+ */
+ reverse_iterator rbegin() noexcept
+ {
+ return reverse_iterator(end());
+ }
+
+ /*!
+ @copydoc basic_json::crbegin()
+ */
+ const_reverse_iterator rbegin() const noexcept
+ {
+ return crbegin();
+ }
+
+ /*!
+ @brief returns an iterator to the reverse-end
+
+ Returns an iterator to the reverse-end; that is, one before the first
+ element.
+
+ @image html range-rbegin-rend.svg "Illustration from cppreference.com"
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `reverse_iterator(begin())`.
+
+ @liveexample{The following code shows an example for `rend()`.,rend}
+
+ @sa @ref crend() -- returns a const reverse iterator to the end
+ @sa @ref rbegin() -- returns a reverse iterator to the beginning
+ @sa @ref crbegin() -- returns a const reverse iterator to the beginning
+
+ @since version 1.0.0
+ */
+ reverse_iterator rend() noexcept
+ {
+ return reverse_iterator(begin());
+ }
+
+ /*!
+ @copydoc basic_json::crend()
+ */
+ const_reverse_iterator rend() const noexcept
+ {
+ return crend();
+ }
+
+ /*!
+ @brief returns a const reverse iterator to the last element
+
+ Returns a const iterator to the reverse-beginning; that is, the last
+ element.
+
+ @image html range-rbegin-rend.svg "Illustration from cppreference.com"
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `const_cast<const basic_json&>(*this).rbegin()`.
+
+ @liveexample{The following code shows an example for `crbegin()`.,crbegin}
+
+ @sa @ref rbegin() -- returns a reverse iterator to the beginning
+ @sa @ref rend() -- returns a reverse iterator to the end
+ @sa @ref crend() -- returns a const reverse iterator to the end
+
+ @since version 1.0.0
+ */
+ const_reverse_iterator crbegin() const noexcept
+ {
+ return const_reverse_iterator(cend());
+ }
+
+ /*!
+ @brief returns a const reverse iterator to one before the first
+
+ Returns a const reverse iterator to the reverse-end; that is, one before
+ the first element.
+
+ @image html range-rbegin-rend.svg "Illustration from cppreference.com"
+
+ @complexity Constant.
+
+ @requirement This function helps `basic_json` satisfying the
+ [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `const_cast<const basic_json&>(*this).rend()`.
+
+ @liveexample{The following code shows an example for `crend()`.,crend}
+
+ @sa @ref rend() -- returns a reverse iterator to the end
+ @sa @ref rbegin() -- returns a reverse iterator to the beginning
+ @sa @ref crbegin() -- returns a const reverse iterator to the beginning
+
+ @since version 1.0.0
+ */
+ const_reverse_iterator crend() const noexcept
+ {
+ return const_reverse_iterator(cbegin());
+ }
+
+ public:
+ /*!
+ @brief wrapper to access iterator member functions in range-based for
+
+ This function allows to access @ref iterator::key() and @ref
+ iterator::value() during range-based for loops. In these loops, a
+ reference to the JSON values is returned, so there is no access to the
+ underlying iterator.
+
+ For loop without iterator_wrapper:
+
+ @code{cpp}
+ for (auto it = j_object.begin(); it != j_object.end(); ++it)
+ {
+ std::cout << "key: " << it.key() << ", value:" << it.value() << '\n';
+ }
+ @endcode
+
+ Range-based for loop without iterator proxy:
+
+ @code{cpp}
+ for (auto it : j_object)
+ {
+ // "it" is of type json::reference and has no key() member
+ std::cout << "value: " << it << '\n';
+ }
+ @endcode
+
+ Range-based for loop with iterator proxy:
+
+ @code{cpp}
+ for (auto it : json::iterator_wrapper(j_object))
+ {
+ std::cout << "key: " << it.key() << ", value:" << it.value() << '\n';
+ }
+ @endcode
+
+ @note When iterating over an array, `key()` will return the index of the
+ element as string (see example).
+
+ @param[in] ref reference to a JSON value
+ @return iteration proxy object wrapping @a ref with an interface to use in
+ range-based for loops
+
+ @liveexample{The following code shows how the wrapper is used,iterator_wrapper}
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Constant.
+
+ @note The name of this function is not yet final and may change in the
+ future.
+
+ @deprecated This stream operator is deprecated and will be removed in
+ future 4.0.0 of the library. Please use @ref items() instead;
+ that is, replace `json::iterator_wrapper(j)` with `j.items()`.
+ */
+ JSON_DEPRECATED
+ static iteration_proxy<iterator> iterator_wrapper(reference ref) noexcept
+ {
+ return ref.items();
+ }
+
+ /*!
+ @copydoc iterator_wrapper(reference)
+ */
+ JSON_DEPRECATED
+ static iteration_proxy<const_iterator> iterator_wrapper(const_reference ref) noexcept
+ {
+ return ref.items();
+ }
+
+ /*!
+ @brief helper to access iterator member functions in range-based for
+
+ This function allows to access @ref iterator::key() and @ref
+ iterator::value() during range-based for loops. In these loops, a
+ reference to the JSON values is returned, so there is no access to the
+ underlying iterator.
+
+ For loop without `items()` function:
+
+ @code{cpp}
+ for (auto it = j_object.begin(); it != j_object.end(); ++it)
+ {
+ std::cout << "key: " << it.key() << ", value:" << it.value() << '\n';
+ }
+ @endcode
+
+ Range-based for loop without `items()` function:
+
+ @code{cpp}
+ for (auto it : j_object)
+ {
+ // "it" is of type json::reference and has no key() member
+ std::cout << "value: " << it << '\n';
+ }
+ @endcode
+
+ Range-based for loop with `items()` function:
+
+ @code{cpp}
+ for (auto& el : j_object.items())
+ {
+ std::cout << "key: " << el.key() << ", value:" << el.value() << '\n';
+ }
+ @endcode
+
+ The `items()` function also allows to use
+ [structured bindings](https://en.cppreference.com/w/cpp/language/structured_binding)
+ (C++17):
+
+ @code{cpp}
+ for (auto& [key, val] : j_object.items())
+ {
+ std::cout << "key: " << key << ", value:" << val << '\n';
+ }
+ @endcode
+
+ @note When iterating over an array, `key()` will return the index of the
+ element as string (see example). For primitive types (e.g., numbers),
+ `key()` returns an empty string.
+
+ @return iteration proxy object wrapping @a ref with an interface to use in
+ range-based for loops
+
+ @liveexample{The following code shows how the function is used.,items}
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Constant.
+
+ @since version 3.1.0, structured bindings support since 3.5.0.
+ */
+ iteration_proxy<iterator> items() noexcept
+ {
+ return iteration_proxy<iterator>(*this);
+ }
+
+ /*!
+ @copydoc items()
+ */
+ iteration_proxy<const_iterator> items() const noexcept
+ {
+ return iteration_proxy<const_iterator>(*this);
+ }
+
+ /// @}
+
+
+ //////////////
+ // capacity //
+ //////////////
+
+ /// @name capacity
+ /// @{
+
+ /*!
+ @brief checks whether the container is empty.
+
+ Checks if a JSON value has no elements (i.e. whether its @ref size is `0`).
+
+ @return The return value depends on the different types and is
+ defined as follows:
+ Value type | return value
+ ----------- | -------------
+ null | `true`
+ boolean | `false`
+ string | `false`
+ number | `false`
+ object | result of function `object_t::empty()`
+ array | result of function `array_t::empty()`
+
+ @liveexample{The following code uses `empty()` to check if a JSON
+ object contains any elements.,empty}
+
+ @complexity Constant, as long as @ref array_t and @ref object_t satisfy
+ the Container concept; that is, their `empty()` functions have constant
+ complexity.
+
+ @iterators No changes.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @note This function does not return whether a string stored as JSON value
+ is empty - it returns whether the JSON container itself is empty which is
+ false in the case of a string.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `begin() == end()`.
+
+ @sa @ref size() -- returns the number of elements
+
+ @since version 1.0.0
+ */
+ bool empty() const noexcept
+ {
+ switch (m_type)
+ {
+ case value_t::null:
+ {
+ // null values are empty
+ return true;
+ }
+
+ case value_t::array:
+ {
+ // delegate call to array_t::empty()
+ return m_value.array->empty();
+ }
+
+ case value_t::object:
+ {
+ // delegate call to object_t::empty()
+ return m_value.object->empty();
+ }
+
+ default:
+ {
+ // all other types are nonempty
+ return false;
+ }
+ }
+ }
+
+ /*!
+ @brief returns the number of elements
+
+ Returns the number of elements in a JSON value.
+
+ @return The return value depends on the different types and is
+ defined as follows:
+ Value type | return value
+ ----------- | -------------
+ null | `0`
+ boolean | `1`
+ string | `1`
+ number | `1`
+ object | result of function object_t::size()
+ array | result of function array_t::size()
+
+ @liveexample{The following code calls `size()` on the different value
+ types.,size}
+
+ @complexity Constant, as long as @ref array_t and @ref object_t satisfy
+ the Container concept; that is, their size() functions have constant
+ complexity.
+
+ @iterators No changes.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @note This function does not return the length of a string stored as JSON
+ value - it returns the number of elements in the JSON value which is 1 in
+ the case of a string.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of `std::distance(begin(), end())`.
+
+ @sa @ref empty() -- checks whether the container is empty
+ @sa @ref max_size() -- returns the maximal number of elements
+
+ @since version 1.0.0
+ */
+ size_type size() const noexcept
+ {
+ switch (m_type)
+ {
+ case value_t::null:
+ {
+ // null values are empty
+ return 0;
+ }
+
+ case value_t::array:
+ {
+ // delegate call to array_t::size()
+ return m_value.array->size();
+ }
+
+ case value_t::object:
+ {
+ // delegate call to object_t::size()
+ return m_value.object->size();
+ }
+
+ default:
+ {
+ // all other types have size 1
+ return 1;
+ }
+ }
+ }
+
+ /*!
+ @brief returns the maximum possible number of elements
+
+ Returns the maximum number of elements a JSON value is able to hold due to
+ system or library implementation limitations, i.e. `std::distance(begin(),
+ end())` for the JSON value.
+
+ @return The return value depends on the different types and is
+ defined as follows:
+ Value type | return value
+ ----------- | -------------
+ null | `0` (same as `size()`)
+ boolean | `1` (same as `size()`)
+ string | `1` (same as `size()`)
+ number | `1` (same as `size()`)
+ object | result of function `object_t::max_size()`
+ array | result of function `array_t::max_size()`
+
+ @liveexample{The following code calls `max_size()` on the different value
+ types. Note the output is implementation specific.,max_size}
+
+ @complexity Constant, as long as @ref array_t and @ref object_t satisfy
+ the Container concept; that is, their `max_size()` functions have constant
+ complexity.
+
+ @iterators No changes.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @requirement This function helps `basic_json` satisfying the
+ [Container](https://en.cppreference.com/w/cpp/named_req/Container)
+ requirements:
+ - The complexity is constant.
+ - Has the semantics of returning `b.size()` where `b` is the largest
+ possible JSON value.
+
+ @sa @ref size() -- returns the number of elements
+
+ @since version 1.0.0
+ */
+ size_type max_size() const noexcept
+ {
+ switch (m_type)
+ {
+ case value_t::array:
+ {
+ // delegate call to array_t::max_size()
+ return m_value.array->max_size();
+ }
+
+ case value_t::object:
+ {
+ // delegate call to object_t::max_size()
+ return m_value.object->max_size();
+ }
+
+ default:
+ {
+ // all other types have max_size() == size()
+ return size();
+ }
+ }
+ }
+
+ /// @}
+
+
+ ///////////////
+ // modifiers //
+ ///////////////
+
+ /// @name modifiers
+ /// @{
+
+ /*!
+ @brief clears the contents
+
+ Clears the content of a JSON value and resets it to the default value as
+ if @ref basic_json(value_t) would have been called with the current value
+ type from @ref type():
+
+ Value type | initial value
+ ----------- | -------------
+ null | `null`
+ boolean | `false`
+ string | `""`
+ number | `0`
+ object | `{}`
+ array | `[]`
+
+ @post Has the same effect as calling
+ @code {.cpp}
+ *this = basic_json(type());
+ @endcode
+
+ @liveexample{The example below shows the effect of `clear()` to different
+ JSON types.,clear}
+
+ @complexity Linear in the size of the JSON value.
+
+ @iterators All iterators, pointers and references related to this container
+ are invalidated.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @sa @ref basic_json(value_t) -- constructor that creates an object with the
+ same value than calling `clear()`
+
+ @since version 1.0.0
+ */
+ void clear() noexcept
+ {
+ switch (m_type)
+ {
+ case value_t::number_integer:
+ {
+ m_value.number_integer = 0;
+ break;
+ }
+
+ case value_t::number_unsigned:
+ {
+ m_value.number_unsigned = 0;
+ break;
+ }
+
+ case value_t::number_float:
+ {
+ m_value.number_float = 0.0;
+ break;
+ }
+
+ case value_t::boolean:
+ {
+ m_value.boolean = false;
+ break;
+ }
+
+ case value_t::string:
+ {
+ m_value.string->clear();
+ break;
+ }
+
+ case value_t::array:
+ {
+ m_value.array->clear();
+ break;
+ }
+
+ case value_t::object:
+ {
+ m_value.object->clear();
+ break;
+ }
+
+ default:
+ break;
+ }
+ }
+
+ /*!
+ @brief add an object to an array
+
+ Appends the given element @a val to the end of the JSON value. If the
+ function is called on a JSON null value, an empty array is created before
+ appending @a val.
+
+ @param[in] val the value to add to the JSON array
+
+ @throw type_error.308 when called on a type other than JSON array or
+ null; example: `"cannot use push_back() with number"`
+
+ @complexity Amortized constant.
+
+ @liveexample{The example shows how `push_back()` and `+=` can be used to
+ add elements to a JSON array. Note how the `null` value was silently
+ converted to a JSON array.,push_back}
+
+ @since version 1.0.0
+ */
+ void push_back(basic_json&& val)
+ {
+ // push_back only works for null objects or arrays
+ if (JSON_UNLIKELY(not(is_null() or is_array())))
+ {
+ JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name())));
+ }
+
+ // transform null object into an array
+ if (is_null())
+ {
+ m_type = value_t::array;
+ m_value = value_t::array;
+ assert_invariant();
+ }
+
+ // add element to array (move semantics)
+ m_value.array->push_back(std::move(val));
+ // invalidate object: mark it null so we do not call the destructor
+ // cppcheck-suppress accessMoved
+ val.m_type = value_t::null;
+ }
+
+ /*!
+ @brief add an object to an array
+ @copydoc push_back(basic_json&&)
+ */
+ reference operator+=(basic_json&& val)
+ {
+ push_back(std::move(val));
+ return *this;
+ }
+
+ /*!
+ @brief add an object to an array
+ @copydoc push_back(basic_json&&)
+ */
+ void push_back(const basic_json& val)
+ {
+ // push_back only works for null objects or arrays
+ if (JSON_UNLIKELY(not(is_null() or is_array())))
+ {
+ JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name())));
+ }
+
+ // transform null object into an array
+ if (is_null())
+ {
+ m_type = value_t::array;
+ m_value = value_t::array;
+ assert_invariant();
+ }
+
+ // add element to array
+ m_value.array->push_back(val);
+ }
+
+ /*!
+ @brief add an object to an array
+ @copydoc push_back(basic_json&&)
+ */
+ reference operator+=(const basic_json& val)
+ {
+ push_back(val);
+ return *this;
+ }
+
+ /*!
+ @brief add an object to an object
+
+ Inserts the given element @a val to the JSON object. If the function is
+ called on a JSON null value, an empty object is created before inserting
+ @a val.
+
+ @param[in] val the value to add to the JSON object
+
+ @throw type_error.308 when called on a type other than JSON object or
+ null; example: `"cannot use push_back() with number"`
+
+ @complexity Logarithmic in the size of the container, O(log(`size()`)).
+
+ @liveexample{The example shows how `push_back()` and `+=` can be used to
+ add elements to a JSON object. Note how the `null` value was silently
+ converted to a JSON object.,push_back__object_t__value}
+
+ @since version 1.0.0
+ */
+ void push_back(const typename object_t::value_type& val)
+ {
+ // push_back only works for null objects or objects
+ if (JSON_UNLIKELY(not(is_null() or is_object())))
+ {
+ JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name())));
+ }
+
+ // transform null object into an object
+ if (is_null())
+ {
+ m_type = value_t::object;
+ m_value = value_t::object;
+ assert_invariant();
+ }
+
+ // add element to array
+ m_value.object->insert(val);
+ }
+
+ /*!
+ @brief add an object to an object
+ @copydoc push_back(const typename object_t::value_type&)
+ */
+ reference operator+=(const typename object_t::value_type& val)
+ {
+ push_back(val);
+ return *this;
+ }
+
+ /*!
+ @brief add an object to an object
+
+ This function allows to use `push_back` with an initializer list. In case
+
+ 1. the current value is an object,
+ 2. the initializer list @a init contains only two elements, and
+ 3. the first element of @a init is a string,
+
+ @a init is converted into an object element and added using
+ @ref push_back(const typename object_t::value_type&). Otherwise, @a init
+ is converted to a JSON value and added using @ref push_back(basic_json&&).
+
+ @param[in] init an initializer list
+
+ @complexity Linear in the size of the initializer list @a init.
+
+ @note This function is required to resolve an ambiguous overload error,
+ because pairs like `{"key", "value"}` can be both interpreted as
+ `object_t::value_type` or `std::initializer_list<basic_json>`, see
+ https://github.com/nlohmann/json/issues/235 for more information.
+
+ @liveexample{The example shows how initializer lists are treated as
+ objects when possible.,push_back__initializer_list}
+ */
+ void push_back(initializer_list_t init)
+ {
+ if (is_object() and init.size() == 2 and (*init.begin())->is_string())
+ {
+ basic_json&& key = init.begin()->moved_or_copied();
+ push_back(typename object_t::value_type(
+ std::move(key.get_ref<string_t&>()), (init.begin() + 1)->moved_or_copied()));
+ }
+ else
+ {
+ push_back(basic_json(init));
+ }
+ }
+
+ /*!
+ @brief add an object to an object
+ @copydoc push_back(initializer_list_t)
+ */
+ reference operator+=(initializer_list_t init)
+ {
+ push_back(init);
+ return *this;
+ }
+
+ /*!
+ @brief add an object to an array
+
+ Creates a JSON value from the passed parameters @a args to the end of the
+ JSON value. If the function is called on a JSON null value, an empty array
+ is created before appending the value created from @a args.
+
+ @param[in] args arguments to forward to a constructor of @ref basic_json
+ @tparam Args compatible types to create a @ref basic_json object
+
+ @throw type_error.311 when called on a type other than JSON array or
+ null; example: `"cannot use emplace_back() with number"`
+
+ @complexity Amortized constant.
+
+ @liveexample{The example shows how `push_back()` can be used to add
+ elements to a JSON array. Note how the `null` value was silently converted
+ to a JSON array.,emplace_back}
+
+ @since version 2.0.8
+ */
+ template<class... Args>
+ void emplace_back(Args&& ... args)
+ {
+ // emplace_back only works for null objects or arrays
+ if (JSON_UNLIKELY(not(is_null() or is_array())))
+ {
+ JSON_THROW(type_error::create(311, "cannot use emplace_back() with " + std::string(type_name())));
+ }
+
+ // transform null object into an array
+ if (is_null())
+ {
+ m_type = value_t::array;
+ m_value = value_t::array;
+ assert_invariant();
+ }
+
+ // add element to array (perfect forwarding)
+ m_value.array->emplace_back(std::forward<Args>(args)...);
+ }
+
+ /*!
+ @brief add an object to an object if key does not exist
+
+ Inserts a new element into a JSON object constructed in-place with the
+ given @a args if there is no element with the key in the container. If the
+ function is called on a JSON null value, an empty object is created before
+ appending the value created from @a args.
+
+ @param[in] args arguments to forward to a constructor of @ref basic_json
+ @tparam Args compatible types to create a @ref basic_json object
+
+ @return a pair consisting of an iterator to the inserted element, or the
+ already-existing element if no insertion happened, and a bool
+ denoting whether the insertion took place.
+
+ @throw type_error.311 when called on a type other than JSON object or
+ null; example: `"cannot use emplace() with number"`
+
+ @complexity Logarithmic in the size of the container, O(log(`size()`)).
+
+ @liveexample{The example shows how `emplace()` can be used to add elements
+ to a JSON object. Note how the `null` value was silently converted to a
+ JSON object. Further note how no value is added if there was already one
+ value stored with the same key.,emplace}
+
+ @since version 2.0.8
+ */
+ template<class... Args>
+ std::pair<iterator, bool> emplace(Args&& ... args)
+ {
+ // emplace only works for null objects or arrays
+ if (JSON_UNLIKELY(not(is_null() or is_object())))
+ {
+ JSON_THROW(type_error::create(311, "cannot use emplace() with " + std::string(type_name())));
+ }
+
+ // transform null object into an object
+ if (is_null())
+ {
+ m_type = value_t::object;
+ m_value = value_t::object;
+ assert_invariant();
+ }
+
+ // add element to array (perfect forwarding)
+ auto res = m_value.object->emplace(std::forward<Args>(args)...);
+ // create result iterator and set iterator to the result of emplace
+ auto it = begin();
+ it.m_it.object_iterator = res.first;
+
+ // return pair of iterator and boolean
+ return {it, res.second};
+ }
+
+ /// Helper for insertion of an iterator
+ /// @note: This uses std::distance to support GCC 4.8,
+ /// see https://github.com/nlohmann/json/pull/1257
+ template<typename... Args>
+ iterator insert_iterator(const_iterator pos, Args&& ... args)
+ {
+ iterator result(this);
+ assert(m_value.array != nullptr);
+
+ auto insert_pos = std::distance(m_value.array->begin(), pos.m_it.array_iterator);
+ m_value.array->insert(pos.m_it.array_iterator, std::forward<Args>(args)...);
+ result.m_it.array_iterator = m_value.array->begin() + insert_pos;
+
+ // This could have been written as:
+ // result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, cnt, val);
+ // but the return value of insert is missing in GCC 4.8, so it is written this way instead.
+
+ return result;
+ }
+
+ /*!
+ @brief inserts element
+
+ Inserts element @a val before iterator @a pos.
+
+ @param[in] pos iterator before which the content will be inserted; may be
+ the end() iterator
+ @param[in] val element to insert
+ @return iterator pointing to the inserted @a val.
+
+ @throw type_error.309 if called on JSON values other than arrays;
+ example: `"cannot use insert() with string"`
+ @throw invalid_iterator.202 if @a pos is not an iterator of *this;
+ example: `"iterator does not fit current value"`
+
+ @complexity Constant plus linear in the distance between @a pos and end of
+ the container.
+
+ @liveexample{The example shows how `insert()` is used.,insert}
+
+ @since version 1.0.0
+ */
+ iterator insert(const_iterator pos, const basic_json& val)
+ {
+ // insert only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ // check if iterator pos fits to this JSON value
+ if (JSON_UNLIKELY(pos.m_object != this))
+ {
+ JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
+ }
+
+ // insert to array and return iterator
+ return insert_iterator(pos, val);
+ }
+
+ JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief inserts element
+ @copydoc insert(const_iterator, const basic_json&)
+ */
+ iterator insert(const_iterator pos, basic_json&& val)
+ {
+ return insert(pos, val);
+ }
+
+ /*!
+ @brief inserts elements
+
+ Inserts @a cnt copies of @a val before iterator @a pos.
+
+ @param[in] pos iterator before which the content will be inserted; may be
+ the end() iterator
+ @param[in] cnt number of copies of @a val to insert
+ @param[in] val element to insert
+ @return iterator pointing to the first element inserted, or @a pos if
+ `cnt==0`
+
+ @throw type_error.309 if called on JSON values other than arrays; example:
+ `"cannot use insert() with string"`
+ @throw invalid_iterator.202 if @a pos is not an iterator of *this;
+ example: `"iterator does not fit current value"`
+
+ @complexity Linear in @a cnt plus linear in the distance between @a pos
+ and end of the container.
+
+ @liveexample{The example shows how `insert()` is used.,insert__count}
+
+ @since version 1.0.0
+ */
+ iterator insert(const_iterator pos, size_type cnt, const basic_json& val)
+ {
+ // insert only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ // check if iterator pos fits to this JSON value
+ if (JSON_UNLIKELY(pos.m_object != this))
+ {
+ JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
+ }
+
+ // insert to array and return iterator
+ return insert_iterator(pos, cnt, val);
+ }
+
+ JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
+ }
+
+ /*!
+ @brief inserts elements
+
+ Inserts elements from range `[first, last)` before iterator @a pos.
+
+ @param[in] pos iterator before which the content will be inserted; may be
+ the end() iterator
+ @param[in] first begin of the range of elements to insert
+ @param[in] last end of the range of elements to insert
+
+ @throw type_error.309 if called on JSON values other than arrays; example:
+ `"cannot use insert() with string"`
+ @throw invalid_iterator.202 if @a pos is not an iterator of *this;
+ example: `"iterator does not fit current value"`
+ @throw invalid_iterator.210 if @a first and @a last do not belong to the
+ same JSON value; example: `"iterators do not fit"`
+ @throw invalid_iterator.211 if @a first or @a last are iterators into
+ container for which insert is called; example: `"passed iterators may not
+ belong to container"`
+
+ @return iterator pointing to the first element inserted, or @a pos if
+ `first==last`
+
+ @complexity Linear in `std::distance(first, last)` plus linear in the
+ distance between @a pos and end of the container.
+
+ @liveexample{The example shows how `insert()` is used.,insert__range}
+
+ @since version 1.0.0
+ */
+ iterator insert(const_iterator pos, const_iterator first, const_iterator last)
+ {
+ // insert only works for arrays
+ if (JSON_UNLIKELY(not is_array()))
+ {
+ JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
+ }
+
+ // check if iterator pos fits to this JSON value
+ if (JSON_UNLIKELY(pos.m_object != this))
+ {
+ JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
+ }
+
+ // check if range iterators belong to the same JSON object
+ if (JSON_UNLIKELY(first.m_object != last.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(210, "iterators do not fit"));
+ }
+
+ if (JSON_UNLIKELY(first.m_object == this))
+ {
+ JSON_THROW(invalid_iterator::create(211, "passed iterators may not belong to container"));
+ }
+
+ // insert to array and return iterator
+ return insert_iterator(pos, first.m_it.array_iterator, last.m_it.array_iterator);
+ }
+
+ /*!
+ @brief inserts elements
+
+ Inserts elements from initializer list @a ilist before iterator @a pos.
+
+ @param[in] pos iterator before which the content will be inserted; may be
+ the end() iterator
+ @param[in] ilist initializer list to insert the values from
+
+ @throw type_error.309 if called on JSON values other than arrays; example:
+ `"cannot use insert() with string"`
+ @throw invalid_iterator.202 if @a pos is not an iterator of *this;
+ example: `"iterator does not fit current value"`
+
+ @return iterator pointing to the first element inserted, or @a pos if
+ `ilist` is empty
+
+ @complexity Linear in `ilist.size()` plus linear in the distance between
+ @a pos and end of the container.
+
+ @liveexample{The example shows how `insert()` is used.,insert__ilist}
+
+ @since version 1.0.0
+ */
+ iterator insert(const_iterator pos, initializer_list_t ilist)
+ {
+ // insert only works for arrays
+ if (JSON_UNLIKELY(not is_array()))
+ {
+ JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
+ }
+
+ // check if iterator pos fits to this JSON value
+ if (JSON_UNLIKELY(pos.m_object != this))
+ {
+ JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
+ }
+
+ // insert to array and return iterator
+ return insert_iterator(pos, ilist.begin(), ilist.end());
+ }
+
+ /*!
+ @brief inserts elements
+
+ Inserts elements from range `[first, last)`.
+
+ @param[in] first begin of the range of elements to insert
+ @param[in] last end of the range of elements to insert
+
+ @throw type_error.309 if called on JSON values other than objects; example:
+ `"cannot use insert() with string"`
+ @throw invalid_iterator.202 if iterator @a first or @a last does does not
+ point to an object; example: `"iterators first and last must point to
+ objects"`
+ @throw invalid_iterator.210 if @a first and @a last do not belong to the
+ same JSON value; example: `"iterators do not fit"`
+
+ @complexity Logarithmic: `O(N*log(size() + N))`, where `N` is the number
+ of elements to insert.
+
+ @liveexample{The example shows how `insert()` is used.,insert__range_object}
+
+ @since version 3.0.0
+ */
+ void insert(const_iterator first, const_iterator last)
+ {
+ // insert only works for objects
+ if (JSON_UNLIKELY(not is_object()))
+ {
+ JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
+ }
+
+ // check if range iterators belong to the same JSON object
+ if (JSON_UNLIKELY(first.m_object != last.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(210, "iterators do not fit"));
+ }
+
+ // passed iterators must belong to objects
+ if (JSON_UNLIKELY(not first.m_object->is_object()))
+ {
+ JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects"));
+ }
+
+ m_value.object->insert(first.m_it.object_iterator, last.m_it.object_iterator);
+ }
+
+ /*!
+ @brief updates a JSON object from another object, overwriting existing keys
+
+ Inserts all values from JSON object @a j and overwrites existing keys.
+
+ @param[in] j JSON object to read values from
+
+ @throw type_error.312 if called on JSON values other than objects; example:
+ `"cannot use update() with string"`
+
+ @complexity O(N*log(size() + N)), where N is the number of elements to
+ insert.
+
+ @liveexample{The example shows how `update()` is used.,update}
+
+ @sa https://docs.python.org/3.6/library/stdtypes.html#dict.update
+
+ @since version 3.0.0
+ */
+ void update(const_reference j)
+ {
+ // implicitly convert null value to an empty object
+ if (is_null())
+ {
+ m_type = value_t::object;
+ m_value.object = create<object_t>();
+ assert_invariant();
+ }
+
+ if (JSON_UNLIKELY(not is_object()))
+ {
+ JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name())));
+ }
+ if (JSON_UNLIKELY(not j.is_object()))
+ {
+ JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(j.type_name())));
+ }
+
+ for (auto it = j.cbegin(); it != j.cend(); ++it)
+ {
+ m_value.object->operator[](it.key()) = it.value();
+ }
+ }
+
+ /*!
+ @brief updates a JSON object from another object, overwriting existing keys
+
+ Inserts all values from from range `[first, last)` and overwrites existing
+ keys.
+
+ @param[in] first begin of the range of elements to insert
+ @param[in] last end of the range of elements to insert
+
+ @throw type_error.312 if called on JSON values other than objects; example:
+ `"cannot use update() with string"`
+ @throw invalid_iterator.202 if iterator @a first or @a last does does not
+ point to an object; example: `"iterators first and last must point to
+ objects"`
+ @throw invalid_iterator.210 if @a first and @a last do not belong to the
+ same JSON value; example: `"iterators do not fit"`
+
+ @complexity O(N*log(size() + N)), where N is the number of elements to
+ insert.
+
+ @liveexample{The example shows how `update()` is used__range.,update}
+
+ @sa https://docs.python.org/3.6/library/stdtypes.html#dict.update
+
+ @since version 3.0.0
+ */
+ void update(const_iterator first, const_iterator last)
+ {
+ // implicitly convert null value to an empty object
+ if (is_null())
+ {
+ m_type = value_t::object;
+ m_value.object = create<object_t>();
+ assert_invariant();
+ }
+
+ if (JSON_UNLIKELY(not is_object()))
+ {
+ JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name())));
+ }
+
+ // check if range iterators belong to the same JSON object
+ if (JSON_UNLIKELY(first.m_object != last.m_object))
+ {
+ JSON_THROW(invalid_iterator::create(210, "iterators do not fit"));
+ }
+
+ // passed iterators must belong to objects
+ if (JSON_UNLIKELY(not first.m_object->is_object()
+ or not last.m_object->is_object()))
+ {
+ JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects"));
+ }
+
+ for (auto it = first; it != last; ++it)
+ {
+ m_value.object->operator[](it.key()) = it.value();
+ }
+ }
+
+ /*!
+ @brief exchanges the values
+
+ Exchanges the contents of the JSON value with those of @a other. Does not
+ invoke any move, copy, or swap operations on individual elements. All
+ iterators and references remain valid. The past-the-end iterator is
+ invalidated.
+
+ @param[in,out] other JSON value to exchange the contents with
+
+ @complexity Constant.
+
+ @liveexample{The example below shows how JSON values can be swapped with
+ `swap()`.,swap__reference}
+
+ @since version 1.0.0
+ */
+ void swap(reference other) noexcept (
+ std::is_nothrow_move_constructible<value_t>::value and
+ std::is_nothrow_move_assignable<value_t>::value and
+ std::is_nothrow_move_constructible<json_value>::value and
+ std::is_nothrow_move_assignable<json_value>::value
+ )
+ {
+ std::swap(m_type, other.m_type);
+ std::swap(m_value, other.m_value);
+ assert_invariant();
+ }
+
+ /*!
+ @brief exchanges the values
+
+ Exchanges the contents of a JSON array with those of @a other. Does not
+ invoke any move, copy, or swap operations on individual elements. All
+ iterators and references remain valid. The past-the-end iterator is
+ invalidated.
+
+ @param[in,out] other array to exchange the contents with
+
+ @throw type_error.310 when JSON value is not an array; example: `"cannot
+ use swap() with string"`
+
+ @complexity Constant.
+
+ @liveexample{The example below shows how arrays can be swapped with
+ `swap()`.,swap__array_t}
+
+ @since version 1.0.0
+ */
+ void swap(array_t& other)
+ {
+ // swap only works for arrays
+ if (JSON_LIKELY(is_array()))
+ {
+ std::swap(*(m_value.array), other);
+ }
+ else
+ {
+ JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name())));
+ }
+ }
+
+ /*!
+ @brief exchanges the values
+
+ Exchanges the contents of a JSON object with those of @a other. Does not
+ invoke any move, copy, or swap operations on individual elements. All
+ iterators and references remain valid. The past-the-end iterator is
+ invalidated.
+
+ @param[in,out] other object to exchange the contents with
+
+ @throw type_error.310 when JSON value is not an object; example:
+ `"cannot use swap() with string"`
+
+ @complexity Constant.
+
+ @liveexample{The example below shows how objects can be swapped with
+ `swap()`.,swap__object_t}
+
+ @since version 1.0.0
+ */
+ void swap(object_t& other)
+ {
+ // swap only works for objects
+ if (JSON_LIKELY(is_object()))
+ {
+ std::swap(*(m_value.object), other);
+ }
+ else
+ {
+ JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name())));
+ }
+ }
+
+ /*!
+ @brief exchanges the values
+
+ Exchanges the contents of a JSON string with those of @a other. Does not
+ invoke any move, copy, or swap operations on individual elements. All
+ iterators and references remain valid. The past-the-end iterator is
+ invalidated.
+
+ @param[in,out] other string to exchange the contents with
+
+ @throw type_error.310 when JSON value is not a string; example: `"cannot
+ use swap() with boolean"`
+
+ @complexity Constant.
+
+ @liveexample{The example below shows how strings can be swapped with
+ `swap()`.,swap__string_t}
+
+ @since version 1.0.0
+ */
+ void swap(string_t& other)
+ {
+ // swap only works for strings
+ if (JSON_LIKELY(is_string()))
+ {
+ std::swap(*(m_value.string), other);
+ }
+ else
+ {
+ JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name())));
+ }
+ }
+
+ /// @}
+
+ public:
+ //////////////////////////////////////////
+ // lexicographical comparison operators //
+ //////////////////////////////////////////
+
+ /// @name lexicographical comparison operators
+ /// @{
+
+ /*!
+ @brief comparison: equal
+
+ Compares two JSON values for equality according to the following rules:
+ - Two JSON values are equal if (1) they are from the same type and (2)
+ their stored values are the same according to their respective
+ `operator==`.
+ - Integer and floating-point numbers are automatically converted before
+ comparison. Note than two NaN values are always treated as unequal.
+ - Two JSON null values are equal.
+
+ @note Floating-point inside JSON values numbers are compared with
+ `json::number_float_t::operator==` which is `double::operator==` by
+ default. To compare floating-point while respecting an epsilon, an alternative
+ [comparison function](https://github.com/mariokonrad/marnav/blob/master/src/marnav/math/floatingpoint.hpp#L34-#L39)
+ could be used, for instance
+ @code {.cpp}
+ template<typename T, typename = typename std::enable_if<std::is_floating_point<T>::value, T>::type>
+ inline bool is_same(T a, T b, T epsilon = std::numeric_limits<T>::epsilon()) noexcept
+ {
+ return std::abs(a - b) <= epsilon;
+ }
+ @endcode
+
+ @note NaN values never compare equal to themselves or to other NaN values.
+
+ @param[in] lhs first JSON value to consider
+ @param[in] rhs second JSON value to consider
+ @return whether the values @a lhs and @a rhs are equal
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @complexity Linear.
+
+ @liveexample{The example demonstrates comparing several JSON
+ types.,operator__equal}
+
+ @since version 1.0.0
+ */
+ friend bool operator==(const_reference lhs, const_reference rhs) noexcept
+ {
+ const auto lhs_type = lhs.type();
+ const auto rhs_type = rhs.type();
+
+ if (lhs_type == rhs_type)
+ {
+ switch (lhs_type)
+ {
+ case value_t::array:
+ return *lhs.m_value.array == *rhs.m_value.array;
+
+ case value_t::object:
+ return *lhs.m_value.object == *rhs.m_value.object;
+
+ case value_t::null:
+ return true;
+
+ case value_t::string:
+ return *lhs.m_value.string == *rhs.m_value.string;
+
+ case value_t::boolean:
+ return lhs.m_value.boolean == rhs.m_value.boolean;
+
+ case value_t::number_integer:
+ return lhs.m_value.number_integer == rhs.m_value.number_integer;
+
+ case value_t::number_unsigned:
+ return lhs.m_value.number_unsigned == rhs.m_value.number_unsigned;
+
+ case value_t::number_float:
+ return lhs.m_value.number_float == rhs.m_value.number_float;
+
+ default:
+ return false;
+ }
+ }
+ else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float)
+ {
+ return static_cast<number_float_t>(lhs.m_value.number_integer) == rhs.m_value.number_float;
+ }
+ else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer)
+ {
+ return lhs.m_value.number_float == static_cast<number_float_t>(rhs.m_value.number_integer);
+ }
+ else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float)
+ {
+ return static_cast<number_float_t>(lhs.m_value.number_unsigned) == rhs.m_value.number_float;
+ }
+ else if (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned)
+ {
+ return lhs.m_value.number_float == static_cast<number_float_t>(rhs.m_value.number_unsigned);
+ }
+ else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer)
+ {
+ return static_cast<number_integer_t>(lhs.m_value.number_unsigned) == rhs.m_value.number_integer;
+ }
+ else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned)
+ {
+ return lhs.m_value.number_integer == static_cast<number_integer_t>(rhs.m_value.number_unsigned);
+ }
+
+ return false;
+ }
+
+ /*!
+ @brief comparison: equal
+ @copydoc operator==(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator==(const_reference lhs, const ScalarType rhs) noexcept
+ {
+ return lhs == basic_json(rhs);
+ }
+
+ /*!
+ @brief comparison: equal
+ @copydoc operator==(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator==(const ScalarType lhs, const_reference rhs) noexcept
+ {
+ return basic_json(lhs) == rhs;
+ }
+
+ /*!
+ @brief comparison: not equal
+
+ Compares two JSON values for inequality by calculating `not (lhs == rhs)`.
+
+ @param[in] lhs first JSON value to consider
+ @param[in] rhs second JSON value to consider
+ @return whether the values @a lhs and @a rhs are not equal
+
+ @complexity Linear.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @liveexample{The example demonstrates comparing several JSON
+ types.,operator__notequal}
+
+ @since version 1.0.0
+ */
+ friend bool operator!=(const_reference lhs, const_reference rhs) noexcept
+ {
+ return not (lhs == rhs);
+ }
+
+ /*!
+ @brief comparison: not equal
+ @copydoc operator!=(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator!=(const_reference lhs, const ScalarType rhs) noexcept
+ {
+ return lhs != basic_json(rhs);
+ }
+
+ /*!
+ @brief comparison: not equal
+ @copydoc operator!=(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator!=(const ScalarType lhs, const_reference rhs) noexcept
+ {
+ return basic_json(lhs) != rhs;
+ }
+
+ /*!
+ @brief comparison: less than
+
+ Compares whether one JSON value @a lhs is less than another JSON value @a
+ rhs according to the following rules:
+ - If @a lhs and @a rhs have the same type, the values are compared using
+ the default `<` operator.
+ - Integer and floating-point numbers are automatically converted before
+ comparison
+ - In case @a lhs and @a rhs have different types, the values are ignored
+ and the order of the types is considered, see
+ @ref operator<(const value_t, const value_t).
+
+ @param[in] lhs first JSON value to consider
+ @param[in] rhs second JSON value to consider
+ @return whether @a lhs is less than @a rhs
+
+ @complexity Linear.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @liveexample{The example demonstrates comparing several JSON
+ types.,operator__less}
+
+ @since version 1.0.0
+ */
+ friend bool operator<(const_reference lhs, const_reference rhs) noexcept
+ {
+ const auto lhs_type = lhs.type();
+ const auto rhs_type = rhs.type();
+
+ if (lhs_type == rhs_type)
+ {
+ switch (lhs_type)
+ {
+ case value_t::array:
+ // note parentheses are necessary, see
+ // https://github.com/nlohmann/json/issues/1530
+ return (*lhs.m_value.array) < (*rhs.m_value.array);
+
+ case value_t::object:
+ return *lhs.m_value.object < *rhs.m_value.object;
+
+ case value_t::null:
+ return false;
+
+ case value_t::string:
+ return *lhs.m_value.string < *rhs.m_value.string;
+
+ case value_t::boolean:
+ return lhs.m_value.boolean < rhs.m_value.boolean;
+
+ case value_t::number_integer:
+ return lhs.m_value.number_integer < rhs.m_value.number_integer;
+
+ case value_t::number_unsigned:
+ return lhs.m_value.number_unsigned < rhs.m_value.number_unsigned;
+
+ case value_t::number_float:
+ return lhs.m_value.number_float < rhs.m_value.number_float;
+
+ default:
+ return false;
+ }
+ }
+ else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float)
+ {
+ return static_cast<number_float_t>(lhs.m_value.number_integer) < rhs.m_value.number_float;
+ }
+ else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer)
+ {
+ return lhs.m_value.number_float < static_cast<number_float_t>(rhs.m_value.number_integer);
+ }
+ else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float)
+ {
+ return static_cast<number_float_t>(lhs.m_value.number_unsigned) < rhs.m_value.number_float;
+ }
+ else if (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned)
+ {
+ return lhs.m_value.number_float < static_cast<number_float_t>(rhs.m_value.number_unsigned);
+ }
+ else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned)
+ {
+ return lhs.m_value.number_integer < static_cast<number_integer_t>(rhs.m_value.number_unsigned);
+ }
+ else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer)
+ {
+ return static_cast<number_integer_t>(lhs.m_value.number_unsigned) < rhs.m_value.number_integer;
+ }
+
+ // We only reach this line if we cannot compare values. In that case,
+ // we compare types. Note we have to call the operator explicitly,
+ // because MSVC has problems otherwise.
+ return operator<(lhs_type, rhs_type);
+ }
+
+ /*!
+ @brief comparison: less than
+ @copydoc operator<(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator<(const_reference lhs, const ScalarType rhs) noexcept
+ {
+ return lhs < basic_json(rhs);
+ }
+
+ /*!
+ @brief comparison: less than
+ @copydoc operator<(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator<(const ScalarType lhs, const_reference rhs) noexcept
+ {
+ return basic_json(lhs) < rhs;
+ }
+
+ /*!
+ @brief comparison: less than or equal
+
+ Compares whether one JSON value @a lhs is less than or equal to another
+ JSON value by calculating `not (rhs < lhs)`.
+
+ @param[in] lhs first JSON value to consider
+ @param[in] rhs second JSON value to consider
+ @return whether @a lhs is less than or equal to @a rhs
+
+ @complexity Linear.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @liveexample{The example demonstrates comparing several JSON
+ types.,operator__greater}
+
+ @since version 1.0.0
+ */
+ friend bool operator<=(const_reference lhs, const_reference rhs) noexcept
+ {
+ return not (rhs < lhs);
+ }
+
+ /*!
+ @brief comparison: less than or equal
+ @copydoc operator<=(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator<=(const_reference lhs, const ScalarType rhs) noexcept
+ {
+ return lhs <= basic_json(rhs);
+ }
+
+ /*!
+ @brief comparison: less than or equal
+ @copydoc operator<=(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator<=(const ScalarType lhs, const_reference rhs) noexcept
+ {
+ return basic_json(lhs) <= rhs;
+ }
+
+ /*!
+ @brief comparison: greater than
+
+ Compares whether one JSON value @a lhs is greater than another
+ JSON value by calculating `not (lhs <= rhs)`.
+
+ @param[in] lhs first JSON value to consider
+ @param[in] rhs second JSON value to consider
+ @return whether @a lhs is greater than to @a rhs
+
+ @complexity Linear.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @liveexample{The example demonstrates comparing several JSON
+ types.,operator__lessequal}
+
+ @since version 1.0.0
+ */
+ friend bool operator>(const_reference lhs, const_reference rhs) noexcept
+ {
+ return not (lhs <= rhs);
+ }
+
+ /*!
+ @brief comparison: greater than
+ @copydoc operator>(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator>(const_reference lhs, const ScalarType rhs) noexcept
+ {
+ return lhs > basic_json(rhs);
+ }
+
+ /*!
+ @brief comparison: greater than
+ @copydoc operator>(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator>(const ScalarType lhs, const_reference rhs) noexcept
+ {
+ return basic_json(lhs) > rhs;
+ }
+
+ /*!
+ @brief comparison: greater than or equal
+
+ Compares whether one JSON value @a lhs is greater than or equal to another
+ JSON value by calculating `not (lhs < rhs)`.
+
+ @param[in] lhs first JSON value to consider
+ @param[in] rhs second JSON value to consider
+ @return whether @a lhs is greater than or equal to @a rhs
+
+ @complexity Linear.
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @liveexample{The example demonstrates comparing several JSON
+ types.,operator__greaterequal}
+
+ @since version 1.0.0
+ */
+ friend bool operator>=(const_reference lhs, const_reference rhs) noexcept
+ {
+ return not (lhs < rhs);
+ }
+
+ /*!
+ @brief comparison: greater than or equal
+ @copydoc operator>=(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator>=(const_reference lhs, const ScalarType rhs) noexcept
+ {
+ return lhs >= basic_json(rhs);
+ }
+
+ /*!
+ @brief comparison: greater than or equal
+ @copydoc operator>=(const_reference, const_reference)
+ */
+ template<typename ScalarType, typename std::enable_if<
+ std::is_scalar<ScalarType>::value, int>::type = 0>
+ friend bool operator>=(const ScalarType lhs, const_reference rhs) noexcept
+ {
+ return basic_json(lhs) >= rhs;
+ }
+
+ /// @}
+
+ ///////////////////
+ // serialization //
+ ///////////////////
+
+ /// @name serialization
+ /// @{
+
+ /*!
+ @brief serialize to stream
+
+ Serialize the given JSON value @a j to the output stream @a o. The JSON
+ value will be serialized using the @ref dump member function.
+
+ - The indentation of the output can be controlled with the member variable
+ `width` of the output stream @a o. For instance, using the manipulator
+ `std::setw(4)` on @a o sets the indentation level to `4` and the
+ serialization result is the same as calling `dump(4)`.
+
+ - The indentation character can be controlled with the member variable
+ `fill` of the output stream @a o. For instance, the manipulator
+ `std::setfill('\\t')` sets indentation to use a tab character rather than
+ the default space character.
+
+ @param[in,out] o stream to serialize to
+ @param[in] j JSON value to serialize
+
+ @return the stream @a o
+
+ @throw type_error.316 if a string stored inside the JSON value is not
+ UTF-8 encoded
+
+ @complexity Linear.
+
+ @liveexample{The example below shows the serialization with different
+ parameters to `width` to adjust the indentation level.,operator_serialize}
+
+ @since version 1.0.0; indentation character added in version 3.0.0
+ */
+ friend std::ostream& operator<<(std::ostream& o, const basic_json& j)
+ {
+ // read width member and use it as indentation parameter if nonzero
+ const bool pretty_print = o.width() > 0;
+ const auto indentation = pretty_print ? o.width() : 0;
+
+ // reset width to 0 for subsequent calls to this stream
+ o.width(0);
+
+ // do the actual serialization
+ serializer s(detail::output_adapter<char>(o), o.fill());
+ s.dump(j, pretty_print, false, static_cast<unsigned int>(indentation));
+ return o;
+ }
+
+ /*!
+ @brief serialize to stream
+ @deprecated This stream operator is deprecated and will be removed in
+ future 4.0.0 of the library. Please use
+ @ref operator<<(std::ostream&, const basic_json&)
+ instead; that is, replace calls like `j >> o;` with `o << j;`.
+ @since version 1.0.0; deprecated since version 3.0.0
+ */
+ JSON_DEPRECATED
+ friend std::ostream& operator>>(const basic_json& j, std::ostream& o)
+ {
+ return o << j;
+ }
+
+ /// @}
+
+
+ /////////////////////
+ // deserialization //
+ /////////////////////
+
+ /// @name deserialization
+ /// @{
+
+ /*!
+ @brief deserialize from a compatible input
+
+ This function reads from a compatible input. Examples are:
+ - an array of 1-byte values
+ - strings with character/literal type with size of 1 byte
+ - input streams
+ - container with contiguous storage of 1-byte values. Compatible container
+ types include `std::vector`, `std::string`, `std::array`,
+ `std::valarray`, and `std::initializer_list`. Furthermore, C-style
+ arrays can be used with `std::begin()`/`std::end()`. User-defined
+ containers can be used as long as they implement random-access iterators
+ and a contiguous storage.
+
+ @pre Each element of the container has a size of 1 byte. Violating this
+ precondition yields undefined behavior. **This precondition is enforced
+ with a static assertion.**
+
+ @pre The container storage is contiguous. Violating this precondition
+ yields undefined behavior. **This precondition is enforced with an
+ assertion.**
+
+ @warning There is no way to enforce all preconditions at compile-time. If
+ the function is called with a noncompliant container and with
+ assertions switched off, the behavior is undefined and will most
+ likely yield segmentation violation.
+
+ @param[in] i input to read from
+ @param[in] cb a parser callback function of type @ref parser_callback_t
+ which is used to control the deserialization by filtering unwanted values
+ (optional)
+ @param[in] allow_exceptions whether to throw exceptions in case of a
+ parse error (optional, true by default)
+
+ @return deserialized JSON value; in case of a parse error and
+ @a allow_exceptions set to `false`, the return value will be
+ value_t::discarded.
+
+ @throw parse_error.101 if a parse error occurs; example: `""unexpected end
+ of input; expected string literal""`
+ @throw parse_error.102 if to_unicode fails or surrogate error
+ @throw parse_error.103 if to_unicode fails
+
+ @complexity Linear in the length of the input. The parser is a predictive
+ LL(1) parser. The complexity can be higher if the parser callback function
+ @a cb has a super-linear complexity.
+
+ @note A UTF-8 byte order mark is silently ignored.
+
+ @liveexample{The example below demonstrates the `parse()` function reading
+ from an array.,parse__array__parser_callback_t}
+
+ @liveexample{The example below demonstrates the `parse()` function with
+ and without callback function.,parse__string__parser_callback_t}
+
+ @liveexample{The example below demonstrates the `parse()` function with
+ and without callback function.,parse__istream__parser_callback_t}
+
+ @liveexample{The example below demonstrates the `parse()` function reading
+ from a contiguous container.,parse__contiguouscontainer__parser_callback_t}
+
+ @since version 2.0.3 (contiguous containers)
+ */
+ JSON_NODISCARD
+ static basic_json parse(detail::input_adapter&& i,
+ const parser_callback_t cb = nullptr,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ parser(i, cb, allow_exceptions).parse(true, result);
+ return result;
+ }
+
+ static bool accept(detail::input_adapter&& i)
+ {
+ return parser(i).accept(true);
+ }
+
+ /*!
+ @brief generate SAX events
+
+ The SAX event lister must follow the interface of @ref json_sax.
+
+ This function reads from a compatible input. Examples are:
+ - an array of 1-byte values
+ - strings with character/literal type with size of 1 byte
+ - input streams
+ - container with contiguous storage of 1-byte values. Compatible container
+ types include `std::vector`, `std::string`, `std::array`,
+ `std::valarray`, and `std::initializer_list`. Furthermore, C-style
+ arrays can be used with `std::begin()`/`std::end()`. User-defined
+ containers can be used as long as they implement random-access iterators
+ and a contiguous storage.
+
+ @pre Each element of the container has a size of 1 byte. Violating this
+ precondition yields undefined behavior. **This precondition is enforced
+ with a static assertion.**
+
+ @pre The container storage is contiguous. Violating this precondition
+ yields undefined behavior. **This precondition is enforced with an
+ assertion.**
+
+ @warning There is no way to enforce all preconditions at compile-time. If
+ the function is called with a noncompliant container and with
+ assertions switched off, the behavior is undefined and will most
+ likely yield segmentation violation.
+
+ @param[in] i input to read from
+ @param[in,out] sax SAX event listener
+ @param[in] format the format to parse (JSON, CBOR, MessagePack, or UBJSON)
+ @param[in] strict whether the input has to be consumed completely
+
+ @return return value of the last processed SAX event
+
+ @throw parse_error.101 if a parse error occurs; example: `""unexpected end
+ of input; expected string literal""`
+ @throw parse_error.102 if to_unicode fails or surrogate error
+ @throw parse_error.103 if to_unicode fails
+
+ @complexity Linear in the length of the input. The parser is a predictive
+ LL(1) parser. The complexity can be higher if the SAX consumer @a sax has
+ a super-linear complexity.
+
+ @note A UTF-8 byte order mark is silently ignored.
+
+ @liveexample{The example below demonstrates the `sax_parse()` function
+ reading from string and processing the events with a user-defined SAX
+ event consumer.,sax_parse}
+
+ @since version 3.2.0
+ */
+ template <typename SAX>
+ static bool sax_parse(detail::input_adapter&& i, SAX* sax,
+ input_format_t format = input_format_t::json,
+ const bool strict = true)
+ {
+ assert(sax);
+ return format == input_format_t::json
+ ? parser(std::move(i)).sax_parse(sax, strict)
+ : detail::binary_reader<basic_json, SAX>(std::move(i)).sax_parse(format, sax, strict);
+ }
+
+ /*!
+ @brief deserialize from an iterator range with contiguous storage
+
+ This function reads from an iterator range of a container with contiguous
+ storage of 1-byte values. Compatible container types include
+ `std::vector`, `std::string`, `std::array`, `std::valarray`, and
+ `std::initializer_list`. Furthermore, C-style arrays can be used with
+ `std::begin()`/`std::end()`. User-defined containers can be used as long
+ as they implement random-access iterators and a contiguous storage.
+
+ @pre The iterator range is contiguous. Violating this precondition yields
+ undefined behavior. **This precondition is enforced with an assertion.**
+ @pre Each element in the range has a size of 1 byte. Violating this
+ precondition yields undefined behavior. **This precondition is enforced
+ with a static assertion.**
+
+ @warning There is no way to enforce all preconditions at compile-time. If
+ the function is called with noncompliant iterators and with
+ assertions switched off, the behavior is undefined and will most
+ likely yield segmentation violation.
+
+ @tparam IteratorType iterator of container with contiguous storage
+ @param[in] first begin of the range to parse (included)
+ @param[in] last end of the range to parse (excluded)
+ @param[in] cb a parser callback function of type @ref parser_callback_t
+ which is used to control the deserialization by filtering unwanted values
+ (optional)
+ @param[in] allow_exceptions whether to throw exceptions in case of a
+ parse error (optional, true by default)
+
+ @return deserialized JSON value; in case of a parse error and
+ @a allow_exceptions set to `false`, the return value will be
+ value_t::discarded.
+
+ @throw parse_error.101 in case of an unexpected token
+ @throw parse_error.102 if to_unicode fails or surrogate error
+ @throw parse_error.103 if to_unicode fails
+
+ @complexity Linear in the length of the input. The parser is a predictive
+ LL(1) parser. The complexity can be higher if the parser callback function
+ @a cb has a super-linear complexity.
+
+ @note A UTF-8 byte order mark is silently ignored.
+
+ @liveexample{The example below demonstrates the `parse()` function reading
+ from an iterator range.,parse__iteratortype__parser_callback_t}
+
+ @since version 2.0.3
+ */
+ template<class IteratorType, typename std::enable_if<
+ std::is_base_of<
+ std::random_access_iterator_tag,
+ typename std::iterator_traits<IteratorType>::iterator_category>::value, int>::type = 0>
+ static basic_json parse(IteratorType first, IteratorType last,
+ const parser_callback_t cb = nullptr,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ parser(detail::input_adapter(first, last), cb, allow_exceptions).parse(true, result);
+ return result;
+ }
+
+ template<class IteratorType, typename std::enable_if<
+ std::is_base_of<
+ std::random_access_iterator_tag,
+ typename std::iterator_traits<IteratorType>::iterator_category>::value, int>::type = 0>
+ static bool accept(IteratorType first, IteratorType last)
+ {
+ return parser(detail::input_adapter(first, last)).accept(true);
+ }
+
+ template<class IteratorType, class SAX, typename std::enable_if<
+ std::is_base_of<
+ std::random_access_iterator_tag,
+ typename std::iterator_traits<IteratorType>::iterator_category>::value, int>::type = 0>
+ static bool sax_parse(IteratorType first, IteratorType last, SAX* sax)
+ {
+ return parser(detail::input_adapter(first, last)).sax_parse(sax);
+ }
+
+ /*!
+ @brief deserialize from stream
+ @deprecated This stream operator is deprecated and will be removed in
+ version 4.0.0 of the library. Please use
+ @ref operator>>(std::istream&, basic_json&)
+ instead; that is, replace calls like `j << i;` with `i >> j;`.
+ @since version 1.0.0; deprecated since version 3.0.0
+ */
+ JSON_DEPRECATED
+ friend std::istream& operator<<(basic_json& j, std::istream& i)
+ {
+ return operator>>(i, j);
+ }
+
+ /*!
+ @brief deserialize from stream
+
+ Deserializes an input stream to a JSON value.
+
+ @param[in,out] i input stream to read a serialized JSON value from
+ @param[in,out] j JSON value to write the deserialized input to
+
+ @throw parse_error.101 in case of an unexpected token
+ @throw parse_error.102 if to_unicode fails or surrogate error
+ @throw parse_error.103 if to_unicode fails
+
+ @complexity Linear in the length of the input. The parser is a predictive
+ LL(1) parser.
+
+ @note A UTF-8 byte order mark is silently ignored.
+
+ @liveexample{The example below shows how a JSON value is constructed by
+ reading a serialization from a stream.,operator_deserialize}
+
+ @sa parse(std::istream&, const parser_callback_t) for a variant with a
+ parser callback function to filter values while parsing
+
+ @since version 1.0.0
+ */
+ friend std::istream& operator>>(std::istream& i, basic_json& j)
+ {
+ parser(detail::input_adapter(i)).parse(false, j);
+ return i;
+ }
+
+ /// @}
+
+ ///////////////////////////
+ // convenience functions //
+ ///////////////////////////
+
+ /*!
+ @brief return the type as string
+
+ Returns the type name as string to be used in error messages - usually to
+ indicate that a function was called on a wrong JSON type.
+
+ @return a string representation of a the @a m_type member:
+ Value type | return value
+ ----------- | -------------
+ null | `"null"`
+ boolean | `"boolean"`
+ string | `"string"`
+ number | `"number"` (for all number types)
+ object | `"object"`
+ array | `"array"`
+ discarded | `"discarded"`
+
+ @exceptionsafety No-throw guarantee: this function never throws exceptions.
+
+ @complexity Constant.
+
+ @liveexample{The following code exemplifies `type_name()` for all JSON
+ types.,type_name}
+
+ @sa @ref type() -- return the type of the JSON value
+ @sa @ref operator value_t() -- return the type of the JSON value (implicit)
+
+ @since version 1.0.0, public since 2.1.0, `const char*` and `noexcept`
+ since 3.0.0
+ */
+ const char* type_name() const noexcept
+ {
+ {
+ switch (m_type)
+ {
+ case value_t::null:
+ return "null";
+ case value_t::object:
+ return "object";
+ case value_t::array:
+ return "array";
+ case value_t::string:
+ return "string";
+ case value_t::boolean:
+ return "boolean";
+ case value_t::discarded:
+ return "discarded";
+ default:
+ return "number";
+ }
+ }
+ }
+
+
+ private:
+ //////////////////////
+ // member variables //
+ //////////////////////
+
+ /// the type of the current element
+ value_t m_type = value_t::null;
+
+ /// the value of the current element
+ json_value m_value = {};
+
+ //////////////////////////////////////////
+ // binary serialization/deserialization //
+ //////////////////////////////////////////
+
+ /// @name binary serialization/deserialization support
+ /// @{
+
+ public:
+ /*!
+ @brief create a CBOR serialization of a given JSON value
+
+ Serializes a given JSON value @a j to a byte vector using the CBOR (Concise
+ Binary Object Representation) serialization format. CBOR is a binary
+ serialization format which aims to be more compact than JSON itself, yet
+ more efficient to parse.
+
+ The library uses the following mapping from JSON values types to
+ CBOR types according to the CBOR specification (RFC 7049):
+
+ JSON value type | value/range | CBOR type | first byte
+ --------------- | ------------------------------------------ | ---------------------------------- | ---------------
+ null | `null` | Null | 0xF6
+ boolean | `true` | True | 0xF5
+ boolean | `false` | False | 0xF4
+ number_integer | -9223372036854775808..-2147483649 | Negative integer (8 bytes follow) | 0x3B
+ number_integer | -2147483648..-32769 | Negative integer (4 bytes follow) | 0x3A
+ number_integer | -32768..-129 | Negative integer (2 bytes follow) | 0x39
+ number_integer | -128..-25 | Negative integer (1 byte follow) | 0x38
+ number_integer | -24..-1 | Negative integer | 0x20..0x37
+ number_integer | 0..23 | Integer | 0x00..0x17
+ number_integer | 24..255 | Unsigned integer (1 byte follow) | 0x18
+ number_integer | 256..65535 | Unsigned integer (2 bytes follow) | 0x19
+ number_integer | 65536..4294967295 | Unsigned integer (4 bytes follow) | 0x1A
+ number_integer | 4294967296..18446744073709551615 | Unsigned integer (8 bytes follow) | 0x1B
+ number_unsigned | 0..23 | Integer | 0x00..0x17
+ number_unsigned | 24..255 | Unsigned integer (1 byte follow) | 0x18
+ number_unsigned | 256..65535 | Unsigned integer (2 bytes follow) | 0x19
+ number_unsigned | 65536..4294967295 | Unsigned integer (4 bytes follow) | 0x1A
+ number_unsigned | 4294967296..18446744073709551615 | Unsigned integer (8 bytes follow) | 0x1B
+ number_float | *any value* | Double-Precision Float | 0xFB
+ string | *length*: 0..23 | UTF-8 string | 0x60..0x77
+ string | *length*: 23..255 | UTF-8 string (1 byte follow) | 0x78
+ string | *length*: 256..65535 | UTF-8 string (2 bytes follow) | 0x79
+ string | *length*: 65536..4294967295 | UTF-8 string (4 bytes follow) | 0x7A
+ string | *length*: 4294967296..18446744073709551615 | UTF-8 string (8 bytes follow) | 0x7B
+ array | *size*: 0..23 | array | 0x80..0x97
+ array | *size*: 23..255 | array (1 byte follow) | 0x98
+ array | *size*: 256..65535 | array (2 bytes follow) | 0x99
+ array | *size*: 65536..4294967295 | array (4 bytes follow) | 0x9A
+ array | *size*: 4294967296..18446744073709551615 | array (8 bytes follow) | 0x9B
+ object | *size*: 0..23 | map | 0xA0..0xB7
+ object | *size*: 23..255 | map (1 byte follow) | 0xB8
+ object | *size*: 256..65535 | map (2 bytes follow) | 0xB9
+ object | *size*: 65536..4294967295 | map (4 bytes follow) | 0xBA
+ object | *size*: 4294967296..18446744073709551615 | map (8 bytes follow) | 0xBB
+
+ @note The mapping is **complete** in the sense that any JSON value type
+ can be converted to a CBOR value.
+
+ @note If NaN or Infinity are stored inside a JSON number, they are
+ serialized properly. This behavior differs from the @ref dump()
+ function which serializes NaN or Infinity to `null`.
+
+ @note The following CBOR types are not used in the conversion:
+ - byte strings (0x40..0x5F)
+ - UTF-8 strings terminated by "break" (0x7F)
+ - arrays terminated by "break" (0x9F)
+ - maps terminated by "break" (0xBF)
+ - date/time (0xC0..0xC1)
+ - bignum (0xC2..0xC3)
+ - decimal fraction (0xC4)
+ - bigfloat (0xC5)
+ - tagged items (0xC6..0xD4, 0xD8..0xDB)
+ - expected conversions (0xD5..0xD7)
+ - simple values (0xE0..0xF3, 0xF8)
+ - undefined (0xF7)
+ - half and single-precision floats (0xF9-0xFA)
+ - break (0xFF)
+
+ @param[in] j JSON value to serialize
+ @return MessagePack serialization as byte vector
+
+ @complexity Linear in the size of the JSON value @a j.
+
+ @liveexample{The example shows the serialization of a JSON value to a byte
+ vector in CBOR format.,to_cbor}
+
+ @sa http://cbor.io
+ @sa @ref from_cbor(detail::input_adapter&&, const bool, const bool) for the
+ analogous deserialization
+ @sa @ref to_msgpack(const basic_json&) for the related MessagePack format
+ @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the
+ related UBJSON format
+
+ @since version 2.0.9
+ */
+ static std::vector<uint8_t> to_cbor(const basic_json& j)
+ {
+ std::vector<uint8_t> result;
+ to_cbor(j, result);
+ return result;
+ }
+
+ static void to_cbor(const basic_json& j, detail::output_adapter<uint8_t> o)
+ {
+ binary_writer<uint8_t>(o).write_cbor(j);
+ }
+
+ static void to_cbor(const basic_json& j, detail::output_adapter<char> o)
+ {
+ binary_writer<char>(o).write_cbor(j);
+ }
+
+ /*!
+ @brief create a MessagePack serialization of a given JSON value
+
+ Serializes a given JSON value @a j to a byte vector using the MessagePack
+ serialization format. MessagePack is a binary serialization format which
+ aims to be more compact than JSON itself, yet more efficient to parse.
+
+ The library uses the following mapping from JSON values types to
+ MessagePack types according to the MessagePack specification:
+
+ JSON value type | value/range | MessagePack type | first byte
+ --------------- | --------------------------------- | ---------------- | ----------
+ null | `null` | nil | 0xC0
+ boolean | `true` | true | 0xC3
+ boolean | `false` | false | 0xC2
+ number_integer | -9223372036854775808..-2147483649 | int64 | 0xD3
+ number_integer | -2147483648..-32769 | int32 | 0xD2
+ number_integer | -32768..-129 | int16 | 0xD1
+ number_integer | -128..-33 | int8 | 0xD0
+ number_integer | -32..-1 | negative fixint | 0xE0..0xFF
+ number_integer | 0..127 | positive fixint | 0x00..0x7F
+ number_integer | 128..255 | uint 8 | 0xCC
+ number_integer | 256..65535 | uint 16 | 0xCD
+ number_integer | 65536..4294967295 | uint 32 | 0xCE
+ number_integer | 4294967296..18446744073709551615 | uint 64 | 0xCF
+ number_unsigned | 0..127 | positive fixint | 0x00..0x7F
+ number_unsigned | 128..255 | uint 8 | 0xCC
+ number_unsigned | 256..65535 | uint 16 | 0xCD
+ number_unsigned | 65536..4294967295 | uint 32 | 0xCE
+ number_unsigned | 4294967296..18446744073709551615 | uint 64 | 0xCF
+ number_float | *any value* | float 64 | 0xCB
+ string | *length*: 0..31 | fixstr | 0xA0..0xBF
+ string | *length*: 32..255 | str 8 | 0xD9
+ string | *length*: 256..65535 | str 16 | 0xDA
+ string | *length*: 65536..4294967295 | str 32 | 0xDB
+ array | *size*: 0..15 | fixarray | 0x90..0x9F
+ array | *size*: 16..65535 | array 16 | 0xDC
+ array | *size*: 65536..4294967295 | array 32 | 0xDD
+ object | *size*: 0..15 | fix map | 0x80..0x8F
+ object | *size*: 16..65535 | map 16 | 0xDE
+ object | *size*: 65536..4294967295 | map 32 | 0xDF
+
+ @note The mapping is **complete** in the sense that any JSON value type
+ can be converted to a MessagePack value.
+
+ @note The following values can **not** be converted to a MessagePack value:
+ - strings with more than 4294967295 bytes
+ - arrays with more than 4294967295 elements
+ - objects with more than 4294967295 elements
+
+ @note The following MessagePack types are not used in the conversion:
+ - bin 8 - bin 32 (0xC4..0xC6)
+ - ext 8 - ext 32 (0xC7..0xC9)
+ - float 32 (0xCA)
+ - fixext 1 - fixext 16 (0xD4..0xD8)
+
+ @note Any MessagePack output created @ref to_msgpack can be successfully
+ parsed by @ref from_msgpack.
+
+ @note If NaN or Infinity are stored inside a JSON number, they are
+ serialized properly. This behavior differs from the @ref dump()
+ function which serializes NaN or Infinity to `null`.
+
+ @param[in] j JSON value to serialize
+ @return MessagePack serialization as byte vector
+
+ @complexity Linear in the size of the JSON value @a j.
+
+ @liveexample{The example shows the serialization of a JSON value to a byte
+ vector in MessagePack format.,to_msgpack}
+
+ @sa http://msgpack.org
+ @sa @ref from_msgpack for the analogous deserialization
+ @sa @ref to_cbor(const basic_json& for the related CBOR format
+ @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the
+ related UBJSON format
+
+ @since version 2.0.9
+ */
+ static std::vector<uint8_t> to_msgpack(const basic_json& j)
+ {
+ std::vector<uint8_t> result;
+ to_msgpack(j, result);
+ return result;
+ }
+
+ static void to_msgpack(const basic_json& j, detail::output_adapter<uint8_t> o)
+ {
+ binary_writer<uint8_t>(o).write_msgpack(j);
+ }
+
+ static void to_msgpack(const basic_json& j, detail::output_adapter<char> o)
+ {
+ binary_writer<char>(o).write_msgpack(j);
+ }
+
+ /*!
+ @brief create a UBJSON serialization of a given JSON value
+
+ Serializes a given JSON value @a j to a byte vector using the UBJSON
+ (Universal Binary JSON) serialization format. UBJSON aims to be more compact
+ than JSON itself, yet more efficient to parse.
+
+ The library uses the following mapping from JSON values types to
+ UBJSON types according to the UBJSON specification:
+
+ JSON value type | value/range | UBJSON type | marker
+ --------------- | --------------------------------- | ----------- | ------
+ null | `null` | null | `Z`
+ boolean | `true` | true | `T`
+ boolean | `false` | false | `F`
+ number_integer | -9223372036854775808..-2147483649 | int64 | `L`
+ number_integer | -2147483648..-32769 | int32 | `l`
+ number_integer | -32768..-129 | int16 | `I`
+ number_integer | -128..127 | int8 | `i`
+ number_integer | 128..255 | uint8 | `U`
+ number_integer | 256..32767 | int16 | `I`
+ number_integer | 32768..2147483647 | int32 | `l`
+ number_integer | 2147483648..9223372036854775807 | int64 | `L`
+ number_unsigned | 0..127 | int8 | `i`
+ number_unsigned | 128..255 | uint8 | `U`
+ number_unsigned | 256..32767 | int16 | `I`
+ number_unsigned | 32768..2147483647 | int32 | `l`
+ number_unsigned | 2147483648..9223372036854775807 | int64 | `L`
+ number_float | *any value* | float64 | `D`
+ string | *with shortest length indicator* | string | `S`
+ array | *see notes on optimized format* | array | `[`
+ object | *see notes on optimized format* | map | `{`
+
+ @note The mapping is **complete** in the sense that any JSON value type
+ can be converted to a UBJSON value.
+
+ @note The following values can **not** be converted to a UBJSON value:
+ - strings with more than 9223372036854775807 bytes (theoretical)
+ - unsigned integer numbers above 9223372036854775807
+
+ @note The following markers are not used in the conversion:
+ - `Z`: no-op values are not created.
+ - `C`: single-byte strings are serialized with `S` markers.
+
+ @note Any UBJSON output created @ref to_ubjson can be successfully parsed
+ by @ref from_ubjson.
+
+ @note If NaN or Infinity are stored inside a JSON number, they are
+ serialized properly. This behavior differs from the @ref dump()
+ function which serializes NaN or Infinity to `null`.
+
+ @note The optimized formats for containers are supported: Parameter
+ @a use_size adds size information to the beginning of a container and
+ removes the closing marker. Parameter @a use_type further checks
+ whether all elements of a container have the same type and adds the
+ type marker to the beginning of the container. The @a use_type
+ parameter must only be used together with @a use_size = true. Note
+ that @a use_size = true alone may result in larger representations -
+ the benefit of this parameter is that the receiving side is
+ immediately informed on the number of elements of the container.
+
+ @param[in] j JSON value to serialize
+ @param[in] use_size whether to add size annotations to container types
+ @param[in] use_type whether to add type annotations to container types
+ (must be combined with @a use_size = true)
+ @return UBJSON serialization as byte vector
+
+ @complexity Linear in the size of the JSON value @a j.
+
+ @liveexample{The example shows the serialization of a JSON value to a byte
+ vector in UBJSON format.,to_ubjson}
+
+ @sa http://ubjson.org
+ @sa @ref from_ubjson(detail::input_adapter&&, const bool, const bool) for the
+ analogous deserialization
+ @sa @ref to_cbor(const basic_json& for the related CBOR format
+ @sa @ref to_msgpack(const basic_json&) for the related MessagePack format
+
+ @since version 3.1.0
+ */
+ static std::vector<uint8_t> to_ubjson(const basic_json& j,
+ const bool use_size = false,
+ const bool use_type = false)
+ {
+ std::vector<uint8_t> result;
+ to_ubjson(j, result, use_size, use_type);
+ return result;
+ }
+
+ static void to_ubjson(const basic_json& j, detail::output_adapter<uint8_t> o,
+ const bool use_size = false, const bool use_type = false)
+ {
+ binary_writer<uint8_t>(o).write_ubjson(j, use_size, use_type);
+ }
+
+ static void to_ubjson(const basic_json& j, detail::output_adapter<char> o,
+ const bool use_size = false, const bool use_type = false)
+ {
+ binary_writer<char>(o).write_ubjson(j, use_size, use_type);
+ }
+
+
+ /*!
+ @brief Serializes the given JSON object `j` to BSON and returns a vector
+ containing the corresponding BSON-representation.
+
+ BSON (Binary JSON) is a binary format in which zero or more ordered key/value pairs are
+ stored as a single entity (a so-called document).
+
+ The library uses the following mapping from JSON values types to BSON types:
+
+ JSON value type | value/range | BSON type | marker
+ --------------- | --------------------------------- | ----------- | ------
+ null | `null` | null | 0x0A
+ boolean | `true`, `false` | boolean | 0x08
+ number_integer | -9223372036854775808..-2147483649 | int64 | 0x12
+ number_integer | -2147483648..2147483647 | int32 | 0x10
+ number_integer | 2147483648..9223372036854775807 | int64 | 0x12
+ number_unsigned | 0..2147483647 | int32 | 0x10
+ number_unsigned | 2147483648..9223372036854775807 | int64 | 0x12
+ number_unsigned | 9223372036854775808..18446744073709551615| -- | --
+ number_float | *any value* | double | 0x01
+ string | *any value* | string | 0x02
+ array | *any value* | document | 0x04
+ object | *any value* | document | 0x03
+
+ @warning The mapping is **incomplete**, since only JSON-objects (and things
+ contained therein) can be serialized to BSON.
+ Also, integers larger than 9223372036854775807 cannot be serialized to BSON,
+ and the keys may not contain U+0000, since they are serialized a
+ zero-terminated c-strings.
+
+ @throw out_of_range.407 if `j.is_number_unsigned() && j.get<std::uint64_t>() > 9223372036854775807`
+ @throw out_of_range.409 if a key in `j` contains a NULL (U+0000)
+ @throw type_error.317 if `!j.is_object()`
+
+ @pre The input `j` is required to be an object: `j.is_object() == true`.
+
+ @note Any BSON output created via @ref to_bson can be successfully parsed
+ by @ref from_bson.
+
+ @param[in] j JSON value to serialize
+ @return BSON serialization as byte vector
+
+ @complexity Linear in the size of the JSON value @a j.
+
+ @liveexample{The example shows the serialization of a JSON value to a byte
+ vector in BSON format.,to_bson}
+
+ @sa http://bsonspec.org/spec.html
+ @sa @ref from_bson(detail::input_adapter&&, const bool strict) for the
+ analogous deserialization
+ @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the
+ related UBJSON format
+ @sa @ref to_cbor(const basic_json&) for the related CBOR format
+ @sa @ref to_msgpack(const basic_json&) for the related MessagePack format
+ */
+ static std::vector<uint8_t> to_bson(const basic_json& j)
+ {
+ std::vector<uint8_t> result;
+ to_bson(j, result);
+ return result;
+ }
+
+ /*!
+ @brief Serializes the given JSON object `j` to BSON and forwards the
+ corresponding BSON-representation to the given output_adapter `o`.
+ @param j The JSON object to convert to BSON.
+ @param o The output adapter that receives the binary BSON representation.
+ @pre The input `j` shall be an object: `j.is_object() == true`
+ @sa @ref to_bson(const basic_json&)
+ */
+ static void to_bson(const basic_json& j, detail::output_adapter<uint8_t> o)
+ {
+ binary_writer<uint8_t>(o).write_bson(j);
+ }
+
+ /*!
+ @copydoc to_bson(const basic_json&, detail::output_adapter<uint8_t>)
+ */
+ static void to_bson(const basic_json& j, detail::output_adapter<char> o)
+ {
+ binary_writer<char>(o).write_bson(j);
+ }
+
+
+ /*!
+ @brief create a JSON value from an input in CBOR format
+
+ Deserializes a given input @a i to a JSON value using the CBOR (Concise
+ Binary Object Representation) serialization format.
+
+ The library maps CBOR types to JSON value types as follows:
+
+ CBOR type | JSON value type | first byte
+ ---------------------- | --------------- | ----------
+ Integer | number_unsigned | 0x00..0x17
+ Unsigned integer | number_unsigned | 0x18
+ Unsigned integer | number_unsigned | 0x19
+ Unsigned integer | number_unsigned | 0x1A
+ Unsigned integer | number_unsigned | 0x1B
+ Negative integer | number_integer | 0x20..0x37
+ Negative integer | number_integer | 0x38
+ Negative integer | number_integer | 0x39
+ Negative integer | number_integer | 0x3A
+ Negative integer | number_integer | 0x3B
+ Negative integer | number_integer | 0x40..0x57
+ UTF-8 string | string | 0x60..0x77
+ UTF-8 string | string | 0x78
+ UTF-8 string | string | 0x79
+ UTF-8 string | string | 0x7A
+ UTF-8 string | string | 0x7B
+ UTF-8 string | string | 0x7F
+ array | array | 0x80..0x97
+ array | array | 0x98
+ array | array | 0x99
+ array | array | 0x9A
+ array | array | 0x9B
+ array | array | 0x9F
+ map | object | 0xA0..0xB7
+ map | object | 0xB8
+ map | object | 0xB9
+ map | object | 0xBA
+ map | object | 0xBB
+ map | object | 0xBF
+ False | `false` | 0xF4
+ True | `true` | 0xF5
+ Null | `null` | 0xF6
+ Half-Precision Float | number_float | 0xF9
+ Single-Precision Float | number_float | 0xFA
+ Double-Precision Float | number_float | 0xFB
+
+ @warning The mapping is **incomplete** in the sense that not all CBOR
+ types can be converted to a JSON value. The following CBOR types
+ are not supported and will yield parse errors (parse_error.112):
+ - byte strings (0x40..0x5F)
+ - date/time (0xC0..0xC1)
+ - bignum (0xC2..0xC3)
+ - decimal fraction (0xC4)
+ - bigfloat (0xC5)
+ - tagged items (0xC6..0xD4, 0xD8..0xDB)
+ - expected conversions (0xD5..0xD7)
+ - simple values (0xE0..0xF3, 0xF8)
+ - undefined (0xF7)
+
+ @warning CBOR allows map keys of any type, whereas JSON only allows
+ strings as keys in object values. Therefore, CBOR maps with keys
+ other than UTF-8 strings are rejected (parse_error.113).
+
+ @note Any CBOR output created @ref to_cbor can be successfully parsed by
+ @ref from_cbor.
+
+ @param[in] i an input in CBOR format convertible to an input adapter
+ @param[in] strict whether to expect the input to be consumed until EOF
+ (true by default)
+ @param[in] allow_exceptions whether to throw exceptions in case of a
+ parse error (optional, true by default)
+
+ @return deserialized JSON value; in case of a parse error and
+ @a allow_exceptions set to `false`, the return value will be
+ value_t::discarded.
+
+ @throw parse_error.110 if the given input ends prematurely or the end of
+ file was not reached when @a strict was set to true
+ @throw parse_error.112 if unsupported features from CBOR were
+ used in the given input @a v or if the input is not valid CBOR
+ @throw parse_error.113 if a string was expected as map key, but not found
+
+ @complexity Linear in the size of the input @a i.
+
+ @liveexample{The example shows the deserialization of a byte vector in CBOR
+ format to a JSON value.,from_cbor}
+
+ @sa http://cbor.io
+ @sa @ref to_cbor(const basic_json&) for the analogous serialization
+ @sa @ref from_msgpack(detail::input_adapter&&, const bool, const bool) for the
+ related MessagePack format
+ @sa @ref from_ubjson(detail::input_adapter&&, const bool, const bool) for the
+ related UBJSON format
+
+ @since version 2.0.9; parameter @a start_index since 2.1.1; changed to
+ consume input adapters, removed start_index parameter, and added
+ @a strict parameter since 3.0.0; added @a allow_exceptions parameter
+ since 3.2.0
+ */
+ JSON_NODISCARD
+ static basic_json from_cbor(detail::input_adapter&& i,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::cbor, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+ /*!
+ @copydoc from_cbor(detail::input_adapter&&, const bool, const bool)
+ */
+ template<typename A1, typename A2,
+ detail::enable_if_t<std::is_constructible<detail::input_adapter, A1, A2>::value, int> = 0>
+ JSON_NODISCARD
+ static basic_json from_cbor(A1 && a1, A2 && a2,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::cbor, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+ /*!
+ @brief create a JSON value from an input in MessagePack format
+
+ Deserializes a given input @a i to a JSON value using the MessagePack
+ serialization format.
+
+ The library maps MessagePack types to JSON value types as follows:
+
+ MessagePack type | JSON value type | first byte
+ ---------------- | --------------- | ----------
+ positive fixint | number_unsigned | 0x00..0x7F
+ fixmap | object | 0x80..0x8F
+ fixarray | array | 0x90..0x9F
+ fixstr | string | 0xA0..0xBF
+ nil | `null` | 0xC0
+ false | `false` | 0xC2
+ true | `true` | 0xC3
+ float 32 | number_float | 0xCA
+ float 64 | number_float | 0xCB
+ uint 8 | number_unsigned | 0xCC
+ uint 16 | number_unsigned | 0xCD
+ uint 32 | number_unsigned | 0xCE
+ uint 64 | number_unsigned | 0xCF
+ int 8 | number_integer | 0xD0
+ int 16 | number_integer | 0xD1
+ int 32 | number_integer | 0xD2
+ int 64 | number_integer | 0xD3
+ str 8 | string | 0xD9
+ str 16 | string | 0xDA
+ str 32 | string | 0xDB
+ array 16 | array | 0xDC
+ array 32 | array | 0xDD
+ map 16 | object | 0xDE
+ map 32 | object | 0xDF
+ negative fixint | number_integer | 0xE0-0xFF
+
+ @warning The mapping is **incomplete** in the sense that not all
+ MessagePack types can be converted to a JSON value. The following
+ MessagePack types are not supported and will yield parse errors:
+ - bin 8 - bin 32 (0xC4..0xC6)
+ - ext 8 - ext 32 (0xC7..0xC9)
+ - fixext 1 - fixext 16 (0xD4..0xD8)
+
+ @note Any MessagePack output created @ref to_msgpack can be successfully
+ parsed by @ref from_msgpack.
+
+ @param[in] i an input in MessagePack format convertible to an input
+ adapter
+ @param[in] strict whether to expect the input to be consumed until EOF
+ (true by default)
+ @param[in] allow_exceptions whether to throw exceptions in case of a
+ parse error (optional, true by default)
+
+ @return deserialized JSON value; in case of a parse error and
+ @a allow_exceptions set to `false`, the return value will be
+ value_t::discarded.
+
+ @throw parse_error.110 if the given input ends prematurely or the end of
+ file was not reached when @a strict was set to true
+ @throw parse_error.112 if unsupported features from MessagePack were
+ used in the given input @a i or if the input is not valid MessagePack
+ @throw parse_error.113 if a string was expected as map key, but not found
+
+ @complexity Linear in the size of the input @a i.
+
+ @liveexample{The example shows the deserialization of a byte vector in
+ MessagePack format to a JSON value.,from_msgpack}
+
+ @sa http://msgpack.org
+ @sa @ref to_msgpack(const basic_json&) for the analogous serialization
+ @sa @ref from_cbor(detail::input_adapter&&, const bool, const bool) for the
+ related CBOR format
+ @sa @ref from_ubjson(detail::input_adapter&&, const bool, const bool) for
+ the related UBJSON format
+ @sa @ref from_bson(detail::input_adapter&&, const bool, const bool) for
+ the related BSON format
+
+ @since version 2.0.9; parameter @a start_index since 2.1.1; changed to
+ consume input adapters, removed start_index parameter, and added
+ @a strict parameter since 3.0.0; added @a allow_exceptions parameter
+ since 3.2.0
+ */
+ JSON_NODISCARD
+ static basic_json from_msgpack(detail::input_adapter&& i,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::msgpack, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+ /*!
+ @copydoc from_msgpack(detail::input_adapter&&, const bool, const bool)
+ */
+ template<typename A1, typename A2,
+ detail::enable_if_t<std::is_constructible<detail::input_adapter, A1, A2>::value, int> = 0>
+ JSON_NODISCARD
+ static basic_json from_msgpack(A1 && a1, A2 && a2,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::msgpack, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+ /*!
+ @brief create a JSON value from an input in UBJSON format
+
+ Deserializes a given input @a i to a JSON value using the UBJSON (Universal
+ Binary JSON) serialization format.
+
+ The library maps UBJSON types to JSON value types as follows:
+
+ UBJSON type | JSON value type | marker
+ ----------- | --------------------------------------- | ------
+ no-op | *no value, next value is read* | `N`
+ null | `null` | `Z`
+ false | `false` | `F`
+ true | `true` | `T`
+ float32 | number_float | `d`
+ float64 | number_float | `D`
+ uint8 | number_unsigned | `U`
+ int8 | number_integer | `i`
+ int16 | number_integer | `I`
+ int32 | number_integer | `l`
+ int64 | number_integer | `L`
+ string | string | `S`
+ char | string | `C`
+ array | array (optimized values are supported) | `[`
+ object | object (optimized values are supported) | `{`
+
+ @note The mapping is **complete** in the sense that any UBJSON value can
+ be converted to a JSON value.
+
+ @param[in] i an input in UBJSON format convertible to an input adapter
+ @param[in] strict whether to expect the input to be consumed until EOF
+ (true by default)
+ @param[in] allow_exceptions whether to throw exceptions in case of a
+ parse error (optional, true by default)
+
+ @return deserialized JSON value; in case of a parse error and
+ @a allow_exceptions set to `false`, the return value will be
+ value_t::discarded.
+
+ @throw parse_error.110 if the given input ends prematurely or the end of
+ file was not reached when @a strict was set to true
+ @throw parse_error.112 if a parse error occurs
+ @throw parse_error.113 if a string could not be parsed successfully
+
+ @complexity Linear in the size of the input @a i.
+
+ @liveexample{The example shows the deserialization of a byte vector in
+ UBJSON format to a JSON value.,from_ubjson}
+
+ @sa http://ubjson.org
+ @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the
+ analogous serialization
+ @sa @ref from_cbor(detail::input_adapter&&, const bool, const bool) for the
+ related CBOR format
+ @sa @ref from_msgpack(detail::input_adapter&&, const bool, const bool) for
+ the related MessagePack format
+ @sa @ref from_bson(detail::input_adapter&&, const bool, const bool) for
+ the related BSON format
+
+ @since version 3.1.0; added @a allow_exceptions parameter since 3.2.0
+ */
+ JSON_NODISCARD
+ static basic_json from_ubjson(detail::input_adapter&& i,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::ubjson, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+ /*!
+ @copydoc from_ubjson(detail::input_adapter&&, const bool, const bool)
+ */
+ template<typename A1, typename A2,
+ detail::enable_if_t<std::is_constructible<detail::input_adapter, A1, A2>::value, int> = 0>
+ JSON_NODISCARD
+ static basic_json from_ubjson(A1 && a1, A2 && a2,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::ubjson, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+ /*!
+ @brief Create a JSON value from an input in BSON format
+
+ Deserializes a given input @a i to a JSON value using the BSON (Binary JSON)
+ serialization format.
+
+ The library maps BSON record types to JSON value types as follows:
+
+ BSON type | BSON marker byte | JSON value type
+ --------------- | ---------------- | ---------------------------
+ double | 0x01 | number_float
+ string | 0x02 | string
+ document | 0x03 | object
+ array | 0x04 | array
+ binary | 0x05 | still unsupported
+ undefined | 0x06 | still unsupported
+ ObjectId | 0x07 | still unsupported
+ boolean | 0x08 | boolean
+ UTC Date-Time | 0x09 | still unsupported
+ null | 0x0A | null
+ Regular Expr. | 0x0B | still unsupported
+ DB Pointer | 0x0C | still unsupported
+ JavaScript Code | 0x0D | still unsupported
+ Symbol | 0x0E | still unsupported
+ JavaScript Code | 0x0F | still unsupported
+ int32 | 0x10 | number_integer
+ Timestamp | 0x11 | still unsupported
+ 128-bit decimal float | 0x13 | still unsupported
+ Max Key | 0x7F | still unsupported
+ Min Key | 0xFF | still unsupported
+
+ @warning The mapping is **incomplete**. The unsupported mappings
+ are indicated in the table above.
+
+ @param[in] i an input in BSON format convertible to an input adapter
+ @param[in] strict whether to expect the input to be consumed until EOF
+ (true by default)
+ @param[in] allow_exceptions whether to throw exceptions in case of a
+ parse error (optional, true by default)
+
+ @return deserialized JSON value; in case of a parse error and
+ @a allow_exceptions set to `false`, the return value will be
+ value_t::discarded.
+
+ @throw parse_error.114 if an unsupported BSON record type is encountered
+
+ @complexity Linear in the size of the input @a i.
+
+ @liveexample{The example shows the deserialization of a byte vector in
+ BSON format to a JSON value.,from_bson}
+
+ @sa http://bsonspec.org/spec.html
+ @sa @ref to_bson(const basic_json&) for the analogous serialization
+ @sa @ref from_cbor(detail::input_adapter&&, const bool, const bool) for the
+ related CBOR format
+ @sa @ref from_msgpack(detail::input_adapter&&, const bool, const bool) for
+ the related MessagePack format
+ @sa @ref from_ubjson(detail::input_adapter&&, const bool, const bool) for the
+ related UBJSON format
+ */
+ JSON_NODISCARD
+ static basic_json from_bson(detail::input_adapter&& i,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::bson, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+ /*!
+ @copydoc from_bson(detail::input_adapter&&, const bool, const bool)
+ */
+ template<typename A1, typename A2,
+ detail::enable_if_t<std::is_constructible<detail::input_adapter, A1, A2>::value, int> = 0>
+ JSON_NODISCARD
+ static basic_json from_bson(A1 && a1, A2 && a2,
+ const bool strict = true,
+ const bool allow_exceptions = true)
+ {
+ basic_json result;
+ detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
+ const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::bson, &sdp, strict);
+ return res ? result : basic_json(value_t::discarded);
+ }
+
+
+
+ /// @}
+
+ //////////////////////////
+ // JSON Pointer support //
+ //////////////////////////
+
+ /// @name JSON Pointer functions
+ /// @{
+
+ /*!
+ @brief access specified element via JSON Pointer
+
+ Uses a JSON pointer to retrieve a reference to the respective JSON value.
+ No bound checking is performed. Similar to @ref operator[](const typename
+ object_t::key_type&), `null` values are created in arrays and objects if
+ necessary.
+
+ In particular:
+ - If the JSON pointer points to an object key that does not exist, it
+ is created an filled with a `null` value before a reference to it
+ is returned.
+ - If the JSON pointer points to an array index that does not exist, it
+ is created an filled with a `null` value before a reference to it
+ is returned. All indices between the current maximum and the given
+ index are also filled with `null`.
+ - The special value `-` is treated as a synonym for the index past the
+ end.
+
+ @param[in] ptr a JSON pointer
+
+ @return reference to the element pointed to by @a ptr
+
+ @complexity Constant.
+
+ @throw parse_error.106 if an array index begins with '0'
+ @throw parse_error.109 if an array index was not a number
+ @throw out_of_range.404 if the JSON pointer can not be resolved
+
+ @liveexample{The behavior is shown in the example.,operatorjson_pointer}
+
+ @since version 2.0.0
+ */
+ reference operator[](const json_pointer& ptr)
+ {
+ return ptr.get_unchecked(this);
+ }
+
+ /*!
+ @brief access specified element via JSON Pointer
+
+ Uses a JSON pointer to retrieve a reference to the respective JSON value.
+ No bound checking is performed. The function does not change the JSON
+ value; no `null` values are created. In particular, the the special value
+ `-` yields an exception.
+
+ @param[in] ptr JSON pointer to the desired element
+
+ @return const reference to the element pointed to by @a ptr
+
+ @complexity Constant.
+
+ @throw parse_error.106 if an array index begins with '0'
+ @throw parse_error.109 if an array index was not a number
+ @throw out_of_range.402 if the array index '-' is used
+ @throw out_of_range.404 if the JSON pointer can not be resolved
+
+ @liveexample{The behavior is shown in the example.,operatorjson_pointer_const}
+
+ @since version 2.0.0
+ */
+ const_reference operator[](const json_pointer& ptr) const
+ {
+ return ptr.get_unchecked(this);
+ }
+
+ /*!
+ @brief access specified element via JSON Pointer
+
+ Returns a reference to the element at with specified JSON pointer @a ptr,
+ with bounds checking.
+
+ @param[in] ptr JSON pointer to the desired element
+
+ @return reference to the element pointed to by @a ptr
+
+ @throw parse_error.106 if an array index in the passed JSON pointer @a ptr
+ begins with '0'. See example below.
+
+ @throw parse_error.109 if an array index in the passed JSON pointer @a ptr
+ is not a number. See example below.
+
+ @throw out_of_range.401 if an array index in the passed JSON pointer @a ptr
+ is out of range. See example below.
+
+ @throw out_of_range.402 if the array index '-' is used in the passed JSON
+ pointer @a ptr. As `at` provides checked access (and no elements are
+ implicitly inserted), the index '-' is always invalid. See example below.
+
+ @throw out_of_range.403 if the JSON pointer describes a key of an object
+ which cannot be found. See example below.
+
+ @throw out_of_range.404 if the JSON pointer @a ptr can not be resolved.
+ See example below.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Constant.
+
+ @since version 2.0.0
+
+ @liveexample{The behavior is shown in the example.,at_json_pointer}
+ */
+ reference at(const json_pointer& ptr)
+ {
+ return ptr.get_checked(this);
+ }
+
+ /*!
+ @brief access specified element via JSON Pointer
+
+ Returns a const reference to the element at with specified JSON pointer @a
+ ptr, with bounds checking.
+
+ @param[in] ptr JSON pointer to the desired element
+
+ @return reference to the element pointed to by @a ptr
+
+ @throw parse_error.106 if an array index in the passed JSON pointer @a ptr
+ begins with '0'. See example below.
+
+ @throw parse_error.109 if an array index in the passed JSON pointer @a ptr
+ is not a number. See example below.
+
+ @throw out_of_range.401 if an array index in the passed JSON pointer @a ptr
+ is out of range. See example below.
+
+ @throw out_of_range.402 if the array index '-' is used in the passed JSON
+ pointer @a ptr. As `at` provides checked access (and no elements are
+ implicitly inserted), the index '-' is always invalid. See example below.
+
+ @throw out_of_range.403 if the JSON pointer describes a key of an object
+ which cannot be found. See example below.
+
+ @throw out_of_range.404 if the JSON pointer @a ptr can not be resolved.
+ See example below.
+
+ @exceptionsafety Strong guarantee: if an exception is thrown, there are no
+ changes in the JSON value.
+
+ @complexity Constant.
+
+ @since version 2.0.0
+
+ @liveexample{The behavior is shown in the example.,at_json_pointer_const}
+ */
+ const_reference at(const json_pointer& ptr) const
+ {
+ return ptr.get_checked(this);
+ }
+
+ /*!
+ @brief return flattened JSON value
+
+ The function creates a JSON object whose keys are JSON pointers (see [RFC
+ 6901](https://tools.ietf.org/html/rfc6901)) and whose values are all
+ primitive. The original JSON value can be restored using the @ref
+ unflatten() function.
+
+ @return an object that maps JSON pointers to primitive values
+
+ @note Empty objects and arrays are flattened to `null` and will not be
+ reconstructed correctly by the @ref unflatten() function.
+
+ @complexity Linear in the size the JSON value.
+
+ @liveexample{The following code shows how a JSON object is flattened to an
+ object whose keys consist of JSON pointers.,flatten}
+
+ @sa @ref unflatten() for the reverse function
+
+ @since version 2.0.0
+ */
+ basic_json flatten() const
+ {
+ basic_json result(value_t::object);
+ json_pointer::flatten("", *this, result);
+ return result;
+ }
+
+ /*!
+ @brief unflatten a previously flattened JSON value
+
+ The function restores the arbitrary nesting of a JSON value that has been
+ flattened before using the @ref flatten() function. The JSON value must
+ meet certain constraints:
+ 1. The value must be an object.
+ 2. The keys must be JSON pointers (see
+ [RFC 6901](https://tools.ietf.org/html/rfc6901))
+ 3. The mapped values must be primitive JSON types.
+
+ @return the original JSON from a flattened version
+
+ @note Empty objects and arrays are flattened by @ref flatten() to `null`
+ values and can not unflattened to their original type. Apart from
+ this example, for a JSON value `j`, the following is always true:
+ `j == j.flatten().unflatten()`.
+
+ @complexity Linear in the size the JSON value.
+
+ @throw type_error.314 if value is not an object
+ @throw type_error.315 if object values are not primitive
+
+ @liveexample{The following code shows how a flattened JSON object is
+ unflattened into the original nested JSON object.,unflatten}
+
+ @sa @ref flatten() for the reverse function
+
+ @since version 2.0.0
+ */
+ basic_json unflatten() const
+ {
+ return json_pointer::unflatten(*this);
+ }
+
+ /// @}
+
+ //////////////////////////
+ // JSON Patch functions //
+ //////////////////////////
+
+ /// @name JSON Patch functions
+ /// @{
+
+ /*!
+ @brief applies a JSON patch
+
+ [JSON Patch](http://jsonpatch.com) defines a JSON document structure for
+ expressing a sequence of operations to apply to a JSON) document. With
+ this function, a JSON Patch is applied to the current JSON value by
+ executing all operations from the patch.
+
+ @param[in] json_patch JSON patch document
+ @return patched document
+
+ @note The application of a patch is atomic: Either all operations succeed
+ and the patched document is returned or an exception is thrown. In
+ any case, the original value is not changed: the patch is applied
+ to a copy of the value.
+
+ @throw parse_error.104 if the JSON patch does not consist of an array of
+ objects
+
+ @throw parse_error.105 if the JSON patch is malformed (e.g., mandatory
+ attributes are missing); example: `"operation add must have member path"`
+
+ @throw out_of_range.401 if an array index is out of range.
+
+ @throw out_of_range.403 if a JSON pointer inside the patch could not be
+ resolved successfully in the current JSON value; example: `"key baz not
+ found"`
+
+ @throw out_of_range.405 if JSON pointer has no parent ("add", "remove",
+ "move")
+
+ @throw other_error.501 if "test" operation was unsuccessful
+
+ @complexity Linear in the size of the JSON value and the length of the
+ JSON patch. As usually only a fraction of the JSON value is affected by
+ the patch, the complexity can usually be neglected.
+
+ @liveexample{The following code shows how a JSON patch is applied to a
+ value.,patch}
+
+ @sa @ref diff -- create a JSON patch by comparing two JSON values
+
+ @sa [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902)
+ @sa [RFC 6901 (JSON Pointer)](https://tools.ietf.org/html/rfc6901)
+
+ @since version 2.0.0
+ */
+ basic_json patch(const basic_json& json_patch) const
+ {
+ // make a working copy to apply the patch to
+ basic_json result = *this;
+
+ // the valid JSON Patch operations
+ enum class patch_operations {add, remove, replace, move, copy, test, invalid};
+
+ const auto get_op = [](const std::string & op)
+ {
+ if (op == "add")
+ {
+ return patch_operations::add;
+ }
+ if (op == "remove")
+ {
+ return patch_operations::remove;
+ }
+ if (op == "replace")
+ {
+ return patch_operations::replace;
+ }
+ if (op == "move")
+ {
+ return patch_operations::move;
+ }
+ if (op == "copy")
+ {
+ return patch_operations::copy;
+ }
+ if (op == "test")
+ {
+ return patch_operations::test;
+ }
+
+ return patch_operations::invalid;
+ };
+
+ // wrapper for "add" operation; add value at ptr
+ const auto operation_add = [&result](json_pointer & ptr, basic_json val)
+ {
+ // adding to the root of the target document means replacing it
+ if (ptr.empty())
+ {
+ result = val;
+ return;
+ }
+
+ // make sure the top element of the pointer exists
+ json_pointer top_pointer = ptr.top();
+ if (top_pointer != ptr)
+ {
+ result.at(top_pointer);
+ }
+
+ // get reference to parent of JSON pointer ptr
+ const auto last_path = ptr.back();
+ ptr.pop_back();
+ basic_json& parent = result[ptr];
+
+ switch (parent.m_type)
+ {
+ case value_t::null:
+ case value_t::object:
+ {
+ // use operator[] to add value
+ parent[last_path] = val;
+ break;
+ }
+
+ case value_t::array:
+ {
+ if (last_path == "-")
+ {
+ // special case: append to back
+ parent.push_back(val);
+ }
+ else
+ {
+ const auto idx = json_pointer::array_index(last_path);
+ if (JSON_UNLIKELY(static_cast<size_type>(idx) > parent.size()))
+ {
+ // avoid undefined behavior
+ JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
+ }
+
+ // default case: insert add offset
+ parent.insert(parent.begin() + static_cast<difference_type>(idx), val);
+ }
+ break;
+ }
+
+ // if there exists a parent it cannot be primitive
+ default: // LCOV_EXCL_LINE
+ assert(false); // LCOV_EXCL_LINE
+ }
+ };
+
+ // wrapper for "remove" operation; remove value at ptr
+ const auto operation_remove = [&result](json_pointer & ptr)
+ {
+ // get reference to parent of JSON pointer ptr
+ const auto last_path = ptr.back();
+ ptr.pop_back();
+ basic_json& parent = result.at(ptr);
+
+ // remove child
+ if (parent.is_object())
+ {
+ // perform range check
+ auto it = parent.find(last_path);
+ if (JSON_LIKELY(it != parent.end()))
+ {
+ parent.erase(it);
+ }
+ else
+ {
+ JSON_THROW(out_of_range::create(403, "key '" + last_path + "' not found"));
+ }
+ }
+ else if (parent.is_array())
+ {
+ // note erase performs range check
+ parent.erase(static_cast<size_type>(json_pointer::array_index(last_path)));
+ }
+ };
+
+ // type check: top level value must be an array
+ if (JSON_UNLIKELY(not json_patch.is_array()))
+ {
+ JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects"));
+ }
+
+ // iterate and apply the operations
+ for (const auto& val : json_patch)
+ {
+ // wrapper to get a value for an operation
+ const auto get_value = [&val](const std::string & op,
+ const std::string & member,
+ bool string_type) -> basic_json &
+ {
+ // find value
+ auto it = val.m_value.object->find(member);
+
+ // context-sensitive error message
+ const auto error_msg = (op == "op") ? "operation" : "operation '" + op + "'";
+
+ // check if desired value is present
+ if (JSON_UNLIKELY(it == val.m_value.object->end()))
+ {
+ JSON_THROW(parse_error::create(105, 0, error_msg + " must have member '" + member + "'"));
+ }
+
+ // check if result is of type string
+ if (JSON_UNLIKELY(string_type and not it->second.is_string()))
+ {
+ JSON_THROW(parse_error::create(105, 0, error_msg + " must have string member '" + member + "'"));
+ }
+
+ // no error: return value
+ return it->second;
+ };
+
+ // type check: every element of the array must be an object
+ if (JSON_UNLIKELY(not val.is_object()))
+ {
+ JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects"));
+ }
+
+ // collect mandatory members
+ const std::string op = get_value("op", "op", true);
+ const std::string path = get_value(op, "path", true);
+ json_pointer ptr(path);
+
+ switch (get_op(op))
+ {
+ case patch_operations::add:
+ {
+ operation_add(ptr, get_value("add", "value", false));
+ break;
+ }
+
+ case patch_operations::remove:
+ {
+ operation_remove(ptr);
+ break;
+ }
+
+ case patch_operations::replace:
+ {
+ // the "path" location must exist - use at()
+ result.at(ptr) = get_value("replace", "value", false);
+ break;
+ }
+
+ case patch_operations::move:
+ {
+ const std::string from_path = get_value("move", "from", true);
+ json_pointer from_ptr(from_path);
+
+ // the "from" location must exist - use at()
+ basic_json v = result.at(from_ptr);
+
+ // The move operation is functionally identical to a
+ // "remove" operation on the "from" location, followed
+ // immediately by an "add" operation at the target
+ // location with the value that was just removed.
+ operation_remove(from_ptr);
+ operation_add(ptr, v);
+ break;
+ }
+
+ case patch_operations::copy:
+ {
+ const std::string from_path = get_value("copy", "from", true);
+ const json_pointer from_ptr(from_path);
+
+ // the "from" location must exist - use at()
+ basic_json v = result.at(from_ptr);
+
+ // The copy is functionally identical to an "add"
+ // operation at the target location using the value
+ // specified in the "from" member.
+ operation_add(ptr, v);
+ break;
+ }
+
+ case patch_operations::test:
+ {
+ bool success = false;
+ JSON_TRY
+ {
+ // check if "value" matches the one at "path"
+ // the "path" location must exist - use at()
+ success = (result.at(ptr) == get_value("test", "value", false));
+ }
+ JSON_INTERNAL_CATCH (out_of_range&)
+ {
+ // ignore out of range errors: success remains false
+ }
+
+ // throw an exception if test fails
+ if (JSON_UNLIKELY(not success))
+ {
+ JSON_THROW(other_error::create(501, "unsuccessful: " + val.dump()));
+ }
+
+ break;
+ }
+
+ default:
+ {
+ // op must be "add", "remove", "replace", "move", "copy", or
+ // "test"
+ JSON_THROW(parse_error::create(105, 0, "operation value '" + op + "' is invalid"));
+ }
+ }
+ }
+
+ return result;
+ }
+
+ /*!
+ @brief creates a diff as a JSON patch
+
+ Creates a [JSON Patch](http://jsonpatch.com) so that value @a source can
+ be changed into the value @a target by calling @ref patch function.
+
+ @invariant For two JSON values @a source and @a target, the following code
+ yields always `true`:
+ @code {.cpp}
+ source.patch(diff(source, target)) == target;
+ @endcode
+
+ @note Currently, only `remove`, `add`, and `replace` operations are
+ generated.
+
+ @param[in] source JSON value to compare from
+ @param[in] target JSON value to compare against
+ @param[in] path helper value to create JSON pointers
+
+ @return a JSON patch to convert the @a source to @a target
+
+ @complexity Linear in the lengths of @a source and @a target.
+
+ @liveexample{The following code shows how a JSON patch is created as a
+ diff for two JSON values.,diff}
+
+ @sa @ref patch -- apply a JSON patch
+ @sa @ref merge_patch -- apply a JSON Merge Patch
+
+ @sa [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902)
+
+ @since version 2.0.0
+ */
+ JSON_NODISCARD
+ static basic_json diff(const basic_json& source, const basic_json& target,
+ const std::string& path = "")
+ {
+ // the patch
+ basic_json result(value_t::array);
+
+ // if the values are the same, return empty patch
+ if (source == target)
+ {
+ return result;
+ }
+
+ if (source.type() != target.type())
+ {
+ // different types: replace value
+ result.push_back(
+ {
+ {"op", "replace"}, {"path", path}, {"value", target}
+ });
+ return result;
+ }
+
+ switch (source.type())
+ {
+ case value_t::array:
+ {
+ // first pass: traverse common elements
+ std::size_t i = 0;
+ while (i < source.size() and i < target.size())
+ {
+ // recursive call to compare array values at index i
+ auto temp_diff = diff(source[i], target[i], path + "/" + std::to_string(i));
+ result.insert(result.end(), temp_diff.begin(), temp_diff.end());
+ ++i;
+ }
+
+ // i now reached the end of at least one array
+ // in a second pass, traverse the remaining elements
+
+ // remove my remaining elements
+ const auto end_index = static_cast<difference_type>(result.size());
+ while (i < source.size())
+ {
+ // add operations in reverse order to avoid invalid
+ // indices
+ result.insert(result.begin() + end_index, object(
+ {
+ {"op", "remove"},
+ {"path", path + "/" + std::to_string(i)}
+ }));
+ ++i;
+ }
+
+ // add other remaining elements
+ while (i < target.size())
+ {
+ result.push_back(
+ {
+ {"op", "add"},
+ {"path", path + "/" + std::to_string(i)},
+ {"value", target[i]}
+ });
+ ++i;
+ }
+
+ break;
+ }
+
+ case value_t::object:
+ {
+ // first pass: traverse this object's elements
+ for (auto it = source.cbegin(); it != source.cend(); ++it)
+ {
+ // escape the key name to be used in a JSON patch
+ const auto key = json_pointer::escape(it.key());
+
+ if (target.find(it.key()) != target.end())
+ {
+ // recursive call to compare object values at key it
+ auto temp_diff = diff(it.value(), target[it.key()], path + "/" + key);
+ result.insert(result.end(), temp_diff.begin(), temp_diff.end());
+ }
+ else
+ {
+ // found a key that is not in o -> remove it
+ result.push_back(object(
+ {
+ {"op", "remove"}, {"path", path + "/" + key}
+ }));
+ }
+ }
+
+ // second pass: traverse other object's elements
+ for (auto it = target.cbegin(); it != target.cend(); ++it)
+ {
+ if (source.find(it.key()) == source.end())
+ {
+ // found a key that is not in this -> add it
+ const auto key = json_pointer::escape(it.key());
+ result.push_back(
+ {
+ {"op", "add"}, {"path", path + "/" + key},
+ {"value", it.value()}
+ });
+ }
+ }
+
+ break;
+ }
+
+ default:
+ {
+ // both primitive type: replace value
+ result.push_back(
+ {
+ {"op", "replace"}, {"path", path}, {"value", target}
+ });
+ break;
+ }
+ }
+
+ return result;
+ }
+
+ /// @}
+
+ ////////////////////////////////
+ // JSON Merge Patch functions //
+ ////////////////////////////////
+
+ /// @name JSON Merge Patch functions
+ /// @{
+
+ /*!
+ @brief applies a JSON Merge Patch
+
+ The merge patch format is primarily intended for use with the HTTP PATCH
+ method as a means of describing a set of modifications to a target
+ resource's content. This function applies a merge patch to the current
+ JSON value.
+
+ The function implements the following algorithm from Section 2 of
+ [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396):
+
+ ```
+ define MergePatch(Target, Patch):
+ if Patch is an Object:
+ if Target is not an Object:
+ Target = {} // Ignore the contents and set it to an empty Object
+ for each Name/Value pair in Patch:
+ if Value is null:
+ if Name exists in Target:
+ remove the Name/Value pair from Target
+ else:
+ Target[Name] = MergePatch(Target[Name], Value)
+ return Target
+ else:
+ return Patch
+ ```
+
+ Thereby, `Target` is the current object; that is, the patch is applied to
+ the current value.
+
+ @param[in] apply_patch the patch to apply
+
+ @complexity Linear in the lengths of @a patch.
+
+ @liveexample{The following code shows how a JSON Merge Patch is applied to
+ a JSON document.,merge_patch}
+
+ @sa @ref patch -- apply a JSON patch
+ @sa [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396)
+
+ @since version 3.0.0
+ */
+ void merge_patch(const basic_json& apply_patch)
+ {
+ if (apply_patch.is_object())
+ {
+ if (not is_object())
+ {
+ *this = object();
+ }
+ for (auto it = apply_patch.begin(); it != apply_patch.end(); ++it)
+ {
+ if (it.value().is_null())
+ {
+ erase(it.key());
+ }
+ else
+ {
+ operator[](it.key()).merge_patch(it.value());
+ }
+ }
+ }
+ else
+ {
+ *this = apply_patch;
+ }
+ }
+
+ /// @}
+};
+} // namespace nlohmann
+
+///////////////////////
+// nonmember support //
+///////////////////////
+
+// specialization of std::swap, and std::hash
+namespace std
+{
+
+/// hash value for JSON objects
+template<>
+struct hash<nlohmann::json>
+{
+ /*!
+ @brief return a hash value for a JSON object
+
+ @since version 1.0.0
+ */
+ std::size_t operator()(const nlohmann::json& j) const
+ {
+ // a naive hashing via the string representation
+ const auto& h = hash<nlohmann::json::string_t>();
+ return h(j.dump());
+ }
+};
+
+/// specialization for std::less<value_t>
+/// @note: do not remove the space after '<',
+/// see https://github.com/nlohmann/json/pull/679
+template<>
+struct less< ::nlohmann::detail::value_t>
+{
+ /*!
+ @brief compare two value_t enum values
+ @since version 3.0.0
+ */
+ bool operator()(nlohmann::detail::value_t lhs,
+ nlohmann::detail::value_t rhs) const noexcept
+ {
+ return nlohmann::detail::operator<(lhs, rhs);
+ }
+};
+
+/*!
+@brief exchanges the values of two JSON objects
+
+@since version 1.0.0
+*/
+template<>
+inline void swap<nlohmann::json>(nlohmann::json& j1, nlohmann::json& j2) noexcept(
+ is_nothrow_move_constructible<nlohmann::json>::value and
+ is_nothrow_move_assignable<nlohmann::json>::value
+)
+{
+ j1.swap(j2);
+}
+
+} // namespace std
+
+/*!
+@brief user-defined string literal for JSON values
+
+This operator implements a user-defined string literal for JSON objects. It
+can be used by adding `"_json"` to a string literal and returns a JSON object
+if no parse error occurred.
+
+@param[in] s a string representation of a JSON object
+@param[in] n the length of string @a s
+@return a JSON object
+
+@since version 1.0.0
+*/
+inline nlohmann::json operator "" _json(const char* s, std::size_t n)
+{
+ return nlohmann::json::parse(s, s + n);
+}
+
+/*!
+@brief user-defined string literal for JSON pointer
+
+This operator implements a user-defined string literal for JSON Pointers. It
+can be used by adding `"_json_pointer"` to a string literal and returns a JSON pointer
+object if no parse error occurred.
+
+@param[in] s a string representation of a JSON Pointer
+@param[in] n the length of string @a s
+@return a JSON pointer object
+
+@since version 2.0.0
+*/
+inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std::size_t n)
+{
+ return nlohmann::json::json_pointer(std::string(s, n));
+}
+
+// #include <nlohmann/detail/macro_unscope.hpp>
+
+
+// restore GCC/clang diagnostic settings
+#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
+ #pragma GCC diagnostic pop
+#endif
+#if defined(__clang__)
+ #pragma GCC diagnostic pop
+#endif
+
+// clean up
+#undef JSON_INTERNAL_CATCH
+#undef JSON_CATCH
+#undef JSON_THROW
+#undef JSON_TRY
+#undef JSON_LIKELY
+#undef JSON_UNLIKELY
+#undef JSON_DEPRECATED
+#undef JSON_NODISCARD
+#undef JSON_HAS_CPP_14
+#undef JSON_HAS_CPP_17
+#undef NLOHMANN_BASIC_JSON_TPL_DECLARATION
+#undef NLOHMANN_BASIC_JSON_TPL
+
+
+#endif // INCLUDE_NLOHMANN_JSON_HPP_