From 1e86625c87ec95ee7e79c3d5766083bfbce9989a Mon Sep 17 00:00:00 2001 From: "U-Fish-PC\\Daniel" Date: Fri, 16 May 2014 19:50:38 -0400 Subject: Pull most data out of main.asm --- data/base_stats.asm | 5549 +++++ data/bike_riding_tilesets.asm | 2 + data/credit_mons.asm | 16 + data/cries.asm | 192 + data/dungeon_tilesets.asm | 2 + data/evos_moves.asm | 2171 ++ data/force_bike_surf.asm | 11 + data/good_rod.asm | 3 + data/hidden_coins.asm | 14 + data/hidden_item_coords.asm | 57 + data/hidden_objects.asm | 780 + data/item_prices.asm | 98 + data/map_songs.asm | 249 + data/mart_inventories.asm | 75 + data/mew_base_stats.asm | 35 + data/mon_palettes.asm | 153 + data/mon_party_sprites.asm | 77 + data/moves.asm | 168 + data/pokedex_entries.asm | 1259 + data/pokedex_order.asm | 191 + data/prizes.asm | 69 + data/slot_machine_wheels.asm | 59 + data/super_palettes.asm | 174 + data/super_rod.asm | 101 + data/title_mons.asm | 56 + data/tm_prices.asm | 7 + data/tms.asm | 56 + data/town_map_entries.asm | 101 + data/town_map_order.asm | 48 + data/trades.asm | 12 + data/trainer_moves.asm | 194 + data/trainer_parties.asm | 592 + data/trainer_types.asm | 17 + data/type_effects.asm | 89 + data/wild_mons.asm | 3810 +++ main.asm | 53672 ++++++++++++++-------------------------- text/item_names.asm | 98 + text/map_names.asm | 107 + text/monster_names.asm | 191 + text/trainer_names.asm | 48 + 40 files changed, 35320 insertions(+), 35283 deletions(-) create mode 100755 data/base_stats.asm create mode 100755 data/bike_riding_tilesets.asm create mode 100755 data/credit_mons.asm create mode 100755 data/cries.asm create mode 100755 data/dungeon_tilesets.asm create mode 100755 data/evos_moves.asm create mode 100755 data/force_bike_surf.asm create mode 100755 data/good_rod.asm create mode 100755 data/hidden_coins.asm create mode 100755 data/hidden_item_coords.asm create mode 100755 data/hidden_objects.asm create mode 100755 data/item_prices.asm create mode 100755 data/map_songs.asm create mode 100755 data/mart_inventories.asm create mode 100755 data/mew_base_stats.asm create mode 100755 data/mon_palettes.asm create mode 100755 data/mon_party_sprites.asm create mode 100755 data/moves.asm create mode 100755 data/pokedex_entries.asm create mode 100755 data/pokedex_order.asm create mode 100755 data/prizes.asm create mode 100755 data/slot_machine_wheels.asm create mode 100755 data/super_palettes.asm create mode 100755 data/super_rod.asm create mode 100755 data/title_mons.asm create mode 100755 data/tm_prices.asm create mode 100755 data/tms.asm create mode 100755 data/town_map_entries.asm create mode 100755 data/town_map_order.asm create mode 100755 data/trades.asm create mode 100755 data/trainer_moves.asm create mode 100755 data/trainer_parties.asm create mode 100755 data/trainer_types.asm create mode 100755 data/type_effects.asm create mode 100755 data/wild_mons.asm create mode 100755 text/item_names.asm create mode 100755 text/map_names.asm create mode 100755 text/monster_names.asm create mode 100755 text/trainer_names.asm diff --git a/data/base_stats.asm b/data/base_stats.asm new file mode 100755 index 00000000..619c82b8 --- /dev/null +++ b/data/base_stats.asm @@ -0,0 +1,5549 @@ +BulbasaurBaseStats: ; 383de (e:43de) + db DEX_BULBASAUR ; pokedex id + db 45 ; base hp + db 49 ; base attack + db 49 ; base defense + db 45 ; base speed + db 65 ; base special + + db GRASS ; species type 1 + db POISON ; species type 2 + + db 45 ; catch rate + db 64 ; base exp yield + db $55 ; sprite dimensions + + dw BulbasaurPicFront + dw BulbasaurPicBack + + ; attacks known at lvl 0 + db TACKLE + db GROWL + db 0 + db 0 + + db 3 ; growth rate + + ; learnset + db %10100100 + db %00000011 + db %00111000 + db %11000000 + db %00000011 + db %00001000 + db %00000110 + + db 0 ; padding + +IvysaurBaseStats: ; 383fa (e:43fa) + db DEX_IVYSAUR ; pokedex id + db 60 ; base hp + db 62 ; base attack + db 63 ; base defense + db 60 ; base speed + db 80 ; base special + + db GRASS ; species type 1 + db POISON ; species type 2 + + db 45 ; catch rate + db 141 ; base exp yield + db $66 ; sprite dimensions + + dw IvysaurPicFront + dw IvysaurPicBack + + ; attacks known at lvl 0 + db TACKLE + db GROWL + db LEECH_SEED + db 0 + + db 3 ; growth rate + + ; learnset + db %10100100 + db %00000011 + db %00111000 + db %11000000 + db %00000011 + db %00001000 + db %00000110 + + db 0 ; padding + +VenusaurBaseStats: ; 38416 (e:4416) + db DEX_VENUSAUR ; pokedex id + db 80 ; base hp + db 82 ; base attack + db 83 ; base defense + db 80 ; base speed + db 100 ; base special + + db GRASS ; species type 1 + db POISON ; species type 2 + + db 45 ; catch rate + db 208 ; base exp yield + db $77 ; sprite dimensions + + dw VenusaurPicFront + dw VenusaurPicBack + + ; attacks known at lvl 0 + db TACKLE + db GROWL + db LEECH_SEED + db VINE_WHIP + + db 3 ; growth rate + + ; learnset + db %10100100 + db %01000011 + db %00111000 + db %11000000 + db %00000011 + db %00001000 + db %00000110 + + db 0 ; padding + +CharmanderBaseStats: ; 38432 (e:4432) + db DEX_CHARMANDER ; pokedex id + db 39 ; base hp + db 52 ; base attack + db 43 ; base defense + db 65 ; base speed + db 50 ; base special + + db FIRE ; species type 1 + db FIRE ; species type 2 + + db 45 ; catch rate + db 65 ; base exp yield + db $55 ; sprite dimensions + + dw CharmanderPicFront + dw CharmanderPicBack + + ; attacks known at lvl 0 + db SCRATCH + db GROWL + db 0 + db 0 + + db 3 ; growth rate + + ; learnset + db %10110101 + db %00000011 + db %01001111 + db %11001000 + db %11100011 + db %00001000 + db %00100110 + + db 0 ; padding + +CharmeleonBaseStats: ; 3844e (e:444e) + db DEX_CHARMELEON ; pokedex id + db 58 ; base hp + db 64 ; base attack + db 58 ; base defense + db 80 ; base speed + db 65 ; base special + + db FIRE ; species type 1 + db FIRE ; species type 2 + + db 45 ; catch rate + db 142 ; base exp yield + db $66 ; sprite dimensions + + dw CharmeleonPicFront + dw CharmeleonPicBack + + ; attacks known at lvl 0 + db SCRATCH + db GROWL + db EMBER + db 0 + + db 3 ; growth rate + + ; learnset + db %10110101 + db %00000011 + db %01001111 + db %11001000 + db %11100011 + db %00001000 + db %00100110 + + db 0 ; padding + +CharizardBaseStats: ; 3846a (e:446a) + db DEX_CHARIZARD ; pokedex id + db 78 ; base hp + db 84 ; base attack + db 78 ; base defense + db 100 ; base speed + db 85 ; base special + + db FIRE ; species type 1 + db FLYING ; species type 2 + + db 45 ; catch rate + db 209 ; base exp yield + db $77 ; sprite dimensions + + dw CharizardPicFront + dw CharizardPicBack + + ; attacks known at lvl 0 + db SCRATCH + db GROWL + db EMBER + db LEER + + db 3 ; growth rate + + ; learnset + db %10110101 + db %01000011 + db %01001111 + db %11001110 + db %11100011 + db %00001000 + db %00100110 + + db 0 ; padding + +SquirtleBaseStats: ; 38486 (e:4486) + db DEX_SQUIRTLE ; pokedex id + db 44 ; base hp + db 48 ; base attack + db 65 ; base defense + db 43 ; base speed + db 50 ; base special + + db WATER ; species type 1 + db WATER ; species type 2 + + db 45 ; catch rate + db 66 ; base exp yield + db $55 ; sprite dimensions + + dw SquirtlePicFront + dw SquirtlePicBack + + ; attacks known at lvl 0 + db TACKLE + db TAIL_WHIP + db 0 + db 0 + + db 3 ; growth rate + + ; learnset + db %10110001 + db %00111111 + db %00001111 + db %11001000 + db %10000011 + db %00001000 + db %00110010 + + db 0 ; padding + +WartortleBaseStats: ; 384a2 (e:44a2) + db DEX_WARTORTLE ; pokedex id + db 59 ; base hp + db 63 ; base attack + db 80 ; base defense + db 58 ; base speed + db 65 ; base special + + db WATER ; species type 1 + db WATER ; species type 2 + + db 45 ; catch rate + db 143 ; base exp yield + db $66 ; sprite dimensions + + dw WartortlePicFront + dw WartortlePicBack + + ; attacks known at lvl 0 + db TACKLE + db TAIL_WHIP + db BUBBLE + db 0 + + db 3 ; growth rate + + ; learnset + db %10110001 + db %00111111 + db %00001111 + db %11001000 + db %10000011 + db %00001000 + db %00110010 + + db 0 ; padding + +BlastoiseBaseStats: ; 384be (e:44be) + db DEX_BLASTOISE ; pokedex id + db 79 ; base hp + db 83 ; base attack + db 100 ; base defense + db 78 ; base speed + db 85 ; base special + + db WATER ; species type 1 + db WATER ; species type 2 + + db 45 ; catch rate + db 210 ; base exp yield + db $77 ; sprite dimensions + + dw BlastoisePicFront + dw BlastoisePicBack + + ; attacks known at lvl 0 + db TACKLE + db TAIL_WHIP + db BUBBLE + db WATER_GUN + + db 3 ; growth rate + + ; learnset + db %10110001 + db %01111111 + db %00001111 + db %11001110 + db %10000011 + db %00001000 + db %00110010 + + db 0 ; padding + +CaterpieBaseStats: ; 384da (e:44da) + db DEX_CATERPIE ; pokedex id + db 45 ; base hp + db 30 ; base attack + db 35 ; base defense + db 45 ; base speed + db 20 ; base special + + db BUG ; species type 1 + db BUG ; species type 2 + + db 255 ; catch rate + db 53 ; base exp yield + db $55 ; sprite dimensions + + dw CaterpiePicFront + dw CaterpiePicBack + + ; attacks known at lvl 0 + db TACKLE + db STRING_SHOT + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %00000000 + db %00000000 + db %00000000 + db %00000000 + db %00000000 + db %00000000 + db %00000000 + + db 0 ; padding + +MetapodBaseStats: ; 384f6 (e:44f6) + db DEX_METAPOD ; pokedex id + db 50 ; base hp + db 20 ; base attack + db 55 ; base defense + db 30 ; base speed + db 25 ; base special + + db BUG ; species type 1 + db BUG ; species type 2 + + db 120 ; catch rate + db 72 ; base exp yield + db $55 ; sprite dimensions + + dw MetapodPicFront + dw MetapodPicBack + + ; attacks known at lvl 0 + db HARDEN + db 0 + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %00000000 + db %00000000 + db %00000000 + db %00000000 + db %00000000 + db %00000000 + db %00000000 + + db 0 ; padding + +ButterfreeBaseStats: ; 38512 (e:4512) + db DEX_BUTTERFREE ; pokedex id + db 60 ; base hp + db 45 ; base attack + db 50 ; base defense + db 70 ; base speed + db 80 ; base special + + db BUG ; species type 1 + db FLYING ; species type 2 + + db 45 ; catch rate + db 160 ; base exp yield + db $77 ; sprite dimensions + + dw ButterfreePicFront + dw ButterfreePicBack + + ; attacks known at lvl 0 + db CONFUSION + db 0 + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %00101010 + db %01000011 + db %00111000 + db %11110000 + db %01000011 + db %00101000 + db %00000010 + + db 0 ; padding + +WeedleBaseStats: ; 3852e (e:452e) + db DEX_WEEDLE ; pokedex id + db 40 ; base hp + db 35 ; base attack + db 30 ; base defense + db 50 ; base speed + db 20 ; base special + + db BUG ; species type 1 + db POISON ; species type 2 + + db 255 ; catch rate + db 52 ; base exp yield + db $55 ; sprite dimensions + + dw WeedlePicFront + dw WeedlePicBack + + ; attacks known at lvl 0 + db POISON_STING + db STRING_SHOT + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %00000000 + db %00000000 + db %00000000 + db %00000000 + db %00000000 + db %00000000 + db %00000000 + + db 0 ; padding + +KakunaBaseStats: ; 3854a (e:454a) + db DEX_KAKUNA ; pokedex id + db 45 ; base hp + db 25 ; base attack + db 50 ; base defense + db 35 ; base speed + db 25 ; base special + + db BUG ; species type 1 + db POISON ; species type 2 + + db 120 ; catch rate + db 71 ; base exp yield + db $55 ; sprite dimensions + + dw KakunaPicFront + dw KakunaPicBack + + ; attacks known at lvl 0 + db HARDEN + db 0 + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %00000000 + db %00000000 + db %00000000 + db %00000000 + db %00000000 + db %00000000 + db %00000000 + + db 0 ; padding + +BeedrillBaseStats: ; 38566 (e:4566) + db DEX_BEEDRILL ; pokedex id + db 65 ; base hp + db 80 ; base attack + db 40 ; base defense + db 75 ; base speed + db 45 ; base special + + db BUG ; species type 1 + db POISON ; species type 2 + + db 45 ; catch rate + db 159 ; base exp yield + db $77 ; sprite dimensions + + dw BeedrillPicFront + dw BeedrillPicBack + + ; attacks known at lvl 0 + db FURY_ATTACK + db 0 + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %00100100 + db %01000011 + db %00011000 + db %11000000 + db %11000011 + db %00001000 + db %00000110 + + db 0 ; padding + +PidgeyBaseStats: ; 38582 (e:4582) + db DEX_PIDGEY ; pokedex id + db 40 ; base hp + db 45 ; base attack + db 40 ; base defense + db 56 ; base speed + db 35 ; base special + + db NORMAL ; species type 1 + db FLYING ; species type 2 + + db 255 ; catch rate + db 55 ; base exp yield + db $55 ; sprite dimensions + + dw PidgeyPicFront + dw PidgeyPicBack + + ; attacks known at lvl 0 + db GUST + db 0 + db 0 + db 0 + + db 3 ; growth rate + + ; learnset + db %00101010 + db %00000011 + db %00001000 + db %11000000 + db %01000011 + db %00001100 + db %00001010 + + db 0 ; padding + +PidgeottoBaseStats: ; 3859e (e:459e) + db DEX_PIDGEOTTO ; pokedex id + db 63 ; base hp + db 60 ; base attack + db 55 ; base defense + db 71 ; base speed + db 50 ; base special + + db NORMAL ; species type 1 + db FLYING ; species type 2 + + db 120 ; catch rate + db 113 ; base exp yield + db $66 ; sprite dimensions + + dw PidgeottoPicFront + dw PidgeottoPicBack + + ; attacks known at lvl 0 + db GUST + db SAND_ATTACK + db 0 + db 0 + + db 3 ; growth rate + + ; learnset + db %00101010 + db %00000011 + db %00001000 + db %11000000 + db %01000011 + db %00001100 + db %00001010 + + db 0 ; padding + +PidgeotBaseStats: ; 385ba (e:45ba) + db DEX_PIDGEOT ; pokedex id + db 83 ; base hp + db 80 ; base attack + db 75 ; base defense + db 91 ; base speed + db 70 ; base special + + db NORMAL ; species type 1 + db FLYING ; species type 2 + + db 45 ; catch rate + db 172 ; base exp yield + db $77 ; sprite dimensions + + dw PidgeotPicFront + dw PidgeotPicBack + + ; attacks known at lvl 0 + db GUST + db SAND_ATTACK + db QUICK_ATTACK + db 0 + + db 3 ; growth rate + + ; learnset + db %00101010 + db %01000011 + db %00001000 + db %11000000 + db %01000011 + db %00001100 + db %00001010 + + db 0 ; padding + +RattataBaseStats: ; 385d6 (e:45d6) + db DEX_RATTATA ; pokedex id + db 30 ; base hp + db 56 ; base attack + db 35 ; base defense + db 72 ; base speed + db 25 ; base special + + db NORMAL ; species type 1 + db NORMAL ; species type 2 + + db 255 ; catch rate + db 57 ; base exp yield + db $55 ; sprite dimensions + + dw RattataPicFront + dw RattataPicBack + + ; attacks known at lvl 0 + db TACKLE + db TAIL_WHIP + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10100000 + db %00101111 + db %10001000 + db %11001001 + db %11000010 + db %00001000 + db %00000010 + + db 0 ; padding + +RaticateBaseStats: ; 385f2 (e:45f2) + db DEX_RATICATE ; pokedex id + db 55 ; base hp + db 81 ; base attack + db 60 ; base defense + db 97 ; base speed + db 50 ; base special + + db NORMAL ; species type 1 + db NORMAL ; species type 2 + + db 90 ; catch rate + db 116 ; base exp yield + db $66 ; sprite dimensions + + dw RaticatePicFront + dw RaticatePicBack + + ; attacks known at lvl 0 + db TACKLE + db TAIL_WHIP + db QUICK_ATTACK + db 0 + + db 0 ; growth rate + + ; learnset + db %10100000 + db %01111111 + db %10001000 + db %11001001 + db %11000010 + db %00001000 + db %00000010 + + db 0 ; padding + +SpearowBaseStats: ; 3860e (e:460e) + db DEX_SPEAROW ; pokedex id + db 40 ; base hp + db 60 ; base attack + db 30 ; base defense + db 70 ; base speed + db 31 ; base special + + db NORMAL ; species type 1 + db FLYING ; species type 2 + + db 255 ; catch rate + db 58 ; base exp yield + db $55 ; sprite dimensions + + dw SpearowPicFront + dw SpearowPicBack + + ; attacks known at lvl 0 + db PECK + db GROWL + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %00101010 + db %00000011 + db %00001000 + db %11000000 + db %01000010 + db %00001100 + db %00001010 + + db 0 ; padding + +FearowBaseStats: ; 3862a (e:462a) + db DEX_FEAROW ; pokedex id + db 65 ; base hp + db 90 ; base attack + db 65 ; base defense + db 100 ; base speed + db 61 ; base special + + db NORMAL ; species type 1 + db FLYING ; species type 2 + + db 90 ; catch rate + db 162 ; base exp yield + db $77 ; sprite dimensions + + dw FearowPicFront + dw FearowPicBack + + ; attacks known at lvl 0 + db PECK + db GROWL + db LEER + db 0 + + db 0 ; growth rate + + ; learnset + db %00101010 + db %01000011 + db %00001000 + db %11000000 + db %01000010 + db %00001100 + db %00001010 + + db 0 ; padding + +EkansBaseStats: ; 38646 (e:4646) + db DEX_EKANS ; pokedex id + db 35 ; base hp + db 60 ; base attack + db 44 ; base defense + db 55 ; base speed + db 40 ; base special + + db POISON ; species type 1 + db POISON ; species type 2 + + db 255 ; catch rate + db 62 ; base exp yield + db $55 ; sprite dimensions + + dw EkansPicFront + dw EkansPicBack + + ; attacks known at lvl 0 + db WRAP + db LEER + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10100000 + db %00000011 + db %00011000 + db %11001110 + db %10000010 + db %10001000 + db %00100010 + + db 0 ; padding + +ArbokBaseStats: ; 38662 (e:4662) + db DEX_ARBOK ; pokedex id + db 60 ; base hp + db 85 ; base attack + db 69 ; base defense + db 80 ; base speed + db 65 ; base special + + db POISON ; species type 1 + db POISON ; species type 2 + + db 90 ; catch rate + db 147 ; base exp yield + db $77 ; sprite dimensions + + dw ArbokPicFront + dw ArbokPicBack + + ; attacks known at lvl 0 + db WRAP + db LEER + db POISON_STING + db 0 + + db 0 ; growth rate + + ; learnset + db %10100000 + db %01000011 + db %00011000 + db %11001110 + db %10000010 + db %10001000 + db %00100010 + + db 0 ; padding + +PikachuBaseStats: ; 3867e (e:467e) + db DEX_PIKACHU ; pokedex id + db 35 ; base hp + db 55 ; base attack + db 30 ; base defense + db 90 ; base speed + db 50 ; base special + + db ELECTRIC ; species type 1 + db ELECTRIC ; species type 2 + + db 190 ; catch rate + db 82 ; base exp yield + db $55 ; sprite dimensions + + dw PikachuPicFront + dw PikachuPicBack + + ; attacks known at lvl 0 + db THUNDERSHOCK + db GROWL + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10110001 + db %10000011 + db %10001101 + db %11000001 + db %11000011 + db %00011000 + db %01000010 + + db 0 ; padding + +RaichuBaseStats: ; 3869a (e:469a) + db DEX_RAICHU ; pokedex id + db 60 ; base hp + db 90 ; base attack + db 55 ; base defense + db 100 ; base speed + db 90 ; base special + + db ELECTRIC ; species type 1 + db ELECTRIC ; species type 2 + + db 75 ; catch rate + db 122 ; base exp yield + db $77 ; sprite dimensions + + dw RaichuPicFront + dw RaichuPicBack + + ; attacks known at lvl 0 + db THUNDERSHOCK + db GROWL + db THUNDER_WAVE + db 0 + + db 0 ; growth rate + + ; learnset + db %10110001 + db %11000011 + db %10001101 + db %11000001 + db %11000011 + db %00011000 + db %01000010 + + db 0 ; padding + +SandshrewBaseStats: ; 386b6 (e:46b6) + db DEX_SANDSHREW ; pokedex id + db 50 ; base hp + db 75 ; base attack + db 85 ; base defense + db 40 ; base speed + db 30 ; base special + + db GROUND ; species type 1 + db GROUND ; species type 2 + + db 255 ; catch rate + db 93 ; base exp yield + db $55 ; sprite dimensions + + dw SandshrewPicFront + dw SandshrewPicBack + + ; attacks known at lvl 0 + db SCRATCH + db 0 + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10100100 + db %00000011 + db %00001101 + db %11001110 + db %11000010 + db %10001000 + db %00100110 + + db 0 ; padding + +SandslashBaseStats: ; 386d2 (e:46d2) + db DEX_SANDSLASH ; pokedex id + db 75 ; base hp + db 100 ; base attack + db 110 ; base defense + db 65 ; base speed + db 55 ; base special + + db GROUND ; species type 1 + db GROUND ; species type 2 + + db 90 ; catch rate + db 163 ; base exp yield + db $66 ; sprite dimensions + + dw SandslashPicFront + dw SandslashPicBack + + ; attacks known at lvl 0 + db SCRATCH + db SAND_ATTACK + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10100100 + db %01000011 + db %00001101 + db %11001110 + db %11000010 + db %10001000 + db %00100110 + + db 0 ; padding + +NidoranFBaseStats: ; 386ee (e:46ee) + db DEX_NIDORAN_F ; pokedex id + db 55 ; base hp + db 47 ; base attack + db 52 ; base defense + db 41 ; base speed + db 40 ; base special + + db POISON ; species type 1 + db POISON ; species type 2 + + db 235 ; catch rate + db 59 ; base exp yield + db $55 ; sprite dimensions + + dw NidoranFPicFront + dw NidoranFPicBack + + ; attacks known at lvl 0 + db GROWL + db TACKLE + db 0 + db 0 + + db 3 ; growth rate + + ; learnset + db %10100000 + db %00100011 + db %10001000 + db %11000001 + db %10000011 + db %00001000 + db %00000010 + + db 0 ; padding + +NidorinaBaseStats: ; 3870a (e:470a) + db DEX_NIDORINA ; pokedex id + db 70 ; base hp + db 62 ; base attack + db 67 ; base defense + db 56 ; base speed + db 55 ; base special + + db POISON ; species type 1 + db POISON ; species type 2 + + db 120 ; catch rate + db 117 ; base exp yield + db $66 ; sprite dimensions + + dw NidorinaPicFront + dw NidorinaPicBack + + ; attacks known at lvl 0 + db GROWL + db TACKLE + db SCRATCH + db 0 + + db 3 ; growth rate + + ; learnset + db %11100000 + db %00111111 + db %10001000 + db %11000001 + db %10000011 + db %00001000 + db %00000010 + + db 0 ; padding + +NidoqueenBaseStats: ; 38726 (e:4726) + db DEX_NIDOQUEEN ; pokedex id + db 90 ; base hp + db 82 ; base attack + db 87 ; base defense + db 76 ; base speed + db 75 ; base special + + db POISON ; species type 1 + db GROUND ; species type 2 + + db 45 ; catch rate + db 194 ; base exp yield + db $77 ; sprite dimensions + + dw NidoqueenPicFront + dw NidoqueenPicBack + + ; attacks known at lvl 0 + db TACKLE + db SCRATCH + db TAIL_WHIP + db BODY_SLAM + + db 3 ; growth rate + + ; learnset + db %11110001 + db %11111111 + db %10001111 + db %11000111 + db %10100011 + db %10001000 + db %00110010 + + db 0 ; padding + +NidoranMBaseStats: ; 38742 (e:4742) + db DEX_NIDORAN_M ; pokedex id + db 46 ; base hp + db 57 ; base attack + db 40 ; base defense + db 50 ; base speed + db 40 ; base special + + db POISON ; species type 1 + db POISON ; species type 2 + + db 235 ; catch rate + db 60 ; base exp yield + db $55 ; sprite dimensions + + dw NidoranMPicFront + dw NidoranMPicBack + + ; attacks known at lvl 0 + db LEER + db TACKLE + db 0 + db 0 + + db 3 ; growth rate + + ; learnset + db %11100000 + db %00100011 + db %10001000 + db %11000001 + db %10000011 + db %00001000 + db %00000010 + + db 0 ; padding + +NidorinoBaseStats: ; 3875e (e:475e) + db DEX_NIDORINO ; pokedex id + db 61 ; base hp + db 72 ; base attack + db 57 ; base defense + db 65 ; base speed + db 55 ; base special + + db POISON ; species type 1 + db POISON ; species type 2 + + db 120 ; catch rate + db 118 ; base exp yield + db $66 ; sprite dimensions + + dw NidorinoPicFront + dw NidorinoPicBack + + ; attacks known at lvl 0 + db LEER + db TACKLE + db HORN_ATTACK + db 0 + + db 3 ; growth rate + + ; learnset + db %11100000 + db %00111111 + db %10001000 + db %11000001 + db %10000011 + db %00001000 + db %00000010 + + db 0 ; padding + +NidokingBaseStats: ; 3877a (e:477a) + db DEX_NIDOKING ; pokedex id + db 81 ; base hp + db 92 ; base attack + db 77 ; base defense + db 85 ; base speed + db 75 ; base special + + db POISON ; species type 1 + db GROUND ; species type 2 + + db 45 ; catch rate + db 195 ; base exp yield + db $77 ; sprite dimensions + + dw NidokingPicFront + dw NidokingPicBack + + ; attacks known at lvl 0 + db TACKLE + db HORN_ATTACK + db POISON_STING + db THRASH + + db 3 ; growth rate + + ; learnset + db %11110001 + db %11111111 + db %10001111 + db %11000111 + db %10100011 + db %10001000 + db %00110010 + + db 0 ; padding + +ClefairyBaseStats: ; 38796 (e:4796) + db DEX_CLEFAIRY ; pokedex id + db 70 ; base hp + db 45 ; base attack + db 48 ; base defense + db 35 ; base speed + db 60 ; base special + + db NORMAL ; species type 1 + db NORMAL ; species type 2 + + db 150 ; catch rate + db 68 ; base exp yield + db $55 ; sprite dimensions + + dw ClefairyPicFront + dw ClefairyPicBack + + ; attacks known at lvl 0 + db POUND + db GROWL + db 0 + db 0 + + db 4 ; growth rate + + ; learnset + db %10110001 + db %00111111 + db %10101111 + db %11110001 + db %10100111 + db %00111000 + db %01100011 + + db 0 ; padding + +ClefableBaseStats: ; 387b2 (e:47b2) + db DEX_CLEFABLE ; pokedex id + db 95 ; base hp + db 70 ; base attack + db 73 ; base defense + db 60 ; base speed + db 85 ; base special + + db NORMAL ; species type 1 + db NORMAL ; species type 2 + + db 25 ; catch rate + db 129 ; base exp yield + db $66 ; sprite dimensions + + dw ClefablePicFront + dw ClefablePicBack + + ; attacks known at lvl 0 + db SING + db DOUBLESLAP + db MINIMIZE + db METRONOME + + db 4 ; growth rate + + ; learnset + db %10110001 + db %01111111 + db %10101111 + db %11110001 + db %10100111 + db %00111000 + db %01100011 + + db 0 ; padding + +VulpixBaseStats: ; 387ce (e:47ce) + db DEX_VULPIX ; pokedex id + db 38 ; base hp + db 41 ; base attack + db 40 ; base defense + db 65 ; base speed + db 65 ; base special + + db FIRE ; species type 1 + db FIRE ; species type 2 + + db 190 ; catch rate + db 63 ; base exp yield + db $66 ; sprite dimensions + + dw VulpixPicFront + dw VulpixPicBack + + ; attacks known at lvl 0 + db EMBER + db TAIL_WHIP + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10100000 + db %00000011 + db %00001000 + db %11001000 + db %11100011 + db %00001000 + db %00000010 + + db 0 ; padding + +NinetalesBaseStats: ; 387ea (e:47ea) + db DEX_NINETALES ; pokedex id + db 73 ; base hp + db 76 ; base attack + db 75 ; base defense + db 100 ; base speed + db 100 ; base special + + db FIRE ; species type 1 + db FIRE ; species type 2 + + db 75 ; catch rate + db 178 ; base exp yield + db $77 ; sprite dimensions + + dw NinetalesPicFront + dw NinetalesPicBack + + ; attacks known at lvl 0 + db EMBER + db TAIL_WHIP + db QUICK_ATTACK + db ROAR + + db 0 ; growth rate + + ; learnset + db %10100000 + db %01000011 + db %00001000 + db %11001000 + db %11100011 + db %00001000 + db %00000010 + + db 0 ; padding + +JigglypuffBaseStats: ; 38806 (e:4806) + db DEX_JIGGLYPUFF ; pokedex id + db 115 ; base hp + db 45 ; base attack + db 20 ; base defense + db 20 ; base speed + db 25 ; base special + + db NORMAL ; species type 1 + db NORMAL ; species type 2 + + db 170 ; catch rate + db 76 ; base exp yield + db $55 ; sprite dimensions + + dw JigglypuffPicFront + dw JigglypuffPicBack + + ; attacks known at lvl 0 + db SING + db 0 + db 0 + db 0 + + db 4 ; growth rate + + ; learnset + db %10110001 + db %00111111 + db %10101111 + db %11110001 + db %10100011 + db %00111000 + db %01100011 + + db 0 ; padding + +WigglytuffBaseStats: ; 38822 (e:4822) + db DEX_WIGGLYTUFF ; pokedex id + db 140 ; base hp + db 70 ; base attack + db 45 ; base defense + db 45 ; base speed + db 50 ; base special + + db NORMAL ; species type 1 + db NORMAL ; species type 2 + + db 50 ; catch rate + db 109 ; base exp yield + db $66 ; sprite dimensions + + dw WigglytuffPicFront + dw WigglytuffPicBack + + ; attacks known at lvl 0 + db SING + db DISABLE + db DEFENSE_CURL + db DOUBLESLAP + + db 4 ; growth rate + + ; learnset + db %10110001 + db %01111111 + db %10101111 + db %11110001 + db %10100011 + db %00111000 + db %01100011 + + db 0 ; padding + +ZubatBaseStats: ; 3883e (e:483e) + db DEX_ZUBAT ; pokedex id + db 40 ; base hp + db 45 ; base attack + db 35 ; base defense + db 55 ; base speed + db 40 ; base special + + db POISON ; species type 1 + db FLYING ; species type 2 + + db 255 ; catch rate + db 54 ; base exp yield + db $55 ; sprite dimensions + + dw ZubatPicFront + dw ZubatPicBack + + ; attacks known at lvl 0 + db LEECH_LIFE + db 0 + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %00101010 + db %00000011 + db %00011000 + db %11000000 + db %01000010 + db %00001000 + db %00000010 + + db 0 ; padding + +GolbatBaseStats: ; 3885a (e:485a) + db DEX_GOLBAT ; pokedex id + db 75 ; base hp + db 80 ; base attack + db 70 ; base defense + db 90 ; base speed + db 75 ; base special + + db POISON ; species type 1 + db FLYING ; species type 2 + + db 90 ; catch rate + db 171 ; base exp yield + db $77 ; sprite dimensions + + dw GolbatPicFront + dw GolbatPicBack + + ; attacks known at lvl 0 + db LEECH_LIFE + db SCREECH + db BITE + db 0 + + db 0 ; growth rate + + ; learnset + db %00101010 + db %01000011 + db %00011000 + db %11000000 + db %01000010 + db %00001000 + db %00000010 + + db 0 ; padding + +OddishBaseStats: ; 38876 (e:4876) + db DEX_ODDISH ; pokedex id + db 45 ; base hp + db 50 ; base attack + db 55 ; base defense + db 30 ; base speed + db 75 ; base special + + db GRASS ; species type 1 + db POISON ; species type 2 + + db 255 ; catch rate + db 78 ; base exp yield + db $55 ; sprite dimensions + + dw OddishPicFront + dw OddishPicBack + + ; attacks known at lvl 0 + db ABSORB + db 0 + db 0 + db 0 + + db 3 ; growth rate + + ; learnset + db %00100100 + db %00000011 + db %00111000 + db %11000000 + db %00000011 + db %00001000 + db %00000110 + + db 0 ; padding + +GloomBaseStats: ; 38892 (e:4892) + db DEX_GLOOM ; pokedex id + db 60 ; base hp + db 65 ; base attack + db 70 ; base defense + db 40 ; base speed + db 85 ; base special + + db GRASS ; species type 1 + db POISON ; species type 2 + + db 120 ; catch rate + db 132 ; base exp yield + db $66 ; sprite dimensions + + dw GloomPicFront + dw GloomPicBack + + ; attacks known at lvl 0 + db ABSORB + db POISONPOWDER + db STUN_SPORE + db 0 + + db 3 ; growth rate + + ; learnset + db %00100100 + db %00000011 + db %00111000 + db %11000000 + db %00000011 + db %00001000 + db %00000110 + + db 0 ; padding + +VileplumeBaseStats: ; 388ae (e:48ae) + db DEX_VILEPLUME ; pokedex id + db 75 ; base hp + db 80 ; base attack + db 85 ; base defense + db 50 ; base speed + db 100 ; base special + + db GRASS ; species type 1 + db POISON ; species type 2 + + db 45 ; catch rate + db 184 ; base exp yield + db $77 ; sprite dimensions + + dw VileplumePicFront + dw VileplumePicBack + + ; attacks known at lvl 0 + db STUN_SPORE + db SLEEP_POWDER + db ACID + db PETAL_DANCE + + db 3 ; growth rate + + ; learnset + db %10100100 + db %01000011 + db %00111000 + db %11000000 + db %00000011 + db %00001000 + db %00000110 + + db 0 ; padding + +ParasBaseStats: ; 388ca (e:48ca) + db DEX_PARAS ; pokedex id + db 35 ; base hp + db 70 ; base attack + db 55 ; base defense + db 25 ; base speed + db 55 ; base special + + db BUG ; species type 1 + db GRASS ; species type 2 + + db 190 ; catch rate + db 70 ; base exp yield + db $55 ; sprite dimensions + + dw ParasPicFront + dw ParasPicBack + + ; attacks known at lvl 0 + db SCRATCH + db 0 + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10100100 + db %00000011 + db %00111000 + db %11001000 + db %10000011 + db %00001000 + db %00000110 + + db 0 ; padding + +ParasectBaseStats: ; 388e6 (e:48e6) + db DEX_PARASECT ; pokedex id + db 60 ; base hp + db 95 ; base attack + db 80 ; base defense + db 30 ; base speed + db 80 ; base special + + db BUG ; species type 1 + db GRASS ; species type 2 + + db 75 ; catch rate + db 128 ; base exp yield + db $77 ; sprite dimensions + + dw ParasectPicFront + dw ParasectPicBack + + ; attacks known at lvl 0 + db SCRATCH + db STUN_SPORE + db LEECH_LIFE + db 0 + + db 0 ; growth rate + + ; learnset + db %10100100 + db %01000011 + db %00111000 + db %11001000 + db %10000011 + db %00001000 + db %00000110 + + db 0 ; padding + +VenonatBaseStats: ; 38902 (e:4902) + db DEX_VENONAT ; pokedex id + db 60 ; base hp + db 55 ; base attack + db 50 ; base defense + db 45 ; base speed + db 40 ; base special + + db BUG ; species type 1 + db POISON ; species type 2 + + db 190 ; catch rate + db 75 ; base exp yield + db $55 ; sprite dimensions + + dw VenonatPicFront + dw VenonatPicBack + + ; attacks known at lvl 0 + db TACKLE + db DISABLE + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %00100000 + db %00000011 + db %00111000 + db %11010000 + db %00000011 + db %00101000 + db %00000010 + + db 0 ; padding + +VenomothBaseStats: ; 3891e (e:491e) + db DEX_VENOMOTH ; pokedex id + db 70 ; base hp + db 65 ; base attack + db 60 ; base defense + db 90 ; base speed + db 90 ; base special + + db BUG ; species type 1 + db POISON ; species type 2 + + db 75 ; catch rate + db 138 ; base exp yield + db $77 ; sprite dimensions + + dw VenomothPicFront + dw VenomothPicBack + + ; attacks known at lvl 0 + db TACKLE + db DISABLE + db POISONPOWDER + db LEECH_LIFE + + db 0 ; growth rate + + ; learnset + db %00101010 + db %01000011 + db %00111000 + db %11110000 + db %01000011 + db %00101000 + db %00000010 + + db 0 ; padding + +DiglettBaseStats: ; 3893a (e:493a) + db DEX_DIGLETT ; pokedex id + db 10 ; base hp + db 55 ; base attack + db 25 ; base defense + db 95 ; base speed + db 45 ; base special + + db GROUND ; species type 1 + db GROUND ; species type 2 + + db 255 ; catch rate + db 81 ; base exp yield + db $55 ; sprite dimensions + + dw DiglettPicFront + dw DiglettPicBack + + ; attacks known at lvl 0 + db SCRATCH + db 0 + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10100000 + db %00000011 + db %00001000 + db %11001110 + db %00000010 + db %10001000 + db %00000010 + + db 0 ; padding + +DugtrioBaseStats: ; 38956 (e:4956) + db DEX_DUGTRIO ; pokedex id + db 35 ; base hp + db 80 ; base attack + db 50 ; base defense + db 120 ; base speed + db 70 ; base special + + db GROUND ; species type 1 + db GROUND ; species type 2 + + db 50 ; catch rate + db 153 ; base exp yield + db $66 ; sprite dimensions + + dw DugtrioPicFront + dw DugtrioPicBack + + ; attacks known at lvl 0 + db SCRATCH + db GROWL + db DIG + db 0 + + db 0 ; growth rate + + ; learnset + db %10100000 + db %01000011 + db %00001000 + db %11001110 + db %00000010 + db %10001000 + db %00000010 + + db 0 ; padding + +MeowthBaseStats: ; 38972 (e:4972) + db DEX_MEOWTH ; pokedex id + db 40 ; base hp + db 45 ; base attack + db 35 ; base defense + db 90 ; base speed + db 40 ; base special + + db NORMAL ; species type 1 + db NORMAL ; species type 2 + + db 255 ; catch rate + db 69 ; base exp yield + db $55 ; sprite dimensions + + dw MeowthPicFront + dw MeowthPicBack + + ; attacks known at lvl 0 + db SCRATCH + db GROWL + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10100000 + db %10001111 + db %10001000 + db %11000001 + db %11000010 + db %00001000 + db %00000010 + + db 0 ; padding + +PersianBaseStats: ; 3898e (e:498e) + db DEX_PERSIAN ; pokedex id + db 65 ; base hp + db 70 ; base attack + db 60 ; base defense + db 115 ; base speed + db 65 ; base special + + db NORMAL ; species type 1 + db NORMAL ; species type 2 + + db 90 ; catch rate + db 148 ; base exp yield + db $77 ; sprite dimensions + + dw PersianPicFront + dw PersianPicBack + + ; attacks known at lvl 0 + db SCRATCH + db GROWL + db BITE + db SCREECH + + db 0 ; growth rate + + ; learnset + db %10100000 + db %11001111 + db %10001000 + db %11000001 + db %11000010 + db %00001000 + db %00000010 + + db 0 ; padding + +PsyduckBaseStats: ; 389aa (e:49aa) + db DEX_PSYDUCK ; pokedex id + db 50 ; base hp + db 52 ; base attack + db 48 ; base defense + db 55 ; base speed + db 50 ; base special + + db WATER ; species type 1 + db WATER ; species type 2 + + db 190 ; catch rate + db 80 ; base exp yield + db $55 ; sprite dimensions + + dw PsyduckPicFront + dw PsyduckPicBack + + ; attacks known at lvl 0 + db SCRATCH + db 0 + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10110001 + db %10111111 + db %00001111 + db %11001000 + db %11000010 + db %00001000 + db %00110010 + + db 0 ; padding + +GolduckBaseStats: ; 389c6 (e:49c6) + db DEX_GOLDUCK ; pokedex id + db 80 ; base hp + db 82 ; base attack + db 78 ; base defense + db 85 ; base speed + db 80 ; base special + + db WATER ; species type 1 + db WATER ; species type 2 + + db 75 ; catch rate + db 174 ; base exp yield + db $77 ; sprite dimensions + + dw GolduckPicFront + dw GolduckPicBack + + ; attacks known at lvl 0 + db SCRATCH + db TAIL_WHIP + db DISABLE + db 0 + + db 0 ; growth rate + + ; learnset + db %10110001 + db %11111111 + db %00001111 + db %11001000 + db %11000010 + db %00001000 + db %00110010 + + db 0 ; padding + +MankeyBaseStats: ; 389e2 (e:49e2) + db DEX_MANKEY ; pokedex id + db 40 ; base hp + db 80 ; base attack + db 35 ; base defense + db 70 ; base speed + db 35 ; base special + + db FIGHTING ; species type 1 + db FIGHTING ; species type 2 + + db 190 ; catch rate + db 74 ; base exp yield + db $55 ; sprite dimensions + + dw MankeyPicFront + dw MankeyPicBack + + ; attacks known at lvl 0 + db SCRATCH + db LEER + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10110001 + db %10000011 + db %10001111 + db %11001001 + db %11000110 + db %10001000 + db %00100010 + + db 0 ; padding + +PrimeapeBaseStats: ; 389fe (e:49fe) + db DEX_PRIMEAPE ; pokedex id + db 65 ; base hp + db 105 ; base attack + db 60 ; base defense + db 95 ; base speed + db 60 ; base special + + db FIGHTING ; species type 1 + db FIGHTING ; species type 2 + + db 75 ; catch rate + db 149 ; base exp yield + db $77 ; sprite dimensions + + dw PrimeapePicFront + dw PrimeapePicBack + + ; attacks known at lvl 0 + db SCRATCH + db LEER + db KARATE_CHOP + db FURY_SWIPES + + db 0 ; growth rate + + ; learnset + db %10110001 + db %11000011 + db %10001111 + db %11001001 + db %11000110 + db %10001000 + db %00100010 + + db 0 ; padding + +GrowlitheBaseStats: ; 38a1a (e:4a1a) + db DEX_GROWLITHE ; pokedex id + db 55 ; base hp + db 70 ; base attack + db 45 ; base defense + db 60 ; base speed + db 50 ; base special + + db FIRE ; species type 1 + db FIRE ; species type 2 + + db 190 ; catch rate + db 91 ; base exp yield + db $55 ; sprite dimensions + + dw GrowlithePicFront + dw GrowlithePicBack + + ; attacks known at lvl 0 + db BITE + db ROAR + db 0 + db 0 + + db 5 ; growth rate + + ; learnset + db %10100000 + db %00000011 + db %01001000 + db %11001000 + db %11100011 + db %00001000 + db %00000010 + + db 0 ; padding + +ArcanineBaseStats: ; 38a36 (e:4a36) + db DEX_ARCANINE ; pokedex id + db 90 ; base hp + db 110 ; base attack + db 80 ; base defense + db 95 ; base speed + db 80 ; base special + + db FIRE ; species type 1 + db FIRE ; species type 2 + + db 75 ; catch rate + db 213 ; base exp yield + db $77 ; sprite dimensions + + dw ArcaninePicFront + dw ArcaninePicBack + + ; attacks known at lvl 0 + db ROAR + db EMBER + db LEER + db TAKE_DOWN + + db 5 ; growth rate + + ; learnset + db %10100000 + db %01000011 + db %01001000 + db %11101000 + db %11100011 + db %00001000 + db %00000010 + + db 0 ; padding + +PoliwagBaseStats: ; 38a52 (e:4a52) + db DEX_POLIWAG ; pokedex id + db 40 ; base hp + db 50 ; base attack + db 40 ; base defense + db 90 ; base speed + db 40 ; base special + + db WATER ; species type 1 + db WATER ; species type 2 + + db 255 ; catch rate + db 77 ; base exp yield + db $55 ; sprite dimensions + + dw PoliwagPicFront + dw PoliwagPicBack + + ; attacks known at lvl 0 + db BUBBLE + db 0 + db 0 + db 0 + + db 3 ; growth rate + + ; learnset + db %10100000 + db %00111111 + db %00001000 + db %11010000 + db %10000010 + db %00101000 + db %00010010 + + db 0 ; padding + +PoliwhirlBaseStats: ; 38a6e (e:4a6e) + db DEX_POLIWHIRL ; pokedex id + db 65 ; base hp + db 65 ; base attack + db 65 ; base defense + db 90 ; base speed + db 50 ; base special + + db WATER ; species type 1 + db WATER ; species type 2 + + db 120 ; catch rate + db 131 ; base exp yield + db $66 ; sprite dimensions + + dw PoliwhirlPicFront + dw PoliwhirlPicBack + + ; attacks known at lvl 0 + db BUBBLE + db HYPNOSIS + db WATER_GUN + db 0 + + db 3 ; growth rate + + ; learnset + db %10110001 + db %00111111 + db %00001111 + db %11010110 + db %10000110 + db %00101000 + db %00110010 + + db 0 ; padding + +PoliwrathBaseStats: ; 38a8a (e:4a8a) + db DEX_POLIWRATH ; pokedex id + db 90 ; base hp + db 85 ; base attack + db 95 ; base defense + db 70 ; base speed + db 70 ; base special + + db WATER ; species type 1 + db FIGHTING ; species type 2 + + db 45 ; catch rate + db 185 ; base exp yield + db $77 ; sprite dimensions + + dw PoliwrathPicFront + dw PoliwrathPicBack + + ; attacks known at lvl 0 + db HYPNOSIS + db WATER_GUN + db DOUBLESLAP + db BODY_SLAM + + db 3 ; growth rate + + ; learnset + db %10110001 + db %01111111 + db %00001111 + db %11010110 + db %10000110 + db %00101000 + db %00110010 + + db 0 ; padding + +AbraBaseStats: ; 38aa6 (e:4aa6) + db DEX_ABRA ; pokedex id + db 25 ; base hp + db 20 ; base attack + db 15 ; base defense + db 90 ; base speed + db 105 ; base special + + db PSYCHIC ; species type 1 + db PSYCHIC ; species type 2 + + db 200 ; catch rate + db 73 ; base exp yield + db $55 ; sprite dimensions + + dw AbraPicFront + dw AbraPicBack + + ; attacks known at lvl 0 + db TELEPORT + db 0 + db 0 + db 0 + + db 3 ; growth rate + + ; learnset + db %10110001 + db %00000011 + db %00001111 + db %11110000 + db %10000111 + db %00111000 + db %01000011 + + db 0 ; padding + +KadabraBaseStats: ; 38ac2 (e:4ac2) + db DEX_KADABRA ; pokedex id + db 40 ; base hp + db 35 ; base attack + db 30 ; base defense + db 105 ; base speed + db 120 ; base special + + db PSYCHIC ; species type 1 + db PSYCHIC ; species type 2 + + db 100 ; catch rate + db 145 ; base exp yield + db $66 ; sprite dimensions + + dw KadabraPicFront + dw KadabraPicBack + + ; attacks known at lvl 0 + db TELEPORT + db CONFUSION + db DISABLE + db 0 + + db 3 ; growth rate + + ; learnset + db %10110001 + db %00000011 + db %00001111 + db %11111000 + db %10000111 + db %00111000 + db %01000011 + + db 0 ; padding + +AlakazamBaseStats: ; 38ade (e:4ade) + db DEX_ALAKAZAM ; pokedex id + db 55 ; base hp + db 50 ; base attack + db 45 ; base defense + db 120 ; base speed + db 135 ; base special + + db PSYCHIC ; species type 1 + db PSYCHIC ; species type 2 + + db 50 ; catch rate + db 186 ; base exp yield + db $77 ; sprite dimensions + + dw AlakazamPicFront + dw AlakazamPicBack + + ; attacks known at lvl 0 + db TELEPORT + db CONFUSION + db DISABLE + db 0 + + db 3 ; growth rate + + ; learnset + db %10110001 + db %01000011 + db %00001111 + db %11111000 + db %10000111 + db %00111000 + db %01000011 + + db 0 ; padding + +MachopBaseStats: ; 38afa (e:4afa) + db DEX_MACHOP ; pokedex id + db 70 ; base hp + db 80 ; base attack + db 50 ; base defense + db 35 ; base speed + db 35 ; base special + + db FIGHTING ; species type 1 + db FIGHTING ; species type 2 + + db 180 ; catch rate + db 88 ; base exp yield + db $55 ; sprite dimensions + + dw MachopPicFront + dw MachopPicBack + + ; attacks known at lvl 0 + db KARATE_CHOP + db 0 + db 0 + db 0 + + db 3 ; growth rate + + ; learnset + db %10110001 + db %00000011 + db %00001111 + db %11001110 + db %10100110 + db %10001000 + db %00100010 + + db 0 ; padding + +MachokeBaseStats: ; 38b16 (e:4b16) + db DEX_MACHOKE ; pokedex id + db 80 ; base hp + db 100 ; base attack + db 70 ; base defense + db 45 ; base speed + db 50 ; base special + + db FIGHTING ; species type 1 + db FIGHTING ; species type 2 + + db 90 ; catch rate + db 146 ; base exp yield + db $77 ; sprite dimensions + + dw MachokePicFront + dw MachokePicBack + + ; attacks known at lvl 0 + db KARATE_CHOP + db LOW_KICK + db LEER + db 0 + + db 3 ; growth rate + + ; learnset + db %10110001 + db %00000011 + db %00001111 + db %11001110 + db %10100110 + db %10001000 + db %00100010 + + db 0 ; padding + +MachampBaseStats: ; 38b32 (e:4b32) + db DEX_MACHAMP ; pokedex id + db 90 ; base hp + db 130 ; base attack + db 80 ; base defense + db 55 ; base speed + db 65 ; base special + + db FIGHTING ; species type 1 + db FIGHTING ; species type 2 + + db 45 ; catch rate + db 193 ; base exp yield + db $77 ; sprite dimensions + + dw MachampPicFront + dw MachampPicBack + + ; attacks known at lvl 0 + db KARATE_CHOP + db LOW_KICK + db LEER + db 0 + + db 3 ; growth rate + + ; learnset + db %10110001 + db %01000011 + db %00001111 + db %11001110 + db %10100110 + db %10001000 + db %00100010 + + db 0 ; padding + +BellsproutBaseStats: ; 38b4e (e:4b4e) + db DEX_BELLSPROUT ; pokedex id + db 50 ; base hp + db 75 ; base attack + db 35 ; base defense + db 40 ; base speed + db 70 ; base special + + db GRASS ; species type 1 + db POISON ; species type 2 + + db 255 ; catch rate + db 84 ; base exp yield + db $55 ; sprite dimensions + + dw BellsproutPicFront + dw BellsproutPicBack + + ; attacks known at lvl 0 + db VINE_WHIP + db GROWTH + db 0 + db 0 + + db 3 ; growth rate + + ; learnset + db %00100100 + db %00000011 + db %00111000 + db %11000000 + db %00000011 + db %00001000 + db %00000110 + + db 0 ; padding + +WeepinbellBaseStats: ; 38b6a (e:4b6a) + db DEX_WEEPINBELL ; pokedex id + db 65 ; base hp + db 90 ; base attack + db 50 ; base defense + db 55 ; base speed + db 85 ; base special + + db GRASS ; species type 1 + db POISON ; species type 2 + + db 120 ; catch rate + db 151 ; base exp yield + db $66 ; sprite dimensions + + dw WeepinbellPicFront + dw WeepinbellPicBack + + ; attacks known at lvl 0 + db VINE_WHIP + db GROWTH + db WRAP + db 0 + + db 3 ; growth rate + + ; learnset + db %00100100 + db %00000011 + db %00111000 + db %11000000 + db %00000011 + db %00001000 + db %00000110 + + db 0 ; padding + +VictreebelBaseStats: ; 38b86 (e:4b86) + db DEX_VICTREEBEL ; pokedex id + db 80 ; base hp + db 105 ; base attack + db 65 ; base defense + db 70 ; base speed + db 100 ; base special + + db GRASS ; species type 1 + db POISON ; species type 2 + + db 45 ; catch rate + db 191 ; base exp yield + db $77 ; sprite dimensions + + dw VictreebelPicFront + dw VictreebelPicBack + + ; attacks known at lvl 0 + db SLEEP_POWDER + db STUN_SPORE + db ACID + db RAZOR_LEAF + + db 3 ; growth rate + + ; learnset + db %10100100 + db %01000011 + db %00111000 + db %11000000 + db %00000011 + db %00001000 + db %00000110 + + db 0 ; padding + +TentacoolBaseStats: ; 38ba2 (e:4ba2) + db DEX_TENTACOOL ; pokedex id + db 40 ; base hp + db 40 ; base attack + db 35 ; base defense + db 70 ; base speed + db 100 ; base special + + db WATER ; species type 1 + db POISON ; species type 2 + + db 190 ; catch rate + db 105 ; base exp yield + db $55 ; sprite dimensions + + dw TentacoolPicFront + dw TentacoolPicBack + + ; attacks known at lvl 0 + db ACID + db 0 + db 0 + db 0 + + db 5 ; growth rate + + ; learnset + db %00100100 + db %00111111 + db %00011000 + db %11000000 + db %10000011 + db %00001000 + db %00010110 + + db 0 ; padding + +TentacruelBaseStats: ; 38bbe (e:4bbe) + db DEX_TENTACRUEL ; pokedex id + db 80 ; base hp + db 70 ; base attack + db 65 ; base defense + db 100 ; base speed + db 120 ; base special + + db WATER ; species type 1 + db POISON ; species type 2 + + db 60 ; catch rate + db 205 ; base exp yield + db $66 ; sprite dimensions + + dw TentacruelPicFront + dw TentacruelPicBack + + ; attacks known at lvl 0 + db ACID + db SUPERSONIC + db WRAP + db 0 + + db 5 ; growth rate + + ; learnset + db %00100100 + db %01111111 + db %00011000 + db %11000000 + db %10000011 + db %00001000 + db %00010110 + + db 0 ; padding + +GeodudeBaseStats: ; 38bda (e:4bda) + db DEX_GEODUDE ; pokedex id + db 40 ; base hp + db 80 ; base attack + db 100 ; base defense + db 20 ; base speed + db 30 ; base special + + db ROCK ; species type 1 + db GROUND ; species type 2 + + db 255 ; catch rate + db 86 ; base exp yield + db $55 ; sprite dimensions + + dw GeodudePicFront + dw GeodudePicBack + + ; attacks known at lvl 0 + db TACKLE + db 0 + db 0 + db 0 + + db 3 ; growth rate + + ; learnset + db %10100001 + db %00000011 + db %00001111 + db %11001110 + db %00101110 + db %11001000 + db %00100010 + + db 0 ; padding + +GravelerBaseStats: ; 38bf6 (e:4bf6) + db DEX_GRAVELER ; pokedex id + db 55 ; base hp + db 95 ; base attack + db 115 ; base defense + db 35 ; base speed + db 45 ; base special + + db ROCK ; species type 1 + db GROUND ; species type 2 + + db 120 ; catch rate + db 134 ; base exp yield + db $66 ; sprite dimensions + + dw GravelerPicFront + dw GravelerPicBack + + ; attacks known at lvl 0 + db TACKLE + db DEFENSE_CURL + db 0 + db 0 + + db 3 ; growth rate + + ; learnset + db %10100001 + db %00000011 + db %00001111 + db %11001110 + db %00101110 + db %11001000 + db %00100010 + + db 0 ; padding + +GolemBaseStats: ; 38c12 (e:4c12) + db DEX_GOLEM ; pokedex id + db 80 ; base hp + db 110 ; base attack + db 130 ; base defense + db 45 ; base speed + db 55 ; base special + + db ROCK ; species type 1 + db GROUND ; species type 2 + + db 45 ; catch rate + db 177 ; base exp yield + db $66 ; sprite dimensions + + dw GolemPicFront + dw GolemPicBack + + ; attacks known at lvl 0 + db TACKLE + db DEFENSE_CURL + db 0 + db 0 + + db 3 ; growth rate + + ; learnset + db %10110001 + db %01000011 + db %00001111 + db %11001110 + db %00101110 + db %11001000 + db %00100010 + + db 0 ; padding + +PonytaBaseStats: ; 38c2e (e:4c2e) + db DEX_PONYTA ; pokedex id + db 50 ; base hp + db 85 ; base attack + db 55 ; base defense + db 90 ; base speed + db 65 ; base special + + db FIRE ; species type 1 + db FIRE ; species type 2 + + db 190 ; catch rate + db 152 ; base exp yield + db $66 ; sprite dimensions + + dw PonytaPicFront + dw PonytaPicBack + + ; attacks known at lvl 0 + db EMBER + db 0 + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %11100000 + db %00000011 + db %00001000 + db %11000000 + db %11100011 + db %00001000 + db %00000010 + + db 0 ; padding + +RapidashBaseStats: ; 38c4a (e:4c4a) + db DEX_RAPIDASH ; pokedex id + db 65 ; base hp + db 100 ; base attack + db 70 ; base defense + db 105 ; base speed + db 80 ; base special + + db FIRE ; species type 1 + db FIRE ; species type 2 + + db 60 ; catch rate + db 192 ; base exp yield + db $77 ; sprite dimensions + + dw RapidashPicFront + dw RapidashPicBack + + ; attacks known at lvl 0 + db EMBER + db TAIL_WHIP + db STOMP + db GROWL + + db 0 ; growth rate + + ; learnset + db %11100000 + db %01000011 + db %00001000 + db %11000000 + db %11100011 + db %00001000 + db %00000010 + + db 0 ; padding + +SlowpokeBaseStats: ; 38c66 (e:4c66) + db DEX_SLOWPOKE ; pokedex id + db 90 ; base hp + db 65 ; base attack + db 65 ; base defense + db 15 ; base speed + db 40 ; base special + + db WATER ; species type 1 + db PSYCHIC ; species type 2 + + db 190 ; catch rate + db 99 ; base exp yield + db $55 ; sprite dimensions + + dw SlowpokePicFront + dw SlowpokePicBack + + ; attacks known at lvl 0 + db CONFUSION + db 0 + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10100000 + db %10111111 + db %00001000 + db %11111110 + db %11100011 + db %00111000 + db %01110011 + + db 0 ; padding + +SlowbroBaseStats: ; 38c82 (e:4c82) + db DEX_SLOWBRO ; pokedex id + db 95 ; base hp + db 75 ; base attack + db 110 ; base defense + db 30 ; base speed + db 80 ; base special + + db WATER ; species type 1 + db PSYCHIC ; species type 2 + + db 75 ; catch rate + db 164 ; base exp yield + db $77 ; sprite dimensions + + dw SlowbroPicFront + dw SlowbroPicBack + + ; attacks known at lvl 0 + db CONFUSION + db DISABLE + db HEADBUTT + db 0 + + db 0 ; growth rate + + ; learnset + db %10110001 + db %11111111 + db %00001111 + db %11111110 + db %11100011 + db %00111000 + db %01110011 + + db 0 ; padding + +MagnemiteBaseStats: ; 38c9e (e:4c9e) + db DEX_MAGNEMITE ; pokedex id + db 25 ; base hp + db 35 ; base attack + db 70 ; base defense + db 45 ; base speed + db 95 ; base special + + db ELECTRIC ; species type 1 + db ELECTRIC ; species type 2 + + db 190 ; catch rate + db 89 ; base exp yield + db $55 ; sprite dimensions + + dw MagnemitePicFront + dw MagnemitePicBack + + ; attacks known at lvl 0 + db TACKLE + db 0 + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %00100000 + db %00000011 + db %10001000 + db %11100001 + db %01000011 + db %00011000 + db %01000010 + + db 0 ; padding + +MagnetonBaseStats: ; 38cba (e:4cba) + db DEX_MAGNETON ; pokedex id + db 50 ; base hp + db 60 ; base attack + db 95 ; base defense + db 70 ; base speed + db 120 ; base special + + db ELECTRIC ; species type 1 + db ELECTRIC ; species type 2 + + db 60 ; catch rate + db 161 ; base exp yield + db $66 ; sprite dimensions + + dw MagnetonPicFront + dw MagnetonPicBack + + ; attacks known at lvl 0 + db TACKLE + db SONICBOOM + db THUNDERSHOCK + db 0 + + db 0 ; growth rate + + ; learnset + db %00100000 + db %01000011 + db %10001000 + db %11100001 + db %01000011 + db %00011000 + db %01000010 + + db 0 ; padding + +FarfetchdBaseStats: ; 38cd6 (e:4cd6) + db DEX_FARFETCH_D ; pokedex id + db 52 ; base hp + db 65 ; base attack + db 55 ; base defense + db 60 ; base speed + db 58 ; base special + + db NORMAL ; species type 1 + db FLYING ; species type 2 + + db 45 ; catch rate + db 94 ; base exp yield + db $66 ; sprite dimensions + + dw FarfetchdPicFront + dw FarfetchdPicBack + + ; attacks known at lvl 0 + db PECK + db SAND_ATTACK + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10101110 + db %00000011 + db %00001000 + db %11000000 + db %11000011 + db %00001000 + db %00001110 + + db 0 ; padding + +DoduoBaseStats: ; 38cf2 (e:4cf2) + db DEX_DODUO ; pokedex id + db 35 ; base hp + db 85 ; base attack + db 45 ; base defense + db 75 ; base speed + db 35 ; base special + + db NORMAL ; species type 1 + db FLYING ; species type 2 + + db 190 ; catch rate + db 96 ; base exp yield + db $55 ; sprite dimensions + + dw DoduoPicFront + dw DoduoPicBack + + ; attacks known at lvl 0 + db PECK + db 0 + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10101000 + db %00000011 + db %00001000 + db %11000000 + db %10000011 + db %00001100 + db %00001011 + + db 0 ; padding + +DodrioBaseStats: ; 38d0e (e:4d0e) + db DEX_DODRIO ; pokedex id + db 60 ; base hp + db 110 ; base attack + db 70 ; base defense + db 100 ; base speed + db 60 ; base special + + db NORMAL ; species type 1 + db FLYING ; species type 2 + + db 45 ; catch rate + db 158 ; base exp yield + db $77 ; sprite dimensions + + dw DodrioPicFront + dw DodrioPicBack + + ; attacks known at lvl 0 + db PECK + db GROWL + db FURY_ATTACK + db 0 + + db 0 ; growth rate + + ; learnset + db %10101000 + db %01000011 + db %00001000 + db %11000000 + db %10000011 + db %00001100 + db %00001011 + + db 0 ; padding + +SeelBaseStats: ; 38d2a (e:4d2a) + db DEX_SEEL ; pokedex id + db 65 ; base hp + db 45 ; base attack + db 55 ; base defense + db 45 ; base speed + db 70 ; base special + + db WATER ; species type 1 + db WATER ; species type 2 + + db 190 ; catch rate + db 100 ; base exp yield + db $66 ; sprite dimensions + + dw SeelPicFront + dw SeelPicBack + + ; attacks known at lvl 0 + db HEADBUTT + db 0 + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %11100000 + db %10111111 + db %00001000 + db %11000000 + db %10000010 + db %00001000 + db %00110010 + + db 0 ; padding + +DewgongBaseStats: ; 38d46 (e:4d46) + db DEX_DEWGONG ; pokedex id + db 90 ; base hp + db 70 ; base attack + db 80 ; base defense + db 70 ; base speed + db 95 ; base special + + db WATER ; species type 1 + db ICE ; species type 2 + + db 75 ; catch rate + db 176 ; base exp yield + db $66 ; sprite dimensions + + dw DewgongPicFront + dw DewgongPicBack + + ; attacks known at lvl 0 + db HEADBUTT + db GROWL + db AURORA_BEAM + db 0 + + db 0 ; growth rate + + ; learnset + db %11100000 + db %11111111 + db %00001000 + db %11000000 + db %10000010 + db %00001000 + db %00110010 + + db 0 ; padding + +GrimerBaseStats: ; 38d62 (e:4d62) + db DEX_GRIMER ; pokedex id + db 80 ; base hp + db 80 ; base attack + db 50 ; base defense + db 25 ; base speed + db 40 ; base special + + db POISON ; species type 1 + db POISON ; species type 2 + + db 190 ; catch rate + db 90 ; base exp yield + db $55 ; sprite dimensions + + dw GrimerPicFront + dw GrimerPicBack + + ; attacks known at lvl 0 + db POUND + db DISABLE + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10100000 + db %00000000 + db %10011000 + db %11000001 + db %00101010 + db %01001000 + db %00000010 + + db 0 ; padding + +MukBaseStats: ; 38d7e (e:4d7e) + db DEX_MUK ; pokedex id + db 105 ; base hp + db 105 ; base attack + db 75 ; base defense + db 50 ; base speed + db 65 ; base special + + db POISON ; species type 1 + db POISON ; species type 2 + + db 75 ; catch rate + db 157 ; base exp yield + db $77 ; sprite dimensions + + dw MukPicFront + dw MukPicBack + + ; attacks known at lvl 0 + db POUND + db DISABLE + db POISON_GAS + db 0 + + db 0 ; growth rate + + ; learnset + db %10100000 + db %01000000 + db %10011000 + db %11000001 + db %00101010 + db %01001000 + db %00000010 + + db 0 ; padding + +ShellderBaseStats: ; 38d9a (e:4d9a) + db DEX_SHELLDER ; pokedex id + db 30 ; base hp + db 65 ; base attack + db 100 ; base defense + db 40 ; base speed + db 45 ; base special + + db WATER ; species type 1 + db WATER ; species type 2 + + db 190 ; catch rate + db 97 ; base exp yield + db $55 ; sprite dimensions + + dw ShellderPicFront + dw ShellderPicBack + + ; attacks known at lvl 0 + db TACKLE + db WITHDRAW + db 0 + db 0 + + db 5 ; growth rate + + ; learnset + db %00100000 + db %00111111 + db %00001000 + db %11100000 + db %01001011 + db %01001000 + db %00010011 + + db 0 ; padding + +CloysterBaseStats: ; 38db6 (e:4db6) + db DEX_CLOYSTER ; pokedex id + db 50 ; base hp + db 95 ; base attack + db 180 ; base defense + db 70 ; base speed + db 85 ; base special + + db WATER ; species type 1 + db ICE ; species type 2 + + db 60 ; catch rate + db 203 ; base exp yield + db $77 ; sprite dimensions + + dw CloysterPicFront + dw CloysterPicBack + + ; attacks known at lvl 0 + db WITHDRAW + db SUPERSONIC + db CLAMP + db AURORA_BEAM + + db 5 ; growth rate + + ; learnset + db %00100000 + db %01111111 + db %00001000 + db %11100000 + db %01001011 + db %01001000 + db %00010011 + + db 0 ; padding + +GastlyBaseStats: ; 38dd2 (e:4dd2) + db DEX_GASTLY ; pokedex id + db 30 ; base hp + db 35 ; base attack + db 30 ; base defense + db 80 ; base speed + db 100 ; base special + + db GHOST ; species type 1 + db POISON ; species type 2 + + db 190 ; catch rate + db 95 ; base exp yield + db $77 ; sprite dimensions + + dw GastlyPicFront + dw GastlyPicBack + + ; attacks known at lvl 0 + db LICK + db CONFUSE_RAY + db NIGHT_SHADE + db 0 + + db 3 ; growth rate + + ; learnset + db %00100000 + db %00000000 + db %10011000 + db %11010001 + db %00001010 + db %01101010 + db %00000010 + + db 0 ; padding + +HaunterBaseStats: ; 38dee (e:4dee) + db DEX_HAUNTER ; pokedex id + db 45 ; base hp + db 50 ; base attack + db 45 ; base defense + db 95 ; base speed + db 115 ; base special + + db GHOST ; species type 1 + db POISON ; species type 2 + + db 90 ; catch rate + db 126 ; base exp yield + db $66 ; sprite dimensions + + dw HaunterPicFront + dw HaunterPicBack + + ; attacks known at lvl 0 + db LICK + db CONFUSE_RAY + db NIGHT_SHADE + db 0 + + db 3 ; growth rate + + ; learnset + db %00100000 + db %00000000 + db %10011000 + db %11010001 + db %00001010 + db %01101010 + db %00000010 + + db 0 ; padding + +GengarBaseStats: ; 38e0a (e:4e0a) + db DEX_GENGAR ; pokedex id + db 60 ; base hp + db 65 ; base attack + db 60 ; base defense + db 110 ; base speed + db 130 ; base special + + db GHOST ; species type 1 + db POISON ; species type 2 + + db 45 ; catch rate + db 190 ; base exp yield + db $66 ; sprite dimensions + + dw GengarPicFront + dw GengarPicBack + + ; attacks known at lvl 0 + db LICK + db CONFUSE_RAY + db NIGHT_SHADE + db 0 + + db 3 ; growth rate + + ; learnset + db %10110001 + db %01000011 + db %10011111 + db %11010001 + db %10001110 + db %01101010 + db %00100010 + + db 0 ; padding + +OnixBaseStats: ; 38e26 (e:4e26) + db DEX_ONIX ; pokedex id + db 35 ; base hp + db 45 ; base attack + db 160 ; base defense + db 70 ; base speed + db 30 ; base special + + db ROCK ; species type 1 + db GROUND ; species type 2 + + db 45 ; catch rate + db 108 ; base exp yield + db $77 ; sprite dimensions + + dw OnixPicFront + dw OnixPicBack + + ; attacks known at lvl 0 + db TACKLE + db SCREECH + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10100000 + db %00000011 + db %00001000 + db %11001110 + db %10001010 + db %11001000 + db %00100010 + + db 0 ; padding + +DrowzeeBaseStats: ; 38e42 (e:4e42) + db DEX_DROWZEE ; pokedex id + db 60 ; base hp + db 48 ; base attack + db 45 ; base defense + db 42 ; base speed + db 90 ; base special + + db PSYCHIC ; species type 1 + db PSYCHIC ; species type 2 + + db 190 ; catch rate + db 102 ; base exp yield + db $66 ; sprite dimensions + + dw DrowzeePicFront + dw DrowzeePicBack + + ; attacks known at lvl 0 + db POUND + db HYPNOSIS + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10110001 + db %00000011 + db %00001111 + db %11110000 + db %10000111 + db %00111010 + db %01000011 + + db 0 ; padding + +HypnoBaseStats: ; 38e5e (e:4e5e) + db DEX_HYPNO ; pokedex id + db 85 ; base hp + db 73 ; base attack + db 70 ; base defense + db 67 ; base speed + db 115 ; base special + + db PSYCHIC ; species type 1 + db PSYCHIC ; species type 2 + + db 75 ; catch rate + db 165 ; base exp yield + db $77 ; sprite dimensions + + dw HypnoPicFront + dw HypnoPicBack + + ; attacks known at lvl 0 + db POUND + db HYPNOSIS + db DISABLE + db CONFUSION + + db 0 ; growth rate + + ; learnset + db %10110001 + db %01000011 + db %00001111 + db %11110000 + db %10000111 + db %00111010 + db %01000011 + + db 0 ; padding + +KrabbyBaseStats: ; 38e7a (e:4e7a) + db DEX_KRABBY ; pokedex id + db 30 ; base hp + db 105 ; base attack + db 90 ; base defense + db 50 ; base speed + db 25 ; base special + + db WATER ; species type 1 + db WATER ; species type 2 + + db 225 ; catch rate + db 115 ; base exp yield + db $55 ; sprite dimensions + + dw KrabbyPicFront + dw KrabbyPicBack + + ; attacks known at lvl 0 + db BUBBLE + db LEER + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10100100 + db %00111111 + db %00001000 + db %11000000 + db %00000010 + db %00001000 + db %00110110 + + db 0 ; padding + +KinglerBaseStats: ; 38e96 (e:4e96) + db DEX_KINGLER ; pokedex id + db 55 ; base hp + db 130 ; base attack + db 115 ; base defense + db 75 ; base speed + db 50 ; base special + + db WATER ; species type 1 + db WATER ; species type 2 + + db 60 ; catch rate + db 206 ; base exp yield + db $77 ; sprite dimensions + + dw KinglerPicFront + dw KinglerPicBack + + ; attacks known at lvl 0 + db BUBBLE + db LEER + db VICEGRIP + db 0 + + db 0 ; growth rate + + ; learnset + db %10100100 + db %01111111 + db %00001000 + db %11000000 + db %00000010 + db %00001000 + db %00110110 + + db 0 ; padding + +VoltorbBaseStats: ; 38eb2 (e:4eb2) + db DEX_VOLTORB ; pokedex id + db 40 ; base hp + db 30 ; base attack + db 50 ; base defense + db 100 ; base speed + db 55 ; base special + + db ELECTRIC ; species type 1 + db ELECTRIC ; species type 2 + + db 190 ; catch rate + db 103 ; base exp yield + db $55 ; sprite dimensions + + dw VoltorbPicFront + dw VoltorbPicBack + + ; attacks known at lvl 0 + db TACKLE + db SCREECH + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %00100000 + db %00000001 + db %10001000 + db %11100001 + db %01001011 + db %01011000 + db %01000010 + + db 0 ; padding + +ElectrodeBaseStats: ; 38ece (e:4ece) + db DEX_ELECTRODE ; pokedex id + db 60 ; base hp + db 50 ; base attack + db 70 ; base defense + db 140 ; base speed + db 80 ; base special + + db ELECTRIC ; species type 1 + db ELECTRIC ; species type 2 + + db 60 ; catch rate + db 150 ; base exp yield + db $55 ; sprite dimensions + + dw ElectrodePicFront + dw ElectrodePicBack + + ; attacks known at lvl 0 + db TACKLE + db SCREECH + db SONICBOOM + db 0 + + db 0 ; growth rate + + ; learnset + db %00100000 + db %01000001 + db %10001000 + db %11100001 + db %11001011 + db %01011000 + db %01000010 + + db 0 ; padding + +ExeggcuteBaseStats: ; 38eea (e:4eea) + db DEX_EXEGGCUTE ; pokedex id + db 60 ; base hp + db 40 ; base attack + db 80 ; base defense + db 40 ; base speed + db 60 ; base special + + db GRASS ; species type 1 + db PSYCHIC ; species type 2 + + db 90 ; catch rate + db 98 ; base exp yield + db $77 ; sprite dimensions + + dw ExeggcutePicFront + dw ExeggcutePicBack + + ; attacks known at lvl 0 + db BARRAGE + db HYPNOSIS + db 0 + db 0 + + db 5 ; growth rate + + ; learnset + db %00100000 + db %00000011 + db %00001000 + db %11110000 + db %00011011 + db %01101000 + db %00000010 + + db 0 ; padding + +ExeggutorBaseStats: ; 38f06 (e:4f06) + db DEX_EXEGGUTOR ; pokedex id + db 95 ; base hp + db 95 ; base attack + db 85 ; base defense + db 55 ; base speed + db 125 ; base special + + db GRASS ; species type 1 + db PSYCHIC ; species type 2 + + db 45 ; catch rate + db 212 ; base exp yield + db $77 ; sprite dimensions + + dw ExeggutorPicFront + dw ExeggutorPicBack + + ; attacks known at lvl 0 + db BARRAGE + db HYPNOSIS + db 0 + db 0 + + db 5 ; growth rate + + ; learnset + db %00100000 + db %01000011 + db %00111000 + db %11110000 + db %00011011 + db %01101000 + db %00100010 + + db 0 ; padding + +CuboneBaseStats: ; 38f22 (e:4f22) + db DEX_CUBONE ; pokedex id + db 50 ; base hp + db 50 ; base attack + db 95 ; base defense + db 35 ; base speed + db 40 ; base special + + db GROUND ; species type 1 + db GROUND ; species type 2 + + db 190 ; catch rate + db 87 ; base exp yield + db $55 ; sprite dimensions + + dw CubonePicFront + dw CubonePicBack + + ; attacks known at lvl 0 + db BONE_CLUB + db GROWL + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10110001 + db %00111111 + db %00001111 + db %11001110 + db %10100010 + db %00001000 + db %00100010 + + db 0 ; padding + +MarowakBaseStats: ; 38f3e (e:4f3e) + db DEX_MAROWAK ; pokedex id + db 60 ; base hp + db 80 ; base attack + db 110 ; base defense + db 45 ; base speed + db 50 ; base special + + db GROUND ; species type 1 + db GROUND ; species type 2 + + db 75 ; catch rate + db 124 ; base exp yield + db $66 ; sprite dimensions + + dw MarowakPicFront + dw MarowakPicBack + + ; attacks known at lvl 0 + db BONE_CLUB + db GROWL + db LEER + db FOCUS_ENERGY + + db 0 ; growth rate + + ; learnset + db %10110001 + db %01111111 + db %00001111 + db %11001110 + db %10100010 + db %00001000 + db %00100010 + + db 0 ; padding + +HitmonleeBaseStats: ; 38f5a (e:4f5a) + db DEX_HITMONLEE ; pokedex id + db 50 ; base hp + db 120 ; base attack + db 53 ; base defense + db 87 ; base speed + db 35 ; base special + + db FIGHTING ; species type 1 + db FIGHTING ; species type 2 + + db 45 ; catch rate + db 139 ; base exp yield + db $77 ; sprite dimensions + + dw HitmonleePicFront + dw HitmonleePicBack + + ; attacks known at lvl 0 + db DOUBLE_KICK + db MEDITATE + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10110001 + db %00000011 + db %00001111 + db %11000000 + db %11000110 + db %00001000 + db %00100010 + + db 0 ; padding + +HitmonchanBaseStats: ; 38f76 (e:4f76) + db DEX_HITMONCHAN ; pokedex id + db 50 ; base hp + db 105 ; base attack + db 79 ; base defense + db 76 ; base speed + db 35 ; base special + + db FIGHTING ; species type 1 + db FIGHTING ; species type 2 + + db 45 ; catch rate + db 140 ; base exp yield + db $66 ; sprite dimensions + + dw HitmonchanPicFront + dw HitmonchanPicBack + + ; attacks known at lvl 0 + db COMET_PUNCH + db AGILITY + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10110001 + db %00000011 + db %00001111 + db %11000000 + db %11000110 + db %00001000 + db %00100010 + + db 0 ; padding + +LickitungBaseStats: ; 38f92 (e:4f92) + db DEX_LICKITUNG ; pokedex id + db 90 ; base hp + db 55 ; base attack + db 75 ; base defense + db 30 ; base speed + db 60 ; base special + + db NORMAL ; species type 1 + db NORMAL ; species type 2 + + db 45 ; catch rate + db 127 ; base exp yield + db $77 ; sprite dimensions + + dw LickitungPicFront + dw LickitungPicBack + + ; attacks known at lvl 0 + db WRAP + db SUPERSONIC + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10110101 + db %01111111 + db %10001111 + db %11000111 + db %10100010 + db %00001000 + db %00110110 + + db 0 ; padding + +KoffingBaseStats: ; 38fae (e:4fae) + db DEX_KOFFING ; pokedex id + db 40 ; base hp + db 65 ; base attack + db 95 ; base defense + db 35 ; base speed + db 60 ; base special + + db POISON ; species type 1 + db POISON ; species type 2 + + db 190 ; catch rate + db 114 ; base exp yield + db $66 ; sprite dimensions + + dw KoffingPicFront + dw KoffingPicBack + + ; attacks known at lvl 0 + db TACKLE + db SMOG + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %00100000 + db %00000000 + db %10001000 + db %11000001 + db %00101010 + db %01001000 + db %00000010 + + db 0 ; padding + +WeezingBaseStats: ; 38fca (e:4fca) + db DEX_WEEZING ; pokedex id + db 65 ; base hp + db 90 ; base attack + db 120 ; base defense + db 60 ; base speed + db 85 ; base special + + db POISON ; species type 1 + db POISON ; species type 2 + + db 60 ; catch rate + db 173 ; base exp yield + db $77 ; sprite dimensions + + dw WeezingPicFront + dw WeezingPicBack + + ; attacks known at lvl 0 + db TACKLE + db SMOG + db SLUDGE + db 0 + + db 0 ; growth rate + + ; learnset + db %00100000 + db %01000000 + db %10001000 + db %11000001 + db %00101010 + db %01001000 + db %00000010 + + db 0 ; padding + +RhyhornBaseStats: ; 38fe6 (e:4fe6) + db DEX_RHYHORN ; pokedex id + db 80 ; base hp + db 85 ; base attack + db 95 ; base defense + db 25 ; base speed + db 30 ; base special + + db GROUND ; species type 1 + db ROCK ; species type 2 + + db 120 ; catch rate + db 135 ; base exp yield + db $77 ; sprite dimensions + + dw RhyhornPicFront + dw RhyhornPicBack + + ; attacks known at lvl 0 + db HORN_ATTACK + db 0 + db 0 + db 0 + + db 5 ; growth rate + + ; learnset + db %11100000 + db %00000011 + db %10001000 + db %11001111 + db %10100010 + db %10001000 + db %00100010 + + db 0 ; padding + +RhydonBaseStats: ; 39002 (e:5002) + db DEX_RHYDON ; pokedex id + db 105 ; base hp + db 130 ; base attack + db 120 ; base defense + db 40 ; base speed + db 45 ; base special + + db GROUND ; species type 1 + db ROCK ; species type 2 + + db 60 ; catch rate + db 204 ; base exp yield + db $77 ; sprite dimensions + + dw RhydonPicFront + dw RhydonPicBack + + ; attacks known at lvl 0 + db HORN_ATTACK + db STOMP + db TAIL_WHIP + db FURY_ATTACK + + db 5 ; growth rate + + ; learnset + db %11110001 + db %11111111 + db %10001111 + db %11001111 + db %10100010 + db %10001000 + db %00110010 + + db 0 ; padding + +ChanseyBaseStats: ; 3901e (e:501e) + db DEX_CHANSEY ; pokedex id + db 250 ; base hp + db 5 ; base attack + db 5 ; base defense + db 50 ; base speed + db 105 ; base special + + db NORMAL ; species type 1 + db NORMAL ; species type 2 + + db 30 ; catch rate + db 255 ; base exp yield + db $66 ; sprite dimensions + + dw ChanseyPicFront + dw ChanseyPicBack + + ; attacks known at lvl 0 + db POUND + db DOUBLESLAP + db 0 + db 0 + + db 4 ; growth rate + + ; learnset + db %10110001 + db %01111111 + db %10101111 + db %11110001 + db %10110111 + db %00111001 + db %01100011 + + db 0 ; padding + +TangelaBaseStats: ; 3903a (e:503a) + db DEX_TANGELA ; pokedex id + db 65 ; base hp + db 55 ; base attack + db 115 ; base defense + db 60 ; base speed + db 100 ; base special + + db GRASS ; species type 1 + db GRASS ; species type 2 + + db 45 ; catch rate + db 166 ; base exp yield + db $66 ; sprite dimensions + + dw TangelaPicFront + dw TangelaPicBack + + ; attacks known at lvl 0 + db CONSTRICT + db BIND + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10100100 + db %01000011 + db %00111000 + db %11000000 + db %10000010 + db %00001000 + db %00000110 + + db 0 ; padding + +KangaskhanBaseStats: ; 39056 (e:5056) + db DEX_KANGASKHAN ; pokedex id + db 105 ; base hp + db 95 ; base attack + db 80 ; base defense + db 90 ; base speed + db 40 ; base special + + db NORMAL ; species type 1 + db NORMAL ; species type 2 + + db 45 ; catch rate + db 175 ; base exp yield + db $77 ; sprite dimensions + + dw KangaskhanPicFront + dw KangaskhanPicBack + + ; attacks known at lvl 0 + db COMET_PUNCH + db RAGE + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10110001 + db %01111111 + db %10001111 + db %11000111 + db %10100010 + db %10001000 + db %00110010 + + db 0 ; padding + +HorseaBaseStats: ; 39072 (e:5072) + db DEX_HORSEA ; pokedex id + db 30 ; base hp + db 40 ; base attack + db 70 ; base defense + db 60 ; base speed + db 70 ; base special + + db WATER ; species type 1 + db WATER ; species type 2 + + db 225 ; catch rate + db 83 ; base exp yield + db $55 ; sprite dimensions + + dw HorseaPicFront + dw HorseaPicBack + + ; attacks known at lvl 0 + db BUBBLE + db 0 + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %00100000 + db %00111111 + db %00001000 + db %11000000 + db %11000010 + db %00001000 + db %00010010 + + db 0 ; padding + +SeadraBaseStats: ; 3908e (e:508e) + db DEX_SEADRA ; pokedex id + db 55 ; base hp + db 65 ; base attack + db 95 ; base defense + db 85 ; base speed + db 95 ; base special + + db WATER ; species type 1 + db WATER ; species type 2 + + db 75 ; catch rate + db 155 ; base exp yield + db $66 ; sprite dimensions + + dw SeadraPicFront + dw SeadraPicBack + + ; attacks known at lvl 0 + db BUBBLE + db SMOKESCREEN + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %00100000 + db %01111111 + db %00001000 + db %11000000 + db %11000010 + db %00001000 + db %00010010 + + db 0 ; padding + +GoldeenBaseStats: ; 390aa (e:50aa) + db DEX_GOLDEEN ; pokedex id + db 45 ; base hp + db 67 ; base attack + db 60 ; base defense + db 63 ; base speed + db 50 ; base special + + db WATER ; species type 1 + db WATER ; species type 2 + + db 225 ; catch rate + db 111 ; base exp yield + db $66 ; sprite dimensions + + dw GoldeenPicFront + dw GoldeenPicBack + + ; attacks known at lvl 0 + db PECK + db TAIL_WHIP + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %01100000 + db %00111111 + db %00001000 + db %11000000 + db %11000010 + db %00001000 + db %00010010 + + db 0 ; padding + +SeakingBaseStats: ; 390c6 (e:50c6) + db DEX_SEAKING ; pokedex id + db 80 ; base hp + db 92 ; base attack + db 65 ; base defense + db 68 ; base speed + db 80 ; base special + + db WATER ; species type 1 + db WATER ; species type 2 + + db 60 ; catch rate + db 170 ; base exp yield + db $77 ; sprite dimensions + + dw SeakingPicFront + dw SeakingPicBack + + ; attacks known at lvl 0 + db PECK + db TAIL_WHIP + db SUPERSONIC + db 0 + + db 0 ; growth rate + + ; learnset + db %01100000 + db %01111111 + db %00001000 + db %11000000 + db %11000010 + db %00001000 + db %00010010 + + db 0 ; padding + +StaryuBaseStats: ; 390e2 (e:50e2) + db DEX_STARYU ; pokedex id + db 30 ; base hp + db 45 ; base attack + db 55 ; base defense + db 85 ; base speed + db 70 ; base special + + db WATER ; species type 1 + db WATER ; species type 2 + + db 225 ; catch rate + db 106 ; base exp yield + db $66 ; sprite dimensions + + dw StaryuPicFront + dw StaryuPicBack + + ; attacks known at lvl 0 + db TACKLE + db 0 + db 0 + db 0 + + db 5 ; growth rate + + ; learnset + db %00100000 + db %00111111 + db %10001000 + db %11110001 + db %11000011 + db %00111000 + db %01010011 + + db 0 ; padding + +StarmieBaseStats: ; 390fe (e:50fe) + db DEX_STARMIE ; pokedex id + db 60 ; base hp + db 75 ; base attack + db 85 ; base defense + db 115 ; base speed + db 100 ; base special + + db WATER ; species type 1 + db PSYCHIC ; species type 2 + + db 60 ; catch rate + db 207 ; base exp yield + db $66 ; sprite dimensions + + dw StarmiePicFront + dw StarmiePicBack + + ; attacks known at lvl 0 + db TACKLE + db WATER_GUN + db HARDEN + db 0 + + db 5 ; growth rate + + ; learnset + db %00100000 + db %01111111 + db %10001000 + db %11110001 + db %11000011 + db %00111000 + db %01010011 + + db 0 ; padding + +MrMimeBaseStats: ; 3911a (e:511a) + db DEX_MR_MIME ; pokedex id + db 40 ; base hp + db 45 ; base attack + db 65 ; base defense + db 90 ; base speed + db 100 ; base special + + db PSYCHIC ; species type 1 + db PSYCHIC ; species type 2 + + db 45 ; catch rate + db 136 ; base exp yield + db $66 ; sprite dimensions + + dw MrMimePicFront + dw MrMimePicBack + + ; attacks known at lvl 0 + db CONFUSION + db BARRIER + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10110001 + db %01000011 + db %10101111 + db %11110001 + db %10000111 + db %00111000 + db %01000010 + + db 0 ; padding + +ScytherBaseStats: ; 39136 (e:5136) + db DEX_SCYTHER ; pokedex id + db 70 ; base hp + db 110 ; base attack + db 80 ; base defense + db 105 ; base speed + db 55 ; base special + + db BUG ; species type 1 + db FLYING ; species type 2 + + db 45 ; catch rate + db 187 ; base exp yield + db $77 ; sprite dimensions + + dw ScytherPicFront + dw ScytherPicBack + + ; attacks known at lvl 0 + db QUICK_ATTACK + db 0 + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %00100100 + db %01000011 + db %00001000 + db %11000000 + db %11000010 + db %00001000 + db %00000110 + + db 0 ; padding + +JynxBaseStats: ; 39152 (e:5152) + db DEX_JYNX ; pokedex id + db 65 ; base hp + db 50 ; base attack + db 35 ; base defense + db 95 ; base speed + db 95 ; base special + + db ICE ; species type 1 + db PSYCHIC ; species type 2 + + db 45 ; catch rate + db 137 ; base exp yield + db $66 ; sprite dimensions + + dw JynxPicFront + dw JynxPicBack + + ; attacks known at lvl 0 + db POUND + db LOVELY_KISS + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10110001 + db %01111111 + db %00001111 + db %11110000 + db %10000111 + db %00101000 + db %00000010 + + db 0 ; padding + +ElectabuzzBaseStats: ; 3916e (e:516e) + db DEX_ELECTABUZZ ; pokedex id + db 65 ; base hp + db 83 ; base attack + db 57 ; base defense + db 105 ; base speed + db 85 ; base special + + db ELECTRIC ; species type 1 + db ELECTRIC ; species type 2 + + db 45 ; catch rate + db 156 ; base exp yield + db $66 ; sprite dimensions + + dw ElectabuzzPicFront + dw ElectabuzzPicBack + + ; attacks known at lvl 0 + db QUICK_ATTACK + db LEER + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10110001 + db %01000011 + db %10001111 + db %11110001 + db %11000111 + db %00111000 + db %01100010 + + db 0 ; padding + +MagmarBaseStats: ; 3918a (e:518a) + db DEX_MAGMAR ; pokedex id + db 65 ; base hp + db 95 ; base attack + db 57 ; base defense + db 93 ; base speed + db 85 ; base special + + db FIRE ; species type 1 + db FIRE ; species type 2 + + db 45 ; catch rate + db 167 ; base exp yield + db $66 ; sprite dimensions + + dw MagmarPicFront + dw MagmarPicBack + + ; attacks known at lvl 0 + db EMBER + db 0 + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10110001 + db %01000011 + db %00001111 + db %11110000 + db %10100110 + db %00101000 + db %00100010 + + db 0 ; padding + +PinsirBaseStats: ; 391a6 (e:51a6) + db DEX_PINSIR ; pokedex id + db 65 ; base hp + db 125 ; base attack + db 100 ; base defense + db 85 ; base speed + db 55 ; base special + + db BUG ; species type 1 + db BUG ; species type 2 + + db 45 ; catch rate + db 200 ; base exp yield + db $77 ; sprite dimensions + + dw PinsirPicFront + dw PinsirPicBack + + ; attacks known at lvl 0 + db VICEGRIP + db 0 + db 0 + db 0 + + db 5 ; growth rate + + ; learnset + db %10100100 + db %01000011 + db %00001101 + db %11000000 + db %00000010 + db %00001000 + db %00100110 + + db 0 ; padding + +TaurosBaseStats: ; 391c2 (e:51c2) + db DEX_TAUROS ; pokedex id + db 75 ; base hp + db 100 ; base attack + db 95 ; base defense + db 110 ; base speed + db 70 ; base special + + db NORMAL ; species type 1 + db NORMAL ; species type 2 + + db 45 ; catch rate + db 211 ; base exp yield + db $77 ; sprite dimensions + + dw TaurosPicFront + dw TaurosPicBack + + ; attacks known at lvl 0 + db TACKLE + db 0 + db 0 + db 0 + + db 5 ; growth rate + + ; learnset + db %11100000 + db %01110011 + db %10001000 + db %11000111 + db %10100010 + db %00001000 + db %00100010 + + db 0 ; padding + +MagikarpBaseStats: ; 391de (e:51de) + db DEX_MAGIKARP ; pokedex id + db 20 ; base hp + db 10 ; base attack + db 55 ; base defense + db 80 ; base speed + db 20 ; base special + + db WATER ; species type 1 + db WATER ; species type 2 + + db 255 ; catch rate + db 20 ; base exp yield + db $66 ; sprite dimensions + + dw MagikarpPicFront + dw MagikarpPicBack + + ; attacks known at lvl 0 + db SPLASH + db 0 + db 0 + db 0 + + db 5 ; growth rate + + ; learnset + db %00000000 + db %00000000 + db %00000000 + db %00000000 + db %00000000 + db %00000000 + db %00000000 + + db 0 ; padding + +GyaradosBaseStats: ; 391fa (e:51fa) + db DEX_GYARADOS ; pokedex id + db 95 ; base hp + db 125 ; base attack + db 79 ; base defense + db 81 ; base speed + db 100 ; base special + + db WATER ; species type 1 + db FLYING ; species type 2 + + db 45 ; catch rate + db 214 ; base exp yield + db $77 ; sprite dimensions + + dw GyaradosPicFront + dw GyaradosPicBack + + ; attacks known at lvl 0 + db BITE + db DRAGON_RAGE + db LEER + db HYDRO_PUMP + + db 5 ; growth rate + + ; learnset + db %10100000 + db %01111111 + db %11001000 + db %11000001 + db %10100011 + db %00001000 + db %00110010 + + db 0 ; padding + +LaprasBaseStats: ; 39216 (e:5216) + db DEX_LAPRAS ; pokedex id + db 130 ; base hp + db 85 ; base attack + db 80 ; base defense + db 60 ; base speed + db 95 ; base special + + db WATER ; species type 1 + db ICE ; species type 2 + + db 45 ; catch rate + db 219 ; base exp yield + db $77 ; sprite dimensions + + dw LaprasPicFront + dw LaprasPicBack + + ; attacks known at lvl 0 + db WATER_GUN + db GROWL + db 0 + db 0 + + db 5 ; growth rate + + ; learnset + db %11100000 + db %01111111 + db %11101000 + db %11010001 + db %10000011 + db %00101000 + db %00110010 + + db 0 ; padding + +DittoBaseStats: ; 39232 (e:5232) + db DEX_DITTO ; pokedex id + db 48 ; base hp + db 48 ; base attack + db 48 ; base defense + db 48 ; base speed + db 48 ; base special + + db NORMAL ; species type 1 + db NORMAL ; species type 2 + + db 35 ; catch rate + db 61 ; base exp yield + db $55 ; sprite dimensions + + dw DittoPicFront + dw DittoPicBack + + ; attacks known at lvl 0 + db TRANSFORM + db 0 + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %00000000 + db %00000000 + db %00000000 + db %00000000 + db %00000000 + db %00000000 + db %00000000 + + db 0 ; padding + +EeveeBaseStats: ; 3924e (e:524e) + db DEX_EEVEE ; pokedex id + db 55 ; base hp + db 55 ; base attack + db 50 ; base defense + db 55 ; base speed + db 65 ; base special + + db NORMAL ; species type 1 + db NORMAL ; species type 2 + + db 45 ; catch rate + db 92 ; base exp yield + db $55 ; sprite dimensions + + dw EeveePicFront + dw EeveePicBack + + ; attacks known at lvl 0 + db TACKLE + db SAND_ATTACK + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10100000 + db %00000011 + db %00001000 + db %11000000 + db %11000011 + db %00001000 + db %00000010 + + db 0 ; padding + +VaporeonBaseStats: ; 3926a (e:526a) + db DEX_VAPOREON ; pokedex id + db 130 ; base hp + db 65 ; base attack + db 60 ; base defense + db 65 ; base speed + db 110 ; base special + + db WATER ; species type 1 + db WATER ; species type 2 + + db 45 ; catch rate + db 196 ; base exp yield + db $66 ; sprite dimensions + + dw VaporeonPicFront + dw VaporeonPicBack + + ; attacks known at lvl 0 + db TACKLE + db SAND_ATTACK + db QUICK_ATTACK + db WATER_GUN + + db 0 ; growth rate + + ; learnset + db %10100000 + db %01111111 + db %00001000 + db %11000000 + db %11000011 + db %00001000 + db %00010010 + + db 0 ; padding + +JolteonBaseStats: ; 39286 (e:5286) + db DEX_JOLTEON ; pokedex id + db 65 ; base hp + db 65 ; base attack + db 60 ; base defense + db 130 ; base speed + db 110 ; base special + + db ELECTRIC ; species type 1 + db ELECTRIC ; species type 2 + + db 45 ; catch rate + db 197 ; base exp yield + db $66 ; sprite dimensions + + dw JolteonPicFront + dw JolteonPicBack + + ; attacks known at lvl 0 + db TACKLE + db SAND_ATTACK + db QUICK_ATTACK + db THUNDERSHOCK + + db 0 ; growth rate + + ; learnset + db %10100000 + db %01000011 + db %10001000 + db %11000001 + db %11000011 + db %00011000 + db %01000010 + + db 0 ; padding + +FlareonBaseStats: ; 392a2 (e:52a2) + db DEX_FLAREON ; pokedex id + db 65 ; base hp + db 130 ; base attack + db 60 ; base defense + db 65 ; base speed + db 110 ; base special + + db FIRE ; species type 1 + db FIRE ; species type 2 + + db 45 ; catch rate + db 198 ; base exp yield + db $66 ; sprite dimensions + + dw FlareonPicFront + dw FlareonPicBack + + ; attacks known at lvl 0 + db TACKLE + db SAND_ATTACK + db QUICK_ATTACK + db EMBER + + db 0 ; growth rate + + ; learnset + db %10100000 + db %01000011 + db %00001000 + db %11000000 + db %11100011 + db %00001000 + db %00000010 + + db 0 ; padding + +PorygonBaseStats: ; 392be (e:52be) + db DEX_PORYGON ; pokedex id + db 65 ; base hp + db 60 ; base attack + db 70 ; base defense + db 40 ; base speed + db 75 ; base special + + db NORMAL ; species type 1 + db NORMAL ; species type 2 + + db 45 ; catch rate + db 130 ; base exp yield + db $66 ; sprite dimensions + + dw PorygonPicFront + dw PorygonPicBack + + ; attacks known at lvl 0 + db TACKLE + db SHARPEN + db CONVERSION + db 0 + + db 0 ; growth rate + + ; learnset + db %00100000 + db %01110011 + db %10001000 + db %11110001 + db %11000011 + db %00111000 + db %01000011 + + db 0 ; padding + +OmanyteBaseStats: ; 392da (e:52da) + db DEX_OMANYTE ; pokedex id + db 35 ; base hp + db 40 ; base attack + db 100 ; base defense + db 35 ; base speed + db 90 ; base special + + db ROCK ; species type 1 + db WATER ; species type 2 + + db 45 ; catch rate + db 120 ; base exp yield + db $55 ; sprite dimensions + + dw OmanytePicFront + dw OmanytePicBack + + ; attacks known at lvl 0 + db WATER_GUN + db WITHDRAW + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10100000 + db %00111111 + db %00001000 + db %11000000 + db %00000011 + db %00001000 + db %00010010 + + db 0 ; padding + +OmastarBaseStats: ; 392f6 (e:52f6) + db DEX_OMASTAR ; pokedex id + db 70 ; base hp + db 60 ; base attack + db 125 ; base defense + db 55 ; base speed + db 115 ; base special + + db ROCK ; species type 1 + db WATER ; species type 2 + + db 45 ; catch rate + db 199 ; base exp yield + db $66 ; sprite dimensions + + dw OmastarPicFront + dw OmastarPicBack + + ; attacks known at lvl 0 + db WATER_GUN + db WITHDRAW + db HORN_ATTACK + db 0 + + db 0 ; growth rate + + ; learnset + db %11100000 + db %01111111 + db %00001101 + db %11000000 + db %10000011 + db %00001000 + db %00010010 + + db 0 ; padding + +KabutoBaseStats: ; 39312 (e:5312) + db DEX_KABUTO ; pokedex id + db 30 ; base hp + db 80 ; base attack + db 90 ; base defense + db 55 ; base speed + db 45 ; base special + + db ROCK ; species type 1 + db WATER ; species type 2 + + db 45 ; catch rate + db 119 ; base exp yield + db $55 ; sprite dimensions + + dw KabutoPicFront + dw KabutoPicBack + + ; attacks known at lvl 0 + db SCRATCH + db HARDEN + db 0 + db 0 + + db 0 ; growth rate + + ; learnset + db %10100000 + db %00111111 + db %00001000 + db %11000000 + db %00000011 + db %00001000 + db %00010010 + + db 0 ; padding + +KabutopsBaseStats: ; 3932e (e:532e) + db DEX_KABUTOPS ; pokedex id + db 60 ; base hp + db 115 ; base attack + db 105 ; base defense + db 80 ; base speed + db 70 ; base special + + db ROCK ; species type 1 + db WATER ; species type 2 + + db 45 ; catch rate + db 201 ; base exp yield + db $66 ; sprite dimensions + + dw KabutopsPicFront + dw KabutopsPicBack + + ; attacks known at lvl 0 + db SCRATCH + db HARDEN + db ABSORB + db 0 + + db 0 ; growth rate + + ; learnset + db %10110110 + db %01111111 + db %00001101 + db %11000000 + db %10000011 + db %00001000 + db %00010010 + + db 0 ; padding + +AerodactylBaseStats: ; 3934a (e:534a) + db DEX_AERODACTYL ; pokedex id + db 80 ; base hp + db 105 ; base attack + db 65 ; base defense + db 130 ; base speed + db 60 ; base special + + db ROCK ; species type 1 + db FLYING ; species type 2 + + db 45 ; catch rate + db 202 ; base exp yield + db $77 ; sprite dimensions + + dw AerodactylPicFront + dw AerodactylPicBack + + ; attacks known at lvl 0 + db WING_ATTACK + db AGILITY + db 0 + db 0 + + db 5 ; growth rate + + ; learnset + db %00101010 + db %01000011 + db %01001000 + db %11000000 + db %01100011 + db %00001100 + db %00001010 + + db 0 ; padding + +SnorlaxBaseStats: ; 39366 (e:5366) + db DEX_SNORLAX ; pokedex id + db 160 ; base hp + db 110 ; base attack + db 65 ; base defense + db 30 ; base speed + db 65 ; base special + + db NORMAL ; species type 1 + db NORMAL ; species type 2 + + db 25 ; catch rate + db 154 ; base exp yield + db $77 ; sprite dimensions + + dw SnorlaxPicFront + dw SnorlaxPicBack + + ; attacks known at lvl 0 + db HEADBUTT + db AMNESIA + db REST + db 0 + + db 5 ; growth rate + + ; learnset + db %10110001 + db %11111111 + db %10101111 + db %11010111 + db %10101111 + db %10101000 + db %00110010 + + db 0 ; padding + +ArticunoBaseStats: ; 39382 (e:5382) + db DEX_ARTICUNO ; pokedex id + db 90 ; base hp + db 85 ; base attack + db 100 ; base defense + db 85 ; base speed + db 125 ; base special + + db ICE ; species type 1 + db FLYING ; species type 2 + + db 3 ; catch rate + db 215 ; base exp yield + db $77 ; sprite dimensions + + dw ArticunoPicFront + dw ArticunoPicBack + + ; attacks known at lvl 0 + db PECK + db ICE_BEAM + db 0 + db 0 + + db 5 ; growth rate + + ; learnset + db %00101010 + db %01111111 + db %00001000 + db %11000000 + db %01000011 + db %00001100 + db %00001010 + + db 0 ; padding + +ZapdosBaseStats: ; 3939e (e:539e) + db DEX_ZAPDOS ; pokedex id + db 90 ; base hp + db 90 ; base attack + db 85 ; base defense + db 100 ; base speed + db 125 ; base special + + db ELECTRIC ; species type 1 + db FLYING ; species type 2 + + db 3 ; catch rate + db 216 ; base exp yield + db $77 ; sprite dimensions + + dw ZapdosPicFront + dw ZapdosPicBack + + ; attacks known at lvl 0 + db THUNDERSHOCK + db DRILL_PECK + db 0 + db 0 + + db 5 ; growth rate + + ; learnset + db %00101010 + db %01000011 + db %10001000 + db %11000001 + db %01000011 + db %00011100 + db %01001010 + + db 0 ; padding + +MoltresBaseStats: ; 393ba (e:53ba) + db DEX_MOLTRES ; pokedex id + db 90 ; base hp + db 100 ; base attack + db 90 ; base defense + db 90 ; base speed + db 125 ; base special + + db FIRE ; species type 1 + db FLYING ; species type 2 + + db 3 ; catch rate + db 217 ; base exp yield + db $77 ; sprite dimensions + + dw MoltresPicFront + dw MoltresPicBack + + ; attacks known at lvl 0 + db PECK + db FIRE_SPIN + db 0 + db 0 + + db 5 ; growth rate + + ; learnset + db %00101010 + db %01000011 + db %00001000 + db %11000000 + db %01100011 + db %00001100 + db %00001010 + + db 0 ; padding + +DratiniBaseStats: ; 393d6 (e:53d6) + db DEX_DRATINI ; pokedex id + db 41 ; base hp + db 64 ; base attack + db 45 ; base defense + db 50 ; base speed + db 50 ; base special + + db DRAGON ; species type 1 + db DRAGON ; species type 2 + + db 45 ; catch rate + db 67 ; base exp yield + db $55 ; sprite dimensions + + dw DratiniPicFront + dw DratiniPicBack + + ; attacks known at lvl 0 + db WRAP + db LEER + db 0 + db 0 + + db 5 ; growth rate + + ; learnset + db %10100000 + db %00111111 + db %11001000 + db %11000001 + db %11100011 + db %00011000 + db %00010010 + + db 0 ; padding + +DragonairBaseStats: ; 393f2 (e:53f2) + db DEX_DRAGONAIR ; pokedex id + db 61 ; base hp + db 84 ; base attack + db 65 ; base defense + db 70 ; base speed + db 70 ; base special + + db DRAGON ; species type 1 + db DRAGON ; species type 2 + + db 45 ; catch rate + db 144 ; base exp yield + db $66 ; sprite dimensions + + dw DragonairPicFront + dw DragonairPicBack + + ; attacks known at lvl 0 + db WRAP + db LEER + db THUNDER_WAVE + db 0 + + db 5 ; growth rate + + ; learnset + db %11100000 + db %00111111 + db %11001000 + db %11000001 + db %11100011 + db %00011000 + db %00010010 + + db 0 ; padding + +DragoniteBaseStats: ; 3940e (e:540e) + db DEX_DRAGONITE ; pokedex id + db 91 ; base hp + db 134 ; base attack + db 95 ; base defense + db 80 ; base speed + db 100 ; base special + + db DRAGON ; species type 1 + db FLYING ; species type 2 + + db 45 ; catch rate + db 218 ; base exp yield + db $77 ; sprite dimensions + + dw DragonitePicFront + dw DragonitePicBack + + ; attacks known at lvl 0 + db WRAP + db LEER + db THUNDER_WAVE + db AGILITY + + db 5 ; growth rate + + ; learnset + db %11100010 + db %01111111 + db %11001000 + db %11000001 + db %11100011 + db %00011000 + db %00110010 + + db 0 ; padding + +MewtwoBaseStats: ; 3942a (e:542a) + db DEX_MEWTWO ; pokedex id + db 106 ; base hp + db 110 ; base attack + db 90 ; base defense + db 130 ; base speed + db 154 ; base special + + db PSYCHIC ; species type 1 + db PSYCHIC ; species type 2 + + db 3 ; catch rate + db 220 ; base exp yield + db $77 ; sprite dimensions + + dw MewtwoPicFront + dw MewtwoPicBack + + ; attacks known at lvl 0 + db CONFUSION + db DISABLE + db SWIFT + db PSYCHIC_M + + db 5 ; growth rate + + ; learnset + db %10110001 + db %11111111 + db %10101111 + db %11110001 + db %10101111 + db %00111000 + db %01100011 + + db 0 ; padding \ No newline at end of file diff --git a/data/bike_riding_tilesets.asm b/data/bike_riding_tilesets.asm new file mode 100755 index 00000000..1b5a93c3 --- /dev/null +++ b/data/bike_riding_tilesets.asm @@ -0,0 +1,2 @@ +BikeRidingTilesets:: ; 09e2 (0:09e2) + db OVERWORLD, FOREST, UNDERGROUND, SHIP_PORT, CAVERN, $FF \ No newline at end of file diff --git a/data/credit_mons.asm b/data/credit_mons.asm new file mode 100755 index 00000000..2927ee00 --- /dev/null +++ b/data/credit_mons.asm @@ -0,0 +1,16 @@ +CreditsMons: ; 74131 (1d:4131) + db VENUSAUR + db ARBOK + db RHYHORN + db FEAROW + db ABRA + db GRAVELER + db HITMONLEE + db TANGELA + db STARMIE + db GYARADOS + db DITTO + db OMASTAR + db VILEPLUME + db NIDOKING + db PARASECT \ No newline at end of file diff --git a/data/cries.asm b/data/cries.asm new file mode 100755 index 00000000..f6f39ed2 --- /dev/null +++ b/data/cries.asm @@ -0,0 +1,192 @@ +CryData: ; 39446 (e:5446) + ;$BaseCry, $Pitch, $Length + db $11, $00, $80; Rhydon + db $03, $00, $80; Kangaskhan + db $00, $00, $80; Nidoran♂ + db $19, $CC, $01; Clefairy + db $10, $00, $80; Spearow + db $06, $ED, $80; Voltorb + db $09, $00, $80; Nidoking + db $1F, $00, $80; Slowbro + db $0F, $20, $80; Ivysaur + db $0D, $00, $80; Exeggutor + db $0C, $00, $80; Lickitung + db $0B, $00, $80; Exeggcute + db $05, $00, $80; Grimer + db $07, $00, $FF; Gengar + db $01, $00, $80; Nidoran♀ + db $0A, $00, $80; Nidoqueen + db $19, $00, $80; Cubone + db $04, $00, $80; Rhyhorn + db $1B, $00, $80; Lapras + db $15, $00, $80; Arcanine + db $1E, $EE, $FF; Mew + db $17, $00, $80; Gyarados + db $18, $00, $80; Shellder + db $1A, $00, $80; Tentacool + db $1C, $00, $80; Gastly + db $16, $00, $80; Scyther + db $1E, $02, $20; Staryu + db $13, $00, $80; Blastoise + db $14, $00, $80; Pinsir + db $12, $00, $80; Tangela + db $00, $00, $00; MissingNo. + db $00, $00, $00; MissingNo. + db $1F, $20, $40; Growlithe + db $17, $FF, $C0; Onix + db $18, $40, $A0; Fearow + db $0E, $DF, $04; Pidgey + db $02, $00, $80; Slowpoke + db $1C, $A8, $C0; Kadabra + db $24, $00, $80; Graveler + db $14, $0A, $C0; Chansey + db $1F, $48, $60; Machoke + db $20, $08, $40; Mr.Mime + db $12, $80, $C0; Hitmonlee + db $0C, $EE, $C0; Hitmonchan + db $17, $E0, $10; Arbok + db $1E, $42, $FF; Parasect + db $21, $20, $60; Psyduck + db $0D, $88, $20; Drowzee + db $12, $E0, $40; Golem + db $00, $00, $00; MissingNo. + db $04, $FF, $30; Magmar + db $00, $00, $00; MissingNo. + db $06, $8F, $FF; Electabuzz + db $1C, $20, $C0; Magneton + db $12, $E6, $DD; Koffing + db $00, $00, $00; MissingNo. + db $0A, $DD, $60; Mankey + db $0C, $88, $C0; Seel + db $0B, $AA, $01; Diglett + db $1D, $11, $40; Tauros + db $00, $00, $00; MissingNo. + db $00, $00, $00; MissingNo. + db $00, $00, $00; MissingNo. + db $10, $DD, $01; Farfetch'd + db $1A, $44, $40; Venonat + db $0F, $3C, $C0; Dragonite + db $00, $80, $10; MissingNo. + db $00, $00, $00; MissingNo. + db $1D, $E0, $80; MissingNo. + db $0B, $BB, $01; Doduo + db $0E, $FF, $FF; Poliwag + db $0D, $FF, $FF; Jynx + db $09, $F8, $40; Moltres + db $09, $80, $40; Articuno + db $18, $FF, $80; Zapdos + db $0E, $FF, $FF; Ditto + db $19, $77, $10; Meowth + db $20, $20, $E0; Krabby + db $22, $FF, $40; MissingNo. + db $00, $00, $00; MissingNo. + db $0E, $E0, $60; MissingNo. + db $24, $4F, $10; Vulpix + db $24, $88, $60; Ninetales + db $0F, $EE, $01; Pikachu + db $09, $EE, $08; Raichu + db $00, $00, $00; MissingNo. + db $00, $00, $00; MissingNo. + db $0F, $60, $40; Dratini + db $0F, $40, $80; Dragonair + db $16, $BB, $40; Kabuto + db $18, $EE, $01; Kabutops + db $19, $99, $10; Horsea + db $19, $3C, $01; Seadra + db $0F, $40, $C0; MissingNo. + db $0F, $20, $C0; MissingNo. + db $00, $20, $40; Sandshrew + db $00, $FF, $FF; Sandslash + db $1F, $F0, $01; Omanyte + db $1F, $FF, $40; Omastar + db $0E, $FF, $35; Jigglypuff + db $0E, $68, $60; Wigglytuff + db $1A, $88, $60; Eevee + db $1A, $10, $20; Flareon + db $1A, $3D, $80; Jolteon + db $1A, $AA, $FF; Vaporeon + db $1F, $EE, $01; Machop + db $1D, $E0, $80; Zubat + db $17, $12, $40; Ekans + db $1E, $20, $E0; Paras + db $0E, $77, $60; Poliwhirl + db $0E, $00, $FF; Poliwrath + db $15, $EE, $01; Weedle + db $13, $FF, $01; Kakuna + db $13, $60, $80; Beedrill + db $00, $00, $00; MissingNo. + db $0B, $99, $20; Dodrio + db $0A, $AF, $40; Primeape + db $0B, $2A, $10; Dugtrio + db $1A, $29, $80; Venomoth + db $0C, $23, $FF; Dewgong + db $00, $00, $00; MissingNo. + db $00, $00, $00; MissingNo. + db $16, $80, $20; Caterpie + db $1C, $CC, $01; Metapod + db $16, $77, $40; Butterfree + db $1F, $08, $C0; Machamp + db $11, $20, $10; MissingNo. + db $21, $FF, $40; Golduck + db $0D, $EE, $40; Hypno + db $1D, $FA, $80; Golbat + db $1E, $99, $FF; Mewtwo + db $05, $55, $01; Snorlax + db $17, $80, $00; Magikarp + db $00, $00, $00; MissingNo. + db $00, $00, $00; MissingNo. + db $07, $EF, $FF; Muk + db $0F, $40, $80; MissingNo. + db $20, $EE, $E0; Kingler + db $18, $6F, $E0; Cloyster + db $00, $00, $00; MissingNo. + db $06, $A8, $90; Electrode + db $19, $AA, $20; Clefable + db $12, $FF, $FF; Weezing + db $19, $99, $FF; Persian + db $08, $4F, $60; Marowak + db $00, $00, $00; MissingNo. + db $1C, $30, $40; Haunter + db $1C, $C0, $01; Abra + db $1C, $98, $FF; Alakazam + db $14, $28, $C0; Pidgeotto + db $14, $11, $FF; Pidgeot + db $1E, $00, $80; Starmie + db $0F, $80, $01; Bulbasaur + db $0F, $00, $C0; Venusaur + db $1A, $EE, $FF; Tentacruel + db $00, $00, $00; MissingNo. + db $16, $80, $40; Goldeen + db $16, $10, $FF; Seaking + db $00, $00, $00; MissingNo. + db $00, $00, $00; MissingNo. + db $00, $00, $00; MissingNo. + db $00, $00, $00; MissingNo. + db $25, $00, $80; Ponyta + db $25, $20, $C0; Rapidash + db $22, $00, $80; Rattata + db $22, $20, $FF; Raticate + db $00, $2C, $C0; Nidorino + db $01, $2C, $E0; Nidorina + db $24, $F0, $10; Geodude + db $25, $AA, $FF; Porygon + db $23, $20, $F0; Aerodactyl + db $00, $00, $00; MissingNo. + db $1C, $80, $60; Magnemite + db $00, $00, $00; MissingNo. + db $00, $00, $00; MissingNo. + db $04, $60, $40; Charmander + db $1D, $60, $40; Squirtle + db $04, $20, $40; Charmeleon + db $1D, $20, $40; Wartortle + db $04, $00, $80; Charizard + db $1D, $00, $80; MissingNo. + db $00, $00, $00; MissingNo. + db $00, $00, $00; MissingNo. + db $00, $00, $00; MissingNo. + db $08, $DD, $01; Oddish + db $08, $AA, $40; Gloom + db $23, $22, $FF; Vileplume + db $21, $55, $01; Bellsprout + db $25, $44, $20; Weepinbell + db $25, $66, $CC; Victreebel \ No newline at end of file diff --git a/data/dungeon_tilesets.asm b/data/dungeon_tilesets.asm new file mode 100755 index 00000000..d226ce29 --- /dev/null +++ b/data/dungeon_tilesets.asm @@ -0,0 +1,2 @@ +DungeonTilesets: ; c7b2 (3:47b2) + db FOREST, MUSEUM, SHIP, CAVERN, LOBBY, MANSION, GATE, LAB, FACILITY, CEMETERY, GYM, $FF \ No newline at end of file diff --git a/data/evos_moves.asm b/data/evos_moves.asm new file mode 100755 index 00000000..b0b1cb15 --- /dev/null +++ b/data/evos_moves.asm @@ -0,0 +1,2171 @@ +EvosMovesPointerTable: ; 3b05c (e:705c) + dw Mon112_EvosMoves + dw Mon115_EvosMoves + dw Mon032_EvosMoves + dw Mon035_EvosMoves + dw Mon021_EvosMoves + dw Mon100_EvosMoves + dw Mon034_EvosMoves + dw Mon080_EvosMoves + dw Mon002_EvosMoves + dw Mon103_EvosMoves + dw Mon108_EvosMoves + dw Mon102_EvosMoves + dw Mon088_EvosMoves + dw Mon094_EvosMoves + dw Mon029_EvosMoves + dw Mon031_EvosMoves + dw Mon104_EvosMoves + dw Mon111_EvosMoves + dw Mon131_EvosMoves + dw Mon059_EvosMoves + dw Mon151_EvosMoves + dw Mon130_EvosMoves + dw Mon090_EvosMoves + dw Mon072_EvosMoves + dw Mon092_EvosMoves + dw Mon123_EvosMoves + dw Mon120_EvosMoves + dw Mon009_EvosMoves + dw Mon127_EvosMoves + dw Mon114_EvosMoves + dw Mon152_EvosMoves ;MissingNo + dw Mon153_EvosMoves ;MissingNo + dw Mon058_EvosMoves + dw Mon095_EvosMoves + dw Mon022_EvosMoves + dw Mon016_EvosMoves + dw Mon079_EvosMoves + dw Mon064_EvosMoves + dw Mon075_EvosMoves + dw Mon113_EvosMoves + dw Mon067_EvosMoves + dw Mon122_EvosMoves + dw Mon106_EvosMoves + dw Mon107_EvosMoves + dw Mon024_EvosMoves + dw Mon047_EvosMoves + dw Mon054_EvosMoves + dw Mon096_EvosMoves + dw Mon076_EvosMoves + dw Mon154_EvosMoves ;MissingNo + dw Mon126_EvosMoves + dw Mon155_EvosMoves ;MissingNo + dw Mon125_EvosMoves + dw Mon082_EvosMoves + dw Mon109_EvosMoves + dw Mon156_EvosMoves ;MissingNo + dw Mon056_EvosMoves + dw Mon086_EvosMoves + dw Mon050_EvosMoves + dw Mon128_EvosMoves + dw Mon157_EvosMoves ;MissingNo + dw Mon158_EvosMoves ;MissingNo + dw Mon159_EvosMoves ;MissingNo + dw Mon083_EvosMoves + dw Mon048_EvosMoves + dw Mon149_EvosMoves + dw Mon160_EvosMoves ;MissingNo + dw Mon161_EvosMoves ;MissingNo + dw Mon162_EvosMoves ;MissingNo + dw Mon084_EvosMoves + dw Mon060_EvosMoves + dw Mon124_EvosMoves + dw Mon146_EvosMoves + dw Mon144_EvosMoves + dw Mon145_EvosMoves + dw Mon132_EvosMoves + dw Mon052_EvosMoves + dw Mon098_EvosMoves + dw Mon163_EvosMoves ;MissingNo + dw Mon164_EvosMoves ;MissingNo + dw Mon165_EvosMoves ;MissingNo + dw Mon037_EvosMoves + dw Mon038_EvosMoves + dw Mon025_EvosMoves + dw Mon026_EvosMoves + dw Mon166_EvosMoves ;MissingNo + dw Mon167_EvosMoves ;MissingNo + dw Mon147_EvosMoves + dw Mon148_EvosMoves + dw Mon140_EvosMoves + dw Mon141_EvosMoves + dw Mon116_EvosMoves + dw Mon117_EvosMoves + dw Mon168_EvosMoves ;MissingNo + dw Mon169_EvosMoves ;MissingNo + dw Mon027_EvosMoves + dw Mon028_EvosMoves + dw Mon138_EvosMoves + dw Mon139_EvosMoves + dw Mon039_EvosMoves + dw Mon040_EvosMoves + dw Mon133_EvosMoves + dw Mon136_EvosMoves + dw Mon135_EvosMoves + dw Mon134_EvosMoves + dw Mon066_EvosMoves + dw Mon041_EvosMoves + dw Mon023_EvosMoves + dw Mon046_EvosMoves + dw Mon061_EvosMoves + dw Mon062_EvosMoves + dw Mon013_EvosMoves + dw Mon014_EvosMoves + dw Mon015_EvosMoves + dw Mon170_EvosMoves ;MissingNo + dw Mon085_EvosMoves + dw Mon057_EvosMoves + dw Mon051_EvosMoves + dw Mon049_EvosMoves + dw Mon087_EvosMoves + dw Mon171_EvosMoves ;MissingNo + dw Mon172_EvosMoves ;MissingNo + dw Mon010_EvosMoves + dw Mon011_EvosMoves + dw Mon012_EvosMoves + dw Mon068_EvosMoves + dw Mon173_EvosMoves ;MissingNo + dw Mon055_EvosMoves + dw Mon097_EvosMoves + dw Mon042_EvosMoves + dw Mon150_EvosMoves + dw Mon143_EvosMoves + dw Mon129_EvosMoves + dw Mon174_EvosMoves ;MissingNo + dw Mon175_EvosMoves ;MissingNo + dw Mon089_EvosMoves + dw Mon176_EvosMoves ;MissingNo + dw Mon099_EvosMoves + dw Mon091_EvosMoves + dw Mon177_EvosMoves ;MissingNo + dw Mon101_EvosMoves + dw Mon036_EvosMoves + dw Mon110_EvosMoves + dw Mon053_EvosMoves + dw Mon105_EvosMoves + dw Mon178_EvosMoves ;MissingNo + dw Mon093_EvosMoves + dw Mon063_EvosMoves + dw Mon065_EvosMoves + dw Mon017_EvosMoves + dw Mon018_EvosMoves + dw Mon121_EvosMoves + dw Mon001_EvosMoves + dw Mon003_EvosMoves + dw Mon073_EvosMoves + dw Mon179_EvosMoves ;MissingNo + dw Mon118_EvosMoves + dw Mon119_EvosMoves + dw Mon180_EvosMoves ;MissingNo + dw Mon181_EvosMoves ;MissingNo + dw Mon182_EvosMoves ;MissingNo + dw Mon183_EvosMoves ;MissingNo + dw Mon077_EvosMoves + dw Mon078_EvosMoves + dw Mon019_EvosMoves + dw Mon020_EvosMoves + dw Mon033_EvosMoves + dw Mon030_EvosMoves + dw Mon074_EvosMoves + dw Mon137_EvosMoves + dw Mon142_EvosMoves + dw Mon184_EvosMoves ;MissingNo + dw Mon081_EvosMoves + dw Mon185_EvosMoves ;MissingNo + dw Mon186_EvosMoves ;MissingNo + dw Mon004_EvosMoves + dw Mon007_EvosMoves + dw Mon005_EvosMoves + dw Mon008_EvosMoves + dw Mon006_EvosMoves + dw Mon187_EvosMoves ;MissingNo + dw Mon188_EvosMoves ;MissingNo + dw Mon189_EvosMoves ;MissingNo + dw Mon190_EvosMoves ;MissingNo + dw Mon043_EvosMoves + dw Mon044_EvosMoves + dw Mon045_EvosMoves + dw Mon069_EvosMoves + dw Mon070_EvosMoves + dw Mon071_EvosMoves + +Mon112_EvosMoves: ; 3b1d8 (e:71d8) +;RHYDON +;Evolutions + db 0 +;Learnset + db 30,STOMP + db 35,TAIL_WHIP + db 40,FURY_ATTACK + db 48,HORN_DRILL + db 55,LEER + db 64,TAKE_DOWN + db 0 +Mon115_EvosMoves: ; 3b1e6 (e:71e6) +;KANGASKHAN +;Evolutions + db 0 +;Learnset + db 26,BITE + db 31,TAIL_WHIP + db 36,MEGA_PUNCH + db 41,LEER + db 46,DIZZY_PUNCH + db 0 +Mon032_EvosMoves: ; 3b1f2 (e:71f2) +;NIDORAN_M +;Evolutions + db EV_LEVEL,16,NIDORINO + db 0 +;Learnset + db 8,HORN_ATTACK + db 14,POISON_STING + db 21,FOCUS_ENERGY + db 29,FURY_ATTACK + db 36,HORN_DRILL + db 43,DOUBLE_KICK + db 0 +Mon035_EvosMoves: ; 3b203 (e:7203) +;CLEFAIRY +;Evolutions + db EV_ITEM,MOON_STONE,1,CLEFABLE + db 0 +;Learnset + db 13,SING + db 18,DOUBLESLAP + db 24,MINIMIZE + db 31,METRONOME + db 39,DEFENSE_CURL + db 48,LIGHT_SCREEN + db 0 +Mon021_EvosMoves: ; 3b215 (e:7215) +;SPEAROW +;Evolutions + db EV_LEVEL,20,FEAROW + db 0 +;Learnset + db 9,LEER + db 15,FURY_ATTACK + db 22,MIRROR_MOVE + db 29,DRILL_PECK + db 36,AGILITY + db 0 +Mon100_EvosMoves: ; 3b224 (e:7224) +;VOLTORB +;Evolutions + db EV_LEVEL,30,ELECTRODE + db 0 +;Learnset + db 17,SONICBOOM + db 22,SELFDESTRUCT + db 29,LIGHT_SCREEN + db 36,SWIFT + db 43,EXPLOSION + db 0 +Mon034_EvosMoves: ; 3b233 (e:7233) +;NIDOKING +;Evolutions + db 0 +;Learnset + db 8,HORN_ATTACK + db 14,POISON_STING + db 23,THRASH + db 0 +Mon080_EvosMoves: ; 3b23b (e:723b) +;SLOWBRO +;Evolutions + db 0 +;Learnset + db 18,DISABLE + db 22,HEADBUTT + db 27,GROWL + db 33,WATER_GUN + db 37,WITHDRAW + db 44,AMNESIA + db 55,PSYCHIC_M + db 0 +Mon002_EvosMoves: ; 3b24b (e:724b) +;IVYSAUR +;Evolutions + db EV_LEVEL,32,VENUSAUR + db 0 +;Learnset + db 7,LEECH_SEED + db 13,VINE_WHIP + db 22,POISONPOWDER + db 30,RAZOR_LEAF + db 38,GROWTH + db 46,SLEEP_POWDER + db 54,SOLARBEAM + db 0 +Mon103_EvosMoves: ; 3b25e (e:725e) +;EXEGGUTOR +;Evolutions + db 0 +;Learnset + db 28,STOMP + db 0 +Mon108_EvosMoves: ; 3b262 (e:7262) +;LICKITUNG +;Evolutions + db 0 +;Learnset + db 7,STOMP + db 15,DISABLE + db 23,DEFENSE_CURL + db 31,SLAM + db 39,SCREECH + db 0 +Mon102_EvosMoves: ; 3b26e (e:726e) +;EXEGGCUTE +;Evolutions + db EV_ITEM,LEAF_STONE ,1,EXEGGUTOR + db 0 +;Learnset + db 25,REFLECT + db 28,LEECH_SEED + db 32,STUN_SPORE + db 37,POISONPOWDER + db 42,SOLARBEAM + db 48,SLEEP_POWDER + db 0 +Mon088_EvosMoves: ; 3b280 (e:7280) +;GRIMER +;Evolutions + db EV_LEVEL,38,MUK + db 0 +;Learnset + db 30,POISON_GAS + db 33,MINIMIZE + db 37,SLUDGE + db 42,HARDEN + db 48,SCREECH + db 55,ACID_ARMOR + db 0 +Mon094_EvosMoves: ; 3b291 (e:7291) +;GENGAR +;Evolutions + db 0 +;Learnset + db 29,HYPNOSIS + db 38,DREAM_EATER + db 0 +Mon029_EvosMoves: ; 3b297 (e:7297) +;NIDORAN_F +;Evolutions + db EV_LEVEL,16,NIDORINA + db 0 +;Learnset + db 8,SCRATCH + db 14,POISON_STING + db 21,TAIL_WHIP + db 29,BITE + db 36,FURY_SWIPES + db 43,DOUBLE_KICK + db 0 +Mon031_EvosMoves: ; 3b2a8 (e:72a8) +;NIDOQUEEN +;Evolutions + db 0 +;Learnset + db 8,SCRATCH + db 14,POISON_STING + db 23,BODY_SLAM + db 0 +Mon104_EvosMoves: ; 3b2b0 (e:72b0) +;CUBONE +;Evolutions + db EV_LEVEL,28,MAROWAK + db 0 +;Learnset + db 25,LEER + db 31,FOCUS_ENERGY + db 38,THRASH + db 43,BONEMERANG + db 46,RAGE + db 0 +Mon111_EvosMoves: ; 3b2bf (e:72bf) +;RHYHORN +;Evolutions + db EV_LEVEL,42,RHYDON + db 0 +;Learnset + db 30,STOMP + db 35,TAIL_WHIP + db 40,FURY_ATTACK + db 45,HORN_DRILL + db 50,LEER + db 55,TAKE_DOWN + db 0 +Mon131_EvosMoves: ; 3b2d0 (e:72d0) +;LAPRAS +;Evolutions + db 0 +;Learnset + db 16,SING + db 20,MIST + db 25,BODY_SLAM + db 31,CONFUSE_RAY + db 38,ICE_BEAM + db 46,HYDRO_PUMP + db 0 +Mon059_EvosMoves: ; 3b2de (e:72de) +;ARCANINE +;Evolutions + db 0 +;Learnset + db 0 +Mon151_EvosMoves: ; 3b2e0 (e:72e0) +;MEW +;Evolutions + db 0 +;Learnset + db 10,TRANSFORM + db 20,MEGA_PUNCH + db 30,METRONOME + db 40,PSYCHIC_M + db 0 +Mon130_EvosMoves: ; 3b2ea (e:72ea) +;GYARADOS +;Evolutions + db 0 +;Learnset + db 20,BITE + db 25,DRAGON_RAGE + db 32,LEER + db 41,HYDRO_PUMP + db 52,HYPER_BEAM + db 0 +Mon090_EvosMoves: ; 3b2f6 (e:72f6) +;SHELLDER +;Evolutions + db EV_ITEM,WATER_STONE ,1,CLOYSTER + db 0 +;Learnset + db 18,SUPERSONIC + db 23,CLAMP + db 30,AURORA_BEAM + db 39,LEER + db 50,ICE_BEAM + db 0 +Mon072_EvosMoves: ; 3b306 (e:7306) +;TENTACOOL +;Evolutions + db EV_LEVEL,30,TENTACRUEL + db 0 +;Learnset + db 7,SUPERSONIC + db 13,WRAP + db 18,POISON_STING + db 22,WATER_GUN + db 27,CONSTRICT + db 33,BARRIER + db 40,SCREECH + db 48,HYDRO_PUMP + db 0 +Mon092_EvosMoves: ; 3b31b (e:731b) +;GASTLY +;Evolutions + db EV_LEVEL,25,HAUNTER + db 0 +;Learnset + db 27,HYPNOSIS + db 35,DREAM_EATER + db 0 +Mon123_EvosMoves: ; 3b324 (e:7324) +;SCYTHER +;Evolutions + db 0 +;Learnset + db 17,LEER + db 20,FOCUS_ENERGY + db 24,DOUBLE_TEAM + db 29,SLASH + db 35,SWORDS_DANCE + db 42,AGILITY + db 0 +Mon120_EvosMoves: ; 3b332 (e:7332) +;STARYU +;Evolutions + db EV_ITEM,WATER_STONE ,1,STARMIE + db 0 +;Learnset + db 17,WATER_GUN + db 22,HARDEN + db 27,RECOVER + db 32,SWIFT + db 37,MINIMIZE + db 42,LIGHT_SCREEN + db 47,HYDRO_PUMP + db 0 +Mon009_EvosMoves: ; 3b346 (e:7346) +;BLASTOISE +;Evolutions + db 0 +;Learnset + db 8,BUBBLE + db 15,WATER_GUN + db 24,BITE + db 31,WITHDRAW + db 42,SKULL_BASH + db 52,HYDRO_PUMP + db 0 +Mon127_EvosMoves: ; 3b354 (e:7354) +;PINSIR +;Evolutions + db 0 +;Learnset + db 25,SEISMIC_TOSS + db 30,GUILLOTINE + db 36,FOCUS_ENERGY + db 43,HARDEN + db 49,SLASH + db 54,SWORDS_DANCE + db 0 +Mon114_EvosMoves: ; 3b362 (e:7362) +;TANGELA +;Evolutions + db 0 +;Learnset + db 29,ABSORB + db 32,POISONPOWDER + db 36,STUN_SPORE + db 39,SLEEP_POWDER + db 45,SLAM + db 49,GROWTH + db 0 + +Mon152_EvosMoves: ; 3b370 (e:7370) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon153_EvosMoves: ; 3b372 (e:7372) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon058_EvosMoves: ; 3b374 (e:7374) +;GROWLITHE +;Evolutions + db EV_ITEM,FIRE_STONE,1,ARCANINE + db 0 +;Learnset + db 18,EMBER + db 23,LEER + db 30,TAKE_DOWN + db 39,AGILITY + db 50,FLAMETHROWER + db 0 +Mon095_EvosMoves: ; 3b384 (e:7384) +;ONIX +;Evolutions + db 0 +;Learnset + db 15,BIND + db 19,ROCK_THROW + db 25,RAGE + db 33,SLAM + db 43,HARDEN + db 0 +Mon022_EvosMoves: ; 3b390 (e:7390) +;FEAROW +;Evolutions + db 0 +;Learnset + db 9,LEER + db 15,FURY_ATTACK + db 25,MIRROR_MOVE + db 34,DRILL_PECK + db 43,AGILITY + db 0 +Mon016_EvosMoves: ; 3b39c (e:739c) +;PIDGEY +;Evolutions + db EV_LEVEL,18,PIDGEOTTO + db 0 +;Learnset + db 5,SAND_ATTACK + db 12,QUICK_ATTACK + db 19,WHIRLWIND + db 28,WING_ATTACK + db 36,AGILITY + db 44,MIRROR_MOVE + db 0 +Mon079_EvosMoves: ; 3b3ad (e:73ad) +;SLOWPOKE +;Evolutions + db EV_LEVEL,37,SLOWBRO + db 0 +;Learnset + db 18,DISABLE + db 22,HEADBUTT + db 27,GROWL + db 33,WATER_GUN + db 40,AMNESIA + db 48,PSYCHIC_M + db 0 +Mon064_EvosMoves: ; 3b3be (e:73be) +;KADABRA +;Evolutions + db EV_TRADE,1,ALAKAZAM + db 0 +;Learnset + db 16,CONFUSION + db 20,DISABLE + db 27,PSYBEAM + db 31,RECOVER + db 38,PSYCHIC_M + db 42,REFLECT + db 0 +Mon075_EvosMoves: ; 3b3cf (e:73cf) +;GRAVELER +;Evolutions + db EV_TRADE,1,GOLEM + db 0 +;Learnset + db 11,DEFENSE_CURL + db 16,ROCK_THROW + db 21,SELFDESTRUCT + db 29,HARDEN + db 36,EARTHQUAKE + db 43,EXPLOSION + db 0 +Mon113_EvosMoves: ; 3b3e0 (e:73e0) +;CHANSEY +;Evolutions + db 0 +;Learnset + db 24,SING + db 30,GROWL + db 38,MINIMIZE + db 44,DEFENSE_CURL + db 48,LIGHT_SCREEN + db 54,DOUBLE_EDGE + db 0 +Mon067_EvosMoves: ; 3b3ee (e:73ee) +;MACHOKE +;Evolutions + db EV_TRADE,1,MACHAMP + db 0 +;Learnset + db 20,LOW_KICK + db 25,LEER + db 36,FOCUS_ENERGY + db 44,SEISMIC_TOSS + db 52,SUBMISSION + db 0 +Mon122_EvosMoves: ; 3b3fd (e:73fd) +;MR_MIME +;Evolutions + db 0 +;Learnset + db 15,CONFUSION + db 23,LIGHT_SCREEN + db 31,DOUBLESLAP + db 39,MEDITATE + db 47,SUBSTITUTE + db 0 +Mon106_EvosMoves: ; 3b409 (e:7409) +;HITMONLEE +;Evolutions + db 0 +;Learnset + db 33,ROLLING_KICK + db 38,JUMP_KICK + db 43,FOCUS_ENERGY + db 48,HI_JUMP_KICK + db 53,MEGA_KICK + db 0 +Mon107_EvosMoves: ; 3b415 (e:7415) +;HITMONCHAN +;Evolutions + db 0 +;Learnset + db 33,FIRE_PUNCH + db 38,ICE_PUNCH + db 43,THUNDERPUNCH + db 48,MEGA_PUNCH + db 53,COUNTER + db 0 +Mon024_EvosMoves: ; 3b421 (e:7421) +;ARBOK +;Evolutions + db 0 +;Learnset + db 10,POISON_STING + db 17,BITE + db 27,GLARE + db 36,SCREECH + db 47,ACID + db 0 +Mon047_EvosMoves: ; 3b42d (e:742d) +;PARASECT +;Evolutions + db 0 +;Learnset + db 13,STUN_SPORE + db 20,LEECH_LIFE + db 30,SPORE + db 39,SLASH + db 48,GROWTH + db 0 +Mon054_EvosMoves: ; 3b439 (e:7439) +;PSYDUCK +;Evolutions + db EV_LEVEL,33,GOLDUCK + db 0 +;Learnset + db 28,TAIL_WHIP + db 31,DISABLE + db 36,CONFUSION + db 43,FURY_SWIPES + db 52,HYDRO_PUMP + db 0 +Mon096_EvosMoves: ; 3b448 (e:7448) +;DROWZEE +;Evolutions + db EV_LEVEL,26,HYPNO + db 0 +;Learnset + db 12,DISABLE + db 17,CONFUSION + db 24,HEADBUTT + db 29,POISON_GAS + db 32,PSYCHIC_M + db 37,MEDITATE + db 0 +Mon076_EvosMoves: ; 3b459 (e:7459) +;GOLEM +;Evolutions + db 0 +;Learnset + db 11,DEFENSE_CURL + db 16,ROCK_THROW + db 21,SELFDESTRUCT + db 29,HARDEN + db 36,EARTHQUAKE + db 43,EXPLOSION + db 0 + +Mon154_EvosMoves: ; 3b467 (e:7467) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon126_EvosMoves: ; 3b469 (e:7469) +;MAGMAR +;Evolutions + db 0 +;Learnset + db 36,LEER + db 39,CONFUSE_RAY + db 43,FIRE_PUNCH + db 48,SMOKESCREEN + db 52,SMOG + db 55,FLAMETHROWER + db 0 + +Mon155_EvosMoves: ; 3b477 (e:7477) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon125_EvosMoves: ; 3b479 (e:7479) +;ELECTABUZZ +;Evolutions + db 0 +;Learnset + db 34,THUNDERSHOCK + db 37,SCREECH + db 42,THUNDERPUNCH + db 49,LIGHT_SCREEN + db 54,THUNDER + db 0 +Mon082_EvosMoves: ; 3b485 (e:7485) +;MAGNETON +;Evolutions + db 0 +;Learnset + db 21,SONICBOOM + db 25,THUNDERSHOCK + db 29,SUPERSONIC + db 38,THUNDER_WAVE + db 46,SWIFT + db 54,SCREECH + db 0 +Mon109_EvosMoves: ; 3b493 (e:7493) +;KOFFING +;Evolutions + db EV_LEVEL,35,WEEZING + db 0 +;Learnset + db 32,SLUDGE + db 37,SMOKESCREEN + db 40,SELFDESTRUCT + db 45,HAZE + db 48,EXPLOSION + db 0 + +Mon156_EvosMoves: ; 3b4a2 (e:74a2) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon056_EvosMoves: ; 3b4a4 (e:74a4) +;MANKEY +;Evolutions + db EV_LEVEL,28,PRIMEAPE + db 0 +;Learnset + db 15,KARATE_CHOP + db 21,FURY_SWIPES + db 27,FOCUS_ENERGY + db 33,SEISMIC_TOSS + db 39,THRASH + db 0 +Mon086_EvosMoves: ; 3b4b3 (e:74b3) +;SEEL +;Evolutions + db EV_LEVEL,34,DEWGONG + db 0 +;Learnset + db 30,GROWL + db 35,AURORA_BEAM + db 40,REST + db 45,TAKE_DOWN + db 50,ICE_BEAM + db 0 +Mon050_EvosMoves: ; 3b4c2 (e:74c2) +;DIGLETT +;Evolutions + db EV_LEVEL,26,DUGTRIO + db 0 +;Learnset + db 15,GROWL + db 19,DIG + db 24,SAND_ATTACK + db 31,SLASH + db 40,EARTHQUAKE + db 0 +Mon128_EvosMoves: ; 3b4d1 (e:74d1) +;TAUROS +;Evolutions + db 0 +;Learnset + db 21,STOMP + db 28,TAIL_WHIP + db 35,LEER + db 44,RAGE + db 51,TAKE_DOWN + db 0 + +Mon157_EvosMoves: ; 3b4dd (e:74dd) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon158_EvosMoves: ; 3b4df (e:74df) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon159_EvosMoves: ; 3b4e1 (e:74e1) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon083_EvosMoves: ; 3b4e3 (e:74e3) +;FARFETCH_D +;Evolutions + db 0 +;Learnset + db 7,LEER + db 15,FURY_ATTACK + db 23,SWORDS_DANCE + db 31,AGILITY + db 39,SLASH + db 0 +Mon048_EvosMoves: ; 3b4ef (e:74ef) +;VENONAT +;Evolutions + db EV_LEVEL,31,VENOMOTH + db 0 +;Learnset + db 24,POISONPOWDER + db 27,LEECH_LIFE + db 30,STUN_SPORE + db 35,PSYBEAM + db 38,SLEEP_POWDER + db 43,PSYCHIC_M + db 0 +Mon149_EvosMoves: ; 3b500 (e:7500) +;DRAGONITE +;Evolutions + db 0 +;Learnset + db 10,THUNDER_WAVE + db 20,AGILITY + db 35,SLAM + db 45,DRAGON_RAGE + db 60,HYPER_BEAM + db 0 + +Mon160_EvosMoves: ; 3b50c (e:750c) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon161_EvosMoves: ; 3b50e (e:750e) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon162_EvosMoves: ; 3b510 (e:7510) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon084_EvosMoves: ; 3b512 (e:7512) +;DODUO +;Evolutions + db EV_LEVEL,31,DODRIO + db 0 +;Learnset + db 20,GROWL + db 24,FURY_ATTACK + db 30,DRILL_PECK + db 36,RAGE + db 40,TRI_ATTACK + db 44,AGILITY + db 0 +Mon060_EvosMoves: ; 3b523 (e:7523) +;POLIWAG +;Evolutions + db EV_LEVEL,25,POLIWHIRL + db 0 +;Learnset + db 16,HYPNOSIS + db 19,WATER_GUN + db 25,DOUBLESLAP + db 31,BODY_SLAM + db 38,AMNESIA + db 45,HYDRO_PUMP + db 0 +Mon124_EvosMoves: ; 3b534 (e:7534) +;JYNX +;Evolutions + db 0 +;Learnset + db 18,LICK + db 23,DOUBLESLAP + db 31,ICE_PUNCH + db 39,BODY_SLAM + db 47,THRASH + db 58,BLIZZARD + db 0 +Mon146_EvosMoves: ; 3b542 (e:7542) +;MOLTRES +;Evolutions + db 0 +;Learnset + db 51,LEER + db 55,AGILITY + db 60,SKY_ATTACK + db 0 +Mon144_EvosMoves: ; 3b54a (e:754a) +;ARTICUNO +;Evolutions + db 0 +;Learnset + db 51,BLIZZARD + db 55,AGILITY + db 60,MIST + db 0 +Mon145_EvosMoves: ; 3b552 (e:7552) +;ZAPDOS +;Evolutions + db 0 +;Learnset + db 51,THUNDER + db 55,AGILITY + db 60,LIGHT_SCREEN + db 0 +Mon132_EvosMoves: ; 3b55a (e:755a) +;DITTO +;Evolutions + db 0 +;Learnset + db 0 +Mon052_EvosMoves: ; 3b55c (e:755c) +;MEOWTH +;Evolutions + db EV_LEVEL,28,PERSIAN + db 0 +;Learnset + db 12,BITE + db 17,PAY_DAY + db 24,SCREECH + db 33,FURY_SWIPES + db 44,SLASH + db 0 +Mon098_EvosMoves: ; 3b56b (e:756b) +;KRABBY +;Evolutions + db EV_LEVEL,28,KINGLER + db 0 +;Learnset + db 20,VICEGRIP + db 25,GUILLOTINE + db 30,STOMP + db 35,CRABHAMMER + db 40,HARDEN + db 0 + +Mon163_EvosMoves: ; 3b57a (e:757a) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon164_EvosMoves: ; 3b57c (e:757c) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon165_EvosMoves: ; 3b57e (e:757e) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon037_EvosMoves: ; 3b580 (e:7580) +;VULPIX +;Evolutions + db EV_ITEM,FIRE_STONE,1,NINETALES + db 0 +;Learnset + db 16,QUICK_ATTACK + db 21,ROAR + db 28,CONFUSE_RAY + db 35,FLAMETHROWER + db 42,FIRE_SPIN + db 0 +Mon038_EvosMoves: ; 3b590 (e:7590) +;NINETALES +;Evolutions + db 0 +;Learnset + db 0 +Mon025_EvosMoves: ; 3b592 (e:7592) +;PIKACHU +;Evolutions + db EV_ITEM,THUNDER_STONE ,1,RAICHU + db 0 +;Learnset + db 9,THUNDER_WAVE + db 16,QUICK_ATTACK + db 26,SWIFT + db 33,AGILITY + db 43,THUNDER + db 0 +Mon026_EvosMoves: ; 3b5a2 (e:75a2) +;RAICHU +;Evolutions + db 0 +;Learnset + db 0 + +Mon166_EvosMoves: ; 3b5a4 (e:75a4) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon167_EvosMoves: ; 3b5a6 (e:75a6) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon147_EvosMoves: ; 3b5a8 (e:75a8) +;DRATINI +;Evolutions + db EV_LEVEL,30,DRAGONAIR + db 0 +;Learnset + db 10,THUNDER_WAVE + db 20,AGILITY + db 30,SLAM + db 40,DRAGON_RAGE + db 50,HYPER_BEAM + db 0 +Mon148_EvosMoves: ; 3b5b7 (e:75b7) +;DRAGONAIR +;Evolutions + db EV_LEVEL,55,DRAGONITE + db 0 +;Learnset + db 10,THUNDER_WAVE + db 20,AGILITY + db 35,SLAM + db 45,DRAGON_RAGE + db 55,HYPER_BEAM + db 0 +Mon140_EvosMoves: ; 3b5c6 (e:75c6) +;KABUTO +;Evolutions + db EV_LEVEL,40,KABUTOPS + db 0 +;Learnset + db 34,ABSORB + db 39,SLASH + db 44,LEER + db 49,HYDRO_PUMP + db 0 +Mon141_EvosMoves: ; 3b5d3 (e:75d3) +;KABUTOPS +;Evolutions + db 0 +;Learnset + db 34,ABSORB + db 39,SLASH + db 46,LEER + db 53,HYDRO_PUMP + db 0 +Mon116_EvosMoves: ; 3b5dd (e:75dd) +;HORSEA +;Evolutions + db EV_LEVEL,32,SEADRA + db 0 +;Learnset + db 19,SMOKESCREEN + db 24,LEER + db 30,WATER_GUN + db 37,AGILITY + db 45,HYDRO_PUMP + db 0 +Mon117_EvosMoves: ; 3b5ec (e:75ec) +;SEADRA +;Evolutions + db 0 +;Learnset + db 19,SMOKESCREEN + db 24,LEER + db 30,WATER_GUN + db 41,AGILITY + db 52,HYDRO_PUMP + db 0 + +Mon168_EvosMoves: ; 3b5f8 (e:75f8) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon169_EvosMoves: ; 3b5fa (e:75fa) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon027_EvosMoves: ; 3b5fc (e:75fc) +;SANDSHREW +;Evolutions + db EV_LEVEL,22,SANDSLASH + db 0 +;Learnset + db 10,SAND_ATTACK + db 17,SLASH + db 24,POISON_STING + db 31,SWIFT + db 38,FURY_SWIPES + db 0 +Mon028_EvosMoves: ; 3b60b (e:760b) +;SANDSLASH +;Evolutions + db 0 +;Learnset + db 10,SAND_ATTACK + db 17,SLASH + db 27,POISON_STING + db 36,SWIFT + db 47,FURY_SWIPES + db 0 +Mon138_EvosMoves: ; 3b617 (e:7617) +;OMANYTE +;Evolutions + db EV_LEVEL,40,OMASTAR + db 0 +;Learnset + db 34,HORN_ATTACK + db 39,LEER + db 46,SPIKE_CANNON + db 53,HYDRO_PUMP + db 0 +Mon139_EvosMoves: ; 3b624 (e:7624) +;OMASTAR +;Evolutions + db 0 +;Learnset + db 34,HORN_ATTACK + db 39,LEER + db 44,SPIKE_CANNON + db 49,HYDRO_PUMP + db 0 +Mon039_EvosMoves: ; 3b62e (e:762e) +;JIGGLYPUFF +;Evolutions + db EV_ITEM,MOON_STONE,1,WIGGLYTUFF + db 0 +;Learnset + db 9,POUND + db 14,DISABLE + db 19,DEFENSE_CURL + db 24,DOUBLESLAP + db 29,REST + db 34,BODY_SLAM + db 39,DOUBLE_EDGE + db 0 +Mon040_EvosMoves: ; 3b642 (e:7642) +;WIGGLYTUFF +;Evolutions + db 0 +;Learnset + db 0 +Mon133_EvosMoves: ; 3b644 (e:7644) +;EEVEE +;Evolutions + db EV_ITEM,FIRE_STONE,1,FLAREON + db EV_ITEM,THUNDER_STONE ,1,JOLTEON + db EV_ITEM,WATER_STONE ,1,VAPOREON + db 0 +;Learnset + db 27,QUICK_ATTACK + db 31,TAIL_WHIP + db 37,BITE + db 45,TAKE_DOWN + db 0 +Mon136_EvosMoves: ; 3b65a (e:765a) +;FLAREON +;Evolutions + db 0 +;Learnset + db 27,QUICK_ATTACK + db 31,EMBER + db 37,TAIL_WHIP + db 40,BITE + db 42,LEER + db 44,FIRE_SPIN + db 48,RAGE + db 54,FLAMETHROWER + db 0 +Mon135_EvosMoves: ; 3b66c (e:766c) +;JOLTEON +;Evolutions + db 0 +;Learnset + db 27,QUICK_ATTACK + db 31,THUNDERSHOCK + db 37,TAIL_WHIP + db 40,THUNDER_WAVE + db 42,DOUBLE_KICK + db 44,AGILITY + db 48,PIN_MISSILE + db 54,THUNDER + db 0 +Mon134_EvosMoves: ; 3b67e (e:767e) +;VAPOREON +;Evolutions + db 0 +;Learnset + db 27,QUICK_ATTACK + db 31,WATER_GUN + db 37,TAIL_WHIP + db 40,BITE + db 42,ACID_ARMOR + db 44,HAZE + db 48,MIST + db 54,HYDRO_PUMP + db 0 +Mon066_EvosMoves: ; 3b690 (e:7690) +;MACHOP +;Evolutions + db EV_LEVEL,28,MACHOKE + db 0 +;Learnset + db 20,LOW_KICK + db 25,LEER + db 32,FOCUS_ENERGY + db 39,SEISMIC_TOSS + db 46,SUBMISSION + db 0 +Mon041_EvosMoves: ; 3b69f (e:769f) +;ZUBAT +;Evolutions + db EV_LEVEL,22,GOLBAT + db 0 +;Learnset + db 10,SUPERSONIC + db 15,BITE + db 21,CONFUSE_RAY + db 28,WING_ATTACK + db 36,HAZE + db 0 +Mon023_EvosMoves: ; 3b6ae (e:76ae) +;EKANS +;Evolutions + db EV_LEVEL,22,ARBOK + db 0 +;Learnset + db 10,POISON_STING + db 17,BITE + db 24,GLARE + db 31,SCREECH + db 38,ACID + db 0 +Mon046_EvosMoves: ; 3b6bd (e:76bd) +;PARAS +;Evolutions + db EV_LEVEL,24,PARASECT + db 0 +;Learnset + db 13,STUN_SPORE + db 20,LEECH_LIFE + db 27,SPORE + db 34,SLASH + db 41,GROWTH + db 0 +Mon061_EvosMoves: ; 3b6cc (e:76cc) +;POLIWHIRL +;Evolutions + db EV_ITEM,WATER_STONE ,1,POLIWRATH + db 0 +;Learnset + db 16,HYPNOSIS + db 19,WATER_GUN + db 26,DOUBLESLAP + db 33,BODY_SLAM + db 41,AMNESIA + db 49,HYDRO_PUMP + db 0 +Mon062_EvosMoves: ; 3b6de (e:76de) +;POLIWRATH +;Evolutions + db 0 +;Learnset + db 16,HYPNOSIS + db 19,WATER_GUN + db 0 +Mon013_EvosMoves: ; 3b6e4 (e:76e4) +;WEEDLE +;Evolutions + db EV_LEVEL,7,KAKUNA + db 0 +;Learnset + db 0 +Mon014_EvosMoves: ; 3b6e9 (e:76e9) +;KAKUNA +;Evolutions + db EV_LEVEL,10,BEEDRILL + db 0 +;Learnset + db 0 +Mon015_EvosMoves: ; 3b6ee (e:76ee) +;BEEDRILL +;Evolutions + db 0 +;Learnset + db 12,FURY_ATTACK + db 16,FOCUS_ENERGY + db 20,TWINEEDLE + db 25,RAGE + db 30,PIN_MISSILE + db 35,AGILITY + db 0 + +Mon170_EvosMoves: ; 3b6fc (e:76fc) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon085_EvosMoves: ; 3b6fe (e:76fe) +;DODRIO +;Evolutions + db 0 +;Learnset + db 20,GROWL + db 24,FURY_ATTACK + db 30,DRILL_PECK + db 39,RAGE + db 45,TRI_ATTACK + db 51,AGILITY + db 0 +Mon057_EvosMoves: ; 3b70c (e:770c) +;PRIMEAPE +;Evolutions + db 0 +;Learnset + db 15,KARATE_CHOP + db 21,FURY_SWIPES + db 27,FOCUS_ENERGY + db 37,SEISMIC_TOSS + db 46,THRASH + db 0 +Mon051_EvosMoves: ; 3b718 (e:7718) +;DUGTRIO +;Evolutions + db 0 +;Learnset + db 15,GROWL + db 19,DIG + db 24,SAND_ATTACK + db 35,SLASH + db 47,EARTHQUAKE + db 0 +Mon049_EvosMoves: ; 3b724 (e:7724) +;VENOMOTH +;Evolutions + db 0 +;Learnset + db 24,POISONPOWDER + db 27,LEECH_LIFE + db 30,STUN_SPORE + db 38,PSYBEAM + db 43,SLEEP_POWDER + db 50,PSYCHIC_M + db 0 +Mon087_EvosMoves: ; 3b732 (e:7732) +;DEWGONG +;Evolutions + db 0 +;Learnset + db 30,GROWL + db 35,AURORA_BEAM + db 44,REST + db 50,TAKE_DOWN + db 56,ICE_BEAM + db 0 + +Mon171_EvosMoves: ; 3b73e (e:773e) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon172_EvosMoves: ; 3b740 (e:7740) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon010_EvosMoves: ; 3b742 (e:7742) +;CATERPIE +;Evolutions + db EV_LEVEL,7,METAPOD + db 0 +;Learnset + db 0 +Mon011_EvosMoves: ; 3b747 (e:7747) +;METAPOD +;Evolutions + db EV_LEVEL,10,BUTTERFREE + db 0 +;Learnset + db 0 +Mon012_EvosMoves: ; 3b74c (e:774c) +;BUTTERFREE +;Evolutions + db 0 +;Learnset + db 12,CONFUSION + db 15,POISONPOWDER + db 16,STUN_SPORE + db 17,SLEEP_POWDER + db 21,SUPERSONIC + db 26,WHIRLWIND + db 32,PSYBEAM + db 0 +Mon068_EvosMoves: ; 3b75c (e:775c) +;MACHAMP +;Evolutions + db 0 +;Learnset + db 20,LOW_KICK + db 25,LEER + db 36,FOCUS_ENERGY + db 44,SEISMIC_TOSS + db 52,SUBMISSION + db 0 + +Mon173_EvosMoves: ; 3b768 (e:7768) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon055_EvosMoves: ; 3b76a (e:776a) +;GOLDUCK +;Evolutions + db 0 +;Learnset + db 28,TAIL_WHIP + db 31,DISABLE + db 39,CONFUSION + db 48,FURY_SWIPES + db 59,HYDRO_PUMP + db 0 +Mon097_EvosMoves: ; 3b776 (e:7776) +;HYPNO +;Evolutions + db 0 +;Learnset + db 12,DISABLE + db 17,CONFUSION + db 24,HEADBUTT + db 33,POISON_GAS + db 37,PSYCHIC_M + db 43,MEDITATE + db 0 +Mon042_EvosMoves: ; 3b784 (e:7784) +;GOLBAT +;Evolutions + db 0 +;Learnset + db 10,SUPERSONIC + db 15,BITE + db 21,CONFUSE_RAY + db 32,WING_ATTACK + db 43,HAZE + db 0 +Mon150_EvosMoves: ; 3b790 (e:7790) +;MEWTWO +;Evolutions + db 0 +;Learnset + db 63,BARRIER + db 66,PSYCHIC_M + db 70,RECOVER + db 75,MIST + db 81,AMNESIA + db 0 +Mon143_EvosMoves: ; 3b79c (e:779c) +;SNORLAX +;Evolutions + db 0 +;Learnset + db 35,BODY_SLAM + db 41,HARDEN + db 48,DOUBLE_EDGE + db 56,HYPER_BEAM + db 0 +Mon129_EvosMoves: ; 3b7a6 (e:77a6) +;MAGIKARP +;Evolutions + db EV_LEVEL,20,GYARADOS + db 0 +;Learnset + db 15,TACKLE + db 0 + +Mon174_EvosMoves: ; 3b7ad (e:77ad) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon175_EvosMoves: ; 3b7af (e:77af) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon089_EvosMoves: ; 3b7b1 (e:77b1) +;MUK +;Evolutions + db 0 +;Learnset + db 30,POISON_GAS + db 33,MINIMIZE + db 37,SLUDGE + db 45,HARDEN + db 53,SCREECH + db 60,ACID_ARMOR + db 0 + +Mon176_EvosMoves: ; 3b7bf (e:77bf) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon099_EvosMoves: ; 3b7c1 (e:77c1) +;KINGLER +;Evolutions + db 0 +;Learnset + db 20,VICEGRIP + db 25,GUILLOTINE + db 34,STOMP + db 42,CRABHAMMER + db 49,HARDEN + db 0 +Mon091_EvosMoves: ; 3b7cd (e:77cd) +;CLOYSTER +;Evolutions + db 0 +;Learnset + db 50,SPIKE_CANNON + db 0 + +Mon177_EvosMoves: ; 3b7d1 (e:77d1) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon101_EvosMoves: ; 3b7d3 (e:77d3) +;ELECTRODE +;Evolutions + db 0 +;Learnset + db 17,SONICBOOM + db 22,SELFDESTRUCT + db 29,LIGHT_SCREEN + db 40,SWIFT + db 50,EXPLOSION + db 0 +Mon036_EvosMoves: ; 3b7df (e:77df) +;CLEFABLE +;Evolutions + db 0 +;Learnset + db 0 +Mon110_EvosMoves: ; 3b7e1 (e:77e1) +;WEEZING +;Evolutions + db 0 +;Learnset + db 32,SLUDGE + db 39,SMOKESCREEN + db 43,SELFDESTRUCT + db 49,HAZE + db 53,EXPLOSION + db 0 +Mon053_EvosMoves: ; 3b7ed (e:77ed) +;PERSIAN +;Evolutions + db 0 +;Learnset + db 12,BITE + db 17,PAY_DAY + db 24,SCREECH + db 37,FURY_SWIPES + db 51,SLASH + db 0 +Mon105_EvosMoves: ; 3b7f9 (e:77f9) +;MAROWAK +;Evolutions + db 0 +;Learnset + db 25,LEER + db 33,FOCUS_ENERGY + db 41,THRASH + db 48,BONEMERANG + db 55,RAGE + db 0 + +Mon178_EvosMoves: ; 3b805 (e:7805) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon093_EvosMoves: ; 3b807 (e:7807) +;HAUNTER +;Evolutions + db EV_TRADE,1,GENGAR + db 0 +;Learnset + db 29,HYPNOSIS + db 38,DREAM_EATER + db 0 +Mon063_EvosMoves: ; 3b810 (e:7810) +;ABRA +;Evolutions + db EV_LEVEL,16,KADABRA + db 0 +;Learnset + db 0 +Mon065_EvosMoves: ; 3b815 (e:7815) +;ALAKAZAM +;Evolutions + db 0 +;Learnset + db 16,CONFUSION + db 20,DISABLE + db 27,PSYBEAM + db 31,RECOVER + db 38,PSYCHIC_M + db 42,REFLECT + db 0 +Mon017_EvosMoves: ; 3b823 (e:7823) +;PIDGEOTTO +;Evolutions + db EV_LEVEL,36,PIDGEOT + db 0 +;Learnset + db 5,SAND_ATTACK + db 12,QUICK_ATTACK + db 21,WHIRLWIND + db 31,WING_ATTACK + db 40,AGILITY + db 49,MIRROR_MOVE + db 0 +Mon018_EvosMoves: ; 3b834 (e:7834) +;PIDGEOT +;Evolutions + db 0 +;Learnset + db 5,SAND_ATTACK + db 12,QUICK_ATTACK + db 21,WHIRLWIND + db 31,WING_ATTACK + db 44,AGILITY + db 54,MIRROR_MOVE + db 0 +Mon121_EvosMoves: ; 3b842 (e:7842) +;STARMIE +;Evolutions + db 0 +;Learnset + db 0 +Mon001_EvosMoves: ; 3b844 (e:7844) +;BULBASAUR +;Evolutions + db EV_LEVEL,16,IVYSAUR + db 0 +;Learnset + db 7,LEECH_SEED + db 13,VINE_WHIP + db 20,POISONPOWDER + db 27,RAZOR_LEAF + db 34,GROWTH + db 41,SLEEP_POWDER + db 48,SOLARBEAM + db 0 +Mon003_EvosMoves: ; 3b857 (e:7857) +;VENUSAUR +;Evolutions + db 0 +;Learnset + db 7,LEECH_SEED + db 13,VINE_WHIP + db 22,POISONPOWDER + db 30,RAZOR_LEAF + db 43,GROWTH + db 55,SLEEP_POWDER + db 65,SOLARBEAM + db 0 +Mon073_EvosMoves: ; 3b867 (e:7867) +;TENTACRUEL +;Evolutions + db 0 +;Learnset + db 7,SUPERSONIC + db 13,WRAP + db 18,POISON_STING + db 22,WATER_GUN + db 27,CONSTRICT + db 35,BARRIER + db 43,SCREECH + db 50,HYDRO_PUMP + db 0 + +Mon179_EvosMoves: ; 3b879 (e:7879) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon118_EvosMoves: ; 3b87b (e:787b) +;GOLDEEN +;Evolutions + db EV_LEVEL,33,SEAKING + db 0 +;Learnset + db 19,SUPERSONIC + db 24,HORN_ATTACK + db 30,FURY_ATTACK + db 37,WATERFALL + db 45,HORN_DRILL + db 54,AGILITY + db 0 +Mon119_EvosMoves: ; 3b88c (e:788c) +;SEAKING +;Evolutions + db 0 +;Learnset + db 19,SUPERSONIC + db 24,HORN_ATTACK + db 30,FURY_ATTACK + db 39,WATERFALL + db 48,HORN_DRILL + db 54,AGILITY + db 0 + +Mon180_EvosMoves: ; 3b89a (e:789a) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon181_EvosMoves: ; 3b89c (e:789c) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon182_EvosMoves: ; 3b89e (e:789e) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon183_EvosMoves: ; 3b8a0 (e:78a0) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon077_EvosMoves: ; 3b8a2 (e:78a2) +;PONYTA +;Evolutions + db EV_LEVEL,40,RAPIDASH + db 0 +;Learnset + db 30,TAIL_WHIP + db 32,STOMP + db 35,GROWL + db 39,FIRE_SPIN + db 43,TAKE_DOWN + db 48,AGILITY + db 0 +Mon078_EvosMoves: ; 3b8b3 (e:78b3) +;RAPIDASH +;Evolutions + db 0 +;Learnset + db 30,TAIL_WHIP + db 32,STOMP + db 35,GROWL + db 39,FIRE_SPIN + db 47,TAKE_DOWN + db 55,AGILITY + db 0 +Mon019_EvosMoves: ; 3b8c1 (e:78c1) +;RATTATA +;Evolutions + db EV_LEVEL,20,RATICATE + db 0 +;Learnset + db 7,QUICK_ATTACK + db 14,HYPER_FANG + db 23,FOCUS_ENERGY + db 34,SUPER_FANG + db 0 +Mon020_EvosMoves: ; 3b8ce (e:78ce) +;RATICATE +;Evolutions + db 0 +;Learnset + db 7,QUICK_ATTACK + db 14,HYPER_FANG + db 27,FOCUS_ENERGY + db 41,SUPER_FANG + db 0 +Mon033_EvosMoves: ; 3b8d8 (e:78d8) +;NIDORINO +;Evolutions + db EV_ITEM,MOON_STONE,1,NIDOKING + db 0 +;Learnset + db 8,HORN_ATTACK + db 14,POISON_STING + db 23,FOCUS_ENERGY + db 32,FURY_ATTACK + db 41,HORN_DRILL + db 50,DOUBLE_KICK + db 0 +Mon030_EvosMoves: ; 3b8ea (e:78ea) +;NIDORINA +;Evolutions + db EV_ITEM,MOON_STONE,1,NIDOQUEEN + db 0 +;Learnset + db 8,SCRATCH + db 14,POISON_STING + db 23,TAIL_WHIP + db 32,BITE + db 41,FURY_SWIPES + db 50,DOUBLE_KICK + db 0 +Mon074_EvosMoves: ; 3b8fc (e:78fc) +;GEODUDE +;Evolutions + db EV_LEVEL,25,GRAVELER + db 0 +;Learnset + db 11,DEFENSE_CURL + db 16,ROCK_THROW + db 21,SELFDESTRUCT + db 26,HARDEN + db 31,EARTHQUAKE + db 36,EXPLOSION + db 0 +Mon137_EvosMoves: ; 3b90d (e:790d) +;PORYGON +;Evolutions + db 0 +;Learnset + db 23,PSYBEAM + db 28,RECOVER + db 35,AGILITY + db 42,TRI_ATTACK + db 0 +Mon142_EvosMoves: ; 3b917 (e:7917) +;AERODACTYL +;Evolutions + db 0 +;Learnset + db 33,SUPERSONIC + db 38,BITE + db 45,TAKE_DOWN + db 54,HYPER_BEAM + db 0 + +Mon184_EvosMoves: ; 3b921 (e:7921) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon081_EvosMoves: ; 3b923 (e:7923) +;MAGNEMITE +;Evolutions + db EV_LEVEL,30,MAGNETON + db 0 +;Learnset + db 21,SONICBOOM + db 25,THUNDERSHOCK + db 29,SUPERSONIC + db 35,THUNDER_WAVE + db 41,SWIFT + db 47,SCREECH + db 0 + +Mon185_EvosMoves: ; 3b934 (e:7934) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon186_EvosMoves: ; 3b936 (e:7936) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon004_EvosMoves: ; 3b938 (e:7938) +;CHARMANDER +;Evolutions + db EV_LEVEL,16,CHARMELEON + db 0 +;Learnset + db 9,EMBER + db 15,LEER + db 22,RAGE + db 30,SLASH + db 38,FLAMETHROWER + db 46,FIRE_SPIN + db 0 +Mon007_EvosMoves: ; 3b949 (e:7949) +;SQUIRTLE +;Evolutions + db EV_LEVEL,16,WARTORTLE + db 0 +;Learnset + db 8,BUBBLE + db 15,WATER_GUN + db 22,BITE + db 28,WITHDRAW + db 35,SKULL_BASH + db 42,HYDRO_PUMP + db 0 +Mon005_EvosMoves: ; 3b95a (e:795a) +;CHARMELEON +;Evolutions + db EV_LEVEL,36,CHARIZARD + db 0 +;Learnset + db 9,EMBER + db 15,LEER + db 24,RAGE + db 33,SLASH + db 42,FLAMETHROWER + db 56,FIRE_SPIN + db 0 +Mon008_EvosMoves: ; 3b96b (e:796b) +;WARTORTLE +;Evolutions + db EV_LEVEL,36,BLASTOISE + db 0 +;Learnset + db 8,BUBBLE + db 15,WATER_GUN + db 24,BITE + db 31,WITHDRAW + db 39,SKULL_BASH + db 47,HYDRO_PUMP + db 0 +Mon006_EvosMoves: ; 3b97c (e:797c) +;CHARIZARD +;Evolutions + db 0 +;Learnset + db 9,EMBER + db 15,LEER + db 24,RAGE + db 36,SLASH + db 46,FLAMETHROWER + db 55,FIRE_SPIN + db 0 + +Mon187_EvosMoves: ; 3b98a (e:798a) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon188_EvosMoves: ; 3b98c (e:798c) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon189_EvosMoves: ; 3b98e (e:798e) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 + +Mon190_EvosMoves: ; 3b990 (e:7990) +;MISSINGNO +;Evolutions + db 0 +;Learnset + db 0 +Mon043_EvosMoves: ; 3b992 (e:7992) +;ODDISH +;Evolutions + db EV_LEVEL,21,GLOOM + db 0 +;Learnset + db 15,POISONPOWDER + db 17,STUN_SPORE + db 19,SLEEP_POWDER + db 24,ACID + db 33,PETAL_DANCE + db 46,SOLARBEAM + db 0 +Mon044_EvosMoves: ; 3b9a3 (e:79a3) +;GLOOM +;Evolutions + db EV_ITEM,LEAF_STONE ,1,VILEPLUME + db 0 +;Learnset + db 15,POISONPOWDER + db 17,STUN_SPORE + db 19,SLEEP_POWDER + db 28,ACID + db 38,PETAL_DANCE + db 52,SOLARBEAM + db 0 +Mon045_EvosMoves: ; 3b9b5 (e:79b5) +;VILEPLUME +;Evolutions + db 0 +;Learnset + db 15,POISONPOWDER + db 17,STUN_SPORE + db 19,SLEEP_POWDER + db 0 +Mon069_EvosMoves: ; 3b9bd (e:79bd) +;BELLSPROUT +;Evolutions + db EV_LEVEL,21,WEEPINBELL + db 0 +;Learnset + db 13,WRAP + db 15,POISONPOWDER + db 18,SLEEP_POWDER + db 21,STUN_SPORE + db 26,ACID + db 33,RAZOR_LEAF + db 42,SLAM + db 0 +Mon070_EvosMoves: ; 3b9d0 (e:79d0) +;WEEPINBELL +;Evolutions + db EV_ITEM,LEAF_STONE ,1,VICTREEBEL + db 0 +;Learnset + db 13,WRAP + db 15,POISONPOWDER + db 18,SLEEP_POWDER + db 23,STUN_SPORE + db 29,ACID + db 38,RAZOR_LEAF + db 49,SLAM + db 0 +Mon071_EvosMoves: ; 3b9e4 (e:79e4) +;VICTREEBEL +;Evolutions + db 0 +;Learnset + db 13,WRAP + db 15,POISONPOWDER + db 18,SLEEP_POWDER + db 0 \ No newline at end of file diff --git a/data/force_bike_surf.asm b/data/force_bike_surf.asm new file mode 100755 index 00000000..ff38ee6d --- /dev/null +++ b/data/force_bike_surf.asm @@ -0,0 +1,11 @@ +ForcedBikeOrSurfMaps: ; c3e6 (3:43e6) +; map id, y, x + db ROUTE_16,$0A,$11 + db ROUTE_16,$0B,$11 + db ROUTE_18,$08,$21 + db ROUTE_18,$09,$21 + db SEAFOAM_ISLANDS_4,$07,$12 + db SEAFOAM_ISLANDS_4,$07,$13 + db SEAFOAM_ISLANDS_5,$0E,$04 + db SEAFOAM_ISLANDS_5,$0E,$05 + db $FF ;end \ No newline at end of file diff --git a/data/good_rod.asm b/data/good_rod.asm new file mode 100755 index 00000000..bb554ce3 --- /dev/null +++ b/data/good_rod.asm @@ -0,0 +1,3 @@ +GoodRodMons: ; e27f (3:627f) + db 10,GOLDEEN + db 10,POLIWAG \ No newline at end of file diff --git a/data/hidden_coins.asm b/data/hidden_coins.asm new file mode 100755 index 00000000..5106d88a --- /dev/null +++ b/data/hidden_coins.asm @@ -0,0 +1,14 @@ +HiddenCoinCoords: ; 76822 (1d:6822) + db GAME_CORNER,$08,$00 + db GAME_CORNER,$10,$01 + db GAME_CORNER,$0b,$03 + db GAME_CORNER,$0e,$03 + db GAME_CORNER,$0c,$04 + db GAME_CORNER,$0c,$09 + db GAME_CORNER,$0f,$09 + db GAME_CORNER,$0e,$10 + db GAME_CORNER,$10,$0a + db GAME_CORNER,$07,$0b + db GAME_CORNER,$08,$0f + db GAME_CORNER,$0f,$0c + db $ff \ No newline at end of file diff --git a/data/hidden_item_coords.asm b/data/hidden_item_coords.asm new file mode 100755 index 00000000..f0ed2e75 --- /dev/null +++ b/data/hidden_item_coords.asm @@ -0,0 +1,57 @@ +HiddenItemCoords: ; 766b8 (1d:66b8) +; map ID, then coords + db VIRIDIAN_FOREST,$12,$01 + db VIRIDIAN_FOREST,$2a,$10 + db MT_MOON_3,$0c,$12 + db ROUTE_25,$03,$26 + db ROUTE_9,$07,$0e + db SS_ANNE_6,$09,$0d + db SS_ANNE_10,$01,$03 + db ROUTE_10,$11,$09 + db ROUTE_10,$35,$10 + db ROCKET_HIDEOUT_1,$0f,$15 + db ROCKET_HIDEOUT_3,$11,$1b + db ROCKET_HIDEOUT_4,$01,$19 + db POKEMONTOWER_5,$0c,$04 + db ROUTE_13,$0e,$01 + db ROUTE_13,$0d,$10 + db MANSION_4,$09,$01 + db SAFARI_ZONE_ENTRANCE,$01,$0a + db SAFARI_ZONE_WEST,$05,$06 + db SILPH_CO_5F,$03,$0c + db SILPH_CO_9F,$0f,$02 + db COPYCATS_HOUSE_2F,$01,$01 + db UNKNOWN_DUNGEON_1,$0b,$0e + db UNKNOWN_DUNGEON_3,$03,$1b + db POWER_PLANT,$10,$11 + db POWER_PLANT,$01,$0c + db SEAFOAM_ISLANDS_3,$0f,$0f + db SEAFOAM_ISLANDS_5,$11,$19 + db MANSION_1,$10,$08 + db MANSION_3,$09,$01 + db ROUTE_23,$2c,$09 + db ROUTE_23,$46,$13 + db ROUTE_23,$5a,$08 + db VICTORY_ROAD_2,$02,$05 + db VICTORY_ROAD_2,$07,$1a + db $6f,$0b,$0e + db VIRIDIAN_CITY,$04,$0e + db ROUTE_11,$05,$30 + db ROUTE_12,$3f,$02 + db ROUTE_17,$0e,$0f + db ROUTE_17,$2d,$08 + db ROUTE_17,$48,$11 + db ROUTE_17,$5b,$04 + db ROUTE_17,$79,$08 + db UNDERGROUND_PATH_NS,$04,$03 + db UNDERGROUND_PATH_NS,$22,$04 + db UNDERGROUND_PATH_WE,$02,$0c + db UNDERGROUND_PATH_WE,$05,$15 + db CELADON_CITY,$0f,$30 + db ROUTE_25,$01,$0a + db MT_MOON_3,$09,$21 + db SEAFOAM_ISLANDS_4,$10,$09 + db VERMILION_CITY,$0b,$0e + db CERULEAN_CITY,$08,$0f + db ROUTE_4,$03,$28 + db $ff \ No newline at end of file diff --git a/data/hidden_objects.asm b/data/hidden_objects.asm new file mode 100755 index 00000000..d5554ff5 --- /dev/null +++ b/data/hidden_objects.asm @@ -0,0 +1,780 @@ +HiddenObjectMaps: ; 46a40 (11:6a40) + db REDS_HOUSE_2F + db BLUES_HOUSE + db OAKS_LAB + db VIRIDIAN_POKECENTER + db VIRIDIAN_MART + db VIRIDIAN_SCHOOL + db VIRIDIAN_GYM + db MUSEUM_1F + db PEWTER_GYM + db PEWTER_MART + db PEWTER_POKECENTER + db CERULEAN_POKECENTER + db CERULEAN_GYM + db CERULEAN_MART + db LAVENDER_POKECENTER + db VERMILION_POKECENTER + db VERMILION_GYM + db CELADON_MANSION_2 + db CELADON_POKECENTER + db CELADON_GYM + db GAME_CORNER + db CELADON_HOTEL + db FUCHSIA_POKECENTER + db FUCHSIA_GYM + db CINNABAR_GYM + db CINNABAR_POKECENTER + db SAFFRON_GYM + db MT_MOON_POKECENTER + db ROCK_TUNNEL_POKECENTER + db BATTLE_CENTER + db TRADE_CENTER + db VIRIDIAN_FOREST + db MT_MOON_3 + db INDIGO_PLATEAU + db ROUTE_25 + db ROUTE_9 + db SS_ANNE_6 + db SS_ANNE_10 + db ROCKET_HIDEOUT_1 + db ROCKET_HIDEOUT_3 + db ROCKET_HIDEOUT_4 + db SAFFRON_POKECENTER + db POKEMONTOWER_5 + db ROUTE_13 + db SAFARI_ZONE_ENTRANCE + db SAFARI_ZONE_WEST + db SILPH_CO_5F + db SILPH_CO_9F + db COPYCATS_HOUSE_2F + db UNKNOWN_DUNGEON_1 + db UNKNOWN_DUNGEON_3 + db POWER_PLANT + db SEAFOAM_ISLANDS_3 + db SEAFOAM_ISLANDS_5 + db MANSION_1 + db MANSION_3 + db ROUTE_23 + db VICTORY_ROAD_2 + db $6F + db BILLS_HOUSE + db VIRIDIAN_CITY + db SAFARI_ZONE_REST_HOUSE_2 + db SAFARI_ZONE_REST_HOUSE_3 + db SAFARI_ZONE_REST_HOUSE_4 + db $B9 + db LAVENDER_HOUSE_1 + db CELADON_MANSION_5 + db FIGHTING_DOJO + db ROUTE_10 + db INDIGO_PLATEAU_LOBBY + db CINNABAR_LAB_4 + db BIKE_SHOP + db ROUTE_11 + db ROUTE_12 + db MANSION_2 + db MANSION_4 + db SILPH_CO_11F + db ROUTE_17 + db UNDERGROUND_PATH_NS + db UNDERGROUND_PATH_WE + db CELADON_CITY + db SEAFOAM_ISLANDS_4 + db VERMILION_CITY + db CERULEAN_CITY + db ROUTE_4 + db $FF + +HiddenObjectPointers: ; 46a96 (11:6a96) +; each of these pointers is for the corresponding map in HiddenObjectMaps + dw RedsHouse2FHiddenObjects + dw BluesHouseHiddenObjects + dw OaksLabHiddenObjects + dw ViridianPokecenterHiddenObjects + dw ViridianMartHiddenObjects + dw ViridianSchoolHiddenObjects + dw ViridianGymHiddenObjects + dw Museum1FHiddenObjects + dw PewterGymHiddenObjects + dw PewterMartHiddenObjects + dw PewterPokecenterHiddenObjects + dw CeruleanPokecenterHiddenObjects + dw CeruleanGymHiddenObjects + dw CeruleanMartHiddenObjects + dw LavenderPokecenterHiddenObjects + dw VermilionPokecenterHiddenObjects + dw VermilionGymHiddenObjects + dw CeladonMansion2HiddenObjects + dw CeladonPokecenterHiddenObjects + dw CeladonGymHiddenObjects + dw GameCornerHiddenObjects + dw CeladonHotelHiddenObjects + dw FuchsiaPokecenterHiddenObjects + dw FuchsiaGymHiddenObjects + dw CinnabarGymHiddenObjects + dw CinnabarPokecenterHiddenObjects + dw SaffronGymHiddenObjects + dw MtMoonPokecenterHiddenObjects + dw RockTunnelPokecenterHiddenObjects + dw BattleCenterHiddenObjects + dw TradeCenterHiddenObjects + dw ViridianForestHiddenObjects + dw MtMoon3HiddenObjects + dw IndigoPlateauHiddenObjects + dw Route25HiddenObjects + dw Route9HiddenObjects + dw SSAnne6HiddenObjects + dw SSAnne10HiddenObjects + dw RocketHideout1HiddenObjects + dw RocketHideout3HiddenObjects + dw RocketHideout4HiddenObjects + dw SaffronPokecenterHiddenObjects + dw PokemonTower5HiddenObjects + dw Route13HiddenObjects + dw SafariZoneEntranceHiddenObjects + dw SafariZoneWestHiddenObjects + dw SilphCo5FHiddenObjects + dw SilphCo9FHiddenObjects + dw CopycatsHouse2FHiddenObjects + dw UnknownDungeon1HiddenObjects + dw UnknownDungeon3HiddenObjects + dw PowerPlantHiddenObjects + dw SeafoamIslands3HiddenObjects + dw SeafoamIslands5HiddenObjects + dw Mansion1HiddenObjects + dw Mansion3HiddenObjects + dw Route23HiddenObjects + dw VictoryRoad2HiddenObjects + dw Unused6FHiddenObjects + dw BillsHouseHiddenObjects + dw ViridianCityHiddenObjects + dw SafariZoneRestHouse2HiddenObjects + dw SafariZoneRestHouse3HiddenObjects + dw SafariZoneRestHouse4HiddenObjects + dw UnusedB9HiddenObjects + dw LavenderHouse1HiddenObjects + dw CeladonMansion5HiddenObjects + dw FightingDojoHiddenObjects + dw Route10HiddenObjects + dw IndigoPlateauLobbyHiddenObjects + dw CinnabarLab4HiddenObjects + dw BikeShopHiddenObjects + dw Route11HiddenObjects + dw Route12HiddenObjects + dw Mansion2HiddenObjects + dw Mansion4HiddenObjects + dw SilphCo11FHiddenObjects + dw Route17HiddenObjects + dw UndergroundPathNsHiddenObjects + dw UndergroundPathWeHiddenObjects + dw CeladonCityHiddenObjects + dw SeafoamIslands4HiddenObjects + dw VermilionCityHiddenObjects + dw CeruleanCityHiddenObjects + dw Route4HiddenObjects + +BattleCenterHiddenObjects: ; 46b40 (11:6b40) + db $04,$05,$d0 ; XXX, y, x + dbw Bank(Func_21845), Func_21845 + db $04,$04,$d0 ; XXX, y, x + dbw Bank(Func_21825), Func_21825 + db $FF +TradeCenterHiddenObjects: ; 46b4d (11:6b4d) + db $04,$05,$d0 ; XXX, y, x + dbw Bank(Func_21845), Func_21845 + db $04,$04,$d0 ; XXX, y, x + dbw Bank(Func_21825), Func_21825 + db $FF +RedsHouse2FHiddenObjects: ; 46b5a (11:6b5a) + db $01,$00,$04 ; XXX, y, x + dbw Bank(Func_5db86), Func_5db86 + db $05,$03,$d0 ; XXX, y, x + dbw Bank(Func_5db79), Func_5db79 + db $FF +BluesHouseHiddenObjects: ; 46b67 (11:6b67) + db $01,$00,$04 ; XXX, y, x + dbw Bank(Func_62509), Func_62509 + db $01,$01,$04 ; XXX, y, x + dbw Bank(Func_62509), Func_62509 + db $01,$07,$04 ; XXX, y, x + dbw Bank(Func_62509), Func_62509 + db $FF +OaksLabHiddenObjects: ; 46b7a (11:6b7a) + db $00,$04,$04 ; XXX, y, x + dbw Bank(Func_1e958), Func_1e958 + db $00,$05,$04 ; XXX, y, x + dbw Bank(Func_1e965), Func_1e965 + db $01,$00,$04 ; XXX, y, x + dbw Bank(Func_1ecaf), Func_1ecaf + db $01,$01,$04 ; XXX, y, x + dbw Bank(Func_1ecaf), Func_1ecaf + db $FF +ViridianPokecenterHiddenObjects: ; 46b93 (11:6b93) + db $04,$00,$08 ; XXX, y, x + dbw Bank(Func_6245d), Func_6245d + db $03,$0d,$04 ; XXX, y, x + dbw Bank(Func_62516), Func_62516 + db $FF +ViridianMartHiddenObjects: ; 46ba0 (11:6ba0) + db $FF +ViridianSchoolHiddenObjects: ; 46ba1 (11:6ba1) + db $04,$03,$20 ; XXX, y, x + dbw Bank(Func_52996), Func_52996 + db $00,$03,$21 ; XXX, y, x + dbw Bank(Func_5dc1a), Func_5dc1a + db $FF +ViridianGymHiddenObjects: ; 46bae (11:6bae) + db $0f,$0f,$04 ; XXX, y, x + dbw BANK(GymStatues),GymStatues + db $0f,$12,$04 ; XXX, y, x + dbw BANK(GymStatues),GymStatues + db $FF +Museum1FHiddenObjects: ; 46bbb (11:6bbb) + db $03,$02,$04 ; XXX, y, x + dbw Bank(AerodactylFossil), AerodactylFossil + db $06,$02,$04 ; XXX, y, x + dbw Bank(KabutopsFossil), KabutopsFossil + db $FF +PewterGymHiddenObjects: ; 46bc8 (11:6bc8) + db $0a,$03,$04 ; XXX, y, x + dbw BANK(GymStatues),GymStatues + db $0a,$06,$04 ; XXX, y, x + dbw BANK(GymStatues),GymStatues + db $FF +PewterMartHiddenObjects: ; 46bd5 (11:6bd5) + db $FF +PewterPokecenterHiddenObjects: ; 46bd6 (11:6bd6) + db $04,$00,$08 ; XXX, y, x + dbw Bank(Func_6245d), Func_6245d + db $03,$0d,$04 ; XXX, y, x + dbw Bank(Func_62516), Func_62516 + db $FF +CeruleanPokecenterHiddenObjects: ; 46be3 (11:6be3) + db $04,$00,$08 ; XXX, y, x + dbw Bank(Func_6245d), Func_6245d + db $03,$0d,$04 ; XXX, y, x + dbw Bank(Func_62516), Func_62516 + db $FF +CeruleanGymHiddenObjects: ; 46bf0 (11:6bf0) + db $0b,$03,$04 ; XXX, y, x + dbw BANK(GymStatues),GymStatues + db $0b,$06,$04 ; XXX, y, x + dbw BANK(GymStatues),GymStatues + db $FF +CeruleanMartHiddenObjects: ; 46bfd (11:6bfd) + db $FF +LavenderPokecenterHiddenObjects: ; 46bfe (11:6bfe) + db $04,$00,$08 ; XXX, y, x + dbw Bank(Func_6245d), Func_6245d + db $03,$0d,$04 ; XXX, y, x + dbw Bank(Func_62516), Func_62516 + db $FF +VermilionPokecenterHiddenObjects: ; 46c0b (11:6c0b) + db $03,$0d,$04 ; XXX, y, x + dbw Bank(Func_62516), Func_62516 + db $04,$00,$04 ; XXX, y, x + dbw Bank(Func_6245d), Func_6245d + db $FF +VermilionGymHiddenObjects: ; 46c18 (11:6c18) + db $0e,$03,$04 ; XXX, y, x + dbw BANK(GymStatues), GymStatues + db $0e,$06,$04 ; XXX, y, x + dbw BANK(GymStatues), GymStatues + db $01,$06,$00 ; XXX, y, x + dbw Bank(Func_5ddef), Func_5ddef + db $07,$01,$00 ; XXX, y, x + dbw Bank(GymTrashScript), GymTrashScript + db $09,$01,$01 ; XXX, y, x + dbw Bank(GymTrashScript), GymTrashScript + db $0b,$01,$02 ; XXX, y, x + dbw Bank(GymTrashScript), GymTrashScript + db $07,$03,$03 ; XXX, y, x + dbw Bank(GymTrashScript), GymTrashScript + db $09,$03,$04 ; XXX, y, x + dbw Bank(GymTrashScript), GymTrashScript + db $0b,$03,$05 ; XXX, y, x + dbw Bank(GymTrashScript), GymTrashScript + db $07,$05,$06 ; XXX, y, x + dbw Bank(GymTrashScript), GymTrashScript + db $09,$05,$07 ; XXX, y, x + dbw Bank(GymTrashScript), GymTrashScript + db $0b,$05,$08 ; XXX, y, x + dbw Bank(GymTrashScript), GymTrashScript + db $07,$07,$09 ; XXX, y, x + dbw Bank(GymTrashScript), GymTrashScript + db $09,$07,$0a ; XXX, y, x + dbw Bank(GymTrashScript), GymTrashScript + db $0b,$07,$0b ; XXX, y, x + dbw Bank(GymTrashScript), GymTrashScript + db $07,$09,$0c ; XXX, y, x + dbw Bank(GymTrashScript), GymTrashScript + db $09,$09,$0d ; XXX, y, x + dbw Bank(GymTrashScript), GymTrashScript + db $0b,$09,$0e ; XXX, y, x + dbw Bank(GymTrashScript), GymTrashScript + db $FF +CeladonMansion2HiddenObjects: ; 46c85 (11:6c85) + db $05,$00,$04 ; XXX, y, x + dbw Bank(Func_62516), Func_62516 + db $FF +CeladonPokecenterHiddenObjects: ; 46c8c (11:6c8c) + db $04,$00,$08 ; XXX, y, x + dbw Bank(Func_6245d), Func_6245d + db $03,$0d,$04 ; XXX, y, x + dbw Bank(Func_62516), Func_62516 + db $FF +CeladonGymHiddenObjects: ; 46c99 (11:6c99) + db $0f,$03,$04 ; XXX, y, x + dbw BANK(GymStatues),GymStatues + db $0f,$06,$04 ; XXX, y, x + dbw BANK(GymStatues),GymStatues + db $FF +GameCornerHiddenObjects: ; 46ca6 (11:6ca6) + db $0f,$12,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0e,$12,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0d,$12,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0c,$12,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0b,$12,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0a,$12,$ff ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0a,$0d,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0b,$0d,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0c,$0d,$fe ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0d,$0d,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0e,$0d,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0f,$0d,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0f,$0c,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0e,$0c,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0d,$0c,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0c,$0c,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0b,$0c,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0a,$0c,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0a,$07,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0b,$07,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0c,$07,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0d,$07,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0e,$07,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0f,$07,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0f,$06,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0e,$06,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0d,$06,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0c,$06,$fd ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0b,$06,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0a,$06,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0a,$01,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0b,$01,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0c,$01,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0d,$01,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0e,$01,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $0f,$01,$d0 ; XXX, y, x + dbw Bank(Func_37e2d), Func_37e2d + db $08,$00,COIN+10 + dbw BANK(HiddenCoins),HiddenCoins + db $10,$01,COIN+10 + dbw BANK(HiddenCoins),HiddenCoins + db $0b,$03,COIN+20 + dbw BANK(HiddenCoins),HiddenCoins + db $0e,$03,COIN+10 + dbw BANK(HiddenCoins),HiddenCoins + db $0c,$04,COIN+10 + dbw BANK(HiddenCoins),HiddenCoins + db $0c,$09,COIN+20 + dbw BANK(HiddenCoins),HiddenCoins + db $0f,$09,COIN+10 + dbw BANK(HiddenCoins),HiddenCoins + db $0e,$10,COIN+10 + dbw BANK(HiddenCoins),HiddenCoins + db $10,$0a,COIN+10 + dbw BANK(HiddenCoins),HiddenCoins + db $07,$0b,COIN+40 + dbw BANK(HiddenCoins),HiddenCoins + db $08,$0f,COIN+100 + dbw BANK(HiddenCoins),HiddenCoins + db $0f,$0c,COIN+10 + dbw BANK(HiddenCoins),HiddenCoins + db $FF +CeladonHotelHiddenObjects: ; 46dc7 (11:6dc7) + db $03,$0d,$04 ; XXX, y, x + dbw Bank(Func_62516), Func_62516 + db $04,$00,$08 ; XXX, y, x + dbw Bank(Func_6245d), Func_6245d + db $FF +FuchsiaPokecenterHiddenObjects: ; 46dd4 (11:6dd4) + db $03,$0d,$04 ; XXX, y, x + dbw Bank(Func_62516), Func_62516 + db $04,$00,$04 ; XXX, y, x + dbw Bank(Func_6245d), Func_6245d + db $FF +FuchsiaGymHiddenObjects: ; 46de1 (11:6de1) + db $0f,$03,$04 ; XXX, y, x + dbw BANK(GymStatues),GymStatues + db $0f,$06,$04 ; XXX, y, x + dbw BANK(GymStatues),GymStatues + db $FF +CinnabarGymHiddenObjects: ; 46dee (11:6dee) + db $0d,$11,$04 ; XXX, y, x + dbw BANK(GymStatues),GymStatues + db $07,$0f,$01 ; XXX, y, x + dbw Bank(Func_1eaa17), Func_1eaa17 + db $01,$0a,$12 ; XXX, y, x + dbw Bank(Func_1eaa17), Func_1eaa17 + db $07,$09,$13 ; XXX, y, x + dbw Bank(Func_1eaa17), Func_1eaa17 + db $0d,$09,$14 ; XXX, y, x + dbw Bank(Func_1eaa17), Func_1eaa17 + db $0d,$01,$05 ; XXX, y, x + dbw Bank(Func_1eaa17), Func_1eaa17 + db $07,$01,$16 ; XXX, y, x + dbw Bank(Func_1eaa17), Func_1eaa17 + db $FF +CinnabarPokecenterHiddenObjects: ; 46e19 (11:6e19) + db $04,$00,$04 ; XXX, y, x + dbw Bank(Func_6245d), Func_6245d + db $03,$0d,$04 ; XXX, y, x + dbw Bank(Func_62516), Func_62516 + db $FF +SaffronGymHiddenObjects: ; 46e26 (11:6e26) + db $0f,$09,$04 ; XXX, y, x + dbw BANK(GymStatues),GymStatues + db $FF +MtMoonPokecenterHiddenObjects: ; 46e2d (11:6e2d) + db $04,$00,$08 ; XXX, y, x + dbw Bank(Func_6245d), Func_6245d + db $03,$0d,$04 ; XXX, y, x + dbw Bank(Func_62516), Func_62516 + db $FF +RockTunnelPokecenterHiddenObjects: ; 46e3a (11:6e3a) + db $04,$00,$08 ; XXX, y, x + dbw Bank(Func_6245d), Func_6245d + db $03,$0d,$04 ; XXX, y, x + dbw Bank(Func_62516), Func_62516 + db $FF +ViridianForestHiddenObjects: ; 46e47 (11:6e47) + db $12,$01,POTION + dbw BANK(HiddenItems),HiddenItems + db $2a,$10,ANTIDOTE + dbw BANK(HiddenItems),HiddenItems + db $FF +MtMoon3HiddenObjects: ; 46e54 (11:6e54) + db $0c,$12,MOON_STONE + dbw BANK(HiddenItems),HiddenItems + db $09,$21,ETHER + dbw BANK(HiddenItems),HiddenItems + db $FF +IndigoPlateauHiddenObjects: ; 46e61 (11:6e61) + db $0d,$08,$ff ; XXX, y, x + dbw Bank(Func_52a2f), Func_52a2f + db $0d,$0b,$00 ; XXX, y, x + dbw Bank(Func_52a2f), Func_52a2f + db $FF +Route25HiddenObjects: ; 46e6e (11:6e6e) + db $03,$26,ETHER + dbw BANK(HiddenItems),HiddenItems + db $01,$0a,ELIXER + dbw BANK(HiddenItems),HiddenItems + db $FF +Route9HiddenObjects: ; 46e7b (11:6e7b) + db $07,$0e,ETHER + dbw BANK(HiddenItems),HiddenItems + db $FF +SSAnne6HiddenObjects: ; 46e82 (11:6e82) + db $05,$0d,$00 ; XXX, y, x + dbw Bank(Func_5ddef), Func_5ddef + db $07,$0d,$00 ; XXX, y, x + dbw Bank(Func_5ddef), Func_5ddef + db $09,$0d,GREAT_BALL + dbw BANK(HiddenItems),HiddenItems + db $FF +SSAnne10HiddenObjects: ; 46e95 (11:6e95) + db $01,$03,HYPER_POTION + dbw BANK(HiddenItems),HiddenItems + db $FF +Route10HiddenObjects: ; 46e9c (11:6e9c) + db $11,$09,SUPER_POTION + dbw BANK(HiddenItems),HiddenItems + db $35,$10,MAX_ETHER + dbw BANK(HiddenItems),HiddenItems + db $FF +RocketHideout1HiddenObjects: ; 46ea9 (11:6ea9) + db $0f,$15,PP_UP + dbw BANK(HiddenItems),HiddenItems + db $FF +RocketHideout3HiddenObjects: ; 46eb0 (11:6eb0) + db $11,$1b,NUGGET + dbw BANK(HiddenItems),HiddenItems + db $FF +RocketHideout4HiddenObjects: ; 46eb7 (11:6eb7) + db $01,$19,SUPER_POTION + dbw BANK(HiddenItems),HiddenItems + db $FF +SaffronPokecenterHiddenObjects: ; 46ebe (11:6ebe) + db $04,$00,$04 ; XXX, y, x + dbw Bank(Func_6245d), Func_6245d + db $03,$0d,$04 ; XXX, y, x + dbw Bank(Func_62516), Func_62516 + db $FF +PokemonTower5HiddenObjects: ; 46ecb (11:6ecb) + db $0c,$04,ELIXER + dbw BANK(HiddenItems),HiddenItems + db $FF +Route13HiddenObjects: ; 46ed2 (11:6ed2) + db $0e,$01,PP_UP + dbw BANK(HiddenItems),HiddenItems + db $0d,$10,CALCIUM + dbw BANK(HiddenItems),HiddenItems + db $FF +SafariZoneEntranceHiddenObjects: ; 46edf (11:6edf) + db $01,$0a,NUGGET + dbw BANK(HiddenItems),HiddenItems + db $FF +SafariZoneWestHiddenObjects: ; 46ee6 (11:6ee6) + db $05,$06,REVIVE + dbw BANK(HiddenItems),HiddenItems + db $FF +SilphCo5FHiddenObjects: ; 46eed (11:6eed) + db $03,$0c,ELIXER + dbw BANK(HiddenItems),HiddenItems + db $FF +SilphCo9FHiddenObjects: ; 46ef4 (11:6ef4) + db $0f,$02,MAX_POTION + dbw BANK(HiddenItems),HiddenItems + db $FF +CopycatsHouse2FHiddenObjects: ; 46efb (11:6efb) + db $01,$01,NUGGET + dbw BANK(HiddenItems),HiddenItems + db $FF +UnknownDungeon1HiddenObjects: ; 46f02 (11:6f02) + db $0b,$0e,RARE_CANDY + dbw BANK(HiddenItems),HiddenItems + db $FF +UnknownDungeon3HiddenObjects: ; 46f09 (11:6f09) + db $03,$1b,ULTRA_BALL + dbw BANK(HiddenItems),HiddenItems + db $FF +PowerPlantHiddenObjects: ; 46f10 (11:6f10) + db $10,$11,MAX_ELIXER + dbw BANK(HiddenItems),HiddenItems + db $01,$0c,PP_UP + dbw BANK(HiddenItems),HiddenItems + db $FF +SeafoamIslands3HiddenObjects: ; 46f1d (11:6f1d) + db $0f,$0f,NUGGET + dbw BANK(HiddenItems),HiddenItems + db $FF +SeafoamIslands5HiddenObjects: ; 46f24 (11:6f24) + db $11,$19,ULTRA_BALL + dbw BANK(HiddenItems),HiddenItems + db $FF +Mansion1HiddenObjects: ; 46f2b (11:6f2b) + db $10,$08,MOON_STONE + dbw BANK(HiddenItems),HiddenItems + db $05,$02,$04 ; XXX, y, x + dbw BANK(Func_44316),Func_44316 + db $FF +Mansion2HiddenObjects: ; 46f38 (11:6f38) + db $0b,$02,$04 ; XXX, y, x + dbw Bank(Func_52037), Func_52037 + db $FF +Mansion3HiddenObjects: ; 46f3f (11:6f3f) + db $09,$01,MAX_REVIVE + dbw BANK(HiddenItems),HiddenItems + db $05,$0a,$04 ; XXX, y, x + dbw Bank(Func_5227a), Func_5227a + db $FF +Mansion4HiddenObjects: ; 46f4c (11:6f4c) + db $09,$01,RARE_CANDY + dbw BANK(HiddenItems),HiddenItems + db $03,$14,$04 ; XXX, y, x + dbw Bank(Func_52420), Func_52420 + db $19,$12,$04 ; XXX, y, x + dbw Bank(Func_52420), Func_52420 + db $FF +Route23HiddenObjects: ; 46f5f (11:6f5f) + db $2c,$09,FULL_RESTORE + dbw BANK(HiddenItems),HiddenItems + db $46,$13,ULTRA_BALL + dbw BANK(HiddenItems),HiddenItems + db $5a,$08,MAX_ETHER + dbw BANK(HiddenItems),HiddenItems + db $FF +VictoryRoad2HiddenObjects: ; 46f72 (11:6f72) + db $02,$05,ULTRA_BALL + dbw BANK(HiddenItems),HiddenItems + db $07,$1a,FULL_RESTORE + dbw BANK(HiddenItems),HiddenItems + db $FF +Unused6FHiddenObjects: ; 46f7f (11:6f7f) + db $0b,$0e,MAX_ELIXER + dbw BANK(HiddenItems),HiddenItems + db $FF +BillsHouseHiddenObjects: ; 46f86 (11:6f86) + db $04,$01,$04 ; XXX, y, x + dbw Bank(Func_1eb6e), Func_1eb6e + db $FF +ViridianCityHiddenObjects: ; 46f8d (11:6f8d) + db $04,$0e,POTION + dbw BANK(HiddenItems),HiddenItems + db $FF +SafariZoneRestHouse2HiddenObjects: ; 46f94 (11:6f94) + db $04,$00,$08 ; XXX, y, x + dbw Bank(Func_6245d), Func_6245d + db $03,$0d,$04 ; XXX, y, x + dbw Bank(Func_62516), Func_62516 + db $FF +SafariZoneRestHouse3HiddenObjects: ; 46fa1 (11:6fa1) + db $04,$00,$08 ; XXX, y, x + dbw Bank(Func_6245d), Func_6245d + db $03,$0d,$04 ; XXX, y, x + dbw Bank(Func_62516), Func_62516 + db $FF +SafariZoneRestHouse4HiddenObjects: ; 46fae (11:6fae) + db $04,$00,$08 ; XXX, y, x + dbw Bank(Func_6245d), Func_6245d + db $03,$0d,$04 ; XXX, y, x + dbw Bank(Func_62516), Func_62516 + db $FF +UnusedB9HiddenObjects: ; 46fbb (11:6fbb) + db $02,$01,$04 ; XXX, y, x + dbw Bank(Func_5db8f), Func_5db8f + db $FF +LavenderHouse1HiddenObjects: ; 46fc2 (11:6fc2) + db $01,$00,$00 ; XXX, y, x + dbw Bank(Func_1eb60), Func_1eb60 + db $01,$01,$00 ; XXX, y, x + dbw Bank(Func_1eb60), Func_1eb60 + db $01,$07,$00 ; XXX, y, x + dbw Bank(Func_1eb60), Func_1eb60 + db $FF +CeladonMansion5HiddenObjects: ; 46fd5 (11:6fd5) + db $00,$03,$34 ; XXX, y, x + dbw Bank(Func_5dc1a), Func_5dc1a + db $00,$04,$34 ; XXX, y, x + dbw Bank(Func_5dc1a), Func_5dc1a + db $04,$03,$35 ; XXX, y, x + dbw Bank(Func_52996), Func_52996 + db $FF +FightingDojoHiddenObjects: ; 46fe8 (11:6fe8) + db $09,$03,$04 ; XXX, y, x + dbw Bank(Func_52a22), Func_52a22 + db $09,$06,$04 ; XXX, y, x + dbw Bank(Func_52a22), Func_52a22 + db $00,$04,$04 ; XXX, y, x + dbw Bank(Func_52a08), Func_52a08 + db $00,$05,$04 ; XXX, y, x + dbw Bank(Func_52a15), Func_52a15 + db $FF +IndigoPlateauLobbyHiddenObjects: ; 47001 (11:7001) + db $07,$0f,$04 ; XXX, y, x + dbw Bank(Func_62516), Func_62516 + db $FF +CinnabarLab4HiddenObjects: ; 47008 (11:7008) + db $04,$00,$04 ; XXX, y, x + dbw Bank(Func_62516), Func_62516 + db $04,$02,$04 ; XXX, y, x + dbw Bank(Func_62516), Func_62516 + db $FF +BikeShopHiddenObjects: ; 47015 (11:7015) + db $00,$01,$d0 ; XXX, y, x + dbw Bank(Func_1e94b), Func_1e94b + db $01,$02,$d0 ; XXX, y, x + dbw Bank(Func_1e94b), Func_1e94b + db $02,$01,$d0 ; XXX, y, x + dbw Bank(Func_1e94b), Func_1e94b + db $02,$03,$d0 ; XXX, y, x + dbw Bank(Func_1e94b), Func_1e94b + db $04,$00,$d0 ; XXX, y, x + dbw Bank(Func_1e94b), Func_1e94b + db $05,$01,$d0 ; XXX, y, x + dbw Bank(Func_1e94b), Func_1e94b + db $FF +Route11HiddenObjects: ; 4703a (11:703a) + db $05,$30,ESCAPE_ROPE + dbw BANK(HiddenItems),HiddenItems + db $FF +Route12HiddenObjects: ; 47041 (11:7041) + db $3f,$02,HYPER_POTION + dbw BANK(HiddenItems),HiddenItems + db $FF +SilphCo11FHiddenObjects: ; 47048 (11:7048) + db $0c,$0a,$04 ; XXX, y, x + dbw Bank(Func_62516), Func_62516 + db $FF +Route17HiddenObjects: ; 4704f (11:704f) + db $0e,$0f,RARE_CANDY + dbw BANK(HiddenItems),HiddenItems + db $2d,$08,FULL_RESTORE + dbw BANK(HiddenItems),HiddenItems + db $48,$11,PP_UP + dbw BANK(HiddenItems),HiddenItems + db $5b,$04,MAX_REVIVE + dbw BANK(HiddenItems),HiddenItems + db $79,$08,MAX_ELIXER + dbw BANK(HiddenItems),HiddenItems + db $FF +UndergroundPathNsHiddenObjects: ; 4706e (11:706e) + db $04,$03,FULL_RESTORE + dbw BANK(HiddenItems),HiddenItems + db $22,$04,X_SPECIAL + dbw BANK(HiddenItems),HiddenItems + db $FF +UndergroundPathWeHiddenObjects: ; 4707b (11:707b) + db $02,$0c,NUGGET + dbw BANK(HiddenItems),HiddenItems + db $05,$15,ELIXER + dbw BANK(HiddenItems),HiddenItems + db $FF +CeladonCityHiddenObjects: ; 47088 (11:7088) + db $0f,$30,PP_UP + dbw BANK(HiddenItems),HiddenItems + db $FF +SeafoamIslands4HiddenObjects: ; 4708f (11:708f) + db $10,$09,MAX_ELIXER + dbw BANK(HiddenItems),HiddenItems + db $FF +VermilionCityHiddenObjects: ; 47096 (11:7096) + db $0b,$0e,MAX_ETHER + dbw BANK(HiddenItems),HiddenItems + db $FF +CeruleanCityHiddenObjects: ; 4709d (11:709d) + db $08,$0f,RARE_CANDY + dbw BANK(HiddenItems),HiddenItems + db $FF +Route4HiddenObjects: ; 470a4 (11:70a4) + db $03,$28,GREAT_BALL + dbw BANK(HiddenItems),HiddenItems + db $FF \ No newline at end of file diff --git a/data/item_prices.asm b/data/item_prices.asm new file mode 100755 index 00000000..f64bd11f --- /dev/null +++ b/data/item_prices.asm @@ -0,0 +1,98 @@ +ItemPrices: ; 4608 (1:4608) + db $00,$00,$00 + db $00,$12,$00 + db $00,$06,$00 + db $00,$02,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$10,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$01,$00 + db $00,$02,$50 + db $00,$02,$50 + db $00,$02,$00 + db $00,$02,$00 + db $00,$30,$00 + db $00,$25,$00 + db $00,$15,$00 + db $00,$07,$00 + db $00,$03,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$05,$50 + db $00,$03,$50 + db $00,$00,$00 + db $00,$21,$00 + db $00,$21,$00 + db $00,$21,$00 + db $00,$98,$00 + db $00,$98,$00 + db $00,$98,$00 + db $00,$98,$00 + db $00,$98,$00 + db $00,$48,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$09,$50 + db $00,$21,$00 + db $00,$00,$00 + db $01,$00,$00 + db $00,$98,$00 + db $00,$10,$00 + db $00,$06,$00 + db $00,$15,$00 + db $00,$40,$00 + db $00,$07,$00 + db $00,$05,$00 + db $00,$07,$00 + db $00,$06,$50 + db $00,$00,$10 + db $00,$02,$00 + db $00,$03,$00 + db $00,$03,$50 + db $00,$00,$00 + db $00,$00,$00 + db $00,$05,$00 + db $00,$05,$50 + db $00,$03,$50 + db $00,$03,$50 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 + db $00,$00,$00 \ No newline at end of file diff --git a/data/map_songs.asm b/data/map_songs.asm new file mode 100755 index 00000000..582b7242 --- /dev/null +++ b/data/map_songs.asm @@ -0,0 +1,249 @@ +MapSongBanks: ; c04d (3:404d) + db MUSIC_PALLET_TOWN, BANK(Music_PalletTown) ;PALLET_TOWN + db MUSIC_CITIES1, BANK(Music_Cities1) ; VIRIDIAN_CITY + db MUSIC_CITIES1, BANK(Music_Cities1) ; PEWTER_CITY + db MUSIC_CITIES2, BANK(Music_Cities2) ; CERULEAN_CITY + db MUSIC_LAVENDER, BANK(Music_Lavender) ; LAVENDER_TOWN + db MUSIC_VERMILION, BANK(Music_Vermilion) ; VERMILION_CITY + db MUSIC_CELADON, BANK(Music_Celadon) ; CELADON_CITY + db MUSIC_CITIES2, BANK(Music_Cities2) ; FUCHSIA_CITY + db MUSIC_CINNABAR, BANK(Music_Cinnabar) ; CINNABAR_ISLAND + db MUSIC_INDIGO_PLATEAU, BANK(Music_IndigoPlateau) ; INDIGO_PLATEAU + db MUSIC_CITIES1, BANK(Music_Cities1) ; SAFFRON_CITY + db MUSIC_CITIES1, BANK(Music_Cities1) ; unused + db MUSIC_ROUTES1, BANK(Music_Routes1) ; ROUTE_1 + db MUSIC_ROUTES1, BANK(Music_Routes1) ; ROUTE_2 + db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_3 + db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_4 + db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_5 + db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_6 + db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_7 + db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_8 + db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_9 + db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_10 + db MUSIC_ROUTES4, BANK(Music_Routes4) ; ROUTE_11 + db MUSIC_ROUTES4, BANK(Music_Routes4) ; ROUTE_12 + db MUSIC_ROUTES4, BANK(Music_Routes4) ; ROUTE_13 + db MUSIC_ROUTES4, BANK(Music_Routes4) ; ROUTE_14 + db MUSIC_ROUTES4, BANK(Music_Routes4) ; ROUTE_15 + db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_16 + db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_17 + db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_18 + db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_19 + db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_20 + db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_21 + db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_22 + db MUSIC_INDIGO_PLATEAU, BANK(Music_IndigoPlateau) ; ROUTE_23 + db MUSIC_ROUTES2, BANK(Music_Routes2) ; ROUTE_24 + db MUSIC_ROUTES2, BANK(Music_Routes2) ; ROUTE_25 + db MUSIC_PALLET_TOWN, BANK(Music_PalletTown) ; RedsHouse1F + db MUSIC_PALLET_TOWN, BANK(Music_PalletTown) ; RedsHouse2F + db MUSIC_PALLET_TOWN, BANK(Music_PalletTown) ; BluesHouse + db MUSIC_OAKS_LAB, BANK(Music_OaksLab) ; OaksLab + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; ViridianPokecenter + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; ViridianMart + db MUSIC_CITIES1, BANK(Music_Cities1) ; School + db MUSIC_CITIES1, BANK(Music_Cities1) ; ViridianHouse + db MUSIC_GYM, BANK(Music_Gym) ; ViridianGym + db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; DiglettsCaveRoute2 + db MUSIC_CITIES1, BANK(Music_Cities1) ; ViridianForestExit + db MUSIC_CITIES1, BANK(Music_Cities1) ; Route2House + db MUSIC_CITIES1, BANK(Music_Cities1) ; Route2Gate + db MUSIC_CITIES1, BANK(Music_Cities1) ; ViridianForestEntrance + db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; ViridianForest + db MUSIC_CITIES1, BANK(Music_Cities1) ; Museum1F + db MUSIC_CITIES1, BANK(Music_Cities1) ; Museum2F + db MUSIC_GYM, BANK(Music_Gym) ; PewterGym + db MUSIC_CITIES1, BANK(Music_Cities1) ; PewterHouse1 + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; PewterMart + db MUSIC_CITIES1, BANK(Music_Cities1) ; PewterHouse2 + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; PewterPokecenter + db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; MtMoon1 + db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; MtMoon2 + db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; MtMoon3 + db MUSIC_CITIES2, BANK(Music_Cities2) ; CeruleanHouseTrashed + db MUSIC_CITIES2, BANK(Music_Cities2) ; CeruleanHouse1 + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeruleanPokecenter + db MUSIC_GYM, BANK(Music_Gym) ; CeruleanGym + db MUSIC_CITIES2, BANK(Music_Cities2) ; BikeShop + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeruleanMart + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; MtMoonPokecenter + db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; CeruleanHouseTrashed + db MUSIC_CITIES1, BANK(Music_Cities1) ; Route5Gate + db MUSIC_CITIES1, BANK(Music_Cities1) ; UndergroundTunnelEntranceRoute5 + db MUSIC_CITIES1, BANK(Music_Cities1) ; DayCareM + db MUSIC_CITIES1, BANK(Music_Cities1) ; Route6Gate + db MUSIC_CITIES1, BANK(Music_Cities1) ; UndergroundTunnelEntranceRoute6 + db MUSIC_VERMILION, BANK(Music_Vermilion) ; FREEZE + db MUSIC_CITIES1, BANK(Music_Cities1) ; Route7Gate + db MUSIC_CITIES1, BANK(Music_Cities1) ; UndergroundPathEntranceRoute7 + db MUSIC_CELADON, BANK(Music_Celadon) ;FREEZE + db MUSIC_CITIES1, BANK(Music_Cities1) ; Route8Gate + db MUSIC_CITIES1, BANK(Music_Cities1) ; UndergroundPathEntranceRoute8 + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; RockTunnelPokecenter + db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; RockTunnel1 + db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; PowerPlant + db MUSIC_VERMILION, BANK(Music_Vermilion) ; Route11Gate + db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; DiglettsCaveEntranceRoute11 + db MUSIC_VERMILION, BANK(Music_Vermilion) ; Route11GateUpstairs + db MUSIC_CITIES1, BANK(Music_Cities1) ; Route12Gate + db MUSIC_CITIES2, BANK(Music_Cities2) ; BillsHouse + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; VermilionPokecenter + db MUSIC_VERMILION, BANK(Music_Vermilion) ; FanClub + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; VermilionMart + db MUSIC_GYM, BANK(Music_Gym) ; VermilionGym + db MUSIC_VERMILION, BANK(Music_Vermilion) ; VermilionHouse1 + db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; VermilionDock + db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne1 + db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne2 + db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne3 + db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne4 + db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne5 + db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne6 + db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne7 + db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne8 + db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne9 + db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne10 + db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ;unused + db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ;unused + db MUSIC_SS_ANNE, BANK(Music_SSAnne) ;unused + db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; VictoryRoad1 + db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ;unused + db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ;unused + db MUSIC_SILPH_CO, BANK(Music_SilphCo) ;unused + db MUSIC_SILPH_CO, BANK(Music_SilphCo) ;unused + db MUSIC_INDIGO_PLATEAU, BANK(Music_IndigoPlateau) ; Lance + db MUSIC_SS_ANNE, BANK(Music_SSAnne) ;unused + db MUSIC_SS_ANNE, BANK(Music_SSAnne) ;unused + db MUSIC_SS_ANNE, BANK(Music_SSAnne) ;unused + db MUSIC_SS_ANNE, BANK(Music_SSAnne) ;unused + db MUSIC_PALLET_TOWN, BANK(Music_PalletTown) ; HallofFameRoom + db MUSIC_ROUTES1, BANK(Music_Routes1) ; UndergroundPathNS + db MUSIC_INDIGO_PLATEAU, BANK(Music_IndigoPlateau) ; Gary + db MUSIC_ROUTES1, BANK(Music_Routes1) ; UndergroundPathWE + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonMart1 + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonMart2 + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonMart3 + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonMart4 + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonMartRoof + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonMartElevator + db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonMansion1 + db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonMansion2 + db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonMansion3 + db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonMansion4 + db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonMansion5 + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonPokecenter + db MUSIC_GYM, BANK(Music_Gym) ; CeladonGym + db MUSIC_GAME_CORNER, BANK(Music_GameCorner) ; CeladonGameCorner + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonMart5 + db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonPrizeRoom + db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonDiner + db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonHouse + db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonHotel + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; LavenderPokecenter + db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; PokemonTower1 + db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; PokemonTower2 + db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; PokemonTower3 + db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; PokemonTower4 + db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; PokemonTower5 + db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; PokemonTower6 + db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; PokemonTower7 + db MUSIC_LAVENDER, BANK(Music_Lavender) ; LavenderHouse1 + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; LavenderMart + db MUSIC_LAVENDER, BANK(Music_Lavender) ; LavenderHouse2 + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; FuchsiaMart + db MUSIC_CITIES2, BANK(Music_Cities2) ; FuchsiaHouse1 + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; FuchsiaPokecenter + db MUSIC_CITIES2, BANK(Music_Cities2) ; FuchsiaHouse2 + db MUSIC_CITIES2, BANK(Music_Cities2) ; SafariZoneEntrance + db MUSIC_GYM, BANK(Music_Gym) ; FuchsiaGym + db MUSIC_CITIES2, BANK(Music_Cities2) ; FuchsiaMeetingRoom + db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; SeafoamIslands2 + db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; SeafoamIslands3 + db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; SeafoamIslands4 + db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; SeafoamIslands5 + db MUSIC_CITIES2, BANK(Music_Cities2) ; VermilionHouse2 + db MUSIC_CITIES2, BANK(Music_Cities2) ; FuchsiaHouse3 + db MUSIC_CINNABAR_MANSION, BANK(Music_CinnabarMansion) ; Mansion1 + db MUSIC_GYM, BANK(Music_Gym) ; CinnabarGym + db MUSIC_CINNABAR, BANK(Music_Cinnabar) ; Lab1 + db MUSIC_CINNABAR, BANK(Music_Cinnabar) ; Lab2 + db MUSIC_CINNABAR, BANK(Music_Cinnabar) ; Lab3 + db MUSIC_CINNABAR, BANK(Music_Cinnabar) ; Lab4 + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CinnabarPokecenter + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CinnabarMart + db MUSIC_CINNABAR, BANK(Music_Cinnabar) + db MUSIC_INDIGO_PLATEAU, BANK(Music_IndigoPlateau) ; IndigoPlateauLobby + db MUSIC_CITIES1, BANK(Music_Cities1) ; CopycatsHouse1F + db MUSIC_CITIES1, BANK(Music_Cities1) ; CopycatsHouse2F + db MUSIC_CITIES1, BANK(Music_Cities1) ; FightingDojo + db MUSIC_GYM, BANK(Music_Gym) ; SaffronGym + db MUSIC_CITIES1, BANK(Music_Cities1) ; SaffronHouse1 + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; SaffronMart + db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo1 + db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; SaffronPokecenter + db MUSIC_CITIES1, BANK(Music_Cities1) ; SaffronHouse2 + db MUSIC_CITIES1, BANK(Music_Cities1) ; Route15Gate + db MUSIC_CITIES1, BANK(Music_Cities1) ; Route15GateUpstairs + db MUSIC_CITIES1, BANK(Music_Cities1) ; Route16Gate + db MUSIC_CITIES1, BANK(Music_Cities1) ; Route16GateUpstairs + db MUSIC_CELADON, BANK(Music_Celadon) ; Route16House + db MUSIC_CELADON, BANK(Music_Celadon) ; Route12House + db MUSIC_CITIES1, BANK(Music_Cities1) ; Route18Gate + db MUSIC_CITIES1, BANK(Music_Cities1) ; Route18GateUpstairs + db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; SeafoamIslands1 + db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; Route22Gate + db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; VictoryRoad2 + db MUSIC_CITIES1, BANK(Music_Cities1) ; Route12GateUpstairs + db MUSIC_VERMILION, BANK(Music_Vermilion) ; VermilionHouse3 + db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; DiglettsCave + db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; VictoryRoad3 + db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; RocketHideout1 + db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; RocketHideout2 + db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; RocketHideout3 + db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; RocketHideout4 + db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; RocketHideoutElevator + db MUSIC_DUNGEON1, BANK(Music_Dungeon1) + db MUSIC_DUNGEON1, BANK(Music_Dungeon1) + db MUSIC_DUNGEON1, BANK(Music_Dungeon1) + db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo2 + db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo3 + db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo4 + db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo5 + db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo6 + db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo7 + db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo8 + db MUSIC_CINNABAR_MANSION, BANK(Music_CinnabarMansion) ; Mansion2 + db MUSIC_CINNABAR_MANSION, BANK(Music_CinnabarMansion) ; Mansion3 + db MUSIC_CINNABAR_MANSION, BANK(Music_CinnabarMansion) ; Mansion4 + db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneEast + db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneNorth + db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneWest + db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneCenter + db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneRestHouse1 + db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneSecretHouse + db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneRestHouse2 + db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneRestHouse3 + db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneRestHouse4 + db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; UnknownDungeon2 + db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; UnknownDungeon3 + db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; UnknownDungeon1 + db MUSIC_CITIES2, BANK(Music_Cities2) ; NameRater + db MUSIC_CITIES1, BANK(Music_Cities1) ; CeruleanHouse2 + db MUSIC_CINNABAR, BANK(Music_Cinnabar) + db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; RockTunnel2 + db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo9 + db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo10 + db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo11 + db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCoElevator + db MUSIC_SILPH_CO, BANK(Music_SilphCo) + db MUSIC_SILPH_CO, BANK(Music_SilphCo) + db MUSIC_CELADON, BANK(Music_Celadon) ; BattleCenterM + db MUSIC_CELADON, BANK(Music_Celadon) ; TradeCenterM + db MUSIC_SILPH_CO, BANK(Music_SilphCo) + db MUSIC_SILPH_CO, BANK(Music_SilphCo) + db MUSIC_SILPH_CO, BANK(Music_SilphCo) + db MUSIC_SILPH_CO, BANK(Music_SilphCo) + db MUSIC_GYM, BANK(Music_Gym) ; Lorelei + db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; Bruno + db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; Agatha \ No newline at end of file diff --git a/data/mart_inventories.asm b/data/mart_inventories.asm new file mode 100755 index 00000000..18165f49 --- /dev/null +++ b/data/mart_inventories.asm @@ -0,0 +1,75 @@ +; mart inventories are below +; they are texts +; first byte $FE, next byte # of items, last byte $FF + +; Viridian +ViridianMartText6:: ; 2442 (0:2442) + db $FE,4,POKE_BALL,ANTIDOTE,PARLYZ_HEAL,BURN_HEAL,$FF + +; Pewter +PewterMartText1:: ; 2449 (0:2449) + db $FE,7,POKE_BALL,POTION,ESCAPE_ROPE,ANTIDOTE,BURN_HEAL,AWAKENING + db PARLYZ_HEAL,$FF + +; Cerulean +CeruleanMartText1:: ; 2453 (0:2453) + db $FE,7,POKE_BALL,POTION,REPEL,ANTIDOTE,BURN_HEAL,AWAKENING + db PARLYZ_HEAL,$FF + +; Bike shop + db $FE,1,BICYCLE,$FF + +; Vermilion +VermilionMartText1:: ; 2461 (0:2461) + db $FE,6,POKE_BALL,SUPER_POTION,ICE_HEAL,AWAKENING,PARLYZ_HEAL + db REPEL,$FF + +; Lavender +LavenderMartText1:: ; 246a (0:246a) + db $FE,9,GREAT_BALL,SUPER_POTION,REVIVE,ESCAPE_ROPE,SUPER_REPEL + db ANTIDOTE,BURN_HEAL,ICE_HEAL,PARLYZ_HEAL,$FF + +; Celadon Dept. Store 2F (1) +CeladonMart2Text1:: ; 2476 (0:2476) + db $FE,9,GREAT_BALL,SUPER_POTION,REVIVE,SUPER_REPEL,ANTIDOTE + db BURN_HEAL,ICE_HEAL,AWAKENING,PARLYZ_HEAL,$FF + +; Celadon Dept. Store 2F (2) +CeladonMart2Text2:: ; 2482 (0:2482) + db $FE,9,TM_32,TM_33,TM_02,TM_07,TM_37,TM_01,TM_05,TM_09,TM_17,$FF + +; Celadon Dept. Store 4F +CeladonMart4Text1:: ; 248e (0:248e) + db $FE,5,POKE_DOLL,FIRE_STONE,THUNDER_STONE,WATER_STONE,LEAF_STONE,$FF + +; Celadon Dept. Store 5F (1) +CeladonMart5Text3:: ; 2496 (0:2496) + db $FE,7,X_ACCURACY,GUARD_SPEC_,DIRE_HIT,X_ATTACK,X_DEFEND,X_SPEED + db X_SPECIAL,$FF + +; Celadon Dept. Store 5F (2) +CeladonMart5Text4:: ; 24a0 (0:24a0) + db $FE,5,HP_UP,PROTEIN,IRON,CARBOS,CALCIUM,$FF + +; Fuchsia +FuchsiaMartText1:: ; 24a8 (0:24a8) + db $FE,6,ULTRA_BALL,GREAT_BALL,SUPER_POTION,REVIVE,FULL_HEAL + db SUPER_REPEL,$FF + +; unused? 24b1 + db $FE,5,GREAT_BALL,HYPER_POTION,SUPER_POTION,FULL_HEAL,REVIVE,$FF + +; Cinnabar +CinnabarMartText1:: ; 24b9 (0:24b9) + db $FE,7,ULTRA_BALL,GREAT_BALL,HYPER_POTION,MAX_REPEL,ESCAPE_ROPE + db FULL_HEAL,REVIVE,$FF + +; Saffron +SaffronMartText1:: ; 24c3 (0:24c3) + db $FE,6,GREAT_BALL,HYPER_POTION,MAX_REPEL,ESCAPE_ROPE,FULL_HEAL + db REVIVE,$FF + +; Indigo +IndigoPlateauLobbyText4:: ; 24cc (0:24cc) + db $FE,7,ULTRA_BALL,GREAT_BALL,FULL_RESTORE,MAX_POTION,FULL_HEAL + db REVIVE,MAX_REPEL,$FF \ No newline at end of file diff --git a/data/mew_base_stats.asm b/data/mew_base_stats.asm new file mode 100755 index 00000000..6232acc3 --- /dev/null +++ b/data/mew_base_stats.asm @@ -0,0 +1,35 @@ +MewBaseStats: ; 425b (1:425b) + db DEX_MEW ; pokedex id + db 100 ; base hp + db 100 ; base attack + db 100 ; base defense + db 100 ; base speed + db 100 ; base special + + db PSYCHIC ; species type 1 + db PSYCHIC ; species type 2 + + db 45 ; catch rate + db 64 ; base exp yield + db $55 ; sprite dimensions + + dw MewPicFront + dw MewPicBack + + ; attacks known at lvl 0 + db POUND + db 0 + db 0 + db 0 + + db 3 ; growth rate + + ; include learnset directly + db %11111111 + db %11111111 + db %11111111 + db %11111111 + db %11111111 + db %11111111 + db %11111111 + db %11111111 ; usually spacing \ No newline at end of file diff --git a/data/mon_palettes.asm b/data/mon_palettes.asm new file mode 100755 index 00000000..4aaa5793 --- /dev/null +++ b/data/mon_palettes.asm @@ -0,0 +1,153 @@ +MonsterPalettes: ; 725c8 (1c:65c8) + db PAL_MEWMON ; MISSINGNO + db PAL_GREENMON ; BULBASAUR + db PAL_GREENMON ; IVYSAUR + db PAL_GREENMON ; VENUSAUR + db PAL_REDMON ; CHARMANDER + db PAL_REDMON ; CHARMELEON + db PAL_REDMON ; CHARIZARD + db PAL_CYANMON ; SQUIRTLE + db PAL_CYANMON ; WARTORTLE + db PAL_CYANMON ; BLASTOISE + db PAL_GREENMON ; CATERPIE + db PAL_GREENMON ; METAPOD + db PAL_CYANMON ; BUTTERFREE + db PAL_YELLOWMON ; WEEDLE + db PAL_YELLOWMON ; KAKUNA + db PAL_YELLOWMON ; BEEDRILL + db PAL_BROWNMON ; PIDGEY + db PAL_BROWNMON ; PIDGEOTTO + db PAL_BROWNMON ; PIDGEOT + db PAL_GREYMON ; RATTATA + db PAL_GREYMON ; RATICATE + db PAL_BROWNMON ; SPEAROW + db PAL_BROWNMON ; FEAROW + db PAL_PURPLEMON ; EKANS + db PAL_PURPLEMON ; ARBOK + db PAL_YELLOWMON ; PIKACHU + db PAL_YELLOWMON ; RAICHU + db PAL_BROWNMON ; SANDSHREW + db PAL_BROWNMON ; SANDSLASH + db PAL_BLUEMON ; NIDORAN_F + db PAL_BLUEMON ; NIDORINA + db PAL_BLUEMON ; NIDOQUEEN + db PAL_PURPLEMON ; NIDORAN_M + db PAL_PURPLEMON ; NIDORINO + db PAL_PURPLEMON ; NIDOKING + db PAL_PINKMON ; CLEFAIRY + db PAL_PINKMON ; CLEFABLE + db PAL_REDMON ; VULPIX + db PAL_YELLOWMON ; NINETALES + db PAL_PINKMON ; JIGGLYPUFF + db PAL_PINKMON ; WIGGLYTUFF + db PAL_BLUEMON ; ZUBAT + db PAL_BLUEMON ; GOLBAT + db PAL_GREENMON ; ODDISH + db PAL_REDMON ; GLOOM + db PAL_REDMON ; VILEPLUME + db PAL_REDMON ; PARAS + db PAL_REDMON ; PARASECT + db PAL_PURPLEMON ; VENONAT + db PAL_PURPLEMON ; VENOMOTH + db PAL_BROWNMON ; DIGLETT + db PAL_BROWNMON ; DUGTRIO + db PAL_YELLOWMON ; MEOWTH + db PAL_YELLOWMON ; PERSIAN + db PAL_YELLOWMON ; PSYDUCK + db PAL_CYANMON ; GOLDUCK + db PAL_BROWNMON ; MANKEY + db PAL_BROWNMON ; PRIMEAPE + db PAL_BROWNMON ; GROWLITHE + db PAL_REDMON ; ARCANINE + db PAL_BLUEMON ; POLIWAG + db PAL_BLUEMON ; POLIWHIRL + db PAL_BLUEMON ; POLIWRATH + db PAL_YELLOWMON ; ABRA + db PAL_YELLOWMON ; KADABRA + db PAL_YELLOWMON ; ALAKAZAM + db PAL_GREYMON ; MACHOP + db PAL_GREYMON ; MACHOKE + db PAL_GREYMON ; MACHAMP + db PAL_GREENMON ; BELLSPROUT + db PAL_GREENMON ; WEEPINBELL + db PAL_GREENMON ; VICTREEBEL + db PAL_CYANMON ; TENTACOOL + db PAL_CYANMON ; TENTACRUEL + db PAL_GREYMON ; GEODUDE + db PAL_GREYMON ; GRAVELER + db PAL_GREYMON ; GOLEM + db PAL_REDMON ; PONYTA + db PAL_REDMON ; RAPIDASH + db PAL_PINKMON ; SLOWPOKE + db PAL_PINKMON ; SLOWBRO + db PAL_GREYMON ; MAGNEMITE + db PAL_GREYMON ; MAGNETON + db PAL_BROWNMON ; FARFETCH_D + db PAL_BROWNMON ; DODUO + db PAL_BROWNMON ; DODRIO + db PAL_BLUEMON ; SEEL + db PAL_BLUEMON ; DEWGONG + db PAL_PURPLEMON ; GRIMER + db PAL_PURPLEMON ; MUK + db PAL_GREYMON ; SHELLDER + db PAL_GREYMON ; CLOYSTER + db PAL_PURPLEMON ; GASTLY + db PAL_PURPLEMON ; HAUNTER + db PAL_PURPLEMON ; GENGAR + db PAL_GREYMON ; ONIX + db PAL_YELLOWMON ; DROWZEE + db PAL_YELLOWMON ; HYPNO + db PAL_REDMON ; KRABBY + db PAL_REDMON ; KINGLER + db PAL_YELLOWMON ; VOLTORB + db PAL_YELLOWMON ; ELECTRODE + db PAL_PINKMON ; EXEGGCUTE + db PAL_GREENMON ; EXEGGUTOR + db PAL_GREYMON ; CUBONE + db PAL_GREYMON ; MAROWAK + db PAL_BROWNMON ; HITMONLEE + db PAL_BROWNMON ; HITMONCHAN + db PAL_PINKMON ; LICKITUNG + db PAL_PURPLEMON ; KOFFING + db PAL_PURPLEMON ; WEEZING + db PAL_GREYMON ; RHYHORN + db PAL_GREYMON ; RHYDON + db PAL_PINKMON ; CHANSEY + db PAL_BLUEMON ; TANGELA + db PAL_BROWNMON ; KANGASKHAN + db PAL_CYANMON ; HORSEA + db PAL_CYANMON ; SEADRA + db PAL_REDMON ; GOLDEEN + db PAL_REDMON ; SEAKING + db PAL_REDMON ; STARYU + db PAL_GREYMON ; STARMIE + db PAL_PINKMON ; MR_MIME + db PAL_GREENMON ; SCYTHER + db PAL_MEWMON ; JYNX + db PAL_YELLOWMON ; ELECTABUZZ + db PAL_REDMON ; MAGMAR + db PAL_BROWNMON ; PINSIR + db PAL_GREYMON ; TAUROS + db PAL_REDMON ; MAGIKARP + db PAL_BLUEMON ; GYARADOS + db PAL_CYANMON ; LAPRAS + db PAL_GREYMON ; DITTO + db PAL_GREYMON ; EEVEE + db PAL_CYANMON ; VAPOREON + db PAL_YELLOWMON ; JOLTEON + db PAL_REDMON ; FLAREON + db PAL_GREYMON ; PORYGON + db PAL_BLUEMON ; OMANYTE + db PAL_BLUEMON ; OMASTAR + db PAL_BROWNMON ; KABUTO + db PAL_BROWNMON ; KABUTOPS + db PAL_GREYMON ; AERODACTYL + db PAL_PINKMON ; SNORLAX + db PAL_BLUEMON ; ARTICUNO + db PAL_YELLOWMON ; ZAPDOS + db PAL_REDMON ; MOLTRES + db PAL_GREYMON ; DRATINI + db PAL_BLUEMON ; DRAGONAIR + db PAL_BROWNMON ; DRAGONITE + db PAL_MEWMON ; MEWTWO + db PAL_MEWMON ; MEW \ No newline at end of file diff --git a/data/mon_party_sprites.asm b/data/mon_party_sprites.asm new file mode 100755 index 00000000..6e8efcb4 --- /dev/null +++ b/data/mon_party_sprites.asm @@ -0,0 +1,77 @@ +MonOverworldData: ; 7190d (1c:590d) + dn SPRITE_GRASS, SPRITE_GRASS ;Bulbasaur/Ivysaur + dn SPRITE_GRASS, SPRITE_MON ;Venusaur/Charmander + dn SPRITE_MON, SPRITE_MON ;Charmeleon/Charizard + dn SPRITE_WATER, SPRITE_WATER ;Squirtle/Wartortle + dn SPRITE_WATER, SPRITE_BUG ;Blastoise/Caterpie + dn SPRITE_BUG, SPRITE_BUG ;Metapod/Butterfree + dn SPRITE_BUG, SPRITE_BUG ;Weedle/Kakuna + dn SPRITE_BUG, SPRITE_BIRD_M ;Beedrill/Pidgey + dn SPRITE_BIRD_M, SPRITE_BIRD_M ;Pidgeotto/Pidgeot + dn SPRITE_QUADRUPED, SPRITE_QUADRUPED ;Rattata/Raticate + dn SPRITE_BIRD_M, SPRITE_BIRD_M ;Spearow/Fearow + dn SPRITE_SNAKE, SPRITE_SNAKE ;Ekans/Arbok + dn SPRITE_FAIRY, SPRITE_FAIRY ;Pikachu/Raichu + dn SPRITE_MON, SPRITE_MON ;Sandshrew/Sandslash + dn SPRITE_MON, SPRITE_MON ;Nidoran?/Nidorina + dn SPRITE_MON, SPRITE_MON ;Nidoqueen/Nidoran? + dn SPRITE_MON, SPRITE_MON ;Nidorino/Nidoking + dn SPRITE_FAIRY, SPRITE_FAIRY ;Clefairy/Clefable + dn SPRITE_QUADRUPED, SPRITE_QUADRUPED ;Vulpix/Ninetales + dn SPRITE_FAIRY, SPRITE_FAIRY ;Jigglypuff/Wigglytuff + dn SPRITE_MON, SPRITE_MON ;Zubat/Golbat + dn SPRITE_GRASS, SPRITE_GRASS ;Oddish/Gloom + dn SPRITE_GRASS, SPRITE_BUG ;Vileplume/Paras + dn SPRITE_BUG, SPRITE_BUG ;Parasect/Venonat + dn SPRITE_BUG, SPRITE_MON ;Venomoth/Diglett + dn SPRITE_MON, SPRITE_MON ;Dugtrio/Meowth + dn SPRITE_MON, SPRITE_MON ;Persian/Psyduck + dn SPRITE_MON, SPRITE_MON ;Golduck/Mankey + dn SPRITE_MON, SPRITE_QUADRUPED ;Primeape/Growlithe + dn SPRITE_QUADRUPED, SPRITE_MON ;Arcanine/Poliwag + dn SPRITE_MON, SPRITE_MON ;Poliwhirl/Poliwrath + dn SPRITE_MON, SPRITE_MON ;Abra/Kadabra + dn SPRITE_MON, SPRITE_MON ;Alakazam/Machop + dn SPRITE_MON, SPRITE_MON ;Machoke/Machamp + dn SPRITE_GRASS, SPRITE_GRASS ;Bellsprout/Weepinbell + dn SPRITE_GRASS, SPRITE_WATER ;Victreebel/Tentacool + dn SPRITE_WATER, SPRITE_MON ;Tentacruel/Geodude + dn SPRITE_MON, SPRITE_MON ;Graveler/Golem + dn SPRITE_QUADRUPED, SPRITE_QUADRUPED ;Ponyta/Rapidash + dn SPRITE_QUADRUPED, SPRITE_MON ;Slowpoke/Slowbro + dn SPRITE_BALL_M, SPRITE_BALL_M ;Magnemite/Magneton + dn SPRITE_BIRD_M, SPRITE_BIRD_M ;Farfetch'd/Doduo + dn SPRITE_BIRD_M, SPRITE_WATER ;Dodrio/Seel + dn SPRITE_WATER, SPRITE_MON ;Dewgong/Grimer + dn SPRITE_MON, SPRITE_HELIX ;Muk/Shellder + dn SPRITE_HELIX, SPRITE_MON ;Cloyster/Gastly + dn SPRITE_MON, SPRITE_MON ;Haunter/Gengar + dn SPRITE_SNAKE, SPRITE_MON ;Onix/Drowzee + dn SPRITE_MON, SPRITE_WATER ;Hypno/Krabby + dn SPRITE_WATER, SPRITE_BALL_M ;Kingler/Voltorb + dn SPRITE_BALL_M, SPRITE_GRASS ;Electrode/Exeggcute + dn SPRITE_GRASS, SPRITE_MON ;Exeggutor/Cubone + dn SPRITE_MON, SPRITE_MON ;Marowak/Hitmonlee + dn SPRITE_MON, SPRITE_MON ;Hitmonchan/Lickitung + dn SPRITE_MON, SPRITE_MON ;Koffing/Weezing + dn SPRITE_QUADRUPED, SPRITE_MON ;Rhyhorn/Rhydon + dn SPRITE_FAIRY, SPRITE_GRASS ;Chansey/Tangela + dn SPRITE_MON, SPRITE_WATER ;Kangaskhan/Horsea + dn SPRITE_WATER, SPRITE_WATER ;Seadra/Goldeen + dn SPRITE_WATER, SPRITE_HELIX ;Seaking/Staryu + dn SPRITE_HELIX, SPRITE_MON ;Starmie/Mr.Mime + dn SPRITE_BUG, SPRITE_MON ;Scyther/Jynx + dn SPRITE_MON, SPRITE_MON ;Electabuzz/Magmar + dn SPRITE_BUG, SPRITE_QUADRUPED ;Pinsir/Tauros + dn SPRITE_WATER, SPRITE_SNAKE ;Magikarp/Gyarados + dn SPRITE_WATER, SPRITE_MON ;Lapras/Ditto + dn SPRITE_QUADRUPED, SPRITE_QUADRUPED ;Eevee/Vaporeon + dn SPRITE_QUADRUPED, SPRITE_QUADRUPED ;Jolteon/Flareon + dn SPRITE_MON, SPRITE_HELIX ;Porygon/Omanyte + dn SPRITE_HELIX, SPRITE_HELIX ;Omastar/Kabuto + dn SPRITE_HELIX, SPRITE_BIRD_M ;Kabutops/Aerodactyl + dn SPRITE_MON, SPRITE_BIRD_M ;Snorlax/Articuno + dn SPRITE_BIRD_M, SPRITE_BIRD_M ;Zapdos/Moltres + dn SPRITE_SNAKE, SPRITE_SNAKE ;Dratini/Dragonair + dn SPRITE_SNAKE, SPRITE_MON ;Dragonite/Mewtwo + dn SPRITE_MON, 0 ;Mew/Padding \ No newline at end of file diff --git a/data/moves.asm b/data/moves.asm new file mode 100755 index 00000000..53b6915a --- /dev/null +++ b/data/moves.asm @@ -0,0 +1,168 @@ +Moves: ; 38000 (e:4000) +; characteristics of each move +; animation, effect, power, type, accuracy, PP + db POUND ,NO_ADDITIONAL_EFFECT ,$28,NORMAL, $FF,35 + db KARATE_CHOP ,NO_ADDITIONAL_EFFECT ,$32,NORMAL, $FF,25 + db DOUBLESLAP ,TWO_TO_FIVE_ATTACKS_EFFECT,$0F,NORMAL, $D8,10 + db COMET_PUNCH ,TWO_TO_FIVE_ATTACKS_EFFECT,$12,NORMAL, $D8,15 + db MEGA_PUNCH ,NO_ADDITIONAL_EFFECT ,$50,NORMAL, $D8,20 + db PAY_DAY ,PAY_DAY_EFFECT ,$28,NORMAL, $FF,20 + db FIRE_PUNCH ,BURN_SIDE_EFFECT1 ,$4B,FIRE, $FF,15 + db ICE_PUNCH ,FREEZE_SIDE_EFFECT ,$4B,ICE, $FF,15 + db THUNDERPUNCH,PARALYZE_SIDE_EFFECT1 ,$4B,ELECTRIC,$FF,15 + db SCRATCH ,NO_ADDITIONAL_EFFECT ,$28,NORMAL, $FF,35 + db VICEGRIP ,NO_ADDITIONAL_EFFECT ,$37,NORMAL, $FF,30 + db GUILLOTINE ,OHKO_EFFECT ,$01,NORMAL, $4C,5 + db RAZOR_WIND ,CHARGE_EFFECT ,$50,NORMAL, $BF,10 + db SWORDS_DANCE,ATTACK_UP2_EFFECT ,$00,NORMAL, $FF,30 + db CUT ,NO_ADDITIONAL_EFFECT ,$32,NORMAL, $F2,30 + db GUST ,NO_ADDITIONAL_EFFECT ,$28,NORMAL, $FF,35 + db WING_ATTACK ,NO_ADDITIONAL_EFFECT ,$23,FLYING, $FF,35 + db WHIRLWIND ,SWITCH_AND_TELEPORT_EFFECT,$00,NORMAL, $D8,20 + db FLY ,FLY_EFFECT ,$46,FLYING, $F2,15 + db BIND ,TRAPPING_EFFECT ,$0F,NORMAL, $BF,20 + db SLAM ,NO_ADDITIONAL_EFFECT ,$50,NORMAL, $BF,20 + db VINE_WHIP ,NO_ADDITIONAL_EFFECT ,$23,GRASS, $FF,10 + db STOMP ,FLINCH_SIDE_EFFECT2 ,$41,NORMAL, $FF,20 + db DOUBLE_KICK ,ATTACK_TWICE_EFFECT ,$1E,FIGHTING,$FF,30 + db MEGA_KICK ,NO_ADDITIONAL_EFFECT ,$78,NORMAL, $BF,5 + db JUMP_KICK ,JUMP_KICK_EFFECT ,$46,FIGHTING,$F2,25 + db ROLLING_KICK,FLINCH_SIDE_EFFECT2 ,$3C,FIGHTING,$D8,15 + db SAND_ATTACK ,ACCURACY_DOWN1_EFFECT ,$00,NORMAL, $FF,15 + db HEADBUTT ,FLINCH_SIDE_EFFECT2 ,$46,NORMAL, $FF,15 + db HORN_ATTACK ,NO_ADDITIONAL_EFFECT ,$41,NORMAL, $FF,25 + db FURY_ATTACK ,TWO_TO_FIVE_ATTACKS_EFFECT,$0F,NORMAL, $D8,20 + db HORN_DRILL ,OHKO_EFFECT ,$01,NORMAL, $4C,5 + db TACKLE ,NO_ADDITIONAL_EFFECT ,$23,NORMAL, $F2,35 + db BODY_SLAM ,PARALYZE_SIDE_EFFECT2 ,$55,NORMAL, $FF,15 + db WRAP ,TRAPPING_EFFECT ,$0F,NORMAL, $D8,20 + db TAKE_DOWN ,RECOIL_EFFECT ,$5A,NORMAL, $D8,20 + db THRASH ,THRASH_PETAL_DANCE_EFFECT ,$5A,NORMAL, $FF,20 + db DOUBLE_EDGE ,RECOIL_EFFECT ,$64,NORMAL, $FF,15 + db TAIL_WHIP ,DEFENSE_DOWN1_EFFECT ,$00,NORMAL, $FF,30 + db POISON_STING,POISON_SIDE_EFFECT1 ,$0F,POISON, $FF,35 + db TWINEEDLE ,TWINEEDLE_EFFECT ,$19,BUG, $FF,20 + db PIN_MISSILE ,TWO_TO_FIVE_ATTACKS_EFFECT,$0E,BUG, $D8,20 + db LEER ,DEFENSE_DOWN1_EFFECT ,$00,NORMAL, $FF,30 + db BITE ,FLINCH_SIDE_EFFECT1 ,$3C,NORMAL, $FF,25 + db GROWL ,ATTACK_DOWN1_EFFECT ,$00,NORMAL, $FF,40 + db ROAR ,SWITCH_AND_TELEPORT_EFFECT,$00,NORMAL, $FF,20 + db SING ,SLEEP_EFFECT ,$00,NORMAL, $8C,15 + db SUPERSONIC ,CONFUSION_EFFECT ,$00,NORMAL, $8C,20 + db SONICBOOM ,SPECIAL_DAMAGE_EFFECT ,$01,NORMAL, $E5,20 + db DISABLE ,DISABLE_EFFECT ,$00,NORMAL, $8C,20 + db ACID ,DEFENSE_DOWN_SIDE_EFFECT ,$28,POISON, $FF,30 + db EMBER ,BURN_SIDE_EFFECT1 ,$28,FIRE, $FF,25 + db FLAMETHROWER,BURN_SIDE_EFFECT1 ,$5F,FIRE, $FF,15 + db MIST ,MIST_EFFECT ,$00,ICE, $FF,30 + db WATER_GUN ,NO_ADDITIONAL_EFFECT ,$28,WATER, $FF,25 + db HYDRO_PUMP ,NO_ADDITIONAL_EFFECT ,$78,WATER, $CC,5 + db SURF ,NO_ADDITIONAL_EFFECT ,$5F,WATER, $FF,15 + db ICE_BEAM ,FREEZE_SIDE_EFFECT ,$5F,ICE, $FF,10 + db BLIZZARD ,FREEZE_SIDE_EFFECT ,$78,ICE, $E5,5 + db PSYBEAM ,CONFUSION_SIDE_EFFECT ,$41,PSYCHIC, $FF,20 + db BUBBLEBEAM ,SPEED_DOWN_SIDE_EFFECT ,$41,WATER, $FF,20 + db AURORA_BEAM ,ATTACK_DOWN_SIDE_EFFECT ,$41,ICE, $FF,20 + db HYPER_BEAM ,HYPER_BEAM_EFFECT ,$96,NORMAL, $E5,5 + db PECK ,NO_ADDITIONAL_EFFECT ,$23,FLYING, $FF,35 + db DRILL_PECK ,NO_ADDITIONAL_EFFECT ,$50,FLYING, $FF,20 + db SUBMISSION ,RECOIL_EFFECT ,$50,FIGHTING,$CC,25 + db LOW_KICK ,FLINCH_SIDE_EFFECT2 ,$32,FIGHTING,$E5,20 + db COUNTER ,NO_ADDITIONAL_EFFECT ,$01,FIGHTING,$FF,20 + db SEISMIC_TOSS,SPECIAL_DAMAGE_EFFECT ,$01,FIGHTING,$FF,20 + db STRENGTH ,NO_ADDITIONAL_EFFECT ,$50,NORMAL, $FF,15 + db ABSORB ,DRAIN_HP_EFFECT ,$14,GRASS, $FF,20 + db MEGA_DRAIN ,DRAIN_HP_EFFECT ,$28,GRASS, $FF,10 + db LEECH_SEED ,LEECH_SEED_EFFECT ,$00,GRASS, $E5,10 + db GROWTH ,SPECIAL_UP1_EFFECT ,$00,NORMAL, $FF,40 + db RAZOR_LEAF ,NO_ADDITIONAL_EFFECT ,$37,GRASS, $F2,25 + db SOLARBEAM ,CHARGE_EFFECT ,$78,GRASS, $FF,10 + db POISONPOWDER,POISON_EFFECT ,$00,POISON, $BF,35 + db STUN_SPORE ,PARALYZE_EFFECT ,$00,GRASS, $BF,30 + db SLEEP_POWDER,SLEEP_EFFECT ,$00,GRASS, $BF,15 + db PETAL_DANCE ,THRASH_PETAL_DANCE_EFFECT ,$46,GRASS, $FF,20 + db STRING_SHOT ,SPEED_DOWN1_EFFECT ,$00,BUG, $F2,40 + db DRAGON_RAGE ,SPECIAL_DAMAGE_EFFECT ,$01,DRAGON, $FF,10 + db FIRE_SPIN ,TRAPPING_EFFECT ,$0F,FIRE, $B2,15 + db THUNDERSHOCK,PARALYZE_SIDE_EFFECT1 ,$28,ELECTRIC,$FF,30 + db THUNDERBOLT ,PARALYZE_SIDE_EFFECT1 ,$5F,ELECTRIC,$FF,15 + db THUNDER_WAVE,PARALYZE_EFFECT ,$00,ELECTRIC,$FF,20 + db THUNDER ,PARALYZE_SIDE_EFFECT1 ,$78,ELECTRIC,$B2,10 + db ROCK_THROW ,NO_ADDITIONAL_EFFECT ,$32,ROCK, $A5,15 + db EARTHQUAKE ,NO_ADDITIONAL_EFFECT ,$64,GROUND, $FF,10 + db FISSURE ,OHKO_EFFECT ,$01,GROUND, $4C,5 + db DIG ,CHARGE_EFFECT ,$64,GROUND, $FF,10 + db TOXIC ,POISON_EFFECT ,$00,POISON, $D8,10 + db CONFUSION ,CONFUSION_SIDE_EFFECT ,$32,PSYCHIC, $FF,25 + db PSYCHIC_M ,SPECIAL_DOWN_SIDE_EFFECT ,$5A,PSYCHIC, $FF,10 + db HYPNOSIS ,SLEEP_EFFECT ,$00,PSYCHIC, $99,20 + db MEDITATE ,ATTACK_UP1_EFFECT ,$00,PSYCHIC, $FF,40 + db AGILITY ,SPEED_UP2_EFFECT ,$00,PSYCHIC, $FF,30 + db QUICK_ATTACK,NO_ADDITIONAL_EFFECT ,$28,NORMAL, $FF,30 + db RAGE ,RAGE_EFFECT ,$14,NORMAL, $FF,20 + db TELEPORT ,SWITCH_AND_TELEPORT_EFFECT,$00,PSYCHIC, $FF,20 + db NIGHT_SHADE ,SPECIAL_DAMAGE_EFFECT ,$00,GHOST, $FF,15 + db MIMIC ,MIMIC_EFFECT ,$00,NORMAL, $FF,10 + db SCREECH ,DEFENSE_DOWN2_EFFECT ,$00,NORMAL, $D8,40 + db DOUBLE_TEAM ,EVASION_UP1_EFFECT ,$00,NORMAL, $FF,15 + db RECOVER ,HEAL_EFFECT ,$00,NORMAL, $FF,20 + db HARDEN ,DEFENSE_UP1_EFFECT ,$00,NORMAL, $FF,30 + db MINIMIZE ,EVASION_UP1_EFFECT ,$00,NORMAL, $FF,20 + db SMOKESCREEN ,ACCURACY_DOWN1_EFFECT ,$00,NORMAL, $FF,20 + db CONFUSE_RAY ,CONFUSION_EFFECT ,$00,GHOST, $FF,10 + db WITHDRAW ,DEFENSE_UP1_EFFECT ,$00,WATER, $FF,40 + db DEFENSE_CURL,DEFENSE_UP1_EFFECT ,$00,NORMAL, $FF,40 + db BARRIER ,DEFENSE_UP2_EFFECT ,$00,PSYCHIC, $FF,30 + db LIGHT_SCREEN,LIGHT_SCREEN_EFFECT ,$00,PSYCHIC, $FF,30 + db HAZE ,HAZE_EFFECT ,$00,ICE, $FF,30 + db REFLECT ,REFLECT_EFFECT ,$00,PSYCHIC, $FF,20 + db FOCUS_ENERGY,FOCUS_ENERGY_EFFECT ,$00,NORMAL, $FF,30 + db BIDE ,BIDE_EFFECT ,$00,NORMAL, $FF,10 + db METRONOME ,METRONOME_EFFECT ,$00,NORMAL, $FF,10 + db MIRROR_MOVE ,MIRROR_MOVE_EFFECT ,$00,FLYING, $FF,20 + db SELFDESTRUCT,EXPLODE_EFFECT ,$82,NORMAL, $FF,5 + db EGG_BOMB ,NO_ADDITIONAL_EFFECT ,$64,NORMAL, $BF,10 + db LICK ,PARALYZE_SIDE_EFFECT2 ,$14,GHOST, $FF,30 + db SMOG ,POISON_SIDE_EFFECT2 ,$14,POISON, $B2,20 + db SLUDGE ,POISON_SIDE_EFFECT2 ,$41,POISON, $FF,20 + db BONE_CLUB ,FLINCH_SIDE_EFFECT1 ,$41,GROUND, $D8,20 + db FIRE_BLAST ,BURN_SIDE_EFFECT2 ,$78,FIRE, $D8,5 + db WATERFALL ,NO_ADDITIONAL_EFFECT ,$50,WATER, $FF,15 + db CLAMP ,TRAPPING_EFFECT ,$23,WATER, $BF,10 + db SWIFT ,SWIFT_EFFECT ,$3C,NORMAL, $FF,20 + db SKULL_BASH ,CHARGE_EFFECT ,$64,NORMAL, $FF,15 + db SPIKE_CANNON,TWO_TO_FIVE_ATTACKS_EFFECT,$14,NORMAL, $FF,15 + db CONSTRICT ,SPEED_DOWN_SIDE_EFFECT ,$0A,NORMAL, $FF,35 + db AMNESIA ,SPECIAL_UP2_EFFECT ,$00,PSYCHIC, $FF,20 + db KINESIS ,ACCURACY_DOWN1_EFFECT ,$00,PSYCHIC, $CC,15 + db SOFTBOILED ,HEAL_EFFECT ,$00,NORMAL, $FF,10 + db HI_JUMP_KICK,JUMP_KICK_EFFECT ,$55,FIGHTING,$E5,20 + db GLARE ,PARALYZE_EFFECT ,$00,NORMAL, $BF,30 + db DREAM_EATER ,DREAM_EATER_EFFECT ,$64,PSYCHIC, $FF,15 + db POISON_GAS ,POISON_EFFECT ,$00,POISON, $8C,40 + db BARRAGE ,TWO_TO_FIVE_ATTACKS_EFFECT,$0F,NORMAL, $D8,20 + db LEECH_LIFE ,DRAIN_HP_EFFECT ,$14,BUG, $FF,15 + db LOVELY_KISS ,SLEEP_EFFECT ,$00,NORMAL, $BF,10 + db SKY_ATTACK ,CHARGE_EFFECT ,$8C,FLYING, $E5,5 + db TRANSFORM ,TRANSFORM_EFFECT ,$00,NORMAL, $FF,10 + db BUBBLE ,SPEED_DOWN_SIDE_EFFECT ,$14,WATER, $FF,30 + db DIZZY_PUNCH ,NO_ADDITIONAL_EFFECT ,$46,NORMAL, $FF,10 + db SPORE ,SLEEP_EFFECT ,$00,GRASS, $FF,15 + db FLASH ,ACCURACY_DOWN1_EFFECT ,$00,NORMAL, $B2,20 + db PSYWAVE ,SPECIAL_DAMAGE_EFFECT ,$01,PSYCHIC, $CC,15 + db SPLASH ,SPLASH_EFFECT ,$00,NORMAL, $FF,40 + db ACID_ARMOR ,DEFENSE_UP2_EFFECT ,$00,POISON, $FF,40 + db CRABHAMMER ,NO_ADDITIONAL_EFFECT ,$5A,WATER, $D8,10 + db EXPLOSION ,EXPLODE_EFFECT ,$AA,NORMAL, $FF,5 + db FURY_SWIPES ,TWO_TO_FIVE_ATTACKS_EFFECT,$12,NORMAL, $CC,15 + db BONEMERANG ,ATTACK_TWICE_EFFECT ,$32,GROUND, $E5,10 + db REST ,HEAL_EFFECT ,$00,PSYCHIC, $FF,10 + db ROCK_SLIDE ,NO_ADDITIONAL_EFFECT ,$4B,ROCK, $E5,10 + db HYPER_FANG ,FLINCH_SIDE_EFFECT1 ,$50,NORMAL, $E5,15 + db SHARPEN ,ATTACK_UP1_EFFECT ,$00,NORMAL, $FF,30 + db CONVERSION ,CONVERSION_EFFECT ,$00,NORMAL, $FF,30 + db TRI_ATTACK ,NO_ADDITIONAL_EFFECT ,$50,NORMAL, $FF,10 + db SUPER_FANG ,SUPER_FANG_EFFECT ,$01,NORMAL, $E5,10 + db SLASH ,NO_ADDITIONAL_EFFECT ,$46,NORMAL, $FF,20 + db SUBSTITUTE ,SUBSTITUTE_EFFECT ,$00,NORMAL, $FF,10 + db STRUGGLE ,RECOIL_EFFECT ,$32,NORMAL, $FF,10 \ No newline at end of file diff --git a/data/pokedex_entries.asm b/data/pokedex_entries.asm new file mode 100755 index 00000000..54b83099 --- /dev/null +++ b/data/pokedex_entries.asm @@ -0,0 +1,1259 @@ +PokedexEntryPointers: ; 4047e (10:447e) + dw RhydonDexEntry + dw KangaskhanDexEntry + dw NidoranMDexEntry + dw ClefairyDexEntry + dw SpearowDexEntry + dw VoltorbDexEntry + dw NidokingDexEntry + dw SlowbroDexEntry + dw IvysaurDexEntry + dw ExeggutorDexEntry + dw LickitungDexEntry + dw ExeggcuteDexEntry + dw GrimerDexEntry + dw GengarDexEntry + dw NidoranFDexEntry + dw NidoqueenDexEntry + dw CuboneDexEntry + dw RhyhornDexEntry + dw LaprasDexEntry + dw ArcanineDexEntry + dw MewDexEntry + dw GyaradosDexEntry + dw ShellderDexEntry + dw TentacoolDexEntry + dw GastlyDexEntry + dw ScytherDexEntry + dw StaryuDexEntry + dw BlastoiseDexEntry + dw PinsirDexEntry + dw TangelaDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw GrowlitheDexEntry + dw OnixDexEntry + dw FearowDexEntry + dw PidgeyDexEntry + dw SlowpokeDexEntry + dw KadabraDexEntry + dw GravelerDexEntry + dw ChanseyDexEntry + dw MachokeDexEntry + dw MrMimeDexEntry + dw HitmonleeDexEntry + dw HitmonchanDexEntry + dw ArbokDexEntry + dw ParasectDexEntry + dw PsyduckDexEntry + dw DrowzeeDexEntry + dw GolemDexEntry + dw MissingNoDexEntry + dw MagmarDexEntry + dw MissingNoDexEntry + dw ElectabuzzDexEntry + dw MagnetonDexEntry + dw KoffingDexEntry + dw MissingNoDexEntry + dw MankeyDexEntry + dw SeelDexEntry + dw DiglettDexEntry + dw TaurosDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw FarfetchdDexEntry + dw VenonatDexEntry + dw DragoniteDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw DoduoDexEntry + dw PoliwagDexEntry + dw JynxDexEntry + dw MoltresDexEntry + dw ArticunoDexEntry + dw ZapdosDexEntry + dw DittoDexEntry + dw MeowthDexEntry + dw KrabbyDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw VulpixDexEntry + dw NinetalesDexEntry + dw PikachuDexEntry + dw RaichuDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw DratiniDexEntry + dw DragonairDexEntry + dw KabutoDexEntry + dw KabutopsDexEntry + dw HorseaDexEntry + dw SeadraDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw SandshrewDexEntry + dw SandslashDexEntry + dw OmanyteDexEntry + dw OmastarDexEntry + dw JigglypuffDexEntry + dw WigglytuffDexEntry + dw EeveeDexEntry + dw FlareonDexEntry + dw JolteonDexEntry + dw VaporeonDexEntry + dw MachopDexEntry + dw ZubatDexEntry + dw EkansDexEntry + dw ParasDexEntry + dw PoliwhirlDexEntry + dw PoliwrathDexEntry + dw WeedleDexEntry + dw KakunaDexEntry + dw BeedrillDexEntry + dw MissingNoDexEntry + dw DodrioDexEntry + dw PrimeapeDexEntry + dw DugtrioDexEntry + dw VenomothDexEntry + dw DewgongDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw CaterpieDexEntry + dw MetapodDexEntry + dw ButterfreeDexEntry + dw MachampDexEntry + dw MissingNoDexEntry + dw GolduckDexEntry + dw HypnoDexEntry + dw GolbatDexEntry + dw MewtwoDexEntry + dw SnorlaxDexEntry + dw MagikarpDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw MukDexEntry + dw MissingNoDexEntry + dw KinglerDexEntry + dw CloysterDexEntry + dw MissingNoDexEntry + dw ElectrodeDexEntry + dw ClefableDexEntry + dw WeezingDexEntry + dw PersianDexEntry + dw MarowakDexEntry + dw MissingNoDexEntry + dw HaunterDexEntry + dw AbraDexEntry + dw AlakazamDexEntry + dw PidgeottoDexEntry + dw PidgeotDexEntry + dw StarmieDexEntry + dw BulbasaurDexEntry + dw VenusaurDexEntry + dw TentacruelDexEntry + dw MissingNoDexEntry + dw GoldeenDexEntry + dw SeakingDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw PonytaDexEntry + dw RapidashDexEntry + dw RattataDexEntry + dw RaticateDexEntry + dw NidorinoDexEntry + dw NidorinaDexEntry + dw GeodudeDexEntry + dw PorygonDexEntry + dw AerodactylDexEntry + dw MissingNoDexEntry + dw MagnemiteDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw CharmanderDexEntry + dw SquirtleDexEntry + dw CharmeleonDexEntry + dw WartortleDexEntry + dw CharizardDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw MissingNoDexEntry + dw OddishDexEntry + dw GloomDexEntry + dw VileplumeDexEntry + dw BellsproutDexEntry + dw WeepinbellDexEntry + dw VictreebelDexEntry + +; string: species name +; height in feet, inches +; weight in pounds +; text entry + +RhydonDexEntry: ; 405fa (10:45fa) + db "DRILL@" + db 6,3 + dw 2650 + TX_FAR _RhydonDexEntry + db "@" + +KangaskhanDexEntry: ; 40609 (10:4609) + db "PARENT@" + db 7,3 + dw 1760 + TX_FAR _KangaskhanDexEntry + db "@" + +NidoranMDexEntry: ; 40619 (10:4619) + db "POISON PIN@" + db 1,8 + dw 200 + TX_FAR _NidoranMDexEntry + db "@" + +ClefairyDexEntry: ; 4062d (10:462d) + db "FAIRY@" + db 2,0 + dw 170 + TX_FAR _ClefairyDexEntry + db "@" + +SpearowDexEntry: ; 4063c (10:463c) + db "TINY BIRD@" + db 1,0 + dw 40 + TX_FAR _SpearowDexEntry + db "@" + +VoltorbDexEntry: ; 4064f (10:464f) + db "BALL@" + db 1,8 + dw 230 + TX_FAR _VoltorbDexEntry + db "@" + +NidokingDexEntry: ; 4065d (10:465d) + db "DRILL@" + db 4,7 + dw 1370 + TX_FAR _NidokingDexEntry + db "@" + +SlowbroDexEntry: ; 4066c (10:466c) + db "HERMITCRAB@" + db 5,3 + dw 1730 + TX_FAR _SlowbroDexEntry + db "@" + +IvysaurDexEntry: ; 40680 (10:4680) + db "SEED@" + db 3,3 + dw 290 + TX_FAR _IvysaurDexEntry + db "@" + +ExeggutorDexEntry: ; 4068e (10:468e) + db "COCONUT@" + db 6,7 + dw 2650 + TX_FAR _ExeggutorDexEntry + db "@" + +LickitungDexEntry: ; 4069f (10:469f) + db "LICKING@" + db 3,11 + dw 1440 + TX_FAR _LickitungDexEntry + db "@" + +ExeggcuteDexEntry: ; 406b0 (10:46b0) + db "EGG@" + db 1,4 + dw 60 + TX_FAR _ExeggcuteDexEntry + db "@" + +GrimerDexEntry: ; 406bd (10:46bd) + db "SLUDGE@" + db 2,11 + dw 660 + TX_FAR _GrimerDexEntry + db "@" + +GengarDexEntry: ; 406cd (10:46cd) + db "SHADOW@" + db 4,11 + dw 890 + TX_FAR _GengarDexEntry + db "@" + +NidoranFDexEntry: ; 406dd (10:46dd) + db "POISON PIN@" + db 1,4 + dw 150 + TX_FAR _NidoranFDexEntry + db "@" + +NidoqueenDexEntry: ; 406f1 (10:46f1) + db "DRILL@" + db 4,3 + dw 1320 + TX_FAR _NidoqueenDexEntry + db "@" + +CuboneDexEntry: ; 40700 (10:4700) + db "LONELY@" + db 1,4 + dw 140 + TX_FAR _CuboneDexEntry + db "@" + +RhyhornDexEntry: ; 40710 (10:4710) + db "SPIKES@" + db 3,3 + dw 2540 + TX_FAR _RhyhornDexEntry + db "@" + +LaprasDexEntry: ; 40720 (10:4720) + db "TRANSPORT@" + db 8,2 + dw 4850 + TX_FAR _LaprasDexEntry + db "@" + +ArcanineDexEntry: ; 40733 (10:4733) + db "LEGENDARY@" + db 6,3 + dw 3420 + TX_FAR _ArcanineDexEntry + db "@" + +MewDexEntry: ; 40746 (10:4746) + db "NEW SPECIE@" + db 1,4 + dw 90 + TX_FAR _MewDexEntry + db "@" + +GyaradosDexEntry: ; 4075a (10:475a) + db "ATROCIOUS@" + db 21,4 + dw 5180 + TX_FAR _GyaradosDexEntry + db "@" + +ShellderDexEntry: ; 4076d (10:476d) + db "BIVALVE@" + db 1,0 + dw 90 + TX_FAR _ShellderDexEntry + db "@" + +TentacoolDexEntry: ; 4077e (10:477e) + db "JELLYFISH@" + db 2,11 + dw 1000 + TX_FAR _TentacoolDexEntry + db "@" + +GastlyDexEntry: ; 40791 (10:4791) + db "GAS@" + db 4,3 + dw 2 + TX_FAR _GastlyDexEntry + db "@" + +ScytherDexEntry: ; 4079e (10:479e) + db "MANTIS@" + db 4,11 + dw 1230 + TX_FAR _ScytherDexEntry + db "@" + +StaryuDexEntry: ; 407ae (10:47ae) + db "STARSHAPE@" + db 2,7 + dw 760 + TX_FAR _StaryuDexEntry + db "@" + +BlastoiseDexEntry: ; 407c1 (10:47c1) + db "SHELLFISH@" + db 5,3 + dw 1890 + TX_FAR _BlastoiseDexEntry + db "@" + +PinsirDexEntry: ; 407d4 (10:47d4) + db "STAGBEETLE@" + db 4,11 + dw 1210 + TX_FAR _PinsirDexEntry + db "@" + +TangelaDexEntry: ; 407e8 (10:47e8) + db "VINE@" + db 3,3 + dw 770 + TX_FAR _TangelaDexEntry + db "@" + +GrowlitheDexEntry: ; 407f6 (10:47f6) + db "PUPPY@" + db 2,4 + dw 420 + TX_FAR _GrowlitheDexEntry + db "@" + +OnixDexEntry: ; 40805 (10:4805) + db "ROCK SNAKE@" + db 28,10 + dw 4630 + TX_FAR _OnixDexEntry + db "@" + +FearowDexEntry: ; 40819 (10:4819) + db "BEAK@" + db 3,11 + dw 840 + TX_FAR _FearowDexEntry + db "@" + +PidgeyDexEntry: ; 40827 (10:4827) + db "TINY BIRD@" + db 1,0 + dw 40 + TX_FAR _PidgeyDexEntry + db "@" + +SlowpokeDexEntry: ; 4083a (10:483a) + db "DOPEY@" + db 3,11 + dw 790 + TX_FAR _SlowpokeDexEntry + db "@" + +KadabraDexEntry: ; 40849 (10:4849) + db "PSI@" + db 4,3 + dw 1250 + TX_FAR _KadabraDexEntry + db "@" + +GravelerDexEntry: ; 40856 (10:4856) + db "ROCK@" + db 3,3 + dw 2320 + TX_FAR _GravelerDexEntry + db "@" + +ChanseyDexEntry: ; 40864 (10:4864) + db "EGG@" + db 3,7 + dw 760 + TX_FAR _ChanseyDexEntry + db "@" + +MachokeDexEntry: ; 40871 (10:4871) + db "SUPERPOWER@" + db 4,11 + dw 1550 + TX_FAR _MachokeDexEntry + db "@" + +MrMimeDexEntry: ; 40885 (10:4885) + db "BARRIER@" + db 4,3 + dw 1200 + TX_FAR _MrMimeDexEntry + db "@" + +HitmonleeDexEntry: ; 40896 (10:4896) + db "KICKING@" + db 4,11 + dw 1100 + TX_FAR _HitmonleeDexEntry + db "@" + +HitmonchanDexEntry: ; 408a7 (10:48a7) + db "PUNCHING@" + db 4,7 + dw 1110 + TX_FAR _HitmonchanDexEntry + db "@" + +ArbokDexEntry: ; 408b9 (10:48b9) + db "COBRA@" + db 11,6 + dw 1430 + TX_FAR _ArbokDexEntry + db "@" + +ParasectDexEntry: ; 408c8 (10:48c8) + db "MUSHROOM@" + db 3,3 + dw 650 + TX_FAR _ParasectDexEntry + db "@" + +PsyduckDexEntry: ; 408da (10:48da) + db "DUCK@" + db 2,7 + dw 430 + TX_FAR _PsyduckDexEntry + db "@" + +DrowzeeDexEntry: ; 408e8 (10:48e8) + db "HYPNOSIS@" + db 3,3 + dw 710 + TX_FAR _DrowzeeDexEntry + db "@" + +GolemDexEntry: ; 408fa (10:48fa) + db "MEGATON@" + db 4,7 + dw 6620 + TX_FAR _GolemDexEntry + db "@" + +MagmarDexEntry: ; 4090b (10:490b) + db "SPITFIRE@" + db 4,3 + dw 980 + TX_FAR _MagmarDexEntry + db "@" + +ElectabuzzDexEntry: ; 4091d (10:491d) + db "ELECTRIC@" + db 3,7 + dw 660 + TX_FAR _ElectabuzzDexEntry + db "@" + +MagnetonDexEntry: ; 4092f (10:492f) + db "MAGNET@" + db 3,3 + dw 1320 + TX_FAR _MagnetonDexEntry + db "@" + +KoffingDexEntry: ; 4093f (10:493f) + db "POISON GAS@" + db 2,0 + dw 20 + TX_FAR _KoffingDexEntry + db "@" + +MankeyDexEntry: ; 40953 (10:4953) + db "PIG MONKEY@" + db 1,8 + dw 620 + TX_FAR _MankeyDexEntry + db "@" + +SeelDexEntry: ; 40967 (10:4967) + db "SEA LION@" + db 3,7 + dw 1980 + TX_FAR _SeelDexEntry + db "@" + +DiglettDexEntry: ; 40979 (10:4979) + db "MOLE@" + db 0,8 + dw 20 + TX_FAR _DiglettDexEntry + db "@" + +TaurosDexEntry: ; 40987 (10:4987) + db "WILD BULL@" + db 4,7 + dw 1950 + TX_FAR _TaurosDexEntry + db "@" + +FarfetchdDexEntry: ; 4099a (10:499a) + db "WILD DUCK@" + db 2,7 + dw 330 + TX_FAR _FarfetchdDexEntry + db "@" + +VenonatDexEntry: ; 409ad (10:49ad) + db "INSECT@" + db 3,3 + dw 660 + TX_FAR _VenonatDexEntry + db "@" + +DragoniteDexEntry: ; 409bd (10:49bd) + db "DRAGON@" + db 7,3 + dw 4630 + TX_FAR _DragoniteDexEntry + db "@" + +DoduoDexEntry: ; 409cd (10:49cd) + db "TWIN BIRD@" + db 4,7 + dw 860 + TX_FAR _DoduoDexEntry + db "@" + +PoliwagDexEntry: ; 409e0 (10:49e0) + db "TADPOLE@" + db 2,0 + dw 270 + TX_FAR _PoliwagDexEntry + db "@" + +JynxDexEntry: ; 409f1 (10:49f1) + db "HUMANSHAPE@" + db 4,7 + dw 900 + TX_FAR _JynxDexEntry + db "@" + +MoltresDexEntry: ; 40a05 (10:4a05) + db "FLAME@" + db 6,7 + dw 1320 + TX_FAR _MoltresDexEntry + db "@" + +ArticunoDexEntry: ; 40a14 (10:4a14) + db "FREEZE@" + db 5,7 + dw 1220 + TX_FAR _ArticunoDexEntry + db "@" + +ZapdosDexEntry: ; 40a24 (10:4a24) + db "ELECTRIC@" + db 5,3 + dw 1160 + TX_FAR _ZapdosDexEntry + db "@" + +DittoDexEntry: ; 40a36 (10:4a36) + db "TRANSFORM@" + db 1,0 + dw 90 + TX_FAR _DittoDexEntry + db "@" + +MeowthDexEntry: ; 40a49 (10:4a49) + db "SCRATCHCAT@" + db 1,4 + dw 90 + TX_FAR _MeowthDexEntry + db "@" + +KrabbyDexEntry: ; 40a5d (10:4a5d) + db "RIVER CRAB@" + db 1,4 + dw 140 + TX_FAR _KrabbyDexEntry + db "@" + +VulpixDexEntry: ; 40a71 (10:4a71) + db "FOX@" + db 2,0 + dw 220 + TX_FAR _VulpixDexEntry + db "@" + +NinetalesDexEntry: ; 40a7e (10:4a7e) + db "FOX@" + db 3,7 + dw 440 + TX_FAR _NinetalesDexEntry + db "@" + +PikachuDexEntry: ; 40a8b (10:4a8b) + db "MOUSE@" + db 1,4 + dw 130 + TX_FAR _PikachuDexEntry + db "@" + +RaichuDexEntry: ; 40a9a (10:4a9a) + db "MOUSE@" + db 2,7 + dw 660 + TX_FAR _RaichuDexEntry + db "@" + +DratiniDexEntry: ; 40aa9 (10:4aa9) + db "DRAGON@" + db 5,11 + dw 70 + TX_FAR _DratiniDexEntry + db "@" + +DragonairDexEntry: ; 40ab9 (10:4ab9) + db "DRAGON@" + db 13,1 + dw 360 + TX_FAR _DragonairDexEntry + db "@" + +KabutoDexEntry: ; 40ac9 (10:4ac9) + db "SHELLFISH@" + db 1,8 + dw 250 + TX_FAR _KabutoDexEntry + db "@" + +KabutopsDexEntry: ; 40adc (10:4adc) + db "SHELLFISH@" + db 4,3 + dw 890 + TX_FAR _KabutopsDexEntry + db "@" + +HorseaDexEntry: ; 40aef (10:4aef) + db "DRAGON@" + db 1,4 + dw 180 + TX_FAR _HorseaDexEntry + db "@" + +SeadraDexEntry: ; 40aff (10:4aff) + db "DRAGON@" + db 3,11 + dw 550 + TX_FAR _SeadraDexEntry + db "@" + +SandshrewDexEntry: ; 40b0f (10:4b0f) + db "MOUSE@" + db 2,0 + dw 260 + TX_FAR _SandshrewDexEntry + db "@" + +SandslashDexEntry: ; 40b1e (10:4b1e) + db "MOUSE@" + db 3,3 + dw 650 + TX_FAR _SandslashDexEntry + db "@" + +OmanyteDexEntry: ; 40b2d (10:4b2d) + db "SPIRAL@" + db 1,4 + dw 170 + TX_FAR _OmanyteDexEntry + db "@" + +OmastarDexEntry: ; 40b3d (10:4b3d) + db "SPIRAL@" + db 3,3 + dw 770 + TX_FAR _OmastarDexEntry + db "@" + +JigglypuffDexEntry: ; 40b4d (10:4b4d) + db "BALLOON@" + db 1,8 + dw 120 + TX_FAR _JigglypuffDexEntry + db "@" + +WigglytuffDexEntry: ; 40b5e (10:4b5e) + db "BALLOON@" + db 3,3 + dw 260 + TX_FAR _WigglytuffDexEntry + db "@" + +EeveeDexEntry: ; 40b6f (10:4b6f) + db "EVOLUTION@" + db 1,0 + dw 140 + TX_FAR _EeveeDexEntry + db "@" + +FlareonDexEntry: ; 40b82 (10:4b82) + db "FLAME@" + db 2,11 + dw 550 + TX_FAR _FlareonDexEntry + db "@" + +JolteonDexEntry: ; 40b91 (10:4b91) + db "LIGHTNING@" + db 2,7 + dw 540 + TX_FAR _JolteonDexEntry + db "@" + +VaporeonDexEntry: ; 40ba4 (10:4ba4) + db "BUBBLE JET@" + db 3,3 + dw 640 + TX_FAR _VaporeonDexEntry + db "@" + +MachopDexEntry: ; 40bb8 (10:4bb8) + db "SUPERPOWER@" + db 2,7 + dw 430 + TX_FAR _MachopDexEntry + db "@" + +ZubatDexEntry: ; 40bcc (10:4bcc) + db "BAT@" + db 2,7 + dw 170 + TX_FAR _ZubatDexEntry + db "@" + +EkansDexEntry: ; 40bd9 (10:4bd9) + db "SNAKE@" + db 6,7 + dw 150 + TX_FAR _EkansDexEntry + db "@" + +ParasDexEntry: ; 40be8 (10:4be8) + db "MUSHROOM@" + db 1,0 + dw 120 + TX_FAR _ParasDexEntry + db "@" + +PoliwhirlDexEntry: ; 40bfa (10:4bfa) + db "TADPOLE@" + db 3,3 + dw 440 + TX_FAR _PoliwhirlDexEntry + db "@" + +PoliwrathDexEntry: ; 40c0b (10:4c0b) + db "TADPOLE@" + db 4,3 + dw 1190 + TX_FAR _PoliwrathDexEntry + db "@" + +WeedleDexEntry: ; 40c1c (10:4c1c) + db "HAIRY BUG@" + db 1,0 + dw 70 + TX_FAR _WeedleDexEntry + db "@" + +KakunaDexEntry: ; 40c2f (10:4c2f) + db "COCOON@" + db 2,0 + dw 220 + TX_FAR _KakunaDexEntry + db "@" + +BeedrillDexEntry: ; 40c3f (10:4c3f) + db "POISON BEE@" + db 3,3 + dw 650 + TX_FAR _BeedrillDexEntry + db "@" + +DodrioDexEntry: ; 40c53 (10:4c53) + db "TRIPLEBIRD@" + db 5,11 + dw 1880 + TX_FAR _DodrioDexEntry + db "@" + +PrimeapeDexEntry: ; 40c67 (10:4c67) + db "PIG MONKEY@" + db 3,3 + dw 710 + TX_FAR _PrimeapeDexEntry + db "@" + +DugtrioDexEntry: ; 40c7b (10:4c7b) + db "MOLE@" + db 2,4 + dw 730 + TX_FAR _DugtrioDexEntry + db "@" + +VenomothDexEntry: ; 40c89 (10:4c89) + db "POISONMOTH@" + db 4,11 + dw 280 + TX_FAR _VenomothDexEntry + db "@" + +DewgongDexEntry: ; 40c9d (10:4c9d) + db "SEA LION@" + db 5,7 + dw 2650 + TX_FAR _DewgongDexEntry + db "@" + +CaterpieDexEntry: ; 40caf (10:4caf) + db "WORM@" + db 1,0 + dw 60 + TX_FAR _CaterpieDexEntry + db "@" + +MetapodDexEntry: ; 40cbd (10:4cbd) + db "COCOON@" + db 2,4 + dw 220 + TX_FAR _MetapodDexEntry + db "@" + +ButterfreeDexEntry: ; 40ccd (10:4ccd) + db "BUTTERFLY@" + db 3,7 + dw 710 + TX_FAR _ButterfreeDexEntry + db "@" + +MachampDexEntry: ; 40ce0 (10:4ce0) + db "SUPERPOWER@" + db 5,3 + dw 2870 + TX_FAR _MachampDexEntry + db "@" + +GolduckDexEntry: ; 40cf4 (10:4cf4) + db "DUCK@" + db 5,7 + dw 1690 + TX_FAR _GolduckDexEntry + db "@" + +HypnoDexEntry: ; 40d02 (10:4d02) + db "HYPNOSIS@" + db 5,3 + dw 1670 + TX_FAR _HypnoDexEntry + db "@" + +GolbatDexEntry: ; 40d14 (10:4d14) + db "BAT@" + db 5,3 + dw 1210 + TX_FAR _GolbatDexEntry + db "@" + +MewtwoDexEntry: ; 40d21 (10:4d21) + db "GENETIC@" + db 6,7 + dw 2690 + TX_FAR _MewtwoDexEntry + db "@" + +SnorlaxDexEntry: ; 40d32 (10:4d32) + db "SLEEPING@" + db 6,11 + dw 10140 + TX_FAR _SnorlaxDexEntry + db "@" + +MagikarpDexEntry: ; 40d44 (10:4d44) + db "FISH@" + db 2,11 + dw 220 + TX_FAR _MagikarpDexEntry + db "@" + +MukDexEntry: ; 40d52 (10:4d52) + db "SLUDGE@" + db 3,11 + dw 660 + TX_FAR _MukDexEntry + db "@" + +KinglerDexEntry: ; 40d62 (10:4d62) + db "PINCER@" + db 4,3 + dw 1320 + TX_FAR _KinglerDexEntry + db "@" + +CloysterDexEntry: ; 40d72 (10:4d72) + db "BIVALVE@" + db 4,11 + dw 2920 + TX_FAR _CloysterDexEntry + db "@" + +ElectrodeDexEntry: ; 40d83 (10:4d83) + db "BALL@" + db 3,11 + dw 1470 + TX_FAR _ElectrodeDexEntry + db "@" + +ClefableDexEntry: ; 40d91 (10:4d91) + db "FAIRY@" + db 4,3 + dw 880 + TX_FAR _ClefableDexEntry + db "@" + +WeezingDexEntry: ; 40da0 (10:4da0) + db "POISON GAS@" + db 3,11 + dw 210 + TX_FAR _WeezingDexEntry + db "@" + +PersianDexEntry: ; 40db4 (10:4db4) + db "CLASSY CAT@" + db 3,3 + dw 710 + TX_FAR _PersianDexEntry + db "@" + +MarowakDexEntry: ; 40dc8 (10:4dc8) + db "BONEKEEPER@" + db 3,3 + dw 990 + TX_FAR _MarowakDexEntry + db "@" + +HaunterDexEntry: ; 40ddc (10:4ddc) + db "GAS@" + db 5,3 + dw 2 + TX_FAR _HaunterDexEntry + db "@" + +AbraDexEntry: ; 40de9 (10:4de9) + db "PSI@" + db 2,11 + dw 430 + TX_FAR _AbraDexEntry + db "@" + +AlakazamDexEntry: ; 40df6 (10:4df6) + db "PSI@" + db 4,11 + dw 1060 + TX_FAR _AlakazamDexEntry + db "@" + +PidgeottoDexEntry: ; 40e03 (10:4e03) + db "BIRD@" + db 3,7 + dw 660 + TX_FAR _PidgeottoDexEntry + db "@" + +PidgeotDexEntry: ; 40e11 (10:4e11) + db "BIRD@" + db 4,11 + dw 870 + TX_FAR _PidgeotDexEntry + db "@" + +StarmieDexEntry: ; 40e1f (10:4e1f) + db "MYSTERIOUS@" + db 3,7 + dw 1760 + TX_FAR _StarmieDexEntry + db "@" + +BulbasaurDexEntry: ; 40e33 (10:4e33) + db "SEED@" + db 2,4 + dw 150 + TX_FAR _BulbasaurDexEntry + db "@" + +VenusaurDexEntry: ; 40e41 (10:4e41) + db "SEED@" + db 6,7 + dw 2210 + TX_FAR _VenusaurDexEntry + db "@" + +TentacruelDexEntry: ; 40e4f (10:4e4f) + db "JELLYFISH@" + db 5,3 + dw 1210 + TX_FAR _TentacruelDexEntry + db "@" + +GoldeenDexEntry: ; 40e62 (10:4e62) + db "GOLDFISH@" + db 2,0 + dw 330 + TX_FAR _GoldeenDexEntry + db "@" + +SeakingDexEntry: ; 40e74 (10:4e74) + db "GOLDFISH@" + db 4,3 + dw 860 + TX_FAR _SeakingDexEntry + db "@" + +PonytaDexEntry: ; 40e86 (10:4e86) + db "FIRE HORSE@" + db 3,3 + dw 660 + TX_FAR _PonytaDexEntry + db "@" + +RapidashDexEntry: ; 40e9a (10:4e9a) + db "FIRE HORSE@" + db 5,7 + dw 2090 + TX_FAR _RapidashDexEntry + db "@" + +RattataDexEntry: ; 40eae (10:4eae) + db "RAT@" + db 1,0 + dw 80 + TX_FAR _RattataDexEntry + db "@" + +RaticateDexEntry: ; 40ebb (10:4ebb) + db "RAT@" + db 2,4 + dw 410 + TX_FAR _RaticateDexEntry + db "@" + +NidorinoDexEntry: ; 40ec8 (10:4ec8) + db "POISON PIN@" + db 2,11 + dw 430 + TX_FAR _NidorinoDexEntry + db "@" + +NidorinaDexEntry: ; 40edc (10:4edc) + db "POISON PIN@" + db 2,7 + dw 440 + TX_FAR _NidorinaDexEntry + db "@" + +GeodudeDexEntry: ; 40ef0 (10:4ef0) + db "ROCK@" + db 1,4 + dw 440 + TX_FAR _GeodudeDexEntry + db "@" + +PorygonDexEntry: ; 40efe (10:4efe) + db "VIRTUAL@" + db 2,7 + dw 800 + TX_FAR _PorygonDexEntry + db "@" + +AerodactylDexEntry: ; 40f0f (10:4f0f) + db "FOSSIL@" + db 5,11 + dw 1300 + TX_FAR _AerodactylDexEntry + db "@" + +MagnemiteDexEntry: ; 40f1f (10:4f1f) + db "MAGNET@" + db 1,0 + dw 130 + TX_FAR _MagnemiteDexEntry + db "@" + +CharmanderDexEntry: ; 40f2f (10:4f2f) + db "LIZARD@" + db 2,0 + dw 190 + TX_FAR _CharmanderDexEntry + db "@" + +SquirtleDexEntry: ; 40f3f (10:4f3f) + db "TINYTURTLE@" + db 1,8 + dw 200 + TX_FAR _SquirtleDexEntry + db "@" + +CharmeleonDexEntry: ; 40f53 (10:4f53) + db "FLAME@" + db 3,7 + dw 420 + TX_FAR _CharmeleonDexEntry + db "@" + +WartortleDexEntry: ; 40f62 (10:4f62) + db "TURTLE@" + db 3,3 + dw 500 + TX_FAR _WartortleDexEntry + db "@" + +CharizardDexEntry: ; 40f72 (10:4f72) + db "FLAME@" + db 5,7 + dw 2000 + TX_FAR _CharizardDexEntry + db "@" + +OddishDexEntry: ; 40f81 (10:4f81) + db "WEED@" + db 1,8 + dw 120 + TX_FAR _OddishDexEntry + db "@" + +GloomDexEntry: ; 40f8f (10:4f8f) + db "WEED@" + db 2,7 + dw 190 + TX_FAR _GloomDexEntry + db "@" + +VileplumeDexEntry: ; 40f9d (10:4f9d) + db "FLOWER@" + db 3,11 + dw 410 + TX_FAR _VileplumeDexEntry + db "@" + +BellsproutDexEntry: ; 40fad (10:4fad) + db "FLOWER@" + db 2,4 + dw 90 + TX_FAR _BellsproutDexEntry + db "@" + +WeepinbellDexEntry: ; 40fbd (10:4fbd) + db "FLYCATCHER@" + db 3,3 + dw 140 + TX_FAR _WeepinbellDexEntry + db "@" + +VictreebelDexEntry: ; 40fd1 (10:4fd1) + db "FLYCATCHER@" + db 5,7 + dw 340 + TX_FAR _VictreebelDexEntry + db "@" + +MissingNoDexEntry: ; 40fe5 (10:4fe5) + db "???@" + db 10 ; 1.0 m + db 100 ; 10.0 kg + db 0,"コメント さくせいちゅう@" ; コメント作成中 (Comment to be written) \ No newline at end of file diff --git a/data/pokedex_order.asm b/data/pokedex_order.asm new file mode 100755 index 00000000..0c4b91f3 --- /dev/null +++ b/data/pokedex_order.asm @@ -0,0 +1,191 @@ +PokedexOrder: ; 41024 (10:5024) + db DEX_RHYDON + db DEX_KANGASKHAN + db DEX_NIDORAN_M + db DEX_CLEFAIRY + db DEX_SPEAROW + db DEX_VOLTORB + db DEX_NIDOKING + db DEX_SLOWBRO + db DEX_IVYSAUR + db DEX_EXEGGUTOR + db DEX_LICKITUNG + db DEX_EXEGGCUTE + db DEX_GRIMER + db DEX_GENGAR + db DEX_NIDORAN_F + db DEX_NIDOQUEEN + db DEX_CUBONE + db DEX_RHYHORN + db DEX_LAPRAS + db DEX_ARCANINE + db DEX_MEW + db DEX_GYARADOS + db DEX_SHELLDER + db DEX_TENTACOOL + db DEX_GASTLY + db DEX_SCYTHER + db DEX_STARYU + db DEX_BLASTOISE + db DEX_PINSIR + db DEX_TANGELA + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_GROWLITHE + db DEX_ONIX + db DEX_FEAROW + db DEX_PIDGEY + db DEX_SLOWPOKE + db DEX_KADABRA + db DEX_GRAVELER + db DEX_CHANSEY + db DEX_MACHOKE + db DEX_MR_MIME + db DEX_HITMONLEE + db DEX_HITMONCHAN + db DEX_ARBOK + db DEX_PARASECT + db DEX_PSYDUCK + db DEX_DROWZEE + db DEX_GOLEM + db 0 ; MISSINGNO. + db DEX_MAGMAR + db 0 ; MISSINGNO. + db DEX_ELECTABUZZ + db DEX_MAGNETON + db DEX_KOFFING + db 0 ; MISSINGNO. + db DEX_MANKEY + db DEX_SEEL + db DEX_DIGLETT + db DEX_TAUROS + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_FARFETCH_D + db DEX_VENONAT + db DEX_DRAGONITE + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_DODUO + db DEX_POLIWAG + db DEX_JYNX + db DEX_MOLTRES + db DEX_ARTICUNO + db DEX_ZAPDOS + db DEX_DITTO + db DEX_MEOWTH + db DEX_KRABBY + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_VULPIX + db DEX_NINETALES + db DEX_PIKACHU + db DEX_RAICHU + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_DRATINI + db DEX_DRAGONAIR + db DEX_KABUTO + db DEX_KABUTOPS + db DEX_HORSEA + db DEX_SEADRA + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_SANDSHREW + db DEX_SANDSLASH + db DEX_OMANYTE + db DEX_OMASTAR + db DEX_JIGGLYPUFF + db DEX_WIGGLYTUFF + db DEX_EEVEE + db DEX_FLAREON + db DEX_JOLTEON + db DEX_VAPOREON + db DEX_MACHOP + db DEX_ZUBAT + db DEX_EKANS + db DEX_PARAS + db DEX_POLIWHIRL + db DEX_POLIWRATH + db DEX_WEEDLE + db DEX_KAKUNA + db DEX_BEEDRILL + db 0 ; MISSINGNO. + db DEX_DODRIO + db DEX_PRIMEAPE + db DEX_DUGTRIO + db DEX_VENOMOTH + db DEX_DEWGONG + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_CATERPIE + db DEX_METAPOD + db DEX_BUTTERFREE + db DEX_MACHAMP + db 0 ; MISSINGNO. + db DEX_GOLDUCK + db DEX_HYPNO + db DEX_GOLBAT + db DEX_MEWTWO + db DEX_SNORLAX + db DEX_MAGIKARP + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_MUK + db 0 ; MISSINGNO. + db DEX_KINGLER + db DEX_CLOYSTER + db 0 ; MISSINGNO. + db DEX_ELECTRODE + db DEX_CLEFABLE + db DEX_WEEZING + db DEX_PERSIAN + db DEX_MAROWAK + db 0 ; MISSINGNO. + db DEX_HAUNTER + db DEX_ABRA + db DEX_ALAKAZAM + db DEX_PIDGEOTTO + db DEX_PIDGEOT + db DEX_STARMIE + db DEX_BULBASAUR + db DEX_VENUSAUR + db DEX_TENTACRUEL + db 0 ; MISSINGNO. + db DEX_GOLDEEN + db DEX_SEAKING + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_PONYTA + db DEX_RAPIDASH + db DEX_RATTATA + db DEX_RATICATE + db DEX_NIDORINO + db DEX_NIDORINA + db DEX_GEODUDE + db DEX_PORYGON + db DEX_AERODACTYL + db 0 ; MISSINGNO. + db DEX_MAGNEMITE + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_CHARMANDER + db DEX_SQUIRTLE + db DEX_CHARMELEON + db DEX_WARTORTLE + db DEX_CHARIZARD + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db 0 ; MISSINGNO. + db DEX_ODDISH + db DEX_GLOOM + db DEX_VILEPLUME + db DEX_BELLSPROUT + db DEX_WEEPINBELL + db DEX_VICTREEBEL \ No newline at end of file diff --git a/data/prizes.asm b/data/prizes.asm new file mode 100755 index 00000000..1fab54fc --- /dev/null +++ b/data/prizes.asm @@ -0,0 +1,69 @@ +PrizeDifferentMenuPtrs: ; 52843 (14:6843) + dw PrizeMenuMon1Entries + dw PrizeMenuMon1Cost + + dw PrizeMenuMon2Entries + dw PrizeMenuMon2Cost + + dw PrizeMenuTMsEntries + dw PrizeMenuTMsCost + +NoThanksText: ; 5284f (14:684f) + db "NO THANKS@" + +PrizeMenuMon1Entries: ; 52859 (14:6859) + db ABRA + db CLEFAIRY +IF _RED + db NIDORINA +ENDC +IF _BLUE + db NIDORINO +ENDC + db "@" +PrizeMenuMon1Cost: ; 5285d (14:685d) +IF _RED + db $01,$80 + db $05,$00 +ENDC +IF _BLUE + db $01,$20 + db $07,$50 +ENDC + db $12,$00 + db "@" + +PrizeMenuMon2Entries: ; 52864 (14:6864) +IF _RED + db DRATINI + db SCYTHER +ENDC +IF _BLUE + db PINSIR + db DRATINI +ENDC + db PORYGON + db "@" +PrizeMenuMon2Cost: ; 52868 (14:6868) +IF _RED + db $28,$00 + db $55,$00 + db $99,$99 +ENDC +IF _BLUE + db $25,$00 + db $46,$00 + db $65,$00 +ENDC + db "@" + +PrizeMenuTMsEntries: ; 5286f (14:686f) + db TM_23 + db TM_15 + db TM_50 + db "@" +PrizeMenuTMsCost: ; 52873 (14:6873) + db $33,$00 ; 3300 Coins + db $55,$00 ; 5500 Coins + db $77,$00 ; 7700 Coins + db "@" diff --git a/data/slot_machine_wheels.asm b/data/slot_machine_wheels.asm new file mode 100755 index 00000000..e41da729 --- /dev/null +++ b/data/slot_machine_wheels.asm @@ -0,0 +1,59 @@ +SlotMachineWheel1: ; 379e5 (d:79e5) + dw SLOTS7 + dw SLOTSMOUSE + dw SLOTSFISH + dw SLOTSBAR + dw SLOTSCHERRY + dw SLOTS7 + dw SLOTSFISH + dw SLOTSBIRD + dw SLOTSBAR + dw SLOTSCHERRY + dw SLOTS7 + dw SLOTSMOUSE + dw SLOTSBIRD + dw SLOTSBAR + dw SLOTSCHERRY + dw SLOTS7 + dw SLOTSMOUSE + dw SLOTSFISH + +SlotMachineWheel2: ; 37a09 (d:7a09) + dw SLOTS7 + dw SLOTSFISH + dw SLOTSCHERRY + dw SLOTSBIRD + dw SLOTSMOUSE + dw SLOTSBAR + dw SLOTSCHERRY + dw SLOTSFISH + dw SLOTSBIRD + dw SLOTSCHERRY + dw SLOTSBAR + dw SLOTSFISH + dw SLOTSBIRD + dw SLOTSCHERRY + dw SLOTSMOUSE + dw SLOTS7 + dw SLOTSFISH + dw SLOTSCHERRY + +SlotMachineWheel3: ; 37a2d (d:7a2d) + dw SLOTS7 + dw SLOTSBIRD + dw SLOTSFISH + dw SLOTSCHERRY + dw SLOTSMOUSE + dw SLOTSBIRD + dw SLOTSFISH + dw SLOTSCHERRY + dw SLOTSMOUSE + dw SLOTSBIRD + dw SLOTSFISH + dw SLOTSCHERRY + dw SLOTSMOUSE + dw SLOTSBIRD + dw SLOTSBAR + dw SLOTS7 + dw SLOTSBIRD + dw SLOTSFISH \ No newline at end of file diff --git a/data/super_palettes.asm b/data/super_palettes.asm new file mode 100755 index 00000000..79d6b9a0 --- /dev/null +++ b/data/super_palettes.asm @@ -0,0 +1,174 @@ +; palettes for overworlds, title screen, monsters +SuperPalettes: ; 72660 (1c:6660) + RGB 31,29,31 ; PAL_ROUTE + RGB 21,28,11 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_PALLET + RGB 25,28,27 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_VIRIDIAN + RGB 17,26,3 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_PEWTER + RGB 23,25,16 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_CERULEAN + RGB 17,20,30 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_LAVENDER + RGB 27,20,27 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_VERMILION + RGB 30,18,0 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_CELADON + RGB 16,30,22 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_FUCHSIA + RGB 31,15,22 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_CINNABAR + RGB 26,10,6 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_INDIGO + RGB 22,14,24 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_SAFFRON + RGB 27,27,3 + RGB 20,26,31 + RGB 3,2,2 + RGB 31,29,31 ; PAL_TOWNMAP + RGB 20,26,31 + RGB 17,23,10 + RGB 3,2,2 +IF _RED + RGB 31,29,31 ; PAL_LOGO1 + RGB 30,30,17 + RGB 17,23,10 + RGB 21,0,4 +ENDC +IF _BLUE + RGB 31,29,31 ; PAL_LOGO1 + RGB 30,30,17 + RGB 21,0,4 + RGB 14,19,29 +ENDC + RGB 31,29,31 ; PAL_LOGO2 + RGB 30,30,17 + RGB 18,18,24 + RGB 7,7,16 + RGB 31,29,31 ; PAL_0F + RGB 24,20,30 + RGB 11,20,30 + RGB 3,2,2 + RGB 31,29,31 ; PAL_MEWMON + RGB 30,22,17 + RGB 16,14,19 + RGB 3,2,2 + RGB 31,29,31 ; PAL_BLUEMON + RGB 18,20,27 + RGB 11,15,23 + RGB 3,2,2 + RGB 31,29,31 ; PAL_REDMON + RGB 31,20,10 + RGB 26,10,6 + RGB 3,2,2 + RGB 31,29,31 ; PAL_CYANMON + RGB 21,25,29 + RGB 14,19,25 + RGB 3,2,2 + RGB 31,29,31 ; PAL_PURPLEMON + RGB 27,22,24 + RGB 21,15,23 + RGB 3,2,2 + RGB 31,29,31 ; PAL_BROWNMON + RGB 28,20,15 + RGB 21,14,9 + RGB 3,2,2 + RGB 31,29,31 ; PAL_GREENMON + RGB 20,26,16 + RGB 9,20,11 + RGB 3,2,2 + RGB 31,29,31 ; PAL_PINKMON + RGB 30,22,24 + RGB 28,15,21 + RGB 3,2,2 + RGB 31,29,31 ; PAL_YELLOWMON + RGB 31,28,14 + RGB 26,20,0 + RGB 3,2,2 + RGB 31,29,31 ; PAL_GREYMON + RGB 26,21,22 + RGB 15,15,18 + RGB 3,2,2 + RGB 31,29,31 ; PAL_SLOTS1 + RGB 26,21,22 + RGB 27,20,6 + RGB 3,2,2 + RGB 31,29,31 ; PAL_SLOTS2 + RGB 31,31,17 +IF _RED + RGB 25,17,21 +ENDC +IF _BLUE + RGB 16,19,29 +ENDC + RGB 3,2,2 + RGB 31,29,31 ; PAL_SLOTS3 + RGB 22,31,16 +IF _RED + RGB 25,17,21 +ENDC +IF _BLUE + RGB 16,19,29 +ENDC + RGB 3,2,2 + RGB 31,29,31 ; PAL_SLOTS4 +IF _RED + RGB 16,19,29 + RGB 25,17,21 +ENDC +IF _BLUE + RGB 25,17,21 + RGB 16,19,29 +ENDC + RGB 3,2,2 + RGB 31,29,31 ; PAL_BLACK + RGB 7,7,7 + RGB 2,3,3 + RGB 3,2,2 + RGB 31,29,31 ; PAL_GREENBAR + RGB 30,26,15 + RGB 9,20,11 + RGB 3,2,2 + RGB 31,29,31 ; PAL_YELLOWBAR + RGB 30,26,15 + RGB 26,20,0 + RGB 3,2,2 + RGB 31,29,31 ; PAL_REDBAR + RGB 30,26,15 + RGB 26,10,6 + RGB 3,2,2 + RGB 31,29,31 ; PAL_BADGE + RGB 30,22,17 + RGB 11,15,23 + RGB 3,2,2 + RGB 31,29,31 ; PAL_CAVE + RGB 21,14,9 + RGB 18,24,22 + RGB 3,2,2 + RGB 31,29,31 ; PAL_GAMEFREAK + RGB 31,28,14 + RGB 24,20,10 + RGB 3,2,2 \ No newline at end of file diff --git a/data/super_rod.asm b/data/super_rod.asm new file mode 100755 index 00000000..0582e70e --- /dev/null +++ b/data/super_rod.asm @@ -0,0 +1,101 @@ +; super rod data +; format: map, pointer to fishing group +SuperRodData: ; e919 (3:6919) + dbw PALLET_TOWN, FishingGroup1 + dbw VIRIDIAN_CITY, FishingGroup1 + dbw CERULEAN_CITY, FishingGroup3 + dbw VERMILION_CITY, FishingGroup4 + dbw CELADON_CITY, FishingGroup5 + dbw FUCHSIA_CITY, FishingGroup10 + dbw CINNABAR_ISLAND, FishingGroup8 + dbw ROUTE_4, FishingGroup3 + dbw ROUTE_6, FishingGroup4 + dbw ROUTE_10, FishingGroup5 + dbw ROUTE_11, FishingGroup4 + dbw ROUTE_12, FishingGroup7 + dbw ROUTE_13, FishingGroup7 + dbw ROUTE_17, FishingGroup7 + dbw ROUTE_18, FishingGroup7 + dbw ROUTE_19, FishingGroup8 + dbw ROUTE_20, FishingGroup8 + dbw ROUTE_21, FishingGroup8 + dbw ROUTE_22, FishingGroup2 + dbw ROUTE_23, FishingGroup9 + dbw ROUTE_24, FishingGroup3 + dbw ROUTE_25, FishingGroup3 + dbw CERULEAN_GYM, FishingGroup3 + dbw VERMILION_DOCK, FishingGroup4 +;XXX syntax errors on the rest? + dbw $A1, FishingGroup8 ; SEAFOAM_ISLANDS_4 + dbw $A2, FishingGroup8 ; SEAFOAM_ISLANDS_5 + dbw SAFARI_ZONE_EAST, FishingGroup6 + dbw $DA, FishingGroup6 ; SAFARI_ZONE_NORTH + dbw SAFARI_ZONE_WEST, FishingGroup6 + dbw $DC, FishingGroup6 ; SAFARI_ZONE_CENTER + dbw $E2, FishingGroup9 ; UNKNOWN_DUNGEON_2 + dbw $E3, FishingGroup9 ; UNKNOWN_DUNGEON_3 + dbw $E4, FishingGroup9 ; UNKNOWN_DUNGEON_1 + db $FF + +; fishing groups +; number of monsters, followed by level/monster pairs +FishingGroup1: ; e97d (3:697d) + db 2 + db 15,TENTACOOL + db 15,POLIWAG + +FishingGroup2: ; e982 (3:6982) + db 2 + db 15,GOLDEEN + db 15,POLIWAG + +FishingGroup3: ; e987 (3:6987) + db 3 + db 15,PSYDUCK + db 15,GOLDEEN + db 15,KRABBY + +FishingGroup4: ; e98e (3:698e) + db 2 + db 15,KRABBY + db 15,SHELLDER + +FishingGroup5: ; e993 (3:6993) + db 2 + db 23,POLIWHIRL + db 15,SLOWPOKE + +FishingGroup6: ; e998 (3:6998) + db 4 + db 15,DRATINI + db 15,KRABBY + db 15,PSYDUCK + db 15,SLOWPOKE + +FishingGroup7: ; e9a1 (3:69a1) + db 4 + db 5,TENTACOOL + db 15,KRABBY + db 15,GOLDEEN + db 15,MAGIKARP + +FishingGroup8: ; e9aa (3:69aa) + db 4 + db 15,STARYU + db 15,HORSEA + db 15,SHELLDER + db 15,GOLDEEN + +FishingGroup9: ; e9b3 (3:69b3) + db 4 + db 23,SLOWBRO + db 23,SEAKING + db 23,KINGLER + db 23,SEADRA + +FishingGroup10: ; e9bc (3:69bc) + db 4 + db 23,SEAKING + db 15,KRABBY + db 15,GOLDEEN + db 15,MAGIKARP \ No newline at end of file diff --git a/data/title_mons.asm b/data/title_mons.asm new file mode 100755 index 00000000..d3fb3652 --- /dev/null +++ b/data/title_mons.asm @@ -0,0 +1,56 @@ +TitleMons: ; 4588 (1:4588) +; mons on the title screen are randomly chosen from here +IF _RED + db CHARMANDER + db SQUIRTLE + db BULBASAUR + db WEEDLE + db NIDORAN_M + db SCYTHER + db PIKACHU + db CLEFAIRY + db RHYDON + db ABRA + db GASTLY + db DITTO + db PIDGEOTTO + db ONIX + db PONYTA + db MAGIKARP +ENDC +IF _GREEN + db BULBASAUR + db CHARMANDER + db SQUIRTLE + db CATERPIE + db NIDORAN_F + db PINSIR + db PIKACHU + db CLEFAIRY + db RHYDON + db ABRA + db GASTLY + db DITTO + db PIDGEOTTO + db ONIX + db PONYTA + db MAGIKARP +ENDC +IF _BLUE + db SQUIRTLE + db CHARMANDER + db BULBASAUR + db MANKEY + db HITMONLEE + db VULPIX + db CHANSEY + db AERODACTYL + db JOLTEON + db SNORLAX + db GLOOM + db POLIWAG + db DODUO + db PORYGON + db GENGAR + db RAICHU +ENDC \ No newline at end of file diff --git a/data/tm_prices.asm b/data/tm_prices.asm new file mode 100755 index 00000000..5e335690 --- /dev/null +++ b/data/tm_prices.asm @@ -0,0 +1,7 @@ +TechnicalMachinePrices: ; 7bfa7 (1e:7fa7) +; In thousands (nybbles). + db $32, $21, $34, $24, $34 + db $21, $45, $55, $32, $32 + db $55, $52, $54, $52, $41 + db $21, $12, $42, $25, $24 + db $22, $52, $24, $34, $42 \ No newline at end of file diff --git a/data/tms.asm b/data/tms.asm new file mode 100755 index 00000000..3ec73402 --- /dev/null +++ b/data/tms.asm @@ -0,0 +1,56 @@ +TechnicalMachines: ; 13773 (4:7773) + db MEGA_PUNCH + db RAZOR_WIND + db SWORDS_DANCE + db WHIRLWIND + db MEGA_KICK + db TOXIC + db HORN_DRILL + db BODY_SLAM + db TAKE_DOWN + db DOUBLE_EDGE + db BUBBLEBEAM + db WATER_GUN + db ICE_BEAM + db BLIZZARD + db HYPER_BEAM + db PAY_DAY + db SUBMISSION + db COUNTER + db SEISMIC_TOSS + db RAGE + db MEGA_DRAIN + db SOLARBEAM + db DRAGON_RAGE + db THUNDERBOLT + db THUNDER + db EARTHQUAKE + db FISSURE + db DIG + db PSYCHIC_M + db TELEPORT + db MIMIC + db DOUBLE_TEAM + db REFLECT + db BIDE + db METRONOME + db SELFDESTRUCT + db EGG_BOMB + db FIRE_BLAST + db SWIFT + db SKULL_BASH + db SOFTBOILED + db DREAM_EATER + db SKY_ATTACK + db REST + db THUNDER_WAVE + db PSYWAVE + db EXPLOSION + db ROCK_SLIDE + db TRI_ATTACK + db SUBSTITUTE + db CUT + db FLY + db SURF + db STRENGTH + db FLASH \ No newline at end of file diff --git a/data/town_map_entries.asm b/data/town_map_entries.asm new file mode 100755 index 00000000..d240be8a --- /dev/null +++ b/data/town_map_entries.asm @@ -0,0 +1,101 @@ +ExternalMapEntries: ; 71313 (1c:5313) + EMAP $2,$B,PalletTownName + EMAP $2,$8,ViridianCityName + EMAP $2,$3,PewterCityName + EMAP $A,$2,CeruleanCityName + EMAP $E,$5,LavenderTownName + EMAP $A,$9,VermilionCityName + EMAP $7,$5,CeladonCityName + EMAP $8,$D,FuchsiaCityName + EMAP $2,$F,CinnabarIslandName + EMAP $0,$2,IndigoPlateauName + EMAP $A,$5,SaffronCityName + EMAP $0,$0,PalletTownName ; unused + EMAP $2,$A,Route1Name + EMAP $2,$6,Route2Name + EMAP $4,$3,Route3Name + EMAP $8,$2,Route4Name + EMAP $A,$3,Route5Name + EMAP $A,$8,Route6Name + EMAP $8,$5,Route7Name + EMAP $D,$5,Route8Name + EMAP $D,$2,Route9Name + EMAP $E,$4,Route10Name + EMAP $C,$9,Route11Name + EMAP $E,$9,Route12Name + EMAP $D,$B,Route13Name + EMAP $B,$C,Route14Name + EMAP $A,$D,Route15Name + EMAP $5,$5,Route16Name + EMAP $4,$8,Route17Name + EMAP $6,$D,Route18Name + EMAP $6,$F,Route19Name + EMAP $4,$F,Route20Name + EMAP $2,$D,Route21Name + EMAP $0,$8,Route22Name + EMAP $0,$6,Route23Name + EMAP $A,$1,Route24Name + EMAP $B,$0,Route25Name + +InternalMapEntries: ; 71382 (1c:5382) + IMAP $29,$2,$B,PalletTownName + IMAP $2E,$2,$8,ViridianCityName + IMAP $33,$2,$6,Route2Name + IMAP $34,$2,$4,ViridianForestName + IMAP $3B,$2,$3,PewterCityName + IMAP $3E,$6,$2,MountMoonName + IMAP $44,$A,$2,CeruleanCityName + IMAP $45,$5,$2,Route4Name + IMAP $46,$A,$2,CeruleanCityName + IMAP $49,$A,$4,Route5Name + IMAP $4C,$A,$6,Route6Name + IMAP $4F,$9,$5,Route7Name + IMAP $51,$B,$5,Route8Name + IMAP $53,$E,$3,RockTunnelName + IMAP $54,$F,$4,PowerPlantName + IMAP $57,$D,$9,Route11Name + IMAP $58,$E,$7,Route12Name + IMAP $59,$C,$0,SeaCottageName + IMAP $5F,$A,$9,VermilionCityName + IMAP $69,$9,$A,SSAnneName + IMAP $6D,$0,$4,VictoryRoadName + IMAP $77,$0,$2,PokemonLeagueName + IMAP $78,$A,$5,UndergroundPathName + IMAP $79,$0,$2,PokemonLeagueName + IMAP $7A,$A,$5,UndergroundPathName + IMAP $8D,$7,$5,CeladonCityName + IMAP $8E,$E,$5,LavenderTownName + IMAP $95,$F,$5,PokemonTowerName + IMAP $98,$E,$5,LavenderTownName + IMAP $9C,$8,$D,FuchsiaCityName + IMAP $9D,$8,$C,SafariZoneName + IMAP $9F,$8,$D,FuchsiaCityName + IMAP $A3,$5,$F,SeafoamIslandsName + IMAP $A4,$A,$9,VermilionCityName + IMAP $A5,$8,$D,FuchsiaCityName + IMAP $A6,$2,$F,PokemonMansionName + IMAP $AE,$2,$F,CinnabarIslandName + IMAP $AF,$0,$2,IndigoPlateauName + IMAP $B8,$A,$5,SaffronCityName + IMAP $BA,$9,$D,Route15Name + IMAP $BD,$4,$5,Route16Name + IMAP $BE,$E,$A,Route12Name + IMAP $C0,$7,$D,Route18Name + IMAP $C1,$5,$F,SeafoamIslandsName + IMAP $C2,$0,$7,Route22Name + IMAP $C3,$0,$4,VictoryRoadName + IMAP $C4,$E,$7,Route12Name + IMAP $C5,$A,$9,VermilionCityName + IMAP $C6,$3,$4,DiglettsCaveName + IMAP $C7,$0,$4,VictoryRoadName + IMAP $CF,$7,$5,RocketHQName + IMAP $D6,$A,$5,SilphCoName + IMAP $D9,$2,$F,PokemonMansionName + IMAP $E2,$8,$C,SafariZoneName + IMAP $E5,$9,$1,CeruleanCaveName + IMAP $E6,$E,$5,LavenderTownName + IMAP $E7,$A,$2,CeruleanCityName + IMAP $E9,$E,$3,RockTunnelName + IMAP $ED,$A,$5,SilphCoName + IMAP $F8,$0,$2,PokemonLeagueName + db $FF \ No newline at end of file diff --git a/data/town_map_order.asm b/data/town_map_order.asm new file mode 100755 index 00000000..2cae70bd --- /dev/null +++ b/data/town_map_order.asm @@ -0,0 +1,48 @@ +TownMapOrder: ; 70f11 (1c:4f11) + db PALLET_TOWN + db ROUTE_1 + db VIRIDIAN_CITY + db ROUTE_2 + db VIRIDIAN_FOREST + db DIGLETTS_CAVE + db PEWTER_CITY + db ROUTE_3 + db MT_MOON_1 + db ROUTE_4 + db CERULEAN_CITY + db ROUTE_24 + db ROUTE_25 + db BILLS_HOUSE + db ROUTE_5 + db ROUTE_6 + db VERMILION_CITY + db SS_ANNE_1 + db ROUTE_9 + db ROCK_TUNNEL_POKECENTER + db ROUTE_10 + db LAVENDER_TOWN + db POKEMONTOWER_2 + db ROUTE_8 + db ROUTE_7 + db CELADON_CITY + db SAFFRON_CITY + db ROUTE_11 + db ROUTE_12 + db ROUTE_13 + db ROUTE_14 + db ROUTE_15 + db ROUTE_16 + db ROUTE_17 + db ROUTE_18 + db FUCHSIA_CITY + db SAFARI_ZONE_EAST + db ROUTE_19 + db SEAFOAM_ISLANDS_2 + db ROUTE_20 + db CINNABAR_ISLAND + db ROUTE_21 + db ROUTE_22 + db ROUTE_23 + db VICTORY_ROAD_3 + db INDIGO_PLATEAU + db POWER_PLANT \ No newline at end of file diff --git a/data/trades.asm b/data/trades.asm new file mode 100755 index 00000000..2593f01c --- /dev/null +++ b/data/trades.asm @@ -0,0 +1,12 @@ +TradeMons: ; 71b7b (1c:5b7b) +; givemonster, getmonster, textstring, nickname (11 bytes), 14 bytes total + db NIDORINO, NIDORINA, 0,"TERRY@@@@@@" + db ABRA, MR_MIME, 0,"MARCEL@@@@@" + db BUTTERFREE,BEEDRILL, 2,"CHIKUCHIKU@" + db PONYTA, SEEL, 0,"SAILOR@@@@@" + db SPEAROW, FARFETCH_D,2,"DUX@@@@@@@@" + db SLOWBRO, LICKITUNG, 0,"MARC@@@@@@@" + db POLIWHIRL, JYNX, 1,"LOLA@@@@@@@" + db RAICHU, ELECTRODE, 1,"DORIS@@@@@@" + db VENONAT, TANGELA, 2,"CRINKLES@@@" + db NIDORAN_M, NIDORAN_F, 2,"SPOT@@@@@@@" diff --git a/data/trainer_moves.asm b/data/trainer_moves.asm new file mode 100755 index 00000000..f9982be5 --- /dev/null +++ b/data/trainer_moves.asm @@ -0,0 +1,194 @@ +LoneMoves: ; 39d22 (e:5d22) +; these are used for gym leaders. +; this is not automatic! you have to write the number you want to W_LONEATTACKNO +; first. e.g., erika's script writes 4 to W_LONEATTACKNO to get mega drain, +; the fourth entry in the list. + +; first byte: pokemon in the trainer's party that gets the move +; second byte: move +; unterminated + db 1,BIDE + db 1,BUBBLEBEAM + db 2,THUNDERBOLT + db 2,MEGA_DRAIN + db 3,TOXIC + db 3,PSYWAVE + db 3,FIRE_BLAST + db 4,FISSURE + +TeamMoves: ; 39d32 (e:5d32) +; these are used for elite four. +; this is automatic, based on trainer class. +; don't be confused by LoneMoves above, the two data structures are + ; _completely_ unrelated. + +; first byte: trainer (all trainers in this class have this move) +; second byte: move +; ff-terminated + db LORELEI,BLIZZARD + db BRUNO,FISSURE + db AGATHA,TOXIC + db LANCE,BARRIER + db $FF + +if _YELLOW +; different format from above. + +; entry ≔ trainerclass, trainerid, moveset+, 0 +; moveset ≔ partymon, partymon'smove, moveid + + db BUG_CATCHER,$f + db 2,2,TACKLE + db 2,3,STRING_SHOT + db 0 + + db YOUNGSTER,$e + db 1,4,FISSURE + db 0 + + db BROCK,$1 + db 2,3,BIND + db 2,4,BIDE + db 0 + + db MISTY,$1 + db 2,4,BUBBLEBEAM + db 0 + + db LT__SURGE,$1 + db 1,1,THUNDERBOLT + db 1,2,MEGA_PUNCH + db 1,3,MEGA_KICK + db 1,4,GROWL + db 0 + + db ERIKA,$1 + db 1,3,MEGA_DRAIN + db 2,1,RAZOR_LEAF + db 3,1,PETAL_DANCE + db 0 + + db KOGA,$1 + db 1,1,TOXIC + db 1,2,TACKLE + db 2,1,TOXIC + db 2,3,SUPERSONIC + db 3,1,TOXIC + db 3,2,DOUBLE_EDGE + db 4,1,LEECH_LIFE + db 4,2,DOUBLE_TEAM + db 4,3,PSYCHIC_M + db 4,4,TOXIC + db 0 + + db BLAINE,$1 + db 1,1,FLAMETHROWER + db 1,4,CONFUSE_RAY + db 3,1,FLAMETHROWER + db 3,2,FIRE_BLAST + db 3,3,REFLECT + db 0 + + db SABRINA,$1 + db 1,1,FLASH + db 2,1,KINESIS + db 2,4,PSYWAVE + db 3,1,PSYWAVE + db 0 + + db GIOVANNI,$3 + db 1,3,FISSURE + db 2,2,DOUBLE_TEAM + db 3,1,EARTHQUAKE + db 3,3,THUNDER + db 4,1,EARTHQUAKE + db 4,2,LEER + db 4,3,THUNDER + db 5,1,ROCK_SLIDE + db 5,4,EARTHQUAKE + db 0 + + db LORELEI,$1 + db 1,1,BUBBLEBEAM + db 2,3,ICE_BEAM + db 3,1,PSYCHIC_M + db 3,2,SURF + db 4,3,LOVELY_KISS + db 5,3,BLIZZARD + db 0 + + db BRUNO,$1 + db 1,1,ROCK_SLIDE + db 1,2,SCREECH + db 1,4,DIG + db 2,3,FIRE_PUNCH + db 2,4,DOUBLE_TEAM + db 3,1,DOUBLE_KICK + db 3,2,MEGA_KICK + db 3,4,DOUBLE_TEAM + db 4,1,ROCK_SLIDE + db 4,2,SCREECH + db 4,4,EARTHQUAKE + db 5,2,KARATE_CHOP + db 5,3,STRENGTH + db 0 + + db AGATHA,$1 + db 1,2,SUBSTITUTE + db 1,3,LICK + db 1,4,MEGA_DRAIN + db 2,2,TOXIC + db 2,4,LEECH_LIFE + db 3,2,LICK + db 4,1,WRAP + db 5,2,PSYCHIC_M + db 0 + + db LANCE,$1 + db 1,1,DRAGON_RAGE + db 2,1,THUNDER_WAVE + db 2,3,THUNDERBOLT + db 3,1,BUBBLEBEAM + db 3,2,WRAP + db 3,3,ICE_BEAM + db 4,1,WING_ATTACK + db 4,2,SWIFT + db 4,3,FLY + db 5,1,BLIZZARD + db 5,2,FIRE_BLAST + db 5,3,THUNDER + db 0 + + db SONY3,$1 + db 1,3,EARTHQUAKE + db 2,4,KINESIS + db 3,4,LEECH_SEED + db 4,1,ICE_BEAM + db 5,1,CONFUSE_RAY + db 5,4,FIRE_SPIN + db 6,3,QUICK_ATTACK + db 0 + + db SONY3,$2 + db 1,3,EARTHQUAKE + db 2,4,KINESIS + db 3,4,LEECH_SEED + db 4,1,THUNDERBOLT + db 5,1,ICE_BEAM + db 6,2,REFLECT + db 6,3,QUICK_ATTACK + db 0 + + db SONY3,$3 + db 1,3,EARTHQUAKE + db 2,4,KINESIS + db 3,4,LEECH_SEED + db 4,1,CONFUSE_RAY + db 4,4,FIRE_SPIN + db 5,1,THUNDERBOLT + db 6,1,AURORA_BEAM + db 6,3,QUICK_ATTACK + db 0 + + db $ff +endc \ No newline at end of file diff --git a/data/trainer_parties.asm b/data/trainer_parties.asm new file mode 100755 index 00000000..9cfada81 --- /dev/null +++ b/data/trainer_parties.asm @@ -0,0 +1,592 @@ +TrainerDataPointers: ; 39d3b (e:5d3b) + dw YoungsterData,BugCatcherData,LassData,SailorData,JrTrainerMData + dw JrTrainerFData,PokemaniacData,SuperNerdData,HikerData,BikerData + dw BurglarData,EngineerData,Juggler1Data,FisherData,SwimmerData + dw CueBallData,GamblerData,BeautyData,PsychicData,RockerData + dw JugglerData,TamerData,BirdKeeperData,BlackbeltData,Green1Data + dw ProfOakData,ChiefData,ScientistData,GiovanniData,RocketData + dw CooltrainerMData,CooltrainerFData,BrunoData,BrockData,MistyData + dw LtSurgeData,ErikaData,KogaData,BlaineData,SabrinaData + dw GentlemanData,Green2Data,Green3Data,LoreleiData,ChannelerData + dw AgathaData,LanceData + +; if first byte != FF, then + ; first byte is level (of all pokemon on this team) + ; all the next bytes are pokemon species + ; null-terminated +; if first byte == FF, then + ; first byte is FF (obviously) + ; every next two bytes are a level and species + ; null-terminated + +YoungsterData: ; 39d99 (e:5d99) + db 11,RATTATA,EKANS,0 + db 14,SPEAROW,0 + db 10,RATTATA,RATTATA,ZUBAT,0 + db 14,RATTATA,EKANS,ZUBAT,0 + db 15,RATTATA,SPEAROW,0 + db 17,SLOWPOKE,0 + db 14,EKANS,SANDSHREW,0 + db 21,NIDORAN_M,0 + db 21,EKANS,0 + db 19,SANDSHREW,ZUBAT,0 + db 17,RATTATA,RATTATA,RATICATE,0 + db 18,NIDORAN_M,NIDORINO,0 + db 17,SPEAROW,RATTATA,RATTATA,SPEAROW,0 +if _YELLOW + db 24,SANDSHREW,0 +endc +BugCatcherData: ; 39dce (e:5dce) +if _YELLOW + db 7,CATERPIE,CATERPIE,0 + db 6,METAPOD,CATERPIE,METAPOD,0 + db 10,CATERPIE,0 +else + db 6,WEEDLE,CATERPIE,0 + db 7,WEEDLE,KAKUNA,WEEDLE,0 + db 9,WEEDLE,0 +endc + db 10,CATERPIE,WEEDLE,CATERPIE,0 + db 9,WEEDLE,KAKUNA,CATERPIE,METAPOD,0 + db 11,CATERPIE,METAPOD,0 + db 11,WEEDLE,KAKUNA,0 + db 10,CATERPIE,METAPOD,CATERPIE,0 + db 14,CATERPIE,WEEDLE,0 + db 16,WEEDLE,CATERPIE,WEEDLE,0 + db 20,BUTTERFREE,0 + db 18,METAPOD,CATERPIE,VENONAT,0 + db 19,BEEDRILL,BEEDRILL,0 + db 20,CATERPIE,WEEDLE,VENONAT,0 +if _YELLOW + db 8,CATERPIE,METAPOD,0 +endc +LassData: ; 39e0c (e:5e0c) + db 9,PIDGEY,PIDGEY,0 + db 10,RATTATA,NIDORAN_M,0 + db 14,JIGGLYPUFF,0 + db 31,PARAS,PARAS,PARASECT,0 + db 11,ODDISH,BELLSPROUT,0 + db 14,CLEFAIRY,0 + db 16,PIDGEY,NIDORAN_F,0 + db 14,PIDGEY,NIDORAN_F,0 + db 15,NIDORAN_M,NIDORAN_F,0 + db 13,ODDISH,PIDGEY,ODDISH,0 + db 18,PIDGEY,NIDORAN_F,0 +if _YELLOW + db 20,JIGGLYPUFF,0 +else + db 18,RATTATA,PIKACHU,0 +endc + db 23,NIDORAN_F,NIDORINA,0 + db 24,MEOWTH,MEOWTH,MEOWTH,0 +if _YELLOW + db 19,PIDGEY,RATTATA,NIDORAN_F,MEOWTH,NIDORAN_M,0 +else + db 19,PIDGEY,RATTATA,NIDORAN_M,MEOWTH,PIKACHU,0 +endc + db 22,CLEFAIRY,CLEFAIRY,0 + db 23,BELLSPROUT,WEEPINBELL,0 + db 23,ODDISH,GLOOM,0 +if _YELLOW + db 6,NIDORAN_F,NIDORAN_M,0 +endc +SailorData: ; 39e58 (e:5e58) + db 18,MACHOP,SHELLDER,0 + db 17,MACHOP,TENTACOOL,0 + db 21,SHELLDER,0 + db 17,HORSEA,SHELLDER,TENTACOOL,0 + db 18,TENTACOOL,STARYU,0 + db 17,HORSEA,HORSEA,HORSEA,0 + db 20,MACHOP,0 +if _YELLOW + db 24,MAGNEMITE,0 +else + db 21,PIKACHU,PIKACHU,0 +endc +JrTrainerMData: ; 39e78 (e:5e78) +if _YELLOW + db 9,DIGLETT,SANDSHREW,0 +else + db 11,DIGLETT,SANDSHREW,0 +endc + db 14,RATTATA,EKANS,0 + db 18,MANKEY,0 + db 20,SQUIRTLE,0 + db 16,SPEAROW,RATICATE,0 + db 18,DIGLETT,DIGLETT,SANDSHREW,0 + db 21,GROWLITHE,CHARMANDER,0 + db 19,RATTATA,DIGLETT,EKANS,SANDSHREW,0 + db 29,NIDORAN_M,NIDORINO,0 +if _YELLOW + db 16,WEEPINBELL,0 +endc +JrTrainerFData: ; 39e9d (e:5e9d) + db 19,GOLDEEN,0 +if _YELLOW + db 16,ODDISH,BELLSPROUT,0 +else + db 16,RATTATA,PIKACHU,0 +endc + db 16,PIDGEY,PIDGEY,PIDGEY,0 + db 22,BULBASAUR,0 + db 18,ODDISH,BELLSPROUT,ODDISH,BELLSPROUT,0 + db 23,MEOWTH,0 +if _YELLOW + db 20,JIGGLYPUFF,CLEFAIRY,0 +else + db 20,PIKACHU,CLEFAIRY,0 +endc + db 21,PIDGEY,PIDGEOTTO,0 + db 21,JIGGLYPUFF,PIDGEY,MEOWTH,0 + db 22,ODDISH,BULBASAUR,0 + db 24,BULBASAUR,IVYSAUR,0 +if _YELLOW + db 24,PIDGEY,MEOWTH,RATTATA,PIDGEY,MEOWTH,0 +else + db 24,PIDGEY,MEOWTH,RATTATA,PIKACHU,MEOWTH,0 +endc + db 30,POLIWAG,POLIWAG,0 + db 27,PIDGEY,MEOWTH,PIDGEY,PIDGEOTTO,0 + db 28,GOLDEEN,POLIWAG,HORSEA,0 + db 31,GOLDEEN,SEAKING,0 + db 22,BELLSPROUT,CLEFAIRY,0 + db 20,MEOWTH,ODDISH,PIDGEY,0 + db 19,PIDGEY,RATTATA,RATTATA,BELLSPROUT,0 + db 28,GLOOM,ODDISH,ODDISH,0 +if _YELLOW + db 29,PIDGEY,PIDGEOTTO,0 +else + db 29,PIKACHU,RAICHU,0 +endc + db 33,CLEFAIRY,0 + db 29,BELLSPROUT,ODDISH,TANGELA,0 + db 30,TENTACOOL,HORSEA,SEEL,0 +if _YELLOW + db 20,CUBONE,0 +endc +PokemaniacData: ; 39f09 (e:5f09) + db 30,RHYHORN,LICKITUNG,0 + db 20,CUBONE,SLOWPOKE,0 + db 20,SLOWPOKE,SLOWPOKE,SLOWPOKE,0 + db 22,CHARMANDER,CUBONE,0 + db 25,SLOWPOKE,0 + db 40,CHARMELEON,LAPRAS,LICKITUNG,0 + db 23,CUBONE,SLOWPOKE,0 +SuperNerdData: ; 39f26 (e:5f26) + db 11,MAGNEMITE,VOLTORB,0 + db 12,GRIMER,VOLTORB,KOFFING,0 + db 20,VOLTORB,KOFFING,VOLTORB,MAGNEMITE,0 + db 22,GRIMER,MUK,GRIMER,0 + db 26,KOFFING,0 + db 22,KOFFING,MAGNEMITE,WEEZING,0 + db 20,MAGNEMITE,MAGNEMITE,KOFFING,MAGNEMITE,0 + db 24,MAGNEMITE,VOLTORB,0 + db 36,VULPIX,VULPIX,NINETALES,0 + db 34,PONYTA,CHARMANDER,VULPIX,GROWLITHE,0 + db 41,RAPIDASH,0 + db 37,GROWLITHE,VULPIX,0 +HikerData: ; 39f5e (e:5f5e) + db 10,GEODUDE,GEODUDE,ONIX,0 + db 15,MACHOP,GEODUDE,0 + db 13,GEODUDE,GEODUDE,MACHOP,GEODUDE,0 + db 17,ONIX,0 + db 21,GEODUDE,ONIX,0 + db 20,GEODUDE,MACHOP,GEODUDE,0 + db 21,GEODUDE,ONIX,0 + db 19,ONIX,GRAVELER,0 + db 21,GEODUDE,GEODUDE,GRAVELER,0 + db 25,GEODUDE,0 + db 20,MACHOP,ONIX,0 + db 19,GEODUDE,MACHOP,GEODUDE,GEODUDE,0 + db 20,ONIX,ONIX,GEODUDE,0 + db 21,GEODUDE,GRAVELER,0 +BikerData: ; 39f9c (e:5f9c) + db 28,KOFFING,KOFFING,KOFFING,0 + db 29,KOFFING,GRIMER,0 + db 25,KOFFING,KOFFING,WEEZING,KOFFING,GRIMER,0 + db 28,KOFFING,GRIMER,WEEZING,0 + db 29,GRIMER,KOFFING,0 + db 33,WEEZING,0 + db 26,GRIMER,GRIMER,GRIMER,GRIMER,0 + db 28,WEEZING,KOFFING,WEEZING,0 + db 33,MUK,0 + db 29,VOLTORB,VOLTORB,0 + db 29,WEEZING,MUK,0 + db 25,KOFFING,WEEZING,KOFFING,KOFFING,WEEZING,0 + db 26,KOFFING,KOFFING,GRIMER,KOFFING,0 + db 28,GRIMER,GRIMER,KOFFING,0 + db 29,KOFFING,MUK,0 +BurglarData: ; 39fe4 (e:5fe4) + db 29,GROWLITHE,VULPIX,0 + db 33,GROWLITHE,0 + db 28,VULPIX,CHARMANDER,PONYTA,0 + db 36,GROWLITHE,VULPIX,NINETALES,0 + db 41,PONYTA,0 + db 37,VULPIX,GROWLITHE,0 + db 34,CHARMANDER,CHARMELEON,0 + db 38,NINETALES,0 + db 34,GROWLITHE,PONYTA,0 +EngineerData: ; 3a007 (e:6007) + db 21,VOLTORB,MAGNEMITE,0 + db 21,MAGNEMITE,0 + db 18,MAGNEMITE,MAGNEMITE,MAGNETON,0 +Juggler1Data: ; 3a013 (e:6013) +; none +FisherData: ; 3a013 (e:6013) + db 17,GOLDEEN,TENTACOOL,GOLDEEN,0 + db 17,TENTACOOL,STARYU,SHELLDER,0 + db 22,GOLDEEN,POLIWAG,GOLDEEN,0 + db 24,TENTACOOL,GOLDEEN,0 + db 27,GOLDEEN,0 + db 21,POLIWAG,SHELLDER,GOLDEEN,HORSEA,0 + db 28,SEAKING,GOLDEEN,SEAKING,SEAKING,0 + db 31,SHELLDER,CLOYSTER,0 + db 27,MAGIKARP,MAGIKARP,MAGIKARP,MAGIKARP,MAGIKARP,MAGIKARP,0 + db 33,SEAKING,GOLDEEN,0 + db 24,MAGIKARP,MAGIKARP,0 +SwimmerData: ; 3a049 (e:6049) + db 16,HORSEA,SHELLDER,0 + db 30,TENTACOOL,SHELLDER,0 + db 29,GOLDEEN,HORSEA,STARYU,0 + db 30,POLIWAG,POLIWHIRL,0 + db 27,HORSEA,TENTACOOL,TENTACOOL,GOLDEEN,0 + db 29,GOLDEEN,SHELLDER,SEAKING,0 + db 30,HORSEA,HORSEA,0 + db 27,TENTACOOL,TENTACOOL,STARYU,HORSEA,TENTACRUEL,0 + db 31,SHELLDER,CLOYSTER,0 + db 35,STARYU,0 + db 28,HORSEA,HORSEA,SEADRA,HORSEA,0 + db 33,SEADRA,TENTACRUEL,0 + db 37,STARMIE,0 + db 33,STARYU,WARTORTLE,0 + db 32,POLIWHIRL,TENTACOOL,SEADRA,0 +CueBallData: ; 3a08d (e:608d) + db 28,MACHOP,MANKEY,MACHOP,0 + db 29,MANKEY,MACHOP,0 + db 33,MACHOP,0 + db 29,MANKEY,PRIMEAPE,0 + db 29,MACHOP,MACHOKE,0 + db 33,MACHOKE,0 + db 26,MANKEY,MANKEY,MACHOKE,MACHOP,0 + db 29,PRIMEAPE,MACHOKE,0 + db 31,TENTACOOL,TENTACOOL,TENTACRUEL,0 +GamblerData: ; 3a0b3 (e:60b3) + db 18,POLIWAG,HORSEA,0 + db 18,BELLSPROUT,ODDISH,0 + db 18,VOLTORB,MAGNEMITE,0 + db 18,GROWLITHE,VULPIX,0 + db 22,POLIWAG,POLIWAG,POLIWHIRL,0 + db 22,ONIX,GEODUDE,GRAVELER,0 + db 24,GROWLITHE,VULPIX,0 +BeautyData: ; 3a0d1 (e:60d1) + db 21,ODDISH,BELLSPROUT,ODDISH,BELLSPROUT,0 + db 24,BELLSPROUT,BELLSPROUT,0 + db 26,EXEGGCUTE,0 +if _YELLOW + db 27,RATTATA,VULPIX,RATTATA,0 +else + db 27,RATTATA,PIKACHU,RATTATA,0 +endc + db 29,CLEFAIRY,MEOWTH,0 + db 35,SEAKING,0 + db 30,SHELLDER,SHELLDER,CLOYSTER,0 + db 31,POLIWAG,SEAKING,0 + db 29,PIDGEOTTO,WIGGLYTUFF,0 + db 29,BULBASAUR,IVYSAUR,0 + db 33,WEEPINBELL,BELLSPROUT,WEEPINBELL,0 + db 27,POLIWAG,GOLDEEN,SEAKING,GOLDEEN,POLIWAG,0 + db 30,GOLDEEN,SEAKING,0 + db 29,STARYU,STARYU,STARYU,0 + db 30,SEADRA,HORSEA,SEADRA,0 +PsychicData: ; 3a115 (e:6115) + db 31,KADABRA,SLOWPOKE,MR_MIME,KADABRA,0 + db 34,MR_MIME,KADABRA,0 + db 33,SLOWPOKE,SLOWPOKE,SLOWBRO,0 + db 38,SLOWBRO,0 +RockerData: ; 3a127 (e:6127) +if _YELLOW + db 20,VOLTORB,VOLTORB,VOLTORB,0 +else + db 20,VOLTORB,MAGNEMITE,VOLTORB,0 +endc + db 29,VOLTORB,ELECTRODE,0 +JugglerData: ; 3a130 (e:6130) + db 29,KADABRA,MR_MIME,0 + db 41,DROWZEE,HYPNO,KADABRA,KADABRA,0 + db 31,DROWZEE,DROWZEE,KADABRA,DROWZEE,0 + db 34,DROWZEE,HYPNO,0 + db 48,MR_MIME,0 + db 33,HYPNO,0 + db 38,HYPNO,0 + db 34,DROWZEE,KADABRA,0 +TamerData: ; 3a151 (e:6151) + db 34,SANDSLASH,ARBOK,0 + db 33,ARBOK,SANDSLASH,ARBOK,0 + db 43,RHYHORN,0 + db 39,ARBOK,TAUROS,0 + db 44,PERSIAN,GOLDUCK,0 + db 42,RHYHORN,PRIMEAPE,ARBOK,TAUROS,0 +BirdKeeperData: ; 3a16b (e:616b) + db 29,PIDGEY,PIDGEOTTO,0 + db 25,SPEAROW,PIDGEY,PIDGEY,SPEAROW,SPEAROW,0 + db 26,PIDGEY,PIDGEOTTO,SPEAROW,FEAROW,0 + db 33,FARFETCH_D,0 + db 29,SPEAROW,FEAROW,0 + db 26,PIDGEOTTO,FARFETCH_D,DODUO,PIDGEY,0 + db 28,DODRIO,DODUO,DODUO,0 + db 29,SPEAROW,FEAROW,0 + db 34,DODRIO,0 + db 26,SPEAROW,SPEAROW,FEAROW,SPEAROW,0 + db 30,FEAROW,FEAROW,PIDGEOTTO,0 + db 39,PIDGEOTTO,PIDGEOTTO,PIDGEY,PIDGEOTTO,0 + db 42,FARFETCH_D,FEAROW,0 + db 28,PIDGEY,DODUO,PIDGEOTTO,0 + db 26,PIDGEY,SPEAROW,PIDGEY,FEAROW,0 + db 29,PIDGEOTTO,FEAROW,0 + db 28,SPEAROW,DODUO,FEAROW,0 +BlackbeltData: ; 3a1be (e:61be) + db 37,HITMONLEE,HITMONCHAN,0 + db 31,MANKEY,MANKEY,PRIMEAPE,0 + db 32,MACHOP,MACHOKE,0 + db 36,PRIMEAPE,0 + db 31,MACHOP,MANKEY,PRIMEAPE,0 + db 40,MACHOP,MACHOKE,0 + db 43,MACHOKE,0 + db 38,MACHOKE,MACHOP,MACHOKE,0 + db 43,MACHOKE,MACHOP,MACHOKE,0 +Green1Data: ; 3a1e4 (e:61e4) +if _YELLOW + db 5,EEVEE,0 + db $FF,9,SPEAROW,8,EEVEE,0 + db $FF,18,SPEAROW,15,SANDSHREW,15,RATTATA,17,EEVEE,0 +else + db 5,SQUIRTLE,0 + db 5,BULBASAUR,0 + db 5,CHARMANDER,0 + db $FF,9,PIDGEY,8,SQUIRTLE,0 + db $FF,9,PIDGEY,8,BULBASAUR,0 + db $FF,9,PIDGEY,8,CHARMANDER,0 + db $FF,18,PIDGEOTTO,15,ABRA,15,RATTATA,17,SQUIRTLE,0 + db $FF,18,PIDGEOTTO,15,ABRA,15,RATTATA,17,BULBASAUR,0 + db $FF,18,PIDGEOTTO,15,ABRA,15,RATTATA,17,CHARMANDER,0 +endc +ProfOakData: ; 3a21d (e:621d) + db $FF,66,TAUROS,67,EXEGGUTOR,68,ARCANINE,69,BLASTOISE,70,GYARADOS,0 + db $FF,66,TAUROS,67,EXEGGUTOR,68,ARCANINE,69,VENUSAUR,70,GYARADOS,0 + db $FF,66,TAUROS,67,EXEGGUTOR,68,ARCANINE,69,CHARIZARD,70,GYARADOS,0 +ChiefData: ; 3a241 (e:6241) +; none +ScientistData: ; 3a241 (e:6241) + db 34,KOFFING,VOLTORB,0 + db 26,GRIMER,WEEZING,KOFFING,WEEZING,0 + db 28,MAGNEMITE,VOLTORB,MAGNETON,0 + db 29,ELECTRODE,WEEZING,0 + db 33,ELECTRODE,0 + db 26,MAGNETON,KOFFING,WEEZING,MAGNEMITE,0 + db 25,VOLTORB,KOFFING,MAGNETON,MAGNEMITE,KOFFING,0 + db 29,ELECTRODE,MUK,0 + db 29,GRIMER,ELECTRODE,0 + db 28,VOLTORB,KOFFING,MAGNETON,0 + db 29,MAGNEMITE,KOFFING,0 + db 33,MAGNEMITE,MAGNETON,VOLTORB,0 + db 34,MAGNEMITE,ELECTRODE,0 +GiovanniData: ; 3a27e (e:627e) +if _YELLOW + db $FF,25,ONIX,24,RHYHORN,29,PERSIAN,0 + db $FF,37,NIDORINO,35,PERSIAN,37,RHYHORN,41,NIDOQUEEN,0 + db $FF,50,DUGTRIO,53,PERSIAN,53,NIDOQUEEN,55,NIDOKING,55,RHYDON,0 +else + db $FF,25,ONIX,24,RHYHORN,29,KANGASKHAN,0 + db $FF,37,NIDORINO,35,KANGASKHAN,37,RHYHORN,41,NIDOQUEEN,0 + db $FF,45,RHYHORN,42,DUGTRIO,44,NIDOQUEEN,45,NIDOKING,50,RHYDON,0 +endc +RocketData: ; 3a29c (e:629c) + db 13,RATTATA,ZUBAT,0 + db 11,SANDSHREW,RATTATA,ZUBAT,0 + db 12,ZUBAT,EKANS,0 + db 16,RATICATE,0 + db 17,MACHOP,DROWZEE,0 + db 15,EKANS,ZUBAT,0 + db 20,RATICATE,ZUBAT,0 + db 21,DROWZEE,MACHOP,0 + db 21,RATICATE,RATICATE,0 + db 20,GRIMER,KOFFING,KOFFING,0 + db 19,RATTATA,RATICATE,RATICATE,RATTATA,0 + db 22,GRIMER,KOFFING,0 + db 17,ZUBAT,KOFFING,GRIMER,ZUBAT,RATICATE,0 + db 20,RATTATA,RATICATE,DROWZEE,0 + db 21,MACHOP,MACHOP,0 + db 23,SANDSHREW,EKANS,SANDSLASH,0 + db 23,EKANS,SANDSHREW,ARBOK,0 + db 21,KOFFING,ZUBAT,0 + db 25,ZUBAT,ZUBAT,GOLBAT,0 + db 26,KOFFING,DROWZEE,0 + db 23,ZUBAT,RATTATA,RATICATE,ZUBAT,0 + db 26,DROWZEE,KOFFING,0 + db 29,CUBONE,ZUBAT,0 + db 25,GOLBAT,ZUBAT,ZUBAT,RATICATE,ZUBAT,0 + db 28,RATICATE,HYPNO,RATICATE,0 + db 29,MACHOP,DROWZEE,0 + db 28,EKANS,ZUBAT,CUBONE,0 + db 33,ARBOK,0 + db 33,HYPNO,0 + db 29,MACHOP,MACHOKE,0 + db 28,ZUBAT,ZUBAT,GOLBAT,0 + db 26,RATICATE,ARBOK,KOFFING,GOLBAT,0 + db 29,CUBONE,CUBONE,0 + db 29,SANDSHREW,SANDSLASH,0 + db 26,RATICATE,ZUBAT,GOLBAT,RATTATA,0 + db 28,WEEZING,GOLBAT,KOFFING,0 + db 28,DROWZEE,GRIMER,MACHOP,0 + db 28,GOLBAT,DROWZEE,HYPNO,0 + db 33,MACHOKE,0 + db 25,RATTATA,RATTATA,ZUBAT,RATTATA,EKANS,0 + db 32,CUBONE,DROWZEE,MAROWAK,0 +if _YELLOW +JessieJamesData: + db 14,EKANS,MEOWTH,KOFFING,0 + db 25,KOFFING,MEOWTH,EKANS,0 + db 27,MEOWTH,ARBOK,WEEZING,0 + db 31,WEEZING,ARBOK,MEOWTH,0 + db 16,KOFFING,0 + db 27,KOFFING,0 + db 29,WEEZING,0 + db 33,WEEZING,0 +endc +CooltrainerMData: ; 3a35a (e:635a) + db 39,NIDORINO,NIDOKING,0 + db 43,EXEGGUTOR,CLOYSTER,ARCANINE,0 + db 43,KINGLER,TENTACRUEL,BLASTOISE,0 + db 45,KINGLER,STARMIE,0 + db 42,IVYSAUR,WARTORTLE,CHARMELEON,CHARIZARD,0 + db 44,IVYSAUR,WARTORTLE,CHARMELEON,0 + db 49,NIDOKING,0 + db 44,KINGLER,CLOYSTER,0 + db 39,SANDSLASH,DUGTRIO,0 + db 43,RHYHORN,0 +CooltrainerFData: ; 3a385 (e:6385) + db 24,WEEPINBELL,GLOOM,IVYSAUR,0 + db 43,BELLSPROUT,WEEPINBELL,VICTREEBEL,0 + db 43,PARASECT,DEWGONG,CHANSEY,0 + db 46,VILEPLUME,BUTTERFREE,0 + db 44,PERSIAN,NINETALES,0 + db 45,IVYSAUR,VENUSAUR,0 + db 45,NIDORINA,NIDOQUEEN,0 + db 43,PERSIAN,NINETALES,RAICHU,0 +BrunoData: ; 3a3a9 (e:63a9) + db $FF,53,ONIX,55,HITMONCHAN,55,HITMONLEE,56,ONIX,58,MACHAMP,0 +BrockData: ; 3a3b5 (e:63b5) +if _YELLOW + db $FF,10,GEODUDE,12,ONIX,0 +else + db $FF,12,GEODUDE,14,ONIX,0 +endc +MistyData: ; 3a3bb (e:63bb) + db $FF,18,STARYU,21,STARMIE,0 +LtSurgeData: ; 3a3c1 (e:63c1) +if _YELLOW + db $FF,28,RAICHU,0 +else + db $FF,21,VOLTORB,18,PIKACHU,24,RAICHU,0 +endc +ErikaData: ; 3a3c9 (e:63c9) +if _YELLOW + db $FF,30,TANGELA,32,WEEPINBELL,32,GLOOM,0 +else + db $FF,29,VICTREEBEL,24,TANGELA,29,VILEPLUME,0 +endc +KogaData: ; 3a3d1 (e:63d1) +if _YELLOW + db $FF,44,VENONAT,46,VENONAT,48,VENONAT,50,VENOMOTH,0 +else + db $FF,37,KOFFING,39,MUK,37,KOFFING,43,WEEZING,0 +endc +BlaineData: ; 3a3db (e:63db) +if _YELLOW + db $FF,48,NINETALES,50,RAPIDASH,54,ARCANINE,0 +else + db $FF,42,GROWLITHE,40,PONYTA,42,RAPIDASH,47,ARCANINE,0 +endc +SabrinaData: ; 3a3e5 (e:63e5) +if _YELLOW + db $FF,50,ABRA,50,KADABRA,50,ALAKAZAM,0 +else + db $FF,38,KADABRA,37,MR_MIME,38,VENOMOTH,43,ALAKAZAM,0 +endc +GentlemanData: ; 3a3ef (e:63ef) + db 18,GROWLITHE,GROWLITHE,0 + db 19,NIDORAN_M,NIDORAN_F,0 +if _YELLOW + db 22,VOLTORB,MAGNEMITE,0 +else + db 23,PIKACHU,0 +endc + db 48,PRIMEAPE,0 + db 17,GROWLITHE,PONYTA,0 +Green2Data: ; 3a401 (e:6401) +if _YELLOW + db $FF,19,SPEAROW,16,RATTATA,18,SANDSHREW,20,EEVEE,0 + db $FF,25,FEAROW,23,SHELLDER,22,VULPIX,20,SANDSHREW,25,EEVEE,0 + db $FF,25,FEAROW,23,MAGNEMITE,22,SHELLDER,20,SANDSHREW,25,EEVEE,0 + db $FF,25,FEAROW,23,VULPIX,22,MAGNEMITE,20,SANDSHREW,25,EEVEE,0 + db $FF,38,SANDSLASH,35,NINETALES,37,CLOYSTER,35,KADABRA,40,JOLTEON,0 + db $FF,38,SANDSLASH,35,CLOYSTER,37,MAGNETON,35,KADABRA,40,FLAREON,0 + db $FF,38,SANDSLASH,35,MAGNETON,37,NINETALES,35,KADABRA,40,VAPOREON,0 + db $FF,47,SANDSLASH,45,EXEGGCUTE,45,NINETALES,47,CLOYSTER,50,KADABRA,53,JOLTEON,0 + db $FF,47,SANDSLASH,45,EXEGGCUTE,45,CLOYSTER,47,MAGNETON,50,KADABRA,53,FLAREON,0 + db $FF,47,SANDSLASH,45,EXEGGCUTE,45,MAGNETON,47,NINETALES,50,KADABRA,53,VAPOREON,0 +else + db $FF,19,PIDGEOTTO,16,RATICATE,18,KADABRA,20,WARTORTLE,0 + db $FF,19,PIDGEOTTO,16,RATICATE,18,KADABRA,20,IVYSAUR,0 + db $FF,19,PIDGEOTTO,16,RATICATE,18,KADABRA,20,CHARMELEON,0 + db $FF,25,PIDGEOTTO,23,GROWLITHE,22,EXEGGCUTE,20,KADABRA,25,WARTORTLE,0 + db $FF,25,PIDGEOTTO,23,GYARADOS,22,GROWLITHE,20,KADABRA,25,IVYSAUR,0 + db $FF,25,PIDGEOTTO,23,EXEGGCUTE,22,GYARADOS,20,KADABRA,25,CHARMELEON,0 + db $FF,37,PIDGEOT,38,GROWLITHE,35,EXEGGCUTE,35,ALAKAZAM,40,BLASTOISE,0 + db $FF,37,PIDGEOT,38,GYARADOS,35,GROWLITHE,35,ALAKAZAM,40,VENUSAUR,0 + db $FF,37,PIDGEOT,38,EXEGGCUTE,35,GYARADOS,35,ALAKAZAM,40,CHARIZARD,0 + db $FF,47,PIDGEOT,45,RHYHORN,45,GROWLITHE,47,EXEGGCUTE,50,ALAKAZAM,53,BLASTOISE,0 + db $FF,47,PIDGEOT,45,RHYHORN,45,GYARADOS,47,GROWLITHE,50,ALAKAZAM,53,VENUSAUR,0 + db $FF,47,PIDGEOT,45,RHYHORN,45,EXEGGCUTE,47,GYARADOS,50,ALAKAZAM,53,CHARIZARD,0 +endc +Green3Data: ; 3a491 (e:6491) +if _YELLOW + db $FF,61,SANDSLASH,59,ALAKAZAM,61,EXEGGUTOR,61,CLOYSTER,63,NINETALES,65,JOLTEON,0 + db $FF,61,SANDSLASH,59,ALAKAZAM,61,EXEGGUTOR,61,MAGNETON,63,CLOYSTER,65,FLAREON,0 + db $FF,61,SANDSLASH,59,ALAKAZAM,61,EXEGGUTOR,61,NINETALES,63,MAGNETON,65,VAPOREON,0 +else + db $FF,61,PIDGEOT,59,ALAKAZAM,61,RHYDON,61,ARCANINE,63,EXEGGUTOR,65,BLASTOISE,0 + db $FF,61,PIDGEOT,59,ALAKAZAM,61,RHYDON,61,GYARADOS,63,ARCANINE,65,VENUSAUR,0 + db $FF,61,PIDGEOT,59,ALAKAZAM,61,RHYDON,61,EXEGGUTOR,63,GYARADOS,65,CHARIZARD,0 +endc +LoreleiData: ; 3a4bb (e:64bb) + db $FF,54,DEWGONG,53,CLOYSTER,54,SLOWBRO,56,JYNX,56,LAPRAS,0 +ChannelerData: ; 3a4c7 (e:64c7) + db 22,GASTLY,0 + db 24,GASTLY,0 + db 23,GASTLY,GASTLY,0 + db 24,GASTLY,0 + db 23,GASTLY,0 + db 24,GASTLY,0 + db 24,HAUNTER,0 + db 22,GASTLY,0 + db 24,GASTLY,0 + db 23,GASTLY,GASTLY,0 + db 24,GASTLY,0 + db 22,GASTLY,0 + db 24,GASTLY,0 + db 23,HAUNTER,0 + db 24,GASTLY,0 + db 22,GASTLY,0 + db 24,GASTLY,0 + db 22,HAUNTER,0 + db 22,GASTLY,GASTLY,GASTLY,0 + db 24,GASTLY,0 + db 24,GASTLY,0 + db 34,GASTLY,HAUNTER,0 + db 38,HAUNTER,0 + db 33,GASTLY,GASTLY,HAUNTER,0 +AgathaData: ; 3a516 (e:6516) + db $FF,56,GENGAR,56,GOLBAT,55,HAUNTER,58,ARBOK,60,GENGAR,0 +LanceData: ; 3a522 (e:6522) + db $FF,58,GYARADOS,56,DRAGONAIR,56,DRAGONAIR,60,AERODACTYL,62,DRAGONITE,0 \ No newline at end of file diff --git a/data/trainer_types.asm b/data/trainer_types.asm new file mode 100755 index 00000000..c92bb634 --- /dev/null +++ b/data/trainer_types.asm @@ -0,0 +1,17 @@ +FemaleTrainerList:: ; 3434 (0:3434) + db $c8+LASS + db $c8+JR__TRAINER_F + db $c8+BEAUTY + db $c8+COOLTRAINER_F + db $FF + +EvilTrainerList:: ; 3439 (0:3439) + db $c8+JUGGLER_X + db $c8+GAMBLER + db $c8+ROCKER + db $c8+JUGGLER + db $c8+CHIEF + db $c8+SCIENTIST + db $c8+GIOVANNI + db $c8+ROCKET + db $FF \ No newline at end of file diff --git a/data/type_effects.asm b/data/type_effects.asm new file mode 100755 index 00000000..c6d7e90a --- /dev/null +++ b/data/type_effects.asm @@ -0,0 +1,89 @@ +TypeEffects: ; 3e474 (f:6474) +; format: attacking type, defending type, damage multiplier +; the multiplier is a (decimal) fixed-point number: +; 20 is ×2.0 +; 05 is ×0.5 +; 00 is ×0 + db WATER,FIRE,20 + db FIRE,GRASS,20 + db FIRE,ICE,20 + db GRASS,WATER,20 + db ELECTRIC,WATER,20 + db WATER,ROCK,20 + db GROUND,FLYING,00 + db WATER,WATER,05 + db FIRE,FIRE,05 + db ELECTRIC,ELECTRIC,05 + db ICE,ICE,05 + db GRASS,GRASS,05 + db PSYCHIC,PSYCHIC,05 + db FIRE,WATER,05 + db GRASS,FIRE,05 + db WATER,GRASS,05 + db ELECTRIC,GRASS,05 + db NORMAL,ROCK,05 + db NORMAL,GHOST,00 + db GHOST,GHOST,20 + db FIRE,BUG,20 + db FIRE,ROCK,05 + db WATER,GROUND,20 + db ELECTRIC,GROUND,00 + db ELECTRIC,FLYING,20 + db GRASS,GROUND,20 + db GRASS,BUG,05 + db GRASS,POISON,05 + db GRASS,ROCK,20 + db GRASS,FLYING,05 + db ICE,WATER,05 + db ICE,GRASS,20 + db ICE,GROUND,20 + db ICE,FLYING,20 + db FIGHTING,NORMAL,20 + db FIGHTING,POISON,05 + db FIGHTING,FLYING,05 + db FIGHTING,PSYCHIC,05 + db FIGHTING,BUG,05 + db FIGHTING,ROCK,20 + db FIGHTING,ICE,20 + db FIGHTING,GHOST,00 + db POISON,GRASS,20 + db POISON,POISON,05 + db POISON,GROUND,05 + db POISON,BUG,20 + db POISON,ROCK,05 + db POISON,GHOST,05 + db GROUND,FIRE,20 + db GROUND,ELECTRIC,20 + db GROUND,GRASS,05 + db GROUND,BUG,05 + db GROUND,ROCK,20 + db GROUND,POISON,20 + db FLYING,ELECTRIC,05 + db FLYING,FIGHTING,20 + db FLYING,BUG,20 + db FLYING,GRASS,20 + db FLYING,ROCK,05 + db PSYCHIC,FIGHTING,20 + db PSYCHIC,POISON,20 + db BUG,FIRE,05 + db BUG,GRASS,20 + db BUG,FIGHTING,05 + db BUG,FLYING,05 + db BUG,PSYCHIC,20 + db BUG,GHOST,05 + db BUG,POISON,20 + db ROCK,FIRE,20 + db ROCK,FIGHTING,05 + db ROCK,GROUND,05 + db ROCK,FLYING,20 + db ROCK,BUG,20 + db ROCK,ICE,20 + db GHOST,NORMAL,00 + db GHOST,PSYCHIC,00 + db FIRE,DRAGON,05 + db WATER,DRAGON,05 + db ELECTRIC,DRAGON,05 + db GRASS,DRAGON,05 + db ICE,DRAGON,20 + db DRAGON,DRAGON,20 + db $FF \ No newline at end of file diff --git a/data/wild_mons.asm b/data/wild_mons.asm new file mode 100755 index 00000000..1f9b14f0 --- /dev/null +++ b/data/wild_mons.asm @@ -0,0 +1,3810 @@ +WildDataPointers: ; ceeb (3:4eeb) + dw NoMons ; PALLET_TOWN + dw NoMons ; VIRIDIAN_CITY + dw NoMons ; PEWTER_CITY + dw NoMons ; CERULEAN_CITY + dw NoMons ; LAVENDER_TOWN + dw NoMons ; VERMILION_CITY + dw NoMons ; CELADON_CITY + dw NoMons ; FUCHSIA_CITY + dw NoMons ; CINNABAR_ISLAND + dw NoMons ; INDIGO_PLATEAU + dw NoMons ; SAFFRON_CITY + dw NoMons ; unused + dw Route1Mons ; ROUTE_1 + dw Route2Mons ; ROUTE_2 + dw Route3Mons ; ROUTE_3 + dw Route4Mons ; ROUTE_4 + dw Route5Mons ; ROUTE_5 + dw Route6Mons ; ROUTE_6 + dw Route7Mons ; ROUTE_7 + dw Route8Mons ; ROUTE_8 + dw Route9Mons ; ROUTE_9 + dw Route10Mons ; ROUTE_10 + dw Route11Mons ; ROUTE_11 + dw Route12Mons ; ROUTE_12 + dw Route13Mons ; ROUTE_13 + dw Route14Mons ; ROUTE_14 + dw Route15Mons ; ROUTE_15 + dw Route16Mons ; ROUTE_16 + dw Route17Mons ; ROUTE_17 + dw Route18Mons ; ROUTE_18 + dw WaterMons ; ROUTE_19 + dw WaterMons ; ROUTE_20 + dw Route21Mons ; ROUTE_21 + dw Route22Mons ; ROUTE_22 + dw Route23Mons ; ROUTE_23 + dw Route24Mons ; ROUTE_24 + dw Route25Mons ; ROUTE_25 + dw NoMons ; REDS_HOUSE_1F + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw ForestMons ; ViridianForest + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw MoonMons1 + dw MoonMonsB1 + dw MoonMonsB2 + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw TunnelMonsB1 + dw PowerPlantMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw PlateauMons1 + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw TowerMons1 + dw TowerMons2 + dw TowerMons3 + dw TowerMons4 + dw TowerMons5 + dw TowerMons6 + dw TowerMons7 + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw IslandMonsB1 + dw IslandMonsB2 + dw IslandMonsB3 + dw IslandMonsB4 + dw NoMons + dw NoMons + dw MansionMons1 + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw IslandMons1 + dw NoMons + dw PlateauMons2 + dw NoMons + dw NoMons + dw CaveMons + dw PlateauMons3 + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw MansionMons2 + dw MansionMons3 + dw MansionMonsB1 + dw ZoneMons1 + dw ZoneMons2 + dw ZoneMons3 + dw ZoneMonsCenter + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw DungeonMons2 + dw DungeonMonsB1 + dw DungeonMons1 + dw NoMons + dw NoMons + dw NoMons + dw TunnelMonsB2 + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw NoMons + dw $FFFF + +; wild pokemon data is divided into two parts. +; first part: pokemon found in grass +; second part: pokemon found while surfing +; each part goes as follows: + ; if first byte == 00, then + ; no wild pokemon on this map + ; if first byte != 00, then + ; first byte is encounter rate + ; followed by 20 bytes: + ; level, species (ten times) + +IF _RED +NoMons: ; d0dd (3:50dd) + db $00 + + db $00 + +Route1Mons: ; d0df (3:50df) + db $19 + db 3,PIDGEY + db 3,RATTATA + db 3,RATTATA + db 2,RATTATA + db 2,PIDGEY + db 3,PIDGEY + db 3,PIDGEY + db 4,RATTATA + db 4,PIDGEY + db 5,PIDGEY + + db $00 + +Route2Mons: ; d0f5 (3:50f5) + db $19 + db 3,RATTATA + db 3,PIDGEY + db 4,PIDGEY + db 4,RATTATA + db 5,PIDGEY + db 3,WEEDLE + db 2,RATTATA + db 5,RATTATA + db 4,WEEDLE + db 5,WEEDLE + + db $00 + +Route22Mons: ; d10b (3:510b) + db $19 + db 3,RATTATA + db 3,NIDORAN_M + db 4,RATTATA + db 4,NIDORAN_M + db 2,RATTATA + db 2,NIDORAN_M + db 3,SPEAROW + db 5,SPEAROW + db 3,NIDORAN_F + db 4,NIDORAN_F + + db $00 + +ForestMons: ; d121 (3:5121) + db $08 + db 4,WEEDLE + db 5,KAKUNA + db 3,WEEDLE + db 5,WEEDLE + db 4,KAKUNA + db 6,KAKUNA + db 4,METAPOD + db 3,CATERPIE + db 3,PIKACHU + db 5,PIKACHU + + db $00 + +Route3Mons: ; d137 (3:5137) + db $14 + db 6,PIDGEY + db 5,SPEAROW + db 7,PIDGEY + db 6,SPEAROW + db 7,SPEAROW + db 8,PIDGEY + db 8,SPEAROW + db 3,JIGGLYPUFF + db 5,JIGGLYPUFF + db 7,JIGGLYPUFF + + db $00 + +MoonMons1: ; d14d (3:514d) + db $0A + db 8,ZUBAT + db 7,ZUBAT + db 9,ZUBAT + db 8,GEODUDE + db 6,ZUBAT + db 10,ZUBAT + db 10,GEODUDE + db 8,PARAS + db 11,ZUBAT + db 8,CLEFAIRY + + db $00 + +MoonMonsB1: ; d163 (3:5163) + db $0A + db 8,ZUBAT + db 7,ZUBAT + db 7,GEODUDE + db 8,GEODUDE + db 9,ZUBAT + db 10,PARAS + db 10,ZUBAT + db 11,ZUBAT + db 9,CLEFAIRY + db 9,GEODUDE + + db $00 + +MoonMonsB2: ; d179 (3:5179) + db $0A + db 9,ZUBAT + db 9,GEODUDE + db 10,ZUBAT + db 10,GEODUDE + db 11,ZUBAT + db 10,PARAS + db 12,PARAS + db 10,CLEFAIRY + db 12,ZUBAT + db 12,CLEFAIRY + + db $00 + +Route4Mons: ; d18f (3:518f) + db $14 + db 10,RATTATA + db 10,SPEAROW + db 8,RATTATA + db 6,EKANS + db 8,SPEAROW + db 10,EKANS + db 12,RATTATA + db 12,SPEAROW + db 8,EKANS + db 12,EKANS + + db $00 + +Route24Mons: ; d1a5 (3:51a5) + db $19 + db 7,WEEDLE + db 8,KAKUNA + db 12,PIDGEY + db 12,ODDISH + db 13,ODDISH + db 10,ABRA + db 14,ODDISH + db 13,PIDGEY + db 8,ABRA + db 12,ABRA + + db $00 + +Route25Mons: ; d1bb (3:51bb) + db $0F + db 8,WEEDLE + db 9,KAKUNA + db 13,PIDGEY + db 12,ODDISH + db 13,ODDISH + db 12,ABRA + db 14,ODDISH + db 10,ABRA + db 7,METAPOD + db 8,CATERPIE + + db $00 + +Route9Mons: ; d1d1 (3:51d1) + db $0F + db 16,RATTATA + db 16,SPEAROW + db 14,RATTATA + db 11,EKANS + db 13,SPEAROW + db 15,EKANS + db 17,RATTATA + db 17,SPEAROW + db 13,EKANS + db 17,EKANS + + db $00 + +Route5Mons: ; d1e7 (3:51e7) + db $0F + db 13,ODDISH + db 13,PIDGEY + db 15,PIDGEY + db 10,MANKEY + db 12,MANKEY + db 15,ODDISH + db 16,ODDISH + db 16,PIDGEY + db 14,MANKEY + db 16,MANKEY + + db $00 + +Route6Mons: ; d1fd (3:51fd) + db $0F + db 13,ODDISH + db 13,PIDGEY + db 15,PIDGEY + db 10,MANKEY + db 12,MANKEY + db 15,ODDISH + db 16,ODDISH + db 16,PIDGEY + db 14,MANKEY + db 16,MANKEY + + db $00 + +Route11Mons: ; d213 (3:5213) + db $0F + db 14,EKANS + db 15,SPEAROW + db 12,EKANS + db 9,DROWZEE + db 13,SPEAROW + db 13,DROWZEE + db 15,EKANS + db 17,SPEAROW + db 11,DROWZEE + db 15,DROWZEE + + db $00 + +TunnelMonsB1: ; d229 (3:5229) + db $0F + db 16,ZUBAT + db 17,ZUBAT + db 17,GEODUDE + db 15,MACHOP + db 16,GEODUDE + db 18,ZUBAT + db 15,ZUBAT + db 17,MACHOP + db 13,ONIX + db 15,ONIX + + db $00 + +TunnelMonsB2: ; d23f (3:523f) + db $0F + db 16,ZUBAT + db 17,ZUBAT + db 17,GEODUDE + db 15,MACHOP + db 16,GEODUDE + db 18,ZUBAT + db 17,MACHOP + db 17,ONIX + db 13,ONIX + db 18,GEODUDE + + db $00 + +Route10Mons: ; d255 (3:5255) + db $0F + db 16,VOLTORB + db 16,SPEAROW + db 14,VOLTORB + db 11,EKANS + db 13,SPEAROW + db 15,EKANS + db 17,VOLTORB + db 17,SPEAROW + db 13,EKANS + db 17,EKANS + + db $00 + +Route12Mons: ; d26b (3:526b) + db $0F + db 24,ODDISH + db 25,PIDGEY + db 23,PIDGEY + db 24,VENONAT + db 22,ODDISH + db 26,VENONAT + db 26,ODDISH + db 27,PIDGEY + db 28,GLOOM + db 30,GLOOM + + db $00 + +Route8Mons: ; d281 (3:5281) + db $0F + db 18,PIDGEY + db 18,MANKEY + db 17,EKANS + db 16,GROWLITHE + db 20,PIDGEY + db 20,MANKEY + db 19,EKANS + db 17,GROWLITHE + db 15,GROWLITHE + db 18,GROWLITHE + + db $00 + +Route7Mons: ; d297 (3:5297) + db $0F + db 19,PIDGEY + db 19,ODDISH + db 17,MANKEY + db 22,ODDISH + db 22,PIDGEY + db 18,MANKEY + db 18,GROWLITHE + db 20,GROWLITHE + db 19,MANKEY + db 20,MANKEY + + db $00 + +TowerMons1: ; d2ad (3:52ad) + db $00 + + db $00 + +TowerMons2: ; d2af (3:52af) + db $00 + + db $00 + +TowerMons3: ; d2b1 (3:52b1) + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 19,GASTLY + db 18,GASTLY + db 24,GASTLY + db 20,CUBONE + db 22,CUBONE + db 25,HAUNTER + + db $00 + +TowerMons4: ; d2c7 (3:52c7) + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 19,GASTLY + db 18,GASTLY + db 25,HAUNTER + db 20,CUBONE + db 22,CUBONE + db 24,GASTLY + + db $00 + +TowerMons5: ; d2dd (3:52dd) + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 19,GASTLY + db 18,GASTLY + db 25,HAUNTER + db 20,CUBONE + db 22,CUBONE + db 24,GASTLY + + db $00 + +TowerMons6: ; d2f3 (3:52f3) + db $0F + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 24,GASTLY + db 20,GASTLY + db 19,GASTLY + db 26,HAUNTER + db 22,CUBONE + db 24,CUBONE + db 28,HAUNTER + + db $00 + +TowerMons7: ; d309 (3:5309) + db $0F + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 24,GASTLY + db 20,GASTLY + db 28,HAUNTER + db 22,CUBONE + db 24,CUBONE + db 28,HAUNTER + db 30,HAUNTER + + db $00 + +Route13Mons: ; d31f (3:531f) + db $14 + db 24,ODDISH + db 25,PIDGEY + db 27,PIDGEY + db 24,VENONAT + db 22,ODDISH + db 26,VENONAT + db 26,ODDISH + db 25,DITTO + db 28,GLOOM + db 30,GLOOM + + db $00 + +Route14Mons: ; d335 (3:5335) + db $0F + db 24,ODDISH + db 26,PIDGEY + db 23,DITTO + db 24,VENONAT + db 22,ODDISH + db 26,VENONAT + db 26,ODDISH + db 30,GLOOM + db 28,PIDGEOTTO + db 30,PIDGEOTTO + + db $00 + +Route15Mons: ; d34b (3:534b) + db $0F + db 24,ODDISH + db 26,DITTO + db 23,PIDGEY + db 26,VENONAT + db 22,ODDISH + db 28,VENONAT + db 26,ODDISH + db 30,GLOOM + db 28,PIDGEOTTO + db 30,PIDGEOTTO + + db $00 + +Route16Mons: ; d361 (3:5361) + db $19 + db 20,SPEAROW + db 22,SPEAROW + db 18,RATTATA + db 20,DODUO + db 20,RATTATA + db 18,DODUO + db 22,DODUO + db 22,RATTATA + db 23,RATICATE + db 25,RATICATE + + db $00 + +Route17Mons: ; d377 (3:5377) + db $19 + db 20,SPEAROW + db 22,SPEAROW + db 25,RATICATE + db 24,DODUO + db 27,RATICATE + db 26,DODUO + db 28,DODUO + db 29,RATICATE + db 25,FEAROW + db 27,FEAROW + + db $00 + +Route18Mons: ; d38d (3:538d) + db $19 + db 20,SPEAROW + db 22,SPEAROW + db 25,RATICATE + db 24,DODUO + db 25,FEAROW + db 26,DODUO + db 28,DODUO + db 29,RATICATE + db 27,FEAROW + db 29,FEAROW + + db $00 + +ZoneMonsCenter: ; d3a3 (3:53a3) + db $1E + db 22,NIDORAN_M + db 25,RHYHORN + db 22,VENONAT + db 24,EXEGGCUTE + db 31,NIDORINO + db 25,EXEGGCUTE + db 31,NIDORINA + db 30,PARASECT + db 23,SCYTHER + db 23,CHANSEY + + db $00 + +ZoneMons1: ; d3b9 (3:53b9) + db $1E + db 24,NIDORAN_M + db 26,DODUO + db 22,PARAS + db 25,EXEGGCUTE + db 33,NIDORINO + db 23,EXEGGCUTE + db 24,NIDORAN_F + db 25,PARASECT + db 25,KANGASKHAN + db 28,SCYTHER + + db $00 + +ZoneMons2: ; d3cf (3:53cf) + db $1E + db 22,NIDORAN_M + db 26,RHYHORN + db 23,PARAS + db 25,EXEGGCUTE + db 30,NIDORINO + db 27,EXEGGCUTE + db 30,NIDORINA + db 32,VENOMOTH + db 26,CHANSEY + db 28,TAUROS + + db $00 + +ZoneMons3: ; d3e5 (3:53e5) + db $1E + db 25,NIDORAN_M + db 26,DODUO + db 23,VENONAT + db 24,EXEGGCUTE + db 33,NIDORINO + db 26,EXEGGCUTE + db 25,NIDORAN_F + db 31,VENOMOTH + db 26,TAUROS + db 28,KANGASKHAN + + db $00 + +WaterMons: ; d3fb (3:53fb) + db $00 + + db $05 + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 20,TENTACOOL + db 30,TENTACOOL + db 35,TENTACOOL + db 40,TENTACOOL + +IslandMons1: ; d411 (3:5411) + db $0F + db 30,SEEL + db 30,SLOWPOKE + db 30,SHELLDER + db 30,HORSEA + db 28,HORSEA + db 21,ZUBAT + db 29,GOLBAT + db 28,PSYDUCK + db 28,SHELLDER + db 38,GOLDUCK + + db $00 + +IslandMonsB1: ; d427 (3:5427) + db $0A + db 30,STARYU + db 30,HORSEA + db 32,SHELLDER + db 32,HORSEA + db 28,SLOWPOKE + db 30,SEEL + db 30,SLOWPOKE + db 28,SEEL + db 38,DEWGONG + db 37,SEADRA + + db $00 + +IslandMonsB2: ; d43d (3:543d) + db $0A + db 30,SEEL + db 30,SLOWPOKE + db 32,SEEL + db 32,SLOWPOKE + db 28,HORSEA + db 30,STARYU + db 30,HORSEA + db 28,SHELLDER + db 30,GOLBAT + db 37,SLOWBRO + + db $00 + +IslandMonsB3: ; d453 (3:5453) + db $0A + db 31,SLOWPOKE + db 31,SEEL + db 33,SLOWPOKE + db 33,SEEL + db 29,HORSEA + db 31,SHELLDER + db 31,HORSEA + db 29,SHELLDER + db 39,SEADRA + db 37,DEWGONG + + db $00 + +IslandMonsB4: ; d469 (3:5469) + db $0A + db 31,HORSEA + db 31,SHELLDER + db 33,HORSEA + db 33,SHELLDER + db 29,SLOWPOKE + db 31,SEEL + db 31,SLOWPOKE + db 29,SEEL + db 39,SLOWBRO + db 32,GOLBAT + + db $00 + +MansionMons1: ; d47f (3:547f) + db $0A + db 32,KOFFING + db 30,KOFFING + db 34,PONYTA + db 30,PONYTA + db 34,GROWLITHE + db 32,PONYTA + db 30,GRIMER + db 28,PONYTA + db 37,WEEZING + db 39,MUK + + db $00 + +MansionMons2: ; d495 (3:5495) + db $0A + db 32,GROWLITHE + db 34,KOFFING + db 34,KOFFING + db 30,PONYTA + db 30,KOFFING + db 32,PONYTA + db 30,GRIMER + db 28,PONYTA + db 39,WEEZING + db 37,MUK + + db $00 + +MansionMons3: ; d4ab (3:54ab) + db $0A + db 31,KOFFING + db 33,GROWLITHE + db 35,KOFFING + db 32,PONYTA + db 34,PONYTA + db 40,WEEZING + db 34,GRIMER + db 38,WEEZING + db 36,PONYTA + db 42,MUK + + db $00 + +MansionMonsB1: ; d4c1 (3:54c1) + db $0A + db 33,KOFFING + db 31,KOFFING + db 35,GROWLITHE + db 32,PONYTA + db 31,KOFFING + db 40,WEEZING + db 34,PONYTA + db 35,GRIMER + db 42,WEEZING + db 42,MUK + + db $00 + +Route21Mons: ; d4d7 (3:54d7) + db $19 + db 21,RATTATA + db 23,PIDGEY + db 30,RATICATE + db 23,RATTATA + db 21,PIDGEY + db 30,PIDGEOTTO + db 32,PIDGEOTTO + db 28,TANGELA + db 30,TANGELA + db 32,TANGELA + + db $05 + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 20,TENTACOOL + db 30,TENTACOOL + db 35,TENTACOOL + db 40,TENTACOOL + +DungeonMons1: ; d501 (3:5501) + db $0A + db 46,GOLBAT + db 46,HYPNO + db 46,MAGNETON + db 49,DODRIO + db 49,VENOMOTH + db 52,ARBOK + db 49,KADABRA + db 52,PARASECT + db 53,RAICHU + db 53,DITTO + + db $00 + +DungeonMons2: ; d517 (3:5517) + db $0F + db 51,DODRIO + db 51,VENOMOTH + db 51,KADABRA + db 52,RHYDON + db 52,MAROWAK + db 52,ELECTRODE + db 56,CHANSEY + db 54,WIGGLYTUFF + db 55,DITTO + db 60,DITTO + + db $00 + +DungeonMonsB1: ; d52d (3:552d) + db $19 + db 55,RHYDON + db 55,MAROWAK + db 55,ELECTRODE + db 64,CHANSEY + db 64,PARASECT + db 64,RAICHU + db 57,ARBOK + db 65,DITTO + db 63,DITTO + db 67,DITTO + + db $00 + +PowerPlantMons: ; d543 (3:5543) + db $0A + db 21,VOLTORB + db 21,MAGNEMITE + db 20,PIKACHU + db 24,PIKACHU + db 23,MAGNEMITE + db 23,VOLTORB + db 32,MAGNETON + db 35,MAGNETON + db 33,ELECTABUZZ + db 36,ELECTABUZZ + + db $00 + +Route23Mons: ; d559 (3:5559) + db $0A + db 26,EKANS + db 33,DITTO + db 26,SPEAROW + db 38,FEAROW + db 38,DITTO + db 38,FEAROW + db 41,ARBOK + db 43,DITTO + db 41,FEAROW + db 43,FEAROW + + db $00 + +PlateauMons2: ; d56f (3:556f) + db $0A + db 22,MACHOP + db 24,GEODUDE + db 26,ZUBAT + db 36,ONIX + db 39,ONIX + db 42,ONIX + db 41,MACHOKE + db 40,GOLBAT + db 40,MAROWAK + db 43,GRAVELER + + db $00 + +PlateauMons3: ; d585 (3:5585) + db $0F + db 24,MACHOP + db 26,GEODUDE + db 22,ZUBAT + db 42,ONIX + db 40,VENOMOTH + db 45,ONIX + db 43,GRAVELER + db 41,GOLBAT + db 42,MACHOKE + db 45,MACHOKE + + db $00 + +PlateauMons1: ; d59b (3:559b) + db $0F + db 24,MACHOP + db 26,GEODUDE + db 22,ZUBAT + db 36,ONIX + db 39,ONIX + db 42,ONIX + db 41,GRAVELER + db 41,GOLBAT + db 42,MACHOKE + db 43,MAROWAK + + db $00 + +CaveMons: ; d5b1 (3:55b1) + db $14 + db 18,DIGLETT + db 19,DIGLETT + db 17,DIGLETT + db 20,DIGLETT + db 16,DIGLETT + db 15,DIGLETT + db 21,DIGLETT + db 22,DIGLETT + db 29,DUGTRIO + db 31,DUGTRIO + + db $00 + +ENDC +IF _GREEN || !_JAPAN && _BLUE +NoMons: ; d0dd (3:50dd) + db $00 + + db $00 + +Route1Mons: ; d0df (3:50df) + db $19 + db 3,PIDGEY + db 3,RATTATA + db 3,RATTATA + db 2,RATTATA + db 2,PIDGEY + db 3,PIDGEY + db 3,PIDGEY + db 4,RATTATA + db 4,PIDGEY + db 5,PIDGEY + + db $00 + +Route2Mons: ; d0f5 (3:50f5) + db $19 + db 3,RATTATA + db 3,PIDGEY + db 4,PIDGEY + db 4,RATTATA + db 5,PIDGEY + db 3,CATERPIE + db 2,RATTATA + db 5,RATTATA + db 4,CATERPIE + db 5,CATERPIE + + db $00 + +Route22Mons: ; d10b (3:510b) + db $19 + db 3,RATTATA + db 3,NIDORAN_F + db 4,RATTATA + db 4,NIDORAN_F + db 2,RATTATA + db 2,NIDORAN_F + db 3,SPEAROW + db 5,SPEAROW + db 3,NIDORAN_M + db 4,NIDORAN_M + + db $00 + +ForestMons: ; d121 (3:5121) + db $08 + db 4,CATERPIE + db 5,METAPOD + db 3,CATERPIE + db 5,CATERPIE + db 4,METAPOD + db 6,METAPOD + db 4,KAKUNA + db 3,WEEDLE + db 3,PIKACHU + db 5,PIKACHU + + db $00 + +Route3Mons: ; d137 (3:5137) + db $14 + db 6,PIDGEY + db 5,SPEAROW + db 7,PIDGEY + db 6,SPEAROW + db 7,SPEAROW + db 8,PIDGEY + db 8,SPEAROW + db 3,JIGGLYPUFF + db 5,JIGGLYPUFF + db 7,JIGGLYPUFF + + db $00 + +MoonMons1: ; d14d (3:514d) + db $0A + db 8,ZUBAT + db 7,ZUBAT + db 9,ZUBAT + db 8,GEODUDE + db 6,ZUBAT + db 10,ZUBAT + db 10,GEODUDE + db 8,PARAS + db 11,ZUBAT + db 8,CLEFAIRY + + db $00 + +MoonMonsB1: ; d163 (3:5163) + db $0A + db 8,ZUBAT + db 7,ZUBAT + db 7,GEODUDE + db 8,GEODUDE + db 9,ZUBAT + db 10,PARAS + db 10,ZUBAT + db 11,ZUBAT + db 9,CLEFAIRY + db 9,GEODUDE + + db $00 + +MoonMonsB2: ; d179 (3:5179) + db $0A + db 9,ZUBAT + db 9,GEODUDE + db 10,ZUBAT + db 10,GEODUDE + db 11,ZUBAT + db 10,PARAS + db 12,PARAS + db 10,CLEFAIRY + db 12,ZUBAT + db 12,CLEFAIRY + + db $00 + +Route4Mons: ; d18f (3:518f) + db $14 + db 10,RATTATA + db 10,SPEAROW + db 8,RATTATA + db 6,SANDSHREW + db 8,SPEAROW + db 10,SANDSHREW + db 12,RATTATA + db 12,SPEAROW + db 8,SANDSHREW + db 12,SANDSHREW + + db $00 + +Route24Mons: ; d1a5 (3:51a5) + db $19 + db 7,CATERPIE + db 8,METAPOD + db 12,PIDGEY + db 12,BELLSPROUT + db 13,BELLSPROUT + db 10,ABRA + db 14,BELLSPROUT + db 13,PIDGEY + db 8,ABRA + db 12,ABRA + + db $00 + +Route25Mons: ; d1bb (3:51bb) + db $0F + db 8,CATERPIE + db 9,METAPOD + db 13,PIDGEY + db 12,BELLSPROUT + db 13,BELLSPROUT + db 12,ABRA + db 14,BELLSPROUT + db 10,ABRA + db 7,KAKUNA + db 8,WEEDLE + + db $00 + +Route9Mons: ; d1d1 (3:51d1) + db $0F + db 16,RATTATA + db 16,SPEAROW + db 14,RATTATA + db 11,SANDSHREW + db 13,SPEAROW + db 15,SANDSHREW + db 17,RATTATA + db 17,SPEAROW + db 13,SANDSHREW + db 17,SANDSHREW + + db $00 + +Route5Mons: ; d1e7 (3:51e7) + db $0F + db 13,BELLSPROUT + db 13,PIDGEY + db 15,PIDGEY + db 10,MEOWTH + db 12,MEOWTH + db 15,BELLSPROUT + db 16,BELLSPROUT + db 16,PIDGEY + db 14,MEOWTH + db 16,MEOWTH + + db $00 + +Route6Mons: ; d1fd (3:51fd) + db $0F + db 13,BELLSPROUT + db 13,PIDGEY + db 15,PIDGEY + db 10,MEOWTH + db 12,MEOWTH + db 15,BELLSPROUT + db 16,BELLSPROUT + db 16,PIDGEY + db 14,MEOWTH + db 16,MEOWTH + + db $00 + +Route11Mons: ; d213 (3:5213) + db $0F + db 14,SANDSHREW + db 15,SPEAROW + db 12,SANDSHREW + db 9,DROWZEE + db 13,SPEAROW + db 13,DROWZEE + db 15,SANDSHREW + db 17,SPEAROW + db 11,DROWZEE + db 15,DROWZEE + + db $00 + +TunnelMonsB1: ; d229 (3:5229) + db $0F + db 16,ZUBAT + db 17,ZUBAT + db 17,GEODUDE + db 15,MACHOP + db 16,GEODUDE + db 18,ZUBAT + db 15,ZUBAT + db 17,MACHOP + db 13,ONIX + db 15,ONIX + + db $00 + +TunnelMonsB2: ; d23f (3:523f) + db $0F + db 16,ZUBAT + db 17,ZUBAT + db 17,GEODUDE + db 15,MACHOP + db 16,GEODUDE + db 18,ZUBAT + db 17,MACHOP + db 17,ONIX + db 13,ONIX + db 18,GEODUDE + + db $00 + +Route10Mons: ; d255 (3:5255) + db $0F + db 16,VOLTORB + db 16,SPEAROW + db 14,VOLTORB + db 11,SANDSHREW + db 13,SPEAROW + db 15,SANDSHREW + db 17,VOLTORB + db 17,SPEAROW + db 13,SANDSHREW + db 17,SANDSHREW + + db $00 + +Route12Mons: ; d26b (3:526b) + db $0F + db 24,BELLSPROUT + db 25,PIDGEY + db 23,PIDGEY + db 24,VENONAT + db 22,BELLSPROUT + db 26,VENONAT + db 26,BELLSPROUT + db 27,PIDGEY + db 28,WEEPINBELL + db 30,WEEPINBELL + + db $00 + +Route8Mons: ; d281 (3:5281) + db $0F + db 18,PIDGEY + db 18,MEOWTH + db 17,SANDSHREW + db 16,VULPIX + db 20,PIDGEY + db 20,MEOWTH + db 19,SANDSHREW + db 17,VULPIX + db 15,VULPIX + db 18,VULPIX + + db $00 + +Route7Mons: ; d297 (3:5297) + db $0F + db 19,PIDGEY + db 19,BELLSPROUT + db 17,MEOWTH + db 22,BELLSPROUT + db 22,PIDGEY + db 18,MEOWTH + db 18,VULPIX + db 20,VULPIX + db 19,MEOWTH + db 20,MEOWTH + + db $00 + +TowerMons1: ; d2ad (3:52ad) + db $00 + + db $00 + +TowerMons2: ; d2af (3:52af) + db $00 + + db $00 + +TowerMons3: ; d2b1 (3:52b1) + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 19,GASTLY + db 18,GASTLY + db 24,GASTLY + db 20,CUBONE + db 22,CUBONE + db 25,HAUNTER + + db $00 + +TowerMons4: ; d2c7 (3:52c7) + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 19,GASTLY + db 18,GASTLY + db 25,HAUNTER + db 20,CUBONE + db 22,CUBONE + db 24,GASTLY + + db $00 + +TowerMons5: ; d2dd (3:52dd) + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 19,GASTLY + db 18,GASTLY + db 25,HAUNTER + db 20,CUBONE + db 22,CUBONE + db 24,GASTLY + + db $00 + +TowerMons6: ; d2f3 (3:52f3) + db $0F + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 24,GASTLY + db 20,GASTLY + db 19,GASTLY + db 26,HAUNTER + db 22,CUBONE + db 24,CUBONE + db 28,HAUNTER + + db $00 + +TowerMons7: ; d309 (3:5309) + db $0F + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 24,GASTLY + db 20,GASTLY + db 28,HAUNTER + db 22,CUBONE + db 24,CUBONE + db 28,HAUNTER + db 30,HAUNTER + + db $00 + +Route13Mons: ; d31f (3:531f) + db $14 + db 24,BELLSPROUT + db 25,PIDGEY + db 27,PIDGEY + db 24,VENONAT + db 22,BELLSPROUT + db 26,VENONAT + db 26,BELLSPROUT + db 25,DITTO + db 28,WEEPINBELL + db 30,WEEPINBELL + + db $00 + +Route14Mons: ; d335 (3:5335) + db $0F + db 24,BELLSPROUT + db 26,PIDGEY + db 23,DITTO + db 24,VENONAT + db 22,BELLSPROUT + db 26,VENONAT + db 26,BELLSPROUT + db 30,WEEPINBELL + db 28,PIDGEOTTO + db 30,PIDGEOTTO + + db $00 + +Route15Mons: ; d34b (3:534b) + db $0F + db 24,BELLSPROUT + db 26,DITTO + db 23,PIDGEY + db 26,VENONAT + db 22,BELLSPROUT + db 28,VENONAT + db 26,BELLSPROUT + db 30,WEEPINBELL + db 28,PIDGEOTTO + db 30,PIDGEOTTO + + db $00 + +Route16Mons: ; d361 (3:5361) + db $19 + db 20,SPEAROW + db 22,SPEAROW + db 18,RATTATA + db 20,DODUO + db 20,RATTATA + db 18,DODUO + db 22,DODUO + db 22,RATTATA + db 23,RATICATE + db 25,RATICATE + + db $00 + +Route17Mons: ; d377 (3:5377) + db $19 + db 20,SPEAROW + db 22,SPEAROW + db 25,RATICATE + db 24,DODUO + db 27,RATICATE + db 26,DODUO + db 28,DODUO + db 29,RATICATE + db 25,FEAROW + db 27,FEAROW + + db $00 + +Route18Mons: ; d38d (3:538d) + db $19 + db 20,SPEAROW + db 22,SPEAROW + db 25,RATICATE + db 24,DODUO + db 25,FEAROW + db 26,DODUO + db 28,DODUO + db 29,RATICATE + db 27,FEAROW + db 29,FEAROW + + db $00 + +ZoneMonsCenter: ; d3a3 (3:53a3) + db $1E + db 22,NIDORAN_F + db 25,RHYHORN + db 22,VENONAT + db 24,EXEGGCUTE + db 31,NIDORINA + db 25,EXEGGCUTE + db 31,NIDORINO + db 30,PARASECT + db 23,PINSIR + db 23,CHANSEY + + db $00 + +ZoneMons1: ; d3b9 (3:53b9) + db $1E + db 24,NIDORAN_F + db 26,DODUO + db 22,PARAS + db 25,EXEGGCUTE + db 33,NIDORINA + db 23,EXEGGCUTE + db 24,NIDORAN_M + db 25,PARASECT + db 25,KANGASKHAN + db 28,PINSIR + + db $00 + +ZoneMons2: ; d3cf (3:53cf) + db $1E + db 22,NIDORAN_F + db 26,RHYHORN + db 23,PARAS + db 25,EXEGGCUTE + db 30,NIDORINA + db 27,EXEGGCUTE + db 30,NIDORINO + db 32,VENOMOTH + db 26,CHANSEY + db 28,TAUROS + + db $00 + +ZoneMons3: ; d3e5 (3:53e5) + db $1E + db 25,NIDORAN_F + db 26,DODUO + db 23,VENONAT + db 24,EXEGGCUTE + db 33,NIDORINA + db 26,EXEGGCUTE + db 25,NIDORAN_M + db 31,VENOMOTH + db 26,TAUROS + db 28,KANGASKHAN + + db $00 + +WaterMons: ; d3fb (3:53fb) + db $00 + + db $05 + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 20,TENTACOOL + db 30,TENTACOOL + db 35,TENTACOOL + db 40,TENTACOOL + +IslandMons1: ; d411 (3:5411) + db $0F + db 30,SEEL + db 30,PSYDUCK + db 30,STARYU + db 30,KRABBY + db 28,KRABBY + db 21,ZUBAT + db 29,GOLBAT + db 28,SLOWPOKE + db 28,STARYU + db 38,SLOWBRO + + db $00 + +IslandMonsB1: ; d427 (3:5427) + db $0A + db 30,SHELLDER + db 30,KRABBY + db 32,STARYU + db 32,KRABBY + db 28,PSYDUCK + db 30,SEEL + db 30,PSYDUCK + db 28,SEEL + db 38,DEWGONG + db 37,KINGLER + + db $00 + +IslandMonsB2: ; d43d (3:543d) + db $0A + db 30,SEEL + db 30,PSYDUCK + db 32,SEEL + db 32,PSYDUCK + db 28,KRABBY + db 30,SHELLDER + db 30,KRABBY + db 28,STARYU + db 30,GOLBAT + db 37,GOLDUCK + + db $00 + +IslandMonsB3: ; d453 (3:5453) + db $0A + db 31,PSYDUCK + db 31,SEEL + db 33,PSYDUCK + db 33,SEEL + db 29,KRABBY + db 31,STARYU + db 31,KRABBY + db 29,STARYU + db 39,KINGLER + db 37,DEWGONG + + db $00 + +IslandMonsB4: ; d469 (3:5469) + db $0A + db 31,KRABBY + db 31,STARYU + db 33,KRABBY + db 33,STARYU + db 29,PSYDUCK + db 31,SEEL + db 31,PSYDUCK + db 29,SEEL + db 39,GOLDUCK + db 32,GOLBAT + + db $00 + +MansionMons1: ; d47f (3:547f) + db $0A + db 32,GRIMER + db 30,GRIMER + db 34,PONYTA + db 30,PONYTA + db 34,VULPIX + db 32,PONYTA + db 30,KOFFING + db 28,PONYTA + db 37,MUK + db 39,WEEZING + + db $00 + +MansionMons2: ; d495 (3:5495) + db $0A + db 32,VULPIX + db 34,GRIMER + db 34,GRIMER + db 30,PONYTA + db 30,GRIMER + db 32,PONYTA + db 30,KOFFING + db 28,PONYTA + db 39,MUK + db 37,WEEZING + + db $00 + +MansionMons3: ; d4ab (3:54ab) + db $0A + db 31,GRIMER + db 33,VULPIX + db 35,GRIMER + db 32,PONYTA + db 34,MAGMAR + db 40,MUK + db 34,KOFFING + db 38,MUK + db 36,PONYTA + db 42,WEEZING + + db $00 + +MansionMonsB1: ; d4c1 (3:54c1) + db $0A + db 33,GRIMER + db 31,GRIMER + db 35,VULPIX + db 32,PONYTA + db 31,GRIMER + db 40,MUK + db 34,PONYTA + db 35,KOFFING + db 38,MAGMAR + db 42,WEEZING + + db $00 + +Route21Mons: ; d4d7 (3:54d7) + db $19 + db 21,RATTATA + db 23,PIDGEY + db 30,RATICATE + db 23,RATTATA + db 21,PIDGEY + db 30,PIDGEOTTO + db 32,PIDGEOTTO + db 28,TANGELA + db 30,TANGELA + db 32,TANGELA + + db $05 + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 20,TENTACOOL + db 30,TENTACOOL + db 35,TENTACOOL + db 40,TENTACOOL + +DungeonMons1: ; d501 (3:5501) + db $0A + db 46,GOLBAT + db 46,HYPNO + db 46,MAGNETON + db 49,DODRIO + db 49,VENOMOTH + db 52,SANDSLASH + db 49,KADABRA + db 52,PARASECT + db 53,RAICHU + db 53,DITTO + + db $00 + +DungeonMons2: ; d517 (3:5517) + db $0F + db 51,DODRIO + db 51,VENOMOTH + db 51,KADABRA + db 52,RHYDON + db 52,MAROWAK + db 52,ELECTRODE + db 56,CHANSEY + db 54,WIGGLYTUFF + db 55,DITTO + db 60,DITTO + + db $00 + +DungeonMonsB1: ; d52d (3:552d) + db $19 + db 55,RHYDON + db 55,MAROWAK + db 55,ELECTRODE + db 64,CHANSEY + db 64,PARASECT + db 64,RAICHU + db 57,SANDSLASH + db 65,DITTO + db 63,DITTO + db 67,DITTO + + db $00 + +PowerPlantMons: ; d543 (3:5543) + db $0A + db 21,VOLTORB + db 21,MAGNEMITE + db 20,PIKACHU + db 24,PIKACHU + db 23,MAGNEMITE + db 23,VOLTORB + db 32,MAGNETON + db 35,MAGNETON + db 33,RAICHU + db 36,RAICHU + + db $00 + +Route23Mons: ; d559 (3:5559) + db $0A + db 26,SANDSHREW + db 33,DITTO + db 26,SPEAROW + db 38,FEAROW + db 38,DITTO + db 38,FEAROW + db 41,SANDSLASH + db 43,DITTO + db 41,FEAROW + db 43,FEAROW + + db $00 + +PlateauMons2: ; d56f (3:556f) + db $0A + db 22,MACHOP + db 24,GEODUDE + db 26,ZUBAT + db 36,ONIX + db 39,ONIX + db 42,ONIX + db 41,MACHOKE + db 40,GOLBAT + db 40,MAROWAK + db 43,GRAVELER + + db $00 + +PlateauMons3: ; d585 (3:5585) + db $0F + db 24,MACHOP + db 26,GEODUDE + db 22,ZUBAT + db 42,ONIX + db 40,VENOMOTH + db 45,ONIX + db 43,GRAVELER + db 41,GOLBAT + db 42,MACHOKE + db 45,MACHOKE + + db $00 + +PlateauMons1: ; d59b (3:559b) + db $0F + db 24,MACHOP + db 26,GEODUDE + db 22,ZUBAT + db 36,ONIX + db 39,ONIX + db 42,ONIX + db 41,GRAVELER + db 41,GOLBAT + db 42,MACHOKE + db 43,MAROWAK + + db $00 + +CaveMons: ; d5b1 (3:55b1) + db $14 + db 18,DIGLETT + db 19,DIGLETT + db 17,DIGLETT + db 20,DIGLETT + db 16,DIGLETT + db 15,DIGLETT + db 21,DIGLETT + db 22,DIGLETT + db 29,DUGTRIO + db 31,DUGTRIO + + db $00 + +ENDC +IF _JAPAN && _BLUE +NoMons: ; d0dd (3:50dd) + db $00 + + db $00 + +Route1Mons: ; d0df (3:50df) + db $19 + db 3,PIDGEY + db 3,RATTATA + db 3,RATTATA + db 2,RATTATA + db 2,PIDGEY + db 3,PIDGEY + db 3,PIDGEY + db 4,RATTATA + db 4,PIDGEY + db 5,PIDGEY + + db $00 + +Route2Mons: ; d0f5 (3:50f5) + db $19 + db 3,RATTATA + db 3,PIDGEY + db 4,PIDGEY + db 4,RATTATA + db 5,PIDGEY + db 3,CATERPIE + db 2,RATTATA + db 5,RATTATA + db 4,CATERPIE + db 5,CATERPIE + + db $00 + +Route22Mons: ; d10b (3:510b) + db $19 + db 3,RATTATA + db 3,NIDORAN_M + db 4,RATTATA + db 4,NIDORAN_M + db 2,RATTATA + db 2,NIDORAN_M + db 3,SPEAROW + db 5,SPEAROW + db 3,NIDORAN_F + db 4,NIDORAN_F + + db $00 + +ForestMons: ; d121 (3:5121) + db $08 + db 4,CATERPIE + db 5,METAPOD + db 3,CATERPIE + db 5,CATERPIE + db 4,METAPOD + db 6,METAPOD + db 4,KAKUNA + db 3,WEEDLE + db 3,PIKACHU + db 5,PIKACHU + + db $00 + +Route3Mons: ; d137 (3:5137) + db $14 + db 6,PIDGEY + db 5,SPEAROW + db 7,PIDGEY + db 6,SPEAROW + db 7,SPEAROW + db 8,PIDGEY + db 8,SPEAROW + db 3,JIGGLYPUFF + db 5,JIGGLYPUFF + db 7,JIGGLYPUFF + + db $00 + +MoonMons1: ; d14d (3:514d) + db $0A + db 8,ZUBAT + db 7,ZUBAT + db 9,ZUBAT + db 8,GEODUDE + db 6,ZUBAT + db 10,ZUBAT + db 10,GEODUDE + db 8,PARAS + db 11,ZUBAT + db 8,CLEFAIRY + + db $00 + +MoonMonsB1: ; d163 (3:5163) + db $0A + db 8,ZUBAT + db 7,ZUBAT + db 7,GEODUDE + db 8,GEODUDE + db 9,ZUBAT + db 10,PARAS + db 10,ZUBAT + db 11,ZUBAT + db 9,CLEFAIRY + db 9,GEODUDE + + db $00 + +MoonMonsB2: ; d179 (3:5179) + db $0A + db 9,ZUBAT + db 9,GEODUDE + db 10,ZUBAT + db 10,GEODUDE + db 11,ZUBAT + db 10,PARAS + db 12,PARAS + db 10,CLEFAIRY + db 12,ZUBAT + db 12,CLEFAIRY + + db $00 + +Route4Mons: ; d18f (3:518f) + db $14 + db 10,RATTATA + db 10,SPEAROW + db 8,RATTATA + db 6,SANDSHREW + db 8,SPEAROW + db 10,SANDSHREW + db 12,RATTATA + db 12,SPEAROW + db 8,SANDSHREW + db 12,SANDSHREW + + db $00 + +Route24Mons: ; d1a5 (3:51a5) + db $19 + db 7,CATERPIE + db 8,METAPOD + db 12,PIDGEY + db 12,ODDISH + db 13,ODDISH + db 10,ABRA + db 14,ODDISH + db 13,PIDGEY + db 8,ABRA + db 12,ABRA + + db $00 + +Route25Mons: ; d1bb (3:51bb) + db $0F + db 8,CATERPIE + db 9,METAPOD + db 13,PIDGEY + db 12,ODDISH + db 13,ODDISH + db 12,ABRA + db 14,ODDISH + db 10,ABRA + db 7,KAKUNA + db 8,WEEDLE + + db $00 + +Route9Mons: ; d1d1 (3:51d1) + db $0F + db 16,RATTATA + db 16,SPEAROW + db 14,RATTATA + db 11,SANDSHREW + db 13,SPEAROW + db 15,SANDSHREW + db 17,RATTATA + db 17,SPEAROW + db 13,SANDSHREW + db 17,SANDSHREW + + db $00 + +Route5Mons: ; d1e7 (3:51e7) + db $0F + db 13,ODDISH + db 13,PIDGEY + db 15,PIDGEY + db 10,MEOWTH + db 12,MEOWTH + db 15,ODDISH + db 16,ODDISH + db 16,PIDGEY + db 14,MEOWTH + db 16,MEOWTH + + db $00 + +Route6Mons: ; d1fd (3:51fd) + db $0F + db 13,ODDISH + db 13,PIDGEY + db 15,PIDGEY + db 10,MEOWTH + db 12,MEOWTH + db 15,ODDISH + db 16,ODDISH + db 16,PIDGEY + db 14,MEOWTH + db 16,MEOWTH + + db $00 + +Route11Mons: ; d213 (3:5213) + db $0F + db 14,SANDSHREW + db 15,SPEAROW + db 12,SANDSHREW + db 9,DROWZEE + db 13,SPEAROW + db 13,DROWZEE + db 15,SANDSHREW + db 17,SPEAROW + db 11,DROWZEE + db 15,DROWZEE + + db $00 + +TunnelMonsB1: ; d229 (3:5229) + db $0F + db 16,ZUBAT + db 17,ZUBAT + db 17,GEODUDE + db 15,MACHOP + db 16,GEODUDE + db 18,DITTO + db 15,ZUBAT + db 17,MACHOP + db 13,ONIX + db 15,ONIX + + db $00 + +TunnelMonsB2: ; d23f (3:523f) + db $0F + db 16,ZUBAT + db 17,ZUBAT + db 17,GEODUDE + db 15,MACHOP + db 16,GEODUDE + db 18,DITTO + db 17,MACHOP + db 17,ONIX + db 13,ONIX + db 18,GEODUDE + + db $00 + +Route10Mons: ; d255 (3:5255) + db $0F + db 16,VOLTORB + db 16,SPEAROW + db 14,VOLTORB + db 11,SANDSHREW + db 13,SPEAROW + db 15,SANDSHREW + db 17,VOLTORB + db 17,SPEAROW + db 13,SANDSHREW + db 17,SANDSHREW + + db $00 + +Route12Mons: ; d26b (3:526b) + db $0F + db 24,ODDISH + db 25,PIDGEY + db 23,PIDGEY + db 24,VENONAT + db 22,ODDISH + db 26,VENONAT + db 26,ODDISH + db 27,PIDGEY + db 28,GLOOM + db 30,GLOOM + + db $00 + +Route8Mons: ; d281 (3:5281) + db $0F + db 18,PIDGEY + db 18,MEOWTH + db 17,SANDSHREW + db 16,GROWLITHE + db 20,PIDGEY + db 20,MEOWTH + db 19,SANDSHREW + db 17,GROWLITHE + db 15,GROWLITHE + db 18,GROWLITHE + + db $00 + +Route7Mons: ; d297 (3:5297) + db $0F + db 19,PIDGEY + db 19,ODDISH + db 17,MEOWTH + db 22,ODDISH + db 22,PIDGEY + db 18,MEOWTH + db 18,GROWLITHE + db 20,GROWLITHE + db 19,MEOWTH + db 20,MEOWTH + + db $00 + +TowerMons1: ; d2ad (3:52ad) + db $00 + + db $00 + +TowerMons2: ; d2af (3:52af) + db $00 + + db $00 + +TowerMons3: ; d2b1 (3:52b1) + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 19,GASTLY + db 18,GASTLY + db 24,GASTLY + db 20,CUBONE + db 22,CUBONE + db 25,HAUNTER + + db $00 + +TowerMons4: ; d2c7 (3:52c7) + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 19,GASTLY + db 18,GASTLY + db 25,HAUNTER + db 20,CUBONE + db 22,CUBONE + db 24,GASTLY + + db $00 + +TowerMons5: ; d2dd (3:52dd) + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 19,GASTLY + db 18,GASTLY + db 25,HAUNTER + db 20,CUBONE + db 22,CUBONE + db 24,GASTLY + + db $00 + +TowerMons6: ; d2f3 (3:52f3) + db $0F + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 24,GASTLY + db 20,GASTLY + db 19,GASTLY + db 26,HAUNTER + db 22,CUBONE + db 24,CUBONE + db 28,HAUNTER + + db $00 + +TowerMons7: ; d309 (3:5309) + db $0F + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 24,GASTLY + db 20,GASTLY + db 28,HAUNTER + db 22,CUBONE + db 24,CUBONE + db 28,HAUNTER + db 30,HAUNTER + + db $00 + +Route13Mons: ; d31f (3:531f) + db $14 + db 24,ODDISH + db 25,PIDGEY + db 27,PIDGEY + db 24,VENONAT + db 22,ODDISH + db 26,VENONAT + db 26,ODDISH + db 25,DITTO + db 28,GLOOM + db 30,GLOOM + + db $00 + +Route14Mons: ; d335 (3:5335) + db $0F + db 24,ODDISH + db 26,PIDGEY + db 23,DITTO + db 24,VENONAT + db 22,ODDISH + db 26,VENONAT + db 26,ODDISH + db 30,GLOOM + db 28,PIDGEOTTO + db 30,PIDGEOTTO + + db $00 + +Route15Mons: ; d34b (3:534b) + db $0F + db 24,ODDISH + db 26,DITTO + db 23,PIDGEY + db 26,VENONAT + db 22,ODDISH + db 28,VENONAT + db 26,ODDISH + db 30,GLOOM + db 28,PIDGEOTTO + db 30,PIDGEOTTO + + db $00 + +Route16Mons: ; d361 (3:5361) + db $19 + db 20,SPEAROW + db 22,SPEAROW + db 18,RATTATA + db 20,DODUO + db 20,RATTATA + db 18,DODUO + db 22,DODUO + db 22,RATTATA + db 23,RATICATE + db 25,RATICATE + + db $00 + +Route17Mons: ; d377 (3:5377) + db $19 + db 20,SPEAROW + db 22,SPEAROW + db 25,RATICATE + db 24,DODUO + db 27,RATICATE + db 26,DODUO + db 28,DODUO + db 29,RATICATE + db 25,FEAROW + db 27,FEAROW + + db $00 + +Route18Mons: ; d38d (3:538d) + db $19 + db 20,SPEAROW + db 22,SPEAROW + db 25,RATICATE + db 24,DODUO + db 25,FEAROW + db 26,DODUO + db 28,DODUO + db 29,RATICATE + db 27,FEAROW + db 29,FEAROW + + db $00 + +ZoneMonsCenter: ; d3a3 (3:53a3) + db $1E + db 22,NIDORAN_M + db 25,RHYHORN + db 22,VENONAT + db 24,EXEGGCUTE + db 31,NIDORINO + db 25,EXEGGCUTE + db 31,NIDORINA + db 30,PARASECT + db 23,SCYTHER + db 23,CHANSEY + + db $00 + +ZoneMons1: ; d3b9 (3:53b9) + db $1E + db 24,NIDORAN_M + db 26,DODUO + db 22,PARAS + db 25,EXEGGCUTE + db 33,NIDORINO + db 23,EXEGGCUTE + db 24,NIDORAN_F + db 25,PARASECT + db 25,LICKITUNG + db 28,SCYTHER + + db $00 + +ZoneMons2: ; d3cf (3:53cf) + db $1E + db 22,NIDORAN_M + db 26,RHYHORN + db 23,PARAS + db 25,EXEGGCUTE + db 30,NIDORINO + db 27,EXEGGCUTE + db 30,NIDORINA + db 32,VENOMOTH + db 26,CHANSEY + db 28,PINSIR + + db $00 + +ZoneMons3: ; d3e5 (3:53e5) + db $1E + db 25,NIDORAN_M + db 26,DODUO + db 23,VENONAT + db 24,EXEGGCUTE + db 33,NIDORINO + db 26,EXEGGCUTE + db 25,NIDORAN_F + db 31,VENOMOTH + db 26,PINSIR + db 28,LICKITUNG + + db $00 + +WaterMons: ; d3fb (3:53fb) + db $00 + + db $05 + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 20,TENTACOOL + db 30,TENTACOOL + db 35,TENTACOOL + db 40,TENTACOOL + +WaterMons: ; d3fb (3:53fb) + db $00 + + db $05 + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 20,TENTACOOL + db 30,TENTACOOL + db 35,TENTACOOL + db 40,TENTACOOL + +IslandMons1: ; d411 (3:5411) + db $0F + db 30,SEEL + db 30,HORSEA + db 30,STARYU + db 30,KRABBY + db 28,KRABBY + db 21,ZUBAT + db 29,GOLBAT + db 28,SLOWPOKE + db 28,STARYU + db 38,SLOWBRO + + db $00 + +IslandMonsB1: ; d427 (3:5427) + db $0A + db 30,SHELLDER + db 30,KRABBY + db 32,STARYU + db 32,KRABBY + db 28,HORSEA + db 30,SEEL + db 30,HORSEA + db 28,SEEL + db 38,DEWGONG + db 37,KINGLER + + db $00 + +IslandMonsB2: ; d43d (3:543d) + db $0A + db 30,SEEL + db 30,HORSEA + db 32,SEEL + db 32,HORSEA + db 28,KRABBY + db 30,SHELLDER + db 30,KRABBY + db 28,STARYU + db 30,GOLBAT + db 37,JYNX + + db $00 + +IslandMonsB3: ; d453 (3:5453) + db $0A + db 31,HORSEA + db 31,SEEL + db 33,HORSEA + db 33,SEEL + db 29,KRABBY + db 31,STARYU + db 31,KRABBY + db 29,STARYU + db 39,KINGLER + db 37,DEWGONG + + db $00 + +IslandMonsB4: ; d469 (3:5469) + db $0A + db 31,KRABBY + db 31,STARYU + db 33,KRABBY + db 33,STARYU + db 29,HORSEA + db 31,SEEL + db 31,HORSEA + db 29,SEEL + db 39,JYNX + db 32,GOLBAT + + db $00 + +MansionMons1: ; d47f (3:547f) + db $0A + db 32,GRIMER + db 30,GRIMER + db 34,PONYTA + db 30,PONYTA + db 34,GROWLITHE + db 32,PONYTA + db 30,KOFFING + db 28,PONYTA + db 37,MUK + db 39,WEEZING + + db $00 + +MansionMons2: ; d495 (3:5495) + db $0A + db 32,GROWLITHE + db 34,GRIMER + db 34,GRIMER + db 30,PONYTA + db 30,GRIMER + db 32,PONYTA + db 30,KOFFING + db 28,PONYTA + db 39,MUK + db 37,WEEZING + + db $00 + +MansionMons3: ; d4ab (3:54ab) + db $0A + db 31,GRIMER + db 33,GROWLITHE + db 35,GRIMER + db 32,PONYTA + db 34,PONYTA + db 40,MUK + db 34,KOFFING + db 38,MUK + db 36,PONYTA + db 42,WEEZING + + db $00 + +MansionMonsB1: ; d4c1 (3:54c1) + db $0A + db 33,GRIMER + db 31,GRIMER + db 35,GROWLITHE + db 32,PONYTA + db 31,GRIMER + db 40,MUK + db 34,PONYTA + db 35,KOFFING + db 38,MUK + db 42,WEEZING + + db $00 + +Route21Mons: ; d4d7 (3:54d7) + db $19 + db 21,RATTATA + db 23,PIDGEY + db 30,RATICATE + db 23,RATTATA + db 21,PIDGEY + db 30,PIDGEOTTO + db 32,PIDGEOTTO + db 28,TANGELA + db 30,TANGELA + db 32,TANGELA + + db $05 + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 20,TENTACOOL + db 30,TENTACOOL + db 35,TENTACOOL + db 40,TENTACOOL + +DungeonMons1: ; d501 (3:5501) + db $0A + db 46,GOLBAT + db 46,HYPNO + db 46,MAGNETON + db 49,RAPIDASH + db 49,VENOMOTH + db 52,SANDSLASH + db 49,KADABRA + db 52,PARASECT + db 53,RAICHU + db 53,DITTO + + db $00 + +DungeonMons2: ; d517 (3:5517) + db $0F + db 51,DODRIO + db 51,VENOMOTH + db 51,KADABRA + db 52,RHYDON + db 52,RATICATE + db 52,ELECTRODE + db 56,CHANSEY + db 54,WIGGLYTUFF + db 55,DITTO + db 60,DITTO + + db $00 + +DungeonMonsB1: ; d52d (3:552d) + db $19 + db 55,RHYDON + db 55,MAROWAK + db 55,ELECTRODE + db 64,CLEFAIRY + db 64,PARASECT + db 64,RAICHU + db 57,SANDSLASH + db 65,DITTO + db 63,DITTO + db 67,DITTO + + db $00 + +PowerPlantMons: ; d543 (3:5543) + db $0A + db 21,VOLTORB + db 21,MAGNEMITE + db 20,PIKACHU + db 24,PIKACHU + db 23,MAGNEMITE + db 23,VOLTORB + db 32,MAGNETON + db 35,MAGNETON + db 33,RAICHU + db 36,RAICHU + + db $00 + +Route23Mons: ; d559 (3:5559) + db $0A + db 26,SANDSHREW + db 33,DITTO + db 26,SPEAROW + db 38,FEAROW + db 38,DITTO + db 38,FEAROW + db 41,SANDSLASH + db 43,DITTO + db 41,FEAROW + db 43,FEAROW + + db $00 + +PlateauMons2: ; d56f (3:556f) + db $0A + db 22,MACHOP + db 24,GEODUDE + db 26,ZUBAT + db 36,ONIX + db 39,ONIX + db 42,ONIX + db 41,MACHOKE + db 40,GOLBAT + db 40,MAROWAK + db 43,GRAVELER + + db $00 + +PlateauMons3: ; d585 (3:5585) + db $0F + db 24,MACHOP + db 26,GEODUDE + db 22,ZUBAT + db 42,ONIX + db 40,VENOMOTH + db 45,ONIX + db 43,GRAVELER + db 41,GOLBAT + db 42,MACHOKE + db 45,MACHOKE + + db $00 + +PlateauMons1: ; d59b (3:559b) + db $0F + db 24,MACHOP + db 26,GEODUDE + db 22,ZUBAT + db 36,ONIX + db 39,ONIX + db 42,ONIX + db 41,GRAVELER + db 41,GOLBAT + db 42,MACHOKE + db 43,MAROWAK + + db $00 + +CaveMons: ; d5b1 (3:55b1) + db $14 + db 18,DIGLETT + db 19,DIGLETT + db 17,DIGLETT + db 20,DIGLETT + db 16,DIGLETT + db 15,DIGLETT + db 21,DIGLETT + db 22,DIGLETT + db 29,DUGTRIO + db 31,DUGTRIO + + db $00 + +ENDC +IF _YELLOW +NoMons: ; d0dd (3:50dd) + db $00 + + db $00 + +Route1Mons: ; d0df (3:50df) + db $19 + db 3,PIDGEY + db 4,PIDGEY + db 2,RATTATA + db 3,RATTATA + db 2,PIDGEY + db 3,PIDGEY + db 5,PIDGEY + db 4,RATTATA + db 6,PIDGEY + db 7,PIDGEY + + db $00 + +Route2Mons: ; d0f5 (3:50f5) + db $19 + db 3,RATTATA + db 3,PIDGEY + db 4,RATTATA + db 4,NIDORAN_M + db 4,NIDORAN_F + db 5,PIDGEY + db 6,NIDORAN_M + db 6,NIDORAN_F + db 7,PIDGEY + db 7,PIDGEY + + db $00 + +Route22Mons: ; d10b (3:510b) + db $19 + db 2,NIDORAN_M + db 2,NIDORAN_F + db 3,MANKEY + db 3,RATTATA + db 4,NIDORAN_M + db 4,NIDORAN_F + db 5,MANKEY + db 2,SPEAROW + db 4,SPEAROW + db 6,SPEAROW + + db $00 + +ForestMons: ; d121 (3:5121) + db $19 + db 3,CATERPIE + db 4,METAPOD + db 4,CATERPIE + db 5,CATERPIE + db 4,PIDGEY + db 6,PIDGEY + db 6,CATERPIE + db 6,METAPOD + db 8,PIDGEY + db 9,PIDGEOTTO + + db $00 + +Route3Mons: ; d137 (3:5137) + db $14 + db 8,SPEAROW + db 9,SPEAROW + db 9,MANKEY + db 10,SPEAROW + db 8,SANDSHREW + db 10,RATTATA + db 10,SANDSHREW + db 12,RATTATA + db 11,SPEAROW + db 12,SPEAROW + + db $00 + +MoonMons1: ; d14d (3:514d) + db $0A + db 8,ZUBAT + db 9,ZUBAT + db 10,GEODUDE + db 6,ZUBAT + db 7,ZUBAT + db 10,ZUBAT + db 10,GEODUDE + db 11,ZUBAT + db 12,SANDSHREW + db 11,CLEFAIRY + + db $00 + +MoonMonsB1: ; d163 (3:5163) + db $0A + db 8,ZUBAT + db 9,ZUBAT + db 10,ZUBAT + db 10,GEODUDE + db 11,GEODUDE + db 11,ZUBAT + db 9,PARAS + db 11,PARAS + db 10,CLEFAIRY + db 12,CLEFAIRY + + db $00 + +MoonMonsB2: ; d179 (3:5179) + db $0A + db 10,ZUBAT + db 11,GEODUDE + db 13,PARAS + db 11,ZUBAT + db 11,ZUBAT + db 12,ZUBAT + db 13,ZUBAT + db 9,CLEFAIRY + db 11,CLEFAIRY + db 13,CLEFAIRY + + db $00 + +Route4Mons: ; d18f (3:518f) + db $14 + db 8,SPEAROW + db 9,SPEAROW + db 9,MANKEY + db 10,SPEAROW + db 8,SANDSHREW + db 10,RATTATA + db 10,SANDSHREW + db 12,RATTATA + db 11,SPEAROW + db 12,SPEAROW + + db $00 + +Route24Mons: ; d1a5 (3:51a5) + db $19 + db 12,ODDISH + db 12,BELLSPROUT + db 13,PIDGEY + db 14,ODDISH + db 14,BELLSPROUT + db 15,PIDGEY + db 13,VENONAT + db 16,VENONAT + db 17,PIDGEY + db 17,PIDGEOTTO + + db $00 + +Route25Mons: ; d1bb (3:51bb) + db $0F + db 12,ODDISH + db 12,BELLSPROUT + db 13,PIDGEY + db 14,ODDISH + db 14,BELLSPROUT + db 15,PIDGEY + db 13,VENONAT + db 16,VENONAT + db 17,PIDGEY + db 17,PIDGEOTTO + + db $00 + +Route9Mons: ; d1d1 (3:51d1) + db $0F + db 16,NIDORAN_M + db 16,NIDORAN_F + db 18,RATTATA + db 18,NIDORAN_M + db 18,NIDORAN_F + db 17,SPEAROW + db 18,NIDORINO + db 18,NIDORINA + db 20,RATICATE + db 19,FEAROW + + db $00 + +Route5Mons: ; d1e7 (3:51e7) + db $0F + db 15,PIDGEY + db 14,RATTATA + db 7,ABRA + db 16,PIDGEY + db 16,RATTATA + db 17,PIDGEY + db 17,PIDGEOTTO + db 3,JIGGLYPUFF + db 5,JIGGLYPUFF + db 7,JIGGLYPUFF + + db $00 + +Route6Mons: ; d1fd (3:51fd) + db $0F + db 15,PIDGEY + db 14,RATTATA + db 7,ABRA + db 16,PIDGEY + db 16,RATTATA + db 17,PIDGEY + db 17,PIDGEOTTO + db 3,JIGGLYPUFF + db 5,JIGGLYPUFF + db 7,JIGGLYPUFF + + db $03 + db 15,PSYDUCK + db 15,PSYDUCK + db 15,PSYDUCK + db 15,PSYDUCK + db 15,PSYDUCK + db 15,PSYDUCK + db 15,PSYDUCK + db 15,PSYDUCK + db 15,GOLDUCK + db 20,GOLDUCK + +Route11Mons: ; d213 (3:5213) + db $0F + db 16,PIDGEY + db 15,RATTATA + db 18,PIDGEY + db 15,DROWZEE + db 17,RATTATA + db 17,DROWZEE + db 18,PIDGEOTTO + db 20,PIDGEOTTO + db 19,DROWZEE + db 17,RATICATE + + db $00 + +TunnelMonsB1: ; d229 (3:5229) + db $0F + db 15,ZUBAT + db 16,GEODUDE + db 17,ZUBAT + db 19,ZUBAT + db 18,GEODUDE + db 20,GEODUDE + db 21,ZUBAT + db 17,MACHOP + db 19,MACHOP + db 21,MACHOP + + db $00 + +TunnelMonsB2: ; d23f (3:523f) + db $0F + db 20,ZUBAT + db 17,GEODUDE + db 18,MACHOP + db 21,ZUBAT + db 22,ZUBAT + db 21,GEODUDE + db 20,MACHOP + db 14,ONIX + db 18,ONIX + db 22,ONIX + + db $00 + +Route10Mons: ; d255 (3:5255) + db $0F + db 16,MAGNEMITE + db 18,RATTATA + db 18,MAGNEMITE + db 20,MAGNEMITE + db 17,NIDORAN_M + db 17,NIDORAN_F + db 22,MAGNEMITE + db 20,RATICATE + db 16,MACHOP + db 18,MACHOP + + db $00 + +Route12Mons: ; d26b (3:526b) + db $0F + db 25,ODDISH + db 25,BELLSPROUT + db 28,PIDGEY + db 28,PIDGEOTTO + db 27,ODDISH + db 27,BELLSPROUT + db 29,GLOOM + db 29,WEEPINBELL + db 26,FARFETCH_D + db 31,FARFETCH_D + + db $03 + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWBRO + db 20,SLOWBRO + +Route8Mons: ; d281 (3:5281) + db $0F + db 20,PIDGEY + db 22,PIDGEY + db 20,RATTATA + db 15,ABRA + db 19,ABRA + db 24,PIDGEOTTO + db 19,JIGGLYPUFF + db 24,JIGGLYPUFF + db 20,KADABRA + db 27,KADABRA + + db $00 + +Route7Mons: ; d297 (3:5297) + db $0F + db 20,PIDGEY + db 22,PIDGEY + db 20,RATTATA + db 15,ABRA + db 19,ABRA + db 24,PIDGEOTTO + db 26,ABRA + db 19,JIGGLYPUFF + db 24,JIGGLYPUFF + db 24,JIGGLYPUFF + + db $00 + +TowerMons1: ; d2ad (3:52ad) + db $00 + + db $00 + +TowerMons2: ; d2af (3:52af) + db $00 + + db $00 + +TowerMons3: ; d2b1 (3:52b1) + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 24,GASTLY + db 19,GASTLY + db 18,GASTLY + db 25,GASTLY + db 20,HAUNTER + db 25,HAUNTER + + db $00 + +TowerMons4: ; d2c7 (3:52c7) + db $0A + db 20,GASTLY + db 21,GASTLY + db 22,GASTLY + db 23,GASTLY + db 24,GASTLY + db 19,GASTLY + db 18,GASTLY + db 25,GASTLY + db 20,HAUNTER + db 25,HAUNTER + + db $00 + +TowerMons5: ; d2dd (3:52dd) + db $0F + db 22,GASTLY + db 23,GASTLY + db 24,GASTLY + db 25,GASTLY + db 26,GASTLY + db 21,GASTLY + db 20,CUBONE + db 27,GASTLY + db 22,HAUNTER + db 27,HAUNTER + + db $00 + +TowerMons6: ; d2f3 (3:52f3) + db $0F + db 22,GASTLY + db 23,GASTLY + db 24,GASTLY + db 25,GASTLY + db 26,GASTLY + db 21,GASTLY + db 22,CUBONE + db 27,GASTLY + db 22,HAUNTER + db 27,HAUNTER + + db $00 + +TowerMons7: ; d309 (3:5309) + db $14 + db 24,GASTLY + db 25,GASTLY + db 26,GASTLY + db 27,GASTLY + db 28,GASTLY + db 23,GASTLY + db 24,CUBONE + db 29,GASTLY + db 24,HAUNTER + db 29,HAUNTER + + db $00 + +Route13Mons: ; d31f (3:531f) + db $0F + db 25,ODDISH + db 25,BELLSPROUT + db 28,PIDGEOTTO + db 28,PIDGEY + db 27,ODDISH + db 27,BELLSPROUT + db 29,GLOOM + db 29,WEEPINBELL + db 26,FARFETCH_D + db 31,FARFETCH_D + + db $03 + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWPOKE + db 15,SLOWBRO + db 20,SLOWBRO + +Route14Mons: ; d335 (3:5335) + db $0F + db 26,ODDISH + db 26,BELLSPROUT + db 24,VENONAT + db 30,PIDGEOTTO + db 28,ODDISH + db 28,BELLSPROUT + db 30,GLOOM + db 30,WEEPINBELL + db 27,VENONAT + db 30,VENOMOTH + + db $00 + +Route15Mons: ; d34b (3:534b) + db $0F + db 26,ODDISH + db 26,BELLSPROUT + db 24,VENONAT + db 32,PIDGEOTTO + db 28,ODDISH + db 28,BELLSPROUT + db 30,GLOOM + db 30,WEEPINBELL + db 27,VENONAT + db 30,VENOMOTH + + db $00 + +Route16Mons: ; d361 (3:5361) + db $19 + db 22,SPEAROW + db 22,DODUO + db 23,RATTATA + db 24,DODUO + db 24,RATTATA + db 26,DODUO + db 23,SPEAROW + db 24,FEAROW + db 25,RATICATE + db 26,RATICATE + + db $00 + +Route17Mons: ; d377 (3:5377) + db $19 + db 26,DODUO + db 27,FEAROW + db 27,DODUO + db 28,DODUO + db 28,PONYTA + db 30,PONYTA + db 29,FEAROW + db 28,DODUO + db 32,PONYTA + db 29,DODRIO + + db $00 + +Route18Mons: ; d38d (3:538d) + db $19 + db 22,SPEAROW + db 22,DODUO + db 23,RATTATA + db 24,DODUO + db 24,RATTATA + db 26,DODUO + db 23,SPEAROW + db 24,FEAROW + db 25,RATICATE + db 26,RATICATE + + db $00 + +ZoneMonsCenter: ; d3a3 (3:53a3) + db $1E + db 14,NIDORAN_M + db 36,NIDORAN_F + db 24,EXEGGCUTE + db 20,RHYHORN + db 23,NIDORINO + db 27,PARASECT + db 27,PARAS + db 32,PARASECT + db 22,TANGELA + db 7,CHANSEY + + db $00 + +ZoneMons1: ; d3b9 (3:53b9) + db $1E + db 21,NIDORAN_M + db 29,NIDORAN_F + db 22,EXEGGCUTE + db 21,TAUROS + db 32,NIDORINA + db 19,CUBONE + db 26,EXEGGCUTE + db 24,MAROWAK + db 21,CHANSEY + db 15,SCYTHER + + db $00 + +ZoneMons2: ; d3cf (3:53cf) + db $1E + db 36,NIDORAN_M + db 14,NIDORAN_F + db 20,EXEGGCUTE + db 25,RHYHORN + db 23,NIDORINA + db 28,KANGASKHAN + db 16,CUBONE + db 33,KANGASKHAN + db 25,SCYTHER + db 15,PINSIR + + db $00 + +ZoneMons3: ; d3e5 (3:53e5) + db $1E + db 29,NIDORAN_M + db 21,NIDORAN_F + db 22,EXEGGCUTE + db 21,TAUROS + db 32,NIDORINO + db 19,CUBONE + db 26,EXEGGCUTE + db 24,MAROWAK + db 25,PINSIR + db 27,TANGELA + + db $00 + +WaterMons: ; d3fb (3:53fb) + db $00 + + db $05 + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 20,TENTACOOL + db 30,TENTACOOL + db 35,TENTACOOL + db 40,TENTACOOL + +WaterMons: ; d3fb (3:53fb) + db $00 + + db $05 + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 20,TENTACOOL + db 30,TENTACOOL + db 35,TENTACOOL + db 40,TENTACOOL + +IslandMons1: ; d411 (3:5411) + db $0F + db 18,ZUBAT + db 25,KRABBY + db 27,KRABBY + db 27,ZUBAT + db 36,ZUBAT + db 28,SLOWPOKE + db 30,SLOWPOKE + db 9,ZUBAT + db 27,GOLBAT + db 36,GOLBAT + + db $00 + +IslandMonsB1: ; d427 (3:5427) + db $0A + db 27,ZUBAT + db 26,KRABBY + db 36,ZUBAT + db 28,KRABBY + db 27,GOLBAT + db 29,SLOWPOKE + db 18,ZUBAT + db 28,KINGLER + db 22,SEEL + db 26,SEEL + + db $00 + +IslandMonsB2: ; d43d (3:543d) + db $0A + db 27,ZUBAT + db 27,KRABBY + db 36,ZUBAT + db 27,GOLBAT + db 28,KINGLER + db 24,SEEL + db 29,KRABBY + db 36,GOLBAT + db 31,SLOWPOKE + db 31,SLOWBRO + + db $00 + +IslandMonsB3: ; d453 (3:5453) + db $0A + db 27,GOLBAT + db 36,ZUBAT + db 29,KRABBY + db 27,ZUBAT + db 30,KINGLER + db 26,SEEL + db 31,KRABBY + db 30,SEEL + db 28,DEWGONG + db 32,DEWGONG + + db $05 + db 25,TENTACOOL + db 30,TENTACOOL + db 20,TENTACOOL + db 30,STARYU + db 35,TENTACOOL + db 30,STARYU + db 40,TENTACOOL + db 30,STARYU + db 30,STARYU + db 30,STARYU + +IslandMonsB4: ; d469 (3:5469) + db $0A + db 36,GOLBAT + db 36,ZUBAT + db 30,KRABBY + db 32,KINGLER + db 28,SEEL + db 32,SEEL + db 27,GOLBAT + db 45,ZUBAT + db 30,DEWGONG + db 34,DEWGONG + + db $05 + db 25,TENTACOOL + db 30,TENTACOOL + db 20,TENTACOOL + db 30,STARYU + db 35,TENTACOOL + db 30,STARYU + db 40,TENTACOOL + db 30,STARYU + db 30,STARYU + db 30,STARYU + +MansionMons1: ; d47f (3:547f) + db $0A + db 34,RATTATA + db 34,RATICATE + db 23,GRIMER + db 26,GROWLITHE + db 37,RATTATA + db 37,RATICATE + db 30,GROWLITHE + db 26,GRIMER + db 34,GROWLITHE + db 38,GROWLITHE + + db $00 + +MansionMons2: ; d495 (3:5495) + db $0A + db 37,RATTATA + db 37,RATICATE + db 26,GRIMER + db 29,GRIMER + db 40,RATTATA + db 40,RATICATE + db 32,GRIMER + db 35,GRIMER + db 35,MUK + db 38,MUK + + db $00 + +MansionMons3: ; d4ab (3:54ab) + db $0A + db 40,RATTATA + db 40,RATICATE + db 32,GRIMER + db 35,GRIMER + db 43,RATTATA + db 43,RATICATE + db 38,GRIMER + db 38,GRIMER + db 38,MUK + db 41,MUK + + db $00 + +MansionMonsB1: ; d4c1 (3:54c1) + db $0A + db 35,GRIMER + db 38,GRIMER + db 37,RATICATE + db 40,RATICATE + db 41,MUK + db 43,RATICATE + db 24,DITTO + db 46,RATICATE + db 18,DITTO + db 12,DITTO + + db $00 + +Route21Mons: ; d4d7 (3:54d7) + db $19 + db 15,PIDGEY + db 13,RATTATA + db 13,PIDGEY + db 11,PIDGEY + db 17,PIDGEY + db 15,RATTATA + db 15,RATICATE + db 17,PIDGEOTTO + db 19,PIDGEOTTO + db 15,PIDGEOTTO + + db $05 + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 5,TENTACOOL + db 10,TENTACOOL + db 15,TENTACOOL + db 20,TENTACOOL + db 30,TENTACOOL + db 35,TENTACOOL + db 40,TENTACOOL + +DungeonMons1: ; d501 (3:5501) + db $0A + db 50,GOLBAT + db 55,GOLBAT + db 45,GRAVELER + db 55,GLOOM + db 55,WEEPINBELL + db 52,SANDSLASH + db 54,VENOMOTH + db 54,PARASECT + db 55,DITTO + db 60,DITTO + + db $00 + +DungeonMons2: ; d517 (3:5517) + db $0F + db 52,GOLBAT + db 57,GOLBAT + db 50,GRAVELER + db 56,SANDSLASH + db 50,RHYHORN + db 60,DITTO + db 58,GLOOM + db 58,WEEPINBELL + db 60,RHYDON + db 58,RHYDON + + db $00 + +DungeonMonsB1: ; d52d (3:552d) + db $19 + db 54,GOLBAT + db 59,GOLBAT + db 55,GRAVELER + db 52,RHYHORN + db 62,RHYDON + db 60,DITTO + db 56,CHANSEY + db 65,DITTO + db 55,LICKITUNG + db 50,LICKITUNG + + db $00 + +PowerPlantMons: ; d543 (3:5543) + db $0A + db 30,MAGNEMITE + db 35,MAGNEMITE + db 33,MAGNETON + db 33,VOLTORB + db 37,VOLTORB + db 33,GRIMER + db 37,GRIMER + db 38,MAGNETON + db 33,MUK + db 37,MUK + + db $00 + +Route23Mons: ; d559 (3:5559) + db $0A + db 41,NIDORINO + db 41,NIDORINA + db 36,MANKEY + db 44,NIDORINO + db 44,NIDORINA + db 40,FEAROW + db 41,MANKEY + db 45,FEAROW + db 41,PRIMEAPE + db 46,PRIMEAPE + + db $00 + +PlateauMons2: ; d56f (3:556f) + db $0A + db 31,GEODUDE + db 36,GEODUDE + db 41,GEODUDE + db 44,ZUBAT + db 39,GOLBAT + db 44,GRAVELER + db 45,ONIX + db 47,ONIX + db 39,MACHOKE + db 42,MACHOKE + + db $00 + +PlateauMons3: ; d585 (3:5585) + db $0F + db 36,GEODUDE + db 44,GOLBAT + db 41,GEODUDE + db 49,ONIX + db 46,GEODUDE + db 41,GRAVELER + db 42,MACHOKE + db 45,MACHOKE + db 47,GRAVELER + db 47,GRAVELER + + db $00 + +PlateauMons1: ; d59b (3:559b) + db $0F + db 26,GEODUDE + db 31,GEODUDE + db 36,GEODUDE + db 39,ZUBAT + db 44,ZUBAT + db 41,GEODUDE + db 43,ONIX + db 45,ONIX + db 41,GRAVELER + db 47,GRAVELER + + db $00 + +CaveMons: ; d5b1 (3:55b1) + db $14 + db 18,DIGLETT + db 19,DIGLETT + db 17,DIGLETT + db 20,DIGLETT + db 16,DIGLETT + db 15,DIGLETT + db 21,DIGLETT + db 22,DIGLETT + db 29,DUGTRIO + db 31,DUGTRIO + + db $00 + +ENDC \ No newline at end of file diff --git a/main.asm b/main.asm index aabdc205..5832348c 100755 --- a/main.asm +++ b/main.asm @@ -1298,8 +1298,7 @@ IsBikeRidingAllowed:: ; 09c5 (0:09c5) scf ret -BikeRidingTilesets:: ; 09e2 (0:09e2) - db OVERWORLD, FOREST, UNDERGROUND, SHIP_PORT, CAVERN, $FF +INCLUDE "data/bike_riding_tilesets.asm" ; load the tile pattern data of the current tileset into VRAM LoadTilesetTilePatternData:: ; 09e8 (0:09e8) @@ -5977,81 +5976,7 @@ UpdateSprites:: ; 2429 (0:2429) ld [$2000], a ret -; mart inventories are below -; they are texts -; first byte $FE, next byte # of items, last byte $FF - -; Viridian -ViridianMartText6:: ; 2442 (0:2442) - db $FE,4,POKE_BALL,ANTIDOTE,PARLYZ_HEAL,BURN_HEAL,$FF - -; Pewter -PewterMartText1:: ; 2449 (0:2449) - db $FE,7,POKE_BALL,POTION,ESCAPE_ROPE,ANTIDOTE,BURN_HEAL,AWAKENING - db PARLYZ_HEAL,$FF - -; Cerulean -CeruleanMartText1:: ; 2453 (0:2453) - db $FE,7,POKE_BALL,POTION,REPEL,ANTIDOTE,BURN_HEAL,AWAKENING - db PARLYZ_HEAL,$FF - -; Bike shop - db $FE,1,BICYCLE,$FF - -; Vermilion -VermilionMartText1:: ; 2461 (0:2461) - db $FE,6,POKE_BALL,SUPER_POTION,ICE_HEAL,AWAKENING,PARLYZ_HEAL - db REPEL,$FF - -; Lavender -LavenderMartText1:: ; 246a (0:246a) - db $FE,9,GREAT_BALL,SUPER_POTION,REVIVE,ESCAPE_ROPE,SUPER_REPEL - db ANTIDOTE,BURN_HEAL,ICE_HEAL,PARLYZ_HEAL,$FF - -; Celadon Dept. Store 2F (1) -CeladonMart2Text1:: ; 2476 (0:2476) - db $FE,9,GREAT_BALL,SUPER_POTION,REVIVE,SUPER_REPEL,ANTIDOTE - db BURN_HEAL,ICE_HEAL,AWAKENING,PARLYZ_HEAL,$FF - -; Celadon Dept. Store 2F (2) -CeladonMart2Text2:: ; 2482 (0:2482) - db $FE,9,TM_32,TM_33,TM_02,TM_07,TM_37,TM_01,TM_05,TM_09,TM_17,$FF - -; Celadon Dept. Store 4F -CeladonMart4Text1:: ; 248e (0:248e) - db $FE,5,POKE_DOLL,FIRE_STONE,THUNDER_STONE,WATER_STONE,LEAF_STONE,$FF - -; Celadon Dept. Store 5F (1) -CeladonMart5Text3:: ; 2496 (0:2496) - db $FE,7,X_ACCURACY,GUARD_SPEC_,DIRE_HIT,X_ATTACK,X_DEFEND,X_SPEED - db X_SPECIAL,$FF - -; Celadon Dept. Store 5F (2) -CeladonMart5Text4:: ; 24a0 (0:24a0) - db $FE,5,HP_UP,PROTEIN,IRON,CARBOS,CALCIUM,$FF - -; Fuchsia -FuchsiaMartText1:: ; 24a8 (0:24a8) - db $FE,6,ULTRA_BALL,GREAT_BALL,SUPER_POTION,REVIVE,FULL_HEAL - db SUPER_REPEL,$FF - -; unused? 24b1 - db $FE,5,GREAT_BALL,HYPER_POTION,SUPER_POTION,FULL_HEAL,REVIVE,$FF - -; Cinnabar -CinnabarMartText1:: ; 24b9 (0:24b9) - db $FE,7,ULTRA_BALL,GREAT_BALL,HYPER_POTION,MAX_REPEL,ESCAPE_ROPE - db FULL_HEAL,REVIVE,$FF - -; Saffron -SaffronMartText1:: ; 24c3 (0:24c3) - db $FE,6,GREAT_BALL,HYPER_POTION,MAX_REPEL,ESCAPE_ROPE,FULL_HEAL - db REVIVE,$FF - -; Indigo -IndigoPlateauLobbyText4:: ; 24cc (0:24cc) - db $FE,7,ULTRA_BALL,GREAT_BALL,FULL_RESTORE,MAX_POTION,FULL_HEAL - db REVIVE,MAX_REPEL,$FF +INCLUDE "data/mart_inventories.asm" TextScriptEndingChar:: ; 24d6 (0:24d6) db "@" @@ -8462,23 +8387,7 @@ PlayTrainerMusic:: ; 33e8 (0:33e8) ld [$c0ee], a jp PlaySound -FemaleTrainerList:: ; 3434 (0:3434) - db $c8+LASS - db $c8+JR__TRAINER_F - db $c8+BEAUTY - db $c8+COOLTRAINER_F - db $FF - -EvilTrainerList:: ; 3439 (0:3439) - db $c8+JUGGLER_X - db $c8+GAMBLER - db $c8+ROCKER - db $c8+JUGGLER - db $c8+CHIEF - db $c8+SCIENTIST - db $c8+GIOVANNI - db $c8+ROCKET - db $FF +INCLUDE "data/trainer_types.asm" Func_3442:: ; 3442 (0:3442) ld a, [hli] @@ -10737,41 +10646,7 @@ MewPicFront: ; 4112 (1:4112) MewPicBack: ; 4205 (1:4205) INCBIN "pic/monback/mewb.pic" -MewBaseStats: ; 425b (1:425b) - db DEX_MEW ; pokedex id - db 100 ; base hp - db 100 ; base attack - db 100 ; base defense - db 100 ; base speed - db 100 ; base special - - db PSYCHIC ; species type 1 - db PSYCHIC ; species type 2 - - db 45 ; catch rate - db 64 ; base exp yield - db $55 ; sprite dimensions - - dw MewPicFront - dw MewPicBack - - ; attacks known at lvl 0 - db POUND - db 0 - db 0 - db 0 - - db 3 ; growth rate - - ; include learnset directly - db %11111111 - db %11111111 - db %11111111 - db %11111111 - db %11111111 - db %11111111 - db %11111111 - db %11111111 ; usually spacing +INCLUDE "data/mew_base_stats.asm" Func_4277: ; 4277 (1:4277) ld hl, $cce9 @@ -11195,62 +11070,7 @@ CopyrightTextString: ; 4556 (1:4556) next $60,$61,$62,$61,$63,$61,$64,$7F,$73,$74,$75,$76,$77,$78,$79,$7A,$7B ; ©'95.'96.'98 GAME FREAK inc. db "@" -TitleMons: ; 4588 (1:4588) -; mons on the title screen are randomly chosen from here -IF _RED - db CHARMANDER - db SQUIRTLE - db BULBASAUR - db WEEDLE - db NIDORAN_M - db SCYTHER - db PIKACHU - db CLEFAIRY - db RHYDON - db ABRA - db GASTLY - db DITTO - db PIDGEOTTO - db ONIX - db PONYTA - db MAGIKARP -ENDC -IF _GREEN - db BULBASAUR - db CHARMANDER - db SQUIRTLE - db CATERPIE - db NIDORAN_F - db PINSIR - db PIKACHU - db CLEFAIRY - db RHYDON - db ABRA - db GASTLY - db DITTO - db PIDGEOTTO - db ONIX - db PONYTA - db MAGIKARP -ENDC -IF _BLUE - db SQUIRTLE - db CHARMANDER - db BULBASAUR - db MANKEY - db HITMONLEE - db VULPIX - db CHANSEY - db AERODACTYL - db JOLTEON - db SNORLAX - db GLOOM - db POLIWAG - db DODUO - db PORYGON - db GENGAR - db RAICHU -ENDC +INCLUDE "data/title_mons.asm" ; prints version text (red, blue) PrintGameVersionOnTitleScreen: ; 4598 (1:4598) @@ -11323,203 +11143,9 @@ LoadMonData_: ; 45b6 (1:45b6) ld bc,44 jp CopyData -ItemPrices: ; 4608 (1:4608) - db $00,$00,$00 - db $00,$12,$00 - db $00,$06,$00 - db $00,$02,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$10,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$01,$00 - db $00,$02,$50 - db $00,$02,$50 - db $00,$02,$00 - db $00,$02,$00 - db $00,$30,$00 - db $00,$25,$00 - db $00,$15,$00 - db $00,$07,$00 - db $00,$03,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$05,$50 - db $00,$03,$50 - db $00,$00,$00 - db $00,$21,$00 - db $00,$21,$00 - db $00,$21,$00 - db $00,$98,$00 - db $00,$98,$00 - db $00,$98,$00 - db $00,$98,$00 - db $00,$98,$00 - db $00,$48,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$09,$50 - db $00,$21,$00 - db $00,$00,$00 - db $01,$00,$00 - db $00,$98,$00 - db $00,$10,$00 - db $00,$06,$00 - db $00,$15,$00 - db $00,$40,$00 - db $00,$07,$00 - db $00,$05,$00 - db $00,$07,$00 - db $00,$06,$50 - db $00,$00,$10 - db $00,$02,$00 - db $00,$03,$00 - db $00,$03,$50 - db $00,$00,$00 - db $00,$00,$00 - db $00,$05,$00 - db $00,$05,$50 - db $00,$03,$50 - db $00,$03,$50 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - db $00,$00,$00 - -ItemNames: ; 472b (1:472b) - db "MASTER BALL@" - db "ULTRA BALL@" - db "GREAT BALL@" - db "POKé BALL@" - db "TOWN MAP@" - db "BICYCLE@" - db "?????@" - db "SAFARI BALL@" - db "POKéDEX@" - db "MOON STONE@" - db "ANTIDOTE@" - db "BURN HEAL@" - db "ICE HEAL@" - db "AWAKENING@" - db "PARLYZ HEAL@" - db "FULL RESTORE@" - db "MAX POTION@" - db "HYPER POTION@" - db "SUPER POTION@" - db "POTION@" - db "BOULDERBADGE@" - db "CASCADEBADGE@" - db "THUNDERBADGE@" - db "RAINBOWBADGE@" - db "SOULBADGE@" - db "MARSHBADGE@" - db "VOLCANOBADGE@" - db "EARTHBADGE@" - db "ESCAPE ROPE@" - db "REPEL@" - db "OLD AMBER@" - db "FIRE STONE@" - db "THUNDERSTONE@" - db "WATER STONE@" - db "HP UP@" - db "PROTEIN@" - db "IRON@" - db "CARBOS@" - db "CALCIUM@" - db "RARE CANDY@" - db "DOME FOSSIL@" - db "HELIX FOSSIL@" - db "SECRET KEY@" - db "?????@" - db "BIKE VOUCHER@" - db "X ACCURACY@" - db "LEAF STONE@" - db "CARD KEY@" - db "NUGGET@" - db "PP UP@" - db "POKé DOLL@" - db "FULL HEAL@" - db "REVIVE@" - db "MAX REVIVE@" - db "GUARD SPEC.@" - db "SUPER REPEL@" - db "MAX REPEL@" - db "DIRE HIT@" - db "COIN@" - db "FRESH WATER@" - db "SODA POP@" - db "LEMONADE@" - db "S.S.TICKET@" - db "GOLD TEETH@" - db "X ATTACK@" - db "X DEFEND@" - db "X SPEED@" - db "X SPECIAL@" - db "COIN CASE@" - db "OAK's PARCEL@" - db "ITEMFINDER@" - db "SILPH SCOPE@" - db "POKé FLUTE@" - db "LIFT KEY@" - db "EXP.ALL@" - db "OLD ROD@" - db "GOOD ROD@" - db "SUPER ROD@" - db "PP UP@" - db "ETHER@" - db "MAX ETHER@" - db "ELIXER@" - db "MAX ELIXER@" - db "B2F@" - db "B1F@" - db "1F@" - db "2F@" - db "3F@" - db "4F@" - db "5F@" - db "6F@" - db "7F@" - db "8F@" - db "9F@" - db "10F@" - db "11F@" - db "B4F@" +INCLUDE "data/item_prices.asm" + +INCLUDE "text/item_names.asm" UnusedNames: ; 4a92 (1:4a92) db "かみなりバッヂ@" @@ -18366,255 +17992,7 @@ HandleJoypadResetButtons: ; c03c (3:403c) jp z, SoftReset jp GetJoypadState -MapSongBanks: ; c04d (3:404d) - db MUSIC_PALLET_TOWN, BANK(Music_PalletTown) ;PALLET_TOWN - db MUSIC_CITIES1, BANK(Music_Cities1) ; VIRIDIAN_CITY - db MUSIC_CITIES1, BANK(Music_Cities1) ; PEWTER_CITY - db MUSIC_CITIES2, BANK(Music_Cities2) ; CERULEAN_CITY - db MUSIC_LAVENDER, BANK(Music_Lavender) ; LAVENDER_TOWN - db MUSIC_VERMILION, BANK(Music_Vermilion) ; VERMILION_CITY - db MUSIC_CELADON, BANK(Music_Celadon) ; CELADON_CITY - db MUSIC_CITIES2, BANK(Music_Cities2) ; FUCHSIA_CITY - db MUSIC_CINNABAR, BANK(Music_Cinnabar) ; CINNABAR_ISLAND - db MUSIC_INDIGO_PLATEAU, BANK(Music_IndigoPlateau) ; INDIGO_PLATEAU - db MUSIC_CITIES1, BANK(Music_Cities1) ; SAFFRON_CITY - db MUSIC_CITIES1, BANK(Music_Cities1) ; unused - db MUSIC_ROUTES1, BANK(Music_Routes1) ; ROUTE_1 - db MUSIC_ROUTES1, BANK(Music_Routes1) ; ROUTE_2 - db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_3 - db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_4 - db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_5 - db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_6 - db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_7 - db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_8 - db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_9 - db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_10 - db MUSIC_ROUTES4, BANK(Music_Routes4) ; ROUTE_11 - db MUSIC_ROUTES4, BANK(Music_Routes4) ; ROUTE_12 - db MUSIC_ROUTES4, BANK(Music_Routes4) ; ROUTE_13 - db MUSIC_ROUTES4, BANK(Music_Routes4) ; ROUTE_14 - db MUSIC_ROUTES4, BANK(Music_Routes4) ; ROUTE_15 - db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_16 - db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_17 - db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_18 - db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_19 - db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_20 - db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_21 - db MUSIC_ROUTES3, BANK(Music_Routes3) ; ROUTE_22 - db MUSIC_INDIGO_PLATEAU, BANK(Music_IndigoPlateau) ; ROUTE_23 - db MUSIC_ROUTES2, BANK(Music_Routes2) ; ROUTE_24 - db MUSIC_ROUTES2, BANK(Music_Routes2) ; ROUTE_25 - db MUSIC_PALLET_TOWN, BANK(Music_PalletTown) ; RedsHouse1F - db MUSIC_PALLET_TOWN, BANK(Music_PalletTown) ; RedsHouse2F - db MUSIC_PALLET_TOWN, BANK(Music_PalletTown) ; BluesHouse - db MUSIC_OAKS_LAB, BANK(Music_OaksLab) ; OaksLab - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; ViridianPokecenter - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; ViridianMart - db MUSIC_CITIES1, BANK(Music_Cities1) ; School - db MUSIC_CITIES1, BANK(Music_Cities1) ; ViridianHouse - db MUSIC_GYM, BANK(Music_Gym) ; ViridianGym - db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; DiglettsCaveRoute2 - db MUSIC_CITIES1, BANK(Music_Cities1) ; ViridianForestExit - db MUSIC_CITIES1, BANK(Music_Cities1) ; Route2House - db MUSIC_CITIES1, BANK(Music_Cities1) ; Route2Gate - db MUSIC_CITIES1, BANK(Music_Cities1) ; ViridianForestEntrance - db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; ViridianForest - db MUSIC_CITIES1, BANK(Music_Cities1) ; Museum1F - db MUSIC_CITIES1, BANK(Music_Cities1) ; Museum2F - db MUSIC_GYM, BANK(Music_Gym) ; PewterGym - db MUSIC_CITIES1, BANK(Music_Cities1) ; PewterHouse1 - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; PewterMart - db MUSIC_CITIES1, BANK(Music_Cities1) ; PewterHouse2 - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; PewterPokecenter - db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; MtMoon1 - db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; MtMoon2 - db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; MtMoon3 - db MUSIC_CITIES2, BANK(Music_Cities2) ; CeruleanHouseTrashed - db MUSIC_CITIES2, BANK(Music_Cities2) ; CeruleanHouse1 - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeruleanPokecenter - db MUSIC_GYM, BANK(Music_Gym) ; CeruleanGym - db MUSIC_CITIES2, BANK(Music_Cities2) ; BikeShop - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeruleanMart - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; MtMoonPokecenter - db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; CeruleanHouseTrashed - db MUSIC_CITIES1, BANK(Music_Cities1) ; Route5Gate - db MUSIC_CITIES1, BANK(Music_Cities1) ; UndergroundTunnelEntranceRoute5 - db MUSIC_CITIES1, BANK(Music_Cities1) ; DayCareM - db MUSIC_CITIES1, BANK(Music_Cities1) ; Route6Gate - db MUSIC_CITIES1, BANK(Music_Cities1) ; UndergroundTunnelEntranceRoute6 - db MUSIC_VERMILION, BANK(Music_Vermilion) ; FREEZE - db MUSIC_CITIES1, BANK(Music_Cities1) ; Route7Gate - db MUSIC_CITIES1, BANK(Music_Cities1) ; UndergroundPathEntranceRoute7 - db MUSIC_CELADON, BANK(Music_Celadon) ;FREEZE - db MUSIC_CITIES1, BANK(Music_Cities1) ; Route8Gate - db MUSIC_CITIES1, BANK(Music_Cities1) ; UndergroundPathEntranceRoute8 - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; RockTunnelPokecenter - db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; RockTunnel1 - db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; PowerPlant - db MUSIC_VERMILION, BANK(Music_Vermilion) ; Route11Gate - db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; DiglettsCaveEntranceRoute11 - db MUSIC_VERMILION, BANK(Music_Vermilion) ; Route11GateUpstairs - db MUSIC_CITIES1, BANK(Music_Cities1) ; Route12Gate - db MUSIC_CITIES2, BANK(Music_Cities2) ; BillsHouse - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; VermilionPokecenter - db MUSIC_VERMILION, BANK(Music_Vermilion) ; FanClub - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; VermilionMart - db MUSIC_GYM, BANK(Music_Gym) ; VermilionGym - db MUSIC_VERMILION, BANK(Music_Vermilion) ; VermilionHouse1 - db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; VermilionDock - db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne1 - db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne2 - db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne3 - db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne4 - db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne5 - db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne6 - db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne7 - db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne8 - db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne9 - db MUSIC_SS_ANNE, BANK(Music_SSAnne) ; SSAnne10 - db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ;unused - db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ;unused - db MUSIC_SS_ANNE, BANK(Music_SSAnne) ;unused - db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; VictoryRoad1 - db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ;unused - db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ;unused - db MUSIC_SILPH_CO, BANK(Music_SilphCo) ;unused - db MUSIC_SILPH_CO, BANK(Music_SilphCo) ;unused - db MUSIC_INDIGO_PLATEAU, BANK(Music_IndigoPlateau) ; Lance - db MUSIC_SS_ANNE, BANK(Music_SSAnne) ;unused - db MUSIC_SS_ANNE, BANK(Music_SSAnne) ;unused - db MUSIC_SS_ANNE, BANK(Music_SSAnne) ;unused - db MUSIC_SS_ANNE, BANK(Music_SSAnne) ;unused - db MUSIC_PALLET_TOWN, BANK(Music_PalletTown) ; HallofFameRoom - db MUSIC_ROUTES1, BANK(Music_Routes1) ; UndergroundPathNS - db MUSIC_INDIGO_PLATEAU, BANK(Music_IndigoPlateau) ; Gary - db MUSIC_ROUTES1, BANK(Music_Routes1) ; UndergroundPathWE - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonMart1 - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonMart2 - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonMart3 - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonMart4 - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonMartRoof - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonMartElevator - db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonMansion1 - db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonMansion2 - db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonMansion3 - db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonMansion4 - db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonMansion5 - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonPokecenter - db MUSIC_GYM, BANK(Music_Gym) ; CeladonGym - db MUSIC_GAME_CORNER, BANK(Music_GameCorner) ; CeladonGameCorner - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CeladonMart5 - db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonPrizeRoom - db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonDiner - db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonHouse - db MUSIC_CELADON, BANK(Music_Celadon) ; CeladonHotel - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; LavenderPokecenter - db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; PokemonTower1 - db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; PokemonTower2 - db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; PokemonTower3 - db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; PokemonTower4 - db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; PokemonTower5 - db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; PokemonTower6 - db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; PokemonTower7 - db MUSIC_LAVENDER, BANK(Music_Lavender) ; LavenderHouse1 - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; LavenderMart - db MUSIC_LAVENDER, BANK(Music_Lavender) ; LavenderHouse2 - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; FuchsiaMart - db MUSIC_CITIES2, BANK(Music_Cities2) ; FuchsiaHouse1 - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; FuchsiaPokecenter - db MUSIC_CITIES2, BANK(Music_Cities2) ; FuchsiaHouse2 - db MUSIC_CITIES2, BANK(Music_Cities2) ; SafariZoneEntrance - db MUSIC_GYM, BANK(Music_Gym) ; FuchsiaGym - db MUSIC_CITIES2, BANK(Music_Cities2) ; FuchsiaMeetingRoom - db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; SeafoamIslands2 - db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; SeafoamIslands3 - db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; SeafoamIslands4 - db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; SeafoamIslands5 - db MUSIC_CITIES2, BANK(Music_Cities2) ; VermilionHouse2 - db MUSIC_CITIES2, BANK(Music_Cities2) ; FuchsiaHouse3 - db MUSIC_CINNABAR_MANSION, BANK(Music_CinnabarMansion) ; Mansion1 - db MUSIC_GYM, BANK(Music_Gym) ; CinnabarGym - db MUSIC_CINNABAR, BANK(Music_Cinnabar) ; Lab1 - db MUSIC_CINNABAR, BANK(Music_Cinnabar) ; Lab2 - db MUSIC_CINNABAR, BANK(Music_Cinnabar) ; Lab3 - db MUSIC_CINNABAR, BANK(Music_Cinnabar) ; Lab4 - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CinnabarPokecenter - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; CinnabarMart - db MUSIC_CINNABAR, BANK(Music_Cinnabar) - db MUSIC_INDIGO_PLATEAU, BANK(Music_IndigoPlateau) ; IndigoPlateauLobby - db MUSIC_CITIES1, BANK(Music_Cities1) ; CopycatsHouse1F - db MUSIC_CITIES1, BANK(Music_Cities1) ; CopycatsHouse2F - db MUSIC_CITIES1, BANK(Music_Cities1) ; FightingDojo - db MUSIC_GYM, BANK(Music_Gym) ; SaffronGym - db MUSIC_CITIES1, BANK(Music_Cities1) ; SaffronHouse1 - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; SaffronMart - db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo1 - db MUSIC_POKECENTER, BANK(Music_Pokecenter) ; SaffronPokecenter - db MUSIC_CITIES1, BANK(Music_Cities1) ; SaffronHouse2 - db MUSIC_CITIES1, BANK(Music_Cities1) ; Route15Gate - db MUSIC_CITIES1, BANK(Music_Cities1) ; Route15GateUpstairs - db MUSIC_CITIES1, BANK(Music_Cities1) ; Route16Gate - db MUSIC_CITIES1, BANK(Music_Cities1) ; Route16GateUpstairs - db MUSIC_CELADON, BANK(Music_Celadon) ; Route16House - db MUSIC_CELADON, BANK(Music_Celadon) ; Route12House - db MUSIC_CITIES1, BANK(Music_Cities1) ; Route18Gate - db MUSIC_CITIES1, BANK(Music_Cities1) ; Route18GateUpstairs - db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; SeafoamIslands1 - db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; Route22Gate - db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; VictoryRoad2 - db MUSIC_CITIES1, BANK(Music_Cities1) ; Route12GateUpstairs - db MUSIC_VERMILION, BANK(Music_Vermilion) ; VermilionHouse3 - db MUSIC_DUNGEON2, BANK(Music_Dungeon2) ; DiglettsCave - db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; VictoryRoad3 - db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; RocketHideout1 - db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; RocketHideout2 - db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; RocketHideout3 - db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; RocketHideout4 - db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; RocketHideoutElevator - db MUSIC_DUNGEON1, BANK(Music_Dungeon1) - db MUSIC_DUNGEON1, BANK(Music_Dungeon1) - db MUSIC_DUNGEON1, BANK(Music_Dungeon1) - db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo2 - db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo3 - db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo4 - db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo5 - db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo6 - db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo7 - db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo8 - db MUSIC_CINNABAR_MANSION, BANK(Music_CinnabarMansion) ; Mansion2 - db MUSIC_CINNABAR_MANSION, BANK(Music_CinnabarMansion) ; Mansion3 - db MUSIC_CINNABAR_MANSION, BANK(Music_CinnabarMansion) ; Mansion4 - db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneEast - db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneNorth - db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneWest - db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneCenter - db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneRestHouse1 - db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneSecretHouse - db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneRestHouse2 - db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneRestHouse3 - db MUSIC_SAFARI_ZONE, BANK(Music_SafariZone) ; SafariZoneRestHouse4 - db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; UnknownDungeon2 - db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; UnknownDungeon3 - db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; UnknownDungeon1 - db MUSIC_CITIES2, BANK(Music_Cities2) ; NameRater - db MUSIC_CITIES1, BANK(Music_Cities1) ; CeruleanHouse2 - db MUSIC_CINNABAR, BANK(Music_Cinnabar) - db MUSIC_DUNGEON3, BANK(Music_Dungeon3) ; RockTunnel2 - db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo9 - db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo10 - db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCo11 - db MUSIC_SILPH_CO, BANK(Music_SilphCo) ; SilphCoElevator - db MUSIC_SILPH_CO, BANK(Music_SilphCo) - db MUSIC_SILPH_CO, BANK(Music_SilphCo) - db MUSIC_CELADON, BANK(Music_Celadon) ; BattleCenterM - db MUSIC_CELADON, BANK(Music_Celadon) ; TradeCenterM - db MUSIC_SILPH_CO, BANK(Music_SilphCo) - db MUSIC_SILPH_CO, BANK(Music_SilphCo) - db MUSIC_SILPH_CO, BANK(Music_SilphCo) - db MUSIC_SILPH_CO, BANK(Music_SilphCo) - db MUSIC_GYM, BANK(Music_Gym) ; Lorelei - db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; Bruno - db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; Agatha +INCLUDE "data/map_songs.asm" ; see also MapHeaderPointers MapHeaderBanks: ; c23d (3:423d) @@ -18971,17 +18349,7 @@ CheckForceBikeOrSurf: ; c38b (3:438b) ld [$d11a], a jp ForceBikeOrSurf -ForcedBikeOrSurfMaps: ; c3e6 (3:43e6) -; map id, y, x - db ROUTE_16,$0A,$11 - db ROUTE_16,$0B,$11 - db ROUTE_18,$08,$21 - db ROUTE_18,$09,$21 - db SEAFOAM_ISLANDS_4,$07,$12 - db SEAFOAM_ISLANDS_4,$07,$13 - db SEAFOAM_ISLANDS_5,$0E,$04 - db SEAFOAM_ISLANDS_5,$0E,$05 - db $FF ;end +INCLUDE "data/force_bike_surf.asm" Func_c3ff: ; c3ff (3:43ff) push hl @@ -19619,8 +18987,7 @@ Func_c754: ; c754 (3:4754) .asm_c7b1 ret -DungeonTilesets: ; c7b2 (3:47b2) - db FOREST, MUSEUM, SHIP, CAVERN, LOBBY, MANSION, GATE, LAB, FACILITY, CEMETERY, GYM, $FF +INCLUDE "data/dungeon_tilesets.asm" Tilesets: ; c7be (3:47be) tileset Overworld_Block, Overworld_GFX, Overworld_Coll, $FF,$FF,$FF, $52, OUTDOOR @@ -20487,30351 +19854,20231 @@ LoadWildData: ; ceb8 (3:4eb8) ld bc,$0014 jp CopyData -WildDataPointers: ; ceeb (3:4eeb) - dw NoMons ; PALLET_TOWN - dw NoMons ; VIRIDIAN_CITY - dw NoMons ; PEWTER_CITY - dw NoMons ; CERULEAN_CITY - dw NoMons ; LAVENDER_TOWN - dw NoMons ; VERMILION_CITY - dw NoMons ; CELADON_CITY - dw NoMons ; FUCHSIA_CITY - dw NoMons ; CINNABAR_ISLAND - dw NoMons ; INDIGO_PLATEAU - dw NoMons ; SAFFRON_CITY - dw NoMons ; unused - dw Route1Mons ; ROUTE_1 - dw Route2Mons ; ROUTE_2 - dw Route3Mons ; ROUTE_3 - dw Route4Mons ; ROUTE_4 - dw Route5Mons ; ROUTE_5 - dw Route6Mons ; ROUTE_6 - dw Route7Mons ; ROUTE_7 - dw Route8Mons ; ROUTE_8 - dw Route9Mons ; ROUTE_9 - dw Route10Mons ; ROUTE_10 - dw Route11Mons ; ROUTE_11 - dw Route12Mons ; ROUTE_12 - dw Route13Mons ; ROUTE_13 - dw Route14Mons ; ROUTE_14 - dw Route15Mons ; ROUTE_15 - dw Route16Mons ; ROUTE_16 - dw Route17Mons ; ROUTE_17 - dw Route18Mons ; ROUTE_18 - dw WaterMons ; ROUTE_19 - dw WaterMons ; ROUTE_20 - dw Route21Mons ; ROUTE_21 - dw Route22Mons ; ROUTE_22 - dw Route23Mons ; ROUTE_23 - dw Route24Mons ; ROUTE_24 - dw Route25Mons ; ROUTE_25 - dw NoMons ; REDS_HOUSE_1F - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw ForestMons ; ViridianForest - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw MoonMons1 - dw MoonMonsB1 - dw MoonMonsB2 - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw TunnelMonsB1 - dw PowerPlantMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw PlateauMons1 - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw TowerMons1 - dw TowerMons2 - dw TowerMons3 - dw TowerMons4 - dw TowerMons5 - dw TowerMons6 - dw TowerMons7 - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw IslandMonsB1 - dw IslandMonsB2 - dw IslandMonsB3 - dw IslandMonsB4 - dw NoMons - dw NoMons - dw MansionMons1 - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw IslandMons1 - dw NoMons - dw PlateauMons2 - dw NoMons - dw NoMons - dw CaveMons - dw PlateauMons3 - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw MansionMons2 - dw MansionMons3 - dw MansionMonsB1 - dw ZoneMons1 - dw ZoneMons2 - dw ZoneMons3 - dw ZoneMonsCenter - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw DungeonMons2 - dw DungeonMonsB1 - dw DungeonMons1 - dw NoMons - dw NoMons - dw NoMons - dw TunnelMonsB2 - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw NoMons - dw $FFFF - -; wild pokemon data is divided into two parts. -; first part: pokemon found in grass -; second part: pokemon found while surfing -; each part goes as follows: - ; if first byte == 00, then - ; no wild pokemon on this map - ; if first byte != 00, then - ; first byte is encounter rate - ; followed by 20 bytes: - ; level, species (ten times) - -IF _RED -NoMons: ; d0dd (3:50dd) - db $00 - - db $00 - -Route1Mons: ; d0df (3:50df) - db $19 - db 3,PIDGEY - db 3,RATTATA - db 3,RATTATA - db 2,RATTATA - db 2,PIDGEY - db 3,PIDGEY - db 3,PIDGEY - db 4,RATTATA - db 4,PIDGEY - db 5,PIDGEY - - db $00 - -Route2Mons: ; d0f5 (3:50f5) - db $19 - db 3,RATTATA - db 3,PIDGEY - db 4,PIDGEY - db 4,RATTATA - db 5,PIDGEY - db 3,WEEDLE - db 2,RATTATA - db 5,RATTATA - db 4,WEEDLE - db 5,WEEDLE - - db $00 - -Route22Mons: ; d10b (3:510b) - db $19 - db 3,RATTATA - db 3,NIDORAN_M - db 4,RATTATA - db 4,NIDORAN_M - db 2,RATTATA - db 2,NIDORAN_M - db 3,SPEAROW - db 5,SPEAROW - db 3,NIDORAN_F - db 4,NIDORAN_F - - db $00 - -ForestMons: ; d121 (3:5121) - db $08 - db 4,WEEDLE - db 5,KAKUNA - db 3,WEEDLE - db 5,WEEDLE - db 4,KAKUNA - db 6,KAKUNA - db 4,METAPOD - db 3,CATERPIE - db 3,PIKACHU - db 5,PIKACHU - - db $00 - -Route3Mons: ; d137 (3:5137) - db $14 - db 6,PIDGEY - db 5,SPEAROW - db 7,PIDGEY - db 6,SPEAROW - db 7,SPEAROW - db 8,PIDGEY - db 8,SPEAROW - db 3,JIGGLYPUFF - db 5,JIGGLYPUFF - db 7,JIGGLYPUFF - - db $00 - -MoonMons1: ; d14d (3:514d) - db $0A - db 8,ZUBAT - db 7,ZUBAT - db 9,ZUBAT - db 8,GEODUDE - db 6,ZUBAT - db 10,ZUBAT - db 10,GEODUDE - db 8,PARAS - db 11,ZUBAT - db 8,CLEFAIRY - - db $00 - -MoonMonsB1: ; d163 (3:5163) - db $0A - db 8,ZUBAT - db 7,ZUBAT - db 7,GEODUDE - db 8,GEODUDE - db 9,ZUBAT - db 10,PARAS - db 10,ZUBAT - db 11,ZUBAT - db 9,CLEFAIRY - db 9,GEODUDE - - db $00 - -MoonMonsB2: ; d179 (3:5179) - db $0A - db 9,ZUBAT - db 9,GEODUDE - db 10,ZUBAT - db 10,GEODUDE - db 11,ZUBAT - db 10,PARAS - db 12,PARAS - db 10,CLEFAIRY - db 12,ZUBAT - db 12,CLEFAIRY - - db $00 - -Route4Mons: ; d18f (3:518f) - db $14 - db 10,RATTATA - db 10,SPEAROW - db 8,RATTATA - db 6,EKANS - db 8,SPEAROW - db 10,EKANS - db 12,RATTATA - db 12,SPEAROW - db 8,EKANS - db 12,EKANS - - db $00 - -Route24Mons: ; d1a5 (3:51a5) - db $19 - db 7,WEEDLE - db 8,KAKUNA - db 12,PIDGEY - db 12,ODDISH - db 13,ODDISH - db 10,ABRA - db 14,ODDISH - db 13,PIDGEY - db 8,ABRA - db 12,ABRA - - db $00 - -Route25Mons: ; d1bb (3:51bb) - db $0F - db 8,WEEDLE - db 9,KAKUNA - db 13,PIDGEY - db 12,ODDISH - db 13,ODDISH - db 12,ABRA - db 14,ODDISH - db 10,ABRA - db 7,METAPOD - db 8,CATERPIE - - db $00 - -Route9Mons: ; d1d1 (3:51d1) - db $0F - db 16,RATTATA - db 16,SPEAROW - db 14,RATTATA - db 11,EKANS - db 13,SPEAROW - db 15,EKANS - db 17,RATTATA - db 17,SPEAROW - db 13,EKANS - db 17,EKANS - - db $00 - -Route5Mons: ; d1e7 (3:51e7) - db $0F - db 13,ODDISH - db 13,PIDGEY - db 15,PIDGEY - db 10,MANKEY - db 12,MANKEY - db 15,ODDISH - db 16,ODDISH - db 16,PIDGEY - db 14,MANKEY - db 16,MANKEY - - db $00 - -Route6Mons: ; d1fd (3:51fd) - db $0F - db 13,ODDISH - db 13,PIDGEY - db 15,PIDGEY - db 10,MANKEY - db 12,MANKEY - db 15,ODDISH - db 16,ODDISH - db 16,PIDGEY - db 14,MANKEY - db 16,MANKEY - - db $00 - -Route11Mons: ; d213 (3:5213) - db $0F - db 14,EKANS - db 15,SPEAROW - db 12,EKANS - db 9,DROWZEE - db 13,SPEAROW - db 13,DROWZEE - db 15,EKANS - db 17,SPEAROW - db 11,DROWZEE - db 15,DROWZEE - - db $00 - -TunnelMonsB1: ; d229 (3:5229) - db $0F - db 16,ZUBAT - db 17,ZUBAT - db 17,GEODUDE - db 15,MACHOP - db 16,GEODUDE - db 18,ZUBAT - db 15,ZUBAT - db 17,MACHOP - db 13,ONIX - db 15,ONIX - - db $00 - -TunnelMonsB2: ; d23f (3:523f) - db $0F - db 16,ZUBAT - db 17,ZUBAT - db 17,GEODUDE - db 15,MACHOP - db 16,GEODUDE - db 18,ZUBAT - db 17,MACHOP - db 17,ONIX - db 13,ONIX - db 18,GEODUDE - - db $00 - -Route10Mons: ; d255 (3:5255) - db $0F - db 16,VOLTORB - db 16,SPEAROW - db 14,VOLTORB - db 11,EKANS - db 13,SPEAROW - db 15,EKANS - db 17,VOLTORB - db 17,SPEAROW - db 13,EKANS - db 17,EKANS - - db $00 - -Route12Mons: ; d26b (3:526b) - db $0F - db 24,ODDISH - db 25,PIDGEY - db 23,PIDGEY - db 24,VENONAT - db 22,ODDISH - db 26,VENONAT - db 26,ODDISH - db 27,PIDGEY - db 28,GLOOM - db 30,GLOOM - - db $00 - -Route8Mons: ; d281 (3:5281) - db $0F - db 18,PIDGEY - db 18,MANKEY - db 17,EKANS - db 16,GROWLITHE - db 20,PIDGEY - db 20,MANKEY - db 19,EKANS - db 17,GROWLITHE - db 15,GROWLITHE - db 18,GROWLITHE - - db $00 - -Route7Mons: ; d297 (3:5297) - db $0F - db 19,PIDGEY - db 19,ODDISH - db 17,MANKEY - db 22,ODDISH - db 22,PIDGEY - db 18,MANKEY - db 18,GROWLITHE - db 20,GROWLITHE - db 19,MANKEY - db 20,MANKEY - - db $00 - -TowerMons1: ; d2ad (3:52ad) - db $00 - - db $00 - -TowerMons2: ; d2af (3:52af) - db $00 - - db $00 - -TowerMons3: ; d2b1 (3:52b1) - db $0A - db 20,GASTLY - db 21,GASTLY - db 22,GASTLY - db 23,GASTLY - db 19,GASTLY - db 18,GASTLY - db 24,GASTLY - db 20,CUBONE - db 22,CUBONE - db 25,HAUNTER - - db $00 - -TowerMons4: ; d2c7 (3:52c7) - db $0A - db 20,GASTLY - db 21,GASTLY - db 22,GASTLY - db 23,GASTLY - db 19,GASTLY - db 18,GASTLY - db 25,HAUNTER - db 20,CUBONE - db 22,CUBONE - db 24,GASTLY - - db $00 - -TowerMons5: ; d2dd (3:52dd) - db $0A - db 20,GASTLY - db 21,GASTLY - db 22,GASTLY - db 23,GASTLY - db 19,GASTLY - db 18,GASTLY - db 25,HAUNTER - db 20,CUBONE - db 22,CUBONE - db 24,GASTLY - - db $00 - -TowerMons6: ; d2f3 (3:52f3) - db $0F - db 21,GASTLY - db 22,GASTLY - db 23,GASTLY - db 24,GASTLY - db 20,GASTLY - db 19,GASTLY - db 26,HAUNTER - db 22,CUBONE - db 24,CUBONE - db 28,HAUNTER - - db $00 - -TowerMons7: ; d309 (3:5309) - db $0F - db 21,GASTLY - db 22,GASTLY - db 23,GASTLY - db 24,GASTLY - db 20,GASTLY - db 28,HAUNTER - db 22,CUBONE - db 24,CUBONE - db 28,HAUNTER - db 30,HAUNTER - - db $00 - -Route13Mons: ; d31f (3:531f) - db $14 - db 24,ODDISH - db 25,PIDGEY - db 27,PIDGEY - db 24,VENONAT - db 22,ODDISH - db 26,VENONAT - db 26,ODDISH - db 25,DITTO - db 28,GLOOM - db 30,GLOOM - - db $00 - -Route14Mons: ; d335 (3:5335) - db $0F - db 24,ODDISH - db 26,PIDGEY - db 23,DITTO - db 24,VENONAT - db 22,ODDISH - db 26,VENONAT - db 26,ODDISH - db 30,GLOOM - db 28,PIDGEOTTO - db 30,PIDGEOTTO - - db $00 - -Route15Mons: ; d34b (3:534b) - db $0F - db 24,ODDISH - db 26,DITTO - db 23,PIDGEY - db 26,VENONAT - db 22,ODDISH - db 28,VENONAT - db 26,ODDISH - db 30,GLOOM - db 28,PIDGEOTTO - db 30,PIDGEOTTO - - db $00 - -Route16Mons: ; d361 (3:5361) - db $19 - db 20,SPEAROW - db 22,SPEAROW - db 18,RATTATA - db 20,DODUO - db 20,RATTATA - db 18,DODUO - db 22,DODUO - db 22,RATTATA - db 23,RATICATE - db 25,RATICATE - - db $00 - -Route17Mons: ; d377 (3:5377) - db $19 - db 20,SPEAROW - db 22,SPEAROW - db 25,RATICATE - db 24,DODUO - db 27,RATICATE - db 26,DODUO - db 28,DODUO - db 29,RATICATE - db 25,FEAROW - db 27,FEAROW - - db $00 - -Route18Mons: ; d38d (3:538d) - db $19 - db 20,SPEAROW - db 22,SPEAROW - db 25,RATICATE - db 24,DODUO - db 25,FEAROW - db 26,DODUO - db 28,DODUO - db 29,RATICATE - db 27,FEAROW - db 29,FEAROW - - db $00 - -ZoneMonsCenter: ; d3a3 (3:53a3) - db $1E - db 22,NIDORAN_M - db 25,RHYHORN - db 22,VENONAT - db 24,EXEGGCUTE - db 31,NIDORINO - db 25,EXEGGCUTE - db 31,NIDORINA - db 30,PARASECT - db 23,SCYTHER - db 23,CHANSEY - - db $00 - -ZoneMons1: ; d3b9 (3:53b9) - db $1E - db 24,NIDORAN_M - db 26,DODUO - db 22,PARAS - db 25,EXEGGCUTE - db 33,NIDORINO - db 23,EXEGGCUTE - db 24,NIDORAN_F - db 25,PARASECT - db 25,KANGASKHAN - db 28,SCYTHER - - db $00 - -ZoneMons2: ; d3cf (3:53cf) - db $1E - db 22,NIDORAN_M - db 26,RHYHORN - db 23,PARAS - db 25,EXEGGCUTE - db 30,NIDORINO - db 27,EXEGGCUTE - db 30,NIDORINA - db 32,VENOMOTH - db 26,CHANSEY - db 28,TAUROS - - db $00 - -ZoneMons3: ; d3e5 (3:53e5) - db $1E - db 25,NIDORAN_M - db 26,DODUO - db 23,VENONAT - db 24,EXEGGCUTE - db 33,NIDORINO - db 26,EXEGGCUTE - db 25,NIDORAN_F - db 31,VENOMOTH - db 26,TAUROS - db 28,KANGASKHAN - - db $00 - -WaterMons: ; d3fb (3:53fb) - db $00 - - db $05 - db 5,TENTACOOL - db 10,TENTACOOL - db 15,TENTACOOL - db 5,TENTACOOL - db 10,TENTACOOL - db 15,TENTACOOL - db 20,TENTACOOL - db 30,TENTACOOL - db 35,TENTACOOL - db 40,TENTACOOL - -IslandMons1: ; d411 (3:5411) - db $0F - db 30,SEEL - db 30,SLOWPOKE - db 30,SHELLDER - db 30,HORSEA - db 28,HORSEA - db 21,ZUBAT - db 29,GOLBAT - db 28,PSYDUCK - db 28,SHELLDER - db 38,GOLDUCK - - db $00 - -IslandMonsB1: ; d427 (3:5427) - db $0A - db 30,STARYU - db 30,HORSEA - db 32,SHELLDER - db 32,HORSEA - db 28,SLOWPOKE - db 30,SEEL - db 30,SLOWPOKE - db 28,SEEL - db 38,DEWGONG - db 37,SEADRA - - db $00 - -IslandMonsB2: ; d43d (3:543d) - db $0A - db 30,SEEL - db 30,SLOWPOKE - db 32,SEEL - db 32,SLOWPOKE - db 28,HORSEA - db 30,STARYU - db 30,HORSEA - db 28,SHELLDER - db 30,GOLBAT - db 37,SLOWBRO - - db $00 - -IslandMonsB3: ; d453 (3:5453) - db $0A - db 31,SLOWPOKE - db 31,SEEL - db 33,SLOWPOKE - db 33,SEEL - db 29,HORSEA - db 31,SHELLDER - db 31,HORSEA - db 29,SHELLDER - db 39,SEADRA - db 37,DEWGONG - - db $00 - -IslandMonsB4: ; d469 (3:5469) - db $0A - db 31,HORSEA - db 31,SHELLDER - db 33,HORSEA - db 33,SHELLDER - db 29,SLOWPOKE - db 31,SEEL - db 31,SLOWPOKE - db 29,SEEL - db 39,SLOWBRO - db 32,GOLBAT - - db $00 - -MansionMons1: ; d47f (3:547f) - db $0A - db 32,KOFFING - db 30,KOFFING - db 34,PONYTA - db 30,PONYTA - db 34,GROWLITHE - db 32,PONYTA - db 30,GRIMER - db 28,PONYTA - db 37,WEEZING - db 39,MUK - - db $00 - -MansionMons2: ; d495 (3:5495) - db $0A - db 32,GROWLITHE - db 34,KOFFING - db 34,KOFFING - db 30,PONYTA - db 30,KOFFING - db 32,PONYTA - db 30,GRIMER - db 28,PONYTA - db 39,WEEZING - db 37,MUK - - db $00 - -MansionMons3: ; d4ab (3:54ab) - db $0A - db 31,KOFFING - db 33,GROWLITHE - db 35,KOFFING - db 32,PONYTA - db 34,PONYTA - db 40,WEEZING - db 34,GRIMER - db 38,WEEZING - db 36,PONYTA - db 42,MUK - - db $00 - -MansionMonsB1: ; d4c1 (3:54c1) - db $0A - db 33,KOFFING - db 31,KOFFING - db 35,GROWLITHE - db 32,PONYTA - db 31,KOFFING - db 40,WEEZING - db 34,PONYTA - db 35,GRIMER - db 42,WEEZING - db 42,MUK - - db $00 - -Route21Mons: ; d4d7 (3:54d7) - db $19 - db 21,RATTATA - db 23,PIDGEY - db 30,RATICATE - db 23,RATTATA - db 21,PIDGEY - db 30,PIDGEOTTO - db 32,PIDGEOTTO - db 28,TANGELA - db 30,TANGELA - db 32,TANGELA - - db $05 - db 5,TENTACOOL - db 10,TENTACOOL - db 15,TENTACOOL - db 5,TENTACOOL - db 10,TENTACOOL - db 15,TENTACOOL - db 20,TENTACOOL - db 30,TENTACOOL - db 35,TENTACOOL - db 40,TENTACOOL - -DungeonMons1: ; d501 (3:5501) - db $0A - db 46,GOLBAT - db 46,HYPNO - db 46,MAGNETON - db 49,DODRIO - db 49,VENOMOTH - db 52,ARBOK - db 49,KADABRA - db 52,PARASECT - db 53,RAICHU - db 53,DITTO - - db $00 - -DungeonMons2: ; d517 (3:5517) - db $0F - db 51,DODRIO - db 51,VENOMOTH - db 51,KADABRA - db 52,RHYDON - db 52,MAROWAK - db 52,ELECTRODE - db 56,CHANSEY - db 54,WIGGLYTUFF - db 55,DITTO - db 60,DITTO - - db $00 - -DungeonMonsB1: ; d52d (3:552d) - db $19 - db 55,RHYDON - db 55,MAROWAK - db 55,ELECTRODE - db 64,CHANSEY - db 64,PARASECT - db 64,RAICHU - db 57,ARBOK - db 65,DITTO - db 63,DITTO - db 67,DITTO - - db $00 - -PowerPlantMons: ; d543 (3:5543) - db $0A - db 21,VOLTORB - db 21,MAGNEMITE - db 20,PIKACHU - db 24,PIKACHU - db 23,MAGNEMITE - db 23,VOLTORB - db 32,MAGNETON - db 35,MAGNETON - db 33,ELECTABUZZ - db 36,ELECTABUZZ - - db $00 - -Route23Mons: ; d559 (3:5559) - db $0A - db 26,EKANS - db 33,DITTO - db 26,SPEAROW - db 38,FEAROW - db 38,DITTO - db 38,FEAROW - db 41,ARBOK - db 43,DITTO - db 41,FEAROW - db 43,FEAROW - - db $00 - -PlateauMons2: ; d56f (3:556f) - db $0A - db 22,MACHOP - db 24,GEODUDE - db 26,ZUBAT - db 36,ONIX - db 39,ONIX - db 42,ONIX - db 41,MACHOKE - db 40,GOLBAT - db 40,MAROWAK - db 43,GRAVELER - - db $00 - -PlateauMons3: ; d585 (3:5585) - db $0F - db 24,MACHOP - db 26,GEODUDE - db 22,ZUBAT - db 42,ONIX - db 40,VENOMOTH - db 45,ONIX - db 43,GRAVELER - db 41,GOLBAT - db 42,MACHOKE - db 45,MACHOKE - - db $00 - -PlateauMons1: ; d59b (3:559b) - db $0F - db 24,MACHOP - db 26,GEODUDE - db 22,ZUBAT - db 36,ONIX - db 39,ONIX - db 42,ONIX - db 41,GRAVELER - db 41,GOLBAT - db 42,MACHOKE - db 43,MAROWAK - - db $00 - -CaveMons: ; d5b1 (3:55b1) - db $14 - db 18,DIGLETT - db 19,DIGLETT - db 17,DIGLETT - db 20,DIGLETT - db 16,DIGLETT - db 15,DIGLETT - db 21,DIGLETT - db 22,DIGLETT - db 29,DUGTRIO - db 31,DUGTRIO - - db $00 - -ENDC -IF _GREEN || !_JAPAN && _BLUE -NoMons: ; d0dd (3:50dd) - db $00 - - db $00 - -Route1Mons: ; d0df (3:50df) - db $19 - db 3,PIDGEY - db 3,RATTATA - db 3,RATTATA - db 2,RATTATA - db 2,PIDGEY - db 3,PIDGEY - db 3,PIDGEY - db 4,RATTATA - db 4,PIDGEY - db 5,PIDGEY - - db $00 - -Route2Mons: ; d0f5 (3:50f5) - db $19 - db 3,RATTATA - db 3,PIDGEY - db 4,PIDGEY - db 4,RATTATA - db 5,PIDGEY - db 3,CATERPIE - db 2,RATTATA - db 5,RATTATA - db 4,CATERPIE - db 5,CATERPIE - - db $00 - -Route22Mons: ; d10b (3:510b) - db $19 - db 3,RATTATA - db 3,NIDORAN_F - db 4,RATTATA - db 4,NIDORAN_F - db 2,RATTATA - db 2,NIDORAN_F - db 3,SPEAROW - db 5,SPEAROW - db 3,NIDORAN_M - db 4,NIDORAN_M - - db $00 - -ForestMons: ; d121 (3:5121) - db $08 - db 4,CATERPIE - db 5,METAPOD - db 3,CATERPIE - db 5,CATERPIE - db 4,METAPOD - db 6,METAPOD - db 4,KAKUNA - db 3,WEEDLE - db 3,PIKACHU - db 5,PIKACHU - - db $00 - -Route3Mons: ; d137 (3:5137) - db $14 - db 6,PIDGEY - db 5,SPEAROW - db 7,PIDGEY - db 6,SPEAROW - db 7,SPEAROW - db 8,PIDGEY - db 8,SPEAROW - db 3,JIGGLYPUFF - db 5,JIGGLYPUFF - db 7,JIGGLYPUFF - - db $00 - -MoonMons1: ; d14d (3:514d) - db $0A - db 8,ZUBAT - db 7,ZUBAT - db 9,ZUBAT - db 8,GEODUDE - db 6,ZUBAT - db 10,ZUBAT - db 10,GEODUDE - db 8,PARAS - db 11,ZUBAT - db 8,CLEFAIRY - - db $00 - -MoonMonsB1: ; d163 (3:5163) - db $0A - db 8,ZUBAT - db 7,ZUBAT - db 7,GEODUDE - db 8,GEODUDE - db 9,ZUBAT - db 10,PARAS - db 10,ZUBAT - db 11,ZUBAT - db 9,CLEFAIRY - db 9,GEODUDE +INCLUDE "data/wild_mons.asm" - db $00 - -MoonMonsB2: ; d179 (3:5179) - db $0A - db 9,ZUBAT - db 9,GEODUDE - db 10,ZUBAT - db 10,GEODUDE - db 11,ZUBAT - db 10,PARAS - db 12,PARAS - db 10,CLEFAIRY - db 12,ZUBAT - db 12,CLEFAIRY - - db $00 - -Route4Mons: ; d18f (3:518f) - db $14 - db 10,RATTATA - db 10,SPEAROW - db 8,RATTATA - db 6,SANDSHREW - db 8,SPEAROW - db 10,SANDSHREW - db 12,RATTATA - db 12,SPEAROW - db 8,SANDSHREW - db 12,SANDSHREW - - db $00 - -Route24Mons: ; d1a5 (3:51a5) - db $19 - db 7,CATERPIE - db 8,METAPOD - db 12,PIDGEY - db 12,BELLSPROUT - db 13,BELLSPROUT - db 10,ABRA - db 14,BELLSPROUT - db 13,PIDGEY - db 8,ABRA - db 12,ABRA - - db $00 - -Route25Mons: ; d1bb (3:51bb) - db $0F - db 8,CATERPIE - db 9,METAPOD - db 13,PIDGEY - db 12,BELLSPROUT - db 13,BELLSPROUT - db 12,ABRA - db 14,BELLSPROUT - db 10,ABRA - db 7,KAKUNA - db 8,WEEDLE - - db $00 - -Route9Mons: ; d1d1 (3:51d1) - db $0F - db 16,RATTATA - db 16,SPEAROW - db 14,RATTATA - db 11,SANDSHREW - db 13,SPEAROW - db 15,SANDSHREW - db 17,RATTATA - db 17,SPEAROW - db 13,SANDSHREW - db 17,SANDSHREW - - db $00 - -Route5Mons: ; d1e7 (3:51e7) - db $0F - db 13,BELLSPROUT - db 13,PIDGEY - db 15,PIDGEY - db 10,MEOWTH - db 12,MEOWTH - db 15,BELLSPROUT - db 16,BELLSPROUT - db 16,PIDGEY - db 14,MEOWTH - db 16,MEOWTH - - db $00 - -Route6Mons: ; d1fd (3:51fd) - db $0F - db 13,BELLSPROUT - db 13,PIDGEY - db 15,PIDGEY - db 10,MEOWTH - db 12,MEOWTH - db 15,BELLSPROUT - db 16,BELLSPROUT - db 16,PIDGEY - db 14,MEOWTH - db 16,MEOWTH - - db $00 - -Route11Mons: ; d213 (3:5213) - db $0F - db 14,SANDSHREW - db 15,SPEAROW - db 12,SANDSHREW - db 9,DROWZEE - db 13,SPEAROW - db 13,DROWZEE - db 15,SANDSHREW - db 17,SPEAROW - db 11,DROWZEE - db 15,DROWZEE - - db $00 - -TunnelMonsB1: ; d229 (3:5229) - db $0F - db 16,ZUBAT - db 17,ZUBAT - db 17,GEODUDE - db 15,MACHOP - db 16,GEODUDE - db 18,ZUBAT - db 15,ZUBAT - db 17,MACHOP - db 13,ONIX - db 15,ONIX - - db $00 - -TunnelMonsB2: ; d23f (3:523f) - db $0F - db 16,ZUBAT - db 17,ZUBAT - db 17,GEODUDE - db 15,MACHOP - db 16,GEODUDE - db 18,ZUBAT - db 17,MACHOP - db 17,ONIX - db 13,ONIX - db 18,GEODUDE - - db $00 - -Route10Mons: ; d255 (3:5255) - db $0F - db 16,VOLTORB - db 16,SPEAROW - db 14,VOLTORB - db 11,SANDSHREW - db 13,SPEAROW - db 15,SANDSHREW - db 17,VOLTORB - db 17,SPEAROW - db 13,SANDSHREW - db 17,SANDSHREW - - db $00 - -Route12Mons: ; d26b (3:526b) - db $0F - db 24,BELLSPROUT - db 25,PIDGEY - db 23,PIDGEY - db 24,VENONAT - db 22,BELLSPROUT - db 26,VENONAT - db 26,BELLSPROUT - db 27,PIDGEY - db 28,WEEPINBELL - db 30,WEEPINBELL - - db $00 +UseItem_: ; d5c7 (3:55c7) + ld a,1 + ld [$cd6a],a + ld a,[$cf91] ;contains item_ID + cp a,HM_01 + jp nc,ItemUseTMHM + ld hl,ItemUsePtrTable + dec a + add a + ld c,a + ld b,0 + add hl,bc + ld a,[hli] + ld h,[hl] + ld l,a + jp [hl] -Route8Mons: ; d281 (3:5281) - db $0F - db 18,PIDGEY - db 18,MEOWTH - db 17,SANDSHREW - db 16,VULPIX - db 20,PIDGEY - db 20,MEOWTH - db 19,SANDSHREW - db 17,VULPIX - db 15,VULPIX - db 18,VULPIX +ItemUsePtrTable: ; d5e1 (3:55e1) + dw ItemUseBall ; MASTER_BALL + dw ItemUseBall ; ULTRA_BALL + dw ItemUseBall ; GREAT_BALL + dw ItemUseBall ; POKE_BALL + dw ItemUseTownMap ; TOWN_MAP + dw ItemUseBicycle ; BICYCLE + dw ItemUseSurfboard ; out-of-battle Surf effect + dw ItemUseBall ; SAFARI_BALL + dw ItemUsePokedex ; POKEDEX + dw ItemUseEvoStone ; MOON_STONE + dw ItemUseMedicine ; ANTIDOTE + dw ItemUseMedicine ; BURN_HEAL + dw ItemUseMedicine ; ICE_HEAL + dw ItemUseMedicine ; AWAKENING + dw ItemUseMedicine ; PARLYZ_HEAL + dw ItemUseMedicine ; FULL_RESTORE + dw ItemUseMedicine ; MAX_POTION + dw ItemUseMedicine ; HYPER_POTION + dw ItemUseMedicine ; SUPER_POTION + dw ItemUseMedicine ; POTION + dw ItemUseBait ; BOULDERBADGE + dw ItemUseRock ; CASCADEBADGE + dw UnusableItem ; THUNDERBADGE + dw UnusableItem ; RAINBOWBADGE + dw UnusableItem ; SOULBADGE + dw UnusableItem ; MARSHBADGE + dw UnusableItem ; VOLCANOBADGE + dw UnusableItem ; EARTHBADGE + dw ItemUseEscapeRope ; ESCAPE_ROPE + dw ItemUseRepel ; REPEL + dw UnusableItem ; OLD_AMBER + dw ItemUseEvoStone ; FIRE_STONE + dw ItemUseEvoStone ; THUNDER_STONE + dw ItemUseEvoStone ; WATER_STONE + dw ItemUseVitamin ; HP_UP + dw ItemUseVitamin ; PROTEIN + dw ItemUseVitamin ; IRON + dw ItemUseVitamin ; CARBOS + dw ItemUseVitamin ; CALCIUM + dw ItemUseVitamin ; RARE_CANDY + dw UnusableItem ; DOME_FOSSIL + dw UnusableItem ; HELIX_FOSSIL + dw UnusableItem ; SECRET_KEY + dw UnusableItem + dw UnusableItem ; BIKE_VOUCHER + dw ItemUseXAccuracy ; X_ACCURACY + dw ItemUseEvoStone ; LEAF_STONE + dw ItemUseCardKey ; CARD_KEY + dw UnusableItem ; NUGGET + dw UnusableItem ; ??? PP_UP + dw ItemUsePokedoll ; POKE_DOLL + dw ItemUseMedicine ; FULL_HEAL + dw ItemUseMedicine ; REVIVE + dw ItemUseMedicine ; MAX_REVIVE + dw ItemUseGuardSpec ; GUARD_SPEC_ + dw ItemUseSuperRepel ; SUPER_REPL + dw ItemUseMaxRepel ; MAX_REPEL + dw ItemUseDireHit ; DIRE_HIT + dw UnusableItem ; COIN + dw ItemUseMedicine ; FRESH_WATER + dw ItemUseMedicine ; SODA_POP + dw ItemUseMedicine ; LEMONADE + dw UnusableItem ; S_S__TICKET + dw UnusableItem ; GOLD_TEETH + dw ItemUseXStat ; X_ATTACK + dw ItemUseXStat ; X_DEFEND + dw ItemUseXStat ; X_SPEED + dw ItemUseXStat ; X_SPECIAL + dw ItemUseCoinCase ; COIN_CASE + dw ItemUseOaksParcel ; OAKS_PARCEL + dw ItemUseItemfinder ; ITEMFINDER + dw UnusableItem ; SILPH_SCOPE + dw ItemUsePokeflute ; POKE_FLUTE + dw UnusableItem ; LIFT_KEY + dw UnusableItem ; EXP__ALL + dw OldRodCode ; OLD_ROD + dw GoodRodCode ; GOOD_ROD + dw SuperRodCode ; SUPER_ROD + dw ItemUsePPUp ; PP_UP (real one) + dw ItemUsePPRestore ; ETHER + dw ItemUsePPRestore ; MAX_ETHER + dw ItemUsePPRestore ; ELIXER + dw ItemUsePPRestore ; MAX_ELIXER - db $00 +ItemUseBall: ; d687 (3:5687) + ld a,[W_ISINBATTLE] + and a + jp z,ItemUseNotTime ; not in battle + dec a + jp nz,ThrowBallAtTrainerMon + ld a,[W_BATTLETYPE] + dec a + jr z,.UseBall + ld a,[W_NUMINPARTY] ;is Party full? + cp a,6 + jr nz,.UseBall + ld a,[W_NUMINBOX] ;is Box full? + cp a,20 + jp z,BoxFullCannotThrowBall +.UseBall ;$56a7 +;ok, you can use a ball + xor a + ld [$d11c],a + ld a,[W_BATTLETYPE] + cp a,2 ;SafariBattle + jr nz,.skipSafariZoneCode +.safariZone + ; remove a Safari Ball from inventory + ld hl,W_NUMSAFARIBALLS + dec [hl] +.skipSafariZoneCode ;$56b6 + call GoPAL_SET_CF1C + ld a,$43 + ld [$d11e],a + call LoadScreenTilesFromBuffer1 ;restore screenBuffer from Backup + ld hl,ItemUseText00 + call PrintText + ld hl, IsGhostBattle + ld b, BANK(IsGhostBattle) + call Bankswitch + ld b,$10 + jp z,.next12 + ld a,[W_BATTLETYPE] + dec a + jr nz,.notOldManBattle +.oldManBattle + ld hl,W_GRASSRATE + ld de,W_PLAYERNAME + ld bc,11 + call CopyData ; save the player's name in the Wild Monster data (part of the Cinnabar Island Missingno glitch) + jp .BallSuccess ;$578b +.notOldManBattle ;$56e9 + ld a,[W_CURMAP] + cp a,POKEMONTOWER_6 + jr nz,.loop + ld a,[W_ENEMYMONID] + cp a,MAROWAK + ld b,$10 + jp z,.next12 +; if not fighting ghost Marowak, loop until a random number in the current +; pokeball's allowed range is found +.loop ;$56fa + call GenRandom + ld b,a + ld hl,$cf91 + ld a,[hl] + cp a,MASTER_BALL + jp z,.BallSuccess ;$578b + cp a,POKE_BALL + jr z,.checkForAilments + ld a,200 + cp b + jr c,.loop ;get only numbers <= 200 for Great Ball + ld a,[hl] + cp a,GREAT_BALL + jr z,.checkForAilments + ld a,150 ;get only numbers <= 150 for Ultra Ball + cp b + jr c,.loop +.checkForAilments ;$571a +; pokemon can be caught more easily with any (primary) status ailment +; Frozen/Asleep pokemon are relatively even easier to catch +; for Frozen/Asleep pokemon, any random number from 0-24 ensures a catch. +; for the others, a random number from 0-11 ensures a catch. + ld a,[W_ENEMYMONSTATUS] ;status ailments + and a + jr z,.noAilments + and a,(FRZ + SLP) ;is frozen and/or asleep? + ld c,12 + jr z,.notFrozenOrAsleep + ld c,25 +.notFrozenOrAsleep ;$5728 + ld a,b + sub c + jp c,.BallSuccess ;$578b + ld b,a +.noAilments ;$572e + push bc ;save RANDOM number + xor a + ld [H_MULTIPLICAND],a + ld hl,W_ENEMYMONMAXHP + ld a,[hli] + ld [H_MULTIPLICAND + 1],a + ld a,[hl] + ld [H_MULTIPLICAND + 2],a + ld a,255 + ld [H_MULTIPLIER],a + call Multiply ; MaxHP * 255 + ld a,[$cf91] + cp a,GREAT_BALL + ld a,12 ;any other BallFactor + jr nz,.next7 + ld a,8 +.next7 ;$574d + ld [H_DIVISOR],a + ld b,4 ; number of bytes in dividend + call Divide + ld hl,W_ENEMYMONCURHP + ld a,[hli] + ld b,a + ld a,[hl] -Route7Mons: ; d297 (3:5297) - db $0F - db 19,PIDGEY - db 19,BELLSPROUT - db 17,MEOWTH - db 22,BELLSPROUT - db 22,PIDGEY - db 18,MEOWTH - db 18,VULPIX - db 20,VULPIX - db 19,MEOWTH - db 20,MEOWTH - - db $00 - -TowerMons1: ; d2ad (3:52ad) - db $00 - - db $00 - -TowerMons2: ; d2af (3:52af) - db $00 - - db $00 - -TowerMons3: ; d2b1 (3:52b1) - db $0A - db 20,GASTLY - db 21,GASTLY - db 22,GASTLY - db 23,GASTLY - db 19,GASTLY - db 18,GASTLY - db 24,GASTLY - db 20,CUBONE - db 22,CUBONE - db 25,HAUNTER - - db $00 - -TowerMons4: ; d2c7 (3:52c7) - db $0A - db 20,GASTLY - db 21,GASTLY - db 22,GASTLY - db 23,GASTLY - db 19,GASTLY - db 18,GASTLY - db 25,HAUNTER - db 20,CUBONE - db 22,CUBONE - db 24,GASTLY - - db $00 - -TowerMons5: ; d2dd (3:52dd) - db $0A - db 20,GASTLY - db 21,GASTLY - db 22,GASTLY - db 23,GASTLY - db 19,GASTLY - db 18,GASTLY - db 25,HAUNTER - db 20,CUBONE - db 22,CUBONE - db 24,GASTLY - - db $00 - -TowerMons6: ; d2f3 (3:52f3) - db $0F - db 21,GASTLY - db 22,GASTLY - db 23,GASTLY - db 24,GASTLY - db 20,GASTLY - db 19,GASTLY - db 26,HAUNTER - db 22,CUBONE - db 24,CUBONE - db 28,HAUNTER - - db $00 - -TowerMons7: ; d309 (3:5309) - db $0F - db 21,GASTLY - db 22,GASTLY - db 23,GASTLY - db 24,GASTLY - db 20,GASTLY - db 28,HAUNTER - db 22,CUBONE - db 24,CUBONE - db 28,HAUNTER - db 30,HAUNTER - - db $00 - -Route13Mons: ; d31f (3:531f) - db $14 - db 24,BELLSPROUT - db 25,PIDGEY - db 27,PIDGEY - db 24,VENONAT - db 22,BELLSPROUT - db 26,VENONAT - db 26,BELLSPROUT - db 25,DITTO - db 28,WEEPINBELL - db 30,WEEPINBELL - - db $00 - -Route14Mons: ; d335 (3:5335) - db $0F - db 24,BELLSPROUT - db 26,PIDGEY - db 23,DITTO - db 24,VENONAT - db 22,BELLSPROUT - db 26,VENONAT - db 26,BELLSPROUT - db 30,WEEPINBELL - db 28,PIDGEOTTO - db 30,PIDGEOTTO - - db $00 - -Route15Mons: ; d34b (3:534b) - db $0F - db 24,BELLSPROUT - db 26,DITTO - db 23,PIDGEY - db 26,VENONAT - db 22,BELLSPROUT - db 28,VENONAT - db 26,BELLSPROUT - db 30,WEEPINBELL - db 28,PIDGEOTTO - db 30,PIDGEOTTO - - db $00 - -Route16Mons: ; d361 (3:5361) - db $19 - db 20,SPEAROW - db 22,SPEAROW - db 18,RATTATA - db 20,DODUO - db 20,RATTATA - db 18,DODUO - db 22,DODUO - db 22,RATTATA - db 23,RATICATE - db 25,RATICATE - - db $00 - -Route17Mons: ; d377 (3:5377) - db $19 - db 20,SPEAROW - db 22,SPEAROW - db 25,RATICATE - db 24,DODUO - db 27,RATICATE - db 26,DODUO - db 28,DODUO - db 29,RATICATE - db 25,FEAROW - db 27,FEAROW - - db $00 - -Route18Mons: ; d38d (3:538d) - db $19 - db 20,SPEAROW - db 22,SPEAROW - db 25,RATICATE - db 24,DODUO - db 25,FEAROW - db 26,DODUO - db 28,DODUO - db 29,RATICATE - db 27,FEAROW - db 29,FEAROW - - db $00 - -ZoneMonsCenter: ; d3a3 (3:53a3) - db $1E - db 22,NIDORAN_F - db 25,RHYHORN - db 22,VENONAT - db 24,EXEGGCUTE - db 31,NIDORINA - db 25,EXEGGCUTE - db 31,NIDORINO - db 30,PARASECT - db 23,PINSIR - db 23,CHANSEY - - db $00 - -ZoneMons1: ; d3b9 (3:53b9) - db $1E - db 24,NIDORAN_F - db 26,DODUO - db 22,PARAS - db 25,EXEGGCUTE - db 33,NIDORINA - db 23,EXEGGCUTE - db 24,NIDORAN_M - db 25,PARASECT - db 25,KANGASKHAN - db 28,PINSIR - - db $00 - -ZoneMons2: ; d3cf (3:53cf) - db $1E - db 22,NIDORAN_F - db 26,RHYHORN - db 23,PARAS - db 25,EXEGGCUTE - db 30,NIDORINA - db 27,EXEGGCUTE - db 30,NIDORINO - db 32,VENOMOTH - db 26,CHANSEY - db 28,TAUROS +; explanation: we have a 16-bit value equal to [b << 8 | a]. +; This number is divided by 4. The result is 8 bit (reg. a). +; Always bigger than zero. + srl b + rr a + srl b + rr a ; a = current HP / 4 + and a + jr nz,.next8 + inc a +.next8 ;$5766 + ld [H_DIVISOR],a + ld b,4 + call Divide ; ((MaxHP * 255) / BallFactor) / (CurHP / 4) + ld a,[H_QUOTIENT + 2] + and a + jr z,.next9 + ld a,255 + ld [H_QUOTIENT + 3],a +.next9 ;$5776 + pop bc + ld a,[$d007] ;enemy: Catch Rate + cp b + jr c,.next10 + ld a,[H_QUOTIENT + 2] + and a + jr nz,.BallSuccess ; if ((MaxHP * 255) / BallFactor) / (CurHP / 4) > 0x255, automatic success + call GenRandom + ld b,a + ld a,[H_QUOTIENT + 3] + cp b + jr c,.next10 +.BallSuccess ;$578b + jr .BallSuccess2 +.next10 ;$578d + ld a,[H_QUOTIENT + 3] + ld [$d11e],a + xor a + ld [H_MULTIPLICAND],a + ld [H_MULTIPLICAND + 1],a + ld a,[$d007] ;enemy: Catch Rate + ld [H_MULTIPLICAND + 2],a + ld a,100 + ld [H_MULTIPLIER],a + call Multiply ; CatchRate * 100 + ld a,[$cf91] + ld b,255 + cp a,POKE_BALL + jr z,.next11 + ld b,200 + cp a,GREAT_BALL + jr z,.next11 + ld b,150 + cp a,ULTRA_BALL + jr z,.next11 +.next11 ;$57b8 + ld a,b + ld [H_DIVISOR],a + ld b,4 + call Divide + ld a,[H_QUOTIENT + 2] + and a + ld b,$63 + jr nz,.next12 + ld a,[$d11e] + ld [H_MULTIPLIER],a + call Multiply + ld a,255 + ld [H_DIVISOR],a + ld b,4 + call Divide + ld a,[W_ENEMYMONSTATUS] ;status ailments + and a + jr z,.next13 + and a,(FRZ + SLP) + ld b,5 + jr z,.next14 + ld b,10 +.next14 ;$57e6 + ld a,[H_QUOTIENT + 3] + add b + ld [H_QUOTIENT + 3],a +.next13 ;$57eb + ld a,[H_QUOTIENT + 3] + cp a,10 + ld b,$20 + jr c,.next12 + cp a,30 + ld b,$61 + jr c,.next12 + cp a,70 + ld b,$62 + jr c,.next12 + ld b,$63 +.next12 ;$5801 + ld a,b + ld [$d11e],a +.BallSuccess2 ;$5805 + ld c,20 + call DelayFrames + ld a,TOSS_ANIM + ld [W_ANIMATIONID],a + xor a + ld [$fff3],a + ld [$cc5b],a + ld [$d05b],a + ld a,[wWhichPokemon] + push af + ld a,[$cf91] + push af + ld a,$08 ;probably animations + call Predef + pop af + ld [$cf91],a + pop af + ld [wWhichPokemon],a + ld a,[$d11e] + cp a,$10 + ld hl,ItemUseBallText00 + jp z,.printText0 + cp a,$20 + ld hl,ItemUseBallText01 + jp z,.printText0 + cp a,$61 + ld hl,ItemUseBallText02 + jp z,.printText0 + cp a,$62 + ld hl,ItemUseBallText03 + jp z,.printText0 + cp a,$63 + ld hl,ItemUseBallText04 + jp z,.printText0 + ld hl,$cfe6 ;current HP + ld a,[hli] + push af + ld a,[hli] + push af ;backup currentHP... + inc hl + ld a,[hl] + push af ;...and status ailments + push hl + ld hl,$d069 + bit 3,[hl] + jr z,.next15 + ld a,$4c + ld [W_ENEMYMONID],a + jr .next16 +.next15 ;$5871 + set 3,[hl] + ld hl,$cceb + ld a,[$cff1] + ld [hli],a + ld a,[$cff2] + ld [hl],a +.next16 ;$587e + ld a,[$cf91] + push af + ld a,[W_ENEMYMONID] + ld [$cf91],a + ld a,[$cff3] + ld [$d127],a + ld hl, Func_3eb01 + ld b, BANK(Func_3eb01) + call Bankswitch + pop af + ld [$cf91],a + pop hl + pop af + ld [hld],a + dec hl + pop af + ld [hld],a + pop af + ld [hl],a + ld a,[$cfe5] ;enemy + ld [$d11c],a + ld [$cf91],a + ld [$d11e],a + ld a,[W_BATTLETYPE] + dec a + jr z,.printText1 + ld hl,ItemUseBallText05 + call PrintText + ld a,$3a ;convert order: Internal->Dex + call Predef + ld a,[$d11e] + dec a + ld c,a + ld b,2 + ld hl,$d2f7 ;Dex_own_flags (pokemon) + ld a,$10 + call Predef ;check Dex flag (own already or not) + ld a,c + push af + ld a,[$d11e] + dec a + ld c,a + ld b,1 + ld a,$10 ;set Dex_own_flag? + call Predef + pop af + and a + jr nz,.checkParty + ld hl,ItemUseBallText06 + call PrintText + call CleanLCD_OAM + ld a,[$cfe5] ;caught mon_ID + ld [$d11e],a + ld a,$3d + call Predef +.checkParty ;$58f4 + ld a,[W_NUMINPARTY] + cp a,6 ;is party full? + jr z,.sendToBox + xor a + ld [$cc49],a + call CleanLCD_OAM + call AddPokemonToParty ;add mon to Party + jr .End +.sendToBox ;$5907 + call CleanLCD_OAM + call Func_e7a4 + ld hl,ItemUseBallText07 + ld a,[$d7f1] + bit 0,a ;already met Bill? + jr nz,.sendToBox2 + ld hl,ItemUseBallText08 +.sendToBox2 ;$591a + call PrintText + jr .End +.printText1 ;$591f + ld hl,ItemUseBallText05 +.printText0 ;$5922 + call PrintText + call CleanLCD_OAM +.End ;$5928 + ld a,[W_BATTLETYPE] + and a + ret nz + ld hl,$d31d + inc a + ld [$cf96],a + jp RemoveItemFromInventory ;remove ITEM (XXX) +ItemUseBallText00: ; d937 (3:5937) +;"It dodged the thrown ball!" +;"This pokemon can't be caught" + TX_FAR _ItemUseBallText00 + db "@" +ItemUseBallText01: ; d93c (3:593c) +;"You missed the pokemon!" + TX_FAR _ItemUseBallText01 + db "@" +ItemUseBallText02: ; d941 (3:5941) +;"Darn! The pokemon broke free!" + TX_FAR _ItemUseBallText02 + db "@" +ItemUseBallText03: ; d946 (3:5946) +;"Aww! It appeared to be caught!" + TX_FAR _ItemUseBallText03 + db "@" +ItemUseBallText04: ; d94b (3:594b) +;"Shoot! It was so close too!" + TX_FAR _ItemUseBallText04 + db "@" +ItemUseBallText05: ; d950 (3:5950) +;"All right! {MonName} was caught!" +;play sound + TX_FAR _ItemUseBallText05 + db $12,$06 + db "@" +ItemUseBallText07: ; d957 (3:5957) +;"X was transferred to Bill's PC" + TX_FAR _ItemUseBallText07 + db "@" +ItemUseBallText08: ; d95c (3:595c) +;"X was transferred to someone's PC" + TX_FAR _ItemUseBallText08 + db "@" - db $00 +ItemUseBallText06: ; d961 (3:5961) +;"New DEX data will be added..." +;play sound + TX_FAR _ItemUseBallText06 + db $13,$06 + db "@" -ZoneMons3: ; d3e5 (3:53e5) - db $1E - db 25,NIDORAN_F - db 26,DODUO - db 23,VENONAT - db 24,EXEGGCUTE - db 33,NIDORINA - db 26,EXEGGCUTE - db 25,NIDORAN_M - db 31,VENOMOTH - db 26,TAUROS - db 28,KANGASKHAN +ItemUseTownMap: ; d968 (3:5968) + ld a,[W_ISINBATTLE] + and a + jp nz,ItemUseNotTime + ld b, BANK(DisplayTownMap) + ld hl, DisplayTownMap + jp Bankswitch ; display Town Map - db $00 +ItemUseBicycle: ; d977 (3:5977) + ld a,[W_ISINBATTLE] + and a + jp nz,ItemUseNotTime + ld a,[$d700] + ld [$d11a],a + cp a,2 ; is the player surfing? + jp z,ItemUseNotTime + dec a ; is player already bicycling? + jr nz,.tryToGetOnBike +.getOffBike + call ItemUseReloadOverworldData + xor a + ld [$d700],a ; change player state to walking + call Func_2307 ; play walking music + ld hl,GotOffBicycleText + jr .printText +.tryToGetOnBike + call IsBikeRidingAllowed + jp nc,NoCyclingAllowedHere + call ItemUseReloadOverworldData + xor a ; no keys pressed + ld [H_CURRENTPRESSEDBUTTONS],a ; current joypad state + inc a + ld [$d700],a ; change player state to bicycling + ld hl,GotOnBicycleText + call Func_2307 ; play bike riding music +.printText + jp PrintText -WaterMons: ; d3fb (3:53fb) - db $00 +; used for Surf out-of-battle effect +ItemUseSurfboard: ; d9b4 (3:59b4) + ld a,[$d700] + ld [$d11a],a + cp a,2 ; is the player already surfing? + jr z,.tryToStopSurfing +.tryToSurf + call IsNextTileShoreOrWater + jp c,SurfingAttemptFailed + ld hl,TilePairCollisionsWater + call CheckForTilePairCollisions + jp c,SurfingAttemptFailed +.surf + call .makePlayerMoveForward + ld hl,$d730 + set 7,[hl] + ld a,2 + ld [$d700],a ; change player state to surfing + call Func_2307 ; play surfing music + ld hl,SurfingGotOnText + jp PrintText +.tryToStopSurfing + xor a + ld [$ff8c],a + ld d,16 ; talking range in pixels (normal range) + call IsSpriteInFrontOfPlayer2 + res 7,[hl] + ld a,[$ff8c] + and a ; is there a sprite in the way? + jr nz,.cannotStopSurfing + ld hl,TilePairCollisionsWater + call CheckForTilePairCollisions + jr c,.cannotStopSurfing + ld hl,$d530 ; pointer to list of passable tiles + ld a,[hli] + ld h,[hl] + ld l,a ; hl now points to passable tiles + ld a,[$cfc6] ; tile in front of the player + ld b,a +.passableTileLoop + ld a,[hli] + cp b + jr z,.stopSurfing + cp a,$ff + jr nz,.passableTileLoop +.cannotStopSurfing + ld hl,SurfingNoPlaceToGetOffText + jp PrintText +.stopSurfing + call .makePlayerMoveForward + ld hl,$d730 + set 7,[hl] + xor a + ld [$d700],a ; change player state to walking + dec a + ld [wJoypadForbiddenButtonsMask],a + call Func_2307 ; play walking music + jp LoadWalkingPlayerSpriteGraphics +; uses a simulated button press to make the player move forward +.makePlayerMoveForward + ld a,[$d52a] ; direction the player is going + bit 3,a + ld b,%01000000 ; Up key + jr nz,.storeSimulatedButtonPress + bit 2,a + ld b,%10000000 ; Down key + jr nz,.storeSimulatedButtonPress + bit 1,a + ld b,%00100000 ; Left key + jr nz,.storeSimulatedButtonPress + ld b,%00010000 ; Right key +.storeSimulatedButtonPress + ld a,b + ld [$ccd3],a ; base address of simulated button presses + xor a + ld [$cd39],a + inc a + ld [$cd38],a ; index of current simulated button press + ret - db $05 - db 5,TENTACOOL - db 10,TENTACOOL - db 15,TENTACOOL - db 5,TENTACOOL - db 10,TENTACOOL - db 15,TENTACOOL - db 20,TENTACOOL - db 30,TENTACOOL - db 35,TENTACOOL - db 40,TENTACOOL - -IslandMons1: ; d411 (3:5411) - db $0F - db 30,SEEL - db 30,PSYDUCK - db 30,STARYU - db 30,KRABBY - db 28,KRABBY - db 21,ZUBAT - db 29,GOLBAT - db 28,SLOWPOKE - db 28,STARYU - db 38,SLOWBRO +SurfingGotOnText: ; da4c (3:5a4c) + TX_FAR _SurfingGotOnText + db "@" - db $00 +SurfingNoPlaceToGetOffText: ; da51 (3:5a51) + TX_FAR _SurfingNoPlaceToGetOffText + db "@" -IslandMonsB1: ; d427 (3:5427) - db $0A - db 30,SHELLDER - db 30,KRABBY - db 32,STARYU - db 32,KRABBY - db 28,PSYDUCK - db 30,SEEL - db 30,PSYDUCK - db 28,SEEL - db 38,DEWGONG - db 37,KINGLER +ItemUsePokedex: ; da56 (3:5a56) + ld a,$29 + jp Predef - db $00 +ItemUseEvoStone: ; da5b (3:5a5b) + ld a,[W_ISINBATTLE] + and a + jp nz,ItemUseNotTime + ld a,[wWhichPokemon] + push af + ld a,[$cf91] + ld [$d156],a + push af + ld a,$05 ; evolution stone party menu + ld [$d07d],a + ld a,$ff + ld [$cfcb],a + call DisplayPartyMenu + pop bc + jr c,.canceledItemUse + ld a,b + ld [$cf91],a + ld a,$01 + ld [$ccd4],a + ld a,(SFX_02_3e - SFX_Headers_02) / 3 + call PlaySoundWaitForCurrent ; play sound + call WaitForSoundToFinish ; wait for sound to end + ld hl, Func_3ad0e + ld b, BANK(Func_3ad0e) + call Bankswitch ; try to evolve pokemon + ld a,[$d121] + and a + jr z,.noEffect + pop af + ld [wWhichPokemon],a + ld hl,wNumBagItems + ld a,1 ; remove 1 stone + ld [$cf96],a + jp RemoveItemFromInventory +.noEffect + call ItemUseNoEffect +.canceledItemUse + xor a + ld [$cd6a],a + pop af + ret -IslandMonsB2: ; d43d (3:543d) - db $0A - db 30,SEEL - db 30,PSYDUCK - db 32,SEEL - db 32,PSYDUCK - db 28,KRABBY - db 30,SHELLDER - db 30,KRABBY - db 28,STARYU - db 30,GOLBAT - db 37,GOLDUCK +ItemUseVitamin: ; dab4 (3:5ab4) + ld a,[W_ISINBATTLE] + and a + jp nz,ItemUseNotTime - db $00 - -IslandMonsB3: ; d453 (3:5453) - db $0A - db 31,PSYDUCK - db 31,SEEL - db 33,PSYDUCK - db 33,SEEL - db 29,KRABBY - db 31,STARYU - db 31,KRABBY - db 29,STARYU - db 39,KINGLER - db 37,DEWGONG - - db $00 - -IslandMonsB4: ; d469 (3:5469) - db $0A - db 31,KRABBY - db 31,STARYU - db 33,KRABBY - db 33,STARYU - db 29,PSYDUCK - db 31,SEEL - db 31,PSYDUCK - db 29,SEEL - db 39,GOLDUCK - db 32,GOLBAT - - db $00 - -MansionMons1: ; d47f (3:547f) - db $0A - db 32,GRIMER - db 30,GRIMER - db 34,PONYTA - db 30,PONYTA - db 34,VULPIX - db 32,PONYTA - db 30,KOFFING - db 28,PONYTA - db 37,MUK - db 39,WEEZING - - db $00 - -MansionMons2: ; d495 (3:5495) - db $0A - db 32,VULPIX - db 34,GRIMER - db 34,GRIMER - db 30,PONYTA - db 30,GRIMER - db 32,PONYTA - db 30,KOFFING - db 28,PONYTA - db 39,MUK - db 37,WEEZING - - db $00 - -MansionMons3: ; d4ab (3:54ab) - db $0A - db 31,GRIMER - db 33,VULPIX - db 35,GRIMER - db 32,PONYTA - db 34,MAGMAR - db 40,MUK - db 34,KOFFING - db 38,MUK - db 36,PONYTA - db 42,WEEZING - - db $00 - -MansionMonsB1: ; d4c1 (3:54c1) - db $0A - db 33,GRIMER - db 31,GRIMER - db 35,VULPIX - db 32,PONYTA - db 31,GRIMER - db 40,MUK - db 34,PONYTA - db 35,KOFFING - db 38,MAGMAR - db 42,WEEZING - - db $00 - -Route21Mons: ; d4d7 (3:54d7) - db $19 - db 21,RATTATA - db 23,PIDGEY - db 30,RATICATE - db 23,RATTATA - db 21,PIDGEY - db 30,PIDGEOTTO - db 32,PIDGEOTTO - db 28,TANGELA - db 30,TANGELA - db 32,TANGELA - - db $05 - db 5,TENTACOOL - db 10,TENTACOOL - db 15,TENTACOOL - db 5,TENTACOOL - db 10,TENTACOOL - db 15,TENTACOOL - db 20,TENTACOOL - db 30,TENTACOOL - db 35,TENTACOOL - db 40,TENTACOOL - -DungeonMons1: ; d501 (3:5501) - db $0A - db 46,GOLBAT - db 46,HYPNO - db 46,MAGNETON - db 49,DODRIO - db 49,VENOMOTH - db 52,SANDSLASH - db 49,KADABRA - db 52,PARASECT - db 53,RAICHU - db 53,DITTO - - db $00 - -DungeonMons2: ; d517 (3:5517) - db $0F - db 51,DODRIO - db 51,VENOMOTH - db 51,KADABRA - db 52,RHYDON - db 52,MAROWAK - db 52,ELECTRODE - db 56,CHANSEY - db 54,WIGGLYTUFF - db 55,DITTO - db 60,DITTO - - db $00 - -DungeonMonsB1: ; d52d (3:552d) - db $19 - db 55,RHYDON - db 55,MAROWAK - db 55,ELECTRODE - db 64,CHANSEY - db 64,PARASECT - db 64,RAICHU - db 57,SANDSLASH - db 65,DITTO - db 63,DITTO - db 67,DITTO - - db $00 - -PowerPlantMons: ; d543 (3:5543) - db $0A - db 21,VOLTORB - db 21,MAGNEMITE - db 20,PIKACHU - db 24,PIKACHU - db 23,MAGNEMITE - db 23,VOLTORB - db 32,MAGNETON - db 35,MAGNETON - db 33,RAICHU - db 36,RAICHU - - db $00 - -Route23Mons: ; d559 (3:5559) - db $0A - db 26,SANDSHREW - db 33,DITTO - db 26,SPEAROW - db 38,FEAROW - db 38,DITTO - db 38,FEAROW - db 41,SANDSLASH - db 43,DITTO - db 41,FEAROW - db 43,FEAROW - - db $00 - -PlateauMons2: ; d56f (3:556f) - db $0A - db 22,MACHOP - db 24,GEODUDE - db 26,ZUBAT - db 36,ONIX - db 39,ONIX - db 42,ONIX - db 41,MACHOKE - db 40,GOLBAT - db 40,MAROWAK - db 43,GRAVELER - - db $00 - -PlateauMons3: ; d585 (3:5585) - db $0F - db 24,MACHOP - db 26,GEODUDE - db 22,ZUBAT - db 42,ONIX - db 40,VENOMOTH - db 45,ONIX - db 43,GRAVELER - db 41,GOLBAT - db 42,MACHOKE - db 45,MACHOKE - - db $00 - -PlateauMons1: ; d59b (3:559b) - db $0F - db 24,MACHOP - db 26,GEODUDE - db 22,ZUBAT - db 36,ONIX - db 39,ONIX - db 42,ONIX - db 41,GRAVELER - db 41,GOLBAT - db 42,MACHOKE - db 43,MAROWAK - - db $00 - -CaveMons: ; d5b1 (3:55b1) - db $14 - db 18,DIGLETT - db 19,DIGLETT - db 17,DIGLETT - db 20,DIGLETT - db 16,DIGLETT - db 15,DIGLETT - db 21,DIGLETT - db 22,DIGLETT - db 29,DUGTRIO - db 31,DUGTRIO - - db $00 - -ENDC -IF _JAPAN && _BLUE -NoMons: ; d0dd (3:50dd) - db $00 - - db $00 - -Route1Mons: ; d0df (3:50df) - db $19 - db 3,PIDGEY - db 3,RATTATA - db 3,RATTATA - db 2,RATTATA - db 2,PIDGEY - db 3,PIDGEY - db 3,PIDGEY - db 4,RATTATA - db 4,PIDGEY - db 5,PIDGEY - - db $00 - -Route2Mons: ; d0f5 (3:50f5) - db $19 - db 3,RATTATA - db 3,PIDGEY - db 4,PIDGEY - db 4,RATTATA - db 5,PIDGEY - db 3,CATERPIE - db 2,RATTATA - db 5,RATTATA - db 4,CATERPIE - db 5,CATERPIE - - db $00 - -Route22Mons: ; d10b (3:510b) - db $19 - db 3,RATTATA - db 3,NIDORAN_M - db 4,RATTATA - db 4,NIDORAN_M - db 2,RATTATA - db 2,NIDORAN_M - db 3,SPEAROW - db 5,SPEAROW - db 3,NIDORAN_F - db 4,NIDORAN_F - - db $00 - -ForestMons: ; d121 (3:5121) - db $08 - db 4,CATERPIE - db 5,METAPOD - db 3,CATERPIE - db 5,CATERPIE - db 4,METAPOD - db 6,METAPOD - db 4,KAKUNA - db 3,WEEDLE - db 3,PIKACHU - db 5,PIKACHU - - db $00 - -Route3Mons: ; d137 (3:5137) - db $14 - db 6,PIDGEY - db 5,SPEAROW - db 7,PIDGEY - db 6,SPEAROW - db 7,SPEAROW - db 8,PIDGEY - db 8,SPEAROW - db 3,JIGGLYPUFF - db 5,JIGGLYPUFF - db 7,JIGGLYPUFF - - db $00 - -MoonMons1: ; d14d (3:514d) - db $0A - db 8,ZUBAT - db 7,ZUBAT - db 9,ZUBAT - db 8,GEODUDE - db 6,ZUBAT - db 10,ZUBAT - db 10,GEODUDE - db 8,PARAS - db 11,ZUBAT - db 8,CLEFAIRY - - db $00 - -MoonMonsB1: ; d163 (3:5163) - db $0A - db 8,ZUBAT - db 7,ZUBAT - db 7,GEODUDE - db 8,GEODUDE - db 9,ZUBAT - db 10,PARAS - db 10,ZUBAT - db 11,ZUBAT - db 9,CLEFAIRY - db 9,GEODUDE - - db $00 - -MoonMonsB2: ; d179 (3:5179) - db $0A - db 9,ZUBAT - db 9,GEODUDE - db 10,ZUBAT - db 10,GEODUDE - db 11,ZUBAT - db 10,PARAS - db 12,PARAS - db 10,CLEFAIRY - db 12,ZUBAT - db 12,CLEFAIRY - - db $00 - -Route4Mons: ; d18f (3:518f) - db $14 - db 10,RATTATA - db 10,SPEAROW - db 8,RATTATA - db 6,SANDSHREW - db 8,SPEAROW - db 10,SANDSHREW - db 12,RATTATA - db 12,SPEAROW - db 8,SANDSHREW - db 12,SANDSHREW - - db $00 - -Route24Mons: ; d1a5 (3:51a5) - db $19 - db 7,CATERPIE - db 8,METAPOD - db 12,PIDGEY - db 12,ODDISH - db 13,ODDISH - db 10,ABRA - db 14,ODDISH - db 13,PIDGEY - db 8,ABRA - db 12,ABRA - - db $00 - -Route25Mons: ; d1bb (3:51bb) - db $0F - db 8,CATERPIE - db 9,METAPOD - db 13,PIDGEY - db 12,ODDISH - db 13,ODDISH - db 12,ABRA - db 14,ODDISH - db 10,ABRA - db 7,KAKUNA - db 8,WEEDLE - - db $00 - -Route9Mons: ; d1d1 (3:51d1) - db $0F - db 16,RATTATA - db 16,SPEAROW - db 14,RATTATA - db 11,SANDSHREW - db 13,SPEAROW - db 15,SANDSHREW - db 17,RATTATA - db 17,SPEAROW - db 13,SANDSHREW - db 17,SANDSHREW - - db $00 - -Route5Mons: ; d1e7 (3:51e7) - db $0F - db 13,ODDISH - db 13,PIDGEY - db 15,PIDGEY - db 10,MEOWTH - db 12,MEOWTH - db 15,ODDISH - db 16,ODDISH - db 16,PIDGEY - db 14,MEOWTH - db 16,MEOWTH - - db $00 - -Route6Mons: ; d1fd (3:51fd) - db $0F - db 13,ODDISH - db 13,PIDGEY - db 15,PIDGEY - db 10,MEOWTH - db 12,MEOWTH - db 15,ODDISH - db 16,ODDISH - db 16,PIDGEY - db 14,MEOWTH - db 16,MEOWTH - - db $00 - -Route11Mons: ; d213 (3:5213) - db $0F - db 14,SANDSHREW - db 15,SPEAROW - db 12,SANDSHREW - db 9,DROWZEE - db 13,SPEAROW - db 13,DROWZEE - db 15,SANDSHREW - db 17,SPEAROW - db 11,DROWZEE - db 15,DROWZEE - - db $00 - -TunnelMonsB1: ; d229 (3:5229) - db $0F - db 16,ZUBAT - db 17,ZUBAT - db 17,GEODUDE - db 15,MACHOP - db 16,GEODUDE - db 18,DITTO - db 15,ZUBAT - db 17,MACHOP - db 13,ONIX - db 15,ONIX - - db $00 - -TunnelMonsB2: ; d23f (3:523f) - db $0F - db 16,ZUBAT - db 17,ZUBAT - db 17,GEODUDE - db 15,MACHOP - db 16,GEODUDE - db 18,DITTO - db 17,MACHOP - db 17,ONIX - db 13,ONIX - db 18,GEODUDE - - db $00 - -Route10Mons: ; d255 (3:5255) - db $0F - db 16,VOLTORB - db 16,SPEAROW - db 14,VOLTORB - db 11,SANDSHREW - db 13,SPEAROW - db 15,SANDSHREW - db 17,VOLTORB - db 17,SPEAROW - db 13,SANDSHREW - db 17,SANDSHREW - - db $00 - -Route12Mons: ; d26b (3:526b) - db $0F - db 24,ODDISH - db 25,PIDGEY - db 23,PIDGEY - db 24,VENONAT - db 22,ODDISH - db 26,VENONAT - db 26,ODDISH - db 27,PIDGEY - db 28,GLOOM - db 30,GLOOM - - db $00 - -Route8Mons: ; d281 (3:5281) - db $0F - db 18,PIDGEY - db 18,MEOWTH - db 17,SANDSHREW - db 16,GROWLITHE - db 20,PIDGEY - db 20,MEOWTH - db 19,SANDSHREW - db 17,GROWLITHE - db 15,GROWLITHE - db 18,GROWLITHE - - db $00 - -Route7Mons: ; d297 (3:5297) - db $0F - db 19,PIDGEY - db 19,ODDISH - db 17,MEOWTH - db 22,ODDISH - db 22,PIDGEY - db 18,MEOWTH - db 18,GROWLITHE - db 20,GROWLITHE - db 19,MEOWTH - db 20,MEOWTH - - db $00 - -TowerMons1: ; d2ad (3:52ad) - db $00 - - db $00 - -TowerMons2: ; d2af (3:52af) - db $00 - - db $00 - -TowerMons3: ; d2b1 (3:52b1) - db $0A - db 20,GASTLY - db 21,GASTLY - db 22,GASTLY - db 23,GASTLY - db 19,GASTLY - db 18,GASTLY - db 24,GASTLY - db 20,CUBONE - db 22,CUBONE - db 25,HAUNTER - - db $00 - -TowerMons4: ; d2c7 (3:52c7) - db $0A - db 20,GASTLY - db 21,GASTLY - db 22,GASTLY - db 23,GASTLY - db 19,GASTLY - db 18,GASTLY - db 25,HAUNTER - db 20,CUBONE - db 22,CUBONE - db 24,GASTLY - - db $00 - -TowerMons5: ; d2dd (3:52dd) - db $0A - db 20,GASTLY - db 21,GASTLY - db 22,GASTLY - db 23,GASTLY - db 19,GASTLY - db 18,GASTLY - db 25,HAUNTER - db 20,CUBONE - db 22,CUBONE - db 24,GASTLY - - db $00 - -TowerMons6: ; d2f3 (3:52f3) - db $0F - db 21,GASTLY - db 22,GASTLY - db 23,GASTLY - db 24,GASTLY - db 20,GASTLY - db 19,GASTLY - db 26,HAUNTER - db 22,CUBONE - db 24,CUBONE - db 28,HAUNTER - - db $00 - -TowerMons7: ; d309 (3:5309) - db $0F - db 21,GASTLY - db 22,GASTLY - db 23,GASTLY - db 24,GASTLY - db 20,GASTLY - db 28,HAUNTER - db 22,CUBONE - db 24,CUBONE - db 28,HAUNTER - db 30,HAUNTER - - db $00 - -Route13Mons: ; d31f (3:531f) - db $14 - db 24,ODDISH - db 25,PIDGEY - db 27,PIDGEY - db 24,VENONAT - db 22,ODDISH - db 26,VENONAT - db 26,ODDISH - db 25,DITTO - db 28,GLOOM - db 30,GLOOM - - db $00 - -Route14Mons: ; d335 (3:5335) - db $0F - db 24,ODDISH - db 26,PIDGEY - db 23,DITTO - db 24,VENONAT - db 22,ODDISH - db 26,VENONAT - db 26,ODDISH - db 30,GLOOM - db 28,PIDGEOTTO - db 30,PIDGEOTTO - - db $00 - -Route15Mons: ; d34b (3:534b) - db $0F - db 24,ODDISH - db 26,DITTO - db 23,PIDGEY - db 26,VENONAT - db 22,ODDISH - db 28,VENONAT - db 26,ODDISH - db 30,GLOOM - db 28,PIDGEOTTO - db 30,PIDGEOTTO - - db $00 - -Route16Mons: ; d361 (3:5361) - db $19 - db 20,SPEAROW - db 22,SPEAROW - db 18,RATTATA - db 20,DODUO - db 20,RATTATA - db 18,DODUO - db 22,DODUO - db 22,RATTATA - db 23,RATICATE - db 25,RATICATE - - db $00 - -Route17Mons: ; d377 (3:5377) - db $19 - db 20,SPEAROW - db 22,SPEAROW - db 25,RATICATE - db 24,DODUO - db 27,RATICATE - db 26,DODUO - db 28,DODUO - db 29,RATICATE - db 25,FEAROW - db 27,FEAROW - - db $00 - -Route18Mons: ; d38d (3:538d) - db $19 - db 20,SPEAROW - db 22,SPEAROW - db 25,RATICATE - db 24,DODUO - db 25,FEAROW - db 26,DODUO - db 28,DODUO - db 29,RATICATE - db 27,FEAROW - db 29,FEAROW - - db $00 - -ZoneMonsCenter: ; d3a3 (3:53a3) - db $1E - db 22,NIDORAN_M - db 25,RHYHORN - db 22,VENONAT - db 24,EXEGGCUTE - db 31,NIDORINO - db 25,EXEGGCUTE - db 31,NIDORINA - db 30,PARASECT - db 23,SCYTHER - db 23,CHANSEY - - db $00 - -ZoneMons1: ; d3b9 (3:53b9) - db $1E - db 24,NIDORAN_M - db 26,DODUO - db 22,PARAS - db 25,EXEGGCUTE - db 33,NIDORINO - db 23,EXEGGCUTE - db 24,NIDORAN_F - db 25,PARASECT - db 25,LICKITUNG - db 28,SCYTHER - - db $00 - -ZoneMons2: ; d3cf (3:53cf) - db $1E - db 22,NIDORAN_M - db 26,RHYHORN - db 23,PARAS - db 25,EXEGGCUTE - db 30,NIDORINO - db 27,EXEGGCUTE - db 30,NIDORINA - db 32,VENOMOTH - db 26,CHANSEY - db 28,PINSIR - - db $00 - -ZoneMons3: ; d3e5 (3:53e5) - db $1E - db 25,NIDORAN_M - db 26,DODUO - db 23,VENONAT - db 24,EXEGGCUTE - db 33,NIDORINO - db 26,EXEGGCUTE - db 25,NIDORAN_F - db 31,VENOMOTH - db 26,PINSIR - db 28,LICKITUNG - - db $00 - -WaterMons: ; d3fb (3:53fb) - db $00 - - db $05 - db 5,TENTACOOL - db 10,TENTACOOL - db 15,TENTACOOL - db 5,TENTACOOL - db 10,TENTACOOL - db 15,TENTACOOL - db 20,TENTACOOL - db 30,TENTACOOL - db 35,TENTACOOL - db 40,TENTACOOL - -WaterMons: ; d3fb (3:53fb) - db $00 - - db $05 - db 5,TENTACOOL - db 10,TENTACOOL - db 15,TENTACOOL - db 5,TENTACOOL - db 10,TENTACOOL - db 15,TENTACOOL - db 20,TENTACOOL - db 30,TENTACOOL - db 35,TENTACOOL - db 40,TENTACOOL - -IslandMons1: ; d411 (3:5411) - db $0F - db 30,SEEL - db 30,HORSEA - db 30,STARYU - db 30,KRABBY - db 28,KRABBY - db 21,ZUBAT - db 29,GOLBAT - db 28,SLOWPOKE - db 28,STARYU - db 38,SLOWBRO - - db $00 - -IslandMonsB1: ; d427 (3:5427) - db $0A - db 30,SHELLDER - db 30,KRABBY - db 32,STARYU - db 32,KRABBY - db 28,HORSEA - db 30,SEEL - db 30,HORSEA - db 28,SEEL - db 38,DEWGONG - db 37,KINGLER - - db $00 - -IslandMonsB2: ; d43d (3:543d) - db $0A - db 30,SEEL - db 30,HORSEA - db 32,SEEL - db 32,HORSEA - db 28,KRABBY - db 30,SHELLDER - db 30,KRABBY - db 28,STARYU - db 30,GOLBAT - db 37,JYNX - - db $00 - -IslandMonsB3: ; d453 (3:5453) - db $0A - db 31,HORSEA - db 31,SEEL - db 33,HORSEA - db 33,SEEL - db 29,KRABBY - db 31,STARYU - db 31,KRABBY - db 29,STARYU - db 39,KINGLER - db 37,DEWGONG - - db $00 - -IslandMonsB4: ; d469 (3:5469) - db $0A - db 31,KRABBY - db 31,STARYU - db 33,KRABBY - db 33,STARYU - db 29,HORSEA - db 31,SEEL - db 31,HORSEA - db 29,SEEL - db 39,JYNX - db 32,GOLBAT - - db $00 - -MansionMons1: ; d47f (3:547f) - db $0A - db 32,GRIMER - db 30,GRIMER - db 34,PONYTA - db 30,PONYTA - db 34,GROWLITHE - db 32,PONYTA - db 30,KOFFING - db 28,PONYTA - db 37,MUK - db 39,WEEZING - - db $00 - -MansionMons2: ; d495 (3:5495) - db $0A - db 32,GROWLITHE - db 34,GRIMER - db 34,GRIMER - db 30,PONYTA - db 30,GRIMER - db 32,PONYTA - db 30,KOFFING - db 28,PONYTA - db 39,MUK - db 37,WEEZING - - db $00 - -MansionMons3: ; d4ab (3:54ab) - db $0A - db 31,GRIMER - db 33,GROWLITHE - db 35,GRIMER - db 32,PONYTA - db 34,PONYTA - db 40,MUK - db 34,KOFFING - db 38,MUK - db 36,PONYTA - db 42,WEEZING - - db $00 - -MansionMonsB1: ; d4c1 (3:54c1) - db $0A - db 33,GRIMER - db 31,GRIMER - db 35,GROWLITHE - db 32,PONYTA - db 31,GRIMER - db 40,MUK - db 34,PONYTA - db 35,KOFFING - db 38,MUK - db 42,WEEZING - - db $00 - -Route21Mons: ; d4d7 (3:54d7) - db $19 - db 21,RATTATA - db 23,PIDGEY - db 30,RATICATE - db 23,RATTATA - db 21,PIDGEY - db 30,PIDGEOTTO - db 32,PIDGEOTTO - db 28,TANGELA - db 30,TANGELA - db 32,TANGELA - - db $05 - db 5,TENTACOOL - db 10,TENTACOOL - db 15,TENTACOOL - db 5,TENTACOOL - db 10,TENTACOOL - db 15,TENTACOOL - db 20,TENTACOOL - db 30,TENTACOOL - db 35,TENTACOOL - db 40,TENTACOOL - -DungeonMons1: ; d501 (3:5501) - db $0A - db 46,GOLBAT - db 46,HYPNO - db 46,MAGNETON - db 49,RAPIDASH - db 49,VENOMOTH - db 52,SANDSLASH - db 49,KADABRA - db 52,PARASECT - db 53,RAICHU - db 53,DITTO - - db $00 - -DungeonMons2: ; d517 (3:5517) - db $0F - db 51,DODRIO - db 51,VENOMOTH - db 51,KADABRA - db 52,RHYDON - db 52,RATICATE - db 52,ELECTRODE - db 56,CHANSEY - db 54,WIGGLYTUFF - db 55,DITTO - db 60,DITTO - - db $00 - -DungeonMonsB1: ; d52d (3:552d) - db $19 - db 55,RHYDON - db 55,MAROWAK - db 55,ELECTRODE - db 64,CLEFAIRY - db 64,PARASECT - db 64,RAICHU - db 57,SANDSLASH - db 65,DITTO - db 63,DITTO - db 67,DITTO - - db $00 - -PowerPlantMons: ; d543 (3:5543) - db $0A - db 21,VOLTORB - db 21,MAGNEMITE - db 20,PIKACHU - db 24,PIKACHU - db 23,MAGNEMITE - db 23,VOLTORB - db 32,MAGNETON - db 35,MAGNETON - db 33,RAICHU - db 36,RAICHU - - db $00 - -Route23Mons: ; d559 (3:5559) - db $0A - db 26,SANDSHREW - db 33,DITTO - db 26,SPEAROW - db 38,FEAROW - db 38,DITTO - db 38,FEAROW - db 41,SANDSLASH - db 43,DITTO - db 41,FEAROW - db 43,FEAROW - - db $00 - -PlateauMons2: ; d56f (3:556f) - db $0A - db 22,MACHOP - db 24,GEODUDE - db 26,ZUBAT - db 36,ONIX - db 39,ONIX - db 42,ONIX - db 41,MACHOKE - db 40,GOLBAT - db 40,MAROWAK - db 43,GRAVELER - - db $00 - -PlateauMons3: ; d585 (3:5585) - db $0F - db 24,MACHOP - db 26,GEODUDE - db 22,ZUBAT - db 42,ONIX - db 40,VENOMOTH - db 45,ONIX - db 43,GRAVELER - db 41,GOLBAT - db 42,MACHOKE - db 45,MACHOKE - - db $00 - -PlateauMons1: ; d59b (3:559b) - db $0F - db 24,MACHOP - db 26,GEODUDE - db 22,ZUBAT - db 36,ONIX - db 39,ONIX - db 42,ONIX - db 41,GRAVELER - db 41,GOLBAT - db 42,MACHOKE - db 43,MAROWAK - - db $00 - -CaveMons: ; d5b1 (3:55b1) - db $14 - db 18,DIGLETT - db 19,DIGLETT - db 17,DIGLETT - db 20,DIGLETT - db 16,DIGLETT - db 15,DIGLETT - db 21,DIGLETT - db 22,DIGLETT - db 29,DUGTRIO - db 31,DUGTRIO - - db $00 - -ENDC -IF _YELLOW -NoMons: ; d0dd (3:50dd) - db $00 - - db $00 - -Route1Mons: ; d0df (3:50df) - db $19 - db 3,PIDGEY - db 4,PIDGEY - db 2,RATTATA - db 3,RATTATA - db 2,PIDGEY - db 3,PIDGEY - db 5,PIDGEY - db 4,RATTATA - db 6,PIDGEY - db 7,PIDGEY - - db $00 - -Route2Mons: ; d0f5 (3:50f5) - db $19 - db 3,RATTATA - db 3,PIDGEY - db 4,RATTATA - db 4,NIDORAN_M - db 4,NIDORAN_F - db 5,PIDGEY - db 6,NIDORAN_M - db 6,NIDORAN_F - db 7,PIDGEY - db 7,PIDGEY - - db $00 - -Route22Mons: ; d10b (3:510b) - db $19 - db 2,NIDORAN_M - db 2,NIDORAN_F - db 3,MANKEY - db 3,RATTATA - db 4,NIDORAN_M - db 4,NIDORAN_F - db 5,MANKEY - db 2,SPEAROW - db 4,SPEAROW - db 6,SPEAROW - - db $00 - -ForestMons: ; d121 (3:5121) - db $19 - db 3,CATERPIE - db 4,METAPOD - db 4,CATERPIE - db 5,CATERPIE - db 4,PIDGEY - db 6,PIDGEY - db 6,CATERPIE - db 6,METAPOD - db 8,PIDGEY - db 9,PIDGEOTTO - - db $00 - -Route3Mons: ; d137 (3:5137) - db $14 - db 8,SPEAROW - db 9,SPEAROW - db 9,MANKEY - db 10,SPEAROW - db 8,SANDSHREW - db 10,RATTATA - db 10,SANDSHREW - db 12,RATTATA - db 11,SPEAROW - db 12,SPEAROW - - db $00 - -MoonMons1: ; d14d (3:514d) - db $0A - db 8,ZUBAT - db 9,ZUBAT - db 10,GEODUDE - db 6,ZUBAT - db 7,ZUBAT - db 10,ZUBAT - db 10,GEODUDE - db 11,ZUBAT - db 12,SANDSHREW - db 11,CLEFAIRY - - db $00 - -MoonMonsB1: ; d163 (3:5163) - db $0A - db 8,ZUBAT - db 9,ZUBAT - db 10,ZUBAT - db 10,GEODUDE - db 11,GEODUDE - db 11,ZUBAT - db 9,PARAS - db 11,PARAS - db 10,CLEFAIRY - db 12,CLEFAIRY - - db $00 - -MoonMonsB2: ; d179 (3:5179) - db $0A - db 10,ZUBAT - db 11,GEODUDE - db 13,PARAS - db 11,ZUBAT - db 11,ZUBAT - db 12,ZUBAT - db 13,ZUBAT - db 9,CLEFAIRY - db 11,CLEFAIRY - db 13,CLEFAIRY - - db $00 - -Route4Mons: ; d18f (3:518f) - db $14 - db 8,SPEAROW - db 9,SPEAROW - db 9,MANKEY - db 10,SPEAROW - db 8,SANDSHREW - db 10,RATTATA - db 10,SANDSHREW - db 12,RATTATA - db 11,SPEAROW - db 12,SPEAROW - - db $00 - -Route24Mons: ; d1a5 (3:51a5) - db $19 - db 12,ODDISH - db 12,BELLSPROUT - db 13,PIDGEY - db 14,ODDISH - db 14,BELLSPROUT - db 15,PIDGEY - db 13,VENONAT - db 16,VENONAT - db 17,PIDGEY - db 17,PIDGEOTTO - - db $00 - -Route25Mons: ; d1bb (3:51bb) - db $0F - db 12,ODDISH - db 12,BELLSPROUT - db 13,PIDGEY - db 14,ODDISH - db 14,BELLSPROUT - db 15,PIDGEY - db 13,VENONAT - db 16,VENONAT - db 17,PIDGEY - db 17,PIDGEOTTO - - db $00 - -Route9Mons: ; d1d1 (3:51d1) - db $0F - db 16,NIDORAN_M - db 16,NIDORAN_F - db 18,RATTATA - db 18,NIDORAN_M - db 18,NIDORAN_F - db 17,SPEAROW - db 18,NIDORINO - db 18,NIDORINA - db 20,RATICATE - db 19,FEAROW - - db $00 - -Route5Mons: ; d1e7 (3:51e7) - db $0F - db 15,PIDGEY - db 14,RATTATA - db 7,ABRA - db 16,PIDGEY - db 16,RATTATA - db 17,PIDGEY - db 17,PIDGEOTTO - db 3,JIGGLYPUFF - db 5,JIGGLYPUFF - db 7,JIGGLYPUFF - - db $00 - -Route6Mons: ; d1fd (3:51fd) - db $0F - db 15,PIDGEY - db 14,RATTATA - db 7,ABRA - db 16,PIDGEY - db 16,RATTATA - db 17,PIDGEY - db 17,PIDGEOTTO - db 3,JIGGLYPUFF - db 5,JIGGLYPUFF - db 7,JIGGLYPUFF - - db $03 - db 15,PSYDUCK - db 15,PSYDUCK - db 15,PSYDUCK - db 15,PSYDUCK - db 15,PSYDUCK - db 15,PSYDUCK - db 15,PSYDUCK - db 15,PSYDUCK - db 15,GOLDUCK - db 20,GOLDUCK - -Route11Mons: ; d213 (3:5213) - db $0F - db 16,PIDGEY - db 15,RATTATA - db 18,PIDGEY - db 15,DROWZEE - db 17,RATTATA - db 17,DROWZEE - db 18,PIDGEOTTO - db 20,PIDGEOTTO - db 19,DROWZEE - db 17,RATICATE - - db $00 - -TunnelMonsB1: ; d229 (3:5229) - db $0F - db 15,ZUBAT - db 16,GEODUDE - db 17,ZUBAT - db 19,ZUBAT - db 18,GEODUDE - db 20,GEODUDE - db 21,ZUBAT - db 17,MACHOP - db 19,MACHOP - db 21,MACHOP - - db $00 - -TunnelMonsB2: ; d23f (3:523f) - db $0F - db 20,ZUBAT - db 17,GEODUDE - db 18,MACHOP - db 21,ZUBAT - db 22,ZUBAT - db 21,GEODUDE - db 20,MACHOP - db 14,ONIX - db 18,ONIX - db 22,ONIX - - db $00 - -Route10Mons: ; d255 (3:5255) - db $0F - db 16,MAGNEMITE - db 18,RATTATA - db 18,MAGNEMITE - db 20,MAGNEMITE - db 17,NIDORAN_M - db 17,NIDORAN_F - db 22,MAGNEMITE - db 20,RATICATE - db 16,MACHOP - db 18,MACHOP - - db $00 - -Route12Mons: ; d26b (3:526b) - db $0F - db 25,ODDISH - db 25,BELLSPROUT - db 28,PIDGEY - db 28,PIDGEOTTO - db 27,ODDISH - db 27,BELLSPROUT - db 29,GLOOM - db 29,WEEPINBELL - db 26,FARFETCH_D - db 31,FARFETCH_D - - db $03 - db 15,SLOWPOKE - db 15,SLOWPOKE - db 15,SLOWPOKE - db 15,SLOWPOKE - db 15,SLOWPOKE - db 15,SLOWPOKE - db 15,SLOWPOKE - db 15,SLOWPOKE - db 15,SLOWBRO - db 20,SLOWBRO - -Route8Mons: ; d281 (3:5281) - db $0F - db 20,PIDGEY - db 22,PIDGEY - db 20,RATTATA - db 15,ABRA - db 19,ABRA - db 24,PIDGEOTTO - db 19,JIGGLYPUFF - db 24,JIGGLYPUFF - db 20,KADABRA - db 27,KADABRA - - db $00 - -Route7Mons: ; d297 (3:5297) - db $0F - db 20,PIDGEY - db 22,PIDGEY - db 20,RATTATA - db 15,ABRA - db 19,ABRA - db 24,PIDGEOTTO - db 26,ABRA - db 19,JIGGLYPUFF - db 24,JIGGLYPUFF - db 24,JIGGLYPUFF - - db $00 - -TowerMons1: ; d2ad (3:52ad) - db $00 - - db $00 - -TowerMons2: ; d2af (3:52af) - db $00 - - db $00 - -TowerMons3: ; d2b1 (3:52b1) - db $0A - db 20,GASTLY - db 21,GASTLY - db 22,GASTLY - db 23,GASTLY - db 24,GASTLY - db 19,GASTLY - db 18,GASTLY - db 25,GASTLY - db 20,HAUNTER - db 25,HAUNTER - - db $00 - -TowerMons4: ; d2c7 (3:52c7) - db $0A - db 20,GASTLY - db 21,GASTLY - db 22,GASTLY - db 23,GASTLY - db 24,GASTLY - db 19,GASTLY - db 18,GASTLY - db 25,GASTLY - db 20,HAUNTER - db 25,HAUNTER - - db $00 - -TowerMons5: ; d2dd (3:52dd) - db $0F - db 22,GASTLY - db 23,GASTLY - db 24,GASTLY - db 25,GASTLY - db 26,GASTLY - db 21,GASTLY - db 20,CUBONE - db 27,GASTLY - db 22,HAUNTER - db 27,HAUNTER - - db $00 - -TowerMons6: ; d2f3 (3:52f3) - db $0F - db 22,GASTLY - db 23,GASTLY - db 24,GASTLY - db 25,GASTLY - db 26,GASTLY - db 21,GASTLY - db 22,CUBONE - db 27,GASTLY - db 22,HAUNTER - db 27,HAUNTER - - db $00 - -TowerMons7: ; d309 (3:5309) - db $14 - db 24,GASTLY - db 25,GASTLY - db 26,GASTLY - db 27,GASTLY - db 28,GASTLY - db 23,GASTLY - db 24,CUBONE - db 29,GASTLY - db 24,HAUNTER - db 29,HAUNTER - - db $00 - -Route13Mons: ; d31f (3:531f) - db $0F - db 25,ODDISH - db 25,BELLSPROUT - db 28,PIDGEOTTO - db 28,PIDGEY - db 27,ODDISH - db 27,BELLSPROUT - db 29,GLOOM - db 29,WEEPINBELL - db 26,FARFETCH_D - db 31,FARFETCH_D - - db $03 - db 15,SLOWPOKE - db 15,SLOWPOKE - db 15,SLOWPOKE - db 15,SLOWPOKE - db 15,SLOWPOKE - db 15,SLOWPOKE - db 15,SLOWPOKE - db 15,SLOWPOKE - db 15,SLOWBRO - db 20,SLOWBRO - -Route14Mons: ; d335 (3:5335) - db $0F - db 26,ODDISH - db 26,BELLSPROUT - db 24,VENONAT - db 30,PIDGEOTTO - db 28,ODDISH - db 28,BELLSPROUT - db 30,GLOOM - db 30,WEEPINBELL - db 27,VENONAT - db 30,VENOMOTH - - db $00 - -Route15Mons: ; d34b (3:534b) - db $0F - db 26,ODDISH - db 26,BELLSPROUT - db 24,VENONAT - db 32,PIDGEOTTO - db 28,ODDISH - db 28,BELLSPROUT - db 30,GLOOM - db 30,WEEPINBELL - db 27,VENONAT - db 30,VENOMOTH - - db $00 - -Route16Mons: ; d361 (3:5361) - db $19 - db 22,SPEAROW - db 22,DODUO - db 23,RATTATA - db 24,DODUO - db 24,RATTATA - db 26,DODUO - db 23,SPEAROW - db 24,FEAROW - db 25,RATICATE - db 26,RATICATE - - db $00 - -Route17Mons: ; d377 (3:5377) - db $19 - db 26,DODUO - db 27,FEAROW - db 27,DODUO - db 28,DODUO - db 28,PONYTA - db 30,PONYTA - db 29,FEAROW - db 28,DODUO - db 32,PONYTA - db 29,DODRIO - - db $00 - -Route18Mons: ; d38d (3:538d) - db $19 - db 22,SPEAROW - db 22,DODUO - db 23,RATTATA - db 24,DODUO - db 24,RATTATA - db 26,DODUO - db 23,SPEAROW - db 24,FEAROW - db 25,RATICATE - db 26,RATICATE - - db $00 - -ZoneMonsCenter: ; d3a3 (3:53a3) - db $1E - db 14,NIDORAN_M - db 36,NIDORAN_F - db 24,EXEGGCUTE - db 20,RHYHORN - db 23,NIDORINO - db 27,PARASECT - db 27,PARAS - db 32,PARASECT - db 22,TANGELA - db 7,CHANSEY - - db $00 - -ZoneMons1: ; d3b9 (3:53b9) - db $1E - db 21,NIDORAN_M - db 29,NIDORAN_F - db 22,EXEGGCUTE - db 21,TAUROS - db 32,NIDORINA - db 19,CUBONE - db 26,EXEGGCUTE - db 24,MAROWAK - db 21,CHANSEY - db 15,SCYTHER - - db $00 - -ZoneMons2: ; d3cf (3:53cf) - db $1E - db 36,NIDORAN_M - db 14,NIDORAN_F - db 20,EXEGGCUTE - db 25,RHYHORN - db 23,NIDORINA - db 28,KANGASKHAN - db 16,CUBONE - db 33,KANGASKHAN - db 25,SCYTHER - db 15,PINSIR - - db $00 - -ZoneMons3: ; d3e5 (3:53e5) - db $1E - db 29,NIDORAN_M - db 21,NIDORAN_F - db 22,EXEGGCUTE - db 21,TAUROS - db 32,NIDORINO - db 19,CUBONE - db 26,EXEGGCUTE - db 24,MAROWAK - db 25,PINSIR - db 27,TANGELA - - db $00 - -WaterMons: ; d3fb (3:53fb) - db $00 - - db $05 - db 5,TENTACOOL - db 10,TENTACOOL - db 15,TENTACOOL - db 5,TENTACOOL - db 10,TENTACOOL - db 15,TENTACOOL - db 20,TENTACOOL - db 30,TENTACOOL - db 35,TENTACOOL - db 40,TENTACOOL - -WaterMons: ; d3fb (3:53fb) - db $00 - - db $05 - db 5,TENTACOOL - db 10,TENTACOOL - db 15,TENTACOOL - db 5,TENTACOOL - db 10,TENTACOOL - db 15,TENTACOOL - db 20,TENTACOOL - db 30,TENTACOOL - db 35,TENTACOOL - db 40,TENTACOOL - -IslandMons1: ; d411 (3:5411) - db $0F - db 18,ZUBAT - db 25,KRABBY - db 27,KRABBY - db 27,ZUBAT - db 36,ZUBAT - db 28,SLOWPOKE - db 30,SLOWPOKE - db 9,ZUBAT - db 27,GOLBAT - db 36,GOLBAT - - db $00 - -IslandMonsB1: ; d427 (3:5427) - db $0A - db 27,ZUBAT - db 26,KRABBY - db 36,ZUBAT - db 28,KRABBY - db 27,GOLBAT - db 29,SLOWPOKE - db 18,ZUBAT - db 28,KINGLER - db 22,SEEL - db 26,SEEL - - db $00 - -IslandMonsB2: ; d43d (3:543d) - db $0A - db 27,ZUBAT - db 27,KRABBY - db 36,ZUBAT - db 27,GOLBAT - db 28,KINGLER - db 24,SEEL - db 29,KRABBY - db 36,GOLBAT - db 31,SLOWPOKE - db 31,SLOWBRO - - db $00 - -IslandMonsB3: ; d453 (3:5453) - db $0A - db 27,GOLBAT - db 36,ZUBAT - db 29,KRABBY - db 27,ZUBAT - db 30,KINGLER - db 26,SEEL - db 31,KRABBY - db 30,SEEL - db 28,DEWGONG - db 32,DEWGONG - - db $05 - db 25,TENTACOOL - db 30,TENTACOOL - db 20,TENTACOOL - db 30,STARYU - db 35,TENTACOOL - db 30,STARYU - db 40,TENTACOOL - db 30,STARYU - db 30,STARYU - db 30,STARYU - -IslandMonsB4: ; d469 (3:5469) - db $0A - db 36,GOLBAT - db 36,ZUBAT - db 30,KRABBY - db 32,KINGLER - db 28,SEEL - db 32,SEEL - db 27,GOLBAT - db 45,ZUBAT - db 30,DEWGONG - db 34,DEWGONG - - db $05 - db 25,TENTACOOL - db 30,TENTACOOL - db 20,TENTACOOL - db 30,STARYU - db 35,TENTACOOL - db 30,STARYU - db 40,TENTACOOL - db 30,STARYU - db 30,STARYU - db 30,STARYU - -MansionMons1: ; d47f (3:547f) - db $0A - db 34,RATTATA - db 34,RATICATE - db 23,GRIMER - db 26,GROWLITHE - db 37,RATTATA - db 37,RATICATE - db 30,GROWLITHE - db 26,GRIMER - db 34,GROWLITHE - db 38,GROWLITHE - - db $00 - -MansionMons2: ; d495 (3:5495) - db $0A - db 37,RATTATA - db 37,RATICATE - db 26,GRIMER - db 29,GRIMER - db 40,RATTATA - db 40,RATICATE - db 32,GRIMER - db 35,GRIMER - db 35,MUK - db 38,MUK - - db $00 - -MansionMons3: ; d4ab (3:54ab) - db $0A - db 40,RATTATA - db 40,RATICATE - db 32,GRIMER - db 35,GRIMER - db 43,RATTATA - db 43,RATICATE - db 38,GRIMER - db 38,GRIMER - db 38,MUK - db 41,MUK - - db $00 - -MansionMonsB1: ; d4c1 (3:54c1) - db $0A - db 35,GRIMER - db 38,GRIMER - db 37,RATICATE - db 40,RATICATE - db 41,MUK - db 43,RATICATE - db 24,DITTO - db 46,RATICATE - db 18,DITTO - db 12,DITTO - - db $00 - -Route21Mons: ; d4d7 (3:54d7) - db $19 - db 15,PIDGEY - db 13,RATTATA - db 13,PIDGEY - db 11,PIDGEY - db 17,PIDGEY - db 15,RATTATA - db 15,RATICATE - db 17,PIDGEOTTO - db 19,PIDGEOTTO - db 15,PIDGEOTTO - - db $05 - db 5,TENTACOOL - db 10,TENTACOOL - db 15,TENTACOOL - db 5,TENTACOOL - db 10,TENTACOOL - db 15,TENTACOOL - db 20,TENTACOOL - db 30,TENTACOOL - db 35,TENTACOOL - db 40,TENTACOOL - -DungeonMons1: ; d501 (3:5501) - db $0A - db 50,GOLBAT - db 55,GOLBAT - db 45,GRAVELER - db 55,GLOOM - db 55,WEEPINBELL - db 52,SANDSLASH - db 54,VENOMOTH - db 54,PARASECT - db 55,DITTO - db 60,DITTO - - db $00 - -DungeonMons2: ; d517 (3:5517) - db $0F - db 52,GOLBAT - db 57,GOLBAT - db 50,GRAVELER - db 56,SANDSLASH - db 50,RHYHORN - db 60,DITTO - db 58,GLOOM - db 58,WEEPINBELL - db 60,RHYDON - db 58,RHYDON - - db $00 - -DungeonMonsB1: ; d52d (3:552d) - db $19 - db 54,GOLBAT - db 59,GOLBAT - db 55,GRAVELER - db 52,RHYHORN - db 62,RHYDON - db 60,DITTO - db 56,CHANSEY - db 65,DITTO - db 55,LICKITUNG - db 50,LICKITUNG - - db $00 - -PowerPlantMons: ; d543 (3:5543) - db $0A - db 30,MAGNEMITE - db 35,MAGNEMITE - db 33,MAGNETON - db 33,VOLTORB - db 37,VOLTORB - db 33,GRIMER - db 37,GRIMER - db 38,MAGNETON - db 33,MUK - db 37,MUK - - db $00 - -Route23Mons: ; d559 (3:5559) - db $0A - db 41,NIDORINO - db 41,NIDORINA - db 36,MANKEY - db 44,NIDORINO - db 44,NIDORINA - db 40,FEAROW - db 41,MANKEY - db 45,FEAROW - db 41,PRIMEAPE - db 46,PRIMEAPE - - db $00 - -PlateauMons2: ; d56f (3:556f) - db $0A - db 31,GEODUDE - db 36,GEODUDE - db 41,GEODUDE - db 44,ZUBAT - db 39,GOLBAT - db 44,GRAVELER - db 45,ONIX - db 47,ONIX - db 39,MACHOKE - db 42,MACHOKE - - db $00 - -PlateauMons3: ; d585 (3:5585) - db $0F - db 36,GEODUDE - db 44,GOLBAT - db 41,GEODUDE - db 49,ONIX - db 46,GEODUDE - db 41,GRAVELER - db 42,MACHOKE - db 45,MACHOKE - db 47,GRAVELER - db 47,GRAVELER - - db $00 - -PlateauMons1: ; d59b (3:559b) - db $0F - db 26,GEODUDE - db 31,GEODUDE - db 36,GEODUDE - db 39,ZUBAT - db 44,ZUBAT - db 41,GEODUDE - db 43,ONIX - db 45,ONIX - db 41,GRAVELER - db 47,GRAVELER - - db $00 - -CaveMons: ; d5b1 (3:55b1) - db $14 - db 18,DIGLETT - db 19,DIGLETT - db 17,DIGLETT - db 20,DIGLETT - db 16,DIGLETT - db 15,DIGLETT - db 21,DIGLETT - db 22,DIGLETT - db 29,DUGTRIO - db 31,DUGTRIO - - db $00 - -ENDC - -UseItem_: ; d5c7 (3:55c7) - ld a,1 - ld [$cd6a],a - ld a,[$cf91] ;contains item_ID - cp a,HM_01 - jp nc,ItemUseTMHM - ld hl,ItemUsePtrTable - dec a - add a - ld c,a - ld b,0 - add hl,bc - ld a,[hli] - ld h,[hl] - ld l,a - jp [hl] - -ItemUsePtrTable: ; d5e1 (3:55e1) - dw ItemUseBall ; MASTER_BALL - dw ItemUseBall ; ULTRA_BALL - dw ItemUseBall ; GREAT_BALL - dw ItemUseBall ; POKE_BALL - dw ItemUseTownMap ; TOWN_MAP - dw ItemUseBicycle ; BICYCLE - dw ItemUseSurfboard ; out-of-battle Surf effect - dw ItemUseBall ; SAFARI_BALL - dw ItemUsePokedex ; POKEDEX - dw ItemUseEvoStone ; MOON_STONE - dw ItemUseMedicine ; ANTIDOTE - dw ItemUseMedicine ; BURN_HEAL - dw ItemUseMedicine ; ICE_HEAL - dw ItemUseMedicine ; AWAKENING - dw ItemUseMedicine ; PARLYZ_HEAL - dw ItemUseMedicine ; FULL_RESTORE - dw ItemUseMedicine ; MAX_POTION - dw ItemUseMedicine ; HYPER_POTION - dw ItemUseMedicine ; SUPER_POTION - dw ItemUseMedicine ; POTION - dw ItemUseBait ; BOULDERBADGE - dw ItemUseRock ; CASCADEBADGE - dw UnusableItem ; THUNDERBADGE - dw UnusableItem ; RAINBOWBADGE - dw UnusableItem ; SOULBADGE - dw UnusableItem ; MARSHBADGE - dw UnusableItem ; VOLCANOBADGE - dw UnusableItem ; EARTHBADGE - dw ItemUseEscapeRope ; ESCAPE_ROPE - dw ItemUseRepel ; REPEL - dw UnusableItem ; OLD_AMBER - dw ItemUseEvoStone ; FIRE_STONE - dw ItemUseEvoStone ; THUNDER_STONE - dw ItemUseEvoStone ; WATER_STONE - dw ItemUseVitamin ; HP_UP - dw ItemUseVitamin ; PROTEIN - dw ItemUseVitamin ; IRON - dw ItemUseVitamin ; CARBOS - dw ItemUseVitamin ; CALCIUM - dw ItemUseVitamin ; RARE_CANDY - dw UnusableItem ; DOME_FOSSIL - dw UnusableItem ; HELIX_FOSSIL - dw UnusableItem ; SECRET_KEY - dw UnusableItem - dw UnusableItem ; BIKE_VOUCHER - dw ItemUseXAccuracy ; X_ACCURACY - dw ItemUseEvoStone ; LEAF_STONE - dw ItemUseCardKey ; CARD_KEY - dw UnusableItem ; NUGGET - dw UnusableItem ; ??? PP_UP - dw ItemUsePokedoll ; POKE_DOLL - dw ItemUseMedicine ; FULL_HEAL - dw ItemUseMedicine ; REVIVE - dw ItemUseMedicine ; MAX_REVIVE - dw ItemUseGuardSpec ; GUARD_SPEC_ - dw ItemUseSuperRepel ; SUPER_REPL - dw ItemUseMaxRepel ; MAX_REPEL - dw ItemUseDireHit ; DIRE_HIT - dw UnusableItem ; COIN - dw ItemUseMedicine ; FRESH_WATER - dw ItemUseMedicine ; SODA_POP - dw ItemUseMedicine ; LEMONADE - dw UnusableItem ; S_S__TICKET - dw UnusableItem ; GOLD_TEETH - dw ItemUseXStat ; X_ATTACK - dw ItemUseXStat ; X_DEFEND - dw ItemUseXStat ; X_SPEED - dw ItemUseXStat ; X_SPECIAL - dw ItemUseCoinCase ; COIN_CASE - dw ItemUseOaksParcel ; OAKS_PARCEL - dw ItemUseItemfinder ; ITEMFINDER - dw UnusableItem ; SILPH_SCOPE - dw ItemUsePokeflute ; POKE_FLUTE - dw UnusableItem ; LIFT_KEY - dw UnusableItem ; EXP__ALL - dw OldRodCode ; OLD_ROD - dw GoodRodCode ; GOOD_ROD - dw SuperRodCode ; SUPER_ROD - dw ItemUsePPUp ; PP_UP (real one) - dw ItemUsePPRestore ; ETHER - dw ItemUsePPRestore ; MAX_ETHER - dw ItemUsePPRestore ; ELIXER - dw ItemUsePPRestore ; MAX_ELIXER - -ItemUseBall: ; d687 (3:5687) - ld a,[W_ISINBATTLE] - and a - jp z,ItemUseNotTime ; not in battle - dec a - jp nz,ThrowBallAtTrainerMon - ld a,[W_BATTLETYPE] - dec a - jr z,.UseBall - ld a,[W_NUMINPARTY] ;is Party full? - cp a,6 - jr nz,.UseBall - ld a,[W_NUMINBOX] ;is Box full? - cp a,20 - jp z,BoxFullCannotThrowBall -.UseBall ;$56a7 -;ok, you can use a ball - xor a - ld [$d11c],a - ld a,[W_BATTLETYPE] - cp a,2 ;SafariBattle - jr nz,.skipSafariZoneCode -.safariZone - ; remove a Safari Ball from inventory - ld hl,W_NUMSAFARIBALLS - dec [hl] -.skipSafariZoneCode ;$56b6 - call GoPAL_SET_CF1C - ld a,$43 - ld [$d11e],a - call LoadScreenTilesFromBuffer1 ;restore screenBuffer from Backup - ld hl,ItemUseText00 - call PrintText - ld hl, IsGhostBattle - ld b, BANK(IsGhostBattle) - call Bankswitch - ld b,$10 - jp z,.next12 - ld a,[W_BATTLETYPE] - dec a - jr nz,.notOldManBattle -.oldManBattle - ld hl,W_GRASSRATE - ld de,W_PLAYERNAME - ld bc,11 - call CopyData ; save the player's name in the Wild Monster data (part of the Cinnabar Island Missingno glitch) - jp .BallSuccess ;$578b -.notOldManBattle ;$56e9 - ld a,[W_CURMAP] - cp a,POKEMONTOWER_6 - jr nz,.loop - ld a,[W_ENEMYMONID] - cp a,MAROWAK - ld b,$10 - jp z,.next12 -; if not fighting ghost Marowak, loop until a random number in the current -; pokeball's allowed range is found -.loop ;$56fa - call GenRandom - ld b,a - ld hl,$cf91 - ld a,[hl] - cp a,MASTER_BALL - jp z,.BallSuccess ;$578b - cp a,POKE_BALL - jr z,.checkForAilments - ld a,200 - cp b - jr c,.loop ;get only numbers <= 200 for Great Ball - ld a,[hl] - cp a,GREAT_BALL - jr z,.checkForAilments - ld a,150 ;get only numbers <= 150 for Ultra Ball - cp b - jr c,.loop -.checkForAilments ;$571a -; pokemon can be caught more easily with any (primary) status ailment -; Frozen/Asleep pokemon are relatively even easier to catch -; for Frozen/Asleep pokemon, any random number from 0-24 ensures a catch. -; for the others, a random number from 0-11 ensures a catch. - ld a,[W_ENEMYMONSTATUS] ;status ailments - and a - jr z,.noAilments - and a,(FRZ + SLP) ;is frozen and/or asleep? - ld c,12 - jr z,.notFrozenOrAsleep - ld c,25 -.notFrozenOrAsleep ;$5728 - ld a,b - sub c - jp c,.BallSuccess ;$578b - ld b,a -.noAilments ;$572e - push bc ;save RANDOM number - xor a - ld [H_MULTIPLICAND],a - ld hl,W_ENEMYMONMAXHP - ld a,[hli] - ld [H_MULTIPLICAND + 1],a - ld a,[hl] - ld [H_MULTIPLICAND + 2],a - ld a,255 - ld [H_MULTIPLIER],a - call Multiply ; MaxHP * 255 - ld a,[$cf91] - cp a,GREAT_BALL - ld a,12 ;any other BallFactor - jr nz,.next7 - ld a,8 -.next7 ;$574d - ld [H_DIVISOR],a - ld b,4 ; number of bytes in dividend - call Divide - ld hl,W_ENEMYMONCURHP - ld a,[hli] - ld b,a - ld a,[hl] - -; explanation: we have a 16-bit value equal to [b << 8 | a]. -; This number is divided by 4. The result is 8 bit (reg. a). -; Always bigger than zero. - srl b - rr a - srl b - rr a ; a = current HP / 4 - and a - jr nz,.next8 - inc a -.next8 ;$5766 - ld [H_DIVISOR],a - ld b,4 - call Divide ; ((MaxHP * 255) / BallFactor) / (CurHP / 4) - ld a,[H_QUOTIENT + 2] - and a - jr z,.next9 - ld a,255 - ld [H_QUOTIENT + 3],a -.next9 ;$5776 - pop bc - ld a,[$d007] ;enemy: Catch Rate - cp b - jr c,.next10 - ld a,[H_QUOTIENT + 2] - and a - jr nz,.BallSuccess ; if ((MaxHP * 255) / BallFactor) / (CurHP / 4) > 0x255, automatic success - call GenRandom - ld b,a - ld a,[H_QUOTIENT + 3] - cp b - jr c,.next10 -.BallSuccess ;$578b - jr .BallSuccess2 -.next10 ;$578d - ld a,[H_QUOTIENT + 3] - ld [$d11e],a - xor a - ld [H_MULTIPLICAND],a - ld [H_MULTIPLICAND + 1],a - ld a,[$d007] ;enemy: Catch Rate - ld [H_MULTIPLICAND + 2],a - ld a,100 - ld [H_MULTIPLIER],a - call Multiply ; CatchRate * 100 - ld a,[$cf91] - ld b,255 - cp a,POKE_BALL - jr z,.next11 - ld b,200 - cp a,GREAT_BALL - jr z,.next11 - ld b,150 - cp a,ULTRA_BALL - jr z,.next11 -.next11 ;$57b8 - ld a,b - ld [H_DIVISOR],a - ld b,4 - call Divide - ld a,[H_QUOTIENT + 2] - and a - ld b,$63 - jr nz,.next12 - ld a,[$d11e] - ld [H_MULTIPLIER],a - call Multiply - ld a,255 - ld [H_DIVISOR],a - ld b,4 - call Divide - ld a,[W_ENEMYMONSTATUS] ;status ailments - and a - jr z,.next13 - and a,(FRZ + SLP) - ld b,5 - jr z,.next14 - ld b,10 -.next14 ;$57e6 - ld a,[H_QUOTIENT + 3] - add b - ld [H_QUOTIENT + 3],a -.next13 ;$57eb - ld a,[H_QUOTIENT + 3] - cp a,10 - ld b,$20 - jr c,.next12 - cp a,30 - ld b,$61 - jr c,.next12 - cp a,70 - ld b,$62 - jr c,.next12 - ld b,$63 -.next12 ;$5801 - ld a,b - ld [$d11e],a -.BallSuccess2 ;$5805 - ld c,20 - call DelayFrames - ld a,TOSS_ANIM - ld [W_ANIMATIONID],a - xor a - ld [$fff3],a - ld [$cc5b],a - ld [$d05b],a - ld a,[wWhichPokemon] - push af - ld a,[$cf91] - push af - ld a,$08 ;probably animations - call Predef - pop af - ld [$cf91],a - pop af - ld [wWhichPokemon],a - ld a,[$d11e] - cp a,$10 - ld hl,ItemUseBallText00 - jp z,.printText0 - cp a,$20 - ld hl,ItemUseBallText01 - jp z,.printText0 - cp a,$61 - ld hl,ItemUseBallText02 - jp z,.printText0 - cp a,$62 - ld hl,ItemUseBallText03 - jp z,.printText0 - cp a,$63 - ld hl,ItemUseBallText04 - jp z,.printText0 - ld hl,$cfe6 ;current HP - ld a,[hli] - push af - ld a,[hli] - push af ;backup currentHP... - inc hl - ld a,[hl] - push af ;...and status ailments - push hl - ld hl,$d069 - bit 3,[hl] - jr z,.next15 - ld a,$4c - ld [W_ENEMYMONID],a - jr .next16 -.next15 ;$5871 - set 3,[hl] - ld hl,$cceb - ld a,[$cff1] - ld [hli],a - ld a,[$cff2] - ld [hl],a -.next16 ;$587e - ld a,[$cf91] - push af - ld a,[W_ENEMYMONID] - ld [$cf91],a - ld a,[$cff3] - ld [$d127],a - ld hl, Func_3eb01 - ld b, BANK(Func_3eb01) - call Bankswitch - pop af - ld [$cf91],a - pop hl - pop af - ld [hld],a - dec hl - pop af - ld [hld],a - pop af - ld [hl],a - ld a,[$cfe5] ;enemy - ld [$d11c],a - ld [$cf91],a - ld [$d11e],a - ld a,[W_BATTLETYPE] - dec a - jr z,.printText1 - ld hl,ItemUseBallText05 - call PrintText - ld a,$3a ;convert order: Internal->Dex - call Predef - ld a,[$d11e] - dec a - ld c,a - ld b,2 - ld hl,$d2f7 ;Dex_own_flags (pokemon) - ld a,$10 - call Predef ;check Dex flag (own already or not) - ld a,c - push af - ld a,[$d11e] - dec a - ld c,a - ld b,1 - ld a,$10 ;set Dex_own_flag? - call Predef - pop af - and a - jr nz,.checkParty - ld hl,ItemUseBallText06 - call PrintText - call CleanLCD_OAM - ld a,[$cfe5] ;caught mon_ID - ld [$d11e],a - ld a,$3d - call Predef -.checkParty ;$58f4 - ld a,[W_NUMINPARTY] - cp a,6 ;is party full? - jr z,.sendToBox - xor a - ld [$cc49],a - call CleanLCD_OAM - call AddPokemonToParty ;add mon to Party - jr .End -.sendToBox ;$5907 - call CleanLCD_OAM - call Func_e7a4 - ld hl,ItemUseBallText07 - ld a,[$d7f1] - bit 0,a ;already met Bill? - jr nz,.sendToBox2 - ld hl,ItemUseBallText08 -.sendToBox2 ;$591a - call PrintText - jr .End -.printText1 ;$591f - ld hl,ItemUseBallText05 -.printText0 ;$5922 - call PrintText - call CleanLCD_OAM -.End ;$5928 - ld a,[W_BATTLETYPE] - and a - ret nz - ld hl,$d31d - inc a - ld [$cf96],a - jp RemoveItemFromInventory ;remove ITEM (XXX) -ItemUseBallText00: ; d937 (3:5937) -;"It dodged the thrown ball!" -;"This pokemon can't be caught" - TX_FAR _ItemUseBallText00 - db "@" -ItemUseBallText01: ; d93c (3:593c) -;"You missed the pokemon!" - TX_FAR _ItemUseBallText01 - db "@" -ItemUseBallText02: ; d941 (3:5941) -;"Darn! The pokemon broke free!" - TX_FAR _ItemUseBallText02 - db "@" -ItemUseBallText03: ; d946 (3:5946) -;"Aww! It appeared to be caught!" - TX_FAR _ItemUseBallText03 - db "@" -ItemUseBallText04: ; d94b (3:594b) -;"Shoot! It was so close too!" - TX_FAR _ItemUseBallText04 - db "@" -ItemUseBallText05: ; d950 (3:5950) -;"All right! {MonName} was caught!" -;play sound - TX_FAR _ItemUseBallText05 - db $12,$06 - db "@" -ItemUseBallText07: ; d957 (3:5957) -;"X was transferred to Bill's PC" - TX_FAR _ItemUseBallText07 - db "@" -ItemUseBallText08: ; d95c (3:595c) -;"X was transferred to someone's PC" - TX_FAR _ItemUseBallText08 - db "@" - -ItemUseBallText06: ; d961 (3:5961) -;"New DEX data will be added..." -;play sound - TX_FAR _ItemUseBallText06 - db $13,$06 - db "@" - -ItemUseTownMap: ; d968 (3:5968) - ld a,[W_ISINBATTLE] - and a - jp nz,ItemUseNotTime - ld b, BANK(DisplayTownMap) - ld hl, DisplayTownMap - jp Bankswitch ; display Town Map - -ItemUseBicycle: ; d977 (3:5977) - ld a,[W_ISINBATTLE] - and a - jp nz,ItemUseNotTime - ld a,[$d700] - ld [$d11a],a - cp a,2 ; is the player surfing? - jp z,ItemUseNotTime - dec a ; is player already bicycling? - jr nz,.tryToGetOnBike -.getOffBike - call ItemUseReloadOverworldData - xor a - ld [$d700],a ; change player state to walking - call Func_2307 ; play walking music - ld hl,GotOffBicycleText - jr .printText -.tryToGetOnBike - call IsBikeRidingAllowed - jp nc,NoCyclingAllowedHere - call ItemUseReloadOverworldData - xor a ; no keys pressed - ld [H_CURRENTPRESSEDBUTTONS],a ; current joypad state - inc a - ld [$d700],a ; change player state to bicycling - ld hl,GotOnBicycleText - call Func_2307 ; play bike riding music -.printText - jp PrintText - -; used for Surf out-of-battle effect -ItemUseSurfboard: ; d9b4 (3:59b4) - ld a,[$d700] - ld [$d11a],a - cp a,2 ; is the player already surfing? - jr z,.tryToStopSurfing -.tryToSurf - call IsNextTileShoreOrWater - jp c,SurfingAttemptFailed - ld hl,TilePairCollisionsWater - call CheckForTilePairCollisions - jp c,SurfingAttemptFailed -.surf - call .makePlayerMoveForward - ld hl,$d730 - set 7,[hl] - ld a,2 - ld [$d700],a ; change player state to surfing - call Func_2307 ; play surfing music - ld hl,SurfingGotOnText - jp PrintText -.tryToStopSurfing - xor a - ld [$ff8c],a - ld d,16 ; talking range in pixels (normal range) - call IsSpriteInFrontOfPlayer2 - res 7,[hl] - ld a,[$ff8c] - and a ; is there a sprite in the way? - jr nz,.cannotStopSurfing - ld hl,TilePairCollisionsWater - call CheckForTilePairCollisions - jr c,.cannotStopSurfing - ld hl,$d530 ; pointer to list of passable tiles - ld a,[hli] - ld h,[hl] - ld l,a ; hl now points to passable tiles - ld a,[$cfc6] ; tile in front of the player - ld b,a -.passableTileLoop - ld a,[hli] - cp b - jr z,.stopSurfing - cp a,$ff - jr nz,.passableTileLoop -.cannotStopSurfing - ld hl,SurfingNoPlaceToGetOffText - jp PrintText -.stopSurfing - call .makePlayerMoveForward - ld hl,$d730 - set 7,[hl] - xor a - ld [$d700],a ; change player state to walking - dec a - ld [wJoypadForbiddenButtonsMask],a - call Func_2307 ; play walking music - jp LoadWalkingPlayerSpriteGraphics -; uses a simulated button press to make the player move forward -.makePlayerMoveForward - ld a,[$d52a] ; direction the player is going - bit 3,a - ld b,%01000000 ; Up key - jr nz,.storeSimulatedButtonPress - bit 2,a - ld b,%10000000 ; Down key - jr nz,.storeSimulatedButtonPress - bit 1,a - ld b,%00100000 ; Left key - jr nz,.storeSimulatedButtonPress - ld b,%00010000 ; Right key -.storeSimulatedButtonPress - ld a,b - ld [$ccd3],a ; base address of simulated button presses - xor a - ld [$cd39],a - inc a - ld [$cd38],a ; index of current simulated button press - ret - -SurfingGotOnText: ; da4c (3:5a4c) - TX_FAR _SurfingGotOnText - db "@" - -SurfingNoPlaceToGetOffText: ; da51 (3:5a51) - TX_FAR _SurfingNoPlaceToGetOffText - db "@" - -ItemUsePokedex: ; da56 (3:5a56) - ld a,$29 - jp Predef - -ItemUseEvoStone: ; da5b (3:5a5b) - ld a,[W_ISINBATTLE] - and a - jp nz,ItemUseNotTime - ld a,[wWhichPokemon] - push af - ld a,[$cf91] - ld [$d156],a - push af - ld a,$05 ; evolution stone party menu - ld [$d07d],a - ld a,$ff - ld [$cfcb],a - call DisplayPartyMenu - pop bc - jr c,.canceledItemUse - ld a,b - ld [$cf91],a - ld a,$01 - ld [$ccd4],a - ld a,(SFX_02_3e - SFX_Headers_02) / 3 - call PlaySoundWaitForCurrent ; play sound - call WaitForSoundToFinish ; wait for sound to end - ld hl, Func_3ad0e - ld b, BANK(Func_3ad0e) - call Bankswitch ; try to evolve pokemon - ld a,[$d121] - and a - jr z,.noEffect - pop af - ld [wWhichPokemon],a - ld hl,wNumBagItems - ld a,1 ; remove 1 stone - ld [$cf96],a - jp RemoveItemFromInventory -.noEffect - call ItemUseNoEffect -.canceledItemUse - xor a - ld [$cd6a],a - pop af - ret - -ItemUseVitamin: ; dab4 (3:5ab4) - ld a,[W_ISINBATTLE] - and a - jp nz,ItemUseNotTime - -ItemUseMedicine: ; dabb (3:5abb) - ld a,[W_NUMINPARTY] - and a - jp z,.emptyParty - ld a,[wWhichPokemon] - push af - ld a,[$cf91] - push af - ld a,$01 - ld [$d07d],a ; item use party menu - ld a,$ff - ld [$cfcb],a - ld a,[$d152] - and a ; using Softboiled? - jr z,.notUsingSoftboiled -; if using softboiled - call GoBackToPartyMenu - jr .getPartyMonDataAddress -.emptyParty - ld hl,.emptyPartyText - xor a - ld [$cd6a],a ; item use failed - jp PrintText -.emptyPartyText - text "You don't have" - line "any #MON!" - prompt -.notUsingSoftboiled - call DisplayPartyMenu -.getPartyMonDataAddress - jp c,.canceledItemUse - ld hl,W_PARTYMON1DATA - ld bc,44 - ld a,[wWhichPokemon] - call AddNTimes - ld a,[wWhichPokemon] - ld [$cf06],a - ld d,a - ld a,[$cf91] - ld e,a - ld [$d0b5],a - pop af - ld [$cf91],a - pop af - ld [wWhichPokemon],a - ld a,[$d152] - and a ; using Softboiled? - jr z,.checkItemType -; if using softboiled - ld a,[wWhichPokemon] - cp d ; is the pokemon trying to use softboiled on itself? - jr z,ItemUseMedicine ; if so, force another choice -.checkItemType - ld a,[$cf91] - cp a,REVIVE - jr nc,.healHP ; if it's a Revive or Max Revive - cp a,FULL_HEAL - jr z,.cureStatusAilment ; if it's a Full Heal - cp a,HP_UP - jp nc,.useVitamin ; if it's a vitamin or Rare Candy - cp a,FULL_RESTORE - jr nc,.healHP ; if it's a Full Restore or one of the potions -; fall through if it's one of the status-specifc healing items -.cureStatusAilment - ld bc,4 - add hl,bc ; hl now points to status - ld a,[$cf91] - ld bc,$f008 - cp a,ANTIDOTE - jr z,.checkMonStatus - ld bc,$f110 - cp a,BURN_HEAL - jr z,.checkMonStatus - ld bc,$f220 - cp a,ICE_HEAL - jr z,.checkMonStatus - ld bc,$f307 - cp a,AWAKENING - jr z,.checkMonStatus - ld bc,$f440 - cp a,PARLYZ_HEAL - jr z,.checkMonStatus - ld bc,$f6ff ; Full Heal -.checkMonStatus - ld a,[hl] ; pokemon's status - and c ; does the pokemon have a status ailment the item can cure? - jp z,.healingItemNoEffect -; if the pokemon has a status the item can heal - xor a - ld [hl],a ; remove the status ailment in the party data - ld a,b - ld [$d07d],a ; the message to display for the item used - ld a,[wPlayerMonNumber] - cp d ; is pokemon the item was used on active in battle? - jp nz,.doneHealing -; if it is active in battle - xor a - ld [W_PLAYERMONSTATUS],a ; remove the status ailment in the in-battle pokemon data - push hl - ld hl,W_PLAYERBATTSTATUS3 - res 0,[hl] ; heal Toxic status - pop hl - ld bc,30 - add hl,bc ; hl now points to party stats - ld de,W_PLAYERMONMAXHP - ld bc,10 - call CopyData ; copy party stats to in-battle stat data - ld a,$28 - call Predef - jp .doneHealing -.healHP - inc hl ; hl = address of current HP - ld a,[hli] - ld b,a - ld [wHPBarOldHP+1],a - ld a,[hl] - ld c,a - ld [wHPBarOldHP],a ; current HP stored at $ceeb (2 bytes, big-endian) - or b - jr nz,.notFainted -.fainted - ld a,[$cf91] - cp a,REVIVE - jr z,.updateInBattleFaintedData - cp a,MAX_REVIVE - jr z,.updateInBattleFaintedData - jp .healingItemNoEffect -.updateInBattleFaintedData - ld a,[W_ISINBATTLE] - and a - jr z,.compareCurrentHPToMaxHP - push hl - push de - push bc - ld a,[$cf06] - ld c,a - ld hl,$ccf5 - ld b,$02 - ld a,$10 - call Predef - ld a,c - and a - jr z,.next - ld a,[$cf06] - ld c,a - ld hl,W_PLAYERMONSALIVEFLAGS - ld b,$01 - ld a,$10 - call Predef -.next - pop bc - pop de - pop hl - jr .compareCurrentHPToMaxHP -.notFainted - ld a,[$cf91] - cp a,REVIVE - jp z,.healingItemNoEffect - cp a,MAX_REVIVE - jp z,.healingItemNoEffect -.compareCurrentHPToMaxHP - push hl - push bc - ld bc,32 - add hl,bc ; hl now points to max HP - pop bc - ld a,[hli] - cp b - jr nz,.skipComparingLSB ; no need to compare the LSB's if the MSB's don't match - ld a,[hl] - cp c -.skipComparingLSB - pop hl - jr nz,.notFullHP -.fullHP ; if the pokemon's current HP equals its max HP - ld a,[$cf91] - cp a,FULL_RESTORE - jp nz,.healingItemNoEffect - inc hl - inc hl - ld a,[hld] ; status ailment - and a ; does the pokemon have a status ailment? - jp z,.healingItemNoEffect - ld a,FULL_HEAL - ld [$cf91],a - dec hl - dec hl - dec hl - jp .cureStatusAilment -.notFullHP ; if the pokemon's current HP doesn't equal its max HP - xor a - ld [$d083],a - ld [$c02a],a - push hl - push de - ld bc,32 - add hl,bc ; hl now points to max HP - ld a,[hli] - ld [wHPBarMaxHP+1],a - ld a,[hl] - ld [wHPBarMaxHP],a ; max HP stored at $cee9 (2 bytes, big-endian) - ld a,[$d152] - and a ; using Softboiled? - jp z,.notUsingSoftboiled2 -; if using softboiled - ld hl,wHPBarMaxHP - ld a,[hli] - push af - ld a,[hli] - push af - ld a,[hli] - push af - ld a,[hl] - push af - ld hl,W_PARTYMON1_MAXHP - ld a,[wWhichPokemon] - ld bc,44 - call AddNTimes - ld a,[hli] - ld [$ceea],a - ld [H_DIVIDEND],a - ld a,[hl] - ld [wHPBarMaxHP],a - ld [H_DIVIDEND + 1],a - ld a,5 - ld [H_DIVISOR],a - ld b,2 ; number of bytes - call Divide ; get 1/5 of max HP of pokemon that used Softboiled - ld bc,-33 - add hl,bc ; hl now points to LSB of current HP of pokemon that used Softboiled -; subtract 1/5 of max HP from current HP of pokemon that used Softboiled - ld a,[H_QUOTIENT + 3] - push af - ld b,a - ld a,[hl] - ld [wHPBarOldHP],a - sub b - ld [hld],a - ld [wHPBarNewHP],a - ld a,[H_QUOTIENT + 2] - ld b,a - ld a,[hl] - ld [wHPBarOldHP+1],a - sbc b - ld [hl],a - ld [wHPBarNewHP+1],a - FuncCoord 4, 1 ; $c3b8 - ld hl,Coord - ld a,[wWhichPokemon] - ld bc,2 * 20 - call AddNTimes ; calculate coordinates of HP bar of pokemon that used Softboiled - ld a,(SFX_02_3d - SFX_Headers_02) / 3 - call PlaySoundWaitForCurrent ; play sound - ld a,[$fff6] - set 0,a - ld [$fff6],a - ld a,$02 - ld [$cf94],a - ld a,$48 - call Predef ; animate HP bar decrease of pokemon that used Softboiled - ld a,[$fff6] - res 0,a - ld [$fff6],a - pop af - ld b,a ; store heal amount (1/5 of max HP) - ld hl,$ceec - pop af - ld [hld],a - pop af - ld [hld],a - pop af - ld [hld],a - pop af - ld [hl],a - jr .addHealAmount -.notUsingSoftboiled2 - ld a,[$cf91] - cp a,SODA_POP - ld b,60 ; Soda Pop heal amount - jr z,.addHealAmount - ld b,80 ; Lemonade heal amount - jr nc,.addHealAmount - cp a,FRESH_WATER - ld b,50 ; Fresh Water heal amount - jr z,.addHealAmount - cp a,SUPER_POTION - ld b,200 ; Hyper Potion heal amount - jr c,.addHealAmount - ld b,50 ; Super Potion heal amount - jr z,.addHealAmount - ld b,20 ; Potion heal amount -.addHealAmount - pop de - pop hl - ld a,[hl] - add b - ld [hld],a - ld [wHPBarNewHP],a - ld a,[hl] - ld [wHPBarNewHP+1],a - jr nc,.noCarry - inc [hl] - ld a,[hl] - ld [$ceee],a -.noCarry - push de - inc hl - ld d,h - ld e,l ; de now points to current HP - ld hl,33 - add hl,de ; hl now points to max HP - ld a,[$cf91] - cp a,REVIVE - jr z,.setCurrentHPToHalfMaxHP - ld a,[hld] - ld b,a - ld a,[de] - sub b - dec de - ld b,[hl] - ld a,[de] - sbc b - jr nc,.setCurrentHPToMaxHp ; if current HP exceeds max HP after healing - ld a,[$cf91] - cp a,HYPER_POTION - jr c,.setCurrentHPToMaxHp ; if using a Full Restore or Max Potion - cp a,MAX_REVIVE - jr z,.setCurrentHPToMaxHp ; if using a Max Revive - jr .updateInBattleData -.setCurrentHPToHalfMaxHP - dec hl - dec de - ld a,[hli] - srl a - ld [de],a - ld [wHPBarNewHP+1],a - ld a,[hl] - rr a - inc de - ld [de],a - ld [wHPBarNewHP],a - dec de - jr .doneHealingPartyHP -.setCurrentHPToMaxHp - ld a,[hli] - ld [de],a - ld [wHPBarNewHP+1],a - inc de - ld a,[hl] - ld [de],a - ld [wHPBarNewHP],a - dec de -.doneHealingPartyHP ; done updating the pokemon's current HP in the party data structure - ld a,[$cf91] - cp a,FULL_RESTORE - jr nz,.updateInBattleData - ld bc,-31 - add hl,bc - xor a - ld [hl],a ; remove the status ailment in the party data -.updateInBattleData - ld h,d - ld l,e - pop de - ld a,[wPlayerMonNumber] - cp d ; is pokemon the item was used on active in battle? - jr nz,.calculateHPBarCoords -; copy party HP to in-battle HP - ld a,[hli] - ld [W_PLAYERMONCURHP],a - ld a,[hld] - ld [W_PLAYERMONCURHP + 1],a - ld a,[$cf91] - cp a,FULL_RESTORE - jr nz,.calculateHPBarCoords - xor a - ld [W_PLAYERMONSTATUS],a ; remove the status ailment in the in-battle pokemon data -.calculateHPBarCoords - ld hl,$c390 - ld bc,2 * 20 - inc d -.calculateHPBarCoordsLoop - add hl,bc - dec d - jr nz,.calculateHPBarCoordsLoop - jr .doneHealing -.healingItemNoEffect - call ItemUseNoEffect - jp .done -.doneHealing - ld a,[$d152] - and a ; using Softboiled? - jr nz,.skipRemovingItem ; no item to remove if using Softboiled - push hl - call RemoveUsedItem - pop hl -.skipRemovingItem - ld a,[$cf91] - cp a,FULL_RESTORE - jr c,.playStatusAilmentCuringSound - cp a,FULL_HEAL - jr z,.playStatusAilmentCuringSound - ld a,(SFX_02_3d - SFX_Headers_02) / 3 ; HP healing sound - call PlaySoundWaitForCurrent ; play sound - ld a,[$fff6] - set 0,a - ld [$fff6],a - ld a,$02 - ld [$cf94],a - ld a,$48 - call Predef ; animate the HP bar lengthening - ld a,[$fff6] - res 0,a - ld [$fff6],a - ld a,$f7 ; revived message - ld [$d07d],a - ld a,[$cf91] - cp a,REVIVE - jr z,.showHealingItemMessage - cp a,MAX_REVIVE - jr z,.showHealingItemMessage - ld a,$f5 ; standard HP healed message - ld [$d07d],a - jr .showHealingItemMessage -.playStatusAilmentCuringSound - ld a,(SFX_02_3e - SFX_Headers_02) / 3 ; status ailment curing sound - call PlaySoundWaitForCurrent ; play sound -.showHealingItemMessage - xor a - ld [H_AUTOBGTRANSFERENABLED],a - call ClearScreen - dec a - ld [$cfcb],a - call RedrawPartyMenu ; redraws the party menu and displays the message - ld a,1 - ld [H_AUTOBGTRANSFERENABLED],a - ld c,50 - call DelayFrames - call WaitForTextScrollButtonPress ; wait for a button press - jr .done -.canceledItemUse - xor a - ld [$cd6a],a ; item use failed - pop af - pop af -.done - ld a,[$d152] - and a ; using Softboiled? - ret nz ; if so, return - call GBPalWhiteOut - call z,GoPAL_SET_CF1C - ld a,[W_ISINBATTLE] - and a - ret nz - jp ReloadMapData ; restore saved screen -.useVitamin - push hl - ld a,[hl] - ld [$d0b5],a - ld [$d11e],a - ld bc,33 - add hl,bc ; hl now points to level - ld a,[hl] ; a = level - ld [$d127],a ; store level - call GetMonHeader - push de - ld a,d - ld hl,W_PARTYMON1NAME - call GetPartyMonName - pop de - pop hl - ld a,[$cf91] - cp a,RARE_CANDY - jp z,.useRareCandy - push hl - sub a,HP_UP - add a - ld bc,17 - add hl,bc - add l - ld l,a - jr nc,.noCarry2 - inc h -.noCarry2 - ld a,10 - ld b,a - ld a,[hl] ; a = MSB of stat experience of the appropriate stat - cp a,100 ; is there already at least 25600 (256 * 100) stat experience? - jr nc,.vitaminNoEffect ; if so, vitamins can't add any more - add b ; add 2560 (256 * 10) stat experience - jr nc,.noCarry3 ; a carry should be impossible here, so this will always jump - ld a,255 -.noCarry3 - ld [hl],a - pop hl - call .recalculateStats - ld hl,VitaminText - ld a,[$cf91] - sub a,HP_UP - 1 - ld c,a -.statNameLoop ; loop to get the address of the name of the stat the vitamin increases - dec c - jr z,.gotStatName -.statNameInnerLoop - ld a,[hli] - ld b,a - ld a,$50 - cp b - jr nz,.statNameInnerLoop - jr .statNameLoop -.gotStatName - ld de,$cf4b - ld bc,10 - call CopyData ; copy the stat's name to $cf4b - ld a,(SFX_02_3e - SFX_Headers_02) / 3 - call PlaySound ; play sound - ld hl,VitaminStatRoseText - call PrintText - jp RemoveUsedItem -.vitaminNoEffect - pop hl - ld hl,VitaminNoEffectText - call PrintText - jp GBPalWhiteOut -.recalculateStats - ld bc,34 - add hl,bc - ld d,h - ld e,l ; de now points to stats - ld bc,-18 - add hl,bc ; hl now points to byte 3 of experience - ld b,1 - jp CalcStats ; recalculate stats -.useRareCandy - push hl - ld bc,33 - add hl,bc ; hl now points to level - ld a,[hl] ; a = level - cp a,100 - jr z,.vitaminNoEffect ; can't raise level above 100 - inc a - ld [hl],a ; store incremented level - ld [$d127],a - push hl - push de - ld d,a - ld hl, CalcExperience - ld b, BANK(CalcExperience) - call Bankswitch ; calculate experience for next level and store it at $ff96 - pop de - pop hl - ld bc,-19 - add hl,bc ; hl now points to experience -; update experience to minimum for new level - ld a,[$ff96] - ld [hli],a - ld a,[$ff97] - ld [hli],a - ld a,[$ff98] - ld [hl],a - pop hl - ld a,[wWhichPokemon] - push af - ld a,[$cf91] - push af - push de - push hl - ld bc,34 - add hl,bc ; hl now points to MSB of max HP - ld a,[hli] - ld b,a - ld c,[hl] - pop hl - push bc - push hl - call .recalculateStats - pop hl - ld bc,35 ; hl now points to LSB of max HP - add hl,bc - pop bc - ld a,[hld] - sub c - ld c,a - ld a,[hl] - sbc b - ld b,a ; bc = the amount of max HP gained from leveling up -; add the amount gained to the current HP - ld de,-32 - add hl,de ; hl now points to MSB of current HP - ld a,[hl] - add c - ld [hld],a - ld a,[hl] - adc b - ld [hl],a - ld a,$f8 ; level up message - ld [$d07d],a - call RedrawPartyMenu - pop de - ld a,d - ld [wWhichPokemon],a - ld a,e - ld [$d11e],a - xor a - ld [$cc49],a ; load from player's party - call LoadMonData - ld d,$01 - ld hl, PrintStatsBox - ld b, BANK(PrintStatsBox) - call Bankswitch ; display new stats text box - call WaitForTextScrollButtonPress ; wait for button press - xor a - ld [$cc49],a - ld a,$1a - call Predef ; learn level up move, if any - xor a - ld [$ccd4],a - ld hl, Func_3ad0e - ld b, BANK(Func_3ad0e) - call Bankswitch ; evolve pokemon, if appropriate - ld a,$01 - ld [$cfcb],a - pop af - ld [$cf91],a - pop af - ld [wWhichPokemon],a - jp RemoveUsedItem - -VitaminStatRoseText: ; df24 (3:5f24) - TX_FAR _VitaminStatRoseText - db "@" - -VitaminNoEffectText: ; df29 (3:5f29) - TX_FAR _VitaminNoEffectText - db "@" - -VitaminText: ; df2e (3:5f2e) - db "HEALTH@" - db "ATTACK@" - db "DEFENSE@" - db "SPEED@" - db "SPECIAL@" - -ItemUseBait: ; df52 (3:5f52) - ld hl,ThrewBaitText - call PrintText - ld hl,$d007 ; catch rate - srl [hl] ; halve catch rate - ld a,BAIT_ANIM - ld hl,$cce9 ; bait factor - ld de,$cce8 ; escape factor - jr BaitRockCommon - -ItemUseRock: ; df67 (3:5f67) - ld hl,ThrewRockText - call PrintText - ld hl,$d007 ; catch rate - ld a,[hl] - add a ; double catch rate - jr nc,.noCarry - ld a,$ff -.noCarry - ld [hl],a - ld a,ROCK_ANIM - ld hl,$cce8 ; escape factor - ld de,$cce9 ; bait factor - -BaitRockCommon: ; df7f (3:5f7f) - ld [W_ANIMATIONID],a - xor a - ld [$cc5b],a - ld [H_WHOSETURN],a - ld [de],a ; zero escape factor (for bait), zero bait factor (for rock) -.randomLoop ; loop until a random number less than 5 is generated - call GenRandom - and a,7 - cp a,5 - jr nc,.randomLoop - inc a ; increment the random number, giving a range from 1 to 5 inclusive - ld b,a - ld a,[hl] - add b ; increase bait factor (for bait), increase escape factor (for rock) - jr nc,.noCarry - ld a,$ff -.noCarry - ld [hl],a - ld a,$08 - call Predef ; do animation - ld c,70 - jp DelayFrames - -ThrewBaitText: ; dfa5 (3:5fa5) - TX_FAR _ThrewBaitText - db "@" - -ThrewRockText: ; dfaa (3:5faa) - TX_FAR _ThrewRockText - db "@" - -; also used for Dig out-of-battle effect -ItemUseEscapeRope: ; dfaf (3:5faf) - ld a,[W_ISINBATTLE] - and a - jr nz,.notUsable - ld a,[W_CURMAP] - cp a,AGATHAS_ROOM - jr z,.notUsable - ld a,[W_CURMAPTILESET] - ld b,a - ld hl,EscapeRopeTilesets -.loop - ld a,[hli] - cp a,$ff - jr z,.notUsable - cp b - jr nz,.loop - ld hl,$d732 - set 3,[hl] - set 6,[hl] - ld hl,$d72e - res 4,[hl] - ld hl,$d790 - res 7,[hl] ; unset Safari Zone bit - xor a - ld [$da47],a - ld [W_SAFARIZONEENTRANCECURSCRIPT],a - inc a - ld [$d078],a - ld [$cd6a],a ; item used - ld a,[$d152] - and a ; using Dig? - ret nz ; if so, return - call ItemUseReloadOverworldData - ld c,30 - call DelayFrames - jp RemoveUsedItem -.notUsable - jp ItemUseNotTime - -EscapeRopeTilesets: ; dffd (3:5ffd) - db FOREST, CEMETERY, CAVERN, FACILITY, INTERIOR - db $ff ; terminator - -ItemUseRepel: ; e003 (3:6003) - ld b,100 - -ItemUseRepelCommon: ; e005 (3:6005) - ld a,[W_ISINBATTLE] - and a - jp nz,ItemUseNotTime - ld a,b - ld [$d0db],a - jp PrintItemUseTextAndRemoveItem - -; handles X Accuracy item -ItemUseXAccuracy: ; e013 (3:6013) - ld a,[W_ISINBATTLE] - and a - jp z,ItemUseNotTime - ld hl,W_PLAYERBATTSTATUS2 - set 0,[hl] ; X Accuracy bit - jp PrintItemUseTextAndRemoveItem - -; This function is bugged and never works. It always jumps to ItemUseNotTime. -; The Card Key is handled in a different way. -ItemUseCardKey: ; e022 (3:6022) - xor a - ld [$d71f],a - call Func_c586 - ld a,[Func_c586] ; $4586 - cp a,$18 - jr nz,.next0 - ld hl,CardKeyTable1 - jr .next1 -.next0 - cp a,$24 - jr nz,.next2 - ld hl,CardKeyTable2 - jr .next1 -.next2 - cp a,$5e - jp nz,ItemUseNotTime - ld hl,CardKeyTable3 -.next1 - ld a,[W_CURMAP] - ld b,a -.loop - ld a,[hli] - cp a,$ff - jp z,ItemUseNotTime - cp b - jr nz,.nextEntry1 - ld a,[hli] - cp d - jr nz,.nextEntry2 - ld a,[hli] - cp e - jr nz,.nextEntry3 - ld a,[hl] - ld [$d71f],a - jr .done -.nextEntry1 - inc hl -.nextEntry2 - inc hl -.nextEntry3 - inc hl - jr .loop -.done - ld hl,ItemUseText00 - call PrintText - ld hl,$d728 - set 7,[hl] - ret - -; These tables are probably supposed to be door locations in Silph Co., -; but they are unused. -; The reason there are 3 tables is unknown. - -; Format: -; 00: Map ID -; 01: Y -; 02: X -; 03: ID? - -CardKeyTable1: ; e072 (3:6072) - db SILPH_CO_2F,$04,$04,$00 - db SILPH_CO_2F,$04,$05,$01 - db SILPH_CO_4F,$0C,$04,$02 - db SILPH_CO_4F,$0C,$05,$03 - db SILPH_CO_7F,$06,$0A,$04 - db SILPH_CO_7F,$06,$0B,$05 - db SILPH_CO_9F,$04,$12,$06 - db SILPH_CO_9F,$04,$13,$07 - db SILPH_CO_10F,$08,$0A,$08 - db SILPH_CO_10F,$08,$0B,$09 - db $ff - -CardKeyTable2: ; e09b (3:609b) - db SILPH_CO_3F,$08,$09,$0A - db SILPH_CO_3F,$09,$09,$0B - db SILPH_CO_5F,$04,$07,$0C - db SILPH_CO_5F,$05,$07,$0D - db SILPH_CO_6F,$0C,$05,$0E - db SILPH_CO_6F,$0D,$05,$0F - db SILPH_CO_8F,$08,$07,$10 - db SILPH_CO_8F,$09,$07,$11 - db SILPH_CO_9F,$08,$03,$12 - db SILPH_CO_9F,$09,$03,$13 - db $ff - -CardKeyTable3: ; e0c4 (3:60c4) - db SILPH_CO_11F,$08,$09,$14 - db SILPH_CO_11F,$09,$09,$15 - db $ff - -ItemUsePokedoll: ; e0cd (3:60cd) - ld a,[W_ISINBATTLE] - dec a - jp nz,ItemUseNotTime - ld a,$01 - ld [$d078],a - jp PrintItemUseTextAndRemoveItem - -ItemUseGuardSpec: ; e0dc (3:60dc) - ld a,[W_ISINBATTLE] - and a - jp z,ItemUseNotTime - ld hl,W_PLAYERBATTSTATUS2 - set 1,[hl] ; Mist bit - jp PrintItemUseTextAndRemoveItem - -ItemUseSuperRepel: ; e0eb (3:60eb) - ld b,200 - jp ItemUseRepelCommon - -ItemUseMaxRepel: ; e0f0 (3:60f0) - ld b,250 - jp ItemUseRepelCommon - -ItemUseDireHit: ; e0f5 (3:60f5) - ld a,[W_ISINBATTLE] - and a - jp z,ItemUseNotTime - ld hl,W_PLAYERBATTSTATUS2 - set 2,[hl] ; Focus Energy bit - jp PrintItemUseTextAndRemoveItem - -ItemUseXStat: ; e104 (3:6104) - ld a,[W_ISINBATTLE] - and a - jr nz,.inBattle - call ItemUseNotTime - ld a,2 - ld [$cd6a],a ; item not used - ret -.inBattle - ld hl,W_PLAYERMOVENUM - ld a,[hli] - push af ; save [W_PLAYERMOVENUM] - ld a,[hl] - push af ; save [W_PLAYERMOVEEFFECT] - push hl - ld a,[$cf91] - sub a,X_ATTACK - ATTACK_UP1_EFFECT - ld [hl],a ; store player move effect - call PrintItemUseTextAndRemoveItem - ld a,XSTATITEM_ANIM ; X stat item animation ID - ld [W_PLAYERMOVENUM],a - call LoadScreenTilesFromBuffer1 ; restore saved screen - call Delay3 - xor a - ld [H_WHOSETURN],a ; set turn to player's turn - ld b, BANK(Func_3f428) - ld hl, Func_3f428 - call Bankswitch ; do stat increase move - pop hl - pop af - ld [hld],a ; restore [W_PLAYERMOVEEFFECT] - pop af - ld [hl],a ; restore [W_PLAYERMOVENUM] - ret - -ItemUsePokeflute: ; e140 (3:6140) - ld a,[W_ISINBATTLE] - and a - jr nz,.inBattle -; if not in battle - call ItemUseReloadOverworldData - ld a,[W_CURMAP] - cp a,ROUTE_12 - jr nz,.notRoute12 - ld a,[$d7d8] - bit 7,a ; has the player beaten Route 12 Snorlax yet? - jr nz,.noSnorlaxToWakeUp -; if the player hasn't beaten Route 12 Snorlax - ld hl,Route12SnorlaxFluteCoords - call ArePlayerCoordsInArray - jr nc,.noSnorlaxToWakeUp - ld hl,PlayedFluteHadEffectText - call PrintText - ld hl,$d7d8 - set 6,[hl] ; trigger Snorlax fight (handled by map script) - ret -.notRoute12 - cp a,ROUTE_16 - jr nz,.noSnorlaxToWakeUp - ld a,[$d7e0] - bit 1,a ; has the player beaten Route 16 Snorlax yet? - jr nz,.noSnorlaxToWakeUp -; if the player hasn't beaten Route 16 Snorlax - ld hl,Route16SnorlaxFluteCoords - call ArePlayerCoordsInArray - jr nc,.noSnorlaxToWakeUp - ld hl,PlayedFluteHadEffectText - call PrintText - ld hl,$d7e0 - set 0,[hl] ; trigger Snorlax fight (handled by map script) - ret -.noSnorlaxToWakeUp - ld hl,PlayedFluteNoEffectText - jp PrintText -.inBattle - xor a - ld [$cd3d],a ; initialize variable that indicates if any pokemon were woken up to zero - ld b,~SLP & $FF - ld hl,W_PARTYMON1_STATUS - call WakeUpEntireParty - ld a,[W_ISINBATTLE] - dec a ; is it a trainer battle? - jr z,.skipWakingUpEnemyParty -; if it's a trainer battle - ld hl,$d8a8 ; enemy party pokemon 1 status - call WakeUpEntireParty -.skipWakingUpEnemyParty - ld hl,W_PLAYERMONSTATUS - ld a,[hl] - and b ; remove Sleep status - ld [hl],a - ld hl,W_ENEMYMONSTATUS - ld a,[hl] - and b ; remove Sleep status - ld [hl],a - call LoadScreenTilesFromBuffer2 ; restore saved screen - ld a,[$cd3d] - and a ; were any pokemon asleep before playing the flute? - ld hl,PlayedFluteNoEffectText - jp z,PrintText ; if no pokemon were asleep -; if some pokemon were asleep - ld hl,PlayedFluteHadEffectText - call PrintText - ld a,[$d083] - and a,$80 - jr nz,.skipMusic - call WaitForSoundToFinish ; wait for sound to end - ld b, BANK(Music_PokeFluteInBattle) - ld hl, Music_PokeFluteInBattle - call Bankswitch ; play in-battle pokeflute music -.musicWaitLoop ; wait for music to finish playing - ld a,[$c02c] - and a ; music off? - jr nz,.musicWaitLoop -.skipMusic - ld hl,FluteWokeUpText - jp PrintText - -; wakes up all party pokemon -; INPUT: -; hl must point to status of first pokemon in party (player's or enemy's) -; b must equal ~SLP -; [$cd3d] should be initialized to 0 -; OUTPUT: -; [$cd3d]: set to 1 if any pokemon were asleep -WakeUpEntireParty: ; e1e5 (3:61e5) - ld de,44 - ld c,6 -.loop - ld a,[hl] - push af - and a,SLP ; is pokemon asleep? - jr z,.notAsleep - ld a,1 - ld [$cd3d],a ; indicate that a pokemon had to be woken up -.notAsleep - pop af - and b ; remove Sleep status - ld [hl],a - add hl,de - dec c - jr nz,.loop - ret - -; Format: -; 00: Y -; 01: X -Route12SnorlaxFluteCoords: ; e1fd (3:61fd) - db 62,9 ; one space West of Snorlax - db 61,10 ; one space North of Snorlax - db 63,10 ; one space South of Snorlax - db 62,11 ; one space East of Snorlax - db $ff ; terminator - -; Format: -; 00: Y -; 01: X -Route16SnorlaxFluteCoords: ; e206 (3:6206) - db 10,27 ; one space East of Snorlax - db 10,25 ; one space West of Snorlax - db $ff ; terminator - -PlayedFluteNoEffectText: ; e20b (3:620b) - TX_FAR _PlayedFluteNoEffectText - db "@" - -FluteWokeUpText: ; e210 (3:6210) - TX_FAR _FluteWokeUpText - db "@" - -PlayedFluteHadEffectText: ; e215 (3:6215) - TX_FAR _PlayedFluteHadEffectText - db $06 - db $08 - ld a,[W_ISINBATTLE] - and a - jr nz,.done -; play out-of-battle pokeflute music - ld a,$ff - call PlaySound ; turn off music - ld a, (SFX_02_5e - SFX_Headers_02) / 3 - ld c, BANK(SFX_02_5e) - call PlayMusic ; play music -.musicWaitLoop ; wait for music to finish playing - ld a,[$c028] - cp a,$b8 - jr z,.musicWaitLoop - call Func_2307 ; start playing normal music again -.done - jp TextScriptEnd ; end text - -ItemUseCoinCase: ; e23a (3:623a) - ld a,[W_ISINBATTLE] - and a - jp nz,ItemUseNotTime - ld hl,CoinCaseNumCoinsText - jp PrintText - -CoinCaseNumCoinsText: ; e247 (3:6247) - TX_FAR _CoinCaseNumCoinsText - db "@" - -OldRodCode: ; e24c (3:624c) - call FishingInit - jp c, ItemUseNotTime - ld bc, (5 << 8) | MAGIKARP - ld a, $1 ; set bite - jr RodResponse ; 0xe257 $34 - -GoodRodCode: ; e259 (3:6259) - call FishingInit - jp c,ItemUseNotTime -.RandomLoop - call GenRandom - srl a - jr c, .SetBite - and %11 - cp 2 - jr nc, .RandomLoop - ; choose which monster appears - ld hl,GoodRodMons - add a,a - ld c,a - ld b,0 - add hl,bc - ld b,[hl] - inc hl - ld c,[hl] - and a -.SetBite - ld a,0 - rla - xor 1 - jr RodResponse - -GoodRodMons: ; e27f (3:627f) - db 10,GOLDEEN - db 10,POLIWAG - -SuperRodCode: ; e283 (3:6283) - call FishingInit - jp c, ItemUseNotTime - call ReadSuperRodData ; 0xe8ea - ld a, e -RodResponse: ; e28d (3:628d) - ld [$CD3D], a - - dec a ; is there a bite? - jr nz, .next - ; if yes, store level and species data - ld a, 1 - ld [$D05F], a - ld a, b ; level - ld [W_CURENEMYLVL], a - ld a, c ; species - ld [W_CUROPPONENT], a - -.next - ld hl, $D700 - ld a, [hl] ; store the value in a - push af - push hl - ld [hl], 0 - ld b, BANK(Func_707b6) - ld hl, Func_707b6 - call Bankswitch - pop hl - pop af - ld [hl], a - ret - -; checks if fishing is possible and if so, runs initialization code common to all rods -; unsets carry if fishing is possible, sets carry if not -FishingInit: ; e2b4 (3:62b4) - ld a,[W_ISINBATTLE] - and a - jr z,.notInBattle - scf ; can't fish during battle - ret -.notInBattle - call IsNextTileShoreOrWater - ret c - ld a,[$d700] - cp a,2 ; Surfing? - jr z,.surfing - call ItemUseReloadOverworldData - ld hl,ItemUseText00 - call PrintText - ld a,(SFX_02_3e - SFX_Headers_02) / 3 - call PlaySound ; play sound - ld c,80 - call DelayFrames - and a - ret -.surfing - scf ; can't fish when surfing - ret - -ItemUseOaksParcel: ; e2de (3:62de) - jp ItemUseNotYoursToUse - -ItemUseItemfinder: ; e2e1 (3:62e1) - ld a,[W_ISINBATTLE] - and a - jp nz,ItemUseNotTime - call ItemUseReloadOverworldData - ld b,BANK(HiddenItemNear) - ld hl,HiddenItemNear - call Bankswitch ; check for hidden items - ld hl,ItemfinderFoundNothingText - jr nc,.printText ; if no hidden items - ld c,4 -.loop - ld a,(SFX_02_4a - SFX_Headers_02) / 3 - call PlaySoundWaitForCurrent ; play sound - ld a,(SFX_02_5a - SFX_Headers_02) / 3 - call PlaySoundWaitForCurrent ; play sound - dec c - jr nz,.loop - ld hl,ItemfinderFoundItemText -.printText - jp PrintText - -ItemfinderFoundItemText: ; e30d (3:630d) - TX_FAR _ItemfinderFoundItemText - db "@" - -ItemfinderFoundNothingText: ; e312 (3:6312) - TX_FAR _ItemfinderFoundNothingText - db "@" - -ItemUsePPUp: ; e317 (3:6317) - ld a,[W_ISINBATTLE] - and a - jp nz,ItemUseNotTime - -ItemUsePPRestore: ; e31e (3:631e) - ld a,[wWhichPokemon] - push af - ld a,[$cf91] - ld [$cd3d],a -.chooseMon - xor a - ld [$cfcb],a - ld a,$01 ; item use party menu - ld [$d07d],a - call DisplayPartyMenu - jr nc,.chooseMove - jp .itemNotUsed -.chooseMove - ld a,[$cd3d] - cp a,ELIXER - jp nc,.useElixir ; if Elixir or Max Elixir - ld a,$02 - ld [wMoveMenuType],a - ld hl,RaisePPWhichTechniqueText - ld a,[$cd3d] - cp a,ETHER ; is it a PP Up? - jr c,.printWhichTechniqueMessage ; if so, print the raise PP message - ld hl,RestorePPWhichTechniqueText ; otherwise, print the restore PP message -.printWhichTechniqueMessage - call PrintText - xor a - ld [$cc2e],a - ld hl, MoveSelectionMenu - ld b, BANK(MoveSelectionMenu) - call Bankswitch ; move selection menu - ld a,0 - ld [$cc2e],a - jr nz,.chooseMon - ld hl,W_PARTYMON1_MOVE1 - ld bc,44 - call GetSelectedMoveOffset - push hl - ld a,[hl] - ld [$d11e],a - call GetMoveName - call CopyStringToCF4B ; copy name to $cf4b - pop hl - ld a,[$cd3d] - cp a,ETHER - jr nc,.useEther ; if Ether or Max Ether -.usePPUp - ld bc,21 - add hl,bc - ld a,[hl] ; move PP - cp a,3 << 6 ; have 3 PP Ups already been used? - jr c,.PPNotMaxedOut - ld hl,PPMaxedOutText - call PrintText - jr .chooseMove -.PPNotMaxedOut - ld a,[hl] - add a,1 << 6 ; increase PP Up count by 1 - ld [hl],a - ld a,1 ; 1 PP Up used - ld [$d11e],a - call RestoreBonusPP ; add the bonus PP to current PP - ld hl,PPIncreasedText - call PrintText -.done - pop af - ld [wWhichPokemon],a - call GBPalWhiteOut - call GoPAL_SET_CF1C - jp RemoveUsedItem -.afterRestoringPP ; after using a (Max) Ether/Elixir - ld a,[wWhichPokemon] - ld b,a - ld a,[wPlayerMonNumber] - cp b ; is the pokemon whose PP was restored active in battle? - jr nz,.skipUpdatingInBattleData - ld hl,W_PARTYMON1_MOVE1PP - ld bc,44 - call AddNTimes - ld de,W_PLAYERMONPP - ld bc,4 - call CopyData ; copy party data to in-battle data -.skipUpdatingInBattleData - ld a,(SFX_02_3e - SFX_Headers_02) / 3 - call PlaySound - ld hl,PPRestoredText - call PrintText - jr .done -.useEther - call .restorePP - jr nz,.afterRestoringPP - jp .noEffect -; unsets zero flag if PP was restored, sets zero flag if not -; however, this is bugged for Max Ethers and Max Elixirs (see below) -.restorePP - xor a - ld [$cc49],a ; party pokemon - call GetMaxPP - ld hl,W_PARTYMON1_MOVE1 - ld bc,44 - call GetSelectedMoveOffset - ld bc,21 - add hl,bc ; hl now points to move's PP - ld a,[$d11e] - ld b,a ; b = max PP - ld a,[$cd3d] - cp a,MAX_ETHER - jr z,.fullyRestorePP - ld a,[hl] ; move PP - and a,%00111111 ; lower 6 bit bits store current PP - cp b ; does current PP equal max PP? - ret z ; if so, return - add a,10 ; increase current PP by 10 -; b holds the max PP amount and b will hold the new PP amount. -; So, if the new amount meets or exceeds the max amount, -; cap the amount to the max amount by leaving b unchanged. -; Otherwise, store the new amount in b. - cp b ; does the new amount meet or exceed the maximum? - jr nc,.storeNewAmount - ld b,a -.storeNewAmount - ld a,[hl] ; move PP - and a,%11000000 ; PP Up counter bits - add b - ld [hl],a - ret -.fullyRestorePP - ld a,[hl] ; move PP -; Note that this code has a bug. It doesn't mask out the upper two bits, which -; are used to count how many PP Ups have been used on the move. So, Max Ethers -; and Max Elixirs will not be detected as having no effect on a move with full -; PP if the move has had any PP Ups used on it. - cp b ; does current PP equal max PP? - ret z - jr .storeNewAmount -.useElixir -; decrement the item ID so that ELIXER becomes ETHER and MAX_ELIXER becomes MAX_ETHER - ld hl,$cd3d - dec [hl] - dec [hl] - xor a - ld hl,wCurrentMenuItem - ld [hli],a - ld [hl],a ; zero the counter for number of moves that had their PP restored - ld b,4 -; loop through each move and restore PP -.elixirLoop - push bc - ld hl,W_PARTYMON1_MOVE1 - ld bc,44 - call GetSelectedMoveOffset - ld a,[hl] - and a ; does the current slot have a move? - jr z,.nextMove - call .restorePP - jr z,.nextMove -; if some PP was restored - ld hl,$cc27 ; counter for number of moves that had their PP restored - inc [hl] -.nextMove - ld hl,wCurrentMenuItem - inc [hl] - pop bc - dec b - jr nz,.elixirLoop - ld a,[$cc27] - and a ; did any moves have their PP restored? - jp nz,.afterRestoringPP -.noEffect - call ItemUseNoEffect -.itemNotUsed - call GBPalWhiteOut - call GoPAL_SET_CF1C - pop af - xor a - ld [$cd6a],a ; item use failed - ret - -RaisePPWhichTechniqueText: ; e45d (3:645d) - TX_FAR _RaisePPWhichTechniqueText - db "@" - -RestorePPWhichTechniqueText: ; e462 (3:6462) - TX_FAR _RestorePPWhichTechniqueText - db "@" - -PPMaxedOutText: ; e467 (3:6467) - TX_FAR _PPMaxedOutText - db "@" - -PPIncreasedText: ; e46c (3:646c) - TX_FAR _PPIncreasedText - db "@" - -PPRestoredText: ; e471 (3:6471) - TX_FAR _PPRestoredText - db "@" - -; for items that can't be used from the Item menu -UnusableItem: ; e476 (3:6476) - jp ItemUseNotTime - -ItemUseTMHM: ; e479 (3:6479) - ld a,[W_ISINBATTLE] - and a - jp nz,ItemUseNotTime - ld a,[$cf91] - sub a,TM_01 - push af - jr nc,.skipAdding - add a,55 ; if item is an HM, add 55 -.skipAdding - inc a - ld [$d11e],a - ld a,$44 - call Predef ; get move ID from TM/HM ID - ld a,[$d11e] - ld [$d0e0],a - call GetMoveName - call CopyStringToCF4B ; copy name to $cf4b - pop af - ld hl,BootedUpTMText - jr nc,.printBootedUpMachineText - ld hl,BootedUpHMText -.printBootedUpMachineText - call PrintText - ld hl,TeachMachineMoveText - call PrintText - FuncCoord 14,7 - ld hl,Coord - ld bc,$080f - ld a,$14 - ld [$d125],a - call DisplayTextBoxID ; yes/no menu - ld a,[wCurrentMenuItem] - and a - jr z,.useMachine - ld a,2 - ld [$cd6a],a ; item not used - ret -.useMachine - ld a,[wWhichPokemon] - push af - ld a,[$cf91] - push af -.chooseMon - ld hl,$cf4b - ld de,$d036 - ld bc,14 - call CopyData - ld a,$ff - ld [$cfcb],a - ld a,$03 ; teach TM/HM party menu - ld [$d07d],a - call DisplayPartyMenu - push af - ld hl,$d036 - ld de,$cf4b - ld bc,14 - call CopyData - pop af - jr nc,.checkIfAbleToLearnMove -; if the player canceled teaching the move - pop af - pop af - call GBPalWhiteOutWithDelay3 - call CleanLCD_OAM - call GoPAL_SET_CF1C - jp LoadScreenTilesFromBuffer1 ; restore saved screen -.checkIfAbleToLearnMove - ld a,$43 - call Predef ; check if the pokemon can learn the move - push bc - ld a,[wWhichPokemon] - ld hl,W_PARTYMON1NAME - call GetPartyMonName - pop bc - ld a,c - and a ; can the pokemon learn the move? - jr nz,.checkIfAlreadyLearnedMove -; if the pokemon can't learn the move - ld a,(SFX_02_51 - SFX_Headers_02) / 3 - call PlaySoundWaitForCurrent ; play sound - ld hl,MonCannotLearnMachineMoveText - call PrintText - jr .chooseMon -.checkIfAlreadyLearnedMove - ld hl, CheckIfMoveIsKnown - ld b, BANK(CheckIfMoveIsKnown) - call Bankswitch ; check if the pokemon already knows the move - jr c,.chooseMon - ld a,$1b - call Predef ; teach move - pop af - ld [$cf91],a - pop af - ld [wWhichPokemon],a - ld a,b - and a - ret z - ld a,[$cf91] - call IsItemHM - ret c - jp RemoveUsedItem - -BootedUpTMText: ; e54f (3:654f) - TX_FAR _BootedUpTMText - db "@" - -BootedUpHMText: ; e554 (3:6554) - TX_FAR _BootedUpHMText - db "@" - -TeachMachineMoveText: ; e559 (3:6559) - TX_FAR _TeachMachineMoveText - db "@" - -MonCannotLearnMachineMoveText: ; e55e (3:655e) - TX_FAR _MonCannotLearnMachineMoveText - db "@" - -PrintItemUseTextAndRemoveItem: ; e563 (3:6563) - ld hl,ItemUseText00 - call PrintText - ld a,(SFX_02_3e - SFX_Headers_02) / 3 - call PlaySound ; play sound - call WaitForTextScrollButtonPress ; wait for button press - -RemoveUsedItem: ; e571 (3:6571) - ld hl,wNumBagItems - ld a,1 ; one item - ld [$cf96],a ; store quantity - jp RemoveItemFromInventory - -ItemUseNoEffect: ; e57c (3:657c) - ld hl,ItemUseNoEffectText - jr ItemUseFailed - -ItemUseNotTime: ; e581 (3:6581) - ld hl,ItemUseNotTimeText - jr ItemUseFailed - -ItemUseNotYoursToUse: ; e586 (3:6586) - ld hl,ItemUseNotYoursToUseText - jr ItemUseFailed - -ThrowBallAtTrainerMon: ; e58b (3:658b) - call GoPAL_SET_CF1C - call LoadScreenTilesFromBuffer1 ; restore saved screen - call Delay3 - ld a,TOSS_ANIM - ld [W_ANIMATIONID],a - ld a,$08 - call Predef ; do animation - ld hl,ThrowBallAtTrainerMonText1 - call PrintText - ld hl,ThrowBallAtTrainerMonText2 - call PrintText - jr RemoveUsedItem - -NoCyclingAllowedHere: ; e5ac (3:65ac) - ld hl,NoCyclingAllowedHereText - jr ItemUseFailed - -BoxFullCannotThrowBall: ; e5b1 (3:65b1) - ld hl,BoxFullCannotThrowBallText - jr ItemUseFailed - -SurfingAttemptFailed: ; e5b6 (3:65b6) - ld hl,NoSurfingHereText - -ItemUseFailed: ; e5b9 (3:65b9) - xor a - ld [$cd6a],a ; item use failed - jp PrintText - -ItemUseNotTimeText: ; e5c0 (3:65c0) - TX_FAR _ItemUseNotTimeText - db "@" - -ItemUseNotYoursToUseText: ; e5c5 (3:65c5) - TX_FAR _ItemUseNotYoursToUseText - db "@" - -ItemUseNoEffectText: ; e5ca (3:65ca) - TX_FAR _ItemUseNoEffectText - db "@" - -ThrowBallAtTrainerMonText1: ; e5cf (3:65cf) - TX_FAR _ThrowBallAtTrainerMonText1 - db "@" - -ThrowBallAtTrainerMonText2: ; e5d4 (3:65d4) - TX_FAR _ThrowBallAtTrainerMonText2 - db "@" - -NoCyclingAllowedHereText: ; e5d9 (3:65d9) - TX_FAR _NoCyclingAllowedHereText - db "@" - -NoSurfingHereText: ; e5de (3:65de) - TX_FAR _NoSurfingHereText - db "@" - -BoxFullCannotThrowBallText: ; e5e3 (3:65e3) - TX_FAR _BoxFullCannotThrowBallText - db "@" - -ItemUseText00: ; e5e8 (3:65e8) - TX_FAR _ItemUseText001 - db $05 - TX_FAR _ItemUseText002 - db "@" - -GotOnBicycleText: ; e5f2 (3:65f2) - TX_FAR _GotOnBicycleText1 - db $05 - TX_FAR _GotOnBicycleText2 - db "@" - -GotOffBicycleText: ; e5fc (3:65fc) - TX_FAR _GotOffBicycleText1 - db $05 - TX_FAR _GotOffBicycleText2 - db "@" - -; restores bonus PP (from PP Ups) when healing at a pokemon center -; also, when a PP Up is used, it increases the current PP by one PP Up bonus -; INPUT: -; [wWhichPokemon] = index of pokemon in party -; [$d11e] = mode -; 0: Pokemon Center healing -; 1: using a PP Up -; [wCurrentMenuItem] = index of move (when using a PP Up) -RestoreBonusPP: ; e606 (3:6606) - ld hl,W_PARTYMON1_MOVE1 - ld bc,44 - ld a,[wWhichPokemon] - call AddNTimes - push hl - ld de,$cd78 - 1 - ld a,$5e - call Predef ; loads the normal max PP of each of the pokemon's moves to $cd78 - pop hl - ld c,21 - ld b,0 - add hl,bc ; hl now points to move 1 PP - ld de,$cd78 - ld b,0 ; initialize move counter to zero -; loop through the pokemon's moves -.loop - inc b - ld a,b - cp a,5 ; reached the end of the pokemon's moves? - ret z ; if so, return - ld a,[$d11e] - dec a ; using a PP Up? - jr nz,.skipMenuItemIDCheck -; if using a PP Up, check if this is the move it's being used on - ld a,[wCurrentMenuItem] - inc a - cp b - jr nz,.nextMove -.skipMenuItemIDCheck - ld a,[hl] - and a,%11000000 ; have any PP Ups been used? - call nz,AddBonusPP ; if so, add bonus PP -.nextMove - inc hl - inc de - jr .loop - -; adds bonus PP from PP Ups to current PP -; 1/5 of normal max PP (capped at 7) is added for each PP Up -; INPUT: -; [de] = normal max PP -; [hl] = move PP -; [$d11e] = max number of times to add bonus -; set to 1 when using a PP Up, set to 255 otherwise -AddBonusPP: ; e642 (3:6642) - push bc - ld a,[de] ; normal max PP of move - ld [H_DIVIDEND + 3],a - xor a - ld [H_DIVIDEND],a - ld [H_DIVIDEND + 1],a - ld [H_DIVIDEND + 2],a - ld a,5 - ld [H_DIVISOR],a - ld b,4 - call Divide - ld a,[hl] ; move PP - ld b,a - swap a - and a,%00001111 - srl a - srl a - ld c,a ; c = number of PP Ups used -.loop - ld a,[H_QUOTIENT + 3] - cp a,8 ; is the amount greater than or equal to 8? - jr c,.addAmount - ld a,7 ; cap the amount at 7 -.addAmount - add b - ld b,a - ld a,[$d11e] - dec a - jr z,.done - dec c - jr nz,.loop -.done - ld [hl],b - pop bc - ret - -; gets max PP of a pokemon's move (including PP from PP Ups) -; INPUT: -; [wWhichPokemon] = index of pokemon within party/box -; [$cc49] = pokemon source -; 00: player's party -; 01: enemy's party -; 02: current box -; 03: daycare -; 04: player's in-battle pokemon -; [wCurrentMenuItem] = move index -; OUTPUT: -; [$d11e] = max PP -GetMaxPP: ; e677 (3:6677) - ld a,[$cc49] - and a - ld hl,W_PARTYMON1_MOVE1 - ld bc,44 - jr z,.sourceWithMultipleMon - ld hl,$d8ac ; enemy party - dec a - jr z,.sourceWithMultipleMon - ld hl,$da9e ; current box - ld bc,33 - dec a - jr z,.sourceWithMultipleMon - ld hl,$da67 ; daycare - dec a - jr z,.sourceWithOneMon - ld hl,W_PLAYERMONMOVES ; player's in-battle pokemon -.sourceWithOneMon - call GetSelectedMoveOffset2 - jr .next -.sourceWithMultipleMon - call GetSelectedMoveOffset -.next - ld a,[hl] - dec a - push hl - ld hl,Moves - ld bc,6 - call AddNTimes - ld de,$cd6d - ld a,BANK(Moves) - call FarCopyData - ld de,$cd72 - ld a,[de] - ld b,a ; b = normal max PP - pop hl - push bc - ld bc,21 ; PP offset if not player's in-battle pokemon data - ld a,[$cc49] - cp a,4 ; player's in-battle pokemon? - jr nz,.addPPOffset - ld bc,17 ; PP offset if player's in-battle pokemon data -.addPPOffset - add hl,bc - ld a,[hl] ; a = current PP - and a,%11000000 ; get PP Up count - pop bc - or b ; place normal max PP in 6 lower bits of a - ld h,d - ld l,e - inc hl ; hl = $cd73 - ld [hl],a - xor a - ld [$d11e],a ; no limit on PP Up amount - call AddBonusPP ; add bonus PP from PP Ups - ld a,[hl] - and a,%00111111 ; mask out the PP Up count - ld [$d11e],a ; store max PP - ret - -GetSelectedMoveOffset: ; e6e3 (3:66e3) - ld a,[wWhichPokemon] - call AddNTimes - -GetSelectedMoveOffset2: ; e6e9 (3:66e9) - ld a,[wCurrentMenuItem] - ld c,a - ld b,0 - add hl,bc - ret - -; confirms the item toss and then tosses the item -; INPUT: -; hl = address of inventory (either wNumBagItems or wNumBoxItems) -; [$cf91] = item ID -; [wWhichPokemon] = index of item within inventory -; [$cf96] = quantity to toss -; OUTPUT: -; clears carry flag if the item is tossed, sets carry flag if not -TossItem_: ; e6f1 (3:66f1) - push hl - ld a,[$cf91] - call IsItemHM - pop hl - jr c,.tooImportantToToss - push hl - call IsKeyItem_ - ld a,[$d124] - pop hl - and a - jr nz,.tooImportantToToss - push hl - ld a,[$cf91] - ld [$d11e],a - call GetItemName - call CopyStringToCF4B ; copy name to $cf4b - ld hl,IsItOKToTossItemText - call PrintText - FuncCoord 14,7 - ld hl,Coord - ld bc,$080f - ld a,$14 - ld [$d125],a - call DisplayTextBoxID ; yes/no menu - ld a,[$d12e] - cp a,2 - pop hl - scf - ret z -; if the player chose Yes - push hl - ld a,[wWhichPokemon] - call RemoveItemFromInventory - ld a,[$cf91] - ld [$d11e],a - call GetItemName - call CopyStringToCF4B ; copy name to $cf4b - ld hl,ThrewAwayItemText - call PrintText - pop hl - and a - ret -.tooImportantToToss - push hl - ld hl,TooImportantToTossText - call PrintText - pop hl - scf - ret - -ThrewAwayItemText: ; e755 (3:6755) - TX_FAR _ThrewAwayItemText - db "@" - -IsItOKToTossItemText: ; e75a (3:675a) - TX_FAR _IsItOKToTossItemText - db "@" - -TooImportantToTossText: ; e75f (3:675f) - TX_FAR _TooImportantToTossText - db "@" - -; checks if an item is a key item -; INPUT: -; [$cf91] = item ID -; OUTPUT: -; [$d124] = result -; 00: item is not key item -; 01: item is key item -IsKeyItem_: ; e764 (3:6764) - ld a,$01 - ld [$d124],a - ld a,[$cf91] - cp a,HM_01 ; is the item an HM or TM? - jr nc,.checkIfItemIsHM -; if the item is not an HM or TM - push af - ld hl,KeyItemBitfield - ld de,$cee9 - ld bc,15 ; only 11 bytes are actually used - call CopyData - pop af - dec a - ld c,a - ld hl,$cee9 - ld b,$02 ; test bit - ld a,$10 - call Predef ; bitfield operation function - ld a,c - and a - ret nz -.checkIfItemIsHM - ld a,[$cf91] - call IsItemHM - ret c - xor a - ld [$d124],a - ret - -KeyItemBitfield: ; e799 (3:6799) - db %11110000 - db %00000001 - db %11110000 - db %01001111 - db %00000000 - db %10011111 - db %00000000 - db %11000000 - db %11110000 - db %00111011 - db %00000000 - -Func_e7a4: ; e7a4 (3:67a4) - ld de, W_NUMINBOX ; $da80 - ld a, [de] - inc a - ld [de], a - ld a, [$cf91] - ld [$d0b5], a - ld c, a -.asm_e7b1 - inc de - ld a, [de] - ld b, a - ld a, c - ld c, b - ld [de], a - cp $ff - jr nz, .asm_e7b1 - call GetMonHeader - ld hl, W_BOXMON1OT - ld bc, $b - ld a, [W_NUMINBOX] ; $da80 - dec a - jr z, .asm_e7ee - dec a - call AddNTimes - push hl - ld bc, $b - add hl, bc - ld d, h - ld e, l - pop hl - ld a, [W_NUMINBOX] ; $da80 - dec a - ld b, a -.asm_e7db - push bc - push hl - ld bc, $b - call CopyData - pop hl - ld d, h - ld e, l - ld bc, $fff5 - add hl, bc - pop bc - dec b - jr nz, .asm_e7db -.asm_e7ee - ld hl, W_PLAYERNAME ; $d158 - ld de, W_BOXMON1OT - ld bc, $b - call CopyData - ld a, [W_NUMINBOX] ; $da80 - dec a - jr z, .asm_e82a - ld hl, W_BOXMON1NAME - ld bc, $b - dec a - call AddNTimes - push hl - ld bc, $b - add hl, bc - ld d, h - ld e, l - pop hl - ld a, [W_NUMINBOX] ; $da80 - dec a - ld b, a -.asm_e817 - push bc - push hl - ld bc, $b - call CopyData - pop hl - ld d, h - ld e, l - ld bc, $fff5 - add hl, bc - pop bc - dec b - jr nz, .asm_e817 -.asm_e82a - ld hl, W_BOXMON1NAME - ld a, $2 - ld [$d07d], a - ld a, $4e - call Predef ; indirect jump to Func_64eb (64eb (1:64eb)) - ld a, [W_NUMINBOX] ; $da80 - dec a - jr z, .asm_e867 - ld hl, W_BOXMON1DATA - ld bc, $21 - dec a - call AddNTimes - push hl - ld bc, $21 - add hl, bc - ld d, h - ld e, l - pop hl - ld a, [W_NUMINBOX] ; $da80 - dec a - ld b, a -.asm_e854 - push bc - push hl - ld bc, $21 - call CopyData - pop hl - ld d, h - ld e, l - ld bc, $ffdf - add hl, bc - pop bc - dec b - jr nz, .asm_e854 -.asm_e867 - ld a, [W_ENEMYMONLEVEL] ; $cff3 - ld [W_ENEMYMONNUMBER], a ; $cfe8 - ld hl, $cfe5 - ld de, W_BOXMON1DATA - ld bc, $c - call CopyData - ld hl, wPlayerID ; $d359 - ld a, [hli] - ld [de], a - inc de - ld a, [hl] - ld [de], a - inc de - push de - ld a, [W_CURENEMYLVL] ; $d127 - ld d, a - ld hl, CalcExperience - ld b, BANK(CalcExperience) - call Bankswitch - pop de - ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND) - ld [de], a - inc de - ld a, [$ff97] - ld [de], a - inc de - ld a, [$ff98] - ld [de], a - inc de - xor a - ld b, $a -.asm_e89f - ld [de], a - inc de - dec b - jr nz, .asm_e89f - ld hl, $cff1 - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - ld hl, W_ENEMYMONPP ; $cffe - ld b, $4 -.asm_e8b1 - ld a, [hli] - inc de - ld [de], a - dec b - jr nz, .asm_e8b1 - ret - -; checks if the tile in front of the player is a shore or water tile -; used for surfing and fishing -; unsets carry if it is, sets carry if not -IsNextTileShoreOrWater: ; e8b8 (3:68b8) - ld a, [W_CURMAPTILESET] - ld hl, WaterTilesets - ld de,1 - call IsInArray - jr nc, .notShoreOrWater - ld a, [W_CURMAPTILESET] - cp SHIP_PORT ; Vermilion Dock tileset - ld a, [$cfc6] ; tile in front of player - jr z, .skipShoreTiles ; if it's the Vermilion Dock tileset - cp $48 ; eastern shore tile in Safari Zone - jr z, .shoreOrWater - cp $32 ; usual eastern shore tile - jr z, .shoreOrWater -.skipShoreTiles - cp $14 ; water tile - jr z, .shoreOrWater -.notShoreOrWater - scf - ret -.shoreOrWater - and a - ret - -; tilesets with water -WaterTilesets: ; e8e0 (3:68e0) - db OVERWORLD, FOREST, DOJO, GYM, SHIP, SHIP_PORT, CAVERN, FACILITY, PLATEAU - db $ff ; terminator - -ReadSuperRodData: ; e8ea (3:68ea) -; return e = 2 if no fish on this map -; return e = 1 if a bite, bc = level,species -; return e = 0 if no bite - ld a, [W_CURMAP] - ld de, 3 ; each fishing group is three bytes wide - ld hl, SuperRodData - call IsInArray - jr c, .ReadFishingGroup - ld e, $2 ; $2 if no fishing groups found - ret - -.ReadFishingGroup ; 0xe8f6 -; hl points to the fishing group entry in the index - inc hl ; skip map id - - ; read fishing group address - ld a, [hli] - ld h, [hl] - ld l, a - - ld b, [hl] ; how many mons in group - inc hl ; point to data - ld e, $0 ; no bite yet - -.RandomLoop ; 0xe90c - call GenRandom - srl a - ret c ; 50% chance of no battle - - and %11 ; 2-bit random number - cp b - jr nc, .RandomLoop ; if a is greater than the number of mons, regenerate - - ; get the mon - add a - ld c, a - ld b, $0 - add hl, bc - ld b, [hl] ; level - inc hl - ld c, [hl] ; species - ld e, $1 ; $1 if there's a bite - ret - -; super rod data -; format: map, pointer to fishing group -SuperRodData: ; e919 (3:6919) - dbw PALLET_TOWN, FishingGroup1 - dbw VIRIDIAN_CITY, FishingGroup1 - dbw CERULEAN_CITY, FishingGroup3 - dbw VERMILION_CITY, FishingGroup4 - dbw CELADON_CITY, FishingGroup5 - dbw FUCHSIA_CITY, FishingGroup10 - dbw CINNABAR_ISLAND, FishingGroup8 - dbw ROUTE_4, FishingGroup3 - dbw ROUTE_6, FishingGroup4 - dbw ROUTE_10, FishingGroup5 - dbw ROUTE_11, FishingGroup4 - dbw ROUTE_12, FishingGroup7 - dbw ROUTE_13, FishingGroup7 - dbw ROUTE_17, FishingGroup7 - dbw ROUTE_18, FishingGroup7 - dbw ROUTE_19, FishingGroup8 - dbw ROUTE_20, FishingGroup8 - dbw ROUTE_21, FishingGroup8 - dbw ROUTE_22, FishingGroup2 - dbw ROUTE_23, FishingGroup9 - dbw ROUTE_24, FishingGroup3 - dbw ROUTE_25, FishingGroup3 - dbw CERULEAN_GYM, FishingGroup3 - dbw VERMILION_DOCK, FishingGroup4 -;XXX syntax errors on the rest? - dbw $A1, FishingGroup8 ; SEAFOAM_ISLANDS_4 - dbw $A2, FishingGroup8 ; SEAFOAM_ISLANDS_5 - dbw SAFARI_ZONE_EAST, FishingGroup6 - dbw $DA, FishingGroup6 ; SAFARI_ZONE_NORTH - dbw SAFARI_ZONE_WEST, FishingGroup6 - dbw $DC, FishingGroup6 ; SAFARI_ZONE_CENTER - dbw $E2, FishingGroup9 ; UNKNOWN_DUNGEON_2 - dbw $E3, FishingGroup9 ; UNKNOWN_DUNGEON_3 - dbw $E4, FishingGroup9 ; UNKNOWN_DUNGEON_1 - db $FF - -; fishing groups -; number of monsters, followed by level/monster pairs -FishingGroup1: ; e97d (3:697d) - db 2 - db 15,TENTACOOL - db 15,POLIWAG - -FishingGroup2: ; e982 (3:6982) - db 2 - db 15,GOLDEEN - db 15,POLIWAG - -FishingGroup3: ; e987 (3:6987) - db 3 - db 15,PSYDUCK - db 15,GOLDEEN - db 15,KRABBY - -FishingGroup4: ; e98e (3:698e) - db 2 - db 15,KRABBY - db 15,SHELLDER - -FishingGroup5: ; e993 (3:6993) - db 2 - db 23,POLIWHIRL - db 15,SLOWPOKE - -FishingGroup6: ; e998 (3:6998) - db 4 - db 15,DRATINI - db 15,KRABBY - db 15,PSYDUCK - db 15,SLOWPOKE - -FishingGroup7: ; e9a1 (3:69a1) - db 4 - db 5,TENTACOOL - db 15,KRABBY - db 15,GOLDEEN - db 15,MAGIKARP - -FishingGroup8: ; e9aa (3:69aa) - db 4 - db 15,STARYU - db 15,HORSEA - db 15,SHELLDER - db 15,GOLDEEN - -FishingGroup9: ; e9b3 (3:69b3) - db 4 - db 23,SLOWBRO - db 23,SEAKING - db 23,KINGLER - db 23,SEADRA - -FishingGroup10: ; e9bc (3:69bc) - db 4 - db 23,SEAKING - db 15,KRABBY - db 15,GOLDEEN - db 15,MAGIKARP - -; reloads map view and processes sprite data -; for items that cause the overworld to be displayed -ItemUseReloadOverworldData: ; e9c5 (3:69c5) - call LoadCurrentMapView - jp UpdateSprites - -Func_e9cb: ; e9cb (3:69cb) - ld hl, WildDataPointers ; $4eeb - ld de, $cee9 - ld c, $0 -.asm_e9d3 - inc hl - ld a, [hld] - inc a - jr z, .asm_e9ec - push hl - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [hli] - and a - call nz, Func_e9f0 - ld a, [hli] - and a - call nz, Func_e9f0 - pop hl - inc hl - inc hl - inc c - jr .asm_e9d3 -.asm_e9ec - ld a, $ff - ld [de], a - ret - -Func_e9f0: ; e9f0 (3:69f0) - inc hl - ld b, $a -.asm_e9f3 - ld a, [$d11e] - cp [hl] - jr nz, .asm_e9fc - ld a, c - ld [de], a - inc de -.asm_e9fc - inc hl - inc hl - dec b - jr nz, .asm_e9f3 - dec hl - ret - -DrawBadges: ; ea03 (3:6a03) -; Draw 4x2 gym leader faces, with the faces replaced by -; badges if they are owned. Used in the player status screen. - -; In Japanese versions, names are displayed above faces. -; Instead of removing relevant code, the name graphics were erased. - -; Tile ids for face/badge graphics. - ld de, $cd3f - ld hl, .FaceBadgeTiles - ld bc, 8 - call CopyData - -; Booleans for each badge. - ld hl, $cd49 - ld bc, 8 - xor a - call FillMemory - -; Alter these based on owned badges. - ld de, $cd49 - ld hl, $cd3f - ld a, [W_OBTAINEDBADGES] - ld b, a - ld c, 8 -.CheckBadge - srl b - jr nc, .NextBadge - ld a, [hl] - add 4 ; Badge graphics are after each face - ld [hl], a - ld a, 1 - ld [de], a -.NextBadge - inc hl - inc de - dec c - jr nz, .CheckBadge - -; Draw two rows of badges. - ld hl, $cd3d - ld a, $d8 ; [1] - ld [hli], a - ld [hl], $60 ; First name - - FuncCoord 2, 11 - ld hl, Coord - ld de, $cd49 - call .DrawBadgeRow - - FuncCoord 2, 14 - ld hl, Coord - ld de, $cd49 + 4 -; call .DrawBadgeRow -; ret - -.DrawBadgeRow ; ea4c (3:6a4c) -; Draw 4 badges. - - ld c, 4 -.DrawBadge - push de - push hl - -; Badge no. - ld a, [$cd3d] - ld [hli], a - inc a - ld [$cd3d], a - -; Names aren't printed if the badge is owned. - ld a, [de] - and a - ld a, [$cd3e] - jr nz, .SkipName - call .PlaceTiles - jr .PlaceBadge - -.SkipName - inc a - inc a - inc hl - -.PlaceBadge - ld [$cd3e], a - ld de, 20 - 1 - add hl, de - ld a, [$cd3f] - call .PlaceTiles - add hl, de - call .PlaceTiles - -; Shift badge array back one byte. - push bc - ld hl, $cd3f + 1 - ld de, $cd3f - ld bc, 8 - call CopyData - pop bc - - pop hl - ld de, 4 - add hl, de - - pop de - inc de - dec c - jr nz, .DrawBadge - ret - -.PlaceTiles - ld [hli], a - inc a - ld [hl], a - inc a - ret - -.FaceBadgeTiles - db $20, $28, $30, $38, $40, $48, $50, $58 - -GymLeaderFaceAndBadgeTileGraphics: ; ea9e (3:6a9e) - INCBIN "gfx/badges.w16.2bpp" - -Func_ee9e: ; ee9e (3:6e9e) - call Load16BitRegisters - ld hl, $c6e8 - ld a, [W_CURMAPWIDTH] ; $d369 - add $6 - ld e, a - ld d, $0 - add hl, de - add hl, de - add hl, de - ld e, $3 - add hl, de - ld e, a - ld a, b - and a - jr z, .asm_eebb -.asm_eeb7 - add hl, de - dec b - jr nz, .asm_eeb7 -.asm_eebb - add hl, bc - ld a, [$d09f] - ld [hl], a - ld a, [$d35f] - ld c, a - ld a, [$d360] - ld b, a - call Func_ef4e - ret c - push hl - ld l, e - ld h, $0 - ld e, $6 - ld d, h - add hl, hl - add hl, hl - add hl, de - add hl, bc - pop bc - call Func_ef4e - ret c - -Func_eedc: ; eedc (3:6edc) - ld a, [W_ISINBATTLE] ; $d057 - inc a - ret z - ld a, [H_AUTOBGTRANSFERENABLED] ; $ffba - push af - ld a, [$ffd7] - push af - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ld [$ffd7], a - call LoadCurrentMapView - call GoPAL_SET_CF1C - ld hl, $d526 - ld a, [hli] - ld h, [hl] - ld l, a - ld de, $ffc0 - add hl, de - ld a, h - and $3 - or $98 - ld a, l - ld [$cee9], a - ld a, h - ld [$ceea], a - ld a, $2 - ld [$ffbe], a - ld c, $9 -.asm_ef0f - push bc - push hl - push hl - ld hl, $c378 - ld de, $14 - ld a, [$ffbe] -.asm_ef1a - add hl, de - dec a - jr nz, .asm_ef1a - call ScheduleRowRedrawHelper - pop hl - ld de, $20 - ld a, [$ffbe] - ld c, a -.asm_ef28 - add hl, de - ld a, h - and $3 - or $98 - dec c - jr nz, .asm_ef28 - ld [$ffd2], a - ld a, l - ld [H_SCREENEDGEREDRAWADDR], a ; $ffd1 - ld a, $2 - ld [H_SCREENEDGEREDRAW], a ; $ffd0 - call DelayFrame - ld hl, $ffbe - inc [hl] - inc [hl] - pop hl - pop bc - dec c - jr nz, .asm_ef0f - pop af - ld [$ffd7], a - pop af - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ret - -Func_ef4e: ; ef4e (3:6f4e) - ld a, h - sub b - ret nz - ld a, l - sub c - ret - -Func_ef54: ; ef54 (3:6f54) - xor a - ld [$cd6a], a - ld a, [W_CURMAPTILESET] ; $d367 - and a ; OVERWORLD - jr z, .asm_ef6b - cp GYM - jr nz, .asm_ef77 - ld a, [$cfc6] - cp $50 ; gym cut tree - jr nz, .asm_ef77 - jr asm_ef82 -.asm_ef6b - dec a - ld a, [$cfc6] - cp $3d ; cut tree - jr z, asm_ef82 - cp $52 ; grass - jr z, asm_ef82 -.asm_ef77 - ld hl, NothingToCutText - jp PrintText - -NothingToCutText: ; ef7d (3:6f7d) - TX_FAR _NothingToCutText - db "@" - -asm_ef82: ; ef82 (3:6f82) - ld [$cd4d], a - ld a, $1 - ld [$cd6a], a - ld a, [wWhichPokemon] ; $cf92 - ld hl, W_PARTYMON1NAME ; $d2b5 - call GetPartyMonName - ld hl, $d730 - set 6, [hl] - call GBPalWhiteOutWithDelay3 - call CleanLCD_OAM - call Func_3dbe - ld a, $90 - ld [$ffb0], a - call Delay3 - call LoadGBPal - call LoadCurrentMapView - call SaveScreenTilesToBuffer2 - call Delay3 - xor a - ld [$ffb0], a - ld hl, UsedCutText - call PrintText - call LoadScreenTilesFromBuffer2 - ld hl, $d730 - res 6, [hl] - ld a, $ff - ld [$cfcb], a - call Func_eff7 - ld de, CutTreeBlockSwaps ; $7100 - call Func_f09f - call Func_eedc - ld b, BANK(Func_79e96) - ld hl, Func_79e96 - call Bankswitch - ld a, $1 - ld [$cfcb], a - ld a, (SFX_02_56 - SFX_Headers_02) / 3 - call PlaySound - ld a, $90 - ld [$ffb0], a - call UpdateSprites - jp Func_eedc - -UsedCutText: ; eff2 (3:6ff2) - TX_FAR _UsedCutText - db "@" - -Func_eff7: ; eff7 (3:6ff7) - xor a - ld [$cd50], a - ld a, $e4 - ld [rOBP1], a ; $ff49 - ld a, [$cd4d] - cp $52 - jr z, .asm_f020 - ld de, Overworld_GFX + $2d0 ; $42d0 ; cuttable tree sprite top row - ld hl, $8fc0 - ld bc, (BANK(Overworld_GFX) << 8) + $02 - call CopyVideoData - ld de, Overworld_GFX + $3d0 ; $43d0 ; cuttable tree sprite bottom row - ld hl, $8fe0 - ld bc, (BANK(Overworld_GFX) << 8) + $02 - call CopyVideoData - jr asm_f055 -.asm_f020 - ld hl, $8fc0 - call Func_f04c - ld hl, $8fd0 - call Func_f04c - ld hl, $8fe0 - call Func_f04c - ld hl, $8ff0 - call Func_f04c - call asm_f055 - ld hl, $c393 - ld de, $4 - ld a, $30 - ld c, e -.asm_f044 - ld [hl], a - add hl, de - xor $60 - dec c - jr nz, .asm_f044 - ret - -Func_f04c: ; f04c (3:704c) - ld de, AnimationTileset2 + $60 ; $474e ; tile depicting a leaf - ld bc, (BANK(AnimationTileset2) << 8) + $01 - jp CopyVideoData -asm_f055: ; f055 (3:7055) - call Func_f068 - ld a, $9 - ld de, UnknownOAM_f060 ; $7060 - jp WriteOAMBlock - -UnknownOAM_f060: ; f060 (3:7060) - db $FC,$10,$FD,$10 - db $FE,$10,$FF,$10 - -Func_f068: ; f068 (3:7068) - ld hl, $c104 - ld a, [hli] - ld b, a - inc hl - ld a, [hli] - ld c, a ; bc holds ypos/xpos of player's sprite - inc hl - inc hl - ld a, [hl] ; a holds direction of player (00: down, 04: up, 08: left, 0C: right) - srl a - ld e, a - ld d, $0 ; de holds direction (00: down, 02: up, 04: left, 06: right) - ld a, [$cd50] - and a - ld hl, CutTreeAnimationOffsets ; $708f - jr z, .asm_f084 - ld hl, CutTreeAnimationOffsets2 ; $7097 -.asm_f084 - add hl, de - ld e, [hl] - inc hl - ld d, [hl] - ld a, b - add d - ld b, a - ld a, c - add e - ld c, a - ret - -CutTreeAnimationOffsets: ; f08f (3:708f) -; Each pair represents the x and y pixels offsets from the player of where the cut tree animation should be drawn - db 8, 36 ; player is facing down - db 8, 4 ; player is facing up - db -8, 20 ; player is facing left - db 24, 20 ; player is facing right - -CutTreeAnimationOffsets2: ; f097 (3:7097) -; Not sure if these ever get used. CutTreeAnimationOffsets only seems to be used. -; Each pair represents the x and y pixels offsets from the player of where the cut tree animation should be drawn -; These offsets represent 2 blocks away from the player - db 8, 52 ; player is facing down - db 8, -12 ; player is facing up - db -24, 20 ; player is facing left - db 40, 20 ; player is facing right - -Func_f09f: ; f09f (3:709f) - push de - ld a, [W_CURMAPWIDTH] ; $d369 - add $6 - ld c, a - ld b, $0 - ld d, $0 - ld hl, $d35f - ld a, [hli] - ld h, [hl] - ld l, a - add hl, bc - ld a, [$c109] - and a - jr z, .asm_f0c7 - cp $4 - jr z, .asm_f0cf - cp $8 - jr z, .asm_f0d7 - ld a, [W_XBLOCKCOORD] ; $d364 - and a - jr z, .asm_f0e0 - jr .asm_f0ec -.asm_f0c7 - ld a, [W_YBLOCKCOORD] ; $d363 - and a - jr z, .asm_f0e0 - jr .asm_f0df -.asm_f0cf - ld a, [W_YBLOCKCOORD] ; $d363 - and a - jr z, .asm_f0e1 - jr .asm_f0e0 -.asm_f0d7 - ld a, [W_XBLOCKCOORD] ; $d364 - and a - jr z, .asm_f0e6 - jr .asm_f0e0 -.asm_f0df - add hl, bc -.asm_f0e0 - add hl, bc -.asm_f0e1 - ld e, $2 - add hl, de - jr .asm_f0f0 -.asm_f0e6 - ld e, $1 - add hl, bc - add hl, de - jr .asm_f0f0 -.asm_f0ec - ld e, $3 - add hl, bc - add hl, de -.asm_f0f0 - pop de - ld a, [hl] - ld c, a -.asm_f0f3 - ld a, [de] - inc de - inc de - cp $ff - ret z - cp c - jr nz, .asm_f0f3 - dec de - ld a, [de] - ld [hl], a - ret - -CutTreeBlockSwaps: ; f100 (3:7100) -; first byte = tileset block containing the cut tree -; second byte = corresponding tileset block after the cut animation happens - db $32, $6D - db $33, $6C - db $34, $6F - db $35, $4C - db $60, $6E - db $0B, $0A - db $3C, $35 - db $3F, $35 - db $3D, $36 - db $FF ; list terminator - -Func_f113: ; f113 (3:7113) - ld a, [W_CURMAP] ; $d35e - cp ROUTE_1 - jr nc, .notInTown - ld c, a - ld b, $1 - ld hl, W_TOWNVISITEDFLAG ; mark town as visited (for flying) - ld a, $10 - call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) -.notInTown - ld hl, MapHSPointers - ld a, [W_CURMAP] ; $d35e - ld b, $0 - ld c, a - add hl, bc - add hl, bc - ld a, [hli] ; load missable objects pointer in hl - ld h, [hl] - -Func_f132: ; f132 (3:7132) - ld l, a - push hl - ld de, MapHS00 ; calculate difference between out pointer and the base pointer - ld a, l - sub e - jr nc, .asm_f13c - dec h -.asm_f13c - ld l, a - ld a, h - sub d - ld h, a - ld a, h - ld [H_DIVIDEND], a - ld a, l - ld [H_DIVIDEND+1], a - xor a - ld [H_DIVIDEND+2], a - ld [H_DIVIDEND+3], a - ld a, $3 - ld [H_DIVISOR], a - ld b, $2 - call Divide ; divide difference by 3, resulting in the global offset (number of missable items before ours) - ld a, [W_CURMAP] ; $d35e - ld b, a - ld a, [H_DIVIDEND+3] - ld c, a ; store global offset in c - ld de, W_MISSABLEOBJECTLIST - pop hl -.writeMissableObjectsListLoop - ld a, [hli] - cp $ff - jr z, .done ; end of list - cp b - jr nz, .done ; not for current map anymore - ld a, [hli] - inc hl - ld [de], a ; write (map-local) sprite ID - inc de - ld a, c - inc c - ld [de], a ; write (global) missable object index - inc de - jr .writeMissableObjectsListLoop -.done - ld a, $ff - ld [de], a ; write sentinel - ret - -InitializeMissableObjectsFlags: ; f175 (3:7175) - ld hl, W_MISSABLEOBJECTFLAGS - ld bc, $20 - xor a - call FillMemory ; clear missable objects flags - ld hl, MapHS00 - xor a - ld [$d048], a -.missableObjectsLoop - ld a, [hli] - cp $ff ; end of list - ret z - push hl - inc hl - ld a, [hl] - cp Hide - jr nz, .asm_f19d - ld hl, W_MISSABLEOBJECTFLAGS - ld a, [$d048] - ld c, a - ld b, $1 - call HandleBitArray2 ; set flag iff Item is hidden -.asm_f19d - ld hl, $d048 - inc [hl] - pop hl - inc hl - inc hl - jr .missableObjectsLoop - -; tests if current sprite is a missable object that is hidden/has been removed -IsMissableObjectHidden: ; f1a6 (3:71a6) - ld a, [H_CURRENTSPRITEOFFSET] - swap a - ld b, a - ld hl, W_MISSABLEOBJECTLIST -.loop - ld a, [hli] - cp $ff - jr z, .notHidden ; not missable -> not hidden - cp b - ld a, [hli] - jr nz, .loop - ld c, a - ld b, $2 - ld hl, W_MISSABLEOBJECTFLAGS - call HandleBitArray2 - ld a, c - and a - jr nz, .hidden -.notHidden - xor a -.hidden - ld [$ffe5], a - ret - -; adds missable object (items, leg. pokemon, etc.) to the map -; [$cc4d]: index of the missable object to be added (global index) -AddMissableObject: ; f1c8 (3:71c8) - ld hl, W_MISSABLEOBJECTFLAGS - ld a, [$cc4d] - ld c, a - ld b, $0 - call HandleBitArray2 ; reset "removed" flag - jp UpdateSprites - -; removes missable object (items, leg. pokemon, etc.) from the map -; [$cc4d]: index of the missable object to be removed (global index) -RemoveMissableObject: ; f1d7 (3:71d7) - ld hl, W_MISSABLEOBJECTFLAGS - ld a, [$cc4d] - ld c, a - ld b, $1 - call HandleBitArray2 ; set "removed" flag - jp UpdateSprites - -; functionally identical to _HandleBitArray, but with less optimized instructions -; executes operations on a field of bits -; b = 0 -> reset bit -; b = 1 -> set bit -; b = 2 -> read bit (into c and z-flag) -; hl: base address -; c: bit index -HandleBitArray2: ; f1e6 (3:71e6) - push hl - push de - push bc - ld a, c - ld d, a - and $7 - ld e, a ; store bit offset in e - ld a, d - srl a - srl a - srl a ; calc byte offset - add l - ld l, a - jr nc, .noCarry - inc h -.noCarry - inc e - ld d, $1 -.shiftLeftLoop ; d = 1 << e, bitmask for the used bit - dec e - jr z, .operationSelect - sla d - jr .shiftLeftLoop -.operationSelect - ld a, b - and a - jr z, .resetBit - cp $2 - jr z, .readBit - ld a, [hl] ; set bit - ld b, a - ld a, d - or b - ld [hl], a - jr .done -.resetBit - ld a, [hl] - ld b, a - ld a, d - xor $ff - and b - ld [hl], a - jr .done -.readBit - ld a, [hl] - ld b, a - ld a, d - and b -.done - pop bc - pop de - pop hl - ld c, a - ret - -Func_f225: ; f225 (3:7225) - ld a, [$d728] - bit 0, a - ret z - ld a, [wFlags_0xcd60] - bit 1, a - ret nz - xor a - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call IsSpriteInFrontOfPlayer - ld a, [H_DOWNARROWBLINKCNT2] ; $ff8c - ld [$d718], a - and a - jp z, Func_f2dd - ld hl, $c101 - ld d, $0 - ld a, [H_DOWNARROWBLINKCNT2] ; $ff8c - swap a - ld e, a - add hl, de - res 7, [hl] - call GetSpriteMovementByte2Pointer - ld a, [hl] - cp $10 - jp nz, Func_f2dd - ld hl, wFlags_0xcd60 - bit 6, [hl] - set 6, [hl] - ret z - ld a, [H_CURRENTPRESSEDBUTTONS] - and $f0 - ret z - ld a, $5a - call Predef ; indirect jump to Func_c60b (c60b (3:460b)) - ld a, [$d71c] - and a - jp nz, Func_f2dd - ld a, [H_CURRENTPRESSEDBUTTONS] - ld b, a - ld a, [$c109] - cp $4 - jr z, .asm_f289 - cp $8 - jr z, .asm_f291 - cp $c - jr z, .asm_f299 - bit 7, b - ret z - ld de, MovementData_f2af - jr .asm_f29f -.asm_f289 - bit 6, b - ret z - ld de, MovementData_f2ad - jr .asm_f29f -.asm_f291 - bit 5, b - ret z - ld de, MovementData_f2b1 - jr .asm_f29f -.asm_f299 - bit 4, b - ret z - ld de, MovementData_f2b3 -.asm_f29f - call MoveSprite - ld a, (SFX_02_53 - SFX_Headers_02) / 3 - call PlaySound - ld hl, wFlags_0xcd60 - set 1, [hl] - ret - -MovementData_f2ad: ; f2ad (3:72ad) - db $40,$FF - -MovementData_f2af: ; f2af (3:72af) - db $00,$FF - -MovementData_f2b1: ; f2b1 (3:72b1) - db $80,$FF - -MovementData_f2b3: ; f2b3 (3:72b3) - db $C0,$FF - -Func_f2b5: ; f2b5 (3:72b5) - ld a, [$d730] - bit 0, a - ret nz - ld hl, Func_79f54 - ld b, BANK(Func_79f54) - call Bankswitch - call DiscardButtonPresses - ld [wJoypadForbiddenButtonsMask], a - call Func_f2dd - set 7, [hl] - ld a, [$d718] - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call GetSpriteMovementByte2Pointer - ld [hl], $10 - ld a, (SFX_02_56 - SFX_Headers_02) / 3 - jp PlaySound - -Func_f2dd: ; f2dd (3:72dd) - ld hl, wFlags_0xcd60 - res 1, [hl] - res 6, [hl] - ret - -_AddPokemonToParty: ; f2e5 (3:72e5) - ld de, W_NUMINPARTY ; $d163 - ld a, [$cc49] - and $f - jr z, .asm_f2f2 - ld de, wEnemyPartyCount ; $d89c -.asm_f2f2 - ld a, [de] - inc a - cp $7 - ret nc - ld [de], a - ld a, [de] - ld [$ffe4], a - add e - ld e, a - jr nc, .asm_f300 - inc d -.asm_f300 - ld a, [$cf91] - ld [de], a - inc de - ld a, $ff - ld [de], a - ld hl, W_PARTYMON1OT ; $d273 - ld a, [$cc49] - and $f - jr z, .asm_f315 - ld hl, W_ENEMYMON1OT -.asm_f315 - ld a, [$ffe4] - dec a - call SkipFixedLengthTextEntries - ld d, h - ld e, l - ld hl, W_PLAYERNAME ; $d158 - ld bc, $b - call CopyData - ld a, [$cc49] - and a - jr nz, .asm_f33f - ld hl, W_PARTYMON1NAME ; $d2b5 - ld a, [$ffe4] - dec a - call SkipFixedLengthTextEntries - ld a, $2 - ld [$d07d], a - ld a, $4e - call Predef ; indirect jump to Func_64eb (64eb (1:64eb)) -.asm_f33f - ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) - ld a, [$cc49] - and $f - jr z, .asm_f34c - ld hl, wEnemyMons ; $d8a4 -.asm_f34c - ld a, [$ffe4] - dec a - ld bc, $2c - call AddNTimes - ld e, l - ld d, h - push hl - ld a, [$cf91] - ld [$d0b5], a - call GetMonHeader - ld hl, W_MONHEADER - ld a, [hli] - ld [de], a - inc de - pop hl - push hl - ld a, [$cc49] - and $f - ld a, $98 ; set enemy trainer mon IVs to fixed average values - ld b, $88 - jr nz, .writeFreshMonData - ld a, [$cf91] - ld [$d11e], a - push de - ld a, $3a - call Predef ; indirect jump to IndexToPokedex (41010 (10:5010)) - pop de - ld a, [$d11e] - dec a - ld c, a - ld b, $2 - ld hl, wPokedexOwned ; $d2f7 - call _HandleBitArray - ld a, c - ld [$d153], a - ld a, [$d11e] - dec a - ld c, a - ld b, $1 - push bc - call _HandleBitArray - pop bc - ld hl, wPokedexSeen ; $d30a - call _HandleBitArray - pop hl - push hl - ld a, [W_ISINBATTLE] ; $d057 - and a - jr nz, .copyEnemyMonData - call GenRandom ; generate random IVs - ld b, a - call GenRandom -.writeFreshMonData ; f3b3 - push bc - ld bc, $1b - add hl, bc - pop bc - ld [hli], a - ld [hl], b ; write IVs - ld bc, $fff4 - add hl, bc - ld a, $1 - ld c, a - xor a - ld b, a - call CalcStat ; calc HP stat (set cur Hp to max HP) - ld a, [H_MULTIPLICAND+1] - ld [de], a - inc de - ld a, [H_MULTIPLICAND+2] - ld [de], a - inc de - xor a - ld [de], a ; level (?) - inc de - ld [de], a ; status ailments - inc de - jr .copyMonTypesAndMoves -.copyEnemyMonData - ld bc, $1b - add hl, bc - ld a, [W_ENEMYMONATKDEFIV] ; copy IVs from cur enemy mon - ld [hli], a - ld a, [W_ENEMYMONSPDSPCIV] - ld [hl], a - ld a, [W_ENEMYMONCURHP] ; copy HP from cur enemy mon - ld [de], a - inc de - ld a, [W_ENEMYMONCURHP+1] - ld [de], a - inc de - xor a - ld [de], a ; level (?) - inc de - ld a, [W_ENEMYMONSTATUS] ; copy status ailments from cur enemy mon - ld [de], a - inc de -.copyMonTypesAndMoves - ld hl, W_MONHTYPES - ld a, [hli] ; type 1 - ld [de], a - inc de - ld a, [hli] ; type 2 - ld [de], a - inc de - ld a, [hli] ; unused (?) - ld [de], a - ld hl, W_MONHMOVES - ld a, [hli] - inc de - push de - ld [de], a - ld a, [hli] - inc de - ld [de], a - ld a, [hli] - inc de - ld [de], a - ld a, [hli] - inc de - ld [de], a - push de - dec de - dec de - dec de - xor a - ld [$cee9], a - ld a, $3e - call Predef ; indirect jump to WriteMonMoves (3afb8 (e:6fb8)) - pop de - ld a, [wPlayerID] ; set trainer ID to player ID - inc de - ld [de], a - ld a, [wPlayerID + 1] - inc de - ld [de], a - push de - ld a, [W_CURENEMYLVL] - ld d, a - ld hl, CalcExperience - ld b, BANK(CalcExperience) - call Bankswitch - pop de - inc de - ld a, [H_MULTIPLICAND] ; write experience - ld [de], a - inc de - ld a, [H_MULTIPLICAND+1] - ld [de], a - inc de - ld a, [H_MULTIPLICAND+2] - ld [de], a - xor a - ld b, $a -.writeEVsLoop ; set all EVs to 0 - inc de - ld [de], a - dec b - jr nz, .writeEVsLoop - inc de - inc de - pop hl - call AddPokemonToParty_WriteMovePP - inc de - ld a, [W_CURENEMYLVL] ; $d127 - ld [de], a - inc de - ld a, [W_ISINBATTLE] ; $d057 - dec a - jr nz, .calcFreshStats - ld hl, W_ENEMYMONMAXHP ; $cff4 - ld bc, $a - call CopyData ; copy stats of cur enemy mon - pop hl - jr .done -.calcFreshStats - pop hl - ld bc, $10 - add hl, bc - ld b, $0 - call CalcStats ; calculate fresh set of stats -.done - scf - ret - -LoadMovePPs: ; f473 (3:7473) - call Load16BitRegisters - ; fallthrough -AddPokemonToParty_WriteMovePP: ; f476 (3:7476) - ld b, $4 -.pploop - ld a, [hli] ; read move ID - and a - jr z, .empty - dec a - push hl - push de - push bc - ld hl, Moves - ld bc, $6 - call AddNTimes - ld de, $cd6d - ld a, BANK(Moves) - call FarCopyData - pop bc - pop de - pop hl - ld a, [$cd72] ; sixth move byte = pp -.empty - inc de - ld [de], a - dec b - jr nz, .pploop ; there are still moves to read - ret - -; adds enemy mon [$cf91] (at position [$cf92] in enemy list) to own party -; no known uses in the game -_AddEnemyMonToPlayerParty: ; f49d (3:749d) - ld hl, W_NUMINPARTY - ld a, [hl] - cp $6 - scf - ret z ; party full, return failure - inc a - ld [hl], a ; add 1 to party members - ld c, a - ld b, $0 - add hl, bc - ld a, [$cf91] - ld [hli], a ; add mon as last list entry - ld [hl], $ff ; write new sentinel - ld hl, W_PARTYMON1DATA - ld a, [W_NUMINPARTY] - dec a - ld bc, W_PARTYMON2DATA - W_PARTYMON1DATA - call AddNTimes - ld e, l - ld d, h - ld hl, $cf98 - call CopyData ; write new mon's data (from $cf98) - ld hl, W_PARTYMON1OT - ld a, [W_NUMINPARTY] - dec a - call SkipFixedLengthTextEntries - ld d, h - ld e, l - ld hl, W_ENEMYMON1OT - ld a, [wWhichPokemon] - call SkipFixedLengthTextEntries - ld bc, $000b - call CopyData ; write new mon's OT name (from an enemy mon) - ld hl, W_PARTYMON1NAME - ld a, [W_NUMINPARTY] - dec a - call SkipFixedLengthTextEntries - ld d, h - ld e, l - ld hl, W_ENEMYMON1NAME - ld a, [wWhichPokemon] - call SkipFixedLengthTextEntries - ld bc, $000b - call CopyData ; write new mon's nickname (from an enemy mon) - ld a, [$cf91] - ld [$d11e], a - ld a, $3a - call Predef - ld a, [$d11e] - dec a - ld c, a - ld b, $1 - ld hl, wPokedexOwned - push bc - call _HandleBitArray ; add to owned pokemon - pop bc - ld hl, wPokedexSeen - call _HandleBitArray ; add to seen pokemon - and a - ret ; return success - -Func_f51e: ; f51e (3:751e) - ld a, [$cf95] - and a - jr z, .checkPartyMonSlots - cp $2 - jr z, .checkPartyMonSlots - cp $3 - ld hl, W_DAYCAREMONDATA - jr z, .asm_f575 - ld hl, W_NUMINBOX ; $da80 - ld a, [hl] - cp $14 - jr nz, .partyOrBoxNotFull - jr .boxFull -.checkPartyMonSlots - ld hl, W_NUMINPARTY ; $d163 - ld a, [hl] - cp $6 - jr nz, .partyOrBoxNotFull -.boxFull - scf - ret -.partyOrBoxNotFull - inc a - ld [hl], a ; increment number of mons in party/box - ld c, a - ld b, $0 - add hl, bc - ld a, [$cf95] - cp $2 - ld a, [W_DAYCAREMONDATA] - jr z, .asm_f556 - ld a, [$cf91] -.asm_f556 - ld [hli], a ; write new mon ID - ld [hl], $ff ; write new sentinel - ld a, [$cf95] - dec a - ld hl, W_PARTYMON1DATA ; $d16b - ld bc, W_PARTYMON2DATA - W_PARTYMON1DATA ; $2c - ld a, [W_NUMINPARTY] ; $d163 - jr nz, .skipToNewMonEntry - ld hl, W_BOXMON1DATA - ld bc, W_BOXMON2DATA - W_BOXMON1DATA ; $21 - ld a, [W_NUMINBOX] ; $da80 -.skipToNewMonEntry - dec a - call AddNTimes -.asm_f575 - push hl - ld e, l - ld d, h - ld a, [$cf95] - and a - ld hl, W_BOXMON1DATA - ld bc, W_BOXMON2DATA - W_BOXMON1DATA ; $21 - jr z, .asm_f591 - cp $2 - ld hl, W_DAYCAREMONDATA - jr z, .asm_f597 - ld hl, W_PARTYMON1DATA ; $d16b - ld bc, W_PARTYMON2DATA - W_PARTYMON1DATA ; $2c -.asm_f591 - ld a, [wWhichPokemon] ; $cf92 - call AddNTimes -.asm_f597 - push hl - push de - ld bc, $21 - call CopyData - pop de - pop hl - ld a, [$cf95] - and a - jr z, .asm_f5b4 - cp $2 - jr z, .asm_f5b4 - ld bc, $21 - add hl, bc - ld a, [hl] - inc de - inc de - inc de - ld [de], a -.asm_f5b4 - ld a, [$cf95] - cp $3 - ld de, W_DAYCAREMONOT - jr z, .asm_f5d3 - dec a - ld hl, W_PARTYMON1OT ; $d273 - ld a, [W_NUMINPARTY] ; $d163 - jr nz, .asm_f5cd - ld hl, W_BOXMON1OT - ld a, [W_NUMINBOX] ; $da80 -.asm_f5cd - dec a - call SkipFixedLengthTextEntries - ld d, h - ld e, l -.asm_f5d3 - ld hl, W_BOXMON1OT - ld a, [$cf95] - and a - jr z, .asm_f5e6 - ld hl, W_DAYCAREMONOT - cp $2 - jr z, .asm_f5ec - ld hl, W_PARTYMON1OT ; $d273 -.asm_f5e6 - ld a, [wWhichPokemon] ; $cf92 - call SkipFixedLengthTextEntries -.asm_f5ec - ld bc, $b - call CopyData - ld a, [$cf95] - cp $3 - ld de, W_DAYCAREMONNAME - jr z, .asm_f611 - dec a - ld hl, W_PARTYMON1NAME ; $d2b5 - ld a, [W_NUMINPARTY] ; $d163 - jr nz, .asm_f60b - ld hl, W_BOXMON1NAME - ld a, [W_NUMINBOX] ; $da80 -.asm_f60b - dec a - call SkipFixedLengthTextEntries - ld d, h - ld e, l -.asm_f611 - ld hl, W_BOXMON1NAME - ld a, [$cf95] - and a - jr z, .asm_f624 - ld hl, W_DAYCAREMONNAME - cp $2 - jr z, .asm_f62a - ld hl, W_PARTYMON1NAME ; $d2b5 -.asm_f624 - ld a, [wWhichPokemon] ; $cf92 - call SkipFixedLengthTextEntries -.asm_f62a - ld bc, $b - call CopyData - pop hl - ld a, [$cf95] - cp $1 - jr z, .asm_f664 - cp $3 - jr z, .asm_f664 - push hl - srl a - add $2 - ld [$cc49], a - call LoadMonData - ld b, BANK(Func_58f43) - ld hl, Func_58f43 - call Bankswitch - ld a, d - ld [W_CURENEMYLVL], a ; $d127 - pop hl - ld bc, $21 - add hl, bc - ld [hli], a - ld d, h - ld e, l - ld bc, $ffee - add hl, bc - ld b, $1 - call CalcStats -.asm_f664 - and a - ret - -; predef $10 -; executes operations on a field of bits -; b = 0 -> reset bit -; b = 1 -> set bit -; b = 2 -> read bit (into c and z-flag) -; hl: base address -; c: bit index -HandleBitArray: ; f666 (3:7666) - call Load16BitRegisters - -_HandleBitArray: ; f669 (3:7669) - push hl - push de - push bc - ld a, c - ld d, a - and $7 - ld e, a ; store bit offset in e - ld a, d - srl a - srl a - srl a ; calc byte offset - add l - ld l, a - jr nc, .noCarry - inc h -.noCarry - inc e - ld d, $1 -.shiftLeftLoop ; d = 1 << e, bitmask for the used bit - dec e - jr z, .operationSelect - sla d - jr .shiftLeftLoop -.operationSelect - ld a, b - and a - jr z, .resetBit - cp $2 - jr z, .readBit - ld b, [hl] ; set bit - ld a, d - or b - ld [hl], a - jr .done -.resetBit - ld b, [hl] - ld a, d - xor $ff - and b - ld [hl], a - jr .done -.readBit - ld b, [hl] - ld a, d - and b -.done - pop bc - pop de - pop hl - ld c, a - ret - -HealParty: ; f6a5 (3:76a5) - ld hl, W_PARTYMON1 - ld de, W_PARTYMON1_HP -.HealPokemon: ; f6ab (3:76ab) - ld a, [hli] - cp $ff - jr z, .DoneHealing ; End if there's no Pokémon - push hl - push de - ld hl, $0003 ; Status offset - add hl, de - xor a - ld [hl], a ; Clean status conditions - push de - ld b, $4 ; A Pokémon has 4 moves -.RestorePP: ; f6bb (3:76bb) - ld hl, $0007 ; Move offset - add hl, de - ld a, [hl] - and a - jr z, .HealNext ; Skip if there's no move here - dec a - ld hl, $001c ; PP offset - add hl, de - push hl - push de - push bc - ld hl, Moves - ld bc, $0006 - call AddNTimes - ld de, $cd6d - ld a, BANK(Moves) - call FarCopyData ; copy move header to memory - ld a, [$cd72] ; get default PP - pop bc - pop de - pop hl - inc de - push bc - ld b, a - ld a, [hl] - and $c0 - add b - ld [hl], a - pop bc -.HealNext: ; f6eb (3:76eb) - dec b - jr nz, .RestorePP ; Continue if there's still moves - pop de - ld hl, $0021 ; Max HP offset - add hl, de - ld a, [hli] - ld [de], a - inc de - ld a, [hl] - ld [de], a ; Restore full HP - pop de - pop hl - push hl - ld bc, $002c - ld h, d - ld l, e - add hl, bc - ld d, h - ld e, l - pop hl - jr .HealPokemon ; Next Pokémon -.DoneHealing - xor a - ld [wWhichPokemon], a - ld [$d11e], a - ld a, [W_NUMINPARTY] - ld b, a -.restoreBonusPPLoop ; loop to restore bonus PP from PP Ups - push bc - call RestoreBonusPP - pop bc - ld hl, wWhichPokemon - inc [hl] - dec b - jr nz,.restoreBonusPPLoop - ret - -; predef $9 -; predef $a -; predef $d -; predef $e -Func_f71e: ; f71e (3:771e) - call Load16BitRegisters - xor a - ld [$ffa5], a - ld [$ffa6], a - ld [$ffa7], a - ld d, $1 -.asm_f72a - ld a, [$ffa2] - and $f0 - jr nz, .asm_f75b - inc d - ld a, [$ffa2] - swap a - and $f0 - ld b, a - ld a, [$ffa3] - swap a - ld [$ffa3], a - and $f - or b - ld [$ffa2], a - ld a, [$ffa3] - and $f0 - ld b, a - ld a, [$ffa4] - swap a - ld [$ffa4], a - and $f - or b - ld [$ffa3], a - ld a, [$ffa4] - and $f0 - ld [$ffa4], a - jr .asm_f72a -.asm_f75b - push de - push de - call Func_f800 - pop de - ld a, b - swap a - and $f0 - ld [$ffa5], a - dec d - jr z, .asm_f7bc - push de - call Func_f7d7 - call Func_f800 - pop de - ld a, [$ffa5] - or b - ld [$ffa5], a - dec d - jr z, .asm_f7bc - push de - call Func_f7d7 - call Func_f800 - pop de - ld a, b - swap a - and $f0 - ld [$ffa6], a - dec d - jr z, .asm_f7bc - push de - call Func_f7d7 - call Func_f800 - pop de - ld a, [$ffa6] - or b - ld [$ffa6], a - dec d - jr z, .asm_f7bc - push de - call Func_f7d7 - call Func_f800 - pop de - ld a, b - swap a - and $f0 - ld [$ffa7], a - dec d - jr z, .asm_f7bc - push de - call Func_f7d7 - call Func_f800 - pop de - ld a, [$ffa7] - or b - ld [$ffa7], a -.asm_f7bc - ld a, [$ffa5] - ld [$ffa2], a - ld a, [$ffa6] - ld [$ffa3], a - ld a, [$ffa7] - ld [$ffa4], a - pop de - ld a, $6 - sub d - and a - ret z -.asm_f7ce - push af - call Func_f7d7 - pop af - dec a - jr nz, .asm_f7ce - ret - -Func_f7d7: ; f7d7 (3:77d7) - ld a, [$ffa4] - swap a - and $f - ld b, a - ld a, [$ffa3] - swap a - ld [$ffa3], a - and $f0 - or b - ld [$ffa4], a - ld a, [$ffa3] - and $f - ld b, a - ld a, [$ffa2] - swap a - ld [$ffa2], a - and $f0 - or b - ld [$ffa3], a - ld a, [$ffa2] - and $f - ld [$ffa2], a - ret - -Func_f800: ; f800 (3:7800) - ld bc, $3 -.asm_f803 - ld de, $ff9f - ld hl, $ffa2 - push bc - call StringCmp - pop bc - ret c - inc b - ld de, $ffa1 - ld hl, $ffa4 - push bc - call Func_f839 - pop bc - jr .asm_f803 - -Func_f81d: ; f81d (3:781d) - call Load16BitRegisters - and a - ld b, c -.asm_f822 - ld a, [de] - adc [hl] - daa - ld [de], a - dec de - dec hl - dec c - jr nz, .asm_f822 - jr nc, .asm_f835 - ld a, $99 - inc de -.asm_f830 - ld [de], a - inc de - dec b - jr nz, .asm_f830 -.asm_f835 - ret - -Func_f836: ; f836 (3:7836) - call Load16BitRegisters - -Func_f839: ; f839 (3:7839) - and a - ld b, c -.asm_f83b - ld a, [de] - sbc [hl] - daa - ld [de], a - dec de - dec hl - dec c - jr nz, .asm_f83b - jr nc, .asm_f84f - ld a, $0 - inc de -.asm_f849 - ld [de], a - inc de - dec b - jr nz, .asm_f849 - scf -.asm_f84f - ret - -InitializePlayerData: ; f850 (3:7850) - call GenRandom - ld a, [H_RAND2] - ld [wPlayerID], a ; set player trainer id - call GenRandom - ld a, [H_RAND1] - ld [wPlayerID + 1], a - ld a, $ff - ld [$d71b], a ; XXX what's this? - ld hl, W_NUMINPARTY ; $d163 - call InitializeEmptyList ; no party mons - ld hl, W_NUMINBOX ; $da80 - call InitializeEmptyList ; no boxed mons - ld hl, wNumBagItems ; $d31d - call InitializeEmptyList ; no items - ld hl, wNumBoxItems ; $d53a - call InitializeEmptyList ; no boxed items - ld hl, wPlayerMoney + 1 ; $d348 - ld a, $30 - ld [hld], a ; set money to 00 30 00 (3000) - xor a - ld [hli], a - inc hl - ld [hl], a - ld [$cc49], a ; XXX what's this? - ld hl, W_OBTAINEDBADGES - ld [hli], a ; no badges obtained - ld [hl], a ; XXX what's this? - ld hl, wPlayerCoins ; $d5a4 - ld [hli], a ; no coins - ld [hl], a - ld hl, W_GAMEPROGRESSFLAGS ; $d5f0 - ld bc, $c8 - call FillMemory ; clear all game progress flags - jp InitializeMissableObjectsFlags - -; writes two bytes $00 $ff to hl -InitializeEmptyList: ; f8a0 (3:78a0) - xor a - ld [hli], a - dec a - ld [hl], a - ret - -Func_f8a5: ; f8a5 (3:78a5) - call Load16BitRegisters - ld hl, wNumBagItems ; $d31d -.asm_f8ab - inc hl - ld a, [hli] - cp $ff - jr z, .asm_f8b7 - cp b - jr nz, .asm_f8ab - ld a, [hl] - ld b, a - ret -.asm_f8b7 - ld b, $0 - ret - -Func_f8ba: ; f8ba (3:78ba) - xor a - ld hl, $ff97 - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld hl, $cc97 - ld de, $0 - -Func_f8c8: ; f8c8 (3:78c8) - ld a, [H_REMAINDER] ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - ld b, a - ld a, [H_DIVIDEND] ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) - call CalcDifference - ld d, a - and a - jr nz, .asm_f8da - ld a, [$ff98] - set 0, a - ld [$ff98], a -.asm_f8da - ld a, [$ff9a] - ld b, a - ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND) - call CalcDifference - ld e, a - and a - jr nz, .asm_f8ec - ld a, [$ff98] - set 1, a - ld [$ff98], a -.asm_f8ec - ld a, [$ff98] - cp $3 - jr z, .asm_f926 - ld a, e - cp d - jr c, .asm_f90a - ld a, [$ff9d] - bit 1, a - jr nz, .asm_f900 - ld d, $c0 - jr .asm_f902 -.asm_f900 - ld d, $80 -.asm_f902 - ld a, [$ff9a] - add $1 - ld [$ff9a], a - jr .asm_f91c -.asm_f90a - ld a, [$ff9d] - bit 0, a - jr nz, .asm_f914 - ld d, $0 - jr .asm_f916 -.asm_f914 - ld d, $40 -.asm_f916 - ld a, [H_REMAINDER] ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - add $1 - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) -.asm_f91c - ld a, d - ld [hli], a - ld a, [$ff97] - inc a - ld [$ff97], a - jp Func_f8c8 -.asm_f926 - ld [hl], $ff - ret - -Func_f929: ; f929 (3:7929) - xor a - ld [$ff9d], a - ld a, [$c104] - ld d, a - ld a, [$c106] - ld e, a - ld hl, wSpriteStateData1 - ld a, [H_DIVIDEND] ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) - add l - add $4 - ld l, a - jr nc, .asm_f940 - inc h -.asm_f940 - ld a, d - ld b, a - ld a, [hli] - call CalcDifference - jr nc, .asm_f953 - push hl - ld hl, $ff9d - bit 0, [hl] - set 0, [hl] - pop hl - jr .asm_f95c -.asm_f953 - push hl - ld hl, $ff9d - bit 0, [hl] - res 0, [hl] - pop hl -.asm_f95c - push hl - ld hl, $ffe5 - ld [hli], a - ld a, $10 - ld [hli], a - call Func_366b - ld a, [hl] - ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) - pop hl - inc hl - ld b, e - ld a, [hl] - call CalcDifference - jr nc, .asm_f97e - push hl - ld hl, $ff9d - bit 1, [hl] - set 1, [hl] - pop hl - jr .asm_f987 -.asm_f97e - push hl - ld hl, $ff9d - bit 1, [hl] - res 1, [hl] - pop hl -.asm_f987 - ld [$ffe5], a - ld a, $10 - ld [$ffe6], a - call Func_366b - ld a, [$ffe7] - ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) - ld a, [$ff9b] - and a - ret z - ld a, [$ff9d] - cpl - and $3 - ld [$ff9d], a - ret - -Func_f9a0: ; f9a0 (3:79a0) - ld a, [$ff95] - ld [$cd37], a - dec a - ld de, $ccd3 - ld hl, $cc97 - add l - ld l, a - jr nc, .asm_f9b1 - inc h -.asm_f9b1 - ld a, [hld] - call Func_f9bf - ld [de], a - inc de - ld a, [$ff95] - dec a - ld [$ff95], a - jr nz, .asm_f9b1 - ret - -Func_f9bf: ; f9bf (3:79bf) - push hl - ld b, a - ld hl, DataTable_f9d2 -.asm_f9c4 - ld a, [hli] - cp $ff - jr z, .asm_f9d0 - cp b - jr z, .asm_f9cf - inc hl - jr .asm_f9c4 -.asm_f9cf - ld a, [hl] -.asm_f9d0 - pop hl - ret - -DataTable_f9d2: ; f9d2 (3:79d2) - db $40, $40, $00, $80, $80, $20, $c0, $10, $ff - -Func_f9db: ; f9db (3:79db) - ret - -Func_f9dc: ; f9dc (3:79dc) - call Load16BitRegisters - -; calculates bc * 48 / de, the number of pixels the HP bar has -; the result is always at least 1 -UpdateHPBar_CalcNumberOfHPBarPixels: ; f9df (3:79df) - push hl - xor a - ld hl, H_MULTIPLICAND - ld [hli], a - ld a, b - ld [hli], a - ld a, c - ld [hli], a - ld [hl], $30 - call Multiply ; 48 * bc (hp bar is 48 pixels long) - ld a, d - and a - jr z, .maxHPSmaller256 - srl d ; make HP in de fit into 1 byte by dividing by 4 - rr e - srl d - rr e - ld a, [H_MULTIPLICAND+1] - ld b, a - ld a, [H_MULTIPLICAND+2] - srl b ; divide multiplication result as well - rr a - srl b - rr a - ld [H_MULTIPLICAND+2], a - ld a, b - ld [H_MULTIPLICAND+1], a -.maxHPSmaller256 - ld a, e - ld [H_DIVISOR], a - ld b, $4 - call Divide - ld a, [H_MULTIPLICAND+2] - ld e, a ; e = bc * 48 / de (num of pixels of HP bar) - pop hl - and a - ret nz - ld e, $1 ; make result at least 1 - ret - -; predef $48 -UpdateHPBar: ; fa1d (3:7a1d) - push hl - ld hl, wHPBarOldHP - ld a, [hli] - ld c, a ; old HP into bc - ld a, [hli] - ld b, a - ld a, [hli] - ld e, a ; new HP into de - ld d, [hl] - pop hl - push de - push bc - call UpdateHPBar_CalcHPDifference - ld a, e - ld [wHPBarHPDifference+1], a - ld a, d - ld [wHPBarHPDifference], a - pop bc - pop de - call UpdateHPBar_CompareNewHPToOldHP - ret z - ld a, $ff - jr c, .HPdecrease - ld a, $1 -.HPdecrease - ld [wHPBarDelta], a - call Load16BitRegisters - ld a, [wHPBarNewHP] - ld e, a - ld a, [wHPBarNewHP+1] - ld d, a -.animateHPBarLoop - push de - ld a, [wHPBarOldHP] - ld c, a - ld a, [wHPBarOldHP+1] - ld b, a - call UpdateHPBar_CompareNewHPToOldHP - jr z, .animateHPBarDone - jr nc, .HPIncrease - dec bc ; subtract 1 HP - ld a, c - ld [wHPBarNewHP], a - ld a, b - ld [wHPBarNewHP+1], a - call UpdateHPBar_CalcOldNewHPBarPixels - ld a, e - sub d ; calc pixel difference - jr .asm_fa7e -.HPIncrease - inc bc ; add 1 HP - ld a, c - ld [wHPBarNewHP], a - ld a, b - ld [wHPBarNewHP+1], a - call UpdateHPBar_CalcOldNewHPBarPixels - ld a, d - sub e ; calc pixel difference -.asm_fa7e - call UpdateHPBar_PrintHPNumber - and a - jr z, .noPixelDifference - call UpdateHPBar_AnimateHPBar -.noPixelDifference - ld a, [wHPBarNewHP] - ld [wHPBarOldHP], a - ld a, [wHPBarNewHP+1] - ld [wHPBarOldHP+1], a - pop de - jr .animateHPBarLoop -.animateHPBarDone - pop de - ld a, e - ld [wHPBarOldHP], a - ld a, d - ld [wHPBarOldHP+1], a - or e - jr z, .monFainted - call UpdateHPBar_CalcOldNewHPBarPixels - ld d, e -.monFainted - call UpdateHPBar_PrintHPNumber - ld a, $1 - call UpdateHPBar_AnimateHPBar - jp Delay3 - -; animates the HP bar going up or down for (a) ticks (two waiting frames each) -; stops prematurely if bar is filled up -; e: current health (in pixels) to start with -UpdateHPBar_AnimateHPBar: ; fab1 (3:7ab1) - push hl -.barAnimationLoop - push af - push de - ld d, $6 - call DrawHPBar - ld c, $2 - call DelayFrames - pop de - ld a, [wHPBarDelta] ; +1 or -1 - add e - cp $31 - jr nc, .barFilledUp - ld e, a - pop af - dec a - jr nz, .barAnimationLoop - pop hl - ret -.barFilledUp - pop af - pop hl - ret - -; compares old HP and new HP and sets c and z flags accordingly -UpdateHPBar_CompareNewHPToOldHP: ; fad1 (3:7ad1) - ld a, d - sub b - ret nz - ld a, e - sub c - ret - -; calcs HP difference between bc and de (into de) -UpdateHPBar_CalcHPDifference: ; fad7 (3:7ad7) - ld a, d - sub b - jr c, .oldHPGreater - jr z, .testLowerByte -.newHPGreater - ld a, e - sub c - ld e, a - ld a, d - sbc b - ld d, a - ret -.oldHPGreater - ld a, c - sub e - ld e, a - ld a, b - sbc d - ld d, a - ret -.testLowerByte - ld a, e - sub c - jr c, .oldHPGreater - jr nz, .newHPGreater - ld de, $0 - ret - -UpdateHPBar_PrintHPNumber: ; faf5 (3:7af5) - push af - push de - ld a, [wListMenuID] ; $cf94 - and a - jr z, .asm_fb2d - ld a, [wHPBarOldHP] - ld [$cef1], a - ld a, [wHPBarOldHP+1] - ld [$cef0], a - push hl - ld a, [$fff6] - bit 0, a - jr z, .asm_fb15 - ld de, $9 - jr .asm_fb18 -.asm_fb15 - ld de, $15 -.asm_fb18 - add hl, de - push hl - ld a, $7f - ld [hli], a - ld [hli], a - ld [hli], a - pop hl - ld de, $cef0 - ld bc, $203 - call PrintNumber - call DelayFrame - pop hl -.asm_fb2d - pop de - pop af - ret - -; calcs number of HP bar pixels for old and new HP value -; d: new pixels -; e: old pixels -UpdateHPBar_CalcOldNewHPBarPixels: ; fb30 (3:7b30) - push hl - ld hl, wHPBarMaxHP - ld a, [hli] ; max HP into de - ld e, a - ld a, [hli] - ld d, a - ld a, [hli] ; old HP into bc - ld c, a - ld a, [hli] - ld b, a - ld a, [hli] ; new HP into hl - ld h, [hl] - ld l, a - push hl - push de - call UpdateHPBar_CalcNumberOfHPBarPixels ; calc num pixels for old HP - ld a, e - pop de - pop bc - push af - call UpdateHPBar_CalcNumberOfHPBarPixels ; calc num pixels for new HP - pop af - ld d, e - ld e, a - pop hl - ret - -; prints text for bookshelves in buildings without sign events -Func_fb50: ; fb50 (3:7b50) - ld a, [$c109] - cp $4 - jr nz, .asm_fb7f - ld a, [W_CURMAPTILESET] ; $d367 - ld b, a - FuncCoord 8, 7 ; $c434 - ld a, [Coord] - ld c, a - ld hl, BookshelfTileIDs ; $7b8b -.asm_fb62 - ld a, [hli] - cp $ff - jr z, .asm_fb7f - cp b - jr nz, .asm_fb7b - ld a, [hli] - cp c - jr nz, .asm_fb7c - ld a, [hl] - push af - call EnableAutoTextBoxDrawing - pop af - call Func_3ef5 - xor a - ld [$ffdb], a - ret -.asm_fb7b - inc hl -.asm_fb7c - inc hl - jr .asm_fb62 -.asm_fb7f - ld a, $ff - ld [$ffdb], a - ld b, BANK(Func_52673) - ld hl, Func_52673 - jp Bankswitch - -; format: db tileset id, bookshelf tile id, text id -BookshelfTileIDs: ; fb8b (3:7b8b) - db PLATEAU, $30, $3A - db HOUSE, $3D, $3F - db HOUSE, $1E, $40 - db MANSION, $32, $40 - db REDS_HOUSE_1, $32, $40 - db LAB, $28, $40 - db LOBBY, $16, $41 - db GYM, $1D, $40 - db DOJO, $1D, $40 - db GATE, $22, $40 - db MART, $54, $42 - db MART, $55, $42 - db POKECENTER, $54, $42 - db POKECENTER, $55, $42 - db LOBBY, $50, $42 - db LOBBY, $52, $42 - db SHIP, $36, $40 - db $FF - -IndigoPlateauStatues: ; fbbf (3:7bbf) - db $08 ; asm - ld hl, IndigoPlateauStatuesText1 - call PrintText - ld a, [W_XCOORD] - bit 0, a - ld hl, IndigoPlateauStatuesText2 - jr nz, .asm_fbd3 - ld hl, IndigoPlateauStatuesText3 -.asm_fbd3 - call PrintText - jp TextScriptEnd - -IndigoPlateauStatuesText1: ; fbd9 (3:7bd9) - TX_FAR _IndigoPlateauStatuesText1 - db "@" - -IndigoPlateauStatuesText2: ; fbde (3:7bde) - TX_FAR _IndigoPlateauStatuesText2 - db "@" - -IndigoPlateauStatuesText3: ; fbe3 (3:7be3) - TX_FAR _IndigoPlateauStatuesText3 - db "@" - -BookOrSculptureText: ; fbe8 (3:7be8) - db $08 ; asm - ld hl, PokemonBooksText - ld a, [W_CURMAPTILESET] - cp MANSION ; Celadon Mansion tileset - jr nz, .asm_fbfd - ld a, [$c420] - cp $38 - jr nz, .asm_fbfd - ld hl, DiglettSculptureText -.asm_fbfd - call PrintText - jp TextScriptEnd - -PokemonBooksText: ; fc03 (3:7c03) - TX_FAR _PokemonBooksText - db "@" - -DiglettSculptureText: ; fc08 (3:7c08) - TX_FAR _DiglettSculptureText - db "@" - -ElevatorText: ; fc0d (3:7c0d) - TX_FAR _ElevatorText - db "@" - -TownMapText: ; fc12 (3:7c12) - TX_FAR _TownMapText - db $06 - db $08 ; asm - ld a, $1 - ld [$cc3c], a - ld hl, $d730 - set 6, [hl] - call GBPalWhiteOutWithDelay3 - xor a - ld [$ffb0], a - inc a - ld [H_AUTOBGTRANSFERENABLED], a - call LoadFontTilePatterns - ld b, BANK(DisplayTownMap) - ld hl, DisplayTownMap - call Bankswitch - ld hl, $d730 - res 6, [hl] - ld de, TextScriptEnd - push de - ld a, [H_LOADEDROMBANK] - push af - jp CloseTextDisplay - -PokemonStuffText: ; fc45 (3:7c45) - TX_FAR _PokemonStuffText - db "@" - -SECTION "bank4",ROMX,BANK[$4] - -OakAideSprite: ; 10000 (4:4000) - INCBIN "gfx/sprites/oak_aide.2bpp" ; was $10000 -RockerSprite: ; 10180 (4:4180) - INCBIN "gfx/sprites/rocker.2bpp" ; was $10180 -SwimmerSprite: ; 10300 (4:4300) - INCBIN "gfx/sprites/swimmer.2bpp" ; was $10300 -WhitePlayerSprite: ; 10480 (4:4480) - INCBIN "gfx/sprites/white_player.2bpp" ; was $10480 -GymHelperSprite: ; 10540 (4:4540) - INCBIN "gfx/sprites/gym_helper.2bpp" ; was $10540 -OldPersonSprite: ; 10600 (4:4600) - INCBIN "gfx/sprites/old_person.2bpp" ; was $10600 -MartGuySprite: ; 106c0 (4:46c0) - INCBIN "gfx/sprites/mart_guy.2bpp" ; was $106c0 -FisherSprite: ; 10780 (4:4780) - INCBIN "gfx/sprites/fisher.2bpp" ; was $10780 -OldMediumWomanSprite: ; 10840 (4:4840) - INCBIN "gfx/sprites/old_medium_woman.2bpp" ; was $10840 -NurseSprite: ; 10900 (4:4900) - INCBIN "gfx/sprites/nurse.2bpp" ; was $10900 -CableClubWomanSprite: ; 109c0 (4:49c0) - INCBIN "gfx/sprites/cable_club_woman.2bpp" ; was $109c0 -MrMasterballSprite: ; 10a80 (4:4a80) - INCBIN "gfx/sprites/mr_masterball.2bpp" ; was $10a80 -LaprasGiverSprite: ; 10b40 (4:4b40) - INCBIN "gfx/sprites/lapras_giver.2bpp" ; was $10b40 -WardenSprite: ; 10c00 (4:4c00) - INCBIN "gfx/sprites/warden.2bpp" ; was $10c00 -SsCaptainSprite: ; 10cc0 (4:4cc0) - INCBIN "gfx/sprites/ss_captain.2bpp" ; was $10cc0 -Fisher2Sprite: ; 10d80 (4:4d80) - INCBIN "gfx/sprites/fisher2.2bpp" ; was $10d80 -BlackbeltSprite: ; 10f00 (4:4f00) - INCBIN "gfx/sprites/blackbelt.2bpp" ; was $10f00 -GuardSprite: ; 11080 (4:5080) - INCBIN "gfx/sprites/guard.2bpp" ; was $11080 -BallSprite: ; 11140 (4:5140) - INCBIN "gfx/sprites/ball.2bpp" ; was $11140 -OmanyteSprite: ; 11180 (4:5180) - INCBIN "gfx/sprites/omanyte.2bpp" ; was $11180 -BoulderSprite: ; 111c0 (4:51c0) - INCBIN "gfx/sprites/boulder.2bpp" ; was $111c0 -PaperSheetSprite: ; 11200 (4:5200) - INCBIN "gfx/sprites/paper_sheet.2bpp" ; was $11200 -BookMapDexSprite: ; 11240 (4:5240) - INCBIN "gfx/sprites/book_map_dex.2bpp" ; was $11240 -ClipboardSprite: ; 11280 (4:5280) - INCBIN "gfx/sprites/clipboard.2bpp" ; was $11280 -SnorlaxSprite: ; 112c0 (4:52c0) - INCBIN "gfx/sprites/snorlax.2bpp" ; was $112c0 -OldAmberSprite: ; 11300 (4:5300) - INCBIN "gfx/sprites/old_amber.2bpp" ; was $11300 -LyingOldManSprite: ; 11340 (4:5340) - INCBIN "gfx/sprites/lying_old_man.2bpp" ; was $11340 - -PokemonLogoGraphics: ; 11380 (4:5380) - INCBIN "gfx/pokemon_logo.w128.2bpp" - -FontGraphics: ; 11a80 (4:5a80) - INCBIN "gfx/font.w128.1bpp" - -ABTiles: ; 11e80 (4:5e80) - INCBIN "gfx/AB.2bpp" - -HpBarAndStatusGraphics: ; 11ea0 (4:5ea0) - INCBIN "gfx/hp_bar_and_status.2bpp" - -BattleHudTiles1: ; 12080 (4:6080) - INCBIN "gfx/battle_hud1.1bpp" - -BattleHudTiles2: ; 12098 (4:6098) - INCBIN "gfx/battle_hud2.1bpp" - -BattleHudTiles3: ; 120b0 (4:60b0) - INCBIN "gfx/battle_hud3.1bpp" - -NintendoCopyrightLogoGraphics: ; 120c8 (4:60c8) - INCBIN "gfx/copyright.h8.2bpp" - -GamefreakLogoGraphics: ; 121f8 (4:61f8) - INCBIN "gfx/gamefreak.h8.2bpp" - -TextBoxGraphics: ; 12288 (4:6288) - INCBIN "gfx/text_box.2bpp" - -PokedexTileGraphics: ; 12488 (4:6488) - INCBIN "gfx/pokedex.2bpp" - -WorldMapTileGraphics: ; 125a8 (4:65a8) - INCBIN "gfx/town_map.2bpp" - -PlayerCharacterTitleGraphics: ; 126a8 (4:66a8) - INCBIN "gfx/player_title.2bpp" - -Func_128d8: ; 128d8 (4:68d8) - ld a, [W_YCOORD] ; $d361 - ld b, a - ld a, [W_CURMAPHEIGHT] ; $d368 - call Func_128ea - ret z - ld a, [W_XCOORD] ; $d362 - ld b, a - ld a, [W_CURMAPWIDTH] ; $d369 - -Func_128ea: ; 128ea (4:68ea) - add a - cp b - ret z - inc b - ret - -Func_128ef: ; 128ef (4:68ef) - call Load16BitRegisters - ld a, $1 - jr asm_128fb - -Func_128f6: ; 128f6 (4:68f6) - call Load16BitRegisters - ld a, $2 -asm_128fb: ; 128fb (4:68fb) - ld [wListMenuID], a ; $cf94 - push hl - ld a, [$cf99] - ld b, a - ld a, [$cf9a] - ld c, a - or b - jr nz, .asm_12913 - xor a - ld c, a - ld e, a - ld a, $6 - ld d, a - jp Func_12924 -.asm_12913 - ld a, [$cfba] - ld d, a - ld a, [$cfbb] - ld e, a - ld a, $26 - call Predef ; indirect jump to Func_f9dc (f9dc (3:79dc)) - ld a, $6 - ld d, a - ld c, a - -Func_12924: ; 12924 (4:6924) - pop hl - push de - push hl - push hl - call DrawHPBar - pop hl - ld a, [$fff6] - bit 0, a - jr z, .asm_12937 - ld bc, $9 - jr .asm_1293a -.asm_12937 - ld bc, $15 -.asm_1293a - add hl, bc - ld de, $cf99 - ld bc, $203 - call PrintNumber - ld a, "/" - ld [hli], a - ld de, $cfba - ld bc, $203 - call PrintNumber - pop hl - pop de - ret - -; Predef 0x37 -StatusScreen: ; 12953 (4:6953) - call LoadMonData - ld a, [$cc49] - cp $2 ; 2 means we're in a PC box - jr c, .DontRecalculate ; 0x1295b $14 - ld a, [$cf9b] - ld [$cfb9], a - ld [$d127], a - ld hl, $cfa8 - ld de, $cfba - ld b, $1 - call CalcStats ; Recalculate stats -.DontRecalculate - ld hl, $d72c - set 1, [hl] - ld a, $33 - ld [$ff24], a ; Reduce the volume - call GBPalWhiteOutWithDelay3 - call ClearScreen - call UpdateSprites ; move sprites (?) - call LoadHpBarAndStatusTilePatterns - ld de, BattleHudTiles1 ; $6080 ; source - ld hl, $96d0 ; dest - ld bc, (BANK(BattleHudTiles1) << 8) + $03 ; bank bytes/8 - call CopyVideoDataDouble ; ·│ :L and halfarrow line end - ld de, BattleHudTiles2 ; $6098 - ld hl, $9780 - ld bc, (BANK(BattleHudTiles2) << 8) + $01 - call CopyVideoDataDouble ; │ - ld de, BattleHudTiles3 ; $60b0 - ld hl, $9760 - ld bc, (BANK(BattleHudTiles3) << 8) + $02 - call CopyVideoDataDouble ; ─┘ - ld de, PTile - ld hl, $9720 - ld bc,(BANK(PTile) << 8 | $01) - call CopyVideoDataDouble ; P (for PP), inline - ld a, [$ffd7] - push af - xor a - ld [$ffd7], a - FuncCoord 19,1 - ld hl, Coord - ld bc, $060a - call DrawLineBox ; Draws the box around name, HP and status - ld de, $fffa - add hl, de - ld [hl], $f2 ; . after No ("." is a different one) - dec hl - ld [hl], "№" - FuncCoord 19,9 - ld hl, Coord - ld bc, $0806 - call DrawLineBox ; Draws the box around types, ID No. and OT - FuncCoord 10,9 - ld hl, Coord - ld de, Type1Text - call PlaceString ; "TYPE1/" - FuncCoord 11,3 - ld hl, Coord - PREDEF DrawHPBarPredef ; predef $5f - ld hl, $cf25 - call Func_3df9 - ld b, $3 - call GoPAL_SET ; SGB palette - FuncCoord 16,6 - ld hl, Coord - ld de, $cf9c - call PrintStatusCondition - jr nz, .StatusWritten ; 0x129fc $9 - FuncCoord 16,6 - ld hl, Coord - ld de, OKText - call PlaceString ; "OK" -.StatusWritten - FuncCoord 9,6 - ld hl, Coord - ld de, StatusText - call PlaceString ; "STATUS/" - FuncCoord 14,2 - ld hl, Coord - call PrintLevel ; Pokémon level - ld a, [$d0b8] - ld [$d11e], a - ld [$d0b5], a - ld a, $3a - call Predef - FuncCoord 3,7 - ld hl, Coord - ld de, $d11e - ld bc, $8103 ; Zero-padded, 3 - call PrintNumber ; Pokémon no. - FuncCoord 11,10 - ld hl, Coord - ld a, $4b - call Predef ; Prints the type (?) - ld hl, NamePointers2 ; $6a9d - call .unk_12a7e - ld d, h - ld e, l - FuncCoord 9,1 - ld hl, Coord - call PlaceString ; Pokémon name - ld hl, OTPointers ; $6a95 - call .unk_12a7e - ld d, h - ld e, l - FuncCoord 12,16 - ld hl, Coord - call PlaceString ; OT - FuncCoord 12,14 - ld hl, Coord - ld de, $cfa4 - ld bc, $8205 ; 5 - call PrintNumber ; ID Number - ld d, $0 - call PrintStatsBox - call Delay3 - call GBPalNormal - FuncCoord 1, 0 ; $c3a1 - ld hl, Coord - call LoadFlippedFrontSpriteByMonIndex ; draw Pokémon picture - ld a, [$cf91] - call PlayCry ; play Pokémon cry - call WaitForTextScrollButtonPress ; wait for button - pop af - ld [$ffd7], a - ret -.unk_12a7e ; 0x12a7e ; I don't know what this does, iterates over pointers? - ld a, [$cc49] - add a - ld c, a - ld b, $0 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [$cc49] - cp $3 - ret z - ld a, [wWhichPokemon] - jp SkipFixedLengthTextEntries - -OTPointers: ; 12a95 (4:6a95) - dw W_PARTYMON1OT - dw W_ENEMYMON1OT - dw W_BOXMON1OT - dw W_DAYCAREMONOT - -NamePointers2: ; 12a9d (4:6a9d) - dw W_PARTYMON1NAME - dw W_ENEMYMON1NAME - dw W_BOXMON1NAME - dw W_DAYCAREMONNAME - -Type1Text: ; 12aa5 (4:6aa5) - db "TYPE1/", $4e - -Type2Text: ; 12aac (4:6aac) - db "TYPE2/", $4e - -IDNoText: ; 12ab3 (4:6ab3) - db $73, "№", "/", $4e - -OTText: ; 12ab7 (4:6ab7) - db "OT/", $4e, "@" - -StatusText: ; 12abc (4:6abc) - db "STATUS/@" - -OKText: ; 12ac4 (4:6ac4) - db "OK@" - -; Draws a line starting from hl high b and wide c -DrawLineBox ; 0x12ac7 - ld de, $0014 ; New line -.PrintVerticalLine - ld [hl], $78 ; │ - add hl, de - dec b - jr nz, .PrintVerticalLine ; 0x12ace $fa - ld [hl], $77 ; ┘ - dec hl -.PrintHorizLine - ld [hl], $76 ; ─ - dec hl - dec c - jr nz, .PrintHorizLine ; 0x12ad7 $fa - ld [hl], $6f ; ← (halfarrow ending) - ret - -PTile: ; 12adc (4:6adc) ; This is a single 1bpp "P" tile - INCBIN "gfx/p_tile.1bpp" - -PrintStatsBox: ; 12ae4 (4:6ae4) - ld a, d - and a ; a is 0 from the status screen - jr nz, .DifferentBox ; 0x12ae6 $12 - FuncCoord 0,8 - ld hl, Coord - ld b, $8 - ld c, $8 - call TextBoxBorder ; Draws the box - FuncCoord 1,9 ; Start printing stats from here - ld hl, Coord - ld bc, $0019 ; Number offset - jr .PrintStats ; 0x12af8 $10 -.DifferentBox - FuncCoord 9,2 - ld hl, Coord - ld b, $8 - ld c, $9 - call TextBoxBorder - FuncCoord 11, 3 ; $c3e7 - ld hl, Coord - ld bc, $0018 -.PrintStats - push bc - push hl - ld de, StatsText - call PlaceString - pop hl - pop bc - add hl, bc - ld de, $cfbc - ld bc, $0203 ; three digits - call PrintStat - ld de, $cfbe - call PrintStat - ld de, $cfc0 - call PrintStat - ld de, $cfc2 - jp PrintNumber -PrintStat - push hl - call PrintNumber - pop hl - ld de, $0028 - add hl, de - ret - -StatsText: ; 12b3a (4:6b3a) - db "ATTACK" - next "DEFENSE" - next "SPEED" - next "SPECIAL@" - -StatusScreen2: ; 12b57 (4:6b57) - ld a, [$ffd7] - push af - xor a - ld [$ffd7], a - ld [$ffba], a - ld bc, $0005 - ld hl, $d0dc - call FillMemory - ld hl, $cfa0 - ld de, $d0dc - ld bc, $0004 - call CopyData - ld hl, Func_39b87 - ld b, BANK(Func_39b87) - call Bankswitch - FuncCoord 9,2 - ld hl, Coord - ld bc, $050a - call ClearScreenArea ; Clear under name - FuncCoord 19, 3 ; $c3ef - ld hl, Coord - ld [hl], $78 - FuncCoord 0,8 - ld hl, Coord - ld b, $8 - ld c, $12 - call TextBoxBorder ; Draw move container - FuncCoord 2,9 - ld hl, Coord - ld de, $d0e1 - call PlaceString ; Print moves - ld a, [$cd6c] - inc a - ld c, a - ld a, $4 - sub c - ld b, a ; Number of moves ? - FuncCoord 11,10 - ld hl, Coord - ld de, $0028 - ld a, $72 - call Func_12ccb ; Print "PP" - ld a, b - and a - jr z, .InitPP ; 0x12bb3 $6 - ld c, a - ld a, "-" - call Func_12ccb ; Fill the rest with -- -.InitPP ; 12bbb - ld hl, $cfa0 - FuncCoord 14,10 - ld de, Coord - ld b, $0 -.PrintPP ; 12bc3 - ld a, [hli] - and a - jr z, .PPDone ; 0x12bc5 $4a - push bc - push hl - push de - ld hl, wCurrentMenuItem - ld a, [hl] - push af - ld a, b - ld [hl], a - push hl - ld hl, GetMaxPP - ld b, BANK(GetMaxPP) - call Bankswitch - pop hl - pop af - ld [hl], a - pop de - pop hl - push hl - ld bc, $0014 - add hl, bc - ld a, [hl] - and $3f - ld [$cd71], a - ld h, d - ld l, e - push hl - ld de, $cd71 - ld bc, $0102 - call PrintNumber - ld a, "/" - ld [hli], a - ld de, $d11e - ld bc, $0102 - call PrintNumber - pop hl - ld de, $0028 - add hl, de - ld d, h - ld e, l - pop hl - pop bc - inc b - ld a, b - cp $4 - jr nz, .PrintPP ; 0x12c0f $b2 -.PPDone - FuncCoord 9,3 - ld hl, Coord - ld de, EXPPointsText - call PlaceString - ld a, [$cfb9] ; level - push af - cp 100 - jr z, .Level100 ; 0x12c20 $4 - inc a - ld [$cfb9], a ; Increase temporarily if not 100 -.Level100 - FuncCoord 14,6 - ld hl, Coord - ld [hl], $70 ; 1-tile "to" - inc hl - inc hl - call PrintLevel - pop af - ld [$cfb9], a - ld de, $cfa6 - FuncCoord 12,4 - ld hl, Coord - ld bc, $0307 - call PrintNumber ; exp - call .asm_12c86 - ld de, $cfa6 - FuncCoord 7,6 - ld hl, Coord - ld bc, $0307 - call PrintNumber - FuncCoord 9,0 - ld hl, Coord - call Func_12cc3 - FuncCoord 9,1 - ld hl, Coord - call Func_12cc3 - ld a, [$d0b8] - ld [$d11e], a - call GetMonName - FuncCoord 9,1 - ld hl, Coord - call PlaceString - ld a, $1 - ld [$ffba], a - call Delay3 - call WaitForTextScrollButtonPress ; wait for button - pop af - ld [$ffd7], a - ld hl, $d72c - res 1, [hl] - ld a, $77 - ld [$ff24], a - call GBPalWhiteOut - jp ClearScreen -.asm_12c86 ; This does some magic with lvl/exp? - ld a, [$cfb9] ; Load level - cp $64 - jr z, .asm_12ca7 ; 0x12c8b $1a ; If 100 - inc a - ld d, a - ld hl, CalcExperience - ld b, BANK(CalcExperience) - call Bankswitch - ld hl, $cfa8 - ld a, [$ff98] - sub [hl] - ld [hld], a - ld a, [$ff97] - sbc [hl] - ld [hld], a - ld a, [$ff96] - sbc [hl] - ld [hld], a - ret -.asm_12ca7 - ld hl, $cfa6 - xor a - ld [hli], a - ld [hli], a - ld [hl], a - ret - -EXPPointsText: ; 12caf (4:6caf) - db "EXP POINTS", $4e - -LevelUpText: ; 12cba (4:6cba) - db "LEVEL UP@" - -Func_12cc3: ; 12cc3 (4:6cc3) - ld bc, $a - ld a, $7f - jp FillMemory - -Func_12ccb: ; 12ccb (4:6ccb) - ld [hli], a - ld [hld], a - add hl, de - dec c - jr nz, Func_12ccb - ret - -; [$D07D] = menu type / message ID -; if less than $F0, it is a menu type -; menu types: -; 00: normal pokemon menu (e.g. Start menu) -; 01: use healing item on pokemon menu -; 02: in-battle switch pokemon menu -; 03: learn TM/HM menu -; 04: swap pokemon positions menu -; 05: use evolution stone on pokemon menu -; otherwise, it is a message ID -; f0: poison healed -; f1: burn healed -; f2: freeze healed -; f3: sleep healed -; f4: paralysis healed -; f5: HP healed -; f6: health returned -; f7: revitalized -; f8: leveled up -DrawPartyMenu_: ; 12cd2 (4:6cd2) - xor a - ld [H_AUTOBGTRANSFERENABLED],a - call ClearScreen - call UpdateSprites ; move sprites - ld b, BANK(Func_71791) - ld hl, Func_71791 - call Bankswitch ; load pokemon icon graphics - -RedrawPartyMenu_: ; 12ce3 (4:6ce3) - ld a,[$D07D] - cp a,$04 - jp z,.printMessage - call ErasePartyMenuCursors - ld b, BANK(SendBlkPacket_PartyMenu) - ld hl, SendBlkPacket_PartyMenu - call Bankswitch ; loads some data to $cf2e - FuncCoord 3,0 - ld hl,Coord - ld de,W_PARTYMON1 - xor a - ld c,a - ld [$FF8C],a ; loop counter - ld [$CF2D],a -.loop - ld a,[de] - cp a,$FF ; reached the terminator? - jp z,.afterDrawingMonEntries - push bc - push de - push hl - ld a,c - push hl - ld hl,W_PARTYMON1NAME - call GetPartyMonName - pop hl - call PlaceString ; print the pokemon's name - ld b, BANK(Func_71868) - ld hl, Func_71868 - call Bankswitch ; place the appropriate pokemon icon - ld a,[$FF8C] ; loop counter - ld [wWhichPokemon],a - inc a - ld [$FF8C],a - call LoadMonData - pop hl - push hl - ld a,[$CC35] - and a ; is the player swapping pokemon positions? - jr z,.skipUnfilledRightArrow -; if the player is swapping pokemon positions - dec a - ld b,a - ld a,[wWhichPokemon] - cp b ; is the player swapping the current pokemon in the list? - jr nz,.skipUnfilledRightArrow -; the player is swapping the current pokemon in the list - dec hl - dec hl - dec hl - ld a,$EC ; unfilled right arrow menu cursor - ld [hli],a ; place the cursor - inc hl - inc hl -.skipUnfilledRightArrow - ld a,[$D07D] ; menu type - cp a,$03 - jr z,.teachMoveMenu - cp a,$05 - jr z,.evolutionStoneMenu - push hl - ld bc,14 ; 14 columns to the right - add hl,bc - ld de,$CF9C - call PrintStatusCondition - pop hl - push hl - ld bc,20 + 1 ; down 1 row and right 1 column - ld a,[$FFF6] - set 0,a - ld [$FFF6],a - add hl,bc - ld a,$60 - call Predef ; draw HP bar and prints current / max HP - ld a,[$FFF6] - res 0,a - ld [$FFF6],a - call Func_12ec7 ; color the HP bar (on SGB) - pop hl - jr .printLevel -.teachMoveMenu - push hl - ld a,$43 - call Predef ; check if the pokemon can learn the move - pop hl - ld de,.ableToLearnMoveText - ld a,c - and a - jr nz,.placeMoveLearnabilityString - ld de,.notAbleToLearnMoveText -.placeMoveLearnabilityString - ld bc,20 + 9 ; down 1 row and right 9 columns - push hl - add hl,bc - call PlaceString - pop hl -.printLevel - ld bc,10 ; move 10 columns to the right - add hl,bc - call PrintLevel - pop hl - pop de - inc de - ld bc,2 * 20 - add hl,bc - pop bc - inc c - jp .loop -.ableToLearnMoveText - db "ABLE@" -.notAbleToLearnMoveText - db "NOT ABLE@" -.evolutionStoneMenu - push hl - ld hl,EvosMovesPointerTable - ld b,0 - ld a,[$CF98] ; pokemon ID - dec a - add a - rl b - ld c,a - add hl,bc - ld de,$CD6D - ld a,BANK(EvosMovesPointerTable) - ld bc,2 - call FarCopyData - ld hl,$CD6D - ld a,[hli] - ld h,[hl] - ld l,a - ld de,$CD6D - ld a,BANK(EvosMovesPointerTable) - ld bc,13 - call FarCopyData - ld hl,$CD6D - ld de,.notAbleToEvolveText -; loop through the pokemon's evolution entries -.checkEvolutionsLoop - ld a,[hli] - and a ; reached terminator? - jr z,.placeEvolutionStoneString ; if so, place the "NOT ABLE" string - inc hl - inc hl - cp a,EV_ITEM - jr nz,.checkEvolutionsLoop -; if it's a stone evolution entry - dec hl - dec hl - ld b,[hl] - ld a,[$D156] ; evolution stone item ID - inc hl - inc hl - inc hl - cp b ; does the player's stone match this evolution entry's stone? - jr nz,.checkEvolutionsLoop -; if it does match - ld de,.ableToEvolveText -.placeEvolutionStoneString - ld bc,20 + 9 ; down 1 row and right 9 columns - pop hl - push hl - add hl,bc - call PlaceString - pop hl - jr .printLevel -.ableToEvolveText - db "ABLE@" -.notAbleToEvolveText - db "NOT ABLE@" -.afterDrawingMonEntries - ld b,$0A - call GoPAL_SET -.printMessage - ld hl,$D730 - ld a,[hl] - push af - push hl - set 6,[hl] ; turn off letter printing delay - ld a,[$D07D] ; message ID - cp a,$F0 - jr nc,.printItemUseMessage - add a - ld hl,PartyMenuMessagePointers - ld b,0 - ld c,a - add hl,bc - ld a,[hli] - ld h,[hl] - ld l,a - call PrintText -.done - pop hl - pop af - ld [hl],a - ld a,1 - ld [H_AUTOBGTRANSFERENABLED],a - call Delay3 - jp GBPalNormal -.printItemUseMessage - and a,$0F - ld hl,PartyMenuItemUseMessagePointers - add a - ld c,a - ld b,0 - add hl,bc - ld a,[hli] - ld h,[hl] - ld l,a - push hl - ld a,[$CF06] - ld hl,W_PARTYMON1NAME - call GetPartyMonName - pop hl - call PrintText - jr .done - -PartyMenuItemUseMessagePointers: ; 12e61 (4:6e61) - dw AntidoteText - dw BurnHealText - dw IceHealText - dw AwakeningText - dw ParlyzHealText - dw PotionText - dw FullHealText - dw ReviveText - dw RareCandyText - -PartyMenuMessagePointers: ; 12e73 (4:6e73) - dw PartyMenuNormalText - dw PartyMenuItemUseText - dw PartyMenuBattleText - dw PartyMenuUseTMText - dw PartyMenuSwapMonText - dw PartyMenuItemUseText - -PartyMenuNormalText: ; 12e7f (4:6e7f) - TX_FAR _PartyMenuNormalText - db "@" - -PartyMenuItemUseText: ; 12e84 (4:6e84) - TX_FAR _PartyMenuItemUseText - db "@" - -PartyMenuBattleText: ; 12e89 (4:6e89) - TX_FAR _PartyMenuBattleText - db "@" - -PartyMenuUseTMText: ; 12e8e (4:6e8e) - TX_FAR _PartyMenuUseTMText - db "@" - -PartyMenuSwapMonText: ; 12e93 (4:6e93) - TX_FAR _PartyMenuSwapMonText - db "@" - -PotionText: ; 12e98 (4:6e98) - TX_FAR _PotionText - db "@" - -AntidoteText: ; 12e9d (4:6e9d) - TX_FAR _AntidoteText - db "@" - -ParlyzHealText: ; 12ea2 (4:6ea2) - TX_FAR _ParlyzHealText - db "@" - -BurnHealText: ; 12ea7 (4:6ea7) - TX_FAR _BurnHealText - db "@" - -IceHealText: ; 12eac (4:6eac) - TX_FAR _IceHealText - db "@" - -AwakeningText: ; 12eb1 (4:6eb1) - TX_FAR _AwakeningText - db "@" - -FullHealText: ; 12eb6 (4:6eb6) - TX_FAR _FullHealText - db "@" - -ReviveText: ; 12ebb (4:6ebb) - TX_FAR _ReviveText - db "@" - -RareCandyText: ; 12ec0 (4:6ec0) - TX_FAR _RareCandyText - db $0B - db $06 - db "@" - -Func_12ec7: ; 12ec7 (4:6ec7) - ld hl, $cf1f - ld a, [$cf2d] - ld c, a - ld b, $0 - add hl, bc - call Func_3df9 - ld b, $fc - call GoPAL_SET - ld hl, $cf2d - inc [hl] - ret - -RedPicFront: ; 12ede (4:6ede) - INCBIN "pic/trainer/red.pic" -ShrinkPic1: ; 12fe8 (4:6fe8) - INCBIN "pic/trainer/shrink1.pic" -ShrinkPic2: ; 13042 (4:7042) - INCBIN "pic/trainer/shrink2.pic" - -Func_13074: ; 13074 (4:7074) - ld h, $c2 - ld a, [H_CURRENTSPRITEOFFSET] - add $8 - ld l, a - ld a, $7f - ld [hl], a - dec h - ld a, [H_CURRENTSPRITEOFFSET] - add $9 - ld l, a - ld a, [hld] - ld b, a - xor a - ld [hld], a - ld [hl], a - ld a, [H_CURRENTSPRITEOFFSET] - add $2 - ld l, a - ld a, [hl] - or b - ld [hld], a - ld a, $2 - ld [hl], a - ret - -StartMenu_Pokedex: ; 13095 (4:7095) - ld a,$29 - call Predef - call LoadScreenTilesFromBuffer2 ; restore saved screen - call Delay3 - call LoadGBPal - call UpdateSprites - jp RedisplayStartMenu - -StartMenu_Pokemon: ; 130a9 (4:70a9) - ld a,[W_NUMINPARTY] - and a - jp z,RedisplayStartMenu - xor a - ld [$cc35],a - ld [$d07d],a - ld [$cfcb],a - call DisplayPartyMenu - jr .checkIfPokemonChosen -.loop - xor a - ld [$cc35],a - ld [$d07d],a - call GoBackToPartyMenu -.checkIfPokemonChosen - jr nc,.chosePokemon -.exitMenu - call GBPalWhiteOutWithDelay3 - call Func_3dbe - call LoadGBPal - jp RedisplayStartMenu -.chosePokemon - call SaveScreenTilesToBuffer1 ; save screen - ld a,$04 - ld [$d125],a - call DisplayTextBoxID ; display pokemon menu options - ld hl,$cd3d - ld bc,$020c ; max menu item ID, top menu item Y - ld e,5 -.adjustMenuVariablesLoop - dec e - jr z,.storeMenuVariables - ld a,[hli] - and a - jr z,.storeMenuVariables - inc b - dec c - dec c - jr .adjustMenuVariablesLoop -.storeMenuVariables - ld hl,wTopMenuItemY - ld a,c - ld [hli],a ; top menu item Y - ld a,[$fff7] - ld [hli],a ; top menu item X - xor a - ld [hli],a ; current menu item ID - inc hl - ld a,b - ld [hli],a ; max menu item ID - ld a,%00000011 ; A button, B button - ld [hli],a ; menu watched keys - xor a - ld [hl],a - call HandleMenuInput - push af - call LoadScreenTilesFromBuffer1 ; restore saved screen - pop af - bit 1,a ; was the B button pressed? - jp nz,.loop -; if the B button wasn't pressed - ld a,[wMaxMenuItem] - ld b,a - ld a,[wCurrentMenuItem] ; menu selection - cp b - jp z,.exitMenu ; if the player chose Cancel - dec b - cp b - jr z,.choseSwitch - dec b - cp b - jp z,.choseStats - ld c,a - ld b,0 - ld hl,$cd3d - add hl,bc - jp .choseOutOfBattleMove -.choseSwitch - ld a,[W_NUMINPARTY] - cp a,2 ; is there more than one pokemon in the party? - jp c,StartMenu_Pokemon ; if not, no switching - call Func_13653 - ld a,$04 ; swap pokemon positions menu - ld [$d07d],a - call GoBackToPartyMenu - jp .checkIfPokemonChosen -.choseStats - call CleanLCD_OAM - xor a - ld [$cc49],a - ld a,$36 - call Predef - ld a,$37 - call Predef - call ReloadMapData - jp StartMenu_Pokemon -.choseOutOfBattleMove - push hl - ld a,[wWhichPokemon] - ld hl,W_PARTYMON1NAME - call GetPartyMonName - pop hl - ld a,[hl] - dec a - add a - ld b,0 - ld c,a - ld hl,.outOfBattleMovePointers - add hl,bc - ld a,[hli] - ld h,[hl] - ld l,a - ld a,[W_OBTAINEDBADGES] ; badges obtained - jp [hl] -.outOfBattleMovePointers - dw .cut - dw .fly - dw .surf - dw .surf - dw .strength - dw .flash - dw .dig - dw .teleport - dw .softboiled -.fly - bit 2,a ; does the player have the Thunder Badge? - jp z,.newBadgeRequired - call CheckIfInOutsideMap - jr z,.canFly - ld a,[wWhichPokemon] - ld hl,W_PARTYMON1NAME - call GetPartyMonName - ld hl,.cannotFlyHereText - call PrintText - jp .loop -.canFly - call ChooseFlyDestination - ld a,[$d732] - bit 3,a ; did the player decide to fly? - jp nz,.goBackToMap - call LoadFontTilePatterns - ld hl,$d72e - set 1,[hl] - jp StartMenu_Pokemon -.cut - bit 1,a ; does the player have the Cascade Badge? - jp z,.newBadgeRequired - ld a,$3c - call Predef - ld a,[$cd6a] - and a - jp z,.loop - jp CloseTextDisplay -.surf - bit 4,a ; does the player have the Soul Badge? - jp z,.newBadgeRequired - ld b, BANK(Func_cdc0) - ld hl, Func_cdc0 - call Bankswitch - ld hl,$d728 - bit 1,[hl] - res 1,[hl] - jp z,.loop - ld a,SURFBOARD - ld [$cf91],a - ld [$d152],a - call UseItem - ld a,[$cd6a] - and a - jp z,.loop - call GBPalWhiteOutWithDelay3 - jp .goBackToMap -.strength - bit 3,a ; does the player have the Rainbow Badge? - jp z,.newBadgeRequired - ld a,$5b - call Predef - call GBPalWhiteOutWithDelay3 - jp .goBackToMap -.flash - bit 0,a ; does the player have the Boulder Badge? - jp z,.newBadgeRequired - xor a - ld [$d35d],a - ld hl,.flashLightsAreaText - call PrintText - call GBPalWhiteOutWithDelay3 - jp .goBackToMap -.flashLightsAreaText - TX_FAR _FlashLightsAreaText - db "@" -.dig - ld a,ESCAPE_ROPE - ld [$cf91],a - ld [$d152],a - call UseItem - ld a,[$cd6a] - and a - jp z,.loop - call GBPalWhiteOutWithDelay3 - jp .goBackToMap -.teleport - call CheckIfInOutsideMap - jr z,.canTeleport - ld a,[wWhichPokemon] - ld hl,W_PARTYMON1NAME - call GetPartyMonName - ld hl,.cannotUseTeleportNowText - call PrintText - jp .loop -.canTeleport - ld hl,.warpToLastPokemonCenterText - call PrintText - ld hl,$d732 - set 3,[hl] - set 6,[hl] - ld hl,$d72e - set 1,[hl] - res 4,[hl] - ld c,60 - call DelayFrames - call GBPalWhiteOutWithDelay3 ; zero all three palettes and wait 3 V-blanks - jp .goBackToMap -.warpToLastPokemonCenterText - TX_FAR _WarpToLastPokemonCenterText - db "@" -.cannotUseTeleportNowText - TX_FAR _CannotUseTeleportNowText - db "@" -.cannotFlyHereText - TX_FAR _CannotFlyHereText - db "@" -.softboiled - ld hl,W_PARTYMON1_MAXHP - ld a,[wWhichPokemon] - ld bc,44 - call AddNTimes - ld a,[hli] - ld [H_DIVIDEND],a - ld a,[hl] - ld [H_DIVIDEND + 1],a - ld a,5 - ld [H_DIVISOR],a - ld b,2 ; number of bytes - call Divide - ld bc,-33 - add hl,bc - ld a,[hld] - ld b,a - ld a,[H_QUOTIENT + 3] - sub b - ld b,[hl] - ld a,[H_QUOTIENT + 2] - sbc b - jp nc,.notHealthyEnough - ld a,[$cc2b] - push af - ld a,POTION - ld [$cf91],a - ld [$d152],a - call UseItem - pop af - ld [$cc2b],a - jp .loop -.notHealthyEnough ; if current HP is less than 1/5 of max HP - ld hl,.notHealthyEnoughText - call PrintText - jp .loop -.notHealthyEnoughText - TX_FAR _NotHealthyEnoughText - db "@" -.goBackToMap - call Func_3dbe - jp CloseTextDisplay -.newBadgeRequired - ld hl,.newBadgeRequiredText - call PrintText - jp .loop -.newBadgeRequiredText - TX_FAR _NewBadgeRequiredText - db "@" - -; writes a blank tile to all possible menu cursor positions on the party menu -ErasePartyMenuCursors: ; 132ed (4:72ed) - FuncCoord 0,1 - ld hl,Coord - ld bc,2 * 20 ; menu cursor positions are 2 rows apart - ld a,6 ; 6 menu cursor positions -.loop - ld [hl]," " - add hl,bc - dec a - jr nz,.loop - ret - -ItemMenuLoop: ; 132fc (4:72fc) - call LoadScreenTilesFromBuffer2DisableBGTransfer ; restore saved screen - call GoPAL_SET_CF1C - -StartMenu_Item: ; 13302 (4:7302) - ld a,[W_ISLINKBATTLE] - dec a - jr nz,.notInLinkBattle - ld hl,CannotUseItemsHereText - call PrintText - jr .exitMenu -.notInLinkBattle - ld bc,wNumBagItems - ld hl,$cf8b - ld a,c - ld [hli],a - ld [hl],b ; store item bag pointer at $cf8b (for DisplayListMenuID) - xor a - ld [$cf93],a - ld a,ITEMLISTMENU - ld [wListMenuID],a - ld a,[$cc2c] - ld [wCurrentMenuItem],a - call DisplayListMenuID - ld a,[wCurrentMenuItem] - ld [$cc2c],a - jr nc,.choseItem -.exitMenu - call LoadScreenTilesFromBuffer2 ; restore saved screen - call LoadTextBoxTilePatterns - call UpdateSprites ; move sprites - jp RedisplayStartMenu -.choseItem -; erase menu cursor (blank each tile in front of an item name) - ld a," " - FuncCoord 5,4 - ld [Coord],a - FuncCoord 5,6 - ld [Coord],a - FuncCoord 5,8 - ld [Coord],a - FuncCoord 5,10 - ld [Coord],a - call PlaceUnfilledArrowMenuCursor - xor a - ld [$cc35],a - ld a,[$cf91] - cp a,BICYCLE - jp z,.useOrTossItem -.notBicycle1 - ld a,$06 ; use/toss menu - ld [$d125],a - call DisplayTextBoxID - ld hl,wTopMenuItemY - ld a,11 - ld [hli],a ; top menu item Y - ld a,14 - ld [hli],a ; top menu item X - xor a - ld [hli],a ; current menu item ID - inc hl - inc a ; a = 1 - ld [hli],a ; max menu item ID - ld a,%00000011 ; A button, B button - ld [hli],a ; menu watched keys - xor a - ld [hl],a ; old menu item id - call HandleMenuInput - call PlaceUnfilledArrowMenuCursor - bit 1,a ; was the B button pressed? - jr z,.useOrTossItem - jp ItemMenuLoop -.useOrTossItem ; if the player made the choice to use or toss the item - ld a,[$cf91] - ld [$d11e],a - call GetItemName - call CopyStringToCF4B ; copy name to $cf4b - ld a,[$cf91] - cp a,BICYCLE - jr nz,.notBicycle2 - ld a,[$d732] - bit 5,a - jr z,.useItem_closeMenu - ld hl,CannotGetOffHereText - call PrintText - jp ItemMenuLoop -.notBicycle2 - ld a,[wCurrentMenuItem] - and a - jr nz,.tossItem -.useItem - ld [$d152],a - ld a,[$cf91] - cp a,HM_01 - jr nc,.useItem_partyMenu - ld hl,UsableItems_CloseMenu - ld de,1 - call IsInArray - jr c,.useItem_closeMenu - ld a,[$cf91] - ld hl,UsableItems_PartyMenu - ld de,1 - call IsInArray - jr c,.useItem_partyMenu - call UseItem - jp ItemMenuLoop -.useItem_closeMenu - xor a - ld [$d152],a - call UseItem - ld a,[$cd6a] - and a - jp z,ItemMenuLoop - jp CloseStartMenu -.useItem_partyMenu - ld a,[$cfcb] - push af - call UseItem - ld a,[$cd6a] - cp a,$02 - jp z,.partyMenuNotDisplayed - call GBPalWhiteOutWithDelay3 - call Func_3dbe - pop af - ld [$cfcb],a - jp StartMenu_Item -.partyMenuNotDisplayed - pop af - ld [$cfcb],a - jp ItemMenuLoop -.tossItem - call IsKeyItem - ld a,[$d124] - and a - jr nz,.skipAskingQuantity - ld a,[$cf91] - call IsItemHM - jr c,.skipAskingQuantity - call DisplayChooseQuantityMenu - inc a - jr z,.tossZeroItems -.skipAskingQuantity - ld hl,wNumBagItems - call TossItem -.tossZeroItems - jp ItemMenuLoop - -CannotUseItemsHereText: ; 1342a (4:742a) - TX_FAR _CannotUseItemsHereText - db "@" - -CannotGetOffHereText: ; 1342f (4:742f) - TX_FAR _CannotGetOffHereText - db "@" - -; items which bring up the party menu when used -UsableItems_PartyMenu: ; 13434 (4:7434) - db MOON_STONE - db ANTIDOTE - db BURN_HEAL - db ICE_HEAL - db AWAKENING - db PARLYZ_HEAL - db FULL_RESTORE - db MAX_POTION - db HYPER_POTION - db SUPER_POTION - db POTION - db FIRE_STONE - db THUNDER_STONE - db WATER_STONE - db HP_UP - db PROTEIN - db IRON - db CARBOS - db CALCIUM - db RARE_CANDY - db LEAF_STONE - db FULL_HEAL - db REVIVE - db MAX_REVIVE - db FRESH_WATER - db SODA_POP - db LEMONADE - db X_ATTACK - db X_DEFEND - db X_SPEED - db X_SPECIAL - db PP_UP - db ETHER - db MAX_ETHER - db ELIXER - db MAX_ELIXER - db $ff - -; items which close the item menu when used -UsableItems_CloseMenu: ; 13459 (4:7459) - db ESCAPE_ROPE - db ITEMFINDER - db POKE_FLUTE - db OLD_ROD - db GOOD_ROD - db SUPER_ROD - db $ff - -StartMenu_TrainerInfo: ; 13460 (4:7460) - call GBPalWhiteOut - call ClearScreen - call UpdateSprites ; move sprites - ld a,[$ffd7] - push af - xor a - ld [$ffd7],a - call DrawTrainerInfo - ld a,$2e - call Predef ; draw badges - ld b,$0d - call GoPAL_SET - call GBPalNormal - call WaitForTextScrollButtonPress ; wait for button press - call GBPalWhiteOut - call LoadFontTilePatterns - call LoadScreenTilesFromBuffer2 ; restore saved screen - call GoPAL_SET_CF1C - call ReloadMapData - call LoadGBPal - pop af - ld [$ffd7],a - jp RedisplayStartMenu - -; loads tile patterns and draws everything except for gym leader faces / badges -DrawTrainerInfo: ; 1349a (4:749a) - ld de,RedPicFront - ld bc,(BANK(RedPicFront) << 8) | $01 - ld a,$3b - call Predef - call DisableLCD - FuncCoord 0,2 - ld hl,Coord - ld a," " - call TrainerInfo_DrawVerticalLine - FuncCoord 1,2 - ld hl,Coord - call TrainerInfo_DrawVerticalLine - ld hl,$9070 - ld de,$9000 - ld bc,$01c0 - call CopyData - ld hl,TrainerInfoTextBoxTileGraphics ; $7b98 ; trainer info text box tile patterns - ld de,$9770 - ld bc,$0080 - push bc - call TrainerInfo_FarCopyData - ld hl,BlankLeaderNames ; $7c28 - ld de,$9600 - ld bc,$0170 - call TrainerInfo_FarCopyData - pop bc - ld hl,BadgeNumbersTileGraphics ; $7d98 ; badge number tile patterns - ld de,$8d80 - call TrainerInfo_FarCopyData - ld hl,GymLeaderFaceAndBadgeTileGraphics ; $6a9e ; gym leader face and badge tile patterns - ld de,$9200 - ld bc,$0400 - ld a,$03 - call FarCopyData2 - ld hl,TextBoxGraphics ; $6288 - ld de,$00d0 - add hl,de ; hl = colon tile pattern - ld de,$8d60 - ld bc,$0010 - ld a,$04 - push bc - call FarCopyData2 - pop bc - ld hl,TrainerInfoTextBoxTileGraphics + $80 ; $7c18 ; background tile pattern - ld de,$8d70 - call TrainerInfo_FarCopyData - call EnableLCD - ld hl,$cd3d - ld a,18 + 1 - ld [hli],a - dec a - ld [hli],a - ld [hl],1 - FuncCoord 0,0 - ld hl,Coord - call TrainerInfo_DrawTextBox - ld hl,$cd3d - ld a,16 + 1 - ld [hli],a - dec a - ld [hli],a - ld [hl],3 - FuncCoord 1,10 - ld hl,Coord - call TrainerInfo_DrawTextBox - FuncCoord 0,10 - ld hl,Coord - ld a,$d7 - call TrainerInfo_DrawVerticalLine - FuncCoord 19,10 - ld hl,Coord - call TrainerInfo_DrawVerticalLine - FuncCoord 6,9 - ld hl,Coord - ld de,TrainerInfo_BadgesText - call PlaceString - FuncCoord 2,2 - ld hl,Coord - ld de,TrainerInfo_NameMoneyTimeText - call PlaceString - FuncCoord 7,2 - ld hl,Coord - ld de,W_PLAYERNAME - call PlaceString - FuncCoord 8,4 - ld hl,Coord - ld de,wPlayerMoney - ld c,$e3 - call PrintBCDNumber - FuncCoord 9,6 - ld hl,Coord - ld de,$da41 ; hours - ld bc,$4103 - call PrintNumber - ld [hl],$d6 ; colon tile ID - inc hl - ld de,$da43 ; minutes - ld bc,$8102 - jp PrintNumber - -TrainerInfo_FarCopyData: ; 1357f (4:757f) - ld a,$0b - jp FarCopyData2 - -TrainerInfo_NameMoneyTimeText: ; 13584 (4:7584) - db "NAME/" - next "MONEY/" - next "TIME/@" - -; $76 is a circle tile -TrainerInfo_BadgesText: ; 13597 (4:7597) - db $76,"BADGES",$76,"@" - -; draws a text box on the trainer info screen -; height is always 6 -; INPUT: -; hl = destination address -; [$cd3d] = width + 1 -; [$cd3e] = width -; [$cd3f] = distance from the end of a text box row to the start of the next -TrainerInfo_DrawTextBox: ; 135a0 (4:75a0) - ld a,$79 ; upper left corner tile ID - ld de,$7a7b ; top edge and upper right corner tile ID's - call TrainerInfo_DrawHorizontalEdge ; draw top edge - call TrainerInfo_NextTextBoxRow - ld a,[$cd3d] ; width of the text box plus one - ld e,a - ld d,0 - ld c,6 ; height of the text box -.loop - ld [hl],$7c ; left edge tile ID - add hl,de - ld [hl],$78 ; right edge tile ID - call TrainerInfo_NextTextBoxRow - dec c - jr nz,.loop - ld a,$7d ; lower left corner tile ID - ld de,$777e ; bottom edge and lower right corner tile ID's - -TrainerInfo_DrawHorizontalEdge: ; 135c3 (4:75c3) - ld [hli],a ; place left corner tile - ld a,[$cd3e] ; width of the text box - ld c,a - ld a,d -.loop - ld [hli],a ; place edge tile - dec c - jr nz,.loop - ld a,e - ld [hl],a ; place right corner tile - ret - -TrainerInfo_NextTextBoxRow: ; 135d0 (4:75d0) - ld a,[$cd3f] ; distance to the start of the next row -.loop - inc hl - dec a - jr nz,.loop - ret - -; draws a vertical line -; INPUT: -; hl = address of top tile in the line -; a = tile ID -TrainerInfo_DrawVerticalLine: ; 135d8 (4:75d8) - ld de,20 - ld c,8 -.loop - ld [hl],a - add hl,de - dec c - jr nz,.loop - ret - -StartMenu_SaveReset: ; 135e3 (4:75e3) - ld a,[$d72e] - bit 6,a ; is the player using the link feature? - jp nz,InitGame - ld a,$3f - call Predef ; save the game - call LoadScreenTilesFromBuffer2 ; restore saved screen - jp HoldTextDisplayOpen - -StartMenu_Option: ; 135f6 (4:75f6) - xor a - ld [H_AUTOBGTRANSFERENABLED],a - call ClearScreen - call UpdateSprites - ld hl,DisplayOptionMenu - ld b,BANK(DisplayOptionMenu) - call Bankswitch - call LoadScreenTilesFromBuffer2 ; restore saved screen - call LoadTextBoxTilePatterns - call UpdateSprites - jp RedisplayStartMenu - -Func_13613: ; 13613 (4:7613) - call Func_13653 - ld a, [wWhichTrade] ; $cd3d - call Func_13625 - ld a, [wCurrentMenuItem] ; $cc26 - call Func_13625 - jp RedrawPartyMenu_ - -Func_13625: ; 13625 (4:7625) - push af - ld hl, wTileMap - ld bc, $28 - call AddNTimes - ld c, $28 - ld a, $7f -.asm_13633 - ld [hli], a - dec c - jr nz, .asm_13633 - pop af - ld hl, wOAMBuffer - ld bc, $10 - call AddNTimes - ld de, $4 - ld c, e -.asm_13645 - ld [hl], $a0 - add hl, de - dec c - jr nz, .asm_13645 - call WaitForSoundToFinish - ld a, (SFX_02_58 - SFX_Headers_02) / 3 - jp PlaySound - -Func_13653: ; 13653 (4:7653) - ld a, [$cc35] - and a - jr nz, .asm_13661 - ld a, [wWhichPokemon] ; $cf92 - inc a - ld [$cc35], a - ret -.asm_13661 - xor a - ld [$d07d], a - ld a, [$cc35] - dec a - ld b, a - ld a, [wCurrentMenuItem] ; $cc26 - ld [wWhichTrade], a ; $cd3d - cp b - jr nz, .asm_1367b - xor a - ld [$cc35], a - ld [$d07d], a - ret -.asm_1367b - ld a, b - ld [$cc35], a - push hl - push de - ld hl, W_PARTYMON1 ; $d164 - ld d, h - ld e, l - ld a, [wCurrentMenuItem] ; $cc26 - add l - ld l, a - jr nc, .asm_1368e - inc h -.asm_1368e - ld a, [$cc35] - add e - ld e, a - jr nc, .asm_13696 - inc d -.asm_13696 - ld a, [hl] - ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) - ld a, [de] - ld [hl], a - ld a, [H_DIVIDEND] ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) - ld [de], a - ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) - ld bc, $2c - ld a, [wCurrentMenuItem] ; $cc26 - call AddNTimes - push hl - ld de, $cc97 - ld bc, $2c - call CopyData - ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) - ld bc, $2c - ld a, [$cc35] - call AddNTimes - pop de - push hl - ld bc, $2c - call CopyData - pop de - ld hl, $cc97 - ld bc, $2c - call CopyData - ld hl, W_PARTYMON1OT ; $d273 - ld a, [wCurrentMenuItem] ; $cc26 - call SkipFixedLengthTextEntries - push hl - ld de, $cc97 - ld bc, $b - call CopyData - ld hl, W_PARTYMON1OT ; $d273 - ld a, [$cc35] - call SkipFixedLengthTextEntries - pop de - push hl - ld bc, $b - call CopyData - pop de - ld hl, $cc97 - ld bc, $b - call CopyData - ld hl, W_PARTYMON1NAME ; $d2b5 - ld a, [wCurrentMenuItem] ; $cc26 - call SkipFixedLengthTextEntries - push hl - ld de, $cc97 - ld bc, $b - call CopyData - ld hl, W_PARTYMON1NAME ; $d2b5 - ld a, [$cc35] - call SkipFixedLengthTextEntries - pop de - push hl - ld bc, $b - call CopyData - pop de - ld hl, $cc97 - ld bc, $b - call CopyData - ld a, [$cc35] - ld [wWhichTrade], a ; $cd3d - xor a - ld [$cc35], a - ld [$d07d], a - pop de - pop hl - ret - -; tests if mon [$cf91] can learn move [$d0e0] -TestMonMoveCompatibility: ; 1373e (4:773e) - ld a, [$cf91] - ld [$d0b5], a - call GetMonHeader - ld hl, W_MONHLEARNSET - push hl - ld a, [$d0e0] - ld b, a - ld c, $0 - ld hl, TechnicalMachines -.findTMloop - ld a, [hli] - cp b - jr z, .TMfoundLoop - inc c - jr .findTMloop -.TMfoundLoop - pop hl - ld b, $2 ; read corresponding bit from TM compatibility array - ld a, $10 - jp Predef ; indirect jump to HandleBitArray (f666 (3:7666)) - -; converts TM/HM number in $d11e into move number -; HMs start at 51 -TMToMove: ; 13763 (4:7763) - ld a, [$d11e] - dec a - ld hl, TechnicalMachines - ld b, $0 - ld c, a - add hl, bc - ld a, [hl] - ld [$d11e], a - ret - -TechnicalMachines: ; 13773 (4:7773) - db MEGA_PUNCH - db RAZOR_WIND - db SWORDS_DANCE - db WHIRLWIND - db MEGA_KICK - db TOXIC - db HORN_DRILL - db BODY_SLAM - db TAKE_DOWN - db DOUBLE_EDGE - db BUBBLEBEAM - db WATER_GUN - db ICE_BEAM - db BLIZZARD - db HYPER_BEAM - db PAY_DAY - db SUBMISSION - db COUNTER - db SEISMIC_TOSS - db RAGE - db MEGA_DRAIN - db SOLARBEAM - db DRAGON_RAGE - db THUNDERBOLT - db THUNDER - db EARTHQUAKE - db FISSURE - db DIG - db PSYCHIC_M - db TELEPORT - db MIMIC - db DOUBLE_TEAM - db REFLECT - db BIDE - db METRONOME - db SELFDESTRUCT - db EGG_BOMB - db FIRE_BLAST - db SWIFT - db SKULL_BASH - db SOFTBOILED - db DREAM_EATER - db SKY_ATTACK - db REST - db THUNDER_WAVE - db PSYWAVE - db EXPLOSION - db ROCK_SLIDE - db TRI_ATTACK - db SUBSTITUTE - db CUT - db FLY - db SURF - db STRENGTH - db FLASH - -Func_137aa: ; 137aa (4:77aa) - ld a, [W_ISLINKBATTLE] ; $d12b - cp $4 - jr nz, .asm_137eb - ld a, [W_ENEMYMONNUMBER] ; $cfe8 - ld hl, $d8a8 - ld bc, $2c - call AddNTimes - ld a, [W_ENEMYMONSTATUS] ; $cfe9 - ld [hl], a - call ClearScreen - ld hl, Func_372d6 - ld b, BANK(Func_372d6) - call Bankswitch - ld a, [$cf0b] - cp $1 - ld de, YouWinText - jr c, .asm_137de - ld de, YouLoseText - jr z, .asm_137de - ld de, DrawText -.asm_137de - FuncCoord 6, 8 ; $c446 - ld hl, Coord - call PlaceString - ld c, $c8 - call DelayFrames - jr .asm_1380a -.asm_137eb - ld a, [$cf0b] - and a - jr nz, .asm_13813 - ld hl, $cce5 - ld a, [hli] - or [hl] - inc hl - or [hl] - jr z, .asm_1380a - ld de, wPlayerMoney + 2 ; $d349 - ld c, $3 - ld a, $b - call Predef ; indirect jump to Func_f81d (f81d (3:781d)) - ld hl, PickUpPayDayMoneyText - call PrintText -.asm_1380a - xor a - ld [$ccd4], a - ld a, $2a - call Predef ; indirect jump to Func_3ad1c (3ad1c (e:6d1c)) -.asm_13813 - xor a - ld [$d083], a - ld [$c02a], a - ld [W_ISINBATTLE], a ; $d057 - ld [W_BATTLETYPE], a ; $d05a - ld [W_MOVEMISSED], a ; $d05f - ld [W_CUROPPONENT], a ; $d059 - ld [$d11f], a - ld [$d120], a - ld [$d078], a - ld hl, $cc2b - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld [wListScrollOffset], a ; $cc36 - ld hl, $d060 - ld b, $18 -.asm_1383e - ld [hli], a - dec b - jr nz, .asm_1383e - ld hl, $d72c - set 0, [hl] - call WaitForSoundToFinish - call GBPalWhiteOut - ld a, $ff - ld [$d42f], a - ret - -YouWinText: ; 13853 (4:7853) - db "YOU WIN@" - -YouLoseText: ; 1385b (4:785b) - db "YOU LOSE@" - -DrawText: ; 13864 (4:7864) - db " DRAW@" - -PickUpPayDayMoneyText: ; 1386b (4:786b) - TX_FAR _PickUpPayDayMoneyText - db "@" - -Func_13870: ; 13870 (4:7870) - ld a, [$cc57] - and a - ret nz - ld a, [$d736] - and a - ret nz - ld hl, Func_c49d - ld b, BANK(Func_c49d) - call Bankswitch - jr nc, .asm_13888 -.asm_13884 - ld a, $1 - and a - ret -.asm_13888 - ld hl, Func_128d8 - ld b, BANK(Func_128d8) - call Bankswitch - jr z, .asm_13884 - ld a, [$d0db] - and a - jr z, .asm_1389e - dec a - jr z, .asm_13905 - ld [$d0db], a -.asm_1389e - FuncCoord 9, 9 ; $c45d - ld hl, Coord - ld c, [hl] - ld a, [W_GRASSTILE] - cp c - ld a, [W_GRASSRATE] ; $d887 - jr z, .asm_138c4 - ld a, $14 - cp c - ld a, [W_WATERRATE] ; $d8a4 - jr z, .asm_138c4 - ld a, [W_CURMAP] ; $d35e - cp REDS_HOUSE_1F - jr c, .asm_13912 - ld a, [W_CURMAPTILESET] ; $d367 - cp FOREST ; Viridian Forest/Safari Zone - jr z, .asm_13912 - ld a, [W_GRASSRATE] ; $d887 -.asm_138c4 - ld b, a - ld a, [H_RAND1] ; $ffd3 - cp b - jr nc, .asm_13912 - ld a, [H_RAND2] ; $ffd4 - ld b, a - ld hl, WildMonEncounterSlotChances ; $7918 -.asm_138d0 - ld a, [hli] - cp b - jr nc, .asm_138d7 - inc hl - jr .asm_138d0 -.asm_138d7 - ld c, [hl] - ld hl, W_GRASSMONS ; $d888 - FuncCoord 8, 9 ; $c45c - ld a, [Coord] - cp $14 - jr nz, .asm_138e5 - ld hl, W_WATERMONS ; $d8a5 (aliases: W_ENEMYMON1HP) -.asm_138e5 - ld b, $0 - add hl, bc - ld a, [hli] - ld [W_CURENEMYLVL], a ; $d127 - ld a, [hl] - ld [$cf91], a - ld [W_ENEMYMONID], a - ld a, [$d0db] - and a - jr z, .asm_13916 - ld a, [W_PARTYMON1_LEVEL] ; $d18c - ld b, a - ld a, [W_CURENEMYLVL] ; $d127 - cp b - jr c, .asm_13912 - jr .asm_13916 -.asm_13905 - ld [$d0db], a - ld a, $d2 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call EnableAutoTextBoxDrawing - call DisplayTextID -.asm_13912 - ld a, $1 - and a - ret -.asm_13916 - xor a - ret - -WildMonEncounterSlotChances: ; 13918 (4:7918) -; There are 10 slots for wild pokemon, and this is the table that defines how common each of -; those 10 slots is. A random number is generated and then the first byte of each pair in this -; table is compared against that random number. If the random number is less than or equal -; to the first byte, then that slot is chosen. The second byte is double the slot number. - db $32, $00 ; 51/256 = 19.9% chance of slot 0 - db $65, $02 ; 51/256 = 19.9% chance of slot 1 - db $8C, $04 ; 39/256 = 15.2% chance of slot 2 - db $A5, $06 ; 25/256 = 9.8% chance of slot 3 - db $BE, $08 ; 25/256 = 9.8% chance of slot 4 - db $D7, $0A ; 25/256 = 9.8% chance of slot 5 - db $E4, $0C ; 13/256 = 5.1% chance of slot 6 - db $F1, $0E ; 13/256 = 5.1% chance of slot 7 - db $FC, $10 ; 11/256 = 4.3% chance of slot 8 - db $FF, $12 ; 3/256 = 1.2% chance of slot 9 - -_RecoilEffect: ; 1392c (4:792c) - ld a, [H_WHOSETURN] ; $fff3 - and a - ld a, [W_PLAYERMOVENUM] ; $cfd2 - ld hl, W_PLAYERMONMAXHP ; $d023 - jr z, .asm_1393d - ld a, [W_ENEMYMOVENUM] ; $cfcc - ld hl, W_ENEMYMONMAXHP ; $cff4 -.asm_1393d - ld d, a - ld a, [W_DAMAGE] ; $d0d7 - ld b, a - ld a, [$d0d8] - ld c, a - srl b - rr c - ld a, d - cp STRUGGLE - jr z, .asm_13953 - srl b - rr c -.asm_13953 - ld a, b - or c - jr nz, .asm_13958 - inc c -.asm_13958 - ld a, [hli] - ld [wHPBarMaxHP+1], a - ld a, [hl] - ld [wHPBarMaxHP], a - push bc - ld bc, $fff2 - add hl, bc - pop bc - ld a, [hl] - ld [wHPBarOldHP], a - sub c - ld [hld], a - ld [wHPBarNewHP], a - ld a, [hl] - ld [wHPBarOldHP+1], a - sbc b - ld [hl], a - ld [wHPBarNewHP+1], a - jr nc, .asm_13982 - xor a - ld [hli], a - ld [hl], a - ld hl, wHPBarNewHP - ld [hli], a - ld [hl], a -.asm_13982 - FuncCoord 10, 9 ; $c45e - ld hl, Coord - ld a, [H_WHOSETURN] ; $fff3 - and a - ld a, $1 - jr z, .asm_13990 - FuncCoord 2, 2 ; $c3ca - ld hl, Coord - xor a -.asm_13990 - ld [wListMenuID], a ; $cf94 - ld a, $48 - call Predef ; indirect jump to UpdateHPBar (fa1d (3:7a1d)) - ld hl, RecoilText - jp PrintText - -RecoilText: ; 1399e (4:799e) - TX_FAR _RecoilText - db "@" - -_ConversionEffect: ; 139a3 (4:79a3) - ld hl, W_ENEMYMONTYPE1 - ld de, W_PLAYERMONTYPE1 - ld a, [H_WHOSETURN] - and a - ld a, [W_ENEMYBATTSTATUS1] - jr z, .asm_139b8 - push hl - ld h, d - ld l, e - pop de - ld a, [W_PLAYERBATTSTATUS1] - -.asm_139b8 - bit 6, a - jr nz, Func_139d2 - ld a, [hli] - ld [de], a - inc de - ld a, [hl] - ld [de], a - ld hl, Func_3fba8 - call Func_139d5 - ld hl, ConversionText - jp PrintText - -ConversionText: ; 139cd (4:79cd) - TX_FAR _ConversionText - db "@" - -Func_139d2: ; 139d2 (4:79d2) - ld hl, PrintItFailedText -Func_139d5: ; 139d5 (4:79d5) - ld b, BANK(PrintItFailedText) - jp Bankswitch - -_HazeEffect: ; 139da (4:79da) - ld a, $7 - ld hl, wPlayerMonAttackMod - call Func_13a43 - ld hl, wEnemyMonAttackMod - call Func_13a43 - ld hl, $cd12 - ld de, W_PLAYERMONATK - call Func_13a4a - ld hl, $cd26 - ld de, W_ENEMYMONATTACK - call Func_13a4a - ld hl, W_ENEMYMONSTATUS - ld de, wEnemySelectedMove - ld a, [H_WHOSETURN] - and a - jr z, .asm_13a09 - ld hl, W_PLAYERMONSTATUS - dec de - -.asm_13a09 - ld a, [hl] - ld [hl], $0 - and $27 - jr z, .asm_13a13 - ld a, $ff - ld [de], a - -.asm_13a13 - xor a - ld [W_PLAYERDISABLEDMOVE], a - ld [W_ENEMYDISABLEDMOVE], a - ld hl, $ccee - ld [hli], a - ld [hl], a - ld hl, W_PLAYERBATTSTATUS1 - call Func_13a37 - ld hl, W_ENEMYBATTSTATUS1 - call Func_13a37 - ld hl, Func_3fba8 - call Func_139d5 - ld hl, HazeText - jp PrintText - -Func_13a37: ; 13a37 (4:7a37) - res 7, [hl] - inc hl - ld a, [hl] - and $78 - ld [hli], a - ld a, [hl] - and $f8 - ld [hl], a - ret - -Func_13a43: ; 13a43 (4:7a43) - ld b, $8 -.loop - ld [hli], a - dec b - jr nz, .loop - ret - -Func_13a4a: ; 13a4a (4:7a4a) - ld b, $8 -.loop - ld a, [hli] - ld [de], a - inc de - dec b - jr nz, .loop - ret - -HazeText: ; 13a53 (4:7a53) - TX_FAR _HazeText - db "@" - -Func_13a58: ; 13a58 (4:7a58) - ld hl, W_GRASSRATE ; $d887 - ld a, [W_ISLINKBATTLE] ; $d12b - and a - jr nz, .asm_13a86 - ld hl, W_RIVALNAME ; $d34a - ld a, [W_TRAINERCLASS] ; $d031 - cp SONY1 - jr z, .asm_13a86 - cp SONY2 - jr z, .asm_13a86 - cp SONY3 - jr z, .asm_13a86 - ld [$d0b5], a - ld a, TRAINER_NAME - ld [W_LISTTYPE], a - ld a, $e - ld [$d0b7], a - call GetName - ld hl, $cd6d -.asm_13a86 - ld de, W_TRAINERNAME - ld bc, $d - jp CopyData - -GenRandom_: ; 13a8f (4:7a8f) -; generate a random 16-bit integer and store it at $FFD3,$FFD4 - ld a,[rDIV] - ld b,a - ld a,[H_RAND1] - adc b - ld [H_RAND1],a - ld a,[rDIV] - ld b,a - ld a,[H_RAND2] - sbc b - ld [H_RAND2],a - ret - -SECTION "bank5",ROMX,BANK[$5] - -RedCyclingSprite: ; 14000 (5:4000) - INCBIN "gfx/sprites/cycling.2bpp" ; was $14000 -RedSprite: ; 14180 (5:4180) - INCBIN "gfx/sprites/red.2bpp" ; was $14180 -BlueSprite: ; 14300 (5:4300) - INCBIN "gfx/sprites/blue.2bpp" ; was $14300 -OakSprite: ; 14480 (5:4480) - INCBIN "gfx/sprites/oak.2bpp" ; was $14480 -BugCatcherSprite: ; 14600 (5:4600) - INCBIN "gfx/sprites/bug_catcher.2bpp" ; was $14600 -SlowbroSprite: ; 14780 (5:4780) - INCBIN "gfx/sprites/slowbro.2bpp" ; was $14780 -LassSprite: ; 14900 (5:4900) - INCBIN "gfx/sprites/lass.2bpp" ; was $14900 -BlackHairBoy1Sprite: ; 14a80 (5:4a80) - INCBIN "gfx/sprites/black_hair_boy_1.2bpp" ; was $14a80 -LittleGirlSprite: ; 14c00 (5:4c00) - INCBIN "gfx/sprites/little_girl.2bpp" ; was $14c00 -BirdSprite: ; 14d80 (5:4d80) - INCBIN "gfx/sprites/bird.2bpp" ; was $14d80 -FatBaldGuySprite: ; 14f00 (5:4f00) - INCBIN "gfx/sprites/fat_bald_guy.2bpp" ; was $14f00 -GamblerSprite: ; 15080 (5:5080) - INCBIN "gfx/sprites/gambler.2bpp" ; was $15080 -BlackHairBoy2Sprite: ; 15200 (5:5200) - INCBIN "gfx/sprites/black_hair_boy_2.2bpp" ; was $15200 -GirlSprite: ; 15380 (5:5380) - INCBIN "gfx/sprites/girl.2bpp" ; was $15380 -HikerSprite: ; 15500 (5:5500) - INCBIN "gfx/sprites/hiker.2bpp" ; was $15500 -FoulardWomanSprite: ; 15680 (5:5680) - INCBIN "gfx/sprites/foulard_woman.2bpp" ; was $15680 -GentlemanSprite: ; 15800 (5:5800) - INCBIN "gfx/sprites/gentleman.2bpp" ; was $15800 -DaisySprite: ; 15980 (5:5980) - INCBIN "gfx/sprites/daisy.2bpp" ; was $15980 -BikerSprite: ; 15b00 (5:5b00) - INCBIN "gfx/sprites/biker.2bpp" ; was $15b00 -SailorSprite: ; 15c80 (5:5c80) - INCBIN "gfx/sprites/sailor.2bpp" ; was $15c80 -CookSprite: ; 15e00 (5:5e00) - INCBIN "gfx/sprites/cook.2bpp" ; was $15e00 -BikeShopGuySprite: ; 15f80 (5:5f80) - INCBIN "gfx/sprites/bike_shop_guy.2bpp" ; was $15f80 -MrFujiSprite: ; 16040 (5:6040) - INCBIN "gfx/sprites/mr_fuji.2bpp" ; was $16040 -GiovanniSprite: ; 161c0 (5:61c0) - INCBIN "gfx/sprites/giovanni.2bpp" ; was $161c0 -RocketSprite: ; 16340 (5:6340) - INCBIN "gfx/sprites/rocket.2bpp" ; was $16340 -MediumSprite: ; 164c0 (5:64c0) - INCBIN "gfx/sprites/medium.2bpp" ; was $164c0 -WaiterSprite: ; 16640 (5:6640) - INCBIN "gfx/sprites/waiter.2bpp" ; was $16640 -ErikaSprite: ; 167c0 (5:67c0) - INCBIN "gfx/sprites/erika.2bpp" ; was $167c0 -MomGeishaSprite: ; 16940 (5:6940) - INCBIN "gfx/sprites/mom_geisha.2bpp" ; was $16940 -BrunetteGirlSprite: ; 16ac0 (5:6ac0) - INCBIN "gfx/sprites/brunette_girl.2bpp" ; was $16ac0 -LanceSprite: ; 16c40 (5:6c40) - INCBIN "gfx/sprites/lance.2bpp" ; was $16c40 -MomSprite: ; 16dc0 (5:6dc0) - INCBIN "gfx/sprites/mom.2bpp" ; was $16dc0 -BaldingGuySprite: ; 16e80 (5:6e80) - INCBIN "gfx/sprites/balding_guy.2bpp" ; was $16e80 -YoungBoySprite: ; 16f40 (5:6f40) - INCBIN "gfx/sprites/young_boy.2bpp" ; was $16f40 -GameboyKidSprite: ; 17000 (5:7000) - INCBIN "gfx/sprites/gameboy_kid.2bpp" ; was $17000 -ClefairySprite: ; 170c0 (5:70c0) - INCBIN "gfx/sprites/clefairy.2bpp" ; was $170c0 -AgathaSprite: ; 17240 (5:7240) - INCBIN "gfx/sprites/agatha.2bpp" ; was $17240 -BrunoSprite: ; 173c0 (5:73c0) - INCBIN "gfx/sprites/bruno.2bpp" ; was $173c0 -LoreleiSprite: ; 17540 (5:7540) - INCBIN "gfx/sprites/lorelei.2bpp" ; was $17540 -SeelSprite: ; 176c0 (5:76c0) - INCBIN "gfx/sprites/seel.2bpp" ; was $176c0 - -; Loads tile patterns for tiles used in the pokedex. -LoadPokedexTilePatterns: ; 17840 (5:7840) - call LoadHpBarAndStatusTilePatterns - ld de,PokedexTileGraphics ; $6488 - ld hl,$9600 - ld bc,(BANK(PokedexTileGraphics) << 8) + $12 - call CopyVideoData - ld de,PokeballTileGraphics ; $697e - ld hl,$9720 - ld bc,(BANK(PokeballTileGraphics) << 8) + $01 - jp CopyVideoData ; load pokeball tile for marking caught mons - -; Loads tile patterns for map's sprites. -; For outside maps, it loads one of several fixed sets of sprites. -; For inside maps, it loads each sprite picture ID used in the map header. -; This is also called after displaying text because loading -; text tile patterns overwrites half of the sprite tile pattern data. -; Note on notation: -; $C1X* and $C2X* are used to denote $C100-$C1FF and $C200-$C2FF sprite slot -; fields, respectively, within loops. The X is the loop index. -; If there is an inner loop, Y is the inner loop index, i.e. $C1Y* and $C2Y* -; denote fields of the sprite slots interated over in the inner loop. -InitMapSprites: ; 1785b (5:785b) - call InitOutsideMapSprites - ret c ; return if the map is an outside map (already handled by above call) -; if the map is an inside map (i.e. mapID >= $25) - ld hl,wSpriteStateData1 - ld de,$c20d -; Loop to copy picture ID's from $C1X0 to $C2XD for LoadMapSpriteTilePatterns. -.copyPictureIDLoop - ld a,[hl] ; $C1X0 (picture ID) - ld [de],a ; $C2XD - ld a,$10 - add e - ld e,a - ld a,$10 - add l - ld l,a - jr nz,.copyPictureIDLoop - -; This is used for both inside and outside maps, since it is called by -; InitOutsideMapSprites. -; Loads tile pattern data for sprites into VRAM. -LoadMapSpriteTilePatterns: ; 17871 (5:7871) - ld a,[W_NUMSPRITES] - and a ; are there any sprites? - jr nz,.spritesExist - ret -.spritesExist - ld c,a ; c = [W_NUMSPRITES] - ld b,$10 ; number of sprite slots - ld hl,$c20d - xor a - ld [$ff8e],a ; 4-tile sprite counter -.copyPictureIDLoop ; loop to copy picture ID from $C2XD to $C2XE - ld a,[hli] ; $C2XD (sprite picture ID) - ld [hld],a ; $C2XE - ld a,l - add a,$10 - ld l,a - dec b - jr nz,.copyPictureIDLoop - ld hl,$c21e -.loadTilePatternLoop - ld de,$c21d -; Check if the current picture ID has already had its tile patterns loaded. -; This done by looping through the previous sprite slots and seeing if any of -; their picture ID's match that of the current sprite slot. -.checkIfAlreadyLoadedLoop - ld a,e - and a,$f0 - ld b,a ; b = offset of the wSpriteStateData2 sprite slot being checked against - ld a,l - and a,$f0 ; a = offset of current wSpriteStateData2 sprite slot - cp b ; done checking all previous sprite slots? - jr z,.notAlreadyLoaded - ld a,[de] ; picture ID of the wSpriteStateData2 sprite slot being checked against - cp [hl] ; do the picture ID's match? - jp z,.alreadyLoaded - ld a,e - add a,$10 - ld e,a - jr .checkIfAlreadyLoadedLoop -.notAlreadyLoaded - ld de,$c20e - ld b,$01 -; loop to find the highest tile pattern VRAM slot (among the first 10 slots) used by a previous sprite slot -; this is done in order to find the first free VRAM slot available -.findNextVRAMSlotLoop - ld a,e - add a,$10 - ld e,a - ld a,l - cp e ; reached current slot? - jr z,.foundNextVRAMSlot - ld a,[de] ; $C2YE (VRAM slot) - cp a,11 ; is it one of the first 10 slots? - jr nc,.findNextVRAMSlotLoop - cp b ; compare the slot being checked to the current max - jr c,.findNextVRAMSlotLoop ; if the slot being checked is less than the current max -; if the slot being checked is greater than or equal to the current max - ld b,a ; store new max VRAM slot - jr .findNextVRAMSlotLoop -.foundNextVRAMSlot - inc b ; increment previous max value to get next VRAM tile pattern slot - ld a,b ; a = next VRAM tile pattern slot - push af - ld a,[hl] ; $C2XE (sprite picture ID) - ld b,a ; b = current sprite picture ID - cp a,SPRITE_BALL ; is it a 4-tile sprite? - jr c,.notFourTileSprite - pop af - ld a,[$ff8e] ; 4-tile sprite counter - add a,11 - jr .storeVRAMSlot -.notFourTileSprite - pop af -.storeVRAMSlot - ld [hl],a ; store VRAM slot at $C2XE - ld [$ff8d],a ; used to determine if it's 4-tile sprite later - ld a,b ; a = current sprite picture ID - dec a - add a - add a - push bc - push hl - ld hl,SpriteSheetPointerTable - jr nc,.noCarry - inc h -.noCarry - add l - ld l,a - jr nc,.noCarry2 - inc h -.noCarry2 - push hl - call ReadSpriteSheetData - push af - push de - push bc - ld hl,$8000 ; VRAM base address - ld bc,$c0 ; number of bytes per VRAM slot - ld a,[$ff8d] - cp a,11 ; is it a 4-tile sprite? - jr nc,.fourTileSpriteVRAMAddr - ld d,a - dec d -; Equivalent to multiplying $C0 (number of bytes in 12 tiles) times the VRAM -; slot and adding the result to $8000 (the VRAM base address). -.calculateVRAMAddrLoop - add hl,bc - dec d - jr nz,.calculateVRAMAddrLoop - jr .loadStillTilePattern -.fourTileSpriteVRAMAddr - ld hl,$87c0 ; address for second 4-tile sprite - ld a,[$ff8e] ; 4-tile sprite counter - and a ; is it the first 4-tile sprite? - jr nz,.loadStillTilePattern -; if it's the first 4-tile sprite - ld hl,$8780 ; address for first 4-tile sprite - inc a - ld [$ff8e],a ; 4-tile sprite counter -.loadStillTilePattern - pop bc - pop de - pop af - push hl - push hl - ld h,d - ld l,e - pop de - ld b,a - ld a,[$cfc4] - bit 0,a ; reloading upper half of tile patterns after displaying text? - jr nz,.skipFirstLoad ; if so, skip loading data into the lower half - ld a,b - ld b,0 - call FarCopyData2 ; load tile pattern data for sprite when standing still -.skipFirstLoad - pop de - pop hl - ld a,[$ff8d] - cp a,11 ; is it a 4-tile sprite? - jr nc,.skipSecondLoad ; if so, there is no second block - push de - call ReadSpriteSheetData - push af - ld a,$c0 - add e - ld e,a - jr nc,.noCarry3 - inc d -.noCarry3 - ld a,[$cfc4] - bit 0,a ; reloading upper half of tile patterns after displaying text? - jr nz,.loadWhileLCDOn - pop af - pop hl - set 3,h ; add $800 to hl - push hl - ld h,d - ld l,e - pop de - call FarCopyData2 ; load tile pattern data for sprite when walking - jr .skipSecondLoad -; When reloading the upper half of tile patterns after diplaying text, the LCD -; will be on, so CopyVideoData (which writes to VRAM only during V-blank) must -; be used instead of FarCopyData2. -.loadWhileLCDOn - pop af - pop hl - set 3,h ; add $800 to hl - ld b,a - swap c - call CopyVideoData ; load tile pattern data for sprite when walking -.skipSecondLoad - pop hl - pop bc - jr .nextSpriteSlot -.alreadyLoaded ; if the current picture ID has already had its tile patterns loaded - inc de - ld a,[de] ; a = VRAM slot for the current picture ID (from $C2YE) - ld [hl],a ; store VRAM slot in current wSpriteStateData2 sprite slot (at $C2XE) -.nextSpriteSlot - ld a,l - add a,$10 - ld l,a - dec c - jp nz,.loadTilePatternLoop - ld hl,$c20d - ld b,$10 -; the pictures ID's stored at $C2XD are no longer needed, so zero them -.zeroStoredPictureIDLoop - xor a - ld [hl],a ; $C2XD - ld a,$10 - add l - ld l,a - dec b - jr nz,.zeroStoredPictureIDLoop - ret - -; reads data from SpriteSheetPointerTable -; INPUT: -; hl = address of sprite sheet entry -; OUTPUT: -; de = pointer to sprite sheet -; bc = length in bytes -; a = ROM bank -ReadSpriteSheetData: ; 17971 (5:7971) - ld a,[hli] - ld e,a - ld a,[hli] - ld d,a - ld a,[hli] - ld c,a - xor a - ld b,a - ld a,[hli] - ret - -; Loads sprite set for outside maps (cities and routes) and sets VRAM slots. -; sets carry if the map is a city or route, unsets carry if not -InitOutsideMapSprites: ; 1797b (5:797b) - ld a,[W_CURMAP] - cp a,REDS_HOUSE_1F ; is the map a city or a route (map ID less than $25)? - ret nc ; if not, return - ld hl,MapSpriteSets - add l - ld l,a - jr nc,.noCarry - inc h -.noCarry - ld a,[hl] ; a = spriteSetID - cp a,$f0 ; does the map have 2 sprite sets? - call nc,GetSplitMapSpriteSetID ; if so, choose the appropriate one - ld b,a ; b = spriteSetID - ld a,[$cfc4] - bit 0,a ; reloading upper half of tile patterns after displaying text? - jr nz,.loadSpriteSet ; if so, forcibly reload the sprite set - ld a,[W_SPRITESETID] - cp b ; has the sprite set ID changed? - jr z,.skipLoadingSpriteSet ; if not, don't load it again -.loadSpriteSet - ld a,b - ld [W_SPRITESETID],a - dec a - ld b,a - sla a - ld c,a - sla a - sla a - add c - add b ; a = (spriteSetID - 1) * 11 - ld de,SpriteSets -; add a to de to get offset of sprite set - add e - ld e,a - jr nc,.noCarry2 - inc d -.noCarry2 - ld hl,$c20d - ld a,SPRITE_RED - ld [hl],a - ld bc,W_SPRITESET -; Load the sprite set into RAM. -; This loop also fills $C2XD (sprite picture ID) where X is from $0 to $A -; with picture ID's. This is done so that LoadMapSpriteTilePatterns will -; load tile patterns for all sprite pictures in the sprite set. -.loadSpriteSetLoop - ld a,$10 - add l - ld l,a - ld a,[de] ; sprite picture ID from sprite set - ld [hl],a ; $C2XD (sprite picture ID) - ld [bc],a - inc de - inc bc - ld a,l - cp a,$bd ; reached 11th sprite slot? - jr nz,.loadSpriteSetLoop - ld b,4 ; 4 remaining sprite slots -.zeroRemainingSlotsLoop ; loop to zero the picture ID's of the remaining sprite slots - ld a,$10 - add l - ld l,a - xor a - ld [hl],a ; $C2XD (sprite picture ID) - dec b - jr nz,.zeroRemainingSlotsLoop - ld a,[W_NUMSPRITES] - push af ; save number of sprites - ld a,11 ; 11 sprites in sprite set - ld [W_NUMSPRITES],a - call LoadMapSpriteTilePatterns - pop af - ld [W_NUMSPRITES],a ; restore number of sprites - ld hl,$c21e - ld b,$0f -; The VRAM tile pattern slots that LoadMapSpriteTilePatterns set are in the -; order of the map's sprite set, not the order of the actual sprites loaded -; for the current map. So, they are not needed and are zeroed by this loop. -.zeroVRAMSlotsLoop - xor a - ld [hl],a ; $C2XE (VRAM slot) - ld a,$10 - add l - ld l,a - dec b - jr nz,.zeroVRAMSlotsLoop -.skipLoadingSpriteSet - ld hl,$c110 -; This loop stores the correct VRAM tile pattern slots according the sprite -; data from the map's header. Since the VRAM tile pattern slots are filled in -; the order of the sprite set, in order to find the VRAM tile pattern slot -; for a sprite slot, the picture ID for the sprite is looked up within the -; sprite set. The index of the picture ID within the sprite set plus one -; (since the Red sprite always has the first VRAM tile pattern slot) is the -; VRAM tile pattern slot. -.storeVRAMSlotsLoop - ld c,0 - ld a,[hl] ; $C1X0 (picture ID) (zero if sprite slot is not used) - and a ; is the sprite slot used? - jr z,.skipGettingPictureIndex ; if the sprite slot is not used - ld b,a ; b = picture ID - ld de,W_SPRITESET -; Loop to find the index of the sprite's picture ID within the sprite set. -.getPictureIndexLoop - inc c - ld a,[de] - inc de - cp b ; does the picture ID match? - jr nz,.getPictureIndexLoop - inc c -.skipGettingPictureIndex - push hl - inc h - ld a,$0e - add l - ld l,a - ld a,c ; a = VRAM slot (zero if sprite slot is not used) - ld [hl],a ; $C2XE (VRAM slot) - pop hl - ld a,$10 - add l - ld l,a - and a - jr nz,.storeVRAMSlotsLoop - scf - ret - -; Chooses the correct sprite set ID depending on the player's position within -; the map for maps with two sprite sets. -GetSplitMapSpriteSetID: ; 17a1a (5:7a1a) - cp a,$f8 - jr z,.route20 - ld hl,SplitMapSpriteSets - and a,$0f - dec a - sla a - sla a - add l - ld l,a - jr nc,.noCarry - inc h -.noCarry - ld a,[hli] ; determines whether the map is split East/West or North/South - cp a,$01 - ld a,[hli] ; position of dividing line - ld b,a - jr z,.eastWestDivide -.northSouthDivide - ld a,[W_YCOORD] - jr .compareCoord -.eastWestDivide - ld a,[W_XCOORD] -.compareCoord - cp b - jr c,.loadSpriteSetID -; if in the East side or South side - inc hl -.loadSpriteSetID - ld a,[hl] - ret -; Uses sprite set $01 for West side and $0A for East side. -; Route 20 is a special case because the two map sections have a more complex -; shape instead of the map simply being split horizontally or vertically. -.route20 - ld hl,W_XCOORD - ld a,[hl] - cp a,$2b - ld a,$01 - ret c - ld a,[hl] - cp a,$3e - ld a,$0a - ret nc - ld a,[hl] - cp a,$37 - ld b,$08 - jr nc,.next - ld b,$0d -.next - ld a,[W_YCOORD] - cp b - ld a,$0a - ret c - ld a,$01 - ret - -MapSpriteSets: ; 17a64 (5:7a64) - db $01 ; PALLET_TOWN - db $01 ; VIRIDIAN_CITY - db $02 ; PEWTER_CITY - db $02 ; CERULEAN_CITY - db $03 ; LAVENDER_TOWN - db $04 ; VERMILION_CITY - db $05 ; CELADON_CITY - db $0a ; FUCHSIA_CITY - db $01 ; CINNABAR_ISLAND - db $06 ; INDIGO_PLATEAU - db $07 ; SAFFRON_CITY - db $01 ; unused map ID - db $01 ; ROUTE_1 - db $f1 ; ROUTE_2 - db $02 ; ROUTE_3 - db $02 ; ROUTE_4 - db $f9 ; ROUTE_5 - db $fa ; ROUTE_6 - db $fb ; ROUTE_7 - db $fc ; ROUTE_8 - db $02 ; ROUTE_9 - db $f2 ; ROUTE_10 - db $f3 ; ROUTE_11 - db $f4 ; ROUTE_12 - db $08 ; ROUTE_13 - db $08 ; ROUTE_14 - db $f5 ; ROUTE_15 - db $f6 ; ROUTE_16 - db $09 ; ROUTE_17 - db $f7 ; ROUTE_18 - db $0a ; ROUTE_19 - db $f8 ; ROUTE_20 - db $01 ; ROUTE_21 - db $01 ; ROUTE_22 - db $06 ; ROUTE_23 - db $02 ; ROUTE_24 - db $02 ; ROUTE_25 - -; Format: -; 00: determines whether the map is split East/West or North/South -; $01 = East/West divide -; $02 = North/South divide -; 01: coordinate of dividing line -; 02: sprite set ID if in the West or North side -; 03: sprite set ID if in the East or South side -SplitMapSpriteSets: ; 17a89 (5:7a89) - db $02,$25,$02,$01 ; $f1 - db $02,$32,$02,$03 ; $f2 - db $01,$39,$04,$08 ; $f3 - db $02,$15,$03,$08 ; $f4 - db $01,$08,$0A,$08 ; $f5 - db $01,$18,$09,$05 ; $f6 - db $01,$22,$09,$0A ; $f7 - db $01,$35,$01,$0A ; $f8 - db $02,$21,$02,$07 ; $f9 - db $02,$02,$07,$04 ; $fa - db $01,$11,$05,$07 ; $fb - db $01,$03,$07,$03 ; $fc - -SpriteSets: ; 17ab9 (5:7ab9) -; sprite set $01 - db SPRITE_BLUE - db SPRITE_BUG_CATCHER - db SPRITE_GIRL - db SPRITE_FISHER2 - db SPRITE_BLACK_HAIR_BOY_1 - db SPRITE_GAMBLER - db SPRITE_SEEL - db SPRITE_OAK - db SPRITE_SWIMMER - db SPRITE_BALL - db SPRITE_LYING_OLD_MAN - -; sprite set $02 - db SPRITE_BUG_CATCHER - db SPRITE_ROCKET - db SPRITE_BLACK_HAIR_BOY_2 - db SPRITE_HIKER - db SPRITE_SLOWBRO - db SPRITE_BLUE - db SPRITE_GUARD - db SPRITE_LASS - db SPRITE_BLACK_HAIR_BOY_1 - db SPRITE_BALL - db SPRITE_LYING_OLD_MAN_UNUSED_2 - -; sprite set $03 - db SPRITE_LITTLE_GIRL - db SPRITE_GIRL - db SPRITE_BLACK_HAIR_BOY_2 - db SPRITE_HIKER - db SPRITE_GAMBLER - db SPRITE_SLOWBRO - db SPRITE_LASS - db SPRITE_BLACK_HAIR_BOY_1 - db SPRITE_GUARD - db SPRITE_BALL - db SPRITE_LYING_OLD_MAN_UNUSED_2 - -; sprite set $04 - db SPRITE_FOULARD_WOMAN - db SPRITE_BLACK_HAIR_BOY_2 - db SPRITE_BUG_CATCHER - db SPRITE_GAMBLER - db SPRITE_SLOWBRO - db SPRITE_GUARD - db SPRITE_SAILOR - db SPRITE_LASS - db SPRITE_BLACK_HAIR_BOY_1 - db SPRITE_BALL - db SPRITE_LYING_OLD_MAN_UNUSED_2 - -; sprite set $05 - db SPRITE_LITTLE_GIRL - db SPRITE_YOUNG_BOY - db SPRITE_GIRL - db SPRITE_FISHER2 - db SPRITE_FAT_BALD_GUY - db SPRITE_OLD_PERSON - db SPRITE_SLOWBRO - db SPRITE_GUARD - db SPRITE_ROCKET - db SPRITE_BALL - db SPRITE_SNORLAX - -; sprite set $06 - db SPRITE_BUG_CATCHER - db SPRITE_GYM_HELPER - db SPRITE_SLOWBRO - db SPRITE_BLUE - db SPRITE_LASS - db SPRITE_BLACK_HAIR_BOY_1 - db SPRITE_SWIMMER - db SPRITE_GUARD - db SPRITE_GAMBLER - db SPRITE_BALL - db SPRITE_LYING_OLD_MAN_UNUSED_2 - -; sprite set $07 - db SPRITE_ROCKET - db SPRITE_OAK_AIDE - db SPRITE_LAPRAS_GIVER - db SPRITE_ERIKA - db SPRITE_GENTLEMAN - db SPRITE_BIRD - db SPRITE_ROCKER - db SPRITE_BLACK_HAIR_BOY_1 - db SPRITE_SLOWBRO - db SPRITE_BALL - db SPRITE_LYING_OLD_MAN_UNUSED_2 - -; sprite set $08 - db SPRITE_BIKER - db SPRITE_BLACK_HAIR_BOY_2 - db SPRITE_FAT_BALD_GUY - db SPRITE_LASS - db SPRITE_BLACK_HAIR_BOY_1 - db SPRITE_FOULARD_WOMAN - db SPRITE_FISHER2 - db SPRITE_ROCKER - db SPRITE_SLOWBRO - db SPRITE_BALL - db SPRITE_SNORLAX - -; sprite set $09 - db SPRITE_BIKER - db SPRITE_BLACK_HAIR_BOY_1 - db SPRITE_LAPRAS_GIVER - db SPRITE_FISHER2 - db SPRITE_ROCKER - db SPRITE_HIKER - db SPRITE_GAMBLER - db SPRITE_FAT_BALD_GUY - db SPRITE_BLACK_HAIR_BOY_2 - db SPRITE_BALL - db SPRITE_SNORLAX - -; sprite set $0a - db SPRITE_BIRD - db SPRITE_BLACK_HAIR_BOY_1 - db SPRITE_CLEFAIRY - db SPRITE_FISHER2 - db SPRITE_GAMBLER - db SPRITE_SLOWBRO - db SPRITE_SEEL - db SPRITE_SWIMMER - db SPRITE_BUG_CATCHER - db SPRITE_BALL - db SPRITE_OMANYTE - -SpriteSheetPointerTable: ; 17b27 (5:7b27) - ; SPRITE_RED - dw RedSprite - db $c0 ; byte count - db BANK(RedSprite) - - ; SPRITE_BLUE - dw BlueSprite - db $c0 ; byte count - db BANK(BlueSprite) - - ; SPRITE_OAK - dw OakSprite - db $c0 ; byte count - db BANK(OakSprite) - - ; SPRITE_BUG_CATCHER - dw BugCatcherSprite - db $c0 ; byte count - db BANK(BugCatcherSprite) - - ; SPRITE_SLOWBRO - dw SlowbroSprite - db $c0 ; byte count - db BANK(SlowbroSprite) - - ; SPRITE_LASS - dw LassSprite - db $c0 ; byte count - db BANK(LassSprite) - - ; SPRITE_BLACK_HAIR_BOY_1 - dw BlackHairBoy1Sprite - db $c0 ; byte count - db BANK(BlackHairBoy1Sprite) - - ; SPRITE_LITTLE_GIRL - dw LittleGirlSprite - db $c0 ; byte count - db BANK(LittleGirlSprite) - - ; SPRITE_BIRD - dw BirdSprite - db $c0 ; byte count - db BANK(BirdSprite) - - ; SPRITE_FAT_BALD_GUY - dw FatBaldGuySprite - db $c0 ; byte count - db BANK(FatBaldGuySprite) - - ; SPRITE_GAMBLER - dw GamblerSprite - db $c0 ; byte count - db BANK(GamblerSprite) - - ; SPRITE_BLACK_HAIR_BOY_2 - dw BlackHairBoy2Sprite - db $c0 ; byte count - db BANK(BlackHairBoy2Sprite) - - ; SPRITE_GIRL - dw GirlSprite - db $c0 ; byte count - db BANK(GirlSprite) - - ; SPRITE_HIKER - dw HikerSprite - db $c0 ; byte count - db BANK(HikerSprite) - - ; SPRITE_FOULARD_WOMAN - dw FoulardWomanSprite - db $c0 ; byte count - db BANK(FoulardWomanSprite) - - ; SPRITE_GENTLEMAN - dw GentlemanSprite - db $c0 ; byte count - db BANK(GentlemanSprite) - - ; SPRITE_DAISY - dw DaisySprite - db $c0 ; byte count - db BANK(DaisySprite) - - ; SPRITE_BIKER - dw BikerSprite - db $c0 ; byte count - db BANK(BikerSprite) - - ; SPRITE_SAILOR - dw SailorSprite - db $c0 ; byte count - db BANK(SailorSprite) - - ; SPRITE_COOK - dw CookSprite - db $c0 ; byte count - db BANK(CookSprite) - - ; SPRITE_BIKE_SHOP_GUY - dw BikeShopGuySprite - db $c0 ; byte count - db BANK(BikeShopGuySprite) - - ; SPRITE_MR_FUJI - dw MrFujiSprite - db $c0 ; byte count - db BANK(MrFujiSprite) - - ; SPRITE_GIOVANNI - dw GiovanniSprite - db $c0 ; byte count - db BANK(GiovanniSprite) - - ; SPRITE_ROCKET - dw RocketSprite - db $c0 ; byte count - db BANK(RocketSprite) - - ; SPRITE_MEDIUM - dw MediumSprite - db $c0 ; byte count - db BANK(MediumSprite) - - ; SPRITE_WAITER - dw WaiterSprite - db $c0 ; byte count - db BANK(WaiterSprite) - - ; SPRITE_ERIKA - dw ErikaSprite - db $c0 ; byte count - db BANK(ErikaSprite) - - ; SPRITE_MOM_GEISHA - dw MomGeishaSprite - db $c0 ; byte count - db BANK(MomGeishaSprite) - - ; SPRITE_BRUNETTE_GIRL - dw BrunetteGirlSprite - db $c0 ; byte count - db BANK(BrunetteGirlSprite) - - ; SPRITE_LANCE - dw LanceSprite - db $c0 ; byte count - db BANK(LanceSprite) - - ; SPRITE_OAK_SCIENTIST_AIDE - dw OakAideSprite - db $c0 ; byte count - db BANK(OakAideSprite) - - ; SPRITE_OAK_AIDE - dw OakAideSprite - db $c0 ; byte count - db BANK(OakAideSprite) - - ; SPRITE_ROCKER - dw RockerSprite - db $c0 ; byte count - db BANK(RockerSprite) - - ; SPRITE_SWIMMER - dw SwimmerSprite - db $c0 ; byte count - db BANK(SwimmerSprite) - - ; SPRITE_WHITE_PLAYER - dw WhitePlayerSprite - db $c0 ; byte count - db BANK(WhitePlayerSprite) - - ; SPRITE_GYM_HELPER - dw GymHelperSprite - db $c0 ; byte count - db BANK(GymHelperSprite) - - ; SPRITE_OLD_PERSON - dw OldPersonSprite - db $c0 ; byte count - db BANK(OldPersonSprite) - - ; SPRITE_MART_GUY - dw MartGuySprite - db $c0 ; byte count - db BANK(MartGuySprite) - - ; SPRITE_FISHER - dw FisherSprite - db $c0 ; byte count - db BANK(FisherSprite) - - ; SPRITE_OLD_MEDIUM_WOMAN - dw OldMediumWomanSprite - db $c0 ; byte count - db BANK(OldMediumWomanSprite) - - ; SPRITE_NURSE - dw NurseSprite - db $c0 ; byte count - db BANK(NurseSprite) - - ; SPRITE_CABLE_CLUB_WOMAN - dw CableClubWomanSprite - db $c0 ; byte count - db BANK(CableClubWomanSprite) - - ; SPRITE_MR_MASTERBALL - dw MrMasterballSprite - db $c0 ; byte count - db BANK(MrMasterballSprite) - - ; SPRITE_LAPRAS_GIVER - dw LaprasGiverSprite - db $c0 ; byte count - db BANK(LaprasGiverSprite) - - ; SPRITE_WARDEN - dw WardenSprite - db $c0 ; byte count - db BANK(WardenSprite) - - ; SPRITE_SS_CAPTAIN - dw SsCaptainSprite - db $c0 ; byte count - db BANK(SsCaptainSprite) - - ; SPRITE_FISHER2 - dw Fisher2Sprite - db $c0 ; byte count - db BANK(Fisher2Sprite) - - ; SPRITE_BLACKBELT - dw BlackbeltSprite - db $c0 ; byte count - db BANK(BlackbeltSprite) - - ; SPRITE_GUARD - dw GuardSprite - db $c0 ; byte count - db BANK(GuardSprite) - - ; $32 - dw GuardSprite - db $c0 ; byte count - db BANK(GuardSprite) - - ; SPRITE_MOM - dw MomSprite - db $c0 ; byte count - db BANK(MomSprite) - - ; SPRITE_BALDING_GUY - dw BaldingGuySprite - db $c0 ; byte count - db BANK(BaldingGuySprite) - - ; SPRITE_YOUNG_BOY - dw YoungBoySprite - db $c0 ; byte count - db BANK(YoungBoySprite) - - ; SPRITE_GAMEBOY_KID - dw GameboyKidSprite - db $c0 ; byte count - db BANK(GameboyKidSprite) - - ; SPRITE_GAMEBOY_KID_COPY - dw GameboyKidSprite - db $c0 ; byte count - db BANK(GameboyKidSprite) - - ; SPRITE_CLEFAIRY - dw ClefairySprite - db $c0 ; byte count - db BANK(ClefairySprite) - - ; SPRITE_AGATHA - dw AgathaSprite - db $c0 ; byte count - db BANK(AgathaSprite) - - ; SPRITE_BRUNO - dw BrunoSprite - db $c0 ; byte count - db BANK(BrunoSprite) - - ; SPRITE_LORELEI - dw LoreleiSprite - db $c0 ; byte count - db BANK(LoreleiSprite) - - ; SPRITE_SEEL - dw SeelSprite - db $c0 ; byte count - db BANK(SeelSprite) - - ; SPRITE_BALL - dw BallSprite - db $40 ; byte count - db BANK(BallSprite) - - ; SPRITE_OMANYTE - dw OmanyteSprite - db $40 ; byte count - db BANK(OmanyteSprite) - - ; SPRITE_BOULDER - dw BoulderSprite - db $40 ; byte count - db BANK(BoulderSprite) - - ; SPRITE_PAPER_SHEET - dw PaperSheetSprite - db $40 ; byte count - db BANK(PaperSheetSprite) - - ; SPRITE_BOOK_MAP_DEX - dw BookMapDexSprite - db $40 ; byte count - db BANK(BookMapDexSprite) - - ; SPRITE_CLIPBOARD - dw ClipboardSprite - db $40 ; byte count - db BANK(ClipboardSprite) - - ; SPRITE_SNORLAX - dw SnorlaxSprite - db $40 ; byte count - db BANK(SnorlaxSprite) - - ; SPRITE_OLD_AMBER_COPY - dw OldAmberSprite - db $40 ; byte count - db BANK(OldAmberSprite) - - ; SPRITE_OLD_AMBER - dw OldAmberSprite - db $40 ; byte count - db BANK(OldAmberSprite) - - ; SPRITE_LYING_OLD_MAN_UNUSED_1 - dw LyingOldManSprite - db $40 ; byte count - db BANK(LyingOldManSprite) - - ; SPRITE_LYING_OLD_MAN_UNUSED_2 - dw LyingOldManSprite - db $40 ; byte count - db BANK(LyingOldManSprite) - - ; SPRITE_LYING_OLD_MAN - dw LyingOldManSprite - db $40 ; byte count - db BANK(LyingOldManSprite) - -PrintEmotionBubble: ; 17c47 (5:7c47) - ld a, [$cd50] - ld c, a - ld b, $0 - ld hl, EmotionBubblesPointerTable ; $7caf - add hl, bc - add hl, bc - ld e, [hl] - inc hl - ld d, [hl] - ld hl, $8f80 - ld bc, (BANK(EmotionBubblesPointerTable) << 8) + $04 - call CopyVideoData - ld a, [$cfcb] - push af - ld a, $ff - ld [$cfcb], a - ld a, [$d736] - bit 6, a - ld hl, $c38f - ld de, $c39f - jr z, .asm_17c7a - ld hl, $c37f - ld de, $c38f -.asm_17c7a - ld bc, $90 -.asm_17c7d - ld a, [hl] - ld [de], a - dec hl - dec de - dec bc - ld a, c - or b - jr nz, .asm_17c7d - ld hl, $c104 - ld a, [$cd4f] - swap a - ld c, a - ld b, $0 - add hl, bc - ld a, [hli] - ld b, a - inc hl - ld a, [hl] - add $8 - ld c, a - ld de, EmotionBubblesOAM ; $7cb5 - xor a - call WriteOAMBlock - ld c, $3c - call DelayFrames - pop af - ld [$cfcb], a - call DelayFrame - jp UpdateSprites - -EmotionBubblesPointerTable: ; 17caf (5:7caf) - dw EmotionBubbles - dw EmotionBubbles + $40 - dw EmotionBubbles + $80 - -EmotionBubblesOAM: ; 17cb5 (5:7cb5) - db $F8,$00,$F9,$00 - db $FA,$00,$FB,$00 - -EmotionBubbles: ; 17cbd (5:7cbd) - INCBIN "gfx/emotion_bubbles.w16.2bpp" - -Func_17d7d: ; 17d7d (5:7d7d) - ld a, [wPlayerMonAccuracyMod] ; $cd1e - cp $86 - jr z, .asm_17d8d - cp $92 - ret nz - ld a, [wPlayerMonEvasionMod] ; $cd1f - cp $8f - ret nz -.asm_17d8d - ld a, [W_NUMINPARTY] ; $d163 - dec a - ld [wWhichPokemon], a ; $cf92 - ld a, $1 - ld [$ccd4], a - ld a, $32 - ld [W_ISLINKBATTLE], a ; $d12b - ld hl, Func_3ad0e - ld b, BANK(Func_3ad0e) - call Bankswitch - xor a - ld [W_ISLINKBATTLE], a ; $d12b - jp Func_2307 - -SubstituteEffectHandler: ; 17dad (5:7dad) - ld c, 50 - call DelayFrames - ld hl, W_PLAYERMONMAXHP - ld de, wPlayerSubstituteHP - ld bc, W_PLAYERBATTSTATUS2 - ld a, [$fff3] ;whose turn? - and a - jr z, .notEnemy - ld hl, W_ENEMYMONMAXHP - ld de, wEnemySubstituteHP - ld bc, W_ENEMYBATTSTATUS2 -.notEnemy - ld a, [bc] ;load flags - bit 4, a ;user already has substitute? - jr nz, .alreadyHasSubstitute ;skip this code if so - ;user doesn't have a substitute [yet] - push bc - ld a, [hli] ;load max hp - ld b, [hl] - srl a ;max hp / 4, [quarter health to remove from user] - rr b - srl a - rr b - push de - ld de, $fff2 ;subtract 8 to point to [current hp] instead of [max hp] - add hl, de ;HL -= 8 - pop de - ld a, b - ld [de], a ;save copy of HP to subtract in ccd7/ccd8 [how much HP substitute has] - ld a, [hld] ;load current hp - sub b ;subtract [max hp / 4] - ld d, a ;save low byte result in D - ld a, [hl] - sbc a, 0 ;borrow from high byte if needed - pop bc - jr c, .notEnoughHP ;underflow means user would be left with negative health - ;bug: note since it only brances on carry, it will possibly leave user with 0HP -.userHasZeroOrMoreHP - ldi [hl], a ;store high byte HP - ld [hl], d ;store low byte HP - ld h, b - ld l, c - set 4, [hl] ;set bit 4 of flags, user now has substitute - ld a, [$d355] ;load options - bit 7, a ;battle animation is enabled? - ld hl, Func_3fba8 ; $7ba8 ;animation enabled: 0F:7BA8 - ld b, BANK(Func_3fba8) - jr z, .animationEnabled - ld hl, AnimationSubstitute ;animation disabled: 1E:56E0 - ld b, BANK(AnimationSubstitute) -.animationEnabled - call Bankswitch ;jump to routine depending on animation setting - ld hl, SubstituteText - call PrintText - ld hl, Func_3cd5a - ld b, BANK(Func_3cd5a) - jp Bankswitch -.alreadyHasSubstitute - ld hl, HasSubstituteText - jr .printText -.notEnoughHP - ld hl, TooWeakSubstituteText -.printText - jp PrintText - -SubstituteText: ; 17e1d (5:7e1d) - TX_FAR _SubstituteText - db "@" - -HasSubstituteText: ; 17e22 (5:7e22) - TX_FAR _HasSubstituteText - db "@" - -TooWeakSubstituteText: ; 17e27 (5:7e27) - TX_FAR _TooWeakSubstituteText - db "@" - -ActivatePC: ; 17e2c (5:7e2c) - call SaveScreenTilesToBuffer2 ;XXX: copy background from wTileMap to wTileMapBackup2 - ld a, (SFX_02_45 - SFX_Headers_02) / 3 - call PlaySound ;XXX: play sound or stop music - ld hl, TurnedOnPC1Text - call PrintText - call WaitForSoundToFinish ;XXX: wait for sound to be done - ld hl, wFlags_0xcd60 - set 3, [hl] - call LoadScreenTilesFromBuffer2 ;XXX: restore saved screen - call Delay3 -PCMainMenu: ; 17e48 (5:7e48) - ld b, BANK(Func_213c8) - ld hl, Func_213c8 - call Bankswitch - ld hl, wFlags_0xcd60 - set 5, [hl] - call HandleMenuInput - bit 1, a ;if player pressed B - jp nz, LogOff - ld a, [wMaxMenuItem] - cp a, 2 - jr nz, .next ;if not 2 menu items (not counting log off) (2 occurs before you get the pokedex) - ld a, [wCurrentMenuItem] - and a - jp z, BillsPC ;if current menu item id is 0, it's bills pc - cp a, 1 - jr z, .playersPC ;if current menu item id is 1, it's players pc - jp LogOff ;otherwise, it's 2, and you're logging off -.next - cp a, 3 - jr nz, .next2 ;if not 3 menu items (not counting log off) (3 occurs after you get the pokedex, before you beat the pokemon league) - ld a, [wCurrentMenuItem] - and a - jp z, BillsPC ;if current menu item id is 0, it's bills pc - cp a, 1 - jr z, .playersPC ;if current menu item id is 1, it's players pc - cp a, 2 - jp z, OaksPC ;if current menu item id is 2, it's oaks pc - jp LogOff ;otherwise, it's 3, and you're logging off -.next2 - ld a, [wCurrentMenuItem] - and a - jp z, BillsPC ;if current menu item id is 0, it's bills pc - cp a, 1 - jr z, .playersPC ;if current menu item id is 1, it's players pc - cp a, 2 - jp z, OaksPC ;if current menu item id is 2, it's oaks pc - cp a, 3 - jp z, PKMNLeague ;if current menu item id is 3, it's pkmnleague - jp LogOff ;otherwise, it's 4, and you're logging off -.playersPC - ld hl, wFlags_0xcd60 - res 5, [hl] - set 3, [hl] - ld a, (SFX_02_47 - SFX_Headers_02) / 3 - call PlaySound ;XXX: play sound or stop music - call WaitForSoundToFinish ;XXX: wait for sound to be done - ld hl, AccessedMyPCText - call PrintText - ld b, BANK(Func_78e6) - ld hl, Func_78e6 - call Bankswitch - jr ReloadMainMenu -OaksPC: ; 17ec0 (5:7ec0) - ld a, (SFX_02_47 - SFX_Headers_02) / 3 - call PlaySound ;XXX: play sound or stop music - call WaitForSoundToFinish ;XXX: wait for sound to be done - ld b, BANK(Func_1e915) - ld hl, Func_1e915 - call Bankswitch - jr ReloadMainMenu -PKMNLeague: ; 17ed2 (5:7ed2) - ld a, (SFX_02_47 - SFX_Headers_02) / 3 - call PlaySound ;XXX: play sound or stop music - call WaitForSoundToFinish ;XXX: wait for sound to be done - ld b, BANK(Func_7657e) - ld hl, Func_7657e - call Bankswitch - jr ReloadMainMenu -BillsPC: ; 17ee4 (5:7ee4) - ld a, (SFX_02_47 - SFX_Headers_02) / 3 - call PlaySound ;XXX: play sound or stop music - call WaitForSoundToFinish ;XXX: wait for sound to be done - ld a, [$D7F1] ;has to do with having met Bill - bit 0, a - jr nz, .billsPC ;if you've met bill, use that bill's instead of someone's - ld hl, AccessedSomeonesPCText - jr .printText -.billsPC - ld hl, AccessedBillsPCText -.printText - call PrintText - ld b, BANK(BillsPC_) - ld hl, BillsPC_ - call Bankswitch -ReloadMainMenu: ; 17f06 (5:7f06) - xor a - ld [$CC3C], a - call ReloadMapData - call UpdateSprites ;XXX: moves sprites - jp PCMainMenu -LogOff: ; 17f13 (5:7f13) - ld a, (SFX_02_46 - SFX_Headers_02) / 3 - call PlaySound ;XXX: play sound or stop music - call WaitForSoundToFinish ;XXX: wait for sound to be done - ld hl, wFlags_0xcd60 - res 3, [hl] - res 5, [hl] - ret - -TurnedOnPC1Text: ; 17f23 (5:7f23) - TX_FAR _TurnedOnPC1Text - db "@" - -AccessedBillsPCText: ; 17f28 (5:7f28) - TX_FAR _AccessedBillsPCText - db "@" - -AccessedSomeonesPCText: ; 17f2d (5:7f2d) - TX_FAR _AccessedSomeonesPCText - db "@" - -AccessedMyPCText: ; 17f32 (5:7f32) - TX_FAR _AccessedMyPCText - db "@" - -; removes one of the specified item ID [$FFdb] from bag (if existent) -RemoveItemByID: ; 17f37 (5:7f37) - ld hl, wBagItems ; $d31e - ld a, [$ffdb] - ld b, a - xor a - ld [$ffdc], a -.asm_17f40 - ld a, [hli] - cp $ff - ret z - cp b - jr z, .asm_17f4f - inc hl - ld a, [$ffdc] - inc a - ld [$ffdc], a - jr .asm_17f40 -.asm_17f4f - ld a, $1 - ld [$cf96], a - ld a, [$ffdc] - ld [wWhichPokemon], a ; $cf92 - ld hl, wNumBagItems ; $d31d - jp RemoveItemFromInventory - -SECTION "bank6",ROMX,BANK[$6] - -CeladonCity_h: ; 18000 (6:4000) - db OVERWORLD ; tileset - db CELADON_CITY_HEIGHT, CELADON_CITY_WIDTH ; dimensions (y, x) - dw CeladonCityBlocks, CeladonCityTextPointers, CeladonCityScript ; blocks, texts, scripts - db WEST | EAST ; connections - WEST_MAP_CONNECTION ROUTE_16, ROUTE_16_WIDTH, 4, 0, ROUTE_16_HEIGHT, Route16Blocks, CELADON_CITY_WIDTH - EAST_MAP_CONNECTION ROUTE_7, ROUTE_7_WIDTH, 4, 0, ROUTE_7_HEIGHT, Route7Blocks, CELADON_CITY_WIDTH - dw CeladonCityObject ; objects - -CeladonCityObject: ; 0x18022 (size=189) - db $f ; border tile - - db $d ; warps - db $d, $8, $0, CELADON_MART_1 - db $d, $a, $2, CELADON_MART_1 - db $9, $18, $0, CELADON_MANSION_1 - db $3, $18, $2, CELADON_MANSION_1 - db $3, $19, $2, CELADON_MANSION_1 - db $9, $29, $0, CELADON_POKECENTER - db $1b, $c, $0, CELADON_GYM - db $13, $1c, $0, GAME_CORNER - db $13, $27, $0, CELADON_MART_5 ; beta warp! no longer used - db $13, $21, $0, CELADON_PRIZE_ROOM - db $1b, $1f, $0, CELADON_DINER - db $1b, $23, $0, CELADON_HOUSE - db $1b, $2b, $0, CELADON_HOTEL - - db $9 ; signs - db $f, $1b, $a ; CeladonCityText10 - db $f, $13, $b ; CeladonCityText11 - db $9, $2a, $c ; PokeCenterSignText - db $1d, $d, $d ; CeladonCityText13 - db $9, $15, $e ; CeladonCityText14 - db $d, $c, $f ; CeladonCityText15 - db $15, $27, $10 ; CeladonCityText16 - db $15, $21, $11 ; CeladonCityText17 - db $15, $1b, $12 ; CeladonCityText18 - - db $9 ; people - db SPRITE_LITTLE_GIRL, $11 + 4, $8 + 4, $fe, $0, $1 ; person - db SPRITE_OLD_PERSON, $1c + 4, $b + 4, $ff, $d1, $2 ; person - db SPRITE_GIRL, $13 + 4, $e + 4, $fe, $1, $3 ; person - db SPRITE_OLD_PERSON, $16 + 4, $19 + 4, $ff, $d0, $4 ; person - db SPRITE_OLD_PERSON, $10 + 4, $16 + 4, $ff, $d0, $5 ; person - db SPRITE_FISHER2, $c + 4, $20 + 4, $ff, $d2, $6 ; person - db SPRITE_SLOWBRO, $c + 4, $1e + 4, $ff, $d3, $7 ; person - db SPRITE_ROCKET, $1d + 4, $20 + 4, $fe, $2, $8 ; person - db SPRITE_ROCKET, $e + 4, $2a + 4, $fe, $2, $9 ; person - - ; warp-to - EVENT_DISP CELADON_CITY_WIDTH, $d, $8 ; CELADON_MART_1 - EVENT_DISP CELADON_CITY_WIDTH, $d, $a ; CELADON_MART_1 - EVENT_DISP CELADON_CITY_WIDTH, $9, $18 ; CELADON_MANSION_1 - EVENT_DISP CELADON_CITY_WIDTH, $3, $18 ; CELADON_MANSION_1 - EVENT_DISP CELADON_CITY_WIDTH, $3, $19 ; CELADON_MANSION_1 - EVENT_DISP CELADON_CITY_WIDTH, $9, $29 ; CELADON_POKECENTER - EVENT_DISP CELADON_CITY_WIDTH, $1b, $c ; CELADON_GYM - EVENT_DISP CELADON_CITY_WIDTH, $13, $1c ; GAME_CORNER - EVENT_DISP CELADON_CITY_WIDTH, $13, $27 ; CELADON_MART_5 - EVENT_DISP CELADON_CITY_WIDTH, $13, $21 ; CELADON_PRIZE_ROOM - EVENT_DISP CELADON_CITY_WIDTH, $1b, $1f ; CELADON_DINER - EVENT_DISP CELADON_CITY_WIDTH, $1b, $23 ; CELADON_HOUSE - EVENT_DISP CELADON_CITY_WIDTH, $1b, $2b ; CELADON_HOTEL - -CeladonCityBlocks: ; 180df (6:40df) - INCBIN "maps/celadoncity.blk" - -PalletTown_h: ; 182a1 (6:42a1) - db OVERWORLD ; tileset - db PALLET_TOWN_HEIGHT, PALLET_TOWN_WIDTH ; dimensions - dw PalletTownBlocks, PalletTownTextPointers, PalletTownScript - db NORTH | SOUTH ; connections - NORTH_MAP_CONNECTION ROUTE_1, ROUTE_1_WIDTH, ROUTE_1_HEIGHT, 0, 0, ROUTE_1_WIDTH, Route1Blocks - SOUTH_MAP_CONNECTION ROUTE_21, ROUTE_21_WIDTH, 0, 0, ROUTE_21_WIDTH, Route21Blocks, PALLET_TOWN_WIDTH, PALLET_TOWN_HEIGHT - dw PalletTownObject - -PalletTownObject: ; 0x182c3 (size=58) - db $b ; border tile - - db $3 ; warps - db $5, $5, $0, REDS_HOUSE_1F - db $5, $d, $0, BLUES_HOUSE - db $b, $c, $1, OAKS_LAB - - db $4 ; signs - db $d, $d, $4 ; PalletTownText4 - db $9, $7, $5 ; PalletTownText5 - db $5, $3, $6 ; PalletTownText6 - db $5, $b, $7 ; PalletTownText7 - - db $3 ; people - db SPRITE_OAK, $5 + 4, $8 + 4, $ff, $ff, $1 ; person - db SPRITE_GIRL, $8 + 4, $3 + 4, $fe, $0, $2 ; person - db SPRITE_FISHER2, $e + 4, $b + 4, $fe, $0, $3 ; person - - ; warp-to - EVENT_DISP PALLET_TOWN_WIDTH, $5, $5 ; REDS_HOUSE_1F - EVENT_DISP PALLET_TOWN_WIDTH, $5, $d ; BLUES_HOUSE - EVENT_DISP PALLET_TOWN_WIDTH, $b, $c ; OAKS_LAB - -PalletTownBlocks: ; 182fd (6:42fd) - INCBIN "maps/pallettown.blk" - -ViridianCity_h: ; 0x18357 to 0x18384 (45 bytes) (bank=6) (id=1) - db OVERWORLD ; tileset - db VIRIDIAN_CITY_HEIGHT, VIRIDIAN_CITY_WIDTH ; dimensions (y, x) - dw ViridianCityBlocks, ViridianCityTextPointers, ViridianCityScript ; blocks, texts, scripts - db NORTH | SOUTH | WEST ; connections - NORTH_MAP_CONNECTION ROUTE_2, ROUTE_2_WIDTH, ROUTE_2_HEIGHT, 5, 0, ROUTE_2_WIDTH, Route2Blocks - SOUTH_MAP_CONNECTION ROUTE_1, ROUTE_1_WIDTH, 5, 0, ROUTE_1_WIDTH, Route1Blocks, VIRIDIAN_CITY_WIDTH, VIRIDIAN_CITY_HEIGHT - WEST_MAP_CONNECTION ROUTE_22, ROUTE_22_WIDTH, 4, 0, ROUTE_22_HEIGHT, Route22Blocks, VIRIDIAN_CITY_WIDTH - dw ViridianCityObject ; objects - -ViridianCityObject: ; 0x18384 (size=104) - db $f ; border tile - - db $5 ; warps - db $19, $17, $0, VIRIDIAN_POKECENTER - db $13, $1d, $0, VIRIDIAN_MART - db $f, $15, $0, VIRIDIAN_SCHOOL - db $9, $15, $0, VIRIDIAN_HOUSE - db $7, $20, $0, VIRIDIAN_GYM - - db $6 ; signs - db $11, $11, $8 ; ViridianCityText8 - db $1, $13, $9 ; ViridianCityText9 - db $1d, $15, $a ; ViridianCityText10 - db $13, $1e, $b ; MartSignText - db $19, $18, $c ; PokeCenterSignText - db $7, $1b, $d ; ViridianCityText13 - - db $7 ; people - db SPRITE_BUG_CATCHER, $14 + 4, $d + 4, $fe, $0, $1 ; person - db SPRITE_GAMBLER, $8 + 4, $1e + 4, $ff, $ff, $2 ; person - db SPRITE_BUG_CATCHER, $19 + 4, $1e + 4, $fe, $0, $3 ; person - db SPRITE_GIRL, $9 + 4, $11 + 4, $ff, $d3, $4 ; person - db SPRITE_LYING_OLD_MAN, $9 + 4, $12 + 4, $ff, $ff, $5 ; person - db SPRITE_FISHER2, $17 + 4, $6 + 4, $ff, $d0, $6 ; person - db SPRITE_GAMBLER, $5 + 4, $11 + 4, $fe, $2, $7 ; person - - ; warp-to - EVENT_DISP VIRIDIAN_CITY_WIDTH, $19, $17 ; VIRIDIAN_POKECENTER - EVENT_DISP VIRIDIAN_CITY_WIDTH, $13, $1d ; VIRIDIAN_MART - EVENT_DISP VIRIDIAN_CITY_WIDTH, $f, $15 ; VIRIDIAN_SCHOOL - EVENT_DISP VIRIDIAN_CITY_WIDTH, $9, $15 ; VIRIDIAN_HOUSE - EVENT_DISP VIRIDIAN_CITY_WIDTH, $7, $20 ; VIRIDIAN_GYM - -ViridianCityBlocks: ; 183ec (6:43ec) - INCBIN "maps/viridiancity.blk" - -PewterCity_h: ; 0x18554 to 0x18576 (34 bytes) (bank=6) (id=2) - db OVERWORLD ; tileset - db PEWTER_CITY_HEIGHT, PEWTER_CITY_WIDTH ; dimensions (y, x) - dw PewterCityBlocks, PewterCityTextPointers, PewterCityScript ; blocks, texts, scripts - db SOUTH | EAST ; connections - SOUTH_MAP_CONNECTION ROUTE_2, ROUTE_2_WIDTH, 5, 0, ROUTE_2_WIDTH, Route2Blocks, PEWTER_CITY_WIDTH, PEWTER_CITY_HEIGHT - EAST_MAP_CONNECTION ROUTE_3, ROUTE_3_WIDTH, 4, 0, ROUTE_3_HEIGHT, Route3Blocks, PEWTER_CITY_WIDTH - dw PewterCityObject ; objects - - db $0 - -PewterCityObject: ; 0x18577 (size=111) - db $a ; border tile - - db $7 ; warps - db $7, $e, $0, MUSEUM_1F - db $5, $13, $2, MUSEUM_1F - db $11, $10, $0, PEWTER_GYM - db $d, $1d, $0, PEWTER_HOUSE_1 - db $11, $17, $0, PEWTER_MART - db $1d, $7, $0, PEWTER_HOUSE_2 - db $19, $d, $0, PEWTER_POKECENTER - - db $7 ; signs - db $1d, $13, $6 ; PewterCityText6 - db $13, $21, $7 ; PewterCityText7 - db $11, $18, $8 ; MartSignText - db $19, $e, $9 ; PokeCenterSignText - db $9, $f, $a ; PewterCityText10 - db $11, $b, $b ; PewterCityText11 - db $17, $19, $c ; PewterCityText12 - - db $5 ; people - db SPRITE_LASS, $f + 4, $8 + 4, $ff, $ff, $1 ; person - db SPRITE_BLACK_HAIR_BOY_1, $19 + 4, $11 + 4, $ff, $ff, $2 ; person - db SPRITE_BLACK_HAIR_BOY_2, $11 + 4, $1b + 4, $ff, $ff, $3 ; person - db SPRITE_BLACK_HAIR_BOY_2, $19 + 4, $1a + 4, $fe, $2, $4 ; person - db SPRITE_BUG_CATCHER, $10 + 4, $23 + 4, $ff, $d0, $5 ; person - - ; warp-to - EVENT_DISP PEWTER_CITY_WIDTH, $7, $e ; MUSEUM_1F - EVENT_DISP PEWTER_CITY_WIDTH, $5, $13 ; MUSEUM_1F - EVENT_DISP PEWTER_CITY_WIDTH, $11, $10 ; PEWTER_GYM - EVENT_DISP PEWTER_CITY_WIDTH, $d, $1d ; PEWTER_HOUSE_1 - EVENT_DISP PEWTER_CITY_WIDTH, $11, $17 ; PEWTER_MART - EVENT_DISP PEWTER_CITY_WIDTH, $1d, $7 ; PEWTER_HOUSE_2 - EVENT_DISP PEWTER_CITY_WIDTH, $19, $d ; PEWTER_POKECENTER - -PewterCityBlocks: ; 185e6 (6:45e6) - INCBIN "maps/pewtercity.blk" - -CeruleanCity_h: ; 0x1874e to 0x18786 (56 bytes) (bank=6) (id=3) - db OVERWORLD ; tileset - db CERULEAN_CITY_HEIGHT, CERULEAN_CITY_WIDTH ; dimensions (y, x) - dw CeruleanCityBlocks, CeruleanCityTextPointers, CeruleanCityScript ; blocks, texts, scripts - db NORTH | SOUTH | WEST | EAST ; connections - NORTH_MAP_CONNECTION ROUTE_24, ROUTE_24_WIDTH, ROUTE_24_HEIGHT, 5, 0, ROUTE_24_WIDTH, Route24Blocks - SOUTH_MAP_CONNECTION ROUTE_5, ROUTE_5_WIDTH, 5, 0, ROUTE_5_WIDTH, Route5Blocks, CERULEAN_CITY_WIDTH, CERULEAN_CITY_HEIGHT - WEST_MAP_CONNECTION ROUTE_4, ROUTE_4_WIDTH, 4, 0, ROUTE_4_HEIGHT, Route4Blocks, CERULEAN_CITY_WIDTH - EAST_MAP_CONNECTION ROUTE_9, ROUTE_9_WIDTH, 4, 0, ROUTE_9_HEIGHT, Route9Blocks, CERULEAN_CITY_WIDTH - dw CeruleanCityObject ; objects - -CeruleanCityObject: ; 0x18786 (size=170) - db $f ; border tile - - db $a ; warps - db $b, $1b, $0, TRASHED_HOUSE - db $f, $d, $0, CERULEAN_HOUSE - db $11, $13, $0, CERULEAN_POKECENTER - db $13, $1e, $0, CERULEAN_GYM - db $19, $d, $0, BIKE_SHOP - db $19, $19, $0, CERULEAN_MART - db $b, $4, $0, UNKNOWN_DUNGEON_1 - db $9, $1b, $2, TRASHED_HOUSE - db $b, $9, $1, CERULEAN_HOUSE_3 - db $9, $9, $0, CERULEAN_HOUSE_3 - - db $6 ; signs - db $13, $17, $c ; CeruleanCityText12 - db $1d, $11, $d ; CeruleanCityText13 - db $19, $1a, $e ; MartSignText - db $11, $14, $f ; PokeCenterSignText - db $19, $b, $10 ; CeruleanCityText16 - db $15, $1b, $11 ; CeruleanCityText17 - - db $b ; people - db SPRITE_BLUE, $2 + 4, $14 + 4, $ff, $d0, $1 ; person - db SPRITE_ROCKET, $8 + 4, $1e + 4, $ff, $ff, $42, ROCKET + $C8, $5 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $14 + 4, $1f + 4, $ff, $d0, $3 ; person - db SPRITE_BLACK_HAIR_BOY_2, $12 + 4, $f + 4, $fe, $1, $4 ; person - db SPRITE_BLACK_HAIR_BOY_2, $15 + 4, $9 + 4, $fe, $2, $5 ; person - db SPRITE_GUARD, $c + 4, $1c + 4, $ff, $d0, $6 ; person - db SPRITE_LASS, $1a + 4, $1d + 4, $ff, $d2, $7 ; person - db SPRITE_SLOWBRO, $1a + 4, $1c + 4, $ff, $d0, $8 ; person - db SPRITE_LASS, $1b + 4, $9 + 4, $fe, $2, $9 ; person - db SPRITE_BLACK_HAIR_BOY_2, $c + 4, $4 + 4, $ff, $d0, $a ; person - db SPRITE_GUARD, $c + 4, $1b + 4, $ff, $d0, $b ; person - - ; warp-to - EVENT_DISP CERULEAN_CITY_WIDTH, $b, $1b ; TRASHED_HOUSE - EVENT_DISP CERULEAN_CITY_WIDTH, $f, $d ; CERULEAN_HOUSE - EVENT_DISP CERULEAN_CITY_WIDTH, $11, $13 ; CERULEAN_POKECENTER - EVENT_DISP CERULEAN_CITY_WIDTH, $13, $1e ; CERULEAN_GYM - EVENT_DISP CERULEAN_CITY_WIDTH, $19, $d ; BIKE_SHOP - EVENT_DISP CERULEAN_CITY_WIDTH, $19, $19 ; CERULEAN_MART - EVENT_DISP CERULEAN_CITY_WIDTH, $b, $4 ; UNKNOWN_DUNGEON_1 - EVENT_DISP CERULEAN_CITY_WIDTH, $9, $1b ; TRASHED_HOUSE - EVENT_DISP CERULEAN_CITY_WIDTH, $b, $9 ; CERULEAN_HOUSE_3 - EVENT_DISP CERULEAN_CITY_WIDTH, $9, $9 ; CERULEAN_HOUSE_3 - -CeruleanCityBlocks: ; 18830 (6:4830) - INCBIN "maps/ceruleancity.blk" - -VermilionCity_h: ; 0x18998 to 0x189ba (34 bytes) (bank=6) (id=5) - db OVERWORLD ; tileset - db VERMILION_CITY_HEIGHT, VERMILION_CITY_WIDTH ; dimensions (y, x) - dw VermilionCityBlocks, VermilionCityTextPointers, VermilionCityScript ; blocks, texts, scripts - db NORTH | EAST ; connections - NORTH_MAP_CONNECTION ROUTE_6, ROUTE_6_WIDTH, ROUTE_6_HEIGHT, 5, 0, ROUTE_6_WIDTH, Route6Blocks - EAST_MAP_CONNECTION ROUTE_11, ROUTE_11_WIDTH, 4, 0, ROUTE_11_HEIGHT, Route11Blocks, VERMILION_CITY_WIDTH - dw VermilionCityObject ; objects - -VermilionCityObject: ; 0x189ba (size=133) - db $43 ; border tile - - db $9 ; warps - db $3, $b, $0, VERMILION_POKECENTER - db $d, $9, $0, POKEMON_FAN_CLUB - db $d, $17, $0, VERMILION_MART - db $13, $c, $0, VERMILION_GYM - db $13, $17, $0, VERMILION_HOUSE_1 - db $1f, $12, $0, VERMILION_DOCK - db $1f, $13, $0, VERMILION_DOCK - db $d, $f, $0, VERMILION_HOUSE_3 - db $3, $7, $0, VERMILION_HOUSE_2 - - db $7 ; signs - db $3, $1b, $7 ; VermilionCityText7 - db $d, $25, $8 ; VermilionCityText8 - db $d, $18, $9 ; MartSignText - db $3, $c, $a ; PokeCenterSignText - db $d, $7, $b ; VermilionCityText11 - db $13, $7, $c ; VermilionCityText12 - db $f, $1d, $d ; VermilionCityText13 - - db $6 ; people - db SPRITE_FOULARD_WOMAN, $7 + 4, $13 + 4, $fe, $2, $1 ; person - db SPRITE_GAMBLER, $6 + 4, $e + 4, $ff, $ff, $2 ; person - db SPRITE_SAILOR, $1e + 4, $13 + 4, $ff, $d1, $3 ; person - db SPRITE_GAMBLER, $7 + 4, $1e + 4, $ff, $ff, $4 ; person - db SPRITE_SLOWBRO, $9 + 4, $1d + 4, $fe, $1, $5 ; person - db SPRITE_SAILOR, $1b + 4, $19 + 4, $fe, $2, $6 ; person - - ; warp-to - EVENT_DISP VERMILION_CITY_WIDTH, $3, $b ; VERMILION_POKECENTER - EVENT_DISP VERMILION_CITY_WIDTH, $d, $9 ; POKEMON_FAN_CLUB - EVENT_DISP VERMILION_CITY_WIDTH, $d, $17 ; VERMILION_MART - EVENT_DISP VERMILION_CITY_WIDTH, $13, $c ; VERMILION_GYM - EVENT_DISP VERMILION_CITY_WIDTH, $13, $17 ; VERMILION_HOUSE_1 - EVENT_DISP VERMILION_CITY_WIDTH, $1f, $12 ; VERMILION_DOCK - EVENT_DISP VERMILION_CITY_WIDTH, $1f, $13 ; VERMILION_DOCK - EVENT_DISP VERMILION_CITY_WIDTH, $d, $f ; VERMILION_HOUSE_3 - EVENT_DISP VERMILION_CITY_WIDTH, $3, $7 ; VERMILION_HOUSE_2 - -VermilionCityBlocks: ; 18a3f (6:4a3f) - INCBIN "maps/vermilioncity.blk" - -FuchsiaCity_h: ; 0x18ba7 to 0x18bd4 (45 bytes) (bank=6) (id=7) - db OVERWORLD ; tileset - db FUCHSIA_CITY_HEIGHT, FUCHSIA_CITY_WIDTH ; dimensions (y, x) - dw FuchsiaCityBlocks, FuchsiaCityTextPointers, FuchsiaCityScript ; blocks, texts, scripts - db SOUTH | WEST | EAST ; connections - SOUTH_MAP_CONNECTION ROUTE_19, ROUTE_19_WIDTH, 5, 0, ROUTE_19_WIDTH, Route19Blocks, FUCHSIA_CITY_WIDTH, FUCHSIA_CITY_HEIGHT - WEST_MAP_CONNECTION ROUTE_18, ROUTE_18_WIDTH, 4, 0, ROUTE_18_HEIGHT, Route18Blocks, FUCHSIA_CITY_WIDTH - EAST_MAP_CONNECTION ROUTE_15, ROUTE_15_WIDTH, 4, 0, ROUTE_15_HEIGHT, Route15Blocks, FUCHSIA_CITY_WIDTH - dw FuchsiaCityObject ; objects - -FuchsiaCityObject: ; 0x18bd4 (size=178) - db $f ; border tile - - db $9 ; warps - db $d, $5, $0, FUCHSIA_MART - db $1b, $b, $0, FUCHSIA_HOUSE_1 - db $1b, $13, $0, FUCHSIA_POKECENTER - db $1b, $1b, $0, FUCHSIA_HOUSE_2 - db $3, $12, $0, SAFARI_ZONE_ENTRANCE - db $1b, $5, $0, FUCHSIA_GYM - db $d, $16, $0, FUCHSIA_MEETING_ROOM - db $1b, $1f, $1, FUCHSIA_HOUSE_3 - db $18, $1f, $0, FUCHSIA_HOUSE_3 - - db $e ; signs - db $17, $f, $b ; FuchsiaCityText11 - db $f, $19, $c ; FuchsiaCityText12 - db $5, $11, $d ; FuchsiaCityText13 - db $d, $6, $e ; MartSignText - db $1b, $14, $f ; PokeCenterSignText - db $1d, $1b, $10 ; FuchsiaCityText16 - db $f, $15, $11 ; FuchsiaCityText17 - db $1d, $5, $12 ; FuchsiaCityText18 - db $7, $21, $13 ; FuchsiaCityText19 - db $7, $1b, $14 ; FuchsiaCityText20 - db $7, $d, $15 ; FuchsiaCityText21 - db $d, $1f, $16 ; FuchsiaCityText22 - db $f, $d, $17 ; FuchsiaCityText23 - db $7, $7, $18 ; FuchsiaCityText24 - - db $a ; people - db SPRITE_BUG_CATCHER, $c + 4, $a + 4, $fe, $2, $1 ; person - db SPRITE_GAMBLER, $11 + 4, $1c + 4, $fe, $2, $2 ; person - db SPRITE_FISHER2, $e + 4, $1e + 4, $ff, $d0, $3 ; person - db SPRITE_BUG_CATCHER, $8 + 4, $18 + 4, $ff, $d1, $4 ; person - db SPRITE_CLEFAIRY, $5 + 4, $1f + 4, $fe, $0, $5 ; person - db SPRITE_BALL, $6 + 4, $19 + 4, $ff, $ff, $6 ; person - db SPRITE_SLOWBRO, $6 + 4, $c + 4, $fe, $2, $7 ; person - db SPRITE_SLOWBRO, $c + 4, $1e + 4, $fe, $2, $8 ; person - db SPRITE_SEEL, $11 + 4, $8 + 4, $fe, $0, $9 ; person - db SPRITE_OMANYTE, $5 + 4, $6 + 4, $ff, $ff, $a ; person - - ; warp-to - EVENT_DISP FUCHSIA_CITY_WIDTH, $d, $5 ; FUCHSIA_MART - EVENT_DISP FUCHSIA_CITY_WIDTH, $1b, $b ; FUCHSIA_HOUSE_1 - EVENT_DISP FUCHSIA_CITY_WIDTH, $1b, $13 ; FUCHSIA_POKECENTER - EVENT_DISP FUCHSIA_CITY_WIDTH, $1b, $1b ; FUCHSIA_HOUSE_2 - EVENT_DISP FUCHSIA_CITY_WIDTH, $3, $12 ; SAFARI_ZONE_ENTRANCE - EVENT_DISP FUCHSIA_CITY_WIDTH, $1b, $5 ; FUCHSIA_GYM - EVENT_DISP FUCHSIA_CITY_WIDTH, $d, $16 ; FUCHSIA_MEETING_ROOM - EVENT_DISP FUCHSIA_CITY_WIDTH, $1b, $1f ; FUCHSIA_HOUSE_3 - EVENT_DISP FUCHSIA_CITY_WIDTH, $18, $1f ; FUCHSIA_HOUSE_3 - -FuchsiaCityBlocks: ; 18c86 (6:4c86) - INCBIN "maps/fuchsiacity.blk" - -Func_18dee: ; 18dee (6:4dee) - call Func_18e36 - ld a, [$d732] - bit 0, a - ret z - ld a, [W_PLAYTIMEMINUTES] ; $da42 - and a - ret nz - ld a, [W_PLAYTIMEFRAMES] ; $da45 - inc a - ld [W_PLAYTIMEFRAMES], a ; $da45 - cp $3c - ret nz - xor a - ld [W_PLAYTIMEFRAMES], a ; $da45 - ld a, [W_PLAYTIMESECONDS] ; $da44 - inc a - ld [W_PLAYTIMESECONDS], a ; $da44 - cp $3c - ret nz - xor a - ld [W_PLAYTIMESECONDS], a ; $da44 - ld a, [$da43] - inc a - ld [$da43], a - cp $3c - ret nz - xor a - ld [$da43], a - ld a, [$da41] - inc a - ld [$da41], a - cp $ff - ret nz - ld a, $ff - ld [W_PLAYTIMEMINUTES], a ; $da42 - ret - -Func_18e36: ; 18e36 (6:4e36) - ld a, [$d13a] - and a - jr nz, .asm_18e40 - ld a, $ff - jr .asm_18e41 -.asm_18e40 - dec a -.asm_18e41 - ld [$d13a], a - and a - ret nz - ld a, [$d730] - res 1, a - res 2, a - bit 5, a - res 5, a - ld [$d730], a - ret z - xor a - ld [H_NEWLYPRESSEDBUTTONS], a - ld [H_CURRENTPRESSEDBUTTONS], a - ret - -PalletTownScript: ; 18e5b (6:4e5b) - ld a,[$D74B] - bit 4,a - jr z,.next - ld hl,$D747 - set 6,[hl] -.next - call EnableAutoTextBoxDrawing - ld hl,PalletTownScriptPointers - ld a,[W_PALLETTOWNCURSCRIPT] - jp CallFunctionInTable - -PalletTownScriptPointers: ; 18e73 (6:4e73) - dw PalletTownScript0 - dw PalletTownScript1 - dw PalletTownScript2 - dw PalletTownScript3 - dw PalletTownScript4 - dw PalletTownScript5 - dw PalletTownScript6 - -PalletTownScript0: ; 18e81 (6:4e81) - ld a,[$D747] - bit 0,a - ret nz - ld a,[W_YCOORD] - cp 1 ; is player near north exit? - ret nz - xor a - ld [H_CURRENTPRESSEDBUTTONS],a - ld a,4 - ld [$D528],a - ld a,$FF - call PlaySound ; stop music - ld a, BANK(Music_MeetProfOak) - ld c,a ; song bank - ld a, MUSIC_MEET_PROF_OAK ; “oak appears” music - call PlayMusic ; plays music - ld a,$FC - ld [wJoypadForbiddenButtonsMask],a - ld hl,$D74B - set 7,[hl] - - ; trigger the next script - ld a,1 - ld [W_PALLETTOWNCURSCRIPT],a - ret - -PalletTownScript1: ; 18eb2 (6:4eb2) - xor a - ld [$CF0D],a - ld a,1 - ld [$FF8C],a - call DisplayTextID - ld a,$FF - ld [wJoypadForbiddenButtonsMask],a - ld a,0 - ld [$CC4D],a - ld a,$15 - call Predef - - ; trigger the next script - ld a,2 - ld [W_PALLETTOWNCURSCRIPT],a - ret - -PalletTownScript2: ; 18ed2 (6:4ed2) - ld a,1 - ld [$FF8C],a - ld a,4 - ld [$FF8D],a - call Func_34a6 - call Delay3 - ld a,1 - ld [W_YCOORD],a - ld a,1 - ld [$FF9B],a - ld a,1 - swap a - ld [$FF95],a - ld a,$22 - call Predef - ld hl,$FF95 - dec [hl] - ld a,$20 - call Predef ; load Oak’s movement into $CC97 - ld de,$CC97 - ld a,1 ; oak - ld [$FF8C],a - call MoveSprite - ld a,$FF - ld [wJoypadForbiddenButtonsMask],a - - ; trigger the next script - ld a,3 - ld [W_PALLETTOWNCURSCRIPT],a - ret - -PalletTownScript3: ; 18f12 (6:4f12) - ld a,[$D730] - bit 0,a - ret nz - xor a - ld [$C109],a - ld a,1 - ld [$CF0D],a - ld a,$FC - ld [wJoypadForbiddenButtonsMask],a - ld a,1 - ld [$FF8C],a - call DisplayTextID - ld a,$FF - ld [wJoypadForbiddenButtonsMask],a - ld a,1 - ld [$CF13],a - xor a - ld [$CF10],a - ld a,1 - ld [$CC57],a - ld a,[H_LOADEDROMBANK] - ld [$CC58],a - - ; trigger the next script - ld a,4 - ld [W_PALLETTOWNCURSCRIPT],a - ret - -PalletTownScript4: ; 18f4b (6:4f4b) - ld a,[$CC57] - and a - ret nz - - ; trigger the next script - ld a,5 - ld [W_PALLETTOWNCURSCRIPT],a - ret - -PalletTownScript5: ; 18f56 (6:4f56) - ld a,[$D74A] - bit 2,a - jr nz,.next - and 3 - cp 3 - jr nz,.next - ld hl,$D74A - set 2,[hl] - ld a,$27 - ld [$CC4D],a - ld a,$11 - call Predef - ld a,$28 - ld [$CC4D],a - ld a,$15 - jp Predef -.next - ld a,[$D74B] - bit 4,a - ret z - ld hl,$D74B - set 6,[hl] -PalletTownScript6: ; 18f87 (6:4f87) - ret - -PalletTownTextPointers: ; 18f88 (6:4f88) - dw PalletTownText1 - dw PalletTownText2 - dw PalletTownText3 - dw PalletTownText4 - dw PalletTownText5 - dw PalletTownText6 - dw PalletTownText7 - -PalletTownText1: ; 18f96 (6:4f96) - db 8 - ld a,[$CF0D] - and a - jr nz,.next - ld a,1 - ld [$CC3C],a - ld hl,OakAppearsText - jr .done -.next - ld hl,OakWalksUpText -.done - call PrintText - jp TextScriptEnd - -OakAppearsText: ; 18fb0 (6:4fb0) - TX_FAR _OakAppearsText - db 8 - ld c,10 - call DelayFrames - xor a - ld [$CD4F],a - ld [$CD50],a - ld a,$4C - call Predef ; display ! over head - ld a,4 - ld [$D528],a - jp TextScriptEnd - -OakWalksUpText: ; 18fce (6:4fce) - TX_FAR _OakWalksUpText - db "@" - -PalletTownText2: ; 0x18fd3 girl - TX_FAR _PalletTownText2 - db "@" - -PalletTownText3: ; 0x18fd8 fat man - TX_FAR _PalletTownText3 - db "@" - -PalletTownText4: ; 0x18fdd sign by lab - TX_FAR _PalletTownText4 - db "@" - -PalletTownText5: ; 0x18fe2 sign by fence - TX_FAR _PalletTownText5 - db "@" - -PalletTownText6: ; 0x18fe7 sign by Red’s house - TX_FAR _PalletTownText6 - db "@" - -PalletTownText7: ; 0x18fec sign by Blue’s house - TX_FAR _PalletTownText7 - db "@" - -ViridianCityScript: ; 18ff1 (6:4ff1) - call EnableAutoTextBoxDrawing - ld hl, ViridianCityScriptPointers - ld a, [W_VIRIDIANCITYCURSCRIPT] - jp CallFunctionInTable - -ViridianCityScriptPointers: ; 18ffd (6:4ffd) - dw ViridianCityScript0 - dw ViridianCityScript1 - dw ViridianCityScript2 - dw ViridianCityScript3 - -ViridianCityScript0: ; 19005 (6:5005) - call ViridianCityScript_1900b - jp ViridianCityScript_1903d - -ViridianCityScript_1900b: ; 1900b (6:500b) - ld a, [$d74c] - bit 0, a - ret nz - ld a, [W_OBTAINEDBADGES] - cp %01111111 - jr nz, .asm_1901e ; 0x19016 $6 - ld hl, $d74c - set 0, [hl] - ret -.asm_1901e - ld a, [W_YCOORD] - cp $8 - ret nz - ld a, [W_XCOORD] - cp $20 - ret nz - ld a, $e - ld [$ff8c], a - call DisplayTextID - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - call ViridianCityScript_190cf - ld a, $3 - ld [W_VIRIDIANCITYCURSCRIPT], a - ret - -ViridianCityScript_1903d: ; 1903d (6:503d) - ld a, [$d74b] - bit 5, a - ret nz - ld a, [W_YCOORD] - cp $9 - ret nz - ld a, [W_XCOORD] - cp $13 - ret nz - ld a, $5 - ld [$ff8c], a - call DisplayTextID - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - call ViridianCityScript_190cf - ld a, $3 - ld [W_VIRIDIANCITYCURSCRIPT], a - ret - -ViridianCityScript1: ; 19062 (6:5062) - ld a, [$c134] - ld [$ffeb], a - ld a, [$c136] - ld [$ffec], a - ld a, [$c234] - ld [$ffed], a - ld a, [$c235] - ld [$ffee], a - xor a - ld [wListScrollOffset], a - - ; set up battle for Old Man - ld a, $1 - ld [W_BATTLETYPE], a - ld a, 5 - ld [W_CURENEMYLVL], a - ld a, WEEDLE - ld [W_CUROPPONENT], a - ld a, $2 - ld [W_VIRIDIANCITYCURSCRIPT], a - ret - -ViridianCityScript2: ; 1908f (6:508f) - ld a, [$ffeb] - ld [$c134], a - ld a, [$ffec] - ld [$c136], a - ld a, [$ffed] - ld [$c234], a - ld a, [$ffee] - ld [$c235], a - call UpdateSprites - call Delay3 - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $f - ld [$ff8c], a - call DisplayTextID - xor a - ld [W_BATTLETYPE], a - ld [wJoypadForbiddenButtonsMask], a - ld a, $0 - ld [W_VIRIDIANCITYCURSCRIPT], a - ret - -ViridianCityScript3: ; 190c1 (6:50c1) - ld a, [$cd38] - and a - ret nz - call Delay3 - ld a, 0 - ld [W_VIRIDIANCITYCURSCRIPT], a - ret - -ViridianCityScript_190cf: ; 190cf (6:50cf) - call Func_3486 - ld a, $1 - ld [$cd38], a - ld a, $80 - ld [$ccd3], a - xor a - ld [$c109], a - ld [wJoypadForbiddenButtonsMask], a - ret - -ViridianCityTextPointers: ; 190e4 (6:50e4) - dw ViridianCityText1 - dw ViridianCityText2 - dw ViridianCityText3 - dw ViridianCityText4 - dw ViridianCityText5 - dw ViridianCityText6 - dw ViridianCityText7 - dw ViridianCityText8 - dw ViridianCityText9 - dw ViridianCityText10 - dw MartSignText - dw PokeCenterSignText - dw ViridianCityText13 - dw ViridianCityText14 - dw ViridianCityText15 - -ViridianCityText1: ; 19102 (6:5102) - TX_FAR _ViridianCityText1 - db "@" - -ViridianCityText2: ; 19107 (6:5107) - db $08 ; asm - ld a, [W_OBTAINEDBADGES] - cp %01111111 - ld hl, UnnamedText_19127 - jr z, .asm_ae9fe ; 0x19110 - ld a, [$d751] - bit 1, a - jr nz, .asm_ae9fe ; 0x19117 - ld hl, UnnamedText_19122 -.asm_ae9fe ; 0x1911c - call PrintText - jp TextScriptEnd - -UnnamedText_19122: ; 19122 (6:5122) - TX_FAR _UnnamedText_19122 - db "@" - -UnnamedText_19127: ; 19127 (6:5127) - TX_FAR _UnnamedText_19127 - db "@" - -ViridianCityText3: ; 1912c (6:512c) - db $08 ; asm - ld hl, UnnamedText_1914d - call PrintText - call YesNoChoice - ld a, [$cc26] - and a - jr nz, .asm_6dfea ; 0x1913a - ld hl, UnnamedText_19157 - call PrintText - jr .asm_d611f ; 0x19142 -.asm_6dfea ; 0x19144 - ld hl, UnnamedText_19152 - call PrintText -.asm_d611f ; 0x1914a - jp TextScriptEnd - -UnnamedText_1914d: ; 1914d (6:514d) - TX_FAR _UnnamedText_1914d - db "@" - -UnnamedText_19152: ; 19152 (6:5152) - TX_FAR _UnnamedText_19152 - db "@" - -UnnamedText_19157: ; 19157 (6:5157) - TX_FAR _UnnamedText_19157 - db "@" - -ViridianCityText4: ; 1915c (6:515c) - db $08 ; asm - ld a, [$d74b] - bit 5, a - jr nz, .asm_83894 ; 0x19162 - ld hl, UnnamedText_19175 - call PrintText - jr .asm_700a6 ; 0x1916a -.asm_83894 ; 0x1916c - ld hl, UnnamedText_1917a - call PrintText -.asm_700a6 ; 0x19172 - jp TextScriptEnd - -UnnamedText_19175: ; 19175 (6:5175) - TX_FAR _UnnamedText_19175 - db "@" - -UnnamedText_1917a: ; 1917a (6:517a) - TX_FAR _UnnamedText_1917a - db "@" - -ViridianCityText5: ; 1917f (6:517f) - db $08 ; asm - ld hl, UnnamedText_19191 - call PrintText - call ViridianCityScript_190cf - ld a, $3 - ld [W_VIRIDIANCITYCURSCRIPT], a - jp TextScriptEnd - -UnnamedText_19191: ; 19191 (6:5191) - TX_FAR _UnnamedText_19191 - db "@" - -ViridianCityText6: ; 19196 (6:5196) - db $08 ; asm - ld a, [$d74c] - bit 1, a - jr nz, .asm_4e5a0 ; 0x1919c - ld hl, UnnamedText_191ca - call PrintText - ld bc, (TM_42 << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, ReceivedTM42Text - call PrintText - ld hl, $d74c - set 1, [hl] - jr .asm_3c73c ; 0x191b7 -.BagFull - ld hl, TM42NoRoomText - call PrintText - jr .asm_3c73c ; 0x191bf -.asm_4e5a0 ; 0x191c1 - ld hl, TM42Explanation - call PrintText -.asm_3c73c ; 0x191c7 - jp TextScriptEnd - -UnnamedText_191ca: ; 191ca (6:51ca) - TX_FAR _UnnamedText_191ca - db "@" - -ReceivedTM42Text: ; 191cf (6:51cf) - TX_FAR _ReceivedTM42Text - db $10, "@" - -TM42Explanation: ; 191d5 (6:51d5) - TX_FAR _TM42Explanation - db "@" - -TM42NoRoomText: ; 191da (6:51da) - TX_FAR _TM42NoRoomText - db "@" - -ViridianCityText7: ; 191df (6:51df) - db $08 ; asm - ld hl, UnnamedText_1920a - call PrintText - ld c, $2 - call DelayFrames - call YesNoChoice - ld a, [$cc26] - and a - jr z, .asm_42f68 ; 0x191f2 - ld hl, UnnamedText_1920f - call PrintText - ld a, $1 - ld [W_VIRIDIANCITYCURSCRIPT], a - jr .asm_2413a ; 0x191ff -.asm_42f68 ; 0x19201 - ld hl, UnnamedText_19214 - call PrintText -.asm_2413a ; 0x19207 - jp TextScriptEnd - -UnnamedText_1920a: ; 1920a (6:520a) - TX_FAR _UnnamedText_1920a - db "@" - -UnnamedText_1920f: ; 1920f (6:520f) - TX_FAR _UnnamedText_1920f - db "@" - -UnnamedText_19214: ; 19214 (6:5214) - TX_FAR _UnnamedText_19214 - db "@" - -ViridianCityText15: ; 19219 (6:5219) - TX_FAR _UnnamedText_19219 - db "@" - -ViridianCityText8: ; 1921e (6:521e) - TX_FAR _ViridianCityText8 - db "@" - -ViridianCityText9: ; 19223 (6:5223) - TX_FAR _ViridianCityText9 - db "@" - -ViridianCityText10: ; 19228 (6:5228) - TX_FAR _ViridianCityText10 - db "@" - -ViridianCityText13: ; 1922d (6:522d) - TX_FAR _ViridianCityText13 - db "@" - -ViridianCityText14: ; 19232 (6:5232) - TX_FAR _ViridianCityText14 - db "@" - -PewterCityScript: ; 19237 (6:5237) - call EnableAutoTextBoxDrawing - ld hl, PewterCityScriptPointers - ld a, [W_PEWTERCITYCURSCRIPT] - jp CallFunctionInTable - -PewterCityScriptPointers: ; 19243 (6:5243) - dw PewterCityScript0 - dw PewterCityScript1 - dw PewterCityScript2 - dw PewterCityScript3 - dw PewterCityScript4 - dw PewterCityScript5 - dw PewterCityScript6 - -PewterCityScript0: ; 19251 (6:5251) - xor a - ld [W_MUSEUM1FCURSCRIPT], a - ld hl, $d754 - res 0, [hl] - call PewterCityScript_1925e - ret - -PewterCityScript_1925e: ; 1925e (6:525e) - ld a, [$d755] - bit 7, a - ret nz - ld hl, CoordsData_19277 - call ArePlayerCoordsInArray - ret nc - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld a, $5 - ld [$ff8c], a - jp DisplayTextID - -CoordsData_19277: ; 19277 (6:5277) - db $11,$23 - db $11,$24 - db $12,$25 - db $13,$25 - db $ff - -PewterCityScript1: ; 19280 (6:5280) - ld a, [$cc57] - and a - ret nz - ld a, $3 - ld [$ff8c], a - ld a, $4 - ld [$ff8d], a - call Func_34a6 - ld a, $34 - ld [$ff8d], a - call Func_34b9 - call Func_2307 - ld hl, wFlags_0xcd60 - set 4, [hl] - ld a, $d - ld [$ff8c], a - call DisplayTextID - ld a, $3c - ld [$ffeb], a - ld a, $30 - ld [$ffec], a - ld a, $c - ld [$ffed], a - ld a, $11 - ld [$ffee], a - ld a, $3 - ld [$cf13], a - call Func_32f9 - ld a, $3 - ld [$ff8c], a - ld de, MovementData_PewterMuseumGuyExit ; $52ce - call MoveSprite - ld a, $2 - ld [W_PEWTERCITYCURSCRIPT], a - ret - -MovementData_PewterMuseumGuyExit: ; 192ce (6:52ce) - db $00,$00,$00,$00,$FF - -PewterCityScript2: ; 192d3 (6:52d3) - ld a, [$d730] - bit 0, a - ret nz - ld a, $3 - ld [$cc4d], a - ld a, $11 - call Predef - ld a, $3 - ld [W_PEWTERCITYCURSCRIPT], a - ret - -PewterCityScript3: ; 192e9 (6:52e9) - ld a, $3 - ld [$cf13], a - call Func_32fe - ld a, $3 - ld [$cc4d], a - ld a, $15 - call Predef - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $0 - ld [W_PEWTERCITYCURSCRIPT], a - ret - -PewterCityScript4: ; 19305 (6:5305) - ld a, [$cc57] - and a - ret nz - ld a, $5 - ld [$ff8c], a - ld a, $8 - ld [$ff8d], a - call Func_34a6 - ld a, $18 - ld [$ff8d], a - call Func_34b9 - call Func_2307 - ld hl, wFlags_0xcd60 - set 4, [hl] - ld a, $e - ld [$ff8c], a - call DisplayTextID - ld a, $3c - ld [$ffeb], a - ld a, $40 - ld [$ffec], a - ld a, $16 - ld [$ffed], a - ld a, $10 - ld [$ffee], a - ld a, $5 - ld [$cf13], a - call Func_32f9 - ld a, $5 - ld [$ff8c], a - ld de, MovementData_PewterGymGuyExit - call MoveSprite - ld a, $5 - ld [W_PEWTERCITYCURSCRIPT], a - ret - -MovementData_PewterGymGuyExit: ; 19353 (6:5353) - db $C0,$C0,$C0,$C0,$C0,$FF - -PewterCityScript5: ; 19359 (6:5359) - ld a, [$d730] - bit 0, a - ret nz - ld a, $4 - ld [$cc4d], a - ld a, $11 - call Predef - ld a, $6 - ld [W_PEWTERCITYCURSCRIPT], a - ret - -PewterCityScript6: ; 1936f (6:536f) - ld a, $5 - ld [$cf13], a - call Func_32fe - ld a, $4 - ld [$cc4d], a - ld a, $15 - call Predef - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $0 - ld [W_PEWTERCITYCURSCRIPT], a - ret - -PewterCityTextPointers: ; 1938b (6:538b) - dw PewterCityText1 - dw PewterCityText2 - dw PewterCityText3 - dw PewterCityText4 - dw PewterCityText5 - dw PewterCityText6 - dw PewterCityText7 - dw MartSignText - dw PokeCenterSignText - dw PewterCityText10 - dw PewterCityText11 - dw PewterCityText12 - dw PewterCityText13 - dw PewterCityText14 - -PewterCityText1: ; 193a7 (6:53a7) - TX_FAR _PewterCityText1 - db "@" - -PewterCityText2: ; 193ac (6:53ac) - TX_FAR _PewterCityText2 - db "@" - -PewterCityText3: ; 193b1 (6:53b1) - db $08 ; asm - ld hl, UnnamedText_193f1 - call PrintText - call YesNoChoice - ld a, [$cc26] - and a - jr nz, .asm_f46a9 ; 0x193bf - ld hl, UnnamedText_193f6 - call PrintText - jr .asm_ac429 ; 0x193c7 -.asm_f46a9 ; 0x193c9 - ld hl, UnnamedText_193fb - call PrintText - xor a - ldh [$b3], a - ldh [$b4], a - ld [$cf10], a - ld a, $2 - ld [$cc57], a - ldh a, [$b8] - ld [$cc58], a - ld a, $3 - ld [$cf13], a - call Func_32f4 - ld a, $1 - ld [W_PEWTERCITYCURSCRIPT], a -.asm_ac429 ; 0x193ee - jp TextScriptEnd - -UnnamedText_193f1: ; 193f1 (6:53f1) - TX_FAR _UnnamedText_193f1 - db "@" - -UnnamedText_193f6: ; 193f6 (6:53f6) - TX_FAR _UnnamedText_193f6 - db "@" - -UnnamedText_193fb: ; 193fb (6:53fb) - TX_FAR _UnnamedText_193fb - db "@" - -PewterCityText13: ; 19400 (6:5400) - TX_FAR _PewterCityText13 - db "@" - -PewterCityText4: ; 19405 (6:5405) - db $8 - ld hl, UnnamedText_19427 - call PrintText - call YesNoChoice - ld a, [$cc26] - cp $0 - jr nz, .asm_e4603 - ld hl, UnnamedText_1942c - call PrintText - jr .asm_e4604 ; 0x1941c $6 -.asm_e4603 - ld hl, UnnamedText_19431 - call PrintText -.asm_e4604 ; 0x19424 - jp TextScriptEnd - -UnnamedText_19427: ; 19427 (6:5427) - TX_FAR _UnnamedText_19427 - db "@" - -UnnamedText_1942c: ; 1942c (6:542c) - TX_FAR _UnnamedText_1942c - db "@" - -UnnamedText_19431: ; 19431 (6:5431) - TX_FAR _UnnamedText_19431 - db "@" - -PewterCityText5: ; 19436 (6:5436) - db $08 ; asm - ld hl, UnnamedText_1945d - call PrintText - xor a - ldh [$b4], a - ld [$cf10], a - ld a, $3 - ld [$cc57], a - ldh a, [$b8] - ld [$cc58], a - ld a, $5 - ld [$cf13], a - call Func_32f4 - ld a, $4 - ld [W_PEWTERCITYCURSCRIPT], a - jp TextScriptEnd - -UnnamedText_1945d: ; 1945d (6:545d) - TX_FAR _UnnamedText_1945d - db "@" - -PewterCityText14: ; 19462 (6:5462) - -UnnamedText_19462: ; 19462 (6:5462) - TX_FAR _UnnamedText_19462 - db "@" - -PewterCityText6: ; 19467 (6:5467) - TX_FAR _PewterCityText6 - db "@" - -PewterCityText7: ; 1946c (6:546c) - TX_FAR _PewterCityText7 - db "@" - -PewterCityText10: ; 19471 (6:5471) - TX_FAR _PewterCityText10 - db "@" - -PewterCityText11: ; 19476 (6:5476) - TX_FAR _PewterCityText11 - db "@" - -PewterCityText12: ; 1947b (6:547b) - TX_FAR _PewterCityText12 - db "@" - -CeruleanCityScript: ; 19480 (6:5480) - call EnableAutoTextBoxDrawing - ld hl, CeruleanCityScriptPointers - ld a, [W_CERULEANCITYCURSCRIPT] - jp CallFunctionInTable - -CeruleanCityScript_1948c: ; 1948c (6:548c) - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_CERULEANCITYCURSCRIPT], a - ld a, $5 - ld [$cc4d], a - ld a, $11 - jp Predef - -CeruleanCityScriptPointers: ; 1949d (6:549d) - dw CeruleanCityScript0 - dw CeruleanCityScript1 - dw CeruleanCityScript2 - dw CeruleanCityScript3 - dw CeruleanCityScript4 - -CeruleanCityScript4: ; 194a7 (6:54a7) - ld a, [W_ISINBATTLE] - cp $ff - jp z, CeruleanCityScript_1948c - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld hl, $d75b - set 7, [hl] - ld a, $2 - ld [$ff8c], a - call DisplayTextID - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_CERULEANCITYCURSCRIPT], a - ret - -CeruleanCityScript0: ; 194c8 (6:54c8) - ld a, [$d75b] - bit 7, a - jr nz, .asm_194f7 ; 0x194cd $28 - ld hl, CeruleanCityCoords1 - call ArePlayerCoordsInArray - jr nc, .asm_194f7 ; 0x194d5 $20 - ld a, [$cd3d] - cp $1 - ld a, $8 - ld b, $0 - jr nz, .asm_194e6 ; 0x194e0 $4 - ld a, $4 - ld b, $4 -.asm_194e6 - ld [$d528], a - ld a, b - ld [$c129], a - call Delay3 - ld a, $2 - ld [$ff8c], a - jp DisplayTextID -.asm_194f7 - ld a, [$d75a] - bit 0, a - ret nz - ld hl, CeruleanCityCoords2 - call ArePlayerCoordsInArray - ret nc - ld a, [$d700] - and a - jr z, .asm_19512 ; 0x19508 $8 - ld a, $ff - ld [$c0ee], a - call PlaySound -.asm_19512 - ld c, BANK(Music_MeetRival) - ld a, MUSIC_MEET_RIVAL - call PlayMusic - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld a, [W_XCOORD] - cp $14 - jr z, .asm_19535 ; 0x19526 $d - ld a, $1 - ld [$ff8c], a - ld a, $5 - ld [$ff8b], a - call Func_3500 - ld [hl], $19 -.asm_19535 - ld a, $5 - ld [$cc4d], a - ld a, $15 - call Predef - ld de, CeruleanCityMovement1 - ld a, $1 - ld [$ff8c], a - call MoveSprite - ld a, $1 - ld [W_CERULEANCITYCURSCRIPT], a - ret - -CeruleanCityCoords1: ; 1954f (6:554f) - db $07,$1e - db $09,$1e - db $ff - -CeruleanCityCoords2: ; 19554 (6:5554) - db $06,$14 - db $06,$15 - db $ff - -CeruleanCityMovement1: ; 19559 (6:5559) - db $00,$00,$00,$FF - -CeruleanCityScript_1955d: ; 1955d (6:555d) - ld a,1 - ld [$ff8c],a - xor a - ld [$ff8d],a - jp Func_34a6 ; face object - -CeruleanCityScript1: ; 19567 (6:5567) - ld a, [$d730] - bit 0, a - ret nz - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $1 - ld [$ff8c], a - call DisplayTextID - ld hl, $d72d - set 6, [hl] - set 7, [hl] - ld hl, UnnamedText_1966d - ld de, UnnamedText_19672 - call PreBattleSaveRegisters - ld a, SONY1 + $c8 - ld [W_CUROPPONENT], a - - ; select which team to use during the encounter - ld a, [W_RIVALSTARTER] - cp SQUIRTLE - jr nz, .NotSquirtle ; 0x19592 $4 - ld a, $7 - jr .done -.NotSquirtle - cp BULBASAUR - jr nz, .Charmander ; 0x1959a $4 - ld a, $8 - jr .done -.Charmander - ld a, $9 -.done - ld [W_TRAINERNO], a - - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - call CeruleanCityScript_1955d - ld a, $2 - ld [W_CERULEANCITYCURSCRIPT], a - ret - -CeruleanCityScript2: ; 195b1 (6:55b1) - ld a, [$d057] - cp $ff - jp z, CeruleanCityScript_1948c - call CeruleanCityScript_1955d - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld hl, $d75a - set 0, [hl] - ld a, $1 - ld [$ff8c], a - call DisplayTextID - ld a, $ff - ld [$c0ee], a - call PlaySound - ld b, BANK(Music_RivalAlternateStart) - ld hl, Music_RivalAlternateStart - call Bankswitch - ld a, $1 - ld [$ff8c], a - call SetSpriteMovementBytesToFF - ld a, [W_XCOORD] - cp $14 - jr nz, .asm_195f0 ; 0x195e9 $5 - ld de, CeruleanCityMovement4 - jr .asm_195f3 ; 0x195ee $3 -.asm_195f0 - ld de, CeruleanCityMovement3 -.asm_195f3 - ld a, $1 - ld [$ff8c], a - call MoveSprite - ld a, $3 - ld [W_CERULEANCITYCURSCRIPT], a - ret - -CeruleanCityMovement3: ; 19600 (6:5600) - db $80,$00,$00,$00,$00,$00,$00,$FF - -CeruleanCityMovement4: ; 19608 (6:5608) - db $c0,$00,$00,$00,$00,$00,$00,$FF - -CeruleanCityScript3: ; 19610 (6:5610) - ld a, [$d730] - bit 0, a - ret nz - ld a, $5 - ld [$cc4d], a - ld a, $11 - call Predef - xor a - ld [wJoypadForbiddenButtonsMask], a - call Func_2307 - ld a, $0 - ld [W_CERULEANCITYCURSCRIPT], a - ret - -CeruleanCityTextPointers: ; 1962d (6:562d) - dw CeruleanCityText1 - dw CeruleanCityText2 - dw CeruleanCityText3 - dw CeruleanCityText4 - dw CeruleanCityText5 - dw CeruleanCityText6 - dw CeruleanCityText7 - dw CeruleanCityText8 - dw CeruleanCityText9 - dw CeruleanCityText10 - dw CeruleanCityText11 - dw CeruleanCityText12 - dw CeruleanCityText13 - dw MartSignText - dw PokeCenterSignText - dw CeruleanCityText16 - dw CeruleanCityText17 - -CeruleanCityText1: ; 1964f (6:564f) - db $08 ; asm - ld a, [$d75a] ; rival battle flag - bit 0, a - ; do pre-battle text - jr z, .PreBattleText - ; or talk about bill - ld hl, UnnamedText_19677 - call PrintText - jr .end ; 0x1965d -.PreBattleText ; 0x1965f - ld hl, UnnamedText_19668 - call PrintText -.end ; 0x19665 - jp TextScriptEnd - -UnnamedText_19668: ; 19668 (6:5668) - TX_FAR _UnnamedText_19668 - db "@" - -UnnamedText_1966d: ; 1966d (6:566d) - TX_FAR _UnnamedText_1966d - db "@" - -UnnamedText_19672: ; 19672 (6:5672) - TX_FAR _UnnamedText_19672 - db "@" - -UnnamedText_19677: ; 19677 (6:5677) - TX_FAR _UnnamedText_19677 - db "@" - -CeruleanCityText2: ; 1967c (6:567c) - db $8 - ld a, [$d75b] - bit 7, a - jr nz, .asm_4ca20 ; 0x19682 $29 - ld hl, UnnamedText_196d9 - call PrintText - ld hl, $d72d - set 6, [hl] - set 7, [hl] - ld hl, UnnamedText_196ee - ld de, UnnamedText_196ee - call PreBattleSaveRegisters - ld a, [$ff8c] - ld [$cf13], a - call EngageMapTrainer - call InitBattleEnemyParameters - ld a, $4 - ld [W_CERULEANCITYCURSCRIPT], a - jp TextScriptEnd -.asm_4ca20 ; 0x196ad - ld hl, UnnamedText_196f3 - call PrintText - ld bc, $e401 - call GiveItem - jr c, .Success - ld hl, TM28NoRoomText - call PrintText - jr .Done -.Success - ld a, $1 - ld [$cc3c], a - ld hl, ReceivedTM28Text - call PrintText - ld b, BANK(Func_74872) - ld hl, Func_74872 - call Bankswitch -.Done - jp TextScriptEnd - -UnnamedText_196d9: ; 196d9 (6:56d9) - TX_FAR _UnnamedText_196d9 - db "@" - -ReceivedTM28Text: ; 196de (6:56de) - TX_FAR _ReceivedTM28Text - db $0B - TX_FAR _ReceivedTM28Text2 - db $0D, "@" - -TM28NoRoomText: ; 196e9 (6:56e9) - TX_FAR _TM28NoRoomText - db "@" - -UnnamedText_196ee: ; 196ee (6:56ee) - TX_FAR _UnnamedText_196ee - db "@" - -UnnamedText_196f3: ; 196f3 (6:56f3) - TX_FAR _UnnamedText_196f3 - db "@" - -CeruleanCityText3: ; 196f8 (6:56f8) - TX_FAR _CeruleanCityText3 - db "@" - -CeruleanCityText4: ; 196fd (6:56fd) - TX_FAR _CeruleanCityText4 - db "@" - -CeruleanCityText5: ; 19702 (6:5702) - TX_FAR _CeruleanCityText5 - db "@" - -CeruleanCityText11: ; 19707 (6:5707) -CeruleanCityText6: ; 19707 (6:5707) - TX_FAR _CeruleanCityText6 - db "@" - -CeruleanCityText7: ; 1970c (6:570c) - db $08 ; asm - ldh a, [$d3] - cp $b4 - jr c, .asm_e9fc9 ; 0x19711 - ld hl, UnnamedText_19730 - call PrintText - jr .asm_d486e ; 0x19719 -.asm_e9fc9 ; 0x1971b - cp $64 - jr c, .asm_df99b ; 0x1971d - ld hl, UnnamedText_19735 - call PrintText - jr .asm_d486e ; 0x19725 -.asm_df99b ; 0x19727 - ld hl, UnnamedText_1973a - call PrintText -.asm_d486e ; 0x1972d - jp TextScriptEnd - -UnnamedText_19730: ; 19730 (6:5730) - TX_FAR _UnnamedText_19730 - db "@" - -UnnamedText_19735: ; 19735 (6:5735) - TX_FAR _UnnamedText_19735 - db "@" - -UnnamedText_1973a: ; 1973a (6:573a) - TX_FAR _UnnamedText_1973a - db "@" - -CeruleanCityText8: ; 1973f (6:573f) - db $08 ; asm - ldh a, [$d3] - cp $b4 - jr c, .asm_e28da ; 0x19744 - ld hl, UnnamedText_1976f - call PrintText - jr .asm_f2f38 ; 0x1974c -.asm_e28da ; 0x1974e - cp $78 - jr c, .asm_15d08 ; 0x19750 - ld hl, UnnamedText_19774 - call PrintText - jr .asm_f2f38 ; 0x19758 -.asm_15d08 ; 0x1975a - cp $3c - jr c, .asm_d7fea ; 0x1975c - ld hl, UnnamedText_19779 - call PrintText - jr .asm_f2f38 ; 0x19764 -.asm_d7fea ; 0x19766 - ld hl, UnnamedText_1977e - call PrintText -.asm_f2f38 ; 0x1976c - jp TextScriptEnd - -UnnamedText_1976f: ; 1976f (6:576f) - TX_FAR _UnnamedText_1976f - db "@" - -UnnamedText_19774: ; 19774 (6:5774) - TX_FAR _UnnamedText_19774 - db "@" - -UnnamedText_19779: ; 19779 (6:5779) - TX_FAR _UnnamedText_19779 - db "@" - -UnnamedText_1977e: ; 1977e (6:577e) - TX_FAR _UnnamedText_1977e - db "@" - -CeruleanCityText9: ; 19783 (6:5783) - TX_FAR _CeruleanCityText9 - db "@" - -CeruleanCityText10: ; 19788 (6:5788) - TX_FAR _CeruleanCityText10 - db "@" - -CeruleanCityText12: ; 1978d (6:578d) - TX_FAR _CeruleanCityText12 - db "@" - -CeruleanCityText13: ; 19792 (6:5792) - TX_FAR _CeruleanCityText13 - db "@" - -CeruleanCityText16: ; 19797 (6:5797) - TX_FAR _CeruleanCityText16 - db "@" - -CeruleanCityText17: ; 1979c (6:579c) - TX_FAR _CeruleanCityText17 - db "@" - -VermilionCityScript: ; 197a1 (6:57a1) - call EnableAutoTextBoxDrawing - ld hl, $d126 - bit 6, [hl] - res 6, [hl] - push hl - call nz, VermilionCityScript_197cb - pop hl - bit 5, [hl] - res 5, [hl] - call nz, VermilionCityScript_197c0 - ld hl, VermilionCityScriptPointers - ld a, [W_VERMILIONCITYCURSCRIPT] - jp CallFunctionInTable - -VermilionCityScript_197c0: ; 197c0 (6:57c0) - call GenRandom - ld a, [$ffd4] - and $e - ld [$d743], a - ret - -VermilionCityScript_197cb: ; 197cb (6:57cb) - ld hl, $d803 - bit 2, [hl] - ret z - bit 3, [hl] - set 3, [hl] - ret nz - ld a, $2 - ld [W_VERMILIONCITYCURSCRIPT], a - ret - -VermilionCityScriptPointers: ; 197dc (6:57dc) - dw VermilionCityScript0 - dw VermilionCityScript1 - dw VermilionCityScript2 - dw VermilionCityScript3 - dw VermilionCityScript4 - -VermilionCityScript0: ; 197e6 (6:57e6) - ld a, [$c109] - and a - ret nz - ld hl, CoordsData_19823 - call ArePlayerCoordsInArray - ret nc - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld [$cf0d], a - ld a, $3 - ld [$ff8c], a - call DisplayTextID - ld a, [$d803] - bit 2, a - jr nz, .asm_19810 ; 0x19804 $a - ld b, $3f - ld a, $1c - call Predef - ld a, b - and a - ret nz -.asm_19810 - ld a, $40 - ld [$ccd3], a - ld a, $1 - ld [$cd38], a - call Func_3486 - ld a, $1 - ld [W_VERMILIONCITYCURSCRIPT], a - ret - -CoordsData_19823: ; 19823 (6:5823) - db $1e,$12 - db $ff - -VermilionCityScript4: ; 19826 (6:5826) - ld hl, CoordsData_19823 - call ArePlayerCoordsInArray - ret c - ld a, $0 - ld [W_VERMILIONCITYCURSCRIPT], a - ret - -VermilionCityScript2: ; 19833 (6:5833) - ld a, $ff - ld [wJoypadForbiddenButtonsMask], a - ld a, $40 - ld [$ccd3], a - ld [$ccd4], a - ld a, $2 - ld [$cd38], a - call Func_3486 - ld a, $3 - ld [W_VERMILIONCITYCURSCRIPT], a - ret - -VermilionCityScript3: ; 1984e (6:584e) - ld a, [$cd38] - and a - ret nz - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, $0 - ld [W_VERMILIONCITYCURSCRIPT], a - ret - -VermilionCityScript1: ; 1985f (6:585f) - ld a, [$cd38] - and a - ret nz - ld c, $a - call DelayFrames - ld a, $0 - ld [W_VERMILIONCITYCURSCRIPT], a - ret - -VermilionCityTextPointers: ; 1986f (6:586f) - dw VermilionCityText1 - dw VermilionCityText2 - dw VermilionCityText3 - dw VermilionCityText4 - dw VermilionCityText5 - dw VermilionCityText6 - dw VermilionCityText7 - dw VermilionCityText8 - dw MartSignText - dw PokeCenterSignText - dw VermilionCityText11 - dw VermilionCityText12 - dw VermilionCityText13 - -VermilionCityText1: ; 19889 (6:5889) - TX_FAR _VermilionCityText1 - db "@" - -VermilionCityText2: ; 1988e (6:588e) - db $08 ; asm - ld a, [$d803] - bit 2, a - jr nz, .asm_359bd ; 0x19894 - ld hl, UnnamedText_198a7 - call PrintText - jr .asm_735d9 ; 0x1989c -.asm_359bd ; 0x1989e - ld hl, UnnamedText_198ac - call PrintText -.asm_735d9 ; 0x198a4 - jp TextScriptEnd - -UnnamedText_198a7: ; 198a7 (6:58a7) - TX_FAR _UnnamedText_198a7 - db "@" - -UnnamedText_198ac: ; 198ac (6:58ac) - TX_FAR _UnnamedText_198ac - db "@" - -VermilionCityText3: ; 198b1 (6:58b1) - db $08 ; asm - ld a, [$d803] - bit 2, a - jr nz, .asm_3e0e9 ; 0x198b7 - ld a, [$c109] - cp $c - jr z, .asm_07af3 ; 0x198be - ld hl, VermilionCityCoords1 - call ArePlayerCoordsInArray - jr nc, .asm_57b73 ; 0x198c6 -.asm_07af3 ; 0x198c8 - ld hl, SSAnneWelcomeText4 - call PrintText - jr .asm_79bd1 ; 0x198ce -.asm_57b73 ; 0x198d0 - ld hl, SSAnneWelcomeText9 - call PrintText - ld b, $3f - ld a, $1c - call Predef - ld a, b - and a - jr nz, .asm_0419b ; 0x198df - ld hl, SSAnneNoTicketText - call PrintText - jr .asm_79bd1 ; 0x198e7 -.asm_0419b ; 0x198e9 - ld hl, SSAnneFlashedTicketText - call PrintText - ld a, $4 - ld [W_VERMILIONCITYCURSCRIPT], a - jr .asm_79bd1 ; 0x198f4 -.asm_3e0e9 ; 0x198f6 - ld hl, SSAnneNotHereText - call PrintText -.asm_79bd1 ; 0x198fc - jp TextScriptEnd - -VermilionCityCoords1: ; 198ff (6:58ff) - db $1d,$13 - db $1f,$13 - db $ff - -SSAnneWelcomeText4: ; 19904 (6:5904) - TX_FAR _SSAnneWelcomeText4 - db "@" - -SSAnneWelcomeText9: ; 19909 (6:5909) - TX_FAR _SSAnneWelcomeText9 - db "@" - -SSAnneFlashedTicketText: ; 1990e (6:590e) - TX_FAR _SSAnneFlashedTicketText - db "@" - -SSAnneNoTicketText: ; 19913 (6:5913) - TX_FAR _SSAnneNoTicketText - db "@" - -SSAnneNotHereText: ; 19918 (6:5918) - TX_FAR _SSAnneNotHereText - db "@" - -VermilionCityText4: ; 1991d (6:591d) - TX_FAR _VermilionCityText4 - db "@" - -VermilionCityText5: ; 19922 (6:5922) - TX_FAR _VermilionCityText5 - db $08 ; asm - ld a, MACHOP - call PlayCry - call WaitForSoundToFinish - ld hl, VermilionCityText14 ; $5933 - ret - -VermilionCityText14: ; 19933 (6:5933) - TX_FAR _VermilionCityText14 - db "@" - -VermilionCityText6: ; 19938 (6:5938) - TX_FAR _VermilionCityText6 - db "@" - -VermilionCityText7: ; 1993d (6:593d) - TX_FAR _VermilionCityText7 - db "@" - -VermilionCityText8: ; 19942 (6:5942) - TX_FAR _VermilionCityText8 - db "@" - -VermilionCityText11: ; 19947 (6:5947) - TX_FAR _VermilionCityText11 - db "@" - -VermilionCityText12: ; 1994c (6:594c) - TX_FAR _VermilionCityText12 - db "@" - -VermilionCityText13: ; 19951 (6:5951) - TX_FAR _VermilionCityText13 - db "@" - -CeladonCityScript: ; 19956 (6:5956) - call EnableAutoTextBoxDrawing - ld hl, $d77e - res 0, [hl] - res 7, [hl] - ld hl, $d816 - res 7, [hl] - ret - -CeladonCityTextPointers: ; 19966 (6:5966) - dw CeladonCityText1 - dw CeladonCityText2 - dw CeladonCityText3 - dw CeladonCityText4 - dw CeladonCityText5 - dw CeladonCityText6 - dw CeladonCityText7 - dw CeladonCityText8 - dw CeladonCityText9 - dw CeladonCityText10 - dw CeladonCityText11 - dw PokeCenterSignText - dw CeladonCityText13 - dw CeladonCityText14 - dw CeladonCityText15 - dw CeladonCityText16 - dw CeladonCityText17 - dw CeladonCityText18 - -CeladonCityText1: ; 1998a (6:598a) - TX_FAR _CeladonCityText1 - db "@" - -CeladonCityText2: ; 1998f (6:598f) - TX_FAR _CeladonCityText2 - db "@" - -CeladonCityText3: ; 19994 (6:5994) - TX_FAR _CeladonCityText3 - db "@" - -CeladonCityText4: ; 19999 (6:5999) - TX_FAR _CeladonCityText4 - db "@" - -CeladonCityText5: ; 1999e (6:599e) - db $08 ; asm - ld a, [$d777] - bit 0, a - jr nz, .asm_7053f ; 0x199a4 - ld hl, TM41PreText - call PrintText - ld bc, (TM_41 << 8) | 1 - call GiveItem - jr c, .Success - ld hl, TM41NoRoomText - call PrintText - jr .Done -.Success - ld hl, ReceivedTM41Text - call PrintText - ld hl, $d777 - set 0, [hl] - jr .Done -.asm_7053f ; 0x199c9 - ld hl, TM41ExplanationText - call PrintText -.Done - jp TextScriptEnd - -TM41PreText: ; 199d2 (6:59d2) - TX_FAR _TM41PreText - db "@" - -ReceivedTM41Text: ; 199d7 (6:59d7) - TX_FAR _ReceivedTM41Text - db $0B, "@" - -TM41ExplanationText: ; 199dd (6:59dd) - TX_FAR _TM41ExplanationText - db "@" - -TM41NoRoomText: ; 199e2 (6:59e2) - TX_FAR _TM41NoRoomText - db "@" - -CeladonCityText6: ; 199e7 (6:59e7) - TX_FAR _CeladonCityText6 - db "@" - -CeladonCityText7: ; 199ec (6:59ec) - TX_FAR _CeladonCityText7 - db $08 ; asm - ld a, POLIWRATH - call PlayCry - jp TextScriptEnd - -CeladonCityText8: ; 199f9 (6:59f9) - TX_FAR _CeladonCityText8 - db "@" - -CeladonCityText9: ; 199fe (6:59fe) - TX_FAR _CeladonCityText9 - db "@" - -CeladonCityText10: ; 19a03 (6:5a03) - TX_FAR _CeladonCityText10 - db "@" - -CeladonCityText11: ; 19a08 (6:5a08) - TX_FAR _CeladonCityText11 - db "@" - -CeladonCityText13: ; 19a0d (6:5a0d) - TX_FAR _CeladonCityText13 - db "@" - -CeladonCityText14: ; 19a12 (6:5a12) - TX_FAR _CeladonCityText14 - db "@" - -CeladonCityText15: ; 19a17 (6:5a17) - TX_FAR _CeladonCityText15 - db "@" - -CeladonCityText16: ; 19a1c (6:5a1c) - TX_FAR _CeladonCityText16 - db "@" - -CeladonCityText17: ; 19a21 (6:5a21) - TX_FAR _CeladonCityText17 - db "@" - -CeladonCityText18: ; 19a26 (6:5a26) - TX_FAR _CeladonCityText18 - db "@" - -FuchsiaCityScript: ; 19a2b (6:5a2b) - jp EnableAutoTextBoxDrawing - -FuchsiaCityTextPointers: ; 19a2e (6:5a2e) - dw FuchsiaCityText1 - dw FuchsiaCityText2 - dw FuchsiaCityText3 - dw FuchsiaCityText4 - dw FuchsiaCityText5 - dw FuchsiaCityText6 - dw FuchsiaCityText7 - dw FuchsiaCityText8 - dw FuchsiaCityText9 - dw FuchsiaCityText10 - dw FuchsiaCityText11 - dw FuchsiaCityText12 - dw FuchsiaCityText13 - dw MartSignText - dw PokeCenterSignText - dw FuchsiaCityText16 - dw FuchsiaCityText17 - dw FuchsiaCityText18 - dw FuchsiaCityText19 - dw FuchsiaCityText20 - dw FuchsiaCityText21 - dw FuchsiaCityText22 - dw FuchsiaCityText23 - dw FuchsiaCityText24 - -FuchsiaCityText1: ; 19a5e (6:5a5e) - TX_FAR _FuchsiaCityText1 - db "@" - -FuchsiaCityText2: ; 19a63 (6:5a63) - TX_FAR _FuchsiaCityText2 - db "@" - -FuchsiaCityText3: ; 19a68 (6:5a68) - TX_FAR _FuchsiaCityText3 - db "@" - -FuchsiaCityText4: ; 19a6d (6:5a6d) - TX_FAR _FuchsiaCityText4 - db "@" - -FuchsiaCityText5: ; 19a72 (6:5a72) -FuchsiaCityText6: ; 19a72 (6:5a72) -FuchsiaCityText7: ; 19a72 (6:5a72) -FuchsiaCityText8: ; 19a72 (6:5a72) -FuchsiaCityText9: ; 19a72 (6:5a72) -FuchsiaCityText10: ; 19a72 (6:5a72) - TX_FAR _FuchsiaCityText5 - db "@" - -FuchsiaCityText12: ; 19a77 (6:5a77) -FuchsiaCityText11: ; 19a77 (6:5a77) - TX_FAR _FuchsiaCityText11 - db "@" - -FuchsiaCityText13: ; 19a7c (6:5a7c) - TX_FAR _FuchsiaCityText13 - db "@" - -FuchsiaCityText16: ; 19a81 (6:5a81) - TX_FAR _FuchsiaCityText16 - db "@" - -FuchsiaCityText17: ; 19a86 (6:5a86) - TX_FAR _FuchsiaCityText17 - db "@" - -FuchsiaCityText18: ; 19a8b (6:5a8b) - TX_FAR _FuchsiaCityText18 - db "@" - -FuchsiaCityText19: ; 19a90 (6:5a90) - db $08 ; asm - ld hl, FuchsiaCityChanseyText - call PrintText - ld a, CHANSEY - call DisplayPokedex - jp TextScriptEnd - -FuchsiaCityChanseyText: ; 19a9f (6:5a9f) - TX_FAR _FuchsiaCityChanseyText - db "@" - -FuchsiaCityText20: ; 19aa4 (6:5aa4) - db $08 ; asm - ld hl, FuchsiaCityVoltorbText - call PrintText - ld a, VOLTORB - call DisplayPokedex - jp TextScriptEnd - -FuchsiaCityVoltorbText: ; 19ab3 (6:5ab3) - TX_FAR _FuchsiaCityVoltorbText - db "@" - -FuchsiaCityText21: ; 19ab8 (6:5ab8) - db $08 ; asm - ld hl, FuchsiaCityKangaskhanText - call PrintText - ld a, KANGASKHAN - call DisplayPokedex - jp TextScriptEnd - -FuchsiaCityKangaskhanText: ; 19ac7 (6:5ac7) - TX_FAR _FuchsiaCityKangaskhanText - db "@" - -FuchsiaCityText22: ; 19acc (6:5acc) - db $08 ; asm - ld hl, FuchsiaCitySlowpokeText - call PrintText - ld a, SLOWPOKE - call DisplayPokedex - jp TextScriptEnd - -FuchsiaCitySlowpokeText: ; 19adb (6:5adb) - TX_FAR _FuchsiaCitySlowpokeText - db "@" - -FuchsiaCityText23: ; 19ae0 (6:5ae0) - db $08 ; asm - ld hl, FuchsiaCityLaprasText - call PrintText - ld a, LAPRAS - call DisplayPokedex - jp TextScriptEnd - -FuchsiaCityLaprasText: ; 19aef (6:5aef) - TX_FAR _FuchsiaCityLaprasText - db "@" - -FuchsiaCityText24: ; 19af4 (6:5af4) - db $08 ; asm - ld a, [$d7f6] - bit 6, a - jr nz, .asm_3b4e8 ; 0x19afa - bit 7, a - jr nz, .asm_667d5 ; 0x19afe - ld hl, UnnamedText_19b2a - call PrintText - jr .asm_4343f ; 0x19b06 -.asm_3b4e8 ; 0x19b08 - ld hl, FuchsiaCityOmanyteText - call PrintText - ld a, OMANYTE - jr .asm_81556 ; 0x19b10 -.asm_667d5 ; 0x19b12 - ld hl, FuchsiaCityKabutoText - call PrintText - ld a, KABUTO -.asm_81556 ; 0x19b1a - call DisplayPokedex -.asm_4343f ; 0x19b1d - jp TextScriptEnd - -FuchsiaCityOmanyteText: ; 19b20 (6:5b20) - TX_FAR _FuchsiaCityOmanyteText - db "@" - -FuchsiaCityKabutoText: ; 19b25 (6:5b25) - TX_FAR _FuchsiaCityKabutoText - db "@" - -UnnamedText_19b2a: ; 19b2a (6:5b2a) - TX_FAR _UnnamedText_19b2a - db "@" - -BluesHouse_h: ; 0x19b2f id=39 - db HOUSE ; tileset - db BLUES_HOUSE_HEIGHT, BLUES_HOUSE_WIDTH ; dimensions - dw BluesHouseBlocks, BluesHouseTextPointers, BluesHouseScript - db 0 - dw BluesHouseObject - -BluesHouseScript: ; 19b3b (6:5b3b) - call EnableAutoTextBoxDrawing - ld hl,BluesHouseScriptPointers - ld a,[W_BLUESHOUSECURSCRIPT] - jp CallFunctionInTable - -BluesHouseScriptPointers: ; 19b47 (6:5b47) - dw BluesHouseScript0 - dw BluesHouseScript1 - -BluesHouseScript0: ; 19b4b (6:5b4b) - ld hl,$D74A - set 1,[hl] - - ; trigger the next script +ItemUseMedicine: ; dabb (3:5abb) + ld a,[W_NUMINPARTY] + and a + jp z,.emptyParty + ld a,[wWhichPokemon] + push af + ld a,[$cf91] + push af + ld a,$01 + ld [$d07d],a ; item use party menu + ld a,$ff + ld [$cfcb],a + ld a,[$d152] + and a ; using Softboiled? + jr z,.notUsingSoftboiled +; if using softboiled + call GoBackToPartyMenu + jr .getPartyMonDataAddress +.emptyParty + ld hl,.emptyPartyText + xor a + ld [$cd6a],a ; item use failed + jp PrintText +.emptyPartyText + text "You don't have" + line "any #MON!" + prompt +.notUsingSoftboiled + call DisplayPartyMenu +.getPartyMonDataAddress + jp c,.canceledItemUse + ld hl,W_PARTYMON1DATA + ld bc,44 + ld a,[wWhichPokemon] + call AddNTimes + ld a,[wWhichPokemon] + ld [$cf06],a + ld d,a + ld a,[$cf91] + ld e,a + ld [$d0b5],a + pop af + ld [$cf91],a + pop af + ld [wWhichPokemon],a + ld a,[$d152] + and a ; using Softboiled? + jr z,.checkItemType +; if using softboiled + ld a,[wWhichPokemon] + cp d ; is the pokemon trying to use softboiled on itself? + jr z,ItemUseMedicine ; if so, force another choice +.checkItemType + ld a,[$cf91] + cp a,REVIVE + jr nc,.healHP ; if it's a Revive or Max Revive + cp a,FULL_HEAL + jr z,.cureStatusAilment ; if it's a Full Heal + cp a,HP_UP + jp nc,.useVitamin ; if it's a vitamin or Rare Candy + cp a,FULL_RESTORE + jr nc,.healHP ; if it's a Full Restore or one of the potions +; fall through if it's one of the status-specifc healing items +.cureStatusAilment + ld bc,4 + add hl,bc ; hl now points to status + ld a,[$cf91] + ld bc,$f008 + cp a,ANTIDOTE + jr z,.checkMonStatus + ld bc,$f110 + cp a,BURN_HEAL + jr z,.checkMonStatus + ld bc,$f220 + cp a,ICE_HEAL + jr z,.checkMonStatus + ld bc,$f307 + cp a,AWAKENING + jr z,.checkMonStatus + ld bc,$f440 + cp a,PARLYZ_HEAL + jr z,.checkMonStatus + ld bc,$f6ff ; Full Heal +.checkMonStatus + ld a,[hl] ; pokemon's status + and c ; does the pokemon have a status ailment the item can cure? + jp z,.healingItemNoEffect +; if the pokemon has a status the item can heal + xor a + ld [hl],a ; remove the status ailment in the party data + ld a,b + ld [$d07d],a ; the message to display for the item used + ld a,[wPlayerMonNumber] + cp d ; is pokemon the item was used on active in battle? + jp nz,.doneHealing +; if it is active in battle + xor a + ld [W_PLAYERMONSTATUS],a ; remove the status ailment in the in-battle pokemon data + push hl + ld hl,W_PLAYERBATTSTATUS3 + res 0,[hl] ; heal Toxic status + pop hl + ld bc,30 + add hl,bc ; hl now points to party stats + ld de,W_PLAYERMONMAXHP + ld bc,10 + call CopyData ; copy party stats to in-battle stat data + ld a,$28 + call Predef + jp .doneHealing +.healHP + inc hl ; hl = address of current HP + ld a,[hli] + ld b,a + ld [wHPBarOldHP+1],a + ld a,[hl] + ld c,a + ld [wHPBarOldHP],a ; current HP stored at $ceeb (2 bytes, big-endian) + or b + jr nz,.notFainted +.fainted + ld a,[$cf91] + cp a,REVIVE + jr z,.updateInBattleFaintedData + cp a,MAX_REVIVE + jr z,.updateInBattleFaintedData + jp .healingItemNoEffect +.updateInBattleFaintedData + ld a,[W_ISINBATTLE] + and a + jr z,.compareCurrentHPToMaxHP + push hl + push de + push bc + ld a,[$cf06] + ld c,a + ld hl,$ccf5 + ld b,$02 + ld a,$10 + call Predef + ld a,c + and a + jr z,.next + ld a,[$cf06] + ld c,a + ld hl,W_PLAYERMONSALIVEFLAGS + ld b,$01 + ld a,$10 + call Predef +.next + pop bc + pop de + pop hl + jr .compareCurrentHPToMaxHP +.notFainted + ld a,[$cf91] + cp a,REVIVE + jp z,.healingItemNoEffect + cp a,MAX_REVIVE + jp z,.healingItemNoEffect +.compareCurrentHPToMaxHP + push hl + push bc + ld bc,32 + add hl,bc ; hl now points to max HP + pop bc + ld a,[hli] + cp b + jr nz,.skipComparingLSB ; no need to compare the LSB's if the MSB's don't match + ld a,[hl] + cp c +.skipComparingLSB + pop hl + jr nz,.notFullHP +.fullHP ; if the pokemon's current HP equals its max HP + ld a,[$cf91] + cp a,FULL_RESTORE + jp nz,.healingItemNoEffect + inc hl + inc hl + ld a,[hld] ; status ailment + and a ; does the pokemon have a status ailment? + jp z,.healingItemNoEffect + ld a,FULL_HEAL + ld [$cf91],a + dec hl + dec hl + dec hl + jp .cureStatusAilment +.notFullHP ; if the pokemon's current HP doesn't equal its max HP + xor a + ld [$d083],a + ld [$c02a],a + push hl + push de + ld bc,32 + add hl,bc ; hl now points to max HP + ld a,[hli] + ld [wHPBarMaxHP+1],a + ld a,[hl] + ld [wHPBarMaxHP],a ; max HP stored at $cee9 (2 bytes, big-endian) + ld a,[$d152] + and a ; using Softboiled? + jp z,.notUsingSoftboiled2 +; if using softboiled + ld hl,wHPBarMaxHP + ld a,[hli] + push af + ld a,[hli] + push af + ld a,[hli] + push af + ld a,[hl] + push af + ld hl,W_PARTYMON1_MAXHP + ld a,[wWhichPokemon] + ld bc,44 + call AddNTimes + ld a,[hli] + ld [$ceea],a + ld [H_DIVIDEND],a + ld a,[hl] + ld [wHPBarMaxHP],a + ld [H_DIVIDEND + 1],a + ld a,5 + ld [H_DIVISOR],a + ld b,2 ; number of bytes + call Divide ; get 1/5 of max HP of pokemon that used Softboiled + ld bc,-33 + add hl,bc ; hl now points to LSB of current HP of pokemon that used Softboiled +; subtract 1/5 of max HP from current HP of pokemon that used Softboiled + ld a,[H_QUOTIENT + 3] + push af + ld b,a + ld a,[hl] + ld [wHPBarOldHP],a + sub b + ld [hld],a + ld [wHPBarNewHP],a + ld a,[H_QUOTIENT + 2] + ld b,a + ld a,[hl] + ld [wHPBarOldHP+1],a + sbc b + ld [hl],a + ld [wHPBarNewHP+1],a + FuncCoord 4, 1 ; $c3b8 + ld hl,Coord + ld a,[wWhichPokemon] + ld bc,2 * 20 + call AddNTimes ; calculate coordinates of HP bar of pokemon that used Softboiled + ld a,(SFX_02_3d - SFX_Headers_02) / 3 + call PlaySoundWaitForCurrent ; play sound + ld a,[$fff6] + set 0,a + ld [$fff6],a + ld a,$02 + ld [$cf94],a + ld a,$48 + call Predef ; animate HP bar decrease of pokemon that used Softboiled + ld a,[$fff6] + res 0,a + ld [$fff6],a + pop af + ld b,a ; store heal amount (1/5 of max HP) + ld hl,$ceec + pop af + ld [hld],a + pop af + ld [hld],a + pop af + ld [hld],a + pop af + ld [hl],a + jr .addHealAmount +.notUsingSoftboiled2 + ld a,[$cf91] + cp a,SODA_POP + ld b,60 ; Soda Pop heal amount + jr z,.addHealAmount + ld b,80 ; Lemonade heal amount + jr nc,.addHealAmount + cp a,FRESH_WATER + ld b,50 ; Fresh Water heal amount + jr z,.addHealAmount + cp a,SUPER_POTION + ld b,200 ; Hyper Potion heal amount + jr c,.addHealAmount + ld b,50 ; Super Potion heal amount + jr z,.addHealAmount + ld b,20 ; Potion heal amount +.addHealAmount + pop de + pop hl + ld a,[hl] + add b + ld [hld],a + ld [wHPBarNewHP],a + ld a,[hl] + ld [wHPBarNewHP+1],a + jr nc,.noCarry + inc [hl] + ld a,[hl] + ld [$ceee],a +.noCarry + push de + inc hl + ld d,h + ld e,l ; de now points to current HP + ld hl,33 + add hl,de ; hl now points to max HP + ld a,[$cf91] + cp a,REVIVE + jr z,.setCurrentHPToHalfMaxHP + ld a,[hld] + ld b,a + ld a,[de] + sub b + dec de + ld b,[hl] + ld a,[de] + sbc b + jr nc,.setCurrentHPToMaxHp ; if current HP exceeds max HP after healing + ld a,[$cf91] + cp a,HYPER_POTION + jr c,.setCurrentHPToMaxHp ; if using a Full Restore or Max Potion + cp a,MAX_REVIVE + jr z,.setCurrentHPToMaxHp ; if using a Max Revive + jr .updateInBattleData +.setCurrentHPToHalfMaxHP + dec hl + dec de + ld a,[hli] + srl a + ld [de],a + ld [wHPBarNewHP+1],a + ld a,[hl] + rr a + inc de + ld [de],a + ld [wHPBarNewHP],a + dec de + jr .doneHealingPartyHP +.setCurrentHPToMaxHp + ld a,[hli] + ld [de],a + ld [wHPBarNewHP+1],a + inc de + ld a,[hl] + ld [de],a + ld [wHPBarNewHP],a + dec de +.doneHealingPartyHP ; done updating the pokemon's current HP in the party data structure + ld a,[$cf91] + cp a,FULL_RESTORE + jr nz,.updateInBattleData + ld bc,-31 + add hl,bc + xor a + ld [hl],a ; remove the status ailment in the party data +.updateInBattleData + ld h,d + ld l,e + pop de + ld a,[wPlayerMonNumber] + cp d ; is pokemon the item was used on active in battle? + jr nz,.calculateHPBarCoords +; copy party HP to in-battle HP + ld a,[hli] + ld [W_PLAYERMONCURHP],a + ld a,[hld] + ld [W_PLAYERMONCURHP + 1],a + ld a,[$cf91] + cp a,FULL_RESTORE + jr nz,.calculateHPBarCoords + xor a + ld [W_PLAYERMONSTATUS],a ; remove the status ailment in the in-battle pokemon data +.calculateHPBarCoords + ld hl,$c390 + ld bc,2 * 20 + inc d +.calculateHPBarCoordsLoop + add hl,bc + dec d + jr nz,.calculateHPBarCoordsLoop + jr .doneHealing +.healingItemNoEffect + call ItemUseNoEffect + jp .done +.doneHealing + ld a,[$d152] + and a ; using Softboiled? + jr nz,.skipRemovingItem ; no item to remove if using Softboiled + push hl + call RemoveUsedItem + pop hl +.skipRemovingItem + ld a,[$cf91] + cp a,FULL_RESTORE + jr c,.playStatusAilmentCuringSound + cp a,FULL_HEAL + jr z,.playStatusAilmentCuringSound + ld a,(SFX_02_3d - SFX_Headers_02) / 3 ; HP healing sound + call PlaySoundWaitForCurrent ; play sound + ld a,[$fff6] + set 0,a + ld [$fff6],a + ld a,$02 + ld [$cf94],a + ld a,$48 + call Predef ; animate the HP bar lengthening + ld a,[$fff6] + res 0,a + ld [$fff6],a + ld a,$f7 ; revived message + ld [$d07d],a + ld a,[$cf91] + cp a,REVIVE + jr z,.showHealingItemMessage + cp a,MAX_REVIVE + jr z,.showHealingItemMessage + ld a,$f5 ; standard HP healed message + ld [$d07d],a + jr .showHealingItemMessage +.playStatusAilmentCuringSound + ld a,(SFX_02_3e - SFX_Headers_02) / 3 ; status ailment curing sound + call PlaySoundWaitForCurrent ; play sound +.showHealingItemMessage + xor a + ld [H_AUTOBGTRANSFERENABLED],a + call ClearScreen + dec a + ld [$cfcb],a + call RedrawPartyMenu ; redraws the party menu and displays the message ld a,1 - ld [W_BLUESHOUSECURSCRIPT],a - ret - -BluesHouseScript1: ; 19b56 (6:5b56) - ret - -BluesHouseTextPointers: ; 19b57 (6:5b57) - dw BluesHouseText1 - dw BluesHouseText2 - dw BluesHouseText3 - -BluesHouseText1: ; 19b5d (6:5b5d) - db 8 - ld a,[$D74A] - bit 0,a - jr nz,.GotMap - ld a,[$D74B] - bit 5,a - jr nz,.GiveMap - ld hl,DaisyInitialText - call PrintText - jr .done -.GiveMap - ld hl,DaisyOfferMapText - call PrintText - ld bc,(TOWN_MAP << 8) | 1 - call GiveItem - jr nc, .BagFull - ld a,$29 - ld [$CC4D],a - ld a,$11 - call Predef ; hide table map object - ld hl,GotMapText - call PrintText - ld hl,$D74A - set 0,[hl] - jr .done -.GotMap - ld hl,DaisyUseMapText - call PrintText + ld [H_AUTOBGTRANSFERENABLED],a + ld c,50 + call DelayFrames + call WaitForTextScrollButtonPress ; wait for a button press jr .done -.BagFull - ld hl,DaisyBagFullText - call PrintText -.done - jp TextScriptEnd - -DaisyInitialText: ; 19baa (6:5baa) - TX_FAR _DaisyInitialText - db "@" - -DaisyOfferMapText: ; 19baf (6:5baf) - TX_FAR _DaisyOfferMapText - db "@" - -GotMapText: ; 19bb4 (6:5bb4) - TX_FAR _GotMapText - db $11,"@" - -DaisyBagFullText: ; 19bba (6:5bba) - TX_FAR _DaisyBagFullText - db "@" - -DaisyUseMapText: ; 19bbf (6:5bbf) - TX_FAR _DaisyUseMapText - db "@" - -BluesHouseText2: ; 0x19bc4 Daisy, walking around - TX_FAR _BluesHouseText2 - db "@" - -BluesHouseText3: ; 0x19bc9 map on table - TX_FAR _BluesHouseText3 - db "@" - -BluesHouseObject: ; 19bce (6:5bce) - db $0A ; border tile - - db 2 ; warps - db 7,2,1,$FF - db 7,3,1,$FF - - db 0 ; signs - - db 3 ; people - db $11,4+3,4+2,$FF,$D3,1 ; Daisy, sitting by map - db $11,4+4,4+6,$FE,1,ITEM|2,0 ; map on table - db $41,4+3,4+3,$FF,$FF,ITEM|3,0 ; Daisy, walking around - - ; warp-to - EVENT_DISP BLUES_HOUSE_WIDTH, 7, 2 - EVENT_DISP BLUES_HOUSE_WIDTH, 7, 3 - -BluesHouseBlocks: ; 19bf6 (6:5bf6) - INCBIN "maps/blueshouse.blk" - -VermilionHouse3_h: ; 0x19c06 to 0x19c12 (12 bytes) (bank=6) (id=196) - db HOUSE ; tileset - db VERMILION_HOUSE_3_HEIGHT, VERMILION_HOUSE_3_WIDTH ; dimensions (y, x) - dw VermilionHouse3Blocks, VermilionHouse3TextPointers, VermilionHouse3Script ; blocks, texts, scripts - db $00 ; connections - dw VermilionHouse3Object ; objects - -VermilionHouse3Script: ; 19c12 (6:5c12) - jp EnableAutoTextBoxDrawing - -VermilionHouse3TextPointers: ; 19c15 (6:5c15) - dw VermilionHouse3Text1 - -VermilionHouse3Text1: ; 19c17 (6:5c17) - db $08 ; asm - ld a, $4 - ld [wWhichTrade], a - ld a, $54 - call Predef - jp TextScriptEnd - -VermilionHouse3Object: ; 0x19c25 (size=26) - db $a ; border tile - - db $2 ; warps - db $7, $2, $7, $ff - db $7, $3, $7, $ff - - db $0 ; signs - - db $1 ; people - db SPRITE_LITTLE_GIRL, $5 + 4, $3 + 4, $ff, $d1, $1 ; person - - ; warp-to - EVENT_DISP VERMILION_HOUSE_3_WIDTH, $7, $2 - EVENT_DISP VERMILION_HOUSE_3_WIDTH, $7, $3 - -VermilionHouse3Blocks: ; 19c3f (6:5c3f) - INCBIN "maps/vermilionhouse3.blk" - -IndigoPlateauLobby_h: ; 0x19c4f to 0x19c5b (12 bytes) (bank=6) (id=174) - db MART ; tileset - db INDIGO_PLATEAU_LOBBY_HEIGHT, INDIGO_PLATEAU_LOBBY_WIDTH ; dimensions (y, x) - dw IndigoPlateauLobbyBlocks, IndigoPlateauLobbyTextPointers, IndigoPlateauLobbyScript ; blocks, texts, scripts - db $00 ; connections - dw IndigoPlateauLobbyObject ; objects - -IndigoPlateauLobbyScript: ; 19c5b (6:5c5b) - call Func_22fa - call EnableAutoTextBoxDrawing - ld hl, $d126 - bit 6, [hl] - res 6, [hl] - ret z - ld hl, $d869 - res 7, [hl] - ld hl, $d734 - bit 1, [hl] - res 1, [hl] - ret z - ld hl, $d863 +.canceledItemUse xor a - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ret - -IndigoPlateauLobbyTextPointers: ; 19c7f (6:5c7f) - dw IndigoPlateauLobbyText1 - dw IndigoPlateauLobbyText2 - dw IndigoPlateauLobbyText3 - dw IndigoPlateauLobbyText4 - dw IndigoPlateauLobbyText5 - -IndigoPlateauLobbyText1: ; 19c89 (6:5c89) - db $ff - -IndigoPlateauLobbyText2: ; 19c8a (6:5c8a) - TX_FAR _IndigoPlateauLobbyText1 - db "@" - -IndigoPlateauLobbyText3: ; 19c8f (6:5c8f) - TX_FAR _IndigoPlateauLobbyText3 - db "@" - -IndigoPlateauLobbyText5: ; 19c94 (6:5c94) - db $f6 - -IndigoPlateauLobbyObject: ; 0x19c95 (size=58) - db $0 ; border tile - - db $3 ; warps - db $b, $7, $0, $ff - db $b, $8, $1, $ff - db $0, $8, $0, LORELEIS_ROOM - - db $0 ; signs - - db $5 ; people - db SPRITE_NURSE, $5 + 4, $7 + 4, $ff, $d0, $1 ; person - db SPRITE_GYM_HELPER, $9 + 4, $4 + 4, $ff, $d3, $2 ; person - db SPRITE_LASS, $1 + 4, $5 + 4, $ff, $d0, $3 ; person - db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $4 ; person - db SPRITE_CABLE_CLUB_WOMAN, $6 + 4, $d + 4, $ff, $d0, $5 ; person - - ; warp-to - EVENT_DISP INDIGO_PLATEAU_LOBBY_WIDTH, $b, $7 - EVENT_DISP INDIGO_PLATEAU_LOBBY_WIDTH, $b, $8 - EVENT_DISP INDIGO_PLATEAU_LOBBY_WIDTH, $0, $8 ; LORELEIS_ROOM - -IndigoPlateauLobbyBlocks: ; 19ccf (6:5ccf) - INCBIN "maps/indigoplateaulobby.blk" - -SilphCo4_h: ; 0x19cff to 0x19d0b (12 bytes) (bank=6) (id=209) - db FACILITY ; tileset - db SILPH_CO_4F_HEIGHT, SILPH_CO_4F_WIDTH ; dimensions (y, x) - dw SilphCo4Blocks, SilphCo4TextPointers, SilphCo4Script ; blocks, texts, scripts - db $00 ; connections - dw SilphCo4Object ; objects - -SilphCo4Script: ; 19d0b (6:5d0b) - call SilphCo4Script_19d21 - call EnableAutoTextBoxDrawing - ld hl, SilphCo4TrainerHeaders - ld de, SilphCo4ScriptPointers - ld a, [W_SILPHCO4CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_SILPHCO4CURSCRIPT], a - ret - -SilphCo4Script_19d21: ; 19d21 (6:5d21) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - ret z - ld hl, SilphCo4Data19d58 - call SilphCo4Script_19d5d - call SilphCo4Script_19d89 - ld a, [$d82a] - bit 0, a - jr nz, .asm_19d48 - push af - ld a, $54 - ld [$d09f], a - ld bc, $0602 - ld a, $17 - call Predef + ld [$cd6a],a ; item use failed pop af -.asm_19d48 - bit 1, a + pop af +.done + ld a,[$d152] + and a ; using Softboiled? + ret nz ; if so, return + call GBPalWhiteOut + call z,GoPAL_SET_CF1C + ld a,[W_ISINBATTLE] + and a ret nz - ld a, $54 - ld [$d09f], a - ld bc, $0406 - ld a, $17 - jp Predef - -SilphCo4Data19d58: ; 19d58 (6:5d58) - db $06, $02, $04, $06, $ff - -SilphCo4Script_19d5d: ; 19d5d (6:5d5d) + jp ReloadMapData ; restore saved screen +.useVitamin push hl - ld hl, $d73f - ld a, [hli] - ld b, a - ld a, [hl] - ld c, a + ld a,[hl] + ld [$d0b5],a + ld [$d11e],a + ld bc,33 + add hl,bc ; hl now points to level + ld a,[hl] ; a = level + ld [$d127],a ; store level + call GetMonHeader + push de + ld a,d + ld hl,W_PARTYMON1NAME + call GetPartyMonName + pop de + pop hl + ld a,[$cf91] + cp a,RARE_CANDY + jp z,.useRareCandy + push hl + sub a,HP_UP + add a + ld bc,17 + add hl,bc + add l + ld l,a + jr nc,.noCarry2 + inc h +.noCarry2 + ld a,10 + ld b,a + ld a,[hl] ; a = MSB of stat experience of the appropriate stat + cp a,100 ; is there already at least 25600 (256 * 100) stat experience? + jr nc,.vitaminNoEffect ; if so, vitamins can't add any more + add b ; add 2560 (256 * 10) stat experience + jr nc,.noCarry3 ; a carry should be impossible here, so this will always jump + ld a,255 +.noCarry3 + ld [hl],a + pop hl + call .recalculateStats + ld hl,VitaminText + ld a,[$cf91] + sub a,HP_UP - 1 + ld c,a +.statNameLoop ; loop to get the address of the name of the stat the vitamin increases + dec c + jr z,.gotStatName +.statNameInnerLoop + ld a,[hli] + ld b,a + ld a,$50 + cp b + jr nz,.statNameInnerLoop + jr .statNameLoop +.gotStatName + ld de,$cf4b + ld bc,10 + call CopyData ; copy the stat's name to $cf4b + ld a,(SFX_02_3e - SFX_Headers_02) / 3 + call PlaySound ; play sound + ld hl,VitaminStatRoseText + call PrintText + jp RemoveUsedItem +.vitaminNoEffect + pop hl + ld hl,VitaminNoEffectText + call PrintText + jp GBPalWhiteOut +.recalculateStats + ld bc,34 + add hl,bc + ld d,h + ld e,l ; de now points to stats + ld bc,-18 + add hl,bc ; hl now points to byte 3 of experience + ld b,1 + jp CalcStats ; recalculate stats +.useRareCandy + push hl + ld bc,33 + add hl,bc ; hl now points to level + ld a,[hl] ; a = level + cp a,100 + jr z,.vitaminNoEffect ; can't raise level above 100 + inc a + ld [hl],a ; store incremented level + ld [$d127],a + push hl + push de + ld d,a + ld hl, CalcExperience + ld b, BANK(CalcExperience) + call Bankswitch ; calculate experience for next level and store it at $ff96 + pop de + pop hl + ld bc,-19 + add hl,bc ; hl now points to experience +; update experience to minimum for new level + ld a,[$ff96] + ld [hli],a + ld a,[$ff97] + ld [hli],a + ld a,[$ff98] + ld [hl],a + pop hl + ld a,[wWhichPokemon] + push af + ld a,[$cf91] + push af + push de + push hl + ld bc,34 + add hl,bc ; hl now points to MSB of max HP + ld a,[hli] + ld b,a + ld c,[hl] + pop hl + push bc + push hl + call .recalculateStats + pop hl + ld bc,35 ; hl now points to LSB of max HP + add hl,bc + pop bc + ld a,[hld] + sub c + ld c,a + ld a,[hl] + sbc b + ld b,a ; bc = the amount of max HP gained from leveling up +; add the amount gained to the current HP + ld de,-32 + add hl,de ; hl now points to MSB of current HP + ld a,[hl] + add c + ld [hld],a + ld a,[hl] + adc b + ld [hl],a + ld a,$f8 ; level up message + ld [$d07d],a + call RedrawPartyMenu + pop de + ld a,d + ld [wWhichPokemon],a + ld a,e + ld [$d11e],a xor a - ld [$ffe0], a - pop hl -.asm_19d69 - ld a, [hli] - cp $ff - jr z, .asm_19d85 ; 0x19d6c $17 - push hl - ld hl, $ffe0 - inc [hl] - pop hl - cp b - jr z, .asm_19d7a ; 0x19d75 $3 - inc hl - jr .asm_19d69 ; 0x19d78 $ef -.asm_19d7a - ld a, [hli] - cp c - jr nz, .asm_19d69 ; 0x19d7c $eb - ld hl, $d73f + ld [$cc49],a ; load from player's party + call LoadMonData + ld d,$01 + ld hl, PrintStatsBox + ld b, BANK(PrintStatsBox) + call Bankswitch ; display new stats text box + call WaitForTextScrollButtonPress ; wait for button press xor a - ld [hli], a - ld [hl], a - ret -.asm_19d85 + ld [$cc49],a + ld a,$1a + call Predef ; learn level up move, if any xor a - ld [$ffe0], a - ret - -SilphCo4Script_19d89: ; 19d89 (6:5d89) - ld hl, $d82a - ld a, [$ffe0] - and a - ret z - cp $1 - jr nz, .asm_19d97 ; 0x19d92 $3 - set 0, [hl] - ret -.asm_19d97 - set 1, [hl] - ret - -SilphCo4ScriptPointers: ; 19d9a (6:5d9a) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -SilphCo4TextPointers: ; 19da0 (6:5da0) - dw SilphCo4Text1 - dw SilphCo4Text2 - dw SilphCo4Text3 - dw SilphCo4Text4 - dw Predef5CText - dw Predef5CText - dw Predef5CText - -SilphCo4TrainerHeaders: ; 19dae (6:5dae) -SilphCo4TrainerHeader0: ; 19dae (6:5dae) - db $2 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d829 ; flag's byte - dw SilphCo4BattleText2 ; 0x5df4 TextBeforeBattle - dw SilphCo4AfterBattleText2 ; 0x5dfe TextAfterBattle - dw SilphCo4EndBattleText2 ; 0x5df9 TextEndBattle - dw SilphCo4EndBattleText2 ; 0x5df9 TextEndBattle - -SilphCo4TrainerHeader2: ; 19dba (6:5dba) - db $3 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d829 ; flag's byte - dw SilphCo4BattleText3 ; 0x5e0d TextBeforeBattle - dw SilphCo4AfterBattleText3 ; 0x5e17 TextAfterBattle - dw SilphCo4EndBattleText3 ; 0x5e12 TextEndBattle - dw SilphCo4EndBattleText3 ; 0x5e12 TextEndBattle - -SilphCo4TrainerHeader3: ; 19dc6 (6:5dc6) - db $4 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d829 ; flag's byte - dw SilphCo4BattleText4 ; 0x5e26 TextBeforeBattle - dw SilphCo4AfterBattleText4 ; 0x5e30 TextAfterBattle - dw SilphCo4EndBattleText4 ; 0x5e2b TextEndBattle - dw SilphCo4EndBattleText4 ; 0x5e2b TextEndBattle - - db $ff - -SilphCo4Text1: ; 19dd3 (6:5dd3) - db $08 ; asm - ld hl, UnnamedText_19de0 - ld de, UnnamedText_19de5 - call SilphCo6Script_1a22f - jp TextScriptEnd - -UnnamedText_19de0: ; 19de0 (6:5de0) - TX_FAR _UnnamedText_19de0 - db "@" - -UnnamedText_19de5: ; 19de5 (6:5de5) - TX_FAR _UnnamedText_19de5 - db "@" - -SilphCo4Text2: ; 19dea (6:5dea) - db $08 ; asm - ld hl, SilphCo4TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -SilphCo4BattleText2: ; 19df4 (6:5df4) - TX_FAR _SilphCo4BattleText2 - db "@" - -SilphCo4EndBattleText2: ; 19df9 (6:5df9) - TX_FAR _SilphCo4EndBattleText2 - db "@" - -SilphCo4AfterBattleText2: ; 19dfe (6:5dfe) - TX_FAR _SilphCo4AfterBattleText2 - db "@" - -SilphCo4Text3: ; 19e03 (6:5e03) - db $08 ; asm - ld hl, SilphCo4TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -SilphCo4BattleText3: ; 19e0d (6:5e0d) - TX_FAR _SilphCo4BattleText3 - db "@" - -SilphCo4EndBattleText3: ; 19e12 (6:5e12) - TX_FAR _SilphCo4EndBattleText3 - db "@" - -SilphCo4AfterBattleText3: ; 19e17 (6:5e17) - TX_FAR _SilphCo4AfterBattleText3 - db "@" - -SilphCo4Text4: ; 19e1c (6:5e1c) - db $08 ; asm - ld hl, SilphCo4TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -SilphCo4BattleText4: ; 19e26 (6:5e26) - TX_FAR _SilphCo4BattleText4 - db "@" - -SilphCo4EndBattleText4: ; 19e2b (6:5e2b) - TX_FAR _SilphCo4EndBattleText4 - db "@" - -SilphCo4AfterBattleText4: ; 19e30 (6:5e30) - TX_FAR _SilphCo4AfterBattleText4 - db "@" - -SilphCo4Object: ; 0x19e35 (size=111) - db $2e ; border tile - - db $7 ; warps - db $0, $18, $1, SILPH_CO_3F - db $0, $1a, $1, SILPH_CO_5F - db $0, $14, $0, SILPH_CO_ELEVATOR - db $7, $b, $3, SILPH_CO_10F - db $3, $11, $3, SILPH_CO_6F - db $f, $3, $4, SILPH_CO_10F - db $b, $11, $5, SILPH_CO_10F - - db $0 ; signs - - db $7 ; people - db SPRITE_LAPRAS_GIVER, $2 + 4, $6 + 4, $ff, $ff, $1 ; person - db SPRITE_ROCKET, $e + 4, $9 + 4, $ff, $d3, $42, ROCKET + $C8, $1a ; trainer - db SPRITE_OAK_AIDE, $6 + 4, $e + 4, $ff, $d2, $43, SCIENTIST + $C8, $5 ; trainer - db SPRITE_ROCKET, $a + 4, $1a + 4, $ff, $d1, $44, ROCKET + $C8, $1b ; trainer - db SPRITE_BALL, $9 + 4, $3 + 4, $ff, $ff, $85, FULL_HEAL ; item - db SPRITE_BALL, $7 + 4, $4 + 4, $ff, $ff, $86, MAX_REVIVE ; item - db SPRITE_BALL, $8 + 4, $5 + 4, $ff, $ff, $87, ESCAPE_ROPE ; item - - ; warp-to - EVENT_DISP SILPH_CO_4F_WIDTH, $0, $18 ; SILPH_CO_3F - EVENT_DISP SILPH_CO_4F_WIDTH, $0, $1a ; SILPH_CO_5F - EVENT_DISP SILPH_CO_4F_WIDTH, $0, $14 ; SILPH_CO_ELEVATOR - EVENT_DISP SILPH_CO_4F_WIDTH, $7, $b ; SILPH_CO_10F - EVENT_DISP SILPH_CO_4F_WIDTH, $3, $11 ; SILPH_CO_6F - EVENT_DISP SILPH_CO_4F_WIDTH, $f, $3 ; SILPH_CO_10F - EVENT_DISP SILPH_CO_4F_WIDTH, $b, $11 ; SILPH_CO_10F - -SilphCo4Blocks: ; 19ea4 (6:5ea4) - INCBIN "maps/silphco4.blk" - -SilphCo5_h: ; 0x19f2b to 0x19f37 (12 bytes) (bank=6) (id=210) - db FACILITY ; tileset - db SILPH_CO_5F_HEIGHT, SILPH_CO_5F_WIDTH ; dimensions (y, x) - dw SilphCo5Blocks, SilphCo5TextPointers, SilphCo5Script ; blocks, texts, scripts - db $00 ; connections - dw SilphCo5Object ; objects - -SilphCo5Script: ; 19f37 (6:5f37) - call SilphCo5Script_19f4d - call EnableAutoTextBoxDrawing - ld hl, SilphCo5TrainerHeaders - ld de, SilphCo5ScriptPointers - ld a, [W_SILPHCO5CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_SILPHCO5CURSCRIPT], a - ret - -SilphCo5Script_19f4d: ; 19f4d (6:5f4d) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - ret z - ld hl, SilphCo5Coords - call SilphCo4Script_19d5d - call SilphCo5Script_19f9e - ld a, [$d82c] - bit 0, a - jr nz, .asm_19f74 ; 0x19f63 $f - push af - ld a, $5f - ld [$d09f], a - ld bc, $0203 - ld a, $17 - call Predef + ld [$ccd4],a + ld hl, Func_3ad0e + ld b, BANK(Func_3ad0e) + call Bankswitch ; evolve pokemon, if appropriate + ld a,$01 + ld [$cfcb],a pop af -.asm_19f74 - bit 1, a - jr nz, .asm_19f87 ; 0x19f76 $f - push af - ld a, $5f - ld [$d09f], a - ld bc, $0603 - ld a, $17 - call Predef + ld [$cf91],a pop af -.asm_19f87 - bit 2, a - ret nz - ld a, $5f - ld [$d09f], a - ld bc, $0507 - ld a, $17 - jp Predef - -SilphCo5Coords: ; 19f97 (6:5f97) ; coords? - db $02, $03, $06, $03, $05, $07, $ff - -SilphCo5Script_19f9e: ; 19f9e (6:5f9e) - ld hl, $d82c - ld a, [$ffe0] - and a - ret z - cp $1 - jr nz, .asm_19fac ; 0x19fa7 $3 - set 0, [hl] - ret -.asm_19fac - cp $2 - jr nz, .asm_19fb3 ; 0x19fae $3 - set 1, [hl] - ret -.asm_19fb3 - set 2, [hl] - ret - -SilphCo5ScriptPointers: ; 19fb6 (6:5fb6) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -SilphCo5TextPointers: ; 19fbc (6:5fbc) - dw SilphCo5Text1 - dw SilphCo5Text2 - dw SilphCo5Text3 - dw SilphCo5Text4 - dw SilphCo5Text5 - dw Predef5CText - dw Predef5CText - dw Predef5CText - dw SilphCo5Text9 - dw SilphCo5Text10 - dw SilphCo5Text11 - -SilphCo5TrainerHeaders: ; 19fd2 (6:5fd2) -Silphco5TrainerHeader0: ; 19fd2 (6:5fd2) - db $2 ; flag's bit - db ($1 << 4) ; trainer's view range - dw $d82b ; flag's byte - dw SilphCo5BattleText2 ; 0x6024 TextBeforeBattle - dw SilphCo5AfterBattleText2 ; 0x602e TextAfterBattle - dw SilphCo5EndBattleText2 ; 0x6029 TextEndBattle - dw SilphCo5EndBattleText2 ; 0x6029 TextEndBattle - -Silphco5TrainerHeader2: ; 19fde (6:5fde) - db $3 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d82b ; flag's byte - dw SilphCo5BattleText3 ; 0x603d TextBeforeBattle - dw SilphCo5AfterBattleText3 ; 0x6047 TextAfterBattle - dw SilphCo5EndBattleText3 ; 0x6042 TextEndBattle - dw SilphCo5EndBattleText3 ; 0x6042 TextEndBattle - -Silphco5TrainerHeader3: ; 19fea (6:5fea) - db $4 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d82b ; flag's byte - dw SilphCo5BattleText4 ; 0x6056 TextBeforeBattle - dw SilphCo5AfterBattleText4 ; 0x6060 TextAfterBattle - dw SilphCo5EndBattleText4 ; 0x605b TextEndBattle - dw SilphCo5EndBattleText4 ; 0x605b TextEndBattle - -Silphco5TrainerHeader4: ; 19ff6 (6:5ff6) - db $5 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d82b ; flag's byte - dw SilphCo5BattleText5 ; 0x606f TextBeforeBattle - dw SilphCo5AfterBattleText5 ; 0x6079 TextAfterBattle - dw SilphCo5EndBattleText5 ; 0x6074 TextEndBattle - dw SilphCo5EndBattleText5 ; 0x6074 TextEndBattle - - db $ff - -SilphCo5Text1: ; 1a003 (6:6003) - db $08 ; asm - ld hl, UnnamedText_1a010 - ld de, UnnamedText_1a015 - call SilphCo6Script_1a22f - jp TextScriptEnd - -UnnamedText_1a010: ; 1a010 (6:6010) - TX_FAR _UnnamedText_1a010 - db "@" - -UnnamedText_1a015: ; 1a015 (6:6015) - TX_FAR _UnnamedText_1a015 - db "@" - -SilphCo5Text2: ; 1a01a (6:601a) - db $08 ; asm - ld hl, Silphco5TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -SilphCo5BattleText2: ; 1a024 (6:6024) - TX_FAR _SilphCo5BattleText2 - db "@" - -SilphCo5EndBattleText2: ; 1a029 (6:6029) - TX_FAR _SilphCo5EndBattleText2 - db "@" - -SilphCo5AfterBattleText2: ; 1a02e (6:602e) - TX_FAR _SilphCo5AfterBattleText2 - db "@" - -SilphCo5Text3: ; 1a033 (6:6033) - db $08 ; asm - ld hl, Silphco5TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -SilphCo5BattleText3: ; 1a03d (6:603d) - TX_FAR _SilphCo5BattleText3 - db "@" - -SilphCo5EndBattleText3: ; 1a042 (6:6042) - TX_FAR _SilphCo5EndBattleText3 - db "@" - -SilphCo5AfterBattleText3: ; 1a047 (6:6047) - TX_FAR _SilphCo5AfterBattleText3 - db "@" - -SilphCo5Text4: ; 1a04c (6:604c) - db $08 ; asm - ld hl, Silphco5TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -SilphCo5BattleText4: ; 1a056 (6:6056) - TX_FAR _SilphCo5BattleText4 - db "@" + ld [wWhichPokemon],a + jp RemoveUsedItem -SilphCo5EndBattleText4: ; 1a05b (6:605b) - TX_FAR _SilphCo5EndBattleText4 +VitaminStatRoseText: ; df24 (3:5f24) + TX_FAR _VitaminStatRoseText db "@" -SilphCo5AfterBattleText4: ; 1a060 (6:6060) - TX_FAR _SilphCo5AfterBattleText4 +VitaminNoEffectText: ; df29 (3:5f29) + TX_FAR _VitaminNoEffectText db "@" -SilphCo5Text5: ; 1a065 (6:6065) - db $08 ; asm - ld hl, Silphco5TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd +VitaminText: ; df2e (3:5f2e) + db "HEALTH@" + db "ATTACK@" + db "DEFENSE@" + db "SPEED@" + db "SPECIAL@" -SilphCo5BattleText5: ; 1a06f (6:606f) - TX_FAR _SilphCo5BattleText5 - db "@" +ItemUseBait: ; df52 (3:5f52) + ld hl,ThrewBaitText + call PrintText + ld hl,$d007 ; catch rate + srl [hl] ; halve catch rate + ld a,BAIT_ANIM + ld hl,$cce9 ; bait factor + ld de,$cce8 ; escape factor + jr BaitRockCommon -SilphCo5EndBattleText5: ; 1a074 (6:6074) - TX_FAR _SilphCo5EndBattleText5 - db "@" +ItemUseRock: ; df67 (3:5f67) + ld hl,ThrewRockText + call PrintText + ld hl,$d007 ; catch rate + ld a,[hl] + add a ; double catch rate + jr nc,.noCarry + ld a,$ff +.noCarry + ld [hl],a + ld a,ROCK_ANIM + ld hl,$cce8 ; escape factor + ld de,$cce9 ; bait factor -SilphCo5AfterBattleText5: ; 1a079 (6:6079) - TX_FAR _SilphCo5AfterBattleText5 - db "@" +BaitRockCommon: ; df7f (3:5f7f) + ld [W_ANIMATIONID],a + xor a + ld [$cc5b],a + ld [H_WHOSETURN],a + ld [de],a ; zero escape factor (for bait), zero bait factor (for rock) +.randomLoop ; loop until a random number less than 5 is generated + call GenRandom + and a,7 + cp a,5 + jr nc,.randomLoop + inc a ; increment the random number, giving a range from 1 to 5 inclusive + ld b,a + ld a,[hl] + add b ; increase bait factor (for bait), increase escape factor (for rock) + jr nc,.noCarry + ld a,$ff +.noCarry + ld [hl],a + ld a,$08 + call Predef ; do animation + ld c,70 + jp DelayFrames -SilphCo5Text9: ; 1a07e (6:607e) - TX_FAR _SilphCo5Text9 +ThrewBaitText: ; dfa5 (3:5fa5) + TX_FAR _ThrewBaitText db "@" -SilphCo5Text10: ; 1a083 (6:6083) - TX_FAR _SilphCo5Text10 +ThrewRockText: ; dfaa (3:5faa) + TX_FAR _ThrewRockText db "@" -SilphCo5Text11: ; 1a088 (6:6088) - TX_FAR _SilphCo5Text11 - db "@" +; also used for Dig out-of-battle effect +ItemUseEscapeRope: ; dfaf (3:5faf) + ld a,[W_ISINBATTLE] + and a + jr nz,.notUsable + ld a,[W_CURMAP] + cp a,AGATHAS_ROOM + jr z,.notUsable + ld a,[W_CURMAPTILESET] + ld b,a + ld hl,EscapeRopeTilesets +.loop + ld a,[hli] + cp a,$ff + jr z,.notUsable + cp b + jr nz,.loop + ld hl,$d732 + set 3,[hl] + set 6,[hl] + ld hl,$d72e + res 4,[hl] + ld hl,$d790 + res 7,[hl] ; unset Safari Zone bit + xor a + ld [$da47],a + ld [W_SAFARIZONEENTRANCECURSCRIPT],a + inc a + ld [$d078],a + ld [$cd6a],a ; item used + ld a,[$d152] + and a ; using Dig? + ret nz ; if so, return + call ItemUseReloadOverworldData + ld c,30 + call DelayFrames + jp RemoveUsedItem +.notUsable + jp ItemUseNotTime -SilphCo5Object: ; 0x1a08d (size=137) - db $2e ; border tile +EscapeRopeTilesets: ; dffd (3:5ffd) + db FOREST, CEMETERY, CAVERN, FACILITY, INTERIOR + db $ff ; terminator - db $7 ; warps - db $0, $18, $1, SILPH_CO_6F - db $0, $1a, $1, SILPH_CO_4F - db $0, $14, $0, SILPH_CO_ELEVATOR - db $3, $1b, $5, SILPH_CO_7F - db $f, $9, $4, SILPH_CO_9F - db $5, $b, $4, SILPH_CO_3F - db $f, $3, $5, SILPH_CO_3F +ItemUseRepel: ; e003 (3:6003) + ld b,100 - db $0 ; signs +ItemUseRepelCommon: ; e005 (3:6005) + ld a,[W_ISINBATTLE] + and a + jp nz,ItemUseNotTime + ld a,b + ld [$d0db],a + jp PrintItemUseTextAndRemoveItem - db $b ; people - db SPRITE_LAPRAS_GIVER, $9 + 4, $d + 4, $ff, $ff, $1 ; person - db SPRITE_ROCKET, $10 + 4, $8 + 4, $ff, $d3, $42, ROCKET + $C8, $1c ; trainer - db SPRITE_OAK_AIDE, $3 + 4, $8 + 4, $ff, $d3, $43, SCIENTIST + $C8, $6 ; trainer - db SPRITE_ROCKER, $a + 4, $12 + 4, $ff, $d1, $44, JUGGLER + $C8, $1 ; trainer - db SPRITE_ROCKET, $4 + 4, $1c + 4, $ff, $d1, $45, ROCKET + $C8, $1d ; trainer - db SPRITE_BALL, $d + 4, $2 + 4, $ff, $ff, $86, TM_09 ; item - db SPRITE_BALL, $6 + 4, $4 + 4, $ff, $ff, $87, PROTEIN ; item - db SPRITE_BALL, $10 + 4, $15 + 4, $ff, $ff, $88, CARD_KEY ; item - db SPRITE_CLIPBOARD, $c + 4, $16 + 4, $ff, $ff, $9 ; person - db SPRITE_CLIPBOARD, $a + 4, $19 + 4, $ff, $ff, $a ; person - db SPRITE_CLIPBOARD, $6 + 4, $18 + 4, $ff, $ff, $b ; person +; handles X Accuracy item +ItemUseXAccuracy: ; e013 (3:6013) + ld a,[W_ISINBATTLE] + and a + jp z,ItemUseNotTime + ld hl,W_PLAYERBATTSTATUS2 + set 0,[hl] ; X Accuracy bit + jp PrintItemUseTextAndRemoveItem - ; warp-to - EVENT_DISP SILPH_CO_5F_WIDTH, $0, $18 ; SILPH_CO_6F - EVENT_DISP SILPH_CO_5F_WIDTH, $0, $1a ; SILPH_CO_4F - EVENT_DISP SILPH_CO_5F_WIDTH, $0, $14 ; SILPH_CO_ELEVATOR - EVENT_DISP SILPH_CO_5F_WIDTH, $3, $1b ; SILPH_CO_7F - EVENT_DISP SILPH_CO_5F_WIDTH, $f, $9 ; SILPH_CO_9F - EVENT_DISP SILPH_CO_5F_WIDTH, $5, $b ; SILPH_CO_3F - EVENT_DISP SILPH_CO_5F_WIDTH, $f, $3 ; SILPH_CO_3F +; This function is bugged and never works. It always jumps to ItemUseNotTime. +; The Card Key is handled in a different way. +ItemUseCardKey: ; e022 (3:6022) + xor a + ld [$d71f],a + call Func_c586 + ld a,[Func_c586] ; $4586 + cp a,$18 + jr nz,.next0 + ld hl,CardKeyTable1 + jr .next1 +.next0 + cp a,$24 + jr nz,.next2 + ld hl,CardKeyTable2 + jr .next1 +.next2 + cp a,$5e + jp nz,ItemUseNotTime + ld hl,CardKeyTable3 +.next1 + ld a,[W_CURMAP] + ld b,a +.loop + ld a,[hli] + cp a,$ff + jp z,ItemUseNotTime + cp b + jr nz,.nextEntry1 + ld a,[hli] + cp d + jr nz,.nextEntry2 + ld a,[hli] + cp e + jr nz,.nextEntry3 + ld a,[hl] + ld [$d71f],a + jr .done +.nextEntry1 + inc hl +.nextEntry2 + inc hl +.nextEntry3 + inc hl + jr .loop +.done + ld hl,ItemUseText00 + call PrintText + ld hl,$d728 + set 7,[hl] + ret -SilphCo5Blocks: ; 1a116 (6:6116) - INCBIN "maps/silphco5.blk" +; These tables are probably supposed to be door locations in Silph Co., +; but they are unused. +; The reason there are 3 tables is unknown. -SilphCo6_h: ; 0x1a19d to 0x1a1a9 (12 bytes) (bank=6) (id=211) - db FACILITY ; tileset - db SILPH_CO_6F_HEIGHT, SILPH_CO_6F_WIDTH ; dimensions (y, x) - dw SilphCo6Blocks, SilphCo6TextPointers, SilphCo6Script ; blocks, texts, scripts - db $00 ; connections - dw SilphCo6Object ; objects +; Format: +; 00: Map ID +; 01: Y +; 02: X +; 03: ID? -SilphCo6Script: ; 1a1a9 (6:61a9) - call SilphCo6Script_1a1bf - call EnableAutoTextBoxDrawing - ld hl, SilphCo6TrainerHeaders - ld de, SilphCo6ScriptPointers - ld a, [W_SILPHCO6CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_SILPHCO6CURSCRIPT], a - ret +CardKeyTable1: ; e072 (3:6072) + db SILPH_CO_2F,$04,$04,$00 + db SILPH_CO_2F,$04,$05,$01 + db SILPH_CO_4F,$0C,$04,$02 + db SILPH_CO_4F,$0C,$05,$03 + db SILPH_CO_7F,$06,$0A,$04 + db SILPH_CO_7F,$06,$0B,$05 + db SILPH_CO_9F,$04,$12,$06 + db SILPH_CO_9F,$04,$13,$07 + db SILPH_CO_10F,$08,$0A,$08 + db SILPH_CO_10F,$08,$0B,$09 + db $ff -SilphCo6Script_1a1bf: ; 1a1bf (6:61bf) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - ret z - ld hl, SilphCo6Coords1 - call SilphCo4Script_19d5d - call SilphCo6Script_1a1e6 - ld a, [$d82e] - bit 7, a - ret nz - ld a, $5f - ld [$d09f], a - ld bc, $0602 - ld a, $17 - jp Predef +CardKeyTable2: ; e09b (3:609b) + db SILPH_CO_3F,$08,$09,$0A + db SILPH_CO_3F,$09,$09,$0B + db SILPH_CO_5F,$04,$07,$0C + db SILPH_CO_5F,$05,$07,$0D + db SILPH_CO_6F,$0C,$05,$0E + db SILPH_CO_6F,$0D,$05,$0F + db SILPH_CO_8F,$08,$07,$10 + db SILPH_CO_8F,$09,$07,$11 + db SILPH_CO_9F,$08,$03,$12 + db SILPH_CO_9F,$09,$03,$13 + db $ff -SilphCo6Coords1: ; 1a1e3 (6:61e3) - db $06, $02 +CardKeyTable3: ; e0c4 (3:60c4) + db SILPH_CO_11F,$08,$09,$14 + db SILPH_CO_11F,$09,$09,$15 db $ff -SilphCo6Script_1a1e6: ; 1a1e6 (6:61e6) - ld a, [$ffe0] +ItemUsePokedoll: ; e0cd (3:60cd) + ld a,[W_ISINBATTLE] + dec a + jp nz,ItemUseNotTime + ld a,$01 + ld [$d078],a + jp PrintItemUseTextAndRemoveItem + +ItemUseGuardSpec: ; e0dc (3:60dc) + ld a,[W_ISINBATTLE] and a - ret z - ld hl, $d82e - set 7, [hl] - ret + jp z,ItemUseNotTime + ld hl,W_PLAYERBATTSTATUS2 + set 1,[hl] ; Mist bit + jp PrintItemUseTextAndRemoveItem -SilphCo6ScriptPointers: ; 1a1f0 (6:61f0) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle +ItemUseSuperRepel: ; e0eb (3:60eb) + ld b,200 + jp ItemUseRepelCommon -SilphCo6TextPointers: ; 1a1f6 (6:61f6) - dw SilphCo6Text1 - dw SilphCo6Text2 - dw SilphCo6Text3 - dw SilphCo6Text4 - dw SilphCo6Text5 - dw SilphCo6Text6 - dw SilphCo6Text7 - dw SilphCo6Text8 - dw Predef5CText - dw Predef5CText +ItemUseMaxRepel: ; e0f0 (3:60f0) + ld b,250 + jp ItemUseRepelCommon -SilphCo6TrainerHeaders: ; 1a20a (6:620a) -SilphCo6TrainerHeader0: ; 1a20a (6:620a) - db $6 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d82d ; flag's byte - dw SilphCo6BattleText2 ; 0x62ba TextBeforeBattle - dw SilphCo6AfterBattleText2 ; 0x62c4 TextAfterBattle - dw SilphCo6EndBattleText2 ; 0x62bf TextEndBattle - dw SilphCo6EndBattleText2 ; 0x62bf TextEndBattle +ItemUseDireHit: ; e0f5 (3:60f5) + ld a,[W_ISINBATTLE] + and a + jp z,ItemUseNotTime + ld hl,W_PLAYERBATTSTATUS2 + set 2,[hl] ; Focus Energy bit + jp PrintItemUseTextAndRemoveItem -SilphCo6TrainerHeader2: ; 1a216 (6:6216) - db $7 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d82d ; flag's byte - dw SilphCo6BattleText3 ; 0x62d3 TextBeforeBattle - dw SilphCo6AfterBattleText3 ; 0x62dd TextAfterBattle - dw SilphCo6EndBattleText3 ; 0x62d8 TextEndBattle - dw SilphCo6EndBattleText3 ; 0x62d8 TextEndBattle +ItemUseXStat: ; e104 (3:6104) + ld a,[W_ISINBATTLE] + and a + jr nz,.inBattle + call ItemUseNotTime + ld a,2 + ld [$cd6a],a ; item not used + ret +.inBattle + ld hl,W_PLAYERMOVENUM + ld a,[hli] + push af ; save [W_PLAYERMOVENUM] + ld a,[hl] + push af ; save [W_PLAYERMOVEEFFECT] + push hl + ld a,[$cf91] + sub a,X_ATTACK - ATTACK_UP1_EFFECT + ld [hl],a ; store player move effect + call PrintItemUseTextAndRemoveItem + ld a,XSTATITEM_ANIM ; X stat item animation ID + ld [W_PLAYERMOVENUM],a + call LoadScreenTilesFromBuffer1 ; restore saved screen + call Delay3 + xor a + ld [H_WHOSETURN],a ; set turn to player's turn + ld b, BANK(Func_3f428) + ld hl, Func_3f428 + call Bankswitch ; do stat increase move + pop hl + pop af + ld [hld],a ; restore [W_PLAYERMOVEEFFECT] + pop af + ld [hl],a ; restore [W_PLAYERMOVENUM] + ret -SilphCo6TrainerHeader3: ; 1a222 (6:6222) - db $8 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d82d ; flag's byte - dw SilphCo6BattleText4 ; 0x62ec TextBeforeBattle - dw SilphCo6AfterBattleText4 ; 0x62f6 TextAfterBattle - dw SilphCo6EndBattleText4 ; 0x62f1 TextEndBattle - dw SilphCo6EndBattleText4 ; 0x62f1 TextEndBattle +ItemUsePokeflute: ; e140 (3:6140) + ld a,[W_ISINBATTLE] + and a + jr nz,.inBattle +; if not in battle + call ItemUseReloadOverworldData + ld a,[W_CURMAP] + cp a,ROUTE_12 + jr nz,.notRoute12 + ld a,[$d7d8] + bit 7,a ; has the player beaten Route 12 Snorlax yet? + jr nz,.noSnorlaxToWakeUp +; if the player hasn't beaten Route 12 Snorlax + ld hl,Route12SnorlaxFluteCoords + call ArePlayerCoordsInArray + jr nc,.noSnorlaxToWakeUp + ld hl,PlayedFluteHadEffectText + call PrintText + ld hl,$d7d8 + set 6,[hl] ; trigger Snorlax fight (handled by map script) + ret +.notRoute12 + cp a,ROUTE_16 + jr nz,.noSnorlaxToWakeUp + ld a,[$d7e0] + bit 1,a ; has the player beaten Route 16 Snorlax yet? + jr nz,.noSnorlaxToWakeUp +; if the player hasn't beaten Route 16 Snorlax + ld hl,Route16SnorlaxFluteCoords + call ArePlayerCoordsInArray + jr nc,.noSnorlaxToWakeUp + ld hl,PlayedFluteHadEffectText + call PrintText + ld hl,$d7e0 + set 0,[hl] ; trigger Snorlax fight (handled by map script) + ret +.noSnorlaxToWakeUp + ld hl,PlayedFluteNoEffectText + jp PrintText +.inBattle + xor a + ld [$cd3d],a ; initialize variable that indicates if any pokemon were woken up to zero + ld b,~SLP & $FF + ld hl,W_PARTYMON1_STATUS + call WakeUpEntireParty + ld a,[W_ISINBATTLE] + dec a ; is it a trainer battle? + jr z,.skipWakingUpEnemyParty +; if it's a trainer battle + ld hl,$d8a8 ; enemy party pokemon 1 status + call WakeUpEntireParty +.skipWakingUpEnemyParty + ld hl,W_PLAYERMONSTATUS + ld a,[hl] + and b ; remove Sleep status + ld [hl],a + ld hl,W_ENEMYMONSTATUS + ld a,[hl] + and b ; remove Sleep status + ld [hl],a + call LoadScreenTilesFromBuffer2 ; restore saved screen + ld a,[$cd3d] + and a ; were any pokemon asleep before playing the flute? + ld hl,PlayedFluteNoEffectText + jp z,PrintText ; if no pokemon were asleep +; if some pokemon were asleep + ld hl,PlayedFluteHadEffectText + call PrintText + ld a,[$d083] + and a,$80 + jr nz,.skipMusic + call WaitForSoundToFinish ; wait for sound to end + ld b, BANK(Music_PokeFluteInBattle) + ld hl, Music_PokeFluteInBattle + call Bankswitch ; play in-battle pokeflute music +.musicWaitLoop ; wait for music to finish playing + ld a,[$c02c] + and a ; music off? + jr nz,.musicWaitLoop +.skipMusic + ld hl,FluteWokeUpText + jp PrintText - db $ff +; wakes up all party pokemon +; INPUT: +; hl must point to status of first pokemon in party (player's or enemy's) +; b must equal ~SLP +; [$cd3d] should be initialized to 0 +; OUTPUT: +; [$cd3d]: set to 1 if any pokemon were asleep +WakeUpEntireParty: ; e1e5 (3:61e5) + ld de,44 + ld c,6 +.loop + ld a,[hl] + push af + and a,SLP ; is pokemon asleep? + jr z,.notAsleep + ld a,1 + ld [$cd3d],a ; indicate that a pokemon had to be woken up +.notAsleep + pop af + and b ; remove Sleep status + ld [hl],a + add hl,de + dec c + jr nz,.loop + ret -SilphCo6Script_1a22f: ; 1a22f (6:622f) - ld a, [$d838] - bit 7, a - jr nz, .asm_1a238 ; 0x1a234 $2 - jr .asm_1a23a ; 0x1a236 $2 -.asm_1a238 - ld h, d - ld l, e -.asm_1a23a - jp PrintText +; Format: +; 00: Y +; 01: X +Route12SnorlaxFluteCoords: ; e1fd (3:61fd) + db 62,9 ; one space West of Snorlax + db 61,10 ; one space North of Snorlax + db 63,10 ; one space South of Snorlax + db 62,11 ; one space East of Snorlax + db $ff ; terminator -SilphCo6Text1: ; 1a23d (6:623d) - db $08 ; asm - ld hl, UnnamedText_1a24a - ld de, UnnamedText_1a24f - call SilphCo6Script_1a22f - jp TextScriptEnd +; Format: +; 00: Y +; 01: X +Route16SnorlaxFluteCoords: ; e206 (3:6206) + db 10,27 ; one space East of Snorlax + db 10,25 ; one space West of Snorlax + db $ff ; terminator -UnnamedText_1a24a: ; 1a24a (6:624a) - TX_FAR _UnnamedText_1a24a +PlayedFluteNoEffectText: ; e20b (3:620b) + TX_FAR _PlayedFluteNoEffectText db "@" -UnnamedText_1a24f: ; 1a24f (6:624f) - TX_FAR _UnnamedText_1a24f +FluteWokeUpText: ; e210 (3:6210) + TX_FAR _FluteWokeUpText db "@" -SilphCo6Text2: ; 1a254 (6:6254) - db $08 ; asm - ld hl, UnnamedText_1a261 - ld de, UnnamedText_1a266 - call SilphCo6Script_1a22f - jp TextScriptEnd +PlayedFluteHadEffectText: ; e215 (3:6215) + TX_FAR _PlayedFluteHadEffectText + db $06 + db $08 + ld a,[W_ISINBATTLE] + and a + jr nz,.done +; play out-of-battle pokeflute music + ld a,$ff + call PlaySound ; turn off music + ld a, (SFX_02_5e - SFX_Headers_02) / 3 + ld c, BANK(SFX_02_5e) + call PlayMusic ; play music +.musicWaitLoop ; wait for music to finish playing + ld a,[$c028] + cp a,$b8 + jr z,.musicWaitLoop + call Func_2307 ; start playing normal music again +.done + jp TextScriptEnd ; end text -UnnamedText_1a261: ; 1a261 (6:6261) - TX_FAR _UnnamedText_1a261 - db "@" +ItemUseCoinCase: ; e23a (3:623a) + ld a,[W_ISINBATTLE] + and a + jp nz,ItemUseNotTime + ld hl,CoinCaseNumCoinsText + jp PrintText -UnnamedText_1a266: ; 1a266 (6:6266) - TX_FAR _UnnamedText_1a266 +CoinCaseNumCoinsText: ; e247 (3:6247) + TX_FAR _CoinCaseNumCoinsText db "@" -SilphCo6Text3: ; 1a26b (6:626b) - db $08 ; asm - ld hl, UnnamedText_1a278 - ld de, UnnamedText_1a27d - call SilphCo6Script_1a22f - jp TextScriptEnd +OldRodCode: ; e24c (3:624c) + call FishingInit + jp c, ItemUseNotTime + ld bc, (5 << 8) | MAGIKARP + ld a, $1 ; set bite + jr RodResponse ; 0xe257 $34 + +GoodRodCode: ; e259 (3:6259) + call FishingInit + jp c,ItemUseNotTime +.RandomLoop + call GenRandom + srl a + jr c, .SetBite + and %11 + cp 2 + jr nc, .RandomLoop + ; choose which monster appears + ld hl,GoodRodMons + add a,a + ld c,a + ld b,0 + add hl,bc + ld b,[hl] + inc hl + ld c,[hl] + and a +.SetBite + ld a,0 + rla + xor 1 + jr RodResponse -UnnamedText_1a278: ; 1a278 (6:6278) - TX_FAR _UnnamedText_1a278 - db "@" +INCLUDE "data/good_rod.asm" -UnnamedText_1a27d: ; 1a27d (6:627d) - TX_FAR _UnnamedText_1a27d - db "@" +SuperRodCode: ; e283 (3:6283) + call FishingInit + jp c, ItemUseNotTime + call ReadSuperRodData ; 0xe8ea + ld a, e +RodResponse: ; e28d (3:628d) + ld [$CD3D], a -SilphCo6Text4: ; 1a282 (6:6282) - db $08 ; asm - ld hl, UnnamedText_1a28f - ld de, UnnamedText_1a294 - call SilphCo6Script_1a22f - jp TextScriptEnd + dec a ; is there a bite? + jr nz, .next + ; if yes, store level and species data + ld a, 1 + ld [$D05F], a + ld a, b ; level + ld [W_CURENEMYLVL], a + ld a, c ; species + ld [W_CUROPPONENT], a -UnnamedText_1a28f: ; 1a28f (6:628f) - TX_FAR _UnnamedText_1a28f - db "@" +.next + ld hl, $D700 + ld a, [hl] ; store the value in a + push af + push hl + ld [hl], 0 + ld b, BANK(Func_707b6) + ld hl, Func_707b6 + call Bankswitch + pop hl + pop af + ld [hl], a + ret -UnnamedText_1a294: ; 1a294 (6:6294) - TX_FAR _UnnamedText_1a294 - db "@" +; checks if fishing is possible and if so, runs initialization code common to all rods +; unsets carry if fishing is possible, sets carry if not +FishingInit: ; e2b4 (3:62b4) + ld a,[W_ISINBATTLE] + and a + jr z,.notInBattle + scf ; can't fish during battle + ret +.notInBattle + call IsNextTileShoreOrWater + ret c + ld a,[$d700] + cp a,2 ; Surfing? + jr z,.surfing + call ItemUseReloadOverworldData + ld hl,ItemUseText00 + call PrintText + ld a,(SFX_02_3e - SFX_Headers_02) / 3 + call PlaySound ; play sound + ld c,80 + call DelayFrames + and a + ret +.surfing + scf ; can't fish when surfing + ret -SilphCo6Text5: ; 1a299 (6:6299) - db $08 ; asm - ld hl, UnnamedText_1a2a6 - ld de, UnnamedText_1a2ab - call SilphCo6Script_1a22f - jp TextScriptEnd +ItemUseOaksParcel: ; e2de (3:62de) + jp ItemUseNotYoursToUse -UnnamedText_1a2a6: ; 1a2a6 (6:62a6) - TX_FAR _UnnamedText_1a2a6 +ItemUseItemfinder: ; e2e1 (3:62e1) + ld a,[W_ISINBATTLE] + and a + jp nz,ItemUseNotTime + call ItemUseReloadOverworldData + ld b,BANK(HiddenItemNear) + ld hl,HiddenItemNear + call Bankswitch ; check for hidden items + ld hl,ItemfinderFoundNothingText + jr nc,.printText ; if no hidden items + ld c,4 +.loop + ld a,(SFX_02_4a - SFX_Headers_02) / 3 + call PlaySoundWaitForCurrent ; play sound + ld a,(SFX_02_5a - SFX_Headers_02) / 3 + call PlaySoundWaitForCurrent ; play sound + dec c + jr nz,.loop + ld hl,ItemfinderFoundItemText +.printText + jp PrintText + +ItemfinderFoundItemText: ; e30d (3:630d) + TX_FAR _ItemfinderFoundItemText db "@" -UnnamedText_1a2ab: ; 1a2ab (6:62ab) - TX_FAR _UnnamedText_1a2ab +ItemfinderFoundNothingText: ; e312 (3:6312) + TX_FAR _ItemfinderFoundNothingText db "@" -SilphCo6Text6: ; 1a2b0 (6:62b0) - db $08 ; asm - ld hl, SilphCo6TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd +ItemUsePPUp: ; e317 (3:6317) + ld a,[W_ISINBATTLE] + and a + jp nz,ItemUseNotTime -SilphCo6BattleText2: ; 1a2ba (6:62ba) - TX_FAR _SilphCo6BattleText2 - db "@" +ItemUsePPRestore: ; e31e (3:631e) + ld a,[wWhichPokemon] + push af + ld a,[$cf91] + ld [$cd3d],a +.chooseMon + xor a + ld [$cfcb],a + ld a,$01 ; item use party menu + ld [$d07d],a + call DisplayPartyMenu + jr nc,.chooseMove + jp .itemNotUsed +.chooseMove + ld a,[$cd3d] + cp a,ELIXER + jp nc,.useElixir ; if Elixir or Max Elixir + ld a,$02 + ld [wMoveMenuType],a + ld hl,RaisePPWhichTechniqueText + ld a,[$cd3d] + cp a,ETHER ; is it a PP Up? + jr c,.printWhichTechniqueMessage ; if so, print the raise PP message + ld hl,RestorePPWhichTechniqueText ; otherwise, print the restore PP message +.printWhichTechniqueMessage + call PrintText + xor a + ld [$cc2e],a + ld hl, MoveSelectionMenu + ld b, BANK(MoveSelectionMenu) + call Bankswitch ; move selection menu + ld a,0 + ld [$cc2e],a + jr nz,.chooseMon + ld hl,W_PARTYMON1_MOVE1 + ld bc,44 + call GetSelectedMoveOffset + push hl + ld a,[hl] + ld [$d11e],a + call GetMoveName + call CopyStringToCF4B ; copy name to $cf4b + pop hl + ld a,[$cd3d] + cp a,ETHER + jr nc,.useEther ; if Ether or Max Ether +.usePPUp + ld bc,21 + add hl,bc + ld a,[hl] ; move PP + cp a,3 << 6 ; have 3 PP Ups already been used? + jr c,.PPNotMaxedOut + ld hl,PPMaxedOutText + call PrintText + jr .chooseMove +.PPNotMaxedOut + ld a,[hl] + add a,1 << 6 ; increase PP Up count by 1 + ld [hl],a + ld a,1 ; 1 PP Up used + ld [$d11e],a + call RestoreBonusPP ; add the bonus PP to current PP + ld hl,PPIncreasedText + call PrintText +.done + pop af + ld [wWhichPokemon],a + call GBPalWhiteOut + call GoPAL_SET_CF1C + jp RemoveUsedItem +.afterRestoringPP ; after using a (Max) Ether/Elixir + ld a,[wWhichPokemon] + ld b,a + ld a,[wPlayerMonNumber] + cp b ; is the pokemon whose PP was restored active in battle? + jr nz,.skipUpdatingInBattleData + ld hl,W_PARTYMON1_MOVE1PP + ld bc,44 + call AddNTimes + ld de,W_PLAYERMONPP + ld bc,4 + call CopyData ; copy party data to in-battle data +.skipUpdatingInBattleData + ld a,(SFX_02_3e - SFX_Headers_02) / 3 + call PlaySound + ld hl,PPRestoredText + call PrintText + jr .done +.useEther + call .restorePP + jr nz,.afterRestoringPP + jp .noEffect +; unsets zero flag if PP was restored, sets zero flag if not +; however, this is bugged for Max Ethers and Max Elixirs (see below) +.restorePP + xor a + ld [$cc49],a ; party pokemon + call GetMaxPP + ld hl,W_PARTYMON1_MOVE1 + ld bc,44 + call GetSelectedMoveOffset + ld bc,21 + add hl,bc ; hl now points to move's PP + ld a,[$d11e] + ld b,a ; b = max PP + ld a,[$cd3d] + cp a,MAX_ETHER + jr z,.fullyRestorePP + ld a,[hl] ; move PP + and a,%00111111 ; lower 6 bit bits store current PP + cp b ; does current PP equal max PP? + ret z ; if so, return + add a,10 ; increase current PP by 10 +; b holds the max PP amount and b will hold the new PP amount. +; So, if the new amount meets or exceeds the max amount, +; cap the amount to the max amount by leaving b unchanged. +; Otherwise, store the new amount in b. + cp b ; does the new amount meet or exceed the maximum? + jr nc,.storeNewAmount + ld b,a +.storeNewAmount + ld a,[hl] ; move PP + and a,%11000000 ; PP Up counter bits + add b + ld [hl],a + ret +.fullyRestorePP + ld a,[hl] ; move PP +; Note that this code has a bug. It doesn't mask out the upper two bits, which +; are used to count how many PP Ups have been used on the move. So, Max Ethers +; and Max Elixirs will not be detected as having no effect on a move with full +; PP if the move has had any PP Ups used on it. + cp b ; does current PP equal max PP? + ret z + jr .storeNewAmount +.useElixir +; decrement the item ID so that ELIXER becomes ETHER and MAX_ELIXER becomes MAX_ETHER + ld hl,$cd3d + dec [hl] + dec [hl] + xor a + ld hl,wCurrentMenuItem + ld [hli],a + ld [hl],a ; zero the counter for number of moves that had their PP restored + ld b,4 +; loop through each move and restore PP +.elixirLoop + push bc + ld hl,W_PARTYMON1_MOVE1 + ld bc,44 + call GetSelectedMoveOffset + ld a,[hl] + and a ; does the current slot have a move? + jr z,.nextMove + call .restorePP + jr z,.nextMove +; if some PP was restored + ld hl,$cc27 ; counter for number of moves that had their PP restored + inc [hl] +.nextMove + ld hl,wCurrentMenuItem + inc [hl] + pop bc + dec b + jr nz,.elixirLoop + ld a,[$cc27] + and a ; did any moves have their PP restored? + jp nz,.afterRestoringPP +.noEffect + call ItemUseNoEffect +.itemNotUsed + call GBPalWhiteOut + call GoPAL_SET_CF1C + pop af + xor a + ld [$cd6a],a ; item use failed + ret -SilphCo6EndBattleText2: ; 1a2bf (6:62bf) - TX_FAR _SilphCo6EndBattleText2 +RaisePPWhichTechniqueText: ; e45d (3:645d) + TX_FAR _RaisePPWhichTechniqueText db "@" -SilphCo6AfterBattleText2: ; 1a2c4 (6:62c4) - TX_FAR _SilphCo6AfterBattleText2 +RestorePPWhichTechniqueText: ; e462 (3:6462) + TX_FAR _RestorePPWhichTechniqueText db "@" -SilphCo6Text7: ; 1a2c9 (6:62c9) - db $08 ; asm - ld hl, SilphCo6TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -SilphCo6BattleText3: ; 1a2d3 (6:62d3) - TX_FAR _SilphCo6BattleText3 +PPMaxedOutText: ; e467 (3:6467) + TX_FAR _PPMaxedOutText db "@" -SilphCo6EndBattleText3: ; 1a2d8 (6:62d8) - TX_FAR _SilphCo6EndBattleText3 +PPIncreasedText: ; e46c (3:646c) + TX_FAR _PPIncreasedText db "@" -SilphCo6AfterBattleText3: ; 1a2dd (6:62dd) - TX_FAR _SilphCo6AfterBattleText3 +PPRestoredText: ; e471 (3:6471) + TX_FAR _PPRestoredText db "@" -SilphCo6Text8: ; 1a2e2 (6:62e2) - db $08 ; asm - ld hl, SilphCo6TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd +; for items that can't be used from the Item menu +UnusableItem: ; e476 (3:6476) + jp ItemUseNotTime -SilphCo6BattleText4: ; 1a2ec (6:62ec) - TX_FAR _SilphCo6BattleText4 - db "@" +ItemUseTMHM: ; e479 (3:6479) + ld a,[W_ISINBATTLE] + and a + jp nz,ItemUseNotTime + ld a,[$cf91] + sub a,TM_01 + push af + jr nc,.skipAdding + add a,55 ; if item is an HM, add 55 +.skipAdding + inc a + ld [$d11e],a + ld a,$44 + call Predef ; get move ID from TM/HM ID + ld a,[$d11e] + ld [$d0e0],a + call GetMoveName + call CopyStringToCF4B ; copy name to $cf4b + pop af + ld hl,BootedUpTMText + jr nc,.printBootedUpMachineText + ld hl,BootedUpHMText +.printBootedUpMachineText + call PrintText + ld hl,TeachMachineMoveText + call PrintText + FuncCoord 14,7 + ld hl,Coord + ld bc,$080f + ld a,$14 + ld [$d125],a + call DisplayTextBoxID ; yes/no menu + ld a,[wCurrentMenuItem] + and a + jr z,.useMachine + ld a,2 + ld [$cd6a],a ; item not used + ret +.useMachine + ld a,[wWhichPokemon] + push af + ld a,[$cf91] + push af +.chooseMon + ld hl,$cf4b + ld de,$d036 + ld bc,14 + call CopyData + ld a,$ff + ld [$cfcb],a + ld a,$03 ; teach TM/HM party menu + ld [$d07d],a + call DisplayPartyMenu + push af + ld hl,$d036 + ld de,$cf4b + ld bc,14 + call CopyData + pop af + jr nc,.checkIfAbleToLearnMove +; if the player canceled teaching the move + pop af + pop af + call GBPalWhiteOutWithDelay3 + call CleanLCD_OAM + call GoPAL_SET_CF1C + jp LoadScreenTilesFromBuffer1 ; restore saved screen +.checkIfAbleToLearnMove + ld a,$43 + call Predef ; check if the pokemon can learn the move + push bc + ld a,[wWhichPokemon] + ld hl,W_PARTYMON1NAME + call GetPartyMonName + pop bc + ld a,c + and a ; can the pokemon learn the move? + jr nz,.checkIfAlreadyLearnedMove +; if the pokemon can't learn the move + ld a,(SFX_02_51 - SFX_Headers_02) / 3 + call PlaySoundWaitForCurrent ; play sound + ld hl,MonCannotLearnMachineMoveText + call PrintText + jr .chooseMon +.checkIfAlreadyLearnedMove + ld hl, CheckIfMoveIsKnown + ld b, BANK(CheckIfMoveIsKnown) + call Bankswitch ; check if the pokemon already knows the move + jr c,.chooseMon + ld a,$1b + call Predef ; teach move + pop af + ld [$cf91],a + pop af + ld [wWhichPokemon],a + ld a,b + and a + ret z + ld a,[$cf91] + call IsItemHM + ret c + jp RemoveUsedItem -SilphCo6EndBattleText4: ; 1a2f1 (6:62f1) - TX_FAR _SilphCo6EndBattleText4 +BootedUpTMText: ; e54f (3:654f) + TX_FAR _BootedUpTMText db "@" -SilphCo6AfterBattleText4: ; 1a2f6 (6:62f6) - TX_FAR _SilphCo6AfterBattleText4 +BootedUpHMText: ; e554 (3:6554) + TX_FAR _BootedUpHMText db "@" -SilphCo6Object: ; 0x1a2fb (size=112) - db $2e ; border tile - - db $5 ; warps - db $0, $10, $1, SILPH_CO_7F - db $0, $e, $0, SILPH_CO_5F - db $0, $12, $0, SILPH_CO_ELEVATOR - db $3, $3, $4, SILPH_CO_4F - db $3, $17, $6, SILPH_CO_2F - - db $0 ; signs - - db $a ; people - db SPRITE_LAPRAS_GIVER, $6 + 4, $a + 4, $ff, $ff, $1 ; person - db SPRITE_LAPRAS_GIVER, $6 + 4, $14 + 4, $ff, $ff, $2 ; person - db SPRITE_ERIKA, $6 + 4, $15 + 4, $ff, $d0, $3 ; person - db SPRITE_ERIKA, $a + 4, $b + 4, $ff, $d3, $4 ; person - db SPRITE_LAPRAS_GIVER, $d + 4, $12 + 4, $ff, $d1, $5 ; person - db SPRITE_ROCKET, $3 + 4, $11 + 4, $ff, $d3, $46, ROCKET + $C8, $1e ; trainer - db SPRITE_OAK_AIDE, $8 + 4, $7 + 4, $ff, $d0, $47, SCIENTIST + $C8, $7 ; trainer - db SPRITE_ROCKET, $f + 4, $e + 4, $ff, $d2, $48, ROCKET + $C8, $1f ; trainer - db SPRITE_BALL, $c + 4, $3 + 4, $ff, $ff, $89, HP_UP ; item - db SPRITE_BALL, $f + 4, $2 + 4, $ff, $ff, $8a, X_ACCURACY ; item - - ; warp-to - EVENT_DISP SILPH_CO_6F_WIDTH, $0, $10 ; SILPH_CO_7F - EVENT_DISP SILPH_CO_6F_WIDTH, $0, $e ; SILPH_CO_5F - EVENT_DISP SILPH_CO_6F_WIDTH, $0, $12 ; SILPH_CO_ELEVATOR - EVENT_DISP SILPH_CO_6F_WIDTH, $3, $3 ; SILPH_CO_4F - EVENT_DISP SILPH_CO_6F_WIDTH, $3, $17 ; SILPH_CO_2F - -SilphCo6Blocks: ; 1a36b (6:636b) - INCBIN "maps/silphco6.blk" - -Func_1a3e0: ; 1a3e0 (6:63e0) - ld hl, $d730 - res 1, [hl] - call Func_1a609 - jr nc, .asm_1a406 - ld a, $fc - ld [wJoypadForbiddenButtonsMask], a - ld hl, $d736 - set 1, [hl] - ld a, $1 - ld [$cd38], a - ld a, $80 - ld [$ccd3], a - xor a - ld [$c102], a - call Func_3486 - ret -.asm_1a406 - xor a - ld [$cd3a], a - ld [$cd38], a - ld [$ccd3], a - ld hl, $d736 - res 0, [hl] - res 1, [hl] - ld hl, $d730 - res 7, [hl] - ret +TeachMachineMoveText: ; e559 (3:6559) + TX_FAR _TeachMachineMoveText + db "@" -Func_1a41d: ; 1a41d (6:641d) - ld hl, $d730 - res 7, [hl] - ld hl, $d72e - res 7, [hl] - ld hl, $d736 - res 0, [hl] - res 1, [hl] - xor a - ld [$cf17], a - ld [$cc57], a - ld [$cf10], a - ld [$cd3a], a - ld [$cd38], a - ld [$ccd3], a - ret +MonCannotLearnMachineMoveText: ; e55e (3:655e) + TX_FAR _MonCannotLearnMachineMoveText + db "@" -PointerTable_1a442: ; 1a442 (6:6442) - dw Func_1a44c - dw Func_1a485 - dw Func_1a4a1 - dw Func_1a4a6 - dw Func_1a4f4 +PrintItemUseTextAndRemoveItem: ; e563 (3:6563) + ld hl,ItemUseText00 + call PrintText + ld a,(SFX_02_3e - SFX_Headers_02) / 3 + call PlaySound ; play sound + call WaitForTextScrollButtonPress ; wait for button press -Func_1a44c: ; 1a44c (6:644c) - ld a, [W_XCOORD] ; $d362 - sub $a - ld [$cca1], a - jr z, .asm_1a475 - ld b, $0 - ld c, a - ld hl, $cc97 - ld a, $80 - call FillMemory - ld [hl], $ff - ld a, [$cf13] - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - ld de, $cc97 - call MoveSprite - ld a, $1 - ld [$cf10], a - jr .asm_1a47a -.asm_1a475 - ld a, $3 - ld [$cf10], a -.asm_1a47a - ld hl, W_FLAGS_D733 - set 1, [hl] - ld a, $fc - ld [wJoypadForbiddenButtonsMask], a - ret +RemoveUsedItem: ; e571 (3:6571) + ld hl,wNumBagItems + ld a,1 ; one item + ld [$cf96],a ; store quantity + jp RemoveItemFromInventory -Func_1a485: ; 1a485 (6:6485) - ld a, [$d730] - bit 0, a - ret nz - ld a, [$cca1] - ld [$cd38], a - ld [$ff95], a - ld a, $23 - call Predef - call Func_3486 - ld a, $2 - ld [$cf10], a - ret +ItemUseNoEffect: ; e57c (3:657c) + ld hl,ItemUseNoEffectText + jr ItemUseFailed -Func_1a4a1: ; 1a4a1 (6:64a1) - ld a, [$cd38] - and a - ret nz +ItemUseNotTime: ; e581 (3:6581) + ld hl,ItemUseNotTimeText + jr ItemUseFailed -Func_1a4a6: ; 1a4a6 (6:64a6) - xor a - ld [$cd3b], a - ld a, [$cf13] - swap a - ld [$cf17], a - xor a - ld [$c206], a - ld hl, $ccd3 - ld de, RLEList_1a4e9 - call DecodeRLEList - dec a - ld [$cd38], a - ld hl, $cc97 - ld de, RLEList_1a4dc - call DecodeRLEList - ld hl, $d72e - res 7, [hl] - ld hl, $d730 - set 7, [hl] - ld a, $4 - ld [$cf10], a - ret +ItemUseNotYoursToUse: ; e586 (3:6586) + ld hl,ItemUseNotYoursToUseText + jr ItemUseFailed -RLEList_1a4dc: ; 1a4dc (6:64dc) - db $00, $05 - db $80, $01 - db $00, $05 - db $C0, $03 - db $40, $01 - db $E0, $01 - db $FF +ThrowBallAtTrainerMon: ; e58b (3:658b) + call GoPAL_SET_CF1C + call LoadScreenTilesFromBuffer1 ; restore saved screen + call Delay3 + ld a,TOSS_ANIM + ld [W_ANIMATIONID],a + ld a,$08 + call Predef ; do animation + ld hl,ThrowBallAtTrainerMonText1 + call PrintText + ld hl,ThrowBallAtTrainerMonText2 + call PrintText + jr RemoveUsedItem -RLEList_1a4e9: ; 1a4e9 (6:64e9) - db $40, $02 - db $10, $03 - db $80, $05 - db $20, $01 - db $80, $06 - db $FF +NoCyclingAllowedHere: ; e5ac (3:65ac) + ld hl,NoCyclingAllowedHereText + jr ItemUseFailed -Func_1a4f4: ; 1a4f4 (6:64f4) - ld a, [$cd38] - and a - ret nz - ld a, $0 - ld [$cc4d], a - ld a, $11 - call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) - ld hl, $d730 - res 7, [hl] - ld hl, $d72e - res 7, [hl] - jp Func_314e +BoxFullCannotThrowBall: ; e5b1 (3:65b1) + ld hl,BoxFullCannotThrowBallText + jr ItemUseFailed -PointerTable_1a510: ; 1a510 (6:6510) - dw Func_1a514 - dw Func_1a56b +SurfingAttemptFailed: ; e5b6 (3:65b6) + ld hl,NoSurfingHereText -Func_1a514: ; 1a514 (6:6514) - ld a, Bank(Func_9876) - ld [$c0ef], a - ld [$c0f0], a - ld a, MUSIC_MUSEUM_GUY - ld [$c0ee], a - call PlaySound - ld a, [$cf13] - swap a - ld [$cf17], a - call Func_3486 - ld hl, $ccd3 - ld de, RLEList_PewterMuseumPlayer - call DecodeRLEList - dec a - ld [$cd38], a +ItemUseFailed: ; e5b9 (3:65b9) xor a - ld [$d12f], a - ld a, $4f - call Predef - ld hl, $cc97 - ld de, RLEList_PewterMuseumGuy - call DecodeRLEList - ld hl, $d72e - res 7, [hl] - ld a, $1 - ld [$cf10], a - ret + ld [$cd6a],a ; item use failed + jp PrintText -RLEList_PewterMuseumPlayer: ; 1a559 (6:6559) - db $00, $01 - db $40, $03 - db $20, $0D - db $40, $06 - db $FF +ItemUseNotTimeText: ; e5c0 (3:65c0) + TX_FAR _ItemUseNotTimeText + db "@" -RLEList_PewterMuseumGuy: ; 1a562 (6:6562) - db $40, $06 - db $80, $0D - db $40, $03 - db $80, $01 - db $FF +ItemUseNotYoursToUseText: ; e5c5 (3:65c5) + TX_FAR _ItemUseNotYoursToUseText + db "@" -Func_1a56b: ; 1a56b (6:656b) - ld a, [$cd38] - and a - ret nz - ld hl, $d730 - res 7, [hl] - ld hl, $d72e - res 7, [hl] - jp Func_314e +ItemUseNoEffectText: ; e5ca (3:65ca) + TX_FAR _ItemUseNoEffectText + db "@" -PointerTable_1a57d: ; 1a57d (6:657d) - dw Func_1a581 - dw Func_1a56b +ThrowBallAtTrainerMonText1: ; e5cf (3:65cf) + TX_FAR _ThrowBallAtTrainerMonText1 + db "@" -Func_1a581: ; 1a581 (6:6581) - ld a, Bank(Func_9876) - ld [$c0ef], a - ld [$c0f0], a - ld a, MUSIC_MUSEUM_GUY - ld [$c0ee], a - call PlaySound - ld a, [$cf13] - swap a - ld [$cf17], a - xor a - ld [$c206], a - ld hl, $ccd3 - ld de, RLEList_PewterGymPlayer - call DecodeRLEList - dec a - ld [$cd38], a - ld a, $1 - ld [$d12f], a - ld a, $4f - call Predef - ld hl, $cc97 - ld de, RLEList_PewterGymGuy - call DecodeRLEList - ld hl, $d72e - res 7, [hl] - ld hl, $d730 - set 7, [hl] - ld a, $1 - ld [$cf10], a - ret +ThrowBallAtTrainerMonText2: ; e5d4 (3:65d4) + TX_FAR _ThrowBallAtTrainerMonText2 + db "@" -RLEList_PewterGymPlayer: ; 1a5cd (6:65cd) - db $00, $01 - db $10, $02 - db $80, $05 - db $20, $0B - db $40, $05 - db $20, $0F - db $FF +NoCyclingAllowedHereText: ; e5d9 (3:65d9) + TX_FAR _NoCyclingAllowedHereText + db "@" -RLEList_PewterGymGuy: ; 1a5da (6:65da) - db $00, $02 - db $80, $0F - db $40, $05 - db $80, $0B - db $00, $05 - db $C0, $03 - db $FF +NoSurfingHereText: ; e5de (3:65de) + TX_FAR _NoSurfingHereText + db "@" -; XXX why would this function want to return on POKEMONTOWER_7? -Func_1a5e7: ; 1a5e7 (6:65e7) - ld a, [W_CURMAP] ; $d35e - cp POKEMONTOWER_7 - ret z - ld hl, RivalIDs ; $6605 - ld a, [wEngagedTrainerClass] - ld b, a +BoxFullCannotThrowBallText: ; e5e3 (3:65e3) + TX_FAR _BoxFullCannotThrowBallText + db "@" + +ItemUseText00: ; e5e8 (3:65e8) + TX_FAR _ItemUseText001 + db $05 + TX_FAR _ItemUseText002 + db "@" + +GotOnBicycleText: ; e5f2 (3:65f2) + TX_FAR _GotOnBicycleText1 + db $05 + TX_FAR _GotOnBicycleText2 + db "@" + +GotOffBicycleText: ; e5fc (3:65fc) + TX_FAR _GotOffBicycleText1 + db $05 + TX_FAR _GotOffBicycleText2 + db "@" + +; restores bonus PP (from PP Ups) when healing at a pokemon center +; also, when a PP Up is used, it increases the current PP by one PP Up bonus +; INPUT: +; [wWhichPokemon] = index of pokemon in party +; [$d11e] = mode +; 0: Pokemon Center healing +; 1: using a PP Up +; [wCurrentMenuItem] = index of move (when using a PP Up) +RestoreBonusPP: ; e606 (3:6606) + ld hl,W_PARTYMON1_MOVE1 + ld bc,44 + ld a,[wWhichPokemon] + call AddNTimes + push hl + ld de,$cd78 - 1 + ld a,$5e + call Predef ; loads the normal max PP of each of the pokemon's moves to $cd78 + pop hl + ld c,21 + ld b,0 + add hl,bc ; hl now points to move 1 PP + ld de,$cd78 + ld b,0 ; initialize move counter to zero +; loop through the pokemon's moves .loop - ld a, [hli] - cp $ff - jr z, .notRival + inc b + ld a,b + cp a,5 ; reached the end of the pokemon's moves? + ret z ; if so, return + ld a,[$d11e] + dec a ; using a PP Up? + jr nz,.skipMenuItemIDCheck +; if using a PP Up, check if this is the move it's being used on + ld a,[wCurrentMenuItem] + inc a cp b - ret z + jr nz,.nextMove +.skipMenuItemIDCheck + ld a,[hl] + and a,%11000000 ; have any PP Ups been used? + call nz,AddBonusPP ; if so, add bonus PP +.nextMove + inc hl + inc de jr .loop -.notRival - ld a, [$cf13] - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - jp SetSpriteMovementBytesToFF -RivalIDs: ; 1a605 (6:6605) - db SONY1 + $c8 - db SONY2 + $c8 - db SONY3 + $c8 - db $ff +; adds bonus PP from PP Ups to current PP +; 1/5 of normal max PP (capped at 7) is added for each PP Up +; INPUT: +; [de] = normal max PP +; [hl] = move PP +; [$d11e] = max number of times to add bonus +; set to 1 when using a PP Up, set to 255 otherwise +AddBonusPP: ; e642 (3:6642) + push bc + ld a,[de] ; normal max PP of move + ld [H_DIVIDEND + 3],a + xor a + ld [H_DIVIDEND],a + ld [H_DIVIDEND + 1],a + ld [H_DIVIDEND + 2],a + ld a,5 + ld [H_DIVISOR],a + ld b,4 + call Divide + ld a,[hl] ; move PP + ld b,a + swap a + and a,%00001111 + srl a + srl a + ld c,a ; c = number of PP Ups used +.loop + ld a,[H_QUOTIENT + 3] + cp a,8 ; is the amount greater than or equal to 8? + jr c,.addAmount + ld a,7 ; cap the amount at 7 +.addAmount + add b + ld b,a + ld a,[$d11e] + dec a + jr z,.done + dec c + jr nz,.loop +.done + ld [hl],b + pop bc + ret -Func_1a609: ; 1a609 (6:6609) - push de - ld hl, DoorTileIDPointers ; $662c - ld a, [W_CURMAPTILESET] ; $d367 - ld de, $3 - call IsInArray - pop de - jr nc, .asm_1a62a - inc hl - ld a, [hli] - ld h, [hl] - ld l, a - FuncCoord 8, 9 ; $c45c - ld a, [Coord] - ld b, a -.asm_1a621 - ld a, [hli] +; gets max PP of a pokemon's move (including PP from PP Ups) +; INPUT: +; [wWhichPokemon] = index of pokemon within party/box +; [$cc49] = pokemon source +; 00: player's party +; 01: enemy's party +; 02: current box +; 03: daycare +; 04: player's in-battle pokemon +; [wCurrentMenuItem] = move index +; OUTPUT: +; [$d11e] = max PP +GetMaxPP: ; e677 (3:6677) + ld a,[$cc49] + and a + ld hl,W_PARTYMON1_MOVE1 + ld bc,44 + jr z,.sourceWithMultipleMon + ld hl,$d8ac ; enemy party + dec a + jr z,.sourceWithMultipleMon + ld hl,$da9e ; current box + ld bc,33 + dec a + jr z,.sourceWithMultipleMon + ld hl,$da67 ; daycare + dec a + jr z,.sourceWithOneMon + ld hl,W_PLAYERMONMOVES ; player's in-battle pokemon +.sourceWithOneMon + call GetSelectedMoveOffset2 + jr .next +.sourceWithMultipleMon + call GetSelectedMoveOffset +.next + ld a,[hl] + dec a + push hl + ld hl,Moves + ld bc,6 + call AddNTimes + ld de,$cd6d + ld a,BANK(Moves) + call FarCopyData + ld de,$cd72 + ld a,[de] + ld b,a ; b = normal max PP + pop hl + push bc + ld bc,21 ; PP offset if not player's in-battle pokemon data + ld a,[$cc49] + cp a,4 ; player's in-battle pokemon? + jr nz,.addPPOffset + ld bc,17 ; PP offset if player's in-battle pokemon data +.addPPOffset + add hl,bc + ld a,[hl] ; a = current PP + and a,%11000000 ; get PP Up count + pop bc + or b ; place normal max PP in 6 lower bits of a + ld h,d + ld l,e + inc hl ; hl = $cd73 + ld [hl],a + xor a + ld [$d11e],a ; no limit on PP Up amount + call AddBonusPP ; add bonus PP from PP Ups + ld a,[hl] + and a,%00111111 ; mask out the PP Up count + ld [$d11e],a ; store max PP + ret + +GetSelectedMoveOffset: ; e6e3 (3:66e3) + ld a,[wWhichPokemon] + call AddNTimes + +GetSelectedMoveOffset2: ; e6e9 (3:66e9) + ld a,[wCurrentMenuItem] + ld c,a + ld b,0 + add hl,bc + ret + +; confirms the item toss and then tosses the item +; INPUT: +; hl = address of inventory (either wNumBagItems or wNumBoxItems) +; [$cf91] = item ID +; [wWhichPokemon] = index of item within inventory +; [$cf96] = quantity to toss +; OUTPUT: +; clears carry flag if the item is tossed, sets carry flag if not +TossItem_: ; e6f1 (3:66f1) + push hl + ld a,[$cf91] + call IsItemHM + pop hl + jr c,.tooImportantToToss + push hl + call IsKeyItem_ + ld a,[$d124] + pop hl and a - jr z, .asm_1a62a - cp b - jr nz, .asm_1a621 + jr nz,.tooImportantToToss + push hl + ld a,[$cf91] + ld [$d11e],a + call GetItemName + call CopyStringToCF4B ; copy name to $cf4b + ld hl,IsItOKToTossItemText + call PrintText + FuncCoord 14,7 + ld hl,Coord + ld bc,$080f + ld a,$14 + ld [$d125],a + call DisplayTextBoxID ; yes/no menu + ld a,[$d12e] + cp a,2 + pop hl scf - ret -.asm_1a62a + ret z +; if the player chose Yes + push hl + ld a,[wWhichPokemon] + call RemoveItemFromInventory + ld a,[$cf91] + ld [$d11e],a + call GetItemName + call CopyStringToCF4B ; copy name to $cf4b + ld hl,ThrewAwayItemText + call PrintText + pop hl and a ret +.tooImportantToToss + push hl + ld hl,TooImportantToTossText + call PrintText + pop hl + scf + ret -DoorTileIDPointers: ; 1a62c (6:662c) - db OVERWORLD - dw OverworldDoorTileIDs - db FOREST - dw ForestDoorTileIDs - db MART - dw MartDoorTileIDs - db HOUSE - dw HouseDoorTileIDs - db FOREST_GATE - dw TilesetMuseumDoorTileIDs - db MUSEUM - dw TilesetMuseumDoorTileIDs - db GATE - dw TilesetMuseumDoorTileIDs - db SHIP - dw ShipDoorTileIDs - db LOBBY - dw LobbyDoorTileIDs - db MANSION - dw MansionDoorTileIDs - db LAB - dw LabDoorTileIDs - db FACILITY - dw FacilityDoorTileIDs - db PLATEAU - dw PlateauDoorTileIDs - db $ff - -OverworldDoorTileIDs: ; 1a654 (6:6654) - db $1B,$58,$00 - -ForestDoorTileIDs: ; 1a657 (6:6657) - db $3a,$00 - -MartDoorTileIDs: ; 1a659 (6:6659) - db $5e,$00 - -HouseDoorTileIDs: ; 1a65b (6:665b) - db $54,$00 - -TilesetMuseumDoorTileIDs: ; 1a65d (6:665d) - db $3b,$00 - -ShipDoorTileIDs: ; 1a65f (6:665f) - db $1e,$00 - -LobbyDoorTileIDs: ; 1a661 (6:6661) - db $1c,$38,$1a,$00 +ThrewAwayItemText: ; e755 (3:6755) + TX_FAR _ThrewAwayItemText + db "@" -MansionDoorTileIDs: ; 1a665 (6:6665) - db $1a,$1c,$53,$00 +IsItOKToTossItemText: ; e75a (3:675a) + TX_FAR _IsItOKToTossItemText + db "@" -LabDoorTileIDs: ; 1a669 (6:6669) - db $34,$00 +TooImportantToTossText: ; e75f (3:675f) + TX_FAR _TooImportantToTossText + db "@" -FacilityDoorTileIDs: ; 1a66b (6:666b) - db $43,$58,$1b,$00 +; checks if an item is a key item +; INPUT: +; [$cf91] = item ID +; OUTPUT: +; [$d124] = result +; 00: item is not key item +; 01: item is key item +IsKeyItem_: ; e764 (3:6764) + ld a,$01 + ld [$d124],a + ld a,[$cf91] + cp a,HM_01 ; is the item an HM or TM? + jr nc,.checkIfItemIsHM +; if the item is not an HM or TM + push af + ld hl,KeyItemBitfield + ld de,$cee9 + ld bc,15 ; only 11 bytes are actually used + call CopyData + pop af + dec a + ld c,a + ld hl,$cee9 + ld b,$02 ; test bit + ld a,$10 + call Predef ; bitfield operation function + ld a,c + and a + ret nz +.checkIfItemIsHM + ld a,[$cf91] + call IsItemHM + ret c + xor a + ld [$d124],a + ret -PlateauDoorTileIDs: ; 1a66f (6:666f) - db $3b,$1b,$00 +KeyItemBitfield: ; e799 (3:6799) + db %11110000 + db %00000001 + db %11110000 + db %01001111 + db %00000000 + db %10011111 + db %00000000 + db %11000000 + db %11110000 + db %00111011 + db %00000000 -Func_1a672: ; 1a672 (6:6672) - ld a, [$d736] - bit 6, a - ret nz - ld a, [W_CURMAPTILESET] ; $d367 - and a ; OVERWORLD - ret nz - ld a, $35 - call Predef ; indirect jump to Func_c586 (c586 (3:4586)) - ld a, [$c109] - ld b, a - FuncCoord 8, 9 ; $c45c - ld a, [Coord] +Func_e7a4: ; e7a4 (3:67a4) + ld de, W_NUMINBOX ; $da80 + ld a, [de] + inc a + ld [de], a + ld a, [$cf91] + ld [$d0b5], a ld c, a - ld a, [$cfc6] +.asm_e7b1 + inc de + ld a, [de] + ld b, a + ld a, c + ld c, b + ld [de], a + cp $ff + jr nz, .asm_e7b1 + call GetMonHeader + ld hl, W_BOXMON1OT + ld bc, $b + ld a, [W_NUMINBOX] ; $da80 + dec a + jr z, .asm_e7ee + dec a + call AddNTimes + push hl + ld bc, $b + add hl, bc + ld d, h + ld e, l + pop hl + ld a, [W_NUMINBOX] ; $da80 + dec a + ld b, a +.asm_e7db + push bc + push hl + ld bc, $b + call CopyData + pop hl + ld d, h + ld e, l + ld bc, $fff5 + add hl, bc + pop bc + dec b + jr nz, .asm_e7db +.asm_e7ee + ld hl, W_PLAYERNAME ; $d158 + ld de, W_BOXMON1OT + ld bc, $b + call CopyData + ld a, [W_NUMINBOX] ; $da80 + dec a + jr z, .asm_e82a + ld hl, W_BOXMON1NAME + ld bc, $b + dec a + call AddNTimes + push hl + ld bc, $b + add hl, bc + ld d, h + ld e, l + pop hl + ld a, [W_NUMINBOX] ; $da80 + dec a + ld b, a +.asm_e817 + push bc + push hl + ld bc, $b + call CopyData + pop hl + ld d, h + ld e, l + ld bc, $fff5 + add hl, bc + pop bc + dec b + jr nz, .asm_e817 +.asm_e82a + ld hl, W_BOXMON1NAME + ld a, $2 + ld [$d07d], a + ld a, $4e + call Predef ; indirect jump to Func_64eb (64eb (1:64eb)) + ld a, [W_NUMINBOX] ; $da80 + dec a + jr z, .asm_e867 + ld hl, W_BOXMON1DATA + ld bc, $21 + dec a + call AddNTimes + push hl + ld bc, $21 + add hl, bc + ld d, h + ld e, l + pop hl + ld a, [W_NUMINBOX] ; $da80 + dec a + ld b, a +.asm_e854 + push bc + push hl + ld bc, $21 + call CopyData + pop hl + ld d, h + ld e, l + ld bc, $ffdf + add hl, bc + pop bc + dec b + jr nz, .asm_e854 +.asm_e867 + ld a, [W_ENEMYMONLEVEL] ; $cff3 + ld [W_ENEMYMONNUMBER], a ; $cfe8 + ld hl, $cfe5 + ld de, W_BOXMON1DATA + ld bc, $c + call CopyData + ld hl, wPlayerID ; $d359 + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + inc de + push de + ld a, [W_CURENEMYLVL] ; $d127 ld d, a - ld hl, LedgeTiles ; $66cf -.asm_1a691 + ld hl, CalcExperience + ld b, BANK(CalcExperience) + call Bankswitch + pop de + ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND) + ld [de], a + inc de + ld a, [$ff97] + ld [de], a + inc de + ld a, [$ff98] + ld [de], a + inc de + xor a + ld b, $a +.asm_e89f + ld [de], a + inc de + dec b + jr nz, .asm_e89f + ld hl, $cff1 ld a, [hli] - cp $ff - ret z - cp b - jr nz, .asm_1a6a4 + ld [de], a + inc de ld a, [hli] - cp c - jr nz, .asm_1a6a5 + ld [de], a + ld hl, W_ENEMYMONPP ; $cffe + ld b, $4 +.asm_e8b1 ld a, [hli] - cp d - jr nz, .asm_1a6a6 - ld a, [hl] - ld e, a - jr .asm_1a6a9 -.asm_1a6a4 - inc hl -.asm_1a6a5 - inc hl -.asm_1a6a6 - inc hl - jr .asm_1a691 -.asm_1a6a9 - ld a, [H_CURRENTPRESSEDBUTTONS] - and e - ret z - ld a, $ff - ld [wJoypadForbiddenButtonsMask], a - ld hl, $d736 - set 6, [hl] - call Func_3486 - ld a, e - ld [$ccd3], a - ld [$ccd4], a - ld a, $2 - ld [$cd38], a - call LoadHoppingShadowOAM - ld a, (SFX_02_4e - SFX_Headers_02) / 3 - call PlaySound - ret - - ; (player direction) (tile player standing on) (ledge tile) (input required) -LedgeTiles: ; 1a6cf (6:66cf) - db $00,$2C,$37,$80 - db $00,$39,$36,$80 - db $00,$39,$37,$80 - db $08,$2C,$27,$20 - db $08,$39,$27,$20 - db $0C,$2C,$0D,$10 - db $0C,$2C,$1D,$10 - db $0C,$39,$0D,$10 - db $FF - -LoadHoppingShadowOAM: ; 1a6f0 (6:66f0) - ld hl, $8ff0 - ld de, LedgeHoppingShadow ; $6708 - ld bc, (BANK(LedgeHoppingShadow) << 8) + $01 - call CopyVideoDataDouble - ld a, $9 - ld bc, $5448 ; b, c = y, x coordinates of shadow - ld de, LedgeHoppingShadowOAM ; $6710 - call WriteOAMBlock + inc de + ld [de], a + dec b + jr nz, .asm_e8b1 ret -LedgeHoppingShadow: ; 1a708 (6:6708) - INCBIN "gfx/ledge_hopping_shadow.1bpp" - -LedgeHoppingShadowOAM: ; 1a710 (6:6710) - db $FF,$10,$FF,$20 - db $FF,$40,$FF,$60 - -SECTION "bank7",ROMX,BANK[$7] - -CinnabarIsland_h: ; 0x1c000 to 0x1c022 (34 bytes) (bank=7) (id=8) - db OVERWORLD ; tileset - db CINNABAR_ISLAND_HEIGHT, CINNABAR_ISLAND_WIDTH ; dimensions (y, x) - dw CinnabarIslandBlocks, CinnabarIslandTextPointers, CinnabarIslandScript ; blocks, texts, scripts - db NORTH | EAST ; connections - NORTH_MAP_CONNECTION ROUTE_21, ROUTE_21_WIDTH, ROUTE_21_HEIGHT, 0, 0, ROUTE_21_WIDTH, Route21Blocks - EAST_MAP_CONNECTION ROUTE_20, ROUTE_20_WIDTH, 0, 0, ROUTE_20_HEIGHT, Route20Blocks, CINNABAR_ISLAND_WIDTH - dw CinnabarIslandObject ; objects - -CinnabarIslandObject: ; 0x1c022 (size=71) - db $43 ; border tile - - db $5 ; warps - db $3, $6, $1, MANSION_1 - db $3, $12, $0, CINNABAR_GYM - db $9, $6, $0, CINNABAR_LAB_1 - db $b, $b, $0, CINNABAR_POKECENTER - db $b, $f, $0, CINNABAR_MART - - db $5 ; signs - db $5, $9, $3 ; CinnabarIslandText3 - db $b, $10, $4 ; MartSignText - db $b, $c, $5 ; PokeCenterSignText - db $b, $9, $6 ; CinnabarIslandText6 - db $3, $d, $7 ; CinnabarIslandText7 - - db $2 ; people - db SPRITE_GIRL, $5 + 4, $c + 4, $fe, $2, $1 ; person - db SPRITE_GAMBLER, $6 + 4, $e + 4, $ff, $ff, $2 ; person - - ; warp-to - EVENT_DISP CINNABAR_ISLAND_WIDTH, $3, $6 ; MANSION_1 - EVENT_DISP CINNABAR_ISLAND_WIDTH, $3, $12 ; CINNABAR_GYM - EVENT_DISP CINNABAR_ISLAND_WIDTH, $9, $6 ; CINNABAR_LAB_1 - EVENT_DISP CINNABAR_ISLAND_WIDTH, $b, $b ; CINNABAR_POKECENTER - EVENT_DISP CINNABAR_ISLAND_WIDTH, $b, $f ; CINNABAR_MART - -CinnabarIslandBlocks: ; 1c069 (7:4069) - INCBIN "maps/cinnabarisland.blk" - -Route1_h: ; 0x1c0c3 to 0x1c0e5 (34 bytes) (bank=7) (id=12) - db OVERWORLD ; tileset - db ROUTE_1_HEIGHT, ROUTE_1_WIDTH ; dimensions (y, x) - dw Route1Blocks, Route1TextPointers, Route1Script ; blocks, texts, scripts - db NORTH | SOUTH ; connections - NORTH_MAP_CONNECTION VIRIDIAN_CITY, VIRIDIAN_CITY_WIDTH, VIRIDIAN_CITY_HEIGHT, -3, 2, VIRIDIAN_CITY_WIDTH - 4, ViridianCityBlocks - SOUTH_MAP_CONNECTION PALLET_TOWN, PALLET_TOWN_WIDTH, 0, 0, PALLET_TOWN_WIDTH, PalletTownBlocks, ROUTE_1_WIDTH, ROUTE_1_HEIGHT - dw Route1Object ; objects - -Route1Object: ; 0x1c0e5 (size=19) - db $b ; border tile - - db $0 ; warps - - db $1 ; signs - db $1b, $9, $3 ; Route1Text3 - - db $2 ; people - db SPRITE_BUG_CATCHER, $18 + 4, $5 + 4, $fe, $1, $1 ; person - db SPRITE_BUG_CATCHER, $d + 4, $f + 4, $fe, $2, $2 ; person - - ; warp-to (unused) - EVENT_DISP $4, $7, $2 - -Route1Blocks: ; 1c0fc (7:40fc) - INCBIN "maps/route1.blk" - -UndergroundPathEntranceRoute8Blocks: ; 1c1b0 (7:41b0) - INCBIN "maps/undergroundpathentranceroute8.blk" - -OaksLabBlocks: ; 1c1c0 (7:41c0) - INCBIN "maps/oakslab.blk" +; checks if the tile in front of the player is a shore or water tile +; used for surfing and fishing +; unsets carry if it is, sets carry if not +IsNextTileShoreOrWater: ; e8b8 (3:68b8) + ld a, [W_CURMAPTILESET] + ld hl, WaterTilesets + ld de,1 + call IsInArray + jr nc, .notShoreOrWater + ld a, [W_CURMAPTILESET] + cp SHIP_PORT ; Vermilion Dock tileset + ld a, [$cfc6] ; tile in front of player + jr z, .skipShoreTiles ; if it's the Vermilion Dock tileset + cp $48 ; eastern shore tile in Safari Zone + jr z, .shoreOrWater + cp $32 ; usual eastern shore tile + jr z, .shoreOrWater +.skipShoreTiles + cp $14 ; water tile + jr z, .shoreOrWater +.notShoreOrWater + scf + ret +.shoreOrWater + and a + ret -Route16HouseBlocks: ; 1c1de (7:41de) -Route2HouseBlocks: ; 1c1de (7:41de) -SaffronHouse1Blocks: ; 1c1de (7:41de) -SaffronHouse2Blocks: ; 1c1de (7:41de) -VermilionHouse1Blocks: ; 1c1de (7:41de) -NameRaterBlocks: ; 1c1de (7:41de) -LavenderHouse1Blocks: ; 1c1de (7:41de) -LavenderHouse2Blocks: ; 1c1de (7:41de) -CeruleanHouse1Blocks: ; 1c1de (7:41de) -PewterHouse1Blocks: ; 1c1de (7:41de) -PewterHouse2Blocks: ; 1c1de (7:41de) -ViridianHouseBlocks: ; 0x1c1de 41DE size=16 - INCBIN "maps/viridianhouse.blk" +; tilesets with water +WaterTilesets: ; e8e0 (3:68e0) + db OVERWORLD, FOREST, DOJO, GYM, SHIP, SHIP_PORT, CAVERN, FACILITY, PLATEAU + db $ff ; terminator -CeladonMansion5Blocks: ; 1c1ee (7:41ee) -SchoolBlocks: ; 0x1c1ee 41EE size=16 - INCBIN "maps/school.blk" +ReadSuperRodData: ; e8ea (3:68ea) +; return e = 2 if no fish on this map +; return e = 1 if a bite, bc = level,species +; return e = 0 if no bite + ld a, [W_CURMAP] + ld de, 3 ; each fishing group is three bytes wide + ld hl, SuperRodData + call IsInArray + jr c, .ReadFishingGroup + ld e, $2 ; $2 if no fishing groups found + ret -CeruleanHouseTrashedBlocks: ; 0x1c1fe size=16 - INCBIN "maps/ceruleanhousetrashed.blk" +.ReadFishingGroup ; 0xe8f6 +; hl points to the fishing group entry in the index + inc hl ; skip map id -DiglettsCaveEntranceRoute11Blocks: ; 1c20e (7:420e) -DiglettsCaveRoute2Blocks: ; 0x1c20e size=16 - INCBIN "maps/diglettscaveroute2.blk" + ; read fishing group address + ld a, [hli] + ld h, [hl] + ld l, a -MonsterNames: ; 1c21e (7:421e) - db "RHYDON@@@@" - db "KANGASKHAN" - db "NIDORAN♂@@" - db "CLEFAIRY@@" - db "SPEAROW@@@" - db "VOLTORB@@@" - db "NIDOKING@@" - db "SLOWBRO@@@" - db "IVYSAUR@@@" - db "EXEGGUTOR@" - db "LICKITUNG@" - db "EXEGGCUTE@" - db "GRIMER@@@@" - db "GENGAR@@@@" - db "NIDORAN♀@@" - db "NIDOQUEEN@" - db "CUBONE@@@@" - db "RHYHORN@@@" - db "LAPRAS@@@@" - db "ARCANINE@@" - db "MEW@@@@@@@" - db "GYARADOS@@" - db "SHELLDER@@" - db "TENTACOOL@" - db "GASTLY@@@@" - db "SCYTHER@@@" - db "STARYU@@@@" - db "BLASTOISE@" - db "PINSIR@@@@" - db "TANGELA@@@" - db "MISSINGNO." - db "MISSINGNO." - db "GROWLITHE@" - db "ONIX@@@@@@" - db "FEAROW@@@@" - db "PIDGEY@@@@" - db "SLOWPOKE@@" - db "KADABRA@@@" - db "GRAVELER@@" - db "CHANSEY@@@" - db "MACHOKE@@@" - db "MR.MIME@@@" - db "HITMONLEE@" - db "HITMONCHAN" - db "ARBOK@@@@@" - db "PARASECT@@" - db "PSYDUCK@@@" - db "DROWZEE@@@" - db "GOLEM@@@@@" - db "MISSINGNO." - db "MAGMAR@@@@" - db "MISSINGNO." - db "ELECTABUZZ" - db "MAGNETON@@" - db "KOFFING@@@" - db "MISSINGNO." - db "MANKEY@@@@" - db "SEEL@@@@@@" - db "DIGLETT@@@" - db "TAUROS@@@@" - db "MISSINGNO." - db "MISSINGNO." - db "MISSINGNO." - db "FARFETCH'D" - db "VENONAT@@@" - db "DRAGONITE@" - db "MISSINGNO." - db "MISSINGNO." - db "MISSINGNO." - db "DODUO@@@@@" - db "POLIWAG@@@" - db "JYNX@@@@@@" - db "MOLTRES@@@" - db "ARTICUNO@@" - db "ZAPDOS@@@@" - db "DITTO@@@@@" - db "MEOWTH@@@@" - db "KRABBY@@@@" - db "MISSINGNO." - db "MISSINGNO." - db "MISSINGNO." - db "VULPIX@@@@" - db "NINETALES@" - db "PIKACHU@@@" - db "RAICHU@@@@" - db "MISSINGNO." - db "MISSINGNO." - db "DRATINI@@@" - db "DRAGONAIR@" - db "KABUTO@@@@" - db "KABUTOPS@@" - db "HORSEA@@@@" - db "SEADRA@@@@" - db "MISSINGNO." - db "MISSINGNO." - db "SANDSHREW@" - db "SANDSLASH@" - db "OMANYTE@@@" - db "OMASTAR@@@" - db "JIGGLYPUFF" - db "WIGGLYTUFF" - db "EEVEE@@@@@" - db "FLAREON@@@" - db "JOLTEON@@@" - db "VAPOREON@@" - db "MACHOP@@@@" - db "ZUBAT@@@@@" - db "EKANS@@@@@" - db "PARAS@@@@@" - db "POLIWHIRL@" - db "POLIWRATH@" - db "WEEDLE@@@@" - db "KAKUNA@@@@" - db "BEEDRILL@@" - db "MISSINGNO." - db "DODRIO@@@@" - db "PRIMEAPE@@" - db "DUGTRIO@@@" - db "VENOMOTH@@" - db "DEWGONG@@@" - db "MISSINGNO." - db "MISSINGNO." - db "CATERPIE@@" - db "METAPOD@@@" - db "BUTTERFREE" - db "MACHAMP@@@" - db "MISSINGNO." - db "GOLDUCK@@@" - db "HYPNO@@@@@" - db "GOLBAT@@@@" - db "MEWTWO@@@@" - db "SNORLAX@@@" - db "MAGIKARP@@" - db "MISSINGNO." - db "MISSINGNO." - db "MUK@@@@@@@" - db "MISSINGNO." - db "KINGLER@@@" - db "CLOYSTER@@" - db "MISSINGNO." - db "ELECTRODE@" - db "CLEFABLE@@" - db "WEEZING@@@" - db "PERSIAN@@@" - db "MAROWAK@@@" - db "MISSINGNO." - db "HAUNTER@@@" - db "ABRA@@@@@@" - db "ALAKAZAM@@" - db "PIDGEOTTO@" - db "PIDGEOT@@@" - db "STARMIE@@@" - db "BULBASAUR@" - db "VENUSAUR@@" - db "TENTACRUEL" - db "MISSINGNO." - db "GOLDEEN@@@" - db "SEAKING@@@" - db "MISSINGNO." - db "MISSINGNO." - db "MISSINGNO." - db "MISSINGNO." - db "PONYTA@@@@" - db "RAPIDASH@@" - db "RATTATA@@@" - db "RATICATE@@" - db "NIDORINO@@" - db "NIDORINA@@" - db "GEODUDE@@@" - db "PORYGON@@@" - db "AERODACTYL" - db "MISSINGNO." - db "MAGNEMITE@" - db "MISSINGNO." - db "MISSINGNO." - db "CHARMANDER" - db "SQUIRTLE@@" - db "CHARMELEON" - db "WARTORTLE@" - db "CHARIZARD@" - db "MISSINGNO." - db "MISSINGNO." - db "MISSINGNO." - db "MISSINGNO." - db "ODDISH@@@@" - db "GLOOM@@@@@" - db "VILEPLUME@" - db "BELLSPROUT" - db "WEEPINBELL" - db "VICTREEBEL" + ld b, [hl] ; how many mons in group + inc hl ; point to data + ld e, $0 ; no bite yet -Func_1c98a: ; 1c98a (7:498a) - call ClearScreen - call GoPAL_SET_CF1C - call LoadFontTilePatterns - call LoadTextBoxTilePatterns - ld hl, ClearSaveDataText - call PrintText - FuncCoord 14, 7 ; $c43a - ld hl, Coord - ld bc, $80f - ld a, $7 - ld [$d12c], a - ld a, $14 - ld [$d125], a - call DisplayTextBoxID - ld a, [wCurrentMenuItem] ; $cc26 - and a - jp z, InitGame - ld b, BANK(Func_73b6a) - ld hl, Func_73b6a - call Bankswitch - jp InitGame +.RandomLoop ; 0xe90c + call GenRandom + srl a + ret c ; 50% chance of no battle -ClearSaveDataText: ; 1c9c1 (7:49c1) - TX_FAR _ClearSaveDataText - db "@" + and %11 ; 2-bit random number + cp b + jr nc, .RandomLoop ; if a is greater than the number of mons, regenerate -Func_1c9c6: ; 1c9c6 (7:49c6) - ld hl, WhichFloorText - call PrintText - ld hl, $cf7b - ld a, l - ld [$cf8b], a - ld a, h - ld [$cf8c], a - ld a, [wListScrollOffset] ; $cc36 - push af - xor a - ld [wCurrentMenuItem], a ; $cc26 - ld [wListScrollOffset], a ; $cc36 - ld [$cf93], a - ld a, $4 - ld [wListMenuID], a ; $cf94 - call DisplayListMenuID - pop bc - ld a, b - ld [wListScrollOffset], a ; $cc36 - ret c - ld hl, $d126 - set 7, [hl] - ld hl, $cc5b - ld a, [wWhichPokemon] ; $cf92 + ; get the mon add a - ld d, $0 - ld e, a - add hl, de - ld a, [hli] - ld b, a - ld a, [hl] ld c, a - ld hl, $d3af - call Func_1ca0d - -Func_1ca0d: ; 1ca0d (7:4a0d) - inc hl + ld b, $0 + add hl, bc + ld b, [hl] ; level inc hl - ld a, b - ld [hli], a - ld a, c - ld [hli], a + ld c, [hl] ; species + ld e, $1 ; $1 if there's a bite ret -WhichFloorText: ; 1ca14 (7:4a14) - TX_FAR _WhichFloorText - db "@" - -CinnabarIslandScript: ; 1ca19 (7:4a19) - call EnableAutoTextBoxDrawing - ld hl, $d126 - set 5, [hl] - ld hl, $d796 - res 0, [hl] - ld hl, $d7a3 - res 1, [hl] - ld hl, CinnabarIslandScriptPointers - ld a, [W_CINNABARISLANDCURSCRIPT] - jp CallFunctionInTable - -CinnabarIslandScriptPointers: ; 1ca34 (7:4a34) - dw CinnabarIslandScript0 - dw CinnabarIslandScript1 +INCLUDE "data/super_rod.asm" -CinnabarIslandScript0: ; 1ca38 (7:4a38) - ld b, SECRET_KEY - call IsItemInBag - ret nz - ld a, [W_YCOORD] - cp $4 - ret nz - ld a, [W_XCOORD] - cp $12 - ret nz - ld a, $8 - ld [$d528], a - ld a, $8 - ld [$ff8c], a - call DisplayTextID - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, $1 - ld [$cd38], a - ld a, $80 - ld [$ccd3], a - call Func_3486 - xor a - ld [$c109], a - ld [wJoypadForbiddenButtonsMask], a - ld a, $1 - ld [W_CINNABARISLANDCURSCRIPT], a - ret +; reloads map view and processes sprite data +; for items that cause the overworld to be displayed +ItemUseReloadOverworldData: ; e9c5 (3:69c5) + call LoadCurrentMapView + jp UpdateSprites -CinnabarIslandScript1: ; 1ca73 (7:4a73) - ld a, [$cd38] +Func_e9cb: ; e9cb (3:69cb) + ld hl, WildDataPointers ; $4eeb + ld de, $cee9 + ld c, $0 +.asm_e9d3 + inc hl + ld a, [hld] + inc a + jr z, .asm_e9ec + push hl + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [hli] and a - ret nz - call Delay3 - ld a, $0 - ld [W_CINNABARISLANDCURSCRIPT], a + call nz, Func_e9f0 + ld a, [hli] + and a + call nz, Func_e9f0 + pop hl + inc hl + inc hl + inc c + jr .asm_e9d3 +.asm_e9ec + ld a, $ff + ld [de], a ret -CinnabarIslandTextPointers: ; 1ca81 (7:4a81) - dw CinnabarIslandText1 - dw CinnabarIslandText2 - dw CinnabarIslandText3 - dw MartSignText - dw PokeCenterSignText - dw CinnabarIslandText6 - dw CinnabarIslandText7 - dw CinnabarIslandText8 +Func_e9f0: ; e9f0 (3:69f0) + inc hl + ld b, $a +.asm_e9f3 + ld a, [$d11e] + cp [hl] + jr nz, .asm_e9fc + ld a, c + ld [de], a + inc de +.asm_e9fc + inc hl + inc hl + dec b + jr nz, .asm_e9f3 + dec hl + ret -CinnabarIslandText8: ; 1ca91 (7:4a91) - TX_FAR _CinnabarIslandText8 - db "@" +DrawBadges: ; ea03 (3:6a03) +; Draw 4x2 gym leader faces, with the faces replaced by +; badges if they are owned. Used in the player status screen. -CinnabarIslandText1: ; 1ca96 (7:4a96) - TX_FAR _CinnabarIslandText1 - db "@" +; In Japanese versions, names are displayed above faces. +; Instead of removing relevant code, the name graphics were erased. -CinnabarIslandText2: ; 1ca9b (7:4a9b) - TX_FAR _CinnabarIslandText2 - db "@" +; Tile ids for face/badge graphics. + ld de, $cd3f + ld hl, .FaceBadgeTiles + ld bc, 8 + call CopyData -CinnabarIslandText3: ; 1caa0 (7:4aa0) - TX_FAR _CinnabarIslandText3 - db "@" +; Booleans for each badge. + ld hl, $cd49 + ld bc, 8 + xor a + call FillMemory -CinnabarIslandText6: ; 1caa5 (7:4aa5) - TX_FAR _CinnabarIslandText6 - db "@" +; Alter these based on owned badges. + ld de, $cd49 + ld hl, $cd3f + ld a, [W_OBTAINEDBADGES] + ld b, a + ld c, 8 +.CheckBadge + srl b + jr nc, .NextBadge + ld a, [hl] + add 4 ; Badge graphics are after each face + ld [hl], a + ld a, 1 + ld [de], a +.NextBadge + inc hl + inc de + dec c + jr nz, .CheckBadge -CinnabarIslandText7: ; 1caaa (7:4aaa) - TX_FAR _CinnabarIslandText7 - db "@" +; Draw two rows of badges. + ld hl, $cd3d + ld a, $d8 ; [1] + ld [hli], a + ld [hl], $60 ; First name -Route1Script: ; 1caaf (7:4aaf) - jp EnableAutoTextBoxDrawing + FuncCoord 2, 11 + ld hl, Coord + ld de, $cd49 + call .DrawBadgeRow -Route1TextPointers: ; 1cab2 (7:4ab2) - dw Route1Text1 - dw Route1Text2 - dw Route1Text3 + FuncCoord 2, 14 + ld hl, Coord + ld de, $cd49 + 4 +; call .DrawBadgeRow +; ret -Route1Text1: ; 1cab8 (7:4ab8) - db $08 ; asm - ld hl, $d7bf - bit 0, [hl] - set 0, [hl] - jr nz, .asm_02840 ; 0x1cac0 - ld hl, Route1ViridianMartSampleText - call PrintText - ld bc, (POTION << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, UnnamedText_1cae8 ; $4ae8 - jr .asm_46d43 ; 0x1cad3 -.BagFull - ld hl, UnnamedText_1caf3 ; $4af3 - jr .asm_46d43 ; 0x1cad8 -.asm_02840 ; 0x1cada - ld hl, UnnamedText_1caee ; $4aee -.asm_46d43 ; 0x1cadd - call PrintText - jp TextScriptEnd +.DrawBadgeRow ; ea4c (3:6a4c) +; Draw 4 badges. -Route1ViridianMartSampleText: ; 1cae3 (7:4ae3) - TX_FAR _Route1ViridianMartSampleText - db "@" + ld c, 4 +.DrawBadge + push de + push hl -UnnamedText_1cae8: ; 1cae8 (7:4ae8) - TX_FAR _UnnamedText_1cae8 - db $0b,"@" +; Badge no. + ld a, [$cd3d] + ld [hli], a + inc a + ld [$cd3d], a -UnnamedText_1caee: ; 1caee (7:4aee) - TX_FAR _UnnamedText_1caee - db "@" +; Names aren't printed if the badge is owned. + ld a, [de] + and a + ld a, [$cd3e] + jr nz, .SkipName + call .PlaceTiles + jr .PlaceBadge -UnnamedText_1caf3: ; 1caf3 (7:4af3) - TX_FAR _UnnamedText_1caf3 - db "@" +.SkipName + inc a + inc a + inc hl -Route1Text2: ; 1caf8 (7:4af8) - TX_FAR _Route1Text2 - db "@" +.PlaceBadge + ld [$cd3e], a + ld de, 20 - 1 + add hl, de + ld a, [$cd3f] + call .PlaceTiles + add hl, de + call .PlaceTiles -Route1Text3: ; 1cafd (7:4afd) - TX_FAR _Route1Text3 - db "@" +; Shift badge array back one byte. + push bc + ld hl, $cd3f + 1 + ld de, $cd3f + ld bc, 8 + call CopyData + pop bc -OaksLab_h: ; 0x1cb02 to 0x1cb0e (12 bytes) (bank=7) (id=40) - db DOJO ; tileset - db OAKS_LAB_HEIGHT, OAKS_LAB_WIDTH ; dimensions (y, x) - dw OaksLabBlocks, OaksLabTextPointers, OaksLabScript ; blocks, texts, scripts - db $00 ; connections - dw OaksLabObject ; objects + pop hl + ld de, 4 + add hl, de -OaksLabScript: ; 1cb0e (7:4b0e) - ld a, [$d74b] - bit 6, a - call nz, OaksLabScript_1d076 - ld a, $1 - ld [$cf0c], a - xor a - ld [$cc3c], a - ld hl, OaksLabScriptPointers - ld a, [W_OAKSLABCURSCRIPT] - jp CallFunctionInTable + pop de + inc de + dec c + jr nz, .DrawBadge + ret -OaksLabScriptPointers: ; 1cb28 (7:4b28) - dw OaksLabScript0 - dw OaksLabScript1 - dw OaksLabScript2 - dw OaksLabScript3 - dw OaksLabScript4 - dw OaksLabScript5 - dw OaksLabScript6 - dw OaksLabScript7 - dw OaksLabScript8 - dw OaksLabScript9 - dw OaksLabScript10 - dw OaksLabScript11 - dw OaksLabScript12 - dw OaksLabScript13 - dw OaksLabScript14 - dw OaksLabScript15 - dw OaksLabScript16 - dw OaksLabScript17 - dw OaksLabScript18 +.PlaceTiles + ld [hli], a + inc a + ld [hl], a + inc a + ret -OaksLabScript0: ; 1cb4e (7:4b4e) - ld a, [$d74b] - bit 7, a - ret z - ld a, [$cf10] - and a - ret nz - ld a, $31 - ld [$cc4d], a - ld a, $15 - call Predef - ld hl, $d72e - res 4, [hl] +.FaceBadgeTiles + db $20, $28, $30, $38, $40, $48, $50, $58 - ld a, $1 - ld [W_OAKSLABCURSCRIPT], a - ret +GymLeaderFaceAndBadgeTileGraphics: ; ea9e (3:6a9e) + INCBIN "gfx/badges.w16.2bpp" -OaksLabScript1: ; 1cb6e (7:4b6e) - ld a, $8 - ld [$ff8c], a - ld de, OakEntryMovement - call MoveSprite +Func_ee9e: ; ee9e (3:6e9e) + call Load16BitRegisters + ld hl, $c6e8 + ld a, [W_CURMAPWIDTH] ; $d369 + add $6 + ld e, a + ld d, $0 + add hl, de + add hl, de + add hl, de + ld e, $3 + add hl, de + ld e, a + ld a, b + and a + jr z, .asm_eebb +.asm_eeb7 + add hl, de + dec b + jr nz, .asm_eeb7 +.asm_eebb + add hl, bc + ld a, [$d09f] + ld [hl], a + ld a, [$d35f] + ld c, a + ld a, [$d360] + ld b, a + call Func_ef4e + ret c + push hl + ld l, e + ld h, $0 + ld e, $6 + ld d, h + add hl, hl + add hl, hl + add hl, de + add hl, bc + pop bc + call Func_ef4e + ret c +Func_eedc: ; eedc (3:6edc) + ld a, [W_ISINBATTLE] ; $d057 + inc a + ret z + ld a, [H_AUTOBGTRANSFERENABLED] ; $ffba + push af + ld a, [$ffd7] + push af + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ld [$ffd7], a + call LoadCurrentMapView + call GoPAL_SET_CF1C + ld hl, $d526 + ld a, [hli] + ld h, [hl] + ld l, a + ld de, $ffc0 + add hl, de + ld a, h + and $3 + or $98 + ld a, l + ld [$cee9], a + ld a, h + ld [$ceea], a ld a, $2 - ld [W_OAKSLABCURSCRIPT], a + ld [$ffbe], a + ld c, $9 +.asm_ef0f + push bc + push hl + push hl + ld hl, $c378 + ld de, $14 + ld a, [$ffbe] +.asm_ef1a + add hl, de + dec a + jr nz, .asm_ef1a + call ScheduleRowRedrawHelper + pop hl + ld de, $20 + ld a, [$ffbe] + ld c, a +.asm_ef28 + add hl, de + ld a, h + and $3 + or $98 + dec c + jr nz, .asm_ef28 + ld [$ffd2], a + ld a, l + ld [H_SCREENEDGEREDRAWADDR], a ; $ffd1 + ld a, $2 + ld [H_SCREENEDGEREDRAW], a ; $ffd0 + call DelayFrame + ld hl, $ffbe + inc [hl] + inc [hl] + pop hl + pop bc + dec c + jr nz, .asm_ef0f + pop af + ld [$ffd7], a + pop af + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba ret -OakEntryMovement: ; 1cb7e (7:4b7e) - db $40,$40,$40,$FF - -OaksLabScript2: ; 1cb82 (7:4b82) - ld a, [$d730] - bit 0, a +Func_ef4e: ; ef4e (3:6f4e) + ld a, h + sub b ret nz - ld a, $31 - ld [$cc4d], a - ld a, $11 - call Predef - ld a, $2e - ld [$cc4d], a - ld a, $15 - call Predef - - ld a, $3 - ld [W_OAKSLABCURSCRIPT], a + ld a, l + sub c ret -OaksLabScript3: ; 1cba2 (7:4ba2) - call Delay3 - ld hl, $ccd3 - ld de, PlayerEntryMovementRLE - call DecodeRLEList - dec a - ld [$cd38], a - call Func_3486 - ld a, $1 - ld [$ff8c], a - xor a - ld [$ff8d], a - call Func_34a6 ; face object - ld a, $5 - ld [$ff8c], a +Func_ef54: ; ef54 (3:6f54) xor a - ld [$ff8d], a - call Func_34a6 ; face object - - ld a, $4 - ld [W_OAKSLABCURSCRIPT], a - ret + ld [$cd6a], a + ld a, [W_CURMAPTILESET] ; $d367 + and a ; OVERWORLD + jr z, .asm_ef6b + cp GYM + jr nz, .asm_ef77 + ld a, [$cfc6] + cp $50 ; gym cut tree + jr nz, .asm_ef77 + jr asm_ef82 +.asm_ef6b + dec a + ld a, [$cfc6] + cp $3d ; cut tree + jr z, asm_ef82 + cp $52 ; grass + jr z, asm_ef82 +.asm_ef77 + ld hl, NothingToCutText + jp PrintText -PlayerEntryMovementRLE: ; 1cbcf (7:4bcf) - db $40, $8, $ff +NothingToCutText: ; ef7d (3:6f7d) + TX_FAR _NothingToCutText + db "@" -OaksLabScript4: ; 1cbd2 (7:4bd2) - ld a, [$cd38] - and a - ret nz - ld hl, $d747 - set 0, [hl] - ld hl, $d74b - set 0, [hl] +asm_ef82: ; ef82 (3:6f82) + ld [$cd4d], a ld a, $1 - ld [$ff8c], a - ld a, $4 - ld [$ff8d], a - call Func_34a6 ; face object - call UpdateSprites - ld hl, W_FLAGS_D733 - res 1, [hl] - call Func_2307 - - ld a, $5 - ld [W_OAKSLABCURSCRIPT], a - ret - -OaksLabScript5: ; 1cbfd (7:4bfd) - ld a, $fc - ld [wJoypadForbiddenButtonsMask], a - ld a, $11 - ld [$ff8c], a - call DisplayTextID - call Delay3 - ld a, $12 - ld [$ff8c], a - call DisplayTextID + ld [$cd6a], a + ld a, [wWhichPokemon] ; $cf92 + ld hl, W_PARTYMON1NAME ; $d2b5 + call GetPartyMonName + ld hl, $d730 + set 6, [hl] + call GBPalWhiteOutWithDelay3 + call CleanLCD_OAM + call Func_3dbe + ld a, $90 + ld [$ffb0], a call Delay3 - ld a, $13 - ld [$ff8c], a - call DisplayTextID + call LoadGBPal + call LoadCurrentMapView + call SaveScreenTilesToBuffer2 call Delay3 - ld a, $14 - ld [$ff8c], a - call DisplayTextID - ld hl, $d74b - set 1, [hl] - xor a - ld [wJoypadForbiddenButtonsMask], a - - ld a, $6 - ld [W_OAKSLABCURSCRIPT], a - ret - -OaksLabScript6: ; 1cc36 (7:4c36) - ld a, [W_YCOORD] - cp $6 - ret nz - ld a, $5 - ld [$ff8c], a xor a - ld [$ff8d], a - call Func_34a6 ; face object + ld [$ffb0], a + ld hl, UsedCutText + call PrintText + call LoadScreenTilesFromBuffer2 + ld hl, $d730 + res 6, [hl] + ld a, $ff + ld [$cfcb], a + call Func_eff7 + ld de, CutTreeBlockSwaps ; $7100 + call Func_f09f + call Func_eedc + ld b, BANK(Func_79e96) + ld hl, Func_79e96 + call Bankswitch ld a, $1 - ld [$ff8c], a - xor a - ld [$ff8d], a - call Func_34a6 ; face object + ld [$cfcb], a + ld a, (SFX_02_56 - SFX_Headers_02) / 3 + call PlaySound + ld a, $90 + ld [$ffb0], a call UpdateSprites - ld a, $c - ld [$ff8c], a - call DisplayTextID - ld a, $1 - ld [$cd38], a - ld a, $40 - ld [$ccd3], a - call Func_3486 - ld a, $8 - ld [$d528], a + jp Func_eedc - ld a, $7 - ld [W_OAKSLABCURSCRIPT], a +UsedCutText: ; eff2 (3:6ff2) + TX_FAR _UsedCutText + db "@" + +Func_eff7: ; eff7 (3:6ff7) + xor a + ld [$cd50], a + ld a, $e4 + ld [rOBP1], a ; $ff49 + ld a, [$cd4d] + cp $52 + jr z, .asm_f020 + ld de, Overworld_GFX + $2d0 ; $42d0 ; cuttable tree sprite top row + ld hl, $8fc0 + ld bc, (BANK(Overworld_GFX) << 8) + $02 + call CopyVideoData + ld de, Overworld_GFX + $3d0 ; $43d0 ; cuttable tree sprite bottom row + ld hl, $8fe0 + ld bc, (BANK(Overworld_GFX) << 8) + $02 + call CopyVideoData + jr asm_f055 +.asm_f020 + ld hl, $8fc0 + call Func_f04c + ld hl, $8fd0 + call Func_f04c + ld hl, $8fe0 + call Func_f04c + ld hl, $8ff0 + call Func_f04c + call asm_f055 + ld hl, $c393 + ld de, $4 + ld a, $30 + ld c, e +.asm_f044 + ld [hl], a + add hl, de + xor $60 + dec c + jr nz, .asm_f044 ret -OaksLabScript7: ; 1cc72 (7:4c72) - ld a, [$cd38] - and a - ret nz - call Delay3 +Func_f04c: ; f04c (3:704c) + ld de, AnimationTileset2 + $60 ; $474e ; tile depicting a leaf + ld bc, (BANK(AnimationTileset2) << 8) + $01 + jp CopyVideoData +asm_f055: ; f055 (3:7055) + call Func_f068 + ld a, $9 + ld de, UnknownOAM_f060 ; $7060 + jp WriteOAMBlock - ld a, $6 - ld [W_OAKSLABCURSCRIPT], a +UnknownOAM_f060: ; f060 (3:7060) + db $FC,$10,$FD,$10 + db $FE,$10,$FF,$10 + +Func_f068: ; f068 (3:7068) + ld hl, $c104 + ld a, [hli] + ld b, a + inc hl + ld a, [hli] + ld c, a ; bc holds ypos/xpos of player's sprite + inc hl + inc hl + ld a, [hl] ; a holds direction of player (00: down, 04: up, 08: left, 0C: right) + srl a + ld e, a + ld d, $0 ; de holds direction (00: down, 02: up, 04: left, 06: right) + ld a, [$cd50] + and a + ld hl, CutTreeAnimationOffsets ; $708f + jr z, .asm_f084 + ld hl, CutTreeAnimationOffsets2 ; $7097 +.asm_f084 + add hl, de + ld e, [hl] + inc hl + ld d, [hl] + ld a, b + add d + ld b, a + ld a, c + add e + ld c, a ret -OaksLabScript8: ; 1cc80 (7:4c80) - ld a, [W_PLAYERSTARTER] - cp CHARMANDER - jr z, .Charmander ; 0x1cc85 $6 - cp SQUIRTLE - jr z, .Squirtle ; 0x1cc89 $1d - jr .Bulbasaur ; 0x1cc8b $38 -.Charmander - ld de, .MiddleBallMovement1 - ld a, [W_YCOORD] - cp $4 ; is the player standing below the table? - jr z, .asm_1ccf3 ; 0x1cc95 $5c - ld de, .MiddleBallMovement2 - jr .asm_1ccf3 ; 0x1cc9a $57 +CutTreeAnimationOffsets: ; f08f (3:708f) +; Each pair represents the x and y pixels offsets from the player of where the cut tree animation should be drawn + db 8, 36 ; player is facing down + db 8, 4 ; player is facing up + db -8, 20 ; player is facing left + db 24, 20 ; player is facing right -.MiddleBallMovement1 - db 0,0,$C0,$C0,$C0,$40,$FF -.MiddleBallMovement2 - db 0,$C0,$C0,$C0,$FF +CutTreeAnimationOffsets2: ; f097 (3:7097) +; Not sure if these ever get used. CutTreeAnimationOffsets only seems to be used. +; Each pair represents the x and y pixels offsets from the player of where the cut tree animation should be drawn +; These offsets represent 2 blocks away from the player + db 8, 52 ; player is facing down + db 8, -12 ; player is facing up + db -24, 20 ; player is facing left + db 40, 20 ; player is facing right -.Squirtle - ld de, .RightBallMovement1 - ld a, [W_YCOORD] - cp $4 ; is the player standing below the table? - jr z, .asm_1ccf3 ; 0x1ccb0 $41 - ld de, .RightBallMovement2 - jr .asm_1ccf3 ; 0x1ccb5 $3c +Func_f09f: ; f09f (3:709f) + push de + ld a, [W_CURMAPWIDTH] ; $d369 + add $6 + ld c, a + ld b, $0 + ld d, $0 + ld hl, $d35f + ld a, [hli] + ld h, [hl] + ld l, a + add hl, bc + ld a, [$c109] + and a + jr z, .asm_f0c7 + cp $4 + jr z, .asm_f0cf + cp $8 + jr z, .asm_f0d7 + ld a, [W_XBLOCKCOORD] ; $d364 + and a + jr z, .asm_f0e0 + jr .asm_f0ec +.asm_f0c7 + ld a, [W_YBLOCKCOORD] ; $d363 + and a + jr z, .asm_f0e0 + jr .asm_f0df +.asm_f0cf + ld a, [W_YBLOCKCOORD] ; $d363 + and a + jr z, .asm_f0e1 + jr .asm_f0e0 +.asm_f0d7 + ld a, [W_XBLOCKCOORD] ; $d364 + and a + jr z, .asm_f0e6 + jr .asm_f0e0 +.asm_f0df + add hl, bc +.asm_f0e0 + add hl, bc +.asm_f0e1 + ld e, $2 + add hl, de + jr .asm_f0f0 +.asm_f0e6 + ld e, $1 + add hl, bc + add hl, de + jr .asm_f0f0 +.asm_f0ec + ld e, $3 + add hl, bc + add hl, de +.asm_f0f0 + pop de + ld a, [hl] + ld c, a +.asm_f0f3 + ld a, [de] + inc de + inc de + cp $ff + ret z + cp c + jr nz, .asm_f0f3 + dec de + ld a, [de] + ld [hl], a + ret -.RightBallMovement1 - db 0,0,$C0,$C0,$C0,$C0,$40,$FF -.RightBallMovement2 - db 0,$C0,$C0,$C0,$C0,$FF +CutTreeBlockSwaps: ; f100 (3:7100) +; first byte = tileset block containing the cut tree +; second byte = corresponding tileset block after the cut animation happens + db $32, $6D + db $33, $6C + db $34, $6F + db $35, $4C + db $60, $6E + db $0B, $0A + db $3C, $35 + db $3F, $35 + db $3D, $36 + db $FF ; list terminator + +Func_f113: ; f113 (3:7113) + ld a, [W_CURMAP] ; $d35e + cp ROUTE_1 + jr nc, .notInTown + ld c, a + ld b, $1 + ld hl, W_TOWNVISITEDFLAG ; mark town as visited (for flying) + ld a, $10 + call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) +.notInTown + ld hl, MapHSPointers + ld a, [W_CURMAP] ; $d35e + ld b, $0 + ld c, a + add hl, bc + add hl, bc + ld a, [hli] ; load missable objects pointer in hl + ld h, [hl] + +Func_f132: ; f132 (3:7132) + ld l, a + push hl + ld de, MapHS00 ; calculate difference between out pointer and the base pointer + ld a, l + sub e + jr nc, .asm_f13c + dec h +.asm_f13c + ld l, a + ld a, h + sub d + ld h, a + ld a, h + ld [H_DIVIDEND], a + ld a, l + ld [H_DIVIDEND+1], a + xor a + ld [H_DIVIDEND+2], a + ld [H_DIVIDEND+3], a + ld a, $3 + ld [H_DIVISOR], a + ld b, $2 + call Divide ; divide difference by 3, resulting in the global offset (number of missable items before ours) + ld a, [W_CURMAP] ; $d35e + ld b, a + ld a, [H_DIVIDEND+3] + ld c, a ; store global offset in c + ld de, W_MISSABLEOBJECTLIST + pop hl +.writeMissableObjectsListLoop + ld a, [hli] + cp $ff + jr z, .done ; end of list + cp b + jr nz, .done ; not for current map anymore + ld a, [hli] + inc hl + ld [de], a ; write (map-local) sprite ID + inc de + ld a, c + inc c + ld [de], a ; write (global) missable object index + inc de + jr .writeMissableObjectsListLoop +.done + ld a, $ff + ld [de], a ; write sentinel + ret -.Bulbasaur - ld de, .LeftBallMovement1 - ld a, [W_XCOORD] - cp $9 ; is the player standing to the right of the table? - jr nz, .asm_1ccf3 ; 0x1cccd $24 - push hl - ld a, $1 - ld [$ff8c], a - ld a, $4 - ld [$ff8b], a - call Func_34fc +InitializeMissableObjectsFlags: ; f175 (3:7175) + ld hl, W_MISSABLEOBJECTFLAGS + ld bc, $20 + xor a + call FillMemory ; clear missable objects flags + ld hl, MapHS00 + xor a + ld [$d048], a +.missableObjectsLoop + ld a, [hli] + cp $ff ; end of list + ret z push hl - ld [hl], $4c inc hl - inc hl - ld [hl], $0 + ld a, [hl] + cp Hide + jr nz, .asm_f19d + ld hl, W_MISSABLEOBJECTFLAGS + ld a, [$d048] + ld c, a + ld b, $1 + call HandleBitArray2 ; set flag iff Item is hidden +.asm_f19d + ld hl, $d048 + inc [hl] pop hl - inc h - ld [hl], $8 inc hl - ld [hl], $9 - ld de, .LeftBallMovement2 ; the rival is not currently onscreen, so account for that - pop hl - jr .asm_1ccf3 ; 0x1cced $4 + inc hl + jr .missableObjectsLoop -.LeftBallMovement1 - db $00,$C0 ; not yet terminated! -.LeftBallMovement2 - db $C0,$FF +; tests if current sprite is a missable object that is hidden/has been removed +IsMissableObjectHidden: ; f1a6 (3:71a6) + ld a, [H_CURRENTSPRITEOFFSET] + swap a + ld b, a + ld hl, W_MISSABLEOBJECTLIST +.loop + ld a, [hli] + cp $ff + jr z, .notHidden ; not missable -> not hidden + cp b + ld a, [hli] + jr nz, .loop + ld c, a + ld b, $2 + ld hl, W_MISSABLEOBJECTFLAGS + call HandleBitArray2 + ld a, c + and a + jr nz, .hidden +.notHidden + xor a +.hidden + ld [$ffe5], a + ret -.asm_1ccf3 - ld a, $1 - ld [$ff8c], a - call MoveSprite +; adds missable object (items, leg. pokemon, etc.) to the map +; [$cc4d]: index of the missable object to be added (global index) +AddMissableObject: ; f1c8 (3:71c8) + ld hl, W_MISSABLEOBJECTFLAGS + ld a, [$cc4d] + ld c, a + ld b, $0 + call HandleBitArray2 ; reset "removed" flag + jp UpdateSprites - ld a, $9 - ld [W_OAKSLABCURSCRIPT], a - ret +; removes missable object (items, leg. pokemon, etc.) from the map +; [$cc4d]: index of the missable object to be removed (global index) +RemoveMissableObject: ; f1d7 (3:71d7) + ld hl, W_MISSABLEOBJECTFLAGS + ld a, [$cc4d] + ld c, a + ld b, $1 + call HandleBitArray2 ; set "removed" flag + jp UpdateSprites -OaksLabScript9: ; 1cd00 (7:4d00) - ld a, [$d730] - bit 0, a - ret nz - ld a, $fc - ld [wJoypadForbiddenButtonsMask], a - ld a, $1 - ld [$ff8c], a - ld a, $4 - ld [$ff8d], a - call Func_34a6 ; face object - ld a, $d - ld [$ff8c], a - call DisplayTextID - ld a, [$cd3e] +; functionally identical to _HandleBitArray, but with less optimized instructions +; executes operations on a field of bits +; b = 0 -> reset bit +; b = 1 -> set bit +; b = 2 -> read bit (into c and z-flag) +; hl: base address +; c: bit index +HandleBitArray2: ; f1e6 (3:71e6) + push hl + push de + push bc + ld a, c + ld d, a + and $7 + ld e, a ; store bit offset in e + ld a, d + srl a + srl a + srl a ; calc byte offset + add l + ld l, a + jr nc, .noCarry + inc h +.noCarry + inc e + ld d, $1 +.shiftLeftLoop ; d = 1 << e, bitmask for the used bit + dec e + jr z, .operationSelect + sla d + jr .shiftLeftLoop +.operationSelect + ld a, b + and a + jr z, .resetBit cp $2 - jr nz, .asm_1cd28 ; 0x1cd22 $4 - ld a, $2b - jr .asm_1cd32 ; 0x1cd26 $a -.asm_1cd28 - cp $3 - jr nz, .asm_1cd30 ; 0x1cd2a $4 - ld a, $2c - jr .asm_1cd32 ; 0x1cd2e $2 -.asm_1cd30 - ld a, $2d -.asm_1cd32 - ld [$cc4d], a - ld a, $11 - call Predef - call Delay3 - ld a, [$cd3d] - ld [W_RIVALSTARTER], a - ld [$cf91], a - ld [$d11e], a - call GetMonName - ld a, $1 - ld [$ff8c], a - ld a, $4 - ld [$ff8d], a - call Func_34a6 ; face object - ld a, $e - ld [$ff8c], a - call DisplayTextID - ld hl, $d74b - set 2, [hl] - xor a - ld [wJoypadForbiddenButtonsMask], a - - ld a, $a - ld [W_OAKSLABCURSCRIPT], a + jr z, .readBit + ld a, [hl] ; set bit + ld b, a + ld a, d + or b + ld [hl], a + jr .done +.resetBit + ld a, [hl] + ld b, a + ld a, d + xor $ff + and b + ld [hl], a + jr .done +.readBit + ld a, [hl] + ld b, a + ld a, d + and b +.done + pop bc + pop de + pop hl + ld c, a ret -OaksLabScript10: ; 1cd6d (7:4d6d) - ld a, [W_YCOORD] - cp $6 +Func_f225: ; f225 (3:7225) + ld a, [$d728] + bit 0, a + ret z + ld a, [wFlags_0xcd60] + bit 1, a ret nz - ld a, $1 - ld [$ff8c], a xor a - ld [$ff8d], a - call Func_34a6 ; face object - ld a, $8 - ld [$d528], a - ld c, BANK(Music_MeetRival) - ld a, MUSIC_MEET_RIVAL - call PlayMusic ; play music - ld a, $f - ld [$ff8c], a - call DisplayTextID - ld a, $1 - ld [$ff9b], a - ld a, $1 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call IsSpriteInFrontOfPlayer + ld a, [H_DOWNARROWBLINKCNT2] ; $ff8c + ld [$d718], a + and a + jp z, Func_f2dd + ld hl, $c101 + ld d, $0 + ld a, [H_DOWNARROWBLINKCNT2] ; $ff8c swap a - ld [$ff95], a - ld a, $22 - call Predef - ld a, [$ff95] - dec a - ld [$ff95], a - ld a, $20 - call Predef - ld de, $cc97 - ld a, $1 - ld [$ff8c], a + ld e, a + add hl, de + res 7, [hl] + call GetSpriteMovementByte2Pointer + ld a, [hl] + cp $10 + jp nz, Func_f2dd + ld hl, wFlags_0xcd60 + bit 6, [hl] + set 6, [hl] + ret z + ld a, [H_CURRENTPRESSEDBUTTONS] + and $f0 + ret z + ld a, $5a + call Predef ; indirect jump to Func_c60b (c60b (3:460b)) + ld a, [$d71c] + and a + jp nz, Func_f2dd + ld a, [H_CURRENTPRESSEDBUTTONS] + ld b, a + ld a, [$c109] + cp $4 + jr z, .asm_f289 + cp $8 + jr z, .asm_f291 + cp $c + jr z, .asm_f299 + bit 7, b + ret z + ld de, MovementData_f2af + jr .asm_f29f +.asm_f289 + bit 6, b + ret z + ld de, MovementData_f2ad + jr .asm_f29f +.asm_f291 + bit 5, b + ret z + ld de, MovementData_f2b1 + jr .asm_f29f +.asm_f299 + bit 4, b + ret z + ld de, MovementData_f2b3 +.asm_f29f call MoveSprite - - ld a, $b - ld [W_OAKSLABCURSCRIPT], a + ld a, (SFX_02_53 - SFX_Headers_02) / 3 + call PlaySound + ld hl, wFlags_0xcd60 + set 1, [hl] ret -OaksLabScript11: ; 1cdb9 (7:4db9) +MovementData_f2ad: ; f2ad (3:72ad) + db $40,$FF + +MovementData_f2af: ; f2af (3:72af) + db $00,$FF + +MovementData_f2b1: ; f2b1 (3:72b1) + db $80,$FF + +MovementData_f2b3: ; f2b3 (3:72b3) + db $C0,$FF + +Func_f2b5: ; f2b5 (3:72b5) ld a, [$d730] bit 0, a ret nz + ld hl, Func_79f54 + ld b, BANK(Func_79f54) + call Bankswitch + call DiscardButtonPresses + ld [wJoypadForbiddenButtonsMask], a + call Func_f2dd + set 7, [hl] + ld a, [$d718] + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call GetSpriteMovementByte2Pointer + ld [hl], $10 + ld a, (SFX_02_56 - SFX_Headers_02) / 3 + jp PlaySound - ; define which team rival uses, and fight it - ld a, SONY1 + $C8 - ld [W_CUROPPONENT], a - ld a, [W_RIVALSTARTER] - cp SQUIRTLE - jr nz, .NotSquirtle ; 0x1cdc9 $4 - ld a, $1 - jr .done ; 0x1cdcd $a -.NotSquirtle - cp BULBASAUR - jr nz, .Charmander ; 0x1cdd1 $4 +Func_f2dd: ; f2dd (3:72dd) + ld hl, wFlags_0xcd60 + res 1, [hl] + res 6, [hl] + ret + +_AddPokemonToParty: ; f2e5 (3:72e5) + ld de, W_NUMINPARTY ; $d163 + ld a, [$cc49] + and $f + jr z, .asm_f2f2 + ld de, wEnemyPartyCount ; $d89c +.asm_f2f2 + ld a, [de] + inc a + cp $7 + ret nc + ld [de], a + ld a, [de] + ld [$ffe4], a + add e + ld e, a + jr nc, .asm_f300 + inc d +.asm_f300 + ld a, [$cf91] + ld [de], a + inc de + ld a, $ff + ld [de], a + ld hl, W_PARTYMON1OT ; $d273 + ld a, [$cc49] + and $f + jr z, .asm_f315 + ld hl, W_ENEMYMON1OT +.asm_f315 + ld a, [$ffe4] + dec a + call SkipFixedLengthTextEntries + ld d, h + ld e, l + ld hl, W_PLAYERNAME ; $d158 + ld bc, $b + call CopyData + ld a, [$cc49] + and a + jr nz, .asm_f33f + ld hl, W_PARTYMON1NAME ; $d2b5 + ld a, [$ffe4] + dec a + call SkipFixedLengthTextEntries ld a, $2 - jr .done ; 0x1cdd5 $2 -.Charmander - ld a, $3 -.done - ld [W_TRAINERNO], a + ld [$d07d], a + ld a, $4e + call Predef ; indirect jump to Func_64eb (64eb (1:64eb)) +.asm_f33f + ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) + ld a, [$cc49] + and $f + jr z, .asm_f34c + ld hl, wEnemyMons ; $d8a4 +.asm_f34c + ld a, [$ffe4] + dec a + ld bc, $2c + call AddNTimes + ld e, l + ld d, h + push hl + ld a, [$cf91] + ld [$d0b5], a + call GetMonHeader + ld hl, W_MONHEADER + ld a, [hli] + ld [de], a + inc de + pop hl + push hl + ld a, [$cc49] + and $f + ld a, $98 ; set enemy trainer mon IVs to fixed average values + ld b, $88 + jr nz, .writeFreshMonData + ld a, [$cf91] + ld [$d11e], a + push de + ld a, $3a + call Predef ; indirect jump to IndexToPokedex (41010 (10:5010)) + pop de + ld a, [$d11e] + dec a + ld c, a + ld b, $2 + ld hl, wPokedexOwned ; $d2f7 + call _HandleBitArray + ld a, c + ld [$d153], a + ld a, [$d11e] + dec a + ld c, a + ld b, $1 + push bc + call _HandleBitArray + pop bc + ld hl, wPokedexSeen ; $d30a + call _HandleBitArray + pop hl + push hl + ld a, [W_ISINBATTLE] ; $d057 + and a + jr nz, .copyEnemyMonData + call GenRandom ; generate random IVs + ld b, a + call GenRandom +.writeFreshMonData ; f3b3 + push bc + ld bc, $1b + add hl, bc + pop bc + ld [hli], a + ld [hl], b ; write IVs + ld bc, $fff4 + add hl, bc ld a, $1 - ld [$cf13], a - call Func_32ef - ld hl, UnnamedText_1d3be - ld de, UnnamedText_1d3c3 - call PreBattleSaveRegisters - ld hl, $d72d - set 6, [hl] - set 7, [hl] + ld c, a + xor a + ld b, a + call CalcStat ; calc HP stat (set cur Hp to max HP) + ld a, [H_MULTIPLICAND+1] + ld [de], a + inc de + ld a, [H_MULTIPLICAND+2] + ld [de], a + inc de + xor a + ld [de], a ; level (?) + inc de + ld [de], a ; status ailments + inc de + jr .copyMonTypesAndMoves +.copyEnemyMonData + ld bc, $1b + add hl, bc + ld a, [W_ENEMYMONATKDEFIV] ; copy IVs from cur enemy mon + ld [hli], a + ld a, [W_ENEMYMONSPDSPCIV] + ld [hl], a + ld a, [W_ENEMYMONCURHP] ; copy HP from cur enemy mon + ld [de], a + inc de + ld a, [W_ENEMYMONCURHP+1] + ld [de], a + inc de xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $8 - ld [$d528], a - ld a, $c - ld [W_OAKSLABCURSCRIPT], a - ret - -OaksLabScript12: ; 1ce03 (7:4e03) - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld a, $8 - ld [$d528], a - call UpdateSprites - ld a, $1 - ld [$cf13], a - call Func_32f9 - ld a, $1 - ld [$ff8c], a + ld [de], a ; level (?) + inc de + ld a, [W_ENEMYMONSTATUS] ; copy status ailments from cur enemy mon + ld [de], a + inc de +.copyMonTypesAndMoves + ld hl, W_MONHTYPES + ld a, [hli] ; type 1 + ld [de], a + inc de + ld a, [hli] ; type 2 + ld [de], a + inc de + ld a, [hli] ; unused (?) + ld [de], a + ld hl, W_MONHMOVES + ld a, [hli] + inc de + push de + ld [de], a + ld a, [hli] + inc de + ld [de], a + ld a, [hli] + inc de + ld [de], a + ld a, [hli] + inc de + ld [de], a + push de + dec de + dec de + dec de xor a - ld [$ff8d], a - call Func_34a6 ; face object - ld a, $7 - call Predef - ld hl, $d74b - set 3, [hl] - - ld a, $d - ld [W_OAKSLABCURSCRIPT], a - ret - -OaksLabScript13: ; 1ce32 (7:4e32) - ld c, $14 - call DelayFrames - ld a, $10 - ld [$ff8c], a - call DisplayTextID - ld b, BANK(Music_RivalAlternateStart) - ld hl, Music_RivalAlternateStart + ld [$cee9], a + ld a, $3e + call Predef ; indirect jump to WriteMonMoves (3afb8 (e:6fb8)) + pop de + ld a, [wPlayerID] ; set trainer ID to player ID + inc de + ld [de], a + ld a, [wPlayerID + 1] + inc de + ld [de], a + push de + ld a, [W_CURENEMYLVL] + ld d, a + ld hl, CalcExperience + ld b, BANK(CalcExperience) call Bankswitch - ld a, $1 - ld [$ff8c], a - ld de, .RivalExitMovement - call MoveSprite - ld a, [W_XCOORD] - cp $4 - ; move left or right depending on where the player is standing - jr nz, .asm_1ce5b ; 0x1ce55 $4 - ld a, $c0 - jr .asm_1ce5d ; 0x1ce59 $2 -.asm_1ce5b - ld a, $80 -.asm_1ce5d - ld [$cc5b], a - - ld a, $e - ld [W_OAKSLABCURSCRIPT], a - ret - -.RivalExitMovement - db $E0,$00,$00,$00,$00,$00,$FF - -OaksLabScript14: ; 1ce6d (7:4e6d) - ld a, [$d730] - bit 0, a - jr nz, .asm_1ce8c ; 0x1ce72 $18 - ld a, $2a - ld [$cc4d], a - ld a, $11 - call Predef - xor a - ld [wJoypadForbiddenButtonsMask], a - call Func_2307 ; reset to map music - ld a, $12 - ld [W_OAKSLABCURSCRIPT], a - jr .done ; 0x1ce8a $23 -.asm_1ce8c - ld a, [$cf0f] - cp $5 - jr nz, .asm_1cea8 ; 0x1ce91 $15 - ld a, [W_XCOORD] - cp $4 - jr nz, .asm_1cea1 ; 0x1ce98 $7 - ld a, $c - ld [$c109], a - jr .done ; 0x1ce9f $e -.asm_1cea1 - ld a, $8 - ld [$c109], a - jr .done ; 0x1cea6 $7 -.asm_1cea8 - cp $4 - ret nz + pop de + inc de + ld a, [H_MULTIPLICAND] ; write experience + ld [de], a + inc de + ld a, [H_MULTIPLICAND+1] + ld [de], a + inc de + ld a, [H_MULTIPLICAND+2] + ld [de], a xor a - ld [$c109], a + ld b, $a +.writeEVsLoop ; set all EVs to 0 + inc de + ld [de], a + dec b + jr nz, .writeEVsLoop + inc de + inc de + pop hl + call AddPokemonToParty_WriteMovePP + inc de + ld a, [W_CURENEMYLVL] ; $d127 + ld [de], a + inc de + ld a, [W_ISINBATTLE] ; $d057 + dec a + jr nz, .calcFreshStats + ld hl, W_ENEMYMONMAXHP ; $cff4 + ld bc, $a + call CopyData ; copy stats of cur enemy mon + pop hl + jr .done +.calcFreshStats + pop hl + ld bc, $10 + add hl, bc + ld b, $0 + call CalcStats ; calculate fresh set of stats .done + scf ret -OaksLabScript15: ; 1ceb0 (7:4eb0) - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - call EnableAutoTextBoxDrawing - ld a, $ff - ld [$c0ee], a - call PlaySound - ld b, BANK(Music_RivalAlternateStart) - ld hl, Music_RivalAlternateStart - call Bankswitch - ld a, $15 - ld [$ff8c], a - call DisplayTextID - call OaksLabScript_1d02b - ld a, $2a - ld [$cc4d], a - ld a, $15 - call Predef - ld a, [$cd37] - ld [$d157], a +LoadMovePPs: ; f473 (3:7473) + call Load16BitRegisters + ; fallthrough +AddPokemonToParty_WriteMovePP: ; f476 (3:7476) + ld b, $4 +.pploop + ld a, [hli] ; read move ID + and a + jr z, .empty + dec a + push hl + push de + push bc + ld hl, Moves + ld bc, $6 + call AddNTimes + ld de, $cd6d + ld a, BANK(Moves) + call FarCopyData + pop bc + pop de + pop hl + ld a, [$cd72] ; sixth move byte = pp +.empty + inc de + ld [de], a + dec b + jr nz, .pploop ; there are still moves to read + ret + +; adds enemy mon [$cf91] (at position [$cf92] in enemy list) to own party +; no known uses in the game +_AddEnemyMonToPlayerParty: ; f49d (3:749d) + ld hl, W_NUMINPARTY + ld a, [hl] + cp $6 + scf + ret z ; party full, return failure + inc a + ld [hl], a ; add 1 to party members + ld c, a ld b, $0 + add hl, bc + ld a, [$cf91] + ld [hli], a ; add mon as last list entry + ld [hl], $ff ; write new sentinel + ld hl, W_PARTYMON1DATA + ld a, [W_NUMINPARTY] + dec a + ld bc, W_PARTYMON2DATA - W_PARTYMON1DATA + call AddNTimes + ld e, l + ld d, h + ld hl, $cf98 + call CopyData ; write new mon's data (from $cf98) + ld hl, W_PARTYMON1OT + ld a, [W_NUMINPARTY] + dec a + call SkipFixedLengthTextEntries + ld d, h + ld e, l + ld hl, W_ENEMYMON1OT + ld a, [wWhichPokemon] + call SkipFixedLengthTextEntries + ld bc, $000b + call CopyData ; write new mon's OT name (from an enemy mon) + ld hl, W_PARTYMON1NAME + ld a, [W_NUMINPARTY] + dec a + call SkipFixedLengthTextEntries + ld d, h + ld e, l + ld hl, W_ENEMYMON1NAME + ld a, [wWhichPokemon] + call SkipFixedLengthTextEntries + ld bc, $000b + call CopyData ; write new mon's nickname (from an enemy mon) + ld a, [$cf91] + ld [$d11e], a + ld a, $3a + call Predef + ld a, [$d11e] + dec a ld c, a - ld hl, $cc97 - ld a, $40 - call FillMemory - ld [hl], $ff - ld a, $1 - ld [$ff8c], a - ld de, $cc97 - call MoveSprite + ld b, $1 + ld hl, wPokedexOwned + push bc + call _HandleBitArray ; add to owned pokemon + pop bc + ld hl, wPokedexSeen + call _HandleBitArray ; add to seen pokemon + and a + ret ; return success - ld a, $10 - ld [W_OAKSLABCURSCRIPT], a +Func_f51e: ; f51e (3:751e) + ld a, [$cf95] + and a + jr z, .checkPartyMonSlots + cp $2 + jr z, .checkPartyMonSlots + cp $3 + ld hl, W_DAYCAREMONDATA + jr z, .asm_f575 + ld hl, W_NUMINBOX ; $da80 + ld a, [hl] + cp $14 + jr nz, .partyOrBoxNotFull + jr .boxFull +.checkPartyMonSlots + ld hl, W_NUMINPARTY ; $d163 + ld a, [hl] + cp $6 + jr nz, .partyOrBoxNotFull +.boxFull + scf ret - -OaksLabScript_1cefd ; 1cefd (7:4efd) - ld a, $1 - ld [$ff8c], a - ld a, $4 - ld [$ff8d], a - call Func_34a6 ; face object - ld a, $8 - ld [$ff8c], a - xor a - ld [$ff8d], a - jp Func_34a6 ; face object - -OaksLabScript16: ; 1cf12 (7:4f12) - ld a, [$d730] - bit 0, a - ret nz - call EnableAutoTextBoxDrawing - call Func_2307 - ld a, $fc - ld [wJoypadForbiddenButtonsMask], a - call OaksLabScript_1cefd - ld a, $16 - ld [$ff8c], a - call DisplayTextID - call DelayFrame - call OaksLabScript_1cefd - ld a, $17 - ld [$ff8c], a - call DisplayTextID - call DelayFrame - call OaksLabScript_1cefd - ld a, $18 - ld [$ff8c], a - call DisplayTextID - call DelayFrame - ld a, $19 - ld [$ff8c], a - call DisplayTextID - call Delay3 - ld a, $2f - ld [$cc4d], a - ld a, $11 - call Predef - ld a, $30 - ld [$cc4d], a - ld a, $11 - call Predef - call OaksLabScript_1cefd - ld a, $1a - ld [$ff8c], a - call DisplayTextID - ld a, $1 - ld [$ff8c], a - ld a, $c - ld [$ff8d], a - call Func_34a6 ; face object - call Delay3 - ld a, $1b - ld [$ff8c], a - call DisplayTextID - ld hl, $d74b - set 5, [hl] - ld hl, $d74e - set 0, [hl] - ld a, $1 - ld [$cc4d], a - ld a, $11 - call Predef - ld a, $2 - ld [$cc4d], a - ld a, $15 - call Predef - ld a, [$d157] - ld b, $0 +.partyOrBoxNotFull + inc a + ld [hl], a ; increment number of mons in party/box ld c, a - ld hl, $cc97 - xor a - call FillMemory - ld [hl], $ff - ld a, $ff - ld [$c0ee], a - call PlaySound - ld b, BANK(Music_RivalAlternateStart) - ld hl, Music_RivalAlternateStart + ld b, $0 + add hl, bc + ld a, [$cf95] + cp $2 + ld a, [W_DAYCAREMONDATA] + jr z, .asm_f556 + ld a, [$cf91] +.asm_f556 + ld [hli], a ; write new mon ID + ld [hl], $ff ; write new sentinel + ld a, [$cf95] + dec a + ld hl, W_PARTYMON1DATA ; $d16b + ld bc, W_PARTYMON2DATA - W_PARTYMON1DATA ; $2c + ld a, [W_NUMINPARTY] ; $d163 + jr nz, .skipToNewMonEntry + ld hl, W_BOXMON1DATA + ld bc, W_BOXMON2DATA - W_BOXMON1DATA ; $21 + ld a, [W_NUMINBOX] ; $da80 +.skipToNewMonEntry + dec a + call AddNTimes +.asm_f575 + push hl + ld e, l + ld d, h + ld a, [$cf95] + and a + ld hl, W_BOXMON1DATA + ld bc, W_BOXMON2DATA - W_BOXMON1DATA ; $21 + jr z, .asm_f591 + cp $2 + ld hl, W_DAYCAREMONDATA + jr z, .asm_f597 + ld hl, W_PARTYMON1DATA ; $d16b + ld bc, W_PARTYMON2DATA - W_PARTYMON1DATA ; $2c +.asm_f591 + ld a, [wWhichPokemon] ; $cf92 + call AddNTimes +.asm_f597 + push hl + push de + ld bc, $21 + call CopyData + pop de + pop hl + ld a, [$cf95] + and a + jr z, .asm_f5b4 + cp $2 + jr z, .asm_f5b4 + ld bc, $21 + add hl, bc + ld a, [hl] + inc de + inc de + inc de + ld [de], a +.asm_f5b4 + ld a, [$cf95] + cp $3 + ld de, W_DAYCAREMONOT + jr z, .asm_f5d3 + dec a + ld hl, W_PARTYMON1OT ; $d273 + ld a, [W_NUMINPARTY] ; $d163 + jr nz, .asm_f5cd + ld hl, W_BOXMON1OT + ld a, [W_NUMINBOX] ; $da80 +.asm_f5cd + dec a + call SkipFixedLengthTextEntries + ld d, h + ld e, l +.asm_f5d3 + ld hl, W_BOXMON1OT + ld a, [$cf95] + and a + jr z, .asm_f5e6 + ld hl, W_DAYCAREMONOT + cp $2 + jr z, .asm_f5ec + ld hl, W_PARTYMON1OT ; $d273 +.asm_f5e6 + ld a, [wWhichPokemon] ; $cf92 + call SkipFixedLengthTextEntries +.asm_f5ec + ld bc, $b + call CopyData + ld a, [$cf95] + cp $3 + ld de, W_DAYCAREMONNAME + jr z, .asm_f611 + dec a + ld hl, W_PARTYMON1NAME ; $d2b5 + ld a, [W_NUMINPARTY] ; $d163 + jr nz, .asm_f60b + ld hl, W_BOXMON1NAME + ld a, [W_NUMINBOX] ; $da80 +.asm_f60b + dec a + call SkipFixedLengthTextEntries + ld d, h + ld e, l +.asm_f611 + ld hl, W_BOXMON1NAME + ld a, [$cf95] + and a + jr z, .asm_f624 + ld hl, W_DAYCAREMONNAME + cp $2 + jr z, .asm_f62a + ld hl, W_PARTYMON1NAME ; $d2b5 +.asm_f624 + ld a, [wWhichPokemon] ; $cf92 + call SkipFixedLengthTextEntries +.asm_f62a + ld bc, $b + call CopyData + pop hl + ld a, [$cf95] + cp $1 + jr z, .asm_f664 + cp $3 + jr z, .asm_f664 + push hl + srl a + add $2 + ld [$cc49], a + call LoadMonData + ld b, BANK(Func_58f43) + ld hl, Func_58f43 call Bankswitch - ld a, $1 - ld [$ff8c], a - ld de, $cc97 - call MoveSprite - - ld a, $11 - ld [W_OAKSLABCURSCRIPT], a + ld a, d + ld [W_CURENEMYLVL], a ; $d127 + pop hl + ld bc, $21 + add hl, bc + ld [hli], a + ld d, h + ld e, l + ld bc, $ffee + add hl, bc + ld b, $1 + call CalcStats +.asm_f664 + and a ret -OaksLabScript17: ; 1cfd4 (7:4fd4) - ld a, [$d730] - bit 0, a - ret nz - call Func_2307 - ld a, $2a - ld [$cc4d], a - ld a, $11 - call Predef - ld hl, $d7eb - set 0, [hl] - res 1, [hl] - set 7, [hl] - ld a, $22 - ld [$cc4d], a - ld a, $15 - call Predef - ld a, $5 - ld [W_PALLETTOWNCURSCRIPT], a - xor a - ld [wJoypadForbiddenButtonsMask], a - - ld a, $12 - ld [W_OAKSLABCURSCRIPT], a - ret +; predef $10 +; executes operations on a field of bits +; b = 0 -> reset bit +; b = 1 -> set bit +; b = 2 -> read bit (into c and z-flag) +; hl: base address +; c: bit index +HandleBitArray: ; f666 (3:7666) + call Load16BitRegisters -OaksLabScript18: ; 1d009 (7:5009) +_HandleBitArray: ; f669 (3:7669) + push hl + push de + push bc + ld a, c + ld d, a + and $7 + ld e, a ; store bit offset in e + ld a, d + srl a + srl a + srl a ; calc byte offset + add l + ld l, a + jr nc, .noCarry + inc h +.noCarry + inc e + ld d, $1 +.shiftLeftLoop ; d = 1 << e, bitmask for the used bit + dec e + jr z, .operationSelect + sla d + jr .shiftLeftLoop +.operationSelect + ld a, b + and a + jr z, .resetBit + cp $2 + jr z, .readBit + ld b, [hl] ; set bit + ld a, d + or b + ld [hl], a + jr .done +.resetBit + ld b, [hl] + ld a, d + xor $ff + and b + ld [hl], a + jr .done +.readBit + ld b, [hl] + ld a, d + and b +.done + pop bc + pop de + pop hl + ld c, a ret -OaksLabScript_1d00a: ; 1d00a (7:500a) - ld hl, wBagItems - ld bc, $0000 -.asm_1d010 +HealParty: ; f6a5 (3:76a5) + ld hl, W_PARTYMON1 + ld de, W_PARTYMON1_HP +.HealPokemon: ; f6ab (3:76ab) ld a, [hli] cp $ff - ret z - cp OAKS_PARCEL - jr z, .GotParcel ; 0x1d016 $4 - inc hl - inc c - jr .asm_1d010 ; 0x1d01a $f4 -.GotParcel - ld hl, $d31d - ld a, c + jr z, .DoneHealing ; End if there's no Pokémon + push hl + push de + ld hl, $0003 ; Status offset + add hl, de + xor a + ld [hl], a ; Clean status conditions + push de + ld b, $4 ; A Pokémon has 4 moves +.RestorePP: ; f6bb (3:76bb) + ld hl, $0007 ; Move offset + add hl, de + ld a, [hl] + and a + jr z, .HealNext ; Skip if there's no move here + dec a + ld hl, $001c ; PP offset + add hl, de + push hl + push de + push bc + ld hl, Moves + ld bc, $0006 + call AddNTimes + ld de, $cd6d + ld a, BANK(Moves) + call FarCopyData ; copy move header to memory + ld a, [$cd72] ; get default PP + pop bc + pop de + pop hl + inc de + push bc + ld b, a + ld a, [hl] + and $c0 + add b + ld [hl], a + pop bc +.HealNext: ; f6eb (3:76eb) + dec b + jr nz, .RestorePP ; Continue if there's still moves + pop de + ld hl, $0021 ; Max HP offset + add hl, de + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a ; Restore full HP + pop de + pop hl + push hl + ld bc, $002c + ld h, d + ld l, e + add hl, bc + ld d, h + ld e, l + pop hl + jr .HealPokemon ; Next Pokémon +.DoneHealing + xor a ld [wWhichPokemon], a - ld a, $1 - ld [$cf96], a - jp RemoveItemFromInventory - -OaksLabScript_1d02b: ; 1d02b (7:502b) - ld a, $7c - ld [$ffeb], a - ld a, $8 - ld [$ffee], a - ld a, [W_YCOORD] - cp $3 - jr nz, .asm_1d045 ; 0x1d038 $b - ld a, $4 - ld [$cd37], a - ld a, $30 - ld b, $b - jr .asm_1d068 ; 0x1d043 $23 -.asm_1d045 - cp $1 - jr nz, .asm_1d054 ; 0x1d047 $b - ld a, $2 - ld [$cd37], a - ld a, $30 - ld b, $9 - jr .asm_1d068 ; 0x1d052 $14 -.asm_1d054 - ld a, $3 - ld [$cd37], a - ld b, $a - ld a, [W_XCOORD] - cp $4 - jr nz, .asm_1d066 ; 0x1d060 $4 - ld a, $40 - jr .asm_1d068 ; 0x1d064 $2 -.asm_1d066 - ld a, $20 -.asm_1d068 - ld [$ffec], a - ld a, b - ld [$ffed], a - ld a, $1 - ld [$cf13], a - call Func_32f9 - ret - -OaksLabScript_1d076: ; 1d076 (7:5076) - ld hl, OaksLabTextPointers + $36 ; $50b8 ; starts at OaksLabText28 - ld a, l - ld [W_MAPTEXTPTR], a - ld a, h - ld [W_MAPTEXTPTR+1], a + ld [$d11e], a + ld a, [W_NUMINPARTY] + ld b, a +.restoreBonusPPLoop ; loop to restore bonus PP from PP Ups + push bc + call RestoreBonusPP + pop bc + ld hl, wWhichPokemon + inc [hl] + dec b + jr nz,.restoreBonusPPLoop ret -OaksLabTextPointers: ; 1d082 (7:5082) - dw OaksLabText1 - dw OaksLabText2 - dw OaksLabText3 - dw OaksLabText4 - dw OaksLabText5 - dw OaksLabText6 - dw OaksLabText7 - dw OaksLabText8 - dw OaksLabText9 - dw OaksLabText10 - dw OaksLabText11 - dw OaksLabText12 - dw OaksLabText13 - dw OaksLabText14 - dw OaksLabText15 - dw OaksLabText16 - dw OaksLabText17 - dw OaksLabText18 - dw OaksLabText19 - dw OaksLabText20 - dw OaksLabText21 - dw OaksLabText22 - dw OaksLabText23 - dw OaksLabText24 - dw OaksLabText25 - dw OaksLabText26 - dw OaksLabText27 - dw OaksLabText28 - dw OaksLabText29 - dw OaksLabText30 - dw OaksLabText31 - dw OaksLabText32 - dw OaksLabText33 - dw OaksLabText34 - dw OaksLabText35 - dw OaksLabText36 - dw OaksLabText37 - dw OaksLabText38 - -OaksLabText28: ; 1d0ce (7:50ce) -OaksLabText1: ; 1d0ce (7:50ce) - db $08 ; asm - ld a, [$d74b] - bit 0, a - jr nz, .asm_1d0de ; 0x1d0d4 - ld hl, OaksLabGaryText1 - call PrintText - jr .asm_1d0f0 ; 0x1d0dc -.asm_1d0de ; 0x1d0de - bit 2, a - jr nz, .asm_1d0ea ; 0x1d0e0 - ld hl, OaksLabText40 - call PrintText - jr .asm_1d0f0 ; 0x1d0e8 -.asm_1d0ea ; 0x1d0ea - ld hl, OaksLabText41 - call PrintText -.asm_1d0f0 ; 0x1d0f0 - jp TextScriptEnd - -OaksLabGaryText1: ; 1d0f3 (7:50f3) - TX_FAR _OaksLabGaryText1 - db "@" - -OaksLabText40: ; 1d0f8 (7:50f8) - TX_FAR _OaksLabText40 - db "@" - -OaksLabText41: ; 1d0fd (7:50fd) - TX_FAR _OaksLabText41 - db "@" - -OaksLabText29: ; 1d102 (7:5102) -OaksLabText2: ; 1d102 (7:5102) - db $8 - ld a, SQUIRTLE - ld [$cd3d], a - ld a, $3 - ld [$cd3e], a - ld a, CHARMANDER - ld b, $2 - jr OaksLabScript_1d133 ; 0x1d111 $20 - -OaksLabText30: ; 1d113 (7:5113) -OaksLabText3: ; 1d113 (7:5113) - db $8 - ld a, BULBASAUR - ld [$cd3d], a - ld a, $4 - ld [$cd3e], a - ld a, SQUIRTLE - ld b, $3 - jr OaksLabScript_1d133 ; 0x1d122 $f - -OaksLabText31: ; 1d124 (7:5124) -OaksLabText4: ; 1d124 (7:5124) - db $8 - ld a, CHARMANDER - ld [$cd3d], a - ld a, $2 - ld [$cd3e], a - ld a, BULBASAUR - ld b, $4 - -OaksLabScript_1d133: ; 1d133 (7:5133) - ld [$cf91], a - ld [$d11e], a +; predef $9 +; predef $a +; predef $d +; predef $e +Func_f71e: ; f71e (3:771e) + call Load16BitRegisters + xor a + ld [$ffa5], a + ld [$ffa6], a + ld [$ffa7], a + ld d, $1 +.asm_f72a + ld a, [$ffa2] + and $f0 + jr nz, .asm_f75b + inc d + ld a, [$ffa2] + swap a + and $f0 + ld b, a + ld a, [$ffa3] + swap a + ld [$ffa3], a + and $f + or b + ld [$ffa2], a + ld a, [$ffa3] + and $f0 + ld b, a + ld a, [$ffa4] + swap a + ld [$ffa4], a + and $f + or b + ld [$ffa3], a + ld a, [$ffa4] + and $f0 + ld [$ffa4], a + jr .asm_f72a +.asm_f75b + push de + push de + call Func_f800 + pop de ld a, b - ld [$cf13], a - ld a, [$d74b] - bit 2, a - jp nz, OaksLabScript_1d22d - bit 1, a - jr nz, OaksLabScript_1d157 ; 0x1d147 $e - ld hl, OaksLabText39 - call PrintText - jp TextScriptEnd - -OaksLabText39: ; 1d152 (7:5152) - TX_FAR _OaksLabText39 - db "@" - -OaksLabScript_1d157: ; 1d157 (7:5157) - ld a, $5 - ld [$ff8c], a - ld a, $9 - ld [$ff8b], a - call Func_34fc - ld [hl], $0 - ; manually fixed some disassembler issues around here - ld a, $1 - ld [$FF8c], a - ld a, $9 - ld [$ff8b], a - call Func_34fc - ld [hl], $c - ld hl, $d730 - set 6, [hl] - ld a, $46 - call Predef - ld hl, $d730 - res 6, [hl] - call ReloadMapData - ld c, $a - call DelayFrames - ld a, [$cf13] - cp $2 - jr z, OaksLabLookAtCharmander - cp $3 - jr z, OaksLabLookAtSquirtle - jr OaksLabLookAtBulbasaur - -OaksLabLookAtCharmander ; 0x1d195 - ld hl, OaksLabCharmanderText - jr OaksLabMonChoiceMenu -OaksLabCharmanderText: ; 1d19a (7:519a) - TX_FAR _OaksLabCharmanderText - db "@" + swap a + and $f0 + ld [$ffa5], a + dec d + jr z, .asm_f7bc + push de + call Func_f7d7 + call Func_f800 + pop de + ld a, [$ffa5] + or b + ld [$ffa5], a + dec d + jr z, .asm_f7bc + push de + call Func_f7d7 + call Func_f800 + pop de + ld a, b + swap a + and $f0 + ld [$ffa6], a + dec d + jr z, .asm_f7bc + push de + call Func_f7d7 + call Func_f800 + pop de + ld a, [$ffa6] + or b + ld [$ffa6], a + dec d + jr z, .asm_f7bc + push de + call Func_f7d7 + call Func_f800 + pop de + ld a, b + swap a + and $f0 + ld [$ffa7], a + dec d + jr z, .asm_f7bc + push de + call Func_f7d7 + call Func_f800 + pop de + ld a, [$ffa7] + or b + ld [$ffa7], a +.asm_f7bc + ld a, [$ffa5] + ld [$ffa2], a + ld a, [$ffa6] + ld [$ffa3], a + ld a, [$ffa7] + ld [$ffa4], a + pop de + ld a, $6 + sub d + and a + ret z +.asm_f7ce + push af + call Func_f7d7 + pop af + dec a + jr nz, .asm_f7ce + ret -OaksLabLookAtSquirtle: ; 1d19f (7:519f) - ld hl, OaksLabSquirtleText - jr OaksLabMonChoiceMenu -OaksLabSquirtleText: ; 1d1a4 (7:51a4) - TX_FAR _OaksLabSquirtleText - db "@" +Func_f7d7: ; f7d7 (3:77d7) + ld a, [$ffa4] + swap a + and $f + ld b, a + ld a, [$ffa3] + swap a + ld [$ffa3], a + and $f0 + or b + ld [$ffa4], a + ld a, [$ffa3] + and $f + ld b, a + ld a, [$ffa2] + swap a + ld [$ffa2], a + and $f0 + or b + ld [$ffa3], a + ld a, [$ffa2] + and $f + ld [$ffa2], a + ret -OaksLabLookAtBulbasaur: ; 1d1a9 (7:51a9) - ld hl, OaksLabBulbasaurText - jr OaksLabMonChoiceMenu -OaksLabBulbasaurText: ; 1d1ae (7:51ae) - TX_FAR _OaksLabBulbasaurText - db "@" +Func_f800: ; f800 (3:7800) + ld bc, $3 +.asm_f803 + ld de, $ff9f + ld hl, $ffa2 + push bc + call StringCmp + pop bc + ret c + inc b + ld de, $ffa1 + ld hl, $ffa4 + push bc + call Func_f839 + pop bc + jr .asm_f803 -OaksLabMonChoiceMenu: ; 1d1b3 (7:51b3) - call PrintText - ld a, $1 - ld [$cc3c], a - call YesNoChoice ; yes/no menu - ld a, [$cc26] +Func_f81d: ; f81d (3:781d) + call Load16BitRegisters and a - jr nz, OaksLabMonChoiceEnd - ld a, [$cf91] - ld [$d717], a - ld [$d11e], a - call GetMonName - ld a, [$cf13] - cp $2 - jr nz, asm_1d1db ; 0x1d1d5 $4 - ld a, $2b - jr asm_1d1e5 ; 0x1d1d9 $a -asm_1d1db: ; 1d1db (7:51db) - cp $3 - jr nz, asm_1d1e3 ; 0x1d1dd $4 - ld a, $2c - jr asm_1d1e5 ; 0x1d1e1 $2 -asm_1d1e3: ; 1d1e3 (7:51e3) - ld a, $2d -asm_1d1e5: ; 1d1e5 (7:51e5) - ld [$cc4d], a - ld a, $11 - call Predef - ld a, $1 - ld [$cc3c], a - ld hl, OaksLabMonEnergeticText - call PrintText - ld hl, OaksLabReceivedMonText - call PrintText - xor a - ld [$cc49], a - ld a, $5 - ld [$d127], a - ld a, [$cf91] - ld [$d11e], a - call AddPokemonToParty - ld hl, $d72e - set 3, [hl] - ld a, $fc - ld [wJoypadForbiddenButtonsMask], a - ld a, $8 - ld [W_OAKSLABCURSCRIPT], a -OaksLabMonChoiceEnd: ; 1d21f (7:521f) - jp TextScriptEnd - -OaksLabMonEnergeticText: ; 1d222 (7:5222) - TX_FAR _OaksLabMonEnergeticText - db "@" - -OaksLabReceivedMonText: ; 1d227 (7:5227) - TX_FAR _OaksLabReceivedMonText - db $11, "@" + ld b, c +.asm_f822 + ld a, [de] + adc [hl] + daa + ld [de], a + dec de + dec hl + dec c + jr nz, .asm_f822 + jr nc, .asm_f835 + ld a, $99 + inc de +.asm_f830 + ld [de], a + inc de + dec b + jr nz, .asm_f830 +.asm_f835 + ret -OaksLabScript_1d22d: ; 1d22d (7:522d) - ld a, $5 - ld [$ff8c], a - ld a, $9 - ld [$ff8b], a - call Func_34fc - ld [hl], $0 - ld hl, OaksLabLastMonText - call PrintText - jp TextScriptEnd +Func_f836: ; f836 (3:7836) + call Load16BitRegisters -OaksLabLastMonText: ; 1d243 (7:5243) - TX_FAR _OaksLabLastMonText - db "@" +Func_f839: ; f839 (3:7839) + and a + ld b, c +.asm_f83b + ld a, [de] + sbc [hl] + daa + ld [de], a + dec de + dec hl + dec c + jr nz, .asm_f83b + jr nc, .asm_f84f + ld a, $0 + inc de +.asm_f849 + ld [de], a + inc de + dec b + jr nz, .asm_f849 + scf +.asm_f84f + ret -OaksLabText32: ; 1d248 (7:5248) -OaksLabText5: ; 1d248 (7:5248) - db $08 ; asm - ld a, [$d747] - bit 6, a - jr nz, .asm_50e81 ; 0x1d24e - ld hl, $d2f7 - ld b, $13 - call CountSetBits - ld a, [$d11e] - cp $2 - jr c, .asm_b28b0 ; 0x1d25d - ld a, [$d74b] - bit 5, a - jr z, .asm_b28b0 ; 0x1d264 -.asm_50e81 ; 0x1d266 - ld hl, UnnamedText_1d31d - call PrintText - ld a, $1 - ld [$cc3c], a - ld a, $56 - call Predef - jp .asm_0f042 -.asm_b28b0 ; 0x1d279 - ld b,POKE_BALL - call IsItemInBag - jr nz, .asm_17c30 ; 0x1d27e - ld a, [$d7eb] - bit 5, a - jr nz, .asm_f1adc ; 0x1d285 - ld a, [$d74b] - bit 5, a - jr nz, .asm_333a2 ; 0x1d28c - bit 3, a - jr nz, .asm_76269 ; 0x1d290 - ld a, [$d72e] - bit 3, a - jr nz, .asm_4a5e0 ; 0x1d297 - ld hl, UnnamedText_1d2f0 - call PrintText - jr .asm_0f042 ; 0x1d29f -.asm_4a5e0 ; 0x1d2a1 - ld hl, UnnamedText_1d2f5 - call PrintText - jr .asm_0f042 ; 0x1d2a7 -.asm_76269 ; 0x1d2a9 - ld b, OAKS_PARCEL - call IsItemInBag - jr nz, .asm_a8fcf ; 0x1d2ae - ld hl, UnnamedText_1d2fa - call PrintText - jr .asm_0f042 ; 0x1d2b6 -.asm_a8fcf ; 0x1d2b8 - ld hl, OaksLabDeliverParcelText - call PrintText - call OaksLabScript_1d00a - ld a, $f - ld [W_OAKSLABCURSCRIPT], a - jr .asm_0f042 ; 0x1d2c6 -.asm_333a2 ; 0x1d2c8 - ld hl, OaksLabAroundWorldText - call PrintText - jr .asm_0f042 ; 0x1d2ce -.asm_f1adc ; 0x1d2d0 - ld hl, $d74b - bit 4, [hl] - set 4, [hl] - jr nz, .asm_17c30 ; 0x1d2d7 - ld bc, (POKE_BALL << 8) | 5 - call GiveItem - ld hl, OaksLabGivePokeballsText - call PrintText - jr .asm_0f042 ; 0x1d2e5 -.asm_17c30 ; 0x1d2e7 - ld hl, OaksLabPleaseVisitText - call PrintText -.asm_0f042 ; 0x1d2ed - jp TextScriptEnd +InitializePlayerData: ; f850 (3:7850) + call GenRandom + ld a, [H_RAND2] + ld [wPlayerID], a ; set player trainer id + call GenRandom + ld a, [H_RAND1] + ld [wPlayerID + 1], a + ld a, $ff + ld [$d71b], a ; XXX what's this? + ld hl, W_NUMINPARTY ; $d163 + call InitializeEmptyList ; no party mons + ld hl, W_NUMINBOX ; $da80 + call InitializeEmptyList ; no boxed mons + ld hl, wNumBagItems ; $d31d + call InitializeEmptyList ; no items + ld hl, wNumBoxItems ; $d53a + call InitializeEmptyList ; no boxed items + ld hl, wPlayerMoney + 1 ; $d348 + ld a, $30 + ld [hld], a ; set money to 00 30 00 (3000) + xor a + ld [hli], a + inc hl + ld [hl], a + ld [$cc49], a ; XXX what's this? + ld hl, W_OBTAINEDBADGES + ld [hli], a ; no badges obtained + ld [hl], a ; XXX what's this? + ld hl, wPlayerCoins ; $d5a4 + ld [hli], a ; no coins + ld [hl], a + ld hl, W_GAMEPROGRESSFLAGS ; $d5f0 + ld bc, $c8 + call FillMemory ; clear all game progress flags + jp InitializeMissableObjectsFlags -UnnamedText_1d2f0: ; 1d2f0 (7:52f0) - TX_FAR _UnnamedText_1d2f0 - db "@" +; writes two bytes $00 $ff to hl +InitializeEmptyList: ; f8a0 (3:78a0) + xor a + ld [hli], a + dec a + ld [hl], a + ret -UnnamedText_1d2f5: ; 1d2f5 (7:52f5) - TX_FAR _UnnamedText_1d2f5 - db "@" +Func_f8a5: ; f8a5 (3:78a5) + call Load16BitRegisters + ld hl, wNumBagItems ; $d31d +.asm_f8ab + inc hl + ld a, [hli] + cp $ff + jr z, .asm_f8b7 + cp b + jr nz, .asm_f8ab + ld a, [hl] + ld b, a + ret +.asm_f8b7 + ld b, $0 + ret -UnnamedText_1d2fa: ; 1d2fa (7:52fa) - TX_FAR _UnnamedText_1d2fa - db "@" +Func_f8ba: ; f8ba (3:78ba) + xor a + ld hl, $ff97 + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld hl, $cc97 + ld de, $0 -OaksLabDeliverParcelText: ; 1d2ff (7:52ff) - TX_FAR _OaksLabDeliverParcelText1 - db $11 - TX_FAR _OaksLabDeliverParcelText2 - db "@" +Func_f8c8: ; f8c8 (3:78c8) + ld a, [H_REMAINDER] ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + ld b, a + ld a, [H_DIVIDEND] ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) + call CalcDifference + ld d, a + and a + jr nz, .asm_f8da + ld a, [$ff98] + set 0, a + ld [$ff98], a +.asm_f8da + ld a, [$ff9a] + ld b, a + ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND) + call CalcDifference + ld e, a + and a + jr nz, .asm_f8ec + ld a, [$ff98] + set 1, a + ld [$ff98], a +.asm_f8ec + ld a, [$ff98] + cp $3 + jr z, .asm_f926 + ld a, e + cp d + jr c, .asm_f90a + ld a, [$ff9d] + bit 1, a + jr nz, .asm_f900 + ld d, $c0 + jr .asm_f902 +.asm_f900 + ld d, $80 +.asm_f902 + ld a, [$ff9a] + add $1 + ld [$ff9a], a + jr .asm_f91c +.asm_f90a + ld a, [$ff9d] + bit 0, a + jr nz, .asm_f914 + ld d, $0 + jr .asm_f916 +.asm_f914 + ld d, $40 +.asm_f916 + ld a, [H_REMAINDER] ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + add $1 + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) +.asm_f91c + ld a, d + ld [hli], a + ld a, [$ff97] + inc a + ld [$ff97], a + jp Func_f8c8 +.asm_f926 + ld [hl], $ff + ret -OaksLabAroundWorldText: ; 1d309 (7:5309) - TX_FAR _OaksLabAroundWorldText - db "@" +Func_f929: ; f929 (3:7929) + xor a + ld [$ff9d], a + ld a, [$c104] + ld d, a + ld a, [$c106] + ld e, a + ld hl, wSpriteStateData1 + ld a, [H_DIVIDEND] ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) + add l + add $4 + ld l, a + jr nc, .asm_f940 + inc h +.asm_f940 + ld a, d + ld b, a + ld a, [hli] + call CalcDifference + jr nc, .asm_f953 + push hl + ld hl, $ff9d + bit 0, [hl] + set 0, [hl] + pop hl + jr .asm_f95c +.asm_f953 + push hl + ld hl, $ff9d + bit 0, [hl] + res 0, [hl] + pop hl +.asm_f95c + push hl + ld hl, $ffe5 + ld [hli], a + ld a, $10 + ld [hli], a + call Func_366b + ld a, [hl] + ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) + pop hl + inc hl + ld b, e + ld a, [hl] + call CalcDifference + jr nc, .asm_f97e + push hl + ld hl, $ff9d + bit 1, [hl] + set 1, [hl] + pop hl + jr .asm_f987 +.asm_f97e + push hl + ld hl, $ff9d + bit 1, [hl] + res 1, [hl] + pop hl +.asm_f987 + ld [$ffe5], a + ld a, $10 + ld [$ffe6], a + call Func_366b + ld a, [$ffe7] + ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) + ld a, [$ff9b] + and a + ret z + ld a, [$ff9d] + cpl + and $3 + ld [$ff9d], a + ret -OaksLabGivePokeballsText: ; 1d30e (7:530e) - TX_FAR _OaksLabGivePokeballsText1 - db $11 - TX_FAR _OaksLabGivePokeballsText2 - db "@" +Func_f9a0: ; f9a0 (3:79a0) + ld a, [$ff95] + ld [$cd37], a + dec a + ld de, $ccd3 + ld hl, $cc97 + add l + ld l, a + jr nc, .asm_f9b1 + inc h +.asm_f9b1 + ld a, [hld] + call Func_f9bf + ld [de], a + inc de + ld a, [$ff95] + dec a + ld [$ff95], a + jr nz, .asm_f9b1 + ret -OaksLabPleaseVisitText: ; 1d318 (7:5318) - TX_FAR _OaksLabPleaseVisitText - db "@" +Func_f9bf: ; f9bf (3:79bf) + push hl + ld b, a + ld hl, DataTable_f9d2 +.asm_f9c4 + ld a, [hli] + cp $ff + jr z, .asm_f9d0 + cp b + jr z, .asm_f9cf + inc hl + jr .asm_f9c4 +.asm_f9cf + ld a, [hl] +.asm_f9d0 + pop hl + ret -UnnamedText_1d31d: ; 1d31d (7:531d) - TX_FAR _UnnamedText_1d31d - db "@" +DataTable_f9d2: ; f9d2 (3:79d2) + db $40, $40, $00, $80, $80, $20, $c0, $10, $ff -OaksLabText34: ; 1d322 (7:5322) -OaksLabText33: ; 1d322 (7:5322) -OaksLabText7: ; 1d322 (7:5322) -OaksLabText6: ; 1d322 (7:5322) - db $08 ; asm - ld hl, UnnamedText_1d32c - call PrintText - jp TextScriptEnd +Func_f9db: ; f9db (3:79db) + ret -UnnamedText_1d32c: ; 1d32c (7:532c) - TX_FAR _UnnamedText_1d32c - db "@" +Func_f9dc: ; f9dc (3:79dc) + call Load16BitRegisters -OaksLabText35: ; 1d331 (7:5331) -OaksLabText8: ; 1d331 (7:5331) - TX_FAR _OaksLabText8 - db "@" +; calculates bc * 48 / de, the number of pixels the HP bar has +; the result is always at least 1 +UpdateHPBar_CalcNumberOfHPBarPixels: ; f9df (3:79df) + push hl + xor a + ld hl, H_MULTIPLICAND + ld [hli], a + ld a, b + ld [hli], a + ld a, c + ld [hli], a + ld [hl], $30 + call Multiply ; 48 * bc (hp bar is 48 pixels long) + ld a, d + and a + jr z, .maxHPSmaller256 + srl d ; make HP in de fit into 1 byte by dividing by 4 + rr e + srl d + rr e + ld a, [H_MULTIPLICAND+1] + ld b, a + ld a, [H_MULTIPLICAND+2] + srl b ; divide multiplication result as well + rr a + srl b + rr a + ld [H_MULTIPLICAND+2], a + ld a, b + ld [H_MULTIPLICAND+1], a +.maxHPSmaller256 + ld a, e + ld [H_DIVISOR], a + ld b, $4 + call Divide + ld a, [H_MULTIPLICAND+2] + ld e, a ; e = bc * 48 / de (num of pixels of HP bar) + pop hl + and a + ret nz + ld e, $1 ; make result at least 1 + ret -OaksLabText36: ; 1d336 (7:5336) -OaksLabText9: ; 1d336 (7:5336) - db $08 ; asm - ld hl, UnnamedText_1d340 - call PrintText - jp TextScriptEnd +; predef $48 +UpdateHPBar: ; fa1d (3:7a1d) + push hl + ld hl, wHPBarOldHP + ld a, [hli] + ld c, a ; old HP into bc + ld a, [hli] + ld b, a + ld a, [hli] + ld e, a ; new HP into de + ld d, [hl] + pop hl + push de + push bc + call UpdateHPBar_CalcHPDifference + ld a, e + ld [wHPBarHPDifference+1], a + ld a, d + ld [wHPBarHPDifference], a + pop bc + pop de + call UpdateHPBar_CompareNewHPToOldHP + ret z + ld a, $ff + jr c, .HPdecrease + ld a, $1 +.HPdecrease + ld [wHPBarDelta], a + call Load16BitRegisters + ld a, [wHPBarNewHP] + ld e, a + ld a, [wHPBarNewHP+1] + ld d, a +.animateHPBarLoop + push de + ld a, [wHPBarOldHP] + ld c, a + ld a, [wHPBarOldHP+1] + ld b, a + call UpdateHPBar_CompareNewHPToOldHP + jr z, .animateHPBarDone + jr nc, .HPIncrease + dec bc ; subtract 1 HP + ld a, c + ld [wHPBarNewHP], a + ld a, b + ld [wHPBarNewHP+1], a + call UpdateHPBar_CalcOldNewHPBarPixels + ld a, e + sub d ; calc pixel difference + jr .asm_fa7e +.HPIncrease + inc bc ; add 1 HP + ld a, c + ld [wHPBarNewHP], a + ld a, b + ld [wHPBarNewHP+1], a + call UpdateHPBar_CalcOldNewHPBarPixels + ld a, d + sub e ; calc pixel difference +.asm_fa7e + call UpdateHPBar_PrintHPNumber + and a + jr z, .noPixelDifference + call UpdateHPBar_AnimateHPBar +.noPixelDifference + ld a, [wHPBarNewHP] + ld [wHPBarOldHP], a + ld a, [wHPBarNewHP+1] + ld [wHPBarOldHP+1], a + pop de + jr .animateHPBarLoop +.animateHPBarDone + pop de + ld a, e + ld [wHPBarOldHP], a + ld a, d + ld [wHPBarOldHP+1], a + or e + jr z, .monFainted + call UpdateHPBar_CalcOldNewHPBarPixels + ld d, e +.monFainted + call UpdateHPBar_PrintHPNumber + ld a, $1 + call UpdateHPBar_AnimateHPBar + jp Delay3 -UnnamedText_1d340: ; 1d340 (7:5340) - TX_FAR _UnnamedText_1d340 - db "@" +; animates the HP bar going up or down for (a) ticks (two waiting frames each) +; stops prematurely if bar is filled up +; e: current health (in pixels) to start with +UpdateHPBar_AnimateHPBar: ; fab1 (3:7ab1) + push hl +.barAnimationLoop + push af + push de + ld d, $6 + call DrawHPBar + ld c, $2 + call DelayFrames + pop de + ld a, [wHPBarDelta] ; +1 or -1 + add e + cp $31 + jr nc, .barFilledUp + ld e, a + pop af + dec a + jr nz, .barAnimationLoop + pop hl + ret +.barFilledUp + pop af + pop hl + ret -OaksLabText17: ; 1d345 (7:5345) - db $8 - ld hl, OaksLabRivalWaitingText - call PrintText - jp TextScriptEnd +; compares old HP and new HP and sets c and z flags accordingly +UpdateHPBar_CompareNewHPToOldHP: ; fad1 (3:7ad1) + ld a, d + sub b + ret nz + ld a, e + sub c + ret -OaksLabRivalWaitingText: ; 1d34f (7:534f) - TX_FAR _OaksLabRivalWaitingText - db "@" +; calcs HP difference between bc and de (into de) +UpdateHPBar_CalcHPDifference: ; fad7 (3:7ad7) + ld a, d + sub b + jr c, .oldHPGreater + jr z, .testLowerByte +.newHPGreater + ld a, e + sub c + ld e, a + ld a, d + sbc b + ld d, a + ret +.oldHPGreater + ld a, c + sub e + ld e, a + ld a, b + sbc d + ld d, a + ret +.testLowerByte + ld a, e + sub c + jr c, .oldHPGreater + jr nz, .newHPGreater + ld de, $0 + ret -OaksLabText18: ; 1d354 (7:5354) - db $8 - ld hl, OaksLabChooseMonText - call PrintText - jp TextScriptEnd +UpdateHPBar_PrintHPNumber: ; faf5 (3:7af5) + push af + push de + ld a, [wListMenuID] ; $cf94 + and a + jr z, .asm_fb2d + ld a, [wHPBarOldHP] + ld [$cef1], a + ld a, [wHPBarOldHP+1] + ld [$cef0], a + push hl + ld a, [$fff6] + bit 0, a + jr z, .asm_fb15 + ld de, $9 + jr .asm_fb18 +.asm_fb15 + ld de, $15 +.asm_fb18 + add hl, de + push hl + ld a, $7f + ld [hli], a + ld [hli], a + ld [hli], a + pop hl + ld de, $cef0 + ld bc, $203 + call PrintNumber + call DelayFrame + pop hl +.asm_fb2d + pop de + pop af + ret -OaksLabChooseMonText: ; 1d35e (7:535e) - TX_FAR _OaksLabChooseMonText - db "@" +; calcs number of HP bar pixels for old and new HP value +; d: new pixels +; e: old pixels +UpdateHPBar_CalcOldNewHPBarPixels: ; fb30 (3:7b30) + push hl + ld hl, wHPBarMaxHP + ld a, [hli] ; max HP into de + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] ; old HP into bc + ld c, a + ld a, [hli] + ld b, a + ld a, [hli] ; new HP into hl + ld h, [hl] + ld l, a + push hl + push de + call UpdateHPBar_CalcNumberOfHPBarPixels ; calc num pixels for old HP + ld a, e + pop de + pop bc + push af + call UpdateHPBar_CalcNumberOfHPBarPixels ; calc num pixels for new HP + pop af + ld d, e + ld e, a + pop hl + ret -OaksLabText19: ; 1d363 (7:5363) - db $8 - ld hl, OaksLabRivalInterjectionText - call PrintText - jp TextScriptEnd +; prints text for bookshelves in buildings without sign events +Func_fb50: ; fb50 (3:7b50) + ld a, [$c109] + cp $4 + jr nz, .asm_fb7f + ld a, [W_CURMAPTILESET] ; $d367 + ld b, a + FuncCoord 8, 7 ; $c434 + ld a, [Coord] + ld c, a + ld hl, BookshelfTileIDs ; $7b8b +.asm_fb62 + ld a, [hli] + cp $ff + jr z, .asm_fb7f + cp b + jr nz, .asm_fb7b + ld a, [hli] + cp c + jr nz, .asm_fb7c + ld a, [hl] + push af + call EnableAutoTextBoxDrawing + pop af + call Func_3ef5 + xor a + ld [$ffdb], a + ret +.asm_fb7b + inc hl +.asm_fb7c + inc hl + jr .asm_fb62 +.asm_fb7f + ld a, $ff + ld [$ffdb], a + ld b, BANK(Func_52673) + ld hl, Func_52673 + jp Bankswitch -OaksLabRivalInterjectionText: ; 1d36d (7:536d) - TX_FAR _OaksLabRivalInterjectionText - db "@" +; format: db tileset id, bookshelf tile id, text id +BookshelfTileIDs: ; fb8b (3:7b8b) + db PLATEAU, $30, $3A + db HOUSE, $3D, $3F + db HOUSE, $1E, $40 + db MANSION, $32, $40 + db REDS_HOUSE_1, $32, $40 + db LAB, $28, $40 + db LOBBY, $16, $41 + db GYM, $1D, $40 + db DOJO, $1D, $40 + db GATE, $22, $40 + db MART, $54, $42 + db MART, $55, $42 + db POKECENTER, $54, $42 + db POKECENTER, $55, $42 + db LOBBY, $50, $42 + db LOBBY, $52, $42 + db SHIP, $36, $40 + db $FF -OaksLabText20: ; 1d372 (7:5372) - db $8 - ld hl, OaksLabBePatientText +IndigoPlateauStatues: ; fbbf (3:7bbf) + db $08 ; asm + ld hl, IndigoPlateauStatuesText1 call PrintText - jp TextScriptEnd - -OaksLabBePatientText: ; 1d37c (7:537c) - TX_FAR _OaksLabBePatientText - db "@" - -OaksLabText12: ; 1d381 (7:5381) - db $8 - ld hl, OaksLabLeavingText + ld a, [W_XCOORD] + bit 0, a + ld hl, IndigoPlateauStatuesText2 + jr nz, .asm_fbd3 + ld hl, IndigoPlateauStatuesText3 +.asm_fbd3 call PrintText jp TextScriptEnd -OaksLabLeavingText: ; 1d38b (7:538b) - TX_FAR _OaksLabLeavingText +IndigoPlateauStatuesText1: ; fbd9 (3:7bd9) + TX_FAR _IndigoPlateauStatuesText1 db "@" -OaksLabText13: ; 1d390 (7:5390) - db $8 - ld hl, OaksLabRivalPickingMonText - call PrintText - jp TextScriptEnd - -OaksLabRivalPickingMonText: ; 1d39a (7:539a) - TX_FAR _OaksLabRivalPickingMonText +IndigoPlateauStatuesText2: ; fbde (3:7bde) + TX_FAR _IndigoPlateauStatuesText2 db "@" -OaksLabText14: ; 1d39f (7:539f) - db $8 - ld hl, OaksLabRivalReceivedMonText - call PrintText - jp TextScriptEnd - -OaksLabRivalReceivedMonText: ; 1d3a9 (7:53a9) - TX_FAR _OaksLabRivalReceivedMonText - db $11, "@" +IndigoPlateauStatuesText3: ; fbe3 (3:7be3) + TX_FAR _IndigoPlateauStatuesText3 + db "@" -OaksLabText15: ; 1d3af (7:53af) - db $8 - ld hl, OaksLabRivalChallengeText +BookOrSculptureText: ; fbe8 (3:7be8) + db $08 ; asm + ld hl, PokemonBooksText + ld a, [W_CURMAPTILESET] + cp MANSION ; Celadon Mansion tileset + jr nz, .asm_fbfd + ld a, [$c420] + cp $38 + jr nz, .asm_fbfd + ld hl, DiglettSculptureText +.asm_fbfd call PrintText jp TextScriptEnd -OaksLabRivalChallengeText: ; 1d3b9 (7:53b9) - TX_FAR _OaksLabRivalChallengeText +PokemonBooksText: ; fc03 (3:7c03) + TX_FAR _PokemonBooksText db "@" -UnnamedText_1d3be: ; 1d3be (7:53be) - TX_FAR _UnnamedText_1d3be +DiglettSculptureText: ; fc08 (3:7c08) + TX_FAR _DiglettSculptureText db "@" -UnnamedText_1d3c3: ; 1d3c3 (7:53c3) - TX_FAR _UnnamedText_1d3c3 +ElevatorText: ; fc0d (3:7c0d) + TX_FAR _ElevatorText db "@" -OaksLabText16: ; 1d3c8 (7:53c8) - db $8 - ld hl, OaksLabRivalToughenUpText - call PrintText - jp TextScriptEnd +TownMapText: ; fc12 (3:7c12) + TX_FAR _TownMapText + db $06 + db $08 ; asm + ld a, $1 + ld [$cc3c], a + ld hl, $d730 + set 6, [hl] + call GBPalWhiteOutWithDelay3 + xor a + ld [$ffb0], a + inc a + ld [H_AUTOBGTRANSFERENABLED], a + call LoadFontTilePatterns + ld b, BANK(DisplayTownMap) + ld hl, DisplayTownMap + call Bankswitch + ld hl, $d730 + res 6, [hl] + ld de, TextScriptEnd + push de + ld a, [H_LOADEDROMBANK] + push af + jp CloseTextDisplay -OaksLabRivalToughenUpText: ; 1d3d2 (7:53d2) - TX_FAR _OaksLabRivalToughenUpText +PokemonStuffText: ; fc45 (3:7c45) + TX_FAR _PokemonStuffText db "@" -OaksLabText21: ; 1d3d7 (7:53d7) - TX_FAR _OaksLabText21 - db "@" +SECTION "bank4",ROMX,BANK[$4] -OaksLabText22: ; 1d3dc (7:53dc) - TX_FAR _OaksLabText22 - db "@" +OakAideSprite: ; 10000 (4:4000) + INCBIN "gfx/sprites/oak_aide.2bpp" ; was $10000 +RockerSprite: ; 10180 (4:4180) + INCBIN "gfx/sprites/rocker.2bpp" ; was $10180 +SwimmerSprite: ; 10300 (4:4300) + INCBIN "gfx/sprites/swimmer.2bpp" ; was $10300 +WhitePlayerSprite: ; 10480 (4:4480) + INCBIN "gfx/sprites/white_player.2bpp" ; was $10480 +GymHelperSprite: ; 10540 (4:4540) + INCBIN "gfx/sprites/gym_helper.2bpp" ; was $10540 +OldPersonSprite: ; 10600 (4:4600) + INCBIN "gfx/sprites/old_person.2bpp" ; was $10600 +MartGuySprite: ; 106c0 (4:46c0) + INCBIN "gfx/sprites/mart_guy.2bpp" ; was $106c0 +FisherSprite: ; 10780 (4:4780) + INCBIN "gfx/sprites/fisher.2bpp" ; was $10780 +OldMediumWomanSprite: ; 10840 (4:4840) + INCBIN "gfx/sprites/old_medium_woman.2bpp" ; was $10840 +NurseSprite: ; 10900 (4:4900) + INCBIN "gfx/sprites/nurse.2bpp" ; was $10900 +CableClubWomanSprite: ; 109c0 (4:49c0) + INCBIN "gfx/sprites/cable_club_woman.2bpp" ; was $109c0 +MrMasterballSprite: ; 10a80 (4:4a80) + INCBIN "gfx/sprites/mr_masterball.2bpp" ; was $10a80 +LaprasGiverSprite: ; 10b40 (4:4b40) + INCBIN "gfx/sprites/lapras_giver.2bpp" ; was $10b40 +WardenSprite: ; 10c00 (4:4c00) + INCBIN "gfx/sprites/warden.2bpp" ; was $10c00 +SsCaptainSprite: ; 10cc0 (4:4cc0) + INCBIN "gfx/sprites/ss_captain.2bpp" ; was $10cc0 +Fisher2Sprite: ; 10d80 (4:4d80) + INCBIN "gfx/sprites/fisher2.2bpp" ; was $10d80 +BlackbeltSprite: ; 10f00 (4:4f00) + INCBIN "gfx/sprites/blackbelt.2bpp" ; was $10f00 +GuardSprite: ; 11080 (4:5080) + INCBIN "gfx/sprites/guard.2bpp" ; was $11080 +BallSprite: ; 11140 (4:5140) + INCBIN "gfx/sprites/ball.2bpp" ; was $11140 +OmanyteSprite: ; 11180 (4:5180) + INCBIN "gfx/sprites/omanyte.2bpp" ; was $11180 +BoulderSprite: ; 111c0 (4:51c0) + INCBIN "gfx/sprites/boulder.2bpp" ; was $111c0 +PaperSheetSprite: ; 11200 (4:5200) + INCBIN "gfx/sprites/paper_sheet.2bpp" ; was $11200 +BookMapDexSprite: ; 11240 (4:5240) + INCBIN "gfx/sprites/book_map_dex.2bpp" ; was $11240 +ClipboardSprite: ; 11280 (4:5280) + INCBIN "gfx/sprites/clipboard.2bpp" ; was $11280 +SnorlaxSprite: ; 112c0 (4:52c0) + INCBIN "gfx/sprites/snorlax.2bpp" ; was $112c0 +OldAmberSprite: ; 11300 (4:5300) + INCBIN "gfx/sprites/old_amber.2bpp" ; was $11300 +LyingOldManSprite: ; 11340 (4:5340) + INCBIN "gfx/sprites/lying_old_man.2bpp" ; was $11340 -OaksLabText23: ; 1d3e1 (7:53e1) - TX_FAR _OaksLabText23 - db "@" +PokemonLogoGraphics: ; 11380 (4:5380) + INCBIN "gfx/pokemon_logo.w128.2bpp" -OaksLabText24: ; 1d3e6 (7:53e6) - TX_FAR _OaksLabText24 - db "@" +FontGraphics: ; 11a80 (4:5a80) + INCBIN "gfx/font.w128.1bpp" -OaksLabText25: ; 1d3eb (7:53eb) - TX_FAR _OaksLabText25 - db $11, "@" +ABTiles: ; 11e80 (4:5e80) + INCBIN "gfx/AB.2bpp" -OaksLabText26: ; 1d3f1 (7:53f1) - TX_FAR _OaksLabText26 - db "@" +HpBarAndStatusGraphics: ; 11ea0 (4:5ea0) + INCBIN "gfx/hp_bar_and_status.2bpp" -OaksLabText27: ; 1d3f6 (7:53f6) - TX_FAR _OaksLabText27 - db "@" +BattleHudTiles1: ; 12080 (4:6080) + INCBIN "gfx/battle_hud1.1bpp" -OaksLabText38: ; 1d3fb (7:53fb) -OaksLabText37: ; 1d3fb (7:53fb) -OaksLabText11: ; 1d3fb (7:53fb) -OaksLabText10: ; 1d3fb (7:53fb) - db $08 ; asm - ld hl, UnnamedText_1d405 - call PrintText - jp TextScriptEnd +BattleHudTiles2: ; 12098 (4:6098) + INCBIN "gfx/battle_hud2.1bpp" -UnnamedText_1d405: ; 1d405 (7:5405) - TX_FAR _UnnamedText_1d405 - db "@" +BattleHudTiles3: ; 120b0 (4:60b0) + INCBIN "gfx/battle_hud3.1bpp" -OaksLabObject: ; 0x1d40a (size=88) - db $3 ; border tile +NintendoCopyrightLogoGraphics: ; 120c8 (4:60c8) + INCBIN "gfx/copyright.h8.2bpp" - db $2 ; warps - db $b, $4, $2, $ff - db $b, $5, $2, $ff +GamefreakLogoGraphics: ; 121f8 (4:61f8) + INCBIN "gfx/gamefreak.h8.2bpp" - db $0 ; signs +TextBoxGraphics: ; 12288 (4:6288) + INCBIN "gfx/text_box.2bpp" - db $b ; people - db SPRITE_BLUE, $3 + 4, $4 + 4, $ff, $ff, $41, SONY1 + $C8, $1 ; trainer - db SPRITE_BALL, $3 + 4, $6 + 4, $ff, $ff, $2 ; person - db SPRITE_BALL, $3 + 4, $7 + 4, $ff, $ff, $3 ; person - db SPRITE_BALL, $3 + 4, $8 + 4, $ff, $ff, $4 ; person - db SPRITE_OAK, $2 + 4, $5 + 4, $ff, $d0, $5 ; person - db SPRITE_BOOK_MAP_DEX, $1 + 4, $2 + 4, $ff, $ff, $6 ; person - db SPRITE_BOOK_MAP_DEX, $1 + 4, $3 + 4, $ff, $ff, $7 ; person - db SPRITE_OAK, $a + 4, $5 + 4, $ff, $d1, $8 ; person - db SPRITE_GIRL, $9 + 4, $1 + 4, $fe, $1, $9 ; person - db SPRITE_OAK_AIDE, $a + 4, $2 + 4, $ff, $ff, $a ; person - db SPRITE_OAK_AIDE, $a + 4, $8 + 4, $ff, $ff, $b ; person +PokedexTileGraphics: ; 12488 (4:6488) + INCBIN "gfx/pokedex.2bpp" - ; warp-to - EVENT_DISP OAKS_LAB_WIDTH, $b, $4 - EVENT_DISP OAKS_LAB_WIDTH, $b, $5 +WorldMapTileGraphics: ; 125a8 (4:65a8) + INCBIN "gfx/town_map.2bpp" -ViridianMart_h: ; 0x1d462 to 0x1d46e (12 bytes) (bank=7) (id=42) - db MART ; tileset - db VIRIDIAN_MART_HEIGHT, VIRIDIAN_MART_WIDTH ; dimensions (y, x) - dw ViridianMartBlocks, ViridianMartTextPointers, ViridianMartScript ; blocks, texts, scripts - db $00 ; connections - dw ViridianMartObject ; objects +PlayerCharacterTitleGraphics: ; 126a8 (4:66a8) + INCBIN "gfx/player_title.2bpp" -ViridianMartScript: ; 1d46e (7:546e) - call ViridianMartScript_1d47d - call EnableAutoTextBoxDrawing - ld hl, ViridianMartScriptPointers - ld a, [W_VIRIDIANMARKETCURSCRIPT] - jp CallFunctionInTable +Func_128d8: ; 128d8 (4:68d8) + ld a, [W_YCOORD] ; $d361 + ld b, a + ld a, [W_CURMAPHEIGHT] ; $d368 + call Func_128ea + ret z + ld a, [W_XCOORD] ; $d362 + ld b, a + ld a, [W_CURMAPWIDTH] ; $d369 -ViridianMartScript_1d47d: ; 1d47d (7:547d) - ld a, [$d74e] - bit 0, a - jr nz, .asm_1d489 ; 0x1d482 $5 - ld hl, ViridianMartTextPointers ; $54e0 - jr .asm_1d48c ; 0x1d487 $3 -.asm_1d489 - ld hl, ViridianMartTextPointers + $a ; $54ea ; starts at ViridianMartText6 -.asm_1d48c - ld a, l - ld [W_MAPTEXTPTR], a - ld a, h - ld [W_MAPTEXTPTR+1], a +Func_128ea: ; 128ea (4:68ea) + add a + cp b + ret z + inc b ret -ViridianMartScriptPointers: ; 1d495 (7:5495) - dw ViridianMartScript0 - dw ViridianMartScript1 - dw ViridianMartScript2 - -ViridianMartScript0: ; 1d49b (7:549b) - call UpdateSprites - ld a, $4 - ld [$ff8c], a - call DisplayTextID - ld hl, $ccd3 - ld de, RLEMovement1d4bb - call DecodeRLEList - dec a - ld [$cd38], a - call Func_3486 +Func_128ef: ; 128ef (4:68ef) + call Load16BitRegisters ld a, $1 - ld [W_VIRIDIANMARKETCURSCRIPT], a - ret - -RLEMovement1d4bb: ; 1d4bb (7:54bb) - db $20, $01 - db $40, $02 - db $ff + jr asm_128fb -ViridianMartScript1: ; 1d4c0 (7:54c0) - ld a, [$cd38] - and a - ret nz - call Delay3 - ld a, $5 - ld [$ff8c], a - call DisplayTextID - ld bc, (OAKS_PARCEL << 8) + 1 - call GiveItem - ld hl, $d74e - set 1, [hl] +Func_128f6: ; 128f6 (4:68f6) + call Load16BitRegisters ld a, $2 - ld [W_VIRIDIANMARKETCURSCRIPT], a - ; fallthrough -ViridianMartScript2: ; 1d4df (7:54df) - ret - -ViridianMartTextPointers: ; 1d4e0 (7:54e0) - dw ViridianMartText1 - dw ViridianMartText2 - dw ViridianMartText3 - dw ViridianMartText4 - dw ViridianMartText5 - dw ViridianMartText6 - dw ViridianMartText2 - dw ViridianMartText3 - -ViridianMartText1: ; 1d4f0 (7:54f0) - TX_FAR _ViridianMartText1 - db "@" - -ViridianMartText4: ; 1d4f5 (7:54f5) - TX_FAR _ViridianMartText4 - db "@" +asm_128fb: ; 128fb (4:68fb) + ld [wListMenuID], a ; $cf94 + push hl + ld a, [$cf99] + ld b, a + ld a, [$cf9a] + ld c, a + or b + jr nz, .asm_12913 + xor a + ld c, a + ld e, a + ld a, $6 + ld d, a + jp Func_12924 +.asm_12913 + ld a, [$cfba] + ld d, a + ld a, [$cfbb] + ld e, a + ld a, $26 + call Predef ; indirect jump to Func_f9dc (f9dc (3:79dc)) + ld a, $6 + ld d, a + ld c, a -ViridianMartText5: ; 1d4fa (7:54fa) - TX_FAR ViridianMartParcelQuestText - db $11 - db "@" +Func_12924: ; 12924 (4:6924) + pop hl + push de + push hl + push hl + call DrawHPBar + pop hl + ld a, [$fff6] + bit 0, a + jr z, .asm_12937 + ld bc, $9 + jr .asm_1293a +.asm_12937 + ld bc, $15 +.asm_1293a + add hl, bc + ld de, $cf99 + ld bc, $203 + call PrintNumber + ld a, "/" + ld [hli], a + ld de, $cfba + ld bc, $203 + call PrintNumber + pop hl + pop de + ret -ViridianMartText2: ; 1d500 (7:5500) - TX_FAR _ViridianMartText2 - db "@" +; Predef 0x37 +StatusScreen: ; 12953 (4:6953) + call LoadMonData + ld a, [$cc49] + cp $2 ; 2 means we're in a PC box + jr c, .DontRecalculate ; 0x1295b $14 + ld a, [$cf9b] + ld [$cfb9], a + ld [$d127], a + ld hl, $cfa8 + ld de, $cfba + ld b, $1 + call CalcStats ; Recalculate stats +.DontRecalculate + ld hl, $d72c + set 1, [hl] + ld a, $33 + ld [$ff24], a ; Reduce the volume + call GBPalWhiteOutWithDelay3 + call ClearScreen + call UpdateSprites ; move sprites (?) + call LoadHpBarAndStatusTilePatterns + ld de, BattleHudTiles1 ; $6080 ; source + ld hl, $96d0 ; dest + ld bc, (BANK(BattleHudTiles1) << 8) + $03 ; bank bytes/8 + call CopyVideoDataDouble ; ·│ :L and halfarrow line end + ld de, BattleHudTiles2 ; $6098 + ld hl, $9780 + ld bc, (BANK(BattleHudTiles2) << 8) + $01 + call CopyVideoDataDouble ; │ + ld de, BattleHudTiles3 ; $60b0 + ld hl, $9760 + ld bc, (BANK(BattleHudTiles3) << 8) + $02 + call CopyVideoDataDouble ; ─┘ + ld de, PTile + ld hl, $9720 + ld bc,(BANK(PTile) << 8 | $01) + call CopyVideoDataDouble ; P (for PP), inline + ld a, [$ffd7] + push af + xor a + ld [$ffd7], a + FuncCoord 19,1 + ld hl, Coord + ld bc, $060a + call DrawLineBox ; Draws the box around name, HP and status + ld de, $fffa + add hl, de + ld [hl], $f2 ; . after No ("." is a different one) + dec hl + ld [hl], "№" + FuncCoord 19,9 + ld hl, Coord + ld bc, $0806 + call DrawLineBox ; Draws the box around types, ID No. and OT + FuncCoord 10,9 + ld hl, Coord + ld de, Type1Text + call PlaceString ; "TYPE1/" + FuncCoord 11,3 + ld hl, Coord + PREDEF DrawHPBarPredef ; predef $5f + ld hl, $cf25 + call Func_3df9 + ld b, $3 + call GoPAL_SET ; SGB palette + FuncCoord 16,6 + ld hl, Coord + ld de, $cf9c + call PrintStatusCondition + jr nz, .StatusWritten ; 0x129fc $9 + FuncCoord 16,6 + ld hl, Coord + ld de, OKText + call PlaceString ; "OK" +.StatusWritten + FuncCoord 9,6 + ld hl, Coord + ld de, StatusText + call PlaceString ; "STATUS/" + FuncCoord 14,2 + ld hl, Coord + call PrintLevel ; Pokémon level + ld a, [$d0b8] + ld [$d11e], a + ld [$d0b5], a + ld a, $3a + call Predef + FuncCoord 3,7 + ld hl, Coord + ld de, $d11e + ld bc, $8103 ; Zero-padded, 3 + call PrintNumber ; Pokémon no. + FuncCoord 11,10 + ld hl, Coord + ld a, $4b + call Predef ; Prints the type (?) + ld hl, NamePointers2 ; $6a9d + call .unk_12a7e + ld d, h + ld e, l + FuncCoord 9,1 + ld hl, Coord + call PlaceString ; Pokémon name + ld hl, OTPointers ; $6a95 + call .unk_12a7e + ld d, h + ld e, l + FuncCoord 12,16 + ld hl, Coord + call PlaceString ; OT + FuncCoord 12,14 + ld hl, Coord + ld de, $cfa4 + ld bc, $8205 ; 5 + call PrintNumber ; ID Number + ld d, $0 + call PrintStatsBox + call Delay3 + call GBPalNormal + FuncCoord 1, 0 ; $c3a1 + ld hl, Coord + call LoadFlippedFrontSpriteByMonIndex ; draw Pokémon picture + ld a, [$cf91] + call PlayCry ; play Pokémon cry + call WaitForTextScrollButtonPress ; wait for button + pop af + ld [$ffd7], a + ret +.unk_12a7e ; 0x12a7e ; I don't know what this does, iterates over pointers? + ld a, [$cc49] + add a + ld c, a + ld b, $0 + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [$cc49] + cp $3 + ret z + ld a, [wWhichPokemon] + jp SkipFixedLengthTextEntries -ViridianMartText3: ; 1d505 (7:5505) - TX_FAR _ViridianMartText3 - db "@" +OTPointers: ; 12a95 (4:6a95) + dw W_PARTYMON1OT + dw W_ENEMYMON1OT + dw W_BOXMON1OT + dw W_DAYCAREMONOT -ViridianMartObject: ; 0x1d50a (size=38) - db $0 ; border tile +NamePointers2: ; 12a9d (4:6a9d) + dw W_PARTYMON1NAME + dw W_ENEMYMON1NAME + dw W_BOXMON1NAME + dw W_DAYCAREMONNAME - db $2 ; warps - db $7, $3, $1, $ff - db $7, $4, $1, $ff +Type1Text: ; 12aa5 (4:6aa5) + db "TYPE1/", $4e - db $0 ; signs +Type2Text: ; 12aac (4:6aac) + db "TYPE2/", $4e - db $3 ; people - db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $1 ; person - db SPRITE_BUG_CATCHER, $5 + 4, $5 + 4, $fe, $1, $2 ; person - db SPRITE_BLACK_HAIR_BOY_1, $3 + 4, $3 + 4, $ff, $ff, $3 ; person +IDNoText: ; 12ab3 (4:6ab3) + db $73, "№", "/", $4e - ; warp-to - EVENT_DISP VIRIDIAN_MART_WIDTH, $7, $3 - EVENT_DISP VIRIDIAN_MART_WIDTH, $7, $4 +OTText: ; 12ab7 (4:6ab7) + db "OT/", $4e, "@" -ViridianMartBlocks: ; 1d530 (7:5530) - INCBIN "maps/viridianmart.blk" +StatusText: ; 12abc (4:6abc) + db "STATUS/@" -School_h: ; 0x1d540 to 0x1d54c (12 bytes) (bank=7) (id=43) - db HOUSE ; tileset - db VIRIDIAN_SCHOOL_HEIGHT, VIRIDIAN_SCHOOL_WIDTH ; dimensions (y, x) - dw SchoolBlocks, SchoolTextPointers, SchoolScript ; blocks, texts, scripts - db $00 ; connections - dw SchoolObject ; objects +OKText: ; 12ac4 (4:6ac4) + db "OK@" -SchoolScript: ; 1d54c (7:554c) - jp EnableAutoTextBoxDrawing +; Draws a line starting from hl high b and wide c +DrawLineBox ; 0x12ac7 + ld de, $0014 ; New line +.PrintVerticalLine + ld [hl], $78 ; │ + add hl, de + dec b + jr nz, .PrintVerticalLine ; 0x12ace $fa + ld [hl], $77 ; ┘ + dec hl +.PrintHorizLine + ld [hl], $76 ; ─ + dec hl + dec c + jr nz, .PrintHorizLine ; 0x12ad7 $fa + ld [hl], $6f ; ← (halfarrow ending) + ret -SchoolTextPointers: ; 1d54f (7:554f) - dw SchoolText1 - dw SchoolText2 +PTile: ; 12adc (4:6adc) ; This is a single 1bpp "P" tile + INCBIN "gfx/p_tile.1bpp" -SchoolText1: ; 1d553 (7:5553) - TX_FAR _SchoolText1 - db "@" +PrintStatsBox: ; 12ae4 (4:6ae4) + ld a, d + and a ; a is 0 from the status screen + jr nz, .DifferentBox ; 0x12ae6 $12 + FuncCoord 0,8 + ld hl, Coord + ld b, $8 + ld c, $8 + call TextBoxBorder ; Draws the box + FuncCoord 1,9 ; Start printing stats from here + ld hl, Coord + ld bc, $0019 ; Number offset + jr .PrintStats ; 0x12af8 $10 +.DifferentBox + FuncCoord 9,2 + ld hl, Coord + ld b, $8 + ld c, $9 + call TextBoxBorder + FuncCoord 11, 3 ; $c3e7 + ld hl, Coord + ld bc, $0018 +.PrintStats + push bc + push hl + ld de, StatsText + call PlaceString + pop hl + pop bc + add hl, bc + ld de, $cfbc + ld bc, $0203 ; three digits + call PrintStat + ld de, $cfbe + call PrintStat + ld de, $cfc0 + call PrintStat + ld de, $cfc2 + jp PrintNumber +PrintStat + push hl + call PrintNumber + pop hl + ld de, $0028 + add hl, de + ret -SchoolText2: ; 1d558 (7:5558) - TX_FAR _SchoolText2 - db "@" +StatsText: ; 12b3a (4:6b3a) + db "ATTACK" + next "DEFENSE" + next "SPEED" + next "SPECIAL@" -SchoolObject: ; 0x1d55d (size=32) - db $a ; border tile +StatusScreen2: ; 12b57 (4:6b57) + ld a, [$ffd7] + push af + xor a + ld [$ffd7], a + ld [$ffba], a + ld bc, $0005 + ld hl, $d0dc + call FillMemory + ld hl, $cfa0 + ld de, $d0dc + ld bc, $0004 + call CopyData + ld hl, Func_39b87 + ld b, BANK(Func_39b87) + call Bankswitch + FuncCoord 9,2 + ld hl, Coord + ld bc, $050a + call ClearScreenArea ; Clear under name + FuncCoord 19, 3 ; $c3ef + ld hl, Coord + ld [hl], $78 + FuncCoord 0,8 + ld hl, Coord + ld b, $8 + ld c, $12 + call TextBoxBorder ; Draw move container + FuncCoord 2,9 + ld hl, Coord + ld de, $d0e1 + call PlaceString ; Print moves + ld a, [$cd6c] + inc a + ld c, a + ld a, $4 + sub c + ld b, a ; Number of moves ? + FuncCoord 11,10 + ld hl, Coord + ld de, $0028 + ld a, $72 + call Func_12ccb ; Print "PP" + ld a, b + and a + jr z, .InitPP ; 0x12bb3 $6 + ld c, a + ld a, "-" + call Func_12ccb ; Fill the rest with -- +.InitPP ; 12bbb + ld hl, $cfa0 + FuncCoord 14,10 + ld de, Coord + ld b, $0 +.PrintPP ; 12bc3 + ld a, [hli] + and a + jr z, .PPDone ; 0x12bc5 $4a + push bc + push hl + push de + ld hl, wCurrentMenuItem + ld a, [hl] + push af + ld a, b + ld [hl], a + push hl + ld hl, GetMaxPP + ld b, BANK(GetMaxPP) + call Bankswitch + pop hl + pop af + ld [hl], a + pop de + pop hl + push hl + ld bc, $0014 + add hl, bc + ld a, [hl] + and $3f + ld [$cd71], a + ld h, d + ld l, e + push hl + ld de, $cd71 + ld bc, $0102 + call PrintNumber + ld a, "/" + ld [hli], a + ld de, $d11e + ld bc, $0102 + call PrintNumber + pop hl + ld de, $0028 + add hl, de + ld d, h + ld e, l + pop hl + pop bc + inc b + ld a, b + cp $4 + jr nz, .PrintPP ; 0x12c0f $b2 +.PPDone + FuncCoord 9,3 + ld hl, Coord + ld de, EXPPointsText + call PlaceString + ld a, [$cfb9] ; level + push af + cp 100 + jr z, .Level100 ; 0x12c20 $4 + inc a + ld [$cfb9], a ; Increase temporarily if not 100 +.Level100 + FuncCoord 14,6 + ld hl, Coord + ld [hl], $70 ; 1-tile "to" + inc hl + inc hl + call PrintLevel + pop af + ld [$cfb9], a + ld de, $cfa6 + FuncCoord 12,4 + ld hl, Coord + ld bc, $0307 + call PrintNumber ; exp + call .asm_12c86 + ld de, $cfa6 + FuncCoord 7,6 + ld hl, Coord + ld bc, $0307 + call PrintNumber + FuncCoord 9,0 + ld hl, Coord + call Func_12cc3 + FuncCoord 9,1 + ld hl, Coord + call Func_12cc3 + ld a, [$d0b8] + ld [$d11e], a + call GetMonName + FuncCoord 9,1 + ld hl, Coord + call PlaceString + ld a, $1 + ld [$ffba], a + call Delay3 + call WaitForTextScrollButtonPress ; wait for button + pop af + ld [$ffd7], a + ld hl, $d72c + res 1, [hl] + ld a, $77 + ld [$ff24], a + call GBPalWhiteOut + jp ClearScreen +.asm_12c86 ; This does some magic with lvl/exp? + ld a, [$cfb9] ; Load level + cp $64 + jr z, .asm_12ca7 ; 0x12c8b $1a ; If 100 + inc a + ld d, a + ld hl, CalcExperience + ld b, BANK(CalcExperience) + call Bankswitch + ld hl, $cfa8 + ld a, [$ff98] + sub [hl] + ld [hld], a + ld a, [$ff97] + sbc [hl] + ld [hld], a + ld a, [$ff96] + sbc [hl] + ld [hld], a + ret +.asm_12ca7 + ld hl, $cfa6 + xor a + ld [hli], a + ld [hli], a + ld [hl], a + ret - db $2 ; warps - db $7, $2, $2, $ff - db $7, $3, $2, $ff +EXPPointsText: ; 12caf (4:6caf) + db "EXP POINTS", $4e - db $0 ; signs +LevelUpText: ; 12cba (4:6cba) + db "LEVEL UP@" - db $2 ; people - db SPRITE_BRUNETTE_GIRL, $5 + 4, $3 + 4, $ff, $d1, $1 ; person - db SPRITE_LASS, $1 + 4, $4 + 4, $ff, $d0, $2 ; person +Func_12cc3: ; 12cc3 (4:6cc3) + ld bc, $a + ld a, $7f + jp FillMemory - ; warp-to - EVENT_DISP VIRIDIAN_SCHOOL_WIDTH, $7, $2 - EVENT_DISP VIRIDIAN_SCHOOL_WIDTH, $7, $3 +Func_12ccb: ; 12ccb (4:6ccb) + ld [hli], a + ld [hld], a + add hl, de + dec c + jr nz, Func_12ccb + ret -ViridianHouse_h: ; 0x1d57d to 0x1d589 (12 bytes) (bank=7) (id=44) - db HOUSE ; tileset - db VIRIDIAN_HOUSE_HEIGHT, VIRIDIAN_HOUSE_WIDTH ; dimensions (y, x) - dw ViridianHouseBlocks, ViridianHouseTextPointers, ViridianHouseScript ; blocks, texts, scripts - db $00 ; connections - dw ViridianHouseObject ; objects +; [$D07D] = menu type / message ID +; if less than $F0, it is a menu type +; menu types: +; 00: normal pokemon menu (e.g. Start menu) +; 01: use healing item on pokemon menu +; 02: in-battle switch pokemon menu +; 03: learn TM/HM menu +; 04: swap pokemon positions menu +; 05: use evolution stone on pokemon menu +; otherwise, it is a message ID +; f0: poison healed +; f1: burn healed +; f2: freeze healed +; f3: sleep healed +; f4: paralysis healed +; f5: HP healed +; f6: health returned +; f7: revitalized +; f8: leveled up +DrawPartyMenu_: ; 12cd2 (4:6cd2) + xor a + ld [H_AUTOBGTRANSFERENABLED],a + call ClearScreen + call UpdateSprites ; move sprites + ld b, BANK(Func_71791) + ld hl, Func_71791 + call Bankswitch ; load pokemon icon graphics - db $0 +RedrawPartyMenu_: ; 12ce3 (4:6ce3) + ld a,[$D07D] + cp a,$04 + jp z,.printMessage + call ErasePartyMenuCursors + ld b, BANK(SendBlkPacket_PartyMenu) + ld hl, SendBlkPacket_PartyMenu + call Bankswitch ; loads some data to $cf2e + FuncCoord 3,0 + ld hl,Coord + ld de,W_PARTYMON1 + xor a + ld c,a + ld [$FF8C],a ; loop counter + ld [$CF2D],a +.loop + ld a,[de] + cp a,$FF ; reached the terminator? + jp z,.afterDrawingMonEntries + push bc + push de + push hl + ld a,c + push hl + ld hl,W_PARTYMON1NAME + call GetPartyMonName + pop hl + call PlaceString ; print the pokemon's name + ld b, BANK(Func_71868) + ld hl, Func_71868 + call Bankswitch ; place the appropriate pokemon icon + ld a,[$FF8C] ; loop counter + ld [wWhichPokemon],a + inc a + ld [$FF8C],a + call LoadMonData + pop hl + push hl + ld a,[$CC35] + and a ; is the player swapping pokemon positions? + jr z,.skipUnfilledRightArrow +; if the player is swapping pokemon positions + dec a + ld b,a + ld a,[wWhichPokemon] + cp b ; is the player swapping the current pokemon in the list? + jr nz,.skipUnfilledRightArrow +; the player is swapping the current pokemon in the list + dec hl + dec hl + dec hl + ld a,$EC ; unfilled right arrow menu cursor + ld [hli],a ; place the cursor + inc hl + inc hl +.skipUnfilledRightArrow + ld a,[$D07D] ; menu type + cp a,$03 + jr z,.teachMoveMenu + cp a,$05 + jr z,.evolutionStoneMenu + push hl + ld bc,14 ; 14 columns to the right + add hl,bc + ld de,$CF9C + call PrintStatusCondition + pop hl + push hl + ld bc,20 + 1 ; down 1 row and right 1 column + ld a,[$FFF6] + set 0,a + ld [$FFF6],a + add hl,bc + ld a,$60 + call Predef ; draw HP bar and prints current / max HP + ld a,[$FFF6] + res 0,a + ld [$FFF6],a + call Func_12ec7 ; color the HP bar (on SGB) + pop hl + jr .printLevel +.teachMoveMenu + push hl + ld a,$43 + call Predef ; check if the pokemon can learn the move + pop hl + ld de,.ableToLearnMoveText + ld a,c + and a + jr nz,.placeMoveLearnabilityString + ld de,.notAbleToLearnMoveText +.placeMoveLearnabilityString + ld bc,20 + 9 ; down 1 row and right 9 columns + push hl + add hl,bc + call PlaceString + pop hl +.printLevel + ld bc,10 ; move 10 columns to the right + add hl,bc + call PrintLevel + pop hl + pop de + inc de + ld bc,2 * 20 + add hl,bc + pop bc + inc c + jp .loop +.ableToLearnMoveText + db "ABLE@" +.notAbleToLearnMoveText + db "NOT ABLE@" +.evolutionStoneMenu + push hl + ld hl,EvosMovesPointerTable + ld b,0 + ld a,[$CF98] ; pokemon ID + dec a + add a + rl b + ld c,a + add hl,bc + ld de,$CD6D + ld a,BANK(EvosMovesPointerTable) + ld bc,2 + call FarCopyData + ld hl,$CD6D + ld a,[hli] + ld h,[hl] + ld l,a + ld de,$CD6D + ld a,BANK(EvosMovesPointerTable) + ld bc,13 + call FarCopyData + ld hl,$CD6D + ld de,.notAbleToEvolveText +; loop through the pokemon's evolution entries +.checkEvolutionsLoop + ld a,[hli] + and a ; reached terminator? + jr z,.placeEvolutionStoneString ; if so, place the "NOT ABLE" string + inc hl + inc hl + cp a,EV_ITEM + jr nz,.checkEvolutionsLoop +; if it's a stone evolution entry + dec hl + dec hl + ld b,[hl] + ld a,[$D156] ; evolution stone item ID + inc hl + inc hl + inc hl + cp b ; does the player's stone match this evolution entry's stone? + jr nz,.checkEvolutionsLoop +; if it does match + ld de,.ableToEvolveText +.placeEvolutionStoneString + ld bc,20 + 9 ; down 1 row and right 9 columns + pop hl + push hl + add hl,bc + call PlaceString + pop hl + jr .printLevel +.ableToEvolveText + db "ABLE@" +.notAbleToEvolveText + db "NOT ABLE@" +.afterDrawingMonEntries + ld b,$0A + call GoPAL_SET +.printMessage + ld hl,$D730 + ld a,[hl] + push af + push hl + set 6,[hl] ; turn off letter printing delay + ld a,[$D07D] ; message ID + cp a,$F0 + jr nc,.printItemUseMessage + add a + ld hl,PartyMenuMessagePointers + ld b,0 + ld c,a + add hl,bc + ld a,[hli] + ld h,[hl] + ld l,a + call PrintText +.done + pop hl + pop af + ld [hl],a + ld a,1 + ld [H_AUTOBGTRANSFERENABLED],a + call Delay3 + jp GBPalNormal +.printItemUseMessage + and a,$0F + ld hl,PartyMenuItemUseMessagePointers + add a + ld c,a + ld b,0 + add hl,bc + ld a,[hli] + ld h,[hl] + ld l,a + push hl + ld a,[$CF06] + ld hl,W_PARTYMON1NAME + call GetPartyMonName + pop hl + call PrintText + jr .done -ViridianHouseScript: ; 1d58a (7:558a) - jp EnableAutoTextBoxDrawing +PartyMenuItemUseMessagePointers: ; 12e61 (4:6e61) + dw AntidoteText + dw BurnHealText + dw IceHealText + dw AwakeningText + dw ParlyzHealText + dw PotionText + dw FullHealText + dw ReviveText + dw RareCandyText -ViridianHouseTextPointers: ; 1d58d (7:558d) - dw ViridianHouseText1 - dw ViridianHouseText2 - dw ViridianHouseText3 - dw ViridianHouseText4 +PartyMenuMessagePointers: ; 12e73 (4:6e73) + dw PartyMenuNormalText + dw PartyMenuItemUseText + dw PartyMenuBattleText + dw PartyMenuUseTMText + dw PartyMenuSwapMonText + dw PartyMenuItemUseText -ViridianHouseText1: ; 1d595 (7:5595) - TX_FAR _ViridianHouseText1 +PartyMenuNormalText: ; 12e7f (4:6e7f) + TX_FAR _PartyMenuNormalText db "@" -ViridianHouseText2: ; 1d59a (7:559a) - TX_FAR _ViridianHouseText2 +PartyMenuItemUseText: ; 12e84 (4:6e84) + TX_FAR _PartyMenuItemUseText db "@" -ViridianHouseText3: ; 1d59f (7:559f) - db $08 ; asm - ld hl, UnnamedText_1d5b1 - call PrintText - ld a, SPEAROW - call PlayCry - call WaitForSoundToFinish - jp TextScriptEnd - -UnnamedText_1d5b1: ; 1d5b1 (7:55b1) - TX_FAR _UnnamedText_1d5b1 +PartyMenuBattleText: ; 12e89 (4:6e89) + TX_FAR _PartyMenuBattleText db "@" -ViridianHouseText4: ; 1d5b6 (7:55b6) - TX_FAR _ViridianHouseText4 +PartyMenuUseTMText: ; 12e8e (4:6e8e) + TX_FAR _PartyMenuUseTMText db "@" -ViridianHouseObject: ; 0x1d5bb (size=44) - db $a ; border tile - - db $2 ; warps - db $7, $2, $3, $ff - db $7, $3, $3, $ff - - db $0 ; signs - - db $4 ; people - db SPRITE_BALDING_GUY, $3 + 4, $5 + 4, $ff, $ff, $1 ; person - db SPRITE_LITTLE_GIRL, $4 + 4, $1 + 4, $fe, $1, $2 ; person - db SPRITE_BIRD, $5 + 4, $5 + 4, $fe, $2, $3 ; person - db SPRITE_CLIPBOARD, $0 + 4, $4 + 4, $ff, $ff, $4 ; person - - ; warp-to - EVENT_DISP VIRIDIAN_HOUSE_WIDTH, $7, $2 - EVENT_DISP VIRIDIAN_HOUSE_WIDTH, $7, $3 - -PewterHouse1_h: ; 0x1d5e7 to 0x1d5f3 (12 bytes) (bank=7) (id=55) - db HOUSE ; tileset - db PEWTER_HOUSE_1_HEIGHT, PEWTER_HOUSE_1_WIDTH ; dimensions (y, x) - dw PewterHouse1Blocks, PewterHouse1TextPointers, PewterHouse1Script ; blocks, texts, scripts - db $00 ; connections - dw PewterHouse1Object ; objects - -PewterHouse1Script: ; 1d5f3 (7:55f3) - jp EnableAutoTextBoxDrawing - -PewterHouse1TextPointers: ; 1d5f6 (7:55f6) - dw PewterHouse1Text1 - dw PewterHouse1Text2 - dw PewterHouse1Text3 - -PewterHouse1Text1: ; 1d5fc (7:55fc) - TX_FAR _PewterHouse1Text1 - db $08 ; asm - ld a, NIDORAN_M - call PlayCry - call WaitForSoundToFinish - jp TextScriptEnd - -PewterHouse1Text2: ; 1d60c (7:560c) - TX_FAR _PewterHouse1Text2 +PartyMenuSwapMonText: ; 12e93 (4:6e93) + TX_FAR _PartyMenuSwapMonText db "@" -PewterHouse1Text3: ; 1d611 (7:5611) - TX_FAR _PewterHouse1Text3 +PotionText: ; 12e98 (4:6e98) + TX_FAR _PotionText db "@" -PewterHouse1Object: ; 0x1d616 (size=38) - db $a ; border tile - - db $2 ; warps - db $7, $2, $3, $ff - db $7, $3, $3, $ff - - db $0 ; signs - - db $3 ; people - db SPRITE_SLOWBRO, $5 + 4, $4 + 4, $ff, $d2, $1 ; person - db SPRITE_YOUNG_BOY, $5 + 4, $3 + 4, $ff, $d3, $2 ; person - db SPRITE_FAT_BALD_GUY, $2 + 4, $1 + 4, $ff, $ff, $3 ; person - - ; warp-to - EVENT_DISP PEWTER_HOUSE_1_WIDTH, $7, $2 - EVENT_DISP PEWTER_HOUSE_1_WIDTH, $7, $3 - -PewterHouse2_h: ; 0x1d63c to 0x1d648 (12 bytes) (bank=7) (id=57) - db HOUSE ; tileset - db PEWTER_HOUSE_2_HEIGHT, PEWTER_HOUSE_2_WIDTH ; dimensions (y, x) - dw PewterHouse2Blocks, PewterHouse2TextPointers, PewterHouse2Script ; blocks, texts, scripts - db $00 ; connections - dw PewterHouse2Object ; objects - -PewterHouse2Script: ; 1d648 (7:5648) - jp EnableAutoTextBoxDrawing - -PewterHouse2TextPointers: ; 1d64b (7:564b) - dw PewterHouse2Text1 - dw PewterHouse2Text2 - -PewterHouse2Text1: ; 1d64f (7:564f) - TX_FAR _PewterHouse2Text1 +AntidoteText: ; 12e9d (4:6e9d) + TX_FAR _AntidoteText db "@" -PewterHouse2Text2: ; 1d654 (7:5654) - TX_FAR _PewterHouse2Text2 +ParlyzHealText: ; 12ea2 (4:6ea2) + TX_FAR _ParlyzHealText db "@" -PewterHouse2Object: ; 0x1d659 (size=32) - db $a ; border tile - - db $2 ; warps - db $7, $2, $5, $ff - db $7, $3, $5, $ff - - db $0 ; signs - - db $2 ; people - db SPRITE_GAMBLER, $3 + 4, $2 + 4, $ff, $d3, $1 ; person - db SPRITE_BUG_CATCHER, $5 + 4, $4 + 4, $ff, $ff, $2 ; person - - ; warp-to - EVENT_DISP PEWTER_HOUSE_2_WIDTH, $7, $2 - EVENT_DISP PEWTER_HOUSE_2_WIDTH, $7, $3 - -CeruleanHouseTrashed_h: ; 0x1d679 to 0x1d685 (12 bytes) (bank=7) (id=62) - db HOUSE ; tileset - db TRASHED_HOUSE_HEIGHT, TRASHED_HOUSE_WIDTH ; dimensions (y, x) - dw CeruleanHouseTrashedBlocks, CeruleanHouseTrashedTextPointers, CeruleanHouseTrashedScript ; blocks, texts, scripts - db $00 ; connections - dw CeruleanHouseTrashedObject ; objects - -CeruleanHouseTrashedScript: ; 1d685 (7:5685) - call EnableAutoTextBoxDrawing - ret - -CeruleanHouseTrashedTextPointers: ; 1d689 (7:5689) - dw CeruleanHouseTrashedText1 - dw CeruleanHouseTrashedText2 - dw CeruleanHouseTrashedText3 - -CeruleanHouseTrashedText1: ; 1d68f (7:568f) - db $08 ; asm - ld b, $e4 - ld a, $1c - call Predef - and b - jr z, .asm_f8734 ; 0x1d698 - ld hl, UnnamedText_1d6b0 - call PrintText - jr .asm_8dfe9 ; 0x1d6a0 -.asm_f8734 ; 0x1d6a2 - ld hl, UnnamedText_1d6ab - call PrintText -.asm_8dfe9 ; 0x1d6a8 - jp TextScriptEnd - -UnnamedText_1d6ab: ; 1d6ab (7:56ab) - TX_FAR _UnnamedText_1d6ab +BurnHealText: ; 12ea7 (4:6ea7) + TX_FAR _BurnHealText db "@" -UnnamedText_1d6b0: ; 1d6b0 (7:56b0) - TX_FAR _UnnamedText_1d6b0 +IceHealText: ; 12eac (4:6eac) + TX_FAR _IceHealText db "@" -CeruleanHouseTrashedText2: ; 1d6b5 (7:56b5) - TX_FAR _CeruleanHouseTrashedText2 +AwakeningText: ; 12eb1 (4:6eb1) + TX_FAR _AwakeningText db "@" -CeruleanHouseTrashedText3: ; 1d6ba (7:56ba) - TX_FAR _CeruleanHouseTrashedText3 +FullHealText: ; 12eb6 (4:6eb6) + TX_FAR _FullHealText db "@" -CeruleanHouseTrashedObject: ; 0x1d6bf (size=43) - db $a ; border tile - - db $3 ; warps - db $7, $2, $0, $ff - db $7, $3, $0, $ff - db $0, $3, $7, $ff - - db $1 ; signs - db $0, $3, $3 ; CeruleanHouseTrashedText3 - - db $2 ; people - db SPRITE_FISHER, $1 + 4, $2 + 4, $ff, $d0, $1 ; person - db SPRITE_GIRL, $6 + 4, $5 + 4, $fe, $2, $2 ; person - - ; warp-to - EVENT_DISP TRASHED_HOUSE_WIDTH, $7, $2 - EVENT_DISP TRASHED_HOUSE_WIDTH, $7, $3 - EVENT_DISP TRASHED_HOUSE_WIDTH, $0, $3 - -CeruleanHouse1_h: ; 0x1d6ea to 0x1d6f6 (12 bytes) (bank=7) (id=63) - db HOUSE ; tileset - db CERULEAN_HOUSE_1_HEIGHT, CERULEAN_HOUSE_1_WIDTH ; dimensions (y, x) - dw CeruleanHouse1Blocks, CeruleanHouse1TextPointers, CeruleanHouse1Script ; blocks, texts, scripts - db $00 ; connections - dw CeruleanHouse1Object ; objects - -CeruleanHouse1Script: ; 1d6f6 (7:56f6) - jp EnableAutoTextBoxDrawing - -CeruleanHouse1TextPointers: ; 1d6f9 (7:56f9) - dw CeruleanHouse1Text1 - dw CeruleanHouse1Text2 - -CeruleanHouse1Text1: ; 1d6fd (7:56fd) - TX_FAR _CeruleanHouse1Text1 +ReviveText: ; 12ebb (4:6ebb) + TX_FAR _ReviveText db "@" -CeruleanHouse1Text2: ; 1d702 (7:5702) - db $08 ; asm - ld a, $6 - ld [wWhichTrade], a - ld a, $54 - call Predef - jp TextScriptEnd - -CeruleanHouse1Object: ; 0x1d710 (size=32) - db $a ; border tile - - db $2 ; warps - db $7, $2, $1, $ff - db $7, $3, $1, $ff - - db $0 ; signs - - db $2 ; people - db SPRITE_OLD_MEDIUM_WOMAN, $4 + 4, $5 + 4, $ff, $d2, $1 ; person - db SPRITE_GAMBLER, $2 + 4, $1 + 4, $ff, $ff, $2 ; person +RareCandyText: ; 12ec0 (4:6ec0) + TX_FAR _RareCandyText + db $0B + db $06 + db "@" - ; warp-to - EVENT_DISP CERULEAN_HOUSE_1_WIDTH, $7, $2 - EVENT_DISP CERULEAN_HOUSE_1_WIDTH, $7, $3 +Func_12ec7: ; 12ec7 (4:6ec7) + ld hl, $cf1f + ld a, [$cf2d] + ld c, a + ld b, $0 + add hl, bc + call Func_3df9 + ld b, $fc + call GoPAL_SET + ld hl, $cf2d + inc [hl] + ret -BikeShop_h: ; 0x1d730 to 0x1d73c (12 bytes) (bank=7) (id=66) - db CLUB ; tileset - db BIKE_SHOP_HEIGHT, BIKE_SHOP_WIDTH ; dimensions (y, x) - dw BikeShopBlocks, BikeShopTextPointers, BikeShopScript ; blocks, texts, scripts - db $00 ; connections - dw BikeShopObject ; objects +RedPicFront: ; 12ede (4:6ede) + INCBIN "pic/trainer/red.pic" +ShrinkPic1: ; 12fe8 (4:6fe8) + INCBIN "pic/trainer/shrink1.pic" +ShrinkPic2: ; 13042 (4:7042) + INCBIN "pic/trainer/shrink2.pic" -BikeShopScript: ; 1d73c (7:573c) - jp EnableAutoTextBoxDrawing +Func_13074: ; 13074 (4:7074) + ld h, $c2 + ld a, [H_CURRENTSPRITEOFFSET] + add $8 + ld l, a + ld a, $7f + ld [hl], a + dec h + ld a, [H_CURRENTSPRITEOFFSET] + add $9 + ld l, a + ld a, [hld] + ld b, a + xor a + ld [hld], a + ld [hl], a + ld a, [H_CURRENTSPRITEOFFSET] + add $2 + ld l, a + ld a, [hl] + or b + ld [hld], a + ld a, $2 + ld [hl], a + ret -BikeShopTextPointers: ; 1d73f (7:573f) - dw BikeShopText1 - dw BikeShopText2 - dw BikeShopText3 +StartMenu_Pokedex: ; 13095 (4:7095) + ld a,$29 + call Predef + call LoadScreenTilesFromBuffer2 ; restore saved screen + call Delay3 + call LoadGBPal + call UpdateSprites + jp RedisplayStartMenu -BikeShopText1: ; 1d745 (7:5745) - db $08 ; asm - ld a, [$d75f] - bit 0, a - jr z, .asm_260d4 ; 0x1d74b - ld hl, UnnamedText_1d82f - call PrintText - jp .Done -.asm_260d4 ; 0x1d756 - ld b, BIKE_VOUCHER - call IsItemInBag - jr z, .asm_41190 ; 0x1d75b - ld hl, UnnamedText_1d81f - call PrintText - ld bc, (BICYCLE << 8) | 1 - call GiveItem - jr nc, .BagFull - ld a, BIKE_VOUCHER - ldh [$db], a - ld b, BANK(RemoveItemByID) - ld hl, RemoveItemByID - call Bankswitch - ld hl, $d75f - set 0, [hl] - ld hl, UnnamedText_1d824 - call PrintText - jr .Done -.BagFull - ld hl, UnnamedText_1d834 - call PrintText - jr .Done -.asm_41190 ; 0x1d78c - ld hl, UnnamedText_1d810 +StartMenu_Pokemon: ; 130a9 (4:70a9) + ld a,[W_NUMINPARTY] + and a + jp z,RedisplayStartMenu + xor a + ld [$cc35],a + ld [$d07d],a + ld [$cfcb],a + call DisplayPartyMenu + jr .checkIfPokemonChosen +.loop + xor a + ld [$cc35],a + ld [$d07d],a + call GoBackToPartyMenu +.checkIfPokemonChosen + jr nc,.chosePokemon +.exitMenu + call GBPalWhiteOutWithDelay3 + call Func_3dbe + call LoadGBPal + jp RedisplayStartMenu +.chosePokemon + call SaveScreenTilesToBuffer1 ; save screen + ld a,$04 + ld [$d125],a + call DisplayTextBoxID ; display pokemon menu options + ld hl,$cd3d + ld bc,$020c ; max menu item ID, top menu item Y + ld e,5 +.adjustMenuVariablesLoop + dec e + jr z,.storeMenuVariables + ld a,[hli] + and a + jr z,.storeMenuVariables + inc b + dec c + dec c + jr .adjustMenuVariablesLoop +.storeMenuVariables + ld hl,wTopMenuItemY + ld a,c + ld [hli],a ; top menu item Y + ld a,[$fff7] + ld [hli],a ; top menu item X + xor a + ld [hli],a ; current menu item ID + inc hl + ld a,b + ld [hli],a ; max menu item ID + ld a,%00000011 ; A button, B button + ld [hli],a ; menu watched keys + xor a + ld [hl],a + call HandleMenuInput + push af + call LoadScreenTilesFromBuffer1 ; restore saved screen + pop af + bit 1,a ; was the B button pressed? + jp nz,.loop +; if the B button wasn't pressed + ld a,[wMaxMenuItem] + ld b,a + ld a,[wCurrentMenuItem] ; menu selection + cp b + jp z,.exitMenu ; if the player chose Cancel + dec b + cp b + jr z,.choseSwitch + dec b + cp b + jp z,.choseStats + ld c,a + ld b,0 + ld hl,$cd3d + add hl,bc + jp .choseOutOfBattleMove +.choseSwitch + ld a,[W_NUMINPARTY] + cp a,2 ; is there more than one pokemon in the party? + jp c,StartMenu_Pokemon ; if not, no switching + call Func_13653 + ld a,$04 ; swap pokemon positions menu + ld [$d07d],a + call GoBackToPartyMenu + jp .checkIfPokemonChosen +.choseStats + call CleanLCD_OAM + xor a + ld [$cc49],a + ld a,$36 + call Predef + ld a,$37 + call Predef + call ReloadMapData + jp StartMenu_Pokemon +.choseOutOfBattleMove + push hl + ld a,[wWhichPokemon] + ld hl,W_PARTYMON1NAME + call GetPartyMonName + pop hl + ld a,[hl] + dec a + add a + ld b,0 + ld c,a + ld hl,.outOfBattleMovePointers + add hl,bc + ld a,[hli] + ld h,[hl] + ld l,a + ld a,[W_OBTAINEDBADGES] ; badges obtained + jp [hl] +.outOfBattleMovePointers + dw .cut + dw .fly + dw .surf + dw .surf + dw .strength + dw .flash + dw .dig + dw .teleport + dw .softboiled +.fly + bit 2,a ; does the player have the Thunder Badge? + jp z,.newBadgeRequired + call CheckIfInOutsideMap + jr z,.canFly + ld a,[wWhichPokemon] + ld hl,W_PARTYMON1NAME + call GetPartyMonName + ld hl,.cannotFlyHereText call PrintText + jp .loop +.canFly + call ChooseFlyDestination + ld a,[$d732] + bit 3,a ; did the player decide to fly? + jp nz,.goBackToMap + call LoadFontTilePatterns + ld hl,$d72e + set 1,[hl] + jp StartMenu_Pokemon +.cut + bit 1,a ; does the player have the Cascade Badge? + jp z,.newBadgeRequired + ld a,$3c + call Predef + ld a,[$cd6a] + and a + jp z,.loop + jp CloseTextDisplay +.surf + bit 4,a ; does the player have the Soul Badge? + jp z,.newBadgeRequired + ld b, BANK(Func_cdc0) + ld hl, Func_cdc0 + call Bankswitch + ld hl,$d728 + bit 1,[hl] + res 1,[hl] + jp z,.loop + ld a,SURFBOARD + ld [$cf91],a + ld [$d152],a + call UseItem + ld a,[$cd6a] + and a + jp z,.loop + call GBPalWhiteOutWithDelay3 + jp .goBackToMap +.strength + bit 3,a ; does the player have the Rainbow Badge? + jp z,.newBadgeRequired + ld a,$5b + call Predef + call GBPalWhiteOutWithDelay3 + jp .goBackToMap +.flash + bit 0,a ; does the player have the Boulder Badge? + jp z,.newBadgeRequired xor a - ld [$cc26], a - ld [$cc2a], a - ld a, $3 - ld [$cc29], a - ld a, $1 - ld [$cc28], a - ld a, $2 - ld [$cc24], a - ld a, $1 - ld [$cc25], a - ld hl, $d730 - set 6, [hl] - ld hl, wTileMap - ld b, $4 - ld c, $f - call TextBoxBorder - call UpdateSprites - FuncCoord 2, 2 ; $c3ca - ld hl, Coord - ld de, BikeShopMenuText - call PlaceString - FuncCoord 8, 3 ; $c3e4 - ld hl, Coord - ld de, BikeShopMenuPrice - call PlaceString - ld hl, UnnamedText_1d815 + ld [$d35d],a + ld hl,.flashLightsAreaText call PrintText - call HandleMenuInput - bit 1, a - jr nz, .asm_b7579 ; 0x1d7dc - ld hl, $d730 - res 6, [hl] - ld a, [$cc26] + call GBPalWhiteOutWithDelay3 + jp .goBackToMap +.flashLightsAreaText + TX_FAR _FlashLightsAreaText + db "@" +.dig + ld a,ESCAPE_ROPE + ld [$cf91],a + ld [$d152],a + call UseItem + ld a,[$cd6a] and a - jr nz, .asm_b7579 ; 0x1d7e7 - ld hl, UnnamedText_1d81a + jp z,.loop + call GBPalWhiteOutWithDelay3 + jp .goBackToMap +.teleport + call CheckIfInOutsideMap + jr z,.canTeleport + ld a,[wWhichPokemon] + ld hl,W_PARTYMON1NAME + call GetPartyMonName + ld hl,.cannotUseTeleportNowText call PrintText -.asm_b7579 ; 0x1d7ef - ld hl, UnnamedText_1d82a + jp .loop +.canTeleport + ld hl,.warpToLastPokemonCenterText call PrintText -.Done - jp TextScriptEnd - -BikeShopMenuText: ; 1d7f8 (7:57f8) - db "BICYCLE" - next "CANCEL@" - -BikeShopMenuPrice: ; 1d807 (7:5807) - db "¥1000000@" - -UnnamedText_1d810: ; 1d810 (7:5810) - TX_FAR _UnnamedText_1d810 - db "@" - -UnnamedText_1d815: ; 1d815 (7:5815) - TX_FAR _UnnamedText_1d815 - db "@" - -UnnamedText_1d81a: ; 1d81a (7:581a) - TX_FAR _UnnamedText_1d81a - db "@" - -UnnamedText_1d81f: ; 1d81f (7:581f) - TX_FAR _UnnamedText_1d81f - db "@" - -UnnamedText_1d824: ; 1d824 (7:5824) - TX_FAR _UnnamedText_1d824 ; 0x98eb2 - db $11, "@" - -UnnamedText_1d82a: ; 1d82a (7:582a) - TX_FAR _UnnamedText_1d82a + ld hl,$d732 + set 3,[hl] + set 6,[hl] + ld hl,$d72e + set 1,[hl] + res 4,[hl] + ld c,60 + call DelayFrames + call GBPalWhiteOutWithDelay3 ; zero all three palettes and wait 3 V-blanks + jp .goBackToMap +.warpToLastPokemonCenterText + TX_FAR _WarpToLastPokemonCenterText db "@" - -UnnamedText_1d82f: ; 1d82f (7:582f) - TX_FAR _UnnamedText_1d82f +.cannotUseTeleportNowText + TX_FAR _CannotUseTeleportNowText db "@" - -UnnamedText_1d834: ; 1d834 (7:5834) - TX_FAR _UnnamedText_1d834 +.cannotFlyHereText + TX_FAR _CannotFlyHereText db "@" - -BikeShopText2: ; 1d839 (7:5839) - db $08 ; asm - ld hl, UnnamedText_1d843 +.softboiled + ld hl,W_PARTYMON1_MAXHP + ld a,[wWhichPokemon] + ld bc,44 + call AddNTimes + ld a,[hli] + ld [H_DIVIDEND],a + ld a,[hl] + ld [H_DIVIDEND + 1],a + ld a,5 + ld [H_DIVISOR],a + ld b,2 ; number of bytes + call Divide + ld bc,-33 + add hl,bc + ld a,[hld] + ld b,a + ld a,[H_QUOTIENT + 3] + sub b + ld b,[hl] + ld a,[H_QUOTIENT + 2] + sbc b + jp nc,.notHealthyEnough + ld a,[$cc2b] + push af + ld a,POTION + ld [$cf91],a + ld [$d152],a + call UseItem + pop af + ld [$cc2b],a + jp .loop +.notHealthyEnough ; if current HP is less than 1/5 of max HP + ld hl,.notHealthyEnoughText call PrintText - jp TextScriptEnd - -UnnamedText_1d843: ; 1d843 (7:5843) - TX_FAR _UnnamedText_1d843 + jp .loop +.notHealthyEnoughText + TX_FAR _NotHealthyEnoughText db "@" - -BikeShopText3: ; 1d848 (7:5848) - db $08 ; asm - ld a, [$d75f] - bit 0, a - ld hl, UnnamedText_1d861 - jr nz, .asm_34d2d ; 0x1d851 - ld hl, UnnamedText_1d85c -.asm_34d2d ; 0x1d856 +.goBackToMap + call Func_3dbe + jp CloseTextDisplay +.newBadgeRequired + ld hl,.newBadgeRequiredText call PrintText - jp TextScriptEnd - -UnnamedText_1d85c: ; 1d85c (7:585c) - TX_FAR _UnnamedText_1d85c - db "@" - -UnnamedText_1d861: ; 1d861 (7:5861) - TX_FAR _UnnamedText_1d861 + jp .loop +.newBadgeRequiredText + TX_FAR _NewBadgeRequiredText db "@" -BikeShopObject: ; 0x1d866 (size=38) - db $e ; border tile - - db $2 ; warps - db $7, $2, $4, $ff - db $7, $3, $4, $ff - - db $0 ; signs - - db $3 ; people - db SPRITE_BIKE_SHOP_GUY, $2 + 4, $6 + 4, $ff, $ff, $1 ; person - db SPRITE_MOM_GEISHA, $6 + 4, $5 + 4, $fe, $1, $2 ; person - db SPRITE_BUG_CATCHER, $3 + 4, $1 + 4, $ff, $d1, $3 ; person - - ; warp-to - EVENT_DISP BIKE_SHOP_WIDTH, $7, $2 - EVENT_DISP BIKE_SHOP_WIDTH, $7, $3 - -BikeShopBlocks: ; 1d88c (7:588c) - INCBIN "maps/bikeshop.blk" - -LavenderHouse1_h: ; 0x1d89c to 0x1d8a8 (12 bytes) (bank=7) (id=149) - db HOUSE ; tileset - db LAVENDER_HOUSE_1_HEIGHT, LAVENDER_HOUSE_1_WIDTH ; dimensions (y, x) - dw LavenderHouse1Blocks, LavenderHouse1TextPointers, LavenderHouse1Script ; blocks, texts, scripts - db $00 ; connections - dw LavenderHouse1Object ; objects - -LavenderHouse1Script: ; 1d8a8 (7:58a8) - call EnableAutoTextBoxDrawing +; writes a blank tile to all possible menu cursor positions on the party menu +ErasePartyMenuCursors: ; 132ed (4:72ed) + FuncCoord 0,1 + ld hl,Coord + ld bc,2 * 20 ; menu cursor positions are 2 rows apart + ld a,6 ; 6 menu cursor positions +.loop + ld [hl]," " + add hl,bc + dec a + jr nz,.loop ret -LavenderHouse1TextPointers: ; 1d8ac (7:58ac) - dw LavenderHouse1Text1 - dw LavenderHouse1Text2 - dw LavenderHouse1Text3 - dw LavenderHouse1Text4 - dw LavenderHouse1Text5 - dw LavenderHouse1Text6 +ItemMenuLoop: ; 132fc (4:72fc) + call LoadScreenTilesFromBuffer2DisableBGTransfer ; restore saved screen + call GoPAL_SET_CF1C -LavenderHouse1Text1: ; 1d8b8 (7:58b8) - db $08 ; asm - ld a, [$d7e0] - bit 7, a - jr nz, .asm_72e5d ; 0x1d8be - ld hl, UnnamedText_1d8d1 +StartMenu_Item: ; 13302 (4:7302) + ld a,[W_ISLINKBATTLE] + dec a + jr nz,.notInLinkBattle + ld hl,CannotUseItemsHereText call PrintText - jr .asm_6957f ; 0x1d8c6 -.asm_72e5d ; 0x1d8c8 - ld hl, UnnamedText_1d8d6 + jr .exitMenu +.notInLinkBattle + ld bc,wNumBagItems + ld hl,$cf8b + ld a,c + ld [hli],a + ld [hl],b ; store item bag pointer at $cf8b (for DisplayListMenuID) + xor a + ld [$cf93],a + ld a,ITEMLISTMENU + ld [wListMenuID],a + ld a,[$cc2c] + ld [wCurrentMenuItem],a + call DisplayListMenuID + ld a,[wCurrentMenuItem] + ld [$cc2c],a + jr nc,.choseItem +.exitMenu + call LoadScreenTilesFromBuffer2 ; restore saved screen + call LoadTextBoxTilePatterns + call UpdateSprites ; move sprites + jp RedisplayStartMenu +.choseItem +; erase menu cursor (blank each tile in front of an item name) + ld a," " + FuncCoord 5,4 + ld [Coord],a + FuncCoord 5,6 + ld [Coord],a + FuncCoord 5,8 + ld [Coord],a + FuncCoord 5,10 + ld [Coord],a + call PlaceUnfilledArrowMenuCursor + xor a + ld [$cc35],a + ld a,[$cf91] + cp a,BICYCLE + jp z,.useOrTossItem +.notBicycle1 + ld a,$06 ; use/toss menu + ld [$d125],a + call DisplayTextBoxID + ld hl,wTopMenuItemY + ld a,11 + ld [hli],a ; top menu item Y + ld a,14 + ld [hli],a ; top menu item X + xor a + ld [hli],a ; current menu item ID + inc hl + inc a ; a = 1 + ld [hli],a ; max menu item ID + ld a,%00000011 ; A button, B button + ld [hli],a ; menu watched keys + xor a + ld [hl],a ; old menu item id + call HandleMenuInput + call PlaceUnfilledArrowMenuCursor + bit 1,a ; was the B button pressed? + jr z,.useOrTossItem + jp ItemMenuLoop +.useOrTossItem ; if the player made the choice to use or toss the item + ld a,[$cf91] + ld [$d11e],a + call GetItemName + call CopyStringToCF4B ; copy name to $cf4b + ld a,[$cf91] + cp a,BICYCLE + jr nz,.notBicycle2 + ld a,[$d732] + bit 5,a + jr z,.useItem_closeMenu + ld hl,CannotGetOffHereText call PrintText -.asm_6957f ; 0x1d8ce - jp TextScriptEnd + jp ItemMenuLoop +.notBicycle2 + ld a,[wCurrentMenuItem] + and a + jr nz,.tossItem +.useItem + ld [$d152],a + ld a,[$cf91] + cp a,HM_01 + jr nc,.useItem_partyMenu + ld hl,UsableItems_CloseMenu + ld de,1 + call IsInArray + jr c,.useItem_closeMenu + ld a,[$cf91] + ld hl,UsableItems_PartyMenu + ld de,1 + call IsInArray + jr c,.useItem_partyMenu + call UseItem + jp ItemMenuLoop +.useItem_closeMenu + xor a + ld [$d152],a + call UseItem + ld a,[$cd6a] + and a + jp z,ItemMenuLoop + jp CloseStartMenu +.useItem_partyMenu + ld a,[$cfcb] + push af + call UseItem + ld a,[$cd6a] + cp a,$02 + jp z,.partyMenuNotDisplayed + call GBPalWhiteOutWithDelay3 + call Func_3dbe + pop af + ld [$cfcb],a + jp StartMenu_Item +.partyMenuNotDisplayed + pop af + ld [$cfcb],a + jp ItemMenuLoop +.tossItem + call IsKeyItem + ld a,[$d124] + and a + jr nz,.skipAskingQuantity + ld a,[$cf91] + call IsItemHM + jr c,.skipAskingQuantity + call DisplayChooseQuantityMenu + inc a + jr z,.tossZeroItems +.skipAskingQuantity + ld hl,wNumBagItems + call TossItem +.tossZeroItems + jp ItemMenuLoop -UnnamedText_1d8d1: ; 1d8d1 (7:58d1) - TX_FAR _UnnamedText_1d8d1 +CannotUseItemsHereText: ; 1342a (4:742a) + TX_FAR _CannotUseItemsHereText db "@" -UnnamedText_1d8d6: ; 1d8d6 (7:58d6) - TX_FAR _UnnamedText_1d8d6 +CannotGetOffHereText: ; 1342f (4:742f) + TX_FAR _CannotGetOffHereText db "@" -LavenderHouse1Text2: ; 1d8db (7:58db) - db $08 ; asm - ld a, [$d7e0] - bit 7, a - jr nz, .asm_06470 ; 0x1d8e1 - ld hl, UnnamedText_1d8f4 - call PrintText - jr .asm_3d208 ; 0x1d8e9 -.asm_06470 ; 0x1d8eb - ld hl, UnnamedText_1d8f9 - call PrintText -.asm_3d208 ; 0x1d8f1 - jp TextScriptEnd +; items which bring up the party menu when used +UsableItems_PartyMenu: ; 13434 (4:7434) + db MOON_STONE + db ANTIDOTE + db BURN_HEAL + db ICE_HEAL + db AWAKENING + db PARLYZ_HEAL + db FULL_RESTORE + db MAX_POTION + db HYPER_POTION + db SUPER_POTION + db POTION + db FIRE_STONE + db THUNDER_STONE + db WATER_STONE + db HP_UP + db PROTEIN + db IRON + db CARBOS + db CALCIUM + db RARE_CANDY + db LEAF_STONE + db FULL_HEAL + db REVIVE + db MAX_REVIVE + db FRESH_WATER + db SODA_POP + db LEMONADE + db X_ATTACK + db X_DEFEND + db X_SPEED + db X_SPECIAL + db PP_UP + db ETHER + db MAX_ETHER + db ELIXER + db MAX_ELIXER + db $ff + +; items which close the item menu when used +UsableItems_CloseMenu: ; 13459 (4:7459) + db ESCAPE_ROPE + db ITEMFINDER + db POKE_FLUTE + db OLD_ROD + db GOOD_ROD + db SUPER_ROD + db $ff + +StartMenu_TrainerInfo: ; 13460 (4:7460) + call GBPalWhiteOut + call ClearScreen + call UpdateSprites ; move sprites + ld a,[$ffd7] + push af + xor a + ld [$ffd7],a + call DrawTrainerInfo + ld a,$2e + call Predef ; draw badges + ld b,$0d + call GoPAL_SET + call GBPalNormal + call WaitForTextScrollButtonPress ; wait for button press + call GBPalWhiteOut + call LoadFontTilePatterns + call LoadScreenTilesFromBuffer2 ; restore saved screen + call GoPAL_SET_CF1C + call ReloadMapData + call LoadGBPal + pop af + ld [$ffd7],a + jp RedisplayStartMenu -UnnamedText_1d8f4: ; 1d8f4 (7:58f4) - TX_FAR _UnnamedText_1d8f4 - db "@" +; loads tile patterns and draws everything except for gym leader faces / badges +DrawTrainerInfo: ; 1349a (4:749a) + ld de,RedPicFront + ld bc,(BANK(RedPicFront) << 8) | $01 + ld a,$3b + call Predef + call DisableLCD + FuncCoord 0,2 + ld hl,Coord + ld a," " + call TrainerInfo_DrawVerticalLine + FuncCoord 1,2 + ld hl,Coord + call TrainerInfo_DrawVerticalLine + ld hl,$9070 + ld de,$9000 + ld bc,$01c0 + call CopyData + ld hl,TrainerInfoTextBoxTileGraphics ; $7b98 ; trainer info text box tile patterns + ld de,$9770 + ld bc,$0080 + push bc + call TrainerInfo_FarCopyData + ld hl,BlankLeaderNames ; $7c28 + ld de,$9600 + ld bc,$0170 + call TrainerInfo_FarCopyData + pop bc + ld hl,BadgeNumbersTileGraphics ; $7d98 ; badge number tile patterns + ld de,$8d80 + call TrainerInfo_FarCopyData + ld hl,GymLeaderFaceAndBadgeTileGraphics ; $6a9e ; gym leader face and badge tile patterns + ld de,$9200 + ld bc,$0400 + ld a,$03 + call FarCopyData2 + ld hl,TextBoxGraphics ; $6288 + ld de,$00d0 + add hl,de ; hl = colon tile pattern + ld de,$8d60 + ld bc,$0010 + ld a,$04 + push bc + call FarCopyData2 + pop bc + ld hl,TrainerInfoTextBoxTileGraphics + $80 ; $7c18 ; background tile pattern + ld de,$8d70 + call TrainerInfo_FarCopyData + call EnableLCD + ld hl,$cd3d + ld a,18 + 1 + ld [hli],a + dec a + ld [hli],a + ld [hl],1 + FuncCoord 0,0 + ld hl,Coord + call TrainerInfo_DrawTextBox + ld hl,$cd3d + ld a,16 + 1 + ld [hli],a + dec a + ld [hli],a + ld [hl],3 + FuncCoord 1,10 + ld hl,Coord + call TrainerInfo_DrawTextBox + FuncCoord 0,10 + ld hl,Coord + ld a,$d7 + call TrainerInfo_DrawVerticalLine + FuncCoord 19,10 + ld hl,Coord + call TrainerInfo_DrawVerticalLine + FuncCoord 6,9 + ld hl,Coord + ld de,TrainerInfo_BadgesText + call PlaceString + FuncCoord 2,2 + ld hl,Coord + ld de,TrainerInfo_NameMoneyTimeText + call PlaceString + FuncCoord 7,2 + ld hl,Coord + ld de,W_PLAYERNAME + call PlaceString + FuncCoord 8,4 + ld hl,Coord + ld de,wPlayerMoney + ld c,$e3 + call PrintBCDNumber + FuncCoord 9,6 + ld hl,Coord + ld de,$da41 ; hours + ld bc,$4103 + call PrintNumber + ld [hl],$d6 ; colon tile ID + inc hl + ld de,$da43 ; minutes + ld bc,$8102 + jp PrintNumber -UnnamedText_1d8f9: ; 1d8f9 (7:58f9) - TX_FAR _UnnamedText_1d8f9 - db "@" +TrainerInfo_FarCopyData: ; 1357f (4:757f) + ld a,$0b + jp FarCopyData2 -LavenderHouse1Text3: ; 1d8fe (7:58fe) - TX_FAR _LavenderHouse1Text3 - db $8 - ld a, PSYDUCK - call PlayCry - jp TextScriptEnd +TrainerInfo_NameMoneyTimeText: ; 13584 (4:7584) + db "NAME/" + next "MONEY/" + next "TIME/@" -LavenderHouse1Text4: ; 1d90b (7:590b) - TX_FAR _LavenderHouse1Text4 - db $8 - ld a, NIDORINO - call PlayCry - jp TextScriptEnd +; $76 is a circle tile +TrainerInfo_BadgesText: ; 13597 (4:7597) + db $76,"BADGES",$76,"@" -LavenderHouse1Text5: ; 1d918 (7:5918) - db $08 ; asm - ld a, [$d76c] - bit 0, a - jr nz, .asm_15ac2 ; 0x1d91e - ld hl, UnnamedText_1d94c - call PrintText - ld bc, (POKE_FLUTE << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, ReceivedFluteText - call PrintText - ld hl, $d76c - set 0, [hl] - jr .asm_da749 ; 0x1d939 -.BagFull - ld hl, FluteNoRoomText - call PrintText - jr .asm_da749 ; 0x1d941 -.asm_15ac2 ; 0x1d943 - ld hl, MrFujiAfterFluteText - call PrintText -.asm_da749 ; 0x1d949 - jp TextScriptEnd +; draws a text box on the trainer info screen +; height is always 6 +; INPUT: +; hl = destination address +; [$cd3d] = width + 1 +; [$cd3e] = width +; [$cd3f] = distance from the end of a text box row to the start of the next +TrainerInfo_DrawTextBox: ; 135a0 (4:75a0) + ld a,$79 ; upper left corner tile ID + ld de,$7a7b ; top edge and upper right corner tile ID's + call TrainerInfo_DrawHorizontalEdge ; draw top edge + call TrainerInfo_NextTextBoxRow + ld a,[$cd3d] ; width of the text box plus one + ld e,a + ld d,0 + ld c,6 ; height of the text box +.loop + ld [hl],$7c ; left edge tile ID + add hl,de + ld [hl],$78 ; right edge tile ID + call TrainerInfo_NextTextBoxRow + dec c + jr nz,.loop + ld a,$7d ; lower left corner tile ID + ld de,$777e ; bottom edge and lower right corner tile ID's -UnnamedText_1d94c: ; 1d94c (7:594c) - TX_FAR _UnnamedText_1d94c - db "@" +TrainerInfo_DrawHorizontalEdge: ; 135c3 (4:75c3) + ld [hli],a ; place left corner tile + ld a,[$cd3e] ; width of the text box + ld c,a + ld a,d +.loop + ld [hli],a ; place edge tile + dec c + jr nz,.loop + ld a,e + ld [hl],a ; place right corner tile + ret -ReceivedFluteText: ; 1d951 (7:5951) - TX_FAR _ReceivedFluteText - db $11 - TX_FAR _FluteExplanationText - db "@" +TrainerInfo_NextTextBoxRow: ; 135d0 (4:75d0) + ld a,[$cd3f] ; distance to the start of the next row +.loop + inc hl + dec a + jr nz,.loop + ret -FluteNoRoomText: ; 1d95b (7:595b) - TX_FAR _FluteNoRoomText - db "@" +; draws a vertical line +; INPUT: +; hl = address of top tile in the line +; a = tile ID +TrainerInfo_DrawVerticalLine: ; 135d8 (4:75d8) + ld de,20 + ld c,8 +.loop + ld [hl],a + add hl,de + dec c + jr nz,.loop + ret -MrFujiAfterFluteText: ; 1d960 (7:5960) - TX_FAR _MrFujiAfterFluteText - db "@" +StartMenu_SaveReset: ; 135e3 (4:75e3) + ld a,[$d72e] + bit 6,a ; is the player using the link feature? + jp nz,InitGame + ld a,$3f + call Predef ; save the game + call LoadScreenTilesFromBuffer2 ; restore saved screen + jp HoldTextDisplayOpen -LavenderHouse1Text6: ; 1d965 (7:5965) - TX_FAR _LavenderHouse1Text6 - db "@" +StartMenu_Option: ; 135f6 (4:75f6) + xor a + ld [H_AUTOBGTRANSFERENABLED],a + call ClearScreen + call UpdateSprites + ld hl,DisplayOptionMenu + ld b,BANK(DisplayOptionMenu) + call Bankswitch + call LoadScreenTilesFromBuffer2 ; restore saved screen + call LoadTextBoxTilePatterns + call UpdateSprites + jp RedisplayStartMenu -LavenderHouse1Object: ; 0x1d96a (size=56) - db $a ; border tile +Func_13613: ; 13613 (4:7613) + call Func_13653 + ld a, [wWhichTrade] ; $cd3d + call Func_13625 + ld a, [wCurrentMenuItem] ; $cc26 + call Func_13625 + jp RedrawPartyMenu_ - db $2 ; warps - db $7, $2, $2, $ff - db $7, $3, $2, $ff +Func_13625: ; 13625 (4:7625) + push af + ld hl, wTileMap + ld bc, $28 + call AddNTimes + ld c, $28 + ld a, $7f +.asm_13633 + ld [hli], a + dec c + jr nz, .asm_13633 + pop af + ld hl, wOAMBuffer + ld bc, $10 + call AddNTimes + ld de, $4 + ld c, e +.asm_13645 + ld [hl], $a0 + add hl, de + dec c + jr nz, .asm_13645 + call WaitForSoundToFinish + ld a, (SFX_02_58 - SFX_Headers_02) / 3 + jp PlaySound - db $0 ; signs +Func_13653: ; 13653 (4:7653) + ld a, [$cc35] + and a + jr nz, .asm_13661 + ld a, [wWhichPokemon] ; $cf92 + inc a + ld [$cc35], a + ret +.asm_13661 + xor a + ld [$d07d], a + ld a, [$cc35] + dec a + ld b, a + ld a, [wCurrentMenuItem] ; $cc26 + ld [wWhichTrade], a ; $cd3d + cp b + jr nz, .asm_1367b + xor a + ld [$cc35], a + ld [$d07d], a + ret +.asm_1367b + ld a, b + ld [$cc35], a + push hl + push de + ld hl, W_PARTYMON1 ; $d164 + ld d, h + ld e, l + ld a, [wCurrentMenuItem] ; $cc26 + add l + ld l, a + jr nc, .asm_1368e + inc h +.asm_1368e + ld a, [$cc35] + add e + ld e, a + jr nc, .asm_13696 + inc d +.asm_13696 + ld a, [hl] + ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) + ld a, [de] + ld [hl], a + ld a, [H_DIVIDEND] ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) + ld [de], a + ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) + ld bc, $2c + ld a, [wCurrentMenuItem] ; $cc26 + call AddNTimes + push hl + ld de, $cc97 + ld bc, $2c + call CopyData + ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) + ld bc, $2c + ld a, [$cc35] + call AddNTimes + pop de + push hl + ld bc, $2c + call CopyData + pop de + ld hl, $cc97 + ld bc, $2c + call CopyData + ld hl, W_PARTYMON1OT ; $d273 + ld a, [wCurrentMenuItem] ; $cc26 + call SkipFixedLengthTextEntries + push hl + ld de, $cc97 + ld bc, $b + call CopyData + ld hl, W_PARTYMON1OT ; $d273 + ld a, [$cc35] + call SkipFixedLengthTextEntries + pop de + push hl + ld bc, $b + call CopyData + pop de + ld hl, $cc97 + ld bc, $b + call CopyData + ld hl, W_PARTYMON1NAME ; $d2b5 + ld a, [wCurrentMenuItem] ; $cc26 + call SkipFixedLengthTextEntries + push hl + ld de, $cc97 + ld bc, $b + call CopyData + ld hl, W_PARTYMON1NAME ; $d2b5 + ld a, [$cc35] + call SkipFixedLengthTextEntries + pop de + push hl + ld bc, $b + call CopyData + pop de + ld hl, $cc97 + ld bc, $b + call CopyData + ld a, [$cc35] + ld [wWhichTrade], a ; $cd3d + xor a + ld [$cc35], a + ld [$d07d], a + pop de + pop hl + ret - db $6 ; people - db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $3 + 4, $ff, $ff, $1 ; person - db SPRITE_LITTLE_GIRL, $3 + 4, $6 + 4, $ff, $d0, $2 ; person - db SPRITE_SLOWBRO, $4 + 4, $6 + 4, $ff, $d1, $3 ; person - db SPRITE_SLOWBRO, $3 + 4, $1 + 4, $ff, $ff, $4 ; person - db SPRITE_MR_FUJI, $1 + 4, $3 + 4, $ff, $ff, $5 ; person - db SPRITE_BOOK_MAP_DEX, $3 + 4, $3 + 4, $ff, $ff, $6 ; person +; tests if mon [$cf91] can learn move [$d0e0] +TestMonMoveCompatibility: ; 1373e (4:773e) + ld a, [$cf91] + ld [$d0b5], a + call GetMonHeader + ld hl, W_MONHLEARNSET + push hl + ld a, [$d0e0] + ld b, a + ld c, $0 + ld hl, TechnicalMachines +.findTMloop + ld a, [hli] + cp b + jr z, .TMfoundLoop + inc c + jr .findTMloop +.TMfoundLoop + pop hl + ld b, $2 ; read corresponding bit from TM compatibility array + ld a, $10 + jp Predef ; indirect jump to HandleBitArray (f666 (3:7666)) - ; warp-to - EVENT_DISP LAVENDER_HOUSE_1_WIDTH, $7, $2 - EVENT_DISP LAVENDER_HOUSE_1_WIDTH, $7, $3 +; converts TM/HM number in $d11e into move number +; HMs start at 51 +TMToMove: ; 13763 (4:7763) + ld a, [$d11e] + dec a + ld hl, TechnicalMachines + ld b, $0 + ld c, a + add hl, bc + ld a, [hl] + ld [$d11e], a + ret -LavenderHouse2_h: ; 0x1d9a2 to 0x1d9ae (12 bytes) (bank=7) (id=151) - db HOUSE ; tileset - db LAVENDER_HOUSE_2_HEIGHT, LAVENDER_HOUSE_2_WIDTH ; dimensions (y, x) - dw LavenderHouse2Blocks, LavenderHouse2TextPointers, LavenderHouse2Script ; blocks, texts, scripts - db $00 ; connections - dw LavenderHouse2Object ; objects +INCLUDE "data/tms.asm" -LavenderHouse2Script: ; 1d9ae (7:59ae) - call EnableAutoTextBoxDrawing +Func_137aa: ; 137aa (4:77aa) + ld a, [W_ISLINKBATTLE] ; $d12b + cp $4 + jr nz, .asm_137eb + ld a, [W_ENEMYMONNUMBER] ; $cfe8 + ld hl, $d8a8 + ld bc, $2c + call AddNTimes + ld a, [W_ENEMYMONSTATUS] ; $cfe9 + ld [hl], a + call ClearScreen + ld hl, Func_372d6 + ld b, BANK(Func_372d6) + call Bankswitch + ld a, [$cf0b] + cp $1 + ld de, YouWinText + jr c, .asm_137de + ld de, YouLoseText + jr z, .asm_137de + ld de, DrawText +.asm_137de + FuncCoord 6, 8 ; $c446 + ld hl, Coord + call PlaceString + ld c, $c8 + call DelayFrames + jr .asm_1380a +.asm_137eb + ld a, [$cf0b] + and a + jr nz, .asm_13813 + ld hl, $cce5 + ld a, [hli] + or [hl] + inc hl + or [hl] + jr z, .asm_1380a + ld de, wPlayerMoney + 2 ; $d349 + ld c, $3 + ld a, $b + call Predef ; indirect jump to Func_f81d (f81d (3:781d)) + ld hl, PickUpPayDayMoneyText + call PrintText +.asm_1380a + xor a + ld [$ccd4], a + ld a, $2a + call Predef ; indirect jump to Func_3ad1c (3ad1c (e:6d1c)) +.asm_13813 + xor a + ld [$d083], a + ld [$c02a], a + ld [W_ISINBATTLE], a ; $d057 + ld [W_BATTLETYPE], a ; $d05a + ld [W_MOVEMISSED], a ; $d05f + ld [W_CUROPPONENT], a ; $d059 + ld [$d11f], a + ld [$d120], a + ld [$d078], a + ld hl, $cc2b + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld [wListScrollOffset], a ; $cc36 + ld hl, $d060 + ld b, $18 +.asm_1383e + ld [hli], a + dec b + jr nz, .asm_1383e + ld hl, $d72c + set 0, [hl] + call WaitForSoundToFinish + call GBPalWhiteOut + ld a, $ff + ld [$d42f], a ret -LavenderHouse2TextPointers: ; 1d9b2 (7:59b2) - dw LavenderHouse2Text1 - dw LavenderHouse2Text2 - -LavenderHouse2Text1: ; 1d9b6 (7:59b6) - TX_FAR _LavenderHouse2Text1 - db $8 - ld a, CUBONE - call PlayCry - jp TextScriptEnd +YouWinText: ; 13853 (4:7853) + db "YOU WIN@" -LavenderHouse2Text2: ; 1d9c3 (7:59c3) - db $08 ; asm - ld a, [$d7e0] - bit 7, a - jr nz, .asm_65711 ; 0x1d9c9 - ld hl, UnnamedText_1d9dc - call PrintText - jr .asm_64be1 ; 0x1d9d1 -.asm_65711 ; 0x1d9d3 - ld hl, UnnamedText_1d9e1 - call PrintText -.asm_64be1 ; 0x1d9d9 - jp TextScriptEnd +YouLoseText: ; 1385b (4:785b) + db "YOU LOSE@" -UnnamedText_1d9dc: ; 1d9dc (7:59dc) - TX_FAR _UnnamedText_1d9dc - db "@" +DrawText: ; 13864 (4:7864) + db " DRAW@" -UnnamedText_1d9e1: ; 1d9e1 (7:59e1) - TX_FAR _UnnamedText_1d9e1 +PickUpPayDayMoneyText: ; 1386b (4:786b) + TX_FAR _PickUpPayDayMoneyText db "@" -LavenderHouse2Object: ; 0x1d9e6 (size=32) - db $a ; border tile - - db $2 ; warps - db $7, $2, $4, $ff - db $7, $3, $4, $ff - - db $0 ; signs - - db $2 ; people - db SPRITE_SLOWBRO, $5 + 4, $3 + 4, $ff, $d1, $1 ; person - db SPRITE_BRUNETTE_GIRL, $4 + 4, $2 + 4, $ff, $d3, $2 ; person - - ; warp-to - EVENT_DISP LAVENDER_HOUSE_2_WIDTH, $7, $2 - EVENT_DISP LAVENDER_HOUSE_2_WIDTH, $7, $3 - -NameRater_h: ; 0x1da06 to 0x1da12 (12 bytes) (bank=7) (id=229) - db HOUSE ; tileset - db NAME_RATERS_HOUSE_HEIGHT, NAME_RATERS_HOUSE_WIDTH ; dimensions (y, x) - dw NameRaterBlocks, NameRaterTextPointers, NameRaterScript ; blocks, texts, scripts - db $00 ; connections - dw NameRaterObject ; objects - -NameRaterScript: ; 1da12 (7:5a12) - jp EnableAutoTextBoxDrawing - -Func_1da15: ; 1da15 (7:5a15) - call PrintText - call YesNoChoice - ld a, [$cc26] +Func_13870: ; 13870 (4:7870) + ld a, [$cc57] + and a + ret nz + ld a, [$d736] + and a + ret nz + ld hl, Func_c49d + ld b, BANK(Func_c49d) + call Bankswitch + jr nc, .asm_13888 +.asm_13884 + ld a, $1 and a ret - -Func_1da20: ; 1da20 (7:5a20) - ld hl, W_PARTYMON1OT - ld bc, $000b - ld a, [wWhichPokemon] - call AddNTimes - ld de, W_PLAYERNAME - ld c, $b - call .asm_1da47 - jr c, .asm_1da52 ; 0x1da34 $1c - ld hl, $d177 - ld bc, $002c - ld a, [wWhichPokemon] - call AddNTimes - ld de, $d359 - ld c, $2 -.asm_1da47 - ld a, [de] - cp [hl] - jr nz, .asm_1da52 ; 0x1da49 $7 +.asm_13888 + ld hl, Func_128d8 + ld b, BANK(Func_128d8) + call Bankswitch + jr z, .asm_13884 + ld a, [$d0db] + and a + jr z, .asm_1389e + dec a + jr z, .asm_13905 + ld [$d0db], a +.asm_1389e + FuncCoord 9, 9 ; $c45d + ld hl, Coord + ld c, [hl] + ld a, [W_GRASSTILE] + cp c + ld a, [W_GRASSRATE] ; $d887 + jr z, .asm_138c4 + ld a, $14 + cp c + ld a, [W_WATERRATE] ; $d8a4 + jr z, .asm_138c4 + ld a, [W_CURMAP] ; $d35e + cp REDS_HOUSE_1F + jr c, .asm_13912 + ld a, [W_CURMAPTILESET] ; $d367 + cp FOREST ; Viridian Forest/Safari Zone + jr z, .asm_13912 + ld a, [W_GRASSRATE] ; $d887 +.asm_138c4 + ld b, a + ld a, [H_RAND1] ; $ffd3 + cp b + jr nc, .asm_13912 + ld a, [H_RAND2] ; $ffd4 + ld b, a + ld hl, WildMonEncounterSlotChances ; $7918 +.asm_138d0 + ld a, [hli] + cp b + jr nc, .asm_138d7 inc hl - inc de - dec c - jr nz, .asm_1da47 ; 0x1da4e $f7 + jr .asm_138d0 +.asm_138d7 + ld c, [hl] + ld hl, W_GRASSMONS ; $d888 + FuncCoord 8, 9 ; $c45c + ld a, [Coord] + cp $14 + jr nz, .asm_138e5 + ld hl, W_WATERMONS ; $d8a5 (aliases: W_ENEMYMON1HP) +.asm_138e5 + ld b, $0 + add hl, bc + ld a, [hli] + ld [W_CURENEMYLVL], a ; $d127 + ld a, [hl] + ld [$cf91], a + ld [W_ENEMYMONID], a + ld a, [$d0db] + and a + jr z, .asm_13916 + ld a, [W_PARTYMON1_LEVEL] ; $d18c + ld b, a + ld a, [W_CURENEMYLVL] ; $d127 + cp b + jr c, .asm_13912 + jr .asm_13916 +.asm_13905 + ld [$d0db], a + ld a, $d2 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call EnableAutoTextBoxDrawing + call DisplayTextID +.asm_13912 + ld a, $1 and a ret -.asm_1da52 - scf +.asm_13916 + xor a ret -NameRaterTextPointers: ; 1da54 (7:5a54) - dw NameRaterText1 +WildMonEncounterSlotChances: ; 13918 (4:7918) +; There are 10 slots for wild pokemon, and this is the table that defines how common each of +; those 10 slots is. A random number is generated and then the first byte of each pair in this +; table is compared against that random number. If the random number is less than or equal +; to the first byte, then that slot is chosen. The second byte is double the slot number. + db $32, $00 ; 51/256 = 19.9% chance of slot 0 + db $65, $02 ; 51/256 = 19.9% chance of slot 1 + db $8C, $04 ; 39/256 = 15.2% chance of slot 2 + db $A5, $06 ; 25/256 = 9.8% chance of slot 3 + db $BE, $08 ; 25/256 = 9.8% chance of slot 4 + db $D7, $0A ; 25/256 = 9.8% chance of slot 5 + db $E4, $0C ; 13/256 = 5.1% chance of slot 6 + db $F1, $0E ; 13/256 = 5.1% chance of slot 7 + db $FC, $10 ; 11/256 = 4.3% chance of slot 8 + db $FF, $12 ; 3/256 = 1.2% chance of slot 9 -NameRaterText1: ; 1da56 (7:5a56) - db $8 - call SaveScreenTilesToBuffer2 - ld hl, UnnamedText_1dab3 - call Func_1da15 - jr nz, .asm_1daae ; 0x1da60 $4c - ld hl, UnnamedText_1dab8 - call PrintText +_RecoilEffect: ; 1392c (4:792c) + ld a, [H_WHOSETURN] ; $fff3 + and a + ld a, [W_PLAYERMOVENUM] ; $cfd2 + ld hl, W_PLAYERMONMAXHP ; $d023 + jr z, .asm_1393d + ld a, [W_ENEMYMOVENUM] ; $cfcc + ld hl, W_ENEMYMONMAXHP ; $cff4 +.asm_1393d + ld d, a + ld a, [W_DAMAGE] ; $d0d7 + ld b, a + ld a, [$d0d8] + ld c, a + srl b + rr c + ld a, d + cp STRUGGLE + jr z, .asm_13953 + srl b + rr c +.asm_13953 + ld a, b + or c + jr nz, .asm_13958 + inc c +.asm_13958 + ld a, [hli] + ld [wHPBarMaxHP+1], a + ld a, [hl] + ld [wHPBarMaxHP], a + push bc + ld bc, $fff2 + add hl, bc + pop bc + ld a, [hl] + ld [wHPBarOldHP], a + sub c + ld [hld], a + ld [wHPBarNewHP], a + ld a, [hl] + ld [wHPBarOldHP+1], a + sbc b + ld [hl], a + ld [wHPBarNewHP+1], a + jr nc, .asm_13982 xor a - ld [$d07d], a - ld [$cfcb], a - ld [$cc35], a - call DisplayPartyMenu - push af - call GBPalWhiteOutWithDelay3 - call Func_3dbe - call LoadGBPal - pop af - jr c, .asm_1daae ; 0x1da80 $2c - call GetPartyMonName2 - call Func_1da20 - ld hl, UnnamedText_1dad1 - jr c, .asm_1daa8 ; 0x1da8b $1b - ld hl, UnnamedText_1dabd - call Func_1da15 - jr nz, .asm_1daae ; 0x1da93 $19 - ld hl, UnnamedText_1dac2 - call PrintText - ld b, BANK(Func_655c) - ld hl, Func_655c - call Bankswitch - jr c, .asm_1daae ; 0x1daa3 $9 - ld hl, UnnamedText_1dac7 -.asm_1daa8 - call PrintText - jp TextScriptEnd -.asm_1daae - ld hl, UnnamedText_1dacc - jr .asm_1daa8 ; 0x1dab1 $f5 - -UnnamedText_1dab3: ; 1dab3 (7:5ab3) - TX_FAR _UnnamedText_1dab3 - db "@" - -UnnamedText_1dab8: ; 1dab8 (7:5ab8) - TX_FAR _UnnamedText_1dab8 - db "@" - -UnnamedText_1dabd: ; 1dabd (7:5abd) - TX_FAR _UnnamedText_1dabd - db "@" + ld [hli], a + ld [hl], a + ld hl, wHPBarNewHP + ld [hli], a + ld [hl], a +.asm_13982 + FuncCoord 10, 9 ; $c45e + ld hl, Coord + ld a, [H_WHOSETURN] ; $fff3 + and a + ld a, $1 + jr z, .asm_13990 + FuncCoord 2, 2 ; $c3ca + ld hl, Coord + xor a +.asm_13990 + ld [wListMenuID], a ; $cf94 + ld a, $48 + call Predef ; indirect jump to UpdateHPBar (fa1d (3:7a1d)) + ld hl, RecoilText + jp PrintText -UnnamedText_1dac2: ; 1dac2 (7:5ac2) - TX_FAR _UnnamedText_1dac2 +RecoilText: ; 1399e (4:799e) + TX_FAR _RecoilText db "@" -UnnamedText_1dac7: ; 1dac7 (7:5ac7) - TX_FAR _UnnamedText_1dac7 - db "@" +_ConversionEffect: ; 139a3 (4:79a3) + ld hl, W_ENEMYMONTYPE1 + ld de, W_PLAYERMONTYPE1 + ld a, [H_WHOSETURN] + and a + ld a, [W_ENEMYBATTSTATUS1] + jr z, .asm_139b8 + push hl + ld h, d + ld l, e + pop de + ld a, [W_PLAYERBATTSTATUS1] -UnnamedText_1dacc: ; 1dacc (7:5acc) - TX_FAR _UnnamedText_1dacc - db "@" +.asm_139b8 + bit 6, a + jr nz, Func_139d2 + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + ld hl, Func_3fba8 + call Func_139d5 + ld hl, ConversionText + jp PrintText -UnnamedText_1dad1: ; 1dad1 (7:5ad1) - TX_FAR _UnnamedText_1dad1 +ConversionText: ; 139cd (4:79cd) + TX_FAR _ConversionText db "@" -NameRaterObject: ; 0x1dad6 (size=26) - db $a ; border tile - - db $2 ; warps - db $7, $2, $5, $ff - db $7, $3, $5, $ff - - db $0 ; signs +Func_139d2: ; 139d2 (4:79d2) + ld hl, PrintItFailedText +Func_139d5: ; 139d5 (4:79d5) + ld b, BANK(PrintItFailedText) + jp Bankswitch - db $1 ; people - db SPRITE_MR_MASTERBALL, $3 + 4, $5 + 4, $ff, $d2, $1 ; person +_HazeEffect: ; 139da (4:79da) + ld a, $7 + ld hl, wPlayerMonAttackMod + call Func_13a43 + ld hl, wEnemyMonAttackMod + call Func_13a43 + ld hl, $cd12 + ld de, W_PLAYERMONATK + call Func_13a4a + ld hl, $cd26 + ld de, W_ENEMYMONATTACK + call Func_13a4a + ld hl, W_ENEMYMONSTATUS + ld de, wEnemySelectedMove + ld a, [H_WHOSETURN] + and a + jr z, .asm_13a09 + ld hl, W_PLAYERMONSTATUS + dec de - ; warp-to - EVENT_DISP NAME_RATERS_HOUSE_WIDTH, $7, $2 - EVENT_DISP NAME_RATERS_HOUSE_WIDTH, $7, $3 +.asm_13a09 + ld a, [hl] + ld [hl], $0 + and $27 + jr z, .asm_13a13 + ld a, $ff + ld [de], a -VermilionHouse1_h: ; 0x1daf0 to 0x1dafc (12 bytes) (bank=7) (id=93) - db HOUSE ; tileset - db VERMILION_HOUSE_1_HEIGHT, VERMILION_HOUSE_1_WIDTH ; dimensions (y, x) - dw VermilionHouse1Blocks, VermilionHouse1TextPointers, VermilionHouse1Script ; blocks, texts, scripts - db $00 ; connections - dw VermilionHouse1Object ; objects +.asm_13a13 + xor a + ld [W_PLAYERDISABLEDMOVE], a + ld [W_ENEMYDISABLEDMOVE], a + ld hl, $ccee + ld [hli], a + ld [hl], a + ld hl, W_PLAYERBATTSTATUS1 + call Func_13a37 + ld hl, W_ENEMYBATTSTATUS1 + call Func_13a37 + ld hl, Func_3fba8 + call Func_139d5 + ld hl, HazeText + jp PrintText -VermilionHouse1Script: ; 1dafc (7:5afc) - call EnableAutoTextBoxDrawing +Func_13a37: ; 13a37 (4:7a37) + res 7, [hl] + inc hl + ld a, [hl] + and $78 + ld [hli], a + ld a, [hl] + and $f8 + ld [hl], a ret -VermilionHouse1TextPointers: ; 1db00 (7:5b00) - dw VermilionHouse1Text1 - dw VermilionHouse1Text2 - dw VermilionHouse1Text3 - -VermilionHouse1Text1: ; 1db06 (7:5b06) - TX_FAR _VermilionHouse1Text1 - db "@" +Func_13a43: ; 13a43 (4:7a43) + ld b, $8 +.loop + ld [hli], a + dec b + jr nz, .loop + ret -VermilionHouse1Text2: ; 1db0b (7:5b0b) - TX_FAR _VermilionHouse1Text2 - db $08 ; asm - ld a, PIDGEY - call PlayCry - call WaitForSoundToFinish - jp TextScriptEnd +Func_13a4a: ; 13a4a (4:7a4a) + ld b, $8 +.loop + ld a, [hli] + ld [de], a + inc de + dec b + jr nz, .loop + ret -VermilionHouse1Text3: ; 1db1b (7:5b1b) - TX_FAR _VermilionHouse1Text3 +HazeText: ; 13a53 (4:7a53) + TX_FAR _HazeText db "@" -VermilionHouse1Object: ; 0x1db20 (size=38) - db $a ; border tile +Func_13a58: ; 13a58 (4:7a58) + ld hl, W_GRASSRATE ; $d887 + ld a, [W_ISLINKBATTLE] ; $d12b + and a + jr nz, .asm_13a86 + ld hl, W_RIVALNAME ; $d34a + ld a, [W_TRAINERCLASS] ; $d031 + cp SONY1 + jr z, .asm_13a86 + cp SONY2 + jr z, .asm_13a86 + cp SONY3 + jr z, .asm_13a86 + ld [$d0b5], a + ld a, TRAINER_NAME + ld [W_LISTTYPE], a + ld a, $e + ld [$d0b7], a + call GetName + ld hl, $cd6d +.asm_13a86 + ld de, W_TRAINERNAME + ld bc, $d + jp CopyData - db $2 ; warps - db $7, $2, $4, $ff - db $7, $3, $4, $ff +GenRandom_: ; 13a8f (4:7a8f) +; generate a random 16-bit integer and store it at $FFD3,$FFD4 + ld a,[rDIV] + ld b,a + ld a,[H_RAND1] + adc b + ld [H_RAND1],a + ld a,[rDIV] + ld b,a + ld a,[H_RAND2] + sbc b + ld [H_RAND2],a + ret - db $0 ; signs +SECTION "bank5",ROMX,BANK[$5] - db $3 ; people - db SPRITE_BUG_CATCHER, $3 + 4, $5 + 4, $ff, $d2, $1 ; person - db SPRITE_BIRD, $5 + 4, $3 + 4, $fe, $2, $2 ; person - db SPRITE_PAPER_SHEET, $3 + 4, $4 + 4, $ff, $ff, $3 ; person +RedCyclingSprite: ; 14000 (5:4000) + INCBIN "gfx/sprites/cycling.2bpp" ; was $14000 +RedSprite: ; 14180 (5:4180) + INCBIN "gfx/sprites/red.2bpp" ; was $14180 +BlueSprite: ; 14300 (5:4300) + INCBIN "gfx/sprites/blue.2bpp" ; was $14300 +OakSprite: ; 14480 (5:4480) + INCBIN "gfx/sprites/oak.2bpp" ; was $14480 +BugCatcherSprite: ; 14600 (5:4600) + INCBIN "gfx/sprites/bug_catcher.2bpp" ; was $14600 +SlowbroSprite: ; 14780 (5:4780) + INCBIN "gfx/sprites/slowbro.2bpp" ; was $14780 +LassSprite: ; 14900 (5:4900) + INCBIN "gfx/sprites/lass.2bpp" ; was $14900 +BlackHairBoy1Sprite: ; 14a80 (5:4a80) + INCBIN "gfx/sprites/black_hair_boy_1.2bpp" ; was $14a80 +LittleGirlSprite: ; 14c00 (5:4c00) + INCBIN "gfx/sprites/little_girl.2bpp" ; was $14c00 +BirdSprite: ; 14d80 (5:4d80) + INCBIN "gfx/sprites/bird.2bpp" ; was $14d80 +FatBaldGuySprite: ; 14f00 (5:4f00) + INCBIN "gfx/sprites/fat_bald_guy.2bpp" ; was $14f00 +GamblerSprite: ; 15080 (5:5080) + INCBIN "gfx/sprites/gambler.2bpp" ; was $15080 +BlackHairBoy2Sprite: ; 15200 (5:5200) + INCBIN "gfx/sprites/black_hair_boy_2.2bpp" ; was $15200 +GirlSprite: ; 15380 (5:5380) + INCBIN "gfx/sprites/girl.2bpp" ; was $15380 +HikerSprite: ; 15500 (5:5500) + INCBIN "gfx/sprites/hiker.2bpp" ; was $15500 +FoulardWomanSprite: ; 15680 (5:5680) + INCBIN "gfx/sprites/foulard_woman.2bpp" ; was $15680 +GentlemanSprite: ; 15800 (5:5800) + INCBIN "gfx/sprites/gentleman.2bpp" ; was $15800 +DaisySprite: ; 15980 (5:5980) + INCBIN "gfx/sprites/daisy.2bpp" ; was $15980 +BikerSprite: ; 15b00 (5:5b00) + INCBIN "gfx/sprites/biker.2bpp" ; was $15b00 +SailorSprite: ; 15c80 (5:5c80) + INCBIN "gfx/sprites/sailor.2bpp" ; was $15c80 +CookSprite: ; 15e00 (5:5e00) + INCBIN "gfx/sprites/cook.2bpp" ; was $15e00 +BikeShopGuySprite: ; 15f80 (5:5f80) + INCBIN "gfx/sprites/bike_shop_guy.2bpp" ; was $15f80 +MrFujiSprite: ; 16040 (5:6040) + INCBIN "gfx/sprites/mr_fuji.2bpp" ; was $16040 +GiovanniSprite: ; 161c0 (5:61c0) + INCBIN "gfx/sprites/giovanni.2bpp" ; was $161c0 +RocketSprite: ; 16340 (5:6340) + INCBIN "gfx/sprites/rocket.2bpp" ; was $16340 +MediumSprite: ; 164c0 (5:64c0) + INCBIN "gfx/sprites/medium.2bpp" ; was $164c0 +WaiterSprite: ; 16640 (5:6640) + INCBIN "gfx/sprites/waiter.2bpp" ; was $16640 +ErikaSprite: ; 167c0 (5:67c0) + INCBIN "gfx/sprites/erika.2bpp" ; was $167c0 +MomGeishaSprite: ; 16940 (5:6940) + INCBIN "gfx/sprites/mom_geisha.2bpp" ; was $16940 +BrunetteGirlSprite: ; 16ac0 (5:6ac0) + INCBIN "gfx/sprites/brunette_girl.2bpp" ; was $16ac0 +LanceSprite: ; 16c40 (5:6c40) + INCBIN "gfx/sprites/lance.2bpp" ; was $16c40 +MomSprite: ; 16dc0 (5:6dc0) + INCBIN "gfx/sprites/mom.2bpp" ; was $16dc0 +BaldingGuySprite: ; 16e80 (5:6e80) + INCBIN "gfx/sprites/balding_guy.2bpp" ; was $16e80 +YoungBoySprite: ; 16f40 (5:6f40) + INCBIN "gfx/sprites/young_boy.2bpp" ; was $16f40 +GameboyKidSprite: ; 17000 (5:7000) + INCBIN "gfx/sprites/gameboy_kid.2bpp" ; was $17000 +ClefairySprite: ; 170c0 (5:70c0) + INCBIN "gfx/sprites/clefairy.2bpp" ; was $170c0 +AgathaSprite: ; 17240 (5:7240) + INCBIN "gfx/sprites/agatha.2bpp" ; was $17240 +BrunoSprite: ; 173c0 (5:73c0) + INCBIN "gfx/sprites/bruno.2bpp" ; was $173c0 +LoreleiSprite: ; 17540 (5:7540) + INCBIN "gfx/sprites/lorelei.2bpp" ; was $17540 +SeelSprite: ; 176c0 (5:76c0) + INCBIN "gfx/sprites/seel.2bpp" ; was $176c0 - ; warp-to - EVENT_DISP VERMILION_HOUSE_1_WIDTH, $7, $2 - EVENT_DISP VERMILION_HOUSE_1_WIDTH, $7, $3 +; Loads tile patterns for tiles used in the pokedex. +LoadPokedexTilePatterns: ; 17840 (5:7840) + call LoadHpBarAndStatusTilePatterns + ld de,PokedexTileGraphics ; $6488 + ld hl,$9600 + ld bc,(BANK(PokedexTileGraphics) << 8) + $12 + call CopyVideoData + ld de,PokeballTileGraphics ; $697e + ld hl,$9720 + ld bc,(BANK(PokeballTileGraphics) << 8) + $01 + jp CopyVideoData ; load pokeball tile for marking caught mons -VermilionDock_h: ; 0x1db46 to 0x1db52 (12 bytes) (bank=7) (id=94) - db SHIP_PORT ; tileset - db VERMILION_DOCK_HEIGHT, VERMILION_DOCK_WIDTH ; dimensions (y, x) - dw VermilionDockBlocks, VermilionDockTextPointers, VermilionDockScript ; blocks, texts, scripts - db $00 ; connections - dw VermilionDockObject ; objects +; Loads tile patterns for map's sprites. +; For outside maps, it loads one of several fixed sets of sprites. +; For inside maps, it loads each sprite picture ID used in the map header. +; This is also called after displaying text because loading +; text tile patterns overwrites half of the sprite tile pattern data. +; Note on notation: +; $C1X* and $C2X* are used to denote $C100-$C1FF and $C200-$C2FF sprite slot +; fields, respectively, within loops. The X is the loop index. +; If there is an inner loop, Y is the inner loop index, i.e. $C1Y* and $C2Y* +; denote fields of the sprite slots interated over in the inner loop. +InitMapSprites: ; 1785b (5:785b) + call InitOutsideMapSprites + ret c ; return if the map is an outside map (already handled by above call) +; if the map is an inside map (i.e. mapID >= $25) + ld hl,wSpriteStateData1 + ld de,$c20d +; Loop to copy picture ID's from $C1X0 to $C2XD for LoadMapSpriteTilePatterns. +.copyPictureIDLoop + ld a,[hl] ; $C1X0 (picture ID) + ld [de],a ; $C2XD + ld a,$10 + add e + ld e,a + ld a,$10 + add l + ld l,a + jr nz,.copyPictureIDLoop -VermilionDockScript: ; 1db52 (7:5b52) - call EnableAutoTextBoxDrawing - ld hl, $d803 - bit 4, [hl] - jr nz, .asm_1db8d ; 0x1db5a $31 - bit 0, [hl] - ret z - ld a, [$d42f] - cp $1 - ret nz - bit 2, [hl] - jp z, VermilionDock_1db9b - set 4, [hl] - call Delay3 - ld hl, $d730 - set 7, [hl] - ld hl, $ccd3 - ld a, $40 - ld [hli], a - ld [hli], a - ld [hl], a - ld a, $3 - ld [$cd38], a - xor a - ld [$c206], a - ld [$cd3b], a - dec a - ld [wJoypadForbiddenButtonsMask], a - ret -.asm_1db8d - bit 5, [hl] - ret nz - ld a, [$cd38] - and a - ret nz - ld [wJoypadForbiddenButtonsMask], a - set 5, [hl] +; This is used for both inside and outside maps, since it is called by +; InitOutsideMapSprites. +; Loads tile pattern data for sprites into VRAM. +LoadMapSpriteTilePatterns: ; 17871 (5:7871) + ld a,[W_NUMSPRITES] + and a ; are there any sprites? + jr nz,.spritesExist ret - -VermilionDock_1db9b: ; 1db9b (7:5b9b) - set 2, [hl] - ld a, $ff - ld [wJoypadForbiddenButtonsMask], a - ld [$c0ee], a - call PlaySound - ld c, BANK(Music_Surfing) - ld a, MUSIC_SURFING - call PlayMusic - ld b, BANK(LoadSmokeTileFourTimes) - ld hl, LoadSmokeTileFourTimes - call Bankswitch - xor a - ld [$c102], a - ld c, $78 - call DelayFrames - ld b, $9c - call CopyScreenTileBufferToVRAM - FuncCoord 0, 10 ; $c468 - ld hl, Coord - ld bc, $0078 - ld a, $14 - call FillMemory - ld a, $1 - ld [$ffba], a - call Delay3 +.spritesExist + ld c,a ; c = [W_NUMSPRITES] + ld b,$10 ; number of sprite slots + ld hl,$c20d xor a - ld [$ffba], a - ld [$cd3d], a - ld [$ff49], a - ld a, $58 - ld [$cd3e], a - ld hl, $d526 - ld c, [hl] - inc hl - ld b, [hl] + ld [$ff8e],a ; 4-tile sprite counter +.copyPictureIDLoop ; loop to copy picture ID from $C2XD to $C2XE + ld a,[hli] ; $C2XD (sprite picture ID) + ld [hld],a ; $C2XE + ld a,l + add a,$10 + ld l,a + dec b + jr nz,.copyPictureIDLoop + ld hl,$c21e +.loadTilePatternLoop + ld de,$c21d +; Check if the current picture ID has already had its tile patterns loaded. +; This done by looping through the previous sprite slots and seeing if any of +; their picture ID's match that of the current sprite slot. +.checkIfAlreadyLoadedLoop + ld a,e + and a,$f0 + ld b,a ; b = offset of the wSpriteStateData2 sprite slot being checked against + ld a,l + and a,$f0 ; a = offset of current wSpriteStateData2 sprite slot + cp b ; done checking all previous sprite slots? + jr z,.notAlreadyLoaded + ld a,[de] ; picture ID of the wSpriteStateData2 sprite slot being checked against + cp [hl] ; do the picture ID's match? + jp z,.alreadyLoaded + ld a,e + add a,$10 + ld e,a + jr .checkIfAlreadyLoadedLoop +.notAlreadyLoaded + ld de,$c20e + ld b,$01 +; loop to find the highest tile pattern VRAM slot (among the first 10 slots) used by a previous sprite slot +; this is done in order to find the first free VRAM slot available +.findNextVRAMSlotLoop + ld a,e + add a,$10 + ld e,a + ld a,l + cp e ; reached current slot? + jr z,.foundNextVRAMSlot + ld a,[de] ; $C2YE (VRAM slot) + cp a,11 ; is it one of the first 10 slots? + jr nc,.findNextVRAMSlotLoop + cp b ; compare the slot being checked to the current max + jr c,.findNextVRAMSlotLoop ; if the slot being checked is less than the current max +; if the slot being checked is greater than or equal to the current max + ld b,a ; store new max VRAM slot + jr .findNextVRAMSlotLoop +.foundNextVRAMSlot + inc b ; increment previous max value to get next VRAM tile pattern slot + ld a,b ; a = next VRAM tile pattern slot + push af + ld a,[hl] ; $C2XE (sprite picture ID) + ld b,a ; b = current sprite picture ID + cp a,SPRITE_BALL ; is it a 4-tile sprite? + jr c,.notFourTileSprite + pop af + ld a,[$ff8e] ; 4-tile sprite counter + add a,11 + jr .storeVRAMSlot +.notFourTileSprite + pop af +.storeVRAMSlot + ld [hl],a ; store VRAM slot at $C2XE + ld [$ff8d],a ; used to determine if it's 4-tile sprite later + ld a,b ; a = current sprite picture ID + dec a + add a + add a push bc push hl - ld a, (SFX_02_54 - SFX_Headers_02) / 3 - call PlaySoundWaitForCurrent - ld a, $ff - ld [$cfcb], a - ld d, $0 - ld e, $8 -.asm_1dbfa - ld hl, $0002 - add hl, bc - ld a, l - ld [$d526], a - ld a, h - ld [$d527], a + ld hl,SpriteSheetPointerTable + jr nc,.noCarry + inc h +.noCarry + add l + ld l,a + jr nc,.noCarry2 + inc h +.noCarry2 push hl + call ReadSpriteSheetData + push af push de - call ScheduleEastColumnRedraw - call VermilionDock_1dc59 + push bc + ld hl,$8000 ; VRAM base address + ld bc,$c0 ; number of bytes per VRAM slot + ld a,[$ff8d] + cp a,11 ; is it a 4-tile sprite? + jr nc,.fourTileSpriteVRAMAddr + ld d,a + dec d +; Equivalent to multiplying $C0 (number of bytes in 12 tiles) times the VRAM +; slot and adding the result to $8000 (the VRAM base address). +.calculateVRAMAddrLoop + add hl,bc + dec d + jr nz,.calculateVRAMAddrLoop + jr .loadStillTilePattern +.fourTileSpriteVRAMAddr + ld hl,$87c0 ; address for second 4-tile sprite + ld a,[$ff8e] ; 4-tile sprite counter + and a ; is it the first 4-tile sprite? + jr nz,.loadStillTilePattern +; if it's the first 4-tile sprite + ld hl,$8780 ; address for first 4-tile sprite + inc a + ld [$ff8e],a ; 4-tile sprite counter +.loadStillTilePattern + pop bc pop de - ld b, $10 -.asm_1dc11 - call VermilionDock_1dc42 - ld c, $8 -.asm_1dc16 - call VermilionDock_1dc7c + pop af + push hl + push hl + ld h,d + ld l,e + pop de + ld b,a + ld a,[$cfc4] + bit 0,a ; reloading upper half of tile patterns after displaying text? + jr nz,.skipFirstLoad ; if so, skip loading data into the lower half + ld a,b + ld b,0 + call FarCopyData2 ; load tile pattern data for sprite when standing still +.skipFirstLoad + pop de + pop hl + ld a,[$ff8d] + cp a,11 ; is it a 4-tile sprite? + jr nc,.skipSecondLoad ; if so, there is no second block + push de + call ReadSpriteSheetData + push af + ld a,$c0 + add e + ld e,a + jr nc,.noCarry3 + inc d +.noCarry3 + ld a,[$cfc4] + bit 0,a ; reloading upper half of tile patterns after displaying text? + jr nz,.loadWhileLCDOn + pop af + pop hl + set 3,h ; add $800 to hl + push hl + ld h,d + ld l,e + pop de + call FarCopyData2 ; load tile pattern data for sprite when walking + jr .skipSecondLoad +; When reloading the upper half of tile patterns after diplaying text, the LCD +; will be on, so CopyVideoData (which writes to VRAM only during V-blank) must +; be used instead of FarCopyData2. +.loadWhileLCDOn + pop af + pop hl + set 3,h ; add $800 to hl + ld b,a + swap c + call CopyVideoData ; load tile pattern data for sprite when walking +.skipSecondLoad + pop hl + pop bc + jr .nextSpriteSlot +.alreadyLoaded ; if the current picture ID has already had its tile patterns loaded + inc de + ld a,[de] ; a = VRAM slot for the current picture ID (from $C2YE) + ld [hl],a ; store VRAM slot in current wSpriteStateData2 sprite slot (at $C2XE) +.nextSpriteSlot + ld a,l + add a,$10 + ld l,a dec c - jr nz, .asm_1dc16 ; 0x1dc1a $fa + jp nz,.loadTilePatternLoop + ld hl,$c20d + ld b,$10 +; the pictures ID's stored at $C2XD are no longer needed, so zero them +.zeroStoredPictureIDLoop + xor a + ld [hl],a ; $C2XD + ld a,$10 + add l + ld l,a + dec b + jr nz,.zeroStoredPictureIDLoop + ret + +; reads data from SpriteSheetPointerTable +; INPUT: +; hl = address of sprite sheet entry +; OUTPUT: +; de = pointer to sprite sheet +; bc = length in bytes +; a = ROM bank +ReadSpriteSheetData: ; 17971 (5:7971) + ld a,[hli] + ld e,a + ld a,[hli] + ld d,a + ld a,[hli] + ld c,a + xor a + ld b,a + ld a,[hli] + ret + +; Loads sprite set for outside maps (cities and routes) and sets VRAM slots. +; sets carry if the map is a city or route, unsets carry if not +InitOutsideMapSprites: ; 1797b (5:797b) + ld a,[W_CURMAP] + cp a,REDS_HOUSE_1F ; is the map a city or a route (map ID less than $25)? + ret nc ; if not, return + ld hl,MapSpriteSets + add l + ld l,a + jr nc,.noCarry + inc h +.noCarry + ld a,[hl] ; a = spriteSetID + cp a,$f0 ; does the map have 2 sprite sets? + call nc,GetSplitMapSpriteSetID ; if so, choose the appropriate one + ld b,a ; b = spriteSetID + ld a,[$cfc4] + bit 0,a ; reloading upper half of tile patterns after displaying text? + jr nz,.loadSpriteSet ; if so, forcibly reload the sprite set + ld a,[W_SPRITESETID] + cp b ; has the sprite set ID changed? + jr z,.skipLoadingSpriteSet ; if not, don't load it again +.loadSpriteSet + ld a,b + ld [W_SPRITESETID],a + dec a + ld b,a + sla a + ld c,a + sla a + sla a + add c + add b ; a = (spriteSetID - 1) * 11 + ld de,SpriteSets +; add a to de to get offset of sprite set + add e + ld e,a + jr nc,.noCarry2 inc d +.noCarry2 + ld hl,$c20d + ld a,SPRITE_RED + ld [hl],a + ld bc,W_SPRITESET +; Load the sprite set into RAM. +; This loop also fills $C2XD (sprite picture ID) where X is from $0 to $A +; with picture ID's. This is done so that LoadMapSpriteTilePatterns will +; load tile patterns for all sprite pictures in the sprite set. +.loadSpriteSetLoop + ld a,$10 + add l + ld l,a + ld a,[de] ; sprite picture ID from sprite set + ld [hl],a ; $C2XD (sprite picture ID) + ld [bc],a + inc de + inc bc + ld a,l + cp a,$bd ; reached 11th sprite slot? + jr nz,.loadSpriteSetLoop + ld b,4 ; 4 remaining sprite slots +.zeroRemainingSlotsLoop ; loop to zero the picture ID's of the remaining sprite slots + ld a,$10 + add l + ld l,a + xor a + ld [hl],a ; $C2XD (sprite picture ID) dec b - jr nz, .asm_1dc11 ; 0x1dc1e $f1 - pop bc - dec e - jr nz, .asm_1dbfa ; 0x1dc22 $d6 + jr nz,.zeroRemainingSlotsLoop + ld a,[W_NUMSPRITES] + push af ; save number of sprites + ld a,11 ; 11 sprites in sprite set + ld [W_NUMSPRITES],a + call LoadMapSpriteTilePatterns + pop af + ld [W_NUMSPRITES],a ; restore number of sprites + ld hl,$c21e + ld b,$0f +; The VRAM tile pattern slots that LoadMapSpriteTilePatterns set are in the +; order of the map's sprite set, not the order of the actual sprites loaded +; for the current map. So, they are not needed and are zeroed by this loop. +.zeroVRAMSlotsLoop xor a - ld [$ff4a], a - ld [$ffb0], a - call VermilionDock_1dc94 - ld a, $90 - ld [$ffb0], a - ld a, $1 - ld [$cfcb], a + ld [hl],a ; $C2XE (VRAM slot) + ld a,$10 + add l + ld l,a + dec b + jr nz,.zeroVRAMSlotsLoop +.skipLoadingSpriteSet + ld hl,$c110 +; This loop stores the correct VRAM tile pattern slots according the sprite +; data from the map's header. Since the VRAM tile pattern slots are filled in +; the order of the sprite set, in order to find the VRAM tile pattern slot +; for a sprite slot, the picture ID for the sprite is looked up within the +; sprite set. The index of the picture ID within the sprite set plus one +; (since the Red sprite always has the first VRAM tile pattern slot) is the +; VRAM tile pattern slot. +.storeVRAMSlotsLoop + ld c,0 + ld a,[hl] ; $C1X0 (picture ID) (zero if sprite slot is not used) + and a ; is the sprite slot used? + jr z,.skipGettingPictureIndex ; if the sprite slot is not used + ld b,a ; b = picture ID + ld de,W_SPRITESET +; Loop to find the index of the sprite's picture ID within the sprite set. +.getPictureIndexLoop + inc c + ld a,[de] + inc de + cp b ; does the picture ID match? + jr nz,.getPictureIndexLoop + inc c +.skipGettingPictureIndex + push hl + inc h + ld a,$0e + add l + ld l,a + ld a,c ; a = VRAM slot (zero if sprite slot is not used) + ld [hl],a ; $C2XE (VRAM slot) pop hl - pop bc - ld [hl], b - dec hl - ld [hl], c - call LoadPlayerSpriteGraphics - ld hl, $d3ae - dec [hl] + ld a,$10 + add l + ld l,a + and a + jr nz,.storeVRAMSlotsLoop + scf ret -VermilionDock_1dc42: ; 1dc42 (7:5c42) - push bc - push de - ld hl, $c311 - ld a, [$cd3d] - swap a - ld c, a - ld de, $0004 -.asm_1dc50 - inc [hl] - inc [hl] - add hl, de - dec c - jr nz, .asm_1dc50 ; 0x1dc54 $fa - pop de - pop bc +; Chooses the correct sprite set ID depending on the player's position within +; the map for maps with two sprite sets. +GetSplitMapSpriteSetID: ; 17a1a (5:7a1a) + cp a,$f8 + jr z,.route20 + ld hl,SplitMapSpriteSets + and a,$0f + dec a + sla a + sla a + add l + ld l,a + jr nc,.noCarry + inc h +.noCarry + ld a,[hli] ; determines whether the map is split East/West or North/South + cp a,$01 + ld a,[hli] ; position of dividing line + ld b,a + jr z,.eastWestDivide +.northSouthDivide + ld a,[W_YCOORD] + jr .compareCoord +.eastWestDivide + ld a,[W_XCOORD] +.compareCoord + cp b + jr c,.loadSpriteSetID +; if in the East side or South side + inc hl +.loadSpriteSetID + ld a,[hl] ret - -VermilionDock_1dc59: ; 1dc59 (7:5c59) - ld a, [$cd3e] - sub $10 - ld [$cd3e], a - ld c, a - ld b, $64 - ld a, [$cd3d] - inc a - ld [$cd3d], a - ld a, $1 - ld de, VermilionDockOAMBlock - call WriteOAMBlock +; Uses sprite set $01 for West side and $0A for East side. +; Route 20 is a special case because the two map sections have a more complex +; shape instead of the map simply being split horizontally or vertically. +.route20 + ld hl,W_XCOORD + ld a,[hl] + cp a,$2b + ld a,$01 + ret c + ld a,[hl] + cp a,$3e + ld a,$0a + ret nc + ld a,[hl] + cp a,$37 + ld b,$08 + jr nc,.next + ld b,$0d +.next + ld a,[W_YCOORD] + cp b + ld a,$0a + ret c + ld a,$01 ret -VermilionDockOAMBlock: ; 1dc74 (7:5c74) - db $fc, $10 - db $fd, $10 - db $fe, $10 - db $ff, $10 +MapSpriteSets: ; 17a64 (5:7a64) + db $01 ; PALLET_TOWN + db $01 ; VIRIDIAN_CITY + db $02 ; PEWTER_CITY + db $02 ; CERULEAN_CITY + db $03 ; LAVENDER_TOWN + db $04 ; VERMILION_CITY + db $05 ; CELADON_CITY + db $0a ; FUCHSIA_CITY + db $01 ; CINNABAR_ISLAND + db $06 ; INDIGO_PLATEAU + db $07 ; SAFFRON_CITY + db $01 ; unused map ID + db $01 ; ROUTE_1 + db $f1 ; ROUTE_2 + db $02 ; ROUTE_3 + db $02 ; ROUTE_4 + db $f9 ; ROUTE_5 + db $fa ; ROUTE_6 + db $fb ; ROUTE_7 + db $fc ; ROUTE_8 + db $02 ; ROUTE_9 + db $f2 ; ROUTE_10 + db $f3 ; ROUTE_11 + db $f4 ; ROUTE_12 + db $08 ; ROUTE_13 + db $08 ; ROUTE_14 + db $f5 ; ROUTE_15 + db $f6 ; ROUTE_16 + db $09 ; ROUTE_17 + db $f7 ; ROUTE_18 + db $0a ; ROUTE_19 + db $f8 ; ROUTE_20 + db $01 ; ROUTE_21 + db $01 ; ROUTE_22 + db $06 ; ROUTE_23 + db $02 ; ROUTE_24 + db $02 ; ROUTE_25 -VermilionDock_1dc7c: ; 1dc7c (7:5c7c) - ld h, d - ld l, $50 - call .asm_1dc86 - ld h, $0 - ld l, $80 -.asm_1dc86 - ld a, [$ff44] - cp l - jr nz, .asm_1dc86 ; 0x1dc89 $fb - ld a, h - ld [$ff43], a -.asm_1dc8e - ld a, [$ff44] - cp h - jr z, .asm_1dc8e ; 0x1dc91 $fb - ret +; Format: +; 00: determines whether the map is split East/West or North/South +; $01 = East/West divide +; $02 = North/South divide +; 01: coordinate of dividing line +; 02: sprite set ID if in the West or North side +; 03: sprite set ID if in the East or South side +SplitMapSpriteSets: ; 17a89 (5:7a89) + db $02,$25,$02,$01 ; $f1 + db $02,$32,$02,$03 ; $f2 + db $01,$39,$04,$08 ; $f3 + db $02,$15,$03,$08 ; $f4 + db $01,$08,$0A,$08 ; $f5 + db $01,$18,$09,$05 ; $f6 + db $01,$22,$09,$0A ; $f7 + db $01,$35,$01,$0A ; $f8 + db $02,$21,$02,$07 ; $f9 + db $02,$02,$07,$04 ; $fa + db $01,$11,$05,$07 ; $fb + db $01,$03,$07,$03 ; $fc -VermilionDock_1dc94: ; 1dc94 (7:5c94) - ld hl, $cc5b - ld bc, $00b4 - ld a, $14 - call FillMemory - ld hl, $9940 - ld de, $cc5b - ld bc, $000c - call CopyVideoData - ld hl, $c754 - ld a, $d - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld a, (SFX_02_54 - SFX_Headers_02) / 3 - call PlaySound - ld c, $78 - call DelayFrames - ret +SpriteSets: ; 17ab9 (5:7ab9) +; sprite set $01 + db SPRITE_BLUE + db SPRITE_BUG_CATCHER + db SPRITE_GIRL + db SPRITE_FISHER2 + db SPRITE_BLACK_HAIR_BOY_1 + db SPRITE_GAMBLER + db SPRITE_SEEL + db SPRITE_OAK + db SPRITE_SWIMMER + db SPRITE_BALL + db SPRITE_LYING_OLD_MAN -VermilionDockTextPointers: ; 1dcbf (7:5cbf) - dw VermilionDockText1 +; sprite set $02 + db SPRITE_BUG_CATCHER + db SPRITE_ROCKET + db SPRITE_BLACK_HAIR_BOY_2 + db SPRITE_HIKER + db SPRITE_SLOWBRO + db SPRITE_BLUE + db SPRITE_GUARD + db SPRITE_LASS + db SPRITE_BLACK_HAIR_BOY_1 + db SPRITE_BALL + db SPRITE_LYING_OLD_MAN_UNUSED_2 -VermilionDockText1: ; 1dcc1 (7:5cc1) - TX_FAR _VermilionDockText1 - db "@" +; sprite set $03 + db SPRITE_LITTLE_GIRL + db SPRITE_GIRL + db SPRITE_BLACK_HAIR_BOY_2 + db SPRITE_HIKER + db SPRITE_GAMBLER + db SPRITE_SLOWBRO + db SPRITE_LASS + db SPRITE_BLACK_HAIR_BOY_1 + db SPRITE_GUARD + db SPRITE_BALL + db SPRITE_LYING_OLD_MAN_UNUSED_2 -VermilionDockObject: ; 0x1dcc6 (size=20) - db $f ; border tile +; sprite set $04 + db SPRITE_FOULARD_WOMAN + db SPRITE_BLACK_HAIR_BOY_2 + db SPRITE_BUG_CATCHER + db SPRITE_GAMBLER + db SPRITE_SLOWBRO + db SPRITE_GUARD + db SPRITE_SAILOR + db SPRITE_LASS + db SPRITE_BLACK_HAIR_BOY_1 + db SPRITE_BALL + db SPRITE_LYING_OLD_MAN_UNUSED_2 - db $2 ; warps - db $0, $e, $5, $ff - db $2, $e, $1, SS_ANNE_1 +; sprite set $05 + db SPRITE_LITTLE_GIRL + db SPRITE_YOUNG_BOY + db SPRITE_GIRL + db SPRITE_FISHER2 + db SPRITE_FAT_BALD_GUY + db SPRITE_OLD_PERSON + db SPRITE_SLOWBRO + db SPRITE_GUARD + db SPRITE_ROCKET + db SPRITE_BALL + db SPRITE_SNORLAX - db $0 ; signs +; sprite set $06 + db SPRITE_BUG_CATCHER + db SPRITE_GYM_HELPER + db SPRITE_SLOWBRO + db SPRITE_BLUE + db SPRITE_LASS + db SPRITE_BLACK_HAIR_BOY_1 + db SPRITE_SWIMMER + db SPRITE_GUARD + db SPRITE_GAMBLER + db SPRITE_BALL + db SPRITE_LYING_OLD_MAN_UNUSED_2 - db $0 ; people +; sprite set $07 + db SPRITE_ROCKET + db SPRITE_OAK_AIDE + db SPRITE_LAPRAS_GIVER + db SPRITE_ERIKA + db SPRITE_GENTLEMAN + db SPRITE_BIRD + db SPRITE_ROCKER + db SPRITE_BLACK_HAIR_BOY_1 + db SPRITE_SLOWBRO + db SPRITE_BALL + db SPRITE_LYING_OLD_MAN_UNUSED_2 - ; warp-to - EVENT_DISP VERMILION_DOCK_WIDTH, $0, $e - EVENT_DISP VERMILION_DOCK_WIDTH, $2, $e ; SS_ANNE_1 +; sprite set $08 + db SPRITE_BIKER + db SPRITE_BLACK_HAIR_BOY_2 + db SPRITE_FAT_BALD_GUY + db SPRITE_LASS + db SPRITE_BLACK_HAIR_BOY_1 + db SPRITE_FOULARD_WOMAN + db SPRITE_FISHER2 + db SPRITE_ROCKER + db SPRITE_SLOWBRO + db SPRITE_BALL + db SPRITE_SNORLAX -VermilionDockBlocks: ; 1dcda (7:5cda) - INCBIN "maps/vermiliondock.blk" +; sprite set $09 + db SPRITE_BIKER + db SPRITE_BLACK_HAIR_BOY_1 + db SPRITE_LAPRAS_GIVER + db SPRITE_FISHER2 + db SPRITE_ROCKER + db SPRITE_HIKER + db SPRITE_GAMBLER + db SPRITE_FAT_BALD_GUY + db SPRITE_BLACK_HAIR_BOY_2 + db SPRITE_BALL + db SPRITE_SNORLAX -CeladonMansion5_h: ; 0x1dd2e to 0x1dd3a (12 bytes) (bank=7) (id=132) - db HOUSE ; tileset - db CELADON_MANSION_5_HEIGHT, CELADON_MANSION_5_WIDTH ; dimensions (y, x) - dw CeladonMansion5Blocks, CeladonMansion5TextPointers, CeladonMansion5Script ; blocks, texts, scripts - db $00 ; connections - dw CeladonMansion5Object ; objects +; sprite set $0a + db SPRITE_BIRD + db SPRITE_BLACK_HAIR_BOY_1 + db SPRITE_CLEFAIRY + db SPRITE_FISHER2 + db SPRITE_GAMBLER + db SPRITE_SLOWBRO + db SPRITE_SEEL + db SPRITE_SWIMMER + db SPRITE_BUG_CATCHER + db SPRITE_BALL + db SPRITE_OMANYTE -CeladonMansion5Script: ; 1dd3a (7:5d3a) - jp EnableAutoTextBoxDrawing +SpriteSheetPointerTable: ; 17b27 (5:7b27) + ; SPRITE_RED + dw RedSprite + db $c0 ; byte count + db BANK(RedSprite) -CeladonMansion5TextPointers: ; 1dd3d (7:5d3d) - dw CeladonMansion5Text1 - dw CeladonMansion5Text2 + ; SPRITE_BLUE + dw BlueSprite + db $c0 ; byte count + db BANK(BlueSprite) -CeladonMansion5Text1: ; 1dd41 (7:5d41) - TX_FAR _CeladonMansion5Text1 - db "@" + ; SPRITE_OAK + dw OakSprite + db $c0 ; byte count + db BANK(OakSprite) -CeladonMansion5Text2: ; 1dd46 (7:5d46) - db $08 ; asm - ld bc,(EEVEE << 8) | 25 - call GivePokemon - jr nc, .asm_24365 ; 0x1dd4d - ld a, $45 - ld [$cc4d], a - ld a, $11 - call Predef -.asm_24365 ; 0x1dd59 - jp TextScriptEnd + ; SPRITE_BUG_CATCHER + dw BugCatcherSprite + db $c0 ; byte count + db BANK(BugCatcherSprite) -CeladonMansion5Object: ; 0x1dd5c (size=32) - db $a ; border tile + ; SPRITE_SLOWBRO + dw SlowbroSprite + db $c0 ; byte count + db BANK(SlowbroSprite) + + ; SPRITE_LASS + dw LassSprite + db $c0 ; byte count + db BANK(LassSprite) + + ; SPRITE_BLACK_HAIR_BOY_1 + dw BlackHairBoy1Sprite + db $c0 ; byte count + db BANK(BlackHairBoy1Sprite) + + ; SPRITE_LITTLE_GIRL + dw LittleGirlSprite + db $c0 ; byte count + db BANK(LittleGirlSprite) + + ; SPRITE_BIRD + dw BirdSprite + db $c0 ; byte count + db BANK(BirdSprite) + + ; SPRITE_FAT_BALD_GUY + dw FatBaldGuySprite + db $c0 ; byte count + db BANK(FatBaldGuySprite) + + ; SPRITE_GAMBLER + dw GamblerSprite + db $c0 ; byte count + db BANK(GamblerSprite) + + ; SPRITE_BLACK_HAIR_BOY_2 + dw BlackHairBoy2Sprite + db $c0 ; byte count + db BANK(BlackHairBoy2Sprite) - db $2 ; warps - db $7, $2, $2, CELADON_MANSION_4 - db $7, $3, $2, CELADON_MANSION_4 + ; SPRITE_GIRL + dw GirlSprite + db $c0 ; byte count + db BANK(GirlSprite) - db $0 ; signs + ; SPRITE_HIKER + dw HikerSprite + db $c0 ; byte count + db BANK(HikerSprite) - db $2 ; people - db SPRITE_HIKER, $2 + 4, $2 + 4, $ff, $d0, $1 ; person - db SPRITE_BALL, $3 + 4, $4 + 4, $ff, $ff, $2 ; person + ; SPRITE_FOULARD_WOMAN + dw FoulardWomanSprite + db $c0 ; byte count + db BANK(FoulardWomanSprite) - ; warp-to - EVENT_DISP CELADON_MANSION_5_WIDTH, $7, $2 ; CELADON_MANSION_4 - EVENT_DISP CELADON_MANSION_5_WIDTH, $7, $3 ; CELADON_MANSION_4 + ; SPRITE_GENTLEMAN + dw GentlemanSprite + db $c0 ; byte count + db BANK(GentlemanSprite) -FuchsiaMart_h: ; 0x1dd7c to 0x1dd88 (12 bytes) (bank=7) (id=152) - db MART ; tileset - db FUCHSIA_MART_HEIGHT, FUCHSIA_MART_WIDTH ; dimensions (y, x) - dw FuchsiaMartBlocks, FuchsiaMartTextPointers, FuchsiaMartScript ; blocks, texts, scripts - db $00 ; connections - dw FuchsiaMartObject ; objects + ; SPRITE_DAISY + dw DaisySprite + db $c0 ; byte count + db BANK(DaisySprite) -FuchsiaMartScript: ; 1dd88 (7:5d88) - jp EnableAutoTextBoxDrawing + ; SPRITE_BIKER + dw BikerSprite + db $c0 ; byte count + db BANK(BikerSprite) -FuchsiaMartTextPointers: ; 1dd8b (7:5d8b) - dw FuchsiaMartText1 - dw FuchsiaMartText2 - dw FuchsiaMartText3 + ; SPRITE_SAILOR + dw SailorSprite + db $c0 ; byte count + db BANK(SailorSprite) -FuchsiaMartText2: ; 1dd91 (7:5d91) - TX_FAR _FuchsiaMartText2 - db "@" + ; SPRITE_COOK + dw CookSprite + db $c0 ; byte count + db BANK(CookSprite) -FuchsiaMartText3: ; 1dd96 (7:5d96) - TX_FAR _FuchsiaMartText3 - db "@" + ; SPRITE_BIKE_SHOP_GUY + dw BikeShopGuySprite + db $c0 ; byte count + db BANK(BikeShopGuySprite) -FuchsiaMartObject: ; 0x1dd9b (size=38) - db $0 ; border tile + ; SPRITE_MR_FUJI + dw MrFujiSprite + db $c0 ; byte count + db BANK(MrFujiSprite) - db $2 ; warps - db $7, $3, $0, $ff - db $7, $4, $0, $ff + ; SPRITE_GIOVANNI + dw GiovanniSprite + db $c0 ; byte count + db BANK(GiovanniSprite) - db $0 ; signs + ; SPRITE_ROCKET + dw RocketSprite + db $c0 ; byte count + db BANK(RocketSprite) - db $3 ; people - db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $1 ; person - db SPRITE_FAT_BALD_GUY, $2 + 4, $4 + 4, $ff, $ff, $2 ; person - db SPRITE_LASS, $5 + 4, $6 + 4, $fe, $1, $3 ; person + ; SPRITE_MEDIUM + dw MediumSprite + db $c0 ; byte count + db BANK(MediumSprite) - ; warp-to - EVENT_DISP FUCHSIA_MART_WIDTH, $7, $3 - EVENT_DISP FUCHSIA_MART_WIDTH, $7, $4 + ; SPRITE_WAITER + dw WaiterSprite + db $c0 ; byte count + db BANK(WaiterSprite) -FuchsiaMartBlocks: ; 1ddc1 (7:5dc1) - INCBIN "maps/fuchsiamart.blk" + ; SPRITE_ERIKA + dw ErikaSprite + db $c0 ; byte count + db BANK(ErikaSprite) -SaffronHouse1_h: ; 0x1ddd1 to 0x1dddd (12 bytes) (bank=7) (id=179) - db HOUSE ; tileset - db SAFFRON_HOUSE_1_HEIGHT, SAFFRON_HOUSE_1_WIDTH ; dimensions (y, x) - dw SaffronHouse1Blocks, SaffronHouse1TextPointers, SaffronHouse1Script ; blocks, texts, scripts - db $00 ; connections - dw SaffronHouse1Object ; objects + ; SPRITE_MOM_GEISHA + dw MomGeishaSprite + db $c0 ; byte count + db BANK(MomGeishaSprite) -SaffronHouse1Script: ; 1dddd (7:5ddd) - jp EnableAutoTextBoxDrawing + ; SPRITE_BRUNETTE_GIRL + dw BrunetteGirlSprite + db $c0 ; byte count + db BANK(BrunetteGirlSprite) -SaffronHouse1TextPointers: ; 1dde0 (7:5de0) - dw SaffronHouse1Text1 - dw SaffronHouse1Text2 - dw SaffronHouse1Text3 - dw SaffronHouse1Text4 + ; SPRITE_LANCE + dw LanceSprite + db $c0 ; byte count + db BANK(LanceSprite) -SaffronHouse1Text1: ; 1dde8 (7:5de8) - TX_FAR _SaffronHouse1Text1 - db "@" + ; SPRITE_OAK_SCIENTIST_AIDE + dw OakAideSprite + db $c0 ; byte count + db BANK(OakAideSprite) -SaffronHouse1Text2: ; 1dded (7:5ded) - TX_FAR _SaffronHouse1Text2 - db $8 - ld a, PIDGEY - call PlayCry - jp TextScriptEnd + ; SPRITE_OAK_AIDE + dw OakAideSprite + db $c0 ; byte count + db BANK(OakAideSprite) -SaffronHouse1Text3: ; 1ddfa (7:5dfa) - TX_FAR _SaffronHouse1Text3 - db "@" + ; SPRITE_ROCKER + dw RockerSprite + db $c0 ; byte count + db BANK(RockerSprite) -SaffronHouse1Text4: ; 1ddff (7:5dff) - TX_FAR _SaffronHouse1Text4 - db "@" + ; SPRITE_SWIMMER + dw SwimmerSprite + db $c0 ; byte count + db BANK(SwimmerSprite) -SaffronHouse1Object: ; 0x1de04 (size=44) - db $a ; border tile + ; SPRITE_WHITE_PLAYER + dw WhitePlayerSprite + db $c0 ; byte count + db BANK(WhitePlayerSprite) - db $2 ; warps - db $7, $2, $3, $ff - db $7, $3, $3, $ff + ; SPRITE_GYM_HELPER + dw GymHelperSprite + db $c0 ; byte count + db BANK(GymHelperSprite) - db $0 ; signs + ; SPRITE_OLD_PERSON + dw OldPersonSprite + db $c0 ; byte count + db BANK(OldPersonSprite) - db $4 ; people - db SPRITE_BRUNETTE_GIRL, $3 + 4, $2 + 4, $ff, $d3, $1 ; person - db SPRITE_BIRD, $4 + 4, $0 + 4, $fe, $1, $2 ; person - db SPRITE_BUG_CATCHER, $1 + 4, $4 + 4, $ff, $d0, $3 ; person - db SPRITE_PAPER_SHEET, $3 + 4, $3 + 4, $ff, $ff, $4 ; person + ; SPRITE_MART_GUY + dw MartGuySprite + db $c0 ; byte count + db BANK(MartGuySprite) - ; warp-to - EVENT_DISP SAFFRON_HOUSE_1_WIDTH, $7, $2 - EVENT_DISP SAFFRON_HOUSE_1_WIDTH, $7, $3 + ; SPRITE_FISHER + dw FisherSprite + db $c0 ; byte count + db BANK(FisherSprite) -SaffronHouse2_h: ; 0x1de30 to 0x1de3c (12 bytes) (bank=7) (id=183) - db HOUSE ; tileset - db SAFFRON_HOUSE_2_HEIGHT, SAFFRON_HOUSE_2_WIDTH ; dimensions (y, x) - dw SaffronHouse2Blocks, SaffronHouse2TextPointers, SaffronHouse2Script ; blocks, texts, scripts - db $00 ; connections - dw SaffronHouse2Object ; objects + ; SPRITE_OLD_MEDIUM_WOMAN + dw OldMediumWomanSprite + db $c0 ; byte count + db BANK(OldMediumWomanSprite) -SaffronHouse2Script: ; 1de3c (7:5e3c) - jp EnableAutoTextBoxDrawing + ; SPRITE_NURSE + dw NurseSprite + db $c0 ; byte count + db BANK(NurseSprite) -SaffronHouse2TextPointers: ; 1de3f (7:5e3f) - dw SaffronHouse2Text1 + ; SPRITE_CABLE_CLUB_WOMAN + dw CableClubWomanSprite + db $c0 ; byte count + db BANK(CableClubWomanSprite) -SaffronHouse2Text1: ; 1de41 (7:5e41) - db $08 ; asm - ld a, [$d7bd] - bit 0, a - jr nz, .asm_9e72b ; 0x1de47 - ld hl, TM29PreReceiveText - call PrintText - ld bc,(TM_29 << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, ReceivedTM29Text - call PrintText - ld hl, $d7bd - set 0, [hl] - jr .asm_fe4e1 ; 0x1de62 -.BagFull - ld hl, TM29NoRoomText - call PrintText - jr .asm_fe4e1 ; 0x1de6a -.asm_9e72b ; 0x1de6c - ld hl, TM29ExplanationText - call PrintText -.asm_fe4e1 ; 0x1de72 - jp TextScriptEnd + ; SPRITE_MR_MASTERBALL + dw MrMasterballSprite + db $c0 ; byte count + db BANK(MrMasterballSprite) -TM29PreReceiveText: ; 1de75 (7:5e75) - TX_FAR _TM29PreReceiveText - db "@" + ; SPRITE_LAPRAS_GIVER + dw LaprasGiverSprite + db $c0 ; byte count + db BANK(LaprasGiverSprite) -ReceivedTM29Text: ; 1de7a (7:5e7a) - TX_FAR _ReceivedTM29Text - db $0B, "@" + ; SPRITE_WARDEN + dw WardenSprite + db $c0 ; byte count + db BANK(WardenSprite) -TM29ExplanationText: ; 1de80 (7:5e80) - TX_FAR _TM29ExplanationText - db "@" + ; SPRITE_SS_CAPTAIN + dw SsCaptainSprite + db $c0 ; byte count + db BANK(SsCaptainSprite) -TM29NoRoomText: ; 1de85 (7:5e85) - TX_FAR _TM29NoRoomText - db "@" + ; SPRITE_FISHER2 + dw Fisher2Sprite + db $c0 ; byte count + db BANK(Fisher2Sprite) -SaffronHouse2Object: ; 0x1de8a (size=26) - db $a ; border tile + ; SPRITE_BLACKBELT + dw BlackbeltSprite + db $c0 ; byte count + db BANK(BlackbeltSprite) - db $2 ; warps - db $7, $2, $7, $ff - db $7, $3, $7, $ff + ; SPRITE_GUARD + dw GuardSprite + db $c0 ; byte count + db BANK(GuardSprite) - db $0 ; signs + ; $32 + dw GuardSprite + db $c0 ; byte count + db BANK(GuardSprite) - db $1 ; people - db SPRITE_FISHER, $3 + 4, $5 + 4, $ff, $d2, $1 ; person + ; SPRITE_MOM + dw MomSprite + db $c0 ; byte count + db BANK(MomSprite) - ; warp-to - EVENT_DISP SAFFRON_HOUSE_2_WIDTH, $7, $2 - EVENT_DISP SAFFRON_HOUSE_2_WIDTH, $7, $3 + ; SPRITE_BALDING_GUY + dw BaldingGuySprite + db $c0 ; byte count + db BANK(BaldingGuySprite) -DiglettsCaveRoute2_h: ; 0x1dea4 to 0x1deb0 (12 bytes) (bank=7) (id=46) - db CAVERN ; tileset - db DIGLETTS_CAVE_EXIT_HEIGHT, DIGLETTS_CAVE_EXIT_WIDTH ; dimensions (y, x) - dw DiglettsCaveRoute2Blocks, DiglettsCaveRoute2TextPointers, DiglettsCaveRoute2Script ; blocks, texts, scripts - db $00 ; connections - dw DiglettsCaveRoute2Object ; objects + ; SPRITE_YOUNG_BOY + dw YoungBoySprite + db $c0 ; byte count + db BANK(YoungBoySprite) -DiglettsCaveRoute2Script: ; 1deb0 (7:5eb0) - ld a, $d - ld [$d365], a - jp EnableAutoTextBoxDrawing + ; SPRITE_GAMEBOY_KID + dw GameboyKidSprite + db $c0 ; byte count + db BANK(GameboyKidSprite) -DiglettsCaveRoute2TextPointers: ; 1deb8 (7:5eb8) - dw DiglettsCaveRoute2Text1 + ; SPRITE_GAMEBOY_KID_COPY + dw GameboyKidSprite + db $c0 ; byte count + db BANK(GameboyKidSprite) -DiglettsCaveRoute2Text1: ; 1deba (7:5eba) - TX_FAR _DiglettsCaveRoute2Text1 - db "@" + ; SPRITE_CLEFAIRY + dw ClefairySprite + db $c0 ; byte count + db BANK(ClefairySprite) -DiglettsCaveRoute2Object: ; 0x1debf (size=34) - db $7d ; border tile + ; SPRITE_AGATHA + dw AgathaSprite + db $c0 ; byte count + db BANK(AgathaSprite) - db $3 ; warps - db $7, $2, $0, $ff - db $7, $3, $0, $ff - db $4, $4, $0, DIGLETTS_CAVE + ; SPRITE_BRUNO + dw BrunoSprite + db $c0 ; byte count + db BANK(BrunoSprite) - db $0 ; signs + ; SPRITE_LORELEI + dw LoreleiSprite + db $c0 ; byte count + db BANK(LoreleiSprite) - db $1 ; people - db SPRITE_FISHER, $3 + 4, $3 + 4, $ff, $ff, $1 ; person + ; SPRITE_SEEL + dw SeelSprite + db $c0 ; byte count + db BANK(SeelSprite) - ; warp-to - EVENT_DISP DIGLETTS_CAVE_EXIT_WIDTH, $7, $2 - EVENT_DISP DIGLETTS_CAVE_EXIT_WIDTH, $7, $3 - EVENT_DISP DIGLETTS_CAVE_EXIT_WIDTH, $4, $4 ; DIGLETTS_CAVE + ; SPRITE_BALL + dw BallSprite + db $40 ; byte count + db BANK(BallSprite) -Route2House_h: ; 0x1dee1 to 0x1deed (12 bytes) (bank=7) (id=48) - db HOUSE ; tileset - db ROUTE_2_HOUSE_HEIGHT, ROUTE_2_HOUSE_WIDTH ; dimensions (y, x) - dw Route2HouseBlocks, Route2HouseTextPointers, Route2HouseScript ; blocks, texts, scripts - db $00 ; connections - dw Route2HouseObject ; objects + ; SPRITE_OMANYTE + dw OmanyteSprite + db $40 ; byte count + db BANK(OmanyteSprite) -Route2HouseScript: ; 1deed (7:5eed) - jp EnableAutoTextBoxDrawing + ; SPRITE_BOULDER + dw BoulderSprite + db $40 ; byte count + db BANK(BoulderSprite) -Route2HouseTextPointers: ; 1def0 (7:5ef0) - dw Route2HouseText1 - dw Route2HouseText2 + ; SPRITE_PAPER_SHEET + dw PaperSheetSprite + db $40 ; byte count + db BANK(PaperSheetSprite) -Route2HouseText1: ; 1def4 (7:5ef4) - TX_FAR _Route2HouseText1 - db "@" + ; SPRITE_BOOK_MAP_DEX + dw BookMapDexSprite + db $40 ; byte count + db BANK(BookMapDexSprite) -Route2HouseText2: ; 1def9 (7:5ef9) - db $08 ; asm - ld a, $1 - ld [wWhichTrade], a - ld a, $54 - call Predef - jp TextScriptEnd + ; SPRITE_CLIPBOARD + dw ClipboardSprite + db $40 ; byte count + db BANK(ClipboardSprite) -Route2HouseObject: ; 0x1df07 (size=32) - db $a ; border tile + ; SPRITE_SNORLAX + dw SnorlaxSprite + db $40 ; byte count + db BANK(SnorlaxSprite) - db $2 ; warps - db $7, $2, $2, $ff - db $7, $3, $2, $ff + ; SPRITE_OLD_AMBER_COPY + dw OldAmberSprite + db $40 ; byte count + db BANK(OldAmberSprite) - db $0 ; signs + ; SPRITE_OLD_AMBER + dw OldAmberSprite + db $40 ; byte count + db BANK(OldAmberSprite) - db $2 ; people - db SPRITE_OAK_AIDE, $4 + 4, $2 + 4, $ff, $d3, $1 ; person - db SPRITE_GAMEBOY_KID_COPY, $1 + 4, $4 + 4, $ff, $d0, $2 ; person + ; SPRITE_LYING_OLD_MAN_UNUSED_1 + dw LyingOldManSprite + db $40 ; byte count + db BANK(LyingOldManSprite) - ; warp-to - EVENT_DISP ROUTE_2_HOUSE_WIDTH, $7, $2 - EVENT_DISP ROUTE_2_HOUSE_WIDTH, $7, $3 + ; SPRITE_LYING_OLD_MAN_UNUSED_2 + dw LyingOldManSprite + db $40 ; byte count + db BANK(LyingOldManSprite) -Route5Gate_h: ; 0x1df27 to 0x1df33 (12 bytes) (bank=7) (id=70) - db GATE ; tileset - db ROUTE_5_GATE_HEIGHT, ROUTE_5_GATE_WIDTH ; dimensions (y, x) - dw Route5GateBlocks, Route5GateTextPointers, Route5GateScript ; blocks, texts, scripts - db $00 ; connections - dw Route5GateObject ; objects + ; SPRITE_LYING_OLD_MAN + dw LyingOldManSprite + db $40 ; byte count + db BANK(LyingOldManSprite) -Route5GateScript: ; 1df33 (7:5f33) - call EnableAutoTextBoxDrawing - ld a, [W_ROUTE5GATECURSCRIPT] - ld hl, Route5GateScriptPointers - jp CallFunctionInTable +PrintEmotionBubble: ; 17c47 (5:7c47) + ld a, [$cd50] + ld c, a + ld b, $0 + ld hl, EmotionBubblesPointerTable ; $7caf + add hl, bc + add hl, bc + ld e, [hl] + inc hl + ld d, [hl] + ld hl, $8f80 + ld bc, (BANK(EmotionBubblesPointerTable) << 8) + $04 + call CopyVideoData + ld a, [$cfcb] + push af + ld a, $ff + ld [$cfcb], a + ld a, [$d736] + bit 6, a + ld hl, $c38f + ld de, $c39f + jr z, .asm_17c7a + ld hl, $c37f + ld de, $c38f +.asm_17c7a + ld bc, $90 +.asm_17c7d + ld a, [hl] + ld [de], a + dec hl + dec de + dec bc + ld a, c + or b + jr nz, .asm_17c7d + ld hl, $c104 + ld a, [$cd4f] + swap a + ld c, a + ld b, $0 + add hl, bc + ld a, [hli] + ld b, a + inc hl + ld a, [hl] + add $8 + ld c, a + ld de, EmotionBubblesOAM ; $7cb5 + xor a + call WriteOAMBlock + ld c, $3c + call DelayFrames + pop af + ld [$cfcb], a + call DelayFrame + jp UpdateSprites + +EmotionBubblesPointerTable: ; 17caf (5:7caf) + dw EmotionBubbles + dw EmotionBubbles + $40 + dw EmotionBubbles + $80 -Route5GateScriptPointers: ; 1df3f (7:5f3f) - dw Route5GateScript0 - dw Route5GateScript1 +EmotionBubblesOAM: ; 17cb5 (5:7cb5) + db $F8,$00,$F9,$00 + db $FA,$00,$FB,$00 -Route5GateScript_1df43: ; 1df43 (7:5f43) - ld a, $40 - ld [$ccd3], a - ld a, $1 - ld [$cd38], a - jp Func_3486 +EmotionBubbles: ; 17cbd (5:7cbd) + INCBIN "gfx/emotion_bubbles.w16.2bpp" -Route5GateScript0: ; 1df50 (7:5f50) - ld a, [$d728] - bit 6, a +Func_17d7d: ; 17d7d (5:7d7d) + ld a, [wPlayerMonAccuracyMod] ; $cd1e + cp $86 + jr z, .asm_17d8d + cp $92 ret nz - ld hl, CoordsData_1df8f - call ArePlayerCoordsInArray - ret nc - ld a, $2 - ld [$d528], a - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld b, BANK(RemoveGuardDrink) - ld hl, RemoveGuardDrink + ld a, [wPlayerMonEvasionMod] ; $cd1f + cp $8f + ret nz +.asm_17d8d + ld a, [W_NUMINPARTY] ; $d163 + dec a + ld [wWhichPokemon], a ; $cf92 + ld a, $1 + ld [$ccd4], a + ld a, $32 + ld [W_ISLINKBATTLE], a ; $d12b + ld hl, Func_3ad0e + ld b, BANK(Func_3ad0e) call Bankswitch - ld a, [$ffdb] + xor a + ld [W_ISLINKBATTLE], a ; $d12b + jp Func_2307 + +SubstituteEffectHandler: ; 17dad (5:7dad) + ld c, 50 + call DelayFrames + ld hl, W_PLAYERMONMAXHP + ld de, wPlayerSubstituteHP + ld bc, W_PLAYERBATTSTATUS2 + ld a, [$fff3] ;whose turn? and a - jr nz, .asm_1df82 ; 0x1df70 $10 - ld a, $2 - ld [$ff8c], a - call DisplayTextID - call Route5GateScript_1df43 - ld a, $1 - ld [W_ROUTE5GATECURSCRIPT], a - ret -.asm_1df82 - ld a, $3 - ld [$ff8c], a - call DisplayTextID - ld hl, $d728 - set 6, [hl] - ret + jr z, .notEnemy + ld hl, W_ENEMYMONMAXHP + ld de, wEnemySubstituteHP + ld bc, W_ENEMYBATTSTATUS2 +.notEnemy + ld a, [bc] ;load flags + bit 4, a ;user already has substitute? + jr nz, .alreadyHasSubstitute ;skip this code if so + ;user doesn't have a substitute [yet] + push bc + ld a, [hli] ;load max hp + ld b, [hl] + srl a ;max hp / 4, [quarter health to remove from user] + rr b + srl a + rr b + push de + ld de, $fff2 ;subtract 8 to point to [current hp] instead of [max hp] + add hl, de ;HL -= 8 + pop de + ld a, b + ld [de], a ;save copy of HP to subtract in ccd7/ccd8 [how much HP substitute has] + ld a, [hld] ;load current hp + sub b ;subtract [max hp / 4] + ld d, a ;save low byte result in D + ld a, [hl] + sbc a, 0 ;borrow from high byte if needed + pop bc + jr c, .notEnoughHP ;underflow means user would be left with negative health + ;bug: note since it only brances on carry, it will possibly leave user with 0HP +.userHasZeroOrMoreHP + ldi [hl], a ;store high byte HP + ld [hl], d ;store low byte HP + ld h, b + ld l, c + set 4, [hl] ;set bit 4 of flags, user now has substitute + ld a, [$d355] ;load options + bit 7, a ;battle animation is enabled? + ld hl, Func_3fba8 ; $7ba8 ;animation enabled: 0F:7BA8 + ld b, BANK(Func_3fba8) + jr z, .animationEnabled + ld hl, AnimationSubstitute ;animation disabled: 1E:56E0 + ld b, BANK(AnimationSubstitute) +.animationEnabled + call Bankswitch ;jump to routine depending on animation setting + ld hl, SubstituteText + call PrintText + ld hl, Func_3cd5a + ld b, BANK(Func_3cd5a) + jp Bankswitch +.alreadyHasSubstitute + ld hl, HasSubstituteText + jr .printText +.notEnoughHP + ld hl, TooWeakSubstituteText +.printText + jp PrintText -CoordsData_1df8f: ; 1df8f (7:5f8f) - db 3,3 - db 3,4 - db $ff +SubstituteText: ; 17e1d (5:7e1d) + TX_FAR _SubstituteText + db "@" -Route5GateScript1: ; 1df94 (7:5f94) - ld a, [$cd38] - and a - ret nz - call Delay3 - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_ROUTE5GATECURSCRIPT], a - ret +HasSubstituteText: ; 17e22 (5:7e22) + TX_FAR _HasSubstituteText + db "@" -Route5GateTextPointers: ; 1dfa4 (7:5fa4) - dw Route5GateText1 - dw Route5GateText2 - dw Route5GateText3 +TooWeakSubstituteText: ; 17e27 (5:7e27) + TX_FAR _TooWeakSubstituteText + db "@" -Route8GateText1: ; 1dfaa (7:5faa) -Route7GateText1: ; 1dfaa (7:5faa) -Route6GateText1: ; 1dfaa (7:5faa) -Route5GateText1: ; 1dfaa (7:5faa) - db $8 - ld a, [$d728] - bit 6, a - jr nz, .asm_88856 ; 0x1dfb0 $2c - ld b, BANK(RemoveGuardDrink) - ld hl, RemoveGuardDrink +ActivatePC: ; 17e2c (5:7e2c) + call SaveScreenTilesToBuffer2 ;XXX: copy background from wTileMap to wTileMapBackup2 + ld a, (SFX_02_45 - SFX_Headers_02) / 3 + call PlaySound ;XXX: play sound or stop music + ld hl, TurnedOnPC1Text + call PrintText + call WaitForSoundToFinish ;XXX: wait for sound to be done + ld hl, wFlags_0xcd60 + set 3, [hl] + call LoadScreenTilesFromBuffer2 ;XXX: restore saved screen + call Delay3 +PCMainMenu: ; 17e48 (5:7e48) + ld b, BANK(Func_213c8) + ld hl, Func_213c8 call Bankswitch - ld a, [$ffdb] + ld hl, wFlags_0xcd60 + set 5, [hl] + call HandleMenuInput + bit 1, a ;if player pressed B + jp nz, LogOff + ld a, [wMaxMenuItem] + cp a, 2 + jr nz, .next ;if not 2 menu items (not counting log off) (2 occurs before you get the pokedex) + ld a, [wCurrentMenuItem] and a - jr nz, .asm_768a2 ; 0x1dfbd $11 - ld hl, UnnamedText_1dfe7 - call PrintText - call Route5GateScript_1df43 - ld a, $1 - ld [W_ROUTE5GATECURSCRIPT], a - jp TextScriptEnd -.asm_768a2 ; 0x1dfd0 - ld hl, UnnamedText_1dfec + jp z, BillsPC ;if current menu item id is 0, it's bills pc + cp a, 1 + jr z, .playersPC ;if current menu item id is 1, it's players pc + jp LogOff ;otherwise, it's 2, and you're logging off +.next + cp a, 3 + jr nz, .next2 ;if not 3 menu items (not counting log off) (3 occurs after you get the pokedex, before you beat the pokemon league) + ld a, [wCurrentMenuItem] + and a + jp z, BillsPC ;if current menu item id is 0, it's bills pc + cp a, 1 + jr z, .playersPC ;if current menu item id is 1, it's players pc + cp a, 2 + jp z, OaksPC ;if current menu item id is 2, it's oaks pc + jp LogOff ;otherwise, it's 3, and you're logging off +.next2 + ld a, [wCurrentMenuItem] + and a + jp z, BillsPC ;if current menu item id is 0, it's bills pc + cp a, 1 + jr z, .playersPC ;if current menu item id is 1, it's players pc + cp a, 2 + jp z, OaksPC ;if current menu item id is 2, it's oaks pc + cp a, 3 + jp z, PKMNLeague ;if current menu item id is 3, it's pkmnleague + jp LogOff ;otherwise, it's 4, and you're logging off +.playersPC + ld hl, wFlags_0xcd60 + res 5, [hl] + set 3, [hl] + ld a, (SFX_02_47 - SFX_Headers_02) / 3 + call PlaySound ;XXX: play sound or stop music + call WaitForSoundToFinish ;XXX: wait for sound to be done + ld hl, AccessedMyPCText call PrintText - ld hl, $d728 - set 6, [hl] - jp TextScriptEnd -.asm_88856 ; 0x1dfde - ld hl, UnnamedText_1dff6 + ld b, BANK(Func_78e6) + ld hl, Func_78e6 + call Bankswitch + jr ReloadMainMenu +OaksPC: ; 17ec0 (5:7ec0) + ld a, (SFX_02_47 - SFX_Headers_02) / 3 + call PlaySound ;XXX: play sound or stop music + call WaitForSoundToFinish ;XXX: wait for sound to be done + ld b, BANK(Func_1e915) + ld hl, Func_1e915 + call Bankswitch + jr ReloadMainMenu +PKMNLeague: ; 17ed2 (5:7ed2) + ld a, (SFX_02_47 - SFX_Headers_02) / 3 + call PlaySound ;XXX: play sound or stop music + call WaitForSoundToFinish ;XXX: wait for sound to be done + ld b, BANK(Func_7657e) + ld hl, Func_7657e + call Bankswitch + jr ReloadMainMenu +BillsPC: ; 17ee4 (5:7ee4) + ld a, (SFX_02_47 - SFX_Headers_02) / 3 + call PlaySound ;XXX: play sound or stop music + call WaitForSoundToFinish ;XXX: wait for sound to be done + ld a, [$D7F1] ;has to do with having met Bill + bit 0, a + jr nz, .billsPC ;if you've met bill, use that bill's instead of someone's + ld hl, AccessedSomeonesPCText + jr .printText +.billsPC + ld hl, AccessedBillsPCText +.printText call PrintText - jp TextScriptEnd + ld b, BANK(BillsPC_) + ld hl, BillsPC_ + call Bankswitch +ReloadMainMenu: ; 17f06 (5:7f06) + xor a + ld [$CC3C], a + call ReloadMapData + call UpdateSprites ;XXX: moves sprites + jp PCMainMenu +LogOff: ; 17f13 (5:7f13) + ld a, (SFX_02_46 - SFX_Headers_02) / 3 + call PlaySound ;XXX: play sound or stop music + call WaitForSoundToFinish ;XXX: wait for sound to be done + ld hl, wFlags_0xcd60 + res 3, [hl] + res 5, [hl] + ret -Route8GateText2: ; 1dfe7 (7:5fe7) -Route7GateText2: ; 1dfe7 (7:5fe7) -Route6GateText2: ; 1dfe7 (7:5fe7) -Route5GateText2: ; 1dfe7 (7:5fe7) -UnnamedText_1dfe7: ; 1dfe7 (7:5fe7) - TX_FAR _UnnamedText_1dfe7 +TurnedOnPC1Text: ; 17f23 (5:7f23) + TX_FAR _TurnedOnPC1Text db "@" -Route8GateText3: ; 1dfec (7:5fec) -Route7GateText3: ; 1dfec (7:5fec) -Route6GateText3: ; 1dfec (7:5fec) -Route5GateText3: ; 1dfec (7:5fec) -UnnamedText_1dfec: ; 1dfec (7:5fec) - TX_FAR _UnnamedText_8aaa9 ; 0x8aaa9 - db $11 - TX_FAR _UnnamedText_1dff1 ; 0x8aaef +AccessedBillsPCText: ; 17f28 (5:7f28) + TX_FAR _AccessedBillsPCText db "@" -UnnamedText_1dff6: ; 1dff6 (7:5ff6) - TX_FAR _UnnamedText_1dff6 +AccessedSomeonesPCText: ; 17f2d (5:7f2d) + TX_FAR _AccessedSomeonesPCText db "@" -Route5GateObject: ; 0x1dffb (size=42) - db $a ; border tile - - db $4 ; warps - db $5, $3, $2, $ff - db $5, $4, $2, $ff - db $0, $3, $1, $ff - db $0, $4, $0, $ff - - db $0 ; signs - - db $1 ; people - db SPRITE_GUARD, $3 + 4, $1 + 4, $ff, $d3, $1 ; person +AccessedMyPCText: ; 17f32 (5:7f32) + TX_FAR _AccessedMyPCText + db "@" - ; warp-to - EVENT_DISP ROUTE_5_GATE_WIDTH, $5, $3 - EVENT_DISP ROUTE_5_GATE_WIDTH, $5, $4 - EVENT_DISP ROUTE_5_GATE_WIDTH, $0, $3 - EVENT_DISP ROUTE_5_GATE_WIDTH, $0, $4 +; removes one of the specified item ID [$FFdb] from bag (if existent) +RemoveItemByID: ; 17f37 (5:7f37) + ld hl, wBagItems ; $d31e + ld a, [$ffdb] + ld b, a + xor a + ld [$ffdc], a +.asm_17f40 + ld a, [hli] + cp $ff + ret z + cp b + jr z, .asm_17f4f + inc hl + ld a, [$ffdc] + inc a + ld [$ffdc], a + jr .asm_17f40 +.asm_17f4f + ld a, $1 + ld [$cf96], a + ld a, [$ffdc] + ld [wWhichPokemon], a ; $cf92 + ld hl, wNumBagItems ; $d31d + jp RemoveItemFromInventory -Route5GateBlocks: ; 1e025 (7:6025) - INCBIN "maps/route5gate.blk" +SECTION "bank6",ROMX,BANK[$6] -Route6Gate_h: ; 0x1e031 to 0x1e03d (12 bytes) (bank=7) (id=73) - db GATE ; tileset - db ROUTE_6_GATE_HEIGHT, ROUTE_6_GATE_WIDTH ; dimensions (y, x) - dw Route6GateBlocks, Route6GateTextPointers, Route6GateScript ; blocks, texts, scripts - db $00 ; connections - dw Route6GateObject ; objects +CeladonCity_h: ; 18000 (6:4000) + db OVERWORLD ; tileset + db CELADON_CITY_HEIGHT, CELADON_CITY_WIDTH ; dimensions (y, x) + dw CeladonCityBlocks, CeladonCityTextPointers, CeladonCityScript ; blocks, texts, scripts + db WEST | EAST ; connections + WEST_MAP_CONNECTION ROUTE_16, ROUTE_16_WIDTH, 4, 0, ROUTE_16_HEIGHT, Route16Blocks, CELADON_CITY_WIDTH + EAST_MAP_CONNECTION ROUTE_7, ROUTE_7_WIDTH, 4, 0, ROUTE_7_HEIGHT, Route7Blocks, CELADON_CITY_WIDTH + dw CeladonCityObject ; objects -Route6GateScript: ; 1e03d (7:603d) - call EnableAutoTextBoxDrawing - ld hl, Route6GateScriptPointers - ld a, [W_ROUTE6GATECURSCRIPT] - call CallFunctionInTable - ret +CeladonCityObject: ; 0x18022 (size=189) + db $f ; border tile -Route6GateScriptPointers: ; 1e04a (7:604a) - dw Route6GateScript0 - dw Route6GateScript1 + db $d ; warps + db $d, $8, $0, CELADON_MART_1 + db $d, $a, $2, CELADON_MART_1 + db $9, $18, $0, CELADON_MANSION_1 + db $3, $18, $2, CELADON_MANSION_1 + db $3, $19, $2, CELADON_MANSION_1 + db $9, $29, $0, CELADON_POKECENTER + db $1b, $c, $0, CELADON_GYM + db $13, $1c, $0, GAME_CORNER + db $13, $27, $0, CELADON_MART_5 ; beta warp! no longer used + db $13, $21, $0, CELADON_PRIZE_ROOM + db $1b, $1f, $0, CELADON_DINER + db $1b, $23, $0, CELADON_HOUSE + db $1b, $2b, $0, CELADON_HOTEL -Route6GateScript0: ; 1e04e (7:604e) - ld a, [$d728] - bit 6, a - ret nz - ld hl, CoordsData_1e08c - call ArePlayerCoordsInArray - ret nc - ld a, $1 - ld [$d528], a - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld b, BANK(RemoveGuardDrink) - ld hl, RemoveGuardDrink - call Bankswitch - ld a, [$ffdb] - and a - jr nz, .asm_1e080 ; 0x1e06e $10 - ld a, $2 - ld [$ff8c], a - call DisplayTextID - call Func_1e0a1 - ld a, $1 - ld [W_ROUTE6GATECURSCRIPT], a - ret -.asm_1e080 - ld hl, $d728 - set 6, [hl] - ld a, $3 - ld [$ff8c], a - jp DisplayTextID + db $9 ; signs + db $f, $1b, $a ; CeladonCityText10 + db $f, $13, $b ; CeladonCityText11 + db $9, $2a, $c ; PokeCenterSignText + db $1d, $d, $d ; CeladonCityText13 + db $9, $15, $e ; CeladonCityText14 + db $d, $c, $f ; CeladonCityText15 + db $15, $27, $10 ; CeladonCityText16 + db $15, $21, $11 ; CeladonCityText17 + db $15, $1b, $12 ; CeladonCityText18 -CoordsData_1e08c: ; 1e08c (7:608c) - db $02,$03 - db $02,$04,$FF + db $9 ; people + db SPRITE_LITTLE_GIRL, $11 + 4, $8 + 4, $fe, $0, $1 ; person + db SPRITE_OLD_PERSON, $1c + 4, $b + 4, $ff, $d1, $2 ; person + db SPRITE_GIRL, $13 + 4, $e + 4, $fe, $1, $3 ; person + db SPRITE_OLD_PERSON, $16 + 4, $19 + 4, $ff, $d0, $4 ; person + db SPRITE_OLD_PERSON, $10 + 4, $16 + 4, $ff, $d0, $5 ; person + db SPRITE_FISHER2, $c + 4, $20 + 4, $ff, $d2, $6 ; person + db SPRITE_SLOWBRO, $c + 4, $1e + 4, $ff, $d3, $7 ; person + db SPRITE_ROCKET, $1d + 4, $20 + 4, $fe, $2, $8 ; person + db SPRITE_ROCKET, $e + 4, $2a + 4, $fe, $2, $9 ; person -Route6GateScript1: ; 1e091 (7:6091) - ld a, [$cd38] - and a - ret nz - call Delay3 - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_ROUTE6GATECURSCRIPT], a - ret + ; warp-to + EVENT_DISP CELADON_CITY_WIDTH, $d, $8 ; CELADON_MART_1 + EVENT_DISP CELADON_CITY_WIDTH, $d, $a ; CELADON_MART_1 + EVENT_DISP CELADON_CITY_WIDTH, $9, $18 ; CELADON_MANSION_1 + EVENT_DISP CELADON_CITY_WIDTH, $3, $18 ; CELADON_MANSION_1 + EVENT_DISP CELADON_CITY_WIDTH, $3, $19 ; CELADON_MANSION_1 + EVENT_DISP CELADON_CITY_WIDTH, $9, $29 ; CELADON_POKECENTER + EVENT_DISP CELADON_CITY_WIDTH, $1b, $c ; CELADON_GYM + EVENT_DISP CELADON_CITY_WIDTH, $13, $1c ; GAME_CORNER + EVENT_DISP CELADON_CITY_WIDTH, $13, $27 ; CELADON_MART_5 + EVENT_DISP CELADON_CITY_WIDTH, $13, $21 ; CELADON_PRIZE_ROOM + EVENT_DISP CELADON_CITY_WIDTH, $1b, $1f ; CELADON_DINER + EVENT_DISP CELADON_CITY_WIDTH, $1b, $23 ; CELADON_HOUSE + EVENT_DISP CELADON_CITY_WIDTH, $1b, $2b ; CELADON_HOTEL -Func_1e0a1: ; 1e0a1 (7:60a1) - ld hl, $d730 - set 7, [hl] - ld a, $80 - ld [$ccd3], a - ld a, $1 - ld [$cd38], a - xor a - ld [$c206], a - ld [$cd3b], a - ret +CeladonCityBlocks: ; 180df (6:40df) + INCBIN "maps/celadoncity.blk" -Route6GateTextPointers: ; 1e0b8 (7:60b8) - dw Route6GateText1 - dw Route6GateText2 - dw Route6GateText3 +PalletTown_h: ; 182a1 (6:42a1) + db OVERWORLD ; tileset + db PALLET_TOWN_HEIGHT, PALLET_TOWN_WIDTH ; dimensions + dw PalletTownBlocks, PalletTownTextPointers, PalletTownScript + db NORTH | SOUTH ; connections + NORTH_MAP_CONNECTION ROUTE_1, ROUTE_1_WIDTH, ROUTE_1_HEIGHT, 0, 0, ROUTE_1_WIDTH, Route1Blocks + SOUTH_MAP_CONNECTION ROUTE_21, ROUTE_21_WIDTH, 0, 0, ROUTE_21_WIDTH, Route21Blocks, PALLET_TOWN_WIDTH, PALLET_TOWN_HEIGHT + dw PalletTownObject -Route6GateObject: ; 0x1e0be (size=42) - db $a ; border tile +PalletTownObject: ; 0x182c3 (size=58) + db $b ; border tile - db $4 ; warps - db $5, $3, $2, $ff - db $5, $4, $2, $ff - db $0, $3, $1, $ff - db $0, $4, $1, $ff + db $3 ; warps + db $5, $5, $0, REDS_HOUSE_1F + db $5, $d, $0, BLUES_HOUSE + db $b, $c, $1, OAKS_LAB - db $0 ; signs + db $4 ; signs + db $d, $d, $4 ; PalletTownText4 + db $9, $7, $5 ; PalletTownText5 + db $5, $3, $6 ; PalletTownText6 + db $5, $b, $7 ; PalletTownText7 - db $1 ; people - db SPRITE_GUARD, $2 + 4, $6 + 4, $ff, $d2, $1 ; person + db $3 ; people + db SPRITE_OAK, $5 + 4, $8 + 4, $ff, $ff, $1 ; person + db SPRITE_GIRL, $8 + 4, $3 + 4, $fe, $0, $2 ; person + db SPRITE_FISHER2, $e + 4, $b + 4, $fe, $0, $3 ; person ; warp-to - EVENT_DISP ROUTE_6_GATE_WIDTH, $5, $3 - EVENT_DISP ROUTE_6_GATE_WIDTH, $5, $4 - EVENT_DISP ROUTE_6_GATE_WIDTH, $0, $3 - EVENT_DISP ROUTE_6_GATE_WIDTH, $0, $4 + EVENT_DISP PALLET_TOWN_WIDTH, $5, $5 ; REDS_HOUSE_1F + EVENT_DISP PALLET_TOWN_WIDTH, $5, $d ; BLUES_HOUSE + EVENT_DISP PALLET_TOWN_WIDTH, $b, $c ; OAKS_LAB -Route6GateBlocks: ; 1e0e8 (7:60e8) - INCBIN "maps/route6gate.blk" +PalletTownBlocks: ; 182fd (6:42fd) + INCBIN "maps/pallettown.blk" -Route7Gate_h: ; 0x1e0f4 to 0x1e100 (12 bytes) (bank=7) (id=76) - db GATE ; tileset - db ROUTE_7_GATE_HEIGHT, ROUTE_7_GATE_WIDTH ; dimensions (y, x) - dw Route7GateBlocks, Route7GateTextPointers, Route7GateScript ; blocks, texts, scripts - db $00 ; connections - dw Route7GateObject ; objects +ViridianCity_h: ; 0x18357 to 0x18384 (45 bytes) (bank=6) (id=1) + db OVERWORLD ; tileset + db VIRIDIAN_CITY_HEIGHT, VIRIDIAN_CITY_WIDTH ; dimensions (y, x) + dw ViridianCityBlocks, ViridianCityTextPointers, ViridianCityScript ; blocks, texts, scripts + db NORTH | SOUTH | WEST ; connections + NORTH_MAP_CONNECTION ROUTE_2, ROUTE_2_WIDTH, ROUTE_2_HEIGHT, 5, 0, ROUTE_2_WIDTH, Route2Blocks + SOUTH_MAP_CONNECTION ROUTE_1, ROUTE_1_WIDTH, 5, 0, ROUTE_1_WIDTH, Route1Blocks, VIRIDIAN_CITY_WIDTH, VIRIDIAN_CITY_HEIGHT + WEST_MAP_CONNECTION ROUTE_22, ROUTE_22_WIDTH, 4, 0, ROUTE_22_HEIGHT, Route22Blocks, VIRIDIAN_CITY_WIDTH + dw ViridianCityObject ; objects -Route7GateScript: ; 1e100 (7:6100) - call EnableAutoTextBoxDrawing - ld a, [W_ROUTE7GATECURSCRIPT] - ld hl, Route7GateScriptPointers - call CallFunctionInTable - ret +ViridianCityObject: ; 0x18384 (size=104) + db $f ; border tile -Route7GateScriptPointers: ; 1e10d (7:610d) - dw Route7GateScript0 - dw Route7GateScript1 + db $5 ; warps + db $19, $17, $0, VIRIDIAN_POKECENTER + db $13, $1d, $0, VIRIDIAN_MART + db $f, $15, $0, VIRIDIAN_SCHOOL + db $9, $15, $0, VIRIDIAN_HOUSE + db $7, $20, $0, VIRIDIAN_GYM -Route7GateScript_1e111: ; 1e111 (7:6111) - ld hl, $d730 - set 7, [hl] - ld a, $20 - ld [$ccd3], a - ld a, $1 - ld [$cd38], a - xor a - ld [$c206], a - ld [$cd3b], a - ret + db $6 ; signs + db $11, $11, $8 ; ViridianCityText8 + db $1, $13, $9 ; ViridianCityText9 + db $1d, $15, $a ; ViridianCityText10 + db $13, $1e, $b ; MartSignText + db $19, $18, $c ; PokeCenterSignText + db $7, $1b, $d ; ViridianCityText13 -Route7GateScript0: ; 1e128 (7:6128) - ld a, [$d728] - bit 6, a - ret nz - ld hl, CoordsData_1e167 - call ArePlayerCoordsInArray - ret nc - ld a, $8 - ld [$d528], a - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld b, BANK(RemoveGuardDrink) - ld hl, RemoveGuardDrink - call Bankswitch - ld a, [$ffdb] - and a - jr nz, .asm_1e15a ; 0x1e148 $10 - ld a, $2 - ld [$ff8c], a - call DisplayTextID - call Route7GateScript_1e111 - ld a, $1 - ld [W_ROUTE7GATECURSCRIPT], a - ret -.asm_1e15a - ld a, $3 - ld [$ff8c], a - call DisplayTextID - ld hl, $d728 - set 6, [hl] - ret + db $7 ; people + db SPRITE_BUG_CATCHER, $14 + 4, $d + 4, $fe, $0, $1 ; person + db SPRITE_GAMBLER, $8 + 4, $1e + 4, $ff, $ff, $2 ; person + db SPRITE_BUG_CATCHER, $19 + 4, $1e + 4, $fe, $0, $3 ; person + db SPRITE_GIRL, $9 + 4, $11 + 4, $ff, $d3, $4 ; person + db SPRITE_LYING_OLD_MAN, $9 + 4, $12 + 4, $ff, $ff, $5 ; person + db SPRITE_FISHER2, $17 + 4, $6 + 4, $ff, $d0, $6 ; person + db SPRITE_GAMBLER, $5 + 4, $11 + 4, $fe, $2, $7 ; person -CoordsData_1e167: ; 1e167 (7:6167) - db 3,3 - db 4,3 - db $ff + ; warp-to + EVENT_DISP VIRIDIAN_CITY_WIDTH, $19, $17 ; VIRIDIAN_POKECENTER + EVENT_DISP VIRIDIAN_CITY_WIDTH, $13, $1d ; VIRIDIAN_MART + EVENT_DISP VIRIDIAN_CITY_WIDTH, $f, $15 ; VIRIDIAN_SCHOOL + EVENT_DISP VIRIDIAN_CITY_WIDTH, $9, $15 ; VIRIDIAN_HOUSE + EVENT_DISP VIRIDIAN_CITY_WIDTH, $7, $20 ; VIRIDIAN_GYM -Route7GateScript1: ; 1e16c (7:616c) - ld a, [$cd38] - and a - ret nz - call Delay3 - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_ROUTE7GATECURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret +ViridianCityBlocks: ; 183ec (6:43ec) + INCBIN "maps/viridiancity.blk" -Route7GateTextPointers: ; 1e17f (7:617f) - dw Route7GateText1 - dw Route7GateText2 - dw Route7GateText3 +PewterCity_h: ; 0x18554 to 0x18576 (34 bytes) (bank=6) (id=2) + db OVERWORLD ; tileset + db PEWTER_CITY_HEIGHT, PEWTER_CITY_WIDTH ; dimensions (y, x) + dw PewterCityBlocks, PewterCityTextPointers, PewterCityScript ; blocks, texts, scripts + db SOUTH | EAST ; connections + SOUTH_MAP_CONNECTION ROUTE_2, ROUTE_2_WIDTH, 5, 0, ROUTE_2_WIDTH, Route2Blocks, PEWTER_CITY_WIDTH, PEWTER_CITY_HEIGHT + EAST_MAP_CONNECTION ROUTE_3, ROUTE_3_WIDTH, 4, 0, ROUTE_3_HEIGHT, Route3Blocks, PEWTER_CITY_WIDTH + dw PewterCityObject ; objects -Route7GateObject: ; 0x1e185 (size=42) + db $0 + +PewterCityObject: ; 0x18577 (size=111) db $a ; border tile - db $4 ; warps - db $3, $0, $3, $ff - db $4, $0, $3, $ff - db $3, $5, $0, $ff - db $4, $5, $1, $ff + db $7 ; warps + db $7, $e, $0, MUSEUM_1F + db $5, $13, $2, MUSEUM_1F + db $11, $10, $0, PEWTER_GYM + db $d, $1d, $0, PEWTER_HOUSE_1 + db $11, $17, $0, PEWTER_MART + db $1d, $7, $0, PEWTER_HOUSE_2 + db $19, $d, $0, PEWTER_POKECENTER - db $0 ; signs + db $7 ; signs + db $1d, $13, $6 ; PewterCityText6 + db $13, $21, $7 ; PewterCityText7 + db $11, $18, $8 ; MartSignText + db $19, $e, $9 ; PokeCenterSignText + db $9, $f, $a ; PewterCityText10 + db $11, $b, $b ; PewterCityText11 + db $17, $19, $c ; PewterCityText12 - db $1 ; people - db SPRITE_GUARD, $1 + 4, $3 + 4, $ff, $d0, $1 ; person + db $5 ; people + db SPRITE_LASS, $f + 4, $8 + 4, $ff, $ff, $1 ; person + db SPRITE_BLACK_HAIR_BOY_1, $19 + 4, $11 + 4, $ff, $ff, $2 ; person + db SPRITE_BLACK_HAIR_BOY_2, $11 + 4, $1b + 4, $ff, $ff, $3 ; person + db SPRITE_BLACK_HAIR_BOY_2, $19 + 4, $1a + 4, $fe, $2, $4 ; person + db SPRITE_BUG_CATCHER, $10 + 4, $23 + 4, $ff, $d0, $5 ; person ; warp-to - EVENT_DISP ROUTE_7_GATE_WIDTH, $3, $0 - EVENT_DISP ROUTE_7_GATE_WIDTH, $4, $0 - EVENT_DISP ROUTE_7_GATE_WIDTH, $3, $5 - EVENT_DISP ROUTE_7_GATE_WIDTH, $4, $5 + EVENT_DISP PEWTER_CITY_WIDTH, $7, $e ; MUSEUM_1F + EVENT_DISP PEWTER_CITY_WIDTH, $5, $13 ; MUSEUM_1F + EVENT_DISP PEWTER_CITY_WIDTH, $11, $10 ; PEWTER_GYM + EVENT_DISP PEWTER_CITY_WIDTH, $d, $1d ; PEWTER_HOUSE_1 + EVENT_DISP PEWTER_CITY_WIDTH, $11, $17 ; PEWTER_MART + EVENT_DISP PEWTER_CITY_WIDTH, $1d, $7 ; PEWTER_HOUSE_2 + EVENT_DISP PEWTER_CITY_WIDTH, $19, $d ; PEWTER_POKECENTER -Route7GateBlocks: ; 1e1af (7:61af) - INCBIN "maps/route7gate.blk" +PewterCityBlocks: ; 185e6 (6:45e6) + INCBIN "maps/pewtercity.blk" -Route8Gate_h: ; 0x1e1bb to 0x1e1c7 (12 bytes) (bank=7) (id=79) - db GATE ; tileset - db ROUTE_8_GATE_HEIGHT, ROUTE_8_GATE_WIDTH ; dimensions (y, x) - dw Route8GateBlocks, Route8GateTextPointers, Route8GateScript ; blocks, texts, scripts - db $00 ; connections - dw Route8GateObject ; objects +CeruleanCity_h: ; 0x1874e to 0x18786 (56 bytes) (bank=6) (id=3) + db OVERWORLD ; tileset + db CERULEAN_CITY_HEIGHT, CERULEAN_CITY_WIDTH ; dimensions (y, x) + dw CeruleanCityBlocks, CeruleanCityTextPointers, CeruleanCityScript ; blocks, texts, scripts + db NORTH | SOUTH | WEST | EAST ; connections + NORTH_MAP_CONNECTION ROUTE_24, ROUTE_24_WIDTH, ROUTE_24_HEIGHT, 5, 0, ROUTE_24_WIDTH, Route24Blocks + SOUTH_MAP_CONNECTION ROUTE_5, ROUTE_5_WIDTH, 5, 0, ROUTE_5_WIDTH, Route5Blocks, CERULEAN_CITY_WIDTH, CERULEAN_CITY_HEIGHT + WEST_MAP_CONNECTION ROUTE_4, ROUTE_4_WIDTH, 4, 0, ROUTE_4_HEIGHT, Route4Blocks, CERULEAN_CITY_WIDTH + EAST_MAP_CONNECTION ROUTE_9, ROUTE_9_WIDTH, 4, 0, ROUTE_9_HEIGHT, Route9Blocks, CERULEAN_CITY_WIDTH + dw CeruleanCityObject ; objects -Route8GateScript: ; 1e1c7 (7:61c7) - call EnableAutoTextBoxDrawing - ld hl, Route8GateScriptPointers - ld a, [W_ROUTE8GATECURSCRIPT] - jp CallFunctionInTable +CeruleanCityObject: ; 0x18786 (size=170) + db $f ; border tile -Route8GateScriptPointers: ; 1e1d3 (7:61d3) - dw Route8GateScript0 - dw Route8GateScript1 + db $a ; warps + db $b, $1b, $0, TRASHED_HOUSE + db $f, $d, $0, CERULEAN_HOUSE + db $11, $13, $0, CERULEAN_POKECENTER + db $13, $1e, $0, CERULEAN_GYM + db $19, $d, $0, BIKE_SHOP + db $19, $19, $0, CERULEAN_MART + db $b, $4, $0, UNKNOWN_DUNGEON_1 + db $9, $1b, $2, TRASHED_HOUSE + db $b, $9, $1, CERULEAN_HOUSE_3 + db $9, $9, $0, CERULEAN_HOUSE_3 -Route8GateScript_1e1d7: ; 1e1d7 (7:61d7) - ld hl, $d730 - set 7, [hl] - ld a, $10 - ld [$ccd3], a - ld a, $1 - ld [$cd38], a - xor a - ld [$c206], a - ld [$cd3b], a - ret + db $6 ; signs + db $13, $17, $c ; CeruleanCityText12 + db $1d, $11, $d ; CeruleanCityText13 + db $19, $1a, $e ; MartSignText + db $11, $14, $f ; PokeCenterSignText + db $19, $b, $10 ; CeruleanCityText16 + db $15, $1b, $11 ; CeruleanCityText17 -Route8GateScript0: ; 1e1ee (7:61ee) - ld a, [$d728] - bit 6, a - ret nz - ld hl, CoordsData_1e22c - call ArePlayerCoordsInArray - ret nc - ld a, $2 - ld [$d528], a - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld b, BANK(RemoveGuardDrink) - ld hl, RemoveGuardDrink - call Bankswitch - ld a, [$ffdb] - and a - jr nz, .asm_1e220 ; 0x1e20e $10 - ld a, $2 - ld [$ff8c], a - call DisplayTextID - call Route8GateScript_1e1d7 - ld a, $1 - ld [W_ROUTE8GATECURSCRIPT], a - ret -.asm_1e220 - ld hl, $d728 - set 6, [hl] - ld a, $3 - ld [$ff8c], a - jp DisplayTextID + db $b ; people + db SPRITE_BLUE, $2 + 4, $14 + 4, $ff, $d0, $1 ; person + db SPRITE_ROCKET, $8 + 4, $1e + 4, $ff, $ff, $42, ROCKET + $C8, $5 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $14 + 4, $1f + 4, $ff, $d0, $3 ; person + db SPRITE_BLACK_HAIR_BOY_2, $12 + 4, $f + 4, $fe, $1, $4 ; person + db SPRITE_BLACK_HAIR_BOY_2, $15 + 4, $9 + 4, $fe, $2, $5 ; person + db SPRITE_GUARD, $c + 4, $1c + 4, $ff, $d0, $6 ; person + db SPRITE_LASS, $1a + 4, $1d + 4, $ff, $d2, $7 ; person + db SPRITE_SLOWBRO, $1a + 4, $1c + 4, $ff, $d0, $8 ; person + db SPRITE_LASS, $1b + 4, $9 + 4, $fe, $2, $9 ; person + db SPRITE_BLACK_HAIR_BOY_2, $c + 4, $4 + 4, $ff, $d0, $a ; person + db SPRITE_GUARD, $c + 4, $1b + 4, $ff, $d0, $b ; person -CoordsData_1e22c: ; 1e22c (7:622c) - db 3,2 - db 4,2 - db $ff + ; warp-to + EVENT_DISP CERULEAN_CITY_WIDTH, $b, $1b ; TRASHED_HOUSE + EVENT_DISP CERULEAN_CITY_WIDTH, $f, $d ; CERULEAN_HOUSE + EVENT_DISP CERULEAN_CITY_WIDTH, $11, $13 ; CERULEAN_POKECENTER + EVENT_DISP CERULEAN_CITY_WIDTH, $13, $1e ; CERULEAN_GYM + EVENT_DISP CERULEAN_CITY_WIDTH, $19, $d ; BIKE_SHOP + EVENT_DISP CERULEAN_CITY_WIDTH, $19, $19 ; CERULEAN_MART + EVENT_DISP CERULEAN_CITY_WIDTH, $b, $4 ; UNKNOWN_DUNGEON_1 + EVENT_DISP CERULEAN_CITY_WIDTH, $9, $1b ; TRASHED_HOUSE + EVENT_DISP CERULEAN_CITY_WIDTH, $b, $9 ; CERULEAN_HOUSE_3 + EVENT_DISP CERULEAN_CITY_WIDTH, $9, $9 ; CERULEAN_HOUSE_3 -Route8GateScript1: ; 1e231 (7:6231) - ld a, [$cd38] - and a - ret nz - call Delay3 - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_ROUTE8GATECURSCRIPT], a - ret +CeruleanCityBlocks: ; 18830 (6:4830) + INCBIN "maps/ceruleancity.blk" -Route8GateTextPointers: ; 1e241 (7:6241) - dw Route8GateText1 - dw Route8GateText2 - dw Route8GateText3 +VermilionCity_h: ; 0x18998 to 0x189ba (34 bytes) (bank=6) (id=5) + db OVERWORLD ; tileset + db VERMILION_CITY_HEIGHT, VERMILION_CITY_WIDTH ; dimensions (y, x) + dw VermilionCityBlocks, VermilionCityTextPointers, VermilionCityScript ; blocks, texts, scripts + db NORTH | EAST ; connections + NORTH_MAP_CONNECTION ROUTE_6, ROUTE_6_WIDTH, ROUTE_6_HEIGHT, 5, 0, ROUTE_6_WIDTH, Route6Blocks + EAST_MAP_CONNECTION ROUTE_11, ROUTE_11_WIDTH, 4, 0, ROUTE_11_HEIGHT, Route11Blocks, VERMILION_CITY_WIDTH + dw VermilionCityObject ; objects -Route8GateObject: ; 0x1e247 (size=42) - db $a ; border tile +VermilionCityObject: ; 0x189ba (size=133) + db $43 ; border tile - db $4 ; warps - db $3, $0, $0, $ff - db $4, $0, $1, $ff - db $3, $5, $2, $ff - db $4, $5, $3, $ff + db $9 ; warps + db $3, $b, $0, VERMILION_POKECENTER + db $d, $9, $0, POKEMON_FAN_CLUB + db $d, $17, $0, VERMILION_MART + db $13, $c, $0, VERMILION_GYM + db $13, $17, $0, VERMILION_HOUSE_1 + db $1f, $12, $0, VERMILION_DOCK + db $1f, $13, $0, VERMILION_DOCK + db $d, $f, $0, VERMILION_HOUSE_3 + db $3, $7, $0, VERMILION_HOUSE_2 - db $0 ; signs + db $7 ; signs + db $3, $1b, $7 ; VermilionCityText7 + db $d, $25, $8 ; VermilionCityText8 + db $d, $18, $9 ; MartSignText + db $3, $c, $a ; PokeCenterSignText + db $d, $7, $b ; VermilionCityText11 + db $13, $7, $c ; VermilionCityText12 + db $f, $1d, $d ; VermilionCityText13 - db $1 ; people - db SPRITE_GUARD, $1 + 4, $2 + 4, $ff, $d0, $1 ; person + db $6 ; people + db SPRITE_FOULARD_WOMAN, $7 + 4, $13 + 4, $fe, $2, $1 ; person + db SPRITE_GAMBLER, $6 + 4, $e + 4, $ff, $ff, $2 ; person + db SPRITE_SAILOR, $1e + 4, $13 + 4, $ff, $d1, $3 ; person + db SPRITE_GAMBLER, $7 + 4, $1e + 4, $ff, $ff, $4 ; person + db SPRITE_SLOWBRO, $9 + 4, $1d + 4, $fe, $1, $5 ; person + db SPRITE_SAILOR, $1b + 4, $19 + 4, $fe, $2, $6 ; person ; warp-to - EVENT_DISP ROUTE_8_GATE_WIDTH, $3, $0 - EVENT_DISP ROUTE_8_GATE_WIDTH, $4, $0 - EVENT_DISP ROUTE_8_GATE_WIDTH, $3, $5 - EVENT_DISP ROUTE_8_GATE_WIDTH, $4, $5 + EVENT_DISP VERMILION_CITY_WIDTH, $3, $b ; VERMILION_POKECENTER + EVENT_DISP VERMILION_CITY_WIDTH, $d, $9 ; POKEMON_FAN_CLUB + EVENT_DISP VERMILION_CITY_WIDTH, $d, $17 ; VERMILION_MART + EVENT_DISP VERMILION_CITY_WIDTH, $13, $c ; VERMILION_GYM + EVENT_DISP VERMILION_CITY_WIDTH, $13, $17 ; VERMILION_HOUSE_1 + EVENT_DISP VERMILION_CITY_WIDTH, $1f, $12 ; VERMILION_DOCK + EVENT_DISP VERMILION_CITY_WIDTH, $1f, $13 ; VERMILION_DOCK + EVENT_DISP VERMILION_CITY_WIDTH, $d, $f ; VERMILION_HOUSE_3 + EVENT_DISP VERMILION_CITY_WIDTH, $3, $7 ; VERMILION_HOUSE_2 -Route8GateBlocks: ; 1e271 (7:6271) - INCBIN "maps/route8gate.blk" +VermilionCityBlocks: ; 18a3f (6:4a3f) + INCBIN "maps/vermilioncity.blk" -UndergroundPathEntranceRoute8_h: ; 0x1e27d to 0x1e289 (12 bytes) (bank=7) (id=80) - db GATE ; tileset - db PATH_ENTRANCE_ROUTE_8_HEIGHT, PATH_ENTRANCE_ROUTE_8_WIDTH ; dimensions (y, x) - dw UndergroundPathEntranceRoute8Blocks, UndergroundPathEntranceRoute8TextPointers, UndergroundPathEntranceRoute8Script ; blocks, texts, scripts - db $00 ; connections - dw UndergroundPathEntranceRoute8Object ; objects +FuchsiaCity_h: ; 0x18ba7 to 0x18bd4 (45 bytes) (bank=6) (id=7) + db OVERWORLD ; tileset + db FUCHSIA_CITY_HEIGHT, FUCHSIA_CITY_WIDTH ; dimensions (y, x) + dw FuchsiaCityBlocks, FuchsiaCityTextPointers, FuchsiaCityScript ; blocks, texts, scripts + db SOUTH | WEST | EAST ; connections + SOUTH_MAP_CONNECTION ROUTE_19, ROUTE_19_WIDTH, 5, 0, ROUTE_19_WIDTH, Route19Blocks, FUCHSIA_CITY_WIDTH, FUCHSIA_CITY_HEIGHT + WEST_MAP_CONNECTION ROUTE_18, ROUTE_18_WIDTH, 4, 0, ROUTE_18_HEIGHT, Route18Blocks, FUCHSIA_CITY_WIDTH + EAST_MAP_CONNECTION ROUTE_15, ROUTE_15_WIDTH, 4, 0, ROUTE_15_HEIGHT, Route15Blocks, FUCHSIA_CITY_WIDTH + dw FuchsiaCityObject ; objects -UndergroundPathEntranceRoute8Script: ; 1e289 (7:6289) - ld a, $13 - ld [$d365], a - jp EnableAutoTextBoxDrawing +FuchsiaCityObject: ; 0x18bd4 (size=178) + db $f ; border tile -UndergroundPathEntranceRoute8TextPointers: ; 1e291 (7:6291) - dw UndergroundPathEntranceRoute8Text1 + db $9 ; warps + db $d, $5, $0, FUCHSIA_MART + db $1b, $b, $0, FUCHSIA_HOUSE_1 + db $1b, $13, $0, FUCHSIA_POKECENTER + db $1b, $1b, $0, FUCHSIA_HOUSE_2 + db $3, $12, $0, SAFARI_ZONE_ENTRANCE + db $1b, $5, $0, FUCHSIA_GYM + db $d, $16, $0, FUCHSIA_MEETING_ROOM + db $1b, $1f, $1, FUCHSIA_HOUSE_3 + db $18, $1f, $0, FUCHSIA_HOUSE_3 -UndergroundPathEntranceRoute8Text1: ; 1e293 (7:6293) - TX_FAR _UndergroundPathEntRoute8Text1 - db "@" + db $e ; signs + db $17, $f, $b ; FuchsiaCityText11 + db $f, $19, $c ; FuchsiaCityText12 + db $5, $11, $d ; FuchsiaCityText13 + db $d, $6, $e ; MartSignText + db $1b, $14, $f ; PokeCenterSignText + db $1d, $1b, $10 ; FuchsiaCityText16 + db $f, $15, $11 ; FuchsiaCityText17 + db $1d, $5, $12 ; FuchsiaCityText18 + db $7, $21, $13 ; FuchsiaCityText19 + db $7, $1b, $14 ; FuchsiaCityText20 + db $7, $d, $15 ; FuchsiaCityText21 + db $d, $1f, $16 ; FuchsiaCityText22 + db $f, $d, $17 ; FuchsiaCityText23 + db $7, $7, $18 ; FuchsiaCityText24 -UndergroundPathEntranceRoute8Object: ; 0x1e298 (size=34) - db $a ; border tile + db $a ; people + db SPRITE_BUG_CATCHER, $c + 4, $a + 4, $fe, $2, $1 ; person + db SPRITE_GAMBLER, $11 + 4, $1c + 4, $fe, $2, $2 ; person + db SPRITE_FISHER2, $e + 4, $1e + 4, $ff, $d0, $3 ; person + db SPRITE_BUG_CATCHER, $8 + 4, $18 + 4, $ff, $d1, $4 ; person + db SPRITE_CLEFAIRY, $5 + 4, $1f + 4, $fe, $0, $5 ; person + db SPRITE_BALL, $6 + 4, $19 + 4, $ff, $ff, $6 ; person + db SPRITE_SLOWBRO, $6 + 4, $c + 4, $fe, $2, $7 ; person + db SPRITE_SLOWBRO, $c + 4, $1e + 4, $fe, $2, $8 ; person + db SPRITE_SEEL, $11 + 4, $8 + 4, $fe, $0, $9 ; person + db SPRITE_OMANYTE, $5 + 4, $6 + 4, $ff, $ff, $a ; person - db $3 ; warps - db $7, $3, $4, $ff - db $7, $4, $4, $ff - db $4, $4, $1, UNDERGROUND_PATH_WE + ; warp-to + EVENT_DISP FUCHSIA_CITY_WIDTH, $d, $5 ; FUCHSIA_MART + EVENT_DISP FUCHSIA_CITY_WIDTH, $1b, $b ; FUCHSIA_HOUSE_1 + EVENT_DISP FUCHSIA_CITY_WIDTH, $1b, $13 ; FUCHSIA_POKECENTER + EVENT_DISP FUCHSIA_CITY_WIDTH, $1b, $1b ; FUCHSIA_HOUSE_2 + EVENT_DISP FUCHSIA_CITY_WIDTH, $3, $12 ; SAFARI_ZONE_ENTRANCE + EVENT_DISP FUCHSIA_CITY_WIDTH, $1b, $5 ; FUCHSIA_GYM + EVENT_DISP FUCHSIA_CITY_WIDTH, $d, $16 ; FUCHSIA_MEETING_ROOM + EVENT_DISP FUCHSIA_CITY_WIDTH, $1b, $1f ; FUCHSIA_HOUSE_3 + EVENT_DISP FUCHSIA_CITY_WIDTH, $18, $1f ; FUCHSIA_HOUSE_3 - db $0 ; signs +FuchsiaCityBlocks: ; 18c86 (6:4c86) + INCBIN "maps/fuchsiacity.blk" + +Func_18dee: ; 18dee (6:4dee) + call Func_18e36 + ld a, [$d732] + bit 0, a + ret z + ld a, [W_PLAYTIMEMINUTES] ; $da42 + and a + ret nz + ld a, [W_PLAYTIMEFRAMES] ; $da45 + inc a + ld [W_PLAYTIMEFRAMES], a ; $da45 + cp $3c + ret nz + xor a + ld [W_PLAYTIMEFRAMES], a ; $da45 + ld a, [W_PLAYTIMESECONDS] ; $da44 + inc a + ld [W_PLAYTIMESECONDS], a ; $da44 + cp $3c + ret nz + xor a + ld [W_PLAYTIMESECONDS], a ; $da44 + ld a, [$da43] + inc a + ld [$da43], a + cp $3c + ret nz + xor a + ld [$da43], a + ld a, [$da41] + inc a + ld [$da41], a + cp $ff + ret nz + ld a, $ff + ld [W_PLAYTIMEMINUTES], a ; $da42 + ret + +Func_18e36: ; 18e36 (6:4e36) + ld a, [$d13a] + and a + jr nz, .asm_18e40 + ld a, $ff + jr .asm_18e41 +.asm_18e40 + dec a +.asm_18e41 + ld [$d13a], a + and a + ret nz + ld a, [$d730] + res 1, a + res 2, a + bit 5, a + res 5, a + ld [$d730], a + ret z + xor a + ld [H_NEWLYPRESSEDBUTTONS], a + ld [H_CURRENTPRESSEDBUTTONS], a + ret - db $1 ; people - db SPRITE_GIRL, $4 + 4, $3 + 4, $ff, $ff, $1 ; person +PalletTownScript: ; 18e5b (6:4e5b) + ld a,[$D74B] + bit 4,a + jr z,.next + ld hl,$D747 + set 6,[hl] +.next + call EnableAutoTextBoxDrawing + ld hl,PalletTownScriptPointers + ld a,[W_PALLETTOWNCURSCRIPT] + jp CallFunctionInTable - ; warp-to - EVENT_DISP PATH_ENTRANCE_ROUTE_8_WIDTH, $7, $3 - EVENT_DISP PATH_ENTRANCE_ROUTE_8_WIDTH, $7, $4 - EVENT_DISP PATH_ENTRANCE_ROUTE_8_WIDTH, $4, $4 ; UNDERGROUND_PATH_WE +PalletTownScriptPointers: ; 18e73 (6:4e73) + dw PalletTownScript0 + dw PalletTownScript1 + dw PalletTownScript2 + dw PalletTownScript3 + dw PalletTownScript4 + dw PalletTownScript5 + dw PalletTownScript6 -PowerPlant_h: ; 0x1e2ba to 0x1e2c6 (12 bytes) (bank=7) (id=83) - db FACILITY ; tileset - db POWER_PLANT_HEIGHT, POWER_PLANT_WIDTH ; dimensions (y, x) - dw PowerPlantBlocks, PowerPlantTextPointers, PowerPlantScript ; blocks, texts, scripts - db $00 ; connections - dw PowerPlantObject ; objects +PalletTownScript0: ; 18e81 (6:4e81) + ld a,[$D747] + bit 0,a + ret nz + ld a,[W_YCOORD] + cp 1 ; is player near north exit? + ret nz + xor a + ld [H_CURRENTPRESSEDBUTTONS],a + ld a,4 + ld [$D528],a + ld a,$FF + call PlaySound ; stop music + ld a, BANK(Music_MeetProfOak) + ld c,a ; song bank + ld a, MUSIC_MEET_PROF_OAK ; “oak appears” music + call PlayMusic ; plays music + ld a,$FC + ld [wJoypadForbiddenButtonsMask],a + ld hl,$D74B + set 7,[hl] -PowerPlantScript: ; 1e2c6 (7:62c6) - call EnableAutoTextBoxDrawing - ld hl, PowerPlantTrainerHeaders - ld de, PowerPlantScriptPointers - ld a, [W_POWERPLANTCURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_POWERPLANTCURSCRIPT], a + ; trigger the next script + ld a,1 + ld [W_PALLETTOWNCURSCRIPT],a ret -PowerPlantScriptPointers: ; 1e2d9 (7:62d9) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -PowerPlantTextPointers: ; 1e2df (7:62df) - dw PowerPlantText1 - dw PowerPlantText2 - dw PowerPlantText3 - dw PowerPlantText4 - dw PowerPlantText5 - dw PowerPlantText6 - dw PowerPlantText7 - dw PowerPlantText8 - dw PowerPlantText9 - dw Predef5CText - dw Predef5CText - dw Predef5CText - dw Predef5CText - dw Predef5CText +PalletTownScript1: ; 18eb2 (6:4eb2) + xor a + ld [$CF0D],a + ld a,1 + ld [$FF8C],a + call DisplayTextID + ld a,$FF + ld [wJoypadForbiddenButtonsMask],a + ld a,0 + ld [$CC4D],a + ld a,$15 + call Predef -PowerPlantTrainerHeaders: ; 1e2fb (7:62fb) -PowerPlantTrainerHeader0: ; 1e2fb (7:62fb) - db 1 ; flag's bit - db 0 ; view range - dw $d7d3 ; flag's byte - dw VoltorbBattleText ; TextBeforeBattle - dw VoltorbBattleText ; TextAfterBattle - dw VoltorbBattleText ; TextEndBattle - dw VoltorbBattleText ; TextEndBattle + ; trigger the next script + ld a,2 + ld [W_PALLETTOWNCURSCRIPT],a + ret -PowerPlantTrainerHeader1: ; 1e307 (7:6307) - db 2 ; flag's bit - db 0 ; view range - dw $d7d3 ; flag's byte - dw VoltorbBattleText ; TextBeforeBattle - dw VoltorbBattleText ; TextAfterBattle - dw VoltorbBattleText ; TextEndBattle - dw VoltorbBattleText ; TextEndBattle +PalletTownScript2: ; 18ed2 (6:4ed2) + ld a,1 + ld [$FF8C],a + ld a,4 + ld [$FF8D],a + call Func_34a6 + call Delay3 + ld a,1 + ld [W_YCOORD],a + ld a,1 + ld [$FF9B],a + ld a,1 + swap a + ld [$FF95],a + ld a,$22 + call Predef + ld hl,$FF95 + dec [hl] + ld a,$20 + call Predef ; load Oak’s movement into $CC97 + ld de,$CC97 + ld a,1 ; oak + ld [$FF8C],a + call MoveSprite + ld a,$FF + ld [wJoypadForbiddenButtonsMask],a -PowerPlantTrainerHeader2: ; 1e313 (7:6313) - db 3 ; flag's bit - db 0 ; view range - dw $d7d3 ; flag's byte - dw VoltorbBattleText ; TextBeforeBattle - dw VoltorbBattleText ; TextAfterBattle - dw VoltorbBattleText ; TextEndBattle - dw VoltorbBattleText ; TextEndBattle + ; trigger the next script + ld a,3 + ld [W_PALLETTOWNCURSCRIPT],a + ret -PowerPlantTrainerHeader3: ; 1e31f (7:631f) - db 4 ; flag's bit - db 0 ; view range - dw $d7d3 ; flag's byte - dw VoltorbBattleText ; TextBeforeBattle - dw VoltorbBattleText ; TextAfterBattle - dw VoltorbBattleText ; TextEndBattle - dw VoltorbBattleText ; TextEndBattle +PalletTownScript3: ; 18f12 (6:4f12) + ld a,[$D730] + bit 0,a + ret nz + xor a + ld [$C109],a + ld a,1 + ld [$CF0D],a + ld a,$FC + ld [wJoypadForbiddenButtonsMask],a + ld a,1 + ld [$FF8C],a + call DisplayTextID + ld a,$FF + ld [wJoypadForbiddenButtonsMask],a + ld a,1 + ld [$CF13],a + xor a + ld [$CF10],a + ld a,1 + ld [$CC57],a + ld a,[H_LOADEDROMBANK] + ld [$CC58],a -PowerPlantTrainerHeader4: ; 1e32b (7:632b) - db 5 ; flag's bit - db 0 ; view range - dw $d7d3 ; flag's byte - dw VoltorbBattleText ; TextBeforeBattle - dw VoltorbBattleText ; TextAfterBattle - dw VoltorbBattleText ; TextEndBattle - dw VoltorbBattleText ; TextEndBattle + ; trigger the next script + ld a,4 + ld [W_PALLETTOWNCURSCRIPT],a + ret -PowerPlantTrainerHeader5: ; 1e337 (7:6337) - db 6 ; flag's bit - db 0 ; view range - dw $d7d3 ; flag's byte - dw VoltorbBattleText ; TextBeforeBattle - dw VoltorbBattleText ; TextAfterBattle - dw VoltorbBattleText ; TextEndBattle - dw VoltorbBattleText ; TextEndBattle +PalletTownScript4: ; 18f4b (6:4f4b) + ld a,[$CC57] + and a + ret nz -PowerPlantTrainerHeader6: ; 1e343 (7:6343) - db 7 ; flag's bit - db 0 ; view range - dw $d7d3 ; flag's byte - dw VoltorbBattleText ; TextBeforeBattle - dw VoltorbBattleText ; TextAfterBattle - dw VoltorbBattleText ; TextEndBattle - dw VoltorbBattleText ; TextEndBattle + ; trigger the next script + ld a,5 + ld [W_PALLETTOWNCURSCRIPT],a + ret -PowerPlantTrainerHeader7: ; 1e34f (7:634f) - db 8 ; flag's bit - db 0 ; view range - dw $d7d3 ; flag's byte - dw VoltorbBattleText ; TextBeforeBattle - dw VoltorbBattleText ; TextAfterBattle - dw VoltorbBattleText ; TextEndBattle - dw VoltorbBattleText ; TextEndBattle +PalletTownScript5: ; 18f56 (6:4f56) + ld a,[$D74A] + bit 2,a + jr nz,.next + and 3 + cp 3 + jr nz,.next + ld hl,$D74A + set 2,[hl] + ld a,$27 + ld [$CC4D],a + ld a,$11 + call Predef + ld a,$28 + ld [$CC4D],a + ld a,$15 + jp Predef +.next + ld a,[$D74B] + bit 4,a + ret z + ld hl,$D74B + set 6,[hl] +PalletTownScript6: ; 18f87 (6:4f87) + ret -PowerPlantTrainerHeader8: ; 1e35b (7:635b) - db 9 ; flag's bit - db 0 ; view range - dw $d7d3 ; flag's byte - dw ZapdosBattleText ; TextBeforeBattle - dw ZapdosBattleText ; TextAfterBattle - dw ZapdosBattleText ; TextEndBattle - dw ZapdosBattleText ; TextEndBattle +PalletTownTextPointers: ; 18f88 (6:4f88) + dw PalletTownText1 + dw PalletTownText2 + dw PalletTownText3 + dw PalletTownText4 + dw PalletTownText5 + dw PalletTownText6 + dw PalletTownText7 - db $ff +PalletTownText1: ; 18f96 (6:4f96) + db 8 + ld a,[$CF0D] + and a + jr nz,.next + ld a,1 + ld [$CC3C],a + ld hl,OakAppearsText + jr .done +.next + ld hl,OakWalksUpText +.done + call PrintText + jp TextScriptEnd -asm_234cc: ; 1e368 (7:6368) - call TalkToTrainer - ld a, [W_CURMAPSCRIPT] - ld [W_POWERPLANTCURSCRIPT], a +OakAppearsText: ; 18fb0 (6:4fb0) + TX_FAR _OakAppearsText + db 8 + ld c,10 + call DelayFrames + xor a + ld [$CD4F],a + ld [$CD50],a + ld a,$4C + call Predef ; display ! over head + ld a,4 + ld [$D528],a jp TextScriptEnd -PowerPlantText1: ; 1e374 (7:6374) - db $8 ; asm - ld hl, PowerPlantTrainerHeader0 ; $62fb - jr asm_234cc ; 0x1e378 $ee +OakWalksUpText: ; 18fce (6:4fce) + TX_FAR _OakWalksUpText + db "@" -PowerPlantText2: ; 1e37a (7:637a) - db $8 ; asm - ld hl, PowerPlantTrainerHeader1 ; $6307 - jr asm_234cc ; 0x1e37e $e8 +PalletTownText2: ; 0x18fd3 girl + TX_FAR _PalletTownText2 + db "@" -PowerPlantText3: ; 1e380 (7:6380) - db $8 ; asm - ld hl, PowerPlantTrainerHeader2 ; $6313 - jr asm_234cc ; 0x1e384 $e2 +PalletTownText3: ; 0x18fd8 fat man + TX_FAR _PalletTownText3 + db "@" -PowerPlantText4: ; 1e386 (7:6386) - db $8 ; asm - ld hl, PowerPlantTrainerHeader3 ; $631f - jr asm_234cc ; 0x1e38a $dc +PalletTownText4: ; 0x18fdd sign by lab + TX_FAR _PalletTownText4 + db "@" -PowerPlantText5: ; 1e38c (7:638c) - db $8 ; asm - ld hl, PowerPlantTrainerHeader4 ; $632b - jr asm_234cc ; 0x1e390 $d6 +PalletTownText5: ; 0x18fe2 sign by fence + TX_FAR _PalletTownText5 + db "@" -PowerPlantText6: ; 1e392 (7:6392) - db $8 ; asm - ld hl, PowerPlantTrainerHeader5 ; $6337 - jr asm_234cc ; 0x1e396 $d0 +PalletTownText6: ; 0x18fe7 sign by Red’s house + TX_FAR _PalletTownText6 + db "@" -PowerPlantText7: ; 1e398 (7:6398) - db $8 ; asm - ld hl, PowerPlantTrainerHeader6 ; $6343 - jr asm_234cc ; 0x1e39c $ca +PalletTownText7: ; 0x18fec sign by Blue’s house + TX_FAR _PalletTownText7 + db "@" -PowerPlantText8: ; 1e39e (7:639e) - db $8 ; asm - ld hl, PowerPlantTrainerHeader7 ; $634f - jr asm_234cc ; 0x1e3a2 $c4 +ViridianCityScript: ; 18ff1 (6:4ff1) + call EnableAutoTextBoxDrawing + ld hl, ViridianCityScriptPointers + ld a, [W_VIRIDIANCITYCURSCRIPT] + jp CallFunctionInTable -PowerPlantText9: ; 1e3a4 (7:63a4) - db $8 ; asm - ld hl, PowerPlantTrainerHeader8 ; $635b - jr asm_234cc ; 0x1e3a8 $be +ViridianCityScriptPointers: ; 18ffd (6:4ffd) + dw ViridianCityScript0 + dw ViridianCityScript1 + dw ViridianCityScript2 + dw ViridianCityScript3 -VoltorbBattleText: ; 1e3aa (7:63aa) - TX_FAR _VoltorbBattleText - db "@" +ViridianCityScript0: ; 19005 (6:5005) + call ViridianCityScript_1900b + jp ViridianCityScript_1903d -ZapdosBattleText: ; 1e3af (7:63af) - TX_FAR _ZapdosBattleText - db $8 - ld a, ZAPDOS - call PlayCry - call WaitForSoundToFinish - jp TextScriptEnd +ViridianCityScript_1900b: ; 1900b (6:500b) + ld a, [$d74c] + bit 0, a + ret nz + ld a, [W_OBTAINEDBADGES] + cp %01111111 + jr nz, .asm_1901e ; 0x19016 $6 + ld hl, $d74c + set 0, [hl] + ret +.asm_1901e + ld a, [W_YCOORD] + cp $8 + ret nz + ld a, [W_XCOORD] + cp $20 + ret nz + ld a, $e + ld [$ff8c], a + call DisplayTextID + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + call ViridianCityScript_190cf + ld a, $3 + ld [W_VIRIDIANCITYCURSCRIPT], a + ret -PowerPlantObject: ; 0x1e3bf (size=135) - db $2e ; border tile +ViridianCityScript_1903d: ; 1903d (6:503d) + ld a, [$d74b] + bit 5, a + ret nz + ld a, [W_YCOORD] + cp $9 + ret nz + ld a, [W_XCOORD] + cp $13 + ret nz + ld a, $5 + ld [$ff8c], a + call DisplayTextID + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + call ViridianCityScript_190cf + ld a, $3 + ld [W_VIRIDIANCITYCURSCRIPT], a + ret - db $3 ; warps - db $23, $4, $3, $ff - db $23, $5, $3, $ff - db $b, $0, $3, $ff +ViridianCityScript1: ; 19062 (6:5062) + ld a, [$c134] + ld [$ffeb], a + ld a, [$c136] + ld [$ffec], a + ld a, [$c234] + ld [$ffed], a + ld a, [$c235] + ld [$ffee], a + xor a + ld [wListScrollOffset], a - db $0 ; signs + ; set up battle for Old Man + ld a, $1 + ld [W_BATTLETYPE], a + ld a, 5 + ld [W_CURENEMYLVL], a + ld a, WEEDLE + ld [W_CUROPPONENT], a + ld a, $2 + ld [W_VIRIDIANCITYCURSCRIPT], a + ret - db $e ; people - db SPRITE_BALL, $14 + 4, $9 + 4, $ff, $ff, $41, VOLTORB, 40 ; trainer - db SPRITE_BALL, $12 + 4, $20 + 4, $ff, $ff, $42, VOLTORB, 40 ; trainer - db SPRITE_BALL, $19 + 4, $15 + 4, $ff, $ff, $43, VOLTORB, 40 ; trainer - db SPRITE_BALL, $12 + 4, $19 + 4, $ff, $ff, $44, ELECTRODE, 43 ; trainer - db SPRITE_BALL, $22 + 4, $17 + 4, $ff, $ff, $45, VOLTORB, 40 ; trainer - db SPRITE_BALL, $1c + 4, $1a + 4, $ff, $ff, $46, VOLTORB, 40 ; trainer - db SPRITE_BALL, $e + 4, $15 + 4, $ff, $ff, $47, ELECTRODE, 43 ; trainer - db SPRITE_BALL, $20 + 4, $25 + 4, $ff, $ff, $48, VOLTORB, 40 ; trainer - db SPRITE_BIRD, $9 + 4, $4 + 4, $ff, $d1, $49, ZAPDOS, 50 ; trainer - db SPRITE_BALL, $19 + 4, $7 + 4, $ff, $ff, $8a, CARBOS ; item - db SPRITE_BALL, $3 + 4, $1c + 4, $ff, $ff, $8b, HP_UP ; item - db SPRITE_BALL, $3 + 4, $22 + 4, $ff, $ff, $8c, RARE_CANDY ; item - db SPRITE_BALL, $20 + 4, $1a + 4, $ff, $ff, $8d, TM_25 ; item - db SPRITE_BALL, $20 + 4, $14 + 4, $ff, $ff, $8e, TM_33 ; item +ViridianCityScript2: ; 1908f (6:508f) + ld a, [$ffeb] + ld [$c134], a + ld a, [$ffec] + ld [$c136], a + ld a, [$ffed] + ld [$c234], a + ld a, [$ffee] + ld [$c235], a + call UpdateSprites + call Delay3 + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $f + ld [$ff8c], a + call DisplayTextID + xor a + ld [W_BATTLETYPE], a + ld [wJoypadForbiddenButtonsMask], a + ld a, $0 + ld [W_VIRIDIANCITYCURSCRIPT], a + ret + +ViridianCityScript3: ; 190c1 (6:50c1) + ld a, [$cd38] + and a + ret nz + call Delay3 + ld a, 0 + ld [W_VIRIDIANCITYCURSCRIPT], a + ret - ; warp-to - EVENT_DISP POWER_PLANT_WIDTH, $23, $4 - EVENT_DISP POWER_PLANT_WIDTH, $23, $5 - EVENT_DISP POWER_PLANT_WIDTH, $b, $0 +ViridianCityScript_190cf: ; 190cf (6:50cf) + call Func_3486 + ld a, $1 + ld [$cd38], a + ld a, $80 + ld [$ccd3], a + xor a + ld [$c109], a + ld [wJoypadForbiddenButtonsMask], a + ret -PowerPlantBlocks: ; 1e446 (7:6446) - INCBIN "maps/powerplant.blk" +ViridianCityTextPointers: ; 190e4 (6:50e4) + dw ViridianCityText1 + dw ViridianCityText2 + dw ViridianCityText3 + dw ViridianCityText4 + dw ViridianCityText5 + dw ViridianCityText6 + dw ViridianCityText7 + dw ViridianCityText8 + dw ViridianCityText9 + dw ViridianCityText10 + dw MartSignText + dw PokeCenterSignText + dw ViridianCityText13 + dw ViridianCityText14 + dw ViridianCityText15 -DiglettsCaveEntranceRoute11_h: ; 0x1e5ae to 0x1e5ba (12 bytes) (bank=7) (id=85) - db CAVERN ; tileset - db DIGLETTS_CAVE_ENTRANCE_HEIGHT, DIGLETTS_CAVE_ENTRANCE_WIDTH ; dimensions (y, x) - dw DiglettsCaveEntranceRoute11Blocks, DiglettsCaveEntranceRoute11TextPointers, DiglettsCaveEntranceRoute11Script ; blocks, texts, scripts - db $00 ; connections - dw DiglettsCaveEntranceRoute11Object ; objects +ViridianCityText1: ; 19102 (6:5102) + TX_FAR _ViridianCityText1 + db "@" -DiglettsCaveEntranceRoute11Script: ; 1e5ba (7:65ba) - call EnableAutoTextBoxDrawing - ld a, $16 - ld [$d365], a - ret +ViridianCityText2: ; 19107 (6:5107) + db $08 ; asm + ld a, [W_OBTAINEDBADGES] + cp %01111111 + ld hl, UnnamedText_19127 + jr z, .asm_ae9fe ; 0x19110 + ld a, [$d751] + bit 1, a + jr nz, .asm_ae9fe ; 0x19117 + ld hl, UnnamedText_19122 +.asm_ae9fe ; 0x1911c + call PrintText + jp TextScriptEnd -DiglettsCaveEntranceRoute11TextPointers: ; 1e5c3 (7:65c3) - dw DiglettsCaveEntranceRoute11Text1 +UnnamedText_19122: ; 19122 (6:5122) + TX_FAR _UnnamedText_19122 + db "@" -DiglettsCaveEntranceRoute11Text1: ; 1e5c5 (7:65c5) - TX_FAR _DiglettsCaveEntRoute11Text1 +UnnamedText_19127: ; 19127 (6:5127) + TX_FAR _UnnamedText_19127 db "@" -DiglettsCaveEntranceRoute11Object: ; 0x1e5ca (size=34) - db $7d ; border tile +ViridianCityText3: ; 1912c (6:512c) + db $08 ; asm + ld hl, UnnamedText_1914d + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + jr nz, .asm_6dfea ; 0x1913a + ld hl, UnnamedText_19157 + call PrintText + jr .asm_d611f ; 0x19142 +.asm_6dfea ; 0x19144 + ld hl, UnnamedText_19152 + call PrintText +.asm_d611f ; 0x1914a + jp TextScriptEnd - db $3 ; warps - db $7, $2, $4, $ff - db $7, $3, $4, $ff - db $4, $4, $1, DIGLETTS_CAVE +UnnamedText_1914d: ; 1914d (6:514d) + TX_FAR _UnnamedText_1914d + db "@" - db $0 ; signs +UnnamedText_19152: ; 19152 (6:5152) + TX_FAR _UnnamedText_19152 + db "@" - db $1 ; people - db SPRITE_GAMBLER, $3 + 4, $2 + 4, $ff, $ff, $1 ; person +UnnamedText_19157: ; 19157 (6:5157) + TX_FAR _UnnamedText_19157 + db "@" - ; warp-to - EVENT_DISP DIGLETTS_CAVE_ENTRANCE_WIDTH, $7, $2 - EVENT_DISP DIGLETTS_CAVE_ENTRANCE_WIDTH, $7, $3 - EVENT_DISP DIGLETTS_CAVE_ENTRANCE_WIDTH, $4, $4 ; DIGLETTS_CAVE +ViridianCityText4: ; 1915c (6:515c) + db $08 ; asm + ld a, [$d74b] + bit 5, a + jr nz, .asm_83894 ; 0x19162 + ld hl, UnnamedText_19175 + call PrintText + jr .asm_700a6 ; 0x1916a +.asm_83894 ; 0x1916c + ld hl, UnnamedText_1917a + call PrintText +.asm_700a6 ; 0x19172 + jp TextScriptEnd -Route16House_h: ; 0x1e5ec to 0x1e5f8 (12 bytes) (bank=7) (id=188) - db HOUSE ; tileset - db ROUTE_16_HOUSE_HEIGHT, ROUTE_16_HOUSE_WIDTH ; dimensions (y, x) - dw Route16HouseBlocks, Route16HouseTextPointers, Route16HouseScript ; blocks, texts, scripts - db $00 ; connections - dw Route16HouseObject ; objects +UnnamedText_19175: ; 19175 (6:5175) + TX_FAR _UnnamedText_19175 + db "@" -Route16HouseScript: ; 1e5f8 (7:65f8) - jp EnableAutoTextBoxDrawing +UnnamedText_1917a: ; 1917a (6:517a) + TX_FAR _UnnamedText_1917a + db "@" -Route16HouseTextPointers: ; 1e5fb (7:65fb) - dw Route16HouseText1 - dw Route16HouseText2 +ViridianCityText5: ; 1917f (6:517f) + db $08 ; asm + ld hl, UnnamedText_19191 + call PrintText + call ViridianCityScript_190cf + ld a, $3 + ld [W_VIRIDIANCITYCURSCRIPT], a + jp TextScriptEnd -Route16HouseText1: ; 1e5ff (7:65ff) +UnnamedText_19191: ; 19191 (6:5191) + TX_FAR _UnnamedText_19191 + db "@" + +ViridianCityText6: ; 19196 (6:5196) db $08 ; asm - ld a, [$d7e0] - bit 6, a - ld hl, HM02ExplanationText - jr nz, .asm_13616 ; 0x1e608 - ld hl, Route16HouseText3 + ld a, [$d74c] + bit 1, a + jr nz, .asm_4e5a0 ; 0x1919c + ld hl, UnnamedText_191ca call PrintText - ld bc, (HM_02 << 8) | 1 + ld bc, (TM_42 << 8) | 1 call GiveItem jr nc, .BagFull - ld hl, $d7e0 - set 6, [hl] - ld hl, ReceivedHM02Text - jr .asm_13616 ; 0x1e620 + ld hl, ReceivedTM42Text + call PrintText + ld hl, $d74c + set 1, [hl] + jr .asm_3c73c ; 0x191b7 .BagFull - ld hl, HM02NoRoomText -.asm_13616 ; 0x1e625 + ld hl, TM42NoRoomText call PrintText + jr .asm_3c73c ; 0x191bf +.asm_4e5a0 ; 0x191c1 + ld hl, TM42Explanation + call PrintText +.asm_3c73c ; 0x191c7 jp TextScriptEnd -Route16HouseText3: ; 1e62b (7:662b) - TX_FAR _Route16HouseText3 +UnnamedText_191ca: ; 191ca (6:51ca) + TX_FAR _UnnamedText_191ca db "@" -ReceivedHM02Text: ; 1e630 (7:6630) - TX_FAR _ReceivedHM02Text - db $11, "@" +ReceivedTM42Text: ; 191cf (6:51cf) + TX_FAR _ReceivedTM42Text + db $10, "@" -HM02ExplanationText: ; 1e636 (7:6636) - TX_FAR _HM02ExplanationText +TM42Explanation: ; 191d5 (6:51d5) + TX_FAR _TM42Explanation db "@" -HM02NoRoomText: ; 1e63b (7:663b) - TX_FAR _HM02NoRoomText +TM42NoRoomText: ; 191da (6:51da) + TX_FAR _TM42NoRoomText db "@" -Route16HouseText2: ; 1e640 (7:6640) +ViridianCityText7: ; 191df (6:51df) db $08 ; asm - ld hl, UnnamedText_1e652 + ld hl, UnnamedText_1920a call PrintText - ld a, FEAROW - call PlayCry - call WaitForSoundToFinish + ld c, $2 + call DelayFrames + call YesNoChoice + ld a, [$cc26] + and a + jr z, .asm_42f68 ; 0x191f2 + ld hl, UnnamedText_1920f + call PrintText + ld a, $1 + ld [W_VIRIDIANCITYCURSCRIPT], a + jr .asm_2413a ; 0x191ff +.asm_42f68 ; 0x19201 + ld hl, UnnamedText_19214 + call PrintText +.asm_2413a ; 0x19207 jp TextScriptEnd -UnnamedText_1e652: ; 1e652 (7:6652) - TX_FAR _UnnamedText_1e652 +UnnamedText_1920a: ; 1920a (6:520a) + TX_FAR _UnnamedText_1920a db "@" -Route16HouseObject: ; 0x1e657 (size=32) - db $a ; border tile +UnnamedText_1920f: ; 1920f (6:520f) + TX_FAR _UnnamedText_1920f + db "@" - db $2 ; warps - db $7, $2, $8, $ff - db $7, $3, $8, $ff +UnnamedText_19214: ; 19214 (6:5214) + TX_FAR _UnnamedText_19214 + db "@" - db $0 ; signs +ViridianCityText15: ; 19219 (6:5219) + TX_FAR _UnnamedText_19219 + db "@" - db $2 ; people - db SPRITE_BRUNETTE_GIRL, $3 + 4, $2 + 4, $ff, $d3, $1 ; person - db SPRITE_BIRD, $4 + 4, $6 + 4, $fe, $0, $2 ; person +ViridianCityText8: ; 1921e (6:521e) + TX_FAR _ViridianCityText8 + db "@" - ; warp-to - EVENT_DISP ROUTE_16_HOUSE_WIDTH, $7, $2 - EVENT_DISP ROUTE_16_HOUSE_WIDTH, $7, $3 +ViridianCityText9: ; 19223 (6:5223) + TX_FAR _ViridianCityText9 + db "@" -Route22Gate_h: ; 0x1e677 to 0x1e683 (12 bytes) (bank=7) (id=193) - db GATE ; tileset - db ROUTE_22_GATE_HEIGHT, ROUTE_22_GATE_WIDTH ; dimensions (y, x) - dw Route22GateBlocks, Route22GateTextPointers, Route22GateScript ; blocks, texts, scripts - db $00 ; connections - dw Route22GateObject ; objects +ViridianCityText10: ; 19228 (6:5228) + TX_FAR _ViridianCityText10 + db "@" -Route22GateScript: ; 1e683 (7:6683) +ViridianCityText13: ; 1922d (6:522d) + TX_FAR _ViridianCityText13 + db "@" + +ViridianCityText14: ; 19232 (6:5232) + TX_FAR _ViridianCityText14 + db "@" + +PewterCityScript: ; 19237 (6:5237) call EnableAutoTextBoxDrawing - ld hl, Route22GateScriptPointers - ld a, [W_ROUTE22GATECURSCRIPT] - call CallFunctionInTable - ld a, [W_YCOORD] - cp $4 - ld a, $22 - jr c, .asm_1e69a ; 0x1e696 $2 - ld a, $21 -.asm_1e69a - ld [$d365], a - ret + ld hl, PewterCityScriptPointers + ld a, [W_PEWTERCITYCURSCRIPT] + jp CallFunctionInTable -Route22GateScriptPointers: ; 1e69e (7:669e) - dw Route22GateScript0 - dw Route22GateScript1 - dw Route22GateScript2 +PewterCityScriptPointers: ; 19243 (6:5243) + dw PewterCityScript0 + dw PewterCityScript1 + dw PewterCityScript2 + dw PewterCityScript3 + dw PewterCityScript4 + dw PewterCityScript5 + dw PewterCityScript6 -Route22GateScript0: ; 1e6a4 (7:66a4) - ld hl, Route22GateScriptCoords +PewterCityScript0: ; 19251 (6:5251) + xor a + ld [W_MUSEUM1FCURSCRIPT], a + ld hl, $d754 + res 0, [hl] + call PewterCityScript_1925e + ret + +PewterCityScript_1925e: ; 1925e (6:525e) + ld a, [$d755] + bit 7, a + ret nz + ld hl, CoordsData_19277 call ArePlayerCoordsInArray ret nc - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, $1 + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld a, $5 ld [$ff8c], a jp DisplayTextID -Route22GateScriptCoords: ; 1e6b5 (7:66b5) - db 2,4 - db 2,5 +CoordsData_19277: ; 19277 (6:5277) + db $11,$23 + db $11,$24 + db $12,$25 + db $13,$25 db $ff -Func_1e6ba: ; 1e6ba (7:66ba) - ld a, $1 - ld [$cd38], a - ld a, $80 - ld [$ccd3], a - ld [$c109], a - ld [wJoypadForbiddenButtonsMask], a - jp Func_3486 +PewterCityScript1: ; 19280 (6:5280) + ld a, [$cc57] + and a + ret nz + ld a, $3 + ld [$ff8c], a + ld a, $4 + ld [$ff8d], a + call Func_34a6 + ld a, $34 + ld [$ff8d], a + call Func_34b9 + call Func_2307 + ld hl, wFlags_0xcd60 + set 4, [hl] + ld a, $d + ld [$ff8c], a + call DisplayTextID + ld a, $3c + ld [$ffeb], a + ld a, $30 + ld [$ffec], a + ld a, $c + ld [$ffed], a + ld a, $11 + ld [$ffee], a + ld a, $3 + ld [$cf13], a + call Func_32f9 + ld a, $3 + ld [$ff8c], a + ld de, MovementData_PewterMuseumGuyExit ; $52ce + call MoveSprite + ld a, $2 + ld [W_PEWTERCITYCURSCRIPT], a + ret + +MovementData_PewterMuseumGuyExit: ; 192ce (6:52ce) + db $00,$00,$00,$00,$FF + +PewterCityScript2: ; 192d3 (6:52d3) + ld a, [$d730] + bit 0, a + ret nz + ld a, $3 + ld [$cc4d], a + ld a, $11 + call Predef + ld a, $3 + ld [W_PEWTERCITYCURSCRIPT], a + ret + +PewterCityScript3: ; 192e9 (6:52e9) + ld a, $3 + ld [$cf13], a + call Func_32fe + ld a, $3 + ld [$cc4d], a + ld a, $15 + call Predef + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $0 + ld [W_PEWTERCITYCURSCRIPT], a + ret + +PewterCityScript4: ; 19305 (6:5305) + ld a, [$cc57] + and a + ret nz + ld a, $5 + ld [$ff8c], a + ld a, $8 + ld [$ff8d], a + call Func_34a6 + ld a, $18 + ld [$ff8d], a + call Func_34b9 + call Func_2307 + ld hl, wFlags_0xcd60 + set 4, [hl] + ld a, $e + ld [$ff8c], a + call DisplayTextID + ld a, $3c + ld [$ffeb], a + ld a, $40 + ld [$ffec], a + ld a, $16 + ld [$ffed], a + ld a, $10 + ld [$ffee], a + ld a, $5 + ld [$cf13], a + call Func_32f9 + ld a, $5 + ld [$ff8c], a + ld de, MovementData_PewterGymGuyExit + call MoveSprite + ld a, $5 + ld [W_PEWTERCITYCURSCRIPT], a + ret + +MovementData_PewterGymGuyExit: ; 19353 (6:5353) + db $C0,$C0,$C0,$C0,$C0,$FF + +PewterCityScript5: ; 19359 (6:5359) + ld a, [$d730] + bit 0, a + ret nz + ld a, $4 + ld [$cc4d], a + ld a, $11 + call Predef + ld a, $6 + ld [W_PEWTERCITYCURSCRIPT], a + ret + +PewterCityScript6: ; 1936f (6:536f) + ld a, $5 + ld [$cf13], a + call Func_32fe + ld a, $4 + ld [$cc4d], a + ld a, $15 + call Predef + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $0 + ld [W_PEWTERCITYCURSCRIPT], a + ret + +PewterCityTextPointers: ; 1938b (6:538b) + dw PewterCityText1 + dw PewterCityText2 + dw PewterCityText3 + dw PewterCityText4 + dw PewterCityText5 + dw PewterCityText6 + dw PewterCityText7 + dw MartSignText + dw PokeCenterSignText + dw PewterCityText10 + dw PewterCityText11 + dw PewterCityText12 + dw PewterCityText13 + dw PewterCityText14 + +PewterCityText1: ; 193a7 (6:53a7) + TX_FAR _PewterCityText1 + db "@" + +PewterCityText2: ; 193ac (6:53ac) + TX_FAR _PewterCityText2 + db "@" + +PewterCityText3: ; 193b1 (6:53b1) + db $08 ; asm + ld hl, UnnamedText_193f1 + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + jr nz, .asm_f46a9 ; 0x193bf + ld hl, UnnamedText_193f6 + call PrintText + jr .asm_ac429 ; 0x193c7 +.asm_f46a9 ; 0x193c9 + ld hl, UnnamedText_193fb + call PrintText + xor a + ldh [$b3], a + ldh [$b4], a + ld [$cf10], a + ld a, $2 + ld [$cc57], a + ldh a, [$b8] + ld [$cc58], a + ld a, $3 + ld [$cf13], a + call Func_32f4 + ld a, $1 + ld [W_PEWTERCITYCURSCRIPT], a +.asm_ac429 ; 0x193ee + jp TextScriptEnd + +UnnamedText_193f1: ; 193f1 (6:53f1) + TX_FAR _UnnamedText_193f1 + db "@" -Route22GateScript1: ; 1e6cd (7:66cd) - ld a, [$cd38] - and a - ret nz - xor a - ld [wJoypadForbiddenButtonsMask], a - call Delay3 - ld a, $0 - ld [W_ROUTE22GATECURSCRIPT], a -Route22GateScript2: ; 1e6de (7:66de) - ret +UnnamedText_193f6: ; 193f6 (6:53f6) + TX_FAR _UnnamedText_193f6 + db "@" -Route22GateTextPointers: ; 1e6df (7:66df) - dw Route22GateText1 +UnnamedText_193fb: ; 193fb (6:53fb) + TX_FAR _UnnamedText_193fb + db "@" -Route22GateText1: ; 1e6e1 (7:66e1) +PewterCityText13: ; 19400 (6:5400) + TX_FAR _PewterCityText13 + db "@" + +PewterCityText4: ; 19405 (6:5405) db $8 - ld a, [W_OBTAINEDBADGES] - bit 0, a - jr nz, .asm_8a809 ; 0x1e6e7 $d - ld hl, UnnamedText_1e704 + ld hl, UnnamedText_19427 call PrintText - call Func_1e6ba - ld a, $1 - jr .asm_20f7e ; 0x1e6f4 $8 -.asm_8a809 ; 0x1e6f6 - ld hl, UnnamedText_1e71a + call YesNoChoice + ld a, [$cc26] + cp $0 + jr nz, .asm_e4603 + ld hl, UnnamedText_1942c call PrintText - ld a, $2 -.asm_20f7e ; 0x1e6fe - ld [W_ROUTE22GATECURSCRIPT], a + jr .asm_e4604 ; 0x1941c $6 +.asm_e4603 + ld hl, UnnamedText_19431 + call PrintText +.asm_e4604 ; 0x19424 jp TextScriptEnd -UnnamedText_1e704: ; 1e704 (7:6704) - TX_FAR _UnnamedText_1e704 ; 0x8cfbb - db $8 - ld a, (SFX_02_51 - SFX_Headers_02) / 3 - call PlaySoundWaitForCurrent - call WaitForSoundToFinish - ld hl, UnnamedText_1e715 ; $6715 - ret +UnnamedText_19427: ; 19427 (6:5427) + TX_FAR _UnnamedText_19427 + db "@" -UnnamedText_1e715: ; 1e715 (7:6715) - TX_FAR _UnnamedText_1e715 +UnnamedText_1942c: ; 1942c (6:542c) + TX_FAR _UnnamedText_1942c db "@" -UnnamedText_1e71a: ; 1e71a (7:671a) - TX_FAR _UnnamedText_1e71a ; 0x8d03e - db $0B, "@" +UnnamedText_19431: ; 19431 (6:5431) + TX_FAR _UnnamedText_19431 + db "@" -Route22GateObject: ; 0x1e720 (size=42) - db $a ; border tile +PewterCityText5: ; 19436 (6:5436) + db $08 ; asm + ld hl, UnnamedText_1945d + call PrintText + xor a + ldh [$b4], a + ld [$cf10], a + ld a, $3 + ld [$cc57], a + ldh a, [$b8] + ld [$cc58], a + ld a, $5 + ld [$cf13], a + call Func_32f4 + ld a, $4 + ld [W_PEWTERCITYCURSCRIPT], a + jp TextScriptEnd - db $4 ; warps - db $7, $4, $0, $ff - db $7, $5, $0, $ff - db $0, $4, $0, $ff - db $0, $5, $1, $ff +UnnamedText_1945d: ; 1945d (6:545d) + TX_FAR _UnnamedText_1945d + db "@" - db $0 ; signs +PewterCityText14: ; 19462 (6:5462) - db $1 ; people - db SPRITE_GUARD, $2 + 4, $6 + 4, $ff, $d2, $1 ; person +UnnamedText_19462: ; 19462 (6:5462) + TX_FAR _UnnamedText_19462 + db "@" - ; warp-to - EVENT_DISP ROUTE_22_GATE_WIDTH, $7, $4 - EVENT_DISP ROUTE_22_GATE_WIDTH, $7, $5 - EVENT_DISP ROUTE_22_GATE_WIDTH, $0, $4 - EVENT_DISP ROUTE_22_GATE_WIDTH, $0, $5 +PewterCityText6: ; 19467 (6:5467) + TX_FAR _PewterCityText6 + db "@" -Route22GateBlocks: ; 1e74a (7:674a) - INCBIN "maps/route22gate.blk" +PewterCityText7: ; 1946c (6:546c) + TX_FAR _PewterCityText7 + db "@" -BillsHouse_h: ; 0x1e75e to 0x1e76a (12 bytes) (bank=7) (id=88) - db INTERIOR ; tileset - db BILLS_HOUSE_HEIGHT, BILLS_HOUSE_WIDTH ; dimensions (y, x) - dw BillsHouseBlocks, BillsHouseTextPointers, BillsHouseScript ; blocks, texts, scripts - db $00 ; connections - dw BillsHouseObject ; objects +PewterCityText10: ; 19471 (6:5471) + TX_FAR _PewterCityText10 + db "@" -BillsHouseScript: ; 1e76a (7:676a) +PewterCityText11: ; 19476 (6:5476) + TX_FAR _PewterCityText11 + db "@" + +PewterCityText12: ; 1947b (6:547b) + TX_FAR _PewterCityText12 + db "@" + +CeruleanCityScript: ; 19480 (6:5480) call EnableAutoTextBoxDrawing - ld a, [W_BILLSHOUSECURSCRIPT] - ld hl, BillsHouseScriptPointers + ld hl, CeruleanCityScriptPointers + ld a, [W_CERULEANCITYCURSCRIPT] jp CallFunctionInTable -BillsHouseScriptPointers: ; 1e776 (7:6776) - dw BillsHouseScript0 - dw BillsHouseScript1 - dw BillsHouseScript2 - dw BillsHouseScript3 - dw BillsHouseScript4 - dw BillsHouseScript5 +CeruleanCityScript_1948c: ; 1948c (6:548c) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_CERULEANCITYCURSCRIPT], a + ld a, $5 + ld [$cc4d], a + ld a, $11 + jp Predef -BillsHouseScript0: ; 1e782 (7:6782) +CeruleanCityScriptPointers: ; 1949d (6:549d) + dw CeruleanCityScript0 + dw CeruleanCityScript1 + dw CeruleanCityScript2 + dw CeruleanCityScript3 + dw CeruleanCityScript4 + +CeruleanCityScript4: ; 194a7 (6:54a7) + ld a, [W_ISINBATTLE] + cp $ff + jp z, CeruleanCityScript_1948c + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld hl, $d75b + set 7, [hl] + ld a, $2 + ld [$ff8c], a + call DisplayTextID + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_CERULEANCITYCURSCRIPT], a ret -BillsHouseScript1: ; 1e783 (7:6783) - ld a, [$c109] +CeruleanCityScript0: ; 194c8 (6:54c8) + ld a, [$d75b] + bit 7, a + jr nz, .asm_194f7 ; 0x194cd $28 + ld hl, CeruleanCityCoords1 + call ArePlayerCoordsInArray + jr nc, .asm_194f7 ; 0x194d5 $20 + ld a, [$cd3d] + cp $1 + ld a, $8 + ld b, $0 + jr nz, .asm_194e6 ; 0x194e0 $4 + ld a, $4 + ld b, $4 +.asm_194e6 + ld [$d528], a + ld a, b + ld [$c129], a + call Delay3 + ld a, $2 + ld [$ff8c], a + jp DisplayTextID +.asm_194f7 + ld a, [$d75a] + bit 0, a + ret nz + ld hl, CeruleanCityCoords2 + call ArePlayerCoordsInArray + ret nc + ld a, [$d700] and a - ld de, MovementData_1e79c - jr nz, .asm_1e78f ; 0x1e78a $3 - ld de, MovementData_1e7a0 -.asm_1e78f + jr z, .asm_19512 ; 0x19508 $8 + ld a, $ff + ld [$c0ee], a + call PlaySound +.asm_19512 + ld c, BANK(Music_MeetRival) + ld a, MUSIC_MEET_RIVAL + call PlayMusic + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld a, [W_XCOORD] + cp $14 + jr z, .asm_19535 ; 0x19526 $d + ld a, $1 + ld [$ff8c], a + ld a, $5 + ld [$ff8b], a + call Func_3500 + ld [hl], $19 +.asm_19535 + ld a, $5 + ld [$cc4d], a + ld a, $15 + call Predef + ld de, CeruleanCityMovement1 ld a, $1 ld [$ff8c], a call MoveSprite - ld a, $2 - ld [W_BILLSHOUSECURSCRIPT], a + ld a, $1 + ld [W_CERULEANCITYCURSCRIPT], a ret -MovementData_1e79c: ; 1e79c (7:679c) - db $40,$40,$40,$FF +CeruleanCityCoords1: ; 1954f (6:554f) + db $07,$1e + db $09,$1e + db $ff -MovementData_1e7a0: ; 1e7a0 (7:67a0) - db $C0,$40,$40,$80,$40,$FF +CeruleanCityCoords2: ; 19554 (6:5554) + db $06,$14 + db $06,$15 + db $ff -BillsHouseScript2: ; 1e7a6 (7:67a6) +CeruleanCityMovement1: ; 19559 (6:5559) + db $00,$00,$00,$FF + +CeruleanCityScript_1955d: ; 1955d (6:555d) + ld a,1 + ld [$ff8c],a + xor a + ld [$ff8d],a + jp Func_34a6 ; face object + +CeruleanCityScript1: ; 19567 (6:5567) ld a, [$d730] bit 0, a ret nz - ld a, $61 - ld [$cc4d], a - ld a, $11 - call Predef - ld hl, $d7f2 - set 6, [hl] xor a ld [wJoypadForbiddenButtonsMask], a - ld a, $3 - ld [W_BILLSHOUSECURSCRIPT], a + ld a, $1 + ld [$ff8c], a + call DisplayTextID + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, UnnamedText_1966d + ld de, UnnamedText_19672 + call PreBattleSaveRegisters + ld a, SONY1 + $c8 + ld [W_CUROPPONENT], a + + ; select which team to use during the encounter + ld a, [W_RIVALSTARTER] + cp SQUIRTLE + jr nz, .NotSquirtle ; 0x19592 $4 + ld a, $7 + jr .done +.NotSquirtle + cp BULBASAUR + jr nz, .Charmander ; 0x1959a $4 + ld a, $8 + jr .done +.Charmander + ld a, $9 +.done + ld [W_TRAINERNO], a + + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + call CeruleanCityScript_1955d + ld a, $2 + ld [W_CERULEANCITYCURSCRIPT], a ret -BillsHouseScript3: ; 1e7c5 (7:67c5) - ld a, [$d7f2] - bit 3, a - ret z +CeruleanCityScript2: ; 195b1 (6:55b1) + ld a, [$d057] + cp $ff + jp z, CeruleanCityScript_1948c + call CeruleanCityScript_1955d ld a, $f0 ld [wJoypadForbiddenButtonsMask], a - ld a, $2 - ld [$cf13], a - ld a, $c - ld [$ffeb], a - ld a, $40 - ld [$ffec], a - ld a, $6 - ld [$ffed], a - ld a, $5 - ld [$ffee], a - call Func_32f9 - ld a, $62 - ld [$cc4d], a - ld a, $15 - call Predef - ld c, $8 - call DelayFrames - ld a, $2 + ld hl, $d75a + set 0, [hl] + ld a, $1 + ld [$ff8c], a + call DisplayTextID + ld a, $ff + ld [$c0ee], a + call PlaySound + ld b, BANK(Music_RivalAlternateStart) + ld hl, Music_RivalAlternateStart + call Bankswitch + ld a, $1 + ld [$ff8c], a + call SetSpriteMovementBytesToFF + ld a, [W_XCOORD] + cp $14 + jr nz, .asm_195f0 ; 0x195e9 $5 + ld de, CeruleanCityMovement4 + jr .asm_195f3 ; 0x195ee $3 +.asm_195f0 + ld de, CeruleanCityMovement3 +.asm_195f3 + ld a, $1 ld [$ff8c], a - ld de, MovementData_1e807 call MoveSprite - ld a, $4 - ld [W_BILLSHOUSECURSCRIPT], a + ld a, $3 + ld [W_CERULEANCITYCURSCRIPT], a ret -MovementData_1e807: ; 1e807 (7:6807) - db $00,$C0,$C0,$C0,$00,$FF +CeruleanCityMovement3: ; 19600 (6:5600) + db $80,$00,$00,$00,$00,$00,$00,$FF -BillsHouseScript4: ; 1e80d (7:680d) +CeruleanCityMovement4: ; 19608 (6:5608) + db $c0,$00,$00,$00,$00,$00,$00,$FF + +CeruleanCityScript3: ; 19610 (6:5610) ld a, [$d730] bit 0, a ret nz + ld a, $5 + ld [$cc4d], a + ld a, $11 + call Predef xor a ld [wJoypadForbiddenButtonsMask], a - ld hl, $d7f2 - set 5, [hl] - ld hl, $d7f1 - set 0, [hl] + call Func_2307 ld a, $0 - ld [W_BILLSHOUSECURSCRIPT], a + ld [W_CERULEANCITYCURSCRIPT], a ret -BillsHouseScript5: ; 1e827 (7:6827) - ld a, $4 - ld [$ff8c], a - call DisplayTextID - ld a, $0 - ld [W_BILLSHOUSECURSCRIPT], a - ret +CeruleanCityTextPointers: ; 1962d (6:562d) + dw CeruleanCityText1 + dw CeruleanCityText2 + dw CeruleanCityText3 + dw CeruleanCityText4 + dw CeruleanCityText5 + dw CeruleanCityText6 + dw CeruleanCityText7 + dw CeruleanCityText8 + dw CeruleanCityText9 + dw CeruleanCityText10 + dw CeruleanCityText11 + dw CeruleanCityText12 + dw CeruleanCityText13 + dw MartSignText + dw PokeCenterSignText + dw CeruleanCityText16 + dw CeruleanCityText17 -BillsHouseTextPointers: ; 1e834 (7:6834) - dw BillsHouseText1 - dw BillsHouseText2 - dw BillsHouseText3 - dw BillsHouseText4 +CeruleanCityText1: ; 1964f (6:564f) + db $08 ; asm + ld a, [$d75a] ; rival battle flag + bit 0, a + ; do pre-battle text + jr z, .PreBattleText + ; or talk about bill + ld hl, UnnamedText_19677 + call PrintText + jr .end ; 0x1965d +.PreBattleText ; 0x1965f + ld hl, UnnamedText_19668 + call PrintText +.end ; 0x19665 + jp TextScriptEnd -BillsHouseText4: ; 1e83c (7:683c) - db $fd +UnnamedText_19668: ; 19668 (6:5668) + TX_FAR _UnnamedText_19668 + db "@" -BillsHouseText1: ; 1e83d (7:683d) +UnnamedText_1966d: ; 1966d (6:566d) + TX_FAR _UnnamedText_1966d + db "@" + +UnnamedText_19672: ; 19672 (6:5672) + TX_FAR _UnnamedText_19672 + db "@" + +UnnamedText_19677: ; 19677 (6:5677) + TX_FAR _UnnamedText_19677 + db "@" + +CeruleanCityText2: ; 1967c (6:567c) db $8 - ld hl, UnnamedText_1e865 + ld a, [$d75b] + bit 7, a + jr nz, .asm_4ca20 ; 0x19682 $29 + ld hl, UnnamedText_196d9 call PrintText - call YesNoChoice - ld a, [$cc26] - and a - jr nz, asm_6b196 ; 0x1e84b $d -asm_4d03c: ; 1e84d (7:684d) - ld hl, UnnamedText_1e86a + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, UnnamedText_196ee + ld de, UnnamedText_196ee + call PreBattleSaveRegisters + ld a, [$ff8c] + ld [$cf13], a + call EngageMapTrainer + call InitBattleEnemyParameters + ld a, $4 + ld [W_CERULEANCITYCURSCRIPT], a + jp TextScriptEnd +.asm_4ca20 ; 0x196ad + ld hl, UnnamedText_196f3 + call PrintText + ld bc, $e401 + call GiveItem + jr c, .Success + ld hl, TM28NoRoomText call PrintText + jr .Done +.Success ld a, $1 - ld [W_BILLSHOUSECURSCRIPT], a - jr asm_fd4e2 ; 0x1e858 $8 -asm_6b196: ; 1e85a (7:685a) - ld hl, UnnamedText_1e86f + ld [$cc3c], a + ld hl, ReceivedTM28Text call PrintText - jr asm_4d03c ; 0x1e860 $eb -asm_fd4e2 ; 0x1e862 + ld b, BANK(Func_74872) + ld hl, Func_74872 + call Bankswitch +.Done jp TextScriptEnd -UnnamedText_1e865: ; 1e865 (7:6865) - TX_FAR _UnnamedText_1e865 ; 0x8d267 +UnnamedText_196d9: ; 196d9 (6:56d9) + TX_FAR _UnnamedText_196d9 db "@" -UnnamedText_1e86a: ; 1e86a (7:686a) - TX_FAR _UnnamedText_1e86a ; 0x8d345 +ReceivedTM28Text: ; 196de (6:56de) + TX_FAR _ReceivedTM28Text + db $0B + TX_FAR _ReceivedTM28Text2 + db $0D, "@" + +TM28NoRoomText: ; 196e9 (6:56e9) + TX_FAR _TM28NoRoomText db "@" -UnnamedText_1e86f: ; 1e86f (7:686f) - TX_FAR _UnnamedText_1e86f ; 0x8d391 +UnnamedText_196ee: ; 196ee (6:56ee) + TX_FAR _UnnamedText_196ee db "@" -BillsHouseText2: ; 1e874 (7:6874) - db $08 ; asm - ld a, [$d7f2] - bit 4, a - jr nz, .asm_5491f ; 0x1e87a - ld hl, BillThankYouText - call PrintText - ld bc, (S_S__TICKET << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, SSTicketReceivedText - call PrintText - ld hl, $d7f2 - set 4, [hl] - ld a, $7 - ld [$cc4d], a - ld a, $15 - call Predef - ld a, $9 - ld [$cc4d], a - ld a, $11 - call Predef -.asm_5491f ; 0x1e8a9 - ld hl, UnnamedText_1e8cb - call PrintText - jr .asm_bd408 ; 0x1e8af -.BagFull - ld hl, SSTicketNoRoomText - call PrintText -.asm_bd408 ; 0x1e8b7 - jp TextScriptEnd +UnnamedText_196f3: ; 196f3 (6:56f3) + TX_FAR _UnnamedText_196f3 + db "@" -BillThankYouText: ; 1e8ba (7:68ba) - TX_FAR _BillThankYouText +CeruleanCityText3: ; 196f8 (6:56f8) + TX_FAR _CeruleanCityText3 db "@" -SSTicketReceivedText: ; 1e8bf (7:68bf) - TX_FAR _SSTicketReceivedText - db $11, $6, "@" +CeruleanCityText4: ; 196fd (6:56fd) + TX_FAR _CeruleanCityText4 + db "@" -SSTicketNoRoomText: ; 1e8c6 (7:68c6) - TX_FAR _SSTicketNoRoomText +CeruleanCityText5: ; 19702 (6:5702) + TX_FAR _CeruleanCityText5 db "@" -UnnamedText_1e8cb: ; 1e8cb (7:68cb) - TX_FAR _UnnamedText_1e8cb +CeruleanCityText11: ; 19707 (6:5707) +CeruleanCityText6: ; 19707 (6:5707) + TX_FAR _CeruleanCityText6 db "@" -BillsHouseText3: ; 1e8d0 (7:68d0) +CeruleanCityText7: ; 1970c (6:570c) db $08 ; asm - ld hl, UnnamedText_1e8da + ldh a, [$d3] + cp $b4 + jr c, .asm_e9fc9 ; 0x19711 + ld hl, UnnamedText_19730 + call PrintText + jr .asm_d486e ; 0x19719 +.asm_e9fc9 ; 0x1971b + cp $64 + jr c, .asm_df99b ; 0x1971d + ld hl, UnnamedText_19735 + call PrintText + jr .asm_d486e ; 0x19725 +.asm_df99b ; 0x19727 + ld hl, UnnamedText_1973a call PrintText +.asm_d486e ; 0x1972d jp TextScriptEnd -UnnamedText_1e8da: ; 1e8da (7:68da) - TX_FAR _UnnamedText_1e8da +UnnamedText_19730: ; 19730 (6:5730) + TX_FAR _UnnamedText_19730 db "@" -BillsHouseObject: ; 0x1e8df (size=38) - db $d ; border tile - - db $2 ; warps - db $7, $2, $0, $ff - db $7, $3, $0, $ff - - db $0 ; signs - - db $3 ; people - db SPRITE_SLOWBRO, $5 + 4, $6 + 4, $ff, $ff, $1 ; person - db SPRITE_BLACK_HAIR_BOY_2, $4 + 4, $4 + 4, $ff, $ff, $2 ; person - db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $6 + 4, $ff, $ff, $3 ; person - - ; warp-to - EVENT_DISP BILLS_HOUSE_WIDTH, $7, $2 - EVENT_DISP BILLS_HOUSE_WIDTH, $7, $3 +UnnamedText_19735: ; 19735 (6:5735) + TX_FAR _UnnamedText_19735 + db "@" -BillsHouseBlocks: ; 1e905 (7:6905) - INCBIN "maps/billshouse.blk" +UnnamedText_1973a: ; 1973a (6:573a) + TX_FAR _UnnamedText_1973a + db "@" -Func_1e915: ; 1e915 (7:6915) - call SaveScreenTilesToBuffer2 - ld hl, AccessedOaksPCText +CeruleanCityText8: ; 1973f (6:573f) + db $08 ; asm + ldh a, [$d3] + cp $b4 + jr c, .asm_e28da ; 0x19744 + ld hl, UnnamedText_1976f call PrintText - ld hl, GetDexRatedText + jr .asm_f2f38 ; 0x1974c +.asm_e28da ; 0x1974e + cp $78 + jr c, .asm_15d08 ; 0x19750 + ld hl, UnnamedText_19774 call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] ; $cc26 - and a - jr nz, .asm_1e932 - ld a, $56 - call Predef ; indirect jump to DisplayDexRating (44169 (11:4169)) -.asm_1e932 - ld hl, ClosedOaksPCText + jr .asm_f2f38 ; 0x19758 +.asm_15d08 ; 0x1975a + cp $3c + jr c, .asm_d7fea ; 0x1975c + ld hl, UnnamedText_19779 call PrintText - jp LoadScreenTilesFromBuffer2 + jr .asm_f2f38 ; 0x19764 +.asm_d7fea ; 0x19766 + ld hl, UnnamedText_1977e + call PrintText +.asm_f2f38 ; 0x1976c + jp TextScriptEnd -GetDexRatedText: ; 1e93b (7:693b) - TX_FAR _GetDexRatedText +UnnamedText_1976f: ; 1976f (6:576f) + TX_FAR _UnnamedText_1976f db "@" -ClosedOaksPCText: ; 1e940 (7:6940) - TX_FAR _ClosedOaksPCText - db $0d,"@" +UnnamedText_19774: ; 19774 (6:5774) + TX_FAR _UnnamedText_19774 + db "@" -AccessedOaksPCText: ; 1e946 (7:6946) - TX_FAR _AccessedOaksPCText +UnnamedText_19779: ; 19779 (6:5779) + TX_FAR _UnnamedText_19779 db "@" -Func_1e94b: ; 1e94b (7:694b) - call EnableAutoTextBoxDrawing - ld a, $39 - jp Func_3ef5 +UnnamedText_1977e: ; 1977e (6:577e) + TX_FAR _UnnamedText_1977e + db "@" -NewBicycleText: ; 1e953 (7:6953) - TX_FAR _NewBicycleText +CeruleanCityText9: ; 19783 (6:5783) + TX_FAR _CeruleanCityText9 db "@" -Func_1e958: ; 1e958 (7:6958) - call EnableAutoTextBoxDrawing - ld a, $05 - jp Func_3ef5 +CeruleanCityText10: ; 19788 (6:5788) + TX_FAR _CeruleanCityText10 + db "@" -PushStartText: ; 1e960 (7:6960) - TX_FAR _PushStartText +CeruleanCityText12: ; 1978d (6:578d) + TX_FAR _CeruleanCityText12 db "@" -Func_1e965: ; 1e965 (7:6965) - call EnableAutoTextBoxDrawing - ld hl, $d2f7 - ld b, $13 - call CountSetBits - ld a, [$d11e] - cp $2 - ld a, $6 - jr c, .asm_1e97b - ld a, $7 -.asm_1e97b - jp Func_3ef5 +CeruleanCityText13: ; 19792 (6:5792) + TX_FAR _CeruleanCityText13 + db "@" -SaveOptionText: ; 1e97e (7:697e) - TX_FAR _SaveOptionText +CeruleanCityText16: ; 19797 (6:5797) + TX_FAR _CeruleanCityText16 db "@" -StrengthsAndWeaknessesText: ; 1e983 (7:6983) - TX_FAR _StrengthsAndWeaknessesText +CeruleanCityText17: ; 1979c (6:579c) + TX_FAR _CeruleanCityText17 db "@" -Func_1e988: ; 1e988 (7:6988) - ld hl, $d790 - bit 7, [hl] - jr z, asm_1e9ab - ld a, [W_NUMSAFARIBALLS] ; $da47 - and a - jr z, asm_1e9b0 - jr asm_1e9ab +VermilionCityScript: ; 197a1 (6:57a1) + call EnableAutoTextBoxDrawing + ld hl, $d126 + bit 6, [hl] + res 6, [hl] + push hl + call nz, VermilionCityScript_197cb + pop hl + bit 5, [hl] + res 5, [hl] + call nz, VermilionCityScript_197c0 + ld hl, VermilionCityScriptPointers + ld a, [W_VERMILIONCITYCURSCRIPT] + jp CallFunctionInTable -Func_1e997: ; 1e997 (7:6997) - ld a, [wSafariSteps] ; $d70d - ld b, a - ld a, [wSafariSteps + 1] ; $d70e - ld c, a - or b - jr z, asm_1e9b0 - dec bc - ld a, b - ld [wSafariSteps], a ; $d70d - ld a, c - ld [wSafariSteps + 1], a ; $d70e -asm_1e9ab: ; 1e9ab (7:69ab) - xor a - ld [$da46], a +VermilionCityScript_197c0: ; 197c0 (6:57c0) + call GenRandom + ld a, [$ffd4] + and $e + ld [$d743], a ret -asm_1e9b0: ; 1e9b0 (7:69b0) - call EnableAutoTextBoxDrawing - xor a - ld [wMusicHeaderPointer], a - dec a - call PlaySound - ld c, BANK(SFX_02_5f) - ld a, (SFX_02_5f - SFX_Headers_02) / 3 - call PlayMusic -.asm_1e9c2 - ld a, [$c02a] - cp $b9 - jr nz, .asm_1e9c2 - ld a, $d3 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID + +VermilionCityScript_197cb: ; 197cb (6:57cb) + ld hl, $d803 + bit 2, [hl] + ret z + bit 3, [hl] + set 3, [hl] + ret nz + ld a, $2 + ld [W_VERMILIONCITYCURSCRIPT], a + ret + +VermilionCityScriptPointers: ; 197dc (6:57dc) + dw VermilionCityScript0 + dw VermilionCityScript1 + dw VermilionCityScript2 + dw VermilionCityScript3 + dw VermilionCityScript4 + +VermilionCityScript0: ; 197e6 (6:57e6) + ld a, [$c109] + and a + ret nz + ld hl, CoordsData_19823 + call ArePlayerCoordsInArray + ret nc xor a - ld [$d528], a - ld a, $9c - ld [H_DOWNARROWBLINKCNT1], a ; $ff8b + ld [H_CURRENTPRESSEDBUTTONS], a + ld [$cf0d], a ld a, $3 - ld [$d42f], a - ld a, $5 - ld [W_SAFARIZONEENTRANCECURSCRIPT], a - ld hl, $d790 - set 6, [hl] + ld [$ff8c], a + call DisplayTextID + ld a, [$d803] + bit 2, a + jr nz, .asm_19810 ; 0x19804 $a + ld b, $3f + ld a, $1c + call Predef + ld a, b + and a + ret nz +.asm_19810 + ld a, $40 + ld [$ccd3], a ld a, $1 - ld [$da46], a + ld [$cd38], a + call Func_3486 + ld a, $1 + ld [W_VERMILIONCITYCURSCRIPT], a ret -Func_1e9ed: ; 1e9ed (7:69ed) +CoordsData_19823: ; 19823 (6:5823) + db $1e,$12 + db $ff + +VermilionCityScript4: ; 19826 (6:5826) + ld hl, CoordsData_19823 + call ArePlayerCoordsInArray + ret c + ld a, $0 + ld [W_VERMILIONCITYCURSCRIPT], a + ret + +VermilionCityScript2: ; 19833 (6:5833) + ld a, $ff + ld [wJoypadForbiddenButtonsMask], a + ld a, $40 + ld [$ccd3], a + ld [$ccd4], a + ld a, $2 + ld [$cd38], a + call Func_3486 + ld a, $3 + ld [W_VERMILIONCITYCURSCRIPT], a + ret + +VermilionCityScript3: ; 1984e (6:584e) + ld a, [$cd38] + and a + ret nz xor a ld [wJoypadForbiddenButtonsMask], a - ld hl, SafariGameOverText - jp PrintText + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, $0 + ld [W_VERMILIONCITYCURSCRIPT], a + ret -SafariGameOverText: ; 1e9f7 (7:69f7) - db $08 ; asm - ld a, [W_NUMSAFARIBALLS] ; $da47 +VermilionCityScript1: ; 1985f (6:585f) + ld a, [$cd38] and a - jr z, .asm_1ea04 - ld hl, TimesUpText + ret nz + ld c, $a + call DelayFrames + ld a, $0 + ld [W_VERMILIONCITYCURSCRIPT], a + ret + +VermilionCityTextPointers: ; 1986f (6:586f) + dw VermilionCityText1 + dw VermilionCityText2 + dw VermilionCityText3 + dw VermilionCityText4 + dw VermilionCityText5 + dw VermilionCityText6 + dw VermilionCityText7 + dw VermilionCityText8 + dw MartSignText + dw PokeCenterSignText + dw VermilionCityText11 + dw VermilionCityText12 + dw VermilionCityText13 + +VermilionCityText1: ; 19889 (6:5889) + TX_FAR _VermilionCityText1 + db "@" + +VermilionCityText2: ; 1988e (6:588e) + db $08 ; asm + ld a, [$d803] + bit 2, a + jr nz, .asm_359bd ; 0x19894 + ld hl, UnnamedText_198a7 call PrintText -.asm_1ea04 - ld hl, GameOverText + jr .asm_735d9 ; 0x1989c +.asm_359bd ; 0x1989e + ld hl, UnnamedText_198ac call PrintText +.asm_735d9 ; 0x198a4 jp TextScriptEnd -TimesUpText: ; 1ea0d (7:6a0d) - TX_FAR _TimesUpText +UnnamedText_198a7: ; 198a7 (6:58a7) + TX_FAR _UnnamedText_198a7 db "@" -GameOverText: ; 1ea12 (7:6a12) - TX_FAR _GameOverText +UnnamedText_198ac: ; 198ac (6:58ac) + TX_FAR _UnnamedText_198ac db "@" -Func_1eaa17: ; 1ea17 (7:6a17) - ld a, [$c109] - cp $4 - ret nz - call EnableAutoTextBoxDrawing - ld a, $31 - jp Func_3ef5 - -CinnabarGymQuiz: ; 1ea25 (7:6a25) +VermilionCityText3: ; 198b1 (6:58b1) db $08 ; asm - xor a - ld [$da38], a - ld a, [wWhichTrade] ; $cd3d - push af - and $f - ld [$ffdb], a - pop af - and $f0 - swap a - ld [$ffdc], a - ld hl, CinnabarGymQuizIntroText + ld a, [$d803] + bit 2, a + jr nz, .asm_3e0e9 ; 0x198b7 + ld a, [$c109] + cp $c + jr z, .asm_07af3 ; 0x198be + ld hl, VermilionCityCoords1 + call ArePlayerCoordsInArray + jr nc, .asm_57b73 ; 0x198c6 +.asm_07af3 ; 0x198c8 + ld hl, SSAnneWelcomeText4 call PrintText - ld a, [$ffdb] - dec a - add a - ld d, $0 - ld e, a - ld hl, CinnabarQuizQuestions - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a + jr .asm_79bd1 ; 0x198ce +.asm_57b73 ; 0x198d0 + ld hl, SSAnneWelcomeText9 call PrintText - ld a, $1 - ld [$cc3c], a - call Func_1ea92 + ld b, $3f + ld a, $1c + call Predef + ld a, b + and a + jr nz, .asm_0419b ; 0x198df + ld hl, SSAnneNoTicketText + call PrintText + jr .asm_79bd1 ; 0x198e7 +.asm_0419b ; 0x198e9 + ld hl, SSAnneFlashedTicketText + call PrintText + ld a, $4 + ld [W_VERMILIONCITYCURSCRIPT], a + jr .asm_79bd1 ; 0x198f4 +.asm_3e0e9 ; 0x198f6 + ld hl, SSAnneNotHereText + call PrintText +.asm_79bd1 ; 0x198fc jp TextScriptEnd -CinnabarGymQuizIntroText: ; 1ea5b (7:6a5b) - TX_FAR _CinnabarGymQuizIntroText +VermilionCityCoords1: ; 198ff (6:58ff) + db $1d,$13 + db $1f,$13 + db $ff + +SSAnneWelcomeText4: ; 19904 (6:5904) + TX_FAR _SSAnneWelcomeText4 + db "@" + +SSAnneWelcomeText9: ; 19909 (6:5909) + TX_FAR _SSAnneWelcomeText9 + db "@" + +SSAnneFlashedTicketText: ; 1990e (6:590e) + TX_FAR _SSAnneFlashedTicketText + db "@" + +SSAnneNoTicketText: ; 19913 (6:5913) + TX_FAR _SSAnneNoTicketText + db "@" + +SSAnneNotHereText: ; 19918 (6:5918) + TX_FAR _SSAnneNotHereText + db "@" + +VermilionCityText4: ; 1991d (6:591d) + TX_FAR _VermilionCityText4 + db "@" + +VermilionCityText5: ; 19922 (6:5922) + TX_FAR _VermilionCityText5 + db $08 ; asm + ld a, MACHOP + call PlayCry + call WaitForSoundToFinish + ld hl, VermilionCityText14 ; $5933 + ret + +VermilionCityText14: ; 19933 (6:5933) + TX_FAR _VermilionCityText14 + db "@" + +VermilionCityText6: ; 19938 (6:5938) + TX_FAR _VermilionCityText6 db "@" -CinnabarQuizQuestions: ; 1ea60 (7:6a60) - dw CinnabarQuizQuestionsText1 - dw CinnabarQuizQuestionsText2 - dw CinnabarQuizQuestionsText3 - dw CinnabarQuizQuestionsText4 - dw CinnabarQuizQuestionsText5 - dw CinnabarQuizQuestionsText6 +VermilionCityText7: ; 1993d (6:593d) + TX_FAR _VermilionCityText7 + db "@" -CinnabarQuizQuestionsText1: ; 1ea6c (7:6a6c) - TX_FAR _CinnabarQuizQuestionsText1 +VermilionCityText8: ; 19942 (6:5942) + TX_FAR _VermilionCityText8 db "@" -CinnabarQuizQuestionsText2: ; 1ea71 (7:6a71) - TX_FAR _CinnabarQuizQuestionsText2 +VermilionCityText11: ; 19947 (6:5947) + TX_FAR _VermilionCityText11 db "@" -CinnabarQuizQuestionsText3: ; 1ea76 (7:6a76) - TX_FAR _CinnabarQuizQuestionsText3 +VermilionCityText12: ; 1994c (6:594c) + TX_FAR _VermilionCityText12 db "@" -CinnabarQuizQuestionsText4: ; 1ea7b (7:6a7b) - TX_FAR _CinnabarQuizQuestionsText4 +VermilionCityText13: ; 19951 (6:5951) + TX_FAR _VermilionCityText13 db "@" -CinnabarQuizQuestionsText5: ; 1ea80 (7:6a80) - TX_FAR _CinnabarQuizQuestionsText5 +CeladonCityScript: ; 19956 (6:5956) + call EnableAutoTextBoxDrawing + ld hl, $d77e + res 0, [hl] + res 7, [hl] + ld hl, $d816 + res 7, [hl] + ret + +CeladonCityTextPointers: ; 19966 (6:5966) + dw CeladonCityText1 + dw CeladonCityText2 + dw CeladonCityText3 + dw CeladonCityText4 + dw CeladonCityText5 + dw CeladonCityText6 + dw CeladonCityText7 + dw CeladonCityText8 + dw CeladonCityText9 + dw CeladonCityText10 + dw CeladonCityText11 + dw PokeCenterSignText + dw CeladonCityText13 + dw CeladonCityText14 + dw CeladonCityText15 + dw CeladonCityText16 + dw CeladonCityText17 + dw CeladonCityText18 + +CeladonCityText1: ; 1998a (6:598a) + TX_FAR _CeladonCityText1 db "@" -CinnabarQuizQuestionsText6: ; 1ea85 (7:6a85) - TX_FAR _CinnabarQuizQuestionsText6 +CeladonCityText2: ; 1998f (6:598f) + TX_FAR _CeladonCityText2 db "@" -Func_1ea8a: ; 1ea8a (7:6a8a) - ld hl, $d79c - ld a, $10 - jp Predef ; indirect jump to HandleBitArray (f666 (3:7666)) +CeladonCityText3: ; 19994 (6:5994) + TX_FAR _CeladonCityText3 + db "@" -Func_1ea92: ; 1ea92 (7:6a92) - call YesNoChoice - ld a, [$ffdc] - ld c, a - ld a, [wCurrentMenuItem] ; $cc26 - cp c - jr nz, .asm_1eab8 - ld hl, $d126 - set 5, [hl] - ld a, [$ffdb] - ld [$ffe0], a - ld hl, CinnabarGymQuizCorrectText +CeladonCityText4: ; 19999 (6:5999) + TX_FAR _CeladonCityText4 + db "@" + +CeladonCityText5: ; 1999e (6:599e) + db $08 ; asm + ld a, [$d777] + bit 0, a + jr nz, .asm_7053f ; 0x199a4 + ld hl, TM41PreText call PrintText - ld a, [$ffe0] - ld c, a - ld b, $1 - call Func_1ea8a - jp Func_1eb0a -.asm_1eab8 - call WaitForSoundToFinish - ld a, (SFX_02_51 - SFX_Headers_02) / 3 - call PlaySound - call WaitForSoundToFinish - ld hl, CinnabarGymQuizIncorrectText + ld bc, (TM_41 << 8) | 1 + call GiveItem + jr c, .Success + ld hl, TM41NoRoomText call PrintText - ld a, [$ffdb] - add $2 - ld c, a - ld b, $2 - ld hl, $d79a - ld a, $10 - call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) - ld a, c - and a - ret nz - ld a, [$ffdb] - add $2 - ld [$da38], a - ret - -CinnabarGymQuizCorrectText: ; 1eae3 (7:6ae3) - db $0b - TX_FAR _CinnabarGymQuizCorrectText - db $06,$08 - - ld a, [$ffe0] - ld c, a - ld b, $2 - call Func_1ea8a - ld a, c - and a - jp nz, TextScriptEnd - call WaitForSoundToFinish - ld a, (SFX_02_57 - SFX_Headers_02) / 3 - call PlaySound - call WaitForSoundToFinish + jr .Done +.Success + ld hl, ReceivedTM41Text + call PrintText + ld hl, $d777 + set 0, [hl] + jr .Done +.asm_7053f ; 0x199c9 + ld hl, TM41ExplanationText + call PrintText +.Done jp TextScriptEnd -CinnabarGymQuizIncorrectText: ; 1eb05 (7:6b05) - TX_FAR _CinnabarGymQuizIncorrectText +TM41PreText: ; 199d2 (6:59d2) + TX_FAR _TM41PreText db "@" -Func_1eb0a: ; 1eb0a (7:6b0a) - ld a, $6 - ld [$ffdb], a -.asm_1eb0e - ld a, [$ffdb] - dec a - add a - add a - ld d, $0 - ld e, a - ld hl, CinnabarGymGateCoords ; $6b48 - add hl, de - ld a, [hli] - ld b, [hl] - ld c, a - inc hl - ld a, [hl] - ld [$d12f], a - push bc - ld a, [$ffdb] - ld [$ffe0], a - ld c, a - ld b, $2 - call Func_1ea8a - ld a, c - and a - jr nz, .asm_1eb36 - ld a, [$d12f] - jr .asm_1eb38 -.asm_1eb36 - ld a, $e -.asm_1eb38 - pop bc - ld [$d09f], a - ld a, $17 - call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) - ld hl, $ffdb - dec [hl] - jr nz, .asm_1eb0e - ret - -CinnabarGymGateCoords: ; 1eb48 (7:6b48) - ; format: x-coord, y-coord, direction, padding - ; direction: $54 = horizontal gate, $5f = vertical gate - db $09,$03,$54,$00 - db $06,$03,$54,$00 - db $06,$06,$54,$00 - db $03,$08,$5f,$00 - db $02,$06,$54,$00 - db $02,$03,$54,$00 - -Func_1eb60: ; 1eb60 (7:6b60) - call EnableAutoTextBoxDrawing - ld a, $30 - call Func_3ef5 - ret +ReceivedTM41Text: ; 199d7 (6:59d7) + TX_FAR _ReceivedTM41Text + db $0B, "@" -MagazinesText: ; 1eb69 (7:6b69) - TX_FAR _MagazinesText +TM41ExplanationText: ; 199dd (6:59dd) + TX_FAR _TM41ExplanationText db "@" -Func_1eb6e: ; 1eb6e (7:6b6e) - call EnableAutoTextBoxDrawing - ld a, [$c109] - cp $4 - ret nz - ld a, [$d7f2] - bit 7, a - jr nz, .asm_1ebd2 - bit 3, a - jr nz, .asm_1eb86 - bit 6, a - jr nz, .asm_1eb8b -.asm_1eb86 - ld a, $2d - jp Func_3ef5 -.asm_1eb8b - ld a, $1 - ld [$cc3c], a - ld a, $2e - call Func_3ef5 - ld c, $20 - call DelayFrames - ld a, (SFX_02_3c - SFX_Headers_02) / 3 - call PlaySound - call WaitForSoundToFinish - ld c, $50 - call DelayFrames - ld a, (SFX_02_48 - SFX_Headers_02) / 3 - call PlaySound - call WaitForSoundToFinish - ld c, $30 - call DelayFrames - ld a, (SFX_02_3c - SFX_Headers_02) / 3 - call PlaySound - call WaitForSoundToFinish - ld c, $20 - call DelayFrames - ld a, (SFX_02_3a - SFX_Headers_02) / 3 - call PlaySound - call WaitForSoundToFinish - call Func_2307 - ld hl, $d7f2 - set 3, [hl] - ret -.asm_1ebd2 - ld a, $1 - ld [$cc3c], a - ld a, $2f - call Func_3ef5 - ret +TM41NoRoomText: ; 199e2 (6:59e2) + TX_FAR _TM41NoRoomText + db "@" -BillsHouseMonitorText: ; 1ebdd (7:6bdd) - TX_FAR _BillsHouseMonitorText +CeladonCityText6: ; 199e7 (6:59e7) + TX_FAR _CeladonCityText6 db "@" -BillsHouseInitiatedText: ; 1ebe2 (7:6be2) - TX_FAR _BillsHouseInitiatedText - db $06 +CeladonCityText7: ; 199ec (6:59ec) + TX_FAR _CeladonCityText7 db $08 ; asm - ld a, $ff - ld [$c0ee], a - call PlaySound - ld c, $10 - call DelayFrames - ld a, (SFX_02_49 - SFX_Headers_02) / 3 - call PlaySound - call WaitForSoundToFinish - ld c, $3c - call DelayFrames + ld a, POLIWRATH + call PlayCry jp TextScriptEnd -BillsHousePokemonList: ; 1ec05 (7:6c05) - db $08 ; asm - call SaveScreenTilesToBuffer1 - ld hl, BillsHousePokemonListText1 - call PrintText - xor a - ld [$d07c], a - ld [$cc26], a - ld [$cc2a], a - ld a, $3 - ld [$cc29], a - ld a, $4 - ld [$cc28], a - ld a, $2 - ld [$cc24], a - ld a, $1 - ld [$cc25], a -.asm_1ec2d - ld hl, $d730 - set 6, [hl] - ld hl, wTileMap - ld b, $a - ld c, $9 - call TextBoxBorder - ld hl, $c3ca - ld de, BillsMonListText - call PlaceString - ld hl, BillsHousePokemonListText2 - call PrintText - call SaveScreenTilesToBuffer2 - call HandleMenuInput - bit 1, a - jr nz, .asm_1ec74 - ld a, [$cc26] - add EEVEE - cp EEVEE - jr z, .asm_1ec6c - cp FLAREON - jr z, .asm_1ec6c - cp JOLTEON - jr z, .asm_1ec6c - cp VAPOREON - jr z, .asm_1ec6c - jr .asm_1ec74 -.asm_1ec6c - call DisplayPokedex - call LoadScreenTilesFromBuffer2 - jr .asm_1ec2d -.asm_1ec74 - ld hl, $d730 - res 6, [hl] - call LoadScreenTilesFromBuffer2 - jp TextScriptEnd +CeladonCityText8: ; 199f9 (6:59f9) + TX_FAR _CeladonCityText8 + db "@" -BillsHousePokemonListText1: ; 1ec7f (7:6c7f) - TX_FAR _BillsHousePokemonListText1 +CeladonCityText9: ; 199fe (6:59fe) + TX_FAR _CeladonCityText9 db "@" -BillsMonListText: ; 1ec84 (7:6c84) - db "EEVEE" - next "FLAREON" - next "JOLTEON" - next "VAPOREON" - next "CANCEL@" +CeladonCityText10: ; 19a03 (6:5a03) + TX_FAR _CeladonCityText10 + db "@" -BillsHousePokemonListText2: ; 1ecaa (7:6caa) - TX_FAR _BillsHousePokemonListText2 +CeladonCityText11: ; 19a08 (6:5a08) + TX_FAR _CeladonCityText11 db "@" -Func_1ecaf: ; 1ecaf (7:6caf) - ld a, [$c109] - cp $4 - ret nz - call EnableAutoTextBoxDrawing - ld a, $8 - jp Func_3ef5 +CeladonCityText13: ; 19a0d (6:5a0d) + TX_FAR _CeladonCityText13 + db "@" -OakLabEmailText: ; 1ecbd (7:6cbd) - TX_FAR _OakLabEmailText +CeladonCityText14: ; 19a12 (6:5a12) + TX_FAR _CeladonCityText14 db "@" +CeladonCityText15: ; 19a17 (6:5a17) + TX_FAR _CeladonCityText15 + db "@" +CeladonCityText16: ; 19a1c (6:5a1c) + TX_FAR _CeladonCityText16 + db "@" -SECTION "bank9",ROMX,BANK[$9] +CeladonCityText17: ; 19a21 (6:5a21) + TX_FAR _CeladonCityText17 + db "@" -RhydonPicFront: ; 24000 (9:4000) - INCBIN "pic/bmon/rhydon.pic" -RhydonPicBack: ; 24202 (9:4202) - INCBIN "pic/monback/rhydonb.pic" -KangaskhanPicFront: ; 2429a (9:429a) - INCBIN "pic/bmon/kangaskhan.pic" -KangaskhanPicBack: ; 244a6 (9:44a6) - INCBIN "pic/monback/kangaskhanb.pic" -NidoranMPicFront: ; 2453c (9:453c) - INCBIN "pic/bmon/nidoranm.pic" -NidoranMPicBack: ; 24623 (9:4623) - INCBIN "pic/monback/nidoranmb.pic" -ClefairyPicFront: ; 24682 (9:4682) - INCBIN "pic/bmon/clefairy.pic" -ClefairyPicBack: ; 24785 (9:4785) - INCBIN "pic/monback/clefairyb.pic" -SpearowPicFront: ; 247df (9:47df) - INCBIN "pic/bmon/spearow.pic" -SpearowPicBack: ; 248c2 (9:48c2) - INCBIN "pic/monback/spearowb.pic" -VoltorbPicFront: ; 24911 (9:4911) - INCBIN "pic/bmon/voltorb.pic" -VoltorbPicBack: ; 2499a (9:499a) - INCBIN "pic/monback/voltorbb.pic" -NidokingPicFront: ; 249f8 (9:49f8) - INCBIN "pic/bmon/nidoking.pic" -NidokingPicBack: ; 24c60 (9:4c60) - INCBIN "pic/monback/nidokingb.pic" -SlowbroPicFront: ; 24d0a (9:4d0a) - INCBIN "pic/bmon/slowbro.pic" -SlowbroPicBack: ; 24f87 (9:4f87) - INCBIN "pic/monback/slowbrob.pic" -IvysaurPicFront: ; 2502b (9:502b) - INCBIN "pic/bmon/ivysaur.pic" -IvysaurPicBack: ; 25157 (9:5157) - INCBIN "pic/monback/ivysaurb.pic" -ExeggutorPicFront: ; 251d6 (9:51d6) - INCBIN "pic/bmon/exeggutor.pic" -ExeggutorPicBack: ; 253f8 (9:53f8) - INCBIN "pic/monback/exeggutorb.pic" -LickitungPicFront: ; 254a7 (9:54a7) - INCBIN "pic/bmon/lickitung.pic" -LickitungPicBack: ; 2563e (9:563e) - INCBIN "pic/monback/lickitungb.pic" -ExeggcutePicFront: ; 256d7 (9:56d7) - INCBIN "pic/bmon/exeggcute.pic" -ExeggcutePicBack: ; 258f0 (9:58f0) - INCBIN "pic/monback/exeggcuteb.pic" -GrimerPicFront: ; 25973 (9:5973) - INCBIN "pic/bmon/grimer.pic" -GrimerPicBack: ; 25ab0 (9:5ab0) - INCBIN "pic/monback/grimerb.pic" -GengarPicFront: ; 25b76 (9:5b76) - INCBIN "pic/bmon/gengar.pic" -GengarPicBack: ; 25cc6 (9:5cc6) - INCBIN "pic/monback/gengarb.pic" -NidoranFPicFront: ; 25d28 (9:5d28) - INCBIN "pic/bmon/nidoranf.pic" -NidoranFPicBack: ; 25dc2 (9:5dc2) - INCBIN "pic/monback/nidoranfb.pic" -NidoqueenPicFront: ; 25e09 (9:5e09) - INCBIN "pic/bmon/nidoqueen.pic" -NidoqueenPicBack: ; 25fef (9:5fef) - INCBIN "pic/monback/nidoqueenb.pic" -CubonePicFront: ; 260a8 (9:60a8) - INCBIN "pic/bmon/cubone.pic" -CubonePicBack: ; 26196 (9:6196) - INCBIN "pic/monback/cuboneb.pic" -RhyhornPicFront: ; 26208 (9:6208) - INCBIN "pic/bmon/rhyhorn.pic" -RhyhornPicBack: ; 2640f (9:640f) - INCBIN "pic/monback/rhyhornb.pic" -LaprasPicFront: ; 264c1 (9:64c1) - INCBIN "pic/bmon/lapras.pic" -LaprasPicBack: ; 2667c (9:667c) - INCBIN "pic/monback/laprasb.pic" -ArcaninePicFront: ; 266ff (9:66ff) - INCBIN "pic/bmon/arcanine.pic" -ArcaninePicBack: ; 2693d (9:693d) - INCBIN "pic/monback/arcanineb.pic" -GyaradosPicFront: ; 269d4 (9:69d4) - INCBIN "pic/bmon/gyarados.pic" -GyaradosPicBack: ; 26c25 (9:6c25) - INCBIN "pic/monback/gyaradosb.pic" -ShellderPicFront: ; 26cb6 (9:6cb6) - INCBIN "pic/bmon/shellder.pic" -ShellderPicBack: ; 26dc3 (9:6dc3) - INCBIN "pic/monback/shellderb.pic" -TentacoolPicFront: ; 26e2a (9:6e2a) - INCBIN "pic/bmon/tentacool.pic" -TentacoolPicBack: ; 26f1c (9:6f1c) - INCBIN "pic/monback/tentacoolb.pic" -GastlyPicFront: ; 26f77 (9:6f77) - INCBIN "pic/bmon/gastly.pic" -GastlyPicBack: ; 27190 (9:7190) - INCBIN "pic/monback/gastlyb.pic" -ScytherPicFront: ; 2721c (9:721c) - INCBIN "pic/bmon/scyther.pic" -ScytherPicBack: ; 2743c (9:743c) - INCBIN "pic/monback/scytherb.pic" -StaryuPicFront: ; 274e0 (9:74e0) - INCBIN "pic/bmon/staryu.pic" -StaryuPicBack: ; 275ec (9:75ec) - INCBIN "pic/monback/staryub.pic" -BlastoisePicFront: ; 27637 (9:7637) - INCBIN "pic/bmon/blastoise.pic" -BlastoisePicBack: ; 27851 (9:7851) - INCBIN "pic/monback/blastoiseb.pic" -PinsirPicFront: ; 278da (9:78da) - INCBIN "pic/bmon/pinsir.pic" -PinsirPicBack: ; 27aaa (9:7aaa) - INCBIN "pic/monback/pinsirb.pic" -TangelaPicFront: ; 27b39 (9:7b39) - INCBIN "pic/bmon/tangela.pic" -TangelaPicBack: ; 27ce7 (9:7ce7) - INCBIN "pic/monback/tangelab.pic" +CeladonCityText18: ; 19a26 (6:5a26) + TX_FAR _CeladonCityText18 + db "@" -Func_27d6b: ; 27d6b (9:7d6b) - call Load16BitRegisters - push hl - call GetMonHeader - pop hl - push hl - ld a, [W_MONHTYPE1] - call Func_27d89 - ld a, [W_MONHTYPE1] - ld b, a - ld a, [W_MONHTYPE2] - cp b - pop hl - jr z, asm_27d8c - ld bc, $28 - add hl, bc +FuchsiaCityScript: ; 19a2b (6:5a2b) + jp EnableAutoTextBoxDrawing -Func_27d89: ; 27d89 (9:7d89) - push hl - jr asm_27d9f -asm_27d8c: ; 27d8c (9:7d8c) - ld a, $7f - ld bc, $13 - add hl, bc - ld bc, $6 - jp FillMemory +FuchsiaCityTextPointers: ; 19a2e (6:5a2e) + dw FuchsiaCityText1 + dw FuchsiaCityText2 + dw FuchsiaCityText3 + dw FuchsiaCityText4 + dw FuchsiaCityText5 + dw FuchsiaCityText6 + dw FuchsiaCityText7 + dw FuchsiaCityText8 + dw FuchsiaCityText9 + dw FuchsiaCityText10 + dw FuchsiaCityText11 + dw FuchsiaCityText12 + dw FuchsiaCityText13 + dw MartSignText + dw PokeCenterSignText + dw FuchsiaCityText16 + dw FuchsiaCityText17 + dw FuchsiaCityText18 + dw FuchsiaCityText19 + dw FuchsiaCityText20 + dw FuchsiaCityText21 + dw FuchsiaCityText22 + dw FuchsiaCityText23 + dw FuchsiaCityText24 -Func_27d98: ; 27d98 (9:7d98) - call Load16BitRegisters - push hl - ld a, [W_PLAYERMOVETYPE] ; $cfd5 -asm_27d9f: ; 27d9f (9:7d9f) - add a - ld hl, TypeNamePointers ; $7dae - ld e, a - ld d, $0 - add hl, de - ld a, [hli] - ld e, a - ld d, [hl] - pop hl - jp PlaceString +FuchsiaCityText1: ; 19a5e (6:5a5e) + TX_FAR _FuchsiaCityText1 + db "@" -TypeNamePointers: ; 27dae (9:7dae) - dw Type00Name - dw Type01Name - dw Type02Name - dw Type03Name - dw Type04Name - dw Type05Name - dw Type06Name - dw Type07Name - dw Type08Name - dw Type00Name - dw Type00Name - dw Type00Name - dw Type00Name - dw Type00Name - dw Type00Name - dw Type00Name - dw Type00Name - dw Type00Name - dw Type00Name - dw Type00Name - dw Type14Name - dw Type15Name - dw Type16Name - dw Type17Name - dw Type18Name - dw Type19Name - dw Type1AName +FuchsiaCityText2: ; 19a63 (6:5a63) + TX_FAR _FuchsiaCityText2 + db "@" -Type00Name: ; 27de4 (9:7de4) - db "NORMAL@" -Type01Name: ; 27deb (9:7deb) - db "FIGHTING@" -Type02Name: ; 27df4 (9:7df4) - db "FLYING@" -Type03Name: ; 27dfb (9:7dfb) - db "POISON@" -Type14Name: ; 27e02 (9:7e02) - db "FIRE@" -Type15Name: ; 27e07 (9:7e07) - db "WATER@" -Type16Name: ; 27e0d (9:7e0d) - db "GRASS@" -Type17Name: ; 27e13 (9:7e13) - db "ELECTRIC@" -Type18Name: ; 27e1c (9:7e1c) - db "PSYCHIC@" -Type19Name: ; 27e24 (9:7e24) - db "ICE@" -Type04Name: ; 27e28 (9:7e28) - db "GROUND@" -Type05Name: ; 27e2f (9:7e2f) - db "ROCK@" -Type06Name: ; 27e34 (9:7e34) - db "BIRD@" -Type07Name: ; 27e39 (9:7e39) - db "BUG@" -Type08Name: ; 27e3d (9:7e3d) - db "GHOST@" -Type1AName: ; 27e43 (9:7e43) - db "DRAGON@" +FuchsiaCityText3: ; 19a68 (6:5a68) + TX_FAR _FuchsiaCityText3 + db "@" -SaveTrainerName: ; 27e4a (9:7e4a) - ld hl,TrainerNamePointers - ld a,[W_TRAINERCLASS] - dec a - ld c,a - ld b,0 - add hl,bc - add hl,bc - ld a,[hli] - ld h,[hl] - ld l,a - ld de,$CD6D -.CopyCharacter - ld a,[hli] - ld [de],a - inc de - cp "@" - jr nz,.CopyCharacter - ret +FuchsiaCityText4: ; 19a6d (6:5a6d) + TX_FAR _FuchsiaCityText4 + db "@" -TrainerNamePointers: ; 27e64 (9:7e64) -; what is the point of these? - dw YoungsterName - dw BugCatcherName - dw LassName - dw W_TRAINERNAME - dw JrTrainerMName - dw JrTrainerFName - dw PokemaniacName - dw SuperNerdName - dw W_TRAINERNAME - dw W_TRAINERNAME - dw BurglarName - dw EngineerName - dw JugglerXName - dw W_TRAINERNAME - dw SwimmerName - dw W_TRAINERNAME - dw W_TRAINERNAME - dw BeautyName - dw W_TRAINERNAME - dw RockerName - dw JugglerName - dw W_TRAINERNAME - dw W_TRAINERNAME - dw BlackbeltName - dw W_TRAINERNAME - dw ProfOakName - dw ChiefName - dw ScientistName - dw W_TRAINERNAME - dw RocketName - dw CooltrainerMName - dw CooltrainerFName - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME - dw W_TRAINERNAME +FuchsiaCityText5: ; 19a72 (6:5a72) +FuchsiaCityText6: ; 19a72 (6:5a72) +FuchsiaCityText7: ; 19a72 (6:5a72) +FuchsiaCityText8: ; 19a72 (6:5a72) +FuchsiaCityText9: ; 19a72 (6:5a72) +FuchsiaCityText10: ; 19a72 (6:5a72) + TX_FAR _FuchsiaCityText5 + db "@" -YoungsterName: ; 27ec2 (9:7ec2) - db "YOUNGSTER@" -BugCatcherName: ; 27ecc (9:7ecc) - db "BUG CATCHER@" -LassName: ; 27ed8 (9:7ed8) - db "LASS@" -JrTrainerMName: ; 27edd (9:7edd) - db "JR.TRAINER♂@" -JrTrainerFName: ; 27ee9 (9:7ee9) - db "JR.TRAINER♀@" -PokemaniacName: ; 27ef5 (9:7ef5) - db "POKéMANIAC@" -SuperNerdName: ; 27f00 (9:7f00) - db "SUPER NERD@" -BurglarName: ; 27f0b (9:7f0b) - db "BURGLAR@" -EngineerName: ; 27f13 (9:7f13) - db "ENGINEER@" -JugglerXName: ; 27f1c (9:7f1c) - db "JUGGLER@" -SwimmerName: ; 27f24 (9:7f24) - db "SWIMMER@" -BeautyName: ; 27f2c (9:7f2c) - db "BEAUTY@" -RockerName: ; 27f33 (9:7f33) - db "ROCKER@" -JugglerName: ; 27f3a (9:7f3a) - db "JUGGLER@" -BlackbeltName: ; 27f42 (9:7f42) - db "BLACKBELT@" -ProfOakName: ; 27f4c (9:7f4c) - db "PROF.OAK@" -ChiefName: ; 27f55 (9:7f55) - db "CHIEF@" -ScientistName: ; 27f5b (9:7f5b) - db "SCIENTIST@" -RocketName: ; 27f65 (9:7f65) - db "ROCKET@" -CooltrainerMName: ; 27f6c (9:7f6c) - db "COOLTRAINER♂@" -CooltrainerFName: ; 27f79 (9:7f79) - db "COOLTRAINER♀@" +FuchsiaCityText12: ; 19a77 (6:5a77) +FuchsiaCityText11: ; 19a77 (6:5a77) + TX_FAR _FuchsiaCityText11 + db "@" -_FocusEnergyEffect: ; 27f86 (9:7f86) - ld hl, W_PLAYERBATTSTATUS2 ; $d063 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_27f91 - ld hl, W_ENEMYBATTSTATUS2 ; $d068 -.asm_27f91 - bit 2, [hl] - jr nz, .asm_27fa5 - set 2, [hl] - ld hl, Func_3fba8 - ld b, BANK(Func_3fba8) - call Bankswitch - ld hl, FocusEnergyText - jp PrintText -.asm_27fa5 - ld c, $32 - call DelayFrames - ld hl, PrintItFailedText - ld b, BANK(PrintItFailedText) - jp Bankswitch +FuchsiaCityText13: ; 19a7c (6:5a7c) + TX_FAR _FuchsiaCityText13 + db "@" -FocusEnergyText: ; 27fb3 (9:7fb3) - db $0a - TX_FAR _FocusEnergyText +FuchsiaCityText16: ; 19a81 (6:5a81) + TX_FAR _FuchsiaCityText16 db "@" -SECTION "bankA",ROMX,BANK[$A] -GrowlithePicFront: ; 28000 (a:4000) - INCBIN "pic/bmon/growlithe.pic" -GrowlithePicBack: ; 28101 (a:4101) - INCBIN "pic/monback/growlitheb.pic" -OnixPicFront: ; 28164 (a:4164) - INCBIN "pic/bmon/onix.pic" -OnixPicBack: ; 28300 (a:4300) - INCBIN "pic/monback/onixb.pic" -FearowPicFront: ; 28383 (a:4383) - INCBIN "pic/bmon/fearow.pic" -FearowPicBack: ; 28529 (a:4529) - INCBIN "pic/monback/fearowb.pic" -PidgeyPicFront: ; 285a7 (a:45a7) - INCBIN "pic/bmon/pidgey.pic" -PidgeyPicBack: ; 2865b (a:465b) - INCBIN "pic/monback/pidgeyb.pic" -SlowpokePicFront: ; 286a0 (a:46a0) - INCBIN "pic/bmon/slowpoke.pic" -SlowpokePicBack: ; 287c2 (a:47c2) - INCBIN "pic/monback/slowpokeb.pic" -KadabraPicFront: ; 28830 (a:4830) - INCBIN "pic/bmon/kadabra.pic" -KadabraPicBack: ; 289b9 (a:49b9) - INCBIN "pic/monback/kadabrab.pic" -GravelerPicFront: ; 28a4c (a:4a4c) - INCBIN "pic/bmon/graveler.pic" -GravelerPicBack: ; 28c00 (a:4c00) - INCBIN "pic/monback/gravelerb.pic" -ChanseyPicFront: ; 28cae (a:4cae) - INCBIN "pic/bmon/chansey.pic" -ChanseyPicBack: ; 28e21 (a:4e21) - INCBIN "pic/monback/chanseyb.pic" -MachokePicFront: ; 28e85 (a:4e85) - INCBIN "pic/bmon/machoke.pic" -MachokePicBack: ; 29063 (a:5063) - INCBIN "pic/monback/machokeb.pic" -MrMimePicFront: ; 290f3 (a:50f3) - INCBIN "pic/bmon/mr.mime.pic" -MrMimePicBack: ; 29247 (a:5247) - INCBIN "pic/monback/mr.mimeb.pic" -HitmonleePicFront: ; 292bf (a:52bf) - INCBIN "pic/bmon/hitmonlee.pic" -HitmonleePicBack: ; 2945e (a:545e) - INCBIN "pic/monback/hitmonleeb.pic" -HitmonchanPicFront: ; 294bc (a:54bc) - INCBIN "pic/bmon/hitmonchan.pic" -HitmonchanPicBack: ; 29643 (a:5643) - INCBIN "pic/monback/hitmonchanb.pic" -ArbokPicFront: ; 296b4 (a:56b4) - INCBIN "pic/bmon/arbok.pic" -ArbokPicBack: ; 29911 (a:5911) - INCBIN "pic/monback/arbokb.pic" -ParasectPicFront: ; 299a8 (a:59a8) - INCBIN "pic/bmon/parasect.pic" -ParasectPicBack: ; 29b8c (a:5b8c) - INCBIN "pic/monback/parasectb.pic" -PsyduckPicFront: ; 29c0a (a:5c0a) - INCBIN "pic/bmon/psyduck.pic" -PsyduckPicBack: ; 29d3e (a:5d3e) - INCBIN "pic/monback/psyduckb.pic" -DrowzeePicFront: ; 29da9 (a:5da9) - INCBIN "pic/bmon/drowzee.pic" -DrowzeePicBack: ; 29f05 (a:5f05) - INCBIN "pic/monback/drowzeeb.pic" -GolemPicFront: ; 29f74 (a:5f74) - INCBIN "pic/bmon/golem.pic" -GolemPicBack: ; 2a0f2 (a:60f2) - INCBIN "pic/monback/golemb.pic" -MagmarPicFront: ; 2a161 (a:6161) - INCBIN "pic/bmon/magmar.pic" -MagmarPicBack: ; 2a2bf (a:62bf) - INCBIN "pic/monback/magmarb.pic" -ElectabuzzPicFront: ; 2a367 (a:6367) - INCBIN "pic/bmon/electabuzz.pic" -ElectabuzzPicBack: ; 2a4ef (a:64ef) - INCBIN "pic/monback/electabuzzb.pic" -MagnetonPicFront: ; 2a588 (a:6588) - INCBIN "pic/bmon/magneton.pic" -MagnetonPicBack: ; 2a723 (a:6723) - INCBIN "pic/monback/magnetonb.pic" -KoffingPicFront: ; 2a7a6 (a:67a6) - INCBIN "pic/bmon/koffing.pic" -KoffingPicBack: ; 2a974 (a:6974) - INCBIN "pic/monback/koffingb.pic" -MankeyPicFront: ; 2aa11 (a:6a11) - INCBIN "pic/bmon/mankey.pic" -MankeyPicBack: ; 2ab16 (a:6b16) - INCBIN "pic/monback/mankeyb.pic" -SeelPicFront: ; 2ab84 (a:6b84) - INCBIN "pic/bmon/seel.pic" -SeelPicBack: ; 2ace8 (a:6ce8) - INCBIN "pic/monback/seelb.pic" -DiglettPicFront: ; 2ad33 (a:6d33) - INCBIN "pic/bmon/diglett.pic" -DiglettPicBack: ; 2ae10 (a:6e10) - INCBIN "pic/monback/diglettb.pic" -TaurosPicFront: ; 2ae7e (a:6e7e) - INCBIN "pic/bmon/tauros.pic" -TaurosPicBack: ; 2b054 (a:7054) - INCBIN "pic/monback/taurosb.pic" -FarfetchdPicFront: ; 2b0e9 (a:70e9) - INCBIN "pic/bmon/farfetchd.pic" -FarfetchdPicBack: ; 2b2c6 (a:72c6) - INCBIN "pic/monback/farfetchdb.pic" -VenonatPicFront: ; 2b357 (a:7357) - INCBIN "pic/bmon/venonat.pic" -VenonatPicBack: ; 2b45c (a:745c) - INCBIN "pic/monback/venonatb.pic" -DragonitePicFront: ; 2b4aa (a:74aa) - INCBIN "pic/bmon/dragonite.pic" -DragonitePicBack: ; 2b67f (a:767f) - INCBIN "pic/monback/dragoniteb.pic" -DoduoPicFront: ; 2b72c (a:772c) - INCBIN "pic/bmon/doduo.pic" -DoduoPicBack: ; 2b80d (a:780d) - INCBIN "pic/monback/doduob.pic" -PoliwagPicFront: ; 2b875 (a:7875) - INCBIN "pic/bmon/poliwag.pic" -PoliwagPicBack: ; 2b947 (a:7947) - INCBIN "pic/monback/poliwagb.pic" -JynxPicFront: ; 2b98e (a:798e) - INCBIN "pic/bmon/jynx.pic" -JynxPicBack: ; 2bb42 (a:7b42) - INCBIN "pic/monback/jynxb.pic" -MoltresPicFront: ; 2bbac (a:7bac) - INCBIN "pic/bmon/moltres.pic" -MoltresPicBack: ; 2be02 (a:7e02) - INCBIN "pic/monback/moltresb.pic" +FuchsiaCityText17: ; 19a86 (6:5a86) + TX_FAR _FuchsiaCityText17 + db "@" -_LeechSeedEffect: ; 2bea9 (a:7ea9) - ld hl, MoveHitTest - ld b, BANK(MoveHitTest) - call Bankswitch - ld a, [W_MOVEMISSED] ; $d05f - and a - jr nz, .asm_2bee7 - ld hl, W_ENEMYBATTSTATUS2 ; $d068 - ld de, W_ENEMYMONTYPE1 ; $cfea (aliases: W_ENEMYMONTYPES) - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_2bec8 - ld hl, W_PLAYERBATTSTATUS2 ; $d063 - ld de, W_PLAYERMONTYPE1 ; $d019 (aliases: W_PLAYERMONTYPES) -.asm_2bec8 - ld a, [de] - cp GRASS - jr z, .asm_2bee7 - inc de - ld a, [de] - cp GRASS - jr z, .asm_2bee7 - bit 7, [hl] - jr nz, .asm_2bee7 - set 7, [hl] - ld hl, Func_3fba8 - ld b, BANK(Func_3fba8) - call Bankswitch - ld hl, SeededText - jp PrintText -.asm_2bee7 - ld c, $32 - call DelayFrames - ld hl, EvadedText - jp PrintText +FuchsiaCityText18: ; 19a8b (6:5a8b) + TX_FAR _FuchsiaCityText18 + db "@" -SeededText: ; 2bef2 (a:7ef2) - TX_FAR _SeededText +FuchsiaCityText19: ; 19a90 (6:5a90) + db $08 ; asm + ld hl, FuchsiaCityChanseyText + call PrintText + ld a, CHANSEY + call DisplayPokedex + jp TextScriptEnd + +FuchsiaCityChanseyText: ; 19a9f (6:5a9f) + TX_FAR _FuchsiaCityChanseyText + db "@" + +FuchsiaCityText20: ; 19aa4 (6:5aa4) + db $08 ; asm + ld hl, FuchsiaCityVoltorbText + call PrintText + ld a, VOLTORB + call DisplayPokedex + jp TextScriptEnd + +FuchsiaCityVoltorbText: ; 19ab3 (6:5ab3) + TX_FAR _FuchsiaCityVoltorbText + db "@" + +FuchsiaCityText21: ; 19ab8 (6:5ab8) + db $08 ; asm + ld hl, FuchsiaCityKangaskhanText + call PrintText + ld a, KANGASKHAN + call DisplayPokedex + jp TextScriptEnd + +FuchsiaCityKangaskhanText: ; 19ac7 (6:5ac7) + TX_FAR _FuchsiaCityKangaskhanText db "@" -EvadedText: ; 2bef7 (a:7ef7) - TX_FAR _EvadedText +FuchsiaCityText22: ; 19acc (6:5acc) + db $08 ; asm + ld hl, FuchsiaCitySlowpokeText + call PrintText + ld a, SLOWPOKE + call DisplayPokedex + jp TextScriptEnd + +FuchsiaCitySlowpokeText: ; 19adb (6:5adb) + TX_FAR _FuchsiaCitySlowpokeText + db "@" + +FuchsiaCityText23: ; 19ae0 (6:5ae0) + db $08 ; asm + ld hl, FuchsiaCityLaprasText + call PrintText + ld a, LAPRAS + call DisplayPokedex + jp TextScriptEnd + +FuchsiaCityLaprasText: ; 19aef (6:5aef) + TX_FAR _FuchsiaCityLaprasText db "@" -SECTION "bankB",ROMX,BANK[$B] -ArticunoPicFront: ; 2c000 (b:4000) - INCBIN "pic/bmon/articuno.pic" -ArticunoPicBack: ; 2c238 (b:4238) - INCBIN "pic/monback/articunob.pic" -ZapdosPicFront: ; 2c29d (b:429d) - INCBIN "pic/bmon/zapdos.pic" -ZapdosPicBack: ; 2c484 (b:4484) - INCBIN "pic/monback/zapdosb.pic" -DittoPicFront: ; 2c514 (b:4514) - INCBIN "pic/bmon/ditto.pic" -DittoPicBack: ; 2c5bd (b:45bd) - INCBIN "pic/monback/dittob.pic" -MeowthPicFront: ; 2c609 (b:4609) - INCBIN "pic/bmon/meowth.pic" -MeowthPicBack: ; 2c71f (b:471f) - INCBIN "pic/monback/meowthb.pic" -KrabbyPicFront: ; 2c777 (b:4777) - INCBIN "pic/bmon/krabby.pic" -KrabbyPicBack: ; 2c8b0 (b:48b0) - INCBIN "pic/monback/krabbyb.pic" -VulpixPicFront: ; 2c924 (b:4924) - INCBIN "pic/bmon/vulpix.pic" -VulpixPicBack: ; 2ca9a (b:4a9a) - INCBIN "pic/monback/vulpixb.pic" -NinetalesPicFront: ; 2caff (b:4aff) - INCBIN "pic/bmon/ninetales.pic" -NinetalesPicBack: ; 2ccfb (b:4cfb) - INCBIN "pic/monback/ninetalesb.pic" -PikachuPicFront: ; 2cd7d (b:4d7d) - INCBIN "pic/bmon/pikachu.pic" -PikachuPicBack: ; 2ce8b (b:4e8b) - INCBIN "pic/monback/pikachub.pic" -RaichuPicFront: ; 2cf03 (b:4f03) - INCBIN "pic/bmon/raichu.pic" -RaichuPicBack: ; 2d0c3 (b:50c3) - INCBIN "pic/monback/raichub.pic" -DratiniPicFront: ; 2d151 (b:5151) - INCBIN "pic/bmon/dratini.pic" -DratiniPicBack: ; 2d234 (b:5234) - INCBIN "pic/monback/dratinib.pic" -DragonairPicFront: ; 2d297 (b:5297) - INCBIN "pic/bmon/dragonair.pic" -DragonairPicBack: ; 2d3d9 (b:53d9) - INCBIN "pic/monback/dragonairb.pic" -KabutoPicFront: ; 2d464 (b:5464) - INCBIN "pic/bmon/kabuto.pic" -KabutoPicBack: ; 2d529 (b:5529) - INCBIN "pic/monback/kabutob.pic" -KabutopsPicFront: ; 2d583 (b:5583) - INCBIN "pic/bmon/kabutops.pic" -KabutopsPicBack: ; 2d73c (b:573c) - INCBIN "pic/monback/kabutopsb.pic" -HorseaPicFront: ; 2d7c1 (b:57c1) - INCBIN "pic/bmon/horsea.pic" -HorseaPicBack: ; 2d873 (b:5873) - INCBIN "pic/monback/horseab.pic" -SeadraPicFront: ; 2d8c4 (b:58c4) - INCBIN "pic/bmon/seadra.pic" -SeadraPicBack: ; 2da2b (b:5a2b) - INCBIN "pic/monback/seadrab.pic" -SandshrewPicFront: ; 2dac9 (b:5ac9) - INCBIN "pic/bmon/sandshrew.pic" -SandshrewPicBack: ; 2dbe7 (b:5be7) - INCBIN "pic/monback/sandshrewb.pic" -SandslashPicFront: ; 2dc6b (b:5c6b) - INCBIN "pic/bmon/sandslash.pic" -SandslashPicBack: ; 2de04 (b:5e04) - INCBIN "pic/monback/sandslashb.pic" -OmanytePicFront: ; 2de9d (b:5e9d) - INCBIN "pic/bmon/omanyte.pic" -OmanytePicBack: ; 2df76 (b:5f76) - INCBIN "pic/monback/omanyteb.pic" -OmastarPicFront: ; 2dfd3 (b:5fd3) - INCBIN "pic/bmon/omastar.pic" -OmastarPicBack: ; 2e18b (b:618b) - INCBIN "pic/monback/omastarb.pic" -JigglypuffPicFront: ; 2e22f (b:622f) - INCBIN "pic/bmon/jigglypuff.pic" -JigglypuffPicBack: ; 2e30f (b:630f) - INCBIN "pic/monback/jigglypuffb.pic" -WigglytuffPicFront: ; 2e348 (b:6348) - INCBIN "pic/bmon/wigglytuff.pic" -WigglytuffPicBack: ; 2e4bf (b:64bf) - INCBIN "pic/monback/wigglytuffb.pic" -EeveePicFront: ; 2e531 (b:6531) - INCBIN "pic/bmon/eevee.pic" -EeveePicBack: ; 2e625 (b:6625) - INCBIN "pic/monback/eeveeb.pic" -FlareonPicFront: ; 2e68d (b:668d) - INCBIN "pic/bmon/flareon.pic" -FlareonPicBack: ; 2e806 (b:6806) - INCBIN "pic/monback/flareonb.pic" -JolteonPicFront: ; 2e88f (b:688f) - INCBIN "pic/bmon/jolteon.pic" -JolteonPicBack: ; 2ea0a (b:6a0a) - INCBIN "pic/monback/jolteonb.pic" -VaporeonPicFront: ; 2eaae (b:6aae) - INCBIN "pic/bmon/vaporeon.pic" -VaporeonPicBack: ; 2ec02 (b:6c02) - INCBIN "pic/monback/vaporeonb.pic" -MachopPicFront: ; 2ec9f (b:6c9f) - INCBIN "pic/bmon/machop.pic" -MachopPicBack: ; 2eda2 (b:6da2) - INCBIN "pic/monback/machopb.pic" -ZubatPicFront: ; 2ee0c (b:6e0c) - INCBIN "pic/bmon/zubat.pic" -ZubatPicBack: ; 2ef17 (b:6f17) - INCBIN "pic/monback/zubatb.pic" -EkansPicFront: ; 2ef6b (b:6f6b) - INCBIN "pic/bmon/ekans.pic" -EkansPicBack: ; 2f06d (b:706d) - INCBIN "pic/monback/ekansb.pic" -ParasPicFront: ; 2f0b4 (b:70b4) - INCBIN "pic/bmon/paras.pic" -ParasPicBack: ; 2f177 (b:7177) - INCBIN "pic/monback/parasb.pic" -PoliwhirlPicFront: ; 2f1ed (b:71ed) - INCBIN "pic/bmon/poliwhirl.pic" -PoliwhirlPicBack: ; 2f35e (b:735e) - INCBIN "pic/monback/poliwhirlb.pic" -PoliwrathPicFront: ; 2f3c1 (b:73c1) - INCBIN "pic/bmon/poliwrath.pic" -PoliwrathPicBack: ; 2f52c (b:752c) - INCBIN "pic/monback/poliwrathb.pic" -WeedlePicFront: ; 2f57d (b:757d) - INCBIN "pic/bmon/weedle.pic" -WeedlePicBack: ; 2f624 (b:7624) - INCBIN "pic/monback/weedleb.pic" -KakunaPicFront: ; 2f677 (b:7677) - INCBIN "pic/bmon/kakuna.pic" -KakunaPicBack: ; 2f736 (b:7736) - INCBIN "pic/monback/kakunab.pic" -BeedrillPicFront: ; 2f788 (b:7788) - INCBIN "pic/bmon/beedrill.pic" -BeedrillPicBack: ; 2f980 (b:7980) - INCBIN "pic/monback/beedrillb.pic" -FossilKabutopsPic: ; 2f9e8 (b:79e8) - INCBIN "pic/bmon/fossilkabutops.pic" +FuchsiaCityText24: ; 19af4 (6:5af4) + db $08 ; asm + ld a, [$d7f6] + bit 6, a + jr nz, .asm_3b4e8 ; 0x19afa + bit 7, a + jr nz, .asm_667d5 ; 0x19afe + ld hl, UnnamedText_19b2a + call PrintText + jr .asm_4343f ; 0x19b06 +.asm_3b4e8 ; 0x19b08 + ld hl, FuchsiaCityOmanyteText + call PrintText + ld a, OMANYTE + jr .asm_81556 ; 0x19b10 +.asm_667d5 ; 0x19b12 + ld hl, FuchsiaCityKabutoText + call PrintText + ld a, KABUTO +.asm_81556 ; 0x19b1a + call DisplayPokedex +.asm_4343f ; 0x19b1d + jp TextScriptEnd -DisplayEffectiveness: ; 2fb7b (b:7b7b) - ld a, [$D05B] - and a, $7F - cp a, $0A - ret z - ld hl, SupperEffectiveText - jr nc, .done - ld hl, NotVeryEffectiveText -.done - jp PrintText +FuchsiaCityOmanyteText: ; 19b20 (6:5b20) + TX_FAR _FuchsiaCityOmanyteText + db "@" -SupperEffectiveText: ; 2fb8e (b:7b8e) - TX_FAR _SupperEffectiveText +FuchsiaCityKabutoText: ; 19b25 (6:5b25) + TX_FAR _FuchsiaCityKabutoText db "@" -NotVeryEffectiveText: ; 2fb93 (b:7b93) - TX_FAR _NotVeryEffectiveText +UnnamedText_19b2a: ; 19b2a (6:5b2a) + TX_FAR _UnnamedText_19b2a db "@" -TrainerInfoTextBoxTileGraphics: ; 2fb98 (b:7b98) - INCBIN "gfx/trainer_info.2bpp" +BluesHouse_h: ; 0x19b2f id=39 + db HOUSE ; tileset + db BLUES_HOUSE_HEIGHT, BLUES_HOUSE_WIDTH ; dimensions + dw BluesHouseBlocks, BluesHouseTextPointers, BluesHouseScript + db 0 + dw BluesHouseObject -BlankLeaderNames: ; 2fc28 (b:7c28) - INCBIN "gfx/blank_leader_names.2bpp" +BluesHouseScript: ; 19b3b (6:5b3b) + call EnableAutoTextBoxDrawing + ld hl,BluesHouseScriptPointers + ld a,[W_BLUESHOUSECURSCRIPT] + jp CallFunctionInTable -CircleTile: ; 2fd88 (b:7d88) - INCBIN "gfx/circle_tile.2bpp" +BluesHouseScriptPointers: ; 19b47 (6:5b47) + dw BluesHouseScript0 + dw BluesHouseScript1 -BadgeNumbersTileGraphics: ; 2fd98 (b:7d98) - INCBIN "gfx/badge_numbers.2bpp" +BluesHouseScript0: ; 19b4b (6:5b4b) + ld hl,$D74A + set 1,[hl] -; checks if the mon in wWhichPokemon already knows the move in $d0e0 -CheckIfMoveIsKnown: ; 2fe18 (b:7e18) - ld a, [wWhichPokemon] - ld hl, W_PARTYMON1_MOVE1 - ld bc, $2c - call AddNTimes - ld a, [$d0e0] - ld b, a - ld c, $4 ; nubmer of moves -.loop - ld a, [hli] - cp b - jr z, .alreadyKnown ; found a match - dec c - jr nz, .loop - and a + ; trigger the next script + ld a,1 + ld [W_BLUESHOUSECURSCRIPT],a ret -.alreadyKnown - ld hl, AlreadyKnowsText - call PrintText - scf + +BluesHouseScript1: ; 19b56 (6:5b56) ret -AlreadyKnowsText: ; 2fe3b (b:7e3b) - TX_FAR _AlreadyKnowsText - db "@" +BluesHouseTextPointers: ; 19b57 (6:5b57) + dw BluesHouseText1 + dw BluesHouseText2 + dw BluesHouseText3 -; scales both uncompressed sprite chunks by two in every dimension (creating 2x2 output pixels per input pixel) -; assumes that input sprite chunks are 4x4 tiles, and the rightmost and bottommost 4 pixels will be ignored -; resulting in a 7*7 tile output sprite chunk -ScaleSpriteByTwo: ; 2fe40 (b:7e40) - ld de, S_SPRITEBUFFER1 + (4*4*8) - 5 ; last byte of input data, last 4 rows already skipped - ld hl, S_SPRITEBUFFER0 + SPRITEBUFFERSIZE - 1 ; end of destination buffer - call ScaleLastSpriteColumnByTwo ; last tile column is special case - call ScaleFirstThreeSpriteColumnsByTwo ; scale first 3 tile columns - ld de, S_SPRITEBUFFER2 + (4*4*8) - 5 ; last byte of input data, last 4 rows already skipped - ld hl, S_SPRITEBUFFER1 + SPRITEBUFFERSIZE - 1 ; end of destination buffer - call ScaleLastSpriteColumnByTwo ; last tile column is special case +BluesHouseText1: ; 19b5d (6:5b5d) + db 8 + ld a,[$D74A] + bit 0,a + jr nz,.GotMap + ld a,[$D74B] + bit 5,a + jr nz,.GiveMap + ld hl,DaisyInitialText + call PrintText + jr .done +.GiveMap + ld hl,DaisyOfferMapText + call PrintText + ld bc,(TOWN_MAP << 8) | 1 + call GiveItem + jr nc, .BagFull + ld a,$29 + ld [$CC4D],a + ld a,$11 + call Predef ; hide table map object + ld hl,GotMapText + call PrintText + ld hl,$D74A + set 0,[hl] + jr .done +.GotMap + ld hl,DaisyUseMapText + call PrintText + jr .done +.BagFull + ld hl,DaisyBagFullText + call PrintText +.done + jp TextScriptEnd -ScaleFirstThreeSpriteColumnsByTwo: ; 2fe55 (b:7e55) - ld b, $3 ; 3 tile columns -.columnLoop - ld c, 4*8 - 4 ; $1c, 4 tiles minus 4 unused rows -.columnInnerLoop - push bc - ld a, [de] - ld bc, -(7*8)+1 ; $ffc9, scale lower nybble and seek to previous output column - call ScalePixelsByTwo - ld a, [de] - dec de - swap a - ld bc, 7*8+1-2 ; $37, scale upper nybble and seek back to current output column and to the next 2 rows - call ScalePixelsByTwo - pop bc - dec c - jr nz, .columnInnerLoop - dec de - dec de - dec de - dec de - ld a, b - ld bc, -7*8 ; $ffc8, skip one output column (which has already been written along with the current one) - add hl, bc - ld b, a - dec b - jr nz, .columnLoop - ret +DaisyInitialText: ; 19baa (6:5baa) + TX_FAR _DaisyInitialText + db "@" -ScaleLastSpriteColumnByTwo: ; 2fe7d (b:7e7d) - ld a, 4*8 - 4 ; $1c, 4 tiles minus 4 unused rows - ld [H_SPRITEINTERLACECOUNTER], a ; $ff8b - ld bc, -1 ; $ffff -.columnInnerLoop - ld a, [de] - dec de - swap a ; only high nybble contains information - call ScalePixelsByTwo - ld a, [H_SPRITEINTERLACECOUNTER] ; $ff8b - dec a - ld [H_SPRITEINTERLACECOUNTER], a ; $ff8b - jr nz, .columnInnerLoop - dec de ; skip last 4 rows of new column - dec de - dec de - dec de - ret +DaisyOfferMapText: ; 19baf (6:5baf) + TX_FAR _DaisyOfferMapText + db "@" -; scales the given 4 bits in a (4x1 pixels) to 2 output bytes (8x2 pixels) -; hl: destination pointer -; bc: destination pointer offset (added after the two bytes have been written) -ScalePixelsByTwo: ; 2fe97 (b:7e97) - push hl - and $f - ld hl, DuplicateBitsTable - add l - ld l, a - jr nc, .noCarry - inc h -.noCarry - ld a, [hl] - pop hl - ld [hld], a ; write output byte twice to make it 2 pixels high - ld [hl], a - add hl, bc ; add offset - ret +GotMapText: ; 19bb4 (6:5bb4) + TX_FAR _GotMapText + db $11,"@" -; repeats each input bit twice -DuplicateBitsTable: ; 2fea8 (b:7ea8) - db $00, $03, $0c, $0f - db $30, $33, $3c, $3f - db $c0, $c3, $cc, $cf - db $f0, $f3, $fc, $ff +DaisyBagFullText: ; 19bba (6:5bba) + TX_FAR _DaisyBagFullText + db "@" -_PayDayEffect ; 2feb8 (b:7eb8) - xor a - ld hl, $cd6d - ld [hli], a - ld a, [$fff3] - and a - ld a, [$d022] - jr z, .asm_2fec8 ; 0x2fec3 $3 - ld a, [$cff3] -.asm_2fec8 - add a - ld [$ff98], a - xor a - ld [$ff95], a - ld [$ff96], a - ld [$ff97], a - ld a, $64 - ld [$ff99], a - ld b, $4 - call Divide - ld a, [$ff98] - ld [hli], a - ld a, [$ff99] - ld [$ff98], a - ld a, $a - ld [$ff99], a - ld b, $4 - call Divide - ld a, [$ff98] - swap a - ld b, a - ld a, [$ff99] - add b - ld [hl], a - ld de, $cce7 - ld c, $3 - ld a, $b - call Predef - ld hl, PayDayText - jp PrintText +DaisyUseMapText: ; 19bbf (6:5bbf) + TX_FAR _DaisyUseMapText + db "@" -PayDayText: ; 2ff04 (b:7f04) - TX_FAR _PayDayText +BluesHouseText2: ; 0x19bc4 Daisy, walking around + TX_FAR _BluesHouseText2 db "@" -Func_2ff09 ; 2ff09 (b:7f09) - ld a, [$c102] - and $8 - jr z, .asm_2ff2e - ld b, $45 - ld a, $1c +BluesHouseText3: ; 0x19bc9 map on table + TX_FAR _BluesHouseText3 + db "@" + +BluesHouseObject: ; 19bce (6:5bce) + db $0A ; border tile + + db 2 ; warps + db 7,2,1,$FF + db 7,3,1,$FF + + db 0 ; signs + + db 3 ; people + db $11,4+3,4+2,$FF,$D3,1 ; Daisy, sitting by map + db $11,4+4,4+6,$FE,1,ITEM|2,0 ; map on table + db $41,4+3,4+3,$FF,$FF,ITEM|3,0 ; Daisy, walking around + + ; warp-to + EVENT_DISP BLUES_HOUSE_WIDTH, 7, 2 + EVENT_DISP BLUES_HOUSE_WIDTH, 7, 3 + +BluesHouseBlocks: ; 19bf6 (6:5bf6) + INCBIN "maps/blueshouse.blk" + +VermilionHouse3_h: ; 0x19c06 to 0x19c12 (12 bytes) (bank=6) (id=196) + db HOUSE ; tileset + db VERMILION_HOUSE_3_HEIGHT, VERMILION_HOUSE_3_WIDTH ; dimensions (y, x) + dw VermilionHouse3Blocks, VermilionHouse3TextPointers, VermilionHouse3Script ; blocks, texts, scripts + db $00 ; connections + dw VermilionHouse3Object ; objects + +VermilionHouse3Script: ; 19c12 (6:5c12) + jp EnableAutoTextBoxDrawing + +VermilionHouse3TextPointers: ; 19c15 (6:5c15) + dw VermilionHouse3Text1 + +VermilionHouse3Text1: ; 19c17 (6:5c17) + db $08 ; asm + ld a, $4 + ld [wWhichTrade], a + ld a, $54 call Predef - ld a, b - and a - ld b, $33 - jr z, .asm_2ff26 - ld hl, $d5a4 - ld a, [hli] - or [hl] - jr nz, .asm_2ff2e - ld b, $32 -.asm_2ff26 + jp TextScriptEnd + +VermilionHouse3Object: ; 0x19c25 (size=26) + db $a ; border tile + + db $2 ; warps + db $7, $2, $7, $ff + db $7, $3, $7, $ff + + db $0 ; signs + + db $1 ; people + db SPRITE_LITTLE_GIRL, $5 + 4, $3 + 4, $ff, $d1, $1 ; person + + ; warp-to + EVENT_DISP VERMILION_HOUSE_3_WIDTH, $7, $2 + EVENT_DISP VERMILION_HOUSE_3_WIDTH, $7, $3 + +VermilionHouse3Blocks: ; 19c3f (6:5c3f) + INCBIN "maps/vermilionhouse3.blk" + +IndigoPlateauLobby_h: ; 0x19c4f to 0x19c5b (12 bytes) (bank=6) (id=174) + db MART ; tileset + db INDIGO_PLATEAU_LOBBY_HEIGHT, INDIGO_PLATEAU_LOBBY_WIDTH ; dimensions (y, x) + dw IndigoPlateauLobbyBlocks, IndigoPlateauLobbyTextPointers, IndigoPlateauLobbyScript ; blocks, texts, scripts + db $00 ; connections + dw IndigoPlateauLobbyObject ; objects + +IndigoPlateauLobbyScript: ; 19c5b (6:5c5b) + call Func_22fa call EnableAutoTextBoxDrawing - ld a, b - call Func_3ef5 + ld hl, $d126 + bit 6, [hl] + res 6, [hl] + ret z + ld hl, $d869 + res 7, [hl] + ld hl, $d734 + bit 1, [hl] + res 1, [hl] + ret z + ld hl, $d863 xor a -.asm_2ff2e - ld [$cd3d], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a ret -GameCornerCoinCaseText: ; 2ff32 (b:7f32) - TX_FAR _GameCornerCoinCaseText +IndigoPlateauLobbyTextPointers: ; 19c7f (6:5c7f) + dw IndigoPlateauLobbyText1 + dw IndigoPlateauLobbyText2 + dw IndigoPlateauLobbyText3 + dw IndigoPlateauLobbyText4 + dw IndigoPlateauLobbyText5 + +IndigoPlateauLobbyText1: ; 19c89 (6:5c89) + db $ff + +IndigoPlateauLobbyText2: ; 19c8a (6:5c8a) + TX_FAR _IndigoPlateauLobbyText1 db "@" -GameCornerNoCoinsText: ; 2ff37 (b:7f37) - TX_FAR _GameCornerNoCoinsText +IndigoPlateauLobbyText3: ; 19c8f (6:5c8f) + TX_FAR _IndigoPlateauLobbyText3 db "@" -SECTION "bankC",ROMX,BANK[$C] -DodrioPicFront: ; 30000 (c:4000) - INCBIN "pic/bmon/dodrio.pic" -DodrioPicBack: ; 301a2 (c:41a2) - INCBIN "pic/monback/dodriob.pic" -PrimeapePicFront: ; 30247 (c:4247) - INCBIN "pic/bmon/primeape.pic" -PrimeapePicBack: ; 30408 (c:4408) - INCBIN "pic/monback/primeapeb.pic" -DugtrioPicFront: ; 30480 (c:4480) - INCBIN "pic/bmon/dugtrio.pic" -DugtrioPicBack: ; 3062a (c:462a) - INCBIN "pic/monback/dugtriob.pic" -VenomothPicFront: ; 306a9 (c:46a9) - INCBIN "pic/bmon/venomoth.pic" -VenomothPicBack: ; 30841 (c:4841) - INCBIN "pic/monback/venomothb.pic" -DewgongPicFront: ; 30899 (c:4899) - INCBIN "pic/bmon/dewgong.pic" -DewgongPicBack: ; 309e2 (c:49e2) - INCBIN "pic/monback/dewgongb.pic" -CaterpiePicFront: ; 30a49 (c:4a49) - INCBIN "pic/bmon/caterpie.pic" -CaterpiePicBack: ; 30ae1 (c:4ae1) - INCBIN "pic/monback/caterpieb.pic" -MetapodPicFront: ; 30b3a (c:4b3a) - INCBIN "pic/bmon/metapod.pic" -MetapodPicBack: ; 30bc8 (c:4bc8) - INCBIN "pic/monback/metapodb.pic" -ButterfreePicFront: ; 30c37 (c:4c37) - INCBIN "pic/bmon/butterfree.pic" -ButterfreePicBack: ; 30e0e (c:4e0e) - INCBIN "pic/monback/butterfreeb.pic" -MachampPicFront: ; 30e93 (c:4e93) - INCBIN "pic/bmon/machamp.pic" -MachampPicBack: ; 3108c (c:508c) - INCBIN "pic/monback/machampb.pic" -GolduckPicFront: ; 31108 (c:5108) - INCBIN "pic/bmon/golduck.pic" -GolduckPicBack: ; 312c2 (c:52c2) - INCBIN "pic/monback/golduckb.pic" -HypnoPicFront: ; 3135d (c:535d) - INCBIN "pic/bmon/hypno.pic" -HypnoPicBack: ; 31552 (c:5552) - INCBIN "pic/monback/hypnob.pic" -GolbatPicFront: ; 315e0 (c:55e0) - INCBIN "pic/bmon/golbat.pic" -GolbatPicBack: ; 3180a (c:580a) - INCBIN "pic/monback/golbatb.pic" -MewtwoPicFront: ; 3187f (c:587f) - INCBIN "pic/bmon/mewtwo.pic" -MewtwoPicBack: ; 31a85 (c:5a85) - INCBIN "pic/monback/mewtwob.pic" -SnorlaxPicFront: ; 31b19 (c:5b19) - INCBIN "pic/bmon/snorlax.pic" -SnorlaxPicBack: ; 31ce5 (c:5ce5) - INCBIN "pic/monback/snorlaxb.pic" -MagikarpPicFront: ; 31d31 (c:5d31) - INCBIN "pic/bmon/magikarp.pic" -MagikarpPicBack: ; 31ec3 (c:5ec3) - INCBIN "pic/monback/magikarpb.pic" -MukPicFront: ; 31f56 (c:5f56) - INCBIN "pic/bmon/muk.pic" -MukPicBack: ; 3215f (c:615f) - INCBIN "pic/monback/mukb.pic" -KinglerPicFront: ; 321ec (c:61ec) - INCBIN "pic/bmon/kingler.pic" -KinglerPicBack: ; 323de (c:63de) - INCBIN "pic/monback/kinglerb.pic" -CloysterPicFront: ; 3247f (c:647f) - INCBIN "pic/bmon/cloyster.pic" -CloysterPicBack: ; 326ab (c:66ab) - INCBIN "pic/monback/cloysterb.pic" -ElectrodePicFront: ; 32760 (c:6760) - INCBIN "pic/bmon/electrode.pic" -ElectrodePicBack: ; 32827 (c:6827) - INCBIN "pic/monback/electrodeb.pic" -ClefablePicFront: ; 3288c (c:688c) - INCBIN "pic/bmon/clefable.pic" -ClefablePicBack: ; 329b8 (c:69b8) - INCBIN "pic/monback/clefableb.pic" -WeezingPicFront: ; 32a44 (c:6a44) - INCBIN "pic/bmon/weezing.pic" -WeezingPicBack: ; 32c76 (c:6c76) - INCBIN "pic/monback/weezingb.pic" -PersianPicFront: ; 32d1e (c:6d1e) - INCBIN "pic/bmon/persian.pic" -PersianPicBack: ; 32f04 (c:6f04) - INCBIN "pic/monback/persianb.pic" -MarowakPicFront: ; 32f8f (c:6f8f) - INCBIN "pic/bmon/marowak.pic" -MarowakPicBack: ; 33101 (c:7101) - INCBIN "pic/monback/marowakb.pic" -HaunterPicFront: ; 3318a (c:718a) - INCBIN "pic/bmon/haunter.pic" -HaunterPicBack: ; 33345 (c:7345) - INCBIN "pic/monback/haunterb.pic" -AbraPicFront: ; 333cc (c:73cc) - INCBIN "pic/bmon/abra.pic" -AbraPicBack: ; 334cf (c:74cf) - INCBIN "pic/monback/abrab.pic" -AlakazamPicFront: ; 3355a (c:755a) - INCBIN "pic/bmon/alakazam.pic" -AlakazamPicBack: ; 33779 (c:7779) - INCBIN "pic/monback/alakazamb.pic" -PidgeottoPicFront: ; 3380a (c:780a) - INCBIN "pic/bmon/pidgeotto.pic" -PidgeottoPicBack: ; 3395b (c:795b) - INCBIN "pic/monback/pidgeottob.pic" -PidgeotPicFront: ; 339c2 (c:79c2) - INCBIN "pic/bmon/pidgeot.pic" -PidgeotPicBack: ; 33b79 (c:7b79) - INCBIN "pic/monback/pidgeotb.pic" -StarmiePicFront: ; 33c1c (c:7c1c) - INCBIN "pic/bmon/starmie.pic" -StarmiePicBack: ; 33dac (c:7dac) - INCBIN "pic/monback/starmieb.pic" -RedPicBack: ; 33e0a (c:7e0a) - INCBIN "pic/trainer/redb.pic" -OldManPic: ; 33e9a (c:7e9a) - INCBIN "pic/trainer/oldman.pic" +IndigoPlateauLobbyText5: ; 19c94 (6:5c94) + db $f6 -_MistEffect: ; 33f2b (c:7f2b) - ld hl, $d063 - ld a, [$fff3] - and a - jr z, .asm_33f36 - ld hl, $d068 -.asm_33f36 - bit 1, [hl] - jr nz, .asm_33f4a - set 1, [hl] - ld hl, Func_3fba8 - ld b, BANK(Func_3fba8) - call Bankswitch - ld hl, MistText - jp PrintText -.asm_33f4a - ld hl, PrintItFailedText - ld b, BANK(PrintItFailedText) - jp Bankswitch +IndigoPlateauLobbyObject: ; 0x19c95 (size=58) + db $0 ; border tile -MistText: ; 33f52 (c:7f52) - TX_FAR _MistText - db "@" + db $3 ; warps + db $b, $7, $0, $ff + db $b, $8, $1, $ff + db $0, $8, $0, LORELEIS_ROOM -Func_33f57: ; 33f57 (c:7f57) - ld hl, W_DAMAGE ; $d0d7 - xor a - ld [hli], a - ld [hl], a - dec a - ld [$d05e], a - ld hl, $d02a - ld de, $cffb - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_33f72 - ld hl, $cffb - ld de, $d02a -.asm_33f72 - ld a, [de] - dec de - ld b, a - ld a, [hld] - sub b - ld a, [de] + db $0 ; signs + + db $5 ; people + db SPRITE_NURSE, $5 + 4, $7 + 4, $ff, $d0, $1 ; person + db SPRITE_GYM_HELPER, $9 + 4, $4 + 4, $ff, $d3, $2 ; person + db SPRITE_LASS, $1 + 4, $5 + 4, $ff, $d0, $3 ; person + db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $4 ; person + db SPRITE_CABLE_CLUB_WOMAN, $6 + 4, $d + 4, $ff, $d0, $5 ; person + + ; warp-to + EVENT_DISP INDIGO_PLATEAU_LOBBY_WIDTH, $b, $7 + EVENT_DISP INDIGO_PLATEAU_LOBBY_WIDTH, $b, $8 + EVENT_DISP INDIGO_PLATEAU_LOBBY_WIDTH, $0, $8 ; LORELEIS_ROOM + +IndigoPlateauLobbyBlocks: ; 19ccf (6:5ccf) + INCBIN "maps/indigoplateaulobby.blk" + +SilphCo4_h: ; 0x19cff to 0x19d0b (12 bytes) (bank=6) (id=209) + db FACILITY ; tileset + db SILPH_CO_4F_HEIGHT, SILPH_CO_4F_WIDTH ; dimensions (y, x) + dw SilphCo4Blocks, SilphCo4TextPointers, SilphCo4Script ; blocks, texts, scripts + db $00 ; connections + dw SilphCo4Object ; objects + +SilphCo4Script: ; 19d0b (6:5d0b) + call SilphCo4Script_19d21 + call EnableAutoTextBoxDrawing + ld hl, SilphCo4TrainerHeaders + ld de, SilphCo4ScriptPointers + ld a, [W_SILPHCO4CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_SILPHCO4CURSCRIPT], a + ret + +SilphCo4Script_19d21: ; 19d21 (6:5d21) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld hl, SilphCo4Data19d58 + call SilphCo4Script_19d5d + call SilphCo4Script_19d89 + ld a, [$d82a] + bit 0, a + jr nz, .asm_19d48 + push af + ld a, $54 + ld [$d09f], a + ld bc, $0602 + ld a, $17 + call Predef + pop af +.asm_19d48 + bit 1, a + ret nz + ld a, $54 + ld [$d09f], a + ld bc, $0406 + ld a, $17 + jp Predef + +SilphCo4Data19d58: ; 19d58 (6:5d58) + db $06, $02, $04, $06, $ff + +SilphCo4Script_19d5d: ; 19d5d (6:5d5d) + push hl + ld hl, $d73f + ld a, [hli] ld b, a ld a, [hl] - sbc b - jr c, .asm_33f8a - ld hl, W_DAMAGE ; $d0d7 - ld a, $ff + ld c, a + xor a + ld [$ffe0], a + pop hl +.asm_19d69 + ld a, [hli] + cp $ff + jr z, .asm_19d85 ; 0x19d6c $17 + push hl + ld hl, $ffe0 + inc [hl] + pop hl + cp b + jr z, .asm_19d7a ; 0x19d75 $3 + inc hl + jr .asm_19d69 ; 0x19d78 $ef +.asm_19d7a + ld a, [hli] + cp c + jr nz, .asm_19d69 ; 0x19d7c $eb + ld hl, $d73f + xor a ld [hli], a ld [hl], a - ld a, $2 - ld [$d05e], a ret -.asm_33f8a - ld a, $1 - ld [W_MOVEMISSED], a ; $d05f +.asm_19d85 + xor a + ld [$ffe0], a ret -SECTION "bankD",ROMX,BANK[$D] -BulbasaurPicFront: ; 34000 (d:4000) - INCBIN "pic/bmon/bulbasaur.pic" -BulbasaurPicBack: ; 340e5 (d:40e5) - INCBIN "pic/monback/bulbasaurb.pic" -VenusaurPicFront: ; 34162 (d:4162) - INCBIN "pic/bmon/venusaur.pic" -VenusaurPicBack: ; 34397 (d:4397) - INCBIN "pic/monback/venusaurb.pic" -TentacruelPicFront: ; 34455 (d:4455) - INCBIN "pic/bmon/tentacruel.pic" -TentacruelPicBack: ; 345c3 (d:45c3) - INCBIN "pic/monback/tentacruelb.pic" -GoldeenPicFront: ; 3466f (d:466f) - INCBIN "pic/bmon/goldeen.pic" -GoldeenPicBack: ; 34796 (d:4796) - INCBIN "pic/monback/goldeenb.pic" -SeakingPicFront: ; 34803 (d:4803) - INCBIN "pic/bmon/seaking.pic" -SeakingPicBack: ; 34a03 (d:4a03) - INCBIN "pic/monback/seakingb.pic" -PonytaPicFront: ; 34ab1 (d:4ab1) - INCBIN "pic/bmon/ponyta.pic" -RapidashPicFront: ; 34c10 (d:4c10) - INCBIN "pic/bmon/rapidash.pic" -PonytaPicBack: ; 34e32 (d:4e32) - INCBIN "pic/monback/ponytab.pic" -RapidashPicBack: ; 34eba (d:4eba) - INCBIN "pic/monback/rapidashb.pic" -RattataPicFront: ; 34f6a (d:4f6a) - INCBIN "pic/bmon/rattata.pic" -RattataPicBack: ; 35041 (d:5041) - INCBIN "pic/monback/rattatab.pic" -RaticatePicFront: ; 3507a (d:507a) - INCBIN "pic/bmon/raticate.pic" -RaticatePicBack: ; 3520d (d:520d) - INCBIN "pic/monback/raticateb.pic" -NidorinoPicFront: ; 35282 (d:5282) - INCBIN "pic/bmon/nidorino.pic" -NidorinoPicBack: ; 353f0 (d:53f0) - INCBIN "pic/monback/nidorinob.pic" -NidorinaPicFront: ; 3548b (d:548b) - INCBIN "pic/bmon/nidorina.pic" -NidorinaPicBack: ; 355c8 (d:55c8) - INCBIN "pic/monback/nidorinab.pic" -GeodudePicFront: ; 3564f (d:564f) - INCBIN "pic/bmon/geodude.pic" -GeodudePicBack: ; 35729 (d:5729) - INCBIN "pic/monback/geodudeb.pic" -PorygonPicFront: ; 35784 (d:5784) - INCBIN "pic/bmon/porygon.pic" -PorygonPicBack: ; 358d1 (d:58d1) - INCBIN "pic/monback/porygonb.pic" -AerodactylPicFront: ; 35931 (d:5931) - INCBIN "pic/bmon/aerodactyl.pic" -AerodactylPicBack: ; 35aec (d:5aec) - INCBIN "pic/monback/aerodactylb.pic" -MagnemitePicFront: ; 35b87 (d:5b87) - INCBIN "pic/bmon/magnemite.pic" -MagnemitePicBack: ; 35c0d (d:5c0d) - INCBIN "pic/monback/magnemiteb.pic" -CharmanderPicFront: ; 35c5c (d:5c5c) - INCBIN "pic/bmon/charmander.pic" -CharmanderPicBack: ; 35d5c (d:5d5c) - INCBIN "pic/monback/charmanderb.pic" -SquirtlePicFront: ; 35db8 (d:5db8) - INCBIN "pic/bmon/squirtle.pic" -SquirtlePicBack: ; 35e8f (d:5e8f) - INCBIN "pic/monback/squirtleb.pic" -CharmeleonPicFront: ; 35f0c (d:5f0c) - INCBIN "pic/bmon/charmeleon.pic" -CharmeleonPicBack: ; 36048 (d:6048) - INCBIN "pic/monback/charmeleonb.pic" -WartortlePicFront: ; 360b1 (d:60b1) - INCBIN "pic/bmon/wartortle.pic" -WartortlePicBack: ; 361f1 (d:61f1) - INCBIN "pic/monback/wartortleb.pic" -CharizardPicFront: ; 36286 (d:6286) - INCBIN "pic/bmon/charizard.pic" -CharizardPicBack: ; 36495 (d:6495) - INCBIN "pic/monback/charizardb.pic" -FossilAerodactylPic: ; 36536 (d:6536) - INCBIN "pic/bmon/fossilaerodactyl.pic" -GhostPic: ; 366b5 (d:66b5) - INCBIN "pic/other/ghost.pic" -OddishPicFront: ; 3680b (d:680b) - INCBIN "pic/bmon/oddish.pic" -OddishPicBack: ; 368a9 (d:68a9) - INCBIN "pic/monback/oddishb.pic" -GloomPicFront: ; 36941 (d:6941) - INCBIN "pic/bmon/gloom.pic" -GloomPicBack: ; 36a78 (d:6a78) - INCBIN "pic/monback/gloomb.pic" -VileplumePicFront: ; 36b21 (d:6b21) - INCBIN "pic/bmon/vileplume.pic" -VileplumePicBack: ; 36c82 (d:6c82) - INCBIN "pic/monback/vileplumeb.pic" -BellsproutPicFront: ; 36d00 (d:6d00) - INCBIN "pic/bmon/bellsprout.pic" -BellsproutPicBack: ; 36dba (d:6dba) - INCBIN "pic/monback/bellsproutb.pic" -WeepinbellPicFront: ; 36e30 (d:6e30) - INCBIN "pic/bmon/weepinbell.pic" -WeepinbellPicBack: ; 36f6f (d:6f6f) - INCBIN "pic/monback/weepinbellb.pic" -VictreebelPicFront: ; 36fea (d:6fea) - INCBIN "pic/bmon/victreebel.pic" -VictreebelPicBack: ; 371b2 (d:71b2) - INCBIN "pic/monback/victreebelb.pic" +SilphCo4Script_19d89: ; 19d89 (6:5d89) + ld hl, $d82a + ld a, [$ffe0] + and a + ret z + cp $1 + jr nz, .asm_19d97 ; 0x19d92 $3 + set 0, [hl] + ret +.asm_19d97 + set 1, [hl] + ret +SilphCo4ScriptPointers: ; 19d9a (6:5d9a) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle -TitleScroll_WaitBall: ; 37244 (d:7244) -; Wait around for the TitleBall animation to play out. -; hi: speed -; lo: duration - db $05, $05, 0 +SilphCo4TextPointers: ; 19da0 (6:5da0) + dw SilphCo4Text1 + dw SilphCo4Text2 + dw SilphCo4Text3 + dw SilphCo4Text4 + dw Predef5CText + dw Predef5CText + dw Predef5CText -TitleScroll_In: ; 37247 (d:7247) -; Scroll a TitleMon in from the right. -; hi: speed -; lo: duration - db $a2, $94, $84, $63, $52, $31, $11, 0 +SilphCo4TrainerHeaders: ; 19dae (6:5dae) +SilphCo4TrainerHeader0: ; 19dae (6:5dae) + db $2 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d829 ; flag's byte + dw SilphCo4BattleText2 ; 0x5df4 TextBeforeBattle + dw SilphCo4AfterBattleText2 ; 0x5dfe TextAfterBattle + dw SilphCo4EndBattleText2 ; 0x5df9 TextEndBattle + dw SilphCo4EndBattleText2 ; 0x5df9 TextEndBattle -TitleScroll_Out: ; 3724f (d:724f) -; Scroll a TitleMon out to the left. -; hi: speed -; lo: duration - db $12, $22, $32, $42, $52, $62, $83, $93, 0 +SilphCo4TrainerHeader2: ; 19dba (6:5dba) + db $3 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d829 ; flag's byte + dw SilphCo4BattleText3 ; 0x5e0d TextBeforeBattle + dw SilphCo4AfterBattleText3 ; 0x5e17 TextAfterBattle + dw SilphCo4EndBattleText3 ; 0x5e12 TextEndBattle + dw SilphCo4EndBattleText3 ; 0x5e12 TextEndBattle + +SilphCo4TrainerHeader3: ; 19dc6 (6:5dc6) + db $4 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d829 ; flag's byte + dw SilphCo4BattleText4 ; 0x5e26 TextBeforeBattle + dw SilphCo4AfterBattleText4 ; 0x5e30 TextAfterBattle + dw SilphCo4EndBattleText4 ; 0x5e2b TextEndBattle + dw SilphCo4EndBattleText4 ; 0x5e2b TextEndBattle + + db $ff + +SilphCo4Text1: ; 19dd3 (6:5dd3) + db $08 ; asm + ld hl, UnnamedText_19de0 + ld de, UnnamedText_19de5 + call SilphCo6Script_1a22f + jp TextScriptEnd + +UnnamedText_19de0: ; 19de0 (6:5de0) + TX_FAR _UnnamedText_19de0 + db "@" + +UnnamedText_19de5: ; 19de5 (6:5de5) + TX_FAR _UnnamedText_19de5 + db "@" + +SilphCo4Text2: ; 19dea (6:5dea) + db $08 ; asm + ld hl, SilphCo4TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +SilphCo4BattleText2: ; 19df4 (6:5df4) + TX_FAR _SilphCo4BattleText2 + db "@" -TitleScroll: ; 37258 (d:7258) - ld a, d +SilphCo4EndBattleText2: ; 19df9 (6:5df9) + TX_FAR _SilphCo4EndBattleText2 + db "@" - ld bc, TitleScroll_In - ld d, $88 - ld e, 0 ; don't animate titleball +SilphCo4AfterBattleText2: ; 19dfe (6:5dfe) + TX_FAR _SilphCo4AfterBattleText2 + db "@" - and a - jr nz, .ok +SilphCo4Text3: ; 19e03 (6:5e03) + db $08 ; asm + ld hl, SilphCo4TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd - ld bc, TitleScroll_Out - ld d, $00 - ld e, 0 ; don't animate titleball -.ok +SilphCo4BattleText3: ; 19e0d (6:5e0d) + TX_FAR _SilphCo4BattleText3 + db "@" -_TitleScroll: ; 3726a (d:726a) - ld a, [bc] - and a - ret z +SilphCo4EndBattleText3: ; 19e12 (6:5e12) + TX_FAR _SilphCo4EndBattleText3 + db "@" - inc bc - push bc +SilphCo4AfterBattleText3: ; 19e17 (6:5e17) + TX_FAR _SilphCo4AfterBattleText3 + db "@" - ld b, a - and $f - ld c, a - ld a, b - and $f0 - swap a - ld b, a +SilphCo4Text4: ; 19e1c (6:5e1c) + db $08 ; asm + ld hl, SilphCo4TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd -.loop - ld h, d - ld l, $48 - call .ScrollBetween +SilphCo4BattleText4: ; 19e26 (6:5e26) + TX_FAR _SilphCo4BattleText4 + db "@" - ld h, $00 - ld l, $88 - call .ScrollBetween +SilphCo4EndBattleText4: ; 19e2b (6:5e2b) + TX_FAR _SilphCo4EndBattleText4 + db "@" - ld a, d - add b - ld d, a +SilphCo4AfterBattleText4: ; 19e30 (6:5e30) + TX_FAR _SilphCo4AfterBattleText4 + db "@" - call GetTitleBallY - dec c - jr nz, .loop +SilphCo4Object: ; 0x19e35 (size=111) + db $2e ; border tile - pop bc - jr _TitleScroll + db $7 ; warps + db $0, $18, $1, SILPH_CO_3F + db $0, $1a, $1, SILPH_CO_5F + db $0, $14, $0, SILPH_CO_ELEVATOR + db $7, $b, $3, SILPH_CO_10F + db $3, $11, $3, SILPH_CO_6F + db $f, $3, $4, SILPH_CO_10F + db $b, $11, $5, SILPH_CO_10F -.ScrollBetween ; 37292 (d:7292) -.wait - ld a, [$ff44] ; rLY - cp l - jr nz, .wait + db $0 ; signs - ld a, h - ld [rSCX], a ; $ff43 + db $7 ; people + db SPRITE_LAPRAS_GIVER, $2 + 4, $6 + 4, $ff, $ff, $1 ; person + db SPRITE_ROCKET, $e + 4, $9 + 4, $ff, $d3, $42, ROCKET + $C8, $1a ; trainer + db SPRITE_OAK_AIDE, $6 + 4, $e + 4, $ff, $d2, $43, SCIENTIST + $C8, $5 ; trainer + db SPRITE_ROCKET, $a + 4, $1a + 4, $ff, $d1, $44, ROCKET + $C8, $1b ; trainer + db SPRITE_BALL, $9 + 4, $3 + 4, $ff, $ff, $85, FULL_HEAL ; item + db SPRITE_BALL, $7 + 4, $4 + 4, $ff, $ff, $86, MAX_REVIVE ; item + db SPRITE_BALL, $8 + 4, $5 + 4, $ff, $ff, $87, ESCAPE_ROPE ; item -.wait2 - ld a, [$ff44] ; rLY - cp h - jr z, .wait2 - ret + ; warp-to + EVENT_DISP SILPH_CO_4F_WIDTH, $0, $18 ; SILPH_CO_3F + EVENT_DISP SILPH_CO_4F_WIDTH, $0, $1a ; SILPH_CO_5F + EVENT_DISP SILPH_CO_4F_WIDTH, $0, $14 ; SILPH_CO_ELEVATOR + EVENT_DISP SILPH_CO_4F_WIDTH, $7, $b ; SILPH_CO_10F + EVENT_DISP SILPH_CO_4F_WIDTH, $3, $11 ; SILPH_CO_6F + EVENT_DISP SILPH_CO_4F_WIDTH, $f, $3 ; SILPH_CO_10F + EVENT_DISP SILPH_CO_4F_WIDTH, $b, $11 ; SILPH_CO_10F -TitleBallYTable: ; 372a0 (d:72a0) -; OBJ y-positions for the Poke Ball held by Red in the title screen. -; This is really two 0-terminated lists. Initiated with an index of 1. - db 0, $71, $6f, $6e, $6d, $6c, $6d, $6e, $6f, $71, $74, 0 +SilphCo4Blocks: ; 19ea4 (6:5ea4) + INCBIN "maps/silphco4.blk" -Func_372ac: ; 372ac (d:72ac) -; Animate the TitleBall if a starter just got scrolled out. - ld a, [wWhichTrade] ; $cd3d - cp CHARMANDER - jr z, .ok - cp SQUIRTLE - jr z, .ok - cp BULBASAUR - ret nz -.ok - ld e, 1 ; animate titleball - ld bc, TitleScroll_WaitBall - ld d, 0 - jp _TitleScroll +SilphCo5_h: ; 0x19f2b to 0x19f37 (12 bytes) (bank=6) (id=210) + db FACILITY ; tileset + db SILPH_CO_5F_HEIGHT, SILPH_CO_5F_WIDTH ; dimensions (y, x) + dw SilphCo5Blocks, SilphCo5TextPointers, SilphCo5Script ; blocks, texts, scripts + db $00 ; connections + dw SilphCo5Object ; objects -GetTitleBallY: ; 372c4 (d:72c4) -; Get position e from TitleBallYTable - push de - push hl - xor a - ld d, a - ld hl, TitleBallYTable - add hl, de - ld a, [hl] - pop hl - pop de - and a - ret z - ld [$c328], a - inc e +SilphCo5Script: ; 19f37 (6:5f37) + call SilphCo5Script_19f4d + call EnableAutoTextBoxDrawing + ld hl, SilphCo5TrainerHeaders + ld de, SilphCo5ScriptPointers + ld a, [W_SILPHCO5CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_SILPHCO5CURSCRIPT], a ret -Func_372d6: ; 372d6 (d:72d6) - call LoadTextBoxTilePatterns - FuncCoord 3, 4 ; $c3f3 - ld hl, Coord - ld b, $7 - ld c, $c - call TextBoxBorder - FuncCoord 4, 5 ; $c408 - ld hl, Coord - ld de, W_PLAYERNAME ; $d158 - call PlaceString - FuncCoord 4, 10 ; $c46c - ld hl, Coord - ld de, W_GRASSRATE ; $d887 - call PlaceString - FuncCoord 9, 8 ; $c449 - ld hl, Coord - ld a, $69 - ld [hli], a - ld [hl], $6a - xor a - ld [$cfcb], a - ld hl, Func_3a948 - ld b, BANK(Func_3a948) - call Bankswitch - ld c, $96 - jp DelayFrames - -Func_3730e: ; 3730e (d:730e) - call SaveScreenTilesToBuffer2 - ld a, BANK(DisplayTextIDInit) - ld [$cf0c], a - ld b, a - ld hl, DisplayTextIDInit - call Bankswitch - ld hl, PlaySlotMachineText - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jr nz, .skip - dec a - ld [$cfcb], a - ld hl, $cd4f - xor a - ld [hli], a - ld [hl], $2 - ld a, $4c +SilphCo5Script_19f4d: ; 19f4d (6:5f4d) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld hl, SilphCo5Coords + call SilphCo4Script_19d5d + call SilphCo5Script_19f9e + ld a, [$d82c] + bit 0, a + jr nz, .asm_19f74 ; 0x19f63 $f + push af + ld a, $5f + ld [$d09f], a + ld bc, $0203 + ld a, $17 call Predef - call GBPalWhiteOutWithDelay3 - call LoadSlotMachineTiles - call LoadFontTilePatterns - ld b, $5 - call GoPAL_SET - call GBPalNormal - ld a, $e4 - ld [$ff48], a - ld hl, $d730 - set 6, [hl] - xor a - ld [W_SUBANIMSUBENTRYADDR], a - ld hl, wTrainerSpriteOffset - ld bc, $0014 - call FillMemory - call Func_37395 - ld hl, $d730 - res 6, [hl] - xor a - ld [W_SUBANIMSUBENTRYADDR], a - call GBPalWhiteOutWithDelay3 - ld a, $1 - ld [$cfcb], a - call GoPAL_SET_CF1C - call Func_3e08 - call ReloadTilesetTilePatterns -.skip - call LoadScreenTilesFromBuffer2 - call Delay3 - call GBPalNormal - ld a, [$cc5e] + pop af +.asm_19f74 + bit 1, a + jr nz, .asm_19f87 ; 0x19f76 $f push af - jp CloseTextDisplay + ld a, $5f + ld [$d09f], a + ld bc, $0603 + ld a, $17 + call Predef + pop af +.asm_19f87 + bit 2, a + ret nz + ld a, $5f + ld [$d09f], a + ld bc, $0507 + ld a, $17 + jp Predef -PlaySlotMachineText: ; 37390 (d:7390) - TX_FAR _PlaySlotMachineText - db "@" +SilphCo5Coords: ; 19f97 (6:5f97) ; coords? + db $02, $03, $06, $03, $05, $07, $ff -Func_37395: ; 37395 (d:7395) - call Func_37754 - xor a - ld hl, $cd4a - ld [hli], a - ld [hl], a - call Func_3775f - ld hl, BetHowManySlotMachineText - call PrintText - call SaveScreenTilesToBuffer1 -.loop - ld a, $3 - ld [wMenuWatchedKeys], a - ld a, $2 - ld [wMaxMenuItem], a - ld a, $c - ld [wTopMenuItemY], a - ld a, $f - ld [wTopMenuItemX], a - xor a - ld [wCurrentMenuItem], a - ld [wLastMenuItem], a - ld [$cc37], a - ld hl, $c48a - ld b, $5 - ld c, $4 - call TextBoxBorder - ld hl, $c4a0 - ld de, CoinMultiplierSlotMachineText - call PlaceString - call HandleMenuInput - and $2 - jp nz, LoadScreenTilesFromBuffer1 - ld a, [wCurrentMenuItem] - ld b, a - ld a, $3 - sub b - ld [$cd50], a - ld hl, wPlayerCoins - ld c, a - ld a, [hli] - and a - jr nz, .skip1 - ld a, [hl] - cp c - jr nc, .skip1 - ld hl, NotEnoughCoinsSlotMachineText - call PrintText - jr .loop -.skip1 - call LoadScreenTilesFromBuffer1 - call Func_37741 - call Func_377d5 - call Func_37480 - ld a, $4 - ld hl, $cd4d - ld [hli], a - ld [hli], a - ld [hl], a - call WaitForSoundToFinish - ld a, (SFX_1f_66 - SFX_Headers_1f) / 3 - call PlaySound - ld hl, StartSlotMachineText - call PrintText - call Func_374ad - call Func_37588 - ld hl, wPlayerCoins - ld a, [hli] - or [hl] - jr nz, .skip2 - ld hl, OutOfCoinsSlotMachineText - call PrintText - ld c, $3c - jp DelayFrames -.skip2 - ld hl, OneMoreGoSlotMachineText - call PrintText - ld hl, $c49e - ld bc, $0d0f - xor a - ld [$d12c], a - ld a, $14 - ld [$d125], a - call DisplayTextBoxID - ld a, [wCurrentMenuItem] +SilphCo5Script_19f9e: ; 19f9e (6:5f9e) + ld hl, $d82c + ld a, [$ffe0] and a - ret nz - call Func_377ce - jp Func_37395 + ret z + cp $1 + jr nz, .asm_19fac ; 0x19fa7 $3 + set 0, [hl] + ret +.asm_19fac + cp $2 + jr nz, .asm_19fb3 ; 0x19fae $3 + set 1, [hl] + ret +.asm_19fb3 + set 2, [hl] + ret -CoinMultiplierSlotMachineText: ; 3745e (d:745e) - db "×3" - next "×2" - next "×1@" +SilphCo5ScriptPointers: ; 19fb6 (6:5fb6) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle -OutOfCoinsSlotMachineText: ; 37467 (d:7467) - TX_FAR _OutOfCoinsSlotMachineText - db "@" +SilphCo5TextPointers: ; 19fbc (6:5fbc) + dw SilphCo5Text1 + dw SilphCo5Text2 + dw SilphCo5Text3 + dw SilphCo5Text4 + dw SilphCo5Text5 + dw Predef5CText + dw Predef5CText + dw Predef5CText + dw SilphCo5Text9 + dw SilphCo5Text10 + dw SilphCo5Text11 -BetHowManySlotMachineText: ; 3746c (d:746c) - TX_FAR _BetHowManySlotMachineText - db "@" +SilphCo5TrainerHeaders: ; 19fd2 (6:5fd2) +Silphco5TrainerHeader0: ; 19fd2 (6:5fd2) + db $2 ; flag's bit + db ($1 << 4) ; trainer's view range + dw $d82b ; flag's byte + dw SilphCo5BattleText2 ; 0x6024 TextBeforeBattle + dw SilphCo5AfterBattleText2 ; 0x602e TextAfterBattle + dw SilphCo5EndBattleText2 ; 0x6029 TextEndBattle + dw SilphCo5EndBattleText2 ; 0x6029 TextEndBattle -StartSlotMachineText: ; 37471 (d:7471) - TX_FAR _StartSlotMachineText - db "@" +Silphco5TrainerHeader2: ; 19fde (6:5fde) + db $3 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d82b ; flag's byte + dw SilphCo5BattleText3 ; 0x603d TextBeforeBattle + dw SilphCo5AfterBattleText3 ; 0x6047 TextAfterBattle + dw SilphCo5EndBattleText3 ; 0x6042 TextEndBattle + dw SilphCo5EndBattleText3 ; 0x6042 TextEndBattle -NotEnoughCoinsSlotMachineText: ; 37476 (d:7476) - TX_FAR _NotEnoughCoinsSlotMachineText - db "@" +Silphco5TrainerHeader3: ; 19fea (6:5fea) + db $4 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d82b ; flag's byte + dw SilphCo5BattleText4 ; 0x6056 TextBeforeBattle + dw SilphCo5AfterBattleText4 ; 0x6060 TextAfterBattle + dw SilphCo5EndBattleText4 ; 0x605b TextEndBattle + dw SilphCo5EndBattleText4 ; 0x605b TextEndBattle -OneMoreGoSlotMachineText: ; 3747b (d:747b) - TX_FAR _OneMoreGoSlotMachineText - db "@" +Silphco5TrainerHeader4: ; 19ff6 (6:5ff6) + db $5 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d82b ; flag's byte + dw SilphCo5BattleText5 ; 0x606f TextBeforeBattle + dw SilphCo5AfterBattleText5 ; 0x6079 TextAfterBattle + dw SilphCo5EndBattleText5 ; 0x6074 TextEndBattle + dw SilphCo5EndBattleText5 ; 0x6074 TextEndBattle -Func_37480: ; 37480 (d:7480) - ld hl, $cd4c - bit 7, [hl] - ret nz - ld a, [W_SUBANIMSUBENTRYADDR] - and a - jr nz, .skip1 - call GenRandom - and a - jr z, .skip2 - ld b, a - ld a, [$cc5b] - cp b - jr c, .skip3 - ld a, $d2 - cp b - jr c, .skip1 - ld [hl], $0 - ret -.skip1 - set 6, [hl] - ret -.skip2 - ld a, $3c - ld [W_SUBANIMSUBENTRYADDR], a - ret -.skip3 - set 7, [hl] - ret + db $ff -Func_374ad: ; 374ad (d:74ad) - ld c, $14 -.loop1 - push bc - call Func_37813 - call Func_37823 - call Func_37833 - ld c, $2 - call DelayFrames - pop bc - dec c - jr nz, .loop1 - xor a - ld [wTrainerSpriteOffset], a -.loop2 - call Func_37882 - call Func_374df - call Func_374fb - call Func_37517 - ret c - ld a, [$cf1b] - xor $1 - inc a - ld c, a - call DelayFrames - jr .loop2 +SilphCo5Text1: ; 1a003 (6:6003) + db $08 ; asm + ld hl, UnnamedText_1a010 + ld de, UnnamedText_1a015 + call SilphCo6Script_1a22f + jp TextScriptEnd -Func_374df: ; 374df (d:74df) - ld a, [wTrainerSpriteOffset] - cp $1 - jr c, .skip - ld de, wTrainerEngageDistance - ld a, [de] - rra - jr nc, .skip - ld hl, $cd4d - ld a, [hl] - and a - ret z - dec [hl] - call Func_3752c - ret nz -.skip - jp Func_37813 +UnnamedText_1a010: ; 1a010 (6:6010) + TX_FAR _UnnamedText_1a010 + db "@" -Func_374fb: ; 374fb (d:74fb) - ld a, [wTrainerSpriteOffset] - cp $2 - jr c, .skip - ld de, wTrainerFacingDirection - ld a, [de] - rra - jr nc, .skip - ld hl, $cd4e - ld a, [hl] - and a - ret z - dec [hl] - call Func_37552 - ret z -.skip - jp Func_37823 +UnnamedText_1a015: ; 1a015 (6:6015) + TX_FAR _UnnamedText_1a015 + db "@" -Func_37517: ; 37517 (d:7517) - ld a, [wTrainerSpriteOffset] - cp $3 - jr c, .skip - ld de, wTrainerScreenY - ld a, [de] - rra - jr nc, .skip - scf - ret -.skip - call Func_37833 - and a - ret +SilphCo5Text2: ; 1a01a (6:601a) + db $08 ; asm + ld hl, Silphco5TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd -Func_3752c: ; 3752c (d:752c) - call Func_376c0 - ld hl, wTrainerScreenX - ld a, [$cd4c] - and $80 - jr nz, .skip1 - inc hl - ld a, [hl] - cp $a - jr nz, .skip2 - ret -.skip1 - ld c, $3 -.loop - ld a, [hli] - cp $2 - jr c, .skip2 - dec c - jr nz, .loop - ret -.skip2 - inc a - ld hl, $cd4d - ld [hl], $0 - ret +SilphCo5BattleText2: ; 1a024 (6:6024) + TX_FAR _SilphCo5BattleText2 + db "@" -Func_37552: ; 37552 (d:7552) - call Func_376b4 - ld a, [$cd4c] - and $80 - jr nz, .skip1 - call Func_3756e - ret nz - jr .skip2 -.skip1 - call Func_3756e - ld a, [de] - cp $7 - ret nc -.skip2 - xor a - ld [$cd4e], a - ret +SilphCo5EndBattleText2: ; 1a029 (6:6029) + TX_FAR _SilphCo5EndBattleText2 + db "@" -Func_3756e: ; 3756e (d:756e) - ld hl, wTrainerScreenX - ld de, $cd44 - ld a, [de] - cp [hl] - ret z - inc de - ld a, [de] - cp [hl] - ret z - inc hl - cp [hl] - ret z - inc hl - cp [hl] - ret z - inc de - ld a, [de] - cp [hl] - ret z - dec de - dec de - ret +SilphCo5AfterBattleText2: ; 1a02e (6:602e) + TX_FAR _SilphCo5AfterBattleText2 + db "@" -Func_37588: ; 37588 (d:7588) - call Func_376a8 - ld a, [$cd50] - cp $2 - jr z, .skip1 - cp $1 - jr z, .skip2 - ld hl, wTrainerScreenX - ld de, $cd45 - ld bc, $cd49 - call Func_376a2 - jp z, .skip5 - ld hl, $cd43 - ld de, $cd45 - ld bc, $cd47 - call Func_376a2 - jr z, .skip5 -.skip1 - ld hl, $cd43 - ld de, $cd46 - ld bc, $cd49 - call Func_376a2 - jr z, .skip5 - ld hl, wTrainerScreenX - ld de, $cd44 - ld bc, $cd47 - call Func_376a2 - jr z, .skip5 -.skip2 - ld hl, $cd42 - ld de, $cd45 - ld bc, $cd48 - call Func_376a2 - jr z, .skip5 - ld a, [$cd4c] - and $c0 - jr z, .skip3 - ld hl, $cd4f - dec [hl] - jr nz, .skip4 -.skip3 - ld hl, NotThisTimeText - call PrintText -.loop - xor a - ld [$c002], a - ret -.skip4 - call Func_37833 - call DelayFrame - call Func_37833 - call DelayFrame - jp Func_37588 -.skip5 - ld a, [$cd4c] - and $c0 - jr z, .skip4 - and $80 - jr nz, .skip6 - ld a, [hl] - cp $7 - jr c, .skip4 -.skip6 - ld a, [hl] - sub $2 - ld [wTrainerScreenX], a - ld hl, SlotRewardPointers - ld c, a - ld b, $0 - add hl, bc - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - push de - ld a, [hli] - ld h, [hl] - ld l, a - ld de, $cf4b - ld bc, $0004 - call CopyData - pop hl - ld de, .asm_37638 - push de - jp [hl] +SilphCo5Text3: ; 1a033 (6:6033) + db $08 ; asm + ld hl, Silphco5TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd -.asm_37638 - ld a, [$ff47] - xor $40 - ld [$ff47], a - ld c, $5 - call DelayFrames - dec b - jr nz, .asm_37638 - ld hl, $cd4a - ld [hl], d - inc hl - ld [hl], e - call Func_3775f - ld hl, UnnamedText_37665 - call PrintText - call WaitForTextScrollButtonPress - call Func_3776b - call Func_3775f - ld a, $e4 - ld [$ff48], a - jp .loop +SilphCo5BattleText3: ; 1a03d (6:603d) + TX_FAR _SilphCo5BattleText3 + db "@" -UnnamedText_37665: ; 37665 (d:7665) +SilphCo5EndBattleText3: ; 1a042 (6:6042) + TX_FAR _SilphCo5EndBattleText3 + db "@" + +SilphCo5AfterBattleText3: ; 1a047 (6:6047) + TX_FAR _SilphCo5AfterBattleText3 + db "@" + +SilphCo5Text4: ; 1a04c (6:604c) db $08 ; asm - push bc - call Func_37728 - ld hl, LinedUpText - pop bc - inc bc - inc bc - inc bc - inc bc - ret + ld hl, Silphco5TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd -LinedUpText: ; 37673 (d:7673) - TX_FAR _LinedUpText +SilphCo5BattleText4: ; 1a056 (6:6056) + TX_FAR _SilphCo5BattleText4 db "@" -SlotRewardPointers: ; 37678 (d:7678) - dw SlotReward300Func - dw SlotReward300Text - dw SlotReward100Func - dw SlotReward100Text - dw SlotReward8Func - dw SlotReward8Text - dw SlotReward15Func - dw SlotReward15Text - dw SlotReward15Func - dw SlotReward15Text - dw SlotReward15Func - dw SlotReward15Text +SilphCo5EndBattleText4: ; 1a05b (6:605b) + TX_FAR _SilphCo5EndBattleText4 + db "@" -SlotReward300Text: ; 37690 (d:7690) - db "300@" +SilphCo5AfterBattleText4: ; 1a060 (6:6060) + TX_FAR _SilphCo5AfterBattleText4 + db "@" -SlotReward100Text: ; 37694 (d:7694) - db "100@" +SilphCo5Text5: ; 1a065 (6:6065) + db $08 ; asm + ld hl, Silphco5TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd -SlotReward8Text: ; 37698 (d:7698) - db "8@" +SilphCo5BattleText5: ; 1a06f (6:606f) + TX_FAR _SilphCo5BattleText5 + db "@" -SlotReward15Text: ; 3769a (d:769a) - db "15@" +SilphCo5EndBattleText5: ; 1a074 (6:6074) + TX_FAR _SilphCo5EndBattleText5 + db "@" -NotThisTimeText: ; 3769d (d:769d) - TX_FAR _NotThisTimeText +SilphCo5AfterBattleText5: ; 1a079 (6:6079) + TX_FAR _SilphCo5AfterBattleText5 db "@" -Func_376a2: ; 376a2 (d:76a2) - ld a, [de] - cp [hl] - ret nz - ld a, [bc] - cp [hl] - ret +SilphCo5Text9: ; 1a07e (6:607e) + TX_FAR _SilphCo5Text9 + db "@" -Func_376a8: ; 376a8 (d:76a8) - ld de, $cd47 - ld hl, SlotMachineWheel3 - ld a, [wTrainerScreenY] - call Func_376c9 +SilphCo5Text10: ; 1a083 (6:6083) + TX_FAR _SilphCo5Text10 + db "@" -Func_376b4: ; 376b4 (d:76b4) - ld de, $cd44 - ld hl, SlotMachineWheel2 - ld a, [wTrainerFacingDirection] - call Func_376c9 +SilphCo5Text11: ; 1a088 (6:6088) + TX_FAR _SilphCo5Text11 + db "@" -Func_376c0: ; 376c0 (d:76c0) - ld de, wTrainerScreenX - ld hl, SlotMachineWheel1 - ld a, [wTrainerEngageDistance] +SilphCo5Object: ; 0x1a08d (size=137) + db $2e ; border tile -Func_376c9: ; 376c9 (d:76c9) - ld c, a - ld b, $0 - add hl, bc - ld c, $3 -.loop - ld a, [hli] - ld [de], a - inc de - inc hl - dec c - jr nz, .loop - ret + db $7 ; warps + db $0, $18, $1, SILPH_CO_6F + db $0, $1a, $1, SILPH_CO_4F + db $0, $14, $0, SILPH_CO_ELEVATOR + db $3, $1b, $5, SILPH_CO_7F + db $f, $9, $4, SILPH_CO_9F + db $5, $b, $4, SILPH_CO_3F + db $f, $3, $5, SILPH_CO_3F -SlotReward8Func: ; 376d7 (d:76d7) - ld hl, W_SUBANIMSUBENTRYADDR - ld a, [hl] - and a - jr z, .skip - dec [hl] -.skip - ld b, $2 - ld de, 8 - ret + db $0 ; signs -SlotReward15Func: ; 376e5 (d:76e5) - ld hl, W_SUBANIMSUBENTRYADDR - ld a, [hl] - and a - jr z, .skip - dec [hl] -.skip - ld b, $4 - ld de, 15 - ret + db $b ; people + db SPRITE_LAPRAS_GIVER, $9 + 4, $d + 4, $ff, $ff, $1 ; person + db SPRITE_ROCKET, $10 + 4, $8 + 4, $ff, $d3, $42, ROCKET + $C8, $1c ; trainer + db SPRITE_OAK_AIDE, $3 + 4, $8 + 4, $ff, $d3, $43, SCIENTIST + $C8, $6 ; trainer + db SPRITE_ROCKER, $a + 4, $12 + 4, $ff, $d1, $44, JUGGLER + $C8, $1 ; trainer + db SPRITE_ROCKET, $4 + 4, $1c + 4, $ff, $d1, $45, ROCKET + $C8, $1d ; trainer + db SPRITE_BALL, $d + 4, $2 + 4, $ff, $ff, $86, TM_09 ; item + db SPRITE_BALL, $6 + 4, $4 + 4, $ff, $ff, $87, PROTEIN ; item + db SPRITE_BALL, $10 + 4, $15 + 4, $ff, $ff, $88, CARD_KEY ; item + db SPRITE_CLIPBOARD, $c + 4, $16 + 4, $ff, $ff, $9 ; person + db SPRITE_CLIPBOARD, $a + 4, $19 + 4, $ff, $ff, $a ; person + db SPRITE_CLIPBOARD, $6 + 4, $18 + 4, $ff, $ff, $b ; person -SlotReward100Func: ; 376f3 (d:76f3) - ld a, (SFX_1f_42 - SFX_Headers_1f) / 3 - call PlaySound - xor a - ld [$cd4c], a - ld b, $8 - ld de, 100 - ret + ; warp-to + EVENT_DISP SILPH_CO_5F_WIDTH, $0, $18 ; SILPH_CO_6F + EVENT_DISP SILPH_CO_5F_WIDTH, $0, $1a ; SILPH_CO_4F + EVENT_DISP SILPH_CO_5F_WIDTH, $0, $14 ; SILPH_CO_ELEVATOR + EVENT_DISP SILPH_CO_5F_WIDTH, $3, $1b ; SILPH_CO_7F + EVENT_DISP SILPH_CO_5F_WIDTH, $f, $9 ; SILPH_CO_9F + EVENT_DISP SILPH_CO_5F_WIDTH, $5, $b ; SILPH_CO_3F + EVENT_DISP SILPH_CO_5F_WIDTH, $f, $3 ; SILPH_CO_3F -SlotReward300Func: ; 37702 (d:7702) - ld hl, YeahText - call PrintText - ld a, (SFX_1f_3b - SFX_Headers_1f) / 3 - call PlaySound - call GenRandom - cp $80 - ld a, $0 - jr c, .skip - ld [$cd4c], a -.skip - ld [W_SUBANIMSUBENTRYADDR], a - ld b, $14 - ld de, 300 - ret +SilphCo5Blocks: ; 1a116 (6:6116) + INCBIN "maps/silphco5.blk" -YeahText: ; 37722 (d:7722) - TX_FAR _YeahText - db $0a, "@" +SilphCo6_h: ; 0x1a19d to 0x1a1a9 (12 bytes) (bank=6) (id=211) + db FACILITY ; tileset + db SILPH_CO_6F_HEIGHT, SILPH_CO_6F_WIDTH ; dimensions (y, x) + dw SilphCo6Blocks, SilphCo6TextPointers, SilphCo6Script ; blocks, texts, scripts + db $00 ; connections + dw SilphCo6Object ; objects -Func_37728: ; 37728 (d:7728) - ld hl, $c4ba - ld a, [wTrainerScreenX] - add $25 - ld [hli], a - inc a - ld [hld], a - inc a - ld de, $ffec - add hl, de - ld [hli], a - inc a - ld [hl], a - ld hl, $c4f2 - ld [hl], $ee +SilphCo6Script: ; 1a1a9 (6:61a9) + call SilphCo6Script_1a1bf + call EnableAutoTextBoxDrawing + ld hl, SilphCo6TrainerHeaders + ld de, SilphCo6ScriptPointers + ld a, [W_SILPHCO6CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_SILPHCO6CURSCRIPT], a ret -Func_37741: ; 37741 (d:7741) - ld hl, $cd4b - ld a, [$cd50] - ld [hld], a - xor a - ld [hli], a - ld de, $d5a5 - ld c, $2 - ld a, $c - call Predef +SilphCo6Script_1a1bf: ; 1a1bf (6:61bf) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld hl, SilphCo6Coords1 + call SilphCo4Script_19d5d + call SilphCo6Script_1a1e6 + ld a, [$d82e] + bit 7, a + ret nz + ld a, $5f + ld [$d09f], a + ld bc, $0602 + ld a, $17 + jp Predef -Func_37754: ; 37754 (d:7754) - ld hl, $c3b9 - ld de, wPlayerCoins - ld c, $2 - jp PrintBCDNumber +SilphCo6Coords1: ; 1a1e3 (6:61e3) + db $06, $02 + db $ff + +SilphCo6Script_1a1e6: ; 1a1e6 (6:61e6) + ld a, [$ffe0] + and a + ret z + ld hl, $d82e + set 7, [hl] + ret + +SilphCo6ScriptPointers: ; 1a1f0 (6:61f0) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle -Func_3775f: ; 3775f (d:775f) - ld hl, $c3bf - ld de, $cd4a - ld bc, $8204 - jp PrintNumber +SilphCo6TextPointers: ; 1a1f6 (6:61f6) + dw SilphCo6Text1 + dw SilphCo6Text2 + dw SilphCo6Text3 + dw SilphCo6Text4 + dw SilphCo6Text5 + dw SilphCo6Text6 + dw SilphCo6Text7 + dw SilphCo6Text8 + dw Predef5CText + dw Predef5CText -Func_3776b: ; 3776b (d:776b) - ld a, $1 - ld [$c002], a - call WaitForSoundToFinish - ld hl, $cd46 - xor a - ld [hli], a - inc a - ld [hl], a - ld a, $5 - ld [W_SUBANIMTRANSFORM], a -.loop - ld a, [$cd4b] - ld l, a - ld a, [$cd4a] - ld h, a - or l - ret z - ld de, $ffff - add hl, de - ld a, l - ld [$cd4b], a - ld a, h - ld [$cd4a], a - ld hl, $cd47 - ld de, $d5a5 - ld c, $2 - ld a, $b - call Predef - call Func_37754 - call Func_3775f - ld a, (SFX_1f_65 - SFX_Headers_1f) / 3 - call PlaySound - ld a, [W_SUBANIMTRANSFORM] - dec a - jr nz, .skip1 - ld a, [$ff48] - xor $40 - ld [$ff48], a - ld a, $5 -.skip1 - ld [W_SUBANIMTRANSFORM], a - ld a, [wTrainerScreenX] - cp $7 - ld c, $8 - jr nc, .skip2 - srl c -.skip2 - call DelayFrames - jr .loop +SilphCo6TrainerHeaders: ; 1a20a (6:620a) +SilphCo6TrainerHeader0: ; 1a20a (6:620a) + db $6 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d82d ; flag's byte + dw SilphCo6BattleText2 ; 0x62ba TextBeforeBattle + dw SilphCo6AfterBattleText2 ; 0x62c4 TextAfterBattle + dw SilphCo6EndBattleText2 ; 0x62bf TextEndBattle + dw SilphCo6EndBattleText2 ; 0x62bf TextEndBattle -Func_377ce: ; 377ce (d:77ce) - ld a, $23 - ld [$d08a], a - jr Func_377e3 +SilphCo6TrainerHeader2: ; 1a216 (6:6216) + db $7 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d82d ; flag's byte + dw SilphCo6BattleText3 ; 0x62d3 TextBeforeBattle + dw SilphCo6AfterBattleText3 ; 0x62dd TextAfterBattle + dw SilphCo6EndBattleText3 ; 0x62d8 TextEndBattle + dw SilphCo6EndBattleText3 ; 0x62d8 TextEndBattle -Func_377d5: ; 377d5 (d:77d5) - ld a, $14 - ld [$d08a], a - ld a, [$cd50] - dec a - jr z, Func_377fb - dec a - jr z, Func_377ef +SilphCo6TrainerHeader3: ; 1a222 (6:6222) + db $8 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d82d ; flag's byte + dw SilphCo6BattleText4 ; 0x62ec TextBeforeBattle + dw SilphCo6AfterBattleText4 ; 0x62f6 TextAfterBattle + dw SilphCo6EndBattleText4 ; 0x62f1 TextEndBattle + dw SilphCo6EndBattleText4 ; 0x62f1 TextEndBattle -Func_377e3: ; 377e3 (d:77e3) - ld hl, $c3cb - call Func_377fe - ld hl, $c46b - call Func_377fe + db $ff -Func_377ef: ; 377ef (d:77ef) - ld hl, $c3f3 - call Func_377fe - ld hl, $c443 - call Func_377fe +SilphCo6Script_1a22f: ; 1a22f (6:622f) + ld a, [$d838] + bit 7, a + jr nz, .asm_1a238 ; 0x1a234 $2 + jr .asm_1a23a ; 0x1a236 $2 +.asm_1a238 + ld h, d + ld l, e +.asm_1a23a + jp PrintText -Func_377fb: ; 377fb (d:77fb) - ld hl, $c41b +SilphCo6Text1: ; 1a23d (6:623d) + db $08 ; asm + ld hl, UnnamedText_1a24a + ld de, UnnamedText_1a24f + call SilphCo6Script_1a22f + jp TextScriptEnd -Func_377fe: ; 377fe (d:77fe) - ld a, [$d08a] - ld [hl], a - ld bc, $000d - add hl, bc - ld [hl], a - ld bc, $0007 - add hl, bc - inc a - ld [hl], a - ld bc, $000d - add hl, bc - ld [hl], a - ret +UnnamedText_1a24a: ; 1a24a (6:624a) + TX_FAR _UnnamedText_1a24a + db "@" -Func_37813: ; 37813 (d:7813) - ld bc, SlotMachineWheel1 - ld de, wTrainerEngageDistance - ld hl, wOAMBuffer - ld a, $30 - ld [W_BASECOORDX], a - jr Func_37841 +UnnamedText_1a24f: ; 1a24f (6:624f) + TX_FAR _UnnamedText_1a24f + db "@" -Func_37823: ; 37823 (d:7823) - ld bc, SlotMachineWheel2 - ld de, wTrainerFacingDirection - ld hl, $c330 - ld a, $50 - ld [W_BASECOORDX], a - jr Func_37841 +SilphCo6Text2: ; 1a254 (6:6254) + db $08 ; asm + ld hl, UnnamedText_1a261 + ld de, UnnamedText_1a266 + call SilphCo6Script_1a22f + jp TextScriptEnd -Func_37833: ; 37833 (d:7833) - ld bc, SlotMachineWheel3 - ld de, wTrainerScreenY - ld hl, $c360 - ld a, $70 - ld [W_BASECOORDX], a +UnnamedText_1a261: ; 1a261 (6:6261) + TX_FAR _UnnamedText_1a261 + db "@" -Func_37841: ; 37841 (d:7841) - ld a, $58 - ld [W_BASECOORDY], a - push de - ld a, [de] - ld d, b - add c - ld e, a - jr nc, Func_3784e - inc d +UnnamedText_1a266: ; 1a266 (6:6266) + TX_FAR _UnnamedText_1a266 + db "@" -Func_3784e: ; 3784e (d:784e) - ld a, [W_BASECOORDY] - ld [hli], a - ld a, [W_BASECOORDX] - ld [hli], a - ld a, [de] - ld [hli], a - ld a, $80 - ld [hli], a - ld a, [W_BASECOORDY] - ld [hli], a - ld a, [W_BASECOORDX] - add $8 - ld [hli], a - ld a, [de] - inc a - ld [hli], a - ld a, $80 - ld [hli], a - inc de - ld a, [W_BASECOORDY] - sub $8 - ld [W_BASECOORDY], a - cp $28 - jr nz, Func_3784e - pop de - ld a, [de] - inc a - cp $1e - jr nz, .skip - xor a -.skip - ld [de], a - ret +SilphCo6Text3: ; 1a26b (6:626b) + db $08 ; asm + ld hl, UnnamedText_1a278 + ld de, UnnamedText_1a27d + call SilphCo6Script_1a22f + jp TextScriptEnd -Func_37882: ; 37882 (d:7882) - call DelayFrame - call GetJoypadStateLowSensitivity - ld a, [$ffb5] - and $1 - ret z - ld hl, wTrainerSpriteOffset - ld a, [hl] - dec a - ld de, $cd4d - jr z, .skip - dec a - ld de, $cd4e - jr z, .skip -.loop - inc [hl] - ld a, (SFX_1f_64 - SFX_Headers_1f) / 3 - jp PlaySound -.skip - ld a, [de] - and a - ret nz - jr .loop +UnnamedText_1a278: ; 1a278 (6:6278) + TX_FAR _UnnamedText_1a278 + db "@" -LoadSlotMachineTiles: ; 378a8 (d:78a8) - call DisableLCD - ld hl, SlotMachineTiles2 - ld de, $8000 - ld bc, $01c0 - ld a, BANK(SlotMachineTiles2) - call FarCopyData2 - ld hl, SlotMachineTiles1 - ld de, $9000 - ld bc, $0250 - ld a, BANK(SlotMachineTiles1) - call FarCopyData2 - ld hl, SlotMachineTiles2 - ld de, $9250 - ld bc, $01c0 - ld a, BANK(SlotMachineTiles2) - call FarCopyData2 - ld hl, SlotMachineMap - ld de, wTileMap - ld bc, $00f0 - call CopyData - call EnableLCD - ld hl, wTrainerEngageDistance - ld a, $1c - ld [hli], a - ld [hli], a - ld [hl], a - call Func_37813 - call Func_37823 - jp Func_37833 +UnnamedText_1a27d: ; 1a27d (6:627d) + TX_FAR _UnnamedText_1a27d + db "@" -SlotMachineMap: ; 378f5 (d:78f5) - INCBIN "gfx/tilemaps/slotmachine.map" +SilphCo6Text4: ; 1a282 (6:6282) + db $08 ; asm + ld hl, UnnamedText_1a28f + ld de, UnnamedText_1a294 + call SilphCo6Script_1a22f + jp TextScriptEnd -SLOTS7 EQU $0200 -SLOTSBAR EQU $0604 -SLOTSCHERRY EQU $0A08 -SLOTSFISH EQU $0E0C -SLOTSBIRD EQU $1210 -SLOTSMOUSE EQU $1614 +UnnamedText_1a28f: ; 1a28f (6:628f) + TX_FAR _UnnamedText_1a28f + db "@" -SlotMachineWheel1: ; 379e5 (d:79e5) - dw SLOTS7 - dw SLOTSMOUSE - dw SLOTSFISH - dw SLOTSBAR - dw SLOTSCHERRY - dw SLOTS7 - dw SLOTSFISH - dw SLOTSBIRD - dw SLOTSBAR - dw SLOTSCHERRY - dw SLOTS7 - dw SLOTSMOUSE - dw SLOTSBIRD - dw SLOTSBAR - dw SLOTSCHERRY - dw SLOTS7 - dw SLOTSMOUSE - dw SLOTSFISH - -SlotMachineWheel2: ; 37a09 (d:7a09) - dw SLOTS7 - dw SLOTSFISH - dw SLOTSCHERRY - dw SLOTSBIRD - dw SLOTSMOUSE - dw SLOTSBAR - dw SLOTSCHERRY - dw SLOTSFISH - dw SLOTSBIRD - dw SLOTSCHERRY - dw SLOTSBAR - dw SLOTSFISH - dw SLOTSBIRD - dw SLOTSCHERRY - dw SLOTSMOUSE - dw SLOTS7 - dw SLOTSFISH - dw SLOTSCHERRY - -SlotMachineWheel3: ; 37a2d (d:7a2d) - dw SLOTS7 - dw SLOTSBIRD - dw SLOTSFISH - dw SLOTSCHERRY - dw SLOTSMOUSE - dw SLOTSBIRD - dw SLOTSFISH - dw SLOTSCHERRY - dw SLOTSMOUSE - dw SLOTSBIRD - dw SLOTSFISH - dw SLOTSCHERRY - dw SLOTSMOUSE - dw SLOTSBIRD - dw SLOTSBAR - dw SLOTS7 - dw SLOTSBIRD - dw SLOTSFISH +UnnamedText_1a294: ; 1a294 (6:6294) + TX_FAR _UnnamedText_1a294 + db "@" -SlotMachineTiles1: ; 37a51 (d:7a51) -IF _RED - INCBIN "gfx/red/slotmachine1.2bpp" -ENDC -IF _BLUE - INCBIN "gfx/blue/slotmachine1.2bpp" -ENDC +SilphCo6Text5: ; 1a299 (6:6299) + db $08 ; asm + ld hl, UnnamedText_1a2a6 + ld de, UnnamedText_1a2ab + call SilphCo6Script_1a22f + jp TextScriptEnd -Func_37ca1: ; 37ca1 (d:7ca1) - ld hl, $ccd3 - ld a, [$cd38] - dec a - ld [$cd38], a - ld d, 0 - ld e, a - add hl, de - ld d, h - ld e, l - ld hl, PointerTable_37ce6 - ld a, [$d12f] - add a - ld b, 0 - ld c, a - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [W_YCOORD] - ld b, a - ld a, [W_XCOORD] - ld c, a -.asm_37cc7 - ld a, [hli] - cp b - jr nz, .asm_37ce1 - ld a, [hli] - cp c - jr nz, .asm_37ce2 - ld a, [hli] - ld h, [hl] - ld l, a -.asm_37cd2 - ld a, [hli] - cp $ff - ret z - ld [de], a - inc de - ld a, [$cd38] - inc a - ld [$cd38], a - jr .asm_37cd2 -.asm_37ce1 - inc hl -.asm_37ce2 - inc hl - inc hl - jr .asm_37cc7 +UnnamedText_1a2a6: ; 1a2a6 (6:62a6) + TX_FAR _UnnamedText_1a2a6 + db "@" -PointerTable_37ce6: ; 37ce6 (d:7ce6) - dw PewterMuseumGuyCoords - dw PewterGymGuyCoords +UnnamedText_1a2ab: ; 1a2ab (6:62ab) + TX_FAR _UnnamedText_1a2ab + db "@" -; these are the four coordinates of the spaces below, above, to the left and -; to the right of the museum guy, and pointers to different movements for -; the player to make to get positioned before the main movement. -PewterMuseumGuyCoords: ; 37cea (d:7cea) - db 18, 27 - dw .down - db 16, 27 - dw .up - db 17, 26 - dw .left - db 17, 28 - dw .right +SilphCo6Text6: ; 1a2b0 (6:62b0) + db $08 ; asm + ld hl, SilphCo6TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd -.down - db $40, $40, $ff -.up - db $10, $20, $ff -.left - db $40, $10, $ff -.right - db $40, $20, $ff +SilphCo6BattleText2: ; 1a2ba (6:62ba) + TX_FAR _SilphCo6BattleText2 + db "@" -; these are the five coordinates which trigger the gym guy and pointers to -; different movements for the player to make to get positioned before the -; main movement -PewterGymGuyCoords: ; 37d06 (d:7d06) - db 16, 34 - dw .one - db 17, 35 - dw .two - db 18, 37 - dw .three - db 19, 37 - dw .four - db 17, 36 - dw .five +SilphCo6EndBattleText2: ; 1a2bf (6:62bf) + TX_FAR _SilphCo6EndBattleText2 + db "@" -.one - db $20, $80, $80, $10, $ff -.two - db $20, $80, $10, $20, $ff -.three - db $20, $20, $20, $00, $00, $00, $00, $00, $00, $00, $00, $ff -.four - db $20, $20, $40, $20, $ff -.five - db $20, $80, $20, $00, $00, $00, $00, $00, $00, $00, $00, $ff +SilphCo6AfterBattleText2: ; 1a2c4 (6:62c4) + TX_FAR _SilphCo6AfterBattleText2 + db "@" +SilphCo6Text7: ; 1a2c9 (6:62c9) + db $08 ; asm + ld hl, SilphCo6TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd -_Multiply: ; 37d41 (d:7d41) - ld a, $8 - ld b, a - xor a - ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) - ld [$ff9b], a - ld [H_SAVEDNUMTOPRINT], a ; $ff9c - ld [$ff9d], a - ld [$ff9e], a -.asm_37d4f - ld a, [H_REMAINDER] ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - srl a - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - jr nc, .asm_37d77 - ld a, [$ff9e] - ld c, a - ld a, [$ff98] - add c - ld [$ff9e], a - ld a, [$ff9d] - ld c, a - ld a, [$ff97] - adc c - ld [$ff9d], a - ld a, [H_SAVEDNUMTOPRINT] ; $ff9c - ld c, a - ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND) - adc c - ld [H_SAVEDNUMTOPRINT], a ; $ff9c - ld a, [$ff9b] - ld c, a - ld a, [H_DIVIDEND] ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) - adc c - ld [$ff9b], a -.asm_37d77 - dec b - jr z, .asm_37d94 - ld a, [$ff98] - sla a - ld [$ff98], a - ld a, [$ff97] - rl a - ld [$ff97], a - ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND) - rl a - ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) - ld a, [H_DIVIDEND] ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) - rl a - ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) - jr .asm_37d4f -.asm_37d94 - ld a, [$ff9e] - ld [$ff98], a - ld a, [$ff9d] - ld [$ff97], a - ld a, [H_SAVEDNUMTOPRINT] ; $ff9c - ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) - ld a, [$ff9b] - ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) - ret +SilphCo6BattleText3: ; 1a2d3 (6:62d3) + TX_FAR _SilphCo6BattleText3 + db "@" -_Divide: ; 37da5 (d:7da5) - xor a - ld [$ff9a], a - ld [$ff9b], a - ld [H_SAVEDNUMTOPRINT], a ; $ff9c - ld [$ff9d], a - ld [$ff9e], a - ld a, $9 - ld e, a -.asm_37db3 - ld a, [$ff9a] - ld c, a - ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND) - sub c - ld d, a - ld a, [H_REMAINDER] ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - ld c, a - ld a, [H_DIVIDEND] ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) - sbc c - jr c, .asm_37dce - ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) - ld a, d - ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) - ld a, [$ff9e] - inc a - ld [$ff9e], a - jr .asm_37db3 -.asm_37dce - ld a, b - cp $1 - jr z, .asm_37e18 - ld a, [$ff9e] - sla a - ld [$ff9e], a - ld a, [$ff9d] - rl a - ld [$ff9d], a - ld a, [H_SAVEDNUMTOPRINT] ; $ff9c - rl a - ld [H_SAVEDNUMTOPRINT], a ; $ff9c - ld a, [$ff9b] - rl a - ld [$ff9b], a - dec e - jr nz, .asm_37e04 - ld a, $8 - ld e, a - ld a, [$ff9a] - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - xor a - ld [$ff9a], a - ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND) - ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) - ld a, [$ff97] - ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) - ld a, [$ff98] - ld [$ff97], a -.asm_37e04 - ld a, e - cp $1 - jr nz, .asm_37e0a - dec b -.asm_37e0a - ld a, [H_REMAINDER] ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - srl a - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - ld a, [$ff9a] - rr a - ld [$ff9a], a - jr .asm_37db3 -.asm_37e18 - ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND) - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - ld a, [$ff9e] - ld [$ff98], a - ld a, [$ff9d] - ld [$ff97], a - ld a, [H_SAVEDNUMTOPRINT] ; $ff9c - ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) - ld a, [$ff9b] - ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) - ret +SilphCo6EndBattleText3: ; 1a2d8 (6:62d8) + TX_FAR _SilphCo6EndBattleText3 + db "@" -Func_37e2d: ; 37e2d (d:7e2d) - ld a, [wTrainerSpriteOffset] - cp $fd - jr z, .asm_37e66 - cp $fe - jr z, .asm_37e6a - cp $ff - jr z, .asm_37e6e - ld b, BANK(Func_2ff09) - ld hl, Func_2ff09 - call Bankswitch - ld a, [wTrainerSpriteOffset] - and a - ret z - ld a, [$cd05] - ld b, a - ld a, [wTrainerFacingDirection] - inc a - cp b - jr z, .asm_37e58 - ld a, $fd - jr .asm_37e5a -.asm_37e58 - ld a, $fa -.asm_37e5a - ld [$cc5b], a - ld a, [H_LOADEDROMBANK] - ld [$cc5e], a - call Func_3730e - ret -.asm_37e66 - ld a, $28 - jr .asm_37e70 -.asm_37e6a - ld a, $29 - jr .asm_37e70 -.asm_37e6e - ld a, $2a -.asm_37e70 - push af - call EnableAutoTextBoxDrawing - pop af - call Func_3ef5 - ret +SilphCo6AfterBattleText3: ; 1a2dd (6:62dd) + TX_FAR _SilphCo6AfterBattleText3 + db "@" -GameCornerOutOfOrderText: ; 37e79 (d:7e79) - TX_FAR _GameCornerOutOfOrderText +SilphCo6Text8: ; 1a2e2 (6:62e2) + db $08 ; asm + ld hl, SilphCo6TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +SilphCo6BattleText4: ; 1a2ec (6:62ec) + TX_FAR _SilphCo6BattleText4 db "@" -GameCornerOutToLunchText: ; 37e7e (d:7e7e) - TX_FAR _GameCornerOutToLunchText +SilphCo6EndBattleText4: ; 1a2f1 (6:62f1) + TX_FAR _SilphCo6EndBattleText4 db "@" -GameCornerSomeonesKeysText: ; 37e83 (d:7e83) - TX_FAR _GameCornerSomeonesKeysText +SilphCo6AfterBattleText4: ; 1a2f6 (6:62f6) + TX_FAR _SilphCo6AfterBattleText4 db "@" -SECTION "bankE",ROMX,BANK[$E] +SilphCo6Object: ; 0x1a2fb (size=112) + db $2e ; border tile -Moves: ; 38000 (e:4000) -; characteristics of each move -; animation, effect, power, type, accuracy, PP - db POUND ,NO_ADDITIONAL_EFFECT ,$28,NORMAL, $FF,35 - db KARATE_CHOP ,NO_ADDITIONAL_EFFECT ,$32,NORMAL, $FF,25 - db DOUBLESLAP ,TWO_TO_FIVE_ATTACKS_EFFECT,$0F,NORMAL, $D8,10 - db COMET_PUNCH ,TWO_TO_FIVE_ATTACKS_EFFECT,$12,NORMAL, $D8,15 - db MEGA_PUNCH ,NO_ADDITIONAL_EFFECT ,$50,NORMAL, $D8,20 - db PAY_DAY ,PAY_DAY_EFFECT ,$28,NORMAL, $FF,20 - db FIRE_PUNCH ,BURN_SIDE_EFFECT1 ,$4B,FIRE, $FF,15 - db ICE_PUNCH ,FREEZE_SIDE_EFFECT ,$4B,ICE, $FF,15 - db THUNDERPUNCH,PARALYZE_SIDE_EFFECT1 ,$4B,ELECTRIC,$FF,15 - db SCRATCH ,NO_ADDITIONAL_EFFECT ,$28,NORMAL, $FF,35 - db VICEGRIP ,NO_ADDITIONAL_EFFECT ,$37,NORMAL, $FF,30 - db GUILLOTINE ,OHKO_EFFECT ,$01,NORMAL, $4C,5 - db RAZOR_WIND ,CHARGE_EFFECT ,$50,NORMAL, $BF,10 - db SWORDS_DANCE,ATTACK_UP2_EFFECT ,$00,NORMAL, $FF,30 - db CUT ,NO_ADDITIONAL_EFFECT ,$32,NORMAL, $F2,30 - db GUST ,NO_ADDITIONAL_EFFECT ,$28,NORMAL, $FF,35 - db WING_ATTACK ,NO_ADDITIONAL_EFFECT ,$23,FLYING, $FF,35 - db WHIRLWIND ,SWITCH_AND_TELEPORT_EFFECT,$00,NORMAL, $D8,20 - db FLY ,FLY_EFFECT ,$46,FLYING, $F2,15 - db BIND ,TRAPPING_EFFECT ,$0F,NORMAL, $BF,20 - db SLAM ,NO_ADDITIONAL_EFFECT ,$50,NORMAL, $BF,20 - db VINE_WHIP ,NO_ADDITIONAL_EFFECT ,$23,GRASS, $FF,10 - db STOMP ,FLINCH_SIDE_EFFECT2 ,$41,NORMAL, $FF,20 - db DOUBLE_KICK ,ATTACK_TWICE_EFFECT ,$1E,FIGHTING,$FF,30 - db MEGA_KICK ,NO_ADDITIONAL_EFFECT ,$78,NORMAL, $BF,5 - db JUMP_KICK ,JUMP_KICK_EFFECT ,$46,FIGHTING,$F2,25 - db ROLLING_KICK,FLINCH_SIDE_EFFECT2 ,$3C,FIGHTING,$D8,15 - db SAND_ATTACK ,ACCURACY_DOWN1_EFFECT ,$00,NORMAL, $FF,15 - db HEADBUTT ,FLINCH_SIDE_EFFECT2 ,$46,NORMAL, $FF,15 - db HORN_ATTACK ,NO_ADDITIONAL_EFFECT ,$41,NORMAL, $FF,25 - db FURY_ATTACK ,TWO_TO_FIVE_ATTACKS_EFFECT,$0F,NORMAL, $D8,20 - db HORN_DRILL ,OHKO_EFFECT ,$01,NORMAL, $4C,5 - db TACKLE ,NO_ADDITIONAL_EFFECT ,$23,NORMAL, $F2,35 - db BODY_SLAM ,PARALYZE_SIDE_EFFECT2 ,$55,NORMAL, $FF,15 - db WRAP ,TRAPPING_EFFECT ,$0F,NORMAL, $D8,20 - db TAKE_DOWN ,RECOIL_EFFECT ,$5A,NORMAL, $D8,20 - db THRASH ,THRASH_PETAL_DANCE_EFFECT ,$5A,NORMAL, $FF,20 - db DOUBLE_EDGE ,RECOIL_EFFECT ,$64,NORMAL, $FF,15 - db TAIL_WHIP ,DEFENSE_DOWN1_EFFECT ,$00,NORMAL, $FF,30 - db POISON_STING,POISON_SIDE_EFFECT1 ,$0F,POISON, $FF,35 - db TWINEEDLE ,TWINEEDLE_EFFECT ,$19,BUG, $FF,20 - db PIN_MISSILE ,TWO_TO_FIVE_ATTACKS_EFFECT,$0E,BUG, $D8,20 - db LEER ,DEFENSE_DOWN1_EFFECT ,$00,NORMAL, $FF,30 - db BITE ,FLINCH_SIDE_EFFECT1 ,$3C,NORMAL, $FF,25 - db GROWL ,ATTACK_DOWN1_EFFECT ,$00,NORMAL, $FF,40 - db ROAR ,SWITCH_AND_TELEPORT_EFFECT,$00,NORMAL, $FF,20 - db SING ,SLEEP_EFFECT ,$00,NORMAL, $8C,15 - db SUPERSONIC ,CONFUSION_EFFECT ,$00,NORMAL, $8C,20 - db SONICBOOM ,SPECIAL_DAMAGE_EFFECT ,$01,NORMAL, $E5,20 - db DISABLE ,DISABLE_EFFECT ,$00,NORMAL, $8C,20 - db ACID ,DEFENSE_DOWN_SIDE_EFFECT ,$28,POISON, $FF,30 - db EMBER ,BURN_SIDE_EFFECT1 ,$28,FIRE, $FF,25 - db FLAMETHROWER,BURN_SIDE_EFFECT1 ,$5F,FIRE, $FF,15 - db MIST ,MIST_EFFECT ,$00,ICE, $FF,30 - db WATER_GUN ,NO_ADDITIONAL_EFFECT ,$28,WATER, $FF,25 - db HYDRO_PUMP ,NO_ADDITIONAL_EFFECT ,$78,WATER, $CC,5 - db SURF ,NO_ADDITIONAL_EFFECT ,$5F,WATER, $FF,15 - db ICE_BEAM ,FREEZE_SIDE_EFFECT ,$5F,ICE, $FF,10 - db BLIZZARD ,FREEZE_SIDE_EFFECT ,$78,ICE, $E5,5 - db PSYBEAM ,CONFUSION_SIDE_EFFECT ,$41,PSYCHIC, $FF,20 - db BUBBLEBEAM ,SPEED_DOWN_SIDE_EFFECT ,$41,WATER, $FF,20 - db AURORA_BEAM ,ATTACK_DOWN_SIDE_EFFECT ,$41,ICE, $FF,20 - db HYPER_BEAM ,HYPER_BEAM_EFFECT ,$96,NORMAL, $E5,5 - db PECK ,NO_ADDITIONAL_EFFECT ,$23,FLYING, $FF,35 - db DRILL_PECK ,NO_ADDITIONAL_EFFECT ,$50,FLYING, $FF,20 - db SUBMISSION ,RECOIL_EFFECT ,$50,FIGHTING,$CC,25 - db LOW_KICK ,FLINCH_SIDE_EFFECT2 ,$32,FIGHTING,$E5,20 - db COUNTER ,NO_ADDITIONAL_EFFECT ,$01,FIGHTING,$FF,20 - db SEISMIC_TOSS,SPECIAL_DAMAGE_EFFECT ,$01,FIGHTING,$FF,20 - db STRENGTH ,NO_ADDITIONAL_EFFECT ,$50,NORMAL, $FF,15 - db ABSORB ,DRAIN_HP_EFFECT ,$14,GRASS, $FF,20 - db MEGA_DRAIN ,DRAIN_HP_EFFECT ,$28,GRASS, $FF,10 - db LEECH_SEED ,LEECH_SEED_EFFECT ,$00,GRASS, $E5,10 - db GROWTH ,SPECIAL_UP1_EFFECT ,$00,NORMAL, $FF,40 - db RAZOR_LEAF ,NO_ADDITIONAL_EFFECT ,$37,GRASS, $F2,25 - db SOLARBEAM ,CHARGE_EFFECT ,$78,GRASS, $FF,10 - db POISONPOWDER,POISON_EFFECT ,$00,POISON, $BF,35 - db STUN_SPORE ,PARALYZE_EFFECT ,$00,GRASS, $BF,30 - db SLEEP_POWDER,SLEEP_EFFECT ,$00,GRASS, $BF,15 - db PETAL_DANCE ,THRASH_PETAL_DANCE_EFFECT ,$46,GRASS, $FF,20 - db STRING_SHOT ,SPEED_DOWN1_EFFECT ,$00,BUG, $F2,40 - db DRAGON_RAGE ,SPECIAL_DAMAGE_EFFECT ,$01,DRAGON, $FF,10 - db FIRE_SPIN ,TRAPPING_EFFECT ,$0F,FIRE, $B2,15 - db THUNDERSHOCK,PARALYZE_SIDE_EFFECT1 ,$28,ELECTRIC,$FF,30 - db THUNDERBOLT ,PARALYZE_SIDE_EFFECT1 ,$5F,ELECTRIC,$FF,15 - db THUNDER_WAVE,PARALYZE_EFFECT ,$00,ELECTRIC,$FF,20 - db THUNDER ,PARALYZE_SIDE_EFFECT1 ,$78,ELECTRIC,$B2,10 - db ROCK_THROW ,NO_ADDITIONAL_EFFECT ,$32,ROCK, $A5,15 - db EARTHQUAKE ,NO_ADDITIONAL_EFFECT ,$64,GROUND, $FF,10 - db FISSURE ,OHKO_EFFECT ,$01,GROUND, $4C,5 - db DIG ,CHARGE_EFFECT ,$64,GROUND, $FF,10 - db TOXIC ,POISON_EFFECT ,$00,POISON, $D8,10 - db CONFUSION ,CONFUSION_SIDE_EFFECT ,$32,PSYCHIC, $FF,25 - db PSYCHIC_M ,SPECIAL_DOWN_SIDE_EFFECT ,$5A,PSYCHIC, $FF,10 - db HYPNOSIS ,SLEEP_EFFECT ,$00,PSYCHIC, $99,20 - db MEDITATE ,ATTACK_UP1_EFFECT ,$00,PSYCHIC, $FF,40 - db AGILITY ,SPEED_UP2_EFFECT ,$00,PSYCHIC, $FF,30 - db QUICK_ATTACK,NO_ADDITIONAL_EFFECT ,$28,NORMAL, $FF,30 - db RAGE ,RAGE_EFFECT ,$14,NORMAL, $FF,20 - db TELEPORT ,SWITCH_AND_TELEPORT_EFFECT,$00,PSYCHIC, $FF,20 - db NIGHT_SHADE ,SPECIAL_DAMAGE_EFFECT ,$00,GHOST, $FF,15 - db MIMIC ,MIMIC_EFFECT ,$00,NORMAL, $FF,10 - db SCREECH ,DEFENSE_DOWN2_EFFECT ,$00,NORMAL, $D8,40 - db DOUBLE_TEAM ,EVASION_UP1_EFFECT ,$00,NORMAL, $FF,15 - db RECOVER ,HEAL_EFFECT ,$00,NORMAL, $FF,20 - db HARDEN ,DEFENSE_UP1_EFFECT ,$00,NORMAL, $FF,30 - db MINIMIZE ,EVASION_UP1_EFFECT ,$00,NORMAL, $FF,20 - db SMOKESCREEN ,ACCURACY_DOWN1_EFFECT ,$00,NORMAL, $FF,20 - db CONFUSE_RAY ,CONFUSION_EFFECT ,$00,GHOST, $FF,10 - db WITHDRAW ,DEFENSE_UP1_EFFECT ,$00,WATER, $FF,40 - db DEFENSE_CURL,DEFENSE_UP1_EFFECT ,$00,NORMAL, $FF,40 - db BARRIER ,DEFENSE_UP2_EFFECT ,$00,PSYCHIC, $FF,30 - db LIGHT_SCREEN,LIGHT_SCREEN_EFFECT ,$00,PSYCHIC, $FF,30 - db HAZE ,HAZE_EFFECT ,$00,ICE, $FF,30 - db REFLECT ,REFLECT_EFFECT ,$00,PSYCHIC, $FF,20 - db FOCUS_ENERGY,FOCUS_ENERGY_EFFECT ,$00,NORMAL, $FF,30 - db BIDE ,BIDE_EFFECT ,$00,NORMAL, $FF,10 - db METRONOME ,METRONOME_EFFECT ,$00,NORMAL, $FF,10 - db MIRROR_MOVE ,MIRROR_MOVE_EFFECT ,$00,FLYING, $FF,20 - db SELFDESTRUCT,EXPLODE_EFFECT ,$82,NORMAL, $FF,5 - db EGG_BOMB ,NO_ADDITIONAL_EFFECT ,$64,NORMAL, $BF,10 - db LICK ,PARALYZE_SIDE_EFFECT2 ,$14,GHOST, $FF,30 - db SMOG ,POISON_SIDE_EFFECT2 ,$14,POISON, $B2,20 - db SLUDGE ,POISON_SIDE_EFFECT2 ,$41,POISON, $FF,20 - db BONE_CLUB ,FLINCH_SIDE_EFFECT1 ,$41,GROUND, $D8,20 - db FIRE_BLAST ,BURN_SIDE_EFFECT2 ,$78,FIRE, $D8,5 - db WATERFALL ,NO_ADDITIONAL_EFFECT ,$50,WATER, $FF,15 - db CLAMP ,TRAPPING_EFFECT ,$23,WATER, $BF,10 - db SWIFT ,SWIFT_EFFECT ,$3C,NORMAL, $FF,20 - db SKULL_BASH ,CHARGE_EFFECT ,$64,NORMAL, $FF,15 - db SPIKE_CANNON,TWO_TO_FIVE_ATTACKS_EFFECT,$14,NORMAL, $FF,15 - db CONSTRICT ,SPEED_DOWN_SIDE_EFFECT ,$0A,NORMAL, $FF,35 - db AMNESIA ,SPECIAL_UP2_EFFECT ,$00,PSYCHIC, $FF,20 - db KINESIS ,ACCURACY_DOWN1_EFFECT ,$00,PSYCHIC, $CC,15 - db SOFTBOILED ,HEAL_EFFECT ,$00,NORMAL, $FF,10 - db HI_JUMP_KICK,JUMP_KICK_EFFECT ,$55,FIGHTING,$E5,20 - db GLARE ,PARALYZE_EFFECT ,$00,NORMAL, $BF,30 - db DREAM_EATER ,DREAM_EATER_EFFECT ,$64,PSYCHIC, $FF,15 - db POISON_GAS ,POISON_EFFECT ,$00,POISON, $8C,40 - db BARRAGE ,TWO_TO_FIVE_ATTACKS_EFFECT,$0F,NORMAL, $D8,20 - db LEECH_LIFE ,DRAIN_HP_EFFECT ,$14,BUG, $FF,15 - db LOVELY_KISS ,SLEEP_EFFECT ,$00,NORMAL, $BF,10 - db SKY_ATTACK ,CHARGE_EFFECT ,$8C,FLYING, $E5,5 - db TRANSFORM ,TRANSFORM_EFFECT ,$00,NORMAL, $FF,10 - db BUBBLE ,SPEED_DOWN_SIDE_EFFECT ,$14,WATER, $FF,30 - db DIZZY_PUNCH ,NO_ADDITIONAL_EFFECT ,$46,NORMAL, $FF,10 - db SPORE ,SLEEP_EFFECT ,$00,GRASS, $FF,15 - db FLASH ,ACCURACY_DOWN1_EFFECT ,$00,NORMAL, $B2,20 - db PSYWAVE ,SPECIAL_DAMAGE_EFFECT ,$01,PSYCHIC, $CC,15 - db SPLASH ,SPLASH_EFFECT ,$00,NORMAL, $FF,40 - db ACID_ARMOR ,DEFENSE_UP2_EFFECT ,$00,POISON, $FF,40 - db CRABHAMMER ,NO_ADDITIONAL_EFFECT ,$5A,WATER, $D8,10 - db EXPLOSION ,EXPLODE_EFFECT ,$AA,NORMAL, $FF,5 - db FURY_SWIPES ,TWO_TO_FIVE_ATTACKS_EFFECT,$12,NORMAL, $CC,15 - db BONEMERANG ,ATTACK_TWICE_EFFECT ,$32,GROUND, $E5,10 - db REST ,HEAL_EFFECT ,$00,PSYCHIC, $FF,10 - db ROCK_SLIDE ,NO_ADDITIONAL_EFFECT ,$4B,ROCK, $E5,10 - db HYPER_FANG ,FLINCH_SIDE_EFFECT1 ,$50,NORMAL, $E5,15 - db SHARPEN ,ATTACK_UP1_EFFECT ,$00,NORMAL, $FF,30 - db CONVERSION ,CONVERSION_EFFECT ,$00,NORMAL, $FF,30 - db TRI_ATTACK ,NO_ADDITIONAL_EFFECT ,$50,NORMAL, $FF,10 - db SUPER_FANG ,SUPER_FANG_EFFECT ,$01,NORMAL, $E5,10 - db SLASH ,NO_ADDITIONAL_EFFECT ,$46,NORMAL, $FF,20 - db SUBSTITUTE ,SUBSTITUTE_EFFECT ,$00,NORMAL, $FF,10 - db STRUGGLE ,RECOIL_EFFECT ,$32,NORMAL, $FF,10 - -BulbasaurBaseStats: ; 383de (e:43de) - db DEX_BULBASAUR ; pokedex id - db 45 ; base hp - db 49 ; base attack - db 49 ; base defense - db 45 ; base speed - db 65 ; base special - - db GRASS ; species type 1 - db POISON ; species type 2 - - db 45 ; catch rate - db 64 ; base exp yield - db $55 ; sprite dimensions - - dw BulbasaurPicFront - dw BulbasaurPicBack - - ; attacks known at lvl 0 - db TACKLE - db GROWL - db 0 - db 0 + db $5 ; warps + db $0, $10, $1, SILPH_CO_7F + db $0, $e, $0, SILPH_CO_5F + db $0, $12, $0, SILPH_CO_ELEVATOR + db $3, $3, $4, SILPH_CO_4F + db $3, $17, $6, SILPH_CO_2F - db 3 ; growth rate + db $0 ; signs - ; learnset - db %10100100 - db %00000011 - db %00111000 - db %11000000 - db %00000011 - db %00001000 - db %00000110 + db $a ; people + db SPRITE_LAPRAS_GIVER, $6 + 4, $a + 4, $ff, $ff, $1 ; person + db SPRITE_LAPRAS_GIVER, $6 + 4, $14 + 4, $ff, $ff, $2 ; person + db SPRITE_ERIKA, $6 + 4, $15 + 4, $ff, $d0, $3 ; person + db SPRITE_ERIKA, $a + 4, $b + 4, $ff, $d3, $4 ; person + db SPRITE_LAPRAS_GIVER, $d + 4, $12 + 4, $ff, $d1, $5 ; person + db SPRITE_ROCKET, $3 + 4, $11 + 4, $ff, $d3, $46, ROCKET + $C8, $1e ; trainer + db SPRITE_OAK_AIDE, $8 + 4, $7 + 4, $ff, $d0, $47, SCIENTIST + $C8, $7 ; trainer + db SPRITE_ROCKET, $f + 4, $e + 4, $ff, $d2, $48, ROCKET + $C8, $1f ; trainer + db SPRITE_BALL, $c + 4, $3 + 4, $ff, $ff, $89, HP_UP ; item + db SPRITE_BALL, $f + 4, $2 + 4, $ff, $ff, $8a, X_ACCURACY ; item - db 0 ; padding + ; warp-to + EVENT_DISP SILPH_CO_6F_WIDTH, $0, $10 ; SILPH_CO_7F + EVENT_DISP SILPH_CO_6F_WIDTH, $0, $e ; SILPH_CO_5F + EVENT_DISP SILPH_CO_6F_WIDTH, $0, $12 ; SILPH_CO_ELEVATOR + EVENT_DISP SILPH_CO_6F_WIDTH, $3, $3 ; SILPH_CO_4F + EVENT_DISP SILPH_CO_6F_WIDTH, $3, $17 ; SILPH_CO_2F -IvysaurBaseStats: ; 383fa (e:43fa) - db DEX_IVYSAUR ; pokedex id - db 60 ; base hp - db 62 ; base attack - db 63 ; base defense - db 60 ; base speed - db 80 ; base special +SilphCo6Blocks: ; 1a36b (6:636b) + INCBIN "maps/silphco6.blk" - db GRASS ; species type 1 - db POISON ; species type 2 +Func_1a3e0: ; 1a3e0 (6:63e0) + ld hl, $d730 + res 1, [hl] + call Func_1a609 + jr nc, .asm_1a406 + ld a, $fc + ld [wJoypadForbiddenButtonsMask], a + ld hl, $d736 + set 1, [hl] + ld a, $1 + ld [$cd38], a + ld a, $80 + ld [$ccd3], a + xor a + ld [$c102], a + call Func_3486 + ret +.asm_1a406 + xor a + ld [$cd3a], a + ld [$cd38], a + ld [$ccd3], a + ld hl, $d736 + res 0, [hl] + res 1, [hl] + ld hl, $d730 + res 7, [hl] + ret - db 45 ; catch rate - db 141 ; base exp yield - db $66 ; sprite dimensions +Func_1a41d: ; 1a41d (6:641d) + ld hl, $d730 + res 7, [hl] + ld hl, $d72e + res 7, [hl] + ld hl, $d736 + res 0, [hl] + res 1, [hl] + xor a + ld [$cf17], a + ld [$cc57], a + ld [$cf10], a + ld [$cd3a], a + ld [$cd38], a + ld [$ccd3], a + ret - dw IvysaurPicFront - dw IvysaurPicBack +PointerTable_1a442: ; 1a442 (6:6442) + dw Func_1a44c + dw Func_1a485 + dw Func_1a4a1 + dw Func_1a4a6 + dw Func_1a4f4 - ; attacks known at lvl 0 - db TACKLE - db GROWL - db LEECH_SEED - db 0 +Func_1a44c: ; 1a44c (6:644c) + ld a, [W_XCOORD] ; $d362 + sub $a + ld [$cca1], a + jr z, .asm_1a475 + ld b, $0 + ld c, a + ld hl, $cc97 + ld a, $80 + call FillMemory + ld [hl], $ff + ld a, [$cf13] + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + ld de, $cc97 + call MoveSprite + ld a, $1 + ld [$cf10], a + jr .asm_1a47a +.asm_1a475 + ld a, $3 + ld [$cf10], a +.asm_1a47a + ld hl, W_FLAGS_D733 + set 1, [hl] + ld a, $fc + ld [wJoypadForbiddenButtonsMask], a + ret + +Func_1a485: ; 1a485 (6:6485) + ld a, [$d730] + bit 0, a + ret nz + ld a, [$cca1] + ld [$cd38], a + ld [$ff95], a + ld a, $23 + call Predef + call Func_3486 + ld a, $2 + ld [$cf10], a + ret - db 3 ; growth rate +Func_1a4a1: ; 1a4a1 (6:64a1) + ld a, [$cd38] + and a + ret nz - ; learnset - db %10100100 - db %00000011 - db %00111000 - db %11000000 - db %00000011 - db %00001000 - db %00000110 +Func_1a4a6: ; 1a4a6 (6:64a6) + xor a + ld [$cd3b], a + ld a, [$cf13] + swap a + ld [$cf17], a + xor a + ld [$c206], a + ld hl, $ccd3 + ld de, RLEList_1a4e9 + call DecodeRLEList + dec a + ld [$cd38], a + ld hl, $cc97 + ld de, RLEList_1a4dc + call DecodeRLEList + ld hl, $d72e + res 7, [hl] + ld hl, $d730 + set 7, [hl] + ld a, $4 + ld [$cf10], a + ret - db 0 ; padding +RLEList_1a4dc: ; 1a4dc (6:64dc) + db $00, $05 + db $80, $01 + db $00, $05 + db $C0, $03 + db $40, $01 + db $E0, $01 + db $FF -VenusaurBaseStats: ; 38416 (e:4416) - db DEX_VENUSAUR ; pokedex id - db 80 ; base hp - db 82 ; base attack - db 83 ; base defense - db 80 ; base speed - db 100 ; base special +RLEList_1a4e9: ; 1a4e9 (6:64e9) + db $40, $02 + db $10, $03 + db $80, $05 + db $20, $01 + db $80, $06 + db $FF - db GRASS ; species type 1 - db POISON ; species type 2 +Func_1a4f4: ; 1a4f4 (6:64f4) + ld a, [$cd38] + and a + ret nz + ld a, $0 + ld [$cc4d], a + ld a, $11 + call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) + ld hl, $d730 + res 7, [hl] + ld hl, $d72e + res 7, [hl] + jp Func_314e - db 45 ; catch rate - db 208 ; base exp yield - db $77 ; sprite dimensions +PointerTable_1a510: ; 1a510 (6:6510) + dw Func_1a514 + dw Func_1a56b - dw VenusaurPicFront - dw VenusaurPicBack +Func_1a514: ; 1a514 (6:6514) + ld a, Bank(Func_9876) + ld [$c0ef], a + ld [$c0f0], a + ld a, MUSIC_MUSEUM_GUY + ld [$c0ee], a + call PlaySound + ld a, [$cf13] + swap a + ld [$cf17], a + call Func_3486 + ld hl, $ccd3 + ld de, RLEList_PewterMuseumPlayer + call DecodeRLEList + dec a + ld [$cd38], a + xor a + ld [$d12f], a + ld a, $4f + call Predef + ld hl, $cc97 + ld de, RLEList_PewterMuseumGuy + call DecodeRLEList + ld hl, $d72e + res 7, [hl] + ld a, $1 + ld [$cf10], a + ret - ; attacks known at lvl 0 - db TACKLE - db GROWL - db LEECH_SEED - db VINE_WHIP +RLEList_PewterMuseumPlayer: ; 1a559 (6:6559) + db $00, $01 + db $40, $03 + db $20, $0D + db $40, $06 + db $FF - db 3 ; growth rate +RLEList_PewterMuseumGuy: ; 1a562 (6:6562) + db $40, $06 + db $80, $0D + db $40, $03 + db $80, $01 + db $FF - ; learnset - db %10100100 - db %01000011 - db %00111000 - db %11000000 - db %00000011 - db %00001000 - db %00000110 +Func_1a56b: ; 1a56b (6:656b) + ld a, [$cd38] + and a + ret nz + ld hl, $d730 + res 7, [hl] + ld hl, $d72e + res 7, [hl] + jp Func_314e + +PointerTable_1a57d: ; 1a57d (6:657d) + dw Func_1a581 + dw Func_1a56b + +Func_1a581: ; 1a581 (6:6581) + ld a, Bank(Func_9876) + ld [$c0ef], a + ld [$c0f0], a + ld a, MUSIC_MUSEUM_GUY + ld [$c0ee], a + call PlaySound + ld a, [$cf13] + swap a + ld [$cf17], a + xor a + ld [$c206], a + ld hl, $ccd3 + ld de, RLEList_PewterGymPlayer + call DecodeRLEList + dec a + ld [$cd38], a + ld a, $1 + ld [$d12f], a + ld a, $4f + call Predef + ld hl, $cc97 + ld de, RLEList_PewterGymGuy + call DecodeRLEList + ld hl, $d72e + res 7, [hl] + ld hl, $d730 + set 7, [hl] + ld a, $1 + ld [$cf10], a + ret + +RLEList_PewterGymPlayer: ; 1a5cd (6:65cd) + db $00, $01 + db $10, $02 + db $80, $05 + db $20, $0B + db $40, $05 + db $20, $0F + db $FF + +RLEList_PewterGymGuy: ; 1a5da (6:65da) + db $00, $02 + db $80, $0F + db $40, $05 + db $80, $0B + db $00, $05 + db $C0, $03 + db $FF + +; XXX why would this function want to return on POKEMONTOWER_7? +Func_1a5e7: ; 1a5e7 (6:65e7) + ld a, [W_CURMAP] ; $d35e + cp POKEMONTOWER_7 + ret z + ld hl, RivalIDs ; $6605 + ld a, [wEngagedTrainerClass] + ld b, a +.loop + ld a, [hli] + cp $ff + jr z, .notRival + cp b + ret z + jr .loop +.notRival + ld a, [$cf13] + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + jp SetSpriteMovementBytesToFF + +RivalIDs: ; 1a605 (6:6605) + db SONY1 + $c8 + db SONY2 + $c8 + db SONY3 + $c8 + db $ff + +Func_1a609: ; 1a609 (6:6609) + push de + ld hl, DoorTileIDPointers ; $662c + ld a, [W_CURMAPTILESET] ; $d367 + ld de, $3 + call IsInArray + pop de + jr nc, .asm_1a62a + inc hl + ld a, [hli] + ld h, [hl] + ld l, a + FuncCoord 8, 9 ; $c45c + ld a, [Coord] + ld b, a +.asm_1a621 + ld a, [hli] + and a + jr z, .asm_1a62a + cp b + jr nz, .asm_1a621 + scf + ret +.asm_1a62a + and a + ret + +DoorTileIDPointers: ; 1a62c (6:662c) + db OVERWORLD + dw OverworldDoorTileIDs + db FOREST + dw ForestDoorTileIDs + db MART + dw MartDoorTileIDs + db HOUSE + dw HouseDoorTileIDs + db FOREST_GATE + dw TilesetMuseumDoorTileIDs + db MUSEUM + dw TilesetMuseumDoorTileIDs + db GATE + dw TilesetMuseumDoorTileIDs + db SHIP + dw ShipDoorTileIDs + db LOBBY + dw LobbyDoorTileIDs + db MANSION + dw MansionDoorTileIDs + db LAB + dw LabDoorTileIDs + db FACILITY + dw FacilityDoorTileIDs + db PLATEAU + dw PlateauDoorTileIDs + db $ff - db 0 ; padding +OverworldDoorTileIDs: ; 1a654 (6:6654) + db $1B,$58,$00 -CharmanderBaseStats: ; 38432 (e:4432) - db DEX_CHARMANDER ; pokedex id - db 39 ; base hp - db 52 ; base attack - db 43 ; base defense - db 65 ; base speed - db 50 ; base special +ForestDoorTileIDs: ; 1a657 (6:6657) + db $3a,$00 - db FIRE ; species type 1 - db FIRE ; species type 2 +MartDoorTileIDs: ; 1a659 (6:6659) + db $5e,$00 - db 45 ; catch rate - db 65 ; base exp yield - db $55 ; sprite dimensions +HouseDoorTileIDs: ; 1a65b (6:665b) + db $54,$00 - dw CharmanderPicFront - dw CharmanderPicBack +TilesetMuseumDoorTileIDs: ; 1a65d (6:665d) + db $3b,$00 - ; attacks known at lvl 0 - db SCRATCH - db GROWL - db 0 - db 0 +ShipDoorTileIDs: ; 1a65f (6:665f) + db $1e,$00 - db 3 ; growth rate +LobbyDoorTileIDs: ; 1a661 (6:6661) + db $1c,$38,$1a,$00 - ; learnset - db %10110101 - db %00000011 - db %01001111 - db %11001000 - db %11100011 - db %00001000 - db %00100110 +MansionDoorTileIDs: ; 1a665 (6:6665) + db $1a,$1c,$53,$00 - db 0 ; padding +LabDoorTileIDs: ; 1a669 (6:6669) + db $34,$00 -CharmeleonBaseStats: ; 3844e (e:444e) - db DEX_CHARMELEON ; pokedex id - db 58 ; base hp - db 64 ; base attack - db 58 ; base defense - db 80 ; base speed - db 65 ; base special +FacilityDoorTileIDs: ; 1a66b (6:666b) + db $43,$58,$1b,$00 - db FIRE ; species type 1 - db FIRE ; species type 2 +PlateauDoorTileIDs: ; 1a66f (6:666f) + db $3b,$1b,$00 - db 45 ; catch rate - db 142 ; base exp yield - db $66 ; sprite dimensions +Func_1a672: ; 1a672 (6:6672) + ld a, [$d736] + bit 6, a + ret nz + ld a, [W_CURMAPTILESET] ; $d367 + and a ; OVERWORLD + ret nz + ld a, $35 + call Predef ; indirect jump to Func_c586 (c586 (3:4586)) + ld a, [$c109] + ld b, a + FuncCoord 8, 9 ; $c45c + ld a, [Coord] + ld c, a + ld a, [$cfc6] + ld d, a + ld hl, LedgeTiles ; $66cf +.asm_1a691 + ld a, [hli] + cp $ff + ret z + cp b + jr nz, .asm_1a6a4 + ld a, [hli] + cp c + jr nz, .asm_1a6a5 + ld a, [hli] + cp d + jr nz, .asm_1a6a6 + ld a, [hl] + ld e, a + jr .asm_1a6a9 +.asm_1a6a4 + inc hl +.asm_1a6a5 + inc hl +.asm_1a6a6 + inc hl + jr .asm_1a691 +.asm_1a6a9 + ld a, [H_CURRENTPRESSEDBUTTONS] + and e + ret z + ld a, $ff + ld [wJoypadForbiddenButtonsMask], a + ld hl, $d736 + set 6, [hl] + call Func_3486 + ld a, e + ld [$ccd3], a + ld [$ccd4], a + ld a, $2 + ld [$cd38], a + call LoadHoppingShadowOAM + ld a, (SFX_02_4e - SFX_Headers_02) / 3 + call PlaySound + ret - dw CharmeleonPicFront - dw CharmeleonPicBack + ; (player direction) (tile player standing on) (ledge tile) (input required) +LedgeTiles: ; 1a6cf (6:66cf) + db $00,$2C,$37,$80 + db $00,$39,$36,$80 + db $00,$39,$37,$80 + db $08,$2C,$27,$20 + db $08,$39,$27,$20 + db $0C,$2C,$0D,$10 + db $0C,$2C,$1D,$10 + db $0C,$39,$0D,$10 + db $FF - ; attacks known at lvl 0 - db SCRATCH - db GROWL - db EMBER - db 0 +LoadHoppingShadowOAM: ; 1a6f0 (6:66f0) + ld hl, $8ff0 + ld de, LedgeHoppingShadow ; $6708 + ld bc, (BANK(LedgeHoppingShadow) << 8) + $01 + call CopyVideoDataDouble + ld a, $9 + ld bc, $5448 ; b, c = y, x coordinates of shadow + ld de, LedgeHoppingShadowOAM ; $6710 + call WriteOAMBlock + ret - db 3 ; growth rate +LedgeHoppingShadow: ; 1a708 (6:6708) + INCBIN "gfx/ledge_hopping_shadow.1bpp" - ; learnset - db %10110101 - db %00000011 - db %01001111 - db %11001000 - db %11100011 - db %00001000 - db %00100110 +LedgeHoppingShadowOAM: ; 1a710 (6:6710) + db $FF,$10,$FF,$20 + db $FF,$40,$FF,$60 - db 0 ; padding +SECTION "bank7",ROMX,BANK[$7] -CharizardBaseStats: ; 3846a (e:446a) - db DEX_CHARIZARD ; pokedex id - db 78 ; base hp - db 84 ; base attack - db 78 ; base defense - db 100 ; base speed - db 85 ; base special +CinnabarIsland_h: ; 0x1c000 to 0x1c022 (34 bytes) (bank=7) (id=8) + db OVERWORLD ; tileset + db CINNABAR_ISLAND_HEIGHT, CINNABAR_ISLAND_WIDTH ; dimensions (y, x) + dw CinnabarIslandBlocks, CinnabarIslandTextPointers, CinnabarIslandScript ; blocks, texts, scripts + db NORTH | EAST ; connections + NORTH_MAP_CONNECTION ROUTE_21, ROUTE_21_WIDTH, ROUTE_21_HEIGHT, 0, 0, ROUTE_21_WIDTH, Route21Blocks + EAST_MAP_CONNECTION ROUTE_20, ROUTE_20_WIDTH, 0, 0, ROUTE_20_HEIGHT, Route20Blocks, CINNABAR_ISLAND_WIDTH + dw CinnabarIslandObject ; objects - db FIRE ; species type 1 - db FLYING ; species type 2 +CinnabarIslandObject: ; 0x1c022 (size=71) + db $43 ; border tile - db 45 ; catch rate - db 209 ; base exp yield - db $77 ; sprite dimensions + db $5 ; warps + db $3, $6, $1, MANSION_1 + db $3, $12, $0, CINNABAR_GYM + db $9, $6, $0, CINNABAR_LAB_1 + db $b, $b, $0, CINNABAR_POKECENTER + db $b, $f, $0, CINNABAR_MART - dw CharizardPicFront - dw CharizardPicBack + db $5 ; signs + db $5, $9, $3 ; CinnabarIslandText3 + db $b, $10, $4 ; MartSignText + db $b, $c, $5 ; PokeCenterSignText + db $b, $9, $6 ; CinnabarIslandText6 + db $3, $d, $7 ; CinnabarIslandText7 - ; attacks known at lvl 0 - db SCRATCH - db GROWL - db EMBER - db LEER + db $2 ; people + db SPRITE_GIRL, $5 + 4, $c + 4, $fe, $2, $1 ; person + db SPRITE_GAMBLER, $6 + 4, $e + 4, $ff, $ff, $2 ; person - db 3 ; growth rate + ; warp-to + EVENT_DISP CINNABAR_ISLAND_WIDTH, $3, $6 ; MANSION_1 + EVENT_DISP CINNABAR_ISLAND_WIDTH, $3, $12 ; CINNABAR_GYM + EVENT_DISP CINNABAR_ISLAND_WIDTH, $9, $6 ; CINNABAR_LAB_1 + EVENT_DISP CINNABAR_ISLAND_WIDTH, $b, $b ; CINNABAR_POKECENTER + EVENT_DISP CINNABAR_ISLAND_WIDTH, $b, $f ; CINNABAR_MART - ; learnset - db %10110101 - db %01000011 - db %01001111 - db %11001110 - db %11100011 - db %00001000 - db %00100110 +CinnabarIslandBlocks: ; 1c069 (7:4069) + INCBIN "maps/cinnabarisland.blk" - db 0 ; padding +Route1_h: ; 0x1c0c3 to 0x1c0e5 (34 bytes) (bank=7) (id=12) + db OVERWORLD ; tileset + db ROUTE_1_HEIGHT, ROUTE_1_WIDTH ; dimensions (y, x) + dw Route1Blocks, Route1TextPointers, Route1Script ; blocks, texts, scripts + db NORTH | SOUTH ; connections + NORTH_MAP_CONNECTION VIRIDIAN_CITY, VIRIDIAN_CITY_WIDTH, VIRIDIAN_CITY_HEIGHT, -3, 2, VIRIDIAN_CITY_WIDTH - 4, ViridianCityBlocks + SOUTH_MAP_CONNECTION PALLET_TOWN, PALLET_TOWN_WIDTH, 0, 0, PALLET_TOWN_WIDTH, PalletTownBlocks, ROUTE_1_WIDTH, ROUTE_1_HEIGHT + dw Route1Object ; objects -SquirtleBaseStats: ; 38486 (e:4486) - db DEX_SQUIRTLE ; pokedex id - db 44 ; base hp - db 48 ; base attack - db 65 ; base defense - db 43 ; base speed - db 50 ; base special +Route1Object: ; 0x1c0e5 (size=19) + db $b ; border tile - db WATER ; species type 1 - db WATER ; species type 2 + db $0 ; warps - db 45 ; catch rate - db 66 ; base exp yield - db $55 ; sprite dimensions + db $1 ; signs + db $1b, $9, $3 ; Route1Text3 - dw SquirtlePicFront - dw SquirtlePicBack + db $2 ; people + db SPRITE_BUG_CATCHER, $18 + 4, $5 + 4, $fe, $1, $1 ; person + db SPRITE_BUG_CATCHER, $d + 4, $f + 4, $fe, $2, $2 ; person - ; attacks known at lvl 0 - db TACKLE - db TAIL_WHIP - db 0 - db 0 + ; warp-to (unused) + EVENT_DISP $4, $7, $2 - db 3 ; growth rate +Route1Blocks: ; 1c0fc (7:40fc) + INCBIN "maps/route1.blk" - ; learnset - db %10110001 - db %00111111 - db %00001111 - db %11001000 - db %10000011 - db %00001000 - db %00110010 +UndergroundPathEntranceRoute8Blocks: ; 1c1b0 (7:41b0) + INCBIN "maps/undergroundpathentranceroute8.blk" - db 0 ; padding +OaksLabBlocks: ; 1c1c0 (7:41c0) + INCBIN "maps/oakslab.blk" -WartortleBaseStats: ; 384a2 (e:44a2) - db DEX_WARTORTLE ; pokedex id - db 59 ; base hp - db 63 ; base attack - db 80 ; base defense - db 58 ; base speed - db 65 ; base special +Route16HouseBlocks: ; 1c1de (7:41de) +Route2HouseBlocks: ; 1c1de (7:41de) +SaffronHouse1Blocks: ; 1c1de (7:41de) +SaffronHouse2Blocks: ; 1c1de (7:41de) +VermilionHouse1Blocks: ; 1c1de (7:41de) +NameRaterBlocks: ; 1c1de (7:41de) +LavenderHouse1Blocks: ; 1c1de (7:41de) +LavenderHouse2Blocks: ; 1c1de (7:41de) +CeruleanHouse1Blocks: ; 1c1de (7:41de) +PewterHouse1Blocks: ; 1c1de (7:41de) +PewterHouse2Blocks: ; 1c1de (7:41de) +ViridianHouseBlocks: ; 0x1c1de 41DE size=16 + INCBIN "maps/viridianhouse.blk" - db WATER ; species type 1 - db WATER ; species type 2 +CeladonMansion5Blocks: ; 1c1ee (7:41ee) +SchoolBlocks: ; 0x1c1ee 41EE size=16 + INCBIN "maps/school.blk" - db 45 ; catch rate - db 143 ; base exp yield - db $66 ; sprite dimensions +CeruleanHouseTrashedBlocks: ; 0x1c1fe size=16 + INCBIN "maps/ceruleanhousetrashed.blk" - dw WartortlePicFront - dw WartortlePicBack +DiglettsCaveEntranceRoute11Blocks: ; 1c20e (7:420e) +DiglettsCaveRoute2Blocks: ; 0x1c20e size=16 + INCBIN "maps/diglettscaveroute2.blk" - ; attacks known at lvl 0 - db TACKLE - db TAIL_WHIP - db BUBBLE - db 0 +INCLUDE "text/monster_names.asm" - db 3 ; growth rate +Func_1c98a: ; 1c98a (7:498a) + call ClearScreen + call GoPAL_SET_CF1C + call LoadFontTilePatterns + call LoadTextBoxTilePatterns + ld hl, ClearSaveDataText + call PrintText + FuncCoord 14, 7 ; $c43a + ld hl, Coord + ld bc, $80f + ld a, $7 + ld [$d12c], a + ld a, $14 + ld [$d125], a + call DisplayTextBoxID + ld a, [wCurrentMenuItem] ; $cc26 + and a + jp z, InitGame + ld b, BANK(Func_73b6a) + ld hl, Func_73b6a + call Bankswitch + jp InitGame - ; learnset - db %10110001 - db %00111111 - db %00001111 - db %11001000 - db %10000011 - db %00001000 - db %00110010 +ClearSaveDataText: ; 1c9c1 (7:49c1) + TX_FAR _ClearSaveDataText + db "@" - db 0 ; padding +Func_1c9c6: ; 1c9c6 (7:49c6) + ld hl, WhichFloorText + call PrintText + ld hl, $cf7b + ld a, l + ld [$cf8b], a + ld a, h + ld [$cf8c], a + ld a, [wListScrollOffset] ; $cc36 + push af + xor a + ld [wCurrentMenuItem], a ; $cc26 + ld [wListScrollOffset], a ; $cc36 + ld [$cf93], a + ld a, $4 + ld [wListMenuID], a ; $cf94 + call DisplayListMenuID + pop bc + ld a, b + ld [wListScrollOffset], a ; $cc36 + ret c + ld hl, $d126 + set 7, [hl] + ld hl, $cc5b + ld a, [wWhichPokemon] ; $cf92 + add a + ld d, $0 + ld e, a + add hl, de + ld a, [hli] + ld b, a + ld a, [hl] + ld c, a + ld hl, $d3af + call Func_1ca0d -BlastoiseBaseStats: ; 384be (e:44be) - db DEX_BLASTOISE ; pokedex id - db 79 ; base hp - db 83 ; base attack - db 100 ; base defense - db 78 ; base speed - db 85 ; base special +Func_1ca0d: ; 1ca0d (7:4a0d) + inc hl + inc hl + ld a, b + ld [hli], a + ld a, c + ld [hli], a + ret - db WATER ; species type 1 - db WATER ; species type 2 +WhichFloorText: ; 1ca14 (7:4a14) + TX_FAR _WhichFloorText + db "@" - db 45 ; catch rate - db 210 ; base exp yield - db $77 ; sprite dimensions +CinnabarIslandScript: ; 1ca19 (7:4a19) + call EnableAutoTextBoxDrawing + ld hl, $d126 + set 5, [hl] + ld hl, $d796 + res 0, [hl] + ld hl, $d7a3 + res 1, [hl] + ld hl, CinnabarIslandScriptPointers + ld a, [W_CINNABARISLANDCURSCRIPT] + jp CallFunctionInTable - dw BlastoisePicFront - dw BlastoisePicBack +CinnabarIslandScriptPointers: ; 1ca34 (7:4a34) + dw CinnabarIslandScript0 + dw CinnabarIslandScript1 - ; attacks known at lvl 0 - db TACKLE - db TAIL_WHIP - db BUBBLE - db WATER_GUN - - db 3 ; growth rate - - ; learnset - db %10110001 - db %01111111 - db %00001111 - db %11001110 - db %10000011 - db %00001000 - db %00110010 - - db 0 ; padding - -CaterpieBaseStats: ; 384da (e:44da) - db DEX_CATERPIE ; pokedex id - db 45 ; base hp - db 30 ; base attack - db 35 ; base defense - db 45 ; base speed - db 20 ; base special - - db BUG ; species type 1 - db BUG ; species type 2 - - db 255 ; catch rate - db 53 ; base exp yield - db $55 ; sprite dimensions - - dw CaterpiePicFront - dw CaterpiePicBack - - ; attacks known at lvl 0 - db TACKLE - db STRING_SHOT - db 0 - db 0 +CinnabarIslandScript0: ; 1ca38 (7:4a38) + ld b, SECRET_KEY + call IsItemInBag + ret nz + ld a, [W_YCOORD] + cp $4 + ret nz + ld a, [W_XCOORD] + cp $12 + ret nz + ld a, $8 + ld [$d528], a + ld a, $8 + ld [$ff8c], a + call DisplayTextID + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, $1 + ld [$cd38], a + ld a, $80 + ld [$ccd3], a + call Func_3486 + xor a + ld [$c109], a + ld [wJoypadForbiddenButtonsMask], a + ld a, $1 + ld [W_CINNABARISLANDCURSCRIPT], a + ret - db 0 ; growth rate +CinnabarIslandScript1: ; 1ca73 (7:4a73) + ld a, [$cd38] + and a + ret nz + call Delay3 + ld a, $0 + ld [W_CINNABARISLANDCURSCRIPT], a + ret - ; learnset - db %00000000 - db %00000000 - db %00000000 - db %00000000 - db %00000000 - db %00000000 - db %00000000 +CinnabarIslandTextPointers: ; 1ca81 (7:4a81) + dw CinnabarIslandText1 + dw CinnabarIslandText2 + dw CinnabarIslandText3 + dw MartSignText + dw PokeCenterSignText + dw CinnabarIslandText6 + dw CinnabarIslandText7 + dw CinnabarIslandText8 - db 0 ; padding +CinnabarIslandText8: ; 1ca91 (7:4a91) + TX_FAR _CinnabarIslandText8 + db "@" -MetapodBaseStats: ; 384f6 (e:44f6) - db DEX_METAPOD ; pokedex id - db 50 ; base hp - db 20 ; base attack - db 55 ; base defense - db 30 ; base speed - db 25 ; base special +CinnabarIslandText1: ; 1ca96 (7:4a96) + TX_FAR _CinnabarIslandText1 + db "@" - db BUG ; species type 1 - db BUG ; species type 2 +CinnabarIslandText2: ; 1ca9b (7:4a9b) + TX_FAR _CinnabarIslandText2 + db "@" - db 120 ; catch rate - db 72 ; base exp yield - db $55 ; sprite dimensions +CinnabarIslandText3: ; 1caa0 (7:4aa0) + TX_FAR _CinnabarIslandText3 + db "@" - dw MetapodPicFront - dw MetapodPicBack +CinnabarIslandText6: ; 1caa5 (7:4aa5) + TX_FAR _CinnabarIslandText6 + db "@" - ; attacks known at lvl 0 - db HARDEN - db 0 - db 0 - db 0 +CinnabarIslandText7: ; 1caaa (7:4aaa) + TX_FAR _CinnabarIslandText7 + db "@" - db 0 ; growth rate +Route1Script: ; 1caaf (7:4aaf) + jp EnableAutoTextBoxDrawing - ; learnset - db %00000000 - db %00000000 - db %00000000 - db %00000000 - db %00000000 - db %00000000 - db %00000000 +Route1TextPointers: ; 1cab2 (7:4ab2) + dw Route1Text1 + dw Route1Text2 + dw Route1Text3 - db 0 ; padding +Route1Text1: ; 1cab8 (7:4ab8) + db $08 ; asm + ld hl, $d7bf + bit 0, [hl] + set 0, [hl] + jr nz, .asm_02840 ; 0x1cac0 + ld hl, Route1ViridianMartSampleText + call PrintText + ld bc, (POTION << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, UnnamedText_1cae8 ; $4ae8 + jr .asm_46d43 ; 0x1cad3 +.BagFull + ld hl, UnnamedText_1caf3 ; $4af3 + jr .asm_46d43 ; 0x1cad8 +.asm_02840 ; 0x1cada + ld hl, UnnamedText_1caee ; $4aee +.asm_46d43 ; 0x1cadd + call PrintText + jp TextScriptEnd -ButterfreeBaseStats: ; 38512 (e:4512) - db DEX_BUTTERFREE ; pokedex id - db 60 ; base hp - db 45 ; base attack - db 50 ; base defense - db 70 ; base speed - db 80 ; base special +Route1ViridianMartSampleText: ; 1cae3 (7:4ae3) + TX_FAR _Route1ViridianMartSampleText + db "@" - db BUG ; species type 1 - db FLYING ; species type 2 +UnnamedText_1cae8: ; 1cae8 (7:4ae8) + TX_FAR _UnnamedText_1cae8 + db $0b,"@" - db 45 ; catch rate - db 160 ; base exp yield - db $77 ; sprite dimensions +UnnamedText_1caee: ; 1caee (7:4aee) + TX_FAR _UnnamedText_1caee + db "@" - dw ButterfreePicFront - dw ButterfreePicBack +UnnamedText_1caf3: ; 1caf3 (7:4af3) + TX_FAR _UnnamedText_1caf3 + db "@" - ; attacks known at lvl 0 - db CONFUSION - db 0 - db 0 - db 0 +Route1Text2: ; 1caf8 (7:4af8) + TX_FAR _Route1Text2 + db "@" - db 0 ; growth rate +Route1Text3: ; 1cafd (7:4afd) + TX_FAR _Route1Text3 + db "@" - ; learnset - db %00101010 - db %01000011 - db %00111000 - db %11110000 - db %01000011 - db %00101000 - db %00000010 +OaksLab_h: ; 0x1cb02 to 0x1cb0e (12 bytes) (bank=7) (id=40) + db DOJO ; tileset + db OAKS_LAB_HEIGHT, OAKS_LAB_WIDTH ; dimensions (y, x) + dw OaksLabBlocks, OaksLabTextPointers, OaksLabScript ; blocks, texts, scripts + db $00 ; connections + dw OaksLabObject ; objects - db 0 ; padding +OaksLabScript: ; 1cb0e (7:4b0e) + ld a, [$d74b] + bit 6, a + call nz, OaksLabScript_1d076 + ld a, $1 + ld [$cf0c], a + xor a + ld [$cc3c], a + ld hl, OaksLabScriptPointers + ld a, [W_OAKSLABCURSCRIPT] + jp CallFunctionInTable -WeedleBaseStats: ; 3852e (e:452e) - db DEX_WEEDLE ; pokedex id - db 40 ; base hp - db 35 ; base attack - db 30 ; base defense - db 50 ; base speed - db 20 ; base special +OaksLabScriptPointers: ; 1cb28 (7:4b28) + dw OaksLabScript0 + dw OaksLabScript1 + dw OaksLabScript2 + dw OaksLabScript3 + dw OaksLabScript4 + dw OaksLabScript5 + dw OaksLabScript6 + dw OaksLabScript7 + dw OaksLabScript8 + dw OaksLabScript9 + dw OaksLabScript10 + dw OaksLabScript11 + dw OaksLabScript12 + dw OaksLabScript13 + dw OaksLabScript14 + dw OaksLabScript15 + dw OaksLabScript16 + dw OaksLabScript17 + dw OaksLabScript18 - db BUG ; species type 1 - db POISON ; species type 2 +OaksLabScript0: ; 1cb4e (7:4b4e) + ld a, [$d74b] + bit 7, a + ret z + ld a, [$cf10] + and a + ret nz + ld a, $31 + ld [$cc4d], a + ld a, $15 + call Predef + ld hl, $d72e + res 4, [hl] - db 255 ; catch rate - db 52 ; base exp yield - db $55 ; sprite dimensions + ld a, $1 + ld [W_OAKSLABCURSCRIPT], a + ret - dw WeedlePicFront - dw WeedlePicBack +OaksLabScript1: ; 1cb6e (7:4b6e) + ld a, $8 + ld [$ff8c], a + ld de, OakEntryMovement + call MoveSprite - ; attacks known at lvl 0 - db POISON_STING - db STRING_SHOT - db 0 - db 0 + ld a, $2 + ld [W_OAKSLABCURSCRIPT], a + ret - db 0 ; growth rate +OakEntryMovement: ; 1cb7e (7:4b7e) + db $40,$40,$40,$FF - ; learnset - db %00000000 - db %00000000 - db %00000000 - db %00000000 - db %00000000 - db %00000000 - db %00000000 +OaksLabScript2: ; 1cb82 (7:4b82) + ld a, [$d730] + bit 0, a + ret nz + ld a, $31 + ld [$cc4d], a + ld a, $11 + call Predef + ld a, $2e + ld [$cc4d], a + ld a, $15 + call Predef - db 0 ; padding + ld a, $3 + ld [W_OAKSLABCURSCRIPT], a + ret -KakunaBaseStats: ; 3854a (e:454a) - db DEX_KAKUNA ; pokedex id - db 45 ; base hp - db 25 ; base attack - db 50 ; base defense - db 35 ; base speed - db 25 ; base special +OaksLabScript3: ; 1cba2 (7:4ba2) + call Delay3 + ld hl, $ccd3 + ld de, PlayerEntryMovementRLE + call DecodeRLEList + dec a + ld [$cd38], a + call Func_3486 + ld a, $1 + ld [$ff8c], a + xor a + ld [$ff8d], a + call Func_34a6 ; face object + ld a, $5 + ld [$ff8c], a + xor a + ld [$ff8d], a + call Func_34a6 ; face object - db BUG ; species type 1 - db POISON ; species type 2 + ld a, $4 + ld [W_OAKSLABCURSCRIPT], a + ret - db 120 ; catch rate - db 71 ; base exp yield - db $55 ; sprite dimensions +PlayerEntryMovementRLE: ; 1cbcf (7:4bcf) + db $40, $8, $ff - dw KakunaPicFront - dw KakunaPicBack +OaksLabScript4: ; 1cbd2 (7:4bd2) + ld a, [$cd38] + and a + ret nz + ld hl, $d747 + set 0, [hl] + ld hl, $d74b + set 0, [hl] + ld a, $1 + ld [$ff8c], a + ld a, $4 + ld [$ff8d], a + call Func_34a6 ; face object + call UpdateSprites + ld hl, W_FLAGS_D733 + res 1, [hl] + call Func_2307 - ; attacks known at lvl 0 - db HARDEN - db 0 - db 0 - db 0 + ld a, $5 + ld [W_OAKSLABCURSCRIPT], a + ret - db 0 ; growth rate +OaksLabScript5: ; 1cbfd (7:4bfd) + ld a, $fc + ld [wJoypadForbiddenButtonsMask], a + ld a, $11 + ld [$ff8c], a + call DisplayTextID + call Delay3 + ld a, $12 + ld [$ff8c], a + call DisplayTextID + call Delay3 + ld a, $13 + ld [$ff8c], a + call DisplayTextID + call Delay3 + ld a, $14 + ld [$ff8c], a + call DisplayTextID + ld hl, $d74b + set 1, [hl] + xor a + ld [wJoypadForbiddenButtonsMask], a - ; learnset - db %00000000 - db %00000000 - db %00000000 - db %00000000 - db %00000000 - db %00000000 - db %00000000 + ld a, $6 + ld [W_OAKSLABCURSCRIPT], a + ret - db 0 ; padding +OaksLabScript6: ; 1cc36 (7:4c36) + ld a, [W_YCOORD] + cp $6 + ret nz + ld a, $5 + ld [$ff8c], a + xor a + ld [$ff8d], a + call Func_34a6 ; face object + ld a, $1 + ld [$ff8c], a + xor a + ld [$ff8d], a + call Func_34a6 ; face object + call UpdateSprites + ld a, $c + ld [$ff8c], a + call DisplayTextID + ld a, $1 + ld [$cd38], a + ld a, $40 + ld [$ccd3], a + call Func_3486 + ld a, $8 + ld [$d528], a -BeedrillBaseStats: ; 38566 (e:4566) - db DEX_BEEDRILL ; pokedex id - db 65 ; base hp - db 80 ; base attack - db 40 ; base defense - db 75 ; base speed - db 45 ; base special + ld a, $7 + ld [W_OAKSLABCURSCRIPT], a + ret - db BUG ; species type 1 - db POISON ; species type 2 +OaksLabScript7: ; 1cc72 (7:4c72) + ld a, [$cd38] + and a + ret nz + call Delay3 - db 45 ; catch rate - db 159 ; base exp yield - db $77 ; sprite dimensions + ld a, $6 + ld [W_OAKSLABCURSCRIPT], a + ret - dw BeedrillPicFront - dw BeedrillPicBack +OaksLabScript8: ; 1cc80 (7:4c80) + ld a, [W_PLAYERSTARTER] + cp CHARMANDER + jr z, .Charmander ; 0x1cc85 $6 + cp SQUIRTLE + jr z, .Squirtle ; 0x1cc89 $1d + jr .Bulbasaur ; 0x1cc8b $38 +.Charmander + ld de, .MiddleBallMovement1 + ld a, [W_YCOORD] + cp $4 ; is the player standing below the table? + jr z, .asm_1ccf3 ; 0x1cc95 $5c + ld de, .MiddleBallMovement2 + jr .asm_1ccf3 ; 0x1cc9a $57 - ; attacks known at lvl 0 - db FURY_ATTACK - db 0 - db 0 - db 0 +.MiddleBallMovement1 + db 0,0,$C0,$C0,$C0,$40,$FF +.MiddleBallMovement2 + db 0,$C0,$C0,$C0,$FF - db 0 ; growth rate +.Squirtle + ld de, .RightBallMovement1 + ld a, [W_YCOORD] + cp $4 ; is the player standing below the table? + jr z, .asm_1ccf3 ; 0x1ccb0 $41 + ld de, .RightBallMovement2 + jr .asm_1ccf3 ; 0x1ccb5 $3c - ; learnset - db %00100100 - db %01000011 - db %00011000 - db %11000000 - db %11000011 - db %00001000 - db %00000110 +.RightBallMovement1 + db 0,0,$C0,$C0,$C0,$C0,$40,$FF +.RightBallMovement2 + db 0,$C0,$C0,$C0,$C0,$FF - db 0 ; padding +.Bulbasaur + ld de, .LeftBallMovement1 + ld a, [W_XCOORD] + cp $9 ; is the player standing to the right of the table? + jr nz, .asm_1ccf3 ; 0x1cccd $24 + push hl + ld a, $1 + ld [$ff8c], a + ld a, $4 + ld [$ff8b], a + call Func_34fc + push hl + ld [hl], $4c + inc hl + inc hl + ld [hl], $0 + pop hl + inc h + ld [hl], $8 + inc hl + ld [hl], $9 + ld de, .LeftBallMovement2 ; the rival is not currently onscreen, so account for that + pop hl + jr .asm_1ccf3 ; 0x1cced $4 -PidgeyBaseStats: ; 38582 (e:4582) - db DEX_PIDGEY ; pokedex id - db 40 ; base hp - db 45 ; base attack - db 40 ; base defense - db 56 ; base speed - db 35 ; base special +.LeftBallMovement1 + db $00,$C0 ; not yet terminated! +.LeftBallMovement2 + db $C0,$FF - db NORMAL ; species type 1 - db FLYING ; species type 2 +.asm_1ccf3 + ld a, $1 + ld [$ff8c], a + call MoveSprite - db 255 ; catch rate - db 55 ; base exp yield - db $55 ; sprite dimensions + ld a, $9 + ld [W_OAKSLABCURSCRIPT], a + ret - dw PidgeyPicFront - dw PidgeyPicBack +OaksLabScript9: ; 1cd00 (7:4d00) + ld a, [$d730] + bit 0, a + ret nz + ld a, $fc + ld [wJoypadForbiddenButtonsMask], a + ld a, $1 + ld [$ff8c], a + ld a, $4 + ld [$ff8d], a + call Func_34a6 ; face object + ld a, $d + ld [$ff8c], a + call DisplayTextID + ld a, [$cd3e] + cp $2 + jr nz, .asm_1cd28 ; 0x1cd22 $4 + ld a, $2b + jr .asm_1cd32 ; 0x1cd26 $a +.asm_1cd28 + cp $3 + jr nz, .asm_1cd30 ; 0x1cd2a $4 + ld a, $2c + jr .asm_1cd32 ; 0x1cd2e $2 +.asm_1cd30 + ld a, $2d +.asm_1cd32 + ld [$cc4d], a + ld a, $11 + call Predef + call Delay3 + ld a, [$cd3d] + ld [W_RIVALSTARTER], a + ld [$cf91], a + ld [$d11e], a + call GetMonName + ld a, $1 + ld [$ff8c], a + ld a, $4 + ld [$ff8d], a + call Func_34a6 ; face object + ld a, $e + ld [$ff8c], a + call DisplayTextID + ld hl, $d74b + set 2, [hl] + xor a + ld [wJoypadForbiddenButtonsMask], a - ; attacks known at lvl 0 - db GUST - db 0 - db 0 - db 0 + ld a, $a + ld [W_OAKSLABCURSCRIPT], a + ret - db 3 ; growth rate +OaksLabScript10: ; 1cd6d (7:4d6d) + ld a, [W_YCOORD] + cp $6 + ret nz + ld a, $1 + ld [$ff8c], a + xor a + ld [$ff8d], a + call Func_34a6 ; face object + ld a, $8 + ld [$d528], a + ld c, BANK(Music_MeetRival) + ld a, MUSIC_MEET_RIVAL + call PlayMusic ; play music + ld a, $f + ld [$ff8c], a + call DisplayTextID + ld a, $1 + ld [$ff9b], a + ld a, $1 + swap a + ld [$ff95], a + ld a, $22 + call Predef + ld a, [$ff95] + dec a + ld [$ff95], a + ld a, $20 + call Predef + ld de, $cc97 + ld a, $1 + ld [$ff8c], a + call MoveSprite - ; learnset - db %00101010 - db %00000011 - db %00001000 - db %11000000 - db %01000011 - db %00001100 - db %00001010 + ld a, $b + ld [W_OAKSLABCURSCRIPT], a + ret - db 0 ; padding +OaksLabScript11: ; 1cdb9 (7:4db9) + ld a, [$d730] + bit 0, a + ret nz -PidgeottoBaseStats: ; 3859e (e:459e) - db DEX_PIDGEOTTO ; pokedex id - db 63 ; base hp - db 60 ; base attack - db 55 ; base defense - db 71 ; base speed - db 50 ; base special + ; define which team rival uses, and fight it + ld a, SONY1 + $C8 + ld [W_CUROPPONENT], a + ld a, [W_RIVALSTARTER] + cp SQUIRTLE + jr nz, .NotSquirtle ; 0x1cdc9 $4 + ld a, $1 + jr .done ; 0x1cdcd $a +.NotSquirtle + cp BULBASAUR + jr nz, .Charmander ; 0x1cdd1 $4 + ld a, $2 + jr .done ; 0x1cdd5 $2 +.Charmander + ld a, $3 +.done + ld [W_TRAINERNO], a + ld a, $1 + ld [$cf13], a + call Func_32ef + ld hl, UnnamedText_1d3be + ld de, UnnamedText_1d3c3 + call PreBattleSaveRegisters + ld hl, $d72d + set 6, [hl] + set 7, [hl] + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $8 + ld [$d528], a + ld a, $c + ld [W_OAKSLABCURSCRIPT], a + ret - db NORMAL ; species type 1 - db FLYING ; species type 2 +OaksLabScript12: ; 1ce03 (7:4e03) + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld a, $8 + ld [$d528], a + call UpdateSprites + ld a, $1 + ld [$cf13], a + call Func_32f9 + ld a, $1 + ld [$ff8c], a + xor a + ld [$ff8d], a + call Func_34a6 ; face object + ld a, $7 + call Predef + ld hl, $d74b + set 3, [hl] - db 120 ; catch rate - db 113 ; base exp yield - db $66 ; sprite dimensions + ld a, $d + ld [W_OAKSLABCURSCRIPT], a + ret - dw PidgeottoPicFront - dw PidgeottoPicBack +OaksLabScript13: ; 1ce32 (7:4e32) + ld c, $14 + call DelayFrames + ld a, $10 + ld [$ff8c], a + call DisplayTextID + ld b, BANK(Music_RivalAlternateStart) + ld hl, Music_RivalAlternateStart + call Bankswitch + ld a, $1 + ld [$ff8c], a + ld de, .RivalExitMovement + call MoveSprite + ld a, [W_XCOORD] + cp $4 + ; move left or right depending on where the player is standing + jr nz, .asm_1ce5b ; 0x1ce55 $4 + ld a, $c0 + jr .asm_1ce5d ; 0x1ce59 $2 +.asm_1ce5b + ld a, $80 +.asm_1ce5d + ld [$cc5b], a - ; attacks known at lvl 0 - db GUST - db SAND_ATTACK - db 0 - db 0 + ld a, $e + ld [W_OAKSLABCURSCRIPT], a + ret - db 3 ; growth rate +.RivalExitMovement + db $E0,$00,$00,$00,$00,$00,$FF - ; learnset - db %00101010 - db %00000011 - db %00001000 - db %11000000 - db %01000011 - db %00001100 - db %00001010 - - db 0 ; padding - -PidgeotBaseStats: ; 385ba (e:45ba) - db DEX_PIDGEOT ; pokedex id - db 83 ; base hp - db 80 ; base attack - db 75 ; base defense - db 91 ; base speed - db 70 ; base special - - db NORMAL ; species type 1 - db FLYING ; species type 2 - - db 45 ; catch rate - db 172 ; base exp yield - db $77 ; sprite dimensions - - dw PidgeotPicFront - dw PidgeotPicBack - - ; attacks known at lvl 0 - db GUST - db SAND_ATTACK - db QUICK_ATTACK - db 0 +OaksLabScript14: ; 1ce6d (7:4e6d) + ld a, [$d730] + bit 0, a + jr nz, .asm_1ce8c ; 0x1ce72 $18 + ld a, $2a + ld [$cc4d], a + ld a, $11 + call Predef + xor a + ld [wJoypadForbiddenButtonsMask], a + call Func_2307 ; reset to map music + ld a, $12 + ld [W_OAKSLABCURSCRIPT], a + jr .done ; 0x1ce8a $23 +.asm_1ce8c + ld a, [$cf0f] + cp $5 + jr nz, .asm_1cea8 ; 0x1ce91 $15 + ld a, [W_XCOORD] + cp $4 + jr nz, .asm_1cea1 ; 0x1ce98 $7 + ld a, $c + ld [$c109], a + jr .done ; 0x1ce9f $e +.asm_1cea1 + ld a, $8 + ld [$c109], a + jr .done ; 0x1cea6 $7 +.asm_1cea8 + cp $4 + ret nz + xor a + ld [$c109], a +.done + ret - db 3 ; growth rate +OaksLabScript15: ; 1ceb0 (7:4eb0) + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + call EnableAutoTextBoxDrawing + ld a, $ff + ld [$c0ee], a + call PlaySound + ld b, BANK(Music_RivalAlternateStart) + ld hl, Music_RivalAlternateStart + call Bankswitch + ld a, $15 + ld [$ff8c], a + call DisplayTextID + call OaksLabScript_1d02b + ld a, $2a + ld [$cc4d], a + ld a, $15 + call Predef + ld a, [$cd37] + ld [$d157], a + ld b, $0 + ld c, a + ld hl, $cc97 + ld a, $40 + call FillMemory + ld [hl], $ff + ld a, $1 + ld [$ff8c], a + ld de, $cc97 + call MoveSprite - ; learnset - db %00101010 - db %01000011 - db %00001000 - db %11000000 - db %01000011 - db %00001100 - db %00001010 + ld a, $10 + ld [W_OAKSLABCURSCRIPT], a + ret - db 0 ; padding +OaksLabScript_1cefd ; 1cefd (7:4efd) + ld a, $1 + ld [$ff8c], a + ld a, $4 + ld [$ff8d], a + call Func_34a6 ; face object + ld a, $8 + ld [$ff8c], a + xor a + ld [$ff8d], a + jp Func_34a6 ; face object -RattataBaseStats: ; 385d6 (e:45d6) - db DEX_RATTATA ; pokedex id - db 30 ; base hp - db 56 ; base attack - db 35 ; base defense - db 72 ; base speed - db 25 ; base special +OaksLabScript16: ; 1cf12 (7:4f12) + ld a, [$d730] + bit 0, a + ret nz + call EnableAutoTextBoxDrawing + call Func_2307 + ld a, $fc + ld [wJoypadForbiddenButtonsMask], a + call OaksLabScript_1cefd + ld a, $16 + ld [$ff8c], a + call DisplayTextID + call DelayFrame + call OaksLabScript_1cefd + ld a, $17 + ld [$ff8c], a + call DisplayTextID + call DelayFrame + call OaksLabScript_1cefd + ld a, $18 + ld [$ff8c], a + call DisplayTextID + call DelayFrame + ld a, $19 + ld [$ff8c], a + call DisplayTextID + call Delay3 + ld a, $2f + ld [$cc4d], a + ld a, $11 + call Predef + ld a, $30 + ld [$cc4d], a + ld a, $11 + call Predef + call OaksLabScript_1cefd + ld a, $1a + ld [$ff8c], a + call DisplayTextID + ld a, $1 + ld [$ff8c], a + ld a, $c + ld [$ff8d], a + call Func_34a6 ; face object + call Delay3 + ld a, $1b + ld [$ff8c], a + call DisplayTextID + ld hl, $d74b + set 5, [hl] + ld hl, $d74e + set 0, [hl] + ld a, $1 + ld [$cc4d], a + ld a, $11 + call Predef + ld a, $2 + ld [$cc4d], a + ld a, $15 + call Predef + ld a, [$d157] + ld b, $0 + ld c, a + ld hl, $cc97 + xor a + call FillMemory + ld [hl], $ff + ld a, $ff + ld [$c0ee], a + call PlaySound + ld b, BANK(Music_RivalAlternateStart) + ld hl, Music_RivalAlternateStart + call Bankswitch + ld a, $1 + ld [$ff8c], a + ld de, $cc97 + call MoveSprite - db NORMAL ; species type 1 - db NORMAL ; species type 2 + ld a, $11 + ld [W_OAKSLABCURSCRIPT], a + ret - db 255 ; catch rate - db 57 ; base exp yield - db $55 ; sprite dimensions +OaksLabScript17: ; 1cfd4 (7:4fd4) + ld a, [$d730] + bit 0, a + ret nz + call Func_2307 + ld a, $2a + ld [$cc4d], a + ld a, $11 + call Predef + ld hl, $d7eb + set 0, [hl] + res 1, [hl] + set 7, [hl] + ld a, $22 + ld [$cc4d], a + ld a, $15 + call Predef + ld a, $5 + ld [W_PALLETTOWNCURSCRIPT], a + xor a + ld [wJoypadForbiddenButtonsMask], a - dw RattataPicFront - dw RattataPicBack + ld a, $12 + ld [W_OAKSLABCURSCRIPT], a + ret - ; attacks known at lvl 0 - db TACKLE - db TAIL_WHIP - db 0 - db 0 +OaksLabScript18: ; 1d009 (7:5009) + ret - db 0 ; growth rate +OaksLabScript_1d00a: ; 1d00a (7:500a) + ld hl, wBagItems + ld bc, $0000 +.asm_1d010 + ld a, [hli] + cp $ff + ret z + cp OAKS_PARCEL + jr z, .GotParcel ; 0x1d016 $4 + inc hl + inc c + jr .asm_1d010 ; 0x1d01a $f4 +.GotParcel + ld hl, $d31d + ld a, c + ld [wWhichPokemon], a + ld a, $1 + ld [$cf96], a + jp RemoveItemFromInventory - ; learnset - db %10100000 - db %00101111 - db %10001000 - db %11001001 - db %11000010 - db %00001000 - db %00000010 +OaksLabScript_1d02b: ; 1d02b (7:502b) + ld a, $7c + ld [$ffeb], a + ld a, $8 + ld [$ffee], a + ld a, [W_YCOORD] + cp $3 + jr nz, .asm_1d045 ; 0x1d038 $b + ld a, $4 + ld [$cd37], a + ld a, $30 + ld b, $b + jr .asm_1d068 ; 0x1d043 $23 +.asm_1d045 + cp $1 + jr nz, .asm_1d054 ; 0x1d047 $b + ld a, $2 + ld [$cd37], a + ld a, $30 + ld b, $9 + jr .asm_1d068 ; 0x1d052 $14 +.asm_1d054 + ld a, $3 + ld [$cd37], a + ld b, $a + ld a, [W_XCOORD] + cp $4 + jr nz, .asm_1d066 ; 0x1d060 $4 + ld a, $40 + jr .asm_1d068 ; 0x1d064 $2 +.asm_1d066 + ld a, $20 +.asm_1d068 + ld [$ffec], a + ld a, b + ld [$ffed], a + ld a, $1 + ld [$cf13], a + call Func_32f9 + ret - db 0 ; padding +OaksLabScript_1d076: ; 1d076 (7:5076) + ld hl, OaksLabTextPointers + $36 ; $50b8 ; starts at OaksLabText28 + ld a, l + ld [W_MAPTEXTPTR], a + ld a, h + ld [W_MAPTEXTPTR+1], a + ret -RaticateBaseStats: ; 385f2 (e:45f2) - db DEX_RATICATE ; pokedex id - db 55 ; base hp - db 81 ; base attack - db 60 ; base defense - db 97 ; base speed - db 50 ; base special +OaksLabTextPointers: ; 1d082 (7:5082) + dw OaksLabText1 + dw OaksLabText2 + dw OaksLabText3 + dw OaksLabText4 + dw OaksLabText5 + dw OaksLabText6 + dw OaksLabText7 + dw OaksLabText8 + dw OaksLabText9 + dw OaksLabText10 + dw OaksLabText11 + dw OaksLabText12 + dw OaksLabText13 + dw OaksLabText14 + dw OaksLabText15 + dw OaksLabText16 + dw OaksLabText17 + dw OaksLabText18 + dw OaksLabText19 + dw OaksLabText20 + dw OaksLabText21 + dw OaksLabText22 + dw OaksLabText23 + dw OaksLabText24 + dw OaksLabText25 + dw OaksLabText26 + dw OaksLabText27 + dw OaksLabText28 + dw OaksLabText29 + dw OaksLabText30 + dw OaksLabText31 + dw OaksLabText32 + dw OaksLabText33 + dw OaksLabText34 + dw OaksLabText35 + dw OaksLabText36 + dw OaksLabText37 + dw OaksLabText38 - db NORMAL ; species type 1 - db NORMAL ; species type 2 +OaksLabText28: ; 1d0ce (7:50ce) +OaksLabText1: ; 1d0ce (7:50ce) + db $08 ; asm + ld a, [$d74b] + bit 0, a + jr nz, .asm_1d0de ; 0x1d0d4 + ld hl, OaksLabGaryText1 + call PrintText + jr .asm_1d0f0 ; 0x1d0dc +.asm_1d0de ; 0x1d0de + bit 2, a + jr nz, .asm_1d0ea ; 0x1d0e0 + ld hl, OaksLabText40 + call PrintText + jr .asm_1d0f0 ; 0x1d0e8 +.asm_1d0ea ; 0x1d0ea + ld hl, OaksLabText41 + call PrintText +.asm_1d0f0 ; 0x1d0f0 + jp TextScriptEnd - db 90 ; catch rate - db 116 ; base exp yield - db $66 ; sprite dimensions +OaksLabGaryText1: ; 1d0f3 (7:50f3) + TX_FAR _OaksLabGaryText1 + db "@" - dw RaticatePicFront - dw RaticatePicBack +OaksLabText40: ; 1d0f8 (7:50f8) + TX_FAR _OaksLabText40 + db "@" - ; attacks known at lvl 0 - db TACKLE - db TAIL_WHIP - db QUICK_ATTACK - db 0 +OaksLabText41: ; 1d0fd (7:50fd) + TX_FAR _OaksLabText41 + db "@" - db 0 ; growth rate +OaksLabText29: ; 1d102 (7:5102) +OaksLabText2: ; 1d102 (7:5102) + db $8 + ld a, SQUIRTLE + ld [$cd3d], a + ld a, $3 + ld [$cd3e], a + ld a, CHARMANDER + ld b, $2 + jr OaksLabScript_1d133 ; 0x1d111 $20 - ; learnset - db %10100000 - db %01111111 - db %10001000 - db %11001001 - db %11000010 - db %00001000 - db %00000010 +OaksLabText30: ; 1d113 (7:5113) +OaksLabText3: ; 1d113 (7:5113) + db $8 + ld a, BULBASAUR + ld [$cd3d], a + ld a, $4 + ld [$cd3e], a + ld a, SQUIRTLE + ld b, $3 + jr OaksLabScript_1d133 ; 0x1d122 $f - db 0 ; padding +OaksLabText31: ; 1d124 (7:5124) +OaksLabText4: ; 1d124 (7:5124) + db $8 + ld a, CHARMANDER + ld [$cd3d], a + ld a, $2 + ld [$cd3e], a + ld a, BULBASAUR + ld b, $4 -SpearowBaseStats: ; 3860e (e:460e) - db DEX_SPEAROW ; pokedex id - db 40 ; base hp - db 60 ; base attack - db 30 ; base defense - db 70 ; base speed - db 31 ; base special +OaksLabScript_1d133: ; 1d133 (7:5133) + ld [$cf91], a + ld [$d11e], a + ld a, b + ld [$cf13], a + ld a, [$d74b] + bit 2, a + jp nz, OaksLabScript_1d22d + bit 1, a + jr nz, OaksLabScript_1d157 ; 0x1d147 $e + ld hl, OaksLabText39 + call PrintText + jp TextScriptEnd - db NORMAL ; species type 1 - db FLYING ; species type 2 +OaksLabText39: ; 1d152 (7:5152) + TX_FAR _OaksLabText39 + db "@" - db 255 ; catch rate - db 58 ; base exp yield - db $55 ; sprite dimensions +OaksLabScript_1d157: ; 1d157 (7:5157) + ld a, $5 + ld [$ff8c], a + ld a, $9 + ld [$ff8b], a + call Func_34fc + ld [hl], $0 + ; manually fixed some disassembler issues around here + ld a, $1 + ld [$FF8c], a + ld a, $9 + ld [$ff8b], a + call Func_34fc + ld [hl], $c + ld hl, $d730 + set 6, [hl] + ld a, $46 + call Predef + ld hl, $d730 + res 6, [hl] + call ReloadMapData + ld c, $a + call DelayFrames + ld a, [$cf13] + cp $2 + jr z, OaksLabLookAtCharmander + cp $3 + jr z, OaksLabLookAtSquirtle + jr OaksLabLookAtBulbasaur - dw SpearowPicFront - dw SpearowPicBack +OaksLabLookAtCharmander ; 0x1d195 + ld hl, OaksLabCharmanderText + jr OaksLabMonChoiceMenu +OaksLabCharmanderText: ; 1d19a (7:519a) + TX_FAR _OaksLabCharmanderText + db "@" - ; attacks known at lvl 0 - db PECK - db GROWL - db 0 - db 0 +OaksLabLookAtSquirtle: ; 1d19f (7:519f) + ld hl, OaksLabSquirtleText + jr OaksLabMonChoiceMenu +OaksLabSquirtleText: ; 1d1a4 (7:51a4) + TX_FAR _OaksLabSquirtleText + db "@" - db 0 ; growth rate +OaksLabLookAtBulbasaur: ; 1d1a9 (7:51a9) + ld hl, OaksLabBulbasaurText + jr OaksLabMonChoiceMenu +OaksLabBulbasaurText: ; 1d1ae (7:51ae) + TX_FAR _OaksLabBulbasaurText + db "@" - ; learnset - db %00101010 - db %00000011 - db %00001000 - db %11000000 - db %01000010 - db %00001100 - db %00001010 +OaksLabMonChoiceMenu: ; 1d1b3 (7:51b3) + call PrintText + ld a, $1 + ld [$cc3c], a + call YesNoChoice ; yes/no menu + ld a, [$cc26] + and a + jr nz, OaksLabMonChoiceEnd + ld a, [$cf91] + ld [$d717], a + ld [$d11e], a + call GetMonName + ld a, [$cf13] + cp $2 + jr nz, asm_1d1db ; 0x1d1d5 $4 + ld a, $2b + jr asm_1d1e5 ; 0x1d1d9 $a +asm_1d1db: ; 1d1db (7:51db) + cp $3 + jr nz, asm_1d1e3 ; 0x1d1dd $4 + ld a, $2c + jr asm_1d1e5 ; 0x1d1e1 $2 +asm_1d1e3: ; 1d1e3 (7:51e3) + ld a, $2d +asm_1d1e5: ; 1d1e5 (7:51e5) + ld [$cc4d], a + ld a, $11 + call Predef + ld a, $1 + ld [$cc3c], a + ld hl, OaksLabMonEnergeticText + call PrintText + ld hl, OaksLabReceivedMonText + call PrintText + xor a + ld [$cc49], a + ld a, $5 + ld [$d127], a + ld a, [$cf91] + ld [$d11e], a + call AddPokemonToParty + ld hl, $d72e + set 3, [hl] + ld a, $fc + ld [wJoypadForbiddenButtonsMask], a + ld a, $8 + ld [W_OAKSLABCURSCRIPT], a +OaksLabMonChoiceEnd: ; 1d21f (7:521f) + jp TextScriptEnd - db 0 ; padding +OaksLabMonEnergeticText: ; 1d222 (7:5222) + TX_FAR _OaksLabMonEnergeticText + db "@" -FearowBaseStats: ; 3862a (e:462a) - db DEX_FEAROW ; pokedex id - db 65 ; base hp - db 90 ; base attack - db 65 ; base defense - db 100 ; base speed - db 61 ; base special +OaksLabReceivedMonText: ; 1d227 (7:5227) + TX_FAR _OaksLabReceivedMonText + db $11, "@" - db NORMAL ; species type 1 - db FLYING ; species type 2 +OaksLabScript_1d22d: ; 1d22d (7:522d) + ld a, $5 + ld [$ff8c], a + ld a, $9 + ld [$ff8b], a + call Func_34fc + ld [hl], $0 + ld hl, OaksLabLastMonText + call PrintText + jp TextScriptEnd - db 90 ; catch rate - db 162 ; base exp yield - db $77 ; sprite dimensions +OaksLabLastMonText: ; 1d243 (7:5243) + TX_FAR _OaksLabLastMonText + db "@" - dw FearowPicFront - dw FearowPicBack +OaksLabText32: ; 1d248 (7:5248) +OaksLabText5: ; 1d248 (7:5248) + db $08 ; asm + ld a, [$d747] + bit 6, a + jr nz, .asm_50e81 ; 0x1d24e + ld hl, $d2f7 + ld b, $13 + call CountSetBits + ld a, [$d11e] + cp $2 + jr c, .asm_b28b0 ; 0x1d25d + ld a, [$d74b] + bit 5, a + jr z, .asm_b28b0 ; 0x1d264 +.asm_50e81 ; 0x1d266 + ld hl, UnnamedText_1d31d + call PrintText + ld a, $1 + ld [$cc3c], a + ld a, $56 + call Predef + jp .asm_0f042 +.asm_b28b0 ; 0x1d279 + ld b,POKE_BALL + call IsItemInBag + jr nz, .asm_17c30 ; 0x1d27e + ld a, [$d7eb] + bit 5, a + jr nz, .asm_f1adc ; 0x1d285 + ld a, [$d74b] + bit 5, a + jr nz, .asm_333a2 ; 0x1d28c + bit 3, a + jr nz, .asm_76269 ; 0x1d290 + ld a, [$d72e] + bit 3, a + jr nz, .asm_4a5e0 ; 0x1d297 + ld hl, UnnamedText_1d2f0 + call PrintText + jr .asm_0f042 ; 0x1d29f +.asm_4a5e0 ; 0x1d2a1 + ld hl, UnnamedText_1d2f5 + call PrintText + jr .asm_0f042 ; 0x1d2a7 +.asm_76269 ; 0x1d2a9 + ld b, OAKS_PARCEL + call IsItemInBag + jr nz, .asm_a8fcf ; 0x1d2ae + ld hl, UnnamedText_1d2fa + call PrintText + jr .asm_0f042 ; 0x1d2b6 +.asm_a8fcf ; 0x1d2b8 + ld hl, OaksLabDeliverParcelText + call PrintText + call OaksLabScript_1d00a + ld a, $f + ld [W_OAKSLABCURSCRIPT], a + jr .asm_0f042 ; 0x1d2c6 +.asm_333a2 ; 0x1d2c8 + ld hl, OaksLabAroundWorldText + call PrintText + jr .asm_0f042 ; 0x1d2ce +.asm_f1adc ; 0x1d2d0 + ld hl, $d74b + bit 4, [hl] + set 4, [hl] + jr nz, .asm_17c30 ; 0x1d2d7 + ld bc, (POKE_BALL << 8) | 5 + call GiveItem + ld hl, OaksLabGivePokeballsText + call PrintText + jr .asm_0f042 ; 0x1d2e5 +.asm_17c30 ; 0x1d2e7 + ld hl, OaksLabPleaseVisitText + call PrintText +.asm_0f042 ; 0x1d2ed + jp TextScriptEnd - ; attacks known at lvl 0 - db PECK - db GROWL - db LEER - db 0 +UnnamedText_1d2f0: ; 1d2f0 (7:52f0) + TX_FAR _UnnamedText_1d2f0 + db "@" - db 0 ; growth rate +UnnamedText_1d2f5: ; 1d2f5 (7:52f5) + TX_FAR _UnnamedText_1d2f5 + db "@" - ; learnset - db %00101010 - db %01000011 - db %00001000 - db %11000000 - db %01000010 - db %00001100 - db %00001010 +UnnamedText_1d2fa: ; 1d2fa (7:52fa) + TX_FAR _UnnamedText_1d2fa + db "@" - db 0 ; padding +OaksLabDeliverParcelText: ; 1d2ff (7:52ff) + TX_FAR _OaksLabDeliverParcelText1 + db $11 + TX_FAR _OaksLabDeliverParcelText2 + db "@" -EkansBaseStats: ; 38646 (e:4646) - db DEX_EKANS ; pokedex id - db 35 ; base hp - db 60 ; base attack - db 44 ; base defense - db 55 ; base speed - db 40 ; base special +OaksLabAroundWorldText: ; 1d309 (7:5309) + TX_FAR _OaksLabAroundWorldText + db "@" - db POISON ; species type 1 - db POISON ; species type 2 +OaksLabGivePokeballsText: ; 1d30e (7:530e) + TX_FAR _OaksLabGivePokeballsText1 + db $11 + TX_FAR _OaksLabGivePokeballsText2 + db "@" - db 255 ; catch rate - db 62 ; base exp yield - db $55 ; sprite dimensions +OaksLabPleaseVisitText: ; 1d318 (7:5318) + TX_FAR _OaksLabPleaseVisitText + db "@" - dw EkansPicFront - dw EkansPicBack +UnnamedText_1d31d: ; 1d31d (7:531d) + TX_FAR _UnnamedText_1d31d + db "@" - ; attacks known at lvl 0 - db WRAP - db LEER - db 0 - db 0 +OaksLabText34: ; 1d322 (7:5322) +OaksLabText33: ; 1d322 (7:5322) +OaksLabText7: ; 1d322 (7:5322) +OaksLabText6: ; 1d322 (7:5322) + db $08 ; asm + ld hl, UnnamedText_1d32c + call PrintText + jp TextScriptEnd - db 0 ; growth rate - - ; learnset - db %10100000 - db %00000011 - db %00011000 - db %11001110 - db %10000010 - db %10001000 - db %00100010 - - db 0 ; padding - -ArbokBaseStats: ; 38662 (e:4662) - db DEX_ARBOK ; pokedex id - db 60 ; base hp - db 85 ; base attack - db 69 ; base defense - db 80 ; base speed - db 65 ; base special - - db POISON ; species type 1 - db POISON ; species type 2 - - db 90 ; catch rate - db 147 ; base exp yield - db $77 ; sprite dimensions - - dw ArbokPicFront - dw ArbokPicBack - - ; attacks known at lvl 0 - db WRAP - db LEER - db POISON_STING - db 0 +UnnamedText_1d32c: ; 1d32c (7:532c) + TX_FAR _UnnamedText_1d32c + db "@" - db 0 ; growth rate +OaksLabText35: ; 1d331 (7:5331) +OaksLabText8: ; 1d331 (7:5331) + TX_FAR _OaksLabText8 + db "@" - ; learnset - db %10100000 - db %01000011 - db %00011000 - db %11001110 - db %10000010 - db %10001000 - db %00100010 +OaksLabText36: ; 1d336 (7:5336) +OaksLabText9: ; 1d336 (7:5336) + db $08 ; asm + ld hl, UnnamedText_1d340 + call PrintText + jp TextScriptEnd - db 0 ; padding +UnnamedText_1d340: ; 1d340 (7:5340) + TX_FAR _UnnamedText_1d340 + db "@" -PikachuBaseStats: ; 3867e (e:467e) - db DEX_PIKACHU ; pokedex id - db 35 ; base hp - db 55 ; base attack - db 30 ; base defense - db 90 ; base speed - db 50 ; base special +OaksLabText17: ; 1d345 (7:5345) + db $8 + ld hl, OaksLabRivalWaitingText + call PrintText + jp TextScriptEnd - db ELECTRIC ; species type 1 - db ELECTRIC ; species type 2 +OaksLabRivalWaitingText: ; 1d34f (7:534f) + TX_FAR _OaksLabRivalWaitingText + db "@" - db 190 ; catch rate - db 82 ; base exp yield - db $55 ; sprite dimensions +OaksLabText18: ; 1d354 (7:5354) + db $8 + ld hl, OaksLabChooseMonText + call PrintText + jp TextScriptEnd - dw PikachuPicFront - dw PikachuPicBack +OaksLabChooseMonText: ; 1d35e (7:535e) + TX_FAR _OaksLabChooseMonText + db "@" - ; attacks known at lvl 0 - db THUNDERSHOCK - db GROWL - db 0 - db 0 +OaksLabText19: ; 1d363 (7:5363) + db $8 + ld hl, OaksLabRivalInterjectionText + call PrintText + jp TextScriptEnd - db 0 ; growth rate +OaksLabRivalInterjectionText: ; 1d36d (7:536d) + TX_FAR _OaksLabRivalInterjectionText + db "@" - ; learnset - db %10110001 - db %10000011 - db %10001101 - db %11000001 - db %11000011 - db %00011000 - db %01000010 +OaksLabText20: ; 1d372 (7:5372) + db $8 + ld hl, OaksLabBePatientText + call PrintText + jp TextScriptEnd - db 0 ; padding +OaksLabBePatientText: ; 1d37c (7:537c) + TX_FAR _OaksLabBePatientText + db "@" -RaichuBaseStats: ; 3869a (e:469a) - db DEX_RAICHU ; pokedex id - db 60 ; base hp - db 90 ; base attack - db 55 ; base defense - db 100 ; base speed - db 90 ; base special +OaksLabText12: ; 1d381 (7:5381) + db $8 + ld hl, OaksLabLeavingText + call PrintText + jp TextScriptEnd - db ELECTRIC ; species type 1 - db ELECTRIC ; species type 2 +OaksLabLeavingText: ; 1d38b (7:538b) + TX_FAR _OaksLabLeavingText + db "@" - db 75 ; catch rate - db 122 ; base exp yield - db $77 ; sprite dimensions +OaksLabText13: ; 1d390 (7:5390) + db $8 + ld hl, OaksLabRivalPickingMonText + call PrintText + jp TextScriptEnd - dw RaichuPicFront - dw RaichuPicBack +OaksLabRivalPickingMonText: ; 1d39a (7:539a) + TX_FAR _OaksLabRivalPickingMonText + db "@" - ; attacks known at lvl 0 - db THUNDERSHOCK - db GROWL - db THUNDER_WAVE - db 0 +OaksLabText14: ; 1d39f (7:539f) + db $8 + ld hl, OaksLabRivalReceivedMonText + call PrintText + jp TextScriptEnd - db 0 ; growth rate +OaksLabRivalReceivedMonText: ; 1d3a9 (7:53a9) + TX_FAR _OaksLabRivalReceivedMonText + db $11, "@" - ; learnset - db %10110001 - db %11000011 - db %10001101 - db %11000001 - db %11000011 - db %00011000 - db %01000010 +OaksLabText15: ; 1d3af (7:53af) + db $8 + ld hl, OaksLabRivalChallengeText + call PrintText + jp TextScriptEnd - db 0 ; padding +OaksLabRivalChallengeText: ; 1d3b9 (7:53b9) + TX_FAR _OaksLabRivalChallengeText + db "@" -SandshrewBaseStats: ; 386b6 (e:46b6) - db DEX_SANDSHREW ; pokedex id - db 50 ; base hp - db 75 ; base attack - db 85 ; base defense - db 40 ; base speed - db 30 ; base special +UnnamedText_1d3be: ; 1d3be (7:53be) + TX_FAR _UnnamedText_1d3be + db "@" - db GROUND ; species type 1 - db GROUND ; species type 2 +UnnamedText_1d3c3: ; 1d3c3 (7:53c3) + TX_FAR _UnnamedText_1d3c3 + db "@" - db 255 ; catch rate - db 93 ; base exp yield - db $55 ; sprite dimensions +OaksLabText16: ; 1d3c8 (7:53c8) + db $8 + ld hl, OaksLabRivalToughenUpText + call PrintText + jp TextScriptEnd - dw SandshrewPicFront - dw SandshrewPicBack +OaksLabRivalToughenUpText: ; 1d3d2 (7:53d2) + TX_FAR _OaksLabRivalToughenUpText + db "@" - ; attacks known at lvl 0 - db SCRATCH - db 0 - db 0 - db 0 +OaksLabText21: ; 1d3d7 (7:53d7) + TX_FAR _OaksLabText21 + db "@" - db 0 ; growth rate +OaksLabText22: ; 1d3dc (7:53dc) + TX_FAR _OaksLabText22 + db "@" - ; learnset - db %10100100 - db %00000011 - db %00001101 - db %11001110 - db %11000010 - db %10001000 - db %00100110 +OaksLabText23: ; 1d3e1 (7:53e1) + TX_FAR _OaksLabText23 + db "@" - db 0 ; padding +OaksLabText24: ; 1d3e6 (7:53e6) + TX_FAR _OaksLabText24 + db "@" -SandslashBaseStats: ; 386d2 (e:46d2) - db DEX_SANDSLASH ; pokedex id - db 75 ; base hp - db 100 ; base attack - db 110 ; base defense - db 65 ; base speed - db 55 ; base special +OaksLabText25: ; 1d3eb (7:53eb) + TX_FAR _OaksLabText25 + db $11, "@" - db GROUND ; species type 1 - db GROUND ; species type 2 +OaksLabText26: ; 1d3f1 (7:53f1) + TX_FAR _OaksLabText26 + db "@" - db 90 ; catch rate - db 163 ; base exp yield - db $66 ; sprite dimensions +OaksLabText27: ; 1d3f6 (7:53f6) + TX_FAR _OaksLabText27 + db "@" - dw SandslashPicFront - dw SandslashPicBack +OaksLabText38: ; 1d3fb (7:53fb) +OaksLabText37: ; 1d3fb (7:53fb) +OaksLabText11: ; 1d3fb (7:53fb) +OaksLabText10: ; 1d3fb (7:53fb) + db $08 ; asm + ld hl, UnnamedText_1d405 + call PrintText + jp TextScriptEnd - ; attacks known at lvl 0 - db SCRATCH - db SAND_ATTACK - db 0 - db 0 +UnnamedText_1d405: ; 1d405 (7:5405) + TX_FAR _UnnamedText_1d405 + db "@" - db 0 ; growth rate +OaksLabObject: ; 0x1d40a (size=88) + db $3 ; border tile - ; learnset - db %10100100 - db %01000011 - db %00001101 - db %11001110 - db %11000010 - db %10001000 - db %00100110 + db $2 ; warps + db $b, $4, $2, $ff + db $b, $5, $2, $ff - db 0 ; padding + db $0 ; signs -NidoranFBaseStats: ; 386ee (e:46ee) - db DEX_NIDORAN_F ; pokedex id - db 55 ; base hp - db 47 ; base attack - db 52 ; base defense - db 41 ; base speed - db 40 ; base special + db $b ; people + db SPRITE_BLUE, $3 + 4, $4 + 4, $ff, $ff, $41, SONY1 + $C8, $1 ; trainer + db SPRITE_BALL, $3 + 4, $6 + 4, $ff, $ff, $2 ; person + db SPRITE_BALL, $3 + 4, $7 + 4, $ff, $ff, $3 ; person + db SPRITE_BALL, $3 + 4, $8 + 4, $ff, $ff, $4 ; person + db SPRITE_OAK, $2 + 4, $5 + 4, $ff, $d0, $5 ; person + db SPRITE_BOOK_MAP_DEX, $1 + 4, $2 + 4, $ff, $ff, $6 ; person + db SPRITE_BOOK_MAP_DEX, $1 + 4, $3 + 4, $ff, $ff, $7 ; person + db SPRITE_OAK, $a + 4, $5 + 4, $ff, $d1, $8 ; person + db SPRITE_GIRL, $9 + 4, $1 + 4, $fe, $1, $9 ; person + db SPRITE_OAK_AIDE, $a + 4, $2 + 4, $ff, $ff, $a ; person + db SPRITE_OAK_AIDE, $a + 4, $8 + 4, $ff, $ff, $b ; person - db POISON ; species type 1 - db POISON ; species type 2 + ; warp-to + EVENT_DISP OAKS_LAB_WIDTH, $b, $4 + EVENT_DISP OAKS_LAB_WIDTH, $b, $5 - db 235 ; catch rate - db 59 ; base exp yield - db $55 ; sprite dimensions +ViridianMart_h: ; 0x1d462 to 0x1d46e (12 bytes) (bank=7) (id=42) + db MART ; tileset + db VIRIDIAN_MART_HEIGHT, VIRIDIAN_MART_WIDTH ; dimensions (y, x) + dw ViridianMartBlocks, ViridianMartTextPointers, ViridianMartScript ; blocks, texts, scripts + db $00 ; connections + dw ViridianMartObject ; objects - dw NidoranFPicFront - dw NidoranFPicBack +ViridianMartScript: ; 1d46e (7:546e) + call ViridianMartScript_1d47d + call EnableAutoTextBoxDrawing + ld hl, ViridianMartScriptPointers + ld a, [W_VIRIDIANMARKETCURSCRIPT] + jp CallFunctionInTable - ; attacks known at lvl 0 - db GROWL - db TACKLE - db 0 - db 0 +ViridianMartScript_1d47d: ; 1d47d (7:547d) + ld a, [$d74e] + bit 0, a + jr nz, .asm_1d489 ; 0x1d482 $5 + ld hl, ViridianMartTextPointers ; $54e0 + jr .asm_1d48c ; 0x1d487 $3 +.asm_1d489 + ld hl, ViridianMartTextPointers + $a ; $54ea ; starts at ViridianMartText6 +.asm_1d48c + ld a, l + ld [W_MAPTEXTPTR], a + ld a, h + ld [W_MAPTEXTPTR+1], a + ret - db 3 ; growth rate +ViridianMartScriptPointers: ; 1d495 (7:5495) + dw ViridianMartScript0 + dw ViridianMartScript1 + dw ViridianMartScript2 - ; learnset - db %10100000 - db %00100011 - db %10001000 - db %11000001 - db %10000011 - db %00001000 - db %00000010 +ViridianMartScript0: ; 1d49b (7:549b) + call UpdateSprites + ld a, $4 + ld [$ff8c], a + call DisplayTextID + ld hl, $ccd3 + ld de, RLEMovement1d4bb + call DecodeRLEList + dec a + ld [$cd38], a + call Func_3486 + ld a, $1 + ld [W_VIRIDIANMARKETCURSCRIPT], a + ret - db 0 ; padding +RLEMovement1d4bb: ; 1d4bb (7:54bb) + db $20, $01 + db $40, $02 + db $ff -NidorinaBaseStats: ; 3870a (e:470a) - db DEX_NIDORINA ; pokedex id - db 70 ; base hp - db 62 ; base attack - db 67 ; base defense - db 56 ; base speed - db 55 ; base special +ViridianMartScript1: ; 1d4c0 (7:54c0) + ld a, [$cd38] + and a + ret nz + call Delay3 + ld a, $5 + ld [$ff8c], a + call DisplayTextID + ld bc, (OAKS_PARCEL << 8) + 1 + call GiveItem + ld hl, $d74e + set 1, [hl] + ld a, $2 + ld [W_VIRIDIANMARKETCURSCRIPT], a + ; fallthrough +ViridianMartScript2: ; 1d4df (7:54df) + ret - db POISON ; species type 1 - db POISON ; species type 2 +ViridianMartTextPointers: ; 1d4e0 (7:54e0) + dw ViridianMartText1 + dw ViridianMartText2 + dw ViridianMartText3 + dw ViridianMartText4 + dw ViridianMartText5 + dw ViridianMartText6 + dw ViridianMartText2 + dw ViridianMartText3 - db 120 ; catch rate - db 117 ; base exp yield - db $66 ; sprite dimensions +ViridianMartText1: ; 1d4f0 (7:54f0) + TX_FAR _ViridianMartText1 + db "@" - dw NidorinaPicFront - dw NidorinaPicBack +ViridianMartText4: ; 1d4f5 (7:54f5) + TX_FAR _ViridianMartText4 + db "@" - ; attacks known at lvl 0 - db GROWL - db TACKLE - db SCRATCH - db 0 +ViridianMartText5: ; 1d4fa (7:54fa) + TX_FAR ViridianMartParcelQuestText + db $11 + db "@" - db 3 ; growth rate +ViridianMartText2: ; 1d500 (7:5500) + TX_FAR _ViridianMartText2 + db "@" - ; learnset - db %11100000 - db %00111111 - db %10001000 - db %11000001 - db %10000011 - db %00001000 - db %00000010 - - db 0 ; padding - -NidoqueenBaseStats: ; 38726 (e:4726) - db DEX_NIDOQUEEN ; pokedex id - db 90 ; base hp - db 82 ; base attack - db 87 ; base defense - db 76 ; base speed - db 75 ; base special - - db POISON ; species type 1 - db GROUND ; species type 2 - - db 45 ; catch rate - db 194 ; base exp yield - db $77 ; sprite dimensions - - dw NidoqueenPicFront - dw NidoqueenPicBack - - ; attacks known at lvl 0 - db TACKLE - db SCRATCH - db TAIL_WHIP - db BODY_SLAM - - db 3 ; growth rate - - ; learnset - db %11110001 - db %11111111 - db %10001111 - db %11000111 - db %10100011 - db %10001000 - db %00110010 - - db 0 ; padding - -NidoranMBaseStats: ; 38742 (e:4742) - db DEX_NIDORAN_M ; pokedex id - db 46 ; base hp - db 57 ; base attack - db 40 ; base defense - db 50 ; base speed - db 40 ; base special - - db POISON ; species type 1 - db POISON ; species type 2 - - db 235 ; catch rate - db 60 ; base exp yield - db $55 ; sprite dimensions - - dw NidoranMPicFront - dw NidoranMPicBack - - ; attacks known at lvl 0 - db LEER - db TACKLE - db 0 - db 0 +ViridianMartText3: ; 1d505 (7:5505) + TX_FAR _ViridianMartText3 + db "@" - db 3 ; growth rate +ViridianMartObject: ; 0x1d50a (size=38) + db $0 ; border tile - ; learnset - db %11100000 - db %00100011 - db %10001000 - db %11000001 - db %10000011 - db %00001000 - db %00000010 - - db 0 ; padding - -NidorinoBaseStats: ; 3875e (e:475e) - db DEX_NIDORINO ; pokedex id - db 61 ; base hp - db 72 ; base attack - db 57 ; base defense - db 65 ; base speed - db 55 ; base special - - db POISON ; species type 1 - db POISON ; species type 2 - - db 120 ; catch rate - db 118 ; base exp yield - db $66 ; sprite dimensions - - dw NidorinoPicFront - dw NidorinoPicBack - - ; attacks known at lvl 0 - db LEER - db TACKLE - db HORN_ATTACK - db 0 + db $2 ; warps + db $7, $3, $1, $ff + db $7, $4, $1, $ff - db 3 ; growth rate + db $0 ; signs - ; learnset - db %11100000 - db %00111111 - db %10001000 - db %11000001 - db %10000011 - db %00001000 - db %00000010 - - db 0 ; padding - -NidokingBaseStats: ; 3877a (e:477a) - db DEX_NIDOKING ; pokedex id - db 81 ; base hp - db 92 ; base attack - db 77 ; base defense - db 85 ; base speed - db 75 ; base special - - db POISON ; species type 1 - db GROUND ; species type 2 - - db 45 ; catch rate - db 195 ; base exp yield - db $77 ; sprite dimensions - - dw NidokingPicFront - dw NidokingPicBack - - ; attacks known at lvl 0 - db TACKLE - db HORN_ATTACK - db POISON_STING - db THRASH - - db 3 ; growth rate - - ; learnset - db %11110001 - db %11111111 - db %10001111 - db %11000111 - db %10100011 - db %10001000 - db %00110010 - - db 0 ; padding - -ClefairyBaseStats: ; 38796 (e:4796) - db DEX_CLEFAIRY ; pokedex id - db 70 ; base hp - db 45 ; base attack - db 48 ; base defense - db 35 ; base speed - db 60 ; base special - - db NORMAL ; species type 1 - db NORMAL ; species type 2 - - db 150 ; catch rate - db 68 ; base exp yield - db $55 ; sprite dimensions - - dw ClefairyPicFront - dw ClefairyPicBack - - ; attacks known at lvl 0 - db POUND - db GROWL - db 0 - db 0 + db $3 ; people + db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $1 ; person + db SPRITE_BUG_CATCHER, $5 + 4, $5 + 4, $fe, $1, $2 ; person + db SPRITE_BLACK_HAIR_BOY_1, $3 + 4, $3 + 4, $ff, $ff, $3 ; person - db 4 ; growth rate - - ; learnset - db %10110001 - db %00111111 - db %10101111 - db %11110001 - db %10100111 - db %00111000 - db %01100011 - - db 0 ; padding - -ClefableBaseStats: ; 387b2 (e:47b2) - db DEX_CLEFABLE ; pokedex id - db 95 ; base hp - db 70 ; base attack - db 73 ; base defense - db 60 ; base speed - db 85 ; base special - - db NORMAL ; species type 1 - db NORMAL ; species type 2 - - db 25 ; catch rate - db 129 ; base exp yield - db $66 ; sprite dimensions - - dw ClefablePicFront - dw ClefablePicBack - - ; attacks known at lvl 0 - db SING - db DOUBLESLAP - db MINIMIZE - db METRONOME - - db 4 ; growth rate - - ; learnset - db %10110001 - db %01111111 - db %10101111 - db %11110001 - db %10100111 - db %00111000 - db %01100011 - - db 0 ; padding - -VulpixBaseStats: ; 387ce (e:47ce) - db DEX_VULPIX ; pokedex id - db 38 ; base hp - db 41 ; base attack - db 40 ; base defense - db 65 ; base speed - db 65 ; base special - - db FIRE ; species type 1 - db FIRE ; species type 2 - - db 190 ; catch rate - db 63 ; base exp yield - db $66 ; sprite dimensions - - dw VulpixPicFront - dw VulpixPicBack - - ; attacks known at lvl 0 - db EMBER - db TAIL_WHIP - db 0 - db 0 + ; warp-to + EVENT_DISP VIRIDIAN_MART_WIDTH, $7, $3 + EVENT_DISP VIRIDIAN_MART_WIDTH, $7, $4 - db 0 ; growth rate +ViridianMartBlocks: ; 1d530 (7:5530) + INCBIN "maps/viridianmart.blk" - ; learnset - db %10100000 - db %00000011 - db %00001000 - db %11001000 - db %11100011 - db %00001000 - db %00000010 +School_h: ; 0x1d540 to 0x1d54c (12 bytes) (bank=7) (id=43) + db HOUSE ; tileset + db VIRIDIAN_SCHOOL_HEIGHT, VIRIDIAN_SCHOOL_WIDTH ; dimensions (y, x) + dw SchoolBlocks, SchoolTextPointers, SchoolScript ; blocks, texts, scripts + db $00 ; connections + dw SchoolObject ; objects - db 0 ; padding +SchoolScript: ; 1d54c (7:554c) + jp EnableAutoTextBoxDrawing -NinetalesBaseStats: ; 387ea (e:47ea) - db DEX_NINETALES ; pokedex id - db 73 ; base hp - db 76 ; base attack - db 75 ; base defense - db 100 ; base speed - db 100 ; base special +SchoolTextPointers: ; 1d54f (7:554f) + dw SchoolText1 + dw SchoolText2 - db FIRE ; species type 1 - db FIRE ; species type 2 +SchoolText1: ; 1d553 (7:5553) + TX_FAR _SchoolText1 + db "@" - db 75 ; catch rate - db 178 ; base exp yield - db $77 ; sprite dimensions +SchoolText2: ; 1d558 (7:5558) + TX_FAR _SchoolText2 + db "@" - dw NinetalesPicFront - dw NinetalesPicBack +SchoolObject: ; 0x1d55d (size=32) + db $a ; border tile - ; attacks known at lvl 0 - db EMBER - db TAIL_WHIP - db QUICK_ATTACK - db ROAR - - db 0 ; growth rate - - ; learnset - db %10100000 - db %01000011 - db %00001000 - db %11001000 - db %11100011 - db %00001000 - db %00000010 - - db 0 ; padding - -JigglypuffBaseStats: ; 38806 (e:4806) - db DEX_JIGGLYPUFF ; pokedex id - db 115 ; base hp - db 45 ; base attack - db 20 ; base defense - db 20 ; base speed - db 25 ; base special - - db NORMAL ; species type 1 - db NORMAL ; species type 2 - - db 170 ; catch rate - db 76 ; base exp yield - db $55 ; sprite dimensions - - dw JigglypuffPicFront - dw JigglypuffPicBack - - ; attacks known at lvl 0 - db SING - db 0 - db 0 - db 0 + db $2 ; warps + db $7, $2, $2, $ff + db $7, $3, $2, $ff - db 4 ; growth rate + db $0 ; signs - ; learnset - db %10110001 - db %00111111 - db %10101111 - db %11110001 - db %10100011 - db %00111000 - db %01100011 + db $2 ; people + db SPRITE_BRUNETTE_GIRL, $5 + 4, $3 + 4, $ff, $d1, $1 ; person + db SPRITE_LASS, $1 + 4, $4 + 4, $ff, $d0, $2 ; person - db 0 ; padding + ; warp-to + EVENT_DISP VIRIDIAN_SCHOOL_WIDTH, $7, $2 + EVENT_DISP VIRIDIAN_SCHOOL_WIDTH, $7, $3 -WigglytuffBaseStats: ; 38822 (e:4822) - db DEX_WIGGLYTUFF ; pokedex id - db 140 ; base hp - db 70 ; base attack - db 45 ; base defense - db 45 ; base speed - db 50 ; base special +ViridianHouse_h: ; 0x1d57d to 0x1d589 (12 bytes) (bank=7) (id=44) + db HOUSE ; tileset + db VIRIDIAN_HOUSE_HEIGHT, VIRIDIAN_HOUSE_WIDTH ; dimensions (y, x) + dw ViridianHouseBlocks, ViridianHouseTextPointers, ViridianHouseScript ; blocks, texts, scripts + db $00 ; connections + dw ViridianHouseObject ; objects - db NORMAL ; species type 1 - db NORMAL ; species type 2 + db $0 - db 50 ; catch rate - db 109 ; base exp yield - db $66 ; sprite dimensions +ViridianHouseScript: ; 1d58a (7:558a) + jp EnableAutoTextBoxDrawing - dw WigglytuffPicFront - dw WigglytuffPicBack +ViridianHouseTextPointers: ; 1d58d (7:558d) + dw ViridianHouseText1 + dw ViridianHouseText2 + dw ViridianHouseText3 + dw ViridianHouseText4 - ; attacks known at lvl 0 - db SING - db DISABLE - db DEFENSE_CURL - db DOUBLESLAP - - db 4 ; growth rate - - ; learnset - db %10110001 - db %01111111 - db %10101111 - db %11110001 - db %10100011 - db %00111000 - db %01100011 - - db 0 ; padding - -ZubatBaseStats: ; 3883e (e:483e) - db DEX_ZUBAT ; pokedex id - db 40 ; base hp - db 45 ; base attack - db 35 ; base defense - db 55 ; base speed - db 40 ; base special - - db POISON ; species type 1 - db FLYING ; species type 2 - - db 255 ; catch rate - db 54 ; base exp yield - db $55 ; sprite dimensions - - dw ZubatPicFront - dw ZubatPicBack - - ; attacks known at lvl 0 - db LEECH_LIFE - db 0 - db 0 - db 0 +ViridianHouseText1: ; 1d595 (7:5595) + TX_FAR _ViridianHouseText1 + db "@" - db 0 ; growth rate +ViridianHouseText2: ; 1d59a (7:559a) + TX_FAR _ViridianHouseText2 + db "@" - ; learnset - db %00101010 - db %00000011 - db %00011000 - db %11000000 - db %01000010 - db %00001000 - db %00000010 - - db 0 ; padding - -GolbatBaseStats: ; 3885a (e:485a) - db DEX_GOLBAT ; pokedex id - db 75 ; base hp - db 80 ; base attack - db 70 ; base defense - db 90 ; base speed - db 75 ; base special - - db POISON ; species type 1 - db FLYING ; species type 2 - - db 90 ; catch rate - db 171 ; base exp yield - db $77 ; sprite dimensions - - dw GolbatPicFront - dw GolbatPicBack - - ; attacks known at lvl 0 - db LEECH_LIFE - db SCREECH - db BITE - db 0 +ViridianHouseText3: ; 1d59f (7:559f) + db $08 ; asm + ld hl, UnnamedText_1d5b1 + call PrintText + ld a, SPEAROW + call PlayCry + call WaitForSoundToFinish + jp TextScriptEnd - db 0 ; growth rate +UnnamedText_1d5b1: ; 1d5b1 (7:55b1) + TX_FAR _UnnamedText_1d5b1 + db "@" - ; learnset - db %00101010 - db %01000011 - db %00011000 - db %11000000 - db %01000010 - db %00001000 - db %00000010 +ViridianHouseText4: ; 1d5b6 (7:55b6) + TX_FAR _ViridianHouseText4 + db "@" - db 0 ; padding +ViridianHouseObject: ; 0x1d5bb (size=44) + db $a ; border tile -OddishBaseStats: ; 38876 (e:4876) - db DEX_ODDISH ; pokedex id - db 45 ; base hp - db 50 ; base attack - db 55 ; base defense - db 30 ; base speed - db 75 ; base special + db $2 ; warps + db $7, $2, $3, $ff + db $7, $3, $3, $ff - db GRASS ; species type 1 - db POISON ; species type 2 + db $0 ; signs - db 255 ; catch rate - db 78 ; base exp yield - db $55 ; sprite dimensions + db $4 ; people + db SPRITE_BALDING_GUY, $3 + 4, $5 + 4, $ff, $ff, $1 ; person + db SPRITE_LITTLE_GIRL, $4 + 4, $1 + 4, $fe, $1, $2 ; person + db SPRITE_BIRD, $5 + 4, $5 + 4, $fe, $2, $3 ; person + db SPRITE_CLIPBOARD, $0 + 4, $4 + 4, $ff, $ff, $4 ; person - dw OddishPicFront - dw OddishPicBack + ; warp-to + EVENT_DISP VIRIDIAN_HOUSE_WIDTH, $7, $2 + EVENT_DISP VIRIDIAN_HOUSE_WIDTH, $7, $3 - ; attacks known at lvl 0 - db ABSORB - db 0 - db 0 - db 0 +PewterHouse1_h: ; 0x1d5e7 to 0x1d5f3 (12 bytes) (bank=7) (id=55) + db HOUSE ; tileset + db PEWTER_HOUSE_1_HEIGHT, PEWTER_HOUSE_1_WIDTH ; dimensions (y, x) + dw PewterHouse1Blocks, PewterHouse1TextPointers, PewterHouse1Script ; blocks, texts, scripts + db $00 ; connections + dw PewterHouse1Object ; objects - db 3 ; growth rate +PewterHouse1Script: ; 1d5f3 (7:55f3) + jp EnableAutoTextBoxDrawing - ; learnset - db %00100100 - db %00000011 - db %00111000 - db %11000000 - db %00000011 - db %00001000 - db %00000110 - - db 0 ; padding - -GloomBaseStats: ; 38892 (e:4892) - db DEX_GLOOM ; pokedex id - db 60 ; base hp - db 65 ; base attack - db 70 ; base defense - db 40 ; base speed - db 85 ; base special - - db GRASS ; species type 1 - db POISON ; species type 2 - - db 120 ; catch rate - db 132 ; base exp yield - db $66 ; sprite dimensions - - dw GloomPicFront - dw GloomPicBack - - ; attacks known at lvl 0 - db ABSORB - db POISONPOWDER - db STUN_SPORE - db 0 +PewterHouse1TextPointers: ; 1d5f6 (7:55f6) + dw PewterHouse1Text1 + dw PewterHouse1Text2 + dw PewterHouse1Text3 - db 3 ; growth rate +PewterHouse1Text1: ; 1d5fc (7:55fc) + TX_FAR _PewterHouse1Text1 + db $08 ; asm + ld a, NIDORAN_M + call PlayCry + call WaitForSoundToFinish + jp TextScriptEnd - ; learnset - db %00100100 - db %00000011 - db %00111000 - db %11000000 - db %00000011 - db %00001000 - db %00000110 - - db 0 ; padding - -VileplumeBaseStats: ; 388ae (e:48ae) - db DEX_VILEPLUME ; pokedex id - db 75 ; base hp - db 80 ; base attack - db 85 ; base defense - db 50 ; base speed - db 100 ; base special - - db GRASS ; species type 1 - db POISON ; species type 2 - - db 45 ; catch rate - db 184 ; base exp yield - db $77 ; sprite dimensions - - dw VileplumePicFront - dw VileplumePicBack - - ; attacks known at lvl 0 - db STUN_SPORE - db SLEEP_POWDER - db ACID - db PETAL_DANCE - - db 3 ; growth rate - - ; learnset - db %10100100 - db %01000011 - db %00111000 - db %11000000 - db %00000011 - db %00001000 - db %00000110 +PewterHouse1Text2: ; 1d60c (7:560c) + TX_FAR _PewterHouse1Text2 + db "@" - db 0 ; padding +PewterHouse1Text3: ; 1d611 (7:5611) + TX_FAR _PewterHouse1Text3 + db "@" -ParasBaseStats: ; 388ca (e:48ca) - db DEX_PARAS ; pokedex id - db 35 ; base hp - db 70 ; base attack - db 55 ; base defense - db 25 ; base speed - db 55 ; base special +PewterHouse1Object: ; 0x1d616 (size=38) + db $a ; border tile - db BUG ; species type 1 - db GRASS ; species type 2 + db $2 ; warps + db $7, $2, $3, $ff + db $7, $3, $3, $ff - db 190 ; catch rate - db 70 ; base exp yield - db $55 ; sprite dimensions + db $0 ; signs - dw ParasPicFront - dw ParasPicBack + db $3 ; people + db SPRITE_SLOWBRO, $5 + 4, $4 + 4, $ff, $d2, $1 ; person + db SPRITE_YOUNG_BOY, $5 + 4, $3 + 4, $ff, $d3, $2 ; person + db SPRITE_FAT_BALD_GUY, $2 + 4, $1 + 4, $ff, $ff, $3 ; person - ; attacks known at lvl 0 - db SCRATCH - db 0 - db 0 - db 0 + ; warp-to + EVENT_DISP PEWTER_HOUSE_1_WIDTH, $7, $2 + EVENT_DISP PEWTER_HOUSE_1_WIDTH, $7, $3 - db 0 ; growth rate - - ; learnset - db %10100100 - db %00000011 - db %00111000 - db %11001000 - db %10000011 - db %00001000 - db %00000110 - - db 0 ; padding - -ParasectBaseStats: ; 388e6 (e:48e6) - db DEX_PARASECT ; pokedex id - db 60 ; base hp - db 95 ; base attack - db 80 ; base defense - db 30 ; base speed - db 80 ; base special - - db BUG ; species type 1 - db GRASS ; species type 2 - - db 75 ; catch rate - db 128 ; base exp yield - db $77 ; sprite dimensions - - dw ParasectPicFront - dw ParasectPicBack - - ; attacks known at lvl 0 - db SCRATCH - db STUN_SPORE - db LEECH_LIFE - db 0 +PewterHouse2_h: ; 0x1d63c to 0x1d648 (12 bytes) (bank=7) (id=57) + db HOUSE ; tileset + db PEWTER_HOUSE_2_HEIGHT, PEWTER_HOUSE_2_WIDTH ; dimensions (y, x) + dw PewterHouse2Blocks, PewterHouse2TextPointers, PewterHouse2Script ; blocks, texts, scripts + db $00 ; connections + dw PewterHouse2Object ; objects - db 0 ; growth rate +PewterHouse2Script: ; 1d648 (7:5648) + jp EnableAutoTextBoxDrawing - ; learnset - db %10100100 - db %01000011 - db %00111000 - db %11001000 - db %10000011 - db %00001000 - db %00000110 +PewterHouse2TextPointers: ; 1d64b (7:564b) + dw PewterHouse2Text1 + dw PewterHouse2Text2 - db 0 ; padding +PewterHouse2Text1: ; 1d64f (7:564f) + TX_FAR _PewterHouse2Text1 + db "@" -VenonatBaseStats: ; 38902 (e:4902) - db DEX_VENONAT ; pokedex id - db 60 ; base hp - db 55 ; base attack - db 50 ; base defense - db 45 ; base speed - db 40 ; base special +PewterHouse2Text2: ; 1d654 (7:5654) + TX_FAR _PewterHouse2Text2 + db "@" - db BUG ; species type 1 - db POISON ; species type 2 +PewterHouse2Object: ; 0x1d659 (size=32) + db $a ; border tile - db 190 ; catch rate - db 75 ; base exp yield - db $55 ; sprite dimensions + db $2 ; warps + db $7, $2, $5, $ff + db $7, $3, $5, $ff - dw VenonatPicFront - dw VenonatPicBack + db $0 ; signs - ; attacks known at lvl 0 - db TACKLE - db DISABLE - db 0 - db 0 + db $2 ; people + db SPRITE_GAMBLER, $3 + 4, $2 + 4, $ff, $d3, $1 ; person + db SPRITE_BUG_CATCHER, $5 + 4, $4 + 4, $ff, $ff, $2 ; person - db 0 ; growth rate + ; warp-to + EVENT_DISP PEWTER_HOUSE_2_WIDTH, $7, $2 + EVENT_DISP PEWTER_HOUSE_2_WIDTH, $7, $3 - ; learnset - db %00100000 - db %00000011 - db %00111000 - db %11010000 - db %00000011 - db %00101000 - db %00000010 +CeruleanHouseTrashed_h: ; 0x1d679 to 0x1d685 (12 bytes) (bank=7) (id=62) + db HOUSE ; tileset + db TRASHED_HOUSE_HEIGHT, TRASHED_HOUSE_WIDTH ; dimensions (y, x) + dw CeruleanHouseTrashedBlocks, CeruleanHouseTrashedTextPointers, CeruleanHouseTrashedScript ; blocks, texts, scripts + db $00 ; connections + dw CeruleanHouseTrashedObject ; objects - db 0 ; padding +CeruleanHouseTrashedScript: ; 1d685 (7:5685) + call EnableAutoTextBoxDrawing + ret -VenomothBaseStats: ; 3891e (e:491e) - db DEX_VENOMOTH ; pokedex id - db 70 ; base hp - db 65 ; base attack - db 60 ; base defense - db 90 ; base speed - db 90 ; base special +CeruleanHouseTrashedTextPointers: ; 1d689 (7:5689) + dw CeruleanHouseTrashedText1 + dw CeruleanHouseTrashedText2 + dw CeruleanHouseTrashedText3 - db BUG ; species type 1 - db POISON ; species type 2 +CeruleanHouseTrashedText1: ; 1d68f (7:568f) + db $08 ; asm + ld b, $e4 + ld a, $1c + call Predef + and b + jr z, .asm_f8734 ; 0x1d698 + ld hl, UnnamedText_1d6b0 + call PrintText + jr .asm_8dfe9 ; 0x1d6a0 +.asm_f8734 ; 0x1d6a2 + ld hl, UnnamedText_1d6ab + call PrintText +.asm_8dfe9 ; 0x1d6a8 + jp TextScriptEnd - db 75 ; catch rate - db 138 ; base exp yield - db $77 ; sprite dimensions +UnnamedText_1d6ab: ; 1d6ab (7:56ab) + TX_FAR _UnnamedText_1d6ab + db "@" - dw VenomothPicFront - dw VenomothPicBack +UnnamedText_1d6b0: ; 1d6b0 (7:56b0) + TX_FAR _UnnamedText_1d6b0 + db "@" - ; attacks known at lvl 0 - db TACKLE - db DISABLE - db POISONPOWDER - db LEECH_LIFE +CeruleanHouseTrashedText2: ; 1d6b5 (7:56b5) + TX_FAR _CeruleanHouseTrashedText2 + db "@" - db 0 ; growth rate +CeruleanHouseTrashedText3: ; 1d6ba (7:56ba) + TX_FAR _CeruleanHouseTrashedText3 + db "@" - ; learnset - db %00101010 - db %01000011 - db %00111000 - db %11110000 - db %01000011 - db %00101000 - db %00000010 +CeruleanHouseTrashedObject: ; 0x1d6bf (size=43) + db $a ; border tile - db 0 ; padding + db $3 ; warps + db $7, $2, $0, $ff + db $7, $3, $0, $ff + db $0, $3, $7, $ff -DiglettBaseStats: ; 3893a (e:493a) - db DEX_DIGLETT ; pokedex id - db 10 ; base hp - db 55 ; base attack - db 25 ; base defense - db 95 ; base speed - db 45 ; base special + db $1 ; signs + db $0, $3, $3 ; CeruleanHouseTrashedText3 - db GROUND ; species type 1 - db GROUND ; species type 2 + db $2 ; people + db SPRITE_FISHER, $1 + 4, $2 + 4, $ff, $d0, $1 ; person + db SPRITE_GIRL, $6 + 4, $5 + 4, $fe, $2, $2 ; person - db 255 ; catch rate - db 81 ; base exp yield - db $55 ; sprite dimensions + ; warp-to + EVENT_DISP TRASHED_HOUSE_WIDTH, $7, $2 + EVENT_DISP TRASHED_HOUSE_WIDTH, $7, $3 + EVENT_DISP TRASHED_HOUSE_WIDTH, $0, $3 - dw DiglettPicFront - dw DiglettPicBack +CeruleanHouse1_h: ; 0x1d6ea to 0x1d6f6 (12 bytes) (bank=7) (id=63) + db HOUSE ; tileset + db CERULEAN_HOUSE_1_HEIGHT, CERULEAN_HOUSE_1_WIDTH ; dimensions (y, x) + dw CeruleanHouse1Blocks, CeruleanHouse1TextPointers, CeruleanHouse1Script ; blocks, texts, scripts + db $00 ; connections + dw CeruleanHouse1Object ; objects - ; attacks known at lvl 0 - db SCRATCH - db 0 - db 0 - db 0 +CeruleanHouse1Script: ; 1d6f6 (7:56f6) + jp EnableAutoTextBoxDrawing - db 0 ; growth rate +CeruleanHouse1TextPointers: ; 1d6f9 (7:56f9) + dw CeruleanHouse1Text1 + dw CeruleanHouse1Text2 - ; learnset - db %10100000 - db %00000011 - db %00001000 - db %11001110 - db %00000010 - db %10001000 - db %00000010 +CeruleanHouse1Text1: ; 1d6fd (7:56fd) + TX_FAR _CeruleanHouse1Text1 + db "@" - db 0 ; padding +CeruleanHouse1Text2: ; 1d702 (7:5702) + db $08 ; asm + ld a, $6 + ld [wWhichTrade], a + ld a, $54 + call Predef + jp TextScriptEnd -DugtrioBaseStats: ; 38956 (e:4956) - db DEX_DUGTRIO ; pokedex id - db 35 ; base hp - db 80 ; base attack - db 50 ; base defense - db 120 ; base speed - db 70 ; base special +CeruleanHouse1Object: ; 0x1d710 (size=32) + db $a ; border tile - db GROUND ; species type 1 - db GROUND ; species type 2 + db $2 ; warps + db $7, $2, $1, $ff + db $7, $3, $1, $ff - db 50 ; catch rate - db 153 ; base exp yield - db $66 ; sprite dimensions + db $0 ; signs - dw DugtrioPicFront - dw DugtrioPicBack + db $2 ; people + db SPRITE_OLD_MEDIUM_WOMAN, $4 + 4, $5 + 4, $ff, $d2, $1 ; person + db SPRITE_GAMBLER, $2 + 4, $1 + 4, $ff, $ff, $2 ; person - ; attacks known at lvl 0 - db SCRATCH - db GROWL - db DIG - db 0 + ; warp-to + EVENT_DISP CERULEAN_HOUSE_1_WIDTH, $7, $2 + EVENT_DISP CERULEAN_HOUSE_1_WIDTH, $7, $3 - db 0 ; growth rate +BikeShop_h: ; 0x1d730 to 0x1d73c (12 bytes) (bank=7) (id=66) + db CLUB ; tileset + db BIKE_SHOP_HEIGHT, BIKE_SHOP_WIDTH ; dimensions (y, x) + dw BikeShopBlocks, BikeShopTextPointers, BikeShopScript ; blocks, texts, scripts + db $00 ; connections + dw BikeShopObject ; objects - ; learnset - db %10100000 - db %01000011 - db %00001000 - db %11001110 - db %00000010 - db %10001000 - db %00000010 +BikeShopScript: ; 1d73c (7:573c) + jp EnableAutoTextBoxDrawing - db 0 ; padding +BikeShopTextPointers: ; 1d73f (7:573f) + dw BikeShopText1 + dw BikeShopText2 + dw BikeShopText3 -MeowthBaseStats: ; 38972 (e:4972) - db DEX_MEOWTH ; pokedex id - db 40 ; base hp - db 45 ; base attack - db 35 ; base defense - db 90 ; base speed - db 40 ; base special +BikeShopText1: ; 1d745 (7:5745) + db $08 ; asm + ld a, [$d75f] + bit 0, a + jr z, .asm_260d4 ; 0x1d74b + ld hl, UnnamedText_1d82f + call PrintText + jp .Done +.asm_260d4 ; 0x1d756 + ld b, BIKE_VOUCHER + call IsItemInBag + jr z, .asm_41190 ; 0x1d75b + ld hl, UnnamedText_1d81f + call PrintText + ld bc, (BICYCLE << 8) | 1 + call GiveItem + jr nc, .BagFull + ld a, BIKE_VOUCHER + ldh [$db], a + ld b, BANK(RemoveItemByID) + ld hl, RemoveItemByID + call Bankswitch + ld hl, $d75f + set 0, [hl] + ld hl, UnnamedText_1d824 + call PrintText + jr .Done +.BagFull + ld hl, UnnamedText_1d834 + call PrintText + jr .Done +.asm_41190 ; 0x1d78c + ld hl, UnnamedText_1d810 + call PrintText + xor a + ld [$cc26], a + ld [$cc2a], a + ld a, $3 + ld [$cc29], a + ld a, $1 + ld [$cc28], a + ld a, $2 + ld [$cc24], a + ld a, $1 + ld [$cc25], a + ld hl, $d730 + set 6, [hl] + ld hl, wTileMap + ld b, $4 + ld c, $f + call TextBoxBorder + call UpdateSprites + FuncCoord 2, 2 ; $c3ca + ld hl, Coord + ld de, BikeShopMenuText + call PlaceString + FuncCoord 8, 3 ; $c3e4 + ld hl, Coord + ld de, BikeShopMenuPrice + call PlaceString + ld hl, UnnamedText_1d815 + call PrintText + call HandleMenuInput + bit 1, a + jr nz, .asm_b7579 ; 0x1d7dc + ld hl, $d730 + res 6, [hl] + ld a, [$cc26] + and a + jr nz, .asm_b7579 ; 0x1d7e7 + ld hl, UnnamedText_1d81a + call PrintText +.asm_b7579 ; 0x1d7ef + ld hl, UnnamedText_1d82a + call PrintText +.Done + jp TextScriptEnd - db NORMAL ; species type 1 - db NORMAL ; species type 2 +BikeShopMenuText: ; 1d7f8 (7:57f8) + db "BICYCLE" + next "CANCEL@" - db 255 ; catch rate - db 69 ; base exp yield - db $55 ; sprite dimensions +BikeShopMenuPrice: ; 1d807 (7:5807) + db "¥1000000@" - dw MeowthPicFront - dw MeowthPicBack +UnnamedText_1d810: ; 1d810 (7:5810) + TX_FAR _UnnamedText_1d810 + db "@" - ; attacks known at lvl 0 - db SCRATCH - db GROWL - db 0 - db 0 +UnnamedText_1d815: ; 1d815 (7:5815) + TX_FAR _UnnamedText_1d815 + db "@" - db 0 ; growth rate +UnnamedText_1d81a: ; 1d81a (7:581a) + TX_FAR _UnnamedText_1d81a + db "@" - ; learnset - db %10100000 - db %10001111 - db %10001000 - db %11000001 - db %11000010 - db %00001000 - db %00000010 +UnnamedText_1d81f: ; 1d81f (7:581f) + TX_FAR _UnnamedText_1d81f + db "@" - db 0 ; padding +UnnamedText_1d824: ; 1d824 (7:5824) + TX_FAR _UnnamedText_1d824 ; 0x98eb2 + db $11, "@" -PersianBaseStats: ; 3898e (e:498e) - db DEX_PERSIAN ; pokedex id - db 65 ; base hp - db 70 ; base attack - db 60 ; base defense - db 115 ; base speed - db 65 ; base special +UnnamedText_1d82a: ; 1d82a (7:582a) + TX_FAR _UnnamedText_1d82a + db "@" - db NORMAL ; species type 1 - db NORMAL ; species type 2 +UnnamedText_1d82f: ; 1d82f (7:582f) + TX_FAR _UnnamedText_1d82f + db "@" - db 90 ; catch rate - db 148 ; base exp yield - db $77 ; sprite dimensions +UnnamedText_1d834: ; 1d834 (7:5834) + TX_FAR _UnnamedText_1d834 + db "@" - dw PersianPicFront - dw PersianPicBack +BikeShopText2: ; 1d839 (7:5839) + db $08 ; asm + ld hl, UnnamedText_1d843 + call PrintText + jp TextScriptEnd - ; attacks known at lvl 0 - db SCRATCH - db GROWL - db BITE - db SCREECH - - db 0 ; growth rate - - ; learnset - db %10100000 - db %11001111 - db %10001000 - db %11000001 - db %11000010 - db %00001000 - db %00000010 - - db 0 ; padding - -PsyduckBaseStats: ; 389aa (e:49aa) - db DEX_PSYDUCK ; pokedex id - db 50 ; base hp - db 52 ; base attack - db 48 ; base defense - db 55 ; base speed - db 50 ; base special - - db WATER ; species type 1 - db WATER ; species type 2 - - db 190 ; catch rate - db 80 ; base exp yield - db $55 ; sprite dimensions - - dw PsyduckPicFront - dw PsyduckPicBack - - ; attacks known at lvl 0 - db SCRATCH - db 0 - db 0 - db 0 +UnnamedText_1d843: ; 1d843 (7:5843) + TX_FAR _UnnamedText_1d843 + db "@" - db 0 ; growth rate +BikeShopText3: ; 1d848 (7:5848) + db $08 ; asm + ld a, [$d75f] + bit 0, a + ld hl, UnnamedText_1d861 + jr nz, .asm_34d2d ; 0x1d851 + ld hl, UnnamedText_1d85c +.asm_34d2d ; 0x1d856 + call PrintText + jp TextScriptEnd - ; learnset - db %10110001 - db %10111111 - db %00001111 - db %11001000 - db %11000010 - db %00001000 - db %00110010 +UnnamedText_1d85c: ; 1d85c (7:585c) + TX_FAR _UnnamedText_1d85c + db "@" - db 0 ; padding +UnnamedText_1d861: ; 1d861 (7:5861) + TX_FAR _UnnamedText_1d861 + db "@" -GolduckBaseStats: ; 389c6 (e:49c6) - db DEX_GOLDUCK ; pokedex id - db 80 ; base hp - db 82 ; base attack - db 78 ; base defense - db 85 ; base speed - db 80 ; base special +BikeShopObject: ; 0x1d866 (size=38) + db $e ; border tile - db WATER ; species type 1 - db WATER ; species type 2 + db $2 ; warps + db $7, $2, $4, $ff + db $7, $3, $4, $ff - db 75 ; catch rate - db 174 ; base exp yield - db $77 ; sprite dimensions + db $0 ; signs - dw GolduckPicFront - dw GolduckPicBack + db $3 ; people + db SPRITE_BIKE_SHOP_GUY, $2 + 4, $6 + 4, $ff, $ff, $1 ; person + db SPRITE_MOM_GEISHA, $6 + 4, $5 + 4, $fe, $1, $2 ; person + db SPRITE_BUG_CATCHER, $3 + 4, $1 + 4, $ff, $d1, $3 ; person - ; attacks known at lvl 0 - db SCRATCH - db TAIL_WHIP - db DISABLE - db 0 + ; warp-to + EVENT_DISP BIKE_SHOP_WIDTH, $7, $2 + EVENT_DISP BIKE_SHOP_WIDTH, $7, $3 - db 0 ; growth rate +BikeShopBlocks: ; 1d88c (7:588c) + INCBIN "maps/bikeshop.blk" - ; learnset - db %10110001 - db %11111111 - db %00001111 - db %11001000 - db %11000010 - db %00001000 - db %00110010 +LavenderHouse1_h: ; 0x1d89c to 0x1d8a8 (12 bytes) (bank=7) (id=149) + db HOUSE ; tileset + db LAVENDER_HOUSE_1_HEIGHT, LAVENDER_HOUSE_1_WIDTH ; dimensions (y, x) + dw LavenderHouse1Blocks, LavenderHouse1TextPointers, LavenderHouse1Script ; blocks, texts, scripts + db $00 ; connections + dw LavenderHouse1Object ; objects - db 0 ; padding +LavenderHouse1Script: ; 1d8a8 (7:58a8) + call EnableAutoTextBoxDrawing + ret -MankeyBaseStats: ; 389e2 (e:49e2) - db DEX_MANKEY ; pokedex id - db 40 ; base hp - db 80 ; base attack - db 35 ; base defense - db 70 ; base speed - db 35 ; base special +LavenderHouse1TextPointers: ; 1d8ac (7:58ac) + dw LavenderHouse1Text1 + dw LavenderHouse1Text2 + dw LavenderHouse1Text3 + dw LavenderHouse1Text4 + dw LavenderHouse1Text5 + dw LavenderHouse1Text6 - db FIGHTING ; species type 1 - db FIGHTING ; species type 2 +LavenderHouse1Text1: ; 1d8b8 (7:58b8) + db $08 ; asm + ld a, [$d7e0] + bit 7, a + jr nz, .asm_72e5d ; 0x1d8be + ld hl, UnnamedText_1d8d1 + call PrintText + jr .asm_6957f ; 0x1d8c6 +.asm_72e5d ; 0x1d8c8 + ld hl, UnnamedText_1d8d6 + call PrintText +.asm_6957f ; 0x1d8ce + jp TextScriptEnd - db 190 ; catch rate - db 74 ; base exp yield - db $55 ; sprite dimensions +UnnamedText_1d8d1: ; 1d8d1 (7:58d1) + TX_FAR _UnnamedText_1d8d1 + db "@" - dw MankeyPicFront - dw MankeyPicBack +UnnamedText_1d8d6: ; 1d8d6 (7:58d6) + TX_FAR _UnnamedText_1d8d6 + db "@" - ; attacks known at lvl 0 - db SCRATCH - db LEER - db 0 - db 0 +LavenderHouse1Text2: ; 1d8db (7:58db) + db $08 ; asm + ld a, [$d7e0] + bit 7, a + jr nz, .asm_06470 ; 0x1d8e1 + ld hl, UnnamedText_1d8f4 + call PrintText + jr .asm_3d208 ; 0x1d8e9 +.asm_06470 ; 0x1d8eb + ld hl, UnnamedText_1d8f9 + call PrintText +.asm_3d208 ; 0x1d8f1 + jp TextScriptEnd - db 0 ; growth rate +UnnamedText_1d8f4: ; 1d8f4 (7:58f4) + TX_FAR _UnnamedText_1d8f4 + db "@" - ; learnset - db %10110001 - db %10000011 - db %10001111 - db %11001001 - db %11000110 - db %10001000 - db %00100010 +UnnamedText_1d8f9: ; 1d8f9 (7:58f9) + TX_FAR _UnnamedText_1d8f9 + db "@" - db 0 ; padding +LavenderHouse1Text3: ; 1d8fe (7:58fe) + TX_FAR _LavenderHouse1Text3 + db $8 + ld a, PSYDUCK + call PlayCry + jp TextScriptEnd -PrimeapeBaseStats: ; 389fe (e:49fe) - db DEX_PRIMEAPE ; pokedex id - db 65 ; base hp - db 105 ; base attack - db 60 ; base defense - db 95 ; base speed - db 60 ; base special +LavenderHouse1Text4: ; 1d90b (7:590b) + TX_FAR _LavenderHouse1Text4 + db $8 + ld a, NIDORINO + call PlayCry + jp TextScriptEnd - db FIGHTING ; species type 1 - db FIGHTING ; species type 2 +LavenderHouse1Text5: ; 1d918 (7:5918) + db $08 ; asm + ld a, [$d76c] + bit 0, a + jr nz, .asm_15ac2 ; 0x1d91e + ld hl, UnnamedText_1d94c + call PrintText + ld bc, (POKE_FLUTE << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, ReceivedFluteText + call PrintText + ld hl, $d76c + set 0, [hl] + jr .asm_da749 ; 0x1d939 +.BagFull + ld hl, FluteNoRoomText + call PrintText + jr .asm_da749 ; 0x1d941 +.asm_15ac2 ; 0x1d943 + ld hl, MrFujiAfterFluteText + call PrintText +.asm_da749 ; 0x1d949 + jp TextScriptEnd - db 75 ; catch rate - db 149 ; base exp yield - db $77 ; sprite dimensions +UnnamedText_1d94c: ; 1d94c (7:594c) + TX_FAR _UnnamedText_1d94c + db "@" - dw PrimeapePicFront - dw PrimeapePicBack +ReceivedFluteText: ; 1d951 (7:5951) + TX_FAR _ReceivedFluteText + db $11 + TX_FAR _FluteExplanationText + db "@" - ; attacks known at lvl 0 - db SCRATCH - db LEER - db KARATE_CHOP - db FURY_SWIPES - - db 0 ; growth rate - - ; learnset - db %10110001 - db %11000011 - db %10001111 - db %11001001 - db %11000110 - db %10001000 - db %00100010 - - db 0 ; padding - -GrowlitheBaseStats: ; 38a1a (e:4a1a) - db DEX_GROWLITHE ; pokedex id - db 55 ; base hp - db 70 ; base attack - db 45 ; base defense - db 60 ; base speed - db 50 ; base special - - db FIRE ; species type 1 - db FIRE ; species type 2 - - db 190 ; catch rate - db 91 ; base exp yield - db $55 ; sprite dimensions - - dw GrowlithePicFront - dw GrowlithePicBack - - ; attacks known at lvl 0 - db BITE - db ROAR - db 0 - db 0 +FluteNoRoomText: ; 1d95b (7:595b) + TX_FAR _FluteNoRoomText + db "@" - db 5 ; growth rate - - ; learnset - db %10100000 - db %00000011 - db %01001000 - db %11001000 - db %11100011 - db %00001000 - db %00000010 - - db 0 ; padding - -ArcanineBaseStats: ; 38a36 (e:4a36) - db DEX_ARCANINE ; pokedex id - db 90 ; base hp - db 110 ; base attack - db 80 ; base defense - db 95 ; base speed - db 80 ; base special - - db FIRE ; species type 1 - db FIRE ; species type 2 - - db 75 ; catch rate - db 213 ; base exp yield - db $77 ; sprite dimensions - - dw ArcaninePicFront - dw ArcaninePicBack - - ; attacks known at lvl 0 - db ROAR - db EMBER - db LEER - db TAKE_DOWN - - db 5 ; growth rate - - ; learnset - db %10100000 - db %01000011 - db %01001000 - db %11101000 - db %11100011 - db %00001000 - db %00000010 - - db 0 ; padding - -PoliwagBaseStats: ; 38a52 (e:4a52) - db DEX_POLIWAG ; pokedex id - db 40 ; base hp - db 50 ; base attack - db 40 ; base defense - db 90 ; base speed - db 40 ; base special - - db WATER ; species type 1 - db WATER ; species type 2 - - db 255 ; catch rate - db 77 ; base exp yield - db $55 ; sprite dimensions - - dw PoliwagPicFront - dw PoliwagPicBack - - ; attacks known at lvl 0 - db BUBBLE - db 0 - db 0 - db 0 +MrFujiAfterFluteText: ; 1d960 (7:5960) + TX_FAR _MrFujiAfterFluteText + db "@" - db 3 ; growth rate +LavenderHouse1Text6: ; 1d965 (7:5965) + TX_FAR _LavenderHouse1Text6 + db "@" - ; learnset - db %10100000 - db %00111111 - db %00001000 - db %11010000 - db %10000010 - db %00101000 - db %00010010 - - db 0 ; padding - -PoliwhirlBaseStats: ; 38a6e (e:4a6e) - db DEX_POLIWHIRL ; pokedex id - db 65 ; base hp - db 65 ; base attack - db 65 ; base defense - db 90 ; base speed - db 50 ; base special - - db WATER ; species type 1 - db WATER ; species type 2 - - db 120 ; catch rate - db 131 ; base exp yield - db $66 ; sprite dimensions - - dw PoliwhirlPicFront - dw PoliwhirlPicBack - - ; attacks known at lvl 0 - db BUBBLE - db HYPNOSIS - db WATER_GUN - db 0 +LavenderHouse1Object: ; 0x1d96a (size=56) + db $a ; border tile - db 3 ; growth rate - - ; learnset - db %10110001 - db %00111111 - db %00001111 - db %11010110 - db %10000110 - db %00101000 - db %00110010 - - db 0 ; padding - -PoliwrathBaseStats: ; 38a8a (e:4a8a) - db DEX_POLIWRATH ; pokedex id - db 90 ; base hp - db 85 ; base attack - db 95 ; base defense - db 70 ; base speed - db 70 ; base special - - db WATER ; species type 1 - db FIGHTING ; species type 2 - - db 45 ; catch rate - db 185 ; base exp yield - db $77 ; sprite dimensions - - dw PoliwrathPicFront - dw PoliwrathPicBack - - ; attacks known at lvl 0 - db HYPNOSIS - db WATER_GUN - db DOUBLESLAP - db BODY_SLAM - - db 3 ; growth rate - - ; learnset - db %10110001 - db %01111111 - db %00001111 - db %11010110 - db %10000110 - db %00101000 - db %00110010 - - db 0 ; padding - -AbraBaseStats: ; 38aa6 (e:4aa6) - db DEX_ABRA ; pokedex id - db 25 ; base hp - db 20 ; base attack - db 15 ; base defense - db 90 ; base speed - db 105 ; base special - - db PSYCHIC ; species type 1 - db PSYCHIC ; species type 2 - - db 200 ; catch rate - db 73 ; base exp yield - db $55 ; sprite dimensions - - dw AbraPicFront - dw AbraPicBack - - ; attacks known at lvl 0 - db TELEPORT - db 0 - db 0 - db 0 + db $2 ; warps + db $7, $2, $2, $ff + db $7, $3, $2, $ff - db 3 ; growth rate + db $0 ; signs - ; learnset - db %10110001 - db %00000011 - db %00001111 - db %11110000 - db %10000111 - db %00111000 - db %01000011 + db $6 ; people + db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $3 + 4, $ff, $ff, $1 ; person + db SPRITE_LITTLE_GIRL, $3 + 4, $6 + 4, $ff, $d0, $2 ; person + db SPRITE_SLOWBRO, $4 + 4, $6 + 4, $ff, $d1, $3 ; person + db SPRITE_SLOWBRO, $3 + 4, $1 + 4, $ff, $ff, $4 ; person + db SPRITE_MR_FUJI, $1 + 4, $3 + 4, $ff, $ff, $5 ; person + db SPRITE_BOOK_MAP_DEX, $3 + 4, $3 + 4, $ff, $ff, $6 ; person - db 0 ; padding + ; warp-to + EVENT_DISP LAVENDER_HOUSE_1_WIDTH, $7, $2 + EVENT_DISP LAVENDER_HOUSE_1_WIDTH, $7, $3 -KadabraBaseStats: ; 38ac2 (e:4ac2) - db DEX_KADABRA ; pokedex id - db 40 ; base hp - db 35 ; base attack - db 30 ; base defense - db 105 ; base speed - db 120 ; base special +LavenderHouse2_h: ; 0x1d9a2 to 0x1d9ae (12 bytes) (bank=7) (id=151) + db HOUSE ; tileset + db LAVENDER_HOUSE_2_HEIGHT, LAVENDER_HOUSE_2_WIDTH ; dimensions (y, x) + dw LavenderHouse2Blocks, LavenderHouse2TextPointers, LavenderHouse2Script ; blocks, texts, scripts + db $00 ; connections + dw LavenderHouse2Object ; objects - db PSYCHIC ; species type 1 - db PSYCHIC ; species type 2 +LavenderHouse2Script: ; 1d9ae (7:59ae) + call EnableAutoTextBoxDrawing + ret - db 100 ; catch rate - db 145 ; base exp yield - db $66 ; sprite dimensions +LavenderHouse2TextPointers: ; 1d9b2 (7:59b2) + dw LavenderHouse2Text1 + dw LavenderHouse2Text2 - dw KadabraPicFront - dw KadabraPicBack +LavenderHouse2Text1: ; 1d9b6 (7:59b6) + TX_FAR _LavenderHouse2Text1 + db $8 + ld a, CUBONE + call PlayCry + jp TextScriptEnd - ; attacks known at lvl 0 - db TELEPORT - db CONFUSION - db DISABLE - db 0 +LavenderHouse2Text2: ; 1d9c3 (7:59c3) + db $08 ; asm + ld a, [$d7e0] + bit 7, a + jr nz, .asm_65711 ; 0x1d9c9 + ld hl, UnnamedText_1d9dc + call PrintText + jr .asm_64be1 ; 0x1d9d1 +.asm_65711 ; 0x1d9d3 + ld hl, UnnamedText_1d9e1 + call PrintText +.asm_64be1 ; 0x1d9d9 + jp TextScriptEnd - db 3 ; growth rate +UnnamedText_1d9dc: ; 1d9dc (7:59dc) + TX_FAR _UnnamedText_1d9dc + db "@" - ; learnset - db %10110001 - db %00000011 - db %00001111 - db %11111000 - db %10000111 - db %00111000 - db %01000011 +UnnamedText_1d9e1: ; 1d9e1 (7:59e1) + TX_FAR _UnnamedText_1d9e1 + db "@" - db 0 ; padding +LavenderHouse2Object: ; 0x1d9e6 (size=32) + db $a ; border tile -AlakazamBaseStats: ; 38ade (e:4ade) - db DEX_ALAKAZAM ; pokedex id - db 55 ; base hp - db 50 ; base attack - db 45 ; base defense - db 120 ; base speed - db 135 ; base special + db $2 ; warps + db $7, $2, $4, $ff + db $7, $3, $4, $ff - db PSYCHIC ; species type 1 - db PSYCHIC ; species type 2 + db $0 ; signs - db 50 ; catch rate - db 186 ; base exp yield - db $77 ; sprite dimensions + db $2 ; people + db SPRITE_SLOWBRO, $5 + 4, $3 + 4, $ff, $d1, $1 ; person + db SPRITE_BRUNETTE_GIRL, $4 + 4, $2 + 4, $ff, $d3, $2 ; person - dw AlakazamPicFront - dw AlakazamPicBack + ; warp-to + EVENT_DISP LAVENDER_HOUSE_2_WIDTH, $7, $2 + EVENT_DISP LAVENDER_HOUSE_2_WIDTH, $7, $3 - ; attacks known at lvl 0 - db TELEPORT - db CONFUSION - db DISABLE - db 0 +NameRater_h: ; 0x1da06 to 0x1da12 (12 bytes) (bank=7) (id=229) + db HOUSE ; tileset + db NAME_RATERS_HOUSE_HEIGHT, NAME_RATERS_HOUSE_WIDTH ; dimensions (y, x) + dw NameRaterBlocks, NameRaterTextPointers, NameRaterScript ; blocks, texts, scripts + db $00 ; connections + dw NameRaterObject ; objects - db 3 ; growth rate +NameRaterScript: ; 1da12 (7:5a12) + jp EnableAutoTextBoxDrawing - ; learnset - db %10110001 - db %01000011 - db %00001111 - db %11111000 - db %10000111 - db %00111000 - db %01000011 +Func_1da15: ; 1da15 (7:5a15) + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + ret - db 0 ; padding +Func_1da20: ; 1da20 (7:5a20) + ld hl, W_PARTYMON1OT + ld bc, $000b + ld a, [wWhichPokemon] + call AddNTimes + ld de, W_PLAYERNAME + ld c, $b + call .asm_1da47 + jr c, .asm_1da52 ; 0x1da34 $1c + ld hl, $d177 + ld bc, $002c + ld a, [wWhichPokemon] + call AddNTimes + ld de, $d359 + ld c, $2 +.asm_1da47 + ld a, [de] + cp [hl] + jr nz, .asm_1da52 ; 0x1da49 $7 + inc hl + inc de + dec c + jr nz, .asm_1da47 ; 0x1da4e $f7 + and a + ret +.asm_1da52 + scf + ret -MachopBaseStats: ; 38afa (e:4afa) - db DEX_MACHOP ; pokedex id - db 70 ; base hp - db 80 ; base attack - db 50 ; base defense - db 35 ; base speed - db 35 ; base special +NameRaterTextPointers: ; 1da54 (7:5a54) + dw NameRaterText1 - db FIGHTING ; species type 1 - db FIGHTING ; species type 2 +NameRaterText1: ; 1da56 (7:5a56) + db $8 + call SaveScreenTilesToBuffer2 + ld hl, UnnamedText_1dab3 + call Func_1da15 + jr nz, .asm_1daae ; 0x1da60 $4c + ld hl, UnnamedText_1dab8 + call PrintText + xor a + ld [$d07d], a + ld [$cfcb], a + ld [$cc35], a + call DisplayPartyMenu + push af + call GBPalWhiteOutWithDelay3 + call Func_3dbe + call LoadGBPal + pop af + jr c, .asm_1daae ; 0x1da80 $2c + call GetPartyMonName2 + call Func_1da20 + ld hl, UnnamedText_1dad1 + jr c, .asm_1daa8 ; 0x1da8b $1b + ld hl, UnnamedText_1dabd + call Func_1da15 + jr nz, .asm_1daae ; 0x1da93 $19 + ld hl, UnnamedText_1dac2 + call PrintText + ld b, BANK(Func_655c) + ld hl, Func_655c + call Bankswitch + jr c, .asm_1daae ; 0x1daa3 $9 + ld hl, UnnamedText_1dac7 +.asm_1daa8 + call PrintText + jp TextScriptEnd +.asm_1daae + ld hl, UnnamedText_1dacc + jr .asm_1daa8 ; 0x1dab1 $f5 - db 180 ; catch rate - db 88 ; base exp yield - db $55 ; sprite dimensions +UnnamedText_1dab3: ; 1dab3 (7:5ab3) + TX_FAR _UnnamedText_1dab3 + db "@" - dw MachopPicFront - dw MachopPicBack +UnnamedText_1dab8: ; 1dab8 (7:5ab8) + TX_FAR _UnnamedText_1dab8 + db "@" - ; attacks known at lvl 0 - db KARATE_CHOP - db 0 - db 0 - db 0 +UnnamedText_1dabd: ; 1dabd (7:5abd) + TX_FAR _UnnamedText_1dabd + db "@" - db 3 ; growth rate +UnnamedText_1dac2: ; 1dac2 (7:5ac2) + TX_FAR _UnnamedText_1dac2 + db "@" - ; learnset - db %10110001 - db %00000011 - db %00001111 - db %11001110 - db %10100110 - db %10001000 - db %00100010 +UnnamedText_1dac7: ; 1dac7 (7:5ac7) + TX_FAR _UnnamedText_1dac7 + db "@" - db 0 ; padding +UnnamedText_1dacc: ; 1dacc (7:5acc) + TX_FAR _UnnamedText_1dacc + db "@" -MachokeBaseStats: ; 38b16 (e:4b16) - db DEX_MACHOKE ; pokedex id - db 80 ; base hp - db 100 ; base attack - db 70 ; base defense - db 45 ; base speed - db 50 ; base special +UnnamedText_1dad1: ; 1dad1 (7:5ad1) + TX_FAR _UnnamedText_1dad1 + db "@" - db FIGHTING ; species type 1 - db FIGHTING ; species type 2 +NameRaterObject: ; 0x1dad6 (size=26) + db $a ; border tile - db 90 ; catch rate - db 146 ; base exp yield - db $77 ; sprite dimensions + db $2 ; warps + db $7, $2, $5, $ff + db $7, $3, $5, $ff - dw MachokePicFront - dw MachokePicBack + db $0 ; signs - ; attacks known at lvl 0 - db KARATE_CHOP - db LOW_KICK - db LEER - db 0 + db $1 ; people + db SPRITE_MR_MASTERBALL, $3 + 4, $5 + 4, $ff, $d2, $1 ; person - db 3 ; growth rate + ; warp-to + EVENT_DISP NAME_RATERS_HOUSE_WIDTH, $7, $2 + EVENT_DISP NAME_RATERS_HOUSE_WIDTH, $7, $3 - ; learnset - db %10110001 - db %00000011 - db %00001111 - db %11001110 - db %10100110 - db %10001000 - db %00100010 +VermilionHouse1_h: ; 0x1daf0 to 0x1dafc (12 bytes) (bank=7) (id=93) + db HOUSE ; tileset + db VERMILION_HOUSE_1_HEIGHT, VERMILION_HOUSE_1_WIDTH ; dimensions (y, x) + dw VermilionHouse1Blocks, VermilionHouse1TextPointers, VermilionHouse1Script ; blocks, texts, scripts + db $00 ; connections + dw VermilionHouse1Object ; objects - db 0 ; padding +VermilionHouse1Script: ; 1dafc (7:5afc) + call EnableAutoTextBoxDrawing + ret -MachampBaseStats: ; 38b32 (e:4b32) - db DEX_MACHAMP ; pokedex id - db 90 ; base hp - db 130 ; base attack - db 80 ; base defense - db 55 ; base speed - db 65 ; base special +VermilionHouse1TextPointers: ; 1db00 (7:5b00) + dw VermilionHouse1Text1 + dw VermilionHouse1Text2 + dw VermilionHouse1Text3 - db FIGHTING ; species type 1 - db FIGHTING ; species type 2 +VermilionHouse1Text1: ; 1db06 (7:5b06) + TX_FAR _VermilionHouse1Text1 + db "@" - db 45 ; catch rate - db 193 ; base exp yield - db $77 ; sprite dimensions +VermilionHouse1Text2: ; 1db0b (7:5b0b) + TX_FAR _VermilionHouse1Text2 + db $08 ; asm + ld a, PIDGEY + call PlayCry + call WaitForSoundToFinish + jp TextScriptEnd - dw MachampPicFront - dw MachampPicBack +VermilionHouse1Text3: ; 1db1b (7:5b1b) + TX_FAR _VermilionHouse1Text3 + db "@" - ; attacks known at lvl 0 - db KARATE_CHOP - db LOW_KICK - db LEER - db 0 +VermilionHouse1Object: ; 0x1db20 (size=38) + db $a ; border tile - db 3 ; growth rate + db $2 ; warps + db $7, $2, $4, $ff + db $7, $3, $4, $ff - ; learnset - db %10110001 - db %01000011 - db %00001111 - db %11001110 - db %10100110 - db %10001000 - db %00100010 + db $0 ; signs - db 0 ; padding + db $3 ; people + db SPRITE_BUG_CATCHER, $3 + 4, $5 + 4, $ff, $d2, $1 ; person + db SPRITE_BIRD, $5 + 4, $3 + 4, $fe, $2, $2 ; person + db SPRITE_PAPER_SHEET, $3 + 4, $4 + 4, $ff, $ff, $3 ; person -BellsproutBaseStats: ; 38b4e (e:4b4e) - db DEX_BELLSPROUT ; pokedex id - db 50 ; base hp - db 75 ; base attack - db 35 ; base defense - db 40 ; base speed - db 70 ; base special + ; warp-to + EVENT_DISP VERMILION_HOUSE_1_WIDTH, $7, $2 + EVENT_DISP VERMILION_HOUSE_1_WIDTH, $7, $3 - db GRASS ; species type 1 - db POISON ; species type 2 +VermilionDock_h: ; 0x1db46 to 0x1db52 (12 bytes) (bank=7) (id=94) + db SHIP_PORT ; tileset + db VERMILION_DOCK_HEIGHT, VERMILION_DOCK_WIDTH ; dimensions (y, x) + dw VermilionDockBlocks, VermilionDockTextPointers, VermilionDockScript ; blocks, texts, scripts + db $00 ; connections + dw VermilionDockObject ; objects - db 255 ; catch rate - db 84 ; base exp yield - db $55 ; sprite dimensions +VermilionDockScript: ; 1db52 (7:5b52) + call EnableAutoTextBoxDrawing + ld hl, $d803 + bit 4, [hl] + jr nz, .asm_1db8d ; 0x1db5a $31 + bit 0, [hl] + ret z + ld a, [$d42f] + cp $1 + ret nz + bit 2, [hl] + jp z, VermilionDock_1db9b + set 4, [hl] + call Delay3 + ld hl, $d730 + set 7, [hl] + ld hl, $ccd3 + ld a, $40 + ld [hli], a + ld [hli], a + ld [hl], a + ld a, $3 + ld [$cd38], a + xor a + ld [$c206], a + ld [$cd3b], a + dec a + ld [wJoypadForbiddenButtonsMask], a + ret +.asm_1db8d + bit 5, [hl] + ret nz + ld a, [$cd38] + and a + ret nz + ld [wJoypadForbiddenButtonsMask], a + set 5, [hl] + ret - dw BellsproutPicFront - dw BellsproutPicBack +VermilionDock_1db9b: ; 1db9b (7:5b9b) + set 2, [hl] + ld a, $ff + ld [wJoypadForbiddenButtonsMask], a + ld [$c0ee], a + call PlaySound + ld c, BANK(Music_Surfing) + ld a, MUSIC_SURFING + call PlayMusic + ld b, BANK(LoadSmokeTileFourTimes) + ld hl, LoadSmokeTileFourTimes + call Bankswitch + xor a + ld [$c102], a + ld c, $78 + call DelayFrames + ld b, $9c + call CopyScreenTileBufferToVRAM + FuncCoord 0, 10 ; $c468 + ld hl, Coord + ld bc, $0078 + ld a, $14 + call FillMemory + ld a, $1 + ld [$ffba], a + call Delay3 + xor a + ld [$ffba], a + ld [$cd3d], a + ld [$ff49], a + ld a, $58 + ld [$cd3e], a + ld hl, $d526 + ld c, [hl] + inc hl + ld b, [hl] + push bc + push hl + ld a, (SFX_02_54 - SFX_Headers_02) / 3 + call PlaySoundWaitForCurrent + ld a, $ff + ld [$cfcb], a + ld d, $0 + ld e, $8 +.asm_1dbfa + ld hl, $0002 + add hl, bc + ld a, l + ld [$d526], a + ld a, h + ld [$d527], a + push hl + push de + call ScheduleEastColumnRedraw + call VermilionDock_1dc59 + pop de + ld b, $10 +.asm_1dc11 + call VermilionDock_1dc42 + ld c, $8 +.asm_1dc16 + call VermilionDock_1dc7c + dec c + jr nz, .asm_1dc16 ; 0x1dc1a $fa + inc d + dec b + jr nz, .asm_1dc11 ; 0x1dc1e $f1 + pop bc + dec e + jr nz, .asm_1dbfa ; 0x1dc22 $d6 + xor a + ld [$ff4a], a + ld [$ffb0], a + call VermilionDock_1dc94 + ld a, $90 + ld [$ffb0], a + ld a, $1 + ld [$cfcb], a + pop hl + pop bc + ld [hl], b + dec hl + ld [hl], c + call LoadPlayerSpriteGraphics + ld hl, $d3ae + dec [hl] + ret - ; attacks known at lvl 0 - db VINE_WHIP - db GROWTH - db 0 - db 0 +VermilionDock_1dc42: ; 1dc42 (7:5c42) + push bc + push de + ld hl, $c311 + ld a, [$cd3d] + swap a + ld c, a + ld de, $0004 +.asm_1dc50 + inc [hl] + inc [hl] + add hl, de + dec c + jr nz, .asm_1dc50 ; 0x1dc54 $fa + pop de + pop bc + ret - db 3 ; growth rate +VermilionDock_1dc59: ; 1dc59 (7:5c59) + ld a, [$cd3e] + sub $10 + ld [$cd3e], a + ld c, a + ld b, $64 + ld a, [$cd3d] + inc a + ld [$cd3d], a + ld a, $1 + ld de, VermilionDockOAMBlock + call WriteOAMBlock + ret - ; learnset - db %00100100 - db %00000011 - db %00111000 - db %11000000 - db %00000011 - db %00001000 - db %00000110 - - db 0 ; padding - -WeepinbellBaseStats: ; 38b6a (e:4b6a) - db DEX_WEEPINBELL ; pokedex id - db 65 ; base hp - db 90 ; base attack - db 50 ; base defense - db 55 ; base speed - db 85 ; base special - - db GRASS ; species type 1 - db POISON ; species type 2 - - db 120 ; catch rate - db 151 ; base exp yield - db $66 ; sprite dimensions - - dw WeepinbellPicFront - dw WeepinbellPicBack - - ; attacks known at lvl 0 - db VINE_WHIP - db GROWTH - db WRAP - db 0 +VermilionDockOAMBlock: ; 1dc74 (7:5c74) + db $fc, $10 + db $fd, $10 + db $fe, $10 + db $ff, $10 - db 3 ; growth rate +VermilionDock_1dc7c: ; 1dc7c (7:5c7c) + ld h, d + ld l, $50 + call .asm_1dc86 + ld h, $0 + ld l, $80 +.asm_1dc86 + ld a, [$ff44] + cp l + jr nz, .asm_1dc86 ; 0x1dc89 $fb + ld a, h + ld [$ff43], a +.asm_1dc8e + ld a, [$ff44] + cp h + jr z, .asm_1dc8e ; 0x1dc91 $fb + ret - ; learnset - db %00100100 - db %00000011 - db %00111000 - db %11000000 - db %00000011 - db %00001000 - db %00000110 - - db 0 ; padding - -VictreebelBaseStats: ; 38b86 (e:4b86) - db DEX_VICTREEBEL ; pokedex id - db 80 ; base hp - db 105 ; base attack - db 65 ; base defense - db 70 ; base speed - db 100 ; base special - - db GRASS ; species type 1 - db POISON ; species type 2 - - db 45 ; catch rate - db 191 ; base exp yield - db $77 ; sprite dimensions - - dw VictreebelPicFront - dw VictreebelPicBack - - ; attacks known at lvl 0 - db SLEEP_POWDER - db STUN_SPORE - db ACID - db RAZOR_LEAF +VermilionDock_1dc94: ; 1dc94 (7:5c94) + ld hl, $cc5b + ld bc, $00b4 + ld a, $14 + call FillMemory + ld hl, $9940 + ld de, $cc5b + ld bc, $000c + call CopyVideoData + ld hl, $c754 + ld a, $d + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld a, (SFX_02_54 - SFX_Headers_02) / 3 + call PlaySound + ld c, $78 + call DelayFrames + ret - db 3 ; growth rate +VermilionDockTextPointers: ; 1dcbf (7:5cbf) + dw VermilionDockText1 - ; learnset - db %10100100 - db %01000011 - db %00111000 - db %11000000 - db %00000011 - db %00001000 - db %00000110 +VermilionDockText1: ; 1dcc1 (7:5cc1) + TX_FAR _VermilionDockText1 + db "@" - db 0 ; padding +VermilionDockObject: ; 0x1dcc6 (size=20) + db $f ; border tile -TentacoolBaseStats: ; 38ba2 (e:4ba2) - db DEX_TENTACOOL ; pokedex id - db 40 ; base hp - db 40 ; base attack - db 35 ; base defense - db 70 ; base speed - db 100 ; base special + db $2 ; warps + db $0, $e, $5, $ff + db $2, $e, $1, SS_ANNE_1 - db WATER ; species type 1 - db POISON ; species type 2 + db $0 ; signs - db 190 ; catch rate - db 105 ; base exp yield - db $55 ; sprite dimensions + db $0 ; people - dw TentacoolPicFront - dw TentacoolPicBack + ; warp-to + EVENT_DISP VERMILION_DOCK_WIDTH, $0, $e + EVENT_DISP VERMILION_DOCK_WIDTH, $2, $e ; SS_ANNE_1 - ; attacks known at lvl 0 - db ACID - db 0 - db 0 - db 0 +VermilionDockBlocks: ; 1dcda (7:5cda) + INCBIN "maps/vermiliondock.blk" - db 5 ; growth rate +CeladonMansion5_h: ; 0x1dd2e to 0x1dd3a (12 bytes) (bank=7) (id=132) + db HOUSE ; tileset + db CELADON_MANSION_5_HEIGHT, CELADON_MANSION_5_WIDTH ; dimensions (y, x) + dw CeladonMansion5Blocks, CeladonMansion5TextPointers, CeladonMansion5Script ; blocks, texts, scripts + db $00 ; connections + dw CeladonMansion5Object ; objects - ; learnset - db %00100100 - db %00111111 - db %00011000 - db %11000000 - db %10000011 - db %00001000 - db %00010110 - - db 0 ; padding - -TentacruelBaseStats: ; 38bbe (e:4bbe) - db DEX_TENTACRUEL ; pokedex id - db 80 ; base hp - db 70 ; base attack - db 65 ; base defense - db 100 ; base speed - db 120 ; base special - - db WATER ; species type 1 - db POISON ; species type 2 - - db 60 ; catch rate - db 205 ; base exp yield - db $66 ; sprite dimensions - - dw TentacruelPicFront - dw TentacruelPicBack - - ; attacks known at lvl 0 - db ACID - db SUPERSONIC - db WRAP - db 0 +CeladonMansion5Script: ; 1dd3a (7:5d3a) + jp EnableAutoTextBoxDrawing - db 5 ; growth rate +CeladonMansion5TextPointers: ; 1dd3d (7:5d3d) + dw CeladonMansion5Text1 + dw CeladonMansion5Text2 - ; learnset - db %00100100 - db %01111111 - db %00011000 - db %11000000 - db %10000011 - db %00001000 - db %00010110 +CeladonMansion5Text1: ; 1dd41 (7:5d41) + TX_FAR _CeladonMansion5Text1 + db "@" - db 0 ; padding +CeladonMansion5Text2: ; 1dd46 (7:5d46) + db $08 ; asm + ld bc,(EEVEE << 8) | 25 + call GivePokemon + jr nc, .asm_24365 ; 0x1dd4d + ld a, $45 + ld [$cc4d], a + ld a, $11 + call Predef +.asm_24365 ; 0x1dd59 + jp TextScriptEnd -GeodudeBaseStats: ; 38bda (e:4bda) - db DEX_GEODUDE ; pokedex id - db 40 ; base hp - db 80 ; base attack - db 100 ; base defense - db 20 ; base speed - db 30 ; base special +CeladonMansion5Object: ; 0x1dd5c (size=32) + db $a ; border tile - db ROCK ; species type 1 - db GROUND ; species type 2 + db $2 ; warps + db $7, $2, $2, CELADON_MANSION_4 + db $7, $3, $2, CELADON_MANSION_4 - db 255 ; catch rate - db 86 ; base exp yield - db $55 ; sprite dimensions + db $0 ; signs - dw GeodudePicFront - dw GeodudePicBack + db $2 ; people + db SPRITE_HIKER, $2 + 4, $2 + 4, $ff, $d0, $1 ; person + db SPRITE_BALL, $3 + 4, $4 + 4, $ff, $ff, $2 ; person - ; attacks known at lvl 0 - db TACKLE - db 0 - db 0 - db 0 + ; warp-to + EVENT_DISP CELADON_MANSION_5_WIDTH, $7, $2 ; CELADON_MANSION_4 + EVENT_DISP CELADON_MANSION_5_WIDTH, $7, $3 ; CELADON_MANSION_4 - db 3 ; growth rate +FuchsiaMart_h: ; 0x1dd7c to 0x1dd88 (12 bytes) (bank=7) (id=152) + db MART ; tileset + db FUCHSIA_MART_HEIGHT, FUCHSIA_MART_WIDTH ; dimensions (y, x) + dw FuchsiaMartBlocks, FuchsiaMartTextPointers, FuchsiaMartScript ; blocks, texts, scripts + db $00 ; connections + dw FuchsiaMartObject ; objects - ; learnset - db %10100001 - db %00000011 - db %00001111 - db %11001110 - db %00101110 - db %11001000 - db %00100010 +FuchsiaMartScript: ; 1dd88 (7:5d88) + jp EnableAutoTextBoxDrawing - db 0 ; padding +FuchsiaMartTextPointers: ; 1dd8b (7:5d8b) + dw FuchsiaMartText1 + dw FuchsiaMartText2 + dw FuchsiaMartText3 -GravelerBaseStats: ; 38bf6 (e:4bf6) - db DEX_GRAVELER ; pokedex id - db 55 ; base hp - db 95 ; base attack - db 115 ; base defense - db 35 ; base speed - db 45 ; base special +FuchsiaMartText2: ; 1dd91 (7:5d91) + TX_FAR _FuchsiaMartText2 + db "@" - db ROCK ; species type 1 - db GROUND ; species type 2 +FuchsiaMartText3: ; 1dd96 (7:5d96) + TX_FAR _FuchsiaMartText3 + db "@" - db 120 ; catch rate - db 134 ; base exp yield - db $66 ; sprite dimensions +FuchsiaMartObject: ; 0x1dd9b (size=38) + db $0 ; border tile - dw GravelerPicFront - dw GravelerPicBack + db $2 ; warps + db $7, $3, $0, $ff + db $7, $4, $0, $ff - ; attacks known at lvl 0 - db TACKLE - db DEFENSE_CURL - db 0 - db 0 + db $0 ; signs - db 3 ; growth rate + db $3 ; people + db SPRITE_MART_GUY, $5 + 4, $0 + 4, $ff, $d3, $1 ; person + db SPRITE_FAT_BALD_GUY, $2 + 4, $4 + 4, $ff, $ff, $2 ; person + db SPRITE_LASS, $5 + 4, $6 + 4, $fe, $1, $3 ; person - ; learnset - db %10100001 - db %00000011 - db %00001111 - db %11001110 - db %00101110 - db %11001000 - db %00100010 + ; warp-to + EVENT_DISP FUCHSIA_MART_WIDTH, $7, $3 + EVENT_DISP FUCHSIA_MART_WIDTH, $7, $4 - db 0 ; padding +FuchsiaMartBlocks: ; 1ddc1 (7:5dc1) + INCBIN "maps/fuchsiamart.blk" -GolemBaseStats: ; 38c12 (e:4c12) - db DEX_GOLEM ; pokedex id - db 80 ; base hp - db 110 ; base attack - db 130 ; base defense - db 45 ; base speed - db 55 ; base special +SaffronHouse1_h: ; 0x1ddd1 to 0x1dddd (12 bytes) (bank=7) (id=179) + db HOUSE ; tileset + db SAFFRON_HOUSE_1_HEIGHT, SAFFRON_HOUSE_1_WIDTH ; dimensions (y, x) + dw SaffronHouse1Blocks, SaffronHouse1TextPointers, SaffronHouse1Script ; blocks, texts, scripts + db $00 ; connections + dw SaffronHouse1Object ; objects - db ROCK ; species type 1 - db GROUND ; species type 2 +SaffronHouse1Script: ; 1dddd (7:5ddd) + jp EnableAutoTextBoxDrawing - db 45 ; catch rate - db 177 ; base exp yield - db $66 ; sprite dimensions +SaffronHouse1TextPointers: ; 1dde0 (7:5de0) + dw SaffronHouse1Text1 + dw SaffronHouse1Text2 + dw SaffronHouse1Text3 + dw SaffronHouse1Text4 - dw GolemPicFront - dw GolemPicBack +SaffronHouse1Text1: ; 1dde8 (7:5de8) + TX_FAR _SaffronHouse1Text1 + db "@" - ; attacks known at lvl 0 - db TACKLE - db DEFENSE_CURL - db 0 - db 0 +SaffronHouse1Text2: ; 1dded (7:5ded) + TX_FAR _SaffronHouse1Text2 + db $8 + ld a, PIDGEY + call PlayCry + jp TextScriptEnd - db 3 ; growth rate +SaffronHouse1Text3: ; 1ddfa (7:5dfa) + TX_FAR _SaffronHouse1Text3 + db "@" - ; learnset - db %10110001 - db %01000011 - db %00001111 - db %11001110 - db %00101110 - db %11001000 - db %00100010 +SaffronHouse1Text4: ; 1ddff (7:5dff) + TX_FAR _SaffronHouse1Text4 + db "@" - db 0 ; padding +SaffronHouse1Object: ; 0x1de04 (size=44) + db $a ; border tile -PonytaBaseStats: ; 38c2e (e:4c2e) - db DEX_PONYTA ; pokedex id - db 50 ; base hp - db 85 ; base attack - db 55 ; base defense - db 90 ; base speed - db 65 ; base special + db $2 ; warps + db $7, $2, $3, $ff + db $7, $3, $3, $ff - db FIRE ; species type 1 - db FIRE ; species type 2 + db $0 ; signs - db 190 ; catch rate - db 152 ; base exp yield - db $66 ; sprite dimensions + db $4 ; people + db SPRITE_BRUNETTE_GIRL, $3 + 4, $2 + 4, $ff, $d3, $1 ; person + db SPRITE_BIRD, $4 + 4, $0 + 4, $fe, $1, $2 ; person + db SPRITE_BUG_CATCHER, $1 + 4, $4 + 4, $ff, $d0, $3 ; person + db SPRITE_PAPER_SHEET, $3 + 4, $3 + 4, $ff, $ff, $4 ; person - dw PonytaPicFront - dw PonytaPicBack + ; warp-to + EVENT_DISP SAFFRON_HOUSE_1_WIDTH, $7, $2 + EVENT_DISP SAFFRON_HOUSE_1_WIDTH, $7, $3 - ; attacks known at lvl 0 - db EMBER - db 0 - db 0 - db 0 +SaffronHouse2_h: ; 0x1de30 to 0x1de3c (12 bytes) (bank=7) (id=183) + db HOUSE ; tileset + db SAFFRON_HOUSE_2_HEIGHT, SAFFRON_HOUSE_2_WIDTH ; dimensions (y, x) + dw SaffronHouse2Blocks, SaffronHouse2TextPointers, SaffronHouse2Script ; blocks, texts, scripts + db $00 ; connections + dw SaffronHouse2Object ; objects - db 0 ; growth rate +SaffronHouse2Script: ; 1de3c (7:5e3c) + jp EnableAutoTextBoxDrawing - ; learnset - db %11100000 - db %00000011 - db %00001000 - db %11000000 - db %11100011 - db %00001000 - db %00000010 +SaffronHouse2TextPointers: ; 1de3f (7:5e3f) + dw SaffronHouse2Text1 - db 0 ; padding +SaffronHouse2Text1: ; 1de41 (7:5e41) + db $08 ; asm + ld a, [$d7bd] + bit 0, a + jr nz, .asm_9e72b ; 0x1de47 + ld hl, TM29PreReceiveText + call PrintText + ld bc,(TM_29 << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, ReceivedTM29Text + call PrintText + ld hl, $d7bd + set 0, [hl] + jr .asm_fe4e1 ; 0x1de62 +.BagFull + ld hl, TM29NoRoomText + call PrintText + jr .asm_fe4e1 ; 0x1de6a +.asm_9e72b ; 0x1de6c + ld hl, TM29ExplanationText + call PrintText +.asm_fe4e1 ; 0x1de72 + jp TextScriptEnd -RapidashBaseStats: ; 38c4a (e:4c4a) - db DEX_RAPIDASH ; pokedex id - db 65 ; base hp - db 100 ; base attack - db 70 ; base defense - db 105 ; base speed - db 80 ; base special +TM29PreReceiveText: ; 1de75 (7:5e75) + TX_FAR _TM29PreReceiveText + db "@" - db FIRE ; species type 1 - db FIRE ; species type 2 +ReceivedTM29Text: ; 1de7a (7:5e7a) + TX_FAR _ReceivedTM29Text + db $0B, "@" - db 60 ; catch rate - db 192 ; base exp yield - db $77 ; sprite dimensions +TM29ExplanationText: ; 1de80 (7:5e80) + TX_FAR _TM29ExplanationText + db "@" - dw RapidashPicFront - dw RapidashPicBack +TM29NoRoomText: ; 1de85 (7:5e85) + TX_FAR _TM29NoRoomText + db "@" - ; attacks known at lvl 0 - db EMBER - db TAIL_WHIP - db STOMP - db GROWL +SaffronHouse2Object: ; 0x1de8a (size=26) + db $a ; border tile - db 0 ; growth rate + db $2 ; warps + db $7, $2, $7, $ff + db $7, $3, $7, $ff - ; learnset - db %11100000 - db %01000011 - db %00001000 - db %11000000 - db %11100011 - db %00001000 - db %00000010 + db $0 ; signs - db 0 ; padding + db $1 ; people + db SPRITE_FISHER, $3 + 4, $5 + 4, $ff, $d2, $1 ; person -SlowpokeBaseStats: ; 38c66 (e:4c66) - db DEX_SLOWPOKE ; pokedex id - db 90 ; base hp - db 65 ; base attack - db 65 ; base defense - db 15 ; base speed - db 40 ; base special + ; warp-to + EVENT_DISP SAFFRON_HOUSE_2_WIDTH, $7, $2 + EVENT_DISP SAFFRON_HOUSE_2_WIDTH, $7, $3 - db WATER ; species type 1 - db PSYCHIC ; species type 2 +DiglettsCaveRoute2_h: ; 0x1dea4 to 0x1deb0 (12 bytes) (bank=7) (id=46) + db CAVERN ; tileset + db DIGLETTS_CAVE_EXIT_HEIGHT, DIGLETTS_CAVE_EXIT_WIDTH ; dimensions (y, x) + dw DiglettsCaveRoute2Blocks, DiglettsCaveRoute2TextPointers, DiglettsCaveRoute2Script ; blocks, texts, scripts + db $00 ; connections + dw DiglettsCaveRoute2Object ; objects - db 190 ; catch rate - db 99 ; base exp yield - db $55 ; sprite dimensions +DiglettsCaveRoute2Script: ; 1deb0 (7:5eb0) + ld a, $d + ld [$d365], a + jp EnableAutoTextBoxDrawing - dw SlowpokePicFront - dw SlowpokePicBack +DiglettsCaveRoute2TextPointers: ; 1deb8 (7:5eb8) + dw DiglettsCaveRoute2Text1 - ; attacks known at lvl 0 - db CONFUSION - db 0 - db 0 - db 0 +DiglettsCaveRoute2Text1: ; 1deba (7:5eba) + TX_FAR _DiglettsCaveRoute2Text1 + db "@" - db 0 ; growth rate +DiglettsCaveRoute2Object: ; 0x1debf (size=34) + db $7d ; border tile - ; learnset - db %10100000 - db %10111111 - db %00001000 - db %11111110 - db %11100011 - db %00111000 - db %01110011 + db $3 ; warps + db $7, $2, $0, $ff + db $7, $3, $0, $ff + db $4, $4, $0, DIGLETTS_CAVE - db 0 ; padding + db $0 ; signs -SlowbroBaseStats: ; 38c82 (e:4c82) - db DEX_SLOWBRO ; pokedex id - db 95 ; base hp - db 75 ; base attack - db 110 ; base defense - db 30 ; base speed - db 80 ; base special + db $1 ; people + db SPRITE_FISHER, $3 + 4, $3 + 4, $ff, $ff, $1 ; person - db WATER ; species type 1 - db PSYCHIC ; species type 2 + ; warp-to + EVENT_DISP DIGLETTS_CAVE_EXIT_WIDTH, $7, $2 + EVENT_DISP DIGLETTS_CAVE_EXIT_WIDTH, $7, $3 + EVENT_DISP DIGLETTS_CAVE_EXIT_WIDTH, $4, $4 ; DIGLETTS_CAVE - db 75 ; catch rate - db 164 ; base exp yield - db $77 ; sprite dimensions +Route2House_h: ; 0x1dee1 to 0x1deed (12 bytes) (bank=7) (id=48) + db HOUSE ; tileset + db ROUTE_2_HOUSE_HEIGHT, ROUTE_2_HOUSE_WIDTH ; dimensions (y, x) + dw Route2HouseBlocks, Route2HouseTextPointers, Route2HouseScript ; blocks, texts, scripts + db $00 ; connections + dw Route2HouseObject ; objects - dw SlowbroPicFront - dw SlowbroPicBack +Route2HouseScript: ; 1deed (7:5eed) + jp EnableAutoTextBoxDrawing - ; attacks known at lvl 0 - db CONFUSION - db DISABLE - db HEADBUTT - db 0 +Route2HouseTextPointers: ; 1def0 (7:5ef0) + dw Route2HouseText1 + dw Route2HouseText2 - db 0 ; growth rate +Route2HouseText1: ; 1def4 (7:5ef4) + TX_FAR _Route2HouseText1 + db "@" - ; learnset - db %10110001 - db %11111111 - db %00001111 - db %11111110 - db %11100011 - db %00111000 - db %01110011 +Route2HouseText2: ; 1def9 (7:5ef9) + db $08 ; asm + ld a, $1 + ld [wWhichTrade], a + ld a, $54 + call Predef + jp TextScriptEnd - db 0 ; padding +Route2HouseObject: ; 0x1df07 (size=32) + db $a ; border tile -MagnemiteBaseStats: ; 38c9e (e:4c9e) - db DEX_MAGNEMITE ; pokedex id - db 25 ; base hp - db 35 ; base attack - db 70 ; base defense - db 45 ; base speed - db 95 ; base special + db $2 ; warps + db $7, $2, $2, $ff + db $7, $3, $2, $ff - db ELECTRIC ; species type 1 - db ELECTRIC ; species type 2 + db $0 ; signs - db 190 ; catch rate - db 89 ; base exp yield - db $55 ; sprite dimensions + db $2 ; people + db SPRITE_OAK_AIDE, $4 + 4, $2 + 4, $ff, $d3, $1 ; person + db SPRITE_GAMEBOY_KID_COPY, $1 + 4, $4 + 4, $ff, $d0, $2 ; person - dw MagnemitePicFront - dw MagnemitePicBack + ; warp-to + EVENT_DISP ROUTE_2_HOUSE_WIDTH, $7, $2 + EVENT_DISP ROUTE_2_HOUSE_WIDTH, $7, $3 - ; attacks known at lvl 0 - db TACKLE - db 0 - db 0 - db 0 +Route5Gate_h: ; 0x1df27 to 0x1df33 (12 bytes) (bank=7) (id=70) + db GATE ; tileset + db ROUTE_5_GATE_HEIGHT, ROUTE_5_GATE_WIDTH ; dimensions (y, x) + dw Route5GateBlocks, Route5GateTextPointers, Route5GateScript ; blocks, texts, scripts + db $00 ; connections + dw Route5GateObject ; objects - db 0 ; growth rate - - ; learnset - db %00100000 - db %00000011 - db %10001000 - db %11100001 - db %01000011 - db %00011000 - db %01000010 - - db 0 ; padding - -MagnetonBaseStats: ; 38cba (e:4cba) - db DEX_MAGNETON ; pokedex id - db 50 ; base hp - db 60 ; base attack - db 95 ; base defense - db 70 ; base speed - db 120 ; base special - - db ELECTRIC ; species type 1 - db ELECTRIC ; species type 2 - - db 60 ; catch rate - db 161 ; base exp yield - db $66 ; sprite dimensions - - dw MagnetonPicFront - dw MagnetonPicBack - - ; attacks known at lvl 0 - db TACKLE - db SONICBOOM - db THUNDERSHOCK - db 0 +Route5GateScript: ; 1df33 (7:5f33) + call EnableAutoTextBoxDrawing + ld a, [W_ROUTE5GATECURSCRIPT] + ld hl, Route5GateScriptPointers + jp CallFunctionInTable - db 0 ; growth rate +Route5GateScriptPointers: ; 1df3f (7:5f3f) + dw Route5GateScript0 + dw Route5GateScript1 - ; learnset - db %00100000 - db %01000011 - db %10001000 - db %11100001 - db %01000011 - db %00011000 - db %01000010 +Route5GateScript_1df43: ; 1df43 (7:5f43) + ld a, $40 + ld [$ccd3], a + ld a, $1 + ld [$cd38], a + jp Func_3486 - db 0 ; padding +Route5GateScript0: ; 1df50 (7:5f50) + ld a, [$d728] + bit 6, a + ret nz + ld hl, CoordsData_1df8f + call ArePlayerCoordsInArray + ret nc + ld a, $2 + ld [$d528], a + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld b, BANK(RemoveGuardDrink) + ld hl, RemoveGuardDrink + call Bankswitch + ld a, [$ffdb] + and a + jr nz, .asm_1df82 ; 0x1df70 $10 + ld a, $2 + ld [$ff8c], a + call DisplayTextID + call Route5GateScript_1df43 + ld a, $1 + ld [W_ROUTE5GATECURSCRIPT], a + ret +.asm_1df82 + ld a, $3 + ld [$ff8c], a + call DisplayTextID + ld hl, $d728 + set 6, [hl] + ret -FarfetchdBaseStats: ; 38cd6 (e:4cd6) - db DEX_FARFETCH_D ; pokedex id - db 52 ; base hp - db 65 ; base attack - db 55 ; base defense - db 60 ; base speed - db 58 ; base special +CoordsData_1df8f: ; 1df8f (7:5f8f) + db 3,3 + db 3,4 + db $ff - db NORMAL ; species type 1 - db FLYING ; species type 2 +Route5GateScript1: ; 1df94 (7:5f94) + ld a, [$cd38] + and a + ret nz + call Delay3 + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_ROUTE5GATECURSCRIPT], a + ret - db 45 ; catch rate - db 94 ; base exp yield - db $66 ; sprite dimensions +Route5GateTextPointers: ; 1dfa4 (7:5fa4) + dw Route5GateText1 + dw Route5GateText2 + dw Route5GateText3 - dw FarfetchdPicFront - dw FarfetchdPicBack +Route8GateText1: ; 1dfaa (7:5faa) +Route7GateText1: ; 1dfaa (7:5faa) +Route6GateText1: ; 1dfaa (7:5faa) +Route5GateText1: ; 1dfaa (7:5faa) + db $8 + ld a, [$d728] + bit 6, a + jr nz, .asm_88856 ; 0x1dfb0 $2c + ld b, BANK(RemoveGuardDrink) + ld hl, RemoveGuardDrink + call Bankswitch + ld a, [$ffdb] + and a + jr nz, .asm_768a2 ; 0x1dfbd $11 + ld hl, UnnamedText_1dfe7 + call PrintText + call Route5GateScript_1df43 + ld a, $1 + ld [W_ROUTE5GATECURSCRIPT], a + jp TextScriptEnd +.asm_768a2 ; 0x1dfd0 + ld hl, UnnamedText_1dfec + call PrintText + ld hl, $d728 + set 6, [hl] + jp TextScriptEnd +.asm_88856 ; 0x1dfde + ld hl, UnnamedText_1dff6 + call PrintText + jp TextScriptEnd - ; attacks known at lvl 0 - db PECK - db SAND_ATTACK - db 0 - db 0 +Route8GateText2: ; 1dfe7 (7:5fe7) +Route7GateText2: ; 1dfe7 (7:5fe7) +Route6GateText2: ; 1dfe7 (7:5fe7) +Route5GateText2: ; 1dfe7 (7:5fe7) +UnnamedText_1dfe7: ; 1dfe7 (7:5fe7) + TX_FAR _UnnamedText_1dfe7 + db "@" - db 0 ; growth rate +Route8GateText3: ; 1dfec (7:5fec) +Route7GateText3: ; 1dfec (7:5fec) +Route6GateText3: ; 1dfec (7:5fec) +Route5GateText3: ; 1dfec (7:5fec) +UnnamedText_1dfec: ; 1dfec (7:5fec) + TX_FAR _UnnamedText_8aaa9 ; 0x8aaa9 + db $11 + TX_FAR _UnnamedText_1dff1 ; 0x8aaef + db "@" - ; learnset - db %10101110 - db %00000011 - db %00001000 - db %11000000 - db %11000011 - db %00001000 - db %00001110 +UnnamedText_1dff6: ; 1dff6 (7:5ff6) + TX_FAR _UnnamedText_1dff6 + db "@" - db 0 ; padding +Route5GateObject: ; 0x1dffb (size=42) + db $a ; border tile -DoduoBaseStats: ; 38cf2 (e:4cf2) - db DEX_DODUO ; pokedex id - db 35 ; base hp - db 85 ; base attack - db 45 ; base defense - db 75 ; base speed - db 35 ; base special + db $4 ; warps + db $5, $3, $2, $ff + db $5, $4, $2, $ff + db $0, $3, $1, $ff + db $0, $4, $0, $ff - db NORMAL ; species type 1 - db FLYING ; species type 2 + db $0 ; signs - db 190 ; catch rate - db 96 ; base exp yield - db $55 ; sprite dimensions + db $1 ; people + db SPRITE_GUARD, $3 + 4, $1 + 4, $ff, $d3, $1 ; person - dw DoduoPicFront - dw DoduoPicBack + ; warp-to + EVENT_DISP ROUTE_5_GATE_WIDTH, $5, $3 + EVENT_DISP ROUTE_5_GATE_WIDTH, $5, $4 + EVENT_DISP ROUTE_5_GATE_WIDTH, $0, $3 + EVENT_DISP ROUTE_5_GATE_WIDTH, $0, $4 - ; attacks known at lvl 0 - db PECK - db 0 - db 0 - db 0 +Route5GateBlocks: ; 1e025 (7:6025) + INCBIN "maps/route5gate.blk" - db 0 ; growth rate +Route6Gate_h: ; 0x1e031 to 0x1e03d (12 bytes) (bank=7) (id=73) + db GATE ; tileset + db ROUTE_6_GATE_HEIGHT, ROUTE_6_GATE_WIDTH ; dimensions (y, x) + dw Route6GateBlocks, Route6GateTextPointers, Route6GateScript ; blocks, texts, scripts + db $00 ; connections + dw Route6GateObject ; objects - ; learnset - db %10101000 - db %00000011 - db %00001000 - db %11000000 - db %10000011 - db %00001100 - db %00001011 +Route6GateScript: ; 1e03d (7:603d) + call EnableAutoTextBoxDrawing + ld hl, Route6GateScriptPointers + ld a, [W_ROUTE6GATECURSCRIPT] + call CallFunctionInTable + ret - db 0 ; padding +Route6GateScriptPointers: ; 1e04a (7:604a) + dw Route6GateScript0 + dw Route6GateScript1 -DodrioBaseStats: ; 38d0e (e:4d0e) - db DEX_DODRIO ; pokedex id - db 60 ; base hp - db 110 ; base attack - db 70 ; base defense - db 100 ; base speed - db 60 ; base special +Route6GateScript0: ; 1e04e (7:604e) + ld a, [$d728] + bit 6, a + ret nz + ld hl, CoordsData_1e08c + call ArePlayerCoordsInArray + ret nc + ld a, $1 + ld [$d528], a + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld b, BANK(RemoveGuardDrink) + ld hl, RemoveGuardDrink + call Bankswitch + ld a, [$ffdb] + and a + jr nz, .asm_1e080 ; 0x1e06e $10 + ld a, $2 + ld [$ff8c], a + call DisplayTextID + call Func_1e0a1 + ld a, $1 + ld [W_ROUTE6GATECURSCRIPT], a + ret +.asm_1e080 + ld hl, $d728 + set 6, [hl] + ld a, $3 + ld [$ff8c], a + jp DisplayTextID - db NORMAL ; species type 1 - db FLYING ; species type 2 +CoordsData_1e08c: ; 1e08c (7:608c) + db $02,$03 + db $02,$04,$FF - db 45 ; catch rate - db 158 ; base exp yield - db $77 ; sprite dimensions +Route6GateScript1: ; 1e091 (7:6091) + ld a, [$cd38] + and a + ret nz + call Delay3 + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_ROUTE6GATECURSCRIPT], a + ret - dw DodrioPicFront - dw DodrioPicBack +Func_1e0a1: ; 1e0a1 (7:60a1) + ld hl, $d730 + set 7, [hl] + ld a, $80 + ld [$ccd3], a + ld a, $1 + ld [$cd38], a + xor a + ld [$c206], a + ld [$cd3b], a + ret - ; attacks known at lvl 0 - db PECK - db GROWL - db FURY_ATTACK - db 0 +Route6GateTextPointers: ; 1e0b8 (7:60b8) + dw Route6GateText1 + dw Route6GateText2 + dw Route6GateText3 - db 0 ; growth rate +Route6GateObject: ; 0x1e0be (size=42) + db $a ; border tile - ; learnset - db %10101000 - db %01000011 - db %00001000 - db %11000000 - db %10000011 - db %00001100 - db %00001011 + db $4 ; warps + db $5, $3, $2, $ff + db $5, $4, $2, $ff + db $0, $3, $1, $ff + db $0, $4, $1, $ff - db 0 ; padding + db $0 ; signs -SeelBaseStats: ; 38d2a (e:4d2a) - db DEX_SEEL ; pokedex id - db 65 ; base hp - db 45 ; base attack - db 55 ; base defense - db 45 ; base speed - db 70 ; base special + db $1 ; people + db SPRITE_GUARD, $2 + 4, $6 + 4, $ff, $d2, $1 ; person - db WATER ; species type 1 - db WATER ; species type 2 + ; warp-to + EVENT_DISP ROUTE_6_GATE_WIDTH, $5, $3 + EVENT_DISP ROUTE_6_GATE_WIDTH, $5, $4 + EVENT_DISP ROUTE_6_GATE_WIDTH, $0, $3 + EVENT_DISP ROUTE_6_GATE_WIDTH, $0, $4 - db 190 ; catch rate - db 100 ; base exp yield - db $66 ; sprite dimensions +Route6GateBlocks: ; 1e0e8 (7:60e8) + INCBIN "maps/route6gate.blk" - dw SeelPicFront - dw SeelPicBack +Route7Gate_h: ; 0x1e0f4 to 0x1e100 (12 bytes) (bank=7) (id=76) + db GATE ; tileset + db ROUTE_7_GATE_HEIGHT, ROUTE_7_GATE_WIDTH ; dimensions (y, x) + dw Route7GateBlocks, Route7GateTextPointers, Route7GateScript ; blocks, texts, scripts + db $00 ; connections + dw Route7GateObject ; objects - ; attacks known at lvl 0 - db HEADBUTT - db 0 - db 0 - db 0 +Route7GateScript: ; 1e100 (7:6100) + call EnableAutoTextBoxDrawing + ld a, [W_ROUTE7GATECURSCRIPT] + ld hl, Route7GateScriptPointers + call CallFunctionInTable + ret - db 0 ; growth rate +Route7GateScriptPointers: ; 1e10d (7:610d) + dw Route7GateScript0 + dw Route7GateScript1 - ; learnset - db %11100000 - db %10111111 - db %00001000 - db %11000000 - db %10000010 - db %00001000 - db %00110010 +Route7GateScript_1e111: ; 1e111 (7:6111) + ld hl, $d730 + set 7, [hl] + ld a, $20 + ld [$ccd3], a + ld a, $1 + ld [$cd38], a + xor a + ld [$c206], a + ld [$cd3b], a + ret - db 0 ; padding +Route7GateScript0: ; 1e128 (7:6128) + ld a, [$d728] + bit 6, a + ret nz + ld hl, CoordsData_1e167 + call ArePlayerCoordsInArray + ret nc + ld a, $8 + ld [$d528], a + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld b, BANK(RemoveGuardDrink) + ld hl, RemoveGuardDrink + call Bankswitch + ld a, [$ffdb] + and a + jr nz, .asm_1e15a ; 0x1e148 $10 + ld a, $2 + ld [$ff8c], a + call DisplayTextID + call Route7GateScript_1e111 + ld a, $1 + ld [W_ROUTE7GATECURSCRIPT], a + ret +.asm_1e15a + ld a, $3 + ld [$ff8c], a + call DisplayTextID + ld hl, $d728 + set 6, [hl] + ret -DewgongBaseStats: ; 38d46 (e:4d46) - db DEX_DEWGONG ; pokedex id - db 90 ; base hp - db 70 ; base attack - db 80 ; base defense - db 70 ; base speed - db 95 ; base special +CoordsData_1e167: ; 1e167 (7:6167) + db 3,3 + db 4,3 + db $ff - db WATER ; species type 1 - db ICE ; species type 2 +Route7GateScript1: ; 1e16c (7:616c) + ld a, [$cd38] + and a + ret nz + call Delay3 + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_ROUTE7GATECURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret - db 75 ; catch rate - db 176 ; base exp yield - db $66 ; sprite dimensions +Route7GateTextPointers: ; 1e17f (7:617f) + dw Route7GateText1 + dw Route7GateText2 + dw Route7GateText3 - dw DewgongPicFront - dw DewgongPicBack +Route7GateObject: ; 0x1e185 (size=42) + db $a ; border tile - ; attacks known at lvl 0 - db HEADBUTT - db GROWL - db AURORA_BEAM - db 0 + db $4 ; warps + db $3, $0, $3, $ff + db $4, $0, $3, $ff + db $3, $5, $0, $ff + db $4, $5, $1, $ff - db 0 ; growth rate + db $0 ; signs - ; learnset - db %11100000 - db %11111111 - db %00001000 - db %11000000 - db %10000010 - db %00001000 - db %00110010 + db $1 ; people + db SPRITE_GUARD, $1 + 4, $3 + 4, $ff, $d0, $1 ; person - db 0 ; padding + ; warp-to + EVENT_DISP ROUTE_7_GATE_WIDTH, $3, $0 + EVENT_DISP ROUTE_7_GATE_WIDTH, $4, $0 + EVENT_DISP ROUTE_7_GATE_WIDTH, $3, $5 + EVENT_DISP ROUTE_7_GATE_WIDTH, $4, $5 -GrimerBaseStats: ; 38d62 (e:4d62) - db DEX_GRIMER ; pokedex id - db 80 ; base hp - db 80 ; base attack - db 50 ; base defense - db 25 ; base speed - db 40 ; base special +Route7GateBlocks: ; 1e1af (7:61af) + INCBIN "maps/route7gate.blk" - db POISON ; species type 1 - db POISON ; species type 2 +Route8Gate_h: ; 0x1e1bb to 0x1e1c7 (12 bytes) (bank=7) (id=79) + db GATE ; tileset + db ROUTE_8_GATE_HEIGHT, ROUTE_8_GATE_WIDTH ; dimensions (y, x) + dw Route8GateBlocks, Route8GateTextPointers, Route8GateScript ; blocks, texts, scripts + db $00 ; connections + dw Route8GateObject ; objects - db 190 ; catch rate - db 90 ; base exp yield - db $55 ; sprite dimensions +Route8GateScript: ; 1e1c7 (7:61c7) + call EnableAutoTextBoxDrawing + ld hl, Route8GateScriptPointers + ld a, [W_ROUTE8GATECURSCRIPT] + jp CallFunctionInTable - dw GrimerPicFront - dw GrimerPicBack +Route8GateScriptPointers: ; 1e1d3 (7:61d3) + dw Route8GateScript0 + dw Route8GateScript1 - ; attacks known at lvl 0 - db POUND - db DISABLE - db 0 - db 0 +Route8GateScript_1e1d7: ; 1e1d7 (7:61d7) + ld hl, $d730 + set 7, [hl] + ld a, $10 + ld [$ccd3], a + ld a, $1 + ld [$cd38], a + xor a + ld [$c206], a + ld [$cd3b], a + ret - db 0 ; growth rate +Route8GateScript0: ; 1e1ee (7:61ee) + ld a, [$d728] + bit 6, a + ret nz + ld hl, CoordsData_1e22c + call ArePlayerCoordsInArray + ret nc + ld a, $2 + ld [$d528], a + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld b, BANK(RemoveGuardDrink) + ld hl, RemoveGuardDrink + call Bankswitch + ld a, [$ffdb] + and a + jr nz, .asm_1e220 ; 0x1e20e $10 + ld a, $2 + ld [$ff8c], a + call DisplayTextID + call Route8GateScript_1e1d7 + ld a, $1 + ld [W_ROUTE8GATECURSCRIPT], a + ret +.asm_1e220 + ld hl, $d728 + set 6, [hl] + ld a, $3 + ld [$ff8c], a + jp DisplayTextID - ; learnset - db %10100000 - db %00000000 - db %10011000 - db %11000001 - db %00101010 - db %01001000 - db %00000010 - - db 0 ; padding - -MukBaseStats: ; 38d7e (e:4d7e) - db DEX_MUK ; pokedex id - db 105 ; base hp - db 105 ; base attack - db 75 ; base defense - db 50 ; base speed - db 65 ; base special - - db POISON ; species type 1 - db POISON ; species type 2 - - db 75 ; catch rate - db 157 ; base exp yield - db $77 ; sprite dimensions - - dw MukPicFront - dw MukPicBack - - ; attacks known at lvl 0 - db POUND - db DISABLE - db POISON_GAS - db 0 +CoordsData_1e22c: ; 1e22c (7:622c) + db 3,2 + db 4,2 + db $ff - db 0 ; growth rate +Route8GateScript1: ; 1e231 (7:6231) + ld a, [$cd38] + and a + ret nz + call Delay3 + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_ROUTE8GATECURSCRIPT], a + ret - ; learnset - db %10100000 - db %01000000 - db %10011000 - db %11000001 - db %00101010 - db %01001000 - db %00000010 - - db 0 ; padding - -ShellderBaseStats: ; 38d9a (e:4d9a) - db DEX_SHELLDER ; pokedex id - db 30 ; base hp - db 65 ; base attack - db 100 ; base defense - db 40 ; base speed - db 45 ; base special - - db WATER ; species type 1 - db WATER ; species type 2 - - db 190 ; catch rate - db 97 ; base exp yield - db $55 ; sprite dimensions - - dw ShellderPicFront - dw ShellderPicBack - - ; attacks known at lvl 0 - db TACKLE - db WITHDRAW - db 0 - db 0 +Route8GateTextPointers: ; 1e241 (7:6241) + dw Route8GateText1 + dw Route8GateText2 + dw Route8GateText3 - db 5 ; growth rate +Route8GateObject: ; 0x1e247 (size=42) + db $a ; border tile - ; learnset - db %00100000 - db %00111111 - db %00001000 - db %11100000 - db %01001011 - db %01001000 - db %00010011 - - db 0 ; padding - -CloysterBaseStats: ; 38db6 (e:4db6) - db DEX_CLOYSTER ; pokedex id - db 50 ; base hp - db 95 ; base attack - db 180 ; base defense - db 70 ; base speed - db 85 ; base special - - db WATER ; species type 1 - db ICE ; species type 2 - - db 60 ; catch rate - db 203 ; base exp yield - db $77 ; sprite dimensions - - dw CloysterPicFront - dw CloysterPicBack - - ; attacks known at lvl 0 - db WITHDRAW - db SUPERSONIC - db CLAMP - db AURORA_BEAM - - db 5 ; growth rate - - ; learnset - db %00100000 - db %01111111 - db %00001000 - db %11100000 - db %01001011 - db %01001000 - db %00010011 - - db 0 ; padding - -GastlyBaseStats: ; 38dd2 (e:4dd2) - db DEX_GASTLY ; pokedex id - db 30 ; base hp - db 35 ; base attack - db 30 ; base defense - db 80 ; base speed - db 100 ; base special - - db GHOST ; species type 1 - db POISON ; species type 2 - - db 190 ; catch rate - db 95 ; base exp yield - db $77 ; sprite dimensions - - dw GastlyPicFront - dw GastlyPicBack - - ; attacks known at lvl 0 - db LICK - db CONFUSE_RAY - db NIGHT_SHADE - db 0 + db $4 ; warps + db $3, $0, $0, $ff + db $4, $0, $1, $ff + db $3, $5, $2, $ff + db $4, $5, $3, $ff - db 3 ; growth rate + db $0 ; signs - ; learnset - db %00100000 - db %00000000 - db %10011000 - db %11010001 - db %00001010 - db %01101010 - db %00000010 - - db 0 ; padding - -HaunterBaseStats: ; 38dee (e:4dee) - db DEX_HAUNTER ; pokedex id - db 45 ; base hp - db 50 ; base attack - db 45 ; base defense - db 95 ; base speed - db 115 ; base special - - db GHOST ; species type 1 - db POISON ; species type 2 - - db 90 ; catch rate - db 126 ; base exp yield - db $66 ; sprite dimensions - - dw HaunterPicFront - dw HaunterPicBack - - ; attacks known at lvl 0 - db LICK - db CONFUSE_RAY - db NIGHT_SHADE - db 0 + db $1 ; people + db SPRITE_GUARD, $1 + 4, $2 + 4, $ff, $d0, $1 ; person - db 3 ; growth rate + ; warp-to + EVENT_DISP ROUTE_8_GATE_WIDTH, $3, $0 + EVENT_DISP ROUTE_8_GATE_WIDTH, $4, $0 + EVENT_DISP ROUTE_8_GATE_WIDTH, $3, $5 + EVENT_DISP ROUTE_8_GATE_WIDTH, $4, $5 - ; learnset - db %00100000 - db %00000000 - db %10011000 - db %11010001 - db %00001010 - db %01101010 - db %00000010 - - db 0 ; padding - -GengarBaseStats: ; 38e0a (e:4e0a) - db DEX_GENGAR ; pokedex id - db 60 ; base hp - db 65 ; base attack - db 60 ; base defense - db 110 ; base speed - db 130 ; base special - - db GHOST ; species type 1 - db POISON ; species type 2 - - db 45 ; catch rate - db 190 ; base exp yield - db $66 ; sprite dimensions - - dw GengarPicFront - dw GengarPicBack - - ; attacks known at lvl 0 - db LICK - db CONFUSE_RAY - db NIGHT_SHADE - db 0 +Route8GateBlocks: ; 1e271 (7:6271) + INCBIN "maps/route8gate.blk" - db 3 ; growth rate +UndergroundPathEntranceRoute8_h: ; 0x1e27d to 0x1e289 (12 bytes) (bank=7) (id=80) + db GATE ; tileset + db PATH_ENTRANCE_ROUTE_8_HEIGHT, PATH_ENTRANCE_ROUTE_8_WIDTH ; dimensions (y, x) + dw UndergroundPathEntranceRoute8Blocks, UndergroundPathEntranceRoute8TextPointers, UndergroundPathEntranceRoute8Script ; blocks, texts, scripts + db $00 ; connections + dw UndergroundPathEntranceRoute8Object ; objects - ; learnset - db %10110001 - db %01000011 - db %10011111 - db %11010001 - db %10001110 - db %01101010 - db %00100010 - - db 0 ; padding - -OnixBaseStats: ; 38e26 (e:4e26) - db DEX_ONIX ; pokedex id - db 35 ; base hp - db 45 ; base attack - db 160 ; base defense - db 70 ; base speed - db 30 ; base special - - db ROCK ; species type 1 - db GROUND ; species type 2 - - db 45 ; catch rate - db 108 ; base exp yield - db $77 ; sprite dimensions - - dw OnixPicFront - dw OnixPicBack - - ; attacks known at lvl 0 - db TACKLE - db SCREECH - db 0 - db 0 +UndergroundPathEntranceRoute8Script: ; 1e289 (7:6289) + ld a, $13 + ld [$d365], a + jp EnableAutoTextBoxDrawing - db 0 ; growth rate +UndergroundPathEntranceRoute8TextPointers: ; 1e291 (7:6291) + dw UndergroundPathEntranceRoute8Text1 - ; learnset - db %10100000 - db %00000011 - db %00001000 - db %11001110 - db %10001010 - db %11001000 - db %00100010 +UndergroundPathEntranceRoute8Text1: ; 1e293 (7:6293) + TX_FAR _UndergroundPathEntRoute8Text1 + db "@" - db 0 ; padding +UndergroundPathEntranceRoute8Object: ; 0x1e298 (size=34) + db $a ; border tile -DrowzeeBaseStats: ; 38e42 (e:4e42) - db DEX_DROWZEE ; pokedex id - db 60 ; base hp - db 48 ; base attack - db 45 ; base defense - db 42 ; base speed - db 90 ; base special + db $3 ; warps + db $7, $3, $4, $ff + db $7, $4, $4, $ff + db $4, $4, $1, UNDERGROUND_PATH_WE - db PSYCHIC ; species type 1 - db PSYCHIC ; species type 2 + db $0 ; signs - db 190 ; catch rate - db 102 ; base exp yield - db $66 ; sprite dimensions + db $1 ; people + db SPRITE_GIRL, $4 + 4, $3 + 4, $ff, $ff, $1 ; person - dw DrowzeePicFront - dw DrowzeePicBack + ; warp-to + EVENT_DISP PATH_ENTRANCE_ROUTE_8_WIDTH, $7, $3 + EVENT_DISP PATH_ENTRANCE_ROUTE_8_WIDTH, $7, $4 + EVENT_DISP PATH_ENTRANCE_ROUTE_8_WIDTH, $4, $4 ; UNDERGROUND_PATH_WE - ; attacks known at lvl 0 - db POUND - db HYPNOSIS - db 0 - db 0 +PowerPlant_h: ; 0x1e2ba to 0x1e2c6 (12 bytes) (bank=7) (id=83) + db FACILITY ; tileset + db POWER_PLANT_HEIGHT, POWER_PLANT_WIDTH ; dimensions (y, x) + dw PowerPlantBlocks, PowerPlantTextPointers, PowerPlantScript ; blocks, texts, scripts + db $00 ; connections + dw PowerPlantObject ; objects - db 0 ; growth rate +PowerPlantScript: ; 1e2c6 (7:62c6) + call EnableAutoTextBoxDrawing + ld hl, PowerPlantTrainerHeaders + ld de, PowerPlantScriptPointers + ld a, [W_POWERPLANTCURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_POWERPLANTCURSCRIPT], a + ret - ; learnset - db %10110001 - db %00000011 - db %00001111 - db %11110000 - db %10000111 - db %00111010 - db %01000011 +PowerPlantScriptPointers: ; 1e2d9 (7:62d9) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle - db 0 ; padding +PowerPlantTextPointers: ; 1e2df (7:62df) + dw PowerPlantText1 + dw PowerPlantText2 + dw PowerPlantText3 + dw PowerPlantText4 + dw PowerPlantText5 + dw PowerPlantText6 + dw PowerPlantText7 + dw PowerPlantText8 + dw PowerPlantText9 + dw Predef5CText + dw Predef5CText + dw Predef5CText + dw Predef5CText + dw Predef5CText -HypnoBaseStats: ; 38e5e (e:4e5e) - db DEX_HYPNO ; pokedex id - db 85 ; base hp - db 73 ; base attack - db 70 ; base defense - db 67 ; base speed - db 115 ; base special +PowerPlantTrainerHeaders: ; 1e2fb (7:62fb) +PowerPlantTrainerHeader0: ; 1e2fb (7:62fb) + db 1 ; flag's bit + db 0 ; view range + dw $d7d3 ; flag's byte + dw VoltorbBattleText ; TextBeforeBattle + dw VoltorbBattleText ; TextAfterBattle + dw VoltorbBattleText ; TextEndBattle + dw VoltorbBattleText ; TextEndBattle - db PSYCHIC ; species type 1 - db PSYCHIC ; species type 2 +PowerPlantTrainerHeader1: ; 1e307 (7:6307) + db 2 ; flag's bit + db 0 ; view range + dw $d7d3 ; flag's byte + dw VoltorbBattleText ; TextBeforeBattle + dw VoltorbBattleText ; TextAfterBattle + dw VoltorbBattleText ; TextEndBattle + dw VoltorbBattleText ; TextEndBattle - db 75 ; catch rate - db 165 ; base exp yield - db $77 ; sprite dimensions +PowerPlantTrainerHeader2: ; 1e313 (7:6313) + db 3 ; flag's bit + db 0 ; view range + dw $d7d3 ; flag's byte + dw VoltorbBattleText ; TextBeforeBattle + dw VoltorbBattleText ; TextAfterBattle + dw VoltorbBattleText ; TextEndBattle + dw VoltorbBattleText ; TextEndBattle - dw HypnoPicFront - dw HypnoPicBack +PowerPlantTrainerHeader3: ; 1e31f (7:631f) + db 4 ; flag's bit + db 0 ; view range + dw $d7d3 ; flag's byte + dw VoltorbBattleText ; TextBeforeBattle + dw VoltorbBattleText ; TextAfterBattle + dw VoltorbBattleText ; TextEndBattle + dw VoltorbBattleText ; TextEndBattle - ; attacks known at lvl 0 - db POUND - db HYPNOSIS - db DISABLE - db CONFUSION +PowerPlantTrainerHeader4: ; 1e32b (7:632b) + db 5 ; flag's bit + db 0 ; view range + dw $d7d3 ; flag's byte + dw VoltorbBattleText ; TextBeforeBattle + dw VoltorbBattleText ; TextAfterBattle + dw VoltorbBattleText ; TextEndBattle + dw VoltorbBattleText ; TextEndBattle - db 0 ; growth rate +PowerPlantTrainerHeader5: ; 1e337 (7:6337) + db 6 ; flag's bit + db 0 ; view range + dw $d7d3 ; flag's byte + dw VoltorbBattleText ; TextBeforeBattle + dw VoltorbBattleText ; TextAfterBattle + dw VoltorbBattleText ; TextEndBattle + dw VoltorbBattleText ; TextEndBattle - ; learnset - db %10110001 - db %01000011 - db %00001111 - db %11110000 - db %10000111 - db %00111010 - db %01000011 +PowerPlantTrainerHeader6: ; 1e343 (7:6343) + db 7 ; flag's bit + db 0 ; view range + dw $d7d3 ; flag's byte + dw VoltorbBattleText ; TextBeforeBattle + dw VoltorbBattleText ; TextAfterBattle + dw VoltorbBattleText ; TextEndBattle + dw VoltorbBattleText ; TextEndBattle - db 0 ; padding +PowerPlantTrainerHeader7: ; 1e34f (7:634f) + db 8 ; flag's bit + db 0 ; view range + dw $d7d3 ; flag's byte + dw VoltorbBattleText ; TextBeforeBattle + dw VoltorbBattleText ; TextAfterBattle + dw VoltorbBattleText ; TextEndBattle + dw VoltorbBattleText ; TextEndBattle -KrabbyBaseStats: ; 38e7a (e:4e7a) - db DEX_KRABBY ; pokedex id - db 30 ; base hp - db 105 ; base attack - db 90 ; base defense - db 50 ; base speed - db 25 ; base special +PowerPlantTrainerHeader8: ; 1e35b (7:635b) + db 9 ; flag's bit + db 0 ; view range + dw $d7d3 ; flag's byte + dw ZapdosBattleText ; TextBeforeBattle + dw ZapdosBattleText ; TextAfterBattle + dw ZapdosBattleText ; TextEndBattle + dw ZapdosBattleText ; TextEndBattle - db WATER ; species type 1 - db WATER ; species type 2 + db $ff - db 225 ; catch rate - db 115 ; base exp yield - db $55 ; sprite dimensions +asm_234cc: ; 1e368 (7:6368) + call TalkToTrainer + ld a, [W_CURMAPSCRIPT] + ld [W_POWERPLANTCURSCRIPT], a + jp TextScriptEnd - dw KrabbyPicFront - dw KrabbyPicBack +PowerPlantText1: ; 1e374 (7:6374) + db $8 ; asm + ld hl, PowerPlantTrainerHeader0 ; $62fb + jr asm_234cc ; 0x1e378 $ee - ; attacks known at lvl 0 - db BUBBLE - db LEER - db 0 - db 0 +PowerPlantText2: ; 1e37a (7:637a) + db $8 ; asm + ld hl, PowerPlantTrainerHeader1 ; $6307 + jr asm_234cc ; 0x1e37e $e8 - db 0 ; growth rate +PowerPlantText3: ; 1e380 (7:6380) + db $8 ; asm + ld hl, PowerPlantTrainerHeader2 ; $6313 + jr asm_234cc ; 0x1e384 $e2 - ; learnset - db %10100100 - db %00111111 - db %00001000 - db %11000000 - db %00000010 - db %00001000 - db %00110110 - - db 0 ; padding - -KinglerBaseStats: ; 38e96 (e:4e96) - db DEX_KINGLER ; pokedex id - db 55 ; base hp - db 130 ; base attack - db 115 ; base defense - db 75 ; base speed - db 50 ; base special - - db WATER ; species type 1 - db WATER ; species type 2 - - db 60 ; catch rate - db 206 ; base exp yield - db $77 ; sprite dimensions - - dw KinglerPicFront - dw KinglerPicBack - - ; attacks known at lvl 0 - db BUBBLE - db LEER - db VICEGRIP - db 0 +PowerPlantText4: ; 1e386 (7:6386) + db $8 ; asm + ld hl, PowerPlantTrainerHeader3 ; $631f + jr asm_234cc ; 0x1e38a $dc - db 0 ; growth rate +PowerPlantText5: ; 1e38c (7:638c) + db $8 ; asm + ld hl, PowerPlantTrainerHeader4 ; $632b + jr asm_234cc ; 0x1e390 $d6 - ; learnset - db %10100100 - db %01111111 - db %00001000 - db %11000000 - db %00000010 - db %00001000 - db %00110110 +PowerPlantText6: ; 1e392 (7:6392) + db $8 ; asm + ld hl, PowerPlantTrainerHeader5 ; $6337 + jr asm_234cc ; 0x1e396 $d0 - db 0 ; padding +PowerPlantText7: ; 1e398 (7:6398) + db $8 ; asm + ld hl, PowerPlantTrainerHeader6 ; $6343 + jr asm_234cc ; 0x1e39c $ca -VoltorbBaseStats: ; 38eb2 (e:4eb2) - db DEX_VOLTORB ; pokedex id - db 40 ; base hp - db 30 ; base attack - db 50 ; base defense - db 100 ; base speed - db 55 ; base special +PowerPlantText8: ; 1e39e (7:639e) + db $8 ; asm + ld hl, PowerPlantTrainerHeader7 ; $634f + jr asm_234cc ; 0x1e3a2 $c4 - db ELECTRIC ; species type 1 - db ELECTRIC ; species type 2 +PowerPlantText9: ; 1e3a4 (7:63a4) + db $8 ; asm + ld hl, PowerPlantTrainerHeader8 ; $635b + jr asm_234cc ; 0x1e3a8 $be - db 190 ; catch rate - db 103 ; base exp yield - db $55 ; sprite dimensions +VoltorbBattleText: ; 1e3aa (7:63aa) + TX_FAR _VoltorbBattleText + db "@" - dw VoltorbPicFront - dw VoltorbPicBack +ZapdosBattleText: ; 1e3af (7:63af) + TX_FAR _ZapdosBattleText + db $8 + ld a, ZAPDOS + call PlayCry + call WaitForSoundToFinish + jp TextScriptEnd - ; attacks known at lvl 0 - db TACKLE - db SCREECH - db 0 - db 0 +PowerPlantObject: ; 0x1e3bf (size=135) + db $2e ; border tile - db 0 ; growth rate + db $3 ; warps + db $23, $4, $3, $ff + db $23, $5, $3, $ff + db $b, $0, $3, $ff - ; learnset - db %00100000 - db %00000001 - db %10001000 - db %11100001 - db %01001011 - db %01011000 - db %01000010 - - db 0 ; padding - -ElectrodeBaseStats: ; 38ece (e:4ece) - db DEX_ELECTRODE ; pokedex id - db 60 ; base hp - db 50 ; base attack - db 70 ; base defense - db 140 ; base speed - db 80 ; base special - - db ELECTRIC ; species type 1 - db ELECTRIC ; species type 2 - - db 60 ; catch rate - db 150 ; base exp yield - db $55 ; sprite dimensions - - dw ElectrodePicFront - dw ElectrodePicBack - - ; attacks known at lvl 0 - db TACKLE - db SCREECH - db SONICBOOM - db 0 + db $0 ; signs - db 0 ; growth rate + db $e ; people + db SPRITE_BALL, $14 + 4, $9 + 4, $ff, $ff, $41, VOLTORB, 40 ; trainer + db SPRITE_BALL, $12 + 4, $20 + 4, $ff, $ff, $42, VOLTORB, 40 ; trainer + db SPRITE_BALL, $19 + 4, $15 + 4, $ff, $ff, $43, VOLTORB, 40 ; trainer + db SPRITE_BALL, $12 + 4, $19 + 4, $ff, $ff, $44, ELECTRODE, 43 ; trainer + db SPRITE_BALL, $22 + 4, $17 + 4, $ff, $ff, $45, VOLTORB, 40 ; trainer + db SPRITE_BALL, $1c + 4, $1a + 4, $ff, $ff, $46, VOLTORB, 40 ; trainer + db SPRITE_BALL, $e + 4, $15 + 4, $ff, $ff, $47, ELECTRODE, 43 ; trainer + db SPRITE_BALL, $20 + 4, $25 + 4, $ff, $ff, $48, VOLTORB, 40 ; trainer + db SPRITE_BIRD, $9 + 4, $4 + 4, $ff, $d1, $49, ZAPDOS, 50 ; trainer + db SPRITE_BALL, $19 + 4, $7 + 4, $ff, $ff, $8a, CARBOS ; item + db SPRITE_BALL, $3 + 4, $1c + 4, $ff, $ff, $8b, HP_UP ; item + db SPRITE_BALL, $3 + 4, $22 + 4, $ff, $ff, $8c, RARE_CANDY ; item + db SPRITE_BALL, $20 + 4, $1a + 4, $ff, $ff, $8d, TM_25 ; item + db SPRITE_BALL, $20 + 4, $14 + 4, $ff, $ff, $8e, TM_33 ; item - ; learnset - db %00100000 - db %01000001 - db %10001000 - db %11100001 - db %11001011 - db %01011000 - db %01000010 + ; warp-to + EVENT_DISP POWER_PLANT_WIDTH, $23, $4 + EVENT_DISP POWER_PLANT_WIDTH, $23, $5 + EVENT_DISP POWER_PLANT_WIDTH, $b, $0 - db 0 ; padding +PowerPlantBlocks: ; 1e446 (7:6446) + INCBIN "maps/powerplant.blk" -ExeggcuteBaseStats: ; 38eea (e:4eea) - db DEX_EXEGGCUTE ; pokedex id - db 60 ; base hp - db 40 ; base attack - db 80 ; base defense - db 40 ; base speed - db 60 ; base special +DiglettsCaveEntranceRoute11_h: ; 0x1e5ae to 0x1e5ba (12 bytes) (bank=7) (id=85) + db CAVERN ; tileset + db DIGLETTS_CAVE_ENTRANCE_HEIGHT, DIGLETTS_CAVE_ENTRANCE_WIDTH ; dimensions (y, x) + dw DiglettsCaveEntranceRoute11Blocks, DiglettsCaveEntranceRoute11TextPointers, DiglettsCaveEntranceRoute11Script ; blocks, texts, scripts + db $00 ; connections + dw DiglettsCaveEntranceRoute11Object ; objects - db GRASS ; species type 1 - db PSYCHIC ; species type 2 +DiglettsCaveEntranceRoute11Script: ; 1e5ba (7:65ba) + call EnableAutoTextBoxDrawing + ld a, $16 + ld [$d365], a + ret - db 90 ; catch rate - db 98 ; base exp yield - db $77 ; sprite dimensions +DiglettsCaveEntranceRoute11TextPointers: ; 1e5c3 (7:65c3) + dw DiglettsCaveEntranceRoute11Text1 - dw ExeggcutePicFront - dw ExeggcutePicBack +DiglettsCaveEntranceRoute11Text1: ; 1e5c5 (7:65c5) + TX_FAR _DiglettsCaveEntRoute11Text1 + db "@" - ; attacks known at lvl 0 - db BARRAGE - db HYPNOSIS - db 0 - db 0 +DiglettsCaveEntranceRoute11Object: ; 0x1e5ca (size=34) + db $7d ; border tile - db 5 ; growth rate + db $3 ; warps + db $7, $2, $4, $ff + db $7, $3, $4, $ff + db $4, $4, $1, DIGLETTS_CAVE - ; learnset - db %00100000 - db %00000011 - db %00001000 - db %11110000 - db %00011011 - db %01101000 - db %00000010 + db $0 ; signs - db 0 ; padding + db $1 ; people + db SPRITE_GAMBLER, $3 + 4, $2 + 4, $ff, $ff, $1 ; person -ExeggutorBaseStats: ; 38f06 (e:4f06) - db DEX_EXEGGUTOR ; pokedex id - db 95 ; base hp - db 95 ; base attack - db 85 ; base defense - db 55 ; base speed - db 125 ; base special + ; warp-to + EVENT_DISP DIGLETTS_CAVE_ENTRANCE_WIDTH, $7, $2 + EVENT_DISP DIGLETTS_CAVE_ENTRANCE_WIDTH, $7, $3 + EVENT_DISP DIGLETTS_CAVE_ENTRANCE_WIDTH, $4, $4 ; DIGLETTS_CAVE - db GRASS ; species type 1 - db PSYCHIC ; species type 2 +Route16House_h: ; 0x1e5ec to 0x1e5f8 (12 bytes) (bank=7) (id=188) + db HOUSE ; tileset + db ROUTE_16_HOUSE_HEIGHT, ROUTE_16_HOUSE_WIDTH ; dimensions (y, x) + dw Route16HouseBlocks, Route16HouseTextPointers, Route16HouseScript ; blocks, texts, scripts + db $00 ; connections + dw Route16HouseObject ; objects - db 45 ; catch rate - db 212 ; base exp yield - db $77 ; sprite dimensions +Route16HouseScript: ; 1e5f8 (7:65f8) + jp EnableAutoTextBoxDrawing - dw ExeggutorPicFront - dw ExeggutorPicBack +Route16HouseTextPointers: ; 1e5fb (7:65fb) + dw Route16HouseText1 + dw Route16HouseText2 - ; attacks known at lvl 0 - db BARRAGE - db HYPNOSIS - db 0 - db 0 +Route16HouseText1: ; 1e5ff (7:65ff) + db $08 ; asm + ld a, [$d7e0] + bit 6, a + ld hl, HM02ExplanationText + jr nz, .asm_13616 ; 0x1e608 + ld hl, Route16HouseText3 + call PrintText + ld bc, (HM_02 << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, $d7e0 + set 6, [hl] + ld hl, ReceivedHM02Text + jr .asm_13616 ; 0x1e620 +.BagFull + ld hl, HM02NoRoomText +.asm_13616 ; 0x1e625 + call PrintText + jp TextScriptEnd - db 5 ; growth rate +Route16HouseText3: ; 1e62b (7:662b) + TX_FAR _Route16HouseText3 + db "@" - ; learnset - db %00100000 - db %01000011 - db %00111000 - db %11110000 - db %00011011 - db %01101000 - db %00100010 +ReceivedHM02Text: ; 1e630 (7:6630) + TX_FAR _ReceivedHM02Text + db $11, "@" - db 0 ; padding +HM02ExplanationText: ; 1e636 (7:6636) + TX_FAR _HM02ExplanationText + db "@" -CuboneBaseStats: ; 38f22 (e:4f22) - db DEX_CUBONE ; pokedex id - db 50 ; base hp - db 50 ; base attack - db 95 ; base defense - db 35 ; base speed - db 40 ; base special +HM02NoRoomText: ; 1e63b (7:663b) + TX_FAR _HM02NoRoomText + db "@" - db GROUND ; species type 1 - db GROUND ; species type 2 +Route16HouseText2: ; 1e640 (7:6640) + db $08 ; asm + ld hl, UnnamedText_1e652 + call PrintText + ld a, FEAROW + call PlayCry + call WaitForSoundToFinish + jp TextScriptEnd - db 190 ; catch rate - db 87 ; base exp yield - db $55 ; sprite dimensions +UnnamedText_1e652: ; 1e652 (7:6652) + TX_FAR _UnnamedText_1e652 + db "@" - dw CubonePicFront - dw CubonePicBack +Route16HouseObject: ; 0x1e657 (size=32) + db $a ; border tile - ; attacks known at lvl 0 - db BONE_CLUB - db GROWL - db 0 - db 0 + db $2 ; warps + db $7, $2, $8, $ff + db $7, $3, $8, $ff - db 0 ; growth rate + db $0 ; signs - ; learnset - db %10110001 - db %00111111 - db %00001111 - db %11001110 - db %10100010 - db %00001000 - db %00100010 + db $2 ; people + db SPRITE_BRUNETTE_GIRL, $3 + 4, $2 + 4, $ff, $d3, $1 ; person + db SPRITE_BIRD, $4 + 4, $6 + 4, $fe, $0, $2 ; person - db 0 ; padding + ; warp-to + EVENT_DISP ROUTE_16_HOUSE_WIDTH, $7, $2 + EVENT_DISP ROUTE_16_HOUSE_WIDTH, $7, $3 -MarowakBaseStats: ; 38f3e (e:4f3e) - db DEX_MAROWAK ; pokedex id - db 60 ; base hp - db 80 ; base attack - db 110 ; base defense - db 45 ; base speed - db 50 ; base special +Route22Gate_h: ; 0x1e677 to 0x1e683 (12 bytes) (bank=7) (id=193) + db GATE ; tileset + db ROUTE_22_GATE_HEIGHT, ROUTE_22_GATE_WIDTH ; dimensions (y, x) + dw Route22GateBlocks, Route22GateTextPointers, Route22GateScript ; blocks, texts, scripts + db $00 ; connections + dw Route22GateObject ; objects - db GROUND ; species type 1 - db GROUND ; species type 2 +Route22GateScript: ; 1e683 (7:6683) + call EnableAutoTextBoxDrawing + ld hl, Route22GateScriptPointers + ld a, [W_ROUTE22GATECURSCRIPT] + call CallFunctionInTable + ld a, [W_YCOORD] + cp $4 + ld a, $22 + jr c, .asm_1e69a ; 0x1e696 $2 + ld a, $21 +.asm_1e69a + ld [$d365], a + ret - db 75 ; catch rate - db 124 ; base exp yield - db $66 ; sprite dimensions +Route22GateScriptPointers: ; 1e69e (7:669e) + dw Route22GateScript0 + dw Route22GateScript1 + dw Route22GateScript2 - dw MarowakPicFront - dw MarowakPicBack +Route22GateScript0: ; 1e6a4 (7:66a4) + ld hl, Route22GateScriptCoords + call ArePlayerCoordsInArray + ret nc + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, $1 + ld [$ff8c], a + jp DisplayTextID - ; attacks known at lvl 0 - db BONE_CLUB - db GROWL - db LEER - db FOCUS_ENERGY - - db 0 ; growth rate - - ; learnset - db %10110001 - db %01111111 - db %00001111 - db %11001110 - db %10100010 - db %00001000 - db %00100010 - - db 0 ; padding - -HitmonleeBaseStats: ; 38f5a (e:4f5a) - db DEX_HITMONLEE ; pokedex id - db 50 ; base hp - db 120 ; base attack - db 53 ; base defense - db 87 ; base speed - db 35 ; base special - - db FIGHTING ; species type 1 - db FIGHTING ; species type 2 - - db 45 ; catch rate - db 139 ; base exp yield - db $77 ; sprite dimensions - - dw HitmonleePicFront - dw HitmonleePicBack - - ; attacks known at lvl 0 - db DOUBLE_KICK - db MEDITATE - db 0 - db 0 +Route22GateScriptCoords: ; 1e6b5 (7:66b5) + db 2,4 + db 2,5 + db $ff - db 0 ; growth rate +Func_1e6ba: ; 1e6ba (7:66ba) + ld a, $1 + ld [$cd38], a + ld a, $80 + ld [$ccd3], a + ld [$c109], a + ld [wJoypadForbiddenButtonsMask], a + jp Func_3486 - ; learnset - db %10110001 - db %00000011 - db %00001111 - db %11000000 - db %11000110 - db %00001000 - db %00100010 +Route22GateScript1: ; 1e6cd (7:66cd) + ld a, [$cd38] + and a + ret nz + xor a + ld [wJoypadForbiddenButtonsMask], a + call Delay3 + ld a, $0 + ld [W_ROUTE22GATECURSCRIPT], a +Route22GateScript2: ; 1e6de (7:66de) + ret - db 0 ; padding +Route22GateTextPointers: ; 1e6df (7:66df) + dw Route22GateText1 -HitmonchanBaseStats: ; 38f76 (e:4f76) - db DEX_HITMONCHAN ; pokedex id - db 50 ; base hp - db 105 ; base attack - db 79 ; base defense - db 76 ; base speed - db 35 ; base special +Route22GateText1: ; 1e6e1 (7:66e1) + db $8 + ld a, [W_OBTAINEDBADGES] + bit 0, a + jr nz, .asm_8a809 ; 0x1e6e7 $d + ld hl, UnnamedText_1e704 + call PrintText + call Func_1e6ba + ld a, $1 + jr .asm_20f7e ; 0x1e6f4 $8 +.asm_8a809 ; 0x1e6f6 + ld hl, UnnamedText_1e71a + call PrintText + ld a, $2 +.asm_20f7e ; 0x1e6fe + ld [W_ROUTE22GATECURSCRIPT], a + jp TextScriptEnd - db FIGHTING ; species type 1 - db FIGHTING ; species type 2 +UnnamedText_1e704: ; 1e704 (7:6704) + TX_FAR _UnnamedText_1e704 ; 0x8cfbb + db $8 + ld a, (SFX_02_51 - SFX_Headers_02) / 3 + call PlaySoundWaitForCurrent + call WaitForSoundToFinish + ld hl, UnnamedText_1e715 ; $6715 + ret - db 45 ; catch rate - db 140 ; base exp yield - db $66 ; sprite dimensions +UnnamedText_1e715: ; 1e715 (7:6715) + TX_FAR _UnnamedText_1e715 + db "@" - dw HitmonchanPicFront - dw HitmonchanPicBack +UnnamedText_1e71a: ; 1e71a (7:671a) + TX_FAR _UnnamedText_1e71a ; 0x8d03e + db $0B, "@" - ; attacks known at lvl 0 - db COMET_PUNCH - db AGILITY - db 0 - db 0 +Route22GateObject: ; 0x1e720 (size=42) + db $a ; border tile - db 0 ; growth rate + db $4 ; warps + db $7, $4, $0, $ff + db $7, $5, $0, $ff + db $0, $4, $0, $ff + db $0, $5, $1, $ff - ; learnset - db %10110001 - db %00000011 - db %00001111 - db %11000000 - db %11000110 - db %00001000 - db %00100010 + db $0 ; signs - db 0 ; padding + db $1 ; people + db SPRITE_GUARD, $2 + 4, $6 + 4, $ff, $d2, $1 ; person -LickitungBaseStats: ; 38f92 (e:4f92) - db DEX_LICKITUNG ; pokedex id - db 90 ; base hp - db 55 ; base attack - db 75 ; base defense - db 30 ; base speed - db 60 ; base special + ; warp-to + EVENT_DISP ROUTE_22_GATE_WIDTH, $7, $4 + EVENT_DISP ROUTE_22_GATE_WIDTH, $7, $5 + EVENT_DISP ROUTE_22_GATE_WIDTH, $0, $4 + EVENT_DISP ROUTE_22_GATE_WIDTH, $0, $5 - db NORMAL ; species type 1 - db NORMAL ; species type 2 +Route22GateBlocks: ; 1e74a (7:674a) + INCBIN "maps/route22gate.blk" - db 45 ; catch rate - db 127 ; base exp yield - db $77 ; sprite dimensions +BillsHouse_h: ; 0x1e75e to 0x1e76a (12 bytes) (bank=7) (id=88) + db INTERIOR ; tileset + db BILLS_HOUSE_HEIGHT, BILLS_HOUSE_WIDTH ; dimensions (y, x) + dw BillsHouseBlocks, BillsHouseTextPointers, BillsHouseScript ; blocks, texts, scripts + db $00 ; connections + dw BillsHouseObject ; objects - dw LickitungPicFront - dw LickitungPicBack +BillsHouseScript: ; 1e76a (7:676a) + call EnableAutoTextBoxDrawing + ld a, [W_BILLSHOUSECURSCRIPT] + ld hl, BillsHouseScriptPointers + jp CallFunctionInTable - ; attacks known at lvl 0 - db WRAP - db SUPERSONIC - db 0 - db 0 +BillsHouseScriptPointers: ; 1e776 (7:6776) + dw BillsHouseScript0 + dw BillsHouseScript1 + dw BillsHouseScript2 + dw BillsHouseScript3 + dw BillsHouseScript4 + dw BillsHouseScript5 - db 0 ; growth rate +BillsHouseScript0: ; 1e782 (7:6782) + ret - ; learnset - db %10110101 - db %01111111 - db %10001111 - db %11000111 - db %10100010 - db %00001000 - db %00110110 +BillsHouseScript1: ; 1e783 (7:6783) + ld a, [$c109] + and a + ld de, MovementData_1e79c + jr nz, .asm_1e78f ; 0x1e78a $3 + ld de, MovementData_1e7a0 +.asm_1e78f + ld a, $1 + ld [$ff8c], a + call MoveSprite + ld a, $2 + ld [W_BILLSHOUSECURSCRIPT], a + ret - db 0 ; padding +MovementData_1e79c: ; 1e79c (7:679c) + db $40,$40,$40,$FF -KoffingBaseStats: ; 38fae (e:4fae) - db DEX_KOFFING ; pokedex id - db 40 ; base hp - db 65 ; base attack - db 95 ; base defense - db 35 ; base speed - db 60 ; base special +MovementData_1e7a0: ; 1e7a0 (7:67a0) + db $C0,$40,$40,$80,$40,$FF - db POISON ; species type 1 - db POISON ; species type 2 +BillsHouseScript2: ; 1e7a6 (7:67a6) + ld a, [$d730] + bit 0, a + ret nz + ld a, $61 + ld [$cc4d], a + ld a, $11 + call Predef + ld hl, $d7f2 + set 6, [hl] + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $3 + ld [W_BILLSHOUSECURSCRIPT], a + ret - db 190 ; catch rate - db 114 ; base exp yield - db $66 ; sprite dimensions +BillsHouseScript3: ; 1e7c5 (7:67c5) + ld a, [$d7f2] + bit 3, a + ret z + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld a, $2 + ld [$cf13], a + ld a, $c + ld [$ffeb], a + ld a, $40 + ld [$ffec], a + ld a, $6 + ld [$ffed], a + ld a, $5 + ld [$ffee], a + call Func_32f9 + ld a, $62 + ld [$cc4d], a + ld a, $15 + call Predef + ld c, $8 + call DelayFrames + ld a, $2 + ld [$ff8c], a + ld de, MovementData_1e807 + call MoveSprite + ld a, $4 + ld [W_BILLSHOUSECURSCRIPT], a + ret - dw KoffingPicFront - dw KoffingPicBack +MovementData_1e807: ; 1e807 (7:6807) + db $00,$C0,$C0,$C0,$00,$FF - ; attacks known at lvl 0 - db TACKLE - db SMOG - db 0 - db 0 +BillsHouseScript4: ; 1e80d (7:680d) + ld a, [$d730] + bit 0, a + ret nz + xor a + ld [wJoypadForbiddenButtonsMask], a + ld hl, $d7f2 + set 5, [hl] + ld hl, $d7f1 + set 0, [hl] + ld a, $0 + ld [W_BILLSHOUSECURSCRIPT], a + ret - db 0 ; growth rate +BillsHouseScript5: ; 1e827 (7:6827) + ld a, $4 + ld [$ff8c], a + call DisplayTextID + ld a, $0 + ld [W_BILLSHOUSECURSCRIPT], a + ret - ; learnset - db %00100000 - db %00000000 - db %10001000 - db %11000001 - db %00101010 - db %01001000 - db %00000010 - - db 0 ; padding - -WeezingBaseStats: ; 38fca (e:4fca) - db DEX_WEEZING ; pokedex id - db 65 ; base hp - db 90 ; base attack - db 120 ; base defense - db 60 ; base speed - db 85 ; base special - - db POISON ; species type 1 - db POISON ; species type 2 - - db 60 ; catch rate - db 173 ; base exp yield - db $77 ; sprite dimensions - - dw WeezingPicFront - dw WeezingPicBack - - ; attacks known at lvl 0 - db TACKLE - db SMOG - db SLUDGE - db 0 +BillsHouseTextPointers: ; 1e834 (7:6834) + dw BillsHouseText1 + dw BillsHouseText2 + dw BillsHouseText3 + dw BillsHouseText4 - db 0 ; growth rate +BillsHouseText4: ; 1e83c (7:683c) + db $fd - ; learnset - db %00100000 - db %01000000 - db %10001000 - db %11000001 - db %00101010 - db %01001000 - db %00000010 - - db 0 ; padding - -RhyhornBaseStats: ; 38fe6 (e:4fe6) - db DEX_RHYHORN ; pokedex id - db 80 ; base hp - db 85 ; base attack - db 95 ; base defense - db 25 ; base speed - db 30 ; base special - - db GROUND ; species type 1 - db ROCK ; species type 2 - - db 120 ; catch rate - db 135 ; base exp yield - db $77 ; sprite dimensions - - dw RhyhornPicFront - dw RhyhornPicBack - - ; attacks known at lvl 0 - db HORN_ATTACK - db 0 - db 0 - db 0 +BillsHouseText1: ; 1e83d (7:683d) + db $8 + ld hl, UnnamedText_1e865 + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + jr nz, asm_6b196 ; 0x1e84b $d +asm_4d03c: ; 1e84d (7:684d) + ld hl, UnnamedText_1e86a + call PrintText + ld a, $1 + ld [W_BILLSHOUSECURSCRIPT], a + jr asm_fd4e2 ; 0x1e858 $8 +asm_6b196: ; 1e85a (7:685a) + ld hl, UnnamedText_1e86f + call PrintText + jr asm_4d03c ; 0x1e860 $eb +asm_fd4e2 ; 0x1e862 + jp TextScriptEnd - db 5 ; growth rate +UnnamedText_1e865: ; 1e865 (7:6865) + TX_FAR _UnnamedText_1e865 ; 0x8d267 + db "@" - ; learnset - db %11100000 - db %00000011 - db %10001000 - db %11001111 - db %10100010 - db %10001000 - db %00100010 - - db 0 ; padding - -RhydonBaseStats: ; 39002 (e:5002) - db DEX_RHYDON ; pokedex id - db 105 ; base hp - db 130 ; base attack - db 120 ; base defense - db 40 ; base speed - db 45 ; base special - - db GROUND ; species type 1 - db ROCK ; species type 2 - - db 60 ; catch rate - db 204 ; base exp yield - db $77 ; sprite dimensions - - dw RhydonPicFront - dw RhydonPicBack - - ; attacks known at lvl 0 - db HORN_ATTACK - db STOMP - db TAIL_WHIP - db FURY_ATTACK - - db 5 ; growth rate - - ; learnset - db %11110001 - db %11111111 - db %10001111 - db %11001111 - db %10100010 - db %10001000 - db %00110010 - - db 0 ; padding - -ChanseyBaseStats: ; 3901e (e:501e) - db DEX_CHANSEY ; pokedex id - db 250 ; base hp - db 5 ; base attack - db 5 ; base defense - db 50 ; base speed - db 105 ; base special - - db NORMAL ; species type 1 - db NORMAL ; species type 2 - - db 30 ; catch rate - db 255 ; base exp yield - db $66 ; sprite dimensions - - dw ChanseyPicFront - dw ChanseyPicBack - - ; attacks known at lvl 0 - db POUND - db DOUBLESLAP - db 0 - db 0 +UnnamedText_1e86a: ; 1e86a (7:686a) + TX_FAR _UnnamedText_1e86a ; 0x8d345 + db "@" - db 4 ; growth rate +UnnamedText_1e86f: ; 1e86f (7:686f) + TX_FAR _UnnamedText_1e86f ; 0x8d391 + db "@" - ; learnset - db %10110001 - db %01111111 - db %10101111 - db %11110001 - db %10110111 - db %00111001 - db %01100011 +BillsHouseText2: ; 1e874 (7:6874) + db $08 ; asm + ld a, [$d7f2] + bit 4, a + jr nz, .asm_5491f ; 0x1e87a + ld hl, BillThankYouText + call PrintText + ld bc, (S_S__TICKET << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, SSTicketReceivedText + call PrintText + ld hl, $d7f2 + set 4, [hl] + ld a, $7 + ld [$cc4d], a + ld a, $15 + call Predef + ld a, $9 + ld [$cc4d], a + ld a, $11 + call Predef +.asm_5491f ; 0x1e8a9 + ld hl, UnnamedText_1e8cb + call PrintText + jr .asm_bd408 ; 0x1e8af +.BagFull + ld hl, SSTicketNoRoomText + call PrintText +.asm_bd408 ; 0x1e8b7 + jp TextScriptEnd - db 0 ; padding +BillThankYouText: ; 1e8ba (7:68ba) + TX_FAR _BillThankYouText + db "@" -TangelaBaseStats: ; 3903a (e:503a) - db DEX_TANGELA ; pokedex id - db 65 ; base hp - db 55 ; base attack - db 115 ; base defense - db 60 ; base speed - db 100 ; base special +SSTicketReceivedText: ; 1e8bf (7:68bf) + TX_FAR _SSTicketReceivedText + db $11, $6, "@" - db GRASS ; species type 1 - db GRASS ; species type 2 +SSTicketNoRoomText: ; 1e8c6 (7:68c6) + TX_FAR _SSTicketNoRoomText + db "@" - db 45 ; catch rate - db 166 ; base exp yield - db $66 ; sprite dimensions +UnnamedText_1e8cb: ; 1e8cb (7:68cb) + TX_FAR _UnnamedText_1e8cb + db "@" - dw TangelaPicFront - dw TangelaPicBack +BillsHouseText3: ; 1e8d0 (7:68d0) + db $08 ; asm + ld hl, UnnamedText_1e8da + call PrintText + jp TextScriptEnd - ; attacks known at lvl 0 - db CONSTRICT - db BIND - db 0 - db 0 +UnnamedText_1e8da: ; 1e8da (7:68da) + TX_FAR _UnnamedText_1e8da + db "@" - db 0 ; growth rate +BillsHouseObject: ; 0x1e8df (size=38) + db $d ; border tile - ; learnset - db %10100100 - db %01000011 - db %00111000 - db %11000000 - db %10000010 - db %00001000 - db %00000110 + db $2 ; warps + db $7, $2, $0, $ff + db $7, $3, $0, $ff - db 0 ; padding + db $0 ; signs -KangaskhanBaseStats: ; 39056 (e:5056) - db DEX_KANGASKHAN ; pokedex id - db 105 ; base hp - db 95 ; base attack - db 80 ; base defense - db 90 ; base speed - db 40 ; base special + db $3 ; people + db SPRITE_SLOWBRO, $5 + 4, $6 + 4, $ff, $ff, $1 ; person + db SPRITE_BLACK_HAIR_BOY_2, $4 + 4, $4 + 4, $ff, $ff, $2 ; person + db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $6 + 4, $ff, $ff, $3 ; person - db NORMAL ; species type 1 - db NORMAL ; species type 2 + ; warp-to + EVENT_DISP BILLS_HOUSE_WIDTH, $7, $2 + EVENT_DISP BILLS_HOUSE_WIDTH, $7, $3 - db 45 ; catch rate - db 175 ; base exp yield - db $77 ; sprite dimensions +BillsHouseBlocks: ; 1e905 (7:6905) + INCBIN "maps/billshouse.blk" - dw KangaskhanPicFront - dw KangaskhanPicBack +Func_1e915: ; 1e915 (7:6915) + call SaveScreenTilesToBuffer2 + ld hl, AccessedOaksPCText + call PrintText + ld hl, GetDexRatedText + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] ; $cc26 + and a + jr nz, .asm_1e932 + ld a, $56 + call Predef ; indirect jump to DisplayDexRating (44169 (11:4169)) +.asm_1e932 + ld hl, ClosedOaksPCText + call PrintText + jp LoadScreenTilesFromBuffer2 - ; attacks known at lvl 0 - db COMET_PUNCH - db RAGE - db 0 - db 0 +GetDexRatedText: ; 1e93b (7:693b) + TX_FAR _GetDexRatedText + db "@" - db 0 ; growth rate +ClosedOaksPCText: ; 1e940 (7:6940) + TX_FAR _ClosedOaksPCText + db $0d,"@" - ; learnset - db %10110001 - db %01111111 - db %10001111 - db %11000111 - db %10100010 - db %10001000 - db %00110010 +AccessedOaksPCText: ; 1e946 (7:6946) + TX_FAR _AccessedOaksPCText + db "@" - db 0 ; padding +Func_1e94b: ; 1e94b (7:694b) + call EnableAutoTextBoxDrawing + ld a, $39 + jp Func_3ef5 -HorseaBaseStats: ; 39072 (e:5072) - db DEX_HORSEA ; pokedex id - db 30 ; base hp - db 40 ; base attack - db 70 ; base defense - db 60 ; base speed - db 70 ; base special +NewBicycleText: ; 1e953 (7:6953) + TX_FAR _NewBicycleText + db "@" - db WATER ; species type 1 - db WATER ; species type 2 +Func_1e958: ; 1e958 (7:6958) + call EnableAutoTextBoxDrawing + ld a, $05 + jp Func_3ef5 - db 225 ; catch rate - db 83 ; base exp yield - db $55 ; sprite dimensions +PushStartText: ; 1e960 (7:6960) + TX_FAR _PushStartText + db "@" - dw HorseaPicFront - dw HorseaPicBack +Func_1e965: ; 1e965 (7:6965) + call EnableAutoTextBoxDrawing + ld hl, $d2f7 + ld b, $13 + call CountSetBits + ld a, [$d11e] + cp $2 + ld a, $6 + jr c, .asm_1e97b + ld a, $7 +.asm_1e97b + jp Func_3ef5 - ; attacks known at lvl 0 - db BUBBLE - db 0 - db 0 - db 0 +SaveOptionText: ; 1e97e (7:697e) + TX_FAR _SaveOptionText + db "@" - db 0 ; growth rate +StrengthsAndWeaknessesText: ; 1e983 (7:6983) + TX_FAR _StrengthsAndWeaknessesText + db "@" - ; learnset - db %00100000 - db %00111111 - db %00001000 - db %11000000 - db %11000010 - db %00001000 - db %00010010 +Func_1e988: ; 1e988 (7:6988) + ld hl, $d790 + bit 7, [hl] + jr z, asm_1e9ab + ld a, [W_NUMSAFARIBALLS] ; $da47 + and a + jr z, asm_1e9b0 + jr asm_1e9ab - db 0 ; padding +Func_1e997: ; 1e997 (7:6997) + ld a, [wSafariSteps] ; $d70d + ld b, a + ld a, [wSafariSteps + 1] ; $d70e + ld c, a + or b + jr z, asm_1e9b0 + dec bc + ld a, b + ld [wSafariSteps], a ; $d70d + ld a, c + ld [wSafariSteps + 1], a ; $d70e +asm_1e9ab: ; 1e9ab (7:69ab) + xor a + ld [$da46], a + ret +asm_1e9b0: ; 1e9b0 (7:69b0) + call EnableAutoTextBoxDrawing + xor a + ld [wMusicHeaderPointer], a + dec a + call PlaySound + ld c, BANK(SFX_02_5f) + ld a, (SFX_02_5f - SFX_Headers_02) / 3 + call PlayMusic +.asm_1e9c2 + ld a, [$c02a] + cp $b9 + jr nz, .asm_1e9c2 + ld a, $d3 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + xor a + ld [$d528], a + ld a, $9c + ld [H_DOWNARROWBLINKCNT1], a ; $ff8b + ld a, $3 + ld [$d42f], a + ld a, $5 + ld [W_SAFARIZONEENTRANCECURSCRIPT], a + ld hl, $d790 + set 6, [hl] + ld a, $1 + ld [$da46], a + ret -SeadraBaseStats: ; 3908e (e:508e) - db DEX_SEADRA ; pokedex id - db 55 ; base hp - db 65 ; base attack - db 95 ; base defense - db 85 ; base speed - db 95 ; base special +Func_1e9ed: ; 1e9ed (7:69ed) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld hl, SafariGameOverText + jp PrintText - db WATER ; species type 1 - db WATER ; species type 2 +SafariGameOverText: ; 1e9f7 (7:69f7) + db $08 ; asm + ld a, [W_NUMSAFARIBALLS] ; $da47 + and a + jr z, .asm_1ea04 + ld hl, TimesUpText + call PrintText +.asm_1ea04 + ld hl, GameOverText + call PrintText + jp TextScriptEnd - db 75 ; catch rate - db 155 ; base exp yield - db $66 ; sprite dimensions +TimesUpText: ; 1ea0d (7:6a0d) + TX_FAR _TimesUpText + db "@" - dw SeadraPicFront - dw SeadraPicBack +GameOverText: ; 1ea12 (7:6a12) + TX_FAR _GameOverText + db "@" - ; attacks known at lvl 0 - db BUBBLE - db SMOKESCREEN - db 0 - db 0 +Func_1eaa17: ; 1ea17 (7:6a17) + ld a, [$c109] + cp $4 + ret nz + call EnableAutoTextBoxDrawing + ld a, $31 + jp Func_3ef5 - db 0 ; growth rate +CinnabarGymQuiz: ; 1ea25 (7:6a25) + db $08 ; asm + xor a + ld [$da38], a + ld a, [wWhichTrade] ; $cd3d + push af + and $f + ld [$ffdb], a + pop af + and $f0 + swap a + ld [$ffdc], a + ld hl, CinnabarGymQuizIntroText + call PrintText + ld a, [$ffdb] + dec a + add a + ld d, $0 + ld e, a + ld hl, CinnabarQuizQuestions + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + call PrintText + ld a, $1 + ld [$cc3c], a + call Func_1ea92 + jp TextScriptEnd - ; learnset - db %00100000 - db %01111111 - db %00001000 - db %11000000 - db %11000010 - db %00001000 - db %00010010 +CinnabarGymQuizIntroText: ; 1ea5b (7:6a5b) + TX_FAR _CinnabarGymQuizIntroText + db "@" - db 0 ; padding +CinnabarQuizQuestions: ; 1ea60 (7:6a60) + dw CinnabarQuizQuestionsText1 + dw CinnabarQuizQuestionsText2 + dw CinnabarQuizQuestionsText3 + dw CinnabarQuizQuestionsText4 + dw CinnabarQuizQuestionsText5 + dw CinnabarQuizQuestionsText6 -GoldeenBaseStats: ; 390aa (e:50aa) - db DEX_GOLDEEN ; pokedex id - db 45 ; base hp - db 67 ; base attack - db 60 ; base defense - db 63 ; base speed - db 50 ; base special +CinnabarQuizQuestionsText1: ; 1ea6c (7:6a6c) + TX_FAR _CinnabarQuizQuestionsText1 + db "@" - db WATER ; species type 1 - db WATER ; species type 2 +CinnabarQuizQuestionsText2: ; 1ea71 (7:6a71) + TX_FAR _CinnabarQuizQuestionsText2 + db "@" - db 225 ; catch rate - db 111 ; base exp yield - db $66 ; sprite dimensions +CinnabarQuizQuestionsText3: ; 1ea76 (7:6a76) + TX_FAR _CinnabarQuizQuestionsText3 + db "@" - dw GoldeenPicFront - dw GoldeenPicBack +CinnabarQuizQuestionsText4: ; 1ea7b (7:6a7b) + TX_FAR _CinnabarQuizQuestionsText4 + db "@" - ; attacks known at lvl 0 - db PECK - db TAIL_WHIP - db 0 - db 0 +CinnabarQuizQuestionsText5: ; 1ea80 (7:6a80) + TX_FAR _CinnabarQuizQuestionsText5 + db "@" - db 0 ; growth rate +CinnabarQuizQuestionsText6: ; 1ea85 (7:6a85) + TX_FAR _CinnabarQuizQuestionsText6 + db "@" - ; learnset - db %01100000 - db %00111111 - db %00001000 - db %11000000 - db %11000010 - db %00001000 - db %00010010 +Func_1ea8a: ; 1ea8a (7:6a8a) + ld hl, $d79c + ld a, $10 + jp Predef ; indirect jump to HandleBitArray (f666 (3:7666)) - db 0 ; padding +Func_1ea92: ; 1ea92 (7:6a92) + call YesNoChoice + ld a, [$ffdc] + ld c, a + ld a, [wCurrentMenuItem] ; $cc26 + cp c + jr nz, .asm_1eab8 + ld hl, $d126 + set 5, [hl] + ld a, [$ffdb] + ld [$ffe0], a + ld hl, CinnabarGymQuizCorrectText + call PrintText + ld a, [$ffe0] + ld c, a + ld b, $1 + call Func_1ea8a + jp Func_1eb0a +.asm_1eab8 + call WaitForSoundToFinish + ld a, (SFX_02_51 - SFX_Headers_02) / 3 + call PlaySound + call WaitForSoundToFinish + ld hl, CinnabarGymQuizIncorrectText + call PrintText + ld a, [$ffdb] + add $2 + ld c, a + ld b, $2 + ld hl, $d79a + ld a, $10 + call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) + ld a, c + and a + ret nz + ld a, [$ffdb] + add $2 + ld [$da38], a + ret -SeakingBaseStats: ; 390c6 (e:50c6) - db DEX_SEAKING ; pokedex id - db 80 ; base hp - db 92 ; base attack - db 65 ; base defense - db 68 ; base speed - db 80 ; base special +CinnabarGymQuizCorrectText: ; 1eae3 (7:6ae3) + db $0b + TX_FAR _CinnabarGymQuizCorrectText + db $06,$08 - db WATER ; species type 1 - db WATER ; species type 2 + ld a, [$ffe0] + ld c, a + ld b, $2 + call Func_1ea8a + ld a, c + and a + jp nz, TextScriptEnd + call WaitForSoundToFinish + ld a, (SFX_02_57 - SFX_Headers_02) / 3 + call PlaySound + call WaitForSoundToFinish + jp TextScriptEnd - db 60 ; catch rate - db 170 ; base exp yield - db $77 ; sprite dimensions +CinnabarGymQuizIncorrectText: ; 1eb05 (7:6b05) + TX_FAR _CinnabarGymQuizIncorrectText + db "@" - dw SeakingPicFront - dw SeakingPicBack +Func_1eb0a: ; 1eb0a (7:6b0a) + ld a, $6 + ld [$ffdb], a +.asm_1eb0e + ld a, [$ffdb] + dec a + add a + add a + ld d, $0 + ld e, a + ld hl, CinnabarGymGateCoords ; $6b48 + add hl, de + ld a, [hli] + ld b, [hl] + ld c, a + inc hl + ld a, [hl] + ld [$d12f], a + push bc + ld a, [$ffdb] + ld [$ffe0], a + ld c, a + ld b, $2 + call Func_1ea8a + ld a, c + and a + jr nz, .asm_1eb36 + ld a, [$d12f] + jr .asm_1eb38 +.asm_1eb36 + ld a, $e +.asm_1eb38 + pop bc + ld [$d09f], a + ld a, $17 + call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + ld hl, $ffdb + dec [hl] + jr nz, .asm_1eb0e + ret - ; attacks known at lvl 0 - db PECK - db TAIL_WHIP - db SUPERSONIC - db 0 +CinnabarGymGateCoords: ; 1eb48 (7:6b48) + ; format: x-coord, y-coord, direction, padding + ; direction: $54 = horizontal gate, $5f = vertical gate + db $09,$03,$54,$00 + db $06,$03,$54,$00 + db $06,$06,$54,$00 + db $03,$08,$5f,$00 + db $02,$06,$54,$00 + db $02,$03,$54,$00 - db 0 ; growth rate +Func_1eb60: ; 1eb60 (7:6b60) + call EnableAutoTextBoxDrawing + ld a, $30 + call Func_3ef5 + ret - ; learnset - db %01100000 - db %01111111 - db %00001000 - db %11000000 - db %11000010 - db %00001000 - db %00010010 +MagazinesText: ; 1eb69 (7:6b69) + TX_FAR _MagazinesText + db "@" - db 0 ; padding +Func_1eb6e: ; 1eb6e (7:6b6e) + call EnableAutoTextBoxDrawing + ld a, [$c109] + cp $4 + ret nz + ld a, [$d7f2] + bit 7, a + jr nz, .asm_1ebd2 + bit 3, a + jr nz, .asm_1eb86 + bit 6, a + jr nz, .asm_1eb8b +.asm_1eb86 + ld a, $2d + jp Func_3ef5 +.asm_1eb8b + ld a, $1 + ld [$cc3c], a + ld a, $2e + call Func_3ef5 + ld c, $20 + call DelayFrames + ld a, (SFX_02_3c - SFX_Headers_02) / 3 + call PlaySound + call WaitForSoundToFinish + ld c, $50 + call DelayFrames + ld a, (SFX_02_48 - SFX_Headers_02) / 3 + call PlaySound + call WaitForSoundToFinish + ld c, $30 + call DelayFrames + ld a, (SFX_02_3c - SFX_Headers_02) / 3 + call PlaySound + call WaitForSoundToFinish + ld c, $20 + call DelayFrames + ld a, (SFX_02_3a - SFX_Headers_02) / 3 + call PlaySound + call WaitForSoundToFinish + call Func_2307 + ld hl, $d7f2 + set 3, [hl] + ret +.asm_1ebd2 + ld a, $1 + ld [$cc3c], a + ld a, $2f + call Func_3ef5 + ret -StaryuBaseStats: ; 390e2 (e:50e2) - db DEX_STARYU ; pokedex id - db 30 ; base hp - db 45 ; base attack - db 55 ; base defense - db 85 ; base speed - db 70 ; base special +BillsHouseMonitorText: ; 1ebdd (7:6bdd) + TX_FAR _BillsHouseMonitorText + db "@" - db WATER ; species type 1 - db WATER ; species type 2 +BillsHouseInitiatedText: ; 1ebe2 (7:6be2) + TX_FAR _BillsHouseInitiatedText + db $06 + db $08 ; asm + ld a, $ff + ld [$c0ee], a + call PlaySound + ld c, $10 + call DelayFrames + ld a, (SFX_02_49 - SFX_Headers_02) / 3 + call PlaySound + call WaitForSoundToFinish + ld c, $3c + call DelayFrames + jp TextScriptEnd - db 225 ; catch rate - db 106 ; base exp yield - db $66 ; sprite dimensions +BillsHousePokemonList: ; 1ec05 (7:6c05) + db $08 ; asm + call SaveScreenTilesToBuffer1 + ld hl, BillsHousePokemonListText1 + call PrintText + xor a + ld [$d07c], a + ld [$cc26], a + ld [$cc2a], a + ld a, $3 + ld [$cc29], a + ld a, $4 + ld [$cc28], a + ld a, $2 + ld [$cc24], a + ld a, $1 + ld [$cc25], a +.asm_1ec2d + ld hl, $d730 + set 6, [hl] + ld hl, wTileMap + ld b, $a + ld c, $9 + call TextBoxBorder + ld hl, $c3ca + ld de, BillsMonListText + call PlaceString + ld hl, BillsHousePokemonListText2 + call PrintText + call SaveScreenTilesToBuffer2 + call HandleMenuInput + bit 1, a + jr nz, .asm_1ec74 + ld a, [$cc26] + add EEVEE + cp EEVEE + jr z, .asm_1ec6c + cp FLAREON + jr z, .asm_1ec6c + cp JOLTEON + jr z, .asm_1ec6c + cp VAPOREON + jr z, .asm_1ec6c + jr .asm_1ec74 +.asm_1ec6c + call DisplayPokedex + call LoadScreenTilesFromBuffer2 + jr .asm_1ec2d +.asm_1ec74 + ld hl, $d730 + res 6, [hl] + call LoadScreenTilesFromBuffer2 + jp TextScriptEnd - dw StaryuPicFront - dw StaryuPicBack +BillsHousePokemonListText1: ; 1ec7f (7:6c7f) + TX_FAR _BillsHousePokemonListText1 + db "@" - ; attacks known at lvl 0 - db TACKLE - db 0 - db 0 - db 0 +BillsMonListText: ; 1ec84 (7:6c84) + db "EEVEE" + next "FLAREON" + next "JOLTEON" + next "VAPOREON" + next "CANCEL@" - db 5 ; growth rate - - ; learnset - db %00100000 - db %00111111 - db %10001000 - db %11110001 - db %11000011 - db %00111000 - db %01010011 - - db 0 ; padding - -StarmieBaseStats: ; 390fe (e:50fe) - db DEX_STARMIE ; pokedex id - db 60 ; base hp - db 75 ; base attack - db 85 ; base defense - db 115 ; base speed - db 100 ; base special - - db WATER ; species type 1 - db PSYCHIC ; species type 2 - - db 60 ; catch rate - db 207 ; base exp yield - db $66 ; sprite dimensions - - dw StarmiePicFront - dw StarmiePicBack - - ; attacks known at lvl 0 - db TACKLE - db WATER_GUN - db HARDEN - db 0 +BillsHousePokemonListText2: ; 1ecaa (7:6caa) + TX_FAR _BillsHousePokemonListText2 + db "@" - db 5 ; growth rate +Func_1ecaf: ; 1ecaf (7:6caf) + ld a, [$c109] + cp $4 + ret nz + call EnableAutoTextBoxDrawing + ld a, $8 + jp Func_3ef5 - ; learnset - db %00100000 - db %01111111 - db %10001000 - db %11110001 - db %11000011 - db %00111000 - db %01010011 +OakLabEmailText: ; 1ecbd (7:6cbd) + TX_FAR _OakLabEmailText + db "@" - db 0 ; padding -MrMimeBaseStats: ; 3911a (e:511a) - db DEX_MR_MIME ; pokedex id - db 40 ; base hp - db 45 ; base attack - db 65 ; base defense - db 90 ; base speed - db 100 ; base special - db PSYCHIC ; species type 1 - db PSYCHIC ; species type 2 +SECTION "bank9",ROMX,BANK[$9] - db 45 ; catch rate - db 136 ; base exp yield - db $66 ; sprite dimensions +RhydonPicFront: ; 24000 (9:4000) + INCBIN "pic/bmon/rhydon.pic" +RhydonPicBack: ; 24202 (9:4202) + INCBIN "pic/monback/rhydonb.pic" +KangaskhanPicFront: ; 2429a (9:429a) + INCBIN "pic/bmon/kangaskhan.pic" +KangaskhanPicBack: ; 244a6 (9:44a6) + INCBIN "pic/monback/kangaskhanb.pic" +NidoranMPicFront: ; 2453c (9:453c) + INCBIN "pic/bmon/nidoranm.pic" +NidoranMPicBack: ; 24623 (9:4623) + INCBIN "pic/monback/nidoranmb.pic" +ClefairyPicFront: ; 24682 (9:4682) + INCBIN "pic/bmon/clefairy.pic" +ClefairyPicBack: ; 24785 (9:4785) + INCBIN "pic/monback/clefairyb.pic" +SpearowPicFront: ; 247df (9:47df) + INCBIN "pic/bmon/spearow.pic" +SpearowPicBack: ; 248c2 (9:48c2) + INCBIN "pic/monback/spearowb.pic" +VoltorbPicFront: ; 24911 (9:4911) + INCBIN "pic/bmon/voltorb.pic" +VoltorbPicBack: ; 2499a (9:499a) + INCBIN "pic/monback/voltorbb.pic" +NidokingPicFront: ; 249f8 (9:49f8) + INCBIN "pic/bmon/nidoking.pic" +NidokingPicBack: ; 24c60 (9:4c60) + INCBIN "pic/monback/nidokingb.pic" +SlowbroPicFront: ; 24d0a (9:4d0a) + INCBIN "pic/bmon/slowbro.pic" +SlowbroPicBack: ; 24f87 (9:4f87) + INCBIN "pic/monback/slowbrob.pic" +IvysaurPicFront: ; 2502b (9:502b) + INCBIN "pic/bmon/ivysaur.pic" +IvysaurPicBack: ; 25157 (9:5157) + INCBIN "pic/monback/ivysaurb.pic" +ExeggutorPicFront: ; 251d6 (9:51d6) + INCBIN "pic/bmon/exeggutor.pic" +ExeggutorPicBack: ; 253f8 (9:53f8) + INCBIN "pic/monback/exeggutorb.pic" +LickitungPicFront: ; 254a7 (9:54a7) + INCBIN "pic/bmon/lickitung.pic" +LickitungPicBack: ; 2563e (9:563e) + INCBIN "pic/monback/lickitungb.pic" +ExeggcutePicFront: ; 256d7 (9:56d7) + INCBIN "pic/bmon/exeggcute.pic" +ExeggcutePicBack: ; 258f0 (9:58f0) + INCBIN "pic/monback/exeggcuteb.pic" +GrimerPicFront: ; 25973 (9:5973) + INCBIN "pic/bmon/grimer.pic" +GrimerPicBack: ; 25ab0 (9:5ab0) + INCBIN "pic/monback/grimerb.pic" +GengarPicFront: ; 25b76 (9:5b76) + INCBIN "pic/bmon/gengar.pic" +GengarPicBack: ; 25cc6 (9:5cc6) + INCBIN "pic/monback/gengarb.pic" +NidoranFPicFront: ; 25d28 (9:5d28) + INCBIN "pic/bmon/nidoranf.pic" +NidoranFPicBack: ; 25dc2 (9:5dc2) + INCBIN "pic/monback/nidoranfb.pic" +NidoqueenPicFront: ; 25e09 (9:5e09) + INCBIN "pic/bmon/nidoqueen.pic" +NidoqueenPicBack: ; 25fef (9:5fef) + INCBIN "pic/monback/nidoqueenb.pic" +CubonePicFront: ; 260a8 (9:60a8) + INCBIN "pic/bmon/cubone.pic" +CubonePicBack: ; 26196 (9:6196) + INCBIN "pic/monback/cuboneb.pic" +RhyhornPicFront: ; 26208 (9:6208) + INCBIN "pic/bmon/rhyhorn.pic" +RhyhornPicBack: ; 2640f (9:640f) + INCBIN "pic/monback/rhyhornb.pic" +LaprasPicFront: ; 264c1 (9:64c1) + INCBIN "pic/bmon/lapras.pic" +LaprasPicBack: ; 2667c (9:667c) + INCBIN "pic/monback/laprasb.pic" +ArcaninePicFront: ; 266ff (9:66ff) + INCBIN "pic/bmon/arcanine.pic" +ArcaninePicBack: ; 2693d (9:693d) + INCBIN "pic/monback/arcanineb.pic" +GyaradosPicFront: ; 269d4 (9:69d4) + INCBIN "pic/bmon/gyarados.pic" +GyaradosPicBack: ; 26c25 (9:6c25) + INCBIN "pic/monback/gyaradosb.pic" +ShellderPicFront: ; 26cb6 (9:6cb6) + INCBIN "pic/bmon/shellder.pic" +ShellderPicBack: ; 26dc3 (9:6dc3) + INCBIN "pic/monback/shellderb.pic" +TentacoolPicFront: ; 26e2a (9:6e2a) + INCBIN "pic/bmon/tentacool.pic" +TentacoolPicBack: ; 26f1c (9:6f1c) + INCBIN "pic/monback/tentacoolb.pic" +GastlyPicFront: ; 26f77 (9:6f77) + INCBIN "pic/bmon/gastly.pic" +GastlyPicBack: ; 27190 (9:7190) + INCBIN "pic/monback/gastlyb.pic" +ScytherPicFront: ; 2721c (9:721c) + INCBIN "pic/bmon/scyther.pic" +ScytherPicBack: ; 2743c (9:743c) + INCBIN "pic/monback/scytherb.pic" +StaryuPicFront: ; 274e0 (9:74e0) + INCBIN "pic/bmon/staryu.pic" +StaryuPicBack: ; 275ec (9:75ec) + INCBIN "pic/monback/staryub.pic" +BlastoisePicFront: ; 27637 (9:7637) + INCBIN "pic/bmon/blastoise.pic" +BlastoisePicBack: ; 27851 (9:7851) + INCBIN "pic/monback/blastoiseb.pic" +PinsirPicFront: ; 278da (9:78da) + INCBIN "pic/bmon/pinsir.pic" +PinsirPicBack: ; 27aaa (9:7aaa) + INCBIN "pic/monback/pinsirb.pic" +TangelaPicFront: ; 27b39 (9:7b39) + INCBIN "pic/bmon/tangela.pic" +TangelaPicBack: ; 27ce7 (9:7ce7) + INCBIN "pic/monback/tangelab.pic" - dw MrMimePicFront - dw MrMimePicBack +Func_27d6b: ; 27d6b (9:7d6b) + call Load16BitRegisters + push hl + call GetMonHeader + pop hl + push hl + ld a, [W_MONHTYPE1] + call Func_27d89 + ld a, [W_MONHTYPE1] + ld b, a + ld a, [W_MONHTYPE2] + cp b + pop hl + jr z, asm_27d8c + ld bc, $28 + add hl, bc - ; attacks known at lvl 0 - db CONFUSION - db BARRIER - db 0 - db 0 +Func_27d89: ; 27d89 (9:7d89) + push hl + jr asm_27d9f +asm_27d8c: ; 27d8c (9:7d8c) + ld a, $7f + ld bc, $13 + add hl, bc + ld bc, $6 + jp FillMemory - db 0 ; growth rate +Func_27d98: ; 27d98 (9:7d98) + call Load16BitRegisters + push hl + ld a, [W_PLAYERMOVETYPE] ; $cfd5 +asm_27d9f: ; 27d9f (9:7d9f) + add a + ld hl, TypeNamePointers ; $7dae + ld e, a + ld d, $0 + add hl, de + ld a, [hli] + ld e, a + ld d, [hl] + pop hl + jp PlaceString - ; learnset - db %10110001 - db %01000011 - db %10101111 - db %11110001 - db %10000111 - db %00111000 - db %01000010 +TypeNamePointers: ; 27dae (9:7dae) + dw Type00Name + dw Type01Name + dw Type02Name + dw Type03Name + dw Type04Name + dw Type05Name + dw Type06Name + dw Type07Name + dw Type08Name + dw Type00Name + dw Type00Name + dw Type00Name + dw Type00Name + dw Type00Name + dw Type00Name + dw Type00Name + dw Type00Name + dw Type00Name + dw Type00Name + dw Type00Name + dw Type14Name + dw Type15Name + dw Type16Name + dw Type17Name + dw Type18Name + dw Type19Name + dw Type1AName - db 0 ; padding +Type00Name: ; 27de4 (9:7de4) + db "NORMAL@" +Type01Name: ; 27deb (9:7deb) + db "FIGHTING@" +Type02Name: ; 27df4 (9:7df4) + db "FLYING@" +Type03Name: ; 27dfb (9:7dfb) + db "POISON@" +Type14Name: ; 27e02 (9:7e02) + db "FIRE@" +Type15Name: ; 27e07 (9:7e07) + db "WATER@" +Type16Name: ; 27e0d (9:7e0d) + db "GRASS@" +Type17Name: ; 27e13 (9:7e13) + db "ELECTRIC@" +Type18Name: ; 27e1c (9:7e1c) + db "PSYCHIC@" +Type19Name: ; 27e24 (9:7e24) + db "ICE@" +Type04Name: ; 27e28 (9:7e28) + db "GROUND@" +Type05Name: ; 27e2f (9:7e2f) + db "ROCK@" +Type06Name: ; 27e34 (9:7e34) + db "BIRD@" +Type07Name: ; 27e39 (9:7e39) + db "BUG@" +Type08Name: ; 27e3d (9:7e3d) + db "GHOST@" +Type1AName: ; 27e43 (9:7e43) + db "DRAGON@" -ScytherBaseStats: ; 39136 (e:5136) - db DEX_SCYTHER ; pokedex id - db 70 ; base hp - db 110 ; base attack - db 80 ; base defense - db 105 ; base speed - db 55 ; base special +SaveTrainerName: ; 27e4a (9:7e4a) + ld hl,TrainerNamePointers + ld a,[W_TRAINERCLASS] + dec a + ld c,a + ld b,0 + add hl,bc + add hl,bc + ld a,[hli] + ld h,[hl] + ld l,a + ld de,$CD6D +.CopyCharacter + ld a,[hli] + ld [de],a + inc de + cp "@" + jr nz,.CopyCharacter + ret - db BUG ; species type 1 - db FLYING ; species type 2 +TrainerNamePointers: ; 27e64 (9:7e64) +; what is the point of these? + dw YoungsterName + dw BugCatcherName + dw LassName + dw W_TRAINERNAME + dw JrTrainerMName + dw JrTrainerFName + dw PokemaniacName + dw SuperNerdName + dw W_TRAINERNAME + dw W_TRAINERNAME + dw BurglarName + dw EngineerName + dw JugglerXName + dw W_TRAINERNAME + dw SwimmerName + dw W_TRAINERNAME + dw W_TRAINERNAME + dw BeautyName + dw W_TRAINERNAME + dw RockerName + dw JugglerName + dw W_TRAINERNAME + dw W_TRAINERNAME + dw BlackbeltName + dw W_TRAINERNAME + dw ProfOakName + dw ChiefName + dw ScientistName + dw W_TRAINERNAME + dw RocketName + dw CooltrainerMName + dw CooltrainerFName + dw W_TRAINERNAME + dw W_TRAINERNAME + dw W_TRAINERNAME + dw W_TRAINERNAME + dw W_TRAINERNAME + dw W_TRAINERNAME + dw W_TRAINERNAME + dw W_TRAINERNAME + dw W_TRAINERNAME + dw W_TRAINERNAME + dw W_TRAINERNAME + dw W_TRAINERNAME + dw W_TRAINERNAME + dw W_TRAINERNAME + dw W_TRAINERNAME - db 45 ; catch rate - db 187 ; base exp yield - db $77 ; sprite dimensions +YoungsterName: ; 27ec2 (9:7ec2) + db "YOUNGSTER@" +BugCatcherName: ; 27ecc (9:7ecc) + db "BUG CATCHER@" +LassName: ; 27ed8 (9:7ed8) + db "LASS@" +JrTrainerMName: ; 27edd (9:7edd) + db "JR.TRAINER♂@" +JrTrainerFName: ; 27ee9 (9:7ee9) + db "JR.TRAINER♀@" +PokemaniacName: ; 27ef5 (9:7ef5) + db "POKéMANIAC@" +SuperNerdName: ; 27f00 (9:7f00) + db "SUPER NERD@" +BurglarName: ; 27f0b (9:7f0b) + db "BURGLAR@" +EngineerName: ; 27f13 (9:7f13) + db "ENGINEER@" +JugglerXName: ; 27f1c (9:7f1c) + db "JUGGLER@" +SwimmerName: ; 27f24 (9:7f24) + db "SWIMMER@" +BeautyName: ; 27f2c (9:7f2c) + db "BEAUTY@" +RockerName: ; 27f33 (9:7f33) + db "ROCKER@" +JugglerName: ; 27f3a (9:7f3a) + db "JUGGLER@" +BlackbeltName: ; 27f42 (9:7f42) + db "BLACKBELT@" +ProfOakName: ; 27f4c (9:7f4c) + db "PROF.OAK@" +ChiefName: ; 27f55 (9:7f55) + db "CHIEF@" +ScientistName: ; 27f5b (9:7f5b) + db "SCIENTIST@" +RocketName: ; 27f65 (9:7f65) + db "ROCKET@" +CooltrainerMName: ; 27f6c (9:7f6c) + db "COOLTRAINER♂@" +CooltrainerFName: ; 27f79 (9:7f79) + db "COOLTRAINER♀@" - dw ScytherPicFront - dw ScytherPicBack +_FocusEnergyEffect: ; 27f86 (9:7f86) + ld hl, W_PLAYERBATTSTATUS2 ; $d063 + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_27f91 + ld hl, W_ENEMYBATTSTATUS2 ; $d068 +.asm_27f91 + bit 2, [hl] + jr nz, .asm_27fa5 + set 2, [hl] + ld hl, Func_3fba8 + ld b, BANK(Func_3fba8) + call Bankswitch + ld hl, FocusEnergyText + jp PrintText +.asm_27fa5 + ld c, $32 + call DelayFrames + ld hl, PrintItFailedText + ld b, BANK(PrintItFailedText) + jp Bankswitch - ; attacks known at lvl 0 - db QUICK_ATTACK - db 0 - db 0 - db 0 +FocusEnergyText: ; 27fb3 (9:7fb3) + db $0a + TX_FAR _FocusEnergyText + db "@" - db 0 ; growth rate +SECTION "bankA",ROMX,BANK[$A] +GrowlithePicFront: ; 28000 (a:4000) + INCBIN "pic/bmon/growlithe.pic" +GrowlithePicBack: ; 28101 (a:4101) + INCBIN "pic/monback/growlitheb.pic" +OnixPicFront: ; 28164 (a:4164) + INCBIN "pic/bmon/onix.pic" +OnixPicBack: ; 28300 (a:4300) + INCBIN "pic/monback/onixb.pic" +FearowPicFront: ; 28383 (a:4383) + INCBIN "pic/bmon/fearow.pic" +FearowPicBack: ; 28529 (a:4529) + INCBIN "pic/monback/fearowb.pic" +PidgeyPicFront: ; 285a7 (a:45a7) + INCBIN "pic/bmon/pidgey.pic" +PidgeyPicBack: ; 2865b (a:465b) + INCBIN "pic/monback/pidgeyb.pic" +SlowpokePicFront: ; 286a0 (a:46a0) + INCBIN "pic/bmon/slowpoke.pic" +SlowpokePicBack: ; 287c2 (a:47c2) + INCBIN "pic/monback/slowpokeb.pic" +KadabraPicFront: ; 28830 (a:4830) + INCBIN "pic/bmon/kadabra.pic" +KadabraPicBack: ; 289b9 (a:49b9) + INCBIN "pic/monback/kadabrab.pic" +GravelerPicFront: ; 28a4c (a:4a4c) + INCBIN "pic/bmon/graveler.pic" +GravelerPicBack: ; 28c00 (a:4c00) + INCBIN "pic/monback/gravelerb.pic" +ChanseyPicFront: ; 28cae (a:4cae) + INCBIN "pic/bmon/chansey.pic" +ChanseyPicBack: ; 28e21 (a:4e21) + INCBIN "pic/monback/chanseyb.pic" +MachokePicFront: ; 28e85 (a:4e85) + INCBIN "pic/bmon/machoke.pic" +MachokePicBack: ; 29063 (a:5063) + INCBIN "pic/monback/machokeb.pic" +MrMimePicFront: ; 290f3 (a:50f3) + INCBIN "pic/bmon/mr.mime.pic" +MrMimePicBack: ; 29247 (a:5247) + INCBIN "pic/monback/mr.mimeb.pic" +HitmonleePicFront: ; 292bf (a:52bf) + INCBIN "pic/bmon/hitmonlee.pic" +HitmonleePicBack: ; 2945e (a:545e) + INCBIN "pic/monback/hitmonleeb.pic" +HitmonchanPicFront: ; 294bc (a:54bc) + INCBIN "pic/bmon/hitmonchan.pic" +HitmonchanPicBack: ; 29643 (a:5643) + INCBIN "pic/monback/hitmonchanb.pic" +ArbokPicFront: ; 296b4 (a:56b4) + INCBIN "pic/bmon/arbok.pic" +ArbokPicBack: ; 29911 (a:5911) + INCBIN "pic/monback/arbokb.pic" +ParasectPicFront: ; 299a8 (a:59a8) + INCBIN "pic/bmon/parasect.pic" +ParasectPicBack: ; 29b8c (a:5b8c) + INCBIN "pic/monback/parasectb.pic" +PsyduckPicFront: ; 29c0a (a:5c0a) + INCBIN "pic/bmon/psyduck.pic" +PsyduckPicBack: ; 29d3e (a:5d3e) + INCBIN "pic/monback/psyduckb.pic" +DrowzeePicFront: ; 29da9 (a:5da9) + INCBIN "pic/bmon/drowzee.pic" +DrowzeePicBack: ; 29f05 (a:5f05) + INCBIN "pic/monback/drowzeeb.pic" +GolemPicFront: ; 29f74 (a:5f74) + INCBIN "pic/bmon/golem.pic" +GolemPicBack: ; 2a0f2 (a:60f2) + INCBIN "pic/monback/golemb.pic" +MagmarPicFront: ; 2a161 (a:6161) + INCBIN "pic/bmon/magmar.pic" +MagmarPicBack: ; 2a2bf (a:62bf) + INCBIN "pic/monback/magmarb.pic" +ElectabuzzPicFront: ; 2a367 (a:6367) + INCBIN "pic/bmon/electabuzz.pic" +ElectabuzzPicBack: ; 2a4ef (a:64ef) + INCBIN "pic/monback/electabuzzb.pic" +MagnetonPicFront: ; 2a588 (a:6588) + INCBIN "pic/bmon/magneton.pic" +MagnetonPicBack: ; 2a723 (a:6723) + INCBIN "pic/monback/magnetonb.pic" +KoffingPicFront: ; 2a7a6 (a:67a6) + INCBIN "pic/bmon/koffing.pic" +KoffingPicBack: ; 2a974 (a:6974) + INCBIN "pic/monback/koffingb.pic" +MankeyPicFront: ; 2aa11 (a:6a11) + INCBIN "pic/bmon/mankey.pic" +MankeyPicBack: ; 2ab16 (a:6b16) + INCBIN "pic/monback/mankeyb.pic" +SeelPicFront: ; 2ab84 (a:6b84) + INCBIN "pic/bmon/seel.pic" +SeelPicBack: ; 2ace8 (a:6ce8) + INCBIN "pic/monback/seelb.pic" +DiglettPicFront: ; 2ad33 (a:6d33) + INCBIN "pic/bmon/diglett.pic" +DiglettPicBack: ; 2ae10 (a:6e10) + INCBIN "pic/monback/diglettb.pic" +TaurosPicFront: ; 2ae7e (a:6e7e) + INCBIN "pic/bmon/tauros.pic" +TaurosPicBack: ; 2b054 (a:7054) + INCBIN "pic/monback/taurosb.pic" +FarfetchdPicFront: ; 2b0e9 (a:70e9) + INCBIN "pic/bmon/farfetchd.pic" +FarfetchdPicBack: ; 2b2c6 (a:72c6) + INCBIN "pic/monback/farfetchdb.pic" +VenonatPicFront: ; 2b357 (a:7357) + INCBIN "pic/bmon/venonat.pic" +VenonatPicBack: ; 2b45c (a:745c) + INCBIN "pic/monback/venonatb.pic" +DragonitePicFront: ; 2b4aa (a:74aa) + INCBIN "pic/bmon/dragonite.pic" +DragonitePicBack: ; 2b67f (a:767f) + INCBIN "pic/monback/dragoniteb.pic" +DoduoPicFront: ; 2b72c (a:772c) + INCBIN "pic/bmon/doduo.pic" +DoduoPicBack: ; 2b80d (a:780d) + INCBIN "pic/monback/doduob.pic" +PoliwagPicFront: ; 2b875 (a:7875) + INCBIN "pic/bmon/poliwag.pic" +PoliwagPicBack: ; 2b947 (a:7947) + INCBIN "pic/monback/poliwagb.pic" +JynxPicFront: ; 2b98e (a:798e) + INCBIN "pic/bmon/jynx.pic" +JynxPicBack: ; 2bb42 (a:7b42) + INCBIN "pic/monback/jynxb.pic" +MoltresPicFront: ; 2bbac (a:7bac) + INCBIN "pic/bmon/moltres.pic" +MoltresPicBack: ; 2be02 (a:7e02) + INCBIN "pic/monback/moltresb.pic" - ; learnset - db %00100100 - db %01000011 - db %00001000 - db %11000000 - db %11000010 - db %00001000 - db %00000110 +_LeechSeedEffect: ; 2bea9 (a:7ea9) + ld hl, MoveHitTest + ld b, BANK(MoveHitTest) + call Bankswitch + ld a, [W_MOVEMISSED] ; $d05f + and a + jr nz, .asm_2bee7 + ld hl, W_ENEMYBATTSTATUS2 ; $d068 + ld de, W_ENEMYMONTYPE1 ; $cfea (aliases: W_ENEMYMONTYPES) + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_2bec8 + ld hl, W_PLAYERBATTSTATUS2 ; $d063 + ld de, W_PLAYERMONTYPE1 ; $d019 (aliases: W_PLAYERMONTYPES) +.asm_2bec8 + ld a, [de] + cp GRASS + jr z, .asm_2bee7 + inc de + ld a, [de] + cp GRASS + jr z, .asm_2bee7 + bit 7, [hl] + jr nz, .asm_2bee7 + set 7, [hl] + ld hl, Func_3fba8 + ld b, BANK(Func_3fba8) + call Bankswitch + ld hl, SeededText + jp PrintText +.asm_2bee7 + ld c, $32 + call DelayFrames + ld hl, EvadedText + jp PrintText - db 0 ; padding +SeededText: ; 2bef2 (a:7ef2) + TX_FAR _SeededText + db "@" -JynxBaseStats: ; 39152 (e:5152) - db DEX_JYNX ; pokedex id - db 65 ; base hp - db 50 ; base attack - db 35 ; base defense - db 95 ; base speed - db 95 ; base special +EvadedText: ; 2bef7 (a:7ef7) + TX_FAR _EvadedText + db "@" - db ICE ; species type 1 - db PSYCHIC ; species type 2 +SECTION "bankB",ROMX,BANK[$B] +ArticunoPicFront: ; 2c000 (b:4000) + INCBIN "pic/bmon/articuno.pic" +ArticunoPicBack: ; 2c238 (b:4238) + INCBIN "pic/monback/articunob.pic" +ZapdosPicFront: ; 2c29d (b:429d) + INCBIN "pic/bmon/zapdos.pic" +ZapdosPicBack: ; 2c484 (b:4484) + INCBIN "pic/monback/zapdosb.pic" +DittoPicFront: ; 2c514 (b:4514) + INCBIN "pic/bmon/ditto.pic" +DittoPicBack: ; 2c5bd (b:45bd) + INCBIN "pic/monback/dittob.pic" +MeowthPicFront: ; 2c609 (b:4609) + INCBIN "pic/bmon/meowth.pic" +MeowthPicBack: ; 2c71f (b:471f) + INCBIN "pic/monback/meowthb.pic" +KrabbyPicFront: ; 2c777 (b:4777) + INCBIN "pic/bmon/krabby.pic" +KrabbyPicBack: ; 2c8b0 (b:48b0) + INCBIN "pic/monback/krabbyb.pic" +VulpixPicFront: ; 2c924 (b:4924) + INCBIN "pic/bmon/vulpix.pic" +VulpixPicBack: ; 2ca9a (b:4a9a) + INCBIN "pic/monback/vulpixb.pic" +NinetalesPicFront: ; 2caff (b:4aff) + INCBIN "pic/bmon/ninetales.pic" +NinetalesPicBack: ; 2ccfb (b:4cfb) + INCBIN "pic/monback/ninetalesb.pic" +PikachuPicFront: ; 2cd7d (b:4d7d) + INCBIN "pic/bmon/pikachu.pic" +PikachuPicBack: ; 2ce8b (b:4e8b) + INCBIN "pic/monback/pikachub.pic" +RaichuPicFront: ; 2cf03 (b:4f03) + INCBIN "pic/bmon/raichu.pic" +RaichuPicBack: ; 2d0c3 (b:50c3) + INCBIN "pic/monback/raichub.pic" +DratiniPicFront: ; 2d151 (b:5151) + INCBIN "pic/bmon/dratini.pic" +DratiniPicBack: ; 2d234 (b:5234) + INCBIN "pic/monback/dratinib.pic" +DragonairPicFront: ; 2d297 (b:5297) + INCBIN "pic/bmon/dragonair.pic" +DragonairPicBack: ; 2d3d9 (b:53d9) + INCBIN "pic/monback/dragonairb.pic" +KabutoPicFront: ; 2d464 (b:5464) + INCBIN "pic/bmon/kabuto.pic" +KabutoPicBack: ; 2d529 (b:5529) + INCBIN "pic/monback/kabutob.pic" +KabutopsPicFront: ; 2d583 (b:5583) + INCBIN "pic/bmon/kabutops.pic" +KabutopsPicBack: ; 2d73c (b:573c) + INCBIN "pic/monback/kabutopsb.pic" +HorseaPicFront: ; 2d7c1 (b:57c1) + INCBIN "pic/bmon/horsea.pic" +HorseaPicBack: ; 2d873 (b:5873) + INCBIN "pic/monback/horseab.pic" +SeadraPicFront: ; 2d8c4 (b:58c4) + INCBIN "pic/bmon/seadra.pic" +SeadraPicBack: ; 2da2b (b:5a2b) + INCBIN "pic/monback/seadrab.pic" +SandshrewPicFront: ; 2dac9 (b:5ac9) + INCBIN "pic/bmon/sandshrew.pic" +SandshrewPicBack: ; 2dbe7 (b:5be7) + INCBIN "pic/monback/sandshrewb.pic" +SandslashPicFront: ; 2dc6b (b:5c6b) + INCBIN "pic/bmon/sandslash.pic" +SandslashPicBack: ; 2de04 (b:5e04) + INCBIN "pic/monback/sandslashb.pic" +OmanytePicFront: ; 2de9d (b:5e9d) + INCBIN "pic/bmon/omanyte.pic" +OmanytePicBack: ; 2df76 (b:5f76) + INCBIN "pic/monback/omanyteb.pic" +OmastarPicFront: ; 2dfd3 (b:5fd3) + INCBIN "pic/bmon/omastar.pic" +OmastarPicBack: ; 2e18b (b:618b) + INCBIN "pic/monback/omastarb.pic" +JigglypuffPicFront: ; 2e22f (b:622f) + INCBIN "pic/bmon/jigglypuff.pic" +JigglypuffPicBack: ; 2e30f (b:630f) + INCBIN "pic/monback/jigglypuffb.pic" +WigglytuffPicFront: ; 2e348 (b:6348) + INCBIN "pic/bmon/wigglytuff.pic" +WigglytuffPicBack: ; 2e4bf (b:64bf) + INCBIN "pic/monback/wigglytuffb.pic" +EeveePicFront: ; 2e531 (b:6531) + INCBIN "pic/bmon/eevee.pic" +EeveePicBack: ; 2e625 (b:6625) + INCBIN "pic/monback/eeveeb.pic" +FlareonPicFront: ; 2e68d (b:668d) + INCBIN "pic/bmon/flareon.pic" +FlareonPicBack: ; 2e806 (b:6806) + INCBIN "pic/monback/flareonb.pic" +JolteonPicFront: ; 2e88f (b:688f) + INCBIN "pic/bmon/jolteon.pic" +JolteonPicBack: ; 2ea0a (b:6a0a) + INCBIN "pic/monback/jolteonb.pic" +VaporeonPicFront: ; 2eaae (b:6aae) + INCBIN "pic/bmon/vaporeon.pic" +VaporeonPicBack: ; 2ec02 (b:6c02) + INCBIN "pic/monback/vaporeonb.pic" +MachopPicFront: ; 2ec9f (b:6c9f) + INCBIN "pic/bmon/machop.pic" +MachopPicBack: ; 2eda2 (b:6da2) + INCBIN "pic/monback/machopb.pic" +ZubatPicFront: ; 2ee0c (b:6e0c) + INCBIN "pic/bmon/zubat.pic" +ZubatPicBack: ; 2ef17 (b:6f17) + INCBIN "pic/monback/zubatb.pic" +EkansPicFront: ; 2ef6b (b:6f6b) + INCBIN "pic/bmon/ekans.pic" +EkansPicBack: ; 2f06d (b:706d) + INCBIN "pic/monback/ekansb.pic" +ParasPicFront: ; 2f0b4 (b:70b4) + INCBIN "pic/bmon/paras.pic" +ParasPicBack: ; 2f177 (b:7177) + INCBIN "pic/monback/parasb.pic" +PoliwhirlPicFront: ; 2f1ed (b:71ed) + INCBIN "pic/bmon/poliwhirl.pic" +PoliwhirlPicBack: ; 2f35e (b:735e) + INCBIN "pic/monback/poliwhirlb.pic" +PoliwrathPicFront: ; 2f3c1 (b:73c1) + INCBIN "pic/bmon/poliwrath.pic" +PoliwrathPicBack: ; 2f52c (b:752c) + INCBIN "pic/monback/poliwrathb.pic" +WeedlePicFront: ; 2f57d (b:757d) + INCBIN "pic/bmon/weedle.pic" +WeedlePicBack: ; 2f624 (b:7624) + INCBIN "pic/monback/weedleb.pic" +KakunaPicFront: ; 2f677 (b:7677) + INCBIN "pic/bmon/kakuna.pic" +KakunaPicBack: ; 2f736 (b:7736) + INCBIN "pic/monback/kakunab.pic" +BeedrillPicFront: ; 2f788 (b:7788) + INCBIN "pic/bmon/beedrill.pic" +BeedrillPicBack: ; 2f980 (b:7980) + INCBIN "pic/monback/beedrillb.pic" +FossilKabutopsPic: ; 2f9e8 (b:79e8) + INCBIN "pic/bmon/fossilkabutops.pic" - db 45 ; catch rate - db 137 ; base exp yield - db $66 ; sprite dimensions +DisplayEffectiveness: ; 2fb7b (b:7b7b) + ld a, [$D05B] + and a, $7F + cp a, $0A + ret z + ld hl, SupperEffectiveText + jr nc, .done + ld hl, NotVeryEffectiveText +.done + jp PrintText - dw JynxPicFront - dw JynxPicBack +SupperEffectiveText: ; 2fb8e (b:7b8e) + TX_FAR _SupperEffectiveText + db "@" - ; attacks known at lvl 0 - db POUND - db LOVELY_KISS - db 0 - db 0 +NotVeryEffectiveText: ; 2fb93 (b:7b93) + TX_FAR _NotVeryEffectiveText + db "@" - db 0 ; growth rate +TrainerInfoTextBoxTileGraphics: ; 2fb98 (b:7b98) + INCBIN "gfx/trainer_info.2bpp" - ; learnset - db %10110001 - db %01111111 - db %00001111 - db %11110000 - db %10000111 - db %00101000 - db %00000010 +BlankLeaderNames: ; 2fc28 (b:7c28) + INCBIN "gfx/blank_leader_names.2bpp" - db 0 ; padding +CircleTile: ; 2fd88 (b:7d88) + INCBIN "gfx/circle_tile.2bpp" -ElectabuzzBaseStats: ; 3916e (e:516e) - db DEX_ELECTABUZZ ; pokedex id - db 65 ; base hp - db 83 ; base attack - db 57 ; base defense - db 105 ; base speed - db 85 ; base special +BadgeNumbersTileGraphics: ; 2fd98 (b:7d98) + INCBIN "gfx/badge_numbers.2bpp" - db ELECTRIC ; species type 1 - db ELECTRIC ; species type 2 +; checks if the mon in wWhichPokemon already knows the move in $d0e0 +CheckIfMoveIsKnown: ; 2fe18 (b:7e18) + ld a, [wWhichPokemon] + ld hl, W_PARTYMON1_MOVE1 + ld bc, $2c + call AddNTimes + ld a, [$d0e0] + ld b, a + ld c, $4 ; nubmer of moves +.loop + ld a, [hli] + cp b + jr z, .alreadyKnown ; found a match + dec c + jr nz, .loop + and a + ret +.alreadyKnown + ld hl, AlreadyKnowsText + call PrintText + scf + ret - db 45 ; catch rate - db 156 ; base exp yield - db $66 ; sprite dimensions +AlreadyKnowsText: ; 2fe3b (b:7e3b) + TX_FAR _AlreadyKnowsText + db "@" - dw ElectabuzzPicFront - dw ElectabuzzPicBack +; scales both uncompressed sprite chunks by two in every dimension (creating 2x2 output pixels per input pixel) +; assumes that input sprite chunks are 4x4 tiles, and the rightmost and bottommost 4 pixels will be ignored +; resulting in a 7*7 tile output sprite chunk +ScaleSpriteByTwo: ; 2fe40 (b:7e40) + ld de, S_SPRITEBUFFER1 + (4*4*8) - 5 ; last byte of input data, last 4 rows already skipped + ld hl, S_SPRITEBUFFER0 + SPRITEBUFFERSIZE - 1 ; end of destination buffer + call ScaleLastSpriteColumnByTwo ; last tile column is special case + call ScaleFirstThreeSpriteColumnsByTwo ; scale first 3 tile columns + ld de, S_SPRITEBUFFER2 + (4*4*8) - 5 ; last byte of input data, last 4 rows already skipped + ld hl, S_SPRITEBUFFER1 + SPRITEBUFFERSIZE - 1 ; end of destination buffer + call ScaleLastSpriteColumnByTwo ; last tile column is special case - ; attacks known at lvl 0 - db QUICK_ATTACK - db LEER - db 0 - db 0 +ScaleFirstThreeSpriteColumnsByTwo: ; 2fe55 (b:7e55) + ld b, $3 ; 3 tile columns +.columnLoop + ld c, 4*8 - 4 ; $1c, 4 tiles minus 4 unused rows +.columnInnerLoop + push bc + ld a, [de] + ld bc, -(7*8)+1 ; $ffc9, scale lower nybble and seek to previous output column + call ScalePixelsByTwo + ld a, [de] + dec de + swap a + ld bc, 7*8+1-2 ; $37, scale upper nybble and seek back to current output column and to the next 2 rows + call ScalePixelsByTwo + pop bc + dec c + jr nz, .columnInnerLoop + dec de + dec de + dec de + dec de + ld a, b + ld bc, -7*8 ; $ffc8, skip one output column (which has already been written along with the current one) + add hl, bc + ld b, a + dec b + jr nz, .columnLoop + ret - db 0 ; growth rate +ScaleLastSpriteColumnByTwo: ; 2fe7d (b:7e7d) + ld a, 4*8 - 4 ; $1c, 4 tiles minus 4 unused rows + ld [H_SPRITEINTERLACECOUNTER], a ; $ff8b + ld bc, -1 ; $ffff +.columnInnerLoop + ld a, [de] + dec de + swap a ; only high nybble contains information + call ScalePixelsByTwo + ld a, [H_SPRITEINTERLACECOUNTER] ; $ff8b + dec a + ld [H_SPRITEINTERLACECOUNTER], a ; $ff8b + jr nz, .columnInnerLoop + dec de ; skip last 4 rows of new column + dec de + dec de + dec de + ret - ; learnset - db %10110001 - db %01000011 - db %10001111 - db %11110001 - db %11000111 - db %00111000 - db %01100010 +; scales the given 4 bits in a (4x1 pixels) to 2 output bytes (8x2 pixels) +; hl: destination pointer +; bc: destination pointer offset (added after the two bytes have been written) +ScalePixelsByTwo: ; 2fe97 (b:7e97) + push hl + and $f + ld hl, DuplicateBitsTable + add l + ld l, a + jr nc, .noCarry + inc h +.noCarry + ld a, [hl] + pop hl + ld [hld], a ; write output byte twice to make it 2 pixels high + ld [hl], a + add hl, bc ; add offset + ret - db 0 ; padding +; repeats each input bit twice +DuplicateBitsTable: ; 2fea8 (b:7ea8) + db $00, $03, $0c, $0f + db $30, $33, $3c, $3f + db $c0, $c3, $cc, $cf + db $f0, $f3, $fc, $ff -MagmarBaseStats: ; 3918a (e:518a) - db DEX_MAGMAR ; pokedex id - db 65 ; base hp - db 95 ; base attack - db 57 ; base defense - db 93 ; base speed - db 85 ; base special +_PayDayEffect ; 2feb8 (b:7eb8) + xor a + ld hl, $cd6d + ld [hli], a + ld a, [$fff3] + and a + ld a, [$d022] + jr z, .asm_2fec8 ; 0x2fec3 $3 + ld a, [$cff3] +.asm_2fec8 + add a + ld [$ff98], a + xor a + ld [$ff95], a + ld [$ff96], a + ld [$ff97], a + ld a, $64 + ld [$ff99], a + ld b, $4 + call Divide + ld a, [$ff98] + ld [hli], a + ld a, [$ff99] + ld [$ff98], a + ld a, $a + ld [$ff99], a + ld b, $4 + call Divide + ld a, [$ff98] + swap a + ld b, a + ld a, [$ff99] + add b + ld [hl], a + ld de, $cce7 + ld c, $3 + ld a, $b + call Predef + ld hl, PayDayText + jp PrintText - db FIRE ; species type 1 - db FIRE ; species type 2 +PayDayText: ; 2ff04 (b:7f04) + TX_FAR _PayDayText + db "@" - db 45 ; catch rate - db 167 ; base exp yield - db $66 ; sprite dimensions +Func_2ff09 ; 2ff09 (b:7f09) + ld a, [$c102] + and $8 + jr z, .asm_2ff2e + ld b, $45 + ld a, $1c + call Predef + ld a, b + and a + ld b, $33 + jr z, .asm_2ff26 + ld hl, $d5a4 + ld a, [hli] + or [hl] + jr nz, .asm_2ff2e + ld b, $32 +.asm_2ff26 + call EnableAutoTextBoxDrawing + ld a, b + call Func_3ef5 + xor a +.asm_2ff2e + ld [$cd3d], a + ret - dw MagmarPicFront - dw MagmarPicBack +GameCornerCoinCaseText: ; 2ff32 (b:7f32) + TX_FAR _GameCornerCoinCaseText + db "@" - ; attacks known at lvl 0 - db EMBER - db 0 - db 0 - db 0 +GameCornerNoCoinsText: ; 2ff37 (b:7f37) + TX_FAR _GameCornerNoCoinsText + db "@" - db 0 ; growth rate +SECTION "bankC",ROMX,BANK[$C] +DodrioPicFront: ; 30000 (c:4000) + INCBIN "pic/bmon/dodrio.pic" +DodrioPicBack: ; 301a2 (c:41a2) + INCBIN "pic/monback/dodriob.pic" +PrimeapePicFront: ; 30247 (c:4247) + INCBIN "pic/bmon/primeape.pic" +PrimeapePicBack: ; 30408 (c:4408) + INCBIN "pic/monback/primeapeb.pic" +DugtrioPicFront: ; 30480 (c:4480) + INCBIN "pic/bmon/dugtrio.pic" +DugtrioPicBack: ; 3062a (c:462a) + INCBIN "pic/monback/dugtriob.pic" +VenomothPicFront: ; 306a9 (c:46a9) + INCBIN "pic/bmon/venomoth.pic" +VenomothPicBack: ; 30841 (c:4841) + INCBIN "pic/monback/venomothb.pic" +DewgongPicFront: ; 30899 (c:4899) + INCBIN "pic/bmon/dewgong.pic" +DewgongPicBack: ; 309e2 (c:49e2) + INCBIN "pic/monback/dewgongb.pic" +CaterpiePicFront: ; 30a49 (c:4a49) + INCBIN "pic/bmon/caterpie.pic" +CaterpiePicBack: ; 30ae1 (c:4ae1) + INCBIN "pic/monback/caterpieb.pic" +MetapodPicFront: ; 30b3a (c:4b3a) + INCBIN "pic/bmon/metapod.pic" +MetapodPicBack: ; 30bc8 (c:4bc8) + INCBIN "pic/monback/metapodb.pic" +ButterfreePicFront: ; 30c37 (c:4c37) + INCBIN "pic/bmon/butterfree.pic" +ButterfreePicBack: ; 30e0e (c:4e0e) + INCBIN "pic/monback/butterfreeb.pic" +MachampPicFront: ; 30e93 (c:4e93) + INCBIN "pic/bmon/machamp.pic" +MachampPicBack: ; 3108c (c:508c) + INCBIN "pic/monback/machampb.pic" +GolduckPicFront: ; 31108 (c:5108) + INCBIN "pic/bmon/golduck.pic" +GolduckPicBack: ; 312c2 (c:52c2) + INCBIN "pic/monback/golduckb.pic" +HypnoPicFront: ; 3135d (c:535d) + INCBIN "pic/bmon/hypno.pic" +HypnoPicBack: ; 31552 (c:5552) + INCBIN "pic/monback/hypnob.pic" +GolbatPicFront: ; 315e0 (c:55e0) + INCBIN "pic/bmon/golbat.pic" +GolbatPicBack: ; 3180a (c:580a) + INCBIN "pic/monback/golbatb.pic" +MewtwoPicFront: ; 3187f (c:587f) + INCBIN "pic/bmon/mewtwo.pic" +MewtwoPicBack: ; 31a85 (c:5a85) + INCBIN "pic/monback/mewtwob.pic" +SnorlaxPicFront: ; 31b19 (c:5b19) + INCBIN "pic/bmon/snorlax.pic" +SnorlaxPicBack: ; 31ce5 (c:5ce5) + INCBIN "pic/monback/snorlaxb.pic" +MagikarpPicFront: ; 31d31 (c:5d31) + INCBIN "pic/bmon/magikarp.pic" +MagikarpPicBack: ; 31ec3 (c:5ec3) + INCBIN "pic/monback/magikarpb.pic" +MukPicFront: ; 31f56 (c:5f56) + INCBIN "pic/bmon/muk.pic" +MukPicBack: ; 3215f (c:615f) + INCBIN "pic/monback/mukb.pic" +KinglerPicFront: ; 321ec (c:61ec) + INCBIN "pic/bmon/kingler.pic" +KinglerPicBack: ; 323de (c:63de) + INCBIN "pic/monback/kinglerb.pic" +CloysterPicFront: ; 3247f (c:647f) + INCBIN "pic/bmon/cloyster.pic" +CloysterPicBack: ; 326ab (c:66ab) + INCBIN "pic/monback/cloysterb.pic" +ElectrodePicFront: ; 32760 (c:6760) + INCBIN "pic/bmon/electrode.pic" +ElectrodePicBack: ; 32827 (c:6827) + INCBIN "pic/monback/electrodeb.pic" +ClefablePicFront: ; 3288c (c:688c) + INCBIN "pic/bmon/clefable.pic" +ClefablePicBack: ; 329b8 (c:69b8) + INCBIN "pic/monback/clefableb.pic" +WeezingPicFront: ; 32a44 (c:6a44) + INCBIN "pic/bmon/weezing.pic" +WeezingPicBack: ; 32c76 (c:6c76) + INCBIN "pic/monback/weezingb.pic" +PersianPicFront: ; 32d1e (c:6d1e) + INCBIN "pic/bmon/persian.pic" +PersianPicBack: ; 32f04 (c:6f04) + INCBIN "pic/monback/persianb.pic" +MarowakPicFront: ; 32f8f (c:6f8f) + INCBIN "pic/bmon/marowak.pic" +MarowakPicBack: ; 33101 (c:7101) + INCBIN "pic/monback/marowakb.pic" +HaunterPicFront: ; 3318a (c:718a) + INCBIN "pic/bmon/haunter.pic" +HaunterPicBack: ; 33345 (c:7345) + INCBIN "pic/monback/haunterb.pic" +AbraPicFront: ; 333cc (c:73cc) + INCBIN "pic/bmon/abra.pic" +AbraPicBack: ; 334cf (c:74cf) + INCBIN "pic/monback/abrab.pic" +AlakazamPicFront: ; 3355a (c:755a) + INCBIN "pic/bmon/alakazam.pic" +AlakazamPicBack: ; 33779 (c:7779) + INCBIN "pic/monback/alakazamb.pic" +PidgeottoPicFront: ; 3380a (c:780a) + INCBIN "pic/bmon/pidgeotto.pic" +PidgeottoPicBack: ; 3395b (c:795b) + INCBIN "pic/monback/pidgeottob.pic" +PidgeotPicFront: ; 339c2 (c:79c2) + INCBIN "pic/bmon/pidgeot.pic" +PidgeotPicBack: ; 33b79 (c:7b79) + INCBIN "pic/monback/pidgeotb.pic" +StarmiePicFront: ; 33c1c (c:7c1c) + INCBIN "pic/bmon/starmie.pic" +StarmiePicBack: ; 33dac (c:7dac) + INCBIN "pic/monback/starmieb.pic" +RedPicBack: ; 33e0a (c:7e0a) + INCBIN "pic/trainer/redb.pic" +OldManPic: ; 33e9a (c:7e9a) + INCBIN "pic/trainer/oldman.pic" - ; learnset - db %10110001 - db %01000011 - db %00001111 - db %11110000 - db %10100110 - db %00101000 - db %00100010 +_MistEffect: ; 33f2b (c:7f2b) + ld hl, $d063 + ld a, [$fff3] + and a + jr z, .asm_33f36 + ld hl, $d068 +.asm_33f36 + bit 1, [hl] + jr nz, .asm_33f4a + set 1, [hl] + ld hl, Func_3fba8 + ld b, BANK(Func_3fba8) + call Bankswitch + ld hl, MistText + jp PrintText +.asm_33f4a + ld hl, PrintItFailedText + ld b, BANK(PrintItFailedText) + jp Bankswitch - db 0 ; padding +MistText: ; 33f52 (c:7f52) + TX_FAR _MistText + db "@" -PinsirBaseStats: ; 391a6 (e:51a6) - db DEX_PINSIR ; pokedex id - db 65 ; base hp - db 125 ; base attack - db 100 ; base defense - db 85 ; base speed - db 55 ; base special +Func_33f57: ; 33f57 (c:7f57) + ld hl, W_DAMAGE ; $d0d7 + xor a + ld [hli], a + ld [hl], a + dec a + ld [$d05e], a + ld hl, $d02a + ld de, $cffb + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_33f72 + ld hl, $cffb + ld de, $d02a +.asm_33f72 + ld a, [de] + dec de + ld b, a + ld a, [hld] + sub b + ld a, [de] + ld b, a + ld a, [hl] + sbc b + jr c, .asm_33f8a + ld hl, W_DAMAGE ; $d0d7 + ld a, $ff + ld [hli], a + ld [hl], a + ld a, $2 + ld [$d05e], a + ret +.asm_33f8a + ld a, $1 + ld [W_MOVEMISSED], a ; $d05f + ret - db BUG ; species type 1 - db BUG ; species type 2 +SECTION "bankD",ROMX,BANK[$D] +BulbasaurPicFront: ; 34000 (d:4000) + INCBIN "pic/bmon/bulbasaur.pic" +BulbasaurPicBack: ; 340e5 (d:40e5) + INCBIN "pic/monback/bulbasaurb.pic" +VenusaurPicFront: ; 34162 (d:4162) + INCBIN "pic/bmon/venusaur.pic" +VenusaurPicBack: ; 34397 (d:4397) + INCBIN "pic/monback/venusaurb.pic" +TentacruelPicFront: ; 34455 (d:4455) + INCBIN "pic/bmon/tentacruel.pic" +TentacruelPicBack: ; 345c3 (d:45c3) + INCBIN "pic/monback/tentacruelb.pic" +GoldeenPicFront: ; 3466f (d:466f) + INCBIN "pic/bmon/goldeen.pic" +GoldeenPicBack: ; 34796 (d:4796) + INCBIN "pic/monback/goldeenb.pic" +SeakingPicFront: ; 34803 (d:4803) + INCBIN "pic/bmon/seaking.pic" +SeakingPicBack: ; 34a03 (d:4a03) + INCBIN "pic/monback/seakingb.pic" +PonytaPicFront: ; 34ab1 (d:4ab1) + INCBIN "pic/bmon/ponyta.pic" +RapidashPicFront: ; 34c10 (d:4c10) + INCBIN "pic/bmon/rapidash.pic" +PonytaPicBack: ; 34e32 (d:4e32) + INCBIN "pic/monback/ponytab.pic" +RapidashPicBack: ; 34eba (d:4eba) + INCBIN "pic/monback/rapidashb.pic" +RattataPicFront: ; 34f6a (d:4f6a) + INCBIN "pic/bmon/rattata.pic" +RattataPicBack: ; 35041 (d:5041) + INCBIN "pic/monback/rattatab.pic" +RaticatePicFront: ; 3507a (d:507a) + INCBIN "pic/bmon/raticate.pic" +RaticatePicBack: ; 3520d (d:520d) + INCBIN "pic/monback/raticateb.pic" +NidorinoPicFront: ; 35282 (d:5282) + INCBIN "pic/bmon/nidorino.pic" +NidorinoPicBack: ; 353f0 (d:53f0) + INCBIN "pic/monback/nidorinob.pic" +NidorinaPicFront: ; 3548b (d:548b) + INCBIN "pic/bmon/nidorina.pic" +NidorinaPicBack: ; 355c8 (d:55c8) + INCBIN "pic/monback/nidorinab.pic" +GeodudePicFront: ; 3564f (d:564f) + INCBIN "pic/bmon/geodude.pic" +GeodudePicBack: ; 35729 (d:5729) + INCBIN "pic/monback/geodudeb.pic" +PorygonPicFront: ; 35784 (d:5784) + INCBIN "pic/bmon/porygon.pic" +PorygonPicBack: ; 358d1 (d:58d1) + INCBIN "pic/monback/porygonb.pic" +AerodactylPicFront: ; 35931 (d:5931) + INCBIN "pic/bmon/aerodactyl.pic" +AerodactylPicBack: ; 35aec (d:5aec) + INCBIN "pic/monback/aerodactylb.pic" +MagnemitePicFront: ; 35b87 (d:5b87) + INCBIN "pic/bmon/magnemite.pic" +MagnemitePicBack: ; 35c0d (d:5c0d) + INCBIN "pic/monback/magnemiteb.pic" +CharmanderPicFront: ; 35c5c (d:5c5c) + INCBIN "pic/bmon/charmander.pic" +CharmanderPicBack: ; 35d5c (d:5d5c) + INCBIN "pic/monback/charmanderb.pic" +SquirtlePicFront: ; 35db8 (d:5db8) + INCBIN "pic/bmon/squirtle.pic" +SquirtlePicBack: ; 35e8f (d:5e8f) + INCBIN "pic/monback/squirtleb.pic" +CharmeleonPicFront: ; 35f0c (d:5f0c) + INCBIN "pic/bmon/charmeleon.pic" +CharmeleonPicBack: ; 36048 (d:6048) + INCBIN "pic/monback/charmeleonb.pic" +WartortlePicFront: ; 360b1 (d:60b1) + INCBIN "pic/bmon/wartortle.pic" +WartortlePicBack: ; 361f1 (d:61f1) + INCBIN "pic/monback/wartortleb.pic" +CharizardPicFront: ; 36286 (d:6286) + INCBIN "pic/bmon/charizard.pic" +CharizardPicBack: ; 36495 (d:6495) + INCBIN "pic/monback/charizardb.pic" +FossilAerodactylPic: ; 36536 (d:6536) + INCBIN "pic/bmon/fossilaerodactyl.pic" +GhostPic: ; 366b5 (d:66b5) + INCBIN "pic/other/ghost.pic" +OddishPicFront: ; 3680b (d:680b) + INCBIN "pic/bmon/oddish.pic" +OddishPicBack: ; 368a9 (d:68a9) + INCBIN "pic/monback/oddishb.pic" +GloomPicFront: ; 36941 (d:6941) + INCBIN "pic/bmon/gloom.pic" +GloomPicBack: ; 36a78 (d:6a78) + INCBIN "pic/monback/gloomb.pic" +VileplumePicFront: ; 36b21 (d:6b21) + INCBIN "pic/bmon/vileplume.pic" +VileplumePicBack: ; 36c82 (d:6c82) + INCBIN "pic/monback/vileplumeb.pic" +BellsproutPicFront: ; 36d00 (d:6d00) + INCBIN "pic/bmon/bellsprout.pic" +BellsproutPicBack: ; 36dba (d:6dba) + INCBIN "pic/monback/bellsproutb.pic" +WeepinbellPicFront: ; 36e30 (d:6e30) + INCBIN "pic/bmon/weepinbell.pic" +WeepinbellPicBack: ; 36f6f (d:6f6f) + INCBIN "pic/monback/weepinbellb.pic" +VictreebelPicFront: ; 36fea (d:6fea) + INCBIN "pic/bmon/victreebel.pic" +VictreebelPicBack: ; 371b2 (d:71b2) + INCBIN "pic/monback/victreebelb.pic" - db 45 ; catch rate - db 200 ; base exp yield - db $77 ; sprite dimensions - dw PinsirPicFront - dw PinsirPicBack +TitleScroll_WaitBall: ; 37244 (d:7244) +; Wait around for the TitleBall animation to play out. +; hi: speed +; lo: duration + db $05, $05, 0 - ; attacks known at lvl 0 - db VICEGRIP - db 0 - db 0 - db 0 +TitleScroll_In: ; 37247 (d:7247) +; Scroll a TitleMon in from the right. +; hi: speed +; lo: duration + db $a2, $94, $84, $63, $52, $31, $11, 0 - db 5 ; growth rate +TitleScroll_Out: ; 3724f (d:724f) +; Scroll a TitleMon out to the left. +; hi: speed +; lo: duration + db $12, $22, $32, $42, $52, $62, $83, $93, 0 - ; learnset - db %10100100 - db %01000011 - db %00001101 - db %11000000 - db %00000010 - db %00001000 - db %00100110 +TitleScroll: ; 37258 (d:7258) + ld a, d - db 0 ; padding + ld bc, TitleScroll_In + ld d, $88 + ld e, 0 ; don't animate titleball -TaurosBaseStats: ; 391c2 (e:51c2) - db DEX_TAUROS ; pokedex id - db 75 ; base hp - db 100 ; base attack - db 95 ; base defense - db 110 ; base speed - db 70 ; base special + and a + jr nz, .ok - db NORMAL ; species type 1 - db NORMAL ; species type 2 + ld bc, TitleScroll_Out + ld d, $00 + ld e, 0 ; don't animate titleball +.ok - db 45 ; catch rate - db 211 ; base exp yield - db $77 ; sprite dimensions +_TitleScroll: ; 3726a (d:726a) + ld a, [bc] + and a + ret z - dw TaurosPicFront - dw TaurosPicBack + inc bc + push bc - ; attacks known at lvl 0 - db TACKLE - db 0 - db 0 - db 0 + ld b, a + and $f + ld c, a + ld a, b + and $f0 + swap a + ld b, a - db 5 ; growth rate +.loop + ld h, d + ld l, $48 + call .ScrollBetween - ; learnset - db %11100000 - db %01110011 - db %10001000 - db %11000111 - db %10100010 - db %00001000 - db %00100010 - - db 0 ; padding - -MagikarpBaseStats: ; 391de (e:51de) - db DEX_MAGIKARP ; pokedex id - db 20 ; base hp - db 10 ; base attack - db 55 ; base defense - db 80 ; base speed - db 20 ; base special - - db WATER ; species type 1 - db WATER ; species type 2 - - db 255 ; catch rate - db 20 ; base exp yield - db $66 ; sprite dimensions - - dw MagikarpPicFront - dw MagikarpPicBack - - ; attacks known at lvl 0 - db SPLASH - db 0 - db 0 - db 0 + ld h, $00 + ld l, $88 + call .ScrollBetween - db 5 ; growth rate + ld a, d + add b + ld d, a - ; learnset - db %00000000 - db %00000000 - db %00000000 - db %00000000 - db %00000000 - db %00000000 - db %00000000 + call GetTitleBallY + dec c + jr nz, .loop - db 0 ; padding - -GyaradosBaseStats: ; 391fa (e:51fa) - db DEX_GYARADOS ; pokedex id - db 95 ; base hp - db 125 ; base attack - db 79 ; base defense - db 81 ; base speed - db 100 ; base special - - db WATER ; species type 1 - db FLYING ; species type 2 - - db 45 ; catch rate - db 214 ; base exp yield - db $77 ; sprite dimensions - - dw GyaradosPicFront - dw GyaradosPicBack - - ; attacks known at lvl 0 - db BITE - db DRAGON_RAGE - db LEER - db HYDRO_PUMP - - db 5 ; growth rate - - ; learnset - db %10100000 - db %01111111 - db %11001000 - db %11000001 - db %10100011 - db %00001000 - db %00110010 - - db 0 ; padding - -LaprasBaseStats: ; 39216 (e:5216) - db DEX_LAPRAS ; pokedex id - db 130 ; base hp - db 85 ; base attack - db 80 ; base defense - db 60 ; base speed - db 95 ; base special - - db WATER ; species type 1 - db ICE ; species type 2 - - db 45 ; catch rate - db 219 ; base exp yield - db $77 ; sprite dimensions - - dw LaprasPicFront - dw LaprasPicBack - - ; attacks known at lvl 0 - db WATER_GUN - db GROWL - db 0 - db 0 + pop bc + jr _TitleScroll - db 5 ; growth rate +.ScrollBetween ; 37292 (d:7292) +.wait + ld a, [$ff44] ; rLY + cp l + jr nz, .wait - ; learnset - db %11100000 - db %01111111 - db %11101000 - db %11010001 - db %10000011 - db %00101000 - db %00110010 - - db 0 ; padding - -DittoBaseStats: ; 39232 (e:5232) - db DEX_DITTO ; pokedex id - db 48 ; base hp - db 48 ; base attack - db 48 ; base defense - db 48 ; base speed - db 48 ; base special - - db NORMAL ; species type 1 - db NORMAL ; species type 2 - - db 35 ; catch rate - db 61 ; base exp yield - db $55 ; sprite dimensions - - dw DittoPicFront - dw DittoPicBack - - ; attacks known at lvl 0 - db TRANSFORM - db 0 - db 0 - db 0 + ld a, h + ld [rSCX], a ; $ff43 - db 0 ; growth rate +.wait2 + ld a, [$ff44] ; rLY + cp h + jr z, .wait2 + ret - ; learnset - db %00000000 - db %00000000 - db %00000000 - db %00000000 - db %00000000 - db %00000000 - db %00000000 +TitleBallYTable: ; 372a0 (d:72a0) +; OBJ y-positions for the Poke Ball held by Red in the title screen. +; This is really two 0-terminated lists. Initiated with an index of 1. + db 0, $71, $6f, $6e, $6d, $6c, $6d, $6e, $6f, $71, $74, 0 - db 0 ; padding +Func_372ac: ; 372ac (d:72ac) +; Animate the TitleBall if a starter just got scrolled out. + ld a, [wWhichTrade] ; $cd3d + cp CHARMANDER + jr z, .ok + cp SQUIRTLE + jr z, .ok + cp BULBASAUR + ret nz +.ok + ld e, 1 ; animate titleball + ld bc, TitleScroll_WaitBall + ld d, 0 + jp _TitleScroll -EeveeBaseStats: ; 3924e (e:524e) - db DEX_EEVEE ; pokedex id - db 55 ; base hp - db 55 ; base attack - db 50 ; base defense - db 55 ; base speed - db 65 ; base special +GetTitleBallY: ; 372c4 (d:72c4) +; Get position e from TitleBallYTable + push de + push hl + xor a + ld d, a + ld hl, TitleBallYTable + add hl, de + ld a, [hl] + pop hl + pop de + and a + ret z + ld [$c328], a + inc e + ret - db NORMAL ; species type 1 - db NORMAL ; species type 2 +Func_372d6: ; 372d6 (d:72d6) + call LoadTextBoxTilePatterns + FuncCoord 3, 4 ; $c3f3 + ld hl, Coord + ld b, $7 + ld c, $c + call TextBoxBorder + FuncCoord 4, 5 ; $c408 + ld hl, Coord + ld de, W_PLAYERNAME ; $d158 + call PlaceString + FuncCoord 4, 10 ; $c46c + ld hl, Coord + ld de, W_GRASSRATE ; $d887 + call PlaceString + FuncCoord 9, 8 ; $c449 + ld hl, Coord + ld a, $69 + ld [hli], a + ld [hl], $6a + xor a + ld [$cfcb], a + ld hl, Func_3a948 + ld b, BANK(Func_3a948) + call Bankswitch + ld c, $96 + jp DelayFrames - db 45 ; catch rate - db 92 ; base exp yield - db $55 ; sprite dimensions +Func_3730e: ; 3730e (d:730e) + call SaveScreenTilesToBuffer2 + ld a, BANK(DisplayTextIDInit) + ld [$cf0c], a + ld b, a + ld hl, DisplayTextIDInit + call Bankswitch + ld hl, PlaySlotMachineText + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .skip + dec a + ld [$cfcb], a + ld hl, $cd4f + xor a + ld [hli], a + ld [hl], $2 + ld a, $4c + call Predef + call GBPalWhiteOutWithDelay3 + call LoadSlotMachineTiles + call LoadFontTilePatterns + ld b, $5 + call GoPAL_SET + call GBPalNormal + ld a, $e4 + ld [$ff48], a + ld hl, $d730 + set 6, [hl] + xor a + ld [W_SUBANIMSUBENTRYADDR], a + ld hl, wTrainerSpriteOffset + ld bc, $0014 + call FillMemory + call Func_37395 + ld hl, $d730 + res 6, [hl] + xor a + ld [W_SUBANIMSUBENTRYADDR], a + call GBPalWhiteOutWithDelay3 + ld a, $1 + ld [$cfcb], a + call GoPAL_SET_CF1C + call Func_3e08 + call ReloadTilesetTilePatterns +.skip + call LoadScreenTilesFromBuffer2 + call Delay3 + call GBPalNormal + ld a, [$cc5e] + push af + jp CloseTextDisplay - dw EeveePicFront - dw EeveePicBack +PlaySlotMachineText: ; 37390 (d:7390) + TX_FAR _PlaySlotMachineText + db "@" - ; attacks known at lvl 0 - db TACKLE - db SAND_ATTACK - db 0 - db 0 +Func_37395: ; 37395 (d:7395) + call Func_37754 + xor a + ld hl, $cd4a + ld [hli], a + ld [hl], a + call Func_3775f + ld hl, BetHowManySlotMachineText + call PrintText + call SaveScreenTilesToBuffer1 +.loop + ld a, $3 + ld [wMenuWatchedKeys], a + ld a, $2 + ld [wMaxMenuItem], a + ld a, $c + ld [wTopMenuItemY], a + ld a, $f + ld [wTopMenuItemX], a + xor a + ld [wCurrentMenuItem], a + ld [wLastMenuItem], a + ld [$cc37], a + ld hl, $c48a + ld b, $5 + ld c, $4 + call TextBoxBorder + ld hl, $c4a0 + ld de, CoinMultiplierSlotMachineText + call PlaceString + call HandleMenuInput + and $2 + jp nz, LoadScreenTilesFromBuffer1 + ld a, [wCurrentMenuItem] + ld b, a + ld a, $3 + sub b + ld [$cd50], a + ld hl, wPlayerCoins + ld c, a + ld a, [hli] + and a + jr nz, .skip1 + ld a, [hl] + cp c + jr nc, .skip1 + ld hl, NotEnoughCoinsSlotMachineText + call PrintText + jr .loop +.skip1 + call LoadScreenTilesFromBuffer1 + call Func_37741 + call Func_377d5 + call Func_37480 + ld a, $4 + ld hl, $cd4d + ld [hli], a + ld [hli], a + ld [hl], a + call WaitForSoundToFinish + ld a, (SFX_1f_66 - SFX_Headers_1f) / 3 + call PlaySound + ld hl, StartSlotMachineText + call PrintText + call Func_374ad + call Func_37588 + ld hl, wPlayerCoins + ld a, [hli] + or [hl] + jr nz, .skip2 + ld hl, OutOfCoinsSlotMachineText + call PrintText + ld c, $3c + jp DelayFrames +.skip2 + ld hl, OneMoreGoSlotMachineText + call PrintText + ld hl, $c49e + ld bc, $0d0f + xor a + ld [$d12c], a + ld a, $14 + ld [$d125], a + call DisplayTextBoxID + ld a, [wCurrentMenuItem] + and a + ret nz + call Func_377ce + jp Func_37395 - db 0 ; growth rate +CoinMultiplierSlotMachineText: ; 3745e (d:745e) + db "×3" + next "×2" + next "×1@" - ; learnset - db %10100000 - db %00000011 - db %00001000 - db %11000000 - db %11000011 - db %00001000 - db %00000010 - - db 0 ; padding - -VaporeonBaseStats: ; 3926a (e:526a) - db DEX_VAPOREON ; pokedex id - db 130 ; base hp - db 65 ; base attack - db 60 ; base defense - db 65 ; base speed - db 110 ; base special - - db WATER ; species type 1 - db WATER ; species type 2 - - db 45 ; catch rate - db 196 ; base exp yield - db $66 ; sprite dimensions - - dw VaporeonPicFront - dw VaporeonPicBack - - ; attacks known at lvl 0 - db TACKLE - db SAND_ATTACK - db QUICK_ATTACK - db WATER_GUN - - db 0 ; growth rate - - ; learnset - db %10100000 - db %01111111 - db %00001000 - db %11000000 - db %11000011 - db %00001000 - db %00010010 - - db 0 ; padding - -JolteonBaseStats: ; 39286 (e:5286) - db DEX_JOLTEON ; pokedex id - db 65 ; base hp - db 65 ; base attack - db 60 ; base defense - db 130 ; base speed - db 110 ; base special - - db ELECTRIC ; species type 1 - db ELECTRIC ; species type 2 - - db 45 ; catch rate - db 197 ; base exp yield - db $66 ; sprite dimensions - - dw JolteonPicFront - dw JolteonPicBack - - ; attacks known at lvl 0 - db TACKLE - db SAND_ATTACK - db QUICK_ATTACK - db THUNDERSHOCK - - db 0 ; growth rate - - ; learnset - db %10100000 - db %01000011 - db %10001000 - db %11000001 - db %11000011 - db %00011000 - db %01000010 - - db 0 ; padding - -FlareonBaseStats: ; 392a2 (e:52a2) - db DEX_FLAREON ; pokedex id - db 65 ; base hp - db 130 ; base attack - db 60 ; base defense - db 65 ; base speed - db 110 ; base special - - db FIRE ; species type 1 - db FIRE ; species type 2 - - db 45 ; catch rate - db 198 ; base exp yield - db $66 ; sprite dimensions - - dw FlareonPicFront - dw FlareonPicBack - - ; attacks known at lvl 0 - db TACKLE - db SAND_ATTACK - db QUICK_ATTACK - db EMBER - - db 0 ; growth rate - - ; learnset - db %10100000 - db %01000011 - db %00001000 - db %11000000 - db %11100011 - db %00001000 - db %00000010 - - db 0 ; padding - -PorygonBaseStats: ; 392be (e:52be) - db DEX_PORYGON ; pokedex id - db 65 ; base hp - db 60 ; base attack - db 70 ; base defense - db 40 ; base speed - db 75 ; base special - - db NORMAL ; species type 1 - db NORMAL ; species type 2 - - db 45 ; catch rate - db 130 ; base exp yield - db $66 ; sprite dimensions - - dw PorygonPicFront - dw PorygonPicBack - - ; attacks known at lvl 0 - db TACKLE - db SHARPEN - db CONVERSION - db 0 +OutOfCoinsSlotMachineText: ; 37467 (d:7467) + TX_FAR _OutOfCoinsSlotMachineText + db "@" - db 0 ; growth rate +BetHowManySlotMachineText: ; 3746c (d:746c) + TX_FAR _BetHowManySlotMachineText + db "@" - ; learnset - db %00100000 - db %01110011 - db %10001000 - db %11110001 - db %11000011 - db %00111000 - db %01000011 +StartSlotMachineText: ; 37471 (d:7471) + TX_FAR _StartSlotMachineText + db "@" - db 0 ; padding +NotEnoughCoinsSlotMachineText: ; 37476 (d:7476) + TX_FAR _NotEnoughCoinsSlotMachineText + db "@" -OmanyteBaseStats: ; 392da (e:52da) - db DEX_OMANYTE ; pokedex id - db 35 ; base hp - db 40 ; base attack - db 100 ; base defense - db 35 ; base speed - db 90 ; base special +OneMoreGoSlotMachineText: ; 3747b (d:747b) + TX_FAR _OneMoreGoSlotMachineText + db "@" - db ROCK ; species type 1 - db WATER ; species type 2 +Func_37480: ; 37480 (d:7480) + ld hl, $cd4c + bit 7, [hl] + ret nz + ld a, [W_SUBANIMSUBENTRYADDR] + and a + jr nz, .skip1 + call GenRandom + and a + jr z, .skip2 + ld b, a + ld a, [$cc5b] + cp b + jr c, .skip3 + ld a, $d2 + cp b + jr c, .skip1 + ld [hl], $0 + ret +.skip1 + set 6, [hl] + ret +.skip2 + ld a, $3c + ld [W_SUBANIMSUBENTRYADDR], a + ret +.skip3 + set 7, [hl] + ret - db 45 ; catch rate - db 120 ; base exp yield - db $55 ; sprite dimensions +Func_374ad: ; 374ad (d:74ad) + ld c, $14 +.loop1 + push bc + call Func_37813 + call Func_37823 + call Func_37833 + ld c, $2 + call DelayFrames + pop bc + dec c + jr nz, .loop1 + xor a + ld [wTrainerSpriteOffset], a +.loop2 + call Func_37882 + call Func_374df + call Func_374fb + call Func_37517 + ret c + ld a, [$cf1b] + xor $1 + inc a + ld c, a + call DelayFrames + jr .loop2 - dw OmanytePicFront - dw OmanytePicBack +Func_374df: ; 374df (d:74df) + ld a, [wTrainerSpriteOffset] + cp $1 + jr c, .skip + ld de, wTrainerEngageDistance + ld a, [de] + rra + jr nc, .skip + ld hl, $cd4d + ld a, [hl] + and a + ret z + dec [hl] + call Func_3752c + ret nz +.skip + jp Func_37813 - ; attacks known at lvl 0 - db WATER_GUN - db WITHDRAW - db 0 - db 0 +Func_374fb: ; 374fb (d:74fb) + ld a, [wTrainerSpriteOffset] + cp $2 + jr c, .skip + ld de, wTrainerFacingDirection + ld a, [de] + rra + jr nc, .skip + ld hl, $cd4e + ld a, [hl] + and a + ret z + dec [hl] + call Func_37552 + ret z +.skip + jp Func_37823 - db 0 ; growth rate +Func_37517: ; 37517 (d:7517) + ld a, [wTrainerSpriteOffset] + cp $3 + jr c, .skip + ld de, wTrainerScreenY + ld a, [de] + rra + jr nc, .skip + scf + ret +.skip + call Func_37833 + and a + ret - ; learnset - db %10100000 - db %00111111 - db %00001000 - db %11000000 - db %00000011 - db %00001000 - db %00010010 - - db 0 ; padding - -OmastarBaseStats: ; 392f6 (e:52f6) - db DEX_OMASTAR ; pokedex id - db 70 ; base hp - db 60 ; base attack - db 125 ; base defense - db 55 ; base speed - db 115 ; base special - - db ROCK ; species type 1 - db WATER ; species type 2 - - db 45 ; catch rate - db 199 ; base exp yield - db $66 ; sprite dimensions - - dw OmastarPicFront - dw OmastarPicBack - - ; attacks known at lvl 0 - db WATER_GUN - db WITHDRAW - db HORN_ATTACK - db 0 +Func_3752c: ; 3752c (d:752c) + call Func_376c0 + ld hl, wTrainerScreenX + ld a, [$cd4c] + and $80 + jr nz, .skip1 + inc hl + ld a, [hl] + cp $a + jr nz, .skip2 + ret +.skip1 + ld c, $3 +.loop + ld a, [hli] + cp $2 + jr c, .skip2 + dec c + jr nz, .loop + ret +.skip2 + inc a + ld hl, $cd4d + ld [hl], $0 + ret - db 0 ; growth rate +Func_37552: ; 37552 (d:7552) + call Func_376b4 + ld a, [$cd4c] + and $80 + jr nz, .skip1 + call Func_3756e + ret nz + jr .skip2 +.skip1 + call Func_3756e + ld a, [de] + cp $7 + ret nc +.skip2 + xor a + ld [$cd4e], a + ret - ; learnset - db %11100000 - db %01111111 - db %00001101 - db %11000000 - db %10000011 - db %00001000 - db %00010010 +Func_3756e: ; 3756e (d:756e) + ld hl, wTrainerScreenX + ld de, $cd44 + ld a, [de] + cp [hl] + ret z + inc de + ld a, [de] + cp [hl] + ret z + inc hl + cp [hl] + ret z + inc hl + cp [hl] + ret z + inc de + ld a, [de] + cp [hl] + ret z + dec de + dec de + ret - db 0 ; padding +Func_37588: ; 37588 (d:7588) + call Func_376a8 + ld a, [$cd50] + cp $2 + jr z, .skip1 + cp $1 + jr z, .skip2 + ld hl, wTrainerScreenX + ld de, $cd45 + ld bc, $cd49 + call Func_376a2 + jp z, .skip5 + ld hl, $cd43 + ld de, $cd45 + ld bc, $cd47 + call Func_376a2 + jr z, .skip5 +.skip1 + ld hl, $cd43 + ld de, $cd46 + ld bc, $cd49 + call Func_376a2 + jr z, .skip5 + ld hl, wTrainerScreenX + ld de, $cd44 + ld bc, $cd47 + call Func_376a2 + jr z, .skip5 +.skip2 + ld hl, $cd42 + ld de, $cd45 + ld bc, $cd48 + call Func_376a2 + jr z, .skip5 + ld a, [$cd4c] + and $c0 + jr z, .skip3 + ld hl, $cd4f + dec [hl] + jr nz, .skip4 +.skip3 + ld hl, NotThisTimeText + call PrintText +.loop + xor a + ld [$c002], a + ret +.skip4 + call Func_37833 + call DelayFrame + call Func_37833 + call DelayFrame + jp Func_37588 +.skip5 + ld a, [$cd4c] + and $c0 + jr z, .skip4 + and $80 + jr nz, .skip6 + ld a, [hl] + cp $7 + jr c, .skip4 +.skip6 + ld a, [hl] + sub $2 + ld [wTrainerScreenX], a + ld hl, SlotRewardPointers + ld c, a + ld b, $0 + add hl, bc + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + push de + ld a, [hli] + ld h, [hl] + ld l, a + ld de, $cf4b + ld bc, $0004 + call CopyData + pop hl + ld de, .asm_37638 + push de + jp [hl] -KabutoBaseStats: ; 39312 (e:5312) - db DEX_KABUTO ; pokedex id - db 30 ; base hp - db 80 ; base attack - db 90 ; base defense - db 55 ; base speed - db 45 ; base special +.asm_37638 + ld a, [$ff47] + xor $40 + ld [$ff47], a + ld c, $5 + call DelayFrames + dec b + jr nz, .asm_37638 + ld hl, $cd4a + ld [hl], d + inc hl + ld [hl], e + call Func_3775f + ld hl, UnnamedText_37665 + call PrintText + call WaitForTextScrollButtonPress + call Func_3776b + call Func_3775f + ld a, $e4 + ld [$ff48], a + jp .loop - db ROCK ; species type 1 - db WATER ; species type 2 +UnnamedText_37665: ; 37665 (d:7665) + db $08 ; asm + push bc + call Func_37728 + ld hl, LinedUpText + pop bc + inc bc + inc bc + inc bc + inc bc + ret - db 45 ; catch rate - db 119 ; base exp yield - db $55 ; sprite dimensions +LinedUpText: ; 37673 (d:7673) + TX_FAR _LinedUpText + db "@" - dw KabutoPicFront - dw KabutoPicBack +SlotRewardPointers: ; 37678 (d:7678) + dw SlotReward300Func + dw SlotReward300Text + dw SlotReward100Func + dw SlotReward100Text + dw SlotReward8Func + dw SlotReward8Text + dw SlotReward15Func + dw SlotReward15Text + dw SlotReward15Func + dw SlotReward15Text + dw SlotReward15Func + dw SlotReward15Text - ; attacks known at lvl 0 - db SCRATCH - db HARDEN - db 0 - db 0 +SlotReward300Text: ; 37690 (d:7690) + db "300@" - db 0 ; growth rate +SlotReward100Text: ; 37694 (d:7694) + db "100@" - ; learnset - db %10100000 - db %00111111 - db %00001000 - db %11000000 - db %00000011 - db %00001000 - db %00010010 - - db 0 ; padding - -KabutopsBaseStats: ; 3932e (e:532e) - db DEX_KABUTOPS ; pokedex id - db 60 ; base hp - db 115 ; base attack - db 105 ; base defense - db 80 ; base speed - db 70 ; base special - - db ROCK ; species type 1 - db WATER ; species type 2 - - db 45 ; catch rate - db 201 ; base exp yield - db $66 ; sprite dimensions - - dw KabutopsPicFront - dw KabutopsPicBack - - ; attacks known at lvl 0 - db SCRATCH - db HARDEN - db ABSORB - db 0 +SlotReward8Text: ; 37698 (d:7698) + db "8@" - db 0 ; growth rate +SlotReward15Text: ; 3769a (d:769a) + db "15@" - ; learnset - db %10110110 - db %01111111 - db %00001101 - db %11000000 - db %10000011 - db %00001000 - db %00010010 +NotThisTimeText: ; 3769d (d:769d) + TX_FAR _NotThisTimeText + db "@" - db 0 ; padding +Func_376a2: ; 376a2 (d:76a2) + ld a, [de] + cp [hl] + ret nz + ld a, [bc] + cp [hl] + ret -AerodactylBaseStats: ; 3934a (e:534a) - db DEX_AERODACTYL ; pokedex id - db 80 ; base hp - db 105 ; base attack - db 65 ; base defense - db 130 ; base speed - db 60 ; base special +Func_376a8: ; 376a8 (d:76a8) + ld de, $cd47 + ld hl, SlotMachineWheel3 + ld a, [wTrainerScreenY] + call Func_376c9 - db ROCK ; species type 1 - db FLYING ; species type 2 +Func_376b4: ; 376b4 (d:76b4) + ld de, $cd44 + ld hl, SlotMachineWheel2 + ld a, [wTrainerFacingDirection] + call Func_376c9 - db 45 ; catch rate - db 202 ; base exp yield - db $77 ; sprite dimensions +Func_376c0: ; 376c0 (d:76c0) + ld de, wTrainerScreenX + ld hl, SlotMachineWheel1 + ld a, [wTrainerEngageDistance] - dw AerodactylPicFront - dw AerodactylPicBack +Func_376c9: ; 376c9 (d:76c9) + ld c, a + ld b, $0 + add hl, bc + ld c, $3 +.loop + ld a, [hli] + ld [de], a + inc de + inc hl + dec c + jr nz, .loop + ret - ; attacks known at lvl 0 - db WING_ATTACK - db AGILITY - db 0 - db 0 +SlotReward8Func: ; 376d7 (d:76d7) + ld hl, W_SUBANIMSUBENTRYADDR + ld a, [hl] + and a + jr z, .skip + dec [hl] +.skip + ld b, $2 + ld de, 8 + ret - db 5 ; growth rate +SlotReward15Func: ; 376e5 (d:76e5) + ld hl, W_SUBANIMSUBENTRYADDR + ld a, [hl] + and a + jr z, .skip + dec [hl] +.skip + ld b, $4 + ld de, 15 + ret - ; learnset - db %00101010 - db %01000011 - db %01001000 - db %11000000 - db %01100011 - db %00001100 - db %00001010 +SlotReward100Func: ; 376f3 (d:76f3) + ld a, (SFX_1f_42 - SFX_Headers_1f) / 3 + call PlaySound + xor a + ld [$cd4c], a + ld b, $8 + ld de, 100 + ret - db 0 ; padding +SlotReward300Func: ; 37702 (d:7702) + ld hl, YeahText + call PrintText + ld a, (SFX_1f_3b - SFX_Headers_1f) / 3 + call PlaySound + call GenRandom + cp $80 + ld a, $0 + jr c, .skip + ld [$cd4c], a +.skip + ld [W_SUBANIMSUBENTRYADDR], a + ld b, $14 + ld de, 300 + ret -SnorlaxBaseStats: ; 39366 (e:5366) - db DEX_SNORLAX ; pokedex id - db 160 ; base hp - db 110 ; base attack - db 65 ; base defense - db 30 ; base speed - db 65 ; base special +YeahText: ; 37722 (d:7722) + TX_FAR _YeahText + db $0a, "@" - db NORMAL ; species type 1 - db NORMAL ; species type 2 +Func_37728: ; 37728 (d:7728) + ld hl, $c4ba + ld a, [wTrainerScreenX] + add $25 + ld [hli], a + inc a + ld [hld], a + inc a + ld de, $ffec + add hl, de + ld [hli], a + inc a + ld [hl], a + ld hl, $c4f2 + ld [hl], $ee + ret - db 25 ; catch rate - db 154 ; base exp yield - db $77 ; sprite dimensions +Func_37741: ; 37741 (d:7741) + ld hl, $cd4b + ld a, [$cd50] + ld [hld], a + xor a + ld [hli], a + ld de, $d5a5 + ld c, $2 + ld a, $c + call Predef - dw SnorlaxPicFront - dw SnorlaxPicBack +Func_37754: ; 37754 (d:7754) + ld hl, $c3b9 + ld de, wPlayerCoins + ld c, $2 + jp PrintBCDNumber - ; attacks known at lvl 0 - db HEADBUTT - db AMNESIA - db REST - db 0 +Func_3775f: ; 3775f (d:775f) + ld hl, $c3bf + ld de, $cd4a + ld bc, $8204 + jp PrintNumber - db 5 ; growth rate +Func_3776b: ; 3776b (d:776b) + ld a, $1 + ld [$c002], a + call WaitForSoundToFinish + ld hl, $cd46 + xor a + ld [hli], a + inc a + ld [hl], a + ld a, $5 + ld [W_SUBANIMTRANSFORM], a +.loop + ld a, [$cd4b] + ld l, a + ld a, [$cd4a] + ld h, a + or l + ret z + ld de, $ffff + add hl, de + ld a, l + ld [$cd4b], a + ld a, h + ld [$cd4a], a + ld hl, $cd47 + ld de, $d5a5 + ld c, $2 + ld a, $b + call Predef + call Func_37754 + call Func_3775f + ld a, (SFX_1f_65 - SFX_Headers_1f) / 3 + call PlaySound + ld a, [W_SUBANIMTRANSFORM] + dec a + jr nz, .skip1 + ld a, [$ff48] + xor $40 + ld [$ff48], a + ld a, $5 +.skip1 + ld [W_SUBANIMTRANSFORM], a + ld a, [wTrainerScreenX] + cp $7 + ld c, $8 + jr nc, .skip2 + srl c +.skip2 + call DelayFrames + jr .loop - ; learnset - db %10110001 - db %11111111 - db %10101111 - db %11010111 - db %10101111 - db %10101000 - db %00110010 +Func_377ce: ; 377ce (d:77ce) + ld a, $23 + ld [$d08a], a + jr Func_377e3 - db 0 ; padding +Func_377d5: ; 377d5 (d:77d5) + ld a, $14 + ld [$d08a], a + ld a, [$cd50] + dec a + jr z, Func_377fb + dec a + jr z, Func_377ef -ArticunoBaseStats: ; 39382 (e:5382) - db DEX_ARTICUNO ; pokedex id - db 90 ; base hp - db 85 ; base attack - db 100 ; base defense - db 85 ; base speed - db 125 ; base special +Func_377e3: ; 377e3 (d:77e3) + ld hl, $c3cb + call Func_377fe + ld hl, $c46b + call Func_377fe - db ICE ; species type 1 - db FLYING ; species type 2 +Func_377ef: ; 377ef (d:77ef) + ld hl, $c3f3 + call Func_377fe + ld hl, $c443 + call Func_377fe - db 3 ; catch rate - db 215 ; base exp yield - db $77 ; sprite dimensions +Func_377fb: ; 377fb (d:77fb) + ld hl, $c41b - dw ArticunoPicFront - dw ArticunoPicBack +Func_377fe: ; 377fe (d:77fe) + ld a, [$d08a] + ld [hl], a + ld bc, $000d + add hl, bc + ld [hl], a + ld bc, $0007 + add hl, bc + inc a + ld [hl], a + ld bc, $000d + add hl, bc + ld [hl], a + ret - ; attacks known at lvl 0 - db PECK - db ICE_BEAM - db 0 - db 0 +Func_37813: ; 37813 (d:7813) + ld bc, SlotMachineWheel1 + ld de, wTrainerEngageDistance + ld hl, wOAMBuffer + ld a, $30 + ld [W_BASECOORDX], a + jr Func_37841 - db 5 ; growth rate +Func_37823: ; 37823 (d:7823) + ld bc, SlotMachineWheel2 + ld de, wTrainerFacingDirection + ld hl, $c330 + ld a, $50 + ld [W_BASECOORDX], a + jr Func_37841 - ; learnset - db %00101010 - db %01111111 - db %00001000 - db %11000000 - db %01000011 - db %00001100 - db %00001010 +Func_37833: ; 37833 (d:7833) + ld bc, SlotMachineWheel3 + ld de, wTrainerScreenY + ld hl, $c360 + ld a, $70 + ld [W_BASECOORDX], a - db 0 ; padding +Func_37841: ; 37841 (d:7841) + ld a, $58 + ld [W_BASECOORDY], a + push de + ld a, [de] + ld d, b + add c + ld e, a + jr nc, Func_3784e + inc d -ZapdosBaseStats: ; 3939e (e:539e) - db DEX_ZAPDOS ; pokedex id - db 90 ; base hp - db 90 ; base attack - db 85 ; base defense - db 100 ; base speed - db 125 ; base special +Func_3784e: ; 3784e (d:784e) + ld a, [W_BASECOORDY] + ld [hli], a + ld a, [W_BASECOORDX] + ld [hli], a + ld a, [de] + ld [hli], a + ld a, $80 + ld [hli], a + ld a, [W_BASECOORDY] + ld [hli], a + ld a, [W_BASECOORDX] + add $8 + ld [hli], a + ld a, [de] + inc a + ld [hli], a + ld a, $80 + ld [hli], a + inc de + ld a, [W_BASECOORDY] + sub $8 + ld [W_BASECOORDY], a + cp $28 + jr nz, Func_3784e + pop de + ld a, [de] + inc a + cp $1e + jr nz, .skip + xor a +.skip + ld [de], a + ret - db ELECTRIC ; species type 1 - db FLYING ; species type 2 +Func_37882: ; 37882 (d:7882) + call DelayFrame + call GetJoypadStateLowSensitivity + ld a, [$ffb5] + and $1 + ret z + ld hl, wTrainerSpriteOffset + ld a, [hl] + dec a + ld de, $cd4d + jr z, .skip + dec a + ld de, $cd4e + jr z, .skip +.loop + inc [hl] + ld a, (SFX_1f_64 - SFX_Headers_1f) / 3 + jp PlaySound +.skip + ld a, [de] + and a + ret nz + jr .loop - db 3 ; catch rate - db 216 ; base exp yield - db $77 ; sprite dimensions +LoadSlotMachineTiles: ; 378a8 (d:78a8) + call DisableLCD + ld hl, SlotMachineTiles2 + ld de, $8000 + ld bc, $01c0 + ld a, BANK(SlotMachineTiles2) + call FarCopyData2 + ld hl, SlotMachineTiles1 + ld de, $9000 + ld bc, $0250 + ld a, BANK(SlotMachineTiles1) + call FarCopyData2 + ld hl, SlotMachineTiles2 + ld de, $9250 + ld bc, $01c0 + ld a, BANK(SlotMachineTiles2) + call FarCopyData2 + ld hl, SlotMachineMap + ld de, wTileMap + ld bc, $00f0 + call CopyData + call EnableLCD + ld hl, wTrainerEngageDistance + ld a, $1c + ld [hli], a + ld [hli], a + ld [hl], a + call Func_37813 + call Func_37823 + jp Func_37833 - dw ZapdosPicFront - dw ZapdosPicBack +SlotMachineMap: ; 378f5 (d:78f5) + INCBIN "gfx/tilemaps/slotmachine.map" - ; attacks known at lvl 0 - db THUNDERSHOCK - db DRILL_PECK - db 0 - db 0 +SLOTS7 EQU $0200 +SLOTSBAR EQU $0604 +SLOTSCHERRY EQU $0A08 +SLOTSFISH EQU $0E0C +SLOTSBIRD EQU $1210 +SLOTSMOUSE EQU $1614 - db 5 ; growth rate +INCLUDE "data/slot_machine_wheels.asm" - ; learnset - db %00101010 - db %01000011 - db %10001000 - db %11000001 - db %01000011 - db %00011100 - db %01001010 +SlotMachineTiles1: ; 37a51 (d:7a51) +IF _RED + INCBIN "gfx/red/slotmachine1.2bpp" +ENDC +IF _BLUE + INCBIN "gfx/blue/slotmachine1.2bpp" +ENDC - db 0 ; padding +Func_37ca1: ; 37ca1 (d:7ca1) + ld hl, $ccd3 + ld a, [$cd38] + dec a + ld [$cd38], a + ld d, 0 + ld e, a + add hl, de + ld d, h + ld e, l + ld hl, PointerTable_37ce6 + ld a, [$d12f] + add a + ld b, 0 + ld c, a + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [W_YCOORD] + ld b, a + ld a, [W_XCOORD] + ld c, a +.asm_37cc7 + ld a, [hli] + cp b + jr nz, .asm_37ce1 + ld a, [hli] + cp c + jr nz, .asm_37ce2 + ld a, [hli] + ld h, [hl] + ld l, a +.asm_37cd2 + ld a, [hli] + cp $ff + ret z + ld [de], a + inc de + ld a, [$cd38] + inc a + ld [$cd38], a + jr .asm_37cd2 +.asm_37ce1 + inc hl +.asm_37ce2 + inc hl + inc hl + jr .asm_37cc7 -MoltresBaseStats: ; 393ba (e:53ba) - db DEX_MOLTRES ; pokedex id - db 90 ; base hp - db 100 ; base attack - db 90 ; base defense - db 90 ; base speed - db 125 ; base special +PointerTable_37ce6: ; 37ce6 (d:7ce6) + dw PewterMuseumGuyCoords + dw PewterGymGuyCoords - db FIRE ; species type 1 - db FLYING ; species type 2 +; these are the four coordinates of the spaces below, above, to the left and +; to the right of the museum guy, and pointers to different movements for +; the player to make to get positioned before the main movement. +PewterMuseumGuyCoords: ; 37cea (d:7cea) + db 18, 27 + dw .down + db 16, 27 + dw .up + db 17, 26 + dw .left + db 17, 28 + dw .right - db 3 ; catch rate - db 217 ; base exp yield - db $77 ; sprite dimensions +.down + db $40, $40, $ff +.up + db $10, $20, $ff +.left + db $40, $10, $ff +.right + db $40, $20, $ff - dw MoltresPicFront - dw MoltresPicBack +; these are the five coordinates which trigger the gym guy and pointers to +; different movements for the player to make to get positioned before the +; main movement +PewterGymGuyCoords: ; 37d06 (d:7d06) + db 16, 34 + dw .one + db 17, 35 + dw .two + db 18, 37 + dw .three + db 19, 37 + dw .four + db 17, 36 + dw .five - ; attacks known at lvl 0 - db PECK - db FIRE_SPIN - db 0 - db 0 +.one + db $20, $80, $80, $10, $ff +.two + db $20, $80, $10, $20, $ff +.three + db $20, $20, $20, $00, $00, $00, $00, $00, $00, $00, $00, $ff +.four + db $20, $20, $40, $20, $ff +.five + db $20, $80, $20, $00, $00, $00, $00, $00, $00, $00, $00, $ff - db 5 ; growth rate - ; learnset - db %00101010 - db %01000011 - db %00001000 - db %11000000 - db %01100011 - db %00001100 - db %00001010 +_Multiply: ; 37d41 (d:7d41) + ld a, $8 + ld b, a + xor a + ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) + ld [$ff9b], a + ld [H_SAVEDNUMTOPRINT], a ; $ff9c + ld [$ff9d], a + ld [$ff9e], a +.asm_37d4f + ld a, [H_REMAINDER] ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + srl a + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + jr nc, .asm_37d77 + ld a, [$ff9e] + ld c, a + ld a, [$ff98] + add c + ld [$ff9e], a + ld a, [$ff9d] + ld c, a + ld a, [$ff97] + adc c + ld [$ff9d], a + ld a, [H_SAVEDNUMTOPRINT] ; $ff9c + ld c, a + ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND) + adc c + ld [H_SAVEDNUMTOPRINT], a ; $ff9c + ld a, [$ff9b] + ld c, a + ld a, [H_DIVIDEND] ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) + adc c + ld [$ff9b], a +.asm_37d77 + dec b + jr z, .asm_37d94 + ld a, [$ff98] + sla a + ld [$ff98], a + ld a, [$ff97] + rl a + ld [$ff97], a + ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND) + rl a + ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) + ld a, [H_DIVIDEND] ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) + rl a + ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) + jr .asm_37d4f +.asm_37d94 + ld a, [$ff9e] + ld [$ff98], a + ld a, [$ff9d] + ld [$ff97], a + ld a, [H_SAVEDNUMTOPRINT] ; $ff9c + ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) + ld a, [$ff9b] + ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) + ret - db 0 ; padding +_Divide: ; 37da5 (d:7da5) + xor a + ld [$ff9a], a + ld [$ff9b], a + ld [H_SAVEDNUMTOPRINT], a ; $ff9c + ld [$ff9d], a + ld [$ff9e], a + ld a, $9 + ld e, a +.asm_37db3 + ld a, [$ff9a] + ld c, a + ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND) + sub c + ld d, a + ld a, [H_REMAINDER] ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + ld c, a + ld a, [H_DIVIDEND] ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) + sbc c + jr c, .asm_37dce + ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) + ld a, d + ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) + ld a, [$ff9e] + inc a + ld [$ff9e], a + jr .asm_37db3 +.asm_37dce + ld a, b + cp $1 + jr z, .asm_37e18 + ld a, [$ff9e] + sla a + ld [$ff9e], a + ld a, [$ff9d] + rl a + ld [$ff9d], a + ld a, [H_SAVEDNUMTOPRINT] ; $ff9c + rl a + ld [H_SAVEDNUMTOPRINT], a ; $ff9c + ld a, [$ff9b] + rl a + ld [$ff9b], a + dec e + jr nz, .asm_37e04 + ld a, $8 + ld e, a + ld a, [$ff9a] + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + xor a + ld [$ff9a], a + ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND) + ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) + ld a, [$ff97] + ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) + ld a, [$ff98] + ld [$ff97], a +.asm_37e04 + ld a, e + cp $1 + jr nz, .asm_37e0a + dec b +.asm_37e0a + ld a, [H_REMAINDER] ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + srl a + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + ld a, [$ff9a] + rr a + ld [$ff9a], a + jr .asm_37db3 +.asm_37e18 + ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND) + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + ld a, [$ff9e] + ld [$ff98], a + ld a, [$ff9d] + ld [$ff97], a + ld a, [H_SAVEDNUMTOPRINT] ; $ff9c + ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) + ld a, [$ff9b] + ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) + ret -DratiniBaseStats: ; 393d6 (e:53d6) - db DEX_DRATINI ; pokedex id - db 41 ; base hp - db 64 ; base attack - db 45 ; base defense - db 50 ; base speed - db 50 ; base special +Func_37e2d: ; 37e2d (d:7e2d) + ld a, [wTrainerSpriteOffset] + cp $fd + jr z, .asm_37e66 + cp $fe + jr z, .asm_37e6a + cp $ff + jr z, .asm_37e6e + ld b, BANK(Func_2ff09) + ld hl, Func_2ff09 + call Bankswitch + ld a, [wTrainerSpriteOffset] + and a + ret z + ld a, [$cd05] + ld b, a + ld a, [wTrainerFacingDirection] + inc a + cp b + jr z, .asm_37e58 + ld a, $fd + jr .asm_37e5a +.asm_37e58 + ld a, $fa +.asm_37e5a + ld [$cc5b], a + ld a, [H_LOADEDROMBANK] + ld [$cc5e], a + call Func_3730e + ret +.asm_37e66 + ld a, $28 + jr .asm_37e70 +.asm_37e6a + ld a, $29 + jr .asm_37e70 +.asm_37e6e + ld a, $2a +.asm_37e70 + push af + call EnableAutoTextBoxDrawing + pop af + call Func_3ef5 + ret - db DRAGON ; species type 1 - db DRAGON ; species type 2 +GameCornerOutOfOrderText: ; 37e79 (d:7e79) + TX_FAR _GameCornerOutOfOrderText + db "@" - db 45 ; catch rate - db 67 ; base exp yield - db $55 ; sprite dimensions +GameCornerOutToLunchText: ; 37e7e (d:7e7e) + TX_FAR _GameCornerOutToLunchText + db "@" - dw DratiniPicFront - dw DratiniPicBack +GameCornerSomeonesKeysText: ; 37e83 (d:7e83) + TX_FAR _GameCornerSomeonesKeysText + db "@" - ; attacks known at lvl 0 - db WRAP - db LEER - db 0 - db 0 +SECTION "bankE",ROMX,BANK[$E] - db 5 ; growth rate - - ; learnset - db %10100000 - db %00111111 - db %11001000 - db %11000001 - db %11100011 - db %00011000 - db %00010010 - - db 0 ; padding - -DragonairBaseStats: ; 393f2 (e:53f2) - db DEX_DRAGONAIR ; pokedex id - db 61 ; base hp - db 84 ; base attack - db 65 ; base defense - db 70 ; base speed - db 70 ; base special - - db DRAGON ; species type 1 - db DRAGON ; species type 2 - - db 45 ; catch rate - db 144 ; base exp yield - db $66 ; sprite dimensions - - dw DragonairPicFront - dw DragonairPicBack - - ; attacks known at lvl 0 - db WRAP - db LEER - db THUNDER_WAVE - db 0 +INCLUDE "data/moves.asm" - db 5 ; growth rate +INCLUDE "data/base_stats.asm" - ; learnset - db %11100000 - db %00111111 - db %11001000 - db %11000001 - db %11100011 - db %00011000 - db %00010010 - - db 0 ; padding - -DragoniteBaseStats: ; 3940e (e:540e) - db DEX_DRAGONITE ; pokedex id - db 91 ; base hp - db 134 ; base attack - db 95 ; base defense - db 80 ; base speed - db 100 ; base special - - db DRAGON ; species type 1 - db FLYING ; species type 2 - - db 45 ; catch rate - db 218 ; base exp yield - db $77 ; sprite dimensions - - dw DragonitePicFront - dw DragonitePicBack - - ; attacks known at lvl 0 - db WRAP - db LEER - db THUNDER_WAVE - db AGILITY - - db 5 ; growth rate - - ; learnset - db %11100010 - db %01111111 - db %11001000 - db %11000001 - db %11100011 - db %00011000 - db %00110010 - - db 0 ; padding - -MewtwoBaseStats: ; 3942a (e:542a) - db DEX_MEWTWO ; pokedex id - db 106 ; base hp - db 110 ; base attack - db 90 ; base defense - db 130 ; base speed - db 154 ; base special - - db PSYCHIC ; species type 1 - db PSYCHIC ; species type 2 - - db 3 ; catch rate - db 220 ; base exp yield - db $77 ; sprite dimensions - - dw MewtwoPicFront - dw MewtwoPicBack - - ; attacks known at lvl 0 - db CONFUSION - db DISABLE - db SWIFT - db PSYCHIC_M - - db 5 ; growth rate - - ; learnset - db %10110001 - db %11111111 - db %10101111 - db %11110001 - db %10101111 - db %00111000 - db %01100011 - - db 0 ; padding - -CryData: ; 39446 (e:5446) - ;$BaseCry, $Pitch, $Length - db $11, $00, $80; Rhydon - db $03, $00, $80; Kangaskhan - db $00, $00, $80; Nidoran♂ - db $19, $CC, $01; Clefairy - db $10, $00, $80; Spearow - db $06, $ED, $80; Voltorb - db $09, $00, $80; Nidoking - db $1F, $00, $80; Slowbro - db $0F, $20, $80; Ivysaur - db $0D, $00, $80; Exeggutor - db $0C, $00, $80; Lickitung - db $0B, $00, $80; Exeggcute - db $05, $00, $80; Grimer - db $07, $00, $FF; Gengar - db $01, $00, $80; Nidoran♀ - db $0A, $00, $80; Nidoqueen - db $19, $00, $80; Cubone - db $04, $00, $80; Rhyhorn - db $1B, $00, $80; Lapras - db $15, $00, $80; Arcanine - db $1E, $EE, $FF; Mew - db $17, $00, $80; Gyarados - db $18, $00, $80; Shellder - db $1A, $00, $80; Tentacool - db $1C, $00, $80; Gastly - db $16, $00, $80; Scyther - db $1E, $02, $20; Staryu - db $13, $00, $80; Blastoise - db $14, $00, $80; Pinsir - db $12, $00, $80; Tangela - db $00, $00, $00; MissingNo. - db $00, $00, $00; MissingNo. - db $1F, $20, $40; Growlithe - db $17, $FF, $C0; Onix - db $18, $40, $A0; Fearow - db $0E, $DF, $04; Pidgey - db $02, $00, $80; Slowpoke - db $1C, $A8, $C0; Kadabra - db $24, $00, $80; Graveler - db $14, $0A, $C0; Chansey - db $1F, $48, $60; Machoke - db $20, $08, $40; Mr.Mime - db $12, $80, $C0; Hitmonlee - db $0C, $EE, $C0; Hitmonchan - db $17, $E0, $10; Arbok - db $1E, $42, $FF; Parasect - db $21, $20, $60; Psyduck - db $0D, $88, $20; Drowzee - db $12, $E0, $40; Golem - db $00, $00, $00; MissingNo. - db $04, $FF, $30; Magmar - db $00, $00, $00; MissingNo. - db $06, $8F, $FF; Electabuzz - db $1C, $20, $C0; Magneton - db $12, $E6, $DD; Koffing - db $00, $00, $00; MissingNo. - db $0A, $DD, $60; Mankey - db $0C, $88, $C0; Seel - db $0B, $AA, $01; Diglett - db $1D, $11, $40; Tauros - db $00, $00, $00; MissingNo. - db $00, $00, $00; MissingNo. - db $00, $00, $00; MissingNo. - db $10, $DD, $01; Farfetch'd - db $1A, $44, $40; Venonat - db $0F, $3C, $C0; Dragonite - db $00, $80, $10; MissingNo. - db $00, $00, $00; MissingNo. - db $1D, $E0, $80; MissingNo. - db $0B, $BB, $01; Doduo - db $0E, $FF, $FF; Poliwag - db $0D, $FF, $FF; Jynx - db $09, $F8, $40; Moltres - db $09, $80, $40; Articuno - db $18, $FF, $80; Zapdos - db $0E, $FF, $FF; Ditto - db $19, $77, $10; Meowth - db $20, $20, $E0; Krabby - db $22, $FF, $40; MissingNo. - db $00, $00, $00; MissingNo. - db $0E, $E0, $60; MissingNo. - db $24, $4F, $10; Vulpix - db $24, $88, $60; Ninetales - db $0F, $EE, $01; Pikachu - db $09, $EE, $08; Raichu - db $00, $00, $00; MissingNo. - db $00, $00, $00; MissingNo. - db $0F, $60, $40; Dratini - db $0F, $40, $80; Dragonair - db $16, $BB, $40; Kabuto - db $18, $EE, $01; Kabutops - db $19, $99, $10; Horsea - db $19, $3C, $01; Seadra - db $0F, $40, $C0; MissingNo. - db $0F, $20, $C0; MissingNo. - db $00, $20, $40; Sandshrew - db $00, $FF, $FF; Sandslash - db $1F, $F0, $01; Omanyte - db $1F, $FF, $40; Omastar - db $0E, $FF, $35; Jigglypuff - db $0E, $68, $60; Wigglytuff - db $1A, $88, $60; Eevee - db $1A, $10, $20; Flareon - db $1A, $3D, $80; Jolteon - db $1A, $AA, $FF; Vaporeon - db $1F, $EE, $01; Machop - db $1D, $E0, $80; Zubat - db $17, $12, $40; Ekans - db $1E, $20, $E0; Paras - db $0E, $77, $60; Poliwhirl - db $0E, $00, $FF; Poliwrath - db $15, $EE, $01; Weedle - db $13, $FF, $01; Kakuna - db $13, $60, $80; Beedrill - db $00, $00, $00; MissingNo. - db $0B, $99, $20; Dodrio - db $0A, $AF, $40; Primeape - db $0B, $2A, $10; Dugtrio - db $1A, $29, $80; Venomoth - db $0C, $23, $FF; Dewgong - db $00, $00, $00; MissingNo. - db $00, $00, $00; MissingNo. - db $16, $80, $20; Caterpie - db $1C, $CC, $01; Metapod - db $16, $77, $40; Butterfree - db $1F, $08, $C0; Machamp - db $11, $20, $10; MissingNo. - db $21, $FF, $40; Golduck - db $0D, $EE, $40; Hypno - db $1D, $FA, $80; Golbat - db $1E, $99, $FF; Mewtwo - db $05, $55, $01; Snorlax - db $17, $80, $00; Magikarp - db $00, $00, $00; MissingNo. - db $00, $00, $00; MissingNo. - db $07, $EF, $FF; Muk - db $0F, $40, $80; MissingNo. - db $20, $EE, $E0; Kingler - db $18, $6F, $E0; Cloyster - db $00, $00, $00; MissingNo. - db $06, $A8, $90; Electrode - db $19, $AA, $20; Clefable - db $12, $FF, $FF; Weezing - db $19, $99, $FF; Persian - db $08, $4F, $60; Marowak - db $00, $00, $00; MissingNo. - db $1C, $30, $40; Haunter - db $1C, $C0, $01; Abra - db $1C, $98, $FF; Alakazam - db $14, $28, $C0; Pidgeotto - db $14, $11, $FF; Pidgeot - db $1E, $00, $80; Starmie - db $0F, $80, $01; Bulbasaur - db $0F, $00, $C0; Venusaur - db $1A, $EE, $FF; Tentacruel - db $00, $00, $00; MissingNo. - db $16, $80, $40; Goldeen - db $16, $10, $FF; Seaking - db $00, $00, $00; MissingNo. - db $00, $00, $00; MissingNo. - db $00, $00, $00; MissingNo. - db $00, $00, $00; MissingNo. - db $25, $00, $80; Ponyta - db $25, $20, $C0; Rapidash - db $22, $00, $80; Rattata - db $22, $20, $FF; Raticate - db $00, $2C, $C0; Nidorino - db $01, $2C, $E0; Nidorina - db $24, $F0, $10; Geodude - db $25, $AA, $FF; Porygon - db $23, $20, $F0; Aerodactyl - db $00, $00, $00; MissingNo. - db $1C, $80, $60; Magnemite - db $00, $00, $00; MissingNo. - db $00, $00, $00; MissingNo. - db $04, $60, $40; Charmander - db $1D, $60, $40; Squirtle - db $04, $20, $40; Charmeleon - db $1D, $20, $40; Wartortle - db $04, $00, $80; Charizard - db $1D, $00, $80; MissingNo. - db $00, $00, $00; MissingNo. - db $00, $00, $00; MissingNo. - db $00, $00, $00; MissingNo. - db $08, $DD, $01; Oddish - db $08, $AA, $40; Gloom - db $23, $22, $FF; Vileplume - db $21, $55, $01; Bellsprout - db $25, $44, $20; Weepinbell - db $25, $66, $CC; Victreebel +INCLUDE "data/cries.asm" Func_39680: ; 39680 (e:5680) ld a, [H_WHOSETURN] ; $fff3 @@ -51415,54 +40662,7 @@ TrainerPicAndMoneyPointers: ; 39914 (e:5914) dw LancePic db 0,$99,0 -TrainerNames: ; 399ff (e:59ff) - db "YOUNGSTER@" - db "BUG CATCHER@" - db "LASS@" - db "SAILOR@" - db "JR.TRAINER♂@" - db "JR.TRAINER♀@" - db "POKéMANIAC@" - db "SUPER NERD@" - db "HIKER@" - db "BIKER@" - db "BURGLAR@" - db "ENGINEER@" - db "JUGGLER@" - db "FISHERMAN@" - db "SWIMMER@" - db "CUE BALL@" - db "GAMBLER@" - db "BEAUTY@" - db "PSYCHIC@" - db "ROCKER@" - db "JUGGLER@" - db "TAMER@" - db "BIRD KEEPER@" - db "BLACKBELT@" - db "RIVAL1@" - db "PROF.OAK@" - db "CHIEF@" - db "SCIENTIST@" - db "GIOVANNI@" - db "ROCKET@" - db "COOLTRAINER♂@" - db "COOLTRAINER♀@" - db "BRUNO@" - db "BROCK@" - db "MISTY@" - db "LT.SURGE@" - db "ERIKA@" - db "KOGA@" - db "BLAINE@" - db "SABRINA@" - db "GENTLEMAN@" - db "RIVAL2@" - db "RIVAL3@" - db "LORELEI@" - db "CHANNELER@" - db "AGATHA@" - db "LANCE@" +INCLUDE "text/trainer_names.asm" Func_39b87: ; 39b87 (e:5b87) ld hl, $d0dc @@ -51750,793 +40950,9 @@ ReadTrainer: ; 39c53 (e:5c53) jr nz,.LastLoop ret -LoneMoves: ; 39d22 (e:5d22) -; these are used for gym leaders. -; this is not automatic! you have to write the number you want to W_LONEATTACKNO -; first. e.g., erika's script writes 4 to W_LONEATTACKNO to get mega drain, -; the fourth entry in the list. - -; first byte: pokemon in the trainer's party that gets the move -; second byte: move -; unterminated - db 1,BIDE - db 1,BUBBLEBEAM - db 2,THUNDERBOLT - db 2,MEGA_DRAIN - db 3,TOXIC - db 3,PSYWAVE - db 3,FIRE_BLAST - db 4,FISSURE - -TeamMoves: ; 39d32 (e:5d32) -; these are used for elite four. -; this is automatic, based on trainer class. -; don't be confused by LoneMoves above, the two data structures are - ; _completely_ unrelated. - -; first byte: trainer (all trainers in this class have this move) -; second byte: move -; ff-terminated - db LORELEI,BLIZZARD - db BRUNO,FISSURE - db AGATHA,TOXIC - db LANCE,BARRIER - db $FF - -if _YELLOW -; different format from above. - -; entry ≔ trainerclass, trainerid, moveset+, 0 -; moveset ≔ partymon, partymon'smove, moveid - - db BUG_CATCHER,$f - db 2,2,TACKLE - db 2,3,STRING_SHOT - db 0 - - db YOUNGSTER,$e - db 1,4,FISSURE - db 0 - - db BROCK,$1 - db 2,3,BIND - db 2,4,BIDE - db 0 - - db MISTY,$1 - db 2,4,BUBBLEBEAM - db 0 - - db LT__SURGE,$1 - db 1,1,THUNDERBOLT - db 1,2,MEGA_PUNCH - db 1,3,MEGA_KICK - db 1,4,GROWL - db 0 - - db ERIKA,$1 - db 1,3,MEGA_DRAIN - db 2,1,RAZOR_LEAF - db 3,1,PETAL_DANCE - db 0 - - db KOGA,$1 - db 1,1,TOXIC - db 1,2,TACKLE - db 2,1,TOXIC - db 2,3,SUPERSONIC - db 3,1,TOXIC - db 3,2,DOUBLE_EDGE - db 4,1,LEECH_LIFE - db 4,2,DOUBLE_TEAM - db 4,3,PSYCHIC_M - db 4,4,TOXIC - db 0 - - db BLAINE,$1 - db 1,1,FLAMETHROWER - db 1,4,CONFUSE_RAY - db 3,1,FLAMETHROWER - db 3,2,FIRE_BLAST - db 3,3,REFLECT - db 0 - - db SABRINA,$1 - db 1,1,FLASH - db 2,1,KINESIS - db 2,4,PSYWAVE - db 3,1,PSYWAVE - db 0 - - db GIOVANNI,$3 - db 1,3,FISSURE - db 2,2,DOUBLE_TEAM - db 3,1,EARTHQUAKE - db 3,3,THUNDER - db 4,1,EARTHQUAKE - db 4,2,LEER - db 4,3,THUNDER - db 5,1,ROCK_SLIDE - db 5,4,EARTHQUAKE - db 0 - - db LORELEI,$1 - db 1,1,BUBBLEBEAM - db 2,3,ICE_BEAM - db 3,1,PSYCHIC_M - db 3,2,SURF - db 4,3,LOVELY_KISS - db 5,3,BLIZZARD - db 0 - - db BRUNO,$1 - db 1,1,ROCK_SLIDE - db 1,2,SCREECH - db 1,4,DIG - db 2,3,FIRE_PUNCH - db 2,4,DOUBLE_TEAM - db 3,1,DOUBLE_KICK - db 3,2,MEGA_KICK - db 3,4,DOUBLE_TEAM - db 4,1,ROCK_SLIDE - db 4,2,SCREECH - db 4,4,EARTHQUAKE - db 5,2,KARATE_CHOP - db 5,3,STRENGTH - db 0 - - db AGATHA,$1 - db 1,2,SUBSTITUTE - db 1,3,LICK - db 1,4,MEGA_DRAIN - db 2,2,TOXIC - db 2,4,LEECH_LIFE - db 3,2,LICK - db 4,1,WRAP - db 5,2,PSYCHIC_M - db 0 - - db LANCE,$1 - db 1,1,DRAGON_RAGE - db 2,1,THUNDER_WAVE - db 2,3,THUNDERBOLT - db 3,1,BUBBLEBEAM - db 3,2,WRAP - db 3,3,ICE_BEAM - db 4,1,WING_ATTACK - db 4,2,SWIFT - db 4,3,FLY - db 5,1,BLIZZARD - db 5,2,FIRE_BLAST - db 5,3,THUNDER - db 0 - - db SONY3,$1 - db 1,3,EARTHQUAKE - db 2,4,KINESIS - db 3,4,LEECH_SEED - db 4,1,ICE_BEAM - db 5,1,CONFUSE_RAY - db 5,4,FIRE_SPIN - db 6,3,QUICK_ATTACK - db 0 - - db SONY3,$2 - db 1,3,EARTHQUAKE - db 2,4,KINESIS - db 3,4,LEECH_SEED - db 4,1,THUNDERBOLT - db 5,1,ICE_BEAM - db 6,2,REFLECT - db 6,3,QUICK_ATTACK - db 0 - - db SONY3,$3 - db 1,3,EARTHQUAKE - db 2,4,KINESIS - db 3,4,LEECH_SEED - db 4,1,CONFUSE_RAY - db 4,4,FIRE_SPIN - db 5,1,THUNDERBOLT - db 6,1,AURORA_BEAM - db 6,3,QUICK_ATTACK - db 0 +INCLUDE "data/trainer_moves.asm" - db $ff -endc - -TrainerDataPointers: ; 39d3b (e:5d3b) - dw YoungsterData,BugCatcherData,LassData,SailorData,JrTrainerMData - dw JrTrainerFData,PokemaniacData,SuperNerdData,HikerData,BikerData - dw BurglarData,EngineerData,Juggler1Data,FisherData,SwimmerData - dw CueBallData,GamblerData,BeautyData,PsychicData,RockerData - dw JugglerData,TamerData,BirdKeeperData,BlackbeltData,Green1Data - dw ProfOakData,ChiefData,ScientistData,GiovanniData,RocketData - dw CooltrainerMData,CooltrainerFData,BrunoData,BrockData,MistyData - dw LtSurgeData,ErikaData,KogaData,BlaineData,SabrinaData - dw GentlemanData,Green2Data,Green3Data,LoreleiData,ChannelerData - dw AgathaData,LanceData - -; if first byte != FF, then - ; first byte is level (of all pokemon on this team) - ; all the next bytes are pokemon species - ; null-terminated -; if first byte == FF, then - ; first byte is FF (obviously) - ; every next two bytes are a level and species - ; null-terminated - -YoungsterData: ; 39d99 (e:5d99) - db 11,RATTATA,EKANS,0 - db 14,SPEAROW,0 - db 10,RATTATA,RATTATA,ZUBAT,0 - db 14,RATTATA,EKANS,ZUBAT,0 - db 15,RATTATA,SPEAROW,0 - db 17,SLOWPOKE,0 - db 14,EKANS,SANDSHREW,0 - db 21,NIDORAN_M,0 - db 21,EKANS,0 - db 19,SANDSHREW,ZUBAT,0 - db 17,RATTATA,RATTATA,RATICATE,0 - db 18,NIDORAN_M,NIDORINO,0 - db 17,SPEAROW,RATTATA,RATTATA,SPEAROW,0 -if _YELLOW - db 24,SANDSHREW,0 -endc -BugCatcherData: ; 39dce (e:5dce) -if _YELLOW - db 7,CATERPIE,CATERPIE,0 - db 6,METAPOD,CATERPIE,METAPOD,0 - db 10,CATERPIE,0 -else - db 6,WEEDLE,CATERPIE,0 - db 7,WEEDLE,KAKUNA,WEEDLE,0 - db 9,WEEDLE,0 -endc - db 10,CATERPIE,WEEDLE,CATERPIE,0 - db 9,WEEDLE,KAKUNA,CATERPIE,METAPOD,0 - db 11,CATERPIE,METAPOD,0 - db 11,WEEDLE,KAKUNA,0 - db 10,CATERPIE,METAPOD,CATERPIE,0 - db 14,CATERPIE,WEEDLE,0 - db 16,WEEDLE,CATERPIE,WEEDLE,0 - db 20,BUTTERFREE,0 - db 18,METAPOD,CATERPIE,VENONAT,0 - db 19,BEEDRILL,BEEDRILL,0 - db 20,CATERPIE,WEEDLE,VENONAT,0 -if _YELLOW - db 8,CATERPIE,METAPOD,0 -endc -LassData: ; 39e0c (e:5e0c) - db 9,PIDGEY,PIDGEY,0 - db 10,RATTATA,NIDORAN_M,0 - db 14,JIGGLYPUFF,0 - db 31,PARAS,PARAS,PARASECT,0 - db 11,ODDISH,BELLSPROUT,0 - db 14,CLEFAIRY,0 - db 16,PIDGEY,NIDORAN_F,0 - db 14,PIDGEY,NIDORAN_F,0 - db 15,NIDORAN_M,NIDORAN_F,0 - db 13,ODDISH,PIDGEY,ODDISH,0 - db 18,PIDGEY,NIDORAN_F,0 -if _YELLOW - db 20,JIGGLYPUFF,0 -else - db 18,RATTATA,PIKACHU,0 -endc - db 23,NIDORAN_F,NIDORINA,0 - db 24,MEOWTH,MEOWTH,MEOWTH,0 -if _YELLOW - db 19,PIDGEY,RATTATA,NIDORAN_F,MEOWTH,NIDORAN_M,0 -else - db 19,PIDGEY,RATTATA,NIDORAN_M,MEOWTH,PIKACHU,0 -endc - db 22,CLEFAIRY,CLEFAIRY,0 - db 23,BELLSPROUT,WEEPINBELL,0 - db 23,ODDISH,GLOOM,0 -if _YELLOW - db 6,NIDORAN_F,NIDORAN_M,0 -endc -SailorData: ; 39e58 (e:5e58) - db 18,MACHOP,SHELLDER,0 - db 17,MACHOP,TENTACOOL,0 - db 21,SHELLDER,0 - db 17,HORSEA,SHELLDER,TENTACOOL,0 - db 18,TENTACOOL,STARYU,0 - db 17,HORSEA,HORSEA,HORSEA,0 - db 20,MACHOP,0 -if _YELLOW - db 24,MAGNEMITE,0 -else - db 21,PIKACHU,PIKACHU,0 -endc -JrTrainerMData: ; 39e78 (e:5e78) -if _YELLOW - db 9,DIGLETT,SANDSHREW,0 -else - db 11,DIGLETT,SANDSHREW,0 -endc - db 14,RATTATA,EKANS,0 - db 18,MANKEY,0 - db 20,SQUIRTLE,0 - db 16,SPEAROW,RATICATE,0 - db 18,DIGLETT,DIGLETT,SANDSHREW,0 - db 21,GROWLITHE,CHARMANDER,0 - db 19,RATTATA,DIGLETT,EKANS,SANDSHREW,0 - db 29,NIDORAN_M,NIDORINO,0 -if _YELLOW - db 16,WEEPINBELL,0 -endc -JrTrainerFData: ; 39e9d (e:5e9d) - db 19,GOLDEEN,0 -if _YELLOW - db 16,ODDISH,BELLSPROUT,0 -else - db 16,RATTATA,PIKACHU,0 -endc - db 16,PIDGEY,PIDGEY,PIDGEY,0 - db 22,BULBASAUR,0 - db 18,ODDISH,BELLSPROUT,ODDISH,BELLSPROUT,0 - db 23,MEOWTH,0 -if _YELLOW - db 20,JIGGLYPUFF,CLEFAIRY,0 -else - db 20,PIKACHU,CLEFAIRY,0 -endc - db 21,PIDGEY,PIDGEOTTO,0 - db 21,JIGGLYPUFF,PIDGEY,MEOWTH,0 - db 22,ODDISH,BULBASAUR,0 - db 24,BULBASAUR,IVYSAUR,0 -if _YELLOW - db 24,PIDGEY,MEOWTH,RATTATA,PIDGEY,MEOWTH,0 -else - db 24,PIDGEY,MEOWTH,RATTATA,PIKACHU,MEOWTH,0 -endc - db 30,POLIWAG,POLIWAG,0 - db 27,PIDGEY,MEOWTH,PIDGEY,PIDGEOTTO,0 - db 28,GOLDEEN,POLIWAG,HORSEA,0 - db 31,GOLDEEN,SEAKING,0 - db 22,BELLSPROUT,CLEFAIRY,0 - db 20,MEOWTH,ODDISH,PIDGEY,0 - db 19,PIDGEY,RATTATA,RATTATA,BELLSPROUT,0 - db 28,GLOOM,ODDISH,ODDISH,0 -if _YELLOW - db 29,PIDGEY,PIDGEOTTO,0 -else - db 29,PIKACHU,RAICHU,0 -endc - db 33,CLEFAIRY,0 - db 29,BELLSPROUT,ODDISH,TANGELA,0 - db 30,TENTACOOL,HORSEA,SEEL,0 -if _YELLOW - db 20,CUBONE,0 -endc -PokemaniacData: ; 39f09 (e:5f09) - db 30,RHYHORN,LICKITUNG,0 - db 20,CUBONE,SLOWPOKE,0 - db 20,SLOWPOKE,SLOWPOKE,SLOWPOKE,0 - db 22,CHARMANDER,CUBONE,0 - db 25,SLOWPOKE,0 - db 40,CHARMELEON,LAPRAS,LICKITUNG,0 - db 23,CUBONE,SLOWPOKE,0 -SuperNerdData: ; 39f26 (e:5f26) - db 11,MAGNEMITE,VOLTORB,0 - db 12,GRIMER,VOLTORB,KOFFING,0 - db 20,VOLTORB,KOFFING,VOLTORB,MAGNEMITE,0 - db 22,GRIMER,MUK,GRIMER,0 - db 26,KOFFING,0 - db 22,KOFFING,MAGNEMITE,WEEZING,0 - db 20,MAGNEMITE,MAGNEMITE,KOFFING,MAGNEMITE,0 - db 24,MAGNEMITE,VOLTORB,0 - db 36,VULPIX,VULPIX,NINETALES,0 - db 34,PONYTA,CHARMANDER,VULPIX,GROWLITHE,0 - db 41,RAPIDASH,0 - db 37,GROWLITHE,VULPIX,0 -HikerData: ; 39f5e (e:5f5e) - db 10,GEODUDE,GEODUDE,ONIX,0 - db 15,MACHOP,GEODUDE,0 - db 13,GEODUDE,GEODUDE,MACHOP,GEODUDE,0 - db 17,ONIX,0 - db 21,GEODUDE,ONIX,0 - db 20,GEODUDE,MACHOP,GEODUDE,0 - db 21,GEODUDE,ONIX,0 - db 19,ONIX,GRAVELER,0 - db 21,GEODUDE,GEODUDE,GRAVELER,0 - db 25,GEODUDE,0 - db 20,MACHOP,ONIX,0 - db 19,GEODUDE,MACHOP,GEODUDE,GEODUDE,0 - db 20,ONIX,ONIX,GEODUDE,0 - db 21,GEODUDE,GRAVELER,0 -BikerData: ; 39f9c (e:5f9c) - db 28,KOFFING,KOFFING,KOFFING,0 - db 29,KOFFING,GRIMER,0 - db 25,KOFFING,KOFFING,WEEZING,KOFFING,GRIMER,0 - db 28,KOFFING,GRIMER,WEEZING,0 - db 29,GRIMER,KOFFING,0 - db 33,WEEZING,0 - db 26,GRIMER,GRIMER,GRIMER,GRIMER,0 - db 28,WEEZING,KOFFING,WEEZING,0 - db 33,MUK,0 - db 29,VOLTORB,VOLTORB,0 - db 29,WEEZING,MUK,0 - db 25,KOFFING,WEEZING,KOFFING,KOFFING,WEEZING,0 - db 26,KOFFING,KOFFING,GRIMER,KOFFING,0 - db 28,GRIMER,GRIMER,KOFFING,0 - db 29,KOFFING,MUK,0 -BurglarData: ; 39fe4 (e:5fe4) - db 29,GROWLITHE,VULPIX,0 - db 33,GROWLITHE,0 - db 28,VULPIX,CHARMANDER,PONYTA,0 - db 36,GROWLITHE,VULPIX,NINETALES,0 - db 41,PONYTA,0 - db 37,VULPIX,GROWLITHE,0 - db 34,CHARMANDER,CHARMELEON,0 - db 38,NINETALES,0 - db 34,GROWLITHE,PONYTA,0 -EngineerData: ; 3a007 (e:6007) - db 21,VOLTORB,MAGNEMITE,0 - db 21,MAGNEMITE,0 - db 18,MAGNEMITE,MAGNEMITE,MAGNETON,0 -Juggler1Data: ; 3a013 (e:6013) -; none -FisherData: ; 3a013 (e:6013) - db 17,GOLDEEN,TENTACOOL,GOLDEEN,0 - db 17,TENTACOOL,STARYU,SHELLDER,0 - db 22,GOLDEEN,POLIWAG,GOLDEEN,0 - db 24,TENTACOOL,GOLDEEN,0 - db 27,GOLDEEN,0 - db 21,POLIWAG,SHELLDER,GOLDEEN,HORSEA,0 - db 28,SEAKING,GOLDEEN,SEAKING,SEAKING,0 - db 31,SHELLDER,CLOYSTER,0 - db 27,MAGIKARP,MAGIKARP,MAGIKARP,MAGIKARP,MAGIKARP,MAGIKARP,0 - db 33,SEAKING,GOLDEEN,0 - db 24,MAGIKARP,MAGIKARP,0 -SwimmerData: ; 3a049 (e:6049) - db 16,HORSEA,SHELLDER,0 - db 30,TENTACOOL,SHELLDER,0 - db 29,GOLDEEN,HORSEA,STARYU,0 - db 30,POLIWAG,POLIWHIRL,0 - db 27,HORSEA,TENTACOOL,TENTACOOL,GOLDEEN,0 - db 29,GOLDEEN,SHELLDER,SEAKING,0 - db 30,HORSEA,HORSEA,0 - db 27,TENTACOOL,TENTACOOL,STARYU,HORSEA,TENTACRUEL,0 - db 31,SHELLDER,CLOYSTER,0 - db 35,STARYU,0 - db 28,HORSEA,HORSEA,SEADRA,HORSEA,0 - db 33,SEADRA,TENTACRUEL,0 - db 37,STARMIE,0 - db 33,STARYU,WARTORTLE,0 - db 32,POLIWHIRL,TENTACOOL,SEADRA,0 -CueBallData: ; 3a08d (e:608d) - db 28,MACHOP,MANKEY,MACHOP,0 - db 29,MANKEY,MACHOP,0 - db 33,MACHOP,0 - db 29,MANKEY,PRIMEAPE,0 - db 29,MACHOP,MACHOKE,0 - db 33,MACHOKE,0 - db 26,MANKEY,MANKEY,MACHOKE,MACHOP,0 - db 29,PRIMEAPE,MACHOKE,0 - db 31,TENTACOOL,TENTACOOL,TENTACRUEL,0 -GamblerData: ; 3a0b3 (e:60b3) - db 18,POLIWAG,HORSEA,0 - db 18,BELLSPROUT,ODDISH,0 - db 18,VOLTORB,MAGNEMITE,0 - db 18,GROWLITHE,VULPIX,0 - db 22,POLIWAG,POLIWAG,POLIWHIRL,0 - db 22,ONIX,GEODUDE,GRAVELER,0 - db 24,GROWLITHE,VULPIX,0 -BeautyData: ; 3a0d1 (e:60d1) - db 21,ODDISH,BELLSPROUT,ODDISH,BELLSPROUT,0 - db 24,BELLSPROUT,BELLSPROUT,0 - db 26,EXEGGCUTE,0 -if _YELLOW - db 27,RATTATA,VULPIX,RATTATA,0 -else - db 27,RATTATA,PIKACHU,RATTATA,0 -endc - db 29,CLEFAIRY,MEOWTH,0 - db 35,SEAKING,0 - db 30,SHELLDER,SHELLDER,CLOYSTER,0 - db 31,POLIWAG,SEAKING,0 - db 29,PIDGEOTTO,WIGGLYTUFF,0 - db 29,BULBASAUR,IVYSAUR,0 - db 33,WEEPINBELL,BELLSPROUT,WEEPINBELL,0 - db 27,POLIWAG,GOLDEEN,SEAKING,GOLDEEN,POLIWAG,0 - db 30,GOLDEEN,SEAKING,0 - db 29,STARYU,STARYU,STARYU,0 - db 30,SEADRA,HORSEA,SEADRA,0 -PsychicData: ; 3a115 (e:6115) - db 31,KADABRA,SLOWPOKE,MR_MIME,KADABRA,0 - db 34,MR_MIME,KADABRA,0 - db 33,SLOWPOKE,SLOWPOKE,SLOWBRO,0 - db 38,SLOWBRO,0 -RockerData: ; 3a127 (e:6127) -if _YELLOW - db 20,VOLTORB,VOLTORB,VOLTORB,0 -else - db 20,VOLTORB,MAGNEMITE,VOLTORB,0 -endc - db 29,VOLTORB,ELECTRODE,0 -JugglerData: ; 3a130 (e:6130) - db 29,KADABRA,MR_MIME,0 - db 41,DROWZEE,HYPNO,KADABRA,KADABRA,0 - db 31,DROWZEE,DROWZEE,KADABRA,DROWZEE,0 - db 34,DROWZEE,HYPNO,0 - db 48,MR_MIME,0 - db 33,HYPNO,0 - db 38,HYPNO,0 - db 34,DROWZEE,KADABRA,0 -TamerData: ; 3a151 (e:6151) - db 34,SANDSLASH,ARBOK,0 - db 33,ARBOK,SANDSLASH,ARBOK,0 - db 43,RHYHORN,0 - db 39,ARBOK,TAUROS,0 - db 44,PERSIAN,GOLDUCK,0 - db 42,RHYHORN,PRIMEAPE,ARBOK,TAUROS,0 -BirdKeeperData: ; 3a16b (e:616b) - db 29,PIDGEY,PIDGEOTTO,0 - db 25,SPEAROW,PIDGEY,PIDGEY,SPEAROW,SPEAROW,0 - db 26,PIDGEY,PIDGEOTTO,SPEAROW,FEAROW,0 - db 33,FARFETCH_D,0 - db 29,SPEAROW,FEAROW,0 - db 26,PIDGEOTTO,FARFETCH_D,DODUO,PIDGEY,0 - db 28,DODRIO,DODUO,DODUO,0 - db 29,SPEAROW,FEAROW,0 - db 34,DODRIO,0 - db 26,SPEAROW,SPEAROW,FEAROW,SPEAROW,0 - db 30,FEAROW,FEAROW,PIDGEOTTO,0 - db 39,PIDGEOTTO,PIDGEOTTO,PIDGEY,PIDGEOTTO,0 - db 42,FARFETCH_D,FEAROW,0 - db 28,PIDGEY,DODUO,PIDGEOTTO,0 - db 26,PIDGEY,SPEAROW,PIDGEY,FEAROW,0 - db 29,PIDGEOTTO,FEAROW,0 - db 28,SPEAROW,DODUO,FEAROW,0 -BlackbeltData: ; 3a1be (e:61be) - db 37,HITMONLEE,HITMONCHAN,0 - db 31,MANKEY,MANKEY,PRIMEAPE,0 - db 32,MACHOP,MACHOKE,0 - db 36,PRIMEAPE,0 - db 31,MACHOP,MANKEY,PRIMEAPE,0 - db 40,MACHOP,MACHOKE,0 - db 43,MACHOKE,0 - db 38,MACHOKE,MACHOP,MACHOKE,0 - db 43,MACHOKE,MACHOP,MACHOKE,0 -Green1Data: ; 3a1e4 (e:61e4) -if _YELLOW - db 5,EEVEE,0 - db $FF,9,SPEAROW,8,EEVEE,0 - db $FF,18,SPEAROW,15,SANDSHREW,15,RATTATA,17,EEVEE,0 -else - db 5,SQUIRTLE,0 - db 5,BULBASAUR,0 - db 5,CHARMANDER,0 - db $FF,9,PIDGEY,8,SQUIRTLE,0 - db $FF,9,PIDGEY,8,BULBASAUR,0 - db $FF,9,PIDGEY,8,CHARMANDER,0 - db $FF,18,PIDGEOTTO,15,ABRA,15,RATTATA,17,SQUIRTLE,0 - db $FF,18,PIDGEOTTO,15,ABRA,15,RATTATA,17,BULBASAUR,0 - db $FF,18,PIDGEOTTO,15,ABRA,15,RATTATA,17,CHARMANDER,0 -endc -ProfOakData: ; 3a21d (e:621d) - db $FF,66,TAUROS,67,EXEGGUTOR,68,ARCANINE,69,BLASTOISE,70,GYARADOS,0 - db $FF,66,TAUROS,67,EXEGGUTOR,68,ARCANINE,69,VENUSAUR,70,GYARADOS,0 - db $FF,66,TAUROS,67,EXEGGUTOR,68,ARCANINE,69,CHARIZARD,70,GYARADOS,0 -ChiefData: ; 3a241 (e:6241) -; none -ScientistData: ; 3a241 (e:6241) - db 34,KOFFING,VOLTORB,0 - db 26,GRIMER,WEEZING,KOFFING,WEEZING,0 - db 28,MAGNEMITE,VOLTORB,MAGNETON,0 - db 29,ELECTRODE,WEEZING,0 - db 33,ELECTRODE,0 - db 26,MAGNETON,KOFFING,WEEZING,MAGNEMITE,0 - db 25,VOLTORB,KOFFING,MAGNETON,MAGNEMITE,KOFFING,0 - db 29,ELECTRODE,MUK,0 - db 29,GRIMER,ELECTRODE,0 - db 28,VOLTORB,KOFFING,MAGNETON,0 - db 29,MAGNEMITE,KOFFING,0 - db 33,MAGNEMITE,MAGNETON,VOLTORB,0 - db 34,MAGNEMITE,ELECTRODE,0 -GiovanniData: ; 3a27e (e:627e) -if _YELLOW - db $FF,25,ONIX,24,RHYHORN,29,PERSIAN,0 - db $FF,37,NIDORINO,35,PERSIAN,37,RHYHORN,41,NIDOQUEEN,0 - db $FF,50,DUGTRIO,53,PERSIAN,53,NIDOQUEEN,55,NIDOKING,55,RHYDON,0 -else - db $FF,25,ONIX,24,RHYHORN,29,KANGASKHAN,0 - db $FF,37,NIDORINO,35,KANGASKHAN,37,RHYHORN,41,NIDOQUEEN,0 - db $FF,45,RHYHORN,42,DUGTRIO,44,NIDOQUEEN,45,NIDOKING,50,RHYDON,0 -endc -RocketData: ; 3a29c (e:629c) - db 13,RATTATA,ZUBAT,0 - db 11,SANDSHREW,RATTATA,ZUBAT,0 - db 12,ZUBAT,EKANS,0 - db 16,RATICATE,0 - db 17,MACHOP,DROWZEE,0 - db 15,EKANS,ZUBAT,0 - db 20,RATICATE,ZUBAT,0 - db 21,DROWZEE,MACHOP,0 - db 21,RATICATE,RATICATE,0 - db 20,GRIMER,KOFFING,KOFFING,0 - db 19,RATTATA,RATICATE,RATICATE,RATTATA,0 - db 22,GRIMER,KOFFING,0 - db 17,ZUBAT,KOFFING,GRIMER,ZUBAT,RATICATE,0 - db 20,RATTATA,RATICATE,DROWZEE,0 - db 21,MACHOP,MACHOP,0 - db 23,SANDSHREW,EKANS,SANDSLASH,0 - db 23,EKANS,SANDSHREW,ARBOK,0 - db 21,KOFFING,ZUBAT,0 - db 25,ZUBAT,ZUBAT,GOLBAT,0 - db 26,KOFFING,DROWZEE,0 - db 23,ZUBAT,RATTATA,RATICATE,ZUBAT,0 - db 26,DROWZEE,KOFFING,0 - db 29,CUBONE,ZUBAT,0 - db 25,GOLBAT,ZUBAT,ZUBAT,RATICATE,ZUBAT,0 - db 28,RATICATE,HYPNO,RATICATE,0 - db 29,MACHOP,DROWZEE,0 - db 28,EKANS,ZUBAT,CUBONE,0 - db 33,ARBOK,0 - db 33,HYPNO,0 - db 29,MACHOP,MACHOKE,0 - db 28,ZUBAT,ZUBAT,GOLBAT,0 - db 26,RATICATE,ARBOK,KOFFING,GOLBAT,0 - db 29,CUBONE,CUBONE,0 - db 29,SANDSHREW,SANDSLASH,0 - db 26,RATICATE,ZUBAT,GOLBAT,RATTATA,0 - db 28,WEEZING,GOLBAT,KOFFING,0 - db 28,DROWZEE,GRIMER,MACHOP,0 - db 28,GOLBAT,DROWZEE,HYPNO,0 - db 33,MACHOKE,0 - db 25,RATTATA,RATTATA,ZUBAT,RATTATA,EKANS,0 - db 32,CUBONE,DROWZEE,MAROWAK,0 -if _YELLOW -JessieJamesData: - db 14,EKANS,MEOWTH,KOFFING,0 - db 25,KOFFING,MEOWTH,EKANS,0 - db 27,MEOWTH,ARBOK,WEEZING,0 - db 31,WEEZING,ARBOK,MEOWTH,0 - db 16,KOFFING,0 - db 27,KOFFING,0 - db 29,WEEZING,0 - db 33,WEEZING,0 -endc -CooltrainerMData: ; 3a35a (e:635a) - db 39,NIDORINO,NIDOKING,0 - db 43,EXEGGUTOR,CLOYSTER,ARCANINE,0 - db 43,KINGLER,TENTACRUEL,BLASTOISE,0 - db 45,KINGLER,STARMIE,0 - db 42,IVYSAUR,WARTORTLE,CHARMELEON,CHARIZARD,0 - db 44,IVYSAUR,WARTORTLE,CHARMELEON,0 - db 49,NIDOKING,0 - db 44,KINGLER,CLOYSTER,0 - db 39,SANDSLASH,DUGTRIO,0 - db 43,RHYHORN,0 -CooltrainerFData: ; 3a385 (e:6385) - db 24,WEEPINBELL,GLOOM,IVYSAUR,0 - db 43,BELLSPROUT,WEEPINBELL,VICTREEBEL,0 - db 43,PARASECT,DEWGONG,CHANSEY,0 - db 46,VILEPLUME,BUTTERFREE,0 - db 44,PERSIAN,NINETALES,0 - db 45,IVYSAUR,VENUSAUR,0 - db 45,NIDORINA,NIDOQUEEN,0 - db 43,PERSIAN,NINETALES,RAICHU,0 -BrunoData: ; 3a3a9 (e:63a9) - db $FF,53,ONIX,55,HITMONCHAN,55,HITMONLEE,56,ONIX,58,MACHAMP,0 -BrockData: ; 3a3b5 (e:63b5) -if _YELLOW - db $FF,10,GEODUDE,12,ONIX,0 -else - db $FF,12,GEODUDE,14,ONIX,0 -endc -MistyData: ; 3a3bb (e:63bb) - db $FF,18,STARYU,21,STARMIE,0 -LtSurgeData: ; 3a3c1 (e:63c1) -if _YELLOW - db $FF,28,RAICHU,0 -else - db $FF,21,VOLTORB,18,PIKACHU,24,RAICHU,0 -endc -ErikaData: ; 3a3c9 (e:63c9) -if _YELLOW - db $FF,30,TANGELA,32,WEEPINBELL,32,GLOOM,0 -else - db $FF,29,VICTREEBEL,24,TANGELA,29,VILEPLUME,0 -endc -KogaData: ; 3a3d1 (e:63d1) -if _YELLOW - db $FF,44,VENONAT,46,VENONAT,48,VENONAT,50,VENOMOTH,0 -else - db $FF,37,KOFFING,39,MUK,37,KOFFING,43,WEEZING,0 -endc -BlaineData: ; 3a3db (e:63db) -if _YELLOW - db $FF,48,NINETALES,50,RAPIDASH,54,ARCANINE,0 -else - db $FF,42,GROWLITHE,40,PONYTA,42,RAPIDASH,47,ARCANINE,0 -endc -SabrinaData: ; 3a3e5 (e:63e5) -if _YELLOW - db $FF,50,ABRA,50,KADABRA,50,ALAKAZAM,0 -else - db $FF,38,KADABRA,37,MR_MIME,38,VENOMOTH,43,ALAKAZAM,0 -endc -GentlemanData: ; 3a3ef (e:63ef) - db 18,GROWLITHE,GROWLITHE,0 - db 19,NIDORAN_M,NIDORAN_F,0 -if _YELLOW - db 22,VOLTORB,MAGNEMITE,0 -else - db 23,PIKACHU,0 -endc - db 48,PRIMEAPE,0 - db 17,GROWLITHE,PONYTA,0 -Green2Data: ; 3a401 (e:6401) -if _YELLOW - db $FF,19,SPEAROW,16,RATTATA,18,SANDSHREW,20,EEVEE,0 - db $FF,25,FEAROW,23,SHELLDER,22,VULPIX,20,SANDSHREW,25,EEVEE,0 - db $FF,25,FEAROW,23,MAGNEMITE,22,SHELLDER,20,SANDSHREW,25,EEVEE,0 - db $FF,25,FEAROW,23,VULPIX,22,MAGNEMITE,20,SANDSHREW,25,EEVEE,0 - db $FF,38,SANDSLASH,35,NINETALES,37,CLOYSTER,35,KADABRA,40,JOLTEON,0 - db $FF,38,SANDSLASH,35,CLOYSTER,37,MAGNETON,35,KADABRA,40,FLAREON,0 - db $FF,38,SANDSLASH,35,MAGNETON,37,NINETALES,35,KADABRA,40,VAPOREON,0 - db $FF,47,SANDSLASH,45,EXEGGCUTE,45,NINETALES,47,CLOYSTER,50,KADABRA,53,JOLTEON,0 - db $FF,47,SANDSLASH,45,EXEGGCUTE,45,CLOYSTER,47,MAGNETON,50,KADABRA,53,FLAREON,0 - db $FF,47,SANDSLASH,45,EXEGGCUTE,45,MAGNETON,47,NINETALES,50,KADABRA,53,VAPOREON,0 -else - db $FF,19,PIDGEOTTO,16,RATICATE,18,KADABRA,20,WARTORTLE,0 - db $FF,19,PIDGEOTTO,16,RATICATE,18,KADABRA,20,IVYSAUR,0 - db $FF,19,PIDGEOTTO,16,RATICATE,18,KADABRA,20,CHARMELEON,0 - db $FF,25,PIDGEOTTO,23,GROWLITHE,22,EXEGGCUTE,20,KADABRA,25,WARTORTLE,0 - db $FF,25,PIDGEOTTO,23,GYARADOS,22,GROWLITHE,20,KADABRA,25,IVYSAUR,0 - db $FF,25,PIDGEOTTO,23,EXEGGCUTE,22,GYARADOS,20,KADABRA,25,CHARMELEON,0 - db $FF,37,PIDGEOT,38,GROWLITHE,35,EXEGGCUTE,35,ALAKAZAM,40,BLASTOISE,0 - db $FF,37,PIDGEOT,38,GYARADOS,35,GROWLITHE,35,ALAKAZAM,40,VENUSAUR,0 - db $FF,37,PIDGEOT,38,EXEGGCUTE,35,GYARADOS,35,ALAKAZAM,40,CHARIZARD,0 - db $FF,47,PIDGEOT,45,RHYHORN,45,GROWLITHE,47,EXEGGCUTE,50,ALAKAZAM,53,BLASTOISE,0 - db $FF,47,PIDGEOT,45,RHYHORN,45,GYARADOS,47,GROWLITHE,50,ALAKAZAM,53,VENUSAUR,0 - db $FF,47,PIDGEOT,45,RHYHORN,45,EXEGGCUTE,47,GYARADOS,50,ALAKAZAM,53,CHARIZARD,0 -endc -Green3Data: ; 3a491 (e:6491) -if _YELLOW - db $FF,61,SANDSLASH,59,ALAKAZAM,61,EXEGGUTOR,61,CLOYSTER,63,NINETALES,65,JOLTEON,0 - db $FF,61,SANDSLASH,59,ALAKAZAM,61,EXEGGUTOR,61,MAGNETON,63,CLOYSTER,65,FLAREON,0 - db $FF,61,SANDSLASH,59,ALAKAZAM,61,EXEGGUTOR,61,NINETALES,63,MAGNETON,65,VAPOREON,0 -else - db $FF,61,PIDGEOT,59,ALAKAZAM,61,RHYDON,61,ARCANINE,63,EXEGGUTOR,65,BLASTOISE,0 - db $FF,61,PIDGEOT,59,ALAKAZAM,61,RHYDON,61,GYARADOS,63,ARCANINE,65,VENUSAUR,0 - db $FF,61,PIDGEOT,59,ALAKAZAM,61,RHYDON,61,EXEGGUTOR,63,GYARADOS,65,CHARIZARD,0 -endc -LoreleiData: ; 3a4bb (e:64bb) - db $FF,54,DEWGONG,53,CLOYSTER,54,SLOWBRO,56,JYNX,56,LAPRAS,0 -ChannelerData: ; 3a4c7 (e:64c7) - db 22,GASTLY,0 - db 24,GASTLY,0 - db 23,GASTLY,GASTLY,0 - db 24,GASTLY,0 - db 23,GASTLY,0 - db 24,GASTLY,0 - db 24,HAUNTER,0 - db 22,GASTLY,0 - db 24,GASTLY,0 - db 23,GASTLY,GASTLY,0 - db 24,GASTLY,0 - db 22,GASTLY,0 - db 24,GASTLY,0 - db 23,HAUNTER,0 - db 24,GASTLY,0 - db 22,GASTLY,0 - db 24,GASTLY,0 - db 22,HAUNTER,0 - db 22,GASTLY,GASTLY,GASTLY,0 - db 24,GASTLY,0 - db 24,GASTLY,0 - db 34,GASTLY,HAUNTER,0 - db 38,HAUNTER,0 - db 33,GASTLY,GASTLY,HAUNTER,0 -AgathaData: ; 3a516 (e:6516) - db $FF,56,GENGAR,56,GOLBAT,55,HAUNTER,58,ARBOK,60,GENGAR,0 -LanceData: ; 3a522 (e:6522) - db $FF,58,GYARADOS,56,DRAGONAIR,56,DRAGONAIR,60,AERODACTYL,62,DRAGONITE,0 +INCLUDE "data/trainer_parties.asm" TrainerAI: ; 3a52e (e:652e) ;XXX called at 34964, 3c342, 3c398 @@ -53741,2177 +42157,7 @@ Func_3b057: ; 3b057 (e:7057) ld a, $10 jp Predef ; indirect jump to HandleBitArray (f666 (3:7666)) -EvosMovesPointerTable: ; 3b05c (e:705c) - dw Mon112_EvosMoves - dw Mon115_EvosMoves - dw Mon032_EvosMoves - dw Mon035_EvosMoves - dw Mon021_EvosMoves - dw Mon100_EvosMoves - dw Mon034_EvosMoves - dw Mon080_EvosMoves - dw Mon002_EvosMoves - dw Mon103_EvosMoves - dw Mon108_EvosMoves - dw Mon102_EvosMoves - dw Mon088_EvosMoves - dw Mon094_EvosMoves - dw Mon029_EvosMoves - dw Mon031_EvosMoves - dw Mon104_EvosMoves - dw Mon111_EvosMoves - dw Mon131_EvosMoves - dw Mon059_EvosMoves - dw Mon151_EvosMoves - dw Mon130_EvosMoves - dw Mon090_EvosMoves - dw Mon072_EvosMoves - dw Mon092_EvosMoves - dw Mon123_EvosMoves - dw Mon120_EvosMoves - dw Mon009_EvosMoves - dw Mon127_EvosMoves - dw Mon114_EvosMoves - dw Mon152_EvosMoves ;MissingNo - dw Mon153_EvosMoves ;MissingNo - dw Mon058_EvosMoves - dw Mon095_EvosMoves - dw Mon022_EvosMoves - dw Mon016_EvosMoves - dw Mon079_EvosMoves - dw Mon064_EvosMoves - dw Mon075_EvosMoves - dw Mon113_EvosMoves - dw Mon067_EvosMoves - dw Mon122_EvosMoves - dw Mon106_EvosMoves - dw Mon107_EvosMoves - dw Mon024_EvosMoves - dw Mon047_EvosMoves - dw Mon054_EvosMoves - dw Mon096_EvosMoves - dw Mon076_EvosMoves - dw Mon154_EvosMoves ;MissingNo - dw Mon126_EvosMoves - dw Mon155_EvosMoves ;MissingNo - dw Mon125_EvosMoves - dw Mon082_EvosMoves - dw Mon109_EvosMoves - dw Mon156_EvosMoves ;MissingNo - dw Mon056_EvosMoves - dw Mon086_EvosMoves - dw Mon050_EvosMoves - dw Mon128_EvosMoves - dw Mon157_EvosMoves ;MissingNo - dw Mon158_EvosMoves ;MissingNo - dw Mon159_EvosMoves ;MissingNo - dw Mon083_EvosMoves - dw Mon048_EvosMoves - dw Mon149_EvosMoves - dw Mon160_EvosMoves ;MissingNo - dw Mon161_EvosMoves ;MissingNo - dw Mon162_EvosMoves ;MissingNo - dw Mon084_EvosMoves - dw Mon060_EvosMoves - dw Mon124_EvosMoves - dw Mon146_EvosMoves - dw Mon144_EvosMoves - dw Mon145_EvosMoves - dw Mon132_EvosMoves - dw Mon052_EvosMoves - dw Mon098_EvosMoves - dw Mon163_EvosMoves ;MissingNo - dw Mon164_EvosMoves ;MissingNo - dw Mon165_EvosMoves ;MissingNo - dw Mon037_EvosMoves - dw Mon038_EvosMoves - dw Mon025_EvosMoves - dw Mon026_EvosMoves - dw Mon166_EvosMoves ;MissingNo - dw Mon167_EvosMoves ;MissingNo - dw Mon147_EvosMoves - dw Mon148_EvosMoves - dw Mon140_EvosMoves - dw Mon141_EvosMoves - dw Mon116_EvosMoves - dw Mon117_EvosMoves - dw Mon168_EvosMoves ;MissingNo - dw Mon169_EvosMoves ;MissingNo - dw Mon027_EvosMoves - dw Mon028_EvosMoves - dw Mon138_EvosMoves - dw Mon139_EvosMoves - dw Mon039_EvosMoves - dw Mon040_EvosMoves - dw Mon133_EvosMoves - dw Mon136_EvosMoves - dw Mon135_EvosMoves - dw Mon134_EvosMoves - dw Mon066_EvosMoves - dw Mon041_EvosMoves - dw Mon023_EvosMoves - dw Mon046_EvosMoves - dw Mon061_EvosMoves - dw Mon062_EvosMoves - dw Mon013_EvosMoves - dw Mon014_EvosMoves - dw Mon015_EvosMoves - dw Mon170_EvosMoves ;MissingNo - dw Mon085_EvosMoves - dw Mon057_EvosMoves - dw Mon051_EvosMoves - dw Mon049_EvosMoves - dw Mon087_EvosMoves - dw Mon171_EvosMoves ;MissingNo - dw Mon172_EvosMoves ;MissingNo - dw Mon010_EvosMoves - dw Mon011_EvosMoves - dw Mon012_EvosMoves - dw Mon068_EvosMoves - dw Mon173_EvosMoves ;MissingNo - dw Mon055_EvosMoves - dw Mon097_EvosMoves - dw Mon042_EvosMoves - dw Mon150_EvosMoves - dw Mon143_EvosMoves - dw Mon129_EvosMoves - dw Mon174_EvosMoves ;MissingNo - dw Mon175_EvosMoves ;MissingNo - dw Mon089_EvosMoves - dw Mon176_EvosMoves ;MissingNo - dw Mon099_EvosMoves - dw Mon091_EvosMoves - dw Mon177_EvosMoves ;MissingNo - dw Mon101_EvosMoves - dw Mon036_EvosMoves - dw Mon110_EvosMoves - dw Mon053_EvosMoves - dw Mon105_EvosMoves - dw Mon178_EvosMoves ;MissingNo - dw Mon093_EvosMoves - dw Mon063_EvosMoves - dw Mon065_EvosMoves - dw Mon017_EvosMoves - dw Mon018_EvosMoves - dw Mon121_EvosMoves - dw Mon001_EvosMoves - dw Mon003_EvosMoves - dw Mon073_EvosMoves - dw Mon179_EvosMoves ;MissingNo - dw Mon118_EvosMoves - dw Mon119_EvosMoves - dw Mon180_EvosMoves ;MissingNo - dw Mon181_EvosMoves ;MissingNo - dw Mon182_EvosMoves ;MissingNo - dw Mon183_EvosMoves ;MissingNo - dw Mon077_EvosMoves - dw Mon078_EvosMoves - dw Mon019_EvosMoves - dw Mon020_EvosMoves - dw Mon033_EvosMoves - dw Mon030_EvosMoves - dw Mon074_EvosMoves - dw Mon137_EvosMoves - dw Mon142_EvosMoves - dw Mon184_EvosMoves ;MissingNo - dw Mon081_EvosMoves - dw Mon185_EvosMoves ;MissingNo - dw Mon186_EvosMoves ;MissingNo - dw Mon004_EvosMoves - dw Mon007_EvosMoves - dw Mon005_EvosMoves - dw Mon008_EvosMoves - dw Mon006_EvosMoves - dw Mon187_EvosMoves ;MissingNo - dw Mon188_EvosMoves ;MissingNo - dw Mon189_EvosMoves ;MissingNo - dw Mon190_EvosMoves ;MissingNo - dw Mon043_EvosMoves - dw Mon044_EvosMoves - dw Mon045_EvosMoves - dw Mon069_EvosMoves - dw Mon070_EvosMoves - dw Mon071_EvosMoves - -Mon112_EvosMoves: ; 3b1d8 (e:71d8) -;RHYDON -;Evolutions - db 0 -;Learnset - db 30,STOMP - db 35,TAIL_WHIP - db 40,FURY_ATTACK - db 48,HORN_DRILL - db 55,LEER - db 64,TAKE_DOWN - db 0 -Mon115_EvosMoves: ; 3b1e6 (e:71e6) -;KANGASKHAN -;Evolutions - db 0 -;Learnset - db 26,BITE - db 31,TAIL_WHIP - db 36,MEGA_PUNCH - db 41,LEER - db 46,DIZZY_PUNCH - db 0 -Mon032_EvosMoves: ; 3b1f2 (e:71f2) -;NIDORAN_M -;Evolutions - db EV_LEVEL,16,NIDORINO - db 0 -;Learnset - db 8,HORN_ATTACK - db 14,POISON_STING - db 21,FOCUS_ENERGY - db 29,FURY_ATTACK - db 36,HORN_DRILL - db 43,DOUBLE_KICK - db 0 -Mon035_EvosMoves: ; 3b203 (e:7203) -;CLEFAIRY -;Evolutions - db EV_ITEM,MOON_STONE,1,CLEFABLE - db 0 -;Learnset - db 13,SING - db 18,DOUBLESLAP - db 24,MINIMIZE - db 31,METRONOME - db 39,DEFENSE_CURL - db 48,LIGHT_SCREEN - db 0 -Mon021_EvosMoves: ; 3b215 (e:7215) -;SPEAROW -;Evolutions - db EV_LEVEL,20,FEAROW - db 0 -;Learnset - db 9,LEER - db 15,FURY_ATTACK - db 22,MIRROR_MOVE - db 29,DRILL_PECK - db 36,AGILITY - db 0 -Mon100_EvosMoves: ; 3b224 (e:7224) -;VOLTORB -;Evolutions - db EV_LEVEL,30,ELECTRODE - db 0 -;Learnset - db 17,SONICBOOM - db 22,SELFDESTRUCT - db 29,LIGHT_SCREEN - db 36,SWIFT - db 43,EXPLOSION - db 0 -Mon034_EvosMoves: ; 3b233 (e:7233) -;NIDOKING -;Evolutions - db 0 -;Learnset - db 8,HORN_ATTACK - db 14,POISON_STING - db 23,THRASH - db 0 -Mon080_EvosMoves: ; 3b23b (e:723b) -;SLOWBRO -;Evolutions - db 0 -;Learnset - db 18,DISABLE - db 22,HEADBUTT - db 27,GROWL - db 33,WATER_GUN - db 37,WITHDRAW - db 44,AMNESIA - db 55,PSYCHIC_M - db 0 -Mon002_EvosMoves: ; 3b24b (e:724b) -;IVYSAUR -;Evolutions - db EV_LEVEL,32,VENUSAUR - db 0 -;Learnset - db 7,LEECH_SEED - db 13,VINE_WHIP - db 22,POISONPOWDER - db 30,RAZOR_LEAF - db 38,GROWTH - db 46,SLEEP_POWDER - db 54,SOLARBEAM - db 0 -Mon103_EvosMoves: ; 3b25e (e:725e) -;EXEGGUTOR -;Evolutions - db 0 -;Learnset - db 28,STOMP - db 0 -Mon108_EvosMoves: ; 3b262 (e:7262) -;LICKITUNG -;Evolutions - db 0 -;Learnset - db 7,STOMP - db 15,DISABLE - db 23,DEFENSE_CURL - db 31,SLAM - db 39,SCREECH - db 0 -Mon102_EvosMoves: ; 3b26e (e:726e) -;EXEGGCUTE -;Evolutions - db EV_ITEM,LEAF_STONE ,1,EXEGGUTOR - db 0 -;Learnset - db 25,REFLECT - db 28,LEECH_SEED - db 32,STUN_SPORE - db 37,POISONPOWDER - db 42,SOLARBEAM - db 48,SLEEP_POWDER - db 0 -Mon088_EvosMoves: ; 3b280 (e:7280) -;GRIMER -;Evolutions - db EV_LEVEL,38,MUK - db 0 -;Learnset - db 30,POISON_GAS - db 33,MINIMIZE - db 37,SLUDGE - db 42,HARDEN - db 48,SCREECH - db 55,ACID_ARMOR - db 0 -Mon094_EvosMoves: ; 3b291 (e:7291) -;GENGAR -;Evolutions - db 0 -;Learnset - db 29,HYPNOSIS - db 38,DREAM_EATER - db 0 -Mon029_EvosMoves: ; 3b297 (e:7297) -;NIDORAN_F -;Evolutions - db EV_LEVEL,16,NIDORINA - db 0 -;Learnset - db 8,SCRATCH - db 14,POISON_STING - db 21,TAIL_WHIP - db 29,BITE - db 36,FURY_SWIPES - db 43,DOUBLE_KICK - db 0 -Mon031_EvosMoves: ; 3b2a8 (e:72a8) -;NIDOQUEEN -;Evolutions - db 0 -;Learnset - db 8,SCRATCH - db 14,POISON_STING - db 23,BODY_SLAM - db 0 -Mon104_EvosMoves: ; 3b2b0 (e:72b0) -;CUBONE -;Evolutions - db EV_LEVEL,28,MAROWAK - db 0 -;Learnset - db 25,LEER - db 31,FOCUS_ENERGY - db 38,THRASH - db 43,BONEMERANG - db 46,RAGE - db 0 -Mon111_EvosMoves: ; 3b2bf (e:72bf) -;RHYHORN -;Evolutions - db EV_LEVEL,42,RHYDON - db 0 -;Learnset - db 30,STOMP - db 35,TAIL_WHIP - db 40,FURY_ATTACK - db 45,HORN_DRILL - db 50,LEER - db 55,TAKE_DOWN - db 0 -Mon131_EvosMoves: ; 3b2d0 (e:72d0) -;LAPRAS -;Evolutions - db 0 -;Learnset - db 16,SING - db 20,MIST - db 25,BODY_SLAM - db 31,CONFUSE_RAY - db 38,ICE_BEAM - db 46,HYDRO_PUMP - db 0 -Mon059_EvosMoves: ; 3b2de (e:72de) -;ARCANINE -;Evolutions - db 0 -;Learnset - db 0 -Mon151_EvosMoves: ; 3b2e0 (e:72e0) -;MEW -;Evolutions - db 0 -;Learnset - db 10,TRANSFORM - db 20,MEGA_PUNCH - db 30,METRONOME - db 40,PSYCHIC_M - db 0 -Mon130_EvosMoves: ; 3b2ea (e:72ea) -;GYARADOS -;Evolutions - db 0 -;Learnset - db 20,BITE - db 25,DRAGON_RAGE - db 32,LEER - db 41,HYDRO_PUMP - db 52,HYPER_BEAM - db 0 -Mon090_EvosMoves: ; 3b2f6 (e:72f6) -;SHELLDER -;Evolutions - db EV_ITEM,WATER_STONE ,1,CLOYSTER - db 0 -;Learnset - db 18,SUPERSONIC - db 23,CLAMP - db 30,AURORA_BEAM - db 39,LEER - db 50,ICE_BEAM - db 0 -Mon072_EvosMoves: ; 3b306 (e:7306) -;TENTACOOL -;Evolutions - db EV_LEVEL,30,TENTACRUEL - db 0 -;Learnset - db 7,SUPERSONIC - db 13,WRAP - db 18,POISON_STING - db 22,WATER_GUN - db 27,CONSTRICT - db 33,BARRIER - db 40,SCREECH - db 48,HYDRO_PUMP - db 0 -Mon092_EvosMoves: ; 3b31b (e:731b) -;GASTLY -;Evolutions - db EV_LEVEL,25,HAUNTER - db 0 -;Learnset - db 27,HYPNOSIS - db 35,DREAM_EATER - db 0 -Mon123_EvosMoves: ; 3b324 (e:7324) -;SCYTHER -;Evolutions - db 0 -;Learnset - db 17,LEER - db 20,FOCUS_ENERGY - db 24,DOUBLE_TEAM - db 29,SLASH - db 35,SWORDS_DANCE - db 42,AGILITY - db 0 -Mon120_EvosMoves: ; 3b332 (e:7332) -;STARYU -;Evolutions - db EV_ITEM,WATER_STONE ,1,STARMIE - db 0 -;Learnset - db 17,WATER_GUN - db 22,HARDEN - db 27,RECOVER - db 32,SWIFT - db 37,MINIMIZE - db 42,LIGHT_SCREEN - db 47,HYDRO_PUMP - db 0 -Mon009_EvosMoves: ; 3b346 (e:7346) -;BLASTOISE -;Evolutions - db 0 -;Learnset - db 8,BUBBLE - db 15,WATER_GUN - db 24,BITE - db 31,WITHDRAW - db 42,SKULL_BASH - db 52,HYDRO_PUMP - db 0 -Mon127_EvosMoves: ; 3b354 (e:7354) -;PINSIR -;Evolutions - db 0 -;Learnset - db 25,SEISMIC_TOSS - db 30,GUILLOTINE - db 36,FOCUS_ENERGY - db 43,HARDEN - db 49,SLASH - db 54,SWORDS_DANCE - db 0 -Mon114_EvosMoves: ; 3b362 (e:7362) -;TANGELA -;Evolutions - db 0 -;Learnset - db 29,ABSORB - db 32,POISONPOWDER - db 36,STUN_SPORE - db 39,SLEEP_POWDER - db 45,SLAM - db 49,GROWTH - db 0 - -Mon152_EvosMoves: ; 3b370 (e:7370) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 - -Mon153_EvosMoves: ; 3b372 (e:7372) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 -Mon058_EvosMoves: ; 3b374 (e:7374) -;GROWLITHE -;Evolutions - db EV_ITEM,FIRE_STONE,1,ARCANINE - db 0 -;Learnset - db 18,EMBER - db 23,LEER - db 30,TAKE_DOWN - db 39,AGILITY - db 50,FLAMETHROWER - db 0 -Mon095_EvosMoves: ; 3b384 (e:7384) -;ONIX -;Evolutions - db 0 -;Learnset - db 15,BIND - db 19,ROCK_THROW - db 25,RAGE - db 33,SLAM - db 43,HARDEN - db 0 -Mon022_EvosMoves: ; 3b390 (e:7390) -;FEAROW -;Evolutions - db 0 -;Learnset - db 9,LEER - db 15,FURY_ATTACK - db 25,MIRROR_MOVE - db 34,DRILL_PECK - db 43,AGILITY - db 0 -Mon016_EvosMoves: ; 3b39c (e:739c) -;PIDGEY -;Evolutions - db EV_LEVEL,18,PIDGEOTTO - db 0 -;Learnset - db 5,SAND_ATTACK - db 12,QUICK_ATTACK - db 19,WHIRLWIND - db 28,WING_ATTACK - db 36,AGILITY - db 44,MIRROR_MOVE - db 0 -Mon079_EvosMoves: ; 3b3ad (e:73ad) -;SLOWPOKE -;Evolutions - db EV_LEVEL,37,SLOWBRO - db 0 -;Learnset - db 18,DISABLE - db 22,HEADBUTT - db 27,GROWL - db 33,WATER_GUN - db 40,AMNESIA - db 48,PSYCHIC_M - db 0 -Mon064_EvosMoves: ; 3b3be (e:73be) -;KADABRA -;Evolutions - db EV_TRADE,1,ALAKAZAM - db 0 -;Learnset - db 16,CONFUSION - db 20,DISABLE - db 27,PSYBEAM - db 31,RECOVER - db 38,PSYCHIC_M - db 42,REFLECT - db 0 -Mon075_EvosMoves: ; 3b3cf (e:73cf) -;GRAVELER -;Evolutions - db EV_TRADE,1,GOLEM - db 0 -;Learnset - db 11,DEFENSE_CURL - db 16,ROCK_THROW - db 21,SELFDESTRUCT - db 29,HARDEN - db 36,EARTHQUAKE - db 43,EXPLOSION - db 0 -Mon113_EvosMoves: ; 3b3e0 (e:73e0) -;CHANSEY -;Evolutions - db 0 -;Learnset - db 24,SING - db 30,GROWL - db 38,MINIMIZE - db 44,DEFENSE_CURL - db 48,LIGHT_SCREEN - db 54,DOUBLE_EDGE - db 0 -Mon067_EvosMoves: ; 3b3ee (e:73ee) -;MACHOKE -;Evolutions - db EV_TRADE,1,MACHAMP - db 0 -;Learnset - db 20,LOW_KICK - db 25,LEER - db 36,FOCUS_ENERGY - db 44,SEISMIC_TOSS - db 52,SUBMISSION - db 0 -Mon122_EvosMoves: ; 3b3fd (e:73fd) -;MR_MIME -;Evolutions - db 0 -;Learnset - db 15,CONFUSION - db 23,LIGHT_SCREEN - db 31,DOUBLESLAP - db 39,MEDITATE - db 47,SUBSTITUTE - db 0 -Mon106_EvosMoves: ; 3b409 (e:7409) -;HITMONLEE -;Evolutions - db 0 -;Learnset - db 33,ROLLING_KICK - db 38,JUMP_KICK - db 43,FOCUS_ENERGY - db 48,HI_JUMP_KICK - db 53,MEGA_KICK - db 0 -Mon107_EvosMoves: ; 3b415 (e:7415) -;HITMONCHAN -;Evolutions - db 0 -;Learnset - db 33,FIRE_PUNCH - db 38,ICE_PUNCH - db 43,THUNDERPUNCH - db 48,MEGA_PUNCH - db 53,COUNTER - db 0 -Mon024_EvosMoves: ; 3b421 (e:7421) -;ARBOK -;Evolutions - db 0 -;Learnset - db 10,POISON_STING - db 17,BITE - db 27,GLARE - db 36,SCREECH - db 47,ACID - db 0 -Mon047_EvosMoves: ; 3b42d (e:742d) -;PARASECT -;Evolutions - db 0 -;Learnset - db 13,STUN_SPORE - db 20,LEECH_LIFE - db 30,SPORE - db 39,SLASH - db 48,GROWTH - db 0 -Mon054_EvosMoves: ; 3b439 (e:7439) -;PSYDUCK -;Evolutions - db EV_LEVEL,33,GOLDUCK - db 0 -;Learnset - db 28,TAIL_WHIP - db 31,DISABLE - db 36,CONFUSION - db 43,FURY_SWIPES - db 52,HYDRO_PUMP - db 0 -Mon096_EvosMoves: ; 3b448 (e:7448) -;DROWZEE -;Evolutions - db EV_LEVEL,26,HYPNO - db 0 -;Learnset - db 12,DISABLE - db 17,CONFUSION - db 24,HEADBUTT - db 29,POISON_GAS - db 32,PSYCHIC_M - db 37,MEDITATE - db 0 -Mon076_EvosMoves: ; 3b459 (e:7459) -;GOLEM -;Evolutions - db 0 -;Learnset - db 11,DEFENSE_CURL - db 16,ROCK_THROW - db 21,SELFDESTRUCT - db 29,HARDEN - db 36,EARTHQUAKE - db 43,EXPLOSION - db 0 - -Mon154_EvosMoves: ; 3b467 (e:7467) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 -Mon126_EvosMoves: ; 3b469 (e:7469) -;MAGMAR -;Evolutions - db 0 -;Learnset - db 36,LEER - db 39,CONFUSE_RAY - db 43,FIRE_PUNCH - db 48,SMOKESCREEN - db 52,SMOG - db 55,FLAMETHROWER - db 0 - -Mon155_EvosMoves: ; 3b477 (e:7477) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 -Mon125_EvosMoves: ; 3b479 (e:7479) -;ELECTABUZZ -;Evolutions - db 0 -;Learnset - db 34,THUNDERSHOCK - db 37,SCREECH - db 42,THUNDERPUNCH - db 49,LIGHT_SCREEN - db 54,THUNDER - db 0 -Mon082_EvosMoves: ; 3b485 (e:7485) -;MAGNETON -;Evolutions - db 0 -;Learnset - db 21,SONICBOOM - db 25,THUNDERSHOCK - db 29,SUPERSONIC - db 38,THUNDER_WAVE - db 46,SWIFT - db 54,SCREECH - db 0 -Mon109_EvosMoves: ; 3b493 (e:7493) -;KOFFING -;Evolutions - db EV_LEVEL,35,WEEZING - db 0 -;Learnset - db 32,SLUDGE - db 37,SMOKESCREEN - db 40,SELFDESTRUCT - db 45,HAZE - db 48,EXPLOSION - db 0 - -Mon156_EvosMoves: ; 3b4a2 (e:74a2) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 -Mon056_EvosMoves: ; 3b4a4 (e:74a4) -;MANKEY -;Evolutions - db EV_LEVEL,28,PRIMEAPE - db 0 -;Learnset - db 15,KARATE_CHOP - db 21,FURY_SWIPES - db 27,FOCUS_ENERGY - db 33,SEISMIC_TOSS - db 39,THRASH - db 0 -Mon086_EvosMoves: ; 3b4b3 (e:74b3) -;SEEL -;Evolutions - db EV_LEVEL,34,DEWGONG - db 0 -;Learnset - db 30,GROWL - db 35,AURORA_BEAM - db 40,REST - db 45,TAKE_DOWN - db 50,ICE_BEAM - db 0 -Mon050_EvosMoves: ; 3b4c2 (e:74c2) -;DIGLETT -;Evolutions - db EV_LEVEL,26,DUGTRIO - db 0 -;Learnset - db 15,GROWL - db 19,DIG - db 24,SAND_ATTACK - db 31,SLASH - db 40,EARTHQUAKE - db 0 -Mon128_EvosMoves: ; 3b4d1 (e:74d1) -;TAUROS -;Evolutions - db 0 -;Learnset - db 21,STOMP - db 28,TAIL_WHIP - db 35,LEER - db 44,RAGE - db 51,TAKE_DOWN - db 0 - -Mon157_EvosMoves: ; 3b4dd (e:74dd) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 - -Mon158_EvosMoves: ; 3b4df (e:74df) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 - -Mon159_EvosMoves: ; 3b4e1 (e:74e1) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 -Mon083_EvosMoves: ; 3b4e3 (e:74e3) -;FARFETCH_D -;Evolutions - db 0 -;Learnset - db 7,LEER - db 15,FURY_ATTACK - db 23,SWORDS_DANCE - db 31,AGILITY - db 39,SLASH - db 0 -Mon048_EvosMoves: ; 3b4ef (e:74ef) -;VENONAT -;Evolutions - db EV_LEVEL,31,VENOMOTH - db 0 -;Learnset - db 24,POISONPOWDER - db 27,LEECH_LIFE - db 30,STUN_SPORE - db 35,PSYBEAM - db 38,SLEEP_POWDER - db 43,PSYCHIC_M - db 0 -Mon149_EvosMoves: ; 3b500 (e:7500) -;DRAGONITE -;Evolutions - db 0 -;Learnset - db 10,THUNDER_WAVE - db 20,AGILITY - db 35,SLAM - db 45,DRAGON_RAGE - db 60,HYPER_BEAM - db 0 - -Mon160_EvosMoves: ; 3b50c (e:750c) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 - -Mon161_EvosMoves: ; 3b50e (e:750e) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 - -Mon162_EvosMoves: ; 3b510 (e:7510) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 -Mon084_EvosMoves: ; 3b512 (e:7512) -;DODUO -;Evolutions - db EV_LEVEL,31,DODRIO - db 0 -;Learnset - db 20,GROWL - db 24,FURY_ATTACK - db 30,DRILL_PECK - db 36,RAGE - db 40,TRI_ATTACK - db 44,AGILITY - db 0 -Mon060_EvosMoves: ; 3b523 (e:7523) -;POLIWAG -;Evolutions - db EV_LEVEL,25,POLIWHIRL - db 0 -;Learnset - db 16,HYPNOSIS - db 19,WATER_GUN - db 25,DOUBLESLAP - db 31,BODY_SLAM - db 38,AMNESIA - db 45,HYDRO_PUMP - db 0 -Mon124_EvosMoves: ; 3b534 (e:7534) -;JYNX -;Evolutions - db 0 -;Learnset - db 18,LICK - db 23,DOUBLESLAP - db 31,ICE_PUNCH - db 39,BODY_SLAM - db 47,THRASH - db 58,BLIZZARD - db 0 -Mon146_EvosMoves: ; 3b542 (e:7542) -;MOLTRES -;Evolutions - db 0 -;Learnset - db 51,LEER - db 55,AGILITY - db 60,SKY_ATTACK - db 0 -Mon144_EvosMoves: ; 3b54a (e:754a) -;ARTICUNO -;Evolutions - db 0 -;Learnset - db 51,BLIZZARD - db 55,AGILITY - db 60,MIST - db 0 -Mon145_EvosMoves: ; 3b552 (e:7552) -;ZAPDOS -;Evolutions - db 0 -;Learnset - db 51,THUNDER - db 55,AGILITY - db 60,LIGHT_SCREEN - db 0 -Mon132_EvosMoves: ; 3b55a (e:755a) -;DITTO -;Evolutions - db 0 -;Learnset - db 0 -Mon052_EvosMoves: ; 3b55c (e:755c) -;MEOWTH -;Evolutions - db EV_LEVEL,28,PERSIAN - db 0 -;Learnset - db 12,BITE - db 17,PAY_DAY - db 24,SCREECH - db 33,FURY_SWIPES - db 44,SLASH - db 0 -Mon098_EvosMoves: ; 3b56b (e:756b) -;KRABBY -;Evolutions - db EV_LEVEL,28,KINGLER - db 0 -;Learnset - db 20,VICEGRIP - db 25,GUILLOTINE - db 30,STOMP - db 35,CRABHAMMER - db 40,HARDEN - db 0 - -Mon163_EvosMoves: ; 3b57a (e:757a) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 - -Mon164_EvosMoves: ; 3b57c (e:757c) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 - -Mon165_EvosMoves: ; 3b57e (e:757e) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 -Mon037_EvosMoves: ; 3b580 (e:7580) -;VULPIX -;Evolutions - db EV_ITEM,FIRE_STONE,1,NINETALES - db 0 -;Learnset - db 16,QUICK_ATTACK - db 21,ROAR - db 28,CONFUSE_RAY - db 35,FLAMETHROWER - db 42,FIRE_SPIN - db 0 -Mon038_EvosMoves: ; 3b590 (e:7590) -;NINETALES -;Evolutions - db 0 -;Learnset - db 0 -Mon025_EvosMoves: ; 3b592 (e:7592) -;PIKACHU -;Evolutions - db EV_ITEM,THUNDER_STONE ,1,RAICHU - db 0 -;Learnset - db 9,THUNDER_WAVE - db 16,QUICK_ATTACK - db 26,SWIFT - db 33,AGILITY - db 43,THUNDER - db 0 -Mon026_EvosMoves: ; 3b5a2 (e:75a2) -;RAICHU -;Evolutions - db 0 -;Learnset - db 0 - -Mon166_EvosMoves: ; 3b5a4 (e:75a4) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 - -Mon167_EvosMoves: ; 3b5a6 (e:75a6) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 -Mon147_EvosMoves: ; 3b5a8 (e:75a8) -;DRATINI -;Evolutions - db EV_LEVEL,30,DRAGONAIR - db 0 -;Learnset - db 10,THUNDER_WAVE - db 20,AGILITY - db 30,SLAM - db 40,DRAGON_RAGE - db 50,HYPER_BEAM - db 0 -Mon148_EvosMoves: ; 3b5b7 (e:75b7) -;DRAGONAIR -;Evolutions - db EV_LEVEL,55,DRAGONITE - db 0 -;Learnset - db 10,THUNDER_WAVE - db 20,AGILITY - db 35,SLAM - db 45,DRAGON_RAGE - db 55,HYPER_BEAM - db 0 -Mon140_EvosMoves: ; 3b5c6 (e:75c6) -;KABUTO -;Evolutions - db EV_LEVEL,40,KABUTOPS - db 0 -;Learnset - db 34,ABSORB - db 39,SLASH - db 44,LEER - db 49,HYDRO_PUMP - db 0 -Mon141_EvosMoves: ; 3b5d3 (e:75d3) -;KABUTOPS -;Evolutions - db 0 -;Learnset - db 34,ABSORB - db 39,SLASH - db 46,LEER - db 53,HYDRO_PUMP - db 0 -Mon116_EvosMoves: ; 3b5dd (e:75dd) -;HORSEA -;Evolutions - db EV_LEVEL,32,SEADRA - db 0 -;Learnset - db 19,SMOKESCREEN - db 24,LEER - db 30,WATER_GUN - db 37,AGILITY - db 45,HYDRO_PUMP - db 0 -Mon117_EvosMoves: ; 3b5ec (e:75ec) -;SEADRA -;Evolutions - db 0 -;Learnset - db 19,SMOKESCREEN - db 24,LEER - db 30,WATER_GUN - db 41,AGILITY - db 52,HYDRO_PUMP - db 0 - -Mon168_EvosMoves: ; 3b5f8 (e:75f8) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 - -Mon169_EvosMoves: ; 3b5fa (e:75fa) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 -Mon027_EvosMoves: ; 3b5fc (e:75fc) -;SANDSHREW -;Evolutions - db EV_LEVEL,22,SANDSLASH - db 0 -;Learnset - db 10,SAND_ATTACK - db 17,SLASH - db 24,POISON_STING - db 31,SWIFT - db 38,FURY_SWIPES - db 0 -Mon028_EvosMoves: ; 3b60b (e:760b) -;SANDSLASH -;Evolutions - db 0 -;Learnset - db 10,SAND_ATTACK - db 17,SLASH - db 27,POISON_STING - db 36,SWIFT - db 47,FURY_SWIPES - db 0 -Mon138_EvosMoves: ; 3b617 (e:7617) -;OMANYTE -;Evolutions - db EV_LEVEL,40,OMASTAR - db 0 -;Learnset - db 34,HORN_ATTACK - db 39,LEER - db 46,SPIKE_CANNON - db 53,HYDRO_PUMP - db 0 -Mon139_EvosMoves: ; 3b624 (e:7624) -;OMASTAR -;Evolutions - db 0 -;Learnset - db 34,HORN_ATTACK - db 39,LEER - db 44,SPIKE_CANNON - db 49,HYDRO_PUMP - db 0 -Mon039_EvosMoves: ; 3b62e (e:762e) -;JIGGLYPUFF -;Evolutions - db EV_ITEM,MOON_STONE,1,WIGGLYTUFF - db 0 -;Learnset - db 9,POUND - db 14,DISABLE - db 19,DEFENSE_CURL - db 24,DOUBLESLAP - db 29,REST - db 34,BODY_SLAM - db 39,DOUBLE_EDGE - db 0 -Mon040_EvosMoves: ; 3b642 (e:7642) -;WIGGLYTUFF -;Evolutions - db 0 -;Learnset - db 0 -Mon133_EvosMoves: ; 3b644 (e:7644) -;EEVEE -;Evolutions - db EV_ITEM,FIRE_STONE,1,FLAREON - db EV_ITEM,THUNDER_STONE ,1,JOLTEON - db EV_ITEM,WATER_STONE ,1,VAPOREON - db 0 -;Learnset - db 27,QUICK_ATTACK - db 31,TAIL_WHIP - db 37,BITE - db 45,TAKE_DOWN - db 0 -Mon136_EvosMoves: ; 3b65a (e:765a) -;FLAREON -;Evolutions - db 0 -;Learnset - db 27,QUICK_ATTACK - db 31,EMBER - db 37,TAIL_WHIP - db 40,BITE - db 42,LEER - db 44,FIRE_SPIN - db 48,RAGE - db 54,FLAMETHROWER - db 0 -Mon135_EvosMoves: ; 3b66c (e:766c) -;JOLTEON -;Evolutions - db 0 -;Learnset - db 27,QUICK_ATTACK - db 31,THUNDERSHOCK - db 37,TAIL_WHIP - db 40,THUNDER_WAVE - db 42,DOUBLE_KICK - db 44,AGILITY - db 48,PIN_MISSILE - db 54,THUNDER - db 0 -Mon134_EvosMoves: ; 3b67e (e:767e) -;VAPOREON -;Evolutions - db 0 -;Learnset - db 27,QUICK_ATTACK - db 31,WATER_GUN - db 37,TAIL_WHIP - db 40,BITE - db 42,ACID_ARMOR - db 44,HAZE - db 48,MIST - db 54,HYDRO_PUMP - db 0 -Mon066_EvosMoves: ; 3b690 (e:7690) -;MACHOP -;Evolutions - db EV_LEVEL,28,MACHOKE - db 0 -;Learnset - db 20,LOW_KICK - db 25,LEER - db 32,FOCUS_ENERGY - db 39,SEISMIC_TOSS - db 46,SUBMISSION - db 0 -Mon041_EvosMoves: ; 3b69f (e:769f) -;ZUBAT -;Evolutions - db EV_LEVEL,22,GOLBAT - db 0 -;Learnset - db 10,SUPERSONIC - db 15,BITE - db 21,CONFUSE_RAY - db 28,WING_ATTACK - db 36,HAZE - db 0 -Mon023_EvosMoves: ; 3b6ae (e:76ae) -;EKANS -;Evolutions - db EV_LEVEL,22,ARBOK - db 0 -;Learnset - db 10,POISON_STING - db 17,BITE - db 24,GLARE - db 31,SCREECH - db 38,ACID - db 0 -Mon046_EvosMoves: ; 3b6bd (e:76bd) -;PARAS -;Evolutions - db EV_LEVEL,24,PARASECT - db 0 -;Learnset - db 13,STUN_SPORE - db 20,LEECH_LIFE - db 27,SPORE - db 34,SLASH - db 41,GROWTH - db 0 -Mon061_EvosMoves: ; 3b6cc (e:76cc) -;POLIWHIRL -;Evolutions - db EV_ITEM,WATER_STONE ,1,POLIWRATH - db 0 -;Learnset - db 16,HYPNOSIS - db 19,WATER_GUN - db 26,DOUBLESLAP - db 33,BODY_SLAM - db 41,AMNESIA - db 49,HYDRO_PUMP - db 0 -Mon062_EvosMoves: ; 3b6de (e:76de) -;POLIWRATH -;Evolutions - db 0 -;Learnset - db 16,HYPNOSIS - db 19,WATER_GUN - db 0 -Mon013_EvosMoves: ; 3b6e4 (e:76e4) -;WEEDLE -;Evolutions - db EV_LEVEL,7,KAKUNA - db 0 -;Learnset - db 0 -Mon014_EvosMoves: ; 3b6e9 (e:76e9) -;KAKUNA -;Evolutions - db EV_LEVEL,10,BEEDRILL - db 0 -;Learnset - db 0 -Mon015_EvosMoves: ; 3b6ee (e:76ee) -;BEEDRILL -;Evolutions - db 0 -;Learnset - db 12,FURY_ATTACK - db 16,FOCUS_ENERGY - db 20,TWINEEDLE - db 25,RAGE - db 30,PIN_MISSILE - db 35,AGILITY - db 0 - -Mon170_EvosMoves: ; 3b6fc (e:76fc) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 -Mon085_EvosMoves: ; 3b6fe (e:76fe) -;DODRIO -;Evolutions - db 0 -;Learnset - db 20,GROWL - db 24,FURY_ATTACK - db 30,DRILL_PECK - db 39,RAGE - db 45,TRI_ATTACK - db 51,AGILITY - db 0 -Mon057_EvosMoves: ; 3b70c (e:770c) -;PRIMEAPE -;Evolutions - db 0 -;Learnset - db 15,KARATE_CHOP - db 21,FURY_SWIPES - db 27,FOCUS_ENERGY - db 37,SEISMIC_TOSS - db 46,THRASH - db 0 -Mon051_EvosMoves: ; 3b718 (e:7718) -;DUGTRIO -;Evolutions - db 0 -;Learnset - db 15,GROWL - db 19,DIG - db 24,SAND_ATTACK - db 35,SLASH - db 47,EARTHQUAKE - db 0 -Mon049_EvosMoves: ; 3b724 (e:7724) -;VENOMOTH -;Evolutions - db 0 -;Learnset - db 24,POISONPOWDER - db 27,LEECH_LIFE - db 30,STUN_SPORE - db 38,PSYBEAM - db 43,SLEEP_POWDER - db 50,PSYCHIC_M - db 0 -Mon087_EvosMoves: ; 3b732 (e:7732) -;DEWGONG -;Evolutions - db 0 -;Learnset - db 30,GROWL - db 35,AURORA_BEAM - db 44,REST - db 50,TAKE_DOWN - db 56,ICE_BEAM - db 0 - -Mon171_EvosMoves: ; 3b73e (e:773e) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 - -Mon172_EvosMoves: ; 3b740 (e:7740) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 -Mon010_EvosMoves: ; 3b742 (e:7742) -;CATERPIE -;Evolutions - db EV_LEVEL,7,METAPOD - db 0 -;Learnset - db 0 -Mon011_EvosMoves: ; 3b747 (e:7747) -;METAPOD -;Evolutions - db EV_LEVEL,10,BUTTERFREE - db 0 -;Learnset - db 0 -Mon012_EvosMoves: ; 3b74c (e:774c) -;BUTTERFREE -;Evolutions - db 0 -;Learnset - db 12,CONFUSION - db 15,POISONPOWDER - db 16,STUN_SPORE - db 17,SLEEP_POWDER - db 21,SUPERSONIC - db 26,WHIRLWIND - db 32,PSYBEAM - db 0 -Mon068_EvosMoves: ; 3b75c (e:775c) -;MACHAMP -;Evolutions - db 0 -;Learnset - db 20,LOW_KICK - db 25,LEER - db 36,FOCUS_ENERGY - db 44,SEISMIC_TOSS - db 52,SUBMISSION - db 0 - -Mon173_EvosMoves: ; 3b768 (e:7768) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 -Mon055_EvosMoves: ; 3b76a (e:776a) -;GOLDUCK -;Evolutions - db 0 -;Learnset - db 28,TAIL_WHIP - db 31,DISABLE - db 39,CONFUSION - db 48,FURY_SWIPES - db 59,HYDRO_PUMP - db 0 -Mon097_EvosMoves: ; 3b776 (e:7776) -;HYPNO -;Evolutions - db 0 -;Learnset - db 12,DISABLE - db 17,CONFUSION - db 24,HEADBUTT - db 33,POISON_GAS - db 37,PSYCHIC_M - db 43,MEDITATE - db 0 -Mon042_EvosMoves: ; 3b784 (e:7784) -;GOLBAT -;Evolutions - db 0 -;Learnset - db 10,SUPERSONIC - db 15,BITE - db 21,CONFUSE_RAY - db 32,WING_ATTACK - db 43,HAZE - db 0 -Mon150_EvosMoves: ; 3b790 (e:7790) -;MEWTWO -;Evolutions - db 0 -;Learnset - db 63,BARRIER - db 66,PSYCHIC_M - db 70,RECOVER - db 75,MIST - db 81,AMNESIA - db 0 -Mon143_EvosMoves: ; 3b79c (e:779c) -;SNORLAX -;Evolutions - db 0 -;Learnset - db 35,BODY_SLAM - db 41,HARDEN - db 48,DOUBLE_EDGE - db 56,HYPER_BEAM - db 0 -Mon129_EvosMoves: ; 3b7a6 (e:77a6) -;MAGIKARP -;Evolutions - db EV_LEVEL,20,GYARADOS - db 0 -;Learnset - db 15,TACKLE - db 0 - -Mon174_EvosMoves: ; 3b7ad (e:77ad) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 - -Mon175_EvosMoves: ; 3b7af (e:77af) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 -Mon089_EvosMoves: ; 3b7b1 (e:77b1) -;MUK -;Evolutions - db 0 -;Learnset - db 30,POISON_GAS - db 33,MINIMIZE - db 37,SLUDGE - db 45,HARDEN - db 53,SCREECH - db 60,ACID_ARMOR - db 0 - -Mon176_EvosMoves: ; 3b7bf (e:77bf) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 -Mon099_EvosMoves: ; 3b7c1 (e:77c1) -;KINGLER -;Evolutions - db 0 -;Learnset - db 20,VICEGRIP - db 25,GUILLOTINE - db 34,STOMP - db 42,CRABHAMMER - db 49,HARDEN - db 0 -Mon091_EvosMoves: ; 3b7cd (e:77cd) -;CLOYSTER -;Evolutions - db 0 -;Learnset - db 50,SPIKE_CANNON - db 0 - -Mon177_EvosMoves: ; 3b7d1 (e:77d1) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 -Mon101_EvosMoves: ; 3b7d3 (e:77d3) -;ELECTRODE -;Evolutions - db 0 -;Learnset - db 17,SONICBOOM - db 22,SELFDESTRUCT - db 29,LIGHT_SCREEN - db 40,SWIFT - db 50,EXPLOSION - db 0 -Mon036_EvosMoves: ; 3b7df (e:77df) -;CLEFABLE -;Evolutions - db 0 -;Learnset - db 0 -Mon110_EvosMoves: ; 3b7e1 (e:77e1) -;WEEZING -;Evolutions - db 0 -;Learnset - db 32,SLUDGE - db 39,SMOKESCREEN - db 43,SELFDESTRUCT - db 49,HAZE - db 53,EXPLOSION - db 0 -Mon053_EvosMoves: ; 3b7ed (e:77ed) -;PERSIAN -;Evolutions - db 0 -;Learnset - db 12,BITE - db 17,PAY_DAY - db 24,SCREECH - db 37,FURY_SWIPES - db 51,SLASH - db 0 -Mon105_EvosMoves: ; 3b7f9 (e:77f9) -;MAROWAK -;Evolutions - db 0 -;Learnset - db 25,LEER - db 33,FOCUS_ENERGY - db 41,THRASH - db 48,BONEMERANG - db 55,RAGE - db 0 - -Mon178_EvosMoves: ; 3b805 (e:7805) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 -Mon093_EvosMoves: ; 3b807 (e:7807) -;HAUNTER -;Evolutions - db EV_TRADE,1,GENGAR - db 0 -;Learnset - db 29,HYPNOSIS - db 38,DREAM_EATER - db 0 -Mon063_EvosMoves: ; 3b810 (e:7810) -;ABRA -;Evolutions - db EV_LEVEL,16,KADABRA - db 0 -;Learnset - db 0 -Mon065_EvosMoves: ; 3b815 (e:7815) -;ALAKAZAM -;Evolutions - db 0 -;Learnset - db 16,CONFUSION - db 20,DISABLE - db 27,PSYBEAM - db 31,RECOVER - db 38,PSYCHIC_M - db 42,REFLECT - db 0 -Mon017_EvosMoves: ; 3b823 (e:7823) -;PIDGEOTTO -;Evolutions - db EV_LEVEL,36,PIDGEOT - db 0 -;Learnset - db 5,SAND_ATTACK - db 12,QUICK_ATTACK - db 21,WHIRLWIND - db 31,WING_ATTACK - db 40,AGILITY - db 49,MIRROR_MOVE - db 0 -Mon018_EvosMoves: ; 3b834 (e:7834) -;PIDGEOT -;Evolutions - db 0 -;Learnset - db 5,SAND_ATTACK - db 12,QUICK_ATTACK - db 21,WHIRLWIND - db 31,WING_ATTACK - db 44,AGILITY - db 54,MIRROR_MOVE - db 0 -Mon121_EvosMoves: ; 3b842 (e:7842) -;STARMIE -;Evolutions - db 0 -;Learnset - db 0 -Mon001_EvosMoves: ; 3b844 (e:7844) -;BULBASAUR -;Evolutions - db EV_LEVEL,16,IVYSAUR - db 0 -;Learnset - db 7,LEECH_SEED - db 13,VINE_WHIP - db 20,POISONPOWDER - db 27,RAZOR_LEAF - db 34,GROWTH - db 41,SLEEP_POWDER - db 48,SOLARBEAM - db 0 -Mon003_EvosMoves: ; 3b857 (e:7857) -;VENUSAUR -;Evolutions - db 0 -;Learnset - db 7,LEECH_SEED - db 13,VINE_WHIP - db 22,POISONPOWDER - db 30,RAZOR_LEAF - db 43,GROWTH - db 55,SLEEP_POWDER - db 65,SOLARBEAM - db 0 -Mon073_EvosMoves: ; 3b867 (e:7867) -;TENTACRUEL -;Evolutions - db 0 -;Learnset - db 7,SUPERSONIC - db 13,WRAP - db 18,POISON_STING - db 22,WATER_GUN - db 27,CONSTRICT - db 35,BARRIER - db 43,SCREECH - db 50,HYDRO_PUMP - db 0 - -Mon179_EvosMoves: ; 3b879 (e:7879) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 -Mon118_EvosMoves: ; 3b87b (e:787b) -;GOLDEEN -;Evolutions - db EV_LEVEL,33,SEAKING - db 0 -;Learnset - db 19,SUPERSONIC - db 24,HORN_ATTACK - db 30,FURY_ATTACK - db 37,WATERFALL - db 45,HORN_DRILL - db 54,AGILITY - db 0 -Mon119_EvosMoves: ; 3b88c (e:788c) -;SEAKING -;Evolutions - db 0 -;Learnset - db 19,SUPERSONIC - db 24,HORN_ATTACK - db 30,FURY_ATTACK - db 39,WATERFALL - db 48,HORN_DRILL - db 54,AGILITY - db 0 - -Mon180_EvosMoves: ; 3b89a (e:789a) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 - -Mon181_EvosMoves: ; 3b89c (e:789c) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 - -Mon182_EvosMoves: ; 3b89e (e:789e) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 - -Mon183_EvosMoves: ; 3b8a0 (e:78a0) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 -Mon077_EvosMoves: ; 3b8a2 (e:78a2) -;PONYTA -;Evolutions - db EV_LEVEL,40,RAPIDASH - db 0 -;Learnset - db 30,TAIL_WHIP - db 32,STOMP - db 35,GROWL - db 39,FIRE_SPIN - db 43,TAKE_DOWN - db 48,AGILITY - db 0 -Mon078_EvosMoves: ; 3b8b3 (e:78b3) -;RAPIDASH -;Evolutions - db 0 -;Learnset - db 30,TAIL_WHIP - db 32,STOMP - db 35,GROWL - db 39,FIRE_SPIN - db 47,TAKE_DOWN - db 55,AGILITY - db 0 -Mon019_EvosMoves: ; 3b8c1 (e:78c1) -;RATTATA -;Evolutions - db EV_LEVEL,20,RATICATE - db 0 -;Learnset - db 7,QUICK_ATTACK - db 14,HYPER_FANG - db 23,FOCUS_ENERGY - db 34,SUPER_FANG - db 0 -Mon020_EvosMoves: ; 3b8ce (e:78ce) -;RATICATE -;Evolutions - db 0 -;Learnset - db 7,QUICK_ATTACK - db 14,HYPER_FANG - db 27,FOCUS_ENERGY - db 41,SUPER_FANG - db 0 -Mon033_EvosMoves: ; 3b8d8 (e:78d8) -;NIDORINO -;Evolutions - db EV_ITEM,MOON_STONE,1,NIDOKING - db 0 -;Learnset - db 8,HORN_ATTACK - db 14,POISON_STING - db 23,FOCUS_ENERGY - db 32,FURY_ATTACK - db 41,HORN_DRILL - db 50,DOUBLE_KICK - db 0 -Mon030_EvosMoves: ; 3b8ea (e:78ea) -;NIDORINA -;Evolutions - db EV_ITEM,MOON_STONE,1,NIDOQUEEN - db 0 -;Learnset - db 8,SCRATCH - db 14,POISON_STING - db 23,TAIL_WHIP - db 32,BITE - db 41,FURY_SWIPES - db 50,DOUBLE_KICK - db 0 -Mon074_EvosMoves: ; 3b8fc (e:78fc) -;GEODUDE -;Evolutions - db EV_LEVEL,25,GRAVELER - db 0 -;Learnset - db 11,DEFENSE_CURL - db 16,ROCK_THROW - db 21,SELFDESTRUCT - db 26,HARDEN - db 31,EARTHQUAKE - db 36,EXPLOSION - db 0 -Mon137_EvosMoves: ; 3b90d (e:790d) -;PORYGON -;Evolutions - db 0 -;Learnset - db 23,PSYBEAM - db 28,RECOVER - db 35,AGILITY - db 42,TRI_ATTACK - db 0 -Mon142_EvosMoves: ; 3b917 (e:7917) -;AERODACTYL -;Evolutions - db 0 -;Learnset - db 33,SUPERSONIC - db 38,BITE - db 45,TAKE_DOWN - db 54,HYPER_BEAM - db 0 - -Mon184_EvosMoves: ; 3b921 (e:7921) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 -Mon081_EvosMoves: ; 3b923 (e:7923) -;MAGNEMITE -;Evolutions - db EV_LEVEL,30,MAGNETON - db 0 -;Learnset - db 21,SONICBOOM - db 25,THUNDERSHOCK - db 29,SUPERSONIC - db 35,THUNDER_WAVE - db 41,SWIFT - db 47,SCREECH - db 0 - -Mon185_EvosMoves: ; 3b934 (e:7934) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 - -Mon186_EvosMoves: ; 3b936 (e:7936) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 -Mon004_EvosMoves: ; 3b938 (e:7938) -;CHARMANDER -;Evolutions - db EV_LEVEL,16,CHARMELEON - db 0 -;Learnset - db 9,EMBER - db 15,LEER - db 22,RAGE - db 30,SLASH - db 38,FLAMETHROWER - db 46,FIRE_SPIN - db 0 -Mon007_EvosMoves: ; 3b949 (e:7949) -;SQUIRTLE -;Evolutions - db EV_LEVEL,16,WARTORTLE - db 0 -;Learnset - db 8,BUBBLE - db 15,WATER_GUN - db 22,BITE - db 28,WITHDRAW - db 35,SKULL_BASH - db 42,HYDRO_PUMP - db 0 -Mon005_EvosMoves: ; 3b95a (e:795a) -;CHARMELEON -;Evolutions - db EV_LEVEL,36,CHARIZARD - db 0 -;Learnset - db 9,EMBER - db 15,LEER - db 24,RAGE - db 33,SLASH - db 42,FLAMETHROWER - db 56,FIRE_SPIN - db 0 -Mon008_EvosMoves: ; 3b96b (e:796b) -;WARTORTLE -;Evolutions - db EV_LEVEL,36,BLASTOISE - db 0 -;Learnset - db 8,BUBBLE - db 15,WATER_GUN - db 24,BITE - db 31,WITHDRAW - db 39,SKULL_BASH - db 47,HYDRO_PUMP - db 0 -Mon006_EvosMoves: ; 3b97c (e:797c) -;CHARIZARD -;Evolutions - db 0 -;Learnset - db 9,EMBER - db 15,LEER - db 24,RAGE - db 36,SLASH - db 46,FLAMETHROWER - db 55,FIRE_SPIN - db 0 - -Mon187_EvosMoves: ; 3b98a (e:798a) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 - -Mon188_EvosMoves: ; 3b98c (e:798c) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 - -Mon189_EvosMoves: ; 3b98e (e:798e) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 - -Mon190_EvosMoves: ; 3b990 (e:7990) -;MISSINGNO -;Evolutions - db 0 -;Learnset - db 0 -Mon043_EvosMoves: ; 3b992 (e:7992) -;ODDISH -;Evolutions - db EV_LEVEL,21,GLOOM - db 0 -;Learnset - db 15,POISONPOWDER - db 17,STUN_SPORE - db 19,SLEEP_POWDER - db 24,ACID - db 33,PETAL_DANCE - db 46,SOLARBEAM - db 0 -Mon044_EvosMoves: ; 3b9a3 (e:79a3) -;GLOOM -;Evolutions - db EV_ITEM,LEAF_STONE ,1,VILEPLUME - db 0 -;Learnset - db 15,POISONPOWDER - db 17,STUN_SPORE - db 19,SLEEP_POWDER - db 28,ACID - db 38,PETAL_DANCE - db 52,SOLARBEAM - db 0 -Mon045_EvosMoves: ; 3b9b5 (e:79b5) -;VILEPLUME -;Evolutions - db 0 -;Learnset - db 15,POISONPOWDER - db 17,STUN_SPORE - db 19,SLEEP_POWDER - db 0 -Mon069_EvosMoves: ; 3b9bd (e:79bd) -;BELLSPROUT -;Evolutions - db EV_LEVEL,21,WEEPINBELL - db 0 -;Learnset - db 13,WRAP - db 15,POISONPOWDER - db 18,SLEEP_POWDER - db 21,STUN_SPORE - db 26,ACID - db 33,RAZOR_LEAF - db 42,SLAM - db 0 -Mon070_EvosMoves: ; 3b9d0 (e:79d0) -;WEEPINBELL -;Evolutions - db EV_ITEM,LEAF_STONE ,1,VICTREEBEL - db 0 -;Learnset - db 13,WRAP - db 15,POISONPOWDER - db 18,SLEEP_POWDER - db 23,STUN_SPORE - db 29,ACID - db 38,RAZOR_LEAF - db 49,SLAM - db 0 -Mon071_EvosMoves: ; 3b9e4 (e:79e4) -;VICTREEBEL -;Evolutions - db 0 -;Learnset - db 13,WRAP - db 15,POISONPOWDER - db 18,SLEEP_POWDER - db 0 +INCLUDE "data/evos_moves.asm" Func_3b9ec: ; 3b9ec (e:79ec) ld a, [H_WHOSETURN] ; $fff3 @@ -61466,95 +47712,7 @@ AIGetTypeEffectiveness: ; 3e449 (f:6449) ld [$d11e],a ; store damage multiplier ret -TypeEffects: ; 3e474 (f:6474) -; format: attacking type, defending type, damage multiplier -; the multiplier is a (decimal) fixed-point number: -; 20 is ×2.0 -; 05 is ×0.5 -; 00 is ×0 - db WATER,FIRE,20 - db FIRE,GRASS,20 - db FIRE,ICE,20 - db GRASS,WATER,20 - db ELECTRIC,WATER,20 - db WATER,ROCK,20 - db GROUND,FLYING,00 - db WATER,WATER,05 - db FIRE,FIRE,05 - db ELECTRIC,ELECTRIC,05 - db ICE,ICE,05 - db GRASS,GRASS,05 - db PSYCHIC,PSYCHIC,05 - db FIRE,WATER,05 - db GRASS,FIRE,05 - db WATER,GRASS,05 - db ELECTRIC,GRASS,05 - db NORMAL,ROCK,05 - db NORMAL,GHOST,00 - db GHOST,GHOST,20 - db FIRE,BUG,20 - db FIRE,ROCK,05 - db WATER,GROUND,20 - db ELECTRIC,GROUND,00 - db ELECTRIC,FLYING,20 - db GRASS,GROUND,20 - db GRASS,BUG,05 - db GRASS,POISON,05 - db GRASS,ROCK,20 - db GRASS,FLYING,05 - db ICE,WATER,05 - db ICE,GRASS,20 - db ICE,GROUND,20 - db ICE,FLYING,20 - db FIGHTING,NORMAL,20 - db FIGHTING,POISON,05 - db FIGHTING,FLYING,05 - db FIGHTING,PSYCHIC,05 - db FIGHTING,BUG,05 - db FIGHTING,ROCK,20 - db FIGHTING,ICE,20 - db FIGHTING,GHOST,00 - db POISON,GRASS,20 - db POISON,POISON,05 - db POISON,GROUND,05 - db POISON,BUG,20 - db POISON,ROCK,05 - db POISON,GHOST,05 - db GROUND,FIRE,20 - db GROUND,ELECTRIC,20 - db GROUND,GRASS,05 - db GROUND,BUG,05 - db GROUND,ROCK,20 - db GROUND,POISON,20 - db FLYING,ELECTRIC,05 - db FLYING,FIGHTING,20 - db FLYING,BUG,20 - db FLYING,GRASS,20 - db FLYING,ROCK,05 - db PSYCHIC,FIGHTING,20 - db PSYCHIC,POISON,20 - db BUG,FIRE,05 - db BUG,GRASS,20 - db BUG,FIGHTING,05 - db BUG,FLYING,05 - db BUG,PSYCHIC,20 - db BUG,GHOST,05 - db BUG,POISON,20 - db ROCK,FIRE,20 - db ROCK,FIGHTING,05 - db ROCK,GROUND,05 - db ROCK,FLYING,20 - db ROCK,BUG,20 - db ROCK,ICE,20 - db GHOST,NORMAL,00 - db GHOST,PSYCHIC,00 - db FIRE,DRAGON,05 - db WATER,DRAGON,05 - db ELECTRIC,DRAGON,05 - db GRASS,DRAGON,05 - db ICE,DRAGON,20 - db DRAGON,DRAGON,20 - db $FF +INCLUDE "data/type_effects.asm" ; some tests that need to pass for a move to hit MoveHitTest: ; 3e56b (f:656b) @@ -65473,1265 +51631,7 @@ DrawTileLine: ; 40474 (10:4474) pop bc ret -PokedexEntryPointers: ; 4047e (10:447e) - dw RhydonDexEntry - dw KangaskhanDexEntry - dw NidoranMDexEntry - dw ClefairyDexEntry - dw SpearowDexEntry - dw VoltorbDexEntry - dw NidokingDexEntry - dw SlowbroDexEntry - dw IvysaurDexEntry - dw ExeggutorDexEntry - dw LickitungDexEntry - dw ExeggcuteDexEntry - dw GrimerDexEntry - dw GengarDexEntry - dw NidoranFDexEntry - dw NidoqueenDexEntry - dw CuboneDexEntry - dw RhyhornDexEntry - dw LaprasDexEntry - dw ArcanineDexEntry - dw MewDexEntry - dw GyaradosDexEntry - dw ShellderDexEntry - dw TentacoolDexEntry - dw GastlyDexEntry - dw ScytherDexEntry - dw StaryuDexEntry - dw BlastoiseDexEntry - dw PinsirDexEntry - dw TangelaDexEntry - dw MissingNoDexEntry - dw MissingNoDexEntry - dw GrowlitheDexEntry - dw OnixDexEntry - dw FearowDexEntry - dw PidgeyDexEntry - dw SlowpokeDexEntry - dw KadabraDexEntry - dw GravelerDexEntry - dw ChanseyDexEntry - dw MachokeDexEntry - dw MrMimeDexEntry - dw HitmonleeDexEntry - dw HitmonchanDexEntry - dw ArbokDexEntry - dw ParasectDexEntry - dw PsyduckDexEntry - dw DrowzeeDexEntry - dw GolemDexEntry - dw MissingNoDexEntry - dw MagmarDexEntry - dw MissingNoDexEntry - dw ElectabuzzDexEntry - dw MagnetonDexEntry - dw KoffingDexEntry - dw MissingNoDexEntry - dw MankeyDexEntry - dw SeelDexEntry - dw DiglettDexEntry - dw TaurosDexEntry - dw MissingNoDexEntry - dw MissingNoDexEntry - dw MissingNoDexEntry - dw FarfetchdDexEntry - dw VenonatDexEntry - dw DragoniteDexEntry - dw MissingNoDexEntry - dw MissingNoDexEntry - dw MissingNoDexEntry - dw DoduoDexEntry - dw PoliwagDexEntry - dw JynxDexEntry - dw MoltresDexEntry - dw ArticunoDexEntry - dw ZapdosDexEntry - dw DittoDexEntry - dw MeowthDexEntry - dw KrabbyDexEntry - dw MissingNoDexEntry - dw MissingNoDexEntry - dw MissingNoDexEntry - dw VulpixDexEntry - dw NinetalesDexEntry - dw PikachuDexEntry - dw RaichuDexEntry - dw MissingNoDexEntry - dw MissingNoDexEntry - dw DratiniDexEntry - dw DragonairDexEntry - dw KabutoDexEntry - dw KabutopsDexEntry - dw HorseaDexEntry - dw SeadraDexEntry - dw MissingNoDexEntry - dw MissingNoDexEntry - dw SandshrewDexEntry - dw SandslashDexEntry - dw OmanyteDexEntry - dw OmastarDexEntry - dw JigglypuffDexEntry - dw WigglytuffDexEntry - dw EeveeDexEntry - dw FlareonDexEntry - dw JolteonDexEntry - dw VaporeonDexEntry - dw MachopDexEntry - dw ZubatDexEntry - dw EkansDexEntry - dw ParasDexEntry - dw PoliwhirlDexEntry - dw PoliwrathDexEntry - dw WeedleDexEntry - dw KakunaDexEntry - dw BeedrillDexEntry - dw MissingNoDexEntry - dw DodrioDexEntry - dw PrimeapeDexEntry - dw DugtrioDexEntry - dw VenomothDexEntry - dw DewgongDexEntry - dw MissingNoDexEntry - dw MissingNoDexEntry - dw CaterpieDexEntry - dw MetapodDexEntry - dw ButterfreeDexEntry - dw MachampDexEntry - dw MissingNoDexEntry - dw GolduckDexEntry - dw HypnoDexEntry - dw GolbatDexEntry - dw MewtwoDexEntry - dw SnorlaxDexEntry - dw MagikarpDexEntry - dw MissingNoDexEntry - dw MissingNoDexEntry - dw MukDexEntry - dw MissingNoDexEntry - dw KinglerDexEntry - dw CloysterDexEntry - dw MissingNoDexEntry - dw ElectrodeDexEntry - dw ClefableDexEntry - dw WeezingDexEntry - dw PersianDexEntry - dw MarowakDexEntry - dw MissingNoDexEntry - dw HaunterDexEntry - dw AbraDexEntry - dw AlakazamDexEntry - dw PidgeottoDexEntry - dw PidgeotDexEntry - dw StarmieDexEntry - dw BulbasaurDexEntry - dw VenusaurDexEntry - dw TentacruelDexEntry - dw MissingNoDexEntry - dw GoldeenDexEntry - dw SeakingDexEntry - dw MissingNoDexEntry - dw MissingNoDexEntry - dw MissingNoDexEntry - dw MissingNoDexEntry - dw PonytaDexEntry - dw RapidashDexEntry - dw RattataDexEntry - dw RaticateDexEntry - dw NidorinoDexEntry - dw NidorinaDexEntry - dw GeodudeDexEntry - dw PorygonDexEntry - dw AerodactylDexEntry - dw MissingNoDexEntry - dw MagnemiteDexEntry - dw MissingNoDexEntry - dw MissingNoDexEntry - dw CharmanderDexEntry - dw SquirtleDexEntry - dw CharmeleonDexEntry - dw WartortleDexEntry - dw CharizardDexEntry - dw MissingNoDexEntry - dw MissingNoDexEntry - dw MissingNoDexEntry - dw MissingNoDexEntry - dw OddishDexEntry - dw GloomDexEntry - dw VileplumeDexEntry - dw BellsproutDexEntry - dw WeepinbellDexEntry - dw VictreebelDexEntry - -; string: species name -; height in feet, inches -; weight in pounds -; text entry - -RhydonDexEntry: ; 405fa (10:45fa) - db "DRILL@" - db 6,3 - dw 2650 - TX_FAR _RhydonDexEntry - db "@" - -KangaskhanDexEntry: ; 40609 (10:4609) - db "PARENT@" - db 7,3 - dw 1760 - TX_FAR _KangaskhanDexEntry - db "@" - -NidoranMDexEntry: ; 40619 (10:4619) - db "POISON PIN@" - db 1,8 - dw 200 - TX_FAR _NidoranMDexEntry - db "@" - -ClefairyDexEntry: ; 4062d (10:462d) - db "FAIRY@" - db 2,0 - dw 170 - TX_FAR _ClefairyDexEntry - db "@" - -SpearowDexEntry: ; 4063c (10:463c) - db "TINY BIRD@" - db 1,0 - dw 40 - TX_FAR _SpearowDexEntry - db "@" - -VoltorbDexEntry: ; 4064f (10:464f) - db "BALL@" - db 1,8 - dw 230 - TX_FAR _VoltorbDexEntry - db "@" - -NidokingDexEntry: ; 4065d (10:465d) - db "DRILL@" - db 4,7 - dw 1370 - TX_FAR _NidokingDexEntry - db "@" - -SlowbroDexEntry: ; 4066c (10:466c) - db "HERMITCRAB@" - db 5,3 - dw 1730 - TX_FAR _SlowbroDexEntry - db "@" - -IvysaurDexEntry: ; 40680 (10:4680) - db "SEED@" - db 3,3 - dw 290 - TX_FAR _IvysaurDexEntry - db "@" - -ExeggutorDexEntry: ; 4068e (10:468e) - db "COCONUT@" - db 6,7 - dw 2650 - TX_FAR _ExeggutorDexEntry - db "@" - -LickitungDexEntry: ; 4069f (10:469f) - db "LICKING@" - db 3,11 - dw 1440 - TX_FAR _LickitungDexEntry - db "@" - -ExeggcuteDexEntry: ; 406b0 (10:46b0) - db "EGG@" - db 1,4 - dw 60 - TX_FAR _ExeggcuteDexEntry - db "@" - -GrimerDexEntry: ; 406bd (10:46bd) - db "SLUDGE@" - db 2,11 - dw 660 - TX_FAR _GrimerDexEntry - db "@" - -GengarDexEntry: ; 406cd (10:46cd) - db "SHADOW@" - db 4,11 - dw 890 - TX_FAR _GengarDexEntry - db "@" - -NidoranFDexEntry: ; 406dd (10:46dd) - db "POISON PIN@" - db 1,4 - dw 150 - TX_FAR _NidoranFDexEntry - db "@" - -NidoqueenDexEntry: ; 406f1 (10:46f1) - db "DRILL@" - db 4,3 - dw 1320 - TX_FAR _NidoqueenDexEntry - db "@" - -CuboneDexEntry: ; 40700 (10:4700) - db "LONELY@" - db 1,4 - dw 140 - TX_FAR _CuboneDexEntry - db "@" - -RhyhornDexEntry: ; 40710 (10:4710) - db "SPIKES@" - db 3,3 - dw 2540 - TX_FAR _RhyhornDexEntry - db "@" - -LaprasDexEntry: ; 40720 (10:4720) - db "TRANSPORT@" - db 8,2 - dw 4850 - TX_FAR _LaprasDexEntry - db "@" - -ArcanineDexEntry: ; 40733 (10:4733) - db "LEGENDARY@" - db 6,3 - dw 3420 - TX_FAR _ArcanineDexEntry - db "@" - -MewDexEntry: ; 40746 (10:4746) - db "NEW SPECIE@" - db 1,4 - dw 90 - TX_FAR _MewDexEntry - db "@" - -GyaradosDexEntry: ; 4075a (10:475a) - db "ATROCIOUS@" - db 21,4 - dw 5180 - TX_FAR _GyaradosDexEntry - db "@" - -ShellderDexEntry: ; 4076d (10:476d) - db "BIVALVE@" - db 1,0 - dw 90 - TX_FAR _ShellderDexEntry - db "@" - -TentacoolDexEntry: ; 4077e (10:477e) - db "JELLYFISH@" - db 2,11 - dw 1000 - TX_FAR _TentacoolDexEntry - db "@" - -GastlyDexEntry: ; 40791 (10:4791) - db "GAS@" - db 4,3 - dw 2 - TX_FAR _GastlyDexEntry - db "@" - -ScytherDexEntry: ; 4079e (10:479e) - db "MANTIS@" - db 4,11 - dw 1230 - TX_FAR _ScytherDexEntry - db "@" - -StaryuDexEntry: ; 407ae (10:47ae) - db "STARSHAPE@" - db 2,7 - dw 760 - TX_FAR _StaryuDexEntry - db "@" - -BlastoiseDexEntry: ; 407c1 (10:47c1) - db "SHELLFISH@" - db 5,3 - dw 1890 - TX_FAR _BlastoiseDexEntry - db "@" - -PinsirDexEntry: ; 407d4 (10:47d4) - db "STAGBEETLE@" - db 4,11 - dw 1210 - TX_FAR _PinsirDexEntry - db "@" - -TangelaDexEntry: ; 407e8 (10:47e8) - db "VINE@" - db 3,3 - dw 770 - TX_FAR _TangelaDexEntry - db "@" - -GrowlitheDexEntry: ; 407f6 (10:47f6) - db "PUPPY@" - db 2,4 - dw 420 - TX_FAR _GrowlitheDexEntry - db "@" - -OnixDexEntry: ; 40805 (10:4805) - db "ROCK SNAKE@" - db 28,10 - dw 4630 - TX_FAR _OnixDexEntry - db "@" - -FearowDexEntry: ; 40819 (10:4819) - db "BEAK@" - db 3,11 - dw 840 - TX_FAR _FearowDexEntry - db "@" - -PidgeyDexEntry: ; 40827 (10:4827) - db "TINY BIRD@" - db 1,0 - dw 40 - TX_FAR _PidgeyDexEntry - db "@" - -SlowpokeDexEntry: ; 4083a (10:483a) - db "DOPEY@" - db 3,11 - dw 790 - TX_FAR _SlowpokeDexEntry - db "@" - -KadabraDexEntry: ; 40849 (10:4849) - db "PSI@" - db 4,3 - dw 1250 - TX_FAR _KadabraDexEntry - db "@" - -GravelerDexEntry: ; 40856 (10:4856) - db "ROCK@" - db 3,3 - dw 2320 - TX_FAR _GravelerDexEntry - db "@" - -ChanseyDexEntry: ; 40864 (10:4864) - db "EGG@" - db 3,7 - dw 760 - TX_FAR _ChanseyDexEntry - db "@" - -MachokeDexEntry: ; 40871 (10:4871) - db "SUPERPOWER@" - db 4,11 - dw 1550 - TX_FAR _MachokeDexEntry - db "@" - -MrMimeDexEntry: ; 40885 (10:4885) - db "BARRIER@" - db 4,3 - dw 1200 - TX_FAR _MrMimeDexEntry - db "@" - -HitmonleeDexEntry: ; 40896 (10:4896) - db "KICKING@" - db 4,11 - dw 1100 - TX_FAR _HitmonleeDexEntry - db "@" - -HitmonchanDexEntry: ; 408a7 (10:48a7) - db "PUNCHING@" - db 4,7 - dw 1110 - TX_FAR _HitmonchanDexEntry - db "@" - -ArbokDexEntry: ; 408b9 (10:48b9) - db "COBRA@" - db 11,6 - dw 1430 - TX_FAR _ArbokDexEntry - db "@" - -ParasectDexEntry: ; 408c8 (10:48c8) - db "MUSHROOM@" - db 3,3 - dw 650 - TX_FAR _ParasectDexEntry - db "@" - -PsyduckDexEntry: ; 408da (10:48da) - db "DUCK@" - db 2,7 - dw 430 - TX_FAR _PsyduckDexEntry - db "@" - -DrowzeeDexEntry: ; 408e8 (10:48e8) - db "HYPNOSIS@" - db 3,3 - dw 710 - TX_FAR _DrowzeeDexEntry - db "@" - -GolemDexEntry: ; 408fa (10:48fa) - db "MEGATON@" - db 4,7 - dw 6620 - TX_FAR _GolemDexEntry - db "@" - -MagmarDexEntry: ; 4090b (10:490b) - db "SPITFIRE@" - db 4,3 - dw 980 - TX_FAR _MagmarDexEntry - db "@" - -ElectabuzzDexEntry: ; 4091d (10:491d) - db "ELECTRIC@" - db 3,7 - dw 660 - TX_FAR _ElectabuzzDexEntry - db "@" - -MagnetonDexEntry: ; 4092f (10:492f) - db "MAGNET@" - db 3,3 - dw 1320 - TX_FAR _MagnetonDexEntry - db "@" - -KoffingDexEntry: ; 4093f (10:493f) - db "POISON GAS@" - db 2,0 - dw 20 - TX_FAR _KoffingDexEntry - db "@" - -MankeyDexEntry: ; 40953 (10:4953) - db "PIG MONKEY@" - db 1,8 - dw 620 - TX_FAR _MankeyDexEntry - db "@" - -SeelDexEntry: ; 40967 (10:4967) - db "SEA LION@" - db 3,7 - dw 1980 - TX_FAR _SeelDexEntry - db "@" - -DiglettDexEntry: ; 40979 (10:4979) - db "MOLE@" - db 0,8 - dw 20 - TX_FAR _DiglettDexEntry - db "@" - -TaurosDexEntry: ; 40987 (10:4987) - db "WILD BULL@" - db 4,7 - dw 1950 - TX_FAR _TaurosDexEntry - db "@" - -FarfetchdDexEntry: ; 4099a (10:499a) - db "WILD DUCK@" - db 2,7 - dw 330 - TX_FAR _FarfetchdDexEntry - db "@" - -VenonatDexEntry: ; 409ad (10:49ad) - db "INSECT@" - db 3,3 - dw 660 - TX_FAR _VenonatDexEntry - db "@" - -DragoniteDexEntry: ; 409bd (10:49bd) - db "DRAGON@" - db 7,3 - dw 4630 - TX_FAR _DragoniteDexEntry - db "@" - -DoduoDexEntry: ; 409cd (10:49cd) - db "TWIN BIRD@" - db 4,7 - dw 860 - TX_FAR _DoduoDexEntry - db "@" - -PoliwagDexEntry: ; 409e0 (10:49e0) - db "TADPOLE@" - db 2,0 - dw 270 - TX_FAR _PoliwagDexEntry - db "@" - -JynxDexEntry: ; 409f1 (10:49f1) - db "HUMANSHAPE@" - db 4,7 - dw 900 - TX_FAR _JynxDexEntry - db "@" - -MoltresDexEntry: ; 40a05 (10:4a05) - db "FLAME@" - db 6,7 - dw 1320 - TX_FAR _MoltresDexEntry - db "@" - -ArticunoDexEntry: ; 40a14 (10:4a14) - db "FREEZE@" - db 5,7 - dw 1220 - TX_FAR _ArticunoDexEntry - db "@" - -ZapdosDexEntry: ; 40a24 (10:4a24) - db "ELECTRIC@" - db 5,3 - dw 1160 - TX_FAR _ZapdosDexEntry - db "@" - -DittoDexEntry: ; 40a36 (10:4a36) - db "TRANSFORM@" - db 1,0 - dw 90 - TX_FAR _DittoDexEntry - db "@" - -MeowthDexEntry: ; 40a49 (10:4a49) - db "SCRATCHCAT@" - db 1,4 - dw 90 - TX_FAR _MeowthDexEntry - db "@" - -KrabbyDexEntry: ; 40a5d (10:4a5d) - db "RIVER CRAB@" - db 1,4 - dw 140 - TX_FAR _KrabbyDexEntry - db "@" - -VulpixDexEntry: ; 40a71 (10:4a71) - db "FOX@" - db 2,0 - dw 220 - TX_FAR _VulpixDexEntry - db "@" - -NinetalesDexEntry: ; 40a7e (10:4a7e) - db "FOX@" - db 3,7 - dw 440 - TX_FAR _NinetalesDexEntry - db "@" - -PikachuDexEntry: ; 40a8b (10:4a8b) - db "MOUSE@" - db 1,4 - dw 130 - TX_FAR _PikachuDexEntry - db "@" - -RaichuDexEntry: ; 40a9a (10:4a9a) - db "MOUSE@" - db 2,7 - dw 660 - TX_FAR _RaichuDexEntry - db "@" - -DratiniDexEntry: ; 40aa9 (10:4aa9) - db "DRAGON@" - db 5,11 - dw 70 - TX_FAR _DratiniDexEntry - db "@" - -DragonairDexEntry: ; 40ab9 (10:4ab9) - db "DRAGON@" - db 13,1 - dw 360 - TX_FAR _DragonairDexEntry - db "@" - -KabutoDexEntry: ; 40ac9 (10:4ac9) - db "SHELLFISH@" - db 1,8 - dw 250 - TX_FAR _KabutoDexEntry - db "@" - -KabutopsDexEntry: ; 40adc (10:4adc) - db "SHELLFISH@" - db 4,3 - dw 890 - TX_FAR _KabutopsDexEntry - db "@" - -HorseaDexEntry: ; 40aef (10:4aef) - db "DRAGON@" - db 1,4 - dw 180 - TX_FAR _HorseaDexEntry - db "@" - -SeadraDexEntry: ; 40aff (10:4aff) - db "DRAGON@" - db 3,11 - dw 550 - TX_FAR _SeadraDexEntry - db "@" - -SandshrewDexEntry: ; 40b0f (10:4b0f) - db "MOUSE@" - db 2,0 - dw 260 - TX_FAR _SandshrewDexEntry - db "@" - -SandslashDexEntry: ; 40b1e (10:4b1e) - db "MOUSE@" - db 3,3 - dw 650 - TX_FAR _SandslashDexEntry - db "@" - -OmanyteDexEntry: ; 40b2d (10:4b2d) - db "SPIRAL@" - db 1,4 - dw 170 - TX_FAR _OmanyteDexEntry - db "@" - -OmastarDexEntry: ; 40b3d (10:4b3d) - db "SPIRAL@" - db 3,3 - dw 770 - TX_FAR _OmastarDexEntry - db "@" - -JigglypuffDexEntry: ; 40b4d (10:4b4d) - db "BALLOON@" - db 1,8 - dw 120 - TX_FAR _JigglypuffDexEntry - db "@" - -WigglytuffDexEntry: ; 40b5e (10:4b5e) - db "BALLOON@" - db 3,3 - dw 260 - TX_FAR _WigglytuffDexEntry - db "@" - -EeveeDexEntry: ; 40b6f (10:4b6f) - db "EVOLUTION@" - db 1,0 - dw 140 - TX_FAR _EeveeDexEntry - db "@" - -FlareonDexEntry: ; 40b82 (10:4b82) - db "FLAME@" - db 2,11 - dw 550 - TX_FAR _FlareonDexEntry - db "@" - -JolteonDexEntry: ; 40b91 (10:4b91) - db "LIGHTNING@" - db 2,7 - dw 540 - TX_FAR _JolteonDexEntry - db "@" - -VaporeonDexEntry: ; 40ba4 (10:4ba4) - db "BUBBLE JET@" - db 3,3 - dw 640 - TX_FAR _VaporeonDexEntry - db "@" - -MachopDexEntry: ; 40bb8 (10:4bb8) - db "SUPERPOWER@" - db 2,7 - dw 430 - TX_FAR _MachopDexEntry - db "@" - -ZubatDexEntry: ; 40bcc (10:4bcc) - db "BAT@" - db 2,7 - dw 170 - TX_FAR _ZubatDexEntry - db "@" - -EkansDexEntry: ; 40bd9 (10:4bd9) - db "SNAKE@" - db 6,7 - dw 150 - TX_FAR _EkansDexEntry - db "@" - -ParasDexEntry: ; 40be8 (10:4be8) - db "MUSHROOM@" - db 1,0 - dw 120 - TX_FAR _ParasDexEntry - db "@" - -PoliwhirlDexEntry: ; 40bfa (10:4bfa) - db "TADPOLE@" - db 3,3 - dw 440 - TX_FAR _PoliwhirlDexEntry - db "@" - -PoliwrathDexEntry: ; 40c0b (10:4c0b) - db "TADPOLE@" - db 4,3 - dw 1190 - TX_FAR _PoliwrathDexEntry - db "@" - -WeedleDexEntry: ; 40c1c (10:4c1c) - db "HAIRY BUG@" - db 1,0 - dw 70 - TX_FAR _WeedleDexEntry - db "@" - -KakunaDexEntry: ; 40c2f (10:4c2f) - db "COCOON@" - db 2,0 - dw 220 - TX_FAR _KakunaDexEntry - db "@" - -BeedrillDexEntry: ; 40c3f (10:4c3f) - db "POISON BEE@" - db 3,3 - dw 650 - TX_FAR _BeedrillDexEntry - db "@" - -DodrioDexEntry: ; 40c53 (10:4c53) - db "TRIPLEBIRD@" - db 5,11 - dw 1880 - TX_FAR _DodrioDexEntry - db "@" - -PrimeapeDexEntry: ; 40c67 (10:4c67) - db "PIG MONKEY@" - db 3,3 - dw 710 - TX_FAR _PrimeapeDexEntry - db "@" - -DugtrioDexEntry: ; 40c7b (10:4c7b) - db "MOLE@" - db 2,4 - dw 730 - TX_FAR _DugtrioDexEntry - db "@" - -VenomothDexEntry: ; 40c89 (10:4c89) - db "POISONMOTH@" - db 4,11 - dw 280 - TX_FAR _VenomothDexEntry - db "@" - -DewgongDexEntry: ; 40c9d (10:4c9d) - db "SEA LION@" - db 5,7 - dw 2650 - TX_FAR _DewgongDexEntry - db "@" - -CaterpieDexEntry: ; 40caf (10:4caf) - db "WORM@" - db 1,0 - dw 60 - TX_FAR _CaterpieDexEntry - db "@" - -MetapodDexEntry: ; 40cbd (10:4cbd) - db "COCOON@" - db 2,4 - dw 220 - TX_FAR _MetapodDexEntry - db "@" - -ButterfreeDexEntry: ; 40ccd (10:4ccd) - db "BUTTERFLY@" - db 3,7 - dw 710 - TX_FAR _ButterfreeDexEntry - db "@" - -MachampDexEntry: ; 40ce0 (10:4ce0) - db "SUPERPOWER@" - db 5,3 - dw 2870 - TX_FAR _MachampDexEntry - db "@" - -GolduckDexEntry: ; 40cf4 (10:4cf4) - db "DUCK@" - db 5,7 - dw 1690 - TX_FAR _GolduckDexEntry - db "@" - -HypnoDexEntry: ; 40d02 (10:4d02) - db "HYPNOSIS@" - db 5,3 - dw 1670 - TX_FAR _HypnoDexEntry - db "@" - -GolbatDexEntry: ; 40d14 (10:4d14) - db "BAT@" - db 5,3 - dw 1210 - TX_FAR _GolbatDexEntry - db "@" - -MewtwoDexEntry: ; 40d21 (10:4d21) - db "GENETIC@" - db 6,7 - dw 2690 - TX_FAR _MewtwoDexEntry - db "@" - -SnorlaxDexEntry: ; 40d32 (10:4d32) - db "SLEEPING@" - db 6,11 - dw 10140 - TX_FAR _SnorlaxDexEntry - db "@" - -MagikarpDexEntry: ; 40d44 (10:4d44) - db "FISH@" - db 2,11 - dw 220 - TX_FAR _MagikarpDexEntry - db "@" - -MukDexEntry: ; 40d52 (10:4d52) - db "SLUDGE@" - db 3,11 - dw 660 - TX_FAR _MukDexEntry - db "@" - -KinglerDexEntry: ; 40d62 (10:4d62) - db "PINCER@" - db 4,3 - dw 1320 - TX_FAR _KinglerDexEntry - db "@" - -CloysterDexEntry: ; 40d72 (10:4d72) - db "BIVALVE@" - db 4,11 - dw 2920 - TX_FAR _CloysterDexEntry - db "@" - -ElectrodeDexEntry: ; 40d83 (10:4d83) - db "BALL@" - db 3,11 - dw 1470 - TX_FAR _ElectrodeDexEntry - db "@" - -ClefableDexEntry: ; 40d91 (10:4d91) - db "FAIRY@" - db 4,3 - dw 880 - TX_FAR _ClefableDexEntry - db "@" - -WeezingDexEntry: ; 40da0 (10:4da0) - db "POISON GAS@" - db 3,11 - dw 210 - TX_FAR _WeezingDexEntry - db "@" - -PersianDexEntry: ; 40db4 (10:4db4) - db "CLASSY CAT@" - db 3,3 - dw 710 - TX_FAR _PersianDexEntry - db "@" - -MarowakDexEntry: ; 40dc8 (10:4dc8) - db "BONEKEEPER@" - db 3,3 - dw 990 - TX_FAR _MarowakDexEntry - db "@" - -HaunterDexEntry: ; 40ddc (10:4ddc) - db "GAS@" - db 5,3 - dw 2 - TX_FAR _HaunterDexEntry - db "@" - -AbraDexEntry: ; 40de9 (10:4de9) - db "PSI@" - db 2,11 - dw 430 - TX_FAR _AbraDexEntry - db "@" - -AlakazamDexEntry: ; 40df6 (10:4df6) - db "PSI@" - db 4,11 - dw 1060 - TX_FAR _AlakazamDexEntry - db "@" - -PidgeottoDexEntry: ; 40e03 (10:4e03) - db "BIRD@" - db 3,7 - dw 660 - TX_FAR _PidgeottoDexEntry - db "@" - -PidgeotDexEntry: ; 40e11 (10:4e11) - db "BIRD@" - db 4,11 - dw 870 - TX_FAR _PidgeotDexEntry - db "@" - -StarmieDexEntry: ; 40e1f (10:4e1f) - db "MYSTERIOUS@" - db 3,7 - dw 1760 - TX_FAR _StarmieDexEntry - db "@" - -BulbasaurDexEntry: ; 40e33 (10:4e33) - db "SEED@" - db 2,4 - dw 150 - TX_FAR _BulbasaurDexEntry - db "@" - -VenusaurDexEntry: ; 40e41 (10:4e41) - db "SEED@" - db 6,7 - dw 2210 - TX_FAR _VenusaurDexEntry - db "@" - -TentacruelDexEntry: ; 40e4f (10:4e4f) - db "JELLYFISH@" - db 5,3 - dw 1210 - TX_FAR _TentacruelDexEntry - db "@" - -GoldeenDexEntry: ; 40e62 (10:4e62) - db "GOLDFISH@" - db 2,0 - dw 330 - TX_FAR _GoldeenDexEntry - db "@" - -SeakingDexEntry: ; 40e74 (10:4e74) - db "GOLDFISH@" - db 4,3 - dw 860 - TX_FAR _SeakingDexEntry - db "@" - -PonytaDexEntry: ; 40e86 (10:4e86) - db "FIRE HORSE@" - db 3,3 - dw 660 - TX_FAR _PonytaDexEntry - db "@" - -RapidashDexEntry: ; 40e9a (10:4e9a) - db "FIRE HORSE@" - db 5,7 - dw 2090 - TX_FAR _RapidashDexEntry - db "@" - -RattataDexEntry: ; 40eae (10:4eae) - db "RAT@" - db 1,0 - dw 80 - TX_FAR _RattataDexEntry - db "@" - -RaticateDexEntry: ; 40ebb (10:4ebb) - db "RAT@" - db 2,4 - dw 410 - TX_FAR _RaticateDexEntry - db "@" - -NidorinoDexEntry: ; 40ec8 (10:4ec8) - db "POISON PIN@" - db 2,11 - dw 430 - TX_FAR _NidorinoDexEntry - db "@" - -NidorinaDexEntry: ; 40edc (10:4edc) - db "POISON PIN@" - db 2,7 - dw 440 - TX_FAR _NidorinaDexEntry - db "@" - -GeodudeDexEntry: ; 40ef0 (10:4ef0) - db "ROCK@" - db 1,4 - dw 440 - TX_FAR _GeodudeDexEntry - db "@" - -PorygonDexEntry: ; 40efe (10:4efe) - db "VIRTUAL@" - db 2,7 - dw 800 - TX_FAR _PorygonDexEntry - db "@" - -AerodactylDexEntry: ; 40f0f (10:4f0f) - db "FOSSIL@" - db 5,11 - dw 1300 - TX_FAR _AerodactylDexEntry - db "@" - -MagnemiteDexEntry: ; 40f1f (10:4f1f) - db "MAGNET@" - db 1,0 - dw 130 - TX_FAR _MagnemiteDexEntry - db "@" - -CharmanderDexEntry: ; 40f2f (10:4f2f) - db "LIZARD@" - db 2,0 - dw 190 - TX_FAR _CharmanderDexEntry - db "@" - -SquirtleDexEntry: ; 40f3f (10:4f3f) - db "TINYTURTLE@" - db 1,8 - dw 200 - TX_FAR _SquirtleDexEntry - db "@" - -CharmeleonDexEntry: ; 40f53 (10:4f53) - db "FLAME@" - db 3,7 - dw 420 - TX_FAR _CharmeleonDexEntry - db "@" - -WartortleDexEntry: ; 40f62 (10:4f62) - db "TURTLE@" - db 3,3 - dw 500 - TX_FAR _WartortleDexEntry - db "@" - -CharizardDexEntry: ; 40f72 (10:4f72) - db "FLAME@" - db 5,7 - dw 2000 - TX_FAR _CharizardDexEntry - db "@" - -OddishDexEntry: ; 40f81 (10:4f81) - db "WEED@" - db 1,8 - dw 120 - TX_FAR _OddishDexEntry - db "@" - -GloomDexEntry: ; 40f8f (10:4f8f) - db "WEED@" - db 2,7 - dw 190 - TX_FAR _GloomDexEntry - db "@" - -VileplumeDexEntry: ; 40f9d (10:4f9d) - db "FLOWER@" - db 3,11 - dw 410 - TX_FAR _VileplumeDexEntry - db "@" - -BellsproutDexEntry: ; 40fad (10:4fad) - db "FLOWER@" - db 2,4 - dw 90 - TX_FAR _BellsproutDexEntry - db "@" - -WeepinbellDexEntry: ; 40fbd (10:4fbd) - db "FLYCATCHER@" - db 3,3 - dw 140 - TX_FAR _WeepinbellDexEntry - db "@" - -VictreebelDexEntry: ; 40fd1 (10:4fd1) - db "FLYCATCHER@" - db 5,7 - dw 340 - TX_FAR _VictreebelDexEntry - db "@" - -MissingNoDexEntry: ; 40fe5 (10:4fe5) - db "???@" - db 10 ; 1.0 m - db 100 ; 10.0 kg - db 0,"コメント さくせいちゅう@" ; コメント作成中 (Comment to be written) +INCLUDE "data/pokedex_entries.asm" PokedexToIndex: ; 40ff9 (10:4ff9) ; converts the Pokédex number at $D11E to an index @@ -66770,197 +51670,7 @@ IndexToPokedex: ; 41010 (10:5010) pop bc ret -PokedexOrder: ; 41024 (10:5024) - db DEX_RHYDON - db DEX_KANGASKHAN - db DEX_NIDORAN_M - db DEX_CLEFAIRY - db DEX_SPEAROW - db DEX_VOLTORB - db DEX_NIDOKING - db DEX_SLOWBRO - db DEX_IVYSAUR - db DEX_EXEGGUTOR - db DEX_LICKITUNG - db DEX_EXEGGCUTE - db DEX_GRIMER - db DEX_GENGAR - db DEX_NIDORAN_F - db DEX_NIDOQUEEN - db DEX_CUBONE - db DEX_RHYHORN - db DEX_LAPRAS - db DEX_ARCANINE - db DEX_MEW - db DEX_GYARADOS - db DEX_SHELLDER - db DEX_TENTACOOL - db DEX_GASTLY - db DEX_SCYTHER - db DEX_STARYU - db DEX_BLASTOISE - db DEX_PINSIR - db DEX_TANGELA - db 0 ; MISSINGNO. - db 0 ; MISSINGNO. - db DEX_GROWLITHE - db DEX_ONIX - db DEX_FEAROW - db DEX_PIDGEY - db DEX_SLOWPOKE - db DEX_KADABRA - db DEX_GRAVELER - db DEX_CHANSEY - db DEX_MACHOKE - db DEX_MR_MIME - db DEX_HITMONLEE - db DEX_HITMONCHAN - db DEX_ARBOK - db DEX_PARASECT - db DEX_PSYDUCK - db DEX_DROWZEE - db DEX_GOLEM - db 0 ; MISSINGNO. - db DEX_MAGMAR - db 0 ; MISSINGNO. - db DEX_ELECTABUZZ - db DEX_MAGNETON - db DEX_KOFFING - db 0 ; MISSINGNO. - db DEX_MANKEY - db DEX_SEEL - db DEX_DIGLETT - db DEX_TAUROS - db 0 ; MISSINGNO. - db 0 ; MISSINGNO. - db 0 ; MISSINGNO. - db DEX_FARFETCH_D - db DEX_VENONAT - db DEX_DRAGONITE - db 0 ; MISSINGNO. - db 0 ; MISSINGNO. - db 0 ; MISSINGNO. - db DEX_DODUO - db DEX_POLIWAG - db DEX_JYNX - db DEX_MOLTRES - db DEX_ARTICUNO - db DEX_ZAPDOS - db DEX_DITTO - db DEX_MEOWTH - db DEX_KRABBY - db 0 ; MISSINGNO. - db 0 ; MISSINGNO. - db 0 ; MISSINGNO. - db DEX_VULPIX - db DEX_NINETALES - db DEX_PIKACHU - db DEX_RAICHU - db 0 ; MISSINGNO. - db 0 ; MISSINGNO. - db DEX_DRATINI - db DEX_DRAGONAIR - db DEX_KABUTO - db DEX_KABUTOPS - db DEX_HORSEA - db DEX_SEADRA - db 0 ; MISSINGNO. - db 0 ; MISSINGNO. - db DEX_SANDSHREW - db DEX_SANDSLASH - db DEX_OMANYTE - db DEX_OMASTAR - db DEX_JIGGLYPUFF - db DEX_WIGGLYTUFF - db DEX_EEVEE - db DEX_FLAREON - db DEX_JOLTEON - db DEX_VAPOREON - db DEX_MACHOP - db DEX_ZUBAT - db DEX_EKANS - db DEX_PARAS - db DEX_POLIWHIRL - db DEX_POLIWRATH - db DEX_WEEDLE - db DEX_KAKUNA - db DEX_BEEDRILL - db 0 ; MISSINGNO. - db DEX_DODRIO - db DEX_PRIMEAPE - db DEX_DUGTRIO - db DEX_VENOMOTH - db DEX_DEWGONG - db 0 ; MISSINGNO. - db 0 ; MISSINGNO. - db DEX_CATERPIE - db DEX_METAPOD - db DEX_BUTTERFREE - db DEX_MACHAMP - db 0 ; MISSINGNO. - db DEX_GOLDUCK - db DEX_HYPNO - db DEX_GOLBAT - db DEX_MEWTWO - db DEX_SNORLAX - db DEX_MAGIKARP - db 0 ; MISSINGNO. - db 0 ; MISSINGNO. - db DEX_MUK - db 0 ; MISSINGNO. - db DEX_KINGLER - db DEX_CLOYSTER - db 0 ; MISSINGNO. - db DEX_ELECTRODE - db DEX_CLEFABLE - db DEX_WEEZING - db DEX_PERSIAN - db DEX_MAROWAK - db 0 ; MISSINGNO. - db DEX_HAUNTER - db DEX_ABRA - db DEX_ALAKAZAM - db DEX_PIDGEOTTO - db DEX_PIDGEOT - db DEX_STARMIE - db DEX_BULBASAUR - db DEX_VENUSAUR - db DEX_TENTACRUEL - db 0 ; MISSINGNO. - db DEX_GOLDEEN - db DEX_SEAKING - db 0 ; MISSINGNO. - db 0 ; MISSINGNO. - db 0 ; MISSINGNO. - db 0 ; MISSINGNO. - db DEX_PONYTA - db DEX_RAPIDASH - db DEX_RATTATA - db DEX_RATICATE - db DEX_NIDORINO - db DEX_NIDORINA - db DEX_GEODUDE - db DEX_PORYGON - db DEX_AERODACTYL - db 0 ; MISSINGNO. - db DEX_MAGNEMITE - db 0 ; MISSINGNO. - db 0 ; MISSINGNO. - db DEX_CHARMANDER - db DEX_SQUIRTLE - db DEX_CHARMELEON - db DEX_WARTORTLE - db DEX_CHARIZARD - db 0 ; MISSINGNO. - db 0 ; MISSINGNO. - db 0 ; MISSINGNO. - db 0 ; MISSINGNO. - db DEX_ODDISH - db DEX_GLOOM - db DEX_VILEPLUME - db DEX_BELLSPROUT - db DEX_WEEPINBELL - db DEX_VICTREEBEL +INCLUDE "data/pokedex_order.asm" Func_410e2: ; 410e2 (10:50e2) ld a, [wWhichTrade] ; $cd3d @@ -72365,786 +57075,7 @@ Func_46a01: ; 46a01 (11:6a01) ld [$ffea], a ret -HiddenObjectMaps: ; 46a40 (11:6a40) - db REDS_HOUSE_2F - db BLUES_HOUSE - db OAKS_LAB - db VIRIDIAN_POKECENTER - db VIRIDIAN_MART - db VIRIDIAN_SCHOOL - db VIRIDIAN_GYM - db MUSEUM_1F - db PEWTER_GYM - db PEWTER_MART - db PEWTER_POKECENTER - db CERULEAN_POKECENTER - db CERULEAN_GYM - db CERULEAN_MART - db LAVENDER_POKECENTER - db VERMILION_POKECENTER - db VERMILION_GYM - db CELADON_MANSION_2 - db CELADON_POKECENTER - db CELADON_GYM - db GAME_CORNER - db CELADON_HOTEL - db FUCHSIA_POKECENTER - db FUCHSIA_GYM - db CINNABAR_GYM - db CINNABAR_POKECENTER - db SAFFRON_GYM - db MT_MOON_POKECENTER - db ROCK_TUNNEL_POKECENTER - db BATTLE_CENTER - db TRADE_CENTER - db VIRIDIAN_FOREST - db MT_MOON_3 - db INDIGO_PLATEAU - db ROUTE_25 - db ROUTE_9 - db SS_ANNE_6 - db SS_ANNE_10 - db ROCKET_HIDEOUT_1 - db ROCKET_HIDEOUT_3 - db ROCKET_HIDEOUT_4 - db SAFFRON_POKECENTER - db POKEMONTOWER_5 - db ROUTE_13 - db SAFARI_ZONE_ENTRANCE - db SAFARI_ZONE_WEST - db SILPH_CO_5F - db SILPH_CO_9F - db COPYCATS_HOUSE_2F - db UNKNOWN_DUNGEON_1 - db UNKNOWN_DUNGEON_3 - db POWER_PLANT - db SEAFOAM_ISLANDS_3 - db SEAFOAM_ISLANDS_5 - db MANSION_1 - db MANSION_3 - db ROUTE_23 - db VICTORY_ROAD_2 - db $6F - db BILLS_HOUSE - db VIRIDIAN_CITY - db SAFARI_ZONE_REST_HOUSE_2 - db SAFARI_ZONE_REST_HOUSE_3 - db SAFARI_ZONE_REST_HOUSE_4 - db $B9 - db LAVENDER_HOUSE_1 - db CELADON_MANSION_5 - db FIGHTING_DOJO - db ROUTE_10 - db INDIGO_PLATEAU_LOBBY - db CINNABAR_LAB_4 - db BIKE_SHOP - db ROUTE_11 - db ROUTE_12 - db MANSION_2 - db MANSION_4 - db SILPH_CO_11F - db ROUTE_17 - db UNDERGROUND_PATH_NS - db UNDERGROUND_PATH_WE - db CELADON_CITY - db SEAFOAM_ISLANDS_4 - db VERMILION_CITY - db CERULEAN_CITY - db ROUTE_4 - db $FF - -HiddenObjectPointers: ; 46a96 (11:6a96) -; each of these pointers is for the corresponding map in HiddenObjectMaps - dw RedsHouse2FHiddenObjects - dw BluesHouseHiddenObjects - dw OaksLabHiddenObjects - dw ViridianPokecenterHiddenObjects - dw ViridianMartHiddenObjects - dw ViridianSchoolHiddenObjects - dw ViridianGymHiddenObjects - dw Museum1FHiddenObjects - dw PewterGymHiddenObjects - dw PewterMartHiddenObjects - dw PewterPokecenterHiddenObjects - dw CeruleanPokecenterHiddenObjects - dw CeruleanGymHiddenObjects - dw CeruleanMartHiddenObjects - dw LavenderPokecenterHiddenObjects - dw VermilionPokecenterHiddenObjects - dw VermilionGymHiddenObjects - dw CeladonMansion2HiddenObjects - dw CeladonPokecenterHiddenObjects - dw CeladonGymHiddenObjects - dw GameCornerHiddenObjects - dw CeladonHotelHiddenObjects - dw FuchsiaPokecenterHiddenObjects - dw FuchsiaGymHiddenObjects - dw CinnabarGymHiddenObjects - dw CinnabarPokecenterHiddenObjects - dw SaffronGymHiddenObjects - dw MtMoonPokecenterHiddenObjects - dw RockTunnelPokecenterHiddenObjects - dw BattleCenterHiddenObjects - dw TradeCenterHiddenObjects - dw ViridianForestHiddenObjects - dw MtMoon3HiddenObjects - dw IndigoPlateauHiddenObjects - dw Route25HiddenObjects - dw Route9HiddenObjects - dw SSAnne6HiddenObjects - dw SSAnne10HiddenObjects - dw RocketHideout1HiddenObjects - dw RocketHideout3HiddenObjects - dw RocketHideout4HiddenObjects - dw SaffronPokecenterHiddenObjects - dw PokemonTower5HiddenObjects - dw Route13HiddenObjects - dw SafariZoneEntranceHiddenObjects - dw SafariZoneWestHiddenObjects - dw SilphCo5FHiddenObjects - dw SilphCo9FHiddenObjects - dw CopycatsHouse2FHiddenObjects - dw UnknownDungeon1HiddenObjects - dw UnknownDungeon3HiddenObjects - dw PowerPlantHiddenObjects - dw SeafoamIslands3HiddenObjects - dw SeafoamIslands5HiddenObjects - dw Mansion1HiddenObjects - dw Mansion3HiddenObjects - dw Route23HiddenObjects - dw VictoryRoad2HiddenObjects - dw Unused6FHiddenObjects - dw BillsHouseHiddenObjects - dw ViridianCityHiddenObjects - dw SafariZoneRestHouse2HiddenObjects - dw SafariZoneRestHouse3HiddenObjects - dw SafariZoneRestHouse4HiddenObjects - dw UnusedB9HiddenObjects - dw LavenderHouse1HiddenObjects - dw CeladonMansion5HiddenObjects - dw FightingDojoHiddenObjects - dw Route10HiddenObjects - dw IndigoPlateauLobbyHiddenObjects - dw CinnabarLab4HiddenObjects - dw BikeShopHiddenObjects - dw Route11HiddenObjects - dw Route12HiddenObjects - dw Mansion2HiddenObjects - dw Mansion4HiddenObjects - dw SilphCo11FHiddenObjects - dw Route17HiddenObjects - dw UndergroundPathNsHiddenObjects - dw UndergroundPathWeHiddenObjects - dw CeladonCityHiddenObjects - dw SeafoamIslands4HiddenObjects - dw VermilionCityHiddenObjects - dw CeruleanCityHiddenObjects - dw Route4HiddenObjects - -BattleCenterHiddenObjects: ; 46b40 (11:6b40) - db $04,$05,$d0 ; XXX, y, x - dbw Bank(Func_21845), Func_21845 - db $04,$04,$d0 ; XXX, y, x - dbw Bank(Func_21825), Func_21825 - db $FF -TradeCenterHiddenObjects: ; 46b4d (11:6b4d) - db $04,$05,$d0 ; XXX, y, x - dbw Bank(Func_21845), Func_21845 - db $04,$04,$d0 ; XXX, y, x - dbw Bank(Func_21825), Func_21825 - db $FF -RedsHouse2FHiddenObjects: ; 46b5a (11:6b5a) - db $01,$00,$04 ; XXX, y, x - dbw Bank(Func_5db86), Func_5db86 - db $05,$03,$d0 ; XXX, y, x - dbw Bank(Func_5db79), Func_5db79 - db $FF -BluesHouseHiddenObjects: ; 46b67 (11:6b67) - db $01,$00,$04 ; XXX, y, x - dbw Bank(Func_62509), Func_62509 - db $01,$01,$04 ; XXX, y, x - dbw Bank(Func_62509), Func_62509 - db $01,$07,$04 ; XXX, y, x - dbw Bank(Func_62509), Func_62509 - db $FF -OaksLabHiddenObjects: ; 46b7a (11:6b7a) - db $00,$04,$04 ; XXX, y, x - dbw Bank(Func_1e958), Func_1e958 - db $00,$05,$04 ; XXX, y, x - dbw Bank(Func_1e965), Func_1e965 - db $01,$00,$04 ; XXX, y, x - dbw Bank(Func_1ecaf), Func_1ecaf - db $01,$01,$04 ; XXX, y, x - dbw Bank(Func_1ecaf), Func_1ecaf - db $FF -ViridianPokecenterHiddenObjects: ; 46b93 (11:6b93) - db $04,$00,$08 ; XXX, y, x - dbw Bank(Func_6245d), Func_6245d - db $03,$0d,$04 ; XXX, y, x - dbw Bank(Func_62516), Func_62516 - db $FF -ViridianMartHiddenObjects: ; 46ba0 (11:6ba0) - db $FF -ViridianSchoolHiddenObjects: ; 46ba1 (11:6ba1) - db $04,$03,$20 ; XXX, y, x - dbw Bank(Func_52996), Func_52996 - db $00,$03,$21 ; XXX, y, x - dbw Bank(Func_5dc1a), Func_5dc1a - db $FF -ViridianGymHiddenObjects: ; 46bae (11:6bae) - db $0f,$0f,$04 ; XXX, y, x - dbw BANK(GymStatues),GymStatues - db $0f,$12,$04 ; XXX, y, x - dbw BANK(GymStatues),GymStatues - db $FF -Museum1FHiddenObjects: ; 46bbb (11:6bbb) - db $03,$02,$04 ; XXX, y, x - dbw Bank(AerodactylFossil), AerodactylFossil - db $06,$02,$04 ; XXX, y, x - dbw Bank(KabutopsFossil), KabutopsFossil - db $FF -PewterGymHiddenObjects: ; 46bc8 (11:6bc8) - db $0a,$03,$04 ; XXX, y, x - dbw BANK(GymStatues),GymStatues - db $0a,$06,$04 ; XXX, y, x - dbw BANK(GymStatues),GymStatues - db $FF -PewterMartHiddenObjects: ; 46bd5 (11:6bd5) - db $FF -PewterPokecenterHiddenObjects: ; 46bd6 (11:6bd6) - db $04,$00,$08 ; XXX, y, x - dbw Bank(Func_6245d), Func_6245d - db $03,$0d,$04 ; XXX, y, x - dbw Bank(Func_62516), Func_62516 - db $FF -CeruleanPokecenterHiddenObjects: ; 46be3 (11:6be3) - db $04,$00,$08 ; XXX, y, x - dbw Bank(Func_6245d), Func_6245d - db $03,$0d,$04 ; XXX, y, x - dbw Bank(Func_62516), Func_62516 - db $FF -CeruleanGymHiddenObjects: ; 46bf0 (11:6bf0) - db $0b,$03,$04 ; XXX, y, x - dbw BANK(GymStatues),GymStatues - db $0b,$06,$04 ; XXX, y, x - dbw BANK(GymStatues),GymStatues - db $FF -CeruleanMartHiddenObjects: ; 46bfd (11:6bfd) - db $FF -LavenderPokecenterHiddenObjects: ; 46bfe (11:6bfe) - db $04,$00,$08 ; XXX, y, x - dbw Bank(Func_6245d), Func_6245d - db $03,$0d,$04 ; XXX, y, x - dbw Bank(Func_62516), Func_62516 - db $FF -VermilionPokecenterHiddenObjects: ; 46c0b (11:6c0b) - db $03,$0d,$04 ; XXX, y, x - dbw Bank(Func_62516), Func_62516 - db $04,$00,$04 ; XXX, y, x - dbw Bank(Func_6245d), Func_6245d - db $FF -VermilionGymHiddenObjects: ; 46c18 (11:6c18) - db $0e,$03,$04 ; XXX, y, x - dbw BANK(GymStatues), GymStatues - db $0e,$06,$04 ; XXX, y, x - dbw BANK(GymStatues), GymStatues - db $01,$06,$00 ; XXX, y, x - dbw Bank(Func_5ddef), Func_5ddef - db $07,$01,$00 ; XXX, y, x - dbw Bank(GymTrashScript), GymTrashScript - db $09,$01,$01 ; XXX, y, x - dbw Bank(GymTrashScript), GymTrashScript - db $0b,$01,$02 ; XXX, y, x - dbw Bank(GymTrashScript), GymTrashScript - db $07,$03,$03 ; XXX, y, x - dbw Bank(GymTrashScript), GymTrashScript - db $09,$03,$04 ; XXX, y, x - dbw Bank(GymTrashScript), GymTrashScript - db $0b,$03,$05 ; XXX, y, x - dbw Bank(GymTrashScript), GymTrashScript - db $07,$05,$06 ; XXX, y, x - dbw Bank(GymTrashScript), GymTrashScript - db $09,$05,$07 ; XXX, y, x - dbw Bank(GymTrashScript), GymTrashScript - db $0b,$05,$08 ; XXX, y, x - dbw Bank(GymTrashScript), GymTrashScript - db $07,$07,$09 ; XXX, y, x - dbw Bank(GymTrashScript), GymTrashScript - db $09,$07,$0a ; XXX, y, x - dbw Bank(GymTrashScript), GymTrashScript - db $0b,$07,$0b ; XXX, y, x - dbw Bank(GymTrashScript), GymTrashScript - db $07,$09,$0c ; XXX, y, x - dbw Bank(GymTrashScript), GymTrashScript - db $09,$09,$0d ; XXX, y, x - dbw Bank(GymTrashScript), GymTrashScript - db $0b,$09,$0e ; XXX, y, x - dbw Bank(GymTrashScript), GymTrashScript - db $FF -CeladonMansion2HiddenObjects: ; 46c85 (11:6c85) - db $05,$00,$04 ; XXX, y, x - dbw Bank(Func_62516), Func_62516 - db $FF -CeladonPokecenterHiddenObjects: ; 46c8c (11:6c8c) - db $04,$00,$08 ; XXX, y, x - dbw Bank(Func_6245d), Func_6245d - db $03,$0d,$04 ; XXX, y, x - dbw Bank(Func_62516), Func_62516 - db $FF -CeladonGymHiddenObjects: ; 46c99 (11:6c99) - db $0f,$03,$04 ; XXX, y, x - dbw BANK(GymStatues),GymStatues - db $0f,$06,$04 ; XXX, y, x - dbw BANK(GymStatues),GymStatues - db $FF -GameCornerHiddenObjects: ; 46ca6 (11:6ca6) - db $0f,$12,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0e,$12,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0d,$12,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0c,$12,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0b,$12,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0a,$12,$ff ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0a,$0d,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0b,$0d,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0c,$0d,$fe ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0d,$0d,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0e,$0d,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0f,$0d,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0f,$0c,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0e,$0c,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0d,$0c,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0c,$0c,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0b,$0c,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0a,$0c,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0a,$07,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0b,$07,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0c,$07,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0d,$07,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0e,$07,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0f,$07,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0f,$06,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0e,$06,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0d,$06,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0c,$06,$fd ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0b,$06,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0a,$06,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0a,$01,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0b,$01,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0c,$01,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0d,$01,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0e,$01,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $0f,$01,$d0 ; XXX, y, x - dbw Bank(Func_37e2d), Func_37e2d - db $08,$00,COIN+10 - dbw BANK(HiddenCoins),HiddenCoins - db $10,$01,COIN+10 - dbw BANK(HiddenCoins),HiddenCoins - db $0b,$03,COIN+20 - dbw BANK(HiddenCoins),HiddenCoins - db $0e,$03,COIN+10 - dbw BANK(HiddenCoins),HiddenCoins - db $0c,$04,COIN+10 - dbw BANK(HiddenCoins),HiddenCoins - db $0c,$09,COIN+20 - dbw BANK(HiddenCoins),HiddenCoins - db $0f,$09,COIN+10 - dbw BANK(HiddenCoins),HiddenCoins - db $0e,$10,COIN+10 - dbw BANK(HiddenCoins),HiddenCoins - db $10,$0a,COIN+10 - dbw BANK(HiddenCoins),HiddenCoins - db $07,$0b,COIN+40 - dbw BANK(HiddenCoins),HiddenCoins - db $08,$0f,COIN+100 - dbw BANK(HiddenCoins),HiddenCoins - db $0f,$0c,COIN+10 - dbw BANK(HiddenCoins),HiddenCoins - db $FF -CeladonHotelHiddenObjects: ; 46dc7 (11:6dc7) - db $03,$0d,$04 ; XXX, y, x - dbw Bank(Func_62516), Func_62516 - db $04,$00,$08 ; XXX, y, x - dbw Bank(Func_6245d), Func_6245d - db $FF -FuchsiaPokecenterHiddenObjects: ; 46dd4 (11:6dd4) - db $03,$0d,$04 ; XXX, y, x - dbw Bank(Func_62516), Func_62516 - db $04,$00,$04 ; XXX, y, x - dbw Bank(Func_6245d), Func_6245d - db $FF -FuchsiaGymHiddenObjects: ; 46de1 (11:6de1) - db $0f,$03,$04 ; XXX, y, x - dbw BANK(GymStatues),GymStatues - db $0f,$06,$04 ; XXX, y, x - dbw BANK(GymStatues),GymStatues - db $FF -CinnabarGymHiddenObjects: ; 46dee (11:6dee) - db $0d,$11,$04 ; XXX, y, x - dbw BANK(GymStatues),GymStatues - db $07,$0f,$01 ; XXX, y, x - dbw Bank(Func_1eaa17), Func_1eaa17 - db $01,$0a,$12 ; XXX, y, x - dbw Bank(Func_1eaa17), Func_1eaa17 - db $07,$09,$13 ; XXX, y, x - dbw Bank(Func_1eaa17), Func_1eaa17 - db $0d,$09,$14 ; XXX, y, x - dbw Bank(Func_1eaa17), Func_1eaa17 - db $0d,$01,$05 ; XXX, y, x - dbw Bank(Func_1eaa17), Func_1eaa17 - db $07,$01,$16 ; XXX, y, x - dbw Bank(Func_1eaa17), Func_1eaa17 - db $FF -CinnabarPokecenterHiddenObjects: ; 46e19 (11:6e19) - db $04,$00,$04 ; XXX, y, x - dbw Bank(Func_6245d), Func_6245d - db $03,$0d,$04 ; XXX, y, x - dbw Bank(Func_62516), Func_62516 - db $FF -SaffronGymHiddenObjects: ; 46e26 (11:6e26) - db $0f,$09,$04 ; XXX, y, x - dbw BANK(GymStatues),GymStatues - db $FF -MtMoonPokecenterHiddenObjects: ; 46e2d (11:6e2d) - db $04,$00,$08 ; XXX, y, x - dbw Bank(Func_6245d), Func_6245d - db $03,$0d,$04 ; XXX, y, x - dbw Bank(Func_62516), Func_62516 - db $FF -RockTunnelPokecenterHiddenObjects: ; 46e3a (11:6e3a) - db $04,$00,$08 ; XXX, y, x - dbw Bank(Func_6245d), Func_6245d - db $03,$0d,$04 ; XXX, y, x - dbw Bank(Func_62516), Func_62516 - db $FF -ViridianForestHiddenObjects: ; 46e47 (11:6e47) - db $12,$01,POTION - dbw BANK(HiddenItems),HiddenItems - db $2a,$10,ANTIDOTE - dbw BANK(HiddenItems),HiddenItems - db $FF -MtMoon3HiddenObjects: ; 46e54 (11:6e54) - db $0c,$12,MOON_STONE - dbw BANK(HiddenItems),HiddenItems - db $09,$21,ETHER - dbw BANK(HiddenItems),HiddenItems - db $FF -IndigoPlateauHiddenObjects: ; 46e61 (11:6e61) - db $0d,$08,$ff ; XXX, y, x - dbw Bank(Func_52a2f), Func_52a2f - db $0d,$0b,$00 ; XXX, y, x - dbw Bank(Func_52a2f), Func_52a2f - db $FF -Route25HiddenObjects: ; 46e6e (11:6e6e) - db $03,$26,ETHER - dbw BANK(HiddenItems),HiddenItems - db $01,$0a,ELIXER - dbw BANK(HiddenItems),HiddenItems - db $FF -Route9HiddenObjects: ; 46e7b (11:6e7b) - db $07,$0e,ETHER - dbw BANK(HiddenItems),HiddenItems - db $FF -SSAnne6HiddenObjects: ; 46e82 (11:6e82) - db $05,$0d,$00 ; XXX, y, x - dbw Bank(Func_5ddef), Func_5ddef - db $07,$0d,$00 ; XXX, y, x - dbw Bank(Func_5ddef), Func_5ddef - db $09,$0d,GREAT_BALL - dbw BANK(HiddenItems),HiddenItems - db $FF -SSAnne10HiddenObjects: ; 46e95 (11:6e95) - db $01,$03,HYPER_POTION - dbw BANK(HiddenItems),HiddenItems - db $FF -Route10HiddenObjects: ; 46e9c (11:6e9c) - db $11,$09,SUPER_POTION - dbw BANK(HiddenItems),HiddenItems - db $35,$10,MAX_ETHER - dbw BANK(HiddenItems),HiddenItems - db $FF -RocketHideout1HiddenObjects: ; 46ea9 (11:6ea9) - db $0f,$15,PP_UP - dbw BANK(HiddenItems),HiddenItems - db $FF -RocketHideout3HiddenObjects: ; 46eb0 (11:6eb0) - db $11,$1b,NUGGET - dbw BANK(HiddenItems),HiddenItems - db $FF -RocketHideout4HiddenObjects: ; 46eb7 (11:6eb7) - db $01,$19,SUPER_POTION - dbw BANK(HiddenItems),HiddenItems - db $FF -SaffronPokecenterHiddenObjects: ; 46ebe (11:6ebe) - db $04,$00,$04 ; XXX, y, x - dbw Bank(Func_6245d), Func_6245d - db $03,$0d,$04 ; XXX, y, x - dbw Bank(Func_62516), Func_62516 - db $FF -PokemonTower5HiddenObjects: ; 46ecb (11:6ecb) - db $0c,$04,ELIXER - dbw BANK(HiddenItems),HiddenItems - db $FF -Route13HiddenObjects: ; 46ed2 (11:6ed2) - db $0e,$01,PP_UP - dbw BANK(HiddenItems),HiddenItems - db $0d,$10,CALCIUM - dbw BANK(HiddenItems),HiddenItems - db $FF -SafariZoneEntranceHiddenObjects: ; 46edf (11:6edf) - db $01,$0a,NUGGET - dbw BANK(HiddenItems),HiddenItems - db $FF -SafariZoneWestHiddenObjects: ; 46ee6 (11:6ee6) - db $05,$06,REVIVE - dbw BANK(HiddenItems),HiddenItems - db $FF -SilphCo5FHiddenObjects: ; 46eed (11:6eed) - db $03,$0c,ELIXER - dbw BANK(HiddenItems),HiddenItems - db $FF -SilphCo9FHiddenObjects: ; 46ef4 (11:6ef4) - db $0f,$02,MAX_POTION - dbw BANK(HiddenItems),HiddenItems - db $FF -CopycatsHouse2FHiddenObjects: ; 46efb (11:6efb) - db $01,$01,NUGGET - dbw BANK(HiddenItems),HiddenItems - db $FF -UnknownDungeon1HiddenObjects: ; 46f02 (11:6f02) - db $0b,$0e,RARE_CANDY - dbw BANK(HiddenItems),HiddenItems - db $FF -UnknownDungeon3HiddenObjects: ; 46f09 (11:6f09) - db $03,$1b,ULTRA_BALL - dbw BANK(HiddenItems),HiddenItems - db $FF -PowerPlantHiddenObjects: ; 46f10 (11:6f10) - db $10,$11,MAX_ELIXER - dbw BANK(HiddenItems),HiddenItems - db $01,$0c,PP_UP - dbw BANK(HiddenItems),HiddenItems - db $FF -SeafoamIslands3HiddenObjects: ; 46f1d (11:6f1d) - db $0f,$0f,NUGGET - dbw BANK(HiddenItems),HiddenItems - db $FF -SeafoamIslands5HiddenObjects: ; 46f24 (11:6f24) - db $11,$19,ULTRA_BALL - dbw BANK(HiddenItems),HiddenItems - db $FF -Mansion1HiddenObjects: ; 46f2b (11:6f2b) - db $10,$08,MOON_STONE - dbw BANK(HiddenItems),HiddenItems - db $05,$02,$04 ; XXX, y, x - dbw BANK(Func_44316),Func_44316 - db $FF -Mansion2HiddenObjects: ; 46f38 (11:6f38) - db $0b,$02,$04 ; XXX, y, x - dbw Bank(Func_52037), Func_52037 - db $FF -Mansion3HiddenObjects: ; 46f3f (11:6f3f) - db $09,$01,MAX_REVIVE - dbw BANK(HiddenItems),HiddenItems - db $05,$0a,$04 ; XXX, y, x - dbw Bank(Func_5227a), Func_5227a - db $FF -Mansion4HiddenObjects: ; 46f4c (11:6f4c) - db $09,$01,RARE_CANDY - dbw BANK(HiddenItems),HiddenItems - db $03,$14,$04 ; XXX, y, x - dbw Bank(Func_52420), Func_52420 - db $19,$12,$04 ; XXX, y, x - dbw Bank(Func_52420), Func_52420 - db $FF -Route23HiddenObjects: ; 46f5f (11:6f5f) - db $2c,$09,FULL_RESTORE - dbw BANK(HiddenItems),HiddenItems - db $46,$13,ULTRA_BALL - dbw BANK(HiddenItems),HiddenItems - db $5a,$08,MAX_ETHER - dbw BANK(HiddenItems),HiddenItems - db $FF -VictoryRoad2HiddenObjects: ; 46f72 (11:6f72) - db $02,$05,ULTRA_BALL - dbw BANK(HiddenItems),HiddenItems - db $07,$1a,FULL_RESTORE - dbw BANK(HiddenItems),HiddenItems - db $FF -Unused6FHiddenObjects: ; 46f7f (11:6f7f) - db $0b,$0e,MAX_ELIXER - dbw BANK(HiddenItems),HiddenItems - db $FF -BillsHouseHiddenObjects: ; 46f86 (11:6f86) - db $04,$01,$04 ; XXX, y, x - dbw Bank(Func_1eb6e), Func_1eb6e - db $FF -ViridianCityHiddenObjects: ; 46f8d (11:6f8d) - db $04,$0e,POTION - dbw BANK(HiddenItems),HiddenItems - db $FF -SafariZoneRestHouse2HiddenObjects: ; 46f94 (11:6f94) - db $04,$00,$08 ; XXX, y, x - dbw Bank(Func_6245d), Func_6245d - db $03,$0d,$04 ; XXX, y, x - dbw Bank(Func_62516), Func_62516 - db $FF -SafariZoneRestHouse3HiddenObjects: ; 46fa1 (11:6fa1) - db $04,$00,$08 ; XXX, y, x - dbw Bank(Func_6245d), Func_6245d - db $03,$0d,$04 ; XXX, y, x - dbw Bank(Func_62516), Func_62516 - db $FF -SafariZoneRestHouse4HiddenObjects: ; 46fae (11:6fae) - db $04,$00,$08 ; XXX, y, x - dbw Bank(Func_6245d), Func_6245d - db $03,$0d,$04 ; XXX, y, x - dbw Bank(Func_62516), Func_62516 - db $FF -UnusedB9HiddenObjects: ; 46fbb (11:6fbb) - db $02,$01,$04 ; XXX, y, x - dbw Bank(Func_5db8f), Func_5db8f - db $FF -LavenderHouse1HiddenObjects: ; 46fc2 (11:6fc2) - db $01,$00,$00 ; XXX, y, x - dbw Bank(Func_1eb60), Func_1eb60 - db $01,$01,$00 ; XXX, y, x - dbw Bank(Func_1eb60), Func_1eb60 - db $01,$07,$00 ; XXX, y, x - dbw Bank(Func_1eb60), Func_1eb60 - db $FF -CeladonMansion5HiddenObjects: ; 46fd5 (11:6fd5) - db $00,$03,$34 ; XXX, y, x - dbw Bank(Func_5dc1a), Func_5dc1a - db $00,$04,$34 ; XXX, y, x - dbw Bank(Func_5dc1a), Func_5dc1a - db $04,$03,$35 ; XXX, y, x - dbw Bank(Func_52996), Func_52996 - db $FF -FightingDojoHiddenObjects: ; 46fe8 (11:6fe8) - db $09,$03,$04 ; XXX, y, x - dbw Bank(Func_52a22), Func_52a22 - db $09,$06,$04 ; XXX, y, x - dbw Bank(Func_52a22), Func_52a22 - db $00,$04,$04 ; XXX, y, x - dbw Bank(Func_52a08), Func_52a08 - db $00,$05,$04 ; XXX, y, x - dbw Bank(Func_52a15), Func_52a15 - db $FF -IndigoPlateauLobbyHiddenObjects: ; 47001 (11:7001) - db $07,$0f,$04 ; XXX, y, x - dbw Bank(Func_62516), Func_62516 - db $FF -CinnabarLab4HiddenObjects: ; 47008 (11:7008) - db $04,$00,$04 ; XXX, y, x - dbw Bank(Func_62516), Func_62516 - db $04,$02,$04 ; XXX, y, x - dbw Bank(Func_62516), Func_62516 - db $FF -BikeShopHiddenObjects: ; 47015 (11:7015) - db $00,$01,$d0 ; XXX, y, x - dbw Bank(Func_1e94b), Func_1e94b - db $01,$02,$d0 ; XXX, y, x - dbw Bank(Func_1e94b), Func_1e94b - db $02,$01,$d0 ; XXX, y, x - dbw Bank(Func_1e94b), Func_1e94b - db $02,$03,$d0 ; XXX, y, x - dbw Bank(Func_1e94b), Func_1e94b - db $04,$00,$d0 ; XXX, y, x - dbw Bank(Func_1e94b), Func_1e94b - db $05,$01,$d0 ; XXX, y, x - dbw Bank(Func_1e94b), Func_1e94b - db $FF -Route11HiddenObjects: ; 4703a (11:703a) - db $05,$30,ESCAPE_ROPE - dbw BANK(HiddenItems),HiddenItems - db $FF -Route12HiddenObjects: ; 47041 (11:7041) - db $3f,$02,HYPER_POTION - dbw BANK(HiddenItems),HiddenItems - db $FF -SilphCo11FHiddenObjects: ; 47048 (11:7048) - db $0c,$0a,$04 ; XXX, y, x - dbw Bank(Func_62516), Func_62516 - db $FF -Route17HiddenObjects: ; 4704f (11:704f) - db $0e,$0f,RARE_CANDY - dbw BANK(HiddenItems),HiddenItems - db $2d,$08,FULL_RESTORE - dbw BANK(HiddenItems),HiddenItems - db $48,$11,PP_UP - dbw BANK(HiddenItems),HiddenItems - db $5b,$04,MAX_REVIVE - dbw BANK(HiddenItems),HiddenItems - db $79,$08,MAX_ELIXER - dbw BANK(HiddenItems),HiddenItems - db $FF -UndergroundPathNsHiddenObjects: ; 4706e (11:706e) - db $04,$03,FULL_RESTORE - dbw BANK(HiddenItems),HiddenItems - db $22,$04,X_SPECIAL - dbw BANK(HiddenItems),HiddenItems - db $FF -UndergroundPathWeHiddenObjects: ; 4707b (11:707b) - db $02,$0c,NUGGET - dbw BANK(HiddenItems),HiddenItems - db $05,$15,ELIXER - dbw BANK(HiddenItems),HiddenItems - db $FF -CeladonCityHiddenObjects: ; 47088 (11:7088) - db $0f,$30,PP_UP - dbw BANK(HiddenItems),HiddenItems - db $FF -SeafoamIslands4HiddenObjects: ; 4708f (11:708f) - db $10,$09,MAX_ELIXER - dbw BANK(HiddenItems),HiddenItems - db $FF -VermilionCityHiddenObjects: ; 47096 (11:7096) - db $0b,$0e,MAX_ETHER - dbw BANK(HiddenItems),HiddenItems - db $FF -CeruleanCityHiddenObjects: ; 4709d (11:709d) - db $08,$0f,RARE_CANDY - dbw BANK(HiddenItems),HiddenItems - db $FF -Route4HiddenObjects: ; 470a4 (11:70a4) - db $03,$28,GREAT_BALL - dbw BANK(HiddenItems),HiddenItems - db $FF +INCLUDE "data/hidden_objects.asm" SECTION "bank12",ROMX,BANK[$12] @@ -81753,75 +65684,7 @@ GetPrizeMenuId: ; 5278e (14:678e) ld c,(1 << 7 | 2) jp PrintBCDNumber -PrizeDifferentMenuPtrs: ; 52843 (14:6843) - dw PrizeMenuMon1Entries - dw PrizeMenuMon1Cost - - dw PrizeMenuMon2Entries - dw PrizeMenuMon2Cost - - dw PrizeMenuTMsEntries - dw PrizeMenuTMsCost - -NoThanksText: ; 5284f (14:684f) - db "NO THANKS@" - -PrizeMenuMon1Entries: ; 52859 (14:6859) - db ABRA - db CLEFAIRY -IF _RED - db NIDORINA -ENDC -IF _BLUE - db NIDORINO -ENDC - db "@" -PrizeMenuMon1Cost: ; 5285d (14:685d) -IF _RED - db $01,$80 - db $05,$00 -ENDC -IF _BLUE - db $01,$20 - db $07,$50 -ENDC - db $12,$00 - db "@" - -PrizeMenuMon2Entries: ; 52864 (14:6864) -IF _RED - db DRATINI - db SCYTHER -ENDC -IF _BLUE - db PINSIR - db DRATINI -ENDC - db PORYGON - db "@" -PrizeMenuMon2Cost: ; 52868 (14:6868) -IF _RED - db $28,$00 - db $55,$00 - db $99,$99 -ENDC -IF _BLUE - db $25,$00 - db $46,$00 - db $65,$00 -ENDC - db "@" - -PrizeMenuTMsEntries: ; 5286f (14:686f) - db TM_23 - db TM_15 - db TM_50 - db "@" -PrizeMenuTMsCost: ; 52873 (14:6873) - db $33,$00 ; 3300 Coins - db $55,$00 ; 5500 Coins - db $77,$00 ; 7700 Coins - db "@" +INCLUDE "data/prizes.asm" PrintPrizePrice: ; 5287a (14:687a) FuncCoord 11,0 @@ -100393,54 +84256,7 @@ Func_70e92: ; 70e92 (1c:4e92) ld [wWhichTrade], a ; $cd3d jp Func_70e7e -TownMapOrder: ; 70f11 (1c:4f11) - db PALLET_TOWN - db ROUTE_1 - db VIRIDIAN_CITY - db ROUTE_2 - db VIRIDIAN_FOREST - db DIGLETTS_CAVE - db PEWTER_CITY - db ROUTE_3 - db MT_MOON_1 - db ROUTE_4 - db CERULEAN_CITY - db ROUTE_24 - db ROUTE_25 - db BILLS_HOUSE - db ROUTE_5 - db ROUTE_6 - db VERMILION_CITY - db SS_ANNE_1 - db ROUTE_9 - db ROCK_TUNNEL_POKECENTER - db ROUTE_10 - db LAVENDER_TOWN - db POKEMONTOWER_2 - db ROUTE_8 - db ROUTE_7 - db CELADON_CITY - db SAFFRON_CITY - db ROUTE_11 - db ROUTE_12 - db ROUTE_13 - db ROUTE_14 - db ROUTE_15 - db ROUTE_16 - db ROUTE_17 - db ROUTE_18 - db FUCHSIA_CITY - db SAFARI_ZONE_EAST - db ROUTE_19 - db SEAFOAM_ISLANDS_2 - db ROUTE_20 - db CINNABAR_ISLAND - db ROUTE_21 - db ROUTE_22 - db ROUTE_23 - db VICTORY_ROAD_3 - db INDIGO_PLATEAU - db POWER_PLANT +INCLUDE "data/town_map_order.asm" TownMapCursor: ; 70f40 (1c:4f40) INCBIN "gfx/town_map_cursor.1bpp" @@ -100911,215 +84727,9 @@ Func_712f1: ; 712f1 (1c:52f1) ld l, a ret -ExternalMapEntries: ; 71313 (1c:5313) - EMAP $2,$B,PalletTownName - EMAP $2,$8,ViridianCityName - EMAP $2,$3,PewterCityName - EMAP $A,$2,CeruleanCityName - EMAP $E,$5,LavenderTownName - EMAP $A,$9,VermilionCityName - EMAP $7,$5,CeladonCityName - EMAP $8,$D,FuchsiaCityName - EMAP $2,$F,CinnabarIslandName - EMAP $0,$2,IndigoPlateauName - EMAP $A,$5,SaffronCityName - EMAP $0,$0,PalletTownName ; unused - EMAP $2,$A,Route1Name - EMAP $2,$6,Route2Name - EMAP $4,$3,Route3Name - EMAP $8,$2,Route4Name - EMAP $A,$3,Route5Name - EMAP $A,$8,Route6Name - EMAP $8,$5,Route7Name - EMAP $D,$5,Route8Name - EMAP $D,$2,Route9Name - EMAP $E,$4,Route10Name - EMAP $C,$9,Route11Name - EMAP $E,$9,Route12Name - EMAP $D,$B,Route13Name - EMAP $B,$C,Route14Name - EMAP $A,$D,Route15Name - EMAP $5,$5,Route16Name - EMAP $4,$8,Route17Name - EMAP $6,$D,Route18Name - EMAP $6,$F,Route19Name - EMAP $4,$F,Route20Name - EMAP $2,$D,Route21Name - EMAP $0,$8,Route22Name - EMAP $0,$6,Route23Name - EMAP $A,$1,Route24Name - EMAP $B,$0,Route25Name - -InternalMapEntries: ; 71382 (1c:5382) - IMAP $29,$2,$B,PalletTownName - IMAP $2E,$2,$8,ViridianCityName - IMAP $33,$2,$6,Route2Name - IMAP $34,$2,$4,ViridianForestName - IMAP $3B,$2,$3,PewterCityName - IMAP $3E,$6,$2,MountMoonName - IMAP $44,$A,$2,CeruleanCityName - IMAP $45,$5,$2,Route4Name - IMAP $46,$A,$2,CeruleanCityName - IMAP $49,$A,$4,Route5Name - IMAP $4C,$A,$6,Route6Name - IMAP $4F,$9,$5,Route7Name - IMAP $51,$B,$5,Route8Name - IMAP $53,$E,$3,RockTunnelName - IMAP $54,$F,$4,PowerPlantName - IMAP $57,$D,$9,Route11Name - IMAP $58,$E,$7,Route12Name - IMAP $59,$C,$0,SeaCottageName - IMAP $5F,$A,$9,VermilionCityName - IMAP $69,$9,$A,SSAnneName - IMAP $6D,$0,$4,VictoryRoadName - IMAP $77,$0,$2,PokemonLeagueName - IMAP $78,$A,$5,UndergroundPathName - IMAP $79,$0,$2,PokemonLeagueName - IMAP $7A,$A,$5,UndergroundPathName - IMAP $8D,$7,$5,CeladonCityName - IMAP $8E,$E,$5,LavenderTownName - IMAP $95,$F,$5,PokemonTowerName - IMAP $98,$E,$5,LavenderTownName - IMAP $9C,$8,$D,FuchsiaCityName - IMAP $9D,$8,$C,SafariZoneName - IMAP $9F,$8,$D,FuchsiaCityName - IMAP $A3,$5,$F,SeafoamIslandsName - IMAP $A4,$A,$9,VermilionCityName - IMAP $A5,$8,$D,FuchsiaCityName - IMAP $A6,$2,$F,PokemonMansionName - IMAP $AE,$2,$F,CinnabarIslandName - IMAP $AF,$0,$2,IndigoPlateauName - IMAP $B8,$A,$5,SaffronCityName - IMAP $BA,$9,$D,Route15Name - IMAP $BD,$4,$5,Route16Name - IMAP $BE,$E,$A,Route12Name - IMAP $C0,$7,$D,Route18Name - IMAP $C1,$5,$F,SeafoamIslandsName - IMAP $C2,$0,$7,Route22Name - IMAP $C3,$0,$4,VictoryRoadName - IMAP $C4,$E,$7,Route12Name - IMAP $C5,$A,$9,VermilionCityName - IMAP $C6,$3,$4,DiglettsCaveName - IMAP $C7,$0,$4,VictoryRoadName - IMAP $CF,$7,$5,RocketHQName - IMAP $D6,$A,$5,SilphCoName - IMAP $D9,$2,$F,PokemonMansionName - IMAP $E2,$8,$C,SafariZoneName - IMAP $E5,$9,$1,CeruleanCaveName - IMAP $E6,$E,$5,LavenderTownName - IMAP $E7,$A,$2,CeruleanCityName - IMAP $E9,$E,$3,RockTunnelName - IMAP $ED,$A,$5,SilphCoName - IMAP $F8,$0,$2,PokemonLeagueName - db $FF +INCLUDE "data/town_map_entries.asm" -MapNames: ; 71473 (1c:5473) -PalletTownName: ; 71473 (1c:5473) - db "PALLET TOWN@" -ViridianCityName: ; 7147f (1c:547f) - db "VIRIDIAN CITY@" -PewterCityName: ; 7148d (1c:548d) - db "PEWTER CITY@" -CeruleanCityName: ; 71499 (1c:5499) - db "CERULEAN CITY@" -LavenderTownName: ; 714a7 (1c:54a7) - db "LAVENDER TOWN@" -VermilionCityName: ; 714b5 (1c:54b5) - db "VERMILION CITY@" -CeladonCityName: ; 714c4 (1c:54c4) - db "CELADON CITY@" -FuchsiaCityName: ; 714d1 (1c:54d1) - db "FUCHSIA CITY@" -CinnabarIslandName: ; 714de (1c:54de) - db "CINNABAR ISLAND@" -IndigoPlateauName: ; 714ee (1c:54ee) - db "INDIGO PLATEAU@" -SaffronCityName: ; 714fd (1c:54fd) - db "SAFFRON CITY@" -Route1Name: ; 7150a (1c:550a) - db "ROUTE 1@" -Route2Name: ; 71512 (1c:5512) - db "ROUTE 2@" -Route3Name: ; 7151a (1c:551a) - db "ROUTE 3@" -Route4Name: ; 71522 (1c:5522) - db "ROUTE 4@" -Route5Name: ; 7152a (1c:552a) - db "ROUTE 5@" -Route6Name: ; 71532 (1c:5532) - db "ROUTE 6@" -Route7Name: ; 7153a (1c:553a) - db "ROUTE 7@" -Route8Name: ; 71542 (1c:5542) - db "ROUTE 8@" -Route9Name: ; 7154a (1c:554a) - db "ROUTE 9@" -Route10Name: ; 71552 (1c:5552) - db "ROUTE 10@" -Route11Name: ; 7155b (1c:555b) - db "ROUTE 11@" -Route12Name: ; 71564 (1c:5564) - db "ROUTE 12@" -Route13Name: ; 7156d (1c:556d) - db "ROUTE 13@" -Route14Name: ; 71576 (1c:5576) - db "ROUTE 14@" -Route15Name: ; 7157f (1c:557f) - db "ROUTE 15@" -Route16Name: ; 71588 (1c:5588) - db "ROUTE 16@" -Route17Name: ; 71591 (1c:5591) - db "ROUTE 17@" -Route18Name: ; 7159a (1c:559a) - db "ROUTE 18@" -Route19Name: ; 715a3 (1c:55a3) - db "SEA ROUTE 19@" -Route20Name: ; 715b0 (1c:55b0) - db "SEA ROUTE 20@" -Route21Name: ; 715bd (1c:55bd) - db "SEA ROUTE 21@" -Route22Name: ; 715ca (1c:55ca) - db "ROUTE 22@" -Route23Name: ; 715d3 (1c:55d3) - db "ROUTE 23@" -Route24Name: ; 715dc (1c:55dc) - db "ROUTE 24@" -Route25Name: ; 715e5 (1c:55e5) - db "ROUTE 25@" -ViridianForestName: ; 715ee (1c:55ee) - db "VIRIDIAN FOREST@" -MountMoonName: ; 715fe (1c:55fe) - db "MT.MOON@" -RockTunnelName: ; 71606 (1c:5606) - db "ROCK TUNNEL@" -SeaCottageName: ; 71612 (1c:5612) - db "SEA COTTAGE@" -SSAnneName: ; 7161e (1c:561e) - db "S.S.ANNE@" -PokemonLeagueName: ; 71627 (1c:5627) - db "#MON LEAGUE@" -UndergroundPathName: ; 71633 (1c:5633) - db "UNDERGROUND PATH@" -PokemonTowerName: ; 71644 (1c:5644) - db "#MON TOWER@" -SeafoamIslandsName: ; 7164f (1c:564f) - db "SEAFOAM ISLANDS@" -VictoryRoadName: ; 7165f (1c:565f) - db "VICTORY ROAD@" -DiglettsCaveName: ; 7166c (1c:566c) - db "DIGLETT's CAVE@" -RocketHQName: ; 7167a (1c:567a) - db "ROCKET HQ@" -SilphCoName: ; 71684 (1c:5684) - db "SILPH CO.@" -PokemonMansionName: ; 7168e (1c:568e) - db $4a," MANSION@" -SafariZoneName: ; 71698 (1c:5698) - db "SAFARI ZONE@" -CeruleanCaveName: ; 716a4 (1c:56a4) - db "CERULEAN CAVE@" -PowerPlantName: ; 716b2 (1c:56b2) - db "POWER PLANT@" +INCLUDE "text/map_names.asm" MonNestIcon: ; 716be (1c:56be) INCBIN "gfx/mon_nest_icon.1bpp" @@ -101550,83 +85160,7 @@ GetPartyMonSpriteID: ; 718e9 (1c:58e9) srl a ret -MonOverworldData: ; 7190d (1c:590d) - dn SPRITE_GRASS, SPRITE_GRASS ;Bulbasaur/Ivysaur - dn SPRITE_GRASS, SPRITE_MON ;Venusaur/Charmander - dn SPRITE_MON, SPRITE_MON ;Charmeleon/Charizard - dn SPRITE_WATER, SPRITE_WATER ;Squirtle/Wartortle - dn SPRITE_WATER, SPRITE_BUG ;Blastoise/Caterpie - dn SPRITE_BUG, SPRITE_BUG ;Metapod/Butterfree - dn SPRITE_BUG, SPRITE_BUG ;Weedle/Kakuna - dn SPRITE_BUG, SPRITE_BIRD_M ;Beedrill/Pidgey - dn SPRITE_BIRD_M, SPRITE_BIRD_M ;Pidgeotto/Pidgeot - dn SPRITE_QUADRUPED, SPRITE_QUADRUPED ;Rattata/Raticate - dn SPRITE_BIRD_M, SPRITE_BIRD_M ;Spearow/Fearow - dn SPRITE_SNAKE, SPRITE_SNAKE ;Ekans/Arbok - dn SPRITE_FAIRY, SPRITE_FAIRY ;Pikachu/Raichu - dn SPRITE_MON, SPRITE_MON ;Sandshrew/Sandslash - dn SPRITE_MON, SPRITE_MON ;Nidoran?/Nidorina - dn SPRITE_MON, SPRITE_MON ;Nidoqueen/Nidoran? - dn SPRITE_MON, SPRITE_MON ;Nidorino/Nidoking - dn SPRITE_FAIRY, SPRITE_FAIRY ;Clefairy/Clefable - dn SPRITE_QUADRUPED, SPRITE_QUADRUPED ;Vulpix/Ninetales - dn SPRITE_FAIRY, SPRITE_FAIRY ;Jigglypuff/Wigglytuff - dn SPRITE_MON, SPRITE_MON ;Zubat/Golbat - dn SPRITE_GRASS, SPRITE_GRASS ;Oddish/Gloom - dn SPRITE_GRASS, SPRITE_BUG ;Vileplume/Paras - dn SPRITE_BUG, SPRITE_BUG ;Parasect/Venonat - dn SPRITE_BUG, SPRITE_MON ;Venomoth/Diglett - dn SPRITE_MON, SPRITE_MON ;Dugtrio/Meowth - dn SPRITE_MON, SPRITE_MON ;Persian/Psyduck - dn SPRITE_MON, SPRITE_MON ;Golduck/Mankey - dn SPRITE_MON, SPRITE_QUADRUPED ;Primeape/Growlithe - dn SPRITE_QUADRUPED, SPRITE_MON ;Arcanine/Poliwag - dn SPRITE_MON, SPRITE_MON ;Poliwhirl/Poliwrath - dn SPRITE_MON, SPRITE_MON ;Abra/Kadabra - dn SPRITE_MON, SPRITE_MON ;Alakazam/Machop - dn SPRITE_MON, SPRITE_MON ;Machoke/Machamp - dn SPRITE_GRASS, SPRITE_GRASS ;Bellsprout/Weepinbell - dn SPRITE_GRASS, SPRITE_WATER ;Victreebel/Tentacool - dn SPRITE_WATER, SPRITE_MON ;Tentacruel/Geodude - dn SPRITE_MON, SPRITE_MON ;Graveler/Golem - dn SPRITE_QUADRUPED, SPRITE_QUADRUPED ;Ponyta/Rapidash - dn SPRITE_QUADRUPED, SPRITE_MON ;Slowpoke/Slowbro - dn SPRITE_BALL_M, SPRITE_BALL_M ;Magnemite/Magneton - dn SPRITE_BIRD_M, SPRITE_BIRD_M ;Farfetch'd/Doduo - dn SPRITE_BIRD_M, SPRITE_WATER ;Dodrio/Seel - dn SPRITE_WATER, SPRITE_MON ;Dewgong/Grimer - dn SPRITE_MON, SPRITE_HELIX ;Muk/Shellder - dn SPRITE_HELIX, SPRITE_MON ;Cloyster/Gastly - dn SPRITE_MON, SPRITE_MON ;Haunter/Gengar - dn SPRITE_SNAKE, SPRITE_MON ;Onix/Drowzee - dn SPRITE_MON, SPRITE_WATER ;Hypno/Krabby - dn SPRITE_WATER, SPRITE_BALL_M ;Kingler/Voltorb - dn SPRITE_BALL_M, SPRITE_GRASS ;Electrode/Exeggcute - dn SPRITE_GRASS, SPRITE_MON ;Exeggutor/Cubone - dn SPRITE_MON, SPRITE_MON ;Marowak/Hitmonlee - dn SPRITE_MON, SPRITE_MON ;Hitmonchan/Lickitung - dn SPRITE_MON, SPRITE_MON ;Koffing/Weezing - dn SPRITE_QUADRUPED, SPRITE_MON ;Rhyhorn/Rhydon - dn SPRITE_FAIRY, SPRITE_GRASS ;Chansey/Tangela - dn SPRITE_MON, SPRITE_WATER ;Kangaskhan/Horsea - dn SPRITE_WATER, SPRITE_WATER ;Seadra/Goldeen - dn SPRITE_WATER, SPRITE_HELIX ;Seaking/Staryu - dn SPRITE_HELIX, SPRITE_MON ;Starmie/Mr.Mime - dn SPRITE_BUG, SPRITE_MON ;Scyther/Jynx - dn SPRITE_MON, SPRITE_MON ;Electabuzz/Magmar - dn SPRITE_BUG, SPRITE_QUADRUPED ;Pinsir/Tauros - dn SPRITE_WATER, SPRITE_SNAKE ;Magikarp/Gyarados - dn SPRITE_WATER, SPRITE_MON ;Lapras/Ditto - dn SPRITE_QUADRUPED, SPRITE_QUADRUPED ;Eevee/Vaporeon - dn SPRITE_QUADRUPED, SPRITE_QUADRUPED ;Jolteon/Flareon - dn SPRITE_MON, SPRITE_HELIX ;Porygon/Omanyte - dn SPRITE_HELIX, SPRITE_HELIX ;Omastar/Kabuto - dn SPRITE_HELIX, SPRITE_BIRD_M ;Kabutops/Aerodactyl - dn SPRITE_MON, SPRITE_BIRD_M ;Snorlax/Articuno - dn SPRITE_BIRD_M, SPRITE_BIRD_M ;Zapdos/Moltres - dn SPRITE_SNAKE, SPRITE_SNAKE ;Dratini/Dragonair - dn SPRITE_SNAKE, SPRITE_MON ;Dragonite/Mewtwo - dn SPRITE_MON, 0 ;Mew/Padding +INCLUDE "data/mon_party_sprites.asm" MonOverworldSprites: ; 71959 (1c:5959) INCBIN "gfx/mon_ow_sprites.2bpp" @@ -101716,18 +85250,7 @@ Func_71b6a: ; 71b6a (1c:5b6a) ld bc,$b jp CopyData -TradeMons: ; 71b7b (1c:5b7b) -; givemonster, getmonster, textstring, nickname (11 bytes), 14 bytes total - db NIDORINO, NIDORINA, 0,"TERRY@@@@@@" - db ABRA, MR_MIME, 0,"MARCEL@@@@@" - db BUTTERFREE,BEEDRILL, 2,"CHIKUCHIKU@" - db PONYTA, SEEL, 0,"SAILOR@@@@@" - db SPEAROW, FARFETCH_D,2,"DUX@@@@@@@@" - db SLOWBRO, LICKITUNG, 0,"MARC@@@@@@@" - db POLIWHIRL, JYNX, 1,"LOLA@@@@@@@" - db RAICHU, ELECTRODE, 1,"DORIS@@@@@@" - db VENONAT, TANGELA, 2,"CRINKLES@@@" - db NIDORAN_M, NIDORAN_F, 2,"SPOT@@@@@@@" +INCLUDE "data/trades.asm" Func_71c07: ; 71c07 (1c:5c07) xor a @@ -102732,334 +86255,9 @@ PalPacket_725a8: ; 725a8 (1c:65a8) PalPacket_725b8: ; 725b8 (1c:65b8) db $79,$10,$08,$00,$0B,$4C,$20,$08,$EA,$EA,$EA,$EA,$EA,$60,$EA,$EA -MonsterPalettes: ; 725c8 (1c:65c8) - db PAL_MEWMON ; MISSINGNO - db PAL_GREENMON ; BULBASAUR - db PAL_GREENMON ; IVYSAUR - db PAL_GREENMON ; VENUSAUR - db PAL_REDMON ; CHARMANDER - db PAL_REDMON ; CHARMELEON - db PAL_REDMON ; CHARIZARD - db PAL_CYANMON ; SQUIRTLE - db PAL_CYANMON ; WARTORTLE - db PAL_CYANMON ; BLASTOISE - db PAL_GREENMON ; CATERPIE - db PAL_GREENMON ; METAPOD - db PAL_CYANMON ; BUTTERFREE - db PAL_YELLOWMON ; WEEDLE - db PAL_YELLOWMON ; KAKUNA - db PAL_YELLOWMON ; BEEDRILL - db PAL_BROWNMON ; PIDGEY - db PAL_BROWNMON ; PIDGEOTTO - db PAL_BROWNMON ; PIDGEOT - db PAL_GREYMON ; RATTATA - db PAL_GREYMON ; RATICATE - db PAL_BROWNMON ; SPEAROW - db PAL_BROWNMON ; FEAROW - db PAL_PURPLEMON ; EKANS - db PAL_PURPLEMON ; ARBOK - db PAL_YELLOWMON ; PIKACHU - db PAL_YELLOWMON ; RAICHU - db PAL_BROWNMON ; SANDSHREW - db PAL_BROWNMON ; SANDSLASH - db PAL_BLUEMON ; NIDORAN_F - db PAL_BLUEMON ; NIDORINA - db PAL_BLUEMON ; NIDOQUEEN - db PAL_PURPLEMON ; NIDORAN_M - db PAL_PURPLEMON ; NIDORINO - db PAL_PURPLEMON ; NIDOKING - db PAL_PINKMON ; CLEFAIRY - db PAL_PINKMON ; CLEFABLE - db PAL_REDMON ; VULPIX - db PAL_YELLOWMON ; NINETALES - db PAL_PINKMON ; JIGGLYPUFF - db PAL_PINKMON ; WIGGLYTUFF - db PAL_BLUEMON ; ZUBAT - db PAL_BLUEMON ; GOLBAT - db PAL_GREENMON ; ODDISH - db PAL_REDMON ; GLOOM - db PAL_REDMON ; VILEPLUME - db PAL_REDMON ; PARAS - db PAL_REDMON ; PARASECT - db PAL_PURPLEMON ; VENONAT - db PAL_PURPLEMON ; VENOMOTH - db PAL_BROWNMON ; DIGLETT - db PAL_BROWNMON ; DUGTRIO - db PAL_YELLOWMON ; MEOWTH - db PAL_YELLOWMON ; PERSIAN - db PAL_YELLOWMON ; PSYDUCK - db PAL_CYANMON ; GOLDUCK - db PAL_BROWNMON ; MANKEY - db PAL_BROWNMON ; PRIMEAPE - db PAL_BROWNMON ; GROWLITHE - db PAL_REDMON ; ARCANINE - db PAL_BLUEMON ; POLIWAG - db PAL_BLUEMON ; POLIWHIRL - db PAL_BLUEMON ; POLIWRATH - db PAL_YELLOWMON ; ABRA - db PAL_YELLOWMON ; KADABRA - db PAL_YELLOWMON ; ALAKAZAM - db PAL_GREYMON ; MACHOP - db PAL_GREYMON ; MACHOKE - db PAL_GREYMON ; MACHAMP - db PAL_GREENMON ; BELLSPROUT - db PAL_GREENMON ; WEEPINBELL - db PAL_GREENMON ; VICTREEBEL - db PAL_CYANMON ; TENTACOOL - db PAL_CYANMON ; TENTACRUEL - db PAL_GREYMON ; GEODUDE - db PAL_GREYMON ; GRAVELER - db PAL_GREYMON ; GOLEM - db PAL_REDMON ; PONYTA - db PAL_REDMON ; RAPIDASH - db PAL_PINKMON ; SLOWPOKE - db PAL_PINKMON ; SLOWBRO - db PAL_GREYMON ; MAGNEMITE - db PAL_GREYMON ; MAGNETON - db PAL_BROWNMON ; FARFETCH_D - db PAL_BROWNMON ; DODUO - db PAL_BROWNMON ; DODRIO - db PAL_BLUEMON ; SEEL - db PAL_BLUEMON ; DEWGONG - db PAL_PURPLEMON ; GRIMER - db PAL_PURPLEMON ; MUK - db PAL_GREYMON ; SHELLDER - db PAL_GREYMON ; CLOYSTER - db PAL_PURPLEMON ; GASTLY - db PAL_PURPLEMON ; HAUNTER - db PAL_PURPLEMON ; GENGAR - db PAL_GREYMON ; ONIX - db PAL_YELLOWMON ; DROWZEE - db PAL_YELLOWMON ; HYPNO - db PAL_REDMON ; KRABBY - db PAL_REDMON ; KINGLER - db PAL_YELLOWMON ; VOLTORB - db PAL_YELLOWMON ; ELECTRODE - db PAL_PINKMON ; EXEGGCUTE - db PAL_GREENMON ; EXEGGUTOR - db PAL_GREYMON ; CUBONE - db PAL_GREYMON ; MAROWAK - db PAL_BROWNMON ; HITMONLEE - db PAL_BROWNMON ; HITMONCHAN - db PAL_PINKMON ; LICKITUNG - db PAL_PURPLEMON ; KOFFING - db PAL_PURPLEMON ; WEEZING - db PAL_GREYMON ; RHYHORN - db PAL_GREYMON ; RHYDON - db PAL_PINKMON ; CHANSEY - db PAL_BLUEMON ; TANGELA - db PAL_BROWNMON ; KANGASKHAN - db PAL_CYANMON ; HORSEA - db PAL_CYANMON ; SEADRA - db PAL_REDMON ; GOLDEEN - db PAL_REDMON ; SEAKING - db PAL_REDMON ; STARYU - db PAL_GREYMON ; STARMIE - db PAL_PINKMON ; MR_MIME - db PAL_GREENMON ; SCYTHER - db PAL_MEWMON ; JYNX - db PAL_YELLOWMON ; ELECTABUZZ - db PAL_REDMON ; MAGMAR - db PAL_BROWNMON ; PINSIR - db PAL_GREYMON ; TAUROS - db PAL_REDMON ; MAGIKARP - db PAL_BLUEMON ; GYARADOS - db PAL_CYANMON ; LAPRAS - db PAL_GREYMON ; DITTO - db PAL_GREYMON ; EEVEE - db PAL_CYANMON ; VAPOREON - db PAL_YELLOWMON ; JOLTEON - db PAL_REDMON ; FLAREON - db PAL_GREYMON ; PORYGON - db PAL_BLUEMON ; OMANYTE - db PAL_BLUEMON ; OMASTAR - db PAL_BROWNMON ; KABUTO - db PAL_BROWNMON ; KABUTOPS - db PAL_GREYMON ; AERODACTYL - db PAL_PINKMON ; SNORLAX - db PAL_BLUEMON ; ARTICUNO - db PAL_YELLOWMON ; ZAPDOS - db PAL_REDMON ; MOLTRES - db PAL_GREYMON ; DRATINI - db PAL_BLUEMON ; DRAGONAIR - db PAL_BROWNMON ; DRAGONITE - db PAL_MEWMON ; MEWTWO - db PAL_MEWMON ; MEW - -; palettes for overworlds, title screen, monsters -SuperPalettes: ; 72660 (1c:6660) - RGB 31,29,31 ; PAL_ROUTE - RGB 21,28,11 - RGB 20,26,31 - RGB 3,2,2 - RGB 31,29,31 ; PAL_PALLET - RGB 25,28,27 - RGB 20,26,31 - RGB 3,2,2 - RGB 31,29,31 ; PAL_VIRIDIAN - RGB 17,26,3 - RGB 20,26,31 - RGB 3,2,2 - RGB 31,29,31 ; PAL_PEWTER - RGB 23,25,16 - RGB 20,26,31 - RGB 3,2,2 - RGB 31,29,31 ; PAL_CERULEAN - RGB 17,20,30 - RGB 20,26,31 - RGB 3,2,2 - RGB 31,29,31 ; PAL_LAVENDER - RGB 27,20,27 - RGB 20,26,31 - RGB 3,2,2 - RGB 31,29,31 ; PAL_VERMILION - RGB 30,18,0 - RGB 20,26,31 - RGB 3,2,2 - RGB 31,29,31 ; PAL_CELADON - RGB 16,30,22 - RGB 20,26,31 - RGB 3,2,2 - RGB 31,29,31 ; PAL_FUCHSIA - RGB 31,15,22 - RGB 20,26,31 - RGB 3,2,2 - RGB 31,29,31 ; PAL_CINNABAR - RGB 26,10,6 - RGB 20,26,31 - RGB 3,2,2 - RGB 31,29,31 ; PAL_INDIGO - RGB 22,14,24 - RGB 20,26,31 - RGB 3,2,2 - RGB 31,29,31 ; PAL_SAFFRON - RGB 27,27,3 - RGB 20,26,31 - RGB 3,2,2 - RGB 31,29,31 ; PAL_TOWNMAP - RGB 20,26,31 - RGB 17,23,10 - RGB 3,2,2 -IF _RED - RGB 31,29,31 ; PAL_LOGO1 - RGB 30,30,17 - RGB 17,23,10 - RGB 21,0,4 -ENDC -IF _BLUE - RGB 31,29,31 ; PAL_LOGO1 - RGB 30,30,17 - RGB 21,0,4 - RGB 14,19,29 -ENDC - RGB 31,29,31 ; PAL_LOGO2 - RGB 30,30,17 - RGB 18,18,24 - RGB 7,7,16 - RGB 31,29,31 ; PAL_0F - RGB 24,20,30 - RGB 11,20,30 - RGB 3,2,2 - RGB 31,29,31 ; PAL_MEWMON - RGB 30,22,17 - RGB 16,14,19 - RGB 3,2,2 - RGB 31,29,31 ; PAL_BLUEMON - RGB 18,20,27 - RGB 11,15,23 - RGB 3,2,2 - RGB 31,29,31 ; PAL_REDMON - RGB 31,20,10 - RGB 26,10,6 - RGB 3,2,2 - RGB 31,29,31 ; PAL_CYANMON - RGB 21,25,29 - RGB 14,19,25 - RGB 3,2,2 - RGB 31,29,31 ; PAL_PURPLEMON - RGB 27,22,24 - RGB 21,15,23 - RGB 3,2,2 - RGB 31,29,31 ; PAL_BROWNMON - RGB 28,20,15 - RGB 21,14,9 - RGB 3,2,2 - RGB 31,29,31 ; PAL_GREENMON - RGB 20,26,16 - RGB 9,20,11 - RGB 3,2,2 - RGB 31,29,31 ; PAL_PINKMON - RGB 30,22,24 - RGB 28,15,21 - RGB 3,2,2 - RGB 31,29,31 ; PAL_YELLOWMON - RGB 31,28,14 - RGB 26,20,0 - RGB 3,2,2 - RGB 31,29,31 ; PAL_GREYMON - RGB 26,21,22 - RGB 15,15,18 - RGB 3,2,2 - RGB 31,29,31 ; PAL_SLOTS1 - RGB 26,21,22 - RGB 27,20,6 - RGB 3,2,2 - RGB 31,29,31 ; PAL_SLOTS2 - RGB 31,31,17 -IF _RED - RGB 25,17,21 -ENDC -IF _BLUE - RGB 16,19,29 -ENDC - RGB 3,2,2 - RGB 31,29,31 ; PAL_SLOTS3 - RGB 22,31,16 -IF _RED - RGB 25,17,21 -ENDC -IF _BLUE - RGB 16,19,29 -ENDC - RGB 3,2,2 - RGB 31,29,31 ; PAL_SLOTS4 -IF _RED - RGB 16,19,29 - RGB 25,17,21 -ENDC -IF _BLUE - RGB 25,17,21 - RGB 16,19,29 -ENDC - RGB 3,2,2 - RGB 31,29,31 ; PAL_BLACK - RGB 7,7,7 - RGB 2,3,3 - RGB 3,2,2 - RGB 31,29,31 ; PAL_GREENBAR - RGB 30,26,15 - RGB 9,20,11 - RGB 3,2,2 - RGB 31,29,31 ; PAL_YELLOWBAR - RGB 30,26,15 - RGB 26,20,0 - RGB 3,2,2 - RGB 31,29,31 ; PAL_REDBAR - RGB 30,26,15 - RGB 26,10,6 - RGB 3,2,2 - RGB 31,29,31 ; PAL_BADGE - RGB 30,22,17 - RGB 11,15,23 - RGB 3,2,2 - RGB 31,29,31 ; PAL_CAVE - RGB 21,14,9 - RGB 18,24,22 - RGB 3,2,2 - RGB 31,29,31 ; PAL_GAMEFREAK - RGB 31,28,14 - RGB 24,20,10 - RGB 3,2,2 +INCLUDE "data/mon_palettes.asm" + +INCLUDE "data/super_palettes.asm" BorderPalettes: ; 72788 (1c:6788) IF _RED @@ -103947,22 +87145,7 @@ DisplayCreditsMon: ; 740cb (1d:40cb) ld [$FF47],a ret -CreditsMons: ; 74131 (1d:4131) - db VENUSAUR - db ARBOK - db RHYHORN - db FEAROW - db ABRA - db GRAVELER - db HITMONLEE - db TANGELA - db STARMIE - db GYARADOS - db DITTO - db OMASTAR - db VILEPLUME - db NIDOKING - db PARASECT +INCLUDE "data/credit_mons.asm" Func_74140: ; 74140 (1d:4140) ld h, b @@ -108465,63 +91648,7 @@ HiddenItems: ; 76688 (1d:6688) ld a, $24 jp Func_3ef5 -HiddenItemCoords: ; 766b8 (1d:66b8) -; map ID, then coords - db VIRIDIAN_FOREST,$12,$01 - db VIRIDIAN_FOREST,$2a,$10 - db MT_MOON_3,$0c,$12 - db ROUTE_25,$03,$26 - db ROUTE_9,$07,$0e - db SS_ANNE_6,$09,$0d - db SS_ANNE_10,$01,$03 - db ROUTE_10,$11,$09 - db ROUTE_10,$35,$10 - db ROCKET_HIDEOUT_1,$0f,$15 - db ROCKET_HIDEOUT_3,$11,$1b - db ROCKET_HIDEOUT_4,$01,$19 - db POKEMONTOWER_5,$0c,$04 - db ROUTE_13,$0e,$01 - db ROUTE_13,$0d,$10 - db MANSION_4,$09,$01 - db SAFARI_ZONE_ENTRANCE,$01,$0a - db SAFARI_ZONE_WEST,$05,$06 - db SILPH_CO_5F,$03,$0c - db SILPH_CO_9F,$0f,$02 - db COPYCATS_HOUSE_2F,$01,$01 - db UNKNOWN_DUNGEON_1,$0b,$0e - db UNKNOWN_DUNGEON_3,$03,$1b - db POWER_PLANT,$10,$11 - db POWER_PLANT,$01,$0c - db SEAFOAM_ISLANDS_3,$0f,$0f - db SEAFOAM_ISLANDS_5,$11,$19 - db MANSION_1,$10,$08 - db MANSION_3,$09,$01 - db ROUTE_23,$2c,$09 - db ROUTE_23,$46,$13 - db ROUTE_23,$5a,$08 - db VICTORY_ROAD_2,$02,$05 - db VICTORY_ROAD_2,$07,$1a - db $6f,$0b,$0e - db VIRIDIAN_CITY,$04,$0e - db ROUTE_11,$05,$30 - db ROUTE_12,$3f,$02 - db ROUTE_17,$0e,$0f - db ROUTE_17,$2d,$08 - db ROUTE_17,$48,$11 - db ROUTE_17,$5b,$04 - db ROUTE_17,$79,$08 - db UNDERGROUND_PATH_NS,$04,$03 - db UNDERGROUND_PATH_NS,$22,$04 - db UNDERGROUND_PATH_WE,$02,$0c - db UNDERGROUND_PATH_WE,$05,$15 - db CELADON_CITY,$0f,$30 - db ROUTE_25,$01,$0a - db MT_MOON_3,$09,$21 - db SEAFOAM_ISLANDS_4,$10,$09 - db VERMILION_CITY,$0b,$0e - db CERULEAN_CITY,$08,$0f - db ROUTE_4,$03,$28 - db $ff +INCLUDE "data/hidden_item_coords.asm" FoundHiddenItemText: ; 7675b (1d:675b) ; XXX where is the pointer to this? @@ -108627,20 +91754,7 @@ HiddenCoins: ; 76799 (1d:6799) .done jp Func_3ef5 -HiddenCoinCoords: ; 76822 (1d:6822) - db GAME_CORNER,$08,$00 - db GAME_CORNER,$10,$01 - db GAME_CORNER,$0b,$03 - db GAME_CORNER,$0e,$03 - db GAME_CORNER,$0c,$04 - db GAME_CORNER,$0c,$09 - db GAME_CORNER,$0f,$09 - db GAME_CORNER,$0e,$10 - db GAME_CORNER,$10,$0a - db GAME_CORNER,$07,$0b - db GAME_CORNER,$08,$0f - db GAME_CORNER,$0f,$0c - db $ff +INCLUDE "data/hidden_coins.asm" FoundHiddenCoinsText: ; 76847 (1d:6847) TX_FAR _FoundHiddenCoinsText @@ -115665,12 +98779,4 @@ GetMachinePrice: ; 7bf86 (1e:7f86) ld [$ff8d], a ret -TechnicalMachinePrices: ; 7bfa7 (1e:7fa7) -; In thousands (nybbles). - db $32, $21, $34, $24, $34 - db $21, $45, $55, $32, $32 - db $55, $52, $54, $52, $41 - db $21, $12, $42, $25, $24 - db $22, $52, $24, $34, $42 - - +INCLUDE "data/tm_prices.asm" diff --git a/text/item_names.asm b/text/item_names.asm new file mode 100755 index 00000000..3c0f4c49 --- /dev/null +++ b/text/item_names.asm @@ -0,0 +1,98 @@ +ItemNames: ; 472b (1:472b) + db "MASTER BALL@" + db "ULTRA BALL@" + db "GREAT BALL@" + db "POKé BALL@" + db "TOWN MAP@" + db "BICYCLE@" + db "?????@" + db "SAFARI BALL@" + db "POKéDEX@" + db "MOON STONE@" + db "ANTIDOTE@" + db "BURN HEAL@" + db "ICE HEAL@" + db "AWAKENING@" + db "PARLYZ HEAL@" + db "FULL RESTORE@" + db "MAX POTION@" + db "HYPER POTION@" + db "SUPER POTION@" + db "POTION@" + db "BOULDERBADGE@" + db "CASCADEBADGE@" + db "THUNDERBADGE@" + db "RAINBOWBADGE@" + db "SOULBADGE@" + db "MARSHBADGE@" + db "VOLCANOBADGE@" + db "EARTHBADGE@" + db "ESCAPE ROPE@" + db "REPEL@" + db "OLD AMBER@" + db "FIRE STONE@" + db "THUNDERSTONE@" + db "WATER STONE@" + db "HP UP@" + db "PROTEIN@" + db "IRON@" + db "CARBOS@" + db "CALCIUM@" + db "RARE CANDY@" + db "DOME FOSSIL@" + db "HELIX FOSSIL@" + db "SECRET KEY@" + db "?????@" + db "BIKE VOUCHER@" + db "X ACCURACY@" + db "LEAF STONE@" + db "CARD KEY@" + db "NUGGET@" + db "PP UP@" + db "POKé DOLL@" + db "FULL HEAL@" + db "REVIVE@" + db "MAX REVIVE@" + db "GUARD SPEC.@" + db "SUPER REPEL@" + db "MAX REPEL@" + db "DIRE HIT@" + db "COIN@" + db "FRESH WATER@" + db "SODA POP@" + db "LEMONADE@" + db "S.S.TICKET@" + db "GOLD TEETH@" + db "X ATTACK@" + db "X DEFEND@" + db "X SPEED@" + db "X SPECIAL@" + db "COIN CASE@" + db "OAK's PARCEL@" + db "ITEMFINDER@" + db "SILPH SCOPE@" + db "POKé FLUTE@" + db "LIFT KEY@" + db "EXP.ALL@" + db "OLD ROD@" + db "GOOD ROD@" + db "SUPER ROD@" + db "PP UP@" + db "ETHER@" + db "MAX ETHER@" + db "ELIXER@" + db "MAX ELIXER@" + db "B2F@" + db "B1F@" + db "1F@" + db "2F@" + db "3F@" + db "4F@" + db "5F@" + db "6F@" + db "7F@" + db "8F@" + db "9F@" + db "10F@" + db "11F@" + db "B4F@" diff --git a/text/map_names.asm b/text/map_names.asm new file mode 100755 index 00000000..dd8592be --- /dev/null +++ b/text/map_names.asm @@ -0,0 +1,107 @@ +MapNames: ; 71473 (1c:5473) +PalletTownName: ; 71473 (1c:5473) + db "PALLET TOWN@" +ViridianCityName: ; 7147f (1c:547f) + db "VIRIDIAN CITY@" +PewterCityName: ; 7148d (1c:548d) + db "PEWTER CITY@" +CeruleanCityName: ; 71499 (1c:5499) + db "CERULEAN CITY@" +LavenderTownName: ; 714a7 (1c:54a7) + db "LAVENDER TOWN@" +VermilionCityName: ; 714b5 (1c:54b5) + db "VERMILION CITY@" +CeladonCityName: ; 714c4 (1c:54c4) + db "CELADON CITY@" +FuchsiaCityName: ; 714d1 (1c:54d1) + db "FUCHSIA CITY@" +CinnabarIslandName: ; 714de (1c:54de) + db "CINNABAR ISLAND@" +IndigoPlateauName: ; 714ee (1c:54ee) + db "INDIGO PLATEAU@" +SaffronCityName: ; 714fd (1c:54fd) + db "SAFFRON CITY@" +Route1Name: ; 7150a (1c:550a) + db "ROUTE 1@" +Route2Name: ; 71512 (1c:5512) + db "ROUTE 2@" +Route3Name: ; 7151a (1c:551a) + db "ROUTE 3@" +Route4Name: ; 71522 (1c:5522) + db "ROUTE 4@" +Route5Name: ; 7152a (1c:552a) + db "ROUTE 5@" +Route6Name: ; 71532 (1c:5532) + db "ROUTE 6@" +Route7Name: ; 7153a (1c:553a) + db "ROUTE 7@" +Route8Name: ; 71542 (1c:5542) + db "ROUTE 8@" +Route9Name: ; 7154a (1c:554a) + db "ROUTE 9@" +Route10Name: ; 71552 (1c:5552) + db "ROUTE 10@" +Route11Name: ; 7155b (1c:555b) + db "ROUTE 11@" +Route12Name: ; 71564 (1c:5564) + db "ROUTE 12@" +Route13Name: ; 7156d (1c:556d) + db "ROUTE 13@" +Route14Name: ; 71576 (1c:5576) + db "ROUTE 14@" +Route15Name: ; 7157f (1c:557f) + db "ROUTE 15@" +Route16Name: ; 71588 (1c:5588) + db "ROUTE 16@" +Route17Name: ; 71591 (1c:5591) + db "ROUTE 17@" +Route18Name: ; 7159a (1c:559a) + db "ROUTE 18@" +Route19Name: ; 715a3 (1c:55a3) + db "SEA ROUTE 19@" +Route20Name: ; 715b0 (1c:55b0) + db "SEA ROUTE 20@" +Route21Name: ; 715bd (1c:55bd) + db "SEA ROUTE 21@" +Route22Name: ; 715ca (1c:55ca) + db "ROUTE 22@" +Route23Name: ; 715d3 (1c:55d3) + db "ROUTE 23@" +Route24Name: ; 715dc (1c:55dc) + db "ROUTE 24@" +Route25Name: ; 715e5 (1c:55e5) + db "ROUTE 25@" +ViridianForestName: ; 715ee (1c:55ee) + db "VIRIDIAN FOREST@" +MountMoonName: ; 715fe (1c:55fe) + db "MT.MOON@" +RockTunnelName: ; 71606 (1c:5606) + db "ROCK TUNNEL@" +SeaCottageName: ; 71612 (1c:5612) + db "SEA COTTAGE@" +SSAnneName: ; 7161e (1c:561e) + db "S.S.ANNE@" +PokemonLeagueName: ; 71627 (1c:5627) + db "#MON LEAGUE@" +UndergroundPathName: ; 71633 (1c:5633) + db "UNDERGROUND PATH@" +PokemonTowerName: ; 71644 (1c:5644) + db "#MON TOWER@" +SeafoamIslandsName: ; 7164f (1c:564f) + db "SEAFOAM ISLANDS@" +VictoryRoadName: ; 7165f (1c:565f) + db "VICTORY ROAD@" +DiglettsCaveName: ; 7166c (1c:566c) + db "DIGLETT's CAVE@" +RocketHQName: ; 7167a (1c:567a) + db "ROCKET HQ@" +SilphCoName: ; 71684 (1c:5684) + db "SILPH CO.@" +PokemonMansionName: ; 7168e (1c:568e) + db $4a," MANSION@" +SafariZoneName: ; 71698 (1c:5698) + db "SAFARI ZONE@" +CeruleanCaveName: ; 716a4 (1c:56a4) + db "CERULEAN CAVE@" +PowerPlantName: ; 716b2 (1c:56b2) + db "POWER PLANT@" diff --git a/text/monster_names.asm b/text/monster_names.asm new file mode 100755 index 00000000..c7e0226f --- /dev/null +++ b/text/monster_names.asm @@ -0,0 +1,191 @@ +MonsterNames: ; 1c21e (7:421e) + db "RHYDON@@@@" + db "KANGASKHAN" + db "NIDORAN♂@@" + db "CLEFAIRY@@" + db "SPEAROW@@@" + db "VOLTORB@@@" + db "NIDOKING@@" + db "SLOWBRO@@@" + db "IVYSAUR@@@" + db "EXEGGUTOR@" + db "LICKITUNG@" + db "EXEGGCUTE@" + db "GRIMER@@@@" + db "GENGAR@@@@" + db "NIDORAN♀@@" + db "NIDOQUEEN@" + db "CUBONE@@@@" + db "RHYHORN@@@" + db "LAPRAS@@@@" + db "ARCANINE@@" + db "MEW@@@@@@@" + db "GYARADOS@@" + db "SHELLDER@@" + db "TENTACOOL@" + db "GASTLY@@@@" + db "SCYTHER@@@" + db "STARYU@@@@" + db "BLASTOISE@" + db "PINSIR@@@@" + db "TANGELA@@@" + db "MISSINGNO." + db "MISSINGNO." + db "GROWLITHE@" + db "ONIX@@@@@@" + db "FEAROW@@@@" + db "PIDGEY@@@@" + db "SLOWPOKE@@" + db "KADABRA@@@" + db "GRAVELER@@" + db "CHANSEY@@@" + db "MACHOKE@@@" + db "MR.MIME@@@" + db "HITMONLEE@" + db "HITMONCHAN" + db "ARBOK@@@@@" + db "PARASECT@@" + db "PSYDUCK@@@" + db "DROWZEE@@@" + db "GOLEM@@@@@" + db "MISSINGNO." + db "MAGMAR@@@@" + db "MISSINGNO." + db "ELECTABUZZ" + db "MAGNETON@@" + db "KOFFING@@@" + db "MISSINGNO." + db "MANKEY@@@@" + db "SEEL@@@@@@" + db "DIGLETT@@@" + db "TAUROS@@@@" + db "MISSINGNO." + db "MISSINGNO." + db "MISSINGNO." + db "FARFETCH'D" + db "VENONAT@@@" + db "DRAGONITE@" + db "MISSINGNO." + db "MISSINGNO." + db "MISSINGNO." + db "DODUO@@@@@" + db "POLIWAG@@@" + db "JYNX@@@@@@" + db "MOLTRES@@@" + db "ARTICUNO@@" + db "ZAPDOS@@@@" + db "DITTO@@@@@" + db "MEOWTH@@@@" + db "KRABBY@@@@" + db "MISSINGNO." + db "MISSINGNO." + db "MISSINGNO." + db "VULPIX@@@@" + db "NINETALES@" + db "PIKACHU@@@" + db "RAICHU@@@@" + db "MISSINGNO." + db "MISSINGNO." + db "DRATINI@@@" + db "DRAGONAIR@" + db "KABUTO@@@@" + db "KABUTOPS@@" + db "HORSEA@@@@" + db "SEADRA@@@@" + db "MISSINGNO." + db "MISSINGNO." + db "SANDSHREW@" + db "SANDSLASH@" + db "OMANYTE@@@" + db "OMASTAR@@@" + db "JIGGLYPUFF" + db "WIGGLYTUFF" + db "EEVEE@@@@@" + db "FLAREON@@@" + db "JOLTEON@@@" + db "VAPOREON@@" + db "MACHOP@@@@" + db "ZUBAT@@@@@" + db "EKANS@@@@@" + db "PARAS@@@@@" + db "POLIWHIRL@" + db "POLIWRATH@" + db "WEEDLE@@@@" + db "KAKUNA@@@@" + db "BEEDRILL@@" + db "MISSINGNO." + db "DODRIO@@@@" + db "PRIMEAPE@@" + db "DUGTRIO@@@" + db "VENOMOTH@@" + db "DEWGONG@@@" + db "MISSINGNO." + db "MISSINGNO." + db "CATERPIE@@" + db "METAPOD@@@" + db "BUTTERFREE" + db "MACHAMP@@@" + db "MISSINGNO." + db "GOLDUCK@@@" + db "HYPNO@@@@@" + db "GOLBAT@@@@" + db "MEWTWO@@@@" + db "SNORLAX@@@" + db "MAGIKARP@@" + db "MISSINGNO." + db "MISSINGNO." + db "MUK@@@@@@@" + db "MISSINGNO." + db "KINGLER@@@" + db "CLOYSTER@@" + db "MISSINGNO." + db "ELECTRODE@" + db "CLEFABLE@@" + db "WEEZING@@@" + db "PERSIAN@@@" + db "MAROWAK@@@" + db "MISSINGNO." + db "HAUNTER@@@" + db "ABRA@@@@@@" + db "ALAKAZAM@@" + db "PIDGEOTTO@" + db "PIDGEOT@@@" + db "STARMIE@@@" + db "BULBASAUR@" + db "VENUSAUR@@" + db "TENTACRUEL" + db "MISSINGNO." + db "GOLDEEN@@@" + db "SEAKING@@@" + db "MISSINGNO." + db "MISSINGNO." + db "MISSINGNO." + db "MISSINGNO." + db "PONYTA@@@@" + db "RAPIDASH@@" + db "RATTATA@@@" + db "RATICATE@@" + db "NIDORINO@@" + db "NIDORINA@@" + db "GEODUDE@@@" + db "PORYGON@@@" + db "AERODACTYL" + db "MISSINGNO." + db "MAGNEMITE@" + db "MISSINGNO." + db "MISSINGNO." + db "CHARMANDER" + db "SQUIRTLE@@" + db "CHARMELEON" + db "WARTORTLE@" + db "CHARIZARD@" + db "MISSINGNO." + db "MISSINGNO." + db "MISSINGNO." + db "MISSINGNO." + db "ODDISH@@@@" + db "GLOOM@@@@@" + db "VILEPLUME@" + db "BELLSPROUT" + db "WEEPINBELL" + db "VICTREEBEL" diff --git a/text/trainer_names.asm b/text/trainer_names.asm new file mode 100755 index 00000000..6a3cf8f7 --- /dev/null +++ b/text/trainer_names.asm @@ -0,0 +1,48 @@ +TrainerNames: ; 399ff (e:59ff) + db "YOUNGSTER@" + db "BUG CATCHER@" + db "LASS@" + db "SAILOR@" + db "JR.TRAINER♂@" + db "JR.TRAINER♀@" + db "POKéMANIAC@" + db "SUPER NERD@" + db "HIKER@" + db "BIKER@" + db "BURGLAR@" + db "ENGINEER@" + db "JUGGLER@" + db "FISHERMAN@" + db "SWIMMER@" + db "CUE BALL@" + db "GAMBLER@" + db "BEAUTY@" + db "PSYCHIC@" + db "ROCKER@" + db "JUGGLER@" + db "TAMER@" + db "BIRD KEEPER@" + db "BLACKBELT@" + db "RIVAL1@" + db "PROF.OAK@" + db "CHIEF@" + db "SCIENTIST@" + db "GIOVANNI@" + db "ROCKET@" + db "COOLTRAINER♂@" + db "COOLTRAINER♀@" + db "BRUNO@" + db "BROCK@" + db "MISTY@" + db "LT.SURGE@" + db "ERIKA@" + db "KOGA@" + db "BLAINE@" + db "SABRINA@" + db "GENTLEMAN@" + db "RIVAL2@" + db "RIVAL3@" + db "LORELEI@" + db "CHANNELER@" + db "AGATHA@" + db "LANCE@" -- cgit v1.2.3