diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-22 14:26:44 -0400 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-22 14:26:44 -0400 |
commit | 77a6b8a820fe89af57585255e1c80ed9a3913be8 (patch) | |
tree | aec29cfa9c837e12d8c5e91354394cec82456461 /src | |
parent | faab53204c9d583f5180fb48a0594f66cf85f30e (diff) |
Address review comments; doc round 2
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_controller_player.c | 4 | ||||
-rw-r--r-- | src/menu2.c | 836 | ||||
-rw-r--r-- | src/party_menu.c | 4 | ||||
-rw-r--r-- | src/pokemon_special_anim.c | 114 | ||||
-rw-r--r-- | src/pokemon_special_anim_scene.c | 796 |
5 files changed, 945 insertions, 809 deletions
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index a751c0eea..b28249a97 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -1226,7 +1226,7 @@ static void sub_80303A8(u8 taskId) case 2: PlaySE(SE_REGI); if (IsMonGettingExpSentOut()) - sub_811E5B8(sprite->pos1.x + sprite->pos2.x, + CreateLevelUpVerticalSpritesTask(sprite->pos1.x + sprite->pos2.x, sprite->pos1.y + sprite->pos2.y, 10000, 10000, @@ -1235,7 +1235,7 @@ static void sub_80303A8(u8 taskId) ++data[15]; break; case 3: - if (!sub_811E680()) + if (!LevelUpVerticalSpritesTaskIsRunning()) { sprite->invisible = FALSE; ++data[15]; diff --git a/src/menu2.c b/src/menu2.c index 1957715b2..116bf7b52 100644 --- a/src/menu2.c +++ b/src/menu2.c @@ -9,422 +9,422 @@ static void Task_SmoothBlendLayers(u8 taskId); -static const u8 gUnknown_845FD54[][5] = { - [SPECIES_BULBASAUR - 1] = {0x16, 0x1b, 0x30, 0x16, 0x29}, - [SPECIES_IVYSAUR - 1] = {0x14, 0x1b, 0x30, 0x15, 0x2a}, - [SPECIES_VENUSAUR - 1] = {0x1b, 0x20, 0x20, 0x1b, 0x33}, - [SPECIES_CHARMANDER - 1] = {0x14, 0x0f, 0x38, 0x13, 0x1e}, - [SPECIES_CHARMELEON - 1] = {0x0d, 0x11, 0x30, 0x0f, 0x22}, - [SPECIES_CHARIZARD - 1] = {0x1b, 0x07, 0x28, 0x1a, 0x19}, - [SPECIES_SQUIRTLE - 1] = {0x19, 0x13, 0x30, 0x1a, 0x22}, - [SPECIES_WARTORTLE - 1] = {0x16, 0x13, 0x30, 0x17, 0x21}, - [SPECIES_BLASTOISE - 1] = {0x12, 0x08, 0x28, 0x15, 0x19}, - [SPECIES_CATERPIE - 1] = {0x15, 0x14, 0x30, 0x13, 0x24}, - [SPECIES_METAPOD - 1] = {0x13, 0x1d, 0x30, 0x18, 0x2a}, - [SPECIES_BUTTERFREE - 1] = {0x12, 0x1b, 0x08, 0x12, 0x2a}, - [SPECIES_WEEDLE - 1] = {0x16, 0x1c, 0x30, 0x15, 0x2b}, - [SPECIES_KAKUNA - 1] = {0x19, 0x13, 0x30, 0x1a, 0x24}, - [SPECIES_BEEDRILL - 1] = {0x19, 0x16, 0x08, 0x19, 0x25}, - [SPECIES_PIDGEY - 1] = {0x15, 0x12, 0x30, 0x12, 0x1e}, - [SPECIES_PIDGEOTTO - 1] = {0x24, 0x0e, 0x30, 0x1f, 0x1e}, - [SPECIES_PIDGEOT - 1] = {0x0c, 0x13, 0x08, 0x0a, 0x23}, - [SPECIES_RATTATA - 1] = {0x17, 0x1e, 0x30, 0x18, 0x2d}, - [SPECIES_RATICATE - 1] = {0x12, 0x14, 0x30, 0x10, 0x26}, - [SPECIES_SPEAROW - 1] = {0x15, 0x14, 0x30, 0x15, 0x1f}, - [SPECIES_FEAROW - 1] = {0x0c, 0x27, 0x00, 0x0b, 0x3f}, - [SPECIES_EKANS - 1] = {0x11, 0x0f, 0x30, 0x14, 0x1d}, - [SPECIES_ARBOK - 1] = {0x1b, 0x01, 0x28, 0x1d, 0x10}, - [SPECIES_PIKACHU - 1] = {0x19, 0x13, 0x30, 0x1a, 0x1f}, - [SPECIES_RAICHU - 1] = {0x19, 0x14, 0x28, 0x1c, 0x22}, - [SPECIES_SANDSHREW - 1] = {0x17, 0x16, 0x30, 0x18, 0x25}, - [SPECIES_SANDSLASH - 1] = {0x11, 0x13, 0x28, 0x13, 0x22}, - [SPECIES_NIDORAN_F - 1] = {0x16, 0x15, 0x30, 0x18, 0x21}, - [SPECIES_NIDORINA - 1] = {0x1f, 0x17, 0x30, 0x1e, 0x28}, - [SPECIES_NIDOQUEEN - 1] = {0x10, 0x0b, 0x28, 0x13, 0x1c}, - [SPECIES_NIDORAN_M - 1] = {0x15, 0x22, 0x28, 0x15, 0x31}, - [SPECIES_NIDORINO - 1] = {0x13, 0x1e, 0x28, 0x1b, 0x2d}, - [SPECIES_NIDOKING - 1] = {0x12, 0x15, 0x28, 0x13, 0x27}, - [SPECIES_CLEFAIRY - 1] = {0x19, 0x14, 0x30, 0x1b, 0x24}, - [SPECIES_CLEFABLE - 1] = {0x1c, 0x12, 0x30, 0x1d, 0x21}, - [SPECIES_VULPIX - 1] = {0x10, 0x16, 0x30, 0x0e, 0x25}, - [SPECIES_NINETALES - 1] = {0x28, 0x10, 0x28, 0x27, 0x1e}, - [SPECIES_JIGGLYPUFF - 1] = {0x1d, 0x15, 0x30, 0x1e, 0x25}, - [SPECIES_WIGGLYTUFF - 1] = {0x1a, 0x12, 0x30, 0x1c, 0x22}, - [SPECIES_ZUBAT - 1] = {0x14, 0x1d, 0x08, 0x14, 0x29}, - [SPECIES_GOLBAT - 1] = {0x23, 0x1a, 0x00, 0x21, 0x2e}, - [SPECIES_ODDISH - 1] = {0x1d, 0x20, 0x28, 0x1d, 0x2b}, - [SPECIES_GLOOM - 1] = {0x1c, 0x18, 0x28, 0x1c, 0x27}, - [SPECIES_VILEPLUME - 1] = {0x1c, 0x1e, 0x28, 0x1d, 0x2a}, - [SPECIES_PARAS - 1] = {0x1d, 0x1a, 0x30, 0x1c, 0x27}, - [SPECIES_PARASECT - 1] = {0x1e, 0x1c, 0x28, 0x20, 0x2e}, - [SPECIES_VENONAT - 1] = {0x1b, 0x16, 0x10, 0x1a, 0x29}, - [SPECIES_VENOMOTH - 1] = {0x12, 0x19, 0x08, 0x16, 0x27}, - [SPECIES_DIGLETT - 1] = {0x1e, 0x16, 0x30, 0x1c, 0x23}, - [SPECIES_DUGTRIO - 1] = {0x1a, 0x11, 0x30, 0x1a, 0x1f}, - [SPECIES_MEOWTH - 1] = {0x1c, 0x16, 0x30, 0x1c, 0x23}, - [SPECIES_PERSIAN - 1] = {0x13, 0x13, 0x30, 0x13, 0x21}, - [SPECIES_PSYDUCK - 1] = {0x1c, 0x13, 0x30, 0x17, 0x29}, - [SPECIES_GOLDUCK - 1] = {0x17, 0x12, 0x28, 0x17, 0x22}, - [SPECIES_MANKEY - 1] = {0x1c, 0x15, 0x30, 0x1b, 0x23}, - [SPECIES_PRIMEAPE - 1] = {0x1e, 0x16, 0x30, 0x1a, 0x27}, - [SPECIES_GROWLITHE - 1] = {0x14, 0x17, 0x30, 0x14, 0x24}, - [SPECIES_ARCANINE - 1] = {0x0f, 0x09, 0x28, 0x0c, 0x19}, - [SPECIES_POLIWAG - 1] = {0x15, 0x14, 0x30, 0x13, 0x1f}, - [SPECIES_POLIWHIRL - 1] = {0x1f, 0x10, 0x30, 0x1e, 0x17}, - [SPECIES_POLIWRATH - 1] = {0x22, 0x0c, 0x30, 0x21, 0x18}, - [SPECIES_ABRA - 1] = {0x1f, 0x13, 0x30, 0x1f, 0x21}, - [SPECIES_KADABRA - 1] = {0x1b, 0x12, 0x30, 0x1c, 0x25}, - [SPECIES_ALAKAZAM - 1] = {0x1c, 0x11, 0x28, 0x1d, 0x26}, - [SPECIES_MACHOP - 1] = {0x1b, 0x11, 0x30, 0x1b, 0x1e}, - [SPECIES_MACHOKE - 1] = {0x1d, 0x11, 0x30, 0x1d, 0x1f}, - [SPECIES_MACHAMP - 1] = {0x1a, 0x0d, 0x28, 0x1c, 0x1b}, - [SPECIES_BELLSPROUT - 1] = {0x15, 0x0e, 0x30, 0x0e, 0x1c}, - [SPECIES_WEEPINBELL - 1] = {0x1a, 0x1c, 0x10, 0x15, 0x32}, - [SPECIES_VICTREEBEL - 1] = {0x1e, 0x0f, 0x30, 0x1c, 0x1b}, - [SPECIES_TENTACOOL - 1] = {0x1a, 0x15, 0x30, 0x1e, 0x26}, - [SPECIES_TENTACRUEL - 1] = {0x1b, 0x10, 0x28, 0x1c, 0x26}, - [SPECIES_GEODUDE - 1] = {0x1c, 0x20, 0x28, 0x1d, 0x2d}, - [SPECIES_GRAVELER - 1] = {0x1d, 0x19, 0x28, 0x1e, 0x26}, - [SPECIES_GOLEM - 1] = {0x19, 0x1b, 0x28, 0x1c, 0x27}, - [SPECIES_PONYTA - 1] = {0x0f, 0x11, 0x30, 0x0e, 0x23}, - [SPECIES_RAPIDASH - 1] = {0x2f, 0x0f, 0x28, 0x2b, 0x1e}, - [SPECIES_SLOWPOKE - 1] = {0x14, 0x1f, 0x28, 0x15, 0x2f}, - [SPECIES_SLOWBRO - 1] = {0x0e, 0x0d, 0x28, 0x0c, 0x1f}, - [SPECIES_MAGNEMITE - 1] = {0x20, 0x1b, 0x10, 0x1f, 0x29}, - [SPECIES_MAGNETON - 1] = {0x1f, 0x14, 0x08, 0x1f, 0x22}, - [SPECIES_FARFETCHD - 1] = {0x16, 0x14, 0x30, 0x16, 0x29}, - [SPECIES_DODUO - 1] = {0x11, 0x16, 0x30, 0x0d, 0x2c}, - [SPECIES_DODRIO - 1] = {0x1d, 0x04, 0x28, 0x0e, 0x07}, - [SPECIES_SEEL - 1] = {0x1b, 0x24, 0x20, 0x17, 0x35}, - [SPECIES_DEWGONG - 1] = {0x12, 0x0a, 0x30, 0x0e, 0x1a}, - [SPECIES_GRIMER - 1] = {0x1f, 0x10, 0x30, 0x1d, 0x25}, - [SPECIES_MUK - 1] = {0x17, 0x0f, 0x30, 0x19, 0x22}, - [SPECIES_SHELLDER - 1] = {0x1a, 0x18, 0x30, 0x17, 0x29}, - [SPECIES_CLOYSTER - 1] = {0x19, 0x1e, 0x28, 0x1d, 0x2c}, - [SPECIES_GASTLY - 1] = {0x1a, 0x1f, 0x08, 0x19, 0x30}, - [SPECIES_HAUNTER - 1] = {0x20, 0x14, 0x08, 0x1d, 0x26}, - [SPECIES_GENGAR - 1] = {0x1a, 0x16, 0x30, 0x19, 0x28}, - [SPECIES_ONIX - 1] = {0x1f, 0x24, 0x20, 0x28, 0x36}, - [SPECIES_DROWZEE - 1] = {0x1a, 0x0e, 0x30, 0x1a, 0x1e}, - [SPECIES_HYPNO - 1] = {0x1c, 0x12, 0x30, 0x19, 0x24}, - [SPECIES_KRABBY - 1] = {0x1d, 0x1d, 0x30, 0x1a, 0x2b}, - [SPECIES_KINGLER - 1] = {0x1e, 0x1f, 0x28, 0x1c, 0x30}, - [SPECIES_VOLTORB - 1] = {0x1c, 0x1b, 0x30, 0x1b, 0x2b}, - [SPECIES_ELECTRODE - 1] = {0x1c, 0x18, 0x30, 0x1d, 0x2e}, - [SPECIES_EXEGGCUTE - 1] = {0x21, 0x17, 0x30, 0x20, 0x24}, - [SPECIES_EXEGGUTOR - 1] = {0x1c, 0x17, 0x28, 0x1b, 0x25}, - [SPECIES_CUBONE - 1] = {0x1b, 0x12, 0x30, 0x1b, 0x22}, - [SPECIES_MAROWAK - 1] = {0x14, 0x0f, 0x30, 0x11, 0x23}, - [SPECIES_HITMONLEE - 1] = {0x2e, 0x11, 0x30, 0x28, 0x22}, - [SPECIES_HITMONCHAN - 1] = {0x22, 0x0e, 0x30, 0x1e, 0x1d}, - [SPECIES_LICKITUNG - 1] = {0x14, 0x11, 0x30, 0x14, 0x24}, - [SPECIES_KOFFING - 1] = {0x1e, 0x14, 0x10, 0x1d, 0x20}, - [SPECIES_WEEZING - 1] = {0x11, 0x0d, 0x10, 0x0f, 0x1c}, - [SPECIES_RHYHORN - 1] = {0x0e, 0x23, 0x20, 0x14, 0x33}, - [SPECIES_RHYDON - 1] = {0x0d, 0x12, 0x28, 0x17, 0x22}, - [SPECIES_CHANSEY - 1] = {0x1a, 0x0d, 0x30, 0x1a, 0x1a}, - [SPECIES_TANGELA - 1] = {0x1c, 0x18, 0x30, 0x1d, 0x29}, - [SPECIES_KANGASKHAN - 1] = {0x1b, 0x06, 0x28, 0x1c, 0x14}, - [SPECIES_HORSEA - 1] = {0x1c, 0x14, 0x30, 0x16, 0x23}, - [SPECIES_SEADRA - 1] = {0x10, 0x17, 0x30, 0x09, 0x2a}, - [SPECIES_GOLDEEN - 1] = {0x16, 0x23, 0x20, 0x15, 0x34}, - [SPECIES_SEAKING - 1] = {0x16, 0x0f, 0x30, 0x10, 0x18}, - [SPECIES_STARYU - 1] = {0x1c, 0x18, 0x30, 0x1a, 0x26}, - [SPECIES_STARMIE - 1] = {0x1d, 0x13, 0x30, 0x1b, 0x20}, - [SPECIES_MR_MIME - 1] = {0x24, 0x11, 0x30, 0x25, 0x1e}, - [SPECIES_SCYTHER - 1] = {0x10, 0x19, 0x28, 0x12, 0x27}, - [SPECIES_JYNX - 1] = {0x1b, 0x0f, 0x30, 0x19, 0x1c}, - [SPECIES_ELECTABUZZ - 1] = {0x14, 0x11, 0x30, 0x17, 0x20}, - [SPECIES_MAGMAR - 1] = {0x10, 0x0e, 0x30, 0x0b, 0x19}, - [SPECIES_PINSIR - 1] = {0x1d, 0x1c, 0x28, 0x20, 0x2b}, - [SPECIES_TAUROS - 1] = {0x11, 0x1d, 0x28, 0x13, 0x2e}, - [SPECIES_MAGIKARP - 1] = {0x16, 0x15, 0x30, 0x13, 0x23}, - [SPECIES_GYARADOS - 1] = {0x0b, 0x18, 0x28, 0x16, 0x29}, - [SPECIES_LAPRAS - 1] = {0x16, 0x08, 0x28, 0x15, 0x16}, - [SPECIES_DITTO - 1] = {0x24, 0x12, 0x30, 0x1f, 0x20}, - [SPECIES_EEVEE - 1] = {0x16, 0x16, 0x30, 0x16, 0x23}, - [SPECIES_VAPOREON - 1] = {0x18, 0x23, 0x28, 0x18, 0x30}, - [SPECIES_JOLTEON - 1] = {0x14, 0x1b, 0x30, 0x16, 0x28}, - [SPECIES_FLAREON - 1] = {0x16, 0x17, 0x30, 0x14, 0x25}, - [SPECIES_PORYGON - 1] = {0x18, 0x12, 0x30, 0x10, 0x23}, - [SPECIES_OMANYTE - 1] = {0x1d, 0x1d, 0x30, 0x1c, 0x2b}, - [SPECIES_OMASTAR - 1] = {0x16, 0x1a, 0x30, 0x19, 0x2d}, - [SPECIES_KABUTO - 1] = {0x1b, 0x16, 0x30, 0x1a, 0x27}, - [SPECIES_KABUTOPS - 1] = {0x15, 0x11, 0x30, 0x15, 0x1f}, - [SPECIES_AERODACTYL - 1] = {0x13, 0x1d, 0x00, 0x14, 0x30}, - [SPECIES_SNORLAX - 1] = {0x35, 0x09, 0x30, 0x2e, 0x14}, - [SPECIES_ARTICUNO - 1] = {0x18, 0x0b, 0x18, 0x17, 0x17}, - [SPECIES_ZAPDOS - 1] = {0x0e, 0x0e, 0x10, 0x04, 0x28}, - [SPECIES_MOLTRES - 1] = {0x0b, 0x2a, 0x08, 0x0b, 0x38}, - [SPECIES_DRATINI - 1] = {0x0d, 0x12, 0x30, 0x0b, 0x21}, - [SPECIES_DRAGONAIR - 1] = {0x18, 0x0e, 0x30, 0x13, 0x1c}, - [SPECIES_DRAGONITE - 1] = {0x1b, 0x07, 0x18, 0x19, 0x17}, - [SPECIES_MEWTWO - 1] = {0x2b, 0x09, 0x28, 0x2c, 0x18}, - [SPECIES_MEW - 1] = {0x19, 0x14, 0x10, 0x1f, 0x21}, - [SPECIES_CHIKORITA - 1] = {0x1b, 0x17, 0x30, 0x1b, 0x24}, - [SPECIES_BAYLEEF - 1] = {0x1d, 0x10, 0x30, 0x20, 0x1d}, - [SPECIES_MEGANIUM - 1] = {0x05, 0x0d, 0x28, 0x0d, 0x1b}, - [SPECIES_CYNDAQUIL - 1] = {0x11, 0x1b, 0x30, 0x14, 0x27}, - [SPECIES_QUILAVA - 1] = {0x25, 0x18, 0x30, 0x27, 0x26}, - [SPECIES_TYPHLOSION - 1] = {0x09, 0x10, 0x28, 0x10, 0x1c}, - [SPECIES_TOTODILE - 1] = {0x16, 0x10, 0x30, 0x19, 0x20}, - [SPECIES_CROCONAW - 1] = {0x16, 0x10, 0x30, 0x18, 0x21}, - [SPECIES_FERALIGATR - 1] = {0x0e, 0x0a, 0x28, 0x08, 0x1a}, - [SPECIES_SENTRET - 1] = {0x1e, 0x0a, 0x30, 0x1d, 0x15}, - [SPECIES_FURRET - 1] = {0x21, 0x0e, 0x30, 0x21, 0x19}, - [SPECIES_HOOTHOOT - 1] = {0x1d, 0x15, 0x30, 0x1c, 0x24}, - [SPECIES_NOCTOWL - 1] = {0x19, 0x0e, 0x30, 0x18, 0x1c}, - [SPECIES_LEDYBA - 1] = {0x1b, 0x15, 0x30, 0x1c, 0x24}, - [SPECIES_LEDIAN - 1] = {0x18, 0x12, 0x10, 0x1c, 0x21}, - [SPECIES_SPINARAK - 1] = {0x20, 0x20, 0x28, 0x20, 0x2d}, - [SPECIES_ARIADOS - 1] = {0x17, 0x23, 0x28, 0x15, 0x30}, - [SPECIES_CROBAT - 1] = {0x22, 0x1e, 0x08, 0x23, 0x2b}, - [SPECIES_CHINCHOU - 1] = {0x1f, 0x1d, 0x30, 0x1f, 0x29}, - [SPECIES_LANTURN - 1] = {0x10, 0x23, 0x28, 0x19, 0x33}, - [SPECIES_PICHU - 1] = {0x1e, 0x17, 0x30, 0x1e, 0x24}, - [SPECIES_CLEFFA - 1] = {0x1c, 0x18, 0x30, 0x1e, 0x26}, - [SPECIES_IGGLYBUFF - 1] = {0x1f, 0x19, 0x30, 0x1f, 0x24}, - [SPECIES_TOGEPI - 1] = {0x21, 0x15, 0x30, 0x1f, 0x20}, - [SPECIES_TOGETIC - 1] = {0x1b, 0x10, 0x30, 0x1c, 0x1c}, - [SPECIES_NATU - 1] = {0x1c, 0x17, 0x30, 0x15, 0x21}, - [SPECIES_XATU - 1] = {0x1b, 0x08, 0x30, 0x19, 0x14}, - [SPECIES_MAREEP - 1] = {0x16, 0x15, 0x30, 0x15, 0x24}, - [SPECIES_FLAAFFY - 1] = {0x19, 0x12, 0x30, 0x18, 0x21}, - [SPECIES_AMPHAROS - 1] = {0x0f, 0x0a, 0x30, 0x10, 0x1b}, - [SPECIES_BELLOSSOM - 1] = {0x1f, 0x13, 0x30, 0x1f, 0x20}, - [SPECIES_MARILL - 1] = {0x1d, 0x15, 0x30, 0x1d, 0x22}, - [SPECIES_AZUMARILL - 1] = {0x1a, 0x12, 0x30, 0x17, 0x1f}, - [SPECIES_SUDOWOODO - 1] = {0x20, 0x10, 0x30, 0x20, 0x1f}, - [SPECIES_POLITOED - 1] = {0x1d, 0x0f, 0x30, 0x1e, 0x20}, - [SPECIES_HOPPIP - 1] = {0x23, 0x25, 0x08, 0x25, 0x33}, - [SPECIES_SKIPLOOM - 1] = {0x1e, 0x18, 0x08, 0x1c, 0x27}, - [SPECIES_JUMPLUFF - 1] = {0x1d, 0x21, 0x08, 0x20, 0x2f}, - [SPECIES_AIPOM - 1] = {0x1e, 0x29, 0x18, 0x1e, 0x35}, - [SPECIES_SUNKERN - 1] = {0x1f, 0x20, 0x08, 0x24, 0x2e}, - [SPECIES_SUNFLORA - 1] = {0x1c, 0x0c, 0x30, 0x1b, 0x19}, - [SPECIES_YANMA - 1] = {0x1b, 0x28, 0x08, 0x16, 0x35}, - [SPECIES_WOOPER - 1] = {0x1d, 0x13, 0x30, 0x1f, 0x21}, - [SPECIES_QUAGSIRE - 1] = {0x15, 0x09, 0x30, 0x12, 0x18}, - [SPECIES_ESPEON - 1] = {0x11, 0x1b, 0x30, 0x11, 0x29}, - [SPECIES_UMBREON - 1] = {0x23, 0x15, 0x30, 0x23, 0x22}, - [SPECIES_MURKROW - 1] = {0x24, 0x13, 0x30, 0x20, 0x22}, - [SPECIES_SLOWKING - 1] = {0x1e, 0x13, 0x28, 0x1d, 0x25}, - [SPECIES_MISDREAVUS - 1] = {0x28, 0x21, 0x08, 0x26, 0x2e}, - [SPECIES_UNOWN - 1] = {0x20, 0x17, 0x08, 0x1f, 0x21}, - [SPECIES_WOBBUFFET - 1] = {0x1d, 0x09, 0x30, 0x1d, 0x1a}, - [SPECIES_GIRAFARIG - 1] = {0x0b, 0x0d, 0x28, 0x11, 0x1d}, - [SPECIES_PINECO - 1] = {0x1d, 0x12, 0x10, 0x19, 0x25}, - [SPECIES_FORRETRESS - 1] = {0x19, 0x17, 0x08, 0x1e, 0x26}, - [SPECIES_DUNSPARCE - 1] = {0x10, 0x1b, 0x30, 0x0c, 0x2d}, - [SPECIES_GLIGAR - 1] = {0x1e, 0x13, 0x08, 0x1d, 0x23}, - [SPECIES_STEELIX - 1] = {0x0c, 0x0d, 0x28, 0x0d, 0x1c}, - [SPECIES_SNUBBULL - 1] = {0x1b, 0x15, 0x30, 0x1a, 0x23}, - [SPECIES_GRANBULL - 1] = {0x1c, 0x09, 0x30, 0x19, 0x18}, - [SPECIES_QWILFISH - 1] = {0x1f, 0x26, 0x20, 0x1d, 0x33}, - [SPECIES_SCIZOR - 1] = {0x15, 0x0f, 0x10, 0x1a, 0x1a}, - [SPECIES_SHUCKLE - 1] = {0x25, 0x0a, 0x30, 0x24, 0x18}, - [SPECIES_HERACROSS - 1] = {0x18, 0x19, 0x28, 0x1a, 0x26}, - [SPECIES_SNEASEL - 1] = {0x1c, 0x13, 0x30, 0x1d, 0x24}, - [SPECIES_TEDDIURSA - 1] = {0x1e, 0x12, 0x30, 0x1b, 0x23}, - [SPECIES_URSARING - 1] = {0x1e, 0x04, 0x28, 0x1d, 0x14}, - [SPECIES_SLUGMA - 1] = {0x20, 0x18, 0x30, 0x20, 0x28}, - [SPECIES_MAGCARGO - 1] = {0x16, 0x11, 0x30, 0x17, 0x23}, - [SPECIES_SWINUB - 1] = {0x1c, 0x18, 0x30, 0x1b, 0x25}, - [SPECIES_PILOSWINE - 1] = {0x18, 0x23, 0x20, 0x18, 0x36}, - [SPECIES_CORSOLA - 1] = {0x19, 0x1d, 0x28, 0x19, 0x2b}, - [SPECIES_REMORAID - 1] = {0x15, 0x1f, 0x28, 0x13, 0x2b}, - [SPECIES_OCTILLERY - 1] = {0x1c, 0x11, 0x30, 0x1a, 0x20}, - [SPECIES_DELIBIRD - 1] = {0x1d, 0x11, 0x30, 0x1b, 0x1f}, - [SPECIES_MANTINE - 1] = {0x16, 0x1e, 0x28, 0x1f, 0x27}, - [SPECIES_SKARMORY - 1] = {0x1e, 0x00, 0x28, 0x13, 0x07}, - [SPECIES_HOUNDOUR - 1] = {0x25, 0x11, 0x30, 0x25, 0x1f}, - [SPECIES_HOUNDOOM - 1] = {0x0d, 0x13, 0x30, 0x0d, 0x24}, - [SPECIES_KINGDRA - 1] = {0x0e, 0x13, 0x28, 0x0a, 0x2c}, - [SPECIES_PHANPY - 1] = {0x1b, 0x11, 0x30, 0x19, 0x24}, - [SPECIES_DONPHAN - 1] = {0x11, 0x15, 0x30, 0x19, 0x2c}, - [SPECIES_PORYGON2 - 1] = {0x18, 0x11, 0x30, 0x11, 0x20}, - [SPECIES_STANTLER - 1] = {0x15, 0x15, 0x28, 0x17, 0x28}, - [SPECIES_SMEARGLE - 1] = {0x18, 0x10, 0x30, 0x1b, 0x25}, - [SPECIES_TYROGUE - 1] = {0x1e, 0x12, 0x30, 0x1f, 0x1f}, - [SPECIES_HITMONTOP - 1] = {0x1a, 0x39, 0x10, 0x1a, 0x2b}, - [SPECIES_SMOOCHUM - 1] = {0x20, 0x18, 0x30, 0x21, 0x26}, - [SPECIES_ELEKID - 1] = {0x1d, 0x14, 0x30, 0x1d, 0x23}, - [SPECIES_MAGBY - 1] = {0x1c, 0x15, 0x30, 0x1a, 0x24}, - [SPECIES_MILTANK - 1] = {0x18, 0x0e, 0x30, 0x18, 0x1e}, - [SPECIES_BLISSEY - 1] = {0x1d, 0x09, 0x30, 0x1d, 0x19}, - [SPECIES_RAIKOU - 1] = {0x29, 0x0c, 0x28, 0x27, 0x1e}, - [SPECIES_ENTEI - 1] = {0x08, 0x09, 0x28, 0x0b, 0x18}, - [SPECIES_SUICUNE - 1] = {0x23, 0x1d, 0x28, 0x26, 0x2c}, - [SPECIES_LARVITAR - 1] = {0x1c, 0x18, 0x30, 0x1a, 0x24}, - [SPECIES_PUPITAR - 1] = {0x1b, 0x19, 0x30, 0x1b, 0x28}, - [SPECIES_TYRANITAR - 1] = {0x06, 0x0b, 0x28, 0x0d, 0x19}, - [SPECIES_LUGIA - 1] = {0x08, 0x2a, 0x08, 0x14, 0x34}, - [SPECIES_HO_OH - 1] = {0x0d, 0x25, 0x08, 0x0e, 0x34}, - [SPECIES_CELEBI - 1] = {0x15, 0x21, 0x08, 0x1a, 0x2b}, - [SPECIES_OLD_UNOWN_B - 1] = {0x1f, 0x12, 0x08, 0x1e, 0x1c}, - [SPECIES_OLD_UNOWN_C - 1] = {0x20, 0x17, 0x08, 0x1f, 0x21}, - [SPECIES_OLD_UNOWN_D - 1] = {0x1c, 0x19, 0x08, 0x1b, 0x23}, - [SPECIES_OLD_UNOWN_E - 1] = {0x21, 0x19, 0x08, 0x20, 0x23}, - [SPECIES_OLD_UNOWN_F - 1] = {0x1b, 0x13, 0x08, 0x1a, 0x1d}, - [SPECIES_OLD_UNOWN_G - 1] = {0x20, 0x16, 0x08, 0x1f, 0x21}, - [SPECIES_OLD_UNOWN_H - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, - [SPECIES_OLD_UNOWN_I - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, - [SPECIES_OLD_UNOWN_J - 1] = {0x20, 0x16, 0x08, 0x1f, 0x20}, - [SPECIES_OLD_UNOWN_K - 1] = {0x1d, 0x1a, 0x08, 0x1c, 0x24}, - [SPECIES_OLD_UNOWN_L - 1] = {0x20, 0x16, 0x08, 0x1f, 0x1f}, - [SPECIES_OLD_UNOWN_M - 1] = {0x20, 0x1c, 0x08, 0x1f, 0x26}, - [SPECIES_OLD_UNOWN_N - 1] = {0x20, 0x1a, 0x08, 0x1f, 0x23}, - [SPECIES_OLD_UNOWN_O - 1] = {0x20, 0x1a, 0x08, 0x1f, 0x23}, - [SPECIES_OLD_UNOWN_P - 1] = {0x20, 0x16, 0x08, 0x1f, 0x20}, - [SPECIES_OLD_UNOWN_Q - 1] = {0x1d, 0x16, 0x08, 0x1c, 0x20}, - [SPECIES_OLD_UNOWN_R - 1] = {0x20, 0x15, 0x08, 0x1f, 0x1f}, - [SPECIES_OLD_UNOWN_S - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, - [SPECIES_OLD_UNOWN_T - 1] = {0x20, 0x1e, 0x08, 0x1f, 0x28}, - [SPECIES_OLD_UNOWN_U - 1] = {0x20, 0x17, 0x08, 0x1f, 0x21}, - [SPECIES_OLD_UNOWN_V - 1] = {0x1e, 0x1e, 0x08, 0x1d, 0x28}, - [SPECIES_OLD_UNOWN_W - 1] = {0x20, 0x1d, 0x08, 0x1f, 0x27}, - [SPECIES_OLD_UNOWN_X - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, - [SPECIES_OLD_UNOWN_Y - 1] = {0x20, 0x15, 0x08, 0x1f, 0x1f}, - [SPECIES_OLD_UNOWN_Z - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, - [SPECIES_TREECKO - 1] = {0x1a, 0x0f, 0x30, 0x19, 0x20}, - [SPECIES_GROVYLE - 1] = {0x0d, 0x05, 0x10, 0x05, 0x13}, - [SPECIES_SCEPTILE - 1] = {0x10, 0x04, 0x28, 0x0c, 0x12}, - [SPECIES_TORCHIC - 1] = {0x17, 0x18, 0x30, 0x15, 0x25}, - [SPECIES_COMBUSKEN - 1] = {0x20, 0x12, 0x28, 0x1e, 0x20}, - [SPECIES_BLAZIKEN - 1] = {0x1a, 0x07, 0x28, 0x1d, 0x13}, - [SPECIES_MUDKIP - 1] = {0x1b, 0x1d, 0x28, 0x19, 0x2c}, - [SPECIES_MARSHTOMP - 1] = {0x1d, 0x11, 0x30, 0x1c, 0x20}, - [SPECIES_SWAMPERT - 1] = {0x1b, 0x11, 0x28, 0x1b, 0x23}, - [SPECIES_POOCHYENA - 1] = {0x14, 0x12, 0x30, 0x0f, 0x20}, - [SPECIES_MIGHTYENA - 1] = {0x09, 0x0d, 0x28, 0x09, 0x1c}, - [SPECIES_ZIGZAGOON - 1] = {0x0b, 0x1a, 0x30, 0x09, 0x2b}, - [SPECIES_LINOONE - 1] = {0x0d, 0x28, 0x18, 0x0b, 0x37}, - [SPECIES_WURMPLE - 1] = {0x21, 0x17, 0x30, 0x1f, 0x26}, - [SPECIES_SILCOON - 1] = {0x13, 0x1c, 0x30, 0x11, 0x2a}, - [SPECIES_BEAUTIFLY - 1] = {0x0f, 0x1b, 0x08, 0x0e, 0x28}, - [SPECIES_CASCOON - 1] = {0x14, 0x1d, 0x30, 0x11, 0x2c}, - [SPECIES_DUSTOX - 1] = {0x14, 0x19, 0x08, 0x16, 0x26}, - [SPECIES_LOTAD - 1] = {0x19, 0x25, 0x28, 0x17, 0x32}, - [SPECIES_LOMBRE - 1] = {0x22, 0x10, 0x30, 0x29, 0x1d}, - [SPECIES_LUDICOLO - 1] = {0x1c, 0x0f, 0x28, 0x1b, 0x24}, - [SPECIES_SEEDOT - 1] = {0x1b, 0x17, 0x30, 0x18, 0x28}, - [SPECIES_NUZLEAF - 1] = {0x20, 0x0d, 0x30, 0x1a, 0x1d}, - [SPECIES_SHIFTRY - 1] = {0x32, 0x11, 0x28, 0x2e, 0x23}, - [SPECIES_NINCADA - 1] = {0x18, 0x1a, 0x30, 0x17, 0x28}, - [SPECIES_NINJASK - 1] = {0x17, 0x21, 0x00, 0x17, 0x2f}, - [SPECIES_SHEDINJA - 1] = {0x16, 0x19, 0x08, 0x18, 0x2a}, - [SPECIES_TAILLOW - 1] = {0x17, 0x10, 0x30, 0x14, 0x1e}, - [SPECIES_SWELLOW - 1] = {0x0c, 0x0a, 0x28, 0x05, 0x16}, - [SPECIES_SHROOMISH - 1] = {0x1f, 0x16, 0x30, 0x1d, 0x23}, - [SPECIES_BRELOOM - 1] = {0x25, 0x0c, 0x30, 0x23, 0x19}, - [SPECIES_SPINDA - 1] = {0x21, 0x16, 0x30, 0x1f, 0x27}, - [SPECIES_WINGULL - 1] = {0x1a, 0x16, 0x10, 0x15, 0x26}, - [SPECIES_PELIPPER - 1] = {0x1d, 0x0a, 0x10, 0x09, 0x1b}, - [SPECIES_SURSKIT - 1] = {0x1d, 0x16, 0x30, 0x1c, 0x25}, - [SPECIES_MASQUERAIN - 1] = {0x1a, 0x21, 0x08, 0x14, 0x30}, - [SPECIES_WAILMER - 1] = {0x17, 0x17, 0x30, 0x16, 0x28}, - [SPECIES_WAILORD - 1] = {0x17, 0x03, 0x30, 0x09, 0x13}, - [SPECIES_SKITTY - 1] = {0x24, 0x1a, 0x30, 0x22, 0x2a}, - [SPECIES_DELCATTY - 1] = {0x1e, 0x12, 0x30, 0x1c, 0x21}, - [SPECIES_KECLEON - 1] = {0x19, 0x10, 0x30, 0x13, 0x1e}, - [SPECIES_BALTOY - 1] = {0x1d, 0x15, 0x30, 0x1b, 0x22}, - [SPECIES_CLAYDOL - 1] = {0x1e, 0x0d, 0x28, 0x1d, 0x24}, - [SPECIES_NOSEPASS - 1] = {0x1f, 0x10, 0x30, 0x15, 0x23}, - [SPECIES_TORKOAL - 1] = {0x0e, 0x19, 0x28, 0x0a, 0x27}, - [SPECIES_SABLEYE - 1] = {0x1e, 0x16, 0x30, 0x1d, 0x27}, - [SPECIES_BARBOACH - 1] = {0x17, 0x12, 0x30, 0x15, 0x1e}, - [SPECIES_WHISCASH - 1] = {0x18, 0x20, 0x28, 0x17, 0x31}, - [SPECIES_LUVDISC - 1] = {0x19, 0x0f, 0x30, 0x13, 0x1c}, - [SPECIES_CORPHISH - 1] = {0x1f, 0x14, 0x30, 0x1d, 0x23}, - [SPECIES_CRAWDAUNT - 1] = {0x14, 0x0c, 0x28, 0x18, 0x23}, - [SPECIES_FEEBAS - 1] = {0x18, 0x1e, 0x28, 0x16, 0x2f}, - [SPECIES_MILOTIC - 1] = {0x20, 0x0c, 0x28, 0x1f, 0x1d}, - [SPECIES_CARVANHA - 1] = {0x16, 0x19, 0x30, 0x13, 0x22}, - [SPECIES_SHARPEDO - 1] = {0x19, 0x0c, 0x28, 0x17, 0x27}, - [SPECIES_TRAPINCH - 1] = {0x29, 0x13, 0x30, 0x17, 0x18}, - [SPECIES_VIBRAVA - 1] = {0x10, 0x27, 0x20, 0x0e, 0x34}, - [SPECIES_FLYGON - 1] = {0x22, 0x07, 0x10, 0x21, 0x13}, - [SPECIES_MAKUHITA - 1] = {0x22, 0x13, 0x30, 0x1c, 0x23}, - [SPECIES_HARIYAMA - 1] = {0x24, 0x0f, 0x28, 0x26, 0x1c}, - [SPECIES_ELECTRIKE - 1] = {0x11, 0x18, 0x30, 0x14, 0x27}, - [SPECIES_MANECTRIC - 1] = {0x2f, 0x18, 0x28, 0x2e, 0x29}, - [SPECIES_NUMEL - 1] = {0x10, 0x1a, 0x30, 0x0d, 0x2a}, - [SPECIES_CAMERUPT - 1] = {0x0d, 0x22, 0x28, 0x0e, 0x36}, - [SPECIES_SPHEAL - 1] = {0x1e, 0x0f, 0x30, 0x18, 0x1f}, - [SPECIES_SEALEO - 1] = {0x1c, 0x09, 0x30, 0x1a, 0x18}, - [SPECIES_WALREIN - 1] = {0x19, 0x01, 0x28, 0x10, 0x16}, - [SPECIES_CACNEA - 1] = {0x1f, 0x17, 0x30, 0x1d, 0x29}, - [SPECIES_CACTURNE - 1] = {0x1d, 0x0e, 0x28, 0x1d, 0x1b}, - [SPECIES_SNORUNT - 1] = {0x1e, 0x16, 0x30, 0x1e, 0x26}, - [SPECIES_GLALIE - 1] = {0x1a, 0x1c, 0x08, 0x1a, 0x31}, - [SPECIES_LUNATONE - 1] = {0x1c, 0x16, 0x08, 0x19, 0x2c}, - [SPECIES_SOLROCK - 1] = {0x18, 0x18, 0x10, 0x17, 0x31}, - [SPECIES_AZURILL - 1] = {0x1b, 0x10, 0x30, 0x18, 0x1f}, - [SPECIES_SPOINK - 1] = {0x21, 0x14, 0x30, 0x1b, 0x28}, - [SPECIES_GRUMPIG - 1] = {0x14, 0x10, 0x30, 0x15, 0x20}, - [SPECIES_PLUSLE - 1] = {0x1c, 0x16, 0x08, 0x1d, 0x25}, - [SPECIES_MINUN - 1] = {0x21, 0x16, 0x08, 0x1f, 0x26}, - [SPECIES_MAWILE - 1] = {0x2d, 0x14, 0x30, 0x2f, 0x24}, - [SPECIES_MEDITITE - 1] = {0x1f, 0x17, 0x30, 0x1e, 0x25}, - [SPECIES_MEDICHAM - 1] = {0x21, 0x0f, 0x28, 0x1e, 0x1d}, - [SPECIES_SWABLU - 1] = {0x1b, 0x16, 0x10, 0x17, 0x23}, - [SPECIES_ALTARIA - 1] = {0x1d, 0x0b, 0x10, 0x1a, 0x1a}, - [SPECIES_WYNAUT - 1] = {0x1a, 0x15, 0x30, 0x1b, 0x26}, - [SPECIES_DUSKULL - 1] = {0x10, 0x18, 0x08, 0x14, 0x2e}, - [SPECIES_DUSCLOPS - 1] = {0x1c, 0x0f, 0x30, 0x1a, 0x28}, - [SPECIES_ROSELIA - 1] = {0x1e, 0x11, 0x30, 0x1d, 0x20}, - [SPECIES_SLAKOTH - 1] = {0x19, 0x1e, 0x30, 0x18, 0x2f}, - [SPECIES_VIGOROTH - 1] = {0x10, 0x12, 0x28, 0x14, 0x24}, - [SPECIES_SLAKING - 1] = {0x37, 0x0f, 0x30, 0x29, 0x21}, - [SPECIES_GULPIN - 1] = {0x1b, 0x18, 0x30, 0x17, 0x26}, - [SPECIES_SWALOT - 1] = {0x1f, 0x06, 0x30, 0x15, 0x13}, - [SPECIES_TROPIUS - 1] = {0x18, 0x0a, 0x28, 0x20, 0x18}, - [SPECIES_WHISMUR - 1] = {0x1f, 0x19, 0x30, 0x1d, 0x29}, - [SPECIES_LOUDRED - 1] = {0x1c, 0x12, 0x28, 0x22, 0x27}, - [SPECIES_EXPLOUD - 1] = {0x10, 0x10, 0x28, 0x1a, 0x2a}, - [SPECIES_CLAMPERL - 1] = {0x20, 0x1a, 0x30, 0x1e, 0x26}, - [SPECIES_HUNTAIL - 1] = {0x13, 0x1e, 0x28, 0x15, 0x33}, - [SPECIES_GOREBYSS - 1] = {0x0d, 0x1f, 0x28, 0x03, 0x32}, - [SPECIES_ABSOL - 1] = {0x2a, 0x11, 0x28, 0x2a, 0x22}, - [SPECIES_SHUPPET - 1] = {0x16, 0x19, 0x08, 0x17, 0x27}, - [SPECIES_BANETTE - 1] = {0x1c, 0x14, 0x08, 0x1b, 0x23}, - [SPECIES_SEVIPER - 1] = {0x0e, 0x0d, 0x30, 0x0b, 0x1e}, - [SPECIES_ZANGOOSE - 1] = {0x18, 0x0c, 0x28, 0x15, 0x1a}, - [SPECIES_RELICANTH - 1] = {0x0c, 0x1f, 0x30, 0x09, 0x2d}, - [SPECIES_ARON - 1] = {0x18, 0x1c, 0x30, 0x1a, 0x2c}, - [SPECIES_LAIRON - 1] = {0x0b, 0x21, 0x30, 0x12, 0x2f}, - [SPECIES_AGGRON - 1] = {0x10, 0x0b, 0x28, 0x16, 0x1b}, - [SPECIES_CASTFORM - 1] = {0x1d, 0x18, 0x08, 0x1b, 0x26}, - [SPECIES_VOLBEAT - 1] = {0x25, 0x15, 0x08, 0x21, 0x25}, - [SPECIES_ILLUMISE - 1] = {0x20, 0x12, 0x08, 0x1f, 0x20}, - [SPECIES_LILEEP - 1] = {0x1e, 0x11, 0x30, 0x1f, 0x1e}, - [SPECIES_CRADILY - 1] = {0x12, 0x16, 0x28, 0x15, 0x28}, - [SPECIES_ANORITH - 1] = {0x1c, 0x1e, 0x30, 0x1b, 0x2b}, - [SPECIES_ARMALDO - 1] = {0x15, 0x05, 0x28, 0x14, 0x13}, - [SPECIES_RALTS - 1] = {0x1f, 0x17, 0x30, 0x20, 0x23}, - [SPECIES_KIRLIA - 1] = {0x1c, 0x12, 0x30, 0x1f, 0x1e}, - [SPECIES_GARDEVOIR - 1] = {0x35, 0x07, 0x28, 0x32, 0x14}, - [SPECIES_BAGON - 1] = {0x17, 0x13, 0x30, 0x16, 0x26}, - [SPECIES_SHELGON - 1] = {0x19, 0x1b, 0x30, 0x19, 0x2c}, - [SPECIES_SALAMENCE - 1] = {0x09, 0x11, 0x30, 0x0a, 0x21}, - [SPECIES_BELDUM - 1] = {0x16, 0x19, 0x08, 0x18, 0x23}, - [SPECIES_METANG - 1] = {0x22, 0x0f, 0x10, 0x1f, 0x21}, - [SPECIES_METAGROSS - 1] = {0x24, 0x1b, 0x28, 0x22, 0x2b}, - [SPECIES_REGIROCK - 1] = {0x16, 0x07, 0x28, 0x14, 0x12}, - [SPECIES_REGICE - 1] = {0x19, 0x0c, 0x28, 0x17, 0x19}, - [SPECIES_REGISTEEL - 1] = {0x19, 0x0d, 0x28, 0x19, 0x19}, - [SPECIES_KYOGRE - 1] = {0x0e, 0x19, 0x28, 0x0b, 0x26}, - [SPECIES_GROUDON - 1] = {0x04, 0x0b, 0x28, 0x0a, 0x19}, - [SPECIES_RAYQUAZA - 1] = {0x0c, 0x0e, 0x10, 0x0e, 0x1f}, - [SPECIES_LATIAS - 1] = {0x1e, 0x0c, 0x10, 0x23, 0x19}, - [SPECIES_LATIOS - 1] = {0x05, 0x0e, 0x10, 0x05, 0x1d}, - [SPECIES_JIRACHI - 1] = {0x1c, 0x15, 0x08, 0x1e, 0x22}, +static const u8 sMonSpriteAnchorCoords[][5] = { + [SPECIES_BULBASAUR - 1] = {0x16, 0x1b, 0x30, 0x16, 0x29}, + [SPECIES_IVYSAUR - 1] = {0x14, 0x1b, 0x30, 0x15, 0x2a}, + [SPECIES_VENUSAUR - 1] = {0x1b, 0x20, 0x20, 0x1b, 0x33}, + [SPECIES_CHARMANDER - 1] = {0x14, 0x0f, 0x38, 0x13, 0x1e}, + [SPECIES_CHARMELEON - 1] = {0x0d, 0x11, 0x30, 0x0f, 0x22}, + [SPECIES_CHARIZARD - 1] = {0x1b, 0x07, 0x28, 0x1a, 0x19}, + [SPECIES_SQUIRTLE - 1] = {0x19, 0x13, 0x30, 0x1a, 0x22}, + [SPECIES_WARTORTLE - 1] = {0x16, 0x13, 0x30, 0x17, 0x21}, + [SPECIES_BLASTOISE - 1] = {0x12, 0x08, 0x28, 0x15, 0x19}, + [SPECIES_CATERPIE - 1] = {0x15, 0x14, 0x30, 0x13, 0x24}, + [SPECIES_METAPOD - 1] = {0x13, 0x1d, 0x30, 0x18, 0x2a}, + [SPECIES_BUTTERFREE - 1] = {0x12, 0x1b, 0x08, 0x12, 0x2a}, + [SPECIES_WEEDLE - 1] = {0x16, 0x1c, 0x30, 0x15, 0x2b}, + [SPECIES_KAKUNA - 1] = {0x19, 0x13, 0x30, 0x1a, 0x24}, + [SPECIES_BEEDRILL - 1] = {0x19, 0x16, 0x08, 0x19, 0x25}, + [SPECIES_PIDGEY - 1] = {0x15, 0x12, 0x30, 0x12, 0x1e}, + [SPECIES_PIDGEOTTO - 1] = {0x24, 0x0e, 0x30, 0x1f, 0x1e}, + [SPECIES_PIDGEOT - 1] = {0x0c, 0x13, 0x08, 0x0a, 0x23}, + [SPECIES_RATTATA - 1] = {0x17, 0x1e, 0x30, 0x18, 0x2d}, + [SPECIES_RATICATE - 1] = {0x12, 0x14, 0x30, 0x10, 0x26}, + [SPECIES_SPEAROW - 1] = {0x15, 0x14, 0x30, 0x15, 0x1f}, + [SPECIES_FEAROW - 1] = {0x0c, 0x27, 0x00, 0x0b, 0x3f}, + [SPECIES_EKANS - 1] = {0x11, 0x0f, 0x30, 0x14, 0x1d}, + [SPECIES_ARBOK - 1] = {0x1b, 0x01, 0x28, 0x1d, 0x10}, + [SPECIES_PIKACHU - 1] = {0x19, 0x13, 0x30, 0x1a, 0x1f}, + [SPECIES_RAICHU - 1] = {0x19, 0x14, 0x28, 0x1c, 0x22}, + [SPECIES_SANDSHREW - 1] = {0x17, 0x16, 0x30, 0x18, 0x25}, + [SPECIES_SANDSLASH - 1] = {0x11, 0x13, 0x28, 0x13, 0x22}, + [SPECIES_NIDORAN_F - 1] = {0x16, 0x15, 0x30, 0x18, 0x21}, + [SPECIES_NIDORINA - 1] = {0x1f, 0x17, 0x30, 0x1e, 0x28}, + [SPECIES_NIDOQUEEN - 1] = {0x10, 0x0b, 0x28, 0x13, 0x1c}, + [SPECIES_NIDORAN_M - 1] = {0x15, 0x22, 0x28, 0x15, 0x31}, + [SPECIES_NIDORINO - 1] = {0x13, 0x1e, 0x28, 0x1b, 0x2d}, + [SPECIES_NIDOKING - 1] = {0x12, 0x15, 0x28, 0x13, 0x27}, + [SPECIES_CLEFAIRY - 1] = {0x19, 0x14, 0x30, 0x1b, 0x24}, + [SPECIES_CLEFABLE - 1] = {0x1c, 0x12, 0x30, 0x1d, 0x21}, + [SPECIES_VULPIX - 1] = {0x10, 0x16, 0x30, 0x0e, 0x25}, + [SPECIES_NINETALES - 1] = {0x28, 0x10, 0x28, 0x27, 0x1e}, + [SPECIES_JIGGLYPUFF - 1] = {0x1d, 0x15, 0x30, 0x1e, 0x25}, + [SPECIES_WIGGLYTUFF - 1] = {0x1a, 0x12, 0x30, 0x1c, 0x22}, + [SPECIES_ZUBAT - 1] = {0x14, 0x1d, 0x08, 0x14, 0x29}, + [SPECIES_GOLBAT - 1] = {0x23, 0x1a, 0x00, 0x21, 0x2e}, + [SPECIES_ODDISH - 1] = {0x1d, 0x20, 0x28, 0x1d, 0x2b}, + [SPECIES_GLOOM - 1] = {0x1c, 0x18, 0x28, 0x1c, 0x27}, + [SPECIES_VILEPLUME - 1] = {0x1c, 0x1e, 0x28, 0x1d, 0x2a}, + [SPECIES_PARAS - 1] = {0x1d, 0x1a, 0x30, 0x1c, 0x27}, + [SPECIES_PARASECT - 1] = {0x1e, 0x1c, 0x28, 0x20, 0x2e}, + [SPECIES_VENONAT - 1] = {0x1b, 0x16, 0x10, 0x1a, 0x29}, + [SPECIES_VENOMOTH - 1] = {0x12, 0x19, 0x08, 0x16, 0x27}, + [SPECIES_DIGLETT - 1] = {0x1e, 0x16, 0x30, 0x1c, 0x23}, + [SPECIES_DUGTRIO - 1] = {0x1a, 0x11, 0x30, 0x1a, 0x1f}, + [SPECIES_MEOWTH - 1] = {0x1c, 0x16, 0x30, 0x1c, 0x23}, + [SPECIES_PERSIAN - 1] = {0x13, 0x13, 0x30, 0x13, 0x21}, + [SPECIES_PSYDUCK - 1] = {0x1c, 0x13, 0x30, 0x17, 0x29}, + [SPECIES_GOLDUCK - 1] = {0x17, 0x12, 0x28, 0x17, 0x22}, + [SPECIES_MANKEY - 1] = {0x1c, 0x15, 0x30, 0x1b, 0x23}, + [SPECIES_PRIMEAPE - 1] = {0x1e, 0x16, 0x30, 0x1a, 0x27}, + [SPECIES_GROWLITHE - 1] = {0x14, 0x17, 0x30, 0x14, 0x24}, + [SPECIES_ARCANINE - 1] = {0x0f, 0x09, 0x28, 0x0c, 0x19}, + [SPECIES_POLIWAG - 1] = {0x15, 0x14, 0x30, 0x13, 0x1f}, + [SPECIES_POLIWHIRL - 1] = {0x1f, 0x10, 0x30, 0x1e, 0x17}, + [SPECIES_POLIWRATH - 1] = {0x22, 0x0c, 0x30, 0x21, 0x18}, + [SPECIES_ABRA - 1] = {0x1f, 0x13, 0x30, 0x1f, 0x21}, + [SPECIES_KADABRA - 1] = {0x1b, 0x12, 0x30, 0x1c, 0x25}, + [SPECIES_ALAKAZAM - 1] = {0x1c, 0x11, 0x28, 0x1d, 0x26}, + [SPECIES_MACHOP - 1] = {0x1b, 0x11, 0x30, 0x1b, 0x1e}, + [SPECIES_MACHOKE - 1] = {0x1d, 0x11, 0x30, 0x1d, 0x1f}, + [SPECIES_MACHAMP - 1] = {0x1a, 0x0d, 0x28, 0x1c, 0x1b}, + [SPECIES_BELLSPROUT - 1] = {0x15, 0x0e, 0x30, 0x0e, 0x1c}, + [SPECIES_WEEPINBELL - 1] = {0x1a, 0x1c, 0x10, 0x15, 0x32}, + [SPECIES_VICTREEBEL - 1] = {0x1e, 0x0f, 0x30, 0x1c, 0x1b}, + [SPECIES_TENTACOOL - 1] = {0x1a, 0x15, 0x30, 0x1e, 0x26}, + [SPECIES_TENTACRUEL - 1] = {0x1b, 0x10, 0x28, 0x1c, 0x26}, + [SPECIES_GEODUDE - 1] = {0x1c, 0x20, 0x28, 0x1d, 0x2d}, + [SPECIES_GRAVELER - 1] = {0x1d, 0x19, 0x28, 0x1e, 0x26}, + [SPECIES_GOLEM - 1] = {0x19, 0x1b, 0x28, 0x1c, 0x27}, + [SPECIES_PONYTA - 1] = {0x0f, 0x11, 0x30, 0x0e, 0x23}, + [SPECIES_RAPIDASH - 1] = {0x2f, 0x0f, 0x28, 0x2b, 0x1e}, + [SPECIES_SLOWPOKE - 1] = {0x14, 0x1f, 0x28, 0x15, 0x2f}, + [SPECIES_SLOWBRO - 1] = {0x0e, 0x0d, 0x28, 0x0c, 0x1f}, + [SPECIES_MAGNEMITE - 1] = {0x20, 0x1b, 0x10, 0x1f, 0x29}, + [SPECIES_MAGNETON - 1] = {0x1f, 0x14, 0x08, 0x1f, 0x22}, + [SPECIES_FARFETCHD - 1] = {0x16, 0x14, 0x30, 0x16, 0x29}, + [SPECIES_DODUO - 1] = {0x11, 0x16, 0x30, 0x0d, 0x2c}, + [SPECIES_DODRIO - 1] = {0x1d, 0x04, 0x28, 0x0e, 0x07}, + [SPECIES_SEEL - 1] = {0x1b, 0x24, 0x20, 0x17, 0x35}, + [SPECIES_DEWGONG - 1] = {0x12, 0x0a, 0x30, 0x0e, 0x1a}, + [SPECIES_GRIMER - 1] = {0x1f, 0x10, 0x30, 0x1d, 0x25}, + [SPECIES_MUK - 1] = {0x17, 0x0f, 0x30, 0x19, 0x22}, + [SPECIES_SHELLDER - 1] = {0x1a, 0x18, 0x30, 0x17, 0x29}, + [SPECIES_CLOYSTER - 1] = {0x19, 0x1e, 0x28, 0x1d, 0x2c}, + [SPECIES_GASTLY - 1] = {0x1a, 0x1f, 0x08, 0x19, 0x30}, + [SPECIES_HAUNTER - 1] = {0x20, 0x14, 0x08, 0x1d, 0x26}, + [SPECIES_GENGAR - 1] = {0x1a, 0x16, 0x30, 0x19, 0x28}, + [SPECIES_ONIX - 1] = {0x1f, 0x24, 0x20, 0x28, 0x36}, + [SPECIES_DROWZEE - 1] = {0x1a, 0x0e, 0x30, 0x1a, 0x1e}, + [SPECIES_HYPNO - 1] = {0x1c, 0x12, 0x30, 0x19, 0x24}, + [SPECIES_KRABBY - 1] = {0x1d, 0x1d, 0x30, 0x1a, 0x2b}, + [SPECIES_KINGLER - 1] = {0x1e, 0x1f, 0x28, 0x1c, 0x30}, + [SPECIES_VOLTORB - 1] = {0x1c, 0x1b, 0x30, 0x1b, 0x2b}, + [SPECIES_ELECTRODE - 1] = {0x1c, 0x18, 0x30, 0x1d, 0x2e}, + [SPECIES_EXEGGCUTE - 1] = {0x21, 0x17, 0x30, 0x20, 0x24}, + [SPECIES_EXEGGUTOR - 1] = {0x1c, 0x17, 0x28, 0x1b, 0x25}, + [SPECIES_CUBONE - 1] = {0x1b, 0x12, 0x30, 0x1b, 0x22}, + [SPECIES_MAROWAK - 1] = {0x14, 0x0f, 0x30, 0x11, 0x23}, + [SPECIES_HITMONLEE - 1] = {0x2e, 0x11, 0x30, 0x28, 0x22}, + [SPECIES_HITMONCHAN - 1] = {0x22, 0x0e, 0x30, 0x1e, 0x1d}, + [SPECIES_LICKITUNG - 1] = {0x14, 0x11, 0x30, 0x14, 0x24}, + [SPECIES_KOFFING - 1] = {0x1e, 0x14, 0x10, 0x1d, 0x20}, + [SPECIES_WEEZING - 1] = {0x11, 0x0d, 0x10, 0x0f, 0x1c}, + [SPECIES_RHYHORN - 1] = {0x0e, 0x23, 0x20, 0x14, 0x33}, + [SPECIES_RHYDON - 1] = {0x0d, 0x12, 0x28, 0x17, 0x22}, + [SPECIES_CHANSEY - 1] = {0x1a, 0x0d, 0x30, 0x1a, 0x1a}, + [SPECIES_TANGELA - 1] = {0x1c, 0x18, 0x30, 0x1d, 0x29}, + [SPECIES_KANGASKHAN - 1] = {0x1b, 0x06, 0x28, 0x1c, 0x14}, + [SPECIES_HORSEA - 1] = {0x1c, 0x14, 0x30, 0x16, 0x23}, + [SPECIES_SEADRA - 1] = {0x10, 0x17, 0x30, 0x09, 0x2a}, + [SPECIES_GOLDEEN - 1] = {0x16, 0x23, 0x20, 0x15, 0x34}, + [SPECIES_SEAKING - 1] = {0x16, 0x0f, 0x30, 0x10, 0x18}, + [SPECIES_STARYU - 1] = {0x1c, 0x18, 0x30, 0x1a, 0x26}, + [SPECIES_STARMIE - 1] = {0x1d, 0x13, 0x30, 0x1b, 0x20}, + [SPECIES_MR_MIME - 1] = {0x24, 0x11, 0x30, 0x25, 0x1e}, + [SPECIES_SCYTHER - 1] = {0x10, 0x19, 0x28, 0x12, 0x27}, + [SPECIES_JYNX - 1] = {0x1b, 0x0f, 0x30, 0x19, 0x1c}, + [SPECIES_ELECTABUZZ - 1] = {0x14, 0x11, 0x30, 0x17, 0x20}, + [SPECIES_MAGMAR - 1] = {0x10, 0x0e, 0x30, 0x0b, 0x19}, + [SPECIES_PINSIR - 1] = {0x1d, 0x1c, 0x28, 0x20, 0x2b}, + [SPECIES_TAUROS - 1] = {0x11, 0x1d, 0x28, 0x13, 0x2e}, + [SPECIES_MAGIKARP - 1] = {0x16, 0x15, 0x30, 0x13, 0x23}, + [SPECIES_GYARADOS - 1] = {0x0b, 0x18, 0x28, 0x16, 0x29}, + [SPECIES_LAPRAS - 1] = {0x16, 0x08, 0x28, 0x15, 0x16}, + [SPECIES_DITTO - 1] = {0x24, 0x12, 0x30, 0x1f, 0x20}, + [SPECIES_EEVEE - 1] = {0x16, 0x16, 0x30, 0x16, 0x23}, + [SPECIES_VAPOREON - 1] = {0x18, 0x23, 0x28, 0x18, 0x30}, + [SPECIES_JOLTEON - 1] = {0x14, 0x1b, 0x30, 0x16, 0x28}, + [SPECIES_FLAREON - 1] = {0x16, 0x17, 0x30, 0x14, 0x25}, + [SPECIES_PORYGON - 1] = {0x18, 0x12, 0x30, 0x10, 0x23}, + [SPECIES_OMANYTE - 1] = {0x1d, 0x1d, 0x30, 0x1c, 0x2b}, + [SPECIES_OMASTAR - 1] = {0x16, 0x1a, 0x30, 0x19, 0x2d}, + [SPECIES_KABUTO - 1] = {0x1b, 0x16, 0x30, 0x1a, 0x27}, + [SPECIES_KABUTOPS - 1] = {0x15, 0x11, 0x30, 0x15, 0x1f}, + [SPECIES_AERODACTYL - 1] = {0x13, 0x1d, 0x00, 0x14, 0x30}, + [SPECIES_SNORLAX - 1] = {0x35, 0x09, 0x30, 0x2e, 0x14}, + [SPECIES_ARTICUNO - 1] = {0x18, 0x0b, 0x18, 0x17, 0x17}, + [SPECIES_ZAPDOS - 1] = {0x0e, 0x0e, 0x10, 0x04, 0x28}, + [SPECIES_MOLTRES - 1] = {0x0b, 0x2a, 0x08, 0x0b, 0x38}, + [SPECIES_DRATINI - 1] = {0x0d, 0x12, 0x30, 0x0b, 0x21}, + [SPECIES_DRAGONAIR - 1] = {0x18, 0x0e, 0x30, 0x13, 0x1c}, + [SPECIES_DRAGONITE - 1] = {0x1b, 0x07, 0x18, 0x19, 0x17}, + [SPECIES_MEWTWO - 1] = {0x2b, 0x09, 0x28, 0x2c, 0x18}, + [SPECIES_MEW - 1] = {0x19, 0x14, 0x10, 0x1f, 0x21}, + [SPECIES_CHIKORITA - 1] = {0x1b, 0x17, 0x30, 0x1b, 0x24}, + [SPECIES_BAYLEEF - 1] = {0x1d, 0x10, 0x30, 0x20, 0x1d}, + [SPECIES_MEGANIUM - 1] = {0x05, 0x0d, 0x28, 0x0d, 0x1b}, + [SPECIES_CYNDAQUIL - 1] = {0x11, 0x1b, 0x30, 0x14, 0x27}, + [SPECIES_QUILAVA - 1] = {0x25, 0x18, 0x30, 0x27, 0x26}, + [SPECIES_TYPHLOSION - 1] = {0x09, 0x10, 0x28, 0x10, 0x1c}, + [SPECIES_TOTODILE - 1] = {0x16, 0x10, 0x30, 0x19, 0x20}, + [SPECIES_CROCONAW - 1] = {0x16, 0x10, 0x30, 0x18, 0x21}, + [SPECIES_FERALIGATR - 1] = {0x0e, 0x0a, 0x28, 0x08, 0x1a}, + [SPECIES_SENTRET - 1] = {0x1e, 0x0a, 0x30, 0x1d, 0x15}, + [SPECIES_FURRET - 1] = {0x21, 0x0e, 0x30, 0x21, 0x19}, + [SPECIES_HOOTHOOT - 1] = {0x1d, 0x15, 0x30, 0x1c, 0x24}, + [SPECIES_NOCTOWL - 1] = {0x19, 0x0e, 0x30, 0x18, 0x1c}, + [SPECIES_LEDYBA - 1] = {0x1b, 0x15, 0x30, 0x1c, 0x24}, + [SPECIES_LEDIAN - 1] = {0x18, 0x12, 0x10, 0x1c, 0x21}, + [SPECIES_SPINARAK - 1] = {0x20, 0x20, 0x28, 0x20, 0x2d}, + [SPECIES_ARIADOS - 1] = {0x17, 0x23, 0x28, 0x15, 0x30}, + [SPECIES_CROBAT - 1] = {0x22, 0x1e, 0x08, 0x23, 0x2b}, + [SPECIES_CHINCHOU - 1] = {0x1f, 0x1d, 0x30, 0x1f, 0x29}, + [SPECIES_LANTURN - 1] = {0x10, 0x23, 0x28, 0x19, 0x33}, + [SPECIES_PICHU - 1] = {0x1e, 0x17, 0x30, 0x1e, 0x24}, + [SPECIES_CLEFFA - 1] = {0x1c, 0x18, 0x30, 0x1e, 0x26}, + [SPECIES_IGGLYBUFF - 1] = {0x1f, 0x19, 0x30, 0x1f, 0x24}, + [SPECIES_TOGEPI - 1] = {0x21, 0x15, 0x30, 0x1f, 0x20}, + [SPECIES_TOGETIC - 1] = {0x1b, 0x10, 0x30, 0x1c, 0x1c}, + [SPECIES_NATU - 1] = {0x1c, 0x17, 0x30, 0x15, 0x21}, + [SPECIES_XATU - 1] = {0x1b, 0x08, 0x30, 0x19, 0x14}, + [SPECIES_MAREEP - 1] = {0x16, 0x15, 0x30, 0x15, 0x24}, + [SPECIES_FLAAFFY - 1] = {0x19, 0x12, 0x30, 0x18, 0x21}, + [SPECIES_AMPHAROS - 1] = {0x0f, 0x0a, 0x30, 0x10, 0x1b}, + [SPECIES_BELLOSSOM - 1] = {0x1f, 0x13, 0x30, 0x1f, 0x20}, + [SPECIES_MARILL - 1] = {0x1d, 0x15, 0x30, 0x1d, 0x22}, + [SPECIES_AZUMARILL - 1] = {0x1a, 0x12, 0x30, 0x17, 0x1f}, + [SPECIES_SUDOWOODO - 1] = {0x20, 0x10, 0x30, 0x20, 0x1f}, + [SPECIES_POLITOED - 1] = {0x1d, 0x0f, 0x30, 0x1e, 0x20}, + [SPECIES_HOPPIP - 1] = {0x23, 0x25, 0x08, 0x25, 0x33}, + [SPECIES_SKIPLOOM - 1] = {0x1e, 0x18, 0x08, 0x1c, 0x27}, + [SPECIES_JUMPLUFF - 1] = {0x1d, 0x21, 0x08, 0x20, 0x2f}, + [SPECIES_AIPOM - 1] = {0x1e, 0x29, 0x18, 0x1e, 0x35}, + [SPECIES_SUNKERN - 1] = {0x1f, 0x20, 0x08, 0x24, 0x2e}, + [SPECIES_SUNFLORA - 1] = {0x1c, 0x0c, 0x30, 0x1b, 0x19}, + [SPECIES_YANMA - 1] = {0x1b, 0x28, 0x08, 0x16, 0x35}, + [SPECIES_WOOPER - 1] = {0x1d, 0x13, 0x30, 0x1f, 0x21}, + [SPECIES_QUAGSIRE - 1] = {0x15, 0x09, 0x30, 0x12, 0x18}, + [SPECIES_ESPEON - 1] = {0x11, 0x1b, 0x30, 0x11, 0x29}, + [SPECIES_UMBREON - 1] = {0x23, 0x15, 0x30, 0x23, 0x22}, + [SPECIES_MURKROW - 1] = {0x24, 0x13, 0x30, 0x20, 0x22}, + [SPECIES_SLOWKING - 1] = {0x1e, 0x13, 0x28, 0x1d, 0x25}, + [SPECIES_MISDREAVUS - 1] = {0x28, 0x21, 0x08, 0x26, 0x2e}, + [SPECIES_UNOWN - 1] = {0x20, 0x17, 0x08, 0x1f, 0x21}, + [SPECIES_WOBBUFFET - 1] = {0x1d, 0x09, 0x30, 0x1d, 0x1a}, + [SPECIES_GIRAFARIG - 1] = {0x0b, 0x0d, 0x28, 0x11, 0x1d}, + [SPECIES_PINECO - 1] = {0x1d, 0x12, 0x10, 0x19, 0x25}, + [SPECIES_FORRETRESS - 1] = {0x19, 0x17, 0x08, 0x1e, 0x26}, + [SPECIES_DUNSPARCE - 1] = {0x10, 0x1b, 0x30, 0x0c, 0x2d}, + [SPECIES_GLIGAR - 1] = {0x1e, 0x13, 0x08, 0x1d, 0x23}, + [SPECIES_STEELIX - 1] = {0x0c, 0x0d, 0x28, 0x0d, 0x1c}, + [SPECIES_SNUBBULL - 1] = {0x1b, 0x15, 0x30, 0x1a, 0x23}, + [SPECIES_GRANBULL - 1] = {0x1c, 0x09, 0x30, 0x19, 0x18}, + [SPECIES_QWILFISH - 1] = {0x1f, 0x26, 0x20, 0x1d, 0x33}, + [SPECIES_SCIZOR - 1] = {0x15, 0x0f, 0x10, 0x1a, 0x1a}, + [SPECIES_SHUCKLE - 1] = {0x25, 0x0a, 0x30, 0x24, 0x18}, + [SPECIES_HERACROSS - 1] = {0x18, 0x19, 0x28, 0x1a, 0x26}, + [SPECIES_SNEASEL - 1] = {0x1c, 0x13, 0x30, 0x1d, 0x24}, + [SPECIES_TEDDIURSA - 1] = {0x1e, 0x12, 0x30, 0x1b, 0x23}, + [SPECIES_URSARING - 1] = {0x1e, 0x04, 0x28, 0x1d, 0x14}, + [SPECIES_SLUGMA - 1] = {0x20, 0x18, 0x30, 0x20, 0x28}, + [SPECIES_MAGCARGO - 1] = {0x16, 0x11, 0x30, 0x17, 0x23}, + [SPECIES_SWINUB - 1] = {0x1c, 0x18, 0x30, 0x1b, 0x25}, + [SPECIES_PILOSWINE - 1] = {0x18, 0x23, 0x20, 0x18, 0x36}, + [SPECIES_CORSOLA - 1] = {0x19, 0x1d, 0x28, 0x19, 0x2b}, + [SPECIES_REMORAID - 1] = {0x15, 0x1f, 0x28, 0x13, 0x2b}, + [SPECIES_OCTILLERY - 1] = {0x1c, 0x11, 0x30, 0x1a, 0x20}, + [SPECIES_DELIBIRD - 1] = {0x1d, 0x11, 0x30, 0x1b, 0x1f}, + [SPECIES_MANTINE - 1] = {0x16, 0x1e, 0x28, 0x1f, 0x27}, + [SPECIES_SKARMORY - 1] = {0x1e, 0x00, 0x28, 0x13, 0x07}, + [SPECIES_HOUNDOUR - 1] = {0x25, 0x11, 0x30, 0x25, 0x1f}, + [SPECIES_HOUNDOOM - 1] = {0x0d, 0x13, 0x30, 0x0d, 0x24}, + [SPECIES_KINGDRA - 1] = {0x0e, 0x13, 0x28, 0x0a, 0x2c}, + [SPECIES_PHANPY - 1] = {0x1b, 0x11, 0x30, 0x19, 0x24}, + [SPECIES_DONPHAN - 1] = {0x11, 0x15, 0x30, 0x19, 0x2c}, + [SPECIES_PORYGON2 - 1] = {0x18, 0x11, 0x30, 0x11, 0x20}, + [SPECIES_STANTLER - 1] = {0x15, 0x15, 0x28, 0x17, 0x28}, + [SPECIES_SMEARGLE - 1] = {0x18, 0x10, 0x30, 0x1b, 0x25}, + [SPECIES_TYROGUE - 1] = {0x1e, 0x12, 0x30, 0x1f, 0x1f}, + [SPECIES_HITMONTOP - 1] = {0x1a, 0x39, 0x10, 0x1a, 0x2b}, + [SPECIES_SMOOCHUM - 1] = {0x20, 0x18, 0x30, 0x21, 0x26}, + [SPECIES_ELEKID - 1] = {0x1d, 0x14, 0x30, 0x1d, 0x23}, + [SPECIES_MAGBY - 1] = {0x1c, 0x15, 0x30, 0x1a, 0x24}, + [SPECIES_MILTANK - 1] = {0x18, 0x0e, 0x30, 0x18, 0x1e}, + [SPECIES_BLISSEY - 1] = {0x1d, 0x09, 0x30, 0x1d, 0x19}, + [SPECIES_RAIKOU - 1] = {0x29, 0x0c, 0x28, 0x27, 0x1e}, + [SPECIES_ENTEI - 1] = {0x08, 0x09, 0x28, 0x0b, 0x18}, + [SPECIES_SUICUNE - 1] = {0x23, 0x1d, 0x28, 0x26, 0x2c}, + [SPECIES_LARVITAR - 1] = {0x1c, 0x18, 0x30, 0x1a, 0x24}, + [SPECIES_PUPITAR - 1] = {0x1b, 0x19, 0x30, 0x1b, 0x28}, + [SPECIES_TYRANITAR - 1] = {0x06, 0x0b, 0x28, 0x0d, 0x19}, + [SPECIES_LUGIA - 1] = {0x08, 0x2a, 0x08, 0x14, 0x34}, + [SPECIES_HO_OH - 1] = {0x0d, 0x25, 0x08, 0x0e, 0x34}, + [SPECIES_CELEBI - 1] = {0x15, 0x21, 0x08, 0x1a, 0x2b}, + [SPECIES_OLD_UNOWN_B - 1] = {0x1f, 0x12, 0x08, 0x1e, 0x1c}, + [SPECIES_OLD_UNOWN_C - 1] = {0x20, 0x17, 0x08, 0x1f, 0x21}, + [SPECIES_OLD_UNOWN_D - 1] = {0x1c, 0x19, 0x08, 0x1b, 0x23}, + [SPECIES_OLD_UNOWN_E - 1] = {0x21, 0x19, 0x08, 0x20, 0x23}, + [SPECIES_OLD_UNOWN_F - 1] = {0x1b, 0x13, 0x08, 0x1a, 0x1d}, + [SPECIES_OLD_UNOWN_G - 1] = {0x20, 0x16, 0x08, 0x1f, 0x21}, + [SPECIES_OLD_UNOWN_H - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, + [SPECIES_OLD_UNOWN_I - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, + [SPECIES_OLD_UNOWN_J - 1] = {0x20, 0x16, 0x08, 0x1f, 0x20}, + [SPECIES_OLD_UNOWN_K - 1] = {0x1d, 0x1a, 0x08, 0x1c, 0x24}, + [SPECIES_OLD_UNOWN_L - 1] = {0x20, 0x16, 0x08, 0x1f, 0x1f}, + [SPECIES_OLD_UNOWN_M - 1] = {0x20, 0x1c, 0x08, 0x1f, 0x26}, + [SPECIES_OLD_UNOWN_N - 1] = {0x20, 0x1a, 0x08, 0x1f, 0x23}, + [SPECIES_OLD_UNOWN_O - 1] = {0x20, 0x1a, 0x08, 0x1f, 0x23}, + [SPECIES_OLD_UNOWN_P - 1] = {0x20, 0x16, 0x08, 0x1f, 0x20}, + [SPECIES_OLD_UNOWN_Q - 1] = {0x1d, 0x16, 0x08, 0x1c, 0x20}, + [SPECIES_OLD_UNOWN_R - 1] = {0x20, 0x15, 0x08, 0x1f, 0x1f}, + [SPECIES_OLD_UNOWN_S - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, + [SPECIES_OLD_UNOWN_T - 1] = {0x20, 0x1e, 0x08, 0x1f, 0x28}, + [SPECIES_OLD_UNOWN_U - 1] = {0x20, 0x17, 0x08, 0x1f, 0x21}, + [SPECIES_OLD_UNOWN_V - 1] = {0x1e, 0x1e, 0x08, 0x1d, 0x28}, + [SPECIES_OLD_UNOWN_W - 1] = {0x20, 0x1d, 0x08, 0x1f, 0x27}, + [SPECIES_OLD_UNOWN_X - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, + [SPECIES_OLD_UNOWN_Y - 1] = {0x20, 0x15, 0x08, 0x1f, 0x1f}, + [SPECIES_OLD_UNOWN_Z - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23}, + [SPECIES_TREECKO - 1] = {0x1a, 0x0f, 0x30, 0x19, 0x20}, + [SPECIES_GROVYLE - 1] = {0x0d, 0x05, 0x10, 0x05, 0x13}, + [SPECIES_SCEPTILE - 1] = {0x10, 0x04, 0x28, 0x0c, 0x12}, + [SPECIES_TORCHIC - 1] = {0x17, 0x18, 0x30, 0x15, 0x25}, + [SPECIES_COMBUSKEN - 1] = {0x20, 0x12, 0x28, 0x1e, 0x20}, + [SPECIES_BLAZIKEN - 1] = {0x1a, 0x07, 0x28, 0x1d, 0x13}, + [SPECIES_MUDKIP - 1] = {0x1b, 0x1d, 0x28, 0x19, 0x2c}, + [SPECIES_MARSHTOMP - 1] = {0x1d, 0x11, 0x30, 0x1c, 0x20}, + [SPECIES_SWAMPERT - 1] = {0x1b, 0x11, 0x28, 0x1b, 0x23}, + [SPECIES_POOCHYENA - 1] = {0x14, 0x12, 0x30, 0x0f, 0x20}, + [SPECIES_MIGHTYENA - 1] = {0x09, 0x0d, 0x28, 0x09, 0x1c}, + [SPECIES_ZIGZAGOON - 1] = {0x0b, 0x1a, 0x30, 0x09, 0x2b}, + [SPECIES_LINOONE - 1] = {0x0d, 0x28, 0x18, 0x0b, 0x37}, + [SPECIES_WURMPLE - 1] = {0x21, 0x17, 0x30, 0x1f, 0x26}, + [SPECIES_SILCOON - 1] = {0x13, 0x1c, 0x30, 0x11, 0x2a}, + [SPECIES_BEAUTIFLY - 1] = {0x0f, 0x1b, 0x08, 0x0e, 0x28}, + [SPECIES_CASCOON - 1] = {0x14, 0x1d, 0x30, 0x11, 0x2c}, + [SPECIES_DUSTOX - 1] = {0x14, 0x19, 0x08, 0x16, 0x26}, + [SPECIES_LOTAD - 1] = {0x19, 0x25, 0x28, 0x17, 0x32}, + [SPECIES_LOMBRE - 1] = {0x22, 0x10, 0x30, 0x29, 0x1d}, + [SPECIES_LUDICOLO - 1] = {0x1c, 0x0f, 0x28, 0x1b, 0x24}, + [SPECIES_SEEDOT - 1] = {0x1b, 0x17, 0x30, 0x18, 0x28}, + [SPECIES_NUZLEAF - 1] = {0x20, 0x0d, 0x30, 0x1a, 0x1d}, + [SPECIES_SHIFTRY - 1] = {0x32, 0x11, 0x28, 0x2e, 0x23}, + [SPECIES_NINCADA - 1] = {0x18, 0x1a, 0x30, 0x17, 0x28}, + [SPECIES_NINJASK - 1] = {0x17, 0x21, 0x00, 0x17, 0x2f}, + [SPECIES_SHEDINJA - 1] = {0x16, 0x19, 0x08, 0x18, 0x2a}, + [SPECIES_TAILLOW - 1] = {0x17, 0x10, 0x30, 0x14, 0x1e}, + [SPECIES_SWELLOW - 1] = {0x0c, 0x0a, 0x28, 0x05, 0x16}, + [SPECIES_SHROOMISH - 1] = {0x1f, 0x16, 0x30, 0x1d, 0x23}, + [SPECIES_BRELOOM - 1] = {0x25, 0x0c, 0x30, 0x23, 0x19}, + [SPECIES_SPINDA - 1] = {0x21, 0x16, 0x30, 0x1f, 0x27}, + [SPECIES_WINGULL - 1] = {0x1a, 0x16, 0x10, 0x15, 0x26}, + [SPECIES_PELIPPER - 1] = {0x1d, 0x0a, 0x10, 0x09, 0x1b}, + [SPECIES_SURSKIT - 1] = {0x1d, 0x16, 0x30, 0x1c, 0x25}, + [SPECIES_MASQUERAIN - 1] = {0x1a, 0x21, 0x08, 0x14, 0x30}, + [SPECIES_WAILMER - 1] = {0x17, 0x17, 0x30, 0x16, 0x28}, + [SPECIES_WAILORD - 1] = {0x17, 0x03, 0x30, 0x09, 0x13}, + [SPECIES_SKITTY - 1] = {0x24, 0x1a, 0x30, 0x22, 0x2a}, + [SPECIES_DELCATTY - 1] = {0x1e, 0x12, 0x30, 0x1c, 0x21}, + [SPECIES_KECLEON - 1] = {0x19, 0x10, 0x30, 0x13, 0x1e}, + [SPECIES_BALTOY - 1] = {0x1d, 0x15, 0x30, 0x1b, 0x22}, + [SPECIES_CLAYDOL - 1] = {0x1e, 0x0d, 0x28, 0x1d, 0x24}, + [SPECIES_NOSEPASS - 1] = {0x1f, 0x10, 0x30, 0x15, 0x23}, + [SPECIES_TORKOAL - 1] = {0x0e, 0x19, 0x28, 0x0a, 0x27}, + [SPECIES_SABLEYE - 1] = {0x1e, 0x16, 0x30, 0x1d, 0x27}, + [SPECIES_BARBOACH - 1] = {0x17, 0x12, 0x30, 0x15, 0x1e}, + [SPECIES_WHISCASH - 1] = {0x18, 0x20, 0x28, 0x17, 0x31}, + [SPECIES_LUVDISC - 1] = {0x19, 0x0f, 0x30, 0x13, 0x1c}, + [SPECIES_CORPHISH - 1] = {0x1f, 0x14, 0x30, 0x1d, 0x23}, + [SPECIES_CRAWDAUNT - 1] = {0x14, 0x0c, 0x28, 0x18, 0x23}, + [SPECIES_FEEBAS - 1] = {0x18, 0x1e, 0x28, 0x16, 0x2f}, + [SPECIES_MILOTIC - 1] = {0x20, 0x0c, 0x28, 0x1f, 0x1d}, + [SPECIES_CARVANHA - 1] = {0x16, 0x19, 0x30, 0x13, 0x22}, + [SPECIES_SHARPEDO - 1] = {0x19, 0x0c, 0x28, 0x17, 0x27}, + [SPECIES_TRAPINCH - 1] = {0x29, 0x13, 0x30, 0x17, 0x18}, + [SPECIES_VIBRAVA - 1] = {0x10, 0x27, 0x20, 0x0e, 0x34}, + [SPECIES_FLYGON - 1] = {0x22, 0x07, 0x10, 0x21, 0x13}, + [SPECIES_MAKUHITA - 1] = {0x22, 0x13, 0x30, 0x1c, 0x23}, + [SPECIES_HARIYAMA - 1] = {0x24, 0x0f, 0x28, 0x26, 0x1c}, + [SPECIES_ELECTRIKE - 1] = {0x11, 0x18, 0x30, 0x14, 0x27}, + [SPECIES_MANECTRIC - 1] = {0x2f, 0x18, 0x28, 0x2e, 0x29}, + [SPECIES_NUMEL - 1] = {0x10, 0x1a, 0x30, 0x0d, 0x2a}, + [SPECIES_CAMERUPT - 1] = {0x0d, 0x22, 0x28, 0x0e, 0x36}, + [SPECIES_SPHEAL - 1] = {0x1e, 0x0f, 0x30, 0x18, 0x1f}, + [SPECIES_SEALEO - 1] = {0x1c, 0x09, 0x30, 0x1a, 0x18}, + [SPECIES_WALREIN - 1] = {0x19, 0x01, 0x28, 0x10, 0x16}, + [SPECIES_CACNEA - 1] = {0x1f, 0x17, 0x30, 0x1d, 0x29}, + [SPECIES_CACTURNE - 1] = {0x1d, 0x0e, 0x28, 0x1d, 0x1b}, + [SPECIES_SNORUNT - 1] = {0x1e, 0x16, 0x30, 0x1e, 0x26}, + [SPECIES_GLALIE - 1] = {0x1a, 0x1c, 0x08, 0x1a, 0x31}, + [SPECIES_LUNATONE - 1] = {0x1c, 0x16, 0x08, 0x19, 0x2c}, + [SPECIES_SOLROCK - 1] = {0x18, 0x18, 0x10, 0x17, 0x31}, + [SPECIES_AZURILL - 1] = {0x1b, 0x10, 0x30, 0x18, 0x1f}, + [SPECIES_SPOINK - 1] = {0x21, 0x14, 0x30, 0x1b, 0x28}, + [SPECIES_GRUMPIG - 1] = {0x14, 0x10, 0x30, 0x15, 0x20}, + [SPECIES_PLUSLE - 1] = {0x1c, 0x16, 0x08, 0x1d, 0x25}, + [SPECIES_MINUN - 1] = {0x21, 0x16, 0x08, 0x1f, 0x26}, + [SPECIES_MAWILE - 1] = {0x2d, 0x14, 0x30, 0x2f, 0x24}, + [SPECIES_MEDITITE - 1] = {0x1f, 0x17, 0x30, 0x1e, 0x25}, + [SPECIES_MEDICHAM - 1] = {0x21, 0x0f, 0x28, 0x1e, 0x1d}, + [SPECIES_SWABLU - 1] = {0x1b, 0x16, 0x10, 0x17, 0x23}, + [SPECIES_ALTARIA - 1] = {0x1d, 0x0b, 0x10, 0x1a, 0x1a}, + [SPECIES_WYNAUT - 1] = {0x1a, 0x15, 0x30, 0x1b, 0x26}, + [SPECIES_DUSKULL - 1] = {0x10, 0x18, 0x08, 0x14, 0x2e}, + [SPECIES_DUSCLOPS - 1] = {0x1c, 0x0f, 0x30, 0x1a, 0x28}, + [SPECIES_ROSELIA - 1] = {0x1e, 0x11, 0x30, 0x1d, 0x20}, + [SPECIES_SLAKOTH - 1] = {0x19, 0x1e, 0x30, 0x18, 0x2f}, + [SPECIES_VIGOROTH - 1] = {0x10, 0x12, 0x28, 0x14, 0x24}, + [SPECIES_SLAKING - 1] = {0x37, 0x0f, 0x30, 0x29, 0x21}, + [SPECIES_GULPIN - 1] = {0x1b, 0x18, 0x30, 0x17, 0x26}, + [SPECIES_SWALOT - 1] = {0x1f, 0x06, 0x30, 0x15, 0x13}, + [SPECIES_TROPIUS - 1] = {0x18, 0x0a, 0x28, 0x20, 0x18}, + [SPECIES_WHISMUR - 1] = {0x1f, 0x19, 0x30, 0x1d, 0x29}, + [SPECIES_LOUDRED - 1] = {0x1c, 0x12, 0x28, 0x22, 0x27}, + [SPECIES_EXPLOUD - 1] = {0x10, 0x10, 0x28, 0x1a, 0x2a}, + [SPECIES_CLAMPERL - 1] = {0x20, 0x1a, 0x30, 0x1e, 0x26}, + [SPECIES_HUNTAIL - 1] = {0x13, 0x1e, 0x28, 0x15, 0x33}, + [SPECIES_GOREBYSS - 1] = {0x0d, 0x1f, 0x28, 0x03, 0x32}, + [SPECIES_ABSOL - 1] = {0x2a, 0x11, 0x28, 0x2a, 0x22}, + [SPECIES_SHUPPET - 1] = {0x16, 0x19, 0x08, 0x17, 0x27}, + [SPECIES_BANETTE - 1] = {0x1c, 0x14, 0x08, 0x1b, 0x23}, + [SPECIES_SEVIPER - 1] = {0x0e, 0x0d, 0x30, 0x0b, 0x1e}, + [SPECIES_ZANGOOSE - 1] = {0x18, 0x0c, 0x28, 0x15, 0x1a}, + [SPECIES_RELICANTH - 1] = {0x0c, 0x1f, 0x30, 0x09, 0x2d}, + [SPECIES_ARON - 1] = {0x18, 0x1c, 0x30, 0x1a, 0x2c}, + [SPECIES_LAIRON - 1] = {0x0b, 0x21, 0x30, 0x12, 0x2f}, + [SPECIES_AGGRON - 1] = {0x10, 0x0b, 0x28, 0x16, 0x1b}, + [SPECIES_CASTFORM - 1] = {0x1d, 0x18, 0x08, 0x1b, 0x26}, + [SPECIES_VOLBEAT - 1] = {0x25, 0x15, 0x08, 0x21, 0x25}, + [SPECIES_ILLUMISE - 1] = {0x20, 0x12, 0x08, 0x1f, 0x20}, + [SPECIES_LILEEP - 1] = {0x1e, 0x11, 0x30, 0x1f, 0x1e}, + [SPECIES_CRADILY - 1] = {0x12, 0x16, 0x28, 0x15, 0x28}, + [SPECIES_ANORITH - 1] = {0x1c, 0x1e, 0x30, 0x1b, 0x2b}, + [SPECIES_ARMALDO - 1] = {0x15, 0x05, 0x28, 0x14, 0x13}, + [SPECIES_RALTS - 1] = {0x1f, 0x17, 0x30, 0x20, 0x23}, + [SPECIES_KIRLIA - 1] = {0x1c, 0x12, 0x30, 0x1f, 0x1e}, + [SPECIES_GARDEVOIR - 1] = {0x35, 0x07, 0x28, 0x32, 0x14}, + [SPECIES_BAGON - 1] = {0x17, 0x13, 0x30, 0x16, 0x26}, + [SPECIES_SHELGON - 1] = {0x19, 0x1b, 0x30, 0x19, 0x2c}, + [SPECIES_SALAMENCE - 1] = {0x09, 0x11, 0x30, 0x0a, 0x21}, + [SPECIES_BELDUM - 1] = {0x16, 0x19, 0x08, 0x18, 0x23}, + [SPECIES_METANG - 1] = {0x22, 0x0f, 0x10, 0x1f, 0x21}, + [SPECIES_METAGROSS - 1] = {0x24, 0x1b, 0x28, 0x22, 0x2b}, + [SPECIES_REGIROCK - 1] = {0x16, 0x07, 0x28, 0x14, 0x12}, + [SPECIES_REGICE - 1] = {0x19, 0x0c, 0x28, 0x17, 0x19}, + [SPECIES_REGISTEEL - 1] = {0x19, 0x0d, 0x28, 0x19, 0x19}, + [SPECIES_KYOGRE - 1] = {0x0e, 0x19, 0x28, 0x0b, 0x26}, + [SPECIES_GROUDON - 1] = {0x04, 0x0b, 0x28, 0x0a, 0x19}, + [SPECIES_RAYQUAZA - 1] = {0x0c, 0x0e, 0x10, 0x0e, 0x1f}, + [SPECIES_LATIAS - 1] = {0x1e, 0x0c, 0x10, 0x23, 0x19}, + [SPECIES_LATIOS - 1] = {0x05, 0x0e, 0x10, 0x05, 0x1d}, + [SPECIES_JIRACHI - 1] = {0x1c, 0x15, 0x08, 0x1e, 0x22}, #if defined(FIRERED) - [SPECIES_DEOXYS - 1] = {0x1b, 0x08, 0x28, 0x1c, 0x16}, + [SPECIES_DEOXYS - 1] = {0x1b, 0x08, 0x28, 0x1c, 0x16}, #elif defined(LEAFGREEN) - [SPECIES_DEOXYS - 1] = {0x1a, 0x09, 0x28, 0x1a, 0x17}, + [SPECIES_DEOXYS - 1] = {0x1a, 0x09, 0x28, 0x1a, 0x17}, #endif - [SPECIES_CHIMECHO - 1] = {0x1d, 0x0c, 0x08, 0x1c, 0x1a}, + [SPECIES_CHIMECHO - 1] = {0x1d, 0x0c, 0x08, 0x1c, 0x1a}, [SPECIES_OLD_UNOWN_EMARK - 1] = {0x20, 0x21, 0x08, 0x20, 0x2b}, [SPECIES_OLD_UNOWN_QMARK - 1] = {0x20, 0x23, 0x08, 0x20, 0x2d} }; @@ -635,7 +635,7 @@ static void Task_SmoothBlendLayers(u8 taskId) } } -u8 sub_812EA78(u16 species, u32 personality, u8 a2) +u8 Menu2_GetMonSpriteAnchorCoord(u16 species, u32 personality, u8 a2) { if (species == SPECIES_UNOWN) { @@ -658,13 +658,13 @@ u8 sub_812EA78(u16 species, u32 personality, u8 a2) if (species != SPECIES_NONE && a2 < 5) { species--; - if (gUnknown_845FD54[species][a2] != 0xFF) - return gUnknown_845FD54[species][a2]; + if (sMonSpriteAnchorCoords[species][a2] != 0xFF) + return sMonSpriteAnchorCoords[species][a2]; } return 32; } -s8 sub_812EAE4(u16 species, u32 personality, u8 a2) +s8 Menu2_GetMonSpriteAnchorCoordMinusx20(u16 species, u32 personality, u8 a2) { - return sub_812EA78(species, personality, a2) - 32; + return Menu2_GetMonSpriteAnchorCoord(species, personality, a2) - 32; } diff --git a/src/party_menu.c b/src/party_menu.c index 5d7026807..5ceeb2c3b 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -4309,7 +4309,7 @@ static void sub_8124DE0(void) static void sub_8124E48(void) { if (ItemId_GetPocket(gSpecialVar_ItemId) == POCKET_TM_CASE - && PSA_IsCancelDisabled() == 1) + && PSA_IsCancelDisabled() == TRUE) { GiveMoveToMon(&gPlayerParty[gPartyMenu.slotId], ItemIdToBattleMoveId(gSpecialVar_ItemId)); AdjustFriendship(&gPlayerParty[gPartyMenu.slotId], 4); @@ -4325,7 +4325,7 @@ static void sub_8124E48(void) static void sub_8124EFC(void) { - if (PSA_IsCancelDisabled() == 1) + if (PSA_IsCancelDisabled() == TRUE) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; u8 moveIdx = GetMoveSlotToReplace(); diff --git a/src/pokemon_special_anim.c b/src/pokemon_special_anim.c index 5cc13b9c5..f05b93c54 100644 --- a/src/pokemon_special_anim.c +++ b/src/pokemon_special_anim.c @@ -15,14 +15,14 @@ static EWRAM_DATA bool32 sCancelDisabled = FALSE; static EWRAM_DATA u8 sPSATaskId = 0; static EWRAM_DATA struct PokemonSpecialAnim * sPSAWork = NULL; -struct PokemonSpecialAnim * AllocPSA(u8 slotId, u16 itemId, MainCallback callback); +static struct PokemonSpecialAnim * AllocPSA(u8 slotId, u16 itemId, MainCallback callback); static void SetUpUseItemAnim_Normal(struct PokemonSpecialAnim * ptr); static void SetUpUseItemAnim_ForgetMoveAndLearnTMorHM(struct PokemonSpecialAnim * ptr); static void SetUpUseItemAnim_CantEvolve(struct PokemonSpecialAnim * ptr); -static void sub_811C834(u8 taskId); +static void Task_UseItem_Normal(u8 taskId); static void Task_ForgetMove(u8 taskId); -static void sub_811CBE4(u8 taskId); -static void sub_811CD68(u8 taskId); +static void Task_EvoStone_CantEvolve(u8 taskId); +static void Task_UseTM_NoForget(u8 taskId); static void Task_MachineSet(u8 taskId); static void Task_CleanUp(u8 taskId); static u8 GetClosenessFromFriendship(u16 friendship); @@ -58,7 +58,7 @@ void StartUseItemAnim_CantEvolve(u8 slotId, u16 itemId, MainCallback callback) SetUpUseItemAnim_CantEvolve(ptr); } -struct PokemonSpecialAnim * AllocPSA(u8 slotId, u16 itemId, MainCallback callback) +static struct PokemonSpecialAnim * AllocPSA(u8 slotId, u16 itemId, MainCallback callback) { struct PokemonSpecialAnim * ptr; struct Pokemon * pokemon; @@ -125,10 +125,10 @@ static void SetUpUseItemAnim_Normal(struct PokemonSpecialAnim * ptr) case 0: case 1: case 3: - taskId = CreateTask(sub_811C834, 0); + taskId = CreateTask(Task_UseItem_Normal, 0); break; case 4: - taskId = CreateTask(sub_811CD68, 0); + taskId = CreateTask(Task_UseTM_NoForget, 0); break; default: SetMainCallback2(ptr->savedCallback); @@ -152,28 +152,28 @@ static void SetUpUseItemAnim_ForgetMoveAndLearnTMorHM(struct PokemonSpecialAnim static void SetUpUseItemAnim_CantEvolve(struct PokemonSpecialAnim * ptr) { - u8 taskId = CreateTask(sub_811CBE4, 0); + u8 taskId = CreateTask(Task_EvoStone_CantEvolve, 0); SetWordTaskArg(taskId, 0, (uintptr_t)ptr); SetMainCallback2(CB2_PSA); sPSATaskId = taskId; } -static void sub_811C834(u8 taskId) +static void Task_UseItem_Normal(u8 taskId) { struct PokemonSpecialAnim * ptr = (void *)GetWordTaskArg(taskId, 0); if (!ptr->cancelDisabled && JOY_HELD(A_BUTTON | B_BUTTON)) { - sub_811E040(); + PSA_UseItem_CleanUpForCancel(); SetUseItemAnimCallback(taskId, Task_CleanUp); return; } - + switch (ptr->state) { case 0: SetVBlankCallback(NULL); InitPokemonSpecialAnimScene(&ptr->sceneResources, ptr->animType); - sub_811D830(0); + PSA_CreateMonSpriteAtCloseness(0); ptr->state++; break; case 1: @@ -195,31 +195,31 @@ static void sub_811C834(u8 taskId) ptr->state++; break; case 4: - if (!sub_811D9A8()) + if (!PSA_IsZoomTaskActive()) { - ptr->field_009e = 0; + ptr->delayTimer = 0; ptr->state++; } break; case 5: - if (!sub_811D754()) + if (!PSA_LevelUpVerticalSpritesTaskIsRunning()) { ptr->state++; } break; case 6: - PSA_SetUpZoomOutMonTask(ptr->itemId, ptr->closeness, TRUE); + PSA_SetUpItemUseOnMonAnim(ptr->itemId, ptr->closeness, TRUE); ptr->state++; break; case 7: - if (!PSA_IsZoomOutMonTaskRunning()) + if (!PSA_IsItemUseOnMonAnimActive()) { ptr->cancelDisabled = TRUE; if (ptr->closeness == 3) { PlayCry1(ptr->species, 0); } - sub_811D2A8(); + PSA_ShowMessageWindow(); ptr->state++; } break; @@ -238,7 +238,7 @@ static void sub_811C834(u8 taskId) ptr->state++; break; case 11: - if (!sub_811D9A8()) + if (!PSA_IsZoomTaskActive()) { ptr->cancelDisabled = TRUE; ptr->state++; @@ -283,7 +283,7 @@ static void Task_ForgetMove(u8 taskId) case 0: SetVBlankCallback(NULL); InitPokemonSpecialAnimScene(&ptr->sceneResources, ptr->animType); - sub_811D830(3); + PSA_CreateMonSpriteAtCloseness(3); ptr->state++; break; case 1: @@ -297,15 +297,15 @@ static void Task_ForgetMove(u8 taskId) case 2: if (!gPaletteFade.active) { - ptr->field_009e = 0; + ptr->delayTimer = 0; ptr->state++; } break; case 3: - ptr->field_009e++; - if (ptr->field_009e > 30) + ptr->delayTimer++; + if (ptr->delayTimer > 30) { - sub_811D2A8(); + PSA_ShowMessageWindow(); ptr->state++; } break; @@ -316,13 +316,13 @@ static void Task_ForgetMove(u8 taskId) case 5: if (!PSA_IsMessagePrintTaskActive()) { - ptr->field_009e = 0; + ptr->delayTimer = 0; ptr->state++; } break; case 6: - ptr->field_009e++; - if (ptr->field_009e > 30) + ptr->delayTimer++; + if (ptr->delayTimer > 30) { PSA_PrintMessage(PSA_TEXT_FORGET_2_AND); ptr->state++; @@ -331,25 +331,25 @@ static void Task_ForgetMove(u8 taskId) case 7: if (!PSA_IsMessagePrintTaskActive()) { - ptr->field_009e = 0; + ptr->delayTimer = 0; ptr->state++; } break; case 8: - ptr->field_009e++; - if (ptr->field_009e > 30) + ptr->delayTimer++; + if (ptr->delayTimer > 30) { PlaySE(SE_W255); PSA_PrintMessage(PSA_TEXT_FORGET_POOF); - sub_811D4FC(); + PSA_DarkenMonSprite(); ptr->state++; } break; case 9: - r4 = sub_811D530(); + r4 = PSA_RunPoofAnim(); if (!(r4 | PSA_IsMessagePrintTaskActive())) { - sub_811D4D4(); + PSA_AfterPoof_ClearMessageWindow(); ptr->state++; } break; @@ -367,7 +367,7 @@ static void Task_ForgetMove(u8 taskId) case 12: if (!PSA_IsMessagePrintTaskActive()) { - sub_811D2D0(); + PSA_HideMessageWindow(); ptr->state++; } break; @@ -377,7 +377,7 @@ static void Task_ForgetMove(u8 taskId) } } -static void sub_811CBE4(u8 taskId) +static void Task_EvoStone_CantEvolve(u8 taskId) { struct PokemonSpecialAnim * ptr = (void *)GetWordTaskArg(taskId, 0); @@ -392,7 +392,7 @@ static void sub_811CBE4(u8 taskId) case 0: SetVBlankCallback(NULL); InitPokemonSpecialAnimScene(&ptr->sceneResources, ptr->animType); - sub_811D830(0); + PSA_CreateMonSpriteAtCloseness(0); ptr->state++; break; case 1: @@ -414,13 +414,13 @@ static void sub_811CBE4(u8 taskId) ptr->state++; break; case 4: - PSA_SetUpZoomOutMonTask(ptr->itemId, ptr->closeness, FALSE); + PSA_SetUpItemUseOnMonAnim(ptr->itemId, ptr->closeness, FALSE); ptr->state++; break; case 5: - if (!PSA_IsZoomOutMonTaskRunning()) + if (!PSA_IsItemUseOnMonAnimActive()) { - sub_811D2A8(); + PSA_ShowMessageWindow(); ptr->state++; } break; @@ -454,7 +454,7 @@ static void sub_811CBE4(u8 taskId) } } -static void sub_811CD68(u8 taskId) +static void Task_UseTM_NoForget(u8 taskId) { struct PokemonSpecialAnim * ptr = (void *)GetWordTaskArg(taskId, 0); @@ -469,7 +469,7 @@ static void sub_811CD68(u8 taskId) case 0: SetVBlankCallback(NULL); InitPokemonSpecialAnimScene(&ptr->sceneResources, ptr->animType); - sub_811D830(3); + PSA_CreateMonSpriteAtCloseness(3); ptr->state++; break; case 1: @@ -483,13 +483,13 @@ static void sub_811CD68(u8 taskId) case 2: if (!gPaletteFade.active) { - ptr->field_009e = 0; + ptr->delayTimer = 0; ptr->state++; } break; case 3: - ptr->field_009e++; - if (ptr->field_009e > 20) + ptr->delayTimer++; + if (ptr->delayTimer > 20) { SetUseItemAnimCallback(taskId, Task_MachineSet); } @@ -503,7 +503,7 @@ static void Task_MachineSet(u8 taskId) if (!ptr->cancelDisabled && JOY_NEW(B_BUTTON)) { - sub_811D5B0(); + PSA_UseTM_CleanUpForCancel(); SetUseItemAnimCallback(taskId, Task_CleanUp); return; } @@ -511,48 +511,48 @@ static void Task_MachineSet(u8 taskId) switch (ptr->state) { case 0: - sub_811DCF0(ptr->itemId); - ptr->field_009e = 0; + CreateItemIconSpriteAtMaxCloseness(ptr->itemId); + ptr->delayTimer = 0; ptr->state++; break; case 1: - sub_811D2A8(); + PSA_ShowMessageWindow(); PSA_PrintMessage(PSA_TEXT_MACHINE_SET); ptr->state++; break; case 2: if (!PSA_IsMessagePrintTaskActive()) { - sub_811D2D0(); + PSA_HideMessageWindow(); ptr->state++; } break; case 3: - sub_811D6EC(); + PSA_UseTM_SetUpMachineSetWobble(); ptr->state++; break; case 4: - if (!sub_811D6FC()) + if (!PSA_UseTM_RunMachineSetWobble()) { ptr->state++; } break; case 5: - sub_811D5A0(); + PSA_UseTM_SetUpZoomOutAnim(); ptr->state++; break; case 6: - if (!sub_811D5C0()) + if (!PSA_UseTM_RunZoomOutAnim()) { - ptr->field_009e = 0; + ptr->delayTimer = 0; ptr->state++; } break; case 7: - ptr->field_009e++; - if (ptr->field_009e > 30) + ptr->delayTimer++; + if (ptr->delayTimer > 30) { - sub_811D2A8(); + PSA_ShowMessageWindow(); PSA_PrintMessage(PSA_TEXT_LEARNED_MOVE); ptr->state++; } diff --git a/src/pokemon_special_anim_scene.c b/src/pokemon_special_anim_scene.c index 5a0bb8607..2d65c24a7 100644 --- a/src/pokemon_special_anim_scene.c +++ b/src/pokemon_special_anim_scene.c @@ -13,49 +13,49 @@ #include "trig.h" #include "constants/songs.h" -static void sub_811D7D4(u16 animType); -static void sub_811D9BC(u8 taskId); -static void sub_811DA9C(struct Sprite * sprite, u8 closeness); -static bool8 sub_811DAAC(struct Sprite * sprite); -static void sub_811DB14(struct Sprite * sprite, u8 closeness); -static void sub_811DB48(struct Sprite * sprite, u8 closeness); +static void LoadBgGfxByAnimType(u16 animType); +static void Task_ZoomAnim(u8 taskId); +static void SetSpriteWithCloseness(struct Sprite * sprite, u8 closeness); +static bool8 IsZoomSpriteCBActive(struct Sprite * sprite); +static void MonSpriteZoom_UpdateYPos(struct Sprite * sprite, u8 closeness); +static void ItemSpriteZoom_UpdateYPos(struct Sprite * sprite, u8 closeness); static void StartMonWiggleAnim(struct PokemonSpecialAnimScene * scene, u8 frameLen, u8 niter, u8 amplitude); static void StopMonWiggleAnim(struct PokemonSpecialAnimScene * scene); static void SpriteCallback_MonSpriteWiggle(struct Sprite * sprite); static void LoadMonSpriteGraphics(u16 *tilees, u16 *palette); -struct Sprite * PSA_CreateItemIconObject(u16 itemId); +static struct Sprite * PSA_CreateItemIconObject(u16 itemId); static u16 GetBlendColorByItemId(u16 itemId); -static void Task_ZoomOutMon(u8 taskId); +static void Task_ItemUseOnMonAnim(u8 taskId); static void CreateSprites_UseItem_OutwardSpiralDots(u8 taskId, s16 *data, struct Sprite * sprite); -static void sub_811DFC0(struct Sprite * sprite); -static void sub_811E06C(struct PokemonSpecialAnimScene * scene, struct Sprite * sprite, u8 closeness); -static void sub_811E10C(void); -static void sub_811E128(struct Sprite * sprite); -static bool8 sub_811E138(void); -static void sub_811E154(struct Sprite * sprite); -static void sub_811E194(u8 a0); -static void sub_811E204(struct PokemonSpecialAnimScene * scene); -static bool8 sub_811E2F4(void); -static void sub_811E300(struct Sprite * sprite); -static void sub_811E348(struct PokemonSpecialAnimScene * scene); -static void sub_811E388(void); -static void sub_811E3B4(u8 taskId); -static u16 sub_811E4EC(u8 taskId); +static void SpriteCB_OutwardSpiralDots(struct Sprite * sprite); +static void InitItemIconSpriteState(struct PokemonSpecialAnimScene * scene, struct Sprite * sprite, u8 closeness); +static void MachineSetWobbleInit(void); +static void MachineSetWobble_SetCB(struct Sprite * sprite); +static bool8 MachineSetWobbleCBIsRunning(void); +static void SpriteCB_MachineSetWobble(struct Sprite * sprite); +static void StartZoomOutAnimForUseTM(u8 closeness); +static void CreateStarSprites(struct PokemonSpecialAnimScene * scene); +static bool8 AnyStarSpritesActive(void); +static void SpriteCB_Star(struct Sprite * sprite); +static void PSAScene_SeedRandomInTask(struct PokemonSpecialAnimScene * scene); +static void StopMakingOutwardSpiralDots(void); +static void Task_UseItem_OutwardSpiralDots(u8 taskId); +static u16 PSAScene_RandomFromTask(u8 taskId); static void SpriteCallback_UseItem_OutwardSpiralDots(struct Sprite * sprite); -static void sub_811E588(void); -static bool32 sub_811E5A4(void); -static void sub_811E694(u8 taskId); -static void sub_811E710(u8 taskId, s16 *data); -static void sub_811E7B4(struct Sprite * sprite); - -static const u16 gUnknown_845963C[] = INCBIN_U16("graphics/pokemon_special_anim/unk_845963C.gbapal"); -static const u16 gUnknown_845965C[] = INCBIN_U16("graphics/pokemon_special_anim/unk_845965C.gbapal"); -static const u32 gUnknown_845967C[] = INCBIN_U32("graphics/pokemon_special_anim/unk_845967C.4bpp.lz"); -static const u32 gUnknown_845973C[] = INCBIN_U32("graphics/pokemon_special_anim/unk_845973C.bin.lz"); -static const u16 gUnknown_8459868[] = INCBIN_U16("graphics/pokemon_special_anim/unk_8459868.gbapal"); -static const u32 gUnknown_8459888[] = INCBIN_U32("graphics/pokemon_special_anim/unk_8459888.4bpp.lz"); -static const u16 gUnknown_84598A4[] = INCBIN_U16("graphics/pokemon_special_anim/unk_84598A4.gbapal"); -static const u32 gUnknown_84598C4[] = INCBIN_U32("graphics/pokemon_special_anim/unk_84598C4.4bpp.lz"); +static void LoadOutwardSpiralDotsGfx(void); +static bool32 IsOutwardSpiralDotsTaskRunning(void); +static void Task_LevelUpVerticalSprites(u8 taskId); +static void CreateLevelUpVerticalSprite(u8 taskId, s16 *data); +static void SpriteCB_LevelUpVertical(struct Sprite * sprite); + +static const u16 sBgPals_PSA_Any[] = INCBIN_U16("graphics/pokemon_special_anim/unk_845963C.gbapal"); +static const u16 sBgPals_PSA_Anim4[] = INCBIN_U16("graphics/pokemon_special_anim/unk_845965C.gbapal"); +static const u32 sBg3Tiles_PSA[] = INCBIN_U32("graphics/pokemon_special_anim/unk_845967C.4bpp.lz"); +static const u32 sBg3Map_PSA[] = INCBIN_U32("graphics/pokemon_special_anim/unk_845973C.bin.lz"); +static const u16 sSpritePals_LevelUpVertical[] = INCBIN_U16("graphics/pokemon_special_anim/unk_8459868.gbapal"); +static const u32 sSpriteTiles_LevelUpVertical[] = INCBIN_U32("graphics/pokemon_special_anim/unk_8459888.4bpp.lz"); +static const u16 sSpritePals_Star[] = INCBIN_U16("graphics/pokemon_special_anim/unk_84598A4.gbapal"); +static const u32 sSpriteTiles_Star[] = INCBIN_U32("graphics/pokemon_special_anim/unk_84598C4.4bpp.lz"); static const u16 sSpritePals_UseItem_OutwardSpiralDots[] = INCBIN_U16("graphics/pokemon_special_anim/unk_8459940.gbapal"); static const u32 sSpriteTiles_UseItem_OutwardSpiralDots[] = INCBIN_U32("graphics/pokemon_special_anim/unk_8459960.4bpp.lz"); @@ -108,20 +108,20 @@ static const u16 sAffineScales[] = { 0x200 }; -static const s8 gUnknown_84599B2[][2] = { +static const s8 sStarCoordOffsets[][2] = { {-8, -8}, { 6, -13}, { 8, -8} }; -static const struct CompressedSpriteSheet gUnknown_84599B8 = { - gUnknown_84598C4, +static const struct CompressedSpriteSheet sSpriteSheet_Star = { + sSpriteTiles_Star, 0x80, 2 }; -static const struct SpritePalette gUnknown_84599C0 = { - gUnknown_84598A4, +static const struct SpritePalette sSpritePalette_Star = { + sSpritePals_Star, 2 }; @@ -189,38 +189,38 @@ static const struct SpriteTemplate sSpriteTemplate_MonSprite = { .callback = SpriteCallbackDummy }; -static const union AffineAnimCmd gUnknown_8459A48[] = { +static const union AffineAnimCmd sAffineAnim_ItemZoom_0[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(-28, -28, 0, 8), AFFINEANIMCMD_END }; -static const union AffineAnimCmd gUnknown_8459A60[] = { +static const union AffineAnimCmd sAffineAnim_ItemZoom_1[] = { AFFINEANIMCMD_FRAME(0x155, 0x155, 0, 0), AFFINEANIMCMD_FRAME(-37, -37, 0, 8), AFFINEANIMCMD_END }; -static const union AffineAnimCmd gUnknown_8459A78[] = { +static const union AffineAnimCmd sAffineAnim_ItemZoom_2[] = { AFFINEANIMCMD_FRAME(0x1AA, 0x1AA, 0, 0), AFFINEANIMCMD_FRAME(-47, -47, 0, 8), AFFINEANIMCMD_END }; -static const union AffineAnimCmd gUnknown_8459A90[] = { +static const union AffineAnimCmd sAffineAnim_ItemZoom_3[] = { AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0), AFFINEANIMCMD_FRAME(-56, -56, 0, 8), AFFINEANIMCMD_END }; -static const union AffineAnimCmd *const gUnknown_8459AA8[] = { - gUnknown_8459A48, - gUnknown_8459A60, - gUnknown_8459A78, - gUnknown_8459A90 +static const union AffineAnimCmd *const sAffineAnimTable_ItemZoom[] = { + sAffineAnim_ItemZoom_0, + sAffineAnim_ItemZoom_1, + sAffineAnim_ItemZoom_2, + sAffineAnim_ItemZoom_3 }; -static const struct OamData gUnknown_8459AB8 = { +static const struct OamData sOamData_LevelUpVertical = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_BLEND, @@ -240,21 +240,21 @@ static const union AnimCmd gUnknown_8459AC0[] = { ANIMCMD_END }; -static const union AnimCmd *const gUnknown_8459AC8[] = { +static const union AnimCmd *const sAnimTable_LevelUpVertical[] = { gUnknown_8459AC0 }; -static const struct SpriteTemplate gUnknown_8459ACC = { +static const struct SpriteTemplate sSpriteTemplate_LevelUpVertical = { .tileTag = 0, .paletteTag = 0, - .oam = &gUnknown_8459AB8, - .anims = gUnknown_8459AC8, + .oam = &sOamData_LevelUpVertical, + .anims = sAnimTable_LevelUpVertical, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_811E7B4 + .callback = SpriteCB_LevelUpVertical }; -static const struct OamData gUnknown_8459AE4 = { +static const struct OamData sOamData_Star = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -269,14 +269,14 @@ static const struct OamData gUnknown_8459AE4 = { .paletteNum = 0 }; -static const struct SpriteTemplate gUnknown_8459AEC = { +static const struct SpriteTemplate sSpriteTemplate_Star = { .tileTag = 2, .paletteTag = 2, - .oam = &gUnknown_8459AE4, + .oam = &sOamData_Star, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_811E300 + .callback = SpriteCB_Star }; static const struct OamData sOamData_UseItem_OutwardSpiralDots = { @@ -338,7 +338,7 @@ void InitPokemonSpecialAnimScene(struct PokemonSpecialAnimScene * buffer, u16 an SetBgTilemapBuffer(3, buffer->field_1914); RequestDma3Fill(0, (void *)BG_VRAM, 0x20, TRUE); FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 32, 32); - sub_811D7D4(animType); + LoadBgGfxByAnimType(animType); FillWindowPixelBuffer(0, PIXEL_FILL(0)); TextWindow_SetUserSelectedFrame(0, 0x000, 0xe0); CopyWindowToVram(0, 3); @@ -365,7 +365,7 @@ void PSA_FreeWindowBuffers(void) FreeAllWindowBuffers(); } -void sub_811D2A8(void) +void PSA_ShowMessageWindow(void) { PutWindowTilemap(0); FillWindowPixelBuffer(0, PIXEL_FILL(1)); @@ -373,7 +373,7 @@ void sub_811D2A8(void) CopyWindowToVram(0, 3); } -void sub_811D2D0(void) +void PSA_HideMessageWindow(void) { ClearWindowTilemap(0); ClearStdWindowAndFrameToTransparent(0, FALSE); @@ -445,7 +445,7 @@ void PSA_PrintMessage(u8 messageId) AddTextPrinterParameterized5(0, 2, scene->textBuf, strWidth, 0, textSpeed, NULL, 0, 4); } -void sub_811D4D4(void) +void PSA_AfterPoof_ClearMessageWindow(void) { FillWindowPixelBuffer(0, PIXEL_FILL(1)); CopyWindowToVram(0, 2); @@ -456,22 +456,22 @@ bool8 PSA_IsMessagePrintTaskActive(void) return IsTextPrinterActive(0); } -void sub_811D4FC(void) +void PSA_DarkenMonSprite(void) { struct PokemonSpecialAnimScene * scene = PSA_GetSceneWork(); scene->state = 0; BlendPalettes((0x10000 << IndexOfSpritePaletteTag(0)) | 4, 16, RGB_BLACK); - sub_811E204(scene); + CreateStarSprites(scene); } -bool8 sub_811D530(void) +bool8 PSA_RunPoofAnim(void) { struct PokemonSpecialAnimScene * scene = PSA_GetSceneWork(); switch (scene->state) { case 0: - if (!sub_811E2F4()) + if (!AnyStarSpritesActive()) { BeginNormalPaletteFade((0x10000 << IndexOfSpritePaletteTag(0)) | 4, -1, 16, 0, RGB_BLACK); scene->state++; @@ -485,29 +485,29 @@ bool8 sub_811D530(void) return TRUE; } -void sub_811D5A0(void) +void PSA_UseTM_SetUpZoomOutAnim(void) { struct PokemonSpecialAnimScene * scene = PSA_GetSceneWork(); scene->state = 0; } -void sub_811D5B0(void) +void PSA_UseTM_CleanUpForCancel(void) { - sub_811E388(); + StopMakingOutwardSpiralDots(); ResetPaletteFadeControl(); } -bool8 sub_811D5C0(void) +bool8 PSA_UseTM_RunZoomOutAnim(void) { struct PokemonSpecialAnimScene * scene = PSA_GetSceneWork(); switch (scene->state) { case 0: - sub_811E194(0); + StartZoomOutAnimForUseTM(0); scene->state++; break; case 1: - if (!sub_811D9A8()) + if (!PSA_IsZoomTaskActive()) { scene->field_0004 = 0; scene->state++; @@ -530,7 +530,7 @@ bool8 sub_811D5C0(void) scene->field_0004 = 0; PlaySE(SE_W025); BeginNormalPaletteFade(0x00000001, 2, 0, 12, RGB(8, 13, 31)); - sub_811E348(scene); + PSAScene_SeedRandomInTask(scene); scene->state++; } break; @@ -546,7 +546,7 @@ bool8 sub_811D5C0(void) break; case 6: scene->field_0004++; - if (!sub_811E5A4() && scene->field_0004 > 40) + if (!IsOutwardSpiralDotsTaskRunning() && scene->field_0004 > 40) { scene->field_0004 = 0; scene->state++; @@ -570,74 +570,78 @@ bool8 sub_811D5C0(void) return TRUE; } -void sub_811D6EC(void) +void PSA_UseTM_SetUpMachineSetWobble(void) { struct PokemonSpecialAnimScene * scene = PSA_GetSceneWork(); scene->state = 0; } -bool8 sub_811D6FC(void) +bool8 PSA_UseTM_RunMachineSetWobble(void) { struct PokemonSpecialAnimScene * scene = PSA_GetSceneWork(); switch (scene->state) { case 0: - sub_811E10C(); + MachineSetWobbleInit(); PlaySE(SE_MU_PACHI); scene->state++; break; case 1: - return sub_811E138(); + return MachineSetWobbleCBIsRunning(); } return TRUE; } -static void sub_811D734(void) +// There may once have been plans to put the battle level up +// anim in with using Rare Candy, but they were scrapped +// at a later stage of development + +UNUSED void PSA_CreateLevelUpVerticalSpritesTask(void) { - sub_811E5B8(120, 56, 4, 4, 2, 0); + CreateLevelUpVerticalSpritesTask(120, 56, 4, 4, 2, 0); } -bool8 sub_811D754(void) +bool8 PSA_LevelUpVerticalSpritesTaskIsRunning(void) { - return sub_811E680(); + return LevelUpVerticalSpritesTaskIsRunning(); } -static void sub_811D764(u16 *statsBefore, u16 *statsAfter) +UNUSED void PSA_DrawLevelUpWindowPg1(u16 *statsBefore, u16 *statsAfter) { DrawTextBorderOuter(1, 0x001, 0xE); DrawLevelUpWindowPg1(1, statsBefore, statsAfter, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY); PutWindowTilemap(1); CopyWindowToVram(1, 3); } -static void sub_811D7A0(u16 *currStats) +UNUSED void PSA_DrawLevelUpWindowPg2(u16 *currStats) { DrawLevelUpWindowPg2(1, currStats, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY); CopyWindowToVram(1, 2); } -static bool8 sub_811D7C4(void) +UNUSED bool8 PSA_IsCopyingLevelUpWindowToVram(void) { return IsDma3ManagerBusyWithBgCopy(); } -static void sub_811D7D4(u16 animType) +static void LoadBgGfxByAnimType(u16 animType) { - CopyToBgTilemapBuffer(3, gUnknown_845973C, 0, 0x000); - DecompressAndCopyTileDataToVram(3, gUnknown_845967C, 0, 0x000, 0); + CopyToBgTilemapBuffer(3, sBg3Map_PSA, 0, 0x000); + DecompressAndCopyTileDataToVram(3, sBg3Tiles_PSA, 0, 0x000, 0); if (animType != 4) - LoadPalette(gUnknown_845963C, 0x00, 0x20); + LoadPalette(sBgPals_PSA_Any, 0x00, 0x20); else - LoadPalette(gUnknown_845965C, 0x00, 0x20); + LoadPalette(sBgPals_PSA_Anim4, 0x00, 0x20); } -void sub_811D830(u8 closeness) +void PSA_CreateMonSpriteAtCloseness(u8 closeness) { struct PokemonSpecialAnimScene * scene = PSA_GetSceneWork(); struct Pokemon * pokemon = PSA_GetPokemon(); u16 species = GetMonData(pokemon, MON_DATA_SPECIES); u32 personality = GetMonData(pokemon, MON_DATA_PERSONALITY); - u8 r1 = sub_812EA78(species, personality, 2); + u8 r1 = Menu2_GetMonSpriteAnchorCoord(species, personality, 2); void * r6; void * r9; void * r4; @@ -645,13 +649,13 @@ void sub_811D830(u8 closeness) if (r1 != 0xFF) { - scene->field_0006 = 0x48; - scene->field_0008 = r1 + 0x30; + scene->monSpriteY1 = 0x48; + scene->monSpriteY2 = r1 + 0x30; } else { - scene->field_0006 = 0x48; - scene->field_0008 = 0x60; + scene->monSpriteY1 = 0x48; + scene->monSpriteY2 = 0x60; } r6 = Alloc(0x2000); @@ -662,123 +666,133 @@ void sub_811D830(u8 closeness) HandleLoadSpecialPokePic(&gMonFrontPicTable[species], r6, species, personality); LZ77UnCompWram(GetMonFrontSpritePal(pokemon), r4); LoadMonSpriteGraphics(r6, r4); - spriteId = CreateSprite(&sSpriteTemplate_MonSprite, 120, scene->field_0006, 4); + spriteId = CreateSprite(&sSpriteTemplate_MonSprite, 120, scene->monSpriteY1, 4); if (spriteId != MAX_SPRITES) { scene->monSprite = &gSprites[spriteId]; - sub_811DB14(scene->monSprite, closeness); + MonSpriteZoom_UpdateYPos(scene->monSprite, closeness); } else scene->monSprite = NULL; - scene->field_000a = closeness; + scene->lastCloseness = closeness; } if (r6 != NULL) Free(r6); if (r9 != NULL) Free(r9); if (r4 != NULL) Free(r4); } +#define tState data[0] +#define tCurrCloseness data[1] +#define tFinalCloseness data[2] +#define tDeltaCloseness data[3] +#define tTimer data[4] +#define tDelay data[5] +#define tOff_MonSprite 6 +#define tHasItemSprite data[8] +#define tOff_ItemSprite 9 + void PSA_SetUpZoomAnim(u8 closeness) { struct PokemonSpecialAnimScene * scene = PSA_GetSceneWork(); u8 taskId; - if (closeness != scene->field_000a) + if (closeness != scene->lastCloseness) { - taskId = CreateTask(sub_811D9BC, 4); - SetWordTaskArg(taskId, 6, (uintptr_t)scene->monSprite); - gTasks[taskId].data[1] = scene->field_000a; - gTasks[taskId].data[2] = closeness; - gTasks[taskId].data[5] = 6; - if (closeness > scene->field_000a) - gTasks[taskId].data[3] = 1; + taskId = CreateTask(Task_ZoomAnim, 4); + SetWordTaskArg(taskId, tOff_MonSprite, (uintptr_t)scene->monSprite); + gTasks[taskId].tCurrCloseness = scene->lastCloseness; + gTasks[taskId].tFinalCloseness = closeness; + gTasks[taskId].tDelay = 6; + if (closeness > scene->lastCloseness) + gTasks[taskId].tDeltaCloseness = 1; else - gTasks[taskId].data[3] = -1; + gTasks[taskId].tDeltaCloseness = -1; } } -bool8 sub_811D9A8(void) +bool8 PSA_IsZoomTaskActive(void) { - return FuncIsActiveTask(sub_811D9BC); + return FuncIsActiveTask(Task_ZoomAnim); } -static void sub_811D9BC(u8 taskId) +static void Task_ZoomAnim(u8 taskId) { s16 *data = gTasks[taskId].data; - struct Sprite * sprite = (void *)GetWordTaskArg(taskId, 6); - switch (data[0]) + struct Sprite * sprite = (void *)GetWordTaskArg(taskId, tOff_MonSprite); + switch (tState) { case 0: - sub_811DA9C(sprite, data[1]); - if (data[8]) - sub_811DA9C((void *)GetWordTaskArg(taskId, 9), data[1]); - data[1] += data[3]; - data[0]++; + SetSpriteWithCloseness(sprite, tCurrCloseness); + if (tHasItemSprite) + SetSpriteWithCloseness((void *)GetWordTaskArg(taskId, tOff_ItemSprite), tCurrCloseness); + tCurrCloseness += tDeltaCloseness; + tState++; break; case 1: - if (!sub_811DAAC(sprite)) + if (!IsZoomSpriteCBActive(sprite)) { PlaySE(SE_TB_KARA); - sub_811DB14(sprite, data[1]); - if (data[8]) - sub_811DB48((void *)GetWordTaskArg(taskId, 9), data[1]); - if (data[1] == data[2]) + MonSpriteZoom_UpdateYPos(sprite, tCurrCloseness); + if (tHasItemSprite) + ItemSpriteZoom_UpdateYPos((void *)GetWordTaskArg(taskId, tOff_ItemSprite), tCurrCloseness); + if (tCurrCloseness == tFinalCloseness) { - PSA_GetSceneWork()->field_000a = data[2]; + PSA_GetSceneWork()->lastCloseness = tFinalCloseness; DestroyTask(taskId); } else { - data[4] = 0; - data[0] = 2; + tTimer = 0; + tState = 2; } } break; case 2: - data[4]++; - if (data[4] > data[5]) - data[0] = 0; + tTimer++; + if (tTimer > tDelay) + tState = 0; break; } } -static void sub_811DA9C(struct Sprite * sprite, u8 closeness) +static void SetSpriteWithCloseness(struct Sprite * sprite, u8 closeness) { sprite->data[0] = 0; sprite->data[1] = 0; sprite->data[2] = closeness; } -static bool8 sub_811DAAC(struct Sprite * sprite) +static bool8 IsZoomSpriteCBActive(struct Sprite * sprite) { return sprite->callback != SpriteCallbackDummy; } -static s16 sub_811DAC0(s16 pos, u8 closeness) +static s16 GetSpriteOffsetByScale(s16 pos, u8 closeness) { return (pos * sAffineScales[closeness]) >> 8; } // FIXME: better math -static u16 sub_811DADC(u16 pos) +static u16 GetYPosByScale(u16 pos) { struct PokemonSpecialAnimScene * scene = PSA_GetSceneWork(); - s32 v = ((((((scene->field_0008 - scene->field_0006) << 16) >> 8) / 256 * (pos - 256)) << 8) >> 16); - return v += scene->field_0006; + s32 v = ((((((scene->monSpriteY2 - scene->monSpriteY1) << 16) >> 8) / 256 * (pos - 256)) << 8) >> 16); + return v += scene->monSpriteY1; } -static void sub_811DB14(struct Sprite * sprite, u8 closeness) +static void MonSpriteZoom_UpdateYPos(struct Sprite * sprite, u8 closeness) { if (closeness > 3) closeness = 3; PSA_GetSceneWork(); // return value not used StartSpriteAffineAnim(sprite, closeness); - sprite->pos1.y = sub_811DADC(sAffineScales[closeness]); + sprite->pos1.y = GetYPosByScale(sAffineScales[closeness]); } -static void sub_811DB48(struct Sprite * sprite, u8 closeness) +static void ItemSpriteZoom_UpdateYPos(struct Sprite * sprite, u8 closeness) { - sub_811DB14(sprite, closeness); - sprite->pos2.x = sub_811DAC0(sprite->data[6] - 32, closeness); - sprite->pos2.y = sub_811DAC0(sprite->data[7] - 32, closeness); + MonSpriteZoom_UpdateYPos(sprite, closeness); + sprite->pos2.x = GetSpriteOffsetByScale(sprite->data[6] - 32, closeness); + sprite->pos2.y = GetSpriteOffsetByScale(sprite->data[7] - 32, closeness); } static void StartMonWiggleAnim(struct PokemonSpecialAnimScene * scene, u8 frameLen, u8 niter, u8 amplitude) @@ -830,22 +844,44 @@ static void LoadMonSpriteGraphics(u16 *tiles, u16 *palette) LoadSpritePalette(&spritePalette); } -void PSA_SetUpZoomOutMonTask(u16 itemId, u8 closeness, bool32 a2) +#undef tOff_ItemSprite +#undef tHasItemSprite +#undef tOff_MonSprite +#undef tDelay +#undef tTimer +#undef tDeltaCloseness +#undef tFinalCloseness +#undef tCurrCloseness +#undef tState + +#define tState data[0] +#define tTimer data[1] +#define tCloseness data[2] +#define tYpos data[3] +#define tOff_ItemSprite 4 +#define tData6 data[6] +#define tData7 data[7] +#define tActiveSprCt data[8] +#define tBlendColor data[9] +#define tTimerReset data[10] +#define tSuppressDots data[11] + +void PSA_SetUpItemUseOnMonAnim(u16 itemId, u8 closeness, bool32 a2) { struct PokemonSpecialAnimScene * scene = PSA_GetSceneWork(); u8 taskId; scene->itemIconSprite = PSA_CreateItemIconObject(itemId); if (scene->itemIconSprite != NULL) { - sub_811E06C(scene, scene->itemIconSprite, closeness); + InitItemIconSpriteState(scene, scene->itemIconSprite, closeness); StartSpriteAffineAnim(scene->itemIconSprite, closeness); scene->itemIconSprite->invisible = TRUE; - taskId = CreateTask(Task_ZoomOutMon, 2); - SetWordTaskArg(taskId, 4, (uintptr_t)scene->itemIconSprite); - gTasks[taskId].data[2] = closeness; - gTasks[taskId].data[3] = sub_811DADC(sAffineScales[closeness]); - gTasks[taskId].data[6] = a2; - gTasks[taskId].data[9] = GetBlendColorByItemId(itemId); + taskId = CreateTask(Task_ItemUseOnMonAnim, 2); + SetWordTaskArg(taskId, tOff_ItemSprite, (uintptr_t)scene->itemIconSprite); + gTasks[taskId].tCloseness = closeness; + gTasks[taskId].tYpos = GetYPosByScale(sAffineScales[closeness]); + gTasks[taskId].tData6 = a2; + gTasks[taskId].tBlendColor = GetBlendColorByItemId(itemId); } } @@ -854,18 +890,18 @@ static u16 GetBlendColorByItemId(u16 itemId) return RGB_WHITE; } -void sub_811DCF0(u16 itemId) +void CreateItemIconSpriteAtMaxCloseness(u16 itemId) { struct PokemonSpecialAnimScene * scene = PSA_GetSceneWork(); scene->itemIconSprite = PSA_CreateItemIconObject(itemId); if (scene->itemIconSprite != NULL) { StartSpriteAffineAnim(scene->itemIconSprite, 3); - sub_811E06C(scene, scene->itemIconSprite, 3); + InitItemIconSpriteState(scene, scene->itemIconSprite, 3); } } -struct Sprite * PSA_CreateItemIconObject(u16 itemId) +static struct Sprite * PSA_CreateItemIconObject(u16 itemId) { u8 spriteId; struct Sprite * sprite; @@ -881,38 +917,38 @@ struct Sprite * PSA_CreateItemIconObject(u16 itemId) return &gSprites[spriteId]; } -bool8 PSA_IsZoomOutMonTaskRunning(void) +bool8 PSA_IsItemUseOnMonAnimActive(void) { - return FuncIsActiveTask(Task_ZoomOutMon); + return FuncIsActiveTask(Task_ItemUseOnMonAnim); } -static void Task_ZoomOutMon(u8 taskId) +static void Task_ItemUseOnMonAnim(u8 taskId) { s16 *data = gTasks[taskId].data; - struct Sprite * sprite = (void *)GetWordTaskArg(taskId, 4); - switch (data[0]) + struct Sprite * sprite = (void *)GetWordTaskArg(taskId, tOff_ItemSprite); + switch (tState) { case 0: - data[1]++; - if (data[1] > 20) + tTimer++; + if (tTimer > 20) { - data[1] = 0; + tTimer = 0; PlaySE(SE_W207B); sprite->invisible = FALSE; - if (!data[11]) - sub_811E588(); - data[0] = 1; + if (!tSuppressDots) + LoadOutwardSpiralDotsGfx(); + tState = 1; } break; case 1: - data[1]++; - if (data[1] > 30) + tTimer++; + if (tTimer > 30) { - data[1] = 0; - sprite->affineAnims = gUnknown_8459AA8; - StartSpriteAffineAnim(sprite, data[2]); - BeginNormalPaletteFade(0x10000 << IndexOfSpritePaletteTag(1), -2, 0, 12, data[9]); - data[0] = 2; + tTimer = 0; + sprite->affineAnims = sAffineAnimTable_ItemZoom; + StartSpriteAffineAnim(sprite, tCloseness); + BeginNormalPaletteFade(0x10000 << IndexOfSpritePaletteTag(1), -2, 0, 12, tBlendColor); + tState = 2; PlaySE(SE_W208); } break; @@ -920,30 +956,30 @@ static void Task_ZoomOutMon(u8 taskId) if (sprite->affineAnimEnded) { sprite->invisible = TRUE; - data[10] = 20; - data[0] = 3; + tTimerReset = 20; + tState = 3; } break; case 3: - data[1]++; - if (data[1] > data[10]) + tTimer++; + if (tTimer > tTimerReset) { - data[1] = 0; - if (!data[11]) + tTimer = 0; + if (!tSuppressDots) CreateSprites_UseItem_OutwardSpiralDots(taskId, data, sprite); - if (data[7] == 0) + if (tData7 == 0) PlaySE(SE_W179); - data[7]++; - if (data[7] > 2) - data[0] = 4; + tData7++; + if (tData7 > 2) + tState = 4; else - data[10] = 8; + tTimerReset = 8; } break; case 4: - if (data[8] == 0) + if (tActiveSprCt == 0) { - if (data[6] != 0) + if (tData6) DestroySprite(sprite); DestroyTask(taskId); } @@ -957,7 +993,7 @@ static void CreateSprites_UseItem_OutwardSpiralDots(u8 taskId, s16 *data, struct int y = sprite->pos1.y + sprite->pos2.y - 4; u8 spriteId; int i; - BlendPalettes(0x10000 << IndexOfSpritePaletteTag(5), 16, data[9]); + BlendPalettes(0x10000 << IndexOfSpritePaletteTag(5), 16, tBlendColor); for (i = 0; i < 15; i++) { spriteId = CreateSprite(&sSpriteTemplate_UseItem_OutwardSpiralDots, x, y, 0); @@ -965,14 +1001,14 @@ static void CreateSprites_UseItem_OutwardSpiralDots(u8 taskId, s16 *data, struct { gSprites[spriteId].data[1] = i << 4; gSprites[spriteId].data[7] = taskId; - gSprites[spriteId].callback = sub_811DFC0; + gSprites[spriteId].callback = SpriteCB_OutwardSpiralDots; StartSpriteAnim(&gSprites[spriteId], 1); - data[8]++; + tActiveSprCt++; } } } -static void sub_811DFC0(struct Sprite * sprite) +static void SpriteCB_OutwardSpiralDots(struct Sprite * sprite) { s16 *data = sprite->data; if (data[0] < 16) @@ -986,35 +1022,35 @@ static void sub_811DFC0(struct Sprite * sprite) } else { - gTasks[data[7]].data[8]--; + gTasks[data[7]].tActiveSprCt--; DestroySprite(sprite); } } -void sub_811E040(void) +void PSA_UseItem_CleanUpForCancel(void) { - u8 taskId = FindTaskIdByFunc(Task_ZoomOutMon); + u8 taskId = FindTaskIdByFunc(Task_ItemUseOnMonAnim); if (taskId != 0xFF) { - gTasks[taskId].data[11] = TRUE; + gTasks[taskId].tSuppressDots = TRUE; } } -static void sub_811E06C(struct PokemonSpecialAnimScene * scene, struct Sprite * sprite, u8 closeness) +static void InitItemIconSpriteState(struct PokemonSpecialAnimScene * scene, struct Sprite * sprite, u8 closeness) { u16 species; u32 personality; - register int r4 asm("r4"); // FIXME - u8 r0; + register int x asm("r4"); // FIXME + u8 y; if (closeness == 3) { sprite->pos1.x = 120; - sprite->pos1.y = scene->field_0008; + sprite->pos1.y = scene->monSpriteY2; } else { sprite->pos1.x = 120; - sprite->pos1.y = scene->field_0006; + sprite->pos1.y = scene->monSpriteY1; } sprite->pos1.x += 4; sprite->pos1.y += 4; @@ -1022,44 +1058,56 @@ static void sub_811E06C(struct PokemonSpecialAnimScene * scene, struct Sprite * personality = PSA_GetMonPersonality(); if (PSA_GetAnimType() == 4) { - r4 = sub_812EA78(species, personality, 0); - r0 = sub_812EA78(species, personality, 1); + x = Menu2_GetMonSpriteAnchorCoord(species, personality, 0); + y = Menu2_GetMonSpriteAnchorCoord(species, personality, 1); } else { - r4 = sub_812EA78(species, personality, 3); - r0 = sub_812EA78(species, personality, 4); + x = Menu2_GetMonSpriteAnchorCoord(species, personality, 3); + y = Menu2_GetMonSpriteAnchorCoord(species, personality, 4); } - if (r4 == 0xFF) - r4 = 0; - if (r0 == 0xFF) - r0 = 0; - sprite->data[6] = r4; - sprite->data[7] = r0; - sub_811DB48(sprite, closeness); -} - -static void sub_811E10C(void) + if (x == 0xFF) + x = 0; + if (y == 0xFF) + y = 0; + sprite->data[6] = x; + sprite->data[7] = y; + ItemSpriteZoom_UpdateYPos(sprite, closeness); +} + +#undef tSuppressDots +#undef tTimerReset +#undef tBlendColor +#undef tActiveSprCt +#undef tData7 +#undef tData6 +#undef tOff_ItemSprite +#undef tYpos +#undef tCloseness +#undef tTimer +#undef tState + +static void MachineSetWobbleInit(void) { struct PokemonSpecialAnimScene * scene = PSA_GetSceneWork(); - sub_811E128(scene->monSprite); - sub_811E128(scene->itemIconSprite); + MachineSetWobble_SetCB(scene->monSprite); + MachineSetWobble_SetCB(scene->itemIconSprite); } -static void sub_811E128(struct Sprite * sprite) +static void MachineSetWobble_SetCB(struct Sprite * sprite) { sprite->data[0] = 0; sprite->data[1] = 0; - sprite->callback = sub_811E154; + sprite->callback = SpriteCB_MachineSetWobble; } -static bool8 sub_811E138(void) +static bool8 MachineSetWobbleCBIsRunning(void) { struct PokemonSpecialAnimScene * scene = PSA_GetSceneWork(); return scene->monSprite->callback != SpriteCallbackDummy; } -static void sub_811E154(struct Sprite * sprite) +static void SpriteCB_MachineSetWobble(struct Sprite * sprite) { switch (sprite->data[0]) { @@ -1078,57 +1126,78 @@ static void sub_811E154(struct Sprite * sprite) } } -static void sub_811E194(u8 a0) +// Redefined from above +#define tState data[0] +#define tCurrCloseness data[1] +#define tFinalCloseness data[2] +#define tDeltaCloseness data[3] +#define tTimer data[4] +#define tDelay data[5] +#define tOff_MonSprite 6 +#define tHasItemSprite data[8] +#define tOff_ItemSprite 9 + +static void StartZoomOutAnimForUseTM(u8 closeness) { struct PokemonSpecialAnimScene * scene = PSA_GetSceneWork(); u8 taskId; - if (a0 != scene->field_000a) + if (closeness != scene->lastCloseness) { - taskId = CreateTask(sub_811D9BC, 1); - SetWordTaskArg(taskId, 6, (uintptr_t)scene->monSprite); - SetWordTaskArg(taskId, 9, (uintptr_t)scene->itemIconSprite); - gTasks[taskId].data[1] = scene->field_000a; - gTasks[taskId].data[2] = a0; - gTasks[taskId].data[8] = 1; - gTasks[taskId].data[5] = 6; - if (a0 > scene->field_000a) - gTasks[taskId].data[3] = 1; + taskId = CreateTask(Task_ZoomAnim, 1); + SetWordTaskArg(taskId, tOff_MonSprite, (uintptr_t)scene->monSprite); + SetWordTaskArg(taskId, tOff_ItemSprite, (uintptr_t)scene->itemIconSprite); + gTasks[taskId].tCurrCloseness = scene->lastCloseness; + gTasks[taskId].tFinalCloseness = closeness; + gTasks[taskId].tHasItemSprite = 1; + gTasks[taskId].tDelay = 6; + if (closeness > scene->lastCloseness) + gTasks[taskId].tDeltaCloseness = 1; else - gTasks[taskId].data[3] = -1; + gTasks[taskId].tDeltaCloseness = -1; } } -static void sub_811E204(struct PokemonSpecialAnimScene * scene) +#undef tOff_ItemSprite +#undef tHasItemSprite +#undef tOff_MonSprite +#undef tDelay +#undef tTimer +#undef tDeltaCloseness +#undef tFinalCloseness +#undef tCurrCloseness +#undef tState + +static void CreateStarSprites(struct PokemonSpecialAnimScene * scene) { int i; u8 spriteId; u16 species; u32 personality; - LoadCompressedSpriteSheet(&gUnknown_84599B8); - LoadSpritePalette(&gUnknown_84599C0); + LoadCompressedSpriteSheet(&sSpriteSheet_Star); + LoadSpritePalette(&sSpritePalette_Star); scene->field_0002 = 0; for (i = 0; i < 3; i++) { - spriteId = CreateSprite(&gUnknown_8459AEC, 120 + gUnknown_84599B2[i][0], scene->field_0008 + gUnknown_84599B2[i][1], 2); + spriteId = CreateSprite(&sSpriteTemplate_Star, 120 + sStarCoordOffsets[i][0], scene->monSpriteY2 + sStarCoordOffsets[i][1], 2); if (spriteId != MAX_SPRITES) { species = PSA_GetMonSpecies(); personality = PSA_GetMonPersonality(); - gSprites[spriteId].data[3] = gUnknown_84599B2[i][0] * 8; - gSprites[spriteId].data[4] = gUnknown_84599B2[i][1] * 8; - gSprites[spriteId].pos1.x += sub_811DAC0(sub_812EAE4(species, personality, 0), 3); - gSprites[spriteId].pos1.y += sub_811DAC0(sub_812EAE4(species, personality, 1), 3); + gSprites[spriteId].data[3] = sStarCoordOffsets[i][0] * 8; + gSprites[spriteId].data[4] = sStarCoordOffsets[i][1] * 8; + gSprites[spriteId].pos1.x += GetSpriteOffsetByScale(Menu2_GetMonSpriteAnchorCoordMinusx20(species, personality, 0), 3); + gSprites[spriteId].pos1.y += GetSpriteOffsetByScale(Menu2_GetMonSpriteAnchorCoordMinusx20(species, personality, 1), 3); scene->field_0002++; } } } -static u8 sub_811E2F4(void) +static u8 AnyStarSpritesActive(void) { return PSA_GetSceneWork()->field_0002; } -static void sub_811E300(struct Sprite * sprite) +static void SpriteCB_Star(struct Sprite * sprite) { sprite->data[0]++; if (sprite->data[0] < 10) @@ -1145,23 +1214,40 @@ static void sub_811E300(struct Sprite * sprite) } } -static void sub_811E348(struct PokemonSpecialAnimScene * scene) +// ======================================================== + +#define tState data[0] +#define tTimer data[1] +#define tActiveSprCt data[2] +#define tOff_RngState 3 +#define tAngle data[5] +#define tMadeSprCt data[6] + +#define tsRadius data[0] +#define tsSpeed data[1] +#define tsXinit data[2] +#define tsYinit data[3] +#define tsXorig data[4] +#define tsYorig data[5] +#define tsTaskId data[6] + +static void PSAScene_SeedRandomInTask(struct PokemonSpecialAnimScene * scene) { u8 taskId; - sub_811E588(); - taskId = CreateTask(sub_811E3B4, 1); - SetWordTaskArg(taskId, 3, 2022069025); - gTasks[taskId].data[5] = 224; + LoadOutwardSpiralDotsGfx(); + taskId = CreateTask(Task_UseItem_OutwardSpiralDots, 1); + SetWordTaskArg(taskId, tOff_RngState, 2022069025); + gTasks[taskId].tAngle = 0xE0; } -static void sub_811E388(void) +static void StopMakingOutwardSpiralDots(void) { - u8 taskId = FindTaskIdByFunc(sub_811E3B4); + u8 taskId = FindTaskIdByFunc(Task_UseItem_OutwardSpiralDots); if (taskId != 0xFF) - gTasks[taskId].data[0] = 1; + gTasks[taskId].tState = 1; } -static void sub_811E3B4(u8 taskId) +static void Task_UseItem_OutwardSpiralDots(u8 taskId) { s16 *data = gTasks[taskId].data; struct Sprite * sprite; @@ -1169,52 +1255,52 @@ static void sub_811E3B4(u8 taskId) register int y asm("r10"); // FIXME int x2; int y2; - int r0; + int ampl; u8 spriteId; - switch (data[0]) + switch (tState) { case 0: - if (data[1] == 0) + if (tTimer == 0) { sprite = PSA_GetSceneWork()->itemIconSprite; x = sprite->pos1.x + sprite->pos2.x; y = sprite->pos1.y + sprite->pos2.y; - r0 = (sub_811E4EC(taskId) % 21) + 70; - x2 = x + ((u32)(gSineTable[data[5] + 0x40] * r0) >> 8); - y2 = y + ((u32)(gSineTable[data[5] ] * r0) >> 8); - data[5] += 76; - data[5] &= 0xFF; + ampl = (PSAScene_RandomFromTask(taskId) % 21) + 70; + x2 = x + ((u32)(gSineTable[tAngle + 0x40] * ampl) >> 8); + y2 = y + ((u32)(gSineTable[tAngle ] * ampl) >> 8); + tAngle += 0x4C; + tAngle &= 0xFF; spriteId = CreateSprite(&sSpriteTemplate_UseItem_OutwardSpiralDots, x2, y2, 0); if (spriteId != MAX_SPRITES) { - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].data[1] = (sub_811E4EC(taskId) & 1) + 6; - gSprites[spriteId].data[2] = x2; - gSprites[spriteId].data[3] = y2; - gSprites[spriteId].data[4] = x; - gSprites[spriteId].data[5] = y; - gSprites[spriteId].data[6] = taskId; - data[2]++; + gSprites[spriteId].tsRadius = 0; + gSprites[spriteId].tsSpeed = (PSAScene_RandomFromTask(taskId) & 1) + 6; + gSprites[spriteId].tsXinit = x2; + gSprites[spriteId].tsYinit = y2; + gSprites[spriteId].tsXorig = x; + gSprites[spriteId].tsYorig = y; + gSprites[spriteId].tsTaskId = taskId; + tActiveSprCt++; } - data[6]++; - if (data[6] > 47) - data[0]++; + tMadeSprCt++; + if (tMadeSprCt > 47) + tState++; } else - data[1]--; + tTimer--; break; case 1: - if (data[2] == 0) + if (tActiveSprCt == 0) DestroyTask(taskId); break; } } -static u16 sub_811E4EC(u8 taskId) +static u16 PSAScene_RandomFromTask(u8 taskId) { - u32 state = GetWordTaskArg(taskId, 3); + u32 state = GetWordTaskArg(taskId, tOff_RngState); state = state * 1103515245 + 24691; - SetWordTaskArg(taskId, 3, state); + SetWordTaskArg(taskId, tOff_RngState, state); return state >> 16; } @@ -1222,120 +1308,170 @@ static void SpriteCallback_UseItem_OutwardSpiralDots(struct Sprite * sprite) { int x; int y; - sprite->data[0] += sprite->data[1]; - if (sprite->data[0] > 255) + sprite->tsRadius += sprite->tsSpeed; + if (sprite->tsRadius > 255) { - gTasks[sprite->data[6]].data[2]--; + gTasks[sprite->tsTaskId].tActiveSprCt--; DestroySprite(sprite); } else { - x = (sprite->data[4] - sprite->data[2]) * sprite->data[0]; - y = (sprite->data[5] - sprite->data[3]) * sprite->data[0]; - sprite->pos1.x = (x >> 8) + sprite->data[2]; - sprite->pos1.y = (y >> 8) + sprite->data[3]; + x = (sprite->tsXorig - sprite->tsXinit) * sprite->tsRadius; + y = (sprite->tsYorig - sprite->tsYinit) * sprite->tsRadius; + sprite->pos1.x = (x >> 8) + sprite->tsXinit; + sprite->pos1.y = (y >> 8) + sprite->tsYinit; } } -static void sub_811E588(void) +static void LoadOutwardSpiralDotsGfx(void) { LoadCompressedSpriteSheet(&sSpriteSheet_UseItem_OutwardSpiralDots); LoadSpritePalette(&sSpritePalette_UseItem_OutwardSpiralDots); } -static bool32 sub_811E5A4(void) +static bool32 IsOutwardSpiralDotsTaskRunning(void) { - return FuncIsActiveTask(sub_811E3B4); + return FuncIsActiveTask(Task_UseItem_OutwardSpiralDots); } -void sub_811E5B8(u16 a0, u16 a1, u16 a2, u16 a3, u16 a4, u16 a5) +#undef tsTaskId +#undef tsYorig +#undef tsXorig +#undef tsYinit +#undef tsXinit +#undef tsSpeed +#undef tsRadius + +#undef tMadeSprCt +#undef tAngle +#undef tOff_RngState +#undef tActiveSprCt +#undef tTimer +#undef tState + +// ======================================================== + +#define tState data[0] +#define tActiveSprCt data[1] +#define tMadeSprCt data[2] +#define tTimer data[3] +#define tXpos data[4] +#define tYpos data[5] +#define tTileTag data[6] +#define tPaletteTag data[7] +#define tPriority data[8] +#define tSubpriority data[9] + +#define tsYsubpixel data[1] +#define tsSpeed data[2] +#define tsTaskId data[7] + +void CreateLevelUpVerticalSpritesTask(u16 x, u16 y, u16 tileTag, u16 paletteTag, u16 priority, u16 subpriority) { - static struct CompressedSpriteSheet gUnknown_3002030; - static struct SpritePalette gUnknown_3002038; + static struct CompressedSpriteSheet spriteSheet; + static struct SpritePalette spritePalette; u8 taskId; - gUnknown_3002030.tag = a2; - gUnknown_3002030.data = gUnknown_8459888; - gUnknown_3002030.size = gUnknown_8459888[0] >> 8; - gUnknown_3002038.data = gUnknown_8459868; - gUnknown_3002038.tag = a3; - LoadCompressedSpriteSheet(&gUnknown_3002030); - LoadSpritePalette(&gUnknown_3002038); - taskId = CreateTask(sub_811E694, 0); - gTasks[taskId].data[4] = a0 - 32; - gTasks[taskId].data[5] = a1 + 32; - gTasks[taskId].data[6] = a2; - gTasks[taskId].data[7] = a3; - gTasks[taskId].data[8] = a4; - gTasks[taskId].data[9] = a5; + spriteSheet.tag = tileTag; + spriteSheet.data = sSpriteTiles_LevelUpVertical; + spriteSheet.size = sSpriteTiles_LevelUpVertical[0] >> 8; + spritePalette.data = sSpritePals_LevelUpVertical; + spritePalette.tag = paletteTag; + LoadCompressedSpriteSheet(&spriteSheet); + LoadSpritePalette(&spritePalette); + taskId = CreateTask(Task_LevelUpVerticalSprites, 0); + gTasks[taskId].tXpos = x - 32; + gTasks[taskId].tYpos = y + 32; + gTasks[taskId].tTileTag = tileTag; + gTasks[taskId].tPaletteTag = paletteTag; + gTasks[taskId].tPriority = priority; + gTasks[taskId].tSubpriority = subpriority; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_NONE | BLDCNT_TGT2_ALL); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(12, 6)); } -bool8 sub_811E680(void) +bool8 LevelUpVerticalSpritesTaskIsRunning(void) { - return FuncIsActiveTask(sub_811E694); + return FuncIsActiveTask(Task_LevelUpVerticalSprites); } -static void sub_811E694(u8 taskId) +static void Task_LevelUpVerticalSprites(u8 taskId) { s16 *data = gTasks[taskId].data; - switch (data[0]) + switch (tState) { case 0: - if (data[3] == 0) + if (tTimer == 0) { - data[3]++; - sub_811E710(taskId, data); - if (data[2] > 17) - data[0]++; + tTimer++; + CreateLevelUpVerticalSprite(taskId, data); + if (tMadeSprCt > 17) + tState++; } else { - data[3]++; - if (data[3] == 2) - data[3] = 0; + tTimer++; + if (tTimer == 2) + tTimer = 0; } break; case 1: - if (data[1] == 0) + if (tActiveSprCt == 0) { - FreeSpriteTilesByTag(data[6]); - FreeSpritePaletteByTag(data[7]); + FreeSpriteTilesByTag(tTileTag); + FreeSpritePaletteByTag(tPaletteTag); DestroyTask(taskId); } break; } } -static void sub_811E710(u8 taskId, s16 *data) +static void CreateLevelUpVerticalSprite(u8 taskId, s16 *data) { u8 spriteId; - struct SpriteTemplate template = gUnknown_8459ACC; - template.tileTag = data[6]; - template.paletteTag = data[7]; - data[2]++; - spriteId = CreateSprite(&template, ((data[2] * 219) & 0x3F) + data[4], data[5], data[9]); + struct SpriteTemplate template = sSpriteTemplate_LevelUpVertical; + template.tileTag = tTileTag; + template.paletteTag = tPaletteTag; + tMadeSprCt++; + spriteId = CreateSprite(&template, ((tMadeSprCt * 219) & 0x3F) + tXpos, tYpos, tSubpriority); if (spriteId != MAX_SPRITES) { - gSprites[spriteId].oam.priority = data[8]; - gSprites[spriteId].data[1] = 0; - gSprites[spriteId].data[2] = ((data[2] * 1103515245 + 24691) & 0x3F) + 0x20; - gSprites[spriteId].data[7] = taskId; - data[1]++; + gSprites[spriteId].oam.priority = tPriority; + gSprites[spriteId].tsYsubpixel = 0; + // similar to the LCRNG in random.c, but seeding from data[2] + gSprites[spriteId].tsSpeed = ((tMadeSprCt * 1103515245 + 24691) & 0x3F) + 0x20; + gSprites[spriteId].tsTaskId = taskId; + tActiveSprCt++; } } -static void sub_811E7B4(struct Sprite * sprite) +static void SpriteCB_LevelUpVertical(struct Sprite * sprite) { - sprite->data[1] -= sprite->data[2]; - sprite->pos2.y = sprite->data[1] >> 4; + sprite->tsYsubpixel -= sprite->tsSpeed; + sprite->pos2.y = sprite->tsYsubpixel >> 4; if (sprite->pos2.y < -0x40) { - gTasks[sprite->data[7]].data[1]--; + gTasks[sprite->tsTaskId].tActiveSprCt--; DestroySprite(sprite); } } +#undef tsTaskId +#undef tsSpeed +#undef tsYsubpixel + +#undef tSubpriority +#undef tPriority +#undef tPaletteTag +#undef tTileTag +#undef tYpos +#undef tXpos +#undef tTimer +#undef tMadeSprCt +#undef tActiveSprCt +#undef tState + +// ======================================================== + static const u8 *const sLevelUpWindowStatNames[] = { gUnknown_841B2A9, gUnknown_841B2B7, |