From 24c01b09bb2b617812bd826d1cf9ab5e3ec6a023 Mon Sep 17 00:00:00 2001 From: "U-Fish-PC\\Daniel" Date: Sun, 18 May 2014 14:19:10 -0400 Subject: Pull map scripts out of main.asm --- data/hidden_objects.asm | 3 +- main.asm | 78393 ++++++++---------------- scripts/agatha.asm | 157 + scripts/battlecenterm.asm | 38 + scripts/bikeshop.asm | 153 + scripts/billshouse.asm | 208 + scripts/blueshouse.asm | 90 + scripts/bruno.asm | 154 + scripts/celadoncity.asm | 136 + scripts/celadondiner.asm | 67 + scripts/celadongamecorner.asm | 536 + scripts/celadongym.asm | 343 + scripts/celadonhotel.asm | 19 + scripts/celadonhouse.asm | 20 + scripts/celadonmansion1.asm | 39 + scripts/celadonmansion2.asm | 10 + scripts/celadonmansion3.asm | 73 + scripts/celadonmansion4.asm | 9 + scripts/celadonmansion5.asm | 22 + scripts/celadonmart1.asm | 19 + scripts/celadonmart2.asm | 21 + scripts/celadonmart3.asm | 109 + scripts/celadonmart4.asm | 20 + scripts/celadonmart5.asm | 21 + scripts/celadonmartelevator.asm | 71 + scripts/celadonmartroof.asm | 263 + scripts/celadonpokecenter.asm | 23 + scripts/celadonprizeroom.asm | 20 + scripts/ceruleancity.asm | 448 + scripts/ceruleangym.asm | 224 + scripts/ceruleanhouse1.asm | 18 + scripts/ceruleanhouse2.asm | 109 + scripts/ceruleanhousetrashed.asm | 40 + scripts/ceruleanmart.asm | 15 + scripts/ceruleanpokecenter.asm | 23 + scripts/cinnabargym.asm | 483 + scripts/cinnabarisland.asm | 87 + scripts/cinnabarmart.asm | 15 + scripts/cinnabarpokecenter.asm | 23 + scripts/copycatshouse1f.asm | 22 + scripts/copycatshouse2f.asm | 104 + scripts/daycarem.asm | 274 + scripts/diglettscave.asm | 5 + scripts/diglettscaveroute11.asm | 12 + scripts/diglettscaveroute2.asm | 11 + scripts/fanclub.asm | 181 + scripts/fightingdojo.asm | 337 + scripts/fuchsiacity.asm | 170 + scripts/fuchsiagym.asm | 336 + scripts/fuchsiahouse1.asm | 20 + scripts/fuchsiahouse2.asm | 118 + scripts/fuchsiahouse3.asm | 75 + scripts/fuchsiamart.asm | 15 + scripts/fuchsiameetingroom.asm | 20 + scripts/fuchsiapokecenter.asm | 23 + scripts/gary.asm | 297 + scripts/halloffameroom.asm | 117 + scripts/indigoplateau.asm | 4 + scripts/indigoplateaulobby.asm | 41 + scripts/lab1.asm | 30 + scripts/lab2.asm | 26 + scripts/lab3.asm | 63 + scripts/lab4.asm | 117 + scripts/lance.asm | 166 + scripts/lavenderhouse1.asm | 116 + scripts/lavenderhouse2.asm | 36 + scripts/lavendermart.asm | 33 + scripts/lavenderpokecenter.asm | 23 + scripts/lavendertown.asm | 63 + scripts/lorelei.asm | 153 + scripts/mansion1.asm | 139 + scripts/mansion2.asm | 145 + scripts/mansion3.asm | 153 + scripts/mansion4.asm | 132 + scripts/mtmoon1.asm | 225 + scripts/mtmoon2.asm | 10 + scripts/mtmoon3.asm | 414 + scripts/mtmoonpokecenter.asm | 97 + scripts/museum1f.asm | 253 + scripts/museum2f.asm | 39 + scripts/namerater.asm | 109 + scripts/oakslab.asm | 1244 + scripts/pallettown.asm | 228 + scripts/pewtercity.asm | 321 + scripts/pewtergym.asm | 237 + scripts/pewterhouse1.asm | 23 + scripts/pewterhouse2.asm | 14 + scripts/pewtermart.asm | 30 + scripts/pewterpokecenter.asm | 75 + scripts/pokemontower1.asm | 29 + scripts/pokemontower2.asm | 180 + scripts/pokemontower3.asm | 102 + scripts/pokemontower4.asm | 105 + scripts/pokemontower5.asm | 181 + scripts/pokemontower6.asm | 215 + scripts/pokemontower7.asm | 282 + scripts/powerplant.asm | 176 + scripts/redshouse1f.asm | 69 + scripts/redshouse2f.asm | 24 + scripts/rockethideout1.asm | 193 + scripts/rockethideout2.asm | 501 + scripts/rockethideout3.asm | 211 + scripts/rockethideout4.asm | 232 + scripts/rockethideoutelevator.asm | 84 + scripts/rocktunnel1.asm | 214 + scripts/rocktunnel2.asm | 242 + scripts/rocktunnelpokecenter.asm | 23 + scripts/route1.asm | 53 + scripts/route10.asm | 199 + scripts/route11.asm | 303 + scripts/route11gate.asm | 9 + scripts/route11gateupstairs.asm | 81 + scripts/route12.asm | 292 + scripts/route12gate.asm | 9 + scripts/route12gateupstairs.asm | 79 + scripts/route12house.asm | 57 + scripts/route13.asm | 313 + scripts/route14.asm | 303 + scripts/route15.asm | 296 + scripts/route15gate.asm | 9 + scripts/route15gateupstairs.asm | 47 + scripts/route16.asm | 263 + scripts/route16gate.asm | 121 + scripts/route16gateupstairs.asm | 46 + scripts/route16house.asm | 56 + scripts/route17.asm | 328 + scripts/route18.asm | 112 + scripts/route18gate.asm | 112 + scripts/route18gateupstairs.asm | 33 + scripts/route19.asm | 303 + scripts/route2.asm | 16 + scripts/route20.asm | 356 + scripts/route21.asm | 270 + scripts/route22.asm | 440 + scripts/route22gate.asm | 92 + scripts/route23.asm | 245 + scripts/route24.asm | 326 + scripts/route25.asm | 309 + scripts/route2gate.asm | 42 + scripts/route2house.asm | 18 + scripts/route3.asm | 252 + scripts/route4.asm | 63 + scripts/route5.asm | 9 + scripts/route5gate.asm | 121 + scripts/route6.asm | 187 + scripts/route6gate.asm | 72 + scripts/route7.asm | 9 + scripts/route7gate.asm | 75 + scripts/route8.asm | 275 + scripts/route8gate.asm | 72 + scripts/route9.asm | 269 + scripts/safarizonecenter.asm | 15 + scripts/safarizoneeast.asm | 23 + scripts/safarizoneentrance.asm | 300 + scripts/safarizonenorth.asm | 31 + scripts/safarizoneresthouse1.asm | 14 + scripts/safarizoneresthouse2.asm | 20 + scripts/safarizoneresthouse3.asm | 20 + scripts/safarizoneresthouse4.asm | 20 + scripts/safarizonesecrethouse.asm | 46 + scripts/safarizonewest.asm | 28 + scripts/saffroncity.asm | 121 + scripts/saffrongym.asm | 367 + scripts/saffronhouse1.asm | 27 + scripts/saffronhouse2.asm | 46 + scripts/saffronmart.asm | 15 + scripts/saffronpokecenter.asm | 23 + scripts/school.asm | 14 + scripts/seafoamislands1.asm | 50 + scripts/seafoamislands2.asm | 48 + scripts/seafoamislands3.asm | 48 + scripts/seafoamislands4.asm | 148 + scripts/seafoamislands5.asm | 178 + scripts/silphco1.asm | 20 + scripts/silphco10.asm | 126 + scripts/silphco11.asm | 369 + scripts/silphco2.asm | 248 + scripts/silphco3.asm | 139 + scripts/silphco4.asm | 201 + scripts/silphco5.asm | 223 + scripts/silphco6.asm | 225 + scripts/silphco7.asm | 525 + scripts/silphco8.asm | 187 + scripts/silphco9.asm | 248 + scripts/silphcoelevator.asm | 80 + scripts/ssanne1.asm | 15 + scripts/ssanne10.asm | 202 + scripts/ssanne2.asm | 210 + scripts/ssanne3.asm | 9 + scripts/ssanne4.asm | 5 + scripts/ssanne5.asm | 89 + scripts/ssanne6.asm | 72 + scripts/ssanne7.asm | 96 + scripts/ssanne8.asm | 164 + scripts/ssanne9.asm | 216 + scripts/tradecenterm.asm | 9 + scripts/undergroundpathentranceroute5.asm | 19 + scripts/undergroundpathentranceroute6.asm | 11 + scripts/undergroundpathentranceroute7.asm | 11 + scripts/undergroundpathentranceroute7copy.asm | 24 + scripts/undergroundpathentranceroute8.asm | 11 + scripts/undergroundpathns.asm | 5 + scripts/undergroundpathwe.asm | 5 + scripts/unknowndungeon1.asm | 7 + scripts/unknowndungeon2.asm | 7 + scripts/unknowndungeon3.asm | 44 + scripts/vermilioncity.asm | 263 + scripts/vermiliondock.asm | 210 + scripts/vermiliongym.asm | 275 + scripts/vermilionhouse1.asm | 24 + scripts/vermilionhouse2.asm | 57 + scripts/vermilionhouse3.asm | 13 + scripts/vermilionmart.asm | 15 + scripts/vermilionpokecenter.asm | 23 + scripts/victoryroad1.asm | 108 + scripts/victoryroad2.asm | 248 + scripts/victoryroad3.asm | 205 + scripts/viridiancity.asm | 333 + scripts/viridianforest.asm | 145 + scripts/viridianforestentrance.asm | 14 + scripts/viridianforestexit.asm | 14 + scripts/viridiangym.asm | 514 + scripts/viridianhouse.asm | 33 + scripts/viridianmart.asm | 95 + scripts/viridianpokecenter.asm | 23 + text/maps/bike_shop.asm | 22 +- text/maps/bills_house.asm | 10 +- text/maps/celadon_dept_store_roof.asm | 24 +- text/maps/celadon_diner.asm | 4 +- text/maps/celadon_game_corner.asm | 46 +- text/maps/celadon_gym.asm | 8 +- text/maps/cerulean_badge_house.asm | 22 +- text/maps/cerulean_city.asm | 28 +- text/maps/cerulean_gym.asm | 14 +- text/maps/cerulean_trashed_house.asm | 4 +- text/maps/champion.asm | 14 +- text/maps/cinnabar_gym.asm | 46 +- text/maps/cinnabar_lab_fossil_room.asm | 16 +- text/maps/copycats_house_2f.asm | 6 +- text/maps/daycare_1.asm | 18 +- text/maps/daycare_2.asm | 14 +- text/maps/fighting_dojo.asm | 8 +- text/maps/fuchsia_city.asm | 2 +- text/maps/fuchsia_fishing_house.asm | 10 +- text/maps/fujis_house.asm | 10 +- text/maps/lavender_house.asm | 4 +- text/maps/lavender_mart.asm | 4 +- text/maps/lavender_town.asm | 6 +- text/maps/lorelei.asm | 2 +- text/maps/mansion_2f.asm | 6 +- text/maps/mt_moon_b1f.asm | 2 +- text/maps/mt_moon_b2f.asm | 18 +- text/maps/mt_moon_pokecenter.asm | 8 +- text/maps/museum_1f.asm | 30 +- text/maps/name_rater.asm | 14 +- text/maps/oaks_lab.asm | 52 +- text/maps/pewter_city.asm | 16 +- text/maps/pewter_gym_1.asm | 2 +- text/maps/pewter_gym_2.asm | 16 +- text/maps/pewter_mart.asm | 4 +- text/maps/pokemon_league_gate.asm | 6 +- text/maps/pokemon_tower_2f.asm | 8 +- text/maps/pokemon_tower_5f.asm | 2 +- text/maps/pokemon_tower_6f.asm | 6 +- text/maps/pokemon_tower_7f.asm | 2 +- text/maps/rocket_hideout_b4f.asm | 8 +- text/maps/rocket_hideout_elevator.asm | 2 +- text/maps/route_1.asm | 6 +- text/maps/route_11_gate_upstairs.asm | 4 +- text/maps/route_12.asm | 4 +- text/maps/route_12_gate_upstairs.asm | 4 +- text/maps/route_12_house.asm | 12 +- text/maps/route_15_gate_upstairs.asm | 4 +- text/maps/route_16.asm | 4 +- text/maps/route_16_gate.asm | 6 +- text/maps/route_16_gate_upstairs.asm | 8 +- text/maps/route_16_house.asm | 2 +- text/maps/route_18_gate.asm | 6 +- text/maps/route_18_gate_upstairs.asm | 4 +- text/maps/route_22.asm | 16 +- text/maps/route_23.asm | 2 +- text/maps/route_24_1.asm | 14 +- text/maps/route_2_gate.asm | 2 +- text/maps/safari_zone_entrance.asm | 24 +- text/maps/safari_zone_secret_house.asm | 2 +- text/maps/saffron_gates.asm | 8 +- text/maps/saffron_gym.asm | 12 +- text/maps/silph_co_10f.asm | 4 +- text/maps/silph_co_11f.asm | 8 +- text/maps/silph_co_2f.asm | 2 +- text/maps/silph_co_3f.asm | 4 +- text/maps/silph_co_4f.asm | 4 +- text/maps/silph_co_5f_1.asm | 4 +- text/maps/silph_co_6f.asm | 20 +- text/maps/silph_co_7f.asm | 74 +- text/maps/silph_co_8f.asm | 68 +- text/maps/silph_co_9f.asm | 6 +- text/maps/ss_anne_5.asm | 12 +- text/maps/ss_anne_6.asm | 8 +- text/maps/ss_anne_7.asm | 2 +- text/maps/ss_anne_8.asm | 2 +- text/maps/ss_anne_9.asm | 14 +- text/maps/vermilion_city.asm | 4 +- text/maps/vermilion_fishing_house.asm | 12 +- text/maps/vermilion_gym_1.asm | 2 +- text/maps/vermilion_gym_2.asm | 8 +- text/maps/viridian_city.asm | 26 +- text/maps/viridian_gym.asm | 10 +- text/maps/viridian_house.asm | 2 +- text/maps/wardens_house.asm | 4 +- 310 files changed, 54335 insertions(+), 54112 deletions(-) create mode 100755 scripts/agatha.asm create mode 100755 scripts/battlecenterm.asm create mode 100755 scripts/bikeshop.asm create mode 100755 scripts/billshouse.asm create mode 100755 scripts/blueshouse.asm create mode 100755 scripts/bruno.asm create mode 100755 scripts/celadoncity.asm create mode 100755 scripts/celadondiner.asm create mode 100755 scripts/celadongamecorner.asm create mode 100755 scripts/celadongym.asm create mode 100755 scripts/celadonhotel.asm create mode 100755 scripts/celadonhouse.asm create mode 100755 scripts/celadonmansion1.asm create mode 100755 scripts/celadonmansion2.asm create mode 100755 scripts/celadonmansion3.asm create mode 100755 scripts/celadonmansion4.asm create mode 100755 scripts/celadonmansion5.asm create mode 100755 scripts/celadonmart1.asm create mode 100755 scripts/celadonmart2.asm create mode 100755 scripts/celadonmart3.asm create mode 100755 scripts/celadonmart4.asm create mode 100755 scripts/celadonmart5.asm create mode 100755 scripts/celadonmartelevator.asm create mode 100755 scripts/celadonmartroof.asm create mode 100755 scripts/celadonpokecenter.asm create mode 100755 scripts/celadonprizeroom.asm create mode 100755 scripts/ceruleancity.asm create mode 100755 scripts/ceruleangym.asm create mode 100755 scripts/ceruleanhouse1.asm create mode 100755 scripts/ceruleanhouse2.asm create mode 100755 scripts/ceruleanhousetrashed.asm create mode 100755 scripts/ceruleanmart.asm create mode 100755 scripts/ceruleanpokecenter.asm create mode 100755 scripts/cinnabargym.asm create mode 100755 scripts/cinnabarisland.asm create mode 100755 scripts/cinnabarmart.asm create mode 100755 scripts/cinnabarpokecenter.asm create mode 100755 scripts/copycatshouse1f.asm create mode 100755 scripts/copycatshouse2f.asm create mode 100755 scripts/daycarem.asm create mode 100755 scripts/diglettscave.asm create mode 100755 scripts/diglettscaveroute11.asm create mode 100755 scripts/diglettscaveroute2.asm create mode 100755 scripts/fanclub.asm create mode 100755 scripts/fightingdojo.asm create mode 100755 scripts/fuchsiacity.asm create mode 100755 scripts/fuchsiagym.asm create mode 100755 scripts/fuchsiahouse1.asm create mode 100755 scripts/fuchsiahouse2.asm create mode 100755 scripts/fuchsiahouse3.asm create mode 100755 scripts/fuchsiamart.asm create mode 100755 scripts/fuchsiameetingroom.asm create mode 100755 scripts/fuchsiapokecenter.asm create mode 100755 scripts/gary.asm create mode 100755 scripts/halloffameroom.asm create mode 100755 scripts/indigoplateau.asm create mode 100755 scripts/indigoplateaulobby.asm create mode 100755 scripts/lab1.asm create mode 100755 scripts/lab2.asm create mode 100755 scripts/lab3.asm create mode 100755 scripts/lab4.asm create mode 100755 scripts/lance.asm create mode 100755 scripts/lavenderhouse1.asm create mode 100755 scripts/lavenderhouse2.asm create mode 100755 scripts/lavendermart.asm create mode 100755 scripts/lavenderpokecenter.asm create mode 100755 scripts/lavendertown.asm create mode 100755 scripts/lorelei.asm create mode 100755 scripts/mansion1.asm create mode 100755 scripts/mansion2.asm create mode 100755 scripts/mansion3.asm create mode 100755 scripts/mansion4.asm create mode 100755 scripts/mtmoon1.asm create mode 100755 scripts/mtmoon2.asm create mode 100755 scripts/mtmoon3.asm create mode 100755 scripts/mtmoonpokecenter.asm create mode 100755 scripts/museum1f.asm create mode 100755 scripts/museum2f.asm create mode 100755 scripts/namerater.asm create mode 100755 scripts/oakslab.asm create mode 100755 scripts/pallettown.asm create mode 100755 scripts/pewtercity.asm create mode 100755 scripts/pewtergym.asm create mode 100755 scripts/pewterhouse1.asm create mode 100755 scripts/pewterhouse2.asm create mode 100755 scripts/pewtermart.asm create mode 100755 scripts/pewterpokecenter.asm create mode 100755 scripts/pokemontower1.asm create mode 100755 scripts/pokemontower2.asm create mode 100755 scripts/pokemontower3.asm create mode 100755 scripts/pokemontower4.asm create mode 100755 scripts/pokemontower5.asm create mode 100755 scripts/pokemontower6.asm create mode 100755 scripts/pokemontower7.asm create mode 100755 scripts/powerplant.asm create mode 100755 scripts/redshouse1f.asm create mode 100755 scripts/redshouse2f.asm create mode 100755 scripts/rockethideout1.asm create mode 100755 scripts/rockethideout2.asm create mode 100755 scripts/rockethideout3.asm create mode 100755 scripts/rockethideout4.asm create mode 100755 scripts/rockethideoutelevator.asm create mode 100755 scripts/rocktunnel1.asm create mode 100755 scripts/rocktunnel2.asm create mode 100755 scripts/rocktunnelpokecenter.asm create mode 100755 scripts/route1.asm create mode 100755 scripts/route10.asm create mode 100755 scripts/route11.asm create mode 100755 scripts/route11gate.asm create mode 100755 scripts/route11gateupstairs.asm create mode 100755 scripts/route12.asm create mode 100755 scripts/route12gate.asm create mode 100755 scripts/route12gateupstairs.asm create mode 100755 scripts/route12house.asm create mode 100755 scripts/route13.asm create mode 100755 scripts/route14.asm create mode 100755 scripts/route15.asm create mode 100755 scripts/route15gate.asm create mode 100755 scripts/route15gateupstairs.asm create mode 100755 scripts/route16.asm create mode 100755 scripts/route16gate.asm create mode 100755 scripts/route16gateupstairs.asm create mode 100755 scripts/route16house.asm create mode 100755 scripts/route17.asm create mode 100755 scripts/route18.asm create mode 100755 scripts/route18gate.asm create mode 100755 scripts/route18gateupstairs.asm create mode 100755 scripts/route19.asm create mode 100755 scripts/route2.asm create mode 100755 scripts/route20.asm create mode 100755 scripts/route21.asm create mode 100755 scripts/route22.asm create mode 100755 scripts/route22gate.asm create mode 100755 scripts/route23.asm create mode 100755 scripts/route24.asm create mode 100755 scripts/route25.asm create mode 100755 scripts/route2gate.asm create mode 100755 scripts/route2house.asm create mode 100755 scripts/route3.asm create mode 100755 scripts/route4.asm create mode 100755 scripts/route5.asm create mode 100755 scripts/route5gate.asm create mode 100755 scripts/route6.asm create mode 100755 scripts/route6gate.asm create mode 100755 scripts/route7.asm create mode 100755 scripts/route7gate.asm create mode 100755 scripts/route8.asm create mode 100755 scripts/route8gate.asm create mode 100755 scripts/route9.asm create mode 100755 scripts/safarizonecenter.asm create mode 100755 scripts/safarizoneeast.asm create mode 100755 scripts/safarizoneentrance.asm create mode 100755 scripts/safarizonenorth.asm create mode 100755 scripts/safarizoneresthouse1.asm create mode 100755 scripts/safarizoneresthouse2.asm create mode 100755 scripts/safarizoneresthouse3.asm create mode 100755 scripts/safarizoneresthouse4.asm create mode 100755 scripts/safarizonesecrethouse.asm create mode 100755 scripts/safarizonewest.asm create mode 100755 scripts/saffroncity.asm create mode 100755 scripts/saffrongym.asm create mode 100755 scripts/saffronhouse1.asm create mode 100755 scripts/saffronhouse2.asm create mode 100755 scripts/saffronmart.asm create mode 100755 scripts/saffronpokecenter.asm create mode 100755 scripts/school.asm create mode 100755 scripts/seafoamislands1.asm create mode 100755 scripts/seafoamislands2.asm create mode 100755 scripts/seafoamislands3.asm create mode 100755 scripts/seafoamislands4.asm create mode 100755 scripts/seafoamislands5.asm create mode 100755 scripts/silphco1.asm create mode 100755 scripts/silphco10.asm create mode 100755 scripts/silphco11.asm create mode 100755 scripts/silphco2.asm create mode 100755 scripts/silphco3.asm create mode 100755 scripts/silphco4.asm create mode 100755 scripts/silphco5.asm create mode 100755 scripts/silphco6.asm create mode 100755 scripts/silphco7.asm create mode 100755 scripts/silphco8.asm create mode 100755 scripts/silphco9.asm create mode 100755 scripts/silphcoelevator.asm create mode 100755 scripts/ssanne1.asm create mode 100755 scripts/ssanne10.asm create mode 100755 scripts/ssanne2.asm create mode 100755 scripts/ssanne3.asm create mode 100755 scripts/ssanne4.asm create mode 100755 scripts/ssanne5.asm create mode 100755 scripts/ssanne6.asm create mode 100755 scripts/ssanne7.asm create mode 100755 scripts/ssanne8.asm create mode 100755 scripts/ssanne9.asm create mode 100755 scripts/tradecenterm.asm create mode 100755 scripts/undergroundpathentranceroute5.asm create mode 100755 scripts/undergroundpathentranceroute6.asm create mode 100755 scripts/undergroundpathentranceroute7.asm create mode 100755 scripts/undergroundpathentranceroute7copy.asm create mode 100755 scripts/undergroundpathentranceroute8.asm create mode 100755 scripts/undergroundpathns.asm create mode 100755 scripts/undergroundpathwe.asm create mode 100755 scripts/unknowndungeon1.asm create mode 100755 scripts/unknowndungeon2.asm create mode 100755 scripts/unknowndungeon3.asm create mode 100755 scripts/vermilioncity.asm create mode 100755 scripts/vermiliondock.asm create mode 100755 scripts/vermiliongym.asm create mode 100755 scripts/vermilionhouse1.asm create mode 100755 scripts/vermilionhouse2.asm create mode 100755 scripts/vermilionhouse3.asm create mode 100755 scripts/vermilionmart.asm create mode 100755 scripts/vermilionpokecenter.asm create mode 100755 scripts/victoryroad1.asm create mode 100755 scripts/victoryroad2.asm create mode 100755 scripts/victoryroad3.asm create mode 100755 scripts/viridiancity.asm create mode 100755 scripts/viridianforest.asm create mode 100755 scripts/viridianforestentrance.asm create mode 100755 scripts/viridianforestexit.asm create mode 100755 scripts/viridiangym.asm create mode 100755 scripts/viridianhouse.asm create mode 100755 scripts/viridianmart.asm create mode 100755 scripts/viridianpokecenter.asm diff --git a/data/hidden_objects.asm b/data/hidden_objects.asm index 01ecfd97..54326b35 100755 --- a/data/hidden_objects.asm +++ b/data/hidden_objects.asm @@ -608,7 +608,8 @@ Mansion1HiddenObjects: ; 46f2b (11:6f2b) db $FF Mansion2HiddenObjects: ; 46f38 (11:6f38) db $0b,$02,$04 ; XXX, y, x - dbw Bank(Func_52037), Func_52037 + db Bank(Mansion2Script_52037) + dw Mansion2Script_52037 db $FF Mansion3HiddenObjects: ; 46f3f (11:6f3f) db $09,$01,MAX_REVIVE diff --git a/main.asm b/main.asm index 819a596a..a197ccab 100755 --- a/main.asm +++ b/main.asm @@ -10333,8 +10333,8 @@ GivePokemon:: ; 3e48 (0:3e48) ld [$d127], a xor a ld [$cc49], a - ld b, BANK(Func_4fda5) - ld hl, Func_4fda5 + ld b, BANK(_GivePokemon) + ld hl, _GivePokemon jp Bankswitch GenRandom:: ; 3e5c (0:3e5c) @@ -29002,56572 +29002,27730 @@ Func_18e36: ; 18e36 (6:4e36) 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 +INCLUDE "scripts/pallettown.asm" -PalletTownTextPointers: ; 18f88 (6:4f88) - dw PalletTownText1 - dw PalletTownText2 - dw PalletTownText3 - dw PalletTownText4 - dw PalletTownText5 - dw PalletTownText6 - dw PalletTownText7 +INCLUDE "scripts/viridiancity.asm" -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 +INCLUDE "scripts/pewtercity.asm" -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 +INCLUDE "scripts/ceruleancity.asm" -OakWalksUpText: ; 18fce (6:4fce) - TX_FAR _OakWalksUpText - db "@" +INCLUDE "scripts/vermilioncity.asm" -PalletTownText2: ; 0x18fd3 girl - TX_FAR _PalletTownText2 - db "@" +INCLUDE "scripts/celadoncity.asm" -PalletTownText3: ; 0x18fd8 fat man - TX_FAR _PalletTownText3 - db "@" +INCLUDE "scripts/fuchsiacity.asm" -PalletTownText4: ; 0x18fdd sign by lab - TX_FAR _PalletTownText4 - db "@" +INCLUDE "data/mapHeaders/blueshouse.asm" -PalletTownText5: ; 0x18fe2 sign by fence - TX_FAR _PalletTownText5 - db "@" +INCLUDE "scripts/blueshouse.asm" -PalletTownText6: ; 0x18fe7 sign by Red’s house - TX_FAR _PalletTownText6 - db "@" +INCLUDE "data/mapObjects/blueshouse.asm" -PalletTownText7: ; 0x18fec sign by Blue’s house - TX_FAR _PalletTownText7 - db "@" +BluesHouseBlocks: ; 19bf6 (6:5bf6) + INCBIN "maps/blueshouse.blk" -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 +INCLUDE "data/mapHeaders/vermilionhouse3.asm" -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 +INCLUDE "scripts/vermilionhouse3.asm" -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 +INCLUDE "data/mapObjects/vermilionhouse3.asm" - ; 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 +VermilionHouse3Blocks: ; 19c3f (6:5c3f) + INCBIN "maps/vermilionhouse3.blk" -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 +INCLUDE "data/mapHeaders/indigoplateaulobby.asm" -ViridianCityScript3: ; 190c1 (6:50c1) - ld a, [$cd38] - and a - ret nz - call Delay3 - ld a, 0 - ld [W_VIRIDIANCITYCURSCRIPT], a - ret +INCLUDE "scripts/indigoplateaulobby.asm" -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 +INCLUDE "data/mapObjects/indigoplateaulobby.asm" -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 "@" +IndigoPlateauLobbyBlocks: ; 19ccf (6:5ccf) + INCBIN "maps/indigoplateaulobby.blk" -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 +INCLUDE "data/mapHeaders/silphco4.asm" -UnnamedText_19122: ; 19122 (6:5122) - TX_FAR _UnnamedText_19122 - db "@" +INCLUDE "scripts/silphco4.asm" -UnnamedText_19127: ; 19127 (6:5127) - TX_FAR _UnnamedText_19127 - db "@" +INCLUDE "data/mapObjects/silphco4.asm" -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 +SilphCo4Blocks: ; 19ea4 (6:5ea4) + INCBIN "maps/silphco4.blk" -UnnamedText_1914d: ; 1914d (6:514d) - TX_FAR _UnnamedText_1914d - db "@" +INCLUDE "data/mapHeaders/silphco5.asm" -UnnamedText_19152: ; 19152 (6:5152) - TX_FAR _UnnamedText_19152 - db "@" +INCLUDE "scripts/silphco5.asm" -UnnamedText_19157: ; 19157 (6:5157) - TX_FAR _UnnamedText_19157 - db "@" +INCLUDE "data/mapObjects/silphco5.asm" -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 +SilphCo5Blocks: ; 1a116 (6:6116) + INCBIN "maps/silphco5.blk" -UnnamedText_19175: ; 19175 (6:5175) - TX_FAR _UnnamedText_19175 - db "@" +INCLUDE "data/mapHeaders/silphco6.asm" -UnnamedText_1917a: ; 1917a (6:517a) - TX_FAR _UnnamedText_1917a - db "@" +INCLUDE "scripts/silphco6.asm" -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 +INCLUDE "data/mapObjects/silphco6.asm" -UnnamedText_19191: ; 19191 (6:5191) - TX_FAR _UnnamedText_19191 - db "@" +SilphCo6Blocks: ; 1a36b (6:636b) + INCBIN "maps/silphco6.blk" -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 +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] - 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 "@" + 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 -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 +Func_1a41d: ; 1a41d (6:641d) + ld hl, $d730 + res 7, [hl] + ld hl, $d72e + res 7, [hl] + ld hl, $d736 res 0, [hl] - call PewterCityScript_1925e + res 1, [hl] + xor a + ld [$cf17], a + ld [$cc57], a + ld [$cf10], a + ld [$cd3a], a + ld [$cd38], a + ld [$ccd3], a 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 +PointerTable_1a442: ; 1a442 (6:6442) + dw Func_1a44c + dw Func_1a485 + dw Func_1a4a1 + dw Func_1a4a6 + dw Func_1a4f4 -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 +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, $2 - ld [W_PEWTERCITYCURSCRIPT], a + 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 -MovementData_PewterMuseumGuyExit: ; 192ce (6:52ce) - db $00,$00,$00,$00,$FF - -PewterCityScript2: ; 192d3 (6:52d3) +Func_1a485: ; 1a485 (6:6485) 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 + ld a, [$cca1] + ld [$cd38], a + ld [$ff95], a + ld a, $23 call Predef - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $0 - ld [W_PEWTERCITYCURSCRIPT], a + call Func_3486 + ld a, $2 + ld [$cf10], a ret -PewterCityScript4: ; 19305 (6:5305) - ld a, [$cc57] +Func_1a4a1: ; 1a4a1 (6:64a1) + ld a, [$cd38] 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 + +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 -MovementData_PewterGymGuyExit: ; 19353 (6:5353) - db $C0,$C0,$C0,$C0,$C0,$FF +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 -PewterCityScript5: ; 19359 (6:5359) - ld a, [$d730] - bit 0, a +RLEList_1a4e9: ; 1a4e9 (6:64e9) + db $40, $02 + db $10, $03 + db $80, $05 + db $20, $01 + db $80, $06 + db $FF + +Func_1a4f4: ; 1a4f4 (6:64f4) + ld a, [$cd38] + and a ret nz - ld a, $4 + ld a, $0 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 "@" + call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) + ld hl, $d730 + res 7, [hl] + ld hl, $d72e + res 7, [hl] + jp Func_314e -PewterCityText2: ; 193ac (6:53ac) - TX_FAR _PewterCityText2 - db "@" +PointerTable_1a510: ; 1a510 (6:6510) + dw Func_1a514 + dw Func_1a56b -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 +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 - 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 [$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 [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 "@" + ld [$cf10], a + ret -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 +RLEList_PewterMuseumPlayer: ; 1a559 (6:6559) + db $00, $01 + db $40, $03 + db $20, $0D + db $40, $06 + db $FF -UnnamedText_19427: ; 19427 (6:5427) - TX_FAR _UnnamedText_19427 - db "@" +RLEList_PewterMuseumGuy: ; 1a562 (6:6562) + db $40, $06 + db $80, $0D + db $40, $03 + db $80, $01 + db $FF -UnnamedText_1942c: ; 1942c (6:542c) - TX_FAR _UnnamedText_1942c - 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 -UnnamedText_19431: ; 19431 (6:5431) - TX_FAR _UnnamedText_19431 - db "@" +PointerTable_1a57d: ; 1a57d (6:657d) + dw Func_1a581 + dw Func_1a56b -PewterCityText5: ; 19436 (6:5436) - db $08 ; asm - ld hl, UnnamedText_1945d - call PrintText +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 - ldh [$b4], 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 - 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 + ret -UnnamedText_1945d: ; 1945d (6:545d) - TX_FAR _UnnamedText_1945d - 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 -PewterCityText14: ; 19462 (6:5462) +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 -UnnamedText_19462: ; 19462 (6:5462) - TX_FAR _UnnamedText_19462 - 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 +.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 -PewterCityText6: ; 19467 (6:5467) - TX_FAR _PewterCityText6 - db "@" +RivalIDs: ; 1a605 (6:6605) + db SONY1 + $c8 + db SONY2 + $c8 + db SONY3 + $c8 + db $ff -PewterCityText7: ; 1946c (6:546c) - TX_FAR _PewterCityText7 - db "@" +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 -PewterCityText10: ; 19471 (6:5471) - TX_FAR _PewterCityText10 - db "@" +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 -PewterCityText11: ; 19476 (6:5476) - TX_FAR _PewterCityText11 - db "@" +OverworldDoorTileIDs: ; 1a654 (6:6654) + db $1B,$58,$00 -PewterCityText12: ; 1947b (6:547b) - TX_FAR _PewterCityText12 - db "@" +ForestDoorTileIDs: ; 1a657 (6:6657) + db $3a,$00 -CeruleanCityScript: ; 19480 (6:5480) - call EnableAutoTextBoxDrawing - ld hl, CeruleanCityScriptPointers - ld a, [W_CERULEANCITYCURSCRIPT] - jp CallFunctionInTable +MartDoorTileIDs: ; 1a659 (6:6659) + db $5e,$00 -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 +HouseDoorTileIDs: ; 1a65b (6:665b) + db $54,$00 -CeruleanCityScriptPointers: ; 1949d (6:549d) - dw CeruleanCityScript0 - dw CeruleanCityScript1 - dw CeruleanCityScript2 - dw CeruleanCityScript3 - dw CeruleanCityScript4 +TilesetMuseumDoorTileIDs: ; 1a65d (6:665d) + db $3b,$00 -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 +ShipDoorTileIDs: ; 1a65f (6:665f) + db $1e,$00 -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 +LobbyDoorTileIDs: ; 1a661 (6:6661) + db $1c,$38,$1a,$00 -CeruleanCityCoords1: ; 1954f (6:554f) - db $07,$1e - db $09,$1e - db $ff +MansionDoorTileIDs: ; 1a665 (6:6665) + db $1a,$1c,$53,$00 -CeruleanCityCoords2: ; 19554 (6:5554) - db $06,$14 - db $06,$15 - db $ff +LabDoorTileIDs: ; 1a669 (6:6669) + db $34,$00 -CeruleanCityMovement1: ; 19559 (6:5559) - db $00,$00,$00,$FF +FacilityDoorTileIDs: ; 1a66b (6:666b) + db $43,$58,$1b,$00 -CeruleanCityScript_1955d: ; 1955d (6:555d) - ld a,1 - ld [$ff8c],a - xor a - ld [$ff8d],a - jp Func_34a6 ; face object +PlateauDoorTileIDs: ; 1a66f (6:666f) + db $3b,$1b,$00 -CeruleanCityScript1: ; 19567 (6:5567) - ld a, [$d730] - bit 0, a +Func_1a672: ; 1a672 (6:6672) + ld a, [$d736] + bit 6, a ret nz - xor a + 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 a, $1 - ld [$ff8c], a - call DisplayTextID - ld hl, $d72d + ld hl, $d736 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 + call Func_3486 + ld a, e + ld [$ccd3], a + ld [$ccd4], a 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 + ld [$cd38], a + call LoadHoppingShadowOAM + ld a, (SFX_02_4e - SFX_Headers_02) / 3 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 + ; (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 -CeruleanCityMovement4: ; 19608 (6:5608) - db $c0,$00,$00,$00,$00,$00,$00,$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 + ret -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 +LedgeHoppingShadow: ; 1a708 (6:6708) + INCBIN "gfx/ledge_hopping_shadow.1bpp" -UnnamedText_19668: ; 19668 (6:5668) - TX_FAR _UnnamedText_19668 - db "@" +LedgeHoppingShadowOAM: ; 1a710 (6:6710) + db $FF,$10,$FF,$20 + db $FF,$40,$FF,$60 -UnnamedText_1966d: ; 1966d (6:566d) - TX_FAR _UnnamedText_1966d - db "@" +SECTION "bank7",ROMX,BANK[$7] -UnnamedText_19672: ; 19672 (6:5672) - TX_FAR _UnnamedText_19672 - db "@" +INCLUDE "data/mapHeaders/cinnabarisland.asm" -UnnamedText_19677: ; 19677 (6:5677) - TX_FAR _UnnamedText_19677 - db "@" +INCLUDE "data/mapObjects/cinnabarisland.asm" -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 +CinnabarIslandBlocks: ; 1c069 (7:4069) + INCBIN "maps/cinnabarisland.blk" -UnnamedText_196d9: ; 196d9 (6:56d9) - TX_FAR _UnnamedText_196d9 - db "@" +INCLUDE "data/mapHeaders/route1.asm" -ReceivedTM28Text: ; 196de (6:56de) - TX_FAR _ReceivedTM28Text - db $0B - TX_FAR _ReceivedTM28Text2 - db $0D, "@" +INCLUDE "data/mapObjects/route1.asm" -TM28NoRoomText: ; 196e9 (6:56e9) - TX_FAR _TM28NoRoomText - db "@" +Route1Blocks: ; 1c0fc (7:40fc) + INCBIN "maps/route1.blk" -UnnamedText_196ee: ; 196ee (6:56ee) - TX_FAR _UnnamedText_196ee - db "@" +UndergroundPathEntranceRoute8Blocks: ; 1c1b0 (7:41b0) + INCBIN "maps/undergroundpathentranceroute8.blk" -UnnamedText_196f3: ; 196f3 (6:56f3) - TX_FAR _UnnamedText_196f3 - db "@" +OaksLabBlocks: ; 1c1c0 (7:41c0) + INCBIN "maps/oakslab.blk" -CeruleanCityText3: ; 196f8 (6:56f8) - TX_FAR _CeruleanCityText3 - db "@" +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" -CeruleanCityText4: ; 196fd (6:56fd) - TX_FAR _CeruleanCityText4 - db "@" +CeladonMansion5Blocks: ; 1c1ee (7:41ee) +SchoolBlocks: ; 0x1c1ee 41EE size=16 + INCBIN "maps/school.blk" -CeruleanCityText5: ; 19702 (6:5702) - TX_FAR _CeruleanCityText5 - db "@" +CeruleanHouseTrashedBlocks: ; 0x1c1fe size=16 + INCBIN "maps/ceruleanhousetrashed.blk" -CeruleanCityText11: ; 19707 (6:5707) -CeruleanCityText6: ; 19707 (6:5707) - TX_FAR _CeruleanCityText6 - db "@" +DiglettsCaveEntranceRoute11Blocks: ; 1c20e (7:420e) +DiglettsCaveRoute2Blocks: ; 0x1c20e size=16 + INCBIN "maps/diglettscaveroute2.blk" -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 +INCLUDE "text/monster_names.asm" -UnnamedText_19730: ; 19730 (6:5730) - TX_FAR _UnnamedText_19730 - db "@" - -UnnamedText_19735: ; 19735 (6:5735) - TX_FAR _UnnamedText_19735 - db "@" +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 -UnnamedText_1973a: ; 1973a (6:573a) - TX_FAR _UnnamedText_1973a +ClearSaveDataText: ; 1c9c1 (7:49c1) + TX_FAR _ClearSaveDataText 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 +Func_1c9c6: ; 1c9c6 (7:49c6) + ld hl, WhichFloorText call PrintText -.asm_f2f38 ; 0x1976c - jp TextScriptEnd + 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 -UnnamedText_1976f: ; 1976f (6:576f) - TX_FAR _UnnamedText_1976f - db "@" +Func_1ca0d: ; 1ca0d (7:4a0d) + inc hl + inc hl + ld a, b + ld [hli], a + ld a, c + ld [hli], a + ret -UnnamedText_19774: ; 19774 (6:5774) - TX_FAR _UnnamedText_19774 +WhichFloorText: ; 1ca14 (7:4a14) + TX_FAR _WhichFloorText db "@" -UnnamedText_19779: ; 19779 (6:5779) - TX_FAR _UnnamedText_19779 - db "@" +INCLUDE "scripts/cinnabarisland.asm" -UnnamedText_1977e: ; 1977e (6:577e) - TX_FAR _UnnamedText_1977e - db "@" +INCLUDE "scripts/route1.asm" -CeruleanCityText9: ; 19783 (6:5783) - TX_FAR _CeruleanCityText9 - db "@" +INCLUDE "data/mapHeaders/oakslab.asm" -CeruleanCityText10: ; 19788 (6:5788) - TX_FAR _CeruleanCityText10 - db "@" +INCLUDE "scripts/oakslab.asm" -CeruleanCityText12: ; 1978d (6:578d) - TX_FAR _CeruleanCityText12 - db "@" +INCLUDE "data/mapObjects/oakslab.asm" -CeruleanCityText13: ; 19792 (6:5792) - TX_FAR _CeruleanCityText13 - db "@" +INCLUDE "data/mapHeaders/viridianmart.asm" -CeruleanCityText16: ; 19797 (6:5797) - TX_FAR _CeruleanCityText16 - db "@" +INCLUDE "scripts/viridianmart.asm" -CeruleanCityText17: ; 1979c (6:579c) - TX_FAR _CeruleanCityText17 - db "@" +INCLUDE "data/mapObjects/viridianmart.asm" -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 +ViridianMartBlocks: ; 1d530 (7:5530) + INCBIN "maps/viridianmart.blk" -VermilionCityScript_197c0: ; 197c0 (6:57c0) - call GenRandom - ld a, [$ffd4] - and $e - ld [$d743], a - ret +INCLUDE "data/mapHeaders/school.asm" -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 +INCLUDE "scripts/school.asm" -VermilionCityScriptPointers: ; 197dc (6:57dc) - dw VermilionCityScript0 - dw VermilionCityScript1 - dw VermilionCityScript2 - dw VermilionCityScript3 - dw VermilionCityScript4 +INCLUDE "data/mapObjects/school.asm" -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 +INCLUDE "data/mapHeaders/viridianhouse.asm" -CoordsData_19823: ; 19823 (6:5823) - db $1e,$12 - db $ff +INCLUDE "scripts/viridianhouse.asm" -VermilionCityScript4: ; 19826 (6:5826) - ld hl, CoordsData_19823 - call ArePlayerCoordsInArray - ret c - ld a, $0 - ld [W_VERMILIONCITYCURSCRIPT], a - ret +INCLUDE "data/mapObjects/viridianhouse.asm" -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 +INCLUDE "data/mapHeaders/pewterhouse1.asm" -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 +INCLUDE "scripts/pewterhouse1.asm" -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 "@" +INCLUDE "data/mapObjects/pewterhouse1.asm" -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 +INCLUDE "data/mapHeaders/pewterhouse2.asm" -UnnamedText_198a7: ; 198a7 (6:58a7) - TX_FAR _UnnamedText_198a7 - db "@" +INCLUDE "scripts/pewterhouse2.asm" -UnnamedText_198ac: ; 198ac (6:58ac) - TX_FAR _UnnamedText_198ac - db "@" +INCLUDE "data/mapObjects/pewterhouse2.asm" -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 +INCLUDE "data/mapHeaders/ceruleanhousetrashed.asm" -VermilionCityCoords1: ; 198ff (6:58ff) - db $1d,$13 - db $1f,$13 - db $ff +INCLUDE "scripts/ceruleanhousetrashed.asm" -SSAnneWelcomeText4: ; 19904 (6:5904) - TX_FAR _SSAnneWelcomeText4 - db "@" +INCLUDE "data/mapObjects/ceruleanhousetrashed.asm" -SSAnneWelcomeText9: ; 19909 (6:5909) - TX_FAR _SSAnneWelcomeText9 - db "@" +INCLUDE "data/mapHeaders/ceruleanhouse1.asm" -SSAnneFlashedTicketText: ; 1990e (6:590e) - TX_FAR _SSAnneFlashedTicketText - db "@" +INCLUDE "scripts/ceruleanhouse1.asm" -SSAnneNoTicketText: ; 19913 (6:5913) - TX_FAR _SSAnneNoTicketText - db "@" +INCLUDE "data/mapObjects/ceruleanhouse1.asm" -SSAnneNotHereText: ; 19918 (6:5918) - TX_FAR _SSAnneNotHereText - db "@" +INCLUDE "data/mapHeaders/bikeshop.asm" -VermilionCityText4: ; 1991d (6:591d) - TX_FAR _VermilionCityText4 - db "@" +INCLUDE "scripts/bikeshop.asm" -VermilionCityText5: ; 19922 (6:5922) - TX_FAR _VermilionCityText5 - db $08 ; asm - ld a, MACHOP - call PlayCry - call WaitForSoundToFinish - ld hl, VermilionCityText14 ; $5933 - ret +INCLUDE "data/mapObjects/bikeshop.asm" -VermilionCityText14: ; 19933 (6:5933) - TX_FAR _VermilionCityText14 - db "@" +BikeShopBlocks: ; 1d88c (7:588c) + INCBIN "maps/bikeshop.blk" -VermilionCityText6: ; 19938 (6:5938) - TX_FAR _VermilionCityText6 - db "@" +INCLUDE "data/mapHeaders/lavenderhouse1.asm" -VermilionCityText7: ; 1993d (6:593d) - TX_FAR _VermilionCityText7 - db "@" +INCLUDE "scripts/lavenderhouse1.asm" -VermilionCityText8: ; 19942 (6:5942) - TX_FAR _VermilionCityText8 - db "@" +INCLUDE "data/mapObjects/lavenderhouse1.asm" -VermilionCityText11: ; 19947 (6:5947) - TX_FAR _VermilionCityText11 - db "@" +INCLUDE "data/mapHeaders/lavenderhouse2.asm" -VermilionCityText12: ; 1994c (6:594c) - TX_FAR _VermilionCityText12 - db "@" +INCLUDE "scripts/lavenderhouse2.asm" -VermilionCityText13: ; 19951 (6:5951) - TX_FAR _VermilionCityText13 - db "@" +INCLUDE "data/mapObjects/lavenderhouse2.asm" -CeladonCityScript: ; 19956 (6:5956) - call EnableAutoTextBoxDrawing - ld hl, $d77e - res 0, [hl] - res 7, [hl] - ld hl, $d816 - res 7, [hl] - ret +INCLUDE "data/mapHeaders/namerater.asm" -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 "@" +INCLUDE "scripts/namerater.asm" -CeladonCityText2: ; 1998f (6:598f) - TX_FAR _CeladonCityText2 - db "@" +INCLUDE "data/mapObjects/namerater.asm" -CeladonCityText3: ; 19994 (6:5994) - TX_FAR _CeladonCityText3 - db "@" +INCLUDE "data/mapHeaders/vermilionhouse1.asm" -CeladonCityText4: ; 19999 (6:5999) - TX_FAR _CeladonCityText4 - db "@" +INCLUDE "scripts/vermilionhouse1.asm" -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 +INCLUDE "data/mapObjects/vermilionhouse1.asm" -TM41PreText: ; 199d2 (6:59d2) - TX_FAR _TM41PreText - db "@" +INCLUDE "data/mapHeaders/vermiliondock.asm" -ReceivedTM41Text: ; 199d7 (6:59d7) - TX_FAR _ReceivedTM41Text - db $0B, "@" +INCLUDE "scripts/vermiliondock.asm" -TM41ExplanationText: ; 199dd (6:59dd) - TX_FAR _TM41ExplanationText - db "@" +INCLUDE "data/mapObjects/vermiliondock.asm" -TM41NoRoomText: ; 199e2 (6:59e2) - TX_FAR _TM41NoRoomText - db "@" +VermilionDockBlocks: ; 1dcda (7:5cda) + INCBIN "maps/vermiliondock.blk" -CeladonCityText6: ; 199e7 (6:59e7) - TX_FAR _CeladonCityText6 - db "@" +INCLUDE "data/mapHeaders/celadonmansion5.asm" -CeladonCityText7: ; 199ec (6:59ec) - TX_FAR _CeladonCityText7 - db $08 ; asm - ld a, POLIWRATH - call PlayCry - jp TextScriptEnd +INCLUDE "scripts/celadonmansion5.asm" -CeladonCityText8: ; 199f9 (6:59f9) - TX_FAR _CeladonCityText8 - db "@" +INCLUDE "data/mapObjects/celadonmansion5.asm" -CeladonCityText9: ; 199fe (6:59fe) - TX_FAR _CeladonCityText9 - db "@" +INCLUDE "data/mapHeaders/fuchsiamart.asm" -CeladonCityText10: ; 19a03 (6:5a03) - TX_FAR _CeladonCityText10 - db "@" +INCLUDE "scripts/fuchsiamart.asm" -CeladonCityText11: ; 19a08 (6:5a08) - TX_FAR _CeladonCityText11 - db "@" +INCLUDE "data/mapObjects/fuchsiamart.asm" -CeladonCityText13: ; 19a0d (6:5a0d) - TX_FAR _CeladonCityText13 - db "@" +FuchsiaMartBlocks: ; 1ddc1 (7:5dc1) + INCBIN "maps/fuchsiamart.blk" -CeladonCityText14: ; 19a12 (6:5a12) - TX_FAR _CeladonCityText14 - db "@" +INCLUDE "data/mapHeaders/saffronhouse1.asm" -CeladonCityText15: ; 19a17 (6:5a17) - TX_FAR _CeladonCityText15 - db "@" +INCLUDE "scripts/saffronhouse1.asm" -CeladonCityText16: ; 19a1c (6:5a1c) - TX_FAR _CeladonCityText16 - db "@" +INCLUDE "data/mapObjects/saffronhouse1.asm" -CeladonCityText17: ; 19a21 (6:5a21) - TX_FAR _CeladonCityText17 - db "@" +INCLUDE "data/mapHeaders/saffronhouse2.asm" -CeladonCityText18: ; 19a26 (6:5a26) - TX_FAR _CeladonCityText18 - db "@" +INCLUDE "scripts/saffronhouse2.asm" -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 "@" +INCLUDE "data/mapObjects/saffronhouse2.asm" -FuchsiaCityText2: ; 19a63 (6:5a63) - TX_FAR _FuchsiaCityText2 - db "@" +INCLUDE "data/mapHeaders/diglettscaveroute2.asm" -FuchsiaCityText3: ; 19a68 (6:5a68) - TX_FAR _FuchsiaCityText3 - db "@" +INCLUDE "scripts/diglettscaveroute2.asm" -FuchsiaCityText4: ; 19a6d (6:5a6d) - TX_FAR _FuchsiaCityText4 - db "@" +INCLUDE "data/mapObjects/diglettscaveroute2.asm" -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 "@" +INCLUDE "data/mapHeaders/route2house.asm" -FuchsiaCityText12: ; 19a77 (6:5a77) -FuchsiaCityText11: ; 19a77 (6:5a77) - TX_FAR _FuchsiaCityText11 - db "@" +INCLUDE "scripts/route2house.asm" -FuchsiaCityText13: ; 19a7c (6:5a7c) - TX_FAR _FuchsiaCityText13 - db "@" +INCLUDE "data/mapObjects/route2house.asm" -FuchsiaCityText16: ; 19a81 (6:5a81) - TX_FAR _FuchsiaCityText16 - db "@" +INCLUDE "data/mapHeaders/route5gate.asm" -FuchsiaCityText17: ; 19a86 (6:5a86) - TX_FAR _FuchsiaCityText17 - db "@" +INCLUDE "scripts/route5gate.asm" -FuchsiaCityText18: ; 19a8b (6:5a8b) - TX_FAR _FuchsiaCityText18 - db "@" +INCLUDE "data/mapObjects/route5gate.asm" -FuchsiaCityText19: ; 19a90 (6:5a90) - db $08 ; asm - ld hl, FuchsiaCityChanseyText - call PrintText - ld a, CHANSEY - call DisplayPokedex - jp TextScriptEnd +Route5GateBlocks: ; 1e025 (7:6025) + INCBIN "maps/route5gate.blk" -FuchsiaCityChanseyText: ; 19a9f (6:5a9f) - TX_FAR _FuchsiaCityChanseyText - db "@" +INCLUDE "data/mapHeaders/route6gate.asm" -FuchsiaCityText20: ; 19aa4 (6:5aa4) - db $08 ; asm - ld hl, FuchsiaCityVoltorbText - call PrintText - ld a, VOLTORB - call DisplayPokedex - jp TextScriptEnd +INCLUDE "scripts/route6gate.asm" -FuchsiaCityVoltorbText: ; 19ab3 (6:5ab3) - TX_FAR _FuchsiaCityVoltorbText - db "@" +INCLUDE "data/mapObjects/route6gate.asm" -FuchsiaCityText21: ; 19ab8 (6:5ab8) - db $08 ; asm - ld hl, FuchsiaCityKangaskhanText - call PrintText - ld a, KANGASKHAN - call DisplayPokedex - jp TextScriptEnd +Route6GateBlocks: ; 1e0e8 (7:60e8) + INCBIN "maps/route6gate.blk" -FuchsiaCityKangaskhanText: ; 19ac7 (6:5ac7) - TX_FAR _FuchsiaCityKangaskhanText - db "@" +INCLUDE "data/mapHeaders/route7gate.asm" -FuchsiaCityText22: ; 19acc (6:5acc) - db $08 ; asm - ld hl, FuchsiaCitySlowpokeText - call PrintText - ld a, SLOWPOKE - call DisplayPokedex - jp TextScriptEnd +INCLUDE "scripts/route7gate.asm" -FuchsiaCitySlowpokeText: ; 19adb (6:5adb) - TX_FAR _FuchsiaCitySlowpokeText - db "@" +INCLUDE "data/mapObjects/route7gate.asm" -FuchsiaCityText23: ; 19ae0 (6:5ae0) - db $08 ; asm - ld hl, FuchsiaCityLaprasText - call PrintText - ld a, LAPRAS - call DisplayPokedex - jp TextScriptEnd +Route7GateBlocks: ; 1e1af (7:61af) + INCBIN "maps/route7gate.blk" -FuchsiaCityLaprasText: ; 19aef (6:5aef) - TX_FAR _FuchsiaCityLaprasText - db "@" +INCLUDE "data/mapHeaders/route8gate.asm" -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 +INCLUDE "scripts/route8gate.asm" -FuchsiaCityOmanyteText: ; 19b20 (6:5b20) - TX_FAR _FuchsiaCityOmanyteText - db "@" +INCLUDE "data/mapObjects/route8gate.asm" -FuchsiaCityKabutoText: ; 19b25 (6:5b25) - TX_FAR _FuchsiaCityKabutoText - db "@" +Route8GateBlocks: ; 1e271 (7:6271) + INCBIN "maps/route8gate.blk" -UnnamedText_19b2a: ; 19b2a (6:5b2a) - TX_FAR _UnnamedText_19b2a - db "@" +INCLUDE "data/mapHeaders/undergroundpathentranceroute8.asm" -INCLUDE "data/mapHeaders/blueshouse.asm" +INCLUDE "scripts/undergroundpathentranceroute8.asm" -BluesHouseScript: ; 19b3b (6:5b3b) - call EnableAutoTextBoxDrawing - ld hl,BluesHouseScriptPointers - ld a,[W_BLUESHOUSECURSCRIPT] - jp CallFunctionInTable +INCLUDE "data/mapObjects/undergroundpathentranceroute8.asm" -BluesHouseScriptPointers: ; 19b47 (6:5b47) - dw BluesHouseScript0 - dw BluesHouseScript1 +INCLUDE "data/mapHeaders/powerplant.asm" -BluesHouseScript0: ; 19b4b (6:5b4b) - ld hl,$D74A - set 1,[hl] +INCLUDE "scripts/powerplant.asm" - ; trigger the next script - ld a,1 - ld [W_BLUESHOUSECURSCRIPT],a - ret +INCLUDE "data/mapObjects/powerplant.asm" -BluesHouseScript1: ; 19b56 (6:5b56) - ret +PowerPlantBlocks: ; 1e446 (7:6446) + INCBIN "maps/powerplant.blk" -BluesHouseTextPointers: ; 19b57 (6:5b57) - dw BluesHouseText1 - dw BluesHouseText2 - dw BluesHouseText3 +INCLUDE "data/mapHeaders/diglettscaveroute11.asm" -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 +INCLUDE "scripts/diglettscaveroute11.asm" -DaisyInitialText: ; 19baa (6:5baa) - TX_FAR _DaisyInitialText - db "@" +INCLUDE "data/mapObjects/diglettscaveroute11.asm" -DaisyOfferMapText: ; 19baf (6:5baf) - TX_FAR _DaisyOfferMapText - db "@" +INCLUDE "data/mapHeaders/route16house.asm" -GotMapText: ; 19bb4 (6:5bb4) - TX_FAR _GotMapText - db $11,"@" +INCLUDE "scripts/route16house.asm" -DaisyBagFullText: ; 19bba (6:5bba) - TX_FAR _DaisyBagFullText - db "@" +INCLUDE "data/mapObjects/route16house.asm" -DaisyUseMapText: ; 19bbf (6:5bbf) - TX_FAR _DaisyUseMapText - db "@" +INCLUDE "data/mapHeaders/route22gate.asm" -BluesHouseText2: ; 0x19bc4 Daisy, walking around - TX_FAR _BluesHouseText2 - db "@" +INCLUDE "scripts/route22gate.asm" -BluesHouseText3: ; 0x19bc9 map on table - TX_FAR _BluesHouseText3 - db "@" +INCLUDE "data/mapObjects/route22gate.asm" -INCLUDE "data/mapObjects/blueshouse.asm" +Route22GateBlocks: ; 1e74a (7:674a) + INCBIN "maps/route22gate.blk" -BluesHouseBlocks: ; 19bf6 (6:5bf6) - INCBIN "maps/blueshouse.blk" +INCLUDE "data/mapHeaders/billshouse.asm" -INCLUDE "data/mapHeaders/vermilionhouse3.asm" +INCLUDE "scripts/billshouse.asm" -VermilionHouse3Script: ; 19c12 (6:5c12) - jp EnableAutoTextBoxDrawing +INCLUDE "data/mapObjects/billshouse.asm" -VermilionHouse3TextPointers: ; 19c15 (6:5c15) - dw VermilionHouse3Text1 +BillsHouseBlocks: ; 1e905 (7:6905) + INCBIN "maps/billshouse.blk" -VermilionHouse3Text1: ; 19c17 (6:5c17) - db $08 ; asm - ld a, $4 - ld [wWhichTrade], a - ld a, $54 - call Predef - jp TextScriptEnd +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 -INCLUDE "data/mapObjects/vermilionhouse3.asm" +GetDexRatedText: ; 1e93b (7:693b) + TX_FAR _GetDexRatedText + db "@" -VermilionHouse3Blocks: ; 19c3f (6:5c3f) - INCBIN "maps/vermilionhouse3.blk" +ClosedOaksPCText: ; 1e940 (7:6940) + TX_FAR _ClosedOaksPCText + db $0d,"@" -INCLUDE "data/mapHeaders/indigoplateaulobby.asm" +AccessedOaksPCText: ; 1e946 (7:6946) + TX_FAR _AccessedOaksPCText + db "@" -IndigoPlateauLobbyScript: ; 19c5b (6:5c5b) - call Func_22fa +Func_1e94b: ; 1e94b (7:694b) 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 - 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 + ld a, $39 + jp Func_3ef5 -IndigoPlateauLobbyText2: ; 19c8a (6:5c8a) - TX_FAR _IndigoPlateauLobbyText1 +NewBicycleText: ; 1e953 (7:6953) + TX_FAR _NewBicycleText db "@" -IndigoPlateauLobbyText3: ; 19c8f (6:5c8f) - TX_FAR _IndigoPlateauLobbyText3 +Func_1e958: ; 1e958 (7:6958) + call EnableAutoTextBoxDrawing + ld a, $05 + jp Func_3ef5 + +PushStartText: ; 1e960 (7:6960) + TX_FAR _PushStartText db "@" -IndigoPlateauLobbyText5: ; 19c94 (6:5c94) - db $f6 +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 -INCLUDE "data/mapObjects/indigoplateaulobby.asm" +SaveOptionText: ; 1e97e (7:697e) + TX_FAR _SaveOptionText + db "@" -IndigoPlateauLobbyBlocks: ; 19ccf (6:5ccf) - INCBIN "maps/indigoplateaulobby.blk" +StrengthsAndWeaknessesText: ; 1e983 (7:6983) + TX_FAR _StrengthsAndWeaknessesText + db "@" -INCLUDE "data/mapHeaders/silphco4.asm" +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 -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 +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 - -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] - 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 +asm_1e9b0: ; 1e9b0 (7:69b0) + call EnableAutoTextBoxDrawing xor a - ld [hli], a - ld [hl], a - ret -.asm_19d85 + 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 [$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] + 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 -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 +Func_1e9ed: ; 1e9ed (7:69ed) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld hl, SafariGameOverText + jp PrintText -SilphCo4Text1: ; 19dd3 (6:5dd3) +SafariGameOverText: ; 1e9f7 (7:69f7) db $08 ; asm - ld hl, UnnamedText_19de0 - ld de, UnnamedText_19de5 - call SilphCo6Script_1a22f + 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 -UnnamedText_19de0: ; 19de0 (6:5de0) - TX_FAR _UnnamedText_19de0 +TimesUpText: ; 1ea0d (7:6a0d) + TX_FAR _TimesUpText db "@" -UnnamedText_19de5: ; 19de5 (6:5de5) - TX_FAR _UnnamedText_19de5 +GameOverText: ; 1ea12 (7:6a12) + TX_FAR _GameOverText db "@" -SilphCo4Text2: ; 19dea (6:5dea) +Func_1eaa17: ; 1ea17 (7:6a17) + ld a, [$c109] + cp $4 + ret nz + call EnableAutoTextBoxDrawing + ld a, $31 + jp Func_3ef5 + +CinnabarGymQuiz: ; 1ea25 (7:6a25) db $08 ; asm - ld hl, SilphCo4TrainerHeader0 - call TalkToTrainer + 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 -SilphCo4BattleText2: ; 19df4 (6:5df4) - TX_FAR _SilphCo4BattleText2 - db "@" - -SilphCo4EndBattleText2: ; 19df9 (6:5df9) - TX_FAR _SilphCo4EndBattleText2 - db "@" - -SilphCo4AfterBattleText2: ; 19dfe (6:5dfe) - TX_FAR _SilphCo4AfterBattleText2 +CinnabarGymQuizIntroText: ; 1ea5b (7:6a5b) + TX_FAR _CinnabarGymQuizIntroText db "@" -SilphCo4Text3: ; 19e03 (6:5e03) - db $08 ; asm - ld hl, SilphCo4TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd +CinnabarQuizQuestions: ; 1ea60 (7:6a60) + dw CinnabarQuizQuestionsText1 + dw CinnabarQuizQuestionsText2 + dw CinnabarQuizQuestionsText3 + dw CinnabarQuizQuestionsText4 + dw CinnabarQuizQuestionsText5 + dw CinnabarQuizQuestionsText6 -SilphCo4BattleText3: ; 19e0d (6:5e0d) - TX_FAR _SilphCo4BattleText3 +CinnabarQuizQuestionsText1: ; 1ea6c (7:6a6c) + TX_FAR _CinnabarQuizQuestionsText1 db "@" -SilphCo4EndBattleText3: ; 19e12 (6:5e12) - TX_FAR _SilphCo4EndBattleText3 +CinnabarQuizQuestionsText2: ; 1ea71 (7:6a71) + TX_FAR _CinnabarQuizQuestionsText2 db "@" -SilphCo4AfterBattleText3: ; 19e17 (6:5e17) - TX_FAR _SilphCo4AfterBattleText3 +CinnabarQuizQuestionsText3: ; 1ea76 (7:6a76) + TX_FAR _CinnabarQuizQuestionsText3 db "@" -SilphCo4Text4: ; 19e1c (6:5e1c) - db $08 ; asm - ld hl, SilphCo4TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -SilphCo4BattleText4: ; 19e26 (6:5e26) - TX_FAR _SilphCo4BattleText4 +CinnabarQuizQuestionsText4: ; 1ea7b (7:6a7b) + TX_FAR _CinnabarQuizQuestionsText4 db "@" -SilphCo4EndBattleText4: ; 19e2b (6:5e2b) - TX_FAR _SilphCo4EndBattleText4 +CinnabarQuizQuestionsText5: ; 1ea80 (7:6a80) + TX_FAR _CinnabarQuizQuestionsText5 db "@" -SilphCo4AfterBattleText4: ; 19e30 (6:5e30) - TX_FAR _SilphCo4AfterBattleText4 +CinnabarQuizQuestionsText6: ; 1ea85 (7:6a85) + TX_FAR _CinnabarQuizQuestionsText6 db "@" -INCLUDE "data/mapObjects/silphco4.asm" - -SilphCo4Blocks: ; 19ea4 (6:5ea4) - INCBIN "maps/silphco4.blk" - -INCLUDE "data/mapHeaders/silphco5.asm" - -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_1ea8a: ; 1ea8a (7:6a8a) + ld hl, $d79c + ld a, $10 + jp Predef ; indirect jump to HandleBitArray (f666 (3:7666)) -SilphCo5Script_19f4d: ; 19f4d (6:5f4d) +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 - 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 - 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 - 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 + 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 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 nz + ld a, [$ffdb] + add $2 + ld [$da38], a 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 "@" +CinnabarGymQuizCorrectText: ; 1eae3 (7:6ae3) + db $0b + TX_FAR _CinnabarGymQuizCorrectText + db $06,$08 -SilphCo5Text2: ; 1a01a (6:601a) - db $08 ; asm - ld hl, Silphco5TrainerHeader0 - call TalkToTrainer + 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 -SilphCo5BattleText2: ; 1a024 (6:6024) - TX_FAR _SilphCo5BattleText2 +CinnabarGymQuizIncorrectText: ; 1eb05 (7:6b05) + TX_FAR _CinnabarGymQuizIncorrectText db "@" -SilphCo5EndBattleText2: ; 1a029 (6:6029) - TX_FAR _SilphCo5EndBattleText2 - 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 -SilphCo5AfterBattleText2: ; 1a02e (6:602e) - TX_FAR _SilphCo5AfterBattleText2 - db "@" +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 -SilphCo5Text3: ; 1a033 (6:6033) - db $08 ; asm - ld hl, Silphco5TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd +Func_1eb60: ; 1eb60 (7:6b60) + call EnableAutoTextBoxDrawing + ld a, $30 + call Func_3ef5 + ret -SilphCo5BattleText3: ; 1a03d (6:603d) - TX_FAR _SilphCo5BattleText3 +MagazinesText: ; 1eb69 (7:6b69) + TX_FAR _MagazinesText db "@" -SilphCo5EndBattleText3: ; 1a042 (6:6042) - TX_FAR _SilphCo5EndBattleText3 - 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 -SilphCo5AfterBattleText3: ; 1a047 (6:6047) - TX_FAR _SilphCo5AfterBattleText3 +BillsHouseMonitorText: ; 1ebdd (7:6bdd) + TX_FAR _BillsHouseMonitorText db "@" -SilphCo5Text4: ; 1a04c (6:604c) +BillsHouseInitiatedText: ; 1ebe2 (7:6be2) + TX_FAR _BillsHouseInitiatedText + db $06 db $08 ; asm - ld hl, Silphco5TrainerHeader3 - call TalkToTrainer + 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 -SilphCo5BattleText4: ; 1a056 (6:6056) - TX_FAR _SilphCo5BattleText4 - db "@" - -SilphCo5EndBattleText4: ; 1a05b (6:605b) - TX_FAR _SilphCo5EndBattleText4 - db "@" - -SilphCo5AfterBattleText4: ; 1a060 (6:6060) - TX_FAR _SilphCo5AfterBattleText4 - db "@" - -SilphCo5Text5: ; 1a065 (6:6065) +BillsHousePokemonList: ; 1ec05 (7:6c05) db $08 ; asm - ld hl, Silphco5TrainerHeader4 - call TalkToTrainer + 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 -SilphCo5BattleText5: ; 1a06f (6:606f) - TX_FAR _SilphCo5BattleText5 - db "@" - -SilphCo5EndBattleText5: ; 1a074 (6:6074) - TX_FAR _SilphCo5EndBattleText5 - db "@" - -SilphCo5AfterBattleText5: ; 1a079 (6:6079) - TX_FAR _SilphCo5AfterBattleText5 - db "@" - -SilphCo5Text9: ; 1a07e (6:607e) - TX_FAR _SilphCo5Text9 +BillsHousePokemonListText1: ; 1ec7f (7:6c7f) + TX_FAR _BillsHousePokemonListText1 db "@" -SilphCo5Text10: ; 1a083 (6:6083) - TX_FAR _SilphCo5Text10 - db "@" +BillsMonListText: ; 1ec84 (7:6c84) + db "EEVEE" + next "FLAREON" + next "JOLTEON" + next "VAPOREON" + next "CANCEL@" -SilphCo5Text11: ; 1a088 (6:6088) - TX_FAR _SilphCo5Text11 +BillsHousePokemonListText2: ; 1ecaa (7:6caa) + TX_FAR _BillsHousePokemonListText2 db "@" -INCLUDE "data/mapObjects/silphco5.asm" - -SilphCo5Blocks: ; 1a116 (6:6116) - INCBIN "maps/silphco5.blk" - -INCLUDE "data/mapHeaders/silphco6.asm" - -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 - -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 +Func_1ecaf: ; 1ecaf (7:6caf) + ld a, [$c109] + cp $4 ret nz - ld a, $5f - ld [$d09f], a - ld bc, $0602 - ld a, $17 - jp Predef - -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 - -SilphCo6TextPointers: ; 1a1f6 (6:61f6) - dw SilphCo6Text1 - dw SilphCo6Text2 - dw SilphCo6Text3 - dw SilphCo6Text4 - dw SilphCo6Text5 - dw SilphCo6Text6 - dw SilphCo6Text7 - dw SilphCo6Text8 - dw Predef5CText - dw Predef5CText - -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 - -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 - -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 - - db $ff - -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 - -SilphCo6Text1: ; 1a23d (6:623d) - db $08 ; asm - ld hl, UnnamedText_1a24a - ld de, UnnamedText_1a24f - call SilphCo6Script_1a22f - jp TextScriptEnd + call EnableAutoTextBoxDrawing + ld a, $8 + jp Func_3ef5 -UnnamedText_1a24a: ; 1a24a (6:624a) - TX_FAR _UnnamedText_1a24a +OakLabEmailText: ; 1ecbd (7:6cbd) + TX_FAR _OakLabEmailText db "@" -UnnamedText_1a24f: ; 1a24f (6:624f) - TX_FAR _UnnamedText_1a24f - db "@" -SilphCo6Text2: ; 1a254 (6:6254) - db $08 ; asm - ld hl, UnnamedText_1a261 - ld de, UnnamedText_1a266 - call SilphCo6Script_1a22f - jp TextScriptEnd -UnnamedText_1a261: ; 1a261 (6:6261) - TX_FAR _UnnamedText_1a261 - db "@" - -UnnamedText_1a266: ; 1a266 (6:6266) - TX_FAR _UnnamedText_1a266 - db "@" - -SilphCo6Text3: ; 1a26b (6:626b) - db $08 ; asm - ld hl, UnnamedText_1a278 - ld de, UnnamedText_1a27d - call SilphCo6Script_1a22f - jp TextScriptEnd - -UnnamedText_1a278: ; 1a278 (6:6278) - TX_FAR _UnnamedText_1a278 - db "@" - -UnnamedText_1a27d: ; 1a27d (6:627d) - TX_FAR _UnnamedText_1a27d - db "@" - -SilphCo6Text4: ; 1a282 (6:6282) - db $08 ; asm - ld hl, UnnamedText_1a28f - ld de, UnnamedText_1a294 - call SilphCo6Script_1a22f - jp TextScriptEnd - -UnnamedText_1a28f: ; 1a28f (6:628f) - TX_FAR _UnnamedText_1a28f - db "@" - -UnnamedText_1a294: ; 1a294 (6:6294) - TX_FAR _UnnamedText_1a294 - db "@" +SECTION "bank9",ROMX,BANK[$9] -SilphCo6Text5: ; 1a299 (6:6299) - db $08 ; asm - ld hl, UnnamedText_1a2a6 - ld de, UnnamedText_1a2ab - call SilphCo6Script_1a22f - jp TextScriptEnd +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" -UnnamedText_1a2a6: ; 1a2a6 (6:62a6) - TX_FAR _UnnamedText_1a2a6 - 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 -UnnamedText_1a2ab: ; 1a2ab (6:62ab) - TX_FAR _UnnamedText_1a2ab - db "@" +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 -SilphCo6Text6: ; 1a2b0 (6:62b0) - db $08 ; asm - ld hl, SilphCo6TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd +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 -SilphCo6BattleText2: ; 1a2ba (6:62ba) - TX_FAR _SilphCo6BattleText2 - 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 -SilphCo6EndBattleText2: ; 1a2bf (6:62bf) - TX_FAR _SilphCo6EndBattleText2 - 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@" -SilphCo6AfterBattleText2: ; 1a2c4 (6:62c4) - TX_FAR _SilphCo6AfterBattleText2 - 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 -SilphCo6Text7: ; 1a2c9 (6:62c9) - db $08 ; asm - ld hl, SilphCo6TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd +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 -SilphCo6BattleText3: ; 1a2d3 (6:62d3) - TX_FAR _SilphCo6BattleText3 - 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♀@" -SilphCo6EndBattleText3: ; 1a2d8 (6:62d8) - TX_FAR _SilphCo6EndBattleText3 - 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 -SilphCo6AfterBattleText3: ; 1a2dd (6:62dd) - TX_FAR _SilphCo6AfterBattleText3 +FocusEnergyText: ; 27fb3 (9:7fb3) + db $0a + TX_FAR _FocusEnergyText db "@" -SilphCo6Text8: ; 1a2e2 (6:62e2) - db $08 ; asm - ld hl, SilphCo6TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd +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" -SilphCo6BattleText4: ; 1a2ec (6:62ec) - TX_FAR _SilphCo6BattleText4 - 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 -SilphCo6EndBattleText4: ; 1a2f1 (6:62f1) - TX_FAR _SilphCo6EndBattleText4 +SeededText: ; 2bef2 (a:7ef2) + TX_FAR _SeededText db "@" -SilphCo6AfterBattleText4: ; 1a2f6 (6:62f6) - TX_FAR _SilphCo6AfterBattleText4 +EvadedText: ; 2bef7 (a:7ef7) + TX_FAR _EvadedText db "@" -INCLUDE "data/mapObjects/silphco6.asm" +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" -SilphCo6Blocks: ; 1a36b (6:636b) - INCBIN "maps/silphco6.blk" +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 -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 +SupperEffectiveText: ; 2fb8e (b:7b8e) + TX_FAR _SupperEffectiveText + 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 +NotVeryEffectiveText: ; 2fb93 (b:7b93) + TX_FAR _NotVeryEffectiveText + db "@" -PointerTable_1a442: ; 1a442 (6:6442) - dw Func_1a44c - dw Func_1a485 - dw Func_1a4a1 - dw Func_1a4a6 - dw Func_1a4f4 +TrainerInfoTextBoxTileGraphics: ; 2fb98 (b:7b98) + INCBIN "gfx/trainer_info.2bpp" -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 +BlankLeaderNames: ; 2fc28 (b:7c28) + INCBIN "gfx/blank_leader_names.2bpp" -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 +CircleTile: ; 2fd88 (b:7d88) + INCBIN "gfx/circle_tile.2bpp" -Func_1a4a1: ; 1a4a1 (6:64a1) - ld a, [$cd38] - and a - ret nz +BadgeNumbersTileGraphics: ; 2fd98 (b:7d98) + INCBIN "gfx/badge_numbers.2bpp" -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 +; 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 -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 - -RLEList_1a4e9: ; 1a4e9 (6:64e9) - db $40, $02 - db $10, $03 - db $80, $05 - db $20, $01 - db $80, $06 - db $FF - -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 +AlreadyKnowsText: ; 2fe3b (b:7e3b) + TX_FAR _AlreadyKnowsText + db "@" -PointerTable_1a510: ; 1a510 (6:6510) - dw Func_1a514 - dw Func_1a56b +; 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 -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] +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 [$cf17], a - call Func_3486 - ld hl, $ccd3 - ld de, RLEList_PewterMuseumPlayer - call DecodeRLEList + 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 + +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 [$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 + ld [H_SPRITEINTERLACECOUNTER], a ; $ff8b + jr nz, .columnInnerLoop + dec de ; skip last 4 rows of new column + dec de + dec de + dec de ret -RLEList_PewterMuseumPlayer: ; 1a559 (6:6559) - db $00, $01 - db $40, $03 - db $20, $0D - db $40, $06 - db $FF +; 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 -RLEList_PewterMuseumGuy: ; 1a562 (6:6562) - db $40, $06 - db $80, $0D - db $40, $03 - db $80, $01 - db $FF +; 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 -Func_1a56b: ; 1a56b (6:656b) - ld a, [$cd38] +_PayDayEffect ; 2feb8 (b:7eb8) + xor a + ld hl, $cd6d + ld [hli], a + ld a, [$fff3] 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 + ld a, [$d022] + jr z, .asm_2fec8 ; 0x2fec3 $3 + ld a, [$cff3] +.asm_2fec8 + add a + ld [$ff98], 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 + 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, $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 + ld hl, PayDayText + jp PrintText + +PayDayText: ; 2ff04 (b:7f04) + TX_FAR _PayDayText + db "@" + +Func_2ff09 ; 2ff09 (b:7f09) + ld a, [$c102] + and $8 + jr z, .asm_2ff2e + ld b, COIN_CASE + 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 -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 +GameCornerCoinCaseText: ; 2ff32 (b:7f32) + TX_FAR _GameCornerCoinCaseText + 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 +GameCornerNoCoinsText: ; 2ff37 (b:7f37) + TX_FAR _GameCornerNoCoinsText + 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 -.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 +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" -RivalIDs: ; 1a605 (6:6605) - db SONY1 + $c8 - db SONY2 + $c8 - db SONY3 + $c8 - db $ff +_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 -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] +MistText: ; 33f52 (c:7f52) + TX_FAR _MistText + db "@" + +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_1a62a - cp b - jr nz, .asm_1a621 - scf + 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_1a62a - and a +.asm_33f8a + ld a, $1 + ld [W_MOVEMISSED], a ; $d05f 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 +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" -ForestDoorTileIDs: ; 1a657 (6:6657) - db $3a,$00 -MartDoorTileIDs: ; 1a659 (6:6659) - db $5e,$00 +TitleScroll_WaitBall: ; 37244 (d:7244) +; Wait around for the TitleBall animation to play out. +; hi: speed +; lo: duration + db $05, $05, 0 -HouseDoorTileIDs: ; 1a65b (6:665b) - db $54,$00 +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 -TilesetMuseumDoorTileIDs: ; 1a65d (6:665d) - db $3b,$00 +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 -ShipDoorTileIDs: ; 1a65f (6:665f) - db $1e,$00 +TitleScroll: ; 37258 (d:7258) + ld a, d -LobbyDoorTileIDs: ; 1a661 (6:6661) - db $1c,$38,$1a,$00 + ld bc, TitleScroll_In + ld d, $88 + ld e, 0 ; don't animate titleball -MansionDoorTileIDs: ; 1a665 (6:6665) - db $1a,$1c,$53,$00 + and a + jr nz, .ok -LabDoorTileIDs: ; 1a669 (6:6669) - db $34,$00 + ld bc, TitleScroll_Out + ld d, $00 + ld e, 0 ; don't animate titleball +.ok -FacilityDoorTileIDs: ; 1a66b (6:666b) - db $43,$58,$1b,$00 +_TitleScroll: ; 3726a (d:726a) + ld a, [bc] + and a + ret z -PlateauDoorTileIDs: ; 1a66f (6:666f) - db $3b,$1b,$00 + inc bc + push bc -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] + and $f 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 - - ; (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 - 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] - -INCLUDE "data/mapHeaders/cinnabarisland.asm" - -INCLUDE "data/mapObjects/cinnabarisland.asm" + ld a, b + and $f0 + swap a + ld b, a -CinnabarIslandBlocks: ; 1c069 (7:4069) - INCBIN "maps/cinnabarisland.blk" +.loop + ld h, d + ld l, $48 + call .ScrollBetween -INCLUDE "data/mapHeaders/route1.asm" + ld h, $00 + ld l, $88 + call .ScrollBetween -INCLUDE "data/mapObjects/route1.asm" + ld a, d + add b + ld d, a -Route1Blocks: ; 1c0fc (7:40fc) - INCBIN "maps/route1.blk" + call GetTitleBallY + dec c + jr nz, .loop -UndergroundPathEntranceRoute8Blocks: ; 1c1b0 (7:41b0) - INCBIN "maps/undergroundpathentranceroute8.blk" + pop bc + jr _TitleScroll -OaksLabBlocks: ; 1c1c0 (7:41c0) - INCBIN "maps/oakslab.blk" +.ScrollBetween ; 37292 (d:7292) +.wait + ld a, [$ff44] ; rLY + cp l + jr nz, .wait -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" + ld a, h + ld [rSCX], a ; $ff43 -CeladonMansion5Blocks: ; 1c1ee (7:41ee) -SchoolBlocks: ; 0x1c1ee 41EE size=16 - INCBIN "maps/school.blk" +.wait2 + ld a, [$ff44] ; rLY + cp h + jr z, .wait2 + ret -CeruleanHouseTrashedBlocks: ; 0x1c1fe size=16 - INCBIN "maps/ceruleanhousetrashed.blk" +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 -DiglettsCaveEntranceRoute11Blocks: ; 1c20e (7:420e) -DiglettsCaveRoute2Blocks: ; 0x1c20e size=16 - INCBIN "maps/diglettscaveroute2.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 -INCLUDE "text/monster_names.asm" +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 -Func_1c98a: ; 1c98a (7:498a) - call ClearScreen - call GoPAL_SET_CF1C - call LoadFontTilePatterns +Func_372d6: ; 372d6 (d:72d6) call LoadTextBoxTilePatterns - ld hl, ClearSaveDataText - call PrintText - FuncCoord 14, 7 ; $c43a + FuncCoord 3, 4 ; $c3f3 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 + 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 - jp InitGame + ld c, $96 + jp DelayFrames -ClearSaveDataText: ; 1c9c1 (7:49c1) - TX_FAR _ClearSaveDataText +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 + +PlaySlotMachineText: ; 37390 (d:7390) + TX_FAR _PlaySlotMachineText db "@" -Func_1c9c6: ; 1c9c6 (7:49c6) - ld hl, WhichFloorText +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 - ld hl, $cf7b - ld a, l - ld [$cf8b], a - ld a, h - ld [$cf8c], a - ld a, [wListScrollOffset] ; $cc36 - push af + 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 ; $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 [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, [hl] + ld a, $3 + sub b + ld [$cd50], a + ld hl, wPlayerCoins ld c, a - ld hl, $d3af - call Func_1ca0d - -Func_1ca0d: ; 1ca0d (7:4a0d) - inc hl - inc hl - ld a, b + 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 a, c ld [hli], a - 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 - -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 + 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 [$c109], a - ld [wJoypadForbiddenButtonsMask], a - ld a, $1 - ld [W_CINNABARISLANDCURSCRIPT], a - ret - -CinnabarIslandScript1: ; 1ca73 (7:4a73) - ld a, [$cd38] + ld [$d12c], a + ld a, $14 + ld [$d125], a + call DisplayTextBoxID + ld a, [wCurrentMenuItem] and a ret nz - call Delay3 - ld a, $0 - ld [W_CINNABARISLANDCURSCRIPT], a - ret - -CinnabarIslandTextPointers: ; 1ca81 (7:4a81) - dw CinnabarIslandText1 - dw CinnabarIslandText2 - dw CinnabarIslandText3 - dw MartSignText - dw PokeCenterSignText - dw CinnabarIslandText6 - dw CinnabarIslandText7 - dw CinnabarIslandText8 + call Func_377ce + jp Func_37395 -CinnabarIslandText8: ; 1ca91 (7:4a91) - TX_FAR _CinnabarIslandText8 - db "@" +CoinMultiplierSlotMachineText: ; 3745e (d:745e) + db "×3" + next "×2" + next "×1@" -CinnabarIslandText1: ; 1ca96 (7:4a96) - TX_FAR _CinnabarIslandText1 +OutOfCoinsSlotMachineText: ; 37467 (d:7467) + TX_FAR _OutOfCoinsSlotMachineText db "@" -CinnabarIslandText2: ; 1ca9b (7:4a9b) - TX_FAR _CinnabarIslandText2 +BetHowManySlotMachineText: ; 3746c (d:746c) + TX_FAR _BetHowManySlotMachineText db "@" -CinnabarIslandText3: ; 1caa0 (7:4aa0) - TX_FAR _CinnabarIslandText3 +StartSlotMachineText: ; 37471 (d:7471) + TX_FAR _StartSlotMachineText db "@" -CinnabarIslandText6: ; 1caa5 (7:4aa5) - TX_FAR _CinnabarIslandText6 +NotEnoughCoinsSlotMachineText: ; 37476 (d:7476) + TX_FAR _NotEnoughCoinsSlotMachineText db "@" -CinnabarIslandText7: ; 1caaa (7:4aaa) - TX_FAR _CinnabarIslandText7 +OneMoreGoSlotMachineText: ; 3747b (d:747b) + TX_FAR _OneMoreGoSlotMachineText db "@" -Route1Script: ; 1caaf (7:4aaf) - jp EnableAutoTextBoxDrawing - -Route1TextPointers: ; 1cab2 (7:4ab2) - dw Route1Text1 - dw Route1Text2 - dw Route1Text3 +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 -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 - -Route1ViridianMartSampleText: ; 1cae3 (7:4ae3) - TX_FAR _Route1ViridianMartSampleText - db "@" - -UnnamedText_1cae8: ; 1cae8 (7:4ae8) - TX_FAR _UnnamedText_1cae8 - db $0b,"@" - -UnnamedText_1caee: ; 1caee (7:4aee) - TX_FAR _UnnamedText_1caee - db "@" +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 -UnnamedText_1caf3: ; 1caf3 (7:4af3) - TX_FAR _UnnamedText_1caf3 - db "@" +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 -Route1Text2: ; 1caf8 (7:4af8) - TX_FAR _Route1Text2 - 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 -Route1Text3: ; 1cafd (7:4afd) - TX_FAR _Route1Text3 - 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 -INCLUDE "data/mapHeaders/oakslab.asm" +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 -OaksLabScript: ; 1cb0e (7:4b0e) - ld a, [$d74b] - bit 6, a - call nz, OaksLabScript_1d076 - ld a, $1 - ld [$cf0c], a +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 [$cc3c], a - ld hl, OaksLabScriptPointers - ld a, [W_OAKSLABCURSCRIPT] - jp CallFunctionInTable - -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 - -OaksLabScript0: ; 1cb4e (7:4b4e) - ld a, [$d74b] - bit 7, a + ld [$cd4e], a + ret + +Func_3756e: ; 3756e (d:756e) + ld hl, wTrainerScreenX + ld de, $cd44 + ld a, [de] + cp [hl] 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] + 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 - ld a, $1 - ld [W_OAKSLABCURSCRIPT], a +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] -OaksLabScript1: ; 1cb6e (7:4b6e) - ld a, $8 - ld [$ff8c], a - ld de, OakEntryMovement - call MoveSprite +.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, SlotsMachineText_37665 + call PrintText + call WaitForTextScrollButtonPress + call Func_3776b + call Func_3775f + ld a, $e4 + ld [$ff48], a + jp .loop - ld a, $2 - ld [W_OAKSLABCURSCRIPT], a +SlotsMachineText_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 -OakEntryMovement: ; 1cb7e (7:4b7e) - db $40,$40,$40,$FF +LinedUpText: ; 37673 (d:7673) + TX_FAR _LinedUpText + db "@" -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 +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 - ld a, $3 - ld [W_OAKSLABCURSCRIPT], a - ret +SlotReward300Text: ; 37690 (d:7690) + db "300@" -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 +SlotReward100Text: ; 37694 (d:7694) + db "100@" - ld a, $4 - ld [W_OAKSLABCURSCRIPT], a - ret +SlotReward8Text: ; 37698 (d:7698) + db "8@" -PlayerEntryMovementRLE: ; 1cbcf (7:4bcf) - db $40, $8, $ff +SlotReward15Text: ; 3769a (d:769a) + db "15@" -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 +NotThisTimeText: ; 3769d (d:769d) + TX_FAR _NotThisTimeText + db "@" - ld a, $5 - ld [W_OAKSLABCURSCRIPT], a +Func_376a2: ; 376a2 (d:76a2) + ld a, [de] + cp [hl] + ret nz + ld a, [bc] + cp [hl] 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 - 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 +Func_376a8: ; 376a8 (d:76a8) + ld de, $cd47 + ld hl, SlotMachineWheel3 + ld a, [wTrainerScreenY] + call Func_376c9 - ld a, $6 - ld [W_OAKSLABCURSCRIPT], a - ret +Func_376b4: ; 376b4 (d:76b4) + ld de, $cd44 + ld hl, SlotMachineWheel2 + ld a, [wTrainerFacingDirection] + call Func_376c9 -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 +Func_376c0: ; 376c0 (d:76c0) + ld de, wTrainerScreenX + ld hl, SlotMachineWheel1 + ld a, [wTrainerEngageDistance] - ld a, $7 - ld [W_OAKSLABCURSCRIPT], a +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 -OaksLabScript7: ; 1cc72 (7:4c72) - ld a, [$cd38] +SlotReward8Func: ; 376d7 (d:76d7) + ld hl, W_SUBANIMSUBENTRYADDR + ld a, [hl] and a - ret nz - call Delay3 + jr z, .skip + dec [hl] +.skip + ld b, $2 + ld de, 8 + ret - ld a, $6 - ld [W_OAKSLABCURSCRIPT], a +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 -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 - -.MiddleBallMovement1 - db 0,0,$C0,$C0,$C0,$40,$FF -.MiddleBallMovement2 - db 0,$C0,$C0,$C0,$FF - -.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 - -.RightBallMovement1 - db 0,0,$C0,$C0,$C0,$C0,$40,$FF -.RightBallMovement2 - db 0,$C0,$C0,$C0,$C0,$FF - -.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 +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 -.LeftBallMovement1 - db $00,$C0 ; not yet terminated! -.LeftBallMovement2 - db $C0,$FF +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 -.asm_1ccf3 - ld a, $1 - ld [$ff8c], a - call MoveSprite +YeahText: ; 37722 (d:7722) + TX_FAR _YeahText + db $0a, "@" - ld a, $9 - ld [W_OAKSLABCURSCRIPT], a +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 -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] +Func_37741: ; 37741 (d:7741) + ld hl, $cd4b + ld a, [$cd50] + ld [hld], a xor a - ld [wJoypadForbiddenButtonsMask], a + ld [hli], a + ld de, $d5a5 + ld c, $2 + ld a, $c + call Predef - ld a, $a - ld [W_OAKSLABCURSCRIPT], a - ret +Func_37754: ; 37754 (d:7754) + ld hl, $c3b9 + ld de, wPlayerCoins + ld c, $2 + jp PrintBCDNumber -OaksLabScript10: ; 1cd6d (7:4d6d) - ld a, [W_YCOORD] - cp $6 - ret nz +Func_3775f: ; 3775f (d:775f) + ld hl, $c3bf + ld de, $cd4a + ld bc, $8204 + jp PrintNumber + +Func_3776b: ; 3776b (d:776b) ld a, $1 - ld [$ff8c], a + ld [$c002], a + call WaitForSoundToFinish + ld hl, $cd46 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 + 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 - ld a, [$ff95] + call Func_37754 + call Func_3775f + ld a, (SFX_1f_65 - SFX_Headers_1f) / 3 + call PlaySound + ld a, [W_SUBANIMTRANSFORM] dec a - ld [$ff95], a - ld a, $20 - call Predef - ld de, $cc97 - ld a, $1 - ld [$ff8c], a - call MoveSprite - - ld a, $b - ld [W_OAKSLABCURSCRIPT], a - ret + 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 -OaksLabScript11: ; 1cdb9 (7:4db9) - ld a, [$d730] - bit 0, a - ret nz +Func_377ce: ; 377ce (d:77ce) + ld a, $23 + ld [$d08a], a + jr Func_377e3 - ; 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 +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 -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] +Func_377e3: ; 377e3 (d:77e3) + ld hl, $c3cb + call Func_377fe + ld hl, $c46b + call Func_377fe - ld a, $d - ld [W_OAKSLABCURSCRIPT], a - ret +Func_377ef: ; 377ef (d:77ef) + ld hl, $c3f3 + call Func_377fe + ld hl, $c443 + call Func_377fe -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 +Func_377fb: ; 377fb (d:77fb) + ld hl, $c41b - ld a, $e - ld [W_OAKSLABCURSCRIPT], a +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 -.RivalExitMovement - db $E0,$00,$00,$00,$00,$00,$FF +Func_37813: ; 37813 (d:7813) + ld bc, SlotMachineWheel1 + ld de, wTrainerEngageDistance + ld hl, wOAMBuffer + ld a, $30 + ld [W_BASECOORDX], a + jr Func_37841 -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 +Func_37823: ; 37823 (d:7823) + ld bc, SlotMachineWheel2 + ld de, wTrainerFacingDirection + ld hl, $c330 + ld a, $50 + ld [W_BASECOORDX], a + jr Func_37841 -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 +Func_37833: ; 37833 (d:7833) + ld bc, SlotMachineWheel3 + ld de, wTrainerScreenY + ld hl, $c360 + ld a, $70 + ld [W_BASECOORDX], a - ld a, $10 - ld [W_OAKSLABCURSCRIPT], a - ret +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 -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 +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 - ld [$ff8d], a - jp Func_34a6 ; face object +.skip + ld [de], a + ret -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 +Func_37882: ; 37882 (d:7882) 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 + 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 - ld a, $11 - ld [W_OAKSLABCURSCRIPT], a - ret +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 -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 +SlotMachineMap: ; 378f5 (d:78f5) + INCBIN "gfx/tilemaps/slotmachine.map" - ld a, $12 - ld [W_OAKSLABCURSCRIPT], a - ret +SLOTS7 EQU $0200 +SLOTSBAR EQU $0604 +SLOTSCHERRY EQU $0A08 +SLOTSFISH EQU $0E0C +SLOTSBIRD EQU $1210 +SLOTSMOUSE EQU $1614 -OaksLabScript18: ; 1d009 (7:5009) - ret +INCLUDE "data/slot_machine_wheels.asm" -OaksLabScript_1d00a: ; 1d00a (7:500a) - ld hl, wBagItems - ld bc, $0000 -.asm_1d010 +SlotMachineTiles1: ; 37a51 (d:7a51) +IF _RED + INCBIN "gfx/red/slotmachine1.2bpp" +ENDC +IF _BLUE + INCBIN "gfx/blue/slotmachine1.2bpp" +ENDC + +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 - 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 - -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 - 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 + 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 -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 +PointerTable_37ce6: ; 37ce6 (d:7ce6) + dw PewterMuseumGuyCoords + dw PewterGymGuyCoords -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 +; 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 -OaksLabText39: ; 1d152 (7:5152) - TX_FAR _OaksLabText39 - db "@" +.down + db $40, $40, $ff +.up + db $10, $20, $ff +.left + db $40, $10, $ff +.right + db $40, $20, $ff -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 "@" +; 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 -OaksLabLookAtSquirtle: ; 1d19f (7:519f) - ld hl, OaksLabSquirtleText - jr OaksLabMonChoiceMenu -OaksLabSquirtleText: ; 1d1a4 (7:51a4) - TX_FAR _OaksLabSquirtleText - 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 -OaksLabLookAtBulbasaur: ; 1d1a9 (7:51a9) - ld hl, OaksLabBulbasaurText - jr OaksLabMonChoiceMenu -OaksLabBulbasaurText: ; 1d1ae (7:51ae) - TX_FAR _OaksLabBulbasaurText - db "@" -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 +_Multiply: ; 37d41 (d:7d41) 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, 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 -OaksLabScript_1d22d: ; 1d22d (7:522d) - ld a, $5 - ld [$ff8c], a +_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 [$ff8b], a - call Func_34fc - ld [hl], $0 - ld hl, OaksLabLastMonText - call PrintText - jp TextScriptEnd - -OaksLabLastMonText: ; 1d243 (7:5243) - TX_FAR _OaksLabLastMonText - db "@" - -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 - -UnnamedText_1d2f0: ; 1d2f0 (7:52f0) - TX_FAR _UnnamedText_1d2f0 - db "@" - -UnnamedText_1d2f5: ; 1d2f5 (7:52f5) - TX_FAR _UnnamedText_1d2f5 - db "@" - -UnnamedText_1d2fa: ; 1d2fa (7:52fa) - TX_FAR _UnnamedText_1d2fa - db "@" - -OaksLabDeliverParcelText: ; 1d2ff (7:52ff) - TX_FAR _OaksLabDeliverParcelText1 - db $11 - TX_FAR _OaksLabDeliverParcelText2 - db "@" + 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 -OaksLabAroundWorldText: ; 1d309 (7:5309) - TX_FAR _OaksLabAroundWorldText - 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 -OaksLabGivePokeballsText: ; 1d30e (7:530e) - TX_FAR _OaksLabGivePokeballsText1 - db $11 - TX_FAR _OaksLabGivePokeballsText2 +GameCornerOutOfOrderText: ; 37e79 (d:7e79) + TX_FAR _GameCornerOutOfOrderText db "@" -OaksLabPleaseVisitText: ; 1d318 (7:5318) - TX_FAR _OaksLabPleaseVisitText +GameCornerOutToLunchText: ; 37e7e (d:7e7e) + TX_FAR _GameCornerOutToLunchText db "@" -UnnamedText_1d31d: ; 1d31d (7:531d) - TX_FAR _UnnamedText_1d31d +GameCornerSomeonesKeysText: ; 37e83 (d:7e83) + TX_FAR _GameCornerSomeonesKeysText db "@" -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 +SECTION "bankE",ROMX,BANK[$E] -UnnamedText_1d32c: ; 1d32c (7:532c) - TX_FAR _UnnamedText_1d32c - db "@" +INCLUDE "data/moves.asm" -OaksLabText35: ; 1d331 (7:5331) -OaksLabText8: ; 1d331 (7:5331) - TX_FAR _OaksLabText8 - db "@" +INCLUDE "data/base_stats.asm" -OaksLabText36: ; 1d336 (7:5336) -OaksLabText9: ; 1d336 (7:5336) - db $08 ; asm - ld hl, UnnamedText_1d340 - call PrintText - jp TextScriptEnd +INCLUDE "data/cries.asm" -UnnamedText_1d340: ; 1d340 (7:5340) - TX_FAR _UnnamedText_1d340 - db "@" +Func_39680: ; 39680 (e:5680) + ld a, [H_WHOSETURN] ; $fff3 + and a + ld a, [$d060] + ld hl, $d026 + jr z, .asm_39691 + ld a, [$d065] + ld hl, $cff7 +.asm_39691 + ld c, $4 + ld b, a +.asm_39694 + srl b + call c, Func_3969f + inc hl + inc hl + dec c + ret z + jr .asm_39694 -OaksLabText17: ; 1d345 (7:5345) - db $8 - ld hl, OaksLabRivalWaitingText - call PrintText - jp TextScriptEnd +Func_3969f: ; 3969f (e:569f) + ld a, [hl] + add a + ld [hld], a + ld a, [hl] + rl a + ld [hli], a + ret -OaksLabRivalWaitingText: ; 1d34f (7:534f) - TX_FAR _OaksLabRivalWaitingText - db "@" +Func_396a7: ; 396a7 (e:56a7) + ld a, [H_WHOSETURN] ; $fff3 + and a + ld a, [$d061] + ld hl, W_PLAYERMONATK + jr z, .asm_396b8 + ld a, [$d066] + ld hl, W_ENEMYMONATTACK +.asm_396b8 + ld c, $4 + ld b, a +.asm_396bb + srl b + call c, Func_396c6 + inc hl + inc hl + dec c + ret z + jr .asm_396bb -OaksLabText18: ; 1d354 (7:5354) - db $8 - ld hl, OaksLabChooseMonText - call PrintText - jp TextScriptEnd +Func_396c6: ; 396c6 (e:56c6) + ld a, [hl] + srl a + ld [hli], a + rr [hl] + or [hl] + jr nz, .asm_396d1 + ld [hl], $1 +.asm_396d1 + dec hl + ret -OaksLabChooseMonText: ; 1d35e (7:535e) - TX_FAR _OaksLabChooseMonText - db "@" - -OaksLabText19: ; 1d363 (7:5363) - db $8 - ld hl, OaksLabRivalInterjectionText - call PrintText - jp TextScriptEnd +_ScrollTrainerPicAfterBattle: ; 396d3 (e:56d3) +; Load the enemy trainer's pic and scrolls it into +; the screen from the right. + xor a + ld [W_ENEMYMONID], a + ld b, $1 + call GoPAL_SET + ld hl, _LoadTrainerPic + ld b, BANK(_LoadTrainerPic) + call Bankswitch + FuncCoord 19, 0 ; $c3b3 + ld hl, Coord + ld c, $0 +.asm_396e9 + inc c + ld a, c + cp $7 + ret z + ld d, $0 + push bc + push hl +.asm_396f2 + call Func_39707 + inc hl + ld a, $7 + add d + ld d, a + dec c + jr nz, .asm_396f2 + ld c, $4 + call DelayFrames + pop hl + pop bc + dec hl + jr .asm_396e9 -OaksLabRivalInterjectionText: ; 1d36d (7:536d) - TX_FAR _OaksLabRivalInterjectionText - db "@" +Func_39707: ; 39707 (e:5707) + push hl + push de + push bc + ld e, $7 +.asm_3970c + ld [hl], d + ld bc, $14 + add hl, bc + inc d + dec e + jr nz, .asm_3970c + pop bc + pop de + pop hl + ret -OaksLabText20: ; 1d372 (7:5372) - db $8 - ld hl, OaksLabBePatientText - call PrintText - jp TextScriptEnd +; creates a set of moves that may be used and returns its address in hl +; unused slots are filled with 0, all used slots may be chosen with equal probability +AIEnemyTrainerChooseMoves: ; 39719 (e:5719) + ld a, $a + ld hl, $cee9 ; init temporary move selection array. Only the moves with the lowest numbers are chosen in the end + ld [hli], a ; move 1 + ld [hli], a ; move 2 + ld [hli], a ; move 3 + ld [hl], a ; move 4 + ld a, [W_ENEMYDISABLEDMOVE] ; forbid disabled move (if any) + swap a + and $f + jr z, .noMoveDisabled + ld hl, $cee9 + dec a + ld c, a + ld b, $0 + add hl, bc ; advance pointer to forbidden move + ld [hl], $50 ; forbid (highly discourage) disabled move +.noMoveDisabled + ld hl, TrainerClassMoveChoiceModifications ; 589B + ld a, [W_TRAINERCLASS] + ld b, a +.loopTrainerClasses + dec b + jr z, .readTrainerClassData +.loopTrainerClassData + ld a, [hli] + and a + jr nz, .loopTrainerClassData + jr .loopTrainerClasses +.readTrainerClassData + ld a, [hl] + and a + jp z, .useOriginalMoveSet + push hl +.nextMoveChoiceModification + pop hl + ld a, [hli] + and a + jr z, .loopFindMinimumEntries + push hl + ld hl, AIMoveChoiceModificationFunctionPointers ; $57a3 + dec a + add a + ld c, a + ld b, $0 + add hl, bc ; skip to pointer + ld a, [hli] ; read pointer into hl + ld h, [hl] + ld l, a + ld de, .nextMoveChoiceModification ; set return address + push de + jp [hl] ; execute modification function +.loopFindMinimumEntries ; all entries will be decremented sequentially until one of them is zero + ld hl, $cee9 ; temp move selection array + ld de, W_ENEMYMONMOVES ; enemy moves + ld c, $4 +.loopDecrementEntries + ld a, [de] + inc de + and a + jr z, .loopFindMinimumEntries + dec [hl] + jr z, .minimumEntriesFound + inc hl + dec c + jr z, .loopFindMinimumEntries + jr .loopDecrementEntries +.minimumEntriesFound + ld a, c +.loopUndoPartialIteration ; undo last (partial) loop iteration + inc [hl] + dec hl + inc a + cp $5 + jr nz, .loopUndoPartialIteration + ld hl, $cee9 ; temp move selection array + ld de, W_ENEMYMONMOVES ; enemy moves + ld c, $4 +.filterMinimalEntries ; all minimal entries now have value 1. All other slots will be disabled (move set to 0) + ld a, [de] + and a + jr nz, .moveExisting ; 0x3978a $1 + ld [hl], a +.moveExisting + ld a, [hl] + dec a + jr z, .slotWithMinimalValue + xor a + ld [hli], a ; disable move slot + jr .next +.slotWithMinimalValue + ld a, [de] + ld [hli], a ; enable move slot +.next + inc de + dec c + jr nz, .filterMinimalEntries + ld hl, $cee9 ; use created temporary array as move set + ret +.useOriginalMoveSet + ld hl, W_ENEMYMONMOVES ; use original move set + ret -OaksLabBePatientText: ; 1d37c (7:537c) - TX_FAR _OaksLabBePatientText - db "@" +AIMoveChoiceModificationFunctionPointers: ; 397a3 (e:57a3) + dw AIMoveChoiceModification1 + dw AIMoveChoiceModification2 + dw AIMoveChoiceModification3 + dw AIMoveChoiceModification4 ; unused, does nothing -OaksLabText12: ; 1d381 (7:5381) - db $8 - ld hl, OaksLabLeavingText - call PrintText - jp TextScriptEnd +; discourages moves that cause no damage but only a status ailment if player's mon already has one +AIMoveChoiceModification1: ; 397ab (e:57ab) + ld a, [W_PLAYERMONSTATUS] + and a + ret z ; return if no status ailment on player's mon + ld hl, $cee8 ; temp move selection array (-1 byte offest) + ld de, W_ENEMYMONMOVES ; enemy moves + ld b, $5 +.nextMove + dec b + ret z ; processed all 4 moves + inc hl + ld a, [de] + and a + ret z ; no more moves in move set + inc de + call ReadMove + ld a, [W_ENEMYMOVEPOWER] + and a + jr nz, .nextMove + ld a, [W_ENEMYMOVEEFFECT] + push hl + push de + push bc + ld hl, StatusAilmentMoveEffects + ld de, $0001 + call IsInArray + pop bc + pop de + pop hl + jr nc, .nextMove + ld a, [hl] + add $5 ; discourage move + ld [hl], a + jr .nextMove -OaksLabLeavingText: ; 1d38b (7:538b) - TX_FAR _OaksLabLeavingText - db "@" +StatusAilmentMoveEffects ; 57e2 + db $01 ; some sleep effect? + db SLEEP_EFFECT + db POISON_EFFECT + db PARALYZE_EFFECT + db $FF -OaksLabText13: ; 1d390 (7:5390) - db $8 - ld hl, OaksLabRivalPickingMonText - call PrintText - jp TextScriptEnd +; slightly encourage moves with specific effects +AIMoveChoiceModification2: ; 397e7 (e:57e7) + ld a, [$ccd5] + cp $1 + ret nz + ld hl, $cee8 ; temp move selection array (-1 byte offest) + ld de, W_ENEMYMONMOVES ; enemy moves + ld b, $5 +.nextMove + dec b + ret z ; processed all 4 moves + inc hl + ld a, [de] + and a + ret z ; no more moves in move set + inc de + call ReadMove + ld a, [W_ENEMYMOVEEFFECT] + cp ATTACK_UP1_EFFECT + jr c, .nextMove + cp BIDE_EFFECT + jr c, .preferMove + cp ATTACK_UP2_EFFECT + jr c, .nextMove + cp POISON_EFFECT + jr c, .preferMove + jr .nextMove +.preferMove + dec [hl] ; slighly encourage this move + jr .nextMove -OaksLabRivalPickingMonText: ; 1d39a (7:539a) - TX_FAR _OaksLabRivalPickingMonText - db "@" +; encourages moves that are effective against the player's mon +AIMoveChoiceModification3: ; 39817 (e:5817) + ld hl, $cee8 ; temp move selection array (-1 byte offest) + ld de, W_ENEMYMONMOVES ; enemy moves + ld b, $5 +.nextMove + dec b + ret z ; processed all 4 moves + inc hl + ld a, [de] + and a + ret z ; no more moves in move set + inc de + call ReadMove + push hl + push bc + push de + ld hl, AIGetTypeEffectiveness + ld b, BANK(AIGetTypeEffectiveness) + call Bankswitch + pop de + pop bc + pop hl + ld a, [$d11e] + cp $10 + jr z, .nextMove + jr c, .notEffectiveMove + dec [hl] ; slighly encourage this move + jr .nextMove +.notEffectiveMove ; discourages non-effective moves if better moves are available + push hl + push de + push bc + ld a, [W_ENEMYMOVETYPE] + ld d, a + ld hl, W_ENEMYMONMOVES ; enemy moves + ld b, $5 + ld c, $0 +.loopMoves + dec b + jr z, .done + ld a, [hli] + and a + jr z, .done + call ReadMove + ld a, [W_ENEMYMOVEEFFECT] + cp SUPER_FANG_EFFECT + jr z, .betterMoveFound ; Super Fang is considered to be a better move + cp SPECIAL_DAMAGE_EFFECT + jr z, .betterMoveFound ; any special damage moves are considered to be better moves + cp FLY_EFFECT + jr z, .betterMoveFound ; Fly is considered to be a better move + ld a, [W_ENEMYMOVETYPE] + cp d + jr z, .loopMoves + ld a, [W_ENEMYMOVEPOWER] + and a + jr nz, .betterMoveFound ; damaging moves of a different type are considered to be better moves + jr .loopMoves +.betterMoveFound + ld c, a +.done + ld a, c + pop bc + pop de + pop hl + and a + jr z, .nextMove + inc [hl] ; slighly discourage this move + jr .nextMove +AIMoveChoiceModification4: ; 39883 (e:5883) + ret -OaksLabText14: ; 1d39f (7:539f) - db $8 - ld hl, OaksLabRivalReceivedMonText - call PrintText - jp TextScriptEnd +ReadMove: ; 39884 (e:5884) + push hl + push de + push bc + dec a + ld hl,Moves + ld bc,6 + call AddNTimes + ld de,$CFCC + call CopyData + pop bc + pop de + pop hl + ret -OaksLabRivalReceivedMonText: ; 1d3a9 (7:53a9) - TX_FAR _OaksLabRivalReceivedMonText - db $11, "@" +; move choice modification methods that are applied for each trainer class +; 0 is sentinel value +TrainerClassMoveChoiceModifications: ; 3989b (e:589b) + db 0 ; YOUNGSTER + db 1,0 ; BUG CATCHER + db 1,0 ; LASS + db 1,3,0 ; SAILOR + db 1,0 ; JR__TRAINER_M + db 1,0 ; JR__TRAINER_F + db 1,2,3,0; POKEMANIAC + db 1,2,0 ; SUPER_NERD + db 1,0 ; HIKER + db 1,0 ; BIKER + db 1,3,0 ; BURGLAR + db 1,0 ; ENGINEER + db 1,2,0 ; JUGGLER_X + db 1,3,0 ; FISHER + db 1,3,0 ; SWIMMER + db 0 ; CUE_BALL + db 1,0 ; GAMBLER + db 1,3,0 ; BEAUTY + db 1,2,0 ; PSYCHIC_TR + db 1,3,0 ; ROCKER + db 1,0 ; JUGGLER + db 1,0 ; TAMER + db 1,0 ; BIRD_KEEPER + db 1,0 ; BLACKBELT + db 1,0 ; SONY1 + db 1,3,0 ; PROF_OAK + db 1,2,0 ; CHIEF + db 1,2,0 ; SCIENTIST + db 1,3,0 ; GIOVANNI + db 1,0 ; ROCKET + db 1,3,0 ; COOLTRAINER_M + db 1,3,0 ; COOLTRAINER_F + db 1,0 ; BRUNO + db 1,0 ; BROCK + db 1,3,0 ; MISTY + db 1,3,0 ; LT__SURGE + db 1,3,0 ; ERIKA + db 1,3,0 ; KOGA + db 1,3,0 ; BLAINE + db 1,3,0 ; SABRINA + db 1,2,0 ; GENTLEMAN + db 1,3,0 ; SONY2 + db 1,3,0 ; SONY3 + db 1,2,3,0; LORELEI + db 1,0 ; CHANNELER + db 1,0 ; AGATHA + db 1,3,0 ; LANCE -OaksLabText15: ; 1d3af (7:53af) - db $8 - ld hl, OaksLabRivalChallengeText - call PrintText - jp TextScriptEnd +TrainerPicAndMoneyPointers: ; 39914 (e:5914) +; trainer pic pointers and base money. +; money received after battle = base money × level of highest-level enemy mon + dw YoungsterPic + db 0,$15,0 -OaksLabRivalChallengeText: ; 1d3b9 (7:53b9) - TX_FAR _OaksLabRivalChallengeText - db "@" + dw BugCatcherPic + db 0,$10,0 -UnnamedText_1d3be: ; 1d3be (7:53be) - TX_FAR _UnnamedText_1d3be - db "@" + dw LassPic + db 0,$15,0 -UnnamedText_1d3c3: ; 1d3c3 (7:53c3) - TX_FAR _UnnamedText_1d3c3 - db "@" + dw SailorPic + db 0,$30,0 -OaksLabText16: ; 1d3c8 (7:53c8) - db $8 - ld hl, OaksLabRivalToughenUpText - call PrintText - jp TextScriptEnd + dw JrTrainerMPic + db 0,$20,0 -OaksLabRivalToughenUpText: ; 1d3d2 (7:53d2) - TX_FAR _OaksLabRivalToughenUpText - db "@" + dw JrTrainerFPic + db 0,$20,0 -OaksLabText21: ; 1d3d7 (7:53d7) - TX_FAR _OaksLabText21 - db "@" + dw PokemaniacPic + db 0,$50,0 -OaksLabText22: ; 1d3dc (7:53dc) - TX_FAR _OaksLabText22 - db "@" + dw SuperNerdPic + db 0,$25,0 -OaksLabText23: ; 1d3e1 (7:53e1) - TX_FAR _OaksLabText23 - db "@" + dw HikerPic + db 0,$35,0 -OaksLabText24: ; 1d3e6 (7:53e6) - TX_FAR _OaksLabText24 - db "@" + dw BikerPic + db 0,$20,0 -OaksLabText25: ; 1d3eb (7:53eb) - TX_FAR _OaksLabText25 - db $11, "@" + dw BurglarPic + db 0,$90,0 -OaksLabText26: ; 1d3f1 (7:53f1) - TX_FAR _OaksLabText26 - db "@" + dw EngineerPic + db 0,$50,0 -OaksLabText27: ; 1d3f6 (7:53f6) - TX_FAR _OaksLabText27 - db "@" + dw JugglerPic + db 0,$35,0 -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 + dw FisherPic + db 0,$35,0 -UnnamedText_1d405: ; 1d405 (7:5405) - TX_FAR _UnnamedText_1d405 - db "@" + dw SwimmerPic + db 0,$05,0 -INCLUDE "data/mapObjects/oakslab.asm" + dw CueBallPic + db 0,$25,0 -INCLUDE "data/mapHeaders/viridianmart.asm" + dw GamblerPic + db 0,$70,0 -ViridianMartScript: ; 1d46e (7:546e) - call ViridianMartScript_1d47d - call EnableAutoTextBoxDrawing - ld hl, ViridianMartScriptPointers - ld a, [W_VIRIDIANMARKETCURSCRIPT] - jp CallFunctionInTable + dw BeautyPic + db 0,$70,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 + dw PsychicPic + db 0,$10,0 -ViridianMartScriptPointers: ; 1d495 (7:5495) - dw ViridianMartScript0 - dw ViridianMartScript1 - dw ViridianMartScript2 + dw RockerPic + db 0,$25,0 -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 + dw JugglerPic + db 0,$35,0 -RLEMovement1d4bb: ; 1d4bb (7:54bb) - db $20, $01 - db $40, $02 - db $ff + dw TamerPic + db 0,$40,0 -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 + dw BirdKeeperPic + db 0,$25,0 -ViridianMartTextPointers: ; 1d4e0 (7:54e0) - dw ViridianMartText1 - dw ViridianMartText2 - dw ViridianMartText3 - dw ViridianMartText4 - dw ViridianMartText5 - dw ViridianMartText6 - dw ViridianMartText2 - dw ViridianMartText3 + dw BlackbeltPic + db 0,$25,0 -ViridianMartText1: ; 1d4f0 (7:54f0) - TX_FAR _ViridianMartText1 - db "@" + dw Rival1Pic + db 0,$35,0 -ViridianMartText4: ; 1d4f5 (7:54f5) - TX_FAR _ViridianMartText4 - db "@" + dw ProfOakPic + db 0,$99,0 -ViridianMartText5: ; 1d4fa (7:54fa) - TX_FAR ViridianMartParcelQuestText - db $11 - db "@" + dw ChiefPic + db 0,$30,0 -ViridianMartText2: ; 1d500 (7:5500) - TX_FAR _ViridianMartText2 - db "@" + dw ScientistPic + db 0,$50,0 -ViridianMartText3: ; 1d505 (7:5505) - TX_FAR _ViridianMartText3 - db "@" + dw GiovanniPic + db 0,$99,0 -INCLUDE "data/mapObjects/viridianmart.asm" + dw RocketPic + db 0,$30,0 -ViridianMartBlocks: ; 1d530 (7:5530) - INCBIN "maps/viridianmart.blk" + dw CooltrainerMPic + db 0,$35,0 -INCLUDE "data/mapHeaders/school.asm" + dw CooltrainerFPic + db 0,$35,0 -SchoolScript: ; 1d54c (7:554c) - jp EnableAutoTextBoxDrawing + dw BrunoPic + db 0,$99,0 -SchoolTextPointers: ; 1d54f (7:554f) - dw SchoolText1 - dw SchoolText2 + dw BrockPic + db 0,$99,0 -SchoolText1: ; 1d553 (7:5553) - TX_FAR _SchoolText1 - db "@" + dw MistyPic + db 0,$99,0 -SchoolText2: ; 1d558 (7:5558) - TX_FAR _SchoolText2 - db "@" + dw LtSurgePic + db 0,$99,0 -INCLUDE "data/mapObjects/school.asm" + dw ErikaPic + db 0,$99,0 -INCLUDE "data/mapHeaders/viridianhouse.asm" + dw KogaPic + db 0,$99,0 -ViridianHouseScript: ; 1d58a (7:558a) - jp EnableAutoTextBoxDrawing + dw BlainePic + db 0,$99,0 -ViridianHouseTextPointers: ; 1d58d (7:558d) - dw ViridianHouseText1 - dw ViridianHouseText2 - dw ViridianHouseText3 - dw ViridianHouseText4 + dw SabrinaPic + db 0,$99,0 -ViridianHouseText1: ; 1d595 (7:5595) - TX_FAR _ViridianHouseText1 - db "@" + dw GentlemanPic + db 0,$70,0 -ViridianHouseText2: ; 1d59a (7:559a) - TX_FAR _ViridianHouseText2 - db "@" + dw Rival2Pic + db 0,$65,0 -ViridianHouseText3: ; 1d59f (7:559f) - db $08 ; asm - ld hl, UnnamedText_1d5b1 - call PrintText - ld a, SPEAROW - call PlayCry - call WaitForSoundToFinish - jp TextScriptEnd + dw Rival3Pic + db 0,$99,0 -UnnamedText_1d5b1: ; 1d5b1 (7:55b1) - TX_FAR _UnnamedText_1d5b1 - db "@" + dw LoreleiPic + db 0,$99,0 -ViridianHouseText4: ; 1d5b6 (7:55b6) - TX_FAR _ViridianHouseText4 - db "@" + dw ChannelerPic + db 0,$30,0 -INCLUDE "data/mapObjects/viridianhouse.asm" + dw AgathaPic + db 0,$99,0 -INCLUDE "data/mapHeaders/pewterhouse1.asm" + dw LancePic + db 0,$99,0 -PewterHouse1Script: ; 1d5f3 (7:55f3) - jp EnableAutoTextBoxDrawing +INCLUDE "text/trainer_names.asm" -PewterHouse1TextPointers: ; 1d5f6 (7:55f6) - dw PewterHouse1Text1 - dw PewterHouse1Text2 - dw PewterHouse1Text3 +Func_39b87: ; 39b87 (e:5b87) + ld hl, $d0dc + ld de, $d0e1 + ld b, $0 +.asm_39b8f + ld a, [hli] + and a + jr z, .asm_39bc1 + push hl + ld [$d0b5], a + ld a, $2c + ld [$d0b7], a + ld a, MOVE_NAME + ld [W_LISTTYPE], a + call GetName + ld hl, $cd6d +.asm_39ba7 + ld a, [hli] + cp $50 + jr z, .asm_39bb0 + ld [de], a + inc de + jr .asm_39ba7 +.asm_39bb0 + ld a, b + ld [$cd6c], a + inc b + ld a, $4e + ld [de], a + inc de + pop hl + ld a, b + cp $4 + jr z, .asm_39bd1 + jr .asm_39b8f +.asm_39bc1 + ld a, "-" + ld [de], a + inc de + inc b + ld a, b + cp $4 + jr z, .asm_39bd1 + ld a, $4e + ld [de], a + inc de + jr .asm_39bc1 +.asm_39bd1 + ld a, "@" + ld [de], a + ret -PewterHouse1Text1: ; 1d5fc (7:55fc) - TX_FAR _PewterHouse1Text1 - db $08 ; asm - ld a, NIDORAN_M - call PlayCry - call WaitForSoundToFinish - jp TextScriptEnd +Func_39bd5: ; 39bd5 (e:5bd5) + ld a, [$d11b] + cp $1 + jr nz, .asm_39be6 + ld hl, wEnemyPartyCount ; $d89c + ld de, W_ENEMYMON1OT ; $d9ac OT names of other player + ld a, $6 + jr .asm_39c18 +.asm_39be6 + cp $4 + jr nz, .calcAttackStat4 + ld hl, W_NUMINPARTY ; $d163 + ld de, W_PARTYMON1OT ; $d273 + ld a, $5 + jr .asm_39c18 +.calcAttackStat4 + cp $5 + jr nz, .asm_39c02 + ld hl, $cf7b + ld de, MonsterNames ; $421e + ld a, $1 + jr .asm_39c18 +.asm_39c02 + cp $2 + jr nz, .asm_39c10 + ld hl, wNumBagItems ; $d31d + ld de, ItemNames ; $472b + ld a, $4 + jr .asm_39c18 +.asm_39c10 + ld hl, $cf7b + ld de, ItemNames ; $472b + ld a, ITEM_NAME +.asm_39c18 + ld [W_LISTTYPE], a + ld a, l + ld [$cf8b], a + ld a, h + ld [$cf8c], a + ld a, e + ld [$cf8d], a + ld a, d + ld [$cf8e], a + ld bc, ItemPrices ; $4608 + ld a, c + ld [$cf8f], a + ld a, b + ld [$cf90], a + ret -PewterHouse1Text2: ; 1d60c (7:560c) - TX_FAR _PewterHouse1Text2 - db "@" +Func_39c37: ; 39c37 (e:5c37) + ld hl, W_PARTYMON1 ; $d164 + ld a, [$cc49] + and a + jr z, .asm_39c4b + dec a + jr z, .asm_39c48 + ld hl, $da81 + jr .asm_39c4b +.asm_39c48 + ld hl, $d89d +.asm_39c4b + ld d, $0 + add hl, de + ld a, [hl] + ld [$cf91], a + ret -PewterHouse1Text3: ; 1d611 (7:5611) - TX_FAR _PewterHouse1Text3 - db "@" +ReadTrainer: ; 39c53 (e:5c53) -INCLUDE "data/mapObjects/pewterhouse1.asm" +; don't change any moves in a link battle + ld a,[W_ISLINKBATTLE] + and a + ret nz -INCLUDE "data/mapHeaders/pewterhouse2.asm" +; set [wEnemyPartyCount] to 0, [$D89D] to FF +; XXX first is total enemy pokemon? +; XXX second is species of first pokemon? + ld hl,wEnemyPartyCount + xor a + ld [hli],a + dec a + ld [hl],a -PewterHouse2Script: ; 1d648 (7:5648) - jp EnableAutoTextBoxDrawing +; get the pointer to trainer data for this class + ld a,[W_CUROPPONENT] + sub $C9 ; convert value from pokemon to trainer + add a,a + ld hl,TrainerDataPointers + ld c,a + ld b,0 + add hl,bc ; hl points to trainer class + ld a,[hli] + ld h,[hl] + ld l,a + ld a,[W_TRAINERNO] + ld b,a +; At this point b contains the trainer number, +; and hl points to the trainer class. +; Our next task is to iterate through the trainers, +; decrementing b each time, until we get to the right one. +.outer + dec b + jr z,.IterateTrainer +.inner + ld a,[hli] + and a + jr nz,.inner + jr .outer -PewterHouse2TextPointers: ; 1d64b (7:564b) - dw PewterHouse2Text1 - dw PewterHouse2Text2 +; if the first byte of trainer data is FF, +; - each pokemon has a specific level +; (as opposed to the whole team being of the same level) +; - if [W_LONEATTACKNO] != 0, one pokemon on the team has a special move +; else the first byte is the level of every pokemon on the team +.IterateTrainer + ld a,[hli] + cp $FF ; is the trainer special? + jr z,.SpecialTrainer ; if so, check for special moves + ld [W_CURENEMYLVL],a +.LoopTrainerData + ld a,[hli] + and a ; have we reached the end of the trainer data? + jr z,.FinishUp + ld [$CF91],a ; write species somewhere (XXX why?) + ld a,1 + ld [$CC49],a + push hl + call AddPokemonToParty + pop hl + jr .LoopTrainerData +.SpecialTrainer +; if this code is being run: +; - each pokemon has a specific level +; (as opposed to the whole team being of the same level) +; - if [W_LONEATTACKNO] != 0, one pokemon on the team has a special move + ld a,[hli] + and a ; have we reached the end of the trainer data? + jr z,.AddLoneMove + ld [W_CURENEMYLVL],a + ld a,[hli] + ld [$CF91],a + ld a,1 + ld [$CC49],a + push hl + call AddPokemonToParty + pop hl + jr .SpecialTrainer +.AddLoneMove +; does the trainer have a single monster with a different move + ld a,[W_LONEATTACKNO] ; Brock is 01, Misty is 02, Erika is 04, etc + and a + jr z,.AddTeamMove + dec a + add a,a + ld c,a + ld b,0 + ld hl,LoneMoves + add hl,bc + ld a,[hli] + ld d,[hl] + ld hl,W_ENEMYMON1MOVE3 + ld bc,W_ENEMYMON2MOVE3 - W_ENEMYMON1MOVE3 + call AddNTimes + ld [hl],d + jr .FinishUp +.AddTeamMove +; check if our trainer's team has special moves -PewterHouse2Text1: ; 1d64f (7:564f) - TX_FAR _PewterHouse2Text1 - db "@" +; get trainer class number + ld a,[W_CUROPPONENT] + sub $C8 + ld b,a + ld hl,TeamMoves -PewterHouse2Text2: ; 1d654 (7:5654) - TX_FAR _PewterHouse2Text2 - db "@" +; iterate through entries in TeamMoves, checking each for our trainer class +.IterateTeamMoves + ld a,[hli] + cp b + jr z,.GiveTeamMoves ; is there a match? + inc hl ; if not, go to the next entry + inc a + jr nz,.IterateTeamMoves -INCLUDE "data/mapObjects/pewterhouse2.asm" + ; no matches found. is this trainer champion rival? + ld a,b + cp SONY3 + jr z,.ChampionRival + jr .FinishUp ; nope +.GiveTeamMoves + ld a,[hl] + ld [$D95E],a + jr .FinishUp +.ChampionRival ; give moves to his team -INCLUDE "data/mapHeaders/ceruleanhousetrashed.asm" +; pidgeot + ld a,SKY_ATTACK + ld [W_ENEMYMON1MOVE3],a -CeruleanHouseTrashedScript: ; 1d685 (7:5685) - call EnableAutoTextBoxDrawing +; starter + ld a,[W_RIVALSTARTER] + cp BULBASAUR + ld b,MEGA_DRAIN + jr z,.GiveStarterMove + cp CHARMANDER + ld b,FIRE_BLAST + jr z,.GiveStarterMove + ld b,BLIZZARD ; must be squirtle +.GiveStarterMove + ld a,b + ld [W_ENEMYMON6MOVE3],a +.FinishUp ; XXX this needs documenting + xor a ; clear D079-D07B + ld de,$D079 + ld [de],a + inc de + ld [de],a + inc de + ld [de],a + ld a,[W_CURENEMYLVL] + ld b,a +.LastLoop + ld hl,$D047 + ld c,2 + push bc + ld a,$B + call Predef + pop bc + inc de + inc de + dec b + jr nz,.LastLoop ret -CeruleanHouseTrashedTextPointers: ; 1d689 (7:5689) - dw CeruleanHouseTrashedText1 - dw CeruleanHouseTrashedText2 - dw CeruleanHouseTrashedText3 +INCLUDE "data/trainer_moves.asm" -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 +INCLUDE "data/trainer_parties.asm" -UnnamedText_1d6ab: ; 1d6ab (7:56ab) - TX_FAR _UnnamedText_1d6ab - db "@" +TrainerAI: ; 3a52e (e:652e) +;XXX called at 34964, 3c342, 3c398 + and a + ld a,[W_ISINBATTLE] + dec a + ret z ; if not a trainer, we're done here + ld a,[W_ISLINKBATTLE] + cp 4 + ret z + ld a,[W_TRAINERCLASS] ; what trainer class is this? + dec a + ld c,a + ld b,0 + ld hl,TrainerAIPointers + add hl,bc + add hl,bc + add hl,bc + ld a,[wAICount] + and a + ret z ; if no AI uses left, we're done here + inc hl + inc a + jr nz,.getpointer + dec hl + ld a,[hli] + ld [wAICount],a +.getpointer + ld a,[hli] + ld h,[hl] + ld l,a + call GenRandom + jp [hl] -UnnamedText_1d6b0: ; 1d6b0 (7:56b0) - TX_FAR _UnnamedText_1d6b0 - db "@" +TrainerAIPointers: ; 3a55c (e:655c) +; one entry per trainer class +; first byte, number of times (per Pokémon) it can occur +; next two bytes, pointer to AI subroutine for trainer class + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,JugglerAI ; juggler_x + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,GenericAI + dbw 3,JugglerAI ; juggler + dbw 3,GenericAI + dbw 3,GenericAI + dbw 2,BlackbeltAI ; blackbelt + dbw 3,GenericAI + dbw 3,GenericAI + dbw 1,GenericAI ; chief + dbw 3,GenericAI + dbw 1,GiovanniAI ; giovanni + dbw 3,GenericAI + dbw 2,CooltrainerMAI ; cooltrainerm + dbw 1,CooltrainerFAI ; cooltrainerf + dbw 2,BrunoAI ; bruno + dbw 5,BrockAI ; brock + dbw 1,MistyAI ; misty + dbw 1,LtSurgeAI ; surge + dbw 1,ErikaAI ; erika + dbw 2,KogaAI ; koga + dbw 2,BlaineAI ; blaine + dbw 1,SabrinaAI ; sabrina + dbw 3,GenericAI + dbw 1,Sony2AI ; sony2 + dbw 1,Sony3AI ; sony3 + dbw 2,LoreleiAI ; lorelei + dbw 3,GenericAI + dbw 2,AgathaAI ; agatha + dbw 1,LanceAI ; lance -CeruleanHouseTrashedText2: ; 1d6b5 (7:56b5) - TX_FAR _CeruleanHouseTrashedText2 - db "@" +JugglerAI: ; 3a5e9 (e:65e9) + cp $40 + ret nc + jp Func_3a72a -CeruleanHouseTrashedText3: ; 1d6ba (7:56ba) - TX_FAR _CeruleanHouseTrashedText3 - db "@" +BlackbeltAI: ; 3a5ef (e:65ef) + cp $20 + ret nc + jp AIUseXAttack -INCLUDE "data/mapObjects/ceruleanhousetrashed.asm" +GiovanniAI: ; 3a5f5 (e:65f5) + cp $40 + ret nc + jp AIUseGuardSpec -INCLUDE "data/mapHeaders/ceruleanhouse1.asm" +CooltrainerMAI: ; 3a5fb (e:65fb) + cp $40 + ret nc + jp AIUseXAttack -CeruleanHouse1Script: ; 1d6f6 (7:56f6) - jp EnableAutoTextBoxDrawing +CooltrainerFAI: ; 3a601 (e:6601) + cp $40 + ld a,$A + call Func_3a7cf + jp c,AIUseHyperPotion + ld a,5 + call Func_3a7cf + ret nc + jp Func_3a72a -CeruleanHouse1TextPointers: ; 1d6f9 (7:56f9) - dw CeruleanHouse1Text1 - dw CeruleanHouse1Text2 +BrockAI: ; 3a614 (e:6614) +; if his active monster has a status condition, use a full heal + ld a,[W_ENEMYMONSTATUS] + and a + ret z + jp AIUseFullHeal -CeruleanHouse1Text1: ; 1d6fd (7:56fd) - TX_FAR _CeruleanHouse1Text1 - db "@" +MistyAI: ; 3a61c (e:661c) + cp $40 + ret nc + jp AIUseXDefend -CeruleanHouse1Text2: ; 1d702 (7:5702) - db $08 ; asm - ld a, $6 - ld [wWhichTrade], a - ld a, $54 - call Predef - jp TextScriptEnd +LtSurgeAI: ; 3a622 (e:6622) + cp $40 + ret nc + jp AIUseXSpeed -INCLUDE "data/mapObjects/ceruleanhouse1.asm" +ErikaAI: ; 3a628 (e:6628) + cp $80 + ret nc + ld a,$A + call Func_3a7cf + ret nc + jp AIUseSuperPotion -INCLUDE "data/mapHeaders/bikeshop.asm" +KogaAI: ; 3a634 (e:6634) + cp $40 + ret nc + jp AIUseXAttack -BikeShopScript: ; 1d73c (7:573c) - jp EnableAutoTextBoxDrawing +BlaineAI: ; 3a63a (e:663a) + cp $40 + ret nc + jp AIUseSuperPotion -BikeShopTextPointers: ; 1d73f (7:573f) - dw BikeShopText1 - dw BikeShopText2 - dw BikeShopText3 +SabrinaAI: ; 3a640 (e:6640) + cp $40 + ret nc + ld a,$A + call Func_3a7cf + ret nc + jp AIUseHyperPotion -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 +Sony2AI: ; 3a64c (e:664c) + cp $20 + ret nc + ld a,5 + call Func_3a7cf + ret nc + jp AIUsePotion -BikeShopMenuText: ; 1d7f8 (7:57f8) - db "BICYCLE" - next "CANCEL@" +Sony3AI: ; 3a658 (e:6658) + cp $20 + ret nc + ld a,5 + call Func_3a7cf + ret nc + jp AIUseFullRestore -BikeShopMenuPrice: ; 1d807 (7:5807) - db "¥1000000@" +LoreleiAI: ; 3a664 (e:6664) + cp $80 + ret nc + ld a,5 + call Func_3a7cf + ret nc + jp AIUseSuperPotion -UnnamedText_1d810: ; 1d810 (7:5810) - TX_FAR _UnnamedText_1d810 - db "@" +BrunoAI: ; 3a670 (e:6670) + cp $40 + ret nc + jp AIUseXDefend -UnnamedText_1d815: ; 1d815 (7:5815) - TX_FAR _UnnamedText_1d815 - db "@" +AgathaAI: ; 3a676 (e:6676) + cp $14 + jp c,Func_3a72a + cp $80 + ret nc + ld a,4 + call Func_3a7cf + ret nc + jp AIUseSuperPotion -UnnamedText_1d81a: ; 1d81a (7:581a) - TX_FAR _UnnamedText_1d81a - db "@" +LanceAI: ; 3a687 (e:6687) + cp $80 + ret nc + ld a,5 + call Func_3a7cf + ret nc + jp AIUseHyperPotion -UnnamedText_1d81f: ; 1d81f (7:581f) - TX_FAR _UnnamedText_1d81f - db "@" +GenericAI: ; 3a693 (e:6693) + and a ; clear carry + ret -UnnamedText_1d824: ; 1d824 (7:5824) - TX_FAR _UnnamedText_1d824 ; 0x98eb2 - db $11, "@" +; end of individual trainer AI routines -UnnamedText_1d82a: ; 1d82a (7:582a) - TX_FAR _UnnamedText_1d82a - db "@" +DecrementAICount: ; 3a695 (e:6695) + ld hl,wAICount + dec [hl] + scf + ret -UnnamedText_1d82f: ; 1d82f (7:582f) - TX_FAR _UnnamedText_1d82f - db "@" +Func_3a69b: ; 3a69b (e:669b) + ld a,(SFX_08_3e - SFX_Headers_08) / 3 + jp PlaySoundWaitForCurrent -UnnamedText_1d834: ; 1d834 (7:5834) - TX_FAR _UnnamedText_1d834 - db "@" +AIUseFullRestore: ; 3a6a0 (e:66a0) + call AICureStatus + ld a,FULL_RESTORE + ld [$CF05],a + ld de,wHPBarOldHP + ld hl,$CFE7 + ld a,[hld] + ld [de],a + inc de + ld a,[hl] + ld [de],a + inc de + ld hl,$CFF5 + ld a,[hld] + ld [de],a + inc de + ld [wHPBarMaxHP],a + ld [$CFE7],a + ld a,[hl] + ld [de],a + ld [wHPBarMaxHP+1],a + ld [W_ENEMYMONCURHP],a + jr Func_3a718 -BikeShopText2: ; 1d839 (7:5839) - db $08 ; asm - ld hl, UnnamedText_1d843 - call PrintText - jp TextScriptEnd +AIUsePotion: ; 3a6ca (e:66ca) +; enemy trainer heals his monster with a potion + ld a,POTION + ld b,20 + jr AIRecoverHP -UnnamedText_1d843: ; 1d843 (7:5843) - TX_FAR _UnnamedText_1d843 - db "@" +AIUseSuperPotion: ; 3a6d0 (e:66d0) +; enemy trainer heals his monster with a super potion + ld a,SUPER_POTION + ld b,50 + jr AIRecoverHP -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 +AIUseHyperPotion: ; 3a6d6 (e:66d6) +; enemy trainer heals his monster with a hyper potion + ld a,HYPER_POTION + ld b,200 + ; fallthrough -UnnamedText_1d85c: ; 1d85c (7:585c) - TX_FAR _UnnamedText_1d85c - db "@" +AIRecoverHP: ; 3a6da (e:66da) +; heal b HP and print "trainer used $(a) on pokemon!" + ld [$CF05],a + ld hl,$CFE7 + ld a,[hl] + ld [wHPBarOldHP],a + add b + ld [hld],a + ld [wHPBarNewHP],a + ld a,[hl] + ld [wHPBarOldHP+1],a + ld [wHPBarNewHP+1],a + jr nc,.next + inc a + ld [hl],a + ld [wHPBarNewHP+1],a +.next + inc hl + ld a,[hld] + ld b,a + ld de,$CFF5 + ld a,[de] + dec de + ld [wHPBarMaxHP],a + sub b + ld a,[hli] + ld b,a + ld a,[de] + ld [wHPBarMaxHP+1],a + sbc b + jr nc,Func_3a718 + inc de + ld a,[de] + dec de + ld [hld],a + ld [wHPBarNewHP],a + ld a,[de] + ld [hl],a + ld [wHPBarNewHP+1],a + ; fallthrough -UnnamedText_1d861: ; 1d861 (7:5861) - TX_FAR _UnnamedText_1d861 - db "@" +Func_3a718: ; 3a718 (e:6718) + call AIPrintItemUse_ + FuncCoord 2, 2 ; $c3ca + ld hl,Coord + xor a + ld [$CF94],a + ld a,$48 + call Predef + jp DecrementAICount -INCLUDE "data/mapObjects/bikeshop.asm" +Func_3a72a: ; 3a72a (e:672a) + ld a,[wEnemyPartyCount] + ld c,a + ld hl,W_ENEMYMON1HP -BikeShopBlocks: ; 1d88c (7:588c) - INCBIN "maps/bikeshop.blk" + ld d,0 ; keep count of unfainted monsters -INCLUDE "data/mapHeaders/lavenderhouse1.asm" + ; count how many monsters haven't fainted yet +.loop + ld a,[hli] + ld b,a + ld a,[hld] + or b + jr z,.Fainted ; has monster fainted? + inc d +.Fainted + push bc + ld bc,$2C + add hl,bc + pop bc + dec c + jr nz,.loop -LavenderHouse1Script: ; 1d8a8 (7:58a8) - call EnableAutoTextBoxDrawing + ld a,d ; how many available monsters are there? + cp 2 ; don't bother if only 1 or 2 + jp nc,Func_3a74b + and a ret -LavenderHouse1TextPointers: ; 1d8ac (7:58ac) - dw LavenderHouse1Text1 - dw LavenderHouse1Text2 - dw LavenderHouse1Text3 - dw LavenderHouse1Text4 - dw LavenderHouse1Text5 - dw LavenderHouse1Text6 - -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 +Func_3a74b: ; 3a74b (e:674b) -UnnamedText_1d8d1: ; 1d8d1 (7:58d1) - TX_FAR _UnnamedText_1d8d1 - db "@" +; prepare to withdraw the active monster: copy hp, number, and status to roster -UnnamedText_1d8d6: ; 1d8d6 (7:58d6) - TX_FAR _UnnamedText_1d8d6 - db "@" + ld a,[W_ENEMYMONNUMBER] + ld hl,W_ENEMYMON1HP + ld bc,$2C + call AddNTimes + ld d,h + ld e,l + ld hl,W_ENEMYMONCURHP + ld bc,4 + call CopyData -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 + ld hl, AIBattleWithdrawText call PrintText -.asm_3d208 ; 0x1d8f1 - jp TextScriptEnd -UnnamedText_1d8f4: ; 1d8f4 (7:58f4) - TX_FAR _UnnamedText_1d8f4 - db "@" + ld a,1 + ld [$D11D],a + ld hl,EnemySendOut + ld b,BANK(EnemySendOut) + call Bankswitch + xor a + ld [$D11D],a -UnnamedText_1d8f9: ; 1d8f9 (7:58f9) - TX_FAR _UnnamedText_1d8f9 - db "@" + ld a,[W_ISLINKBATTLE] + cp 4 + ret z + scf + ret -LavenderHouse1Text3: ; 1d8fe (7:58fe) - TX_FAR _LavenderHouse1Text3 - db $8 - ld a, PSYDUCK - call PlayCry - jp TextScriptEnd +AIBattleWithdrawText: ; 3a781 (e:6781) + TX_FAR _AIBattleWithdrawText + db "@" -LavenderHouse1Text4: ; 1d90b (7:590b) - TX_FAR _LavenderHouse1Text4 - db $8 - ld a, NIDORINO - call PlayCry - jp TextScriptEnd +AIUseFullHeal: ; 3a786 (e:6786) + call Func_3a69b + call AICureStatus + ld a,FULL_HEAL + jp AIPrintItemUse -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 +AICureStatus: ; 3a791 (e:6791) +; cures the status of enemy's active pokemon + ld a,[W_ENEMYMONNUMBER] + ld hl,$D8A8 + ld bc,$2C + call AddNTimes + xor a + ld [hl],a ; clear status in enemy team roster + ld [W_ENEMYMONSTATUS],a ; clear status of active enemy + ld hl,$D069 + res 0,[hl] + ret -UnnamedText_1d94c: ; 1d94c (7:594c) - TX_FAR _UnnamedText_1d94c - db "@" +AIUseXAccuracy: ; 0x3a7a8 unused + call Func_3a69b + ld hl,$D068 + set 0,[hl] + ld a,X_ACCURACY + jp AIPrintItemUse -ReceivedFluteText: ; 1d951 (7:5951) - TX_FAR _ReceivedFluteText - db $11 - TX_FAR _FluteExplanationText - db "@" +AIUseGuardSpec: ; 3a7b5 (e:67b5) + call Func_3a69b + ld hl,$D068 + set 1,[hl] + ld a,GUARD_SPEC_ + jp AIPrintItemUse -FluteNoRoomText: ; 1d95b (7:595b) - TX_FAR _FluteNoRoomText - db "@" +AIUseDireHit: ; 0x3a7c2 unused + call Func_3a69b + ld hl,$D068 + set 2,[hl] + ld a,DIRE_HIT + jp AIPrintItemUse -MrFujiAfterFluteText: ; 1d960 (7:5960) - TX_FAR _MrFujiAfterFluteText - db "@" +Func_3a7cf: ; 3a7cf (e:67cf) + ld [H_DIVISOR],a + ld hl,$CFF4 + ld a,[hli] + ld [H_DIVIDEND],a + ld a,[hl] + ld [H_DIVIDEND + 1],a + ld b,2 + call Divide + ld a,[H_QUOTIENT + 3] + ld c,a + ld a,[H_QUOTIENT + 2] + ld b,a + ld hl,$CFE7 + ld a,[hld] + ld e,a + ld a,[hl] + ld d,a + ld a,d + sub b + ret nz + ld a,e + sub c + ret -LavenderHouse1Text6: ; 1d965 (7:5965) - TX_FAR _LavenderHouse1Text6 - db "@" +AIUseXAttack: ; 3a7f2 (e:67f2) + ld b,$A + ld a,X_ATTACK + jr AIIncreaseStat -INCLUDE "data/mapObjects/lavenderhouse1.asm" +AIUseXDefend: ; 3a7f8 (e:67f8) + ld b,$B + ld a,X_DEFEND + jr AIIncreaseStat -INCLUDE "data/mapHeaders/lavenderhouse2.asm" +AIUseXSpeed: ; 3a7fe (e:67fe) + ld b,$C + ld a,X_SPEED + jr AIIncreaseStat -LavenderHouse2Script: ; 1d9ae (7:59ae) - call EnableAutoTextBoxDrawing - ret +AIUseXSpecial: ; 3a804 (e:6804) + ld b,$D + ld a,X_SPECIAL + ; fallthrough -LavenderHouse2TextPointers: ; 1d9b2 (7:59b2) - dw LavenderHouse2Text1 - dw LavenderHouse2Text2 +AIIncreaseStat: ; 3a808 (e:6808) + ld [$CF05],a + push bc + call AIPrintItemUse_ + pop bc + ld hl,$CFCD + ld a,[hld] + push af + ld a,[hl] + push af + push hl + ld a,$AF + ld [hli],a + ld [hl],b + ld hl, Func_3f428 + ld b, BANK(Func_3f428) + call Bankswitch + pop hl + pop af + ld [hli],a + pop af + ld [hl],a + jp DecrementAICount -LavenderHouse2Text1: ; 1d9b6 (7:59b6) - TX_FAR _LavenderHouse2Text1 - db $8 - ld a, CUBONE - call PlayCry - jp TextScriptEnd +AIPrintItemUse: ; 3a82c (e:682c) + ld [$CF05],a + call AIPrintItemUse_ + jp DecrementAICount -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 +AIPrintItemUse_: ; 3a835 (e:6835) +; print "x used [$CF05] on z!" + ld a,[$CF05] + ld [$D11E],a + call GetItemName + ld hl, AIBattleUseItemText + jp PrintText -UnnamedText_1d9dc: ; 1d9dc (7:59dc) - TX_FAR _UnnamedText_1d9dc +AIBattleUseItemText: ; 3a844 (e:6844) + TX_FAR _AIBattleUseItemText db "@" -UnnamedText_1d9e1: ; 1d9e1 (7:59e1) - TX_FAR _UnnamedText_1d9e1 - db "@" +DrawAllPokeballs: ; 3a849 (e:6849) + call LoadPartyPokeballGfx + call SetupOwnPartyPokeballs + ld a, [W_ISINBATTLE] ; $d057 + dec a + ret z ; return if wild pokémon + jp SetupEnemyPartyPokeballs -INCLUDE "data/mapObjects/lavenderhouse2.asm" +DrawEnemyPokeballs: ; 0x3a857 + call LoadPartyPokeballGfx + jp SetupEnemyPartyPokeballs -INCLUDE "data/mapHeaders/namerater.asm" +LoadPartyPokeballGfx: ; 3a85d (e:685d) + ld de, PokeballTileGraphics ; $697e + ld hl, $8310 + ld bc, (BANK(PokeballTileGraphics) << 8) + $04 + jp CopyVideoData -NameRaterScript: ; 1da12 (7:5a12) - jp EnableAutoTextBoxDrawing +SetupOwnPartyPokeballs: ; 3a869 (e:6869) + call Func_3a902 + ld hl, W_PARTYMON1DATA + ld de, W_NUMINPARTY ; $d163 + call SetupPokeballs + ld a, $60 + ld hl, W_BASECOORDX ; $d081 + ld [hli], a + ld [hl], a + ld a, $8 + ld [$cd3e], a + ld hl, wOAMBuffer + jp Func_3a8e1 -Func_1da15: ; 1da15 (7:5a15) - call PrintText - call YesNoChoice - ld a, [$cc26] - and a - ret +SetupEnemyPartyPokeballs: ; 3a887 (e:6887) + call Func_3a919 + ld hl, wEnemyMons + ld de, wEnemyPartyCount ; $d89c + call SetupPokeballs + ld hl, W_BASECOORDX ; $d081 + ld a, $48 + ld [hli], a + ld [hl], $20 + ld a, $f8 + ld [$cd3e], a + ld hl, $c318 + jp Func_3a8e1 -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 +SetupPokeballs: ; 0x3a8a6 ld a, [de] - cp [hl] - jr nz, .asm_1da52 ; 0x1da49 $7 - inc hl + push af + ld de, wBuffer + ld c, $6 ; max num of partymons + ld a, $34 ; empty pokeball +.emptyloop + ld [de], a inc de dec c - jr nz, .asm_1da47 ; 0x1da4e $f7 - and a - ret -.asm_1da52 - scf - ret - -NameRaterTextPointers: ; 1da54 (7:5a54) - dw NameRaterText1 - -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 + jr nz, .emptyloop ; 0x3a8b2 $fb + pop af + ld de, wBuffer +.monloop push af - call GBPalWhiteOutWithDelay3 - call Func_3dbe - call LoadGBPal + call PickPokeball + inc de 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 "@" + dec a + jr nz, .monloop + ret -UnnamedText_1dab8: ; 1dab8 (7:5ab8) - TX_FAR _UnnamedText_1dab8 - db "@" - -UnnamedText_1dabd: ; 1dabd (7:5abd) - TX_FAR _UnnamedText_1dabd - db "@" - -UnnamedText_1dac2: ; 1dac2 (7:5ac2) - TX_FAR _UnnamedText_1dac2 - db "@" +PickPokeball: ; 3a8c2 (e:68c2) + inc hl + ld a, [hli] + and a + jr nz, .alive + ld a, [hl] + and a + ld b, $33 ; crossed ball (fainted) + jr z, .done_fainted +.alive + inc hl + inc hl + ld a, [hl] ; status + and a + ld b, $32 ; black ball (status) + jr nz, .done + dec b ; regular ball + jr .done +.done_fainted + inc hl + inc hl +.done + ld a, b + ld [de], a + ld bc, $0028 ; rest of mon struct + add hl, bc + ret -UnnamedText_1dac7: ; 1dac7 (7:5ac7) - TX_FAR _UnnamedText_1dac7 - db "@" +Func_3a8e1: ; 3a8e1 (e:68e1) + ld de, $cee9 + ld c, $6 +.asm_3a8e6 + ld a, [W_BASECOORDY] ; $d082 + ld [hli], a + ld a, [W_BASECOORDX] ; $d081 + ld [hli], a + ld a, [de] + ld [hli], a + xor a + ld [hli], a + ld a, [W_BASECOORDX] ; $d081 + ld b, a + ld a, [$cd3e] + add b + ld [W_BASECOORDX], a ; $d081 + inc de + dec c + jr nz, .asm_3a8e6 + ret -UnnamedText_1dacc: ; 1dacc (7:5acc) - TX_FAR _UnnamedText_1dacc - db "@" +Func_3a902: ; 3a902 (e:6902) + ld hl, PlayerBattleHUDGraphicsTiles ; $6916 + ld de, $cd3f + ld bc, $3 + call CopyData + FuncCoord 18, 10 ; $c47a + ld hl, Coord + ld de, rIE ; $ffff + jr Func_3a930 -UnnamedText_1dad1: ; 1dad1 (7:5ad1) - TX_FAR _UnnamedText_1dad1 - db "@" +PlayerBattleHUDGraphicsTiles: ; 3a916 (e:6916) +; The tile numbers for specific parts of the battle display for the player's pokemon + db $73 ; unused ($73 is hardcoded into the routine that uses these bytes) + db $77 ; lower-right corner tile of the HUD + db $6F ; lower-left triangle tile of the HUD -INCLUDE "data/mapObjects/namerater.asm" +Func_3a919: ; 3a919 (e:6919) + ld hl, EnemyBattleHUDGraphicsTiles ; $692d + ld de, $cd3f + ld bc, $3 + call CopyData + FuncCoord 1, 2 ; $c3c9 + ld hl, Coord + ld de, $1 + jr Func_3a930 -INCLUDE "data/mapHeaders/vermilionhouse1.asm" +EnemyBattleHUDGraphicsTiles: ; 3a92d (e:692d) +; The tile numbers for specific parts of the battle display for the enemy + db $73 ; unused ($73 is hardcoded in the routine that uses these bytes) + db $74 ; lower-left corner tile of the HUD + db $78 ; lower-right triangle tile of the HUD -VermilionHouse1Script: ; 1dafc (7:5afc) - call EnableAutoTextBoxDrawing +Func_3a930: ; 3a930 (e:6930) + ld [hl], $73 + ld bc, $14 + add hl, bc + ld a, [$cd40] + ld [hl], a + ld a, $8 +.asm_3a93c + add hl, de + ld [hl], $76 + dec a + jr nz, .asm_3a93c + add hl, de + ld a, [$cd41] + ld [hl], a ret -VermilionHouse1TextPointers: ; 1db00 (7:5b00) - dw VermilionHouse1Text1 - dw VermilionHouse1Text2 - dw VermilionHouse1Text3 - -VermilionHouse1Text1: ; 1db06 (7:5b06) - TX_FAR _VermilionHouse1Text1 - db "@" - -VermilionHouse1Text2: ; 1db0b (7:5b0b) - TX_FAR _VermilionHouse1Text2 - db $08 ; asm - ld a, PIDGEY - call PlayCry - call WaitForSoundToFinish - jp TextScriptEnd +Func_3a948: ; 3a948 (e:6948) + call LoadPartyPokeballGfx + ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) + ld de, W_NUMINPARTY ; $d163 + call SetupPokeballs + ld hl, W_BASECOORDX ; $d081 + ld a, $50 + ld [hli], a + ld [hl], $40 + ld a, $8 + ld [$cd3e], a + ld hl, wOAMBuffer + call Func_3a8e1 + ld hl, wEnemyMons ; $d8a4 + ld de, wEnemyPartyCount ; $d89c + call SetupPokeballs + ld hl, W_BASECOORDX ; $d081 + ld a, $50 + ld [hli], a + ld [hl], $68 + ld hl, $c318 + jp Func_3a8e1 -VermilionHouse1Text3: ; 1db1b (7:5b1b) - TX_FAR _VermilionHouse1Text3 - db "@" +; four tiles: pokeball, black pokeball (status ailment), crossed out pokeball (faited) and pokeball slot (no mon) +PokeballTileGraphics:: ; 3a97e (e:697e) + INCBIN "gfx/pokeball.2bpp" -INCLUDE "data/mapObjects/vermilionhouse1.asm" +; tiles for gameboy and link cable graphics used for trading sequence animation +TradingAnimationGraphics: ; 3a9be (e:69be) + INCBIN "gfx/game_boy.norepeat.2bpp" + INCBIN "gfx/link_cable.2bpp" -INCLUDE "data/mapHeaders/vermiliondock.asm" +; 4 tiles for actual wire transfer animation (pokeball wandering inside wire) +TradingAnimationGraphics2: ; 3acce (e:6cce) + INCBIN "gfx/trade2.2bpp" -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] +Func_3ad0e: ; 3ad0e (e:6d0e) ld hl, $ccd3 - ld a, $40 - ld [hli], a - ld [hli], a + xor a ld [hl], a - ld a, $3 - ld [$cd38], a + ld a, [wWhichPokemon] ; $cf92 + ld c, a + ld b, $1 + call Func_3b057 + +Func_3ad1c: ; 3ad1c (e:6d1c) + ld a, [$ffd7] + push af xor a - ld [$c206], a - ld [$cd3b], a + ld [$d121], a dec a - ld [wJoypadForbiddenButtonsMask], a - ret -.asm_1db8d - bit 5, [hl] - ret nz - ld a, [$cd38] + ld [wWhichPokemon], a ; $cf92 + push hl + push bc + push de + ld hl, W_NUMINPARTY ; $d163 + push hl +asm_3ad2e: ; 3ad2e (e:6d2e) + ld hl, wWhichPokemon ; $cf92 + inc [hl] + pop hl + inc hl + ld a, [hl] + cp $ff + jp z, Func_3aede + ld [$cee9], a + push hl + ld a, [wWhichPokemon] ; $cf92 + ld c, a + ld hl, $ccd3 + ld b, $2 + call Func_3b057 + ld a, c and a - ret nz - ld [wJoypadForbiddenButtonsMask], a - set 5, [hl] - 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 + jp z, asm_3ad2e + ld a, [$cee9] + dec a + ld b, $0 + ld hl, EvosMovesPointerTable + add a + rl b + ld c, a + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + push hl + ld a, [$cf91] + push af 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 [$cc49], a + call LoadMonData + pop af + ld [$cf91], a + pop hl + +Func_3ad71: ; 3ad71 (e:6d71) + ld a, [hli] + and a + jr z, asm_3ad2e + ld b, a + cp $3 + jr z, .asm_3ad91 + ld a, [W_ISLINKBATTLE] ; $d12b + cp $32 + jr z, asm_3ad2e + ld a, b + cp $2 + jr z, .asm_3ada4 + ld a, [$ccd4] + and a + jr nz, asm_3ad2e + ld a, b + cp $1 + jr z, .asm_3adad +.asm_3ad91 + ld a, [W_ISLINKBATTLE] ; $d12b + cp $32 + jp nz, Func_3aed9 + ld a, [hli] + ld b, a + ld a, [$cfb9] + cp b + jp c, asm_3ad2e + jr .asm_3adb6 +.asm_3ada4 + ld a, [hli] + ld b, a + ld a, [$cf91] + cp b + jp nz, Func_3aed9 +.asm_3adad + ld a, [hli] + ld b, a + ld a, [$cfb9] + cp b + jp c, Func_3aeda +.asm_3adb6 + ld [W_CURENEMYLVL], a ; $d127 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 + ld [$d121], a push hl - ld a, (SFX_02_54 - SFX_Headers_02) / 3 - call PlaySoundWaitForCurrent + ld a, [hl] + ld [$ceea], a + ld a, [wWhichPokemon] ; $cf92 + ld hl, W_PARTYMON1NAME ; $d2b5 + call GetPartyMonName + call CopyStringToCF4B + ld hl, IsEvolvingText + call PrintText + ld c, $32 + call DelayFrames + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ld hl, wTileMap + ld bc, $c14 + call ClearScreenArea + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba 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 + call CleanLCD_OAM + ld hl, Func_7bde9 + ld b, BANK(Func_7bde9) + call Bankswitch + jp c, Func_3af2e + ld hl, EvolvedText + call PrintText + pop hl + ld a, [hl] + ld [$d0b5], a + ld [$cf98], a + ld [$ceea], a + ld a, MONSTER_NAME + ld [W_LISTTYPE], a + ld a, $e + ld [$d0b7], a + call GetName 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 + ld hl, IntoText + call Func_3c59 + ld a, (SFX_02_3b - SFX_Headers_02) / 3 + call PlaySoundWaitForCurrent + call WaitForSoundToFinish + ld c, $28 + call DelayFrames + call ClearScreen + call Func_3aef7 + ld a, [$d11e] + push af + ld a, [$d0b5] + ld [$d11e], a + ld a, $3a + call Predef ; indirect jump to IndexToPokedex (41010 (10:5010)) + ld a, [$d11e] + dec a + ld hl, BulbasaurBaseStats ; $43de + ld bc, $1c + call AddNTimes + ld de, W_MONHEADER + call CopyData + ld a, [$d0b5] + ld [$d0b8], a + pop af + ld [$d11e], a + ld hl, $cfa8 + ld de, $cfba + ld b, $1 + call CalcStats + ld a, [wWhichPokemon] ; $cf92 + ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) + ld bc, $2c + call AddNTimes + ld e, l + ld d, h + push hl + push bc + ld bc, $22 + add hl, bc + ld a, [hli] + ld b, a + ld c, [hl] + ld hl, $cfbb + ld a, [hld] + sub c + ld c, a + ld a, [hl] + sbc b + ld b, a + ld hl, $cf9a + ld a, [hl] + add c + ld [hld], a + ld a, [hl] + adc b + ld [hl], a + dec hl pop bc - dec e - jr nz, .asm_1dbfa ; 0x1dc22 $d6 + call CopyData + ld a, [$d0b5] + ld [$d11e], a xor a - ld [$ff4a], a - ld [$ffb0], a - call VermilionDock_1dc94 - ld a, $90 - ld [$ffb0], a - ld a, $1 - ld [$cfcb], a + ld [$cc49], a + call Func_3af5b pop hl - pop bc - ld [hl], b - dec hl - ld [hl], c - call LoadPlayerSpriteGraphics - ld hl, $d3ae - dec [hl] - ret - -VermilionDock_1dc42: ; 1dc42 (7:5c42) - push bc - push de - ld hl, $c311 - ld a, [$cd3d] - swap a + ld a, $42 + call Predef ; indirect jump to SetPartyMonTypes (5db5e (17:5b5e)) + ld a, [W_ISINBATTLE] ; $d057 + and a + call z, Func_3af52 + ld a, $3a + call Predef ; indirect jump to IndexToPokedex (41010 (10:5010)) + ld a, [$d11e] + dec 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 + ld b, $1 + ld hl, wPokedexOwned ; $d2f7 + push bc + call Func_3b057 pop bc - ret + ld hl, wPokedexSeen ; $d30a + call Func_3b057 + pop de + pop hl + ld a, [$cf98] + ld [hl], a + push hl + ld l, e + ld h, d + jr Func_3aeda -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 +Func_3aed9: ; 3aed9 (e:6ed9) + inc hl -VermilionDockOAMBlock: ; 1dc74 (7:5c74) - db $fc, $10 - db $fd, $10 - db $fe, $10 - db $ff, $10 +Func_3aeda: ; 3aeda (e:6eda) + inc hl + jp Func_3ad71 -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 +Func_3aede: ; 3aede (e:6ede) + pop de + pop bc + pop hl + pop af + ld [$ffd7], a + ld a, [W_ISLINKBATTLE] ; $d12b + cp $32 + ret z + ld a, [W_ISINBATTLE] ; $d057 + and a + ret nz + ld a, [$d121] + and a + call nz, Func_2307 ret -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 - -VermilionDockTextPointers: ; 1dcbf (7:5cbf) - dw VermilionDockText1 - -VermilionDockText1: ; 1dcc1 (7:5cc1) - TX_FAR _VermilionDockText1 - db "@" - -INCLUDE "data/mapObjects/vermiliondock.asm" - -VermilionDockBlocks: ; 1dcda (7:5cda) - INCBIN "maps/vermiliondock.blk" - -INCLUDE "data/mapHeaders/celadonmansion5.asm" - -CeladonMansion5Script: ; 1dd3a (7:5d3a) - jp EnableAutoTextBoxDrawing - -CeladonMansion5TextPointers: ; 1dd3d (7:5d3d) - dw CeladonMansion5Text1 - dw CeladonMansion5Text2 - -CeladonMansion5Text1: ; 1dd41 (7:5d41) - TX_FAR _CeladonMansion5Text1 - db "@" - -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 - -INCLUDE "data/mapObjects/celadonmansion5.asm" - -INCLUDE "data/mapHeaders/fuchsiamart.asm" - -FuchsiaMartScript: ; 1dd88 (7:5d88) - jp EnableAutoTextBoxDrawing - -FuchsiaMartTextPointers: ; 1dd8b (7:5d8b) - dw FuchsiaMartText1 - dw FuchsiaMartText2 - dw FuchsiaMartText3 - -FuchsiaMartText2: ; 1dd91 (7:5d91) - TX_FAR _FuchsiaMartText2 - db "@" - -FuchsiaMartText3: ; 1dd96 (7:5d96) - TX_FAR _FuchsiaMartText3 - db "@" - -INCLUDE "data/mapObjects/fuchsiamart.asm" - -FuchsiaMartBlocks: ; 1ddc1 (7:5dc1) - INCBIN "maps/fuchsiamart.blk" - -INCLUDE "data/mapHeaders/saffronhouse1.asm" - -SaffronHouse1Script: ; 1dddd (7:5ddd) - jp EnableAutoTextBoxDrawing - -SaffronHouse1TextPointers: ; 1dde0 (7:5de0) - dw SaffronHouse1Text1 - dw SaffronHouse1Text2 - dw SaffronHouse1Text3 - dw SaffronHouse1Text4 - -SaffronHouse1Text1: ; 1dde8 (7:5de8) - TX_FAR _SaffronHouse1Text1 - db "@" - -SaffronHouse1Text2: ; 1dded (7:5ded) - TX_FAR _SaffronHouse1Text2 - db $8 - ld a, PIDGEY - call PlayCry - jp TextScriptEnd - -SaffronHouse1Text3: ; 1ddfa (7:5dfa) - TX_FAR _SaffronHouse1Text3 - db "@" - -SaffronHouse1Text4: ; 1ddff (7:5dff) - TX_FAR _SaffronHouse1Text4 - db "@" - -INCLUDE "data/mapObjects/saffronhouse1.asm" - -INCLUDE "data/mapHeaders/saffronhouse2.asm" - -SaffronHouse2Script: ; 1de3c (7:5e3c) - jp EnableAutoTextBoxDrawing - -SaffronHouse2TextPointers: ; 1de3f (7:5e3f) - dw SaffronHouse2Text1 +Func_3aef7: ; 3aef7 (e:6ef7) + ld a, [$d0b5] + push af + ld a, [$d0b8] + ld [$d0b5], a + call GetName + pop af + ld [$d0b5], a + ld hl, $cd6d + ld de, $cf4b +.asm_3af0e + ld a, [de] + inc de + cp [hl] + inc hl + ret nz + cp $50 + jr nz, .asm_3af0e + ld a, [wWhichPokemon] ; $cf92 + ld bc, $b + ld hl, W_PARTYMON1NAME ; $d2b5 + call AddNTimes + push hl + call GetName + ld hl, $cd6d + pop de + jp CopyData -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 +Func_3af2e: ; 3af2e (e:6f2e) + ld hl, StoppedEvolvingText call PrintText -.asm_fe4e1 ; 0x1de72 - jp TextScriptEnd - -TM29PreReceiveText: ; 1de75 (7:5e75) - TX_FAR _TM29PreReceiveText - db "@" - -ReceivedTM29Text: ; 1de7a (7:5e7a) - TX_FAR _ReceivedTM29Text - db $0B, "@" + call ClearScreen + pop hl + call Func_3af52 + jp asm_3ad2e -TM29ExplanationText: ; 1de80 (7:5e80) - TX_FAR _TM29ExplanationText +EvolvedText: ; 3af3e (e:6f3e) + TX_FAR _EvolvedText db "@" -TM29NoRoomText: ; 1de85 (7:5e85) - TX_FAR _TM29NoRoomText +IntoText: ; 3af43 (e:6f43) + TX_FAR _IntoText db "@" -INCLUDE "data/mapObjects/saffronhouse2.asm" - -INCLUDE "data/mapHeaders/diglettscaveroute2.asm" - -DiglettsCaveRoute2Script: ; 1deb0 (7:5eb0) - ld a, $d - ld [$d365], a - jp EnableAutoTextBoxDrawing - -DiglettsCaveRoute2TextPointers: ; 1deb8 (7:5eb8) - dw DiglettsCaveRoute2Text1 - -DiglettsCaveRoute2Text1: ; 1deba (7:5eba) - TX_FAR _DiglettsCaveRoute2Text1 +StoppedEvolvingText: ; 3af48 (e:6f48) + TX_FAR _StoppedEvolvingText db "@" -INCLUDE "data/mapObjects/diglettscaveroute2.asm" - -INCLUDE "data/mapHeaders/route2house.asm" - -Route2HouseScript: ; 1deed (7:5eed) - jp EnableAutoTextBoxDrawing - -Route2HouseTextPointers: ; 1def0 (7:5ef0) - dw Route2HouseText1 - dw Route2HouseText2 - -Route2HouseText1: ; 1def4 (7:5ef4) - TX_FAR _Route2HouseText1 +IsEvolvingText: ; 3af4d (e:6f4d) + TX_FAR _IsEvolvingText db "@" -Route2HouseText2: ; 1def9 (7:5ef9) - db $08 ; asm - ld a, $1 - ld [wWhichTrade], a - ld a, $54 - call Predef - jp TextScriptEnd - -INCLUDE "data/mapObjects/route2house.asm" - -INCLUDE "data/mapHeaders/route5gate.asm" - -Route5GateScript: ; 1df33 (7:5f33) - call EnableAutoTextBoxDrawing - ld a, [W_ROUTE5GATECURSCRIPT] - ld hl, Route5GateScriptPointers - jp CallFunctionInTable - -Route5GateScriptPointers: ; 1df3f (7:5f3f) - dw Route5GateScript0 - dw Route5GateScript1 - -Route5GateScript_1df43: ; 1df43 (7:5f43) - ld a, $40 - ld [$ccd3], a - ld a, $1 - ld [$cd38], a - jp Func_3486 +Func_3af52: ; 3af52 (e:6f52) + ld a, [W_ISLINKBATTLE] ; $d12b + cp $32 + ret z + jp ReloadTilesetTilePatterns -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] +Func_3af5b: ; 3af5b (e:6f5b) + ld hl, EvosMovesPointerTable + ld a, [$d11e] + ld [$cf91], a + dec a + ld bc, $0 + ld hl, EvosMovesPointerTable + add a + rl b + ld c, a + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a +.asm_3af73 + ld a, [hli] 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] + jr nz, .asm_3af73 +.asm_3af77 + ld a, [hli] + and a + jr z, .asm_3afb1 + ld b, a + ld a, [W_CURENEMYLVL] ; $d127 + cp b + ld a, [hli] + jr nz, .asm_3af77 + ld d, a + ld a, [$cc49] + and a + jr nz, .asm_3af96 + ld hl, W_PARTYMON1_MOVE1 ; $d173 + ld a, [wWhichPokemon] ; $cf92 + ld bc, $2c + call AddNTimes +.asm_3af96 + ld b, $4 +.asm_3af98 + ld a, [hli] + cp d + jr z, .asm_3afb1 + dec b + jr nz, .asm_3af98 + ld a, d + ld [$d0e0], a + ld [$d11e], a + call GetMoveName + call CopyStringToCF4B + ld a, $1b + call Predef ; indirect jump to Func_6e43 (6e43 (1:6e43)) +.asm_3afb1 + ld a, [$cf91] + ld [$d11e], a ret -CoordsData_1df8f: ; 1df8f (7:5f8f) - db 3,3 - db 3,4 - db $ff - -Route5GateScript1: ; 1df94 (7:5f94) - ld a, [$cd38] +; writes the moves a mon has at level [W_CURENEMYLVL] to [de] +; move slots are being filled up sequentially and shifted if all slots are full +; [$cee9]: (?) +WriteMonMoves: ; 3afb8 (e:6fb8) + call Load16BitRegisters + push hl + push de + push bc + ld hl, EvosMovesPointerTable + ld b, $0 + ld a, [$cf91] ; cur mon ID + dec a + add a + rl b + ld c, a + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a +.skipEvoEntriesLoop + ld a, [hli] and a - ret nz - call Delay3 - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_ROUTE5GATECURSCRIPT], a + jr nz, .skipEvoEntriesLoop + jr .firstMove +.nextMove + pop de +.nextMove2 + inc hl +.firstMove + ld a, [hli] ; read level of next move in learnset + and a + jp z, .done ; end of list + ld b, a + ld a, [W_CURENEMYLVL] ; $d127 + cp b + jp c, .done ; mon level < move level (assumption: learnset is sorted by level) + ld a, [$cee9] + and a + jr z, .skipMinLevelCheck + ld a, [wWhichTrade] ; $cd3d (min move level) + cp b + jr nc, .nextMove2 ; min level >= move level +.skipMinLevelCheck + push de + ld c, $4 +.moveAlreadyLearnedCheckLoop + ld a, [de] + inc de + cp [hl] + jr z, .nextMove + dec c + jr nz, .moveAlreadyLearnedCheckLoop + pop de + push de + ld c, $4 +.findEmptySlotLoop + ld a, [de] + and a + jr z, .writeMoveToSlot2 + inc de + dec c + jr nz, .findEmptySlotLoop + pop de ; no empty move slots found + push de + push hl + ld h, d + ld l, e + call WriteMonMoves_ShiftMoveData ; shift all moves one up (deleting move 1) + ld a, [$cee9] + and a + jr z, .writeMoveToSlot + push de + ld bc, $12 + add hl, bc + ld d, h + ld e, l + call WriteMonMoves_ShiftMoveData ; shift all move PP data one up + pop de +.writeMoveToSlot + pop hl +.writeMoveToSlot2 + ld a, [hl] + ld [de], a + ld a, [$cee9] + and a + jr z, .nextMove + push hl ; write move PP value + ld a, [hl] + ld hl, $15 + add hl, de + push hl + dec a + ld hl, Moves + ld bc, $6 + call AddNTimes + ld de, $cee9 + ld a, BANK(Moves) + call FarCopyData + ld a, [$ceee] + pop hl + ld [hl], a + pop hl + jr .nextMove +.done + pop bc + pop de + pop hl + ret + +; shifts all move data one up (freeing 4th move slot) +WriteMonMoves_ShiftMoveData: ; 3b04e (e:704e) + ld c, $3 +.asm_3b050 + inc de + ld a, [de] + ld [hli], a + dec c + jr nz, .asm_3b050 ret -Route5GateTextPointers: ; 1dfa4 (7:5fa4) - dw Route5GateText1 - dw Route5GateText2 - dw Route5GateText3 +Func_3b057: ; 3b057 (e:7057) + ld a, $10 + jp Predef ; indirect jump to HandleBitArray (f666 (3:7666)) + +INCLUDE "data/evos_moves.asm" -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] +Func_3b9ec: ; 3b9ec (e:79ec) + ld a, [H_WHOSETURN] ; $fff3 + and a + ld de, W_PLAYERMONCURHP ; $d015 + ld hl, W_PLAYERMONMAXHP ; $d023 + ld a, [W_PLAYERMOVENUM] ; $cfd2 + jr z, .asm_3ba03 + ld de, W_ENEMYMONCURHP ; $cfe6 + ld hl, W_ENEMYMONMAXHP ; $cff4 + ld a, [W_ENEMYMOVENUM] ; $cfcc +.asm_3ba03 + ld b, a + ld a, [de] + cp [hl] + inc de + inc hl + ld a, [de] + sbc [hl] + jp z, Func_3ba97 + ld a, b + cp REST + jr nz, .asm_3ba37 + push hl + push de + push af + ld c, $32 + call DelayFrames + ld hl, W_PLAYERMONSTATUS ; $d018 + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_3ba25 + ld hl, W_ENEMYMONSTATUS ; $cfe9 +.asm_3ba25 + ld a, [hl] and a - jr nz, .asm_768a2 ; 0x1dfbd $11 - ld hl, UnnamedText_1dfe7 + ld [hl], $2 + ld hl, RestText + jr z, .asm_3ba31 + ld hl, RestBecameHealthyText +.asm_3ba31 call PrintText - call Route5GateScript_1df43 + pop af + pop de + pop hl +.asm_3ba37 + ld a, [hld] + ld [wHPBarMaxHP], a + ld c, a + ld a, [hl] + ld [wHPBarMaxHP+1], a + ld b, a + jr z, .asm_3ba47 + srl b + rr c +.asm_3ba47 + ld a, [de] + ld [wHPBarOldHP], a + add c + ld [de], a + ld [wHPBarNewHP], a + dec de + ld a, [de] + ld [wHPBarOldHP+1], a + adc b + ld [de], a + ld [wHPBarNewHP+1], a + inc hl + inc de + ld a, [de] + dec de + sub [hl] + dec hl + ld a, [de] + sbc [hl] + jr c, .asm_3ba6f + ld a, [hli] + ld [de], a + ld [wHPBarNewHP+1], a + inc de + ld a, [hl] + ld [de], a + ld [wHPBarNewHP], a +.asm_3ba6f + ld hl, Func_3fba8 ; $7ba8 + call BankswitchEtoF + ld a, [H_WHOSETURN] ; $fff3 + and a + FuncCoord 10, 9 ; $c45e + ld hl, Coord 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 + jr z, .asm_3ba83 + FuncCoord 2, 2 ; $c3ca + ld hl, Coord + xor a +.asm_3ba83 + ld [wListMenuID], a ; $cf94 + ld a, $48 + call Predef ; indirect jump to UpdateHPBar (fa1d (3:7a1d)) + ld hl, Func_3cd5a ; $4d5a + call BankswitchEtoF + ld hl, RecoverText + jp PrintText -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 "@" +Func_3ba97: ; 3ba97 (e:7a97) + ld c, $32 + call DelayFrames + ld hl, PrintItFailedText + jp BankswitchEtoF -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 +RestText: ; 3baa2 (e:7aa2) + TX_FAR _RestText db "@" -UnnamedText_1dff6: ; 1dff6 (7:5ff6) - TX_FAR _UnnamedText_1dff6 +RestBecameHealthyText: ; 3baa7 (e:7aa7) + TX_FAR _RestBecameHealthyText db "@" -INCLUDE "data/mapObjects/route5gate.asm" - -Route5GateBlocks: ; 1e025 (7:6025) - INCBIN "maps/route5gate.blk" - -INCLUDE "data/mapHeaders/route6gate.asm" - -Route6GateScript: ; 1e03d (7:603d) - call EnableAutoTextBoxDrawing - ld hl, Route6GateScriptPointers - ld a, [W_ROUTE6GATECURSCRIPT] - call CallFunctionInTable - ret - -Route6GateScriptPointers: ; 1e04a (7:604a) - dw Route6GateScript0 - dw Route6GateScript1 +RecoverText: ; 3baac (e:7aac) + TX_FAR _RecoverText + db "@" -Route6GateScript0: ; 1e04e (7:604e) - ld a, [$d728] +Func_3bab1: ; 3bab1 (e:7ab1) + ld hl, W_PLAYERMONID + ld de, $cfe5 + ld bc, W_ENEMYBATTSTATUS3 ; $d069 + ld a, [W_ENEMYBATTSTATUS1] ; $d067 + ld a, [H_WHOSETURN] ; $fff3 + and a + jr nz, .asm_3bad1 + ld hl, $cfe5 + ld de, W_PLAYERMONID + ld bc, W_PLAYERBATTSTATUS3 ; $d064 + ld [wPlayerMoveListIndex], a ; $cc2e + ld a, [W_PLAYERBATTSTATUS1] ; $d062 +.asm_3bad1 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] + jp nz, Func_3bb8c + push hl + push de + push bc + ld hl, W_PLAYERBATTSTATUS2 ; $d063 + ld a, [H_WHOSETURN] ; $fff3 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 - -CoordsData_1e08c: ; 1e08c (7:608c) - db $02,$03 - db $02,$04,$FF - -Route6GateScript1: ; 1e091 (7:6091) - ld a, [$cd38] - and a - ret nz - call Delay3 - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_ROUTE6GATECURSCRIPT], a - ret - -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 - -Route6GateTextPointers: ; 1e0b8 (7:60b8) - dw Route6GateText1 - dw Route6GateText2 - dw Route6GateText3 - -INCLUDE "data/mapObjects/route6gate.asm" - -Route6GateBlocks: ; 1e0e8 (7:60e8) - INCBIN "maps/route6gate.blk" - -INCLUDE "data/mapHeaders/route7gate.asm" - -Route7GateScript: ; 1e100 (7:6100) - call EnableAutoTextBoxDrawing - ld a, [W_ROUTE7GATECURSCRIPT] - ld hl, Route7GateScriptPointers - call CallFunctionInTable - ret - -Route7GateScriptPointers: ; 1e10d (7:610d) - dw Route7GateScript0 - dw Route7GateScript1 - -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 - -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 + jr z, .asm_3bae4 + ld hl, W_ENEMYBATTSTATUS2 ; $d068 +.asm_3bae4 + bit 4, [hl] + push af + ld hl, Func_79747 + ld b, BANK(Func_79747) + call nz, Bankswitch + ld a, [W_OPTIONS] ; $d355 + add a + ld hl, Func_3fba8 ; $7ba8 + ld b, BANK(Func_3fba8) + jr nc, .asm_3baff + ld hl, AnimationTransformMon + ld b, BANK(AnimationTransformMon) +.asm_3baff call Bankswitch - ld a, [$ffdb] + ld hl, Func_79771 + ld b, BANK(Func_79771) + pop af + call nz, Bankswitch + pop bc + ld a, [bc] + set 3, a + ld [bc], a + pop de + pop hl + push hl + ld a, [hl] + ld [de], a + ld bc, $5 + add hl, bc + inc de + inc de + inc de + inc de + inc de + inc bc + inc bc + call CopyData + ld a, [H_WHOSETURN] ; $fff3 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 - -CoordsData_1e167: ; 1e167 (7:6167) - db 3,3 - db 4,3 - db $ff - -Route7GateScript1: ; 1e16c (7:616c) - ld a, [$cd38] + jr z, .asm_3bb32 + ld a, [de] + ld [$cceb], a + inc de + ld a, [de] + ld [$ccec], a + dec de +.asm_3bb32 + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + inc hl + inc hl + inc hl + inc de + inc de + inc de + ld bc, $8 + call CopyData + ld bc, $ffef + add hl, bc + ld b, $4 +.asm_3bb4a + ld a, [hli] and a - ret nz - call Delay3 - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_ROUTE7GATECURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -Route7GateTextPointers: ; 1e17f (7:617f) - dw Route7GateText1 - dw Route7GateText2 - dw Route7GateText3 - -INCLUDE "data/mapObjects/route7gate.asm" - -Route7GateBlocks: ; 1e1af (7:61af) - INCBIN "maps/route7gate.blk" - -INCLUDE "data/mapHeaders/route8gate.asm" - -Route8GateScript: ; 1e1c7 (7:61c7) - call EnableAutoTextBoxDrawing - ld hl, Route8GateScriptPointers - ld a, [W_ROUTE8GATECURSCRIPT] - jp CallFunctionInTable - -Route8GateScriptPointers: ; 1e1d3 (7:61d3) - dw Route8GateScript0 - dw Route8GateScript1 - -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 - -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 + jr z, .asm_3bb57 + ld a, $5 + ld [de], a + inc de + dec b + jr nz, .asm_3bb4a + jr .asm_3bb5d +.asm_3bb57 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 - -CoordsData_1e22c: ; 1e22c (7:622c) - db 3,2 - db 4,2 - db $ff + ld [de], a + inc de + dec b + jr nz, .asm_3bb57 +.asm_3bb5d + pop hl + ld a, [hl] + ld [$d11e], a + call GetMonName + ld hl, $cd26 + ld de, $cd12 + call Func_3bb7d + ld hl, wEnemyMonStatMods ; $cd2e + ld de, wPlayerMonStatMods ; $cd1a + call Func_3bb7d + ld hl, TransformText + jp PrintText -Route8GateScript1: ; 1e231 (7:6231) - ld a, [$cd38] +Func_3bb7d: ; 3bb7d (e:7b7d) + ld a, [H_WHOSETURN] ; $fff3 and a - ret nz - call Delay3 - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_ROUTE8GATECURSCRIPT], a - ret - -Route8GateTextPointers: ; 1e241 (7:6241) - dw Route8GateText1 - dw Route8GateText2 - dw Route8GateText3 - -INCLUDE "data/mapObjects/route8gate.asm" - -Route8GateBlocks: ; 1e271 (7:6271) - INCBIN "maps/route8gate.blk" - -INCLUDE "data/mapHeaders/undergroundpathentranceroute8.asm" - -UndergroundPathEntranceRoute8Script: ; 1e289 (7:6289) - ld a, $13 - ld [$d365], a - jp EnableAutoTextBoxDrawing - -UndergroundPathEntranceRoute8TextPointers: ; 1e291 (7:6291) - dw UndergroundPathEntranceRoute8Text1 - -UndergroundPathEntranceRoute8Text1: ; 1e293 (7:6293) - TX_FAR _UndergroundPathEntRoute8Text1 - db "@" - -INCLUDE "data/mapObjects/undergroundpathentranceroute8.asm" - -INCLUDE "data/mapHeaders/powerplant.asm" - -PowerPlantScript: ; 1e2c6 (7:62c6) - call EnableAutoTextBoxDrawing - ld hl, PowerPlantTrainerHeaders - ld de, PowerPlantScriptPointers - ld a, [W_POWERPLANTCURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_POWERPLANTCURSCRIPT], 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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 - -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 $ff - -asm_234cc: ; 1e368 (7:6368) - call TalkToTrainer - ld a, [W_CURMAPSCRIPT] - ld [W_POWERPLANTCURSCRIPT], a - jp TextScriptEnd - -PowerPlantText1: ; 1e374 (7:6374) - db $8 ; asm - ld hl, PowerPlantTrainerHeader0 ; $62fb - jr asm_234cc ; 0x1e378 $ee - -PowerPlantText2: ; 1e37a (7:637a) - db $8 ; asm - ld hl, PowerPlantTrainerHeader1 ; $6307 - jr asm_234cc ; 0x1e37e $e8 - -PowerPlantText3: ; 1e380 (7:6380) - db $8 ; asm - ld hl, PowerPlantTrainerHeader2 ; $6313 - jr asm_234cc ; 0x1e384 $e2 - -PowerPlantText4: ; 1e386 (7:6386) - db $8 ; asm - ld hl, PowerPlantTrainerHeader3 ; $631f - jr asm_234cc ; 0x1e38a $dc - -PowerPlantText5: ; 1e38c (7:638c) - db $8 ; asm - ld hl, PowerPlantTrainerHeader4 ; $632b - jr asm_234cc ; 0x1e390 $d6 - -PowerPlantText6: ; 1e392 (7:6392) - db $8 ; asm - ld hl, PowerPlantTrainerHeader5 ; $6337 - jr asm_234cc ; 0x1e396 $d0 - -PowerPlantText7: ; 1e398 (7:6398) - db $8 ; asm - ld hl, PowerPlantTrainerHeader6 ; $6343 - jr asm_234cc ; 0x1e39c $ca - -PowerPlantText8: ; 1e39e (7:639e) - db $8 ; asm - ld hl, PowerPlantTrainerHeader7 ; $634f - jr asm_234cc ; 0x1e3a2 $c4 - -PowerPlantText9: ; 1e3a4 (7:63a4) - db $8 ; asm - ld hl, PowerPlantTrainerHeader8 ; $635b - jr asm_234cc ; 0x1e3a8 $be - -VoltorbBattleText: ; 1e3aa (7:63aa) - TX_FAR _VoltorbBattleText - db "@" - -ZapdosBattleText: ; 1e3af (7:63af) - TX_FAR _ZapdosBattleText - db $8 - ld a, ZAPDOS - call PlayCry - call WaitForSoundToFinish - jp TextScriptEnd - -INCLUDE "data/mapObjects/powerplant.asm" - -PowerPlantBlocks: ; 1e446 (7:6446) - INCBIN "maps/powerplant.blk" - -INCLUDE "data/mapHeaders/diglettscaveroute11.asm" - -DiglettsCaveEntranceRoute11Script: ; 1e5ba (7:65ba) - call EnableAutoTextBoxDrawing - ld a, $16 - ld [$d365], a - ret - -DiglettsCaveEntranceRoute11TextPointers: ; 1e5c3 (7:65c3) - dw DiglettsCaveEntranceRoute11Text1 - -DiglettsCaveEntranceRoute11Text1: ; 1e5c5 (7:65c5) - TX_FAR _DiglettsCaveEntRoute11Text1 - db "@" - -INCLUDE "data/mapObjects/diglettscaveroute11.asm" - -INCLUDE "data/mapHeaders/route16house.asm" - -Route16HouseScript: ; 1e5f8 (7:65f8) - jp EnableAutoTextBoxDrawing - -Route16HouseTextPointers: ; 1e5fb (7:65fb) - dw Route16HouseText1 - dw Route16HouseText2 + jr z, .asm_3bb86 + push hl + ld h, d + ld l, e + pop de +.asm_3bb86 + ld bc, $8 + jp CopyData -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 +Func_3bb8c: ; 3bb8c (e:7b8c) + ld hl, PrintItFailedText + jp BankswitchEtoF -Route16HouseText3: ; 1e62b (7:662b) - TX_FAR _Route16HouseText3 +TransformText: ; 3bb92 (e:7b92) + TX_FAR _TransformText db "@" -ReceivedHM02Text: ; 1e630 (7:6630) - TX_FAR _ReceivedHM02Text - db $11, "@" - -HM02ExplanationText: ; 1e636 (7:6636) - TX_FAR _HM02ExplanationText - db "@" +Func_3bb97: ; 3bb97 (e:7b97) + ld hl, W_PLAYERBATTSTATUS3 ; $d064 + ld de, W_PLAYERMOVEEFFECT ; $cfd3 + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_3bba8 + ld hl, W_ENEMYBATTSTATUS3 ; $d069 + ld de, W_ENEMYMOVEEFFECT ; $cfcd +.asm_3bba8 + ld a, [de] + cp $40 + jr nz, .asm_3bbb8 + bit 1, [hl] + jr nz, .asm_3bbcc + set 1, [hl] + ld hl, LightscreenText + jr .asm_3bbc1 +.asm_3bbb8 + bit 2, [hl] + jr nz, .asm_3bbcc + set 2, [hl] + ld hl, AcidArmorText +.asm_3bbc1 + push hl + ld hl, Func_3fba8 ; $7ba8 + call BankswitchEtoF + pop hl + jp PrintText +.asm_3bbcc + ld c, $32 + call DelayFrames + ld hl, PrintItFailedText + jp BankswitchEtoF -HM02NoRoomText: ; 1e63b (7:663b) - TX_FAR _HM02NoRoomText +LightscreenText: ; 3bbd7 (e:7bd7) + TX_FAR _LightscreenText db "@" -Route16HouseText2: ; 1e640 (7:6640) - db $08 ; asm - ld hl, UnnamedText_1e652 - call PrintText - ld a, FEAROW - call PlayCry - call WaitForSoundToFinish - jp TextScriptEnd - -UnnamedText_1e652: ; 1e652 (7:6652) - TX_FAR _UnnamedText_1e652 +AcidArmorText: ; 3bbdc (e:7bdc) + TX_FAR _AcidArmorText db "@" -INCLUDE "data/mapObjects/route16house.asm" +BankswitchEtoF: ; 3bbe1 (e:7be1) + ld b, BANK(BattleCore) + jp Bankswitch -INCLUDE "data/mapHeaders/route22gate.asm" +SECTION "bankF",ROMX,BANK[$F] -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 +BattleCore: -Route22GateScriptPointers: ; 1e69e (7:669e) - dw Route22GateScript0 - dw Route22GateScript1 - dw Route22GateScript2 +; These are move effects (second value from the Moves table in bank $E). +EffectsArray1: ; 3c000 (f:4000) + db $18,$19,$1C,$2E,$2F,$31,$38,$39,$40,$41,$42,$43,$4F,$52,$54,$55,$FF +EffectsArray2: ; 3c011 (f:4011) +; moves that do damage but not through normal calculations +; e.g., Super Fang, Psywave + db $28,$29,$FF +EffectsArray3: ; 3c014 (f:4014) +; non-damaging, stat‐affecting or status‐causing moves? +; e.g., Meditate, Bide, Hypnosis + db $01,$0A,$0B,$0C,$0D,$0E,$0F,$12,$13,$14,$15,$16,$17,$1A,$20,$32,$33,$34,$35,$36,$37,$3A,$3B,$3C,$3D,$3E,$3F,$FF +EffectsArray4: ; 3c030 (f:4030) + db $03,$07,$08,$10,$1D,$1E,$2C,$30,$4D,$51,$FF +EffectsArray5: ; 3c03b (f:403b) + db $03,$07,$08,$10,$11,$1D,$1E,$27,$28,$29,$2B,$2C,$2D,$30 ; fallthru +EffectsArray5B: ; 3c049 (f:4049) +; moves that prevent the player from switching moves? + db $1B,$2A,$FF -Route22GateScript0: ; 1e6a4 (7:66a4) - ld hl, Route22GateScriptCoords - call ArePlayerCoordsInArray - ret nc +Func_3c04c: ; 3c04c (f:404c) + call Func_3ec92 + ld a, $1 + ld [$d125], a + call DisplayTextBoxID + FuncCoord 1, 5 ; $c405 + ld hl, Coord + ld bc, $307 + call ClearScreenArea + call DisableLCD + call LoadFontTilePatterns + call Func_3ee58 + ld hl, $9800 + ld bc, $400 +.asm_3c06f + ld a, $7f + ld [hli], a + dec bc + ld a, b + or c + jr nz, .asm_3c06f + ld hl, wTileMap + ld de, $9800 + ld b, $12 +.asm_3c07f + ld c, $14 +.asm_3c081 + ld a, [hli] + ld [de], a + inc e + dec c + jr nz, .asm_3c081 + ld a, $c + add e + ld e, a + jr nc, .asm_3c08e + inc d +.asm_3c08e + dec b + jr nz, .asm_3c07f + call EnableLCD + ld a, $90 + ld [$ffb0], a + ld [rWY], a ; $ff4a xor a - ld [H_CURRENTPRESSEDBUTTONS], a + ld [$ffd7], a + ld [$ffaf], a + dec a + ld [$cfcb], a + call Delay3 + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ld b, $70 + ld c, $90 + ld a, c + ld [$ffae], a + call DelayFrame + ld a, $e4 + ld [rBGP], a ; $ff47 + ld [rOBP0], a ; $ff48 + ld [rOBP1], a ; $ff49 +.asm_3c0bb + ld h, b + ld l, $40 + call Func_3c110 + inc b + inc b + ld h, $0 + ld l, $60 + call Func_3c110 + call Func_3c0ff + ld a, c + ld [$ffae], a + dec c + dec c + jr nz, .asm_3c0bb ld a, $1 - ld [$ff8c], a - jp DisplayTextID - -Route22GateScriptCoords: ; 1e6b5 (7:66b5) - db 2,4 - db 2,5 - db $ff - -Func_1e6ba: ; 1e6ba (7:66ba) + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ld a, $31 + ld [$ffe1], a + FuncCoord 1, 5 ; $c405 + ld hl, Coord ld a, $1 - ld [$cd38], a - ld a, $80 - ld [$ccd3], a - ld [$c109], a - ld [wJoypadForbiddenButtonsMask], a - jp Func_3486 - -Route22GateScript1: ; 1e6cd (7:66cd) - ld a, [$cd38] - and a - ret nz + call Predef ; indirect jump to Func_3f0c6 (3f0c6 (f:70c6)) xor a - ld [wJoypadForbiddenButtonsMask], a + ld [$ffb0], a + ld [rWY], a ; $ff4a + inc a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba call Delay3 - ld a, $0 - ld [W_ROUTE22GATECURSCRIPT], a -Route22GateScript2: ; 1e6de (7:66de) + ld b, $1 + call GoPAL_SET + call ResetLCD_OAM + ld hl, Func_58d99 + ld b, BANK(Func_58d99) + jp Bankswitch + +Func_3c0ff: ; 3c0ff (f:40ff) + push bc + ld hl, $c301 + ld c, $15 + ld de, $4 +.asm_3c108 + dec [hl] + dec [hl] + add hl, de + dec c + jr nz, .asm_3c108 + pop bc ret -Route22GateTextPointers: ; 1e6df (7:66df) - dw Route22GateText1 - -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 - -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_1e715: ; 1e715 (7:6715) - TX_FAR _UnnamedText_1e715 - db "@" - -UnnamedText_1e71a: ; 1e71a (7:671a) - TX_FAR _UnnamedText_1e71a ; 0x8d03e - db $0B, "@" - -INCLUDE "data/mapObjects/route22gate.asm" - -Route22GateBlocks: ; 1e74a (7:674a) - INCBIN "maps/route22gate.blk" - -INCLUDE "data/mapHeaders/billshouse.asm" - -BillsHouseScript: ; 1e76a (7:676a) - call EnableAutoTextBoxDrawing - ld a, [W_BILLSHOUSECURSCRIPT] - ld hl, BillsHouseScriptPointers - jp CallFunctionInTable - -BillsHouseScriptPointers: ; 1e776 (7:6776) - dw BillsHouseScript0 - dw BillsHouseScript1 - dw BillsHouseScript2 - dw BillsHouseScript3 - dw BillsHouseScript4 - dw BillsHouseScript5 - -BillsHouseScript0: ; 1e782 (7:6782) +Func_3c110: ; 3c110 (f:4110) + ld a, [$ff44] + cp l + jr nz, Func_3c110 + ld a, h + ld [rSCX], a ; $ff43 +.asm_3c118 + ld a, [$ff44] + cp h + jr z, .asm_3c118 ret -BillsHouseScript1: ; 1e783 (7:6783) - ld a, [$c109] +Func_3c11e: ; 3c11e (f:411e) + xor a + ld [W_PLAYERMONSALIVEFLAGS], a + ld [$ccf5], a + ld [$cd6a], a + inc a + ld [$d11d], a + ld hl, W_ENEMYMON1HP ; $d8a5 + ld bc, $2b + ld d, $3 +.asm_3c134 + inc d + ld a, [hli] + or [hl] + jr nz, .asm_3c13c + add hl, bc + jr .asm_3c134 +.asm_3c13c + ld a, d + ld [$cc3e], a + ld a, [W_ISINBATTLE] ; $d057 + dec a + call nz, Func_3c92a + ld c, $28 + call DelayFrames + call SaveScreenTilesToBuffer1 +.asm_3c14f + call AnyPokemonAliveCheck + ld a, d 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 - -MovementData_1e79c: ; 1e79c (7:679c) - db $40,$40,$40,$FF + jp z, HandlePlayerBlackOut + call LoadScreenTilesFromBuffer1 + ld a, [W_BATTLETYPE] ; $d05a + and a + jp z, Func_3c1ad +.asm_3c161 + call InitBattleMenu + ret c + ld a, [$cd6a] + and a + jr z, .asm_3c161 + ld a, [W_NUMSAFARIBALLS] ; $da47 + and a + jr nz, .asm_3c17a + call LoadScreenTilesFromBuffer1 + ld hl, OutOfSafariBallsText + jp PrintText +.asm_3c17a + ld hl, Func_4277 + ld b, BANK(Func_4277) + call Bankswitch + ld a, [$cffb] + add a + ld b, a + jp c, asm_3c202 + ld a, [$cce9] + and a + jr z, .asm_3c194 + srl b + srl b +.asm_3c194 + ld a, [$cce8] + and a + jr z, .asm_3c1a0 + sla b + jr nc, .asm_3c1a0 + ld b, $ff +.asm_3c1a0 + call GenRandom + cp b + jr nc, .asm_3c14f + jr asm_3c202 -MovementData_1e7a0: ; 1e7a0 (7:67a0) - db $C0,$40,$40,$80,$40,$FF +OutOfSafariBallsText: ; 3c1a8 (f:41a8) + TX_FAR _OutOfSafariBallsText + db "@" -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] +Func_3c1ad: ; 3c1ad (f:41ad) xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $3 - ld [W_BILLSHOUSECURSCRIPT], a - ret + ld [wWhichPokemon], a ; $cf92 +.asm_3c1b1 + call Func_3ca97 + jr nz, .asm_3c1bc + ld hl, wWhichPokemon ; $cf92 + inc [hl] + jr .asm_3c1b1 +.asm_3c1bc + ld a, [wWhichPokemon] ; $cf92 + ld [wPlayerMonNumber], a ; $cc2f + inc a + ld hl, W_NUMINPARTY ; $d163 + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + ld [$cf91], a + ld [$cfd9], a + call LoadScreenTilesFromBuffer1 + FuncCoord 1, 5 ; $c405 + ld hl, Coord + ld a, $9 + call Func_3c8df + call SaveScreenTilesToBuffer1 + ld a, [wWhichPokemon] ; $cf92 + ld c, a + ld b, $1 + push bc + ld hl, W_PLAYERMONSALIVEFLAGS + ld a, $10 + call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) + ld hl, $ccf5 + pop bc + ld a, $10 + call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) + call Func_3cba6 + call LoadScreenTilesFromBuffer1 + call Func_3cc91 + jr MainInBattleLoop +asm_3c202: ; 3c202 (f:4202) + call LoadScreenTilesFromBuffer1 + ld a, [W_ISLINKBATTLE] ; $d12b + cp $4 + ld hl, WildRanText + jr nz, .asm_3c216 + xor a + ld [$cf0b], a + ld hl, EnemyRanText +.asm_3c216 + call PrintText + ld a, (SFX_08_44 - SFX_Headers_08) / 3 + call PlaySoundWaitForCurrent + xor a + ld [H_WHOSETURN], a ; $fff3 + ld hl, AnimationSlideEnemyMonOut + ld b, BANK(AnimationSlideEnemyMonOut) + jp Bankswitch -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 +WildRanText: ; 3c229 (f:4229) + TX_FAR _WildRanText + db "@" -MovementData_1e807: ; 1e807 (7:6807) - db $00,$C0,$C0,$C0,$00,$FF +EnemyRanText: ; 3c22e (f:422e) + TX_FAR _EnemyRanText + db "@" -BillsHouseScript4: ; 1e80d (7:680d) - ld a, [$d730] - bit 0, a +MainInBattleLoop: ; 3c233 (f:4233) + call ReadPlayerMonCurHPAndStatus + ld hl, W_PLAYERMONCURHP + ld a, [hli] + or [hl] + jp z, HandlePlayerMonFainted ; test if current player mon is fainted + ld hl, $cfe6 + ld a, [hli] + or [hl] + jp z, Func_3c525 + call SaveScreenTilesToBuffer1 + xor a + ld [$d11d], a + ld a, [$d063] + and $60 + jr nz, .asm_3c2a6 ; 0x3c252 $52 + ld hl, $d067 + res 3, [hl] + ld hl, $d062 + res 3, [hl] + ld a, [hl] + and $12 + jr nz, .asm_3c2a6 ; 0x3c261 $43 + call InitBattleMenu ; show battle menu + ret c + ld a, [$d078] + and a ret nz + ld a, [$d018] + and $27 + jr nz, .asm_3c2a6 ; 0x3c271 $33 + ld a, [$d062] + and $21 + jr nz, .asm_3c2a6 ; 0x3c278 $2c + ld a, [$d067] + bit 5, a + jr z, .asm_3c288 ; 0x3c27f $7 + ld a, $ff + ld [$ccdc], a + jr .asm_3c2a6 ; 0x3c286 $1e +.asm_3c288 + ld a, [$cd6a] + and a + jr nz, .asm_3c2a6 ; 0x3c28c $18 + ld [$ccdb], a + inc a + ld [$d07c], a 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 - -BillsHouseScript5: ; 1e827 (7:6827) - ld a, $4 - ld [$ff8c], a - call DisplayTextID - ld a, $0 - ld [W_BILLSHOUSECURSCRIPT], a - ret - -BillsHouseTextPointers: ; 1e834 (7:6834) - dw BillsHouseText1 - dw BillsHouseText2 - dw BillsHouseText3 - dw BillsHouseText4 - -BillsHouseText4: ; 1e83c (7:683c) - db $fd + ld [$cc35], a + call MoveSelectionMenu + push af + call LoadScreenTilesFromBuffer1 + call Func_3cd5a + pop af + jr nz, MainInBattleLoop +.asm_3c2a6 + call SelectEnemyMove + ld a, [W_ISLINKBATTLE] + cp $4 + jr nz, .noLinkBattle + ld a, [$cc3e] + cp $f + jp z, asm_3c202 + cp $e + jr z, .noLinkBattle + cp $d + jr z, .noLinkBattle + sub $4 + jr c, .noLinkBattle + ld a, [$d062] + bit 5, a + jr z, .asm_3c2dd ; 0x3c2c9 $12 + ld a, [$cc2e] + ld hl, W_PLAYERMONMOVES + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + cp $76 + jr nz, .asm_3c2dd ; 0x3c2d8 $3 + ld [wPlayerSelectedMove], a +.asm_3c2dd + ld hl, Func_3a74b + ld b, BANK(Func_3a74b) + call Bankswitch +.noLinkBattle + ld a, [wPlayerSelectedMove] + cp QUICK_ATTACK + jr nz, .playerDidNotUseQuickAttack + ld a, [wEnemySelectedMove] + cp QUICK_ATTACK + jr z, .compareSpeed ; both used Quick Attack + jp .playerMovesFirst ; player used Quick Attack +.playerDidNotUseQuickAttack + ld a, [wEnemySelectedMove] + cp QUICK_ATTACK + jr z, .enemyMovesFirst + ld a, [wPlayerSelectedMove] + cp COUNTER + jr nz, .playerDidNotUseCounter + ld a, [wEnemySelectedMove] + cp COUNTER + jr z, .compareSpeed ; both used Counter + jr .enemyMovesFirst ; player used Counter +.playerDidNotUseCounter + ld a, [wEnemySelectedMove] + cp COUNTER + jr z, .playerMovesFirst +.compareSpeed + ld de, W_PLAYERMONSPEED ; player speed value + ld hl, W_ENEMYMONSPEED ; enemy speed value + ld c, $2 + call StringCmp ; compare speed values + jr z, .speedEqual + jr nc, .playerMovesFirst + jr .enemyMovesFirst +.speedEqual + ld a, [$ffaa] + cp $2 + jr z, .invertOutcome + call GenRandomInBattle + cp $80 + jr c, .playerMovesFirst + jr .enemyMovesFirst +.invertOutcome + call GenRandomInBattle + cp $80 + jr c, .enemyMovesFirst + jr .playerMovesFirst +.enemyMovesFirst + ld a, $1 + ld [H_WHOSETURN], a + ld hl, TrainerAI + ld b, BANK(TrainerAI) + call Bankswitch + jr c, .AIActionUsedEnemyFirst + call Func_3e6bc ; execute enemy move + ld a, [$d078] + and a + ret nz + ld a, b + and a + jp z, HandlePlayerMonFainted +.AIActionUsedEnemyFirst + call HandlePoisonBurnLeechSeed + jp z, Func_3c525 + call Func_3cd5a + call Func_3d65e ; execute player move + ld a, [$d078] + and a + ret nz + ld a, b + and a + jp z, Func_3c525 + call HandlePoisonBurnLeechSeed + jp z, HandlePlayerMonFainted + call Func_3cd5a + call Func_3c50f + jp MainInBattleLoop +.playerMovesFirst + call Func_3d65e ; execute player move + ld a, [$d078] + and a + ret nz + ld a, b + and a + jp z, Func_3c525 + call HandlePoisonBurnLeechSeed + jp z, HandlePlayerMonFainted + call Func_3cd5a + ld a, $1 + ld [H_WHOSETURN], a + ld hl, TrainerAI + ld b, BANK(TrainerAI) + call Bankswitch + jr c, .AIActionUsedPlayerFirst + call Func_3e6bc ; execute enemy move + ld a, [$d078] + and a + ret nz + ld a, b + and a + jp z, HandlePlayerMonFainted +.AIActionUsedPlayerFirst + call HandlePoisonBurnLeechSeed + jp z, Func_3c525 + call Func_3cd5a + call Func_3c50f + jp MainInBattleLoop -BillsHouseText1: ; 1e83d (7:683d) - db $8 - ld hl, UnnamedText_1e865 - call PrintText - call YesNoChoice - ld a, [$cc26] +HandlePoisonBurnLeechSeed: ; 3c3bd (f:43bd) + ld hl, W_PLAYERMONCURHP ; $d015 + ld de, W_PLAYERMONSTATUS ; $d018 + ld a, [H_WHOSETURN] ; $fff3 and a - jr nz, asm_6b196 ; 0x1e84b $d -asm_4d03c: ; 1e84d (7:684d) - ld hl, UnnamedText_1e86a + jr z, .playersTurn + ld hl, W_ENEMYMONCURHP ; $cfe6 + ld de, W_ENEMYMONSTATUS ; $cfe9 +.playersTurn + ld a, [de] + and BRN | PSN + jr z, .notBurnedOrPoisoned + push hl + ld hl, HurtByPoisonText + ld a, [de] + and BRN + jr z, .poisoned + ld hl, HurtByBurnText +.poisoned call PrintText - ld a, $1 - ld [W_BILLSHOUSECURSCRIPT], a - jr asm_fd4e2 ; 0x1e858 $8 -asm_6b196: ; 1e85a (7:685a) - ld hl, UnnamedText_1e86f + xor a + ld [$cc5b], a + ld a,BURN_PSN_ANIM + call PlayMoveAnimation ; play burn/poison animation + pop hl + call HandlePoisonBurnLeechSeed_DecreaseOwnHP +.notBurnedOrPoisoned + ld de, W_PLAYERBATTSTATUS2 ; $d063 + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .playersTurn2 + ld de, W_ENEMYBATTSTATUS2 ; $d068 +.playersTurn2 + ld a, [de] + add a + jr nc, .notLeechSeeded + push hl + ld a, [H_WHOSETURN] ; $fff3 + push af + xor $1 + ld [H_WHOSETURN], a ; $fff3 + xor a + ld [$cc5b], a + ld a,ABSORB + call PlayMoveAnimation ; play leech seed animation (from opposing mon) + pop af + ld [H_WHOSETURN], a ; $fff3 + pop hl + call HandlePoisonBurnLeechSeed_DecreaseOwnHP + call HandlePoisonBurnLeechSeed_IncreaseEnemyHP + push hl + ld hl, HurtByLeechSeedText call PrintText - jr asm_4d03c ; 0x1e860 $eb -asm_fd4e2 ; 0x1e862 - jp TextScriptEnd + pop hl +.notLeechSeeded + ld a, [hli] + or [hl] + ret nz ; test if fainted + call Func_3cd5a + ld c, $14 + call DelayFrames + xor a + ret -UnnamedText_1e865: ; 1e865 (7:6865) - TX_FAR _UnnamedText_1e865 ; 0x8d267 +HurtByPoisonText: ; 3c42e (f:442e) + TX_FAR _HurtByPoisonText db "@" -UnnamedText_1e86a: ; 1e86a (7:686a) - TX_FAR _UnnamedText_1e86a ; 0x8d345 +HurtByBurnText: ; 3c433 (f:4433) + TX_FAR _HurtByBurnText db "@" -UnnamedText_1e86f: ; 1e86f (7:686f) - TX_FAR _UnnamedText_1e86f ; 0x8d391 +HurtByLeechSeedText: ; 3c438 (f:4438) + TX_FAR _HurtByLeechSeedText 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 - -BillThankYouText: ; 1e8ba (7:68ba) - TX_FAR _BillThankYouText - db "@" - -SSTicketReceivedText: ; 1e8bf (7:68bf) - TX_FAR _SSTicketReceivedText - db $11, $6, "@" - -SSTicketNoRoomText: ; 1e8c6 (7:68c6) - TX_FAR _SSTicketNoRoomText - db "@" - -UnnamedText_1e8cb: ; 1e8cb (7:68cb) - TX_FAR _UnnamedText_1e8cb - db "@" - -BillsHouseText3: ; 1e8d0 (7:68d0) - db $08 ; asm - ld hl, UnnamedText_1e8da - call PrintText - jp TextScriptEnd - -UnnamedText_1e8da: ; 1e8da (7:68da) - TX_FAR _UnnamedText_1e8da - db "@" - -INCLUDE "data/mapObjects/billshouse.asm" - -BillsHouseBlocks: ; 1e905 (7:6905) - INCBIN "maps/billshouse.blk" - -Func_1e915: ; 1e915 (7:6915) - call SaveScreenTilesToBuffer2 - ld hl, AccessedOaksPCText - call PrintText - ld hl, GetDexRatedText - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] ; $cc26 +; decreases the mon's current HP by 1/16 of the Max HP (multiplied by number of toxic ticks if active) +; note that the toxic ticks are considered even if the damage is not poison (hence the Leech Seed glitch) +; hl: HP pointer +; bc (out): total damage +HandlePoisonBurnLeechSeed_DecreaseOwnHP: ; 3c43d (f:443d) + push hl + push hl + ld bc, $e ; skip to max HP + add hl, bc + ld a, [hli] ; load max HP + ld [wHPBarMaxHP+1], a + ld b, a + ld a, [hl] + ld [wHPBarMaxHP], a + ld c, a + srl b + rr c + srl b + rr c + srl c + srl c ; c = max HP/16 (assumption: HP < 1024) + ld a, c 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 - -GetDexRatedText: ; 1e93b (7:693b) - TX_FAR _GetDexRatedText - db "@" - -ClosedOaksPCText: ; 1e940 (7:6940) - TX_FAR _ClosedOaksPCText - db $0d,"@" - -AccessedOaksPCText: ; 1e946 (7:6946) - TX_FAR _AccessedOaksPCText - db "@" - -Func_1e94b: ; 1e94b (7:694b) - call EnableAutoTextBoxDrawing - ld a, $39 - jp Func_3ef5 - -NewBicycleText: ; 1e953 (7:6953) - TX_FAR _NewBicycleText - db "@" - -Func_1e958: ; 1e958 (7:6958) - call EnableAutoTextBoxDrawing - ld a, $05 - jp Func_3ef5 - -PushStartText: ; 1e960 (7:6960) - TX_FAR _PushStartText - 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 - -SaveOptionText: ; 1e97e (7:697e) - TX_FAR _SaveOptionText - db "@" - -StrengthsAndWeaknessesText: ; 1e983 (7:6983) - TX_FAR _StrengthsAndWeaknessesText - db "@" - -Func_1e988: ; 1e988 (7:6988) - ld hl, $d790 - bit 7, [hl] - jr z, asm_1e9ab - ld a, [W_NUMSAFARIBALLS] ; $da47 + jr nz, .nonZeroDamage + inc c ; damage is at least 1 +.nonZeroDamage + ld hl, W_PLAYERBATTSTATUS3 ; $d064 + ld de, W_PLAYERTOXICCOUNTER ; $d06c + ld a, [H_WHOSETURN] ; $fff3 and a - jr z, asm_1e9b0 - jr asm_1e9ab + jr z, .playersTurn + ld hl, W_ENEMYBATTSTATUS3 ; $d069 + ld de, W_ENEMYTOXICCOUNTER ; $d071 +.playersTurn + bit 0, [hl] + jr z, .noToxic + ld a, [de] ; increment toxic counter + inc a + ld [de], a + ld hl, $0000 +.toxicTicksLoop + add hl, bc + dec a + jr nz, .toxicTicksLoop + ld b, h ; bc = damage * toxic counter + ld c, l +.noToxic + pop hl + inc hl + ld a, [hl] ; subtract total damage from current HP + 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, .noOverkill + xor a ; overkill: zero HP + ld [hli], a + ld [hl], a + ld [wHPBarNewHP], a + ld [wHPBarNewHP+1], a +.noOverkill + call UpdateCurMonHPBar + pop hl + ret -Func_1e997: ; 1e997 (7:6997) - ld a, [wSafariSteps] ; $d70d - ld b, a - ld a, [wSafariSteps + 1] ; $d70e +; adds bc to enemy HP +HandlePoisonBurnLeechSeed_IncreaseEnemyHP: ; 3c4a3 (f:44a3) + push hl + ld hl, W_ENEMYMONMAXHP ; $cff4 + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .playersTurn + ld hl, W_PLAYERMONMAXHP ; $d023 +.playersTurn + ld a, [hli] + ld [wHPBarMaxHP+1], a + ld a, [hl] + ld [wHPBarMaxHP], a + ld de, $fff2 + add hl, de ; skip back fomr max hp to current hp + ld a, [hl] + ld [wHPBarOldHP], a ; add bc to current HP + add c + ld [hld], a + ld [wHPBarNewHP], a + ld a, [hl] + ld [wHPBarOldHP+1], a + adc b + ld [hli], a + ld [wHPBarNewHP+1], a + ld a, [wHPBarMaxHP] ld c, a - or b - jr z, asm_1e9b0 - dec bc - ld a, b - ld [wSafariSteps], a ; $d70d + ld a, [hld] + sub c + ld a, [wHPBarMaxHP+1] + ld b, a + ld a, [hl] + sbc b + jr c, .noOverfullHeal + ld a, b ; overfull heal, set HP to max HP + ld [hli], a + ld [wHPBarNewHP+1], a ld a, c - ld [wSafariSteps + 1], a ; $d70e -asm_1e9ab: ; 1e9ab (7:69ab) + ld [hl], a + ld [wHPBarNewHP], a +.noOverfullHeal + ld a, [H_WHOSETURN] ; $fff3 + xor $1 + ld [H_WHOSETURN], a ; $fff3 + call UpdateCurMonHPBar + ld a, [H_WHOSETURN] ; $fff3 + xor $1 + ld [H_WHOSETURN], a ; $fff3 + pop hl + ret + +UpdateCurMonHPBar: ; 3c4f6 (f:44f6) + FuncCoord 10, 9 ; $c45e + ld hl, Coord ; tile pointer to player HP bar + ld a, [H_WHOSETURN] ; $fff3 + and a + ld a, $1 + jr z, .playersTurn + FuncCoord 2, 2 ; $c3ca + ld hl, Coord ; tile pointer to enemy HP bar xor a - ld [$da46], a +.playersTurn + push bc + ld [wListMenuID], a ; $cf94 + ld a, $48 + call Predef ; indirect jump to UpdateHPBar (fa1d (3:7a1d)) + pop bc ret -asm_1e9b0: ; 1e9b0 (7:69b0) - call EnableAutoTextBoxDrawing + +Func_3c50f: ; 3c50f (f:450f) + ld a, [$d06a] + and a + jr nz, .asm_3c51a + ld hl, W_PLAYERBATTSTATUS1 ; $d062 + res 5, [hl] +.asm_3c51a + ld a, [$d06f] + and a + ret nz + ld hl, W_ENEMYBATTSTATUS1 ; $d067 + res 5, [hl] + ret + +Func_3c525: ; 3c525 (f:4525) xor a - ld [wMusicHeaderPointer], a + ld [$ccf0], a + call FaintEnemyPokemon + call AnyPokemonAliveCheck + ld a, d + and a + jp z, HandlePlayerBlackOut + ld hl, W_PLAYERMONCURHP ; $d015 + ld a, [hli] + or [hl] + call nz, Func_3cd60 + ld a, [W_ISINBATTLE] ; $d057 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] + ret z + call Func_3c64f + jp z, TrainerBattleVictory + ld hl, W_PLAYERMONCURHP ; $d015 + ld a, [hli] + or [hl] + jr nz, .asm_3c555 + call Func_3c79b + ret c + call Func_3c7d8 +.asm_3c555 ld a, $1 - ld [$da46], a - ret - -Func_1e9ed: ; 1e9ed (7:69ed) + ld [$cd6a], a + call Func_3c664 + jp z, asm_3c202 xor a - ld [wJoypadForbiddenButtonsMask], a - ld hl, SafariGameOverText - jp PrintText + ld [$cd6a], a + jp MainInBattleLoop -SafariGameOverText: ; 1e9f7 (7:69f7) - db $08 ; asm - ld a, [W_NUMSAFARIBALLS] ; $da47 +FaintEnemyPokemon ; 0x3c567 + call ReadPlayerMonCurHPAndStatus + ld a, [W_ISINBATTLE] ; $d057 + dec a + jr z, .wild + ld a, [W_ENEMYMONNUMBER] ; $cfe8 + ld hl, W_ENEMYMON1HP + ld bc, $2c ; mon struct len + call AddNTimes + xor a + ld [hli], a + ld [hl], a +.wild + ld hl, W_PLAYERBATTSTATUS1 ; $d062 + res 2, [hl] + xor a + ld [W_NUMHITS], a ; $d074 + ld hl, $d065 ; enemy statuses + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld [W_ENEMYDISABLEDMOVE], a ; $d072 + ld [$ccef], a + ld [$ccf3], a + ld hl, $ccf1 + ld [hli], a + ld [hl], a + FuncCoord 12, 5 ; $c410 + ld hl, Coord + FuncCoord 12, 6 ; $c424 + ld de, Coord + call Func_3c893 + ld hl, wTileMap + ld bc, $40b + call ClearScreenArea + ld a, [W_ISINBATTLE] ; $d057 + dec a + jr z, .wild_win + xor a + ld [$c0f1], a + ld [$c0f2], a + ld a, (SFX_08_48 - SFX_Headers_08) / 3 ; SFX_FALL? + call PlaySoundWaitForCurrent +.sfxwait + ld a, [$c02a] + cp (SFX_08_48 - SFX_Headers_08) / 3 + jr z, .sfxwait + ld a, (SFX_08_43 - SFX_Headers_08) / 3 ; SFX_DROP + call PlaySound + call WaitForSoundToFinish + jr .sfxplayed +.wild_win + call Func_3c643 + ld a, MUSIC_DEFEATED_WILD_MON + call Func_3c6ee +.sfxplayed + ld hl, W_PLAYERMONCURHP ; $d015 + ld a, [hli] + or [hl] + jr nz, .playermonnotfaint + ld a, [$ccf0] and a - jr z, .asm_1ea04 - ld hl, TimesUpText - call PrintText -.asm_1ea04 - ld hl, GameOverText + jr nz, .playermonnotfaint + call Func_3c741 +.playermonnotfaint + call AnyPokemonAliveCheck + ld a, d + and a + ret z + ld hl, EnemyMonFaintedText call PrintText - jp TextScriptEnd - -TimesUpText: ; 1ea0d (7:6a0d) - TX_FAR _TimesUpText - db "@" - -GameOverText: ; 1ea12 (7:6a12) - TX_FAR _GameOverText - 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) - db $08 ; asm + call Func_3ee94 + call SaveScreenTilesToBuffer1 xor a - ld [$da38], a - ld a, [wWhichTrade] ; $cd3d + ld [$cf0b], a + ld b, EXP__ALL + call IsItemInBag push af - and $f - ld [$ffdb], a + jr z, .no_exp_all + ld hl, $d002 + ld b, $7 +.exp_all_loop + srl [hl] + inc hl + dec b + jr nz, .exp_all_loop +.no_exp_all + xor a + ld [$cc5b], a + ld hl, Func_5524f + ld b, BANK(Func_5524f) + call Bankswitch 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 + ret z ld a, $1 - ld [$cc3c], a - call Func_1ea92 - jp TextScriptEnd - -CinnabarGymQuizIntroText: ; 1ea5b (7:6a5b) - TX_FAR _CinnabarGymQuizIntroText - db "@" - -CinnabarQuizQuestions: ; 1ea60 (7:6a60) - dw CinnabarQuizQuestionsText1 - dw CinnabarQuizQuestionsText2 - dw CinnabarQuizQuestionsText3 - dw CinnabarQuizQuestionsText4 - dw CinnabarQuizQuestionsText5 - dw CinnabarQuizQuestionsText6 + ld [$cc5b], a + ld a, [W_NUMINPARTY] ; $d163 + ld b, $0 +.asm_3c62c + scf + rl b + dec a + jr nz, .asm_3c62c + ld a, b + ld [W_PLAYERMONSALIVEFLAGS], a + ld hl, Func_5524f + ld b, BANK(Func_5524f) + jp Bankswitch -CinnabarQuizQuestionsText1: ; 1ea6c (7:6a6c) - TX_FAR _CinnabarQuizQuestionsText1 +EnemyMonFaintedText: ; 0x3c63e + TX_FAR _EnemyMonFaintedText db "@" -CinnabarQuizQuestionsText2: ; 1ea71 (7:6a71) - TX_FAR _CinnabarQuizQuestionsText2 - db "@" +Func_3c643: ; 3c643 (f:4643) + xor a + ld [$d083], a + ld [$c02a], a + inc a + ld [$ccf6], a + ret -CinnabarQuizQuestionsText3: ; 1ea76 (7:6a76) - TX_FAR _CinnabarQuizQuestionsText3 - db "@" +Func_3c64f: ; 3c64f (f:464f) + ld a, [wEnemyPartyCount] ; $d89c + ld b, a + xor a + ld hl, W_ENEMYMON1HP ; $d8a5 + ld de, $2c +.asm_3c65a + or [hl] + inc hl + or [hl] + dec hl + add hl, de + dec b + jr nz, .asm_3c65a + and a + ret -CinnabarQuizQuestionsText4: ; 1ea7b (7:6a7b) - TX_FAR _CinnabarQuizQuestionsText4 - db "@" +Func_3c664: ; 3c664 (f:4664) + ld hl, $cf1e + ld e, $30 + call Func_3ce90 + ld hl, DrawEnemyPokeballs + ld b, BANK(DrawEnemyPokeballs) + call Bankswitch + ld a, [W_ISLINKBATTLE] ; $d12b + cp $4 + jr nz, .asm_3c687 + call Func_3d605 + ld a, [$cc3e] + cp $f + ret z + call LoadScreenTilesFromBuffer1 +.asm_3c687 + call EnemySendOut + xor a + ld [W_ENEMYMOVENUM], a ; $cfcc + ld [$cd6a], a + ld [$ccd5], a + inc a + ret -CinnabarQuizQuestionsText5: ; 1ea80 (7:6a80) - TX_FAR _CinnabarQuizQuestionsText5 +TrainerBattleVictory: ; 3c696 (f:4696) + call Func_3c643 + ld b, MUSIC_DEFEATED_GYM_LEADER + ld a, [W_GYMLEADERNO] ; $d05c + and a + jr nz, .gymleader + ld b, MUSIC_DEFEATED_TRAINER +.gymleader + ld a, [W_TRAINERCLASS] ; $d031 + cp SONY3 ; final battle against rival + jr nz, .notrival + ld b, MUSIC_DEFEATED_GYM_LEADER + ld hl, W_FLAGS_D733 + set 1, [hl] +.notrival + ld a, [W_ISLINKBATTLE] ; $d12b + cp $4 + ld a, b + call nz, Func_3c6ee + ld hl, TrainerDefeatedText + call PrintText + ld a, [W_ISLINKBATTLE] ; $d12b + cp $4 + ret z + call ScrollTrainerPicAfterBattle + ld c, $28 + call DelayFrames + call Func_3381 + ld hl, MoneyForWinningText + call PrintText + ld de, wPlayerMoney + 2 ; $d349 + ld hl, $d07b + ld c, $3 + ld a, $b + jp Predef ; indirect jump to Func_f81d (f81d (3:781d)) + +MoneyForWinningText: ; 3c6e4 (f:46e4) + TX_FAR _MoneyForWinningText db "@" -CinnabarQuizQuestionsText6: ; 1ea85 (7:6a85) - TX_FAR _CinnabarQuizQuestionsText6 +TrainerDefeatedText: ; 3c6e9 (f:46e9) + TX_FAR _TrainerDefeatedText db "@" -Func_1ea8a: ; 1ea8a (7:6a8a) - ld hl, $d79c - ld a, $10 - jp Predef ; indirect jump to HandleBitArray (f666 (3:7666)) +Func_3c6ee: ; 3c6ee (f:46ee) + push af + ld a, $ff + ld [$c0ee], a + call PlaySoundWaitForCurrent + ld c, BANK(Music_DefeatedTrainer) + pop af + call PlayMusic + jp Delay3 -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 +HandlePlayerMonFainted: ; 3c700 (f:4700) + ld a, $1 + ld [$ccf0], a + call Func_3c741 + call AnyPokemonAliveCheck ; test if any more mons are alive + ld a, d 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 + jp z, HandlePlayerBlackOut + ld hl, W_ENEMYMONCURHP ; $cfe6 + ld a, [hli] + or [hl] + jr nz, .enemyMonNotFainted + call FaintEnemyPokemon + ld a, [W_ISINBATTLE] ; $d057 + dec a + ret z ; if wild encounter, battle is over + call Func_3c64f + jp z, TrainerBattleVictory +.enemyMonNotFainted + call Func_3c79b + ret c + call Func_3c7d8 + jp nz, MainInBattleLoop + ld a, $1 + ld [$cd6a], a + call Func_3c664 + jp z, asm_3c202 + xor a + ld [$cd6a], a + jp MainInBattleLoop - ld a, [$ffe0] +Func_3c741: ; 3c741 (f:4741) + ld a, [wPlayerMonNumber] ; $cc2f 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 + ld hl, W_PLAYERMONSALIVEFLAGS ; clear fainted mon's alive flag + ld b, $0 + ld a, $10 + call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) + ld hl, W_ENEMYBATTSTATUS1 ; $d067 + res 2, [hl] ; reset "attacking multiple times" flag + ld a, [$d083] + bit 7, a ; skip sound flag (red bar (?)) + jr z, .skipWaitForSound + ld a, $ff + ld [$d083], a call WaitForSoundToFinish - jp TextScriptEnd +.skipWaitForSound + ld hl, $cd05 + ld [hli], a + ld [hl], a + ld [W_PLAYERMONSTATUS], a ; $d018 + call ReadPlayerMonCurHPAndStatus + FuncCoord 9, 7 ; $c435 + ld hl, Coord + ld bc, $50b + call ClearScreenArea + FuncCoord 1, 10 ; $c469 + ld hl, Coord + FuncCoord 1, 11 ; $c47d + ld de, Coord + call Func_3c893 + ld a, $1 + ld [$cf0b], a + ld a, [$ccf0] + and a + ret z + ld a, [W_PLAYERMONID] + call PlayCry + ld hl, PlayerMonFaintedText + jp PrintText -CinnabarGymQuizIncorrectText: ; 1eb05 (7:6b05) - TX_FAR _CinnabarGymQuizIncorrectText +PlayerMonFaintedText: ; 3c796 (f:4796) + TX_FAR _PlayerMonFaintedText db "@" -Func_1eb0a: ; 1eb0a (7:6b0a) - ld a, $6 - ld [$ffdb], a -.asm_1eb0e - ld a, [$ffdb] +Func_3c79b: ; 3c79b (f:479b) + call Func_3ee94 + call SaveScreenTilesToBuffer1 + ld a, [W_ISINBATTLE] ; $d057 + and a 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 + ret nz + ld hl, UseNextMonText + call PrintText +.asm_3c7ad + FuncCoord 13, 9 ; $c461 + ld hl, Coord + ld bc, $a0e + ld a, $14 + ld [$d125], a + call DisplayTextBoxID + ld a, [$d12e] + cp $2 + jr z, .asm_3c7c4 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 +.asm_3c7c4 + ld a, [wCurrentMenuItem] ; $cc26 + and a + jr z, .asm_3c7ad + ld hl, W_PARTYMON1_SPEED ; $d193 + ld de, W_ENEMYMONSPEED + jp Func_3cab9 -MagazinesText: ; 1eb69 (7:6b69) - TX_FAR _MagazinesText +UseNextMonText: ; 3c7d3 (f:47d3) + TX_FAR _UseNextMonText db "@" -Func_1eb6e: ; 1eb6e (7:6b6e) - call EnableAutoTextBoxDrawing - ld a, [$c109] +Func_3c7d8: ; 3c7d8 (f:47d8) + ld a, $2 + ld [$d07d], a + call DisplayPartyMenu +.asm_3c7e0 + jr nc, .asm_3c7e7 +.asm_3c7e2 + call GoBackToPartyMenu + jr .asm_3c7e0 +.asm_3c7e7 + call Func_3ca97 + jr z, .asm_3c7e2 + ld a, [W_ISLINKBATTLE] ; $d12b 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 + jr nz, .asm_3c7fa + inc a + ld [$cd6a], a + call Func_3d605 +.asm_3c7fa + xor a + ld [$cd6a], a + call CleanLCD_OAM + ld a, [wWhichPokemon] ; $cf92 + ld [wPlayerMonNumber], a ; $cc2f + ld c, a + ld hl, W_PLAYERMONSALIVEFLAGS + ld b, $1 + push bc + ld a, $10 + call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) + pop bc + ld hl, $ccf5 + ld a, $10 + call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) + call Func_3cba6 + call GBPalWhiteOut + call Func_3ee5b + call LoadScreenTilesFromBuffer1 + call GoPAL_SET_CF1C + call GBPalNormal + call Func_3cc91 + ld hl, W_ENEMYMONCURHP ; $cfe6 + ld a, [hli] + or [hl] ret -BillsHouseMonitorText: ; 1ebdd (7:6bdd) - TX_FAR _BillsHouseMonitorText - db "@" - -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 +; called when player is out of usable mons. +; prints approriate lose message, sets carry flag if player blacked out (special case for initial rival fight) +HandlePlayerBlackOut: ; 3c837 (f:4837) + ld a, [W_ISLINKBATTLE] ; $d12b + cp $4 + jr z, .notSony1Battle + ld a, [W_CUROPPONENT] ; $d059 + cp $c8 + SONY1 + jr nz, .notSony1Battle + ld hl, wTileMap ; sony 1 battle + ld bc, $815 + call ClearScreenArea + call ScrollTrainerPicAfterBattle + ld c, $28 call DelayFrames - jp TextScriptEnd - -BillsHousePokemonList: ; 1ec05 (7:6c05) - db $08 ; asm - call SaveScreenTilesToBuffer1 - ld hl, BillsHousePokemonListText1 + ld hl, Sony1WinText 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 + ld a, [W_CURMAP] + cp OAKS_LAB + ret z ; starter battle in oak's lab: don't black out +.notSony1Battle + ld b, $0 + call GoPAL_SET + ld hl, PlayerBlackedOutText2 + ld a, [W_ISLINKBATTLE] ; $d12b + cp $4 + jr nz, .noLinkBattle + ld hl, LinkBattleLostText +.noLinkBattle 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 + ld a, [$d732] + res 5, a + ld [$d732], a + call ClearScreen + scf + ret -BillsHousePokemonListText1: ; 1ec7f (7:6c7f) - TX_FAR _BillsHousePokemonListText1 +Sony1WinText: ; 3c884 (f:4884) + TX_FAR _Sony1WinText db "@" -BillsMonListText: ; 1ec84 (7:6c84) - db "EEVEE" - next "FLAREON" - next "JOLTEON" - next "VAPOREON" - next "CANCEL@" - -BillsHousePokemonListText2: ; 1ecaa (7:6caa) - TX_FAR _BillsHousePokemonListText2 +PlayerBlackedOutText2: ; 3c889 (f:4889) + TX_FAR _PlayerBlackedOutText2 db "@" -Func_1ecaf: ; 1ecaf (7:6caf) - ld a, [$c109] - cp $4 - ret nz - call EnableAutoTextBoxDrawing - ld a, $8 - jp Func_3ef5 - -OakLabEmailText: ; 1ecbd (7:6cbd) - TX_FAR _OakLabEmailText +LinkBattleLostText: ; 3c88e (f:488e) + TX_FAR _LinkBattleLostText db "@" - - -SECTION "bank9",ROMX,BANK[$9] - -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" - -Func_27d6b: ; 27d6b (9:7d6b) - call Load16BitRegisters +Func_3c893: ; 3c893 (f:4893) + ld a, [$d730] + push af + set 6, a + ld [$d730], a + ld b, $7 +.asm_3c89e + push bc + push de push hl - call GetMonHeader - pop hl + ld b, $6 +.asm_3c8a3 + push bc push hl - ld a, [W_MONHTYPE1] - call Func_27d89 - ld a, [W_MONHTYPE1] - ld b, a - ld a, [W_MONHTYPE2] - cp b + push de + ld bc, $7 + call CopyData + pop de pop hl - jr z, asm_27d8c - ld bc, $28 + ld bc, $ffec add hl, bc - -Func_27d89: ; 27d89 (9:7d89) push hl - jr asm_27d9f -asm_27d8c: ; 27d8c (9:7d8c) - ld a, $7f - ld bc, $13 + ld h, d + ld l, e add hl, bc - ld bc, $6 - jp FillMemory + ld d, h + ld e, l + pop hl + pop bc + dec b + jr nz, .asm_3c8a3 + ld bc, $14 + add hl, bc + ld de, SevenSpacesText + call PlaceString + ld c, $2 + call DelayFrames + pop hl + pop de + pop bc + dec b + jr nz, .asm_3c89e + pop af + ld [$d730], a + ret -Func_27d98: ; 27d98 (9:7d98) - call Load16BitRegisters +SevenSpacesText: ; 3c8d7 (f:48d7) + db " @" + +Func_3c8df: ; 3c8df (f:48df) + ld [H_DOWNARROWBLINKCNT1], a ; $ff8b + ld c, a +.asm_3c8e2 + push bc 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 b, $7 +.asm_3c8e6 + push hl + ld a, [H_DOWNARROWBLINKCNT1] ; $ff8b + ld c, a +.asm_3c8ea + ld a, [H_DOWNARROWBLINKCNT1] ; $ff8b + cp $8 + jr z, .asm_3c8f5 + ld a, [hld] + ld [hli], a + inc hl + jr .asm_3c8f8 +.asm_3c8f5 ld a, [hli] - ld e, a - ld d, [hl] + ld [hld], a + dec hl +.asm_3c8f8 + dec c + jr nz, .asm_3c8ea pop hl - jp PlaceString - -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 - -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@" + ld de, $14 + add hl, de + dec b + jr nz, .asm_3c8e6 + ld c, $2 + call DelayFrames + pop hl + pop bc + dec c + jr nz, .asm_3c8e2 + ret -SaveTrainerName: ; 27e4a (9:7e4a) - ld hl,TrainerNamePointers - ld a,[W_TRAINERCLASS] +; XXX this needs cleaning up. it's what runs when a juggler switches pokemon +EnemySendOut: ; 3c90e (f:490e) + ld hl,W_PLAYERMONSALIVEFLAGS + xor a + ld [hl],a + ld a,[$CC2F] + ld c,a + ld b,1 + push bc + ld a,$10 + call Predef + ld hl,$CCF5 + xor a + ld [hl],a + pop bc + ld a,$10 + call Predef +Func_3c92a: ; 3c92a (f:492a) + xor a + ld hl,$D065 + ld [hli],a + ld [hli],a + ld [hli],a + ld [hli],a + ld [hl],a + ld [$D072],a + ld [$CCEF],a + ld [$CCF3],a + ld hl,$CCF1 + ld [hli],a + ld [hl],a dec a + ld [wAICount],a + ld hl,W_PLAYERBATTSTATUS1 + res 5,[hl] + FuncCoord 18, 0 ; $c3b2 + ld hl,Coord + ld a,8 + call Func_3c8df + call Func_3ee94 + call SaveScreenTilesToBuffer1 + ld a,[$D12B] + cp 4 + jr nz,.next + ld a,[$CC3E] + sub 4 + ld [wWhichPokemon],a + jr .next3 +.next + ld b,$FF +.next2 + inc b + ld a,[$CFE8] + cp b + jr z,.next2 + ld hl,$D8A4 + ld a,b + ld [wWhichPokemon],a + push bc + ld bc,$2C + call AddNTimes + pop bc + inc hl + ld a,[hli] + ld c,a + ld a,[hl] + or c + jr z,.next2 +.next3 + ld a,[wWhichPokemon] + ld hl,$D8C5 + ld bc,$2C + call AddNTimes + ld a,[hl] + ld [$D127],a + ld a,[wWhichPokemon] + inc a + ld hl,$D89C 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,[hl] + ld [W_ENEMYMONID],a + ld [$CF91],a + call Func_3eb01 + ld hl,$CFE6 ld a,[hli] - ld [de],a - inc de - cp "@" - jr nz,.CopyCharacter + ld [$CCE3],a + ld a,[hl] + ld [$CCE4],a + ld a,1 + ld [$CC26],a + ld a,[$D11D] + dec a + jr z,.next4 + ld a,[W_NUMINPARTY] + dec a + jr z,.next4 + ld a,[$D12B] + cp 4 + jr z,.next4 + ld a,[$D355] + bit 6,a + jr nz,.next4 + ld hl, TrainerAboutToUseText + call PrintText + FuncCoord 0, 7 ; $c42c + ld hl,Coord + ld bc,$0801 + ld a,$14 + ld [$D125],a + call DisplayTextBoxID + ld a,[$CC26] + and a + jr nz,.next4 + ld a,2 + ld [$D07D],a + call DisplayPartyMenu +.next9 + ld a,1 + ld [$CC26],a + jr c,.next7 + ld hl,$CC2F + ld a,[wWhichPokemon] + cp [hl] + jr nz,.next6 + ld hl,AlreadyOutText + call PrintText +.next8 + call GoBackToPartyMenu + jr .next9 +.next6 + call Func_3ca97 + jr z,.next8 + xor a + ld [$CC26],a +.next7 + call GBPalWhiteOut + call Func_3ee5b + call LoadScreenTilesFromBuffer1 +.next4 + call CleanLCD_OAM + ld hl,wTileMap + ld bc,$040B + call ClearScreenArea + ld b,1 + call GoPAL_SET + call GBPalNormal + ld hl,TrainerSentOutText + call PrintText + ld a,[W_ENEMYMONID] + ld [$CF91],a + ld [$D0B5],a + call GetMonHeader + ld de,$9000 + call LoadMonFrontSprite + ld a,$CF + ld [$FFE1],a + FuncCoord 15, 6 ; $c427 + ld hl,Coord + ld a,2 + call Predef + ld a,[W_ENEMYMONID] + call PlayCry + call Func_3cdec + ld a,[$CC26] + and a + ret nz + xor a + ld [W_PLAYERMONSALIVEFLAGS],a + ld [$CCF5],a + call SaveScreenTilesToBuffer1 + jp Func_3d1ba + +TrainerAboutToUseText: ; 3ca79 (f:4a79) + TX_FAR _TrainerAboutToUseText + db "@" + +TrainerSentOutText: ; 3ca7e (f:4a7e) + TX_FAR _TrainerSentOutText + db "@" + +; tests if the player has any pokemon that are not fainted +; sets d = 0 if all fainted, d != 0 if some mons are still alive +AnyPokemonAliveCheck: ; 3ca83 (f:4a83) + ld a, [W_NUMINPARTY] ; $d163 + ld e, a + xor a + ld hl, W_PARTYMON1_HP ; $d16c + ld bc, W_PARTYMON2DATA - W_PARTYMON1DATA - 1 +.partyMonsLoop + or [hl] + inc hl + or [hl] + add hl, bc + dec e + jr nz, .partyMonsLoop + ld d, a ret -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 - -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♀@" - -_FocusEnergyEffect: ; 27f86 (9:7f86) - ld hl, W_PLAYERBATTSTATUS2 ; $d063 - ld a, [H_WHOSETURN] ; $fff3 +Func_3ca97: ; 3ca97 (f:4a97) + ld a, [wWhichPokemon] ; $cf92 + ld hl, W_PARTYMON1_HP ; $d16c + ld bc, $2c + call AddNTimes + ld a, [hli] + or [hl] + ret nz + ld a, [$d11d] 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 + jr nz, .asm_3cab2 + ld hl, NoWillText + call PrintText +.asm_3cab2 + xor a + ret -FocusEnergyText: ; 27fb3 (9:7fb3) - db $0a - TX_FAR _FocusEnergyText +NoWillText: ; 3cab4 (f:4ab4) + TX_FAR _NoWillText 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" - -_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 +Func_3cab9: ; 3cab9 (f:4ab9) + call IsGhostBattle + jp z, .asm_3cb5c + ld a, [W_BATTLETYPE] ; $d05a + cp $2 + jp z, .asm_3cb5c + ld a, [W_ISLINKBATTLE] ; $d12b + cp $4 + jp z, .asm_3cb5c + ld a, [W_ISINBATTLE] ; $d057 + dec a + jr nz, .asm_3cb4c + ld a, [$d120] + inc a + ld [$d120], a + ld a, [hli] + ld [$ff97], a + ld a, [hl] + ld [$ff98], a ld a, [de] - cp GRASS - jr z, .asm_2bee7 + ld [$ff8d], a 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 + ld [$ff8e], a + call LoadScreenTilesFromBuffer1 + ld de, $ff97 + ld hl, $ff8d + ld c, $2 + call StringCmp + jr nc, .asm_3cb5c + xor a + ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) + ld a, $20 + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + call Multiply + ld a, [$ff97] + ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) + ld a, [$ff98] + ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) + ld a, [$ff8d] + ld b, a + ld a, [$ff8e] + srl b + rr a + srl b + rr a + and a + jr z, .asm_3cb5c + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + ld b, $2 + call Divide + ld a, [$ff97] + and a + jr nz, .asm_3cb5c + ld a, [$d120] + ld c, a +.asm_3cb2b + dec c + jr z, .asm_3cb39 + ld b, $1e + ld a, [$ff98] + add b + ld [$ff98], a + jr c, .asm_3cb5c + jr .asm_3cb2b +.asm_3cb39 + call GenRandomInBattle + ld b, a + ld a, [$ff98] + cp b + jr nc, .asm_3cb5c + ld a, $1 + ld [$cd6a], a + ld hl, CantEscapeText + jr .asm_3cb4f +.asm_3cb4c + ld hl, NoRunningText +.asm_3cb4f + call PrintText + ld a, $1 + ld [$d11f], a + call SaveScreenTilesToBuffer1 + and a + ret +.asm_3cb5c + ld a, [W_ISLINKBATTLE] ; $d12b + cp $4 + ld a, $2 + jr nz, .asm_3cb81 + call SaveScreenTilesToBuffer1 + xor a + ld [$cd6a], a + ld a, $f + ld [wPlayerMoveListIndex], a ; $cc2e + call Func_3d605 + call LoadScreenTilesFromBuffer1 + ld a, [$cc3e] + cp $f + ld a, $2 + jr z, .asm_3cb81 + dec a +.asm_3cb81 + ld [$cf0b], a + ld a, (SFX_08_44 - SFX_Headers_08) / 3 + call PlaySoundWaitForCurrent + ld hl, GotAwayText + call PrintText + call WaitForSoundToFinish + call SaveScreenTilesToBuffer1 + scf + ret -SeededText: ; 2bef2 (a:7ef2) - TX_FAR _SeededText +CantEscapeText: ; 3cb97 (f:4b97) + TX_FAR _CantEscapeText db "@" -EvadedText: ; 2bef7 (a:7ef7) - TX_FAR _EvadedText +NoRunningText: ; 3cb9c (f:4b9c) + TX_FAR _NoRunningText 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" - -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 - -SupperEffectiveText: ; 2fb8e (b:7b8e) - TX_FAR _SupperEffectiveText - db "@" - -NotVeryEffectiveText: ; 2fb93 (b:7b93) - TX_FAR _NotVeryEffectiveText +GotAwayText: ; 3cba1 (f:4ba1) + TX_FAR _GotAwayText db "@" -TrainerInfoTextBoxTileGraphics: ; 2fb98 (b:7b98) - INCBIN "gfx/trainer_info.2bpp" - -BlankLeaderNames: ; 2fc28 (b:7c28) - INCBIN "gfx/blank_leader_names.2bpp" - -CircleTile: ; 2fd88 (b:7d88) - INCBIN "gfx/circle_tile.2bpp" - -BadgeNumbersTileGraphics: ; 2fd98 (b:7d98) - INCBIN "gfx/badge_numbers.2bpp" +Func_3cba6: ; 3cba6 (f:4ba6) + ld a, [wWhichPokemon] ; $cf92 + ld bc, $2c + ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) + call AddNTimes + ld de, W_PLAYERMONID + ld bc, $c + call CopyData + ld bc, $f + add hl, bc + ld de, W_PLAYERMONIVS + ld bc, $2 + call CopyData + ld de, W_PLAYERMONPP ; $d02d + ld bc, $4 + call CopyData + ld de, W_PLAYERMONLEVEL ; $d022 + ld bc, $b + call CopyData + ld a, [$cfd9] + ld [$d0b5], a + call GetMonHeader + ld hl, W_PARTYMON1NAME ; $d2b5 + ld a, [wPlayerMonNumber] ; $cc2f + call SkipFixedLengthTextEntries + ld de, W_PLAYERMONNAME + ld bc, $b + call CopyData + ld hl, W_PLAYERMONLEVEL ; $d022 + ld de, $cd0f + ld bc, $b + call CopyData + call Func_3ed1a + call Func_3ee19 + ld a, $7 + ld b, $8 + ld hl, wPlayerMonAttackMod ; $cd1a +.asm_3cc0e + ld [hli], a + dec b + jr nz, .asm_3cc0e + ret -; checks if the mon in wWhichPokemon already knows the move in $d0e0 -CheckIfMoveIsKnown: ; 2fe18 (b:7e18) - ld a, [wWhichPokemon] - ld hl, W_PARTYMON1_MOVE1 +Func_3cc13: ; 3cc13 (f:4c13) + ld a, [wWhichPokemon] ; $cf92 ld bc, $2c + ld hl, wEnemyMons ; $d8a4 call AddNTimes - ld a, [$d0e0] - ld b, a - ld c, $4 ; nubmer of moves -.loop + ld de, $cfe5 + ld bc, $c + call CopyData + ld bc, $f + add hl, bc + ld de, $cff1 + ld bc, $2 + call CopyData + ld de, W_ENEMYMONPP ; $cffe + ld bc, $4 + call CopyData + ld de, W_ENEMYMONLEVEL ; $cff3 + ld bc, $b + call CopyData + ld a, [$cfe5] + ld [$d0b5], a + call GetMonHeader + ld hl, $d9ee + ld a, [wWhichPokemon] ; $cf92 + call SkipFixedLengthTextEntries + ld de, W_ENEMYMONNAME + ld bc, $b + call CopyData + ld hl, W_ENEMYMONLEVEL ; $cff3 + ld de, $cd23 + ld bc, $b + call CopyData + call Func_3ed1e + ld hl, W_MONHBASESTATS + ld de, $d002 + ld b, $5 +.asm_3cc79 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 + ld [de], a + inc de + dec b + jr nz, .asm_3cc79 + ld a, $7 + ld b, $8 + ld hl, wEnemyMonStatMods ; $cd2e +.asm_3cc86 + ld [hli], a + dec b + jr nz, .asm_3cc86 + ld a, [wWhichPokemon] ; $cf92 + ld [W_ENEMYMONNUMBER], a ; $cfe8 ret -AlreadyKnowsText: ; 2fe3b (b:7e3b) - TX_FAR _AlreadyKnowsText - db "@" +Func_3cc91: ; 3cc91 (f:4c91) + ld hl, Func_58e59 + ld b, BANK(Func_58e59) + call Bankswitch + ld hl, W_ENEMYMONCURHP ; $cfe6 + ld a, [hli] + or [hl] + jp z, Func_3cca4 + call Func_3cdec -; 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 +Func_3cca4: ; 3cca4 (f:4ca4) + call Func_3cd60 + ld a, $4 + call Predef ; indirect jump to LoadMonBackSprite (3f103 (f:7103)) + xor a + ld [$ffe1], a + ld hl, $cc2d + ld [hli], a + ld [hl], a + ld [$cc5b], a + ld [$d05b], a + ld [W_PLAYERMOVENUM], a ; $cfd2 + ld hl, $ccf1 + ld [hli], a + ld [hl], a + ld hl, $d060 + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld [W_PLAYERDISABLEDMOVE], a ; $d06d + ld [$ccee], a + ld [$ccf7], a + ld b, $1 + call GoPAL_SET + ld hl, W_ENEMYBATTSTATUS1 ; $d067 + res 5, [hl] + ld a, $1 + ld [H_WHOSETURN], a ; $fff3 + ld a, POOF_ANIM + call PlayMoveAnimation + FuncCoord 4, 11 ; $c480 + ld hl, Coord + ld a, $2 + call Predef ; indirect jump to Func_3f073 (3f073 (f:7073)) + ld a, [$cf91] + call PlayCry + call Func_3ee94 + jp SaveScreenTilesToBuffer1 -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 +Func_3ccfa: ; 3ccfa (f:4cfa) + FuncCoord 1, 5 ; $c405 + ld hl, Coord + ld bc, $707 + call ClearScreenArea + FuncCoord 3, 7 ; $c42f + ld hl, Coord + ld bc, $505 + xor a + ld [$cd6c], a + ld [H_DOWNARROWBLINKCNT1], a ; $ff8b + ld a, $5 + call Predef ; indirect jump to Func_79aba (79aba (1e:5aba)) + ld c, $4 + call DelayFrames + call Func_3cd3a + FuncCoord 4, 9 ; $c458 + ld hl, Coord + ld bc, $303 + ld a, $1 + ld [$cd6c], a + xor a + ld [H_DOWNARROWBLINKCNT1], a ; $ff8b + ld a, $5 + call Predef ; indirect jump to Func_79aba (79aba (1e:5aba)) + call Delay3 + call Func_3cd3a + ld a, $4c + FuncCoord 5, 11 ; $c481 + ld [Coord], a -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 +Func_3cd3a: ; 3cd3a (f:4d3a) + FuncCoord 1, 5 ; $c405 + ld hl, Coord + ld bc, $707 + jp ClearScreenArea -; 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) +; reads player's current mon's HP into W_PLAYERMONCURHP +ReadPlayerMonCurHPAndStatus: ; 3cd43 (f:4d43) + ld a, [wPlayerMonNumber] ; $cc2f + ld hl, W_PARTYMON1_HP ; $d16c + ld bc, W_PARTYMON2DATA - W_PARTYMON1DATA + call AddNTimes + ld d, h + ld e, l + ld hl, W_PLAYERMONCURHP ; $d015 + ld bc, $4 ; 2 bytes HP, 1 byte unknown (unused?), 1 byte status + jp CopyData + +Func_3cd5a: ; 3cd5a (f:4d5a) + call Func_3cd60 + jp Func_3cdec + +Func_3cd60: ; 3cd60 (f:4d60) + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + FuncCoord 9, 7 ; $c435 + ld hl, Coord + ld bc, $50b + call ClearScreenArea + ld hl, Func_3a902 + ld b, BANK(Func_3a902) + call Bankswitch + FuncCoord 18, 9 ; $c466 + ld hl, Coord + ld [hl], $73 + ld de, W_PLAYERMONNAME + FuncCoord 10, 7 ; $c436 + ld hl, Coord + call Func_3ce9c + call PlaceString + ld hl, W_PLAYERMONID + ld de, $cf98 + ld bc, $c + call CopyData + ld hl, W_PLAYERMONLEVEL ; $d022 + ld de, $cfb9 + ld bc, $b + call CopyData + FuncCoord 14, 8 ; $c44e + ld hl, Coord push hl - and $f - ld hl, DuplicateBitsTable - add l - ld l, a - jr nc, .noCarry - inc h -.noCarry - ld a, [hl] + inc hl + ld de, $cf9c + call PrintStatusConditionNotFainted pop hl - ld [hld], a ; write output byte twice to make it 2 pixels high - ld [hl], a - add hl, bc ; add offset + jr nz, .asm_3cdae + call PrintLevel +.asm_3cdae + ld a, [$cf98] + ld [$cf91], a + FuncCoord 10, 9 ; $c45e + ld hl, Coord + ld a, $5f + call Predef ; indirect jump to Func_128ef (128ef (4:68ef)) + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ld hl, $cf1d + call Func_3ce90 + ld hl, W_PLAYERMONCURHP ; $d015 + ld a, [hli] + or [hl] + jr z, .asm_3cdd9 + ld a, [$ccf6] + and a + ret nz + ld a, [$cf1d] + cp $2 + jr z, .asm_3cde6 +.asm_3cdd9 + ld hl, $d083 + bit 7, [hl] + ld [hl], $0 + ret z + xor a + ld [$c02a], a + ret +.asm_3cde6 + ld hl, $d083 + set 7, [hl] ret -; 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 - -_PayDayEffect ; 2feb8 (b:7eb8) +Func_3cdec: ; 3cdec (f:4dec) 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 [H_AUTOBGTRANSFERENABLED], a ; $ffba + ld hl, wTileMap + ld bc, $40c + call ClearScreenArea + ld hl, Func_3a919 + ld b, BANK(Func_3a919) + call Bankswitch + ld de, W_ENEMYMONNAME + FuncCoord 1, 0 ; $c3a1 + ld hl, Coord + call Func_3ce9c + call PlaceString + FuncCoord 4, 1 ; $c3b8 + ld hl, Coord + push hl + inc hl + ld de, W_ENEMYMONSTATUS ; $cfe9 + call PrintStatusConditionNotFainted + pop hl + jr nz, .asm_3ce23 + ld a, [W_ENEMYMONLEVEL] ; $cff3 + ld [$cfb9], a + call PrintLevel +.asm_3ce23 + ld hl, W_ENEMYMONCURHP ; $cfe6 + ld a, [hli] + ld [$ff97], a + ld a, [hld] ld [$ff98], a + or [hl] + jr nz, .asm_3ce36 + ld c, a + ld e, a + ld d, $6 + jp Func_3ce7f +.asm_3ce36 xor a - ld [$ff95], a - ld [$ff96], a - ld [$ff97], a - ld a, $64 - ld [$ff99], a - ld b, $4 - call Divide + ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) + ld a, $30 + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + call Multiply + ld hl, W_ENEMYMONMAXHP ; $cff4 + ld a, [hli] + ld b, a + ld a, [hl] + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + ld a, b + and a + jr z, .asm_3ce6a + ld a, [H_REMAINDER] ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + srl b + rr a + srl b + rr a + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + ld a, [$ff97] + ld b, a + srl b ld a, [$ff98] - ld [hli], a - ld a, [$ff99] + rr a + srl b + rr a ld [$ff98], a - ld a, $a - ld [$ff99], a - ld b, $4 - call Divide + ld a, b + ld [$ff97], a +.asm_3ce6a + ld a, [$ff97] + ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) ld a, [$ff98] - swap a + ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) + ld a, $2 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 - -PayDayText: ; 2ff04 (b:7f04) - TX_FAR _PayDayText - db "@" - -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 + call Divide + ld a, [$ff98] + ld e, a + ld a, $6 + ld d, a + ld c, a + +Func_3ce7f: ; 3ce7f (f:4e7f) xor a -.asm_2ff2e - ld [$cd3d], a + ld [wListMenuID], a ; $cf94 + FuncCoord 2, 2 ; $c3ca + ld hl, Coord + call DrawHPBar + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ld hl, $cf1e + +Func_3ce90: ; 3ce90 (f:4e90) + ld b, [hl] + call Func_3df9 + ld a, [hl] + cp b + ret z + ld b, $1 + jp GoPAL_SET + +Func_3ce9c: ; 3ce9c (f:4e9c) + push de + inc hl + inc hl + ld b, $2 +.asm_3cea1 + inc de + ld a, [de] + cp $50 + jr z, .asm_3ceb1 + inc de + ld a, [de] + cp $50 + jr z, .asm_3ceb1 + dec hl + dec b + jr nz, .asm_3cea1 +.asm_3ceb1 + pop de ret -GameCornerCoinCaseText: ; 2ff32 (b:7f32) - TX_FAR _GameCornerCoinCaseText - db "@" +InitBattleMenu: ; 3ceb3 (f:4eb3) + call LoadScreenTilesFromBuffer1 ; restore saved screen + ld a, [W_BATTLETYPE] ; $d05a + and a + jr nz, .nonstandardbattle + call Func_3cd5a ; redraw names and HP bars? + call Func_3ee94 + call SaveScreenTilesToBuffer1 +.nonstandardbattle + ld a, [W_BATTLETYPE] ; $d05a + cp $2 ; safari + ld a, $b ; safari menu id + jr nz, .menuselected + ld a, $1b ; regular menu id +.menuselected + ld [$d125], a + call DisplayTextBoxID + ld a, [W_BATTLETYPE] ; $d05a + dec a + jp nz, RegularBattleMenu ; regular battle + ; the following happens for the old man tutorial + ld hl, W_PLAYERNAME ; $d158 + ld de, W_GRASSRATE ; $d887 + ld bc, $b + call CopyData ; temporarily save the player name in unused space, + ; which is supposed to get overwritten when entering a + ; map with wild pokémon. due to an oversight, the data + ; may not get overwritten (cinnabar) and the infamous + ; missingno. glitch can show up. + ld hl, OldManName ; $4f12 + ld de, W_PLAYERNAME ; $d158 + ld bc, $b + call CopyData + ; the following simulates the keystrokes by drawing menus on screen + FuncCoord 9, 14 ; $c4c1 + ld hl, Coord + ld [hl], "▶" + ld c, $50 + call DelayFrames + ld [hl], $7f + FuncCoord 9, 16 ; $c4e9 + ld hl, Coord + ld [hl], "▶" + ld c, $32 + call DelayFrames + ld [hl], $ec + ld a, $2 + jp Func_3cfe8 -GameCornerNoCoinsText: ; 2ff37 (b:7f37) - TX_FAR _GameCornerNoCoinsText - db "@" +OldManName: ; 3cf12 (f:4f12) + db "OLD MAN@" -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" +RegularBattleMenu: ; 3cf1a (f:4f1a) + ld a, [$cc2d] + ld [wCurrentMenuItem], a ; $cc26 + ld [wLastMenuItem], a ; $cc2a + sub $2 + jr c, .leftcolumn + ld [wCurrentMenuItem], a ; $cc26 + ld [wLastMenuItem], a ; $cc2a + jr .rightcolumn +.leftcolumn + ld a, [W_BATTLETYPE] ; $d05a + cp $2 + ld a, " " + jr z, .safaribattle + FuncCoord 15, 14 ; $c4c7 + ld [Coord], a + FuncCoord 15, 16 ; $c4ef + ld [Coord], a + ld b, $9 + jr .notsafari +.safaribattle + FuncCoord 13, 14 ; $c4c5 + ld [Coord], a + FuncCoord 13, 16 ; $c4ed + ld [Coord], a + FuncCoord 7, 14 ; $c4bf + ld hl, Coord + ld de, W_NUMSAFARIBALLS ; $da47 + ld bc, $102 + call PrintNumber + ld b, $1 +.notsafari + ld hl, wTopMenuItemY ; $cc24 + ld a, $e + ld [hli], a + ld a, b + ld [hli], a + inc hl + inc hl + ld a, $1 + ld [hli], a + ld [hl], $11 + call HandleMenuInput + bit 4, a + jr nz, .rightcolumn + jr .selection +.rightcolumn + ld a, [W_BATTLETYPE] ; $d05a + cp $2 + ld a, " " + jr z, .safarirightcolumn + FuncCoord 9, 14 ; $c4c1 + ld [Coord], a + FuncCoord 9, 16 ; $c4e9 + ld [Coord], a + ld b, $f + jr .notsafarirightcolumn +.safarirightcolumn + FuncCoord 1, 14 ; $c4b9 + ld [Coord], a + FuncCoord 1, 16 ; $c4e1 + ld [Coord], a + FuncCoord 7, 14 ; $c4bf + ld hl, Coord + ld de, W_NUMSAFARIBALLS ; $da47 + ld bc, $102 + call PrintNumber + ld b, $d +.notsafarirightcolumn + ld hl, wTopMenuItemY ; $cc24 + ld a, $e + ld [hli], a + ld a, b + ld [hli], a + inc hl + inc hl + ld a, $1 + ld [hli], a + ld a, $21 + ld [hli], a + call HandleMenuInput + bit 5, a + jr nz, .leftcolumn + ld a, [wCurrentMenuItem] ; $cc26 + add $2 ; if we're in the right column, the actual id is +2 + ld [wCurrentMenuItem], a ; $cc26 +.selection + call PlaceUnfilledArrowMenuCursor + ld a, [W_BATTLETYPE] ; $d05a + cp $2 + ld a, [wCurrentMenuItem] ; $cc26 + ld [$cc2d], a + jr z, .asm_3cfd0 + cp $1 + jr nz, .asm_3cfcb + inc a + jr .asm_3cfd0 +.asm_3cfcb + cp $2 ; what + jr nz, .asm_3cfd0 + dec a +.asm_3cfd0 + and a + jr nz, Func_3cfe8 + ; first option was selected... + ld a, [W_BATTLETYPE] ; $d05a + cp $2 + jr z, .safari1 + xor a + ld [$d120], a + jp LoadScreenTilesFromBuffer1 ; restore saved screen and return?? +.safari1 ; safari first option?? + ld a, $8 + ld [$cf91], a + jr asm_3d05f -_MistEffect: ; 33f2b (c:7f2b) - ld hl, $d063 - ld a, [$fff3] +Func_3cfe8: ; 3cfe8 (f:4fe8) + cp $2 + jp nz, Func_3d0ca + ld a, [W_ISLINKBATTLE] ; $d12b + cp $4 + jr nz, .asm_3cffd + ld hl, ItemsCantBeUsedHereText + call PrintText + jp InitBattleMenu +.asm_3cffd ; bag? + call SaveScreenTilesToBuffer2 ; copy bg? + ld a, [W_BATTLETYPE] ; $d05a + cp $2 + jr nz, asm_3d00e + ld a, $15 + ld [$cf91], a + jr asm_3d05f +asm_3d00e: ; 3d00e (f:500e) + call LoadScreenTilesFromBuffer1 + ld a, [W_BATTLETYPE] ; $d05a 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 + jr nz, .asm_3d01a + call Func_3cd5a +.asm_3d01a + ld a, [W_BATTLETYPE] ; $d05a + dec a + jr nz, Func_3d031 + ld hl, OldManItemList + ld a, l + ld [$cf8b], a + ld a, h + ld [$cf8c], a + jr Func_3d03c -MistText: ; 33f52 (c:7f52) - TX_FAR _MistText - db "@" +OldManItemList: ; 3d02d (f:502d) + db $01, POKE_BALL, 50, $ff -Func_33f57: ; 33f57 (c:7f57) - ld hl, W_DAMAGE ; $d0d7 +Func_3d031 + ld hl, wNumBagItems ; $d31d + ld a, l + ld [$cf8b], a + ld a, h + ld [$cf8c], a +Func_3d03c xor a - ld [hli], a - ld [hl], a - dec a - ld [$d05e], a - ld hl, $d02a - ld de, $cffb - ld a, [H_WHOSETURN] ; $fff3 + ld [$cf93], a + ld a, $3 + ld [wListMenuID], a ; $cf94 + ld a, [$cc2c] + ld [wCurrentMenuItem], a ; $cc26 + call DisplayListMenuID + ld a, [wCurrentMenuItem] ; $cc26 + ld [$cc2c], a + ld a, $0 + ld [$cc37], a + ld [$cc35], a + jp c, InitBattleMenu +asm_3d05f: ; 3d05f (f:505f) + ld a, [$cf91] + ld [$d11e], a + call GetItemName + call CopyStringToCF4B ; copy name + xor a + ld [$d152], a + call UseItem + call Func_3ee5b + call CleanLCD_OAM + xor a + ld [wCurrentMenuItem], a ; $cc26 + ld a, [W_BATTLETYPE] ; $d05a + cp $2 + jr z, .asm_3d09c + ld a, [$cd6a] + and a + jp z, asm_3d00e + ld a, [W_PLAYERBATTSTATUS1] ; $d062 + bit 5, a + jr z, .asm_3d09c + ld hl, $d06a + dec [hl] + jr nz, .asm_3d09c + ld hl, W_PLAYERBATTSTATUS1 ; $d062 + res 5, [hl] +.asm_3d09c + ld a, [$d11c] + and a + jr nz, .asm_3d0b7 + ld a, [W_BATTLETYPE] ; $d05a + cp $2 + jr z, .asm_3d0b2 + call LoadScreenTilesFromBuffer1 + call Func_3cd5a ; redraw name and hp bar? + call Delay3 +.asm_3d0b2 + call GBPalNormal 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 +.asm_3d0b7 + call GBPalNormal + xor a + ld [$d11c], a + ld a, $2 + ld [$cf0b], a + scf 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" - - -TitleScroll_WaitBall: ; 37244 (d:7244) -; Wait around for the TitleBall animation to play out. -; hi: speed -; lo: duration - db $05, $05, 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 +ItemsCantBeUsedHereText: ; 3d0c5 (f:50c5) + TX_FAR _ItemsCantBeUsedHereText + db "@" -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 +Func_3d0ca: ; 3d0ca (f:50ca) + dec a + jp nz, Func_3d1fa + call SaveScreenTilesToBuffer2 + ld a, [W_BATTLETYPE] ; $d05a + cp $2 + jr nz, Func_3d0e0 + ld a, $16 + ld [$cf91], a + jp asm_3d05f -TitleScroll: ; 37258 (d:7258) - ld a, d +Func_3d0e0: ; 3d0e0 (f:50e0) + call LoadScreenTilesFromBuffer1 + xor a + ld [$d07d], a + ld [$cc35], a + call DisplayPartyMenu +asm_3d0ed: ; 3d0ed (f:50ed) + jp nc, Func_3d119 +asm_3d0f0: ; 3d0f0 (f:50f0) + call CleanLCD_OAM + call GBPalWhiteOut + call Func_3ee5b + call LoadScreenTilesFromBuffer2 + call GoPAL_SET_CF1C + call GBPalNormal + jp InitBattleMenu - ld bc, TitleScroll_In - ld d, $88 - ld e, 0 ; don't animate titleball +Func_3d105: ; 3d105 (f:5105) + FuncCoord 11, 11 ; $c487 + ld hl, Coord + ld bc, $81 + ld a, $7f + call FillMemory + xor a + ld [$d07d], a + call GoBackToPartyMenu + jr asm_3d0ed +Func_3d119: ; 3d119 (f:5119) + ld a, $c + ld [$d125], a + call DisplayTextBoxID + ld hl, wTopMenuItemY ; $cc24 + ld a, $c + ld [hli], a + ld [hli], a + xor a + ld [hli], a + inc hl + ld a, $2 + ld [hli], a + ld a, $3 + ld [hli], a + xor a + ld [hl], a + call HandleMenuInput + bit 1, a + jr nz, Func_3d105 + call PlaceUnfilledArrowMenuCursor + ld a, [wCurrentMenuItem] ; $cc26 + cp $2 + jr z, asm_3d0f0 and a - jr nz, .ok - - ld bc, TitleScroll_Out - ld d, $00 - ld e, 0 ; don't animate titleball -.ok - -_TitleScroll: ; 3726a (d:726a) - ld a, [bc] + jr z, .asm_3d18a + xor a + ld [$cc49], a + ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) + call CleanLCD_OAM + ld a, $36 + call Predef ; indirect jump to StatusScreen (12953 (4:6953)) + ld a, $37 + call Predef ; indirect jump to StatusScreen2 (12b57 (4:6b57)) + ld a, [W_ENEMYBATTSTATUS2] ; $d068 + bit 4, a + ld hl, AnimationSubstitute + jr nz, .asm_3d182 + ld a, [$ccf3] and a - ret z - - inc bc - push bc - - ld b, a - and $f - ld c, a - ld a, b - and $f0 - swap a - ld b, a - -.loop - ld h, d - ld l, $48 - call .ScrollBetween - - ld h, $00 - ld l, $88 - call .ScrollBetween - - ld a, d - add b + ld hl, AnimationMinimizeMon + jr nz, .asm_3d182 + ld a, [$cfe5] + ld [$cf91], a + ld [$d0b5], a + call GetMonHeader + ld de, $9000 + call LoadMonFrontSprite + jr .asm_3d187 +.asm_3d182 + ld b, BANK(AnimationSubstitute) ; BANK(AnimationMinimizeMon) + call Bankswitch +.asm_3d187 + jp Func_3d0e0 +.asm_3d18a + ld a, [wPlayerMonNumber] ; $cc2f ld d, a + ld a, [wWhichPokemon] ; $cf92 + cp d + jr nz, .asm_3d19d + ld hl, AlreadyOutText + call PrintText + jp Func_3d105 +.asm_3d19d + call Func_3ca97 + jp z, Func_3d105 + ld a, $1 + ld [$cd6a], a + call GBPalWhiteOut + call CleanLCD_OAM + call Func_3ee5b + call LoadScreenTilesFromBuffer1 + call GoPAL_SET_CF1C + call GBPalNormal - call GetTitleBallY - dec c - jr nz, .loop - +Func_3d1ba: ; 3d1ba (f:51ba) + ld hl, Func_58ed1 + ld b, BANK(Func_58ed1) + call Bankswitch + ld c, $32 + call DelayFrames + call Func_3ccfa + ld a, [wWhichPokemon] ; $cf92 + ld [wPlayerMonNumber], a ; $cc2f + ld c, a + ld b, $1 + push bc + ld hl, W_PLAYERMONSALIVEFLAGS + ld a, $10 + call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) pop bc - jr _TitleScroll - -.ScrollBetween ; 37292 (d:7292) -.wait - ld a, [$ff44] ; rLY - cp l - jr nz, .wait - - ld a, h - ld [rSCX], a ; $ff43 - -.wait2 - ld a, [$ff44] ; rLY - cp h - jr z, .wait2 + ld hl, $ccf5 + ld a, $10 + call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) + call Func_3cba6 + call Func_3cc91 + call SaveScreenTilesToBuffer1 + ld a, $2 + ld [wCurrentMenuItem], a ; $cc26 + and a ret -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 +AlreadyOutText: ; 3d1f5 (f:51f5) + TX_FAR _AlreadyOutText + db "@" -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 +Func_3d1fa: ; 3d1fa (f:51fa) + call LoadScreenTilesFromBuffer1 + ld a, $3 + ld [wCurrentMenuItem], a ; $cc26 + ld hl, W_PLAYERMONSPEED + ld de, W_ENEMYMONSPEED + call Func_3cab9 + ld a, $0 + ld [$d11f], a + ret c + ld a, [$cd6a] + and a ret nz -.ok - ld e, 1 ; animate titleball - ld bc, TitleScroll_WaitBall - ld d, 0 - jp _TitleScroll + jp InitBattleMenu -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 +MoveSelectionMenu: ; 3d219 (f:5219) + ld a, [wMoveMenuType] + dec a + jr z, .mimicmenu + dec a + jr z, .relearnmenu + jr .regularmenu + +.loadmoves + ld de, $d0dc + ld bc, $4 + call CopyData + ld hl, Func_39b87 + ld b, BANK(Func_39b87) + call Bankswitch ret -Func_372d6: ; 372d6 (d:72d6) - call LoadTextBoxTilePatterns - FuncCoord 3, 4 ; $c3f3 +.writemoves + ld de, $d0e1 + ld a, [$fff6] + set 2, a + ld [$fff6], a + call PlaceString + ld a, [$fff6] + res 2, a + ld [$fff6], a + ret + +.regularmenu + call Func_3d3f5 + ret z + ld hl, W_PLAYERMONMOVES + call .loadmoves + FuncCoord 4, 12 ; $c494 ld hl, Coord - ld b, $7 - ld c, $c + ld b, $4 + ld c, $e + di call TextBoxBorder - FuncCoord 4, 5 ; $c408 + FuncCoord 4, 12 ; $c494 ld hl, Coord - ld de, W_PLAYERNAME ; $d158 - call PlaceString - FuncCoord 4, 10 ; $c46c + ld [hl], $7a + FuncCoord 10, 12 ; $c49a ld hl, Coord - ld de, W_GRASSRATE ; $d887 - call PlaceString - FuncCoord 9, 8 ; $c449 + ld [hl], $7e + ei + FuncCoord 6, 13 ; $c4aa 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 - call Predef - call GBPalWhiteOutWithDelay3 - call LoadSlotMachineTiles - call LoadFontTilePatterns + call .writemoves 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 - -PlaySlotMachineText: ; 37390 (d:7390) - TX_FAR _PlaySlotMachineText - db "@" - -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 + jr .menuset +.mimicmenu + ld hl, W_ENEMYMONMOVES + call .loadmoves + FuncCoord 0, 7 ; $c42c + ld hl, Coord + ld b, $4 + ld c, $e + call TextBoxBorder + FuncCoord 2, 8 ; $c442 + ld hl, Coord + call .writemoves + ld b, $1 + ld a, $7 + jr .menuset +.relearnmenu + ld a, [wWhichPokemon] ; $cf92 + ld hl, W_PARTYMON1_MOVE1 ; $d173 + ld bc, $2c + call AddNTimes + call .loadmoves + FuncCoord 4, 7 ; $c430 + ld hl, Coord + ld b, $4 + ld c, $e + call TextBoxBorder + FuncCoord 6, 8 ; $c446 + ld hl, Coord + call .writemoves + ld b, $5 + ld a, $7 +.menuset + ld hl, wTopMenuItemY ; $cc24 + ld [hli], a + ld a, b + ld [hli], a ; wTopMenuItemX + ld a, [wMoveMenuType] + cp $1 + jr z, .selectedmoveknown + ld a, $1 + jr nc, .selectedmoveknown + ld a, [wPlayerMoveListIndex] ; $cc2e + inc a +.selectedmoveknown + ld [hli], a ; wCurrentMenuItem + inc hl ; wTileBehindCursor untouched + ld a, [$cd6c] + inc a + inc a + ld [hli], a ; wMaxMenuItem + ld a, [wMoveMenuType] + dec a + ld b, $c1 ; can't use B + jr z, .matchedkeyspicked + dec a + ld b, $c3 + jr z, .matchedkeyspicked + ld a, [W_ISLINKBATTLE] ; $d12b + cp $4 + jr z, .matchedkeyspicked + ld a, [W_FLAGS_D733] + bit 0, a + ld b, $c7 + jr z, .matchedkeyspicked + ld b, $ff +.matchedkeyspicked + ld a, b + ld [hli], a ; wMenuWatchedKeys + ld a, [wMoveMenuType] + cp $1 + jr z, .movelistindex1 + ld a, [wPlayerMoveListIndex] ; $cc2e + inc a +.movelistindex1 + ld [hl], a ; wLastMenuItem + +Func_3d2fe: ; 3d2fe (f:52fe) + ld a, [wMoveMenuType] + and a + jr z, .battleselect + dec a + jr nz, .select + FuncCoord 1, 14 ; $c4b9 + ld hl, Coord + ld de, WhichTechniqueString ; $53b8 call PlaceString + jr .select +.battleselect + ld a, [W_FLAGS_D733] + bit 0, a + jr nz, .select + call Func_3d4b6 + ld a, [$cc35] + and a + jr z, .select + FuncCoord 5, 13 ; $c4a9 + ld hl, Coord + dec a + ld bc, $14 + call AddNTimes + ld [hl], $ec +.select + ld hl, $fff6 + set 1, [hl] call HandleMenuInput - and $2 - jp nz, LoadScreenTilesFromBuffer1 - ld a, [wCurrentMenuItem] + ld hl, $fff6 + res 1, [hl] + bit 6, a + jp nz, Func_3d3c9 ; up + bit 7, a + jp nz, Func_3d3dd ; down + bit 2, a + jp nz, Func_3d435 ; select + bit 1, a ; B, but was it reset above? + push af + xor a + ld [$cc35], a + ld a, [wCurrentMenuItem] ; $cc26 + dec a + ld [wCurrentMenuItem], a ; $cc26 ld b, a - ld a, $3 - sub b - ld [$cd50], a - ld hl, wPlayerCoins + ld a, [wMoveMenuType] + dec a ; if not mimic + jr nz, .nob + pop af + ret +.nob + dec a + ld a, b + ld [wPlayerMoveListIndex], a ; $cc2e + jr nz, .moveselected + pop af + ret +.moveselected + pop af + ret nz + ld hl, W_PLAYERMONPP ; $d02d + ld a, [wCurrentMenuItem] ; $cc26 ld c, a - ld a, [hli] - and a - jr nz, .skip1 + ld b, $0 + add hl, bc ld a, [hl] + and $3f + jr z, .nopp + ld a, [W_PLAYERDISABLEDMOVE] ; $d06d + swap a + and $f + dec a cp c - jr nc, .skip1 - ld hl, NotEnoughCoinsSlotMachineText + jr z, .disabled + ld a, [W_PLAYERBATTSTATUS3] ; $d064 + bit 3, a ; transformed + jr nz, .dummy ; game freak derp +.dummy + ld a, [wCurrentMenuItem] ; $cc26 + ld hl, W_PLAYERMONMOVES + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + ld [wPlayerSelectedMove], a ; $ccdc + xor a + ret +.disabled + ld hl, MoveDisabledText + jr .print +.nopp + ld hl, MoveNoPPText +.print 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 - -CoinMultiplierSlotMachineText: ; 3745e (d:745e) - db "×3" - next "×2" - next "×1@" - -OutOfCoinsSlotMachineText: ; 37467 (d:7467) - TX_FAR _OutOfCoinsSlotMachineText - db "@" - -BetHowManySlotMachineText: ; 3746c (d:746c) - TX_FAR _BetHowManySlotMachineText - db "@" + jp MoveSelectionMenu -StartSlotMachineText: ; 37471 (d:7471) - TX_FAR _StartSlotMachineText +MoveNoPPText: ; 3d3ae (f:53ae) + TX_FAR _MoveNoPPText db "@" -NotEnoughCoinsSlotMachineText: ; 37476 (d:7476) - TX_FAR _NotEnoughCoinsSlotMachineText +MoveDisabledText: ; 3d3b3 (f:53b3) + TX_FAR _MoveDisabledText db "@" -OneMoreGoSlotMachineText: ; 3747b (d:747b) - TX_FAR _OneMoreGoSlotMachineText - db "@" +WhichTechniqueString: ; 3d3b8 (f:53b8) + db "WHICH TECHNIQUE?@" -Func_37480: ; 37480 (d:7480) - ld hl, $cd4c - bit 7, [hl] - ret nz - ld a, [W_SUBANIMSUBENTRYADDR] - and a - jr nz, .skip1 - call GenRandom +Func_3d3c9: ; 3d3c9 (f:53c9) + ld a, [wCurrentMenuItem] ; $cc26 and a - jr z, .skip2 + jp nz, Func_3d2fe + call EraseMenuCursor + ld a, [$cd6c] + inc a + ld [wCurrentMenuItem], a ; $cc26 + jp Func_3d2fe + +Func_3d3dd: ; 3d3dd (f:53dd) + ld a, [wCurrentMenuItem] ; $cc26 ld b, a - ld a, [$cc5b] - cp b - jr c, .skip3 - ld a, $d2 + ld a, [$cd6c] + inc a + inc a 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 + jp nz, Func_3d2fe + call EraseMenuCursor + ld a, $1 + ld [wCurrentMenuItem], a ; $cc26 + jp Func_3d2fe -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 +Func_3d3f5: ; 3d3f5 (f:53f5) + ld a, $a5 + ld [wPlayerSelectedMove], a ; $ccdc + ld a, [W_PLAYERDISABLEDMOVE] ; $d06d + and a + ld hl, W_PLAYERMONPP ; $d02d + jr nz, .asm_3d40e + ld a, [hli] + or [hl] + inc hl + or [hl] + inc hl + or [hl] + and $3f + ret nz + jr .asm_3d423 +.asm_3d40e + swap a + and $f + ld b, a + ld d, $5 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 - -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] +.asm_3d416 + dec d + jr z, .asm_3d421 + ld c, [hl] + inc hl + dec b + jr z, .asm_3d416 + or c + jr .asm_3d416 +.asm_3d421 and a - ret z - dec [hl] - call Func_3752c ret nz -.skip - jp Func_37813 +.asm_3d423 + ld hl, NoMovesLeftText + call PrintText + ld c, $3c + call DelayFrames + xor a + ret -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 +NoMovesLeftText: ; 3d430 (f:5430) + TX_FAR _NoMovesLeftText + 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 +Func_3d435: ; 3d435 (f:5435) + ld a, [$cc35] and a - ret - -Func_3752c: ; 3752c (d:752c) - call Func_376c0 - ld hl, wTrainerScreenX - ld a, [$cd4c] - and $80 - jr nz, .skip1 - inc hl + jr z, asm_3d4ad + ld hl, W_PLAYERMONMOVES + call Func_3d493 + ld hl, W_PLAYERMONPP ; $d02d + call Func_3d493 + ld hl, W_PLAYERDISABLEDMOVE ; $d06d 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 + swap a + and $f + ld b, a + ld a, [wCurrentMenuItem] ; $cc26 + cp b + jr nz, .asm_3d463 + ld a, [hl] + and $f + ld b, a + ld a, [$cc35] + swap a + add b + ld [hl], a + jr .asm_3d474 +.asm_3d463 + ld a, [$cc35] + cp b + jr nz, .asm_3d474 + ld a, [hl] + and $f + ld b, a + ld a, [wCurrentMenuItem] ; $cc26 + swap a + add b + ld [hl], a +.asm_3d474 + ld hl, W_PARTYMON1_MOVE1 ; $d173 + ld a, [wPlayerMonNumber] ; $cc2f + ld bc, $2c + call AddNTimes + push hl + call Func_3d493 + pop hl + ld bc, $15 + add hl, bc + call Func_3d493 + xor a + ld [$cc35], a + jp MoveSelectionMenu -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 +Func_3d493: ; 3d493 (f:5493) + push hl + ld a, [$cc35] + dec a + ld c, a + ld b, $0 + add hl, bc + ld d, h + ld e, l + pop hl + ld a, [wCurrentMenuItem] ; $cc26 + dec a + ld c, a + ld b, $0 + add hl, bc ld a, [de] - cp $7 - ret nc -.skip2 - xor a - ld [$cd4e], a + ld b, [hl] + ld [hl], a + ld a, b + ld [de], a ret +asm_3d4ad: ; 3d4ad (f:54ad) + ld a, [wCurrentMenuItem] ; $cc26 + ld [$cc35], a + jp MoveSelectionMenu -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 - -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 +Func_3d4b6: ; 3d4b6 (f:54b6) + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + FuncCoord 0, 8 ; $c440 + ld hl, Coord + ld b, $3 + ld c, $9 + call TextBoxBorder + ld a, [W_PLAYERDISABLEDMOVE] ; $d06d + and a + jr z, .asm_3d4df + swap a + and $f + ld b, a + ld a, [wCurrentMenuItem] ; $cc26 + cp b + jr nz, .asm_3d4df + FuncCoord 1, 10 ; $c469 + ld hl, Coord + ld de, DisabledText + call PlaceString + jr .asm_3d54e +.asm_3d4df + ld hl, wCurrentMenuItem ; $cc26 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 [H_WHOSETURN], a ; $fff3 + ld hl, W_PLAYERMONMOVES + ld a, [wCurrentMenuItem] ; $cc26 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] - -.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 - -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 - -LinedUpText: ; 37673 (d:7673) - TX_FAR _LinedUpText - 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 - -SlotReward300Text: ; 37690 (d:7690) - db "300@" - -SlotReward100Text: ; 37694 (d:7694) - db "100@" - -SlotReward8Text: ; 37698 (d:7698) - db "8@" - -SlotReward15Text: ; 3769a (d:769a) - db "15@" - -NotThisTimeText: ; 3769d (d:769d) - TX_FAR _NotThisTimeText - db "@" - -Func_376a2: ; 376a2 (d:76a2) - ld a, [de] - cp [hl] - ret nz - ld a, [bc] - cp [hl] - ret - -Func_376a8: ; 376a8 (d:76a8) - ld de, $cd47 - ld hl, SlotMachineWheel3 - ld a, [wTrainerScreenY] - call Func_376c9 + ld a, [hl] + ld [wPlayerSelectedMove], a ; $ccdc + ld a, [wPlayerMonNumber] ; $cc2f + ld [wWhichPokemon], a ; $cf92 + ld a, $4 + ld [$cc49], a + ld hl, GetMaxPP + ld b, BANK(GetMaxPP) + call Bankswitch + ld hl, wCurrentMenuItem ; $cc26 + ld c, [hl] + inc [hl] + ld b, $0 + ld hl, W_PLAYERMONPP ; $d02d + add hl, bc + ld a, [hl] + and $3f + ld [$cd6d], a + FuncCoord 1, 9 ; $c455 + ld hl, Coord + ld de, TypeText + call PlaceString + FuncCoord 7, 11 ; $c483 + ld hl, Coord + ld [hl], "/" + FuncCoord 5, 9 ; $c459 + ld hl, Coord + ld [hl], "/" + FuncCoord 5, 11 ; $c481 + ld hl, Coord + ld de, $cd6d + ld bc, $102 + call PrintNumber + FuncCoord 8, 11 ; $c484 + ld hl, Coord + ld de, $d11e + ld bc, $102 + call PrintNumber + call GetCurrentMove + FuncCoord 2, 10 ; $c46a + ld hl, Coord + ld a, $5d + call Predef ; indirect jump to Func_27d98 (27d98 (9:7d98)) +.asm_3d54e + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + jp Delay3 -Func_376b4: ; 376b4 (d:76b4) - ld de, $cd44 - ld hl, SlotMachineWheel2 - ld a, [wTrainerFacingDirection] - call Func_376c9 +DisabledText: ; 3d555 (f:5555) + db "disabled!@" -Func_376c0: ; 376c0 (d:76c0) - ld de, wTrainerScreenX - ld hl, SlotMachineWheel1 - ld a, [wTrainerEngageDistance] +TypeText: ; 3d55f (f:555f) + db "TYPE@" -Func_376c9: ; 376c9 (d:76c9) +SelectEnemyMove: ; 3d564 (f:5564) + ld a, [W_ISLINKBATTLE] + sub $4 + jr nz, .noLinkBattle + call SaveScreenTilesToBuffer1 + call Func_3d605 + call LoadScreenTilesFromBuffer1 + ld a, [$cc3e] + cp $e + jp z, .asm_3d601 + cp $d + jr z, .unableToMove + cp $4 + ret nc + ld [$cce2], a ld c, a + ld hl, W_ENEMYMONMOVES 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 - -SlotReward8Func: ; 376d7 (d:76d7) - ld hl, W_SUBANIMSUBENTRYADDR ld a, [hl] + jr .done +.noLinkBattle + ld a, [W_ENEMYBATTSTATUS2] + and $60 ; need to recharge or using rage + ret nz + ld hl, W_ENEMYBATTSTATUS1 + ld a, [hl] + and $12 ; using multi-turn move or bide + ret nz + ld a, [W_ENEMYMONSTATUS] + and SLP | FRZ ; sleeping or frozen + ret nz + ld a, [W_ENEMYBATTSTATUS1] + and $21 ; using fly/dig or thrash/petal dance + ret nz + ld a, [W_PLAYERBATTSTATUS1] + bit 5, a ; caught in player's multi-turn move (e.g. wrap) + jr z, .notCaughtInWrap +.unableToMove + ld a, $ff + jr .done +.notCaughtInWrap + ld hl, W_ENEMYMONMOVES+1 ; 2nd enemy move + ld a, [hld] and a - jr z, .skip - dec [hl] -.skip - ld b, $2 - ld de, 8 - ret - -SlotReward15Func: ; 376e5 (d:76e5) - ld hl, W_SUBANIMSUBENTRYADDR + jr nz, .atLeastTwoMovesAvailable + ld a, [W_ENEMYDISABLEDMOVE] + and a + ld a, STRUGGLE ; struggle if the only move is disabled + jr nz, .done +.atLeastTwoMovesAvailable + ld a, [W_ISINBATTLE] + dec a + jr z, .chooseRandomMove ; wild encounter + ld hl, AIEnemyTrainerChooseMoves + ld b, BANK(AIEnemyTrainerChooseMoves) + call Bankswitch +.chooseRandomMove + push hl + call GenRandomInBattle ; get random + ld b, $1 + cp $3f ; select move 1 in [0,3e] (63/256 chance) + jr c, .moveChosen + inc hl + inc b + cp $7f ; select move 1 in [3f,7e] (64/256 chance) + jr c, .moveChosen + inc hl + inc b + cp $be ; select move 1 in [7f,bd] (63/256 chance) + jr c, .moveChosen + inc hl + inc b ; select move 4 in [be,ff] (66/256 chance) +.moveChosen + ld a, b + dec a + ld [wEnemyMoveListIndex], a + ld a, [W_ENEMYDISABLEDMOVE] + swap a + and $f + cp b ld a, [hl] + pop hl + jr z, .chooseRandomMove ; move disabled, try again and a - jr z, .skip - dec [hl] -.skip - ld b, $4 - ld de, 15 - ret - -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 - -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 + jr z, .chooseRandomMove ; move non-existant, try again +.done + ld [wEnemySelectedMove], a ret +.asm_3d601 + ld a, $a5 + jr .done -YeahText: ; 37722 (d:7722) - TX_FAR _YeahText - db $0a, "@" - -Func_37728: ; 37728 (d:7728) - ld hl, $c4ba - ld a, [wTrainerScreenX] - add $25 - ld [hli], a - inc a - ld [hld], a +Func_3d605: ; 3d605 (f:5605) + ld a, $ff + ld [$cc3e], a + ld a, [wPlayerMoveListIndex] ; $cc2e + cp $f + jr z, .asm_3d630 + ld a, [$cd6a] + and a + jr nz, .asm_3d629 + ld a, [wPlayerSelectedMove] ; $ccdc + cp $a5 + ld b, $e + jr z, .asm_3d62f + dec b inc a - ld de, $ffec - add hl, de - ld [hli], a + jr z, .asm_3d62f + ld a, [wPlayerMoveListIndex] ; $cc2e + jr .asm_3d630 +.asm_3d629 + ld a, [wWhichPokemon] ; $cf92 + add $4 + ld b, a +.asm_3d62f + ld a, b +.asm_3d630 + ld [$cc42], a + ld hl, Func_4c05 + ld b, BANK(Func_4c05) + call Bankswitch +.asm_3d63b + call Func_22c3 + call DelayFrame + ld a, [$cc3e] inc a - ld [hl], a - ld hl, $c4f2 - ld [hl], $ee + jr z, .asm_3d63b + ld b, $a +.asm_3d649 + call DelayFrame + call Func_22c3 + dec b + jr nz, .asm_3d649 + ld b, $a +.asm_3d654 + call DelayFrame + call Func_22ed + dec b + jr nz, .asm_3d654 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 - -Func_37754: ; 37754 (d:7754) - ld hl, $c3b9 - ld de, wPlayerCoins - ld c, $2 - jp PrintBCDNumber - -Func_3775f: ; 3775f (d:775f) - ld hl, $c3bf - ld de, $cd4a - ld bc, $8204 - jp PrintNumber - -Func_3776b: ; 3776b (d:776b) - ld a, $1 - ld [$c002], a - call WaitForSoundToFinish - ld hl, $cd46 +Func_3d65e: ; 3d65e (f:565e) xor a - ld [hli], a + ld [H_WHOSETURN], a ; $fff3 + ld a, [wPlayerSelectedMove] ; $ccdc 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 + jp z, Func_3d80a + xor a + ld [W_MOVEMISSED], a ; $d05f + ld [$cced], a + ld [$ccf4], a + ld a, $a + ld [$d05b], a + ld a, [$cd6a] + and a + jp nz, Func_3d80a + call PrintGhostText + jp z, Func_3d80a + call Func_3d854 + jr nz, .asm_3d68a + jp [hl] +.asm_3d68a + call GetCurrentMove + ld hl, W_PLAYERBATTSTATUS1 ; $d062 + bit 4, [hl] + jr nz, asm_3d6a9 + call Func_3dc88 + jp z, Func_3d80a -Func_377ce: ; 377ce (d:77ce) - ld a, $23 - ld [$d08a], a - jr Func_377e3 +Func_3d69a: ; 3d69a (f:569a) + ld a, [W_PLAYERMOVEEFFECT] ; $cfd3 + cp $27 + jp z, Func_3f132 + cp $2b + jp z, Func_3f132 + jr asm_3d6b0 -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 +; in-battle stuff +asm_3d6a9: ; 3d6a9 (f:56a9) + ld hl,W_PLAYERBATTSTATUS1 + res 4,[hl] + res 6,[hl] +asm_3d6b0: ; 3d6b0 (f:56b0) + call PrintMonName1Text + ld hl,DecrementPP + ld de,$CCDC ; pointer to the move just used + ld b,BANK(DecrementPP) + call Bankswitch + ld a,[W_PLAYERMOVEEFFECT] ; effect of the move just used + ld hl,EffectsArray1 + ld de,1 + call IsInArray + jp c,Func_3f132 + ld a,[W_PLAYERMOVEEFFECT] + ld hl,EffectsArray5B + ld de,1 + call IsInArray + call c,Func_3f132 +asm_3d6dc: ; 3d6dc (f:56dc) + ld a,[W_PLAYERMOVEEFFECT] + ld hl,EffectsArray2 + ld de,1 + call IsInArray + jp c,.asm_3d702 + call CriticalHitTest + call HandleCounterMove + jr z,asm_3d705 + call CalculateDamage + call MoreCalculateDamage + jp z,asm_3d74b + call AdjustDamageForMoveType + call Func_3e687 +.asm_3d702 + call MoveHitTest +asm_3d705 + ld a,[W_MOVEMISSED] + and a + jr z,asm_3d714 + ld a,[W_PLAYERMOVEEFFECT] + sub a,7 + jr z,asm_3d71e + jr asm_3d74b ; 574B +asm_3d714 + ld a,[W_PLAYERMOVEEFFECT] + and a + ld a,4 + jr z,asm_3d71e + ld a,5 +asm_3d71e + push af + ld a,[W_PLAYERBATTSTATUS2] + bit 4,a + ld hl,Func_79747 + ld b,BANK(Func_79747) + call nz,Bankswitch + pop af + ld [$CC5B],a + ld a,[W_PLAYERMOVENUM] + call PlayMoveAnimation + call Func_3eed3 + call Func_3cd60 + ld a,[W_PLAYERBATTSTATUS2] + bit 4,a + ld hl,Func_79771 + ld b,BANK(Func_79771) + call nz,Bankswitch + jr asm_3d766 +asm_3d74b + ld c,$1E + call DelayFrames + ld a,[W_PLAYERMOVEEFFECT] + cp a,$2B + jr z,.next5 + cp a,$27 ; XXX SLP | FRZ ? + jr z,.next5 + jr asm_3d766 +.next5 + xor a + ld [$CC5B],a + ld a,STATUS_AFFECTED_ANIM + call PlayMoveAnimation +asm_3d766 + ld a,[W_PLAYERMOVEEFFECT] + cp a,9 + jr nz,.next6 ; 577A + call MirrorMoveCopyMove + jp z,Func_3d80a + xor a + ld [$CCED],a + jp Func_3d69a +.next6 + cp a,$53 + jr nz,.next7 ; 5784 + call MetronomePickMove + jp Func_3d69a +.next7 + ld a,[W_PLAYERMOVEEFFECT] + ld hl,EffectsArray3 + ld de,1 + call IsInArray + jp c,Func_3f132 + ld a,[W_MOVEMISSED] + and a + jr z,.next8 ; 57A6 + call PrintMoveFailureText + ld a,[W_PLAYERMOVEEFFECT] + cp a,7 + jr z,.next9 ; 57B9 + jp Func_3d80a +.next8 + call ApplyAttackToEnemyPokemon + call Func_3dc5c + ld hl, DisplayEffectiveness ; MyFunction + ld b, BANK(DisplayEffectiveness) ; BANK(MyFunction) + call Bankswitch + ld a,1 + ld [$CCF4],a +.next9 + ld a,[W_PLAYERMOVEEFFECT] + ld hl,EffectsArray4 + ld de,1 + call IsInArray + call c,Func_3f132 + ld hl,$CFE6 + ld a,[hli] + ld b,[hl] + or b + ret z + call HandleBuildingRage -Func_377e3: ; 377e3 (d:77e3) - ld hl, $c3cb - call Func_377fe - ld hl, $c46b - call Func_377fe + ld hl,W_PLAYERBATTSTATUS1 + bit 2,[hl] + jr z,.next10 ; 57EF + ld a,[$D06A] + dec a + ld [$D06A],a + jp nz,asm_3d714 -Func_377ef: ; 377ef (d:77ef) - ld hl, $c3f3 - call Func_377fe - ld hl, $c443 - call Func_377fe + res 2,[hl] + ld hl,MultiHitText + call PrintText + xor a + ld [W_NUMHITS],a ; reset +.next10 + ld a,[W_PLAYERMOVEEFFECT] + and a + jp z,Func_3d80a + ld hl,EffectsArray5 + ld de,1 + call IsInArray + call nc,Func_3f132 + jp Func_3d80a -Func_377fb: ; 377fb (d:77fb) - ld hl, $c41b +MultiHitText: ; 3d805 (f:5805) + TX_FAR _MultiHitText + db "@" -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 +Func_3d80a: ; 3d80a (f:580a) + xor a + ld [$CD6A],a + ld b,1 ret -Func_37813: ; 37813 (d:7813) - ld bc, SlotMachineWheel1 - ld de, wTrainerEngageDistance - ld hl, wOAMBuffer - ld a, $30 - ld [W_BASECOORDX], a - jr Func_37841 - -Func_37823: ; 37823 (d:7823) - ld bc, SlotMachineWheel2 - ld de, wTrainerFacingDirection - ld hl, $c330 - ld a, $50 - ld [W_BASECOORDX], a - jr Func_37841 +PrintGhostText: ; 3d811 (f:5811) +; print the ghost battle messages + call IsGhostBattle + ret nz + ld a,[H_WHOSETURN] + and a + jr nz,.Ghost + ld a,[W_PLAYERMONSTATUS] ; player’s turn + and a,SLP | FRZ + ret nz + ld hl,ScaredText + call PrintText + xor a + ret +.Ghost ; ghost’s turn + ld hl,GetOutText + call PrintText + xor a + ret -Func_37833: ; 37833 (d:7833) - ld bc, SlotMachineWheel3 - ld de, wTrainerScreenY - ld hl, $c360 - ld a, $70 - ld [W_BASECOORDX], a +ScaredText: ; 3d830 (f:5830) + TX_FAR _ScaredText + 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 +GetOutText: ; 3d835 (f:5835) + TX_FAR _GetOutText + 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 +IsGhostBattle: ; 3d83a (f:583a) + ld a,[W_ISINBATTLE] + dec a + ret nz + ld a,[W_CURMAP] + cp a,POKEMONTOWER_1 + jr c,.next + cp a,LAVENDER_HOUSE_1 + jr nc,.next + ld b,SILPH_SCOPE + call IsItemInBag ; $3493 + ret z +.next + ld a,1 + and a ret -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 +Func_3d854: ; 3d854 (f:5854) + ld hl,W_PLAYERMONSTATUS + ld a,[hl] + and a,SLP + jr z,.FrozenCheck ; to 5884 + 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] + ld [W_PLAYERMONSTATUS],a ; decrement sleep count and a - ret nz - jr .loop - -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 + jr z,.WakeUp ; to 5874 -SlotMachineMap: ; 378f5 (d:78f5) - INCBIN "gfx/tilemaps/slotmachine.map" + xor a + ld [$CC5B],a + ld a,SLP_ANIM - 1 + call PlayMoveAnimation + ld hl,FastAsleepText + call PrintText + jr .sleepDone +.WakeUp + ld hl,WokeUpText + call PrintText +.sleepDone + xor a + ld [$CCF1],a + ld hl,Func_3d80a + jp Func_3da37 -SLOTS7 EQU $0200 -SLOTSBAR EQU $0604 -SLOTSCHERRY EQU $0A08 -SLOTSFISH EQU $0E0C -SLOTSBIRD EQU $1210 -SLOTSMOUSE EQU $1614 +.FrozenCheck + bit 5,[hl] ; frozen? + jr z,.HeldInPlaceCheck ; to 5898 + ld hl,IsFrozenText + call PrintText + xor a + ld [$CCF1],a + ld hl,Func_3d80a + jp Func_3da37 -INCLUDE "data/slot_machine_wheels.asm" +.HeldInPlaceCheck + ld a,[W_ENEMYBATTSTATUS1] + bit 5,a + jp z,FlinchedCheck + ld hl,CantMoveText + call PrintText + ld hl,Func_3d80a + jp Func_3da37 -SlotMachineTiles1: ; 37a51 (d:7a51) -IF _RED - INCBIN "gfx/red/slotmachine1.2bpp" -ENDC -IF _BLUE - INCBIN "gfx/blue/slotmachine1.2bpp" -ENDC +FlinchedCheck: ; 3d8ac (f:58ac) + ld hl,W_PLAYERBATTSTATUS1 + bit 3,[hl] + jp z,HyperBeamCheck + res 3,[hl] + ld hl,FlinchedText + call PrintText + ld hl,Func_3d80a + jp Func_3da37 -Func_37ca1: ; 37ca1 (d:7ca1) - ld hl, $ccd3 - ld a, [$cd38] +HyperBeamCheck: ; 3d8c2 (f:58c2) + ld hl,W_PLAYERBATTSTATUS2 + bit 5,[hl] + jr z,.next ; 58D7 + res 5,[hl] + ld hl,MustRechargeText + call PrintText + ld hl,Func_3d80a ; $580a + jp Func_3da37 +.next + ld hl,$D06D + ld a,[hl] + and a + jr z,.next2 ; 58EE 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] + ld [hl],a + and a,$F + jr nz,.next2 + ld [hl],a + ld [$CCEE],a + ld hl,DisabledNoMoreText + call PrintText +.next2 + ld a,[W_PLAYERBATTSTATUS1] 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 - -PointerTable_37ce6: ; 37ce6 (d:7ce6) - dw PewterMuseumGuyCoords - dw PewterGymGuyCoords - -; 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 - -.down - db $40, $40, $ff -.up - db $10, $20, $ff -.left - db $40, $10, $ff -.right - db $40, $20, $ff - -; 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 - -.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 - - -_Multiply: ; 37d41 (d:7d41) - ld a, $8 - ld b, a + jr nc,.next3 ; 5929 + ld hl,$D06B + dec [hl] + jr nz,.next4 ; 5907 + ld hl,W_PLAYERBATTSTATUS1 + res 7,[hl] + ld hl,ConfusedNoMoreText + call PrintText + jr .next3 +.next4 + ld hl,IsConfusedText + call PrintText 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] + ld [$CC5B],a + ld a,CONF_ANIM - 1 + call PlayMoveAnimation + call GenRandomInBattle + cp a,$80 + jr c,.next3 + ld hl,W_PLAYERBATTSTATUS1 + ld a,[hl] + and a,$80 + ld [hl],a + call PrintHurtItselfText + jr .next5 ; 5952 +.next3 + ld a,[$CCEE] + and a + jr z,.ParalysisCheck ; 593E + ld hl,$CCDC + cp [hl] + jr nz,.ParalysisCheck + call PrintMoveIsDisabledText + ld hl,Func_3d80a ; $580a + jp Func_3da37 +.ParalysisCheck + ld hl,W_PLAYERMONSTATUS + bit 6,[hl] + jr z,.next7 ; 5975 + call GenRandomInBattle ; random number + cp a,$3F + jr nc,.next7 + ld hl,FullyParalyzedText + call PrintText +.next5 + ld hl,W_PLAYERBATTSTATUS1 + ld a,[hl] + and a,$CC + ld [hl],a + ld a,[W_PLAYERMOVEEFFECT] + cp a,$2B + jr z,.next8 ; 5966 + cp a,$27 + jr z,.next8 + jr .next9 ; 596F +.next8 + xor a + ld [$CC5B],a + ld a,STATUS_AFFECTED_ANIM + call PlayMoveAnimation +.next9 + ld hl,Func_3d80a ; $580a + jp Func_3da37 +.next7 + ld hl,W_PLAYERBATTSTATUS1 + bit 0,[hl] + jr z,.next10 ; 59D0 + xor a + ld [W_PLAYERMOVENUM],a + ld hl,$D0D7 + ld a,[hli] + ld b,a + ld c,[hl] + ld hl,$D075 + ld a,[hl] 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) + ld [hld],a + ld a,[hl] + adc b + ld [hl],a + ld hl,$D06A + dec [hl] + jr z,.next11 ; 599B + ld hl,Func_3d80a ; $580a + jp Func_3da37 +.next11 + ld hl,W_PLAYERBATTSTATUS1 + res 0,[hl] + ld hl,UnleashedEnergyText + call PrintText + ld a,1 + ld [$CFD4],a + ld hl,$D075 + ld a,[hld] + add a + ld b,a + ld [$D0D8],a + ld a,[hl] 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 - -_Divide: ; 37da5 (d:7da5) + ld [$D0D7],a + or b + jr nz,.next12 ; 59C2 + ld a,1 + ld [W_MOVEMISSED],a +.next12 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] + ld [hli],a + ld [hl],a + ld a,BIDE + ld [W_PLAYERMOVENUM],a + ld hl,asm_3d705 ; $5705 + jp Func_3da37 +.next10 + bit 1,[hl] + jr z,.next13 ; 59FF + ld a,THRASH + ld [W_PLAYERMOVENUM],a + ld hl,ThrashingAboutText + call PrintText + ld hl,$D06A + dec [hl] + ld hl,asm_3d6dc ; $56dc + jp nz,Func_3da37 + push hl + ld hl,W_PLAYERBATTSTATUS1 + res 1,[hl] + set 7,[hl] + call GenRandomInBattle ; random number + and a,3 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) + inc a + ld [$D06B],a + pop hl + jp Func_3da37 +.next13 + bit 5,[hl] + jp z,Func_3da1a + ld hl,AttackContinuesText + call PrintText + ld a,[$D06A] + dec a + ld [$D06A],a + ld hl,asm_3d714 ; $5714 + jp nz,Func_3da37 + jp Func_3da37 + +Func_3da1a: ; 3da1a (f:5a1a) + ld a, [W_PLAYERBATTSTATUS2] ; $d063 + bit 6, a + jp z, Func_3da39 + ld a, $63 + ld [$d11e], a + call GetMoveName + call CopyStringToCF4B + xor a + ld [W_PLAYERMOVEEFFECT], a ; $cfd3 + ld hl, asm_3d6b0 ; $56b0 + jp Func_3da37 + +Func_3da37: ; 3da37 (f:5a37) 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 -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] +Func_3da39: ; 3da39 (f:5a39) + ld a, $1 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 -GameCornerOutOfOrderText: ; 37e79 (d:7e79) - TX_FAR _GameCornerOutOfOrderText +FastAsleepText: ; 3da3d (f:5a3d) + TX_FAR _FastAsleepText db "@" -GameCornerOutToLunchText: ; 37e7e (d:7e7e) - TX_FAR _GameCornerOutToLunchText +WokeUpText: ; 3da42 (f:5a42) + TX_FAR _WokeUpText db "@" -GameCornerSomeonesKeysText: ; 37e83 (d:7e83) - TX_FAR _GameCornerSomeonesKeysText +IsFrozenText: ; 3da47 (f:5a47) + TX_FAR _IsFrozenText db "@" -SECTION "bankE",ROMX,BANK[$E] +FullyParalyzedText: ; 3da4c (f:5a4c) + TX_FAR _FullyParalyzedText + db "@" -INCLUDE "data/moves.asm" +FlinchedText: ; 3da51 (f:5a51) + TX_FAR _FlinchedText + db "@" -INCLUDE "data/base_stats.asm" +MustRechargeText: ; 3da56 (f:5a56) + TX_FAR _MustRechargeText + db "@" -INCLUDE "data/cries.asm" +DisabledNoMoreText: ; 3da5b (f:5a5b) + TX_FAR _DisabledNoMoreText + db "@" -Func_39680: ; 39680 (e:5680) - ld a, [H_WHOSETURN] ; $fff3 - and a - ld a, [$d060] - ld hl, $d026 - jr z, .asm_39691 - ld a, [$d065] - ld hl, $cff7 -.asm_39691 - ld c, $4 - ld b, a -.asm_39694 - srl b - call c, Func_3969f - inc hl - inc hl - dec c - ret z - jr .asm_39694 +IsConfusedText: ; 3da60 (f:5a60) + TX_FAR _IsConfusedText + db "@" -Func_3969f: ; 3969f (e:569f) - ld a, [hl] - add a - ld [hld], a - ld a, [hl] - rl a - ld [hli], a - ret +HurtItselfText: ; 3da65 (f:5a65) + TX_FAR _HurtItselfText + db "@" -Func_396a7: ; 396a7 (e:56a7) +ConfusedNoMoreText: ; 3da6a (f:5a6a) + TX_FAR _ConfusedNoMoreText + db "@" + +SavingEnergyText: ; 3da6f (f:5a6f) + TX_FAR _SavingEnergyText + db "@" + +UnleashedEnergyText: ; 3da74 (f:5a74) + TX_FAR _UnleashedEnergyText + db "@" + +ThrashingAboutText: ; 3da79 (f:5a79) + TX_FAR _ThrashingAboutText + db "@" + +AttackContinuesText: ; 3da7e (f:5a7e) + TX_FAR _AttackContinuesText + db "@" + +CantMoveText: ; 3da83 (f:5a83) + TX_FAR _CantMoveText + db "@" + +PrintMoveIsDisabledText: ; 3da88 (f:5a88) + ld hl, wPlayerSelectedMove ; $ccdc + ld de, W_PLAYERBATTSTATUS1 ; $d062 ld a, [H_WHOSETURN] ; $fff3 and a - ld a, [$d061] - ld hl, W_PLAYERMONATK - jr z, .asm_396b8 - ld a, [$d066] - ld hl, W_ENEMYMONATTACK -.asm_396b8 - ld c, $4 - ld b, a -.asm_396bb - srl b - call c, Func_396c6 - inc hl + jr z, .asm_3da97 inc hl - dec c - ret z - jr .asm_396bb + ld de, W_ENEMYBATTSTATUS1 ; $d067 +.asm_3da97 + ld a, [de] + res 4, a + ld [de], a + ld a, [hl] + ld [$d11e], a + call GetMoveName + ld hl, MoveIsDisabledText + jp PrintText -Func_396c6: ; 396c6 (e:56c6) +MoveIsDisabledText: ; 3daa8 (f:5aa8) + TX_FAR _MoveIsDisabledText + db "@" + +PrintHurtItselfText: ; 3daad (f:5aad) + ld hl, HurtItselfText + call PrintText + ld hl, W_ENEMYMONDEFENSE ; $cff8 + ld a, [hli] + push af + ld a, [hld] + push af + ld a, [W_PLAYERMONDEF] + ld [hli], a + ld a, [$d028] + ld [hl], a + ld hl, W_PLAYERMOVEEFFECT ; $cfd3 + push hl ld a, [hl] - srl a + push af + xor a + ld [hli], a + ld [$d05e], a + ld a, $28 ld [hli], a - rr [hl] - or [hl] - jr nz, .asm_396d1 - ld [hl], $1 -.asm_396d1 - dec hl - ret - -_ScrollTrainerPicAfterBattle: ; 396d3 (e:56d3) -; Load the enemy trainer's pic and scrolls it into -; the screen from the right. xor a - ld [W_ENEMYMONID], a - ld b, $1 - call GoPAL_SET - ld hl, _LoadTrainerPic - ld b, BANK(_LoadTrainerPic) - call Bankswitch - FuncCoord 19, 0 ; $c3b3 - ld hl, Coord - ld c, $0 -.asm_396e9 - inc c - ld a, c - cp $7 - ret z - ld d, $0 - push bc - push hl -.asm_396f2 - call Func_39707 - inc hl - ld a, $7 - add d - ld d, a - dec c - jr nz, .asm_396f2 - ld c, $4 - call DelayFrames + ld [hl], a + call CalculateDamage + call MoreCalculateDamage + pop af pop hl - pop bc - dec hl - jr .asm_396e9 + ld [hl], a + ld hl, $cff9 + pop af + ld [hld], a + pop af + ld [hl], a + xor a + ld [$cc5b], a + inc a + ld [H_WHOSETURN], a ; $fff3 + call PlayMoveAnimation + call Func_3cd60 + xor a + ld [H_WHOSETURN], a ; $fff3 + jp ApplyDamageToPlayerPokemon -Func_39707: ; 39707 (e:5707) - push hl - push de +PrintMonName1Text: ; 3daf5 (f:5af5) + ld hl, MonName1Text + jp PrintText + +MonName1Text: ; 3dafb (f:5afb) + TX_FAR _MonName1Text + db $08 ; asm + ld a, [H_WHOSETURN] ; $fff3 + and a + ld a, [W_PLAYERMOVENUM] ; $cfd2 + ld hl, $ccf1 + jr z, .asm_3db11 + ld a, [W_ENEMYMOVENUM] ; $cfcc + ld hl, $ccf2 +.asm_3db11 + ld [hl], a + ld [$d11e], a + call Func_3db85 + ld a, [$cced] + and a + ld hl, Used2Text + ret nz + ld a, [$d11e] + cp $3 + ld hl, Used2Text + ret c + ld hl, Used1Text + ret + +Used1Text: ; 3db2d (f:5b2d) + TX_FAR _Used1Text + db $08 ; asm + jr PrintInsteadText + +Used2Text: ; 3db34 (f:5b34) + TX_FAR _Used2Text + db $08 ; asm + +PrintInsteadText: ; 3db39 (f:5b39) + ld a, [$cced] + and a + jr z, PrintCF4BText + ld hl, InsteadText + ret + +InsteadText: ; 3db43 (f:5b43) + TX_FAR _InsteadText + db $08 ; asm + +PrintCF4BText: ; 3db48 (f:5b48) + ld hl, CF4BText + ret + +CF4BText: ; 3db4c (f:5b4c) + TX_FAR _CF4BText + db $08 ; asm + ld hl, ExclamationPointPointerTable + ld a, [$d11e] + add a push bc - ld e, $7 -.asm_3970c - ld [hl], d - ld bc, $14 + ld b, $0 + ld c, a add hl, bc - inc d - dec e - jr nz, .asm_3970c pop bc - pop de - pop hl + ld a, [hli] + ld h, [hl] + ld l, a ret -; creates a set of moves that may be used and returns its address in hl -; unused slots are filled with 0, all used slots may be chosen with equal probability -AIEnemyTrainerChooseMoves: ; 39719 (e:5719) - ld a, $a - ld hl, $cee9 ; init temporary move selection array. Only the moves with the lowest numbers are chosen in the end - ld [hli], a ; move 1 - ld [hli], a ; move 2 - ld [hli], a ; move 3 - ld [hl], a ; move 4 - ld a, [W_ENEMYDISABLEDMOVE] ; forbid disabled move (if any) - swap a - and $f - jr z, .noMoveDisabled - ld hl, $cee9 - dec a +ExclamationPointPointerTable: ; 3db62 (f:5b62) + dw ExclamationPoint1Text + dw ExclamationPoint2Text + dw ExclamationPoint3Text + dw ExclamationPoint4Text + dw ExclamationPoint5Text + +ExclamationPoint1Text: ; 3db6c (f:5b6c) + TX_FAR _ExclamationPoint1Text + db "@" + +ExclamationPoint2Text: ; 3db71 (f:5b71) + TX_FAR _ExclamationPoint2Text + db "@" + +ExclamationPoint3Text: ; 3db76 (f:5b76) + TX_FAR _ExclamationPoint3Text + db "@" + +ExclamationPoint4Text: ; 3db7b (f:5b7b) + TX_FAR _ExclamationPoint4Text + db "@" + +ExclamationPoint5Text: ; 3db80 (f:5b80) + TX_FAR _ExclamationPoint5Text + db "@" + +Func_3db85: ; 3db85 (f:5b85) + push bc + ld a, [$d11e] ; move number ld c, a ld b, $0 - add hl, bc ; advance pointer to forbidden move - ld [hl], $50 ; forbid (highly discourage) disabled move -.noMoveDisabled - ld hl, TrainerClassMoveChoiceModifications ; 589B - ld a, [W_TRAINERCLASS] - ld b, a -.loopTrainerClasses - dec b - jr z, .readTrainerClassData -.loopTrainerClassData + ld hl, UnknownMovesList_3dba3 ; $5ba3 +.asm_3db8f ld a, [hli] + cp $ff + jr z, .asm_3db9d + cp c + jr z, .asm_3db9d and a - jr nz, .loopTrainerClassData - jr .loopTrainerClasses -.readTrainerClassData - ld a, [hl] + jr nz, .asm_3db8f + inc b + jr .asm_3db8f +.asm_3db9d + ld a, b + ld [$d11e], a + pop bc + ret + +UnknownMovesList_3dba3: ; 3dba3 (f:5ba3) + db SWORDS_DANCE, GROWTH + db $00 + db RECOVER, BIDE, SELFDESTRUCT, AMNESIA + db $00 + db MEDITATE, AGILITY, TELEPORT, MIMIC, DOUBLE_TEAM, BARRAGE + db $00 + db POUND, SCRATCH, VICEGRIP, WING_ATTACK, FLY, BIND, SLAM, HORN_ATTACK, BODY_SLAM + db WRAP, THRASH, TAIL_WHIP, LEER, BITE, GROWL, ROAR, SING, PECK, COUNTER + db STRENGTH, ABSORB, STRING_SHOT, EARTHQUAKE, FISSURE, DIG, TOXIC, SCREECH, HARDEN + db MINIMIZE, WITHDRAW, DEFENSE_CURL, METRONOME, LICK, CLAMP, CONSTRICT, POISON_GAS + db LEECH_LIFE, BUBBLE, FLASH, SPLASH, ACID_ARMOR, FURY_SWIPES, REST, SHARPEN, SLASH, SUBSTITUTE + db $00 + db $FF ; terminator + +PrintMoveFailureText: ; 3dbe2 (f:5be2) + ld de, W_PLAYERMOVEEFFECT ; $cfd3 + ld a, [H_WHOSETURN] ; $fff3 and a - jp z, .useOriginalMoveSet - push hl -.nextMoveChoiceModification - pop hl + jr z, .asm_3dbed + ld de, W_ENEMYMOVEEFFECT ; $cfcd +.asm_3dbed + ld hl, DoesntAffectText + ld a, [$d05b] + and $7f + jr z, .asm_3dc04 + ld hl, MissedText + ld a, [$d05e] + cp $ff + jr nz, .asm_3dc04 + ld hl, UnaffectedText +.asm_3dc04 + push de + call PrintText + xor a + ld [$d05e], a + pop de + ld a, [de] + cp $2d + ret nz + ld hl, W_DAMAGE ; $d0d7 ld a, [hli] + ld b, [hl] + srl a + rr b + srl a + rr b + srl a + rr b + ld [hl], b + dec hl + ld [hli], a + or b + jr nz, .asm_3dc2a + inc a + ld [hl], a +.asm_3dc2a + ld hl, CrashedText + call PrintText + ld b, $4 + ld a, $24 + call Predef ; indirect jump to Func_48125 (48125 (12:4125)) + ld a, [H_WHOSETURN] ; $fff3 and a - jr z, .loopFindMinimumEntries - push hl - ld hl, AIMoveChoiceModificationFunctionPointers ; $57a3 + jr nz, .asm_3dc3f + jp ApplyDamageToPlayerPokemon +.asm_3dc3f + jp ApplyDamageToEnemyPokemon + +MissedText: ; 3dc42 (f:5c42) + TX_FAR _MissedText + db "@" + +CrashedText: ; 3dc47 (f:5c47) + TX_FAR _CrashedText + db "@" + +UnaffectedText: ; 3dc4c (f:5c4c) + TX_FAR _UnaffectedText + db "@" + +PrintDoesntAffectText: ; 3dc51 (f:5c51) + ld hl, DoesntAffectText + jp PrintText + +DoesntAffectText: ; 3dc57 (f:5c57) + TX_FAR _DoesntAffectText + db "@" + +Func_3dc5c: ; 3dc5c (f:5c5c) + ld a, [$d05e] + and a + jr z, .asm_3dc75 dec a add a - ld c, a + ld hl, CriticalOHKOTextPointers ; $5c7a ld b, $0 - add hl, bc ; skip to pointer - ld a, [hli] ; read pointer into hl + ld c, a + add hl, bc + ld a, [hli] ld h, [hl] ld l, a - ld de, .nextMoveChoiceModification ; set return address - push de - jp [hl] ; execute modification function -.loopFindMinimumEntries ; all entries will be decremented sequentially until one of them is zero - ld hl, $cee9 ; temp move selection array - ld de, W_ENEMYMONMOVES ; enemy moves - ld c, $4 -.loopDecrementEntries - ld a, [de] - inc de - and a - jr z, .loopFindMinimumEntries - dec [hl] - jr z, .minimumEntriesFound - inc hl - dec c - jr z, .loopFindMinimumEntries - jr .loopDecrementEntries -.minimumEntriesFound - ld a, c -.loopUndoPartialIteration ; undo last (partial) loop iteration - inc [hl] - dec hl - inc a - cp $5 - jr nz, .loopUndoPartialIteration - ld hl, $cee9 ; temp move selection array - ld de, W_ENEMYMONMOVES ; enemy moves - ld c, $4 -.filterMinimalEntries ; all minimal entries now have value 1. All other slots will be disabled (move set to 0) - ld a, [de] - and a - jr nz, .moveExisting ; 0x3978a $1 - ld [hl], a -.moveExisting - ld a, [hl] - dec a - jr z, .slotWithMinimalValue + call PrintText xor a - ld [hli], a ; disable move slot - jr .next -.slotWithMinimalValue - ld a, [de] - ld [hli], a ; enable move slot -.next - inc de - dec c - jr nz, .filterMinimalEntries - ld hl, $cee9 ; use created temporary array as move set - ret -.useOriginalMoveSet - ld hl, W_ENEMYMONMOVES ; use original move set - ret + ld [$d05e], a +.asm_3dc75 + ld c, $14 + jp DelayFrames -AIMoveChoiceModificationFunctionPointers: ; 397a3 (e:57a3) - dw AIMoveChoiceModification1 - dw AIMoveChoiceModification2 - dw AIMoveChoiceModification3 - dw AIMoveChoiceModification4 ; unused, does nothing +CriticalOHKOTextPointers: ; 3dc7a (f:5c7a) + dw CriticalHitText + dw OHKOText -; discourages moves that cause no damage but only a status ailment if player's mon already has one -AIMoveChoiceModification1: ; 397ab (e:57ab) - ld a, [W_PLAYERMONSTATUS] - and a - ret z ; return if no status ailment on player's mon - ld hl, $cee8 ; temp move selection array (-1 byte offest) - ld de, W_ENEMYMONMOVES ; enemy moves - ld b, $5 -.nextMove - dec b - ret z ; processed all 4 moves - inc hl - ld a, [de] - and a - ret z ; no more moves in move set - inc de - call ReadMove - ld a, [W_ENEMYMOVEPOWER] - and a - jr nz, .nextMove - ld a, [W_ENEMYMOVEEFFECT] - push hl - push de - push bc - ld hl, StatusAilmentMoveEffects - ld de, $0001 - call IsInArray - pop bc - pop de - pop hl - jr nc, .nextMove - ld a, [hl] - add $5 ; discourage move - ld [hl], a - jr .nextMove +CriticalHitText: ; 3dc7e (f:5c7e) + TX_FAR _CriticalHitText + db "@" -StatusAilmentMoveEffects ; 57e2 - db $01 ; some sleep effect? - db SLEEP_EFFECT - db POISON_EFFECT - db PARALYZE_EFFECT - db $FF +OHKOText: ; 3dc83 (f:5c83) + TX_FAR _OHKOText + db "@" -; slightly encourage moves with specific effects -AIMoveChoiceModification2: ; 397e7 (e:57e7) - ld a, [$ccd5] - cp $1 - ret nz - ld hl, $cee8 ; temp move selection array (-1 byte offest) - ld de, W_ENEMYMONMOVES ; enemy moves - ld b, $5 -.nextMove - dec b - ret z ; processed all 4 moves - inc hl - ld a, [de] +Func_3dc88: ; 3dc88 (f:5c88) + xor a + ld [$cced], a + ld a, [W_ISLINKBATTLE] ; $d12b + cp $4 + jr nz, .asm_3dc97 + ld a, $1 and a - ret z ; no more moves in move set - inc de - call ReadMove - ld a, [W_ENEMYMOVEEFFECT] - cp ATTACK_UP1_EFFECT - jr c, .nextMove - cp BIDE_EFFECT - jr c, .preferMove - cp ATTACK_UP2_EFFECT - jr c, .nextMove - cp POISON_EFFECT - jr c, .preferMove - jr .nextMove -.preferMove - dec [hl] ; slighly encourage this move - jr .nextMove - -; encourages moves that are effective against the player's mon -AIMoveChoiceModification3: ; 39817 (e:5817) - ld hl, $cee8 ; temp move selection array (-1 byte offest) - ld de, W_ENEMYMONMOVES ; enemy moves - ld b, $5 -.nextMove - dec b - ret z ; processed all 4 moves + ret +.asm_3dc97 + ld hl, W_PARTYMON1_OTID ; $d177 + ld bc, $2c + ld a, [wPlayerMonNumber] ; $cc2f + call AddNTimes + ld a, [wPlayerID] ; $d359 + cp [hl] + jr nz, .asm_3dcb1 inc hl - ld a, [de] + ld a, [wPlayerID + 1] ; $d35a + cp [hl] + jp z, Func_3ddb0 +.asm_3dcb1 +; what level might disobey? + ld hl, W_OBTAINEDBADGES + bit 7, [hl] + ld a, 101 + jr nz, .asm_3dcce + bit 5, [hl] + ld a, 70 + jr nz, .asm_3dcce + bit 3, [hl] + ld a, 50 + jr nz, .asm_3dcce + bit 1, [hl] + ld a, 30 + jr nz, .asm_3dcce + ld a, 10 +.asm_3dcce + ld b, a + ld c, a + ld a, [W_PLAYERMONLEVEL] ; $d022 + ld d, a + add b + ld b, a + jr nc, .asm_3dcda + ld b, $ff +.asm_3dcda + ld a, c + cp d + jp nc, Func_3ddb0 +.asm_3dcdf + call GenRandomInBattle + swap a + cp b + jr nc, .asm_3dcdf + cp c + jp c, Func_3ddb0 +.asm_3dceb + call GenRandomInBattle + cp b + jr nc, .asm_3dceb + cp c + jr c, .asm_3dd3f + ld a, d + sub c + ld b, a + call GenRandomInBattle + swap a + sub b + jr c, .asm_3dd0e + cp b + jr nc, .asm_3dd20 + ld hl, WontObeyText + call PrintText + call PrintHurtItselfText + jp Func_3ddb4 +.asm_3dd0e + call GenRandomInBattle + add a + swap a + and $7 + jr z, .asm_3dd0e + ld [W_PLAYERMONSTATUS], a ; $d018 + ld hl, BeganToNapText + jr .asm_3dd3a +.asm_3dd20 + call GenRandomInBattle + and $3 + ld hl, LoafingAroundText and a - ret z ; no more moves in move set - inc de - call ReadMove + jr z, .asm_3dd3a + ld hl, WontObeyText + dec a + jr z, .asm_3dd3a + ld hl, TurnedAwayText + dec a + jr z, .asm_3dd3a + ld hl, IgnoredOrdersText +.asm_3dd3a + call PrintText + jr Func_3ddb4 +.asm_3dd3f + ld a, [$d01d] + and a + jr z, .asm_3dd20 + ld a, [$ccee] + and a + jr nz, .asm_3dd20 + ld a, [wPlayerSelectedMove] ; $ccdc + cp $a5 + jr z, .asm_3dd20 + ld hl, W_PLAYERMONPP ; $d02d push hl + ld a, [hli] + and $3f + ld b, a + ld a, [hli] + and $3f + add b + ld b, a + ld a, [hli] + and $3f + add b + ld b, a + ld a, [hl] + and $3f + add b + pop hl + push af + ld a, [wCurrentMenuItem] ; $cc26 + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + and $3f + ld b, a + pop af + cp b + jr z, .asm_3dd20 + ld a, $1 + ld [$cced], a + ld a, [wMaxMenuItem] ; $cc28 + ld b, a + ld a, [wCurrentMenuItem] ; $cc26 + ld c, a +.asm_3dd86 + call GenRandomInBattle + and $3 + cp b + jr nc, .asm_3dd86 + cp c + jr z, .asm_3dd86 + ld [wCurrentMenuItem], a ; $cc26 + ld hl, W_PLAYERMONPP ; $d02d + ld e, a + ld d, $0 + add hl, de + ld a, [hl] + and a + jr z, .asm_3dd86 + ld a, [wCurrentMenuItem] ; $cc26 + ld c, a + ld b, $0 + ld hl, W_PLAYERMONMOVES + add hl, bc + ld a, [hl] + ld [wPlayerSelectedMove], a ; $ccdc + call GetCurrentMove + +Func_3ddb0: ; 3ddb0 (f:5db0) + ld a, $1 + and a + ret + +Func_3ddb4: ; 3ddb4 (f:5db4) + xor a + ret + +LoafingAroundText: ; 3ddb6 (f:5db6) + TX_FAR _LoafingAroundText + db "@" + +BeganToNapText: ; 3ddbb (f:5dbb) + TX_FAR _BeganToNapText + db "@" + +WontObeyText: ; 3ddc0 (f:5dc0) + TX_FAR _WontObeyText + db "@" + +TurnedAwayText: ; 3ddc5 (f:5dc5) + TX_FAR _TurnedAwayText + db "@" + +IgnoredOrdersText: ; 3ddca (f:5dca) + TX_FAR _IgnoredOrdersText + db "@" + +CalculateDamage: ; 3ddcf (f:5dcf) + xor a + ld hl, W_DAMAGE ;damage to eventually inflict, intitialise to zero + ldi [hl], a + ld [hl], a + ld hl, W_PLAYERMOVEPOWER + ld a, [hli] ;*read attack base power + and a + ld d, a ;*D = attack base, used later + ret z ;return if attack is zero + ld a, [hl] ;*test attacking type + cp a, $14 ;types >= $14 are all special + jr nc, .specialAttack +.physicalAttack + ld hl, W_ENEMYMONDEFENSE ;opponent defense + ld a, [hli] ;*BC = opponent defense used later + ld b, a + ld c, [hl] + ld a, [W_ENEMYBATTSTATUS3] ;test for reflect + bit 2, a + jr z, .next +.doubleDefense + sla c ;x2 defense if bit2 of D069 is set + rl b +.next + ld hl, W_PLAYERMONATK ;attack pointer + ld a, [$d05e] + and a + jr z, .next3 + ld c, 3 + call Func_3df1c + ld a, [$ff97] + ld b, a + ld a, [$ff98] + ld c, a push bc - push de - ld hl, AIGetTypeEffectiveness - ld b, BANK(AIGetTypeEffectiveness) - call Bankswitch - pop de + ld hl, $d18f + ld a, [wPlayerMonNumber] + ld bc, $002c + call AddNTimes pop bc - pop hl - ld a, [$d11e] - cp $10 - jr z, .nextMove - jr c, .notEffectiveMove - dec [hl] ; slighly encourage this move - jr .nextMove -.notEffectiveMove ; discourages non-effective moves if better moves are available - push hl - push de + jr .next3 +.specialAttack + ld hl, W_ENEMYMONSPECIAL ;opponent special + ld a, [hli] ;*BC = opponent special defense used later + ld b, a + ld c, [hl] + ld a, [W_ENEMYBATTSTATUS3] ;test for lightscreen + bit 1, a + jr z, .next2 +.doubleSpecialDefense + sla c ;x2 special defense if bit1 of D069 set + rl b +.next2 + ld hl, W_PLAYERMONSPECIAL + ld a, [$d05e] ;XXX + and a + jr z, .next3 ;skip portion of code that pulls up inactive pokemon +.loadOtherPoke + ld c, 5 + call Func_3df1c + ld a, [$ff97] + ld b, a + ld a, [$ff98] + ld c, a push bc - ld a, [W_ENEMYMOVETYPE] + ld hl, $d195 + ld a, [wPlayerMonNumber] + ld bc, $002c + call AddNTimes + pop bc +.next3 + ld a, [hli] ;HL: when this was taken + ld l, [hl] + ld h, a ;*HL = attacker attack + or b ;is either attack or defense high byte nonzero? + jr z, .next4 + srl b ;[defense] BC /= 4 [this is just so it fits into a single byte, 10bits max] + rr c + srl b + rr c + srl h ;[attack] HL /= 4 [to apply equal scaling] + rr l + srl h + rr l + ld a, l + or h + jr nz, .next4 ;is HL result zero? + inc l ;minimum HL = 1 +.next4 + ld b, l ;*B = attack [possibly scaled] [C contains defense] + ld a, [$d022] ;*E = level + ld e, a + ld a, [$d05e] ;critical hit? + and a + jr z, .next5 + sla e ;double level if it was a critical hit +.next5 + ld a, 1 ;return Z = 0 + and a + ret + +Func_3de75: ; 3de75 (f:5e75) + ld hl, W_DAMAGE ; $d0d7 + xor a + ld [hli], a + ld [hl], a + ld hl, W_ENEMYMOVEPOWER ; $cfce + ld a, [hli] ld d, a - ld hl, W_ENEMYMONMOVES ; enemy moves - ld b, $5 - ld c, $0 -.loopMoves - dec b - jr z, .done + and a + ret z + ld a, [hl] + cp $14 + jr nc, .asm_3debc + ld hl, W_PLAYERMONDEF ld a, [hli] + ld b, a + ld c, [hl] + ld a, [W_PLAYERBATTSTATUS3] ; $d064 + bit 2, a + jr z, .asm_3de98 + sla c + rl b +.asm_3de98 + ld hl, W_ENEMYMONATTACK + ld a, [$d05e] and a - jr z, .done - call ReadMove - ld a, [W_ENEMYMOVEEFFECT] - cp SUPER_FANG_EFFECT - jr z, .betterMoveFound ; Super Fang is considered to be a better move - cp SPECIAL_DAMAGE_EFFECT - jr z, .betterMoveFound ; any special damage moves are considered to be better moves - cp FLY_EFFECT - jr z, .betterMoveFound ; Fly is considered to be a better move - ld a, [W_ENEMYMOVETYPE] - cp d - jr z, .loopMoves - ld a, [W_ENEMYMOVEPOWER] + jr z, .asm_3deef + ld hl, W_PARTYMON1_DEFENSE ; $d191 + ld a, [wPlayerMonNumber] ; $cc2f + ld bc, $2c + call AddNTimes + ld a, [hli] + ld b, a + ld c, [hl] + push bc + ld c, $2 + call Func_3df1c + ld hl, $ff97 + pop bc + jr .asm_3deef +.asm_3debc + ld hl, W_PLAYERMONSPECIAL + ld a, [hli] + ld b, a + ld c, [hl] + ld a, [W_PLAYERBATTSTATUS3] ; $d064 + bit 1, a + jr z, .asm_3decd + sla c + rl b +.asm_3decd + ld hl, W_ENEMYMONSPECIAL ; $cffc + ld a, [$d05e] and a - jr nz, .betterMoveFound ; damaging moves of a different type are considered to be better moves - jr .loopMoves -.betterMoveFound - ld c, a -.done - ld a, c + jr z, .asm_3deef + ld hl, W_PARTYMON1_SPECIAL ; $d195 + ld a, [wPlayerMonNumber] ; $cc2f + ld bc, $2c + call AddNTimes + ld a, [hli] + ld b, a + ld c, [hl] + push bc + ld c, $5 + call Func_3df1c + ld hl, $ff97 pop bc - pop de - pop hl +.asm_3deef + ld a, [hli] + ld l, [hl] + ld h, a + or b + jr z, .asm_3df0a + srl b + rr c + srl b + rr c + srl h + rr l + srl h + rr l + ld a, l + or h + jr nz, .asm_3df0a + inc l +.asm_3df0a + ld b, l + ld a, [W_ENEMYMONLEVEL] ; $cff3 + ld e, a + ld a, [$d05e] + and a + jr z, .asm_3df17 + sla e +.asm_3df17 + ld a, $1 + and a and a - jr z, .nextMove - inc [hl] ; slighly discourage this move - jr .nextMove -AIMoveChoiceModification4: ; 39883 (e:5883) ret -ReadMove: ; 39884 (e:5884) - push hl +Func_3df1c: ; 3df1c (f:5f1c) push de push bc - dec a - ld hl,Moves - ld bc,6 + ld a, [W_ISLINKBATTLE] ; $d12b + cp $4 + jr nz, .asm_3df40 + ld hl, $d8c6 + dec c + sla c + ld b, $0 + add hl, bc + ld a, [W_ENEMYMONNUMBER] ; $cfe8 + ld bc, $2c call AddNTimes - ld de,$CFCC - call CopyData + ld a, [hli] + ld [$ff97], a + ld a, [hl] + ld [$ff98], a pop bc pop de - pop hl + ret +.asm_3df40 + ld a, [W_ENEMYMONLEVEL] ; $cff3 + ld [W_CURENEMYLVL], a ; $d127 + ld a, [$cfe5] + ld [$d0b5], a + call GetMonHeader + ld hl, $cff1 + ld de, $cfaf + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + pop bc + ld b, $0 + ld hl, $cfa4 + call CalcStat + pop de ret -; move choice modification methods that are applied for each trainer class -; 0 is sentinel value -TrainerClassMoveChoiceModifications: ; 3989b (e:589b) - db 0 ; YOUNGSTER - db 1,0 ; BUG CATCHER - db 1,0 ; LASS - db 1,3,0 ; SAILOR - db 1,0 ; JR__TRAINER_M - db 1,0 ; JR__TRAINER_F - db 1,2,3,0; POKEMANIAC - db 1,2,0 ; SUPER_NERD - db 1,0 ; HIKER - db 1,0 ; BIKER - db 1,3,0 ; BURGLAR - db 1,0 ; ENGINEER - db 1,2,0 ; JUGGLER_X - db 1,3,0 ; FISHER - db 1,3,0 ; SWIMMER - db 0 ; CUE_BALL - db 1,0 ; GAMBLER - db 1,3,0 ; BEAUTY - db 1,2,0 ; PSYCHIC_TR - db 1,3,0 ; ROCKER - db 1,0 ; JUGGLER - db 1,0 ; TAMER - db 1,0 ; BIRD_KEEPER - db 1,0 ; BLACKBELT - db 1,0 ; SONY1 - db 1,3,0 ; PROF_OAK - db 1,2,0 ; CHIEF - db 1,2,0 ; SCIENTIST - db 1,3,0 ; GIOVANNI - db 1,0 ; ROCKET - db 1,3,0 ; COOLTRAINER_M - db 1,3,0 ; COOLTRAINER_F - db 1,0 ; BRUNO - db 1,0 ; BROCK - db 1,3,0 ; MISTY - db 1,3,0 ; LT__SURGE - db 1,3,0 ; ERIKA - db 1,3,0 ; KOGA - db 1,3,0 ; BLAINE - db 1,3,0 ; SABRINA - db 1,2,0 ; GENTLEMAN - db 1,3,0 ; SONY2 - db 1,3,0 ; SONY3 - db 1,2,3,0; LORELEI - db 1,0 ; CHANNELER - db 1,0 ; AGATHA - db 1,3,0 ; LANCE - -TrainerPicAndMoneyPointers: ; 39914 (e:5914) -; trainer pic pointers and base money. -; money received after battle = base money × level of highest-level enemy mon - dw YoungsterPic - db 0,$15,0 - - dw BugCatcherPic - db 0,$10,0 - - dw LassPic - db 0,$15,0 - - dw SailorPic - db 0,$30,0 - - dw JrTrainerMPic - db 0,$20,0 - - dw JrTrainerFPic - db 0,$20,0 - - dw PokemaniacPic - db 0,$50,0 - - dw SuperNerdPic - db 0,$25,0 - - dw HikerPic - db 0,$35,0 - - dw BikerPic - db 0,$20,0 - - dw BurglarPic - db 0,$90,0 - - dw EngineerPic - db 0,$50,0 - - dw JugglerPic - db 0,$35,0 - - dw FisherPic - db 0,$35,0 - - dw SwimmerPic - db 0,$05,0 - - dw CueBallPic - db 0,$25,0 - - dw GamblerPic - db 0,$70,0 - - dw BeautyPic - db 0,$70,0 - - dw PsychicPic - db 0,$10,0 - - dw RockerPic - db 0,$25,0 - - dw JugglerPic - db 0,$35,0 +MoreCalculateDamage: ; 3df65 (f:5f65) +; input: +; b: attack +; c: opponent defense +; d: base power +; e: level - dw TamerPic - db 0,$40,0 + ld a, [$fff3] ; whose turn? + and a + ld a, [W_PLAYERMOVEEFFECT] + jr z, .effect + ld a, [$cfcd] +.effect - dw BirdKeeperPic - db 0,$25,0 +; EXPLODE_EFFECT halves defense. + cp a, EXPLODE_EFFECT + jr nz, .ok + srl c + jr nz, .ok + inc c ; ...with a minimum value of 1 (used as a divisor later on) +.ok - dw BlackbeltPic - db 0,$25,0 +; Multi-hit attacks may or may not have 0 bp. + cp a, TWO_TO_FIVE_ATTACKS_EFFECT + jr z, .skipbp + cp a, $1e + jr z, .skipbp - dw Rival1Pic - db 0,$35,0 +; Calculate OHKO damage based on remaining HP. + cp a, OHKO_EFFECT + jp z, Func_3e016 - dw ProfOakPic - db 0,$99,0 +; Don't calculate damage for moves that don't do any. + ld a, d ; base power + and a + ret z +.skipbp - dw ChiefPic - db 0,$30,0 + xor a + ld hl, H_DIVIDEND + ldi [hl], a + ldi [hl], a + ld [hl], a - dw ScientistPic - db 0,$50,0 +; Multiply level by 2 + ld a, e ; level + add a + jr nc, .nc + push af + ld a, 1 + ld [hl], a + pop af +.nc + inc hl + ldi [hl], a - dw GiovanniPic - db 0,$99,0 +; Divide by 5 + ld a, 5 + ldd [hl], a + push bc + ld b, 4 + call Divide + pop bc - dw RocketPic - db 0,$30,0 +; Add 2 + inc [hl] + inc [hl] - dw CooltrainerMPic - db 0,$35,0 + inc hl ; multiplier - dw CooltrainerFPic - db 0,$35,0 +; Multiply by attack base power + ld [hl], d + call Multiply - dw BrunoPic - db 0,$99,0 +; Multiply by attack stat + ld [hl], b + call Multiply - dw BrockPic - db 0,$99,0 +; Divide by defender's defense stat + ld [hl], c + ld b, 4 + call Divide - dw MistyPic - db 0,$99,0 +; Divide by 50 + ld [hl], 50 + ld b, 4 + call Divide - dw LtSurgePic - db 0,$99,0 + ld hl, W_DAMAGE + ld b, [hl] + ld a, [H_QUOTIENT + 3] + add b + ld [H_QUOTIENT + 3], a + jr nc, .asm_3dfd0 - dw ErikaPic - db 0,$99,0 + ld a, [H_QUOTIENT + 2] + inc a + ld [H_QUOTIENT + 2], a + and a + jr z, .asm_3e004 - dw KogaPic - db 0,$99,0 +.asm_3dfd0 + ld a, [H_QUOTIENT] + ld b, a + ld a, [H_QUOTIENT + 1] + or a + jr nz, .asm_3e004 - dw BlainePic - db 0,$99,0 + ld a, [H_QUOTIENT + 2] + cp 998 / $100 + jr c, .asm_3dfe8 + cp 998 / $100 + 1 + jr nc, .asm_3e004 + ld a, [H_QUOTIENT + 3] + cp 998 % $100 + jr nc, .asm_3e004 - dw SabrinaPic - db 0,$99,0 +.asm_3dfe8 + inc hl + ld a, [H_QUOTIENT + 3] + ld b, [hl] + add b + ld [hld], a - dw GentlemanPic - db 0,$70,0 + ld a, [H_QUOTIENT + 2] + ld b, [hl] + adc b + ld [hl], a + jr c, .asm_3e004 - dw Rival2Pic - db 0,$65,0 + ld a, [hl] + cp 998 / $100 + jr c, .asm_3e00a + cp 998 / $100 + 1 + jr nc, .asm_3e004 + inc hl + ld a, [hld] + cp 998 % $100 + jr c, .asm_3e00a - dw Rival3Pic - db 0,$99,0 +.asm_3e004 + ld a, 997 / $100 + ld [hli], a + ld a, 997 % $100 + ld [hld], a - dw LoreleiPic - db 0,$99,0 +.asm_3e00a + inc hl + ld a, [hl] + add 2 + ld [hld], a + jr nc, .done + inc [hl] +.done - dw ChannelerPic - db 0,$30,0 + ld a, 1 + and a + ret - dw AgathaPic - db 0,$99,0 +Func_3e016: ; 3e016 (f:6016) + call Func_3f132 + ld a, [W_MOVEMISSED] ; $d05f + dec a + ret - dw LancePic - db 0,$99,0 -INCLUDE "text/trainer_names.asm" +UnusedHighCriticalMoves: ; 3e01e (f:601e) + db KARATE_CHOP + db RAZOR_LEAF + db CRABHAMMER + db SLASH + db $FF +; 3e023 -Func_39b87: ; 39b87 (e:5b87) - ld hl, $d0dc - ld de, $d0e1 - ld b, $0 -.asm_39b8f - ld a, [hli] +; determines if attack is a critical hit +; azure heights claims "the fastest pokémon (who are,not coincidentally, +; among the most popular) tend to CH about 20 to 25% of the time." +CriticalHitTest: ; 3e023 (f:6023) + xor a + ld [$d05e], a + ld a, [H_WHOSETURN] ; $fff3 and a - jr z, .asm_39bc1 - push hl + ld a, [$cfe5] + jr nz, .asm_3e032 + ld a, [W_PLAYERMONID] +.asm_3e032 ld [$d0b5], a - ld a, $2c - ld [$d0b7], a - ld a, MOVE_NAME - ld [W_LISTTYPE], a - call GetName - ld hl, $cd6d -.asm_39ba7 - ld a, [hli] - cp $50 - jr z, .asm_39bb0 - ld [de], a - inc de - jr .asm_39ba7 -.asm_39bb0 - ld a, b - ld [$cd6c], a - inc b - ld a, $4e - ld [de], a - inc de - pop hl - ld a, b - cp $4 - jr z, .asm_39bd1 - jr .asm_39b8f -.asm_39bc1 - ld a, "-" - ld [de], a - inc de - inc b - ld a, b - cp $4 - jr z, .asm_39bd1 - ld a, $4e - ld [de], a - inc de - jr .asm_39bc1 -.asm_39bd1 - ld a, "@" - ld [de], a - ret - -Func_39bd5: ; 39bd5 (e:5bd5) - ld a, [$d11b] - cp $1 - jr nz, .asm_39be6 - ld hl, wEnemyPartyCount ; $d89c - ld de, W_ENEMYMON1OT ; $d9ac OT names of other player - ld a, $6 - jr .asm_39c18 -.asm_39be6 - cp $4 - jr nz, .calcAttackStat4 - ld hl, W_NUMINPARTY ; $d163 - ld de, W_PARTYMON1OT ; $d273 - ld a, $5 - jr .asm_39c18 -.calcAttackStat4 - cp $5 - jr nz, .asm_39c02 - ld hl, $cf7b - ld de, MonsterNames ; $421e + call GetMonHeader + ld a, [W_MONHBASESPEED] + ld b, a + srl b ; (effective (base speed/2)) + ld a, [H_WHOSETURN] ; $fff3 + and a + ld hl, W_PLAYERMOVEPOWER ; $cfd4 + ld de, W_PLAYERBATTSTATUS2 ; $d063 + jr z, .calcCriticalHitProbability + ld hl, W_ENEMYMOVEPOWER ; $cfce + ld de, W_ENEMYBATTSTATUS2 ; $d068 +.calcCriticalHitProbability ; 0x3e04f + ld a, [hld] ; read base power from RAM + and a + ret z ; do nothing if zero + dec hl + ld c, [hl] ; read move id + ld a, [de] + bit 2, a ; test for focus energy + jr nz, .focusEnergyUsed ; bug: using focus energy causes a shift to the right instead of left, + ; resulting in 1/4 the usual crit chance + sla b ; (effective (base speed/2)*2) + jr nc, .noFocusEnergyUsed + ld b, $ff ; cap at 255/256 + jr .noFocusEnergyUsed +.focusEnergyUsed + srl b +.noFocusEnergyUsed + ld hl, HighCriticalMoves ; table of high critical hit moves +.Loop + ld a, [hli] ; read move from move table + cp c ; does it match the move about to be used? + jr z, .HighCritical ; if so, the move about to be used is a high critical hit ratio move + inc a ; move on to the next move, FF terminates loop + jr nz, .Loop ; check the next move in HighCriticalMoves + srl b ; /2 for regular move (effective (base speed / 2)) + jr .SkipHighCritical ; continue as a normal move +.HighCritical + sla b ; *2 for high critical hit moves + jr nc, .noCarry + ld b, $ff ; cap at 255/256 +.noCarry + sla b ; *4 for high critical move (effective (base speed/2)*8)) + jr nc, .SkipHighCritical + ld b, $ff +.SkipHighCritical + call GenRandomInBattle ; generates a random value, in "a" + rlc a + rlc a + rlc a + cp b ; check a against calculated crit rate + ret nc ; no critical hit if no borrow ld a, $1 - jr .asm_39c18 -.asm_39c02 - cp $2 - jr nz, .asm_39c10 - ld hl, wNumBagItems ; $d31d - ld de, ItemNames ; $472b - ld a, $4 - jr .asm_39c18 -.asm_39c10 - ld hl, $cf7b - ld de, ItemNames ; $472b - ld a, ITEM_NAME -.asm_39c18 - ld [W_LISTTYPE], a - ld a, l - ld [$cf8b], a - ld a, h - ld [$cf8c], a - ld a, e - ld [$cf8d], a - ld a, d - ld [$cf8e], a - ld bc, ItemPrices ; $4608 - ld a, c - ld [$cf8f], a - ld a, b - ld [$cf90], a + ld [$d05e], a ; set critical hit flag ret -Func_39c37: ; 39c37 (e:5c37) - ld hl, W_PARTYMON1 ; $d164 - ld a, [$cc49] - and a - jr z, .asm_39c4b - dec a - jr z, .asm_39c48 - ld hl, $da81 - jr .asm_39c4b -.asm_39c48 - ld hl, $d89d -.asm_39c4b - ld d, $0 - add hl, de - ld a, [hl] - ld [$cf91], a - ret +; high critical hit moves +HighCriticalMoves: ; 3e08e (f:608e) + db KARATE_CHOP + db RAZOR_LEAF + db CRABHAMMER + db SLASH + db $FF -ReadTrainer: ; 39c53 (e:5c53) -; don't change any moves in a link battle - ld a,[W_ISLINKBATTLE] +; function to determine if Counter hits and if so, how much damage it does +HandleCounterMove: ; 3e093 (f:6093) + ld a,[H_WHOSETURN] ; whose turn and a - ret nz - -; set [wEnemyPartyCount] to 0, [$D89D] to FF -; XXX first is total enemy pokemon? -; XXX second is species of first pokemon? - ld hl,wEnemyPartyCount +; player's turn + ld hl,wEnemySelectedMove + ld de,W_ENEMYMOVEPOWER + ld a,[wPlayerSelectedMove] + jr z,.next +; enemy's turn + ld hl,wPlayerSelectedMove + ld de,W_PLAYERMOVEPOWER + ld a,[wEnemySelectedMove] +.next + cp a,COUNTER + ret nz ; return if not using Counter + ld a,$01 + ld [W_MOVEMISSED],a ; initialize the move missed variable to true (it is set to false below if the move hits) + ld a,[hl] + cp a,COUNTER + ret z ; if the target also used Counter, miss + ld a,[de] + and a + ret z ; if the move the target used has 0 power, miss +; check if the move the target used was Normal or Fighting type + inc de + ld a,[de] + and a ; normal type + jr z,.counterableType + cp a,FIGHTING + jr z,.counterableType +; if the move wasn't Normal or Fighting type, miss xor a - ld [hli],a - dec a - ld [hl],a - -; get the pointer to trainer data for this class - ld a,[W_CUROPPONENT] - sub $C9 ; convert value from pokemon to trainer - add a,a - ld hl,TrainerDataPointers - ld c,a - ld b,0 - add hl,bc ; hl points to trainer class + ret +.counterableType + ld hl,W_DAMAGE ld a,[hli] - ld h,[hl] - ld l,a - ld a,[W_TRAINERNO] - ld b,a -; At this point b contains the trainer number, -; and hl points to the trainer class. -; Our next task is to iterate through the trainers, -; decrementing b each time, until we get to the right one. -.outer - dec b - jr z,.IterateTrainer -.inner + or [hl] + ret z ; Counter misses if the target did no damage to the Counter user +; double the damage that the target did to the Counter user + ld a,[hl] + add a + ldd [hl],a + ld a,[hl] + adc a + ld [hl],a + jr nc,.noCarry +; damage is capped at 0xFFFF + ld a,$ff + ld [hli],a + ld [hl],a +.noCarry + xor a + ld [W_MOVEMISSED],a + call MoveHitTest ; do the normal move hit test in addition to Counter's special rules + xor a + ret + +ApplyAttackToEnemyPokemon: ; 3e0df (f:60df) + ld a,[W_PLAYERMOVEEFFECT] + cp a,OHKO_EFFECT + jr z,ApplyDamageToEnemyPokemon + cp a,SUPER_FANG_EFFECT + jr z,.superFangEffect + cp a,SPECIAL_DAMAGE_EFFECT + jr z,.specialDamage + ld a,[W_PLAYERMOVEPOWER] + and a + jp z,ApplyAttackToEnemyPokemonDone + jr ApplyDamageToEnemyPokemon +.superFangEffect +; set the damage to half the target's HP + ld hl,W_ENEMYMONCURHP + ld de,W_DAMAGE ld a,[hli] + srl a + ld [de],a + inc de + ld b,a + ld a,[hl] + rr a + ld [de],a + or b + jr nz,ApplyDamageToEnemyPokemon +; make sure Super Fang's damage is always at least 1 + ld a,$01 + ld [de],a + jr ApplyDamageToEnemyPokemon +.specialDamage + ld hl,W_PLAYERMONLEVEL + ld a,[hl] + ld b,a + ld a,[W_PLAYERMOVENUM] + cp a,SEISMIC_TOSS + jr z,.storeDamage + cp a,NIGHT_SHADE + jr z,.storeDamage + ld b,SONICBOOM_DAMAGE + cp a,SONICBOOM + jr z,.storeDamage + ld b,DRAGON_RAGE_DAMAGE + cp a,DRAGON_RAGE + jr z,.storeDamage +; Psywave + ld a,[hl] + ld b,a + srl a + add b + ld b,a ; b = level * 1.5 +; loop until a random number in the range [1, b) is found +.loop + call GenRandomInBattle ; random number and a - jr nz,.inner - jr .outer + jr z,.loop + cp b + jr nc,.loop + ld b,a +.storeDamage + ld hl,W_DAMAGE + xor a + ld [hli],a + ld a,b + ld [hl],a -; if the first byte of trainer data is FF, -; - each pokemon has a specific level -; (as opposed to the whole team being of the same level) -; - if [W_LONEATTACKNO] != 0, one pokemon on the team has a special move -; else the first byte is the level of every pokemon on the team -.IterateTrainer - ld a,[hli] - cp $FF ; is the trainer special? - jr z,.SpecialTrainer ; if so, check for special moves - ld [W_CURENEMYLVL],a -.LoopTrainerData +ApplyDamageToEnemyPokemon: ; 3e142 (f:6142) + ld hl,W_DAMAGE ld a,[hli] - and a ; have we reached the end of the trainer data? - jr z,.FinishUp - ld [$CF91],a ; write species somewhere (XXX why?) - ld a,1 - ld [$CC49],a - push hl - call AddPokemonToParty - pop hl - jr .LoopTrainerData -.SpecialTrainer -; if this code is being run: -; - each pokemon has a specific level -; (as opposed to the whole team being of the same level) -; - if [W_LONEATTACKNO] != 0, one pokemon on the team has a special move + ld b,a + ld a,[hl] + or b + jr z,ApplyAttackToEnemyPokemonDone ; we're done if damage is 0 + ld a,[W_ENEMYBATTSTATUS2] + bit 4,a ; does the enemy have a substitute? + jp nz,AttackSubstitute +; subtract the damage from the pokemon's current HP +; also, save the current HP at wHPBarOldHP + ld a,[hld] + ld b,a + ld a,[W_ENEMYMONCURHP + 1] + ld [wHPBarOldHP],a + sub b + ld [W_ENEMYMONCURHP + 1],a + ld a,[hl] + ld b,a + ld a,[W_ENEMYMONCURHP] + ld [wHPBarOldHP+1],a + sbc b + ld [W_ENEMYMONCURHP],a + jr nc,.animateHpBar +; if more damage was done than the current HP, zero the HP and set the damage +; equal to how much HP the pokemon had before the attack + ld a,[wHPBarOldHP+1] + ld [hli],a + ld a,[wHPBarOldHP] + ld [hl],a + xor a + ld hl,W_ENEMYMONCURHP + ld [hli],a + ld [hl],a +.animateHpBar + ld hl,W_ENEMYMONMAXHP ld a,[hli] - and a ; have we reached the end of the trainer data? - jr z,.AddLoneMove - ld [W_CURENEMYLVL],a + ld [wHPBarMaxHP+1],a + ld a,[hl] + ld [wHPBarMaxHP],a + ld hl,W_ENEMYMONCURHP ld a,[hli] - ld [$CF91],a - ld a,1 - ld [$CC49],a - push hl - call AddPokemonToParty - pop hl - jr .SpecialTrainer -.AddLoneMove -; does the trainer have a single monster with a different move - ld a,[W_LONEATTACKNO] ; Brock is 01, Misty is 02, Erika is 04, etc + ld [wHPBarNewHP+1],a + ld a,[hl] + ld [wHPBarNewHP],a + FuncCoord 2, 2 ; $c3ca + ld hl,Coord + xor a + ld [$cf94],a + ld a,$48 + call Predef ; animate the HP bar shortening +ApplyAttackToEnemyPokemonDone: ; 3e19d (f:619d) + jp Func_3cd5a ; redraw pokemon names and HP bars + +ApplyAttackToPlayerPokemon: ; 3e1a0 (f:61a0) + ld a,[W_ENEMYMOVEEFFECT] + cp a,OHKO_EFFECT + jr z,ApplyDamageToPlayerPokemon + cp a,SUPER_FANG_EFFECT + jr z,.superFangEffect + cp a,SPECIAL_DAMAGE_EFFECT + jr z,.specialDamage + ld a,[W_ENEMYMOVEPOWER] and a - jr z,.AddTeamMove - dec a - add a,a - ld c,a - ld b,0 - ld hl,LoneMoves - add hl,bc + jp z,ApplyAttackToPlayerPokemonDone + jr ApplyDamageToPlayerPokemon +.superFangEffect +; set the damage to half the target's HP + ld hl,W_PLAYERMONCURHP + ld de,W_DAMAGE ld a,[hli] - ld d,[hl] - ld hl,W_ENEMYMON1MOVE3 - ld bc,W_ENEMYMON2MOVE3 - W_ENEMYMON1MOVE3 - call AddNTimes - ld [hl],d - jr .FinishUp -.AddTeamMove -; check if our trainer's team has special moves - -; get trainer class number - ld a,[W_CUROPPONENT] - sub $C8 + srl a + ld [de],a + inc de ld b,a - ld hl,TeamMoves - -; iterate through entries in TeamMoves, checking each for our trainer class -.IterateTeamMoves - ld a,[hli] + ld a,[hl] + rr a + ld [de],a + or b + jr nz,ApplyDamageToPlayerPokemon +; make sure Super Fang's damage is always at least 1 + ld a,$01 + ld [de],a + jr ApplyDamageToPlayerPokemon +.specialDamage + ld hl,W_ENEMYMONLEVEL + ld a,[hl] + ld b,a + ld a,[W_ENEMYMOVENUM] + cp a,SEISMIC_TOSS + jr z,.storeDamage + cp a,NIGHT_SHADE + jr z,.storeDamage + ld b,SONICBOOM_DAMAGE + cp a,SONICBOOM + jr z,.storeDamage + ld b,DRAGON_RAGE_DAMAGE + cp a,DRAGON_RAGE + jr z,.storeDamage +; Psywave + ld a,[hl] + ld b,a + srl a + add b + ld b,a ; b = attacker's level * 1.5 +; loop until a random number in the range [0, b) is found +; this differs from the range when the player attacks, which is [1, b) +; it's possible for the enemy to do 0 damage with Psywave, but the player always does at least 1 damage +.loop + call GenRandomInBattle ; random number cp b - jr z,.GiveTeamMoves ; is there a match? - inc hl ; if not, go to the next entry - inc a - jr nz,.IterateTeamMoves - - ; no matches found. is this trainer champion rival? + jr nc,.loop + ld b,a +.storeDamage + ld hl,W_DAMAGE + xor a + ld [hli],a ld a,b - cp SONY3 - jr z,.ChampionRival - jr .FinishUp ; nope -.GiveTeamMoves - ld a,[hl] - ld [$D95E],a - jr .FinishUp -.ChampionRival ; give moves to his team + ld [hl],a -; pidgeot - ld a,SKY_ATTACK - ld [W_ENEMYMON1MOVE3],a +ApplyDamageToPlayerPokemon: ; 3e200 (f:6200) + ld hl,W_DAMAGE + ld a,[hli] + ld b,a + ld a,[hl] + or b + jr z,ApplyAttackToPlayerPokemonDone ; we're done if damage is 0 + ld a,[W_PLAYERBATTSTATUS2] + bit 4,a ; does the player have a substitute? + jp nz,AttackSubstitute +; subtract the damage from the pokemon's current HP +; also, save the current HP at wHPBarOldHP and the new HP at wHPBarNewHP + ld a,[hld] + ld b,a + ld a,[W_PLAYERMONCURHP + 1] + ld [wHPBarOldHP],a + sub b + ld [W_PLAYERMONCURHP + 1],a + ld [wHPBarNewHP],a + ld b,[hl] + ld a,[W_PLAYERMONCURHP] + ld [wHPBarOldHP+1],a + sbc b + ld [W_PLAYERMONCURHP],a + ld [wHPBarNewHP+1],a + jr nc,.animateHpBar +; if more damage was done than the current HP, zero the HP and set the damage +; equal to how much HP the pokemon had before the attack + ld a,[wHPBarOldHP+1] + ld [hli],a + ld a,[wHPBarOldHP] + ld [hl],a + xor a + ld hl,W_PLAYERMONCURHP + ld [hli],a + ld [hl],a + ld hl,wHPBarNewHP + ld [hli],a + ld [hl],a +.animateHpBar + ld hl,W_PLAYERMONMAXHP + ld a,[hli] + ld [wHPBarMaxHP+1],a + ld a,[hl] + ld [wHPBarMaxHP],a + FuncCoord 10, 9 ; $c45e + ld hl,Coord + ld a,$01 + ld [$cf94],a + ld a,$48 + call Predef ; animate the HP bar shortening +ApplyAttackToPlayerPokemonDone + jp Func_3cd5a ; redraw pokemon names and HP bars -; starter - ld a,[W_RIVALSTARTER] - cp BULBASAUR - ld b,MEGA_DRAIN - jr z,.GiveStarterMove - cp CHARMANDER - ld b,FIRE_BLAST - jr z,.GiveStarterMove - ld b,BLIZZARD ; must be squirtle -.GiveStarterMove - ld a,b - ld [W_ENEMYMON6MOVE3],a -.FinishUp ; XXX this needs documenting - xor a ; clear D079-D07B - ld de,$D079 - ld [de],a - inc de - ld [de],a - inc de +AttackSubstitute: ; 3e25e (f:625e) + ld hl,SubstituteTookDamageText + call PrintText +; values for player turn + ld de,wEnemySubstituteHP + ld bc,W_ENEMYBATTSTATUS2 + ld a,[H_WHOSETURN] + and a + jr z,.applyDamageToSubstitute +; values for enemy turn + ld de,wPlayerSubstituteHP + ld bc,W_PLAYERBATTSTATUS2 +.applyDamageToSubstitute + ld hl,W_DAMAGE + ld a,[hli] + and a + jr nz,.substituteBroke ; damage > 0xFF always breaks substitutes +; subtract damage from HP of substitute + ld a,[de] + sub [hl] ld [de],a - ld a,[W_CURENEMYLVL] - ld b,a -.LastLoop - ld hl,$D047 - ld c,2 - push bc - ld a,$B - call Predef - pop bc - inc de - inc de - dec b - jr nz,.LastLoop - ret + ret nc +.substituteBroke + ld h,b + ld l,c + res 4,[hl] ; unset the substitute bit + ld hl,SubstituteBrokeText + call PrintText +; flip whose turn it is for the next function call + ld a,[H_WHOSETURN] + xor a,$01 + ld [H_WHOSETURN],a + ld hl, Func_79747 + ld b, BANK(Func_79747) ; animate the substitute breaking + call Bankswitch ; substitute +; flip the turn back to the way it was + ld a,[H_WHOSETURN] + xor a,$01 + ld [H_WHOSETURN],a + ld hl,W_PLAYERMOVEEFFECT ; value for player's turn + and a + jr z,.nullifyEffect + ld hl,W_ENEMYMOVEEFFECT ; value for enemy's turn +.nullifyEffect + xor a + ld [hl],a ; zero the effect of the attacker's move + jp Func_3cd5a ; redraw pokemon names and HP bars -INCLUDE "data/trainer_moves.asm" +SubstituteTookDamageText: ; 3e2ac (f:62ac) + TX_FAR _SubstituteTookDamageText + db "@" -INCLUDE "data/trainer_parties.asm" +SubstituteBrokeText: ; 3e2b1 (f:62b1) + TX_FAR _SubstituteBrokeText + db "@" -TrainerAI: ; 3a52e (e:652e) -;XXX called at 34964, 3c342, 3c398 - and a - ld a,[W_ISINBATTLE] - dec a - ret z ; if not a trainer, we're done here - ld a,[W_ISLINKBATTLE] - cp 4 - ret z - ld a,[W_TRAINERCLASS] ; what trainer class is this? - dec a - ld c,a - ld b,0 - ld hl,TrainerAIPointers - add hl,bc - add hl,bc - add hl,bc - ld a,[wAICount] +; this function raises the attack modifier of a pokemon using Rage when that pokemon is attacked +HandleBuildingRage: ; 3e2b6 (f:62b6) +; values for the player turn + ld hl,W_ENEMYBATTSTATUS2 + ld de,wEnemyMonStatMods + ld bc,W_ENEMYMOVENUM + ld a,[H_WHOSETURN] and a - ret z ; if no AI uses left, we're done here + jr z,.next +; values for the enemy turn + ld hl,W_PLAYERBATTSTATUS2 + ld de,wPlayerMonStatMods + ld bc,W_PLAYERMOVENUM +.next + bit 6,[hl] ; is the pokemon being attacked under the effect of Rage? + ret z ; return if not + ld a,[de] + cp a,$0d ; maximum stat modifier value + ret z ; return if attack modifier is already maxed + ld a,[H_WHOSETURN] + xor a,$01 ; flip turn for the stat modifier raising function + ld [H_WHOSETURN],a +; change the target pokemon's move to $00 and the effect to the one +; that causes the attack modifier to go up one stage + ld h,b + ld l,c + ld [hl],$00 ; null move number inc hl - inc a - jr nz,.getpointer - dec hl - ld a,[hli] - ld [wAICount],a -.getpointer - ld a,[hli] - ld h,[hl] - ld l,a - call GenRandom - jp [hl] + ld [hl],ATTACK_UP1_EFFECT + push hl + ld hl,BuildingRageText + call PrintText + call Func_3f428 ; stat modifier raising function + pop hl + xor a + ldd [hl],a ; null move effect + ld a,RAGE + ld [hl],a ; restore the target pokemon's move number to Rage + ld a,[H_WHOSETURN] + xor a,$01 ; flip turn back to the way it was + ld [H_WHOSETURN],a + ret -TrainerAIPointers: ; 3a55c (e:655c) -; one entry per trainer class -; first byte, number of times (per Pokémon) it can occur -; next two bytes, pointer to AI subroutine for trainer class - dbw 3,GenericAI - dbw 3,GenericAI - dbw 3,GenericAI - dbw 3,GenericAI - dbw 3,GenericAI - dbw 3,GenericAI - dbw 3,GenericAI - dbw 3,GenericAI - dbw 3,GenericAI - dbw 3,GenericAI - dbw 3,GenericAI - dbw 3,GenericAI - dbw 3,JugglerAI ; juggler_x - dbw 3,GenericAI - dbw 3,GenericAI - dbw 3,GenericAI - dbw 3,GenericAI - dbw 3,GenericAI - dbw 3,GenericAI - dbw 3,GenericAI - dbw 3,JugglerAI ; juggler - dbw 3,GenericAI - dbw 3,GenericAI - dbw 2,BlackbeltAI ; blackbelt - dbw 3,GenericAI - dbw 3,GenericAI - dbw 1,GenericAI ; chief - dbw 3,GenericAI - dbw 1,GiovanniAI ; giovanni - dbw 3,GenericAI - dbw 2,CooltrainerMAI ; cooltrainerm - dbw 1,CooltrainerFAI ; cooltrainerf - dbw 2,BrunoAI ; bruno - dbw 5,BrockAI ; brock - dbw 1,MistyAI ; misty - dbw 1,LtSurgeAI ; surge - dbw 1,ErikaAI ; erika - dbw 2,KogaAI ; koga - dbw 2,BlaineAI ; blaine - dbw 1,SabrinaAI ; sabrina - dbw 3,GenericAI - dbw 1,Sony2AI ; sony2 - dbw 1,Sony3AI ; sony3 - dbw 2,LoreleiAI ; lorelei - dbw 3,GenericAI - dbw 2,AgathaAI ; agatha - dbw 1,LanceAI ; lance - -JugglerAI: ; 3a5e9 (e:65e9) - cp $40 - ret nc - jp Func_3a72a - -BlackbeltAI: ; 3a5ef (e:65ef) - cp $20 - ret nc - jp AIUseXAttack - -GiovanniAI: ; 3a5f5 (e:65f5) - cp $40 - ret nc - jp AIUseGuardSpec - -CooltrainerMAI: ; 3a5fb (e:65fb) - cp $40 - ret nc - jp AIUseXAttack - -CooltrainerFAI: ; 3a601 (e:6601) - cp $40 - ld a,$A - call Func_3a7cf - jp c,AIUseHyperPotion - ld a,5 - call Func_3a7cf - ret nc - jp Func_3a72a +BuildingRageText: ; 3e2f8 (f:62f8) + TX_FAR _BuildingRageText + db "@" -BrockAI: ; 3a614 (e:6614) -; if his active monster has a status condition, use a full heal - ld a,[W_ENEMYMONSTATUS] +; copy last move for Mirror Move +; sets zero flag on failure and unsets zero flag on success +MirrorMoveCopyMove: ; 3e2fd (f:62fd) + ld a,[H_WHOSETURN] and a - ret z - jp AIUseFullHeal - -MistyAI: ; 3a61c (e:661c) - cp $40 - ret nc - jp AIUseXDefend - -LtSurgeAI: ; 3a622 (e:6622) - cp $40 - ret nc - jp AIUseXSpeed - -ErikaAI: ; 3a628 (e:6628) - cp $80 - ret nc - ld a,$A - call Func_3a7cf - ret nc - jp AIUseSuperPotion - -KogaAI: ; 3a634 (e:6634) - cp $40 - ret nc - jp AIUseXAttack - -BlaineAI: ; 3a63a (e:663a) - cp $40 - ret nc - jp AIUseSuperPotion - -SabrinaAI: ; 3a640 (e:6640) - cp $40 - ret nc - ld a,$A - call Func_3a7cf - ret nc - jp AIUseHyperPotion - -Sony2AI: ; 3a64c (e:664c) - cp $20 - ret nc - ld a,5 - call Func_3a7cf - ret nc - jp AIUsePotion - -Sony3AI: ; 3a658 (e:6658) - cp $20 - ret nc - ld a,5 - call Func_3a7cf - ret nc - jp AIUseFullRestore - -LoreleiAI: ; 3a664 (e:6664) - cp $80 - ret nc - ld a,5 - call Func_3a7cf - ret nc - jp AIUseSuperPotion - -BrunoAI: ; 3a670 (e:6670) - cp $40 - ret nc - jp AIUseXDefend - -AgathaAI: ; 3a676 (e:6676) - cp $14 - jp c,Func_3a72a - cp $80 - ret nc - ld a,4 - call Func_3a7cf - ret nc - jp AIUseSuperPotion - -LanceAI: ; 3a687 (e:6687) - cp $80 - ret nc - ld a,5 - call Func_3a7cf - ret nc - jp AIUseHyperPotion - -GenericAI: ; 3a693 (e:6693) - and a ; clear carry +; values for player turn + ld a,[$ccf2] + ld hl,wPlayerSelectedMove + ld de,W_PLAYERMOVENUM + jr z,.next +; values for enemy turn + ld a,[$ccf1] + ld de,W_ENEMYMOVENUM + ld hl,wEnemySelectedMove +.next + ld [hl],a + cp a,MIRROR_MOVE ; did the target pokemon also use Mirror Move? + jr z,.mirrorMoveFailed + and a ; null move? + jr nz,ReloadMoveData +.mirrorMoveFailed +; Mirror Move fails on itself and null moves + ld hl,MirrorMoveFailedText + call PrintText + xor a ret -; end of individual trainer AI routines +MirrorMoveFailedText: ; 3e324 (f:6324) + TX_FAR _MirrorMoveFailedText + db "@" -DecrementAICount: ; 3a695 (e:6695) - ld hl,wAICount - dec [hl] - scf +; function used to reload move data for moves like Mirror Move and Metronome +ReloadMoveData: ; 3e329 (f:6329) + ld [$d11e],a + dec a + ld hl,Moves + ld bc,$0006 + call AddNTimes + ld a,BANK(Moves) + call FarCopyData ; copy the move's stats + call IncrementMovePP +; the follow two function calls are used to reload the move name + call GetMoveName + call CopyStringToCF4B + ld a,$01 + and a ret -Func_3a69b: ; 3a69b (e:669b) - ld a,(SFX_08_3e - SFX_Headers_08) / 3 - jp PlaySoundWaitForCurrent - -AIUseFullRestore: ; 3a6a0 (e:66a0) - call AICureStatus - ld a,FULL_RESTORE - ld [$CF05],a - ld de,wHPBarOldHP - ld hl,$CFE7 - ld a,[hld] - ld [de],a - inc de - ld a,[hl] - ld [de],a - inc de - ld hl,$CFF5 - ld a,[hld] - ld [de],a - inc de - ld [wHPBarMaxHP],a - ld [$CFE7],a - ld a,[hl] - ld [de],a - ld [wHPBarMaxHP+1],a - ld [W_ENEMYMONCURHP],a - jr Func_3a718 - -AIUsePotion: ; 3a6ca (e:66ca) -; enemy trainer heals his monster with a potion - ld a,POTION - ld b,20 - jr AIRecoverHP - -AIUseSuperPotion: ; 3a6d0 (e:66d0) -; enemy trainer heals his monster with a super potion - ld a,SUPER_POTION - ld b,50 - jr AIRecoverHP +; function that picks a random move for metronome +MetronomePickMove: ; 3e348 (f:6348) + xor a + ld [$cc5b],a + ld a,METRONOME + call PlayMoveAnimation ; play Metronome's animation +; values for player turn + ld de,W_PLAYERMOVENUM + ld hl,wPlayerSelectedMove + ld a,[H_WHOSETURN] + and a + jr z,.pickMoveLoop +; values for enemy turn + ld de,W_ENEMYMOVENUM + ld hl,wEnemySelectedMove +; loop to pick a random number in the range [1, $a5) to be the move used by Metronome +.pickMoveLoop + call GenRandomInBattle ; random number + and a + jr z,.pickMoveLoop + cp a,STRUGGLE ; max normal move number + 1 (this is Struggle's move number) + jr nc,.pickMoveLoop + cp a,METRONOME + jr z,.pickMoveLoop + ld [hl],a + jr ReloadMoveData -AIUseHyperPotion: ; 3a6d6 (e:66d6) -; enemy trainer heals his monster with a hyper potion - ld a,HYPER_POTION - ld b,200 - ; fallthrough +; this function increments the current move's PP +; it's used to prevent moves that run another move within the same turn +; (like Mirror Move and Metronome) from losing 2 PP +IncrementMovePP: ; 3e373 (f:6373) + ld a,[H_WHOSETURN] + and a +; values for player turn + ld hl,W_PLAYERMONPP + ld de,W_PARTYMON1_MOVE1PP + ld a,[wPlayerMoveListIndex] + jr z,.next +; values for enemy turn + ld hl,W_ENEMYMONPP + ld de,$d8c1 ; enemy party pokemon 1 PP + ld a,[wEnemyMoveListIndex] +.next + ld b,$00 + ld c,a + add hl,bc + inc [hl] ; increment PP in the currently battling pokemon memory location + ld h,d + ld l,e + add hl,bc + ld a,[H_WHOSETURN] + and a + ld a,[wPlayerMonNumber] ; value for player turn + jr z,.next2 + ld a,[W_ENEMYMONNUMBER] ; value for enemy turn +.next2 + ld bc,$002c + call AddNTimes + inc [hl] ; increment PP in the party memory location + ret -AIRecoverHP: ; 3a6da (e:66da) -; heal b HP and print "trainer used $(a) on pokemon!" - ld [$CF05],a - ld hl,$CFE7 - ld a,[hl] - ld [wHPBarOldHP],a - add b - ld [hld],a - ld [wHPBarNewHP],a - ld a,[hl] - ld [wHPBarOldHP+1],a - ld [wHPBarNewHP+1],a - jr nc,.next - inc a - ld [hl],a - ld [wHPBarNewHP+1],a +; function to adjust the base damage of an attack to account for type effectiveness +AdjustDamageForMoveType: ; 3e3a5 (f:63a5) +; values for player turn + ld hl,W_PLAYERMONTYPES + ld a,[hli] + ld b,a ; b = type 1 of attacker + ld c,[hl] ; c = type 2 of attacker + ld hl,W_ENEMYMONTYPES + ld a,[hli] + ld d,a ; d = type 1 of defender + ld e,[hl] ; e = type 2 of defender + ld a,[W_PLAYERMOVETYPE] + ld [$d11e],a + ld a,[H_WHOSETURN] + and a + jr z,.next +; values for enemy turn + ld hl,W_ENEMYMONTYPES + ld a,[hli] + ld b,a ; b = type 1 of attacker + ld c,[hl] ; c = type 2 of attacker + ld hl,W_PLAYERMONTYPES + ld a,[hli] + ld d,a ; d = type 1 of defender + ld e,[hl] ; e = type 2 of defender + ld a,[W_ENEMYMOVETYPE] + ld [$d11e],a .next - inc hl + ld a,[$d11e] ; move type + cp b ; does the move type match type 1 of the attacker? + jr z,.sameTypeAttackBonus + cp c ; does the move type match type 2 of the attacker? + jr z,.sameTypeAttackBonus + jr .skipSameTypeAttackBonus +.sameTypeAttackBonus +; if the move type matches one of the attacker's types + ld hl,W_DAMAGE + 1 ld a,[hld] + ld h,[hl] + ld l,a ; hl = damage + ld b,h + ld c,l ; bc = damage + srl b + rr c ; bc = floor(0.5 * damage) + add hl,bc ; hl = floor(1.5 * damage) +; store damage + ld a,h + ld [W_DAMAGE],a + ld a,l + ld [W_DAMAGE + 1],a + ld hl,$d05b + set 7,[hl] +.skipSameTypeAttackBonus + ld a,[$d11e] + ld b,a ; b = move type + ld hl,TypeEffects +.loop + ld a,[hli] ; a = "attacking type" of the current type pair + cp a,$ff + jr z,.done + cp b ; does move type match "attacking type"? + jr nz,.nextTypePair + ld a,[hl] ; a = "defending type" of the current type pair + cp d ; does type 1 of defender match "defending type"? + jr z,.matchingPairFound + cp e ; does type 2 of defender match "defending type"? + jr z,.matchingPairFound + jr .nextTypePair +.matchingPairFound +; if the move type matches the "attacking type" and one of the defender's types matches the "defending type" + push hl + push bc + inc hl + ld a,[$d05b] + and a,$80 ld b,a - ld de,$CFF5 - ld a,[de] - dec de - ld [wHPBarMaxHP],a - sub b - ld a,[hli] - ld b,a - ld a,[de] - ld [wHPBarMaxHP+1],a - sbc b - jr nc,Func_3a718 - inc de - ld a,[de] - dec de - ld [hld],a - ld [wHPBarNewHP],a - ld a,[de] - ld [hl],a - ld [wHPBarNewHP+1],a - ; fallthrough - -Func_3a718: ; 3a718 (e:6718) - call AIPrintItemUse_ - FuncCoord 2, 2 ; $c3ca - ld hl,Coord + ld a,[hl] ; a = damage multiplier + ld [H_MULTIPLIER],a + add b + ld [$d05b],a xor a - ld [$CF94],a - ld a,$48 - call Predef - jp DecrementAICount - -Func_3a72a: ; 3a72a (e:672a) - ld a,[wEnemyPartyCount] - ld c,a - ld hl,W_ENEMYMON1HP - - ld d,0 ; keep count of unfainted monsters - - ; count how many monsters haven't fainted yet -.loop + ld [H_MULTIPLICAND],a + ld hl,W_DAMAGE ld a,[hli] - ld b,a + ld [H_MULTIPLICAND + 1],a ld a,[hld] - or b - jr z,.Fainted ; has monster fainted? - inc d -.Fainted - push bc - ld bc,$2C - add hl,bc + ld [H_MULTIPLICAND + 2],a + call Multiply + ld a,10 + ld [H_DIVISOR],a + ld b,$04 + call Divide + ld a,[H_QUOTIENT + 2] + ld [hli],a + ld b,a + ld a,[H_QUOTIENT + 3] + ld [hl],a + or b ; is damage 0? + jr nz,.skipTypeImmunity +.typeImmunity +; if damage is 0, make the move miss + inc a + ld [W_MOVEMISSED],a +.skipTypeImmunity pop bc - dec c - jr nz,.loop - - ld a,d ; how many available monsters are there? - cp 2 ; don't bother if only 1 or 2 - jp nc,Func_3a74b - and a + pop hl +.nextTypePair + inc hl + inc hl + jp .loop +.done ret -Func_3a74b: ; 3a74b (e:674b) - -; prepare to withdraw the active monster: copy hp, number, and status to roster - - ld a,[W_ENEMYMONNUMBER] - ld hl,W_ENEMYMON1HP - ld bc,$2C - call AddNTimes - ld d,h - ld e,l - ld hl,W_ENEMYMONCURHP - ld bc,4 - call CopyData - - ld hl, AIBattleWithdrawText - call PrintText - - ld a,1 - ld [$D11D],a - ld hl,EnemySendOut - ld b,BANK(EnemySendOut) - call Bankswitch - xor a - ld [$D11D],a - - ld a,[W_ISLINKBATTLE] - cp 4 +; function to tell how effective the type of an enemy attack is on the player's current pokemon +; this doesn't take into account the effects that dual types can have +; (e.g. 4x weakness / resistance, weaknesses and resistances canceling) +; the result is stored in [$D11E] +; ($05 is not very effective, $10 is neutral, $14 is super effective) +; as far is can tell, this is only used once in some AI code to help decide which move to use +AIGetTypeEffectiveness: ; 3e449 (f:6449) + ld a,[W_ENEMYMOVETYPE] + ld d,a ; d = type of enemy move + ld hl,W_PLAYERMONTYPES + ld b,[hl] ; b = type 1 of player's pokemon + inc hl + ld c,[hl] ; c = type 2 of player's pokemon + ld a,$10 + ld [$d11e],a ; initialize [$D11E] to neutral effectiveness + ld hl,TypeEffects +.loop + ld a,[hli] + cp a,$ff ret z - scf + cp d ; match the type of the move + jr nz,.nextTypePair1 + ld a,[hli] + cp b ; match with type 1 of pokemon + jr z,.done + cp c ; or match with type 2 of pokemon + jr z,.done + jr .nextTypePair2 +.nextTypePair1 + inc hl +.nextTypePair2 + inc hl + jr .loop +.done + ld a,[hl] + ld [$d11e],a ; store damage multiplier ret -AIBattleWithdrawText: ; 3a781 (e:6781) - TX_FAR _AIBattleWithdrawText - db "@" - -AIUseFullHeal: ; 3a786 (e:6786) - call Func_3a69b - call AICureStatus - ld a,FULL_HEAL - jp AIPrintItemUse +INCLUDE "data/type_effects.asm" -AICureStatus: ; 3a791 (e:6791) -; cures the status of enemy's active pokemon - ld a,[W_ENEMYMONNUMBER] - ld hl,$D8A8 - ld bc,$2C - call AddNTimes +; some tests that need to pass for a move to hit +MoveHitTest: ; 3e56b (f:656b) +; player's turn + ld hl,W_ENEMYBATTSTATUS1 + ld de,W_PLAYERMOVEEFFECT + ld bc,W_ENEMYMONSTATUS + ld a,[H_WHOSETURN] + and a + jr z,.dreamEaterCheck +; enemy's turn + ld hl,W_PLAYERBATTSTATUS1 + ld de,W_ENEMYMOVEEFFECT + ld bc,W_PLAYERMONSTATUS +.dreamEaterCheck + ld a,[de] + cp a,DREAM_EATER_EFFECT + jr nz,.swiftCheck + ld a,[bc] + and a,$07 ; is the target pokemon sleeping? + jp z,.moveMissed +.swiftCheck + ld a,[de] + cp a,SWIFT_EFFECT + ret z ; Swift never misses (interestingly, Azure Heights lists this is a myth, but it appears to be true) + call CheckTargetSubstitute ; substitute check (note that this overwrites a) + jr z,.checkForDigOrFlyStatus +; this code is buggy. it's supposed to prevent HP draining moves from working on substitutes. +; since $7b79 overwrites a with either $00 or $01, it never works. + cp a,DRAIN_HP_EFFECT ; $03 + jp z,.moveMissed + cp a,DREAM_EATER_EFFECT ; $08 + jp z,.moveMissed +.checkForDigOrFlyStatus + bit 6,[hl] + jp nz,.moveMissed + ld a,[H_WHOSETURN] + and a + jr nz,.enemyTurn +.playerTurn +; this checks if the move effect is disallowed by mist + ld a,[W_PLAYERMOVEEFFECT] + cp a,$12 + jr c,.skipEnemyMistCheck + cp a,$1a + jr c,.enemyMistCheck + cp a,$3a + jr c,.skipEnemyMistCheck + cp a,$42 + jr c,.enemyMistCheck + jr .skipEnemyMistCheck +.enemyMistCheck +; if move effect is from $12 to $19 inclusive or $3a to $41 inclusive +; i.e. the following moves +; GROWL, TAIL WHIP, LEER, STRING SHOT, SAND-ATTACK, SMOKESCREEN, KINESIS, +; FLASH, CONVERSION, HAZE*, SCREECH, LIGHT SCREEN*, REFLECT* +; the moves that are marked with an asterisk are not affected since this +; function is not called when those moves are used +; XXX are there are any others like those three? + ld a,[W_ENEMYBATTSTATUS2] + bit 1,a + jp nz,.moveMissed +.skipEnemyMistCheck + ld a,[W_PLAYERBATTSTATUS2] + bit 0,a ; is the player using X Accuracy? + ret nz ; if so, always hit regardless of accuracy/evasion + jr .calcHitChance +.enemyTurn + ld a,[W_ENEMYMOVEEFFECT] + cp a,$12 + jr c,.skipPlayerMistCheck + cp a,$1a + jr c,.playerMistCheck + cp a,$3a + jr c,.skipPlayerMistCheck + cp a,$42 + jr c,.playerMistCheck + jr .skipPlayerMistCheck +.playerMistCheck +; similar to enemy mist check + ld a,[W_PLAYERBATTSTATUS2] + bit 1,a + jp nz,.moveMissed +.skipPlayerMistCheck + ld a,[W_ENEMYBATTSTATUS2] + bit 0,a ; is the enemy using X Accuracy? + ret nz ; if so, always hit regardless of accuracy/evasion +.calcHitChance + call CalcHitChance ; scale the move accuracy according to attacker's accuracy and target's evasion + ld a,[W_PLAYERMOVEACCURACY] + ld b,a + ld a,[H_WHOSETURN] + and a + jr z,.doAccuracyCheck + ld a,[W_ENEMYMOVEACCURACY] + ld b,a +.doAccuracyCheck +; if the random number generated is greater than or equal to the scaled accuracy, the move misses +; note that this means that even the highest accuracy is still just a 255/256 chance, not 100% + call GenRandomInBattle ; random number + cp b + jr nc,.moveMissed + ret +.moveMissed xor a - ld [hl],a ; clear status in enemy team roster - ld [W_ENEMYMONSTATUS],a ; clear status of active enemy - ld hl,$D069 - res 0,[hl] + ld hl,W_DAMAGE ; zero the damage + ld [hli],a + ld [hl],a + inc a + ld [W_MOVEMISSED],a + ld a,[H_WHOSETURN] + and a + jr z,.playerTurn2 +.enemyTurn2 + ld hl,W_ENEMYBATTSTATUS1 + res 5,[hl] ; end multi-turn attack e.g. wrap + ret +.playerTurn2 + ld hl,W_PLAYERBATTSTATUS1 + res 5,[hl] ; end multi-turn attack e.g. wrap ret -AIUseXAccuracy: ; 0x3a7a8 unused - call Func_3a69b - ld hl,$D068 - set 0,[hl] - ld a,X_ACCURACY - jp AIPrintItemUse - -AIUseGuardSpec: ; 3a7b5 (e:67b5) - call Func_3a69b - ld hl,$D068 - set 1,[hl] - ld a,GUARD_SPEC_ - jp AIPrintItemUse - -AIUseDireHit: ; 0x3a7c2 unused - call Func_3a69b - ld hl,$D068 - set 2,[hl] - ld a,DIRE_HIT - jp AIPrintItemUse - -Func_3a7cf: ; 3a7cf (e:67cf) - ld [H_DIVISOR],a - ld hl,$CFF4 - ld a,[hli] - ld [H_DIVIDEND],a - ld a,[hl] - ld [H_DIVIDEND + 1],a - ld b,2 - call Divide - ld a,[H_QUOTIENT + 3] +; values for player turn +CalcHitChance: ; 3e624 (f:6624) + ld hl,W_PLAYERMOVEACCURACY + ld a,[H_WHOSETURN] + and a + ld a,[wPlayerMonAccuracyMod] + ld b,a + ld a,[wEnemyMonEvasionMod] ld c,a - ld a,[H_QUOTIENT + 2] + jr z,.next +; values for enemy turn + ld hl,W_ENEMYMOVEACCURACY + ld a,[wEnemyMonAccuracyMod] ld b,a - ld hl,$CFE7 - ld a,[hld] - ld e,a - ld a,[hl] - ld d,a - ld a,d - sub b - ret nz - ld a,e + ld a,[wPlayerMonEvasionMod] + ld c,a +.next + ld a,$0e sub c - ret - -AIUseXAttack: ; 3a7f2 (e:67f2) - ld b,$A - ld a,X_ATTACK - jr AIIncreaseStat - -AIUseXDefend: ; 3a7f8 (e:67f8) - ld b,$B - ld a,X_DEFEND - jr AIIncreaseStat - -AIUseXSpeed: ; 3a7fe (e:67fe) - ld b,$C - ld a,X_SPEED - jr AIIncreaseStat - -AIUseXSpecial: ; 3a804 (e:6804) - ld b,$D - ld a,X_SPECIAL - ; fallthrough - -AIIncreaseStat: ; 3a808 (e:6808) - ld [$CF05],a + ld c,a ; c = 14 - EVASIONMOD (this "reflects" the value over 7, so that an increase in the target's evasion decreases the hit chance instead of increasing the hit chance) +; zero the high bytes of the multiplicand + xor a + ld [H_MULTIPLICAND],a + ld [H_MULTIPLICAND + 1],a + ld a,[hl] + ld [H_MULTIPLICAND + 2],a ; set multiplicand to move accuracy + push hl + ld d,$02 ; loop has two iterations +; loop to do the calculations, the first iteration multiplies by the accuracy ratio and the second iteration multiplies by the evasion ratio +.loop push bc - call AIPrintItemUse_ + ld hl, StatModifierRatios ; $76cb ; stat modifier ratios + dec b + sla b + ld c,b + ld b,$00 + add hl,bc ; hl = address of stat modifier ratio pop bc - ld hl,$CFCD - ld a,[hld] - push af + ld a,[hli] + ld [H_MULTIPLIER],a ; set multiplier to the numerator of the ratio + call Multiply ld a,[hl] - push af - push hl - ld a,$AF - ld [hli],a - ld [hl],b - ld hl, Func_3f428 - ld b, BANK(Func_3f428) - call Bankswitch + ld [H_DIVISOR],a ; set divisor to the the denominator of the ratio (the dividend is the product of the previous multiplication) + ld b,$04 ; number of bytes in the dividend + call Divide + ld a,[H_QUOTIENT + 3] + ld b,a + ld a,[H_QUOTIENT + 2] + or b + jp nz,.nextCalculation +; make sure the result is always at least one + ld [H_QUOTIENT + 2],a + ld a,$01 + ld [H_QUOTIENT + 3],a +.nextCalculation + ld b,c + dec d + jr nz,.loop + ld a,[H_QUOTIENT + 2] + and a ; is the calculated hit chance over 0xFF? + ld a,[H_QUOTIENT + 3] + jr z,.storeAccuracy +; if calculated hit chance over 0xFF + ld a,$ff ; set the hit chance to 0xFF +.storeAccuracy pop hl - pop af - ld [hli],a - pop af - ld [hl],a - jp DecrementAICount - -AIPrintItemUse: ; 3a82c (e:682c) - ld [$CF05],a - call AIPrintItemUse_ - jp DecrementAICount - -AIPrintItemUse_: ; 3a835 (e:6835) -; print "x used [$CF05] on z!" - ld a,[$CF05] - ld [$D11E],a - call GetItemName - ld hl, AIBattleUseItemText - jp PrintText - -AIBattleUseItemText: ; 3a844 (e:6844) - TX_FAR _AIBattleUseItemText - db "@" - -DrawAllPokeballs: ; 3a849 (e:6849) - call LoadPartyPokeballGfx - call SetupOwnPartyPokeballs - ld a, [W_ISINBATTLE] ; $d057 - dec a - ret z ; return if wild pokémon - jp SetupEnemyPartyPokeballs - -DrawEnemyPokeballs: ; 0x3a857 - call LoadPartyPokeballGfx - jp SetupEnemyPartyPokeballs - -LoadPartyPokeballGfx: ; 3a85d (e:685d) - ld de, PokeballTileGraphics ; $697e - ld hl, $8310 - ld bc, (BANK(PokeballTileGraphics) << 8) + $04 - jp CopyVideoData - -SetupOwnPartyPokeballs: ; 3a869 (e:6869) - call Func_3a902 - ld hl, W_PARTYMON1DATA - ld de, W_NUMINPARTY ; $d163 - call SetupPokeballs - ld a, $60 - ld hl, W_BASECOORDX ; $d081 - ld [hli], a - ld [hl], a - ld a, $8 - ld [$cd3e], a - ld hl, wOAMBuffer - jp Func_3a8e1 - -SetupEnemyPartyPokeballs: ; 3a887 (e:6887) - call Func_3a919 - ld hl, wEnemyMons - ld de, wEnemyPartyCount ; $d89c - call SetupPokeballs - ld hl, W_BASECOORDX ; $d081 - ld a, $48 - ld [hli], a - ld [hl], $20 - ld a, $f8 - ld [$cd3e], a - ld hl, $c318 - jp Func_3a8e1 - -SetupPokeballs: ; 0x3a8a6 - ld a, [de] - push af - ld de, wBuffer - ld c, $6 ; max num of partymons - ld a, $34 ; empty pokeball -.emptyloop - ld [de], a - inc de - dec c - jr nz, .emptyloop ; 0x3a8b2 $fb - pop af - ld de, wBuffer -.monloop - push af - call PickPokeball - inc de - pop af - dec a - jr nz, .monloop + ld [hl],a ; store the hit chance in the move accuracy variable ret -PickPokeball: ; 3a8c2 (e:68c2) - inc hl +Func_3e687: ; 3e687 (f:6687) + ld hl, W_DAMAGE ; $d0d7 ld a, [hli] and a - jr nz, .alive + jr nz, .asm_3e692 ld a, [hl] - and a - ld b, $33 ; crossed ball (fainted) - jr z, .done_fainted -.alive - inc hl - inc hl - ld a, [hl] ; status - and a - ld b, $32 ; black ball (status) - jr nz, .done - dec b ; regular ball - jr .done -.done_fainted - inc hl - inc hl -.done - ld a, b - ld [de], a - ld bc, $0028 ; rest of mon struct - add hl, bc - ret - -Func_3a8e1: ; 3a8e1 (e:68e1) - ld de, $cee9 - ld c, $6 -.asm_3a8e6 - ld a, [W_BASECOORDY] ; $d082 - ld [hli], a - ld a, [W_BASECOORDX] ; $d081 - ld [hli], a - ld a, [de] - ld [hli], a + cp $2 + ret c +.asm_3e692 xor a + ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) + dec hl + ld a, [hli] + ld [$ff97], a + ld a, [hl] + ld [$ff98], a +.asm_3e69c + call GenRandomInBattle + rrca + cp $d9 + jr c, .asm_3e69c + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + call Multiply + ld a, $ff + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + ld b, $4 + call Divide + ld a, [$ff97] + ld hl, W_DAMAGE ; $d0d7 ld [hli], a - ld a, [W_BASECOORDX] ; $d081 - ld b, a - ld a, [$cd3e] - add b - ld [W_BASECOORDX], a ; $d081 - inc de - dec c - jr nz, .asm_3a8e6 + ld a, [$ff98] + ld [hl], a ret -Func_3a902: ; 3a902 (e:6902) - ld hl, PlayerBattleHUDGraphicsTiles ; $6916 - ld de, $cd3f - ld bc, $3 - call CopyData - FuncCoord 18, 10 ; $c47a - ld hl, Coord - ld de, rIE ; $ffff - jr Func_3a930 - -PlayerBattleHUDGraphicsTiles: ; 3a916 (e:6916) -; The tile numbers for specific parts of the battle display for the player's pokemon - db $73 ; unused ($73 is hardcoded into the routine that uses these bytes) - db $77 ; lower-right corner tile of the HUD - db $6F ; lower-left triangle tile of the HUD - -Func_3a919: ; 3a919 (e:6919) - ld hl, EnemyBattleHUDGraphicsTiles ; $692d - ld de, $cd3f - ld bc, $3 - call CopyData - FuncCoord 1, 2 ; $c3c9 - ld hl, Coord - ld de, $1 - jr Func_3a930 - -EnemyBattleHUDGraphicsTiles: ; 3a92d (e:692d) -; The tile numbers for specific parts of the battle display for the enemy - db $73 ; unused ($73 is hardcoded in the routine that uses these bytes) - db $74 ; lower-left corner tile of the HUD - db $78 ; lower-right triangle tile of the HUD - -Func_3a930: ; 3a930 (e:6930) - ld [hl], $73 - ld bc, $14 - add hl, bc - ld a, [$cd40] - ld [hl], a - ld a, $8 -.asm_3a93c - add hl, de - ld [hl], $76 - dec a - jr nz, .asm_3a93c - add hl, de - ld a, [$cd41] - ld [hl], a - ret - -Func_3a948: ; 3a948 (e:6948) - call LoadPartyPokeballGfx - ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) - ld de, W_NUMINPARTY ; $d163 - call SetupPokeballs - ld hl, W_BASECOORDX ; $d081 - ld a, $50 - ld [hli], a - ld [hl], $40 - ld a, $8 - ld [$cd3e], a - ld hl, wOAMBuffer - call Func_3a8e1 - ld hl, wEnemyMons ; $d8a4 - ld de, wEnemyPartyCount ; $d89c - call SetupPokeballs - ld hl, W_BASECOORDX ; $d081 - ld a, $50 - ld [hli], a - ld [hl], $68 - ld hl, $c318 - jp Func_3a8e1 - -; four tiles: pokeball, black pokeball (status ailment), crossed out pokeball (faited) and pokeball slot (no mon) -PokeballTileGraphics:: ; 3a97e (e:697e) - INCBIN "gfx/pokeball.2bpp" - -; tiles for gameboy and link cable graphics used for trading sequence animation -TradingAnimationGraphics: ; 3a9be (e:69be) - INCBIN "gfx/game_boy.norepeat.2bpp" - INCBIN "gfx/link_cable.2bpp" - -; 4 tiles for actual wire transfer animation (pokeball wandering inside wire) -TradingAnimationGraphics2: ; 3acce (e:6cce) - INCBIN "gfx/trade2.2bpp" - -Func_3ad0e: ; 3ad0e (e:6d0e) - ld hl, $ccd3 - xor a - ld [hl], a - ld a, [wWhichPokemon] ; $cf92 - ld c, a +Func_3e6bc: ; 3e6bc (f:66bc) + ld a, [wEnemySelectedMove] ; $ccdd + inc a + jp z, Func_3e88c + call PrintGhostText + jp z, Func_3e88c + ld a, [W_ISLINKBATTLE] ; $d12b + cp $4 + jr nz, .asm_3e6dc ld b, $1 - call Func_3b057 - -Func_3ad1c: ; 3ad1c (e:6d1c) - ld a, [$ffd7] - push af - xor a - ld [$d121], a - dec a - ld [wWhichPokemon], a ; $cf92 - push hl - push bc - push de - ld hl, W_NUMINPARTY ; $d163 - push hl -asm_3ad2e: ; 3ad2e (e:6d2e) - ld hl, wWhichPokemon ; $cf92 + ld a, [$cc3e] + cp $e + jr z, .asm_3e6dc + cp $4 + ret nc +.asm_3e6dc + ld hl, $ccd5 inc [hl] - pop hl - inc hl - ld a, [hl] - cp $ff - jp z, Func_3aede - ld [$cee9], a - push hl - ld a, [wWhichPokemon] ; $cf92 - ld c, a - ld hl, $ccd3 - ld b, $2 - call Func_3b057 - ld a, c - and a - jp z, asm_3ad2e - ld a, [$cee9] - dec a - ld b, $0 - ld hl, EvosMovesPointerTable - add a - rl b - ld c, a - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - push hl - ld a, [$cf91] - push af xor a - ld [$cc49], a - call LoadMonData - pop af - ld [$cf91], a - pop hl + ld [W_MOVEMISSED], a ; $d05f + ld [$ccf4], a + ld a, $a + ld [$d05b], a + call Func_3e88f + jr nz, .asm_3e6f2 + jp [hl] +.asm_3e6f2 + ld hl, W_ENEMYBATTSTATUS1 ; $d067 + bit 4, [hl] + jr nz, asm_3e70b + call GetCurrentMove -Func_3ad71: ; 3ad71 (e:6d71) - ld a, [hli] - and a - jr z, asm_3ad2e - ld b, a - cp $3 - jr z, .asm_3ad91 - ld a, [W_ISLINKBATTLE] ; $d12b - cp $32 - jr z, asm_3ad2e - ld a, b - cp $2 - jr z, .asm_3ada4 - ld a, [$ccd4] - and a - jr nz, asm_3ad2e - ld a, b - cp $1 - jr z, .asm_3adad -.asm_3ad91 - ld a, [W_ISLINKBATTLE] ; $d12b - cp $32 - jp nz, Func_3aed9 - ld a, [hli] - ld b, a - ld a, [$cfb9] - cp b - jp c, asm_3ad2e - jr .asm_3adb6 -.asm_3ada4 - ld a, [hli] - ld b, a - ld a, [$cf91] - cp b - jp nz, Func_3aed9 -.asm_3adad - ld a, [hli] - ld b, a - ld a, [$cfb9] - cp b - jp c, Func_3aeda -.asm_3adb6 - ld [W_CURENEMYLVL], a ; $d127 - ld a, $1 - ld [$d121], a - push hl - ld a, [hl] - ld [$ceea], a - ld a, [wWhichPokemon] ; $cf92 - ld hl, W_PARTYMON1NAME ; $d2b5 - call GetPartyMonName - call CopyStringToCF4B - ld hl, IsEvolvingText - call PrintText - ld c, $32 - call DelayFrames - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ld hl, wTileMap - ld bc, $c14 - call ClearScreenArea - ld a, $1 - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ld a, $ff - ld [$cfcb], a - call CleanLCD_OAM - ld hl, Func_7bde9 - ld b, BANK(Func_7bde9) - call Bankswitch - jp c, Func_3af2e - ld hl, EvolvedText - call PrintText - pop hl - ld a, [hl] +Func_3e6fc: ; 3e6fc (f:66fc) + ld a, [W_ENEMYMOVEEFFECT] ; $cfcd + cp $27 + jp z, Func_3f132 + cp $2b + jp z, Func_3f132 + jr asm_3e72b +asm_3e70b: ; 3e70b (f:670b) + ld hl, W_ENEMYBATTSTATUS1 ; $d067 + res 4, [hl] + res 6, [hl] + ld a, [W_ENEMYMOVENUM] ; $cfcc ld [$d0b5], a - ld [$cf98], a - ld [$ceea], a - ld a, MONSTER_NAME - ld [W_LISTTYPE], a - ld a, $e + ld a, $2c ld [$d0b7], a + ld a, MOVE_NAME + ld [W_LISTTYPE], a call GetName - push hl - ld hl, IntoText - call Func_3c59 - ld a, (SFX_02_3b - SFX_Headers_02) / 3 - call PlaySoundWaitForCurrent - call WaitForSoundToFinish - ld c, $28 - call DelayFrames - call ClearScreen - call Func_3aef7 - ld a, [$d11e] - push af - ld a, [$d0b5] - ld [$d11e], a - ld a, $3a - call Predef ; indirect jump to IndexToPokedex (41010 (10:5010)) - ld a, [$d11e] - dec a - ld hl, BulbasaurBaseStats ; $43de - ld bc, $1c - call AddNTimes - ld de, W_MONHEADER - call CopyData - ld a, [$d0b5] - ld [$d0b8], a - pop af - ld [$d11e], a - ld hl, $cfa8 - ld de, $cfba - ld b, $1 - call CalcStats - ld a, [wWhichPokemon] ; $cf92 - ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) - ld bc, $2c - call AddNTimes - ld e, l - ld d, h - push hl - push bc - ld bc, $22 - add hl, bc - ld a, [hli] - ld b, a - ld c, [hl] - ld hl, $cfbb - ld a, [hld] - sub c - ld c, a - ld a, [hl] - sbc b - ld b, a - ld hl, $cf9a - ld a, [hl] - add c - ld [hld], a - ld a, [hl] - adc b - ld [hl], a - dec hl - pop bc - call CopyData - ld a, [$d0b5] - ld [$d11e], a - xor a - ld [$cc49], a - call Func_3af5b - pop hl - ld a, $42 - call Predef ; indirect jump to SetPartyMonTypes (5db5e (17:5b5e)) - ld a, [W_ISINBATTLE] ; $d057 - and a - call z, Func_3af52 - ld a, $3a - call Predef ; indirect jump to IndexToPokedex (41010 (10:5010)) - ld a, [$d11e] - dec a - ld c, a - ld b, $1 - ld hl, wPokedexOwned ; $d2f7 - push bc - call Func_3b057 - pop bc - ld hl, wPokedexSeen ; $d30a - call Func_3b057 - pop de - pop hl - ld a, [$cf98] - ld [hl], a - push hl - ld l, e - ld h, d - jr Func_3aeda - -Func_3aed9: ; 3aed9 (e:6ed9) - inc hl - -Func_3aeda: ; 3aeda (e:6eda) - inc hl - jp Func_3ad71 - -Func_3aede: ; 3aede (e:6ede) - pop de - pop bc - pop hl - pop af - ld [$ffd7], a - ld a, [W_ISLINKBATTLE] ; $d12b - cp $32 - ret z - ld a, [W_ISINBATTLE] ; $d057 - and a - ret nz - ld a, [$d121] - and a - call nz, Func_2307 - ret - -Func_3aef7: ; 3aef7 (e:6ef7) - ld a, [$d0b5] - push af - ld a, [$d0b8] - ld [$d0b5], a - call GetName - pop af - ld [$d0b5], a - ld hl, $cd6d - ld de, $cf4b -.asm_3af0e - ld a, [de] - inc de - cp [hl] - inc hl - ret nz - cp $50 - jr nz, .asm_3af0e - ld a, [wWhichPokemon] ; $cf92 - ld bc, $b - ld hl, W_PARTYMON1NAME ; $d2b5 - call AddNTimes - push hl - call GetName - ld hl, $cd6d - pop de - jp CopyData - -Func_3af2e: ; 3af2e (e:6f2e) - ld hl, StoppedEvolvingText - call PrintText - call ClearScreen - pop hl - call Func_3af52 - jp asm_3ad2e - -EvolvedText: ; 3af3e (e:6f3e) - TX_FAR _EvolvedText - db "@" - -IntoText: ; 3af43 (e:6f43) - TX_FAR _IntoText - db "@" - -StoppedEvolvingText: ; 3af48 (e:6f48) - TX_FAR _StoppedEvolvingText - db "@" - -IsEvolvingText: ; 3af4d (e:6f4d) - TX_FAR _IsEvolvingText - db "@" - -Func_3af52: ; 3af52 (e:6f52) - ld a, [W_ISLINKBATTLE] ; $d12b - cp $32 - ret z - jp ReloadTilesetTilePatterns - -Func_3af5b: ; 3af5b (e:6f5b) - ld hl, EvosMovesPointerTable - ld a, [$d11e] - ld [$cf91], a - dec a - ld bc, $0 - ld hl, EvosMovesPointerTable - add a - rl b - ld c, a - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a -.asm_3af73 - ld a, [hli] - and a - jr nz, .asm_3af73 -.asm_3af77 - ld a, [hli] - and a - jr z, .asm_3afb1 - ld b, a - ld a, [W_CURENEMYLVL] ; $d127 - cp b - ld a, [hli] - jr nz, .asm_3af77 - ld d, a - ld a, [$cc49] - and a - jr nz, .asm_3af96 - ld hl, W_PARTYMON1_MOVE1 ; $d173 - ld a, [wWhichPokemon] ; $cf92 - ld bc, $2c - call AddNTimes -.asm_3af96 - ld b, $4 -.asm_3af98 - ld a, [hli] - cp d - jr z, .asm_3afb1 - dec b - jr nz, .asm_3af98 - ld a, d - ld [$d0e0], a - ld [$d11e], a - call GetMoveName + ld de, $cd6d call CopyStringToCF4B - ld a, $1b - call Predef ; indirect jump to Func_6e43 (6e43 (1:6e43)) -.asm_3afb1 - ld a, [$cf91] - ld [$d11e], a - ret - -; writes the moves a mon has at level [W_CURENEMYLVL] to [de] -; move slots are being filled up sequentially and shifted if all slots are full -; [$cee9]: (?) -WriteMonMoves: ; 3afb8 (e:6fb8) - call Load16BitRegisters - push hl - push de - push bc - ld hl, EvosMovesPointerTable - ld b, $0 - ld a, [$cf91] ; cur mon ID - dec a - add a - rl b - ld c, a - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a -.skipEvoEntriesLoop - ld a, [hli] - and a - jr nz, .skipEvoEntriesLoop - jr .firstMove -.nextMove - pop de -.nextMove2 - inc hl -.firstMove - ld a, [hli] ; read level of next move in learnset - and a - jp z, .done ; end of list - ld b, a - ld a, [W_CURENEMYLVL] ; $d127 - cp b - jp c, .done ; mon level < move level (assumption: learnset is sorted by level) - ld a, [$cee9] - and a - jr z, .skipMinLevelCheck - ld a, [wWhichTrade] ; $cd3d (min move level) - cp b - jr nc, .nextMove2 ; min level >= move level -.skipMinLevelCheck - push de - ld c, $4 -.moveAlreadyLearnedCheckLoop - ld a, [de] - inc de - cp [hl] - jr z, .nextMove - dec c - jr nz, .moveAlreadyLearnedCheckLoop - pop de - push de - ld c, $4 -.findEmptySlotLoop - ld a, [de] - and a - jr z, .writeMoveToSlot2 - inc de - dec c - jr nz, .findEmptySlotLoop - pop de ; no empty move slots found - push de - push hl - ld h, d - ld l, e - call WriteMonMoves_ShiftMoveData ; shift all moves one up (deleting move 1) - ld a, [$cee9] - and a - jr z, .writeMoveToSlot - push de - ld bc, $12 - add hl, bc - ld d, h - ld e, l - call WriteMonMoves_ShiftMoveData ; shift all move PP data one up - pop de -.writeMoveToSlot - pop hl -.writeMoveToSlot2 - ld a, [hl] - ld [de], a - ld a, [$cee9] - and a - jr z, .nextMove - push hl ; write move PP value - ld a, [hl] - ld hl, $15 - add hl, de - push hl - dec a - ld hl, Moves - ld bc, $6 - call AddNTimes - ld de, $cee9 - ld a, BANK(Moves) - call FarCopyData - ld a, [$ceee] - pop hl - ld [hl], a - pop hl - jr .nextMove -.done - pop bc - pop de - pop hl - ret - -; shifts all move data one up (freeing 4th move slot) -WriteMonMoves_ShiftMoveData: ; 3b04e (e:704e) - ld c, $3 -.asm_3b050 - inc de - ld a, [de] - ld [hli], a - dec c - jr nz, .asm_3b050 - ret - -Func_3b057: ; 3b057 (e:7057) - ld a, $10 - jp Predef ; indirect jump to HandleBitArray (f666 (3:7666)) - -INCLUDE "data/evos_moves.asm" - -Func_3b9ec: ; 3b9ec (e:79ec) - ld a, [H_WHOSETURN] ; $fff3 - and a - ld de, W_PLAYERMONCURHP ; $d015 - ld hl, W_PLAYERMONMAXHP ; $d023 - ld a, [W_PLAYERMOVENUM] ; $cfd2 - jr z, .asm_3ba03 - ld de, W_ENEMYMONCURHP ; $cfe6 - ld hl, W_ENEMYMONMAXHP ; $cff4 - ld a, [W_ENEMYMOVENUM] ; $cfcc -.asm_3ba03 - ld b, a - ld a, [de] - cp [hl] - inc de - inc hl - ld a, [de] - sbc [hl] - jp z, Func_3ba97 - ld a, b - cp REST - jr nz, .asm_3ba37 - push hl - push de - push af - ld c, $32 - call DelayFrames - ld hl, W_PLAYERMONSTATUS ; $d018 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3ba25 - ld hl, W_ENEMYMONSTATUS ; $cfe9 -.asm_3ba25 - ld a, [hl] - and a - ld [hl], $2 - ld hl, RestText - jr z, .asm_3ba31 - ld hl, RestBecameHealthyText -.asm_3ba31 - call PrintText - pop af - pop de - pop hl -.asm_3ba37 - ld a, [hld] - ld [wHPBarMaxHP], a - ld c, a - ld a, [hl] - ld [wHPBarMaxHP+1], a - ld b, a - jr z, .asm_3ba47 - srl b - rr c -.asm_3ba47 - ld a, [de] - ld [wHPBarOldHP], a - add c - ld [de], a - ld [wHPBarNewHP], a - dec de - ld a, [de] - ld [wHPBarOldHP+1], a - adc b - ld [de], a - ld [wHPBarNewHP+1], a - inc hl - inc de - ld a, [de] - dec de - sub [hl] - dec hl - ld a, [de] - sbc [hl] - jr c, .asm_3ba6f - ld a, [hli] - ld [de], a - ld [wHPBarNewHP+1], a - inc de - ld a, [hl] - ld [de], a - ld [wHPBarNewHP], a -.asm_3ba6f - ld hl, Func_3fba8 ; $7ba8 - call BankswitchEtoF - ld a, [H_WHOSETURN] ; $fff3 - and a - FuncCoord 10, 9 ; $c45e - ld hl, Coord - ld a, $1 - jr z, .asm_3ba83 - FuncCoord 2, 2 ; $c3ca - ld hl, Coord - xor a -.asm_3ba83 - ld [wListMenuID], a ; $cf94 - ld a, $48 - call Predef ; indirect jump to UpdateHPBar (fa1d (3:7a1d)) - ld hl, Func_3cd5a ; $4d5a - call BankswitchEtoF - ld hl, RecoverText - jp PrintText - -Func_3ba97: ; 3ba97 (e:7a97) - ld c, $32 - call DelayFrames - ld hl, PrintItFailedText - jp BankswitchEtoF - -RestText: ; 3baa2 (e:7aa2) - TX_FAR _RestText - db "@" - -RestBecameHealthyText: ; 3baa7 (e:7aa7) - TX_FAR _RestBecameHealthyText - db "@" - -RecoverText: ; 3baac (e:7aac) - TX_FAR _RecoverText - db "@" - -Func_3bab1: ; 3bab1 (e:7ab1) - ld hl, W_PLAYERMONID - ld de, $cfe5 - ld bc, W_ENEMYBATTSTATUS3 ; $d069 - ld a, [W_ENEMYBATTSTATUS1] ; $d067 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr nz, .asm_3bad1 - ld hl, $cfe5 - ld de, W_PLAYERMONID - ld bc, W_PLAYERBATTSTATUS3 ; $d064 - ld [wPlayerMoveListIndex], a ; $cc2e - ld a, [W_PLAYERBATTSTATUS1] ; $d062 -.asm_3bad1 - bit 6, a - jp nz, Func_3bb8c - push hl - push de - push bc - ld hl, W_PLAYERBATTSTATUS2 ; $d063 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3bae4 - ld hl, W_ENEMYBATTSTATUS2 ; $d068 -.asm_3bae4 - bit 4, [hl] - push af - ld hl, Func_79747 - ld b, BANK(Func_79747) - call nz, Bankswitch - ld a, [W_OPTIONS] ; $d355 - add a - ld hl, Func_3fba8 ; $7ba8 - ld b, BANK(Func_3fba8) - jr nc, .asm_3baff - ld hl, AnimationTransformMon - ld b, BANK(AnimationTransformMon) -.asm_3baff - call Bankswitch - ld hl, Func_79771 - ld b, BANK(Func_79771) - pop af - call nz, Bankswitch - pop bc - ld a, [bc] - set 3, a - ld [bc], a - pop de - pop hl - push hl - ld a, [hl] - ld [de], a - ld bc, $5 - add hl, bc - inc de - inc de - inc de - inc de - inc de - inc bc - inc bc - call CopyData - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3bb32 - ld a, [de] - ld [$cceb], a - inc de - ld a, [de] - ld [$ccec], a - dec de -.asm_3bb32 - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - inc de - inc hl - inc hl - inc hl - inc de - inc de - inc de - ld bc, $8 - call CopyData - ld bc, $ffef - add hl, bc - ld b, $4 -.asm_3bb4a - ld a, [hli] - and a - jr z, .asm_3bb57 - ld a, $5 - ld [de], a - inc de - dec b - jr nz, .asm_3bb4a - jr .asm_3bb5d -.asm_3bb57 - xor a - ld [de], a - inc de - dec b - jr nz, .asm_3bb57 -.asm_3bb5d - pop hl - ld a, [hl] - ld [$d11e], a - call GetMonName - ld hl, $cd26 - ld de, $cd12 - call Func_3bb7d - ld hl, wEnemyMonStatMods ; $cd2e - ld de, wPlayerMonStatMods ; $cd1a - call Func_3bb7d - ld hl, TransformText - jp PrintText - -Func_3bb7d: ; 3bb7d (e:7b7d) - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3bb86 - push hl - ld h, d - ld l, e - pop de -.asm_3bb86 - ld bc, $8 - jp CopyData - -Func_3bb8c: ; 3bb8c (e:7b8c) - ld hl, PrintItFailedText - jp BankswitchEtoF - -TransformText: ; 3bb92 (e:7b92) - TX_FAR _TransformText - db "@" - -Func_3bb97: ; 3bb97 (e:7b97) - ld hl, W_PLAYERBATTSTATUS3 ; $d064 - ld de, W_PLAYERMOVEEFFECT ; $cfd3 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3bba8 - ld hl, W_ENEMYBATTSTATUS3 ; $d069 - ld de, W_ENEMYMOVEEFFECT ; $cfcd -.asm_3bba8 - ld a, [de] - cp $40 - jr nz, .asm_3bbb8 - bit 1, [hl] - jr nz, .asm_3bbcc - set 1, [hl] - ld hl, LightscreenText - jr .asm_3bbc1 -.asm_3bbb8 - bit 2, [hl] - jr nz, .asm_3bbcc - set 2, [hl] - ld hl, AcidArmorText -.asm_3bbc1 - push hl - ld hl, Func_3fba8 ; $7ba8 - call BankswitchEtoF - pop hl - jp PrintText -.asm_3bbcc - ld c, $32 - call DelayFrames - ld hl, PrintItFailedText - jp BankswitchEtoF - -LightscreenText: ; 3bbd7 (e:7bd7) - TX_FAR _LightscreenText - db "@" - -AcidArmorText: ; 3bbdc (e:7bdc) - TX_FAR _AcidArmorText - db "@" - -BankswitchEtoF: ; 3bbe1 (e:7be1) - ld b, BANK(BattleCore) - jp Bankswitch - -SECTION "bankF",ROMX,BANK[$F] - -BattleCore: - -; These are move effects (second value from the Moves table in bank $E). -EffectsArray1: ; 3c000 (f:4000) - db $18,$19,$1C,$2E,$2F,$31,$38,$39,$40,$41,$42,$43,$4F,$52,$54,$55,$FF -EffectsArray2: ; 3c011 (f:4011) -; moves that do damage but not through normal calculations -; e.g., Super Fang, Psywave - db $28,$29,$FF -EffectsArray3: ; 3c014 (f:4014) -; non-damaging, stat‐affecting or status‐causing moves? -; e.g., Meditate, Bide, Hypnosis - db $01,$0A,$0B,$0C,$0D,$0E,$0F,$12,$13,$14,$15,$16,$17,$1A,$20,$32,$33,$34,$35,$36,$37,$3A,$3B,$3C,$3D,$3E,$3F,$FF -EffectsArray4: ; 3c030 (f:4030) - db $03,$07,$08,$10,$1D,$1E,$2C,$30,$4D,$51,$FF -EffectsArray5: ; 3c03b (f:403b) - db $03,$07,$08,$10,$11,$1D,$1E,$27,$28,$29,$2B,$2C,$2D,$30 ; fallthru -EffectsArray5B: ; 3c049 (f:4049) -; moves that prevent the player from switching moves? - db $1B,$2A,$FF - -Func_3c04c: ; 3c04c (f:404c) - call Func_3ec92 - ld a, $1 - ld [$d125], a - call DisplayTextBoxID - FuncCoord 1, 5 ; $c405 - ld hl, Coord - ld bc, $307 - call ClearScreenArea - call DisableLCD - call LoadFontTilePatterns - call Func_3ee58 - ld hl, $9800 - ld bc, $400 -.asm_3c06f - ld a, $7f - ld [hli], a - dec bc - ld a, b - or c - jr nz, .asm_3c06f - ld hl, wTileMap - ld de, $9800 - ld b, $12 -.asm_3c07f - ld c, $14 -.asm_3c081 - ld a, [hli] - ld [de], a - inc e - dec c - jr nz, .asm_3c081 - ld a, $c - add e - ld e, a - jr nc, .asm_3c08e - inc d -.asm_3c08e - dec b - jr nz, .asm_3c07f - call EnableLCD - ld a, $90 - ld [$ffb0], a - ld [rWY], a ; $ff4a - xor a - ld [$ffd7], a - ld [$ffaf], a - dec a - ld [$cfcb], a - call Delay3 - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ld b, $70 - ld c, $90 - ld a, c - ld [$ffae], a - call DelayFrame - ld a, $e4 - ld [rBGP], a ; $ff47 - ld [rOBP0], a ; $ff48 - ld [rOBP1], a ; $ff49 -.asm_3c0bb - ld h, b - ld l, $40 - call Func_3c110 - inc b - inc b - ld h, $0 - ld l, $60 - call Func_3c110 - call Func_3c0ff - ld a, c - ld [$ffae], a - dec c - dec c - jr nz, .asm_3c0bb - ld a, $1 - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ld a, $31 - ld [$ffe1], a - FuncCoord 1, 5 ; $c405 - ld hl, Coord - ld a, $1 - call Predef ; indirect jump to Func_3f0c6 (3f0c6 (f:70c6)) - xor a - ld [$ffb0], a - ld [rWY], a ; $ff4a - inc a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - call Delay3 - ld b, $1 - call GoPAL_SET - call ResetLCD_OAM - ld hl, Func_58d99 - ld b, BANK(Func_58d99) - jp Bankswitch - -Func_3c0ff: ; 3c0ff (f:40ff) - push bc - ld hl, $c301 - ld c, $15 - ld de, $4 -.asm_3c108 - dec [hl] - dec [hl] - add hl, de - dec c - jr nz, .asm_3c108 - pop bc - ret - -Func_3c110: ; 3c110 (f:4110) - ld a, [$ff44] - cp l - jr nz, Func_3c110 - ld a, h - ld [rSCX], a ; $ff43 -.asm_3c118 - ld a, [$ff44] - cp h - jr z, .asm_3c118 - ret - -Func_3c11e: ; 3c11e (f:411e) - xor a - ld [W_PLAYERMONSALIVEFLAGS], a - ld [$ccf5], a - ld [$cd6a], a - inc a - ld [$d11d], a - ld hl, W_ENEMYMON1HP ; $d8a5 - ld bc, $2b - ld d, $3 -.asm_3c134 - inc d - ld a, [hli] - or [hl] - jr nz, .asm_3c13c - add hl, bc - jr .asm_3c134 -.asm_3c13c - ld a, d - ld [$cc3e], a - ld a, [W_ISINBATTLE] ; $d057 - dec a - call nz, Func_3c92a - ld c, $28 - call DelayFrames - call SaveScreenTilesToBuffer1 -.asm_3c14f - call AnyPokemonAliveCheck - ld a, d - and a - jp z, HandlePlayerBlackOut - call LoadScreenTilesFromBuffer1 - ld a, [W_BATTLETYPE] ; $d05a - and a - jp z, Func_3c1ad -.asm_3c161 - call InitBattleMenu - ret c - ld a, [$cd6a] - and a - jr z, .asm_3c161 - ld a, [W_NUMSAFARIBALLS] ; $da47 - and a - jr nz, .asm_3c17a - call LoadScreenTilesFromBuffer1 - ld hl, OutOfSafariBallsText - jp PrintText -.asm_3c17a - ld hl, Func_4277 - ld b, BANK(Func_4277) - call Bankswitch - ld a, [$cffb] - add a - ld b, a - jp c, asm_3c202 - ld a, [$cce9] - and a - jr z, .asm_3c194 - srl b - srl b -.asm_3c194 - ld a, [$cce8] - and a - jr z, .asm_3c1a0 - sla b - jr nc, .asm_3c1a0 - ld b, $ff -.asm_3c1a0 - call GenRandom - cp b - jr nc, .asm_3c14f - jr asm_3c202 - -OutOfSafariBallsText: ; 3c1a8 (f:41a8) - TX_FAR _OutOfSafariBallsText - db "@" - -Func_3c1ad: ; 3c1ad (f:41ad) - xor a - ld [wWhichPokemon], a ; $cf92 -.asm_3c1b1 - call Func_3ca97 - jr nz, .asm_3c1bc - ld hl, wWhichPokemon ; $cf92 - inc [hl] - jr .asm_3c1b1 -.asm_3c1bc - ld a, [wWhichPokemon] ; $cf92 - ld [wPlayerMonNumber], a ; $cc2f - inc a - ld hl, W_NUMINPARTY ; $d163 - ld c, a - ld b, $0 - add hl, bc - ld a, [hl] - ld [$cf91], a - ld [$cfd9], a - call LoadScreenTilesFromBuffer1 - FuncCoord 1, 5 ; $c405 - ld hl, Coord - ld a, $9 - call Func_3c8df - call SaveScreenTilesToBuffer1 - ld a, [wWhichPokemon] ; $cf92 - ld c, a - ld b, $1 - push bc - ld hl, W_PLAYERMONSALIVEFLAGS - ld a, $10 - call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) - ld hl, $ccf5 - pop bc - ld a, $10 - call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) - call Func_3cba6 - call LoadScreenTilesFromBuffer1 - call Func_3cc91 - jr MainInBattleLoop -asm_3c202: ; 3c202 (f:4202) - call LoadScreenTilesFromBuffer1 - ld a, [W_ISLINKBATTLE] ; $d12b - cp $4 - ld hl, WildRanText - jr nz, .asm_3c216 - xor a - ld [$cf0b], a - ld hl, EnemyRanText -.asm_3c216 - call PrintText - ld a, (SFX_08_44 - SFX_Headers_08) / 3 - call PlaySoundWaitForCurrent - xor a - ld [H_WHOSETURN], a ; $fff3 - ld hl, AnimationSlideEnemyMonOut - ld b, BANK(AnimationSlideEnemyMonOut) - jp Bankswitch - -WildRanText: ; 3c229 (f:4229) - TX_FAR _WildRanText - db "@" - -EnemyRanText: ; 3c22e (f:422e) - TX_FAR _EnemyRanText - db "@" - -MainInBattleLoop: ; 3c233 (f:4233) - call ReadPlayerMonCurHPAndStatus - ld hl, W_PLAYERMONCURHP - ld a, [hli] - or [hl] - jp z, HandlePlayerMonFainted ; test if current player mon is fainted - ld hl, $cfe6 - ld a, [hli] - or [hl] - jp z, Func_3c525 - call SaveScreenTilesToBuffer1 - xor a - ld [$d11d], a - ld a, [$d063] - and $60 - jr nz, .asm_3c2a6 ; 0x3c252 $52 - ld hl, $d067 - res 3, [hl] - ld hl, $d062 - res 3, [hl] - ld a, [hl] - and $12 - jr nz, .asm_3c2a6 ; 0x3c261 $43 - call InitBattleMenu ; show battle menu - ret c - ld a, [$d078] - and a - ret nz - ld a, [$d018] - and $27 - jr nz, .asm_3c2a6 ; 0x3c271 $33 - ld a, [$d062] - and $21 - jr nz, .asm_3c2a6 ; 0x3c278 $2c - ld a, [$d067] - bit 5, a - jr z, .asm_3c288 ; 0x3c27f $7 - ld a, $ff - ld [$ccdc], a - jr .asm_3c2a6 ; 0x3c286 $1e -.asm_3c288 - ld a, [$cd6a] - and a - jr nz, .asm_3c2a6 ; 0x3c28c $18 - ld [$ccdb], a - inc a - ld [$d07c], a - xor a - ld [$cc35], a - call MoveSelectionMenu - push af - call LoadScreenTilesFromBuffer1 - call Func_3cd5a - pop af - jr nz, MainInBattleLoop -.asm_3c2a6 - call SelectEnemyMove - ld a, [W_ISLINKBATTLE] - cp $4 - jr nz, .noLinkBattle - ld a, [$cc3e] - cp $f - jp z, asm_3c202 - cp $e - jr z, .noLinkBattle - cp $d - jr z, .noLinkBattle - sub $4 - jr c, .noLinkBattle - ld a, [$d062] - bit 5, a - jr z, .asm_3c2dd ; 0x3c2c9 $12 - ld a, [$cc2e] - ld hl, W_PLAYERMONMOVES - ld c, a - ld b, $0 - add hl, bc - ld a, [hl] - cp $76 - jr nz, .asm_3c2dd ; 0x3c2d8 $3 - ld [wPlayerSelectedMove], a -.asm_3c2dd - ld hl, Func_3a74b - ld b, BANK(Func_3a74b) - call Bankswitch -.noLinkBattle - ld a, [wPlayerSelectedMove] - cp QUICK_ATTACK - jr nz, .playerDidNotUseQuickAttack - ld a, [wEnemySelectedMove] - cp QUICK_ATTACK - jr z, .compareSpeed ; both used Quick Attack - jp .playerMovesFirst ; player used Quick Attack -.playerDidNotUseQuickAttack - ld a, [wEnemySelectedMove] - cp QUICK_ATTACK - jr z, .enemyMovesFirst - ld a, [wPlayerSelectedMove] - cp COUNTER - jr nz, .playerDidNotUseCounter - ld a, [wEnemySelectedMove] - cp COUNTER - jr z, .compareSpeed ; both used Counter - jr .enemyMovesFirst ; player used Counter -.playerDidNotUseCounter - ld a, [wEnemySelectedMove] - cp COUNTER - jr z, .playerMovesFirst -.compareSpeed - ld de, W_PLAYERMONSPEED ; player speed value - ld hl, W_ENEMYMONSPEED ; enemy speed value - ld c, $2 - call StringCmp ; compare speed values - jr z, .speedEqual - jr nc, .playerMovesFirst - jr .enemyMovesFirst -.speedEqual - ld a, [$ffaa] - cp $2 - jr z, .invertOutcome - call GenRandomInBattle - cp $80 - jr c, .playerMovesFirst - jr .enemyMovesFirst -.invertOutcome - call GenRandomInBattle - cp $80 - jr c, .enemyMovesFirst - jr .playerMovesFirst -.enemyMovesFirst - ld a, $1 - ld [H_WHOSETURN], a - ld hl, TrainerAI - ld b, BANK(TrainerAI) - call Bankswitch - jr c, .AIActionUsedEnemyFirst - call Func_3e6bc ; execute enemy move - ld a, [$d078] - and a - ret nz - ld a, b - and a - jp z, HandlePlayerMonFainted -.AIActionUsedEnemyFirst - call HandlePoisonBurnLeechSeed - jp z, Func_3c525 - call Func_3cd5a - call Func_3d65e ; execute player move - ld a, [$d078] - and a - ret nz - ld a, b - and a - jp z, Func_3c525 - call HandlePoisonBurnLeechSeed - jp z, HandlePlayerMonFainted - call Func_3cd5a - call Func_3c50f - jp MainInBattleLoop -.playerMovesFirst - call Func_3d65e ; execute player move - ld a, [$d078] - and a - ret nz - ld a, b - and a - jp z, Func_3c525 - call HandlePoisonBurnLeechSeed - jp z, HandlePlayerMonFainted - call Func_3cd5a - ld a, $1 - ld [H_WHOSETURN], a - ld hl, TrainerAI - ld b, BANK(TrainerAI) - call Bankswitch - jr c, .AIActionUsedPlayerFirst - call Func_3e6bc ; execute enemy move - ld a, [$d078] - and a - ret nz - ld a, b - and a - jp z, HandlePlayerMonFainted -.AIActionUsedPlayerFirst - call HandlePoisonBurnLeechSeed - jp z, Func_3c525 - call Func_3cd5a - call Func_3c50f - jp MainInBattleLoop - -HandlePoisonBurnLeechSeed: ; 3c3bd (f:43bd) - ld hl, W_PLAYERMONCURHP ; $d015 - ld de, W_PLAYERMONSTATUS ; $d018 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .playersTurn - ld hl, W_ENEMYMONCURHP ; $cfe6 - ld de, W_ENEMYMONSTATUS ; $cfe9 -.playersTurn - ld a, [de] - and BRN | PSN - jr z, .notBurnedOrPoisoned - push hl - ld hl, HurtByPoisonText - ld a, [de] - and BRN - jr z, .poisoned - ld hl, HurtByBurnText -.poisoned - call PrintText - xor a - ld [$cc5b], a - ld a,BURN_PSN_ANIM - call PlayMoveAnimation ; play burn/poison animation - pop hl - call HandlePoisonBurnLeechSeed_DecreaseOwnHP -.notBurnedOrPoisoned - ld de, W_PLAYERBATTSTATUS2 ; $d063 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .playersTurn2 - ld de, W_ENEMYBATTSTATUS2 ; $d068 -.playersTurn2 - ld a, [de] - add a - jr nc, .notLeechSeeded - push hl - ld a, [H_WHOSETURN] ; $fff3 - push af - xor $1 - ld [H_WHOSETURN], a ; $fff3 - xor a - ld [$cc5b], a - ld a,ABSORB - call PlayMoveAnimation ; play leech seed animation (from opposing mon) - pop af - ld [H_WHOSETURN], a ; $fff3 - pop hl - call HandlePoisonBurnLeechSeed_DecreaseOwnHP - call HandlePoisonBurnLeechSeed_IncreaseEnemyHP - push hl - ld hl, HurtByLeechSeedText - call PrintText - pop hl -.notLeechSeeded - ld a, [hli] - or [hl] - ret nz ; test if fainted - call Func_3cd5a - ld c, $14 - call DelayFrames - xor a - ret - -HurtByPoisonText: ; 3c42e (f:442e) - TX_FAR _HurtByPoisonText - db "@" - -HurtByBurnText: ; 3c433 (f:4433) - TX_FAR _HurtByBurnText - db "@" - -HurtByLeechSeedText: ; 3c438 (f:4438) - TX_FAR _HurtByLeechSeedText - db "@" - -; decreases the mon's current HP by 1/16 of the Max HP (multiplied by number of toxic ticks if active) -; note that the toxic ticks are considered even if the damage is not poison (hence the Leech Seed glitch) -; hl: HP pointer -; bc (out): total damage -HandlePoisonBurnLeechSeed_DecreaseOwnHP: ; 3c43d (f:443d) - push hl - push hl - ld bc, $e ; skip to max HP - add hl, bc - ld a, [hli] ; load max HP - ld [wHPBarMaxHP+1], a - ld b, a - ld a, [hl] - ld [wHPBarMaxHP], a - ld c, a - srl b - rr c - srl b - rr c - srl c - srl c ; c = max HP/16 (assumption: HP < 1024) - ld a, c - and a - jr nz, .nonZeroDamage - inc c ; damage is at least 1 -.nonZeroDamage - ld hl, W_PLAYERBATTSTATUS3 ; $d064 - ld de, W_PLAYERTOXICCOUNTER ; $d06c - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .playersTurn - ld hl, W_ENEMYBATTSTATUS3 ; $d069 - ld de, W_ENEMYTOXICCOUNTER ; $d071 -.playersTurn - bit 0, [hl] - jr z, .noToxic - ld a, [de] ; increment toxic counter - inc a - ld [de], a - ld hl, $0000 -.toxicTicksLoop - add hl, bc - dec a - jr nz, .toxicTicksLoop - ld b, h ; bc = damage * toxic counter - ld c, l -.noToxic - pop hl - inc hl - ld a, [hl] ; subtract total damage from current HP - 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, .noOverkill - xor a ; overkill: zero HP - ld [hli], a - ld [hl], a - ld [wHPBarNewHP], a - ld [wHPBarNewHP+1], a -.noOverkill - call UpdateCurMonHPBar - pop hl - ret - -; adds bc to enemy HP -HandlePoisonBurnLeechSeed_IncreaseEnemyHP: ; 3c4a3 (f:44a3) - push hl - ld hl, W_ENEMYMONMAXHP ; $cff4 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .playersTurn - ld hl, W_PLAYERMONMAXHP ; $d023 -.playersTurn - ld a, [hli] - ld [wHPBarMaxHP+1], a - ld a, [hl] - ld [wHPBarMaxHP], a - ld de, $fff2 - add hl, de ; skip back fomr max hp to current hp - ld a, [hl] - ld [wHPBarOldHP], a ; add bc to current HP - add c - ld [hld], a - ld [wHPBarNewHP], a - ld a, [hl] - ld [wHPBarOldHP+1], a - adc b - ld [hli], a - ld [wHPBarNewHP+1], a - ld a, [wHPBarMaxHP] - ld c, a - ld a, [hld] - sub c - ld a, [wHPBarMaxHP+1] - ld b, a - ld a, [hl] - sbc b - jr c, .noOverfullHeal - ld a, b ; overfull heal, set HP to max HP - ld [hli], a - ld [wHPBarNewHP+1], a - ld a, c - ld [hl], a - ld [wHPBarNewHP], a -.noOverfullHeal - ld a, [H_WHOSETURN] ; $fff3 - xor $1 - ld [H_WHOSETURN], a ; $fff3 - call UpdateCurMonHPBar - ld a, [H_WHOSETURN] ; $fff3 - xor $1 - ld [H_WHOSETURN], a ; $fff3 - pop hl - ret - -UpdateCurMonHPBar: ; 3c4f6 (f:44f6) - FuncCoord 10, 9 ; $c45e - ld hl, Coord ; tile pointer to player HP bar - ld a, [H_WHOSETURN] ; $fff3 - and a - ld a, $1 - jr z, .playersTurn - FuncCoord 2, 2 ; $c3ca - ld hl, Coord ; tile pointer to enemy HP bar - xor a -.playersTurn - push bc - ld [wListMenuID], a ; $cf94 - ld a, $48 - call Predef ; indirect jump to UpdateHPBar (fa1d (3:7a1d)) - pop bc - ret - -Func_3c50f: ; 3c50f (f:450f) - ld a, [$d06a] - and a - jr nz, .asm_3c51a - ld hl, W_PLAYERBATTSTATUS1 ; $d062 - res 5, [hl] -.asm_3c51a - ld a, [$d06f] - and a - ret nz - ld hl, W_ENEMYBATTSTATUS1 ; $d067 - res 5, [hl] - ret - -Func_3c525: ; 3c525 (f:4525) - xor a - ld [$ccf0], a - call FaintEnemyPokemon - call AnyPokemonAliveCheck - ld a, d - and a - jp z, HandlePlayerBlackOut - ld hl, W_PLAYERMONCURHP ; $d015 - ld a, [hli] - or [hl] - call nz, Func_3cd60 - ld a, [W_ISINBATTLE] ; $d057 - dec a - ret z - call Func_3c64f - jp z, TrainerBattleVictory - ld hl, W_PLAYERMONCURHP ; $d015 - ld a, [hli] - or [hl] - jr nz, .asm_3c555 - call Func_3c79b - ret c - call Func_3c7d8 -.asm_3c555 - ld a, $1 - ld [$cd6a], a - call Func_3c664 - jp z, asm_3c202 - xor a - ld [$cd6a], a - jp MainInBattleLoop - -FaintEnemyPokemon ; 0x3c567 - call ReadPlayerMonCurHPAndStatus - ld a, [W_ISINBATTLE] ; $d057 - dec a - jr z, .wild - ld a, [W_ENEMYMONNUMBER] ; $cfe8 - ld hl, W_ENEMYMON1HP - ld bc, $2c ; mon struct len - call AddNTimes - xor a - ld [hli], a - ld [hl], a -.wild - ld hl, W_PLAYERBATTSTATUS1 ; $d062 - res 2, [hl] - xor a - ld [W_NUMHITS], a ; $d074 - ld hl, $d065 ; enemy statuses - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld [W_ENEMYDISABLEDMOVE], a ; $d072 - ld [$ccef], a - ld [$ccf3], a - ld hl, $ccf1 - ld [hli], a - ld [hl], a - FuncCoord 12, 5 ; $c410 - ld hl, Coord - FuncCoord 12, 6 ; $c424 - ld de, Coord - call Func_3c893 - ld hl, wTileMap - ld bc, $40b - call ClearScreenArea - ld a, [W_ISINBATTLE] ; $d057 - dec a - jr z, .wild_win - xor a - ld [$c0f1], a - ld [$c0f2], a - ld a, (SFX_08_48 - SFX_Headers_08) / 3 ; SFX_FALL? - call PlaySoundWaitForCurrent -.sfxwait - ld a, [$c02a] - cp (SFX_08_48 - SFX_Headers_08) / 3 - jr z, .sfxwait - ld a, (SFX_08_43 - SFX_Headers_08) / 3 ; SFX_DROP - call PlaySound - call WaitForSoundToFinish - jr .sfxplayed -.wild_win - call Func_3c643 - ld a, MUSIC_DEFEATED_WILD_MON - call Func_3c6ee -.sfxplayed - ld hl, W_PLAYERMONCURHP ; $d015 - ld a, [hli] - or [hl] - jr nz, .playermonnotfaint - ld a, [$ccf0] - and a - jr nz, .playermonnotfaint - call Func_3c741 -.playermonnotfaint - call AnyPokemonAliveCheck - ld a, d - and a - ret z - ld hl, EnemyMonFaintedText - call PrintText - call Func_3ee94 - call SaveScreenTilesToBuffer1 - xor a - ld [$cf0b], a - ld b, EXP__ALL - call IsItemInBag - push af - jr z, .no_exp_all - ld hl, $d002 - ld b, $7 -.exp_all_loop - srl [hl] - inc hl - dec b - jr nz, .exp_all_loop -.no_exp_all - xor a - ld [$cc5b], a - ld hl, Func_5524f - ld b, BANK(Func_5524f) - call Bankswitch - pop af - ret z - ld a, $1 - ld [$cc5b], a - ld a, [W_NUMINPARTY] ; $d163 - ld b, $0 -.asm_3c62c - scf - rl b - dec a - jr nz, .asm_3c62c - ld a, b - ld [W_PLAYERMONSALIVEFLAGS], a - ld hl, Func_5524f - ld b, BANK(Func_5524f) - jp Bankswitch - -EnemyMonFaintedText: ; 0x3c63e - TX_FAR _EnemyMonFaintedText - db "@" - -Func_3c643: ; 3c643 (f:4643) - xor a - ld [$d083], a - ld [$c02a], a - inc a - ld [$ccf6], a - ret - -Func_3c64f: ; 3c64f (f:464f) - ld a, [wEnemyPartyCount] ; $d89c - ld b, a - xor a - ld hl, W_ENEMYMON1HP ; $d8a5 - ld de, $2c -.asm_3c65a - or [hl] - inc hl - or [hl] - dec hl - add hl, de - dec b - jr nz, .asm_3c65a - and a - ret - -Func_3c664: ; 3c664 (f:4664) - ld hl, $cf1e - ld e, $30 - call Func_3ce90 - ld hl, DrawEnemyPokeballs - ld b, BANK(DrawEnemyPokeballs) - call Bankswitch - ld a, [W_ISLINKBATTLE] ; $d12b - cp $4 - jr nz, .asm_3c687 - call Func_3d605 - ld a, [$cc3e] - cp $f - ret z - call LoadScreenTilesFromBuffer1 -.asm_3c687 - call EnemySendOut - xor a - ld [W_ENEMYMOVENUM], a ; $cfcc - ld [$cd6a], a - ld [$ccd5], a - inc a - ret - -TrainerBattleVictory: ; 3c696 (f:4696) - call Func_3c643 - ld b, MUSIC_DEFEATED_GYM_LEADER - ld a, [W_GYMLEADERNO] ; $d05c - and a - jr nz, .gymleader - ld b, MUSIC_DEFEATED_TRAINER -.gymleader - ld a, [W_TRAINERCLASS] ; $d031 - cp SONY3 ; final battle against rival - jr nz, .notrival - ld b, MUSIC_DEFEATED_GYM_LEADER - ld hl, W_FLAGS_D733 - set 1, [hl] -.notrival - ld a, [W_ISLINKBATTLE] ; $d12b - cp $4 - ld a, b - call nz, Func_3c6ee - ld hl, TrainerDefeatedText - call PrintText - ld a, [W_ISLINKBATTLE] ; $d12b - cp $4 - ret z - call ScrollTrainerPicAfterBattle - ld c, $28 - call DelayFrames - call Func_3381 - ld hl, MoneyForWinningText - call PrintText - ld de, wPlayerMoney + 2 ; $d349 - ld hl, $d07b - ld c, $3 - ld a, $b - jp Predef ; indirect jump to Func_f81d (f81d (3:781d)) - -MoneyForWinningText: ; 3c6e4 (f:46e4) - TX_FAR _MoneyForWinningText - db "@" - -TrainerDefeatedText: ; 3c6e9 (f:46e9) - TX_FAR _TrainerDefeatedText - db "@" - -Func_3c6ee: ; 3c6ee (f:46ee) - push af - ld a, $ff - ld [$c0ee], a - call PlaySoundWaitForCurrent - ld c, BANK(Music_DefeatedTrainer) - pop af - call PlayMusic - jp Delay3 - -HandlePlayerMonFainted: ; 3c700 (f:4700) - ld a, $1 - ld [$ccf0], a - call Func_3c741 - call AnyPokemonAliveCheck ; test if any more mons are alive - ld a, d - and a - jp z, HandlePlayerBlackOut - ld hl, W_ENEMYMONCURHP ; $cfe6 - ld a, [hli] - or [hl] - jr nz, .enemyMonNotFainted - call FaintEnemyPokemon - ld a, [W_ISINBATTLE] ; $d057 - dec a - ret z ; if wild encounter, battle is over - call Func_3c64f - jp z, TrainerBattleVictory -.enemyMonNotFainted - call Func_3c79b - ret c - call Func_3c7d8 - jp nz, MainInBattleLoop - ld a, $1 - ld [$cd6a], a - call Func_3c664 - jp z, asm_3c202 - xor a - ld [$cd6a], a - jp MainInBattleLoop - -Func_3c741: ; 3c741 (f:4741) - ld a, [wPlayerMonNumber] ; $cc2f - ld c, a - ld hl, W_PLAYERMONSALIVEFLAGS ; clear fainted mon's alive flag - ld b, $0 - ld a, $10 - call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) - ld hl, W_ENEMYBATTSTATUS1 ; $d067 - res 2, [hl] ; reset "attacking multiple times" flag - ld a, [$d083] - bit 7, a ; skip sound flag (red bar (?)) - jr z, .skipWaitForSound - ld a, $ff - ld [$d083], a - call WaitForSoundToFinish -.skipWaitForSound - ld hl, $cd05 - ld [hli], a - ld [hl], a - ld [W_PLAYERMONSTATUS], a ; $d018 - call ReadPlayerMonCurHPAndStatus - FuncCoord 9, 7 ; $c435 - ld hl, Coord - ld bc, $50b - call ClearScreenArea - FuncCoord 1, 10 ; $c469 - ld hl, Coord - FuncCoord 1, 11 ; $c47d - ld de, Coord - call Func_3c893 - ld a, $1 - ld [$cf0b], a - ld a, [$ccf0] - and a - ret z - ld a, [W_PLAYERMONID] - call PlayCry - ld hl, PlayerMonFaintedText - jp PrintText - -PlayerMonFaintedText: ; 3c796 (f:4796) - TX_FAR _PlayerMonFaintedText - db "@" - -Func_3c79b: ; 3c79b (f:479b) - call Func_3ee94 - call SaveScreenTilesToBuffer1 - ld a, [W_ISINBATTLE] ; $d057 - and a - dec a - ret nz - ld hl, UseNextMonText - call PrintText -.asm_3c7ad - FuncCoord 13, 9 ; $c461 - ld hl, Coord - ld bc, $a0e - ld a, $14 - ld [$d125], a - call DisplayTextBoxID - ld a, [$d12e] - cp $2 - jr z, .asm_3c7c4 - and a - ret -.asm_3c7c4 - ld a, [wCurrentMenuItem] ; $cc26 - and a - jr z, .asm_3c7ad - ld hl, W_PARTYMON1_SPEED ; $d193 - ld de, W_ENEMYMONSPEED - jp Func_3cab9 - -UseNextMonText: ; 3c7d3 (f:47d3) - TX_FAR _UseNextMonText - db "@" - -Func_3c7d8: ; 3c7d8 (f:47d8) - ld a, $2 - ld [$d07d], a - call DisplayPartyMenu -.asm_3c7e0 - jr nc, .asm_3c7e7 -.asm_3c7e2 - call GoBackToPartyMenu - jr .asm_3c7e0 -.asm_3c7e7 - call Func_3ca97 - jr z, .asm_3c7e2 - ld a, [W_ISLINKBATTLE] ; $d12b - cp $4 - jr nz, .asm_3c7fa - inc a - ld [$cd6a], a - call Func_3d605 -.asm_3c7fa - xor a - ld [$cd6a], a - call CleanLCD_OAM - ld a, [wWhichPokemon] ; $cf92 - ld [wPlayerMonNumber], a ; $cc2f - ld c, a - ld hl, W_PLAYERMONSALIVEFLAGS - ld b, $1 - push bc - ld a, $10 - call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) - pop bc - ld hl, $ccf5 - ld a, $10 - call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) - call Func_3cba6 - call GBPalWhiteOut - call Func_3ee5b - call LoadScreenTilesFromBuffer1 - call GoPAL_SET_CF1C - call GBPalNormal - call Func_3cc91 - ld hl, W_ENEMYMONCURHP ; $cfe6 - ld a, [hli] - or [hl] - ret - -; called when player is out of usable mons. -; prints approriate lose message, sets carry flag if player blacked out (special case for initial rival fight) -HandlePlayerBlackOut: ; 3c837 (f:4837) - ld a, [W_ISLINKBATTLE] ; $d12b - cp $4 - jr z, .notSony1Battle - ld a, [W_CUROPPONENT] ; $d059 - cp $c8 + SONY1 - jr nz, .notSony1Battle - ld hl, wTileMap ; sony 1 battle - ld bc, $815 - call ClearScreenArea - call ScrollTrainerPicAfterBattle - ld c, $28 - call DelayFrames - ld hl, Sony1WinText - call PrintText - ld a, [W_CURMAP] - cp OAKS_LAB - ret z ; starter battle in oak's lab: don't black out -.notSony1Battle - ld b, $0 - call GoPAL_SET - ld hl, PlayerBlackedOutText2 - ld a, [W_ISLINKBATTLE] ; $d12b - cp $4 - jr nz, .noLinkBattle - ld hl, LinkBattleLostText -.noLinkBattle - call PrintText - ld a, [$d732] - res 5, a - ld [$d732], a - call ClearScreen - scf - ret - -Sony1WinText: ; 3c884 (f:4884) - TX_FAR _Sony1WinText - db "@" - -PlayerBlackedOutText2: ; 3c889 (f:4889) - TX_FAR _PlayerBlackedOutText2 - db "@" - -LinkBattleLostText: ; 3c88e (f:488e) - TX_FAR _LinkBattleLostText - db "@" - -Func_3c893: ; 3c893 (f:4893) - ld a, [$d730] - push af - set 6, a - ld [$d730], a - ld b, $7 -.asm_3c89e - push bc - push de - push hl - ld b, $6 -.asm_3c8a3 - push bc - push hl - push de - ld bc, $7 - call CopyData - pop de - pop hl - ld bc, $ffec - add hl, bc - push hl - ld h, d - ld l, e - add hl, bc - ld d, h - ld e, l - pop hl - pop bc - dec b - jr nz, .asm_3c8a3 - ld bc, $14 - add hl, bc - ld de, SevenSpacesText - call PlaceString - ld c, $2 - call DelayFrames - pop hl - pop de - pop bc - dec b - jr nz, .asm_3c89e - pop af - ld [$d730], a - ret - -SevenSpacesText: ; 3c8d7 (f:48d7) - db " @" - -Func_3c8df: ; 3c8df (f:48df) - ld [H_DOWNARROWBLINKCNT1], a ; $ff8b - ld c, a -.asm_3c8e2 - push bc - push hl - ld b, $7 -.asm_3c8e6 - push hl - ld a, [H_DOWNARROWBLINKCNT1] ; $ff8b - ld c, a -.asm_3c8ea - ld a, [H_DOWNARROWBLINKCNT1] ; $ff8b - cp $8 - jr z, .asm_3c8f5 - ld a, [hld] - ld [hli], a - inc hl - jr .asm_3c8f8 -.asm_3c8f5 - ld a, [hli] - ld [hld], a - dec hl -.asm_3c8f8 - dec c - jr nz, .asm_3c8ea - pop hl - ld de, $14 - add hl, de - dec b - jr nz, .asm_3c8e6 - ld c, $2 - call DelayFrames - pop hl - pop bc - dec c - jr nz, .asm_3c8e2 - ret - -; XXX this needs cleaning up. it's what runs when a juggler switches pokemon -EnemySendOut: ; 3c90e (f:490e) - ld hl,W_PLAYERMONSALIVEFLAGS - xor a - ld [hl],a - ld a,[$CC2F] - ld c,a - ld b,1 - push bc - ld a,$10 - call Predef - ld hl,$CCF5 - xor a - ld [hl],a - pop bc - ld a,$10 - call Predef -Func_3c92a: ; 3c92a (f:492a) - xor a - ld hl,$D065 - ld [hli],a - ld [hli],a - ld [hli],a - ld [hli],a - ld [hl],a - ld [$D072],a - ld [$CCEF],a - ld [$CCF3],a - ld hl,$CCF1 - ld [hli],a - ld [hl],a - dec a - ld [wAICount],a - ld hl,W_PLAYERBATTSTATUS1 - res 5,[hl] - FuncCoord 18, 0 ; $c3b2 - ld hl,Coord - ld a,8 - call Func_3c8df - call Func_3ee94 - call SaveScreenTilesToBuffer1 - ld a,[$D12B] - cp 4 - jr nz,.next - ld a,[$CC3E] - sub 4 - ld [wWhichPokemon],a - jr .next3 -.next - ld b,$FF -.next2 - inc b - ld a,[$CFE8] - cp b - jr z,.next2 - ld hl,$D8A4 - ld a,b - ld [wWhichPokemon],a - push bc - ld bc,$2C - call AddNTimes - pop bc - inc hl - ld a,[hli] - ld c,a - ld a,[hl] - or c - jr z,.next2 -.next3 - ld a,[wWhichPokemon] - ld hl,$D8C5 - ld bc,$2C - call AddNTimes - ld a,[hl] - ld [$D127],a - ld a,[wWhichPokemon] - inc a - ld hl,$D89C - ld c,a - ld b,0 - add hl,bc - ld a,[hl] - ld [W_ENEMYMONID],a - ld [$CF91],a - call Func_3eb01 - ld hl,$CFE6 - ld a,[hli] - ld [$CCE3],a - ld a,[hl] - ld [$CCE4],a - ld a,1 - ld [$CC26],a - ld a,[$D11D] - dec a - jr z,.next4 - ld a,[W_NUMINPARTY] - dec a - jr z,.next4 - ld a,[$D12B] - cp 4 - jr z,.next4 - ld a,[$D355] - bit 6,a - jr nz,.next4 - ld hl, TrainerAboutToUseText - call PrintText - FuncCoord 0, 7 ; $c42c - ld hl,Coord - ld bc,$0801 - ld a,$14 - ld [$D125],a - call DisplayTextBoxID - ld a,[$CC26] - and a - jr nz,.next4 - ld a,2 - ld [$D07D],a - call DisplayPartyMenu -.next9 - ld a,1 - ld [$CC26],a - jr c,.next7 - ld hl,$CC2F - ld a,[wWhichPokemon] - cp [hl] - jr nz,.next6 - ld hl,AlreadyOutText - call PrintText -.next8 - call GoBackToPartyMenu - jr .next9 -.next6 - call Func_3ca97 - jr z,.next8 - xor a - ld [$CC26],a -.next7 - call GBPalWhiteOut - call Func_3ee5b - call LoadScreenTilesFromBuffer1 -.next4 - call CleanLCD_OAM - ld hl,wTileMap - ld bc,$040B - call ClearScreenArea - ld b,1 - call GoPAL_SET - call GBPalNormal - ld hl,TrainerSentOutText - call PrintText - ld a,[W_ENEMYMONID] - ld [$CF91],a - ld [$D0B5],a - call GetMonHeader - ld de,$9000 - call LoadMonFrontSprite - ld a,$CF - ld [$FFE1],a - FuncCoord 15, 6 ; $c427 - ld hl,Coord - ld a,2 - call Predef - ld a,[W_ENEMYMONID] - call PlayCry - call Func_3cdec - ld a,[$CC26] - and a - ret nz - xor a - ld [W_PLAYERMONSALIVEFLAGS],a - ld [$CCF5],a - call SaveScreenTilesToBuffer1 - jp Func_3d1ba - -TrainerAboutToUseText: ; 3ca79 (f:4a79) - TX_FAR _TrainerAboutToUseText - db "@" - -TrainerSentOutText: ; 3ca7e (f:4a7e) - TX_FAR _TrainerSentOutText - db "@" - -; tests if the player has any pokemon that are not fainted -; sets d = 0 if all fainted, d != 0 if some mons are still alive -AnyPokemonAliveCheck: ; 3ca83 (f:4a83) - ld a, [W_NUMINPARTY] ; $d163 - ld e, a - xor a - ld hl, W_PARTYMON1_HP ; $d16c - ld bc, W_PARTYMON2DATA - W_PARTYMON1DATA - 1 -.partyMonsLoop - or [hl] - inc hl - or [hl] - add hl, bc - dec e - jr nz, .partyMonsLoop - ld d, a - ret - -Func_3ca97: ; 3ca97 (f:4a97) - ld a, [wWhichPokemon] ; $cf92 - ld hl, W_PARTYMON1_HP ; $d16c - ld bc, $2c - call AddNTimes - ld a, [hli] - or [hl] - ret nz - ld a, [$d11d] - and a - jr nz, .asm_3cab2 - ld hl, NoWillText - call PrintText -.asm_3cab2 - xor a - ret - -NoWillText: ; 3cab4 (f:4ab4) - TX_FAR _NoWillText - db "@" - -Func_3cab9: ; 3cab9 (f:4ab9) - call IsGhostBattle - jp z, .asm_3cb5c - ld a, [W_BATTLETYPE] ; $d05a - cp $2 - jp z, .asm_3cb5c - ld a, [W_ISLINKBATTLE] ; $d12b - cp $4 - jp z, .asm_3cb5c - ld a, [W_ISINBATTLE] ; $d057 - dec a - jr nz, .asm_3cb4c - ld a, [$d120] - inc a - ld [$d120], a - ld a, [hli] - ld [$ff97], a - ld a, [hl] - ld [$ff98], a - ld a, [de] - ld [$ff8d], a - inc de - ld a, [de] - ld [$ff8e], a - call LoadScreenTilesFromBuffer1 - ld de, $ff97 - ld hl, $ff8d - ld c, $2 - call StringCmp - jr nc, .asm_3cb5c - xor a - ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) - ld a, $20 - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - call Multiply - ld a, [$ff97] - ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) - ld a, [$ff98] - ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) - ld a, [$ff8d] - ld b, a - ld a, [$ff8e] - srl b - rr a - srl b - rr a - and a - jr z, .asm_3cb5c - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - ld b, $2 - call Divide - ld a, [$ff97] - and a - jr nz, .asm_3cb5c - ld a, [$d120] - ld c, a -.asm_3cb2b - dec c - jr z, .asm_3cb39 - ld b, $1e - ld a, [$ff98] - add b - ld [$ff98], a - jr c, .asm_3cb5c - jr .asm_3cb2b -.asm_3cb39 - call GenRandomInBattle - ld b, a - ld a, [$ff98] - cp b - jr nc, .asm_3cb5c - ld a, $1 - ld [$cd6a], a - ld hl, CantEscapeText - jr .asm_3cb4f -.asm_3cb4c - ld hl, NoRunningText -.asm_3cb4f - call PrintText - ld a, $1 - ld [$d11f], a - call SaveScreenTilesToBuffer1 - and a - ret -.asm_3cb5c - ld a, [W_ISLINKBATTLE] ; $d12b - cp $4 - ld a, $2 - jr nz, .asm_3cb81 - call SaveScreenTilesToBuffer1 - xor a - ld [$cd6a], a - ld a, $f - ld [wPlayerMoveListIndex], a ; $cc2e - call Func_3d605 - call LoadScreenTilesFromBuffer1 - ld a, [$cc3e] - cp $f - ld a, $2 - jr z, .asm_3cb81 - dec a -.asm_3cb81 - ld [$cf0b], a - ld a, (SFX_08_44 - SFX_Headers_08) / 3 - call PlaySoundWaitForCurrent - ld hl, GotAwayText - call PrintText - call WaitForSoundToFinish - call SaveScreenTilesToBuffer1 - scf - ret - -CantEscapeText: ; 3cb97 (f:4b97) - TX_FAR _CantEscapeText - db "@" - -NoRunningText: ; 3cb9c (f:4b9c) - TX_FAR _NoRunningText - db "@" - -GotAwayText: ; 3cba1 (f:4ba1) - TX_FAR _GotAwayText - db "@" - -Func_3cba6: ; 3cba6 (f:4ba6) - ld a, [wWhichPokemon] ; $cf92 - ld bc, $2c - ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) - call AddNTimes - ld de, W_PLAYERMONID - ld bc, $c - call CopyData - ld bc, $f - add hl, bc - ld de, W_PLAYERMONIVS - ld bc, $2 - call CopyData - ld de, W_PLAYERMONPP ; $d02d - ld bc, $4 - call CopyData - ld de, W_PLAYERMONLEVEL ; $d022 - ld bc, $b - call CopyData - ld a, [$cfd9] - ld [$d0b5], a - call GetMonHeader - ld hl, W_PARTYMON1NAME ; $d2b5 - ld a, [wPlayerMonNumber] ; $cc2f - call SkipFixedLengthTextEntries - ld de, W_PLAYERMONNAME - ld bc, $b - call CopyData - ld hl, W_PLAYERMONLEVEL ; $d022 - ld de, $cd0f - ld bc, $b - call CopyData - call Func_3ed1a - call Func_3ee19 - ld a, $7 - ld b, $8 - ld hl, wPlayerMonAttackMod ; $cd1a -.asm_3cc0e - ld [hli], a - dec b - jr nz, .asm_3cc0e - ret - -Func_3cc13: ; 3cc13 (f:4c13) - ld a, [wWhichPokemon] ; $cf92 - ld bc, $2c - ld hl, wEnemyMons ; $d8a4 - call AddNTimes - ld de, $cfe5 - ld bc, $c - call CopyData - ld bc, $f - add hl, bc - ld de, $cff1 - ld bc, $2 - call CopyData - ld de, W_ENEMYMONPP ; $cffe - ld bc, $4 - call CopyData - ld de, W_ENEMYMONLEVEL ; $cff3 - ld bc, $b - call CopyData - ld a, [$cfe5] - ld [$d0b5], a - call GetMonHeader - ld hl, $d9ee - ld a, [wWhichPokemon] ; $cf92 - call SkipFixedLengthTextEntries - ld de, W_ENEMYMONNAME - ld bc, $b - call CopyData - ld hl, W_ENEMYMONLEVEL ; $cff3 - ld de, $cd23 - ld bc, $b - call CopyData - call Func_3ed1e - ld hl, W_MONHBASESTATS - ld de, $d002 - ld b, $5 -.asm_3cc79 - ld a, [hli] - ld [de], a - inc de - dec b - jr nz, .asm_3cc79 - ld a, $7 - ld b, $8 - ld hl, wEnemyMonStatMods ; $cd2e -.asm_3cc86 - ld [hli], a - dec b - jr nz, .asm_3cc86 - ld a, [wWhichPokemon] ; $cf92 - ld [W_ENEMYMONNUMBER], a ; $cfe8 - ret - -Func_3cc91: ; 3cc91 (f:4c91) - ld hl, Func_58e59 - ld b, BANK(Func_58e59) - call Bankswitch - ld hl, W_ENEMYMONCURHP ; $cfe6 - ld a, [hli] - or [hl] - jp z, Func_3cca4 - call Func_3cdec - -Func_3cca4: ; 3cca4 (f:4ca4) - call Func_3cd60 - ld a, $4 - call Predef ; indirect jump to LoadMonBackSprite (3f103 (f:7103)) - xor a - ld [$ffe1], a - ld hl, $cc2d - ld [hli], a - ld [hl], a - ld [$cc5b], a - ld [$d05b], a - ld [W_PLAYERMOVENUM], a ; $cfd2 - ld hl, $ccf1 - ld [hli], a - ld [hl], a - ld hl, $d060 - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld [W_PLAYERDISABLEDMOVE], a ; $d06d - ld [$ccee], a - ld [$ccf7], a - ld b, $1 - call GoPAL_SET - ld hl, W_ENEMYBATTSTATUS1 ; $d067 - res 5, [hl] - ld a, $1 - ld [H_WHOSETURN], a ; $fff3 - ld a, POOF_ANIM - call PlayMoveAnimation - FuncCoord 4, 11 ; $c480 - ld hl, Coord - ld a, $2 - call Predef ; indirect jump to Func_3f073 (3f073 (f:7073)) - ld a, [$cf91] - call PlayCry - call Func_3ee94 - jp SaveScreenTilesToBuffer1 - -Func_3ccfa: ; 3ccfa (f:4cfa) - FuncCoord 1, 5 ; $c405 - ld hl, Coord - ld bc, $707 - call ClearScreenArea - FuncCoord 3, 7 ; $c42f - ld hl, Coord - ld bc, $505 - xor a - ld [$cd6c], a - ld [H_DOWNARROWBLINKCNT1], a ; $ff8b - ld a, $5 - call Predef ; indirect jump to Func_79aba (79aba (1e:5aba)) - ld c, $4 - call DelayFrames - call Func_3cd3a - FuncCoord 4, 9 ; $c458 - ld hl, Coord - ld bc, $303 - ld a, $1 - ld [$cd6c], a - xor a - ld [H_DOWNARROWBLINKCNT1], a ; $ff8b - ld a, $5 - call Predef ; indirect jump to Func_79aba (79aba (1e:5aba)) - call Delay3 - call Func_3cd3a - ld a, $4c - FuncCoord 5, 11 ; $c481 - ld [Coord], a - -Func_3cd3a: ; 3cd3a (f:4d3a) - FuncCoord 1, 5 ; $c405 - ld hl, Coord - ld bc, $707 - jp ClearScreenArea - -; reads player's current mon's HP into W_PLAYERMONCURHP -ReadPlayerMonCurHPAndStatus: ; 3cd43 (f:4d43) - ld a, [wPlayerMonNumber] ; $cc2f - ld hl, W_PARTYMON1_HP ; $d16c - ld bc, W_PARTYMON2DATA - W_PARTYMON1DATA - call AddNTimes - ld d, h - ld e, l - ld hl, W_PLAYERMONCURHP ; $d015 - ld bc, $4 ; 2 bytes HP, 1 byte unknown (unused?), 1 byte status - jp CopyData - -Func_3cd5a: ; 3cd5a (f:4d5a) - call Func_3cd60 - jp Func_3cdec - -Func_3cd60: ; 3cd60 (f:4d60) - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - FuncCoord 9, 7 ; $c435 - ld hl, Coord - ld bc, $50b - call ClearScreenArea - ld hl, Func_3a902 - ld b, BANK(Func_3a902) - call Bankswitch - FuncCoord 18, 9 ; $c466 - ld hl, Coord - ld [hl], $73 - ld de, W_PLAYERMONNAME - FuncCoord 10, 7 ; $c436 - ld hl, Coord - call Func_3ce9c - call PlaceString - ld hl, W_PLAYERMONID - ld de, $cf98 - ld bc, $c - call CopyData - ld hl, W_PLAYERMONLEVEL ; $d022 - ld de, $cfb9 - ld bc, $b - call CopyData - FuncCoord 14, 8 ; $c44e - ld hl, Coord - push hl - inc hl - ld de, $cf9c - call PrintStatusConditionNotFainted - pop hl - jr nz, .asm_3cdae - call PrintLevel -.asm_3cdae - ld a, [$cf98] - ld [$cf91], a - FuncCoord 10, 9 ; $c45e - ld hl, Coord - ld a, $5f - call Predef ; indirect jump to Func_128ef (128ef (4:68ef)) - ld a, $1 - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ld hl, $cf1d - call Func_3ce90 - ld hl, W_PLAYERMONCURHP ; $d015 - ld a, [hli] - or [hl] - jr z, .asm_3cdd9 - ld a, [$ccf6] - and a - ret nz - ld a, [$cf1d] - cp $2 - jr z, .asm_3cde6 -.asm_3cdd9 - ld hl, $d083 - bit 7, [hl] - ld [hl], $0 - ret z - xor a - ld [$c02a], a - ret -.asm_3cde6 - ld hl, $d083 - set 7, [hl] - ret - -Func_3cdec: ; 3cdec (f:4dec) - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ld hl, wTileMap - ld bc, $40c - call ClearScreenArea - ld hl, Func_3a919 - ld b, BANK(Func_3a919) - call Bankswitch - ld de, W_ENEMYMONNAME - FuncCoord 1, 0 ; $c3a1 - ld hl, Coord - call Func_3ce9c - call PlaceString - FuncCoord 4, 1 ; $c3b8 - ld hl, Coord - push hl - inc hl - ld de, W_ENEMYMONSTATUS ; $cfe9 - call PrintStatusConditionNotFainted - pop hl - jr nz, .asm_3ce23 - ld a, [W_ENEMYMONLEVEL] ; $cff3 - ld [$cfb9], a - call PrintLevel -.asm_3ce23 - ld hl, W_ENEMYMONCURHP ; $cfe6 - ld a, [hli] - ld [$ff97], a - ld a, [hld] - ld [$ff98], a - or [hl] - jr nz, .asm_3ce36 - ld c, a - ld e, a - ld d, $6 - jp Func_3ce7f -.asm_3ce36 - xor a - ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) - ld a, $30 - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - call Multiply - ld hl, W_ENEMYMONMAXHP ; $cff4 - ld a, [hli] - ld b, a - ld a, [hl] - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - ld a, b - and a - jr z, .asm_3ce6a - ld a, [H_REMAINDER] ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - srl b - rr a - srl b - rr a - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - ld a, [$ff97] - ld b, a - srl b - ld a, [$ff98] - rr a - srl b - rr a - ld [$ff98], a - ld a, b - ld [$ff97], a -.asm_3ce6a - ld a, [$ff97] - ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) - ld a, [$ff98] - ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) - ld a, $2 - ld b, a - call Divide - ld a, [$ff98] - ld e, a - ld a, $6 - ld d, a - ld c, a - -Func_3ce7f: ; 3ce7f (f:4e7f) - xor a - ld [wListMenuID], a ; $cf94 - FuncCoord 2, 2 ; $c3ca - ld hl, Coord - call DrawHPBar - ld a, $1 - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ld hl, $cf1e - -Func_3ce90: ; 3ce90 (f:4e90) - ld b, [hl] - call Func_3df9 - ld a, [hl] - cp b - ret z - ld b, $1 - jp GoPAL_SET - -Func_3ce9c: ; 3ce9c (f:4e9c) - push de - inc hl - inc hl - ld b, $2 -.asm_3cea1 - inc de - ld a, [de] - cp $50 - jr z, .asm_3ceb1 - inc de - ld a, [de] - cp $50 - jr z, .asm_3ceb1 - dec hl - dec b - jr nz, .asm_3cea1 -.asm_3ceb1 - pop de - ret - -InitBattleMenu: ; 3ceb3 (f:4eb3) - call LoadScreenTilesFromBuffer1 ; restore saved screen - ld a, [W_BATTLETYPE] ; $d05a - and a - jr nz, .nonstandardbattle - call Func_3cd5a ; redraw names and HP bars? - call Func_3ee94 - call SaveScreenTilesToBuffer1 -.nonstandardbattle - ld a, [W_BATTLETYPE] ; $d05a - cp $2 ; safari - ld a, $b ; safari menu id - jr nz, .menuselected - ld a, $1b ; regular menu id -.menuselected - ld [$d125], a - call DisplayTextBoxID - ld a, [W_BATTLETYPE] ; $d05a - dec a - jp nz, RegularBattleMenu ; regular battle - ; the following happens for the old man tutorial - ld hl, W_PLAYERNAME ; $d158 - ld de, W_GRASSRATE ; $d887 - ld bc, $b - call CopyData ; temporarily save the player name in unused space, - ; which is supposed to get overwritten when entering a - ; map with wild pokémon. due to an oversight, the data - ; may not get overwritten (cinnabar) and the infamous - ; missingno. glitch can show up. - ld hl, OldManName ; $4f12 - ld de, W_PLAYERNAME ; $d158 - ld bc, $b - call CopyData - ; the following simulates the keystrokes by drawing menus on screen - FuncCoord 9, 14 ; $c4c1 - ld hl, Coord - ld [hl], "▶" - ld c, $50 - call DelayFrames - ld [hl], $7f - FuncCoord 9, 16 ; $c4e9 - ld hl, Coord - ld [hl], "▶" - ld c, $32 - call DelayFrames - ld [hl], $ec - ld a, $2 - jp Func_3cfe8 - -OldManName: ; 3cf12 (f:4f12) - db "OLD MAN@" - -RegularBattleMenu: ; 3cf1a (f:4f1a) - ld a, [$cc2d] - ld [wCurrentMenuItem], a ; $cc26 - ld [wLastMenuItem], a ; $cc2a - sub $2 - jr c, .leftcolumn - ld [wCurrentMenuItem], a ; $cc26 - ld [wLastMenuItem], a ; $cc2a - jr .rightcolumn -.leftcolumn - ld a, [W_BATTLETYPE] ; $d05a - cp $2 - ld a, " " - jr z, .safaribattle - FuncCoord 15, 14 ; $c4c7 - ld [Coord], a - FuncCoord 15, 16 ; $c4ef - ld [Coord], a - ld b, $9 - jr .notsafari -.safaribattle - FuncCoord 13, 14 ; $c4c5 - ld [Coord], a - FuncCoord 13, 16 ; $c4ed - ld [Coord], a - FuncCoord 7, 14 ; $c4bf - ld hl, Coord - ld de, W_NUMSAFARIBALLS ; $da47 - ld bc, $102 - call PrintNumber - ld b, $1 -.notsafari - ld hl, wTopMenuItemY ; $cc24 - ld a, $e - ld [hli], a - ld a, b - ld [hli], a - inc hl - inc hl - ld a, $1 - ld [hli], a - ld [hl], $11 - call HandleMenuInput - bit 4, a - jr nz, .rightcolumn - jr .selection -.rightcolumn - ld a, [W_BATTLETYPE] ; $d05a - cp $2 - ld a, " " - jr z, .safarirightcolumn - FuncCoord 9, 14 ; $c4c1 - ld [Coord], a - FuncCoord 9, 16 ; $c4e9 - ld [Coord], a - ld b, $f - jr .notsafarirightcolumn -.safarirightcolumn - FuncCoord 1, 14 ; $c4b9 - ld [Coord], a - FuncCoord 1, 16 ; $c4e1 - ld [Coord], a - FuncCoord 7, 14 ; $c4bf - ld hl, Coord - ld de, W_NUMSAFARIBALLS ; $da47 - ld bc, $102 - call PrintNumber - ld b, $d -.notsafarirightcolumn - ld hl, wTopMenuItemY ; $cc24 - ld a, $e - ld [hli], a - ld a, b - ld [hli], a - inc hl - inc hl - ld a, $1 - ld [hli], a - ld a, $21 - ld [hli], a - call HandleMenuInput - bit 5, a - jr nz, .leftcolumn - ld a, [wCurrentMenuItem] ; $cc26 - add $2 ; if we're in the right column, the actual id is +2 - ld [wCurrentMenuItem], a ; $cc26 -.selection - call PlaceUnfilledArrowMenuCursor - ld a, [W_BATTLETYPE] ; $d05a - cp $2 - ld a, [wCurrentMenuItem] ; $cc26 - ld [$cc2d], a - jr z, .asm_3cfd0 - cp $1 - jr nz, .asm_3cfcb - inc a - jr .asm_3cfd0 -.asm_3cfcb - cp $2 ; what - jr nz, .asm_3cfd0 - dec a -.asm_3cfd0 - and a - jr nz, Func_3cfe8 - ; first option was selected... - ld a, [W_BATTLETYPE] ; $d05a - cp $2 - jr z, .safari1 - xor a - ld [$d120], a - jp LoadScreenTilesFromBuffer1 ; restore saved screen and return?? -.safari1 ; safari first option?? - ld a, $8 - ld [$cf91], a - jr asm_3d05f - -Func_3cfe8: ; 3cfe8 (f:4fe8) - cp $2 - jp nz, Func_3d0ca - ld a, [W_ISLINKBATTLE] ; $d12b - cp $4 - jr nz, .asm_3cffd - ld hl, ItemsCantBeUsedHereText - call PrintText - jp InitBattleMenu -.asm_3cffd ; bag? - call SaveScreenTilesToBuffer2 ; copy bg? - ld a, [W_BATTLETYPE] ; $d05a - cp $2 - jr nz, asm_3d00e - ld a, $15 - ld [$cf91], a - jr asm_3d05f -asm_3d00e: ; 3d00e (f:500e) - call LoadScreenTilesFromBuffer1 - ld a, [W_BATTLETYPE] ; $d05a - and a - jr nz, .asm_3d01a - call Func_3cd5a -.asm_3d01a - ld a, [W_BATTLETYPE] ; $d05a - dec a - jr nz, Func_3d031 - ld hl, OldManItemList - ld a, l - ld [$cf8b], a - ld a, h - ld [$cf8c], a - jr Func_3d03c - -OldManItemList: ; 3d02d (f:502d) - db $01, POKE_BALL, 50, $ff - -Func_3d031 - ld hl, wNumBagItems ; $d31d - ld a, l - ld [$cf8b], a - ld a, h - ld [$cf8c], a -Func_3d03c - xor a - ld [$cf93], a - ld a, $3 - ld [wListMenuID], a ; $cf94 - ld a, [$cc2c] - ld [wCurrentMenuItem], a ; $cc26 - call DisplayListMenuID - ld a, [wCurrentMenuItem] ; $cc26 - ld [$cc2c], a - ld a, $0 - ld [$cc37], a - ld [$cc35], a - jp c, InitBattleMenu -asm_3d05f: ; 3d05f (f:505f) - ld a, [$cf91] - ld [$d11e], a - call GetItemName - call CopyStringToCF4B ; copy name - xor a - ld [$d152], a - call UseItem - call Func_3ee5b - call CleanLCD_OAM - xor a - ld [wCurrentMenuItem], a ; $cc26 - ld a, [W_BATTLETYPE] ; $d05a - cp $2 - jr z, .asm_3d09c - ld a, [$cd6a] - and a - jp z, asm_3d00e - ld a, [W_PLAYERBATTSTATUS1] ; $d062 - bit 5, a - jr z, .asm_3d09c - ld hl, $d06a - dec [hl] - jr nz, .asm_3d09c - ld hl, W_PLAYERBATTSTATUS1 ; $d062 - res 5, [hl] -.asm_3d09c - ld a, [$d11c] - and a - jr nz, .asm_3d0b7 - ld a, [W_BATTLETYPE] ; $d05a - cp $2 - jr z, .asm_3d0b2 - call LoadScreenTilesFromBuffer1 - call Func_3cd5a ; redraw name and hp bar? - call Delay3 -.asm_3d0b2 - call GBPalNormal - and a - ret -.asm_3d0b7 - call GBPalNormal - xor a - ld [$d11c], a - ld a, $2 - ld [$cf0b], a - scf - ret - -ItemsCantBeUsedHereText: ; 3d0c5 (f:50c5) - TX_FAR _ItemsCantBeUsedHereText - db "@" - -Func_3d0ca: ; 3d0ca (f:50ca) - dec a - jp nz, Func_3d1fa - call SaveScreenTilesToBuffer2 - ld a, [W_BATTLETYPE] ; $d05a - cp $2 - jr nz, Func_3d0e0 - ld a, $16 - ld [$cf91], a - jp asm_3d05f - -Func_3d0e0: ; 3d0e0 (f:50e0) - call LoadScreenTilesFromBuffer1 - xor a - ld [$d07d], a - ld [$cc35], a - call DisplayPartyMenu -asm_3d0ed: ; 3d0ed (f:50ed) - jp nc, Func_3d119 -asm_3d0f0: ; 3d0f0 (f:50f0) - call CleanLCD_OAM - call GBPalWhiteOut - call Func_3ee5b - call LoadScreenTilesFromBuffer2 - call GoPAL_SET_CF1C - call GBPalNormal - jp InitBattleMenu - -Func_3d105: ; 3d105 (f:5105) - FuncCoord 11, 11 ; $c487 - ld hl, Coord - ld bc, $81 - ld a, $7f - call FillMemory - xor a - ld [$d07d], a - call GoBackToPartyMenu - jr asm_3d0ed - -Func_3d119: ; 3d119 (f:5119) - ld a, $c - ld [$d125], a - call DisplayTextBoxID - ld hl, wTopMenuItemY ; $cc24 - ld a, $c - ld [hli], a - ld [hli], a - xor a - ld [hli], a - inc hl - ld a, $2 - ld [hli], a - ld a, $3 - ld [hli], a - xor a - ld [hl], a - call HandleMenuInput - bit 1, a - jr nz, Func_3d105 - call PlaceUnfilledArrowMenuCursor - ld a, [wCurrentMenuItem] ; $cc26 - cp $2 - jr z, asm_3d0f0 - and a - jr z, .asm_3d18a - xor a - ld [$cc49], a - ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) - call CleanLCD_OAM - ld a, $36 - call Predef ; indirect jump to StatusScreen (12953 (4:6953)) - ld a, $37 - call Predef ; indirect jump to StatusScreen2 (12b57 (4:6b57)) - ld a, [W_ENEMYBATTSTATUS2] ; $d068 - bit 4, a - ld hl, AnimationSubstitute - jr nz, .asm_3d182 - ld a, [$ccf3] - and a - ld hl, AnimationMinimizeMon - jr nz, .asm_3d182 - ld a, [$cfe5] - ld [$cf91], a - ld [$d0b5], a - call GetMonHeader - ld de, $9000 - call LoadMonFrontSprite - jr .asm_3d187 -.asm_3d182 - ld b, BANK(AnimationSubstitute) ; BANK(AnimationMinimizeMon) - call Bankswitch -.asm_3d187 - jp Func_3d0e0 -.asm_3d18a - ld a, [wPlayerMonNumber] ; $cc2f - ld d, a - ld a, [wWhichPokemon] ; $cf92 - cp d - jr nz, .asm_3d19d - ld hl, AlreadyOutText - call PrintText - jp Func_3d105 -.asm_3d19d - call Func_3ca97 - jp z, Func_3d105 - ld a, $1 - ld [$cd6a], a - call GBPalWhiteOut - call CleanLCD_OAM - call Func_3ee5b - call LoadScreenTilesFromBuffer1 - call GoPAL_SET_CF1C - call GBPalNormal - -Func_3d1ba: ; 3d1ba (f:51ba) - ld hl, Func_58ed1 - ld b, BANK(Func_58ed1) - call Bankswitch - ld c, $32 - call DelayFrames - call Func_3ccfa - ld a, [wWhichPokemon] ; $cf92 - ld [wPlayerMonNumber], a ; $cc2f - ld c, a - ld b, $1 - push bc - ld hl, W_PLAYERMONSALIVEFLAGS - ld a, $10 - call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) - pop bc - ld hl, $ccf5 - ld a, $10 - call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) - call Func_3cba6 - call Func_3cc91 - call SaveScreenTilesToBuffer1 - ld a, $2 - ld [wCurrentMenuItem], a ; $cc26 - and a - ret - -AlreadyOutText: ; 3d1f5 (f:51f5) - TX_FAR _AlreadyOutText - db "@" - -Func_3d1fa: ; 3d1fa (f:51fa) - call LoadScreenTilesFromBuffer1 - ld a, $3 - ld [wCurrentMenuItem], a ; $cc26 - ld hl, W_PLAYERMONSPEED - ld de, W_ENEMYMONSPEED - call Func_3cab9 - ld a, $0 - ld [$d11f], a - ret c - ld a, [$cd6a] - and a - ret nz - jp InitBattleMenu - -MoveSelectionMenu: ; 3d219 (f:5219) - ld a, [wMoveMenuType] - dec a - jr z, .mimicmenu - dec a - jr z, .relearnmenu - jr .regularmenu - -.loadmoves - ld de, $d0dc - ld bc, $4 - call CopyData - ld hl, Func_39b87 - ld b, BANK(Func_39b87) - call Bankswitch - ret - -.writemoves - ld de, $d0e1 - ld a, [$fff6] - set 2, a - ld [$fff6], a - call PlaceString - ld a, [$fff6] - res 2, a - ld [$fff6], a - ret - -.regularmenu - call Func_3d3f5 - ret z - ld hl, W_PLAYERMONMOVES - call .loadmoves - FuncCoord 4, 12 ; $c494 - ld hl, Coord - ld b, $4 - ld c, $e - di - call TextBoxBorder - FuncCoord 4, 12 ; $c494 - ld hl, Coord - ld [hl], $7a - FuncCoord 10, 12 ; $c49a - ld hl, Coord - ld [hl], $7e - ei - FuncCoord 6, 13 ; $c4aa - ld hl, Coord - call .writemoves - ld b, $5 - ld a, $c - jr .menuset -.mimicmenu - ld hl, W_ENEMYMONMOVES - call .loadmoves - FuncCoord 0, 7 ; $c42c - ld hl, Coord - ld b, $4 - ld c, $e - call TextBoxBorder - FuncCoord 2, 8 ; $c442 - ld hl, Coord - call .writemoves - ld b, $1 - ld a, $7 - jr .menuset -.relearnmenu - ld a, [wWhichPokemon] ; $cf92 - ld hl, W_PARTYMON1_MOVE1 ; $d173 - ld bc, $2c - call AddNTimes - call .loadmoves - FuncCoord 4, 7 ; $c430 - ld hl, Coord - ld b, $4 - ld c, $e - call TextBoxBorder - FuncCoord 6, 8 ; $c446 - ld hl, Coord - call .writemoves - ld b, $5 - ld a, $7 -.menuset - ld hl, wTopMenuItemY ; $cc24 - ld [hli], a - ld a, b - ld [hli], a ; wTopMenuItemX - ld a, [wMoveMenuType] - cp $1 - jr z, .selectedmoveknown - ld a, $1 - jr nc, .selectedmoveknown - ld a, [wPlayerMoveListIndex] ; $cc2e - inc a -.selectedmoveknown - ld [hli], a ; wCurrentMenuItem - inc hl ; wTileBehindCursor untouched - ld a, [$cd6c] - inc a - inc a - ld [hli], a ; wMaxMenuItem - ld a, [wMoveMenuType] - dec a - ld b, $c1 ; can't use B - jr z, .matchedkeyspicked - dec a - ld b, $c3 - jr z, .matchedkeyspicked - ld a, [W_ISLINKBATTLE] ; $d12b - cp $4 - jr z, .matchedkeyspicked - ld a, [W_FLAGS_D733] - bit 0, a - ld b, $c7 - jr z, .matchedkeyspicked - ld b, $ff -.matchedkeyspicked - ld a, b - ld [hli], a ; wMenuWatchedKeys - ld a, [wMoveMenuType] - cp $1 - jr z, .movelistindex1 - ld a, [wPlayerMoveListIndex] ; $cc2e - inc a -.movelistindex1 - ld [hl], a ; wLastMenuItem - -Func_3d2fe: ; 3d2fe (f:52fe) - ld a, [wMoveMenuType] - and a - jr z, .battleselect - dec a - jr nz, .select - FuncCoord 1, 14 ; $c4b9 - ld hl, Coord - ld de, WhichTechniqueString ; $53b8 - call PlaceString - jr .select -.battleselect - ld a, [W_FLAGS_D733] - bit 0, a - jr nz, .select - call Func_3d4b6 - ld a, [$cc35] - and a - jr z, .select - FuncCoord 5, 13 ; $c4a9 - ld hl, Coord - dec a - ld bc, $14 - call AddNTimes - ld [hl], $ec -.select - ld hl, $fff6 - set 1, [hl] - call HandleMenuInput - ld hl, $fff6 - res 1, [hl] - bit 6, a - jp nz, Func_3d3c9 ; up - bit 7, a - jp nz, Func_3d3dd ; down - bit 2, a - jp nz, Func_3d435 ; select - bit 1, a ; B, but was it reset above? - push af - xor a - ld [$cc35], a - ld a, [wCurrentMenuItem] ; $cc26 - dec a - ld [wCurrentMenuItem], a ; $cc26 - ld b, a - ld a, [wMoveMenuType] - dec a ; if not mimic - jr nz, .nob - pop af - ret -.nob - dec a - ld a, b - ld [wPlayerMoveListIndex], a ; $cc2e - jr nz, .moveselected - pop af - ret -.moveselected - pop af - ret nz - ld hl, W_PLAYERMONPP ; $d02d - ld a, [wCurrentMenuItem] ; $cc26 - ld c, a - ld b, $0 - add hl, bc - ld a, [hl] - and $3f - jr z, .nopp - ld a, [W_PLAYERDISABLEDMOVE] ; $d06d - swap a - and $f - dec a - cp c - jr z, .disabled - ld a, [W_PLAYERBATTSTATUS3] ; $d064 - bit 3, a ; transformed - jr nz, .dummy ; game freak derp -.dummy - ld a, [wCurrentMenuItem] ; $cc26 - ld hl, W_PLAYERMONMOVES - ld c, a - ld b, $0 - add hl, bc - ld a, [hl] - ld [wPlayerSelectedMove], a ; $ccdc - xor a - ret -.disabled - ld hl, MoveDisabledText - jr .print -.nopp - ld hl, MoveNoPPText -.print - call PrintText - call LoadScreenTilesFromBuffer1 - jp MoveSelectionMenu - -MoveNoPPText: ; 3d3ae (f:53ae) - TX_FAR _MoveNoPPText - db "@" - -MoveDisabledText: ; 3d3b3 (f:53b3) - TX_FAR _MoveDisabledText - db "@" - -WhichTechniqueString: ; 3d3b8 (f:53b8) - db "WHICH TECHNIQUE?@" - -Func_3d3c9: ; 3d3c9 (f:53c9) - ld a, [wCurrentMenuItem] ; $cc26 - and a - jp nz, Func_3d2fe - call EraseMenuCursor - ld a, [$cd6c] - inc a - ld [wCurrentMenuItem], a ; $cc26 - jp Func_3d2fe - -Func_3d3dd: ; 3d3dd (f:53dd) - ld a, [wCurrentMenuItem] ; $cc26 - ld b, a - ld a, [$cd6c] - inc a - inc a - cp b - jp nz, Func_3d2fe - call EraseMenuCursor - ld a, $1 - ld [wCurrentMenuItem], a ; $cc26 - jp Func_3d2fe - -Func_3d3f5: ; 3d3f5 (f:53f5) - ld a, $a5 - ld [wPlayerSelectedMove], a ; $ccdc - ld a, [W_PLAYERDISABLEDMOVE] ; $d06d - and a - ld hl, W_PLAYERMONPP ; $d02d - jr nz, .asm_3d40e - ld a, [hli] - or [hl] - inc hl - or [hl] - inc hl - or [hl] - and $3f - ret nz - jr .asm_3d423 -.asm_3d40e - swap a - and $f - ld b, a - ld d, $5 - xor a -.asm_3d416 - dec d - jr z, .asm_3d421 - ld c, [hl] - inc hl - dec b - jr z, .asm_3d416 - or c - jr .asm_3d416 -.asm_3d421 - and a - ret nz -.asm_3d423 - ld hl, NoMovesLeftText - call PrintText - ld c, $3c - call DelayFrames - xor a - ret - -NoMovesLeftText: ; 3d430 (f:5430) - TX_FAR _NoMovesLeftText - db "@" - -Func_3d435: ; 3d435 (f:5435) - ld a, [$cc35] - and a - jr z, asm_3d4ad - ld hl, W_PLAYERMONMOVES - call Func_3d493 - ld hl, W_PLAYERMONPP ; $d02d - call Func_3d493 - ld hl, W_PLAYERDISABLEDMOVE ; $d06d - ld a, [hl] - swap a - and $f - ld b, a - ld a, [wCurrentMenuItem] ; $cc26 - cp b - jr nz, .asm_3d463 - ld a, [hl] - and $f - ld b, a - ld a, [$cc35] - swap a - add b - ld [hl], a - jr .asm_3d474 -.asm_3d463 - ld a, [$cc35] - cp b - jr nz, .asm_3d474 - ld a, [hl] - and $f - ld b, a - ld a, [wCurrentMenuItem] ; $cc26 - swap a - add b - ld [hl], a -.asm_3d474 - ld hl, W_PARTYMON1_MOVE1 ; $d173 - ld a, [wPlayerMonNumber] ; $cc2f - ld bc, $2c - call AddNTimes - push hl - call Func_3d493 - pop hl - ld bc, $15 - add hl, bc - call Func_3d493 - xor a - ld [$cc35], a - jp MoveSelectionMenu - -Func_3d493: ; 3d493 (f:5493) - push hl - ld a, [$cc35] - dec a - ld c, a - ld b, $0 - add hl, bc - ld d, h - ld e, l - pop hl - ld a, [wCurrentMenuItem] ; $cc26 - dec a - ld c, a - ld b, $0 - add hl, bc - ld a, [de] - ld b, [hl] - ld [hl], a - ld a, b - ld [de], a - ret -asm_3d4ad: ; 3d4ad (f:54ad) - ld a, [wCurrentMenuItem] ; $cc26 - ld [$cc35], a - jp MoveSelectionMenu - -Func_3d4b6: ; 3d4b6 (f:54b6) - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - FuncCoord 0, 8 ; $c440 - ld hl, Coord - ld b, $3 - ld c, $9 - call TextBoxBorder - ld a, [W_PLAYERDISABLEDMOVE] ; $d06d - and a - jr z, .asm_3d4df - swap a - and $f - ld b, a - ld a, [wCurrentMenuItem] ; $cc26 - cp b - jr nz, .asm_3d4df - FuncCoord 1, 10 ; $c469 - ld hl, Coord - ld de, DisabledText - call PlaceString - jr .asm_3d54e -.asm_3d4df - ld hl, wCurrentMenuItem ; $cc26 - dec [hl] - xor a - ld [H_WHOSETURN], a ; $fff3 - ld hl, W_PLAYERMONMOVES - ld a, [wCurrentMenuItem] ; $cc26 - ld c, a - ld b, $0 - add hl, bc - ld a, [hl] - ld [wPlayerSelectedMove], a ; $ccdc - ld a, [wPlayerMonNumber] ; $cc2f - ld [wWhichPokemon], a ; $cf92 - ld a, $4 - ld [$cc49], a - ld hl, GetMaxPP - ld b, BANK(GetMaxPP) - call Bankswitch - ld hl, wCurrentMenuItem ; $cc26 - ld c, [hl] - inc [hl] - ld b, $0 - ld hl, W_PLAYERMONPP ; $d02d - add hl, bc - ld a, [hl] - and $3f - ld [$cd6d], a - FuncCoord 1, 9 ; $c455 - ld hl, Coord - ld de, TypeText - call PlaceString - FuncCoord 7, 11 ; $c483 - ld hl, Coord - ld [hl], "/" - FuncCoord 5, 9 ; $c459 - ld hl, Coord - ld [hl], "/" - FuncCoord 5, 11 ; $c481 - ld hl, Coord - ld de, $cd6d - ld bc, $102 - call PrintNumber - FuncCoord 8, 11 ; $c484 - ld hl, Coord - ld de, $d11e - ld bc, $102 - call PrintNumber - call GetCurrentMove - FuncCoord 2, 10 ; $c46a - ld hl, Coord - ld a, $5d - call Predef ; indirect jump to Func_27d98 (27d98 (9:7d98)) -.asm_3d54e - ld a, $1 - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - jp Delay3 - -DisabledText: ; 3d555 (f:5555) - db "disabled!@" - -TypeText: ; 3d55f (f:555f) - db "TYPE@" - -SelectEnemyMove: ; 3d564 (f:5564) - ld a, [W_ISLINKBATTLE] - sub $4 - jr nz, .noLinkBattle - call SaveScreenTilesToBuffer1 - call Func_3d605 - call LoadScreenTilesFromBuffer1 - ld a, [$cc3e] - cp $e - jp z, .asm_3d601 - cp $d - jr z, .unableToMove - cp $4 - ret nc - ld [$cce2], a - ld c, a - ld hl, W_ENEMYMONMOVES - ld b, $0 - add hl, bc - ld a, [hl] - jr .done -.noLinkBattle - ld a, [W_ENEMYBATTSTATUS2] - and $60 ; need to recharge or using rage - ret nz - ld hl, W_ENEMYBATTSTATUS1 - ld a, [hl] - and $12 ; using multi-turn move or bide - ret nz - ld a, [W_ENEMYMONSTATUS] - and SLP | FRZ ; sleeping or frozen - ret nz - ld a, [W_ENEMYBATTSTATUS1] - and $21 ; using fly/dig or thrash/petal dance - ret nz - ld a, [W_PLAYERBATTSTATUS1] - bit 5, a ; caught in player's multi-turn move (e.g. wrap) - jr z, .notCaughtInWrap -.unableToMove - ld a, $ff - jr .done -.notCaughtInWrap - ld hl, W_ENEMYMONMOVES+1 ; 2nd enemy move - ld a, [hld] - and a - jr nz, .atLeastTwoMovesAvailable - ld a, [W_ENEMYDISABLEDMOVE] - and a - ld a, STRUGGLE ; struggle if the only move is disabled - jr nz, .done -.atLeastTwoMovesAvailable - ld a, [W_ISINBATTLE] - dec a - jr z, .chooseRandomMove ; wild encounter - ld hl, AIEnemyTrainerChooseMoves - ld b, BANK(AIEnemyTrainerChooseMoves) - call Bankswitch -.chooseRandomMove - push hl - call GenRandomInBattle ; get random - ld b, $1 - cp $3f ; select move 1 in [0,3e] (63/256 chance) - jr c, .moveChosen - inc hl - inc b - cp $7f ; select move 1 in [3f,7e] (64/256 chance) - jr c, .moveChosen - inc hl - inc b - cp $be ; select move 1 in [7f,bd] (63/256 chance) - jr c, .moveChosen - inc hl - inc b ; select move 4 in [be,ff] (66/256 chance) -.moveChosen - ld a, b - dec a - ld [wEnemyMoveListIndex], a - ld a, [W_ENEMYDISABLEDMOVE] - swap a - and $f - cp b - ld a, [hl] - pop hl - jr z, .chooseRandomMove ; move disabled, try again - and a - jr z, .chooseRandomMove ; move non-existant, try again -.done - ld [wEnemySelectedMove], a - ret -.asm_3d601 - ld a, $a5 - jr .done - -Func_3d605: ; 3d605 (f:5605) - ld a, $ff - ld [$cc3e], a - ld a, [wPlayerMoveListIndex] ; $cc2e - cp $f - jr z, .asm_3d630 - ld a, [$cd6a] - and a - jr nz, .asm_3d629 - ld a, [wPlayerSelectedMove] ; $ccdc - cp $a5 - ld b, $e - jr z, .asm_3d62f - dec b - inc a - jr z, .asm_3d62f - ld a, [wPlayerMoveListIndex] ; $cc2e - jr .asm_3d630 -.asm_3d629 - ld a, [wWhichPokemon] ; $cf92 - add $4 - ld b, a -.asm_3d62f - ld a, b -.asm_3d630 - ld [$cc42], a - ld hl, Func_4c05 - ld b, BANK(Func_4c05) - call Bankswitch -.asm_3d63b - call Func_22c3 - call DelayFrame - ld a, [$cc3e] - inc a - jr z, .asm_3d63b - ld b, $a -.asm_3d649 - call DelayFrame - call Func_22c3 - dec b - jr nz, .asm_3d649 - ld b, $a -.asm_3d654 - call DelayFrame - call Func_22ed - dec b - jr nz, .asm_3d654 - ret - -Func_3d65e: ; 3d65e (f:565e) - xor a - ld [H_WHOSETURN], a ; $fff3 - ld a, [wPlayerSelectedMove] ; $ccdc - inc a - jp z, Func_3d80a - xor a - ld [W_MOVEMISSED], a ; $d05f - ld [$cced], a - ld [$ccf4], a - ld a, $a - ld [$d05b], a - ld a, [$cd6a] - and a - jp nz, Func_3d80a - call PrintGhostText - jp z, Func_3d80a - call Func_3d854 - jr nz, .asm_3d68a - jp [hl] -.asm_3d68a - call GetCurrentMove - ld hl, W_PLAYERBATTSTATUS1 ; $d062 - bit 4, [hl] - jr nz, asm_3d6a9 - call Func_3dc88 - jp z, Func_3d80a - -Func_3d69a: ; 3d69a (f:569a) - ld a, [W_PLAYERMOVEEFFECT] ; $cfd3 - cp $27 - jp z, Func_3f132 - cp $2b - jp z, Func_3f132 - jr asm_3d6b0 - -; in-battle stuff -asm_3d6a9: ; 3d6a9 (f:56a9) - ld hl,W_PLAYERBATTSTATUS1 - res 4,[hl] - res 6,[hl] -asm_3d6b0: ; 3d6b0 (f:56b0) - call PrintMonName1Text - ld hl,DecrementPP - ld de,$CCDC ; pointer to the move just used - ld b,BANK(DecrementPP) - call Bankswitch - ld a,[W_PLAYERMOVEEFFECT] ; effect of the move just used - ld hl,EffectsArray1 - ld de,1 - call IsInArray - jp c,Func_3f132 - ld a,[W_PLAYERMOVEEFFECT] - ld hl,EffectsArray5B - ld de,1 - call IsInArray - call c,Func_3f132 -asm_3d6dc: ; 3d6dc (f:56dc) - ld a,[W_PLAYERMOVEEFFECT] - ld hl,EffectsArray2 - ld de,1 - call IsInArray - jp c,.asm_3d702 - call CriticalHitTest - call HandleCounterMove - jr z,asm_3d705 - call CalculateDamage - call MoreCalculateDamage - jp z,asm_3d74b - call AdjustDamageForMoveType - call Func_3e687 -.asm_3d702 - call MoveHitTest -asm_3d705 - ld a,[W_MOVEMISSED] - and a - jr z,asm_3d714 - ld a,[W_PLAYERMOVEEFFECT] - sub a,7 - jr z,asm_3d71e - jr asm_3d74b ; 574B -asm_3d714 - ld a,[W_PLAYERMOVEEFFECT] - and a - ld a,4 - jr z,asm_3d71e - ld a,5 -asm_3d71e - push af - ld a,[W_PLAYERBATTSTATUS2] - bit 4,a - ld hl,Func_79747 - ld b,BANK(Func_79747) - call nz,Bankswitch - pop af - ld [$CC5B],a - ld a,[W_PLAYERMOVENUM] - call PlayMoveAnimation - call Func_3eed3 - call Func_3cd60 - ld a,[W_PLAYERBATTSTATUS2] - bit 4,a - ld hl,Func_79771 - ld b,BANK(Func_79771) - call nz,Bankswitch - jr asm_3d766 -asm_3d74b - ld c,$1E - call DelayFrames - ld a,[W_PLAYERMOVEEFFECT] - cp a,$2B - jr z,.next5 - cp a,$27 ; XXX SLP | FRZ ? - jr z,.next5 - jr asm_3d766 -.next5 - xor a - ld [$CC5B],a - ld a,STATUS_AFFECTED_ANIM - call PlayMoveAnimation -asm_3d766 - ld a,[W_PLAYERMOVEEFFECT] - cp a,9 - jr nz,.next6 ; 577A - call MirrorMoveCopyMove - jp z,Func_3d80a - xor a - ld [$CCED],a - jp Func_3d69a -.next6 - cp a,$53 - jr nz,.next7 ; 5784 - call MetronomePickMove - jp Func_3d69a -.next7 - ld a,[W_PLAYERMOVEEFFECT] - ld hl,EffectsArray3 - ld de,1 - call IsInArray - jp c,Func_3f132 - ld a,[W_MOVEMISSED] - and a - jr z,.next8 ; 57A6 - call PrintMoveFailureText - ld a,[W_PLAYERMOVEEFFECT] - cp a,7 - jr z,.next9 ; 57B9 - jp Func_3d80a -.next8 - call ApplyAttackToEnemyPokemon - call Func_3dc5c - ld hl, DisplayEffectiveness ; MyFunction - ld b, BANK(DisplayEffectiveness) ; BANK(MyFunction) - call Bankswitch - ld a,1 - ld [$CCF4],a -.next9 - ld a,[W_PLAYERMOVEEFFECT] - ld hl,EffectsArray4 - ld de,1 - call IsInArray - call c,Func_3f132 - ld hl,$CFE6 - ld a,[hli] - ld b,[hl] - or b - ret z - call HandleBuildingRage - - ld hl,W_PLAYERBATTSTATUS1 - bit 2,[hl] - jr z,.next10 ; 57EF - ld a,[$D06A] - dec a - ld [$D06A],a - jp nz,asm_3d714 - - res 2,[hl] - ld hl,MultiHitText - call PrintText - xor a - ld [W_NUMHITS],a ; reset -.next10 - ld a,[W_PLAYERMOVEEFFECT] - and a - jp z,Func_3d80a - ld hl,EffectsArray5 - ld de,1 - call IsInArray - call nc,Func_3f132 - jp Func_3d80a - -MultiHitText: ; 3d805 (f:5805) - TX_FAR _MultiHitText - db "@" - -Func_3d80a: ; 3d80a (f:580a) - xor a - ld [$CD6A],a - ld b,1 - ret - -PrintGhostText: ; 3d811 (f:5811) -; print the ghost battle messages - call IsGhostBattle - ret nz - ld a,[H_WHOSETURN] - and a - jr nz,.Ghost - ld a,[W_PLAYERMONSTATUS] ; player’s turn - and a,SLP | FRZ - ret nz - ld hl,ScaredText - call PrintText - xor a - ret -.Ghost ; ghost’s turn - ld hl,GetOutText - call PrintText - xor a - ret - -ScaredText: ; 3d830 (f:5830) - TX_FAR _ScaredText - db "@" - -GetOutText: ; 3d835 (f:5835) - TX_FAR _GetOutText - db "@" - -IsGhostBattle: ; 3d83a (f:583a) - ld a,[W_ISINBATTLE] - dec a - ret nz - ld a,[W_CURMAP] - cp a,POKEMONTOWER_1 - jr c,.next - cp a,LAVENDER_HOUSE_1 - jr nc,.next - ld b,SILPH_SCOPE - call IsItemInBag ; $3493 - ret z -.next - ld a,1 - and a - ret - -Func_3d854: ; 3d854 (f:5854) - ld hl,W_PLAYERMONSTATUS - ld a,[hl] - and a,SLP - jr z,.FrozenCheck ; to 5884 - - dec a - ld [W_PLAYERMONSTATUS],a ; decrement sleep count - and a - jr z,.WakeUp ; to 5874 - - xor a - ld [$CC5B],a - ld a,SLP_ANIM - 1 - call PlayMoveAnimation - ld hl,FastAsleepText - call PrintText - jr .sleepDone -.WakeUp - ld hl,WokeUpText - call PrintText -.sleepDone - xor a - ld [$CCF1],a - ld hl,Func_3d80a - jp Func_3da37 - -.FrozenCheck - bit 5,[hl] ; frozen? - jr z,.HeldInPlaceCheck ; to 5898 - ld hl,IsFrozenText - call PrintText - xor a - ld [$CCF1],a - ld hl,Func_3d80a - jp Func_3da37 - -.HeldInPlaceCheck - ld a,[W_ENEMYBATTSTATUS1] - bit 5,a - jp z,FlinchedCheck - ld hl,CantMoveText - call PrintText - ld hl,Func_3d80a - jp Func_3da37 - -FlinchedCheck: ; 3d8ac (f:58ac) - ld hl,W_PLAYERBATTSTATUS1 - bit 3,[hl] - jp z,HyperBeamCheck - res 3,[hl] - ld hl,FlinchedText - call PrintText - ld hl,Func_3d80a - jp Func_3da37 - -HyperBeamCheck: ; 3d8c2 (f:58c2) - ld hl,W_PLAYERBATTSTATUS2 - bit 5,[hl] - jr z,.next ; 58D7 - res 5,[hl] - ld hl,MustRechargeText - call PrintText - ld hl,Func_3d80a ; $580a - jp Func_3da37 -.next - ld hl,$D06D - ld a,[hl] - and a - jr z,.next2 ; 58EE - dec a - ld [hl],a - and a,$F - jr nz,.next2 - ld [hl],a - ld [$CCEE],a - ld hl,DisabledNoMoreText - call PrintText -.next2 - ld a,[W_PLAYERBATTSTATUS1] - add a - jr nc,.next3 ; 5929 - ld hl,$D06B - dec [hl] - jr nz,.next4 ; 5907 - ld hl,W_PLAYERBATTSTATUS1 - res 7,[hl] - ld hl,ConfusedNoMoreText - call PrintText - jr .next3 -.next4 - ld hl,IsConfusedText - call PrintText - xor a - ld [$CC5B],a - ld a,CONF_ANIM - 1 - call PlayMoveAnimation - call GenRandomInBattle - cp a,$80 - jr c,.next3 - ld hl,W_PLAYERBATTSTATUS1 - ld a,[hl] - and a,$80 - ld [hl],a - call PrintHurtItselfText - jr .next5 ; 5952 -.next3 - ld a,[$CCEE] - and a - jr z,.ParalysisCheck ; 593E - ld hl,$CCDC - cp [hl] - jr nz,.ParalysisCheck - call PrintMoveIsDisabledText - ld hl,Func_3d80a ; $580a - jp Func_3da37 -.ParalysisCheck - ld hl,W_PLAYERMONSTATUS - bit 6,[hl] - jr z,.next7 ; 5975 - call GenRandomInBattle ; random number - cp a,$3F - jr nc,.next7 - ld hl,FullyParalyzedText - call PrintText -.next5 - ld hl,W_PLAYERBATTSTATUS1 - ld a,[hl] - and a,$CC - ld [hl],a - ld a,[W_PLAYERMOVEEFFECT] - cp a,$2B - jr z,.next8 ; 5966 - cp a,$27 - jr z,.next8 - jr .next9 ; 596F -.next8 - xor a - ld [$CC5B],a - ld a,STATUS_AFFECTED_ANIM - call PlayMoveAnimation -.next9 - ld hl,Func_3d80a ; $580a - jp Func_3da37 -.next7 - ld hl,W_PLAYERBATTSTATUS1 - bit 0,[hl] - jr z,.next10 ; 59D0 - xor a - ld [W_PLAYERMOVENUM],a - ld hl,$D0D7 - ld a,[hli] - ld b,a - ld c,[hl] - ld hl,$D075 - ld a,[hl] - add c - ld [hld],a - ld a,[hl] - adc b - ld [hl],a - ld hl,$D06A - dec [hl] - jr z,.next11 ; 599B - ld hl,Func_3d80a ; $580a - jp Func_3da37 -.next11 - ld hl,W_PLAYERBATTSTATUS1 - res 0,[hl] - ld hl,UnleashedEnergyText - call PrintText - ld a,1 - ld [$CFD4],a - ld hl,$D075 - ld a,[hld] - add a - ld b,a - ld [$D0D8],a - ld a,[hl] - rl a - ld [$D0D7],a - or b - jr nz,.next12 ; 59C2 - ld a,1 - ld [W_MOVEMISSED],a -.next12 - xor a - ld [hli],a - ld [hl],a - ld a,BIDE - ld [W_PLAYERMOVENUM],a - ld hl,asm_3d705 ; $5705 - jp Func_3da37 -.next10 - bit 1,[hl] - jr z,.next13 ; 59FF - ld a,THRASH - ld [W_PLAYERMOVENUM],a - ld hl,ThrashingAboutText - call PrintText - ld hl,$D06A - dec [hl] - ld hl,asm_3d6dc ; $56dc - jp nz,Func_3da37 - push hl - ld hl,W_PLAYERBATTSTATUS1 - res 1,[hl] - set 7,[hl] - call GenRandomInBattle ; random number - and a,3 - inc a - inc a - ld [$D06B],a - pop hl - jp Func_3da37 -.next13 - bit 5,[hl] - jp z,Func_3da1a - ld hl,AttackContinuesText - call PrintText - ld a,[$D06A] - dec a - ld [$D06A],a - ld hl,asm_3d714 ; $5714 - jp nz,Func_3da37 - jp Func_3da37 - -Func_3da1a: ; 3da1a (f:5a1a) - ld a, [W_PLAYERBATTSTATUS2] ; $d063 - bit 6, a - jp z, Func_3da39 - ld a, $63 - ld [$d11e], a - call GetMoveName - call CopyStringToCF4B - xor a - ld [W_PLAYERMOVEEFFECT], a ; $cfd3 - ld hl, asm_3d6b0 ; $56b0 - jp Func_3da37 - -Func_3da37: ; 3da37 (f:5a37) - xor a - ret - -Func_3da39: ; 3da39 (f:5a39) - ld a, $1 - and a - ret - -FastAsleepText: ; 3da3d (f:5a3d) - TX_FAR _FastAsleepText - db "@" - -WokeUpText: ; 3da42 (f:5a42) - TX_FAR _WokeUpText - db "@" - -IsFrozenText: ; 3da47 (f:5a47) - TX_FAR _IsFrozenText - db "@" - -FullyParalyzedText: ; 3da4c (f:5a4c) - TX_FAR _FullyParalyzedText - db "@" - -FlinchedText: ; 3da51 (f:5a51) - TX_FAR _FlinchedText - db "@" - -MustRechargeText: ; 3da56 (f:5a56) - TX_FAR _MustRechargeText - db "@" - -DisabledNoMoreText: ; 3da5b (f:5a5b) - TX_FAR _DisabledNoMoreText - db "@" - -IsConfusedText: ; 3da60 (f:5a60) - TX_FAR _IsConfusedText - db "@" - -HurtItselfText: ; 3da65 (f:5a65) - TX_FAR _HurtItselfText - db "@" - -ConfusedNoMoreText: ; 3da6a (f:5a6a) - TX_FAR _ConfusedNoMoreText - db "@" - -SavingEnergyText: ; 3da6f (f:5a6f) - TX_FAR _SavingEnergyText - db "@" - -UnleashedEnergyText: ; 3da74 (f:5a74) - TX_FAR _UnleashedEnergyText - db "@" - -ThrashingAboutText: ; 3da79 (f:5a79) - TX_FAR _ThrashingAboutText - db "@" - -AttackContinuesText: ; 3da7e (f:5a7e) - TX_FAR _AttackContinuesText - db "@" - -CantMoveText: ; 3da83 (f:5a83) - TX_FAR _CantMoveText - db "@" - -PrintMoveIsDisabledText: ; 3da88 (f:5a88) - ld hl, wPlayerSelectedMove ; $ccdc - ld de, W_PLAYERBATTSTATUS1 ; $d062 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3da97 - inc hl - ld de, W_ENEMYBATTSTATUS1 ; $d067 -.asm_3da97 - ld a, [de] - res 4, a - ld [de], a - ld a, [hl] - ld [$d11e], a - call GetMoveName - ld hl, MoveIsDisabledText - jp PrintText - -MoveIsDisabledText: ; 3daa8 (f:5aa8) - TX_FAR _MoveIsDisabledText - db "@" - -PrintHurtItselfText: ; 3daad (f:5aad) - ld hl, HurtItselfText - call PrintText - ld hl, W_ENEMYMONDEFENSE ; $cff8 - ld a, [hli] - push af - ld a, [hld] - push af - ld a, [W_PLAYERMONDEF] - ld [hli], a - ld a, [$d028] - ld [hl], a - ld hl, W_PLAYERMOVEEFFECT ; $cfd3 - push hl - ld a, [hl] - push af - xor a - ld [hli], a - ld [$d05e], a - ld a, $28 - ld [hli], a - xor a - ld [hl], a - call CalculateDamage - call MoreCalculateDamage - pop af - pop hl - ld [hl], a - ld hl, $cff9 - pop af - ld [hld], a - pop af - ld [hl], a - xor a - ld [$cc5b], a - inc a - ld [H_WHOSETURN], a ; $fff3 - call PlayMoveAnimation - call Func_3cd60 - xor a - ld [H_WHOSETURN], a ; $fff3 - jp ApplyDamageToPlayerPokemon - -PrintMonName1Text: ; 3daf5 (f:5af5) - ld hl, MonName1Text - jp PrintText - -MonName1Text: ; 3dafb (f:5afb) - TX_FAR _MonName1Text - db $08 ; asm - ld a, [H_WHOSETURN] ; $fff3 - and a - ld a, [W_PLAYERMOVENUM] ; $cfd2 - ld hl, $ccf1 - jr z, .asm_3db11 - ld a, [W_ENEMYMOVENUM] ; $cfcc - ld hl, $ccf2 -.asm_3db11 - ld [hl], a - ld [$d11e], a - call Func_3db85 - ld a, [$cced] - and a - ld hl, Used2Text - ret nz - ld a, [$d11e] - cp $3 - ld hl, Used2Text - ret c - ld hl, Used1Text - ret - -Used1Text: ; 3db2d (f:5b2d) - TX_FAR _Used1Text - db $08 ; asm - jr PrintInsteadText - -Used2Text: ; 3db34 (f:5b34) - TX_FAR _Used2Text - db $08 ; asm - -PrintInsteadText: ; 3db39 (f:5b39) - ld a, [$cced] - and a - jr z, PrintCF4BText - ld hl, InsteadText - ret - -InsteadText: ; 3db43 (f:5b43) - TX_FAR _InsteadText - db $08 ; asm - -PrintCF4BText: ; 3db48 (f:5b48) - ld hl, CF4BText - ret - -CF4BText: ; 3db4c (f:5b4c) - TX_FAR _CF4BText - db $08 ; asm - ld hl, ExclamationPointPointerTable - ld a, [$d11e] - add a - push bc - ld b, $0 - ld c, a - add hl, bc - pop bc - ld a, [hli] - ld h, [hl] - ld l, a - ret - -ExclamationPointPointerTable: ; 3db62 (f:5b62) - dw ExclamationPoint1Text - dw ExclamationPoint2Text - dw ExclamationPoint3Text - dw ExclamationPoint4Text - dw ExclamationPoint5Text - -ExclamationPoint1Text: ; 3db6c (f:5b6c) - TX_FAR _ExclamationPoint1Text - db "@" - -ExclamationPoint2Text: ; 3db71 (f:5b71) - TX_FAR _ExclamationPoint2Text - db "@" - -ExclamationPoint3Text: ; 3db76 (f:5b76) - TX_FAR _ExclamationPoint3Text - db "@" - -ExclamationPoint4Text: ; 3db7b (f:5b7b) - TX_FAR _ExclamationPoint4Text - db "@" - -ExclamationPoint5Text: ; 3db80 (f:5b80) - TX_FAR _ExclamationPoint5Text - db "@" - -Func_3db85: ; 3db85 (f:5b85) - push bc - ld a, [$d11e] ; move number - ld c, a - ld b, $0 - ld hl, UnknownMovesList_3dba3 ; $5ba3 -.asm_3db8f - ld a, [hli] - cp $ff - jr z, .asm_3db9d - cp c - jr z, .asm_3db9d - and a - jr nz, .asm_3db8f - inc b - jr .asm_3db8f -.asm_3db9d - ld a, b - ld [$d11e], a - pop bc - ret - -UnknownMovesList_3dba3: ; 3dba3 (f:5ba3) - db SWORDS_DANCE, GROWTH - db $00 - db RECOVER, BIDE, SELFDESTRUCT, AMNESIA - db $00 - db MEDITATE, AGILITY, TELEPORT, MIMIC, DOUBLE_TEAM, BARRAGE - db $00 - db POUND, SCRATCH, VICEGRIP, WING_ATTACK, FLY, BIND, SLAM, HORN_ATTACK, BODY_SLAM - db WRAP, THRASH, TAIL_WHIP, LEER, BITE, GROWL, ROAR, SING, PECK, COUNTER - db STRENGTH, ABSORB, STRING_SHOT, EARTHQUAKE, FISSURE, DIG, TOXIC, SCREECH, HARDEN - db MINIMIZE, WITHDRAW, DEFENSE_CURL, METRONOME, LICK, CLAMP, CONSTRICT, POISON_GAS - db LEECH_LIFE, BUBBLE, FLASH, SPLASH, ACID_ARMOR, FURY_SWIPES, REST, SHARPEN, SLASH, SUBSTITUTE - db $00 - db $FF ; terminator - -PrintMoveFailureText: ; 3dbe2 (f:5be2) - ld de, W_PLAYERMOVEEFFECT ; $cfd3 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3dbed - ld de, W_ENEMYMOVEEFFECT ; $cfcd -.asm_3dbed - ld hl, DoesntAffectText - ld a, [$d05b] - and $7f - jr z, .asm_3dc04 - ld hl, MissedText - ld a, [$d05e] - cp $ff - jr nz, .asm_3dc04 - ld hl, UnaffectedText -.asm_3dc04 - push de - call PrintText - xor a - ld [$d05e], a - pop de - ld a, [de] - cp $2d - ret nz - ld hl, W_DAMAGE ; $d0d7 - ld a, [hli] - ld b, [hl] - srl a - rr b - srl a - rr b - srl a - rr b - ld [hl], b - dec hl - ld [hli], a - or b - jr nz, .asm_3dc2a - inc a - ld [hl], a -.asm_3dc2a - ld hl, CrashedText - call PrintText - ld b, $4 - ld a, $24 - call Predef ; indirect jump to Func_48125 (48125 (12:4125)) - ld a, [H_WHOSETURN] ; $fff3 - and a - jr nz, .asm_3dc3f - jp ApplyDamageToPlayerPokemon -.asm_3dc3f - jp ApplyDamageToEnemyPokemon - -MissedText: ; 3dc42 (f:5c42) - TX_FAR _MissedText - db "@" - -CrashedText: ; 3dc47 (f:5c47) - TX_FAR _CrashedText - db "@" - -UnaffectedText: ; 3dc4c (f:5c4c) - TX_FAR _UnaffectedText - db "@" - -PrintDoesntAffectText: ; 3dc51 (f:5c51) - ld hl, DoesntAffectText - jp PrintText - -DoesntAffectText: ; 3dc57 (f:5c57) - TX_FAR _DoesntAffectText - db "@" - -Func_3dc5c: ; 3dc5c (f:5c5c) - ld a, [$d05e] - and a - jr z, .asm_3dc75 - dec a - add a - ld hl, CriticalOHKOTextPointers ; $5c7a - ld b, $0 - ld c, a - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - call PrintText - xor a - ld [$d05e], a -.asm_3dc75 - ld c, $14 - jp DelayFrames - -CriticalOHKOTextPointers: ; 3dc7a (f:5c7a) - dw CriticalHitText - dw OHKOText - -CriticalHitText: ; 3dc7e (f:5c7e) - TX_FAR _CriticalHitText - db "@" - -OHKOText: ; 3dc83 (f:5c83) - TX_FAR _OHKOText - db "@" - -Func_3dc88: ; 3dc88 (f:5c88) - xor a - ld [$cced], a - ld a, [W_ISLINKBATTLE] ; $d12b - cp $4 - jr nz, .asm_3dc97 - ld a, $1 - and a - ret -.asm_3dc97 - ld hl, W_PARTYMON1_OTID ; $d177 - ld bc, $2c - ld a, [wPlayerMonNumber] ; $cc2f - call AddNTimes - ld a, [wPlayerID] ; $d359 - cp [hl] - jr nz, .asm_3dcb1 - inc hl - ld a, [wPlayerID + 1] ; $d35a - cp [hl] - jp z, Func_3ddb0 -.asm_3dcb1 -; what level might disobey? - ld hl, W_OBTAINEDBADGES - bit 7, [hl] - ld a, 101 - jr nz, .asm_3dcce - bit 5, [hl] - ld a, 70 - jr nz, .asm_3dcce - bit 3, [hl] - ld a, 50 - jr nz, .asm_3dcce - bit 1, [hl] - ld a, 30 - jr nz, .asm_3dcce - ld a, 10 -.asm_3dcce - ld b, a - ld c, a - ld a, [W_PLAYERMONLEVEL] ; $d022 - ld d, a - add b - ld b, a - jr nc, .asm_3dcda - ld b, $ff -.asm_3dcda - ld a, c - cp d - jp nc, Func_3ddb0 -.asm_3dcdf - call GenRandomInBattle - swap a - cp b - jr nc, .asm_3dcdf - cp c - jp c, Func_3ddb0 -.asm_3dceb - call GenRandomInBattle - cp b - jr nc, .asm_3dceb - cp c - jr c, .asm_3dd3f - ld a, d - sub c - ld b, a - call GenRandomInBattle - swap a - sub b - jr c, .asm_3dd0e - cp b - jr nc, .asm_3dd20 - ld hl, WontObeyText - call PrintText - call PrintHurtItselfText - jp Func_3ddb4 -.asm_3dd0e - call GenRandomInBattle - add a - swap a - and $7 - jr z, .asm_3dd0e - ld [W_PLAYERMONSTATUS], a ; $d018 - ld hl, BeganToNapText - jr .asm_3dd3a -.asm_3dd20 - call GenRandomInBattle - and $3 - ld hl, LoafingAroundText - and a - jr z, .asm_3dd3a - ld hl, WontObeyText - dec a - jr z, .asm_3dd3a - ld hl, TurnedAwayText - dec a - jr z, .asm_3dd3a - ld hl, IgnoredOrdersText -.asm_3dd3a - call PrintText - jr Func_3ddb4 -.asm_3dd3f - ld a, [$d01d] - and a - jr z, .asm_3dd20 - ld a, [$ccee] - and a - jr nz, .asm_3dd20 - ld a, [wPlayerSelectedMove] ; $ccdc - cp $a5 - jr z, .asm_3dd20 - ld hl, W_PLAYERMONPP ; $d02d - push hl - ld a, [hli] - and $3f - ld b, a - ld a, [hli] - and $3f - add b - ld b, a - ld a, [hli] - and $3f - add b - ld b, a - ld a, [hl] - and $3f - add b - pop hl - push af - ld a, [wCurrentMenuItem] ; $cc26 - ld c, a - ld b, $0 - add hl, bc - ld a, [hl] - and $3f - ld b, a - pop af - cp b - jr z, .asm_3dd20 - ld a, $1 - ld [$cced], a - ld a, [wMaxMenuItem] ; $cc28 - ld b, a - ld a, [wCurrentMenuItem] ; $cc26 - ld c, a -.asm_3dd86 - call GenRandomInBattle - and $3 - cp b - jr nc, .asm_3dd86 - cp c - jr z, .asm_3dd86 - ld [wCurrentMenuItem], a ; $cc26 - ld hl, W_PLAYERMONPP ; $d02d - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - and a - jr z, .asm_3dd86 - ld a, [wCurrentMenuItem] ; $cc26 - ld c, a - ld b, $0 - ld hl, W_PLAYERMONMOVES - add hl, bc - ld a, [hl] - ld [wPlayerSelectedMove], a ; $ccdc - call GetCurrentMove - -Func_3ddb0: ; 3ddb0 (f:5db0) - ld a, $1 - and a - ret - -Func_3ddb4: ; 3ddb4 (f:5db4) - xor a - ret - -LoafingAroundText: ; 3ddb6 (f:5db6) - TX_FAR _LoafingAroundText - db "@" - -BeganToNapText: ; 3ddbb (f:5dbb) - TX_FAR _BeganToNapText - db "@" - -WontObeyText: ; 3ddc0 (f:5dc0) - TX_FAR _WontObeyText - db "@" - -TurnedAwayText: ; 3ddc5 (f:5dc5) - TX_FAR _TurnedAwayText - db "@" - -IgnoredOrdersText: ; 3ddca (f:5dca) - TX_FAR _IgnoredOrdersText - db "@" - -CalculateDamage: ; 3ddcf (f:5dcf) - xor a - ld hl, W_DAMAGE ;damage to eventually inflict, intitialise to zero - ldi [hl], a - ld [hl], a - ld hl, W_PLAYERMOVEPOWER - ld a, [hli] ;*read attack base power - and a - ld d, a ;*D = attack base, used later - ret z ;return if attack is zero - ld a, [hl] ;*test attacking type - cp a, $14 ;types >= $14 are all special - jr nc, .specialAttack -.physicalAttack - ld hl, W_ENEMYMONDEFENSE ;opponent defense - ld a, [hli] ;*BC = opponent defense used later - ld b, a - ld c, [hl] - ld a, [W_ENEMYBATTSTATUS3] ;test for reflect - bit 2, a - jr z, .next -.doubleDefense - sla c ;x2 defense if bit2 of D069 is set - rl b -.next - ld hl, W_PLAYERMONATK ;attack pointer - ld a, [$d05e] - and a - jr z, .next3 - ld c, 3 - call Func_3df1c - ld a, [$ff97] - ld b, a - ld a, [$ff98] - ld c, a - push bc - ld hl, $d18f - ld a, [wPlayerMonNumber] - ld bc, $002c - call AddNTimes - pop bc - jr .next3 -.specialAttack - ld hl, W_ENEMYMONSPECIAL ;opponent special - ld a, [hli] ;*BC = opponent special defense used later - ld b, a - ld c, [hl] - ld a, [W_ENEMYBATTSTATUS3] ;test for lightscreen - bit 1, a - jr z, .next2 -.doubleSpecialDefense - sla c ;x2 special defense if bit1 of D069 set - rl b -.next2 - ld hl, W_PLAYERMONSPECIAL - ld a, [$d05e] ;XXX - and a - jr z, .next3 ;skip portion of code that pulls up inactive pokemon -.loadOtherPoke - ld c, 5 - call Func_3df1c - ld a, [$ff97] - ld b, a - ld a, [$ff98] - ld c, a - push bc - ld hl, $d195 - ld a, [wPlayerMonNumber] - ld bc, $002c - call AddNTimes - pop bc -.next3 - ld a, [hli] ;HL: when this was taken - ld l, [hl] - ld h, a ;*HL = attacker attack - or b ;is either attack or defense high byte nonzero? - jr z, .next4 - srl b ;[defense] BC /= 4 [this is just so it fits into a single byte, 10bits max] - rr c - srl b - rr c - srl h ;[attack] HL /= 4 [to apply equal scaling] - rr l - srl h - rr l - ld a, l - or h - jr nz, .next4 ;is HL result zero? - inc l ;minimum HL = 1 -.next4 - ld b, l ;*B = attack [possibly scaled] [C contains defense] - ld a, [$d022] ;*E = level - ld e, a - ld a, [$d05e] ;critical hit? - and a - jr z, .next5 - sla e ;double level if it was a critical hit -.next5 - ld a, 1 ;return Z = 0 - and a - ret - -Func_3de75: ; 3de75 (f:5e75) - ld hl, W_DAMAGE ; $d0d7 - xor a - ld [hli], a - ld [hl], a - ld hl, W_ENEMYMOVEPOWER ; $cfce - ld a, [hli] - ld d, a - and a - ret z - ld a, [hl] - cp $14 - jr nc, .asm_3debc - ld hl, W_PLAYERMONDEF - ld a, [hli] - ld b, a - ld c, [hl] - ld a, [W_PLAYERBATTSTATUS3] ; $d064 - bit 2, a - jr z, .asm_3de98 - sla c - rl b -.asm_3de98 - ld hl, W_ENEMYMONATTACK - ld a, [$d05e] - and a - jr z, .asm_3deef - ld hl, W_PARTYMON1_DEFENSE ; $d191 - ld a, [wPlayerMonNumber] ; $cc2f - ld bc, $2c - call AddNTimes - ld a, [hli] - ld b, a - ld c, [hl] - push bc - ld c, $2 - call Func_3df1c - ld hl, $ff97 - pop bc - jr .asm_3deef -.asm_3debc - ld hl, W_PLAYERMONSPECIAL - ld a, [hli] - ld b, a - ld c, [hl] - ld a, [W_PLAYERBATTSTATUS3] ; $d064 - bit 1, a - jr z, .asm_3decd - sla c - rl b -.asm_3decd - ld hl, W_ENEMYMONSPECIAL ; $cffc - ld a, [$d05e] - and a - jr z, .asm_3deef - ld hl, W_PARTYMON1_SPECIAL ; $d195 - ld a, [wPlayerMonNumber] ; $cc2f - ld bc, $2c - call AddNTimes - ld a, [hli] - ld b, a - ld c, [hl] - push bc - ld c, $5 - call Func_3df1c - ld hl, $ff97 - pop bc -.asm_3deef - ld a, [hli] - ld l, [hl] - ld h, a - or b - jr z, .asm_3df0a - srl b - rr c - srl b - rr c - srl h - rr l - srl h - rr l - ld a, l - or h - jr nz, .asm_3df0a - inc l -.asm_3df0a - ld b, l - ld a, [W_ENEMYMONLEVEL] ; $cff3 - ld e, a - ld a, [$d05e] - and a - jr z, .asm_3df17 - sla e -.asm_3df17 - ld a, $1 - and a - and a - ret - -Func_3df1c: ; 3df1c (f:5f1c) - push de - push bc - ld a, [W_ISLINKBATTLE] ; $d12b - cp $4 - jr nz, .asm_3df40 - ld hl, $d8c6 - dec c - sla c - ld b, $0 - add hl, bc - ld a, [W_ENEMYMONNUMBER] ; $cfe8 - ld bc, $2c - call AddNTimes - ld a, [hli] - ld [$ff97], a - ld a, [hl] - ld [$ff98], a - pop bc - pop de - ret -.asm_3df40 - ld a, [W_ENEMYMONLEVEL] ; $cff3 - ld [W_CURENEMYLVL], a ; $d127 - ld a, [$cfe5] - ld [$d0b5], a - call GetMonHeader - ld hl, $cff1 - ld de, $cfaf - ld a, [hli] - ld [de], a - inc de - ld a, [hl] - ld [de], a - pop bc - ld b, $0 - ld hl, $cfa4 - call CalcStat - pop de - ret - -MoreCalculateDamage: ; 3df65 (f:5f65) -; input: -; b: attack -; c: opponent defense -; d: base power -; e: level - - ld a, [$fff3] ; whose turn? - and a - ld a, [W_PLAYERMOVEEFFECT] - jr z, .effect - ld a, [$cfcd] -.effect - -; EXPLODE_EFFECT halves defense. - cp a, EXPLODE_EFFECT - jr nz, .ok - srl c - jr nz, .ok - inc c ; ...with a minimum value of 1 (used as a divisor later on) -.ok - -; Multi-hit attacks may or may not have 0 bp. - cp a, TWO_TO_FIVE_ATTACKS_EFFECT - jr z, .skipbp - cp a, $1e - jr z, .skipbp - -; Calculate OHKO damage based on remaining HP. - cp a, OHKO_EFFECT - jp z, Func_3e016 - -; Don't calculate damage for moves that don't do any. - ld a, d ; base power - and a - ret z -.skipbp - - xor a - ld hl, H_DIVIDEND - ldi [hl], a - ldi [hl], a - ld [hl], a - -; Multiply level by 2 - ld a, e ; level - add a - jr nc, .nc - push af - ld a, 1 - ld [hl], a - pop af -.nc - inc hl - ldi [hl], a - -; Divide by 5 - ld a, 5 - ldd [hl], a - push bc - ld b, 4 - call Divide - pop bc - -; Add 2 - inc [hl] - inc [hl] - - inc hl ; multiplier - -; Multiply by attack base power - ld [hl], d - call Multiply - -; Multiply by attack stat - ld [hl], b - call Multiply - -; Divide by defender's defense stat - ld [hl], c - ld b, 4 - call Divide - -; Divide by 50 - ld [hl], 50 - ld b, 4 - call Divide - - ld hl, W_DAMAGE - ld b, [hl] - ld a, [H_QUOTIENT + 3] - add b - ld [H_QUOTIENT + 3], a - jr nc, .asm_3dfd0 - - ld a, [H_QUOTIENT + 2] - inc a - ld [H_QUOTIENT + 2], a - and a - jr z, .asm_3e004 - -.asm_3dfd0 - ld a, [H_QUOTIENT] - ld b, a - ld a, [H_QUOTIENT + 1] - or a - jr nz, .asm_3e004 - - ld a, [H_QUOTIENT + 2] - cp 998 / $100 - jr c, .asm_3dfe8 - cp 998 / $100 + 1 - jr nc, .asm_3e004 - ld a, [H_QUOTIENT + 3] - cp 998 % $100 - jr nc, .asm_3e004 - -.asm_3dfe8 - inc hl - ld a, [H_QUOTIENT + 3] - ld b, [hl] - add b - ld [hld], a - - ld a, [H_QUOTIENT + 2] - ld b, [hl] - adc b - ld [hl], a - jr c, .asm_3e004 - - ld a, [hl] - cp 998 / $100 - jr c, .asm_3e00a - cp 998 / $100 + 1 - jr nc, .asm_3e004 - inc hl - ld a, [hld] - cp 998 % $100 - jr c, .asm_3e00a - -.asm_3e004 - ld a, 997 / $100 - ld [hli], a - ld a, 997 % $100 - ld [hld], a - -.asm_3e00a - inc hl - ld a, [hl] - add 2 - ld [hld], a - jr nc, .done - inc [hl] -.done - - ld a, 1 - and a - ret - -Func_3e016: ; 3e016 (f:6016) - call Func_3f132 - ld a, [W_MOVEMISSED] ; $d05f - dec a - ret - - -UnusedHighCriticalMoves: ; 3e01e (f:601e) - db KARATE_CHOP - db RAZOR_LEAF - db CRABHAMMER - db SLASH - db $FF -; 3e023 - -; determines if attack is a critical hit -; azure heights claims "the fastest pokémon (who are,not coincidentally, -; among the most popular) tend to CH about 20 to 25% of the time." -CriticalHitTest: ; 3e023 (f:6023) - xor a - ld [$d05e], a - ld a, [H_WHOSETURN] ; $fff3 - and a - ld a, [$cfe5] - jr nz, .asm_3e032 - ld a, [W_PLAYERMONID] -.asm_3e032 - ld [$d0b5], a - call GetMonHeader - ld a, [W_MONHBASESPEED] - ld b, a - srl b ; (effective (base speed/2)) - ld a, [H_WHOSETURN] ; $fff3 - and a - ld hl, W_PLAYERMOVEPOWER ; $cfd4 - ld de, W_PLAYERBATTSTATUS2 ; $d063 - jr z, .calcCriticalHitProbability - ld hl, W_ENEMYMOVEPOWER ; $cfce - ld de, W_ENEMYBATTSTATUS2 ; $d068 -.calcCriticalHitProbability ; 0x3e04f - ld a, [hld] ; read base power from RAM - and a - ret z ; do nothing if zero - dec hl - ld c, [hl] ; read move id - ld a, [de] - bit 2, a ; test for focus energy - jr nz, .focusEnergyUsed ; bug: using focus energy causes a shift to the right instead of left, - ; resulting in 1/4 the usual crit chance - sla b ; (effective (base speed/2)*2) - jr nc, .noFocusEnergyUsed - ld b, $ff ; cap at 255/256 - jr .noFocusEnergyUsed -.focusEnergyUsed - srl b -.noFocusEnergyUsed - ld hl, HighCriticalMoves ; table of high critical hit moves -.Loop - ld a, [hli] ; read move from move table - cp c ; does it match the move about to be used? - jr z, .HighCritical ; if so, the move about to be used is a high critical hit ratio move - inc a ; move on to the next move, FF terminates loop - jr nz, .Loop ; check the next move in HighCriticalMoves - srl b ; /2 for regular move (effective (base speed / 2)) - jr .SkipHighCritical ; continue as a normal move -.HighCritical - sla b ; *2 for high critical hit moves - jr nc, .noCarry - ld b, $ff ; cap at 255/256 -.noCarry - sla b ; *4 for high critical move (effective (base speed/2)*8)) - jr nc, .SkipHighCritical - ld b, $ff -.SkipHighCritical - call GenRandomInBattle ; generates a random value, in "a" - rlc a - rlc a - rlc a - cp b ; check a against calculated crit rate - ret nc ; no critical hit if no borrow - ld a, $1 - ld [$d05e], a ; set critical hit flag - ret - -; high critical hit moves -HighCriticalMoves: ; 3e08e (f:608e) - db KARATE_CHOP - db RAZOR_LEAF - db CRABHAMMER - db SLASH - db $FF - - -; function to determine if Counter hits and if so, how much damage it does -HandleCounterMove: ; 3e093 (f:6093) - ld a,[H_WHOSETURN] ; whose turn - and a -; player's turn - ld hl,wEnemySelectedMove - ld de,W_ENEMYMOVEPOWER - ld a,[wPlayerSelectedMove] - jr z,.next -; enemy's turn - ld hl,wPlayerSelectedMove - ld de,W_PLAYERMOVEPOWER - ld a,[wEnemySelectedMove] -.next - cp a,COUNTER - ret nz ; return if not using Counter - ld a,$01 - ld [W_MOVEMISSED],a ; initialize the move missed variable to true (it is set to false below if the move hits) - ld a,[hl] - cp a,COUNTER - ret z ; if the target also used Counter, miss - ld a,[de] - and a - ret z ; if the move the target used has 0 power, miss -; check if the move the target used was Normal or Fighting type - inc de - ld a,[de] - and a ; normal type - jr z,.counterableType - cp a,FIGHTING - jr z,.counterableType -; if the move wasn't Normal or Fighting type, miss - xor a - ret -.counterableType - ld hl,W_DAMAGE - ld a,[hli] - or [hl] - ret z ; Counter misses if the target did no damage to the Counter user -; double the damage that the target did to the Counter user - ld a,[hl] - add a - ldd [hl],a - ld a,[hl] - adc a - ld [hl],a - jr nc,.noCarry -; damage is capped at 0xFFFF - ld a,$ff - ld [hli],a - ld [hl],a -.noCarry - xor a - ld [W_MOVEMISSED],a - call MoveHitTest ; do the normal move hit test in addition to Counter's special rules - xor a - ret - -ApplyAttackToEnemyPokemon: ; 3e0df (f:60df) - ld a,[W_PLAYERMOVEEFFECT] - cp a,OHKO_EFFECT - jr z,ApplyDamageToEnemyPokemon - cp a,SUPER_FANG_EFFECT - jr z,.superFangEffect - cp a,SPECIAL_DAMAGE_EFFECT - jr z,.specialDamage - ld a,[W_PLAYERMOVEPOWER] - and a - jp z,ApplyAttackToEnemyPokemonDone - jr ApplyDamageToEnemyPokemon -.superFangEffect -; set the damage to half the target's HP - ld hl,W_ENEMYMONCURHP - ld de,W_DAMAGE - ld a,[hli] - srl a - ld [de],a - inc de - ld b,a - ld a,[hl] - rr a - ld [de],a - or b - jr nz,ApplyDamageToEnemyPokemon -; make sure Super Fang's damage is always at least 1 - ld a,$01 - ld [de],a - jr ApplyDamageToEnemyPokemon -.specialDamage - ld hl,W_PLAYERMONLEVEL - ld a,[hl] - ld b,a - ld a,[W_PLAYERMOVENUM] - cp a,SEISMIC_TOSS - jr z,.storeDamage - cp a,NIGHT_SHADE - jr z,.storeDamage - ld b,SONICBOOM_DAMAGE - cp a,SONICBOOM - jr z,.storeDamage - ld b,DRAGON_RAGE_DAMAGE - cp a,DRAGON_RAGE - jr z,.storeDamage -; Psywave - ld a,[hl] - ld b,a - srl a - add b - ld b,a ; b = level * 1.5 -; loop until a random number in the range [1, b) is found -.loop - call GenRandomInBattle ; random number - and a - jr z,.loop - cp b - jr nc,.loop - ld b,a -.storeDamage - ld hl,W_DAMAGE - xor a - ld [hli],a - ld a,b - ld [hl],a - -ApplyDamageToEnemyPokemon: ; 3e142 (f:6142) - ld hl,W_DAMAGE - ld a,[hli] - ld b,a - ld a,[hl] - or b - jr z,ApplyAttackToEnemyPokemonDone ; we're done if damage is 0 - ld a,[W_ENEMYBATTSTATUS2] - bit 4,a ; does the enemy have a substitute? - jp nz,AttackSubstitute -; subtract the damage from the pokemon's current HP -; also, save the current HP at wHPBarOldHP - ld a,[hld] - ld b,a - ld a,[W_ENEMYMONCURHP + 1] - ld [wHPBarOldHP],a - sub b - ld [W_ENEMYMONCURHP + 1],a - ld a,[hl] - ld b,a - ld a,[W_ENEMYMONCURHP] - ld [wHPBarOldHP+1],a - sbc b - ld [W_ENEMYMONCURHP],a - jr nc,.animateHpBar -; if more damage was done than the current HP, zero the HP and set the damage -; equal to how much HP the pokemon had before the attack - ld a,[wHPBarOldHP+1] - ld [hli],a - ld a,[wHPBarOldHP] - ld [hl],a - xor a - ld hl,W_ENEMYMONCURHP - ld [hli],a - ld [hl],a -.animateHpBar - ld hl,W_ENEMYMONMAXHP - ld a,[hli] - ld [wHPBarMaxHP+1],a - ld a,[hl] - ld [wHPBarMaxHP],a - ld hl,W_ENEMYMONCURHP - ld a,[hli] - ld [wHPBarNewHP+1],a - ld a,[hl] - ld [wHPBarNewHP],a - FuncCoord 2, 2 ; $c3ca - ld hl,Coord - xor a - ld [$cf94],a - ld a,$48 - call Predef ; animate the HP bar shortening -ApplyAttackToEnemyPokemonDone: ; 3e19d (f:619d) - jp Func_3cd5a ; redraw pokemon names and HP bars - -ApplyAttackToPlayerPokemon: ; 3e1a0 (f:61a0) - ld a,[W_ENEMYMOVEEFFECT] - cp a,OHKO_EFFECT - jr z,ApplyDamageToPlayerPokemon - cp a,SUPER_FANG_EFFECT - jr z,.superFangEffect - cp a,SPECIAL_DAMAGE_EFFECT - jr z,.specialDamage - ld a,[W_ENEMYMOVEPOWER] - and a - jp z,ApplyAttackToPlayerPokemonDone - jr ApplyDamageToPlayerPokemon -.superFangEffect -; set the damage to half the target's HP - ld hl,W_PLAYERMONCURHP - ld de,W_DAMAGE - ld a,[hli] - srl a - ld [de],a - inc de - ld b,a - ld a,[hl] - rr a - ld [de],a - or b - jr nz,ApplyDamageToPlayerPokemon -; make sure Super Fang's damage is always at least 1 - ld a,$01 - ld [de],a - jr ApplyDamageToPlayerPokemon -.specialDamage - ld hl,W_ENEMYMONLEVEL - ld a,[hl] - ld b,a - ld a,[W_ENEMYMOVENUM] - cp a,SEISMIC_TOSS - jr z,.storeDamage - cp a,NIGHT_SHADE - jr z,.storeDamage - ld b,SONICBOOM_DAMAGE - cp a,SONICBOOM - jr z,.storeDamage - ld b,DRAGON_RAGE_DAMAGE - cp a,DRAGON_RAGE - jr z,.storeDamage -; Psywave - ld a,[hl] - ld b,a - srl a - add b - ld b,a ; b = attacker's level * 1.5 -; loop until a random number in the range [0, b) is found -; this differs from the range when the player attacks, which is [1, b) -; it's possible for the enemy to do 0 damage with Psywave, but the player always does at least 1 damage -.loop - call GenRandomInBattle ; random number - cp b - jr nc,.loop - ld b,a -.storeDamage - ld hl,W_DAMAGE - xor a - ld [hli],a - ld a,b - ld [hl],a - -ApplyDamageToPlayerPokemon: ; 3e200 (f:6200) - ld hl,W_DAMAGE - ld a,[hli] - ld b,a - ld a,[hl] - or b - jr z,ApplyAttackToPlayerPokemonDone ; we're done if damage is 0 - ld a,[W_PLAYERBATTSTATUS2] - bit 4,a ; does the player have a substitute? - jp nz,AttackSubstitute -; subtract the damage from the pokemon's current HP -; also, save the current HP at wHPBarOldHP and the new HP at wHPBarNewHP - ld a,[hld] - ld b,a - ld a,[W_PLAYERMONCURHP + 1] - ld [wHPBarOldHP],a - sub b - ld [W_PLAYERMONCURHP + 1],a - ld [wHPBarNewHP],a - ld b,[hl] - ld a,[W_PLAYERMONCURHP] - ld [wHPBarOldHP+1],a - sbc b - ld [W_PLAYERMONCURHP],a - ld [wHPBarNewHP+1],a - jr nc,.animateHpBar -; if more damage was done than the current HP, zero the HP and set the damage -; equal to how much HP the pokemon had before the attack - ld a,[wHPBarOldHP+1] - ld [hli],a - ld a,[wHPBarOldHP] - ld [hl],a - xor a - ld hl,W_PLAYERMONCURHP - ld [hli],a - ld [hl],a - ld hl,wHPBarNewHP - ld [hli],a - ld [hl],a -.animateHpBar - ld hl,W_PLAYERMONMAXHP - ld a,[hli] - ld [wHPBarMaxHP+1],a - ld a,[hl] - ld [wHPBarMaxHP],a - FuncCoord 10, 9 ; $c45e - ld hl,Coord - ld a,$01 - ld [$cf94],a - ld a,$48 - call Predef ; animate the HP bar shortening -ApplyAttackToPlayerPokemonDone - jp Func_3cd5a ; redraw pokemon names and HP bars - -AttackSubstitute: ; 3e25e (f:625e) - ld hl,SubstituteTookDamageText - call PrintText -; values for player turn - ld de,wEnemySubstituteHP - ld bc,W_ENEMYBATTSTATUS2 - ld a,[H_WHOSETURN] - and a - jr z,.applyDamageToSubstitute -; values for enemy turn - ld de,wPlayerSubstituteHP - ld bc,W_PLAYERBATTSTATUS2 -.applyDamageToSubstitute - ld hl,W_DAMAGE - ld a,[hli] - and a - jr nz,.substituteBroke ; damage > 0xFF always breaks substitutes -; subtract damage from HP of substitute - ld a,[de] - sub [hl] - ld [de],a - ret nc -.substituteBroke - ld h,b - ld l,c - res 4,[hl] ; unset the substitute bit - ld hl,SubstituteBrokeText - call PrintText -; flip whose turn it is for the next function call - ld a,[H_WHOSETURN] - xor a,$01 - ld [H_WHOSETURN],a - ld hl, Func_79747 - ld b, BANK(Func_79747) ; animate the substitute breaking - call Bankswitch ; substitute -; flip the turn back to the way it was - ld a,[H_WHOSETURN] - xor a,$01 - ld [H_WHOSETURN],a - ld hl,W_PLAYERMOVEEFFECT ; value for player's turn - and a - jr z,.nullifyEffect - ld hl,W_ENEMYMOVEEFFECT ; value for enemy's turn -.nullifyEffect - xor a - ld [hl],a ; zero the effect of the attacker's move - jp Func_3cd5a ; redraw pokemon names and HP bars - -SubstituteTookDamageText: ; 3e2ac (f:62ac) - TX_FAR _SubstituteTookDamageText - db "@" - -SubstituteBrokeText: ; 3e2b1 (f:62b1) - TX_FAR _SubstituteBrokeText - db "@" - -; this function raises the attack modifier of a pokemon using Rage when that pokemon is attacked -HandleBuildingRage: ; 3e2b6 (f:62b6) -; values for the player turn - ld hl,W_ENEMYBATTSTATUS2 - ld de,wEnemyMonStatMods - ld bc,W_ENEMYMOVENUM - ld a,[H_WHOSETURN] - and a - jr z,.next -; values for the enemy turn - ld hl,W_PLAYERBATTSTATUS2 - ld de,wPlayerMonStatMods - ld bc,W_PLAYERMOVENUM -.next - bit 6,[hl] ; is the pokemon being attacked under the effect of Rage? - ret z ; return if not - ld a,[de] - cp a,$0d ; maximum stat modifier value - ret z ; return if attack modifier is already maxed - ld a,[H_WHOSETURN] - xor a,$01 ; flip turn for the stat modifier raising function - ld [H_WHOSETURN],a -; change the target pokemon's move to $00 and the effect to the one -; that causes the attack modifier to go up one stage - ld h,b - ld l,c - ld [hl],$00 ; null move number - inc hl - ld [hl],ATTACK_UP1_EFFECT - push hl - ld hl,BuildingRageText - call PrintText - call Func_3f428 ; stat modifier raising function - pop hl - xor a - ldd [hl],a ; null move effect - ld a,RAGE - ld [hl],a ; restore the target pokemon's move number to Rage - ld a,[H_WHOSETURN] - xor a,$01 ; flip turn back to the way it was - ld [H_WHOSETURN],a - ret - -BuildingRageText: ; 3e2f8 (f:62f8) - TX_FAR _BuildingRageText - db "@" - -; copy last move for Mirror Move -; sets zero flag on failure and unsets zero flag on success -MirrorMoveCopyMove: ; 3e2fd (f:62fd) - ld a,[H_WHOSETURN] - and a -; values for player turn - ld a,[$ccf2] - ld hl,wPlayerSelectedMove - ld de,W_PLAYERMOVENUM - jr z,.next -; values for enemy turn - ld a,[$ccf1] - ld de,W_ENEMYMOVENUM - ld hl,wEnemySelectedMove -.next - ld [hl],a - cp a,MIRROR_MOVE ; did the target pokemon also use Mirror Move? - jr z,.mirrorMoveFailed - and a ; null move? - jr nz,ReloadMoveData -.mirrorMoveFailed -; Mirror Move fails on itself and null moves - ld hl,MirrorMoveFailedText - call PrintText - xor a - ret - -MirrorMoveFailedText: ; 3e324 (f:6324) - TX_FAR _MirrorMoveFailedText - db "@" - -; function used to reload move data for moves like Mirror Move and Metronome -ReloadMoveData: ; 3e329 (f:6329) - ld [$d11e],a - dec a - ld hl,Moves - ld bc,$0006 - call AddNTimes - ld a,BANK(Moves) - call FarCopyData ; copy the move's stats - call IncrementMovePP -; the follow two function calls are used to reload the move name - call GetMoveName - call CopyStringToCF4B - ld a,$01 - and a - ret - -; function that picks a random move for metronome -MetronomePickMove: ; 3e348 (f:6348) - xor a - ld [$cc5b],a - ld a,METRONOME - call PlayMoveAnimation ; play Metronome's animation -; values for player turn - ld de,W_PLAYERMOVENUM - ld hl,wPlayerSelectedMove - ld a,[H_WHOSETURN] - and a - jr z,.pickMoveLoop -; values for enemy turn - ld de,W_ENEMYMOVENUM - ld hl,wEnemySelectedMove -; loop to pick a random number in the range [1, $a5) to be the move used by Metronome -.pickMoveLoop - call GenRandomInBattle ; random number - and a - jr z,.pickMoveLoop - cp a,STRUGGLE ; max normal move number + 1 (this is Struggle's move number) - jr nc,.pickMoveLoop - cp a,METRONOME - jr z,.pickMoveLoop - ld [hl],a - jr ReloadMoveData - -; this function increments the current move's PP -; it's used to prevent moves that run another move within the same turn -; (like Mirror Move and Metronome) from losing 2 PP -IncrementMovePP: ; 3e373 (f:6373) - ld a,[H_WHOSETURN] - and a -; values for player turn - ld hl,W_PLAYERMONPP - ld de,W_PARTYMON1_MOVE1PP - ld a,[wPlayerMoveListIndex] - jr z,.next -; values for enemy turn - ld hl,W_ENEMYMONPP - ld de,$d8c1 ; enemy party pokemon 1 PP - ld a,[wEnemyMoveListIndex] -.next - ld b,$00 - ld c,a - add hl,bc - inc [hl] ; increment PP in the currently battling pokemon memory location - ld h,d - ld l,e - add hl,bc - ld a,[H_WHOSETURN] - and a - ld a,[wPlayerMonNumber] ; value for player turn - jr z,.next2 - ld a,[W_ENEMYMONNUMBER] ; value for enemy turn -.next2 - ld bc,$002c - call AddNTimes - inc [hl] ; increment PP in the party memory location - ret - -; function to adjust the base damage of an attack to account for type effectiveness -AdjustDamageForMoveType: ; 3e3a5 (f:63a5) -; values for player turn - ld hl,W_PLAYERMONTYPES - ld a,[hli] - ld b,a ; b = type 1 of attacker - ld c,[hl] ; c = type 2 of attacker - ld hl,W_ENEMYMONTYPES - ld a,[hli] - ld d,a ; d = type 1 of defender - ld e,[hl] ; e = type 2 of defender - ld a,[W_PLAYERMOVETYPE] - ld [$d11e],a - ld a,[H_WHOSETURN] - and a - jr z,.next -; values for enemy turn - ld hl,W_ENEMYMONTYPES - ld a,[hli] - ld b,a ; b = type 1 of attacker - ld c,[hl] ; c = type 2 of attacker - ld hl,W_PLAYERMONTYPES - ld a,[hli] - ld d,a ; d = type 1 of defender - ld e,[hl] ; e = type 2 of defender - ld a,[W_ENEMYMOVETYPE] - ld [$d11e],a -.next - ld a,[$d11e] ; move type - cp b ; does the move type match type 1 of the attacker? - jr z,.sameTypeAttackBonus - cp c ; does the move type match type 2 of the attacker? - jr z,.sameTypeAttackBonus - jr .skipSameTypeAttackBonus -.sameTypeAttackBonus -; if the move type matches one of the attacker's types - ld hl,W_DAMAGE + 1 - ld a,[hld] - ld h,[hl] - ld l,a ; hl = damage - ld b,h - ld c,l ; bc = damage - srl b - rr c ; bc = floor(0.5 * damage) - add hl,bc ; hl = floor(1.5 * damage) -; store damage - ld a,h - ld [W_DAMAGE],a - ld a,l - ld [W_DAMAGE + 1],a - ld hl,$d05b - set 7,[hl] -.skipSameTypeAttackBonus - ld a,[$d11e] - ld b,a ; b = move type - ld hl,TypeEffects -.loop - ld a,[hli] ; a = "attacking type" of the current type pair - cp a,$ff - jr z,.done - cp b ; does move type match "attacking type"? - jr nz,.nextTypePair - ld a,[hl] ; a = "defending type" of the current type pair - cp d ; does type 1 of defender match "defending type"? - jr z,.matchingPairFound - cp e ; does type 2 of defender match "defending type"? - jr z,.matchingPairFound - jr .nextTypePair -.matchingPairFound -; if the move type matches the "attacking type" and one of the defender's types matches the "defending type" - push hl - push bc - inc hl - ld a,[$d05b] - and a,$80 - ld b,a - ld a,[hl] ; a = damage multiplier - ld [H_MULTIPLIER],a - add b - ld [$d05b],a - xor a - ld [H_MULTIPLICAND],a - ld hl,W_DAMAGE - ld a,[hli] - ld [H_MULTIPLICAND + 1],a - ld a,[hld] - ld [H_MULTIPLICAND + 2],a - call Multiply - ld a,10 - ld [H_DIVISOR],a - ld b,$04 - call Divide - ld a,[H_QUOTIENT + 2] - ld [hli],a - ld b,a - ld a,[H_QUOTIENT + 3] - ld [hl],a - or b ; is damage 0? - jr nz,.skipTypeImmunity -.typeImmunity -; if damage is 0, make the move miss - inc a - ld [W_MOVEMISSED],a -.skipTypeImmunity - pop bc - pop hl -.nextTypePair - inc hl - inc hl - jp .loop -.done - ret - -; function to tell how effective the type of an enemy attack is on the player's current pokemon -; this doesn't take into account the effects that dual types can have -; (e.g. 4x weakness / resistance, weaknesses and resistances canceling) -; the result is stored in [$D11E] -; ($05 is not very effective, $10 is neutral, $14 is super effective) -; as far is can tell, this is only used once in some AI code to help decide which move to use -AIGetTypeEffectiveness: ; 3e449 (f:6449) - ld a,[W_ENEMYMOVETYPE] - ld d,a ; d = type of enemy move - ld hl,W_PLAYERMONTYPES - ld b,[hl] ; b = type 1 of player's pokemon - inc hl - ld c,[hl] ; c = type 2 of player's pokemon - ld a,$10 - ld [$d11e],a ; initialize [$D11E] to neutral effectiveness - ld hl,TypeEffects -.loop - ld a,[hli] - cp a,$ff - ret z - cp d ; match the type of the move - jr nz,.nextTypePair1 - ld a,[hli] - cp b ; match with type 1 of pokemon - jr z,.done - cp c ; or match with type 2 of pokemon - jr z,.done - jr .nextTypePair2 -.nextTypePair1 - inc hl -.nextTypePair2 - inc hl - jr .loop -.done - ld a,[hl] - ld [$d11e],a ; store damage multiplier - ret - -INCLUDE "data/type_effects.asm" - -; some tests that need to pass for a move to hit -MoveHitTest: ; 3e56b (f:656b) -; player's turn - ld hl,W_ENEMYBATTSTATUS1 - ld de,W_PLAYERMOVEEFFECT - ld bc,W_ENEMYMONSTATUS - ld a,[H_WHOSETURN] - and a - jr z,.dreamEaterCheck -; enemy's turn - ld hl,W_PLAYERBATTSTATUS1 - ld de,W_ENEMYMOVEEFFECT - ld bc,W_PLAYERMONSTATUS -.dreamEaterCheck - ld a,[de] - cp a,DREAM_EATER_EFFECT - jr nz,.swiftCheck - ld a,[bc] - and a,$07 ; is the target pokemon sleeping? - jp z,.moveMissed -.swiftCheck - ld a,[de] - cp a,SWIFT_EFFECT - ret z ; Swift never misses (interestingly, Azure Heights lists this is a myth, but it appears to be true) - call CheckTargetSubstitute ; substitute check (note that this overwrites a) - jr z,.checkForDigOrFlyStatus -; this code is buggy. it's supposed to prevent HP draining moves from working on substitutes. -; since $7b79 overwrites a with either $00 or $01, it never works. - cp a,DRAIN_HP_EFFECT ; $03 - jp z,.moveMissed - cp a,DREAM_EATER_EFFECT ; $08 - jp z,.moveMissed -.checkForDigOrFlyStatus - bit 6,[hl] - jp nz,.moveMissed - ld a,[H_WHOSETURN] - and a - jr nz,.enemyTurn -.playerTurn -; this checks if the move effect is disallowed by mist - ld a,[W_PLAYERMOVEEFFECT] - cp a,$12 - jr c,.skipEnemyMistCheck - cp a,$1a - jr c,.enemyMistCheck - cp a,$3a - jr c,.skipEnemyMistCheck - cp a,$42 - jr c,.enemyMistCheck - jr .skipEnemyMistCheck -.enemyMistCheck -; if move effect is from $12 to $19 inclusive or $3a to $41 inclusive -; i.e. the following moves -; GROWL, TAIL WHIP, LEER, STRING SHOT, SAND-ATTACK, SMOKESCREEN, KINESIS, -; FLASH, CONVERSION, HAZE*, SCREECH, LIGHT SCREEN*, REFLECT* -; the moves that are marked with an asterisk are not affected since this -; function is not called when those moves are used -; XXX are there are any others like those three? - ld a,[W_ENEMYBATTSTATUS2] - bit 1,a - jp nz,.moveMissed -.skipEnemyMistCheck - ld a,[W_PLAYERBATTSTATUS2] - bit 0,a ; is the player using X Accuracy? - ret nz ; if so, always hit regardless of accuracy/evasion - jr .calcHitChance -.enemyTurn - ld a,[W_ENEMYMOVEEFFECT] - cp a,$12 - jr c,.skipPlayerMistCheck - cp a,$1a - jr c,.playerMistCheck - cp a,$3a - jr c,.skipPlayerMistCheck - cp a,$42 - jr c,.playerMistCheck - jr .skipPlayerMistCheck -.playerMistCheck -; similar to enemy mist check - ld a,[W_PLAYERBATTSTATUS2] - bit 1,a - jp nz,.moveMissed -.skipPlayerMistCheck - ld a,[W_ENEMYBATTSTATUS2] - bit 0,a ; is the enemy using X Accuracy? - ret nz ; if so, always hit regardless of accuracy/evasion -.calcHitChance - call CalcHitChance ; scale the move accuracy according to attacker's accuracy and target's evasion - ld a,[W_PLAYERMOVEACCURACY] - ld b,a - ld a,[H_WHOSETURN] - and a - jr z,.doAccuracyCheck - ld a,[W_ENEMYMOVEACCURACY] - ld b,a -.doAccuracyCheck -; if the random number generated is greater than or equal to the scaled accuracy, the move misses -; note that this means that even the highest accuracy is still just a 255/256 chance, not 100% - call GenRandomInBattle ; random number - cp b - jr nc,.moveMissed - ret -.moveMissed - xor a - ld hl,W_DAMAGE ; zero the damage - ld [hli],a - ld [hl],a - inc a - ld [W_MOVEMISSED],a - ld a,[H_WHOSETURN] - and a - jr z,.playerTurn2 -.enemyTurn2 - ld hl,W_ENEMYBATTSTATUS1 - res 5,[hl] ; end multi-turn attack e.g. wrap - ret -.playerTurn2 - ld hl,W_PLAYERBATTSTATUS1 - res 5,[hl] ; end multi-turn attack e.g. wrap - ret - -; values for player turn -CalcHitChance: ; 3e624 (f:6624) - ld hl,W_PLAYERMOVEACCURACY - ld a,[H_WHOSETURN] - and a - ld a,[wPlayerMonAccuracyMod] - ld b,a - ld a,[wEnemyMonEvasionMod] - ld c,a - jr z,.next -; values for enemy turn - ld hl,W_ENEMYMOVEACCURACY - ld a,[wEnemyMonAccuracyMod] - ld b,a - ld a,[wPlayerMonEvasionMod] - ld c,a -.next - ld a,$0e - sub c - ld c,a ; c = 14 - EVASIONMOD (this "reflects" the value over 7, so that an increase in the target's evasion decreases the hit chance instead of increasing the hit chance) -; zero the high bytes of the multiplicand - xor a - ld [H_MULTIPLICAND],a - ld [H_MULTIPLICAND + 1],a - ld a,[hl] - ld [H_MULTIPLICAND + 2],a ; set multiplicand to move accuracy - push hl - ld d,$02 ; loop has two iterations -; loop to do the calculations, the first iteration multiplies by the accuracy ratio and the second iteration multiplies by the evasion ratio -.loop - push bc - ld hl, StatModifierRatios ; $76cb ; stat modifier ratios - dec b - sla b - ld c,b - ld b,$00 - add hl,bc ; hl = address of stat modifier ratio - pop bc - ld a,[hli] - ld [H_MULTIPLIER],a ; set multiplier to the numerator of the ratio - call Multiply - ld a,[hl] - ld [H_DIVISOR],a ; set divisor to the the denominator of the ratio (the dividend is the product of the previous multiplication) - ld b,$04 ; number of bytes in the dividend - call Divide - ld a,[H_QUOTIENT + 3] - ld b,a - ld a,[H_QUOTIENT + 2] - or b - jp nz,.nextCalculation -; make sure the result is always at least one - ld [H_QUOTIENT + 2],a - ld a,$01 - ld [H_QUOTIENT + 3],a -.nextCalculation - ld b,c - dec d - jr nz,.loop - ld a,[H_QUOTIENT + 2] - and a ; is the calculated hit chance over 0xFF? - ld a,[H_QUOTIENT + 3] - jr z,.storeAccuracy -; if calculated hit chance over 0xFF - ld a,$ff ; set the hit chance to 0xFF -.storeAccuracy - pop hl - ld [hl],a ; store the hit chance in the move accuracy variable - ret - -Func_3e687: ; 3e687 (f:6687) - ld hl, W_DAMAGE ; $d0d7 - ld a, [hli] - and a - jr nz, .asm_3e692 - ld a, [hl] - cp $2 - ret c -.asm_3e692 - xor a - ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) - dec hl - ld a, [hli] - ld [$ff97], a - ld a, [hl] - ld [$ff98], a -.asm_3e69c - call GenRandomInBattle - rrca - cp $d9 - jr c, .asm_3e69c - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - call Multiply - ld a, $ff - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - ld b, $4 - call Divide - ld a, [$ff97] - ld hl, W_DAMAGE ; $d0d7 - ld [hli], a - ld a, [$ff98] - ld [hl], a - ret - -Func_3e6bc: ; 3e6bc (f:66bc) - ld a, [wEnemySelectedMove] ; $ccdd - inc a - jp z, Func_3e88c - call PrintGhostText - jp z, Func_3e88c - ld a, [W_ISLINKBATTLE] ; $d12b - cp $4 - jr nz, .asm_3e6dc - ld b, $1 - ld a, [$cc3e] - cp $e - jr z, .asm_3e6dc - cp $4 - ret nc -.asm_3e6dc - ld hl, $ccd5 - inc [hl] - xor a - ld [W_MOVEMISSED], a ; $d05f - ld [$ccf4], a - ld a, $a - ld [$d05b], a - call Func_3e88f - jr nz, .asm_3e6f2 - jp [hl] -.asm_3e6f2 - ld hl, W_ENEMYBATTSTATUS1 ; $d067 - bit 4, [hl] - jr nz, asm_3e70b - call GetCurrentMove - -Func_3e6fc: ; 3e6fc (f:66fc) - ld a, [W_ENEMYMOVEEFFECT] ; $cfcd - cp $27 - jp z, Func_3f132 - cp $2b - jp z, Func_3f132 - jr asm_3e72b -asm_3e70b: ; 3e70b (f:670b) - ld hl, W_ENEMYBATTSTATUS1 ; $d067 - res 4, [hl] - res 6, [hl] - ld a, [W_ENEMYMOVENUM] ; $cfcc - ld [$d0b5], a - ld a, $2c - ld [$d0b7], a - ld a, MOVE_NAME - ld [W_LISTTYPE], a - call GetName - ld de, $cd6d - call CopyStringToCF4B -asm_3e72b: ; 3e72b (f:672b) - xor a - ld [$cced], a - call PrintMonName1Text - ld a, [W_ENEMYMOVEEFFECT] ; $cfcd - ld hl, EffectsArray1 ; $4000 - ld de, $1 - call IsInArray - jp c, Func_3f132 - ld a, [W_ENEMYMOVEEFFECT] ; $cfcd - ld hl, EffectsArray5B ; $4049 - ld de, $1 - call IsInArray - call c, Func_3f132 -asm_3e750: ; 3e750 (f:6750) - call Func_3ec81 - ld a, [W_ENEMYMOVEEFFECT] ; $cfcd - ld hl, EffectsArray2 ; $4011 - ld de, $1 - call IsInArray - jp c, Func_3e77f - call CriticalHitTest - call HandleCounterMove - jr z, asm_3e782 - call Func_3ec81 - call Func_3de75 - call Func_3ec81 - call MoreCalculateDamage - jp z, Func_3e7d1 - call AdjustDamageForMoveType - call Func_3e687 - -Func_3e77f: ; 3e77f (f:677f) - call MoveHitTest -asm_3e782: ; 3e782 (f:6782) - ld a, [W_MOVEMISSED] ; $d05f - and a - jr z, .asm_3e791 - ld a, [W_ENEMYMOVEEFFECT] ; $cfcd - cp $7 - jr z, asm_3e7a0 - jr Func_3e7d1 -.asm_3e791 - call Func_3ec81 - -Func_3e794: ; 3e794 (f:6794) - ld a, [W_ENEMYMOVEEFFECT] ; $cfcd - and a - ld a, $1 - jr z, asm_3e7a4 - ld a, $2 - jr asm_3e7a4 -asm_3e7a0: ; 3e7a0 (f:67a0) - call Func_3ec81 - xor a -asm_3e7a4: ; 3e7a4 (f:67a4) - push af - ld a, [W_ENEMYBATTSTATUS2] ; $d068 - bit 4, a - ld hl, Func_79747 - ld b, BANK(Func_79747) - call nz, Bankswitch - pop af - ld [$cc5b], a - ld a, [W_ENEMYMOVENUM] ; $cfcc - call PlayMoveAnimation - call Func_3eed3 - call Func_3cdec - ld a, [W_ENEMYBATTSTATUS2] ; $d068 - bit 4, a - ld hl, Func_79771 - ld b, BANK(Func_79771) - call nz, Bankswitch - jr asm_3e7ef - -Func_3e7d1: ; 3e7d1 (f:67d1) - call Func_3ec81 - ld c, $1e - call DelayFrames - ld a, [W_ENEMYMOVEEFFECT] ; $cfcd - cp $2b - jr z, .asm_3e7e6 - cp $27 - jr z, .asm_3e7e6 - jr asm_3e7ef -.asm_3e7e6 - xor a - ld [$cc5b], a - ld a,STATUS_AFFECTED_ANIM - call PlayMoveAnimation -asm_3e7ef: ; 3e7ef (f:67ef) - ld a, [W_ENEMYMOVEEFFECT] ; $cfcd - cp $9 - jr nz, .asm_3e7ff - call MirrorMoveCopyMove - jp z, Func_3e88c - jp Func_3e6fc -.asm_3e7ff - cp $53 - jr nz, .asm_3e809 - call MetronomePickMove - jp Func_3e6fc -.asm_3e809 - ld a, [W_ENEMYMOVEEFFECT] ; $cfcd - ld hl, EffectsArray3 ; $4014 - ld de, $1 - call IsInArray - jp c, Func_3f132 - ld a, [W_MOVEMISSED] ; $d05f - and a - jr z, .asm_3e82b - call PrintMoveFailureText - ld a, [W_ENEMYMOVEEFFECT] ; $cfcd - cp $7 - jr z, .asm_3e83e - jp Func_3e88c -.asm_3e82b - call ApplyAttackToPlayerPokemon - call Func_3dc5c - ld hl, DisplayEffectiveness - ld b, BANK(DisplayEffectiveness) - call Bankswitch - ld a, $1 - ld [$ccf4], a -.asm_3e83e - ld a, [W_ENEMYMOVEEFFECT] ; $cfcd - ld hl, EffectsArray4 ; $4030 - ld de, $1 - call IsInArray - call c, Func_3f132 - ld hl, W_PLAYERMONCURHP ; $d015 - ld a, [hli] - ld b, [hl] - or b - ret z - call HandleBuildingRage - ld hl, W_ENEMYBATTSTATUS1 ; $d067 - bit 2, [hl] - jr z, .asm_3e873 - push hl - ld hl, $d06f - dec [hl] - pop hl - jp nz, Func_3e794 - res 2, [hl] - ld hl, HitMultipleTimesText - call PrintText - xor a - ld [$cd05], a -.asm_3e873 - ld a, [W_ENEMYMOVEEFFECT] ; $cfcd - and a - jr z, Func_3e88c - ld hl, EffectsArray5 ; $403b - ld de, $1 - call IsInArray - call nc, Func_3f132 - jr Func_3e88c - -HitMultipleTimesText: ; 3e887 (f:6887) - TX_FAR _HitMultipleTimesText - db "@" - -Func_3e88c: ; 3e88c (f:688c) - ld b, $1 - ret - -Func_3e88f: ; 3e88f (f:688f) - ld hl, W_ENEMYMONSTATUS ; $cfe9 - ld a, [hl] - and $7 - jr z, .asm_3e8bf - dec a - ld [W_ENEMYMONSTATUS], a ; $cfe9 - and a - jr z, .asm_3e8af - ld hl, FastAsleepText - call PrintText - xor a - ld [$cc5b], a - ld a,SLP_ANIM - call PlayMoveAnimation - jr .asm_3e8b5 -.asm_3e8af - ld hl, WokeUpText - call PrintText -.asm_3e8b5 - xor a - ld [$ccf2], a - ld hl, Func_3e88c ; $688c - jp Func_3eab8 -.asm_3e8bf - bit 5, [hl] - jr z, .asm_3e8d3 - ld hl, IsFrozenText - call PrintText - xor a - ld [$ccf2], a - ld hl, Func_3e88c ; $688c - jp Func_3eab8 -.asm_3e8d3 - ld a, [W_PLAYERBATTSTATUS1] ; $d062 - bit 5, a - jp z, Func_3e8e7 - ld hl, CantMoveText - call PrintText - ld hl, Func_3e88c ; $688c - jp Func_3eab8 - -Func_3e8e7: ; 3e8e7 (f:68e7) - ld hl, W_ENEMYBATTSTATUS1 ; $d067 - bit 3, [hl] - jp z, Func_3e8fd - res 3, [hl] - ld hl, FlinchedText - call PrintText - ld hl, Func_3e88c ; $688c - jp Func_3eab8 - -Func_3e8fd: ; 3e8fd (f:68fd) - ld hl, W_ENEMYBATTSTATUS2 ; $d068 - bit 5, [hl] - jr z, .asm_3e912 - res 5, [hl] - ld hl, MustRechargeText - call PrintText - ld hl, Func_3e88c ; $688c - jp Func_3eab8 -.asm_3e912 - ld hl, W_ENEMYDISABLEDMOVE ; $d072 - ld a, [hl] - and a - jr z, .asm_3e929 - dec a - ld [hl], a - and $f - jr nz, .asm_3e929 - ld [hl], a - ld [$ccef], a - ld hl, DisabledNoMoreText - call PrintText -.asm_3e929 - ld a, [W_ENEMYBATTSTATUS1] ; $d067 - add a - jp nc, Func_3e9aa - ld hl, $d070 - dec [hl] - jr nz, .asm_3e944 - ld hl, W_ENEMYBATTSTATUS1 ; $d067 - res 7, [hl] - ld hl, ConfusedNoMoreText - call PrintText - jp Func_3e9aa -.asm_3e944 - ld hl, IsConfusedText - call PrintText - xor a - ld [$cc5b], a - ld a,CONF_ANIM - call PlayMoveAnimation - call GenRandomInBattle - cp $80 - jr c, Func_3e9aa - ld hl, W_ENEMYBATTSTATUS1 ; $d067 - ld a, [hl] - and $80 - ld [hl], a - ld hl, HurtItselfText - call PrintText - ld hl, W_PLAYERMONDEF - ld a, [hli] - push af - ld a, [hld] - push af - ld a, [W_ENEMYMONDEFENSE] ; $cff8 - ld [hli], a - ld a, [$cff9] - ld [hl], a - ld hl, W_ENEMYMOVEEFFECT ; $cfcd - push hl - ld a, [hl] - push af - xor a - ld [hli], a - ld [$d05e], a - ld a, $28 - ld [hli], a - xor a - ld [hl], a - call Func_3de75 - call MoreCalculateDamage - pop af - pop hl - ld [hl], a - ld hl, $d028 - pop af - ld [hld], a - pop af - ld [hl], a - xor a - ld [$cc5b], a - ld [H_WHOSETURN], a ; $fff3 - ld a, POUND - call PlayMoveAnimation - ld a, $1 - ld [H_WHOSETURN], a ; $fff3 - call ApplyDamageToEnemyPokemon - jr asm_3e9d3 - -Func_3e9aa: ; 3e9aa (f:69aa) - ld a, [$ccef] - and a - jr z, .asm_3e9bf - ld hl, wEnemySelectedMove ; $ccdd - cp [hl] - jr nz, .asm_3e9bf - call PrintMoveIsDisabledText - ld hl, Func_3e88c ; $688c - jp Func_3eab8 -.asm_3e9bf - ld hl, W_ENEMYMONSTATUS ; $cfe9 - bit 6, [hl] - jr z, asm_3e9f6 - call GenRandomInBattle - cp $3f - jr nc, asm_3e9f6 - ld hl, FullyParalyzedText - call PrintText -asm_3e9d3: ; 3e9d3 (f:69d3) - ld hl, W_ENEMYBATTSTATUS1 ; $d067 - ld a, [hl] - and $cc - ld [hl], a - ld a, [W_ENEMYMOVEEFFECT] ; $cfcd - cp $2b - jr z, .asm_3e9e7 - cp $27 - jr z, .asm_3e9e7 - jr .asm_3e9f0 -.asm_3e9e7 - xor a - ld [$cc5b], a - ld a, STATUS_AFFECTED_ANIM - call PlayMoveAnimation -.asm_3e9f0 - ld hl, Func_3e88c ; $688c - jp Func_3eab8 -asm_3e9f6: ; 3e9f6 (f:69f6) - ld hl, W_ENEMYBATTSTATUS1 ; $d067 - bit 0, [hl] - jr z, .asm_3ea54 - xor a - ld [W_ENEMYMOVENUM], a ; $cfcc - ld hl, W_DAMAGE ; $d0d7 - ld a, [hli] - ld b, a - ld c, [hl] - ld hl, $cd06 - ld a, [hl] - add c - ld [hld], a - ld a, [hl] - adc b - ld [hl], a - ld hl, $d06f - dec [hl] - jr z, .asm_3ea1c - ld hl, Func_3e88c ; $688c - jp Func_3eab8 -.asm_3ea1c - ld hl, W_ENEMYBATTSTATUS1 ; $d067 - res 0, [hl] - ld hl, UnleashedEnergyText - call PrintText - ld a, $1 - ld [W_ENEMYMOVEPOWER], a ; $cfce - ld hl, $cd06 - ld a, [hld] - add a - ld b, a - ld [$d0d8], a - ld a, [hl] - rl a - ld [W_DAMAGE], a ; $d0d7 - or b - jr nz, .asm_3ea43 - ld a, $1 - ld [W_MOVEMISSED], a ; $d05f -.asm_3ea43 - xor a - ld [hli], a - ld [hl], a - ld a, BIDE - ld [W_ENEMYMOVENUM], a ; $cfcc - call Func_3ec81 - ld hl, asm_3e782 ; $6782 - jp Func_3eab8 -.asm_3ea54 - bit 1, [hl] - jr z, .asm_3ea83 - ld a, THRASH - ld [W_ENEMYMOVENUM], a ; $cfcc - ld hl, ThrashingAboutText - call PrintText - ld hl, $d06f - dec [hl] - ld hl, asm_3e750 ; $6750 - jp nz, Func_3eab8 - push hl - ld hl, W_ENEMYBATTSTATUS1 ; $d067 - res 1, [hl] - set 7, [hl] - call GenRandomInBattle - and $3 - inc a - inc a - ld [$d070], a - pop hl - jp Func_3eab8 -.asm_3ea83 - bit 5, [hl] - jp z, Func_3ea9b - ld hl, AttackContinuesText - call PrintText - ld hl, $d06f - dec [hl] - ld hl, Func_3e794 ; $6794 - jp nz, Func_3eab8 - jp Func_3eab8 - -Func_3ea9b: ; 3ea9b (f:6a9b) - ld a, [W_ENEMYBATTSTATUS2] ; $d068 - bit 6, a - jp z, Func_3eaba - ld a, $63 - ld [$d11e], a - call GetMoveName - call CopyStringToCF4B - xor a - ld [W_ENEMYMOVEEFFECT], a ; $cfcd - ld hl, asm_3e72b ; $672b - jp Func_3eab8 - -Func_3eab8: ; 3eab8 (f:6ab8) - xor a - ret - -Func_3eaba: ; 3eaba (f:6aba) - ld a, $1 - and a - ret - -GetCurrentMove: ; 3eabe (f:6abe) - ld a, [H_WHOSETURN] ; $fff3 - and a - jp z, .player - ld de, W_ENEMYMOVENUM ; $cfcc - ld a, [wEnemySelectedMove] ; $ccdd - jr .selected -.player - ld de, W_PLAYERMOVENUM ; $cfd2 - ld a, [W_FLAGS_D733] - bit 0, a - ld a, [$ccd9] - jr nz, .selected - ld a, [wPlayerSelectedMove] ; $ccdc -.selected - ld [$d0b5], a - dec a - ld hl, Moves ; $4000 - ld bc, $6 - call AddNTimes - ld a, BANK(Moves) - call FarCopyData - ld a, $2c - ld [$d0b7], a - ld a, $2 - ld [W_LISTTYPE], a ; list type 2 = move name - call GetName - ld de, $cd6d - jp CopyStringToCF4B - -Func_3eb01: ; 3eb01 (f:6b01) - ld a, [W_ISLINKBATTLE] ; $d12b - cp $4 - jp z, Func_3cc13 - ld a, [W_ENEMYMONID] - ld [$cfe5], a - ld [$d0b5], a - call GetMonHeader - ld a, [W_ENEMYBATTSTATUS3] ; $d069 - bit 3, a - ld hl, $cceb - ld a, [hli] - ld b, [hl] - jr nz, .asm_3eb33 - ld a, [W_ISINBATTLE] ; $d057 - cp $2 - ld a, $98 - ld b, $88 - jr z, .asm_3eb33 - call GenRandomInBattle - ld b, a - call GenRandomInBattle -.asm_3eb33 - ld hl, $cff1 - ld [hli], a - ld [hl], b - ld de, W_ENEMYMONLEVEL ; $cff3 - ld a, [W_CURENEMYLVL] ; $d127 - ld [de], a - inc de - ld b, $0 - ld hl, W_ENEMYMONCURHP ; $cfe6 - push hl - call CalcStats - pop hl - ld a, [W_ISINBATTLE] ; $d057 - cp $2 - jr z, .asm_3eb65 - ld a, [W_ENEMYBATTSTATUS3] ; $d069 - bit 3, a - jr nz, .asm_3eb86 - ld a, [W_ENEMYMONMAXHP] ; $cff4 - ld [hli], a - ld a, [W_ENEMYMONMAXHP+1] - ld [hli], a - xor a - inc hl - ld [hl], a - jr .asm_3eb86 -.asm_3eb65 - ld hl, W_ENEMYMON1HP ; $d8a5 (aliases: W_WATERMONS) - ld a, [wWhichPokemon] ; $cf92 - ld bc, $2c - call AddNTimes - ld a, [hli] - ld [W_ENEMYMONCURHP], a ; $cfe6 - ld a, [hli] - ld [$cfe7], a - ld a, [wWhichPokemon] ; $cf92 - ld [W_ENEMYMONNUMBER], a ; $cfe8 - inc hl - ld a, [hl] - ld [W_ENEMYMONSTATUS], a ; $cfe9 - jr .asm_3eb86 -.asm_3eb86 - ld hl, W_MONHTYPES - ld de, W_ENEMYMONTYPES ; $cfea - ld a, [hli] ; copy type 1 - ld [de], a - inc de - ld a, [hli] ; copy type 2 - ld [de], a - inc de - ld a, [hli] ; copy catch rate - ld [de], a - inc de - ld a, [W_ISINBATTLE] ; $d057 - cp $2 - jr nz, .asm_3ebb0 - ld hl, $d8ac - ld a, [wWhichPokemon] ; $cf92 - ld bc, $2c - call AddNTimes - ld bc, $4 - call CopyData - jr .asm_3ebca -.asm_3ebb0 - ld hl, W_MONHMOVES - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - inc de - ld a, [hl] - ld [de], a - dec de - dec de - dec de - xor a - ld [$cee9], a - ld a, $3e - call Predef ; indirect jump to WriteMonMoves (3afb8 (e:6fb8)) -.asm_3ebca - ld hl, W_ENEMYMONMOVES - ld de, $cffd - ld a, $5e - call Predef ; indirect jump to LoadMovePPs (f473 (3:7473)) - ld hl, W_MONHBASESTATS - ld de, $d002 - ld b, $5 -.asm_3ebdd - ld a, [hli] - ld [de], a - inc de - dec b - jr nz, .asm_3ebdd - ld hl, W_MONHCATCHRATE - ld a, [hli] - ld [de], a - inc de - ld a, [hl] ; base exp - ld [de], a - ld a, [W_ENEMYMONID] - ld [$d11e], a - call GetMonName - ld hl, $cd6d - ld de, W_ENEMYMONNAME - ld bc, $b - call CopyData - ld a, [W_ENEMYMONID] - ld [$d11e], a - ld a, $3a - call Predef ; indirect jump to IndexToPokedex (41010 (10:5010)) - ld a, [$d11e] - dec a - ld c, a - ld b, $1 - ld hl, wPokedexSeen ; $d30a - ld a, $10 - call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) - ld hl, W_ENEMYMONLEVEL ; $cff3 - ld de, $cd23 - ld bc, $b - call CopyData - ld a, $7 - ld b, $8 - ld hl, wEnemyMonStatMods ; $cd2e -.asm_3ec2d - ld [hli], a - dec b - jr nz, .asm_3ec2d - ret - -Func_3ec32: ; 3ec32 (f:6c32) - ld a, [W_ISLINKBATTLE] ; $d12b - cp $4 - jr nz, .asm_3ec4d - xor a - ld [wMenuJoypadPollCount], a ; $cc34 - ld hl, Func_372d6 - ld b, BANK(Func_372d6) - call Bankswitch - ld a, $1 - ld [$cfcb], a - call ClearScreen -.asm_3ec4d - call DelayFrame - ld a, $30 - call Predef ; indirect jump to Func_7096d (7096d (1c:496d)) - ld hl, Func_3ee58 - ld b, BANK(Func_3ee58) - call Bankswitch - ld a, $1 - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ld a, $ff - ld [$cfcb], a - call CleanLCD_OAM - call ClearScreen - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ld [$ffb0], a - ld [rWY], a ; $ff4a - ld [$ffd7], a - ld hl, $d060 - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld [W_PLAYERDISABLEDMOVE], a ; $d06d - ret - -Func_3ec81: ; 3ec81 (f:6c81) - push bc - ld a, [W_PLAYERMONLEVEL] ; $d022 - ld b, a - ld a, [W_ENEMYMONLEVEL] ; $cff3 - ld [W_PLAYERMONLEVEL], a ; $d022 - ld a, b - ld [W_ENEMYMONLEVEL], a ; $cff3 - pop bc - ret - -Func_3ec92: ; 3ec92 (f:6c92) - ld a, [W_BATTLETYPE] ; $d05a - dec a - ld de, RedPicBack ; $7e0a - jr nz, .asm_3ec9e - ld de, OldManPic ; $7e9a -.asm_3ec9e - ld a, BANK(RedPicBack) - call UncompressSpriteFromDE - ld a, $3 - call Predef ; indirect jump to ScaleSpriteByTwo (2fe40 (b:7e40)) - ld hl, wOAMBuffer - xor a - ld [H_DOWNARROWBLINKCNT1], a ; $ff8b - ld b, $7 - ld e, $a0 -.asm_3ecb2 - ld c, $3 - ld d, $38 -.asm_3ecb6 - ld [hl], d - inc hl - ld [hl], e - ld a, $8 - add d - ld d, a - inc hl - ld a, [H_DOWNARROWBLINKCNT1] ; $ff8b - ld [hli], a - inc a - ld [H_DOWNARROWBLINKCNT1], a ; $ff8b - inc hl - dec c - jr nz, .asm_3ecb6 - ld a, [H_DOWNARROWBLINKCNT1] ; $ff8b - add $4 - ld [H_DOWNARROWBLINKCNT1], a ; $ff8b - ld a, $8 - add e - ld e, a - dec b - jr nz, .asm_3ecb2 - ld de, $9310 - call InterlaceMergeSpriteBuffers - ld a, $a - ld [$0], a - xor a - ld [$4000], a - ld hl, $8000 - ld de, S_SPRITEBUFFER1 - ld a, [H_LOADEDROMBANK] - ld b, a - ld c, $31 - call CopyVideoData - xor a - ld [$0], a - ld a, $31 - ld [$ffe1], a - FuncCoord 1, 5 ; $c405 - ld hl, Coord - ld a, $1 - jp Predef ; indirect jump to Func_3f0c6 (3f0c6 (f:70c6)) - -Func_3ed02: ; 3ed02 (f:6d02) - ld hl, Func_39680 - ld b, BANK(Func_39680) - call Bankswitch - ld hl, Func_396a7 - ld b, BANK(Func_396a7) - jp Bankswitch - -ScrollTrainerPicAfterBattle: ; 3ed12 (f:6d12) - ld hl, _ScrollTrainerPicAfterBattle - ld b, BANK(_ScrollTrainerPicAfterBattle) - jp Bankswitch - -Func_3ed1a: ; 3ed1a (f:6d1a) - ld a, $1 - jr asm_3ed1f - -Func_3ed1e: ; 3ed1e (f:6d1e) - xor a -asm_3ed1f: ; 3ed1f (f:6d1f) - ld [H_WHOSETURN], a ; $fff3 - call Func_3ed27 - jp Func_3ed64 - -Func_3ed27: ; 3ed27 (f:6d27) - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3ed48 - ld a, [W_PLAYERMONSTATUS] ; $d018 - and $40 - ret z - ld hl, $d02a - ld a, [hld] - ld b, a - ld a, [hl] - srl a - rr b - srl a - rr b - ld [hli], a - or b - jr nz, .asm_3ed46 - ld b, $1 -.asm_3ed46 - ld [hl], b - ret -.asm_3ed48 - ld a, [W_ENEMYMONSTATUS] ; $cfe9 - and $40 - ret z - ld hl, $cffb - ld a, [hld] - ld b, a - ld a, [hl] - srl a - rr b - srl a - rr b - ld [hli], a - or b - jr nz, .asm_3ed62 - ld b, $1 -.asm_3ed62 - ld [hl], b - ret - -Func_3ed64: ; 3ed64 (f:6d64) - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3ed81 - ld a, [W_PLAYERMONSTATUS] ; $d018 - and $10 - ret z - ld hl, $d026 - ld a, [hld] - ld b, a - ld a, [hl] - srl a - rr b - ld [hli], a - or b - jr nz, .asm_3ed7f - ld b, $1 -.asm_3ed7f - ld [hl], b - ret -.asm_3ed81 - ld a, [W_ENEMYMONSTATUS] ; $cfe9 - and $10 - ret z - ld hl, $cff7 - ld a, [hld] - ld b, a - ld a, [hl] - srl a - rr b - ld [hli], a - or b - jr nz, .asm_3ed97 - ld b, $1 -.asm_3ed97 - ld [hl], b - ret - -Func_3ed99: ; 3ed99 (f:6d99) - ld c, $0 -.asm_3ed9b - call Func_3eda5 - inc c - ld a, c - cp $4 - jr nz, .asm_3ed9b - ret - -Func_3eda5: ; 3eda5 (f:6da5) - push bc - push bc - ld a, [$d11e] - and a - ld a, c - ld hl, W_PLAYERMONATK - ld de, $cd12 - ld bc, wPlayerMonAttackMod ; $cd1a - jr z, .asm_3edc0 - ld hl, W_ENEMYMONATTACK - ld de, $cd26 - ld bc, wEnemyMonStatMods ; $cd2e -.asm_3edc0 - add c - ld c, a - jr nc, .asm_3edc5 - inc b -.asm_3edc5 - ld a, [bc] - pop bc - ld b, a - push bc - sla c - ld b, $0 - add hl, bc - ld a, c - add e - ld e, a - jr nc, .asm_3edd4 - inc d -.asm_3edd4 - pop bc - push hl - ld hl, StatModifierRatios ; $76cb - dec b - sla b - ld c, b - ld b, $0 - add hl, bc - xor a - ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) - ld a, [de] - ld [$ff97], a - inc de - ld a, [de] - ld [$ff98], a - ld a, [hli] - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - call Multiply - ld a, [hl] - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - ld b, $4 - call Divide - pop hl - ld a, [$ff98] - sub $e7 - ld a, [$ff97] - sbc $3 - jp c, Func_3ee0c - ld a, $3 - ld [$ff97], a - ld a, $e7 - ld [$ff98], a - -Func_3ee0c: ; 3ee0c (f:6e0c) - ld a, [$ff97] - ld [hli], a - ld b, a - ld a, [$ff98] - ld [hl], a - or b - jr nz, .asm_3ee17 - inc [hl] -.asm_3ee17 - pop bc - ret - -Func_3ee19: ; 3ee19 (f:6e19) - ld a, [W_ISLINKBATTLE] - cp $4 - ret z - ld a, [W_OBTAINEDBADGES] - ld b, a - ld hl, W_PLAYERMONATK - ld c, $4 -.asm_3ee28 - srl b - call c, Func_3ee35 - inc hl - inc hl - srl b - dec c - jr nz, .asm_3ee28 - ret - -Func_3ee35: ; 3ee35 (f:6e35) - ld a, [hli] - ld d, a - ld e, [hl] - srl d - rr e - srl d - rr e - srl d - rr e - ld a, [hl] - add e - ld [hld], a - ld a, [hl] - adc d - ld [hli], a - ld a, [hld] - sub $e7 - ld a, [hl] - sbc $3 - ret c - ld a, $3 - ld [hli], a - ld a, $e7 - ld [hld], a - ret - -Func_3ee58: ; 3ee58 (f:6e58) - call LoadHpBarAndStatusTilePatterns - -Func_3ee5b: ; 3ee5b (f:6e5b) - ld a, [rLCDC] ; $ff40 - add a - jr c, .asm_3ee7c - ld hl, BattleHudTiles1 ; $6080 - ld de, $96d0 - ld bc, $18 - ld a, BANK(BattleHudTiles1) - call FarCopyDataDouble - ld hl, BattleHudTiles2 ; $6098 - ld de, $9730 - ld bc, $30 - ld a, BANK(BattleHudTiles2) - jp FarCopyDataDouble -.asm_3ee7c - ld de, BattleHudTiles1 ; $6080 - ld hl, $96d0 - ld bc, (BANK(BattleHudTiles1) << 8) + $03 - call CopyVideoDataDouble - ld de, BattleHudTiles2 ; $6098 - ld hl, $9730 - ld bc, (BANK(BattleHudTiles2) << 8) + $06 - jp CopyVideoDataDouble - -Func_3ee94: ; 3ee94 (f:6e94) - ld hl, TerminatorText_3ee9a ; $6e9a - jp PrintText - -TerminatorText_3ee9a: ; 3ee9a (f:6e9a) - db "@" - -; generates a random number unless in link battle -; stores random number in A -GenRandomInBattle: ; 3ee9b (f:6e9b) - ld a, [W_ISLINKBATTLE] - cp $4 - jp nz, GenRandom - push hl - push bc - ld a, [$ccde] - ld c, a - ld b, $0 - ld hl, $d148 - add hl, bc - inc a - ld [$ccde], a - cp $9 - ld a, [hl] - pop bc - pop hl - ret c - push hl - push bc - push af - xor a - ld [$ccde], a - ld hl, $d148 - ld b, $9 -.asm_3eec5 - ld a, [hl] - ld c, a - add a - add a - add c - inc a - ld [hli], a - dec b - jr nz, .asm_3eec5 ; 0x3eecd $f6 - pop af - pop bc - pop hl - ret - -Func_3eed3: ; 3eed3 (f:6ed3) - ld a, [H_WHOSETURN] ; $fff3 - and a - ld hl, W_ENEMYMONTYPE1 ; $cfea (aliases: W_ENEMYMONTYPES) - ld de, W_ENEMYBATTSTATUS1 ; $d067 - ld a, [W_PLAYERMOVENUM] ; $cfd2 - jr z, .asm_3eeea - ld hl, W_PLAYERMONTYPE1 ; $d019 (aliases: W_PLAYERMONTYPES) - ld de, W_ENEMYBATTSTATUS1 ; $d067 - ld a, [W_ENEMYMOVENUM] ; $cfcc -.asm_3eeea - cp SELFDESTRUCT - jr z, .asm_3eef1 - cp EXPLOSION - ret nz -.asm_3eef1 - ld a, [de] - bit 6, a - ret nz - ld a, [hli] - cp GHOST - ret z - ld a, [hl] - cp GHOST - ret z - ld a, [W_MOVEMISSED] ; $d05f - and a - ret nz - ld a, $5 - ld [$cc5b], a - -PlayMoveAnimation: ; 3ef07 (f:6f07) - ld [$D07C],a - call Delay3 - PREDEF_JUMP MoveAnimationPredef ; predef 8 - -Func_3ef12: ; 3ef12 (f:6f12) - ld a, [W_CUROPPONENT] ; $d059 - and a - jr z, asm_3ef23 - -Func_3ef18: ; 3ef18 (f:6f18) - ld a, [W_CUROPPONENT] ; $d059 - ld [$cf91], a - ld [W_ENEMYMONID], a - jr asm_3ef3d -asm_3ef23: ; 3ef23 (f:6f23) - ld a, [$d732] - bit 1, a - jr z, .asm_3ef2f - ld a, [H_CURRENTPRESSEDBUTTONS] - bit 1, a - ret nz -.asm_3ef2f - ld a, [$d13c] - and a - ret nz - ld hl, Func_13870 - ld b, BANK(Func_13870) - call Bankswitch - ret nz -asm_3ef3d: ; 3ef3d (f:6f3d) - ld a, [$d35d] - push af - ld hl, $d358 - ld a, [hl] - push af - res 1, [hl] - ld hl, Func_525af - ld b, BANK(Func_525af) - call Bankswitch - ld a, [W_ENEMYMONID] - sub $c8 - jp c, Func_3ef8b - ld [W_TRAINERCLASS], a ; $d031 - call Func_3566 - ld hl, ReadTrainer - ld b, BANK(ReadTrainer) - call Bankswitch - call Func_3ec32 - call _LoadTrainerPic - xor a - ld [W_ENEMYMONID], a - ld [$ffe1], a - dec a - ld [wAICount], a ; $ccdf - FuncCoord 12, 0 ; $c3ac - ld hl, Coord - ld a, $1 - call Predef ; indirect jump to Func_3f0c6 (3f0c6 (f:70c6)) - ld a, $ff - ld [W_ENEMYMONNUMBER], a ; $cfe8 - ld a, $2 - ld [W_ISINBATTLE], a ; $d057 - jp Func_3efeb - -Func_3ef8b: ; 3ef8b (f:6f8b) - ld a, $1 - ld [W_ISINBATTLE], a ; $d057 - call Func_3eb01 - call Func_3ec32 - ld a, [W_CUROPPONENT] ; $d059 - cp MAROWAK - jr z, .isGhost - call IsGhostBattle - jr nz, .isNoGhost -.isGhost - ld hl, W_MONHSPRITEDIM - ld a, $66 - ld [hli], a ; write sprite dimensions - ld bc, GhostPic ; $66b5 - ld a, c - ld [hli], a ; write front sprite pointer - ld [hl], b - ld hl, W_ENEMYMONNAME ; set name to "GHOST" - ld a, "G" - ld [hli], a - ld a, "H" - ld [hli], a - ld a, "O" - ld [hli], a - ld a, "S" - ld [hli], a - ld a, "T" - ld [hli], a - ld [hl], "@" - ld a, [$cf91] - push af - ld a, MON_GHOST - ld [$cf91], a - ld de, $9000 - call LoadMonFrontSprite ; load ghost sprite - pop af - ld [$cf91], a - jr .spriteLoaded -.isNoGhost - ld de, $9000 - call LoadMonFrontSprite ; load mon sprite -.spriteLoaded - xor a - ld [W_TRAINERCLASS], a ; $d031 - ld [$ffe1], a - FuncCoord 12, 0 ; $c3ac - ld hl, Coord - ld a, $1 - call Predef ; indirect jump to Func_3f0c6 (3f0c6 (f:70c6)) - -Func_3efeb: ; 3efeb (f:6feb) - ld b, $0 - call GoPAL_SET - call Func_3c04c - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ld hl, TerminatorText_3f04a - call PrintText - call SaveScreenTilesToBuffer1 - call ClearScreen - ld a, $98 - ld [$ffbd], a - ld a, $1 - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - call Delay3 - ld a, $9c - ld [$ffbd], a - call LoadScreenTilesFromBuffer1 - FuncCoord 9, 7 ; $c435 - ld hl, Coord - ld bc, $50a - call ClearScreenArea - FuncCoord 1, 0 ; $c3a1 - ld hl, Coord - ld bc, $40a - call ClearScreenArea - call CleanLCD_OAM - ld a, [W_ISINBATTLE] ; $d057 - dec a - call z, Func_3cdec - call Func_3c11e - ld hl, Func_137aa - ld b, BANK(Func_137aa) - call Bankswitch - pop af - ld [$d358], a - pop af - ld [$d35d], a - ld a, [$d0d4] - ld [$ffd7], a - scf - ret - -TerminatorText_3f04a: ; 3f04a (f:704a) - db "@" - -_LoadTrainerPic: ; 3f04b (f:704b) -; $d033-$d034 contain pointer to pic - ld a, [$d033] - ld e, a - ld a, [$d034] - ld d, a ; de contains pointer to trainer pic - ld a, [W_ISLINKBATTLE] ; $d12b - and a - ld a, Bank(TrainerPics) ; this is where all the trainer pics are (not counting Red's) - jr z, .loadSprite - ld a, Bank(RedPicFront) -.loadSprite - call UncompressSpriteFromDE - ld de, $9000 - ld a, $77 - ld c, a - jp LoadUncompressedSpriteData - -Func_3f069: ; 3f069 (f:7069) - xor a - ld [$c0f1], a - ld [$c0f2], a - jp PlaySound - -Func_3f073: ; 3f073 (f:7073) - ld a, [$cc4f] - ld h, a - ld a, [$cc50] - ld l, a - ld a, [$ffe1] - ld [H_DOWNARROWBLINKCNT1], a ; $ff8b - ld b, $4c - ld a, [W_ISINBATTLE] ; $d057 - and a - jr z, .asm_3f0bc - add b - ld [hl], a - call Delay3 - ld bc, $ffd7 - add hl, bc - ld a, $1 - ld [$cd6c], a - ld bc, $303 - ld a, $5 - call Predef ; indirect jump to Func_79aba (79aba (1e:5aba)) - ld c, $4 - call DelayFrames - ld bc, $ffd7 - add hl, bc - xor a - ld [$cd6c], a - ld bc, $505 - ld a, $5 - call Predef ; indirect jump to Func_79aba (79aba (1e:5aba)) - ld c, $5 - call DelayFrames - ld bc, $ffd7 - jr .asm_3f0bf -.asm_3f0bc - ld bc, $ff85 -.asm_3f0bf - add hl, bc - ld a, [H_DOWNARROWBLINKCNT1] ; $ff8b - add $31 - jr asm_3f0d0 - -Func_3f0c6: ; 3f0c6 (f:70c6) - ld a, [$cc4f] - ld h, a - ld a, [$cc50] - ld l, a - ld a, [$ffe1] -asm_3f0d0: ; 3f0d0 (f:70d0) - ld bc, $707 - ld de, $14 - push af - ld a, [W_SPRITEFLIPPED] - and a - jr nz, .asm_3f0ed - pop af -.asm_3f0de - push bc - push hl -.asm_3f0e0 - ld [hl], a - add hl, de - inc a - dec c - jr nz, .asm_3f0e0 - pop hl - inc hl - pop bc - dec b - jr nz, .asm_3f0de - ret -.asm_3f0ed - push bc - ld b, $0 - dec c - add hl, bc - pop bc - pop af -.asm_3f0f4 - push bc - push hl -.asm_3f0f6 - ld [hl], a - add hl, de - inc a - dec c - jr nz, .asm_3f0f6 - pop hl - dec hl - pop bc - dec b - jr nz, .asm_3f0f4 - ret - -; loads back sprite of mon to $8000 -; assumes the corresponding mon header is already loaded -LoadMonBackSprite: ; 3f103 (f:7103) - ld a, [$cfd9] - ld [$cf91], a - FuncCoord 1, 5 ; $c405 - ld hl, Coord - ld b, $7 - ld c, $8 - call ClearScreenArea - ld hl, W_MONHBACKSPRITE - W_MONHEADER - call UncompressMonSprite - ld a, $3 - call Predef ; indirect jump to ScaleSpriteByTwo (2fe40 (b:7e40)) - ld de, $9310 - call InterlaceMergeSpriteBuffers ; combine the two buffers to a single 2bpp sprite - ld hl, $8000 - ld de, $9310 - ld c, (2*SPRITEBUFFERSIZE)/16 ; count of 16-byte chunks to be copied - ld a, [H_LOADEDROMBANK] - ld b, a - jp CopyVideoData - -Func_3f132: ; 3f132 (f:7132) - call JumpMoveEffect - ld b, $1 - ret - -JumpMoveEffect: ; 3f138 (f:7138) - ld a, [$fff3] ;whose turn? - and a - ld a, [W_PLAYERMOVEEFFECT] - jr z, .next1 - ld a, [W_ENEMYMOVEEFFECT] -.next1 - dec a ;subtract 1, there is no special effect for 00 - add a ;x2, 16bit pointers - ld hl, MoveEffectPointerTable - ld b, 0 - ld c, a - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] ;jump to special effect handler - -MoveEffectPointerTable: ; 3f150 (f:7150) - dw Func_3f1fc - dw Func_3f24f - dw Func_3f2e9 - dw FreezeBurnParalyzeEffect - dw FreezeBurnParalyzeEffect - dw FreezeBurnParalyzeEffect - dw Func_3f2f1 - dw Func_3f2e9 - dw $0000 - dw Func_3f428 - dw Func_3f428 - dw Func_3f428 - dw Func_3f428 - dw Func_3f428 - dw Func_3f428 - dw PayDayEffect - dw $0000 - dw Func_3f54c - dw Func_3f54c - dw Func_3f54c - dw Func_3f54c - dw Func_3f54c - dw Func_3f54c - dw ConversionEffect - dw HazeEffect - dw Func_3f6e5 - dw Func_3f717 - dw Func_3f739 - dw Func_3f811 - dw Func_3f811 - dw Func_3f85b - dw Func_3f1fc - dw Func_3f24f - dw FreezeBurnParalyzeEffect - dw FreezeBurnParalyzeEffect - dw FreezeBurnParalyzeEffect - dw Func_3f85b - dw Func_3f884 - dw TwoTurnAttackEffect - dw $0000 - dw $0000 - dw Func_3f917 - dw TwoTurnAttackEffect - dw Func_3f811 - dw $0000 - dw MistEffect - dw FocusEnergyEffect - dw RecoilEffect - dw Func_3f961 - dw Func_3f428 - dw Func_3f428 - dw Func_3f428 - dw Func_3f428 - dw Func_3f428 - dw Func_3f428 - dw Func_3fb26 - dw Func_3fb2e - dw Func_3f54c - dw Func_3f54c - dw Func_3f54c - dw Func_3f54c - dw Func_3f54c - dw Func_3f54c - dw Func_3fb36 - dw Func_3fb36 - dw Func_3f24f - dw Func_3f9b1 - dw Func_3f54c - dw Func_3f54c - dw Func_3f54c - dw Func_3f54c - dw Func_3f54c - dw Func_3f54c - dw Func_3f54c - dw Func_3f54c - dw Func_3f959 - dw Func_3f811 - dw $0000 - dw Func_3f9b9 - dw Func_3f9c1 - dw Func_3f9df - dw Func_3f9ed - dw $0000 - dw LeechSeedEffect - dw Func_3fa84 - dw DisableEffect - -Func_3f1fc: ; 3f1fc (f:71fc) - ld de, W_ENEMYMONSTATUS ; $cfe9 - ld bc, W_ENEMYBATTSTATUS2 ; $d068 - ld a, [H_WHOSETURN] ; $fff3 - and a - jp z, Func_3f20e - ld de, W_PLAYERMONSTATUS ; $d018 - ld bc, W_PLAYERBATTSTATUS2 ; $d063 - -Func_3f20e: ; 3f20e (f:720e) - ld a, [bc] - bit 5, a - res 5, a - ld [bc], a - jr nz, .asm_3f231 - ld a, [de] - ld b, a - and $7 - jr z, .asm_3f222 - ld hl, AlreadyAsleepText - jp PrintText -.asm_3f222 - ld a, b - and a - jr nz, .asm_3f242 - push de - call MoveHitTest - pop de - ld a, [W_MOVEMISSED] ; $d05f - and a - jr nz, .asm_3f242 -.asm_3f231 - call GenRandomInBattle - and $7 - jr z, .asm_3f231 - ld [de], a - call Func_3fb89 - ld hl, FellAsleepText - jp PrintText -.asm_3f242 - jp PrintDidntAffectText - -FellAsleepText: ; 3f245 (f:7245) - TX_FAR _FellAsleepText - db "@" - -AlreadyAsleepText: ; 3f24a (f:724a) - TX_FAR _AlreadyAsleepText - db "@" - -Func_3f24f: ; 3f24f (f:724f) - ld hl, W_ENEMYMONSTATUS ; $cfe9 - ld de, W_PLAYERMOVEEFFECT ; $cfd3 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3f260 - ld hl, W_PLAYERMONSTATUS ; $d018 - ld de, W_ENEMYMOVEEFFECT ; $cfcd -.asm_3f260 - call CheckTargetSubstitute - jr nz, .asm_3f2d3 - ld a, [hli] - ld b, a - and a - jr nz, .asm_3f2d3 - ld a, [hli] - cp $3 - jr z, .asm_3f2d3 - ld a, [hld] - cp $3 - jr z, .asm_3f2d3 - ld a, [de] - cp $2 - ld b, $34 - jr z, .asm_3f290 - cp $21 - ld b, $67 - jr z, .asm_3f290 - push hl - push de - call MoveHitTest - pop de - pop hl - ld a, [W_MOVEMISSED] ; $d05f - and a - jr nz, .asm_3f2d7 - jr .asm_3f295 -.asm_3f290 - call GenRandomInBattle - cp b - ret nc -.asm_3f295 - dec hl - set 3, [hl] - push de - dec de - ld a, [H_WHOSETURN] ; $fff3 - and a - ld b, $c7 - ld hl, W_PLAYERBATTSTATUS3 ; $d064 - ld a, [de] - ld de, W_PLAYERTOXICCOUNTER ; $d06c - jr nz, .asm_3f2b0 - ld b, $a9 - ld hl, W_ENEMYBATTSTATUS3 ; $d069 - ld de, W_ENEMYTOXICCOUNTER ; $d071 -.asm_3f2b0 - cp $5c - jr nz, .asm_3f2bd - set 0, [hl] - xor a - ld [de], a - ld hl, BadlyPoisonedText - jr .asm_3f2c0 -.asm_3f2bd - ld hl, PoisonedText -.asm_3f2c0 - pop de - ld a, [de] - cp $42 - jr z, .asm_3f2cd - ld a, b - call Func_3fb96 - jp PrintText -.asm_3f2cd - call Func_3fb89 - jp PrintText -.asm_3f2d3 - ld a, [de] - cp $42 - ret nz -.asm_3f2d7 - ld c, $32 - call DelayFrames - jp PrintDidntAffectText - -PoisonedText: ; 3f2df (f:72df) - TX_FAR _PoisonedText - db "@" - -BadlyPoisonedText: ; 3f2e4 (f:72e4) - TX_FAR _BadlyPoisonedText - db "@" - -Func_3f2e9: ; 3f2e9 (f:72e9) - ld hl, Func_783f - ld b, BANK(Func_783f) - jp Bankswitch - -Func_3f2f1: ; 3f2f1 (f:72f1) - ld hl, W_PLAYERMONCURHP ; $d015 - ld de, W_PLAYERBATTSTATUS2 ; $d063 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3f302 - ld hl, W_ENEMYMONCURHP ; $cfe6 - ld de, W_ENEMYBATTSTATUS2 ; $d068 -.asm_3f302 - xor a - ld [hli], a - ld [hli], a - inc hl - ld [hl], a - ld a, [de] - res 7, a - ld [de], a - ret - -FreezeBurnParalyzeEffect: ; 3f30c (f:730c) - xor a - ld [$cc5b], a - call CheckTargetSubstitute ;test bit 4 of d063/d068 flags [target has substitute flag] - ret nz ;return if they have a substitute, can't effect them - ld a, [$fff3] ;whose turn? - and a - jp nz, opponentAttacker - ld a, [W_ENEMYMONSTATUS] - and a - jp nz, CheckDefrost - ;opponent has no existing status - ld a, [W_PLAYERMOVETYPE] - ld b, a - ld a, [W_ENEMYMONTYPE1] - cp b - ret z ;return if they match [can't freeze an ice type etc.] - ld a, [W_ENEMYMONTYPE2] - cp b - ret z ;return.. - ld a, [W_PLAYERMOVEEFFECT] - cp a, 7 ;10% status effects are 04, 05, 06 so 07 will set carry for those - ld b, $1a ;[1A-1]/100 or [26-1]/256 = 9.8%~ chance - jr c, .next1 ;branch ahead if this is a 10% chance effect.. - ld b, $4d ;..or use [4D-1]/100 or [76-1]/256 = 29.7%~ chance - sub a, $1e ;subtract $1E to map to equivalent 10% chance effects -.next1 - push af ;push effect... - call GenRandomInBattle ;get random 8bit value for probability test - cp b ;success? - pop bc ;...pop effect into C - ret nc ;do nothing if random value is >= 1A or 4D [no status applied] - ;the test passed - ld a, b ;what type of effect is this? - cp a, BURN_SIDE_EFFECT1 - jr z, .burn - cp a, FREEZE_SIDE_EFFECT - jr z, .freeze - ld a, PAR - ld [W_ENEMYMONSTATUS], a - call Func_3ed27 ;quarter speed of affected monster - ld a, $a9 - call Func_3fbb9 ;animation - jp PrintMayNotAttackText ;print paralysis text -.burn - ld a, BRN - ld [W_ENEMYMONSTATUS], a - call Func_3ed64 - ld a, $a9 - call Func_3fbb9 ;animation - ld hl, BurnedText - jp PrintText -.freeze - call Func_3f9cf ;resets bit 5 of the D063/D068 flags - ld a, FRZ - ld [W_ENEMYMONSTATUS], a - ld a, $a9 - call Func_3fbb9 ;animation - ld hl, FrozenText - jp PrintText -opponentAttacker: ; 3f382 (f:7382) - ld a, [W_PLAYERMONSTATUS] ;this appears to the same as above with addresses swapped for opponent - and a - jp nz, CheckDefrost - ld a, [W_ENEMYMOVETYPE] - ld b, a - ld a, [W_PLAYERMONTYPE1] - cp b - ret z - ld a, [W_PLAYERMONTYPE2] - cp b - ret z - ld a, [W_ENEMYMOVEEFFECT] - cp a, 7 - ld b, $1a - jr c, .next1 - ld b, $4d - sub a, $1e -.next1 - push af - call GenRandomInBattle - cp b - pop bc - ret nc - ld a, b - cp a, BURN_SIDE_EFFECT1 - jr z, .burn - cp a, FREEZE_SIDE_EFFECT - jr z, .freeze - ld a, PAR - ld [W_PLAYERMONSTATUS], a - call Func_3ed27 - jp PrintMayNotAttackText -.burn - ld a, BRN - ld [W_PLAYERMONSTATUS], a - call Func_3ed64 - ld hl, BurnedText - jp PrintText -.freeze - ld a, FRZ - ld [W_PLAYERMONSTATUS], a - ld hl, FrozenText - jp PrintText - -BurnedText: ; 3f3d8 (f:73d8) - TX_FAR _BurnedText - db "@" - -FrozenText: ; 3f3dd (f:73dd) - TX_FAR _FrozenText - db "@" - -CheckDefrost: ; 3f3e2 (f:73e2) - and a, FRZ ;are they frozen? - ret z ;return if so - ;not frozen - ld a, [$fff3] ;whose turn? - and a - jr nz, .opponent - ;player [attacker] - ld a, [W_PLAYERMOVETYPE] - sub a, FIRE - ret nz ;return if it isn't fire - ;type is fire - ld [W_ENEMYMONSTATUS], a ;set opponent status to 00 ["defrost" a frozen monster] - ld hl, $d8a8 ;status of first opponent monster in their roster - ld a, [W_ENEMYMONNUMBER] - ld bc, $002c ;$2C bytes per roster entry - call AddNTimes - xor a - ld [hl], a ;clear status in roster - ld hl, FireDefrostedText - jr .common -.opponent - ld a, [W_ENEMYMOVETYPE] ;same as above with addresses swapped - sub a, $14 - ret nz - ld [W_PLAYERMONSTATUS], a - ld hl, $d16f - ld a, [wPlayerMonNumber] - ld bc, $002c - call AddNTimes - xor a - ld [hl], a - ld hl, FireDefrostedText -.common - jp PrintText - -FireDefrostedText: ; 3f423 (f:7423) - TX_FAR _FireDefrostedText - db "@" - -Func_3f428: ; 3f428 (f:7428) - ld hl, wPlayerMonStatMods ; $cd1a - ld de, W_PLAYERMOVEEFFECT ; $cfd3 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3f439 - ld hl, wEnemyMonStatMods ; $cd2e - ld de, W_ENEMYMOVEEFFECT ; $cfcd -.asm_3f439 - ld a, [de] - sub $a - cp $8 - jr c, .asm_3f442 - sub $28 -.asm_3f442 - ld c, a - ld b, $0 - add hl, bc - ld b, [hl] - inc b - ld a, $d - cp b - jp c, Func_3f522 - ld a, [de] - cp $12 - jr c, .asm_3f45a - inc b - ld a, $d - cp b - jr nc, .asm_3f45a - ld b, a -.asm_3f45a - ld [hl], b - ld a, c - cp $4 - jr nc, asm_3f4ca - push hl - ld hl, $d026 - ld de, $cd12 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3f472 - ld hl, $cff7 - ld de, $cd26 -.asm_3f472 - push bc - sla c - ld b, $0 - add hl, bc - ld a, c - add e - ld e, a - jr nc, .asm_3f47e - inc d -.asm_3f47e - pop bc - ld a, [hld] - sub $e7 - jr nz, .asm_3f48a - ld a, [hl] - sbc $3 - jp z, Func_3f520 -.asm_3f48a - push hl - push bc - ld hl, StatModifierRatios ; $76cb - dec b - sla b - ld c, b - ld b, $0 - add hl, bc - pop bc - xor a - ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) - ld a, [de] - ld [$ff97], a - inc de - ld a, [de] - ld [$ff98], a - ld a, [hli] - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - call Multiply - ld a, [hl] - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - ld b, $4 - call Divide - pop hl - ld a, [$ff98] - sub $e7 - ld a, [$ff97] - sbc $3 - jp c, Func_3f4c3 - ld a, $3 - ld [$ff97], a - ld a, $e7 - ld [$ff98], a - -Func_3f4c3: ; 3f4c3 (f:74c3) - ld a, [$ff97] - ld [hli], a - ld a, [$ff98] - ld [hl], a - pop hl -asm_3f4ca: ; 3f4ca (f:74ca) - ld b, c - inc b - call Func_3f688 - ld hl, W_PLAYERBATTSTATUS2 ; $d063 - ld de, W_PLAYERMOVENUM ; $cfd2 - ld bc, $ccf7 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3f4e6 - ld hl, W_ENEMYBATTSTATUS2 ; $d068 - ld de, W_ENEMYMOVENUM ; $cfcc - ld bc, $ccf3 -.asm_3f4e6 - ld a, [de] - cp MINIMIZE - jr nz, .asm_3f4f9 - bit 4, [hl] - push af - push bc - ld hl, Func_79747 - ld b, BANK(Func_79747) - push de - call nz, Bankswitch - pop de -.asm_3f4f9 - call Func_3fba8 - ld a, [de] - cp MINIMIZE - jr nz, .asm_3f50e - pop bc - ld a, $1 - ld [bc], a - ld hl, Func_79771 - ld b, BANK(Func_79771) - pop af - call nz, Bankswitch -.asm_3f50e - ld a, [H_WHOSETURN] ; $fff3 - and a - call z, Func_3ee19 - ld hl, MonsStatsRoseText - call PrintText - call Func_3ed27 - jp Func_3ed64 - -Func_3f520: ; 3f520 (f:7520) - pop hl - dec [hl] - -Func_3f522: ; 3f522 (f:7522) - ld hl, NothingHappenedText - jp PrintText - -MonsStatsRoseText: ; 3f528 (f:7528) - TX_FAR _MonsStatsRoseText - db $08 ; asm - ld hl, GreatlyRoseText - ld a, [H_WHOSETURN] ; $fff3 - and a - ld a, [W_PLAYERMOVEEFFECT] ; $cfd3 - jr z, .asm_3f53b - ld a, [W_ENEMYMOVEEFFECT] ; $cfcd -.asm_3f53b - cp $12 - ret nc - ld hl, RoseText - ret - -GreatlyRoseText: ; 3f542 (f:7542) - db $0a - TX_FAR _GreatlyRoseText - -RoseText: ; 3f547 (f:7547) - TX_FAR _RoseText - db "@" - -Func_3f54c: ; 3f54c (f:754c) - ld hl, wEnemyMonStatMods ; $cd2e - ld de, W_PLAYERMOVEEFFECT ; $cfd3 - ld bc, W_ENEMYBATTSTATUS1 ; $d067 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3f572 - ld hl, wPlayerMonStatMods ; $cd1a - ld de, W_ENEMYMOVEEFFECT ; $cfcd - ld bc, W_PLAYERBATTSTATUS1 ; $d062 - ld a, [W_ISLINKBATTLE] ; $d12b - cp $4 - jr z, .asm_3f572 - call GenRandomInBattle - cp $40 - jp c, Func_3f65a -.asm_3f572 - call CheckTargetSubstitute - jp nz, Func_3f65a - ld a, [de] - cp $44 - jr c, .asm_3f58a - call GenRandomInBattle - cp $55 - jp nc, Func_3f650 - ld a, [de] - sub $44 - jr .asm_3f5a9 -.asm_3f58a - push hl - push de - push bc - call MoveHitTest - pop bc - pop de - pop hl - ld a, [W_MOVEMISSED] ; $d05f - and a - jp nz, Func_3f65a - ld a, [bc] - bit 6, a - jp nz, Func_3f65a - ld a, [de] - sub $12 - cp $8 - jr c, .asm_3f5a9 - sub $28 -.asm_3f5a9 - ld c, a - ld b, $0 - add hl, bc - ld b, [hl] - dec b - jp z, Func_3f650 - ld a, [de] - cp $24 - jr c, .asm_3f5bf - cp $44 - jr nc, .asm_3f5bf - dec b - jr nz, .asm_3f5bf - inc b -.asm_3f5bf - ld [hl], b - ld a, c - cp $4 - jr nc, asm_3f62c - push hl - push de - ld hl, $cff7 - ld de, $cd26 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3f5d8 - ld hl, $d026 - ld de, $cd12 -.asm_3f5d8 - push bc - sla c - ld b, $0 - add hl, bc - ld a, c - add e - ld e, a - jr nc, .asm_3f5e4 - inc d -.asm_3f5e4 - pop bc - ld a, [hld] - sub $1 - jr nz, .asm_3f5ef - ld a, [hl] - and a - jp z, Func_3f64d -.asm_3f5ef - push hl - push bc - ld hl, StatModifierRatios ; $76cb - dec b - sla b - ld c, b - ld b, $0 - add hl, bc - pop bc - xor a - ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) - ld a, [de] - ld [$ff97], a - inc de - ld a, [de] - ld [$ff98], a - ld a, [hli] - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - call Multiply - ld a, [hl] - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - ld b, $4 - call Divide - pop hl - ld a, [$ff98] - ld b, a - ld a, [$ff97] - or b - jp nz, Func_3f624 - ld [$ff97], a - ld a, $1 - ld [$ff98], a - -Func_3f624: ; 3f624 (f:7624) - ld a, [$ff97] - ld [hli], a - ld a, [$ff98] - ld [hl], a - pop de - pop hl -asm_3f62c: ; 3f62c (f:762c) - ld b, c - inc b - push de - call Func_3f688 - pop de - ld a, [de] - cp $44 - jr nc, .asm_3f63b - call Func_3fb89 -.asm_3f63b - ld a, [H_WHOSETURN] ; $fff3 - and a - call nz, Func_3ee19 - ld hl, MonsStatsFellText - call PrintText - call Func_3ed27 - jp Func_3ed64 - -Func_3f64d: ; 3f64d (f:764d) - pop de - pop hl - inc [hl] - -Func_3f650: ; 3f650 (f:7650) - ld a, [de] - cp $44 - ret nc - ld hl, NothingHappenedText - jp PrintText - -Func_3f65a: ; 3f65a (f:765a) - ld a, [de] - cp $44 - ret nc - jp Func_3fb4e - -MonsStatsFellText: ; 3f661 (f:7661) - TX_FAR _MonsStatsFellText - db $08 ; asm - ld hl, FellText - ld a, [H_WHOSETURN] ; $fff3 - and a - ld a, [W_PLAYERMOVEEFFECT] ; $cfd3 - jr z, .asm_3f674 - ld a, [W_ENEMYMOVEEFFECT] ; $cfcd -.asm_3f674 - cp $1a - ret c - cp $44 - ret nc - ld hl, GreatlyFellText - ret - -GreatlyFellText: ; 3f67e (f:767e) - db $0a - TX_FAR _GreatlyFellText - -FellText: ; 3f683 (f:7683) - TX_FAR _FellText - db "@" - -Func_3f688: ; 3f688 (f:7688) - ld hl, StatsTextStrings - ld c, $50 -.asm_3f68d - dec b - jr z, .asm_3f696 -.asm_3f690 - ld a, [hli] - cp c - jr z, .asm_3f68d - jr .asm_3f690 -.asm_3f696 - ld de, $cf4b - ld bc, $a - jp CopyData - -StatsTextStrings: ; 3f69f (f:769f) - db "ATTACK@" - db "DEFENSE@" - db "SPEED@" - db "SPECIAL@" - db "ACCURACY@" - db "EVADE@" - -StatModifierRatios: ; 3f6cb (f:76cb) -; first byte is numerator, second byte is denominator - db 25, 100 ; 0.25 - db 28, 100 ; 0.28 - db 33, 100 ; 0.33 - db 40, 100 ; 0.40 - db 50, 100 ; 0.50 - db 66, 100 ; 0.66 - db 1, 1 ; 1.00 - db 15, 10 ; 1.50 - db 2, 1 ; 2.00 - db 25, 10 ; 2.50 - db 3, 1 ; 3.00 - db 35, 10 ; 3.50 - db 4, 1 ; 4.00 - -Func_3f6e5: ; 3f6e5 (f:76e5) - ld hl, W_PLAYERBATTSTATUS1 - ld de, W_NUMHITS - ld bc, $d06a - ld a, [H_WHOSETURN] - and a - jr z, .asm_3f6fc - ld hl, W_ENEMYBATTSTATUS1 - ld de, $cd05 - ld bc, $d06f -.asm_3f6fc - set 0, [hl] - xor a - ld [de], a - inc de - ld [de], a - ld [W_PLAYERMOVEEFFECT], a - ld [W_ENEMYMOVEEFFECT], a - call GenRandomInBattle - and $1 - inc a - inc a - ld [bc], a - ld a, [H_WHOSETURN] - add $ae - jp Func_3fb96 - -Func_3f717: ; 3f717 (f:7717) - ld hl, W_PLAYERBATTSTATUS1 ; $d062 - ld de, $d06a - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3f728 - ld hl, W_ENEMYBATTSTATUS1 ; $d067 - ld de, $d06f -.asm_3f728 - set 1, [hl] - call GenRandomInBattle - and $1 - inc a - inc a - ld [de], a - ld a, [H_WHOSETURN] ; $fff3 - add $b0 - jp Func_3fb96 - -Func_3f739: ; 3f739 (f:7739) - ld a, [H_WHOSETURN] ; $fff3 - and a - jr nz, .asm_3f791 - ld a, [W_ISINBATTLE] ; $d057 - dec a - jr nz, .asm_3f77e - ld a, [W_CURENEMYLVL] ; $d127 - ld b, a - ld a, [W_PLAYERMONLEVEL] ; $d022 - cp b - jr nc, .asm_3f76e - add b - ld c, a - inc c -.asm_3f751 - call GenRandomInBattle - cp c - jr nc, .asm_3f751 - srl b - srl b - cp b - jr nc, .asm_3f76e - ld c, $32 - call DelayFrames - ld a, [W_PLAYERMOVENUM] ; $cfd2 - cp TELEPORT - jp nz, PrintDidntAffectText - jp PrintItFailedText -.asm_3f76e - call ReadPlayerMonCurHPAndStatus - xor a - ld [$cc5b], a - inc a - ld [$d078], a - ld a, [W_PLAYERMOVENUM] ; $cfd2 - jr .asm_3f7e4 -.asm_3f77e - ld c, $32 - call DelayFrames - ld hl, IsUnaffectedText - ld a, [W_PLAYERMOVENUM] ; $cfd2 - cp TELEPORT - jp nz, PrintText - jp PrintItFailedText -.asm_3f791 - ld a, [W_ISINBATTLE] ; $d057 - dec a - jr nz, .asm_3f7d1 - ld a, [W_PLAYERMONLEVEL] ; $d022 - ld b, a - ld a, [W_CURENEMYLVL] ; $d127 - cp b - jr nc, .asm_3f7c1 - add b - ld c, a - inc c -.asm_3f7a4 - call GenRandomInBattle - cp c - jr nc, .asm_3f7a4 - srl b - srl b - cp b - jr nc, .asm_3f7c1 - ld c, $32 - call DelayFrames - ld a, [W_ENEMYMOVENUM] ; $cfcc - cp TELEPORT - jp nz, PrintDidntAffectText - jp PrintItFailedText -.asm_3f7c1 - call ReadPlayerMonCurHPAndStatus - xor a - ld [$cc5b], a - inc a - ld [$d078], a - ld a, [W_ENEMYMOVENUM] ; $cfcc - jr .asm_3f7e4 -.asm_3f7d1 - ld c, $32 - call DelayFrames - ld hl, IsUnaffectedText - ld a, [W_ENEMYMOVENUM] ; $cfcc - cp TELEPORT - jp nz, PrintText - jp Func_3fb4e -.asm_3f7e4 - push af - call Func_3fbb9 - ld c, $14 - call DelayFrames - pop af - ld hl, RanText - cp TELEPORT - jr z, .asm_3f7ff - ld hl, RanScaredText - cp ROAR - jr z, .asm_3f7ff - ld hl, BlownAwayText -.asm_3f7ff - jp PrintText - -RanText: ; 3f802 (f:7802) - TX_FAR _RanText - db "@" - -RanScaredText: ; 3f807 (f:7807) - TX_FAR _RanScaredText - db "@" - -BlownAwayText: ; 3f80c (f:780c) - TX_FAR _BlownAwayText - db "@" - -Func_3f811: ; 3f811 (f:7811) - ld hl, W_PLAYERBATTSTATUS1 ; $d062 - ld de, $d06a - ld bc, W_NUMHITS ; $d074 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3f828 - ld hl, W_ENEMYBATTSTATUS1 ; $d067 - ld de, $d06f - ld bc, $cd05 -.asm_3f828 - bit 2, [hl] - ret nz - set 2, [hl] - ld hl, W_PLAYERMOVEEFFECT ; $cfd3 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3f838 - ld hl, W_ENEMYMOVEEFFECT ; $cfcd -.asm_3f838 - ld a, [hl] - cp $4d - jr z, .asm_3f856 - cp $2c - ld a, $2 - jr z, .asm_3f853 - call GenRandomInBattle - and $3 - cp $2 - jr c, .asm_3f851 - call GenRandomInBattle - and $3 -.asm_3f851 - inc a - inc a -.asm_3f853 - ld [de], a - ld [bc], a - ret -.asm_3f856 - ld a, $2 - ld [hl], a - jr .asm_3f853 - -Func_3f85b: ; 3f85b (f:785b) - call CheckTargetSubstitute - ret nz - ld hl, W_ENEMYBATTSTATUS1 ; $d067 - ld de, W_PLAYERMOVEEFFECT ; $cfd3 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3f870 - ld hl, W_PLAYERBATTSTATUS1 ; $d062 - ld de, W_ENEMYMOVEEFFECT ; $cfcd -.asm_3f870 - ld a, [de] - cp $1f - ld b, $1a - jr z, .asm_3f879 - ld b, $4d -.asm_3f879 - call GenRandomInBattle - cp b - ret nc - set 3, [hl] - call Func_3f9cf - ret - -Func_3f884: ; 3f884 (f:7884) - ld hl, Func_33f57 - ld b, BANK(Func_33f57) - jp Bankswitch - -TwoTurnAttackEffect: ; 3f88c (f:788c) - ld hl, W_PLAYERBATTSTATUS1 ; $d062 - ld de, W_PLAYERMOVEEFFECT ; $cfd3 - ld a, [H_WHOSETURN] ; $fff3 - and a - ld b, $ae - jr z, .asm_3f8a1 - ld hl, W_ENEMYBATTSTATUS1 ; $d067 - ld de, W_ENEMYMOVEEFFECT ; $cfcd - ld b, $af -.asm_3f8a1 - set 4, [hl] - ld a, [de] - dec de - cp $2b - jr nz, .asm_3f8ad - set 6, [hl] - ld b, $64 -.asm_3f8ad - ld a, [de] - cp $5b - jr nz, .asm_3f8b6 - set 6, [hl] - ld b, $c0 -.asm_3f8b6 - xor a - ld [$cc5b], a - ld a, b - call Func_3fbb9 - ld a, [de] - ld [wWhichTrade], a ; $cd3d - ld hl, TwoTurnAttackTexts - jp PrintText - -TwoTurnAttackTexts: ; 3f8c8 (f:78c8) - TX_FAR _MonName2Text - db $08 ; asm - ld a, [wWhichTrade] - cp RAZOR_WIND - ld hl, RazorwindText - jr z, .asm_3f8f8 - cp SOLARBEAM - ld hl, SolarBeamText - jr z, .asm_3f8f8 - cp SKULL_BASH - ld hl, SkullBashText - jr z, .asm_3f8f8 - cp SKY_ATTACK - ld hl, SkyAttackText - jr z, .asm_3f8f8 - cp FLY - ld hl, FlyText - jr z, .asm_3f8f8 - cp DIG - ld hl, DigText -.asm_3f8f8 - ret - -RazorwindText: ; 3f8f9 (f:78f9) - TX_FAR _RazorwindText - db "@" - -SolarBeamText: ; 3f8fe (f:78fe) - TX_FAR _SolarBeamText - db "@" - -SkullBashText: ; 3f903 (f:7903) - TX_FAR _SkullBashText - db "@" - -SkyAttackText: ; 3f908 (f:7908) - TX_FAR _SkyAttackText - db "@" - -FlyText: ; 3f90d (f:790d) - TX_FAR _FlyText - db "@" - -DigText: ; 3f912 (f:7912) - TX_FAR _DigText - db "@" - -Func_3f917: ; 3f917 (f:7917) - ld hl, W_PLAYERBATTSTATUS1 ; $d062 - ld de, $d06a - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3f928 - ld hl, W_ENEMYBATTSTATUS1 ; $d067 - ld de, $d06f -.asm_3f928 - bit 5, [hl] - ret nz - call Func_3f9cf - set 5, [hl] - call GenRandomInBattle - and $3 - cp $2 - jr c, .asm_3f93e - call GenRandomInBattle - and $3 -.asm_3f93e - inc a - ld [de], a - ret - -MistEffect: ; 3f941 (f:7941) - ld hl, _MistEffect - ld b, BANK(_MistEffect) - jp Bankswitch - -FocusEnergyEffect: ; 3f949 (f:7949) - ld hl, _FocusEnergyEffect - ld b, BANK(_FocusEnergyEffect) - jp Bankswitch - -RecoilEffect: ; 3f951 (f:7951) - ld hl, _RecoilEffect - ld b, BANK(_RecoilEffect) - jp Bankswitch - -Func_3f959: ; 3f959 (f:7959) - call GenRandomInBattle - cp $19 - ret nc - jr Func_3f96f - -Func_3f961: ; 3f961 (f:7961) - call CheckTargetSubstitute - jr nz, Func_3f9a6 - call MoveHitTest - ld a, [W_MOVEMISSED] ; $d05f - and a - jr nz, Func_3f9a6 - -Func_3f96f: ; 3f96f (f:796f) - ld a, [H_WHOSETURN] ; $fff3 - and a - ld hl, W_ENEMYBATTSTATUS1 ; $d067 - ld bc, $d070 - ld a, [W_PLAYERMOVEEFFECT] ; $cfd3 - jr z, .asm_3f986 - ld hl, W_PLAYERBATTSTATUS1 ; $d062 - ld bc, $d06b - ld a, [W_ENEMYMOVEEFFECT] ; $cfcd -.asm_3f986 - bit 7, [hl] - jr nz, Func_3f9a6 - set 7, [hl] - push af - call GenRandomInBattle - and $3 - inc a - inc a - ld [bc], a - pop af - cp $4c - call nz, Func_3fb89 - ld hl, ConfusedText - jp PrintText - -ConfusedText: ; 3f9a1 (f:79a1) - TX_FAR _ConfusedText - db "@" - -Func_3f9a6: ; 3f9a6 (f:79a6) - cp $4c - ret z - ld c, $32 - call DelayFrames - jp Func_3fb4e - -Func_3f9b1: ; 3f9b1 (f:79b1) - ld hl, Func_52601 - ld b, BANK(Func_52601) - jp Bankswitch - -Func_3f9b9: ; 3f9b9 (f:79b9) - ld hl, SubstituteEffectHandler - ld b, BANK(SubstituteEffectHandler) - jp Bankswitch - -Func_3f9c1: ; 3f9c1 (f:79c1) - ld hl, W_PLAYERBATTSTATUS2 ; $d063 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3f9cc - ld hl, W_ENEMYBATTSTATUS2 ; $d068 -.asm_3f9cc - set 5, [hl] - ret - -Func_3f9cf: ; 3f9cf (f:79cf) - push hl - ld hl, W_ENEMYBATTSTATUS2 ; $d068 - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3f9db - ld hl, W_PLAYERBATTSTATUS2 ; $d063 -.asm_3f9db - res 5, [hl] - pop hl - ret - -Func_3f9df: ; 3f9df (f:79df) - ld hl, W_PLAYERBATTSTATUS2 - ld a, [H_WHOSETURN] - and a - jr z, .player - ld hl, W_ENEMYBATTSTATUS2 -.player - set 6, [hl] - ret - -Func_3f9ed: ; 3f9ed (f:79ed) - ld c, $32 - call DelayFrames - call MoveHitTest - ld a, [W_MOVEMISSED] - and a - jr nz, .asm_3fa74 - ld a, [H_WHOSETURN] - and a - ld hl, W_PLAYERMONMOVES - ld a, [W_PLAYERBATTSTATUS1] - jr nz, .asm_3fa13 - ld a, [W_ISLINKBATTLE] - cp $4 - jr nz, .asm_3fa3a - ld hl, W_ENEMYMONMOVES - ld a, [W_ENEMYBATTSTATUS1] -.asm_3fa13 - bit 6, a - jr nz, .asm_3fa74 -.asm_3fa17 - push hl - call GenRandomInBattle - and $3 - ld c, a - ld b, $0 - add hl, bc - ld a, [hl] - pop hl - and a - jr z, .asm_3fa17 - ld d, a - ld a, [H_WHOSETURN] - and a - ld hl, W_PLAYERMONMOVES - ld a, [wPlayerMoveListIndex] - jr z, .asm_3fa5f - ld hl, W_ENEMYMONMOVES - ld a, [wEnemyMoveListIndex] - jr .asm_3fa5f -.asm_3fa3a - ld a, [W_ENEMYBATTSTATUS1] - bit 6, a - jr nz, .asm_3fa74 - ld a, [wCurrentMenuItem] - push af - ld a, $1 - ld [wMoveMenuType], a - call MoveSelectionMenu - call LoadScreenTilesFromBuffer1 - ld hl, W_ENEMYMONMOVES - ld a, [wCurrentMenuItem] - ld c, a - ld b, $0 - add hl, bc - ld d, [hl] - pop af - ld hl, W_PLAYERMONMOVES -.asm_3fa5f - ld c, a - ld b, $0 - add hl, bc - ld a, d - ld [hl], a - ld [$d11e], a - call GetMoveName - call Func_3fba8 - ld hl, LearnedMove2Text - jp PrintText -.asm_3fa74 - jp PrintItFailedText - -LearnedMove2Text: ; 3fa77 (f:7a77) - TX_FAR _LearnedMove2Text - db "@" - -LeechSeedEffect: ; 3fa7c (f:7a7c) - ld hl, _LeechSeedEffect - ld b, BANK(_LeechSeedEffect) - jp Bankswitch - -Func_3fa84: ; 3fa84 (f:7a84) - call Func_3fba8 - jp PrintNoEffectText - -DisableEffect: ; 3fa8a (f:7a8a) - call MoveHitTest - ld a, [W_MOVEMISSED] ; $d05f - and a - jr nz, .asm_3fb06 - ld de, W_ENEMYDISABLEDMOVE ; $d072 - ld hl, W_ENEMYMONMOVES - ld a, [H_WHOSETURN] ; $fff3 - and a - jr z, .asm_3faa4 - ld de, W_PLAYERDISABLEDMOVE ; $d06d - ld hl, W_PLAYERMONMOVES -.asm_3faa4 - ld a, [de] - and a - jr nz, .asm_3fb06 -.asm_3faa8 - push hl - call GenRandomInBattle - and $3 - ld c, a - ld b, $0 - add hl, bc - ld a, [hl] - pop hl - and a - jr z, .asm_3faa8 - ld [$d11e], a - push hl - ld a, [H_WHOSETURN] ; $fff3 - and a - ld hl, W_PLAYERMONPP ; $d02d - jr nz, .asm_3facf - ld a, [W_ISLINKBATTLE] ; $d12b - cp $4 - pop hl - jr nz, .asm_3fae1 - push hl - ld hl, W_ENEMYMONPP ; $cffe -.asm_3facf - push hl - ld a, [hli] - or [hl] - inc hl - or [hl] - inc hl - or [hl] - and $3f - pop hl - jr z, .asm_3fb05 - add hl, bc - ld a, [hl] - pop hl - and a - jr z, .asm_3faa8 -.asm_3fae1 - call GenRandomInBattle - and $7 - inc a - inc c - swap c - add c - ld [de], a - call Func_3fb89 - ld hl, $ccee - ld a, [H_WHOSETURN] ; $fff3 - and a - jr nz, .asm_3faf8 - inc hl -.asm_3faf8 - ld a, [$d11e] - ld [hl], a - call GetMoveName - ld hl, DisableText - jp PrintText -.asm_3fb05 - pop hl -.asm_3fb06 - jp PrintItFailedText - -DisableText: ; 3fb09 (f:7b09) - TX_FAR _DisableText - db "@" - -PayDayEffect: ; 3fb0e (f:7b0e) - ld hl, _PayDayEffect - ld b, BANK(_PayDayEffect) - jp Bankswitch - -ConversionEffect: ; 3fb16 (f:7b16) - ld hl, _ConversionEffect - ld b, BANK(_ConversionEffect) - jp Bankswitch - -HazeEffect: ; 3fb1e (f:7b1e) - ld hl, _HazeEffect - ld b, BANK(_HazeEffect) - jp Bankswitch - -Func_3fb26: ; 3fb26 (f:7b26) - ld hl, Func_3b9ec - ld b, BANK(Func_3b9ec) - jp Bankswitch - -Func_3fb2e: ; 3fb2e (f:7b2e) - ld hl, Func_3bab1 - ld b, BANK(Func_3bab1) - jp Bankswitch - -Func_3fb36: ; 3fb36 (f:7b36) - ld hl, Func_3bb97 - ld b, BANK(Func_3bb97) - jp Bankswitch - -NothingHappenedText: ; 3fb3e (f:7b3e) - TX_FAR _NothingHappenedText - db "@" - -PrintNoEffectText: ; 3fb43 (f:7b43) - ld hl, NoEffectText - jp PrintText - -NoEffectText: ; 3fb49 (f:7b49) - TX_FAR _NoEffectText - db "@" - -Func_3fb4e: ; 3fb4e (f:7b4e) - ld a, [$ccf4] - and a - ret nz - -PrintItFailedText: ; 3fb53 (f:7b53) - ld hl, ItFailedText - jp PrintText - -ItFailedText: ; 3fb59 (f:7b59) - TX_FAR _ItFailedText - db "@" - -PrintDidntAffectText: ; 3fb5e (f:7b5e) - ld hl, DidntAffectText - jp PrintText - -DidntAffectText: ; 3fb64 (f:7b64) - TX_FAR _DidntAffectText - db "@" - -IsUnaffectedText: ; 3fb69 (f:7b69) - TX_FAR _IsUnaffectedText - db "@" - -PrintMayNotAttackText: ; 3fb6e (f:7b6e) - ld hl, MayNotAttackText - jp PrintText - -MayNotAttackText: ; 3fb74 (f:7b74) - TX_FAR _MayNotAttackText - db "@" - -CheckTargetSubstitute: ; 3fb79 (f:7b79) - push hl - ld hl, $d068 - ld a, [$fff3] ;whose turn? - and a - jr z, .next1 - ld hl, $d063 -.next1 - bit 4, [hl] ;test bit 4 in d063/d068 flags - pop hl - ret - -Func_3fb89: ; 3fb89 (f:7b89) - ld a, [H_WHOSETURN] ; $fff3 - and a - ld a, [W_PLAYERMOVENUM] ; $cfd2 - jr z, .asm_3fb94 - ld a, [W_ENEMYMOVENUM] ; $cfcc -.asm_3fb94 - and a - ret z - -Func_3fb96: ; 3fb96 (f:7b96) - ld [W_ANIMATIONID], a ; $d07c - ld a, [H_WHOSETURN] ; $fff3 - and a - ld a, $6 - jr z, .asm_3fba2 - ld a, $3 -.asm_3fba2 - ld [$cc5b], a - jp Func_3fbbc - -Func_3fba8: ; 3fba8 (f:7ba8) - xor a - ld [$cc5b], a - ld a, [H_WHOSETURN] ; $fff3 - and a - ld a, [W_PLAYERMOVENUM] ; $cfd2 - jr z, .asm_3fbb7 - ld a, [W_ENEMYMOVENUM] ; $cfcc -.asm_3fbb7 - and a - ret z - -Func_3fbb9: ; 3fbb9 (f:7bb9) - ld [W_ANIMATIONID], a ; $d07c - -Func_3fbbc: ; 3fbbc (f:7bbc) - push hl - push de - push bc - ld a, $8 - call Predef ; indirect jump to MoveAnimation (78d5e (1e:4d5e)) - pop bc - pop de - pop hl - ret - -SECTION "bank10",ROMX,BANK[$10] - -DisplayPokedexMenu_: ; 40000 (10:4000) - call GBPalWhiteOut - call ClearScreen - call UpdateSprites ; move sprites - ld a,[wListScrollOffset] - push af - xor a - ld [wCurrentMenuItem],a - ld [wListScrollOffset],a - ld [wLastMenuItem],a - inc a - ld [$d11e],a - ld [$ffb7],a -.setUpGraphics - ld b,$08 - call GoPAL_SET - ld hl,LoadPokedexTilePatterns - ld b,BANK(LoadPokedexTilePatterns) - call Bankswitch -.doPokemonListMenu - ld hl,wTopMenuItemY - ld a,3 - ld [hli],a ; top menu item Y - xor a - ld [hli],a ; top menu item X - inc a - ld [$cc37],a - inc hl - inc hl - ld a,6 - ld [hli],a ; max menu item ID - ld [hl],%00110011 ; menu watched keys (Left, Right, B button, A button) - call HandlePokedexListMenu - jr c,.goToSideMenu ; if the player chose a pokemon from the list -.exitPokedex - xor a - ld [$cc37],a - ld [wCurrentMenuItem],a - ld [wLastMenuItem],a - ld [$ffb7],a - ld [$cd3a],a - ld [$cd3b],a - pop af - ld [wListScrollOffset],a - call GBPalWhiteOutWithDelay3 - call GoPAL_SET_CF1C - jp ReloadMapData -.goToSideMenu - call HandlePokedexSideMenu - dec b - jr z,.exitPokedex ; if the player chose Quit - dec b - jr z,.doPokemonListMenu ; if pokemon not seen or player pressed B button - jp .setUpGraphics ; if pokemon data or area was shown - -; handles the menu on the lower right in the pokedex screen -; OUTPUT: -; b = reason for exiting menu -; 00: showed pokemon data or area -; 01: the player chose Quit -; 02: the pokemon has not been seen yet or the player pressed the B button -HandlePokedexSideMenu: ; 4006d (10:406d) - call PlaceUnfilledArrowMenuCursor - ld a,[wCurrentMenuItem] - push af - ld b,a - ld a,[wLastMenuItem] - push af - ld a,[wListScrollOffset] - push af - add b - inc a - ld [$d11e],a - ld a,[$d11e] - push af - ld a,[$cd3d] - push af - ld hl,wPokedexSeen - call IsPokemonBitSet - ld b,2 - jr z,.exitSideMenu - call PokedexToIndex - ld hl,wTopMenuItemY - ld a,10 - ld [hli],a ; top menu item Y - ld a,15 - ld [hli],a ; top menu item X - xor a - ld [hli],a ; current menu item ID - inc hl - ld a,3 - ld [hli],a ; max menu item ID - ld [hli],a ; menu watched keys (A button and B button) - xor a - ld [hli],a ; old menu item ID - ld [$cc37],a -.handleMenuInput - call HandleMenuInput - bit 1,a ; was the B button pressed? - ld b,2 - jr nz,.buttonBPressed - ld a,[wCurrentMenuItem] - and a - jr z,.choseData - dec a - jr z,.choseCry - dec a - jr z,.choseArea -.choseQuit - ld b,1 -.exitSideMenu - pop af - ld [$cd3d],a - pop af - ld [$d11e],a - pop af - ld [wListScrollOffset],a - pop af - ld [wLastMenuItem],a - pop af - ld [wCurrentMenuItem],a - push bc - FuncCoord 0,3 - ld hl,Coord - ld de,20 - ld bc,$7f0d ; 13 blank tiles - call DrawTileLine ; cover up the menu cursor in the pokemon list - pop bc - ret -.buttonBPressed - push bc - FuncCoord 15,10 - ld hl,Coord - ld de,20 - ld bc,$7f07 ; 7 blank tiles - call DrawTileLine ; cover up the menu cursor in the side menu - pop bc - jr .exitSideMenu -.choseData - call ShowPokedexDataInternal - ld b,0 - jr .exitSideMenu -; play pokemon cry -.choseCry - ld a,[$d11e] - call GetCryData ; get cry data - call PlaySound ; play sound - jr .handleMenuInput -.choseArea - ld a,$4a - call Predef ; display pokemon areas - ld b,0 - jr .exitSideMenu - -; handles the list of pokemon on the left of the pokedex screen -; sets carry flag if player presses A, unsets carry flag if player presses B -HandlePokedexListMenu: ; 40111 (10:4111) - xor a - ld [H_AUTOBGTRANSFERENABLED],a -; draw the horizontal line separating the seen and owned amounts from the menu - FuncCoord 15,8 - ld hl,Coord - ld a,$7a ; horizontal line tile - ld [hli],a - ld [hli],a - ld [hli],a - ld [hli],a - ld [hli],a - FuncCoord 14,0 - ld hl,Coord - ld [hl],$71 ; vertical line tile - FuncCoord 14,1 - ld hl,Coord - call DrawPokedexVerticalLine - FuncCoord 14,9 - ld hl,Coord - call DrawPokedexVerticalLine - ld hl,wPokedexSeen - ld b,19 - call CountSetBits - ld de,$d11e - FuncCoord 16,3 - ld hl,Coord - ld bc,$0103 - call PrintNumber ; print number of seen pokemon - ld hl,wPokedexOwned - ld b,19 - call CountSetBits - ld de,$d11e - FuncCoord 16,6 - ld hl,Coord - ld bc,$0103 - call PrintNumber ; print number of owned pokemon - FuncCoord 16,2 - ld hl,Coord - ld de,PokedexSeenText - call PlaceString - FuncCoord 16,5 - ld hl,Coord - ld de,PokedexOwnText - call PlaceString - FuncCoord 1,1 - ld hl,Coord - ld de,PokedexContentsText - call PlaceString - FuncCoord 16,10 - ld hl,Coord - ld de,PokedexMenuItemsText - call PlaceString -; find the highest pokedex number among the pokemon the player has seen - ld hl,wPokedexSeen + 18 - ld b,153 -.maxSeenPokemonLoop - ld a,[hld] - ld c,8 -.maxSeenPokemonInnerLoop - dec b - sla a - jr c,.storeMaxSeenPokemon - dec c - jr nz,.maxSeenPokemonInnerLoop - jr .maxSeenPokemonLoop -.storeMaxSeenPokemon - ld a,b - ld [$cd3d],a ; max seen pokemon -.loop - xor a - ld [H_AUTOBGTRANSFERENABLED],a - FuncCoord 4,2 - ld hl,Coord - ld bc,$0e0a - call ClearScreenArea - FuncCoord 1,3 - ld hl,Coord - ld a,[wListScrollOffset] - ld [$d11e],a - ld d,7 - ld a,[$cd3d] - cp a,7 - jr nc,.printPokemonLoop - ld d,a - dec a - ld [wMaxMenuItem],a -; loop to print pokemon pokedex numbers and names -; if the player has owned the pokemon, it puts a pokeball beside the name -.printPokemonLoop - ld a,[$d11e] - inc a - ld [$d11e],a - push af - push de - push hl - ld de,-20 - add hl,de - ld de,$d11e - ld bc,$8103 - call PrintNumber ; print the pokedex number - ld de,20 - add hl,de - dec hl - push hl - ld hl,wPokedexOwned - call IsPokemonBitSet - pop hl - ld a," " - jr z,.writeTile - ld a,$72 ; pokeball tile -.writeTile - ld [hl],a ; put a pokeball next to pokemon that the player has owned - push hl - ld hl,wPokedexSeen - call IsPokemonBitSet - jr nz,.getPokemonName ; if the player has seen the pokemon - ld de,.dashedLine ; print a dashed line in place of the name if the player hasn't seen the pokemon - jr .skipGettingName -.dashedLine ; for unseen pokemon in the list - db "----------@" -.getPokemonName - call PokedexToIndex - call GetMonName -.skipGettingName - pop hl - inc hl - call PlaceString - pop hl - ld bc,2 * 20 - add hl,bc - pop de - pop af - ld [$d11e],a - dec d - jr nz,.printPokemonLoop - ld a,01 - ld [H_AUTOBGTRANSFERENABLED],a - call Delay3 - call GBPalNormal - call HandleMenuInput - bit 1,a ; was the B button pressed? - jp nz,.buttonBPressed -.checkIfUpPressed - bit 6,a ; was Up pressed? - jr z,.checkIfDownPressed -.upPressed ; scroll up one row - ld a,[wListScrollOffset] - and a - jp z,.loop - dec a - ld [wListScrollOffset],a - jp .loop -.checkIfDownPressed - bit 7,a ; was Down pressed? - jr z,.checkIfRightPressed -.downPressed ; scroll down one row - ld a,[$cd3d] - cp a,7 - jp c,.loop - sub a,7 - ld b,a - ld a,[wListScrollOffset] - cp b - jp z,.loop - inc a - ld [wListScrollOffset],a - jp .loop -.checkIfRightPressed - bit 4,a ; was Right pressed? - jr z,.checkIfLeftPressed -.rightPressed ; scroll down 7 rows - ld a,[$cd3d] - cp a,7 - jp c,.loop - sub a,6 - ld b,a - ld a,[wListScrollOffset] - add a,7 - ld [wListScrollOffset],a - cp b - jp c,.loop - dec b - ld a,b - ld [wListScrollOffset],a - jp .loop -.checkIfLeftPressed ; scroll up 7 rows - bit 5,a ; was Left pressed? - jr z,.buttonAPressed -.leftPressed - ld a,[wListScrollOffset] - sub a,7 - ld [wListScrollOffset],a - jp nc,.loop - xor a - ld [wListScrollOffset],a - jp .loop -.buttonAPressed - scf - ret -.buttonBPressed - and a - ret - -DrawPokedexVerticalLine: ; 4028e (10:428e) - ld c,9 ; height of line - ld de,20 ; width of screen - ld a,$71 ; vertical line tile -.loop - ld [hl],a - add hl,de - xor a,1 ; toggle between vertical line tile and box tile - dec c - jr nz,.loop - ret - -PokedexSeenText: ; 4029d (10:429d) - db "SEEN@" - -PokedexOwnText: ; 402a2 (10:42a2) - db "OWN@" - -PokedexContentsText: ; 402a6 (10:42a6) - db "CONTENTS@" - -PokedexMenuItemsText: ; 402af (10:42af) - db "DATA" - next "CRY" - next "AREA" - next "QUIT@" - -; tests if a pokemon's bit is set in the seen or owned pokemon bit fields -; INPUT: -; [$d11e] = pokedex number -; hl = address of bit field -IsPokemonBitSet: ; 402c2 (10:42c2) - ld a,[$d11e] - dec a - ld c,a - ld b,2 - ld a,$10 - call Predef - ld a,c - and a - ret - -; function to display pokedex data from outside the pokedex -ShowPokedexData: ; 402d1 (10:42d1) - call GBPalWhiteOutWithDelay3 - call ClearScreen - call UpdateSprites - ld hl, LoadPokedexTilePatterns - ld b, BANK(LoadPokedexTilePatterns) - call Bankswitch ; load pokedex tiles - -; function to display pokedex data from inside the pokedex -ShowPokedexDataInternal: ; 402e2 (10:42e2) - ld hl,$d72c - set 1,[hl] - ld a,$33 ; 3/7 volume - ld [$ff24],a - call GBPalWhiteOut ; zero all palettes - call ClearScreen - ld a,[$d11e] ; pokemon ID - ld [$cf91],a - push af - ld b,04 - call GoPAL_SET - pop af - ld [$d11e],a - ld a,[$ffd7] - push af - xor a - ld [$ffd7],a - FuncCoord 0,0 - ld hl,Coord - ld de,1 - ld bc,$6414 - call DrawTileLine ; draw top border - FuncCoord 0,17 - ld hl,Coord - ld b,$6f - call DrawTileLine ; draw bottom border - FuncCoord 0,1 - ld hl,Coord - ld de,20 - ld bc,$6610 - call DrawTileLine ; draw left border - FuncCoord 19,1 - ld hl,Coord - ld b,$67 - call DrawTileLine ; draw right border - FuncCoord 0,0 - ld a,$63 ; upper left corner tile - ld [Coord],a - FuncCoord 19,0 - ld a,$65 ; upper right corner tile - ld [Coord],a - FuncCoord 0,17 - ld a,$6c ; lower left corner tile - ld [Coord],a - FuncCoord 19,17 - ld a,$6e ; lower right corner tile - ld [Coord],a - FuncCoord 0,9 - ld hl,Coord - ld de,PokedexDataDividerLine - call PlaceString ; draw horizontal divider line - FuncCoord 9,6 - ld hl,Coord - ld de,HeightWeightText - call PlaceString - call GetMonName - FuncCoord 9,2 - ld hl,Coord - call PlaceString - ld hl,PokedexEntryPointers - ld a,[$d11e] - dec a - ld e,a - ld d,0 - add hl,de - add hl,de - ld a,[hli] - ld e,a - ld d,[hl] ; de = address of pokedex entry - FuncCoord 9,4 - ld hl,Coord - call PlaceString ; print species name - ld h,b - ld l,c - push de - ld a,[$d11e] - push af - call IndexToPokedex - FuncCoord 2,8 - ld hl,Coord - ld a, "№" - ld [hli],a - ld a,$f2 - ld [hli],a - ld de,$d11e - ld bc,$8103 - call PrintNumber ; print pokedex number - ld hl,wPokedexOwned - call IsPokemonBitSet - pop af - ld [$d11e],a - ld a,[$cf91] - ld [$d0b5],a - pop de - push af - push bc - push de - push hl - call Delay3 - call GBPalNormal - call GetMonHeader ; load pokemon picture location - FuncCoord 1,1 - ld hl,Coord - call LoadFlippedFrontSpriteByMonIndex ; draw pokemon picture - ld a,[$cf91] - call PlayCry ; play pokemon cry - pop hl - pop de - pop bc - pop af - ld a,c - and a - jp z,.waitForButtonPress ; if the pokemon has not been owned, don't print the height, weight, or description - inc de ; de = address of feet (height) - ld a,[de] ; reads feet, but a is overwritten without being used - FuncCoord 12,6 - ld hl,Coord - ld bc,$0102 - call PrintNumber ; print feet (height) - ld a,$60 ; feet symbol tile (one tick) - ld [hl],a - inc de - inc de ; de = address of inches (height) - FuncCoord 15,6 - ld hl,Coord - ld bc,$8102 - call PrintNumber ; print inches (height) - ld a,$61 ; inches symbol tile (two ticks) - ld [hl],a -; now print the weight (note that weight is stored in tenths of pounds internally) - inc de - inc de - inc de ; de = address of upper byte of weight - push de -; put weight in big-endian order at $ff8b - ld hl,$ff8b - ld a,[hl] ; save existing value of [$ff8b] - push af - ld a,[de] ; a = upper byte of weight - ld [hli],a ; store upper byte of weight in [$ff8b] - ld a,[hl] ; save existing value of [$ff8c] - push af - dec de - ld a,[de] ; a = lower byte of weight - ld [hl],a ; store lower byte of weight in [$ff8c] - FuncCoord 11,8 - ld de,$ff8b - ld hl,Coord - ld bc,$0205 ; no leading zeroes, right-aligned, 2 bytes, 5 digits - call PrintNumber ; print weight - FuncCoord 14,8 - ld hl,Coord - ld a,[$ff8c] - sub a,10 - ld a,[$ff8b] - sbc a,0 - jr nc,.next - ld [hl],"0" ; if the weight is less than 10, put a 0 before the decimal point -.next - inc hl - ld a,[hli] - ld [hld],a ; make space for the decimal point by moving the last digit forward one tile - ld [hl],$f2 ; decimal point tile - pop af - ld [$ff8c],a ; restore original value of [$ff8c] - pop af - ld [$ff8b],a ; restore original value of [$ff8b] - pop hl - inc hl ; hl = address of pokedex description text - FuncCoord 1,11 - ld bc,Coord - ld a,2 - ld [$fff4],a - call TextCommandProcessor ; print pokedex description text - xor a - ld [$fff4],a -.waitForButtonPress - call GetJoypadStateLowSensitivity - ld a,[$ffb5] - and a,%00000011 ; A button and B button - jr z,.waitForButtonPress - pop af - ld [$ffd7],a - call GBPalWhiteOut - call ClearScreen - call GoPAL_SET_CF1C - call LoadTextBoxTilePatterns - call GBPalNormal - ld hl,$d72c - res 1,[hl] - ld a,$77 ; max volume - ld [$ff24],a - ret - -HeightWeightText: ; 40448 (10:4448) - db "HT ?",$60,"??",$61,$4E,"WT ???lb@" - -; XXX does anything point to this? -Unknown_4045D: ; 4045d (10:445d) - db $54,$50 - -; horizontal line that divides the pokedex text description from the rest of the data -PokedexDataDividerLine: ; 4045f (10:445f) - db $68,$69,$6B,$69,$6B - db $69,$6B,$69,$6B,$6B - db $6B,$6B,$69,$6B,$69 - db $6B,$69,$6B,$69,$6A - db $50 - -; draws a line of tiles -; INPUT: -; b = tile ID -; c = number of tile ID's to write -; de = amount to destination address after each tile (1 for horizontal, 20 for vertical) -; hl = destination address -DrawTileLine: ; 40474 (10:4474) - push bc - push de -.loop - ld [hl],b - add hl,de - dec c - jr nz,.loop - pop de - pop bc - ret - -INCLUDE "data/pokedex_entries.asm" - -PokedexToIndex: ; 40ff9 (10:4ff9) - ; converts the Pokédex number at $D11E to an index - push bc - push hl - ld a,[$D11E] - ld b,a - ld c,0 - ld hl,PokedexOrder - -.loop ; go through the list until we find an entry with a matching dex number - inc c - ld a,[hli] - cp b - jr nz,.loop - - ld a,c - ld [$D11E],a - pop hl - pop bc - ret - -IndexToPokedex: ; 41010 (10:5010) - ; converts the indexédex number at $D11E to a Pokédex number - push bc - push hl - ld a,[$D11E] - dec a - ld hl,PokedexOrder - ld b,0 - ld c,a - add hl,bc - ld a,[hl] - ld [$D11E],a - pop hl - pop bc - ret - -INCLUDE "data/pokedex_order.asm" - -Func_410e2: ; 410e2 (10:50e2) - ld a, [wWhichTrade] ; $cd3d - ld [$cd5e], a - ld a, [wTrainerEngageDistance] - ld [$cd5f], a - ld de, PointerIDs_41138 ; $5138 - jr Func_41102 - -Func_410f3: ; 410f3 (10:50f3) - ld a, [wTrainerEngageDistance] - ld [$cd5e], a - ld a, [wTrainerSpriteOffset] - ld [$cd5f], a - ld de, PointerIDs_41149 - -Func_41102: ; 41102 (10:5102) - ld a, [W_OPTIONS] ; $d355 - push af - ld a, [$ffaf] - push af - ld a, [$ffae] - push af - xor a - ld [W_OPTIONS], a ; $d355 - ld [$ffaf], a - ld [$ffae], a - push de -.asm_41115 - pop de - ld a, [de] - cp $ff - jr z, .asm_4112d - inc de - push de - ld hl, PointerTable_4115f ; $515f - add a - ld c, a - ld b, $0 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld de, .asm_41115 ; $5115 - push de - jp [hl] -.asm_4112d - pop af - ld [$ffae], a - pop af - ld [$ffaf], a - pop af - ld [W_OPTIONS], a ; $d355 - ret - -; these bytes refer to the $00th through $10th pointer of PointerTable_4115f -PointerIDs_41138: ; 41138 (10:5138) - db $00,$01,$02,$03,$05,$07,$08,$09,$0A,$0B,$06,$08,$02,$04,$07,$0E,$FF - -PointerIDs_41149: ; 41149 (10:5149) - db $00,$08,$0D,$0B,$10,$05,$10,$08,$02,$04,$0F,$01,$02,$03,$10,$06,$10,$07,$08,$09,$0E,$FF - -PointerTable_4115f: ; 4115f (10:515f) - dw LoadTradingGFXAndMonNames - dw Func_41245 - dw Func_41298 - dw Func_412d2 - dw Func_41336 - dw Func_41376 - dw Func_413c6 - dw Func_41181 - dw Func_415c8 - dw Func_415fe - dw Func_41611 - dw Func_4162d - dw Func_4164c - dw Func_4165a - dw Func_4123b - dw Func_415df - dw Func_41217 - -Func_41181: ; 41181 (10:5181) - ld c, $64 - jp DelayFrames - -Func_41186: ; 41186 (10:5186) - ld a, $1 - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - call Delay3 - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ret - -Delay50: ; 41191 (10:5191) - ld c, $50 - jp DelayFrames - -Func_41196: ; 41196 (10:5196) - ld hl, wTileMap - ld bc, $168 - ld a, $7f - jp FillMemory - -LoadTradingGFXAndMonNames: ; 411a1 (10:51a1) - call Func_41196 - call DisableLCD - ld hl, TradingAnimationGraphics ; $69be - ld de, $9310 - ld bc, $310 - ld a, BANK(TradingAnimationGraphics) - call FarCopyData2 - ld hl, TradingAnimationGraphics2 ; $6cce - ld de, $87c0 - ld bc, $40 - ld a, BANK(TradingAnimationGraphics2) - call FarCopyData2 - ld hl, $9800 - ld bc, $800 - ld a, $7f - call FillMemory - call CleanLCD_OAM - ld a, $ff - ld [$cfcb], a - ld hl, $d730 - set 6, [hl] - ld a, [$cf1b] - and a - ld a, $e4 - jr z, .asm_411e5 - ld a, $f0 -.asm_411e5 - ld [rOBP0], a ; $ff48 - call EnableLCD - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ld a, [wWhichTrade] ; $cd3d - ld [$d11e], a - call GetMonName - ld hl, $cd6d - ld de, $cf4b - ld bc, $b - call CopyData - ld a, [$cd3e] - ld [$d11e], a - jp GetMonName - -Func_4120b: ; 4120b (10:520b) - ld a, $d0 - ld [rOBP1], a ; $ff49 - ld b, BANK(Func_7176c) - ld hl, Func_7176c - jp Bankswitch - -Func_41217: ; 41217 (10:5217) - ld hl, W_PLAYERNAME - ld de, wHPBarMaxHP - ld bc, $000b - call CopyData - ld hl, W_GRASSRATE - ld de, W_PLAYERNAME - ld bc, $000b - call CopyData - ld hl, wHPBarMaxHP - ld de, W_GRASSRATE - ld bc, $000b - jp CopyData - -Func_4123b: ; 4123b (10:523b) - xor a - call LoadGBPal - ld hl, $d730 - res 6, [hl] - ret - -Func_41245: ; 41245 (10:5245) - ld a, $ab - ld [rLCDC], a ; $ff40 - ld a, $50 - ld [$ffb0], a - ld a, $86 - ld [rWX], a ; $ff4b - ld [$ffae], a - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - FuncCoord 4, 0 ; $c3a4 - ld hl, Coord - ld b, $6 - ld c, $a - call TextBoxBorder - call Func_42769 - ld b, $98 - call CopyScreenTileBufferToVRAM - call ClearScreen - ld a, [wWhichTrade] ; $cd3d - call Func_415a4 - ld a, $7e -.asm_41273 - push af - call DelayFrame - pop af - ld [rWX], a ; $ff4b - ld [$ffae], a - dec a - dec a - and a - jr nz, .asm_41273 - call Delay50 - ld a, $ad - call Func_41676 - ld a, $aa - call Func_41676 - ld a, [wWhichTrade] ; $cd3d - call PlayCry - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ret - -Func_41298: ; 41298 (10:5298) - call Func_41196 - ld b, $98 - call CopyScreenTileBufferToVRAM - ld b, $8 - call GoPAL_SET - ld hl, $9c8c - call Func_414ae - ld a, $a0 - ld [$ffae], a - call DelayFrame - ld a, $8b - ld [rLCDC], a ; $ff40 - FuncCoord 6, 2 ; $c3ce - ld hl, Coord - ld b, $7 - call Func_41842 - call Func_41186 - ld a, (SFX_02_3d - SFX_Headers_02) / 3 - call PlaySound - ld c, $14 -.asm_412c8 - ld a, [$ffae] - add $4 - ld [$ffae], a - dec c - jr nz, .asm_412c8 - ret - -Func_412d2: ; 412d2 (10:52d2) - ld a, $ab - call Func_41676 - ld c, $a - call DelayFrames - ld a, $e4 - ld [rOBP0], a ; $ff48 - xor a - ld [$d09f], a - ld bc, $2060 -.asm_412e7 - push bc - xor a - ld de, UnknownOAM_4132e ; $532e - call WriteOAMBlock - ld a, [$d09f] - xor $1 - ld [$d09f], a - add $7e - ld hl, $c302 - ld de, $4 - ld c, e -.asm_41300 - ld [hl], a - add hl, de - dec c - jr nz, .asm_41300 - call Delay3 - pop bc - ld a, c - add $4 - ld c, a - cp $a0 - jr nc, .asm_41318 - ld a, (SFX_02_3c - SFX_Headers_02) / 3 - call PlaySound - jr .asm_412e7 -.asm_41318 - call CleanLCD_OAM - ld a, $1 - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - call ClearScreen - ld b, $98 - call CopyScreenTileBufferToVRAM - call Delay3 - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ret - -UnknownOAM_4132e: ; 4132e (10:532e) - db $7E,$00,$7E,$20 - db $7E,$40,$7E,$60 - -Func_41336: ; 41336 (10:5336) - ld a, $ac - call Func_41676 - call Func_415c8 - FuncCoord 4, 10 ; $c46c - ld hl, Coord - ld b, $6 - ld c, $a - call TextBoxBorder - call Func_427a7 - call Func_41186 - ld a, $1 - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ld a, [$cd3e] - call Func_415a4 - ld a, $ad - call Func_41676 - ld a, $1 - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ld a, [$cd3e] - call PlayCry - call Func_41181 - FuncCoord 4, 10 ; $c46c - ld hl, Coord - ld bc, $80c - call ClearScreenArea - jp Func_4164c - -Func_41376: ; 41376 (10:5376) - call Func_41411 - ld a, $1 - ld [$d08a], a - ld a, $e4 - ld [rOBP0], a ; $ff48 - ld a, $54 - ld [W_BASECOORDX], a ; $d081 - ld a, $1c - ld [W_BASECOORDY], a ; $d082 - ld a, [$cd5e] - ld [$cd5d], a - call Func_41505 - call Func_4142d - call Func_41186 - call Func_4149f - ld hl, $9c8c - call Func_414ae - ld b, $6 - call Func_414c5 - ld a, $1 - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - call Func_4149f - ld b, $4 - call Func_414c5 - call Func_4145c - ld b, $6 - call Func_414c5 - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - call Func_41525 - jp CleanLCD_OAM - -Func_413c6: ; 413c6 (10:53c6) - call Func_41411 - xor a - ld [$d08a], a - ld a, $64 - ld [W_BASECOORDX], a ; $d081 - ld a, $44 - ld [W_BASECOORDY], a ; $d082 - ld a, [$cd5f] - ld [$cd5d], a - call Func_41505 - call Func_4145c - call Func_41186 - call Func_4149f - ld hl, $9c94 - call Func_414ae - call Func_41525 - ld b, $6 - call Func_414c5 - ld a, $1 - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - call Func_4149f - ld b, $4 - call Func_414c5 - call Func_4142d - ld b, $6 - call Func_414c5 - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - jp CleanLCD_OAM - -Func_41411: ; 41411 (10:5411) - ld a, $1 - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - call ClearScreen - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - call Func_4120b - call DelayFrame - ld a, $ab - ld [rLCDC], a ; $ff40 - xor a - ld [$ffae], a - ld a, $90 - ld [$ffb0], a - ret - -Func_4142d: ; 4142d (10:542d) - call Func_41196 - FuncCoord 11, 4 ; $c3fb - ld hl, Coord - ld a, $5d - ld [hli], a - ld a, $5e - ld c, $8 -.asm_4143a - ld [hli], a - dec c - jr nz, .asm_4143a - FuncCoord 5, 3 ; $c3e1 - ld hl, Coord - ld b, $6 - call Func_41842 - FuncCoord 4, 12 ; $c494 - ld hl, Coord - ld b, $2 - ld c, $7 - call TextBoxBorder - FuncCoord 5, 14 ; $c4bd - ld hl, Coord - ld de, W_PLAYERNAME ; $d158 - call PlaceString - jp DelayFrame - -Func_4145c: ; 4145c (10:545c) - call Func_41196 - FuncCoord 0, 4 ; $c3f0 - ld hl, Coord - ld a, $5e - ld c, $e -.asm_41466 - ld [hli], a - dec c - jr nz, .asm_41466 - ld a, $5f - ld [hl], a - ld de, $14 - add hl, de - ld a, $61 - ld [hl], a - add hl, de - ld [hl], a - add hl, de - ld [hl], a - add hl, de - ld [hl], a - add hl, de - ld a, $60 - ld [hld], a - ld a, $5d - ld [hl], a - FuncCoord 7, 8 ; $c447 - ld hl, Coord - ld b, $6 - call Func_41842 - FuncCoord 6, 0 ; $c3a6 - ld hl, Coord - ld b, $2 - ld c, $7 - call TextBoxBorder - FuncCoord 7, 2 ; $c3cf - ld hl, Coord - ld de, W_GRASSRATE ; $d887 - call PlaceString - jp DelayFrame - -Func_4149f: ; 4149f (10:549f) - call Func_41196 - FuncCoord 0, 4 ; $c3f0 - ld hl, Coord - ld a, $5e - ld c, $14 -.asm_414a9 - ld [hli], a - dec c - jr nz, .asm_414a9 - ret - -Func_414ae: ; 414ae (10:54ae) - push hl - FuncCoord 0, 4 ; $c3f0 - ld hl, Coord - call ScheduleRowRedrawHelper - pop hl - ld a, h - ld [$ffd2], a - ld a, l - ld [H_SCREENEDGEREDRAWADDR], a ; $ffd1 - ld a, $2 - ld [H_SCREENEDGEREDRAW], a ; $ffd0 - ld c, $a - jp DelayFrames - -Func_414c5: ; 414c5 (10:54c5) - ld a, [$d08a] - ld e, a - ld d, $8 -.asm_414cb - ld a, e - dec a - jr z, .asm_414d5 - ld a, [$ffae] - sub $2 - jr .asm_414d9 -.asm_414d5 - ld a, [$ffae] - add $2 -.asm_414d9 - ld [$ffae], a - call DelayFrame - dec d - jr nz, .asm_414cb - call Func_414e8 - dec b - jr nz, Func_414c5 - ret - -Func_414e8: ; 414e8 (10:54e8) - push de - push bc - push hl - ld a, [rBGP] ; $ff47 - xor $3c - ld [rBGP], a ; $ff47 - ld hl, $c302 - ld de, $4 - ld c, $14 -.asm_414f9 - ld a, [hl] - xor $40 - ld [hl], a - add hl, de - dec c - jr nz, .asm_414f9 - pop hl - pop bc - pop de - ret - -Func_41505: ; 41505 (10:5505) - ld b, BANK(Func_71882) - ld hl, Func_71882 - call Bankswitch - call Func_41558 - -Func_41510: ; 41510 (10:5510) - ld hl, wOAMBuffer - ld c, $14 -.asm_41515 - ld a, [W_BASECOORDY] ; $d082 - add [hl] - ld [hli], a - ld a, [W_BASECOORDX] ; $d081 - add [hl] - ld [hli], a - inc hl - inc hl - dec c - jr nz, .asm_41515 - ret - -Func_41525: ; 41525 (10:5525) - ld a, [$d08a] - and a - jr z, .asm_41536 - ld bc, $400 - call .asm_4153f - ld bc, $a - jr .asm_4153f -.asm_41536 - ld bc, $f6 - call .asm_4153f - ld bc, $fc00 -.asm_4153f - ld a, b - ld [W_BASECOORDX], a ; $d081 - ld a, c - ld [W_BASECOORDY], a ; $d082 - ld d, $4 -.asm_41549 - call Func_41510 - call Func_414e8 - ld c, $8 - call DelayFrames - dec d - jr nz, .asm_41549 - ret - -Func_41558: ; 41558 (10:5558) - ld hl, OAMPointers_41574 ; $5574 - ld c, $4 - xor a -.asm_4155e - push bc - ld e, [hl] - inc hl - ld d, [hl] - inc hl - ld c, [hl] - inc hl - ld b, [hl] - inc hl - push hl - inc a - push af - call WriteOAMBlock - pop af - pop hl - pop bc - dec c - jr nz, .asm_4155e - ret - -OAMPointers_41574: ; 41574 (10:5574) - dw UnknownOAM_41584 - db $08,$08 - dw UnknownOAM_4158c - db $18,$08 - dw UnknownOAM_41594 - db $08,$18 - dw UnknownOAM_4159c - db $18,$18 - -UnknownOAM_41584: ; 41584 (10:5584) - db $38,$10,$39,$10 - db $3A,$10,$3B,$10 - -UnknownOAM_4158c: ; 4158c (10:558c) - db $39,$30,$38,$30 - db $3B,$30,$3A,$30 - -UnknownOAM_41594: ; 41594 (10:5594) - db $3A,$50,$3B,$50 - db $38,$50,$39,$50 - -UnknownOAM_4159c: ; 4159c (10:559c) - db $3B,$70,$3A,$70 - db $39,$70,$38,$70 - -Func_415a4: ; 415a4 (10:55a4) - ld [$cf91], a - ld [$d0b5], a - ld [$cf1d], a - ld b, $b - ld c, $0 - call GoPAL_SET - ld a, [H_AUTOBGTRANSFERENABLED] ; $ffba - xor $1 - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - call GetMonHeader - FuncCoord 7, 2 ; $c3cf - ld hl, Coord - call LoadFlippedFrontSpriteByMonIndex - ld c, $a - jp DelayFrames - -Func_415c8: ; 415c8 (10:55c8) - ld a, $1 - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - call ClearScreen - ld a, $e3 - ld [rLCDC], a ; $ff40 - ld a, $7 - ld [rWX], a ; $ff4b - xor a - ld [$ffb0], a - ld a, $90 - ld [$ffae], a - ret - -Func_415df: ; 415df (10:55df) - ld c, $32 - call DelayFrames -.asm_415e4 - call DelayFrame - ld a, [rWX] ; $ff4b - inc a - inc a - ld [rWX], a ; $ff4b - cp $a1 - jr nz, .asm_415e4 - call Func_41196 - ld c, $a - call DelayFrames - ld a, $7 - ld [rWX], a ; $ff4b - ret - -Func_415fe: ; 415fe (10:55fe) - ld hl, TradeWentToText - call PrintText - ld c, $c8 - call DelayFrames - jp Func_415df - -TradeWentToText: ; 4160c (10:560c) - TX_FAR _TradeWentToText - db "@" - -Func_41611: ; 41611 (10:5611) - ld hl, TradeForText - call PrintText - call Delay50 - ld hl, TradeSendsText - call PrintText - jp Delay50 - -TradeForText: ; 41623 (10:5623) - TX_FAR _TradeForText - db "@" - -TradeSendsText: ; 41628 (10:5628) - TX_FAR _TradeSendsText - db "@" - -Func_4162d: ; 4162d (10:562d) - ld hl, TradeWavesFarewellText - call PrintText - call Delay50 - ld hl, TradeTransferredText - call PrintText - call Delay50 - jp Func_415df - -TradeWavesFarewellText: ; 41642 (10:5642) - TX_FAR _TradeWavesFarewellText - db "@" - -TradeTransferredText: ; 41647 (10:5647) - TX_FAR _TradeTransferredText - db "@" - -Func_4164c: ; 4164c (10:564c) - ld hl, TradeTakeCareText - call PrintText - jp Delay50 - -TradeTakeCareText: ; 41655 (10:5655) - TX_FAR _TradeTakeCareText - db "@" - -Func_4165a: ; 4165a (10:565a) - ld hl, TradeWillTradeText - call PrintText - call Delay50 - ld hl, TradeforText - call PrintText - jp Delay50 - -TradeWillTradeText: ; 4166c (10:566c) - TX_FAR _TradeWillTradeText - db "@" - -TradeforText: ; 41671 (10:5671) - TX_FAR _TradeforText - db "@" - -Func_41676: ; 41676 (10:5676) - ld [W_ANIMATIONID], a ; $d07c - xor a - ld [$cc5b], a - ld a, $8 - jp Predef ; indirect jump to MoveAnimation (78d5e (1e:4d5e)) - -PlayIntro: ; 41682 (10:5682) - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - inc a - ld [H_AUTOBGTRANSFERENABLED], a - call Func_4188a - call PlayIntroScene - call GBFadeOut2 - xor a - ld [$ffae], a - ld [H_AUTOBGTRANSFERENABLED], a - call CleanLCD_OAM - call DelayFrame - ret - -PlayIntroScene: ; 4169d (10:569d) - ld b, $7 - call GoPAL_SET - ld a, %11100100 - ld [rBGP], a - ld [rOBP0], a - ld [rOBP1], a - xor a - ld [$ffae], a - ld b, $3 - call Func_4183f - ld a, 0 - ld [W_BASECOORDX], a - ld a, 80 - ld [W_BASECOORDY], a - ld bc, $606 - call Func_417c7 - ld de, $28ff - call Func_4180e - ret c - -; hip - ld a, (SFX_1f_5f - SFX_Headers_1f) / 3 - call PlaySound - xor a - ld [$d09f], a - ld de, IntroNidorinoAnimation1 - call AnimateIntroNidorino -; hop - ld a, (SFX_1f_60 - SFX_Headers_1f) / 3 - call PlaySound - ld de, IntroNidorinoAnimation2 - call AnimateIntroNidorino - ld c, $a - call CheckForUserInterruption - ret c - -; hip - ld a, (SFX_1f_5f - SFX_Headers_1f) / 3 - call PlaySound - ld de, IntroNidorinoAnimation1 - call AnimateIntroNidorino -; hop - ld a, (SFX_1f_60 - SFX_Headers_1f) / 3 - call PlaySound - ld de, IntroNidorinoAnimation2 - call AnimateIntroNidorino - ld c, $1e - call CheckForUserInterruption - ret c - -; raise - ld b, $4 - call Func_4183f - ld a, (SFX_1f_61 - SFX_Headers_1f) / 3 - call PlaySound - ld de, $401 - call Func_4180e - ld c, $1e - call CheckForUserInterruption - ret c - -; slash - ld b, $5 - call Func_4183f - ld a, (SFX_1f_62 - SFX_Headers_1f) / 3 - call PlaySound - ld de, $800 - call Func_4180e -; hip - ld a, (SFX_1f_5f - SFX_Headers_1f) / 3 - call PlaySound - ld a, $24 - ld [$d09f], a - ld de, IntroNidorinoAnimation3 - call AnimateIntroNidorino - ld c, $1e - call CheckForUserInterruption - ret c - - ld de, $401 - call Func_4180e - ld b, $3 - call Func_4183f - ld c, $3c - call CheckForUserInterruption - ret c - -; hip - ld a, (SFX_1f_5f - SFX_Headers_1f) / 3 - call PlaySound - xor a - ld [$d09f], a - ld de, IntroNidorinoAnimation4 ; $5931 - call AnimateIntroNidorino -; hop - ld a, (SFX_1f_60 - SFX_Headers_1f) / 3 - call PlaySound - ld de, IntroNidorinoAnimation5 ; $593c - call AnimateIntroNidorino - ld c, $14 - call CheckForUserInterruption - ret c - - ld a, $24 - ld [$d09f], a - ld de, IntroNidorinoAnimation6 ; $5947 - call AnimateIntroNidorino - ld c, $1e - call CheckForUserInterruption - ret c - -; lunge - ld a, (SFX_1f_5e - SFX_Headers_1f) / 3 - call PlaySound - ld a, $48 - ld [$d09f], a - ld de, IntroNidorinoAnimation7 ; $5950 - jp AnimateIntroNidorino - -AnimateIntroNidorino: ; 41793 (10:5793) - ld a, [de] - cp $50 - ret z - ld [W_BASECOORDY], a ; $d082 - inc de - ld a, [de] - ld [W_BASECOORDX], a ; $d081 - push de - ld c, $24 - call Func_417ae - ld c, 5 - call DelayFrames - pop de - inc de - jr AnimateIntroNidorino - -Func_417ae: ; 417ae (10:57ae) - ld hl, wOAMBuffer - ld a, [$d09f] - ld d, a -.asm_417b5 - ld a, [W_BASECOORDY] ; $d082 - add [hl] - ld [hli], a - ld a, [W_BASECOORDX] ; $d081 - add [hl] - ld [hli], a - ld a, d - ld [hli], a - inc hl - inc d - dec c - jr nz, .asm_417b5 - ret - -Func_417c7: ; 417c7 (10:57c7) - ld hl, wOAMBuffer - ld d, $0 -.asm_417cc - push bc - ld a, [W_BASECOORDY] ; $d082 - ld e, a -.asm_417d1 - ld a, e - add $8 - ld e, a - ld [hli], a - ld a, [W_BASECOORDX] ; $d081 - ld [hli], a - ld a, d - ld [hli], a - ld a, $80 - ld [hli], a - inc d - dec c - jr nz, .asm_417d1 - ld a, [W_BASECOORDX] ; $d081 - add $8 - ld [W_BASECOORDX], a ; $d081 - pop bc - dec b - jr nz, .asm_417cc - ret - -Func_417f0: ; 417f0 (10:57f0) - ld hl, $9c00 - ld bc, $240 - jr asm_417fe - -Func_417f8: ; 417f8 (10:57f8) - FuncCoord 0, 4 ; $c3f0 - ld hl, Coord - ld bc, $c8 -asm_417fe: ; 417fe (10:57fe) - ld [hl], $0 - inc hl - dec bc - ld a, b - or c - jr nz, asm_417fe - ret - -Func_41807: ; 41807 (10:5807) - ld a, $1 -.asm_41809 - ld [hli], a - dec c - jr nz, .asm_41809 - ret - -Func_4180e: ; 4180e (10:580e) - ld a, e - cp $ff - jr z, .asm_4181d - cp $1 - jr z, .asm_4182d - ld a, [$ffae] - dec a - dec a - jr .asm_41831 -.asm_4181d - push de - ld a, $2 - ld [W_BASECOORDX], a ; $d081 - xor a - ld [W_BASECOORDY], a ; $d082 - ld c, $24 - call Func_417ae - pop de -.asm_4182d - ld a, [$ffae] - inc a - inc a -.asm_41831 - ld [$ffae], a - push de - ld c, $2 - call CheckForUserInterruption - pop de - ret c - dec d - jr nz, Func_4180e - ret - -Func_4183f: ; 4183f (10:583f) - FuncCoord 13, 7 ; $c439 - ld hl, Coord - -Func_41842: ; 41842 (10:5842) - ld c, $0 - ld a, $31 - jp Predef ; indirect jump to Func_79dda - -Func_41849: ; 41849 (10:5849) - ld a, $33 - call Predef ; indirect jump to Func_79869 - ld a, b - jp PlaySound - -LoadIntroGraphics: ; 41852 (10:5852) - ld hl, FightIntroBackMon ; $5a99 - ld de, $9000 - ld bc, $600 - ld a, BANK(FightIntroBackMon) - call FarCopyData2 - ld hl, GameFreakIntro ; $5959 - ld de, $9600 - ld bc, $140 - ld a, BANK(GameFreakIntro) - call FarCopyData2 - ld hl, GameFreakIntro ; $5959 - ld de, $8800 - ld bc, $140 - ld a, BANK(GameFreakIntro) - call FarCopyData2 - ld hl, FightIntroFrontMon ; $6099 - ld de, $8000 - ld bc, $6c0 - ld a, BANK(FightIntroFrontMon) - jp FarCopyData2 - -Func_4188a: ; 4188a (10:588a) - ld b, $c - call GoPAL_SET - ld b, BANK(Func_4538) - ld hl, Func_4538 - call Bankswitch - ld a, $e4 - ld [rBGP], a ; $ff47 - ld c, $b4 - call DelayFrames - call ClearScreen - call DisableLCD - xor a - ld [W_CUROPPONENT], a ; $d059 - call Func_418e9 - call LoadIntroGraphics - call EnableLCD - ld hl, rLCDC ; $ff40 - res 5, [hl] - set 3, [hl] - ld c, $40 - call DelayFrames - ld b, BANK(AnimateShootingStar) - ld hl, AnimateShootingStar - call Bankswitch - push af - pop af - jr c, .asm_418d0 - ld c, $28 - call DelayFrames -.asm_418d0 - ld a, Bank(Func_7d8ea) - ld [$c0ef], a - ld [$c0f0], a - ld a, MUSIC_INTRO_BATTLE - ld [$c0ee], a - call PlaySound - call Func_417f8 - call CleanLCD_OAM - jp Delay3 - -Func_418e9: ; 418e9 (10:58e9) - call Func_417f0 - ld hl, wTileMap - ld c, $50 - call Func_41807 - FuncCoord 0, 14 ; $c4b8 - ld hl, Coord - ld c, $50 - call Func_41807 - ld hl, $9c00 - ld c, $80 - call Func_41807 - ld hl, $9dc0 - ld c, $80 - jp Func_41807 - -Func_4190c: ; 4190c (10:590c) - ret - -IntroNidorinoAnimation0: ; 4190d (10:590d) - db 0, 0 - db $50 - -IntroNidorinoAnimation1: ; 41910 (10:5910) -; This is a sequence of pixel movements for part of the Nidorino animation. This -; list describes how Nidorino should hop. -; First byte is y movement, second byte is x movement - db 0, 0 - db -2, 2 - db -1, 2 - db 1, 2 - db 2, 2 - db $50 ; list terminator - -IntroNidorinoAnimation2: ; 4191b (10:591b) -; This is a sequence of pixel movements for part of the Nidorino animation. -; First byte is y movement, second byte is x movement - db 0, 0 - db -2, -2 - db -1, -2 - db 1, -2 - db 2, -2 - db $50 ; list terminator - -IntroNidorinoAnimation3: ; 41926 (10:5926) -; This is a sequence of pixel movements for part of the Nidorino animation. -; First byte is y movement, second byte is x movement - db 0, 0 - db -12, 6 - db -8, 6 - db 8, 6 - db 12, 6 - db $50 ; list terminator - -IntroNidorinoAnimation4: ; 41931 (10:5931) -; This is a sequence of pixel movements for part of the Nidorino animation. -; First byte is y movement, second byte is x movement - db 0, 0 - db -8, -4 - db -4, -4 - db 4, -4 - db 8, -4 - db $50 ; list terminator - -IntroNidorinoAnimation5: ; 4193c (10:593c) -; This is a sequence of pixel movements for part of the Nidorino animation. -; First byte is y movement, second byte is x movement - db 0, 0 - db -8, 4 - db -4, 4 - db 4, 4 - db 8, 4 - db $50 ; list terminator - -IntroNidorinoAnimation6: ; 41947 (10:5947) -; This is a sequence of pixel movements for part of the Nidorino animation. -; First byte is y movement, second byte is x movement - db 0, 0 - db 2, 0 - db 2, 0 - db 0, 0 - db $50 ; list terminator - -IntroNidorinoAnimation7: ; 41950 (10:5950) -; This is a sequence of pixel movements for part of the Nidorino animation. -; First byte is y movement, second byte is x movement - db -8, -16 - db -7, -14 - db -6, -12 - db -4, -10 - db $50 ; list terminator - -GameFreakIntro: ; 41959 (10:5959) - INCBIN "gfx/gamefreak_intro.h8.2bpp" - INCBIN "gfx/gamefreak_logo.2bpp" - ds $10 ; blank tile - -FightIntroBackMon: ; 41a99 (10:5a99) - INCBIN "gfx/intro_fight.2bpp" - -FightIntroFrontMon: ; 42099 (10:6099) - -IF _RED - INCBIN "gfx/red/intro_nido_1.6x6.2bpp" - INCBIN "gfx/red/intro_nido_2.6x6.2bpp" - INCBIN "gfx/red/intro_nido_3.6x6.2bpp" - ds $10 ; blank tile -ENDC -IF _BLUE - INCBIN "gfx/blue/intro_purin_1.6x6.2bpp" - INCBIN "gfx/blue/intro_purin_2.6x6.2bpp" - INCBIN "gfx/blue/intro_purin_3.6x6.2bpp" - ds $10 ; blank tile -ENDC - -; XXX what do these do -Func_42769: ; 42769 (10:6769) - FuncCoord 5,0 - ld hl,Coord - ld de,OTString67E5 - call PlaceString - ld a,[$CD3D] - ld [$D11E],a - ld a,$3A - call Predef - FuncCoord 9, 0 ; $c3a9 - ld hl,Coord - ld de,$D11E - ld bc,$8103 - call PrintNumber - FuncCoord 5,2 - ld hl,Coord - ld de,$CF4B - call PlaceString - FuncCoord 8,4 - ld hl,Coord - ld de,$CD41 - call PlaceString - FuncCoord 8, 6 ; $c420 - ld hl,Coord - ld de,$CD4C - ld bc,$8205 - jp PrintNumber - -Func_427a7: ; 427a7 (10:67a7) - FuncCoord 5,10 - ld hl,Coord - ld de,OTString67E5 - call PlaceString - ld a,[$CD3E] - ld [$D11E],a - ld a,$3A - call Predef - FuncCoord 9, 10 ; $c471 - ld hl,Coord - ld de,$D11E - ld bc,$8103 - call PrintNumber - FuncCoord 5,12 - ld hl,Coord - ld de,$CD6D - call PlaceString - FuncCoord 8,14 - ld hl,Coord - ld de,$CD4E - call PlaceString - FuncCoord 8, 16 ; $c4e8 - ld hl,Coord - ld de,$CD59 - ld bc,$8205 - jp PrintNumber - -OTString67E5: ; 427e5 (10:67e5) - db "──",$74,$F2,$4E - db $4E - db "OT/",$4E - db $73,"№",$F2,"@" - -SECTION "bank11",ROMX,BANK[$11] - -INCLUDE "data/mapHeaders/lavendertown.asm" - -INCLUDE "data/mapObjects/lavendertown.asm" - -LavenderTownBlocks: ; 44085 (11:4085) - INCBIN "maps/lavendertown.blk" - -ViridianPokecenterBlocks: ; 440df (11:40df) - INCBIN "maps/viridianpokecenter.blk" - -SafariZoneRestHouse1Blocks: ; 440fb (11:40fb) -SafariZoneRestHouse2Blocks: ; 440fb (11:40fb) -SafariZoneRestHouse3Blocks: ; 440fb (11:40fb) -SafariZoneRestHouse4Blocks: ; 440fb (11:40fb) - INCBIN "maps/safarizoneresthouse1.blk" - -LavenderTownScript: ; 4410b (11:410b) - jp EnableAutoTextBoxDrawing - -LavenderTownTextPointers: ; 4410e (11:410e) - dw LavenderTownText1 - dw LavenderTownText2 - dw LavenderTownText3 - dw LavenderTownText4 - dw LavenderTownText5 - dw MartSignText - dw PokeCenterSignText - dw LavenderTownText8 - dw LavenderTownText9 - -LavenderTownText1: ; 44120 (11:4120) - db $08 ; asm - ld hl, UnnamedText_4413c - call PrintText - call YesNoChoice - ld a, [$cc26] - and a - ld hl, UnnamedText_44146 - jr nz, .asm_40831 ; 0x44131 - ld hl, UnnamedText_44141 -.asm_40831 ; 0x44136 - call PrintText - jp TextScriptEnd - -UnnamedText_4413c: ; 4413c (11:413c) - TX_FAR _UnnamedText_4413c - db "@" - -UnnamedText_44141: ; 44141 (11:4141) - TX_FAR _UnnamedText_44141 - db "@" - -UnnamedText_44146: ; 44146 (11:4146) - TX_FAR _UnnamedText_44146 - db "@" - -LavenderTownText2: ; 4414b (11:414b) - TX_FAR _LavenderTownText2 - db "@" - -LavenderTownText3: ; 44150 (11:4150) - TX_FAR _LavenderTownText3 - db "@" - -LavenderTownText4: ; 44155 (11:4155) - TX_FAR _LavenderTownText4 - db "@" - -LavenderTownText5: ; 4415a (11:415a) - TX_FAR _LavenderTownText5 - db "@" - -LavenderTownText8: ; 4415f (11:415f) - TX_FAR _LavenderTownText8 - db "@" - -LavenderTownText9: ; 44164 (11:4164) - TX_FAR _LavenderTownText9 - db "@" - -DisplayDexRating: ; 44169 (11:4169) - ld hl, wPokedexSeen - ld b, $13 - call CountSetBits - ld a, [$D11E] ; result of CountSetBits (seen count) - ld [$FFDB], a - ld hl, wPokedexOwned - ld b, $13 - call CountSetBits - ld a, [$D11E] ; result of CountSetBits (own count) - ld [$FFDC], a - ld hl, DexRatingsTable -.findRating - ld a, [hli] - ld b, a - ld a, [$FFDC] ; number of pokemon owned - cp b - jr c, .foundRating - inc hl - inc hl - jr .findRating -.foundRating - ld a, [hli] - ld h, [hl] - ld l, a ; load text pointer into hl - ld a, [$D747] - bit 3, a - res 3, a - ld [$D747], a - jr nz, .label3 - push hl - ld hl, UnnamedText_441cc - call PrintText - pop hl - call PrintText - ld b, BANK(Func_7d13b) - ld hl, Func_7d13b - call Bankswitch - jp WaitForTextScrollButtonPress ; wait for button press -.label3 - ld de, $CC5B - ld a, [$FFDB] - ld [de], a - inc de - ld a, [$FFDC] - ld [de], a - inc de -.label4 - ld a, [hli] - cp a, $50 - jr z, .label5 - ld [de], a - inc de - jr .label4 -.label5 - ld [de], a - ret - -UnnamedText_441cc: ; 441cc (11:41cc) - TX_FAR _UnnamedText_441cc - db "@" - -DexRatingsTable: ; 441d1 (11:41d1) - db 10 - dw UnnamedText_44201 - db 20 - dw UnnamedText_44206 - db 30 - dw UnnamedText_4420b - db 40 - dw UnnamedText_44210 - db 50 - dw UnnamedText_44215 - db 60 - dw UnnamedText_4421a - db 70 - dw UnnamedText_4421f - db 80 - dw UnnamedText_44224 - db 90 - dw UnnamedText_44229 - db 100 - dw UnnamedText_4422e - db 110 - dw UnnamedText_44233 - db 120 - dw UnnamedText_44238 - db 130 - dw UnnamedText_4423d - db 140 - dw UnnamedText_44242 - db 150 - dw UnnamedText_44247 - db 152 - dw UnnamedText_4424c - -UnnamedText_44201: ; 44201 (11:4201) - TX_FAR _UnnamedText_44201 - db "@" - -UnnamedText_44206: ; 44206 (11:4206) - TX_FAR _UnnamedText_44206 - db "@" - -UnnamedText_4420b: ; 4420b (11:420b) - TX_FAR _UnnamedText_4420b - db "@" - -UnnamedText_44210: ; 44210 (11:4210) - TX_FAR _UnnamedText_44210 - db "@" - -UnnamedText_44215: ; 44215 (11:4215) - TX_FAR _UnnamedText_44215 - db "@" - -UnnamedText_4421a: ; 4421a (11:421a) - TX_FAR _UnnamedText_4421a - db "@" - -UnnamedText_4421f: ; 4421f (11:421f) - TX_FAR _UnnamedText_4421f - db "@" - -UnnamedText_44224: ; 44224 (11:4224) - TX_FAR _UnnamedText_44224 - db "@" - -UnnamedText_44229: ; 44229 (11:4229) - TX_FAR _UnnamedText_44229 - db "@" - -UnnamedText_4422e: ; 4422e (11:422e) - TX_FAR _UnnamedText_4422e - db "@" - -UnnamedText_44233: ; 44233 (11:4233) - TX_FAR _UnnamedText_44233 - db "@" - -UnnamedText_44238: ; 44238 (11:4238) - TX_FAR _UnnamedText_44238 - db "@" - -UnnamedText_4423d: ; 4423d (11:423d) - TX_FAR _UnnamedText_4423d - db "@" - -UnnamedText_44242: ; 44242 (11:4242) - TX_FAR _UnnamedText_44242 - db "@" - -UnnamedText_44247: ; 44247 (11:4247) - TX_FAR _UnnamedText_44247 - db "@" - -UnnamedText_4424c: ; 4424c (11:424c) - TX_FAR _UnnamedText_4424c - db "@" - -INCLUDE "data/mapHeaders/viridianpokecenter.asm" - -ViridianPokeCenterScript: ; 4425d (11:425d) - call Func_22fa - jp EnableAutoTextBoxDrawing - -ViridianPokecenterTextPointers: ; 44263 (11:4263) - dw ViridianPokeCenterText1 - dw ViridianPokeCenterText2 - dw ViridianPokeCenterText3 - dw ViridianPokeCenterText4 - -ViridianPokeCenterText1: ; 4426b (11:426b) - db $ff - -ViridianPokeCenterText2: ; 4426c (11:426c) - TX_FAR _ViridianPokeCenterText1 - db "@" - -ViridianPokeCenterText3: ; 44271 (11:4271) - TX_FAR _ViridianPokeCenterText3 - db "@" - -ViridianPokeCenterText4: ; 44276 (11:4276) - db $f6 - -INCLUDE "data/mapObjects/viridianpokecenter.asm" - -INCLUDE "data/mapHeaders/mansion1.asm" - -Mansion1Script: ; 442af (11:42af) - call Mansion1Subscript1 - call EnableAutoTextBoxDrawing - ld hl, Mansion1TrainerHeaders - ld de, Mansion1ScriptPointers - ld a, [W_MANSION1CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_MANSION1CURSCRIPT], a - ret - -Mansion1Subscript1: ; 442c5 (11:42c5) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - ret z - ld a, [$d796] - bit 0, a - jr nz, .asm_442ec ; 0x442d2 $18 - ld bc, $060c - call Func_4430b - ld bc, $0308 - call Func_44304 - ld bc, $080a - call Func_44304 - ld bc, $0d0d - jp Func_44304 -.asm_442ec - ld bc, $060c - call Func_44304 - ld bc, $0308 - call Func_4430b - ld bc, $080a - call Func_4430b - ld bc, $0d0d - jp Func_4430b - -Func_44304: ; 44304 (11:4304) - ld a, $2d - ld [$d09f], a - jr asm_44310 - -Func_4430b: ; 4430b (11:430b) - ld a, $e - ld [$d09f], a -asm_44310: ; 44310 (11:4310) - ld a, $17 - call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) - ret - -Func_44316: ; 44316 (11:4316) - ld a, [$c109] - cp $4 - ret nz - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, $4 - ld [H_SPRITEHEIGHT], a - jp DisplayTextID - -Mansion1ScriptPointers: ; 44326 (11:4326) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -Mansion1TextPointers: ; 4432c (11:432c) - dw Mansion1Text1 - dw Predef5CText - dw Predef5CText - dw Mansion1Text4 - -Mansion1TrainerHeaders: ; 44334 (11:4334) -Mansion1TrainerHeader0: ; 44334 (11:4334) - db $1 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d798 ; flag's byte - dw Mansion1BattleText2 ; 0x434b TextBeforeBattle - dw Mansion1AfterBattleText2 ; 0x4355 TextAfterBattle - dw Mansion1EndBattleText2 ; 0x4350 TextEndBattle - dw Mansion1EndBattleText2 ; 0x4350 TextEndBattle - - db $ff - -Mansion1Text1: ; 44341 (11:4341) - db $08 ; asm - ld hl, Mansion1TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -Mansion1BattleText2: ; 4434b (11:434b) - TX_FAR _Mansion1BattleText2 - db "@" - -Mansion1EndBattleText2: ; 44350 (11:4350) - TX_FAR _Mansion1EndBattleText2 - db "@" - -Mansion1AfterBattleText2: ; 44355 (11:4355) - TX_FAR _Mansion1AfterBattleText2 - db "@" - -Mansion1Text4: ; 4435a (11:435a) - db $8 - ld hl, MansionSwitchText - call PrintText - call YesNoChoice - ld a, [$cc26] - and a - jr nz, .asm_4438c ; 0x44368 $22 - ld a, $1 - ld [$cc3c], a - ld hl, $d126 - set 5, [hl] - ld hl, MansionSwitchPressedText - call PrintText - ld a, (SFX_02_57 - SFX_Headers_02) / 3 - call PlaySound - ld hl, $d796 - bit 0, [hl] - set 0, [hl] - jr z, .asm_44392 ; 0x44386 $a - res 0, [hl] - jr .asm_44392 ; 0x4438a $6 -.asm_4438c - ld hl, MansionSwitchNotPressedText - call PrintText -.asm_44392 - jp TextScriptEnd - -MansionSwitchText: ; 44395 (11:4395) - TX_FAR _MansionSwitchText - db "@" - -MansionSwitchPressedText: ; 4439a (11:439a) - TX_FAR _MansionSwitchPressedText - db "@" - -MansionSwitchNotPressedText: ; 4439f (11:439f) - TX_FAR _MansionSwitchNotPressedText - db "@" - -INCLUDE "data/mapObjects/mansion1.asm" - -Mansion1Blocks: ; 443fe (11:43fe) - INCBIN "maps/mansion1.blk" - -INCLUDE "data/mapHeaders/rocktunnel1.asm" - -RockTunnel1Script: ; 444dc (11:44dc) - call EnableAutoTextBoxDrawing - ld hl, RockTunnel1TrainerHeaders - ld de, RockTunnel1ScriptPointers - ld a, [W_ROCKTUNNEL1CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROCKTUNNEL1CURSCRIPT], a - ret - -RockTunnel1ScriptPointers: ; 444ef (11:44ef) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -RockTunnel1TextPointers: ; 444f5 (11:44f5) - dw RockTunnel1Text1 - dw RockTunnel1Text2 - dw RockTunnel1Text3 - dw RockTunnel1Text4 - dw RockTunnel1Text5 - dw RockTunnel1Text6 - dw RockTunnel1Text7 - dw RockTunnel1Text8 - -RockTunnel1TrainerHeaders: ; 44505 (11:4505) -RockTunnel1TrainerHeader1: ; 44505 (11:4505) - db $1 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7d2 ; flag's byte - dw RockTunnel1BattleText1 ; 0x4588 TextBeforeBattle - dw RockTunnel1AfterBattleText1 ; 0x4592 TextAfterBattle - dw RockTunnel1EndBattleText1 ; 0x458d TextEndBattle - dw RockTunnel1EndBattleText1 ; 0x458d TextEndBattle - -RockTunnel1TrainerHeader2: ; 44511 (11:4511) - db $2 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7d2 ; flag's byte - dw RockTunnel1BattleText2 ; 0x4597 TextBeforeBattle - dw RockTunnel1AfterBattleText2 ; 0x45a1 TextAfterBattle - dw RockTunnel1EndBattleText2 ; 0x459c TextEndBattle - dw RockTunnel1EndBattleText2 ; 0x459c TextEndBattle - -RockTunnel1TrainerHeader3: ; 4451d (11:451d) - db $3 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7d2 ; flag's byte - dw RockTunnel1BattleText3 ; 0x45a6 TextBeforeBattle - dw RockTunnel1AfterBattleText3 ; 0x45b0 TextAfterBattle - dw RockTunnel1EndBattleText3 ; 0x45ab TextEndBattle - dw RockTunnel1EndBattleText3 ; 0x45ab TextEndBattle - -RockTunnel1TrainerHeader4: ; 44529 (11:4529) - db $4 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7d2 ; flag's byte - dw RockTunnel1BattleText4 ; 0x45b5 TextBeforeBattle - dw RockTunnel1AfterBattleText4 ; 0x45bf TextAfterBattle - dw RockTunnel1EndBattleText4 ; 0x45ba TextEndBattle - dw RockTunnel1EndBattleText4 ; 0x45ba TextEndBattle - -RockTunnel1TrainerHeader5: ; 44535 (11:4535) - db $5 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7d2 ; flag's byte - dw RockTunnel1BattleText5 ; 0x45c4 TextBeforeBattle - dw RockTunnel1AfterBattleText5 ; 0x45ce TextAfterBattle - dw RockTunnel1EndBattleText5 ; 0x45c9 TextEndBattle - dw RockTunnel1EndBattleText5 ; 0x45c9 TextEndBattle - -RockTunnel1TrainerHeader6: ; 44541 (11:4541) - db $6 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7d2 ; flag's byte - dw RockTunnel1BattleText6 ; 0x45d3 TextBeforeBattle - dw RockTunnel1AfterBattleText6 ; 0x45dd TextAfterBattle - dw RockTunnel1EndBattleText6 ; 0x45d8 TextEndBattle - dw RockTunnel1EndBattleText6 ; 0x45d8 TextEndBattle - -RockTunnel1TrainerHeader7: ; 4454d (11:454d) - db $7 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7d2 ; flag's byte - dw RockTunnel1BattleText7 ; 0x45e2 TextBeforeBattle - dw RockTunnel1AfterBattleText7 ; 0x45ec TextAfterBattle - dw RockTunnel1EndBattleText7 ; 0x45e7 TextEndBattle - dw RockTunnel1EndBattleText7 ; 0x45e7 TextEndBattle - - db $ff - -RockTunnel1Text1: ; 4455a (11:455a) - db $8 - ld hl, RockTunnel1TrainerHeader1 ; $4505 - jr asm_0c916 ; 0x4455e $22 - -RockTunnel1Text2: ; 44560 (11:4560) - db $8 - ld hl, RockTunnel1TrainerHeader2 ; $4511 - jr asm_0c916 ; 0x44564 $1c - -RockTunnel1Text3: ; 44566 (11:4566) - db $8 - ld hl, RockTunnel1TrainerHeader3 ; $451d - jr asm_0c916 ; 0x4456a $16 - -RockTunnel1Text4: ; 4456c (11:456c) - db $8 - ld hl, RockTunnel1TrainerHeader4 ; $4529 - jr asm_0c916 ; 0x44570 $10 - -RockTunnel1Text5: ; 44572 (11:4572) - db $8 - ld hl, RockTunnel1TrainerHeader5 ; $4535 - jr asm_0c916 ; 0x44576 $a - -RockTunnel1Text6: ; 44578 (11:4578) - db $8 - ld hl, RockTunnel1TrainerHeader6 ; $4541 - jr asm_0c916 ; 0x4457c $4 - -RockTunnel1Text7: ; 4457e (11:457e) - db $8 - ld hl, RockTunnel1TrainerHeader7 ; $454d -asm_0c916: ; 44582 (11:4582) - call TalkToTrainer - jp TextScriptEnd - -RockTunnel1BattleText1: ; 44588 (11:4588) - TX_FAR _RockTunnel1BattleText1 - db "@" - -RockTunnel1EndBattleText1: ; 4458d (11:458d) - TX_FAR _RockTunnel1EndBattleText1 - db "@" - -RockTunnel1AfterBattleText1: ; 44592 (11:4592) - TX_FAR _RockTunnel1AfterBattleText1 - db "@" - -RockTunnel1BattleText2: ; 44597 (11:4597) - TX_FAR _RockTunnel1BattleText2 - db "@" - -RockTunnel1EndBattleText2: ; 4459c (11:459c) - TX_FAR _RockTunnel1EndBattleText2 - db "@" - -RockTunnel1AfterBattleText2: ; 445a1 (11:45a1) - TX_FAR _RockTunnel1AfterBattleText2 - db "@" - -RockTunnel1BattleText3: ; 445a6 (11:45a6) - TX_FAR _RockTunnel1BattleText3 - db "@" - -RockTunnel1EndBattleText3: ; 445ab (11:45ab) - TX_FAR _RockTunnel1EndBattleText3 - db "@" - -RockTunnel1AfterBattleText3: ; 445b0 (11:45b0) - TX_FAR _RockTunnel1AfterBattleText3 - db "@" - -RockTunnel1BattleText4: ; 445b5 (11:45b5) - TX_FAR _RockTunnel1BattleText4 - db "@" - -RockTunnel1EndBattleText4: ; 445ba (11:45ba) - TX_FAR _RockTunnel1EndBattleText4 - db "@" - -RockTunnel1AfterBattleText4: ; 445bf (11:45bf) - TX_FAR _RockTunnel1AfterBattleText4 - db "@" - -RockTunnel1BattleText5: ; 445c4 (11:45c4) - TX_FAR _RockTunnel1BattleText5 - db "@" - -RockTunnel1EndBattleText5: ; 445c9 (11:45c9) - TX_FAR _RockTunnel1EndBattleText5 - db "@" - -RockTunnel1AfterBattleText5: ; 445ce (11:45ce) - TX_FAR _RockTunnel1AfterBattleText5 - db "@" - -RockTunnel1BattleText6: ; 445d3 (11:45d3) - TX_FAR _RockTunnel1BattleText6 - db "@" - -RockTunnel1EndBattleText6: ; 445d8 (11:45d8) - TX_FAR _RockTunnel1EndBattleText6 - db "@" - -RockTunnel1AfterBattleText6: ; 445dd (11:45dd) - TX_FAR _RockTunnel1AfterBattleText6 - db "@" - -RockTunnel1BattleText7: ; 445e2 (11:45e2) - TX_FAR _RockTunnel1BattleText7 - db "@" - -RockTunnel1EndBattleText7: ; 445e7 (11:45e7) - TX_FAR _RockTunnel1EndBattleText7 - db "@" - -RockTunnel1AfterBattleText7: ; 445ec (11:45ec) - TX_FAR _RockTunnel1AfterBattleText7 - db "@" - -RockTunnel1Text8: ; 445f1 (11:45f1) - TX_FAR _RockTunnel1Text8 - db "@" - -INCLUDE "data/mapObjects/rocktunnel1.asm" - -RockTunnel1Blocks: ; 44675 (11:4675) - INCBIN "maps/rocktunnel1.blk" - -INCLUDE "data/mapHeaders/seafoamislands1.asm" - -SeafoamIslands1Script: ; 447e9 (11:47e9) - call EnableAutoTextBoxDrawing - ld hl, $d7e7 - set 0, [hl] - ld hl, wFlags_0xcd60 - bit 7, [hl] - res 7, [hl] - jr z, .asm_4483b ; 0x447f8 $41 - ld hl, Seafoam1HolesCoords - call CheckBoulderCoords - ret nc - ld hl, $d7e8 - ld a, [$cd3d] - cp $1 - jr nz, .asm_44819 ; 0x44809 $e - set 6, [hl] - ld a, $d7 - ld [$d079], a - ld a, $d9 - ld [$d07a], a - jr .asm_44825 ; 0x44817 $c -.asm_44819 - set 7, [hl] - ld a, $d8 - ld [$d079], a - ld a, $da - ld [$d07a], a -.asm_44825 - ld a, [$d079] - ld [$cc4d], a - ld a, $11 - call Predef - ld a, [$d07a] - ld [$cc4d], a - ld a, $15 - jp Predef -.asm_4483b - ld a, $9f - ld [$d71d], a - ld hl, Seafoam1HolesCoords - jp Func_46981 - -Seafoam1HolesCoords: ; 44846 (11:4846) - db $06,$11 - db $06,$18 - db $ff - -SeafoamIslands1TextPointers: ; 4484b (11:484b) - dw BoulderText - dw BoulderText - -INCLUDE "data/mapObjects/seafoamislands1.asm" - -SeafoamIslands1Blocks: ; 4489f (11:489f) - INCBIN "maps/seafoamislands1.blk" - -INCLUDE "data/mapHeaders/ssanne3.asm" - -SSAnne3Script: ; 44932 (11:4932) - jp EnableAutoTextBoxDrawing - -SSAnne3TextPointers: ; 44935 (11:4935) - dw SSAnne3Text1 - -SSAnne3Text1: ; 44937 (11:4937) - TX_FAR _SSAnne3Text1 - db "@" - -INCLUDE "data/mapObjects/ssanne3.asm" - -SSAnne3Blocks: ; 44956 (11:4956) - INCBIN "maps/ssanne3.blk" - -INCLUDE "data/mapHeaders/victoryroad3.asm" - -VictoryRoad3Script: ; 44980 (11:4980) - call VictoryRoad3Script_44996 - call EnableAutoTextBoxDrawing - ld hl, VictoryRoad3TrainerHeaders - ld de, VictoryRoad3ScriptPointers - ld a, [W_VICTORYROAD3CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_VICTORYROAD3CURSCRIPT], a - ret - -VictoryRoad3Script_44996: ; 44996 (11:4996) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - ret z - ld hl, $d813 - bit 0, [hl] - ret z - ld a, $1d - ld [$d09f], a - ld bc, $503 - ld a, $17 - jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) - -VictoryRoad3ScriptPointers: ; 449b1 (11:49b1) - dw VictoryRoad3Script0 - dw Func_324c - dw EndTrainerBattle - -VictoryRoad3Script0: ; 449b7 (11:49b7) - ld hl, wFlags_0xcd60 - bit 7, [hl] - res 7, [hl] - jp z, .asm_449fe - ld hl, .coordsData_449f9 ; $49f9 - call CheckBoulderCoords - jp nc, .asm_449fe - ld a, [wWhichTrade] ; $cd3d - cp $1 - jr nz, .asm_449dc - ld hl, $d126 - set 5, [hl] - ld hl, $d813 - set 0, [hl] - ret -.asm_449dc - ld hl, $d813 - bit 6, [hl] - set 6, [hl] - jr nz, .asm_449fe - ld a, $7a - ld [$cc4d], a - ld a, $11 - call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) - ld a, $60 - ld [$cc4d], a - ld a, $15 - jp Predef ; indirect jump to AddMissableObject (f1c8 (3:71c8)) - -.coordsData_449f9: ; 449f9 (11:49f9) - db $05,$03 - db $0F,$17 - db $FF - -.asm_449fe - ld a, $c2 - ld [$d71d], a - ld hl, .coordsData_449f9 ; $49f9 - call Func_46981 - ld a, [wWhichTrade] ; $cd3d - cp $1 - jr nz, .asm_44a1b - ld hl, $d72d - res 4, [hl] - ld hl, $d732 - res 4, [hl] - ret -.asm_44a1b - ld a, [$d72d] - bit 4, a - jp z, CheckFightingMapTrainers - ret - -VictoryRoad3TextPointers: ; 44a24 (11:4a24) - dw VictoryRoad3Text1 - dw VictoryRoad3Text2 - dw VictoryRoad3Text3 - dw VictoryRoad3Text4 - dw Predef5CText - dw Predef5CText - dw BoulderText - dw BoulderText - dw BoulderText - dw BoulderText - -VictoryRoad3TrainerHeaders: ; 44a38 (11:4a38) -VictoryRoad3TrainerHeader0: ; 44a38 (11:4a38) - db $1 ; flag's bit - db ($1 << 4) ; trainer's view range - dw $d813 ; flag's byte - dw VictoryRoad3BattleText2 ; 0x4a91 TextBeforeBattle - dw VictoryRoad3AfterBattleText2 ; 0x4a9b TextAfterBattle - dw VictoryRoad3EndBattleText2 ; 0x4a96 TextEndBattle - dw VictoryRoad3EndBattleText2 ; 0x4a96 TextEndBattle - -VictoryRoad3TrainerHeader2: ; 44a44 (11:4a44) - db $2 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d813 ; flag's byte - dw VictoryRoad3BattleText3 ; 0x4aa0 TextBeforeBattle - dw VictoryRoad3AfterBattleText3 ; 0x4aaa TextAfterBattle - dw VictoryRoad3EndBattleText3 ; 0x4aa5 TextEndBattle - dw VictoryRoad3EndBattleText3 ; 0x4aa5 TextEndBattle - -VictoryRoad3TrainerHeader3: ; 44a50 (11:4a50) - db $3 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d813 ; flag's byte - dw VictoryRoad3BattleText4 ; 0x4aaf TextBeforeBattle - dw VictoryRoad3AfterBattleText4 ; 0x4ab9 TextAfterBattle - dw VictoryRoad3EndBattleText4 ; 0x4ab4 TextEndBattle - dw VictoryRoad3EndBattleText4 ; 0x4ab4 TextEndBattle - -VictoryRoad3TrainerHeader4: ; 44a5c (11:4a5c) - db $4 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d813 ; flag's byte - dw VictoryRoad3BattleText5 ; 0x4abe TextBeforeBattle - dw VictoryRoad3AfterBattleText5 ; 0x4ac8 TextAfterBattle - dw VictoryRoad3EndBattleText5 ; 0x4ac3 TextEndBattle - dw VictoryRoad3EndBattleText5 ; 0x4ac3 TextEndBattle - - db $ff - -VictoryRoad3Text1: ; 44a69 (11:4a69) - db $08 ; asm - ld hl, VictoryRoad3TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -VictoryRoad3Text2: ; 44a73 (11:4a73) - db $08 ; asm - ld hl, VictoryRoad3TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -VictoryRoad3Text3: ; 44a7d (11:4a7d) - db $08 ; asm - ld hl, VictoryRoad3TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -VictoryRoad3Text4: ; 44a87 (11:4a87) - db $08 ; asm - ld hl, VictoryRoad3TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -VictoryRoad3BattleText2: ; 44a91 (11:4a91) - TX_FAR _VictoryRoad3BattleText2 - db "@" - -VictoryRoad3EndBattleText2: ; 44a96 (11:4a96) - TX_FAR _VictoryRoad3EndBattleText2 - db "@" - -VictoryRoad3AfterBattleText2: ; 44a9b (11:4a9b) - TX_FAR _VictoryRoad3AfterBattleText2 - db "@" - -VictoryRoad3BattleText3: ; 44aa0 (11:4aa0) - TX_FAR _VictoryRoad3BattleText3 - db "@" - -VictoryRoad3EndBattleText3: ; 44aa5 (11:4aa5) - TX_FAR _VictoryRoad3EndBattleText3 - db "@" - -VictoryRoad3AfterBattleText3: ; 44aaa (11:4aaa) - TX_FAR _VictoryRoad3AfterBattleText3 - db "@" - -VictoryRoad3BattleText4: ; 44aaf (11:4aaf) - TX_FAR _VictoryRoad3BattleText4 - db "@" - -VictoryRoad3EndBattleText4: ; 44ab4 (11:4ab4) - TX_FAR _VictoryRoad3EndBattleText4 - db "@" - -VictoryRoad3AfterBattleText4: ; 44ab9 (11:4ab9) - TX_FAR _VictoryRoad3AfterBattleText4 - db "@" - -VictoryRoad3BattleText5: ; 44abe (11:4abe) - TX_FAR _VictoryRoad3BattleText5 - db "@" - -VictoryRoad3EndBattleText5: ; 44ac3 (11:4ac3) - TX_FAR _VictoryRoad3EndBattleText5 - db "@" - -VictoryRoad3AfterBattleText5: ; 44ac8 (11:4ac8) - TX_FAR _VictoryRoad3AfterBattleText5 - db "@" - -INCLUDE "data/mapObjects/victoryroad3.asm" - -VictoryRoad3Blocks: ; 44b37 (11:4b37) - INCBIN "maps/victoryroad3.blk" - -INCLUDE "data/mapHeaders/rockethideout1.asm" - -RocketHideout1Script: ; 44bca (11:4bca) - call Func_44be0 - call EnableAutoTextBoxDrawing - ld hl, RocketHideout1TrainerHeaders - ld de, RocketHideout1ScriptPointers - ld a, [W_ROCKETHIDEOUT1CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROCKETHIDEOUT1CURSCRIPT], a - ret - -Func_44be0: ; 44be0 (11:4be0) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - ret z - ld a, [$d815] - bit 7, a - jr nz, .asm_44c01 - bit 5, a - jr nz, .asm_44bf7 - ld a, $54 - jr .asm_44c03 -.asm_44bf7 - ld a, (SFX_02_57 - SFX_Headers_02) / 3 - call PlaySound - ld hl, $d815 - bit 7, [hl] -.asm_44c01 - ld a, $e -.asm_44c03 - ld [$d09f], a - ld bc, $080c - ld a, $17 - jp Predef - -RocketHideout1ScriptPointers: ; 44c0e (11:4c0e) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -RocketHideout1TextPointers: ; 44c14 (11:4c14) - dw RocketHideout1Text1 - dw RocketHideout1Text2 - dw RocketHideout1Text3 - dw RocketHideout1Text4 - dw RocketHideout1Text5 - dw Predef5CText - dw Predef5CText - -RocketHideout1TrainerHeaders: ; 44c22 (11:4c22) -RocketHideout1TrainerHeader0: ; 44c22 (11:4c22) - db $1 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d815 ; flag's byte - dw RocketHideout1BattleText2 ; 0x4ca1 TextBeforeBattle - dw RocketHideout1AfterBattleTxt2 ; 0x4cab TextAfterBattle - dw RocketHideout1EndBattleText2 ; 0x4ca6 TextEndBattle - dw RocketHideout1EndBattleText2 ; 0x4ca6 TextEndBattle - -RocketHideout1TrainerHeader2: ; 44c2e (11:4c2e) - db $2 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d815 ; flag's byte - dw RocketHideout1BattleText3 ; 0x4cb0 TextBeforeBattle - dw RocketHideout1AfterBattleTxt3 ; 0x4cba TextAfterBattle - dw RocketHideout1EndBattleText3 ; 0x4cb5 TextEndBattle - dw RocketHideout1EndBattleText3 ; 0x4cb5 TextEndBattle - -RocketHideout1TrainerHeader3: ; 44c3a (11:4c3a) - db $3 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d815 ; flag's byte - dw RocketHideout1BattleText4 ; 0x4cbf TextBeforeBattle - dw RocketHideout1AfterBattleTxt4 ; 0x4cc9 TextAfterBattle - dw RocketHideout1EndBattleText4 ; 0x4cc4 TextEndBattle - dw RocketHideout1EndBattleText4 ; 0x4cc4 TextEndBattle - -RocketHideout1TrainerHeader4: ; 44c46 (11:4c46) - db $4 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d815 ; flag's byte - dw RocketHideout1BattleText5 ; 0x4cce TextBeforeBattle - dw RocketHideout1AfterBattleTxt5 ; 0x4cd8 TextAfterBattle - dw RocketHideout1EndBattleText5 ; 0x4cd3 TextEndBattle - dw RocketHideout1EndBattleText5 ; 0x4cd3 TextEndBattle - -RocketHideout1TrainerHeader5: ; 44c52 (11:4c52) - db $5 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d815 ; flag's byte - dw RocketHideout1BattleText6 ; 0x4cdd TextBeforeBattle - dw RocketHideout1AfterBattleTxt6 ; 0x4ce2 TextAfterBattle - dw RocketHideout1EndBattleText6 ; 0x4c91 TextEndBattle - dw RocketHideout1EndBattleText6 ; 0x4c91 TextEndBattle - - db $ff - -RocketHideout1Text1: ; 44c5f (11:4c5f) - db $08 ; asm - ld hl, RocketHideout1TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -RocketHideout1Text2: ; 44c69 (11:4c69) - db $08 ; asm - ld hl, RocketHideout1TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -RocketHideout1Text3: ; 44c73 (11:4c73) - db $08 ; asm - ld hl, RocketHideout1TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -RocketHideout1Text4: ; 44c7d (11:4c7d) - db $08 ; asm - ld hl, RocketHideout1TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -RocketHideout1Text5: ; 44c87 (11:4c87) - db $08 ; asm - ld hl, RocketHideout1TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -RocketHideout1EndBattleText6: ; 44c91 (11:4c91) - TX_FAR _RocketHideout1EndBattleText6 - db $8 - ld hl, $d815 - set 5, [hl] - ld hl, UnnamedText_44c9f - ret - -UnnamedText_44c9f: ; 44c9f (11:4c9f) - db $6, $50 - -RocketHideout1BattleText2: ; 44ca1 (11:4ca1) - TX_FAR _RocketHideout1BattleText2 - db "@" - -RocketHideout1EndBattleText2: ; 44ca6 (11:4ca6) - TX_FAR _RocketHideout1EndBattleText2 - db "@" - -RocketHideout1AfterBattleTxt2: ; 44cab (11:4cab) - TX_FAR _RocketHideout1AfterBattleTxt2 - db "@" - -RocketHideout1BattleText3: ; 44cb0 (11:4cb0) - TX_FAR _RocketHideout1BattleText3 - db "@" - -RocketHideout1EndBattleText3: ; 44cb5 (11:4cb5) - TX_FAR _RocketHideout1EndBattleText3 - db "@" - -RocketHideout1AfterBattleTxt3: ; 44cba (11:4cba) - TX_FAR _RocketHideout1AfterBattleTxt3 - db "@" - -RocketHideout1BattleText4: ; 44cbf (11:4cbf) - TX_FAR _RocketHideout1BattleText4 - db "@" - -RocketHideout1EndBattleText4: ; 44cc4 (11:4cc4) - TX_FAR _RocketHideout1EndBattleText4 - db "@" - -RocketHideout1AfterBattleTxt4: ; 44cc9 (11:4cc9) - TX_FAR _RocketHideout1AfterBattleTxt4 - db "@" - -RocketHideout1BattleText5: ; 44cce (11:4cce) - TX_FAR _RocketHideout1BattleText5 - db "@" - -RocketHideout1EndBattleText5: ; 44cd3 (11:4cd3) - TX_FAR _RocketHideout1EndBattleText5 - db "@" - -RocketHideout1AfterBattleTxt5: ; 44cd8 (11:4cd8) - TX_FAR _RocketHideout1AfterBattleTxt5 - db "@" - -RocketHideout1BattleText6: ; 44cdd (11:4cdd) - TX_FAR _RocketHideout1BattleText6 - db "@" - -RocketHideout1AfterBattleTxt6: ; 44ce2 (11:4ce2) - TX_FAR _RocketHideout1AfterBattleTxt6 - db "@" - -INCLUDE "data/mapObjects/rockethideout1.asm" - -RocketHideout1Blocks: ; 44d49 (11:4d49) - INCBIN "maps/rockethideout1.blk" - -INCLUDE "data/mapHeaders/rockethideout2.asm" - -RocketHideout2Script: ; 44e27 (11:4e27) - call EnableAutoTextBoxDrawing - ld hl, RocketHideout2TrainerHeaders - ld de, RocketHideout2ScriptPointers - ld a, [W_ROCKETHIDEOUT2CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROCKETHIDEOUT2CURSCRIPT], a - ret - -RocketHideout2ScriptPointers: ; 44e3a (11:4e3a) - dw RocketHideout2Script0 - dw Func_324c - dw EndTrainerBattle - dw RocketHideout2Script3 - -RocketHideout2Script0: ; 44e42 (11:4e42) - ld a, [W_YCOORD] - ld b, a - ld a, [W_XCOORD] - ld c, a - ld hl, RocketHideout2ArrowTilePlayerMovement - call Func_3442 - cp $ff - jp z, CheckFightingMapTrainers - ld hl, $d736 - set 7, [hl] - call Func_3486 - ld a, (SFX_02_52 - SFX_Headers_02) / 3 - call PlaySound - ld a, $ff - ld [wJoypadForbiddenButtonsMask], a - ld a, $3 - ld [W_CURMAPSCRIPT], a - ret - -;format: -;db y,x -;dw pointer to movement -RocketHideout2ArrowTilePlayerMovement: ; 44e6d (11:4e6d) - db $9,$4 - dw RocketHideout2ArrowMovement1 - db $b,$4 - dw RocketHideout2ArrowMovement2 - db $f,$4 - dw RocketHideout2ArrowMovement3 - db $10,$4 - dw RocketHideout2ArrowMovement4 - db $13,$4 - dw RocketHideout2ArrowMovement1 - db $16,$4 - dw RocketHideout2ArrowMovement5 - db $e,$5 - dw RocketHideout2ArrowMovement6 - db $16,$6 - dw RocketHideout2ArrowMovement7 - db $18,$6 - dw RocketHideout2ArrowMovement8 - db $9,$8 - dw RocketHideout2ArrowMovement9 - db $c,$8 - dw RocketHideout2ArrowMovement10 - db $f,$8 - dw RocketHideout2ArrowMovement8 - db $13,$8 - dw RocketHideout2ArrowMovement9 - db $17,$8 - dw RocketHideout2ArrowMovement11 - db $e,$9 - dw RocketHideout2ArrowMovement12 - db $16,$9 - dw RocketHideout2ArrowMovement12 - db $9,$a - dw RocketHideout2ArrowMovement13 - db $a,$a - dw RocketHideout2ArrowMovement14 - db $f,$a - dw RocketHideout2ArrowMovement15 - db $11,$a - dw RocketHideout2ArrowMovement16 - db $13,$a - dw RocketHideout2ArrowMovement17 - db $19,$a - dw RocketHideout2ArrowMovement2 - db $e,$b - dw RocketHideout2ArrowMovement18 - db $10,$b - dw RocketHideout2ArrowMovement19 - db $12,$b - dw RocketHideout2ArrowMovement12 - db $9,$c - dw RocketHideout2ArrowMovement20 - db $b,$c - dw RocketHideout2ArrowMovement21 - db $d,$c - dw RocketHideout2ArrowMovement22 - db $11,$c - dw RocketHideout2ArrowMovement23 - db $a,$d - dw RocketHideout2ArrowMovement24 - db $c,$d - dw RocketHideout2ArrowMovement25 - db $10,$d - dw RocketHideout2ArrowMovement26 - db $12,$d - dw RocketHideout2ArrowMovement27 - db $13,$d - dw RocketHideout2ArrowMovement28 - db $16,$d - dw RocketHideout2ArrowMovement29 - db $17,$d - dw RocketHideout2ArrowMovement30 - db $11,$e - dw RocketHideout2ArrowMovement31 - db $10,$f - dw RocketHideout2ArrowMovement12 - db $e,$10 - dw RocketHideout2ArrowMovement32 - db $10,$10 - dw RocketHideout2ArrowMovement33 - db $12,$10 - dw RocketHideout2ArrowMovement34 - db $a,$11 - dw RocketHideout2ArrowMovement35 - db $b,$11 - dw RocketHideout2ArrowMovement36 - db $FF - -;format: direction, count -;right: $10 -;left: $20 -;up: $40 -;down: $80 -;each list is read starting from the $FF and working backwards -RocketHideout2ArrowMovement1: ; 44f1a (11:4f1a) - db $20,$02 - db $FF - -RocketHideout2ArrowMovement2: ; 44f1d (11:4f1d) - db $10,$04 - db $FF - -RocketHideout2ArrowMovement3: ; 44f20 (11:4f20) - db $40,$04 - db $10,$04 - db $FF - -RocketHideout2ArrowMovement4: ; 44f25 (11:4f25) - db $40,$04 - db $10,$04 - db $40,$01 - db $FF - -RocketHideout2ArrowMovement5: ; 44f2c (11:4f2c) - db $20,$02 - db $40,$03 - db $FF - -RocketHideout2ArrowMovement6: ; 44f31 (11:4f31) - db $80,$02 - db $10,$04 - db $FF - -RocketHideout2ArrowMovement7: ; 44f36 (11:4f36) - db $40,$02 - db $FF - -RocketHideout2ArrowMovement8: ; 44f39 (11:4f39) - db $40,$04 - db $FF - -RocketHideout2ArrowMovement9: ; 44f3c (11:4f3c) - db $20,$06 - db $FF - -RocketHideout2ArrowMovement10: ; 44f3f (11:4f3f) - db $40,$01 - db $FF - -RocketHideout2ArrowMovement11: ; 44f42 (11:4f42) - db $20,$06 - db $40,$04 - db $FF - -RocketHideout2ArrowMovement12: ; 44f47 (11:4f47) - db $80,$02 - db $FF - -RocketHideout2ArrowMovement13: ; 44f4a (11:4f4a) - db $20,$08 - db $FF - -RocketHideout2ArrowMovement14: ; 44f4d (11:4f4d) - db $20,$08 - db $40,$01 - db $FF - -RocketHideout2ArrowMovement15: ; 44f52 (11:4f52) - db $20,$08 - db $40,$06 - db $FF - -RocketHideout2ArrowMovement16: ; 44f57 (11:4f57) - db $40,$02 - db $10,$04 - db $FF - -RocketHideout2ArrowMovement17: ; 44f5c (11:4f5c) - db $40,$02 - db $10,$04 - db $40,$02 - db $FF - -RocketHideout2ArrowMovement18: ; 44f63 (11:4f63) - db $80,$02 - db $10,$04 - db $80,$02 - db $FF - -RocketHideout2ArrowMovement19: ; 44f6a (11:4f6a) - db $80,$02 - db $10,$04 - db $FF - -RocketHideout2ArrowMovement20: ; 44f6f (11:4f6f) - db $20,$0A - db $FF - -RocketHideout2ArrowMovement21: ; 44f72 (11:4f72) - db $20,$0A - db $40,$02 - db $FF - -RocketHideout2ArrowMovement22: ; 44f77 (11:4f77) - db $20,$0A - db $40,$04 - db $FF - -RocketHideout2ArrowMovement23: ; 44f7c (11:4f7c) - db $40,$02 - db $10,$02 - db $FF - -RocketHideout2ArrowMovement24: ; 44f81 (11:4f81) - db $10,$01 - db $80,$02 - db $FF - -RocketHideout2ArrowMovement25: ; 44f86 (11:4f86) - db $10,$01 - db $FF - -RocketHideout2ArrowMovement26: ; 44f89 (11:4f89) - db $80,$02 - db $10,$02 - db $FF - -RocketHideout2ArrowMovement27: ; 44f8e (11:4f8e) - db $80,$02 - db $20,$02 - db $FF - -RocketHideout2ArrowMovement28: ; 44f93 (11:4f93) - db $40,$02 - db $10,$04 - db $40,$02 - db $20,$03 - db $FF - -RocketHideout2ArrowMovement29: ; 44f9c (11:4f9c) - db $80,$02 - db $20,$04 - db $FF - -RocketHideout2ArrowMovement30: ; 44fa1 (11:4fa1) - db $20,$06 - db $40,$04 - db $20,$05 - db $FF - -RocketHideout2ArrowMovement31: ; 44fa8 (11:4fa8) - db $40,$02 - db $FF - -RocketHideout2ArrowMovement32: ; 44fab (11:4fab) - db $40,$01 - db $FF - -RocketHideout2ArrowMovement33: ; 44fae (11:4fae) - db $40,$03 - db $FF - -RocketHideout2ArrowMovement34: ; 44fb1 (11:4fb1) - db $40,$05 - db $FF - -RocketHideout2ArrowMovement35: ; 44fb4 (11:4fb4) - db $10,$01 - db $80,$02 - db $20,$04 - db $FF - -RocketHideout2ArrowMovement36: ; 44fbb (11:4fbb) - db $20,$0A - db $40,$02 - db $20,$05 - db $FF - -RocketHideout2Script3: ; 44fc2 (11:4fc2) - ld a, [$cd38] - and a - jr nz, LoadSpinnerArrowTiles - xor a - ld [wJoypadForbiddenButtonsMask], a - ld hl, $d736 - res 7, [hl] - ld a, $0 - ld [W_CURMAPSCRIPT], a - ret - -LoadSpinnerArrowTiles: ; 44fd7 (11:4fd7) - ld a, [$c102] - srl a - srl a - ld hl, SpinnerPlayerFacingDirections ; $5083 - ld c, a - ld b, $0 - add hl, bc - ld a, [hl] - ld [$c102], a - ld a, [W_CURMAPTILESET] ; $d367 - cp FACILITY - ld hl, SpinnerArrowTilePointers1 ; $5023 - jr z, .asm_44ff6 - ld hl, SpinnerArrowTilePointers2 ; $5053 -.asm_44ff6 - ld a, [$cd38] - bit 0, a - jr nz, .asm_45001 - ld de, $18 - add hl, de -.asm_45001 - ld a, $4 - ld bc, $0 -.asm_45006 - push af - push hl - push bc - add hl, bc - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - ld a, [hli] - ld h, [hl] - ld l, a - call CopyVideoData - pop bc - ld a, $6 - add c - ld c, a - pop hl - pop af - dec a - jr nz, .asm_45006 - ret - -SpinnerArrowTilePointers1: ; 45023 (11:5023) - dw SpinnerArrowAnimTiles ;address from within tileset graphics - db 1 ;number of tiles to copy? - db BANK(SpinnerArrowAnimTiles) ;bank of tileset graphics - dw $9200 ;where to load in VRAM - - dw SpinnerArrowAnimTiles + $10 - db 1 - db BANK(SpinnerArrowAnimTiles) - dw $9210 - - dw SpinnerArrowAnimTiles + $20 - db 1 - db BANK(SpinnerArrowAnimTiles) - dw $9300 - - dw SpinnerArrowAnimTiles + $30 - db 1 - db BANK(SpinnerArrowAnimTiles) - dw $9310 - - dw Facility_GFX + $200 - db 1 - db BANK(Facility_GFX) - dw $9200 - - dw Facility_GFX + $210 - db 1 - db BANK(Facility_GFX) - dw $9210 - - dw Facility_GFX + $300 - db 1 - db BANK(Facility_GFX) - dw $9300 - - dw Facility_GFX + $310 - db 1 - db BANK(Facility_GFX) - dw $9310 - -SpinnerArrowTilePointers2: ; 45053 (11:5053) - dw SpinnerArrowAnimTiles + $10 - db 1 - db BANK(SpinnerArrowAnimTiles) - dw $93C0 - - dw SpinnerArrowAnimTiles + $30 - db 1 - db BANK(SpinnerArrowAnimTiles) - dw $93D0 - - dw SpinnerArrowAnimTiles - db 1 - db BANK(SpinnerArrowAnimTiles) - dw $94C0 - - dw SpinnerArrowAnimTiles + $20 - db 1 - db BANK(SpinnerArrowAnimTiles) - dw $94D0 - - dw Gym_GFX + $3C0 - db 1 - db BANK(Facility_GFX) - dw $93C0 - - dw Gym_GFX + $3D0 - db 1 - db BANK(Facility_GFX) - dw $93D0 - - dw Gym_GFX + $4C0 - db 1 - db BANK(Facility_GFX) - dw $94C0 - - dw Gym_GFX + $4D0 - db 1 - db BANK(Facility_GFX) - dw $94D0 - -SpinnerPlayerFacingDirections: ; 45083 (11:5083) -; This isn't the order of the facing directions. Rather, it's a list of -; the facing directions that come next. For example, when the player is -; facing down (00), the next facing direction is left (08). - db $08 ; down -> left - db $0C ; up -> right - db $04 ; left -> up - db $00 ; right -> down - -; these tiles are the animation for the tiles that push the player in dungeons like Rocket HQ -SpinnerArrowAnimTiles: ; 45087 (11:5087) - INCBIN "gfx/spinner_arrow.2bpp" - -RocketHideout2TextPointers: ; 450c7 (11:50c7) - dw RocketHideout2Text1 - dw Predef5CText - dw Predef5CText - dw Predef5CText - dw Predef5CText - -RocketHideout2TrainerHeaders: ; 450d1 (11:50d1) -RocketHideout2TrainerHeader0: ; 450d1 (11:50d1) - db $1 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d817 ; flag's byte - dw RocketHideout2BattleText2 ; 0x50e8 TextBeforeBattle - dw RocketHideout2AfterBattleTxt2 ; 0x50f2 TextAfterBattle - dw RocketHideout2EndBattleText2 ; 0x50ed TextEndBattle - dw RocketHideout2EndBattleText2 ; 0x50ed TextEndBattle - - db $ff - -RocketHideout2Text1: ; 450de (11:50de) - db $08 ; asm - ld hl, RocketHideout2TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -RocketHideout2BattleText2: ; 450e8 (11:50e8) - TX_FAR _RocketHideout2BattleText2 - db "@" - -RocketHideout2EndBattleText2: ; 450ed (11:50ed) - TX_FAR _RocketHideout2EndBattleText2 - db "@" - -RocketHideout2AfterBattleTxt2: ; 450f2 (11:50f2) - TX_FAR _RocketHideout2AfterBattleTxt2 - db "@" - -INCLUDE "data/mapObjects/rockethideout2.asm" - -RocketHideout2Blocks: ; 45147 (11:5147) - INCBIN "maps/rockethideout2.blk" - -INCLUDE "data/mapHeaders/rockethideout3.asm" - -RocketHideout3Script: ; 45225 (11:5225) - call EnableAutoTextBoxDrawing - ld hl, RocketHideout3TrainerHeaders - ld de, RocketHideout3ScriptPointers - ld a, [W_ROCKETHIDEOUT3CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROCKETHIDEOUT3CURSCRIPT], a - ret - -RocketHideout3ScriptPointers: ; 45238 (11:5238) - dw RocketHideout3Script0 - dw Func_324c - dw EndTrainerBattle - dw RocketHideout3Script3 - -RocketHideout3Script0: ; 45240 (11:5240) - ld a, [W_YCOORD] - ld b, a - ld a, [W_XCOORD] - ld c, a - ld hl, RocketHideout3ArrowTilePlayerMovement - call Func_3442 - cp $ff - jp z, CheckFightingMapTrainers - ld hl, $d736 - set 7, [hl] - call Func_3486 - ld a, (SFX_02_52 - SFX_Headers_02) / 3 - call PlaySound - ld a, $ff - ld [wJoypadForbiddenButtonsMask], a - ld a, $3 - ld [W_CURMAPSCRIPT], a - ret - -;format: -;db y,x -;dw pointer to movement -RocketHideout3ArrowTilePlayerMovement: ; 4526b (11:526b) - db $d,$a - dw RocketHideout3ArrowMovement6 - db $13,$a - dw RocketHideout3ArrowMovement1 - db $12,$b - dw RocketHideout3ArrowMovement2 - db $b,$c - dw RocketHideout3ArrowMovement3 - db $11,$c - dw RocketHideout3ArrowMovement4 - db $14,$c - dw RocketHideout3ArrowMovement5 - db $10,$d - dw RocketHideout3ArrowMovement6 - db $b,$e - dw RocketHideout3ArrowMovement7 - db $f,$e - dw RocketHideout3ArrowMovement6 - db $11,$e - dw RocketHideout3ArrowMovement8 - db $13,$e - dw RocketHideout3ArrowMovement9 - db $10,$f - dw RocketHideout3ArrowMovement7 - db $12,$f - dw RocketHideout3ArrowMovement10 - db $d,$10 - dw RocketHideout3ArrowMovement11 - db $c,$11 - dw RocketHideout3ArrowMovement10 - db $10,$12 - dw RocketHideout3ArrowMovement12 - db $FF - -;format: direction, count -;right: $10 -;left: $20 -;up: $40 -;down: $80 -;each list is read starting from the $FF and working backwards -RocketHideout3ArrowMovement1: ; 452ac (11:52ac) - db $10,$04 - db $40,$04 - db $10,$04 - db $FF - -RocketHideout3ArrowMovement2: ; 452b3 (11:52b3) - db $80,$04 - db $10,$04 - db $FF - -RocketHideout3ArrowMovement3: ; 452b8 (11:52b8) - db $20,$02 - db $FF - -RocketHideout3ArrowMovement4: ; 452bb (11:52bb) - db $10,$04 - db $40,$02 - db $10,$02 - db $FF - -RocketHideout3ArrowMovement5: ; 452c2 (11:52c2) - db $10,$04 - db $40,$02 - db $10,$02 - db $40,$03 - db $FF - -RocketHideout3ArrowMovement6: ; 452cb (11:52cb) - db $10,$04 - db $FF - -RocketHideout3ArrowMovement7: ; 452ce (11:52ce) - db $10,$02 - db $FF - -RocketHideout3ArrowMovement8: ; 452d1 (11:52d1) - db $10,$04 - db $40,$02 - db $FF - -RocketHideout3ArrowMovement9: ; 452d6 (11:52d6) - db $10,$04 - db $40,$04 - db $FF - -RocketHideout3ArrowMovement10: ; 452db (11:52db) - db $80,$04 - db $FF - -RocketHideout3ArrowMovement11: ; 452de (11:52de) - db $40,$02 - db $FF - -RocketHideout3ArrowMovement12: ; 452e1 (11:52e1) - db $40,$01 - db $FF - -RocketHideout3Script3 ; 452e4 (11:452e4) - ld a, [$cd38] - and a - jp nz, LoadSpinnerArrowTiles - xor a - ld [wJoypadForbiddenButtonsMask], a - ld hl, $d736 - res 7, [hl] - ld a, $0 - ld [W_CURMAPSCRIPT], a - ret - -RocketHideout3TextPointers: ; 452fa (11:52fa) - dw RocketHideout3Text1 - dw RocketHideout3Text2 - dw Predef5CText - dw Predef5CText - -RocketHideout3TrainerHeaders: ; 45302 (11:5302) -RocketHideout3TrainerHeader0: ; 45302 (11:5302) - db $1 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d819 ; flag's byte - dw RocketHideout3BattleText2 ; 0x5325 TextBeforeBattle - dw RocketHideout3AfterBattleTxt2 ; 0x532f TextAfterBattle - dw RocketHideout3EndBattleText2 ; 0x532a TextEndBattle - dw RocketHideout3EndBattleText2 ; 0x532a TextEndBattle - -RocketHideout3TrainerHeader2: ; 4530e (11:530e) - db $2 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d819 ; flag's byte - dw RocketHideout3BattleTxt ; 0x533e TextBeforeBattle - dw RocketHideout3AfterBattleText3 ; 0x5348 TextAfterBattle - dw RocketHideout3EndBattleText3 ; 0x5343 TextEndBattle - dw RocketHideout3EndBattleText3 ; 0x5343 TextEndBattle - - db $ff - -RocketHideout3Text1: ; 4531b (11:531b) - db $08 ; asm - ld hl, RocketHideout3TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -RocketHideout3BattleText2: ; 45325 (11:5325) - TX_FAR _RocketHideout3BattleText2 - db "@" - -RocketHideout3EndBattleText2: ; 4532a (11:532a) - TX_FAR _RocketHideout3EndBattleText2 - db "@" - -RocketHideout3AfterBattleTxt2: ; 4532f (11:532f) - TX_FAR _RocketHideout3AfterBattleTxt2 - db "@" - -RocketHideout3Text2: ; 45334 (11:5334) - db $08 ; asm - ld hl, RocketHideout3TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -RocketHideout3BattleTxt: ; 4533e (11:533e) - TX_FAR _RocketHideout3BattleTxt - db "@" - -RocketHideout3EndBattleText3: ; 45343 (11:5343) - TX_FAR _RocketHideout3EndBattleText3 - db "@" - -RocketHideout3AfterBattleText3: ; 45348 (11:5348) - TX_FAR _RocketHide3AfterBattleText3 - db "@" - -INCLUDE "data/mapObjects/rockethideout3.asm" - -RocketHideout3Blocks: ; 4537f (11:537f) - INCBIN "maps/rockethideout3.blk" - -INCLUDE "data/mapHeaders/rockethideout4.asm" - -RocketHideout4Script: ; 4545d (11:545d) - call Func_45473 - call EnableAutoTextBoxDrawing - ld hl, RocketHideout4TrainerHeader0 - ld de, RocketHideout4ScriptPointers - ld a, [W_ROCKETHIDEOUT4CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROCKETHIDEOUT4CURSCRIPT], a - ret - -Func_45473: ; 45473 (11:5473) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - ret z - ld a, [$d81b] - bit 5, a - jr nz, .asm_45496 - and $c - cp $c - jr z, .asm_4548c - ld a, $2d - jr .asm_45498 -.asm_4548c - ld a, (SFX_02_57 - SFX_Headers_02) / 3 - call PlaySound - ld hl, $d81b - set 5, [hl] -.asm_45496 - ld a, $e -.asm_45498 - ld [$d09f], a - ld bc, $050c - ld a, $17 - jp Predef - -Func_454a3: ; 454a3 (11:54a3) - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_ROCKETHIDEOUT4CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -RocketHideout4ScriptPointers: ; 454ae (11:54ae)c - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - dw RocketHideout4Script3 - -RocketHideout4Script3: ; 454b6 (11:54b6) - ld a, [W_ISINBATTLE] - cp $ff - jp z, Func_454a3 - call UpdateSprites - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld hl, $d81b - set 7, [hl] - ld a, $a - ld [H_SPRITEHEIGHT], a - call DisplayTextID - call GBFadeIn1 - ld a, $83 - ld [$cc4d], a - ld a, $11 - call Predef - ld a, $87 - ld [$cc4d], a - ld a, $15 - call Predef - call UpdateSprites - call GBFadeOut1 - xor a - ld [wJoypadForbiddenButtonsMask], a - ld hl, $d126 - set 5, [hl] - ld a, $0 - ld [W_ROCKETHIDEOUT4CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -RocketHideout4TextPointers: ; 45501 (11:5501) - dw RocketHideout4Text1 - dw RocketHideout4Text2 - dw RocketHideout4Text3 - dw RocketHideout4Text4 - dw Predef5CText - dw Predef5CText - dw Predef5CText - dw Predef5CText - dw Predef5CText - dw RocketHideout4Text10 - -RocketHideout4TrainerHeaders: ; 45515 (11:5515) -RocketHideout4TrainerHeader0: ; 45515 (11:5515) - db $2 ; flag's bit - db ($0 << 4) ; trainer's view range - dw $d81b ; flag's byte - dw RocketHideout4BattleText2 ; 0x5593 TextBeforeBattle - dw RocketHideout4AfterBattleText2 ; 0x559d TextAfterBattle - dw RocketHideout4EndBattleText2 ; 0x5598 TextEndBattle - dw RocketHideout4EndBattleText2 ; 0x5598 TextEndBattle - -RocketHideout4TrainerHeader2: ; 45521 (11:5521) - db $3 ; flag's bit - db ($0 << 4) ; trainer's view range - dw $d81b ; flag's byte - dw RocketHideout4BattleText3 ; 0x55ac TextBeforeBattle - dw RocketHideout4AfterBattleText3 ; 0x55b6 TextAfterBattle - dw RocketHideout4EndBattleText3 ; 0x55b1 TextEndBattle - dw RocketHideout4EndBattleText3 ; 0x55b1 TextEndBattle - -RocketHideout4TrainerHeader3: ; 4552d (11:552d) - db $4 ; flag's bit - db ($1 << 4) ; trainer's view range - dw $d81b ; flag's byte - dw RocketHideout4BattleText4 ; 0x55c5 TextBeforeBattle - dw RocketHideout4AfterBattleText4 ; 0x55cf TextAfterBattle - dw RocketHideout4EndBattleText4 ; 0x55ca TextEndBattle - dw RocketHideout4EndBattleText4 ; 0x55ca TextEndBattle - - db $ff - -RocketHideout4Text1: ; 4553a (11:553a) - db $08 ; asm - ld a, [$d81b] - bit 7, a - jp nz, .asm_545571 - ld hl, UnnamedText_4557a - call PrintText - ld hl, $d72d - set 6, [hl] - set 7, [hl] - ld hl, UnnamedText_4557f - ld de, UnnamedText_4557f - call PreBattleSaveRegisters - ldh a, [$8c] - ld [$cf13], a - call EngageMapTrainer - call InitBattleEnemyParameters - xor a - ldh [$b4], a - ld a, $3 - ld [W_ROCKETHIDEOUT4CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - jr .asm_209f0 ; 0x4556f -.asm_545571 - ld hl, RocketHideout4Text10 - call PrintText -.asm_209f0 ; 0x45577 - jp TextScriptEnd - -UnnamedText_4557a: ; 4557a (11:557a) - TX_FAR _UnnamedText_4557a - db "@" - -UnnamedText_4557f: ; 4557f (11:557f) - TX_FAR _UnnamedText_4557f - db "@" - -RocketHideout4Text10: ; 45584 (11:5584) - TX_FAR _UnnamedText_45584 - db "@" - -RocketHideout4Text2: ; 45589 (11:5589) - db $08 ; asm - ld hl, RocketHideout4TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -RocketHideout4BattleText2: ; 45593 (11:5593) - TX_FAR _RocketHideout4BattleText2 - db "@" - -RocketHideout4EndBattleText2: ; 45598 (11:5598) - TX_FAR _RocketHideout4EndBattleText2 - db "@" - -RocketHideout4AfterBattleText2: ; 4559d (11:559d) - TX_FAR _RocketHide4AfterBattleText2 - db "@" - -RocketHideout4Text3: ; 455a2 (11:55a2) - db $08 ; asm - ld hl, RocketHideout4TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -RocketHideout4BattleText3: ; 455ac (11:55ac) - TX_FAR _RocketHideout4BattleText3 - db "@" - -RocketHideout4EndBattleText3: ; 455b1 (11:55b1) - TX_FAR _RocketHideout4EndBattleText3 - db "@" - -RocketHideout4AfterBattleText3: ; 455b6 (11:55b6) - TX_FAR _RocketHide4AfterBattleText3 - db "@" - -RocketHideout4Text4: ; 455bb (11:55bb) - db $08 ; asm - ld hl, RocketHideout4TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -RocketHideout4BattleText4: ; 455c5 (11:55c5) - TX_FAR _RocketHideout4BattleText4 - db "@" - -RocketHideout4EndBattleText4: ; 455ca (11:55ca) - TX_FAR _RocketHideout4EndBattleText4 - db "@" - -RocketHideout4AfterBattleText4: ; 455cf (11:55cf) - db $8 - ld hl, UnnamedText_455ec ; $55ec - call PrintText - ld hl, $d81b - bit 6, [hl] - set 6, [hl] - jr nz, .asm_455e9 ; 0x455dd $a - ld a, $88 - ld [$cc4d], a - ld a, $15 - call Predef -.asm_455e9 - jp TextScriptEnd - -UnnamedText_455ec: ; 455ec (11:55ec) - TX_FAR _UnnamedText_455ec - db "@" - -INCLUDE "data/mapObjects/rockethideout4.asm" - -RocketHideout4Blocks: ; 45650 (11:5650) - INCBIN "maps/rockethideout4.blk" - -INCLUDE "data/mapHeaders/rockethideoutelevator.asm" - -RocketHideoutElevatorScript: ; 45710 (11:5710) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - push hl - call nz, RocketHideoutElevatorScript_4572c - pop hl - bit 7, [hl] - res 7, [hl] - call nz, Func_4575f - xor a - ld [$cf0c], a - inc a - ld [$cc3c], a - ret - -RocketHideoutElevatorScript_4572c: ; 4572c (11:572c) - ld hl, $d3af - ld a, [$d73b] - ld b, a - ld a, [$d73c] - ld c, a - call RocketHideoutElevatorScript_4573a - -RocketHideoutElevatorScript_4573a: ; 4573a (11:573a) - inc hl - inc hl - ld a, b - ld [hli], a - ld a, c - ld [hli], a - ret - -RocketHideoutElevatorScript_45741: ; 45741 (11:5741) - ld hl, RocketHideoutElavatorFloors ; $5754 - call LoadItemList - ld hl, RocketHideoutElevatorWarpMaps ; $5759 - ld de, $cc5b - ld bc, $0006 - call CopyData - ret - -RocketHideoutElavatorFloors: ; 45754 (11:5754) - db $03 ; num elements in list - db $55, $54, $61 ; "B1F", "B2F", "B4F" - db $FF ; terminator - -RocketHideoutElevatorWarpMaps: ; 45759 (11:5759) -; first byte is warp number -; second byte is map number -; These specify where the player goes after getting out of the elevator. - db $04, ROCKET_HIDEOUT_1 - db $04, ROCKET_HIDEOUT_2 - db $02, ROCKET_HIDEOUT_4 - -Func_4575f: ; 4575f (11:575f) - call Delay3 - ld b, BANK(Func_7bf15) - ld hl, Func_7bf15 - call Bankswitch - ret - -RocketHideoutElevatorTextPointers: ; 4576b (11:576b) - dw RocketHideoutElevatorText1 - -RocketHideoutElevatorText1: ; 4576d (11:576d) - db $08 ; asm - ld b, LIFT_KEY - call IsItemInBag - jr z, .asm_8d8f0 ; 0x45773 - call RocketHideoutElevatorScript_45741 - ld hl, RocketHideoutElevatorWarpMaps ; $5759 - ld a, $61 - call Predef - jr .asm_46c43 ; 0x45780 -.asm_8d8f0 ; 0x45782 - ld hl, UnnamedText_4578b - call PrintText -.asm_46c43 ; 0x45788 - jp TextScriptEnd - -UnnamedText_4578b: ; 4578b (11:578b) - TX_FAR _UnnamedText_4578b ; 0x82438 - db $d, "@" - -INCLUDE "data/mapObjects/rockethideoutelevator.asm" - -RocketHideoutElevatorBlocks: ; 457a8 (11:57a8) - INCBIN "maps/rockethideoutelevator.blk" - -INCLUDE "data/mapHeaders/silphcoelevator.asm" - -SilphCoElevatorScript: ; 457c0 (11:57c0) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - push hl - call nz, SilphCoElevatorScript_457dc - pop hl - bit 7, [hl] - res 7, [hl] - call nz, Func_45827 - xor a - ld [$cf0c], a - inc a - ld [$cc3c], a - ret - -SilphCoElevatorScript_457dc: ; 457dc (11:57dc) - ld hl, $d3af - ld a, [$d73b] - ld b, a - ld a, [$d73c] - ld c, a - call SilphCoElevatorScript_457ea - -SilphCoElevatorScript_457ea: ; 457ea (11:57ea) - inc hl - inc hl - ld a, b - ld [hli], a - ld a, c - ld [hli], a - ret - -SilphCoElevatorScript_457f1: ; 457f1 (11:57f1) - ld hl, SilphCoElavatorFloors ; $5804 - call LoadItemList - ld hl, SilphCoElevatorWarpMaps ; $5811 - ld de, $cc5b - ld bc, $16 - call CopyData - ret - -SilphCoElavatorFloors: ; 45804 (11:45804) - db $0B ; num elements in list - db $56, $57, $58, $59, $5A, $5B, $5C, $5D, $5E, $5F, $60 ; "1F", "2F", "3F", "4F", ... , "11F" - db $FF ; terminator - -SilphCoElevatorWarpMaps: ; 45811 (11:45811) -; first byte is warp number -; second byte is map number -; These specify where the player goes after getting out of the elevator. - db $03, SILPH_CO_1F - db $02, SILPH_CO_2F - db $02, SILPH_CO_3F - db $02, SILPH_CO_4F - db $02, SILPH_CO_5F - db $02, SILPH_CO_6F - db $02, SILPH_CO_7F - db $02, SILPH_CO_8F - db $02, SILPH_CO_9F - db $02, SILPH_CO_10F - db $01, SILPH_CO_11F - -Func_45827: ; 45827 (11:5827) - call Delay3 - ld b, BANK(Func_7bf15) - ld hl, Func_7bf15 - call Bankswitch - ret - -SilphCoElevatorTextPointers: ; 45833 (11:5833) - dw SilphCoElevatorText1 - -SilphCoElevatorText1: ; 45835 (11:5835) - db $08 ; asm - call SilphCoElevatorScript_457f1 - ld hl, SilphCoElevatorWarpMaps ; $5811 - ld a, $61 - call Predef - jp TextScriptEnd - -INCLUDE "data/mapObjects/silphcoelevator.asm" - -SilphCoElevatorBlocks: ; 4585b (11:585b) - INCBIN "maps/silphcoelevator.blk" - -INCLUDE "data/mapHeaders/safarizoneeast.asm" - -SafariZoneEastScript: ; 4586b (11:586b) - jp EnableAutoTextBoxDrawing - -SafariZoneEastTextPointers: ; 4586e (11:586e) - dw Predef5CText - dw Predef5CText - dw Predef5CText - dw Predef5CText - dw SafariZoneEastText5 - dw SafariZoneEastText6 - dw SafariZoneEastText7 - -SafariZoneEastText5: ; 4587c (11:587c) - TX_FAR _SafariZoneEastText5 - db "@" - -SafariZoneEastText6: ; 45881 (11:5881) - TX_FAR _SafariZoneEastText6 - db "@" - -SafariZoneEastText7: ; 45886 (11:5886) - TX_FAR _SafariZoneEastText7 - db "@" - -INCLUDE "data/mapObjects/safarizoneeast.asm" - -SafariZoneEastBlocks: ; 458dc (11:58dc) - INCBIN "maps/safarizoneeast.blk" - -INCLUDE "data/mapHeaders/safarizonenorth.asm" - -SafariZoneNorthScript: ; 459ab (11:59ab) - jp EnableAutoTextBoxDrawing - -SafariZoneNorthTextPointers: ; 459ae (11:59ae) - dw Predef5CText - dw Predef5CText - dw SafariZoneNorthText3 - dw SafariZoneNorthText4 - dw SafariZoneNorthText5 - dw SafariZoneNorthText6 - dw SafariZoneNorthText7 - -SafariZoneNorthText3: ; 459bc (11:59bc) - TX_FAR _SafariZoneNorthText3 - db "@" - -SafariZoneNorthText4: ; 459c1 (11:59c1) - TX_FAR _SafariZoneNorthText4 - db "@" - -SafariZoneNorthText5: ; 459c6 (11:59c6) - TX_FAR _SafariZoneNorthText5 - db "@" - -SafariZoneNorthText6: ; 459cb (11:59cb) - TX_FAR _SafariZoneNorthText6 - db "@" - -SafariZoneNorthText7: ; 459d0 (11:59d0) - TX_FAR _SafariZoneNorthText7 - db "@" - -INCLUDE "data/mapObjects/safarizonenorth.asm" - -SafariZoneNorthBlocks: ; 45a3e (11:5a3e) - INCBIN "maps/safarizonenorth.blk" - -INCLUDE "data/mapHeaders/safarizonecenter.asm" - -SafariZoneCenterScript: ; 45bb2 (11:5bb2) - jp EnableAutoTextBoxDrawing - -SafariZoneCenterTextPointers: ; 45bb5 (11:5bb5) - dw Predef5CText - dw SafariZoneCenterText2 - dw SafariZoneCenterText3 - -SafariZoneCenterText2: ; 45bbb (11:5bbb) - TX_FAR _SafariZoneCenterText2 - db "@" - -SafariZoneCenterText3: ; 45bc0 (11:5bc0) - TX_FAR _SafariZoneCenterText3 - db "@" - -INCLUDE "data/mapObjects/safarizonecenter.asm" - -SafariZoneCenterBlocks: ; 45c1e (11:5c1e) - INCBIN "maps/safarizonecenter.blk" - -INCLUDE "data/mapHeaders/safarizoneresthouse1.asm" - -SafariZoneRestHouse1Script: ; 45ced (11:5ced) - jp EnableAutoTextBoxDrawing - -SafariZoneRestHouse1TextPointers: ; 45cf0 (11:5cf0) - dw SafariZoneRestHouse1Text1 - dw SafariZoneRestHouse1Text2 - -SafariZoneRestHouse1Text1: ; 45cf4 (11:5cf4) - TX_FAR _SafariZoneRestHouse1Text1 - db "@" - -SafariZoneRestHouse1Text2: ; 45cf9 (11:5cf9) - TX_FAR _SafariZoneRestHouse1Text2 - db "@" - -INCLUDE "data/mapObjects/safarizoneresthouse1.asm" - -INCLUDE "data/mapHeaders/safarizoneresthouse2.asm" - -SafariZoneRestHouse2Script: ; 45d2a (11:5d2a) - call EnableAutoTextBoxDrawing - ret - -SafariZoneRestHouse2TextPointers: ; 45d2e (11:5d2e) - dw SafariZoneRestHouse2Text1 - dw SafariZoneRestHouse2Text2 - dw SafariZoneRestHouse2Text3 - -SafariZoneRestHouse2Text1: ; 45d34 (11:5d34) - TX_FAR _SafariZoneRestHouse2Text1 - db "@" - -SafariZoneRestHouse2Text2: ; 45d39 (11:5d39) - TX_FAR _SafariZoneRestHouse2Text2 - db "@" - -SafariZoneRestHouse2Text3: ; 45d3e (11:5d3e) - TX_FAR _SafariZoneRestHouse2Text3 - db "@" - -INCLUDE "data/mapObjects/safarizoneresthouse2.asm" - -INCLUDE "data/mapHeaders/safarizoneresthouse3.asm" - -SafariZoneRestHouse3Script: ; 45d75 (11:5d75) - call EnableAutoTextBoxDrawing - ret - -SafariZoneRestHouse3TextPointers: ; 45d79 (11:5d79) - dw SafariZoneRestHouse3Text1 - dw SafariZoneRestHouse3Text2 - dw SafariZoneRestHouse3Text3 - -SafariZoneRestHouse3Text1: ; 45d7f (11:5d7f) - TX_FAR _SafariZoneRestHouse3Text1 - db "@" - -SafariZoneRestHouse3Text2: ; 45d84 (11:5d84) - TX_FAR _SafariZoneRestHouse3Text2 - db "@" - -SafariZoneRestHouse3Text3: ; 45d89 (11:5d89) - TX_FAR _SafariZoneRestHouse3Text3 - db "@" - -INCLUDE "data/mapObjects/safarizoneresthouse3.asm" - -INCLUDE "data/mapHeaders/safarizoneresthouse4.asm" - -SafariZoneRestHouse4Script: ; 45dc0 (11:5dc0) - call EnableAutoTextBoxDrawing - ret - -SafariZoneRestHouse4TextPointers: ; 45dc4 (11:5dc4) - dw SafariZoneRestHouse4Text1 - dw SafariZoneRestHouse4Text2 - dw SafariZoneRestHouse4Text3 - -SafariZoneRestHouse4Text1: ; 45dca (11:5dca) - TX_FAR _SafariZoneRestHouse4Text1 - db "@" - -SafariZoneRestHouse4Text2: ; 45dcf (11:5dcf) - TX_FAR _SafariZoneRestHouse4Text2 - db "@" - -SafariZoneRestHouse4Text3: ; 45dd4 (11:5dd4) - TX_FAR _SafariZoneRestHouse4Text3 - db "@" - -INCLUDE "data/mapObjects/safarizoneresthouse4.asm" - -INCLUDE "data/mapHeaders/unknowndungeon2.asm" - -UnknownDungeon2Script: ; 45e0b (11:5e0b) - jp EnableAutoTextBoxDrawing - -UnknownDungeon2TextPointers: ; 45e0e (11:5e0e) - dw Predef5CText - dw Predef5CText - dw Predef5CText - -INCLUDE "data/mapObjects/unknowndungeon2.asm" - -UnknownDungeon2Blocks: ; 45e5d (11:5e5d) - INCBIN "maps/unknowndungeon2.blk" - -INCLUDE "data/mapHeaders/unknowndungeon3.asm" - -UnknownDungeon3Script: ; 45ef0 (11:5ef0) - call EnableAutoTextBoxDrawing - ld hl, UnknownDungeon3TrainerHeaders - ld de, UnknownDungeon3ScriptPointers - ld a, [W_UNKNOWNDUNGEON3CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_UNKNOWNDUNGEON3CURSCRIPT], a - ret - -UnknownDungeon3ScriptPointers: ; 45f03 (11:5f03) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -UnknownDungeon3TextPointers: ; 45f09 (11:5f09) - dw UnknownDungeon3Text1 - dw Predef5CText - dw Predef5CText - -UnknownDungeon3TrainerHeaders: ; 45f0f (11:5f0f) -UnknownDungeon3TrainerHeader0: ; 45f0f (11:5f0f) - db $1 ; flag's bit - db ($0 << 4) ; trainer's view range - dw $d85f ; flag's byte - dw UnknownDungeon3MewtwoText ; 0x5f26 TextBeforeBattle - dw UnknownDungeon3MewtwoText ; 0x5f26 TextAfterBattle - dw UnknownDungeon3MewtwoText ; 0x5f26 TextEndBattle - dw UnknownDungeon3MewtwoText ; 0x5f26 TextEndBattle - - db $ff - -UnknownDungeon3Text1: ; 45f1c (11:5f1c) - db $08 ; asm - ld hl, UnknownDungeon3TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -UnknownDungeon3MewtwoText: ; 45f26 (11:5f26) - TX_FAR _UnknownDungeon3MewtwoText - db $8 - ld a, MEWTWO - call PlayCry - call WaitForSoundToFinish - jp TextScriptEnd - -INCLUDE "data/mapObjects/unknowndungeon3.asm" - -UnknownDungeon3Blocks: ; 45f58 (11:5f58) - INCBIN "maps/unknowndungeon3.blk" - -INCLUDE "data/mapHeaders/rocktunnel2.asm" - -RockTunnel2Script: ; 45feb (11:5feb) - call EnableAutoTextBoxDrawing - ld hl, RockTunnel2TrainerHeaders - ld de, RockTunnel2ScriptPointers - ld a, [W_ROCKTUNNEL2CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROCKTUNNEL2CURSCRIPT], a - ret - -RockTunnel2ScriptPointers: ; 45ffe (11:5ffe) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -RockTunnel2TextPointers: ; 46004 (11:6004) - dw RockTunnel2Text1 - dw RockTunnel2Text2 - dw RockTunnel2Text3 - dw RockTunnel2Text4 - dw RockTunnel2Text5 - dw RockTunnel2Text6 - dw RockTunnel2Text7 - dw RockTunnel2Text8 - -RockTunnel2TrainerHeaders: ; 46014 (11:6014) -RockTunnel2TrainerHeader0: ; 46014 (11:6014) - db $1 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d87d ; flag's byte - dw RockTunnel2BattleText2 ; 0x60c5 TextBeforeBattle - dw RockTunnel2AfterBattleText2 ; 0x60cf TextAfterBattle - dw RockTunnel2EndBattleText2 ; 0x60ca TextEndBattle - dw RockTunnel2EndBattleText2 ; 0x60ca TextEndBattle - -RockTunnel2TrainerHeader2: ; 46020 (11:6020) - db $2 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d87d ; flag's byte - dw RockTunnel2BattleText3 ; 0x60d4 TextBeforeBattle - dw RockTunnel2AfterBattleText3 ; 0x60de TextAfterBattle - dw RockTunnel2EndBattleText3 ; 0x60d9 TextEndBattle - dw RockTunnel2EndBattleText3 ; 0x60d9 TextEndBattle - -RockTunnel2TrainerHeader3: ; 4602c (11:602c) - db $3 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d87d ; flag's byte - dw RockTunnel2BattleText4 ; 0x60e3 TextBeforeBattle - dw RockTunnel2AfterBattleText4 ; 0x60ed TextAfterBattle - dw RockTunnel2EndBattleText4 ; 0x60e8 TextEndBattle - dw RockTunnel2EndBattleText4 ; 0x60e8 TextEndBattle - -RockTunnel2TrainerHeader4: ; 46038 (11:6038) - db $4 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d87d ; flag's byte - dw RockTunnel2BattleText5 ; 0x60f2 TextBeforeBattle - dw RockTunnel2AfterBattleText5 ; 0x60fc TextAfterBattle - dw RockTunnel2EndBattleText5 ; 0x60f7 TextEndBattle - dw RockTunnel2EndBattleText5 ; 0x60f7 TextEndBattle - -RockTunnel2TrainerHeader5: ; 46044 (11:6044) - db $5 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d87d ; flag's byte - dw RockTunnel2BattleText6 ; 0x6101 TextBeforeBattle - dw RockTunnel2AfterBattleText6 ; 0x610b TextAfterBattle - dw RockTunnel2EndBattleText6 ; 0x6106 TextEndBattle - dw RockTunnel2EndBattleText6 ; 0x6106 TextEndBattle - -RockTunnel2TrainerHeader6: ; 46050 (11:6050) - db $6 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d87d ; flag's byte - dw RockTunnel2BattleText7 ; 0x6110 TextBeforeBattle - dw RockTunnel2AfterBattleText7 ; 0x611a TextAfterBattle - dw RockTunnel2EndBattleText7 ; 0x6115 TextEndBattle - dw RockTunnel2EndBattleText7 ; 0x6115 TextEndBattle - -RockTunnel2TrainerHeader7: ; 4605c (11:605c) - db $7 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d87d ; flag's byte - dw RockTunnel2BattleText8 ; 0x611f TextBeforeBattle - dw RockTunnel2AfterBattleText8 ; 0x6129 TextAfterBattle - dw RockTunnel2EndBattleText8 ; 0x6124 TextEndBattle - dw RockTunnel2EndBattleText8 ; 0x6124 TextEndBattle - -RockTunnel2TrainerHeader8: ; 46068 (11:6068) - db $8 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d87d ; flag's byte - dw RockTunnel2BattleText9 ; 0x612e TextBeforeBattle - dw RockTunnel2AfterBattleText9 ; 0x6138 TextAfterBattle - dw RockTunnel2EndBattleText9 ; 0x6133 TextEndBattle - dw RockTunnel2EndBattleText9 ; 0x6133 TextEndBattle - - db $ff - -RockTunnel2Text1: ; 46075 (11:6075) - db $08 ; asm - ld hl, RockTunnel2TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -RockTunnel2Text2: ; 4607f (11:607f) - db $08 ; asm - ld hl, RockTunnel2TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -RockTunnel2Text3: ; 46089 (11:6089) - db $08 ; asm - ld hl, RockTunnel2TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -RockTunnel2Text4: ; 46093 (11:6093) - db $08 ; asm - ld hl, RockTunnel2TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -RockTunnel2Text5: ; 4609d (11:609d) - db $08 ; asm - ld hl, RockTunnel2TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -RockTunnel2Text6: ; 460a7 (11:60a7) - db $08 ; asm - ld hl, RockTunnel2TrainerHeader6 - call TalkToTrainer - jp TextScriptEnd - -RockTunnel2Text7: ; 460b1 (11:60b1) - db $08 ; asm - ld hl, RockTunnel2TrainerHeader7 - call TalkToTrainer - jp TextScriptEnd - -RockTunnel2Text8: ; 460bb (11:60bb) - db $08 ; asm - ld hl, RockTunnel2TrainerHeader8 - call TalkToTrainer - jp TextScriptEnd - -RockTunnel2BattleText2: ; 460c5 (11:60c5) - TX_FAR _RockTunnel2BattleText2 - db "@" - -RockTunnel2EndBattleText2: ; 460ca (11:60ca) - TX_FAR _RockTunnel2EndBattleText2 - db "@" - -RockTunnel2AfterBattleText2: ; 460cf (11:60cf) - TX_FAR _RockTunnel2AfterBattleText2 - db "@" - -RockTunnel2BattleText3: ; 460d4 (11:60d4) - TX_FAR _RockTunnel2BattleText3 - db "@" - -RockTunnel2EndBattleText3: ; 460d9 (11:60d9) - TX_FAR _RockTunnel2EndBattleText3 - db "@" - -RockTunnel2AfterBattleText3: ; 460de (11:60de) - TX_FAR _RockTunnel2AfterBattleText3 - db "@" - -RockTunnel2BattleText4: ; 460e3 (11:60e3) - TX_FAR _RockTunnel2BattleText4 - db "@" - -RockTunnel2EndBattleText4: ; 460e8 (11:60e8) - TX_FAR _RockTunnel2EndBattleText4 - db "@" - -RockTunnel2AfterBattleText4: ; 460ed (11:60ed) - TX_FAR _RockTunnel2AfterBattleText4 - db "@" - -RockTunnel2BattleText5: ; 460f2 (11:60f2) - TX_FAR _RockTunnel2BattleText5 - db "@" - -RockTunnel2EndBattleText5: ; 460f7 (11:60f7) - TX_FAR _RockTunnel2EndBattleText5 - db "@" - -RockTunnel2AfterBattleText5: ; 460fc (11:60fc) - TX_FAR _RockTunnel2AfterBattleText5 - db "@" - -RockTunnel2BattleText6: ; 46101 (11:6101) - TX_FAR _RockTunnel2BattleText6 - db "@" - -RockTunnel2EndBattleText6: ; 46106 (11:6106) - TX_FAR _RockTunnel2EndBattleText6 - db "@" - -RockTunnel2AfterBattleText6: ; 4610b (11:610b) - TX_FAR _RockTunnel2AfterBattleText6 - db "@" - -RockTunnel2BattleText7: ; 46110 (11:6110) - TX_FAR _RockTunnel2BattleText7 - db "@" - -RockTunnel2EndBattleText7: ; 46115 (11:6115) - TX_FAR _RockTunnel2EndBattleText7 - db "@" - -RockTunnel2AfterBattleText7: ; 4611a (11:611a) - TX_FAR _RockTunnel2AfterBattleText7 - db "@" - -RockTunnel2BattleText8: ; 4611f (11:611f) - TX_FAR _RockTunnel2BattleText8 - db "@" - -RockTunnel2EndBattleText8: ; 46124 (11:6124) - TX_FAR _RockTunnel2EndBattleText8 - db "@" - -RockTunnel2AfterBattleText8: ; 46129 (11:6129) - TX_FAR _RockTunnel2AfterBattleText8 - db "@" - -RockTunnel2BattleText9: ; 4612e (11:612e) - TX_FAR _RockTunnel2BattleText9 - db "@" - -RockTunnel2EndBattleText9: ; 46133 (11:6133) - TX_FAR _RockTunnel2EndBattleText9 - db "@" - -RockTunnel2AfterBattleText9: ; 46138 (11:6138) - TX_FAR _RockTunnel2AfterBattleText9 - db "@" - -INCLUDE "data/mapObjects/rocktunnel2.asm" - -RockTunnel2Blocks: ; 461a1 (11:61a1) - INCBIN "maps/rocktunnel2.blk" - -INCLUDE "data/mapHeaders/seafoamislands2.asm" - -SeafoamIslands2Script: ; 46315 (11:6315) - call EnableAutoTextBoxDrawing - ld hl, wFlags_0xcd60 - bit 7, [hl] - res 7, [hl] - jr z, .asm_46362 ; 0x4631f $41 - ld hl, Seafoam2HolesCoords - call CheckBoulderCoords - ret nc - ld hl, $d87f - ld a, [$cd3d] - cp $1 - jr nz, .asm_46340 ; 0x46330 $e - set 0, [hl] - ld a, $d9 - ld [$d079], a - ld a, $db - ld [$d07a], a - jr .asm_4634c ; 0x4633e $c -.asm_46340 - set 1, [hl] - ld a, $da - ld [$d079], a - ld a, $dc - ld [$d07a], a -.asm_4634c - ld a, [$d079] - ld [$cc4d], a - ld a, $11 - call Predef - ld a, [$d07a] - ld [$cc4d], a - ld a, $15 - jp Predef -.asm_46362 - ld a, $a0 - ld [$d71d], a - ld hl, Seafoam2HolesCoords - jp Func_46981 - -Seafoam2HolesCoords: ; 4636d (11:636d) - db $06,$12 - db $06,$17 - db $ff - -SeafoamIslands2TextPointers: ; 46372 (11:6372) - dw BoulderText - dw BoulderText - -INCLUDE "data/mapObjects/seafoamislands2.asm" - -SeafoamIslands2Blocks: ; 463be (11:63be) - INCBIN "maps/seafoamislands2.blk" - -INCLUDE "data/mapHeaders/seafoamislands3.asm" - -SeafoamIslands3Script: ; 46451 (11:6451) - call EnableAutoTextBoxDrawing - ld hl, wFlags_0xcd60 - bit 7, [hl] - res 7, [hl] - jr z, .asm_4649e ; 0x4645b $41 - ld hl, Seafoam3HolesCoords - call CheckBoulderCoords - ret nc - ld hl, $d880 - ld a, [$cd3d] - cp $1 - jr nz, .asm_4647c ; 0x4646c $e - set 0, [hl] - ld a, $db - ld [$d079], a - ld a, $df - ld [$d07a], a - jr .asm_46488 ; 0x4647a $c -.asm_4647c - set 1, [hl] - ld a, $dc - ld [$d079], a - ld a, $e0 - ld [$d07a], a -.asm_46488 - ld a, [$d079] - ld [$cc4d], a - ld a, $11 - call Predef - ld a, [$d07a] - ld [$cc4d], a - ld a, $15 - jp Predef -.asm_4649e - ld a, $a1 - ld [$d71d], a - ld hl, Seafoam3HolesCoords - jp Func_46981 - -Seafoam3HolesCoords: ; 464a9 (11:64a9) - db $06,$13 - db $06,$16 - db $ff - -SeafoamIslands3TextPointers: ; 464ae (11:64ae) - dw BoulderText - dw BoulderText - -INCLUDE "data/mapObjects/seafoamislands3.asm" - -SeafoamIslands3Blocks: ; 464fa (11:64fa) - INCBIN "maps/seafoamislands3.blk" - -INCLUDE "data/mapHeaders/seafoamislands4.asm" - -SeafoamIslands4Script: ; 4658d (11:658d) - call EnableAutoTextBoxDrawing - ld hl, wFlags_0xcd60 - bit 7, [hl] - res 7, [hl] - jr z, .asm_465dc ; 0x46597 $43 - ld hl, Seafoam4HolesCoords - call CheckBoulderCoords - ret nc - ld hl, $d881 - ld a, [$cd3d] - cp $1 - jr nz, .asm_465b8 ; 0x465a8 $e - set 0, [hl] - ld a, $dd - ld [$d079], a - ld a, $e1 - ld [$d07a], a - jr .asm_465c4 ; 0x465b6 $c -.asm_465b8 - set 1, [hl] - ld a, $de - ld [$d079], a - ld a, $e2 - ld [$d07a], a -.asm_465c4 - ld a, [$d079] - ld [$cc4d], a - ld a, $11 - call Predef - ld a, [$d07a] - ld [$cc4d], a - ld a, $15 - call Predef - jr .asm_465ed ; 0x465da $11 -.asm_465dc - ld a, $a2 - ld [$d71d], a - ld hl, Seafoam4HolesCoords - call Func_46981 - ld a, [$d732] - bit 4, a - ret nz -.asm_465ed - ld hl, SeafoamIslands4ScriptPointers - ld a, [W_SEAFOAMISLANDS4CURSCRIPT] - jp CallFunctionInTable - -Seafoam4HolesCoords: ; 465f6 (11:65f6) - db $10,$03 - db $10,$06 - db $ff - -SeafoamIslands4ScriptPointers: ; 465fb (11:65fb) - dw SeafoamIslands4Script0 - dw SeafoamIslands4Script1 - dw SeafoamIslands4Script2 - dw SeafoamIslands4Script3 - -SeafoamIslands4Script0: ; 46603 (11:6603) - ld a, [$d880] - and $3 - cp $3 - ret z - ld a, [W_YCOORD] - cp $8 - ret nz - ld a, [W_XCOORD] - cp $f - ret nz - ld hl, $ccd3 - ld de, RLEMovement46632 - call DecodeRLEList - dec a - ld [$cd38], a - call Func_3486 - ld hl, W_FLAGS_D733 - set 2, [hl] - ld a, $1 - ld [W_SEAFOAMISLANDS4CURSCRIPT], a - ret - -RLEMovement46632: ; 46632 (11:6632) - db $80,6 - db $10,5 - db $80,3 - db $ff - -SeafoamIslands4Script1: ; 46639 (11:6639) - ld a, [$cd38] - and a - ret nz - ld a, $0 - ld [W_SEAFOAMISLANDS4CURSCRIPT], a - ret - -SeafoamIslands4Script2: ; 46644 (11:6644) - ld a, [$d880] - and $3 - cp $3 - ret z - ld a, [W_XCOORD] - cp $12 - jr z, .asm_4665e - cp $13 - ld a, $0 - jr nz, .asm_4667b - ld de, RLEData_4667f - jr .asm_46661 -.asm_4665e - ld de, RLEData_46688 -.asm_46661 - ld hl, $ccd3 - call DecodeRLEList - dec a - ld [$cd38], a - xor a - ld [$c206], a - ld hl, $d730 - set 7, [hl] - ld hl, W_FLAGS_D733 - set 2, [hl] - ld a, $3 -.asm_4667b - ld [W_SEAFOAMISLANDS4CURSCRIPT], a - ret - -RLEData_4667f: ; 4667f (11:667f) - db $80,$06,$10,$02,$80,$04,$20,$01,$FF - -RLEData_46688: ; 46688 (11:6688) - db $80,$06,$10,$02,$80,$04,$FF - -SeafoamIslands4Script3: ; 4668f (11:668f) - ld a, [$cd38] - and a - ret nz - ld a, $0 - ld [W_SEAFOAMISLANDS4CURSCRIPT], a - ret - -SeafoamIslands4TextPointers: ; 4669a (11:669a) - dw BoulderText - dw BoulderText - dw BoulderText - dw BoulderText - dw BoulderText - dw BoulderText - -INCLUDE "data/mapObjects/seafoamislands4.asm" - -SeafoamIslands4Blocks: ; 46706 (11:6706) - INCBIN "maps/seafoamislands4.blk" - -INCLUDE "data/mapHeaders/seafoamislands5.asm" - -SeafoamIslands5Script: ; 46799 (11:6799) - call EnableAutoTextBoxDrawing - ld a, [W_SEAFOAMISLANDS5CURSCRIPT] - ld hl, SeafoamIslands5ScriptPointers - jp CallFunctionInTable - -SeafoamIslands5Script_467a5: ; 467a5 (11:67a5) - xor a - ld [W_SEAFOAMISLANDS5CURSCRIPT], a - ld [wJoypadForbiddenButtonsMask], a - ret - -SeafoamIslands5ScriptPointers: ; 467ad (11:67ad) - dw SeafoamIslands5Script0 - dw SeafoamIslands5Script1 - dw SeafoamIslands5Script2 - dw SeafoamIslands5Script3 - dw SeafoamIslands5Script4 - -SeafoamIslands5Script4: ; 467b7 (11:67b7) - ld a, [W_ISINBATTLE] - cp $ff - jr z, SeafoamIslands5Script_467a5 - call EndTrainerBattle - ld a, $0 - ld [W_SEAFOAMISLANDS5CURSCRIPT], a - ret - -SeafoamIslands5Script0: ; 467c7 (11:67c7) - ld a, [$d880] - and $3 - cp $3 - ret z - ld hl, CoordsData_467fe - call ArePlayerCoordsInArray - ret nc - ld a, [$cd3d] - cp $3 - jr nc, .asm_467e6 - ld a, $40 - ld [$ccd4], a - ld a, $2 - jr .asm_467e8 -.asm_467e6 - ld a, $1 -.asm_467e8 - ld [$cd38], a - ld a, $40 - ld [$ccd3], a - call Func_3486 - ld hl, W_FLAGS_D733 - res 2, [hl] - ld a, $1 - ld [W_SEAFOAMISLANDS5CURSCRIPT], a - ret - -CoordsData_467fe: ; 467fe (11:67fe) - db $11,$14 - db $11,$15 - db $10,$14 - db $10,$15 - db $FF - -SeafoamIslands5Script1: ; 46807 (11:6807) - ld a, [$cd38] - and a - ret nz - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $0 - ld [W_SEAFOAMISLANDS5CURSCRIPT], a - ret - -SeafoamIslands5Script2: ; 46816 (11:6816) - ld a, [$d881] - and $3 - cp $3 - ld a, $0 - jr z, .asm_46849 - ld hl, CoordsData_4684d - call ArePlayerCoordsInArray - ld a, $0 - jr nc, .asm_46849 - ld a, [$cd3d] - cp $1 - jr nz, .asm_46837 - ld de, RLEMovementData_46859 - jr .asm_4683a -.asm_46837 - ld de, RLEMovementData_46852 -.asm_4683a - ld hl, $ccd3 - call DecodeRLEList - dec a - ld [$cd38], a - call Func_3486 - ld a, $3 -.asm_46849 - ld [W_SEAFOAMISLANDS5CURSCRIPT], a - ret - -CoordsData_4684d: ; 4684d (11:684d) - db $0E,$04 - db $0E,$05 - db $FF - -RLEMovementData_46852: ; 46852 (11:6852) - db $40,$03 - db $10,$02 - db $40,$01 - db $FF - -RLEMovementData_46859: ; 46859 (11:6859) - db $40,$03 - db $10,$03 - db $40,$01 - db $FF - -SeafoamIslands5Script3: ; 46860 (11:6860) - ld a, [$cd38] - ld b, a - cp $1 - call z, SeaFoamIslands5Script_46872 - ld a, b - and a - ret nz - ld a, $0 - ld [W_SEAFOAMISLANDS5CURSCRIPT], a - ret - -SeaFoamIslands5Script_46872: ; 46872 (11:6872) - xor a - ld [$d700], a - ld [$d11a], a - jp ForceBikeOrSurf - -SeafoamIslands5TextPointers: ; 4687c (11:687c) - dw BoulderText - dw BoulderText - dw SeafoamIslands5Text3 - dw SeafoamIslands5Text4 - dw SeafoamIslands5Text5 - -SeafoamIslands5TrainerHeaders: ; 46886 (11:6886) -SeafoamIslands5TrainerHeader0: ; 46886 (11:6886) - db $2 ; flag's bit - db ($0 << 4) ; trainer's view range - dw $d882 ; flag's byte - dw SeafoamIslands5BattleText2 ; 0x68a2 TextBeforeBattle - dw SeafoamIslands5BattleText2 ; 0x68a2 TextAfterBattle - dw SeafoamIslands5BattleText2 ; 0x68a2 TextEndBattle - dw SeafoamIslands5BattleText2 ; 0x68a2 TextEndBattle - - db $ff - -SeafoamIslands5Text3: ; 46893 (11:6893) - db $08 ; asm - ld hl, SeafoamIslands5TrainerHeader0 - call TalkToTrainer - ld a, $4 - ld [W_SEAFOAMISLANDS5CURSCRIPT], a - jp TextScriptEnd - -SeafoamIslands5BattleText2: ; 468a2 (11:68a2) - TX_FAR _SeafoamIslands5BattleText2 - db $8 - ld a, ARTICUNO - call PlayCry - call WaitForSoundToFinish - jp TextScriptEnd - -SeafoamIslands5Text4: ; 468b2 (11:68b2) - TX_FAR _SeafoamIslands5Text4 - db "@" - -SeafoamIslands5Text5: ; 468b7 (11:68b7) - TX_FAR _SeafoamIslands5Text5 - db "@" - -INCLUDE "data/mapObjects/seafoamislands5.asm" - -SeafoamIslands5Blocks: ; 468fa (11:68fa) - INCBIN "maps/seafoamislands5.blk" - -Func_46981: ; 46981 (11:6981) - xor a - ld [$d71e], a - ld a, [$d72d] - bit 4, a - ret nz - call ArePlayerCoordsInArray - ret nc - ld a, [wWhichTrade] ; $cd3d - ld [$d71e], a - ld hl, $d72d - set 4, [hl] - ld hl, $d732 - set 4, [hl] - ret - -Func_469a0: ; 469a0 (11:69a0) - ld hl, $ffeb - xor a - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld de, $0 - ld hl, HiddenObjectMaps ; $6a40 -.asm_469ae - ld a, [hli] - ld b, a - cp $ff - jr z, .asm_469fc - ld a, [W_CURMAP] ; $d35e - cp b - jr z, .asm_469be - inc de - inc de - jr .asm_469ae -.asm_469be - ld hl, HiddenObjectPointers ; $6a96 - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - push hl - ld hl, wWhichTrade ; $cd3d - xor a - ld [hli], a - ld [hli], a - ld [hl], a - pop hl -.asm_469ce - ld a, [hli] - cp $ff - jr z, .asm_469fc - ld [$cd40], a - ld b, a - ld a, [hli] - ld [$cd41], a - ld c, a - call Func_46a01 - ld a, [$ffea] - and a - jr z, .asm_469f0 - inc hl - inc hl - inc hl - inc hl - push hl - ld hl, $cd3f - inc [hl] - pop hl - jr .asm_469ce -.asm_469f0 - ld a, [hli] - ld [wWhichTrade], a ; $cd3d - ld a, [hli] - ld [$cd3e], a - ld a, [hli] - ld h, [hl] - ld l, a - ret -.asm_469fc - ld a, $ff - ld [$ffee], a - ret - -Func_46a01: ; 46a01 (11:6a01) - ld a, [$c109] - cp $4 - jr z, .asm_46a16 - cp $8 - jr z, .asm_46a25 - cp $c - jr z, .asm_46a2b - ld a, [W_YCOORD] ; $d361 - inc a - jr .asm_46a1a -.asm_46a16 - ld a, [W_YCOORD] ; $d361 - dec a -.asm_46a1a - cp b - jr nz, .asm_46a3b - ld a, [W_XCOORD] ; $d362 - cp c - jr nz, .asm_46a3b - jr .asm_46a38 -.asm_46a25 - ld a, [W_XCOORD] ; $d362 - dec a - jr .asm_46a2f -.asm_46a2b - ld a, [W_XCOORD] ; $d362 - inc a -.asm_46a2f - cp c - jr nz, .asm_46a3b - ld a, [W_YCOORD] ; $d361 - cp b - jr nz, .asm_46a3b -.asm_46a38 - xor a - jr .asm_46a3d -.asm_46a3b - ld a, $ff -.asm_46a3d - ld [$ffea], a - ret - -INCLUDE "data/hidden_objects.asm" - -SECTION "bank12",ROMX,BANK[$12] - -INCLUDE "data/mapHeaders/route7.asm" - -INCLUDE "data/mapObjects/route7.asm" - -Route7Blocks: ; 48051 (12:4051) - INCBIN "maps/route7.blk" - -CeladonPokecenterBlocks: ; 480ab (12:40ab) -RockTunnelPokecenterBlocks: ; 480ab (12:40ab) -MtMoonPokecenterBlocks: ; 480ab (12:40ab) - INCBIN "maps/mtmoonpokecenter.blk" - -Route18GateBlocks: ; 480c7 (12:40c7) -Route15GateBlocks: ; 480c7 (12:40c7) -Route11GateBlocks: ; 480c7 (12:40c7) - INCBIN "maps/route11gate.blk" - -Route18GateUpstairsBlocks: ; 480db (12:40db) -Route16GateUpstairsBlocks: ; 480db (12:40db) -Route12GateUpstairsBlocks: ; 480db (12:40db) -Route15GateUpstairsBlocks: ; 480db (12:40db) -Route11GateUpstairsBlocks: ; 480db (12:40db) - INCBIN "maps/route11gateupstairs.blk" - -Func_480eb: ; 480eb (12:40eb) - call Load16BitRegisters - ld a, [rBGP] ; $ff47 - or b - ld [rBGP], a ; $ff47 - ld c, $4 - call DelayFrames - ld a, [rBGP] ; $ff47 - and $fc - ld [rBGP], a ; $ff47 - ret - -Func_480ff: ; 480ff (12:40ff) - call Load16BitRegisters - ld a, $1 - ld [$d0a0], a - xor a -.asm_48108 - ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) - call Func_48119 - call Func_48119 - dec b - ld a, b - jr nz, .asm_48108 - xor a - ld [$d0a0], a - ret - -Func_48119: ; 48119 (12:4119) - ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND) - xor b - ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) - ld [rWY], a ; $ff4a - ld c, $3 - jp DelayFrames - -Func_48125: ; 48125 (12:4125) - call Load16BitRegisters - xor a -.asm_48129 - ld [$ff97], a - call Func_4813f - ld c, $1 - call DelayFrames - call Func_4813f - dec b - ld a, b - jr nz, .asm_48129 - ld a, $7 - ld [rWX], a ; $ff4b - ret - -Func_4813f: ; 4813f (12:413f) - ld a, [$ff97] - xor b - ld [$ff97], a - bit 7, a - jr z, .asm_48149 - xor a -.asm_48149 - add $7 - ld [rWX], a ; $ff4b - ld c, $4 - jp DelayFrames - -Route7Script: ; 48152 (12:4152) - jp EnableAutoTextBoxDrawing - -Route7TextPointers: ; 48155 (12:4155) - dw Route7Text1 - -Route7Text1: ; 48157 (12:4157) - TX_FAR _Route7Text1 - db "@" - -INCLUDE "data/mapHeaders/redshouse1f.asm" - -RedsHouse1FScript: ; 48168 (12:4168) - jp EnableAutoTextBoxDrawing - -RedsHouse1FTextPointers: ; 4816b (12:416b) - dw RedsHouse1FText1 - dw RedsHouse1FText2 - -RedsHouse1FText1: ; 4816f (12:416f) ; 416F Mom - db 8 - ld a, [$D72E] - bit 3, a - jr nz, .heal ; if player has received a Pokémon from Oak, heal team - ld hl, MomWakeUpText - call PrintText - jr .done -.heal - call MomHealPokemon -.done - jp TextScriptEnd - -MomWakeUpText: ; 48185 (12:4185) - TX_FAR _MomWakeUpText - db "@" - -MomHealPokemon: ; 4818a (12:418a) - ld hl, MomHealText1 - call PrintText - call GBFadeOut2 - call ReloadMapData - PREDEF HealPartyPredef - ld a, MUSIC_PKMN_HEALED - ld [$C0EE], a - call PlaySound ; play sound? -.next - ld a, [$C026] - cp MUSIC_PKMN_HEALED - jr z, .next - ld a, [$D35B] - ld [$C0EE], a - call PlaySound - call GBFadeIn2 - ld hl, MomHealText2 - jp PrintText - -MomHealText1: ; 481bc (12:41bc) - TX_FAR _MomHealText1 - db "@" -MomHealText2: ; 481c1 (12:41c1) - TX_FAR _MomHealText2 - db "@" - -RedsHouse1FText2: ; 0x481c6 TV - db 8 - ld a,[$C109] - cp 4 - ld hl,TVWrongSideText - jr nz,.done ; if player is not facing up - ld hl,StandByMeText -.done - call PrintText - jp TextScriptEnd - -StandByMeText: ; 481da (12:41da) - TX_FAR _StandByMeText - db "@" - -TVWrongSideText: ; 481df (12:41df) - TX_FAR _TVWrongSideText - db "@" - -INCLUDE "data/mapObjects/redshouse1f.asm" - -RedsHouse1FBlocks: ; 48209 (12:4209) - INCBIN "maps/redshouse1f.blk" - -INCLUDE "data/mapHeaders/celadonmart3.asm" - -CeladonMart3Script: ; 48225 (12:4225) - jp EnableAutoTextBoxDrawing - -CeladonMart3TextPointers: ; 48228 (12:4228) - dw CeladonMart3Text1 - dw CeladonMart3Text2 - dw CeladonMart3Text3 - dw CeladonMart3Text4 - dw CeladonMart3Text5 - dw CeladonMart3Text6 - dw CeladonMart3Text7 - dw CeladonMart3Text8 - dw CeladonMart3Text9 - dw CeladonMart3Text10 - dw CeladonMart3Text11 - dw CeladonMart3Text12 - dw CeladonMart3Text13 - dw CeladonMart3Text14 - dw CeladonMart3Text15 - dw CeladonMart3Text16 - dw CeladonMart3Text17 - -CeladonMart3Text1: ; 4824a (12:424a) - db $08 ; asm - ld a, [$d778] - bit 7, a - jr nz, .asm_a5463 ; 0x48250 - ld hl, TM18PreReceiveText - call PrintText - ld bc, (TM_18 << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, $d778 - set 7, [hl] - ld hl, ReceivedTM18Text - jr .asm_81359 ; 0x48268 -.BagFull - ld hl, TM18NoRoomText - jr .asm_81359 ; 0x4826d -.asm_a5463 ; 0x4826f - ld hl, TM18ExplanationText -.asm_81359 ; 0x48272 - call PrintText - jp TextScriptEnd - -TM18PreReceiveText: ; 48278 (12:4278) - TX_FAR _TM18PreReceiveText - db "@" - -ReceivedTM18Text: ; 4827d (12:427d) - TX_FAR _ReceivedTM18Text - db $0B, "@" - -TM18ExplanationText: ; 48283 (12:4283) - TX_FAR _TM18ExplanationText - db "@" - -TM18NoRoomText: ; 48288 (12:4288) - TX_FAR _TM18NoRoomText - db "@" - -CeladonMart3Text2: ; 4828d (12:428d) - TX_FAR _CeladonMart3Text2 - db "@" - -CeladonMart3Text3: ; 48292 (12:4292) - TX_FAR _CeladonMart3Text3 - db "@" - -CeladonMart3Text4: ; 48297 (12:4297) - TX_FAR _CeladonMart3Text4 - db "@" - -CeladonMart3Text5: ; 4829c (12:429c) - TX_FAR _CeladonMart3Text5 - db "@" - -CeladonMart3Text12 -CeladonMart3Text10: ; 482a1 (12:42a1) -CeladonMart3Text8: ; 482a1 (12:42a1) -CeladonMart3Text6: ; 482a1 (12:42a1) - TX_FAR _CeladonMart3Text6 - db "@" - -CeladonMart3Text7: ; 482a6 (12:42a6) - TX_FAR _CeladonMart3Text7 - db "@" - -CeladonMart3Text9: ; 482ab (12:42ab) - TX_FAR _CeladonMart3Text9 - db "@" - -CeladonMart3Text11: ; 482b0 (12:42b0) - TX_FAR _CeladonMart3Text11 - db "@" - -CeladonMart3Text13: ; 482b5 (12:42b5) - TX_FAR _CeladonMart3Text13 - db "@" - -CeladonMart3Text14: ; 482ba (12:42ba) - TX_FAR _CeladonMart3Text14 - db "@" - -CeladonMart3Text17: ; 482bf (12:42bf) -CeladonMart3Text16: ; 482bf (12:42bf) -CeladonMart3Text15: ; 482bf (12:42bf) - TX_FAR _CeladonMart3Text15 - db "@" - -INCLUDE "data/mapObjects/celadonmart3.asm" - -CeladonMart3Blocks: ; 48322 (12:4322) - INCBIN "maps/celadonmart3.blk" - -INCLUDE "data/mapHeaders/celadonmart4.asm" - -CeladonMart4Script: ; 48356 (12:4356) - jp EnableAutoTextBoxDrawing - -CeladonMart4TextPointers: ; 48359 (12:4359) - dw CeladonMart4Text1 - dw CeladonMart4Text2 - dw CeladonMart4Text3 - dw CeladonMart4Text4 - -CeladonMart4Text2: ; 48361 (12:4361) - TX_FAR _CeladonMart4Text2 - db "@" - -CeladonMart4Text3: ; 48366 (12:4366) - TX_FAR _CeladonMart4Text3 - db "@" - -CeladonMart4Text4: ; 4836b (12:436b) - TX_FAR _CeladonMart4Text4 - db "@" - -INCLUDE "data/mapObjects/celadonmart4.asm" - -CeladonMart4Blocks: ; 483a1 (12:43a1) - INCBIN "maps/celadonmart4.blk" - -INCLUDE "data/mapHeaders/celadonmartroof.asm" - -CeladonMartRoofScript: ; 483d5 (12:43d5) - jp EnableAutoTextBoxDrawing - -CeladonMartRoofScript_483d8: ; 483d8 (12:43d8) - xor a - ld [$cd37], a - ld de, $cc5b - ld hl, CeladonMartRoofDrinkList ; $4408 -.asm_483e2 - ld a, [hli] - and a - jr z, .asm_48404 - push hl - push de - ld [$d11e], a - ld b, a - ld a, $1c - call Predef ; indirect jump to Func_f8a5 (f8a5 (3:78a5)) - pop de - pop hl - ld a, b - and a - jr z, .asm_483e2 - ld a, [$d11e] - ld [de], a - inc de - push hl - ld hl, $cd37 - inc [hl] - pop hl - jr .asm_483e2 -.asm_48404 - ld a, $ff - ld [de], a - ret - -CeladonMartRoofDrinkList: ; 48408 (12:4408) - db FRESH_WATER - db SODA_POP - db LEMONADE - db $00 - -CeladonMartRoofScript_4840c: ; 4840c (12:440c) - ld hl, $d730 - set 6, [hl] - ld hl, UnnamedText_484ee ; $44ee - call PrintText - xor a - ld [wCurrentMenuItem], a ; $cc26 - ld a, $3 - ld [wMenuWatchedKeys], a ; $cc29 - ld a, [$cd37] - dec a - ld [wMaxMenuItem], a ; $cc28 - ld a, $2 - ld [wTopMenuItemY], a ; $cc24 - ld a, $1 - ld [wTopMenuItemX], a ; $cc25 - ld a, [$cd37] - dec a - ld bc, $2 - ld hl, $3 - call AddNTimes - dec l - ld b, l - ld c, $c - ld hl, wTileMap - call TextBoxBorder - call UpdateSprites - call CeladonMartRoofScript_48532 - ld hl, $d730 - res 6, [hl] - call HandleMenuInput - bit 1, a - ret nz - ld hl, $cc5b - ld a, [wCurrentMenuItem] ; $cc26 - ld d, $0 - ld e, a - add hl, de - ld a, [hl] - ld [$ffdb], a - cp FRESH_WATER - jr z, .asm_484b6 - cp SODA_POP - jr z, .asm_48492 - ld a, [$d778] - bit 6, a - jr nz, .asm_484e0 - ld hl, UnnamedText_48515 ; $4515 - call PrintText - call RemoveItemByIDBank12 - ld bc, (TM_49 << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, ReceivedTM49Text - call PrintText - ld hl, $d778 - set 6, [hl] - ret -.asm_48492 - ld a, [$d778] - bit 5, a - jr nz, .asm_484e0 - ld hl, UnnamedText_48504 ; $4504 - call PrintText - call RemoveItemByIDBank12 - ld bc, (TM_48 << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, UnnamedText_4850a ; $450a - call PrintText - ld hl, $d778 - set 5, [hl] - ret -.asm_484b6 - ld a, [$d778] - bit 4, a - jr nz, .asm_484e0 - ld hl, UnnamedText_484f3 ; $44f3 - call PrintText - call RemoveItemByIDBank12 - ld bc, (TM_13 << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, UnnamedText_484f9 ; $44f9 - call PrintText - ld hl, $d778 - set 4, [hl] - ret -.BagFull - ld hl, UnnamedText_48526 ; $4526 - jp PrintText -.asm_484e0 - ld hl, UnnamedText_4852c ; $452c - jp PrintText - -RemoveItemByIDBank12: ; 484e6 (12:44e6) - ld b, BANK(RemoveItemByID) - ld hl, RemoveItemByID - jp Bankswitch - -UnnamedText_484ee: ; 484ee (12:44ee) - TX_FAR _UnnamedText_484ee - db "@" - -UnnamedText_484f3: ; 484f3 (12:44f3) - TX_FAR _UnnamedText_484f3 - db $0d - db "@" - -UnnamedText_484f9: ; 484f9 (12:44f9) - TX_FAR _UnnamedText_484f9 - db $0b - TX_FAR _UnnamedText_484fe - db $0d - db "@" - -UnnamedText_48504: ; 48504 (12:4504) - TX_FAR _UnnamedText_48504 - db $0d - db "@" - -UnnamedText_4850a: ; 4850a (12:450a) - TX_FAR _UnnamedText_4850a - db $0b - TX_FAR _UnnamedText_4850f - db $0d - db "@" - -UnnamedText_48515: ; 48515 (12:4515) - TX_FAR _UnnamedText_48515 - db $0d - db "@" - -ReceivedTM49Text: ; 4851b (12:451b) - TX_FAR _ReceivedTM49Text - db $0b - TX_FAR _UnnamedText_48520 - db $0d - db "@" - -UnnamedText_48526: ; 48526 (12:4526) - TX_FAR _UnnamedText_48526 - db $0d - db "@" - -UnnamedText_4852c: ; 4852c (12:452c) - TX_FAR _UnnamedText_4852c - db $0d - db "@" - -CeladonMartRoofScript_48532: ; 48532 (12:4532) - ld hl, $cc5b - xor a - ld [$ffdb], a -.asm_48538 - ld a, [hli] - cp $ff - ret z - push hl - ld [$d11e], a - call GetItemName - FuncCoord 2, 2 ; $c3ca - ld hl, Coord - ld a, [$ffdb] - ld bc, $28 - call AddNTimes - ld de, $cd6d - call PlaceString - ld hl, $ffdb - inc [hl] - pop hl - jr .asm_48538 - -CeladonMartRoofTextPointers: ; 4855b (12:455b) - dw CeladonMartRoofText1 - dw CeladonMartRoofText2 - dw CeladonMartRoofText5 - dw CeladonMartRoofText5 - dw CeladonMartRoofText5 - dw CeladonMartRoofText6 - -CeladonMartRoofText1: ; 48567 (12:4567) - TX_FAR _CeladonMartRoofText1 - db "@" - -CeladonMartRoofText2: ; 4856c (12:456c) - db $08 ; asm - call CeladonMartRoofScript_483d8 - ld a, [$cd37] - and a - jr z, .asm_914b9 ; 0x48574 - ld a, $1 - ld [$cc3c], a - ld hl, CeladonMartRoofText4 - call PrintText - call YesNoChoice - ld a, [$cc26] - and a - jr nz, .asm_05aa4 ; 0x48588 - call CeladonMartRoofScript_4840c - jr .asm_05aa4 ; 0x4858d -.asm_914b9 ; 0x4858f - ld hl, CeladonMartRoofText3 - call PrintText -.asm_05aa4 ; 0x48595 - jp TextScriptEnd - -CeladonMartRoofText3: ; 48598 (12:4598) - TX_FAR _UnnamedText_48598 - db "@" - -CeladonMartRoofText4: ; 4859d (12:459d) - TX_FAR _CeladonMartRoofText4 - db "@" - -CeladonMartRoofText5: ; 485a2 (12:45a2) - db $f5 - -CeladonMartRoofText6: ; 485a3 (12:45a3) - TX_FAR _CeladonMartRoofText6 - db "@" - -INCLUDE "data/mapObjects/celadonmartroof.asm" - -CeladonMartRoofBlocks: ; 485cc (12:45cc) - INCBIN "maps/celadonmartroof.blk" - -INCLUDE "data/mapHeaders/celadonmartelevator.asm" - -CeladonMartElevatorScript: ; 48600 (12:4600) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - push hl - call nz, CeladonMartElevatorScript_4861c - pop hl - bit 7, [hl] - res 7, [hl] - call nz, Func_48654 - xor a - ld [$cf0c], a - inc a - ld [$cc3c], a - ret - -CeladonMartElevatorScript_4861c: ; 4861c (12:461c) - ld hl, $d3af - ld a, [$d73b] - ld b, a - ld a, [$d73c] - ld c, a - call CeladonMartElevatorScript_4862a - -CeladonMartElevatorScript_4862a: ; 4862a (12:462a) - inc hl - inc hl - ld a, b - ld [hli], a - ld a, c - ld [hli], a - ret - -CeladonMartElevatorScript_48631: ; 48631 (12:4631) - ld hl, CeladonMartElavatorFloors ; $4643 - call LoadItemList - ld hl, CeldaonMartElevatorWarpMaps ; $464a - ld de, $cc5b - ld bc, $000a - jp CopyData - -CeladonMartElavatorFloors: ; 48643 (12:4643) - db $05 ; num elements in list - db $56, $57, $58, $59, $5A ; "1F", "2F", "3F", "4F, "5F" - db $FF ; terminator - -CeldaonMartElevatorWarpMaps: ; 4864a (12:464a) -; first byte is warp number -; second byte is map number -; These specify where the player goes after getting out of the elevator. - db $05, CELADON_MART_1 - db $02, CELADON_MART_2 - db $02, CELADON_MART_3 - db $02, CELADON_MART_4 - db $02, CELADON_MART_5 - -Func_48654: ; 48654 (12:4654) - ld b, BANK(Func_7bf15) - ld hl, Func_7bf15 - jp Bankswitch - -CeladonMartElevatorTextPointers: ; 4865c (12:465c) - dw CeladonMartElevatorText1 - -CeladonMartElevatorText1: ; 4865e (12:465e) - db $08 ; asm - call CeladonMartElevatorScript_48631 - ld hl, CeldaonMartElevatorWarpMaps ; $464a - ld a, $61 - call Predef - jp TextScriptEnd - -INCLUDE "data/mapObjects/celadonmartelevator.asm" - -CeladonMartElevatorBlocks: ; 48684 (12:4684) - INCBIN "maps/celadonmartelevator.blk" - -INCLUDE "data/mapHeaders/celadonmansion1.asm" - -CeladonMansion1Script: ; 48694 (12:4694) - jp EnableAutoTextBoxDrawing - -CeladonMansion1TextPointers: ; 48697 (12:4697) - dw CeladonMansion1Text1 - dw CeladonMansion1Text2 - dw CeladonMansion1Text3 - dw CeladonMansion1Text4 - dw CeladonMansion1Text5 - -Func_486a1: ; 486a1 (12:46a1) - call PlayCry - jp TextScriptEnd - -CeladonMansion1Text1: ; 486a7 (12:46a7) - TX_FAR _CeladonMansion1Text1 - db $08 ; asm - ld a, $4d - jp Func_486a1 - -CeladonMansion1Text2: ; 486b1 (12:46b1) - TX_FAR _CeladonMansion1Text2 - db "@" - -CeladonMansion1Text3: ; 486b6 (12:46b6) - TX_FAR _CeladonMansion1Text3 - db $8 - ld a, $4 - jp Func_486a1 - -CeladonMansion1Text4: ; 486c0 (12:46c0) - TX_FAR _CeladonMansion1Text4 - db $8 - ld a, $f - jp Func_486a1 - -CeladonMansion1Text5: ; 486ca (12:46ca) - TX_FAR _CeladonMansion1Text5 - db "@" - -INCLUDE "data/mapObjects/celadonmansion1.asm" - -CeladonMansion1Blocks: ; 48716 (12:4716) - INCBIN "maps/celadonmansion1.blk" - -INCLUDE "data/mapHeaders/celadonmansion2.asm" - -CeladonMansion2Script: ; 4873a (12:473a) - call EnableAutoTextBoxDrawing - ret - -CeladonMansion2TextPointers: ; 4873e (12:473e) - dw CeladonMansion2Text1 - -CeladonMansion2Text1: ; 48740 (12:4740) - TX_FAR _CeladonMansion2Text1 - db "@" - -INCLUDE "data/mapObjects/celadonmansion2.asm" - -CeladonMansion2Blocks: ; 4876c (12:476c) - INCBIN "maps/celadonmansion2.blk" - -INCLUDE "data/mapHeaders/celadonmansion3.asm" - -CeladonMansion3Script: ; 48790 (12:4790) - jp EnableAutoTextBoxDrawing - -CeladonMansion3TextPointers: ; 48793 (12:4793) - dw ProgrammerText - dw GraphicArtistText - dw WriterText - dw DirectorText - dw GameFreakPCText1 - dw GameFreakPCText2 - dw GameFreakPCText3 - dw GameFreakSignText - -ProgrammerText: ; 487a3 (12:47a3) - TX_FAR _ProgrammerText - db "@" - -GraphicArtistText: ; 487a8 (12:47a8) - TX_FAR _GraphicArtistText - db "@" - -WriterText: ; 487ad (12:47ad) - TX_FAR _WriterText - db "@" - -DirectorText: ; 487b2 (12:47b2) - db $08 ; asm - - ; check pokédex - ld hl, wPokedexOwned - ld b, wPokedexOwnedEnd - wPokedexOwned - call CountSetBits - ld a, [$d11e] - cp 150 - jr nc, .CompletedDex - ld hl, .GameDesigner - jr .done -.CompletedDex - ld hl, .CompletedDexText -.done - call PrintText - jp TextScriptEnd - -.GameDesigner ; 487d0 (12:47d0) - TX_FAR _GameDesignerText - db "@" - -.CompletedDexText - TX_FAR _CompletedDexText - db $6 - db $8 ; asm - ld hl, DisplayDiploma - ld b, BANK(DisplayDiploma) - call Bankswitch - ld a, $1 - ld [$cc3c], a - jp TextScriptEnd - -GameFreakPCText1: ; 487eb (12:47eb) - TX_FAR _CeladonMansion3Text5 - db "@" - -GameFreakPCText2: ; 487f0 (12:47f0) - TX_FAR _CeladonMansion3Text6 - db "@" - -GameFreakPCText3: ; 487f5 (12:47f5) - TX_FAR _CeladonMansion3Text7 - db "@" - -GameFreakSignText: ; 487fa (12:47fa) - TX_FAR _CeladonMansion3Text8 - db "@" - -INCLUDE "data/mapObjects/celadonmansion3.asm" - -CeladonMansion3Blocks: ; 48847 (12:4847) - INCBIN "maps/celadonmansion3.blk" - -INCLUDE "data/mapHeaders/celadonmansion4.asm" - -CeladonMansion4Script: ; 4886b (12:486b) - jp EnableAutoTextBoxDrawing - -CeladonMansion4TextPointers: ; 4886e (12:486e) - dw CeladonMansion4Text1 - -CeladonMansion4Text1: ; 48870 (12:4870) - TX_FAR _CeladonMansion4Text1 - db "@" - -INCLUDE "data/mapObjects/celadonmansion4.asm" - -CeladonMansion4Blocks: ; 48894 (12:4894) - INCBIN "maps/celadonmansion4.blk" - -INCLUDE "data/mapHeaders/celadonpokecenter.asm" - -CeladonPokecenterScript: ; 488b8 (12:48b8) - call Func_22fa - jp EnableAutoTextBoxDrawing - -CeladonPokecenterTextPointers: ; 488be (12:48be) - dw CeladonPokecenterText1 - dw CeladonPokecenterText2 - dw CeladonPokecenterText3 - dw CeladonPokecenterText4 - -CeladonPokecenterText4: ; 488c6 (12:48c6) - db $f6 - -CeladonPokecenterText1: ; 488c7 (12:48c7) - db $ff - -CeladonPokecenterText2: ; 488c8 (12:48c8) - TX_FAR _CeladonPokecenterText2 - db "@" - -CeladonPokecenterText3: ; 488cd (12:48cd) - TX_FAR _CeladonPokecenterText3 - db "@" - -INCLUDE "data/mapObjects/celadonpokecenter.asm" - -INCLUDE "data/mapHeaders/celadongym.asm" - -CeladonGymScript: ; 4890a (12:490a) - ld hl, $d126 - bit 6, [hl] - res 6, [hl] - call nz, CeladonGymScript_48927 - call EnableAutoTextBoxDrawing - ld hl, CeladonGymTrainerHeaders - ld de, CeladonGymScriptPointers - ld a, [W_CELADONGYMCURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_CELADONGYMCURSCRIPT], a - ret - -CeladonGymScript_48927: ; 48927 (12:4927) - ld hl, Gym4CityName ; $4930 - ld de, Gym4LeaderName ; $493d - jp LoadGymLeaderAndCityName - -Gym4CityName: ; 48930 (12:4930) - db "CELADON CITY@" - -Gym4LeaderName: ; 4893d (12:493d) - db "ERIKA@" - -Func_48943: ; 48943 (12:4943) - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_CELADONGYMCURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -CeladonGymScriptPointers: ; 4894e (12:494e) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - dw CeladonGymScript3 - -CeladonGymScript3: ; 48956 (12:4956) - ld a, [W_ISINBATTLE] ; $d057 - cp $ff - jp z, Func_48943 - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - -Func_48963: ; 48963 (12:4963) - ld a, $9 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld hl, $d77c - set 1, [hl] - ld bc, (TM_21 << 8) | 1 - call GiveItem - jr nc, .BagFull - ld a, $a - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld hl, $d77c - set 0, [hl] - jr .asm_4898c -.BagFull - ld a, $b - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID -.asm_4898c - ld hl, W_OBTAINEDBADGES - set 3, [hl] - ld hl, $d72a - set 3, [hl] - - ; deactivate gym trainers - ld a, [$d77c] - or %11111100 - ld [$d77c], a - ld hl, $d77d - set 0, [hl] - - jp Func_48943 - -CeladonGymTextPointers: ; 489a6 (12:49a6) - dw CeladonGymText1 - dw CeladonGymText2 - dw CeladonGymText3 - dw CeladonGymText4 - dw CeladonGymText5 - dw CeladonGymText6 - dw CeladonGymText7 - dw CeladonGymText8 - dw CeladonGymText9 - dw TM21Text - dw TM21NoRoomText - -CeladonGymTrainerHeaders: ; 489bc (12:49bc) -CeladonGymTrainerHeader0: ; 489bc (12:49bc) - db $2 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d77c ; flag's byte - dw CeladonGymBattleText2 ; 0x4a8b TextBeforeBattle - dw CeladonGymAfterBattleText2 ; 0x4a95 TextAfterBattle - dw CeladonGymEndBattleText2 ; 0x4a90 TextEndBattle - dw CeladonGymEndBattleText2 ; 0x4a90 TextEndBattle - -CeladonGymTrainerHeader2: ; 489c8 (12:49c8) - db $3 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d77c ; flag's byte - dw CeladonGymBattleText3 ; 0x4aa4 TextBeforeBattle - dw CeladonGymAfterBattleText3 ; 0x4aae TextAfterBattle - dw CeladonGymEndBattleText3 ; 0x4aa9 TextEndBattle - dw CeladonGymEndBattleText3 ; 0x4aa9 TextEndBattle - -CeladonGymTrainerHeader3: ; 489d4 (12:49d4) - db $4 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d77c ; flag's byte - dw CeladonGymBattleText4 ; 0x4abd TextBeforeBattle - dw CeladonGymAfterBattleText4 ; 0x4ac7 TextAfterBattle - dw CeladonGymEndBattleText4 ; 0x4ac2 TextEndBattle - dw CeladonGymEndBattleText4 ; 0x4ac2 TextEndBattle - -CeladonGymTrainerHeader4: ; 489e0 (12:49e0) - db $5 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d77c ; flag's byte - dw CeladonGymBattleText5 ; 0x4ad6 TextBeforeBattle - dw CeladonGymAfterBattleText5 ; 0x4ae0 TextAfterBattle - dw CeladonGymEndBattleText5 ; 0x4adb TextEndBattle - dw CeladonGymEndBattleText5 ; 0x4adb TextEndBattle - -CeladonGymTrainerHeader5: ; 489ec (12:49ec) - db $6 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d77c ; flag's byte - dw CeladonGymBattleText6 ; 0x4aef TextBeforeBattle - dw CeladonGymAfterBattleText6 ; 0x4af9 TextAfterBattle - dw CeladonGymEndBattleText6 ; 0x4af4 TextEndBattle - dw CeladonGymEndBattleText6 ; 0x4af4 TextEndBattle - -CeladonGymTrainerHeader6: ; 489f8 (12:49f8) - db $7 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d77c ; flag's byte - dw CeladonGymBattleText7 ; 0x4b08 TextBeforeBattle - dw CeladonGymAfterBattleText7 ; 0x4b12 TextAfterBattle - dw CeladonGymEndBattleText7 ; 0x4b0d TextEndBattle - dw CeladonGymEndBattleText7 ; 0x4b0d TextEndBattle - -CeladonGymTrainerHeader7: ; 48a04 (12:4a04) - db $8 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d77c ; flag's byte - dw CeladonGymBattleText8 ; 0x4b21 TextBeforeBattle - dw CeladonGymAfterBattleText8 ; 0x4b2b TextAfterBattle - dw CeladonGymEndBattleText8 ; 0x4b26 TextEndBattle - dw CeladonGymEndBattleText8 ; 0x4b26 TextEndBattle - - db $ff - -CeladonGymText1: ; 48a11 (12:4a11) - db $08 ; asm - ld a, [$d77c] - bit 1, a - jr z, .asm_16064 ; 0x48a17 - bit 0, a - jr nz, .asm_3b22c ; 0x48a1b - call z, Func_48963 - call DisableWaitingAfterTextDisplay - jr .asm_96252 ; 0x48a23 -.asm_3b22c ; 0x48a25 - ld hl, UnnamedText_48a68 - call PrintText - jr .asm_96252 ; 0x48a2b -.asm_16064 ; 0x48a2d - ld hl, UnnamedText_48a5e - call PrintText - ld hl, $d72d - set 6, [hl] - set 7, [hl] - ld hl, UnnamedText_48a63 - ld de, UnnamedText_48a63 - call PreBattleSaveRegisters - ldh a, [$8c] - ld [$cf13], a - call EngageMapTrainer - call InitBattleEnemyParameters - ld a, $4 - ld [$d05c], a - ld a, $3 - ld [W_CELADONGYMCURSCRIPT], a - ld [W_CURMAPSCRIPT], a -.asm_96252 ; 0x48a5b - jp TextScriptEnd - -UnnamedText_48a5e: ; 48a5e (12:4a5e) - TX_FAR _UnnamedText_48a5e - db "@" - -UnnamedText_48a63: ; 48a63 (12:4a63) - TX_FAR _UnnamedText_48a63 - db "@" - -UnnamedText_48a68: ; 48a68 (12:4a68) - TX_FAR _UnnamedText_48a68 - db "@" - -CeladonGymText9: ; 48a6d (12:4a6d) -UnnamedText_48a6d: ; 48a6d (12:4a6d) - TX_FAR _UnnamedText_48a6d - db "@" - -TM21Text: ; 48a72 (12:4a72) - TX_FAR _ReceivedTM21Text - db $0B - TX_FAR _TM21ExplanationText - db "@" - -TM21NoRoomText: ; 48a7c (12:4a7c) - TX_FAR _TM21NoRoomText - db "@" - -CeladonGymText2: ; 48a81 (12:4a81) - db $08 ; asm - ld hl, CeladonGymTrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -CeladonGymBattleText2: ; 48a8b (12:4a8b) - TX_FAR _CeladonGymBattleText2 - db "@" - -CeladonGymEndBattleText2: ; 48a90 (12:4a90) - TX_FAR _CeladonGymEndBattleText2 - db "@" - -CeladonGymAfterBattleText2: ; 48a95 (12:4a95) - TX_FAR _CeladonGymAfterBattleText2 - db "@" - -CeladonGymText3: ; 48a9a (12:4a9a) - db $08 ; asm - ld hl, CeladonGymTrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -CeladonGymBattleText3: ; 48aa4 (12:4aa4) - TX_FAR _CeladonGymBattleText3 - db "@" - -CeladonGymEndBattleText3: ; 48aa9 (12:4aa9) - TX_FAR _CeladonGymEndBattleText3 - db "@" - -CeladonGymAfterBattleText3: ; 48aae (12:4aae) - TX_FAR _CeladonGymAfterBattleText3 - db "@" - -CeladonGymText4: ; 48ab3 (12:4ab3) - db $08 ; asm - ld hl, CeladonGymTrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -CeladonGymBattleText4: ; 48abd (12:4abd) - TX_FAR _CeladonGymBattleText4 - db "@" - -CeladonGymEndBattleText4: ; 48ac2 (12:4ac2) - TX_FAR _CeladonGymEndBattleText4 - db "@" - -CeladonGymAfterBattleText4: ; 48ac7 (12:4ac7) - TX_FAR _CeladonGymAfterBattleText4 - db "@" - -CeladonGymText5: ; 48acc (12:4acc) - db $08 ; asm - ld hl, CeladonGymTrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -CeladonGymBattleText5: ; 48ad6 (12:4ad6) - TX_FAR _CeladonGymBattleText5 - db "@" - -CeladonGymEndBattleText5: ; 48adb (12:4adb) - TX_FAR _CeladonGymEndBattleText5 - db "@" - -CeladonGymAfterBattleText5: ; 48ae0 (12:4ae0) - TX_FAR _CeladonGymAfterBattleText5 - db "@" - -CeladonGymText6: ; 48ae5 (12:4ae5) - db $08 ; asm - ld hl, CeladonGymTrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -CeladonGymBattleText6: ; 48aef (12:4aef) - TX_FAR _CeladonGymBattleText6 - db "@" - -CeladonGymEndBattleText6: ; 48af4 (12:4af4) - TX_FAR _CeladonGymEndBattleText6 - db "@" - -CeladonGymAfterBattleText6: ; 48af9 (12:4af9) - TX_FAR _CeladonGymAfterBattleText6 - db "@" - -CeladonGymText7: ; 48afe (12:4afe) - db $08 ; asm - ld hl, CeladonGymTrainerHeader6 - call TalkToTrainer - jp TextScriptEnd - -CeladonGymBattleText7: ; 48b08 (12:4b08) - TX_FAR _CeladonGymBattleText7 - db "@" - -CeladonGymEndBattleText7: ; 48b0d (12:4b0d) - TX_FAR _CeladonGymEndBattleText7 - db "@" - -CeladonGymAfterBattleText7: ; 48b12 (12:4b12) - TX_FAR _CeladonGymAfterBattleText7 - db "@" - -CeladonGymText8: ; 48b17 (12:4b17) - db $08 ; asm - ld hl, CeladonGymTrainerHeader7 - call TalkToTrainer - jp TextScriptEnd - -CeladonGymBattleText8: ; 48b21 (12:4b21) - TX_FAR _CeladonGymBattleText8 - db "@" - -CeladonGymEndBattleText8: ; 48b26 (12:4b26) - TX_FAR _CeladonGymEndBattleText8 - db "@" - -CeladonGymAfterBattleText8: ; 48b2b (12:4b2b) - TX_FAR _CeladonGymAfterBattleText8 - db "@" - -INCLUDE "data/mapObjects/celadongym.asm" - -CeladonGymBlocks: ; 48b84 (12:4b84) - INCBIN "maps/celadongym.blk" - -INCLUDE "data/mapHeaders/celadongamecorner.asm" - -CeladonGameCornerScript: ; 48bbd (12:4bbd) - call CeladonGameCornerScript_48bcf - call Func_48bec - call EnableAutoTextBoxDrawing - ld hl, CeladonGameCornerScriptPointers - ld a, [W_CELADONGAMECORNERCURSCRIPT] - jp CallFunctionInTable - -CeladonGameCornerScript_48bcf: ; 48bcf (12:4bcf) - ld hl, $d126 - bit 6, [hl] - res 6, [hl] - ret z - call GenRandom - ld a, [$ffd3] - cp $7 - jr nc, .asm_48be2 - ld a, $8 -.asm_48be2 - srl a - srl a - srl a - ld [$cd05], a - ret - -Func_48bec: ; 48bec (12:4bec) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - ret z - ld a, [$d77e] - bit 1, a - ret nz - ld a, $2a - ld [$d09f], a - ld bc, $0208 - ld a, $17 - jp Predef - -CeladonGameCornerScript_48c07: ; 48c07 (12:4c07) - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_CELADONGAMECORNERCURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -CeladonGameCornerScriptPointers: ; 48c12 (12:4c12) - dw CeladonGameCornerScript0 - dw CeladonGameCornerScript1 - dw CeladonGameCornerScript2 - -CeladonGameCornerScript0: ; 48c18 (12:4c18) - ret - -CeladonGameCornerScript1: ; 48c19 (12:4c19) - ld a, [W_ISINBATTLE] - cp $ff - jp z, CeladonGameCornerScript_48c07 - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld a, $d - ld [H_SPRITEHEIGHT], a - call DisplayTextID - ld a, $b - ld [H_SPRITEHEIGHT], a - call SetSpriteMovementBytesToFF - ld de, MovementData_48c5a - ld a, [W_YCOORD] - cp $6 - jr nz, .asm_48c43 - ld de, MovementData_48c63 - jr .asm_48c4d -.asm_48c43 - ld a, [W_XCOORD] - cp $8 - jr nz, .asm_48c4d - ld de, MovementData_48c63 -.asm_48c4d - ld a, $b - ld [H_DOWNARROWBLINKCNT2], a - call MoveSprite - ld a, $2 - ld [W_CELADONGAMECORNERCURSCRIPT], a - ret - -MovementData_48c5a: ; 48c5a (12:4c5a) - db $00,$C0,$C0,$40,$C0,$C0,$C0,$C0,$FF - -MovementData_48c63: ; 48c63 (12:4c63) - db $C0,$C0,$C0,$C0,$C0,$FF - -CeladonGameCornerScript2: ; 48c69 (12:4c69) - ld a, [$d730] - bit 0, a - ret nz - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $46 - ld [$cc4d], a - ld a, $11 - call Predef - ld hl, $d126 - set 5, [hl] - set 6, [hl] - ld a, $0 - ld [W_CELADONGAMECORNERCURSCRIPT], a - ret - -CeladonGameCornerTextPointers: ; 48c8a (12:4c8a) - dw CeladonGameCornerText1 - dw CeladonGameCornerText2 - dw CeladonGameCornerText3 - dw CeladonGameCornerText4 - dw CeladonGameCornerText5 - dw CeladonGameCornerText6 - dw CeladonGameCornerText7 - dw CeladonGameCornerText8 - dw CeladonGameCornerText9 - dw CeladonGameCornerText10 - dw CeladonGameCornerText11 - dw CeladonGameCornerText12 - dw CeladonGameCornerText13 - -CeladonGameCornerText1: ; 48ca4 (12:4ca4) - TX_FAR _CeladonGameCornerText1 - db "@" - -CeladonGameCornerText2: ; 48ca9 (12:4ca9) - db $08 ; asm - call Func_48f1e - ld hl, UnnamedText_48d22 - call PrintText - call YesNoChoice - ld a, [$cc26] - and a - jr nz, .asm_c650b ; 0x48cba - ld b,COIN_CASE - call IsItemInBag - jr z, .asm_ed086 ; 0x48cc1 - call Has9990Coins - jr nc, .asm_31338 ; 0x48cc6 - xor a - ldh [$9f], a - ldh [$a1], a - ld a, $10 - ldh [$a0], a - call HasEnoughMoney - jr nc, .asm_b6ef0 ; 0x48cd4 - ld hl, UnnamedText_48d31 ; $4d31 - jr .asm_e2afd ; 0x48cd9 -.asm_b6ef0 ; 0x48cdb - xor a - ldh [$9f], a - ldh [$a1], a - ld a, $10 - ldh [$a0], a - ld hl, $ffa1 - ld de, $d349 - ld c, $3 - ld a, $c - call Predef - xor a - ldh [$9f], a - ldh [$a0], a - ld a, $50 - ldh [$a1], a - ld de, $d5a5 - ld hl, $ffa1 - ld c, $2 - ld a, $b - call Predef - call Func_48f1e - ld hl, UnnamedText_48d27 - jr .asm_e2afd ; 0x48d0d -.asm_c650b ; 0x48d0f - ld hl, UnnamedText_48d2c - jr .asm_e2afd ; 0x48d12 -.asm_31338 ; 0x48d14 - ld hl, UnnamedText_48d36 - jr .asm_e2afd ; 0x48d17 -.asm_ed086 ; 0x48d19 - ld hl, UnnamedText_48d3b -.asm_e2afd ; 0x48d1c - call PrintText - jp TextScriptEnd - -UnnamedText_48d22: ; 48d22 (12:4d22) - TX_FAR _UnnamedText_48d22 - db "@" - -UnnamedText_48d27: ; 48d27 (12:4d27) - TX_FAR _UnnamedText_48d27 - db "@" - -UnnamedText_48d2c: ; 48d2c (12:4d2c) - TX_FAR _UnnamedText_48d2c - db "@" - -UnnamedText_48d31: ; 48d31 (12:4d31) - TX_FAR _UnnamedText_48d31 - db "@" - -UnnamedText_48d36: ; 48d36 (12:4d36) - TX_FAR _UnnamedText_48d36 - db "@" - -UnnamedText_48d3b: ; 48d3b (12:4d3b) - TX_FAR _UnnamedText_48d3b - db "@" - -CeladonGameCornerText3: ; 48d40 (12:4d40) - TX_FAR _CeladonGameCornerText3 - db "@" - -CeladonGameCornerText4: ; 48d45 (12:4d45) - TX_FAR _CeladonGameCornerText4 - db "@" - -CeladonGameCornerText5: ; 48d4a (12:4d4a) - db $08 ; asm - ld a, [$d77e] - bit 2, a - jr nz, .asm_d0957 ; 0x48d50 - ld hl, UnnamedText_48d9c - call PrintText - ld b, COIN_CASE - call IsItemInBag - jr z, .asm_5aef9 ; 0x48d5d - call Has9990Coins - jr nc, .asm_98546 ; 0x48d62 - xor a - ldh [$9f], a - ldh [$a0], a - ld a, $10 - ldh [$a1], a - ld de, $d5a5 - ld hl, $ffa1 - ld c, $2 - ld a, $b - call Predef - ld hl, $d77e - set 2, [hl] - ld a, $1 - ld [$cc3c], a - ld hl, Received10CoinsText - jr .asm_c7d1a ; 0x48d87 -.asm_d0957 ; 0x48d89 - ld hl, UnnamedText_48dac - jr .asm_c7d1a ; 0x48d8c -.asm_98546 ; 0x48d8e - ld hl, UnnamedText_48da7 - jr .asm_c7d1a ; 0x48d91 -.asm_5aef9 ; 0x48d93 - ld hl, UnnamedText_48f19 -.asm_c7d1a ; 0x48d96 - call PrintText - jp TextScriptEnd - -UnnamedText_48d9c: ; 48d9c (12:4d9c) - TX_FAR _UnnamedText_48d9c - db "@" - -Received10CoinsText: ; 48da1 (12:4da1) - TX_FAR _Received10CoinsText - db $0B, "@" - -UnnamedText_48da7: ; 48da7 (12:4da7) - TX_FAR _UnnamedText_48da7 - db "@" - -UnnamedText_48dac: ; 48dac (12:4dac) - TX_FAR _UnnamedText_48dac - db "@" - -CeladonGameCornerText6: ; 48db1 (12:4db1) - TX_FAR _CeladonGameCornerText6 - db "@" - -CeladonGameCornerText7: ; 48db6 (12:4db6) - db $08 ; asm - ld a, [$d77c] - bit 1, a - ld hl, UnnamedText_48dca ; $4dca - jr z, .asm_be3fd ; 0x48dbf - ld hl, UnnamedText_48dcf ; $4dcf -.asm_be3fd ; 0x48dc4 - call PrintText - jp TextScriptEnd - -UnnamedText_48dca: ; 48dca (12:4dca) - TX_FAR _UnnamedText_48dca - db "@" - -UnnamedText_48dcf: ; 48dcf (12:4dcf) - TX_FAR _UnnamedText_48dcf - db "@" - -CeladonGameCornerText8: ; 48dd4 (12:4dd4) - TX_FAR _CeladonGameCornerText8 - db "@" - -CeladonGameCornerText9: ; 48dd9 (12:4dd9) - db $08 ; asm - ld a, [$d77e] - bit 4, a - jr nz, .asm_ed8bc ; 0x48ddf - ld hl, UnnamedText_48e26 - call PrintText - ld b, COIN_CASE - call IsItemInBag - jr z, .asm_df794 ; 0x48dec - call Has9990Coins - jr nc, .asm_f17c3 ; 0x48df1 - xor a - ldh [$9f], a - ldh [$a0], a - ld a, $20 - ldh [$a1], a - ld de, $d5a5 - ld hl, $ffa1 - ld c, $2 - ld a, $b - call Predef - ld hl, $d77e - set 4, [hl] - ld hl, Received20CoinsText - jr .asm_0ddc2 ; 0x48e11 -.asm_ed8bc ; 0x48e13 - ld hl, UnnamedText_48e36 - jr .asm_0ddc2 ; 0x48e16 -.asm_f17c3 ; 0x48e18 - ld hl, UnnamedText_48e31 - jr .asm_0ddc2 ; 0x48e1b -.asm_df794 ; 0x48e1d - ld hl, UnnamedText_48f19 -.asm_0ddc2 ; 0x48e20 - call PrintText - jp TextScriptEnd - -UnnamedText_48e26: ; 48e26 (12:4e26) - TX_FAR _UnnamedText_48e26 - db "@" - -Received20CoinsText: ; 48e2b (12:4e2b) - TX_FAR _Received20CoinsText - db $0B, "@" - -UnnamedText_48e31: ; 48e31 (12:4e31) - TX_FAR _UnnamedText_48e31 - db "@" - -UnnamedText_48e36: ; 48e36 (12:4e36) - TX_FAR _UnnamedText_48e36 - db "@" - -CeladonGameCornerText10: ; 48e3b (12:4e3b) - db $08 ; asm - ld a, [$d77e] - bit 3, a - jr nz, .asm_ff080 ; 0x48e41 - ld hl, UnnamedText_48e88 ; $4e88 - call PrintText - ld b,COIN_CASE - call IsItemInBag - jr z, .asm_4fb0c ; 0x48e4e - call Has9990Coins - jr z, .asm_9505a ; 0x48e53 - xor a - ldh [$9f], a - ldh [$a0], a - ld a, $20 - ldh [$a1], a - ld de, $d5a5 - ld hl, $ffa1 - ld c, $2 - ld a, $b - call Predef - ld hl, $d77e - set 3, [hl] - ld hl, UnnamedText_48e8d - jr .asm_78d65 ; 0x48e73 -.asm_ff080 ; 0x48e75 - ld hl, UnnamedText_48e98 - jr .asm_78d65 ; 0x48e78 -.asm_9505a ; 0x48e7a - ld hl, UnnamedText_48e93 - jr .asm_78d65 ; 0x48e7d -.asm_4fb0c ; 0x48e7f - ld hl, UnnamedText_48f19 -.asm_78d65 ; 0x48e82 - call PrintText - jp TextScriptEnd - -UnnamedText_48e88: ; 48e88 (12:4e88) - TX_FAR _UnnamedText_48e88 - db "@" - -UnnamedText_48e8d: ; 48e8d (12:4e8d) - TX_FAR _UnnamedText_48e8d ; 0x9dceb - db $0B, "@" - -UnnamedText_48e93: ; 48e93 (12:4e93) - TX_FAR _UnnamedText_48e93 - db "@" - -UnnamedText_48e98: ; 48e98 (12:4e98) - TX_FAR _UnnamedText_48e98 - db "@" - -CeladonGameCornerText11: ; 48e9d (12:4e9d) - db $08 ; asm - ld hl, UnnamedText_48ece - call PrintText - ld hl, $d72d - set 6, [hl] - set 7, [hl] - ld hl, UnnamedText_48ed3 - ld de, UnnamedText_48ed3 - call PreBattleSaveRegisters - ldh a, [$8c] - ld [$cf13], a - call EngageMapTrainer - call InitBattleEnemyParameters - xor a - ldh [$b4], a - ldh [$b3], a - ldh [$b2], a - ld a, $1 - ld [W_CELADONGAMECORNERCURSCRIPT], a - jp TextScriptEnd - -UnnamedText_48ece: ; 48ece (12:4ece) - TX_FAR _UnnamedText_48ece - db "@" - -UnnamedText_48ed3: ; 48ed3 (12:4ed3) - TX_FAR _UnnamedText_48ed3 - db "@" - -CeladonGameCornerText13: ; 48ed8 (12:4ed8) - TX_FAR _UnnamedText_48ed8 - db "@" - -CeladonGameCornerText12: ; 48edd (12:4edd) - db $08 ; asm - ld a, $1 - ld [$cc3c], a - ld hl, UnnamedText_48f09 - call PrintText - call WaitForSoundToFinish - ld a, (SFX_02_57 - SFX_Headers_02) / 3 - call PlaySound - call WaitForSoundToFinish - ld hl, $d77e - set 1, [hl] - ld a, $43 - ld [$d09f], a - ld bc, $0208 - ld a, $17 - call Predef - jp TextScriptEnd - -UnnamedText_48f09: ; 48f09 (12:4f09) - TX_FAR _UnnamedText_48f09 ; 0x9ddb0 - db $8 - ld a, (SFX_02_49 - SFX_Headers_02) / 3 - call PlaySound - call WaitForSoundToFinish - jp TextScriptEnd - -UnnamedText_48f19: ; 48f19 (12:4f19) - TX_FAR _UnnamedText_48f19 - db "@" - -Func_48f1e: ; 48f1e (12:4f1e) - ld hl, $d730 - set 6, [hl] - FuncCoord 11, 0 ; $c3ab - ld hl, Coord - ld b, $5 - ld c, $7 - call TextBoxBorder - call UpdateSprites - FuncCoord 12, 1 ; $c3c0 - ld hl, Coord - ld b, $4 - ld c, $7 - call ClearScreenArea - FuncCoord 12, 2 ; $c3d4 - ld hl, Coord - ld de, GameCornerMoneyText - call PlaceString - FuncCoord 12, 3 ; $c3e8 - ld hl, Coord - ld de, GameCornerBlankText1 - call PlaceString - FuncCoord 12, 3 ; $c3e8 - ld hl, Coord - ld de, $d347 - ld c, $a3 - call PrintBCDNumber - FuncCoord 12, 4 ; $c3fc - ld hl, Coord - ld de, GameCornerCoinText - call PlaceString - FuncCoord 12, 5 ; $c410 - ld hl, Coord - ld de, GameCornerBlankText2 - call PlaceString - FuncCoord 15, 5 ; $c413 - ld hl, Coord - ld de, $d5a4 - ld c, $82 - call PrintBCDNumber - ld hl, $d730 - res 6, [hl] - ret - -GameCornerMoneyText: ; 48f7a (12:4f7a) - db "MONEY@" - -GameCornerCoinText: ; 48f80 (12:4f80) - db "COIN@" - -GameCornerBlankText1: ; 48f85 (12:4f85) - db " @" - -GameCornerBlankText2: ; 48f8d (12:4f8d) - db " @" - -Has9990Coins: ; 48f95 (12:4f95) - ld a, $99 - ld [$ffa0], a - ld a, $90 - ld [$ffa1], a - jp HasEnoughCoins - -INCLUDE "data/mapObjects/celadongamecorner.asm" - -CeladonGameCornerBlocks: ; 49003 (12:5003) - INCBIN "maps/celadongamecorner.blk" - -INCLUDE "data/mapHeaders/celadonmart5.asm" - -CeladonMart5Script: ; 49069 (12:5069) - jp EnableAutoTextBoxDrawing - -CeladonMart5TextPointers: ; 4906c (12:506c) - dw CeladonMart5Text1 - dw CeladonMart5Text2 - dw CeladonMart5Text3 - dw CeladonMart5Text4 - dw CeladonMart5Text5 - -CeladonMart5Text1: ; 49076 (12:5076) - TX_FAR _CeladonMart5Text1 - db "@" - -CeladonMart5Text2: ; 4907b (12:507b) - TX_FAR _CeladonMart5Text2 - db "@" - -CeladonMart5Text5: ; 49080 (12:5080) - TX_FAR _CeladonMart5Text5 - db "@" - -INCLUDE "data/mapObjects/celadonmart5.asm" - -CeladonMart5Blocks: ; 490bc (12:50bc) - INCBIN "maps/celadonmart5.blk" - -INCLUDE "data/mapHeaders/celadonprizeroom.asm" - -CeladonPrizeRoomScript: ; 490f0 (12:50f0) - jp EnableAutoTextBoxDrawing - -CeladonPrizeRoomTextPointers: ; 490f3 (12:50f3) - dw CeladonPrizeRoomText1 - dw CeladonPrizeRoomText2 - dw CeladonPrizeRoomText3 - dw CeladonPrizeRoomText3 - dw CeladonPrizeRoomText3 - -CeladonPrizeRoomText1: ; 490fd (12:50fd) - TX_FAR _CeladonPrizeRoomText1 - db "@" - -CeladonPrizeRoomText2: ; 49102 (12:5102) - TX_FAR _CeladonPrizeRoomText2 - db "@" - -CeladonPrizeRoomText3: ; 49107 (12:5107) - db $f7 - -INCLUDE "data/mapObjects/celadonprizeroom.asm" - -CeladonPrizeRoomBlocks: ; 49131 (12:5131) - INCBIN "maps/celadonprizeroom.blk" - -INCLUDE "data/mapHeaders/celadondiner.asm" - -CeladonDinerScript: ; 49151 (12:5151) - call EnableAutoTextBoxDrawing - ret - -CeladonDinerTextPointers: ; 49155 (12:5155) - dw CeladonDinerText1 - dw CeladonDinerText2 - dw CeladonDinerText3 - dw CeladonDinerText4 - dw CeladonDinerText5 - -CeladonDinerText1: ; 4915f (12:515f) - TX_FAR _CeladonDinerText1 - db "@" - -CeladonDinerText2: ; 49164 (12:5164) - TX_FAR _CeladonDinerText2 - db "@" - -CeladonDinerText3: ; 49169 (12:5169) - TX_FAR _CeladonDinerText3 - db "@" - -CeladonDinerText4: ; 4916e (12:516e) - TX_FAR _CeladonDinerText4 - db "@" - -CeladonDinerText5: ; 49173 (12:5173) - db $08 ; asm - ld a, [$d783] - bit 0, a - jr nz, .asm_eb14d ; 0x49179 - ld hl, UnnamedText_491a7 - call PrintText - ld bc, (COIN_CASE << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, $d783 - set 0, [hl] - ld hl, ReceivedCoinCaseText - call PrintText - jr .asm_68b61 ; 0x49194 -.BagFull - ld hl, CoinCaseNoRoomText - call PrintText - jr .asm_68b61 ; 0x4919c -.asm_eb14d ; 0x4919e - ld hl, UnnamedText_491b7 - call PrintText -.asm_68b61 ; 0x491a4 - jp TextScriptEnd - -UnnamedText_491a7: ; 491a7 (12:51a7) - TX_FAR _UnnamedText_491a7 - db "@" - -ReceivedCoinCaseText: ; 491ac (12:51ac) - TX_FAR _ReceivedCoinCaseText - db $11, "@" - -CoinCaseNoRoomText: ; 491b2 (12:51b2) - TX_FAR _CoinCaseNoRoomText - db "@" - -UnnamedText_491b7: ; 491b7 (12:51b7) - TX_FAR _UnnamedText_491b7 - db "@" - -INCLUDE "data/mapObjects/celadondiner.asm" - -CeladonDinerBlocks: ; 491ee (12:51ee) - INCBIN "maps/celadondiner.blk" - -INCLUDE "data/mapHeaders/celadonhouse.asm" - -CeladonHouseScript: ; 4920e (12:520e) - call EnableAutoTextBoxDrawing - ret - -CeladonHouseTextPointers: ; 49212 (12:5212) - dw CeladonHouseText1 - dw CeladonHouseText2 - dw CeladonHouseText3 - -CeladonHouseText1: ; 49218 (12:5218) - TX_FAR _CeladonHouseText1 - db "@" - -CeladonHouseText2: ; 4921d (12:521d) - TX_FAR _CeladonHouseText2 - db "@" - -CeladonHouseText3: ; 49222 (12:5222) - TX_FAR _CeladonHouseText3 - db "@" - -INCLUDE "data/mapObjects/celadonhouse.asm" - -CeladonHouseBlocks: ; 4924d (12:524d) - INCBIN "maps/celadonhouse.blk" - -INCLUDE "data/mapHeaders/celadonhotel.asm" - -CeladonHotelScript: ; 49269 (12:5269) - jp EnableAutoTextBoxDrawing - -CeladonHotelTextPointers: ; 4926c (12:526c) - dw CeladonHotelText1 - dw CeladonHotelText2 - dw CeladonHotelText3 - -CeladonHotelText1: ; 49272 (12:5272) - TX_FAR _CeladonHotelText1 - db "@" - -CeladonHotelText2: ; 49277 (12:5277) - TX_FAR _CeladonHotelText2 - db "@" - -CeladonHotelText3: ; 4927c (12:527c) - TX_FAR _CeladonHotelText3 - db "@" - -INCLUDE "data/mapObjects/celadonhotel.asm" - -CeladonHotelBlocks: ; 492a7 (12:52a7) - INCBIN "maps/celadonhotel.blk" - -INCLUDE "data/mapHeaders/mtmoonpokecenter.asm" - -MtMoonPokecenterScript: ; 492cf (12:52cf) - call Func_22fa - jp EnableAutoTextBoxDrawing - -MtMoonPokecenterTextPointers: ; 492d5 (12:52d5) - dw MtMoonPokecenterText1 - dw MtMoonPokecenterText2 - dw MtMoonPokecenterText3 - dw MtMoonPokecenterText4 - dw MtMoonPokecenterText5 - dw MtMoonPokecenterText6 - -MtMoonPokecenterText1: ; 492e1 (12:52e1) - db $ff - -MtMoonPokecenterText2: ; 492e2 (12:52e2) - TX_FAR _MtMoonPokecenterText1 - db "@" - -MtMoonPokecenterText3: ; 492e7 (12:52e7) - TX_FAR _MtMoonPokecenterText3 - db "@" - -MtMoonPokecenterText4: ; 492ec (12:52ec) - db $08 ; asm - ld a, [$d7c6] - add a - jp c, .asm_49353 - ld hl, UnnamedText_4935c - call PrintText - ld a, $13 - ld [$d125], a - call DisplayTextBoxID - call YesNoChoice - ld a, [$cc26] - and a - jp nz, .asm_4934e - ldh [$9f], a - ldh [$a1], a - ld a, $5 - ldh [$a0], a - call HasEnoughMoney - jr nc, .asm_faa09 ; 0x49317 - ld hl, UnnamedText_49366 - jr .asm_49356 ; 0x4931c -.asm_faa09 ; 0x4931e - ld bc,(MAGIKARP << 8) | 5 - call GivePokemon - jr nc, .asm_49359 ; 0x49324 - xor a - ld [wWhichTrade], a - ld [$cd3f], a - ld a, $5 - ld [$cd3e], a - ld hl, $cd3f - ld de, $d349 - ld c, $3 - ld a, $c - call Predef - ld a, $13 - ld [$d125], a - call DisplayTextBoxID - ld hl, $d7c6 - set 7, [hl] - jr .asm_49359 ; 0x4934c -.asm_4934e ; 0x4934e - ld hl, UnnamedText_49361 - jr .asm_49356 ; 0x49351 -.asm_49353 ; 0x49353 - ld hl, UnnamedText_4936b -.asm_49356 ; 0x49356 - call PrintText -.asm_49359 ; 0x49359 - jp TextScriptEnd - -UnnamedText_4935c: ; 4935c (12:535c) - TX_FAR _UnnamedText_4935c - db "@" - -UnnamedText_49361: ; 49361 (12:5361) - TX_FAR _UnnamedText_49361 - db "@" - -UnnamedText_49366: ; 49366 (12:5366) - TX_FAR _UnnamedText_49366 - db "@" - -UnnamedText_4936b: ; 4936b (12:536b) - TX_FAR _UnnamedText_4936b - db "@" - -MtMoonPokecenterText5: ; 49370 (12:5370) - TX_FAR _MtMoonPokecenterText5 - db "@" - -MtMoonPokecenterText6: ; 49375 (12:5375) - db $f6 - -INCLUDE "data/mapObjects/mtmoonpokecenter.asm" - -INCLUDE "data/mapHeaders/rocktunnelpokecenter.asm" - -RockTunnelPokecenterScript: ; 493ba (12:53ba) - call Func_22fa - jp EnableAutoTextBoxDrawing - -RockTunnelPokecenterTextPointers: ; 493c0 (12:53c0) - dw RockTunnelPokecenterText1 - dw RockTunnelPokecenterText2 - dw RockTunnelPokecenterText3 - dw RockTunnelPokecenterText4 - -RockTunnelPokecenterText1: ; 493c8 (12:53c8) - db $ff - -RockTunnelPokecenterText2: ; 493c9 (12:53c9) - TX_FAR _RockTunnelPokecenterText1 - db "@" - -RockTunnelPokecenterText3: ; 493ce (12:53ce) - TX_FAR _RockTunnelPokecenterText3 - db "@" - -RockTunnelPokecenterText4: ; 493d3 (12:53d3) - db $f6 - -INCLUDE "data/mapObjects/rocktunnelpokecenter.asm" - -INCLUDE "data/mapHeaders/route11gate.asm" - -Route11GateScript: ; 4940c (12:540c) - jp EnableAutoTextBoxDrawing - -Route11GateTextPointers: ; 4940f (12:540f) - dw Route11GateText1 - -Route11GateText1: ; 49411 (12:5411) - TX_FAR _Route11GateText1 - db "@" - -INCLUDE "data/mapObjects/route11gate.asm" - -INCLUDE "data/mapHeaders/route11gateupstairs.asm" - -Route11GateUpstairsScript: ; 49454 (12:5454) - jp DisableAutoTextBoxDrawing - -Route11GateUpstairsTextPointers: ; 49457 (12:5457) - dw Route11GateUpstairsText1 - dw Route11GateUpstairsText2 - dw Route11GateUpstairsText3 - dw Route11GateUpstairsText4 - -Route11GateUpstairsText1: ; 4945f (12:545f) - db $08 ; asm - xor a - ld [wWhichTrade], a - ld a, $54 - call Predef -asm_49469: ; 49469 (12:5469) - jp TextScriptEnd - -Route11GateUpstairsText2: ; 4946c (12:546c) - db $8 - ld a, [$d7d6] - add a - jr c, .asm_4949b ; 0x49471 $28 - ld a, $1e - ld [$ffdb], a - ld a, $47 - ld [$ffdc], a - ld [$d11e], a - call GetItemName - ld h, d - ld l, e - ld de, $cc5b - ld bc, $000d - call CopyData - ld a, $62 - call Predef - ld a, [$ffdb] - dec a - jr nz, .asm_494a1 ; 0x49494 $b - ld hl, $d7d6 - set 7, [hl] -.asm_4949b - ld hl, UnnamedText_494a3 - call PrintText -.asm_494a1 - jr asm_49469 ; 0x494a1 $c6 - -UnnamedText_494a3: ; 494a3 (12:54a3) - TX_FAR _UnnamedText_494a3 - db "@" - -Route11GateUpstairsText3: ; 494a8 (12:54a8) - db $08 ; asm - ld a, [$c109] - cp $4 - jp nz, Func_55c9 - ld a, [$d7d8] - bit 7, a ; fought snorlax? - ld hl, BinocularsSnorlaxText - jr z, .print - ld hl, BinocularsNoSnorlaxText -.print - call PrintText - jp TextScriptEnd - -BinocularsSnorlaxText: - TX_FAR _BinocularsSnorlaxText - db "@" - -BinocularsNoSnorlaxText: - TX_FAR _BinocularsNoSnorlaxText - db "@" - -Route11GateUpstairsText4: ; 494ce (12:54ce) - db $8 - ld hl, UnnamedText_494d5 ; $54d5 - jp Func_55c9 - -UnnamedText_494d5: ; 494d5 (12:54d5) - TX_FAR _UnnamedText_494d5 - db "@" - -INCLUDE "data/mapObjects/route11gateupstairs.asm" - -INCLUDE "data/mapHeaders/route12gate.asm" - -Route12GateScript: ; 49504 (12:5504) - jp EnableAutoTextBoxDrawing - -Route12GateTextPointers: ; 49507 (12:5507) - dw Route12GateText1 - -Route12GateText1: ; 49509 (12:5509) - TX_FAR _Route12GateText1 - db "@" - -INCLUDE "data/mapObjects/route12gate.asm" - -Route12GateBlocks: ; 49540 (12:5540) - INCBIN "maps/route12gate.blk" - -INCLUDE "data/mapHeaders/route12gateupstairs.asm" - -Route12GateUpstairsScript: ; 49560 (12:5560) - jp DisableAutoTextBoxDrawing - -Route12GateUpstairsTextPointers: ; 49563 (12:5563) - dw Route12GateUpstairsText1 - dw Route12GateUpstairsText2 - dw Route12GateUpstairsText3 - -Route12GateUpstairsText1: ; 49569 (12:5569) - db $08 ; asm - ld a, [$d7d7] - rrca - jr c, .asm_0ad3c ; 0x4956e - ld hl, TM39PreReceiveText - call PrintText - ld bc, (TM_39 << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, ReceivedTM39Text - call PrintText - ld hl, $d7d7 - set 0, [hl] - jr .asm_4ba56 ; 0x49589 -.BagFull - ld hl, TM39NoRoomText - call PrintText - jr .asm_4ba56 ; 0x49591 -.asm_0ad3c ; 0x49593 - ld hl, TM39ExplanationText - call PrintText -.asm_4ba56 ; 0x49599 - jp TextScriptEnd - -TM39PreReceiveText: ; 4959c (12:559c) - TX_FAR _TM39PreReceiveText - db "@" - -ReceivedTM39Text: ; 495a1 (12:55a1) - TX_FAR _ReceivedTM39Text - db $0B, "@" - -TM39ExplanationText: ; 495a7 (12:55a7) - TX_FAR _TM39ExplanationText - db "@" - -TM39NoRoomText: ; 495ac (12:55ac) - TX_FAR _TM39NoRoomText - db "@" - -Route12GateUpstairsText2: ; 495b1 (12:55b1) - db $08 ; asm - ld hl, UnnamedText_495b8 - jp Func_55c9 - -UnnamedText_495b8: ; 495b8 (12:55b8) - TX_FAR _UnnamedText_495b8 - db "@" - -Route12GateUpstairsText3: ; 495bd (12:55bd) - db $8 - ld hl, UnnamedText_495c4 - jp Func_55c9 - -UnnamedText_495c4: ; 495c4 (12:55c4) - TX_FAR _UnnamedText_495c4 - db "@" - -Func_55c9: ; 495c9 (12:55c9) - ld a, [$c109] - cp $4 - jr z, .asm_495d4 ; 0x495ce $4 - ld a, $1 - jr .asm_495d8 ; 0x495d2 $4 -.asm_495d4 - call PrintText - xor a -.asm_495d8 - ld [$cc3c], a - jp TextScriptEnd - -INCLUDE "data/mapObjects/route12gateupstairs.asm" - -INCLUDE "data/mapHeaders/route15gate.asm" - -Route15GateScript: ; 49602 (12:5602) - jp EnableAutoTextBoxDrawing - -Route15GateTextPointers: ; 49605 (12:5605) - dw Route15GateText1 - -Route15GateText1: ; 49607 (12:5607) - TX_FAR _Route15GateText1 - db "@" - -INCLUDE "data/mapObjects/route15gate.asm" - -INCLUDE "data/mapHeaders/route15gateupstairs.asm" - -Route15GateUpstairsScript: ; 4964a (12:564a) - jp DisableAutoTextBoxDrawing - -Route15GateUpstairsTextPointers: ; 4964d (12:564d) - dw Route15GateUpstairsText1 - dw Route15GateUpstairsText2 - -Route15GateUpstairsText1: ; 49651 (12:5651) - db $8 - ld a, [$d7dd] - bit 0, a - jr nz, .asm_49683 ; 0x49657 $2a - ld a, $32 - ld [$ffdb], a - ld a, $4b - ld [$ffdc], a - ld [$d11e], a - call GetItemName - ld hl, $cd6d - ld de, $cc5b - ld bc, $000d - call CopyData - ld a, $62 - call Predef - ld a, [$ffdb] - cp $1 - jr nz, .asm_49689 ; 0x4967c $b - ld hl, $d7dd - set 0, [hl] -.asm_49683 - ld hl, UnnamedText_4968c - call PrintText -.asm_49689 - jp TextScriptEnd - -UnnamedText_4968c: ; 4968c (12:568c) - TX_FAR _UnnamedText_4968c - db "@" - -Route15GateUpstairsText2: ; 49691 (12:5691) - db $8 - ld hl, UnnamedText_49698 - jp Func_55c9 - -UnnamedText_49698: ; 49698 (12:5698) - TX_FAR _UnnamedText_49698 - db "@" - -INCLUDE "data/mapObjects/route15gateupstairs.asm" - -INCLUDE "data/mapHeaders/route16gate.asm" - -Route16GateScript: ; 496be (12:56be) - ld hl, $d732 - res 5, [hl] - call EnableAutoTextBoxDrawing - ld a, [W_ROUTE16GATECURSCRIPT] - ld hl, Route16GateScriptPointers - jp CallFunctionInTable - -Route16GateScriptPointers: ; 496cf (12:56cf) - dw Route16GateScript0 - dw Route16GateScript1 - dw Route16GateScript2 - dw Route16GateScript3 - -Route16GateScript0: ; 496d7 (12:56d7) - call Func_49755 - ret nz - ld hl, CoordsData_49714 - call ArePlayerCoordsInArray - ret nc - ld a, $3 - ld [$ff8c], a - call DisplayTextID - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, [$cd3d] - cp $1 - jr z, .asm_4970e ; 0x496f1 $1b - ld a, [$cd3d] - dec a - ld [$cd38], a - ld b, $0 - ld c, a - ld a, $40 - ld hl, $ccd3 - call FillMemory - call Func_3486 - ld a, $1 - ld [W_ROUTE16GATECURSCRIPT], a - ret -.asm_4970e - ld a, $2 - ld [W_ROUTE16GATECURSCRIPT], a - ret - -CoordsData_49714: ; 49714 (12:5714) - db $07,$04 - db $08,$04 - db $09,$04 - db $0A,$04 - db $FF - -Route16GateScript1: ; 4971d (12:571d) - ld a, [$cd38] - and a - ret nz - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - -Route16GateScript2: ; 49727 (12:5727) - ld a, $1 - ld [H_SPRITEHEIGHT], a - call DisplayTextID - ld a, $1 - ld [$cd38], a - ld a, $10 - ld [$ccd3], a - call Func_3486 - ld a, $3 - ld [W_ROUTE16GATECURSCRIPT], a - ret - -Route16GateScript3: ; 49741 (12:5741) - ld a, [$cd38] - and a - ret nz - xor a - ld [wJoypadForbiddenButtonsMask], a - ld hl, $d730 - res 7, [hl] - ld a, $0 - ld [W_ROUTE16GATECURSCRIPT], a - ret - -Func_49755: ; 49755 (12:5755) - ld b, BICYCLE - jp IsItemInBag - -Route16GateTextPointers: ; 4975a (12:575a) - dw Route16GateText1 - dw Route16GateText2 - dw Route16GateText3 - -Route16GateText1: ; 49760 (12:5760) - db $08 ; asm - call Func_49755 - jr z, .asm_0bdf3 ; 0x49764 - ld hl, UnnamedText_4977c - call PrintText - jr .asm_56c9d ; 0x4976c -.asm_0bdf3 ; 0x4976e - ld hl, UnnamedText_49777 - call PrintText -.asm_56c9d ; 0x49774 - jp TextScriptEnd - -UnnamedText_49777: ; 49777 (12:5777) - TX_FAR _UnnamedText_49777 - db "@" - -UnnamedText_4977c: ; 4977c (12:577c) - TX_FAR _UnnamedText_4977c - db "@" - -Route16GateText3: ; 49781 (12:5781) - TX_FAR _UnnamedText_49781 - db "@" - -Route16GateText2: ; 49786 (12:5786) - TX_FAR _Route16GateText2 - db "@" - -INCLUDE "data/mapObjects/route16gate.asm" - -Route16GateBlocks: ; 497e3 (12:57e3) - INCBIN "maps/route16gate.blk" - -INCLUDE "data/mapHeaders/route16gateupstairs.asm" - -Route16GateUpstairsScript: ; 4980b (12:580b) - jp DisableAutoTextBoxDrawing - -Route16GateUpstairsTextPointers: ; 4980e (12:580e) - dw Route16GateUpstairsText1 - dw Route16GateUpstairsText2 - dw Route16GateUpstairsText3 - dw Route16GateUpstairsText4 - -Route16GateUpstairsText1: ; 49816 (12:5816) - db $08 ; asm - ld hl, UnnamedText_49820 - call PrintText - jp TextScriptEnd - -UnnamedText_49820: ; 49820 (12:5820) - TX_FAR _UnnamedText_49820 - db "@" - -Route16GateUpstairsText2: ; 49825 (12:5825) - db $08 ; asm - ld hl, UnnamedText_4982f - call PrintText - jp TextScriptEnd - -UnnamedText_4982f: ; 4982f (12:582f) - TX_FAR _UnnamedText_4982f - db "@" - -Route16GateUpstairsText3: ; 49834 (12:5834) - db $8 - ld hl, UnnamedText_4983b - jp Func_55c9 - -UnnamedText_4983b: ; 4983b (12:583b) - TX_FAR _UnnamedText_4983b - db "@" - -Route16GateUpstairsText4: ; 49840 (12:5840) - db $8 - ld hl, UnnamedText_49847 ; $5847 - jp Func_55c9 - -UnnamedText_49847: ; 49847 (12:5847) - TX_FAR _UnnamedText_49847 - db "@" - -INCLUDE "data/mapObjects/route16gateupstairs.asm" - -INCLUDE "data/mapHeaders/route18gate.asm" - -Route18GateScript: ; 49876 (12:5876) - ld hl, $d732 - res 5, [hl] - call EnableAutoTextBoxDrawing - ld a, [W_ROUTE18GATECURSCRIPT] - ld hl, Route18GateScriptPointers - jp CallFunctionInTable - -Route18GateScriptPointers: ; 49887 (12:5887) - dw Route18GateScript0 - dw Route18GateScript1 - dw Route18GateScript2 - dw Route18GateScript3 - -Route18GateScript0: ; 4988f (12:588f) - call Func_49755 - ret nz - ld hl, CoordsData_498cc - call ArePlayerCoordsInArray - ret nc - ld a, $2 - ld [$ff8c], a - call DisplayTextID - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, [$cd3d] - cp $1 - jr z, .asm_498c6 ; 0x498a9 $1b - ld a, [$cd3d] - dec a - ld [$cd38], a - ld b, $0 - ld c, a - ld a, $40 - ld hl, $ccd3 - call FillMemory - call Func_3486 - ld a, $1 - ld [W_ROUTE18GATECURSCRIPT], a - ret -.asm_498c6 - ld a, $2 - ld [W_ROUTE18GATECURSCRIPT], a - ret - -CoordsData_498cc: ; 498cc (12:58cc) - db $03,$04 - db $04,$04 - db $05,$04 - db $06,$04 - db $FF - -Route18GateScript1: ; 498d5 (12:58d5) - ld a, [$cd38] - and a - ret nz - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - -Route18GateScript2: ; 498df (12:58df) - ld a, $1 - ld [H_SPRITEHEIGHT], a - call DisplayTextID - ld a, $1 - ld [$cd38], a - ld a, $10 - ld [$ccd3], a - call Func_3486 - ld a, $3 - ld [W_ROUTE18GATECURSCRIPT], a - ret - -Route18GateScript3: ; 498f9 (12:58f9) - ld a, [$cd38] - and a - ret nz - xor a - ld [wJoypadForbiddenButtonsMask], a - ld hl, $d730 - res 7, [hl] - ld a, $0 - ld [W_ROUTE18GATECURSCRIPT], a - ret - -Route18GateTextPointers: ; 4990d (12:590d) - dw Route18GateText1 - dw Route18GateText2 - -Route18GateText1: ; 49911 (12:5911) - db $08 ; asm - call Func_49755 - jr z, .asm_3c84d ; 0x49915 - ld hl, UnnamedText_4992d - call PrintText - jr .asm_a8410 ; 0x4991d -.asm_3c84d ; 0x4991f - ld hl, UnnamedText_49928 - call PrintText -.asm_a8410 ; 0x49925 - jp TextScriptEnd - -UnnamedText_49928: ; 49928 (12:5928) - TX_FAR _UnnamedText_49928 - db "@" - -UnnamedText_4992d: ; 4992d (12:592d) - TX_FAR _UnnamedText_4992d - db "@" - -Route18GateText2: ; 49932 (12:5932) - TX_FAR _UnnamedText_49932 - db "@" - -INCLUDE "data/mapObjects/route18gate.asm" - -INCLUDE "data/mapHeaders/route18gateupstairs.asm" - -Route18GateUpstairsScript: ; 49975 (12:5975) - jp DisableAutoTextBoxDrawing - -Route18GateUpstairsTextPointers: ; 49978 (12:5978) - dw Route18GateUpstairsText1 - dw Route18GateUpstairsText2 - dw Route18GateUpstairsText3 - -Route18GateUpstairsText1: ; 4997e (12:597e) - db $08 ; asm - ld a, $5 - ld [wWhichTrade], a - ld a, $54 - call Predef - jp TextScriptEnd - -Route18GateUpstairsText2: ; 4998c (12:598c) - db $8 - ld hl, UnnamedText_49993 ; $5993 - jp Func_55c9 - -UnnamedText_49993: ; 49993 (12:5993) - TX_FAR _UnnamedText_49993 - db "@" - -Route18GateUpstairsText3: ; 49998 (12:5998) - db $8 - ld hl, UnnamedText_4999f ; $599f - jp Func_55c9 - -UnnamedText_4999f: ; 4999f (12:599f) - TX_FAR _UnnamedText_4999f - db "@" - -INCLUDE "data/mapObjects/route18gateupstairs.asm" - -INCLUDE "data/mapHeaders/mtmoon1.asm" - -MtMoon1Script: ; 499c8 (12:59c8) - call EnableAutoTextBoxDrawing - ld hl, MtMoon1TrainerHeader0 - ld de, MtMoon1ScriptPointers - ld a, [W_MTMOON1CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_MTMOON1CURSCRIPT], a - ret - -MtMoon1ScriptPointers: ; 499db (12:59db) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -MtMoon1TextPointers: ; 499e1 (12:59e1) - dw MtMoon1Text1 - dw MtMoon1Text2 - dw MtMoon1Text3 - dw MtMoon1Text4 - dw MtMoon1Text5 - dw MtMoon1Text6 - dw MtMoon1Text7 - dw Predef5CText - dw Predef5CText - dw Predef5CText - dw Predef5CText - dw Predef5CText - dw Predef5CText - dw MtMoon1Text14 - -MtMoon1TrainerHeaders: ; 499fd (12:59fd) -MtMoon1TrainerHeader0: ; 499fd (12:59fd) - db $1 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7f5 ; flag's byte - dw MtMoon1BattleText2 ; 0x5a98 TextBeforeBattle - dw MtMoon1AfterBattleText2 ; 0x5aa2 TextAfterBattle - dw MtMoon1EndBattleText2 ; 0x5a9d TextEndBattle - dw MtMoon1EndBattleText2 ; 0x5a9d TextEndBattle - -MtMoon1TrainerHeader2: ; 49a09 (12:5a09) - db $2 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7f5 ; flag's byte - dw MtMoon1BattleText3 ; 0x5aa7 TextBeforeBattle - dw MtMoon1AfterBattleText3 ; 0x5ab1 TextAfterBattle - dw MtMoon1EndBattleText3 ; 0x5aac TextEndBattle - dw MtMoon1EndBattleText3 ; 0x5aac TextEndBattle - -MtMoon1TrainerHeader3: ; 49a15 (12:5a15) - db $3 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7f5 ; flag's byte - dw MtMoon1BattleText4 ; 0x5ab6 TextBeforeBattle - dw MtMoon1AfterBattleText4 ; 0x5ac0 TextAfterBattle - dw MtMoon1EndBattleText4 ; 0x5abb TextEndBattle - dw MtMoon1EndBattleText4 ; 0x5abb TextEndBattle - -MtMoon1TrainerHeader4: ; 49a21 (12:5a21) - db $4 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7f5 ; flag's byte - dw MtMoon1BattleText5 ; 0x5ac5 TextBeforeBattle - dw MtMoon1AfterBattleText5 ; 0x5acf TextAfterBattle - dw MtMoon1EndBattleText5 ; 0x5aca TextEndBattle - dw MtMoon1EndBattleText5 ; 0x5aca TextEndBattle - -MtMoon1TrainerHeader5: ; 49a2d (12:5a2d) - db $5 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7f5 ; flag's byte - dw MtMoon1BattleText6 ; 0x5ad4 TextBeforeBattle - dw MtMoon1AfterBattleText6 ; 0x5ade TextAfterBattle - dw MtMoon1EndBattleText6 ; 0x5ad9 TextEndBattle - dw MtMoon1EndBattleText6 ; 0x5ad9 TextEndBattle - -MtMoon1TrainerHeader6: ; 49a39 (12:5a39) - db $6 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7f5 ; flag's byte - dw MtMoon1BattleText7 ; 0x5ae3 TextBeforeBattle - dw MtMoon1AfterBattleText7 ; 0x5aed TextAfterBattle - dw MtMoon1EndBattleText7 ; 0x5ae8 TextEndBattle - dw MtMoon1EndBattleText7 ; 0x5ae8 TextEndBattle - -MtMoon1TrainerHeader7: ; 49a45 (12:5a45) - db $7 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7f5 ; flag's byte - dw MtMoon1BattleText8 ; 0x5af2 TextBeforeBattle - dw MtMoon1AfterBattleText8 ; 0x5afc TextAfterBattle - dw MtMoon1EndBattleText8 ; 0x5af7 TextEndBattle - dw MtMoon1EndBattleText8 ; 0x5af7 TextEndBattle - - db $ff - -MtMoon1Text1: ; 49a52 (12:5a52) - db $08 ; asm - ld hl, MtMoon1TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -MtMoon1Text2: ; 49a5c (12:5a5c) - db $08 ; asm - ld hl, MtMoon1TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -MtMoon1Text3: ; 49a66 (12:5a66) - db $08 ; asm - ld hl, MtMoon1TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -MtMoon1Text4: ; 49a70 (12:5a70) - db $08 ; asm - ld hl, MtMoon1TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -MtMoon1Text5: ; 49a7a (12:5a7a) - db $08 ; asm - ld hl, MtMoon1TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -MtMoon1Text6: ; 49a84 (12:5a84) - db $08 ; asm - ld hl, MtMoon1TrainerHeader6 - call TalkToTrainer - jp TextScriptEnd - -MtMoon1Text7: ; 49a8e (12:5a8e) - db $08 ; asm - ld hl, MtMoon1TrainerHeader7 - call TalkToTrainer - jp TextScriptEnd - -MtMoon1BattleText2: ; 49a98 (12:5a98) - TX_FAR _MtMoon1BattleText2 - db "@" - -MtMoon1EndBattleText2: ; 49a9d (12:5a9d) - TX_FAR _MtMoon1EndBattleText2 - db "@" - -MtMoon1AfterBattleText2: ; 49aa2 (12:5aa2) - TX_FAR _MtMoon1AfterBattleText2 - db "@" - -MtMoon1BattleText3: ; 49aa7 (12:5aa7) - TX_FAR _MtMoon1BattleText3 - db "@" - -MtMoon1EndBattleText3: ; 49aac (12:5aac) - TX_FAR _MtMoon1EndBattleText3 - db "@" - -MtMoon1AfterBattleText3: ; 49ab1 (12:5ab1) - TX_FAR _MtMoon1AfterBattleText3 - db "@" - -MtMoon1BattleText4: ; 49ab6 (12:5ab6) - TX_FAR _MtMoon1BattleText4 - db "@" - -MtMoon1EndBattleText4: ; 49abb (12:5abb) - TX_FAR _MtMoon1EndBattleText4 - db "@" - -MtMoon1AfterBattleText4: ; 49ac0 (12:5ac0) - TX_FAR _MtMoon1AfterBattleText4 - db "@" - -MtMoon1BattleText5: ; 49ac5 (12:5ac5) - TX_FAR _MtMoon1BattleText5 - db "@" - -MtMoon1EndBattleText5: ; 49aca (12:5aca) - TX_FAR _MtMoon1EndBattleText5 - db "@" - -MtMoon1AfterBattleText5: ; 49acf (12:5acf) - TX_FAR _MtMoon1AfterBattleText5 - db "@" - -MtMoon1BattleText6: ; 49ad4 (12:5ad4) - TX_FAR _MtMoon1BattleText6 - db "@" - -MtMoon1EndBattleText6: ; 49ad9 (12:5ad9) - TX_FAR _MtMoon1EndBattleText6 - db "@" - -MtMoon1AfterBattleText6: ; 49ade (12:5ade) - TX_FAR _MtMoon1AfterBattleText6 - db "@" - -MtMoon1BattleText7: ; 49ae3 (12:5ae3) - TX_FAR _MtMoon1BattleText7 - db "@" - -MtMoon1EndBattleText7: ; 49ae8 (12:5ae8) - TX_FAR _MtMoon1EndBattleText7 - db "@" - -MtMoon1AfterBattleText7: ; 49aed (12:5aed) - TX_FAR _MtMoon1AfterBattleText7 - db "@" - -MtMoon1BattleText8: ; 49af2 (12:5af2) - TX_FAR _MtMoon1BattleText8 - db "@" - -MtMoon1EndBattleText8: ; 49af7 (12:5af7) - TX_FAR _MtMoon1EndBattleText8 - db "@" - -MtMoon1AfterBattleText8: ; 49afc (12:5afc) - TX_FAR _MtMoon1AfterBattleText8 - db "@" - -MtMoon1Text14: ; 49b01 (12:5b01) - TX_FAR _MtMoon1Text14 - db "@" - -INCLUDE "data/mapObjects/mtmoon1.asm" - -MtMoon1Blocks: ; 49b97 (12:5b97) - INCBIN "maps/mtmoon1.blk" - -INCLUDE "data/mapHeaders/mtmoon3.asm" - -MtMoon3Script: ; 49d0b (12:5d0b) - call EnableAutoTextBoxDrawing - ld hl, MtMoon3TrainerHeader0 ; $5e48 - ld de, MtMoon3ScriptPointers - ld a, [W_MTMOON3CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_MTMOON3CURSCRIPT], a - ld a, [$d7f6] - bit 1, a - ret z - ld hl, CoordsData_49d37 - call ArePlayerCoordsInArray - jr nc, .asm_49d31 ; 0x49d29 $6 - ld hl, $d72e - set 4, [hl] - ret -.asm_49d31 - ld hl, $d72e - res 4, [hl] - ret - -CoordsData_49d37: ; 49d37 (12:5d37) - db $05,$0B - db $05,$0C - db $05,$0D - db $05,$0E - db $06,$0B - db $06,$0C - db $06,$0D - db $06,$0E - db $07,$0B - db $07,$0C - db $07,$0D - db $07,$0E - db $08,$0B - db $08,$0C - db $08,$0D - db $08,$0E - db $FF - -Func_49d58: ; 49d58 (12:5d58) - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_MTMOON3CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -MtMoon3ScriptPointers: ; 49d63 (12:5d63) - dw MtMoon3Script0 - dw Func_324c - dw EndTrainerBattle - dw MtMoon3Script3 - dw MtMoon3Script4 - dw MtMoon3Script5 - -MtMoon3Script0: ; 49d6f (12:5d6f) - ld a, [$d7f6] - bit 1, a - jp nz, Func_49d91 - ld a, [W_YCOORD] ; $d361 - cp $8 - jp nz, Func_49d91 - ld a, [W_XCOORD] ; $d362 - cp $d - jp nz, Func_49d91 - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, $1 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - jp DisplayTextID - -Func_49d91: ; 49d91 (12:5d91) - ld a, [$d7f6] - and $c0 - jp z, CheckFightingMapTrainers - ret - -MtMoon3Script3: ; 49d9a (12:5d9a) - ld a, [W_ISINBATTLE] ; $d057 - cp $ff - jp z, Func_49d58 - call UpdateSprites - call Delay3 - ld hl, $d7f6 - set 1, [hl] - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $0 - ld [W_MTMOON3CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -MtMoon3Script4: ; 49dba (12:5dba) - ld a, $1 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call SetSpriteMovementBytesToFF - ld hl, CoordsData_49dea - call ArePlayerCoordsInArray - jr c, .asm_49dd7 - ld hl, CoordsData_49df1 - call ArePlayerCoordsInArray - jp nc, CheckFightingMapTrainers - ld de, MovementData_49df9 - jr .asm_49dda -.asm_49dd7 - ld de, MovementData_49df8 -.asm_49dda - ld a, $1 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call MoveSprite - ld a, $5 - ld [W_MTMOON3CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -CoordsData_49dea: ; 49dea (12:5dea) - db $07,$0C - db $06,$0B - db $05,$0C - db $FF - -CoordsData_49df1: ; 49df1 (12:5df1) - db $07,$0D - db $06,$0E - db $05,$0E - db $FF - -MovementData_49df8: ; 49df8 (12:5df8) - db $C0 - -MovementData_49df9: ; 49df9 (12:5df9) - db $40,$FF - -MtMoon3Script5: ; 49dfb (12:5dfb) - ld a, [$d730] - bit 0, a - ret nz - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld a, $1 - ld [$cc3c], a - ld a, $a - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld a, [$d7f6] - bit 6, a - jr z, .asm_49e1d - ld a, $6e - jr .asm_49e1f -.asm_49e1d - ld a, $6d -.asm_49e1f - ld [$cc4d], a - ld a, $11 - call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $0 - ld [W_MTMOON3CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -MtMoon3TextPointers: ; 49e34 (12:5e34) - dw MtMoon3Text1 - dw MtMoon3Text2 - dw MtMoon3Text3 - dw MtMoon3Text4 - dw MtMoon3Text5 - dw MtMoon3Text6 - dw MtMoon3Text7 - dw Predef5CText - dw Predef5CText - dw UnnamedText_49f99 - -MtMoon3TrainerHeaders: ; 49e48 (12:5e48) -MtMoon3TrainerHeader0: ; 49e48 (12:5e48) - db $2 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7f6 ; flag's byte - dw MtMoon3BattleText2 ; 0x5f9f TextBeforeBattle - dw MtMoon3AfterBattleText2 ; 0x5fa9 TextAfterBattle - dw MtMoon3EndBattleText2 ; 0x5fa4 TextEndBattle - dw MtMoon3EndBattleText2 ; 0x5fa4 TextEndBattle - -MtMoon3TrainerHeader2: ; 49e54 (12:5e54) - db $3 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7f6 ; flag's byte - dw MtMoon3BattleText3 ; 0x5fae TextBeforeBattle - dw MtMoon3AfterBattleText3 ; 0x5fb8 TextAfterBattle - dw MtMoon3EndBattleText3 ; 0x5fb3 TextEndBattle - dw MtMoon3EndBattleText3 ; 0x5fb3 TextEndBattle - -MtMoon3TrainerHeader3: ; 49e60 (12:5e60) - db $4 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7f6 ; flag's byte - dw MtMoon3BattleText4 ; 0x5fbd TextBeforeBattle - dw MtMoon3AfterBattleText4 ; 0x5fc7 TextAfterBattle - dw MtMoon3EndBattleText4 ; 0x5fc2 TextEndBattle - dw MtMoon3EndBattleText4 ; 0x5fc2 TextEndBattle - -MtMoon3TrainerHeader4: ; 49e6c (12:5e6c) - db $5 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7f6 ; flag's byte - dw MtMoon3BattleText5 ; 0x5fcc TextBeforeBattle - dw MtMoon3AfterBattleText5 ; 0x5fd6 TextAfterBattle - dw MtMoon3EndBattleText5 ; 0x5fd1 TextEndBattle - dw MtMoon3EndBattleText5 ; 0x5fd1 TextEndBattle - - db $ff - -MtMoon3Text1: ; 49e79 (12:5e79) - db $08 ; asm - ld a, [$d7f6] - bit 1, a - jr z, .asm_be1e0 ; 0x49e7f - and $c0 - jr nz, .asm_f8cd4 ; 0x49e83 - ld hl, UnnamedText_49f8f - call PrintText - jr .asm_f1fba ; 0x49e8b -.asm_be1e0 ; 0x49e8d - ld hl, UnnamedText_49f85 - call PrintText - ld hl, $d72d - set 6, [hl] - set 7, [hl] - ld hl, UnnamedText_49f8a - ld de, UnnamedText_49f8a - call PreBattleSaveRegisters - ldh a, [$8c] - ld [$cf13], a - call EngageMapTrainer - call InitBattleEnemyParameters - ld a, $3 - ld [W_MTMOON3CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - jr .asm_f1fba ; 0x49eb6 -.asm_f8cd4 ; 0x49eb8 - ld hl, UnnamedText_49f94 - call PrintText -.asm_f1fba ; 0x49ebe - jp TextScriptEnd - -MtMoon3Text2: ; 49ec1 (12:5ec1) - db $08 ; asm - ld hl, MtMoon3TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -MtMoon3Text3: ; 49ecb (12:5ecb) - db $08 ; asm - ld hl, MtMoon3TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -MtMoon3Text4: ; 49ed5 (12:5ed5) - db $08 ; asm - ld hl, MtMoon3TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -MtMoon3Text5: ; 49edf (12:5edf) - db $08 ; asm - ld hl, MtMoon3TrainerHeader4 ; $5e6c - call TalkToTrainer - jp TextScriptEnd - -MtMoon3Text6: ; 49ee9 (12:5ee9) - db $08 ; asm - ld a, $1 - ld [$cc3c], a - ld hl, UnnamedText_49f24 - call PrintText - call YesNoChoice - ld a, [$cc26] - and a - jr nz, .asm_1fa5e ; 0x49efc - ld bc,(DOME_FOSSIL << 8) | 1 - call GiveItem - jp nc, Func_49f76 - call Func_49f69 - ld a, $6d - ld [$cc4d], a - ld a, $11 - call Predef - ld hl, $d7f6 - set 6, [hl] - ld a, $4 - ld [W_MTMOON3CURSCRIPT], a - ld [W_CURMAPSCRIPT], a -.asm_1fa5e ; 0x49f21 - jp TextScriptEnd - -UnnamedText_49f24: ; 49f24 (12:5f24) - TX_FAR _UnnamedText_49f24 - db "@" - -MtMoon3Text7: ; 49f29 (12:5f29) - db $08 ; asm - ld a, $1 - ld [$cc3c], a - ld hl, UnnamedText_49f64 - call PrintText - call YesNoChoice - ld a, [$cc26] - and a - jr nz, .asm_8e988 ; 0x49f3c - ld bc, (HELIX_FOSSIL << 8) | 1 - call GiveItem - jp nc, Func_49f76 - call Func_49f69 - ld a, $6e - ld [$cc4d], a - ld a, $11 - call Predef - ld hl, $d7f6 - set 7, [hl] - ld a, $4 - ld [W_MTMOON3CURSCRIPT], a - ld [W_CURMAPSCRIPT], a -.asm_8e988 ; 0x49f61 - jp TextScriptEnd - -UnnamedText_49f64: ; 49f64 (12:5f64) - TX_FAR _UnnamedText_49f64 - db "@" - -Func_49f69: ; 49f69 (12:5f69) - ld hl, UnnamedText_49f6f - jp PrintText - -UnnamedText_49f6f: ; 49f6f (12:5f6f) - TX_FAR _UnnamedText_49f6f ; 0x80995 - db $11, $d, "@" - -Func_49f76: ; 49f76 (12:5f76) - ld hl, UnnamedText_49f7f - call PrintText - jp TextScriptEnd - -UnnamedText_49f7f: ; 49f7f (12:5f7f) - TX_FAR _UnnamedText_49f7f ; 0x809a8 - db $d, "@" - -UnnamedText_49f85: ; 49f85 (12:5f85) - TX_FAR _UnnamedText_49f85 - db "@" - -UnnamedText_49f8a: ; 49f8a (12:5f8a) - TX_FAR _UnnamedText_49f8a - db "@" - -UnnamedText_49f8f: ; 49f8f (12:5f8f) - TX_FAR _UnnamedText_49f8f - db "@" - -UnnamedText_49f94: ; 49f94 (12:5f94) - TX_FAR _UnnamedText_49f94 - db "@" - -UnnamedText_49f99: ; 49f99 (12:5f99) - TX_FAR _UnnamedText_49f99 - db $11, "@" - -MtMoon3BattleText2: ; 49f9f (12:5f9f) - TX_FAR _MtMoon3BattleText2 - db "@" - -MtMoon3EndBattleText2: ; 49fa4 (12:5fa4) - TX_FAR _MtMoon3EndBattleText2 - db "@" - -MtMoon3AfterBattleText2: ; 49fa9 (12:5fa9) - TX_FAR _MtMoon3AfterBattleText2 - db "@" - -MtMoon3BattleText3: ; 49fae (12:5fae) - TX_FAR _MtMoon3BattleText3 - db "@" - -MtMoon3EndBattleText3: ; 49fb3 (12:5fb3) - TX_FAR _MtMoon3EndBattleText3 - db "@" - -MtMoon3AfterBattleText3: ; 49fb8 (12:5fb8) - TX_FAR _MtMoon3AfterBattleText3 - db "@" - -MtMoon3BattleText4: ; 49fbd (12:5fbd) - TX_FAR _MtMoon3BattleText4 - db "@" - -MtMoon3EndBattleText4: ; 49fc2 (12:5fc2) - TX_FAR _MtMoon3EndBattleText4 - db "@" - -MtMoon3AfterBattleText4: ; 49fc7 (12:5fc7) - TX_FAR _MtMoon3AfterBattleText4 - db "@" - -MtMoon3BattleText5: ; 49fcc (12:5fcc) - TX_FAR _MtMoon3BattleText5 - db "@" - -MtMoon3EndBattleText5: ; 49fd1 (12:5fd1) - TX_FAR _MtMoon3EndBattleText5 - db "@" - -MtMoon3AfterBattleText5: ; 49fd6 (12:5fd6) - TX_FAR _MtMoon3AfterBattleText5 - db "@" - -INCLUDE "data/mapObjects/mtmoon3.asm" - -MtMoon3Blocks: ; 4a041 (12:6041) - INCBIN "maps/mtmoon3.blk" - -INCLUDE "data/mapHeaders/safarizonewest.asm" - -SafariZoneWestScript: ; 4a1b5 (12:61b5) - jp EnableAutoTextBoxDrawing - -SafariZoneWestTextPointers: ; 4a1b8 (12:61b8) - dw Predef5CText - dw Predef5CText - dw Predef5CText - dw Predef5CText - dw SafariZoneWestText5 - dw SafariZoneWestText6 - dw SafariZoneWestText7 - dw SafariZoneWestText8 - -SafariZoneWestText5: ; 4a1c8 (12:61c8) - TX_FAR _SafariZoneWestText5 - db "@" - -SafariZoneWestText6: ; 4a1cd (12:61cd) - TX_FAR _SafariZoneWestText6 - db "@" - -SafariZoneWestText7: ; 4a1d2 (12:61d2) - TX_FAR _SafariZoneWestText7 - db "@" - -SafariZoneWestText8: ; 4a1d7 (12:61d7) - TX_FAR _SafariZoneWestText8 - db "@" - -INCLUDE "data/mapObjects/safarizonewest.asm" - -SafariZoneWestBlocks: ; 4a248 (12:6248) - INCBIN "maps/safarizonewest.blk" - -INCLUDE "data/mapHeaders/safarizonesecrethouse.asm" - -SafariZoneSecretHouseScript: ; 4a317 (12:6317) - jp EnableAutoTextBoxDrawing - -SafariZoneSecretHouseTextPointers: ; 4a31a (12:631a) - dw SafariZoneSecretHouseText1 - -SafariZoneSecretHouseText1: ; 4a31c (12:631c) - db $08 ; asm - ld a, [$d857] - bit 0, a - jr nz, .asm_20a9b ; 0x4a322 - ld hl, UnnamedText_4a350 - call PrintText - ld bc, (HM_03 << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, ReceivedHM03Text - call PrintText - ld hl, $d857 - set 0, [hl] - jr .asm_8f1fc ; 0x4a33d -.BagFull - ld hl, HM03NoRoomText - call PrintText - jr .asm_8f1fc ; 0x4a345 -.asm_20a9b ; 0x4a347 - ld hl, HM03ExplanationText - call PrintText -.asm_8f1fc ; 0x4a34d - jp TextScriptEnd - -UnnamedText_4a350: ; 4a350 (12:6350) - TX_FAR _UnnamedText_4a350 - db "@" - -ReceivedHM03Text: ; 4a355 (12:6355) - TX_FAR _ReceivedHM03Text - db $0B, "@" - -HM03ExplanationText: ; 4a35b (12:635b) - TX_FAR _HM03ExplanationText - db "@" - -HM03NoRoomText: ; 4a360 (12:6360) - TX_FAR _HM03NoRoomText - db "@" - -INCLUDE "data/mapObjects/safarizonesecrethouse.asm" - -SafariZoneSecretHouseBlocks: ; 4a37f (12:637f) - INCBIN "maps/safarizonesecrethouse.blk" - -SECTION "bank13",ROMX,BANK[$13] - -TrainerPics: - -YoungsterPic: ; 4c000 (13:4000) - INCBIN "pic/trainer/youngster.pic" -BugCatcherPic: ; 4c0c6 (13:40c6) - INCBIN "pic/trainer/bugcatcher.pic" -LassPic: ; 4c200 (13:4200) - INCBIN "pic/trainer/lass.pic" -SailorPic: ; 4c2db (13:42db) - INCBIN "pic/trainer/sailor.pic" -JrTrainerMPic: ; 4c450 (13:4450) - INCBIN "pic/trainer/jr.trainerm.pic" -JrTrainerFPic: ; 4c588 (13:4588) - INCBIN "pic/trainer/jr.trainerf.pic" -PokemaniacPic: ; 4c6c9 (13:46c9) - INCBIN "pic/trainer/pokemaniac.pic" -SuperNerdPic: ; 4c7f1 (13:47f1) - INCBIN "pic/trainer/supernerd.pic" -HikerPic: ; 4c8e7 (13:48e7) - INCBIN "pic/trainer/hiker.pic" -BikerPic: ; 4cabe (13:4abe) - INCBIN "pic/trainer/biker.pic" -BurglarPic: ; 4cc91 (13:4c91) - INCBIN "pic/trainer/burglar.pic" -EngineerPic: ; 4ce0a (13:4e0a) - INCBIN "pic/trainer/engineer.pic" -FisherPic: ; 4cf87 (13:4f87) - INCBIN "pic/trainer/fisher.pic" -SwimmerPic: ; 4d133 (13:5133) - INCBIN "pic/trainer/swimmer.pic" -CueBallPic: ; 4d24f (13:524f) - INCBIN "pic/trainer/cueball.pic" -GamblerPic: ; 4d421 (13:5421) - INCBIN "pic/trainer/gambler.pic" -BeautyPic: ; 4d5df (13:55df) - INCBIN "pic/trainer/beauty.pic" -PsychicPic: ; 4d728 (13:5728) - INCBIN "pic/trainer/psychic.pic" -RockerPic: ; 4d843 (13:5843) - INCBIN "pic/trainer/rocker.pic" -JugglerPic: ; 4d97d (13:597d) - INCBIN "pic/trainer/juggler.pic" -TamerPic: ; 4db4e (13:5b4e) - INCBIN "pic/trainer/tamer.pic" -BirdKeeperPic: ; 4dcdb (13:5cdb) - INCBIN "pic/trainer/birdkeeper.pic" -BlackbeltPic: ; 4de76 (13:5e76) - INCBIN "pic/trainer/blackbelt.pic" -Rival1Pic: ; 4e049 (13:6049) - INCBIN "pic/trainer/rival1.pic" -ProfOakPic: ; 4e15f (13:615f) - INCBIN "pic/trainer/prof.oak.pic" -ChiefPic: ; 4e27d (13:627d) -ScientistPic: ; 4e27d (13:627d) - INCBIN "pic/trainer/scientist.pic" -GiovanniPic: ; 4e3be (13:63be) - INCBIN "pic/trainer/giovanni.pic" -RocketPic: ; 4e49f (13:649f) - INCBIN "pic/trainer/rocket.pic" -CooltrainerMPic: ; 4e635 (13:6635) - INCBIN "pic/trainer/cooltrainerm.pic" -CooltrainerFPic: ; 4e7be (13:67be) - INCBIN "pic/trainer/cooltrainerf.pic" -BrunoPic: ; 4e943 (13:6943) - INCBIN "pic/trainer/bruno.pic" -BrockPic: ; 4eb3e (13:6b3e) - INCBIN "pic/trainer/brock.pic" -MistyPic: ; 4ec40 (13:6c40) - INCBIN "pic/trainer/misty.pic" -LtSurgePic: ; 4ed30 (13:6d30) - INCBIN "pic/trainer/lt.surge.pic" -ErikaPic: ; 4eeb5 (13:6eb5) - INCBIN "pic/trainer/erika.pic" -KogaPic: ; 4efd6 (13:6fd6) - INCBIN "pic/trainer/koga.pic" -BlainePic: ; 4f150 (13:7150) - INCBIN "pic/trainer/blaine.pic" -SabrinaPic: ; 4f252 (13:7252) - INCBIN "pic/trainer/sabrina.pic" -GentlemanPic: ; 4f3d0 (13:73d0) - INCBIN "pic/trainer/gentleman.pic" -Rival2Pic: ; 4f4cf (13:74cf) - INCBIN "pic/trainer/rival2.pic" -Rival3Pic: ; 4f623 (13:7623) - INCBIN "pic/trainer/rival3.pic" -LoreleiPic: ; 4f779 (13:7779) - INCBIN "pic/trainer/lorelei.pic" -ChannelerPic: ; 4f8a4 (13:78a4) - INCBIN "pic/trainer/channeler.pic" -AgathaPic: ; 4fa71 (13:7a71) - INCBIN "pic/trainer/agatha.pic" -LancePic: ; 4fba2 (13:7ba2) - INCBIN "pic/trainer/lance.pic" - -INCLUDE "data/mapHeaders/battlecenterm.asm" - -BattleCenterMScript: ; 4fd10 (13:7d10) - call EnableAutoTextBoxDrawing - ld a, [$ffaa] - cp $2 - ld a, $8 - jr z, .asm_4fd1d ; 0x4fd19 $2 - ld a, $c -.asm_4fd1d - ld [$ff8d], a - ld a, $1 - ld [$ff8c], a - call Func_34ae - ld hl, $d72d - bit 0, [hl] - set 0, [hl] - ret nz - ld hl, $c214 - ld a, $8 - ld [hli], a - ld a, $a - ld [hl], a - ld a, $8 - ld [$c119], a - ld a, [$ffaa] - cp $2 - ret z - ld a, $7 - ld [$c215], a - ld a, $c - ld [$c119], a - ret - -BattleCenterMTextPointers: ; 4fd4c (13:7d4c) - dw BattleCenterMText1 - -BattleCenterMText1: ; 4fd4e (13:7d4e) - TX_FAR _BattleCenterMText1 - db "@" - -INCLUDE "data/mapObjects/battlecenterm.asm" - -BattleCenterMBlocks: ; 4fd5d (13:7d5d) - INCBIN "maps/battlecenterm.blk" - -INCLUDE "data/mapHeaders/tradecenterm.asm" - -TradeCenterMScript: ; 4fd7d (13:7d7d) - jp BattleCenterMScript - -TradeCenterMTextPointers: ; 4fd80 (13:7d80) - dw TradeCenterMText1 - -TradeCenterMText1: ; 4fd82 (13:7d82) - TX_FAR _TradeCenterMText1 - db "@" - -INCLUDE "data/mapObjects/tradecenterm.asm" - -TradeCenterMBlocks: ; 4fd91 (13:7d91) - INCBIN "maps/tradecenterm.blk" - -Func_4fda5: ; 4fda5 (13:7da5) - call EnableAutoTextBoxDrawing - xor a - ld [$ccd3], a - ld a, [W_NUMINPARTY] ; $d163 - cp $6 - jr c, .asm_4fe01 - ld a, [W_NUMINBOX] ; $da80 - cp $14 - jr nc, .asm_4fdf9 - xor a - ld [W_ENEMYBATTSTATUS3], a ; $d069 - ld a, [$cf91] - ld [W_ENEMYMONID], a - ld hl, Func_3eb01 - ld b, BANK(Func_3eb01) - call Bankswitch - call Func_4fe11 - ld hl, Func_e7a4 - ld b, BANK(Func_e7a4) - call Bankswitch - ld hl, $cf4b - ld a, [$d5a0] - and $7f - cp $9 - jr c, .asm_4fdec - sub $9 - ld [hl], $f7 - inc hl - add $f6 - jr .asm_4fdee -.asm_4fdec - add $f7 -.asm_4fdee - ld [hli], a - ld [hl], $50 - ld hl, SetToBoxText - call PrintText - scf - ret -.asm_4fdf9 - ld hl, BoxIsFullText - call PrintText - and a - ret -.asm_4fe01 - call Func_4fe11 - call AddPokemonToParty - ld a, $1 - ld [$cc3c], a - ld [$ccd3], a - scf - ret - -Func_4fe11: ; 4fe11 (13:7e11) - ld a, [$cf91] - push af - ld [$d11e], a - ld a, $3a - call Predef ; indirect jump to IndexToPokedex (41010 (10:5010)) - ld a, [$d11e] - dec a - ld c, a - ld hl, wPokedexOwned ; $d2f7 - ld b, $1 - ld a, $10 - call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) - pop af - ld [$d11e], a - call GetMonName - ld hl, GotMonText - jp PrintText - -GotMonText: ; 4fe39 (13:7e39) - TX_FAR _GotMonText - db $0b - db "@" - -SetToBoxText: ; 4fe3f (13:7e3f) - TX_FAR _SetToBoxText - db "@" - -BoxIsFullText: ; 4fe44 (13:7e44) - TX_FAR _BoxIsFullText - db "@" - -GetPredefPointer: ; 4fe49 (13:7e49) -; stores hl in $CC4F,$CC50 -; stores de in $CC51,$CC52 -; stores bc in $CC53,$CC54 -; grabs a byte "n" from $CC4E, -; and gets the nth (3-byte) pointer in PredefPointers -; stores the bank of said pointer in [$D0B7] -; stores the pointer in hl and returns - ; ld $CC4F,hl - ld a,h - ld [$CC4F],a - ld a,l - ld [$CC50],a - - ; ld $CC51,de - ld hl,$CC51 - ld a,d - ld [hli],a - ld a,e - ld [hli],a - - ; ld $CC53,bc - ld a,b - ld [hli],a - ld [hl],c - - ld hl,PredefPointers - ld de,0 - - ; de = 3 * [$CC4E] - ld a,[$CC4E] - ld e,a - add a,a - add a,e - ld e,a - jr nc,.next - inc d - -.next - add hl,de - ld d,h - ld e,l - - ; get bank of predef routine - ld a,[de] - ld [$D0B7],a - - ; get pointer - inc de - ld a,[de] - ld l,a - inc de - ld a,[de] - ld h,a - - ret - -PredefPointers: ; 4fe79 (13:7e79) -; these are pointers to ASM routines. -; they appear to be used in overworld map scripts. - dbw BANK(Func_3cd60),Func_3cd60 - dbw BANK(Func_3f0c6),Func_3f0c6 - dbw BANK(Func_3f073),Func_3f073 - dbw BANK(ScaleSpriteByTwo), ScaleSpriteByTwo - db BANK(LoadMonBackSprite) ; dbw macro gives an error for some reason - dw LoadMonBackSprite - dbw BANK(Func_79aba),Func_79aba - dbw BANK(Func_f132),Func_f132 -HealPartyPredef: ; 4fe8e (13:7e8e) - dbw BANK(HealParty),HealParty -MoveAnimationPredef: ; 4fe91 (13:7e91) - dbw BANK(MoveAnimation),MoveAnimation; 08 play move animation - dbw BANK(Func_f71e),Func_f71e - dbw BANK(Func_f71e),Func_f71e - dbw BANK(Func_f81d),Func_f81d - dbw BANK(Func_f836),Func_f836 - dbw BANK(Func_f71e),Func_f71e - dbw BANK(Func_f71e),Func_f71e - db BANK(InitializePlayerData) - dw InitializePlayerData - dbw BANK(HandleBitArray),HandleBitArray - db BANK(RemoveMissableObject) - dw RemoveMissableObject - db BANK(IsMissableObjectHidden) - dw IsMissableObjectHidden - dbw BANK(Func_c69c),Func_c69c - db BANK(AnyPokemonAliveCheck) - dw AnyPokemonAliveCheck - db BANK(AddMissableObject) - dw AddMissableObject - db BANK(AddMissableObject) - dw AddMissableObject - dbw BANK(Func_ee9e),Func_ee9e - db BANK(InitializePlayerData) - dw InitializePlayerData - dbw BANK(Func_c754),Func_c754 - dbw BANK(Func_3af5b),Func_3af5b - dbw BANK(Func_6e43),Func_6e43 - dbw BANK(Func_f8a5),Func_f8a5; 1C, used in Pokémon Tower - dbw $03,Func_3eb5 ; for these two, the bank number is actually 0 - dbw $03,GiveItem - dbw BANK(Func_480eb),Func_480eb - dbw BANK(Func_f8ba),Func_f8ba - dbw BANK(Func_480ff),Func_480ff - dbw BANK(Func_f929),Func_f929 - dbw BANK(Func_f9a0),Func_f9a0 - dbw BANK(Func_48125),Func_48125 - dbw BANK(UpdateHPBar),UpdateHPBar - dbw BANK(Func_f9dc),Func_f9dc - dbw BANK(Func_5ab0),Func_5ab0 - dbw BANK(Func_3ed02),Func_3ed02 - db BANK(DisplayPokedexMenu_) - dw DisplayPokedexMenu_ - dbw BANK(Func_3ad1c),Func_3ad1c - dbw BANK(SaveSAVtoSRAM0),SaveSAVtoSRAM0 - dbw BANK(Func_3ef18),Func_3ef18 - dbw BANK(Func_5a5f),Func_5a5f - dbw BANK(DrawBadges), DrawBadges - dbw BANK(Func_410f3),Func_410f3 - dbw BANK(Func_7096d),Func_7096d - dbw BANK(Func_79dda),Func_79dda - dbw BANK(PlayIntro),PlayIntro - dbw BANK(Func_79869),Func_79869 - dbw BANK(Func_70b5d),Func_70b5d - dbw BANK(Func_c586),Func_c586 - dbw BANK(StatusScreen),StatusScreen ; 37 0x12953 - dbw BANK(StatusScreen2),StatusScreen2 ; 38 - dbw BANK(Func_410e2),Func_410e2 - db BANK(CheckEngagePlayer) - dw CheckEngagePlayer - dbw BANK(IndexToPokedex),IndexToPokedex - dbw BANK(Predef3B),Predef3B; 3B display pic? - dbw BANK(Func_ef54),Func_ef54 - dbw BANK(ShowPokedexData),ShowPokedexData - dbw BANK(WriteMonMoves),WriteMonMoves - dbw BANK(SaveSAV),SaveSAV - db BANK(LoadSGBBorderAndPalettes) - dw LoadSGBBorderAndPalettes - dbw BANK(Func_f113),Func_f113 - dbw BANK(SetPartyMonTypes),SetPartyMonTypes - db BANK(TestMonMoveCompatibility) - dw TestMonMoveCompatibility - dbw BANK(TMToMove),TMToMove - dbw BANK(Func_71ddf),Func_71ddf - dbw BANK(Func_5c0dc),Func_5c0dc; 46 load dex screen - db BANK(_AddPokemonToParty) - dw _AddPokemonToParty - dbw BANK(UpdateHPBar),UpdateHPBar - dbw BANK(Func_3cdec),Func_3cdec - dbw BANK(LoadTownMap_Nest),LoadTownMap_Nest - dbw BANK(Func_27d6b),Func_27d6b - db BANK(PrintEmotionBubble) - dw PrintEmotionBubble; 4C player exclamation - dbw BANK(Func_5aaf),Func_5aaf; return immediately - db BANK(AskForMonNickname) - dw AskForMonNickname - dbw BANK(Func_37ca1),Func_37ca1 - dbw BANK(SaveSAVtoSRAM2),SaveSAVtoSRAM2 - dbw BANK(LoadSAVCheckSum2),LoadSAVCheckSum2 - dbw BANK(LoadSAV),LoadSAV - dbw BANK(SaveSAVtoSRAM1),SaveSAVtoSRAM1 - dbw BANK(Predef54),Predef54 ; 54 initiate trade - dbw BANK(Func_7405c),Func_7405c - dbw BANK(DisplayDexRating),DisplayDexRating - db $1E ; uses wrong bank number - dw _DoFlyOrTeleportAwayGraphics - db $1E ; uses wrong bank number - dw Func_70510 - dbw BANK(Func_c5be),Func_c5be - dbw BANK(Func_c60b),Func_c60b - dbw BANK(Func_cd99),Func_cd99 - dbw BANK(PickupItem),PickupItem - dbw BANK(Func_27d98),Func_27d98 - dbw BANK(LoadMovePPs),LoadMovePPs -DrawHPBarPredef: ; 4ff96 (13:7f96) - dbw BANK(Func_128ef),Func_128ef ; 5F draw HP bar - dbw BANK(Func_128f6),Func_128f6 - dbw BANK(Func_1c9c6),Func_1c9c6 - dbw BANK(Func_59035),Func_59035 - -SECTION "bank14",ROMX,BANK[$14] - -INCLUDE "data/mapHeaders/route22.asm" - -INCLUDE "data/mapObjects/route22.asm" - -Route22Blocks: ; 5003d (14:403d) - INCBIN "maps/route22.blk" - -INCLUDE "data/mapHeaders/route20.asm" - -INCLUDE "data/mapObjects/route20.asm" - -Route20Blocks: ; 5017d (14:417d) - INCBIN "maps/route20.blk" - -INCLUDE "data/mapHeaders/route23.asm" - -INCLUDE "data/mapObjects/route23.asm" - -Route23Blocks: ; 503b2 (14:43b2) - INCBIN "maps/route23.blk" - -INCLUDE "data/mapHeaders/route24.asm" - -INCLUDE "data/mapObjects/route24.asm" - -Route24Blocks: ; 506e7 (14:46e7) - INCBIN "maps/route24.blk" - -INCLUDE "data/mapHeaders/route25.asm" - -INCLUDE "data/mapObjects/route25.asm" - -Route25Blocks: ; 50810 (14:4810) - INCBIN "maps/route25.blk" - -INCLUDE "data/mapHeaders/indigoplateau.asm" - -IndigoPlateauScript: ; 50935 (14:4935) - ret - -IndigoPlateauTextPointers: ; 50936 (14:4936) -INCLUDE "data/mapObjects/indigoplateau.asm" - -IndigoPlateauBlocks: ; 5094a (14:494a) - INCBIN "maps/indigoplateau.blk" - -INCLUDE "data/mapHeaders/saffroncity.asm" - -INCLUDE "data/mapObjects/saffroncity.asm" - -SaffronCityBlocks: ; 50a98 (14:4a98) - INCBIN "maps/saffroncity.blk" - -SaffronCityScript: ; 50c00 (14:4c00) - jp EnableAutoTextBoxDrawing - -SaffronCityTextPointers: ; 50c03 (14:4c03) - dw SaffronCityText1 - dw SaffronCityText2 - dw SaffronCityText3 - dw SaffronCityText4 - dw SaffronCityText5 - dw SaffronCityText6 - dw SaffronCityText7 - dw SaffronCityText8 - dw SaffronCityText9 - dw SaffronCityText10 - dw SaffronCityText11 - dw SaffronCityText12 - dw SaffronCityText13 - dw SaffronCityText14 - dw SaffronCityText15 - dw SaffronCityText16 - dw SaffronCityText17 - dw SaffronCityText18 - dw MartSignText - dw SaffronCityText20 - dw SaffronCityText21 - dw SaffronCityText22 - dw PokeCenterSignText - dw SaffronCityText24 - dw SaffronCityText25 - -SaffronCityText1: ; 50c35 (14:4c35) - TX_FAR _SaffronCityText1 - db "@" - -SaffronCityText2: ; 50c3a (14:4c3a) - TX_FAR _SaffronCityText2 - db "@" - -SaffronCityText3: ; 50c3f (14:4c3f) - TX_FAR _SaffronCityText3 - db "@" - -SaffronCityText4: ; 50c44 (14:4c44) - TX_FAR _SaffronCityText4 - db "@" - -SaffronCityText5: ; 50c49 (14:4c49) - TX_FAR _SaffronCityText5 - db "@" - -SaffronCityText6: ; 50c4e (14:4c4e) - TX_FAR _SaffronCityText6 - db "@" - -SaffronCityText7: ; 50c53 (14:4c53) - TX_FAR _SaffronCityText7 - db "@" - -SaffronCityText8: ; 50c58 (14:4c58) - TX_FAR _SaffronCityText8 - db "@" - -SaffronCityText9: ; 50c5d (14:4c5d) - TX_FAR _SaffronCityText9 - db "@" - -SaffronCityText10: ; 50c62 (14:4c62) - TX_FAR _SaffronCityText10 - db "@" - -SaffronCityText11: ; 50c67 (14:4c67) - TX_FAR _SaffronCityText11 - db "@" - -SaffronCityText12: ; 50c6c (14:4c6c) - TX_FAR _SaffronCityText12 - db $15, "@" - -SaffronCityText13: ; 50c72 (14:4c72) - TX_FAR _SaffronCityText13 - db "@" - -SaffronCityText14: ; 50c77 (14:4c77) - TX_FAR _SaffronCityText14 - db "@" - -SaffronCityText15: ; 50c7c (14:4c7c) - TX_FAR _SaffronCityText15 - db "@" - -SaffronCityText16: ; 50c81 (14:4c81) - TX_FAR _SaffronCityText16 - db "@" - -SaffronCityText17: ; 50c86 (14:4c86) - TX_FAR _SaffronCityText17 - db "@" - -SaffronCityText18: ; 50c8b (14:4c8b) - TX_FAR _SaffronCityText18 - db "@" - -SaffronCityText20: ; 50c90 (14:4c90) - TX_FAR _SaffronCityText20 - db "@" - -SaffronCityText21: ; 50c95 (14:4c95) - TX_FAR _SaffronCityText21 - db "@" - -SaffronCityText22: ; 50c9a (14:4c9a) - TX_FAR _SaffronCityText22 - db "@" - -SaffronCityText24: ; 50c9f (14:4c9f) - TX_FAR _SaffronCityText24 - db "@" - -SaffronCityText25: ; 50ca4 (14:4ca4) - TX_FAR _SaffronCityText25 - db "@" - -Route20Script: ; 50ca9 (14:4ca9) - ld hl, $d7e7 - bit 0, [hl] - res 0, [hl] - call nz, Func_50cc6 - call EnableAutoTextBoxDrawing - ld hl, Route20TrainerHeader0 ; $4d3a - ld de, Route20ScriptPointers - ld a, [W_ROUTE20CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROUTE20CURSCRIPT], a - ret - -Func_50cc6: ; 50cc6 (14:4cc6) - ld a, [$d880] - and $3 - cp $3 - jr z, .asm_50cef - ld a, $d7 - call Func_50d0c - ld a, $d8 - call Func_50d0c - ld hl, .MissableObjectIDs ; $4ce8 -.asm_50cdc - ld a, [hli] - cp $ff - jr z, .asm_50cef - push hl - call Func_50d14 - pop hl - jr .asm_50cdc - -.MissableObjectIDs: ; 50ce8 (14:4ce8) - db $D9,$DA,$DB,$DC,$DF,$E0,$FF - -.asm_50cef - ld a, [$d881] - and $3 - cp $3 - ret z - ld a, $dd - call Func_50d0c - ld a, $de - call Func_50d0c - ld a, $e1 - call Func_50d14 - ld a, $e2 - call Func_50d14 - ret - -Func_50d0c: ; 50d0c (14:4d0c) - ld [$cc4d], a - ld a, $15 - jp Predef ; indirect jump to AddMissableObject (f1c8 (3:71c8)) - -Func_50d14: ; 50d14 (14:4d14) - ld [$cc4d], a - ld a, $11 - jp Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) - -Route20ScriptPointers: ; 50d1c (14:4d1c) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -Route20TextPointers: ; 50d22 (14:4d22) - dw Route20Text1 - dw Route20Text2 - dw Route20Text3 - dw Route20Text4 - dw Route20Text5 - dw Route20Text6 - dw Route20Text7 - dw Route20Text8 - dw Route20Text9 - dw Route20Text10 - dw Route20Text11 - dw Route20Text12 - -Route20TrainerHeaders: ; 50d3a (14:4d3a) -Route20TrainerHeader0: ; 50d3a (14:4d3a) - db $1 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e7 ; flag's byte - dw Route20BattleText1 ; 0x4e17 TextBeforeBattle - dw Route20AfterBattleText1 ; 0x4e21 TextAfterBattle - dw Route20EndBattleText1 ; 0x4e1c TextEndBattle - dw Route20EndBattleText1 ; 0x4e1c TextEndBattle - -Route20TrainerHeader2: ; 50d46 (14:4d46) - db $2 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e7 ; flag's byte - dw Route20BattleText2 ; 0x4e26 TextBeforeBattle - dw Route20AfterBattleText2 ; 0x4e30 TextAfterBattle - dw Route20EndBattleText2 ; 0x4e2b TextEndBattle - dw Route20EndBattleText2 ; 0x4e2b TextEndBattle - -Route20TrainerHeader3: ; 50d52 (14:4d52) - db $3 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7e7 ; flag's byte - dw Route20BattleText3 ; 0x4e35 TextBeforeBattle - dw Route20AfterBattleText3 ; 0x4e3f TextAfterBattle - dw Route20EndBattleText3 ; 0x4e3a TextEndBattle - dw Route20EndBattleText3 ; 0x4e3a TextEndBattle - -Route20TrainerHeader4: ; 50d5e (14:4d5e) - db $4 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e7 ; flag's byte - dw Route20BattleText4 ; 0x4e44 TextBeforeBattle - dw Route20AfterBattleText4 ; 0x4e4e TextAfterBattle - dw Route20EndBattleText4 ; 0x4e49 TextEndBattle - dw Route20EndBattleText4 ; 0x4e49 TextEndBattle - -Route20TrainerHeader5: ; 50d6a (14:4d6a) - db $5 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7e7 ; flag's byte - dw Route20BattleText5 ; 0x4e53 TextBeforeBattle - dw Route20AfterBattleText5 ; 0x4e5d TextAfterBattle - dw Route20EndBattleText5 ; 0x4e58 TextEndBattle - dw Route20EndBattleText5 ; 0x4e58 TextEndBattle - -Route20TrainerHeader6: ; 50d76 (14:4d76) - db $6 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e7 ; flag's byte - dw Route20BattleText6 ; 0x4e62 TextBeforeBattle - dw Route20AfterBattleText6 ; 0x4e6c TextAfterBattle - dw Route20EndBattleText6 ; 0x4e67 TextEndBattle - dw Route20EndBattleText6 ; 0x4e67 TextEndBattle - -Route20TrainerHeader7: ; 50d82 (14:4d82) - db $7 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7e7 ; flag's byte - dw Route20BattleText7 ; 0x4e71 TextBeforeBattle - dw Route20AfterBattleText7 ; 0x4e7b TextAfterBattle - dw Route20EndBattleText7 ; 0x4e76 TextEndBattle - dw Route20EndBattleText7 ; 0x4e76 TextEndBattle - -Route20TrainerHeader8: ; 50d8e (14:4d8e) - db $8 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e7 ; flag's byte - dw Route20BattleText8 ; 0x4e80 TextBeforeBattle - dw Route20AfterBattleText8 ; 0x4e8a TextAfterBattle - dw Route20EndBattleText8 ; 0x4e85 TextEndBattle - dw Route20EndBattleText8 ; 0x4e85 TextEndBattle - -Route20TrainerHeader9: ; 50d9a (14:4d9a) - db $9 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7e7 ; flag's byte - dw Route20BattleText9 ; 0x4e8f TextBeforeBattle - dw Route20AfterBattleText9 ; 0x4e99 TextAfterBattle - dw Route20EndBattleText9 ; 0x4e94 TextEndBattle - dw Route20EndBattleText9 ; 0x4e94 TextEndBattle - -Route20TrainerHeader10: ; 50da6 (14:4da6) - db $a ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e7 ; flag's byte - dw Route20BattleText10 ; 0x4e9e TextBeforeBattle - dw Route20AfterBattleText10 ; 0x4ea8 TextAfterBattle - dw Route20EndBattleText10 ; 0x4ea3 TextEndBattle - dw Route20EndBattleText10 ; 0x4ea3 TextEndBattle - - db $ff - -Route20Text1: ; 50db3 (14:4db3) - db $08 ; asm - ld hl, Route20TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -Route20Text2: ; 50dbd (14:4dbd) - db $08 ; asm - ld hl, Route20TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -Route20Text3: ; 50dc7 (14:4dc7) - db $08 ; asm - ld hl, Route20TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -Route20Text4: ; 50dd1 (14:4dd1) - db $08 ; asm - ld hl, Route20TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -Route20Text5: ; 50ddb (14:4ddb) - db $08 ; asm - ld hl, Route20TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -Route20Text6: ; 50de5 (14:4de5) - db $08 ; asm - ld hl, Route20TrainerHeader6 - call TalkToTrainer - jp TextScriptEnd - -Route20Text7: ; 50def (14:4def) - db $08 ; asm - ld hl, Route20TrainerHeader7 - call TalkToTrainer - jp TextScriptEnd - -Route20Text8: ; 50df9 (14:4df9) - db $08 ; asm - ld hl, Route20TrainerHeader8 - call TalkToTrainer - jp TextScriptEnd - -Route20Text9: ; 50e03 (14:4e03) - db $08 ; asm - ld hl, Route20TrainerHeader9 - call TalkToTrainer - jp TextScriptEnd - -Route20Text10: ; 50e0d (14:4e0d) - db $08 ; asm - ld hl, Route20TrainerHeader10 - call TalkToTrainer - jp TextScriptEnd - -Route20BattleText1: ; 50e17 (14:4e17) - TX_FAR _Route20BattleText1 - db "@" - -Route20EndBattleText1: ; 50e1c (14:4e1c) - TX_FAR _Route20EndBattleText1 - db "@" - -Route20AfterBattleText1: ; 50e21 (14:4e21) - TX_FAR _Route20AfterBattleText1 - db "@" - -Route20BattleText2: ; 50e26 (14:4e26) - TX_FAR _Route20BattleText2 - db "@" - -Route20EndBattleText2: ; 50e2b (14:4e2b) - TX_FAR _Route20EndBattleText2 - db "@" - -Route20AfterBattleText2: ; 50e30 (14:4e30) - TX_FAR _Route20AfterBattleText2 - db "@" - -Route20BattleText3: ; 50e35 (14:4e35) - TX_FAR _Route20BattleText3 - db "@" - -Route20EndBattleText3: ; 50e3a (14:4e3a) - TX_FAR _Route20EndBattleText3 - db "@" - -Route20AfterBattleText3: ; 50e3f (14:4e3f) - TX_FAR _Route20AfterBattleText3 - db "@" - -Route20BattleText4: ; 50e44 (14:4e44) - TX_FAR _Route20BattleText4 - db "@" - -Route20EndBattleText4: ; 50e49 (14:4e49) - TX_FAR _Route20EndBattleText4 - db "@" - -Route20AfterBattleText4: ; 50e4e (14:4e4e) - TX_FAR _Route20AfterBattleText4 - db "@" - -Route20BattleText5: ; 50e53 (14:4e53) - TX_FAR _Route20BattleText5 - db "@" - -Route20EndBattleText5: ; 50e58 (14:4e58) - TX_FAR _Route20EndBattleText5 - db "@" - -Route20AfterBattleText5: ; 50e5d (14:4e5d) - TX_FAR _Route20AfterBattleText5 - db "@" - -Route20BattleText6: ; 50e62 (14:4e62) - TX_FAR _Route20BattleText6 - db "@" - -Route20EndBattleText6: ; 50e67 (14:4e67) - TX_FAR _Route20EndBattleText6 - db "@" - -Route20AfterBattleText6: ; 50e6c (14:4e6c) - TX_FAR _Route20AfterBattleText6 - db "@" - -Route20BattleText7: ; 50e71 (14:4e71) - TX_FAR _Route20BattleText7 - db "@" - -Route20EndBattleText7: ; 50e76 (14:4e76) - TX_FAR _Route20EndBattleText7 - db "@" - -Route20AfterBattleText7: ; 50e7b (14:4e7b) - TX_FAR _Route20AfterBattleText7 - db "@" - -Route20BattleText8: ; 50e80 (14:4e80) - TX_FAR _Route20BattleText8 - db "@" - -Route20EndBattleText8: ; 50e85 (14:4e85) - TX_FAR _Route20EndBattleText8 - db "@" - -Route20AfterBattleText8: ; 50e8a (14:4e8a) - TX_FAR _Route20AfterBattleText8 - db "@" - -Route20BattleText9: ; 50e8f (14:4e8f) - TX_FAR _Route20BattleText9 - db "@" - -Route20EndBattleText9: ; 50e94 (14:4e94) - TX_FAR _Route20EndBattleText9 - db "@" - -Route20AfterBattleText9: ; 50e99 (14:4e99) - TX_FAR _Route20AfterBattleText9 - db "@" - -Route20BattleText10: ; 50e9e (14:4e9e) - TX_FAR _Route20BattleText10 - db "@" - -Route20EndBattleText10: ; 50ea3 (14:4ea3) - TX_FAR _Route20EndBattleText10 - db "@" - -Route20AfterBattleText10: ; 50ea8 (14:4ea8) - TX_FAR _Route20AfterBattleText10 - db "@" - -Route20Text12: ; 50ead (14:4ead) -Route20Text11: ; 50ead (14:4ead) - TX_FAR _Route20Text11 - db "@" - -Route22Script: ; 50eb2 (14:4eb2) - call EnableAutoTextBoxDrawing - ld hl, Route22ScriptPointers - ld a, [W_ROUTE22CURSCRIPT] - jp CallFunctionInTable - -Route22ScriptPointers: ; 50ebe (14:4ebe) - dw Route22Script0 - dw Route22Script1 - dw Route22Script2 - dw Route22Script3 - dw Route22Script4 - dw Route22Script5 - dw Route22Script6 - dw Route22Script7 - -Func_50ece: ; 50ece (14:4ece) - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_ROUTE22CURSCRIPT], a -Route22Script7: ; 50ed5 (14:4ed5) - ret - -Func_50ed6: ; 50ed6 (14:4ed6) - ld a, [W_RIVALSTARTER] ; $d715 - ld b, a -.asm_50eda - ld a, [hli] - cp b - jr z, .asm_50ee1 - inc hl - jr .asm_50eda -.asm_50ee1 - ld a, [hl] - ld [W_TRAINERNO], a ; $d05d - ret - -Func_50ee6: ; 50ee6 (14:4ee6) - ld de, MovementData_50efb ; $4efb - ld a, [$cf0d] - cp $1 - jr z, .asm_50ef1 - inc de -.asm_50ef1 - call MoveSprite - ld a, $c - ld [$ff8d], a - jp Func_34a6 - -MovementData_50efb: ; 50efb (14:4efb) - db $C0,$C0,$C0,$C0,$FF - -Route22Script0: ; 50f00 (14:4f00) - ld a, [$d7eb] - bit 7, a - ret z - ld hl, .CoordsData_50f2d ; $4f2d - call ArePlayerCoordsInArray - ret nc - ld a, [$cd3d] - ld [$cf0d], a - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld a, $2 - ld [$d528], a - ld a, [$d7eb] - bit 0, a - jr nz, .asm_50f32 ; 0x50f25 $b - bit 1, a - jp nz, Func_5104e - ret - -.CoordsData_50f2d - db $04, $1D - db $05, $1D - db $FF - -.asm_50f32 - ld a, $1 - ld [$cd4f], a - xor a - ld [$cd50], a - ld a, $4c - call Predef - ld a, [$d700] - and a - jr z, .asm_50f4e ; 0x50f44 $8 - ld a, $ff - ld [$c0ee], a - call PlaySound -.asm_50f4e - ld c, BANK(Music_MeetRival) - ld a, MUSIC_MEET_RIVAL - call PlayMusic - ld a, $1 - ld [$ff8c], a - call Func_50ee6 - ld a, $1 - ld [W_ROUTE22CURSCRIPT], a - ret - -Route22Script1: ; 50f62 (14:4f62) - ld a, [$d730] - bit 0, a - ret nz - ld a, [$cf0d] - cp $1 - jr nz, .asm_50f78 ; 0x50f6d $9 - ld a, $4 - ld [$d528], a - ld a, $4 - jr .asm_50f7a ; 0x50f76 $2 -.asm_50f78 - ld a, $c -.asm_50f7a - ld [$ff8d], a - ld a, $1 - ld [$ff8c], a - call Func_34a6 - 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_511b7 - ld de, UnnamedText_511bc - call PreBattleSaveRegisters - ld a, SONY1 + $c8 - ld [W_CUROPPONENT], a - ld hl, StarterMons_50faf ; $4faf - call Func_50ed6 - ld a, $2 - ld [W_ROUTE22CURSCRIPT], a - ret - -StarterMons_50faf: ; 50faf (14:4faf) - db SQUIRTLE,$04 - db BULBASAUR,$05 - db CHARMANDER,$06 - -Route22Script2: ; 50fb5 (14:4fb5) - ld a, [$d057] - cp $ff - jp z, Func_50ece - ld a, [$c109] - and a - jr nz, .asm_50fc7 ; 0x50fc1 $4 - ld a, $4 - jr .asm_50fc9 ; 0x50fc5 $2 -.asm_50fc7 - ld a, $c -.asm_50fc9 - ld [$ff8d], a - ld a, $1 - ld [$ff8c], a - call Func_34a6 - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld hl, $d7eb - set 5, [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, [$cf0d] - cp $1 - jr nz, .asm_50fff ; 0x50ff8 $5 - call Func_51008 - jr .asm_51002 ; 0x50ffd $3 -.asm_50fff - call Func_5100d -.asm_51002 - ld a, $3 - ld [W_ROUTE22CURSCRIPT], a - ret - -Func_51008: ; 51008 (14:5008) - ld de, MovementData_51017 ; $5017 - jr asm_51010 - -Func_5100d: ; 5100d (14:500d) - ld de, MovementData_5101f ; $501f -asm_51010 - ld a, $1 - ld [H_SPRITEHEIGHT], a - jp MoveSprite - -MovementData_51017: ; 51017 (14:5017) - db $C0,$C0,$00,$00,$00,$00,$00,$FF - -MovementData_5101f: ; 5101f (14:501f) - db $40,$C0,$C0,$C0,$00,$00,$00,$00,$00,$00,$FF - -Route22Script3: ; 5102a (14:502a) - ld a, [$d730] - bit 0, a - ret nz - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $22 - ld [$cc4d], a - ld a, $11 - call Predef - call Func_2307 - ld hl, $d7eb - res 0, [hl] - res 7, [hl] - ld a, $0 - ld [W_ROUTE22CURSCRIPT], a - ret - -Func_5104e: ; 5104e (14:504e) - ld a, $2 - ld [$cd4f], a - xor a - ld [$cd50], a - ld a, $4c - call Predef ; indirect jump to PrintEmotionBubble (17c47 (5:7c47)) - ld a, [$d700] - and a - jr z, .skipYVisibilityTesta - ld a, $ff - ld [$c0ee], a - call PlaySound -.skipYVisibilityTesta - ld a, $ff - ld [$c0ee], a - call PlaySound - ld b, BANK(Music_RivalAlternateTempo) - ld hl, Music_RivalAlternateTempo - call Bankswitch - ld a, $2 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call Func_50ee6 - ld a, $4 - ld [W_ROUTE22CURSCRIPT], a - ret - -Route22Script4: ; 51087 (14:5087) - ld a, [$d730] - bit 0, a - ret nz - ld a, $2 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - ld a, [$cf0d] - cp $1 - jr nz, .asm_510a1 - ld a, $4 - ld [$d528], a - ld a, $4 - jr .asm_510a8 -.asm_510a1 - ld a, $2 - ld [$d528], a - ld a, $c -.asm_510a8 - ld [$ff8d], a - call Func_34a6 - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $2 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld hl, $d72d - set 6, [hl] - set 7, [hl] - ld hl, UnnamedText_511cb ; $51cb - ld de, UnnamedText_511d0 ; $51d0 - call PreBattleSaveRegisters - ld a, SONY2 + $c8 - ld [W_CUROPPONENT], a ; $d059 - ld hl, StarterMons_510d9 ; $50d9 - call Func_50ed6 - ld a, $5 - ld [W_ROUTE22CURSCRIPT], a - ret - -StarterMons_510d9: ; 510d9 (14:50d9) - db SQUIRTLE,$0a - db BULBASAUR,$0b - db CHARMANDER,$0c - -Route22Script5: ; 510df (14:50df) - ld a, [W_ISINBATTLE] ; $d057 - cp $ff - jp z, Func_50ece - ld a, $2 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - ld a, [$cf0d] - cp $1 - jr nz, .asm_510fb - ld a, $4 - ld [$d528], a - ld a, $4 - jr .asm_51102 -.asm_510fb - ld a, $2 - ld [$d528], a - ld a, $c -.asm_51102 - ld [$ff8d], a - call Func_34a6 - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld hl, $d7eb - set 6, [hl] - ld a, $2 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld a, $ff - ld [$c0ee], a - call PlaySound - ld b, BANK(Music_RivalAlternateStartAndTempo) - ld hl, Music_RivalAlternateStartAndTempo - call Bankswitch - ld a, [$cf0d] - cp $1 - jr nz, .asm_51134 - call Func_5113d - jr .asm_51137 -.asm_51134 - call Func_51142 -.asm_51137 - ld a, $6 - ld [W_ROUTE22CURSCRIPT], a - ret - -Func_5113d: ; 5113d (14:513d) - ld de, MovementData_5114c ; $514c - jr asm_51145 - -Func_51142: ; 51142 (14:5142) - ld de, MovementData_5114d ; $514d -asm_51145: ; 51145 (14:5145) - ld a, $2 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - jp MoveSprite - -MovementData_5114c: ; 5114c (14:514c) - db $80 - -MovementData_5114d: ; 5114d (14:514d) - db $80,$80,$80,$FF - -Route22Script6: ; 51151 (14:5151) - ld a, [$d730] - bit 0, a - ret nz - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $23 - ld [$cc4d], a - ld a, $11 - call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) - call Func_2307 - ld hl, $d7eb - res 1, [hl] - res 7, [hl] - ld a, $7 - ld [W_ROUTE22CURSCRIPT], a - ret - -Route22TextPointers: ; 51175 (14:5175) - dw Route22Text1 - dw Route22Text2 - dw Route22Text3 - -Route22Text1: ; 5117b (14:517b) - db $08 ; asm - ld a, [$d7eb] - bit 5, a - jr z, .asm_a88cf ; 0x51181 - ld hl, UnnamedText_511b2 - call PrintText - jr .asm_48088 ; 0x51189 -.asm_a88cf ; 0x5118b - ld hl, UnnamedText_511ad - call PrintText -.asm_48088 ; 0x51191 - jp TextScriptEnd - -Route22Text2: ; 51194 (14:5194) - db $08 ; asm - ld a, [$d7eb] - bit 6, a - jr z, .asm_58c0a ; 0x5119a - ld hl, UnnamedText_511c6 - call PrintText - jr .asm_673ee ; 0x511a2 -.asm_58c0a ; 0x511a4 - ld hl, UnnamedText_511c1 - call PrintText -.asm_673ee ; 0x511aa - jp TextScriptEnd - -UnnamedText_511ad: ; 511ad (14:51ad) - TX_FAR _UnnamedText_511ad - db "@" - -UnnamedText_511b2: ; 511b2 (14:51b2) - TX_FAR _UnnamedText_511b2 - db "@" - -UnnamedText_511b7: ; 511b7 (14:51b7) - TX_FAR _UnnamedText_511b7 - db "@" - -UnnamedText_511bc: ; 511bc (14:51bc) - TX_FAR _UnnamedText_511bc - db "@" - -UnnamedText_511c1: ; 511c1 (14:51c1) - TX_FAR _UnnamedText_511c1 - db "@" - -UnnamedText_511c6: ; 511c6 (14:51c6) - TX_FAR _UnnamedText_511c6 - db "@" - -UnnamedText_511cb: ; 511cb (14:51cb) - TX_FAR _UnnamedText_511cb - db "@" - -UnnamedText_511d0: ; 511d0 (14:51d0) - TX_FAR _UnnamedText_511d0 - db "@" - -Route22Text3: ; 511d5 (14:51d5) - TX_FAR _Route22Text3 - db "@" - -Route23Script: ; 511da (14:51da) - call Func_511e9 - call EnableAutoTextBoxDrawing - ld hl, Route23ScriptPointers - ld a, [W_ROUTE23CURSCRIPT] - jp CallFunctionInTable - -Func_511e9: ; 511e9 (14:51e9) - ld hl, $d126 - bit 6, [hl] - res 6, [hl] - ret z - ld hl, $d7ee - res 0, [hl] - res 7, [hl] - ld hl, $d813 - res 0, [hl] - res 6, [hl] - ld a, $7a - ld [$cc4d], a - ld a, $15 - call Predef ; indirect jump to AddMissableObject (f1c8 (3:71c8)) - ld a, $60 - ld [$cc4d], a - ld a, $11 - jp Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) - -Route23ScriptPointers: ; 51213 (14:5213) - dw Route23Script0 - dw Route23Script1 - dw Route23Script2 - -Route23Script0: ; 51219 (14:5219) - ld hl, YCoordsData_51255 ; $5255 - ld a, [W_YCOORD] - ld b, a - ld e, $0 - ld c, $7 -.asm_51224 - ld a, [hli] - cp $ff - ret z - inc e - dec c - cp b - jr nz, .asm_51224 ; 0x5122b $f7 - cp $23 - jr nz, .asm_51237 ; 0x5122f $6 - ld a, [W_XCOORD] - cp $e - ret nc -.asm_51237 - ld a, e - ld [$ff8c], a - ld a, c - ld [$cd3d], a - ld b, $2 - ld hl, $d7ed - ld a, $10 - call Predef - ld a, c - and a - ret nz - call Func_5125d - call DisplayTextID - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ret - -YCoordsData_51255: ; 51255 (14:5255) - db $23,$38,$55,$60,$69,$77,$88,$FF - -Func_5125d: ; 5125d (14:525d) - ld hl, BadgeTextPointers ; $5276 - ld a, [wWhichTrade] ; $cd3d - ld c, a - ld b, $0 - add hl, bc - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld de, $cd6d -.asm_5126e - ld a, [hli] - ld [de], a - inc de - cp $50 - jr nz, .asm_5126e - ret - -BadgeTextPointers: ; 51276 (14:5276) - dw CascadeBadgeText - dw ThunderBadgeText - dw RainbowBadgeText - dw SoulBadgeText - dw MarshBadgeText - dw VolcanoBadgeText - dw EarthBadgeText - -EarthBadgeText: ; 51284 (14:5284) - db "EARTHBADGE@" - -VolcanoBadgeText: ; 5128f (14:528f) - db "VOLCANOBADGE@" - -MarshBadgeText: ; 5129c (14:529c) - db "MARSHBADGE@" - -SoulBadgeText: ; 512a7 (14:52a7) - db "SOULBADGE@" - -RainbowBadgeText: ; 512b1 (14:52b1) - db "RAINBOWBADGE@" - -ThunderBadgeText: ; 512be (14:52be) - db "THUNDERBADGE@" - -CascadeBadgeText: ; 512cb (14:52cb) - db "CASCADEBADGE@" - -Func_512d8: ; 512d8 (14:52d8) - ld a, $1 - ld [$cd38], a - ld a, $80 - ld [$ccd3], a - xor a - ld [$c109], a - ld [wJoypadForbiddenButtonsMask], a - jp Func_3486 - -Route23Script1: ; 512ec (14:52ec) - ld a, [$cd38] - and a - ret nz -Route23Script2: ; 512f1 (14:52f1) - ld a, $0 - ld [W_ROUTE23CURSCRIPT], a - ret - -Route23TextPointers: ; 512f7 (14:52f7) - dw Route23Text1 - dw Route23Text2 - dw Route23Text3 - dw Route23Text4 - dw Route23Text5 - dw Route23Text6 - dw Route23Text7 - dw Route23Text8 - -Route23Text1: ; 51307 (14:5307) - db $08 ; asm - ld a, $6 - call Func_51346 - jp TextScriptEnd - -Route23Text2: ; 51310 (14:5310) - db $08 ; asm - ld a, $5 - call Func_51346 - jp TextScriptEnd - -Route23Text3: ; 51319 (14:5319) - db $08 ; asm - ld a, $4 - call Func_51346 - jp TextScriptEnd - -Route23Text4: ; 51322 (14:5322) - db $08 ; asm - ld a, $3 - call Func_51346 - jp TextScriptEnd - -Route23Text5: ; 5132b (14:532b) - db $08 ; asm - ld a, $2 - call Func_51346 - jp TextScriptEnd - -Route23Text6: ; 51334 (14:5334) - db $08 ; asm - ld a, $1 - call Func_51346 - jp TextScriptEnd - -Route23Text7: ; 5133d (14:533d) - db $8 - ld a, $0 - call Func_51346 - jp TextScriptEnd - -Func_51346: ; 51346 (14:5346) - ld [wWhichTrade], a ; $cd3d - call Func_5125d - ld a, [wWhichTrade] ; $cd3d - inc a - ld c, a - ld b, $2 - ld hl, W_OBTAINEDBADGES - ld a, $10 - call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) - ld a, c - and a - jr nz, .asm_5136e - ld hl, VictoryRoadGuardText1 - call PrintText - call Func_512d8 - ld a, $1 - ld [W_ROUTE23CURSCRIPT], a - ret -.asm_5136e - ld hl, VictoryRoadGuardText2 - call PrintText - ld a, [wWhichTrade] ; $cd3d - ld c, a - ld b, $1 - ld hl, $d7ed - ld a, $10 - call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) - ld a, $2 - ld [W_ROUTE23CURSCRIPT], a - ret - -Func_51388: ; 51388 (14:5388) - ld hl, VictoryRoadGuardText2 - jp PrintText - -VictoryRoadGuardText1: ; 5138e (14:538e) - TX_FAR _VictoryRoadGuardText1 - db $08 ; asm - ld a, (SFX_02_51 - SFX_Headers_02) / 3 - call PlaySoundWaitForCurrent - call WaitForSoundToFinish - jp TextScriptEnd - -VictoryRoadGuardText2: ; 5139e (14:539e) - TX_FAR _VictoryRoadGuardText2 - db $b - TX_FAR _UnnamedText_513a3 - db "@" - -Route23Text8: ; 513a8 (14:53a8) - TX_FAR _Route23Text8 - db "@" - -Route24Script: ; 513ad (14:53ad) - call EnableAutoTextBoxDrawing - ld hl, Route24TrainerHeaders - ld de, Route24ScriptPointers - ld a, [W_ROUTE24CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROUTE24CURSCRIPT], a - ret - -Func_513c0: ; 513c0 (14:53c0) - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_ROUTE24CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -Route24ScriptPointers: ; 513cb (14:53cb) - dw Route24Script0 - dw Func_324c - dw EndTrainerBattle - dw Route24Script3 - dw Route24Script4 - -Route24Script0: ; 513d5 (14:53d5) - ld a, [$d7ef] - bit 0, a - jp nz, CheckFightingMapTrainers - ld hl, CoordsData_5140e ; $540e - call ArePlayerCoordsInArray - jp nc, CheckFightingMapTrainers - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, $1 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld hl, $d7f0 - bit 1, [hl] - res 1, [hl] - ret z - ld a, $80 - ld [$ccd3], a - ld a, $1 - ld [$cd38], a - call Func_3486 - ld a, $4 - ld [W_ROUTE24CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -CoordsData_5140e: ; 5140e (14:540e) - db $0F,$0A,$FF - -Route24Script4: ; 51411 (14:5411) - ld a, [$cd38] - and a - ret nz - call Delay3 - ld a, $0 - ld [W_ROUTE24CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -Route24Script3: ; 51422 (14:5422) - ld a, [W_ISINBATTLE] ; $d057 - cp $ff - jp z, Func_513c0 - call UpdateSprites - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld hl, $d7ef - set 1, [hl] - ld a, $1 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $0 - ld [W_ROUTE24CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -Route24TextPointers: ; 5144b (14:544b) - dw Route24Text1 - dw Route24Text2 - dw Route24Text3 - dw Route24Text4 - dw Route24Text5 - dw Route24Text6 - dw Route24Text7 - dw Predef5CText - -Route24TrainerHeaders: ; 5145b (14:545b) -Route24TrainerHeader0: ; 5145b (14:545b) - db $2 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7ef ; flag's byte - dw Route24BattleText1 ; 0x5571 TextBeforeBattle - dw Route24AfterBattleText1 ; 0x557b TextAfterBattle - dw Route24EndBattleText1 ; 0x5576 TextEndBattle - dw Route24EndBattleText1 ; 0x5576 TextEndBattle - -Route24TrainerHeader2: ; 51467 (14:5467) - db $3 ; flag's bit - db ($1 << 4) ; trainer's view range - dw $d7ef ; flag's byte - dw Route24BattleText2 ; 0x5580 TextBeforeBattle - dw Route24AfterBattleText2 ; 0x558a TextAfterBattle - dw Route24EndBattleText2 ; 0x5585 TextEndBattle - dw Route24EndBattleText2 ; 0x5585 TextEndBattle - -Route24TrainerHeader3: ; 51473 (14:5473) - db $4 ; flag's bit - db ($1 << 4) ; trainer's view range - dw $d7ef ; flag's byte - dw Route24BattleText3 ; 0x558f TextBeforeBattle - dw Route24AfterBattleText3 ; 0x5599 TextAfterBattle - dw Route24EndBattleText3 ; 0x5594 TextEndBattle - dw Route24EndBattleText3 ; 0x5594 TextEndBattle - -Route24TrainerHeader4: ; 5147f (14:547f) - db $5 ; flag's bit - db ($1 << 4) ; trainer's view range - dw $d7ef ; flag's byte - dw Route24BattleText4 ; 0x559e TextBeforeBattle - dw Route24AfterBattleText4 ; 0x55a8 TextAfterBattle - dw Route24EndBattleText4 ; 0x55a3 TextEndBattle - dw Route24EndBattleText4 ; 0x55a3 TextEndBattle - -Route24TrainerHeader5: ; 5148b (14:548b) - db $6 ; flag's bit - db ($1 << 4) ; trainer's view range - dw $d7ef ; flag's byte - dw Route24BattleText5 ; 0x55ad TextBeforeBattle - dw Route24AfterBattleText5 ; 0x55b7 TextAfterBattle - dw Route24EndBattleText5 ; 0x55b2 TextEndBattle - dw Route24EndBattleText5 ; 0x55b2 TextEndBattle - -Route24TrainerHeader6: ; 51497 (14:5497) - db $7 ; flag's bit - db ($1 << 4) ; trainer's view range - dw $d7ef ; flag's byte - dw Route24BattleText6 ; 0x55bc TextBeforeBattle - dw Route24AfterBattleText6 ; 0x55c6 TextAfterBattle - dw Route24EndBattleText6 ; 0x55c1 TextEndBattle - dw Route24EndBattleText6 ; 0x55c1 TextEndBattle - - db $ff - -Route24Text1: ; 514a4 (14:54a4) - db $8 - ld hl, $d7f0 - res 1, [hl] - ld a, [$d7ef] - bit 0, a - jr nz, .asm_a03f5 ; 0x514af $48 - ld hl, UnnamedText_51510 - call PrintText - ld bc, (NUGGET << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, $d7ef - set 0, [hl] - ld hl, UnnamedText_5151a - call PrintText - ld hl, UnnamedText_51526 - call PrintText - ld hl, $d72d - set 6, [hl] - set 7, [hl] - ld hl, UnnamedText_5152b - ld de, UnnamedText_5152b - call PreBattleSaveRegisters - ld a, [$ff8c] - ld [$cf13], a - call EngageMapTrainer - call InitBattleEnemyParameters - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, $3 - ld [W_ROUTE24CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - jp TextScriptEnd -.asm_a03f5 ; 0x514f9 - ld hl, UnnamedText_51530 - call PrintText - jp TextScriptEnd -.BagFull - ld hl, UnnamedText_51521 - call PrintText - ld hl, $d7f0 - set 1, [hl] - jp TextScriptEnd - -UnnamedText_51510: ; 51510 (14:5510) - TX_FAR _UnnamedText_51510 ; 0x92721 - db $0B - TX_FAR _UnnamedText_51515 ; 0x92755 - db "@" - -UnnamedText_5151a: ; 5151a (14:551a) - TX_FAR _UnnamedText_5151a ; 0x92779 - db $0B, $6, "@" - -UnnamedText_51521: ; 51521 (14:5521) - TX_FAR _UnnamedText_51521 - db "@" - -UnnamedText_51526: ; 51526 (14:5526) - TX_FAR _UnnamedText_51526 - db "@" - -UnnamedText_5152b: ; 5152b (14:552b) - TX_FAR _UnnamedText_5152b - db "@" - -UnnamedText_51530: ; 51530 (14:5530) - TX_FAR _UnnamedText_51530 - db "@" - -Route24Text2: ; 51535 (14:5535) - db $08 ; asm - ld hl, Route24TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -Route24Text3: ; 5153f (14:553f) - db $08 ; asm - ld hl, Route24TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -Route24Text4: ; 51549 (14:5549) - db $08 ; asm - ld hl, Route24TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -Route24Text5: ; 51553 (14:5553) - db $08 ; asm - ld hl, Route24TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -Route24Text6: ; 5155d (14:555d) - db $08 ; asm - ld hl, Route24TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -Route24Text7: ; 51567 (14:5567) - db $08 ; asm - ld hl, Route24TrainerHeader6 - call TalkToTrainer - jp TextScriptEnd - -Route24BattleText1: ; 51571 (14:5571) - TX_FAR _Route24BattleText1 - db "@" - -Route24EndBattleText1: ; 51576 (14:5576) - TX_FAR _Route24EndBattleText1 - db "@" - -Route24AfterBattleText1: ; 5157b (14:557b) - TX_FAR _Route24AfterBattleText1 - db "@" - -Route24BattleText2: ; 51580 (14:5580) - TX_FAR _Route24BattleText2 - db "@" - -Route24EndBattleText2: ; 51585 (14:5585) - TX_FAR _Route24EndBattleText2 - db "@" - -Route24AfterBattleText2: ; 5158a (14:558a) - TX_FAR _Route24AfterBattleText2 - db "@" - -Route24BattleText3: ; 5158f (14:558f) - TX_FAR _Route24BattleText3 - db "@" - -Route24EndBattleText3: ; 51594 (14:5594) - TX_FAR _Route24EndBattleText3 - db "@" - -Route24AfterBattleText3: ; 51599 (14:5599) - TX_FAR _Route24AfterBattleText3 - db "@" - -Route24BattleText4: ; 5159e (14:559e) - TX_FAR _Route24BattleText4 - db "@" - -Route24EndBattleText4: ; 515a3 (14:55a3) - TX_FAR _Route24EndBattleText4 - db "@" - -Route24AfterBattleText4: ; 515a8 (14:55a8) - TX_FAR _Route24AfterBattleText4 - db "@" - -Route24BattleText5: ; 515ad (14:55ad) - TX_FAR _Route24BattleText5 - db "@" - -Route24EndBattleText5: ; 515b2 (14:55b2) - TX_FAR _Route24EndBattleText5 - db "@" - -Route24AfterBattleText5: ; 515b7 (14:55b7) - TX_FAR _Route24AfterBattleText5 - db "@" - -Route24BattleText6: ; 515bc (14:55bc) - TX_FAR _Route24BattleText6 - db "@" - -Route24EndBattleText6: ; 515c1 (14:55c1) - TX_FAR _Route24EndBattleText6 - db "@" - -Route24AfterBattleText6: ; 515c6 (14:55c6) - TX_FAR _Route24AfterBattleText6 - db "@" - -Route25Script: ; 515cb (14:55cb) - call Route25Script_515e1 - call EnableAutoTextBoxDrawing - ld hl, Route25TrainerHeaders - ld de, Route25ScriptPointers - ld a, [W_ROUTE25CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROUTE25CURSCRIPT], a - ret - -Route25Script_515e1: ; 515e1 (14:55e1) - ld hl, $d126 - bit 6, [hl] - res 6, [hl] - ret z - ld hl, $d7f2 - bit 7, [hl] - ret nz - bit 5, [hl] - jr nz, .asm_515ff - res 6, [hl] - ld a, $61 - ld [$cc4d], a - ld a, $15 - jp Predef ; indirect jump to AddMissableObject (f1c8 (3:71c8)) -.asm_515ff - bit 4, [hl] - ret z - set 7, [hl] - ld a, $24 - ld [$cc4d], a - ld a, $11 - call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) - ld a, $62 - ld [$cc4d], a - ld a, $11 - call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) - ld a, $63 - ld [$cc4d], a - ld a, $15 - jp Predef ; indirect jump to AddMissableObject (f1c8 (3:71c8)) - -Route25ScriptPointers: ; 51622 (14:5622) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -Route25TextPointers: ; 51628 (14:5628) - dw Route25Text1 - dw Route25Text2 - dw Route25Text3 - dw Route25Text4 - dw Route25Text5 - dw Route25Text6 - dw Route25Text7 - dw Route25Text8 - dw Route25Text9 - dw Predef5CText - dw Route25Text11 - -Route25TrainerHeaders: ; 5163e (14:563e) -Route25TrainerHeader0: ; 5163e (14:563e) - db $1 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7f1 ; flag's byte - dw Route25BattleText1 ; 0x5705 TextBeforeBattle - dw Route25AfterBattleText1 ; 0x570f TextAfterBattle - dw Route25EndBattleText1 ; 0x570a TextEndBattle - dw Route25EndBattleText1 ; 0x570a TextEndBattle - -Route25TrainerHeader2: ; 5164a (14:564a) - db $2 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7f1 ; flag's byte - dw Route25BattleText2 ; 0x5714 TextBeforeBattle - dw Route25AfterBattleText2 ; 0x571e TextAfterBattle - dw Route25EndBattleText2 ; 0x5719 TextEndBattle - dw Route25EndBattleText2 ; 0x5719 TextEndBattle - -Route25TrainerHeader3: ; 51656 (14:5656) - db $3 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7f1 ; flag's byte - dw Route25BattleText3 ; 0x5723 TextBeforeBattle - dw Route25AfterBattleText3 ; 0x572d TextAfterBattle - dw Route25EndBattleText3 ; 0x5728 TextEndBattle - dw Route25EndBattleText3 ; 0x5728 TextEndBattle - -Route25TrainerHeader4: ; 51662 (14:5662) - db $4 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7f1 ; flag's byte - dw Route25BattleText4 ; 0x5732 TextBeforeBattle - dw Route25AfterBattleText4 ; 0x573c TextAfterBattle - dw Route25EndBattleText4 ; 0x5737 TextEndBattle - dw Route25EndBattleText4 ; 0x5737 TextEndBattle - -Route25TrainerHeader5: ; 5166e (14:566e) - db $5 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7f1 ; flag's byte - dw Route25BattleText5 ; 0x5741 TextBeforeBattle - dw Route25AfterBattleText5 ; 0x574b TextAfterBattle - dw Route25EndBattleText5 ; 0x5746 TextEndBattle - dw Route25EndBattleText5 ; 0x5746 TextEndBattle - -Route25TrainerHeader6: ; 5167a (14:567a) - db $6 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7f1 ; flag's byte - dw Route25BattleText6 ; 0x5750 TextBeforeBattle - dw Route25AfterBattleText6 ; 0x575a TextAfterBattle - dw Route25EndBattleText6 ; 0x5755 TextEndBattle - dw Route25EndBattleText6 ; 0x5755 TextEndBattle - -Route25TrainerHeader7: ; 51686 (14:5686) - db $7 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7f1 ; flag's byte - dw Route25BattleText7 ; 0x575f TextBeforeBattle - dw Route25AfterBattleText7 ; 0x5769 TextAfterBattle - dw Route25EndBattleText7 ; 0x5764 TextEndBattle - dw Route25EndBattleText7 ; 0x5764 TextEndBattle - -Route25TrainerHeader8: ; 51692 (14:5692) - db $8 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7f1 ; flag's byte - dw Route25BattleText8 ; 0x576e TextBeforeBattle - dw Route25AfterBattleText8 ; 0x5778 TextAfterBattle - dw Route25EndBattleText8 ; 0x5773 TextEndBattle - dw Route25EndBattleText8 ; 0x5773 TextEndBattle - -Route25TrainerHeader9: ; 5169e (14:569e) - db $9 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7f1 ; flag's byte - dw Route25BattleText9 ; 0x577d TextBeforeBattle - dw Route25AfterBattleText9 ; 0x5787 TextAfterBattle - dw Route25EndBattleText9 ; 0x5782 TextEndBattle - dw Route25EndBattleText9 ; 0x5782 TextEndBattle - - db $ff - -Route25Text1: ; 516ab (14:56ab) - db $08 ; asm - ld hl, Route25TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -Route25Text2: ; 516b5 (14:56b5) - db $08 ; asm - ld hl, Route25TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -Route25Text3: ; 516bf (14:56bf) - db $08 ; asm - ld hl, Route25TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -Route25Text4: ; 516c9 (14:56c9) - db $08 ; asm - ld hl, Route25TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -Route25Text5: ; 516d3 (14:56d3) - db $08 ; asm - ld hl, Route25TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -Route25Text6: ; 516dd (14:56dd) - db $08 ; asm - ld hl, Route25TrainerHeader6 - call TalkToTrainer - jp TextScriptEnd - -Route25Text7: ; 516e7 (14:56e7) - db $08 ; asm - ld hl, Route25TrainerHeader7 - call TalkToTrainer - jp TextScriptEnd - -Route25Text8: ; 516f1 (14:56f1) - db $08 ; asm - ld hl, Route25TrainerHeader8 - call TalkToTrainer - jp TextScriptEnd - -Route25Text9: ; 516fb (14:56fb) - db $08 ; asm - ld hl, Route25TrainerHeader9 - call TalkToTrainer - jp TextScriptEnd - -Route25BattleText1: ; 51705 (14:5705) - TX_FAR _Route25BattleText1 - db "@" - -Route25EndBattleText1: ; 5170a (14:570a) - TX_FAR _Route25EndBattleText1 - db "@" - -Route25AfterBattleText1: ; 5170f (14:570f) - TX_FAR _Route25AfterBattleText1 - db "@" - -Route25BattleText2: ; 51714 (14:5714) - TX_FAR _Route25BattleText2 - db "@" - -Route25EndBattleText2: ; 51719 (14:5719) - TX_FAR _Route25EndBattleText2 - db "@" - -Route25AfterBattleText2: ; 5171e (14:571e) - TX_FAR _Route25AfterBattleText2 - db "@" - -Route25BattleText3: ; 51723 (14:5723) - TX_FAR _Route25BattleText3 - db "@" - -Route25EndBattleText3: ; 51728 (14:5728) - TX_FAR _Route25EndBattleText3 - db "@" - -Route25AfterBattleText3: ; 5172d (14:572d) - TX_FAR _Route25AfterBattleText3 - db "@" - -Route25BattleText4: ; 51732 (14:5732) - TX_FAR _Route25BattleText4 - db "@" - -Route25EndBattleText4: ; 51737 (14:5737) - TX_FAR _Route25EndBattleText4 - db "@" - -Route25AfterBattleText4: ; 5173c (14:573c) - TX_FAR _Route25AfterBattleText4 - db "@" - -Route25BattleText5: ; 51741 (14:5741) - TX_FAR _Route25BattleText5 - db "@" - -Route25EndBattleText5: ; 51746 (14:5746) - TX_FAR _Route25EndBattleText5 - db "@" - -Route25AfterBattleText5: ; 5174b (14:574b) - TX_FAR _Route25AfterBattleText5 - db "@" - -Route25BattleText6: ; 51750 (14:5750) - TX_FAR _Route25BattleText6 - db "@" - -Route25EndBattleText6: ; 51755 (14:5755) - TX_FAR _Route25EndBattleText6 - db "@" - -Route25AfterBattleText6: ; 5175a (14:575a) - TX_FAR _Route25AfterBattleText6 - db "@" - -Route25BattleText7: ; 5175f (14:575f) - TX_FAR _Route25BattleText7 - db "@" - -Route25EndBattleText7: ; 51764 (14:5764) - TX_FAR _Route25EndBattleText7 - db "@" - -Route25AfterBattleText7: ; 51769 (14:5769) - TX_FAR _Route25AfterBattleText7 - db "@" - -Route25BattleText8: ; 5176e (14:576e) - TX_FAR _Route25BattleText8 - db "@" - -Route25EndBattleText8: ; 51773 (14:5773) - TX_FAR _Route25EndBattleText8 - db "@" - -Route25AfterBattleText8: ; 51778 (14:5778) - TX_FAR _Route25AfterBattleText8 - db "@" - -Route25BattleText9: ; 5177d (14:577d) - TX_FAR _Route25BattleText9 - db "@" - -Route25EndBattleText9: ; 51782 (14:5782) - TX_FAR _Route25EndBattleText9 - db "@" - -Route25AfterBattleText9: ; 51787 (14:5787) - TX_FAR _Route25AfterBattleText9 - db "@" - -Route25Text11: ; 5178c (14:578c) - TX_FAR _Route25Text11 - db "@" - -INCLUDE "data/mapHeaders/victoryroad2.asm" - -VictoryRoad2Script: ; 5179d (14:579d) - ld hl, $d126 - bit 6, [hl] - res 6, [hl] - call nz, VictoryRoad2Script_517c4 - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - call nz, Func_517c9 - call EnableAutoTextBoxDrawing - ld hl, VictoryRoad2TrainerHeaders - ld de, VictoryRoad2ScriptPointers - ld a, [W_VICTORYROAD2CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_VICTORYROAD2CURSCRIPT], a - ret - -VictoryRoad2Script_517c4: ; 517c4 (14:57c4) - ld hl, $d869 - res 7, [hl] - -Func_517c9: ; 517c9 (14:57c9) - ld a, [$d7ee] - bit 0, a - jr z, .asm_517da - push af - ld a, $15 - ld bc, $403 - call Func_517e2 - pop af -.asm_517da - bit 7, a - ret z - ld a, $1d - ld bc, $70b - -Func_517e2: ; 517e2 (14:57e2) - ld [$d09f], a - ld a, $17 - call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) - ret - -VictoryRoad2ScriptPointers: ; 517eb (14:57eb) - dw VictoryRoad2Script0 - dw Func_324c - dw EndTrainerBattle - -VictoryRoad2Script0: ; 517f1 (14:57f1) - ld hl, CoordsData_51816 ; $5816 - call CheckBoulderCoords - jp nc, CheckFightingMapTrainers - ld hl, $d7ee - ld a, [wWhichTrade] ; $cd3d - cp $2 - jr z, .asm_5180b - bit 0, [hl] - set 0, [hl] - ret nz - jr .asm_51810 -.asm_5180b - bit 7, [hl] - set 7, [hl] - ret nz -.asm_51810 - ld hl, $d126 - set 5, [hl] - ret - -CoordsData_51816: ; 51816 (14:5816) - db $10,$01 - db $10,$09 - db $FF - -VictoryRoad2TextPointers: ; 5181b (14:581b) - dw VictoryRoad2Text1 - dw VictoryRoad2Text2 - dw VictoryRoad2Text3 - dw VictoryRoad2Text4 - dw VictoryRoad2Text5 - dw VictoryRoad2Text6 - dw Predef5CText - dw Predef5CText - dw Predef5CText - dw Predef5CText - dw BoulderText - dw BoulderText - dw BoulderText - -VictoryRoad2TrainerHeaders: ; 51835 (14:5835) -VictoryRoad2TrainerHeader0: ; 51835 (14:5835) - db $1 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7ee ; flag's byte - dw VictoryRoad2BattleText1 ; 0x58ca TextBeforeBattle - dw VictoryRoad2AfterBattleText1 ; 0x58d4 TextAfterBattle - dw VictoryRoad2EndBattleText1 ; 0x58cf TextEndBattle - dw VictoryRoad2EndBattleText1 ; 0x58cf TextEndBattle - -VictoryRoad2TrainerHeader2: ; 51841 (14:5841) - db $2 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7ee ; flag's byte - dw VictoryRoad2BattleText2 ; 0x58d9 TextBeforeBattle - dw VictoryRoad2AfterBattleText2 ; 0x58e3 TextAfterBattle - dw VictoryRoad2EndBattleText2 ; 0x58de TextEndBattle - dw VictoryRoad2EndBattleText2 ; 0x58de TextEndBattle - -VictoryRoad2TrainerHeader3: ; 5184d (14:584d) - db $3 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7ee ; flag's byte - dw VictoryRoad2BattleText3 ; 0x58e8 TextBeforeBattle - dw VictoryRoad2AfterBattleText3 ; 0x58f2 TextAfterBattle - dw VictoryRoad2EndBattleText3 ; 0x58ed TextEndBattle - dw VictoryRoad2EndBattleText3 ; 0x58ed TextEndBattle - -VictoryRoad2TrainerHeader4: ; 51859 (14:5859) - db $4 ; flag's bit - db ($1 << 4) ; trainer's view range - dw $d7ee ; flag's byte - dw VictoryRoad2BattleText4 ; 0x58f7 TextBeforeBattle - dw VictoryRoad2AfterBattleText4 ; 0x5901 TextAfterBattle - dw VictoryRoad2EndBattleText4 ; 0x58fc TextEndBattle - dw VictoryRoad2EndBattleText4 ; 0x58fc TextEndBattle - -VictoryRoad2TrainerHeader5: ; 51865 (14:5865) - db $5 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7ee ; flag's byte - dw VictoryRoad2BattleText5 ; 0x5906 TextBeforeBattle - dw VictoryRoad2AfterBattleText5 ; 0x5910 TextAfterBattle - dw VictoryRoad2EndBattleText5 ; 0x590b TextEndBattle - dw VictoryRoad2EndBattleText5 ; 0x590b TextEndBattle - -VictoryRoad2TrainerHeader6: ; 51871 (14:5871) - db $6 ; flag's bit - db ($0 << 4) ; trainer's view range - dw $d7ee ; flag's byte - dw VictoryRoad2BattleText6 ; 0x58ba TextBeforeBattle - dw VictoryRoad2BattleText6 ; 0x58ba TextAfterBattle - dw VictoryRoad2BattleText6 ; 0x58ba TextEndBattle - dw VictoryRoad2BattleText6 ; 0x58ba TextEndBattle - - db $ff - -VictoryRoad2Text1: ; 5187e (14:587e) - db $08 ; asm - ld hl, VictoryRoad2TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -VictoryRoad2Text2: ; 51888 (14:5888) - db $08 ; asm - ld hl, VictoryRoad2TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -VictoryRoad2Text3: ; 51892 (14:5892) - db $08 ; asm - ld hl, VictoryRoad2TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -VictoryRoad2Text4: ; 5189c (14:589c) - db $08 ; asm - ld hl, VictoryRoad2TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -VictoryRoad2Text5: ; 518a6 (14:58a6) - db $08 ; asm - ld hl, VictoryRoad2TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -VictoryRoad2Text6: ; 518b0 (14:58b0) - db $08 ; asm - ld hl, VictoryRoad2TrainerHeader6 - call TalkToTrainer - jp TextScriptEnd - -VictoryRoad2BattleText6: ; 518ba (14:58ba) - TX_FAR _VictoryRoad2BattleText6 - db $8 - ld a, MOLTRES - call PlayCry - call WaitForSoundToFinish - jp TextScriptEnd - -VictoryRoad2BattleText1: ; 518ca (14:58ca) - TX_FAR _VictoryRoad2BattleText1 - db "@" - -VictoryRoad2EndBattleText1: ; 518cf (14:58cf) - TX_FAR _VictoryRoad2EndBattleText1 - db "@" - -VictoryRoad2AfterBattleText1: ; 518d4 (14:58d4) - TX_FAR _VictoryRoad2AfterBattleText1 - db "@" - -VictoryRoad2BattleText2: ; 518d9 (14:58d9) - TX_FAR _VictoryRoad2BattleText2 - db "@" - -VictoryRoad2EndBattleText2: ; 518de (14:58de) - TX_FAR _VictoryRoad2EndBattleText2 - db "@" - -VictoryRoad2AfterBattleText2: ; 518e3 (14:58e3) - TX_FAR _VictoryRoad2AfterBattleText2 - db "@" - -VictoryRoad2BattleText3: ; 518e8 (14:58e8) - TX_FAR _VictoryRoad2BattleText3 - db "@" - -VictoryRoad2EndBattleText3: ; 518ed (14:58ed) - TX_FAR _VictoryRoad2EndBattleText3 - db "@" - -VictoryRoad2AfterBattleText3: ; 518f2 (14:58f2) - TX_FAR _VictoryRoad2AfterBattleText3 - db "@" - -VictoryRoad2BattleText4: ; 518f7 (14:58f7) - TX_FAR _VictoryRoad2BattleText4 - db "@" - -VictoryRoad2EndBattleText4: ; 518fc (14:58fc) - TX_FAR _VictoryRoad2EndBattleText4 - db "@" - -VictoryRoad2AfterBattleText4: ; 51901 (14:5901) - TX_FAR _VictoryRoad2AfterBattleText4 - db "@" - -VictoryRoad2BattleText5: ; 51906 (14:5906) - TX_FAR _VictoryRoad2BattleText5 - db "@" - -VictoryRoad2EndBattleText5: ; 5190b (14:590b) - TX_FAR _VictoryRoad2EndBattleText5 - db "@" - -VictoryRoad2AfterBattleText5: ; 51910 (14:5910) - TX_FAR _VictoryRoad2AfterBattleText5 - db "@" - -INCLUDE "data/mapObjects/victoryroad2.asm" - -VictoryRoad2Blocks: ; 519af (14:59af) - INCBIN "maps/victoryroad2.blk" - -INCLUDE "data/mapHeaders/mtmoon2.asm" - -MtMoon2Script: ; 51a42 (14:5a42) - call EnableAutoTextBoxDrawing - ret - -MtMoon2TextPointers: ; 51a46 (14:5a46) - dw MtMoonText1 - -MtMoonText1: ; 51a48 (14:5a48) - TX_FAR _UnnamedText_51a48 - db "@" - -INCLUDE "data/mapObjects/mtmoon2.asm" - -MtMoon2Blocks: ; 51a91 (14:5a91) - INCBIN "maps/mtmoon2.blk" - -INCLUDE "data/mapHeaders/silphco7.asm" - -SilphCo7Script: ; 51b61 (14:5b61) - call SilphCo7Script_51b77 - call EnableAutoTextBoxDrawing - ld hl, SilphCo7TrainerHeaders - ld de, SilphCo7ScriptPointers - ld a, [W_SILPHCO7CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_SILPHCO7CURSCRIPT], a - ret - -SilphCo7Script_51b77: ; 51b77 (14:5b77) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - ret z - ld hl, DataTable_51bc1 ; $5bc1 - call Func_51bc8 - call Func_51bf4 - ld a, [$d830] - bit 4, a - jr nz, .asm_51b9e - push af - ld a, $54 - ld [$d09f], a - ld bc, $305 - ld a, $17 - call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) - pop af -.asm_51b9e - bit 5, a - jr nz, .asm_51bb1 - push af - ld a, $54 - ld [$d09f], a - ld bc, $20a - ld a, $17 - call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) - pop af -.asm_51bb1 - bit 6, a - ret nz - ld a, $54 - ld [$d09f], a - ld bc, $60a - ld a, $17 - jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) - -DataTable_51bc1: ; 51bc1 (14:5bc1) - db $03,$05,$02,$0A,$06,$0A,$FF - -Func_51bc8: ; 51bc8 (14:5bc8) - push hl - ld hl, $d73f - ld a, [hli] - ld b, a - ld a, [hl] - ld c, a - xor a - ld [$ffe0], a - pop hl -.asm_51bd4 - ld a, [hli] - cp $ff - jr z, .asm_51bf0 - push hl - ld hl, $ffe0 - inc [hl] - pop hl - cp b - jr z, .asm_51be5 - inc hl - jr .asm_51bd4 -.asm_51be5 - ld a, [hli] - cp c - jr nz, .asm_51bd4 - ld hl, $d73f - xor a - ld [hli], a - ld [hl], a - ret -.asm_51bf0 - xor a - ld [$ffe0], a - ret - -Func_51bf4: ; 51bf4 (14:5bf4) - ld hl, $d830 - ld a, [$ffe0] - and a - ret z - cp $1 - jr nz, .asm_51c02 - set 4, [hl] - ret -.asm_51c02 - cp $2 - jr nz, .asm_51c09 - set 5, [hl] - ret -.asm_51c09 - set 6, [hl] - ret - -Func_51c0c: ; 51c0c (14:5c0c) - xor a - ld [wJoypadForbiddenButtonsMask], a - -Func_51c10: ; 51c10 (14:5c10) - ld [W_SILPHCO7CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -SilphCo7ScriptPointers: ; 51c17 (14:5c17) - dw SilphCo7Script0 - dw Func_324c - dw EndTrainerBattle - dw SilphCo7Script3 - dw SilphCo7Script4 - dw SilphCo7Script5 - -SilphCo7Script0: ; 51c23 (14:5c23) - ld a, [$d82f] - bit 0, a - jp nz, CheckFightingMapTrainers - ld hl, CoordsData_51c78 - call ArePlayerCoordsInArray - jp nc, CheckFightingMapTrainers - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld a, $4 - ld [$d528], a - ld a, $ff - ld [$c0ee], a - call PlaySound - ld c, BANK(Music_MeetRival) - ld a, MUSIC_MEET_RIVAL - call PlayMusic - ld a, $9 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld a, $9 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call SetSpriteMovementBytesToFF - ld de, MovementData_51c7d - ld a, [wWhichTrade] ; $cd3d - ld [$cf0d], a - cp $1 - jr z, .asm_51c6c - inc de -.asm_51c6c - ld a, $9 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call MoveSprite - ld a, $3 - jp Func_51c10 - -CoordsData_51c78: ; 51c78 (14:5c78) - db $02,$03 - db $03,$03 - db $FF - -MovementData_51c7d: ; 51c7d (14:5c7d) - db $40,$40,$40,$40,$FF - -SilphCo7Script3: ; 51c82 (14:5c82) - ld a, [$d730] - bit 0, a - ret nz - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $d - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - call Delay3 - ld hl, $d72d - set 6, [hl] - set 7, [hl] - ld hl, SilphCo7Text14 ; $5ec8 - ld de, UnnamedText_51ecd ; $5ecd - call PreBattleSaveRegisters - ld a, SONY2 + $c8 - ld [W_CUROPPONENT], a ; $d059 - ld a, [W_RIVALSTARTER] ; $d715 - cp SQUIRTLE - jr nz, .asm_51cb6 - ld a, $7 - jr .asm_51cc0 -.asm_51cb6 - cp BULBASAUR - jr nz, .asm_51cbe - ld a, $8 - jr .asm_51cc0 -.asm_51cbe - ld a, $9 -.asm_51cc0 - ld [W_TRAINERNO], a ; $d05d - ld a, $4 - jp Func_51c10 - -SilphCo7Script4: ; 51cc8 (14:5cc8) - ld a, [W_ISINBATTLE] ; $d057 - cp $ff - jp z, Func_51c0c - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld hl, $d82f - set 0, [hl] - ld a, $4 - ld [$d528], a - ld a, $9 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - ld a, $4 - ld [$ff8d], a - call Func_34a6 - ld a, $f - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld a, $ff - ld [$c0ee], a - call PlaySound - ld b, BANK(Music_RivalAlternateStart) - ld hl, Music_RivalAlternateStart - call Bankswitch - ld de, MovementData_51d1d - ld a, [$cf0d] - cp $1 - jr nz, .asm_51d0e - ld de, MovementData_51d1a -.asm_51d0e - ld a, $9 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call MoveSprite - ld a, $5 - jp Func_51c10 - -MovementData_51d1a: ; 51d1a (14:5d1a) - db $C0,$C0,$FF - -MovementData_51d1d: ; 51d1d (14:5d1d) - db $80,$40,$40,$C0,$C0,$C0,$00,$FF - -SilphCo7Script5: ; 51d25 (14:5d25) - ld a, [$d730] - bit 0, a - ret nz - ld a, $a7 - ld [$cc4d], a - ld a, $11 - call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) - call Func_2307 - xor a - ld [wJoypadForbiddenButtonsMask], a - jp Func_51c10 - -SilphCo7TextPointers: ; 51d3f (14:5d3f) - dw SilphCo7Text1 - dw SilphCo7Text2 - dw SilphCo7Text3 - dw SilphCo7Text4 - dw SilphCo7Text5 - dw SilphCo7Text6 - dw SilphCo7Text7 - dw SilphCo7Text8 - dw SilphCo7Text9 - dw Predef5CText - dw Predef5CText - dw Predef5CText - dw SilphCo7Text13 - dw SilphCo7Text14 - dw SilphCo7Text15 - -SilphCo7TrainerHeaders: ; 51d5d (14:5d5d) -SilphCo7TrainerHeader0: ; 51d5d (14:5d5d) - db $5 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d82f ; flag's byte - dw SilphCo7BattleText1 ; 0x5e5a TextBeforeBattle - dw SilphCo7AfterBattleText1 ; 0x5e64 TextAfterBattle - dw SilphCo7EndBattleText1 ; 0x5e5f TextEndBattle - dw SilphCo7EndBattleText1 ; 0x5e5f TextEndBattle - -SilphCo7TrainerHeader2: ; 51d69 (14:5d69) - db $6 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d82f ; flag's byte - dw SilphCo7BattleText2 ; 0x5e73 TextBeforeBattle - dw SilphCo7AfterBattleText2 ; 0x5e7d TextAfterBattle - dw SilphCo7EndBattleText2 ; 0x5e78 TextEndBattle - dw SilphCo7EndBattleText2 ; 0x5e78 TextEndBattle - -SilphCo7TrainerHeader3: ; 51d75 (14:5d75) - db $7 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d82f ; flag's byte - dw SilphCo7BattleText3 ; 0x5e8c TextBeforeBattle - dw SilphCo7AfterBattleText3 ; 0x5e96 TextAfterBattle - dw SilphCo7EndBattleText3 ; 0x5e91 TextEndBattle - dw SilphCo7EndBattleText3 ; 0x5e91 TextEndBattle - -SilphCo7TrainerHeader4: ; 51d81 (14:5d81) - db $8 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d82f ; flag's byte - dw SilphCo7BattleText4 ; 0x5ea5 TextBeforeBattle - dw SilphCo7AfterBattleText4 ; 0x5eaf TextAfterBattle - dw SilphCo7EndBattleText4 ; 0x5eaa TextEndBattle - dw SilphCo7EndBattleText4 ; 0x5eaa TextEndBattle - - db $ff - -SilphCo7Text1: -; lapras guy - db $08 ; asm - ld a, [$d72e] - bit 0, a ; got lapras? - jr z, .givelapras - ld a, [$d838] - bit 7, a ; saved silph? - jr nz, .savedsilph - ld hl, .LaprasGuyText - call PrintText - jr .done -.givelapras - ld hl, .MeetLaprasGuyText - call PrintText - ld bc, (LAPRAS << 8) | 15 - call GivePokemon - jr nc, .done - ld a, [$ccd3] - and a - call z, WaitForTextScrollButtonPress - call EnableAutoTextBoxDrawing - ld hl, .HeresYourLaprasText - call PrintText - ld hl, $d72e - set 0, [hl] - jr .done -.savedsilph - ld hl, .LaprasGuySavedText - call PrintText -.done - jp TextScriptEnd - -.MeetLaprasGuyText - TX_FAR _MeetLaprasGuyText - db "@" - -.HeresYourLaprasText - TX_FAR _HeresYourLaprasText - db "@" - -.LaprasGuyText - TX_FAR _LaprasGuyText - db "@" - -.LaprasGuySavedText - TX_FAR _LaprasGuySavedText - db "@" - -SilphCo7Text2: - db $8 - ld a, [$d838] - bit 7, a ; saved silph? - jr nz, .savedsilph - ld hl, .rockettext - call PrintText - jr .done -.savedsilph - ld hl, .savedtext - call PrintText -.done - jp TextScriptEnd - -.rockettext - TX_FAR _UnnamedText_51e00 - db "@" - -.savedtext - TX_FAR _CanceledMasterBallText - db "@" - -SilphCo7Text3: - db $08 ; asm - ld a, [$d838] - bit 7, a ; saved silph? - jr nz, .savedsilph - ld hl, .rockettext - call PrintText - jr .done -.savedsilph - ld hl, .savedtext - call PrintText -.done - jp TextScriptEnd - -.rockettext - TX_FAR _UnnamedText_51e23 - db "@" - -.savedtext - TX_FAR _UnnamedText_51e28 - db "@" - -SilphCo7Text4: - db $08 ; asm - ld a, [$d838] - bit 7, a ; saved silph? - jr nz, .savedsilph - ld hl, .rockettext - call PrintText - jr .done -.savedsilph - ld hl, .savedtext - call PrintText -.done - jp TextScriptEnd - -.rockettext - TX_FAR _UnnamedText_51e46 - db "@" - -.savedtext - TX_FAR _UnnamedText_51e4b - db "@" - -SilphCo7Text5: ; 51e50 (14:5e50) - db $08 ; asm - ld hl, SilphCo7TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -SilphCo7BattleText1: ; 51e5a (14:5e5a) - TX_FAR _SilphCo7BattleText1 - db "@" - -SilphCo7EndBattleText1: ; 51e5f (14:5e5f) - TX_FAR _SilphCo7EndBattleText1 - db "@" - -SilphCo7AfterBattleText1: ; 51e64 (14:5e64) - TX_FAR _SilphCo7AfterBattleText1 - db "@" - -SilphCo7Text6: ; 51e69 (14:5e69) - db $08 ; asm - ld hl, SilphCo7TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -SilphCo7BattleText2: ; 51e73 (14:5e73) - TX_FAR _SilphCo7BattleText2 - db "@" - -SilphCo7EndBattleText2: ; 51e78 (14:5e78) - TX_FAR _SilphCo7EndBattleText2 - db "@" - -SilphCo7AfterBattleText2: ; 51e7d (14:5e7d) - TX_FAR _SilphCo7AfterBattleText2 - db "@" - -SilphCo7Text7: ; 51e82 (14:5e82) - db $08 ; asm - ld hl, SilphCo7TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -SilphCo7BattleText3: ; 51e8c (14:5e8c) - TX_FAR _SilphCo7BattleText3 - db "@" - -SilphCo7EndBattleText3: ; 51e91 (14:5e91) - TX_FAR _SilphCo7EndBattleText3 - db "@" - -SilphCo7AfterBattleText3: ; 51e96 (14:5e96) - TX_FAR _SilphCo7AfterBattleText3 - db "@" - -SilphCo7Text8: ; 51e9b (14:5e9b) - db $08 ; asm - ld hl, SilphCo7TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -SilphCo7BattleText4: ; 51ea5 (14:5ea5) - TX_FAR _SilphCo7BattleText4 - db "@" - -SilphCo7EndBattleText4: ; 51eaa (14:5eaa) - TX_FAR _SilphCo7EndBattleText4 - db "@" - -SilphCo7AfterBattleText4: ; 51eaf (14:5eaf) - TX_FAR _SilphCo7AfterBattleText4 - db "@" - -SilphCo7Text9: ; 51eb4 (14:5eb4) - db $08 ; asm - ld hl, UnnamedText_51ebe - call PrintText - jp TextScriptEnd - -UnnamedText_51ebe: ; 51ebe (14:5ebe) - TX_FAR _UnnamedText_51ebe - db "@" - -SilphCo7Text13: ; 51ec3 (14:5ec3) - TX_FAR _UnnamedText_51ec3 - db "@" - -SilphCo7Text14: ; 51ec8 (14:5ec8) - TX_FAR _UnnamedText_51ec8 - db "@" - -UnnamedText_51ecd: ; 51ecd (14:5ecd) - TX_FAR _UnnamedText_51ecd - db "@" - -SilphCo7Text15: ; 51ed2 (14:5ed2) - TX_FAR _UnnamedText_51ed2 - db "@" - -INCLUDE "data/mapObjects/silphco7.asm" - -SilphCo7Blocks: ; 51f57 (14:5f57) - INCBIN "maps/silphco7.blk" - -INCLUDE "data/mapHeaders/mansion2.asm" - -Mansion2Script: ; 51fd8 (14:5fd8) - call Mansion2Script_51fee - call EnableAutoTextBoxDrawing - ld hl, Mansion2TrainerHeaders - ld de, Mansion2ScriptPointers - ld a, [W_MANSION2CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_MANSION2CURSCRIPT], a - ret - -Mansion2Script_51fee: ; 51fee (14:5fee) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - ret z - ld a, [$d796] - bit 0, a - jr nz, .asm_52016 - ld a, $e - ld bc, $204 - call Func_5202f - ld a, $54 - ld bc, $409 - call Func_5202f - ld a, $5f - ld bc, $b03 - call Func_5202f - ret -.asm_52016 - ld a, $5f - ld bc, $204 - call Func_5202f - ld a, $e - ld bc, $409 - call Func_5202f - ld a, $e - ld bc, $b03 - call Func_5202f - ret - -Func_5202f: ; 5202f (14:602f) - ld [$d09f], a - ld a, $17 - jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) - -Func_52037: ; 52037 (14:6037) - ld a, [$c109] - cp $4 - ret nz - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, $5 - ld [H_SPRITEHEIGHT], a - jp DisplayTextID - -Mansion2ScriptPointers: ; 52047 (14:6047) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -Mansion2TextPointers: ; 5204d (14:604d) - dw Mansion2Text1 - dw Predef5CText - dw Mansion2Text3 - dw Mansion2Text4 - dw Mansion2Text5 - -Mansion2TrainerHeaders: ; 52057 (14:6057) -Mansion2TrainerHeader0: ; 52057 (14:6057) - db $1 ; flag's bit - db ($0 << 4) ; trainer's view range - dw $d847 ; flag's byte - dw Mansion2BattleText1 ; 0x606e TextBeforeBattle - dw Mansion2AfterBattleText1 ; 0x6078 TextAfterBattle - dw Mansion2EndBattleText1 ; 0x6073 TextEndBattle - dw Mansion2EndBattleText1 ; 0x6073 TextEndBattle - - db $ff - -Mansion2Text1: ; 52064 (14:6064) - db $08 ; asm - ld hl, Mansion2TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -Mansion2BattleText1: ; 5206e (14:606e) - TX_FAR _Mansion2BattleText1 - db "@" - -Mansion2EndBattleText1: ; 52073 (14:6073) - TX_FAR _Mansion2EndBattleText1 - db "@" - -Mansion2AfterBattleText1: ; 52078 (14:6078) - TX_FAR _Mansion2AfterBattleText1 - db "@" - -Mansion2Text3: ; 5207d (14:607d) - TX_FAR _Mansion2Text3 - db "@" - -Mansion2Text4: ; 52082 (14:6082) - TX_FAR _Mansion2Text4 - db "@" - -Mansion3Text6: ; 52087 (14:6087) -Mansion2Text5: ; 52087 (14:6087) - db $8 - ld hl, UnnamedText_520c2 - call PrintText - call YesNoChoice - ld a, [$cc26] - and a - jr nz, .asm_520b9 ; 0x52095 $22 - ld a, $1 - ld [$cc3c], a - ld hl, $d126 - set 5, [hl] - ld hl, UnnamedText_520c7 - call PrintText - ld a, (SFX_02_57 - SFX_Headers_02) / 3 - call PlaySound - ld hl, $d796 - bit 0, [hl] - set 0, [hl] - jr z, .asm_520bf ; 0x520b3 $a - res 0, [hl] - jr .asm_520bf ; 0x520b7 $6 -.asm_520b9 - ld hl, UnnamedText_520cc - call PrintText -.asm_520bf - jp TextScriptEnd - -UnnamedText_520c2: ; 520c2 (14:60c2) - TX_FAR _UnnamedText_520c2 - db "@" - -UnnamedText_520c7: ; 520c7 (14:60c7) - TX_FAR _UnnamedText_520c7 - db "@" - -UnnamedText_520cc: ; 520cc (14:60cc) - TX_FAR _UnnamedText_520cc - db "@" - -INCLUDE "data/mapObjects/mansion2.asm" - -Mansion2Blocks: ; 52110 (14:6110) - INCBIN "maps/mansion2.blk" - -INCLUDE "data/mapHeaders/mansion3.asm" - -Mansion3Script: ; 521ee (14:61ee) - call Mansion3Script_52204 - call EnableAutoTextBoxDrawing - ld hl, Mansion3TrainerHeader0 - ld de, Mansion3ScriptPointers - ld a, [W_MANSION3CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_MANSION3CURSCRIPT], a - ret - -Mansion3Script_52204: ; 52204 (14:6204) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - ret z - ld a, [$d796] - bit 0, a - jr nz, .asm_52224 - ld a, $e - ld bc, $207 - call Func_5202f - ld a, $5f - ld bc, $507 - call Func_5202f - ret -.asm_52224 - ld a, $5f - ld bc, $207 - call Func_5202f - ld a, $e - ld bc, $507 - call Func_5202f - ret - -Mansion3ScriptPointers: ; 52235 (14:6235) - dw Mansion3Script0 - dw Func_324c - dw EndTrainerBattle - -Mansion3Script0: ; 5223b (14:623b) - ld hl, CoordsData_52254 - call Func_5225b - ld a, [$d71e] - and a - jp z, CheckFightingMapTrainers - cp $3 - ld a, $a5 - jr nz, .asm_52250 - ld a, $d6 -.asm_52250 - ld [$d71d], a - ret - -CoordsData_52254: ; 52254 (14:6254) - db $0E,$10 - db $0E,$11 - db $0E,$13 - db $FF - -Func_5225b: ; 5225b (14:625b) - xor a - ld [$d71e], a - ld a, [$d72d] - bit 4, a - ret nz - call ArePlayerCoordsInArray - ret nc - ld a, [wWhichTrade] ; $cd3d - ld [$d71e], a - ld hl, $d72d - set 4, [hl] - ld hl, $d732 - set 4, [hl] - ret - -Func_5227a: ; 5227a (14:627a) - ld a, [$c109] - cp $4 - ret nz - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, $6 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - jp DisplayTextID - -Mansion3TextPointers: ; 5228a (14:628a) - dw Mansion3Text1 - dw Mansion3Text2 - dw Predef5CText - dw Predef5CText - dw Mansion3Text5 - dw Mansion3Text6 - -Mansion3TrainerHeaders: ; 52296 (14:6296) -Mansion3TrainerHeader0: ; 52296 (14:6296) - db $1 ; flag's bit - db ($0 << 4) ; trainer's view range - dw $d849 ; flag's byte - dw Mansion3BattleText1 ; 0x62c3 TextBeforeBattle - dw Mansion3AfterBattleText1 ; 0x62cd TextAfterBattle - dw Mansion3EndBattleText1 ; 0x62c8 TextEndBattle - dw Mansion3EndBattleText1 ; 0x62c8 TextEndBattle - -Mansion3TrainerHeader2: ; 522a2 (14:62a2) - db $2 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d849 ; flag's byte - dw Mansion3BattleText2 ; 0x62d2 TextBeforeBattle - dw Mansion3AfterBattleText2 ; 0x62dc TextAfterBattle - dw Mansion3EndBattleText2 ; 0x62d7 TextEndBattle - dw Mansion3EndBattleText2 ; 0x62d7 TextEndBattle - - db $ff - -Mansion3Text1: ; 522af (14:62af) - db $08 ; asm - ld hl, Mansion3TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -Mansion3Text2: ; 522b9 (14:62b9) - db $08 ; asm - ld hl, Mansion3TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -Mansion3BattleText1: ; 522c3 (14:62c3) - TX_FAR _Mansion3BattleText1 - db "@" - -Mansion3EndBattleText1: ; 522c8 (14:62c8) - TX_FAR _Mansion3EndBattleText1 - db "@" - -Mansion3AfterBattleText1: ; 522cd (14:62cd) - TX_FAR _Mansion3AfterBattleText1 - db "@" - -Mansion3BattleText2: ; 522d2 (14:62d2) - TX_FAR _Mansion3BattleText2 - db "@" - -Mansion3EndBattleText2: ; 522d7 (14:62d7) - TX_FAR _Mansion3EndBattleText2 - db "@" - -Mansion3AfterBattleText2: ; 522dc (14:62dc) - TX_FAR _Mansion3AfterBattleText2 - db "@" - -Mansion3Text5: ; 522e1 (14:62e1) - TX_FAR _Mansion3Text5 - db "@" - -INCLUDE "data/mapObjects/mansion3.asm" - -Mansion3Blocks: ; 52326 (14:6326) - INCBIN "maps/mansion3.blk" - -INCLUDE "data/mapHeaders/mansion4.asm" - -Mansion4Script: ; 523b9 (14:63b9) - call Mansion4Script_523cf - call EnableAutoTextBoxDrawing - ld hl, Mansion4TrainerHeader0 - ld de, Mansion4ScriptPointers - ld a, [W_MANSION4CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_MANSION4CURSCRIPT], a - ret - -Mansion4Script_523cf: ; 523cf (14:63cf) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - ret z - ld a, [$d796] - bit 0, a - jr nz, .asm_523ff - ld a, $e - ld bc, $80d - call Func_5202f - ld a, $e - ld bc, $b06 - call Func_5202f - ld a, $5f - ld bc, $304 - call Func_5202f - ld a, $54 - ld bc, $808 - call Func_5202f - ret -.asm_523ff - ld a, $2d - ld bc, $80d - call Func_5202f - ld a, $5f - ld bc, $b06 - call Func_5202f - ld a, $e - ld bc, $304 - call Func_5202f - ld a, $e - ld bc, $808 - call Func_5202f - ret - -Func_52420: ; 52420 (14:6420) - ld a, [$c109] - cp $4 - ret nz - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, $9 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - jp DisplayTextID - -Mansion4ScriptPointers: ; 52430 (14:6430) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -Mansion4TextPointers: ; 52436 (14:6436) - dw Mansion4Text1 - dw Mansion4Text2 - dw Predef5CText - dw Predef5CText - dw Predef5CText - dw Predef5CText - dw Mansion4Text7 - dw Predef5CText - dw Mansion3Text6 - -Mansion4TrainerHeaders: ; 52448 (14:6448) -Mansion4TrainerHeader0: ; 52448 (14:6448) - db $1 ; flag's bit - db ($0 << 4) ; trainer's view range - dw $d84b ; flag's byte - dw Mansion4BattleText1 ; 0x6475 TextBeforeBattle - dw Mansion4AfterBattleText1 ; 0x647f TextAfterBattle - dw Mansion4EndBattleText1 ; 0x647a TextEndBattle - dw Mansion4EndBattleText1 ; 0x647a TextEndBattle - -Mansion4TrainerHeader2: ; 52454 (14:6454) - db $2 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d84b ; flag's byte - dw Mansion4BattleText2 ; 0x6484 TextBeforeBattle - dw Mansion4AfterBattleText2 ; 0x648e TextAfterBattle - dw Mansion4EndBattleText2 ; 0x6489 TextEndBattle - dw Mansion4EndBattleText2 ; 0x6489 TextEndBattle - - db $ff - -Mansion4Text1: ; 52461 (14:6461) - db $08 ; asm - ld hl, Mansion4TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -Mansion4Text2: ; 5246b (14:646b) - db $08 ; asm - ld hl, Mansion4TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -Mansion4BattleText1: ; 52475 (14:6475) - TX_FAR _Mansion4BattleText1 - db "@" - -Mansion4EndBattleText1: ; 5247a (14:647a) - TX_FAR _Mansion4EndBattleText1 - db "@" - -Mansion4AfterBattleText1: ; 5247f (14:647f) - TX_FAR _Mansion4AfterBattleText1 - db "@" - -Mansion4BattleText2: ; 52484 (14:6484) - TX_FAR _Mansion4BattleText2 - db "@" - -Mansion4EndBattleText2: ; 52489 (14:6489) - TX_FAR _Mansion4EndBattleText2 - db "@" - -Mansion4AfterBattleText2: ; 5248e (14:648e) - TX_FAR _Mansion4AfterBattleText2 - db "@" - -Mansion4Text7: ; 52493 (14:6493) - TX_FAR _Mansion4Text7 - db "@" - -INCLUDE "data/mapObjects/mansion4.asm" - -Mansion4Blocks: ; 524dd (14:64dd) - INCBIN "maps/mansion4.blk" - -Func_525af: ; 525af (14:65af) - ld a, [$ffd7] - ld [$d0d4], a - xor a - ld [$cd6a], a - ld [$cf0b], a - ld hl, $cc2b - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld [wListScrollOffset], a ; $cc36 - ld [$d05e], a - ld [W_PLAYERMONID], a - ld [W_PLAYERMONSALIVEFLAGS], a - ld [wPlayerMonNumber], a ; $cc2f - ld [$d078], a - ld [$d35d], a - ld hl, $cf1d - ld [hli], a - ld [hl], a - ld hl, $ccd3 - ld b, $3c -.asm_525e1 - ld [hli], a - dec b - jr nz, .asm_525e1 - inc a - ld [$ccd9], a - ld a, [W_CURMAP] ; $d35e - cp SAFARI_ZONE_EAST - jr c, .asm_525f9 - cp SAFARI_ZONE_REST_HOUSE_1 - jr nc, .asm_525f9 - ld a, $2 - ld [W_BATTLETYPE], a ; $d05a -.asm_525f9 - ld hl, PlayBattleMusic - ld b, BANK(PlayBattleMusic) - jp Bankswitch - -Func_52601: ; 52601 (14:6601) - ld hl, W_ENEMYMONSTATUS ; $cfe9 - ld de, W_PLAYERMOVETYPE ; $cfd5 - ld a, [H_WHOSETURN] ; $fff3 - and a - jp z, Func_52613 - ld hl, W_PLAYERMONSTATUS ; $d018 - ld de, W_ENEMYMOVETYPE ; $cfcf - -Func_52613: ; 52613 (14:6613) - ld a, [hl] - and a - jr nz, .asm_52659 - ld a, [de] - cp $17 - jr nz, .asm_5262a - ld b, h - ld c, l - inc bc - ld a, [bc] - cp $4 - jr z, .asm_52666 - inc bc - ld a, [bc] - cp $4 - jr z, .asm_52666 -.asm_5262a - push hl - ld hl, MoveHitTest - ld b, BANK(MoveHitTest) - call Bankswitch - pop hl - ld a, [W_MOVEMISSED] ; $d05f - and a - jr nz, .asm_52659 - set 6, [hl] - ld hl, Func_3ed27 - ld b, BANK(Func_3ed27) - call Bankswitch - ld c, $1e - call DelayFrames - ld hl, Func_3fba8 - ld b, BANK(Func_3fba8) - call Bankswitch - ld hl, PrintMayNotAttackText - ld b, BANK(PrintMayNotAttackText) - jp Bankswitch -.asm_52659 - ld c, $32 - call DelayFrames - ld hl, PrintDidntAffectText - ld b, BANK(PrintDidntAffectText) - jp Bankswitch -.asm_52666 - ld c, $32 - call DelayFrames - ld hl, PrintDoesntAffectText - ld b, BANK(PrintDoesntAffectText) - jp Bankswitch - -Func_52673: ; 52673 (14:6673) - ld hl, SilphCoMapList - ld a, [W_CURMAP] - ld b, a -.asm_5267a - ld a, [hli] - cp $ff - ret z - cp b - jr nz, .asm_5267a - ld a, $35 - call Predef ; indirect jump to Func_c586 (c586 (3:4586)) - ld a, [$cfc6] - cp $18 - jr z, .asm_5269c - cp $24 - jr z, .asm_5269c - ld b, a - ld a, [W_CURMAP] - cp SILPH_CO_11F - ret nz - ld a, b - cp $5e - ret nz -.asm_5269c - ld b, CARD_KEY - call IsItemInBag - jr z, .asm_526dc - call Func_526fd - push de - ld a, $1 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call Func_3ef5 - pop de - srl d - ld a, d - ld b, a - ld [$d73f], a - srl e - ld a, e - ld c, a - ld [$d740], a - ld a, [W_CURMAP] ; $d35e - cp SILPH_CO_11F - jr nz, .asm_526c8 - ld a, $3 - jr .asm_526ca -.asm_526c8 - ld a, $e -.asm_526ca - ld [$d09f], a - ld a, $17 - call Predef ; indirect jump to Func_ee9e - ld hl, $d126 - set 5, [hl] - ld a, (SFX_1f_57 - SFX_Headers_1f) / 3 - jp PlaySound -.asm_526dc - ld a, $2 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - jp Func_3ef5 - -SilphCoMapList: ; 526e3 (14:66e3) - db SILPH_CO_2F - db SILPH_CO_3F - db SILPH_CO_4F - db SILPH_CO_5F - db SILPH_CO_6F - db SILPH_CO_7F - db SILPH_CO_8F - db SILPH_CO_9F - db SILPH_CO_10F - db SILPH_CO_11F - db $FF - -CardKeySuccessText: ; 526ee (14:66ee) - TX_FAR _CardKeySuccessText1 - db $0b - TX_FAR _CardKeySuccessText2 - db "@" - -CardKeyFailText: ; 526f8 (14:66f8) - TX_FAR _CardKeyFailText - db "@" - -Func_526fd: ; 526fd (14:66fd) - ld a, [W_YCOORD] ; $d361 - ld d, a - ld a, [W_XCOORD] ; $d362 - ld e, a - ld a, [$c109] - and a - jr nz, .asm_5270d - inc d - ret -.asm_5270d - cp $4 - jr nz, .asm_52713 - dec d - ret -.asm_52713 - cp $8 - jr nz, .asm_52719 - dec e - ret -.asm_52719 - inc e - ret - -CeladonPrizeMenu: ; 5271b (14:671b) - ld b,COIN_CASE - call IsItemInBag - jr nz,.havingCoinCase - ld hl,RequireCoinCaseTextPtr - jp PrintText -.havingCoinCase - ld hl,$D730 - set 6,[hl] - ld hl,ExchangeCoinsForPrizesTextPtr - call PrintText -; the following are the menu settings - xor a - ld [$CC26],a - ld [$CC2A],a - ld a,$03 - ld [$CC29],a - ld a,$03 - ld [$CC28],a - ld a,$04 - ld [$CC24],a - ld a,$01 - ld [$CC25],a - call PrintPrizePrice ; 687A - FuncCoord 0,2 - ld hl,Coord - ld b,$08 - ld c,$10 - call TextBoxBorder - call GetPrizeMenuId ;678E - call UpdateSprites - ld hl,WhichPrizeTextPtr - call PrintText - call HandleMenuInput ; menu choice handler - bit 1,a ; keypress = B (Cancel) - jr nz,.NoChoice - ld a,[$CC26] - cp a,$03 ; "NO,THANKS" choice - jr z,.NoChoice - call HandlePrizeChoice ; 14:68C6 -.NoChoice - ld hl,$D730 - res 6,[hl] - ret - -RequireCoinCaseTextPtr: ; 5277e (14:677e) - TX_FAR _RequireCoinCaseText - db $0D - db "@" - -ExchangeCoinsForPrizesTextPtr: ; 52784 (14:6784) - TX_FAR _ExchangeCoinsForPrizesText - db "@" - -WhichPrizeTextPtr: ; 52789 (14:6789) - TX_FAR _WhichPrizeText - db "@" - -GetPrizeMenuId: ; 5278e (14:678e) -; determine which one among the three -; prize-texts has been selected -; using the text ID (stored in [$FF8C]) -; load the three prizes at $D13D-$D13F -; load the three prices at $D141-$D146 -; display the three prizes' names -; (distinguishing between Pokemon names -; and Items (specifically TMs) names) - ld a,[$FF8C] - sub a,$03 ; prize-texts' id are 3, 4 and 5 - ld [$D12F],a ; prize-texts' id (relative, i.e. 0, 1 or 2) - add a - add a - ld d,$00 - ld e,a - ld hl,PrizeDifferentMenuPtrs - add hl,de - ld a,[hli] - ld d,[hl] - ld e,a - inc hl - push hl - ld hl,W_PRIZE1 - call CopyString ; XXX what does this do - pop hl - ld a,[hli] - ld h,[hl] - ld l,a - ld de,$D141 - ld bc,$0006 - call CopyData - ld a,[$D12F] - cp a,$02 ;is TM_menu? - jr nz,.putMonName - ld a,[W_PRIZE1] - ld [$D11E],a - call GetItemName - FuncCoord 2,4 - ld hl,Coord - call PlaceString - ld a,[W_PRIZE2] - ld [$D11E],a - call GetItemName - FuncCoord 2,6 - ld hl,Coord - call PlaceString - ld a,[W_PRIZE3] - ld [$D11E],a - call GetItemName - FuncCoord 2,8 - ld hl,Coord - call PlaceString - jr .putNoThanksText -.putMonName ; 14:67EC - ld a,[W_PRIZE1] - ld [$D11E],a - call GetMonName - FuncCoord 2,4 - ld hl,Coord - call PlaceString - ld a,[W_PRIZE2] - ld [$D11E],a - call GetMonName - FuncCoord 2,6 - ld hl,Coord - call PlaceString - ld a,[W_PRIZE3] - ld [$D11E],a - call GetMonName - FuncCoord 2,8 - ld hl,Coord - call PlaceString -.putNoThanksText ; 14:6819 - FuncCoord 2,10 - ld hl,Coord - ld de,NoThanksText - call PlaceString -; put prices on the right side of the textbox - ld de,$D141 - FuncCoord 13,5 - ld hl,Coord -; reg. c: -; [low nybble] number of bytes -; [bit 765 = %100] space-padding (not zero-padding) - ld c,(1 << 7 | 2) -; Function $15CD displays BCD value (same routine -; used by text-command $02) - call PrintBCDNumber ; Print_BCD - ld de,$D143 - FuncCoord 13,7 - ld hl,Coord - ld c,(%1 << 7 | 2) - call PrintBCDNumber - ld de,$D145 - FuncCoord 13,9 - ld hl,Coord - ld c,(1 << 7 | 2) - jp PrintBCDNumber - -INCLUDE "data/prizes.asm" - -PrintPrizePrice: ; 5287a (14:687a) - FuncCoord 11,0 - ld hl,Coord - ld b,$01 - ld c,$07 - call TextBoxBorder - call UpdateSprites ; XXX save OAM? - FuncCoord 12,0 - ld hl,Coord - ld de,.CoinText - call PlaceString - FuncCoord 13,1 - ld hl,Coord - ld de,.SixSpacesText - call PlaceString - FuncCoord 13,1 - ld hl,Coord - ld de,wPlayerCoins - ld c,%10000010 - call PrintBCDNumber - ret - -.CoinText ; 14:68A5 - db "COIN@" - -.SixSpacesText ; 14:68AA - db " @" - -LoadCoinsToSubtract: ; 528b1 (14:68b1) - ld a,[$D139] ; backup of selected menu_entry - add a - ld d,$00 - ld e,a - ld hl,$D141 ; first prize's price - add hl,de ; get selected prize's price - xor a - ld [$FF9F],a - ld a,[hli] - ld [$FFA0],a - ld a,[hl] - ld [$FFA1],a - ret - -HandlePrizeChoice: ; 528c6 (14:68c6) - ld a,[$CC26] ; selected menu_entry - ld [$D139],a - ld d,$00 - ld e,a - ld hl,W_PRIZE1 - add hl,de - ld a,[hl] - ld [$D11E],a - ld a,[$D12F] - cp a,$02 ; is prize a TM? - jr nz,.GetMonName - call GetItemName - jr .GivePrize -.GetMonName ; 14:68E3 - call GetMonName -.GivePrize ; 14:68E6 - ld hl,SoYouWantPrizeTextPtr - call PrintText - call YesNoChoice ; yes/no textbox - ld a,[$CC26] ; yes/no answer (Y=0, N=1) - and a - jr nz,.PrintOhFineThen - call LoadCoinsToSubtract - call HasEnoughCoins - jr c,.NotEnoughCoins - ld a,[$D12F] - cp a,$02 - jr nz,.GiveMon - ld a,[$D11E] - ld b,a - ld a,1 - ld c,a - call GiveItem ; GiveItem - jr nc,.BagFull - jr .SubtractCoins -.GiveMon ; 14:6912 - ld a,[$D11E] - ld [$CF91],a - push af - call GetPrizeMonLevel ; 14:6977 - ld c,a - pop af - ld b,a - call GivePokemon - push af - ld a,[$CCD3] ; XXX is there room? - and a - call z,WaitForTextScrollButtonPress - pop af - ret nc -.SubtractCoins ; 14:692C - call LoadCoinsToSubtract - ld hl,$FFA1 - ld de,wPlayerCoins + 1 - ld c,$02 ; how many bytes - ld a,$0C - call Predef ; subtract coins (BCD daa operations) - jp PrintPrizePrice -.BagFull - ld hl,PrizeRoomBagIsFullTextPtr - jp PrintText -.NotEnoughCoins ; 14:6945 - ld hl,SorryNeedMoreCoinsTextTextPtr - jp PrintText -.PrintOhFineThen ; 14:694B - ld hl,OhFineThenTextPtr - jp PrintText - -UnknownData52951: ; 52951 (14:6951) -; XXX what's this? - db $00,$01,$00,$01,$00,$01,$00,$00,$01 - -HereYouGoTextPtr: ; 5295a (14:695a) - TX_FAR _HereYouGoText - db $0D - db "@" - -SoYouWantPrizeTextPtr: ; 52960 (14:6960) - TX_FAR _SoYouWantPrizeText - db "@" - -SorryNeedMoreCoinsTextTextPtr: ; 52965 (14:6965) - TX_FAR _SorryNeedMoreCoinsText - db $0D - db "@" - -PrizeRoomBagIsFullTextPtr: ; 5296b (14:696b) - TX_FAR _OopsYouDontHaveEnoughRoomText - db $0D - db "@" - -OhFineThenTextPtr: ; 52971 (14:6971) - TX_FAR _OhFineThenText - db $0D ; wait keypress (A/B) without blink - db "@" - -GetPrizeMonLevel: ; 52977 (14:6977) - ld a,[$CF91] - ld b,a - ld hl,PrizeMonLevelDictionary -.loop ; 14:697E - ld a,[hli] - cp b - jr z,.matchFound - inc hl - jr .loop -.matchFound ; 14:6985 - ld a,[hl] - ld [$D127],a - ret - -PrizeMonLevelDictionary: ; 5298a (14:698a) -IF _RED - db ABRA,9 - db CLEFAIRY,8 - db NIDORINA,17 - - db DRATINI,18 - db SCYTHER,25 - db PORYGON,26 -ENDC -IF _BLUE - db ABRA,6 - db CLEFAIRY,12 - db NIDORINO,17 - - db PINSIR,20 - db DRATINI,24 - db PORYGON,18 -ENDC - -Func_52996: ; 52996 (14:6996) - call EnableAutoTextBoxDrawing - ld a, $1 - ld [$cc3c], a - ld a, [wTrainerSpriteOffset] - jp Func_3ef5 - -TMNotebook: ; 529a4 (14:69a4) - TX_FAR TMNotebookText - db $0d - db "@" - -ViridianSchoolNotebook: ; 529aa (14:69aa) - db $08 ; asm - ld hl, ViridianSchoolNotebookText1 - call PrintText - call TurnPageSchoolNotebook - jr nz, .doneReading - ld hl, ViridianSchoolNotebookText2 - call PrintText - call TurnPageSchoolNotebook - jr nz, .doneReading - ld hl, ViridianSchoolNotebookText3 - call PrintText - call TurnPageSchoolNotebook - jr nz, .doneReading - ld hl, ViridianSchoolNotebookText4 - call PrintText - ld hl, ViridianSchoolNotebookText5 - call PrintText -.doneReading - jp TextScriptEnd - -TurnPageSchoolNotebook: ; 529db (14:69db) - ld hl, TurnPageText - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - ret - -TurnPageText: ; 529e9 (14:69e9) - TX_FAR _TurnPageText - db "@" - -ViridianSchoolNotebookText5: ; 529ee (14:69ee) - TX_FAR _ViridianSchoolNotebookText5 - db $0d - db "@" - -ViridianSchoolNotebookText1: ; 529f4 (14:69f4) - TX_FAR _ViridianSchoolNotebookText1 - db "@" - -ViridianSchoolNotebookText2: ; 529f9 (14:69f9) - TX_FAR _ViridianSchoolNotebookText2 - db "@" - -ViridianSchoolNotebookText3: ; 529fe (14:69fe) - TX_FAR _ViridianSchoolNotebookText3 - db "@" - -ViridianSchoolNotebookText4: ; 52a03 (14:6a03) - TX_FAR _ViridianSchoolNotebookText4 - db "@" - -Func_52a08: ; 52a08 (14:6a08) - call EnableAutoTextBoxDrawing - ld a, $37 - jp Func_3ef5 - -UnnamedText_52a10: ; 52a10 (14:6a10) - TX_FAR _UnnamedText_52a10 - db "@" - -Func_52a15: ; 52a15 (14:6a15) - call EnableAutoTextBoxDrawing - ld a, $38 - jp Func_3ef5 - -UnnamedText_52a1d: ; 52a1d (14:6a1d) - TX_FAR _UnnamedText_52a1d - db "@" - -Func_52a22: ; 52a22 (14:6a22) - call EnableAutoTextBoxDrawing - ld a, $36 - jp Func_3ef5 - -FightingDojoText: ; 52a2a (14:6a2a) - TX_FAR _FightingDojoText - db "@" - -Func_52a2f: ; 52a2f (14:6a2f) - ld a, [$c109] - cp $4 - ret nz - call EnableAutoTextBoxDrawing - ld a, $27 - jp Func_3ef5 - -IndigoPlateauHQText: ; 52a3d (14:6a3d) - TX_FAR _IndigoPlateauHQText - db "@" - -SECTION "bank15",ROMX,BANK[$15] - -INCLUDE "data/mapHeaders/route2.asm" - -INCLUDE "data/mapObjects/route2.asm" - -Route2Blocks: ; 5407e (15:407e) - INCBIN "maps/route2.blk" - -INCLUDE "data/mapHeaders/route3.asm" - -INCLUDE "data/mapObjects/route3.asm" - -Route3Blocks: ; 54255 (15:4255) - INCBIN "maps/route3.blk" - -INCLUDE "data/mapHeaders/route4.asm" - -INCLUDE "data/mapObjects/route4.asm" - -Route4Blocks: ; 543ec (15:43ec) - INCBIN "maps/route4.blk" - -INCLUDE "data/mapHeaders/route5.asm" - -INCLUDE "data/mapObjects/route5.asm" - -Route5Blocks: ; 545d2 (15:45d2) - INCBIN "maps/route5.blk" - -INCLUDE "data/mapHeaders/route9.asm" - -INCLUDE "data/mapObjects/route9.asm" - -Route9Blocks: ; 546fe (15:46fe) - INCBIN "maps/route9.blk" - -INCLUDE "data/mapHeaders/route13.asm" - -INCLUDE "data/mapObjects/route13.asm" - -Route13Blocks: ; 5488b (15:488b) - INCBIN "maps/route13.blk" - -INCLUDE "data/mapHeaders/route14.asm" - -INCLUDE "data/mapObjects/route14.asm" - -Route14Blocks: ; 54a12 (15:4a12) - INCBIN "maps/route14.blk" - -INCLUDE "data/mapHeaders/route17.asm" - -INCLUDE "data/mapObjects/route17.asm" - -Route17Blocks: ; 54ba8 (15:4ba8) - INCBIN "maps/route17.blk" - -INCLUDE "data/mapHeaders/route19.asm" - -INCLUDE "data/mapObjects/route19.asm" - -Route19Blocks: ; 54ef1 (15:4ef1) - INCBIN "maps/route19.blk" - -INCLUDE "data/mapHeaders/route21.asm" - -INCLUDE "data/mapObjects/route21.asm" - -Route21Blocks: ; 5506d (15:506d) - INCBIN "maps/route21.blk" - -VermilionHouse2Blocks: ; 5522f (15:522f) -Route12HouseBlocks: ; 5522f (15:522f) -DayCareMBlocks: ; 5522f (15:522f) - INCBIN "maps/daycarem.blk" - -FuchsiaHouse3Blocks: ; 5523f (15:523f) - INCBIN "maps/fuchsiahouse3.blk" - -Func_5524f: ; 5524f (15:524f) - ld a, [W_ISLINKBATTLE] ; $d12b - cp $4 - ret z - call Func_5546c - ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) - xor a - ld [wWhichPokemon], a ; $cf92 - -Func_5525f: ; 5525f (15:525f) - inc hl - ld a, [hli] - or [hl] - jp z, Func_55436 - push hl - ld hl, W_PLAYERMONSALIVEFLAGS - ld a, [wWhichPokemon] ; $cf92 - ld c, a - ld b, $2 - ld a, $10 - call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) - ld a, c - and a - pop hl - jp z, Func_55436 - ld de, $10 - add hl, de - ld d, h - ld e, l - ld hl, $d002 - ld c, $5 -.asm_55285 - ld a, [hli] - ld b, a - ld a, [de] - add b - ld [de], a - jr nc, .asm_5529a - dec de - ld a, [de] - inc a - jr z, .asm_55295 - ld [de], a - inc de - jr .asm_5529a -.asm_55295 - ld a, $ff - ld [de], a - inc de - ld [de], a -.asm_5529a - dec c - jr z, .asm_552a1 - inc de - inc de - jr .asm_55285 -.asm_552a1 - xor a - ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) - ld [$ff97], a - ld a, [$d008] - ld [$ff98], a - ld a, [W_ENEMYMONLEVEL] ; $cff3 - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - call Multiply - ld a, $7 - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - ld b, $4 - call Divide - ld hl, $fff2 - add hl, de - ld b, [hl] - inc hl - ld a, [wPlayerID] ; $d359 - cp b - jr nz, .asm_552d1 - ld b, [hl] - ld a, [wPlayerID + 1] ; $d35a - cp b - ld a, $0 - jr z, .asm_552d6 -.asm_552d1 - call Func_5549f - ld a, $1 -.asm_552d6 - ld [$cf4d], a - ld a, [W_ISINBATTLE] ; $d057 - dec a - call nz, Func_5549f - inc hl - inc hl - inc hl - ld b, [hl] - ld a, [$ff98] - ld [$cf4c], a - add b - ld [hld], a - ld b, [hl] - ld a, [$ff97] - ld [$cf4b], a - adc b - ld [hl], a - jr nc, .asm_552f8 - dec hl - inc [hl] - inc hl -.asm_552f8 - inc hl - push hl - ld a, [wWhichPokemon] ; $cf92 - ld c, a - ld b, $0 - ld hl, W_PARTYMON1 ; $d164 - add hl, bc - ld a, [hl] - ld [$d0b5], a - call GetMonHeader - ld d, $64 - ld hl, CalcExperience - ld b, BANK(CalcExperience) - call Bankswitch - ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND) - ld b, a - ld a, [$ff97] - ld c, a - ld a, [$ff98] - ld d, a - pop hl - ld a, [hld] - sub d - ld a, [hld] - sbc c - ld a, [hl] - sbc b - jr c, .asm_5532e - ld a, b - ld [hli], a - ld a, c - ld [hli], a - ld a, d - ld [hld], a - dec hl -.asm_5532e - push hl - ld a, [wWhichPokemon] ; $cf92 - ld hl, W_PARTYMON1NAME ; $d2b5 - call GetPartyMonName - ld hl, GainedText - call PrintText - xor a - ld [$cc49], a - call LoadMonData - pop hl - ld bc, $13 - add hl, bc - push hl - ld b, BANK(Func_58f43) - ld hl, Func_58f43 - call Bankswitch - pop hl - ld a, [hl] - cp d - jp z, Func_55436 - ld a, [W_CURENEMYLVL] ; $d127 - push af - push hl - ld a, d - ld [W_CURENEMYLVL], a ; $d127 - ld [hl], a - ld bc, $ffdf - add hl, bc - ld a, [hl] - ld [$d0b5], a - ld [$d11e], a - call GetMonHeader - ld bc, $23 - add hl, bc - push hl - ld a, [hld] - ld c, a - ld b, [hl] - push bc - ld d, h - ld e, l - ld bc, $ffee - add hl, bc - ld b, $1 - call CalcStats - pop bc - pop hl - ld a, [hld] - sub c - ld c, a - ld a, [hl] - sbc b - ld b, a - ld de, $ffe0 - add hl, de - ld a, [hl] - add c - ld [hld], a - ld a, [hl] - adc b - ld [hl], a - ld a, [wPlayerMonNumber] ; $cc2f - ld b, a - ld a, [wWhichPokemon] ; $cf92 - cp b - jr nz, .asm_553f7 - ld de, W_PLAYERMONCURHP ; $d015 - ld a, [hli] - ld [de], a - inc de - ld a, [hl] - ld [de], a - ld bc, $1f - add hl, bc - push hl - ld de, W_PLAYERMONLEVEL ; $d022 - ld bc, $b - call CopyData - pop hl - ld a, [W_PLAYERBATTSTATUS3] ; $d064 - bit 3, a - jr nz, .asm_553c8 - ld de, $cd0f - ld bc, $b - call CopyData -.asm_553c8 - xor a - ld [$d11e], a - ld hl, Func_3ed99 - ld b, BANK(Func_3ed99) - call Bankswitch - ld hl, Func_3ed1a - ld b, BANK(Func_3ed1a) - call Bankswitch - ld hl, Func_3ee19 - ld b, BANK(Func_3ee19) - call Bankswitch - ld hl, Func_3cd60 - ld b, BANK(Func_3cd60) - call Bankswitch - ld hl, Func_3ee94 - ld b, BANK(Func_3ee94) - call Bankswitch - call SaveScreenTilesToBuffer1 -.asm_553f7 - ld hl, GrewLevelText - call PrintText - xor a - ld [$cc49], a - call LoadMonData - ld d, $1 - ld hl, PrintStatsBox - ld b, BANK(PrintStatsBox) - call Bankswitch - call WaitForTextScrollButtonPress - call LoadScreenTilesFromBuffer1 - xor a - ld [$cc49], a - ld a, [$d0b5] - ld [$d11e], a - ld a, $1a - call Predef ; indirect jump to Func_3af5b (3af5b (e:6f5b)) - ld hl, $ccd3 - ld a, [wWhichPokemon] ; $cf92 - ld c, a - ld b, $1 - ld a, $10 - call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) - pop hl - pop af - ld [W_CURENEMYLVL], a ; $d127 - -Func_55436: ; 55436 (15:5436) - ld a, [W_NUMINPARTY] ; $d163 - ld b, a - ld a, [wWhichPokemon] ; $cf92 - inc a - cp b - jr z, .asm_55450 - ld [wWhichPokemon], a ; $cf92 - ld bc, $2c - ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) - call AddNTimes - jp Func_5525f -.asm_55450 - ld hl, W_PLAYERMONSALIVEFLAGS - xor a - ld [hl], a - ld a, [wPlayerMonNumber] ; $cc2f - ld c, a - ld b, $1 - push bc - ld a, $10 - call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) - ld hl, $ccf5 - xor a - ld [hl], a - pop bc - ld a, $10 - jp Predef ; indirect jump to HandleBitArray (f666 (3:7666)) - -Func_5546c: ; 5546c (15:546c) - ld a, [W_PLAYERMONSALIVEFLAGS] - ld b, a - xor a - ld c, $8 - ld d, $0 -.asm_55475 - xor a - srl b - adc d - ld d, a - dec c - jr nz, .asm_55475 - cp $2 - ret c - ld [$d11e], a - ld hl, $d002 - ld c, $7 -.asm_55488 - xor a - ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) - ld a, [hl] - ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) - ld a, [$d11e] - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - ld b, $2 - call Divide - ld a, [$ff98] - ld [hli], a - dec c - jr nz, .asm_55488 - ret - -Func_5549f: ; 5549f (15:549f) - ld a, [$ff97] - ld b, a - ld a, [$ff98] - ld c, a - srl b - rr c - add c - ld [$ff98], a - ld a, [$ff97] - adc b - ld [$ff97], a - ret - -GainedText: ; 554b2 (15:54b2) - TX_FAR _GainedText - db $08 ; asm - ld a, [$cc5b] - ld hl, WithExpAllText - and a - ret nz - ld hl, ExpPointsText - ld a, [$cf4d] - and a - ret z - ld hl, BoostedText - ret - -WithExpAllText: ; 554cb (15:54cb) - TX_FAR _WithExpAllText - db $08 ; asm - ld hl, ExpPointsText - ret - -BoostedText: ; 554d4 (15:54d4) - TX_FAR _BoostedText - -ExpPointsText: ; 554d8 (15:54d8) - TX_FAR _ExpPointsText - db "@" - -GrewLevelText: ; 554dd (15:54dd) - TX_FAR _GrewLevelText - db $0b - db "@" - -Route2Script: ; 554e3 (15:54e3) - jp EnableAutoTextBoxDrawing - -Route2TextPointers: ; 554e6 (15:54e6) - dw Predef5CText - dw Predef5CText - dw Route2Text3 - dw Route2Text4 - -Route2Text3: ; 554ee (15:54ee) - TX_FAR _Route2Text3 - db "@" - -Route2Text4: ; 554f3 (15:54f3) - TX_FAR _Route2Text4 - db "@" - -Route3Script: ; 554f8 (15:54f8) - call EnableAutoTextBoxDrawing - ld hl, Route3TrainerHeader0 - ld de, Route3ScriptPointers - ld a, [W_ROUTE3CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROUTE3CURSCRIPT], a - ret - -Route3ScriptPointers: ; 5550b (15:550b) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -Route3TextPointers: ; 55511 (15:5511) - dw Route3Text1 - dw Route3Text2 - dw Route3Text3 - dw Route3Text4 - dw Route3Text5 - dw Route3Text6 - dw Route3Text7 - dw Route3Text8 - dw Route3Text9 - dw Route3Text10 - -Route3TrainerHeaders: ; 55525 (15:5525) -Route3TrainerHeader0: ; 55525 (15:5525) - db $2 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7c3 ; flag's byte - dw Route3BattleText1 ; 0x5595 TextBeforeBattle - dw Route3AfterBattleText1 ; 0x559f TextAfterBattle - dw Route3EndBattleText1 ; 0x559a TextEndBattle - dw Route3EndBattleText1 ; 0x559a TextEndBattle - -Route3TrainerHeader2: ; 55531 (15:5531) - db $3 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7c3 ; flag's byte - dw Route3BattleText2 ; 0x55ae TextBeforeBattle - dw Route3AfterBattleText2 ; 0x55b8 TextAfterBattle - dw Route3EndBattleText2 ; 0x55b3 TextEndBattle - dw Route3EndBattleText2 ; 0x55b3 TextEndBattle - -Route3TrainerHeader3: ; 5553d (15:553d) - db $4 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7c3 ; flag's byte - dw Route3BattleText3 ; 0x55c7 TextBeforeBattle - dw Route3AfterBattleText3 ; 0x55d1 TextAfterBattle - dw Route3EndBattleText3 ; 0x55cc TextEndBattle - dw Route3EndBattleText3 ; 0x55cc TextEndBattle - -Route3TrainerHeader4: ; 55549 (15:5549) - db $5 ; flag's bit - db ($1 << 4) ; trainer's view range - dw $d7c3 ; flag's byte - dw Route3BattleText4 ; 0x55e0 TextBeforeBattle - dw Route3AfterBattleText4 ; 0x55ea TextAfterBattle - dw Route3EndBattleText4 ; 0x55e5 TextEndBattle - dw Route3EndBattleText4 ; 0x55e5 TextEndBattle - -Route3TrainerHeader5: ; 55555 (15:5555) - db $6 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7c3 ; flag's byte - dw Route3BattleText5 ; 0x55f9 TextBeforeBattle - dw Route3AfterBattleText5 ; 0x5603 TextAfterBattle - dw Route3EndBattleText5 ; 0x55fe TextEndBattle - dw Route3EndBattleText5 ; 0x55fe TextEndBattle - -Route3TrainerHeader6: ; 55561 (15:5561) - db $7 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7c3 ; flag's byte - dw Route3BattleText6 ; 0x5612 TextBeforeBattle - dw Route3AfterBattleText6 ; 0x561c TextAfterBattle - dw Route3EndBattleText6 ; 0x5617 TextEndBattle - dw Route3EndBattleText6 ; 0x5617 TextEndBattle - -Route3TrainerHeader7: ; 5556d (15:556d) - db $8 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7c3 ; flag's byte - dw Route3BattleText7 ; 0x562b TextBeforeBattle - dw Route3AfterBattleText7 ; 0x5635 TextAfterBattle - dw Route3EndBattleText7 ; 0x5630 TextEndBattle - dw Route3EndBattleText7 ; 0x5630 TextEndBattle - -Route3TrainerHeader8: ; 55579 (15:5579) - db $9 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7c3 ; flag's byte - dw Route3BattleText8 ; 0x5644 TextBeforeBattle - dw Route3AfterBattleText8 ; 0x564e TextAfterBattle - dw Route3EndBattleText8 ; 0x5649 TextEndBattle - dw Route3EndBattleText8 ; 0x5649 TextEndBattle - - db $ff - -Route3Text1: ; 55586 (15:5586) - TX_FAR _Route3Text1 - db "@" - -Route3Text2: ; 5558b (15:558b) - db $08 ; asm - ld hl, Route3TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -Route3BattleText1: ; 55595 (15:5595) - TX_FAR _Route3BattleText1 - db "@" - -Route3EndBattleText1: ; 5559a (15:559a) - TX_FAR _Route3EndBattleText1 - db "@" - -Route3AfterBattleText1: ; 5559f (15:559f) - TX_FAR _Route3AfterBattleText1 - db "@" - -Route3Text3: ; 555a4 (15:55a4) - db $08 ; asm - ld hl, Route3TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -Route3BattleText2: ; 555ae (15:55ae) - TX_FAR _Route3BattleText2 - db "@" - -Route3EndBattleText2: ; 555b3 (15:55b3) - TX_FAR _Route3EndBattleText2 - db "@" - -Route3AfterBattleText2: ; 555b8 (15:55b8) - TX_FAR _Route3AfterBattleText2 - db "@" - -Route3Text4: ; 555bd (15:55bd) - db $08 ; asm - ld hl, Route3TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -Route3BattleText3: ; 555c7 (15:55c7) - TX_FAR _Route3BattleText3 - db "@" - -Route3EndBattleText3: ; 555cc (15:55cc) - TX_FAR _Route3EndBattleText3 - db "@" - -Route3AfterBattleText3: ; 555d1 (15:55d1) - TX_FAR _Route3AfterBattleText3 - db "@" - -Route3Text5: ; 555d6 (15:55d6) - db $08 ; asm - ld hl, Route3TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -Route3BattleText4: ; 555e0 (15:55e0) - TX_FAR _Route3BattleText4 - db "@" - -Route3EndBattleText4: ; 555e5 (15:55e5) - TX_FAR _Route3EndBattleText4 - db "@" - -Route3AfterBattleText4: ; 555ea (15:55ea) - TX_FAR _Route3AfterBattleText4 - db "@" - -Route3Text6: ; 555ef (15:55ef) - db $08 ; asm - ld hl, Route3TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -Route3BattleText5: ; 555f9 (15:55f9) - TX_FAR _Route3BattleText5 - db "@" - -Route3EndBattleText5: ; 555fe (15:55fe) - TX_FAR _Route3EndBattleText5 - db "@" - -Route3AfterBattleText5: ; 55603 (15:5603) - TX_FAR _Route3AfterBattleText5 - db "@" - -Route3Text7: ; 55608 (15:5608) - db $08 ; asm - ld hl, Route3TrainerHeader6 - call TalkToTrainer - jp TextScriptEnd - -Route3BattleText6: ; 55612 (15:5612) - TX_FAR _Route3BattleText6 - db "@" - -Route3EndBattleText6: ; 55617 (15:5617) - TX_FAR _Route3EndBattleText6 - db "@" - -Route3AfterBattleText6: ; 5561c (15:561c) - TX_FAR _Route3AfterBattleText6 - db "@" - -Route3Text8: ; 55621 (15:5621) - db $08 ; asm - ld hl, Route3TrainerHeader7 - call TalkToTrainer - jp TextScriptEnd - -Route3BattleText7: ; 5562b (15:562b) - TX_FAR _Route3BattleText7 - db "@" - -Route3EndBattleText7: ; 55630 (15:5630) - TX_FAR _Route3EndBattleText7 - db "@" - -Route3AfterBattleText7: ; 55635 (15:5635) - TX_FAR _Route3AfterBattleText7 - db "@" - -Route3Text9: ; 5563a (15:563a) - db $08 ; asm - ld hl, Route3TrainerHeader8 - call TalkToTrainer - jp TextScriptEnd - -Route3BattleText8: ; 55644 (15:5644) - TX_FAR _Route3BattleText8 - db "@" - -Route3EndBattleText8: ; 55649 (15:5649) - TX_FAR _Route3EndBattleText8 - db "@" - -Route3AfterBattleText8: ; 5564e (15:564e) - TX_FAR _Route3AfterBattleText8 - db "@" - -Route3Text10: ; 55653 (15:5653) - TX_FAR _Route3Text10 - db "@" - -Route4Script: ; 55658 (15:5658) - call EnableAutoTextBoxDrawing - ld hl, Route4TrainerHeaders - ld de, Route4ScriptPointers - ld a, [W_ROUTE4CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROUTE4CURSCRIPT], a - ret - -Route4ScriptPointers: ; 5566b (15:566b) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -Route4TextPointers: ; 55671 (15:5671) - dw Route4Text1 - dw Route4Text2 - dw Predef5CText - dw PokeCenterSignText - dw Route4Text5 - dw Route4Text6 - -Route4TrainerHeaders: ; 5567d (15:567d) -Route4TrainerHeader0: ; 5567d (15:567d) - db $2 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7c5 ; flag's byte - dw Route4BattleText1 ; 0x5699 TextBeforeBattle - dw Route4AfterBattleText1 ; 0x56a3 TextAfterBattle - dw Route4EndBattleText1 ; 0x569e TextEndBattle - dw Route4EndBattleText1 ; 0x569e TextEndBattle - - db $ff - -Route4Text1: ; 5568a (15:568a) - TX_FAR _Route4Text1 - db "@" - -Route4Text2: ; 5568f (15:568f) - db $08 ; asm - ld hl, Route4TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -Route4BattleText1: ; 55699 (15:5699) - TX_FAR _Route4BattleText1 - db "@" - -Route4EndBattleText1: ; 5569e (15:569e) - TX_FAR _Route4EndBattleText1 - db "@" - -Route4AfterBattleText1: ; 556a3 (15:56a3) - TX_FAR _Route4AfterBattleText1 - db "@" - -Route4Text5: ; 556a8 (15:56a8) - TX_FAR _Route4Text5 - db "@" - -Route4Text6: ; 556ad (15:56ad) - TX_FAR _Route4Text6 - db "@" - -Route5Script: ; 556b2 (15:56b2) - jp EnableAutoTextBoxDrawing - -Route5TextPointers: ; 556b5 (15:56b5) - dw Route5Text1 - -Route5Text1: ; 556b7 (15:56b7) - TX_FAR _Route5Text1 - db "@" - -Route9Script: ; 556bc (15:56bc) - call EnableAutoTextBoxDrawing - ld hl, Route9TrainerHeaders - ld de, Route9ScriptPointers - ld a, [W_ROUTE9CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROUTE9CURSCRIPT], a - ret - -Route9ScriptPointers: ; 556cf (15:56cf) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -Route9TextPointers: ; 556d5 (15:56d5) - dw Route9Text1 - dw Route9Text2 - dw Route9Text3 - dw Route9Text4 - dw Route9Text5 - dw Route9Text6 - dw Route9Text7 - dw Route9Text8 - dw Route9Text9 - dw Predef5CText - dw Route9Text11 - -Route9TrainerHeaders: ; 556eb (15:56eb) -Route9TrainerHeader0: ; 556eb (15:56eb) - db $1 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7cf ; flag's byte - dw Route9BattleText1 ; 0x5792 TextBeforeBattle - dw Route9AfterBattleText1 ; 0x579c TextAfterBattle - dw Route9EndBattleText1 ; 0x5797 TextEndBattle - dw Route9EndBattleText1 ; 0x5797 TextEndBattle - -Route9TrainerHeader2: ; 556f7 (15:56f7) - db $2 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7cf ; flag's byte - dw Route9BattleText2 ; 0x57a1 TextBeforeBattle - dw Route9AfterBattleText2 ; 0x57ab TextAfterBattle - dw Route9EndBattleText2 ; 0x57a6 TextEndBattle - dw Route9EndBattleText2 ; 0x57a6 TextEndBattle - -Route9TrainerHeader3: ; 55703 (15:5703) - db $3 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7cf ; flag's byte - dw Route9BattleText3 ; 0x57b0 TextBeforeBattle - dw Route9AfterBattleText3 ; 0x57ba TextAfterBattle - dw Route9EndBattleText3 ; 0x57b5 TextEndBattle - dw Route9EndBattleText3 ; 0x57b5 TextEndBattle - -Route9TrainerHeader4: ; 5570f (15:570f) - db $4 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7cf ; flag's byte - dw Route9BattleText4 ; 0x57bf TextBeforeBattle - dw Route9AfterBattleText4 ; 0x57c9 TextAfterBattle - dw Route9EndBattleText4 ; 0x57c4 TextEndBattle - dw Route9EndBattleText4 ; 0x57c4 TextEndBattle - -Route9TrainerHeader5: ; 5571b (15:571b) - db $5 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7cf ; flag's byte - dw Route9BattleText5 ; 0x57ce TextBeforeBattle - dw Route9AfterBattleText5 ; 0x57d8 TextAfterBattle - dw Route9EndBattleText5 ; 0x57d3 TextEndBattle - dw Route9EndBattleText5 ; 0x57d3 TextEndBattle - -Route9TrainerHeader6: ; 55727 (15:5727) - db $6 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7cf ; flag's byte - dw Route9BattleText6 ; 0x57dd TextBeforeBattle - dw Route9AfterBattleText6 ; 0x57e7 TextAfterBattle - dw Route9EndBattleText6 ; 0x57e2 TextEndBattle - dw Route9EndBattleText6 ; 0x57e2 TextEndBattle - -Route9TrainerHeader7: ; 55733 (15:5733) - db $7 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7cf ; flag's byte - dw Route9BattleText7 ; 0x57ec TextBeforeBattle - dw Route9AfterBattleText7 ; 0x57f6 TextAfterBattle - dw Route9EndBattleText7 ; 0x57f1 TextEndBattle - dw Route9EndBattleText7 ; 0x57f1 TextEndBattle - -Route9TrainerHeader8: ; 5573f (15:573f) - db $8 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7cf ; flag's byte - dw Route9BattleText8 ; 0x57fb TextBeforeBattle - dw Route9AfterBattleText8 ; 0x5805 TextAfterBattle - dw Route9EndBattleText8 ; 0x5800 TextEndBattle - dw Route9EndBattleText8 ; 0x5800 TextEndBattle - -Route9TrainerHeader9: ; 5574b (15:574b) - db $9 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7cf ; flag's byte - dw Route9BattleText9 ; 0x580a TextBeforeBattle - dw Route9AfterBattleText9 ; 0x5814 TextAfterBattle - dw Route9EndBattleText9 ; 0x580f TextEndBattle - dw Route9EndBattleText9 ; 0x580f TextEndBattle - - db $ff - -Route9Text1: ; 55758 (15:5758) - db $8 ; asm - ld hl, Route9TrainerHeader0 - jr asm_8be3d ; 0x5575c $2e - -Route9Text2: ; 5575e (15:575e) - db $8 ; asm - ld hl, Route9TrainerHeader2 - jr asm_8be3d ; 0x55762 $28 - -Route9Text3: ; 55764 (15:5764) - db $8 ; asm - ld hl, Route9TrainerHeader3 - jr asm_8be3d ; 0x55768 $22 - -Route9Text4: ; 5576a (15:576a) - db $8 ; asm - ld hl, Route9TrainerHeader4 - jr asm_8be3d ; 0x5576e $1c - -Route9Text5: ; 55770 (15:5770) - db $8 ; asm - ld hl, Route9TrainerHeader5 - jr asm_8be3d ; 0x55774 $16 - -Route9Text6: ; 55776 (15:5776) - db $8 ; asm - ld hl, Route9TrainerHeader6 - jr asm_8be3d ; 0x5577a $10 - -Route9Text7: ; 5577c (15:577c) - db $8 ; asm - ld hl, Route9TrainerHeader7 - jr asm_8be3d ; 0x55780 $a - -Route9Text8: ; 55782 (15:5782) - db $8 ; asm - ld hl, Route9TrainerHeader8 - jr asm_8be3d ; 0x55786 $4 - -Route9Text9: ; 55788 (15:5788) - db $8 ; asm - ld hl, Route9TrainerHeader9 -asm_8be3d: ; 5578c (15:578c) - call TalkToTrainer - jp TextScriptEnd - -Route9BattleText1: ; 55792 (15:5792) - TX_FAR _Route9BattleText1 - db "@" - -Route9EndBattleText1: ; 55797 (15:5797) - TX_FAR _Route9EndBattleText1 - db "@" - -Route9AfterBattleText1: ; 5579c (15:579c) - TX_FAR _Route9AfterBattleText1 - db "@" - -Route9BattleText2: ; 557a1 (15:57a1) - TX_FAR _Route9BattleText2 - db "@" - -Route9EndBattleText2: ; 557a6 (15:57a6) - TX_FAR _Route9EndBattleText2 - db "@" - -Route9AfterBattleText2: ; 557ab (15:57ab) - TX_FAR _Route9AfterBattleText2 - db "@" - -Route9BattleText3: ; 557b0 (15:57b0) - TX_FAR _Route9BattleText3 - db "@" - -Route9EndBattleText3: ; 557b5 (15:57b5) - TX_FAR _Route9EndBattleText3 - db "@" - -Route9AfterBattleText3: ; 557ba (15:57ba) - TX_FAR _Route9AfterBattleText3 - db "@" - -Route9BattleText4: ; 557bf (15:57bf) - TX_FAR _Route9BattleText4 - db "@" - -Route9EndBattleText4: ; 557c4 (15:57c4) - TX_FAR _Route9EndBattleText4 - db "@" - -Route9AfterBattleText4: ; 557c9 (15:57c9) - TX_FAR _Route9AfterBattleText4 - db "@" - -Route9BattleText5: ; 557ce (15:57ce) - TX_FAR _Route9BattleText5 - db "@" - -Route9EndBattleText5: ; 557d3 (15:57d3) - TX_FAR _Route9EndBattleText5 - db "@" - -Route9AfterBattleText5: ; 557d8 (15:57d8) - TX_FAR _Route9AfterBattleText5 - db "@" - -Route9BattleText6: ; 557dd (15:57dd) - TX_FAR _Route9BattleText6 - db "@" - -Route9EndBattleText6: ; 557e2 (15:57e2) - TX_FAR _Route9EndBattleText6 - db "@" - -Route9AfterBattleText6: ; 557e7 (15:57e7) - TX_FAR _Route9AfterBattleText6 - db "@" - -Route9BattleText7: ; 557ec (15:57ec) - TX_FAR _Route9BattleText7 - db "@" - -Route9EndBattleText7: ; 557f1 (15:57f1) - TX_FAR _Route9EndBattleText7 - db "@" - -Route9AfterBattleText7: ; 557f6 (15:57f6) - TX_FAR _Route9AfterBattleText7 - db "@" - -Route9BattleText8: ; 557fb (15:57fb) - TX_FAR _Route9BattleText8 - db "@" - -Route9EndBattleText8: ; 55800 (15:5800) - TX_FAR _Route9EndBattleText8 - db "@" - -Route9AfterBattleText8: ; 55805 (15:5805) - TX_FAR _Route9AfterBattleText8 - db "@" - -Route9BattleText9: ; 5580a (15:580a) - TX_FAR _Route9BattleText9 - db "@" - -Route9EndBattleText9: ; 5580f (15:580f) - TX_FAR _Route9EndBattleText9 - db "@" - -Route9AfterBattleText9: ; 55814 (15:5814) - TX_FAR _Route9AfterBattleText9 - db "@" - -Route9Text11: ; 55819 (15:5819) - TX_FAR _Route9Text11 - db "@" - -Route13Script: ; 5581e (15:581e) - call EnableAutoTextBoxDrawing - ld hl, Route13TrainerHeaders - ld de, Route13ScriptPointers - ld a, [W_ROUTE13CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROUTE13CURSCRIPT], a - ret - -Route13ScriptPointers: ; 55831 (15:5831) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -Route13TextPointers: ; 55837 (15:5837) - dw Route13Text1 - dw Route13Text2 - dw Route13Text3 - dw Route13Text4 - dw Route13Text5 - dw Route13Text6 - dw Route13Text7 - dw Route13Text8 - dw Route13Text9 - dw Route13Text10 - dw Route13Text11 - dw Route13Text12 - dw Route13Text13 - -Route13TrainerHeaders: ; 55851 (15:5851) -Route13TrainerHeader0: ; 55851 (15:5851) - db $1 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7d9 ; flag's byte - dw Route13BattleText2 ; 0x58d4 TextBeforeBattle - dw Route13AfterBattleText2 ; 0x58de TextAfterBattle - dw Route13EndBattleText2 ; 0x58d9 TextEndBattle - dw Route13EndBattleText2 ; 0x58d9 TextEndBattle - -Route13TrainerHeader2: ; 5585d (15:585d) - db $2 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7d9 ; flag's byte - dw Route13BattleText3 ; 0x58ed TextBeforeBattle - dw Route13AfterBattleText3 ; 0x58f7 TextAfterBattle - dw Route13EndBattleText3 ; 0x58f2 TextEndBattle - dw Route13EndBattleText3 ; 0x58f2 TextEndBattle - -Route13TrainerHeader3: ; 55869 (15:5869) - db $3 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7d9 ; flag's byte - dw Route13BattleText4 ; 0x5906 TextBeforeBattle - dw Route13AfterBattleText4 ; 0x5910 TextAfterBattle - dw Route13EndBattleText4 ; 0x590b TextEndBattle - dw Route13EndBattleText4 ; 0x590b TextEndBattle - -Route13TrainerHeader4: ; 55875 (15:5875) - db $4 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7d9 ; flag's byte - dw Route13BattleText5 ; 0x591f TextBeforeBattle - dw Route13AfterBattleText5 ; 0x5929 TextAfterBattle - dw Route13EndBattleText5 ; 0x5924 TextEndBattle - dw Route13EndBattleText5 ; 0x5924 TextEndBattle - -Route13TrainerHeader5: ; 55881 (15:5881) - db $5 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7d9 ; flag's byte - dw Route13BattleText6 ; 0x5938 TextBeforeBattle - dw Route13AfterBattleText6 ; 0x5942 TextAfterBattle - dw Route13EndBattleText6 ; 0x593d TextEndBattle - dw Route13EndBattleText6 ; 0x593d TextEndBattle - -Route13TrainerHeader6: ; 5588d (15:588d) - db $6 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7d9 ; flag's byte - dw Route13BattleText7 ; 0x5951 TextBeforeBattle - dw Route13AfterBattleText7 ; 0x595b TextAfterBattle - dw Route13EndBattleText7 ; 0x5956 TextEndBattle - dw Route13EndBattleText7 ; 0x5956 TextEndBattle - -Route13TrainerHeader7: ; 55899 (15:5899) - db $7 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7d9 ; flag's byte - dw Route13BattleText8 ; 0x596a TextBeforeBattle - dw Route13AfterBattleText8 ; 0x5974 TextAfterBattle - dw Route13EndBattleText8 ; 0x596f TextEndBattle - dw Route13EndBattleText8 ; 0x596f TextEndBattle - -Route13TrainerHeader8: ; 558a5 (15:58a5) - db $8 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7d9 ; flag's byte - dw Route13BattleText9 ; 0x5983 TextBeforeBattle - dw Route13AfterBattleText9 ; 0x598d TextAfterBattle - dw Route13EndBattleText9 ; 0x5988 TextEndBattle - dw Route13EndBattleText9 ; 0x5988 TextEndBattle - -Route13TrainerHeader9: ; 558b1 (15:58b1) - db $9 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7d9 ; flag's byte - dw Route13BattleText10 ; 0x599c TextBeforeBattle - dw Route13AfterBattleText10 ; 0x59a6 TextAfterBattle - dw Route13EndBattleText10 ; 0x59a1 TextEndBattle - dw Route13EndBattleText10 ; 0x59a1 TextEndBattle - -Route13TrainerHeader10: ; 558bd (15:58bd) - db $a ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7d9 ; flag's byte - dw Route13BattleText11 ; 0x59b5 TextBeforeBattle - dw Route13AfterBattleText11 ; 0x59bf TextAfterBattle - dw Route13EndBattleText11 ; 0x59ba TextEndBattle - dw Route13EndBattleText11 ; 0x59ba TextEndBattle - - db $ff - -Route13Text1: ; 558ca (15:58ca) - db $08 ; asm - ld hl, Route13TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -Route13BattleText2: ; 558d4 (15:58d4) - TX_FAR _Route13BattleText2 - db "@" - -Route13EndBattleText2: ; 558d9 (15:58d9) - TX_FAR _Route13EndBattleText2 - db "@" - -Route13AfterBattleText2: ; 558de (15:58de) - TX_FAR _Route13AfterBattleText2 - db "@" - -Route13Text2: ; 558e3 (15:58e3) - db $08 ; asm - ld hl, Route13TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -Route13BattleText3: ; 558ed (15:58ed) - TX_FAR _Route13BattleText3 - db "@" - -Route13EndBattleText3: ; 558f2 (15:58f2) - TX_FAR _Route13EndBattleText3 - db "@" - -Route13AfterBattleText3: ; 558f7 (15:58f7) - TX_FAR _Route13AfterBattleText3 - db "@" - -Route13Text3: ; 558fc (15:58fc) - db $08 ; asm - ld hl, Route13TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -Route13BattleText4: ; 55906 (15:5906) - TX_FAR _Route13BattleText4 - db "@" - -Route13EndBattleText4: ; 5590b (15:590b) - TX_FAR _Route13EndBattleText4 - db "@" - -Route13AfterBattleText4: ; 55910 (15:5910) - TX_FAR _Route13AfterBattleText4 - db "@" - -Route13Text4: ; 55915 (15:5915) - db $08 ; asm - ld hl, Route13TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -Route13BattleText5: ; 5591f (15:591f) - TX_FAR _Route13BattleText5 - db "@" - -Route13EndBattleText5: ; 55924 (15:5924) - TX_FAR _Route13EndBattleText5 - db "@" - -Route13AfterBattleText5: ; 55929 (15:5929) - TX_FAR _Route13AfterBattleText5 - db "@" - -Route13Text5: ; 5592e (15:592e) - db $08 ; asm - ld hl, Route13TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -Route13BattleText6: ; 55938 (15:5938) - TX_FAR _Route13BattleText6 - db "@" - -Route13EndBattleText6: ; 5593d (15:593d) - TX_FAR _Route13EndBattleText6 - db "@" - -Route13AfterBattleText6: ; 55942 (15:5942) - TX_FAR _Route13AfterBattleText6 - db "@" - -Route13Text6: ; 55947 (15:5947) - db $08 ; asm - ld hl, Route13TrainerHeader6 - call TalkToTrainer - jp TextScriptEnd - -Route13BattleText7: ; 55951 (15:5951) - TX_FAR _Route13BattleText7 - db "@" - -Route13EndBattleText7: ; 55956 (15:5956) - TX_FAR _Route13EndBattleText7 - db "@" - -Route13AfterBattleText7: ; 5595b (15:595b) - TX_FAR _Route13AfterBattleText7 - db "@" - -Route13Text7: ; 55960 (15:5960) - db $08 ; asm - ld hl, Route13TrainerHeader7 - call TalkToTrainer - jp TextScriptEnd - -Route13BattleText8: ; 5596a (15:596a) - TX_FAR _Route13BattleText8 - db "@" - -Route13EndBattleText8: ; 5596f (15:596f) - TX_FAR _Route13EndBattleText8 - db "@" - -Route13AfterBattleText8: ; 55974 (15:5974) - TX_FAR _Route13AfterBattleText8 - db "@" - -Route13Text8: ; 55979 (15:5979) - db $08 ; asm - ld hl, Route13TrainerHeader8 - call TalkToTrainer - jp TextScriptEnd - -Route13BattleText9: ; 55983 (15:5983) - TX_FAR _Route13BattleText9 - db "@" - -Route13EndBattleText9: ; 55988 (15:5988) - TX_FAR _Route13EndBattleText9 - db "@" - -Route13AfterBattleText9: ; 5598d (15:598d) - TX_FAR _Route13AfterBattleText9 - db "@" - -Route13Text9: ; 55992 (15:5992) - db $08 ; asm - ld hl, Route13TrainerHeader9 - call TalkToTrainer - jp TextScriptEnd - -Route13BattleText10: ; 5599c (15:599c) - TX_FAR _Route13BattleText10 - db "@" - -Route13EndBattleText10: ; 559a1 (15:59a1) - TX_FAR _Route13EndBattleText10 - db "@" - -Route13AfterBattleText10: ; 559a6 (15:59a6) - TX_FAR _Route13AfterBattleText10 - db "@" - -Route13Text10: ; 559ab (15:59ab) - db $08 ; asm - ld hl, Route13TrainerHeader10 - call TalkToTrainer - jp TextScriptEnd - -Route13BattleText11: ; 559b5 (15:59b5) - TX_FAR _Route13BattleText11 - db "@" - -Route13EndBattleText11: ; 559ba (15:59ba) - TX_FAR _Route13EndBattleText11 - db "@" - -Route13AfterBattleText11: ; 559bf (15:59bf) - TX_FAR _Route13AfterBattleText11 - db "@" - -Route13Text11: ; 559c4 (15:59c4) - TX_FAR _Route13Text11 - db "@" - -Route13Text12: ; 559c9 (15:59c9) - TX_FAR _Route13Text12 - db "@" - -Route13Text13: ; 559ce (15:59ce) - TX_FAR _Route13Text13 - db "@" - -Route14Script: ; 559d3 (15:59d3) - call EnableAutoTextBoxDrawing - ld hl, Route14TrainerHeaders - ld de, Route14ScriptPointers - ld a, [W_ROUTE14CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROUTE14CURSCRIPT], a - ret - -Route14ScriptPointers: ; 559e6 (15:59e6) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -Route14TextPointers: ; 559ec (15:59ec) - dw Route14Text1 - dw Route14Text2 - dw Route14Text3 - dw Route14Text4 - dw Route14Text5 - dw Route14Text6 - dw Route14Text7 - dw Route14Text8 - dw Route14Text9 - dw Route14Text10 - dw Route14Text11 - -Route14TrainerHeaders: ; 55a02 (15:5a02) -Route14TrainerHeader0: ; 55a02 (15:5a02) - db $1 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7db ; flag's byte - dw Route14BattleText1 ; 0x5a85 TextBeforeBattle - dw Route14AfterBattleText1 ; 0x5a8f TextAfterBattle - dw Route14EndBattleText1 ; 0x5a8a TextEndBattle - dw Route14EndBattleText1 ; 0x5a8a TextEndBattle - -Route14TrainerHeader1: ; 55a0e (15:5a0e) - db $2 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7db ; flag's byte - dw Route14BattleText2 ; 0x5a9e TextBeforeBattle - dw Route14AfterBattleText2 ; 0x5aa8 TextAfterBattle - dw Route14EndBattleText2 ; 0x5aa3 TextEndBattle - dw Route14EndBattleText2 ; 0x5aa3 TextEndBattle - -Route14TrainerHeader2: ; 55a1a (15:5a1a) - db $3 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7db ; flag's byte - dw Route14BattleText3 ; 0x5ab7 TextBeforeBattle - dw Route14AfterBattleText3 ; 0x5ac1 TextAfterBattle - dw Route14EndBattleText3 ; 0x5abc TextEndBattle - dw Route14EndBattleText3 ; 0x5abc TextEndBattle - -Route14TrainerHeader3: ; 55a26 (15:5a26) - db $4 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7db ; flag's byte - dw Route14BattleText4 ; 0x5ad0 TextBeforeBattle - dw Route14AfterBattleText4 ; 0x5ada TextAfterBattle - dw Route14EndBattleText4 ; 0x5ad5 TextEndBattle - dw Route14EndBattleText4 ; 0x5ad5 TextEndBattle - -Route14TrainerHeader4: ; 55a32 (15:5a32) - db $5 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7db ; flag's byte - dw Route14BattleText5 ; 0x5ae9 TextBeforeBattle - dw Route14AfterBattleText5 ; 0x5af3 TextAfterBattle - dw Route14EndBattleText5 ; 0x5aee TextEndBattle - dw Route14EndBattleText5 ; 0x5aee TextEndBattle - -Route14TrainerHeader5: ; 55a3e (15:5a3e) - db $6 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7db ; flag's byte - dw Route14BattleText6 ; 0x5b02 TextBeforeBattle - dw Route14AfterBattleText6 ; 0x5b0c TextAfterBattle - dw Route14EndBattleText6 ; 0x5b07 TextEndBattle - dw Route14EndBattleText6 ; 0x5b07 TextEndBattle - -Route14TrainerHeader6: ; 55a4a (15:5a4a) - db $7 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7db ; flag's byte - dw Route14BattleText7 ; 0x5b1b TextBeforeBattle - dw Route14AfterBattleText7 ; 0x5b25 TextAfterBattle - dw Route14EndBattleText7 ; 0x5b20 TextEndBattle - dw Route14EndBattleText7 ; 0x5b20 TextEndBattle - -Route14TrainerHeader7: ; 55a56 (15:5a56) - db $8 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7db ; flag's byte - dw Route14BattleText8 ; 0x5b34 TextBeforeBattle - dw Route14AfterBattleText8 ; 0x5b3e TextAfterBattle - dw Route14EndBattleText8 ; 0x5b39 TextEndBattle - dw Route14EndBattleText8 ; 0x5b39 TextEndBattle - -Route14TrainerHeader8: ; 55a62 (15:5a62) - db $9 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7db ; flag's byte - dw Route14BattleText9 ; 0x5b4d TextBeforeBattle - dw Route14AfterBattleText9 ; 0x5b57 TextAfterBattle - dw Route14EndBattleText9 ; 0x5b52 TextEndBattle - dw Route14EndBattleText9 ; 0x5b52 TextEndBattle - -Route14TrainerHeader9: ; 55a6e (15:5a6e) - db $a ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7db ; flag's byte - dw Route14BattleText10 ; 0x5b66 TextBeforeBattle - dw Route14AfterBattleText10 ; 0x5b70 TextAfterBattle - dw Route14EndBattleText10 ; 0x5b6b TextEndBattle - dw Route14EndBattleText10 ; 0x5b6b TextEndBattle - - db $ff - -Route14Text1: ; 55a7b (15:5a7b) - db $08 ; asm - ld hl, Route14TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -Route14BattleText1: ; 55a85 (15:5a85) - TX_FAR _Route14BattleText1 - db "@" - -Route14EndBattleText1: ; 55a8a (15:5a8a) - TX_FAR _Route14EndBattleText1 - db "@" - -Route14AfterBattleText1: ; 55a8f (15:5a8f) - TX_FAR _Route14AfterBattleText1 - db "@" - -Route14Text2: ; 55a94 (15:5a94) - db $08 ; asm - ld hl, Route14TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -Route14BattleText2: ; 55a9e (15:5a9e) - TX_FAR _Route14BattleText2 - db "@" - -Route14EndBattleText2: ; 55aa3 (15:5aa3) - TX_FAR _Route14EndBattleText2 - db "@" - -Route14AfterBattleText2: ; 55aa8 (15:5aa8) - TX_FAR _Route14AfterBattleText2 - db "@" - -Route14Text3: ; 55aad (15:5aad) - db $08 ; asm - ld hl, Route14TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -Route14BattleText3: ; 55ab7 (15:5ab7) - TX_FAR _Route14BattleText3 - db "@" - -Route14EndBattleText3: ; 55abc (15:5abc) - TX_FAR _Route14EndBattleText3 - db "@" - -Route14AfterBattleText3: ; 55ac1 (15:5ac1) - TX_FAR _Route14AfterBattleText3 - db "@" - -Route14Text4: ; 55ac6 (15:5ac6) - db $08 ; asm - ld hl, Route14TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -Route14BattleText4: ; 55ad0 (15:5ad0) - TX_FAR _Route14BattleText4 - db "@" - -Route14EndBattleText4: ; 55ad5 (15:5ad5) - TX_FAR _Route14EndBattleText4 - db "@" - -Route14AfterBattleText4: ; 55ada (15:5ada) - TX_FAR _Route14AfterBattleText4 - db "@" - -Route14Text5: ; 55adf (15:5adf) - db $08 ; asm - ld hl, Route14TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -Route14BattleText5: ; 55ae9 (15:5ae9) - TX_FAR _Route14BattleText5 - db "@" - -Route14EndBattleText5: ; 55aee (15:5aee) - TX_FAR _Route14EndBattleText5 - db "@" - -Route14AfterBattleText5: ; 55af3 (15:5af3) - TX_FAR _Route14AfterBattleText5 - db "@" - -Route14Text6: ; 55af8 (15:5af8) - db $08 ; asm - ld hl, Route14TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -Route14BattleText6: ; 55b02 (15:5b02) - TX_FAR _Route14BattleText6 - db "@" - -Route14EndBattleText6: ; 55b07 (15:5b07) - TX_FAR _Route14EndBattleText6 - db "@" - -Route14AfterBattleText6: ; 55b0c (15:5b0c) - TX_FAR _Route14AfterBattleText6 - db "@" - -Route14Text7: ; 55b11 (15:5b11) - db $08 ; asm - ld hl, Route14TrainerHeader6 - call TalkToTrainer - jp TextScriptEnd - -Route14BattleText7: ; 55b1b (15:5b1b) - TX_FAR _Route14BattleText7 - db "@" - -Route14EndBattleText7: ; 55b20 (15:5b20) - TX_FAR _Route14EndBattleText7 - db "@" - -Route14AfterBattleText7: ; 55b25 (15:5b25) - TX_FAR _Route14AfterBattleText7 - db "@" - -Route14Text8: ; 55b2a (15:5b2a) - db $08 ; asm - ld hl, Route14TrainerHeader7 - call TalkToTrainer - jp TextScriptEnd - -Route14BattleText8: ; 55b34 (15:5b34) - TX_FAR _Route14BattleText8 - db "@" - -Route14EndBattleText8: ; 55b39 (15:5b39) - TX_FAR _Route14EndBattleText8 - db "@" - -Route14AfterBattleText8: ; 55b3e (15:5b3e) - TX_FAR _Route14AfterBattleText8 - db "@" - -Route14Text9: ; 55b43 (15:5b43) - db $08 ; asm - ld hl, Route14TrainerHeader8 - call TalkToTrainer - jp TextScriptEnd - -Route14BattleText9: ; 55b4d (15:5b4d) - TX_FAR _Route14BattleText9 - db "@" - -Route14EndBattleText9: ; 55b52 (15:5b52) - TX_FAR _Route14EndBattleText9 - db "@" - -Route14AfterBattleText9: ; 55b57 (15:5b57) - TX_FAR _Route14AfterBattleText9 - db "@" - -Route14Text10: ; 55b5c (15:5b5c) - db $08 ; asm - ld hl, Route14TrainerHeader9 - call TalkToTrainer - jp TextScriptEnd - -Route14BattleText10: ; 55b66 (15:5b66) - TX_FAR _Route14BattleText10 - db "@" - -Route14EndBattleText10: ; 55b6b (15:5b6b) - TX_FAR _Route14EndBattleText10 - db "@" - -Route14AfterBattleText10: ; 55b70 (15:5b70) - TX_FAR _Route14AfterBattleText10 - db "@" - -Route14Text11: ; 55b75 (15:5b75) - TX_FAR _Route14Text11 - db "@" - -Route17Script: ; 55b7a (15:5b7a) - call EnableAutoTextBoxDrawing - ld hl, Route17TrainerHeaders - ld de, Route17ScriptPointers - ld a, [W_ROUTE17CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROUTE17CURSCRIPT], a - ret - -Route17ScriptPointers: ; 55b8d (15:5b8d) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -Route17TextPointers: ; 55b93 (15:5b93) - dw Route17Text1 - dw Route17Text2 - dw Route17Text3 - dw Route17Text4 - dw Route17Text5 - dw Route17Text6 - dw Route17Text7 - dw Route17Text8 - dw Route17Text9 - dw Route17Text10 - dw Route17Text11 - dw Route17Text12 - dw Route17Text13 - dw Route17Text14 - dw Route17Text15 - dw Route17Text16 - -Route17TrainerHeaders: ; 55bb3 (15:5bb3) -Route17TrainerHeader0: ; 55bb3 (15:5bb3) - db $1 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7e1 ; flag's byte - dw Route17BattleText1 ; 0x5c36 TextBeforeBattle - dw Route17AfterBattleText1 ; 0x5c40 TextAfterBattle - dw Route17EndBattleText1 ; 0x5c3b TextEndBattle - dw Route17EndBattleText1 ; 0x5c3b TextEndBattle - -Route17TrainerHeader1: ; 55bbf (15:5bbf) - db $2 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e1 ; flag's byte - dw Route17BattleText2 ; 0x5c4f TextBeforeBattle - dw Route17AfterBattleText2 ; 0x5c59 TextAfterBattle - dw Route17EndBattleText2 ; 0x5c54 TextEndBattle - dw Route17EndBattleText2 ; 0x5c54 TextEndBattle - -Route17TrainerHeader2: ; 55bcb (15:5bcb) - db $3 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e1 ; flag's byte - dw Route17BattleText3 ; 0x5c68 TextBeforeBattle - dw Route17AfterBattleText3 ; 0x5c72 TextAfterBattle - dw Route17EndBattleText3 ; 0x5c6d TextEndBattle - dw Route17EndBattleText3 ; 0x5c6d TextEndBattle - -Route17TrainerHeader3: ; 55bd7 (15:5bd7) - db $4 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e1 ; flag's byte - dw Route17BattleText4 ; 0x5c81 TextBeforeBattle - dw Route17AfterBattleText4 ; 0x5c8b TextAfterBattle - dw Route17EndBattleText4 ; 0x5c86 TextEndBattle - dw Route17EndBattleText4 ; 0x5c86 TextEndBattle - -Route17TrainerHeader4: ; 55be3 (15:5be3) - db $5 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7e1 ; flag's byte - dw Route17BattleText5 ; 0x5c9a TextBeforeBattle - dw Route17AfterBattleText5 ; 0x5ca4 TextAfterBattle - dw Route17EndBattleText5 ; 0x5c9f TextEndBattle - dw Route17EndBattleText5 ; 0x5c9f TextEndBattle - -Route17TrainerHeader5: ; 55bef (15:5bef) - db $6 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7e1 ; flag's byte - dw Route17BattleText6 ; 0x5cb3 TextBeforeBattle - dw Route17AfterBattleText6 ; 0x5cbd TextAfterBattle - dw Route17EndBattleText6 ; 0x5cb8 TextEndBattle - dw Route17EndBattleText6 ; 0x5cb8 TextEndBattle - -Route17TrainerHeader6: ; 55bfb (15:5bfb) - db $7 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e1 ; flag's byte - dw Route17BattleText7 ; 0x5ccc TextBeforeBattle - dw Route17AfterBattleText7 ; 0x5cd6 TextAfterBattle - dw Route17EndBattleText7 ; 0x5cd1 TextEndBattle - dw Route17EndBattleText7 ; 0x5cd1 TextEndBattle - -Route17TrainerHeader7: ; 55c07 (15:5c07) - db $8 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7e1 ; flag's byte - dw Route17BattleText8 ; 0x5ce5 TextBeforeBattle - dw Route17AfterBattleText8 ; 0x5cef TextAfterBattle - dw Route17EndBattleText8 ; 0x5cea TextEndBattle - dw Route17EndBattleText8 ; 0x5cea TextEndBattle - -Route17TrainerHeader8: ; 55c13 (15:5c13) - db $9 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7e1 ; flag's byte - dw Route17BattleText9 ; 0x5cfe TextBeforeBattle - dw Route17AfterBattleText9 ; 0x5d08 TextAfterBattle - dw Route17EndBattleText9 ; 0x5d03 TextEndBattle - dw Route17EndBattleText9 ; 0x5d03 TextEndBattle - -Route17TrainerHeader9: ; 55c1f (15:5c1f) - db $a ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e1 ; flag's byte - dw Route17BattleText10 ; 0x5d17 TextBeforeBattle - dw Route17AfterBattleText10 ; 0x5d21 TextAfterBattle - dw Route17EndBattleText10 ; 0x5d1c TextEndBattle - dw Route17EndBattleText10 ; 0x5d1c TextEndBattle - - db $ff - -Route17Text1: ; 55c2c (15:5c2c) - db $08 ; asm - ld hl, Route17TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -Route17BattleText1: ; 55c36 (15:5c36) - TX_FAR _Route17BattleText1 - db "@" - -Route17EndBattleText1: ; 55c3b (15:5c3b) - TX_FAR _Route17EndBattleText1 - db "@" - -Route17AfterBattleText1: ; 55c40 (15:5c40) - TX_FAR _Route17AfterBattleText1 - db "@" - -Route17Text2: ; 55c45 (15:5c45) - db $08 ; asm - ld hl, Route17TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -Route17BattleText2: ; 55c4f (15:5c4f) - TX_FAR _Route17BattleText2 - db "@" - -Route17EndBattleText2: ; 55c54 (15:5c54) - TX_FAR _Route17EndBattleText2 - db "@" - -Route17AfterBattleText2: ; 55c59 (15:5c59) - TX_FAR _Route17AfterBattleText2 - db "@" - -Route17Text3: ; 55c5e (15:5c5e) - db $08 ; asm - ld hl, Route17TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -Route17BattleText3: ; 55c68 (15:5c68) - TX_FAR _Route17BattleText3 - db "@" - -Route17EndBattleText3: ; 55c6d (15:5c6d) - TX_FAR _Route17EndBattleText3 - db "@" - -Route17AfterBattleText3: ; 55c72 (15:5c72) - TX_FAR _Route17AfterBattleText3 - db "@" - -Route17Text4: ; 55c77 (15:5c77) - db $08 ; asm - ld hl, Route17TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -Route17BattleText4: ; 55c81 (15:5c81) - TX_FAR _Route17BattleText4 - db "@" - -Route17EndBattleText4: ; 55c86 (15:5c86) - TX_FAR _Route17EndBattleText4 - db "@" - -Route17AfterBattleText4: ; 55c8b (15:5c8b) - TX_FAR _Route17AfterBattleText4 - db "@" - -Route17Text5: ; 55c90 (15:5c90) - db $08 ; asm - ld hl, Route17TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -Route17BattleText5: ; 55c9a (15:5c9a) - TX_FAR _Route17BattleText5 - db "@" - -Route17EndBattleText5: ; 55c9f (15:5c9f) - TX_FAR _Route17EndBattleText5 - db "@" - -Route17AfterBattleText5: ; 55ca4 (15:5ca4) - TX_FAR _Route17AfterBattleText5 - db "@" - -Route17Text6: ; 55ca9 (15:5ca9) - db $08 ; asm - ld hl, Route17TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -Route17BattleText6: ; 55cb3 (15:5cb3) - TX_FAR _Route17BattleText6 - db "@" - -Route17EndBattleText6: ; 55cb8 (15:5cb8) - TX_FAR _Route17EndBattleText6 - db "@" - -Route17AfterBattleText6: ; 55cbd (15:5cbd) - TX_FAR _Route17AfterBattleText6 - db "@" - -Route17Text7: ; 55cc2 (15:5cc2) - db $08 ; asm - ld hl, Route17TrainerHeader6 - call TalkToTrainer - jp TextScriptEnd - -Route17BattleText7: ; 55ccc (15:5ccc) - TX_FAR _Route17BattleText7 - db "@" - -Route17EndBattleText7: ; 55cd1 (15:5cd1) - TX_FAR _Route17EndBattleText7 - db "@" - -Route17AfterBattleText7: ; 55cd6 (15:5cd6) - TX_FAR _Route17AfterBattleText7 - db "@" - -Route17Text8: ; 55cdb (15:5cdb) - db $08 ; asm - ld hl, Route17TrainerHeader7 - call TalkToTrainer - jp TextScriptEnd - -Route17BattleText8: ; 55ce5 (15:5ce5) - TX_FAR _Route17BattleText8 - db "@" - -Route17EndBattleText8: ; 55cea (15:5cea) - TX_FAR _Route17EndBattleText8 - db "@" - -Route17AfterBattleText8: ; 55cef (15:5cef) - TX_FAR _Route17AfterBattleText8 - db "@" - -Route17Text9: ; 55cf4 (15:5cf4) - db $08 ; asm - ld hl, Route17TrainerHeader8 - call TalkToTrainer - jp TextScriptEnd - -Route17BattleText9: ; 55cfe (15:5cfe) - TX_FAR _Route17BattleText9 - db "@" - -Route17EndBattleText9: ; 55d03 (15:5d03) - TX_FAR _Route17EndBattleText9 - db "@" - -Route17AfterBattleText9: ; 55d08 (15:5d08) - TX_FAR _Route17AfterBattleText9 - db "@" - -Route17Text10: ; 55d0d (15:5d0d) - db $08 ; asm - ld hl, Route17TrainerHeader9 - call TalkToTrainer - jp TextScriptEnd - -Route17BattleText10: ; 55d17 (15:5d17) - TX_FAR _Route17BattleText10 - db "@" - -Route17EndBattleText10: ; 55d1c (15:5d1c) - TX_FAR _Route17EndBattleText10 - db "@" - -Route17AfterBattleText10: ; 55d21 (15:5d21) - TX_FAR _Route17AfterBattleText10 - db "@" - -Route17Text11: ; 55d26 (15:5d26) - TX_FAR _Route17Text11 - db "@" - -Route17Text12: ; 55d2b (15:5d2b) - TX_FAR _Route17Text12 - db "@" - -Route17Text13: ; 55d30 (15:5d30) - TX_FAR _Route17Text13 - db "@" - -Route17Text14: ; 55d35 (15:5d35) - TX_FAR _Route17Text14 - db "@" - -Route17Text15: ; 55d3a (15:5d3a) - TX_FAR _Route17Text15 - db "@" - -Route17Text16: ; 55d3f (15:5d3f) - TX_FAR _Route17Text16 - db "@" - -Route19Script: ; 55d44 (15:5d44) - call EnableAutoTextBoxDrawing - ld hl, Route19TrainerHeaders - ld de, Route19ScriptPointers - ld a, [W_ROUTE19CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROUTE19CURSCRIPT], a - ret - -Route19ScriptPointers: ; 55d57 (15:5d57) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -Route19TextPointers: ; 55d5d (15:5d5d) - dw Route19Text1 - dw Route19Text2 - dw Route19Text3 - dw Route19Text4 - dw Route19Text5 - dw Route19Text6 - dw Route19Text7 - dw Route19Text8 - dw Route19Text9 - dw Route19Text10 - dw Route19Text11 - -Route19TrainerHeaders: ; 55d73 (15:5d73) -Route19TrainerHeader0: ; 55d73 (15:5d73) - db $1 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e5 ; flag's byte - dw Route19BattleText1 ; 0x5e50 TextBeforeBattle - dw Route19AfterBattleText1 ; 0x5e5a TextAfterBattle - dw Route19EndBattleText1 ; 0x5e55 TextEndBattle - dw Route19EndBattleText1 ; 0x5e55 TextEndBattle - -Route19TrainerHeader1: ; 55d7f (15:5d7f) - db $2 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7e5 ; flag's byte - dw Route19BattleText2 ; 0x5e5f TextBeforeBattle - dw Route19AfterBattleText2 ; 0x5e69 TextAfterBattle - dw Route19EndBattleText2 ; 0x5e64 TextEndBattle - dw Route19EndBattleText2 ; 0x5e64 TextEndBattle - -Route19TrainerHeader2: ; 55d8b (15:5d8b) - db $3 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7e5 ; flag's byte - dw Route19BattleText3 ; 0x5e6e TextBeforeBattle - dw Route19AfterBattleText3 ; 0x5e78 TextAfterBattle - dw Route19EndBattleText3 ; 0x5e73 TextEndBattle - dw Route19EndBattleText3 ; 0x5e73 TextEndBattle - -Route19TrainerHeader3: ; 55d97 (15:5d97) - db $4 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e5 ; flag's byte - dw Route19BattleText4 ; 0x5e7d TextBeforeBattle - dw Route19AfterBattleText4 ; 0x5e87 TextAfterBattle - dw Route19EndBattleText4 ; 0x5e82 TextEndBattle - dw Route19EndBattleText4 ; 0x5e82 TextEndBattle - -Route19TrainerHeader4: ; 55da3 (15:5da3) - db $5 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e5 ; flag's byte - dw Route19BattleText5 ; 0x5e8c TextBeforeBattle - dw Route19AfterBattleText5 ; 0x5e96 TextAfterBattle - dw Route19EndBattleText5 ; 0x5e91 TextEndBattle - dw Route19EndBattleText5 ; 0x5e91 TextEndBattle - -Route19TrainerHeader5: ; 55daf (15:5daf) - db $6 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e5 ; flag's byte - dw Route19BattleText6 ; 0x5e9b TextBeforeBattle - dw Route19AfterBattleText6 ; 0x5ea5 TextAfterBattle - dw Route19EndBattleText6 ; 0x5ea0 TextEndBattle - dw Route19EndBattleText6 ; 0x5ea0 TextEndBattle - -Route19TrainerHeader6: ; 55dbb (15:5dbb) - db $7 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7e5 ; flag's byte - dw Route19BattleText7 ; 0x5eaa TextBeforeBattle - dw Route19AfterBattleText7 ; 0x5eb4 TextAfterBattle - dw Route19EndBattleText7 ; 0x5eaf TextEndBattle - dw Route19EndBattleText7 ; 0x5eaf TextEndBattle - -Route19TrainerHeader7: ; 55dc7 (15:5dc7) - db $8 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e5 ; flag's byte - dw Route19BattleText8 ; 0x5eb9 TextBeforeBattle - dw Route19AfterBattleText8 ; 0x5ec3 TextAfterBattle - dw Route19EndBattleText8 ; 0x5ebe TextEndBattle - dw Route19EndBattleText8 ; 0x5ebe TextEndBattle - -Route19TrainerHeader8: ; 55dd3 (15:5dd3) - db $9 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e5 ; flag's byte - dw Route19BattleText9 ; 0x5ec8 TextBeforeBattle - dw Route19AfterBattleText9 ; 0x5ed2 TextAfterBattle - dw Route19EndBattleText9 ; 0x5ecd TextEndBattle - dw Route19EndBattleText9 ; 0x5ecd TextEndBattle - -Route19TrainerHeader9: ; 55ddf (15:5ddf) - db $a ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e5 ; flag's byte - dw Route19BattleText10 ; 0x5ed7 TextBeforeBattle - dw Route19AfterBattleText10 ; 0x5ee1 TextAfterBattle - dw Route19EndBattleText10 ; 0x5edc TextEndBattle - dw Route19EndBattleText10 ; 0x5edc TextEndBattle - - db $ff - -Route19Text1: ; 55dec (15:5dec) - db $08 ; asm - ld hl, Route19TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -Route19Text2: ; 55df6 (15:5df6) - db $08 ; asm - ld hl, Route19TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -Route19Text3: ; 55e00 (15:5e00) - db $08 ; asm - ld hl, Route19TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -Route19Text4: ; 55e0a (15:5e0a) - db $08 ; asm - ld hl, Route19TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -Route19Text5: ; 55e14 (15:5e14) - db $08 ; asm - ld hl, Route19TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -Route19Text6: ; 55e1e (15:5e1e) - db $08 ; asm - ld hl, Route19TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -Route19Text7: ; 55e28 (15:5e28) - db $08 ; asm - ld hl, Route19TrainerHeader6 - call TalkToTrainer - jp TextScriptEnd - -Route19Text8: ; 55e32 (15:5e32) - db $08 ; asm - ld hl, Route19TrainerHeader7 - call TalkToTrainer - jp TextScriptEnd - -Route19Text9: ; 55e3c (15:5e3c) - db $08 ; asm - ld hl, Route19TrainerHeader8 - call TalkToTrainer - jp TextScriptEnd - -Route19Text10: ; 55e46 (15:5e46) - db $08 ; asm - ld hl, Route19TrainerHeader9 - call TalkToTrainer - jp TextScriptEnd - -Route19BattleText1: ; 55e50 (15:5e50) - TX_FAR _Route19BattleText1 - db "@" - -Route19EndBattleText1: ; 55e55 (15:5e55) - TX_FAR _Route19EndBattleText1 - db "@" - -Route19AfterBattleText1: ; 55e5a (15:5e5a) - TX_FAR _Route19AfterBattleText1 - db "@" - -Route19BattleText2: ; 55e5f (15:5e5f) - TX_FAR _Route19BattleText2 - db "@" - -Route19EndBattleText2: ; 55e64 (15:5e64) - TX_FAR _Route19EndBattleText2 - db "@" - -Route19AfterBattleText2: ; 55e69 (15:5e69) - TX_FAR _Route19AfterBattleText2 - db "@" - -Route19BattleText3: ; 55e6e (15:5e6e) - TX_FAR _Route19BattleText3 - db "@" - -Route19EndBattleText3: ; 55e73 (15:5e73) - TX_FAR _Route19EndBattleText3 - db "@" - -Route19AfterBattleText3: ; 55e78 (15:5e78) - TX_FAR _Route19AfterBattleText3 - db "@" - -Route19BattleText4: ; 55e7d (15:5e7d) - TX_FAR _Route19BattleText4 - db "@" - -Route19EndBattleText4: ; 55e82 (15:5e82) - TX_FAR _Route19EndBattleText4 - db "@" - -Route19AfterBattleText4: ; 55e87 (15:5e87) - TX_FAR _Route19AfterBattleText4 - db "@" - -Route19BattleText5: ; 55e8c (15:5e8c) - TX_FAR _Route19BattleText5 - db "@" - -Route19EndBattleText5: ; 55e91 (15:5e91) - TX_FAR _Route19EndBattleText5 - db "@" - -Route19AfterBattleText5: ; 55e96 (15:5e96) - TX_FAR _Route19AfterBattleText5 - db "@" - -Route19BattleText6: ; 55e9b (15:5e9b) - TX_FAR _Route19BattleText6 - db "@" - -Route19EndBattleText6: ; 55ea0 (15:5ea0) - TX_FAR _Route19EndBattleText6 - db "@" - -Route19AfterBattleText6: ; 55ea5 (15:5ea5) - TX_FAR _Route19AfterBattleText6 - db "@" - -Route19BattleText7: ; 55eaa (15:5eaa) - TX_FAR _Route19BattleText7 - db "@" - -Route19EndBattleText7: ; 55eaf (15:5eaf) - TX_FAR _Route19EndBattleText7 - db "@" - -Route19AfterBattleText7: ; 55eb4 (15:5eb4) - TX_FAR _Route19AfterBattleText7 - db "@" - -Route19BattleText8: ; 55eb9 (15:5eb9) - TX_FAR _Route19BattleText8 - db "@" - -Route19EndBattleText8: ; 55ebe (15:5ebe) - TX_FAR _Route19EndBattleText8 - db "@" - -Route19AfterBattleText8: ; 55ec3 (15:5ec3) - TX_FAR _Route19AfterBattleText8 - db "@" - -Route19BattleText9: ; 55ec8 (15:5ec8) - TX_FAR _Route19BattleText9 - db "@" - -Route19EndBattleText9: ; 55ecd (15:5ecd) - TX_FAR _Route19EndBattleText9 - db "@" - -Route19AfterBattleText9: ; 55ed2 (15:5ed2) - TX_FAR _Route19AfterBattleText9 - db "@" - -Route19BattleText10: ; 55ed7 (15:5ed7) - TX_FAR _Route19BattleText10 - db "@" - -Route19EndBattleText10: ; 55edc (15:5edc) - TX_FAR _Route19EndBattleText10 - db "@" - -Route19AfterBattleText10: ; 55ee1 (15:5ee1) - TX_FAR _Route19AfterBattleText10 - db "@" - -Route19Text11: ; 55ee6 (15:5ee6) - TX_FAR _Route19Text11 - db "@" - -Route21Script: ; 55eeb (15:5eeb) - call EnableAutoTextBoxDrawing - ld hl, Route21TrainerHeaders - ld de, Route21ScriptPointers - ld a, [W_ROUTE21CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROUTE21CURSCRIPT], a - ret - -Route21ScriptPointers: ; 55efe (15:5efe) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -Route21TextPointers: ; 55f04 (15:5f04) - dw Route21Text1 - dw Route21Text2 - dw Route21Text3 - dw Route21Text4 - dw Route21Text5 - dw Route21Text6 - dw Route21Text7 - dw Route21Text8 - dw Route21Text9 - -Route21TrainerHeaders: ; 55f16 (15:5f16) -Route21TrainerHeader0: ; 55f16 (15:5f16) - db $1 ; flag's bit - db ($0 << 4) ; trainer's view range - dw $d7e9 ; flag's byte - dw Route21BattleText1 ; 0x5fdd TextBeforeBattle - dw Route21AfterBattleText1 ; 0x5fe7 TextAfterBattle - dw Route21EndBattleText1 ; 0x5fe2 TextEndBattle - dw Route21EndBattleText1 ; 0x5fe2 TextEndBattle - -Route21TrainerHeader1: ; 55f22 (15:5f22) - db $2 ; flag's bit - db ($0 << 4) ; trainer's view range - dw $d7e9 ; flag's byte - dw Route21BattleText2 ; 0x5fec TextBeforeBattle - dw Route21AfterBattleText2 ; 0x5ff6 TextAfterBattle - dw Route21EndBattleText2 ; 0x5ff1 TextEndBattle - dw Route21EndBattleText2 ; 0x5ff1 TextEndBattle - -Route21TrainerHeader2: ; 55f2e (15:5f2e) - db $3 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e9 ; flag's byte - dw Route21BattleText3 ; 0x5ffb TextBeforeBattle - dw Route21AfterBattleText3 ; 0x6005 TextAfterBattle - dw Route21EndBattleText3 ; 0x6000 TextEndBattle - dw Route21EndBattleText3 ; 0x6000 TextEndBattle - -Route21TrainerHeader3: ; 55f3a (15:5f3a) - db $4 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e9 ; flag's byte - dw Route21BattleText4 ; 0x600a TextBeforeBattle - dw Route21AfterBattleText4 ; 0x6014 TextAfterBattle - dw Route21EndBattleText4 ; 0x600f TextEndBattle - dw Route21EndBattleText4 ; 0x600f TextEndBattle - -Route21TrainerHeader4: ; 55f46 (15:5f46) - db $5 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e9 ; flag's byte - dw Route21BattleText5 ; 0x6019 TextBeforeBattle - dw Route21AfterBattleText5 ; 0x6023 TextAfterBattle - dw Route21EndBattleText5 ; 0x601e TextEndBattle - dw Route21EndBattleText5 ; 0x601e TextEndBattle - -Route21TrainerHeader5: ; 55f52 (15:5f52) - db $6 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e9 ; flag's byte - dw Route21BattleText6 ; 0x6028 TextBeforeBattle - dw Route21AfterBattleText6 ; 0x6032 TextAfterBattle - dw Route21EndBattleText6 ; 0x602d TextEndBattle - dw Route21EndBattleText6 ; 0x602d TextEndBattle - -Route21TrainerHeader6: ; 55f5e (15:5f5e) - db $7 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7e9 ; flag's byte - dw Route21BattleText7 ; 0x6037 TextBeforeBattle - dw Route21AfterBattleText7 ; 0x6041 TextAfterBattle - dw Route21EndBattleText7 ; 0x603c TextEndBattle - dw Route21EndBattleText7 ; 0x603c TextEndBattle - -Route21TrainerHeader7: ; 55f6a (15:5f6a) - db $8 ; flag's bit - db ($0 << 4) ; trainer's view range - dw $d7e9 ; flag's byte - dw Route21BattleText8 ; 0x6046 TextBeforeBattle - dw Route21AfterBattleText8 ; 0x6050 TextAfterBattle - dw Route21EndBattleText8 ; 0x604b TextEndBattle - dw Route21EndBattleText8 ; 0x604b TextEndBattle - -Route21TrainerHeader8: ; 55f76 (15:5f76) - db $9 ; flag's bit - db ($0 << 4) ; trainer's view range - dw $d7e9 ; flag's byte - dw Route21BattleText9 ; 0x6055 TextBeforeBattle - dw Route21AfterBattleText9 ; 0x605f TextAfterBattle - dw Route21EndBattleText9 ; 0x605a TextEndBattle - dw Route21EndBattleText9 ; 0x605a TextEndBattle - - db $ff - -Route21Text1: ; 55f83 (15:5f83) - db $08 ; asm - ld hl, Route21TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -Route21Text2: ; 55f8d (15:5f8d) - db $08 ; asm - ld hl, Route21TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -Route21Text3: ; 55f97 (15:5f97) - db $08 ; asm - ld hl, Route21TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -Route21Text4: ; 55fa1 (15:5fa1) - db $08 ; asm - ld hl, Route21TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -Route21Text5: ; 55fab (15:5fab) - db $08 ; asm - ld hl, Route21TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -Route21Text6: ; 55fb5 (15:5fb5) - db $08 ; asm - ld hl, Route21TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -Route21Text7: ; 55fbf (15:5fbf) - db $08 ; asm - ld hl, Route21TrainerHeader6 - call TalkToTrainer - jp TextScriptEnd - -Route21Text8: ; 55fc9 (15:5fc9) - db $08 ; asm - ld hl, Route21TrainerHeader7 - call TalkToTrainer - jp TextScriptEnd - -Route21Text9: ; 55fd3 (15:5fd3) - db $08 ; asm - ld hl, Route21TrainerHeader8 - call TalkToTrainer - jp TextScriptEnd - -Route21BattleText1: ; 55fdd (15:5fdd) - TX_FAR _Route21BattleText1 - db "@" - -Route21EndBattleText1: ; 55fe2 (15:5fe2) - TX_FAR _Route21EndBattleText1 - db "@" - -Route21AfterBattleText1: ; 55fe7 (15:5fe7) - TX_FAR _Route21AfterBattleText1 - db "@" - -Route21BattleText2: ; 55fec (15:5fec) - TX_FAR _Route21BattleText2 - db "@" - -Route21EndBattleText2: ; 55ff1 (15:5ff1) - TX_FAR _Route21EndBattleText2 - db "@" - -Route21AfterBattleText2: ; 55ff6 (15:5ff6) - TX_FAR _Route21AfterBattleText2 - db "@" - -Route21BattleText3: ; 55ffb (15:5ffb) - TX_FAR _Route21BattleText3 - db "@" - -Route21EndBattleText3: ; 56000 (15:6000) - TX_FAR _Route21EndBattleText3 - db "@" - -Route21AfterBattleText3: ; 56005 (15:6005) - TX_FAR _Route21AfterBattleText3 - db "@" - -Route21BattleText4: ; 5600a (15:600a) - TX_FAR _Route21BattleText4 - db "@" - -Route21EndBattleText4: ; 5600f (15:600f) - TX_FAR _Route21EndBattleText4 - db "@" - -Route21AfterBattleText4: ; 56014 (15:6014) - TX_FAR _Route21AfterBattleText4 - db "@" - -Route21BattleText5: ; 56019 (15:6019) - TX_FAR _Route21BattleText5 - db "@" - -Route21EndBattleText5: ; 5601e (15:601e) - TX_FAR _Route21EndBattleText5 - db "@" - -Route21AfterBattleText5: ; 56023 (15:6023) - TX_FAR _Route21AfterBattleText5 - db "@" - -Route21BattleText6: ; 56028 (15:6028) - TX_FAR _Route21BattleText6 - db "@" - -Route21EndBattleText6: ; 5602d (15:602d) - TX_FAR _Route21EndBattleText6 - db "@" - -Route21AfterBattleText6: ; 56032 (15:6032) - TX_FAR _Route21AfterBattleText6 - db "@" - -Route21BattleText7: ; 56037 (15:6037) - TX_FAR _Route21BattleText7 - db "@" - -Route21EndBattleText7: ; 5603c (15:603c) - TX_FAR _Route21EndBattleText7 - db "@" - -Route21AfterBattleText7: ; 56041 (15:6041) - TX_FAR _Route21AfterBattleText7 - db "@" - -Route21BattleText8: ; 56046 (15:6046) - TX_FAR _Route21BattleText8 - db "@" - -Route21EndBattleText8: ; 5604b (15:604b) - TX_FAR _Route21EndBattleText8 - db "@" - -Route21AfterBattleText8: ; 56050 (15:6050) - TX_FAR _Route21AfterBattleText8 - db "@" - -Route21BattleText9: ; 56055 (15:6055) - TX_FAR _Route21BattleText9 - db "@" - -Route21EndBattleText9: ; 5605a (15:605a) - TX_FAR _Route21EndBattleText9 - db "@" - -Route21AfterBattleText9: ; 5605f (15:605f) - TX_FAR _Route21AfterBattleText9 - db "@" - -INCLUDE "data/mapHeaders/vermilionhouse2.asm" - -VermilionHouse2Script: ; 56070 (15:6070) - jp EnableAutoTextBoxDrawing - -VermilionHouse2TextPointers: ; 56073 (15:6073) - dw VermilionHouse2Text1 - -VermilionHouse2Text1: ; 56075 (15:6075) - db $08 ; asm - ld a, [$d728] - bit 3, a - jr nz, asm_03ef5 ; 0x5607b - ld hl, UnnamedText_560b1 - call PrintText - call YesNoChoice - ld a, [$cc26] - and a - jr nz, asm_eb1b7 ; 0x5608a - ld bc, (OLD_ROD << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, $d728 - set 3, [hl] - ld hl, UnnamedText_560b6 - jr asm_5dd95 ; 0x5609c -.BagFull - ld hl, UnnamedText_560ca - jr asm_5dd95 ; 0x560a1 -asm_eb1b7 ; 0x560a3 - ld hl, UnnamedText_560c0 - jr asm_5dd95 ; 0x560a6 -asm_03ef5 ; 0x560a8 - ld hl, UnnamedText_560c5 -asm_5dd95 ; 0x560ab - call PrintText - jp TextScriptEnd - -UnnamedText_560b1: ; 560b1 (15:60b1) - TX_FAR _UnnamedText_560b1 - db "@" - -UnnamedText_560b6: ; 560b6 (15:60b6) - TX_FAR _UnnamedText_560b6 ; 0x9c554 - db $0B - TX_FAR _UnnamedText_560bb ; 0x9c5a4 - db "@" - -UnnamedText_560c0: ; 560c0 (15:60c0) - TX_FAR _UnnamedText_560c0 - db "@" - -UnnamedText_560c5: ; 560c5 (15:60c5) - TX_FAR _UnnamedText_560c5 - db "@" - -UnnamedText_560ca: ; 560ca (15:60ca) - TX_FAR _UnnamedText_560ca - db "@" - -INCLUDE "data/mapObjects/vermilionhouse2.asm" - -INCLUDE "data/mapHeaders/celadonmart2.asm" - -CeladonMart2Script: ; 560f5 (15:60f5) - jp EnableAutoTextBoxDrawing - -CeladonMart2TextPointers: ; 560f8 (15:60f8) - dw CeladonMart2Text1 - dw CeladonMart2Text2 - dw CeladonMart2Text3 - dw CeladonMart2Text4 - dw CeladonMart2Text5 - -CeladonMart2Text3: ; 56102 (15:6102) - TX_FAR _CeladonMart2Text3 - db "@" - -CeladonMart2Text4: ; 56107 (15:6107) - TX_FAR _CeladonMart2Text4 - db "@" - -CeladonMart2Text5: ; 5610c (15:610c) - TX_FAR _CeladonMart2Text5 - db "@" - -INCLUDE "data/mapObjects/celadonmart2.asm" - -CeladonMart2Blocks: ; 56148 (15:6148) - INCBIN "maps/celadonmart2.blk" - -INCLUDE "data/mapHeaders/fuchsiahouse3.asm" - -FuchsiaHouse3Script: ; 5617c (15:617c) - jp EnableAutoTextBoxDrawing - -FuchsiaHouse3TextPointers: ; 5617f (15:617f) - dw FuchsiaHouse3Text1 - -FuchsiaHouse3Text1: ; 56181 (15:6181) - db $08 ; asm - ld a, [$d728] - bit 4, a - jr nz, .after - - ld hl, UnnamedText_561bd - call PrintText - - call YesNoChoice - ld a, [$cc26] - and a - jr nz, .refused - - ld bc, (GOOD_ROD << 8) | 1 - call GiveItem - jr nc, .full - - ld hl, $d728 - set 4, [hl] - - ld hl, UnnamedText_561c2 - jr .talk - -.full - ld hl, UnnamedText_5621c - jr .talk - -.refused - ld hl, UnnamedText_56212 - jr .talk - -.after - ld hl, UnnamedText_56217 - -.talk - call PrintText - jp TextScriptEnd - -UnnamedText_561bd: ; 561bd (15:61bd) - TX_FAR _UnnamedText_561bd - db "@" - -UnnamedText_561c2: ; 561c2 (15:61c2) - TX_FAR _UnnamedText_561c2 ; 0xa06e8 - db $0B - db "@" - -UnnamedText_561c8: ; 561c8 - para "つり こそ" - line "おとこの ロマン だ!" - - para "へぼいつりざおは" - line "コイキングしか つれ なんだが" - line "この いいつりざおなら" - line "もっと いいもんが つれるんじゃ!" - done - -UnnamedText_56212: ; 56212 (15:6212) - TX_FAR _UnnamedText_56212 - db "@" - -UnnamedText_56217: ; 56217 (15:6217) - TX_FAR _UnnamedText_56217 - db "@" - -UnnamedText_5621c: ; 5621c (15:621c) - TX_FAR _UnnamedText_5621c - db "@" - -INCLUDE "data/mapObjects/fuchsiahouse3.asm" - -INCLUDE "data/mapHeaders/daycarem.asm" - -DayCareMScript: ; 5624f (15:624f) - jp EnableAutoTextBoxDrawing - -DayCareMTextPointers: ; 56252 (15:6252) - dw DayCareMText1 - -DayCareMText1: ; 56254 (15:6254) - db $8 - call SaveScreenTilesToBuffer2 - ld a, [W_DAYCARE_IN_USE] - and a - jp nz, Func_562e1 - ld hl, UnnamedText_5640f - call PrintText - call YesNoChoice - ld a, [$cc26] - and a - ld hl, UnnamedText_5643b - jp nz, Func_56409 - ld a, [$d163] - dec a - ld hl, UnnamedText_56445 - jp z, Func_56409 - ld hl, UnnamedText_56414 - call PrintText - xor a - ld [$cfcb], a - ld [$d07d], a - ld [$cc35], a - call DisplayPartyMenu - push af - call GBPalWhiteOutWithDelay3 - call Func_3dbe - call LoadGBPal - pop af - ld hl, UnnamedText_56437 - jp c, Func_56409 - ld hl, Func_2171b - ld b, BANK(Func_2171b) - call Bankswitch - ld hl, UnnamedText_5644a - jp c, Func_56409 - xor a - ld [$cc2b], a - ld a, [wWhichPokemon] - ld hl, $d2b5 - call GetPartyMonName - ld hl, UnnamedText_56419 - call PrintText - ld a, $1 - ld [W_DAYCARE_IN_USE], a - ld a, $3 - ld [$cf95], a - call Func_3a68 - xor a - ld [$cf95], a - call RemovePokemon - ld a, [$cf91] - call PlayCry - ld hl, UnnamedText_5641e - jp Func_56409 - -Func_562e1: ; 562e1 (15:62e1) - xor a - ld hl, W_DAYCAREMONNAME - call GetPartyMonName - ld a, $3 - ld [$cc49], a - call LoadMonData - ld hl, Func_58f43 - ld b, BANK(Func_58f43) - call Bankswitch - ld a, d - cp $64 - jr c, .asm_56315 - ld d, $64 - ld hl, CalcExperience - ld b, BANK(CalcExperience) - call Bankswitch - ld hl, $da6d - ld a, [H_NUMTOPRINT] - ld [hli], a - ld a, [$ff97] - ld [hli], a - ld a, [$ff98] - ld [hl], a - ld d, $64 - -.asm_56315 - xor a - ld [wTrainerEngageDistance], a - ld hl, $da62 - ld a, [hl] - ld [wTrainerSpriteOffset], a - cp d - ld [hl], d - ld hl, UnnamedText_56432 - jr z, .asm_56333 - ld a, [wTrainerSpriteOffset] - ld b, a - ld a, d - sub b - ld [wTrainerEngageDistance], a - ld hl, UnnamedText_56423 - -.asm_56333 - call PrintText - ld a, [W_NUMINPARTY] - cp $6 - ld hl, UnnamedText_56440 - jp z, .asm_56403 - ld de, wTrainerFacingDirection - xor a - ld [de], a - inc de - ld [de], a - ld hl, wTrainerScreenX - ld a, $1 - ld [hli], a - ld [hl], $0 - ld a, [wTrainerEngageDistance] - inc a - ld b, a - ld c, $2 -.asm_56357 - push hl - push de - push bc - ld a, $b - call Predef - pop bc - pop de - pop hl - dec b - jr nz, .asm_56357 - ld hl, UnnamedText_56428 - call PrintText - ld a, $13 - ld [$d125], a - call DisplayTextBoxID - call YesNoChoice - ld hl, UnnamedText_56437 - ld a, [wCurrentMenuItem] - and a - jp nz, .asm_56403 - ld hl, wTrainerFacingDirection - ld [$ff9f], a - ld a, [hli] - ld [$ffa0], a - ld a, [hl] - ld [$ffa1], a - call HasEnoughMoney - jr nc, .asm_56396 - ld hl, UnnamedText_56454 - jp .asm_56403 - -.asm_56396 - xor a - ld [W_DAYCARE_IN_USE], a - ld hl, wTrainerEngageDistance - ld [hli], a - inc hl - ld de, $d349 - ld c, $3 - ld a, $c - call Predef - ld a, (SFX_02_5a - SFX_Headers_02) / 3 - call PlaySoundWaitForCurrent - ld a, $13 - ld [$d125], a - call DisplayTextBoxID - ld hl, UnnamedText_5644f - call PrintText - ld a, $2 - ld [$cf95], a - call Func_3a68 - ld a, [W_DAYCAREMONDATA] - ld [$cf91], a - ld a, [W_NUMINPARTY] - dec a - push af - ld bc, $002c - push bc - ld hl, W_PARTYMON1_MOVE1 - call AddNTimes - ld d, h - ld e, l - ld a, $1 - ld [wHPBarMaxHP], a - ld a, $3e - call Predef - pop bc - pop af - ld hl, W_PARTYMON1_HP - call AddNTimes - ld d, h - ld e, l - ld bc, $0021 - add hl, bc - ld a, [hli] - ld [de], a - inc de - ld a, [hl] - ld [de], a - ld a, [$cf91] - call PlayCry - ld hl, UnnamedText_5642d - jr Func_56409 - -.asm_56403 - ld a, [wTrainerSpriteOffset] - ld [$da62], a - -Func_56409: ; 56409 (15:6409) - call PrintText - jp TextScriptEnd - -UnnamedText_5640f: ; 5640f (15:640f) - TX_FAR _UnnamedText_5640f - db "@" - -UnnamedText_56414: ; 56414 (15:6414) - TX_FAR _UnnamedText_56414 - db "@" - -UnnamedText_56419: ; 56419 (15:6419) - TX_FAR _UnnamedText_56419 - db "@" - -UnnamedText_5641e: ; 5641e (15:641e) - TX_FAR _UnnamedText_5641e - db "@" - -UnnamedText_56423: ; 56423 (15:6423) - TX_FAR _UnnamedText_56423 - db "@" - -UnnamedText_56428: ; 56428 (15:6428) - TX_FAR _UnnamedText_56428 - db "@" - -UnnamedText_5642d: ; 5642d (15:642d) - TX_FAR _UnnamedText_5642d - db "@" - -UnnamedText_56432: ; 56432 (15:6432) - TX_FAR _UnnamedText_56432 - db "@" - -UnnamedText_56437: ; 56437 (15:6437) - TX_FAR _UnnamedText_56437 ; 0x8c000 -UnnamedText_5643b: ; 5643b (15:643b) - TX_FAR _UnnamedText_5643b ; 0x8c013 - db "@" - -UnnamedText_56440: ; 56440 (15:6440) - TX_FAR _UnnamedText_56440 - db "@" - -UnnamedText_56445: ; 56445 (15:6445) - TX_FAR _UnnamedText_56445 - db "@" - -UnnamedText_5644a: ; 5644a (15:644a) - TX_FAR _UnnamedText_5644a - db "@" - -UnnamedText_5644f: ; 5644f (15:644f) - TX_FAR _UnnamedText_5644f - db "@" - -UnnamedText_56454: ; 56454 (15:6454) - TX_FAR _UnnamedText_56454 - db "@" - -INCLUDE "data/mapObjects/daycarem.asm" - -INCLUDE "data/mapHeaders/route12house.asm" - -Route12HouseScript: ; 5647f (15:647f) - jp EnableAutoTextBoxDrawing - -Route12HouseTextPointers: ; 56482 (15:6482) - dw Route12HouseText1 - -Route12HouseText1: ; 56484 (15:6484) - db $08 ; asm - ld a, [$d728] - bit 5, a - jr nz, asm_b4cad ; 0x5648a - ld hl, UnnamedText_564c0 - call PrintText - call YesNoChoice - ld a, [$cc26] - and a - jr nz, asm_a2d76 ; 0x56499 - ld bc, (SUPER_ROD << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, $d728 - set 5, [hl] - ld hl, UnnamedText_564c5 - jr asm_df984 ; 0x564ab -.BagFull - ld hl, UnnamedText_564d9 - jr asm_df984 ; 0x564b0 -asm_a2d76 ; 0x564b2 - ld hl, UnnamedText_564cf - jr asm_df984 ; 0x564b5 -asm_b4cad ; 0x564b7 - ld hl, UnnamedText_564d4 -asm_df984 ; 0x564ba - call PrintText - jp TextScriptEnd - -UnnamedText_564c0: ; 564c0 (15:64c0) - TX_FAR _UnnamedText_564c0 - db "@" - -UnnamedText_564c5: ; 564c5 (15:64c5) - TX_FAR _UnnamedText_564c5 ; 0x8ca00 - db $0B - TX_FAR _UnnamedText_564ca ; 0x8ca4f - db "@" - -UnnamedText_564cf: ; 564cf (15:64cf) - TX_FAR _UnnamedText_564cf - db "@" - -UnnamedText_564d4: ; 564d4 (15:64d4) - TX_FAR _UnnamedText_564d4 - db "@" - -UnnamedText_564d9: ; 564d9 (15:64d9) - TX_FAR _UnnamedText_564d9 - db "@" - -INCLUDE "data/mapObjects/route12house.asm" - -INCLUDE "data/mapHeaders/silphco8.asm" - -SilphCo8Script: ; 56504 (15:6504) - call SilphCo8Script_5651a - call EnableAutoTextBoxDrawing - ld hl, SilphCo8TrainerHeader0 - ld de, SilphCo8ScriptPointers - ld a, [W_SILPHCO8CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_SILPHCO8CURSCRIPT], a - ret - -SilphCo8Script_5651a: ; 5651a (15:651a) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - ret z - ld hl, DataTable_5653e ; $653e - call Func_56541 - call Func_5656d - ld a, [$d832] - bit 0, a - ret nz - ld a, $5f - ld [$d09f], a - ld bc, $403 - ld a, $17 - jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) - -DataTable_5653e: ; 5653e (15:653e) - db $04,$03,$FF - -Func_56541: ; 56541 (15:6541) - push hl - ld hl, $d73f - ld a, [hli] - ld b, a - ld a, [hl] - ld c, a - xor a - ld [$ffe0], a - pop hl -.asm_5654d - ld a, [hli] - cp $ff - jr z, .asm_56569 - push hl - ld hl, $ffe0 - inc [hl] - pop hl - cp b - jr z, .asm_5655e - inc hl - jr .asm_5654d -.asm_5655e - ld a, [hli] - cp c - jr nz, .asm_5654d - ld hl, $d73f - xor a - ld [hli], a - ld [hl], a - ret -.asm_56569 - xor a - ld [$ffe0], a - ret - -Func_5656d: ; 5656d (15:656d) - ld a, [$ffe0] - and a - ret z - ld hl, $d832 - set 0, [hl] - ret - -SilphCo8ScriptPointers: ; 56577 (15:6577) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -SilphCo8TextPointers: ; 5657d (15:657d) - dw SilphCo8Text1 - dw SilphCo8Text2 - dw SilphCo8Text3 - dw SilphCo8Text4 - -SilphCo8TrainerHeaders: ; 56585 (15:6585) -SilphCo8TrainerHeader0: ; 56585 (15:6585) - db $2 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d831 ; flag's byte - dw SilphCo8BattleText1 ; 0x65e6 TextBeforeBattle - dw SilphCo8AfterBattleText1 ; 0x65f0 TextAfterBattle - dw SilphCo8EndBattleText1 ; 0x65eb TextEndBattle - dw SilphCo8EndBattleText1 ; 0x65eb TextEndBattle - -SilphCo8TrainerHeader1: ; 56591 (15:6591) - db $3 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d831 ; flag's byte - dw SilphCo8BattleText2 ; 0x65f5 TextBeforeBattle - dw SilphCo8AfterBattleText2 ; 0x65ff TextAfterBattle - dw SilphCo8EndBattleText2 ; 0x65fa TextEndBattle - dw SilphCo8EndBattleText2 ; 0x65fa TextEndBattle - -SilphCo8TrainerHeader2: ; 5659d (15:659d) - db $4 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d831 ; flag's byte - dw SilphCo8BattleText3 ; 0x6604 TextBeforeBattle - dw SilphCo8AfterBattleText3 ; 0x660e TextAfterBattle - dw SilphCo8EndBattleText3 ; 0x6609 TextEndBattle - dw SilphCo8EndBattleText3 ; 0x6609 TextEndBattle - - db $ff - -SilphCo8Text1: ; 565aa (15:65aa) - db $08 ; asm - ld a, [$d838] - bit 7, a - ld hl, UnnamedText_565c3 - jr nz, asm_a468f ; 0x565b3 - ld hl, UnnamedText_565be -asm_a468f ; 0x565b8 - call PrintText - jp TextScriptEnd - -UnnamedText_565be: ; 565be (15:65be) - TX_FAR _UnnamedText_565be - db "@" - -UnnamedText_565c3: ; 565c3 (15:65c3) - TX_FAR _UnnamedText_565c3 - db "@" - -SilphCo8Text2: ; 565c8 (15:65c8) - db $08 ; asm - ld hl, SilphCo8TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -SilphCo8Text3: ; 565d2 (15:65d2) - db $08 ; asm - ld hl, SilphCo8TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -SilphCo8Text4: ; 565dc (15:65dc) - db $08 ; asm - ld hl, SilphCo8TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -SilphCo8BattleText1: ; 565e6 (15:65e6) - TX_FAR _SilphCo8BattleText1 - db "@" - -SilphCo8EndBattleText1: ; 565eb (15:65eb) - TX_FAR _SilphCo8EndBattleText1 - db "@" - -SilphCo8AfterBattleText1: ; 565f0 (15:65f0) - TX_FAR _SilphCo8AfterBattleText1 - db "@" - -SilphCo8BattleText2: ; 565f5 (15:65f5) - TX_FAR _SilphCo8BattleText2 - db "@" - -SilphCo8EndBattleText2: ; 565fa (15:65fa) - TX_FAR _SilphCo8EndBattleText2 - db "@" - -SilphCo8AfterBattleText2: ; 565ff (15:65ff) - TX_FAR _SilphCo8AfterBattleText2 - db "@" - -SilphCo8BattleText3: ; 56604 (15:6604) - TX_FAR _SilphCo8BattleText3 - db "@" - -SilphCo8EndBattleText3: ; 56609 (15:6609) - TX_FAR _SilphCo8EndBattleText3 - db "@" - -SilphCo8AfterBattleText3: ; 5660e (15:660e) - TX_FAR _SilphCo8AfterBattleText3 - db "@" - -INCLUDE "data/mapObjects/silphco8.asm" - -SilphCo8Blocks: ; 5666d (15:666d) - INCBIN "maps/silphco8.blk" - -DisplayDiploma: ; 566e2 (15:66e2) - call SaveScreenTilesToBuffer2 - call GBPalWhiteOutWithDelay3 - call ClearScreen - xor a - ld [$cfcb], a - ld hl, $d730 - set 6, [hl] - call DisableLCD - ld hl, CircleTile ; $7d88 - ld de, $9700 - ld bc, $0010 - ld a, BANK(CircleTile) - call FarCopyData2 - ld hl, wTileMap - ld bc, $1012 - ld a, $27 - call Predef - ld hl, DiplomaTextPointersAndCoords ; $6784 - ld c, $5 -.asm_56715 - push bc - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld a, [hli] - push hl - ld h, [hl] - ld l, a - call PlaceString - pop hl - inc hl - pop bc - dec c - jr nz, .asm_56715 ; 0x56725 $ee - FuncCoord 10, 4 ; $c3fa - ld hl, Coord - ld de, W_PLAYERNAME - call PlaceString - ld b, BANK(Func_44dd) - ld hl, Func_44dd - call Bankswitch - ld hl, $c301 - ld bc, $8028 -.asm_5673e - ld a, [hl] - add $21 - ld [hli], a - inc hl - ld a, b - ld [hli], a - inc hl - dec c - jr nz, .asm_5673e ; 0x56747 $f5 - call EnableLCD - ld b, BANK(LoadTrainerInfoTextBoxTiles) - ld hl, LoadTrainerInfoTextBoxTiles - call Bankswitch - ld b, $8 - call GoPAL_SET - call Delay3 - call GBPalNormal - ld a, $90 - ld [$ff48], a - call WaitForTextScrollButtonPress - ld hl, $d730 - res 6, [hl] - call GBPalWhiteOutWithDelay3 - call Func_3dbe - call Delay3 - jp GBPalNormal - -Func_56777: ; 56777 (15:6777) - ld hl, W_PLAYERNAME - ld bc, $ff00 -.asm_5677d - ld a, [hli] - cp $50 - ret z - dec c - jr .asm_5677d ; 0x56782 $f9 - -DiplomaTextPointersAndCoords: ; 56784 (15:6784) - dw DiplomaText - dw $c3cd - dw DiplomaPlayer - dw $c3f3 - dw DiplomaEmptyText - dw $c3ff - dw DiplomaCongrats - dw $c41a - dw DiplomaGameFreak - dw $c4e9 - -DiplomaText: - db $70,"Diploma",$70,"@" - -DiplomaPlayer: - db "Player@" - -DiplomaEmptyText: - db "@" - -DiplomaCongrats: - db "Congrats! This" - next "diploma certifies" - next "that you have" - next "completed your" - next "#DEX.@" - -DiplomaGameFreak: - db "GAME FREAK@" - -Func_567f9: ; 567f9 (15:67f9) - ld hl, wSpriteStateData1 - ld de, $4 - ld a, [$cf13] - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call Func_56903 - ld a, [hli] - ld [$ffeb], a - inc hl - ld a, [hl] - ld [$ffec], a - ld de, $fe - add hl, de - ld a, [hli] - ld [$ffed], a - ld a, [hl] - ld [$ffee], a - ret - -Func_56819: ; 56819 (15:6819) - ld hl, wSpriteStateData1 - ld de, $0004 - ld a, [$cf13] - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call Func_56903 - ld a, [hli] - ld [$d130], a - inc hl - ld a, [hl] - ld [$d131], a - ld de, $00fe - add hl, de - ld a, [hli] - ld [$d132], a - ld a, [hl] - ld [$d133], a - ret - -Func_5683d: ; 5683d (15:683d) - ld hl, wSpriteStateData1 - ld de, $4 - ld a, [$cf13] - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call Func_56903 - ld a, [$ffeb] - ld [hli], a - inc hl - ld a, [$ffec] - ld [hl], a - ld de, $fe - add hl, de - ld a, [$ffed] - ld [hli], a - ld a, [$ffee] - ld [hl], a - ret - -Func_5685d: ; 5685d (15:685d) - ld hl, wSpriteStateData1 - ld de, $0004 - ld a, [$cf13] - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call Func_56903 - ld a, [$d130] - ld [hli], a - inc hl - ld a, [$d131] - ld [hl], a - ld de, $00fe - add hl, de - ld a, [$d132] - ld [hli], a - ld a, [$d133] - ld [hl], a - ret - -TrainerWalkUpToPlayer: ; 56881 (15:6881) - ld a, [$cf13] - swap a - ld [wTrainerSpriteOffset], a ; $cd3d - call ReadTrainerScreenPosition - ld a, [wTrainerFacingDirection] - and a - jr z, .facingDown - cp $4 - jr z, .facingUp - cp $8 - jr z, .facingLeft - jr .facingRight -.facingDown - ld a, [wTrainerScreenY] - ld b, a - ld a, $3c ; (fixed) player screen Y pos - call CalcDifference - cp $10 ; trainer is right above player - ret z - swap a - dec a - ld c, a ; bc = steps yet to go to reach player - xor a - ld b, a ; a = direction to go to - jr .writeWalkScript -.facingUp - ld a, [wTrainerScreenY] - ld b, a - ld a, $3c ; (fixed) player screen Y pos - call CalcDifference - cp $10 ; trainer is right below player - ret z - swap a - dec a - ld c, a ; bc = steps yet to go to reach player - ld b, $0 - ld a, $40 ; a = direction to go to - jr .writeWalkScript -.facingRight - ld a, [wTrainerScreenX] - ld b, a - ld a, $40 ; (fixed) player screen X pos - call CalcDifference - cp $10 ; trainer is directly left of player - ret z - swap a - dec a - ld c, a ; bc = steps yet to go to reach player - ld b, $0 - ld a, $c0 ; a = direction to go to - jr .writeWalkScript -.facingLeft - ld a, [$cd41] - ld b, a - ld a, $40 ; (fixed) player screen X pos - call CalcDifference - cp $10 ; trainer is directly right of player - ret z - swap a - dec a - ld c, a ; bc = steps yet to go to reach player - ld b, $0 - ld a, $80 ; a = direction to go to -.writeWalkScript - ld hl, $cc97 - ld de, $cc97 - call FillMemory ; write the necessary steps to reach player - ld [hl], $ff ; write end of list sentinel - ld a, [$cf13] - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - jp MoveSprite_ - -Func_56903: ; 56903 (15:6903) - push de - add hl, de - ld a, [H_DOWNARROWBLINKCNT2] ; $ff8c - swap a - ld d, $0 - ld e, a - add hl, de - pop de - ret - -; tests if this trainer is in the right position to engage the player and do so if she is. -CheckEngagePlayer: ; 5690f (15:690f) - push hl - push de - ld a, [wTrainerSpriteOffset] ; $cd3d - add $2 - ld d, $0 - ld e, a - ld hl, wSpriteStateData1 - add hl, de - ld a, [hl] ; c1x2: sprite image index - sub $ff - jr nz, .spriteOnScreen ; test if sprite is on screen - jp .noEngage -.spriteOnScreen - ld a, [wTrainerSpriteOffset] ; $cd3d - add $9 - ld d, $0 - ld e, a - ld hl, wSpriteStateData1 - add hl, de - ld a, [hl] ; c1x9: facing direction - ld [$cd3f], a - call ReadTrainerScreenPosition - ld a, [$cd40] ; sprite screen Y pos - ld b, a - ld a, $3c - cp b - jr z, .linedUpY - ld a, [$cd41] ; sprite screen X pos - ld b, a - ld a, $40 - cp b - jr z, .linedUpX - xor a - jp .noEngage -.linedUpY - ld a, [$cd41] ; sprite screen X pos - ld b, a - ld a, $40 ; (fixed) player X position - call CalcDifference ; calc distance - jr z, .noEngage ; exact same position as player - call CheckSpriteCanSeePlayer - jr c, .engage - xor a - jr .noEngage -.linedUpX - ld a, [$cd40] ; sprite screen Y pos - ld b, a - ld a, $3c ; (fixed) player Y position - call CalcDifference ; calc distance - jr z, .noEngage ; exact same position as player - call CheckSpriteCanSeePlayer - jr c, .engage - xor a - jp .noEngage -.engage - call CheckPlayerIsInFrontOfSprite - ld a, [wTrainerSpriteOffset] ; $cd3d - and a - jr z, .noEngage - ld hl, wFlags_0xcd60 - set 0, [hl] - call EngageMapTrainer - ld a, $ff -.noEngage: ; 56988 (15:6988) - ld [wTrainerSpriteOffset], a ; $cd3d - pop de - pop hl - ret - -; reads trainer's Y position to $cd40 and X position to $cd41 -ReadTrainerScreenPosition: ; 5698e (15:698e) - ld a, [wTrainerSpriteOffset] ; $cd3d - add $4 - ld d, $0 - ld e, a - ld hl, wSpriteStateData1 - add hl, de - ld a, [hl] - ld [$cd40], a - ld a, [wTrainerSpriteOffset] ; $cd3d - add $6 - ld d, $0 - ld e, a - ld hl, wSpriteStateData1 - add hl, de - ld a, [hl] - ld [$cd41], a - ret - -; checks if the sprite is properly lined up with the player with respect to the direction it's looking. Also checks the distance between player and sprite -; note that this does not necessarily mean the sprite is seeing the player, he could be behind it's back -; a: distance player to sprite -CheckSpriteCanSeePlayer: ; 569af (15:69af) - ld b, a - ld a, [wTrainerEngageDistance] ; sprite line of sight (engage distance) - cp b - jr nc, .checkIfLinedUp - jr .notInLine ; player too far away -.checkIfLinedUp - ld a, [$cd3f] ; sprite facing direction - cp $0 ; down - jr z, .checkXCoord - cp $4 ; up - jr z, .checkXCoord - cp $8 ; left - jr z, .checkYCoord - cp $c ; right - jr z, .checkYCoord - jr .notInLine -.checkXCoord - ld a, [$cd41] ; sprite screen X position - ld b, a - cp $40 - jr z, .inLine - jr .notInLine -.checkYCoord - ld a, [$cd40] ; sprite screen Y position - ld b, a - cp $3c - jr nz, .notInLine -.inLine - scf - ret -.notInLine - and a - ret - -; tests if the player is in front of the sprite (rather than behind it) -CheckPlayerIsInFrontOfSprite: ; 569e3 (15:69e3) - ld a, [W_CURMAP] ; $d35e - cp POWER_PLANT - jp z, .engage ; XXX not sure why bypass this for power plant (maybe to get voltorb fake items to work?) - ld a, [wTrainerSpriteOffset] ; $cd3d - add $4 - ld d, $0 - ld e, a - ld hl, wSpriteStateData1 - add hl, de - ld a, [hl] ; c1x4 (sprite screen Y pos) - cp $fc - jr nz, .notOnTopmostTile ; special case if sprite is on topmost tile (Y = $fc (-4)), make it come down a block - ld a, $c -.notOnTopmostTile - ld [$cd40], a - ld a, [wTrainerSpriteOffset] ; $cd3d - add $6 - ld d, $0 - ld e, a - ld hl, wSpriteStateData1 - add hl, de - ld a, [hl] ; c1x6 (sprite screen X pos) - ld [$cd41], a - ld a, [$cd3f] ; facing direction - cp $0 - jr nz, .notFacingDown - ld a, [$cd40] ; sprite screen Y pos - cp $3c - jr c, .engage ; sprite above player - jr .noEngage ; sprite below player -.notFacingDown - cp $4 - jr nz, .notFacingUp - ld a, [$cd40] ; sprite screen Y pos - cp $3c - jr nc, .engage ; sprite below player - jr .noEngage ; sprite above player -.notFacingUp - cp $8 - jr nz, .notFacingLeft - ld a, [$cd41] ; sprite screen X pos - cp $40 - jr nc, .engage ; sprite right of player - jr .noEngage ; sprite left of player -.notFacingLeft - ld a, [$cd41] ; sprite screen X pos - cp $40 - jr nc, .noEngage ; sprite right of player -.engage - ld a, $ff - jr .done -.noEngage - xor a -.done - ld [wTrainerSpriteOffset], a ; $cd3d - ret - -SECTION "bank16",ROMX,BANK[$16] - -INCLUDE "data/mapHeaders/route6.asm" - -INCLUDE "data/mapObjects/route6.asm" - -Route6Blocks: ; 58079 (16:4079) - INCBIN "maps/route6.blk" - -INCLUDE "data/mapHeaders/route8.asm" - -INCLUDE "data/mapObjects/route8.asm" - -Route8Blocks: ; 581c6 (16:41c6) - INCBIN "maps/route8.blk" - -INCLUDE "data/mapHeaders/route10.asm" - -INCLUDE "data/mapObjects/route10.asm" - -Route10Blocks: ; 58356 (16:4356) - INCBIN "maps/route10.blk" - -INCLUDE "data/mapHeaders/route11.asm" - -INCLUDE "data/mapObjects/route11.asm" - -Route11Blocks: ; 5855f (16:455f) - INCBIN "maps/route11.blk" - -INCLUDE "data/mapHeaders/route12.asm" - -INCLUDE "data/mapObjects/route12.asm" - -Route12Blocks: ; 58710 (16:4710) - INCBIN "maps/route12.blk" - -INCLUDE "data/mapHeaders/route15.asm" - -INCLUDE "data/mapObjects/route15.asm" - -Route15Blocks: ; 589cc (16:49cc) - INCBIN "maps/route15.blk" - -INCLUDE "data/mapHeaders/route16.asm" - -INCLUDE "data/mapObjects/route16.asm" - -Route16Blocks: ; 58b84 (16:4b84) - INCBIN "maps/route16.blk" - -INCLUDE "data/mapHeaders/route18.asm" - -INCLUDE "data/mapObjects/route18.asm" - -Route18Blocks: ; 58c9c (16:4c9c) - INCBIN "maps/route18.blk" - - INCBIN "maps/unusedblocks58d7d.blk" - -Func_58d99: ; 58d99 (16:4d99) - ld a, [W_ISINBATTLE] ; $d057 - dec a - jr nz, .asm_58dbe - ld a, [W_CURMAP] ; $d35e - cp POKEMONTOWER_3 - jr c, .asm_58daa - cp LAVENDER_HOUSE_1 - jr c, .asm_58dd8 -.asm_58daa - ld a, [W_ENEMYMONID] - call PlayCry - ld hl, WildMonAppearedText - ld a, [W_MOVEMISSED] ; $d05f - and a - jr z, .asm_58dbc - ld hl, HookedMonAttackedText -.asm_58dbc - jr .asm_58dc9 -.asm_58dbe - call Func_58e29 - ld c, $14 - call DelayFrames - ld hl, TrainerWantsToFightText -.asm_58dc9 - push hl - ld hl, DrawAllPokeballs - ld b, BANK(DrawAllPokeballs) - call Bankswitch - pop hl - call PrintText - jr asm_58e3a -.asm_58dd8 - ld b, SILPH_SCOPE - call IsItemInBag - ld a, [W_ENEMYMONID] - ld [$cf91], a - cp MAROWAK - jr z, .asm_58e03 - ld a, b - and a - jr z, .asm_58df5 - ld hl, Func_3eb01 - ld b, BANK(Func_3eb01) - call Bankswitch - jr .asm_58daa -.asm_58df5 - ld hl, EnemyAppearedText - call PrintText - ld hl, GhostCantBeIDdText - call PrintText - jr asm_58e3a -.asm_58e03 - ld a, b - and a - jr z, .asm_58df5 - ld hl, EnemyAppearedText - call PrintText - ld hl, UnveiledGhostText - call PrintText - ld hl, Func_3eb01 - ld b, BANK(Func_3eb01) - call Bankswitch - ld hl, Func_708ca - ld b, BANK(Func_708ca) - call Bankswitch - ld hl, WildMonAppearedText - call PrintText - -Func_58e29: ; 58e29 (16:4e29) - xor a - ld [$c0f1], a - ld a, $80 - ld [$c0f2], a - ld a, (SFX_08_77 - SFX_Headers_08) / 3 - call PlaySound - jp WaitForSoundToFinish -asm_58e3a: ; 58e3a (16:4e3a) - ret - -WildMonAppearedText: ; 58e3b (16:4e3b) - TX_FAR _WildMonAppearedText - db "@" - -HookedMonAttackedText: ; 58e40 (16:4e40) - TX_FAR _HookedMonAttackedText - db "@" - -EnemyAppearedText: ; 58e45 (16:4e45) - TX_FAR _EnemyAppearedText - db "@" - -TrainerWantsToFightText: ; 58e4a (16:4e4a) - TX_FAR _TrainerWantsToFightText - db "@" - -UnveiledGhostText: ; 58e4f (16:4e4f) - TX_FAR _UnveiledGhostText - db "@" - -GhostCantBeIDdText: ; 58e54 (16:4e54) - TX_FAR _GhostCantBeIDdText - db "@" - -Func_58e59: ; 58e59 (16:4e59) - ld hl, W_ENEMYMONCURHP ; $cfe6 - ld a, [hli] - or [hl] - ld hl, GoText - jr z, .asm_58eab - xor a - ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) - ld hl, W_ENEMYMONCURHP ; $cfe6 - ld a, [hli] - ld [$cce3], a - ld [$ff97], a - ld a, [hl] - ld [$cce4], a - ld [$ff98], a - ld a, $19 - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - call Multiply - ld hl, W_ENEMYMONMAXHP ; $cff4 - ld a, [hli] - ld b, [hl] - srl a - rr b - srl a - rr b - ld a, b - ld b, $4 - ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) - call Divide - ld a, [$ff98] - ld hl, GoText - cp $46 - jr nc, .asm_58eab - ld hl, DoItText - cp $28 - jr nc, .asm_58eab - ld hl, GetmText - cp $a - jr nc, .asm_58eab - ld hl, EnemysWeakText -.asm_58eab - jp PrintText - -GoText: ; 58eae (16:4eae) - TX_FAR _GoText - db $08 ; asm - jr Func_58ec8 - -DoItText: ; 58eb5 (16:4eb5) - TX_FAR _DoItText - db $08 ; asm - jr Func_58ec8 - -GetmText: ; 58ebc (16:4ebc) - TX_FAR _GetmText - db $08 ; asm - jr Func_58ec8 - -EnemysWeakText: ; 58ec3 (16:4ec3) - TX_FAR _EnemysWeakText - db $08 ; asm - -Func_58ec8 - ld hl, PlayerMon1Text - ret - -PlayerMon1Text: ; 58ecc (16:4ecc) - TX_FAR _PlayerMon1Text - db "@" - -Func_58ed1: ; 58ed1 (16:4ed1) - ld hl, PlayerMon2Text - jp PrintText - -PlayerMon2Text: ; 58ed7 (16:4ed7) - TX_FAR _PlayerMon2Text - db $08 ; asm - push de - push bc - ld hl, $cfe7 - ld de, $cce4 - ld b, [hl] - dec hl - ld a, [de] - sub b - ld [$ff98], a - dec de - ld b, [hl] - ld a, [de] - sbc b - ld [$ff97], a - ld a, $19 - ld [H_POWEROFTEN], a - call Multiply - ld hl, W_ENEMYMONMAXHP - ld a, [hli] - ld b, [hl] - srl a - rr b - srl a - rr b - ld a, b - ld b, $4 - ld [H_POWEROFTEN], a - call Divide - pop bc - pop de - ld a, [$ff98] - ld hl, EnoughText - and a - ret z - ld hl, ComeBackText - cp $1e - ret c - ld hl, OKExclamationText - cp $46 - ret c - ld hl, GoodText - ret - -EnoughText: ; 58f25 (16:4f25) - TX_FAR _EnoughText - db $08 ; asm - jr Func_58f3a - -OKExclamationText: ; 58f2c (16:4f2c) - TX_FAR _OKExclamationText - db $08 ; asm - jr Func_58f3a - -GoodText: ; 58f33 (16:4f33) - TX_FAR _GoodText - db $08 ; asm - jr Func_58f3a - -Func_58f3a: ; 58f3a (16:4f3a) - ld hl, ComeBackText - ret - -ComeBackText: ; 58f3e (16:4f3e) - TX_FAR _ComeBackText - db "@" - -Func_58f43: ; 58f43 (16:4f43) - ld a, [$cf98] - ld [$d0b5], a - call GetMonHeader - ld d, $1 -.asm_58f4e - inc d - call CalcExperience - push hl - ld hl, $cfa8 - ld a, [$ff98] - ld c, a - ld a, [hld] - sub c - ld a, [$ff97] - ld c, a - ld a, [hld] - sbc c - ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND) - ld c, a - ld a, [hl] - sbc c - pop hl - jr nc, .asm_58f4e - dec d - ret - -; calculates the amount of experience needed for level d -CalcExperience: ; 58f6a (16:4f6a) - ld a, [W_MONHGROWTHRATE] - add a - add a - ld c, a - ld b, $0 - ld hl, GrowthRateTable - add hl, bc - call CalcDSquared - ld a, d - ld [H_MULTIPLIER], a ; $ff99 - call Multiply - ld a, [hl] - and $f0 - swap a - ld [H_MULTIPLIER], a ; $ff99 - call Multiply - ld a, [hli] - and $f - ld [H_DIVISOR], a ; $ff99 - ld b, $4 - call Divide - ld a, [H_MULTIPLICAND] ; $ff96 (aliases: H_NUMTOPRINT) - push af - ld a, [H_MULTIPLICAND+1] - push af - ld a, [H_MULTIPLICAND+2] - push af - call CalcDSquared - ld a, [hl] - and $7f - ld [H_MULTIPLIER], a ; $ff99 - call Multiply - ld a, [H_MULTIPLICAND] ; $ff96 (aliases: H_NUMTOPRINT) - push af - ld a, [H_MULTIPLICAND+1] - push af - ld a, [H_MULTIPLICAND+2] - push af - ld a, [hli] - push af - xor a - ld [H_MULTIPLICAND], a ; $ff96 - ld [H_MULTIPLICAND+1], a - ld a, d - ld [H_MULTIPLICAND+2], a - ld a, [hli] - ld [H_MULTIPLIER], a - call Multiply - ld b, [hl] - ld a, [H_MULTIPLICAND+2] - sub b - ld [H_MULTIPLICAND+2], a - ld b, $0 - ld a, [H_MULTIPLICAND+1] - sbc b - ld [H_MULTIPLICAND+1], a - ld a, [H_MULTIPLICAND] ; $ff96 - sbc b - ld [H_MULTIPLICAND], a ; $ff96 - pop af - and $80 - jr nz, .subtractSquaredTerm ; check sign - pop bc - ld a, [H_MULTIPLICAND+2] - add b - ld [H_MULTIPLICAND+2], a - pop bc - ld a, [H_MULTIPLICAND+1] - adc b - ld [H_MULTIPLICAND+1], a - pop bc - ld a, [H_MULTIPLICAND] - adc b - ld [H_MULTIPLICAND], a - jr .addCubedTerm -.subtractSquaredTerm - pop bc - ld a, [H_MULTIPLICAND+2] - sub b - ld [H_MULTIPLICAND+2], a - pop bc - ld a, [H_MULTIPLICAND+1] - sbc b - ld [H_MULTIPLICAND+1], a - pop bc - ld a, [H_MULTIPLICAND] - sbc b - ld [H_MULTIPLICAND], a -.addCubedTerm - pop bc - ld a, [H_MULTIPLICAND+2] - add b - ld [H_MULTIPLICAND+2], a - pop bc - ld a, [H_MULTIPLICAND+1] - adc b - ld [H_MULTIPLICAND+1], a - pop bc - ld a, [H_MULTIPLICAND] - adc b - ld [H_MULTIPLICAND], a - ret - -; calculates d*d -CalcDSquared: ; 59010 (16:5010) - xor a - ld [H_MULTIPLICAND], a ; $ff96 (aliases: H_NUMTOPRINT) - ld [H_MULTIPLICAND+1], a - ld a, d - ld [H_MULTIPLICAND+2], a - ld [H_MULTIPLIER], a ; $ff99 (aliases: H_DIVISOR, H_REMAINDER, H_POWEROFTEN) - jp Multiply - -; each entry has the following scheme: -; %AAAABBBB %SCCCCCCC %DDDDDDDD %EEEEEEEE -; resulting in -; (a*n^3)/b + sign*c*n^2 + d*n - e -; where sign = -1 <=> S=1 -GrowthRateTable: ; 5901d (16:501d) - db $11,$00,$00,$00 ; medium fast n^3 - db $34,$0A,$00,$1E ; (unused?) 3/4 n^3 + 10 n^2 - 30 - db $34,$14,$00,$46 ; (unused?) 3/4 n^3 + 20 n^2 - 70 - db $65,$8F,$64,$8C ; medium slow: 6/5 n^3 - 15 n^2 + 100 n - 140 - db $45,$00,$00,$00 ; fast: 4/5 n^3 - db $54,$00,$00,$00 ; slow: 5/4 n^3 - -Func_59035 ; 0x59035 - ld hl, OaksAideHiText - call PrintText - call YesNoChoice - ld a, [$cc26] - and a - jr nz, .asm_59086 ; 0x59042 $42 - ld hl, $d2f7 - ld b, $13 - call CountSetBits - ld a, [$d11e] - ld [$ffdd], a - ld b, a - ld a, [$ffdb] - cp b - jr z, .asm_59059 ; 0x59055 $2 - jr nc, .asm_5907c ; 0x59057 $23 -.asm_59059 - ld hl, OaksAideHereYouGoText - call PrintText - ld a, [$ffdc] - ld b, a - ld c, 1 - call GiveItem - jr nc, .BagFull - ld hl, OaksAideGotItemText - call PrintText - ld a, $1 - jr .asm_5908e ; 0x59071 $1b -.BagFull - ld hl, OaksAideNoRoomText - call PrintText - xor a - jr .asm_5908e ; 0x5907a $12 -.asm_5907c - ld hl, OaksAideUhOhText - call PrintText - ld a, $80 - jr .asm_5908e ; 0x59084 $8 -.asm_59086 - ld hl, OaksAideComeBackText - call PrintText - ld a, $ff -.asm_5908e - ld [$ffdb], a - ret - -OaksAideHiText: ; 59091 (16:5091) - TX_FAR _OaksAideHiText - db "@" - -OaksAideUhOhText: ; 59096 (16:5096) - TX_FAR _OaksAideUhOhText - db "@" - -OaksAideComeBackText: ; 5909b (16:509b) - TX_FAR _OaksAideComeBackText - db "@" - -OaksAideHereYouGoText: ; 590a0 (16:50a0) - TX_FAR _OaksAideHereYouGoText - db "@" - -OaksAideGotItemText: ; 590a5 (16:50a5) - TX_FAR _OaksAideGotItemText - db $0b - db "@" - -OaksAideNoRoomText: ; 590ab (16:50ab) - TX_FAR _OaksAideNoRoomText - db "@" - -Route6Script: ; 590b0 (16:50b0) - call EnableAutoTextBoxDrawing - ld hl, Route6TrainerHeaders - ld de, Route6ScriptPointers - ld a, [W_ROUTE6CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROUTE6CURSCRIPT], a - ret - -Route6ScriptPointers: ; 590c3 (16:50c3) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -Route6TextPointers: ; 590c9 (16:50c9) - dw Route6Text1 - dw Route6Text2 - dw Route6Text3 - dw Route6Text4 - dw Route6Text5 - dw Route6Text6 - dw Route6Text7 - -Route6TrainerHeaders: ; 590d7 (16:50d7) -Route6TrainerHeader0: ; 590d7 (16:50d7) - db $1 ; flag's bit - db ($0 << 4) ; trainer's view range - dw $d7c9 ; flag's byte - dw Route6BattleText1 ; 0x512a TextBeforeBattle - dw Route6AfterBattleText1 ; 0x5134 TextAfterBattle - dw Route6EndBattleText1 ; 0x512f TextEndBattle - dw Route6EndBattleText1 ; 0x512f TextEndBattle - -Route6TrainerHeader1: ; 590e3 (16:50e3) - db $2 ; flag's bit - db ($0 << 4) ; trainer's view range - dw $d7c9 ; flag's byte - dw Route6BattleText2 ; 0x5143 TextBeforeBattle - dw Route6AfterBattleText1 ; 0x5134 TextAfterBattle - dw Route6EndBattleText2 ; 0x5148 TextEndBattle - dw Route6EndBattleText2 ; 0x5148 TextEndBattle - -Route6TrainerHeader2: ; 590ef (16:50ef) - db $3 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7c9 ; flag's byte - dw Route6BattleText3 ; 0x5157 TextBeforeBattle - dw Route6AfterBattleText3 ; 0x5161 TextAfterBattle - dw Route6EndBattleText3 ; 0x515c TextEndBattle - dw Route6EndBattleText3 ; 0x515c TextEndBattle - -Route6TrainerHeader3: ; 590fb (16:50fb) - db $4 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7c9 ; flag's byte - dw Route6BattleText4 ; 0x5170 TextBeforeBattle - dw Route6AfterBattleText4 ; 0x517a TextAfterBattle - dw Route6EndBattleText4 ; 0x5175 TextEndBattle - dw Route6EndBattleText4 ; 0x5175 TextEndBattle - -Route6TrainerHeader4: ; 59107 (16:5107) - db $5 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7c9 ; flag's byte - dw Route6BattleText5 ; 0x5189 TextBeforeBattle - dw Route6AfterBattleText5 ; 0x5193 TextAfterBattle - dw Route6EndBattleText5 ; 0x518e TextEndBattle - dw Route6EndBattleText5 ; 0x518e TextEndBattle - -Route6TrainerHeader5: ; 59113 (16:5113) - db $6 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7c9 ; flag's byte - dw Route6BattleText6 ; 0x51a2 TextBeforeBattle - dw Route6AfterBattleText6 ; 0x51ac TextAfterBattle - dw Route6EndBattleText6 ; 0x51a7 TextEndBattle - dw Route6EndBattleText6 ; 0x51a7 TextEndBattle - - db $ff - -Route6Text1: ; 59120 (16:5120) - db $8 - ld hl, Route6TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -Route6BattleText1: ; 5912a (16:512a) - TX_FAR _Route6BattleText1 - db "@" - -Route6EndBattleText1: ; 5912f (16:512f) - TX_FAR _Route6EndBattleText1 - db "@" - -Route6AfterBattleText1: ; 59134 (16:5134) - TX_FAR _Route6AfterBattleText1 - db "@" - -Route6Text2: ; 59139 (16:5139) - db $08 ; asm - ld hl, Route6TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -Route6BattleText2: ; 59143 (16:5143) - TX_FAR _Route6BattleText2 - db "@" - -Route6EndBattleText2: ; 59148 (16:5148) - TX_FAR _Route6EndBattleText2 - db "@" - -Route6Text3: ; 5914d (16:514d) - db $08 ; asm - ld hl, Route6TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -Route6BattleText3: ; 59157 (16:5157) - TX_FAR _Route6BattleText3 - db "@" - -Route6EndBattleText3: ; 5915c (16:515c) - TX_FAR _Route6EndBattleText3 - db "@" - -Route6AfterBattleText3: ; 59161 (16:5161) - TX_FAR _Route6AfterBattleText3 - db "@" - -Route6Text4: ; 59166 (16:5166) - db $08 ; asm - ld hl, Route6TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -Route6BattleText4: ; 59170 (16:5170) - TX_FAR _Route6BattleText4 - db "@" - -Route6EndBattleText4: ; 59175 (16:5175) - TX_FAR _Route6EndBattleText4 - db "@" - -Route6AfterBattleText4: ; 5917a (16:517a) - TX_FAR _Route6AfterBattleText4 - db "@" - -Route6Text5: ; 5917f (16:517f) - db $08 ; asm - ld hl, Route6TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -Route6BattleText5: ; 59189 (16:5189) - TX_FAR _Route6BattleText5 - db "@" - -Route6EndBattleText5: ; 5918e (16:518e) - TX_FAR _Route6EndBattleText5 - db "@" - -Route6AfterBattleText5: ; 59193 (16:5193) - TX_FAR _Route6AfterBattleText5 - db "@" - -Route6Text6: ; 59198 (16:5198) - db $08 ; asm - ld hl, Route6TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -Route6BattleText6: ; 591a2 (16:51a2) - TX_FAR _Route6BattleText6 - db "@" - -Route6EndBattleText6: ; 591a7 (16:51a7) - TX_FAR _Route6EndBattleText6 - db "@" - -Route6AfterBattleText6: ; 591ac (16:51ac) - TX_FAR _Route6AfterBattleText6 - db "@" - -Route6Text7: ; 591b1 (16:51b1) - TX_FAR _Route6Text7 - db "@" - -Route8Script: ; 591b6 (16:51b6) - call EnableAutoTextBoxDrawing - ld hl, Route8TrainerHeaders - ld de, Route8ScriptPointers - ld a, [W_ROUTE8CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROUTE8CURSCRIPT], a - ret - -Route8ScriptPointers: ; 591c9 (16:51c9) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -Route8TextPointers: ; 591cf (16:51cf) - dw Route8Text1 - dw Route8Text2 - dw Route8Text3 - dw Route8Text4 - dw Route8Text5 - dw Route8Text6 - dw Route8Text7 - dw Route8Text8 - dw Route8Text9 - dw Route8Text10 - -Route8TrainerHeaders: ; 591e3 (16:51e3) -Route8TrainerHeader0: ; 591e3 (16:51e3) - db $1 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7cd ; flag's byte - dw Route8BattleText1 ; 0x525a TextBeforeBattle - dw Route8AfterBattleText1 ; 0x5264 TextAfterBattle - dw Route8EndBattleText1 ; 0x525f TextEndBattle - dw Route8EndBattleText1 ; 0x525f TextEndBattle - -Route8TrainerHeader1: ; 591ef (16:51ef) - db $2 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7cd ; flag's byte - dw Route8BattleText2 ; 0x5273 TextBeforeBattle - dw Route8AfterBattleText2 ; 0x527d TextAfterBattle - dw Route8EndBattleText2 ; 0x5278 TextEndBattle - dw Route8EndBattleText2 ; 0x5278 TextEndBattle - -Route8TrainerHeader2: ; 591fb (16:51fb) - db $3 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7cd ; flag's byte - dw Route8BattleText3 ; 0x528c TextBeforeBattle - dw Route8AfterBattleText3 ; 0x5296 TextAfterBattle - dw Route8EndBattleText3 ; 0x5291 TextEndBattle - dw Route8EndBattleText3 ; 0x5291 TextEndBattle - -Route8TrainerHeader3: ; 59207 (16:5207) - db $4 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7cd ; flag's byte - dw Route8BattleText4 ; 0x52a5 TextBeforeBattle - dw Route8AfterBattleText4 ; 0x52af TextAfterBattle - dw Route8EndBattleText4 ; 0x52aa TextEndBattle - dw Route8EndBattleText4 ; 0x52aa TextEndBattle - -Route8TrainerHeader4: ; 59213 (16:5213) - db $5 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7cd ; flag's byte - dw Route8BattleText5 ; 0x52be TextBeforeBattle - dw Route8AfterBattleText5 ; 0x52c8 TextAfterBattle - dw Route8EndBattleText5 ; 0x52c3 TextEndBattle - dw Route8EndBattleText5 ; 0x52c3 TextEndBattle - -Route8TrainerHeader5: ; 5921f (16:521f) - db $6 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7cd ; flag's byte - dw Route8BattleText6 ; 0x52d7 TextBeforeBattle - dw Route8AfterBattleText6 ; 0x52e1 TextAfterBattle - dw Route8EndBattleText6 ; 0x52dc TextEndBattle - dw Route8EndBattleText6 ; 0x52dc TextEndBattle - -Route8TrainerHeader6: ; 5922b (16:522b) - db $7 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7cd ; flag's byte - dw Route8BattleText7 ; 0x52f0 TextBeforeBattle - dw Route8AfterBattleText7 ; 0x52fa TextAfterBattle - dw Route8EndBattleText7 ; 0x52f5 TextEndBattle - dw Route8EndBattleText7 ; 0x52f5 TextEndBattle - -Route8TrainerHeader7: ; 59237 (16:5237) - db $8 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7cd ; flag's byte - dw Route8BattleText8 ; 0x5309 TextBeforeBattle - dw Route8AfterBattleText8 ; 0x5313 TextAfterBattle - dw Route8EndBattleText8 ; 0x530e TextEndBattle - dw Route8EndBattleText8 ; 0x530e TextEndBattle - -Route8TrainerHeader8: ; 59243 (16:5243) - db $9 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7cd ; flag's byte - dw Route8BattleText9 ; 0x5322 TextBeforeBattle - dw Route8AfterBattleText9 ; 0x532c TextAfterBattle - dw Route8EndBattleText9 ; 0x5327 TextEndBattle - dw Route8EndBattleText9 ; 0x5327 TextEndBattle - - db $ff - -Route8Text1: ; 59250 (16:5250) - db $8 - ld hl, Route8TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -Route8BattleText1: ; 5925a (16:525a) - TX_FAR _Route8BattleText1 - db "@" - -Route8EndBattleText1: ; 5925f (16:525f) - TX_FAR _Route8EndBattleText1 - db "@" - -Route8AfterBattleText1: ; 59264 (16:5264) - TX_FAR _Route8AfterBattleText1 - db "@" - -Route8Text2: ; 59269 (16:5269) - db $08 ; asm - ld hl, Route8TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -Route8BattleText2: ; 59273 (16:5273) - TX_FAR _Route8BattleText2 - db "@" - -Route8EndBattleText2: ; 59278 (16:5278) - TX_FAR _Route8EndBattleText2 - db "@" - -Route8AfterBattleText2: ; 5927d (16:527d) - TX_FAR _Route8AfterBattleText2 - db "@" - -Route8Text3: ; 59282 (16:5282) - db $08 ; asm - ld hl, Route8TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -Route8BattleText3: ; 5928c (16:528c) - TX_FAR _Route8BattleText3 - db "@" - -Route8EndBattleText3: ; 59291 (16:5291) - TX_FAR _Route8EndBattleText3 - db "@" - -Route8AfterBattleText3: ; 59296 (16:5296) - TX_FAR _Route8AfterBattleText3 - db "@" - -Route8Text4: ; 5929b (16:529b) - db $08 ; asm - ld hl, Route8TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -Route8BattleText4: ; 592a5 (16:52a5) - TX_FAR _Route8BattleText4 - db "@" - -Route8EndBattleText4: ; 592aa (16:52aa) - TX_FAR _Route8EndBattleText4 - db "@" - -Route8AfterBattleText4: ; 592af (16:52af) - TX_FAR _Route8AfterBattleText4 - db "@" - -Route8Text5: ; 592b4 (16:52b4) - db $08 ; asm - ld hl, Route8TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -Route8BattleText5: ; 592be (16:52be) - TX_FAR _Route8BattleText5 - db "@" - -Route8EndBattleText5: ; 592c3 (16:52c3) - TX_FAR _Route8EndBattleText5 - db "@" - -Route8AfterBattleText5: ; 592c8 (16:52c8) - TX_FAR _Route8AfterBattleText5 - db "@" - -Route8Text6: ; 592cd (16:52cd) - db $08 ; asm - ld hl, Route8TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -Route8BattleText6: ; 592d7 (16:52d7) - TX_FAR _Route8BattleText6 - db "@" - -Route8EndBattleText6: ; 592dc (16:52dc) - TX_FAR _Route8EndBattleText6 - db "@" - -Route8AfterBattleText6: ; 592e1 (16:52e1) - TX_FAR _Route8AfterBattleText6 - db "@" - -Route8Text7: ; 592e6 (16:52e6) - db $08 ; asm - ld hl, Route8TrainerHeader6 - call TalkToTrainer - jp TextScriptEnd - -Route8BattleText7: ; 592f0 (16:52f0) - TX_FAR _Route8BattleText7 - db "@" - -Route8EndBattleText7: ; 592f5 (16:52f5) - TX_FAR _Route8EndBattleText7 - db "@" - -Route8AfterBattleText7: ; 592fa (16:52fa) - TX_FAR _Route8AfterBattleText7 - db "@" - -Route8Text8: ; 592ff (16:52ff) - db $08 ; asm - ld hl, Route8TrainerHeader7 - call TalkToTrainer - jp TextScriptEnd - -Route8BattleText8: ; 59309 (16:5309) - TX_FAR _Route8BattleText8 - db "@" - -Route8EndBattleText8: ; 5930e (16:530e) - TX_FAR _Route8EndBattleText8 - db "@" - -Route8AfterBattleText8: ; 59313 (16:5313) - TX_FAR _Route8AfterBattleText8 - db "@" - -Route8Text9: ; 59318 (16:5318) - db $08 ; asm - ld hl, Route8TrainerHeader8 - call TalkToTrainer - jp TextScriptEnd - -Route8BattleText9: ; 59322 (16:5322) - TX_FAR _Route8BattleText9 - db "@" - -Route8EndBattleText9: ; 59327 (16:5327) - TX_FAR _Route8EndBattleText9 - db "@" - -Route8AfterBattleText9: ; 5932c (16:532c) - TX_FAR _Route8AfterBattleText9 - db "@" - -Route8Text10: ; 59331 (16:5331) - TX_FAR _Route8Text10 - db "@" - -Route10Script: ; 59336 (16:5336) - call EnableAutoTextBoxDrawing - ld hl, Route10TrainerHeaders - ld de, Route10ScriptPointers - ld a, [W_ROUTE10CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROUTE10CURSCRIPT], a - ret - -Route10ScriptPointers: ; 59349 (16:5349) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -Route10TextPointers: ; 5934f (16:534f) - dw Route10Text1 - dw Route10Text2 - dw Route10Text3 - dw Route10Text4 - dw Route10Text5 - dw Route10Text6 - dw Route10Text7 - dw PokeCenterSignText - dw Route10Text9 - dw Route10Text10 - -Route10TrainerHeaders: ; 59363 (16:5363) -Route10TrainerHeader0: ; 59363 (16:5363) - db $1 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7d1 ; flag's byte - dw Route10BattleText1 ; 0x53b6 TextBeforeBattle - dw Route10AfterBattleText1 ; 0x53c0 TextAfterBattle - dw Route10EndBattleText1 ; 0x53bb TextEndBattle - dw Route10EndBattleText1 ; 0x53bb TextEndBattle - -Route10TrainerHeader1: ; 5936f (16:536f) - db $2 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7d1 ; flag's byte - dw Route10BattleText2 ; 0x53cf TextBeforeBattle - dw Route10AfterBattleText2 ; 0x53d9 TextAfterBattle - dw Route10EndBattleText2 ; 0x53d4 TextEndBattle - dw Route10EndBattleText2 ; 0x53d4 TextEndBattle - -Route10TrainerHeader2: ; 5937b (16:537b) - db $3 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7d1 ; flag's byte - dw Route10BattleText3 ; 0x53e8 TextBeforeBattle - dw Route10AfterBattleText3 ; 0x53f2 TextAfterBattle - dw Route10EndBattleText3 ; 0x53ed TextEndBattle - dw Route10EndBattleText3 ; 0x53ed TextEndBattle - -Route10TrainerHeader3: ; 59387 (16:5387) - db $4 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7d1 ; flag's byte - dw Route10BattleText4 ; 0x5401 TextBeforeBattle - dw Route10AfterBattleText4 ; 0x540b TextAfterBattle - dw Route10EndBattleText4 ; 0x5406 TextEndBattle - dw Route10EndBattleText4 ; 0x5406 TextEndBattle - -Route10TrainerHeader4: ; 59393 (16:5393) - db $5 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7d1 ; flag's byte - dw Route10BattleText5 ; 0x541a TextBeforeBattle - dw Route10AfterBattleText5 ; 0x5424 TextAfterBattle - dw Route10EndBattleText5 ; 0x541f TextEndBattle - dw Route10EndBattleText5 ; 0x541f TextEndBattle - -Route10TrainerHeader5: ; 5939f (16:539f) - db $6 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7d1 ; flag's byte - dw Route10BattleText6 ; 0x5433 TextBeforeBattle - dw Route10AfterBattleText6 ; 0x543d TextAfterBattle - dw Route10EndBattleText6 ; 0x5438 TextEndBattle - dw Route10EndBattleText6 ; 0x5438 TextEndBattle - - db $ff - -Route10Text1: ; 593ac (16:53ac) - db $08 ; asm - ld hl, Route10TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -Route10BattleText1: ; 593b6 (16:53b6) - TX_FAR _Route10BattleText1 - db "@" - -Route10EndBattleText1: ; 593bb (16:53bb) - TX_FAR _Route10EndBattleText1 - db "@" - -Route10AfterBattleText1: ; 593c0 (16:53c0) - TX_FAR _Route10AfterBattleText1 - db "@" - -Route10Text2: ; 593c5 (16:53c5) - db $08 ; asm - ld hl, Route10TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -Route10BattleText2: ; 593cf (16:53cf) - TX_FAR _Route10BattleText2 - db "@" - -Route10EndBattleText2: ; 593d4 (16:53d4) - TX_FAR _Route10EndBattleText2 - db "@" - -Route10AfterBattleText2: ; 593d9 (16:53d9) - TX_FAR _Route10AfterBattleText2 - db "@" - -Route10Text3: ; 593de (16:53de) - db $08 ; asm - ld hl, Route10TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -Route10BattleText3: ; 593e8 (16:53e8) - TX_FAR _Route10BattleText3 - db "@" - -Route10EndBattleText3: ; 593ed (16:53ed) - TX_FAR _Route10EndBattleText3 - db "@" - -Route10AfterBattleText3: ; 593f2 (16:53f2) - TX_FAR _Route10AfterBattleText3 - db "@" - -Route10Text4: ; 593f7 (16:53f7) - db $08 ; asm - ld hl, Route10TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -Route10BattleText4: ; 59401 (16:5401) - TX_FAR _Route10BattleText4 - db "@" - -Route10EndBattleText4: ; 59406 (16:5406) - TX_FAR _Route10EndBattleText4 - db "@" - -Route10AfterBattleText4: ; 5940b (16:540b) - TX_FAR _Route10AfterBattleText4 - db "@" - -Route10Text5: ; 59410 (16:5410) - db $08 ; asm - ld hl, Route10TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -Route10BattleText5: ; 5941a (16:541a) - TX_FAR _Route10BattleText5 - db "@" - -Route10EndBattleText5: ; 5941f (16:541f) - TX_FAR _Route10EndBattleText5 - db "@" - -Route10AfterBattleText5: ; 59424 (16:5424) - TX_FAR _Route10AfterBattleText5 - db "@" - -Route10Text6: ; 59429 (16:5429) - db $08 ; asm - ld hl, Route10TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -Route10BattleText6: ; 59433 (16:5433) - TX_FAR _Route10BattleText6 - db "@" - -Route10EndBattleText6: ; 59438 (16:5438) - TX_FAR _Route10EndBattleText6 - db "@" - -Route10AfterBattleText6: ; 5943d (16:543d) - TX_FAR _Route10AfterBattleText6 - db "@" - -Route10Text9: ; 59442 (16:5442) -Route10Text7: ; 59442 (16:5442) - TX_FAR _Route10Text7 ; _Route10Text9 - db "@" - -Route10Text10: ; 59447 (16:5447) - TX_FAR _Route10Text10 - db "@" - -Route11Script: ; 5944c (16:544c) - call EnableAutoTextBoxDrawing - ld hl, Route11TrainerHeaders - ld de, Route11ScriptPointers - ld a, [W_ROUTE11CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROUTE11CURSCRIPT], a - ret - -Route11ScriptPointers: ; 5945f (16:545f) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -Route11TextPointers: ; 59465 (16:5465) - dw Route11Text1 - dw Route11Text2 - dw Route11Text3 - dw Route11Text4 - dw Route11Text5 - dw Route11Text6 - dw Route11Text7 - dw Route11Text8 - dw Route11Text9 - dw Route11Text10 - dw Route11Text11 - -Route11TrainerHeaders: ; 5947b (16:547b) -Route11TrainerHeader0: ; 5947b (16:547b) - db $1 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7d5 ; flag's byte - dw Route11BattleText1 ; 0x54fe TextBeforeBattle - dw Route11AfterBattleText1 ; 0x5508 TextAfterBattle - dw Route11EndBattleText1 ; 0x5503 TextEndBattle - dw Route11EndBattleText1 ; 0x5503 TextEndBattle - -Route11TrainerHeader1: ; 59487 (16:5487) - db $2 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7d5 ; flag's byte - dw Route11BattleText2 ; 0x5517 TextBeforeBattle - dw Route11AfterBattleText2 ; 0x5521 TextAfterBattle - dw Route11EndBattleText2 ; 0x551c TextEndBattle - dw Route11EndBattleText2 ; 0x551c TextEndBattle - -Route11TrainerHeader2: ; 59493 (16:5493) - db $3 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7d5 ; flag's byte - dw Route11BattleText3 ; 0x5530 TextBeforeBattle - dw Route11AfterBattleText3 ; 0x553a TextAfterBattle - dw Route11EndBattleText3 ; 0x5535 TextEndBattle - dw Route11EndBattleText3 ; 0x5535 TextEndBattle - -Route11TrainerHeader3: ; 5949f (16:549f) - db $4 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7d5 ; flag's byte - dw Route11BattleText4 ; 0x5549 TextBeforeBattle - dw Route11AfterBattleText4 ; 0x5553 TextAfterBattle - dw Route11EndBattleText4 ; 0x554e TextEndBattle - dw Route11EndBattleText4 ; 0x554e TextEndBattle - -Route11TrainerHeader4: ; 594ab (16:54ab) - db $5 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7d5 ; flag's byte - dw Route11BattleText5 ; 0x5562 TextBeforeBattle - dw Route11AfterBattleText5 ; 0x556c TextAfterBattle - dw Route11EndBattleText5 ; 0x5567 TextEndBattle - dw Route11EndBattleText5 ; 0x5567 TextEndBattle - -Route11TrainerHeader5: ; 594b7 (16:54b7) - db $6 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7d5 ; flag's byte - dw Route11BattleText6 ; 0x557b TextBeforeBattle - dw Route11AfterBattleText6 ; 0x5585 TextAfterBattle - dw Route11EndBattleText6 ; 0x5580 TextEndBattle - dw Route11EndBattleText6 ; 0x5580 TextEndBattle - -Route11TrainerHeader6: ; 594c3 (16:54c3) - db $7 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7d5 ; flag's byte - dw Route11BattleText7 ; 0x5594 TextBeforeBattle - dw Route11AfterBattleText7 ; 0x559e TextAfterBattle - dw Route11EndBattleText7 ; 0x5599 TextEndBattle - dw Route11EndBattleText7 ; 0x5599 TextEndBattle - -Route11TrainerHeader7: ; 594cf (16:54cf) - db $8 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7d5 ; flag's byte - dw Route11BattleText8 ; 0x55ad TextBeforeBattle - dw Route11AfterBattleText8 ; 0x55b7 TextAfterBattle - dw Route11EndBattleText8 ; 0x55b2 TextEndBattle - dw Route11EndBattleText8 ; 0x55b2 TextEndBattle - -Route11TrainerHeader8: ; 594db (16:54db) - db $9 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7d5 ; flag's byte - dw Route11BattleText9 ; 0x55c6 TextBeforeBattle - dw Route11AfterBattleText9 ; 0x55d0 TextAfterBattle - dw Route11EndBattleText9 ; 0x55cb TextEndBattle - dw Route11EndBattleText9 ; 0x55cb TextEndBattle - -Route11TrainerHeader9: ; 594e7 (16:54e7) - db $a ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7d5 ; flag's byte - dw Route11BattleText10 ; 0x55df TextBeforeBattle - dw Route11AfterBattleText10 ; 0x55e9 TextAfterBattle - dw Route11EndBattleText10 ; 0x55e4 TextEndBattle - dw Route11EndBattleText10 ; 0x55e4 TextEndBattle - - db $ff - -Route11Text1: ; 594f4 (16:54f4) - db $8 - ld hl, Route11TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -Route11BattleText1: ; 594fe (16:54fe) - TX_FAR _Route11BattleText1 - db "@" - -Route11EndBattleText1: ; 59503 (16:5503) - TX_FAR _Route11EndBattleText1 - db "@" - -Route11AfterBattleText1: ; 59508 (16:5508) - TX_FAR _Route11AfterBattleText1 - db "@" - -Route11Text2: ; 5950d (16:550d) - db $08 ; asm - ld hl, Route11TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -Route11BattleText2: ; 59517 (16:5517) - TX_FAR _Route11BattleText2 - db "@" - -Route11EndBattleText2: ; 5951c (16:551c) - TX_FAR _Route11EndBattleText2 - db "@" - -Route11AfterBattleText2: ; 59521 (16:5521) - TX_FAR _Route11AfterBattleText2 - db "@" - -Route11Text3: ; 59526 (16:5526) - db $08 ; asm - ld hl, Route11TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -Route11BattleText3: ; 59530 (16:5530) - TX_FAR _Route11BattleText3 - db "@" - -Route11EndBattleText3: ; 59535 (16:5535) - TX_FAR _Route11EndBattleText3 - db "@" - -Route11AfterBattleText3: ; 5953a (16:553a) - TX_FAR _Route11AfterBattleText3 - db "@" - -Route11Text4: ; 5953f (16:553f) - db $08 ; asm - ld hl, Route11TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -Route11BattleText4: ; 59549 (16:5549) - TX_FAR _Route11BattleText4 - db "@" - -Route11EndBattleText4: ; 5954e (16:554e) - TX_FAR _Route11EndBattleText4 - db "@" - -Route11AfterBattleText4: ; 59553 (16:5553) - TX_FAR _Route11AfterBattleText4 - db "@" - -Route11Text5: ; 59558 (16:5558) - db $08 ; asm - ld hl, Route11TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -Route11BattleText5: ; 59562 (16:5562) - TX_FAR _Route11BattleText5 - db "@" - -Route11EndBattleText5: ; 59567 (16:5567) - TX_FAR _Route11EndBattleText5 - db "@" - -Route11AfterBattleText5: ; 5956c (16:556c) - TX_FAR _Route11AfterBattleText5 - db "@" - -Route11Text6: ; 59571 (16:5571) - db $08 ; asm - ld hl, Route11TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -Route11BattleText6: ; 5957b (16:557b) - TX_FAR _Route11BattleText6 - db "@" - -Route11EndBattleText6: ; 59580 (16:5580) - TX_FAR _Route11EndBattleText6 - db "@" - -Route11AfterBattleText6: ; 59585 (16:5585) - TX_FAR _Route11AfterBattleText6 - db "@" - -Route11Text7: ; 5958a (16:558a) - db $08 ; asm - ld hl, Route11TrainerHeader6 - call TalkToTrainer - jp TextScriptEnd - -Route11BattleText7: ; 59594 (16:5594) - TX_FAR _Route11BattleText7 - db "@" - -Route11EndBattleText7: ; 59599 (16:5599) - TX_FAR _Route11EndBattleText7 - db "@" - -Route11AfterBattleText7: ; 5959e (16:559e) - TX_FAR _Route11AfterBattleText7 - db "@" - -Route11Text8: ; 595a3 (16:55a3) - db $08 ; asm - ld hl, Route11TrainerHeader7 - call TalkToTrainer - jp TextScriptEnd - -Route11BattleText8: ; 595ad (16:55ad) - TX_FAR _Route11BattleText8 - db "@" - -Route11EndBattleText8: ; 595b2 (16:55b2) - TX_FAR _Route11EndBattleText8 - db "@" - -Route11AfterBattleText8: ; 595b7 (16:55b7) - TX_FAR _Route11AfterBattleText8 - db "@" - -Route11Text9: ; 595bc (16:55bc) - db $08 ; asm - ld hl, Route11TrainerHeader8 - call TalkToTrainer - jp TextScriptEnd - -Route11BattleText9: ; 595c6 (16:55c6) - TX_FAR _Route11BattleText9 - db "@" - -Route11EndBattleText9: ; 595cb (16:55cb) - TX_FAR _Route11EndBattleText9 - db "@" - -Route11AfterBattleText9: ; 595d0 (16:55d0) - TX_FAR _Route11AfterBattleText9 - db "@" - -Route11Text10: ; 595d5 (16:55d5) - db $08 ; asm - ld hl, Route11TrainerHeader9 - call TalkToTrainer - jp TextScriptEnd - -Route11BattleText10: ; 595df (16:55df) - TX_FAR _Route11BattleText10 - db "@" - -Route11EndBattleText10: ; 595e4 (16:55e4) - TX_FAR _Route11EndBattleText10 - db "@" - -Route11AfterBattleText10: ; 595e9 (16:55e9) - TX_FAR _Route11AfterBattleText10 - db "@" - -Route11Text11: ; 595ee (16:55ee) - TX_FAR _Route11Text11 - db "@" - -Route12Script: ; 595f3 (16:55f3) - call EnableAutoTextBoxDrawing - ld hl, Route12TrainerHeaders - ld de, Route12ScriptPointers - ld a, [W_ROUTE12CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROUTE12CURSCRIPT], a - ret - -Route12Script_59606: ; 59606 (16:5606) - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_ROUTE12CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -Route12ScriptPointers: ; 59611 (16:5611) - dw Route12Script0 - dw Func_324c - dw EndTrainerBattle - dw Route12Script3 - -Route12Script0: ; 59619 (16:5619) - ld hl, $d7d8 - bit 7, [hl] - jp nz, CheckFightingMapTrainers - bit 6, [hl] - res 6, [hl] - jp z, CheckFightingMapTrainers - ld a, $d - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld a, SNORLAX - ld [W_CUROPPONENT], a ; $d059 - ld a, 30 - ld [W_CURENEMYLVL], a ; $d127 - ld a, $1d - ld [$cc4d], a - ld a, $11 - call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) - ld a, $3 - ld [W_ROUTE12CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -Route12Script3: ; 5964c (16:564c) - ld a, [W_ISINBATTLE] ; $d057 - cp $ff - jr z, Route12Script_59606 - call UpdateSprites - ld a, [$cf0b] - cp $2 - jr z, .asm_59664 - ld a, $e - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID -.asm_59664 - ld hl, $d7d8 - set 7, [hl] - call Delay3 - ld a, $0 - ld [W_ROUTE12CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -Route12TextPointers: ; 59675 (16:5675) - dw Route12Text1 - dw Route12Text2 - dw Route12Text3 - dw Route12Text4 - dw Route12Text5 - dw Route12Text6 - dw Route12Text7 - dw Route12Text8 - dw Predef5CText - dw Predef5CText - dw Route12Text11 - dw Route12Text12 - dw Route12Text13 - dw Route12Text14 - -Route12TrainerHeaders: ; 59691 (16:5691) -Route12TrainerHeader0: ; 59691 (16:5691) - db $2 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7d7 ; flag's byte - dw Route12BattleText1 ; 0x56ff TextBeforeBattle - dw Route12AfterBattleText1 ; 0x5709 TextAfterBattle - dw Route12EndBattleText1 ; 0x5704 TextEndBattle - dw Route12EndBattleText1 ; 0x5704 TextEndBattle - -Route12TrainerHeader1: ; 5969d (16:569d) - db $3 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7d7 ; flag's byte - dw Route12BattleText2 ; 0x5718 TextBeforeBattle - dw Route12AfterBattleText2 ; 0x5722 TextAfterBattle - dw Route12EndBattleText2 ; 0x571d TextEndBattle - dw Route12EndBattleText2 ; 0x571d TextEndBattle - -Route12TrainerHeader2: ; 596a9 (16:56a9) - db $4 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7d7 ; flag's byte - dw Route12BattleText3 ; 0x5731 TextBeforeBattle - dw Route12AfterBattleText3 ; 0x573b TextAfterBattle - dw Route12EndBattleText3 ; 0x5736 TextEndBattle - dw Route12EndBattleText3 ; 0x5736 TextEndBattle - -Route12TrainerHeader3: ; 596b5 (16:56b5) - db $5 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7d7 ; flag's byte - dw Route12BattleText4 ; 0x574a TextBeforeBattle - dw Route12AfterBattleText4 ; 0x5754 TextAfterBattle - dw Route12EndBattleText4 ; 0x574f TextEndBattle - dw Route12EndBattleText4 ; 0x574f TextEndBattle - -Route12TrainerHeader4: ; 596c1 (16:56c1) - db $6 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7d7 ; flag's byte - dw Route12BattleText5 ; 0x5763 TextBeforeBattle - dw Route12AfterBattleText5 ; 0x576d TextAfterBattle - dw Route12EndBattleText5 ; 0x5768 TextEndBattle - dw Route12EndBattleText5 ; 0x5768 TextEndBattle - -Route12TrainerHeader5: ; 596cd (16:56cd) - db $7 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7d7 ; flag's byte - dw Route12BattleText6 ; 0x577c TextBeforeBattle - dw Route12AfterBattleText6 ; 0x5786 TextAfterBattle - dw Route12EndBattleText6 ; 0x5781 TextEndBattle - dw Route12EndBattleText6 ; 0x5781 TextEndBattle - -Route12TrainerHeader6: ; 596d9 (16:56d9) - db $8 ; flag's bit - db ($1 << 4) ; trainer's view range - dw $d7d7 ; flag's byte - dw Route12BattleText7 ; 0x5795 TextBeforeBattle - dw Route12AfterBattleText7 ; 0x579f TextAfterBattle - dw Route12EndBattleText7 ; 0x579a TextEndBattle - dw Route12EndBattleText7 ; 0x579a TextEndBattle - - db $ff - -Route12Text1: ; 596e6 (16:56e6) - TX_FAR _Route12Text1 - db "@" - -Route12Text13: ; 596eb (16:56eb) -UnnamedText_596eb: ; 596eb (16:56eb) - TX_FAR _UnnamedText_596eb - db "@" - -Route12Text14: ; 596f0 (16:56f0) -UnnamedText_596f0: ; 596f0 (16:56f0) - TX_FAR _UnnamedText_596f0 - db "@" - -Route12Text2: ; 596f5 (16:56f5) - db $08 ; asm - ld hl, Route12TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -Route12BattleText1: ; 596ff (16:56ff) - TX_FAR _Route12BattleText1 - db "@" - -Route12EndBattleText1: ; 59704 (16:5704) - TX_FAR _Route12EndBattleText1 - db "@" - -Route12AfterBattleText1: ; 59709 (16:5709) - TX_FAR _Route12AfterBattleText1 - db "@" - -Route12Text3: ; 5970e (16:570e) - db $08 ; asm - ld hl, Route12TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -Route12BattleText2: ; 59718 (16:5718) - TX_FAR _Route12BattleText2 - db "@" - -Route12EndBattleText2: ; 5971d (16:571d) - TX_FAR _Route12EndBattleText2 - db "@" - -Route12AfterBattleText2: ; 59722 (16:5722) - TX_FAR _Route12AfterBattleText2 - db "@" - -Route12Text4: ; 59727 (16:5727) - db $08 ; asm - ld hl, Route12TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -Route12BattleText3: ; 59731 (16:5731) - TX_FAR _Route12BattleText3 - db "@" - -Route12EndBattleText3: ; 59736 (16:5736) - TX_FAR _Route12EndBattleText3 - db "@" - -Route12AfterBattleText3: ; 5973b (16:573b) - TX_FAR _Route12AfterBattleText3 - db "@" - -Route12Text5: ; 59740 (16:5740) - db $08 ; asm - ld hl, Route12TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -Route12BattleText4: ; 5974a (16:574a) - TX_FAR _Route12BattleText4 - db "@" - -Route12EndBattleText4: ; 5974f (16:574f) - TX_FAR _Route12EndBattleText4 - db "@" - -Route12AfterBattleText4: ; 59754 (16:5754) - TX_FAR _Route12AfterBattleText4 - db "@" - -Route12Text6: ; 59759 (16:5759) - db $08 ; asm - ld hl, Route12TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -Route12BattleText5: ; 59763 (16:5763) - TX_FAR _Route12BattleText5 - db "@" - -Route12EndBattleText5: ; 59768 (16:5768) - TX_FAR _Route12EndBattleText5 - db "@" - -Route12AfterBattleText5: ; 5976d (16:576d) - TX_FAR _Route12AfterBattleText5 - db "@" - -Route12Text7: ; 59772 (16:5772) - db $08 ; asm - ld hl, Route12TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -Route12BattleText6: ; 5977c (16:577c) - TX_FAR _Route12BattleText6 - db "@" - -Route12EndBattleText6: ; 59781 (16:5781) - TX_FAR _Route12EndBattleText6 - db "@" - -Route12AfterBattleText6: ; 59786 (16:5786) - TX_FAR _Route12AfterBattleText6 - db "@" - -Route12Text8: ; 5978b (16:578b) - db $08 ; asm - ld hl, Route12TrainerHeader6 - call TalkToTrainer - jp TextScriptEnd - -Route12BattleText7: ; 59795 (16:5795) - TX_FAR _Route12BattleText7 - db "@" - -Route12EndBattleText7: ; 5979a (16:579a) - TX_FAR _Route12EndBattleText7 - db "@" - -Route12AfterBattleText7: ; 5979f (16:579f) - TX_FAR _Route12AfterBattleText7 - db "@" - -Route12Text11: ; 597a4 (16:57a4) - TX_FAR _Route12Text11 - db "@" - -Route12Text12: ; 597a9 (16:57a9) - TX_FAR _Route12Text12 - db "@" - -Route15Script: ; 597ae (16:57ae) - call EnableAutoTextBoxDrawing - ld hl, Route15TrainerHeaders - ld de, Route15ScriptPointers - ld a, [W_ROUTE15CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROUTE15CURSCRIPT], a - ret - -Route15ScriptPointers: ; 597c1 (16:57c1) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -Route15TextPointers: ; 597c7 (16:57c7) - dw Route15Text1 - dw Route15Text2 - dw Route15Text3 - dw Route15Text4 - dw Route15Text5 - dw Route15Text6 - dw Route15Text7 - dw Route15Text8 - dw Route15Text9 - dw Route15Text10 - dw Predef5CText - dw Route15Text12 - -Route15TrainerHeaders: ; 597df (16:57df) -Route15TrainerHeader0: ; 597df (16:57df) - db $1 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7dd ; flag's byte - dw Route15BattleText1 ; 0x5898 TextBeforeBattle - dw Route15AfterBattleText1 ; 0x58a2 TextAfterBattle - dw Route15EndBattleText1 ; 0x589d TextEndBattle - dw Route15EndBattleText1 ; 0x589d TextEndBattle - -Route15TrainerHeader1: ; 597eb (16:57eb) - db $2 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7dd ; flag's byte - dw Route15BattleText2 ; 0x58a7 TextBeforeBattle - dw Route15AfterBattleText2 ; 0x58b1 TextAfterBattle - dw Route15EndBattleText2 ; 0x58ac TextEndBattle - dw Route15EndBattleText2 ; 0x58ac TextEndBattle - -Route15TrainerHeader2: ; 597f7 (16:57f7) - db $3 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7dd ; flag's byte - dw Route15BattleText3 ; 0x58b6 TextBeforeBattle - dw Route15AfterBattleText3 ; 0x58c0 TextAfterBattle - dw Route15EndBattleText3 ; 0x58bb TextEndBattle - dw Route15EndBattleText3 ; 0x58bb TextEndBattle - -Route15TrainerHeader3: ; 59803 (16:5803) - db $4 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7dd ; flag's byte - dw Route15BattleText4 ; 0x58c5 TextBeforeBattle - dw Route15AfterBattleText4 ; 0x58cf TextAfterBattle - dw Route15EndBattleText4 ; 0x58ca TextEndBattle - dw Route15EndBattleText4 ; 0x58ca TextEndBattle - -Route15TrainerHeader4: ; 5980f (16:580f) - db $5 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7dd ; flag's byte - dw Route15BattleText5 ; 0x58d4 TextBeforeBattle - dw Route15AfterBattleText5 ; 0x58de TextAfterBattle - dw Route15EndBattleText5 ; 0x58d9 TextEndBattle - dw Route15EndBattleText5 ; 0x58d9 TextEndBattle - -Route15TrainerHeader5: ; 5981b (16:581b) - db $6 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7dd ; flag's byte - dw Route15BattleText6 ; 0x58e3 TextBeforeBattle - dw Route15AfterBattleText6 ; 0x58ed TextAfterBattle - dw Route15EndBattleText6 ; 0x58e8 TextEndBattle - dw Route15EndBattleText6 ; 0x58e8 TextEndBattle - -Route15TrainerHeader6: ; 59827 (16:5827) - db $7 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7dd ; flag's byte - dw Route15BattleText7 ; 0x58f2 TextBeforeBattle - dw Route15AfterBattleText7 ; 0x58fc TextAfterBattle - dw Route15EndBattleText7 ; 0x58f7 TextEndBattle - dw Route15EndBattleText7 ; 0x58f7 TextEndBattle - -Route15TrainerHeader7: ; 59833 (16:5833) - db $8 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7dd ; flag's byte - dw Route15BattleText8 ; 0x5901 TextBeforeBattle - dw Route15AfterBattleText8 ; 0x590b TextAfterBattle - dw Route15EndBattleText8 ; 0x5906 TextEndBattle - dw Route15EndBattleText8 ; 0x5906 TextEndBattle - -Route15TrainerHeader8: ; 5983f (16:583f) - db $9 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7dd ; flag's byte - dw Route15BattleText9 ; 0x5910 TextBeforeBattle - dw Route15AfterBattleText9 ; 0x591a TextAfterBattle - dw Route15EndBattleText9 ; 0x5915 TextEndBattle - dw Route15EndBattleText9 ; 0x5915 TextEndBattle - -Route15TrainerHeader9: ; 5984b (16:584b) - db $a ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7dd ; flag's byte - dw Route15BattleText10 ; 0x591f TextBeforeBattle - dw Route15AfterBattleText10 ; 0x5929 TextAfterBattle - dw Route15EndBattleText10 ; 0x5924 TextEndBattle - dw Route15EndBattleText10 ; 0x5924 TextEndBattle - - db $ff - -Route15Text1: ; 59858 (16:5858) - db $8 ; asm - ld hl, Route15TrainerHeader0 - jr asm_33cb7 ; 0x5985c $34 - -Route15Text2: ; 5985e (16:585e) - db $8 ; asm - ld hl, Route15TrainerHeader1 - jr asm_33cb7 ; 0x59862 $2e - -Route15Text3: ; 59864 (16:5864) - db $8 ; asm - ld hl, Route15TrainerHeader2 - jr asm_33cb7 ; 0x59868 $28 - -Route15Text4: ; 5986a (16:586a) - db $8 ; asm - ld hl, Route15TrainerHeader3 - jr asm_33cb7 ; 0x5986e $22 - -Route15Text5: ; 59870 (16:5870) - db $8 ; asm - ld hl, Route15TrainerHeader4 - jr asm_33cb7 ; 0x59874 $1c - -Route15Text6: ; 59876 (16:5876) - db $8 ; asm - ld hl, Route15TrainerHeader5 - jr asm_33cb7 ; 0x5987a $16 - -Route15Text7: ; 5987c (16:587c) - db $8 ; asm - ld hl, Route15TrainerHeader6 - jr asm_33cb7 ; 0x59880 $10 - -Route15Text8: ; 59882 (16:5882) - db $8 ; asm - ld hl, Route15TrainerHeader7 - jr asm_33cb7 ; 0x59886 $a - -Route15Text9: ; 59888 (16:5888) - db $8 ; asm - ld hl, Route15TrainerHeader8 - jr asm_33cb7 ; 0x5988c $4 - -Route15Text10: ; 5988e (16:588e) - db $8 ; asm - ld hl, Route15TrainerHeader9 -asm_33cb7: ; 59892 (16:5892) - call TalkToTrainer - jp TextScriptEnd - -Route15BattleText1: ; 59898 (16:5898) - TX_FAR _Route15BattleText1 - db "@" - -Route15EndBattleText1: ; 5989d (16:589d) - TX_FAR _Route15EndBattleText1 - db "@" - -Route15AfterBattleText1: ; 598a2 (16:58a2) - TX_FAR _Route15AfterBattleText1 - db "@" - -Route15BattleText2: ; 598a7 (16:58a7) - TX_FAR _Route15BattleText2 - db "@" - -Route15EndBattleText2: ; 598ac (16:58ac) - TX_FAR _Route15EndBattleText2 - db "@" - -Route15AfterBattleText2: ; 598b1 (16:58b1) - TX_FAR _Route15AfterBattleText2 - db "@" - -Route15BattleText3: ; 598b6 (16:58b6) - TX_FAR _Route15BattleText3 - db "@" - -Route15EndBattleText3: ; 598bb (16:58bb) - TX_FAR _Route15EndBattleText3 - db "@" - -Route15AfterBattleText3: ; 598c0 (16:58c0) - TX_FAR _Route15AfterBattleText3 - db "@" - -Route15BattleText4: ; 598c5 (16:58c5) - TX_FAR _Route15BattleText4 - db "@" - -Route15EndBattleText4: ; 598ca (16:58ca) - TX_FAR _Route15EndBattleText4 - db "@" - -Route15AfterBattleText4: ; 598cf (16:58cf) - TX_FAR _Route15AfterBattleText4 - db "@" - -Route15BattleText5: ; 598d4 (16:58d4) - TX_FAR _Route15BattleText5 - db "@" - -Route15EndBattleText5: ; 598d9 (16:58d9) - TX_FAR _Route15EndBattleText5 - db "@" - -Route15AfterBattleText5: ; 598de (16:58de) - TX_FAR _Route15AfterBattleText5 - db "@" - -Route15BattleText6: ; 598e3 (16:58e3) - TX_FAR _Route15BattleText6 - db "@" - -Route15EndBattleText6: ; 598e8 (16:58e8) - TX_FAR _Route15EndBattleText6 - db "@" - -Route15AfterBattleText6: ; 598ed (16:58ed) - TX_FAR _Route15AfterBattleText6 - db "@" - -Route15BattleText7: ; 598f2 (16:58f2) - TX_FAR _Route15BattleText7 - db "@" - -Route15EndBattleText7: ; 598f7 (16:58f7) - TX_FAR _Route15EndBattleText7 - db "@" - -Route15AfterBattleText7: ; 598fc (16:58fc) - TX_FAR _Route15AfterBattleText7 - db "@" - -Route15BattleText8: ; 59901 (16:5901) - TX_FAR _Route15BattleText8 - db "@" - -Route15EndBattleText8: ; 59906 (16:5906) - TX_FAR _Route15EndBattleText8 - db "@" - -Route15AfterBattleText8: ; 5990b (16:590b) - TX_FAR _Route15AfterBattleText8 - db "@" - -Route15BattleText9: ; 59910 (16:5910) - TX_FAR _Route15BattleText9 - db "@" - -Route15EndBattleText9: ; 59915 (16:5915) - TX_FAR _Route15EndBattleText9 - db "@" - -Route15AfterBattleText9: ; 5991a (16:591a) - TX_FAR _Route15AfterBattleText9 - db "@" - -Route15BattleText10: ; 5991f (16:591f) - TX_FAR _Route15BattleText10 - db "@" - -Route15EndBattleText10: ; 59924 (16:5924) - TX_FAR _Route15EndBattleText10 - db "@" - -Route15AfterBattleText10: ; 59929 (16:5929) - TX_FAR _Route15AfterBattleText10 - db "@" - -Route15Text12: ; 5992e (16:592e) - TX_FAR _Route15Text12 - db "@" - -Route16Script: ; 59933 (16:5933) - call EnableAutoTextBoxDrawing - ld hl, Route16TrainerHeaders - ld de, Route16ScriptPointers - ld a, [W_ROUTE16CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROUTE16CURSCRIPT], a - ret - -Func_59946: ; 59946 (16:5946) +asm_3e72b: ; 3e72b (f:672b) xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_ROUTE16CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -Route16ScriptPointers: ; 59951 (16:5951) - dw Route16Script0 - dw Func_324c - dw EndTrainerBattle - dw Route16Script3 - -Route16Script0: ; 59959 (16:5959) - ld hl, $d7e0 - bit 1, [hl] - jp nz, CheckFightingMapTrainers - bit 0, [hl] - res 0, [hl] - jp z, CheckFightingMapTrainers - ld a, $a - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld a, SNORLAX - ld [W_CUROPPONENT], a ; $d059 - ld a, 30 - ld [W_CURENEMYLVL], a ; $d127 - ld a, $21 - ld [$cc4d], a - ld a, $11 - call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) - call UpdateSprites - ld a, $3 - ld [W_ROUTE16CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -Route16Script3: ; 5998f (16:598f) - ld a, [W_ISINBATTLE] ; $d057 - cp $ff - jp z, Func_59946 - call UpdateSprites - ld a, [$cf0b] - cp $2 - jr z, .asm_599a8 - ld a, $b - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID -.asm_599a8 - ld hl, $d7e0 - set 1, [hl] - call Delay3 - ld a, $0 - ld [W_ROUTE16CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -Route16TextPointers: ; 599b9 (16:59b9) - dw Route16Text1 - dw Route16Text2 - dw Route16Text3 - dw Route16Text4 - dw Route16Text5 - dw Route16Text6 - dw Route16Text7 - dw Route16Text8 - dw Route16Text9 - dw Route16Text10 - dw Route16Text11 - -Route16TrainerHeaders: ; 599cf (16:59cf) -Route16TrainerHeader0: ; 599cf (16:59cf) - db $1 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7df ; flag's byte - dw Route16BattleText1 ; 0x5a22 TextBeforeBattle - dw Route16AfterBattleText1 ; 0x5a2c TextAfterBattle - dw Route16EndBattleText1 ; 0x5a27 TextEndBattle - dw Route16EndBattleText1 ; 0x5a27 TextEndBattle - -Route16TrainerHeader1: ; 599db (16:59db) - db $2 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7df ; flag's byte - dw Route16BattleText2 ; 0x5a3b TextBeforeBattle - dw Route16AfterBattleText2 ; 0x5a45 TextAfterBattle - dw Route16EndBattleText2 ; 0x5a40 TextEndBattle - dw Route16EndBattleText2 ; 0x5a40 TextEndBattle - -Route16TrainerHeader2: ; 599e7 (16:59e7) - db $3 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7df ; flag's byte - dw Route16BattleText3 ; 0x5a54 TextBeforeBattle - dw Route16AfterBattleText3 ; 0x5a5e TextAfterBattle - dw Route16EndBattleText3 ; 0x5a59 TextEndBattle - dw Route16EndBattleText3 ; 0x5a59 TextEndBattle - -Route16TrainerHeader3: ; 599f3 (16:59f3) - db $4 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7df ; flag's byte - dw Route16BattleText4 ; 0x5a6d TextBeforeBattle - dw Route16AfterBattleText4 ; 0x5a77 TextAfterBattle - dw Route16EndBattleText4 ; 0x5a72 TextEndBattle - dw Route16EndBattleText4 ; 0x5a72 TextEndBattle - -Route16TrainerHeader4: ; 599ff (16:59ff) - db $5 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d7df ; flag's byte - dw Route16BattleText5 ; 0x5a86 TextBeforeBattle - dw Route16AfterBattleText5 ; 0x5a90 TextAfterBattle - dw Route16EndBattleText5 ; 0x5a8b TextEndBattle - dw Route16EndBattleText5 ; 0x5a8b TextEndBattle - -Route16TrainerHeader5: ; 59a0b (16:5a0b) - db $6 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7df ; flag's byte - dw Route16BattleText6 ; 0x5a9f TextBeforeBattle - dw Route16AfterBattleText6 ; 0x5aa9 TextAfterBattle - dw Route16EndBattleText6 ; 0x5aa4 TextEndBattle - dw Route16EndBattleText6 ; 0x5aa4 TextEndBattle - - db $ff - -Route16Text1: ; 59a18 (16:5a18) - db $08 ; asm - ld hl, Route16TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -Route16BattleText1: ; 59a22 (16:5a22) - TX_FAR _Route16BattleText1 - db "@" - -Route16EndBattleText1: ; 59a27 (16:5a27) - TX_FAR _Route16EndBattleText1 - db "@" - -Route16AfterBattleText1: ; 59a2c (16:5a2c) - TX_FAR _Route16AfterBattleText1 - db "@" - -Route16Text2: ; 59a31 (16:5a31) - db $08 ; asm - ld hl, Route16TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -Route16BattleText2: ; 59a3b (16:5a3b) - TX_FAR _Route16BattleText2 - db "@" - -Route16EndBattleText2: ; 59a40 (16:5a40) - TX_FAR _Route16EndBattleText2 - db "@" - -Route16AfterBattleText2: ; 59a45 (16:5a45) - TX_FAR _Route16AfterBattleText2 - db "@" - -Route16Text3: ; 59a4a (16:5a4a) - db $08 ; asm - ld hl, Route16TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -Route16BattleText3: ; 59a54 (16:5a54) - TX_FAR _Route16BattleText3 - db "@" - -Route16EndBattleText3: ; 59a59 (16:5a59) - TX_FAR _Route16EndBattleText3 - db "@" - -Route16AfterBattleText3: ; 59a5e (16:5a5e) - TX_FAR _Route16AfterBattleText3 - db "@" - -Route16Text4: ; 59a63 (16:5a63) - db $08 ; asm - ld hl, Route16TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -Route16BattleText4: ; 59a6d (16:5a6d) - TX_FAR _Route16BattleText4 - db "@" - -Route16EndBattleText4: ; 59a72 (16:5a72) - TX_FAR _Route16EndBattleText4 - db "@" - -Route16AfterBattleText4: ; 59a77 (16:5a77) - TX_FAR _Route16AfterBattleText4 - db "@" - -Route16Text5: ; 59a7c (16:5a7c) - db $08 ; asm - ld hl, Route16TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -Route16BattleText5: ; 59a86 (16:5a86) - TX_FAR _Route16BattleText5 - db "@" - -Route16EndBattleText5: ; 59a8b (16:5a8b) - TX_FAR _Route16EndBattleText5 - db "@" - -Route16AfterBattleText5: ; 59a90 (16:5a90) - TX_FAR _Route16AfterBattleText5 - db "@" - -Route16Text6: ; 59a95 (16:5a95) - db $08 ; asm - ld hl, Route16TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -Route16BattleText6: ; 59a9f (16:5a9f) - TX_FAR _Route16BattleText6 - db "@" - -Route16EndBattleText6: ; 59aa4 (16:5aa4) - TX_FAR _Route16EndBattleText6 - db "@" - -Route16AfterBattleText6: ; 59aa9 (16:5aa9) - TX_FAR _Route16AfterBattleText6 - db "@" - -Route16Text7: ; 59aae (16:5aae) - TX_FAR _Route16Text7 - db "@" - -Route16Text10: ; 59ab3 (16:5ab3) - TX_FAR _UnnamedText_59ab3 - db "@" - -Route16Text11: ; 59ab8 (16:5ab8) - TX_FAR _UnnamedText_59ab8 - db "@" - -Route16Text8: ; 59abd (16:5abd) - TX_FAR _Route16Text8 - db "@" - -Route16Text9: ; 59ac2 (16:5ac2) - TX_FAR _Route16Text9 - db "@" - -Route18Script: ; 59ac7 (16:5ac7) - call EnableAutoTextBoxDrawing - ld hl, Route18TrainerHeaders - ld de, Route18ScriptPointers - ld a, [W_ROUTE18CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_ROUTE18CURSCRIPT], a - ret - -Route18ScriptPointers: ; 59ada (16:5ada) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -Route18TextPointers: ; 59ae0 (16:5ae0) - dw Route18Text1 - dw Route18Text2 - dw Route18Text3 - dw Route18Text4 - dw Route18Text5 - -Route18TrainerHeaders: ; 59aea (16:5aea) -Route18TrainerHeader0: ; 59aea (16:5aea) - db $1 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7e3 ; flag's byte - dw Route18BattleText1 ; 0x5b19 TextBeforeBattle - dw Route18AfterBattleText1 ; 0x5b23 TextAfterBattle - dw Route18EndBattleText1 ; 0x5b1e TextEndBattle - dw Route18EndBattleText1 ; 0x5b1e TextEndBattle - -Route18TrainerHeader1: ; 59af6 (16:5af6) - db $2 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7e3 ; flag's byte - dw Route18BattleText2 ; 0x5b32 TextBeforeBattle - dw Route18AfterBattleText2 ; 0x5b3c TextAfterBattle - dw Route18EndBattleText2 ; 0x5b37 TextEndBattle - dw Route18EndBattleText2 ; 0x5b37 TextEndBattle - -Route18TrainerHeader2: ; 59b02 (16:5b02) - db $3 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7e3 ; flag's byte - dw Route18BattleText3 ; 0x5b4b TextBeforeBattle - dw Route18AfterBattleText3 ; 0x5b55 TextAfterBattle - dw Route18EndBattleText3 ; 0x5b50 TextEndBattle - dw Route18EndBattleText3 ; 0x5b50 TextEndBattle - - db $ff - -Route18Text1: ; 59b0f (16:5b0f) - db $08 ; asm - ld hl, Route18TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -Route18BattleText1: ; 59b19 (16:5b19) - TX_FAR _Route18BattleText1 - db "@" - -Route18EndBattleText1: ; 59b1e (16:5b1e) - TX_FAR _Route18EndBattleText1 - db "@" - -Route18AfterBattleText1: ; 59b23 (16:5b23) - TX_FAR _Route18AfterBattleText1 - db "@" - -Route18Text2: ; 59b28 (16:5b28) - db $08 ; asm - ld hl, Route18TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -Route18BattleText2: ; 59b32 (16:5b32) - TX_FAR _Route18BattleText2 - db "@" - -Route18EndBattleText2: ; 59b37 (16:5b37) - TX_FAR _Route18EndBattleText2 - db "@" - -Route18AfterBattleText2: ; 59b3c (16:5b3c) - TX_FAR _Route18AfterBattleText2 - db "@" - -Route18Text3: ; 59b41 (16:5b41) - db $08 ; asm - ld hl, Route18TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -Route18BattleText3: ; 59b4b (16:5b4b) - TX_FAR _Route18BattleText3 - db "@" - -Route18EndBattleText3: ; 59b50 (16:5b50) - TX_FAR _Route18EndBattleText3 - db "@" - -Route18AfterBattleText3: ; 59b55 (16:5b55) - TX_FAR _Route18AfterBattleText3 - db "@" - -Route18Text4: ; 59b5a (16:5b5a) - TX_FAR _Route18Text4 - db "@" - -Route18Text5: ; 59b5f (16:5b5f) - TX_FAR _Route18Text5 - db "@" - -INCLUDE "data/mapHeaders/fanclub.asm" - -FanClubScript: ; 59b70 (16:5b70) - jp EnableAutoTextBoxDrawing - -FanClubBikeInBag: -; check if any bike paraphernalia in bag - ld a, [$d771] - bit 1, a ; got bike voucher? - ret nz - ld b, BICYCLE - call IsItemInBag - ret nz - ld b, BIKE_VOUCHER - jp IsItemInBag - -FanClubTextPointers: ; 59b84 (16:5b84) - dw FanClubText1 - dw FanClubText2 - dw FanClubText3 - dw FanClubText4 - dw FanClubText5 - dw FanClubText6 - dw FanClubText7 - dw FanClubText8 - -FanClubText1: -; pikachu fan - db $08 ; asm - ld a, [$d771] - bit 7, a - jr nz, .mineisbetter - ld hl, .normaltext - call PrintText - ld hl, $d771 - set 6, [hl] - jr .done -.mineisbetter - ld hl, .bettertext - call PrintText - ld hl, $d771 - res 7, [hl] -.done - jp TextScriptEnd - -.normaltext - TX_FAR PikachuFanText - db "@" - -.bettertext - TX_FAR PikachuFanBetterText - db "@" - -FanClubText2: -; seel fan - db $08 ; asm - ld a, [$d771] - bit 6, a - jr nz, .mineisbetter - ld hl, .normaltext - call PrintText - ld hl, $d771 - set 7, [hl] - jr .done -.mineisbetter - ld hl, .bettertext - call PrintText - ld hl, $d771 - res 6, [hl] -.done - jp TextScriptEnd - -.normaltext - TX_FAR SeelFanText - db "@" - -.bettertext - TX_FAR SeelFanBetterText - db "@" - -FanClubText3: -; pikachu - db $8 - ld hl, .text - call PrintText - ld a, PIKACHU - call PlayCry - call WaitForSoundToFinish - jp TextScriptEnd - -.text - TX_FAR FanClubPikachuText - db "@" - -FanClubText4: -; seel - db $08 ; asm - ld hl, .text - call PrintText - ld a, SEEL - call PlayCry - call WaitForSoundToFinish - jp TextScriptEnd - -.text - TX_FAR FanClubSeelText - db "@" - -FanClubText5: -; chair - db $08 ; asm - call FanClubBikeInBag - jr nz, .nothingleft - - ld hl, .meetchairtext - call PrintText - call YesNoChoice - ld a, [$cc26] - and a - jr nz, .nothanks - - ; tell the story - ld hl, .storytext - call PrintText - ld bc, (BIKE_VOUCHER << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, .receivedvouchertext - call PrintText - ld hl, $d771 - set 1, [hl] - jr .done -.BagFull - ld hl, .bagfulltext - call PrintText - jr .done -.nothanks - ld hl, .nostorytext - call PrintText - jr .done -.nothingleft - ld hl, .finaltext - call PrintText -.done - jp TextScriptEnd - -.meetchairtext - TX_FAR FanClubMeetChairText - db "@" - -.storytext - TX_FAR FanClubChairStoryText - db "@" - -.receivedvouchertext - TX_FAR ReceivedBikeVoucherText - db $11 - TX_FAR ExplainBikeVoucherText - db "@" - -.nostorytext - TX_FAR FanClubNoStoryText - db "@" - -.finaltext - TX_FAR FanClubChairFinalText - db "@" - -.bagfulltext - TX_FAR FanClubBagFullText - db "@" - -FanClubText6: ; 59c88 (16:5c88) - TX_FAR _FanClubText6 - db "@" - -FanClubText7: ; 59c8d (16:5c8d) - TX_FAR _FanClubText7 - db "@" - -FanClubText8: ; 59c92 (16:5c92) - TX_FAR _FanClubText8 - db "@" - -INCLUDE "data/mapObjects/fanclub.asm" - -FanClubBlocks: ; 59cd5 (16:5cd5) - INCBIN "maps/fanclub.blk" - -INCLUDE "data/mapHeaders/silphco2.asm" + ld [$cced], a + call PrintMonName1Text + ld a, [W_ENEMYMOVEEFFECT] ; $cfcd + ld hl, EffectsArray1 ; $4000 + ld de, $1 + call IsInArray + jp c, Func_3f132 + ld a, [W_ENEMYMOVEEFFECT] ; $cfcd + ld hl, EffectsArray5B ; $4049 + ld de, $1 + call IsInArray + call c, Func_3f132 +asm_3e750: ; 3e750 (f:6750) + call Func_3ec81 + ld a, [W_ENEMYMOVEEFFECT] ; $cfcd + ld hl, EffectsArray2 ; $4011 + ld de, $1 + call IsInArray + jp c, Func_3e77f + call CriticalHitTest + call HandleCounterMove + jr z, asm_3e782 + call Func_3ec81 + call Func_3de75 + call Func_3ec81 + call MoreCalculateDamage + jp z, Func_3e7d1 + call AdjustDamageForMoveType + call Func_3e687 -SilphCo2Script: ; 59cf1 (16:5cf1) - call SilphCo2Script_59d07 - call EnableAutoTextBoxDrawing - ld hl, SilphCo2TrainerHeaders - ld de, SilphCo2ScriptPointers - ld a, [W_SILPHCO2CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_SILPHCO2CURSCRIPT], a - ret +Func_3e77f: ; 3e77f (f:677f) + call MoveHitTest +asm_3e782: ; 3e782 (f:6782) + ld a, [W_MOVEMISSED] ; $d05f + and a + jr z, .asm_3e791 + ld a, [W_ENEMYMOVEEFFECT] ; $cfcd + cp $7 + jr z, asm_3e7a0 + jr Func_3e7d1 +.asm_3e791 + call Func_3ec81 -SilphCo2Script_59d07: ; 59d07 (16:5d07) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - ret z - ld hl, DataTable_59d3e - call Func_59d43 - call Func_59d6f - ld a, [$d826] - bit 5, a - jr nz, .asm_59d2e +Func_3e794: ; 3e794 (f:6794) + ld a, [W_ENEMYMOVEEFFECT] ; $cfcd + and a + ld a, $1 + jr z, asm_3e7a4 + ld a, $2 + jr asm_3e7a4 +asm_3e7a0: ; 3e7a0 (f:67a0) + call Func_3ec81 + xor a +asm_3e7a4: ; 3e7a4 (f:67a4) push af - ld a, $54 - ld [$d09f], a - ld bc, $0202 - ld a, $17 - call Predef + ld a, [W_ENEMYBATTSTATUS2] ; $d068 + bit 4, a + ld hl, Func_79747 + ld b, BANK(Func_79747) + call nz, Bankswitch pop af -.asm_59d2e - bit 6, a - ret nz - ld a, $54 - ld [$d09f], a - ld bc, $0502 - ld a, $17 - jp Predef - -DataTable_59d3e: ; 59d3e (16:5d3e) - db $02,$02,$05,$02,$FF + ld [$cc5b], a + ld a, [W_ENEMYMOVENUM] ; $cfcc + call PlayMoveAnimation + call Func_3eed3 + call Func_3cdec + ld a, [W_ENEMYBATTSTATUS2] ; $d068 + bit 4, a + ld hl, Func_79771 + ld b, BANK(Func_79771) + call nz, Bankswitch + jr asm_3e7ef -Func_59d43: ; 59d43 (16:5d43) - push hl - ld hl, $d73f - ld a, [hli] - ld b, a - ld a, [hl] - ld c, a +Func_3e7d1: ; 3e7d1 (f:67d1) + call Func_3ec81 + ld c, $1e + call DelayFrames + ld a, [W_ENEMYMOVEEFFECT] ; $cfcd + cp $2b + jr z, .asm_3e7e6 + cp $27 + jr z, .asm_3e7e6 + jr asm_3e7ef +.asm_3e7e6 xor a - ld [$ffe0], a - pop hl -.asm_59d4f + ld [$cc5b], a + ld a,STATUS_AFFECTED_ANIM + call PlayMoveAnimation +asm_3e7ef: ; 3e7ef (f:67ef) + ld a, [W_ENEMYMOVEEFFECT] ; $cfcd + cp $9 + jr nz, .asm_3e7ff + call MirrorMoveCopyMove + jp z, Func_3e88c + jp Func_3e6fc +.asm_3e7ff + cp $53 + jr nz, .asm_3e809 + call MetronomePickMove + jp Func_3e6fc +.asm_3e809 + ld a, [W_ENEMYMOVEEFFECT] ; $cfcd + ld hl, EffectsArray3 ; $4014 + ld de, $1 + call IsInArray + jp c, Func_3f132 + ld a, [W_MOVEMISSED] ; $d05f + and a + jr z, .asm_3e82b + call PrintMoveFailureText + ld a, [W_ENEMYMOVEEFFECT] ; $cfcd + cp $7 + jr z, .asm_3e83e + jp Func_3e88c +.asm_3e82b + call ApplyAttackToPlayerPokemon + call Func_3dc5c + ld hl, DisplayEffectiveness + ld b, BANK(DisplayEffectiveness) + call Bankswitch + ld a, $1 + ld [$ccf4], a +.asm_3e83e + ld a, [W_ENEMYMOVEEFFECT] ; $cfcd + ld hl, EffectsArray4 ; $4030 + ld de, $1 + call IsInArray + call c, Func_3f132 + ld hl, W_PLAYERMONCURHP ; $d015 ld a, [hli] - cp $ff - jr z, .asm_59d6b + ld b, [hl] + or b + ret z + call HandleBuildingRage + ld hl, W_ENEMYBATTSTATUS1 ; $d067 + bit 2, [hl] + jr z, .asm_3e873 push hl - ld hl, $ffe0 - inc [hl] + ld hl, $d06f + dec [hl] pop hl - cp b - jr z, .asm_59d60 - inc hl - jr .asm_59d4f -.asm_59d60 - ld a, [hli] - cp c - jr nz, .asm_59d4f - ld hl, $d73f - xor a - ld [hli], a - ld [hl], a - ret -.asm_59d6b + jp nz, Func_3e794 + res 2, [hl] + ld hl, HitMultipleTimesText + call PrintText xor a - ld [$ffe0], a - ret - -Func_59d6f: ; 59d6f (16:5d6f) - ld hl, $d826 - ld a, [$ffe0] + ld [$cd05], a +.asm_3e873 + ld a, [W_ENEMYMOVEEFFECT] ; $cfcd and a - ret z - cp $1 - jr nz, .asm_59d7d - set 5, [hl] - ret -.asm_59d7d - set 6, [hl] - ret - -SilphCo2ScriptPointers: ; 59d80 (16:5d80) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -SilphCo2TextPointers: ; 59d86 (16:5d86) - dw SilphCo2Text1 - dw SilphCo2Text2 - dw SilphCo2Text3 - dw SilphCo2Text4 - dw SilphCo2Text5 - -SilphCo2TrainerHeaders: ; 59d90 (16:5d90) -SilphCo2TrainerHeader0: ; 59d90 (16:5d90) - db $2 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d825 ; flag's byte - dw SilphCo2BattleText1 ; 0x5e2a TextBeforeBattle - dw SilphCo2AfterBattleText1 ; 0x5e34 TextAfterBattle - dw SilphCo2EndBattleText1 ; 0x5e2f TextEndBattle - dw SilphCo2EndBattleText1 ; 0x5e2f TextEndBattle - -SilphCo2TrainerHeader1: ; 59d9c (16:5d9c) - db $3 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d825 ; flag's byte - dw SilphCo2BattleText2 ; 0x5e39 TextBeforeBattle - dw SilphCo2AfterBattleText2 ; 0x5e43 TextAfterBattle - dw SilphCo2EndBattleText2 ; 0x5e3e TextEndBattle - dw SilphCo2EndBattleText2 ; 0x5e3e TextEndBattle - -SilphCo2TrainerHeader2: ; 59da8 (16:5da8) - db $4 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d825 ; flag's byte - dw SilphCo2BattleText3 ; 0x5e48 TextBeforeBattle - dw SilphCo2AfterBattleText3 ; 0x5e52 TextAfterBattle - dw SilphCo2EndBattleText3 ; 0x5e4d TextEndBattle - dw SilphCo2EndBattleText3 ; 0x5e4d TextEndBattle - -SilphCo2TrainerHeader3: ; 59db4 (16:5db4) - db $5 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d825 ; flag's byte - dw SilphCo2BattleText4 ; 0x5e57 TextBeforeBattle - dw SilphCo2AfterBattleText4 ; 0x5e61 TextAfterBattle - dw SilphCo2EndBattleText4 ; 0x5e5c TextEndBattle - dw SilphCo2EndBattleText4 ; 0x5e5c TextEndBattle - - db $ff - -SilphCo2Text1: ; 59dc1 (16:5dc1) - db $08 ; asm - ld a, [$d826] - bit 7, a - jr nz, asm_b8a0d ; 0x59dc7 - ld hl, UnnamedText_59ded - call PrintText - ld bc, (TM_36 << 8) | 1 - call GiveItem - ld hl, TM36NoRoomText - jr nc, asm_2c1e0 ; 0x59dd8 - ld hl, $d826 - set 7, [hl] - ld hl, ReceivedTM36Text - jr asm_2c1e0 ; 0x59de2 -asm_b8a0d ; 0x59de4 - ld hl, TM36ExplanationText -asm_2c1e0 ; 0x59de7 - call PrintText - jp TextScriptEnd - -UnnamedText_59ded: ; 59ded (16:5ded) - TX_FAR _UnnamedText_59ded - db "@" - -ReceivedTM36Text: ; 59df2 (16:5df2) - TX_FAR _ReceivedTM36Text - db $0B, "@" - -TM36ExplanationText: ; 59df8 (16:5df8) - TX_FAR _TM36ExplanationText - db "@" - -TM36NoRoomText: ; 59dfd (16:5dfd) - TX_FAR _TM36NoRoomText - db "@" - -SilphCo2Text2: ; 59e02 (16:5e02) - db $08 ; asm - ld hl, SilphCo2TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -SilphCo2Text3: ; 59e0c (16:5e0c) - db $08 ; asm - ld hl, SilphCo2TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -SilphCo2Text4: ; 59e16 (16:5e16) - db $08 ; asm - ld hl, SilphCo2TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -SilphCo2Text5: ; 59e20 (16:5e20) - db $08 ; asm - ld hl, SilphCo2TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -SilphCo2BattleText1: ; 59e2a (16:5e2a) - TX_FAR _SilphCo2BattleText1 - db "@" - -SilphCo2EndBattleText1: ; 59e2f (16:5e2f) - TX_FAR _SilphCo2EndBattleText1 - db "@" - -SilphCo2AfterBattleText1: ; 59e34 (16:5e34) - TX_FAR _SilphCo2AfterBattleText1 - db "@" - -SilphCo2BattleText2: ; 59e39 (16:5e39) - TX_FAR _SilphCo2BattleText2 - db "@" - -SilphCo2EndBattleText2: ; 59e3e (16:5e3e) - TX_FAR _SilphCo2EndBattleText2 - db "@" - -SilphCo2AfterBattleText2: ; 59e43 (16:5e43) - TX_FAR _SilphCo2AfterBattleText2 - db "@" - -SilphCo2BattleText3: ; 59e48 (16:5e48) - TX_FAR _SilphCo2BattleText3 - db "@" - -SilphCo2EndBattleText3: ; 59e4d (16:5e4d) - TX_FAR _SilphCo2EndBattleText3 - db "@" - -SilphCo2AfterBattleText3: ; 59e52 (16:5e52) - TX_FAR _SilphCo2AfterBattleText3 - db "@" - -SilphCo2BattleText4: ; 59e57 (16:5e57) - TX_FAR _SilphCo2BattleText4 - db "@" - -SilphCo2EndBattleText4: ; 59e5c (16:5e5c) - TX_FAR _SilphCo2EndBattleText4 - db "@" + jr z, Func_3e88c + ld hl, EffectsArray5 ; $403b + ld de, $1 + call IsInArray + call nc, Func_3f132 + jr Func_3e88c -SilphCo2AfterBattleText4: ; 59e61 (16:5e61) - TX_FAR _SilphCo2AfterBattleText4 +HitMultipleTimesText: ; 3e887 (f:6887) + TX_FAR _HitMultipleTimesText db "@" -INCLUDE "data/mapObjects/silphco2.asm" - -SilphCo2Blocks: ; 59ec8 (16:5ec8) - INCBIN "maps/silphco2.blk" - -INCLUDE "data/mapHeaders/silphco3.asm" - -SilphCo3Script: ; 59f5b (16:5f5b) - call SilphCo3Script_59f71 - call EnableAutoTextBoxDrawing - ld hl, SilphCo3TrainerHeaders - ld de, SilphCo3ScriptPointers - ld a, [W_SILPHCO3CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_SILPHCO3CURSCRIPT], a +Func_3e88c: ; 3e88c (f:688c) + ld b, $1 ret -SilphCo3Script_59f71: ; 59f71 (16:5f71) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - ret z - ld hl, DataTable_59fa8 ; $5fa8 - call Func_59d43 - call Func_59fad - ld a, [$d828] - bit 0, a - jr nz, .asm_59f98 - push af - ld a, $5f - ld [$d09f], a - ld bc, $404 - ld a, $17 - call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) - pop af -.asm_59f98 - bit 1, a - ret nz - ld a, $5f - ld [$d09f], a - ld bc, $408 - ld a, $17 - jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) - -DataTable_59fa8: ; 59fa8 (16:5fa8) - db $04,$04,$04,$08,$FF - -Func_59fad: ; 59fad (16:5fad) - ld hl, $d828 - ld a, [$ffe0] +Func_3e88f: ; 3e88f (f:688f) + ld hl, W_ENEMYMONSTATUS ; $cfe9 + ld a, [hl] + and $7 + jr z, .asm_3e8bf + dec a + ld [W_ENEMYMONSTATUS], a ; $cfe9 and a - ret z - cp $1 - jr nz, .asm_59fbb - set 0, [hl] - ret -.asm_59fbb - set 1, [hl] - ret - -SilphCo3ScriptPointers: ; 59fbe (16:5fbe) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -SilphCo3TextPointers: ; 59fc4 (16:5fc4) - dw SilphCo3Text1 - dw SilphCo3Text2 - dw SilphCo3Text3 - dw Predef5CText - -SilphCo3TrainerHeaders: ; 59fcc (16:5fcc) -SilphCo3TrainerHeader0: ; 59fcc (16:5fcc) - db $2 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d827 ; flag's byte - dw SilphCo3BattleText1 ; 0x600d TextBeforeBattle - dw SilphCo3AfterBattleText1 ; 0x6017 TextAfterBattle - dw SilphCo3EndBattleText1 ; 0x6012 TextEndBattle - dw SilphCo3EndBattleText1 ; 0x6012 TextEndBattle - -SilphCo3TrainerHeader1: ; 59fd8 (16:5fd8) - db $3 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d827 ; flag's byte - dw SilphCo3BattleText2 ; 0x6026 TextBeforeBattle - dw SilphCo3AfterBattleText2 ; 0x6030 TextAfterBattle - dw SilphCo3EndBattleText2 ; 0x602b TextEndBattle - dw SilphCo3EndBattleText2 ; 0x602b TextEndBattle - - db $ff - -SilphCo3Text1: ; 59fe5 (16:5fe5) - db $08 ; asm - ld a, [$d838] - bit 7, a - ld hl, UnnamedText_59ffe - jr nz, asm_8c56f ; 0x59fee - ld hl, UnnamedText_59ff9 -asm_8c56f ; 0x59ff3 + jr z, .asm_3e8af + ld hl, FastAsleepText call PrintText - jp TextScriptEnd - -UnnamedText_59ff9: ; 59ff9 (16:5ff9) - TX_FAR _UnnamedText_59ff9 - db "@" - -UnnamedText_59ffe: ; 59ffe (16:5ffe) - TX_FAR _UnnamedText_59ffe - db "@" - -SilphCo3Text2: ; 5a003 (16:6003) - db $08 ; asm - ld hl, SilphCo3TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -SilphCo3BattleText1: ; 5a00d (16:600d) - TX_FAR _SilphCo3BattleText1 - db "@" - -SilphCo3EndBattleText1: ; 5a012 (16:6012) - TX_FAR _SilphCo3EndBattleText1 - db "@" - -SilphCo3AfterBattleText1: ; 5a017 (16:6017) - TX_FAR _SilphCo3AfterBattleText1 - db "@" - -SilphCo3Text3: ; 5a01c (16:601c) - db $08 ; asm - ld hl, SilphCo3TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -SilphCo3BattleText2: ; 5a026 (16:6026) - TX_FAR _SilphCo3BattleText2 - db "@" - -SilphCo3EndBattleText2: ; 5a02b (16:602b) - TX_FAR _SilphCo3EndBattleText2 - db "@" - -SilphCo3AfterBattleText2: ; 5a030 (16:6030) - TX_FAR _SilphCo3AfterBattleText2 - db "@" - -INCLUDE "data/mapObjects/silphco3.asm" - -SilphCo3Blocks: ; 5a0a6 (16:60a6) - INCBIN "maps/silphco3.blk" - -INCLUDE "data/mapHeaders/silphco10.asm" - -SilphCo10Script: ; 5a139 (16:6139) - call SilphCo10Script_5a14f - call EnableAutoTextBoxDrawing - ld hl, SilphCo10TrainerHeaders - ld de, SilphCo10ScriptPointers - ld a, [W_SILPHCO10CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_SILPHCO10CURSCRIPT], a - ret - -SilphCo10Script_5a14f: ; 5a14f (16:614f) - ld hl, $d126 + xor a + ld [$cc5b], a + ld a,SLP_ANIM + call PlayMoveAnimation + jr .asm_3e8b5 +.asm_3e8af + ld hl, WokeUpText + call PrintText +.asm_3e8b5 + xor a + ld [$ccf2], a + ld hl, Func_3e88c ; $688c + jp Func_3eab8 +.asm_3e8bf bit 5, [hl] - res 5, [hl] - ret z - ld hl, DataTable_5a173 ; $6173 - call Func_59d43 - call Func_5a176 - ld a, [$d836] - bit 0, a - ret nz - ld a, $54 - ld [$d09f], a - ld bc, $405 - ld a, $17 - jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) - -DataTable_5a173: ; 5a173 (16:6173) - db $04,$05,$FF - -Func_5a176: ; 5a176 (16:6176) - ld a, [$ffe0] - and a - ret z - ld hl, $d836 - set 0, [hl] - ret - -SilphCo10ScriptPointers: ; 5a180 (16:6180) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -SilphCo10TextPointers: ; 5a186 (16:6186) - dw SilphCo10Text1 - dw SilphCo10Text2 - dw SilphCo10Text3 - dw Predef5CText - dw Predef5CText - dw Predef5CText - -SilphCo10TrainerHeaders: ; 5a192 (16:6192) -SilphCo10TrainerHeader0: ; 5a192 (16:6192) - db $1 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d835 ; flag's byte - dw SilphCo10BattleText1 ; 0x61dd TextBeforeBattle - dw SilphCo10AfterBattleText1 ; 0x61e7 TextAfterBattle - dw SilphCo10EndBattleText1 ; 0x61e2 TextEndBattle - dw SilphCo10EndBattleText1 ; 0x61e2 TextEndBattle - -SilphCo10TrainerHeader1: ; 5a19e (16:619e) - db $2 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d835 ; flag's byte - dw SilphCo10BattleText2 ; 0x61ec TextBeforeBattle - dw SilphCo10AfterBattleText2 ; 0x61f6 TextAfterBattle - dw SilphCo10EndBattleText2 ; 0x61f1 TextEndBattle - dw SilphCo10EndBattleText2 ; 0x61f1 TextEndBattle - - db $ff - -SilphCo10Text1: ; 5a1ab (16:61ab) - db $08 ; asm - ld hl, SilphCo10TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -SilphCo10Text2: ; 5a1b5 (16:61b5) - db $08 ; asm - ld hl, SilphCo10TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -SilphCo10Text3: ; 5a1bf (16:61bf) - db $08 ; asm - ld a, [$d838] - bit 7, a - ld hl, UnnamedText_5a1d8 - jr nz, .asm_cf85f - ld hl, UnnamedText_5a1d3 -.asm_cf85f + jr z, .asm_3e8d3 + ld hl, IsFrozenText call PrintText - jp TextScriptEnd - -UnnamedText_5a1d3: ; 5a1d3 (16:61d3) - TX_FAR _UnnamedText_5a1d3 - db "@" - -UnnamedText_5a1d8: ; 5a1d8 (16:61d8) - TX_FAR _UnnamedText_5a1d8 - db "@" - -SilphCo10BattleText1: ; 5a1dd (16:61dd) - TX_FAR _SilphCo10BattleText1 - db "@" - -SilphCo10EndBattleText1: ; 5a1e2 (16:61e2) - TX_FAR _SilphCo10EndBattleText1 - db "@" - -SilphCo10AfterBattleText1: ; 5a1e7 (16:61e7) - TX_FAR _SilphCo10AfterBattleText1 - db "@" - -SilphCo10BattleText2: ; 5a1ec (16:61ec) - TX_FAR _SilphCo10BattleText2 - db "@" - -SilphCo10EndBattleText2: ; 5a1f1 (16:61f1) - TX_FAR _SilphCo10EndBattleText2 - db "@" - -SilphCo10AfterBattleText2: ; 5a1f6 (16:61f6) - TX_FAR _SilphCo10AfterBattleText2 - db "@" - -INCLUDE "data/mapObjects/silphco10.asm" - -SilphCo10Blocks: ; 5a25a (16:625a) - INCBIN "maps/silphco10.blk" - -INCLUDE "data/mapHeaders/lance.asm" + xor a + ld [$ccf2], a + ld hl, Func_3e88c ; $688c + jp Func_3eab8 +.asm_3e8d3 + ld a, [W_PLAYERBATTSTATUS1] ; $d062 + bit 5, a + jp z, Func_3e8e7 + ld hl, CantMoveText + call PrintText + ld hl, Func_3e88c ; $688c + jp Func_3eab8 -LanceScript: ; 5a2ae (16:62ae) - call LanceScript_5a2c4 - call EnableAutoTextBoxDrawing - ld hl, LanceTrainerHeaders - ld de, LanceScriptPointers - ld a, [W_LANCECURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_LANCECURSCRIPT], a - ret +Func_3e8e7: ; 3e8e7 (f:68e7) + ld hl, W_ENEMYBATTSTATUS1 ; $d067 + bit 3, [hl] + jp z, Func_3e8fd + res 3, [hl] + ld hl, FlinchedText + call PrintText + ld hl, Func_3e88c ; $688c + jp Func_3eab8 -LanceScript_5a2c4: ; 5a2c4 (16:62c4) - ld hl, $d126 +Func_3e8fd: ; 3e8fd (f:68fd) + ld hl, W_ENEMYBATTSTATUS2 ; $d068 bit 5, [hl] + jr z, .asm_3e912 res 5, [hl] - ret z - ld a, [$d866] - bit 7, a - jr nz, .asm_5a2da - ld a, $31 - ld b, $32 - jp Func_5a2de -.asm_5a2da - ld a, $72 - ld b, $73 - -Func_5a2de: ; 5a2de (16:62de) - push bc - ld [$d09f], a - ld bc, $602 - call Func_5a2f0 - pop bc - ld a, b - ld [$d09f], a - ld bc, $603 - -Func_5a2f0: ; 5a2f0 (16:62f0) - ld a, $17 - jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) - -Func_5a2f5: ; 5a2f5 (16:62f5) - xor a - ld [W_LANCECURSCRIPT], a - ret - -LanceScriptPointers: ; 5a2fa (16:62fa) - dw LanceScript0 - dw Func_324c - dw LanceScript2 - dw LanceScript3 - dw LanceScript4 - -LanceScript4: ; 5a304 (16:6304) - ret - -LanceScript0: ; 5a305 (16:6305) - ld a, [$d866] - bit 6, a - ret nz - ld hl, CoordsData_5a33e - call ArePlayerCoordsInArray - jp nc, CheckFightingMapTrainers - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, [wWhichTrade] ; $cd3d - cp $3 - jr nc, .asm_5a325 - ld a, $1 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - jp DisplayTextID -.asm_5a325 - cp $5 - jr z, Func_5a35b - ld hl, $d866 - bit 7, [hl] - set 7, [hl] - ret nz - ld hl, $d126 - set 5, [hl] - ld a, (SFX_02_57 - SFX_Headers_02) / 3 - call PlaySound - jp LanceScript_5a2c4 - -CoordsData_5a33e: ; 5a33e (16:633e) - db $01,$05 - db $02,$06 - db $0B,$05 - db $0B,$06 - db $10,$18 - db $FF - -LanceScript2: ; 5a349 (16:6349) - call EndTrainerBattle - ld a, [W_ISINBATTLE] ; $d057 - cp $ff - jp z, Func_5a2f5 - ld a, $1 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - jp DisplayTextID - -Func_5a35b: ; 5a35b (16:635b) - ld a, $ff - ld [wJoypadForbiddenButtonsMask], a - ld hl, $ccd3 - ld de, RLEList_5a379 - call DecodeRLEList - dec a - ld [$cd38], a - call Func_3486 - ld a, $3 - ld [W_LANCECURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -RLEList_5a379: ; 5a379 (16:6379) - db $40, $0C - db $20, $0C - db $80, $07 - db $20, $06 - db $FF - -LanceScript3: ; 5a382 (16:6382) - ld a, [$cd38] + ld hl, MustRechargeText + call PrintText + ld hl, Func_3e88c ; $688c + jp Func_3eab8 +.asm_3e912 + ld hl, W_ENEMYDISABLEDMOVE ; $d072 + ld a, [hl] and a - ret nz - call Delay3 - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_LANCECURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -LanceTextPointers: ; 5a395 (16:6395) - dw LanceText1 - -LanceTrainerHeaders: ; 5a397 (16:6397) -LanceTrainerHeader0: ; 5a397 (16:6397) - db $1 ; flag's bit - db ($0 << 4) ; trainer's view range - dw $d866 ; flag's byte - dw LanceBeforeBattleText ; 0x63ae TextBeforeBattle - dw LanceAfterBattleText ; 0x63b8 TextAfterBattle - dw LanceEndBattleText ; 0x63b3 TextEndBattle - dw LanceEndBattleText ; 0x63b3 TextEndBattle - - db $ff - -LanceText1: ; 5a3a4 (16:63a4) - db $08 ; asm - ld hl, LanceTrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -LanceBeforeBattleText: ; 5a3ae (16:63ae) - TX_FAR _LanceBeforeBattleText - db "@" - -LanceEndBattleText: ; 5a3b3 (16:63b3) - TX_FAR _LanceEndBattleText - db "@" - -LanceAfterBattleText: ; 5a3b8 (16:63b8) - TX_FAR _LanceAfterBattleText - db $8 - ld hl, $d866 - set 6, [hl] - jp TextScriptEnd - -INCLUDE "data/mapObjects/lance.asm" - -LanceBlocks: ; 5a3e9 (16:63e9) - INCBIN "maps/lance.blk" - -INCLUDE "data/mapHeaders/halloffameroom.asm" - -HallofFameRoomScript: ; 5a49e (16:649e) - call EnableAutoTextBoxDrawing - ld hl, HallofFameRoomScriptPointers - ld a, [W_HALLOFFAMEROOMCURSCRIPT] - jp CallFunctionInTable - -Func_5a4aa: ; 5a4aa (16:64aa) + jr z, .asm_3e929 + dec a + ld [hl], a + and $f + jr nz, .asm_3e929 + ld [hl], a + ld [$ccef], a + ld hl, DisabledNoMoreText + call PrintText +.asm_3e929 + ld a, [W_ENEMYBATTSTATUS1] ; $d067 + add a + jp nc, Func_3e9aa + ld hl, $d070 + dec [hl] + jr nz, .asm_3e944 + ld hl, W_ENEMYBATTSTATUS1 ; $d067 + res 7, [hl] + ld hl, ConfusedNoMoreText + call PrintText + jp Func_3e9aa +.asm_3e944 + ld hl, IsConfusedText + call PrintText xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_HALLOFFAMEROOMCURSCRIPT], a - ret - -HallofFameRoomScriptPointers: ; 5a4b2 (16:64b2) - dw HallofFameRoomScript0 - dw HallofFameRoomScript1 - dw HallofFameRoomScript2 - dw HallofFameRoomScript3 - -HallofFameRoomScript3: ; 5a4ba (16:64ba) - ret - -HallofFameRoomScript2: ; 5a4bb (16:64bb) - call Delay3 - ld a, [$d358] + ld [$cc5b], a + ld a,CONF_ANIM + call PlayMoveAnimation + call GenRandomInBattle + cp $80 + jr c, Func_3e9aa + ld hl, W_ENEMYBATTSTATUS1 ; $d067 + ld a, [hl] + and $80 + ld [hl], a + ld hl, HurtItselfText + call PrintText + ld hl, W_PLAYERMONDEF + ld a, [hli] push af - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $55 - call Predef - pop af - ld [$d358], a - ld hl, W_FLAGS_D733 - res 1, [hl] - inc hl - set 0, [hl] - xor a - ld hl, W_LORELEICURSCRIPT - ld [hli], a + ld a, [hld] + push af + ld a, [W_ENEMYMONDEFENSE] ; $cff8 ld [hli], a + ld a, [$cff9] ld [hl], a - ld [W_LANCECURSCRIPT], a - ld [W_HALLOFFAMEROOMCURSCRIPT], a - ld hl, $d863 - ld [hli], a - ld [hli], a + ld hl, W_ENEMYMOVEEFFECT ; $cfcd + push hl + ld a, [hl] + push af + xor a ld [hli], a + ld [$d05e], a + ld a, $28 ld [hli], a + xor a + ld [hl], a + call Func_3de75 + call MoreCalculateDamage + pop af + pop hl + ld [hl], a + ld hl, $d028 + pop af + ld [hld], a + pop af ld [hl], a xor a - ld [W_HALLOFFAMEROOMCURSCRIPT], a - ld a, $0 - ld [$d719], a - ld b, BANK(SaveSAVtoSRAM) - ld hl, SaveSAVtoSRAM - call Bankswitch - ld b, $5 -.asm_5a4ff - ld c, $78 - call DelayFrames - dec b - jr nz, .asm_5a4ff ; 0x5a505 $f8 - call WaitForTextScrollButtonPress - jp InitGame - -HallofFameRoomScript0: ; 5a50d (16:650d) - ld a, $ff - ld [wJoypadForbiddenButtonsMask], a - ld hl, $ccd3 - ld de, RLEMovement5a528 - call DecodeRLEList - dec a - ld [$cd38], a - call Func_3486 + ld [$cc5b], a + ld [H_WHOSETURN], a ; $fff3 + ld a, POUND + call PlayMoveAnimation ld a, $1 - ld [W_HALLOFFAMEROOMCURSCRIPT], a - ret - -RLEMovement5a528: ; 5a528 (16:6528) - db $40,$5 - db $ff + ld [H_WHOSETURN], a ; $fff3 + call ApplyDamageToEnemyPokemon + jr asm_3e9d3 -HallofFameRoomScript1: ; 5a52b (16:652b) - ld a, [$cd38] +Func_3e9aa: ; 3e9aa (f:69aa) + ld a, [$ccef] and a - ret nz + jr z, .asm_3e9bf + ld hl, wEnemySelectedMove ; $ccdd + cp [hl] + jr nz, .asm_3e9bf + call PrintMoveIsDisabledText + ld hl, Func_3e88c ; $688c + jp Func_3eab8 +.asm_3e9bf + ld hl, W_ENEMYMONSTATUS ; $cfe9 + bit 6, [hl] + jr z, asm_3e9f6 + call GenRandomInBattle + cp $3f + jr nc, asm_3e9f6 + ld hl, FullyParalyzedText + call PrintText +asm_3e9d3: ; 3e9d3 (f:69d3) + ld hl, W_ENEMYBATTSTATUS1 ; $d067 + ld a, [hl] + and $cc + ld [hl], a + ld a, [W_ENEMYMOVEEFFECT] ; $cfcd + cp $2b + jr z, .asm_3e9e7 + cp $27 + jr z, .asm_3e9e7 + jr .asm_3e9f0 +.asm_3e9e7 + xor a + ld [$cc5b], a + ld a, STATUS_AFFECTED_ANIM + call PlayMoveAnimation +.asm_3e9f0 + ld hl, Func_3e88c ; $688c + jp Func_3eab8 +asm_3e9f6: ; 3e9f6 (f:69f6) + ld hl, W_ENEMYBATTSTATUS1 ; $d067 + bit 0, [hl] + jr z, .asm_3ea54 + xor a + ld [W_ENEMYMOVENUM], a ; $cfcc + ld hl, W_DAMAGE ; $d0d7 + ld a, [hli] + ld b, a + ld c, [hl] + ld hl, $cd06 + ld a, [hl] + add c + ld [hld], a + ld a, [hl] + adc b + ld [hl], a + ld hl, $d06f + dec [hl] + jr z, .asm_3ea1c + ld hl, Func_3e88c ; $688c + jp Func_3eab8 +.asm_3ea1c + ld hl, W_ENEMYBATTSTATUS1 ; $d067 + res 0, [hl] + ld hl, UnleashedEnergyText + call PrintText ld a, $1 - ld [$d528], a + ld [W_ENEMYMOVEPOWER], a ; $cfce + ld hl, $cd06 + ld a, [hld] + add a + ld b, a + ld [$d0d8], a + ld a, [hl] + rl a + ld [W_DAMAGE], a ; $d0d7 + or b + jr nz, .asm_3ea43 ld a, $1 - ld [$ff8c], a - call SetSpriteMovementBytesToFF - ld a, $8 - ld [$ff8d], a - call Func_34a6 - call Delay3 + ld [W_MOVEMISSED], a ; $d05f +.asm_3ea43 xor a - ld [wJoypadForbiddenButtonsMask], a - inc a - ld [$d528], a - ld a, $1 - ld [$ff8c], a - call DisplayTextID - ld a, $ff - ld [wJoypadForbiddenButtonsMask], a - ld a, $8 - ld [$cc4d], a - ld a, $11 - call Predef - ld a, $2 - ld [W_HALLOFFAMEROOMCURSCRIPT], a - ret - -HallofFameRoomTextPointers: ; 5a56a (16:656a) - dw HallofFameRoomText1 - -HallofFameRoomText1: ; 5a56c (16:656c) - TX_FAR _HallofFameRoomText1 - db "@" - -INCLUDE "data/mapObjects/halloffameroom.asm" - -HallofFameRoomBlocks: ; 5a58b (16:658b) - INCBIN "maps/halloffameroom.blk" - -RemoveGuardDrink: ; 5a59f (16:659f) - ld hl, GuardDrinksList -.drinkLoop - ld a, [hli] - ld [$ffdb], a - and a - ret z + ld [hli], a + ld [hl], a + ld a, BIDE + ld [W_ENEMYMOVENUM], a ; $cfcc + call Func_3ec81 + ld hl, asm_3e782 ; $6782 + jp Func_3eab8 +.asm_3ea54 + bit 1, [hl] + jr z, .asm_3ea83 + ld a, THRASH + ld [W_ENEMYMOVENUM], a ; $cfcc + ld hl, ThrashingAboutText + call PrintText + ld hl, $d06f + dec [hl] + ld hl, asm_3e750 ; $6750 + jp nz, Func_3eab8 push hl - ld b, a - call IsItemInBag + ld hl, W_ENEMYBATTSTATUS1 ; $d067 + res 1, [hl] + set 7, [hl] + call GenRandomInBattle + and $3 + inc a + inc a + ld [$d070], a pop hl - jr z, .drinkLoop - ld b, BANK(RemoveItemByID) - ld hl, RemoveItemByID - jp Bankswitch - -GuardDrinksList: ; 5a5b7 (16:65b7) - db FRESH_WATER, SODA_POP, LEMONADE, $00 - -SECTION "bank17",ROMX,BANK[$17] - -SaffronMartBlocks: ; 5c000 (17:4000) -LavenderMartBlocks: ; 5c000 (17:4000) -CeruleanMartBlocks: ; 5c000 (17:4000) -VermilionMartBlocks: ; 5c000 (17:4000) - INCBIN "maps/vermilionmart.blk" - -CopycatsHouse2FBlocks: ; 5c010 (17:4010) -RedsHouse2FBlocks: ; 0x5c010 16? - INCBIN "maps/redshouse2f.blk" - -Museum1FBlocks: ; 5c020 (17:4020) - INCBIN "maps/museum1f.blk" - -Museum2FBlocks: ; 5c048 (17:4048) - INCBIN "maps/museum2f.blk" - -SaffronPokecenterBlocks: ; 5c064 (17:4064) -VermilionPokecenterBlocks: ; 5c064 (17:4064) -LavenderPokecenterBlocks: ; 5c064 (17:4064) -PewterPokecenterBlocks: ; 5c064 (17:4064) - INCBIN "maps/pewterpokecenter.blk" - -UndergroundPathEntranceRoute7Blocks: ; 5c080 (17:4080) -UndergroundPathEntranceRoute7CopyBlocks: ; 5c080 (17:4080) -UndergroundPathEntranceRoute6Blocks: ; 5c080 (17:4080) -UndergroundPathEntranceRoute5Blocks: ; 5c080 (17:4080) - INCBIN "maps/undergroundpathentranceroute5.blk" - -Route2GateBlocks: ; 5c090 (17:4090) -ViridianForestEntranceBlocks: ; 5c090 (17:4090) -ViridianForestExitBlocks: ; 5c090 (17:4090) - INCBIN "maps/viridianforestexit.blk" - -INCLUDE "data/mapHeaders/redshouse2f.asm" - -RedsHouse2FScript: ; 5c0b0 (17:40b0) - call EnableAutoTextBoxDrawing - ld hl,RedsHouse2FScriptPointers - ld a,[W_REDSHOUSE2CURSCRIPT] - jp CallFunctionInTable + jp Func_3eab8 +.asm_3ea83 + bit 5, [hl] + jp z, Func_3ea9b + ld hl, AttackContinuesText + call PrintText + ld hl, $d06f + dec [hl] + ld hl, Func_3e794 ; $6794 + jp nz, Func_3eab8 + jp Func_3eab8 -RedsHouse2FScriptPointers: ; 5c0bc (17:40bc) - dw RedsHouse2FScript0 - dw RedsHouse2FScript1 +Func_3ea9b: ; 3ea9b (f:6a9b) + ld a, [W_ENEMYBATTSTATUS2] ; $d068 + bit 6, a + jp z, Func_3eaba + ld a, $63 + ld [$d11e], a + call GetMoveName + call CopyStringToCF4B + xor a + ld [W_ENEMYMOVEEFFECT], a ; $cfcd + ld hl, asm_3e72b ; $672b + jp Func_3eab8 -RedsHouse2FScript0: ; 5c0c0 (17:40c0) +Func_3eab8: ; 3eab8 (f:6ab8) xor a - ld [H_CURRENTPRESSEDBUTTONS],a - ld a,8 - ld [$D528],a - ld a,1 - ld [W_REDSHOUSE2CURSCRIPT],a ret -RedsHouse2FScript1: ; 5c0ce (17:40ce) +Func_3eaba: ; 3eaba (f:6aba) + ld a, $1 + and a ret -RedsHouse2FTextPointers: ; 5c0cf (17:40cf) - db "@" - -INCLUDE "data/mapObjects/redshouse2f.asm" +GetCurrentMove: ; 3eabe (f:6abe) + ld a, [H_WHOSETURN] ; $fff3 + and a + jp z, .player + ld de, W_ENEMYMOVENUM ; $cfcc + ld a, [wEnemySelectedMove] ; $ccdd + jr .selected +.player + ld de, W_PLAYERMOVENUM ; $cfd2 + ld a, [W_FLAGS_D733] + bit 0, a + ld a, [$ccd9] + jr nz, .selected + ld a, [wPlayerSelectedMove] ; $ccdc +.selected + ld [$d0b5], a + dec a + ld hl, Moves ; $4000 + ld bc, $6 + call AddNTimes + ld a, BANK(Moves) + call FarCopyData + ld a, $2c + ld [$d0b7], a + ld a, $2 + ld [W_LISTTYPE], a ; list type 2 = move name + call GetName + ld de, $cd6d + jp CopyStringToCF4B -Func_5c0dc: ; 5c0dc (17:40dc) - ld a, $4b - ld [wPokedexOwned], a ; $d2f7 - ld a, $3d - call Predef ; indirect jump to ShowPokedexData (402d1 (10:42d1)) +Func_3eb01: ; 3eb01 (f:6b01) + ld a, [W_ISLINKBATTLE] ; $d12b + cp $4 + jp z, Func_3cc13 + ld a, [W_ENEMYMONID] + ld [$cfe5], a + ld [$d0b5], a + call GetMonHeader + ld a, [W_ENEMYBATTSTATUS3] ; $d069 + bit 3, a + ld hl, $cceb + ld a, [hli] + ld b, [hl] + jr nz, .asm_3eb33 + ld a, [W_ISINBATTLE] ; $d057 + cp $2 + ld a, $98 + ld b, $88 + jr z, .asm_3eb33 + call GenRandomInBattle + ld b, a + call GenRandomInBattle +.asm_3eb33 + ld hl, $cff1 + ld [hli], a + ld [hl], b + ld de, W_ENEMYMONLEVEL ; $cff3 + ld a, [W_CURENEMYLVL] ; $d127 + ld [de], a + inc de + ld b, $0 + ld hl, W_ENEMYMONCURHP ; $cfe6 + push hl + call CalcStats + pop hl + ld a, [W_ISINBATTLE] ; $d057 + cp $2 + jr z, .asm_3eb65 + ld a, [W_ENEMYBATTSTATUS3] ; $d069 + bit 3, a + jr nz, .asm_3eb86 + ld a, [W_ENEMYMONMAXHP] ; $cff4 + ld [hli], a + ld a, [W_ENEMYMONMAXHP+1] + ld [hli], a xor a - ld [wPokedexOwned], a ; $d2f7 - ret - -INCLUDE "data/mapHeaders/museum1f.asm" - -Museum1FScript: ; 5c0f7 (17:40f7) - ld a, $1 - ld [$cf0c], a + inc hl + ld [hl], a + jr .asm_3eb86 +.asm_3eb65 + ld hl, W_ENEMYMON1HP ; $d8a5 (aliases: W_WATERMONS) + ld a, [wWhichPokemon] ; $cf92 + ld bc, $2c + call AddNTimes + ld a, [hli] + ld [W_ENEMYMONCURHP], a ; $cfe6 + ld a, [hli] + ld [$cfe7], a + ld a, [wWhichPokemon] ; $cf92 + ld [W_ENEMYMONNUMBER], a ; $cfe8 + inc hl + ld a, [hl] + ld [W_ENEMYMONSTATUS], a ; $cfe9 + jr .asm_3eb86 +.asm_3eb86 + ld hl, W_MONHTYPES + ld de, W_ENEMYMONTYPES ; $cfea + ld a, [hli] ; copy type 1 + ld [de], a + inc de + ld a, [hli] ; copy type 2 + ld [de], a + inc de + ld a, [hli] ; copy catch rate + ld [de], a + inc de + ld a, [W_ISINBATTLE] ; $d057 + cp $2 + jr nz, .asm_3ebb0 + ld hl, $d8ac + ld a, [wWhichPokemon] ; $cf92 + ld bc, $2c + call AddNTimes + ld bc, $4 + call CopyData + jr .asm_3ebca +.asm_3ebb0 + ld hl, W_MONHMOVES + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + dec de + dec de + dec de xor a - ld [$cc3c], a - ld hl, Museum1FScriptPointers - ld a, [W_MUSEUM1FCURSCRIPT] - jp CallFunctionInTable - -Museum1FScriptPointers: ; 5c109 (17:4109) - dw Museum1FScript0 - dw Museum1FScript1 + ld [$cee9], a + ld a, $3e + call Predef ; indirect jump to WriteMonMoves (3afb8 (e:6fb8)) +.asm_3ebca + ld hl, W_ENEMYMONMOVES + ld de, $cffd + ld a, $5e + call Predef ; indirect jump to LoadMovePPs (f473 (3:7473)) + ld hl, W_MONHBASESTATS + ld de, $d002 + ld b, $5 +.asm_3ebdd + ld a, [hli] + ld [de], a + inc de + dec b + jr nz, .asm_3ebdd + ld hl, W_MONHCATCHRATE + ld a, [hli] + ld [de], a + inc de + ld a, [hl] ; base exp + ld [de], a + ld a, [W_ENEMYMONID] + ld [$d11e], a + call GetMonName + ld hl, $cd6d + ld de, W_ENEMYMONNAME + ld bc, $b + call CopyData + ld a, [W_ENEMYMONID] + ld [$d11e], a + ld a, $3a + call Predef ; indirect jump to IndexToPokedex (41010 (10:5010)) + ld a, [$d11e] + dec a + ld c, a + ld b, $1 + ld hl, wPokedexSeen ; $d30a + ld a, $10 + call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) + ld hl, W_ENEMYMONLEVEL ; $cff3 + ld de, $cd23 + ld bc, $b + call CopyData + ld a, $7 + ld b, $8 + ld hl, wEnemyMonStatMods ; $cd2e +.asm_3ec2d + ld [hli], a + dec b + jr nz, .asm_3ec2d + ret -Museum1FScript0: ; 5c10d (17:410d) - ld a, [W_YCOORD] +Func_3ec32: ; 3ec32 (f:6c32) + ld a, [W_ISLINKBATTLE] ; $d12b cp $4 - ret nz - ld a, [W_XCOORD] - cp $9 - jr z, .asm_5c120 ; 0x5c118 $6 - ld a, [W_XCOORD] - cp $a - ret nz -.asm_5c120 + jr nz, .asm_3ec4d xor a - ld [H_CURRENTPRESSEDBUTTONS], a + ld [wMenuJoypadPollCount], a ; $cc34 + ld hl, Func_372d6 + ld b, BANK(Func_372d6) + call Bankswitch ld a, $1 - ld [$ff8c], a - jp DisplayTextID - -Museum1FScript1: ; 5c12a (17:412a) + ld [$cfcb], a + call ClearScreen +.asm_3ec4d + call DelayFrame + ld a, $30 + call Predef ; indirect jump to Func_7096d (7096d (1c:496d)) + ld hl, Func_3ee58 + ld b, BANK(Func_3ee58) + call Bankswitch + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ld a, $ff + ld [$cfcb], a + call CleanLCD_OAM + call ClearScreen + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ld [$ffb0], a + ld [rWY], a ; $ff4a + ld [$ffd7], a + ld hl, $d060 + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld [W_PLAYERDISABLEDMOVE], a ; $d06d ret -Museum1FTextPointers: ; 5c12b (17:412b) - dw Museum1FText1 - dw Museum1FText2 - dw Museum1FText3 - dw Museum1FText4 - dw Museum1FText5 +Func_3ec81: ; 3ec81 (f:6c81) + push bc + ld a, [W_PLAYERMONLEVEL] ; $d022 + ld b, a + ld a, [W_ENEMYMONLEVEL] ; $cff3 + ld [W_PLAYERMONLEVEL], a ; $d022 + ld a, b + ld [W_ENEMYMONLEVEL], a ; $cff3 + pop bc + ret -Museum1FText1: ; 5c135 (17:4135) - db $8 - ld a, [W_YCOORD] - cp $4 - jr nz, asm_8774b ; 0x5c13b $a - ld a, [W_XCOORD] - cp $d - jp z, Func_5c1f9 - jr asm_b8709 ; 0x5c145 $1c -asm_8774b: ; 5c147 (17:4147) - cp $3 - jr nz, asm_d49e7 ; 0x5c149 $8 - ld a, [W_XCOORD] - cp $c - jp z, Func_5c1f9 -asm_d49e7: ; 5c153 (17:4153) - ld a, [$d754] - bit 0, a - jr nz, asm_31a16 ; 0x5c158 $10 - ld hl, UnnamedText_5c23d - call PrintText - jp asm_d1145 -asm_b8709: ; 5c163 (17:4163) - ld a, [$d754] - bit 0, a - jr z, asm_3ded4 ; 0x5c168 $9 -asm_31a16: ; 5c16a (17:416a) - ld hl, UnnamedText_5c242 - call PrintText - jp asm_d1145 -asm_3ded4: ; 5c173 (17:4173) - ld a, $13 - ld [$d125], a - call DisplayTextBoxID +Func_3ec92: ; 3ec92 (f:6c92) + ld a, [W_BATTLETYPE] ; $d05a + dec a + ld de, RedPicBack ; $7e0a + jr nz, .asm_3ec9e + ld de, OldManPic ; $7e9a +.asm_3ec9e + ld a, BANK(RedPicBack) + call UncompressSpriteFromDE + ld a, $3 + call Predef ; indirect jump to ScaleSpriteByTwo (2fe40 (b:7e40)) + ld hl, wOAMBuffer xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld hl, UnnamedText_5c21f - call PrintText - call YesNoChoice - ld a, [$cc26] - and a - jr nz, asm_de133 ; 0x5c18b $4d + ld [H_DOWNARROWBLINKCNT1], a ; $ff8b + ld b, $7 + ld e, $a0 +.asm_3ecb2 + ld c, $3 + ld d, $38 +.asm_3ecb6 + ld [hl], d + inc hl + ld [hl], e + ld a, $8 + add d + ld d, a + inc hl + ld a, [H_DOWNARROWBLINKCNT1] ; $ff8b + ld [hli], a + inc a + ld [H_DOWNARROWBLINKCNT1], a ; $ff8b + inc hl + dec c + jr nz, .asm_3ecb6 + ld a, [H_DOWNARROWBLINKCNT1] ; $ff8b + add $4 + ld [H_DOWNARROWBLINKCNT1], a ; $ff8b + ld a, $8 + add e + ld e, a + dec b + jr nz, .asm_3ecb2 + ld de, $9310 + call InterlaceMergeSpriteBuffers + ld a, $a + ld [$0], a xor a - ld [$ff9f], a - ld [$ffa0], a - ld a, $50 - ld [$ffa1], a - call HasEnoughMoney - jr nc, asm_0f3e3 ; 0x5c199 $9 - ld hl, UnnamedText_5c229 - call PrintText - jp asm_de133 -asm_0f3e3: ; 5c1a4 (17:41a4) - ld hl, UnnamedText_5c224 - call PrintText - ld hl, $d754 - set 0, [hl] + ld [$4000], a + ld hl, $8000 + ld de, S_SPRITEBUFFER1 + ld a, [H_LOADEDROMBANK] + ld b, a + ld c, $31 + call CopyVideoData xor a - ld [$cd3d], a - ld [$cd3e], a - ld a, $50 - ld [$cd3f], a - ld hl, $cd3f - ld de, $d349 - ld c, $3 - ld a, $c - call Predef - ld a, $13 - ld [$d125], a - call DisplayTextBoxID - ld a, (SFX_02_5a - SFX_Headers_02) / 3 - call PlaySoundWaitForCurrent - call WaitForSoundToFinish - jr asm_0b094 ; 0x5c1d8 $18 -asm_de133: ; 5c1da (17:41da) - ld hl, UnnamedText_5c21a ; $421a - call PrintText - ld a, $1 - ld [$cd38], a - ld a, $80 - ld [$ccd3], a - call Func_3486 - call UpdateSprites - jr asm_d1145 ; 0x5c1f0 $25 -asm_0b094: ; 5c1f2 (17:41f2) + ld [$0], a + ld a, $31 + ld [$ffe1], a + FuncCoord 1, 5 ; $c405 + ld hl, Coord ld a, $1 - ld [W_MUSEUM1FCURSCRIPT], a - jr asm_d1145 ; 0x5c1f7 $1e - -Func_5c1f9: ; 5c1f9 (17:41f9) - ld hl, UnnamedText_5c22e - call PrintText - call YesNoChoice - ld a, [$cc26] - cp $0 - jr nz, asm_d1144 - ld hl, UnnamedText_5c233 - call PrintText - jr asm_d1145 ; 0x5c20f $6 -asm_d1144: ; 5c211 (17:4211) - ld hl, UnnamedText_5c238 - call PrintText -asm_d1145: ; 5c217 (17:4217) - jp TextScriptEnd - -UnnamedText_5c21a: ; 5c21a (17:421a) - TX_FAR _UnnamedText_5c21a - db "@" - -UnnamedText_5c21f: ; 5c21f (17:421f) - TX_FAR _UnnamedText_5c21f - db "@" - -UnnamedText_5c224: ; 5c224 (17:4224) - TX_FAR _UnnamedText_5c224 - db "@" - -UnnamedText_5c229: ; 5c229 (17:4229) - TX_FAR _UnnamedText_5c229 - db "@" - -UnnamedText_5c22e: ; 5c22e (17:422e) - TX_FAR _UnnamedText_5c22e - db "@" - -UnnamedText_5c233: ; 5c233 (17:4233) - TX_FAR _UnnamedText_5c233 - db "@" - -UnnamedText_5c238: ; 5c238 (17:4238) - TX_FAR _UnnamedText_5c238 - db "@" - -UnnamedText_5c23d: ; 5c23d (17:423d) - TX_FAR _UnnamedText_5c23d - db "@" - -UnnamedText_5c242: ; 5c242 (17:4242) - TX_FAR _UnnamedText_5c242 - db "@" - -Museum1FText2: ; 5c247 (17:4247) - db $08 ; asm - ld hl, UnnamedText_5c251 - call PrintText - jp TextScriptEnd - -UnnamedText_5c251: ; 5c251 (17:4251) - TX_FAR _UnnamedText_5c251 - db "@" - -Museum1FText3: ; 5c256 (17:4256) - db $08 ; asm - ld a, [$d754] - bit 1, a - jr nz, .asm_16599 ; 0x5c25c - ld hl, UnnamedText_5c28e - call PrintText - ld bc, (OLD_AMBER << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, $d754 - set 1, [hl] - ld a, $34 - ld [$cc4d], a - ld a, $11 - call Predef - ld hl, ReceivedOldAmberText - jr .asm_52e0f ; 0x5c27e -.BagFull - ld hl, UnnamedText_5c29e - jr .asm_52e0f ; 0x5c283 -.asm_16599 ; 0x5c285 - ld hl, UnnamedText_5c299 -.asm_52e0f ; 0x5c288 - call PrintText - jp TextScriptEnd - -UnnamedText_5c28e: ; 5c28e (17:428e) - TX_FAR _UnnamedText_5c28e - db "@" - -ReceivedOldAmberText: ; 5c293 (17:4293) - TX_FAR _ReceivedOldAmberText - db $0B, "@" - -UnnamedText_5c299: ; 5c299 (17:4299) - TX_FAR _UnnamedText_5c299 - db "@" - -UnnamedText_5c29e: ; 5c29e (17:429e) - TX_FAR _UnnamedText_5c29e - db "@" + jp Predef ; indirect jump to Func_3f0c6 (3f0c6 (f:70c6)) -Museum1FText4: ; 5c2a3 (17:42a3) - db $08 ; asm - ld hl, UnnamedText_5c2ad - call PrintText - jp TextScriptEnd +Func_3ed02: ; 3ed02 (f:6d02) + ld hl, Func_39680 + ld b, BANK(Func_39680) + call Bankswitch + ld hl, Func_396a7 + ld b, BANK(Func_396a7) + jp Bankswitch -UnnamedText_5c2ad: ; 5c2ad (17:42ad) - TX_FAR _UnnamedText_5c2ad - db "@" +ScrollTrainerPicAfterBattle: ; 3ed12 (f:6d12) + ld hl, _ScrollTrainerPicAfterBattle + ld b, BANK(_ScrollTrainerPicAfterBattle) + jp Bankswitch -Museum1FText5: ; 5c2b2 (17:42b2) - db $08 ; asm - ld hl, UnnamedText_5c2bc - call PrintText - jp TextScriptEnd +Func_3ed1a: ; 3ed1a (f:6d1a) + ld a, $1 + jr asm_3ed1f -UnnamedText_5c2bc: ; 5c2bc (17:42bc) - TX_FAR _UnnamedText_5c2bc - db "@" +Func_3ed1e: ; 3ed1e (f:6d1e) + xor a +asm_3ed1f: ; 3ed1f (f:6d1f) + ld [H_WHOSETURN], a ; $fff3 + call Func_3ed27 + jp Func_3ed64 -INCLUDE "data/mapObjects/museum1f.asm" +Func_3ed27: ; 3ed27 (f:6d27) + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_3ed48 + ld a, [W_PLAYERMONSTATUS] ; $d018 + and $40 + ret z + ld hl, $d02a + ld a, [hld] + ld b, a + ld a, [hl] + srl a + rr b + srl a + rr b + ld [hli], a + or b + jr nz, .asm_3ed46 + ld b, $1 +.asm_3ed46 + ld [hl], b + ret +.asm_3ed48 + ld a, [W_ENEMYMONSTATUS] ; $cfe9 + and $40 + ret z + ld hl, $cffb + ld a, [hld] + ld b, a + ld a, [hl] + srl a + rr b + srl a + rr b + ld [hli], a + or b + jr nz, .asm_3ed62 + ld b, $1 +.asm_3ed62 + ld [hl], b + ret -INCLUDE "data/mapHeaders/museum2f.asm" +Func_3ed64: ; 3ed64 (f:6d64) + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_3ed81 + ld a, [W_PLAYERMONSTATUS] ; $d018 + and $10 + ret z + ld hl, $d026 + ld a, [hld] + ld b, a + ld a, [hl] + srl a + rr b + ld [hli], a + or b + jr nz, .asm_3ed7f + ld b, $1 +.asm_3ed7f + ld [hl], b + ret +.asm_3ed81 + ld a, [W_ENEMYMONSTATUS] ; $cfe9 + and $10 + ret z + ld hl, $cff7 + ld a, [hld] + ld b, a + ld a, [hl] + srl a + rr b + ld [hli], a + or b + jr nz, .asm_3ed97 + ld b, $1 +.asm_3ed97 + ld [hl], b + ret -Museum2FScript: ; 5c317 (17:4317) - jp EnableAutoTextBoxDrawing +Func_3ed99: ; 3ed99 (f:6d99) + ld c, $0 +.asm_3ed9b + call Func_3eda5 + inc c + ld a, c + cp $4 + jr nz, .asm_3ed9b + ret -Museum2FTextPointers: ; 5c31a (17:431a) - dw Museum2FText1 - dw Museum2FText2 - dw Museum2FText3 - dw Museum2FText4 - dw Museum2FText5 - dw Museum2FText6 - dw Museum2FText7 +Func_3eda5: ; 3eda5 (f:6da5) + push bc + push bc + ld a, [$d11e] + and a + ld a, c + ld hl, W_PLAYERMONATK + ld de, $cd12 + ld bc, wPlayerMonAttackMod ; $cd1a + jr z, .asm_3edc0 + ld hl, W_ENEMYMONATTACK + ld de, $cd26 + ld bc, wEnemyMonStatMods ; $cd2e +.asm_3edc0 + add c + ld c, a + jr nc, .asm_3edc5 + inc b +.asm_3edc5 + ld a, [bc] + pop bc + ld b, a + push bc + sla c + ld b, $0 + add hl, bc + ld a, c + add e + ld e, a + jr nc, .asm_3edd4 + inc d +.asm_3edd4 + pop bc + push hl + ld hl, StatModifierRatios ; $76cb + dec b + sla b + ld c, b + ld b, $0 + add hl, bc + xor a + ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) + ld a, [de] + ld [$ff97], a + inc de + ld a, [de] + ld [$ff98], a + ld a, [hli] + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + call Multiply + ld a, [hl] + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + ld b, $4 + call Divide + pop hl + ld a, [$ff98] + sub $e7 + ld a, [$ff97] + sbc $3 + jp c, Func_3ee0c + ld a, $3 + ld [$ff97], a + ld a, $e7 + ld [$ff98], a -Museum2FText1: ; 5c328 (17:4328) - TX_FAR _Museum2FText1 - db "@" +Func_3ee0c: ; 3ee0c (f:6e0c) + ld a, [$ff97] + ld [hli], a + ld b, a + ld a, [$ff98] + ld [hl], a + or b + jr nz, .asm_3ee17 + inc [hl] +.asm_3ee17 + pop bc + ret -Museum2FText2: ; 5c32d (17:432d) - TX_FAR _Museum2FText2 - db "@" +Func_3ee19: ; 3ee19 (f:6e19) + ld a, [W_ISLINKBATTLE] + cp $4 + ret z + ld a, [W_OBTAINEDBADGES] + ld b, a + ld hl, W_PLAYERMONATK + ld c, $4 +.asm_3ee28 + srl b + call c, Func_3ee35 + inc hl + inc hl + srl b + dec c + jr nz, .asm_3ee28 + ret -Museum2FText3: ; 5c332 (17:4332) - TX_FAR _Museum2FText3 - db "@" +Func_3ee35: ; 3ee35 (f:6e35) + ld a, [hli] + ld d, a + ld e, [hl] + srl d + rr e + srl d + rr e + srl d + rr e + ld a, [hl] + add e + ld [hld], a + ld a, [hl] + adc d + ld [hli], a + ld a, [hld] + sub $e7 + ld a, [hl] + sbc $3 + ret c + ld a, $3 + ld [hli], a + ld a, $e7 + ld [hld], a + ret -Museum2FText4: ; 5c337 (17:4337) - TX_FAR _Museum2FText4 - db "@" +Func_3ee58: ; 3ee58 (f:6e58) + call LoadHpBarAndStatusTilePatterns -Museum2FText5: ; 5c33c (17:433c) - TX_FAR _Museum2FText5 - db "@" +Func_3ee5b: ; 3ee5b (f:6e5b) + ld a, [rLCDC] ; $ff40 + add a + jr c, .asm_3ee7c + ld hl, BattleHudTiles1 ; $6080 + ld de, $96d0 + ld bc, $18 + ld a, BANK(BattleHudTiles1) + call FarCopyDataDouble + ld hl, BattleHudTiles2 ; $6098 + ld de, $9730 + ld bc, $30 + ld a, BANK(BattleHudTiles2) + jp FarCopyDataDouble +.asm_3ee7c + ld de, BattleHudTiles1 ; $6080 + ld hl, $96d0 + ld bc, (BANK(BattleHudTiles1) << 8) + $03 + call CopyVideoDataDouble + ld de, BattleHudTiles2 ; $6098 + ld hl, $9730 + ld bc, (BANK(BattleHudTiles2) << 8) + $06 + jp CopyVideoDataDouble -Museum2FText6: ; 5c341 (17:4341) - TX_FAR _Museum2FText6 - db "@" +Func_3ee94: ; 3ee94 (f:6e94) + ld hl, TerminatorText_3ee9a ; $6e9a + jp PrintText -Museum2FText7: ; 5c346 (17:4346) - TX_FAR _Museum2FText7 +TerminatorText_3ee9a: ; 3ee9a (f:6e9a) db "@" -INCLUDE "data/mapObjects/museum2f.asm" - -INCLUDE "data/mapHeaders/pewtergym.asm" - -PewterGymScript: ; 5c387 (17:4387) - ld hl, $d126 - bit 6, [hl] - res 6, [hl] - call nz, PewterGymScript_5c3a4 - call EnableAutoTextBoxDrawing - ld hl, PewterGymTrainerHeaders - ld de, PewterGymScriptPointers - ld a, [W_PEWTERGYMCURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_PEWTERGYMCURSCRIPT], a - ret - -PewterGymScript_5c3a4: ; 5c3a4 (17:43a4) - ld hl, Gym1CityName ; $43ad - ld de, Gym1LeaderName ; $43b9 - jp LoadGymLeaderAndCityName - -Gym1CityName: ; 5c3ad (17:43ad) - db "PEWTER CITY@" - -Gym1LeaderName: ; 5c3b9 (17:43b9) - db "BROCK@" - -Func_5c3bf: ; 5c3bf (17:43bf) +; generates a random number unless in link battle +; stores random number in A +GenRandomInBattle: ; 3ee9b (f:6e9b) + ld a, [W_ISLINKBATTLE] + cp $4 + jp nz, GenRandom + push hl + push bc + ld a, [$ccde] + ld c, a + ld b, $0 + ld hl, $d148 + add hl, bc + inc a + ld [$ccde], a + cp $9 + ld a, [hl] + pop bc + pop hl + ret c + push hl + push bc + push af xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_PEWTERGYMCURSCRIPT], a - ld [W_CURMAPSCRIPT], a + ld [$ccde], a + ld hl, $d148 + ld b, $9 +.asm_3eec5 + ld a, [hl] + ld c, a + add a + add a + add c + inc a + ld [hli], a + dec b + jr nz, .asm_3eec5 ; 0x3eecd $f6 + pop af + pop bc + pop hl ret -PewterGymScriptPointers: ; 5c3ca (17:43ca) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - dw PewterGymScript3 - -PewterGymScript3: ; 5c3d2 (17:43d2) - ld a, [W_ISINBATTLE] ; $d057 - cp $ff - jp z, Func_5c3bf - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - -Func_5c3df: ; 5c3df (17:43df) - ld a, $4 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld hl, $d755 - set 7, [hl] - ld bc, (TM_34 << 8) | 1 - call GiveItem - jr nc, .BagFull +Func_3eed3: ; 3eed3 (f:6ed3) + ld a, [H_WHOSETURN] ; $fff3 + and a + ld hl, W_ENEMYMONTYPE1 ; $cfea (aliases: W_ENEMYMONTYPES) + ld de, W_ENEMYBATTSTATUS1 ; $d067 + ld a, [W_PLAYERMOVENUM] ; $cfd2 + jr z, .asm_3eeea + ld hl, W_PLAYERMONTYPE1 ; $d019 (aliases: W_PLAYERMONTYPES) + ld de, W_ENEMYBATTSTATUS1 ; $d067 + ld a, [W_ENEMYMOVENUM] ; $cfcc +.asm_3eeea + cp SELFDESTRUCT + jr z, .asm_3eef1 + cp EXPLOSION + ret nz +.asm_3eef1 + ld a, [de] + bit 6, a + ret nz + ld a, [hli] + cp GHOST + ret z + ld a, [hl] + cp GHOST + ret z + ld a, [W_MOVEMISSED] ; $d05f + and a + ret nz ld a, $5 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld hl, $d755 - set 6, [hl] - jr .asm_5c408 -.BagFull - ld a, $6 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID -.asm_5c408 - ld hl, W_OBTAINEDBADGES - set 0, [hl] - ld hl, $d72a - set 0, [hl] - - ld a, $4 - ld [$cc4d], a - ld a, $11 - call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) - ld a, $22 - ld [$cc4d], a - ld a, $11 - call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) - - ld hl, $d7eb - res 0, [hl] - res 7, [hl] + ld [$cc5b], a - ; deactivate gym trainers - ld hl, $d755 - set 2, [hl] +PlayMoveAnimation: ; 3ef07 (f:6f07) + ld [$D07C],a + call Delay3 + PREDEF_JUMP MoveAnimationPredef ; predef 8 - jp Func_5c3bf - -PewterGymTextPointers: ; 5c435 (17:4435) - dw PewterGymText1 - dw PewterGymText2 - dw PewterGymText3 - dw PewterGymText4 - dw PewterGymText5 - dw PewterGymText6 - -PewterGymTrainerHeaders: ; 5c441 (17:4441) -PewterGymTrainerHeader0: ; 5c441 (17:4441) - db $2 ; flag's bit - db ($5 << 4) ; trainer's view range - dw $d755 ; flag's byte - dw PewterGymBattleText1 ; 0x44d0 TextBeforeBattle - dw PewterGymAfterBattleText1 ; 0x44da TextAfterBattle - dw PewterGymEndBattleText1 ; 0x44d5 TextEndBattle - dw PewterGymEndBattleText1 ; 0x44d5 TextEndBattle +Func_3ef12: ; 3ef12 (f:6f12) + ld a, [W_CUROPPONENT] ; $d059 + and a + jr z, asm_3ef23 - db $ff +Func_3ef18: ; 3ef18 (f:6f18) + ld a, [W_CUROPPONENT] ; $d059 + ld [$cf91], a + ld [W_ENEMYMONID], a + jr asm_3ef3d +asm_3ef23: ; 3ef23 (f:6f23) + ld a, [$d732] + bit 1, a + jr z, .asm_3ef2f + ld a, [H_CURRENTPRESSEDBUTTONS] + bit 1, a + ret nz +.asm_3ef2f + ld a, [$d13c] + and a + ret nz + ld hl, Func_13870 + ld b, BANK(Func_13870) + call Bankswitch + ret nz +asm_3ef3d: ; 3ef3d (f:6f3d) + ld a, [$d35d] + push af + ld hl, $d358 + ld a, [hl] + push af + res 1, [hl] + ld hl, Func_525af + ld b, BANK(Func_525af) + call Bankswitch + ld a, [W_ENEMYMONID] + sub $c8 + jp c, Func_3ef8b + ld [W_TRAINERCLASS], a ; $d031 + call Func_3566 + ld hl, ReadTrainer + ld b, BANK(ReadTrainer) + call Bankswitch + call Func_3ec32 + call _LoadTrainerPic + xor a + ld [W_ENEMYMONID], a + ld [$ffe1], a + dec a + ld [wAICount], a ; $ccdf + FuncCoord 12, 0 ; $c3ac + ld hl, Coord + ld a, $1 + call Predef ; indirect jump to Func_3f0c6 (3f0c6 (f:70c6)) + ld a, $ff + ld [W_ENEMYMONNUMBER], a ; $cfe8 + ld a, $2 + ld [W_ISINBATTLE], a ; $d057 + jp Func_3efeb -PewterGymText1: ; 5c44e (17:444e) - db $08 ; asm - ld a, [$d755] - bit 7, a - jr z, .asm_4a735 ; 0x5c454 - bit 6, a - jr nz, .asm_ff7d0 ; 0x5c458 - call z, Func_5c3df - call DisableWaitingAfterTextDisplay - jr .asm_e0ffb ; 0x5c460 -.asm_ff7d0 ; 0x5c462 - ld hl, UnnamedText_5c4a3 - call PrintText - jr .asm_e0ffb ; 0x5c468 -.asm_4a735 ; 0x5c46a - ld hl, UnnamedText_5c49e - call PrintText - ld hl, $d72d - set 6, [hl] - set 7, [hl] - ld hl, UnnamedText_5c4bc - ld de, UnnamedText_5c4bc - call PreBattleSaveRegisters - ldh a, [$8c] - ld [$cf13], a - call EngageMapTrainer - call InitBattleEnemyParameters +Func_3ef8b: ; 3ef8b (f:6f8b) ld a, $1 - ld [$d05c], a + ld [W_ISINBATTLE], a ; $d057 + call Func_3eb01 + call Func_3ec32 + ld a, [W_CUROPPONENT] ; $d059 + cp MAROWAK + jr z, .isGhost + call IsGhostBattle + jr nz, .isNoGhost +.isGhost + ld hl, W_MONHSPRITEDIM + ld a, $66 + ld [hli], a ; write sprite dimensions + ld bc, GhostPic ; $66b5 + ld a, c + ld [hli], a ; write front sprite pointer + ld [hl], b + ld hl, W_ENEMYMONNAME ; set name to "GHOST" + ld a, "G" + ld [hli], a + ld a, "H" + ld [hli], a + ld a, "O" + ld [hli], a + ld a, "S" + ld [hli], a + ld a, "T" + ld [hli], a + ld [hl], "@" + ld a, [$cf91] + push af + ld a, MON_GHOST + ld [$cf91], a + ld de, $9000 + call LoadMonFrontSprite ; load ghost sprite + pop af + ld [$cf91], a + jr .spriteLoaded +.isNoGhost + ld de, $9000 + call LoadMonFrontSprite ; load mon sprite +.spriteLoaded xor a - ldh [$b4], a - ld a, $3 - ld [W_PEWTERGYMCURSCRIPT], a - ld [W_CURMAPSCRIPT], a -.asm_e0ffb ; 0x5c49b - jp TextScriptEnd + ld [W_TRAINERCLASS], a ; $d031 + ld [$ffe1], a + FuncCoord 12, 0 ; $c3ac + ld hl, Coord + ld a, $1 + call Predef ; indirect jump to Func_3f0c6 (3f0c6 (f:70c6)) -UnnamedText_5c49e: ; 5c49e (17:449e) - TX_FAR _UnnamedText_5c49e - db "@" +Func_3efeb: ; 3efeb (f:6feb) + ld b, $0 + call GoPAL_SET + call Func_3c04c + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ld hl, TerminatorText_3f04a + call PrintText + call SaveScreenTilesToBuffer1 + call ClearScreen + ld a, $98 + ld [$ffbd], a + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call Delay3 + ld a, $9c + ld [$ffbd], a + call LoadScreenTilesFromBuffer1 + FuncCoord 9, 7 ; $c435 + ld hl, Coord + ld bc, $50a + call ClearScreenArea + FuncCoord 1, 0 ; $c3a1 + ld hl, Coord + ld bc, $40a + call ClearScreenArea + call CleanLCD_OAM + ld a, [W_ISINBATTLE] ; $d057 + dec a + call z, Func_3cdec + call Func_3c11e + ld hl, Func_137aa + ld b, BANK(Func_137aa) + call Bankswitch + pop af + ld [$d358], a + pop af + ld [$d35d], a + ld a, [$d0d4] + ld [$ffd7], a + scf + ret -UnnamedText_5c4a3: ; 5c4a3 (17:44a3) - TX_FAR _UnnamedText_5c4a3 +TerminatorText_3f04a: ; 3f04a (f:704a) db "@" -PewterGymText4: ; 5c4a8 (17:44a8) - TX_FAR _TM34PreReceiveText - db "@" +_LoadTrainerPic: ; 3f04b (f:704b) +; $d033-$d034 contain pointer to pic + ld a, [$d033] + ld e, a + ld a, [$d034] + ld d, a ; de contains pointer to trainer pic + ld a, [W_ISLINKBATTLE] ; $d12b + and a + ld a, Bank(TrainerPics) ; this is where all the trainer pics are (not counting Red's) + jr z, .loadSprite + ld a, Bank(RedPicFront) +.loadSprite + call UncompressSpriteFromDE + ld de, $9000 + ld a, $77 + ld c, a + jp LoadUncompressedSpriteData -PewterGymText5: ; 5c4ad (17:44ad) - TX_FAR _ReceivedTM34Text - db $0B - TX_FAR _TM34ExplanationText - db "@" +Func_3f069: ; 3f069 (f:7069) + xor a + ld [$c0f1], a + ld [$c0f2], a + jp PlaySound -PewterGymText6: ; 5c4b7 (17:44b7) - TX_FAR _TM34NoRoomText - db "@" +Func_3f073: ; 3f073 (f:7073) + ld a, [$cc4f] + ld h, a + ld a, [$cc50] + ld l, a + ld a, [$ffe1] + ld [H_DOWNARROWBLINKCNT1], a ; $ff8b + ld b, $4c + ld a, [W_ISINBATTLE] ; $d057 + and a + jr z, .asm_3f0bc + add b + ld [hl], a + call Delay3 + ld bc, $ffd7 + add hl, bc + ld a, $1 + ld [$cd6c], a + ld bc, $303 + ld a, $5 + call Predef ; indirect jump to Func_79aba (79aba (1e:5aba)) + ld c, $4 + call DelayFrames + ld bc, $ffd7 + add hl, bc + xor a + ld [$cd6c], a + ld bc, $505 + ld a, $5 + call Predef ; indirect jump to Func_79aba (79aba (1e:5aba)) + ld c, $5 + call DelayFrames + ld bc, $ffd7 + jr .asm_3f0bf +.asm_3f0bc + ld bc, $ff85 +.asm_3f0bf + add hl, bc + ld a, [H_DOWNARROWBLINKCNT1] ; $ff8b + add $31 + jr asm_3f0d0 -UnnamedText_5c4bc: ; 5c4bc (17:44bc) - TX_FAR _UnnamedText_5c4bc - db $0B - TX_FAR _UnnamedText_5c4c1 - db "@" +Func_3f0c6: ; 3f0c6 (f:70c6) + ld a, [$cc4f] + ld h, a + ld a, [$cc50] + ld l, a + ld a, [$ffe1] +asm_3f0d0: ; 3f0d0 (f:70d0) + ld bc, $707 + ld de, $14 + push af + ld a, [W_SPRITEFLIPPED] + and a + jr nz, .asm_3f0ed + pop af +.asm_3f0de + push bc + push hl +.asm_3f0e0 + ld [hl], a + add hl, de + inc a + dec c + jr nz, .asm_3f0e0 + pop hl + inc hl + pop bc + dec b + jr nz, .asm_3f0de + ret +.asm_3f0ed + push bc + ld b, $0 + dec c + add hl, bc + pop bc + pop af +.asm_3f0f4 + push bc + push hl +.asm_3f0f6 + ld [hl], a + add hl, de + inc a + dec c + jr nz, .asm_3f0f6 + pop hl + dec hl + pop bc + dec b + jr nz, .asm_3f0f4 + ret -PewterGymText2: ; 5c4c6 (17:44c6) - db $08 ; asm - ld hl, PewterGymTrainerHeader0 - call TalkToTrainer - jp TextScriptEnd +; loads back sprite of mon to $8000 +; assumes the corresponding mon header is already loaded +LoadMonBackSprite: ; 3f103 (f:7103) + ld a, [$cfd9] + ld [$cf91], a + FuncCoord 1, 5 ; $c405 + ld hl, Coord + ld b, $7 + ld c, $8 + call ClearScreenArea + ld hl, W_MONHBACKSPRITE - W_MONHEADER + call UncompressMonSprite + ld a, $3 + call Predef ; indirect jump to ScaleSpriteByTwo (2fe40 (b:7e40)) + ld de, $9310 + call InterlaceMergeSpriteBuffers ; combine the two buffers to a single 2bpp sprite + ld hl, $8000 + ld de, $9310 + ld c, (2*SPRITEBUFFERSIZE)/16 ; count of 16-byte chunks to be copied + ld a, [H_LOADEDROMBANK] + ld b, a + jp CopyVideoData -PewterGymBattleText1: ; 5c4d0 (17:44d0) - TX_FAR _PewterGymBattleText1 - db "@" +Func_3f132: ; 3f132 (f:7132) + call JumpMoveEffect + ld b, $1 + ret -PewterGymEndBattleText1: ; 5c4d5 (17:44d5) - TX_FAR _PewterGymEndBattleText1 - db "@" +JumpMoveEffect: ; 3f138 (f:7138) + ld a, [$fff3] ;whose turn? + and a + ld a, [W_PLAYERMOVEEFFECT] + jr z, .next1 + ld a, [W_ENEMYMOVEEFFECT] +.next1 + dec a ;subtract 1, there is no special effect for 00 + add a ;x2, 16bit pointers + ld hl, MoveEffectPointerTable + ld b, 0 + ld c, a + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] ;jump to special effect handler -PewterGymAfterBattleText1: ; 5c4da (17:44da) - TX_FAR _PewterGymAfterBattleText1 - db "@" +MoveEffectPointerTable: ; 3f150 (f:7150) + dw Func_3f1fc + dw Func_3f24f + dw Func_3f2e9 + dw FreezeBurnParalyzeEffect + dw FreezeBurnParalyzeEffect + dw FreezeBurnParalyzeEffect + dw Func_3f2f1 + dw Func_3f2e9 + dw $0000 + dw Func_3f428 + dw Func_3f428 + dw Func_3f428 + dw Func_3f428 + dw Func_3f428 + dw Func_3f428 + dw PayDayEffect + dw $0000 + dw Func_3f54c + dw Func_3f54c + dw Func_3f54c + dw Func_3f54c + dw Func_3f54c + dw Func_3f54c + dw ConversionEffect + dw HazeEffect + dw Func_3f6e5 + dw Func_3f717 + dw Func_3f739 + dw Func_3f811 + dw Func_3f811 + dw Func_3f85b + dw Func_3f1fc + dw Func_3f24f + dw FreezeBurnParalyzeEffect + dw FreezeBurnParalyzeEffect + dw FreezeBurnParalyzeEffect + dw Func_3f85b + dw Func_3f884 + dw TwoTurnAttackEffect + dw $0000 + dw $0000 + dw Func_3f917 + dw TwoTurnAttackEffect + dw Func_3f811 + dw $0000 + dw MistEffect + dw FocusEnergyEffect + dw RecoilEffect + dw Func_3f961 + dw Func_3f428 + dw Func_3f428 + dw Func_3f428 + dw Func_3f428 + dw Func_3f428 + dw Func_3f428 + dw Func_3fb26 + dw Func_3fb2e + dw Func_3f54c + dw Func_3f54c + dw Func_3f54c + dw Func_3f54c + dw Func_3f54c + dw Func_3f54c + dw Func_3fb36 + dw Func_3fb36 + dw Func_3f24f + dw Func_3f9b1 + dw Func_3f54c + dw Func_3f54c + dw Func_3f54c + dw Func_3f54c + dw Func_3f54c + dw Func_3f54c + dw Func_3f54c + dw Func_3f54c + dw Func_3f959 + dw Func_3f811 + dw $0000 + dw Func_3f9b9 + dw Func_3f9c1 + dw Func_3f9df + dw Func_3f9ed + dw $0000 + dw LeechSeedEffect + dw Func_3fa84 + dw DisableEffect -PewterGymText3: ; 5c4df (17:44df) - db $08 ; asm - ld a, [$d72a] - bit 0, a - jr nz, .asm_71369 ; 0x5c4e5 - ld hl, UnnamedText_5c515 - call PrintText - call YesNoChoice - ld a, [$cc26] +Func_3f1fc: ; 3f1fc (f:71fc) + ld de, W_ENEMYMONSTATUS ; $cfe9 + ld bc, W_ENEMYBATTSTATUS2 ; $d068 + ld a, [H_WHOSETURN] ; $fff3 and a - jr nz, .asm_6123a ; 0x5c4f4 - ld hl, UnnamedText_5c51a - call PrintText - jr .asm_d1578 ; 0x5c4fc -.asm_6123a ; 0x5c4fe - ld hl, UnnamedText_5c524 - call PrintText -.asm_d1578 ; 0x5c504 - ld hl, UnnamedText_5c51f - call PrintText - jr .asm_07013 ; 0x5c50a -.asm_71369 ; 0x5c50c - ld hl, UnnamedText_5c529 - call PrintText -.asm_07013 ; 0x5c512 - jp TextScriptEnd - -UnnamedText_5c515: ; 5c515 (17:4515) - TX_FAR _UnnamedText_5c515 - db "@" - -UnnamedText_5c51a: ; 5c51a (17:451a) - TX_FAR _UnnamedText_5c51a - db "@" - -UnnamedText_5c51f: ; 5c51f (17:451f) - TX_FAR _UnnamedText_5c51f - db "@" + jp z, Func_3f20e + ld de, W_PLAYERMONSTATUS ; $d018 + ld bc, W_PLAYERBATTSTATUS2 ; $d063 -UnnamedText_5c524: ; 5c524 (17:4524) - TX_FAR _UnnamedText_5c524 - db "@" +Func_3f20e: ; 3f20e (f:720e) + ld a, [bc] + bit 5, a + res 5, a + ld [bc], a + jr nz, .asm_3f231 + ld a, [de] + ld b, a + and $7 + jr z, .asm_3f222 + ld hl, AlreadyAsleepText + jp PrintText +.asm_3f222 + ld a, b + and a + jr nz, .asm_3f242 + push de + call MoveHitTest + pop de + ld a, [W_MOVEMISSED] ; $d05f + and a + jr nz, .asm_3f242 +.asm_3f231 + call GenRandomInBattle + and $7 + jr z, .asm_3f231 + ld [de], a + call Func_3fb89 + ld hl, FellAsleepText + jp PrintText +.asm_3f242 + jp PrintDidntAffectText -UnnamedText_5c529: ; 5c529 (17:4529) - TX_FAR _UnnamedText_5c529 +FellAsleepText: ; 3f245 (f:7245) + TX_FAR _FellAsleepText db "@" -INCLUDE "data/mapObjects/pewtergym.asm" - -PewterGymBlocks: ; 5c558 (17:4558) - INCBIN "maps/pewtergym.blk" - -INCLUDE "data/mapHeaders/pewterpokecenter.asm" - -PewterPokecenterScript: ; 5c587 (17:4587) - call Func_22fa - jp EnableAutoTextBoxDrawing - -PewterPokecenterTextPointers: ; 5c58d (17:458d) - dw PewterPokecenterText1 - dw PewterPokecenterText2 - dw PewterPokecenterText3 - dw PewterPokecenterText4 - -PewterPokecenterText1: ; 5c595 (17:4595) - db $ff - -PewterPokecenterText2: ; 5c596 (17:4596) - TX_FAR _PewterPokecenterText1 +AlreadyAsleepText: ; 3f24a (f:724a) + TX_FAR _AlreadyAsleepText db "@" -PewterPokecenterText3: ; 5c59b (17:459b) - db $8 - ld a, $1 - ld [$cc3c], a - ld hl, PewterPokecenterText5 - call PrintText - ld a, $ff - call PlaySound - ld c, $20 - call DelayFrames - ld hl, Unknown_5c608 ; $4608 - ld de, $cd3f - ld bc, $0004 - call CopyData - ld a, [$c132] - ld hl, $cd3f -.asm_5c5c3 - cp [hl] - inc hl - jr nz, .asm_5c5c3 ; 0x5c5c5 $fc - dec hl - push hl - ld c, BANK(Music_JigglypuffSong) - ld a, MUSIC_JIGGLYPUFF_SONG - call PlayMusic - pop hl -.asm_5c5d1 - ld a, [hl] - ld [$c132], a +Func_3f24f: ; 3f24f (f:724f) + ld hl, W_ENEMYMONSTATUS ; $cfe9 + ld de, W_PLAYERMOVEEFFECT ; $cfd3 + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_3f260 + ld hl, W_PLAYERMONSTATUS ; $d018 + ld de, W_ENEMYMOVEEFFECT ; $cfcd +.asm_3f260 + call CheckTargetSubstitute + jr nz, .asm_3f2d3 + ld a, [hli] + ld b, a + and a + jr nz, .asm_3f2d3 + ld a, [hli] + cp $3 + jr z, .asm_3f2d3 + ld a, [hld] + cp $3 + jr z, .asm_3f2d3 + ld a, [de] + cp $2 + ld b, $34 + jr z, .asm_3f290 + cp $21 + ld b, $67 + jr z, .asm_3f290 push hl - ld hl, $cd3f - ld de, $cd3e - ld bc, $0004 - call CopyData - ld a, [$cd3e] - ld [$cd42], a + push de + call MoveHitTest + pop de pop hl - ld c, $18 - call DelayFrames - ld a, [$c026] - ld b, a - ld a, [$c027] - or b - jr nz, .asm_5c5d1 ; 0x5c5f6 $d9 - ld c, $30 + ld a, [W_MOVEMISSED] ; $d05f + and a + jr nz, .asm_3f2d7 + jr .asm_3f295 +.asm_3f290 + call GenRandomInBattle + cp b + ret nc +.asm_3f295 + dec hl + set 3, [hl] + push de + dec de + ld a, [H_WHOSETURN] ; $fff3 + and a + ld b, $c7 + ld hl, W_PLAYERBATTSTATUS3 ; $d064 + ld a, [de] + ld de, W_PLAYERTOXICCOUNTER ; $d06c + jr nz, .asm_3f2b0 + ld b, $a9 + ld hl, W_ENEMYBATTSTATUS3 ; $d069 + ld de, W_ENEMYTOXICCOUNTER ; $d071 +.asm_3f2b0 + cp $5c + jr nz, .asm_3f2bd + set 0, [hl] + xor a + ld [de], a + ld hl, BadlyPoisonedText + jr .asm_3f2c0 +.asm_3f2bd + ld hl, PoisonedText +.asm_3f2c0 + pop de + ld a, [de] + cp $42 + jr z, .asm_3f2cd + ld a, b + call Func_3fb96 + jp PrintText +.asm_3f2cd + call Func_3fb89 + jp PrintText +.asm_3f2d3 + ld a, [de] + cp $42 + ret nz +.asm_3f2d7 + ld c, $32 call DelayFrames - call Func_2307 - jp TextScriptEnd - -PewterPokecenterText5: ; 5c603 (17:4603) - TX_FAR _PewterPokecenterText5 - db "@" - -Unknown_5c608: ; 5c608 (17:4608) - db $30, $38, $34, $3c - -PewterPokecenterText4: ; 5c60c (17:460c) - db $f6 - -INCLUDE "data/mapObjects/pewterpokecenter.asm" - -INCLUDE "data/mapHeaders/ceruleanpokecenter.asm" - -CeruleanPokecenterScript: ; 5c645 (17:4645) - call Func_22fa - jp EnableAutoTextBoxDrawing - -CeruleanPokecenterTextPointers: ; 5c64b (17:464b) - dw CeruleanPokecenterText1 - dw CeruleanPokecenterText2 - dw CeruleanPokecenterText3 - dw CeruleanPokecenterText4 - -CeruleanPokecenterText4: ; 5c653 (17:4653) - db $f6 - -CeruleanPokecenterText1: ; 5c654 (17:4654) - db $ff + jp PrintDidntAffectText -CeruleanPokecenterText2: ; 5c655 (17:4655) - TX_FAR _CeruleanPokecenterText1 +PoisonedText: ; 3f2df (f:72df) + TX_FAR _PoisonedText db "@" -CeruleanPokecenterText3: ; 5c65a (17:465a) - TX_FAR _CeruleanPokecenterText3 +BadlyPoisonedText: ; 3f2e4 (f:72e4) + TX_FAR _BadlyPoisonedText db "@" -INCLUDE "data/mapObjects/ceruleanpokecenter.asm" - -CeruleanPokecenterBlocks: ; 5c68b (17:468b) - INCBIN "maps/ceruleanpokecenter.blk" - -INCLUDE "data/mapHeaders/ceruleangym.asm" - -CeruleanGymScript: ; 5c6b3 (17:46b3) - ld hl, $d126 - bit 6, [hl] - res 6, [hl] - call nz, CeruleanGymScript_5c6d0 - call EnableAutoTextBoxDrawing - ld hl, CeruleanGymTrainerHeaders - ld de, CeruleanGymScriptPointers - ld a, [W_CERULEANGYMCURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_CERULEANGYMCURSCRIPT], a - ret - -CeruleanGymScript_5c6d0: ; 5c6d0 (17:46d0) - ld hl, Gym2CityName ; $46d9 - ld de, Gym2LeaderName ; $46e7 - jp LoadGymLeaderAndCityName - -Gym2CityName: ; 5c6d9 (17:46d9) - db "CERULEAN CITY@" - -Gym2LeaderName: ; 5c6e7 (17:46e7) - db "MISTY@" +Func_3f2e9: ; 3f2e9 (f:72e9) + ld hl, Func_783f + ld b, BANK(Func_783f) + jp Bankswitch -Func_5c6ed: ; 5c6ed (17:46ed) +Func_3f2f1: ; 3f2f1 (f:72f1) + ld hl, W_PLAYERMONCURHP ; $d015 + ld de, W_PLAYERBATTSTATUS2 ; $d063 + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_3f302 + ld hl, W_ENEMYMONCURHP ; $cfe6 + ld de, W_ENEMYBATTSTATUS2 ; $d068 +.asm_3f302 xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_CERULEANGYMCURSCRIPT], a - ld [W_CURMAPSCRIPT], a + ld [hli], a + ld [hli], a + inc hl + ld [hl], a + ld a, [de] + res 7, a + ld [de], a ret -CeruleanGymScriptPointers: ; 5c6f8 (17:46f8) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - dw CeruleanGymScript3 - -CeruleanGymScript3: ; 5c700 (17:4700) - ld a, [W_ISINBATTLE] ; $d057 - cp $ff - jp z, Func_5c6ed - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a +FreezeBurnParalyzeEffect: ; 3f30c (f:730c) + xor a + ld [$cc5b], a + call CheckTargetSubstitute ;test bit 4 of d063/d068 flags [target has substitute flag] + ret nz ;return if they have a substitute, can't effect them + ld a, [$fff3] ;whose turn? + and a + jp nz, opponentAttacker + ld a, [W_ENEMYMONSTATUS] + and a + jp nz, CheckDefrost + ;opponent has no existing status + ld a, [W_PLAYERMOVETYPE] + ld b, a + ld a, [W_ENEMYMONTYPE1] + cp b + ret z ;return if they match [can't freeze an ice type etc.] + ld a, [W_ENEMYMONTYPE2] + cp b + ret z ;return.. + ld a, [W_PLAYERMOVEEFFECT] + cp a, 7 ;10% status effects are 04, 05, 06 so 07 will set carry for those + ld b, $1a ;[1A-1]/100 or [26-1]/256 = 9.8%~ chance + jr c, .next1 ;branch ahead if this is a 10% chance effect.. + ld b, $4d ;..or use [4D-1]/100 or [76-1]/256 = 29.7%~ chance + sub a, $1e ;subtract $1E to map to equivalent 10% chance effects +.next1 + push af ;push effect... + call GenRandomInBattle ;get random 8bit value for probability test + cp b ;success? + pop bc ;...pop effect into C + ret nc ;do nothing if random value is >= 1A or 4D [no status applied] + ;the test passed + ld a, b ;what type of effect is this? + cp a, BURN_SIDE_EFFECT1 + jr z, .burn + cp a, FREEZE_SIDE_EFFECT + jr z, .freeze + ld a, PAR + ld [W_ENEMYMONSTATUS], a + call Func_3ed27 ;quarter speed of affected monster + ld a, $a9 + call Func_3fbb9 ;animation + jp PrintMayNotAttackText ;print paralysis text +.burn + ld a, BRN + ld [W_ENEMYMONSTATUS], a + call Func_3ed64 + ld a, $a9 + call Func_3fbb9 ;animation + ld hl, BurnedText + jp PrintText +.freeze + call Func_3f9cf ;resets bit 5 of the D063/D068 flags + ld a, FRZ + ld [W_ENEMYMONSTATUS], a + ld a, $a9 + call Func_3fbb9 ;animation + ld hl, FrozenText + jp PrintText +opponentAttacker: ; 3f382 (f:7382) + ld a, [W_PLAYERMONSTATUS] ;this appears to the same as above with addresses swapped for opponent + and a + jp nz, CheckDefrost + ld a, [W_ENEMYMOVETYPE] + ld b, a + ld a, [W_PLAYERMONTYPE1] + cp b + ret z + ld a, [W_PLAYERMONTYPE2] + cp b + ret z + ld a, [W_ENEMYMOVEEFFECT] + cp a, 7 + ld b, $1a + jr c, .next1 + ld b, $4d + sub a, $1e +.next1 + push af + call GenRandomInBattle + cp b + pop bc + ret nc + ld a, b + cp a, BURN_SIDE_EFFECT1 + jr z, .burn + cp a, FREEZE_SIDE_EFFECT + jr z, .freeze + ld a, PAR + ld [W_PLAYERMONSTATUS], a + call Func_3ed27 + jp PrintMayNotAttackText +.burn + ld a, BRN + ld [W_PLAYERMONSTATUS], a + call Func_3ed64 + ld hl, BurnedText + jp PrintText +.freeze + ld a, FRZ + ld [W_PLAYERMONSTATUS], a + ld hl, FrozenText + jp PrintText -Func_5c70d: ; 5c70d (17:470d) - ld a, $5 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld hl, $d75e - set 7, [hl] - ld bc, (TM_11 << 8) | 1 - call GiveItem - jr nc, .BagFull - ld a, $6 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld hl, $d75e - set 6, [hl] - jr .asm_5c736 -.BagFull - ld a, $7 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID -.asm_5c736 - ld hl, W_OBTAINEDBADGES - set 1, [hl] - ld hl, $d72a - set 1, [hl] +BurnedText: ; 3f3d8 (f:73d8) + TX_FAR _BurnedText + db "@" - ; deactivate gym trainers - ld hl, $d75e - set 2, [hl] - set 3, [hl] +FrozenText: ; 3f3dd (f:73dd) + TX_FAR _FrozenText + db "@" - jp Func_5c6ed - -CeruleanGymTextPointers: ; 5c74a (17:474a) - dw CeruleanGymText1 - dw CeruleanGymText2 - dw CeruleanGymText3 - dw CeruleanGymText4 - dw CeruleanGymText5 - dw CeruleanGymText6 - dw CeruleanGymText7 - -CeruleanGymTrainerHeaders: ; 5c758 (17:4758) -CeruleanGymTrainerHeader0: ; 5c758 (17:4758) - db $2 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d75e ; flag's byte - dw CeruleanGymBattleText1 ; 0x47e9 TextBeforeBattle - dw CeruleanGymAfterBattleText1 ; 0x47f3 TextAfterBattle - dw CeruleanGymEndBattleText1 ; 0x47ee TextEndBattle - dw CeruleanGymEndBattleText1 ; 0x47ee TextEndBattle - -CeruleanGymTrainerHeader1: ; 5c764 (17:4764) - db $3 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d75e ; flag's byte - dw CeruleanGymBattleText2 ; 0x4802 TextBeforeBattle - dw CeruleanGymAfterBattleText2 ; 0x480c TextAfterBattle - dw CeruleanGymEndBattleText2 ; 0x4807 TextEndBattle - dw CeruleanGymEndBattleText2 ; 0x4807 TextEndBattle +CheckDefrost: ; 3f3e2 (f:73e2) + and a, FRZ ;are they frozen? + ret z ;return if so + ;not frozen + ld a, [$fff3] ;whose turn? + and a + jr nz, .opponent + ;player [attacker] + ld a, [W_PLAYERMOVETYPE] + sub a, FIRE + ret nz ;return if it isn't fire + ;type is fire + ld [W_ENEMYMONSTATUS], a ;set opponent status to 00 ["defrost" a frozen monster] + ld hl, $d8a8 ;status of first opponent monster in their roster + ld a, [W_ENEMYMONNUMBER] + ld bc, $002c ;$2C bytes per roster entry + call AddNTimes + xor a + ld [hl], a ;clear status in roster + ld hl, FireDefrostedText + jr .common +.opponent + ld a, [W_ENEMYMOVETYPE] ;same as above with addresses swapped + sub a, $14 + ret nz + ld [W_PLAYERMONSTATUS], a + ld hl, $d16f + ld a, [wPlayerMonNumber] + ld bc, $002c + call AddNTimes + xor a + ld [hl], a + ld hl, FireDefrostedText +.common + jp PrintText - db $ff +FireDefrostedText: ; 3f423 (f:7423) + TX_FAR _FireDefrostedText + db "@" -CeruleanGymText1: ; 5c771 (17:4771) - db $08 ; asm - ld a, [$d75e] - bit 7, a - jr z, .asm_10854 ; 0x5c777 - bit 6, a - jr nz, .asm_37a1b ; 0x5c77b - call z, Func_5c70d - call DisableWaitingAfterTextDisplay - jr .asm_95b04 ; 0x5c783 -.asm_37a1b ; 0x5c785 - ld hl, UnnamedText_5c7c3 - call PrintText - jr .asm_95b04 ; 0x5c78b -.asm_10854 ; 0x5c78d - ld hl, UnnamedText_5c7be - call PrintText - ld hl, $d72d - set 6, [hl] - set 7, [hl] - ld hl, UnnamedText_5c7d8 - ld de, UnnamedText_5c7d8 - call PreBattleSaveRegisters - ldh a, [$8c] - ld [$cf13], a - call EngageMapTrainer - call InitBattleEnemyParameters - ld a, $2 - ld [$d05c], a +Func_3f428: ; 3f428 (f:7428) + ld hl, wPlayerMonStatMods ; $cd1a + ld de, W_PLAYERMOVEEFFECT ; $cfd3 + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_3f439 + ld hl, wEnemyMonStatMods ; $cd2e + ld de, W_ENEMYMOVEEFFECT ; $cfcd +.asm_3f439 + ld a, [de] + sub $a + cp $8 + jr c, .asm_3f442 + sub $28 +.asm_3f442 + ld c, a + ld b, $0 + add hl, bc + ld b, [hl] + inc b + ld a, $d + cp b + jp c, Func_3f522 + ld a, [de] + cp $12 + jr c, .asm_3f45a + inc b + ld a, $d + cp b + jr nc, .asm_3f45a + ld b, a +.asm_3f45a + ld [hl], b + ld a, c + cp $4 + jr nc, asm_3f4ca + push hl + ld hl, $d026 + ld de, $cd12 + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_3f472 + ld hl, $cff7 + ld de, $cd26 +.asm_3f472 + push bc + sla c + ld b, $0 + add hl, bc + ld a, c + add e + ld e, a + jr nc, .asm_3f47e + inc d +.asm_3f47e + pop bc + ld a, [hld] + sub $e7 + jr nz, .asm_3f48a + ld a, [hl] + sbc $3 + jp z, Func_3f520 +.asm_3f48a + push hl + push bc + ld hl, StatModifierRatios ; $76cb + dec b + sla b + ld c, b + ld b, $0 + add hl, bc + pop bc xor a - ldh [$b4], a + ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) + ld a, [de] + ld [$ff97], a + inc de + ld a, [de] + ld [$ff98], a + ld a, [hli] + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + call Multiply + ld a, [hl] + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + ld b, $4 + call Divide + pop hl + ld a, [$ff98] + sub $e7 + ld a, [$ff97] + sbc $3 + jp c, Func_3f4c3 ld a, $3 - ld [W_CERULEANGYMCURSCRIPT], a -.asm_95b04 ; 0x5c7bb - jp TextScriptEnd - -UnnamedText_5c7be: ; 5c7be (17:47be) - TX_FAR _UnnamedText_5c7be - db "@" - -UnnamedText_5c7c3: ; 5c7c3 (17:47c3) - TX_FAR _UnnamedText_5c7c3 - db "@" - -CeruleanGymText5: ; 5c7c8 (17:47c8) - TX_FAR _UnnamedText_5c7c8 - db "@" - -CeruleanGymText6: ; 5c7cd (17:47cd) -ReceivedTM11Text: ; 5c7cd (17:47cd) - TX_FAR _ReceivedTM11Text - db $0B, "@" - -CeruleanGymText7: ; 5c7d3 (17:47d3) - TX_FAR _UnnamedText_5c7d3 - db "@" - -UnnamedText_5c7d8: ; 5c7d8 (17:47d8) - TX_FAR _UnnamedText_5c7d8 - db $11, $6, "@" - -CeruleanGymText2: ; 5c7df (17:47df) - db $08 ; asm - ld hl, CeruleanGymTrainerHeader0 - call TalkToTrainer - jp TextScriptEnd + ld [$ff97], a + ld a, $e7 + ld [$ff98], a -CeruleanGymBattleText1: ; 5c7e9 (17:47e9) - TX_FAR _CeruleanGymBattleText1 - db "@" +Func_3f4c3: ; 3f4c3 (f:74c3) + ld a, [$ff97] + ld [hli], a + ld a, [$ff98] + ld [hl], a + pop hl +asm_3f4ca: ; 3f4ca (f:74ca) + ld b, c + inc b + call Func_3f688 + ld hl, W_PLAYERBATTSTATUS2 ; $d063 + ld de, W_PLAYERMOVENUM ; $cfd2 + ld bc, $ccf7 + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_3f4e6 + ld hl, W_ENEMYBATTSTATUS2 ; $d068 + ld de, W_ENEMYMOVENUM ; $cfcc + ld bc, $ccf3 +.asm_3f4e6 + ld a, [de] + cp MINIMIZE + jr nz, .asm_3f4f9 + bit 4, [hl] + push af + push bc + ld hl, Func_79747 + ld b, BANK(Func_79747) + push de + call nz, Bankswitch + pop de +.asm_3f4f9 + call Func_3fba8 + ld a, [de] + cp MINIMIZE + jr nz, .asm_3f50e + pop bc + ld a, $1 + ld [bc], a + ld hl, Func_79771 + ld b, BANK(Func_79771) + pop af + call nz, Bankswitch +.asm_3f50e + ld a, [H_WHOSETURN] ; $fff3 + and a + call z, Func_3ee19 + ld hl, MonsStatsRoseText + call PrintText + call Func_3ed27 + jp Func_3ed64 -CeruleanGymEndBattleText1: ; 5c7ee (17:47ee) - TX_FAR _CeruleanGymEndBattleText1 - db "@" +Func_3f520: ; 3f520 (f:7520) + pop hl + dec [hl] -CeruleanGymAfterBattleText1: ; 5c7f3 (17:47f3) - TX_FAR _CeruleanGymAfterBattleText1 - db "@" +Func_3f522: ; 3f522 (f:7522) + ld hl, NothingHappenedText + jp PrintText -CeruleanGymText3: ; 5c7f8 (17:47f8) +MonsStatsRoseText: ; 3f528 (f:7528) + TX_FAR _MonsStatsRoseText db $08 ; asm - ld hl, CeruleanGymTrainerHeader1 - call TalkToTrainer - jp TextScriptEnd + ld hl, GreatlyRoseText + ld a, [H_WHOSETURN] ; $fff3 + and a + ld a, [W_PLAYERMOVEEFFECT] ; $cfd3 + jr z, .asm_3f53b + ld a, [W_ENEMYMOVEEFFECT] ; $cfcd +.asm_3f53b + cp $12 + ret nc + ld hl, RoseText + ret -CeruleanGymBattleText2: ; 5c802 (17:4802) - TX_FAR _CeruleanGymBattleText2 - db "@" +GreatlyRoseText: ; 3f542 (f:7542) + db $0a + TX_FAR _GreatlyRoseText -CeruleanGymEndBattleText2: ; 5c807 (17:4807) - TX_FAR _CeruleanGymEndBattleText2 +RoseText: ; 3f547 (f:7547) + TX_FAR _RoseText db "@" -CeruleanGymAfterBattleText2: ; 5c80c (17:480c) - TX_FAR _CeruleanGymAfterBattleText2 - db "@" +Func_3f54c: ; 3f54c (f:754c) + ld hl, wEnemyMonStatMods ; $cd2e + ld de, W_PLAYERMOVEEFFECT ; $cfd3 + ld bc, W_ENEMYBATTSTATUS1 ; $d067 + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_3f572 + ld hl, wPlayerMonStatMods ; $cd1a + ld de, W_ENEMYMOVEEFFECT ; $cfcd + ld bc, W_PLAYERBATTSTATUS1 ; $d062 + ld a, [W_ISLINKBATTLE] ; $d12b + cp $4 + jr z, .asm_3f572 + call GenRandomInBattle + cp $40 + jp c, Func_3f65a +.asm_3f572 + call CheckTargetSubstitute + jp nz, Func_3f65a + ld a, [de] + cp $44 + jr c, .asm_3f58a + call GenRandomInBattle + cp $55 + jp nc, Func_3f650 + ld a, [de] + sub $44 + jr .asm_3f5a9 +.asm_3f58a + push hl + push de + push bc + call MoveHitTest + pop bc + pop de + pop hl + ld a, [W_MOVEMISSED] ; $d05f + and a + jp nz, Func_3f65a + ld a, [bc] + bit 6, a + jp nz, Func_3f65a + ld a, [de] + sub $12 + cp $8 + jr c, .asm_3f5a9 + sub $28 +.asm_3f5a9 + ld c, a + ld b, $0 + add hl, bc + ld b, [hl] + dec b + jp z, Func_3f650 + ld a, [de] + cp $24 + jr c, .asm_3f5bf + cp $44 + jr nc, .asm_3f5bf + dec b + jr nz, .asm_3f5bf + inc b +.asm_3f5bf + ld [hl], b + ld a, c + cp $4 + jr nc, asm_3f62c + push hl + push de + ld hl, $cff7 + ld de, $cd26 + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_3f5d8 + ld hl, $d026 + ld de, $cd12 +.asm_3f5d8 + push bc + sla c + ld b, $0 + add hl, bc + ld a, c + add e + ld e, a + jr nc, .asm_3f5e4 + inc d +.asm_3f5e4 + pop bc + ld a, [hld] + sub $1 + jr nz, .asm_3f5ef + ld a, [hl] + and a + jp z, Func_3f64d +.asm_3f5ef + push hl + push bc + ld hl, StatModifierRatios ; $76cb + dec b + sla b + ld c, b + ld b, $0 + add hl, bc + pop bc + xor a + ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) + ld a, [de] + ld [$ff97], a + inc de + ld a, [de] + ld [$ff98], a + ld a, [hli] + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + call Multiply + ld a, [hl] + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + ld b, $4 + call Divide + pop hl + ld a, [$ff98] + ld b, a + ld a, [$ff97] + or b + jp nz, Func_3f624 + ld [$ff97], a + ld a, $1 + ld [$ff98], a -CeruleanGymText4: ; 5c811 (17:4811) - db $08 ; asm - ld a, [$d75e] - bit 7, a - jr nz, .asm_f80ce ; 0x5c817 - ld hl, UnnamedText_5c82a - call PrintText - jr .asm_18a31 ; 0x5c81f -.asm_f80ce ; 0x5c821 - ld hl, UnnamedText_5c82f +Func_3f624: ; 3f624 (f:7624) + ld a, [$ff97] + ld [hli], a + ld a, [$ff98] + ld [hl], a + pop de + pop hl +asm_3f62c: ; 3f62c (f:762c) + ld b, c + inc b + push de + call Func_3f688 + pop de + ld a, [de] + cp $44 + jr nc, .asm_3f63b + call Func_3fb89 +.asm_3f63b + ld a, [H_WHOSETURN] ; $fff3 + and a + call nz, Func_3ee19 + ld hl, MonsStatsFellText call PrintText -.asm_18a31 ; 0x5c827 - jp TextScriptEnd - -UnnamedText_5c82a: ; 5c82a (17:482a) - TX_FAR _UnnamedText_5c82a - db "@" - -UnnamedText_5c82f: ; 5c82f (17:482f) - TX_FAR _UnnamedText_5c82f - db "@" - -INCLUDE "data/mapObjects/ceruleangym.asm" + call Func_3ed27 + jp Func_3ed64 -CeruleanGymBlocks: ; 5c866 (17:4866) - INCBIN "maps/ceruleangym.blk" +Func_3f64d: ; 3f64d (f:764d) + pop de + pop hl + inc [hl] -INCLUDE "data/mapHeaders/ceruleanmart.asm" +Func_3f650: ; 3f650 (f:7650) + ld a, [de] + cp $44 + ret nc + ld hl, NothingHappenedText + jp PrintText -CeruleanMartScript: ; 5c895 (17:4895) - jp EnableAutoTextBoxDrawing +Func_3f65a: ; 3f65a (f:765a) + ld a, [de] + cp $44 + ret nc + jp Func_3fb4e -CeruleanMartTextPointers: ; 5c898 (17:4898) - dw CeruleanMartText1 - dw CeruleanMartText2 - dw CeruleanMartText3 +MonsStatsFellText: ; 3f661 (f:7661) + TX_FAR _MonsStatsFellText + db $08 ; asm + ld hl, FellText + ld a, [H_WHOSETURN] ; $fff3 + and a + ld a, [W_PLAYERMOVEEFFECT] ; $cfd3 + jr z, .asm_3f674 + ld a, [W_ENEMYMOVEEFFECT] ; $cfcd +.asm_3f674 + cp $1a + ret c + cp $44 + ret nc + ld hl, GreatlyFellText + ret -CeruleanMartText2: ; 5c89e (17:489e) - TX_FAR _CeruleanMartText2 - db "@" +GreatlyFellText: ; 3f67e (f:767e) + db $0a + TX_FAR _GreatlyFellText -CeruleanMartText3: ; 5c8a3 (17:48a3) - TX_FAR _CeruleanMartText3 +FellText: ; 3f683 (f:7683) + TX_FAR _FellText db "@" -INCLUDE "data/mapObjects/ceruleanmart.asm" - -INCLUDE "data/mapHeaders/lavenderpokecenter.asm" - -LavenderPokecenterScript: ; 5c8da (17:48da) - call Func_22fa - jp EnableAutoTextBoxDrawing - -LavenderPokecenterTextPointers: ; 5c8e0 (17:48e0) - dw LavenderPokecenterText1 - dw LavenderPokecenterText2 - dw LavenderPokecenterText3 - dw LavenderPokecenterText4 - -LavenderPokecenterText4: ; 5c8e8 (17:48e8) - db $f6 - -LavenderPokecenterText1: ; 5c8e9 (17:48e9) - db $ff - -LavenderPokecenterText2: ; 5c8ea (17:48ea) - TX_FAR _LavenderPokecenterText1 - db "@" +Func_3f688: ; 3f688 (f:7688) + ld hl, StatsTextStrings + ld c, $50 +.asm_3f68d + dec b + jr z, .asm_3f696 +.asm_3f690 + ld a, [hli] + cp c + jr z, .asm_3f68d + jr .asm_3f690 +.asm_3f696 + ld de, $cf4b + ld bc, $a + jp CopyData -LavenderPokecenterText3: ; 5c8ef (17:48ef) - TX_FAR _LavenderPokecenterText3 - db "@" +StatsTextStrings: ; 3f69f (f:769f) + db "ATTACK@" + db "DEFENSE@" + db "SPEED@" + db "SPECIAL@" + db "ACCURACY@" + db "EVADE@" -INCLUDE "data/mapObjects/lavenderpokecenter.asm" +StatModifierRatios: ; 3f6cb (f:76cb) +; first byte is numerator, second byte is denominator + db 25, 100 ; 0.25 + db 28, 100 ; 0.28 + db 33, 100 ; 0.33 + db 40, 100 ; 0.40 + db 50, 100 ; 0.50 + db 66, 100 ; 0.66 + db 1, 1 ; 1.00 + db 15, 10 ; 1.50 + db 2, 1 ; 2.00 + db 25, 10 ; 2.50 + db 3, 1 ; 3.00 + db 35, 10 ; 3.50 + db 4, 1 ; 4.00 -INCLUDE "data/mapHeaders/lavendermart.asm" +Func_3f6e5: ; 3f6e5 (f:76e5) + ld hl, W_PLAYERBATTSTATUS1 + ld de, W_NUMHITS + ld bc, $d06a + ld a, [H_WHOSETURN] + and a + jr z, .asm_3f6fc + ld hl, W_ENEMYBATTSTATUS1 + ld de, $cd05 + ld bc, $d06f +.asm_3f6fc + set 0, [hl] + xor a + ld [de], a + inc de + ld [de], a + ld [W_PLAYERMOVEEFFECT], a + ld [W_ENEMYMOVEEFFECT], a + call GenRandomInBattle + and $1 + inc a + inc a + ld [bc], a + ld a, [H_WHOSETURN] + add $ae + jp Func_3fb96 -LavenderMartScript: ; 5c92c (17:492c) - jp EnableAutoTextBoxDrawing +Func_3f717: ; 3f717 (f:7717) + ld hl, W_PLAYERBATTSTATUS1 ; $d062 + ld de, $d06a + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_3f728 + ld hl, W_ENEMYBATTSTATUS1 ; $d067 + ld de, $d06f +.asm_3f728 + set 1, [hl] + call GenRandomInBattle + and $1 + inc a + inc a + ld [de], a + ld a, [H_WHOSETURN] ; $fff3 + add $b0 + jp Func_3fb96 -LavenderMartTextPointers: ; 5c92f (17:492f) - dw LavenderMartText1 - dw LavenderMartText2 - dw LavenderMartText3 +Func_3f739: ; 3f739 (f:7739) + ld a, [H_WHOSETURN] ; $fff3 + and a + jr nz, .asm_3f791 + ld a, [W_ISINBATTLE] ; $d057 + dec a + jr nz, .asm_3f77e + ld a, [W_CURENEMYLVL] ; $d127 + ld b, a + ld a, [W_PLAYERMONLEVEL] ; $d022 + cp b + jr nc, .asm_3f76e + add b + ld c, a + inc c +.asm_3f751 + call GenRandomInBattle + cp c + jr nc, .asm_3f751 + srl b + srl b + cp b + jr nc, .asm_3f76e + ld c, $32 + call DelayFrames + ld a, [W_PLAYERMOVENUM] ; $cfd2 + cp TELEPORT + jp nz, PrintDidntAffectText + jp PrintItFailedText +.asm_3f76e + call ReadPlayerMonCurHPAndStatus + xor a + ld [$cc5b], a + inc a + ld [$d078], a + ld a, [W_PLAYERMOVENUM] ; $cfd2 + jr .asm_3f7e4 +.asm_3f77e + ld c, $32 + call DelayFrames + ld hl, IsUnaffectedText + ld a, [W_PLAYERMOVENUM] ; $cfd2 + cp TELEPORT + jp nz, PrintText + jp PrintItFailedText +.asm_3f791 + ld a, [W_ISINBATTLE] ; $d057 + dec a + jr nz, .asm_3f7d1 + ld a, [W_PLAYERMONLEVEL] ; $d022 + ld b, a + ld a, [W_CURENEMYLVL] ; $d127 + cp b + jr nc, .asm_3f7c1 + add b + ld c, a + inc c +.asm_3f7a4 + call GenRandomInBattle + cp c + jr nc, .asm_3f7a4 + srl b + srl b + cp b + jr nc, .asm_3f7c1 + ld c, $32 + call DelayFrames + ld a, [W_ENEMYMOVENUM] ; $cfcc + cp TELEPORT + jp nz, PrintDidntAffectText + jp PrintItFailedText +.asm_3f7c1 + call ReadPlayerMonCurHPAndStatus + xor a + ld [$cc5b], a + inc a + ld [$d078], a + ld a, [W_ENEMYMOVENUM] ; $cfcc + jr .asm_3f7e4 +.asm_3f7d1 + ld c, $32 + call DelayFrames + ld hl, IsUnaffectedText + ld a, [W_ENEMYMOVENUM] ; $cfcc + cp TELEPORT + jp nz, PrintText + jp Func_3fb4e +.asm_3f7e4 + push af + call Func_3fbb9 + ld c, $14 + call DelayFrames + pop af + ld hl, RanText + cp TELEPORT + jr z, .asm_3f7ff + ld hl, RanScaredText + cp ROAR + jr z, .asm_3f7ff + ld hl, BlownAwayText +.asm_3f7ff + jp PrintText -LavenderMartText2: ; 5c935 (17:4935) - TX_FAR _LavenderMartText2 +RanText: ; 3f802 (f:7802) + TX_FAR _RanText db "@" -LavenderMartText3: ; 5c93a (17:493a) - db $08 ; asm - ld a, [$d7e0] - bit 7, a - jr nz, .asm_c88d4 ; 0x5c940 - ld hl, UnnamedText_5c953 - call PrintText - jr .asm_6d225 ; 0x5c948 -.asm_c88d4 ; 0x5c94a - ld hl, UnnamedText_5c958 - call PrintText -.asm_6d225 ; 0x5c950 - jp TextScriptEnd - -UnnamedText_5c953: ; 5c953 (17:4953) - TX_FAR _UnnamedText_5c953 +RanScaredText: ; 3f807 (f:7807) + TX_FAR _RanScaredText db "@" -UnnamedText_5c958: ; 5c958 (17:4958) - TX_FAR _UnnamedText_5c958 +BlownAwayText: ; 3f80c (f:780c) + TX_FAR _BlownAwayText db "@" -INCLUDE "data/mapObjects/lavendermart.asm" +Func_3f811: ; 3f811 (f:7811) + ld hl, W_PLAYERBATTSTATUS1 ; $d062 + ld de, $d06a + ld bc, W_NUMHITS ; $d074 + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_3f828 + ld hl, W_ENEMYBATTSTATUS1 ; $d067 + ld de, $d06f + ld bc, $cd05 +.asm_3f828 + bit 2, [hl] + ret nz + set 2, [hl] + ld hl, W_PLAYERMOVEEFFECT ; $cfd3 + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_3f838 + ld hl, W_ENEMYMOVEEFFECT ; $cfcd +.asm_3f838 + ld a, [hl] + cp $4d + jr z, .asm_3f856 + cp $2c + ld a, $2 + jr z, .asm_3f853 + call GenRandomInBattle + and $3 + cp $2 + jr c, .asm_3f851 + call GenRandomInBattle + and $3 +.asm_3f851 + inc a + inc a +.asm_3f853 + ld [de], a + ld [bc], a + ret +.asm_3f856 + ld a, $2 + ld [hl], a + jr .asm_3f853 -INCLUDE "data/mapHeaders/vermilionpokecenter.asm" +Func_3f85b: ; 3f85b (f:785b) + call CheckTargetSubstitute + ret nz + ld hl, W_ENEMYBATTSTATUS1 ; $d067 + ld de, W_PLAYERMOVEEFFECT ; $cfd3 + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_3f870 + ld hl, W_PLAYERBATTSTATUS1 ; $d062 + ld de, W_ENEMYMOVEEFFECT ; $cfcd +.asm_3f870 + ld a, [de] + cp $1f + ld b, $1a + jr z, .asm_3f879 + ld b, $4d +.asm_3f879 + call GenRandomInBattle + cp b + ret nc + set 3, [hl] + call Func_3f9cf + ret -VermilionPokecenterScript: ; 5c98f (17:498f) - call Func_22fa - jp EnableAutoTextBoxDrawing +Func_3f884: ; 3f884 (f:7884) + ld hl, Func_33f57 + ld b, BANK(Func_33f57) + jp Bankswitch -VermilionPokecenterTextPointers: ; 5c995 (17:4995) - dw VermilionPokecenterText1 - dw VermilionPokecenterText2 - dw VermilionPokecenterText3 - dw VermilionPokecenterText4 +TwoTurnAttackEffect: ; 3f88c (f:788c) + ld hl, W_PLAYERBATTSTATUS1 ; $d062 + ld de, W_PLAYERMOVEEFFECT ; $cfd3 + ld a, [H_WHOSETURN] ; $fff3 + and a + ld b, $ae + jr z, .asm_3f8a1 + ld hl, W_ENEMYBATTSTATUS1 ; $d067 + ld de, W_ENEMYMOVEEFFECT ; $cfcd + ld b, $af +.asm_3f8a1 + set 4, [hl] + ld a, [de] + dec de + cp $2b + jr nz, .asm_3f8ad + set 6, [hl] + ld b, $64 +.asm_3f8ad + ld a, [de] + cp $5b + jr nz, .asm_3f8b6 + set 6, [hl] + ld b, $c0 +.asm_3f8b6 + xor a + ld [$cc5b], a + ld a, b + call Func_3fbb9 + ld a, [de] + ld [wWhichTrade], a ; $cd3d + ld hl, TwoTurnAttackTexts + jp PrintText -VermilionPokecenterText1: ; 5c99d (17:499d) - db $ff +TwoTurnAttackTexts: ; 3f8c8 (f:78c8) + TX_FAR _MonName2Text + db $08 ; asm + ld a, [wWhichTrade] + cp RAZOR_WIND + ld hl, RazorwindText + jr z, .asm_3f8f8 + cp SOLARBEAM + ld hl, SolarBeamText + jr z, .asm_3f8f8 + cp SKULL_BASH + ld hl, SkullBashText + jr z, .asm_3f8f8 + cp SKY_ATTACK + ld hl, SkyAttackText + jr z, .asm_3f8f8 + cp FLY + ld hl, FlyText + jr z, .asm_3f8f8 + cp DIG + ld hl, DigText +.asm_3f8f8 + ret -VermilionPokecenterText2: ; 5c99e (17:499e) - TX_FAR _VermilionPokecenterText1 +RazorwindText: ; 3f8f9 (f:78f9) + TX_FAR _RazorwindText db "@" -VermilionPokecenterText3: ; 5c9a3 (17:49a3) - TX_FAR _VermilionPokecenterText3 +SolarBeamText: ; 3f8fe (f:78fe) + TX_FAR _SolarBeamText db "@" -VermilionPokecenterText4: ; 5c9a8 (17:49a8) - db $f6 - -INCLUDE "data/mapObjects/vermilionpokecenter.asm" - -INCLUDE "data/mapHeaders/vermilionmart.asm" - -VermilionMartScript: ; 5c9e1 (17:49e1) - jp EnableAutoTextBoxDrawing - -VermilionMartTextPointers: ; 5c9e4 (17:49e4) - dw VermilionMartText1 - dw VermilionMartText2 - dw VermilionMartText3 - -VermilionMartText2: ; 5c9ea (17:49ea) - TX_FAR _VermilionMartText2 +SkullBashText: ; 3f903 (f:7903) + TX_FAR _SkullBashText db "@" -VermilionMartText3: ; 5c9ef (17:49ef) - TX_FAR _VermilionMartText3 +SkyAttackText: ; 3f908 (f:7908) + TX_FAR _SkyAttackText db "@" -INCLUDE "data/mapObjects/vermilionmart.asm" +FlyText: ; 3f90d (f:790d) + TX_FAR _FlyText + db "@" -INCLUDE "data/mapHeaders/vermiliongym.asm" +DigText: ; 3f912 (f:7912) + TX_FAR _DigText + db "@" -VermilionGymScript: ; 5ca26 (17:4a26) - ld hl, $d126 +Func_3f917: ; 3f917 (f:7917) + ld hl, W_PLAYERBATTSTATUS1 ; $d062 + ld de, $d06a + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_3f928 + ld hl, W_ENEMYBATTSTATUS1 ; $d067 + ld de, $d06f +.asm_3f928 bit 5, [hl] - res 5, [hl] - push hl - call nz, VermilionGymScript_5ca4c - pop hl - bit 6, [hl] - res 6, [hl] - call nz, VermilionGymScript_5ca6d - call EnableAutoTextBoxDrawing - ld hl, VermilionGymTrainerHeader0 - ld de, VermilionGymScriptPointers - ld a, [W_VERMILIONGYMCURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_VERMILIONGYMCURSCRIPT], a - ret - -VermilionGymScript_5ca4c: ; 5ca4c (17:4a4c) - ld hl, Gym3CityName ; $4a55 - ld de, Gym3LeaderName ; $4a64 - jp LoadGymLeaderAndCityName - -Gym3CityName: ; 5ca55 (17:4a55) - db "VERMILION CITY@" - -Gym3LeaderName: ; 5ca64 (17:4a64) - db "LT.SURGE@" - -VermilionGymScript_5ca6d: ; 5ca6d (17:4a6d) - ld a, [$d773] - bit 0, a - jr nz, .asm_5ca78 - ld a, $24 - jr .asm_5ca7f -.asm_5ca78 - ld a, (SFX_02_57 - SFX_Headers_02) / 3 - call PlaySound - ld a, $5 -.asm_5ca7f - ld [$d09f], a - ld bc, $202 - ld a, $17 - jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) - -VermilionGymScript_5ca8a: ; 5ca8a (17:4a8a) - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_VERMILIONGYMCURSCRIPT], a - ld [W_CURMAPSCRIPT], a + ret nz + call Func_3f9cf + set 5, [hl] + call GenRandomInBattle + and $3 + cp $2 + jr c, .asm_3f93e + call GenRandomInBattle + and $3 +.asm_3f93e + inc a + ld [de], a ret -VermilionGymScriptPointers: ; 5ca95 (17:4a95) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - dw VermilionGymScript3 +MistEffect: ; 3f941 (f:7941) + ld hl, _MistEffect + ld b, BANK(_MistEffect) + jp Bankswitch -VermilionGymScript3: ; 5ca9d (17:4a9d) - ld a, [W_ISINBATTLE] ; $d057 - cp $ff - jp z, VermilionGymScript_5ca8a - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a +FocusEnergyEffect: ; 3f949 (f:7949) + ld hl, _FocusEnergyEffect + ld b, BANK(_FocusEnergyEffect) + jp Bankswitch -Func_5caaa: ; 5caaa (17:4aaa) - ld a, $6 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld hl, $d773 - set 7, [hl] - ld bc, (TM_24 << 8) | 1 - call GiveItem - jr nc, .BagFull - ld a, $7 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld hl, $d773 - set 6, [hl] - jr .asm_5cad3 -.BagFull - ld a, $8 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID -.asm_5cad3 - ld hl, W_OBTAINEDBADGES - set 2, [hl] - ld hl, $d72a - set 2, [hl] +RecoilEffect: ; 3f951 (f:7951) + ld hl, _RecoilEffect + ld b, BANK(_RecoilEffect) + jp Bankswitch - ; deactivate gym trainers - ld a, [$d773] - or %00011100 - ld [$d773], a - - jp VermilionGymScript_5ca8a - -VermilionGymTextPointers: ; 5cae8 (17:4ae8) - dw VermilionGymText1 - dw VermilionGymText2 - dw VermilionGymText3 - dw VermilionGymText4 - dw VermilionGymText5 - dw VermilionGymText6 - dw VermilionGymText7 - dw VermilionGymText8 - -VermilionGymTrainerHeaders: ; 5caf8 (17:4af8) -VermilionGymTrainerHeader0: ; 5caf8 (17:4af8) - db $2 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d773 ; flag's byte - dw VermilionGymBattleText1 ; 0x4b9a TextBeforeBattle - dw VermilionGymAfterBattleText1 ; 0x4ba4 TextAfterBattle - dw VermilionGymEndBattleText1 ; 0x4b9f TextEndBattle - dw VermilionGymEndBattleText1 ; 0x4b9f TextEndBattle - -VermilionGymTrainerHeader1: ; 5cb04 (17:4b04) - db $3 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d773 ; flag's byte - dw VermilionGymBattleText2 ; 0x4bb3 TextBeforeBattle - dw VermilionGymAfterBattleText2 ; 0x4bbd TextAfterBattle - dw VermilionGymEndBattleText2 ; 0x4bb8 TextEndBattle - dw VermilionGymEndBattleText2 ; 0x4bb8 TextEndBattle - -VermilionGymTrainerHeader2: ; 5cb10 (17:4b10) - db $4 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d773 ; flag's byte - dw VermilionGymBattleText3 ; 0x4bcc TextBeforeBattle - dw VermilionGymAfterBattleText3 ; 0x4bd6 TextAfterBattle - dw VermilionGymEndBattleText3 ; 0x4bd1 TextEndBattle - dw VermilionGymEndBattleText3 ; 0x4bd1 TextEndBattle +Func_3f959: ; 3f959 (f:7959) + call GenRandomInBattle + cp $19 + ret nc + jr Func_3f96f - db $ff +Func_3f961: ; 3f961 (f:7961) + call CheckTargetSubstitute + jr nz, Func_3f9a6 + call MoveHitTest + ld a, [W_MOVEMISSED] ; $d05f + and a + jr nz, Func_3f9a6 -VermilionGymText1: ; 5cb1d (17:4b1d) - db $08 ; asm - ld a, [$d773] - bit 7, a - jr z, .asm_7cc29 ; 0x5cb23 - bit 6, a - jr nz, .asm_41203 ; 0x5cb27 - call z, Func_5caaa - call DisableWaitingAfterTextDisplay - jr .asm_23621 ; 0x5cb2f -.asm_41203 ; 0x5cb31 - ld hl, UnnamedText_5cb72 - call PrintText - jr .asm_23621 ; 0x5cb37 -.asm_7cc29 ; 0x5cb39 - ld hl, UnnamedText_5cb6d - call PrintText - ld hl, $d72d - set 6, [hl] +Func_3f96f: ; 3f96f (f:796f) + ld a, [H_WHOSETURN] ; $fff3 + and a + ld hl, W_ENEMYBATTSTATUS1 ; $d067 + ld bc, $d070 + ld a, [W_PLAYERMOVEEFFECT] ; $cfd3 + jr z, .asm_3f986 + ld hl, W_PLAYERBATTSTATUS1 ; $d062 + ld bc, $d06b + ld a, [W_ENEMYMOVEEFFECT] ; $cfcd +.asm_3f986 + bit 7, [hl] + jr nz, Func_3f9a6 set 7, [hl] - ld hl, ReceivedThunderbadgeText - ld de, ReceivedThunderbadgeText - call PreBattleSaveRegisters - ldh a, [$8c] - ld [$cf13], a - call EngageMapTrainer - call InitBattleEnemyParameters - ld a, $3 - ld [$d05c], a - xor a - ldh [$b4], a - ld a, $3 - ld [W_VERMILIONGYMCURSCRIPT], a - ld [W_CURMAPSCRIPT], a -.asm_23621 ; 0x5cb6a - jp TextScriptEnd - -UnnamedText_5cb6d: ; 5cb6d (17:4b6d) - TX_FAR _UnnamedText_5cb6d - db "@" - -UnnamedText_5cb72: ; 5cb72 (17:4b72) - TX_FAR _UnnamedText_5cb72 - db "@" - -VermilionGymText6: ; 5cb77 (17:4b77) - TX_FAR _UnnamedText_5cb77 - db "@" - -VermilionGymText7: ; 5cb7c (17:4b7c) - TX_FAR _ReceivedTM24Text - db $11 - TX_FAR _TM24ExplanationText - db "@" - -VermilionGymText8: ; 5cb86 (17:4b86) - TX_FAR _TM24NoRoomText - db "@" + push af + call GenRandomInBattle + and $3 + inc a + inc a + ld [bc], a + pop af + cp $4c + call nz, Func_3fb89 + ld hl, ConfusedText + jp PrintText -ReceivedThunderbadgeText: ; 5cb8b (17:4b8b) - TX_FAR _ReceivedThunderbadgeText +ConfusedText: ; 3f9a1 (f:79a1) + TX_FAR _ConfusedText db "@" -VermilionGymText2: ; 5cb90 (17:4b90) - db $08 ; asm - ld hl, VermilionGymTrainerHeader0 - call TalkToTrainer - jp TextScriptEnd +Func_3f9a6: ; 3f9a6 (f:79a6) + cp $4c + ret z + ld c, $32 + call DelayFrames + jp Func_3fb4e -VermilionGymBattleText1: ; 5cb9a (17:4b9a) - TX_FAR _VermilionGymBattleText1 - db "@" +Func_3f9b1: ; 3f9b1 (f:79b1) + ld hl, Func_52601 + ld b, BANK(Func_52601) + jp Bankswitch -VermilionGymEndBattleText1: ; 5cb9f (17:4b9f) - TX_FAR _VermilionGymEndBattleText1 - db "@" +Func_3f9b9: ; 3f9b9 (f:79b9) + ld hl, SubstituteEffectHandler + ld b, BANK(SubstituteEffectHandler) + jp Bankswitch -VermilionGymAfterBattleText1: ; 5cba4 (17:4ba4) - TX_FAR _VermilionGymAfterBattleText1 - db "@" +Func_3f9c1: ; 3f9c1 (f:79c1) + ld hl, W_PLAYERBATTSTATUS2 ; $d063 + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_3f9cc + ld hl, W_ENEMYBATTSTATUS2 ; $d068 +.asm_3f9cc + set 5, [hl] + ret -VermilionGymText3: ; 5cba9 (17:4ba9) - db $08 ; asm - ld hl, VermilionGymTrainerHeader1 - call TalkToTrainer - jp TextScriptEnd +Func_3f9cf: ; 3f9cf (f:79cf) + push hl + ld hl, W_ENEMYBATTSTATUS2 ; $d068 + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_3f9db + ld hl, W_PLAYERBATTSTATUS2 ; $d063 +.asm_3f9db + res 5, [hl] + pop hl + ret -VermilionGymBattleText2: ; 5cbb3 (17:4bb3) - TX_FAR _VermilionGymBattleText2 - db "@" +Func_3f9df: ; 3f9df (f:79df) + ld hl, W_PLAYERBATTSTATUS2 + ld a, [H_WHOSETURN] + and a + jr z, .player + ld hl, W_ENEMYBATTSTATUS2 +.player + set 6, [hl] + ret -VermilionGymEndBattleText2: ; 5cbb8 (17:4bb8) - TX_FAR _VermilionGymEndBattleText2 - db "@" +Func_3f9ed: ; 3f9ed (f:79ed) + ld c, $32 + call DelayFrames + call MoveHitTest + ld a, [W_MOVEMISSED] + and a + jr nz, .asm_3fa74 + ld a, [H_WHOSETURN] + and a + ld hl, W_PLAYERMONMOVES + ld a, [W_PLAYERBATTSTATUS1] + jr nz, .asm_3fa13 + ld a, [W_ISLINKBATTLE] + cp $4 + jr nz, .asm_3fa3a + ld hl, W_ENEMYMONMOVES + ld a, [W_ENEMYBATTSTATUS1] +.asm_3fa13 + bit 6, a + jr nz, .asm_3fa74 +.asm_3fa17 + push hl + call GenRandomInBattle + and $3 + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + pop hl + and a + jr z, .asm_3fa17 + ld d, a + ld a, [H_WHOSETURN] + and a + ld hl, W_PLAYERMONMOVES + ld a, [wPlayerMoveListIndex] + jr z, .asm_3fa5f + ld hl, W_ENEMYMONMOVES + ld a, [wEnemyMoveListIndex] + jr .asm_3fa5f +.asm_3fa3a + ld a, [W_ENEMYBATTSTATUS1] + bit 6, a + jr nz, .asm_3fa74 + ld a, [wCurrentMenuItem] + push af + ld a, $1 + ld [wMoveMenuType], a + call MoveSelectionMenu + call LoadScreenTilesFromBuffer1 + ld hl, W_ENEMYMONMOVES + ld a, [wCurrentMenuItem] + ld c, a + ld b, $0 + add hl, bc + ld d, [hl] + pop af + ld hl, W_PLAYERMONMOVES +.asm_3fa5f + ld c, a + ld b, $0 + add hl, bc + ld a, d + ld [hl], a + ld [$d11e], a + call GetMoveName + call Func_3fba8 + ld hl, LearnedMove2Text + jp PrintText +.asm_3fa74 + jp PrintItFailedText -VermilionGymAfterBattleText2: ; 5cbbd (17:4bbd) - TX_FAR _VermilionGymAfterBattleText2 +LearnedMove2Text: ; 3fa77 (f:7a77) + TX_FAR _LearnedMove2Text db "@" -VermilionGymText4: ; 5cbc2 (17:4bc2) - db $08 ; asm - ld hl, VermilionGymTrainerHeader2 - call TalkToTrainer - jp TextScriptEnd +LeechSeedEffect: ; 3fa7c (f:7a7c) + ld hl, _LeechSeedEffect + ld b, BANK(_LeechSeedEffect) + jp Bankswitch -VermilionGymBattleText3: ; 5cbcc (17:4bcc) - TX_FAR _VermilionGymBattleText3 - db "@" +Func_3fa84: ; 3fa84 (f:7a84) + call Func_3fba8 + jp PrintNoEffectText -VermilionGymEndBattleText3: ; 5cbd1 (17:4bd1) - TX_FAR _VermilionGymEndBattleText3 - db "@" +DisableEffect: ; 3fa8a (f:7a8a) + call MoveHitTest + ld a, [W_MOVEMISSED] ; $d05f + and a + jr nz, .asm_3fb06 + ld de, W_ENEMYDISABLEDMOVE ; $d072 + ld hl, W_ENEMYMONMOVES + ld a, [H_WHOSETURN] ; $fff3 + and a + jr z, .asm_3faa4 + ld de, W_PLAYERDISABLEDMOVE ; $d06d + ld hl, W_PLAYERMONMOVES +.asm_3faa4 + ld a, [de] + and a + jr nz, .asm_3fb06 +.asm_3faa8 + push hl + call GenRandomInBattle + and $3 + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + pop hl + and a + jr z, .asm_3faa8 + ld [$d11e], a + push hl + ld a, [H_WHOSETURN] ; $fff3 + and a + ld hl, W_PLAYERMONPP ; $d02d + jr nz, .asm_3facf + ld a, [W_ISLINKBATTLE] ; $d12b + cp $4 + pop hl + jr nz, .asm_3fae1 + push hl + ld hl, W_ENEMYMONPP ; $cffe +.asm_3facf + push hl + ld a, [hli] + or [hl] + inc hl + or [hl] + inc hl + or [hl] + and $3f + pop hl + jr z, .asm_3fb05 + add hl, bc + ld a, [hl] + pop hl + and a + jr z, .asm_3faa8 +.asm_3fae1 + call GenRandomInBattle + and $7 + inc a + inc c + swap c + add c + ld [de], a + call Func_3fb89 + ld hl, $ccee + ld a, [H_WHOSETURN] ; $fff3 + and a + jr nz, .asm_3faf8 + inc hl +.asm_3faf8 + ld a, [$d11e] + ld [hl], a + call GetMoveName + ld hl, DisableText + jp PrintText +.asm_3fb05 + pop hl +.asm_3fb06 + jp PrintItFailedText -VermilionGymAfterBattleText3: ; 5cbd6 (17:4bd6) - TX_FAR _VermilionGymAfterBattleText3 +DisableText: ; 3fb09 (f:7b09) + TX_FAR _DisableText db "@" -VermilionGymText5: ; 5cbdb (17:4bdb) - db $08 ; asm - ld a, [$d72a] - bit 2, a - jr nz, .asm_13b67 ; 0x5cbe1 - ld hl, UnnamedText_5cbf4 - call PrintText - jr .asm_c2b38 ; 0x5cbe9 -.asm_13b67 ; 0x5cbeb - ld hl, UnnamedText_5cbf9 - call PrintText -.asm_c2b38 ; 0x5cbf1 - jp TextScriptEnd - -UnnamedText_5cbf4: ; 5cbf4 (17:4bf4) - TX_FAR _UnnamedText_5cbf4 - db "@" +PayDayEffect: ; 3fb0e (f:7b0e) + ld hl, _PayDayEffect + ld b, BANK(_PayDayEffect) + jp Bankswitch -UnnamedText_5cbf9: ; 5cbf9 (17:4bf9) - TX_FAR _UnnamedText_5cbf9 - db "@" +ConversionEffect: ; 3fb16 (f:7b16) + ld hl, _ConversionEffect + ld b, BANK(_ConversionEffect) + jp Bankswitch -INCLUDE "data/mapObjects/vermiliongym.asm" +HazeEffect: ; 3fb1e (f:7b1e) + ld hl, _HazeEffect + ld b, BANK(_HazeEffect) + jp Bankswitch -VermilionGymBlocks: ; 5cc38 (17:4c38) - INCBIN "maps/vermiliongym.blk" +Func_3fb26: ; 3fb26 (f:7b26) + ld hl, Func_3b9ec + ld b, BANK(Func_3b9ec) + jp Bankswitch -INCLUDE "data/mapHeaders/copycatshouse2f.asm" +Func_3fb2e: ; 3fb2e (f:7b2e) + ld hl, Func_3bab1 + ld b, BANK(Func_3bab1) + jp Bankswitch -CopycatsHouse2FScript: ; 5cc71 (17:4c71) - jp EnableAutoTextBoxDrawing +Func_3fb36: ; 3fb36 (f:7b36) + ld hl, Func_3bb97 + ld b, BANK(Func_3bb97) + jp Bankswitch -CopycatsHouse2FTextPointers: ; 5cc74 (17:4c74) - dw CopycatsHouse2FText1 - dw CopycatsHouse2FText2 - dw CopycatsHouse2FText3 - dw CopycatsHouse2FText4 - dw CopycatsHouse2FText5 - dw CopycatsHouse2FText6 - dw CopycatsHouse2FText7 +NothingHappenedText: ; 3fb3e (f:7b3e) + TX_FAR _NothingHappenedText + db "@" -CopycatsHouse2FText1: ; 5cc82 (17:4c82) - db $08 ; asm - ld a, [$d7af] - bit 0, a - jr nz, .asm_7ccf3 ; 0x5cc88 - ld a, $1 - ld [$cc3c], a - ld hl, UnnamedText_5ccd4 - call PrintText - ld b, POKE_DOLL - call IsItemInBag - jr z, .asm_62ecd ; 0x5cc9a - ld hl, TM31PreReceiveText - call PrintText - ld bc, (TM_31 << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, ReceivedTM31Text - call PrintText - ld a, POKE_DOLL - ldh [$db], a - ld b, BANK(RemoveItemByID) - ld hl, RemoveItemByID - call Bankswitch - ld hl, $d7af - set 0, [hl] - jr .asm_62ecd ; 0x5ccc1 -.BagFull - ld hl, TM31NoRoomText - call PrintText - jr .asm_62ecd ; 0x5ccc9 -.asm_7ccf3 ; 0x5cccb - ld hl, TM31ExplanationText2 - call PrintText -.asm_62ecd ; 0x5ccd1 - jp TextScriptEnd +PrintNoEffectText: ; 3fb43 (f:7b43) + ld hl, NoEffectText + jp PrintText -UnnamedText_5ccd4: ; 5ccd4 (17:4cd4) - TX_FAR _UnnamedText_5ccd4 +NoEffectText: ; 3fb49 (f:7b49) + TX_FAR _NoEffectText db "@" -TM31PreReceiveText: ; 5ccd9 (17:4cd9) - TX_FAR _TM31PreReceiveText - db "@" +Func_3fb4e: ; 3fb4e (f:7b4e) + ld a, [$ccf4] + and a + ret nz -ReceivedTM31Text: ; 5ccde (17:4cde) - TX_FAR _ReceivedTM31Text - db $0B -TM31ExplanationText1: ; 5cce3 (17:4ce3) - TX_FAR _TM31ExplanationText1 - db $d, "@" +PrintItFailedText: ; 3fb53 (f:7b53) + ld hl, ItFailedText + jp PrintText -TM31ExplanationText2: ; 5cce9 (17:4ce9) - TX_FAR _TM31ExplanationText2 +ItFailedText: ; 3fb59 (f:7b59) + TX_FAR _ItFailedText db "@" -TM31NoRoomText: ; 5ccee (17:4cee) - TX_FAR _TM31NoRoomText - db $d, "@" +PrintDidntAffectText: ; 3fb5e (f:7b5e) + ld hl, DidntAffectText + jp PrintText -CopycatsHouse2FText2: ; 5ccf4 (17:4cf4) - TX_FAR _CopycatsHouse2FText2 +DidntAffectText: ; 3fb64 (f:7b64) + TX_FAR _DidntAffectText db "@" -CopycatsHouse2FText5: ; 5ccf9 (17:4cf9) -CopycatsHouse2FText4: ; 5ccf9 (17:4cf9) -CopycatsHouse2FText3: ; 5ccf9 (17:4cf9) - TX_FAR _CopycatsHouse2FText3 +IsUnaffectedText: ; 3fb69 (f:7b69) + TX_FAR _IsUnaffectedText db "@" -CopycatsHouse2FText6: ; 5ccfe (17:4cfe) - TX_FAR _CopycatsHouse2FText6 +PrintMayNotAttackText: ; 3fb6e (f:7b6e) + ld hl, MayNotAttackText + jp PrintText + +MayNotAttackText: ; 3fb74 (f:7b74) + TX_FAR _MayNotAttackText db "@" -CopycatsHouse2FText7: ; 5cd03 (17:4d03) - db $08 ; asm - ld a, [$c109] - cp $4 - ld hl, UnnamedText_5cd1c - jr nz, .asm_399a4 ; 0x5cd0c - ld hl, UnnamedText_5cd17 -.asm_399a4 ; 0x5cd11 - call PrintText - jp TextScriptEnd +CheckTargetSubstitute: ; 3fb79 (f:7b79) + push hl + ld hl, $d068 + ld a, [$fff3] ;whose turn? + and a + jr z, .next1 + ld hl, $d063 +.next1 + bit 4, [hl] ;test bit 4 in d063/d068 flags + pop hl + ret -UnnamedText_5cd17: ; 5cd17 (17:4d17) - TX_FAR _UnnamedText_5cd17 - db "@" +Func_3fb89: ; 3fb89 (f:7b89) + ld a, [H_WHOSETURN] ; $fff3 + and a + ld a, [W_PLAYERMOVENUM] ; $cfd2 + jr z, .asm_3fb94 + ld a, [W_ENEMYMOVENUM] ; $cfcc +.asm_3fb94 + and a + ret z -UnnamedText_5cd1c: ; 5cd1c (17:4d1c) - TX_FAR _UnnamedText_5cd1c - db "@" +Func_3fb96: ; 3fb96 (f:7b96) + ld [W_ANIMATIONID], a ; $d07c + ld a, [H_WHOSETURN] ; $fff3 + and a + ld a, $6 + jr z, .asm_3fba2 + ld a, $3 +.asm_3fba2 + ld [$cc5b], a + jp Func_3fbbc -INCLUDE "data/mapObjects/copycatshouse2f.asm" +Func_3fba8: ; 3fba8 (f:7ba8) + xor a + ld [$cc5b], a + ld a, [H_WHOSETURN] ; $fff3 + and a + ld a, [W_PLAYERMOVENUM] ; $cfd2 + jr z, .asm_3fbb7 + ld a, [W_ENEMYMOVENUM] ; $cfcc +.asm_3fbb7 + and a + ret z -INCLUDE "data/mapHeaders/fightingdojo.asm" +Func_3fbb9: ; 3fbb9 (f:7bb9) + ld [W_ANIMATIONID], a ; $d07c -FightingDojoScript: ; 5cd5d (17:4d5d) - call EnableAutoTextBoxDrawing - ld hl, FightingDojoTrainerHeaders - ld de, FightingDojoScriptPointers - ld a, [W_FIGHTINGDOJOCURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_FIGHTINGDOJOCURSCRIPT], a +Func_3fbbc: ; 3fbbc (f:7bbc) + push hl + push de + push bc + ld a, $8 + call Predef ; indirect jump to MoveAnimation (78d5e (1e:4d5e)) + pop bc + pop de + pop hl ret -FightingDojoScript_5cd70: ; 5cd70 (17:4d70) +SECTION "bank10",ROMX,BANK[$10] + +DisplayPokedexMenu_: ; 40000 (10:4000) + call GBPalWhiteOut + call ClearScreen + call UpdateSprites ; move sprites + ld a,[wListScrollOffset] + push af xor a - ld [$cd6b], a - ld [$d642], a - ld [$da39], a - ret + ld [wCurrentMenuItem],a + ld [wListScrollOffset],a + ld [wLastMenuItem],a + inc a + ld [$d11e],a + ld [$ffb7],a +.setUpGraphics + ld b,$08 + call GoPAL_SET + ld hl,LoadPokedexTilePatterns + ld b,BANK(LoadPokedexTilePatterns) + call Bankswitch +.doPokemonListMenu + ld hl,wTopMenuItemY + ld a,3 + ld [hli],a ; top menu item Y + xor a + ld [hli],a ; top menu item X + inc a + ld [$cc37],a + inc hl + inc hl + ld a,6 + ld [hli],a ; max menu item ID + ld [hl],%00110011 ; menu watched keys (Left, Right, B button, A button) + call HandlePokedexListMenu + jr c,.goToSideMenu ; if the player chose a pokemon from the list +.exitPokedex + xor a + ld [$cc37],a + ld [wCurrentMenuItem],a + ld [wLastMenuItem],a + ld [$ffb7],a + ld [$cd3a],a + ld [$cd3b],a + pop af + ld [wListScrollOffset],a + call GBPalWhiteOutWithDelay3 + call GoPAL_SET_CF1C + jp ReloadMapData +.goToSideMenu + call HandlePokedexSideMenu + dec b + jr z,.exitPokedex ; if the player chose Quit + dec b + jr z,.doPokemonListMenu ; if pokemon not seen or player pressed B button + jp .setUpGraphics ; if pokemon data or area was shown -FightingDojoScriptPointers: ; 5cd7b (17:4d7b) - dw FightingDojoScript1 - dw Func_324c - dw EndTrainerBattle - dw FightingDojoScript3 +; handles the menu on the lower right in the pokedex screen +; OUTPUT: +; b = reason for exiting menu +; 00: showed pokemon data or area +; 01: the player chose Quit +; 02: the pokemon has not been seen yet or the player pressed the B button +HandlePokedexSideMenu: ; 4006d (10:406d) + call PlaceUnfilledArrowMenuCursor + ld a,[wCurrentMenuItem] + push af + ld b,a + ld a,[wLastMenuItem] + push af + ld a,[wListScrollOffset] + push af + add b + inc a + ld [$d11e],a + ld a,[$d11e] + push af + ld a,[$cd3d] + push af + ld hl,wPokedexSeen + call IsPokemonBitSet + ld b,2 + jr z,.exitSideMenu + call PokedexToIndex + ld hl,wTopMenuItemY + ld a,10 + ld [hli],a ; top menu item Y + ld a,15 + ld [hli],a ; top menu item X + xor a + ld [hli],a ; current menu item ID + inc hl + ld a,3 + ld [hli],a ; max menu item ID + ld [hli],a ; menu watched keys (A button and B button) + xor a + ld [hli],a ; old menu item ID + ld [$cc37],a +.handleMenuInput + call HandleMenuInput + bit 1,a ; was the B button pressed? + ld b,2 + jr nz,.buttonBPressed + ld a,[wCurrentMenuItem] + and a + jr z,.choseData + dec a + jr z,.choseCry + dec a + jr z,.choseArea +.choseQuit + ld b,1 +.exitSideMenu + pop af + ld [$cd3d],a + pop af + ld [$d11e],a + pop af + ld [wListScrollOffset],a + pop af + ld [wLastMenuItem],a + pop af + ld [wCurrentMenuItem],a + push bc + FuncCoord 0,3 + ld hl,Coord + ld de,20 + ld bc,$7f0d ; 13 blank tiles + call DrawTileLine ; cover up the menu cursor in the pokemon list + pop bc + ret +.buttonBPressed + push bc + FuncCoord 15,10 + ld hl,Coord + ld de,20 + ld bc,$7f07 ; 7 blank tiles + call DrawTileLine ; cover up the menu cursor in the side menu + pop bc + jr .exitSideMenu +.choseData + call ShowPokedexDataInternal + ld b,0 + jr .exitSideMenu +; play pokemon cry +.choseCry + ld a,[$d11e] + call GetCryData ; get cry data + call PlaySound ; play sound + jr .handleMenuInput +.choseArea + ld a,$4a + call Predef ; display pokemon areas + ld b,0 + jr .exitSideMenu -FightingDojoScript1: ; 5cd83 (17:4d83) - ld a, [$d7b1] - bit 0, a - ret nz - call CheckFightingMapTrainers - ld a, [wTrainerHeaderFlagBit] +; handles the list of pokemon on the left of the pokedex screen +; sets carry flag if player presses A, unsets carry flag if player presses B +HandlePokedexListMenu: ; 40111 (10:4111) + xor a + ld [H_AUTOBGTRANSFERENABLED],a +; draw the horizontal line separating the seen and owned amounts from the menu + FuncCoord 15,8 + ld hl,Coord + ld a,$7a ; horizontal line tile + ld [hli],a + ld [hli],a + ld [hli],a + ld [hli],a + ld [hli],a + FuncCoord 14,0 + ld hl,Coord + ld [hl],$71 ; vertical line tile + FuncCoord 14,1 + ld hl,Coord + call DrawPokedexVerticalLine + FuncCoord 14,9 + ld hl,Coord + call DrawPokedexVerticalLine + ld hl,wPokedexSeen + ld b,19 + call CountSetBits + ld de,$d11e + FuncCoord 16,3 + ld hl,Coord + ld bc,$0103 + call PrintNumber ; print number of seen pokemon + ld hl,wPokedexOwned + ld b,19 + call CountSetBits + ld de,$d11e + FuncCoord 16,6 + ld hl,Coord + ld bc,$0103 + call PrintNumber ; print number of owned pokemon + FuncCoord 16,2 + ld hl,Coord + ld de,PokedexSeenText + call PlaceString + FuncCoord 16,5 + ld hl,Coord + ld de,PokedexOwnText + call PlaceString + FuncCoord 1,1 + ld hl,Coord + ld de,PokedexContentsText + call PlaceString + FuncCoord 16,10 + ld hl,Coord + ld de,PokedexMenuItemsText + call PlaceString +; find the highest pokedex number among the pokemon the player has seen + ld hl,wPokedexSeen + 18 + ld b,153 +.maxSeenPokemonLoop + ld a,[hld] + ld c,8 +.maxSeenPokemonInnerLoop + dec b + sla a + jr c,.storeMaxSeenPokemon + dec c + jr nz,.maxSeenPokemonInnerLoop + jr .maxSeenPokemonLoop +.storeMaxSeenPokemon + ld a,b + ld [$cd3d],a ; max seen pokemon +.loop + xor a + ld [H_AUTOBGTRANSFERENABLED],a + FuncCoord 4,2 + ld hl,Coord + ld bc,$0e0a + call ClearScreenArea + FuncCoord 1,3 + ld hl,Coord + ld a,[wListScrollOffset] + ld [$d11e],a + ld d,7 + ld a,[$cd3d] + cp a,7 + jr nc,.printPokemonLoop + ld d,a + dec a + ld [wMaxMenuItem],a +; loop to print pokemon pokedex numbers and names +; if the player has owned the pokemon, it puts a pokeball beside the name +.printPokemonLoop + ld a,[$d11e] + inc a + ld [$d11e],a + push af + push de + push hl + ld de,-20 + add hl,de + ld de,$d11e + ld bc,$8103 + call PrintNumber ; print the pokedex number + ld de,20 + add hl,de + dec hl + push hl + ld hl,wPokedexOwned + call IsPokemonBitSet + pop hl + ld a," " + jr z,.writeTile + ld a,$72 ; pokeball tile +.writeTile + ld [hl],a ; put a pokeball next to pokemon that the player has owned + push hl + ld hl,wPokedexSeen + call IsPokemonBitSet + jr nz,.getPokemonName ; if the player has seen the pokemon + ld de,.dashedLine ; print a dashed line in place of the name if the player hasn't seen the pokemon + jr .skipGettingName +.dashedLine ; for unseen pokemon in the list + db "----------@" +.getPokemonName + call PokedexToIndex + call GetMonName +.skipGettingName + pop hl + inc hl + call PlaceString + pop hl + ld bc,2 * 20 + add hl,bc + pop de + pop af + ld [$d11e],a + dec d + jr nz,.printPokemonLoop + ld a,01 + ld [H_AUTOBGTRANSFERENABLED],a + call Delay3 + call GBPalNormal + call HandleMenuInput + bit 1,a ; was the B button pressed? + jp nz,.buttonBPressed +.checkIfUpPressed + bit 6,a ; was Up pressed? + jr z,.checkIfDownPressed +.upPressed ; scroll up one row + ld a,[wListScrollOffset] and a - ret nz - ld a, [$d7b1] - bit 1, a - ret nz + jp z,.loop + dec a + ld [wListScrollOffset],a + jp .loop +.checkIfDownPressed + bit 7,a ; was Down pressed? + jr z,.checkIfRightPressed +.downPressed ; scroll down one row + ld a,[$cd3d] + cp a,7 + jp c,.loop + sub a,7 + ld b,a + ld a,[wListScrollOffset] + cp b + jp z,.loop + inc a + ld [wListScrollOffset],a + jp .loop +.checkIfRightPressed + bit 4,a ; was Right pressed? + jr z,.checkIfLeftPressed +.rightPressed ; scroll down 7 rows + ld a,[$cd3d] + cp a,7 + jp c,.loop + sub a,6 + ld b,a + ld a,[wListScrollOffset] + add a,7 + ld [wListScrollOffset],a + cp b + jp c,.loop + dec b + ld a,b + ld [wListScrollOffset],a + jp .loop +.checkIfLeftPressed ; scroll up 7 rows + bit 5,a ; was Left pressed? + jr z,.buttonAPressed +.leftPressed + ld a,[wListScrollOffset] + sub a,7 + ld [wListScrollOffset],a + jp nc,.loop xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld [$cf0d], a - ld a, [W_YCOORD] - cp $3 - ret nz - ld a, [W_XCOORD] - cp $4 - ret nz - ld a, $1 - ld [$cf0d], a - ld a, $1 - ld [$d528], a - ld a, $1 - ld [$ff8c], a - ld a, $8 - ld [$ff8d], a - call Func_34a6 - ld a, $1 - ld [$ff8c], a - call DisplayTextID + ld [wListScrollOffset],a + jp .loop +.buttonAPressed + scf ret - -FightingDojoScript3: ; 5cdc6 (17:4dc6) - ld a, [$d057] - cp $ff - jp z, FightingDojoScript_5cd70 - ld a, [$cf0d] +.buttonBPressed and a - jr z, .asm_5cde4 - ld a, $1 - ld [$d528], a - ld a, $1 - ld [$ff8c], a - ld a, $8 - ld [$ff8d], a - call Func_34a6 - -.asm_5cde4 - ld a, $f0 - ld [$cd6b], a - ld a, [$d7b1] - or $3e - ld [$d7b1], a - ld a, $8 - ld [$ff8c], a - call DisplayTextID - xor a - ld [$cd6b], a - ld [$d642], a - ld [$da39], a - ret - -FightingDojoTextPointers: ; 5ce03 (17:4e03) - dw FightingDojoText1 - dw FightingDojoText2 - dw FightingDojoText3 - dw FightingDojoText4 - dw FightingDojoText5 - dw FightingDojoText6 - dw FightingDojoText7 - dw FightingDojoText8 - -FightingDojoTrainerHeaders: ; 5ce13 (17:4e13) -FightingDojoTrainerHeader0: ; 5ce13 (17:4e13) - db $2 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7b1 ; flag's byte - dw FightingDojoBattleText1 ; 0x4eac TextBeforeBattle - dw FightingDojoAfterBattleText1 ; 0x4eb6 TextAfterBattle - dw FightingDojoEndBattleText1 ; 0x4eb1 TextEndBattle - dw FightingDojoEndBattleText1 ; 0x4eb1 TextEndBattle - -FightingDojoTrainerHeader1: ; 5ce1f (17:4e1f) - db $3 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7b1 ; flag's byte - dw FightingDojoBattleText2 ; 0x4ec5 TextBeforeBattle - dw FightingDojoAfterBattleText2 ; 0x4ecf TextAfterBattle - dw FightingDojoEndBattleText2 ; 0x4eca TextEndBattle - dw FightingDojoEndBattleText2 ; 0x4eca TextEndBattle - -FightingDojoTrainerHeader2: ; 5ce2b (17:4e2b) - db $4 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7b1 ; flag's byte - dw FightingDojoBattleText3 ; 0x4ede TextBeforeBattle - dw FightingDojoAfterBattleText3 ; 0x4ee8 TextAfterBattle - dw FightingDojoEndBattleText3 ; 0x4ee3 TextEndBattle - dw FightingDojoEndBattleText3 ; 0x4ee3 TextEndBattle - -FightingDojoTrainerHeader3: ; 5ce37 (17:4e37) - db $5 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7b1 ; flag's byte - dw FightingDojoBattleText4 ; 0x4ef7 TextBeforeBattle - dw FightingDojoAfterBattleText4 ; 0x4f01 TextAfterBattle - dw FightingDojoEndBattleText4 ; 0x4efc TextEndBattle - dw FightingDojoEndBattleText4 ; 0x4efc TextEndBattle - - db $ff - -FightingDojoText1: ; 5ce44 (17:4e44) - db $08 ; asm - ld a, [$d7b1] - bit 0, a - jp nz, .continue1 - bit 1, a - jp nz, .continue2 - ld hl, UnnamedText_5ce8e - call PrintText - ld hl, $d72d - set 6, [hl] - set 7, [hl] - ld hl, UnnamedText_5ce93 - ld de, UnnamedText_5ce93 - call PreBattleSaveRegisters - ldh a, [$8c] - ld [$cf13], a - call EngageMapTrainer - call InitBattleEnemyParameters - ld a, $3 - ld [W_FIGHTINGDOJOCURSCRIPT], a - ld [W_CURMAPSCRIPT], a - jr .asm_9dba4 ; 0x5ce7b -.continue1 ; 0x5ce7d - ld hl, UnnamedText_5ce9d - call PrintText - jr .asm_9dba4 ; 0x5ce83 -.continue2 ; 0x5ce85f - ld hl, FightingDojoText8 - call PrintText -.asm_9dba4 ; 0x5ce8b - jp TextScriptEnd - -UnnamedText_5ce8e: ; 5ce8e (17:4e8e) - TX_FAR _UnnamedText_5ce8e - db "@" - -UnnamedText_5ce93: ; 5ce93 (17:4e93) - TX_FAR _UnnamedText_5ce93 - db "@" - -FightingDojoText8: ; 5ce98 (17:4e98) - TX_FAR _UnnamedText_5ce98 - db "@" - -UnnamedText_5ce9d: ; 5ce9d (17:4e9d) - TX_FAR _UnnamedText_5ce9d - db "@" - -FightingDojoText2: ; 5cea2 (17:4ea2) - db $08 ; asm - ld hl, FightingDojoTrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -FightingDojoBattleText1: ; 5ceac (17:4eac) - TX_FAR _FightingDojoBattleText1 - db "@" - -FightingDojoEndBattleText1: ; 5ceb1 (17:4eb1) - TX_FAR _FightingDojoEndBattleText1 - db "@" - -FightingDojoAfterBattleText1: ; 5ceb6 (17:4eb6) - TX_FAR _FightingDojoAfterBattleText1 - db "@" - -FightingDojoText3: ; 5cebb (17:4ebb) - db $08 ; asm - ld hl, FightingDojoTrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -FightingDojoBattleText2: ; 5cec5 (17:4ec5) - TX_FAR _FightingDojoBattleText2 - db "@" - -FightingDojoEndBattleText2: ; 5ceca (17:4eca) - TX_FAR _FightingDojoEndBattleText2 - db "@" - -FightingDojoAfterBattleText2: ; 5cecf (17:4ecf) - TX_FAR _FightingDojoAfterBattleText2 - db "@" - -FightingDojoText4: ; 5ced4 (17:4ed4) - db $08 ; asm - ld hl, FightingDojoTrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -FightingDojoBattleText3: ; 5cede (17:4ede) - TX_FAR _FightingDojoBattleText3 - db "@" - -FightingDojoEndBattleText3: ; 5cee3 (17:4ee3) - TX_FAR _FightingDojoEndBattleText3 - db "@" - -FightingDojoAfterBattleText3: ; 5cee8 (17:4ee8) - TX_FAR _FightingDojoAfterBattleText3 - db "@" + ret -FightingDojoText5: ; 5ceed (17:4eed) - db $08 ; asm - ld hl, FightingDojoTrainerHeader3 - call TalkToTrainer - jp TextScriptEnd +DrawPokedexVerticalLine: ; 4028e (10:428e) + ld c,9 ; height of line + ld de,20 ; width of screen + ld a,$71 ; vertical line tile +.loop + ld [hl],a + add hl,de + xor a,1 ; toggle between vertical line tile and box tile + dec c + jr nz,.loop + ret -FightingDojoBattleText4: ; 5cef7 (17:4ef7) - TX_FAR _FightingDojoBattleText4 - db "@" +PokedexSeenText: ; 4029d (10:429d) + db "SEEN@" -FightingDojoEndBattleText4: ; 5cefc (17:4efc) - TX_FAR _FightingDojoEndBattleText4 - db "@" +PokedexOwnText: ; 402a2 (10:42a2) + db "OWN@" -FightingDojoAfterBattleText4: ; 5cf01 (17:4f01) - TX_FAR _FightingDojoAfterBattleText4 - db "@" +PokedexContentsText: ; 402a6 (10:42a6) + db "CONTENTS@" -FightingDojoText6: ; 5cf06 (17:4f06) -; Hitmonlee Poké Ball - db $08 ; asm - ld a, [$d7b1] - and %11000000 - jr z, .GetMon - ld hl, OtherHitmonText - call PrintText - jr .done -.GetMon - ld a, HITMONLEE - call DisplayPokedex - ld hl, WantHitmonleeText - call PrintText - call YesNoChoice - ld a, [$cc26] - and a - jr nz, .done - ld a, [$cf91] - ld b, a - ld c, 30 - call GivePokemon - jr nc, .done +PokedexMenuItemsText: ; 402af (10:42af) + db "DATA" + next "CRY" + next "AREA" + next "QUIT@" - ; once Poké Ball is taken, hide sprite - ld a, $4a - ld [$cc4d], a - ld a, $11 +; tests if a pokemon's bit is set in the seen or owned pokemon bit fields +; INPUT: +; [$d11e] = pokedex number +; hl = address of bit field +IsPokemonBitSet: ; 402c2 (10:42c2) + ld a,[$d11e] + dec a + ld c,a + ld b,2 + ld a,$10 call Predef - ld hl, $d7b1 - set 6, [hl] - set 0, [hl] -.done - jp TextScriptEnd - -WantHitmonleeText: ; 5cf49 (17:4f49) - TX_FAR _WantHitmonleeText - db "@" - -FightingDojoText7: ; 5cf4e (17:4f4e) -; Hitmonchan Poké Ball - db $08 ; asm - ld a, [$d7b1] - and %11000000 - jr z, .GetMon - ld hl, OtherHitmonText - call PrintText - jr .done -.GetMon - ld a, HITMONCHAN - call DisplayPokedex - ld hl, WantHitmonchanText - call PrintText - call YesNoChoice - ld a, [$cc26] + ld a,c and a - jr nz, .done - ld a, [$cf91] - ld b, a - ld c,30 - call GivePokemon - jr nc, .done - ld hl, $d7b1 - set 7, [hl] - set 0, [hl] - - ; once Poké Ball is taken, hide sprite - ld a, $4b - ld [$cc4d], a - ld a, $11 - call Predef -.done - jp TextScriptEnd - -WantHitmonchanText: ; 5cf91 (17:4f91) - TX_FAR _WantHitmonchanText - db "@" - -OtherHitmonText: ; 5cf96 (17:4f96) - TX_FAR _OtherHitmonText - db "@" - -INCLUDE "data/mapObjects/fightingdojo.asm" - -FightingDojoBlocks: ; 5cfe3 (17:4fe3) - INCBIN "maps/fightingdojo.blk" - -INCLUDE "data/mapHeaders/saffrongym.asm" - -SaffronGymScript: ; 5d00d (17:500d) - ld hl, $d126 - bit 6, [hl] - res 6, [hl] - call nz, .extra - call EnableAutoTextBoxDrawing - ld hl, SaffronGymTrainerHeader0 - ld de, SaffronGymScriptPointers - ld a, [W_SAFFRONGYMCURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_SAFFRONGYMCURSCRIPT], a ret -.extra - ld hl, Gym6CityName ; $5033 - ld de, Gym6LeaderName ; $5040 - jp LoadGymLeaderAndCityName - -Gym6CityName: ; 5d033 (17:5033) - db "SAFFRON CITY@" - -Gym6LeaderName: ; 5d040 (17:5040) - db "SABRINA@" +; function to display pokedex data from outside the pokedex +ShowPokedexData: ; 402d1 (10:42d1) + call GBPalWhiteOutWithDelay3 + call ClearScreen + call UpdateSprites + ld hl, LoadPokedexTilePatterns + ld b, BANK(LoadPokedexTilePatterns) + call Bankswitch ; load pokedex tiles -Func_5d048: ; 5d048 (17:5048) +; function to display pokedex data from inside the pokedex +ShowPokedexDataInternal: ; 402e2 (10:42e2) + ld hl,$d72c + set 1,[hl] + ld a,$33 ; 3/7 volume + ld [$ff24],a + call GBPalWhiteOut ; zero all palettes + call ClearScreen + ld a,[$d11e] ; pokemon ID + ld [$cf91],a + push af + ld b,04 + call GoPAL_SET + pop af + ld [$d11e],a + ld a,[$ffd7] + push af xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_SAFFRONGYMCURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret - -SaffronGymScriptPointers: ; 5d053 (17:5053) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - dw SaffronGymScript3 - -SaffronGymScript3: ; 5d05b (17:505b) - ld a, [W_ISINBATTLE] ; $d057 - cp $ff - jp z, Func_5d048 - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - -Func_5d068: ; 5d068 (17:5068) - ld a, $a - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld hl, $d7b3 - set 1, [hl] - ld bc, (TM_46 << 8) | 1 - call GiveItem - jr nc, .BagFull - ld a, $b - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld hl, $d7b3 - set 0, [hl] - jr .asm_5d091 -.BagFull - ld a, $c - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID -.asm_5d091 - ld hl, W_OBTAINEDBADGES - set 5, [hl] - ld hl, $d72a - set 5, [hl] - - ; deactivate gym trainers - ld a, [$d7b3] - or %11111100 - ld [$d7b3], a - ld hl, $d7b4 - set 0, [hl] - - jp Func_5d048 - -SaffronGymTextPointers: ; 5d0ab (17:50ab) - dw SaffronGymText1 - dw SaffronGymText2 - dw SaffronGymText3 - dw SaffronGymText4 - dw SaffronGymText5 - dw SaffronGymText6 - dw SaffronGymText7 - dw SaffronGymText8 - dw SaffronGymText9 - dw SaffronGymText10 - dw SaffronGymText11 - dw SaffronGymText12 - -SaffronGymTrainerHeaders: ; 5d0c3 (17:50c3) -SaffronGymTrainerHeader0: ; 5d0c3 (17:50c3) - db $2 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7b3 ; flag's byte - dw SaffronGymBattleText1 ; 0x51f0 TextBeforeBattle - dw SaffronGymAfterBattleText1 ; 0x51fa TextAfterBattle - dw SaffronGymEndBattleText1 ; 0x51f5 TextEndBattle - dw SaffronGymEndBattleText1 ; 0x51f5 TextEndBattle - -SaffronGymTrainerHeader1: ; 5d0cf (17:50cf) - db $3 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7b3 ; flag's byte - dw SaffronGymBattleText2 ; 0x51ff TextBeforeBattle - dw SaffronGymAfterBattleText2 ; 0x5209 TextAfterBattle - dw SaffronGymEndBattleText2 ; 0x5204 TextEndBattle - dw SaffronGymEndBattleText2 ; 0x5204 TextEndBattle - -SaffronGymTrainerHeader2: ; 5d0db (17:50db) - db $4 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7b3 ; flag's byte - dw SaffronGymBattleText3 ; 0x520e TextBeforeBattle - dw SaffronGymAfterBattleText3 ; 0x5218 TextAfterBattle - dw SaffronGymEndBattleText3 ; 0x5213 TextEndBattle - dw SaffronGymEndBattleText3 ; 0x5213 TextEndBattle - -SaffronGymTrainerHeader3: ; 5d0e7 (17:50e7) - db $5 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7b3 ; flag's byte - dw SaffronGymBattleText4 ; 0x521d TextBeforeBattle - dw SaffronGymAfterBattleText4 ; 0x5227 TextAfterBattle - dw SaffronGymEndBattleText4 ; 0x5222 TextEndBattle - dw SaffronGymEndBattleText4 ; 0x5222 TextEndBattle - -SaffronGymTrainerHeader4: ; 5d0f3 (17:50f3) - db $6 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7b3 ; flag's byte - dw SaffronGymBattleText5 ; 0x522c TextBeforeBattle - dw SaffronGymAfterBattleText5 ; 0x5236 TextAfterBattle - dw SaffronGymEndBattleText5 ; 0x5231 TextEndBattle - dw SaffronGymEndBattleText5 ; 0x5231 TextEndBattle - -SaffronGymTrainerHeader5: ; 5d0ff (17:50ff) - db $7 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7b3 ; flag's byte - dw SaffronGymBattleText6 ; 0x523b TextBeforeBattle - dw SaffronGymAfterBattleText6 ; 0x5245 TextAfterBattle - dw SaffronGymEndBattleText6 ; 0x5240 TextEndBattle - dw SaffronGymEndBattleText6 ; 0x5240 TextEndBattle - -SaffronGymTrainerHeader6: ; 5d10b (17:510b) - db $8 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7b3 ; flag's byte - dw SaffronGymBattleText7 ; 0x524a TextBeforeBattle - dw SaffronGymAfterBattleText7 ; 0x5254 TextAfterBattle - dw SaffronGymEndBattleText7 ; 0x524f TextEndBattle - dw SaffronGymEndBattleText7 ; 0x524f TextEndBattle - - db $ff - -SaffronGymText1: ; 5d118 (17:5118) - db $08 ; asm - ld a, [$d7b3] - bit 1, a - jr z, .asm_e3544 ; 0x5d11e - bit 0, a - jr nz, .asm_8d2f6 ; 0x5d122 - call z, Func_5d068 - call DisableWaitingAfterTextDisplay - jr .asm_34c2c ; 0x5d12a -.asm_8d2f6 ; 0x5d12c - ld hl, UnnamedText_5d16e - call PrintText - jr .asm_34c2c ; 0x5d132 -.asm_e3544 ; 0x5d134 - ld hl, UnnamedText_5d162 - call PrintText - ld hl, $d72d - set 6, [hl] - set 7, [hl] - ld hl, UnnamedText_5d167 - ld de, UnnamedText_5d167 - call PreBattleSaveRegisters - ldh a, [$8c] - ld [$cf13], a - call EngageMapTrainer - call InitBattleEnemyParameters - ld a, $6 - ld [$d05c], a - ld a, $3 - ld [W_SAFFRONGYMCURSCRIPT], a -.asm_34c2c ; 0x5d15f - jp TextScriptEnd - -UnnamedText_5d162: ; 5d162 (17:5162) - TX_FAR _UnnamedText_5d162 - db "@" - -UnnamedText_5d167: ; 5d167 (17:5167) - TX_FAR _UnnamedText_5d167 ; 0xa1c73 - db $11 ; play same sound as red giving oak parcel - db $6 ; wait for keypress - db "@" - -UnnamedText_5d16e: ; 5d16e (17:516e) - TX_FAR _UnnamedText_5d16e - db "@" - -SaffronGymText10: ; 5d173 (17:5173) - TX_FAR _UnnamedText_5d173 - db "@" - -SaffronGymText11: ; 5d178 (17:5178) - TX_FAR ReceivedTM46Text - db $b - TX_FAR _TM46ExplanationText - db "@" - -SaffronGymText12: ; 5d182 (17:5182) - TX_FAR _TM46NoRoomText - db "@" - -SaffronGymText2: ; 5d187 (17:5187) - db $08 ; asm - ld hl, SaffronGymTrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -SaffronGymText3: ; 5d191 (17:5191) - db $08 ; asm - ld hl, SaffronGymTrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -SaffronGymText4: ; 5d19b (17:519b) - db $08 ; asm - ld hl, SaffronGymTrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -SaffronGymText5: ; 5d1a5 (17:51a5) - db $08 ; asm - ld hl, SaffronGymTrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -SaffronGymText6: ; 5d1af (17:51af) - db $08 ; asm - ld hl, SaffronGymTrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -SaffronGymText7: ; 5d1b9 (17:51b9) - db $08 ; asm - ld hl, SaffronGymTrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -SaffronGymText8: ; 5d1c3 (17:51c3) - db $08 ; asm - ld hl, SaffronGymTrainerHeader6 - call TalkToTrainer - jp TextScriptEnd - -SaffronGymText9: ; 5d1cd (17:51cd) - db $08 ; asm - ld a, [$d7b3] - bit 1, a - jr nz, .asm_13f3c ; 0x5d1d3 - ld hl, UnnamedText_5d1e6 - call PrintText - jr .asm_e9907 ; 0x5d1db -.asm_13f3c ; 0x5d1dd - ld hl, UnnamedText_5d1eb - call PrintText -.asm_e9907 ; 0x5d1e3 - jp TextScriptEnd - -UnnamedText_5d1e6: ; 5d1e6 (17:51e6) - TX_FAR _UnnamedText_5d1e6 - db "@" - -UnnamedText_5d1eb: ; 5d1eb (17:51eb) - TX_FAR _UnnamedText_5d1eb - db "@" - -SaffronGymBattleText1: ; 5d1f0 (17:51f0) - TX_FAR _SaffronGymBattleText1 - db "@" - -SaffronGymEndBattleText1: ; 5d1f5 (17:51f5) - TX_FAR _SaffronGymEndBattleText1 - db "@" - -SaffronGymAfterBattleText1: ; 5d1fa (17:51fa) - TX_FAR _SaffronGymAfterBattleText1 - db "@" - -SaffronGymBattleText2: ; 5d1ff (17:51ff) - TX_FAR _SaffronGymBattleText2 - db "@" - -SaffronGymEndBattleText2: ; 5d204 (17:5204) - TX_FAR _SaffronGymEndBattleText2 - db "@" - -SaffronGymAfterBattleText2: ; 5d209 (17:5209) - TX_FAR _SaffronGymAfterBattleText2 - db "@" - -SaffronGymBattleText3: ; 5d20e (17:520e) - TX_FAR _SaffronGymBattleText3 - db "@" - -SaffronGymEndBattleText3: ; 5d213 (17:5213) - TX_FAR _SaffronGymEndBattleText3 - db "@" - -SaffronGymAfterBattleText3: ; 5d218 (17:5218) - TX_FAR _SaffronGymAfterBattleText3 - db "@" - -SaffronGymBattleText4: ; 5d21d (17:521d) - TX_FAR _SaffronGymBattleText4 - db "@" - -SaffronGymEndBattleText4: ; 5d222 (17:5222) - TX_FAR _SaffronGymEndBattleText4 - db "@" - -SaffronGymAfterBattleText4: ; 5d227 (17:5227) - TX_FAR _SaffronGymAfterBattleText4 - db "@" - -SaffronGymBattleText5: ; 5d22c (17:522c) - TX_FAR _SaffronGymBattleText5 - db "@" - -SaffronGymEndBattleText5: ; 5d231 (17:5231) - TX_FAR _SaffronGymEndBattleText5 - db "@" - -SaffronGymAfterBattleText5: ; 5d236 (17:5236) - TX_FAR _SaffronGymAfterBattleText5 - db "@" - -SaffronGymBattleText6: ; 5d23b (17:523b) - TX_FAR _SaffronGymBattleText6 - db "@" - -SaffronGymEndBattleText6: ; 5d240 (17:5240) - TX_FAR _SaffronGymEndBattleText6 - db "@" - -SaffronGymAfterBattleText6: ; 5d245 (17:5245) - TX_FAR _SaffronGymAfterBattleText6 - db "@" - -SaffronGymBattleText7: ; 5d24a (17:524a) - TX_FAR _SaffronGymBattleText7 - db "@" - -SaffronGymEndBattleText7: ; 5d24f (17:524f) - TX_FAR _SaffronGymEndBattleText7 - db "@" - -SaffronGymAfterBattleText7: ; 5d254 (17:5254) - TX_FAR _SaffronGymAfterBattleText7 - db "@" - -INCLUDE "data/mapObjects/saffrongym.asm" - -SaffronGymBlocks: ; 5d3a3 (17:53a3) - INCBIN "maps/saffrongym.blk" - -INCLUDE "data/mapHeaders/saffronmart.asm" - -SaffronMartScript: ; 5d409 (17:5409) - jp EnableAutoTextBoxDrawing - -SaffronMartTextPointers: ; 5d40c (17:540c) - dw SaffronMartText1 - dw SaffronMartText2 - dw SaffronMartText3 - -SaffronMartText2: ; 5d412 (17:5412) - TX_FAR _SaffronMartText2 - db "@" - -SaffronMartText3: ; 5d417 (17:5417) - TX_FAR _SaffronMartText3 - db "@" - -INCLUDE "data/mapObjects/saffronmart.asm" - -INCLUDE "data/mapHeaders/silphco1.asm" - -SilphCo1Script: ; 5d44e (17:544e) - call EnableAutoTextBoxDrawing - ld a, [$d838] - bit 7, a - ret z - ld hl, $d7b9 - bit 7, [hl] - set 7, [hl] - ret nz - ld a, $4c - ld [$cc4d], a - ld a, $15 - jp Predef - -SilphCo1TextPointers: ; 5d469 (17:5469) - dw SilphCo1Text1 + ld [$ffd7],a + FuncCoord 0,0 + ld hl,Coord + ld de,1 + ld bc,$6414 + call DrawTileLine ; draw top border + FuncCoord 0,17 + ld hl,Coord + ld b,$6f + call DrawTileLine ; draw bottom border + FuncCoord 0,1 + ld hl,Coord + ld de,20 + ld bc,$6610 + call DrawTileLine ; draw left border + FuncCoord 19,1 + ld hl,Coord + ld b,$67 + call DrawTileLine ; draw right border + FuncCoord 0,0 + ld a,$63 ; upper left corner tile + ld [Coord],a + FuncCoord 19,0 + ld a,$65 ; upper right corner tile + ld [Coord],a + FuncCoord 0,17 + ld a,$6c ; lower left corner tile + ld [Coord],a + FuncCoord 19,17 + ld a,$6e ; lower right corner tile + ld [Coord],a + FuncCoord 0,9 + ld hl,Coord + ld de,PokedexDataDividerLine + call PlaceString ; draw horizontal divider line + FuncCoord 9,6 + ld hl,Coord + ld de,HeightWeightText + call PlaceString + call GetMonName + FuncCoord 9,2 + ld hl,Coord + call PlaceString + ld hl,PokedexEntryPointers + ld a,[$d11e] + dec a + ld e,a + ld d,0 + add hl,de + add hl,de + ld a,[hli] + ld e,a + ld d,[hl] ; de = address of pokedex entry + FuncCoord 9,4 + ld hl,Coord + call PlaceString ; print species name + ld h,b + ld l,c + push de + ld a,[$d11e] + push af + call IndexToPokedex + FuncCoord 2,8 + ld hl,Coord + ld a, "№" + ld [hli],a + ld a,$f2 + ld [hli],a + ld de,$d11e + ld bc,$8103 + call PrintNumber ; print pokedex number + ld hl,wPokedexOwned + call IsPokemonBitSet + pop af + ld [$d11e],a + ld a,[$cf91] + ld [$d0b5],a + pop de + push af + push bc + push de + push hl + call Delay3 + call GBPalNormal + call GetMonHeader ; load pokemon picture location + FuncCoord 1,1 + ld hl,Coord + call LoadFlippedFrontSpriteByMonIndex ; draw pokemon picture + ld a,[$cf91] + call PlayCry ; play pokemon cry + pop hl + pop de + pop bc + pop af + ld a,c + and a + jp z,.waitForButtonPress ; if the pokemon has not been owned, don't print the height, weight, or description + inc de ; de = address of feet (height) + ld a,[de] ; reads feet, but a is overwritten without being used + FuncCoord 12,6 + ld hl,Coord + ld bc,$0102 + call PrintNumber ; print feet (height) + ld a,$60 ; feet symbol tile (one tick) + ld [hl],a + inc de + inc de ; de = address of inches (height) + FuncCoord 15,6 + ld hl,Coord + ld bc,$8102 + call PrintNumber ; print inches (height) + ld a,$61 ; inches symbol tile (two ticks) + ld [hl],a +; now print the weight (note that weight is stored in tenths of pounds internally) + inc de + inc de + inc de ; de = address of upper byte of weight + push de +; put weight in big-endian order at $ff8b + ld hl,$ff8b + ld a,[hl] ; save existing value of [$ff8b] + push af + ld a,[de] ; a = upper byte of weight + ld [hli],a ; store upper byte of weight in [$ff8b] + ld a,[hl] ; save existing value of [$ff8c] + push af + dec de + ld a,[de] ; a = lower byte of weight + ld [hl],a ; store lower byte of weight in [$ff8c] + FuncCoord 11,8 + ld de,$ff8b + ld hl,Coord + ld bc,$0205 ; no leading zeroes, right-aligned, 2 bytes, 5 digits + call PrintNumber ; print weight + FuncCoord 14,8 + ld hl,Coord + ld a,[$ff8c] + sub a,10 + ld a,[$ff8b] + sbc a,0 + jr nc,.next + ld [hl],"0" ; if the weight is less than 10, put a 0 before the decimal point +.next + inc hl + ld a,[hli] + ld [hld],a ; make space for the decimal point by moving the last digit forward one tile + ld [hl],$f2 ; decimal point tile + pop af + ld [$ff8c],a ; restore original value of [$ff8c] + pop af + ld [$ff8b],a ; restore original value of [$ff8b] + pop hl + inc hl ; hl = address of pokedex description text + FuncCoord 1,11 + ld bc,Coord + ld a,2 + ld [$fff4],a + call TextCommandProcessor ; print pokedex description text + xor a + ld [$fff4],a +.waitForButtonPress + call GetJoypadStateLowSensitivity + ld a,[$ffb5] + and a,%00000011 ; A button and B button + jr z,.waitForButtonPress + pop af + ld [$ffd7],a + call GBPalWhiteOut + call ClearScreen + call GoPAL_SET_CF1C + call LoadTextBoxTilePatterns + call GBPalNormal + ld hl,$d72c + res 1,[hl] + ld a,$77 ; max volume + ld [$ff24],a + ret -SilphCo1Text1: ; 5d46b (17:546b) - TX_FAR _SilphCo1Text1 - db "@" +HeightWeightText: ; 40448 (10:4448) + db "HT ?",$60,"??",$61,$4E,"WT ???lb@" -INCLUDE "data/mapObjects/silphco1.asm" +; XXX does anything point to this? +Unknown_4045D: ; 4045d (10:445d) + db $54,$50 -SilphCo1Blocks: ; 5d4a2 (17:54a2) - INCBIN "maps/silphco1.blk" +; horizontal line that divides the pokedex text description from the rest of the data +PokedexDataDividerLine: ; 4045f (10:445f) + db $68,$69,$6B,$69,$6B + db $69,$6B,$69,$6B,$6B + db $6B,$6B,$69,$6B,$69 + db $6B,$69,$6B,$69,$6A + db $50 -INCLUDE "data/mapHeaders/saffronpokecenter.asm" +; draws a line of tiles +; INPUT: +; b = tile ID +; c = number of tile ID's to write +; de = amount to destination address after each tile (1 for horizontal, 20 for vertical) +; hl = destination address +DrawTileLine: ; 40474 (10:4474) + push bc + push de +.loop + ld [hl],b + add hl,de + dec c + jr nz,.loop + pop de + pop bc + ret -SaffronPokecenterScript: ; 5d535 (17:5535) - call Func_22fa - jp EnableAutoTextBoxDrawing +INCLUDE "data/pokedex_entries.asm" -SaffronPokecenterTextPointers: ; 5d53b (17:553b) - dw SaffronPokecenterText1 - dw SaffronPokecenterText2 - dw SaffronPokecenterText3 - dw SaffronPokecenterText4 +PokedexToIndex: ; 40ff9 (10:4ff9) + ; converts the Pokédex number at $D11E to an index + push bc + push hl + ld a,[$D11E] + ld b,a + ld c,0 + ld hl,PokedexOrder -SaffronPokecenterText1: ; 5d543 (17:5543) - db $ff +.loop ; go through the list until we find an entry with a matching dex number + inc c + ld a,[hli] + cp b + jr nz,.loop -SaffronPokecenterText2: ; 5d544 (17:5544) - TX_FAR _SaffronPokecenterText1 - db "@" + ld a,c + ld [$D11E],a + pop hl + pop bc + ret -SaffronPokecenterText3: ; 5d549 (17:5549) - TX_FAR _SaffronPokecenterText3 - db "@" +IndexToPokedex: ; 41010 (10:5010) + ; converts the indexédex number at $D11E to a Pokédex number + push bc + push hl + ld a,[$D11E] + dec a + ld hl,PokedexOrder + ld b,0 + ld c,a + add hl,bc + ld a,[hl] + ld [$D11E],a + pop hl + pop bc + ret -SaffronPokecenterText4: ; 5d54e (17:554e) - db $f6 +INCLUDE "data/pokedex_order.asm" -INCLUDE "data/mapObjects/saffronpokecenter.asm" +Func_410e2: ; 410e2 (10:50e2) + ld a, [wWhichTrade] ; $cd3d + ld [$cd5e], a + ld a, [wTrainerEngageDistance] + ld [$cd5f], a + ld de, PointerIDs_41138 ; $5138 + jr Func_41102 -INCLUDE "data/mapHeaders/viridianforestexit.asm" +Func_410f3: ; 410f3 (10:50f3) + ld a, [wTrainerEngageDistance] + ld [$cd5e], a + ld a, [wTrainerSpriteOffset] + ld [$cd5f], a + ld de, PointerIDs_41149 -ViridianForestExitScript: ; 5d587 (17:5587) - jp EnableAutoTextBoxDrawing +Func_41102: ; 41102 (10:5102) + ld a, [W_OPTIONS] ; $d355 + push af + ld a, [$ffaf] + push af + ld a, [$ffae] + push af + xor a + ld [W_OPTIONS], a ; $d355 + ld [$ffaf], a + ld [$ffae], a + push de +.asm_41115 + pop de + ld a, [de] + cp $ff + jr z, .asm_4112d + inc de + push de + ld hl, PointerTable_4115f ; $515f + add a + ld c, a + ld b, $0 + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld de, .asm_41115 ; $5115 + push de + jp [hl] +.asm_4112d + pop af + ld [$ffae], a + pop af + ld [$ffaf], a + pop af + ld [W_OPTIONS], a ; $d355 + ret -ViridianForestExitTextPointers: ; 5d58a (17:558a) - dw ViridianForestExitText1 - dw ViridianForestExitText2 +; these bytes refer to the $00th through $10th pointer of PointerTable_4115f +PointerIDs_41138: ; 41138 (10:5138) + db $00,$01,$02,$03,$05,$07,$08,$09,$0A,$0B,$06,$08,$02,$04,$07,$0E,$FF -ViridianForestExitText1: ; 5d58e (17:558e) - TX_FAR _ViridianForestExitText1 - db "@" +PointerIDs_41149: ; 41149 (10:5149) + db $00,$08,$0D,$0B,$10,$05,$10,$08,$02,$04,$0F,$01,$02,$03,$10,$06,$10,$07,$08,$09,$0E,$FF -ViridianForestExitText2: ; 5d593 (17:5593) - TX_FAR _ViridianForestExitText2 - db "@" +PointerTable_4115f: ; 4115f (10:515f) + dw LoadTradingGFXAndMonNames + dw Func_41245 + dw Func_41298 + dw Func_412d2 + dw Func_41336 + dw Func_41376 + dw Func_413c6 + dw Func_41181 + dw Func_415c8 + dw Func_415fe + dw Func_41611 + dw Func_4162d + dw Func_4164c + dw Func_4165a + dw Func_4123b + dw Func_415df + dw Func_41217 -INCLUDE "data/mapObjects/viridianforestexit.asm" +Func_41181: ; 41181 (10:5181) + ld c, $64 + jp DelayFrames -INCLUDE "data/mapHeaders/route2gate.asm" +Func_41186: ; 41186 (10:5186) + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call Delay3 + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ret -Route2GateScript: ; 5d5d4 (17:55d4) - jp EnableAutoTextBoxDrawing +Delay50: ; 41191 (10:5191) + ld c, $50 + jp DelayFrames -Route2GateTextPointers: ; 5d5d7 (17:55d7) - dw Route2GateText1 - dw Route2GateText2 +Func_41196: ; 41196 (10:5196) + ld hl, wTileMap + ld bc, $168 + ld a, $7f + jp FillMemory -Route2GateText1: ; 5d5db (17:55db) - db $08 ; asm - ld a, [$d7c2] - bit 0, a - jr nz, .asm_6592c ; 0x5d5e1 - ld a, $a - ldh [$db], a - ld a, $c8 - ldh [$dc], a +LoadTradingGFXAndMonNames: ; 411a1 (10:51a1) + call Func_41196 + call DisableLCD + ld hl, TradingAnimationGraphics ; $69be + ld de, $9310 + ld bc, $310 + ld a, BANK(TradingAnimationGraphics) + call FarCopyData2 + ld hl, TradingAnimationGraphics2 ; $6cce + ld de, $87c0 + ld bc, $40 + ld a, BANK(TradingAnimationGraphics2) + call FarCopyData2 + ld hl, $9800 + ld bc, $800 + ld a, $7f + call FillMemory + call CleanLCD_OAM + ld a, $ff + ld [$cfcb], a + ld hl, $d730 + set 6, [hl] + ld a, [$cf1b] + and a + ld a, $e4 + jr z, .asm_411e5 + ld a, $f0 +.asm_411e5 + ld [rOBP0], a ; $ff48 + call EnableLCD + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ld a, [wWhichTrade] ; $cd3d ld [$d11e], a - call GetItemName ; $2fcf + call GetMonName ld hl, $cd6d - ld de, $cc5b - ld bc, $000d + ld de, $cf4b + ld bc, $b call CopyData - ld a, $62 - call Predef - ldh a, [$db] - cp $1 - jr nz, .asm_ad646 ; 0x5d606 - ld hl, $d7c2 - set 0, [hl] -.asm_6592c ; 0x5d60d - ld hl, UnnamedText_5d616 - call PrintText -.asm_ad646 ; 0x5d613 - jp TextScriptEnd - -UnnamedText_5d616: ; 5d616 (17:5616) - TX_FAR _UnnamedText_5d616 - db "@" - -Route2GateText2: ; 5d61b (17:561b) - TX_FAR _Route2GateText2 - db "@" - -INCLUDE "data/mapObjects/route2gate.asm" - -INCLUDE "data/mapHeaders/viridianforestentrance.asm" - -ViridianForestEntranceScript: ; 5d65c (17:565c) - jp EnableAutoTextBoxDrawing - -ViridianForestEntranceTextPointers: ; 5d65f (17:565f) - dw ViridianForestEntranceText1 - dw ViridianForestEntranceText2 - -ViridianForestEntranceText1: ; 5d663 (17:5663) - TX_FAR _ViridianForestEntranceText1 - db "@" - -ViridianForestEntranceText2: ; 5d668 (17:5668) - TX_FAR _ViridianForestEntranceText2 - db "@" + ld a, [$cd3e] + ld [$d11e], a + jp GetMonName -INCLUDE "data/mapObjects/viridianforestentrance.asm" +Func_4120b: ; 4120b (10:520b) + ld a, $d0 + ld [rOBP1], a ; $ff49 + ld b, BANK(Func_7176c) + ld hl, Func_7176c + jp Bankswitch -INCLUDE "data/mapHeaders/undergroundpathentranceroute5.asm" +Func_41217: ; 41217 (10:5217) + ld hl, W_PLAYERNAME + ld de, wHPBarMaxHP + ld bc, $000b + call CopyData + ld hl, W_GRASSRATE + ld de, W_PLAYERNAME + ld bc, $000b + call CopyData + ld hl, wHPBarMaxHP + ld de, W_GRASSRATE + ld bc, $000b + jp CopyData -UndergroundPathEntranceRoute5Script: ; 5d6a9 (17:56a9) - ld a, $10 - ld [$d365], a +Func_4123b: ; 4123b (10:523b) + xor a + call LoadGBPal + ld hl, $d730 + res 6, [hl] ret -UndergroundPathEntranceRoute5_5d6af: ; 5d6af (17:56af) - db $50 - -UndergroundPathEntranceRoute5TextPointers: ; 5d6b0 (17:56b0) - dw UndergroundPathEntranceRoute5Text1 - -UndergroundPathEntranceRoute5Text1: ; 5d6b2 (17:56b2) - db $08 ; asm - ld a, $9 - ld [wWhichTrade], a - ld a, $54 - call Predef - ld hl, UndergroundPathEntranceRoute5_5d6af +Func_41245: ; 41245 (10:5245) + ld a, $ab + ld [rLCDC], a ; $ff40 + ld a, $50 + ld [$ffb0], a + ld a, $86 + ld [rWX], a ; $ff4b + ld [$ffae], a + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + FuncCoord 4, 0 ; $c3a4 + ld hl, Coord + ld b, $6 + ld c, $a + call TextBoxBorder + call Func_42769 + ld b, $98 + call CopyScreenTileBufferToVRAM + call ClearScreen + ld a, [wWhichTrade] ; $cd3d + call Func_415a4 + ld a, $7e +.asm_41273 + push af + call DelayFrame + pop af + ld [rWX], a ; $ff4b + ld [$ffae], a + dec a + dec a + and a + jr nz, .asm_41273 + call Delay50 + ld a, $ad + call Func_41676 + ld a, $aa + call Func_41676 + ld a, [wWhichTrade] ; $cd3d + call PlayCry + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba ret -INCLUDE "data/mapObjects/undergroundpathentranceroute5.asm" - -INCLUDE "data/mapHeaders/undergroundpathentranceroute6.asm" - -UndergroundPathEntranceRoute6Script: ; 5d6ef (17:56ef) - ld a, $11 - ld [$d365], a - jp EnableAutoTextBoxDrawing - -UndergroundPathEntranceRoute6TextPointers: ; 5d6f7 (17:56f7) - dw UndergroundPathEntranceRoute6Text1 - -UndergroundPathEntranceRoute6Text1: ; 5d6f9 (17:56f9) - TX_FAR _UndergrdTunnelEntRoute6Text1 - db "@" - -INCLUDE "data/mapObjects/undergroundpathentranceroute6.asm" - -INCLUDE "data/mapHeaders/undergroundpathentranceroute7.asm" +Func_41298: ; 41298 (10:5298) + call Func_41196 + ld b, $98 + call CopyScreenTileBufferToVRAM + ld b, $8 + call GoPAL_SET + ld hl, $9c8c + call Func_414ae + ld a, $a0 + ld [$ffae], a + call DelayFrame + ld a, $8b + ld [rLCDC], a ; $ff40 + FuncCoord 6, 2 ; $c3ce + ld hl, Coord + ld b, $7 + call Func_41842 + call Func_41186 + ld a, (SFX_02_3d - SFX_Headers_02) / 3 + call PlaySound + ld c, $14 +.asm_412c8 + ld a, [$ffae] + add $4 + ld [$ffae], a + dec c + jr nz, .asm_412c8 + ret -UndergroundPathEntranceRoute7Script: ; 5d72c (17:572c) - ld a, $12 - ld [$d365], a - jp EnableAutoTextBoxDrawing +Func_412d2: ; 412d2 (10:52d2) + ld a, $ab + call Func_41676 + ld c, $a + call DelayFrames + ld a, $e4 + ld [rOBP0], a ; $ff48 + xor a + ld [$d09f], a + ld bc, $2060 +.asm_412e7 + push bc + xor a + ld de, UnknownOAM_4132e ; $532e + call WriteOAMBlock + ld a, [$d09f] + xor $1 + ld [$d09f], a + add $7e + ld hl, $c302 + ld de, $4 + ld c, e +.asm_41300 + ld [hl], a + add hl, de + dec c + jr nz, .asm_41300 + call Delay3 + pop bc + ld a, c + add $4 + ld c, a + cp $a0 + jr nc, .asm_41318 + ld a, (SFX_02_3c - SFX_Headers_02) / 3 + call PlaySound + jr .asm_412e7 +.asm_41318 + call CleanLCD_OAM + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call ClearScreen + ld b, $98 + call CopyScreenTileBufferToVRAM + call Delay3 + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ret -UndergroundPathEntranceRoute7TextPointers: ; 5d734 (17:5734) - dw UndergroundPathEntranceRoute7Text1 +UnknownOAM_4132e: ; 4132e (10:532e) + db $7E,$00,$7E,$20 + db $7E,$40,$7E,$60 -UndergroundPathEntranceRoute7Text1: ; 5d736 (17:5736) - TX_FAR _UndergroundPathEntRoute7Text1 - db "@" +Func_41336: ; 41336 (10:5336) + ld a, $ac + call Func_41676 + call Func_415c8 + FuncCoord 4, 10 ; $c46c + ld hl, Coord + ld b, $6 + ld c, $a + call TextBoxBorder + call Func_427a7 + call Func_41186 + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ld a, [$cd3e] + call Func_415a4 + ld a, $ad + call Func_41676 + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ld a, [$cd3e] + call PlayCry + call Func_41181 + FuncCoord 4, 10 ; $c46c + ld hl, Coord + ld bc, $80c + call ClearScreenArea + jp Func_4164c -INCLUDE "data/mapObjects/undergroundpathentranceroute7.asm" +Func_41376: ; 41376 (10:5376) + call Func_41411 + ld a, $1 + ld [$d08a], a + ld a, $e4 + ld [rOBP0], a ; $ff48 + ld a, $54 + ld [W_BASECOORDX], a ; $d081 + ld a, $1c + ld [W_BASECOORDY], a ; $d082 + ld a, [$cd5e] + ld [$cd5d], a + call Func_41505 + call Func_4142d + call Func_41186 + call Func_4149f + ld hl, $9c8c + call Func_414ae + ld b, $6 + call Func_414c5 + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call Func_4149f + ld b, $4 + call Func_414c5 + call Func_4145c + ld b, $6 + call Func_414c5 + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call Func_41525 + jp CleanLCD_OAM -INCLUDE "data/mapHeaders/undergroundpathentranceroute7copy.asm" +Func_413c6: ; 413c6 (10:53c6) + call Func_41411 + xor a + ld [$d08a], a + ld a, $64 + ld [W_BASECOORDX], a ; $d081 + ld a, $44 + ld [W_BASECOORDY], a ; $d082 + ld a, [$cd5f] + ld [$cd5d], a + call Func_41505 + call Func_4145c + call Func_41186 + call Func_4149f + ld hl, $9c94 + call Func_414ae + call Func_41525 + ld b, $6 + call Func_414c5 + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call Func_4149f + ld b, $4 + call Func_414c5 + call Func_4142d + ld b, $6 + call Func_414c5 + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + jp CleanLCD_OAM -UndergroundPathEntranceRoute7CopyScript: ; 5d769 (17:5769) - ld a, $12 - ld [$d365], a +Func_41411: ; 41411 (10:5411) + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call ClearScreen + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call Func_4120b + call DelayFrame + ld a, $ab + ld [rLCDC], a ; $ff40 + xor a + ld [$ffae], a + ld a, $90 + ld [$ffb0], a ret -UndergroundPathEntranceRoute7CopyTextPointers: ; 5d76f (17:576f) - dw UnnamedText_5d773 - dw UnnamedText_5d77d - -UnnamedText_5d773: ; 5d773 (17:5773) - TX_FAR _UnnamedText_5d773 - db "@" - -UnnamedText_5d778: ; 5d778 (17:5778) - TX_FAR _UnnamedText_5d778 - db "@" - -UnnamedText_5d77d: ; 5d77d (17:577d) - TX_FAR _UnnamedText_5d77d - db "@" - -UnnamedText_5d782: ; 5d782 (17:5782) - TX_FAR _UnnamedText_5d782 - db "@" - -INCLUDE "data/mapObjects/undergroundpathentranceroute7copy.asm" +Func_4142d: ; 4142d (10:542d) + call Func_41196 + FuncCoord 11, 4 ; $c3fb + ld hl, Coord + ld a, $5d + ld [hli], a + ld a, $5e + ld c, $8 +.asm_4143a + ld [hli], a + dec c + jr nz, .asm_4143a + FuncCoord 5, 3 ; $c3e1 + ld hl, Coord + ld b, $6 + call Func_41842 + FuncCoord 4, 12 ; $c494 + ld hl, Coord + ld b, $2 + ld c, $7 + call TextBoxBorder + FuncCoord 5, 14 ; $c4bd + ld hl, Coord + ld de, W_PLAYERNAME ; $d158 + call PlaceString + jp DelayFrame -INCLUDE "data/mapHeaders/silphco9.asm" +Func_4145c: ; 4145c (10:545c) + call Func_41196 + FuncCoord 0, 4 ; $c3f0 + ld hl, Coord + ld a, $5e + ld c, $e +.asm_41466 + ld [hli], a + dec c + jr nz, .asm_41466 + ld a, $5f + ld [hl], a + ld de, $14 + add hl, de + ld a, $61 + ld [hl], a + add hl, de + ld [hl], a + add hl, de + ld [hl], a + add hl, de + ld [hl], a + add hl, de + ld a, $60 + ld [hld], a + ld a, $5d + ld [hl], a + FuncCoord 7, 8 ; $c447 + ld hl, Coord + ld b, $6 + call Func_41842 + FuncCoord 6, 0 ; $c3a6 + ld hl, Coord + ld b, $2 + ld c, $7 + call TextBoxBorder + FuncCoord 7, 2 ; $c3cf + ld hl, Coord + ld de, W_GRASSRATE ; $d887 + call PlaceString + jp DelayFrame -SilphCo9Script: ; 5d7bb (17:57bb) - call SilphCo9Script_5d7d1 - call EnableAutoTextBoxDrawing - ld hl, SilphCo9TrainerHeaders - ld de, SilphCo9ScriptPointers - ld a, [W_SILPHCO9CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_SILPHCO9CURSCRIPT], a +Func_4149f: ; 4149f (10:549f) + call Func_41196 + FuncCoord 0, 4 ; $c3f0 + ld hl, Coord + ld a, $5e + ld c, $14 +.asm_414a9 + ld [hli], a + dec c + jr nz, .asm_414a9 ret -SilphCo9Script_5d7d1: ; 5d7d1 (17:57d1) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - ret z - ld hl, DataTable_5d82e ; $582e - call Func_5d837 - call Func_5d863 - ld a, [$d834] - bit 0, a - jr nz, .asm_5d7f8 - push af - ld a, $5f - ld [$d09f], a - ld bc, $401 - ld a, $17 - call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) - pop af -.asm_5d7f8 - bit 1, a - jr nz, .asm_5d80b - push af - ld a, $54 - ld [$d09f], a - ld bc, $209 - ld a, $17 - call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) - pop af -.asm_5d80b - bit 2, a - jr nz, .asm_5d81e - push af - ld a, $54 - ld [$d09f], a - ld bc, $509 - ld a, $17 - call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) - pop af -.asm_5d81e - bit 3, a - ret nz - ld a, $5f - ld [$d09f], a - ld bc, $605 - ld a, $17 - jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) +Func_414ae: ; 414ae (10:54ae) + push hl + FuncCoord 0, 4 ; $c3f0 + ld hl, Coord + call ScheduleRowRedrawHelper + pop hl + ld a, h + ld [$ffd2], a + ld a, l + ld [H_SCREENEDGEREDRAWADDR], a ; $ffd1 + ld a, $2 + ld [H_SCREENEDGEREDRAW], a ; $ffd0 + ld c, $a + jp DelayFrames -DataTable_5d82e: ; 5d82e (17:582e) - db $04,$01,$02,$09,$05,$09,$06,$05,$FF +Func_414c5: ; 414c5 (10:54c5) + ld a, [$d08a] + ld e, a + ld d, $8 +.asm_414cb + ld a, e + dec a + jr z, .asm_414d5 + ld a, [$ffae] + sub $2 + jr .asm_414d9 +.asm_414d5 + ld a, [$ffae] + add $2 +.asm_414d9 + ld [$ffae], a + call DelayFrame + dec d + jr nz, .asm_414cb + call Func_414e8 + dec b + jr nz, Func_414c5 + ret -Func_5d837: ; 5d837 (17:5837) +Func_414e8: ; 414e8 (10:54e8) + push de + push bc push hl - ld hl, $d73f - ld a, [hli] - ld b, a + ld a, [rBGP] ; $ff47 + xor $3c + ld [rBGP], a ; $ff47 + ld hl, $c302 + ld de, $4 + ld c, $14 +.asm_414f9 ld a, [hl] - ld c, a - xor a - ld [$ffe0], a - pop hl -.asm_5d843 - ld a, [hli] - cp $ff - jr z, .asm_5d85f - push hl - ld hl, $ffe0 - inc [hl] - pop hl - cp b - jr z, .asm_5d854 - inc hl - jr .asm_5d843 -.asm_5d854 - ld a, [hli] - cp c - jr nz, .asm_5d843 - ld hl, $d73f - xor a - ld [hli], a + xor $40 ld [hl], a + add hl, de + dec c + jr nz, .asm_414f9 + pop hl + pop bc + pop de ret -.asm_5d85f - xor a - ld [$ffe0], a - ret - -Func_5d863: ; 5d863 (17:5863) - ld hl, $d834 - ld a, [$ffe0] - and a - ret z - cp $1 - jr nz, .asm_5d871 - set 0, [hl] - ret -.asm_5d871 - cp $2 - jr nz, .asm_5d878 - set 1, [hl] - ret -.asm_5d878 - cp $3 - jr nz, .asm_5d87f - set 2, [hl] - ret -.asm_5d87f - cp $4 - ret nz - set 3, [hl] - ret - -SilphCo9ScriptPointers: ; 5d885 (17:5885) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -SilphCo9TextPointers: ; 5d88b (17:588b) - dw SilphCo9Text1 - dw SilphCo9Text2 - dw SilphCo9Text3 - dw SilphCo9Text4 - -SilphCo9TrainerHeaders: ; 5d893 (17:5893) -SilphCo9TrainerHeader0: ; 5d893 (17:5893) - db $2 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d833 ; flag's byte - dw SilphCo9BattleText1 ; 0x5912 TextBeforeBattle - dw SilphCo9AfterBattleText1 ; 0x591c TextAfterBattle - dw SilphCo9EndBattleText1 ; 0x5917 TextEndBattle - dw SilphCo9EndBattleText1 ; 0x5917 TextEndBattle - -SilphCo9TrainerHeader1: ; 5d89f (17:589f) - db $3 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d833 ; flag's byte - dw SilphCo9BattleText2 ; 0x5921 TextBeforeBattle - dw SilphCo9AfterBattleText2 ; 0x592b TextAfterBattle - dw SilphCo9EndBattleText2 ; 0x5926 TextEndBattle - dw SilphCo9EndBattleText2 ; 0x5926 TextEndBattle - -SilphCo9TrainerHeader2: ; 5d8ab (17:58ab) - db $4 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d833 ; flag's byte - dw SilphCo9BattleText3 ; 0x5930 TextBeforeBattle - dw SilphCo9AfterBattleText3 ; 0x593a TextAfterBattle - dw SilphCo9EndBattleText3 ; 0x5935 TextEndBattle - dw SilphCo9EndBattleText3 ; 0x5935 TextEndBattle - - db $ff - -SilphCo9Text1: ; 5d8b8 (17:58b8) - db $08 ; asm - ld a, [$d838] - bit 7, a - jr nz, .asm_a14c3 ; 0x5d8be - ld hl, UnnamedText_5d8e5 - call PrintText - ld a, $7 - call Predef - call GBFadeOut2 - call Delay3 - call GBFadeIn2 - ld hl, UnnamedText_5d8ea - call PrintText - jr .asm_b6e28 ; 0x5d8da -.asm_a14c3 ; 0x5d8dc - ld hl, UnnamedText_5d8ef - call PrintText -.asm_b6e28 ; 0x5d8e2 - jp TextScriptEnd - -UnnamedText_5d8e5: ; 5d8e5 (17:58e5) - TX_FAR _UnnamedText_5d8e5 - db "@" - -UnnamedText_5d8ea: ; 5d8ea (17:58ea) - TX_FAR _UnnamedText_5d8ea - db "@" - -UnnamedText_5d8ef: ; 5d8ef (17:58ef) - TX_FAR _UnnamedText_5d8ef - db "@" - -SilphCo9Text2: ; 5d8f4 (17:58f4) - db $08 ; asm - ld hl, SilphCo9TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -SilphCo9Text3: ; 5d8fe (17:58fe) - db $08 ; asm - ld hl, SilphCo9TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -SilphCo9Text4: ; 5d908 (17:5908) - db $08 ; asm - ld hl, SilphCo9TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -SilphCo9BattleText1: ; 5d912 (17:5912) - TX_FAR _SilphCo9BattleText1 - db "@" - -SilphCo9EndBattleText1: ; 5d917 (17:5917) - TX_FAR _SilphCo9EndBattleText1 - db "@" - -SilphCo9AfterBattleText1: ; 5d91c (17:591c) - TX_FAR _SilphCo9AfterBattleText1 - db "@" - -SilphCo9BattleText2: ; 5d921 (17:5921) - TX_FAR _SilphCo9BattleText2 - db "@" -SilphCo9EndBattleText2: ; 5d926 (17:5926) - TX_FAR _SilphCo9EndBattleText2 - db "@" - -SilphCo9AfterBattleText2: ; 5d92b (17:592b) - TX_FAR _SilphCo9AfterBattleText2 - db "@" - -SilphCo9BattleText3: ; 5d930 (17:5930) - TX_FAR _SilphCo9BattleText3 - db "@" - -SilphCo9EndBattleText3: ; 5d935 (17:5935) - TX_FAR _SilphCo9EndBattleText3 - db "@" - -SilphCo9AfterBattleText3: ; 5d93a (17:593a) - TX_FAR _SilphCo9AfterBattleText3 - db "@" - -INCLUDE "data/mapObjects/silphco9.asm" - -SilphCo9Blocks: ; 5d989 (17:5989) - INCBIN "maps/silphco9.blk" - -INCLUDE "data/mapHeaders/victoryroad1.asm" +Func_41505: ; 41505 (10:5505) + ld b, BANK(Func_71882) + ld hl, Func_71882 + call Bankswitch + call Func_41558 -VictoryRoad1Script: ; 5da0a (17:5a0a) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - call nz, .next - call EnableAutoTextBoxDrawing - ld hl, VictoryRoad1TrainerHeaders - ld de, VictoryRoad1ScriptPointers - ld a, [W_VICTORYROAD1CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_VICTORYROAD1CURSCRIPT], a +Func_41510: ; 41510 (10:5510) + ld hl, wOAMBuffer + ld c, $14 +.asm_41515 + ld a, [W_BASECOORDY] ; $d082 + add [hl] + ld [hli], a + ld a, [W_BASECOORDX] ; $d081 + add [hl] + ld [hli], a + inc hl + inc hl + dec c + jr nz, .asm_41515 ret -.next - ld a, [$d869] - bit 7, a - ret z - ld a, $1d - ld [$d09f], a - ld bc, $604 - ld a, $17 - jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) -VictoryRoad1ScriptPointers: ; 5da3a (17:5a3a) - dw VictoryRoad1Script0 - dw Func_324c - dw EndTrainerBattle - -VictoryRoad1Script0: ; 5da40 (17:5a40) - ld a, [$d869] - bit 7, a - jp nz, CheckFightingMapTrainers - ld hl, CoordsData_5da5c ; $5a5c - call CheckBoulderCoords - jp nc, CheckFightingMapTrainers - ld hl, $d126 - set 5, [hl] - ld hl, $d869 - set 7, [hl] +Func_41525: ; 41525 (10:5525) + ld a, [$d08a] + and a + jr z, .asm_41536 + ld bc, $400 + call .asm_4153f + ld bc, $a + jr .asm_4153f +.asm_41536 + ld bc, $f6 + call .asm_4153f + ld bc, $fc00 +.asm_4153f + ld a, b + ld [W_BASECOORDX], a ; $d081 + ld a, c + ld [W_BASECOORDY], a ; $d082 + ld d, $4 +.asm_41549 + call Func_41510 + call Func_414e8 + ld c, $8 + call DelayFrames + dec d + jr nz, .asm_41549 ret -CoordsData_5da5c: ; 5da5c (17:5a5c) - db $0D,$11,$FF - -VictoryRoad1TextPointers: ; 5da5f (17:5a5f) - dw VictoryRoad1Text1 - dw VictoryRoad1Text2 - dw Predef5CText - dw Predef5CText - dw BoulderText - dw BoulderText - dw BoulderText - -VictoryRoad1TrainerHeaders: ; 5da6d (17:5a6d) -VictoryRoad1TrainerHeader0: ; 5da6d (17:5a6d) - db $1 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d869 ; flag's byte - dw VictoryRoad1BattleText1 ; 0x5a9a TextBeforeBattle - dw VictoryRoad1AfterBattleText1 ; 0x5aa4 TextAfterBattle - dw VictoryRoad1EndBattleText1 ; 0x5a9f TextEndBattle - dw VictoryRoad1EndBattleText1 ; 0x5a9f TextEndBattle - -VictoryRoad1TrainerHeader1: ; 5da79 (17:5a79) - db $2 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d869 ; flag's byte - dw VictoryRoad1BattleText2 ; 0x5aa9 TextBeforeBattle - dw VictoryRoad1AfterBattleText2 ; 0x5ab3 TextAfterBattle - dw VictoryRoad1EndBattleText2 ; 0x5aae TextEndBattle - dw VictoryRoad1EndBattleText2 ; 0x5aae TextEndBattle - - db $ff - -VictoryRoad1Text1: ; 5da86 (17:5a86) - db $08 ; asm - ld hl, VictoryRoad1TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -VictoryRoad1Text2: ; 5da90 (17:5a90) - db $08 ; asm - ld hl, VictoryRoad1TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -VictoryRoad1BattleText1: ; 5da9a (17:5a9a) - TX_FAR _VictoryRoad1BattleText1 - db "@" - -VictoryRoad1EndBattleText1: ; 5da9f (17:5a9f) - TX_FAR _VictoryRoad1EndBattleText1 - db "@" - -VictoryRoad1AfterBattleText1: ; 5daa4 (17:5aa4) - TX_FAR _VictoryRoad1AfterBattleText1 - db "@" - -VictoryRoad1BattleText2: ; 5daa9 (17:5aa9) - TX_FAR _VictoryRoad1BattleText2 - db "@" - -VictoryRoad1EndBattleText2: ; 5daae (17:5aae) - TX_FAR _VictoryRoad1EndBattleText2 - db "@" - -VictoryRoad1AfterBattleText2: ; 5dab3 (17:5ab3) - TX_FAR _VictoryRoad1AfterBattleText2 - db "@" - -INCLUDE "data/mapObjects/victoryroad1.asm" - -VictoryRoad1Blocks: ; 5db04 (17:5b04) - INCBIN "maps/victoryroad1.blk" - -; updates the types of a party mon (pointed to in hl) to the ones of the mon specified in $d11e -SetPartyMonTypes: ; 5db5e (17:5b5e) - call Load16BitRegisters - ld bc, W_PARTYMON1_TYPE1 - W_PARTYMON1DATA ; $5 - add hl, bc - ld a, [$d11e] - ld [$d0b5], a +Func_41558: ; 41558 (10:5558) + ld hl, OAMPointers_41574 ; $5574 + ld c, $4 + xor a +.asm_4155e + push bc + ld e, [hl] + inc hl + ld d, [hl] + inc hl + ld c, [hl] + inc hl + ld b, [hl] + inc hl push hl - call GetMonHeader + inc a + push af + call WriteOAMBlock + pop af pop hl - ld a, [W_MONHTYPE1] - ld [hli], a - ld a, [W_MONHTYPE2] - ld [hl], a + pop bc + dec c + jr nz, .asm_4155e ret -Func_5db79: ; 5db79 (17:5b79) - call EnableAutoTextBoxDrawing - ld a, $4 - jp Func_3ef5 - -RedBedroomSNESText: ; 5db81 (17:5b81) - TX_FAR _RedBedroomSNESText - db "@" - -Func_5db86: ; 5db86 (17:5b86) - call EnableAutoTextBoxDrawing - ld a, $3 - jp Func_3ef5 +OAMPointers_41574: ; 41574 (10:5574) + dw UnknownOAM_41584 + db $08,$08 + dw UnknownOAM_4158c + db $18,$08 + dw UnknownOAM_41594 + db $08,$18 + dw UnknownOAM_4159c + db $18,$18 -Route15UpstairsLeftBinoculars: ; 5db8e (17:5b8e) - db $fc -Func_5db8f: ; 5db8f (17:5b8f) - ld a, [$c109] - cp $4 ; i - ret nz - call EnableAutoTextBoxDrawing - ld a, $a ; text id Route15UpstairsBinocularsText - call Func_3ef5 - ld a, ARTICUNO - ld [$cf91], a - call PlayCry - jp DisplayMonFrontSpriteInBox +UnknownOAM_41584: ; 41584 (10:5584) + db $38,$10,$39,$10 + db $3A,$10,$3B,$10 -Route15UpstairsBinocularsText: ; 5dba8 (17:5ba8) - TX_FAR _Route15UpstairsBinocularsText - db "@" +UnknownOAM_4158c: ; 4158c (10:558c) + db $39,$30,$38,$30 + db $3B,$30,$3A,$30 -AerodactylFossil: ; 5dbad (17:5bad) - ld a, FOSSIL_AERODACTYL - ld [$cf91], a - call DisplayMonFrontSpriteInBox - call EnableAutoTextBoxDrawing - ld a, $9 - call Func_3ef5 - ret +UnknownOAM_41594: ; 41594 (10:5594) + db $3A,$50,$3B,$50 + db $38,$50,$39,$50 -AerodactylFossilText: ; 5dbbe (17:5bbe) - TX_FAR _AerodactylFossilText - db "@" +UnknownOAM_4159c: ; 4159c (10:559c) + db $3B,$70,$3A,$70 + db $39,$70,$38,$70 -KabutopsFossil: ; 5bdc3 (17:5bc3) - ld a, FOSSIL_KABUTOPS +Func_415a4: ; 415a4 (10:55a4) ld [$cf91], a - call DisplayMonFrontSpriteInBox - call EnableAutoTextBoxDrawing - ld a, $b - call Func_3ef5 - ret - -KabutopsFossilText: ; 5dbd4 (17:5bd4) - TX_FAR _KabutopsFossilText - db "@" - -DisplayMonFrontSpriteInBox: ; 5dbd9 (17:5bd9) -; Displays a pokemon's front sprite in a pop-up window. -; [$cf91] = pokemon interal id number + ld [$d0b5], a + ld [$cf1d], a + ld b, $b + ld c, $0 + call GoPAL_SET + ld a, [H_AUTOBGTRANSFERENABLED] ; $ffba + xor $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call GetMonHeader + FuncCoord 7, 2 ; $c3cf + ld hl, Coord + call LoadFlippedFrontSpriteByMonIndex + ld c, $a + jp DelayFrames + +Func_415c8: ; 415c8 (10:55c8) ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - call Delay3 + call ClearScreen + ld a, $e3 + ld [rLCDC], a ; $ff40 + ld a, $7 + ld [rWX], a ; $ff4b xor a ld [$ffb0], a - call SaveScreenTilesToBuffer1 - ld a, $11 - ld [$d125], a - call DisplayTextBoxID - call UpdateSprites - ld a, [$cf91] - ld [$d0b5], a - call GetMonHeader - ld de, $8b10 - call LoadMonFrontSprite - ld a, $80 - ld [$ffe1], a - FuncCoord 10, 11 ; $c486 - ld hl, Coord - ld a, $2 - call Predef ; indirect jump to Func_3f073 (3f073 (f:7073)) - call WaitForTextScrollButtonPress - call LoadScreenTilesFromBuffer1 - call Delay3 ld a, $90 - ld [$ffb0], a + ld [$ffae], a ret -Func_5dc1a: ; 5dc1a (17:5c1a) - call EnableAutoTextBoxDrawing - ld a, $1 - ld [$cc3c], a - ld a, [$cd3d] - call Func_3ef5 +Func_415df: ; 415df (10:55df) + ld c, $32 + call DelayFrames +.asm_415e4 + call DelayFrame + ld a, [rWX] ; $ff4b + inc a + inc a + ld [rWX], a ; $ff4b + cp $a1 + jr nz, .asm_415e4 + call Func_41196 + ld c, $a + call DelayFrames + ld a, $7 + ld [rWX], a ; $ff4b ret -LinkCableHelp: ; 5dc29 (17:5c29) - db $08 ; asm - call SaveScreenTilesToBuffer1 - ld hl, LinkCableHelpText1 - call PrintText - xor a - ld [W_ANIMATIONID], a - ld [wCurrentMenuItem], a - ld [wLastMenuItem], a - ld a, $3 - ld [wMenuWatchedKeys], a - ld a, $3 - ld [wMaxMenuItem], a - ld a, $2 - ld [wTopMenuItemY], a - ld a, $1 - ld [wTopMenuItemX], a -.asm_5c51 - ld hl, $d730 - set 6, [hl] - ld hl, wTileMap - ld b, $8 - ld c, $d - call TextBoxBorder - ld hl, $c3ca - ld de, HowToLinkText - call PlaceString - ld hl, LinkCableHelpText2 - call PrintText - call HandleMenuInput - bit 1, a - jr nz, .asm_5dc93 ; 0x5dc74 $1d - ld a, [wCurrentMenuItem] - cp $3 - jr z, .asm_5dc93 ; 0x5dc7b $16 - ld hl, $d730 - res 6, [hl] - ld hl, LinkCableInfoTexts - add a - ld d, $0 - ld e, a - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a +Func_415fe: ; 415fe (10:55fe) + ld hl, TradeWentToText call PrintText - jp .asm_5c51 -.asm_5dc93 - ld hl, $d730 - res 6, [hl] - call LoadScreenTilesFromBuffer1 - jp TextScriptEnd - -LinkCableHelpText1: ; 5dc9e (17:5c9e) - TX_FAR _LinkCableHelpText1 - db "@" + ld c, $c8 + call DelayFrames + jp Func_415df -LinkCableHelpText2: ; 5dca3 (17:5ca3) - TX_FAR _LinkCableHelpText2 +TradeWentToText: ; 4160c (10:560c) + TX_FAR _TradeWentToText db "@" -HowToLinkText: ; 5dca8 (17:5ca8) - db "HOW TO LINK" - next "COLOSSEUM" - next "TRADE CENTER" - next "STOP READING@" - -LinkCableInfoTexts: ; 5dcd8 (17:5cd8) - dw LinkCableInfoText1 - dw LinkCableInfoText2 - dw LinkCableInfoText3 - -LinkCableInfoText1: ; 5dcde (17:5cde) - TX_FAR _LinkCableInfoText1 - db "@" +Func_41611: ; 41611 (10:5611) + ld hl, TradeForText + call PrintText + call Delay50 + ld hl, TradeSendsText + call PrintText + jp Delay50 -LinkCableInfoText2: ; 5dce3 (17:5ce3) - TX_FAR _LinkCableInfoText2 +TradeForText: ; 41623 (10:5623) + TX_FAR _TradeForText db "@" -LinkCableInfoText3: ; 5dce8 (17:5ce8) - TX_FAR _LinkCableInfoText3 +TradeSendsText: ; 41628 (10:5628) + TX_FAR _TradeSendsText db "@" -ViridianSchoolBlackboard: ; 5dced (17:5ced) - db $08 ; asm - call SaveScreenTilesToBuffer1 - ld hl, ViridianSchoolBlackboardText1 - call PrintText - xor a - ld [W_ANIMATIONID], a - ld [wCurrentMenuItem], a - ld [wLastMenuItem], a - ld a, $33 - ld [wMenuWatchedKeys], a - ld a, $2 - ld [wMaxMenuItem], a - ld a, $2 - ld [wTopMenuItemY], a - ld a, $1 - ld [wTopMenuItemX], a -.asm_5dd15 - ld hl, $d730 - set 6, [hl] - ld hl, wTileMap - ld bc, $060a - call TextBoxBorder - ld hl, $c3c9 - ld de, StatusAilmentText1 - call PlaceString - ld hl, $c3ce - ld de, StatusAilmentText2 - call PlaceString - ld hl, ViridianSchoolBlackboardText2 +Func_4162d: ; 4162d (10:562d) + ld hl, TradeWavesFarewellText call PrintText - call HandleMenuInput - bit 1, a - jr nz, .exitBlackboard - bit 4, a - jr z, .asm_5dd5c - ld a, $2 - ld [wMaxMenuItem], a - ld a, $2 - ld [wTopMenuItemY], a - ld a, $6 - ld [wTopMenuItemX], a - ld a, $3 - ld [W_ANIMATIONID], a - jr .asm_5dd15 -.asm_5dd5c - bit 5, a - jr z, .asm_5dd75 - ld a, $2 - ld [wMaxMenuItem], a - ld a, $2 - ld [wTopMenuItemY], a - ld a, $1 - ld [wTopMenuItemX], a - xor a - ld [W_ANIMATIONID], a - jr .asm_5dd15 -.asm_5dd75 - ld a, [wCurrentMenuItem] - ld b, a - ld a, [W_ANIMATIONID] - add b - cp $5 - jr z, .exitBlackboard - ld hl, $d730 - res 6, [hl] - ld hl, ViridianBlackboardStatusPointers - add a - ld d, $0 - ld e, a - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a + call Delay50 + ld hl, TradeTransferredText call PrintText - jp .asm_5dd15 -.exitBlackboard - ld hl, $d730 - res 6, [hl] - call LoadScreenTilesFromBuffer1 - jp TextScriptEnd + call Delay50 + jp Func_415df -ViridianSchoolBlackboardText1: ; 5dda2 (17:5da2) - TX_FAR _ViridianSchoolBlackboardText1 +TradeWavesFarewellText: ; 41642 (10:5642) + TX_FAR _TradeWavesFarewellText db "@" -ViridianSchoolBlackboardText2: ; 5dda7 (17:5da7) - TX_FAR _ViridianSchoolBlackboardText2 +TradeTransferredText: ; 41647 (10:5647) + TX_FAR _TradeTransferredText db "@" -StatusAilmentText1: ; 5ddac (17:5dac) - db " SLP" - next " PSN" - next " PAR@" +Func_4164c: ; 4164c (10:564c) + ld hl, TradeTakeCareText + call PrintText + jp Delay50 -StatusAilmentText2: ; 5ddbb (17:5dbb) - db " BRN" - next " FRZ" - next " QUIT@@" +TradeTakeCareText: ; 41655 (10:5655) + TX_FAR _TradeTakeCareText + db "@" -ViridianBlackboardStatusPointers: ; 5ddcc (17:5ddc) - dw ViridianBlackboardSleepText - dw ViridianBlackboardPoisonText - dw ViridianBlackbaordPrlzText - dw ViridianBlackboardBurnText - dw ViridianBlackboardFrozenText +Func_4165a: ; 4165a (10:565a) + ld hl, TradeWillTradeText + call PrintText + call Delay50 + ld hl, TradeforText + call PrintText + jp Delay50 -ViridianBlackboardSleepText: ; 5ddd6 (17:5dd6) - TX_FAR _ViridianBlackboardSleepText +TradeWillTradeText: ; 4166c (10:566c) + TX_FAR _TradeWillTradeText db "@" -ViridianBlackboardPoisonText: ; 5dddb (17:5ddb) - TX_FAR _ViridianBlackboardPoisonText +TradeforText: ; 41671 (10:5671) + TX_FAR _TradeforText db "@" -ViridianBlackbaordPrlzText: ; 5dde0 (17:5de0) - TX_FAR _ViridianBlackbaordPrlzText - db "@" +Func_41676: ; 41676 (10:5676) + ld [W_ANIMATIONID], a ; $d07c + xor a + ld [$cc5b], a + ld a, $8 + jp Predef ; indirect jump to MoveAnimation (78d5e (1e:4d5e)) -ViridianBlackboardBurnText: ; 5dde5 (17:5de5) - TX_FAR _ViridianBlackboardBurnText - db "@" +PlayIntro: ; 41682 (10:5682) + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + inc a + ld [H_AUTOBGTRANSFERENABLED], a + call Func_4188a + call PlayIntroScene + call GBFadeOut2 + xor a + ld [$ffae], a + ld [H_AUTOBGTRANSFERENABLED], a + call CleanLCD_OAM + call DelayFrame + ret -ViridianBlackboardFrozenText: ; 5ddea (17:5dea) - TX_FAR _ViridianBlackboardFrozenText - db "@" +PlayIntroScene: ; 4169d (10:569d) + ld b, $7 + call GoPAL_SET + ld a, %11100100 + ld [rBGP], a + ld [rOBP0], a + ld [rOBP1], a + xor a + ld [$ffae], a + ld b, $3 + call Func_4183f + ld a, 0 + ld [W_BASECOORDX], a + ld a, 80 + ld [W_BASECOORDY], a + ld bc, $606 + call Func_417c7 + ld de, $28ff + call Func_4180e + ret c -Func_5ddef: ; 5ddef (17:5def) - call EnableAutoTextBoxDrawing - ld a, $26 - jp Func_3ef5 +; hip + ld a, (SFX_1f_5f - SFX_Headers_1f) / 3 + call PlaySound + xor a + ld [$d09f], a + ld de, IntroNidorinoAnimation1 + call AnimateIntroNidorino +; hop + ld a, (SFX_1f_60 - SFX_Headers_1f) / 3 + call PlaySound + ld de, IntroNidorinoAnimation2 + call AnimateIntroNidorino + ld c, $a + call CheckForUserInterruption + ret c -VermilionGymTrashText: ; 5ddf7 (17:5df7) - TX_FAR _VermilionGymTrashText - db "@" +; hip + ld a, (SFX_1f_5f - SFX_Headers_1f) / 3 + call PlaySound + ld de, IntroNidorinoAnimation1 + call AnimateIntroNidorino +; hop + ld a, (SFX_1f_60 - SFX_Headers_1f) / 3 + call PlaySound + ld de, IntroNidorinoAnimation2 + call AnimateIntroNidorino + ld c, $1e + call CheckForUserInterruption + ret c -GymTrashScript: ; 5ddfc (17:5dfc) - call EnableAutoTextBoxDrawing - ld a, [wWhichTrade] ; $cd3d - ld [$cd5b], a +; raise + ld b, $4 + call Func_4183f + ld a, (SFX_1f_61 - SFX_Headers_1f) / 3 + call PlaySound + ld de, $401 + call Func_4180e + ld c, $1e + call CheckForUserInterruption + ret c -; Don't do the trash can puzzle if it's already been done. - ld a, [$d773] - bit 0, a - jr z, .ok +; slash + ld b, $5 + call Func_4183f + ld a, (SFX_1f_62 - SFX_Headers_1f) / 3 + call PlaySound + ld de, $800 + call Func_4180e +; hip + ld a, (SFX_1f_5f - SFX_Headers_1f) / 3 + call PlaySound + ld a, $24 + ld [$d09f], a + ld de, IntroNidorinoAnimation3 + call AnimateIntroNidorino + ld c, $1e + call CheckForUserInterruption + ret c - ld a, $26 ; DisplayTextID $26 = VermilionGymTrashText (nothing in the trash) - jp Func_3ef5 + ld de, $401 + call Func_4180e + ld b, $3 + call Func_4183f + ld c, $3c + call CheckForUserInterruption + ret c -.ok - bit 1, a - jr nz, .trySecondLock +; hip + ld a, (SFX_1f_5f - SFX_Headers_1f) / 3 + call PlaySound + xor a + ld [$d09f], a + ld de, IntroNidorinoAnimation4 ; $5931 + call AnimateIntroNidorino +; hop + ld a, (SFX_1f_60 - SFX_Headers_1f) / 3 + call PlaySound + ld de, IntroNidorinoAnimation5 ; $593c + call AnimateIntroNidorino + ld c, $14 + call CheckForUserInterruption + ret c - ld a, [$d743] - ld b, a - ld a, [$cd5b] - cp b - jr z, .openFirstLock + ld a, $24 + ld [$d09f], a + ld de, IntroNidorinoAnimation6 ; $5947 + call AnimateIntroNidorino + ld c, $1e + call CheckForUserInterruption + ret c - ld a, $26 ; DisplayTextID $26 = VermilionGymTrashText (nothing in the trash) - jr .done +; lunge + ld a, (SFX_1f_5e - SFX_Headers_1f) / 3 + call PlaySound + ld a, $48 + ld [$d09f], a + ld de, IntroNidorinoAnimation7 ; $5950 + jp AnimateIntroNidorino -.openFirstLock -; Next can is trying for the second switch. - ld hl, $d773 - set 1, [hl] +AnimateIntroNidorino: ; 41793 (10:5793) + ld a, [de] + cp $50 + ret z + ld [W_BASECOORDY], a ; $d082 + inc de + ld a, [de] + ld [W_BASECOORDX], a ; $d081 + push de + ld c, $24 + call Func_417ae + ld c, 5 + call DelayFrames + pop de + inc de + jr AnimateIntroNidorino - ld hl, GymTrashCans ; $5e7d - ld a, [$cd5b] - ; * 5 - ld b, a - add a - add a - add b +Func_417ae: ; 417ae (10:57ae) + ld hl, wOAMBuffer + ld a, [$d09f] + ld d, a +.asm_417b5 + ld a, [W_BASECOORDY] ; $d082 + add [hl] + ld [hli], a + ld a, [W_BASECOORDX] ; $d081 + add [hl] + ld [hli], a + ld a, d + ld [hli], a + inc hl + inc d + dec c + jr nz, .asm_417b5 + ret - ld d, 0 +Func_417c7: ; 417c7 (10:57c7) + ld hl, wOAMBuffer + ld d, $0 +.asm_417cc + push bc + ld a, [W_BASECOORDY] ; $d082 ld e, a - add hl, de - ld a, [hli] - - ld [$ffdb], a - push hl - call GenRandom - swap a - ld b, a - ld a, [$ffdb] - and b - dec a - pop hl +.asm_417d1 + ld a, e + add $8 + ld e, a + ld [hli], a + ld a, [W_BASECOORDX] ; $d081 + ld [hli], a + ld a, d + ld [hli], a + ld a, $80 + ld [hli], a + inc d + dec c + jr nz, .asm_417d1 + ld a, [W_BASECOORDX] ; $d081 + add $8 + ld [W_BASECOORDX], a ; $d081 + pop bc + dec b + jr nz, .asm_417cc + ret - ld d, 0 - ld e, a - add hl, de - ld a, [hl] - and $f - ld [$d744], a +Func_417f0: ; 417f0 (10:57f0) + ld hl, $9c00 + ld bc, $240 + jr asm_417fe - ld a, $3b ; DisplayTextID $3b = VermilionGymTrashSuccesText1 (first lock opened!) - jr .done +Func_417f8: ; 417f8 (10:57f8) + FuncCoord 0, 4 ; $c3f0 + ld hl, Coord + ld bc, $c8 +asm_417fe: ; 417fe (10:57fe) + ld [hl], $0 + inc hl + dec bc + ld a, b + or c + jr nz, asm_417fe + ret -.trySecondLock - ld a, [$d744] - ld b, a - ld a, [$cd5b] - cp b - jr z, .openSecondLock +Func_41807: ; 41807 (10:5807) + ld a, $1 +.asm_41809 + ld [hli], a + dec c + jr nz, .asm_41809 + ret -; Reset the cans. - ld hl, $d773 - res 1, [hl] - call GenRandom +Func_4180e: ; 4180e (10:580e) + ld a, e + cp $ff + jr z, .asm_4181d + cp $1 + jr z, .asm_4182d + ld a, [$ffae] + dec a + dec a + jr .asm_41831 +.asm_4181d + push de + ld a, $2 + ld [W_BASECOORDX], a ; $d081 + xor a + ld [W_BASECOORDY], a ; $d082 + ld c, $24 + call Func_417ae + pop de +.asm_4182d + ld a, [$ffae] + inc a + inc a +.asm_41831 + ld [$ffae], a + push de + ld c, $2 + call CheckForUserInterruption + pop de + ret c + dec d + jr nz, Func_4180e + ret - and $e - ld [$d743], a +Func_4183f: ; 4183f (10:583f) + FuncCoord 13, 7 ; $c439 + ld hl, Coord - ld a, $3e ; DisplayTextID $3e = VermilionGymTrashFailText (locks reset!) - jr .done +Func_41842: ; 41842 (10:5842) + ld c, $0 + ld a, $31 + jp Predef ; indirect jump to Func_79dda -.openSecondLock -; Completed the trash can puzzle. - ld hl, $d773 - set 0, [hl] - ld hl, $d126 - set 6, [hl] +Func_41849: ; 41849 (10:5849) + ld a, $33 + call Predef ; indirect jump to Func_79869 + ld a, b + jp PlaySound - ld a, $3d ; DisplayTextID $3d = VermilionGymTrashSuccesText3 (2nd lock opened!) +LoadIntroGraphics: ; 41852 (10:5852) + ld hl, FightIntroBackMon ; $5a99 + ld de, $9000 + ld bc, $600 + ld a, BANK(FightIntroBackMon) + call FarCopyData2 + ld hl, GameFreakIntro ; $5959 + ld de, $9600 + ld bc, $140 + ld a, BANK(GameFreakIntro) + call FarCopyData2 + ld hl, GameFreakIntro ; $5959 + ld de, $8800 + ld bc, $140 + ld a, BANK(GameFreakIntro) + call FarCopyData2 + ld hl, FightIntroFrontMon ; $6099 + ld de, $8000 + ld bc, $6c0 + ld a, BANK(FightIntroFrontMon) + jp FarCopyData2 -.done - jp Func_3ef5 +Func_4188a: ; 4188a (10:588a) + ld b, $c + call GoPAL_SET + ld b, BANK(Func_4538) + ld hl, Func_4538 + call Bankswitch + ld a, $e4 + ld [rBGP], a ; $ff47 + ld c, $b4 + call DelayFrames + call ClearScreen + call DisableLCD + xor a + ld [W_CUROPPONENT], a ; $d059 + call Func_418e9 + call LoadIntroGraphics + call EnableLCD + ld hl, rLCDC ; $ff40 + res 5, [hl] + set 3, [hl] + ld c, $40 + call DelayFrames + ld b, BANK(AnimateShootingStar) + ld hl, AnimateShootingStar + call Bankswitch + push af + pop af + jr c, .asm_418d0 + ld c, $28 + call DelayFrames +.asm_418d0 + ld a, Bank(Func_7d8ea) + ld [$c0ef], a + ld [$c0f0], a + ld a, MUSIC_INTRO_BATTLE + ld [$c0ee], a + call PlaySound + call Func_417f8 + call CleanLCD_OAM + jp Delay3 -GymTrashCans: ; 5de7d (17:5e7d) - db 2, 1, 3, 0, 0 ; 0 - db 3, 0, 2, 4, 0 ; 1 - db 2, 1, 5, 0, 0 ; 2 - db 3, 0, 4, 6, 0 ; 3 - db 4, 1, 3, 5, 7 ; 4 - db 3, 2, 4, 8, 0 ; 5 - db 3, 3, 7, 9, 0 ; 6 - db 4, 4, 6, 8, 10 ; 7 - db 3, 5, 7, 11, 0 ; 8 - db 3, 6, 10, 12, 0 ; 9 - db 4, 7, 9, 11, 13 ; 10 - db 3, 8, 10, 14, 0 ; 11 - db 2, 9, 13, 0, 0 ; 12 - db 3, 10, 12, 14, 0 ; 13 - db 2, 11, 13, 0, 0 ; 14 -; 5dec8 +Func_418e9: ; 418e9 (10:58e9) + call Func_417f0 + ld hl, wTileMap + ld c, $50 + call Func_41807 + FuncCoord 0, 14 ; $c4b8 + ld hl, Coord + ld c, $50 + call Func_41807 + ld hl, $9c00 + ld c, $80 + call Func_41807 + ld hl, $9dc0 + ld c, $80 + jp Func_41807 -VermilionGymTrashSuccesText1: ; 5dec8 (17:5ec8) - TX_FAR _VermilionGymTrashSuccesText1 - db $08 ; asm - call WaitForSoundToFinish - ld a, (SFX_02_49 - SFX_Headers_02) / 3 - call PlaySound - call WaitForSoundToFinish - jp TextScriptEnd +Func_4190c: ; 4190c (10:590c) + ret -VermilionGymTrashSuccesText2: ; 5dedb (17:5edb) - TX_FAR _VermilionGymTrashSuccesText2 - db "@" +IntroNidorinoAnimation0: ; 4190d (10:590d) + db 0, 0 + db $50 -UnnamedText_5dee0: ; 5dee0 (17:5ee0) - db $08 ; asm - call WaitForSoundToFinish - ld a, (SFX_02_49 - SFX_Headers_02) / 3 - call PlaySound - call WaitForSoundToFinish - jp TextScriptEnd +IntroNidorinoAnimation1: ; 41910 (10:5910) +; This is a sequence of pixel movements for part of the Nidorino animation. This +; list describes how Nidorino should hop. +; First byte is y movement, second byte is x movement + db 0, 0 + db -2, 2 + db -1, 2 + db 1, 2 + db 2, 2 + db $50 ; list terminator -VermilionGymTrashSuccesText3: ; 5deef (17:5eef) - TX_FAR _VermilionGymTrashSuccesText3 - db $08 ; asm - call WaitForSoundToFinish - ld a, (SFX_02_57 - SFX_Headers_02) / 3 - call PlaySound - call WaitForSoundToFinish - jp TextScriptEnd +IntroNidorinoAnimation2: ; 4191b (10:591b) +; This is a sequence of pixel movements for part of the Nidorino animation. +; First byte is y movement, second byte is x movement + db 0, 0 + db -2, -2 + db -1, -2 + db 1, -2 + db 2, -2 + db $50 ; list terminator -VermilionGymTrashFailText: ; 5df02 (17:5f02) - TX_FAR _VermilionGymTrashFailText - db $08 ; asm - call WaitForSoundToFinish - ld a, (SFX_02_51 - SFX_Headers_02) / 3 - call PlaySound - call WaitForSoundToFinish - jp TextScriptEnd +IntroNidorinoAnimation3: ; 41926 (10:5926) +; This is a sequence of pixel movements for part of the Nidorino animation. +; First byte is y movement, second byte is x movement + db 0, 0 + db -12, 6 + db -8, 6 + db 8, 6 + db 12, 6 + db $50 ; list terminator -SECTION "bank18",ROMX,BANK[$18] +IntroNidorinoAnimation4: ; 41931 (10:5931) +; This is a sequence of pixel movements for part of the Nidorino animation. +; First byte is y movement, second byte is x movement + db 0, 0 + db -8, -4 + db -4, -4 + db 4, -4 + db 8, -4 + db $50 ; list terminator -ViridianForestBlocks: ; 60000 (18:4000) - INCBIN "maps/viridianforest.blk" +IntroNidorinoAnimation5: ; 4193c (10:593c) +; This is a sequence of pixel movements for part of the Nidorino animation. +; First byte is y movement, second byte is x movement + db 0, 0 + db -8, 4 + db -4, 4 + db 4, 4 + db 8, 4 + db $50 ; list terminator -UndergroundPathNSBlocks: ; 60198 (18:4198) - INCBIN "maps/undergroundpathns.blk" +IntroNidorinoAnimation6: ; 41947 (10:5947) +; This is a sequence of pixel movements for part of the Nidorino animation. +; First byte is y movement, second byte is x movement + db 0, 0 + db 2, 0 + db 2, 0 + db 0, 0 + db $50 ; list terminator -UndergroundPathWEBlocks: ; 601f4 (18:41f4) - INCBIN "maps/undergroundpathwe.blk" +IntroNidorinoAnimation7: ; 41950 (10:5950) +; This is a sequence of pixel movements for part of the Nidorino animation. +; First byte is y movement, second byte is x movement + db -8, -16 + db -7, -14 + db -6, -12 + db -4, -10 + db $50 ; list terminator - INCBIN "maps/unusedblocks60258.blk" +GameFreakIntro: ; 41959 (10:5959) + INCBIN "gfx/gamefreak_intro.h8.2bpp" + INCBIN "gfx/gamefreak_logo.2bpp" + ds $10 ; blank tile -SSAnne10Blocks: ; 603c0 (18:43c0) -SSAnne9Blocks: ; 603c0 (18:43c0) - INCBIN "maps/ssanne9.blk" +FightIntroBackMon: ; 41a99 (10:5a99) + INCBIN "gfx/intro_fight.2bpp" -INCLUDE "data/mapHeaders/pokemontower1.asm" +FightIntroFrontMon: ; 42099 (10:6099) -PokemonTower1Script: ; 6042c (18:442c) - jp EnableAutoTextBoxDrawing +IF _RED + INCBIN "gfx/red/intro_nido_1.6x6.2bpp" + INCBIN "gfx/red/intro_nido_2.6x6.2bpp" + INCBIN "gfx/red/intro_nido_3.6x6.2bpp" + ds $10 ; blank tile +ENDC +IF _BLUE + INCBIN "gfx/blue/intro_purin_1.6x6.2bpp" + INCBIN "gfx/blue/intro_purin_2.6x6.2bpp" + INCBIN "gfx/blue/intro_purin_3.6x6.2bpp" + ds $10 ; blank tile +ENDC -PokemonTower1TextPointers: ; 6042f (18:442f) - dw PokemonTower1Text1 - dw PokemonTower1Text2 - dw PokemonTower1Text3 - dw PokemonTower1Text4 - dw PokemonTower1Text5 +; XXX what do these do +Func_42769: ; 42769 (10:6769) + FuncCoord 5,0 + ld hl,Coord + ld de,OTString67E5 + call PlaceString + ld a,[$CD3D] + ld [$D11E],a + ld a,$3A + call Predef + FuncCoord 9, 0 ; $c3a9 + ld hl,Coord + ld de,$D11E + ld bc,$8103 + call PrintNumber + FuncCoord 5,2 + ld hl,Coord + ld de,$CF4B + call PlaceString + FuncCoord 8,4 + ld hl,Coord + ld de,$CD41 + call PlaceString + FuncCoord 8, 6 ; $c420 + ld hl,Coord + ld de,$CD4C + ld bc,$8205 + jp PrintNumber -PokemonTower1Text1: ; 60439 (18:4439) - TX_FAR _PokemonTower1Text1 - db "@" +Func_427a7: ; 427a7 (10:67a7) + FuncCoord 5,10 + ld hl,Coord + ld de,OTString67E5 + call PlaceString + ld a,[$CD3E] + ld [$D11E],a + ld a,$3A + call Predef + FuncCoord 9, 10 ; $c471 + ld hl,Coord + ld de,$D11E + ld bc,$8103 + call PrintNumber + FuncCoord 5,12 + ld hl,Coord + ld de,$CD6D + call PlaceString + FuncCoord 8,14 + ld hl,Coord + ld de,$CD4E + call PlaceString + FuncCoord 8, 16 ; $c4e8 + ld hl,Coord + ld de,$CD59 + ld bc,$8205 + jp PrintNumber -PokemonTower1Text2: ; 6043e (18:443e) - TX_FAR _PokemonTower1Text2 - db "@" +OTString67E5: ; 427e5 (10:67e5) + db "──",$74,$F2,$4E + db $4E + db "OT/",$4E + db $73,"№",$F2,"@" -PokemonTower1Text3: ; 60443 (18:4443) - TX_FAR _PokemonTower1Text3 - db "@" +SECTION "bank11",ROMX,BANK[$11] -PokemonTower1Text4: ; 60448 (18:4448) - TX_FAR _PokemonTower1Text4 - db "@" +INCLUDE "data/mapHeaders/lavendertown.asm" -PokemonTower1Text5: ; 6044d (18:444d) - TX_FAR _PokemonTower1Text5 - db "@" +INCLUDE "data/mapObjects/lavendertown.asm" -INCLUDE "data/mapObjects/pokemontower1.asm" +LavenderTownBlocks: ; 44085 (11:4085) + INCBIN "maps/lavendertown.blk" -PokemonTower1Blocks: ; 6048c (18:448c) - INCBIN "maps/pokemontower1.blk" +ViridianPokecenterBlocks: ; 440df (11:40df) + INCBIN "maps/viridianpokecenter.blk" -INCLUDE "data/mapHeaders/pokemontower2.asm" +SafariZoneRestHouse1Blocks: ; 440fb (11:40fb) +SafariZoneRestHouse2Blocks: ; 440fb (11:40fb) +SafariZoneRestHouse3Blocks: ; 440fb (11:40fb) +SafariZoneRestHouse4Blocks: ; 440fb (11:40fb) + INCBIN "maps/safarizoneresthouse1.blk" -PokemonTower2Script: ; 604f2 (18:44f2) - call EnableAutoTextBoxDrawing - ld hl, PokemonTower2ScriptPointers - ld a, [W_POKEMONTOWER2CURSCRIPT] - jp CallFunctionInTable +INCLUDE "scripts/lavendertown.asm" -Func_604fe: ; 604fe (18:44fe) - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_POKEMONTOWER2CURSCRIPT], a - ld [W_CURMAPSCRIPT], a +DisplayDexRating: ; 44169 (11:4169) + ld hl, wPokedexSeen + ld b, $13 + call CountSetBits + ld a, [$D11E] ; result of CountSetBits (seen count) + ld [$FFDB], a + ld hl, wPokedexOwned + ld b, $13 + call CountSetBits + ld a, [$D11E] ; result of CountSetBits (own count) + ld [$FFDC], a + ld hl, DexRatingsTable +.findRating + ld a, [hli] + ld b, a + ld a, [$FFDC] ; number of pokemon owned + cp b + jr c, .foundRating + inc hl + inc hl + jr .findRating +.foundRating + ld a, [hli] + ld h, [hl] + ld l, a ; load text pointer into hl + ld a, [$D747] + bit 3, a + res 3, a + ld [$D747], a + jr nz, .label3 + push hl + ld hl, PokedexRatingText_441cc + call PrintText + pop hl + call PrintText + ld b, BANK(Func_7d13b) + ld hl, Func_7d13b + call Bankswitch + jp WaitForTextScrollButtonPress ; wait for button press +.label3 + ld de, $CC5B + ld a, [$FFDB] + ld [de], a + inc de + ld a, [$FFDC] + ld [de], a + inc de +.label4 + ld a, [hli] + cp a, $50 + jr z, .label5 + ld [de], a + inc de + jr .label4 +.label5 + ld [de], a ret -PokemonTower2ScriptPointers: ; 60509 (18:4509) - dw PokemonTower2Script0 - dw PokemonTower2Script1 - dw PokemonTower2Script2 +PokedexRatingText_441cc: ; 441cc (11:41cc) + TX_FAR _OaksLabText_441cc + db "@" -PokemonTower2Script0: ; 6050f (18:450f) - ld a, [$d764] - bit 7, a - ret nz - ld hl, CoordsData_6055e ; $455e - call ArePlayerCoordsInArray - ret nc - ld a, $ff - ld [$c0ee], a - call PlaySound - ld c, BANK(Music_MeetRival) - ld a, MUSIC_MEET_RIVAL - call PlayMusic - ld hl, $d764 - res 6, [hl] - ld a, [$cd3d] - cp $1 - ld a, $8 - ld b, $0 - jr nz, .asm_60544 ; 0x60539 $9 - ld hl, $d764 - set 6, [hl] - ld a, $2 - ld b, $c -.asm_60544 - ld [$d528], a - ld a, $1 - ld [$ff8c], a - ld a, b - ld [$ff8d], a - call Func_34a6 - ld a, $1 - ld [$ff8c], a - call DisplayTextID - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld [H_NEWLYPRESSEDBUTTONS], a - ret +DexRatingsTable: ; 441d1 (11:41d1) + db 10 + dw PokedexRatingText_44201 + db 20 + dw PokedexRatingText_44206 + db 30 + dw PokedexRatingText_4420b + db 40 + dw PokedexRatingText_44210 + db 50 + dw PokedexRatingText_44215 + db 60 + dw PokedexRatingText_4421a + db 70 + dw PokedexRatingText_4421f + db 80 + dw PokedexRatingText_44224 + db 90 + dw PokedexRatingText_44229 + db 100 + dw PokedexRatingText_4422e + db 110 + dw PokedexRatingText_44233 + db 120 + dw PokedexRatingText_44238 + db 130 + dw PokedexRatingText_4423d + db 140 + dw PokedexRatingText_44242 + db 150 + dw PokedexRatingText_44247 + db 152 + dw PokedexRatingText_4424c -CoordsData_6055e: ; 6055e (18:455e) - db $05,$0F - db $06,$0E - db $0F ; isn't this supposed to end in $ff? +PokedexRatingText_44201: ; 44201 (11:4201) + TX_FAR _OaksLabText_44201 + db "@" -PokemonTower2Script1: ; 60563 (18:4563) - ld a, [$d057] - cp $ff - jp z, Func_604fe - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld hl, $d764 - set 7, [hl] - ld a, $1 - ld [$ff8c], a - call DisplayTextID - ld de, MovementData_605b2 - ld a, [$d764] - bit 6, a - jr nz, .asm_60589 ; 0x60584 $3 - ld de, MovementData_605a9 -.asm_60589 - ld a, $1 - ld [$ff8c], a - call MoveSprite - ld a, $ff - ld [$c0ee], a - call PlaySound - ld b, BANK(Music_RivalAlternateStart) - ld hl, Music_RivalAlternateStart - call Bankswitch - ld a, $2 - ld [W_POKEMONTOWER2CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret +PokedexRatingText_44206: ; 44206 (11:4206) + TX_FAR _OaksLabText_44206 + db "@" -MovementData_605a9: ; 605a9 (18:45a9) - db $C0,$00,$00,$C0,$00,$00,$C0,$C0,$FF +PokedexRatingText_4420b: ; 4420b (11:420b) + TX_FAR _OaksLabText_4420b + db "@" -MovementData_605b2: ; 605b2 (18:45b2) - db $00,$00,$C0,$C0,$C0,$C0,$00,$00,$FF +PokedexRatingText_44210: ; 44210 (11:4210) + TX_FAR _OaksLabText_44210 + db "@" -PokemonTower2Script2: ; 605bb (18:45bb) - ld a, [$d730] - bit 0, a - ret nz - ld a, $38 - ld [$cc4d], a - ld a, $11 - call Predef - xor a - ld [wJoypadForbiddenButtonsMask], a - call Func_2307 - ld a, $0 - ld [W_POKEMONTOWER2CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret +PokedexRatingText_44215: ; 44215 (11:4215) + TX_FAR _OaksLabText_44215 + db "@" -PokemonTower2TextPointers: ; 605db (18:45db) - dw PokemonTower2Text1 - dw PokemonTower2Text2 +PokedexRatingText_4421a: ; 4421a (11:421a) + TX_FAR _OaksLabText_4421a + db "@" -PokemonTower2Text1: ; 605df (18:45df) - db $08 ; asm - ld a, [$d764] - bit 7, a - jr z, .asm_16f24 ; 0x605e5 - ld hl, UnnamedText_6063c - call PrintText - jr .asm_41852 ; 0x605ed -.asm_16f24 ; 0x605ef - ld hl, UnnamedText_6062d - call PrintText - ld hl, $d72d - set 6, [hl] - set 7, [hl] - ld hl, UnnamedText_60632 - ld de, UnnamedText_60637 ; XXX $4637 - call PreBattleSaveRegisters - ld a, SONY2 + $c8 - ld [W_CUROPPONENT], a +PokedexRatingText_4421f: ; 4421f (11:421f) + TX_FAR _OaksLabText_4421f + db "@" - ; select which team to use during the encounter - ld a, [W_RIVALSTARTER] - cp SQUIRTLE - jr nz, .NotSquirtle ; 0x6060f - ld a, $4 - jr .done -.NotSquirtle ; 0x60615 - cp BULBASAUR - jr nz, .Charmander ; 0x60617 - ld a, $5 - jr .done -.Charmander ; 0x6061d - ld a, $6 -.done - ld [W_TRAINERNO], a +PokedexRatingText_44224: ; 44224 (11:4224) + TX_FAR _OaksLabText_44224 + db "@" - ld a, $1 - ld [W_POKEMONTOWER2CURSCRIPT], a - ld [W_CURMAPSCRIPT], a -.asm_41852 ; 0x6062a - jp TextScriptEnd +PokedexRatingText_44229: ; 44229 (11:4229) + TX_FAR _OaksLabText_44229 + db "@" -UnnamedText_6062d: ; 6062d (18:462d) - TX_FAR _UnnamedText_6062d +PokedexRatingText_4422e: ; 4422e (11:422e) + TX_FAR _OaksLabText_4422e db "@" -UnnamedText_60632: ; 60632 (18:4632) - TX_FAR _UnnamedText_60632 +PokedexRatingText_44233: ; 44233 (11:4233) + TX_FAR _OaksLabText_44233 db "@" -UnnamedText_60637: ; 60637 (18:4637) - TX_FAR _UnnamedText_60637 +PokedexRatingText_44238: ; 44238 (11:4238) + TX_FAR _OaksLabText_44238 db "@" -UnnamedText_6063c: ; 6063c (18:463c) - TX_FAR _UnnamedText_6063c +PokedexRatingText_4423d: ; 4423d (11:423d) + TX_FAR _OaksLabText_4423d db "@" -PokemonTower2Text2: ; 60641 (18:4641) - TX_FAR _PokemonTower2Text2 +PokedexRatingText_44242: ; 44242 (11:4242) + TX_FAR _OaksLabText_44242 db "@" -INCLUDE "data/mapObjects/pokemontower2.asm" +PokedexRatingText_44247: ; 44247 (11:4247) + TX_FAR _OaksLabText_44247 + db "@" -PokemonTower2Blocks: ; 60666 (18:4666) - INCBIN "maps/pokemontower2.blk" +PokedexRatingText_4424c: ; 4424c (11:424c) + TX_FAR _OaksLabText_4424c + db "@" -INCLUDE "data/mapHeaders/pokemontower3.asm" +INCLUDE "data/mapHeaders/viridianpokecenter.asm" -PokemonTower3Script: ; 606cc (18:46cc) - call EnableAutoTextBoxDrawing - ld hl, PokemonTower3TrainerHeaders - ld de, PokemonTower3ScriptPointers - ld a, [W_POKEMONTOWER3CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_POKEMONTOWER3CURSCRIPT], a - ret - -PokemonTower3ScriptPointers: ; 606df (18:46df) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -PokemonTower3TextPointers: ; 606e5 (18:46e5) - dw PokemonTower3Text1 - dw PokemonTower3Text2 - dw PokemonTower3Text3 - dw Predef5CText - -PokemonTower3TrainerHeaders: ; 606ed (18:46ed) -PokemonTower3TrainerHeader0: ; 606ed (18:46ed) - db $1 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d765 ; flag's byte - dw PokemonTower3BattleText1 ; 0x4730 TextBeforeBattle - dw PokemonTower3AfterBattleText1 ; 0x473a TextAfterBattle - dw PokemonTower3EndBattleText1 ; 0x4735 TextEndBattle - dw PokemonTower3EndBattleText1 ; 0x4735 TextEndBattle - -PokemonTower3TrainerHeader1: ; 606f9 (18:46f9) - db $2 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d765 ; flag's byte - dw PokemonTower3BattleText2 ; 0x473f TextBeforeBattle - dw PokemonTower3AfterBattleText2 ; 0x4749 TextAfterBattle - dw PokemonTower3EndBattleText2 ; 0x4744 TextEndBattle - dw PokemonTower3EndBattleText2 ; 0x4744 TextEndBattle - -PokemonTower3TrainerHeader2: ; 60705 (18:4705) - db $3 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d765 ; flag's byte - dw PokemonTower3BattleText3 ; 0x474e TextBeforeBattle - dw PokemonTower3AfterBattleText3 ; 0x4758 TextAfterBattle - dw PokemonTower3EndBattleText3 ; 0x4753 TextEndBattle - dw PokemonTower3EndBattleText3 ; 0x4753 TextEndBattle - db $ff +INCLUDE "scripts/viridianpokecenter.asm" -PokemonTower3Text1: ; 60712 (18:4712) - db $08 ; asm - ld hl, PokemonTower3TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapObjects/viridianpokecenter.asm" -PokemonTower3Text2: ; 6071c (18:471c) - db $08 ; asm - ld hl, PokemonTower3TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapHeaders/mansion1.asm" -PokemonTower3Text3: ; 60726 (18:4726) - db $08 ; asm - ld hl, PokemonTower3TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "scripts/mansion1.asm" -PokemonTower3BattleText1: ; 60730 (18:4730) - TX_FAR _PokemonTower3BattleText1 - db "@" +INCLUDE "data/mapObjects/mansion1.asm" -PokemonTower3EndBattleText1: ; 60735 (18:4735) - TX_FAR _PokemonTower3EndBattleText1 - db "@" +Mansion1Blocks: ; 443fe (11:43fe) + INCBIN "maps/mansion1.blk" -PokemonTower3AfterBattleText1: ; 6073a (18:473a) - TX_FAR _PokemonTower3AfterBattleText1 - db "@" +INCLUDE "data/mapHeaders/rocktunnel1.asm" -PokemonTower3BattleText2: ; 6073f (18:473f) - TX_FAR _PokemonTower3BattleText2 - db "@" +INCLUDE "scripts/rocktunnel1.asm" -PokemonTower3EndBattleText2: ; 60744 (18:4744) - TX_FAR _PokemonTower3EndBattleText2 - db "@" +INCLUDE "data/mapObjects/rocktunnel1.asm" -PokemonTower3AfterBattleText2: ; 60749 (18:4749) - TX_FAR _PokemonTower3AfterBattleText2 - db "@" +RockTunnel1Blocks: ; 44675 (11:4675) + INCBIN "maps/rocktunnel1.blk" -PokemonTower3BattleText3: ; 6074e (18:474e) - TX_FAR _PokemonTower3BattleText3 - db "@" +INCLUDE "data/mapHeaders/seafoamislands1.asm" -PokemonTower3EndBattleText3: ; 60753 (18:4753) - TX_FAR _PokemonTower3EndBattleText3 - db "@" +INCLUDE "scripts/seafoamislands1.asm" -PokemonTower3AfterBattleText3: ; 60758 (18:4758) - TX_FAR _PokemonTower3AfterBattleText3 - db "@" +INCLUDE "data/mapObjects/seafoamislands1.asm" -INCLUDE "data/mapObjects/pokemontower3.asm" +SeafoamIslands1Blocks: ; 4489f (11:489f) + INCBIN "maps/seafoamislands1.blk" -PokemonTower3Blocks: ; 60790 (18:4790) - INCBIN "maps/pokemontower3.blk" +INCLUDE "data/mapHeaders/ssanne3.asm" -INCLUDE "data/mapHeaders/pokemontower4.asm" +INCLUDE "scripts/ssanne3.asm" -PokemonTower4Script: ; 607f6 (18:47f6) - call EnableAutoTextBoxDrawing - ld hl, PokemonTower4TrainerHeaders - ld de, PokemonTower4ScriptPointers - ld a, [W_POKEMONTOWER4CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_POKEMONTOWER4CURSCRIPT], a - ret - -PokemonTower4ScriptPointers: ; 60809 (18:4809) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -PokemonTower4TextPointers: ; 6080f (18:480f) - dw PokemonTower4Text1 - dw PokemonTower4Text2 - dw PokemonTower4Text3 - dw Predef5CText - dw Predef5CText - dw Predef5CText - -PokemonTower4TrainerHeaders: ; 6081b (18:481b) -PokemonTower4TrainerHeader0: ; 6081b (18:481b) - db $1 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d766 ; flag's byte - dw PokemonTower4BattleText1 ; 0x485e TextBeforeBattle - dw PokemonTower4AfterBattleText1 ; 0x4868 TextAfterBattle - dw PokemonTower4EndBattleText1 ; 0x4863 TextEndBattle - dw PokemonTower4EndBattleText1 ; 0x4863 TextEndBattle - -PokemonTower4TrainerHeader1: ; 60827 (18:4827) - db $2 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d766 ; flag's byte - dw PokemonTower4BattleText2 ; 0x486d TextBeforeBattle - dw PokemonTower4AfterBattleText2 ; 0x4877 TextAfterBattle - dw PokemonTower4EndBattleText2 ; 0x4872 TextEndBattle - dw PokemonTower4EndBattleText2 ; 0x4872 TextEndBattle - -PokemonTower4TrainerHeader2: ; 60833 (18:4833) - db $3 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d766 ; flag's byte - dw PokemonTower4BattleText3 ; 0x487c TextBeforeBattle - dw PokemonTower4AfterBattleText3 ; 0x4886 TextAfterBattle - dw PokemonTower4EndBattleText3 ; 0x4881 TextEndBattle - dw PokemonTower4EndBattleText3 ; 0x4881 TextEndBattle +INCLUDE "data/mapObjects/ssanne3.asm" - db $ff +SSAnne3Blocks: ; 44956 (11:4956) + INCBIN "maps/ssanne3.blk" -PokemonTower4Text1: ; 60840 (18:4840) - db $08 ; asm - ld hl, PokemonTower4TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapHeaders/victoryroad3.asm" -PokemonTower4Text2: ; 6084a (18:484a) - db $08 ; asm - ld hl, PokemonTower4TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "scripts/victoryroad3.asm" -PokemonTower4Text3: ; 60854 (18:4854) - db $08 ; asm - ld hl, PokemonTower4TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapObjects/victoryroad3.asm" -PokemonTower4BattleText1: ; 6085e (18:485e) - TX_FAR _PokemonTower4BattleText1 - db "@" +VictoryRoad3Blocks: ; 44b37 (11:4b37) + INCBIN "maps/victoryroad3.blk" -PokemonTower4EndBattleText1: ; 60863 (18:4863) - TX_FAR _PokemonTower4EndBattleText1 - db "@" +INCLUDE "data/mapHeaders/rockethideout1.asm" -PokemonTower4AfterBattleText1: ; 60868 (18:4868) - TX_FAR _PokemonTower4AfterBattleText1 - db "@" +INCLUDE "scripts/rockethideout1.asm" -PokemonTower4BattleText2: ; 6086d (18:486d) - TX_FAR _PokemonTower4BattleText2 - db "@" +INCLUDE "data/mapObjects/rockethideout1.asm" -PokemonTower4EndBattleText2: ; 60872 (18:4872) - TX_FAR _PokemonTower4EndBattleText2 - db "@" +RocketHideout1Blocks: ; 44d49 (11:4d49) + INCBIN "maps/rockethideout1.blk" -PokemonTower4AfterBattleText2: ; 60877 (18:4877) - TX_FAR _PokemonTower4AfterBattleText2 - db "@" +INCLUDE "data/mapHeaders/rockethideout2.asm" -PokemonTower4BattleText3: ; 6087c (18:487c) - TX_FAR _PokemonTower4BattleText3 - db "@" +INCLUDE "scripts/rockethideout2.asm" -PokemonTower4EndBattleText3: ; 60881 (18:4881) - TX_FAR _PokemonTower4EndBattleText3 - db "@" +INCLUDE "data/mapObjects/rockethideout2.asm" -PokemonTower4AfterBattleText3: ; 60886 (18:4886) - TX_FAR _PokemonTower4AfterBattleText3 - db "@" +RocketHideout2Blocks: ; 45147 (11:5147) + INCBIN "maps/rockethideout2.blk" -INCLUDE "data/mapObjects/pokemontower4.asm" +INCLUDE "data/mapHeaders/rockethideout3.asm" -PokemonTower4Blocks: ; 608cc (18:48cc) - INCBIN "maps/pokemontower4.blk" +INCLUDE "scripts/rockethideout3.asm" -INCLUDE "data/mapHeaders/pokemontower5.asm" +INCLUDE "data/mapObjects/rockethideout3.asm" -PokemonTower5Script: ; 60932 (18:4932) - call EnableAutoTextBoxDrawing - ld hl, PokemonTower5TrainerHeaders - ld de, PokemonTower5ScriptPointers - ld a, [W_POKEMONTOWER5CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_POKEMONTOWER5CURSCRIPT], a - ret +RocketHideout3Blocks: ; 4537f (11:537f) + INCBIN "maps/rockethideout3.blk" -PokemonTower5ScriptPointers: ; 60945 (18:4945) - dw PokemonTower5Script0 - dw Func_324c - dw EndTrainerBattle +INCLUDE "data/mapHeaders/rockethideout4.asm" -PokemonTower5Script0: ; 6094b (18:494b) - ld hl, CoordsData_60992 ; $4992 - call ArePlayerCoordsInArray - jr c, .asm_60960 - ld hl, $d72e - res 4, [hl] - ld hl, $d767 - res 7, [hl] - jp CheckFightingMapTrainers -.asm_60960 - ld hl, $d767 - bit 7, [hl] - set 7, [hl] - ret nz - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld hl, $d72e - set 4, [hl] - ld a, $7 - call Predef ; indirect jump to HealParty (f6a5 (3:76a5)) - call GBFadeOut2 - call Delay3 - call Delay3 - call GBFadeIn2 - ld a, $7 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - xor a - ld [wJoypadForbiddenButtonsMask], a - ret +INCLUDE "scripts/rockethideout4.asm" -CoordsData_60992: ; 60992 (18:4992) - db $08,$0A - db $08,$0B - db $09,$0A - db $09,$0B - db $FF +INCLUDE "data/mapObjects/rockethideout4.asm" -PokemonTower5TextPointers: ; 6099b (18:499b) - dw PokemonTower5Text1 - dw PokemonTower5Text2 - dw PokemonTower5Text3 - dw PokemonTower5Text4 - dw PokemonTower5Text5 - dw Predef5CText - dw PokemonTower5Text7 - -PokemonTower5TrainerHeaders: ; 609a9 (18:49a9) -PokemonTower5TrainerHeader0: ; 609a9 (18:49a9) - db $2 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d767 ; flag's byte - dw PokemonTower5BattleText1 ; 0x49e9 TextBeforeBattle - dw PokemonTower5AfterBattleText1 ; 0x49f3 TextAfterBattle - dw PokemonTower5EndBattleText1 ; 0x49ee TextEndBattle - dw PokemonTower5EndBattleText1 ; 0x49ee TextEndBattle - -PokemonTower5TrainerHeader1: ; 609b5 (18:49b5) - db $3 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d767 ; flag's byte - dw PokemonTower5BattleText2 ; 0x4a02 TextBeforeBattle - dw PokemonTower5AfterBattleText2 ; 0x4a0c TextAfterBattle - dw PokemonTower5EndBattleText2 ; 0x4a07 TextEndBattle - dw PokemonTower5EndBattleText2 ; 0x4a07 TextEndBattle - -PokemonTower5TrainerHeader2: ; 609c1 (18:49c1) - db $4 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d767 ; flag's byte - dw PokemonTower5BattleText3 ; 0x4a1b TextBeforeBattle - dw PokemonTower5AfterBattleText3 ; 0x4a25 TextAfterBattle - dw PokemonTower5EndBattleText3 ; 0x4a20 TextEndBattle - dw PokemonTower5EndBattleText3 ; 0x4a20 TextEndBattle - -PokemonTower5TrainerHeader3: ; 609cd (18:49cd) - db $5 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d767 ; flag's byte - dw PokemonTower5BattleText4 ; 0x4a34 TextBeforeBattle - dw PokemonTower5AfterBattleText4 ; 0x4a3e TextAfterBattle - dw PokemonTower5EndBattleText4 ; 0x4a39 TextEndBattle - dw PokemonTower5EndBattleText4 ; 0x4a39 TextEndBattle +RocketHideout4Blocks: ; 45650 (11:5650) + INCBIN "maps/rockethideout4.blk" - db $ff +INCLUDE "data/mapHeaders/rockethideoutelevator.asm" -PokemonTower5Text1: ; 609da (18:49da) - TX_FAR _PokemonTower5Text1 - db "@" +INCLUDE "scripts/rockethideoutelevator.asm" -PokemonTower5Text2: ; 609df (18:49df) - db $08 ; asm - ld hl, PokemonTower5TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapObjects/rockethideoutelevator.asm" -PokemonTower5BattleText1: ; 609e9 (18:49e9) - TX_FAR _PokemonTower5BattleText1 - db "@" +RocketHideoutElevatorBlocks: ; 457a8 (11:57a8) + INCBIN "maps/rockethideoutelevator.blk" -PokemonTower5EndBattleText1: ; 609ee (18:49ee) - TX_FAR _PokemonTower5EndBattleText1 - db "@" +INCLUDE "data/mapHeaders/silphcoelevator.asm" -PokemonTower5AfterBattleText1: ; 609f3 (18:49f3) - TX_FAR _PokemonTower5AfterBattleText1 - db "@" +INCLUDE "scripts/silphcoelevator.asm" -PokemonTower5Text3: ; 609f8 (18:49f8) - db $08 ; asm - ld hl, PokemonTower5TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapObjects/silphcoelevator.asm" -PokemonTower5BattleText2: ; 60a02 (18:4a02) - TX_FAR _PokemonTower5BattleText2 - db "@" +SilphCoElevatorBlocks: ; 4585b (11:585b) + INCBIN "maps/silphcoelevator.blk" -PokemonTower5EndBattleText2: ; 60a07 (18:4a07) - TX_FAR _PokemonTower5EndBattleText2 - db "@" +INCLUDE "data/mapHeaders/safarizoneeast.asm" -PokemonTower5AfterBattleText2: ; 60a0c (18:4a0c) - TX_FAR _PokemonTower5AfterBattleText2 - db "@" +INCLUDE "scripts/safarizoneeast.asm" -PokemonTower5Text4: ; 60a11 (18:4a11) - db $08 ; asm - ld hl, PokemonTower5TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapObjects/safarizoneeast.asm" -PokemonTower5BattleText3: ; 60a1b (18:4a1b) - TX_FAR _PokemonTower5BattleText3 - db "@" +SafariZoneEastBlocks: ; 458dc (11:58dc) + INCBIN "maps/safarizoneeast.blk" -PokemonTower5EndBattleText3: ; 60a20 (18:4a20) - TX_FAR _PokemonTower5EndBattleText3 - db "@" +INCLUDE "data/mapHeaders/safarizonenorth.asm" -PokemonTower5AfterBattleText3: ; 60a25 (18:4a25) - TX_FAR _PokemonTower5AfterBattleText3 - db "@" +INCLUDE "scripts/safarizonenorth.asm" -PokemonTower5Text5: ; 60a2a (18:4a2a) - db $08 ; asm - ld hl, PokemonTower5TrainerHeader3 ; $49cd - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapObjects/safarizonenorth.asm" -PokemonTower5BattleText4: ; 60a34 (18:4a34) - TX_FAR _PokemonTower5BattleText4 - db "@" +SafariZoneNorthBlocks: ; 45a3e (11:5a3e) + INCBIN "maps/safarizonenorth.blk" -PokemonTower5EndBattleText4: ; 60a39 (18:4a39) - TX_FAR _PokemonTower5EndBattleText4 - db "@" +INCLUDE "data/mapHeaders/safarizonecenter.asm" -PokemonTower5AfterBattleText4: ; 60a3e (18:4a3e) - TX_FAR _PokemonTower5AfterBattleText4 - db "@" +INCLUDE "scripts/safarizonecenter.asm" -PokemonTower5Text7: ; 60a43 (18:4a43) - TX_FAR _UnnamedText_60a43 - db "@" +INCLUDE "data/mapObjects/safarizonecenter.asm" -INCLUDE "data/mapObjects/pokemontower5.asm" +SafariZoneCenterBlocks: ; 45c1e (11:5c1e) + INCBIN "maps/safarizonecenter.blk" -PokemonTower5Blocks: ; 60a89 (18:4a89) - INCBIN "maps/pokemontower5.blk" +INCLUDE "data/mapHeaders/safarizoneresthouse1.asm" -INCLUDE "data/mapHeaders/pokemontower6.asm" +INCLUDE "scripts/safarizoneresthouse1.asm" -PokemonTower6Script: ; 60aef (18:4aef) - call EnableAutoTextBoxDrawing - ld hl, PokemonTower6TrainerHeaders - ld de, PokemonTower6ScriptPointers - ld a, [W_POKEMONTOWER6CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_POKEMONTOWER6CURSCRIPT], a - ret +INCLUDE "data/mapObjects/safarizoneresthouse1.asm" -Func_60b02: ; 60b02 (18:4b02) - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_POKEMONTOWER6CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret +INCLUDE "data/mapHeaders/safarizoneresthouse2.asm" -PokemonTower6ScriptPointers: ; 60b0d (18:4b0d) - dw PokemonTower6Script0 - dw Func_324c - dw EndTrainerBattle - dw PokemonTower6Script3 - dw PokemonTower6Script4 +INCLUDE "scripts/safarizoneresthouse2.asm" -PokemonTower6Script0: ; 60b17 (18:4b17) - ld a, [$d768] - bit 7, a - jp nz, CheckFightingMapTrainers - ld hl, CoordsData_60b45 ; $4b45 - call ArePlayerCoordsInArray - jp nc, CheckFightingMapTrainers - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, $6 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld a, MAROWAK - ld [W_CUROPPONENT], a ; $d059 - ld a, 30 - ld [W_CURENEMYLVL], a ; $d127 - ld a, $4 - ld [W_POKEMONTOWER6CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret +INCLUDE "data/mapObjects/safarizoneresthouse2.asm" -CoordsData_60b45: ; 60b45 (18:4b45) - db $10,$0A,$FF +INCLUDE "data/mapHeaders/safarizoneresthouse3.asm" -PokemonTower6Script4: ; 60b48 (18:4b48) - ld a, [W_ISINBATTLE] ; $d057 - cp $ff - jp z, Func_60b02 - ld a, $ff - ld [wJoypadForbiddenButtonsMask], a - ld a, [$d72d] - bit 6, a - ret nz - call UpdateSprites - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld a, [$cf0b] - and a - jr nz, .asm_60b82 - ld hl, $d768 - set 7, [hl] - ld a, $7 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $0 - ld [W_POKEMONTOWER6CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret -.asm_60b82 - ld a, $1 - ld [$cd38], a - ld a, $10 - ld [$ccd3], a - xor a - ld [$c206], a - ld [$cd3b], a - ld hl, $d730 - set 7, [hl] - ld a, $3 - ld [W_POKEMONTOWER6CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret +INCLUDE "scripts/safarizoneresthouse3.asm" -PokemonTower6Script3: ; 60ba1 (18:4ba1) - ld a, [$cd38] - and a - ret nz - call Delay3 - xor a - ld [W_POKEMONTOWER6CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret +INCLUDE "data/mapObjects/safarizoneresthouse3.asm" -PokemonTower6TextPointers: ; 60bb1 (18:4bb1) - dw PokemonTower6Text1 - dw PokemonTower6Text2 - dw PokemonTower6Text3 - dw Predef5CText - dw Predef5CText - dw PokemonTower6Text6 - dw PokemonTower6Text7 - -PokemonTower6TrainerHeaders: ; 60bbf (18:4bbf) -PokemonTower6TrainerHeader0: ; 60bbf (18:4bbf) - db $1 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d768 ; flag's byte - dw PokemonTower6BattleText1 ; 0x4c29 TextBeforeBattle - dw PokemonTower6AfterBattleText1 ; 0x4c33 TextAfterBattle - dw PokemonTower6EndBattleText1 ; 0x4c2e TextEndBattle - dw PokemonTower6EndBattleText1 ; 0x4c2e TextEndBattle - -PokemonTower6TrainerHeader1: ; 60bcb (18:4bcb) - db $2 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d768 ; flag's byte - dw PokemonTower6BattleText2 ; 0x4c38 TextBeforeBattle - dw PokemonTower6AfterBattleText2 ; 0x4c42 TextAfterBattle - dw PokemonTower6EndBattleText2 ; 0x4c3d TextEndBattle - dw PokemonTower6EndBattleText2 ; 0x4c3d TextEndBattle - -PokemonTower6TrainerHeader2: ; 60bd7 (18:4bd7) - db $3 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d768 ; flag's byte - dw PokemonTower6BattleText3 ; 0x4c47 TextBeforeBattle - dw PokemonTower6AfterBattleText3 ; 0x4c51 TextAfterBattle - dw PokemonTower6EndBattleText3 ; 0x4c4c TextEndBattle - dw PokemonTower6EndBattleText3 ; 0x4c4c TextEndBattle +INCLUDE "data/mapHeaders/safarizoneresthouse4.asm" - db $ff +INCLUDE "scripts/safarizoneresthouse4.asm" -PokemonTower6Text1: ; 60be4 (18:4be4) - db $08 ; asm - ld hl, PokemonTower6TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapObjects/safarizoneresthouse4.asm" -PokemonTower6Text2: ; 60bee (18:4bee) - db $08 ; asm - ld hl, PokemonTower6TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapHeaders/unknowndungeon2.asm" -PokemonTower6Text3: ; 60bf8 (18:4bf8) - db $08 ; asm - ld hl, PokemonTower6TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "scripts/unknowndungeon2.asm" -PokemonTower6Text7: ; 60c02 (18:4c02) - db $8 - ld hl, UnnamedText_60c1f - call PrintText - ld a, MAROWAK - call PlayCry - call WaitForSoundToFinish - ld c, $1e - call DelayFrames - ld hl, UnnamedText_60c24 - call PrintText - jp TextScriptEnd +INCLUDE "data/mapObjects/unknowndungeon2.asm" -UnnamedText_60c1f: ; 60c1f (18:4c1f) - TX_FAR _UnnamedText_60c1f - db "@" +UnknownDungeon2Blocks: ; 45e5d (11:5e5d) + INCBIN "maps/unknowndungeon2.blk" -UnnamedText_60c24: ; 60c24 (18:4c24) - TX_FAR _UnnamedText_60c24 - db "@" +INCLUDE "data/mapHeaders/unknowndungeon3.asm" -PokemonTower6BattleText1: ; 60c29 (18:4c29) - TX_FAR _PokemonTower6BattleText1 - db "@" +INCLUDE "scripts/unknowndungeon3.asm" -PokemonTower6EndBattleText1: ; 60c2e (18:4c2e) - TX_FAR _PokemonTower6EndBattleText1 - db "@" +INCLUDE "data/mapObjects/unknowndungeon3.asm" -PokemonTower6AfterBattleText1: ; 60c33 (18:4c33) - TX_FAR _PokemonTower6AfterBattleText1 - db "@" +UnknownDungeon3Blocks: ; 45f58 (11:5f58) + INCBIN "maps/unknowndungeon3.blk" -PokemonTower6BattleText2: ; 60c38 (18:4c38) - TX_FAR _PokemonTower6BattleText2 - db "@" +INCLUDE "data/mapHeaders/rocktunnel2.asm" -PokemonTower6EndBattleText2: ; 60c3d (18:4c3d) - TX_FAR _PokemonTower6EndBattleText2 - db "@" +INCLUDE "scripts/rocktunnel2.asm" -PokemonTower6AfterBattleText2: ; 60c42 (18:4c42) - TX_FAR _PokemonTower6AfterBattleText2 - db "@" +INCLUDE "data/mapObjects/rocktunnel2.asm" -PokemonTower6BattleText3: ; 60c47 (18:4c47) - TX_FAR _PokemonTower6BattleText3 - db "@" +RockTunnel2Blocks: ; 461a1 (11:61a1) + INCBIN "maps/rocktunnel2.blk" -PokemonTower6EndBattleText3: ; 60c4c (18:4c4c) - TX_FAR _PokemonTower6EndBattleText3 - db "@" +INCLUDE "data/mapHeaders/seafoamislands2.asm" -PokemonTower6AfterBattleText3: ; 60c51 (18:4c51) - TX_FAR _PokemonTower6AfterBattleText3 - db "@" +INCLUDE "scripts/seafoamislands2.asm" -PokemonTower6Text6: ; 60c56 (18:4c56) - TX_FAR _UnnamedText_60c56 - db "@" +INCLUDE "data/mapObjects/seafoamislands2.asm" -INCLUDE "data/mapObjects/pokemontower6.asm" +SeafoamIslands2Blocks: ; 463be (11:63be) + INCBIN "maps/seafoamislands2.blk" -PokemonTower6Blocks: ; 60c95 (18:4c95) - INCBIN "maps/pokemontower6.blk" +INCLUDE "data/mapHeaders/seafoamislands3.asm" - INCBIN "maps/unusedblocks60cef.blk" +INCLUDE "scripts/seafoamislands3.asm" -INCLUDE "data/mapHeaders/pokemontower7.asm" +INCLUDE "data/mapObjects/seafoamislands3.asm" -PokemonTower7Script: ; 60d05 (18:4d05) - call EnableAutoTextBoxDrawing - ld hl, PokemonTower7TrainerHeaders - ld de, PokemonTower7ScriptPointers - ld a, [W_POKEMONTOWER7CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_POKEMONTOWER7CURSCRIPT], a - ret +SeafoamIslands3Blocks: ; 464fa (11:64fa) + INCBIN "maps/seafoamislands3.blk" -Func_60d18: ; 60d18 (18:4d18) - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_POKEMONTOWER7CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret +INCLUDE "data/mapHeaders/seafoamislands4.asm" -PokemonTower7ScriptPointers: ; 60d23 (18:4d23) - dw CheckFightingMapTrainers - dw Func_324c - dw PokemonTower7Script2 - dw PokemonTower7Script3 - dw PokemonTower7Script4 +INCLUDE "scripts/seafoamislands4.asm" -PokemonTower7Script2: ; 60d23 (18:4d23) - ld hl, wFlags_0xcd60 - res 0, [hl] - ld a, [W_ISINBATTLE] ; $d057 - cp $ff - jp z, Func_60d18 - call EndTrainerBattle - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld a, [$cf13] - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - call Func_60db6 - ld a, $3 - ld [W_POKEMONTOWER7CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret +INCLUDE "data/mapObjects/seafoamislands4.asm" -PokemonTower7Script3: ; 60d56 (18:4d56) - ld a, [$d730] - bit 0, a +SeafoamIslands4Blocks: ; 46706 (11:6706) + INCBIN "maps/seafoamislands4.blk" + +INCLUDE "data/mapHeaders/seafoamislands5.asm" + +INCLUDE "scripts/seafoamislands5.asm" + +INCLUDE "data/mapObjects/seafoamislands5.asm" + +SeafoamIslands5Blocks: ; 468fa (11:68fa) + INCBIN "maps/seafoamislands5.blk" + +Func_46981: ; 46981 (11:6981) + xor a + ld [$d71e], a + ld a, [$d72d] + bit 4, a ret nz - ld hl, W_MISSABLEOBJECTLIST - ld a, [$cf13] - ld b, a -.missableObjectsListLoop + call ArePlayerCoordsInArray + ret nc + ld a, [wWhichTrade] ; $cd3d + ld [$d71e], a + ld hl, $d72d + set 4, [hl] + ld hl, $d732 + set 4, [hl] + ret + +Func_469a0: ; 469a0 (11:69a0) + ld hl, $ffeb + xor a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld de, $0 + ld hl, HiddenObjectMaps ; $6a40 +.asm_469ae ld a, [hli] - cp b ; search for sprite ID in missing objects list + ld b, a + cp $ff + jr z, .asm_469fc + ld a, [W_CURMAP] ; $d35e + cp b + jr z, .asm_469be + inc de + inc de + jr .asm_469ae +.asm_469be + ld hl, HiddenObjectPointers ; $6a96 + add hl, de ld a, [hli] - jr nz, .missableObjectsListLoop - ld [$cc4d], a ; remove missable object - ld a, $11 - call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) + ld h, [hl] + ld l, a + push hl + ld hl, wWhichTrade ; $cd3d xor a - ld [wJoypadForbiddenButtonsMask], a - ld [$cf13], a - ld [wTrainerHeaderFlagBit], a - ld [$da38], a - ld a, $0 - ld [W_POKEMONTOWER7CURSCRIPT], a - ld [W_CURMAPSCRIPT], a + ld [hli], a + ld [hli], a + ld [hl], a + pop hl +.asm_469ce + ld a, [hli] + cp $ff + jr z, .asm_469fc + ld [$cd40], a + ld b, a + ld a, [hli] + ld [$cd41], a + ld c, a + call Func_46a01 + ld a, [$ffea] + and a + jr z, .asm_469f0 + inc hl + inc hl + inc hl + inc hl + push hl + ld hl, $cd3f + inc [hl] + pop hl + jr .asm_469ce +.asm_469f0 + ld a, [hli] + ld [wWhichTrade], a ; $cd3d + ld a, [hli] + ld [$cd3e], a + ld a, [hli] + ld h, [hl] + ld l, a ret - -PokemonTower7Script4: ; 60d86 (18:4d86) +.asm_469fc ld a, $ff - ld [wJoypadForbiddenButtonsMask], a - ld a, $43 - ld [$cc4d], a - ld a, $11 - call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) - ld a, $4 - ld [$c109], a - ld a, $95 - ld [H_DOWNARROWBLINKCNT1], a ; $ff8b - ld a, $1 - ld [$d42f], a - ld a, $4 - ld [$d365], a - ld hl, $d72d - set 3, [hl] - ld a, $0 - ld [W_POKEMONTOWER7CURSCRIPT], a - ld [W_CURMAPSCRIPT], a + ld [$ffee], a ret -Func_60db6: ; 60db6 (18:4db6) - ld hl, CoordsData_60de3 ; $4de3 - ld a, [$cf13] - dec a - swap a - ld d, $0 - ld e, a - add hl, de +Func_46a01: ; 46a01 (11:6a01) + ld a, [$c109] + cp $4 + jr z, .asm_46a16 + cp $8 + jr z, .asm_46a25 + cp $c + jr z, .asm_46a2b ld a, [W_YCOORD] ; $d361 - ld b, a + inc a + jr .asm_46a1a +.asm_46a16 + ld a, [W_YCOORD] ; $d361 + dec a +.asm_46a1a + cp b + jr nz, .asm_46a3b + ld a, [W_XCOORD] ; $d362 + cp c + jr nz, .asm_46a3b + jr .asm_46a38 +.asm_46a25 ld a, [W_XCOORD] ; $d362 - ld c, a -.asm_60dcb - ld a, [hli] - cp b - jr nz, .asm_60dde - ld a, [hli] + dec a + jr .asm_46a2f +.asm_46a2b + ld a, [W_XCOORD] ; $d362 + inc a +.asm_46a2f cp c - jr nz, .asm_60ddf - ld a, [hli] - ld d, [hl] - ld e, a - ld a, [$cf13] - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - jp MoveSprite -.asm_60dde - inc hl -.asm_60ddf - inc hl - inc hl - jr .asm_60dcb - -CoordsData_60de3: ; 60de3 (18:4de3) - db $0C,$09 - dw MovementData_60e13 - db $0B,$0A - dw MovementData_60e1b - db $0B,$0B - dw MovementData_60e22 - db $0B,$0C - dw MovementData_60e22 - db $0A,$0C - dw MovementData_60e28 - db $09,$0B - dw MovementData_60e30 - db $09,$0A - dw MovementData_60e22 - db $09,$09 - dw MovementData_60e22 - db $08,$09 - dw MovementData_60e37 - db $07,$0A - dw MovementData_60e22 - db $07,$0B - dw MovementData_60e22 - db $07,$0C - dw MovementData_60e22 - -MovementData_60e13: ; 60e13 - db $C0,$00,$00,$00,$00,$00,$80,$FF - -MovementData_60e1b: ; 60e1b - db $00,$C0,$00,$00,$00,$00,$FF - -MovementData_60e22: ; 60e22 - db $00,$00,$00,$00,$00,$FF - -MovementData_60e28: ; 60e28 - db $80,$00,$00,$00,$00,$00,$00,$FF - -MovementData_60e30: ; 60e30 - db $00,$00,$00,$80,$00,$00,$FF - -MovementData_60e37: ; 60e37 - db $C0,$00,$00,$00,$00,$00,$00,$FF - -PokemonTower7TextPointers: ; 60e3f (18:4e3f) - dw PokemonTower7Text1 - dw PokemonTower7Text2 - dw PokemonTower7Text3 - dw PokemonTower7Text4 - -PokemonTower7TrainerHeaders: ; 60e47 (18:4e47) -PokemonTower7TrainerHeader0: ; 60e47 (18:4e47) - db $1 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d769 ; flag's byte - dw PokemonTower7BattleText1 ; 0x4ec9 TextBeforeBattle - dw PokemonTower7AfterBattleText1 ; 0x4ed3 TextAfterBattle - dw PokemonTower7EndBattleText1 ; 0x4ece TextEndBattle - dw PokemonTower7EndBattleText1 ; 0x4ece TextEndBattle - -PokemonTower7TrainerHeader1: ; 60e53 (18:4e53) - db $2 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d769 ; flag's byte - dw PokemonTower7BattleText2 ; 0x4ed8 TextBeforeBattle - dw PokemonTower7AfterBattleText2 ; 0x4ee2 TextAfterBattle - dw PokemonTower7EndBattleText2 ; 0x4edd TextEndBattle - dw PokemonTower7EndBattleText2 ; 0x4edd TextEndBattle - -PokemonTower7TrainerHeader2: ; 60e5f (18:4e5f) - db $3 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d769 ; flag's byte - dw PokemonTower7BattleText3 ; 0x4ee7 TextBeforeBattle - dw PokemonTower7AfterBattleText3 ; 0x4ef1 TextAfterBattle - dw PokemonTower7EndBattleText3 ; 0x4eec TextEndBattle - dw PokemonTower7EndBattleText3 ; 0x4eec TextEndBattle + jr nz, .asm_46a3b + ld a, [W_YCOORD] ; $d361 + cp b + jr nz, .asm_46a3b +.asm_46a38 + xor a + jr .asm_46a3d +.asm_46a3b + ld a, $ff +.asm_46a3d + ld [$ffea], a + ret - db $ff +INCLUDE "data/hidden_objects.asm" -PokemonTower7Text1: ; 60e6c (18:4e6c) - db $08 ; asm - ld hl, PokemonTower7TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd +SECTION "bank12",ROMX,BANK[$12] -PokemonTower7Text2: ; 60e76 (18:4e76) - db $08 ; asm - ld hl, PokemonTower7TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapHeaders/route7.asm" -PokemonTower7Text3: ; 60e80 (18:4e80) - db $08 ; asm - ld hl, PokemonTower7TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapObjects/route7.asm" -PokemonTower7Text4: ; 60e8a (18:4e8a) - db $08 ; asm - ld hl, UnnamedText_60ec4 - call PrintText - ld hl, $d7e0 - set 7, [hl] - ld hl, $d769 - set 7, [hl] - ld a, $44 - ld [$cc4d], a - ld a, $15 - call Predef - ld a, $17 - ld [$cc4d], a - ld a, $11 - call Predef - ld a, $18 - ld [$cc4d], a - ld a, $15 - call Predef - ld a, $4 - ld [W_POKEMONTOWER7CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - jp TextScriptEnd +Route7Blocks: ; 48051 (12:4051) + INCBIN "maps/route7.blk" -UnnamedText_60ec4: ; 60ec4 (18:4ec4) - TX_FAR _UnnamedText_60ec4 - db "@" +CeladonPokecenterBlocks: ; 480ab (12:40ab) +RockTunnelPokecenterBlocks: ; 480ab (12:40ab) +MtMoonPokecenterBlocks: ; 480ab (12:40ab) + INCBIN "maps/mtmoonpokecenter.blk" -PokemonTower7BattleText1: ; 60ec9 (18:4ec9) - TX_FAR _PokemonTower7BattleText1 - db "@" +Route18GateBlocks: ; 480c7 (12:40c7) +Route15GateBlocks: ; 480c7 (12:40c7) +Route11GateBlocks: ; 480c7 (12:40c7) + INCBIN "maps/route11gate.blk" -PokemonTower7EndBattleText1: ; 60ece (18:4ece) - TX_FAR _PokemonTower7EndBattleText1 - db "@" +Route18GateUpstairsBlocks: ; 480db (12:40db) +Route16GateUpstairsBlocks: ; 480db (12:40db) +Route12GateUpstairsBlocks: ; 480db (12:40db) +Route15GateUpstairsBlocks: ; 480db (12:40db) +Route11GateUpstairsBlocks: ; 480db (12:40db) + INCBIN "maps/route11gateupstairs.blk" -PokemonTower7AfterBattleText1: ; 60ed3 (18:4ed3) - TX_FAR _PokemonTower7AfterBattleText1 - db "@" +Func_480eb: ; 480eb (12:40eb) + call Load16BitRegisters + ld a, [rBGP] ; $ff47 + or b + ld [rBGP], a ; $ff47 + ld c, $4 + call DelayFrames + ld a, [rBGP] ; $ff47 + and $fc + ld [rBGP], a ; $ff47 + ret -PokemonTower7BattleText2: ; 60ed8 (18:4ed8) - TX_FAR _PokemonTower7BattleText2 - db "@" +Func_480ff: ; 480ff (12:40ff) + call Load16BitRegisters + ld a, $1 + ld [$d0a0], a + xor a +.asm_48108 + ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) + call Func_48119 + call Func_48119 + dec b + ld a, b + jr nz, .asm_48108 + xor a + ld [$d0a0], a + ret -PokemonTower7EndBattleText2: ; 60edd (18:4edd) - TX_FAR _PokemonTower7EndBattleText2 - db "@" +Func_48119: ; 48119 (12:4119) + ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND) + xor b + ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) + ld [rWY], a ; $ff4a + ld c, $3 + jp DelayFrames -PokemonTower7AfterBattleText2: ; 60ee2 (18:4ee2) - TX_FAR _PokemonTower7AfterBattleText2 - db "@" +Func_48125: ; 48125 (12:4125) + call Load16BitRegisters + xor a +.asm_48129 + ld [$ff97], a + call Func_4813f + ld c, $1 + call DelayFrames + call Func_4813f + dec b + ld a, b + jr nz, .asm_48129 + ld a, $7 + ld [rWX], a ; $ff4b + ret -PokemonTower7BattleText3: ; 60ee7 (18:4ee7) - TX_FAR _PokemonTower7BattleText3 - db "@" +Func_4813f: ; 4813f (12:413f) + ld a, [$ff97] + xor b + ld [$ff97], a + bit 7, a + jr z, .asm_48149 + xor a +.asm_48149 + add $7 + ld [rWX], a ; $ff4b + ld c, $4 + jp DelayFrames -PokemonTower7EndBattleText3: ; 60eec (18:4eec) - TX_FAR _PokemonTower7EndBattleText3 - db "@" +INCLUDE "scripts/route7.asm" -PokemonTower7AfterBattleText3: ; 60ef1 (18:4ef1) - TX_FAR _PokemonTower7AfterBattleText3 - db "@" +INCLUDE "data/mapHeaders/redshouse1f.asm" -INCLUDE "data/mapObjects/pokemontower7.asm" +INCLUDE "scripts/redshouse1f.asm" -PokemonTower7Blocks: ; 60f20 (18:4f20) - INCBIN "maps/pokemontower7.blk" +INCLUDE "data/mapObjects/redshouse1f.asm" -INCLUDE "data/mapHeaders/celadonmart1.asm" +RedsHouse1FBlocks: ; 48209 (12:4209) + INCBIN "maps/redshouse1f.blk" -CeladonMart1Script: ; 60f86 (18:4f86) - jp EnableAutoTextBoxDrawing +INCLUDE "data/mapHeaders/celadonmart3.asm" -CeladonMart1TextPointers: ; 60f89 (18:4f89) - dw CeladonMart1Text1 - dw CeladonMart1Text2 - dw CeladonMart1Text3 +INCLUDE "scripts/celadonmart3.asm" -CeladonMart1Text1: ; 60f8f (18:4f8f) - TX_FAR _CeladonMart1Text1 - db "@" +INCLUDE "data/mapObjects/celadonmart3.asm" -CeladonMart1Text2: ; 60f94 (18:4f94) - TX_FAR _CeladonMart1Text2 - db "@" +CeladonMart3Blocks: ; 48322 (12:4322) + INCBIN "maps/celadonmart3.blk" -CeladonMart1Text3: ; 60f99 (18:4f99) - TX_FAR _CeladonMart1Text3 - db "@" +INCLUDE "data/mapHeaders/celadonmart4.asm" -INCLUDE "data/mapObjects/celadonmart1.asm" +INCLUDE "scripts/celadonmart4.asm" -CeladonMart1Blocks: ; 60fde (18:4fde) - INCBIN "maps/celadonmart1.blk" +INCLUDE "data/mapObjects/celadonmart4.asm" -GiveFossilToCinnabarLab: ; 61006 (18:5006) - ld hl, $d730 - set 6, [hl] - xor a - ld [wCurrentMenuItem], a ; $cc26 - ld a, $3 - ld [wMenuWatchedKeys], a ; $cc29 - ld a, [$cd37] - dec a - ld [wMaxMenuItem], a ; $cc28 - ld a, $2 - ld [wTopMenuItemY], a ; $cc24 - ld a, $1 - ld [wTopMenuItemX], a ; $cc25 - ld a, [$cd37] - dec a - ld bc, $2 - ld hl, $3 - call AddNTimes - dec l - ld b, l - ld c, $d - ld hl, wTileMap - call TextBoxBorder - call UpdateSprites - call Func_610c2 - ld hl, $d730 - res 6, [hl] - call HandleMenuInput - bit 1, a - jr nz, .asm_610a7 - ld hl, $cc5b - ld a, [wCurrentMenuItem] ; $cc26 - ld d, $0 - ld e, a - add hl, de - ld a, [hl] - ld [$ffdb], a - cp DOME_FOSSIL - jr z, .choseDomeFossil - cp HELIX_FOSSIL - jr z, .choseHelixFossil - ld b, AERODACTYL - jr .fossilSelected -.choseHelixFossil - ld b, OMANYTE - jr .fossilSelected -.choseDomeFossil - ld b, KABUTO -.fossilSelected - ld [W_FOSSILITEM], a - ld a, b - ld [W_FOSSILMON], a - call LoadFossilItemAndMonName - ld hl, UnnamedText_610ae - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] ; $cc26 - and a - jr nz, .asm_610a7 - ld hl, UnnamedText_610b3 - call PrintText - ld a, [W_FOSSILITEM] - ld [$ffdb], a - ld b, BANK(RemoveItemByID) - ld hl, RemoveItemByID - call Bankswitch - ld hl, UnnamedText_610b8 - call PrintText - ld hl, $d7a3 - set 0, [hl] - set 1, [hl] - ret -.asm_610a7 - ld hl, UnnamedText_610bd - call PrintText - ret +CeladonMart4Blocks: ; 483a1 (12:43a1) + INCBIN "maps/celadonmart4.blk" -UnnamedText_610ae: ; 610ae (18:50ae) - TX_FAR _UnnamedText_610ae - db "@" +INCLUDE "data/mapHeaders/celadonmartroof.asm" -UnnamedText_610b3: ; 610b3 (18:50b3) - TX_FAR _UnnamedText_610b3 - db "@" +INCLUDE "scripts/celadonmartroof.asm" -UnnamedText_610b8: ; 610b8 (18:50b8) - TX_FAR _UnnamedText_610b8 - db "@" +INCLUDE "data/mapObjects/celadonmartroof.asm" -UnnamedText_610bd: ; 610bd (18:50bd) - TX_FAR _UnnamedText_610bd - db "@" +CeladonMartRoofBlocks: ; 485cc (12:45cc) + INCBIN "maps/celadonmartroof.blk" -Func_610c2: ; 610c2 (18:50c2) - ld hl, $cc5b - xor a - ld [$ffdb], a -.asm_610c8 - ld a, [hli] - cp $ff - ret z - push hl - ld [$d11e], a - call GetItemName - FuncCoord 2, 2 ; $c3ca - ld hl, Coord - ld a, [$ffdb] - ld bc, $28 - call AddNTimes - ld de, $cd6d - call PlaceString - ld hl, $ffdb - inc [hl] - pop hl - jr .asm_610c8 +INCLUDE "data/mapHeaders/celadonmartelevator.asm" -; loads the names of the fossil item and the resulting mon -LoadFossilItemAndMonName: ; 610eb (18:50eb) - ld a, [W_FOSSILMON] - ld [$d11e], a - call GetMonName - call CopyStringToCF4B - ld a, [W_FOSSILITEM] - ld [$d11e], a - call GetItemName - ret +INCLUDE "scripts/celadonmartelevator.asm" -INCLUDE "data/mapHeaders/viridianforest.asm" +INCLUDE "data/mapObjects/celadonmartelevator.asm" -ViridianForestScript: ; 6110d (18:510d) - call EnableAutoTextBoxDrawing - ld hl, ViridianForestTrainerHeaders - ld de, ViridianForestScriptPointers - ld a, [W_VIRIDIANFORESTCURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_VIRIDIANFORESTCURSCRIPT], a - ret - -ViridianForestScriptPointers: ; 61120 (18:5120) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -ViridianForestTextPointers: ; 61126 (18:5126) - dw ViridianForestText1 - dw ViridianForestText2 - dw ViridianForestText3 - dw ViridianForestText4 - dw Predef5CText - dw Predef5CText - dw Predef5CText - dw ViridianForestText8 - dw ViridianForestText9 - dw ViridianForestText10 - dw ViridianForestText11 - dw ViridianForestText12 - dw ViridianForestText13 - dw ViridianForestText14 - -ViridianForestTrainerHeaders: ; 61142 (18:5142) -ViridianForestTrainerHeader0: ; 61142 (18:5142) - db $2 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7f3 ; flag's byte - dw ViridianForestBattleText1 ; 0x518a TextBeforeBattle - dw ViridianForestAfterBattleText1 ; 0x5194 TextAfterBattle - dw ViridianForestEndBattleText1 ; 0x518f TextEndBattle - dw ViridianForestEndBattleText1 ; 0x518f TextEndBattle - -ViridianForestTrainerHeader1: ; 6114e (18:514e) - db $3 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d7f3 ; flag's byte - dw ViridianForestBattleText2 ; 0x5199 TextBeforeBattle - dw ViridianForestAfterBattleText2 ; 0x51a3 TextAfterBattle - dw ViridianForestEndBattleText2 ; 0x519e TextEndBattle - dw ViridianForestEndBattleText2 ; 0x519e TextEndBattle - -ViridianForestTrainerHeader2: ; 6115a (18:515a) - db $4 ; flag's bit - db ($1 << 4) ; trainer's view range - dw $d7f3 ; flag's byte - dw ViridianForestBattleText3 ; 0x51a8 TextBeforeBattle - dw ViridianForestAfterBattleText3 ; 0x51b2 TextAfterBattle - dw ViridianForestEndBattleText3 ; 0x51ad TextEndBattle - dw ViridianForestEndBattleText3 ; 0x51ad TextEndBattle +CeladonMartElevatorBlocks: ; 48684 (12:4684) + INCBIN "maps/celadonmartelevator.blk" - db $ff +INCLUDE "data/mapHeaders/celadonmansion1.asm" -ViridianForestText1: ; 61167 (18:5167) - TX_FAR _ViridianForestText1 - db "@" +INCLUDE "scripts/celadonmansion1.asm" -ViridianForestText2: ; 6116c (18:516c) - db $08 ; asm - ld hl, ViridianForestTrainerHeader0 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapObjects/celadonmansion1.asm" -ViridianForestText3: ; 61176 (18:5176) - db $08 ; asm - ld hl, ViridianForestTrainerHeader1 - call TalkToTrainer - jp TextScriptEnd +CeladonMansion1Blocks: ; 48716 (12:4716) + INCBIN "maps/celadonmansion1.blk" -ViridianForestText4: ; 61180 (18:5180) - db $08 ; asm - ld hl, ViridianForestTrainerHeader2 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapHeaders/celadonmansion2.asm" -ViridianForestBattleText1: ; 6118a (18:518a) - TX_FAR _ViridianForestBattleText1 - db "@" +INCLUDE "scripts/celadonmansion2.asm" -ViridianForestEndBattleText1: ; 6118f (18:518f) - TX_FAR _ViridianForestEndBattleText1 - db "@" +INCLUDE "data/mapObjects/celadonmansion2.asm" -ViridianForestAfterBattleText1: ; 61194 (18:5194) - TX_FAR _ViridianFrstAfterBattleText1 - db "@" +CeladonMansion2Blocks: ; 4876c (12:476c) + INCBIN "maps/celadonmansion2.blk" -ViridianForestBattleText2: ; 61199 (18:5199) - TX_FAR _ViridianForestBattleText2 - db "@" +INCLUDE "data/mapHeaders/celadonmansion3.asm" -ViridianForestEndBattleText2: ; 6119e (18:519e) - TX_FAR _ViridianForestEndBattleText2 - db "@" +INCLUDE "scripts/celadonmansion3.asm" -ViridianForestAfterBattleText2: ; 611a3 (18:51a3) - TX_FAR _ViridianFrstAfterBattleText2 - db "@" +INCLUDE "data/mapObjects/celadonmansion3.asm" -ViridianForestBattleText3: ; 611a8 (18:51a8) - TX_FAR _ViridianForestBattleText3 - db "@" +CeladonMansion3Blocks: ; 48847 (12:4847) + INCBIN "maps/celadonmansion3.blk" -ViridianForestEndBattleText3: ; 611ad (18:51ad) - TX_FAR _ViridianForestEndBattleText3 - db "@" +INCLUDE "data/mapHeaders/celadonmansion4.asm" -ViridianForestAfterBattleText3: ; 611b2 (18:51b2) - TX_FAR _ViridianFrstAfterBattleText3 - db "@" +INCLUDE "scripts/celadonmansion4.asm" -ViridianForestText8: ; 611b7 (18:51b7) - TX_FAR _ViridianForestText8 - db "@" +INCLUDE "data/mapObjects/celadonmansion4.asm" -ViridianForestText9: ; 611bc (18:51bc) - TX_FAR _ViridianForestText9 - db "@" +CeladonMansion4Blocks: ; 48894 (12:4894) + INCBIN "maps/celadonmansion4.blk" -ViridianForestText10: ; 611c1 (18:51c1) - TX_FAR _ViridianForestText10 - db "@" +INCLUDE "data/mapHeaders/celadonpokecenter.asm" -ViridianForestText11: ; 611c6 (18:51c6) - TX_FAR _ViridianForestText11 - db "@" +INCLUDE "scripts/celadonpokecenter.asm" -ViridianForestText12: ; 611cb (18:51cb) - TX_FAR _ViridianForestText12 - db "@" +INCLUDE "data/mapObjects/celadonpokecenter.asm" -ViridianForestText13: ; 611d0 (18:51d0) - TX_FAR _ViridianForestText13 - db "@" +INCLUDE "data/mapHeaders/celadongym.asm" -ViridianForestText14: ; 611d5 (18:51d5) - TX_FAR _ViridianForestText14 - db "@" +INCLUDE "scripts/celadongym.asm" -INCLUDE "data/mapObjects/viridianforest.asm" +INCLUDE "data/mapObjects/celadongym.asm" -INCLUDE "data/mapHeaders/ssanne1.asm" +CeladonGymBlocks: ; 48b84 (12:4b84) + INCBIN "maps/celadongym.blk" -SSAnne1Script: ; 61265 (18:5265) - call EnableAutoTextBoxDrawing - ret +INCLUDE "data/mapHeaders/celadongamecorner.asm" -SSAnne1TextPointers: ; 61269 (18:5269) - dw SSAnne1Text1 - dw SSAnne1Text2 +INCLUDE "scripts/celadongamecorner.asm" -SSAnne1Text1: ; 6126d (18:526d) - TX_FAR _SSAnne1Text1 - db "@" +INCLUDE "data/mapObjects/celadongamecorner.asm" -SSAnne1Text2: ; 61272 (18:5272) - TX_FAR _SSAnne1Text2 - db "@" +CeladonGameCornerBlocks: ; 49003 (12:5003) + INCBIN "maps/celadongamecorner.blk" -INCLUDE "data/mapObjects/ssanne1.asm" +INCLUDE "data/mapHeaders/celadonmart5.asm" -SSAnne1Blocks: ; 612df (18:52df) - INCBIN "maps/ssanne1.blk" +INCLUDE "scripts/celadonmart5.asm" -INCLUDE "data/mapHeaders/ssanne2.asm" +INCLUDE "data/mapObjects/celadonmart5.asm" -SSAnne2Script: ; 6139f (18:539f) - call EnableAutoTextBoxDrawing - ld hl, SSAnne2ScriptPointers - ld a, [W_SSANNE2CURSCRIPT] - jp CallFunctionInTable +CeladonMart5Blocks: ; 490bc (12:50bc) + INCBIN "maps/celadonmart5.blk" -SSAnne2Script_613ab: ; 613ab (18:53ab) - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_SSANNE2CURSCRIPT], a - ret +INCLUDE "data/mapHeaders/celadonprizeroom.asm" -SSAnne2ScriptPointers: ; 613b3 (18:53b3) - dw SSAnne2Script0 - dw SSAnne2Script1 - dw SSAnne2Script2 - dw SSAnne2Script3 - dw SSAnne2Script4 +INCLUDE "scripts/celadonprizeroom.asm" -SSAnne2Script4: ; 613bd (18:53bd) - ret +INCLUDE "data/mapObjects/celadonprizeroom.asm" -SSAnne2Script0: ; 613be (18:53be) - ld hl, CoordsData_61411 ; $5411 - call ArePlayerCoordsInArray - ret nc - ld a, $ff - ld [$c0ee], a - call PlaySound - ld c, BANK(Music_MeetRival) - ld a, MUSIC_MEET_RIVAL - call PlayMusic - ld a, [$cd3d] - ld [$ffdb], a - ld a, $71 - ld [$cc4d], a - ld a, $15 - call Predef - call Delay3 - ld a, $2 - ld [$ff8c], a - call SetSpriteMovementBytesToFF - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld a, [$ffdb] - cp $2 - jr nz, .asm_61400 ; 0x613f9 $5 - ld de, MovementData_6140c - jr .asm_61403 ; 0x613fe $3 -.asm_61400 - ld de, MovementData_6140d -.asm_61403 - call MoveSprite - ld a, $1 - ld [W_SSANNE2CURSCRIPT], a - ret +CeladonPrizeRoomBlocks: ; 49131 (12:5131) + INCBIN "maps/celadonprizeroom.blk" -MovementData_6140c: ; 6140c (18:540c) - db $00 +INCLUDE "data/mapHeaders/celadondiner.asm" -MovementData_6140d: ; 6140d (18:540d) - db $00,$00,$00,$FF +INCLUDE "scripts/celadondiner.asm" -CoordsData_61411: ; 61411 (18:5411) - db $08,$24,$08,$25,$FF +INCLUDE "data/mapObjects/celadondiner.asm" -Func_61416: ; 61416 (18:5416) - ld a, [W_XCOORD] ; $d362 - cp $25 - jr nz, .asm_61426 - ld a, $2 - ld [$d528], a - ld a, $c - jr .asm_61427 -.asm_61426 - xor a -.asm_61427 - ld [$ff8d], a - ld a, $2 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - jp Func_34a6 +CeladonDinerBlocks: ; 491ee (12:51ee) + INCBIN "maps/celadondiner.blk" -SSAnne2Script1: ; 61430 (18:5430) - ld a, [$d730] - bit 0, a - ret nz - call Func_61416 - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $2 - ld [$ff8c], a - call DisplayTextID - call Delay3 - ld a, SONY2 + $c8 - ld [W_CUROPPONENT], a +INCLUDE "data/mapHeaders/celadonhouse.asm" - ; select which team to use during the encounter - ld a, [W_RIVALSTARTER] - cp SQUIRTLE - jr nz, .NotSquirtle ; 0x61451 $4 - ld a, $1 - jr .done -.NotSquirtle - cp BULBASAUR - jr nz, .Charmander ; 0x61459 $4 - ld a, $2 - jr .done -.Charmander - ld a, $3 -.done - ld [W_TRAINERNO], a +INCLUDE "scripts/celadonhouse.asm" - call Func_61416 - ld a, $2 - ld [W_SSANNE2CURSCRIPT], a - ret +INCLUDE "data/mapObjects/celadonhouse.asm" -SSAnne2Script2: ; 6146d (18:546d) - ld a, [$d057] - cp $ff - jp z, SSAnne2Script_613ab - call Func_61416 - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld a, $3 - ld [$ff8c], a - call DisplayTextID - ld a, $2 - ld [$ff8c], a - call SetSpriteMovementBytesToFF - ld a, [W_XCOORD] - cp $25 - jr nz, .asm_61497 ; 0x61490 $5 - ld de, MovementData_614b9 - jr .asm_6149a ; 0x61495 $3 -.asm_61497 - ld de, MovementData_614b7 -.asm_6149a - ld a, $2 - ld [$ff8c], a - call MoveSprite - ld a, $ff - ld [$c0ee], a - call PlaySound - ld b, BANK(Music_RivalAlternateStart) - ld hl, Music_RivalAlternateStart - call Bankswitch - ld a, $3 - ld [W_SSANNE2CURSCRIPT], a - ret +CeladonHouseBlocks: ; 4924d (12:524d) + INCBIN "maps/celadonhouse.blk" -MovementData_614b7: ; 614b7 (18:54b7) - db $C0,$00 +INCLUDE "data/mapHeaders/celadonhotel.asm" -MovementData_614b9: ; 614b9 (18:54b9) - db $00,$00,$00,$00,$FF +INCLUDE "scripts/celadonhotel.asm" -SSAnne2Script3: ; 614be (18:54be) - ld a, [$d730] - bit 0, a - ret nz - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $71 - ld [$cc4d], a - ld a, $11 - call Predef - call Func_2307 - ld a, $4 - ld [W_SSANNE2CURSCRIPT], a - ret +INCLUDE "data/mapObjects/celadonhotel.asm" -SSAnne2TextPointers: ; 614db (18:54db) - dw SSAnne2Text1 - dw SSAnne2Text2 - dw SSAnne2Text3 +CeladonHotelBlocks: ; 492a7 (12:52a7) + INCBIN "maps/celadonhotel.blk" -SSAnne2Text1: ; 614e1 (18:54e1) - TX_FAR _SSAnne2Text1 - db "@" +INCLUDE "data/mapHeaders/mtmoonpokecenter.asm" -SSAnne2Text2: ; 614e6 (18:54e6) - db $8 - ld hl, SSAnneRivalBeforeBattleText - call PrintText - ld hl, $d72d - set 6, [hl] - set 7, [hl] - ld hl, SSAnneRivalDefeatedText - ld de, SSAnneRivalWonText - call PreBattleSaveRegisters - jp TextScriptEnd +INCLUDE "scripts/mtmoonpokecenter.asm" -SSAnneRivalBeforeBattleText: ; 61500 (18:5500) - TX_FAR _SSAnneRivalBeforeBattleText - db "@" +INCLUDE "data/mapObjects/mtmoonpokecenter.asm" -SSAnneRivalDefeatedText: ; 61505 (18:5505) - TX_FAR _SSAnneRivalDefeatedText - db "@" +INCLUDE "data/mapHeaders/rocktunnelpokecenter.asm" -SSAnneRivalWonText: ; 6150a (18:550a) - TX_FAR _SSAnneRivalWonText - db "@" +INCLUDE "scripts/rocktunnelpokecenter.asm" -SSAnne2Text3: ; 6150f (18:550f) - TX_FAR _SSAnneRivalCaptainText - db "@" +INCLUDE "data/mapObjects/rocktunnelpokecenter.asm" -INCLUDE "data/mapObjects/ssanne2.asm" +INCLUDE "data/mapHeaders/route11gate.asm" -SSAnne2Blocks: ; 6156e (18:556e) - INCBIN "maps/ssanne2.blk" +INCLUDE "scripts/route11gate.asm" -INCLUDE "data/mapHeaders/ssanne4.asm" +INCLUDE "data/mapObjects/route11gate.asm" -SSAnne4Script: ; 6162e (18:562e) - jp EnableAutoTextBoxDrawing +INCLUDE "data/mapHeaders/route11gateupstairs.asm" -SSAnne4TextPointers: ; 61631 (18:5631) - db "@" +INCLUDE "scripts/route11gateupstairs.asm" -INCLUDE "data/mapObjects/ssanne4.asm" +INCLUDE "data/mapObjects/route11gateupstairs.asm" -SSAnne4Blocks: ; 61666 (18:5666) - INCBIN "maps/ssanne4.blk" +INCLUDE "data/mapHeaders/route12gate.asm" -INCLUDE "data/mapHeaders/ssanne5.asm" +INCLUDE "scripts/route12gate.asm" -SSAnne5Script: ; 616ae (18:56ae) - call EnableAutoTextBoxDrawing - ld hl, SSAnneTrainerHeader0 ; $56d1 - ld de, SSAnne5ScriptPointers - ld a, [W_SSANNE5CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_SSANNE5CURSCRIPT], a - ret - -SSAnne5ScriptPointers: ; 616c1 (18:56c1) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -SSAnne5TextPointers: ; 616c7 (18:56c7) - dw SSAnne5Text1 - dw SSAnne5Text2 - dw SSAnne5Text3 - dw SSAnne5Text4 - dw SSAnne5Text5 - -SSAnneTrainerHeaders: ; 616d1 (18:56d1) -SSAnneTrainerHeader0: ; 616d1 (18:56d1) - db $4 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7ff ; flag's byte - dw SSAnneBattleText1 ; 0x5703 TextBeforeBattle - dw SSAnneAfterBattleText1 ; 0x570d TextAfterBattle - dw SSAnneEndBattleText1 ; 0x5708 TextEndBattle - dw SSAnneEndBattleText1 ; 0x5708 TextEndBattle - -SSAnneTrainerHeader1: ; 616dd (18:56dd) - db $5 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d7ff ; flag's byte - dw SSAnneBattleText2 ; 0x571c TextBeforeBattle - dw SSAnneAfterBattleText2 ; 0x5726 TextAfterBattle - dw SSAnneEndBattleText2 ; 0x5721 TextEndBattle - dw SSAnneEndBattleText2 ; 0x5721 TextEndBattle +INCLUDE "data/mapObjects/route12gate.asm" - db $ff +Route12GateBlocks: ; 49540 (12:5540) + INCBIN "maps/route12gate.blk" -SSAnne5Text1: ; 616ea (18:56ea) - TX_FAR _SSAnne5Text1 - db "@" +INCLUDE "data/mapHeaders/route12gateupstairs.asm" -SSAnne5Text2: ; 616ef (18:56ef) - TX_FAR _SSAnne5Text2 - db "@" +INCLUDE "scripts/route12gateupstairs.asm" -SSAnne5Text3: ; 616f4 (18:56f4) - TX_FAR _SSAnne5Text3 - db "@" +INCLUDE "data/mapObjects/route12gateupstairs.asm" -SSAnne5Text4: ; 616f9 (18:56f9) - db $08 ; asm - ld hl, SSAnneTrainerHeader0 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapHeaders/route15gate.asm" -SSAnneBattleText1: ; 61703 (18:5703) - TX_FAR _SSAnneBattleText1 - db "@" +INCLUDE "scripts/route15gate.asm" -SSAnneEndBattleText1: ; 61708 (18:5708) - TX_FAR _SSAnneEndBattleText1 - db "@" +INCLUDE "data/mapObjects/route15gate.asm" -SSAnneAfterBattleText1: ; 6170d (18:570d) - TX_FAR _SSAnneAfterBattleText1 - db "@" +INCLUDE "data/mapHeaders/route15gateupstairs.asm" -SSAnne5Text5: ; 61712 (18:5712) - db $08 ; asm - ld hl, SSAnneTrainerHeader1 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "scripts/route15gateupstairs.asm" -SSAnneBattleText2: ; 6171c (18:571c) - TX_FAR _SSAnneBattleText2 - db "@" +INCLUDE "data/mapObjects/route15gateupstairs.asm" -SSAnneEndBattleText2: ; 61721 (18:5721) - TX_FAR _SSAnneEndBattleText2 - db "@" +INCLUDE "data/mapHeaders/route16gate.asm" -SSAnneAfterBattleText2: ; 61726 (18:5726) - TX_FAR _SSAnneAfterBattleText2 - db "@" +INCLUDE "scripts/route16gate.asm" -INCLUDE "data/mapObjects/ssanne5.asm" +INCLUDE "data/mapObjects/route16gate.asm" -SSAnne5Blocks: ; 61761 (18:5761) - INCBIN "maps/ssanne5.blk" +Route16GateBlocks: ; 497e3 (12:57e3) + INCBIN "maps/route16gate.blk" -INCLUDE "data/mapHeaders/ssanne6.asm" +INCLUDE "data/mapHeaders/route16gateupstairs.asm" -SSAnne6Script: ; 617b3 (18:57b3) - call EnableAutoTextBoxDrawing - ret +INCLUDE "scripts/route16gateupstairs.asm" -SSAnne6TextPointers: ; 617b7 (18:57b7) - dw SSAnne6Text1 - dw SSAnne6Text2 - dw SSAnne6Text3 - dw SSAnne6Text4 - dw SSAnne6Text5 - dw SSAnne6Text6 - dw SSAnne6Text7 +INCLUDE "data/mapObjects/route16gateupstairs.asm" -SSAnne6Text1: ; 617c5 (18:57c5) - TX_FAR _SSAnne6Text1 - db "@" +INCLUDE "data/mapHeaders/route18gate.asm" -SSAnne6Text2: ; 617ca (18:57ca) - TX_FAR _SSAnne6Text2 - db "@" +INCLUDE "scripts/route18gate.asm" -SSAnne6Text3: ; 617cf (18:57cf) - TX_FAR _SSAnne6Text3 - db "@" +INCLUDE "data/mapObjects/route18gate.asm" -SSAnne6Text4: ; 617d4 (18:57d4) - TX_FAR _SSAnne6Text4 - db "@" +INCLUDE "data/mapHeaders/route18gateupstairs.asm" -SSAnne6Text5: ; 617d9 (18:57d9) - TX_FAR _SSAnne6Text5 - db "@" +INCLUDE "scripts/route18gateupstairs.asm" -SSAnne6Text6: ; 617de (18:57de) - TX_FAR _SSAnne6Text6 - db "@" +INCLUDE "data/mapObjects/route18gateupstairs.asm" -SSAnne6Text7: ; 617e3 (18:57e3) - db $08 ; asm - ld hl, UnnamedText_61807 - call PrintText - ldh a, [$d3] - bit 7, a - jr z, .asm_93eb1 ; 0x617ee - ld hl, UnnamedText_6180c - jr .asm_63292 ; 0x617f3 -.asm_93eb1 ; 0x617f5 - bit 4, a - jr z, .asm_7436c ; 0x617f7 - ld hl, UnnamedText_61811 - jr .asm_63292 ; 0x617fc -.asm_7436c ; 0x617fe - ld hl, UnnamedText_61816 -.asm_63292 ; 0x61801 - call PrintText - jp TextScriptEnd +INCLUDE "data/mapHeaders/mtmoon1.asm" -UnnamedText_61807: ; 61807 (18:5807) - TX_FAR _UnnamedText_61807 - db "@" +INCLUDE "scripts/mtmoon1.asm" -UnnamedText_6180c: ; 6180c (18:580c) - TX_FAR _UnnamedText_6180c - db "@" +INCLUDE "data/mapObjects/mtmoon1.asm" -UnnamedText_61811: ; 61811 (18:5811) - TX_FAR _UnnamedText_61811 - db "@" +MtMoon1Blocks: ; 49b97 (12:5b97) + INCBIN "maps/mtmoon1.blk" -UnnamedText_61816: ; 61816 (18:5816) - TX_FAR _UnnamedText_61816 - db "@" +INCLUDE "data/mapHeaders/mtmoon3.asm" -INCLUDE "data/mapObjects/ssanne6.asm" +INCLUDE "scripts/mtmoon3.asm" -SSAnne6Blocks: ; 61851 (18:5851) - INCBIN "maps/ssanne6.blk" +INCLUDE "data/mapObjects/mtmoon3.asm" -INCLUDE "data/mapHeaders/ssanne7.asm" +MtMoon3Blocks: ; 4a041 (12:6041) + INCBIN "maps/mtmoon3.blk" -SSAnne7Script: ; 61895 (18:5895) - call SSAnne7Script_6189b - jp EnableAutoTextBoxDrawing +INCLUDE "data/mapHeaders/safarizonewest.asm" -SSAnne7Script_6189b: ; 6189b (18:589b) - ld a, [$d803] - bit 1, a - ret nz - ld hl, $d72d - set 5, [hl] - ret +INCLUDE "scripts/safarizonewest.asm" -SSAnne7TextPointers: ; 618a7 (18:58a7) - dw SSAnne7Text1 - dw SSAnne7Text2 - dw SSAnne7Text3 +INCLUDE "data/mapObjects/safarizonewest.asm" -SSAnne7Text1: ; 618ad (18:58ad) - db $08 ; asm - ld a, [$d803] - bit 0, a - jr nz, .asm_797c4 ; 0x618b3 - ld hl, SSAnne7RubText - call PrintText - ld hl, ReceivingHM01Text - call PrintText - ld bc, (HM_01 << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, ReceivedHM01Text - call PrintText - ld hl, $d803 - set 0, [hl] - jr .asm_0faf5 ; 0x618d4 -.BagFull - ld hl, HM01NoRoomText - call PrintText - ld hl, $d72d - set 5, [hl] - jr .asm_0faf5 ; 0x618e1 -.asm_797c4 ; 0x618e3 - ld hl, UnnamedText_61932 - call PrintText -.asm_0faf5 ; 0x618e9 - jp TextScriptEnd +SafariZoneWestBlocks: ; 4a248 (12:6248) + INCBIN "maps/safarizonewest.blk" -SSAnne7RubText: ; 618ec (18:58ec) - TX_FAR _SSAnne7RubText - db $8 - ld a, [$c0ef] - cp $1f - ld [$c0f0], a - jr nz, .asm_61908 ; 0x618f9 $d - ld a, $ff - ld [$c0ee], a - call PlaySound - ld a, Bank(Func_9876) - ld [$c0ef], a -.asm_61908 - ld a, MUSIC_PKMN_HEALED - ld [$c0ee], a - call PlaySound -.asm_61910 - ld a, [$c026] - cp MUSIC_PKMN_HEALED - jr z, .asm_61910 ; 0x61915 $f9 - call Func_2307 - ld hl, $d803 - set 1, [hl] - ld hl, $d72d - res 5, [hl] - jp TextScriptEnd +INCLUDE "data/mapHeaders/safarizonesecrethouse.asm" -ReceivingHM01Text: ; 61927 (18:5927) - TX_FAR _ReceivingHM01Text - db "@" +INCLUDE "scripts/safarizonesecrethouse.asm" -ReceivedHM01Text: ; 6192c (18:592c) - TX_FAR _ReceivedHM01Text - db $11, "@" +INCLUDE "data/mapObjects/safarizonesecrethouse.asm" -UnnamedText_61932: ; 61932 (18:5932) - TX_FAR _UnnamedText_61932 - db "@" +SafariZoneSecretHouseBlocks: ; 4a37f (12:637f) + INCBIN "maps/safarizonesecrethouse.blk" -HM01NoRoomText: ; 61937 (18:5937) - TX_FAR _HM01NoRoomText - db "@" +SECTION "bank13",ROMX,BANK[$13] -SSAnne7Text2: ; 6193c (18:593c) - TX_FAR _SSAnne7Text2 - db "@" +TrainerPics: -SSAnne7Text3: ; 61941 (18:5941) - TX_FAR _SSAnne7Text3 - db "@" +YoungsterPic: ; 4c000 (13:4000) + INCBIN "pic/trainer/youngster.pic" +BugCatcherPic: ; 4c0c6 (13:40c6) + INCBIN "pic/trainer/bugcatcher.pic" +LassPic: ; 4c200 (13:4200) + INCBIN "pic/trainer/lass.pic" +SailorPic: ; 4c2db (13:42db) + INCBIN "pic/trainer/sailor.pic" +JrTrainerMPic: ; 4c450 (13:4450) + INCBIN "pic/trainer/jr.trainerm.pic" +JrTrainerFPic: ; 4c588 (13:4588) + INCBIN "pic/trainer/jr.trainerf.pic" +PokemaniacPic: ; 4c6c9 (13:46c9) + INCBIN "pic/trainer/pokemaniac.pic" +SuperNerdPic: ; 4c7f1 (13:47f1) + INCBIN "pic/trainer/supernerd.pic" +HikerPic: ; 4c8e7 (13:48e7) + INCBIN "pic/trainer/hiker.pic" +BikerPic: ; 4cabe (13:4abe) + INCBIN "pic/trainer/biker.pic" +BurglarPic: ; 4cc91 (13:4c91) + INCBIN "pic/trainer/burglar.pic" +EngineerPic: ; 4ce0a (13:4e0a) + INCBIN "pic/trainer/engineer.pic" +FisherPic: ; 4cf87 (13:4f87) + INCBIN "pic/trainer/fisher.pic" +SwimmerPic: ; 4d133 (13:5133) + INCBIN "pic/trainer/swimmer.pic" +CueBallPic: ; 4d24f (13:524f) + INCBIN "pic/trainer/cueball.pic" +GamblerPic: ; 4d421 (13:5421) + INCBIN "pic/trainer/gambler.pic" +BeautyPic: ; 4d5df (13:55df) + INCBIN "pic/trainer/beauty.pic" +PsychicPic: ; 4d728 (13:5728) + INCBIN "pic/trainer/psychic.pic" +RockerPic: ; 4d843 (13:5843) + INCBIN "pic/trainer/rocker.pic" +JugglerPic: ; 4d97d (13:597d) + INCBIN "pic/trainer/juggler.pic" +TamerPic: ; 4db4e (13:5b4e) + INCBIN "pic/trainer/tamer.pic" +BirdKeeperPic: ; 4dcdb (13:5cdb) + INCBIN "pic/trainer/birdkeeper.pic" +BlackbeltPic: ; 4de76 (13:5e76) + INCBIN "pic/trainer/blackbelt.pic" +Rival1Pic: ; 4e049 (13:6049) + INCBIN "pic/trainer/rival1.pic" +ProfOakPic: ; 4e15f (13:615f) + INCBIN "pic/trainer/prof.oak.pic" +ChiefPic: ; 4e27d (13:627d) +ScientistPic: ; 4e27d (13:627d) + INCBIN "pic/trainer/scientist.pic" +GiovanniPic: ; 4e3be (13:63be) + INCBIN "pic/trainer/giovanni.pic" +RocketPic: ; 4e49f (13:649f) + INCBIN "pic/trainer/rocket.pic" +CooltrainerMPic: ; 4e635 (13:6635) + INCBIN "pic/trainer/cooltrainerm.pic" +CooltrainerFPic: ; 4e7be (13:67be) + INCBIN "pic/trainer/cooltrainerf.pic" +BrunoPic: ; 4e943 (13:6943) + INCBIN "pic/trainer/bruno.pic" +BrockPic: ; 4eb3e (13:6b3e) + INCBIN "pic/trainer/brock.pic" +MistyPic: ; 4ec40 (13:6c40) + INCBIN "pic/trainer/misty.pic" +LtSurgePic: ; 4ed30 (13:6d30) + INCBIN "pic/trainer/lt.surge.pic" +ErikaPic: ; 4eeb5 (13:6eb5) + INCBIN "pic/trainer/erika.pic" +KogaPic: ; 4efd6 (13:6fd6) + INCBIN "pic/trainer/koga.pic" +BlainePic: ; 4f150 (13:7150) + INCBIN "pic/trainer/blaine.pic" +SabrinaPic: ; 4f252 (13:7252) + INCBIN "pic/trainer/sabrina.pic" +GentlemanPic: ; 4f3d0 (13:73d0) + INCBIN "pic/trainer/gentleman.pic" +Rival2Pic: ; 4f4cf (13:74cf) + INCBIN "pic/trainer/rival2.pic" +Rival3Pic: ; 4f623 (13:7623) + INCBIN "pic/trainer/rival3.pic" +LoreleiPic: ; 4f779 (13:7779) + INCBIN "pic/trainer/lorelei.pic" +ChannelerPic: ; 4f8a4 (13:78a4) + INCBIN "pic/trainer/channeler.pic" +AgathaPic: ; 4fa71 (13:7a71) + INCBIN "pic/trainer/agatha.pic" +LancePic: ; 4fba2 (13:7ba2) + INCBIN "pic/trainer/lance.pic" -INCLUDE "data/mapObjects/ssanne7.asm" +INCLUDE "data/mapHeaders/battlecenterm.asm" -SSAnne7Blocks: ; 6195e (18:595e) - INCBIN "maps/ssanne7.blk" +INCLUDE "scripts/battlecenterm.asm" -INCLUDE "data/mapHeaders/ssanne8.asm" +INCLUDE "data/mapObjects/battlecenterm.asm" -SSAnne8Script: ; 61976 (18:5976) - call EnableAutoTextBoxDrawing - ld hl, SSAnne8TrainerHeaders - ld de, SSAnne8ScriptPointers - ld a, [W_SSANNE8CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_SSANNE8CURSCRIPT], a - ret - -SSAnne8ScriptPointers: ; 61989 (18:5989) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -SSAnne8TextPointers: ; 6198f (18:598f) - dw SSAnne8Text1 - dw SSAnne8Text2 - dw SSAnne8Text3 - dw SSAnne8Text4 - dw SSAnne8Text5 - dw SSAnne8Text6 - dw SSAnne8Text7 - dw SSAnne8Text8 - dw SSAnne8Text9 - dw Predef5CText - dw SSAnne8Text11 - -SSAnne8TrainerHeaders: ; 619a5 (18:59a5) -SSAnne8TrainerHeader0: ; 619a5 (18:59a5) - db $1 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d805 ; flag's byte - dw SSAnne8BattleText1 ; 0x5a0b TextBeforeBattle - dw SSAnne8AfterBattleText1 ; 0x5a15 TextAfterBattle - dw SSAnne8EndBattleText1 ; 0x5a10 TextEndBattle - dw SSAnne8EndBattleText1 ; 0x5a10 TextEndBattle - -SSAnne8TrainerHeader1: ; 619b1 (18:59b1) - db $2 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d805 ; flag's byte - dw SSAnne8BattleText2 ; 0x5a1a TextBeforeBattle - dw SSAnne8AfterBattleText2 ; 0x5a24 TextAfterBattle - dw SSAnne8EndBattleText2 ; 0x5a1f TextEndBattle - dw SSAnne8EndBattleText2 ; 0x5a1f TextEndBattle - -SSAnne8TrainerHeader2: ; 619bd (18:59bd) - db $3 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d805 ; flag's byte - dw SSAnne8BattleText3 ; 0x5a29 TextBeforeBattle - dw SSAnne8AfterBattleText3 ; 0x5a33 TextAfterBattle - dw SSAnne8EndBattleText3 ; 0x5a2e TextEndBattle - dw SSAnne8EndBattleText3 ; 0x5a2e TextEndBattle - -SSAnne8TrainerHeader3: ; 619c9 (18:59c9) - db $4 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d805 ; flag's byte - dw SSAnne8BattleText4 ; 0x5a38 TextBeforeBattle - dw SSAnne8AfterBattleText4 ; 0x5a42 TextAfterBattle - dw SSAnne8EndBattleText4 ; 0x5a3d TextEndBattle - dw SSAnne8EndBattleText4 ; 0x5a3d TextEndBattle +BattleCenterMBlocks: ; 4fd5d (13:7d5d) + INCBIN "maps/battlecenterm.blk" - db $ff +INCLUDE "data/mapHeaders/tradecenterm.asm" -SSAnne8Text1: ; 619d6 (18:59d6) - db $08 ; asm - ld hl, SSAnne8TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "scripts/tradecenterm.asm" -SSAnne8Text2: ; 619e0 (18:59e0) - db $08 ; asm - ld hl, SSAnne8TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapObjects/tradecenterm.asm" -SSAnne8Text3: ; 619ea (18:59ea) - db $08 ; asm - ld hl, SSAnne8TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd +TradeCenterMBlocks: ; 4fd91 (13:7d91) + INCBIN "maps/tradecenterm.blk" -SSAnne8Text4: ; 619f4 (18:59f4) - db $08 ; asm - ld hl, SSAnne8TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd +_GivePokemon: ; 4fda5 (13:7da5) + call EnableAutoTextBoxDrawing + xor a + ld [$ccd3], a + ld a, [W_NUMINPARTY] ; $d163 + cp $6 + jr c, .asm_4fe01 + ld a, [W_NUMINBOX] ; $da80 + cp $14 + jr nc, .asm_4fdf9 + xor a + ld [W_ENEMYBATTSTATUS3], a ; $d069 + ld a, [$cf91] + ld [W_ENEMYMONID], a + ld hl, Func_3eb01 + ld b, BANK(Func_3eb01) + call Bankswitch + call Func_4fe11 + ld hl, Func_e7a4 + ld b, BANK(Func_e7a4) + call Bankswitch + ld hl, $cf4b + ld a, [$d5a0] + and $7f + cp $9 + jr c, .asm_4fdec + sub $9 + ld [hl], $f7 + inc hl + add $f6 + jr .asm_4fdee +.asm_4fdec + add $f7 +.asm_4fdee + ld [hli], a + ld [hl], $50 + ld hl, SetToBoxText + call PrintText + scf + ret +.asm_4fdf9 + ld hl, BoxIsFullText + call PrintText + and a + ret +.asm_4fe01 + call Func_4fe11 + call AddPokemonToParty + ld a, $1 + ld [$cc3c], a + ld [$ccd3], a + scf + ret -SSAnne8Text8: ; 619fe (18:59fe) - TX_FAR _SSAnne8Text8 - db $08 ; asm - ld a, WIGGLYTUFF - call PlayCry - jp TextScriptEnd +Func_4fe11: ; 4fe11 (13:7e11) + ld a, [$cf91] + push af + ld [$d11e], a + ld a, $3a + call Predef ; indirect jump to IndexToPokedex (41010 (10:5010)) + ld a, [$d11e] + dec a + ld c, a + ld hl, wPokedexOwned ; $d2f7 + ld b, $1 + ld a, $10 + call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) + pop af + ld [$d11e], a + call GetMonName + ld hl, GotMonText + jp PrintText -SSAnne8BattleText1: ; 61a0b (18:5a0b) - TX_FAR _SSAnne8BattleText1 +GotMonText: ; 4fe39 (13:7e39) + TX_FAR _GotMonText + db $0b db "@" -SSAnne8EndBattleText1: ; 61a10 (18:5a10) - TX_FAR _SSAnne8EndBattleText1 +SetToBoxText: ; 4fe3f (13:7e3f) + TX_FAR _SetToBoxText db "@" -SSAnne8AfterBattleText1: ; 61a15 (18:5a15) - TX_FAR _SSAnne8AfterBattleText1 +BoxIsFullText: ; 4fe44 (13:7e44) + TX_FAR _BoxIsFullText db "@" -SSAnne8BattleText2: ; 61a1a (18:5a1a) - TX_FAR _SSAnne8BattleText2 - db "@" +GetPredefPointer: ; 4fe49 (13:7e49) +; stores hl in $CC4F,$CC50 +; stores de in $CC51,$CC52 +; stores bc in $CC53,$CC54 +; grabs a byte "n" from $CC4E, +; and gets the nth (3-byte) pointer in PredefPointers +; stores the bank of said pointer in [$D0B7] +; stores the pointer in hl and returns + ; ld $CC4F,hl + ld a,h + ld [$CC4F],a + ld a,l + ld [$CC50],a -SSAnne8EndBattleText2: ; 61a1f (18:5a1f) - TX_FAR _SSAnne8EndBattleText2 - db "@" + ; ld $CC51,de + ld hl,$CC51 + ld a,d + ld [hli],a + ld a,e + ld [hli],a -UnnamedText_61a24: ; 61a24 (18:5a24) - TX_FAR _UnnamedText_61a24 - db "@" + ; ld $CC53,bc + ld a,b + ld [hli],a + ld [hl],c -SSAnne8BattleText3: ; 61a29 (18:5a29) - TX_FAR _SSAnne8BattleText3 - db "@" + ld hl,PredefPointers + ld de,0 -SSAnne8EndBattleText3: ; 61a2e (18:5a2e) - TX_FAR _SSAnne8EndBattleText3 - db "@" + ; de = 3 * [$CC4E] + ld a,[$CC4E] + ld e,a + add a,a + add a,e + ld e,a + jr nc,.next + inc d -SSAnne8AfterBattleText3: ; 61a33 (18:5a33) - TX_FAR _SSAnne8AfterBattleText3 - db "@" +.next + add hl,de + ld d,h + ld e,l -SSAnne8BattleText4: ; 61a38 (18:5a38) - TX_FAR _SSAnne8BattleText4 - db "@" + ; get bank of predef routine + ld a,[de] + ld [$D0B7],a -SSAnne8EndBattleText4: ; 61a3d (18:5a3d) - TX_FAR _SSAnne8EndBattleText4 - db "@" + ; get pointer + inc de + ld a,[de] + ld l,a + inc de + ld a,[de] + ld h,a -SSAnne8AfterBattleText4: ; 61a42 (18:5a42) - TX_FAR _SSAnne8AfterBattleText4 - db "@" + ret -SSAnne8Text5: ; 61a47 (18:5a47) - TX_FAR _SSAnne8Text5 - db "@" +PredefPointers: ; 4fe79 (13:7e79) +; these are pointers to ASM routines. +; they appear to be used in overworld map scripts. + dbw BANK(Func_3cd60),Func_3cd60 + dbw BANK(Func_3f0c6),Func_3f0c6 + dbw BANK(Func_3f073),Func_3f073 + dbw BANK(ScaleSpriteByTwo), ScaleSpriteByTwo + db BANK(LoadMonBackSprite) ; dbw macro gives an error for some reason + dw LoadMonBackSprite + dbw BANK(Func_79aba),Func_79aba + dbw BANK(Func_f132),Func_f132 +HealPartyPredef: ; 4fe8e (13:7e8e) + dbw BANK(HealParty),HealParty +MoveAnimationPredef: ; 4fe91 (13:7e91) + dbw BANK(MoveAnimation),MoveAnimation; 08 play move animation + dbw BANK(Func_f71e),Func_f71e + dbw BANK(Func_f71e),Func_f71e + dbw BANK(Func_f81d),Func_f81d + dbw BANK(Func_f836),Func_f836 + dbw BANK(Func_f71e),Func_f71e + dbw BANK(Func_f71e),Func_f71e + db BANK(InitializePlayerData) + dw InitializePlayerData + dbw BANK(HandleBitArray),HandleBitArray + db BANK(RemoveMissableObject) + dw RemoveMissableObject + db BANK(IsMissableObjectHidden) + dw IsMissableObjectHidden + dbw BANK(Func_c69c),Func_c69c + db BANK(AnyPokemonAliveCheck) + dw AnyPokemonAliveCheck + db BANK(AddMissableObject) + dw AddMissableObject + db BANK(AddMissableObject) + dw AddMissableObject + dbw BANK(Func_ee9e),Func_ee9e + db BANK(InitializePlayerData) + dw InitializePlayerData + dbw BANK(Func_c754),Func_c754 + dbw BANK(Func_3af5b),Func_3af5b + dbw BANK(Func_6e43),Func_6e43 + dbw BANK(Func_f8a5),Func_f8a5; 1C, used in Pokémon Tower + dbw $03,Func_3eb5 ; for these two, the bank number is actually 0 + dbw $03,GiveItem + dbw BANK(Func_480eb),Func_480eb + dbw BANK(Func_f8ba),Func_f8ba + dbw BANK(Func_480ff),Func_480ff + dbw BANK(Func_f929),Func_f929 + dbw BANK(Func_f9a0),Func_f9a0 + dbw BANK(Func_48125),Func_48125 + dbw BANK(UpdateHPBar),UpdateHPBar + dbw BANK(Func_f9dc),Func_f9dc + dbw BANK(Func_5ab0),Func_5ab0 + dbw BANK(Func_3ed02),Func_3ed02 + db BANK(DisplayPokedexMenu_) + dw DisplayPokedexMenu_ + dbw BANK(Func_3ad1c),Func_3ad1c + dbw BANK(SaveSAVtoSRAM0),SaveSAVtoSRAM0 + dbw BANK(Func_3ef18),Func_3ef18 + dbw BANK(Func_5a5f),Func_5a5f + dbw BANK(DrawBadges), DrawBadges + dbw BANK(Func_410f3),Func_410f3 + dbw BANK(Func_7096d),Func_7096d + dbw BANK(Func_79dda),Func_79dda + dbw BANK(PlayIntro),PlayIntro + dbw BANK(Func_79869),Func_79869 + dbw BANK(Func_70b5d),Func_70b5d + dbw BANK(Func_c586),Func_c586 + dbw BANK(StatusScreen),StatusScreen ; 37 0x12953 + dbw BANK(StatusScreen2),StatusScreen2 ; 38 + dbw BANK(Func_410e2),Func_410e2 + db BANK(CheckEngagePlayer) + dw CheckEngagePlayer + dbw BANK(IndexToPokedex),IndexToPokedex + dbw BANK(Predef3B),Predef3B; 3B display pic? + dbw BANK(Func_ef54),Func_ef54 + dbw BANK(ShowPokedexData),ShowPokedexData + dbw BANK(WriteMonMoves),WriteMonMoves + dbw BANK(SaveSAV),SaveSAV + db BANK(LoadSGBBorderAndPalettes) + dw LoadSGBBorderAndPalettes + dbw BANK(Func_f113),Func_f113 + dbw BANK(SetPartyMonTypes),SetPartyMonTypes + db BANK(TestMonMoveCompatibility) + dw TestMonMoveCompatibility + dbw BANK(TMToMove),TMToMove + dbw BANK(Func_71ddf),Func_71ddf + dbw BANK(Func_5c0dc),Func_5c0dc; 46 load dex screen + db BANK(_AddPokemonToParty) + dw _AddPokemonToParty + dbw BANK(UpdateHPBar),UpdateHPBar + dbw BANK(Func_3cdec),Func_3cdec + dbw BANK(LoadTownMap_Nest),LoadTownMap_Nest + dbw BANK(Func_27d6b),Func_27d6b + db BANK(PrintEmotionBubble) + dw PrintEmotionBubble; 4C player exclamation + dbw BANK(Func_5aaf),Func_5aaf; return immediately + db BANK(AskForMonNickname) + dw AskForMonNickname + dbw BANK(Func_37ca1),Func_37ca1 + dbw BANK(SaveSAVtoSRAM2),SaveSAVtoSRAM2 + dbw BANK(LoadSAVCheckSum2),LoadSAVCheckSum2 + dbw BANK(LoadSAV),LoadSAV + dbw BANK(SaveSAVtoSRAM1),SaveSAVtoSRAM1 + dbw BANK(Predef54),Predef54 ; 54 initiate trade + dbw BANK(Func_7405c),Func_7405c + dbw BANK(DisplayDexRating),DisplayDexRating + db $1E ; uses wrong bank number + dw _DoFlyOrTeleportAwayGraphics + db $1E ; uses wrong bank number + dw Func_70510 + dbw BANK(Func_c5be),Func_c5be + dbw BANK(Func_c60b),Func_c60b + dbw BANK(Func_cd99),Func_cd99 + dbw BANK(PickupItem),PickupItem + dbw BANK(Func_27d98),Func_27d98 + dbw BANK(LoadMovePPs),LoadMovePPs +DrawHPBarPredef: ; 4ff96 (13:7f96) + dbw BANK(Func_128ef),Func_128ef ; 5F draw HP bar + dbw BANK(Func_128f6),Func_128f6 + dbw BANK(Func_1c9c6),Func_1c9c6 + dbw BANK(Func_59035),Func_59035 -SSAnne8Text6: ; 61a4c (18:5a4c) - TX_FAR _SSAnne8Text6 - db "@" +SECTION "bank14",ROMX,BANK[$14] -SSAnne8Text7: ; 61a51 (18:5a51) - TX_FAR _SSAnne8Text7 - db "@" +INCLUDE "data/mapHeaders/route22.asm" -SSAnne8Text9: ; 61a56 (18:5a56) - TX_FAR _SSAnne8Text9 - db "@" +INCLUDE "data/mapObjects/route22.asm" -SSAnne8Text11: ; 61a5b (18:5a5b) - TX_FAR _SSAnne8Text11 - db "@" +Route22Blocks: ; 5003d (14:403d) + INCBIN "maps/route22.blk" -INCLUDE "data/mapObjects/ssanne8.asm" +INCLUDE "data/mapHeaders/route20.asm" -SSAnne8Blocks: ; 61adf (18:5adf) - INCBIN "maps/ssanne8.blk" +INCLUDE "data/mapObjects/route20.asm" -INCLUDE "data/mapHeaders/ssanne9.asm" +Route20Blocks: ; 5017d (14:417d) + INCBIN "maps/route20.blk" -SSAnne9Script: ; 61b4b (18:5b4b) - ld a, $1 - ld [$cf0c], a - xor a - ld [$cc3c], a - ld hl, SSAnne9TrainerHeaders - ld de, SSAnne9ScriptPointers - ld a, [W_SSANNE9CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_SSANNE9CURSCRIPT], a - ret - -SSAnne9ScriptPointers: ; 61b64 (18:5b64) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -SSAnne9TextPointers: ; 61b6a (18:5b6a) - dw SSAnne9Text1 - dw SSAnne9Text2 - dw SSAnne9Text3 - dw SSAnne9Text4 - dw SSAnne9Text5 - dw Predef5CText - dw SSAnne9Text7 - dw SSAnne9Text8 - dw Predef5CText - dw SSAnne9Text10 - dw SSAnne9Text11 - dw SSAnne9Text12 - dw SSAnne9Text13 - -SSAnne9TrainerHeaders: ; 61b84 (18:5b84) -SSAnne9TrainerHeader0: ; 61b84 (18:5b84) - db $1 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d807 ; flag's byte - dw SSAnne9BattleText1 ; 0x5c51 TextBeforeBattle - dw SSAnne9AfterBattleText1 ; 0x5c5b TextAfterBattle - dw SSAnne9EndBattleText1 ; 0x5c56 TextEndBattle - dw SSAnne9EndBattleText1 ; 0x5c56 TextEndBattle - -SSAnne9TrainerHeader1: ; 61b90 (18:5b90) - db $2 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d807 ; flag's byte - dw SSAnne9BattleText2 ; 0x5c60 TextBeforeBattle - dw SSAnne9AfterBattleText2 ; 0x5c6a TextAfterBattle - dw SSAnne9EndBattleText2 ; 0x5c65 TextEndBattle - dw SSAnne9EndBattleText2 ; 0x5c65 TextEndBattle - -SSAnne9TrainerHeader2: ; 61b9c (18:5b9c) - db $3 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d807 ; flag's byte - dw SSAnne9BattleText3 ; 0x5c6f TextBeforeBattle - dw SSAnne9AfterBattleText3 ; 0x5c79 TextAfterBattle - dw SSAnne9EndBattleText3 ; 0x5c74 TextEndBattle - dw SSAnne9EndBattleText3 ; 0x5c74 TextEndBattle - -SSAnne9TrainerHeader3: ; 61ba8 (18:5ba8) - db $4 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d807 ; flag's byte - dw SSAnne9BattleText4 ; 0x5c7e TextBeforeBattle - dw SSAnne9AfterBattleText4 ; 0x5c88 TextAfterBattle - dw SSAnne9EndBattleText4 ; 0x5c83 TextEndBattle - dw SSAnne9EndBattleText4 ; 0x5c83 TextEndBattle +INCLUDE "data/mapHeaders/route23.asm" - db $ff +INCLUDE "data/mapObjects/route23.asm" -SSAnne9Text1: ; 61bb5 (18:5bb5) - db $08 ; asm - ld hl, SSAnne9TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd +Route23Blocks: ; 503b2 (14:43b2) + INCBIN "maps/route23.blk" -SSAnne9Text2: ; 61bbf (18:5bbf) - db $08 ; asm - ld hl, SSAnne9TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapHeaders/route24.asm" -SSAnne9Text3: ; 61bc9 (18:5bc9) - db $08 ; asm - ld hl, SSAnne9TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapObjects/route24.asm" -SSAnne9Text4: ; 61bd3 (18:5bd3) - db $08 ; asm - ld hl, SSAnne9TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd +Route24Blocks: ; 506e7 (14:46e7) + INCBIN "maps/route24.blk" + +INCLUDE "data/mapHeaders/route25.asm" + +INCLUDE "data/mapObjects/route25.asm" + +Route25Blocks: ; 50810 (14:4810) + INCBIN "maps/route25.blk" + +INCLUDE "data/mapHeaders/indigoplateau.asm" + +INCLUDE "scripts/indigoplateau.asm" -SSAnne9Text5: ; 61bdd (18:5bdd) - db $08 ; asm - call SaveScreenTilesToBuffer1 - ld hl, UnnamedText_61bf2 - call PrintText - call LoadScreenTilesFromBuffer1 - ld a, SNORLAX - call DisplayPokedex - jp TextScriptEnd +INCLUDE "data/mapObjects/indigoplateau.asm" -UnnamedText_61bf2: ; 61bf2 (18:5bf2) - TX_FAR _UnnamedText_61bf2 - db "@" +IndigoPlateauBlocks: ; 5094a (14:494a) + INCBIN "maps/indigoplateau.blk" -SSAnne9Text7: ; 61bf7 (18:5bf7) - db $08 ; asm - ld hl, UnnamedText_61c01 - call PrintText - jp TextScriptEnd +INCLUDE "data/mapHeaders/saffroncity.asm" -UnnamedText_61c01: ; 61c01 (18:5c01) - TX_FAR _UnnamedText_61c01 - db "@" +INCLUDE "data/mapObjects/saffroncity.asm" -SSAnne9Text8: ; 61c06 (18:5c06) - db $08 ; asm - ld hl, UnnamedText_61c10 - call PrintText - jp TextScriptEnd +SaffronCityBlocks: ; 50a98 (14:4a98) + INCBIN "maps/saffroncity.blk" -UnnamedText_61c10: ; 61c10 (18:5c10) - TX_FAR _UnnamedText_61c10 - db "@" +INCLUDE "scripts/saffroncity.asm" -SSAnne9Text10: ; 61c15 (18:5c15) - db $08 ; asm - ld hl, UnnamedText_61c1f - call PrintText - jp TextScriptEnd +INCLUDE "scripts/route20.asm" -UnnamedText_61c1f: ; 61c1f (18:5c1f) - TX_FAR _UnnamedText_61c1f - db "@" +INCLUDE "scripts/route22.asm" -SSAnne9Text11: ; 61c24 (18:5c24) - db $08 ; asm - ld hl, UnnamedText_61c2e - call PrintText - jp TextScriptEnd +INCLUDE "scripts/route23.asm" -UnnamedText_61c2e: ; 61c2e (18:5c2e) - TX_FAR _UnnamedText_61c2e - db "@" +INCLUDE "scripts/route24.asm" -SSAnne9Text12: ; 61c33 (18:5c33) - db $08 ; asm - ld hl, UnnamedText_61c3d - call PrintText - jp TextScriptEnd +INCLUDE "scripts/route25.asm" -UnnamedText_61c3d: ; 61c3d (18:5c3d) - TX_FAR _UnnamedText_61c3d - db "@" +INCLUDE "data/mapHeaders/victoryroad2.asm" -SSAnne9Text13: ; 61c42 (18:5c42) - db $08 ; asm - ld hl, UnnamedText_61c4c - call PrintText - jp TextScriptEnd +INCLUDE "scripts/victoryroad2.asm" -UnnamedText_61c4c: ; 61c4c (18:5c4c) - TX_FAR _UnnamedText_61c4c - db "@" +INCLUDE "data/mapObjects/victoryroad2.asm" -SSAnne9BattleText1: ; 61c51 (18:5c51) - TX_FAR _SSAnne9BattleText1 - db "@" +VictoryRoad2Blocks: ; 519af (14:59af) + INCBIN "maps/victoryroad2.blk" -SSAnne9EndBattleText1: ; 61c56 (18:5c56) - TX_FAR _SSAnne9EndBattleText1 - db "@" +INCLUDE "data/mapHeaders/mtmoon2.asm" -SSAnne9AfterBattleText1: ; 61c5b (18:5c5b) - TX_FAR _SSAnne9AfterBattleText1 - db "@" +INCLUDE "scripts/mtmoon2.asm" -SSAnne9BattleText2: ; 61c60 (18:5c60) - TX_FAR _SSAnne9BattleText2 - db "@" +INCLUDE "data/mapObjects/mtmoon2.asm" -SSAnne9EndBattleText2: ; 61c65 (18:5c65) - TX_FAR _SSAnne9EndBattleText2 - db "@" +MtMoon2Blocks: ; 51a91 (14:5a91) + INCBIN "maps/mtmoon2.blk" -SSAnne9AfterBattleText2: ; 61c6a (18:5c6a) - TX_FAR _SSAnne9AfterBattleText2 - db "@" +INCLUDE "data/mapHeaders/silphco7.asm" -SSAnne9BattleText3: ; 61c6f (18:5c6f) - TX_FAR _SSAnne9BattleText3 - db "@" +INCLUDE "scripts/silphco7.asm" -SSAnne9EndBattleText3: ; 61c74 (18:5c74) - TX_FAR _SSAnne9EndBattleText3 - db "@" +INCLUDE "data/mapObjects/silphco7.asm" -SSAnne9AfterBattleText3: ; 61c79 (18:5c79) - TX_FAR _SSAnne9AfterBattleText3 - db "@" +SilphCo7Blocks: ; 51f57 (14:5f57) + INCBIN "maps/silphco7.blk" -SSAnne9BattleText4: ; 61c7e (18:5c7e) - TX_FAR _SSAnne9BattleText4 - db "@" +INCLUDE "data/mapHeaders/mansion2.asm" -SSAnne9EndBattleText4: ; 61c83 (18:5c83) - TX_FAR _SSAnne9EndBattleText4 - db "@" +INCLUDE "scripts/mansion2.asm" -SSAnne9AfterBattleText4: ; 61c88 (18:5c88) - TX_FAR _SSAnne9AfterBattleText4 - db "@" +INCLUDE "data/mapObjects/mansion2.asm" -INCLUDE "data/mapObjects/ssanne9.asm" +Mansion2Blocks: ; 52110 (14:6110) + INCBIN "maps/mansion2.blk" -INCLUDE "data/mapHeaders/ssanne10.asm" +INCLUDE "data/mapHeaders/mansion3.asm" -SSAnne10Script: ; 61d55 (18:5d55) - call EnableAutoTextBoxDrawing - ld hl, SSAnne10TrainerHeaders - ld de, SSAnne10ScriptPointers - ld a, [W_SSANNE10CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_SSANNE10CURSCRIPT], a - ret - -SSAnne10ScriptPointers: ; 61d68 (18:5d68) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - -SSAnne10TextPointers: ; 61d6e (18:5d6e) - dw SSAnne10Text1 - dw SSAnne10Text2 - dw SSAnne10Text3 - dw SSAnne10Text4 - dw SSAnne10Text5 - dw SSAnne10Text6 - dw SSAnne10Text7 - dw SSAnne10Text8 - dw Predef5CText - dw Predef5CText - dw Predef5CText - -SSAnne10TrainerHeaders: ; 61d84 (18:5d84) -SSAnne10TrainerHeader0: ; 61d84 (18:5d84) - db $1 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d809 ; flag's byte - dw SSAnne10BattleText1 ; 0x5e16 TextBeforeBattle - dw SSAnne10AfterBattleText1 ; 0x5e20 TextAfterBattle - dw SSAnne10EndBattleText1 ; 0x5e1b TextEndBattle - dw SSAnne10EndBattleText1 ; 0x5e1b TextEndBattle - -SSAnne10TrainerHeader1: ; 61d90 (18:5d90) - db $2 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d809 ; flag's byte - dw SSAnne10BattleText2 ; 0x5e25 TextBeforeBattle - dw SSAnne10AfterBattleText2 ; 0x5e2f TextAfterBattle - dw SSAnne10EndBattleText2 ; 0x5e2a TextEndBattle - dw SSAnne10EndBattleText2 ; 0x5e2a TextEndBattle - -SSAnne10TrainerHeader2: ; 61d9c (18:5d9c) - db $3 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d809 ; flag's byte - dw SSAnne10BattleText3 ; 0x5e34 TextBeforeBattle - dw SSAnne10AfterBattleText3 ; 0x5e3e TextAfterBattle - dw SSAnne10EndBattleText3 ; 0x5e39 TextEndBattle - dw SSAnne10EndBattleText3 ; 0x5e39 TextEndBattle - -SSAnne10TrainerHeader3: ; 61da8 (18:5da8) - db $4 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d809 ; flag's byte - dw SSAnne10BattleText4 ; 0x5e43 TextBeforeBattle - dw SSAnne10AfterBattleText4 ; 0x5e4d TextAfterBattle - dw SSAnne10EndBattleText4 ; 0x5e48 TextEndBattle - dw SSAnne10EndBattleText4 ; 0x5e48 TextEndBattle - -SSAnne10TrainerHeader4: ; 61db4 (18:5db4) - db $5 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d809 ; flag's byte - dw SSAnne10BattleText5 ; 0x5e52 TextBeforeBattle - dw SSAnne10AfterBattleText5 ; 0x5e5c TextAfterBattle - dw SSAnne10EndBattleText5 ; 0x5e57 TextEndBattle - dw SSAnne10EndBattleText5 ; 0x5e57 TextEndBattle - -SSAnne10TrainerHeader5: ; 61dc0 (18:5dc0) - db $6 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d809 ; flag's byte - dw SSAnne10BattleText6 ; 0x5e61 TextBeforeBattle - dw SSAnne10AfterBattleText6 ; 0x5e6b TextAfterBattle - dw SSAnne10EndBattleText6 ; 0x5e66 TextEndBattle - dw SSAnne10EndBattleText6 ; 0x5e66 TextEndBattle +INCLUDE "scripts/mansion3.asm" - db $ff +INCLUDE "data/mapObjects/mansion3.asm" -SSAnne10Text1: ; 61dcd (18:5dcd) - db $08 ; asm - ld hl, SSAnne10TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd +Mansion3Blocks: ; 52326 (14:6326) + INCBIN "maps/mansion3.blk" -SSAnne10Text2: ; 61dd7 (18:5dd7) - db $08 ; asm - ld hl, SSAnne10TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapHeaders/mansion4.asm" -SSAnne10Text3: ; 61de1 (18:5de1) - db $08 ; asm - ld hl, SSAnne10TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "scripts/mansion4.asm" -SSAnne10Text4: ; 61deb (18:5deb) - db $08 ; asm - ld hl, SSAnne10TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapObjects/mansion4.asm" -SSAnne10Text5: ; 61df5 (18:5df5) - db $08 ; asm - ld hl, SSAnne10TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd +Mansion4Blocks: ; 524dd (14:64dd) + INCBIN "maps/mansion4.blk" -SSAnne10Text6: ; 61dff (18:5dff) - db $08 ; asm - ld hl, SSAnne10TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd +Func_525af: ; 525af (14:65af) + ld a, [$ffd7] + ld [$d0d4], a + xor a + ld [$cd6a], a + ld [$cf0b], a + ld hl, $cc2b + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld [wListScrollOffset], a ; $cc36 + ld [$d05e], a + ld [W_PLAYERMONID], a + ld [W_PLAYERMONSALIVEFLAGS], a + ld [wPlayerMonNumber], a ; $cc2f + ld [$d078], a + ld [$d35d], a + ld hl, $cf1d + ld [hli], a + ld [hl], a + ld hl, $ccd3 + ld b, $3c +.asm_525e1 + ld [hli], a + dec b + jr nz, .asm_525e1 + inc a + ld [$ccd9], a + ld a, [W_CURMAP] ; $d35e + cp SAFARI_ZONE_EAST + jr c, .asm_525f9 + cp SAFARI_ZONE_REST_HOUSE_1 + jr nc, .asm_525f9 + ld a, $2 + ld [W_BATTLETYPE], a ; $d05a +.asm_525f9 + ld hl, PlayBattleMusic + ld b, BANK(PlayBattleMusic) + jp Bankswitch -SSAnne10Text8: ; 61e09 (18:5e09) - TX_FAR _SSAnne10Text8 - db $8 ; 0x61e0d - ld a, MACHOKE - call PlayCry - jp TextScriptEnd +Func_52601: ; 52601 (14:6601) + ld hl, W_ENEMYMONSTATUS ; $cfe9 + ld de, W_PLAYERMOVETYPE ; $cfd5 + ld a, [H_WHOSETURN] ; $fff3 + and a + jp z, Func_52613 + ld hl, W_PLAYERMONSTATUS ; $d018 + ld de, W_ENEMYMOVETYPE ; $cfcf -SSAnne10BattleText1: ; 61e16 (18:5e16) - TX_FAR _SSAnne10BattleText1 - db "@" +Func_52613: ; 52613 (14:6613) + ld a, [hl] + and a + jr nz, .asm_52659 + ld a, [de] + cp $17 + jr nz, .asm_5262a + ld b, h + ld c, l + inc bc + ld a, [bc] + cp $4 + jr z, .asm_52666 + inc bc + ld a, [bc] + cp $4 + jr z, .asm_52666 +.asm_5262a + push hl + ld hl, MoveHitTest + ld b, BANK(MoveHitTest) + call Bankswitch + pop hl + ld a, [W_MOVEMISSED] ; $d05f + and a + jr nz, .asm_52659 + set 6, [hl] + ld hl, Func_3ed27 + ld b, BANK(Func_3ed27) + call Bankswitch + ld c, $1e + call DelayFrames + ld hl, Func_3fba8 + ld b, BANK(Func_3fba8) + call Bankswitch + ld hl, PrintMayNotAttackText + ld b, BANK(PrintMayNotAttackText) + jp Bankswitch +.asm_52659 + ld c, $32 + call DelayFrames + ld hl, PrintDidntAffectText + ld b, BANK(PrintDidntAffectText) + jp Bankswitch +.asm_52666 + ld c, $32 + call DelayFrames + ld hl, PrintDoesntAffectText + ld b, BANK(PrintDoesntAffectText) + jp Bankswitch -SSAnne10EndBattleText1: ; 61e1b (18:5e1b) - TX_FAR _SSAnne10EndBattleText1 - db "@" +Func_52673: ; 52673 (14:6673) + ld hl, SilphCoMapList + ld a, [W_CURMAP] + ld b, a +.asm_5267a + ld a, [hli] + cp $ff + ret z + cp b + jr nz, .asm_5267a + ld a, $35 + call Predef ; indirect jump to Func_c586 (c586 (3:4586)) + ld a, [$cfc6] + cp $18 + jr z, .asm_5269c + cp $24 + jr z, .asm_5269c + ld b, a + ld a, [W_CURMAP] + cp SILPH_CO_11F + ret nz + ld a, b + cp $5e + ret nz +.asm_5269c + ld b, CARD_KEY + call IsItemInBag + jr z, .asm_526dc + call Func_526fd + push de + ld a, $1 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call Func_3ef5 + pop de + srl d + ld a, d + ld b, a + ld [$d73f], a + srl e + ld a, e + ld c, a + ld [$d740], a + ld a, [W_CURMAP] ; $d35e + cp SILPH_CO_11F + jr nz, .asm_526c8 + ld a, $3 + jr .asm_526ca +.asm_526c8 + ld a, $e +.asm_526ca + ld [$d09f], a + ld a, $17 + call Predef ; indirect jump to Func_ee9e + ld hl, $d126 + set 5, [hl] + ld a, (SFX_1f_57 - SFX_Headers_1f) / 3 + jp PlaySound +.asm_526dc + ld a, $2 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + jp Func_3ef5 -SSAnne10AfterBattleText1: ; 61e20 (18:5e20) - TX_FAR _SSAnne10AfterBattleText1 - db "@" +SilphCoMapList: ; 526e3 (14:66e3) + db SILPH_CO_2F + db SILPH_CO_3F + db SILPH_CO_4F + db SILPH_CO_5F + db SILPH_CO_6F + db SILPH_CO_7F + db SILPH_CO_8F + db SILPH_CO_9F + db SILPH_CO_10F + db SILPH_CO_11F + db $FF -SSAnne10BattleText2: ; 61e25 (18:5e25) - TX_FAR _SSAnne10BattleText2 +CardKeySuccessText: ; 526ee (14:66ee) + TX_FAR _CardKeySuccessText1 + db $0b + TX_FAR _CardKeySuccessText2 db "@" -SSAnne10EndBattleText2: ; 61e2a (18:5e2a) - TX_FAR _SSAnne10EndBattleText2 +CardKeyFailText: ; 526f8 (14:66f8) + TX_FAR _CardKeyFailText db "@" -SSAnne10AfterBattleText2: ; 61e2f (18:5e2f) - TX_FAR _SSAnne10AfterBattleText2 - db "@" +Func_526fd: ; 526fd (14:66fd) + ld a, [W_YCOORD] ; $d361 + ld d, a + ld a, [W_XCOORD] ; $d362 + ld e, a + ld a, [$c109] + and a + jr nz, .asm_5270d + inc d + ret +.asm_5270d + cp $4 + jr nz, .asm_52713 + dec d + ret +.asm_52713 + cp $8 + jr nz, .asm_52719 + dec e + ret +.asm_52719 + inc e + ret -SSAnne10BattleText3: ; 61e34 (18:5e34) - TX_FAR _SSAnne10BattleText3 - db "@" +CeladonPrizeMenu: ; 5271b (14:671b) + ld b,COIN_CASE + call IsItemInBag + jr nz,.havingCoinCase + ld hl,RequireCoinCaseTextPtr + jp PrintText +.havingCoinCase + ld hl,$D730 + set 6,[hl] + ld hl,ExchangeCoinsForPrizesTextPtr + call PrintText +; the following are the menu settings + xor a + ld [$CC26],a + ld [$CC2A],a + ld a,$03 + ld [$CC29],a + ld a,$03 + ld [$CC28],a + ld a,$04 + ld [$CC24],a + ld a,$01 + ld [$CC25],a + call PrintPrizePrice ; 687A + FuncCoord 0,2 + ld hl,Coord + ld b,$08 + ld c,$10 + call TextBoxBorder + call GetPrizeMenuId ;678E + call UpdateSprites + ld hl,WhichPrizeTextPtr + call PrintText + call HandleMenuInput ; menu choice handler + bit 1,a ; keypress = B (Cancel) + jr nz,.NoChoice + ld a,[$CC26] + cp a,$03 ; "NO,THANKS" choice + jr z,.NoChoice + call HandlePrizeChoice ; 14:68C6 +.NoChoice + ld hl,$D730 + res 6,[hl] + ret -SSAnne10EndBattleText3: ; 61e39 (18:5e39) - TX_FAR _SSAnne10EndBattleText3 +RequireCoinCaseTextPtr: ; 5277e (14:677e) + TX_FAR _RequireCoinCaseText + db $0D db "@" -SSAnne10AfterBattleText3: ; 61e3e (18:5e3e) - TX_FAR _SSAnne10AfterBattleText3 +ExchangeCoinsForPrizesTextPtr: ; 52784 (14:6784) + TX_FAR _ExchangeCoinsForPrizesText db "@" -SSAnne10BattleText4: ; 61e43 (18:5e43) - TX_FAR _SSAnne10BattleText4 +WhichPrizeTextPtr: ; 52789 (14:6789) + TX_FAR _WhichPrizeText db "@" -SSAnne10EndBattleText4: ; 61e48 (18:5e48) - TX_FAR _SSAnne10EndBattleText4 - db "@" +GetPrizeMenuId: ; 5278e (14:678e) +; determine which one among the three +; prize-texts has been selected +; using the text ID (stored in [$FF8C]) +; load the three prizes at $D13D-$D13F +; load the three prices at $D141-$D146 +; display the three prizes' names +; (distinguishing between Pokemon names +; and Items (specifically TMs) names) + ld a,[$FF8C] + sub a,$03 ; prize-texts' id are 3, 4 and 5 + ld [$D12F],a ; prize-texts' id (relative, i.e. 0, 1 or 2) + add a + add a + ld d,$00 + ld e,a + ld hl,PrizeDifferentMenuPtrs + add hl,de + ld a,[hli] + ld d,[hl] + ld e,a + inc hl + push hl + ld hl,W_PRIZE1 + call CopyString ; XXX what does this do + pop hl + ld a,[hli] + ld h,[hl] + ld l,a + ld de,$D141 + ld bc,$0006 + call CopyData + ld a,[$D12F] + cp a,$02 ;is TM_menu? + jr nz,.putMonName + ld a,[W_PRIZE1] + ld [$D11E],a + call GetItemName + FuncCoord 2,4 + ld hl,Coord + call PlaceString + ld a,[W_PRIZE2] + ld [$D11E],a + call GetItemName + FuncCoord 2,6 + ld hl,Coord + call PlaceString + ld a,[W_PRIZE3] + ld [$D11E],a + call GetItemName + FuncCoord 2,8 + ld hl,Coord + call PlaceString + jr .putNoThanksText +.putMonName ; 14:67EC + ld a,[W_PRIZE1] + ld [$D11E],a + call GetMonName + FuncCoord 2,4 + ld hl,Coord + call PlaceString + ld a,[W_PRIZE2] + ld [$D11E],a + call GetMonName + FuncCoord 2,6 + ld hl,Coord + call PlaceString + ld a,[W_PRIZE3] + ld [$D11E],a + call GetMonName + FuncCoord 2,8 + ld hl,Coord + call PlaceString +.putNoThanksText ; 14:6819 + FuncCoord 2,10 + ld hl,Coord + ld de,NoThanksText + call PlaceString +; put prices on the right side of the textbox + ld de,$D141 + FuncCoord 13,5 + ld hl,Coord +; reg. c: +; [low nybble] number of bytes +; [bit 765 = %100] space-padding (not zero-padding) + ld c,(1 << 7 | 2) +; Function $15CD displays BCD value (same routine +; used by text-command $02) + call PrintBCDNumber ; Print_BCD + ld de,$D143 + FuncCoord 13,7 + ld hl,Coord + ld c,(%1 << 7 | 2) + call PrintBCDNumber + ld de,$D145 + FuncCoord 13,9 + ld hl,Coord + ld c,(1 << 7 | 2) + jp PrintBCDNumber -SSAnne10AfterBattleText4: ; 61e4d (18:5e4d) - TX_FAR _SSAnne10AfterBattleText4 - db "@" +INCLUDE "data/prizes.asm" -SSAnne10BattleText5: ; 61e52 (18:5e52) - TX_FAR _SSAnne10BattleText5 - db "@" +PrintPrizePrice: ; 5287a (14:687a) + FuncCoord 11,0 + ld hl,Coord + ld b,$01 + ld c,$07 + call TextBoxBorder + call UpdateSprites ; XXX save OAM? + FuncCoord 12,0 + ld hl,Coord + ld de,.CoinText + call PlaceString + FuncCoord 13,1 + ld hl,Coord + ld de,.SixSpacesText + call PlaceString + FuncCoord 13,1 + ld hl,Coord + ld de,wPlayerCoins + ld c,%10000010 + call PrintBCDNumber + ret -SSAnne10EndBattleText5: ; 61e57 (18:5e57) - TX_FAR _SSAnne10EndBattleText5 - db "@" +.CoinText ; 14:68A5 + db "COIN@" -SSAnne10AfterBattleText5: ; 61e5c (18:5e5c) - TX_FAR _SSAnne10AfterBattleText5 - db "@" +.SixSpacesText ; 14:68AA + db " @" -SSAnne10BattleText6: ; 61e61 (18:5e61) - TX_FAR _SSAnne10BattleText6 - db "@" +LoadCoinsToSubtract: ; 528b1 (14:68b1) + ld a,[$D139] ; backup of selected menu_entry + add a + ld d,$00 + ld e,a + ld hl,$D141 ; first prize's price + add hl,de ; get selected prize's price + xor a + ld [$FF9F],a + ld a,[hli] + ld [$FFA0],a + ld a,[hl] + ld [$FFA1],a + ret + +HandlePrizeChoice: ; 528c6 (14:68c6) + ld a,[$CC26] ; selected menu_entry + ld [$D139],a + ld d,$00 + ld e,a + ld hl,W_PRIZE1 + add hl,de + ld a,[hl] + ld [$D11E],a + ld a,[$D12F] + cp a,$02 ; is prize a TM? + jr nz,.GetMonName + call GetItemName + jr .GivePrize +.GetMonName ; 14:68E3 + call GetMonName +.GivePrize ; 14:68E6 + ld hl,SoYouWantPrizeTextPtr + call PrintText + call YesNoChoice ; yes/no textbox + ld a,[$CC26] ; yes/no answer (Y=0, N=1) + and a + jr nz,.PrintOhFineThen + call LoadCoinsToSubtract + call HasEnoughCoins + jr c,.NotEnoughCoins + ld a,[$D12F] + cp a,$02 + jr nz,.GiveMon + ld a,[$D11E] + ld b,a + ld a,1 + ld c,a + call GiveItem ; GiveItem + jr nc,.BagFull + jr .SubtractCoins +.GiveMon ; 14:6912 + ld a,[$D11E] + ld [$CF91],a + push af + call GetPrizeMonLevel ; 14:6977 + ld c,a + pop af + ld b,a + call GivePokemon + push af + ld a,[$CCD3] ; XXX is there room? + and a + call z,WaitForTextScrollButtonPress + pop af + ret nc +.SubtractCoins ; 14:692C + call LoadCoinsToSubtract + ld hl,$FFA1 + ld de,wPlayerCoins + 1 + ld c,$02 ; how many bytes + ld a,$0C + call Predef ; subtract coins (BCD daa operations) + jp PrintPrizePrice +.BagFull + ld hl,PrizeRoomBagIsFullTextPtr + jp PrintText +.NotEnoughCoins ; 14:6945 + ld hl,SorryNeedMoreCoinsTextTextPtr + jp PrintText +.PrintOhFineThen ; 14:694B + ld hl,OhFineThenTextPtr + jp PrintText -SSAnne10EndBattleText6: ; 61e66 (18:5e66) - TX_FAR _SSAnne10EndBattleText6 - db "@" +UnknownData52951: ; 52951 (14:6951) +; XXX what's this? + db $00,$01,$00,$01,$00,$01,$00,$00,$01 -SSAnne10AfterBattleText6: ; 61e6b (18:5e6b) - TX_FAR _SSAnne10AfterBattleText6 +HereYouGoTextPtr: ; 5295a (14:695a) + TX_FAR _HereYouGoText + db $0D db "@" -SSAnne10Text7: ; 61e70 (18:5e70) - TX_FAR _SSAnne10Text7 +SoYouWantPrizeTextPtr: ; 52960 (14:6960) + TX_FAR _SoYouWantPrizeText db "@" -INCLUDE "data/mapObjects/ssanne10.asm" - -INCLUDE "data/mapHeaders/undergroundpathns.asm" - -UndergroundPathNSScript: ; 61f26 (18:5f26) - jp EnableAutoTextBoxDrawing - -UndergroundPathNSTextPointers: ; 61f29 (18:5f29) +SorryNeedMoreCoinsTextTextPtr: ; 52965 (14:6965) + TX_FAR _SorryNeedMoreCoinsText + db $0D db "@" -INCLUDE "data/mapObjects/undergroundpathns.asm" - -INCLUDE "data/mapHeaders/undergroundpathwe.asm" - -UndergroundPathWEScript: ; 61f4a (18:5f4a) - jp EnableAutoTextBoxDrawing - -UndergroundPathWETextPointers: ; 61f4d (18:5f4d) +PrizeRoomBagIsFullTextPtr: ; 5296b (14:696b) + TX_FAR _OopsYouDontHaveEnoughRoomText + db $0D db "@" -INCLUDE "data/mapObjects/undergroundpathwe.asm" - -INCLUDE "data/mapHeaders/diglettscave.asm" - -DiglettsCaveScript: ; 61f6e (18:5f6e) - jp EnableAutoTextBoxDrawing - -DiglettsCaveTextPointers: ; 61f71 (18:5f71) +OhFineThenTextPtr: ; 52971 (14:6971) + TX_FAR _OhFineThenText + db $0D ; wait keypress (A/B) without blink db "@" -INCLUDE "data/mapObjects/diglettscave.asm" - -DiglettsCaveBlocks: ; 61f86 (18:5f86) - INCBIN "maps/diglettscave.blk" - -INCLUDE "data/mapHeaders/silphco11.asm" - -SilphCo11Script: ; 620fa (18:60fa) - call SilphCo11Script_62110 - call EnableAutoTextBoxDrawing - ld hl, SilphCo11TrainerHeaders - ld de, SilphCo11ScriptPointers - ld a, [W_SILPHCO11CURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_SILPHCO11CURSCRIPT], a - ret - -SilphCo11Script_62110: ; 62110 (18:6110) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - ret z - ld hl, DataTable_62134 ; $6134 - call Func_62137 - call Func_62163 - ld a, [$d838] - bit 0, a - ret nz - ld a, $20 - ld [$d09f], a - ld bc, $603 - ld a, $17 - jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) - -DataTable_62134: ; 62134 (18:6134) - db $06,$03,$FF - -Func_62137: ; 62137 (18:6137) - push hl - ld hl, $d73f - ld a, [hli] - ld b, a - ld a, [hl] - ld c, a - xor a - ld [$ffe0], a - pop hl -.asm_62143 - ld a, [hli] - cp $ff - jr z, .asm_6215f - push hl - ld hl, $ffe0 - inc [hl] - pop hl +GetPrizeMonLevel: ; 52977 (14:6977) + ld a,[$CF91] + ld b,a + ld hl,PrizeMonLevelDictionary +.loop ; 14:697E + ld a,[hli] cp b - jr z, .asm_62154 + jr z,.matchFound inc hl - jr .asm_62143 -.asm_62154 - ld a, [hli] - cp c - jr nz, .asm_62143 - ld hl, $d73f - xor a - ld [hli], a - ld [hl], a - ret -.asm_6215f - xor a - ld [$ffe0], a - ret - -Func_62163: ; 62163 (18:6163) - ld a, [$ffe0] - and a - ret z - ld hl, $d838 - set 0, [hl] - ret - -Func_6216d: ; 6216d (18:616d) - ld hl, MissableObjectIDs_6219b ; $619b -.asm_62170 - ld a, [hli] - cp $ff - jr z, .asm_62181 - push hl - ld [$cc4d], a - ld a, $11 - call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) - pop hl - jr .asm_62170 -.asm_62181 - ld hl, MissableObjectIDs_62194 ; $6194 -.asm_62184 - ld a, [hli] - cp $ff - ret z - push hl - ld [$cc4d], a - ld a, $15 - call Predef ; indirect jump to AddMissableObject (f1c8 (3:71c8)) - pop hl - jr .asm_62184 - -MissableObjectIDs_62194: ; 62194 (18:6194) - db $11,$12,$13,$14,$15,$16,$FF - -MissableObjectIDs_6219b: ; 6219b (18:619b) - db $0A,$0B,$0C,$0D,$0E,$0F,$10,$17 - db $18,$8A,$8B,$8C,$8D,$8E,$8F,$91 - db $92,$93,$97,$98,$99,$9A,$9E,$9F - db $A0,$A3,$A4,$A5,$A6,$AB,$AC,$AD - db $AE,$AF,$B0,$B1,$B2,$B7,$B8,$B9 - db $FF - -SilphCo11Script_621c4: ; 621c4 (18:61c4) - xor a - ld [wJoypadForbiddenButtonsMask], a - -SilphCo11Script_621c8: ; 621c8 (18:61c8) - ld [W_SILPHCO11CURSCRIPT], a - ld [W_CURMAPSCRIPT], a + jr .loop +.matchFound ; 14:6985 + ld a,[hl] + ld [$D127],a ret -SilphCo11ScriptPointers: ; 621cf (18:61cf) - dw SilphCo11Script0 - dw Func_324c - dw EndTrainerBattle - dw SilphCo11Script3 - dw SilphCo11Script4 - dw SilphCo11Script5 - -SilphCo11Script0: ; 621db (18:61db) - ld a, [$d838] - bit 7, a - ret nz - ld hl, CoordsData_62211 ; $6211 - call ArePlayerCoordsInArray - jp nc, CheckFightingMapTrainers - ld a, [wWhichTrade] ; $cd3d - ld [$cf0d], a - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld a, $3 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld a, $3 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call SetSpriteMovementBytesToFF - ld de, MovementData_62216 - call MoveSprite - ld a, $3 - jp SilphCo11Script_621c8 - -CoordsData_62211: ; 62211 (18:6211) - db $0D,$06 - db $0C,$07 - db $FF - -MovementData_62216: ; 62216 (18:6216) - db $00,$00,$00,$FF - -SilphCo11Script_6221a: ; 6221a (18:621a) - ld [$d528], a - ld a, $3 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - ld a, b - ld [$ff8d], a - jp Func_34a6 +PrizeMonLevelDictionary: ; 5298a (14:698a) +IF _RED + db ABRA,9 + db CLEFAIRY,8 + db NIDORINA,17 -SilphCo11Script5: ; 62227 (18:6227) - ld a, [W_ISINBATTLE] ; $d057 - cp $ff - jp z, SilphCo11Script_621c4 - ld a, [$cf0d] - cp $1 - jr z, .asm_6223c - ld a, $2 - ld b, $c - jr .asm_62240 -.asm_6223c - ld a, $8 - ld b, $0 -.asm_62240 - call SilphCo11Script_6221a - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld a, $6 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - call GBFadeIn1 - call Func_6216d - call UpdateSprites - call Delay3 - call GBFadeOut1 - ld hl, $d838 - set 7, [hl] - xor a - ld [wJoypadForbiddenButtonsMask], a - jp SilphCo11Script_621c8 + db DRATINI,18 + db SCYTHER,25 + db PORYGON,26 +ENDC +IF _BLUE + db ABRA,6 + db CLEFAIRY,12 + db NIDORINO,17 -SilphCo11Script3: ; 6226a (18:626a) - ld a, [$d730] - bit 0, a - ret nz - ld a, $3 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call SetSpriteMovementBytesToFF - ld a, [$cf0d] - cp $1 - jr z, .asm_62284 - ld a, $2 - ld b, $c - jr .asm_62288 -.asm_62284 - ld a, $8 - ld b, $0 -.asm_62288 - call SilphCo11Script_6221a - call Delay3 - ld a, $4 - jp SilphCo11Script_621c8 + db PINSIR,20 + db DRATINI,24 + db PORYGON,18 +ENDC -SilphCo11Script4: ; 62293 (18:6293) - ld hl, $d72d - set 6, [hl] - set 7, [hl] - ld hl, UnnamedText_62330 ; $6330 - ld de, UnnamedText_62330 ; $6330 - call PreBattleSaveRegisters - ld a, [H_DOWNARROWBLINKCNT2] ; $ff8c - ld [$cf13], a - call EngageMapTrainer - call InitBattleEnemyParameters - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $5 - jp SilphCo11Script_621c8 - -SilphCo11TextPointers: ; 622b7 (18:62b7) - dw SilphCo11Text1 - dw SilphCo11Text2 - dw SilphCo11Text3 - dw SilphCo11Text4 - dw SilphCo11Text5 - dw SilphCo11Text6 - -SilphCo11TrainerHeaders: ; 622c3 (18:62c3) -SilphCo11TrainerHeader0: ; 622c3 (18:62c3) - db $4 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d837 ; flag's byte - dw SilphCo11BattleText1 ; 0x6344 TextBeforeBattle - dw SilphCo11AfterBattleText1 ; 0x634e TextAfterBattle - dw SilphCo11EndBattleText1 ; 0x6349 TextEndBattle - dw SilphCo11EndBattleText1 ; 0x6349 TextEndBattle - -SilphCo11TrainerHeader1: ; 622cf (18:62cf) - db $5 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d837 ; flag's byte - dw SilphCo11BattleText2 ; 0x635d TextBeforeBattle - dw SilphCo11AfterBattleText2 ; 0x6367 TextAfterBattle - dw SilphCo11EndBattleText2 ; 0x6362 TextEndBattle - dw SilphCo11EndBattleText2 ; 0x6362 TextEndBattle +Func_52996: ; 52996 (14:6996) + call EnableAutoTextBoxDrawing + ld a, $1 + ld [$cc3c], a + ld a, [wTrainerSpriteOffset] + jp Func_3ef5 - db $ff +TMNotebook: ; 529a4 (14:69a4) + TX_FAR TMNotebookText + db $0d + db "@" -SilphCo11Text1: ; 622dc (18:62dc) +ViridianSchoolNotebook: ; 529aa (14:69aa) db $08 ; asm - ld a, [$d838] - bit 5, a - jp nz, .asm_62308 - ld hl, SilphCoPresidentText + ld hl, ViridianSchoolNotebookText1 call PrintText - ld bc, (MASTER_BALL << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, ReceivedSilphCoMasterBallText + call TurnPageSchoolNotebook + jr nz, .doneReading + ld hl, ViridianSchoolNotebookText2 call PrintText - ld hl, $d838 - set 5, [hl] - jr .asm_fd405 ; 0x622fe -.BagFull - ld hl, SilphCoMasterBallNoRoomText + call TurnPageSchoolNotebook + jr nz, .doneReading + ld hl, ViridianSchoolNotebookText3 + call PrintText + call TurnPageSchoolNotebook + jr nz, .doneReading + ld hl, ViridianSchoolNotebookText4 call PrintText - jr .asm_fd405 ; 0x62306 -.asm_62308 ; 0x62308 - ld hl, UnnamedText_6231c + ld hl, ViridianSchoolNotebookText5 call PrintText -.asm_fd405 ; 0x6230e +.doneReading jp TextScriptEnd -SilphCoPresidentText: ; 62311 (18:6311) - TX_FAR _SilphCoPresidentText - db "@" - -ReceivedSilphCoMasterBallText: ; 62316 (18:6316) - TX_FAR _ReceivedSilphCoMasterBallText - db $11, "@" - -UnnamedText_6231c: ; 6231c (18:631c) - TX_FAR _UnnamedText_6231c - db "@" - -SilphCoMasterBallNoRoomText: ; 62321 (18:6321) - TX_FAR _SilphCoMasterBallNoRoomText - db "@" - -SilphCo11Text2: ; 62326 (18:6326) - TX_FAR _SilphCo11Text2 - db "@" +TurnPageSchoolNotebook: ; 529db (14:69db) + ld hl, TurnPageText + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + ret -SilphCo11Text3: ; 6232b (18:632b) - TX_FAR _SilphCo11Text3 +TurnPageText: ; 529e9 (14:69e9) + TX_FAR _TurnPageText db "@" -UnnamedText_62330: ; 62330 (18:6330) - TX_FAR _UnnamedText_62330 +ViridianSchoolNotebookText5: ; 529ee (14:69ee) + TX_FAR _ViridianSchoolNotebookText5 + db $0d db "@" -SilphCo11Text6: ; 62335 (18:6335) - TX_FAR _UnnamedText_62335 +ViridianSchoolNotebookText1: ; 529f4 (14:69f4) + TX_FAR _ViridianSchoolNotebookText1 db "@" -SilphCo11Text4: ; 6233a (18:633a) - db $08 ; asm - ld hl, SilphCo11TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -SilphCo11BattleText1: ; 62344 (18:6344) - TX_FAR _SilphCo11BattleText1 +ViridianSchoolNotebookText2: ; 529f9 (14:69f9) + TX_FAR _ViridianSchoolNotebookText2 db "@" -SilphCo11EndBattleText1: ; 62349 (18:6349) - TX_FAR _SilphCo11EndBattleText1 +ViridianSchoolNotebookText3: ; 529fe (14:69fe) + TX_FAR _ViridianSchoolNotebookText3 db "@" -SilphCo11AfterBattleText1: ; 6234e (18:634e) - TX_FAR _SilphCo11AfterBattleText1 +ViridianSchoolNotebookText4: ; 52a03 (14:6a03) + TX_FAR _ViridianSchoolNotebookText4 db "@" -SilphCo11Text5: ; 62353 (18:6353) - db $08 ; asm - ld hl, SilphCo11TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd +Func_52a08: ; 52a08 (14:6a08) + call EnableAutoTextBoxDrawing + ld a, $37 + jp Func_3ef5 -SilphCo11BattleText2: ; 6235d (18:635d) - TX_FAR _SilphCo11BattleText2 +UnnamedText_52a10: ; 52a10 (14:6a10) + TX_FAR _UnnamedText_52a10 db "@" -SilphCo11EndBattleText2: ; 62362 (18:6362) - TX_FAR _SilphCo11EndBattleText2 - db "@" +Func_52a15: ; 52a15 (14:6a15) + call EnableAutoTextBoxDrawing + ld a, $38 + jp Func_3ef5 -SilphCo11AfterBattleText2: ; 62367 (18:6367) - TX_FAR _SilphCo11AfterBattleText2 +UnnamedText_52a1d: ; 52a1d (14:6a1d) + TX_FAR _UnnamedText_52a1d db "@" -UnnamedText_6236c: ; 6236c (18:636c) - db $8 - ld hl, UnnamedText_6237b - call PrintText - ld a, PORYGON - call DisplayPokedex - jp TextScriptEnd +Func_52a22: ; 52a22 (14:6a22) + call EnableAutoTextBoxDrawing + ld a, $36 + jp Func_3ef5 -UnnamedText_6237b: ; 6237b (18:637b) - TX_FAR _UnnamedText_6237b +FightingDojoText: ; 52a2a (14:6a2a) + TX_FAR _FightingDojoText db "@" -INCLUDE "data/mapObjects/silphco11.asm" - -SilphCo11Blocks: ; 623c8 (18:63c8) - INCBIN "maps/silphco11.blk" - -GymStatues: ; 62419 (18:6419) -; if in a gym and have the corresponding badge, a = $D and jp Func_3ef5 -; if in a gym and don’t have the corresponding badge, a = $C and jp Func_3ef5 -; else ret - call EnableAutoTextBoxDrawing +Func_52a2f: ; 52a2f (14:6a2f) ld a, [$c109] cp $4 ret nz - ld hl, .BadgeFlags - ld a, [W_CURMAP] - ld b, a -.asm_62429 - ld a, [hli] - cp $ff - ret z - cp b - jr z, .asm_62433 ; 0x6242e $3 - inc hl - jr .asm_62429 ; 0x62431 $f6 -.asm_62433 - ld b, [hl] - ld a, [$d72a] - and b - cp b - ld a, $d - jr z, .asm_6243f ; 0x6243b $2 - ld a, $c -.asm_6243f - jp Func_3ef5 - -.BadgeFlags: ; 62442 (18:6442) - db PEWTER_GYM, %00000001 - db CERULEAN_GYM, %00000010 - db VERMILION_GYM,%00000100 - db CELADON_GYM, %00001000 - db FUCHSIA_GYM, %00010000 - db SAFFRON_GYM, %00100000 - db CINNABAR_GYM, %01000000 - db VIRIDIAN_GYM, %10000000 - db $ff - -GymStatueText1: ; 62453 (18:6453) - TX_FAR _GymStatueText1 - db "@" - -GymStatueText2: ; 62458 (18:6458) - TX_FAR _GymStatueText2 - db "@" - -Func_6245d: ; 6245d (18:645d) call EnableAutoTextBoxDrawing - ld hl, PokeCenterMapIDList - ld a, [W_CURMAP] - ld b, a -.asm_62467 - ld a, [hli] - cp $ff - ret z - cp b - jr z, .asm_62472 - inc hl - inc hl - jr .asm_62467 -.asm_62472 - ld a, [hli] - ld b, a - ld a, [$c109] - cp b - jr nz, .asm_62467 - ld a, [hl] + ld a, $27 jp Func_3ef5 -; format: db map id, 08, text id of PointerTable_3f22 -PokeCenterMapIDList: ; 6247e (18:647e) - db VIRIDIAN_POKECENTER,$08,$0F - db PEWTER_POKECENTER,$08,$10 - db CERULEAN_POKECENTER,$08,$11 - db LAVENDER_POKECENTER,$08,$12 - db VERMILION_POKECENTER,$08,$13 - db CELADON_POKECENTER,$08,$14 - db CELADON_HOTEL,$08,$15 - db FUCHSIA_POKECENTER,$08,$16 - db CINNABAR_POKECENTER,$08,$17 - db SAFFRON_POKECENTER,$08,$18 - db MT_MOON_POKECENTER,$08,$19 - db ROCK_TUNNEL_POKECENTER,$08,$1A - db $FF - -ViridianCityPokecenterBenchGuyText: ; 624a3 (18:64a3) - TX_FAR _ViridianCityPokecenterGuyText +IndigoPlateauHQText: ; 52a3d (14:6a3d) + TX_FAR _IndigoPlateauHQText db "@" -PewterCityPokecenterBenchGuyText: ; 624a8 (18:64a8) - TX_FAR _PewterCityPokecenterGuyText - db "@" +SECTION "bank15",ROMX,BANK[$15] -CeruleanCityPokecenterBenchGuyText: ; 624ad (18:64ad) - TX_FAR _CeruleanPokecenterGuyText - db "@" +INCLUDE "data/mapHeaders/route2.asm" -LavenderCityPokecenterBenchGuyText: ; 624b2 (18:64b2) - TX_FAR _LavenderPokecenterGuyText - db "@" +INCLUDE "data/mapObjects/route2.asm" -MtMoonPokecenterBenchGuyText: ; 624b7 (18:64b7) - TX_FAR _MtMoonPokecenterBenchGuyText - db "@" +Route2Blocks: ; 5407e (15:407e) + INCBIN "maps/route2.blk" -RockTunnelPokecenterBenchGuyText: ; 624bc (18:64bc) - TX_FAR _RockTunnelPokecenterGuyText - db "@" +INCLUDE "data/mapHeaders/route3.asm" -UnnamedText_624c1: ; 624c1 (18:64c1) - TX_FAR _UnnamedText_624c1 - db "@" +INCLUDE "data/mapObjects/route3.asm" -UnnamedText_624c6: ; 624c6 (18:64c6) - TX_FAR _UnnamedText_624c6 - db "@" +Route3Blocks: ; 54255 (15:4255) + INCBIN "maps/route3.blk" -UnnamedText_624cb: ; 624cb (18:64cb) - TX_FAR _UnnamedText_624cb - db "@" +INCLUDE "data/mapHeaders/route4.asm" -VermilionCityPokecenterBenchGuyText: ; 624d0 (18:64d0) - TX_FAR _VermilionPokecenterGuyText - db "@" +INCLUDE "data/mapObjects/route4.asm" -CeladonCityPokecenterBenchGuyText: ; 624d5 (18:64d5) - TX_FAR _CeladonCityPokecenterGuyText - db "@" +Route4Blocks: ; 543ec (15:43ec) + INCBIN "maps/route4.blk" -FuchsiaCityPokecenterBenchGuyText: ; 624da (18:64da) - TX_FAR _FuchsiaCityPokecenterGuyText - db "@" +INCLUDE "data/mapHeaders/route5.asm" -CinnabarIslandPokecenterBenchGuyText: ; 624df (18:64df) - TX_FAR _CinnabarPokecenterGuyText - db "@" +INCLUDE "data/mapObjects/route5.asm" -SaffronCityPokecenterBenchGuyText: ; 624e4 (18:64e4) - db $8 ; asm - ld a, [$d838] - bit 7, a - ld hl, SaffronCityPokecenterBenchGuyText2 - jr nz, .asm_624f2 ; 0x624ed $3 - ld hl, SaffronCityPokecenterBenchGuyText1 -.asm_624f2 - call PrintText - jp TextScriptEnd +Route5Blocks: ; 545d2 (15:45d2) + INCBIN "maps/route5.blk" -SaffronCityPokecenterBenchGuyText1: ; 624f8 (18:64f8) - TX_FAR _SaffronCityPokecenterGuyText1 - db "@" +INCLUDE "data/mapHeaders/route9.asm" -SaffronCityPokecenterBenchGuyText2: ; 624fd (18:64fd) - TX_FAR _SaffronCityPokecenterGuyText2 - db "@" +INCLUDE "data/mapObjects/route9.asm" -CeladonCityHotelText: ; 62502 (18:6502) - TX_FAR _CeladonCityHotelText - db "@" +Route9Blocks: ; 546fe (15:46fe) + INCBIN "maps/route9.blk" - ret +INCLUDE "data/mapHeaders/route13.asm" -TerminatorText_62508: ; 62508 (18:6508) - db "@" +INCLUDE "data/mapObjects/route13.asm" -Func_62509: ; 6509 (18:6509) - call EnableAutoTextBoxDrawing - ld a, $e - jp Func_3ef5 +Route13Blocks: ; 5488b (15:488b) + INCBIN "maps/route13.blk" -BookcaseText: ; 62511 (18:6511) - TX_FAR _BookcaseText - db "@" +INCLUDE "data/mapHeaders/route14.asm" -Func_62516: ; 62516 (18:6516) - ld a, [$c109] - cp $4 ; check to see if player is facing up - ret nz - call EnableAutoTextBoxDrawing - ld a, $1 - ld [$cf0c], a - ld a, $1f - jp Func_3ef5 +INCLUDE "data/mapObjects/route14.asm" -Unknown_62529: ; 62529 (18:6529) - db $F9 +Route14Blocks: ; 54a12 (15:4a12) + INCBIN "maps/route14.blk" -SECTION "bank19",ROMX,BANK[$19] +INCLUDE "data/mapHeaders/route17.asm" -Overworld_GFX: ; 64000 (19:4000) - INCBIN "gfx/tilesets/overworld.w128.t2.2bpp" -Overworld_Block: ; 645e0 (19:45e0) - INCBIN "gfx/blocksets/overworld.bst" -RedsHouse1_GFX: -RedsHouse2_GFX: ; 64de0 (19:4de0) - INCBIN "gfx/tilesets/reds_house.w128.t7.2bpp" -RedsHouse1_Block: -RedsHouse2_Block: ; 65270 (19:5270) - INCBIN "gfx/blocksets/reds_house.bst" -House_GFX: ; 653a0 (19:53a0) - INCBIN "gfx/tilesets/house.w128.t2.2bpp" -House_Block: ; 65980 (19:5980) - INCBIN "gfx/blocksets/house.bst" -Mansion_GFX: ; 65bb0 (19:5bb0) - INCBIN "gfx/tilesets/mansion.w128.t2.2bpp" -Mansion_Block: ; 66190 (19:6190) - INCBIN "gfx/blocksets/mansion.bst" -ShipPort_GFX: ; 66610 (19:6610) - INCBIN "gfx/tilesets/ship_port.w128.t2.2bpp" -ShipPort_Block: ; 66bf0 (19:6bf0) - INCBIN "gfx/blocksets/ship_port.bst" -Interior_GFX: ; 66d60 (19:6d60) - INCBIN "gfx/tilesets/interior.w128.t1.2bpp" -Interior_Block: ; 67350 (19:7350) - INCBIN "gfx/blocksets/interior.bst" -Plateau_GFX: ; 676f0 (19:76f0) - INCBIN "gfx/tilesets/plateau.w128.t10.2bpp" -Plateau_Block: ; 67b50 (19:7b50) - INCBIN "gfx/blocksets/plateau.bst" +INCLUDE "data/mapObjects/route17.asm" -SECTION "bank1A",ROMX,BANK[$1A] +Route17Blocks: ; 54ba8 (15:4ba8) + INCBIN "maps/route17.blk" -DecrementPP: ; 68000 (1a:4000) -; after using a move, decrement pp in battle and (if not transformed?) in party - ld a, [de] - cp a, STRUGGLE - ret z ; if the pokemon is using "struggle", there's nothing to do - ; we don't decrement PP for "struggle" - ld hl, W_PLAYERBATTSTATUS1 - ld a, [hli] ; load the W_PLAYERBATTSTATUS1 pokemon status flags and increment hl to load the - ; W_PLAYERBATTSTATUS2 status flags later - and a, 7 ; check to see if bits 0, 1, or 2 are set - ret nz ; if any of these statuses are true, don't decrement PP - bit 6, [hl] ; check 6th bit status flag on W_PLAYERBATTSTATUS2 - ret nz ; and return if it is set - ld hl, $D02D ; PP of first move (in battle) - call .DecrementPP +INCLUDE "data/mapHeaders/route19.asm" - ld a, [$D064] ; load pokemon status bits? - bit 3, a ; XXX transform status? - ret nz ; If it is, return. Pokemon Red stores the "current pokemon's" PP - ; separately from the "Pokemon in your party's" PP. This is - ; duplication -- in all cases *other* than Pokemon with Transform. - ; Normally, this means we have to go on and make the same - ; modification to the "party's pokemon" PP that we made to the - ; "current pokemon's" PP. But, if we're dealing with a Transformed - ; Pokemon, it has separate PP for the move set that it copied from - ; its opponent, which is *not* the same as its real PP as part of your - ; party. So we return, and don't do that part. +INCLUDE "data/mapObjects/route19.asm" - ld hl, $D188 ; PP of first move (in party) - ld a, [$CC2F] ; which mon in party is active - ld bc, $2C ; XXX probably size of party pokemon's data structure - call AddNTimes ; calculate address of the mon to modify -.DecrementPP - ld a, [$CC2E] ; which move (0, 1, 2, 3) did we use? - ld c, a - ld b, 0 - add hl ,bc ; calculate the address in memory of the PP we need to decrement - ; based on the move chosen. - dec [hl] ; Decrement PP - ret +Route19Blocks: ; 54ef1 (15:4ef1) + INCBIN "maps/route19.blk" -Version_GFX: ; 6802f (1a:402f) -IF _RED - INCBIN "gfx/red/redgreenversion.h8.1bpp" - ; 80 bytes -ENDC -IF _BLUE - INCBIN "gfx/blue/blueversion.h8.1bpp" - ; 64 bytes -ENDC +INCLUDE "data/mapHeaders/route21.asm" -Dojo_GFX: -Gym_GFX: ; 6807f (1a:407f) - INCBIN "gfx/tilesets/gym.w128.2bpp" -Dojo_Block: -Gym_Block: ; 6867f (1a:467f) - INCBIN "gfx/blocksets/gym.bst" -Mart_GFX: -Pokecenter_GFX: ; 68dbf (1a:4dbf) - INCBIN "gfx/tilesets/pokecenter.w128.2bpp" -Mart_Block: -Pokecenter_Block: ; 693bf (1a:53bf) - INCBIN "gfx/blocksets/pokecenter.bst" -ForestGate_GFX: -Museum_GFX: -Gate_GFX: ; 6960f (1a:560f) - INCBIN "gfx/tilesets/gate.w128.t1.2bpp" -ForestGate_Block: -Museum_Block: -Gate_Block: ; 69bff (1a:5bff) - INCBIN "gfx/blocksets/gate.bst" -Forest_GFX: ; 6a3ff (1a:63ff) - INCBIN "gfx/tilesets/forest.w128.2bpp" -Forest_Block: ; 6a9ff (1a:69ff) - INCBIN "gfx/blocksets/forest.bst" -Facility_GFX: ; 6b1ff (1a:71ff) - INCBIN "gfx/tilesets/facility.w128.2bpp" -Facility_Block: ; 6b7ff (1a:77ff) - INCBIN "gfx/blocksets/facility.bst" +INCLUDE "data/mapObjects/route21.asm" -SECTION "bank1B",ROMX,BANK[$1B] +Route21Blocks: ; 5506d (15:506d) + INCBIN "maps/route21.blk" -Cemetery_GFX: ; 6c000 (1b:4000) - INCBIN "gfx/tilesets/cemetery.w128.t4.2bpp" -Cemetery_Block: ; 6c5c0 (1b:45c0) - INCBIN "gfx/blocksets/cemetery.bst" -Cavern_GFX: ; 6cca0 (1b:4ca0) - INCBIN "gfx/tilesets/cavern.w128.t14.2bpp" -Cavern_Block: ; 6d0c0 (1b:50c0) - INCBIN "gfx/blocksets/cavern.bst" -Lobby_GFX: ; 6d8c0 (1b:58c0) - INCBIN "gfx/tilesets/lobby.w128.t2.2bpp" -Lobby_Block: ; 6dea0 (1b:5ea0) - INCBIN "gfx/blocksets/lobby.bst" -Ship_GFX: ; 6e390 (1b:6390) - INCBIN "gfx/tilesets/ship.w128.t6.2bpp" -Ship_Block: ; 6e930 (1b:6930) - INCBIN "gfx/blocksets/ship.bst" -Lab_GFX: ; 6ed10 (1b:6d10) - INCBIN "gfx/tilesets/lab.w128.t4.2bpp" -Lab_Block: ; 6f2d0 (1b:72d0) - INCBIN "gfx/blocksets/lab.bst" -Club_GFX: ; 6f670 (1b:7670) - INCBIN "gfx/tilesets/club.w128.t5.2bpp" -Club_Block: ; 6fb20 (1b:7b20) - INCBIN "gfx/blocksets/club.bst" -Underground_GFX: ; 6fd60 (1b:7d60) - INCBIN "gfx/tilesets/underground.w128.t7.2bpp" -Underground_Block: ; 6fef0 (1b:7ef0) - INCBIN "gfx/blocksets/underground.bst" +VermilionHouse2Blocks: ; 5522f (15:522f) +Route12HouseBlocks: ; 5522f (15:522f) +DayCareMBlocks: ; 5522f (15:522f) + INCBIN "maps/daycarem.blk" -SECTION "bank1C",ROMX,BANK[$1C] +FuchsiaHouse3Blocks: ; 5523f (15:523f) + INCBIN "maps/fuchsiahouse3.blk" -LoadShootingStarGraphics: ; 70000 (1c:4000) - ld a, $f9 - ld [rOBP0], a ; $ff48 - ld a, $a4 - ld [rOBP1], a ; $ff49 - ld de, AnimationTileset2 + $30 ; $471e ; star tile (top left quadrant) - ld hl, $8a00 - ld bc, (BANK(AnimationTileset2) << 8) + $01 - call CopyVideoData - ld de, AnimationTileset2 + $130 ; $481e ; star tile (bottom left quadrant) - ld hl, $8a10 - ld bc, (BANK(AnimationTileset2) << 8) + $01 - call CopyVideoData - ld de, FallingStar ; $4190 - ld hl, $8a20 - ld bc, (BANK(FallingStar) << 8) + $01 - call CopyVideoData - ld hl, GameFreakLogoOAMData ; $4140 - ld de, wOAMBuffer + $60 - ld bc, $40 - call CopyData - ld hl, GameFreakShootingStarOAMData ; $4180 - ld de, wOAMBuffer - ld bc, $10 - jp CopyData +Func_5524f: ; 5524f (15:524f) + ld a, [W_ISLINKBATTLE] ; $d12b + cp $4 + ret z + call Func_5546c + ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) + xor a + ld [wWhichPokemon], a ; $cf92 -AnimateShootingStar: ; 70044 (1c:4044) - call LoadShootingStarGraphics - ld a, (SFX_1f_67 - SFX_Headers_1f) / 3 - call PlaySound - ld hl, wOAMBuffer - ld bc, $a004 -.asm_70052 +Func_5525f: ; 5525f (15:525f) + inc hl + ld a, [hli] + or [hl] + jp z, Func_55436 push hl - push bc -.asm_70054 + ld hl, W_PLAYERMONSALIVEFLAGS + ld a, [wWhichPokemon] ; $cf92 + ld c, a + ld b, $2 + ld a, $10 + call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) + ld a, c + and a + pop hl + jp z, Func_55436 + ld de, $10 + add hl, de + ld d, h + ld e, l + ld hl, $d002 + ld c, $5 +.asm_55285 + ld a, [hli] + ld b, a + ld a, [de] + add b + ld [de], a + jr nc, .asm_5529a + dec de + ld a, [de] + inc a + jr z, .asm_55295 + ld [de], a + inc de + jr .asm_5529a +.asm_55295 + ld a, $ff + ld [de], a + inc de + ld [de], a +.asm_5529a + dec c + jr z, .asm_552a1 + inc de + inc de + jr .asm_55285 +.asm_552a1 + xor a + ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) + ld [$ff97], a + ld a, [$d008] + ld [$ff98], a + ld a, [W_ENEMYMONLEVEL] ; $cff3 + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + call Multiply + ld a, $7 + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + ld b, $4 + call Divide + ld hl, $fff2 + add hl, de + ld b, [hl] + inc hl + ld a, [wPlayerID] ; $d359 + cp b + jr nz, .asm_552d1 + ld b, [hl] + ld a, [wPlayerID + 1] ; $d35a + cp b + ld a, $0 + jr z, .asm_552d6 +.asm_552d1 + call Func_5549f + ld a, $1 +.asm_552d6 + ld [$cf4d], a + ld a, [W_ISINBATTLE] ; $d057 + dec a + call nz, Func_5549f + inc hl + inc hl + inc hl + ld b, [hl] + ld a, [$ff98] + ld [$cf4c], a + add b + ld [hld], a + ld b, [hl] + ld a, [$ff97] + ld [$cf4b], a + adc b + ld [hl], a + jr nc, .asm_552f8 + dec hl + inc [hl] + inc hl +.asm_552f8 + inc hl + push hl + ld a, [wWhichPokemon] ; $cf92 + ld c, a + ld b, $0 + ld hl, W_PARTYMON1 ; $d164 + add hl, bc ld a, [hl] - add $4 - ld [hli], a + ld [$d0b5], a + call GetMonHeader + ld d, $64 + ld hl, CalcExperience + ld b, BANK(CalcExperience) + call Bankswitch + ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND) + ld b, a + ld a, [$ff97] + ld c, a + ld a, [$ff98] + ld d, a + pop hl + ld a, [hld] + sub d + ld a, [hld] + sbc c ld a, [hl] - add $fc + sbc b + jr c, .asm_5532e + ld a, b ld [hli], a - inc hl - inc hl - dec c - jr nz, .asm_70054 - ld c, $1 - call CheckForUserInterruption + ld a, c + ld [hli], a + ld a, d + ld [hld], a + dec hl +.asm_5532e + push hl + ld a, [wWhichPokemon] ; $cf92 + ld hl, W_PARTYMON1NAME ; $d2b5 + call GetPartyMonName + ld hl, GainedText + call PrintText + xor a + ld [$cc49], a + call LoadMonData + pop hl + ld bc, $13 + add hl, bc + push hl + ld b, BANK(Func_58f43) + ld hl, Func_58f43 + call Bankswitch + pop hl + ld a, [hl] + cp d + jp z, Func_55436 + ld a, [W_CURENEMYLVL] ; $d127 + push af + push hl + ld a, d + ld [W_CURENEMYLVL], a ; $d127 + ld [hl], a + ld bc, $ffdf + add hl, bc + ld a, [hl] + ld [$d0b5], a + ld [$d11e], a + call GetMonHeader + ld bc, $23 + add hl, bc + push hl + ld a, [hld] + ld c, a + ld b, [hl] + push bc + ld d, h + ld e, l + ld bc, $ffee + add hl, bc + ld b, $1 + call CalcStats pop bc pop hl - ret c + ld a, [hld] + sub c + ld c, a ld a, [hl] - cp $50 - jr nz, .asm_70070 - jr .asm_70052 -.asm_70070 - cp b - jr nz, .asm_70052 - ld hl, wOAMBuffer - ld c, $4 - ld de, $4 -.asm_7007b - ld [hl], $a0 + sbc b + ld b, a + ld de, $ffe0 add hl, de - dec c - jr nz, .asm_7007b - ld b, $3 -.asm_70083 - ld hl, rOBP0 ; $ff48 - rrc [hl] - rrc [hl] - ld c, $a - call CheckForUserInterruption - ret c - dec b - jr nz, .asm_70083 - ld de, wOAMBuffer - ld a, $18 -.asm_70098 - push af - ld hl, OAMData_700ee ; $40ee - ld bc, $4 + ld a, [hl] + add c + ld [hld], a + ld a, [hl] + adc b + ld [hl], a + ld a, [wPlayerMonNumber] ; $cc2f + ld b, a + ld a, [wWhichPokemon] ; $cf92 + cp b + jr nz, .asm_553f7 + ld de, W_PLAYERMONCURHP ; $d015 + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + ld bc, $1f + add hl, bc + push hl + ld de, W_PLAYERMONLEVEL ; $d022 + ld bc, $b + call CopyData + pop hl + ld a, [W_PLAYERBATTSTATUS3] ; $d064 + bit 3, a + jr nz, .asm_553c8 + ld de, $cd0f + ld bc, $b call CopyData +.asm_553c8 + xor a + ld [$d11e], a + ld hl, Func_3ed99 + ld b, BANK(Func_3ed99) + call Bankswitch + ld hl, Func_3ed1a + ld b, BANK(Func_3ed1a) + call Bankswitch + ld hl, Func_3ee19 + ld b, BANK(Func_3ee19) + call Bankswitch + ld hl, Func_3cd60 + ld b, BANK(Func_3cd60) + call Bankswitch + ld hl, Func_3ee94 + ld b, BANK(Func_3ee94) + call Bankswitch + call SaveScreenTilesToBuffer1 +.asm_553f7 + ld hl, GrewLevelText + call PrintText + xor a + ld [$cc49], a + call LoadMonData + ld d, $1 + ld hl, PrintStatsBox + ld b, BANK(PrintStatsBox) + call Bankswitch + call WaitForTextScrollButtonPress + call LoadScreenTilesFromBuffer1 + xor a + ld [$cc49], a + ld a, [$d0b5] + ld [$d11e], a + ld a, $1a + call Predef ; indirect jump to Func_3af5b (3af5b (e:6f5b)) + ld hl, $ccd3 + ld a, [wWhichPokemon] ; $cf92 + ld c, a + ld b, $1 + ld a, $10 + call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) + pop hl pop af - dec a - jr nz, .asm_70098 + ld [W_CURENEMYLVL], a ; $d127 + +Func_55436: ; 55436 (15:5436) + ld a, [W_NUMINPARTY] ; $d163 + ld b, a + ld a, [wWhichPokemon] ; $cf92 + inc a + cp b + jr z, .asm_55450 + ld [wWhichPokemon], a ; $cf92 + ld bc, $2c + ld hl, W_PARTYMON1_NUM ; $d16b (aliases: W_PARTYMON1DATA) + call AddNTimes + jp Func_5525f +.asm_55450 + ld hl, W_PLAYERMONSALIVEFLAGS xor a - ld [wWhichTrade], a ; $cd3d - ld hl, PointerTable_700f2 ; $40f2 - ld c, $6 -.asm_700af - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a + ld [hl], a + ld a, [wPlayerMonNumber] ; $cc2f + ld c, a + ld b, $1 push bc - push hl - ld hl, wOAMBuffer + $50 - ld c, $4 -.asm_700ba - ld a, [de] - cp $ff - jr z, .asm_700d5 - ld [hli], a - inc de - ld a, [de] - ld [hli], a - inc de - inc hl - inc hl - dec c - jr nz, .asm_700ba - ld a, [wWhichTrade] ; $cd3d - cp $18 - jr z, .asm_700d5 - add $6 - ld [wWhichTrade], a ; $cd3d -.asm_700d5 - call Func_7011f - push af - ld hl, $c310 - ld de, wOAMBuffer - ld bc, $50 - call CopyData - pop af - pop hl + ld a, $10 + call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) + ld hl, $ccf5 + xor a + ld [hl], a pop bc + ld a, $10 + jp Predef ; indirect jump to HandleBitArray (f666 (3:7666)) + +Func_5546c: ; 5546c (15:546c) + ld a, [W_PLAYERMONSALIVEFLAGS] + ld b, a + xor a + ld c, $8 + ld d, $0 +.asm_55475 + xor a + srl b + adc d + ld d, a + dec c + jr nz, .asm_55475 + cp $2 ret c + ld [$d11e], a + ld hl, $d002 + ld c, $7 +.asm_55488 + xor a + ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT) + ld a, [hl] + ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) + ld a, [$d11e] + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + ld b, $2 + call Divide + ld a, [$ff98] + ld [hli], a dec c - jr nz, .asm_700af + jr nz, .asm_55488 + ret + +Func_5549f: ; 5549f (15:549f) + ld a, [$ff97] + ld b, a + ld a, [$ff98] + ld c, a + srl b + rr c + add c + ld [$ff98], a + ld a, [$ff97] + adc b + ld [$ff97], a + ret + +GainedText: ; 554b2 (15:54b2) + TX_FAR _GainedText + db $08 ; asm + ld a, [$cc5b] + ld hl, WithExpAllText + and a + ret nz + ld hl, ExpPointsText + ld a, [$cf4d] and a + ret z + ld hl, BoostedText ret -OAMData_700ee: ; 700ee (1c:40ee) - db $00,$00,$A2,$90 +WithExpAllText: ; 554cb (15:54cb) + TX_FAR _WithExpAllText + db $08 ; asm + ld hl, ExpPointsText + ret -PointerTable_700f2: ; 700f2 (1c:40f2) - dw OAMData_700fe - dw OAMData_70106 - dw OAMData_7010e - dw OAMData_70116 - dw OAMData_7011e - dw OAMData_7011e +BoostedText: ; 554d4 (15:54d4) + TX_FAR _BoostedText -; each entry is only half of an OAM tile -OAMData_700fe: ; 700fe (1c:40fe) - db $68,$30 - db $68,$40 - db $68,$58 - db $68,$78 +ExpPointsText: ; 554d8 (15:54d8) + TX_FAR _ExpPointsText + db "@" -OAMData_70106: ; 70106 (1c:4106) - db $68,$38 - db $68,$48 - db $68,$60 - db $68,$70 +GrewLevelText: ; 554dd (15:54dd) + TX_FAR _GrewLevelText + db $0b + db "@" -OAMData_7010e: ; 7010e (1c:410e) - db $68,$34 - db $68,$4C - db $68,$54 - db $68,$64 +INCLUDE "scripts/route2.asm" -OAMData_70116: ; 70116 (1c:4116) - db $68,$3C - db $68,$5C - db $68,$6C - db $68,$74 +INCLUDE "scripts/route3.asm" -OAMData_7011e: ; 7011e (1c:411e) - db $FF +INCLUDE "scripts/route4.asm" -Func_7011f: ; 7011f (1c:411f) - ld b, $8 -.asm_70121 - ld hl, $c35c - ld a, [wWhichTrade] ; $cd3d - ld de, $fffc - ld c, a -.asm_7012b - inc [hl] - add hl, de - dec c - jr nz, .asm_7012b - ld a, [rOBP1] ; $ff49 - xor $a0 - ld [rOBP1], a ; $ff49 - ld c, $3 - call CheckForUserInterruption - ret c - dec b - jr nz, .asm_70121 - ret +INCLUDE "scripts/route5.asm" -GameFreakLogoOAMData: ; 70140 (1c:4140) - db $48,$50,$8D,$00 - db $48,$58,$8E,$00 - db $50,$50,$8F,$00 - db $50,$58,$90,$00 - db $58,$50,$91,$00 - db $58,$58,$92,$00 - db $60,$30,$80,$00 - db $60,$38,$81,$00 - db $60,$40,$82,$00 - db $60,$48,$83,$00 - db $60,$50,$93,$00 - db $60,$58,$84,$00 - db $60,$60,$85,$00 - db $60,$68,$83,$00 - db $60,$70,$81,$00 - db $60,$78,$86,$00 +INCLUDE "scripts/route9.asm" -GameFreakShootingStarOAMData: ; 70180 (1c:4180) - db $00,$A0,$A0,$10 - db $00,$A8,$A0,$30 - db $08,$A0,$A1,$10 - db $08,$A8,$A1,$30 +INCLUDE "scripts/route13.asm" -FallingStar: ; 70190 (1c:4190) - INCBIN "gfx/falling_star.2bpp" +INCLUDE "scripts/route14.asm" -Func_701a0: ; 701a0 (1c:41a0) - call Func_70423 - call ClearScreen - ld c, $64 - call DelayFrames - call LoadFontTilePatterns - call LoadTextBoxTilePatterns - call DisableLCD - ld hl, $9800 - ld bc, $800 - ld a, $7f - call FillMemory - call EnableLCD - ld hl, rLCDC ; $ff40 - set 3, [hl] - xor a - ld hl, $cc5b - ld bc, $60 - call FillMemory - xor a - ld [$cfcb], a - ld [$ffd7], a - ld [W_SPRITEFLIPPED], a - ld [$d358], a - ld [$cd40], a - inc a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ld hl, $d5a2 - ld a, [hl] - inc a - jr z, .asm_701eb - inc [hl] -.asm_701eb - ld a, $90 - ld [$ffb0], a - ld c, BANK(Music_HallOfFame) - ld a, MUSIC_HALL_OF_FAME - call PlayMusic - ld hl, W_PARTYMON1 ; $d164 - ld c, $ff -.asm_701fb - ld a, [hli] - cp $ff - jr z, .asm_70241 - inc c - push hl - push bc - ld [wWhichTrade], a ; $cd3d - ld a, c - ld [$cd3e], a - ld hl, W_PARTYMON1_LEVEL ; $d18c - ld bc, $2c - call AddNTimes - ld a, [hl] - ld [$cd3f], a - call Func_70278 - call Func_702e1 - ld c, $50 - call DelayFrames - FuncCoord 2, 13 ; $c4a6 - ld hl, Coord - ld b, $3 - ld c, $e - call TextBoxBorder - FuncCoord 4, 15 ; $c4d0 - ld hl, Coord - ld de, HallOfFameText - call PlaceString - ld c, $b4 - call DelayFrames - call GBFadeOut2 - pop bc - pop hl - jr .asm_701fb -.asm_70241 - ld a, c - inc a - ld hl, $cc5b - ld bc, $10 - call AddNTimes - ld [hl], $ff - call Func_73b0d - xor a - ld [wWhichTrade], a ; $cd3d - inc a - ld [$cd40], a - call Func_70278 - call Func_70377 - call Func_70423 - xor a - ld [$ffb0], a - ld hl, rLCDC ; $ff40 - res 3, [hl] - ret +INCLUDE "scripts/route17.asm" -HallOfFameText: ; 7026b (1c:426b) - db "HALL OF FAME@" +INCLUDE "scripts/route19.asm" -Func_70278: ; 70278 (1c:4278) - call ClearScreen - ld a, $d0 - ld [$ffaf], a - ld a, $c0 - ld [$ffae], a - ld a, [wWhichTrade] ; $cd3d - ld [$cf91], a - ld [$d0b5], a - ld [$cfd9], a - ld [$cf1d], a - ld a, [$cd40] - and a - jr z, .asm_7029d - call Func_7033e - jr .asm_702ab -.asm_7029d - FuncCoord 12, 5 ; $c410 - ld hl, Coord - call GetMonHeader - call LoadFrontSpriteByMonIndex - ld a, $4 - call Predef ; indirect jump to LoadMonBackSprite (3f103 (f:7103)) -.asm_702ab - ld b, $b - ld c, $0 - call GoPAL_SET - ld a, $e4 - ld [rBGP], a ; $ff47 - ld c, $31 - call Func_7036d - ld d, $a0 - ld e, $4 - ld a, [$cf1b] - and a - jr z, .asm_702c7 - sla e -.asm_702c7 - call .asm_702d5 - xor a - ld [$ffaf], a - ld c, a - call Func_7036d - ld d, $0 - ld e, $fc -.asm_702d5 - call DelayFrame - ld a, [$ffae] - add e - ld [$ffae], a - cp d - jr nz, .asm_702d5 - ret +INCLUDE "scripts/route21.asm" -Func_702e1: ; 702e1 (1c:42e1) - ld a, [$cd3e] - ld hl, W_PARTYMON1NAME ; $d2b5 - call GetPartyMonName - call Func_702f0 - jp Func_70404 +INCLUDE "data/mapHeaders/vermilionhouse2.asm" -Func_702f0: ; 702f0 (1c:42f0) - FuncCoord 0, 2 ; $c3c8 - ld hl, Coord - ld b, $9 - ld c, $a - call TextBoxBorder - FuncCoord 2, 6 ; $c41a - ld hl, Coord - ld de, HoFMonInfoText - call PlaceString - FuncCoord 1, 4 ; $c3f1 - ld hl, Coord - ld de, $cd6d - call PlaceString - ld a, [$cd3f] - FuncCoord 8, 7 ; $c434 - ld hl, Coord - call PrintLevelCommon - ld a, [wWhichTrade] ; $cd3d - ld [$d0b5], a - FuncCoord 3, 9 ; $c457 - ld hl, Coord - ld a, $4b - call Predef ; indirect jump to Func_27d6b (27d6b (9:7d6b)) - ld a, [wWhichTrade] ; $cd3d - jp PlayCry +INCLUDE "scripts/vermilionhouse2.asm" -HoFMonInfoText: ; 70329 (1c:4329) - db "LEVEL/" - next "TYPE1/" - next "TYPE2/@" +INCLUDE "data/mapObjects/vermilionhouse2.asm" -Func_7033e: ; 7033e (1c:433e) - ld de, RedPicFront ; $6ede - ld a, BANK(RedPicFront) - call UncompressSpriteFromDE - ld hl, S_SPRITEBUFFER1 - ld de, $a000 - ld bc, $310 - call CopyData - ld de, $9000 - call InterlaceMergeSpriteBuffers - ld de, RedPicBack ; $7e0a - ld a, BANK(RedPicBack) - call UncompressSpriteFromDE - ld a, $3 - call Predef ; indirect jump to ScaleSpriteByTwo (2fe40 (b:7e40)) - ld de, $9310 - call InterlaceMergeSpriteBuffers - ld c, $1 +INCLUDE "data/mapHeaders/celadonmart2.asm" -Func_7036d: ; 7036d (1c:436d) - ld b, $0 - FuncCoord 12, 5 ; $c410 - ld hl, Coord - ld a, $31 - jp Predef ; indirect jump to Func_79dda (79dda (1e:5dda)) +INCLUDE "scripts/celadonmart2.asm" -Func_70377: ; 70377 (1c:4377) - ld hl, $d747 - set 3, [hl] - ld a, $56 - call Predef ; indirect jump to DisplayDexRating (44169 (11:4169)) - FuncCoord 0, 4 ; $c3f0 - ld hl, Coord - ld b, $6 - ld c, $a - call TextBoxBorder - FuncCoord 5, 0 ; $c3a5 - ld hl, Coord - ld b, $2 - ld c, $9 - call TextBoxBorder - FuncCoord 7, 2 ; $c3cf - ld hl, Coord - ld de, W_PLAYERNAME ; $d158 - call PlaceString - FuncCoord 1, 6 ; $c419 - ld hl, Coord - ld de, HoFPlayTimeText +INCLUDE "data/mapObjects/celadonmart2.asm" + +CeladonMart2Blocks: ; 56148 (15:6148) + INCBIN "maps/celadonmart2.blk" + +INCLUDE "data/mapHeaders/fuchsiahouse3.asm" + +INCLUDE "scripts/fuchsiahouse3.asm" + +INCLUDE "data/mapObjects/fuchsiahouse3.asm" + +INCLUDE "data/mapHeaders/daycarem.asm" + +INCLUDE "scripts/daycarem.asm" + +INCLUDE "data/mapObjects/daycarem.asm" + +INCLUDE "data/mapHeaders/route12house.asm" + +INCLUDE "scripts/route12house.asm" + +INCLUDE "data/mapObjects/route12house.asm" + +INCLUDE "data/mapHeaders/silphco8.asm" + +INCLUDE "scripts/silphco8.asm" + +INCLUDE "data/mapObjects/silphco8.asm" + +SilphCo8Blocks: ; 5666d (15:666d) + INCBIN "maps/silphco8.blk" + +DisplayDiploma: ; 566e2 (15:66e2) + call SaveScreenTilesToBuffer2 + call GBPalWhiteOutWithDelay3 + call ClearScreen + xor a + ld [$cfcb], a + ld hl, $d730 + set 6, [hl] + call DisableLCD + ld hl, CircleTile ; $7d88 + ld de, $9700 + ld bc, $0010 + ld a, BANK(CircleTile) + call FarCopyData2 + ld hl, wTileMap + ld bc, $1012 + ld a, $27 + call Predef + ld hl, DiplomaTextPointersAndCoords ; $6784 + ld c, $5 +.asm_56715 + push bc + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + push hl + ld h, [hl] + ld l, a call PlaceString - FuncCoord 5, 7 ; $c431 - ld hl, Coord - ld de, $da41 - ld bc, $103 - call PrintNumber - ld [hl], $6d + pop hl inc hl - ld de, $da43 - ld bc, $8102 - call PrintNumber - FuncCoord 1, 9 ; $c455 + pop bc + dec c + jr nz, .asm_56715 ; 0x56725 $ee + FuncCoord 10, 4 ; $c3fa ld hl, Coord - ld de, HoFMoneyText + ld de, W_PLAYERNAME call PlaceString - FuncCoord 4, 10 ; $c46c - ld hl, Coord - ld de, wPlayerMoney ; $d347 - ld c, $a3 - call PrintBCDNumber - ld hl, DexSeenOwnedText - call Func_703e2 - ld hl, DexRatingText - call Func_703e2 - ld hl, $cc5d + ld b, BANK(Func_44dd) + ld hl, Func_44dd + call Bankswitch + ld hl, $c301 + ld bc, $8028 +.asm_5673e + ld a, [hl] + add $21 + ld [hli], a + inc hl + ld a, b + ld [hli], a + inc hl + dec c + jr nz, .asm_5673e ; 0x56747 $f5 + call EnableLCD + ld b, BANK(LoadTrainerInfoTextBoxTiles) + ld hl, LoadTrainerInfoTextBoxTiles + call Bankswitch + ld b, $8 + call GoPAL_SET + call Delay3 + call GBPalNormal + ld a, $90 + ld [$ff48], a + call WaitForTextScrollButtonPress + ld hl, $d730 + res 6, [hl] + call GBPalWhiteOutWithDelay3 + call Func_3dbe + call Delay3 + jp GBPalNormal -Func_703e2: ; 703e2 (1c:43e2) - call PrintText - ld c, $78 - jp DelayFrames +Func_56777: ; 56777 (15:6777) + ld hl, W_PLAYERNAME + ld bc, $ff00 +.asm_5677d + ld a, [hli] + cp $50 + ret z + dec c + jr .asm_5677d ; 0x56782 $f9 -HoFPlayTimeText: ; 703ea (1c:43ea) - db "PLAY TIME@" +DiplomaTextPointersAndCoords: ; 56784 (15:6784) + dw DiplomaText + dw $c3cd + dw DiplomaPlayer + dw $c3f3 + dw DiplomaEmptyText + dw $c3ff + dw DiplomaCongrats + dw $c41a + dw DiplomaGameFreak + dw $c4e9 -HoFMoneyText: ; 703f4 (1c:43f4) - db "MONEY@" +DiplomaText: + db $70,"Diploma",$70,"@" -DexSeenOwnedText: ; 703fa (1c:43fa) - TX_FAR _DexSeenOwnedText - db "@" +DiplomaPlayer: + db "Player@" -DexRatingText: ; 703ff (1c:43ff) - TX_FAR _DexRatingText +DiplomaEmptyText: db "@" -Func_70404: ; 70404 (1c:4404) - ld hl, $cc5b - ld bc, $10 - ld a, [$cd3e] - call AddNTimes - ld a, [wWhichTrade] ; $cd3d - ld [hli], a - ld a, [$cd3f] - ld [hli], a - ld e, l - ld d, h - ld hl, $cd6d - ld bc, $b - jp CopyData +DiplomaCongrats: + db "Congrats! This" + next "diploma certifies" + next "that you have" + next "completed your" + next "#DEX.@" -Func_70423: ; 70423 (1c:4423) - ld a, $a - ld [$cfc8], a - ld [$cfc9], a - ld a, $ff - ld [wMusicHeaderPointer], a - jp GBFadeOut2 +DiplomaGameFreak: + db "GAME FREAK@" -AnimateHealingMachine: ; 70433 (1c:4433) - ld de, PokeCenterFlashingMonitorAndHealBall ; $44b7 - ld hl, $87c0 - ld bc, (BANK(PokeCenterFlashingMonitorAndHealBall) << 8) + $03 - call CopyVideoData - ld hl, $cfcb +Func_567f9: ; 567f9 (15:67f9) + ld hl, wSpriteStateData1 + ld de, $4 + ld a, [$cf13] + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call Func_56903 + ld a, [hli] + ld [$ffeb], a + inc hl ld a, [hl] - push af - ld [hl], $ff - push hl - ld a, [rOBP1] ; $ff49 - push af - ld a, $e0 - ld [rOBP1], a ; $ff49 - ld hl, $c384 - ld de, PokeCenterOAMData ; $44d7 - call Func_70503 - ld a, $4 - ld [wMusicHeaderPointer], a - ld a, $ff - ld [$c0ee], a - call PlaySound -.asm_70464 - ld a, [wMusicHeaderPointer] - and a - jr nz, .asm_70464 - ld a, [W_NUMINPARTY] ; $d163 - ld b, a -.asm_7046e - call Func_70503 - ld a, (SFX_02_4a - SFX_Headers_02) / 3 - call PlaySound - ld c, $1e - call DelayFrames - dec b - jr nz, .asm_7046e - ld a, [$c0ef] - cp $1f - ld [$c0f0], a - jr nz, .asm_70495 - ld a, $ff - ld [$c0ee], a - call PlaySound - ld a, Bank(Func_9876) - ld [$c0ef], a -.asm_70495 - ld a, MUSIC_PKMN_HEALED - ld [$c0ee], a - call PlaySound - ld d, $28 - call Func_704f3 -.asm_704a2 - ld a, [$c026] - cp MUSIC_PKMN_HEALED - jr z, .asm_704a2 - ld c, $20 - call DelayFrames - pop af - ld [rOBP1], a ; $ff49 - pop hl - pop af - ld [hl], a - jp UpdateSprites - -PokeCenterFlashingMonitorAndHealBall: ; 704b7 (1c:44b7) - INCBIN "gfx/pokecenter_ball.2bpp" - -PokeCenterOAMData: ; 704d7 (1c:44d7) - db $24,$34,$7C,$10 ; heal machine monitor - db $2B,$30,$7D,$10 ; pokeballs 1-6 - db $2B,$38,$7D,$30 - db $30,$30,$7D,$10 - db $30,$38,$7D,$30 - db $35,$30,$7D,$10 - db $35,$38,$7D,$30 + ld [$ffec], a + ld de, $fe + add hl, de + ld a, [hli] + ld [$ffed], a + ld a, [hl] + ld [$ffee], a + ret -Func_704f3: ; 704f3 (1c:44f3) - ld b, $8 -.asm_704f5 - ld a, [rOBP1] ; $ff49 - xor d - ld [rOBP1], a ; $ff49 - ld c, $a - call DelayFrames - dec b - jr nz, .asm_704f5 +Func_56819: ; 56819 (15:6819) + ld hl, wSpriteStateData1 + ld de, $0004 + ld a, [$cf13] + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call Func_56903 + ld a, [hli] + ld [$d130], a + inc hl + ld a, [hl] + ld [$d131], a + ld de, $00fe + add hl, de + ld a, [hli] + ld [$d132], a + ld a, [hl] + ld [$d133], a ret -Func_70503: ; 70503 (1c:4503) - ld a, [de] - inc de +Func_5683d: ; 5683d (15:683d) + ld hl, wSpriteStateData1 + ld de, $4 + ld a, [$cf13] + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call Func_56903 + ld a, [$ffeb] ld [hli], a - ld a, [de] - inc de + inc hl + ld a, [$ffec] + ld [hl], a + ld de, $fe + add hl, de + ld a, [$ffed] ld [hli], a - ld a, [de] - inc de + ld a, [$ffee] + ld [hl], a + ret + +Func_5685d: ; 5685d (15:685d) + ld hl, wSpriteStateData1 + ld de, $0004 + ld a, [$cf13] + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call Func_56903 + ld a, [$d130] ld [hli], a - ld a, [de] - inc de + inc hl + ld a, [$d131] + ld [hl], a + ld de, $00fe + add hl, de + ld a, [$d132] ld [hli], a + ld a, [$d133] + ld [hl], a ret -Func_70510: ; 70510 (1c:4510) - call Func_706ef - ld a, $ec - ld [$c104], a - call Delay3 - push hl - call GBFadeIn2 - ld hl, W_FLAGS_D733 - bit 7, [hl] - res 7, [hl] - jr nz, .asm_70568 - ld a, (SFX_02_4c - SFX_Headers_02) / 3 - call PlaySound - ld hl, $d732 - bit 4, [hl] - res 4, [hl] - pop hl - jr nz, .asm_7055e - call Func_705aa - ld a, (SFX_02_4f - SFX_Headers_02) / 3 - call PlaySound - call Func_70787 - ld a, b +TrainerWalkUpToPlayer: ; 56881 (15:6881) + ld a, [$cf13] + swap a + ld [wTrainerSpriteOffset], a ; $cd3d + call ReadTrainerScreenPosition + ld a, [wTrainerFacingDirection] and a - jr nz, .asm_7055b - ld hl, wWhichTrade ; $cd3d - xor a - ld [hli], a - inc a - ld [hli], a - ld a, $8 - ld [hli], a - ld [hl], $ff - ld hl, $cd48 - call Func_70730 -.asm_70558 - call Func_2307 -.asm_7055b - jp Func_70772 -.asm_7055e - ld c, $32 - call DelayFrames - call Func_705aa - jr .asm_7055b -.asm_70568 - pop hl - ld de, BirdSprite ; $4d80 - ld hl, $8000 - ld bc, (BANK(BirdSprite) << 8) + $0c - call CopyVideoData - call Func_706d7 - ld a, (SFX_02_50 - SFX_Headers_02) / 3 - call PlaySound - ld hl, wWhichTrade ; $cd3d + jr z, .facingDown + cp $4 + jr z, .facingUp + cp $8 + jr z, .facingLeft + jr .facingRight +.facingDown + ld a, [wTrainerScreenY] + ld b, a + ld a, $3c ; (fixed) player screen Y pos + call CalcDifference + cp $10 ; trainer is right above player + ret z + swap a + dec a + ld c, a ; bc = steps yet to go to reach player xor a - ld [hli], a - ld a, $c - ld [hli], a - ld [hl], $8 - ld de, FlyAnimationEnterScreenCoords ; $4592 - call Func_706ae - call LoadPlayerSpriteGraphics - jr .asm_70558 + ld b, a ; a = direction to go to + jr .writeWalkScript +.facingUp + ld a, [wTrainerScreenY] + ld b, a + ld a, $3c ; (fixed) player screen Y pos + call CalcDifference + cp $10 ; trainer is right below player + ret z + swap a + dec a + ld c, a ; bc = steps yet to go to reach player + ld b, $0 + ld a, $40 ; a = direction to go to + jr .writeWalkScript +.facingRight + ld a, [wTrainerScreenX] + ld b, a + ld a, $40 ; (fixed) player screen X pos + call CalcDifference + cp $10 ; trainer is directly left of player + ret z + swap a + dec a + ld c, a ; bc = steps yet to go to reach player + ld b, $0 + ld a, $c0 ; a = direction to go to + jr .writeWalkScript +.facingLeft + ld a, [$cd41] + ld b, a + ld a, $40 ; (fixed) player screen X pos + call CalcDifference + cp $10 ; trainer is directly right of player + ret z + swap a + dec a + ld c, a ; bc = steps yet to go to reach player + ld b, $0 + ld a, $80 ; a = direction to go to +.writeWalkScript + ld hl, $cc97 + ld de, $cc97 + call FillMemory ; write the necessary steps to reach player + ld [hl], $ff ; write end of list sentinel + ld a, [$cf13] + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + jp MoveSprite_ -FlyAnimationEnterScreenCoords: ; 70592 (1c:4592) -; y, x pairs -; This is the sequence of screen coordinates used by the overworld -; Fly animation when the player is entering a map. - db $05, $98 - db $0F, $90 - db $18, $88 - db $20, $80 - db $27, $78 - db $2D, $70 - db $32, $68 - db $36, $60 - db $39, $58 - db $3B, $50 - db $3C, $48 - db $3C, $40 +Func_56903: ; 56903 (15:6903) + push de + add hl, de + ld a, [H_DOWNARROWBLINKCNT2] ; $ff8c + swap a + ld d, $0 + ld e, a + add hl, de + pop de + ret + +; tests if this trainer is in the right position to engage the player and do so if she is. +CheckEngagePlayer: ; 5690f (15:690f) + push hl + push de + ld a, [wTrainerSpriteOffset] ; $cd3d + add $2 + ld d, $0 + ld e, a + ld hl, wSpriteStateData1 + add hl, de + ld a, [hl] ; c1x2: sprite image index + sub $ff + jr nz, .spriteOnScreen ; test if sprite is on screen + jp .noEngage +.spriteOnScreen + ld a, [wTrainerSpriteOffset] ; $cd3d + add $9 + ld d, $0 + ld e, a + ld hl, wSpriteStateData1 + add hl, de + ld a, [hl] ; c1x9: facing direction + ld [$cd3f], a + call ReadTrainerScreenPosition + ld a, [$cd40] ; sprite screen Y pos + ld b, a + ld a, $3c + cp b + jr z, .linedUpY + ld a, [$cd41] ; sprite screen X pos + ld b, a + ld a, $40 + cp b + jr z, .linedUpX + xor a + jp .noEngage +.linedUpY + ld a, [$cd41] ; sprite screen X pos + ld b, a + ld a, $40 ; (fixed) player X position + call CalcDifference ; calc distance + jr z, .noEngage ; exact same position as player + call CheckSpriteCanSeePlayer + jr c, .engage + xor a + jr .noEngage +.linedUpX + ld a, [$cd40] ; sprite screen Y pos + ld b, a + ld a, $3c ; (fixed) player Y position + call CalcDifference ; calc distance + jr z, .noEngage ; exact same position as player + call CheckSpriteCanSeePlayer + jr c, .engage + xor a + jp .noEngage +.engage + call CheckPlayerIsInFrontOfSprite + ld a, [wTrainerSpriteOffset] ; $cd3d + and a + jr z, .noEngage + ld hl, wFlags_0xcd60 + set 0, [hl] + call EngageMapTrainer + ld a, $ff +.noEngage: ; 56988 (15:6988) + ld [wTrainerSpriteOffset], a ; $cd3d + pop de + pop hl + ret -Func_705aa: ; 705aa (1c:45aa) - ld hl, wWhichTrade ; $cd3d - ld a, $10 - ld [hli], a - ld a, $3c - ld [hli], a - call Func_7077f - ld [hl], a - jp Func_70755 +; reads trainer's Y position to $cd40 and X position to $cd41 +ReadTrainerScreenPosition: ; 5698e (15:698e) + ld a, [wTrainerSpriteOffset] ; $cd3d + add $4 + ld d, $0 + ld e, a + ld hl, wSpriteStateData1 + add hl, de + ld a, [hl] + ld [$cd40], a + ld a, [wTrainerSpriteOffset] ; $cd3d + add $6 + ld d, $0 + ld e, a + ld hl, wSpriteStateData1 + add hl, de + ld a, [hl] + ld [$cd41], a + ret -_DoFlyOrTeleportAwayGraphics: ; 705ba (1c:45ba) - call Func_706ef - call Func_70787 - ld a, b +; checks if the sprite is properly lined up with the player with respect to the direction it's looking. Also checks the distance between player and sprite +; note that this does not necessarily mean the sprite is seeing the player, he could be behind it's back +; a: distance player to sprite +CheckSpriteCanSeePlayer: ; 569af (15:69af) + ld b, a + ld a, [wTrainerEngageDistance] ; sprite line of sight (engage distance) + cp b + jr nc, .checkIfLinedUp + jr .notInLine ; player too far away +.checkIfLinedUp + ld a, [$cd3f] ; sprite facing direction + cp $0 ; down + jr z, .checkXCoord + cp $4 ; up + jr z, .checkXCoord + cp $8 ; left + jr z, .checkYCoord + cp $c ; right + jr z, .checkYCoord + jr .notInLine +.checkXCoord + ld a, [$cd41] ; sprite screen X position + ld b, a + cp $40 + jr z, .inLine + jr .notInLine +.checkYCoord + ld a, [$cd40] ; sprite screen Y position + ld b, a + cp $3c + jr nz, .notInLine +.inLine + scf + ret +.notInLine and a - jr z, .asm_705ef - dec a - jp nz, Func_7067d -.asm_705c8 - ld a, (SFX_02_4b - SFX_Headers_02) / 3 - call PlaySound - ld hl, wWhichTrade ; $cd3d - ld a, $f0 - ld [hli], a - ld a, $ec - ld [hli], a - call Func_7077f - ld [hl], a - call Func_70755 - call Func_70787 - ld a, b - dec a - jr z, .asm_705e9 - ld c, $a - call DelayFrames -.asm_705e9 - call GBFadeOut2 - jp Func_70772 -.asm_705ef - ld a, $4 - call StopMusic - ld a, [$d732] - bit 6, a - jr z, .asm_70610 - ld hl, wWhichTrade ; $cd3d - ld a, $10 - ld [hli], a - ld a, $ff - ld [hli], a - xor a - ld [hli], a - ld [hl], $a1 - ld hl, $cd48 - call Func_70730 - jr .asm_705c8 -.asm_70610 - call Func_706d7 - ld hl, wWhichTrade ; $cd3d + ret + +; tests if the player is in front of the sprite (rather than behind it) +CheckPlayerIsInFrontOfSprite: ; 569e3 (15:69e3) + ld a, [W_CURMAP] ; $d35e + cp POWER_PLANT + jp z, .engage ; XXX not sure why bypass this for power plant (maybe to get voltorb fake items to work?) + ld a, [wTrainerSpriteOffset] ; $cd3d + add $4 + ld d, $0 + ld e, a + ld hl, wSpriteStateData1 + add hl, de + ld a, [hl] ; c1x4 (sprite screen Y pos) + cp $fc + jr nz, .notOnTopmostTile ; special case if sprite is on topmost tile (Y = $fc (-4)), make it come down a block + ld a, $c +.notOnTopmostTile + ld [$cd40], a + ld a, [wTrainerSpriteOffset] ; $cd3d + add $6 + ld d, $0 + ld e, a + ld hl, wSpriteStateData1 + add hl, de + ld a, [hl] ; c1x6 (sprite screen X pos) + ld [$cd41], a + ld a, [$cd3f] ; facing direction + cp $0 + jr nz, .notFacingDown + ld a, [$cd40] ; sprite screen Y pos + cp $3c + jr c, .engage ; sprite above player + jr .noEngage ; sprite below player +.notFacingDown + cp $4 + jr nz, .notFacingUp + ld a, [$cd40] ; sprite screen Y pos + cp $3c + jr nc, .engage ; sprite below player + jr .noEngage ; sprite above player +.notFacingUp + cp $8 + jr nz, .notFacingLeft + ld a, [$cd41] ; sprite screen X pos + cp $40 + jr nc, .engage ; sprite right of player + jr .noEngage ; sprite left of player +.notFacingLeft + ld a, [$cd41] ; sprite screen X pos + cp $40 + jr nc, .noEngage ; sprite right of player +.engage ld a, $ff - ld [hli], a - ld a, $8 - ld [hli], a - ld [hl], $c - call Func_706ae - ld a, (SFX_02_50 - SFX_Headers_02) / 3 - call PlaySound - ld hl, wWhichTrade ; $cd3d + jr .done +.noEngage xor a - ld [hli], a - ld a, $c - ld [hli], a - ld [hl], $c - ld de, FlyAnimationScreenCoords1 ; $464f - call Func_706ae - ld c, $28 - call DelayFrames - ld hl, $cd3e - ld a, $b - ld [hli], a - ld [hl], $8 - ld de, FlyAnimationScreenCoords2 ; $4667 - call Func_706ae - call GBFadeOut2 - jp Func_70772 - -FlyAnimationScreenCoords1: ; 7064f (1c:464f) -; y, x pairs -; This is the sequence of screen coordinates used by the first part -; of the Fly overworld animation. - db $3C, $48 - db $3C, $50 - db $3B, $58 - db $3A, $60 - db $39, $68 - db $37, $70 - db $37, $78 - db $33, $80 - db $30, $88 - db $2D, $90 - db $2A, $98 - db $27, $A0 - -FlyAnimationScreenCoords2: ; 70667 (1c:4667) -; y, x pairs -; This is the sequence of screen coordinates used by the second part -; of the Fly overworld animation. - db $1A, $90 - db $19, $80 - db $17, $70 - db $15, $60 - db $12, $50 - db $0F, $40 - db $0C, $30 - db $09, $20 - db $05, $10 - db $00, $00 +.done + ld [wTrainerSpriteOffset], a ; $cd3d + ret - db $F0, $00 +SECTION "bank16",ROMX,BANK[$16] -Func_7067d: ; 7067d (1c:467d) - ld a, $ff - ld [$cfcb], a - ld a, [$c302] - ld [$c30a], a - ld a, [$c306] - ld [$c30e], a - ld a, $a0 - ld [wOAMBuffer], a - ld [$c304], a - ld c, $2 - call DelayFrames - ld a, $a0 - ld [$c308], a - ld [$c30c], a - call GBFadeOut2 - ld a, $1 - ld [$cfcb], a - jp Func_70772 +INCLUDE "data/mapHeaders/route6.asm" -Func_706ae: ; 706ae (1c:46ae) - ld a, [$cd3f] - xor $1 - ld [$cd3f], a - ld [$c102], a - call Delay3 - ld a, [wWhichTrade] ; $cd3d - cp $ff - jr z, .asm_706cd - ld hl, $c104 - ld a, [de] - inc de - ld [hli], a - inc hl - ld a, [de] - inc de - ld [hl], a -.asm_706cd - ld a, [$cd3e] - dec a - ld [$cd3e], a - jr nz, Func_706ae - ret +INCLUDE "data/mapObjects/route6.asm" -Func_706d7: ; 706d7 (1c:46d7) - ld de, BirdSprite ; $4d80 - ld hl, $8000 - ld bc, (BANK(BirdSprite) << 8) + $0c - call CopyVideoData - ld de, BirdSprite + $c0 ; $4e40 ; moving amination sprite - ld hl, $8800 - ld bc, (BANK(BirdSprite) << 8) + $0c - jp CopyVideoData +Route6Blocks: ; 58079 (16:4079) + INCBIN "maps/route6.blk" -Func_706ef: ; 706ef (1c:46ef) - ld a, [$c102] - ld [$cd50], a - ld a, [$c104] - ld [$cd4f], a - ld hl, PlayerSpinningFacingOrder ; $4713 - ld de, $cd48 - ld bc, $4 - call CopyData - ld a, [$c102] - ld hl, $cd48 -.asm_7070d - cp [hl] - inc hl - jr nz, .asm_7070d - dec hl - ret +INCLUDE "data/mapHeaders/route8.asm" -PlayerSpinningFacingOrder: ; 70713 (1c:4713) -; The order of the direction the player's sprite is facing when teleporting -; away. Creates a spinning effect. - db $00, $08, $04, $0C ; down, left, up, right +INCLUDE "data/mapObjects/route8.asm" -Func_70717: ; 70717 (1c:4717) - ld a, [hl] - ld [$c102], a - push hl - ld hl, $cd48 - ld de, $cd47 - ld bc, $4 - call CopyData - ld a, [$cd47] - ld [$cd4b], a - pop hl - ret +Route8Blocks: ; 581c6 (16:41c6) + INCBIN "maps/route8.blk" -Func_70730: ; 70730 (1c:4730) - call Func_70717 - ld a, [wWhichTrade] ; $cd3d - ld c, a - and $3 - jr nz, .asm_70743 - ld a, [$cd40] - cp $ff - call nz, PlaySound -.asm_70743 - ld a, [$cd3e] - add c - ld [wWhichTrade], a ; $cd3d - ld c, a - ld a, [$cd3f] - cp c - ret z - call DelayFrames - jr Func_70730 +INCLUDE "data/mapHeaders/route10.asm" -Func_70755: ; 70755 (1c:4755) - call Func_70717 - ld a, [wWhichTrade] ; $cd3d - ld c, a - ld a, [$c104] - add c - ld [$c104], a - ld c, a - ld a, [$cd3e] - cp c - ret z - ld a, [$cd3f] - ld c, a - call DelayFrames - jr Func_70755 +INCLUDE "data/mapObjects/route10.asm" -Func_70772: ; 70772 (1c:4772) - ld a, [$cd4f] - ld [$c104], a - ld a, [$cd50] - ld [$c102], a - ret +Route10Blocks: ; 58356 (16:4356) + INCBIN "maps/route10.blk" -Func_7077f: ; 7077f (1c:477f) - ld a, [$cf1b] - xor $1 - inc a - inc a - ret +INCLUDE "data/mapHeaders/route11.asm" -Func_70787: ; 70787 (1c:4787) - ld b, 0 - ld hl, DataTable_707a9 ; $47a9 - ld a, [W_CURMAPTILESET] ; $d367 - ld c, a -.asm_70790 - ld a, [hli] - cp $ff - jr z, .asm_707a4 - cp c - jr nz, .asm_7079e - FuncCoord 8, 9 ; $c45c - ld a, [Coord] - cp [hl] - jr z, .asm_707a2 -.asm_7079e - inc hl - inc hl - jr .asm_70790 -.asm_707a2 - inc hl - ld b, [hl] -.asm_707a4 - ld a, b - ld [$cd5b], a - ret +INCLUDE "data/mapObjects/route11.asm" -; format: db tileset id, tile id, value to be put in $cd5b -DataTable_707a9: ; 707a9 (1c:47a9) - db FACILITY, $20, 1 ; warp pad - db FACILITY, $11, 2 ; hole - db CAVERN, $22, 2 ; hole - db INTERIOR, $55, 1 ; warp pad - db $FF +Route11Blocks: ; 5855f (16:455f) + INCBIN "maps/route11.blk" -Func_707b6: ; 707b6 (1c:47b6) - ld c, $a - call DelayFrames - ld hl, $d736 - set 6, [hl] - ld de, RedSprite ; $4180 - ld hl, $8000 - ld bc, (BANK(RedSprite) << 8) + $0c - call CopyVideoData - ld a, $4 - ld hl, RedFishingTiles ; $4866 - call Func_71771 - ld a, [$c102] - ld c, a - ld b, $0 - ld hl, FishingRodGfxProperties ; $4856 - add hl, bc - ld de, $c39c - ld bc, $4 - call CopyData - ld c, $64 - call DelayFrames - ld a, [wWhichTrade] ; $cd3d - and a - ld hl, NoNibbleText - jr z, .asm_70836 - cp $2 - ld hl, NothingHereText - jr z, .asm_70836 - ld b, $a -.asm_707fe - ld hl, $c104 - call Func_70842 - ld hl, $c39c - call Func_70842 - call Delay3 - dec b - jr nz, .asm_707fe - ld a, [$c102] - cp $4 - jr nz, .asm_7081c - ld a, $a0 - ld [$c39c], a -.asm_7081c - ld hl, $cd4f - xor a - ld [hli], a - ld [hl], a - ld a, $4c - call Predef ; indirect jump to PrintEmotionBubble (17c47 (5:7c47)) - ld a, [$c102] - cp $4 - jr nz, .asm_70833 - ld a, $44 - ld [$c39c], a -.asm_70833 - ld hl, ItsABiteText -.asm_70836 - call PrintText - ld hl, $d736 - res 6, [hl] - call LoadFontTilePatterns - ret +INCLUDE "data/mapHeaders/route12.asm" -Func_70842: ; 70842 (1c:4842) - ld a, [hl] - xor $1 - ld [hl], a - ret +INCLUDE "data/mapObjects/route12.asm" -NoNibbleText: ; 70847 (1c:4847) - TX_FAR _NoNibbleText - db "@" +Route12Blocks: ; 58710 (16:4710) + INCBIN "maps/route12.blk" -NothingHereText: ; 7084c (1c:484c) - TX_FAR _NothingHereText - db "@" +INCLUDE "data/mapHeaders/route15.asm" -ItsABiteText: ; 70851 (1c:4851) - TX_FAR _ItsABiteText - db "@" +INCLUDE "data/mapObjects/route15.asm" -FishingRodGfxProperties: ; 70856 (1c:4856) -; specicies how the fishing rod should be drawn on the screen -; first byte = screen y coordinate -; second byte = screen x coordinate -; third byte = tile number -; fourth byte = sprite properties - db $5B, $4C, $FD, $00 ; player facing down - db $44, $4C, $FD, $00 ; player facing up - db $50, $40, $FE, $00 ; player facing left - db $50, $58, $FE, $20 ; player facing right ($20 means "horizontally flip the tile") +Route15Blocks: ; 589cc (16:49cc) + INCBIN "maps/route15.blk" -RedFishingTiles: ; 70866 (1c:4866) - dw RedFishingTilesFront - db $02, $1E - dw $8020 +INCLUDE "data/mapHeaders/route16.asm" - dw RedFishingTilesBack - db $02, $1E - dw $8060 +INCLUDE "data/mapObjects/route16.asm" - dw RedFishingTilesSide - db $02, $1E - dw $80A0 +Route16Blocks: ; 58b84 (16:4b84) + INCBIN "maps/route16.blk" - dw RedFishingRodTiles - db $03, $1E - dw $8FD0 +INCLUDE "data/mapHeaders/route18.asm" -_HandleMidJump: ; 7087e (1c:487e) - ld a, [$d714] - ld c, a - inc a - cp $10 - jr nc, .asm_70895 - ld [$d714], a - ld b, $0 - ld hl, PlayerJumpingYScreenCoords ; $48ba - add hl, bc - ld a, [hl] - ld [$c104], a ; player's sprite y coordinate - ret -.asm_70895 - ld a, [wWalkCounter] ; $cfc5 - cp $0 - ret nz - call UpdateSprites - call Delay3 - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld [H_NEWLYPRESSEDBUTTONS], a - ld [H_NEWLYRELEASEDBUTTONS], a - ld [$d714], a - ld hl, $d736 - res 6, [hl] - ld hl, $d730 - res 7, [hl] - xor a - ld [wJoypadForbiddenButtonsMask], a - ret +INCLUDE "data/mapObjects/route18.asm" -PlayerJumpingYScreenCoords: ; 708ba (1c:48ba) -; Sequence of y screen coordinates for player's sprite when jumping over a ledge. - db $38, $36, $34, $32, $31, $30, $30, $30, $31, $32, $33, $34, $36, $38, $3C, $3C +Route18Blocks: ; 58c9c (16:4c9c) + INCBIN "maps/route18.blk" + INCBIN "maps/unusedblocks58d7d.blk" -Func_708ca: ; 708ca (1c:48ca) - ld a, $e4 - ld [rOBP1], a ; $ff49 - call Func_7092a - FuncCoord 12, 0 ; $c3ac - ld hl, Coord - ld bc, $707 - call ClearScreenArea - call Delay3 - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ld a, $91 - ld [$cee9], a - ld a, $1 - ld [H_WHOSETURN], a ; $fff3 - ld hl, Func_79793 - ld b, BANK(Func_79793) - call Bankswitch - ld d, $80 - call Func_704f3 -.asm_708f6 - ld c, $a - call DelayFrames - ld a, [rOBP1] ; $ff49 - sla a - sla a - ld [rOBP1], a ; $ff49 - jr nz, .asm_708f6 - call CleanLCD_OAM - call Func_7092a - ld b, $e4 -.asm_7090d - ld c, $a +Func_58d99: ; 58d99 (16:4d99) + ld a, [W_ISINBATTLE] ; $d057 + dec a + jr nz, .asm_58dbe + ld a, [W_CURMAP] ; $d35e + cp POKEMONTOWER_3 + jr c, .asm_58daa + cp LAVENDER_HOUSE_1 + jr c, .asm_58dd8 +.asm_58daa + ld a, [W_ENEMYMONID] + call PlayCry + ld hl, WildMonAppearedText + ld a, [W_MOVEMISSED] ; $d05f + and a + jr z, .asm_58dbc + ld hl, HookedMonAttackedText +.asm_58dbc + jr .asm_58dc9 +.asm_58dbe + call Func_58e29 + ld c, $14 call DelayFrames - ld a, [rOBP1] ; $ff49 - srl b - rra - srl b - rra - ld [rOBP1], a ; $ff49 + ld hl, TrainerWantsToFightText +.asm_58dc9 + push hl + ld hl, DrawAllPokeballs + ld b, BANK(DrawAllPokeballs) + call Bankswitch + pop hl + call PrintText + jr asm_58e3a +.asm_58dd8 + ld b, SILPH_SCOPE + call IsItemInBag + ld a, [W_ENEMYMONID] + ld [$cf91], a + cp MAROWAK + jr z, .asm_58e03 ld a, b and a - jr nz, .asm_7090d - ld a, $1 - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - call Delay3 - jp CleanLCD_OAM + jr z, .asm_58df5 + ld hl, Func_3eb01 + ld b, BANK(Func_3eb01) + call Bankswitch + jr .asm_58daa +.asm_58df5 + ld hl, EnemyAppearedText + call PrintText + ld hl, GhostCantBeIDdText + call PrintText + jr asm_58e3a +.asm_58e03 + ld a, b + and a + jr z, .asm_58df5 + ld hl, EnemyAppearedText + call PrintText + ld hl, UnveiledGhostText + call PrintText + ld hl, Func_3eb01 + ld b, BANK(Func_3eb01) + call Bankswitch + ld hl, Func_708ca + ld b, BANK(Func_708ca) + call Bankswitch + ld hl, WildMonAppearedText + call PrintText -Func_7092a: ; 7092a (1c:492a) - ld de, $9000 - ld hl, $8000 - ld bc, $31 - call CopyVideoData - ld a, $10 - ld [W_BASECOORDY], a ; $d082 - ld a, $70 - ld [W_BASECOORDX], a ; $d081 - ld hl, wOAMBuffer - ld bc, $606 - ld d, $8 -.asm_70948 - push bc - ld a, [W_BASECOORDY] ; $d082 - ld e, a -.asm_7094d - ld a, e - add $8 - ld e, a - ld [hli], a - ld a, [W_BASECOORDX] ; $d081 - ld [hli], a - ld a, d - ld [hli], a - ld a, $10 - ld [hli], a - inc d - dec c - jr nz, .asm_7094d - inc d - ld a, [W_BASECOORDX] ; $d081 - add $8 - ld [W_BASECOORDX], a ; $d081 - pop bc - dec b - jr nz, .asm_70948 +Func_58e29: ; 58e29 (16:4e29) + xor a + ld [$c0f1], a + ld a, $80 + ld [$c0f2], a + ld a, (SFX_08_77 - SFX_Headers_08) / 3 + call PlaySound + jp WaitForSoundToFinish +asm_58e3a: ; 58e3a (16:4e3a) ret -Func_7096d: ; 7096d (1c:496d) - ld a, $1 - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - call Delay3 - xor a - ld [$ffb0], a - dec a - ld [$cfcb], a - call DelayFrame - ld hl, $c102 - ld a, [H_DOWNARROWBLINKCNT2] ; $ff8c - ld c, a - ld b, $0 - ld de, $10 -.asm_70989 - ld a, [hl] - cp $ff - jr z, .asm_7098f - inc b -.asm_7098f - add hl, de - dec c - jr nz, .asm_70989 - ld hl, $c310 - ld c, $9 -.asm_70998 - ld a, b - swap a - cp l - jr z, .asm_709a9 - push hl - push bc - ld bc, $10 - xor a - call FillMemory - pop bc - pop hl -.asm_709a9 - ld de, $10 - add hl, de - dec c - jr nz, .asm_70998 - call Delay3 - call LoadBattleTransitionTile - ld bc, $0 - ld a, [W_ISLINKBATTLE] ; $d12b - cp $4 - jr z, .asm_709c9 - call Func_709e2 - call Func_709ef - call Func_70a19 -.asm_709c9 - ld hl, PointerTable_709d2 ; $49d2 - add hl, bc - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] +WildMonAppearedText: ; 58e3b (16:4e3b) + TX_FAR _WildMonAppearedText + db "@" -PointerTable_709d2: ; 709d2 (1c:49d2) - dw Func_70d24 - dw Func_70a72 - dw Func_70ce4 - dw Func_70a72 - dw Func_70cb4 - dw Func_70b7f - dw Func_70c7e - dw Func_70bca +HookedMonAttackedText: ; 58e40 (16:4e40) + TX_FAR _HookedMonAttackedText + db "@" -Func_709e2: ; 709e2 (1c:49e2) - ld a, [W_CUROPPONENT] ; $d059 - cp $c8 - jr nc, .asm_709ec - res 0, c - ret -.asm_709ec - set 0, c - ret +EnemyAppearedText: ; 58e45 (16:4e45) + TX_FAR _EnemyAppearedText + db "@" -Func_709ef: ; 709ef (1c:49ef) - ld hl, W_PARTYMON1_HP ; $d16c -.asm_709f2 +TrainerWantsToFightText: ; 58e4a (16:4e4a) + TX_FAR _TrainerWantsToFightText + db "@" + +UnveiledGhostText: ; 58e4f (16:4e4f) + TX_FAR _UnveiledGhostText + db "@" + +GhostCantBeIDdText: ; 58e54 (16:4e54) + TX_FAR _GhostCantBeIDdText + db "@" + +Func_58e59: ; 58e59 (16:4e59) + ld hl, W_ENEMYMONCURHP ; $cfe6 ld a, [hli] or [hl] - jr nz, .asm_709fc - ld de, $2b - add hl, de - jr .asm_709f2 -.asm_709fc - ld de, $1f - add hl, de - ld a, [hl] - add $3 - ld e, a - ld a, [W_CURENEMYLVL] ; $d127 - sub e - jr nc, .asm_70a12 - res 1, c - ld a, $1 - ld [$cd47], a - ret -.asm_70a12 - set 1, c + ld hl, GoText + jr z, .asm_58eab xor a - ld [$cd47], a - ret - -Func_70a19: ; 70a19 (1c:4a19) - ld a, [W_CURMAP] ; $d35e - ld e, a - ld hl, MapIDList_70a3f ; $4a3f -.asm_70a20 - ld a, [hli] - cp $ff - jr z, .asm_70a2b - cp e - jr nz, .asm_70a20 -.asm_70a28 - set 2, c - ret -.asm_70a2b - ld hl, MapIDList_70a44 ; $4a44 -.asm_70a2e + ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND) + ld hl, W_ENEMYMONCURHP ; $cfe6 ld a, [hli] - cp $ff - jr z, .asm_70a3c - ld d, a + ld [$cce3], a + ld [$ff97], a + ld a, [hl] + ld [$cce4], a + ld [$ff98], a + ld a, $19 + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + call Multiply + ld hl, W_ENEMYMONMAXHP ; $cff4 ld a, [hli] - cp e - jr c, .asm_70a2e - ld a, e - cp d - jr nc, .asm_70a28 -.asm_70a3c - res 2, c - ret - -; Func_70a19 checks if W_CURMAP is equal to one of these maps -MapIDList_70a3f: ; 70a3f (1c:4a3f) - db VIRIDIAN_FOREST - db ROCK_TUNNEL_1 - db SEAFOAM_ISLANDS_1 - db ROCK_TUNNEL_2 - db $FF - -; Func_70a19 checks if W_CURMAP is in between or equal to each pair of maps -MapIDList_70a44: ; 70a44 (1c:4a44) - ; all MT_MOON maps - db MT_MOON_1 - db MT_MOON_3 - - ; all SS_ANNE maps, VICTORY_ROAD_1, LANCES_ROOM, and HALL_OF_FAME - db SS_ANNE_1 - db HALL_OF_FAME + ld b, [hl] + srl a + rr b + srl a + rr b + ld a, b + ld b, $4 + ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN) + call Divide + ld a, [$ff98] + ld hl, GoText + cp $46 + jr nc, .asm_58eab + ld hl, DoItText + cp $28 + jr nc, .asm_58eab + ld hl, GetmText + cp $a + jr nc, .asm_58eab + ld hl, EnemysWeakText +.asm_58eab + jp PrintText - ; all POKEMONTOWER maps and Lavender Town buildings - db LAVENDER_POKECENTER - db LAVENDER_HOUSE_2 +GoText: ; 58eae (16:4eae) + TX_FAR _GoText + db $08 ; asm + jr Func_58ec8 - ; all SILPH_CO, MANSION, SAFARI_ZONE, and UNKNOWN_DUNGEON maps, - ; except for SILPH_CO_1F - db SILPH_CO_2F - db UNKNOWN_DUNGEON_1 - db $FF +DoItText: ; 58eb5 (16:4eb5) + TX_FAR _DoItText + db $08 ; asm + jr Func_58ec8 -LoadBattleTransitionTile: ; 70a4d (1c:4a4d) - ld hl, $8ff0 - ld de, BattleTransitionTile ; $4a59 - ld bc, (BANK(BattleTransitionTile) << 8) + $01 - jp CopyVideoData +GetmText: ; 58ebc (16:4ebc) + TX_FAR _GetmText + db $08 ; asm + jr Func_58ec8 -BattleTransitionTile: ; 70a59 (1c:4a59) - INCBIN "gfx/battle_transition.2bpp" +EnemysWeakText: ; 58ec3 (16:4ec3) + TX_FAR _EnemysWeakText + db $08 ; asm -Func_70a69: ; 70a69 (1c:4a69) - ld a, $ff - ld [rBGP], a ; $ff47 - ld [rOBP0], a ; $ff48 - ld [rOBP1], a ; $ff49 +Func_58ec8 + ld hl, PlayerMon1Text ret -Func_70a72: ; 70a72 (1c:4a72) - ld a, [$cd47] - and a - jr z, .asm_70a7d - call Func_70aaa - jr .asm_70a9f -.asm_70a7d - FuncCoord 10, 10 ; $c472 - ld hl, Coord - ld a, $3 - ld [$d09f], a - ld a, l - ld [$d09b], a - ld a, h - ld [$d09a], a - ld b, $78 -.asm_70a8f - ld c, $3 -.asm_70a91 - push bc - call Func_70af9 - pop bc - dec c - jr nz, .asm_70a91 - call DelayFrame - dec b - jr nz, .asm_70a8f -.asm_70a9f - call Func_70a69 - xor a - ld [$d09b], a - ld [$d09a], a - ret +PlayerMon1Text: ; 58ecc (16:4ecc) + TX_FAR _PlayerMon1Text + db "@" -Func_70aaa: ; 70aaa (1c:4aaa) - ld a, $7 - ld [wWhichTrade], a ; $cd3d - ld hl, wTileMap - ld c, $11 - ld de, $14 - call Func_70ae0 - inc c - jr .asm_70ac3 -.asm_70abd - ld de, $14 - call Func_70ae0 -.asm_70ac3 - inc c - ld de, $1 - call Func_70ae0 - dec c - dec c - ld de, $ffec - call Func_70ae0 - inc c - ld de, rIE ; $ffff - call Func_70ae0 - dec c - dec c - ld a, c - and a - jr nz, .asm_70abd - ret +Func_58ed1: ; 58ed1 (16:4ed1) + ld hl, PlayerMon2Text + jp PrintText -Func_70ae0: ; 70ae0 (1c:4ae0) - push bc -.asm_70ae1 - ld [hl], $ff - add hl, de +PlayerMon2Text: ; 58ed7 (16:4ed7) + TX_FAR _PlayerMon2Text + db $08 ; asm + push de push bc - ld a, [wWhichTrade] ; $cd3d - dec a - jr nz, .asm_70af0 - call Func_70d19 - ld a, $7 -.asm_70af0 - ld [wWhichTrade], a ; $cd3d - pop bc - dec c - jr nz, .asm_70ae1 + ld hl, $cfe7 + ld de, $cce4 + ld b, [hl] + dec hl + ld a, [de] + sub b + ld [$ff98], a + dec de + ld b, [hl] + ld a, [de] + sbc b + ld [$ff97], a + ld a, $19 + ld [H_POWEROFTEN], a + call Multiply + ld hl, W_ENEMYMONMAXHP + ld a, [hli] + ld b, [hl] + srl a + rr b + srl a + rr b + ld a, b + ld b, $4 + ld [H_POWEROFTEN], a + call Divide pop bc + pop de + ld a, [$ff98] + ld hl, EnoughText + and a + ret z + ld hl, ComeBackText + cp $1e + ret c + ld hl, OKExclamationText + cp $46 + ret c + ld hl, GoodText ret -Func_70af9: ; 70af9 (1c:4af9) - ld bc, $ffec - ld de, $14 - ld a, [$d09b] - ld l, a - ld a, [$d09a] - ld h, a - ld a, [$d09f] - cp $0 - jr z, .asm_70b25 - cp $1 - jr z, .asm_70b2f - cp $2 - jr z, .asm_70b39 - cp $3 - jr z, .asm_70b43 -.asm_70b1a - ld [hl], $ff -.asm_70b1c - ld a, l - ld [$d09b], a - ld a, h - ld [$d09a], a +EnoughText: ; 58f25 (16:4f25) + TX_FAR _EnoughText + db $08 ; asm + jr Func_58f3a + +OKExclamationText: ; 58f2c (16:4f2c) + TX_FAR _OKExclamationText + db $08 ; asm + jr Func_58f3a + +GoodText: ; 58f33 (16:4f33) + TX_FAR _GoodText + db $08 ; asm + jr Func_58f3a + +Func_58f3a: ; 58f3a (16:4f3a) + ld hl, ComeBackText ret -.asm_70b25 - dec hl - ld a, [hl] - cp $ff - jr nz, .asm_70b4d - inc hl - add hl, bc - jr .asm_70b1a -.asm_70b2f - add hl, de + +ComeBackText: ; 58f3e (16:4f3e) + TX_FAR _ComeBackText + db "@" + +Func_58f43: ; 58f43 (16:4f43) + ld a, [$cf98] + ld [$d0b5], a + call GetMonHeader + ld d, $1 +.asm_58f4e + inc d + call CalcExperience + push hl + ld hl, $cfa8 + ld a, [$ff98] + ld c, a + ld a, [hld] + sub c + ld a, [$ff97] + ld c, a + ld a, [hld] + sbc c + ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND) + ld c, a ld a, [hl] - cp $ff - jr nz, .asm_70b4d + sbc c + pop hl + jr nc, .asm_58f4e + dec d + ret + +; calculates the amount of experience needed for level d +CalcExperience: ; 58f6a (16:4f6a) + ld a, [W_MONHGROWTHRATE] + add a + add a + ld c, a + ld b, $0 + ld hl, GrowthRateTable add hl, bc - dec hl - jr .asm_70b1a -.asm_70b39 - inc hl + call CalcDSquared + ld a, d + ld [H_MULTIPLIER], a ; $ff99 + call Multiply ld a, [hl] - cp $ff - jr nz, .asm_70b4d - dec hl - add hl, de - jr .asm_70b1a -.asm_70b43 - add hl, bc + and $f0 + swap a + ld [H_MULTIPLIER], a ; $ff99 + call Multiply + ld a, [hli] + and $f + ld [H_DIVISOR], a ; $ff99 + ld b, $4 + call Divide + ld a, [H_MULTIPLICAND] ; $ff96 (aliases: H_NUMTOPRINT) + push af + ld a, [H_MULTIPLICAND+1] + push af + ld a, [H_MULTIPLICAND+2] + push af + call CalcDSquared ld a, [hl] - cp $ff - jr nz, .asm_70b4d - add hl, de - inc hl - jr .asm_70b1a -.asm_70b4d - ld [hl], $ff - ld a, [$d09f] - inc a - cp $4 - jr nz, .asm_70b58 + and $7f + ld [H_MULTIPLIER], a ; $ff99 + call Multiply + ld a, [H_MULTIPLICAND] ; $ff96 (aliases: H_NUMTOPRINT) + push af + ld a, [H_MULTIPLICAND+1] + push af + ld a, [H_MULTIPLICAND+2] + push af + ld a, [hli] + push af xor a -.asm_70b58 - ld [$d09f], a - jr .asm_70b1c - -Func_70b5d: ; 70b5d (1c:4b5d) - ld hl, DataTable_70b72 ; $4b72 -.asm_70b60 + ld [H_MULTIPLICAND], a ; $ff96 + ld [H_MULTIPLICAND+1], a + ld a, d + ld [H_MULTIPLICAND+2], a ld a, [hli] - cp $1 - jr z, .asm_70b6e - ld [rBGP], a ; $ff47 - ld c, $2 - call DelayFrames - jr .asm_70b60 -.asm_70b6e - dec b - jr nz, Func_70b5d + ld [H_MULTIPLIER], a + call Multiply + ld b, [hl] + ld a, [H_MULTIPLICAND+2] + sub b + ld [H_MULTIPLICAND+2], a + ld b, $0 + ld a, [H_MULTIPLICAND+1] + sbc b + ld [H_MULTIPLICAND+1], a + ld a, [H_MULTIPLICAND] ; $ff96 + sbc b + ld [H_MULTIPLICAND], a ; $ff96 + pop af + and $80 + jr nz, .subtractSquaredTerm ; check sign + pop bc + ld a, [H_MULTIPLICAND+2] + add b + ld [H_MULTIPLICAND+2], a + pop bc + ld a, [H_MULTIPLICAND+1] + adc b + ld [H_MULTIPLICAND+1], a + pop bc + ld a, [H_MULTIPLICAND] + adc b + ld [H_MULTIPLICAND], a + jr .addCubedTerm +.subtractSquaredTerm + pop bc + ld a, [H_MULTIPLICAND+2] + sub b + ld [H_MULTIPLICAND+2], a + pop bc + ld a, [H_MULTIPLICAND+1] + sbc b + ld [H_MULTIPLICAND+1], a + pop bc + ld a, [H_MULTIPLICAND] + sbc b + ld [H_MULTIPLICAND], a +.addCubedTerm + pop bc + ld a, [H_MULTIPLICAND+2] + add b + ld [H_MULTIPLICAND+2], a + pop bc + ld a, [H_MULTIPLICAND+1] + adc b + ld [H_MULTIPLICAND+1], a + pop bc + ld a, [H_MULTIPLICAND] + adc b + ld [H_MULTIPLICAND], a ret -DataTable_70b72: ; 70b72 (1c:4b72) - db $F9,$FE,$FF,$FE,$F9,$E4,$90,$40,$00,$40,$90,$E4 - db $01 ; terminator - -Func_70b7f: ; 70b7f (1c:4b7f) - ld c, $9 -.asm_70b81 - push bc +; calculates d*d +CalcDSquared: ; 59010 (16:5010) xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - FuncCoord 0, 7 ; $c42c - ld hl, Coord - FuncCoord 0, 8 ; $c440 - ld de, Coord - ld bc, $ffd8 - call Func_70c12 - FuncCoord 0, 10 ; $c468 - ld hl, Coord - FuncCoord 0, 9 ; $c454 - ld de, Coord - ld bc, $28 - call Func_70c12 - FuncCoord 8, 0 ; $c3a8 - ld hl, Coord - FuncCoord 9, 0 ; $c3a9 - ld de, Coord - ld bc, $fffe - call Func_70c3f - FuncCoord 11, 0 ; $c3ab - ld hl, Coord - FuncCoord 10, 0 ; $c3aa - ld de, Coord - ld bc, $2 - call Func_70c3f - ld a, $1 - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ld c, $6 - call DelayFrames - pop bc - dec c - jr nz, .asm_70b81 - call Func_70a69 - ld c, $a - jp DelayFrames + ld [H_MULTIPLICAND], a ; $ff96 (aliases: H_NUMTOPRINT) + ld [H_MULTIPLICAND+1], a + ld a, d + ld [H_MULTIPLICAND+2], a + ld [H_MULTIPLIER], a ; $ff99 (aliases: H_DIVISOR, H_REMAINDER, H_POWEROFTEN) + jp Multiply -Func_70bca: ; 70bca (1c:4bca) - ld c, $9 - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba -.asm_70bcf - push bc - FuncCoord 0, 16 ; $c4e0 - ld hl, Coord - FuncCoord 0, 17 ; $c4f4 - ld de, Coord - ld bc, $ffd8 - call Func_70c12 - FuncCoord 0, 1 ; $c3b4 - ld hl, Coord - ld de, wTileMap - ld bc, $28 - call Func_70c12 - FuncCoord 18, 0 ; $c3b2 - ld hl, Coord - FuncCoord 19, 0 ; $c3b3 - ld de, Coord - ld bc, $fffe - call Func_70c3f - FuncCoord 1, 0 ; $c3a1 - ld hl, Coord - ld de, wTileMap - ld bc, $2 - call Func_70c3f - call Func_70d19 - call Delay3 - pop bc - dec c - jr nz, .asm_70bcf - call Func_70a69 - ld c, $a - jp DelayFrames +; each entry has the following scheme: +; %AAAABBBB %SCCCCCCC %DDDDDDDD %EEEEEEEE +; resulting in +; (a*n^3)/b + sign*c*n^2 + d*n - e +; where sign = -1 <=> S=1 +GrowthRateTable: ; 5901d (16:501d) + db $11,$00,$00,$00 ; medium fast n^3 + db $34,$0A,$00,$1E ; (unused?) 3/4 n^3 + 10 n^2 - 30 + db $34,$14,$00,$46 ; (unused?) 3/4 n^3 + 20 n^2 - 70 + db $65,$8F,$64,$8C ; medium slow: 6/5 n^3 - 15 n^2 + 100 n - 140 + db $45,$00,$00,$00 ; fast: 4/5 n^3 + db $54,$00,$00,$00 ; slow: 5/4 n^3 -Func_70c12: ; 70c12 (1c:4c12) - ld a, c - ld [wWhichTrade], a ; $cd3d - ld a, b - ld [$cd3e], a - ld c, $8 -.asm_70c1c - push bc - push hl - push de - ld bc, $14 - call CopyData - pop hl - pop de - ld a, [wWhichTrade] ; $cd3d - ld c, a - ld a, [$cd3e] +Func_59035 ; 0x59035 + ld hl, OaksAideHiText + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + jr nz, .asm_59086 ; 0x59042 $42 + ld hl, $d2f7 + ld b, $13 + call CountSetBits + ld a, [$d11e] + ld [$ffdd], a ld b, a - add hl, bc - pop bc - dec c - jr nz, .asm_70c1c - ld l, e - ld h, d + ld a, [$ffdb] + cp b + jr z, .asm_59059 ; 0x59055 $2 + jr nc, .asm_5907c ; 0x59057 $23 +.asm_59059 + ld hl, OaksAideHereYouGoText + call PrintText + ld a, [$ffdc] + ld b, a + ld c, 1 + call GiveItem + jr nc, .BagFull + ld hl, OaksAideGotItemText + call PrintText + ld a, $1 + jr .asm_5908e ; 0x59071 $1b +.BagFull + ld hl, OaksAideNoRoomText + call PrintText + xor a + jr .asm_5908e ; 0x5907a $12 +.asm_5907c + ld hl, OaksAideUhOhText + call PrintText + ld a, $80 + jr .asm_5908e ; 0x59084 $8 +.asm_59086 + ld hl, OaksAideComeBackText + call PrintText ld a, $ff - ld c, $14 -.asm_70c3a - ld [hli], a - dec c - jr nz, .asm_70c3a +.asm_5908e + ld [$ffdb], a ret -Func_70c3f: ; 70c3f (1c:4c3f) - ld a, c - ld [wWhichTrade], a ; $cd3d - ld a, b - ld [$cd3e], a - ld c, $9 -.asm_70c49 - push bc - push hl - push de - ld c, $12 -.asm_70c4e - ld a, [hl] - ld [de], a - ld a, e - add $14 - jr nc, .asm_70c56 - inc d -.asm_70c56 - ld e, a - ld a, l - add $14 - jr nc, .asm_70c5d - inc h -.asm_70c5d - ld l, a - dec c - jr nz, .asm_70c4e - pop hl - pop de - ld a, [wWhichTrade] ; $cd3d - ld c, a - ld a, [$cd3e] - ld b, a - add hl, bc - pop bc - dec c - jr nz, .asm_70c49 - ld l, e - ld h, d - ld de, $14 - ld c, $12 -.asm_70c77 - ld [hl], $ff - add hl, de - dec c - jr nz, .asm_70c77 - ret +OaksAideHiText: ; 59091 (16:5091) + TX_FAR _OaksAideHiText + db "@" + +OaksAideUhOhText: ; 59096 (16:5096) + TX_FAR _OaksAideUhOhText + db "@" + +OaksAideComeBackText: ; 5909b (16:509b) + TX_FAR _OaksAideComeBackText + db "@" + +OaksAideHereYouGoText: ; 590a0 (16:50a0) + TX_FAR _OaksAideHereYouGoText + db "@" + +OaksAideGotItemText: ; 590a5 (16:50a5) + TX_FAR _OaksAideGotItemText + db $0b + db "@" -Func_70c7e: ; 70c7e (1c:4c7e) - ld c, $12 - ld hl, wTileMap - FuncCoord 1, 17 ; $c4f5 - ld de, Coord - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba -.asm_70c89 - push bc - push hl - push de - push de - call Func_70caa - pop hl - call Func_70caa - call Func_70d19 - pop hl - ld bc, $ffec - add hl, bc - ld e, l - ld d, h - pop hl - ld bc, $14 - add hl, bc - pop bc - dec c - jr nz, .asm_70c89 - jp Func_70a69 +OaksAideNoRoomText: ; 590ab (16:50ab) + TX_FAR _OaksAideNoRoomText + db "@" -Func_70caa: ; 70caa (1c:4caa) - ld c, $a -.asm_70cac - ld [hl], $ff - inc hl - inc hl - dec c - jr nz, .asm_70cac - ret +INCLUDE "scripts/route6.asm" -Func_70cb4: ; 70cb4 (1c:4cb4) - ld c, $14 - ld hl, wTileMap - FuncCoord 19, 1 ; $c3c7 - ld de, Coord - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba -.asm_70cbf - push bc - push hl - push de - push de - call Func_70cd8 - pop hl - call Func_70cd8 - call Func_70d19 - pop de - pop hl - pop bc - inc hl - dec de - dec c - jr nz, .asm_70cbf - jp Func_70a69 +INCLUDE "scripts/route8.asm" -Func_70cd8: ; 70cd8 (1c:4cd8) - ld c, $9 - ld de, $28 -.asm_70cdd - ld [hl], $ff - add hl, de - dec c - jr nz, .asm_70cdd - ret +INCLUDE "scripts/route10.asm" -Func_70ce4: ; 70ce4 (1c:4ce4) - call Func_70cfd - ld bc, $000a - ld hl, Unknown_70d61 - call Func_70d06 - ld c, $a - ld b, $1 - ld hl, Unknown_70d93 - call Func_70d06 - jp Func_70a69 +INCLUDE "scripts/route11.asm" -Func_70cfd: ; 70cfd (1c:4cfd) - ld b, $3 - call Func_70b5d - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ret +INCLUDE "scripts/route12.asm" -Func_70d06: ; 70d06 (1c:4d06) - push bc - push hl - ld a, b - call Func_70d50 - pop hl - ld bc, $0005 - add hl, bc - call Func_70d19 - pop bc - dec c - jr nz, Func_70d06 - ret +INCLUDE "scripts/route15.asm" -Func_70d19: ; 70d19 (1c:4d19) - ld a, $1 - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - call Delay3 - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ret +INCLUDE "scripts/route16.asm" -Func_70d24: ; 70d24 (1c:4d24) - call Func_70cfd - ld c, $a - ld hl, Unknown_70d61 ; $4d61 - ld de, Unknown_70d93 ; $4d93 -.asm_70d2f - push bc - push hl - push de - push de - xor a - call Func_70d50 - pop hl - ld a, $1 - call Func_70d50 - pop hl - ld bc, $5 - add hl, bc - ld e, l - ld d, h - pop hl - add hl, bc - call Func_70d19 - pop bc - dec c - jr nz, .asm_70d2f - jp Func_70a69 +INCLUDE "scripts/route18.asm" -Func_70d50: ; 70d50 (1c:4d50) - ld [wWhichTrade], a ; $cd3d - ld a, [hli] - ld [$cd3e], a - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld a, [hli] - ld h, [hl] - ld l, a - jp Func_70dc5 +INCLUDE "data/mapHeaders/fanclub.asm" -Unknown_70d61: ; 70d61 (1c:4d61) - db $01 - dw Unknown_70dfe - FuncCoord 18, 6 - dw Coord +INCLUDE "scripts/fanclub.asm" - db $01 - dw Unknown_70e04 - FuncCoord 19, 3 - dw Coord +INCLUDE "data/mapObjects/fanclub.asm" - db $01 - dw Unknown_70e0e - FuncCoord 18, 0 - dw Coord +FanClubBlocks: ; 59cd5 (16:5cd5) + INCBIN "maps/fanclub.blk" - db $01 - dw Unknown_70e20 - FuncCoord 14, 0 - dw Coord +INCLUDE "data/mapHeaders/silphco2.asm" - db $01 - dw Unknown_70e2e - FuncCoord 10, 0 - dw Coord +INCLUDE "scripts/silphco2.asm" - db $00 - dw Unknown_70e2e - FuncCoord 9, 0 - dw Coord +INCLUDE "data/mapObjects/silphco2.asm" - db $00 - dw Unknown_70e20 - FuncCoord 5, 0 - dw Coord +SilphCo2Blocks: ; 59ec8 (16:5ec8) + INCBIN "maps/silphco2.blk" - db $00 - dw Unknown_70e0e - FuncCoord 1, 0 - dw Coord +INCLUDE "data/mapHeaders/silphco3.asm" - db $00 - dw Unknown_70e04 - FuncCoord 0, 3 - dw Coord +INCLUDE "scripts/silphco3.asm" - db $00 - dw Unknown_70dfe - FuncCoord 1, 6 - dw Coord +INCLUDE "data/mapObjects/silphco3.asm" -Unknown_70d93: ; 70d93 (1c:4d93) - db $00 - dw Unknown_70dfe - FuncCoord 1, 11 - dw Coord +SilphCo3Blocks: ; 5a0a6 (16:60a6) + INCBIN "maps/silphco3.blk" - db $00 - dw Unknown_70e04 - FuncCoord 0, 14 - dw Coord +INCLUDE "data/mapHeaders/silphco10.asm" - db $00 - dw Unknown_70e0e - FuncCoord 1, 17 - dw Coord +INCLUDE "scripts/silphco10.asm" - db $00 - dw Unknown_70e20 - FuncCoord 5, 17 - dw Coord +INCLUDE "data/mapObjects/silphco10.asm" - db $00 - dw Unknown_70e2e - FuncCoord 9, 17 - dw Coord +SilphCo10Blocks: ; 5a25a (16:625a) + INCBIN "maps/silphco10.blk" - db $01 - dw Unknown_70e2e - FuncCoord 10, 17 - dw Coord +INCLUDE "data/mapHeaders/lance.asm" - db $01 - dw Unknown_70e20 - FuncCoord 14, 17 - dw Coord +INCLUDE "scripts/lance.asm" - db $01 - dw Unknown_70e0e - FuncCoord 18, 17 - dw Coord +INCLUDE "data/mapObjects/lance.asm" - db $01 - dw Unknown_70e04 - FuncCoord 19, 14 - dw Coord +LanceBlocks: ; 5a3e9 (16:63e9) + INCBIN "maps/lance.blk" - db $01 - dw Unknown_70dfe - FuncCoord 18, 11 - dw Coord +INCLUDE "data/mapHeaders/halloffameroom.asm" -Func_70dc5: ; 70dc5 (1c:4dc5) - push hl - ld a, [de] - ld c, a - inc de -.asm_70dc9 - ld [hl], $ff - ld a, [$cd3e] - and a - jr z, .asm_70dd4 - inc hl - jr .asm_70dd5 -.asm_70dd4 - dec hl -.asm_70dd5 - dec c - jr nz, .asm_70dc9 - pop hl - ld a, [wWhichTrade] ; $cd3d +INCLUDE "scripts/halloffameroom.asm" + +INCLUDE "data/mapObjects/halloffameroom.asm" + +HallofFameRoomBlocks: ; 5a58b (16:658b) + INCBIN "maps/halloffameroom.blk" + +RemoveGuardDrink: ; 5a59f (16:659f) + ld hl, GuardDrinksList +.drinkLoop + ld a, [hli] + ld [$ffdb], a and a - ld bc, $14 - jr z, .asm_70de5 - ld bc, $ffec -.asm_70de5 - add hl, bc - ld a, [de] - inc de - cp $ff ret z - and a - jr z, Func_70dc5 - ld c, a -.asm_70def - ld a, [$cd3e] - and a - jr z, .asm_70df8 - dec hl - jr .asm_70df9 -.asm_70df8 - inc hl -.asm_70df9 - dec c - jr nz, .asm_70def - jr Func_70dc5 + push hl + ld b, a + call IsItemInBag + pop hl + jr z, .drinkLoop + ld b, BANK(RemoveItemByID) + ld hl, RemoveItemByID + jp Bankswitch -Unknown_70dfe: ; 70dfe (1c:4dfe) - db $02,$03,$05,$04,$09,$FF +GuardDrinksList: ; 5a5b7 (16:65b7) + db FRESH_WATER, SODA_POP, LEMONADE, $00 -Unknown_70e04: ; 70e04 (1c:4e04) - db $01,$01,$02,$02,$04,$02,$04,$02,$03,$FF +SECTION "bank17",ROMX,BANK[$17] -Unknown_70e0e: ; 70e0e (1c:4e0e) - db $02,$01,$03,$01,$04,$01,$04,$01,$04,$01,$03,$01,$02,$01,$01,$01,$01,$FF +SaffronMartBlocks: ; 5c000 (17:4000) +LavenderMartBlocks: ; 5c000 (17:4000) +CeruleanMartBlocks: ; 5c000 (17:4000) +VermilionMartBlocks: ; 5c000 (17:4000) + INCBIN "maps/vermilionmart.blk" -Unknown_70e20: ; 70e20 (1c:4e20) - db $04,$01,$04,$00,$03,$01,$03,$00,$02,$01,$02,$00,$01,$FF +CopycatsHouse2FBlocks: ; 5c010 (17:4010) +RedsHouse2FBlocks: ; 0x5c010 16? + INCBIN "maps/redshouse2f.blk" -Unknown_70e2e: ; 70e2e (1c:4e2e) - db $04,$00,$03,$00,$03,$00,$02,$00,$02,$00,$01,$00,$01,$00,$01,$FF +Museum1FBlocks: ; 5c020 (17:4020) + INCBIN "maps/museum1f.blk" -DisplayTownMap: ; 70e3e (1c:4e3e) - call LoadTownMap - ld hl, $cfcb - ld a, [hl] - push af - ld [hl], $ff - push hl - ld a, $1 - ld [$ffb7], a - ld a, [W_CURMAP] ; $d35e - push af - ld b, $0 - call Func_711c4 - FuncCoord 1, 0 ; $c3a1 - ld hl, Coord - ld de, $cd6d - call PlaceString - ld hl, wOAMBuffer - ld de, wTileMapBackup - ld bc, $10 - call CopyData - ld hl, $8040 - ld de, TownMapCursor ; $4f40 - ld bc, (BANK(TownMapCursor) << 8) + $04 - call CopyVideoDataDouble - xor a - ld [wWhichTrade], a ; $cd3d - pop af - jr Func_70e92 +Museum2FBlocks: ; 5c048 (17:4048) + INCBIN "maps/museum2f.blk" -Func_70e7e: ; 70e7e (1c:4e7e) - ld hl, wTileMap - ld bc, $114 - call ClearScreenArea - ld hl, TownMapOrder ; $4f11 - ld a, [wWhichTrade] ; $cd3d - ld c, a - ld b, $0 - add hl, bc - ld a, [hl] +SaffronPokecenterBlocks: ; 5c064 (17:4064) +VermilionPokecenterBlocks: ; 5c064 (17:4064) +LavenderPokecenterBlocks: ; 5c064 (17:4064) +PewterPokecenterBlocks: ; 5c064 (17:4064) + INCBIN "maps/pewterpokecenter.blk" -Func_70e92: ; 70e92 (1c:4e92) - ld de, $cee9 - call Func_712f1 - ld a, [de] - push hl - call Func_71258 - ld a, $4 - ld [$cd5b], a - ld hl, $c310 - call Func_71279 - pop hl - ld de, $cd6d -.asm_70eac - ld a, [hli] - ld [de], a - inc de - cp $50 - jr nz, .asm_70eac - FuncCoord 1, 0 ; $c3a1 - ld hl, Coord - ld de, $cd6d - call PlaceString - ld hl, $c310 - ld de, $c518 - ld bc, $10 - call CopyData -.asm_70ec8 - call Func_716c6 - call GetJoypadStateLowSensitivity - ld a, [$ffb5] - ld b, a - and $c3 - jr z, .asm_70ec8 - ld a, (SFX_02_3c - SFX_Headers_02) / 3 - call PlaySound - bit 6, b - jr nz, .asm_70ef2 - bit 7, b - jr nz, .asm_70f01 +UndergroundPathEntranceRoute7Blocks: ; 5c080 (17:4080) +UndergroundPathEntranceRoute7CopyBlocks: ; 5c080 (17:4080) +UndergroundPathEntranceRoute6Blocks: ; 5c080 (17:4080) +UndergroundPathEntranceRoute5Blocks: ; 5c080 (17:4080) + INCBIN "maps/undergroundpathentranceroute5.blk" + +Route2GateBlocks: ; 5c090 (17:4090) +ViridianForestEntranceBlocks: ; 5c090 (17:4090) +ViridianForestExitBlocks: ; 5c090 (17:4090) + INCBIN "maps/viridianforestexit.blk" + +INCLUDE "data/mapHeaders/redshouse2f.asm" + +INCLUDE "scripts/redshouse2f.asm" + +INCLUDE "data/mapObjects/redshouse2f.asm" + +Func_5c0dc: ; 5c0dc (17:40dc) + ld a, $4b + ld [wPokedexOwned], a ; $d2f7 + ld a, $3d + call Predef ; indirect jump to ShowPokedexData (402d1 (10:42d1)) xor a - ld [$d09b], a - ld [$ffb7], a - ld [W_SUBANIMTRANSFORM], a ; $d08b - call Func_711ab - pop hl - pop af - ld [hl], a + ld [wPokedexOwned], a ; $d2f7 ret -.asm_70ef2 - ld a, [wWhichTrade] ; $cd3d - inc a - cp $2f - jr nz, .asm_70efb - xor a -.asm_70efb - ld [wWhichTrade], a ; $cd3d - jp Func_70e7e -.asm_70f01 - ld a, [wWhichTrade] ; $cd3d - dec a - cp $ff - jr nz, .asm_70f0b - ld a, $2e -.asm_70f0b - ld [wWhichTrade], a ; $cd3d - jp Func_70e7e -INCLUDE "data/town_map_order.asm" +INCLUDE "data/mapHeaders/museum1f.asm" + +INCLUDE "scripts/museum1f.asm" + +INCLUDE "data/mapObjects/museum1f.asm" + +INCLUDE "data/mapHeaders/museum2f.asm" + +INCLUDE "scripts/museum2f.asm" + +INCLUDE "data/mapObjects/museum2f.asm" + +INCLUDE "data/mapHeaders/pewtergym.asm" + +INCLUDE "scripts/pewtergym.asm" + +INCLUDE "data/mapObjects/pewtergym.asm" + +PewterGymBlocks: ; 5c558 (17:4558) + INCBIN "maps/pewtergym.blk" + +INCLUDE "data/mapHeaders/pewterpokecenter.asm" + +INCLUDE "scripts/pewterpokecenter.asm" + +INCLUDE "data/mapObjects/pewterpokecenter.asm" + +INCLUDE "data/mapHeaders/ceruleanpokecenter.asm" + +INCLUDE "scripts/ceruleanpokecenter.asm" + +INCLUDE "data/mapObjects/ceruleanpokecenter.asm" + +CeruleanPokecenterBlocks: ; 5c68b (17:468b) + INCBIN "maps/ceruleanpokecenter.blk" + +INCLUDE "data/mapHeaders/ceruleangym.asm" + +INCLUDE "scripts/ceruleangym.asm" + +INCLUDE "data/mapObjects/ceruleangym.asm" + +CeruleanGymBlocks: ; 5c866 (17:4866) + INCBIN "maps/ceruleangym.blk" + +INCLUDE "data/mapHeaders/ceruleanmart.asm" + +INCLUDE "scripts/ceruleanmart.asm" + +INCLUDE "data/mapObjects/ceruleanmart.asm" -TownMapCursor: ; 70f40 (1c:4f40) - INCBIN "gfx/town_map_cursor.1bpp" +INCLUDE "data/mapHeaders/lavenderpokecenter.asm" -LoadTownMap_Nest: ; 70f60 (1c:4f60) - call LoadTownMap - ld hl, $cfcb - ld a, [hl] - push af - ld [hl], $ff - push hl - call Func_711ef - call GetMonName - FuncCoord 1, 0 ; $c3a1 - ld hl, Coord - call PlaceString - ld h, b - ld l, c - ld de, MonsNestText - call PlaceString - call WaitForTextScrollButtonPress - call Func_711ab - pop hl - pop af - ld [hl], a - ret +INCLUDE "scripts/lavenderpokecenter.asm" -MonsNestText: ; 70f89 (1c:4f89) - db "'s NEST@" +INCLUDE "data/mapObjects/lavenderpokecenter.asm" -LoadTownMap_Fly: ; 70f90 (1c:4f90) - call CleanLCD_OAM - call LoadTownMap - call LoadPlayerSpriteGraphics - call LoadFontTilePatterns - ld de, BirdSprite ; $4d80 - ld hl, $8040 - ld bc, (BANK(BirdSprite) << 8) + $0c - call CopyVideoData - ld de, TownMapUpArrow ; $5093 - ld hl, $8ed0 - ld bc, (BANK(TownMapUpArrow) << 8) + $01 - call CopyVideoDataDouble - call Func_71070 - ld hl, $cfcb - ld a, [hl] - push af - ld [hl], $ff - push hl - ld hl, wTileMap - ld de, ToText - call PlaceString - ld a, [W_CURMAP] ; $d35e - ld b, $0 - call Func_711c4 - ld hl, $cd3e - FuncCoord 18, 0 ; $c3b2 - ld de, Coord +INCLUDE "data/mapHeaders/lavendermart.asm" -.townMapFlyLoop - ld a, $7f - ld [de], a - push hl - push hl - FuncCoord 3, 0 ; $c3a3 - ld hl, Coord - ld bc, $10f - call ClearScreenArea - pop hl - ld a, [hl] - ld b, $4 - call Func_711c4 - FuncCoord 3, 0 ; $c3a3 - ld hl, Coord - ld de, $cd6d - call PlaceString - ld c, $f - call DelayFrames - FuncCoord 18, 0 ; $c3b2 - ld hl, Coord - ld [hl], $ed - FuncCoord 19, 0 ; $c3b3 - ld hl, Coord - ld [hl], $ee - pop hl -.asm_71004 - push hl - call DelayFrame - call GetJoypadStateLowSensitivity - ld a, [$ffb5] - ld b, a - pop hl - and $c3 - jr z, .asm_71004 - bit 0, b - jr nz, .asm_71026 - ld a, (SFX_02_3c - SFX_Headers_02) / 3 - call PlaySound - bit 6, b - jr nz, .asm_71042 - bit 7, b - jr nz, .asm_71058 - jr .asm_71037 -.asm_71026 - ld a, (SFX_02_3e - SFX_Headers_02) / 3 - call PlaySound - ld a, [hl] - ld [$d71a], a - ld hl, $d732 - set 3, [hl] - inc hl - set 7, [hl] -.asm_71037 - xor a - ld [$d09b], a - call GBPalWhiteOutWithDelay3 - pop hl - pop af - ld [hl], a - ret -.asm_71042 - FuncCoord 18, 0 ; $c3b2 - ld de, Coord - inc hl - ld a, [hl] - cp $ff - jr z, .asm_71052 - cp $fe - jr z, .asm_71042 - jp .townMapFlyLoop -.asm_71052 - ld hl, $cd3e - jp .townMapFlyLoop -.asm_71058 - FuncCoord 19, 0 ; $c3b3 - ld de, Coord - dec hl - ld a, [hl] - cp $ff - jr z, .asm_71068 - cp $fe - jr z, .asm_71058 - jp .townMapFlyLoop -.asm_71068 - ld hl, $cd49 - jr .asm_71058 +INCLUDE "scripts/lavendermart.asm" -ToText: ; 7106d (1c:506d) - db "To@" +INCLUDE "data/mapObjects/lavendermart.asm" -Func_71070: ; 71070 (1c:5070) - ld hl, wWhichTrade ; $cd3d - ld [hl], $ff - inc hl - ld a, [$d70b] - ld e, a - ld a, [$d70c] - ld d, a - ld bc, $b -.asm_71081 - srl d - rr e - ld a, $fe - jr nc, .asm_7108a - ld a, b -.asm_7108a - ld [hl], a - inc hl - inc b - dec c - jr nz, .asm_71081 - ld [hl], $ff - ret +INCLUDE "data/mapHeaders/vermilionpokecenter.asm" -TownMapUpArrow: ; 71093 (1c:5093) - INCBIN "gfx/up_arrow.1bpp" +INCLUDE "scripts/vermilionpokecenter.asm" -LoadTownMap: ; 7109b (1c:509b) - call GBPalWhiteOutWithDelay3 - call ClearScreen - call UpdateSprites - ld hl, wTileMap - ld b, $12 - ld c, $12 - call TextBoxBorder - call DisableLCD - ld hl, WorldMapTileGraphics ; $65a8 - ld de, $9600 - ld bc, $100 - ld a, BANK(WorldMapTileGraphics) - call FarCopyData2 - ld hl, MonNestIcon ; $56be - ld de, $8040 - ld bc, $8 - ld a, BANK(MonNestIcon) - call FarCopyDataDouble - ld hl, wTileMap - ld de, CompressedMap ; $5100 -.asm_710d3 - ld a, [de] - and a - jr z, .asm_710e9 - ld b, a - and $f - ld c, a - ld a, b - swap a - and $f - add $60 -.asm_710e2 - ld [hli], a - dec c - jr nz, .asm_710e2 - inc de - jr .asm_710d3 -.asm_710e9 - call EnableLCD - ld b, $2 - call GoPAL_SET - call Delay3 - call GBPalNormal - xor a - ld [W_SUBANIMTRANSFORM], a ; $d08b - inc a - ld [$d09b], a - ret +INCLUDE "data/mapObjects/vermilionpokecenter.asm" -CompressedMap: ; 71100 (1c:5100) -; you can decompress this file with the redrle program in the extras/ dir - INCBIN "gfx/town_map.rle" +INCLUDE "data/mapHeaders/vermilionmart.asm" -Func_711ab: ; 711ab (1c:51ab) - xor a - ld [$d09b], a - call GBPalWhiteOut - call ClearScreen - call CleanLCD_OAM - call LoadPlayerSpriteGraphics - call LoadFontTilePatterns - call UpdateSprites - jp GoPAL_SET_CF1C +INCLUDE "scripts/vermilionmart.asm" -Func_711c4: ; 711c4 (1c:51c4) - push af - ld a, b - ld [$cd5b], a - pop af - ld de, $cee9 - call Func_712f1 - ld a, [de] - push hl - call Func_71258 - call Func_7126d - pop hl - ld de, $cd6d -.asm_711dc - ld a, [hli] - ld [de], a - inc de - cp $50 - jr nz, .asm_711dc - ld hl, wOAMBuffer - ld de, wTileMapBackup - ld bc, $a0 - jp CopyData +INCLUDE "data/mapObjects/vermilionmart.asm" -Func_711ef: ; 711ef (1c:51ef) - ld b, BANK(Func_e9cb) - ld hl, Func_e9cb - call Bankswitch - call Func_712d9 - ld hl, wOAMBuffer - ld de, $cee9 -.asm_71200 - ld a, [de] - cp $ff - jr z, .asm_7121d - and a - jr z, .asm_7121a - push hl - call Func_712f1 - pop hl - ld a, [de] - cp $19 - jr z, .asm_7121a - call Func_71258 - ld a, $4 - ld [hli], a - xor a - ld [hli], a -.asm_7121a - inc de - jr .asm_71200 -.asm_7121d - ld a, l - and a - jr nz, .asm_71236 - FuncCoord 1, 7 ; $c42d - ld hl, Coord - ld b, $2 - ld c, $f - call TextBoxBorder - FuncCoord 2, 9 ; $c456 - ld hl, Coord - ld de, AreaUnknownText - call PlaceString - jr .asm_7123e -.asm_71236 - ld a, [W_CURMAP] ; $d35e - ld b, $0 - call Func_711c4 -.asm_7123e - ld hl, wOAMBuffer - ld de, wTileMapBackup - ld bc, $a0 - jp CopyData +INCLUDE "data/mapHeaders/vermiliongym.asm" -AreaUnknownText: ; 7124a (1c:524a) - db " AREA UNKNOWN@" +INCLUDE "scripts/vermiliongym.asm" -Func_71258: ; 71258 (1c:5258) - push af - and $f0 - srl a - add $18 - ld b, a - ld [hli], a - pop af - and $f - swap a - srl a - add $18 - ld c, a - ld [hli], a - ret +INCLUDE "data/mapObjects/vermiliongym.asm" -Func_7126d: ; 7126d (1c:526d) - ld a, [$cd5b] - and a - ld hl, $c390 - jr z, Func_71279 - ld hl, $c380 +VermilionGymBlocks: ; 5cc38 (17:4c38) + INCBIN "maps/vermiliongym.blk" -Func_71279: ; 71279 (1c:5279) - push hl - ld hl, $fcfc - add hl, bc - ld b, h - ld c, l - pop hl +INCLUDE "data/mapHeaders/copycatshouse2f.asm" -Func_71281: ; 71281 (1c:5281) - ld de, $202 -.asm_71284 - push de - push bc -.asm_71286 - ld a, b - ld [hli], a - ld a, c - ld [hli], a - ld a, [$cd5b] - ld [hli], a - inc a - ld [$cd5b], a - xor a - ld [hli], a - inc d - ld a, $8 - add c - ld c, a - dec e - jr nz, .asm_71286 - pop bc - pop de - ld a, $8 - add b - ld b, a - dec d - jr nz, .asm_71284 - ret +INCLUDE "scripts/copycatshouse2f.asm" -Func_712a6: ; 712a6 (1c:52a6) - xor a - ld [$cd5c], a - ld de, $202 -.asm_712ad - push de - push bc -.asm_712af - ld a, b - ld [hli], a - ld a, c - ld [hli], a - ld a, [$cd5b] - ld [hli], a - ld a, [$cd5c] - ld [hli], a - xor $20 - ld [$cd5c], a - inc d - ld a, $8 - add c - ld c, a - dec e - jr nz, .asm_712af - pop bc - pop de - push hl - ld hl, $cd5b - inc [hl] - inc [hl] - pop hl - ld a, $8 - add b - ld b, a - dec d - jr nz, .asm_712ad - ret +INCLUDE "data/mapObjects/copycatshouse2f.asm" -Func_712d9: ; 712d9 (1c:52d9) - ld de, $cee9 -.asm_712dc - ld a, [de] - inc de - cp $ff - ret z - ld c, a - ld l, e - ld h, d -.asm_712e4 - ld a, [hl] - cp $ff - jr z, .asm_712dc - cp c - jr nz, .asm_712ee - xor a - ld [hl], a -.asm_712ee - inc hl - jr .asm_712e4 +INCLUDE "data/mapHeaders/fightingdojo.asm" -Func_712f1: ; 712f1 (1c:52f1) - cp REDS_HOUSE_1F - jr c, .asm_71304 - ld bc, $4 - ld hl, InternalMapEntries ; $5382 -.asm_712fb - cp [hl] - jr c, .asm_71301 - add hl, bc - jr .asm_712fb -.asm_71301 - inc hl - jr .asm_7130d -.asm_71304 - ld hl, ExternalMapEntries ; $5313 - ld c, a - ld b, $0 - add hl, bc - add hl, bc - add hl, bc -.asm_7130d - ld a, [hli] - ld [de], a - ld a, [hli] - ld h, [hl] - ld l, a - ret +INCLUDE "scripts/fightingdojo.asm" + +INCLUDE "data/mapObjects/fightingdojo.asm" + +FightingDojoBlocks: ; 5cfe3 (17:4fe3) + INCBIN "maps/fightingdojo.blk" + +INCLUDE "data/mapHeaders/saffrongym.asm" + +INCLUDE "scripts/saffrongym.asm" + +INCLUDE "data/mapObjects/saffrongym.asm" + +SaffronGymBlocks: ; 5d3a3 (17:53a3) + INCBIN "maps/saffrongym.blk" + +INCLUDE "data/mapHeaders/saffronmart.asm" + +INCLUDE "scripts/saffronmart.asm" + +INCLUDE "data/mapObjects/saffronmart.asm" + +INCLUDE "data/mapHeaders/silphco1.asm" + +INCLUDE "scripts/silphco1.asm" + +INCLUDE "data/mapObjects/silphco1.asm" + +SilphCo1Blocks: ; 5d4a2 (17:54a2) + INCBIN "maps/silphco1.blk" + +INCLUDE "data/mapHeaders/saffronpokecenter.asm" + +INCLUDE "scripts/saffronpokecenter.asm" + +INCLUDE "data/mapObjects/saffronpokecenter.asm" + +INCLUDE "data/mapHeaders/viridianforestexit.asm" + +INCLUDE "scripts/viridianforestexit.asm" + +INCLUDE "data/mapObjects/viridianforestexit.asm" + +INCLUDE "data/mapHeaders/route2gate.asm" + +INCLUDE "scripts/route2gate.asm" + +INCLUDE "data/mapObjects/route2gate.asm" + +INCLUDE "data/mapHeaders/viridianforestentrance.asm" + +INCLUDE "scripts/viridianforestentrance.asm" + +INCLUDE "data/mapObjects/viridianforestentrance.asm" + +INCLUDE "data/mapHeaders/undergroundpathentranceroute5.asm" -INCLUDE "data/town_map_entries.asm" +INCLUDE "scripts/undergroundpathentranceroute5.asm" -INCLUDE "text/map_names.asm" +INCLUDE "data/mapObjects/undergroundpathentranceroute5.asm" -MonNestIcon: ; 716be (1c:56be) - INCBIN "gfx/mon_nest_icon.1bpp" +INCLUDE "data/mapHeaders/undergroundpathentranceroute6.asm" -Func_716c6: ; 716c6 (1c:56c6) - ld a, [W_SUBANIMTRANSFORM] ; $d08b - inc a - cp $19 - jr z, .asm_716e1 - cp $32 - jr nz, .asm_716f1 - ld hl, wTileMapBackup - ld de, wOAMBuffer - ld bc, $90 - call CopyData - xor a - jr .asm_716f1 -.asm_716e1 - ld hl, wOAMBuffer - ld b, $24 - ld de, $4 -.asm_716e9 - ld [hl], $a0 - add hl, de - dec b - jr nz, .asm_716e9 - ld a, $19 -.asm_716f1 - ld [W_SUBANIMTRANSFORM], a ; $d08b - jp DelayFrame +INCLUDE "scripts/undergroundpathentranceroute6.asm" -AnimatePartyMon_ForceSpeed1: ; 716f7 (1c:56f7) - xor a - ld [wCurrentMenuItem], a ; $cc26 - ld b, a - inc a - jr GetAnimationSpeed +INCLUDE "data/mapObjects/undergroundpathentranceroute6.asm" -; $cf1f contains the party mon's health bar colors -; 0: green -; 1: yellow -; 2: red -AnimatePartyMon: ; 716ff (1c:56ff) - ld hl, $cf1f - ld a, [wCurrentMenuItem] - ld c, a - ld b, $0 - add hl, bc - ld a, [hl] +INCLUDE "data/mapHeaders/undergroundpathentranceroute7.asm" -GetAnimationSpeed: ; 7170a (1c:570a) - ld c, a - ld hl, PartyMonSpeeds - add hl, bc - ld a, [$cf1b] - xor $1 - add [hl] - ld c, a - add a - ld b, a - ld a, [W_SUBANIMTRANSFORM] ; $d08b - and a - jr z, .resetSprites - cp c - jr z, .animateSprite -.incTimer - inc a - cp b - jr nz, .resetTimer - xor a -.resetTimer - ld [W_SUBANIMTRANSFORM], a ; $d08b - jp DelayFrame -.resetSprites - push bc - ld hl, $cc5b - ld de, wOAMBuffer - ld bc, $60 - call CopyData - pop bc - xor a - jr .incTimer -.animateSprite - push bc - ld hl, $c302 ; OAM tile id - ld bc, $10 - ld a, [wCurrentMenuItem] - call AddNTimes - ld c, $40 ; amout to increase the tile id by - ld a, [hl] - cp $4 ; tile ID for SPRITE_BALL_M - jr z, .editCoords - cp $8 ; tile ID for SPRITE_HELIX - jr nz, .editTileIDS -; SPRITE_BALL_M and SPRITE_HELIX only shake up and down -.editCoords - dec hl - dec hl ; dec hl to the OAM y coord - ld c, $1 ; amount to increase the y coord by -; otherwise, load a second sprite frame -.editTileIDS - ld b, $4 - ld de, $4 -.loop - ld a, [hl] - add c - ld [hl], a - add hl, de - dec b - jr nz, .loop - pop bc - ld a, c - jr .incTimer +INCLUDE "scripts/undergroundpathentranceroute7.asm" -PartyMonSpeeds: ; 71769 (1c:5769) - db $05,$10,$20 +INCLUDE "data/mapObjects/undergroundpathentranceroute7.asm" -Func_7176c: ; 7176c (1c:576c) - ld hl, MonOverworldSpritePointers ; $57c0 - ld a, $1c +INCLUDE "data/mapHeaders/undergroundpathentranceroute7copy.asm" -Func_71771: ; 71771 (1c:5771) - ld bc, $0 -.asm_71774 - push af - push bc - push hl +INCLUDE "scripts/undergroundpathentranceroute7copy.asm" + +INCLUDE "data/mapObjects/undergroundpathentranceroute7copy.asm" + +INCLUDE "data/mapHeaders/silphco9.asm" + +INCLUDE "scripts/silphco9.asm" + +INCLUDE "data/mapObjects/silphco9.asm" + +SilphCo9Blocks: ; 5d989 (17:5989) + INCBIN "maps/silphco9.blk" + +INCLUDE "data/mapHeaders/victoryroad1.asm" + +INCLUDE "scripts/victoryroad1.asm" + +INCLUDE "data/mapObjects/victoryroad1.asm" + +VictoryRoad1Blocks: ; 5db04 (17:5b04) + INCBIN "maps/victoryroad1.blk" + +; updates the types of a party mon (pointed to in hl) to the ones of the mon specified in $d11e +SetPartyMonTypes: ; 5db5e (17:5b5e) + call Load16BitRegisters + ld bc, W_PARTYMON1_TYPE1 - W_PARTYMON1DATA ; $5 add hl, bc - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - ld a, [hli] - ld h, [hl] - ld l, a - call CopyVideoData + ld a, [$d11e] + ld [$d0b5], a + push hl + call GetMonHeader pop hl - pop bc - ld a, $6 - add c - ld c, a - pop af - dec a - jr nz, .asm_71774 + ld a, [W_MONHTYPE1] + ld [hli], a + ld a, [W_MONHTYPE2] + ld [hl], a ret -Func_71791: ; 71791 (1c:5791) - call DisableLCD - ld hl, MonOverworldSpritePointers ; $57c0 - ld a, $1c - ld bc, $0 -.asm_7179c - push af - push bc - push hl - add hl, bc - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - push de - ld a, [hli] - ld c, a - swap c - ld b, $0 - ld a, [hli] - ld e, [hl] - inc hl - ld d, [hl] - pop hl - call FarCopyData2 - pop hl - pop bc - ld a, $6 - add c - ld c, a - pop af - dec a - jr nz, .asm_7179c - jp EnableLCD +Func_5db79: ; 5db79 (17:5b79) + call EnableAutoTextBoxDrawing + ld a, $4 + jp Func_3ef5 -MonOverworldSpritePointers: ; 717c0 (1c:57c0) - dw SlowbroSprite + $c0 - db $40 / $10 ; 40 bytes - db BANK(SlowbroSprite) - dw $8000 +RedBedroomSNESText: ; 5db81 (17:5b81) + TX_FAR _RedBedroomSNESText + db "@" - dw BallSprite - db $80 / $10 ; $80 bytes - db BANK(BallSprite) - dw $8040 +Func_5db86: ; 5db86 (17:5b86) + call EnableAutoTextBoxDrawing + ld a, $3 + jp Func_3ef5 - dw ClefairySprite + $c0 - db $40 / $10 ; $40 bytes - db BANK(ClefairySprite) - dw $80C0 +Route15UpstairsLeftBinoculars: ; 5db8e (17:5b8e) + db $fc +Func_5db8f: ; 5db8f (17:5b8f) + ld a, [$c109] + cp $4 ; i + ret nz + call EnableAutoTextBoxDrawing + ld a, $a ; text id Route15UpstairsBinocularsText + call Func_3ef5 + ld a, ARTICUNO + ld [$cf91], a + call PlayCry + jp DisplayMonFrontSpriteInBox - dw BirdSprite + $c0 - db $40 / $10 ; $40 bytes - db BANK(BirdSprite) - dw $8100 +Route15UpstairsBinocularsText: ; 5dba8 (17:5ba8) + TX_FAR _Route15UpstairsBinocularsText + db "@" - dw SeelSprite - db $40 / $10 ; $40 bytes - db BANK(SeelSprite) - dw $8140 +AerodactylFossil: ; 5dbad (17:5bad) + ld a, FOSSIL_AERODACTYL + ld [$cf91], a + call DisplayMonFrontSpriteInBox + call EnableAutoTextBoxDrawing + ld a, $9 + call Func_3ef5 + ret - dw MonOverworldSprites + $40 - db $10 / $10 ; $10 bytes - db BANK(MonOverworldSprites) - dw $8180 +AerodactylFossilText: ; 5dbbe (17:5bbe) + TX_FAR _AerodactylFossilText + db "@" - dw MonOverworldSprites + $50 - db $10 / $10 ; $10 bytes - db BANK(MonOverworldSprites) - dw $81A0 +KabutopsFossil: ; 5bdc3 (17:5bc3) + ld a, FOSSIL_KABUTOPS + ld [$cf91], a + call DisplayMonFrontSpriteInBox + call EnableAutoTextBoxDrawing + ld a, $b + call Func_3ef5 + ret - dw MonOverworldSprites + $60 - db $10 / $10 ; $10 bytes - db BANK(MonOverworldSprites) - dw $81C0 +KabutopsFossilText: ; 5dbd4 (17:5bd4) + TX_FAR _KabutopsFossilText + db "@" - dw MonOverworldSprites + $70 - db $10 / $10 ; $10 bytes - db BANK(MonOverworldSprites) - dw $81E0 +DisplayMonFrontSpriteInBox: ; 5dbd9 (17:5bd9) +; Displays a pokemon's front sprite in a pop-up window. +; [$cf91] = pokemon interal id number + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call Delay3 + xor a + ld [$ffb0], a + call SaveScreenTilesToBuffer1 + ld a, $11 + ld [$d125], a + call DisplayTextBoxID + call UpdateSprites + ld a, [$cf91] + ld [$d0b5], a + call GetMonHeader + ld de, $8b10 + call LoadMonFrontSprite + ld a, $80 + ld [$ffe1], a + FuncCoord 10, 11 ; $c486 + ld hl, Coord + ld a, $2 + call Predef ; indirect jump to Func_3f073 (3f073 (f:7073)) + call WaitForTextScrollButtonPress + call LoadScreenTilesFromBuffer1 + call Delay3 + ld a, $90 + ld [$ffb0], a + ret - dw MonOverworldSprites + $80 - db $10 / $10 ; $10 bytes - db BANK(MonOverworldSprites) - dw $8200 +Func_5dc1a: ; 5dc1a (17:5c1a) + call EnableAutoTextBoxDrawing + ld a, $1 + ld [$cc3c], a + ld a, [$cd3d] + call Func_3ef5 + ret - dw MonOverworldSprites + $90 - db $10 / $10 ; $10 bytes - db BANK(MonOverworldSprites) - dw $8220 +LinkCableHelp: ; 5dc29 (17:5c29) + db $08 ; asm + call SaveScreenTilesToBuffer1 + ld hl, LinkCableHelpText1 + call PrintText + xor a + ld [W_ANIMATIONID], a + ld [wCurrentMenuItem], a + ld [wLastMenuItem], a + ld a, $3 + ld [wMenuWatchedKeys], a + ld a, $3 + ld [wMaxMenuItem], a + ld a, $2 + ld [wTopMenuItemY], a + ld a, $1 + ld [wTopMenuItemX], a +.asm_5c51 + ld hl, $d730 + set 6, [hl] + ld hl, wTileMap + ld b, $8 + ld c, $d + call TextBoxBorder + ld hl, $c3ca + ld de, HowToLinkText + call PlaceString + ld hl, LinkCableHelpText2 + call PrintText + call HandleMenuInput + bit 1, a + jr nz, .asm_5dc93 ; 0x5dc74 $1d + ld a, [wCurrentMenuItem] + cp $3 + jr z, .asm_5dc93 ; 0x5dc7b $16 + ld hl, $d730 + res 6, [hl] + ld hl, LinkCableInfoTexts + add a + ld d, $0 + ld e, a + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + call PrintText + jp .asm_5c51 +.asm_5dc93 + ld hl, $d730 + res 6, [hl] + call LoadScreenTilesFromBuffer1 + jp TextScriptEnd - dw MonOverworldSprites + $A0 - db $10 / $10 ; $10 bytes - db BANK(MonOverworldSprites) - dw $8240 +LinkCableHelpText1: ; 5dc9e (17:5c9e) + TX_FAR _LinkCableHelpText1 + db "@" - dw MonOverworldSprites + $B0 - db $10 / $10 ; $10 bytes - db BANK(MonOverworldSprites) - dw $8260 +LinkCableHelpText2: ; 5dca3 (17:5ca3) + TX_FAR _LinkCableHelpText2 + db "@" + +HowToLinkText: ; 5dca8 (17:5ca8) + db "HOW TO LINK" + next "COLOSSEUM" + next "TRADE CENTER" + next "STOP READING@" + +LinkCableInfoTexts: ; 5dcd8 (17:5cd8) + dw LinkCableInfoText1 + dw LinkCableInfoText2 + dw LinkCableInfoText3 + +LinkCableInfoText1: ; 5dcde (17:5cde) + TX_FAR _LinkCableInfoText1 + db "@" + +LinkCableInfoText2: ; 5dce3 (17:5ce3) + TX_FAR _LinkCableInfoText2 + db "@" + +LinkCableInfoText3: ; 5dce8 (17:5ce8) + TX_FAR _LinkCableInfoText3 + db "@" + +ViridianSchoolBlackboard: ; 5dced (17:5ced) + db $08 ; asm + call SaveScreenTilesToBuffer1 + ld hl, ViridianSchoolBlackboardText1 + call PrintText + xor a + ld [W_ANIMATIONID], a + ld [wCurrentMenuItem], a + ld [wLastMenuItem], a + ld a, $33 + ld [wMenuWatchedKeys], a + ld a, $2 + ld [wMaxMenuItem], a + ld a, $2 + ld [wTopMenuItemY], a + ld a, $1 + ld [wTopMenuItemX], a +.asm_5dd15 + ld hl, $d730 + set 6, [hl] + ld hl, wTileMap + ld bc, $060a + call TextBoxBorder + ld hl, $c3c9 + ld de, StatusAilmentText1 + call PlaceString + ld hl, $c3ce + ld de, StatusAilmentText2 + call PlaceString + ld hl, ViridianSchoolBlackboardText2 + call PrintText + call HandleMenuInput + bit 1, a + jr nz, .exitBlackboard + bit 4, a + jr z, .asm_5dd5c + ld a, $2 + ld [wMaxMenuItem], a + ld a, $2 + ld [wTopMenuItemY], a + ld a, $6 + ld [wTopMenuItemX], a + ld a, $3 + ld [W_ANIMATIONID], a + jr .asm_5dd15 +.asm_5dd5c + bit 5, a + jr z, .asm_5dd75 + ld a, $2 + ld [wMaxMenuItem], a + ld a, $2 + ld [wTopMenuItemY], a + ld a, $1 + ld [wTopMenuItemX], a + xor a + ld [W_ANIMATIONID], a + jr .asm_5dd15 +.asm_5dd75 + ld a, [wCurrentMenuItem] + ld b, a + ld a, [W_ANIMATIONID] + add b + cp $5 + jr z, .exitBlackboard + ld hl, $d730 + res 6, [hl] + ld hl, ViridianBlackboardStatusPointers + add a + ld d, $0 + ld e, a + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + call PrintText + jp .asm_5dd15 +.exitBlackboard + ld hl, $d730 + res 6, [hl] + call LoadScreenTilesFromBuffer1 + jp TextScriptEnd - dw MonOverworldSprites + $100 - db $40 / $10 ; $40 bytes - db BANK(MonOverworldSprites) - dw $8380 +ViridianSchoolBlackboardText1: ; 5dda2 (17:5da2) + TX_FAR _ViridianSchoolBlackboardText1 + db "@" - dw SlowbroSprite - db $40 / $10 ; $40 bytes - db BANK(SlowbroSprite) - dw $8400 +ViridianSchoolBlackboardText2: ; 5dda7 (17:5da7) + TX_FAR _ViridianSchoolBlackboardText2 + db "@" - dw BallSprite - db $80 / $10 ; $80 bytes - db BANK(BallSprite) - dw $8440 +StatusAilmentText1: ; 5ddac (17:5dac) + db " SLP" + next " PSN" + next " PAR@" - dw ClefairySprite - db $40 / $10 ; $40 bytes - db BANK(ClefairySprite) - dw $84C0 +StatusAilmentText2: ; 5ddbb (17:5dbb) + db " BRN" + next " FRZ" + next " QUIT@@" - dw BirdSprite - db $40 / $10 ; $40 bytes - db BANK(BirdSprite) - dw $8500 +ViridianBlackboardStatusPointers: ; 5ddcc (17:5ddc) + dw ViridianBlackboardSleepText + dw ViridianBlackboardPoisonText + dw ViridianBlackbaordPrlzText + dw ViridianBlackboardBurnText + dw ViridianBlackboardFrozenText - dw SeelSprite + $C0 - db $40 / $10 ; $40 bytes - db BANK(SeelSprite) - dw $8540 +ViridianBlackboardSleepText: ; 5ddd6 (17:5dd6) + TX_FAR _ViridianBlackboardSleepText + db "@" - dw MonOverworldSprites - db $10 / $10 ; $10 bytes - db BANK(MonOverworldSprites) - dw $8580 +ViridianBlackboardPoisonText: ; 5dddb (17:5ddb) + TX_FAR _ViridianBlackboardPoisonText + db "@" - dw MonOverworldSprites + $10 - db $10 / $10 ; $10 bytes - db BANK(MonOverworldSprites) - dw $85A0 +ViridianBlackbaordPrlzText: ; 5dde0 (17:5de0) + TX_FAR _ViridianBlackbaordPrlzText + db "@" - dw MonOverworldSprites + $20 - db $10 / $10 ; $10 bytes - db BANK(MonOverworldSprites) - dw $85C0 +ViridianBlackboardBurnText: ; 5dde5 (17:5de5) + TX_FAR _ViridianBlackboardBurnText + db "@" - dw MonOverworldSprites + $30 - db $10 / $10 ; $10 bytes - db BANK(MonOverworldSprites) - dw $85E0 +ViridianBlackboardFrozenText: ; 5ddea (17:5dea) + TX_FAR _ViridianBlackboardFrozenText + db "@" - dw MonOverworldSprites + $C0 - db $10 / $10 ; $10 bytes - db BANK(MonOverworldSprites) - dw $8600 +Func_5ddef: ; 5ddef (17:5def) + call EnableAutoTextBoxDrawing + ld a, $26 + jp Func_3ef5 - dw MonOverworldSprites + $D0 - db $10 / $10 ; $10 bytes - db BANK(MonOverworldSprites) - dw $8620 +VermilionGymTrashText: ; 5ddf7 (17:5df7) + TX_FAR _VermilionGymTrashText + db "@" - dw MonOverworldSprites + $E0 - db $10 / $10 ; $10 bytes - db BANK(MonOverworldSprites) - dw $8640 +GymTrashScript: ; 5ddfc (17:5dfc) + call EnableAutoTextBoxDrawing + ld a, [wWhichTrade] ; $cd3d + ld [$cd5b], a - dw MonOverworldSprites + $F0 - db $10 / $10 ; $10 bytes - db BANK(MonOverworldSprites) - dw $8660 +; Don't do the trash can puzzle if it's already been done. + ld a, [$d773] + bit 0, a + jr z, .ok - dw MonOverworldSprites + $140 - db $40 / $10 ; $40 bytes - db BANK(MonOverworldSprites) - dw $8780 + ld a, $26 ; DisplayTextID $26 = VermilionGymTrashText (nothing in the trash) + jp Func_3ef5 -Func_71868: ; 71868 (1c:5868) - push hl - push de - push bc - ld a, [H_DOWNARROWBLINKCNT2] ; $ff8c - ld hl, W_PARTYMON1 ; $d164 - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - call GetPartyMonSpriteID - ld [$cd5b], a - call Func_718c3 - pop bc - pop de - pop hl - ret +.ok + bit 1, a + jr nz, .trySecondLock -Func_71882: ; 71882 (1c:5882) - xor a - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - ld a, [$cd5d] - call GetPartyMonSpriteID - ld [$cd5b], a - jr Func_718c3 + ld a, [$d743] + ld b, a + ld a, [$cd5b] + cp b + jr z, .openFirstLock -Func_71890: ; 71890 (1c:5890) - ld a, [$cf91] - call GetPartyMonSpriteID - push af - ld hl, $8000 - call Func_718ac - pop af - add $54 - ld hl, $8040 - call Func_718ac - xor a - ld [$cd5d], a - jr Func_71882 + ld a, $26 ; DisplayTextID $26 = VermilionGymTrashText (nothing in the trash) + jr .done -Func_718ac: ; 718ac (1c:58ac) - push hl +.openFirstLock +; Next can is trying for the second switch. + ld hl, $d773 + set 1, [hl] + + ld hl, GymTrashCans ; $5e7d + ld a, [$cd5b] + ; * 5 + ld b, a add a - ld c, a - ld b, $0 - ld hl, MonOverworldSpritePointers - add hl, bc - add hl, bc - add hl, bc - ld a, [hli] + add a + add b + + ld d, 0 ld e, a + add hl, de ld a, [hli] - ld d, a - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - pop hl - jp CopyVideoData -Func_718c3: ; 718c3 (1c:58c3) - push af - ld c, $10 - ld h, $c3 - ld a, [H_DOWNARROWBLINKCNT2] ; $ff8c + ld [$ffdb], a + push hl + call GenRandom swap a - ld l, a - add $10 ld b, a - pop af - cp $8 - jr z, .asm_718da - call Func_712a6 - jr .asm_718dd -.asm_718da - call Func_71281 -.asm_718dd - ld hl, wOAMBuffer - ld de, $cc5b - ld bc, $60 - jp CopyData - -GetPartyMonSpriteID: ; 718e9 (1c:58e9) - ld [$d11e], a - ld a, $3a - call Predef ; indirect jump to IndexToPokedex (41010 (10:5010)) - ld a, [$d11e] - ld c, a + ld a, [$ffdb] + and b dec a - srl a - ld hl, MonOverworldData ; $590d + pop hl + + ld d, 0 ld e, a - ld d, $0 add hl, de ld a, [hl] - bit 0, c - jr nz, .asm_71906 - swap a -.asm_71906 - and $f0 - srl a - srl a - ret - -INCLUDE "data/mon_party_sprites.asm" - -MonOverworldSprites: ; 71959 (1c:5959) - INCBIN "gfx/mon_ow_sprites.2bpp" - -Predef54: ; 71ad9 (1c:5ad9) -; trigger the trade offer/action specified by wWhichTrade - call SaveScreenTilesToBuffer2 - ld hl,TradeMons - ld a,[wWhichTrade] - ld b,a - swap a - sub b - sub b - ld c,a - ld b,$0 - add hl,bc - ld a,[hli] - ld [$cd0f],a - ld a,[hli] - ld [$cd34],a - ld a,[hli] - push af - ld de,$cd29 - ld bc,$000b - call CopyData - pop af - ld l,a - ld h,$0 - ld de,InGameTradeTextPointers ; $5d64 - add hl,hl - add hl,de - ld a,[hli] - ld [$cd10],a - ld a,[hl] - ld [$cd11],a - ld a,[$cd0f] - ld de,$cd13 - call Func_71b6a - ld a,[$cd34] - ld de,$cd1e - call Func_71b6a - ld hl,$d737 - ld a,[wWhichTrade] - ld c,a - ld b,$2 - ld a,$10 - call Predef - ld a,c - and a - ld a,$4 - ld [$cd12],a - jr nz,.asm_99bca ; 0x71b36 $20 - xor a - ld [$cd12],a - call .asm_99bca - ld a,$1 - ld [$cd12],a - call YesNoChoice - ld a,[$cc26] - and a - jr nz,.asm_99bca ; 0x71b4b $b - call Func_71c07 - jr c,.asm_99bca ; 0x71b50 $6 - ld hl, TradedForText - call PrintText -.asm_99bca ; 0x71b58 - ld hl,$cd12 - ld a,[hld] - ld e,a - ld d,$0 - ld a,[hld] - ld l,[hl] - ld h,a - add hl,de - add hl,de - ld a,[hli] - ld h,[hl] - ld l,a - jp PrintText - -Func_71b6a: ; 71b6a (1c:5b6a) - push de - ld [$d11e],a - call GetMonName - ld hl,$cd6d - pop de - ld bc,$b - jp CopyData + and $f + ld [$d744], a -INCLUDE "data/trades.asm" + ld a, $3b ; DisplayTextID $3b = VermilionGymTrashSuccesText1 (first lock opened!) + jr .done -Func_71c07: ; 71c07 (1c:5c07) - xor a - ld [$d07d],a - dec a - ld [$cfcb],a - call DisplayPartyMenu - push af - call Func_71ca2 - pop af - ld a,$1 - jp c,.asm_c4bc2 - ld a,[$cd0f] - ld b,a - ld a,[$cf91] +.trySecondLock + ld a, [$d744] + ld b, a + ld a, [$cd5b] cp b - ld a,$2 - jr nz,.asm_c4bc2 ; 0x71c26 $75 - ld a,[wWhichPokemon] - ld hl,$d18c - ld bc,$002c - call AddNTimes - ld a,[hl] - ld [$d127],a - ld hl,$d737 - ld a,[wWhichTrade] - ld c,a - ld b,$1 - ld a,$10 - call Predef - ld hl, ConnectCableText - call PrintText - ld a,[wWhichPokemon] - push af - ld a,[$d127] - push af - call LoadHpBarAndStatusTilePatterns - call Func_71cc1 - ld a,$38 - call Predef - pop af - ld [$d127],a - pop af - ld [wWhichPokemon],a - ld a,[$cd34] - ld [$cf91],a - xor a - ld [$cc49],a - ld [$cf95],a - call RemovePokemon - ld a,$80 - ld [$cc49],a - call AddPokemonToParty - call Func_71d19 - ld hl, Func_17d7d - ld b, BANK(Func_17d7d) - call Bankswitch - call ClearScreen - call Func_71ca2 - ld b, BANK(Func_eedc) - ld hl, Func_eedc - call Bankswitch - and a - ld a,$3 - jr .asm_ee803 ; 0x71c9b $1 -.asm_c4bc2 ; 0x71c9d - scf -.asm_ee803 ; 0x71c9e - ld [$cd12],a - ret - -Func_71ca2: ; 71ca2 (1c:5ca2) - call GBPalWhiteOutWithDelay3 - call Func_3dbe - call ReloadTilesetTilePatterns - call LoadScreenTilesFromBuffer2 - call Delay3 - call LoadGBPal - ld c, $a - call DelayFrames - ld b, BANK(LoadWildData) - ld hl, LoadWildData - jp Bankswitch + jr z, .openSecondLock -Func_71cc1: ; 71cc1 (1c:5cc1) - ld hl, wWhichTrade ; $cd3d - ld a, [$cd0f] - ld [hli], a - ld a, [$cd34] - ld [hl], a - ld hl, W_PARTYMON1OT ; $d273 - ld bc, $b - ld a, [wWhichPokemon] ; $cf92 - call AddNTimes - ld de, $cd41 - ld bc, $b - call Func_71d11 - ld hl, String_71d59 ; $5d59 - ld de, $cd4e - call Func_71d11 - ld de, W_GRASSRATE ; $d887 - call Func_71d11 - ld hl, W_PARTYMON1_OTID ; $d177 - ld bc, $2c - ld a, [wWhichPokemon] ; $cf92 - call AddNTimes - ld de, $cd4c - ld bc, $2 - call Func_71d11 +; Reset the cans. + ld hl, $d773 + res 1, [hl] call GenRandom - ld hl, H_RAND1 ; $ffd3 - ld de, $cd59 - jp CopyData -Func_71d11: ; 71d11 (1c:5d11) - push hl - push bc - call CopyData - pop bc - pop hl - ret + and $e + ld [$d743], a -Func_71d19: ; 71d19 (1c:5d19) - ld hl, W_PARTYMON1NAME ; $d2b5 - ld bc, $b - call Func_71d4f - ld hl, $cd29 - ld bc, $b - call CopyData - ld hl, W_PARTYMON1OT ; $d273 - ld bc, $b - call Func_71d4f - ld hl, String_71d59 ; $5d59 - ld bc, $b - call CopyData - ld hl, W_PARTYMON1_OTID ; $d177 - ld bc, $2c - call Func_71d4f - ld hl, $cd59 - ld bc, $2 - jp CopyData + ld a, $3e ; DisplayTextID $3e = VermilionGymTrashFailText (locks reset!) + jr .done -Func_71d4f: ; 71d4f (1c:5d4f) - ld a, [W_NUMINPARTY] ; $d163 - dec a - call AddNTimes - ld e, l - ld d, h - ret +.openSecondLock +; Completed the trash can puzzle. + ld hl, $d773 + set 0, [hl] + ld hl, $d126 + set 6, [hl] -String_71d59: ; 71d59 (1c:5d59) - ; "TRAINER@@@@@@@@@@" - db $5d, "@@@@@@@@@@" + ld a, $3d ; DisplayTextID $3d = VermilionGymTrashSuccesText3 (2nd lock opened!) + +.done + jp Func_3ef5 + +GymTrashCans: ; 5de7d (17:5e7d) + db 2, 1, 3, 0, 0 ; 0 + db 3, 0, 2, 4, 0 ; 1 + db 2, 1, 5, 0, 0 ; 2 + db 3, 0, 4, 6, 0 ; 3 + db 4, 1, 3, 5, 7 ; 4 + db 3, 2, 4, 8, 0 ; 5 + db 3, 3, 7, 9, 0 ; 6 + db 4, 4, 6, 8, 10 ; 7 + db 3, 5, 7, 11, 0 ; 8 + db 3, 6, 10, 12, 0 ; 9 + db 4, 7, 9, 11, 13 ; 10 + db 3, 8, 10, 14, 0 ; 11 + db 2, 9, 13, 0, 0 ; 12 + db 3, 10, 12, 14, 0 ; 13 + db 2, 11, 13, 0, 0 ; 14 +; 5dec8 -InGameTradeTextPointers: ; 71d64 (1c:5d64) - dw TradeTextPointers1 - dw TradeTextPointers2 - dw TradeTextPointers3 +VermilionGymTrashSuccesText1: ; 5dec8 (17:5ec8) + TX_FAR _VermilionGymTrashSuccesText1 + db $08 ; asm + call WaitForSoundToFinish + ld a, (SFX_02_49 - SFX_Headers_02) / 3 + call PlaySound + call WaitForSoundToFinish + jp TextScriptEnd -TradeTextPointers1: ; 71d6a (1c:5d6a) - dw WannaTrade1Text - dw NoTrade1Text - dw WrongMon1Text - dw Thanks1Text - dw AfterTrade1Text +VermilionGymTrashSuccesText2: ; 5dedb (17:5edb) + TX_FAR _VermilionGymTrashSuccesText2 + db "@" -TradeTextPointers2: ; 71d74 (1c:5d74) - dw WannaTrade2Text - dw NoTrade2Text - dw WrongMon2Text - dw Thanks2Text - dw AfterTrade2Text +UnnamedText_5dee0: ; 5dee0 (17:5ee0) + db $08 ; asm + call WaitForSoundToFinish + ld a, (SFX_02_49 - SFX_Headers_02) / 3 + call PlaySound + call WaitForSoundToFinish + jp TextScriptEnd -TradeTextPointers3: ; 71d7e (1c:5d7e) - dw WannaTrade3Text - dw NoTrade3Text - dw WrongMon3Text - dw Thanks3Text - dw AfterTrade3Text +VermilionGymTrashSuccesText3: ; 5deef (17:5eef) + TX_FAR _VermilionGymTrashSuccesText3 + db $08 ; asm + call WaitForSoundToFinish + ld a, (SFX_02_57 - SFX_Headers_02) / 3 + call PlaySound + call WaitForSoundToFinish + jp TextScriptEnd -ConnectCableText: ; 71d88 (1c:5d88) - TX_FAR _ConnectCableText - db "@" +VermilionGymTrashFailText: ; 5df02 (17:5f02) + TX_FAR _VermilionGymTrashFailText + db $08 ; asm + call WaitForSoundToFinish + ld a, (SFX_02_51 - SFX_Headers_02) / 3 + call PlaySound + call WaitForSoundToFinish + jp TextScriptEnd -TradedForText: ; 71d8d (1c:5d8d) - TX_FAR _TradedForText - db $11, $a, "@" +SECTION "bank18",ROMX,BANK[$18] -WannaTrade1Text: ; 71d94 (1c:5d94) - TX_FAR _WannaTrade1Text - db "@" +ViridianForestBlocks: ; 60000 (18:4000) + INCBIN "maps/viridianforest.blk" -NoTrade1Text: ; 71d99 (1c:5d99) - TX_FAR _NoTrade1Text - db "@" +UndergroundPathNSBlocks: ; 60198 (18:4198) + INCBIN "maps/undergroundpathns.blk" -WrongMon1Text: ; 71d9e (1c:5d9e) - TX_FAR _WrongMon1Text - db "@" +UndergroundPathWEBlocks: ; 601f4 (18:41f4) + INCBIN "maps/undergroundpathwe.blk" -Thanks1Text: ; 71da3 (1c:5da3) - TX_FAR _Thanks1Text - db "@" + INCBIN "maps/unusedblocks60258.blk" -AfterTrade1Text: ; 71da8 (1c:5da8) - TX_FAR _AfterTrade1Text - db "@" +SSAnne10Blocks: ; 603c0 (18:43c0) +SSAnne9Blocks: ; 603c0 (18:43c0) + INCBIN "maps/ssanne9.blk" -WannaTrade2Text: ; 71dad (1c:5dad) - TX_FAR _WannaTrade2Text - db "@" +INCLUDE "data/mapHeaders/pokemontower1.asm" -NoTrade2Text: ; 71db2 (1c:5db2) - TX_FAR _NoTrade2Text - db "@" +INCLUDE "scripts/pokemontower1.asm" -WrongMon2Text: ; 71db7 (1c:5db7) - TX_FAR _WrongMon2Text - db "@" +INCLUDE "data/mapObjects/pokemontower1.asm" -Thanks2Text: ; 71dbc (1c:5dbc) - TX_FAR _Thanks2Text - db "@" +PokemonTower1Blocks: ; 6048c (18:448c) + INCBIN "maps/pokemontower1.blk" -AfterTrade2Text: ; 71dc1 (1c:5dc1) - TX_FAR _AfterTrade2Text - db "@" +INCLUDE "data/mapHeaders/pokemontower2.asm" -WannaTrade3Text: ; 71dc6 (1c:5dc6) - TX_FAR _WannaTrade3Text - db "@" +INCLUDE "scripts/pokemontower2.asm" -NoTrade3Text: ; 71dcb (1c:5dcb) - TX_FAR _NoTrade3Text - db "@" +INCLUDE "data/mapObjects/pokemontower2.asm" -WrongMon3Text: ; 71dd0 (1c:5dd0) - TX_FAR _WrongMon3Text - db "@" +PokemonTower2Blocks: ; 60666 (18:4666) + INCBIN "maps/pokemontower2.blk" -Thanks3Text: ; 71dd5 (1c:5dd5) - TX_FAR _Thanks3Text - db "@" +INCLUDE "data/mapHeaders/pokemontower3.asm" -AfterTrade3Text: ; 71dda (1c:5dda) - TX_FAR _AfterTrade3Text - db "@" +INCLUDE "scripts/pokemontower3.asm" -Func_71ddf: ; 71ddf (1c:5ddf) - call Load16BitRegisters - ld a, b - cp $ff - jr nz, .asm_71dea - ld a, [$cf1c] -.asm_71dea - cp $fc - jp z, Func_71fc2 - ld l, a - ld h, $0 - add hl, hl - ld de, PointerTable_71f73 - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld de, Func_72156 - push de - jp [hl] +INCLUDE "data/mapObjects/pokemontower3.asm" -SendPalPacket_Black: ; 71dff (1c:5dff) - ld hl, PalPacket_Black - ld de, BlkPacket_Battle - ret +PokemonTower3Blocks: ; 60790 (18:4790) + INCBIN "maps/pokemontower3.blk" -; uses PalPacket_Empty to build a packet based on mon IDs and health color -BuildBattlePalPacket: ; 71e06 (1c:5e06) - ld hl, PalPacket_Empty - ld de, $cf2d - ld bc, $10 - call CopyData - ld a, [W_PLAYERBATTSTATUS3] - ld hl, W_PLAYERMONID - call DeterminePaletteID - ld b, a - ld a, [W_ENEMYBATTSTATUS3] - ld hl, W_ENEMYMONID - call DeterminePaletteID - ld c, a - ld hl, $cf2e - ld a, [$cf1d] - add PAL_GREENBAR - ld [hli], a - inc hl - ld a, [$cf1e] - add PAL_GREENBAR - ld [hli], a - inc hl - ld a, b - ld [hli], a - inc hl - ld a, c - ld [hl], a - ld hl, $cf2d - ld de, BlkPacket_Battle - ld a, $1 - ld [$cf1c], a - ret +INCLUDE "data/mapHeaders/pokemontower4.asm" -SendPalPacket_TownMap: ; 71e48 (1c:5e48) - ld hl, PalPacket_TownMap - ld de, BlkPacket_WholeScreen - ret +INCLUDE "scripts/pokemontower4.asm" -; uses PalPacket_Empty to build a packet based the mon ID -BuildStatusScreenPalPacket: ; 71e4f (1c:5e4f) - ld hl, PalPacket_Empty - ld de, $cf2d - ld bc, $10 - call CopyData - ld a, [$cf91] - cp VICTREEBEL + 1 - jr c, .pokemon - ld a, $1 ; not pokemon -.pokemon - call DeterminePaletteIDOutOfBattle - push af - ld hl, $cf2e - ld a, [$cf25] - add $1f - ld [hli], a - inc hl - pop af - ld [hl], a - ld hl, $cf2d - ld de, BlkPacket_StatusScreen - ret +INCLUDE "data/mapObjects/pokemontower4.asm" -SendPalPacket_PartyMenu: ; 71e7b (1c:5e7b) - ld hl, PalPacket_PartyMenu - ld de, $cf2e - ret +PokemonTower4Blocks: ; 608cc (18:48cc) + INCBIN "maps/pokemontower4.blk" -SendPalPacket_Pokedex: ; 71e82 (1c:5e82) - ld hl, PalPacket_Pokedex - ld de, $cf2d - ld bc, $10 - call CopyData - ld a, [$cf91] - call DeterminePaletteIDOutOfBattle - ld hl, $cf30 - ld [hl], a - ld hl, $cf2d - ld de, BlkPacket_Pokedex - ret +INCLUDE "data/mapHeaders/pokemontower5.asm" -SendPalPacket_Slots: ; 71e9f (1c:5e9f) - ld hl, PalPacket_Slots - ld de, BlkPacket_Slots - ret +INCLUDE "scripts/pokemontower5.asm" -SendPalPacket_Titlescreen: ; 71ea6 (1c:5ea6) - ld hl, PalPacket_Titlescreen - ld de, BlkPacket_Titlescreen - ret +INCLUDE "data/mapObjects/pokemontower5.asm" -; used mostly for menus and the Oak intro -SendPalPacket_Generic: ; 71ead (1c:5ead) - ld hl, PalPacket_Generic - ld de, BlkPacket_WholeScreen - ret +PokemonTower5Blocks: ; 60a89 (18:4a89) + INCBIN "maps/pokemontower5.blk" -SendPalPacket_NidorinoIntro: ; 71eb4 (1c:5eb4) - ld hl, PalPacket_NidorinoIntro - ld de, BlkPacket_NidorinoIntro - ret +INCLUDE "data/mapHeaders/pokemontower6.asm" -SendPalPacket_GameFreakIntro: ; 71ebb (1c:5ebb) - ld hl, PalPacket_GameFreakIntro - ld de, BlkPacket_GameFreakIntro - ld a, $8 - ld [$cf1c], a - ret +INCLUDE "scripts/pokemontower6.asm" -; uses PalPacket_Empty to build a packet based on the current map -BuildOverworldPalPacket: ; 71ec7 (1c:5ec7) - ld hl, PalPacket_Empty - ld de, $cf2d - ld bc, $10 - call CopyData - ld a, [W_CURMAPTILESET] - cp CEMETERY - jr z, .PokemonTowerOrAgatha - cp CAVERN - jr z, .caveOrBruno - ld a, [W_CURMAP] - cp REDS_HOUSE_1F - jr c, .townOrRoute - cp UNKNOWN_DUNGEON_2 - jr c, .normalDungeonOrBuilding - cp NAME_RATERS_HOUSE - jr c, .caveOrBruno - cp LORELEIS_ROOM - jr z, .Lorelei - cp BRUNOS_ROOM - jr z, .caveOrBruno -.normalDungeonOrBuilding - ld a, [$d365] ; town or route that current dungeon or building is located -.townOrRoute - cp SAFFRON_CITY + 1 - jr c, .town - ld a, PAL_ROUTE - 1 -.town - inc a ; a town's pallete ID is its map ID + 1 - ld hl, $cf2e - ld [hld], a - ld de, BlkPacket_WholeScreen - ld a, $9 - ld [$cf1c], a - ret -.PokemonTowerOrAgatha - ld a, PAL_GREYMON - 1 - jr .town -.caveOrBruno - ld a, PAL_CAVE - 1 - jr .town -.Lorelei - xor a - jr .town +INCLUDE "data/mapObjects/pokemontower6.asm" -; used when a Pokemon is the only thing on the screen -; such as evolution, trading and the Hall of Fame -SendPokemonPalette_WholeScreen: ; 71f17 (1c:5f17) - push bc - ld hl, PalPacket_Empty - ld de, $cf2d - ld bc, $10 - call CopyData - pop bc - ld a, c - and a - ld a, $1e - jr nz, .asm_71f31 - ld a, [$cf1d] - call DeterminePaletteIDOutOfBattle -.asm_71f31 - ld [$cf2e], a - ld hl, $cf2d - ld de, BlkPacket_WholeScreen - ret +PokemonTower6Blocks: ; 60c95 (18:4c95) + INCBIN "maps/pokemontower6.blk" -BuildTrainerCardPalPacket: ; 71f3b (1c:5f3b) - ld hl, BlkPacket_TrainerCard - ld de, $cc5b - ld bc, $40 - call CopyData - ld de, LoopCounts_71f8f - ld hl, $cc5d - ld a, [W_OBTAINEDBADGES] - ld c, $8 -.asm_71f52 - srl a - push af - jr c, .asm_71f62 - push bc - ld a, [de] - ld c, a - xor a -.asm_71f5b - ld [hli], a - dec c - jr nz, .asm_71f5b - pop bc - jr .asm_71f67 -.asm_71f62 - ld a, [de] -.asm_71f63 - inc hl - dec a - jr nz, .asm_71f63 -.asm_71f67 - pop af - inc de - dec c - jr nz, .asm_71f52 - ld hl, PalPacket_TrainerCard - ld de, $cc5b - ret + INCBIN "maps/unusedblocks60cef.blk" -PointerTable_71f73: ; 71f73 (1c:5f73) - dw SendPalPacket_Black - dw BuildBattlePalPacket - dw SendPalPacket_TownMap - dw BuildStatusScreenPalPacket - dw SendPalPacket_Pokedex - dw SendPalPacket_Slots - dw SendPalPacket_Titlescreen - dw SendPalPacket_NidorinoIntro - dw SendPalPacket_Generic - dw BuildOverworldPalPacket - dw SendPalPacket_PartyMenu - dw SendPokemonPalette_WholeScreen - dw SendPalPacket_GameFreakIntro - dw BuildTrainerCardPalPacket +INCLUDE "data/mapHeaders/pokemontower7.asm" -; each byte is the number of loops to make in .asm_71f5b for each badge -LoopCounts_71f8f: ; 71f8f (1c:5f8f) - db $06,$06,$06,$12,$06,$06,$06,$06 +INCLUDE "scripts/pokemontower7.asm" -DeterminePaletteID: ; 71f97 (1c:5f97) - bit 3, a ; bit 3 of battle status 3, set if current Pokemon is transformed - ld a, PAL_GREYMON ; if yes, use Ditto's palette - ret nz - ld a, [hl] -DeterminePaletteIDOutOfBattle: ; 71f9d (1c:5f9d) - ld [$D11E], a - and a - jr z, .idZero - push bc - ld a, $3A - call Predef ; turn Pokemon ID number into Pokedex number - pop bc - ld a, [$D11E] -.idZero - ld e, a - ld d, $00 - ld hl, MonsterPalettes ; not just for Pokemon, Trainers use it too - add hl, de - ld a, [hl] - ret +INCLUDE "data/mapObjects/pokemontower7.asm" -SendBlkPacket_PartyMenu: ; 71fb6 (1c:5fb6) - ld hl, BlkPacket_PartyMenu ; $62f4 - ld de, $cf2e - ld bc, $30 - jp CopyData +PokemonTower7Blocks: ; 60f20 (18:4f20) + INCBIN "maps/pokemontower7.blk" -Func_71fc2: ; 71fc2 (1c:5fc2) - ld hl, $cf1f - ld a, [$cf2d] - ld e, a - ld d, $0 - add hl, de - ld e, l - ld d, h - ld a, [de] - and a - ld e, $5 - jr z, .asm_71fdb - dec a - ld e, $a - jr z, .asm_71fdb - ld e, $f -.asm_71fdb - push de - ld hl, $cf37 - ld bc, $6 - ld a, [$cf2d] - call AddNTimes - pop de - ld [hl], e - ret +INCLUDE "data/mapHeaders/celadonmart1.asm" -SendSGBPacket: ; 71feb (1c:5feb) -;check number of packets - ld a,[hl] - and a,$07 - ret z -; store number of packets in B - ld b,a -.loop2 -; save B for later use - push bc -; load a non-zero value in $fff9 to disable the routine that checks actual -; joypad input (said routine, located at $15f, does nothing if $fff9 is not -; zero) - ld a,$01 - ld [$fff9],a -; send RESET signal (P14=LOW, P15=LOW) - xor a - ld [$ff00],a -; set P14=HIGH, P15=HIGH - ld a,$30 - ld [$ff00],a -;load length of packets (16 bytes) - ld b,$10 -.nextByte -;set bit counter (8 bits per byte) - ld e,$08 -; get next byte in the packet - ld a,[hli] - ld d,a -.nextBit0 - bit 0,d -; if 0th bit is not zero set P14=HIGH,P15=LOW (send bit 1) - ld a,$10 - jr nz,.next0 -; else (if 0th bit is zero) set P14=LOW,P15=HIGH (send bit 0) - ld a,$20 -.next0 - ld [$ff00],a -; must set P14=HIGH,P15=HIGH between each "pulse" - ld a,$30 - ld [$ff00],a -; rotation will put next bit in 0th position (so we can always use command -; "bit 0,d" to fetch the bit that has to be sent) - rr d -; decrease bit counter so we know when we have sent all 8 bits of current byte - dec e - jr nz,.nextBit0 - dec b - jr nz,.nextByte -; send bit 1 as a "stop bit" (end of parameter data) - ld a,$20 - ld [$ff00],a -; set P14=HIGH,P15=HIGH - ld a,$30 - ld [$ff00],a - xor a - ld [$fff9],a -; wait for about 70000 cycles - call Wait7000 -; restore (previously pushed) number of packets - pop bc - dec b -; return if there are no more packets - ret z -; else send 16 more bytes - jr .loop2 +INCLUDE "scripts/celadonmart1.asm" -LoadSGBBorderAndPalettes: ; 7202b (1c:602b) +INCLUDE "data/mapObjects/celadonmart1.asm" + +CeladonMart1Blocks: ; 60fde (18:4fde) + INCBIN "maps/celadonmart1.blk" + +GiveFossilToCinnabarLab: ; 61006 (18:5006) + ld hl, $d730 + set 6, [hl] xor a - ld [$cf1b], a - call Func_7209b - ret nc + ld [wCurrentMenuItem], a ; $cc26 + ld a, $3 + ld [wMenuWatchedKeys], a ; $cc29 + ld a, [$cd37] + dec a + ld [wMaxMenuItem], a ; $cc28 + ld a, $2 + ld [wTopMenuItemY], a ; $cc24 ld a, $1 - ld [$cf1b], a - ld a, [$cf1a] + ld [wTopMenuItemX], a ; $cc25 + ld a, [$cd37] + dec a + ld bc, $2 + ld hl, $3 + call AddNTimes + dec l + ld b, l + ld c, $d + ld hl, wTileMap + call TextBoxBorder + call UpdateSprites + call Func_610c2 + ld hl, $d730 + res 6, [hl] + call HandleMenuInput + bit 1, a + jr nz, .asm_610a7 + ld hl, $cc5b + ld a, [wCurrentMenuItem] ; $cc26 + ld d, $0 + ld e, a + add hl, de + ld a, [hl] + ld [$ffdb], a + cp DOME_FOSSIL + jr z, .choseDomeFossil + cp HELIX_FOSSIL + jr z, .choseHelixFossil + ld b, AERODACTYL + jr .fossilSelected +.choseHelixFossil + ld b, OMANYTE + jr .fossilSelected +.choseDomeFossil + ld b, KABUTO +.fossilSelected + ld [W_FOSSILITEM], a + ld a, b + ld [W_FOSSILMON], a + call LoadFossilItemAndMonName + ld hl, LabFossil_610ae + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] ; $cc26 and a - jr z, .asm_7203f + jr nz, .asm_610a7 + ld hl, LabFossil_610b3 + call PrintText + ld a, [W_FOSSILITEM] + ld [$ffdb], a + ld b, BANK(RemoveItemByID) + ld hl, RemoveItemByID + call Bankswitch + ld hl, LabFossil_610b8 + call PrintText + ld hl, $d7a3 + set 0, [hl] + set 1, [hl] + ret +.asm_610a7 + ld hl, LabFossil_610bd + call PrintText ret -.asm_7203f - di - call Func_72075 - ei - ld a, $1 - ld [$cf2d], a - ld de, PalPacket_72508 - ld hl, SGBBorderGraphics - call Func_7210b - xor a - ld [$cf2d], a - ld de, PalPacket_72518 - ld hl, BorderPalettes - call Func_7210b - xor a - ld [$cf2d], a - ld de, PalPacket_724d8 - ld hl, SuperPalettes - call Func_7210b - call ZeroVram - ld hl, PalPacket_72538 - jp SendSGBPacket -Func_72075: ; 72075 (1c:6075) - ld hl, PointerTable_72089 - ld c, $9 -.asm_7207a - push bc +LabFossil_610ae: ; 610ae (18:50ae) + TX_FAR _Lab4Text_610ae + db "@" + +LabFossil_610b3: ; 610b3 (18:50b3) + TX_FAR _Lab4Text_610b3 + db "@" + +LabFossil_610b8: ; 610b8 (18:50b8) + TX_FAR _Lab4Text_610b8 + db "@" + +LabFossil_610bd: ; 610bd (18:50bd) + TX_FAR _Lab4Text_610bd + db "@" + +Func_610c2: ; 610c2 (18:50c2) + ld hl, $cc5b + xor a + ld [$ffdb], a +.asm_610c8 ld a, [hli] + cp $ff + ret z push hl - ld h, [hl] - ld l, a - call SendSGBPacket + ld [$d11e], a + call GetItemName + FuncCoord 2, 2 ; $c3ca + ld hl, Coord + ld a, [$ffdb] + ld bc, $28 + call AddNTimes + ld de, $cd6d + call PlaceString + ld hl, $ffdb + inc [hl] pop hl - inc hl - pop bc - dec c - jr nz, .asm_7207a + jr .asm_610c8 + +; loads the names of the fossil item and the resulting mon +LoadFossilItemAndMonName: ; 610eb (18:50eb) + ld a, [W_FOSSILMON] + ld [$d11e], a + call GetMonName + call CopyStringToCF4B + ld a, [W_FOSSILITEM] + ld [$d11e], a + call GetItemName ret -PointerTable_72089: ; 72089 (1c:6089) - dw PalPacket_72528 - dw PalPacket_72548 - dw PalPacket_72558 - dw PalPacket_72568 - dw PalPacket_72578 - dw PalPacket_72588 - dw PalPacket_72598 - dw PalPacket_725a8 - dw PalPacket_725b8 +INCLUDE "data/mapHeaders/viridianforest.asm" -Func_7209b: ; 7209b (1c:609b) - ld hl, PalPacket_724f8 - di - call SendSGBPacket - ld a, $1 - ld [$fff9], a - ei - call Wait7000 - ld a, [rJOYP] ; $ff0 - and $3 - cp $3 - jr nz, .asm_720fd - ld a, $20 - ld [rJOYP], a ; $ff0 - ld a, [rJOYP] ; $ff0 - ld a, [rJOYP] ; $ff0 - call Wait7000 - call Wait7000 - ld a, $30 - ld [rJOYP], a ; $ff0 - call Wait7000 - call Wait7000 - ld a, $10 - ld [rJOYP], a ; $ff0 - ld a, [rJOYP] ; $ff0 - ld a, [rJOYP] ; $ff0 - ld a, [rJOYP] ; $ff0 - ld a, [rJOYP] ; $ff0 - ld a, [rJOYP] ; $ff0 - ld a, [rJOYP] ; $ff0 - call Wait7000 - call Wait7000 - ld a, $30 - ld [rJOYP], a ; $ff0 - ld a, [rJOYP] ; $ff0 - ld a, [rJOYP] ; $ff0 - ld a, [rJOYP] ; $ff0 - call Wait7000 - call Wait7000 - ld a, [rJOYP] ; $ff0 - and $3 - cp $3 - jr nz, .asm_720fd - call Func_72102 - and a - ret -.asm_720fd - call Func_72102 - scf - ret +INCLUDE "scripts/viridianforest.asm" -Func_72102: ; 72102 (1c:6102) - ld hl, PalPacket_724e8 - call SendSGBPacket - jp Wait7000 +INCLUDE "data/mapObjects/viridianforest.asm" -Func_7210b: ; 7210b (1c:610b) - di - push de - call DisableLCD - ld a, $e4 - ld [rBGP], a ; $ff47 - ld de, $8800 - ld a, [$cf2d] - and a - jr z, .asm_72122 - call Func_72188 - jr .asm_72128 -.asm_72122 - ld bc, $1000 - call CopyData -.asm_72128 - ld hl, $9800 - ld de, $c - ld a, $80 - ld c, $d -.asm_72132 - ld b, $14 -.asm_72134 - ld [hli], a - inc a - dec b - jr nz, .asm_72134 - add hl, de - dec c - jr nz, .asm_72132 - ld a, $e3 - ld [rLCDC], a ; $ff40 - pop hl - call SendSGBPacket - xor a - ld [rBGP], a ; $ff47 - ei - ret +INCLUDE "data/mapHeaders/ssanne1.asm" -Wait7000: ; 7214a (1c:614a) -; each loop takes about 10 cycles so this routine actually loops through 70000 -; cycles. - ld de, 7000 -.loop - nop - nop - nop - dec de - ld a, d - or e - jr nz, .loop - ret +INCLUDE "scripts/ssanne1.asm" -Func_72156: ; 72156 (1c:6156) - ld a, [$cf1a] - and a - jr z, .asm_72165 - push de - call Func_7216d - pop hl - call Func_72187 - ret -.asm_72165 - push de - call SendSGBPacket - pop hl - jp SendSGBPacket +INCLUDE "data/mapObjects/ssanne1.asm" -Func_7216d: ; 7216d (1c:616d) - ld a, $80 - ld [$ff68], a - inc hl - ld c, $20 -.asm_72174 +SSAnne1Blocks: ; 612df (18:52df) + INCBIN "maps/ssanne1.blk" + +INCLUDE "data/mapHeaders/ssanne2.asm" + +INCLUDE "scripts/ssanne2.asm" + +INCLUDE "data/mapObjects/ssanne2.asm" + +SSAnne2Blocks: ; 6156e (18:556e) + INCBIN "maps/ssanne2.blk" + +INCLUDE "data/mapHeaders/ssanne4.asm" + +INCLUDE "scripts/ssanne4.asm" + +INCLUDE "data/mapObjects/ssanne4.asm" + +SSAnne4Blocks: ; 61666 (18:5666) + INCBIN "maps/ssanne4.blk" + +INCLUDE "data/mapHeaders/ssanne5.asm" + +INCLUDE "scripts/ssanne5.asm" + +INCLUDE "data/mapObjects/ssanne5.asm" + +SSAnne5Blocks: ; 61761 (18:5761) + INCBIN "maps/ssanne5.blk" + +INCLUDE "data/mapHeaders/ssanne6.asm" + +INCLUDE "scripts/ssanne6.asm" + +INCLUDE "data/mapObjects/ssanne6.asm" + +SSAnne6Blocks: ; 61851 (18:5851) + INCBIN "maps/ssanne6.blk" + +INCLUDE "data/mapHeaders/ssanne7.asm" + +INCLUDE "scripts/ssanne7.asm" + +INCLUDE "data/mapObjects/ssanne7.asm" + +SSAnne7Blocks: ; 6195e (18:595e) + INCBIN "maps/ssanne7.blk" + +INCLUDE "data/mapHeaders/ssanne8.asm" + +INCLUDE "scripts/ssanne8.asm" + +INCLUDE "data/mapObjects/ssanne8.asm" + +SSAnne8Blocks: ; 61adf (18:5adf) + INCBIN "maps/ssanne8.blk" + +INCLUDE "data/mapHeaders/ssanne9.asm" + +INCLUDE "scripts/ssanne9.asm" + +INCLUDE "data/mapObjects/ssanne9.asm" + +INCLUDE "data/mapHeaders/ssanne10.asm" + +INCLUDE "scripts/ssanne10.asm" + +INCLUDE "data/mapObjects/ssanne10.asm" + +INCLUDE "data/mapHeaders/undergroundpathns.asm" + +INCLUDE "scripts/undergroundpathns.asm" + +INCLUDE "data/mapObjects/undergroundpathns.asm" + +INCLUDE "data/mapHeaders/undergroundpathwe.asm" + +INCLUDE "scripts/undergroundpathwe.asm" + +INCLUDE "data/mapObjects/undergroundpathwe.asm" + +INCLUDE "data/mapHeaders/diglettscave.asm" + +INCLUDE "scripts/diglettscave.asm" + +INCLUDE "data/mapObjects/diglettscave.asm" + +DiglettsCaveBlocks: ; 61f86 (18:5f86) + INCBIN "maps/diglettscave.blk" + +INCLUDE "data/mapHeaders/silphco11.asm" + +INCLUDE "scripts/silphco11.asm" + +INCLUDE "data/mapObjects/silphco11.asm" + +SilphCo11Blocks: ; 623c8 (18:63c8) + INCBIN "maps/silphco11.blk" + +GymStatues: ; 62419 (18:6419) +; if in a gym and have the corresponding badge, a = $D and jp Func_3ef5 +; if in a gym and don’t have the corresponding badge, a = $C and jp Func_3ef5 +; else ret + call EnableAutoTextBoxDrawing + ld a, [$c109] + cp $4 + ret nz + ld hl, .BadgeFlags + ld a, [W_CURMAP] + ld b, a +.asm_62429 ld a, [hli] + cp $ff + ret z + cp b + jr z, .asm_62433 ; 0x6242e $3 inc hl - add a - add a - add a - ld de, SuperPalettes - add e - jr nc, .asm_72180 - inc d -.asm_72180 - ld a, [de] - ld [$ff69], a - dec c - jr nz, .asm_72174 - ret + jr .asm_62429 ; 0x62431 $f6 +.asm_62433 + ld b, [hl] + ld a, [$d72a] + and b + cp b + ld a, $d + jr z, .asm_6243f ; 0x6243b $2 + ld a, $c +.asm_6243f + jp Func_3ef5 -Func_72187: ; 72187 (1c:6187) - ret +.BadgeFlags: ; 62442 (18:6442) + db PEWTER_GYM, %00000001 + db CERULEAN_GYM, %00000010 + db VERMILION_GYM,%00000100 + db CELADON_GYM, %00001000 + db FUCHSIA_GYM, %00010000 + db SAFFRON_GYM, %00100000 + db CINNABAR_GYM, %01000000 + db VIRIDIAN_GYM, %10000000 + db $ff -Func_72188: ; 72188 (1c:6188) - ld b, $80 -.asm_7218a - ld c, $10 -.asm_7218c +GymStatueText1: ; 62453 (18:6453) + TX_FAR _GymStatueText1 + db "@" + +GymStatueText2: ; 62458 (18:6458) + TX_FAR _GymStatueText2 + db "@" + +Func_6245d: ; 6245d (18:645d) + call EnableAutoTextBoxDrawing + ld hl, PokeCenterMapIDList + ld a, [W_CURMAP] + ld b, a +.asm_62467 ld a, [hli] - ld [de], a - inc de - dec c - jr nz, .asm_7218c - ld c, $10 - xor a -.asm_72195 - ld [de], a - inc de - dec c - jr nz, .asm_72195 - dec b - jr nz, .asm_7218a - ret + cp $ff + ret z + cp b + jr z, .asm_62472 + inc hl + inc hl + jr .asm_62467 +.asm_62472 + ld a, [hli] + ld b, a + ld a, [$c109] + cp b + jr nz, .asm_62467 + ld a, [hl] + jp Func_3ef5 -BlkPacket_WholeScreen: ; 7219e (1c:619e) - db $21,$01,$03,$00,$00,$00,$13,$11,$00,$00,$00,$00,$00,$00,$00,$00 - db $03,$00,$00,$13,$11,$00,$00 +; format: db map id, 08, text id of PointerTable_3f22 +PokeCenterMapIDList: ; 6247e (18:647e) + db VIRIDIAN_POKECENTER,$08,$0F + db PEWTER_POKECENTER,$08,$10 + db CERULEAN_POKECENTER,$08,$11 + db LAVENDER_POKECENTER,$08,$12 + db VERMILION_POKECENTER,$08,$13 + db CELADON_POKECENTER,$08,$14 + db CELADON_HOTEL,$08,$15 + db FUCHSIA_POKECENTER,$08,$16 + db CINNABAR_POKECENTER,$08,$17 + db SAFFRON_POKECENTER,$08,$18 + db MT_MOON_POKECENTER,$08,$19 + db ROCK_TUNNEL_POKECENTER,$08,$1A + db $FF -BlkPacket_Battle: ; 721b5 (1c:61b5) - db $22,$05,$07,$0a,$00,$0c,$13,$11,$03,$05,$01,$00,$0a,$03,$03,$00 - db $0a,$07,$13,$0a,$03,$0a,$00,$04,$08,$0b,$03,$0f,$0b,$00,$13,$06 - db $03,$00,$00,$13,$0b,$00,$03,$00,$0c,$13,$11,$02,$03,$01,$00,$0a - db $03,$01,$03,$0a,$08,$13,$0a,$00,$03,$00,$04,$08,$0b,$02,$03,$0b - db $00,$13,$07,$03,$00 +ViridianCityPokecenterBenchGuyText: ; 624a3 (18:64a3) + TX_FAR _ViridianCityPokecenterGuyText + db "@" -BlkPacket_StatusScreen: ; 721fa (1c:61fa) - db $21,$01,$07,$05,$01,$00,$07,$06,$00,$00,$00,$00,$00,$00,$00,$00 - db $02,$00,$00,$11,$00,$03,$01,$00,$07,$06,$01,$03,$01,$07,$13,$11 - db $00,$03,$08,$00,$13,$06,$00,$00 +PewterCityPokecenterBenchGuyText: ; 624a8 (18:64a8) + TX_FAR _PewterCityPokecenterGuyText + db "@" -BlkPacket_Pokedex: ; 72222 (1c:6222) - db $21,$01,$07,$05,$01,$01,$08,$08,$00,$00,$00,$00,$00,$00,$00,$00 - db $02,$00,$00,$11,$00,$01,$00,$01,$13,$00,$03,$01,$01,$08,$08,$01 - db $03,$01,$09,$08,$11,$00,$03,$09,$01,$13,$11,$00,$00 +CeruleanCityPokecenterBenchGuyText: ; 624ad (18:64ad) + TX_FAR _CeruleanPokecenterGuyText + db "@" -BlkPacket_Slots: ; 7224f (1c:624f) - db $22,$05,$03,$05,$00,$00,$13,$0b,$03,$0a,$00,$04,$13,$09,$02,$0f - db $00,$06,$13,$07,$03,$00,$04,$04,$0f,$09,$03,$00,$00,$0c,$13,$11 - db $03,$00,$00,$13,$0b,$01,$03,$00,$04,$13,$09,$02,$03,$00,$06,$13 - db $07,$03,$03,$04,$04,$0f,$09,$00,$03,$00,$0c,$13,$11,$00,$00 +LavenderCityPokecenterBenchGuyText: ; 624b2 (18:64b2) + TX_FAR _LavenderPokecenterGuyText + db "@" -BlkPacket_Titlescreen: ; 7228e (1c:628e) - db $22,$03,$03,$00,$00,$00,$13,$07,$02,$05,$00,$08,$13,$09,$03,$0a - db $00,$0a,$13,$11,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $03,$00,$00,$13,$07,$00,$03,$00,$08,$13,$09,$01,$03,$00,$0a,$13 - db $11,$02,$00 +MtMoonPokecenterBenchGuyText: ; 624b7 (18:64b7) + TX_FAR _MtMoonPokecenterBenchGuyText + db "@" -BlkPacket_NidorinoIntro: ; 722c1 (1c:62c1) - db $22,$03,$03,$05,$00,$00,$13,$03,$03,$00,$00,$04,$13,$0d,$03,$05 - db $00,$0e,$13,$11,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $03,$00,$00,$13,$03,$01,$03,$00,$04,$13,$0d,$00,$03,$00,$0e,$13 - db $11,$01,$00 +RockTunnelPokecenterBenchGuyText: ; 624bc (18:64bc) + TX_FAR _RockTunnelPokecenterGuyText + db "@" -BlkPacket_PartyMenu: ; 722f4 (1c:62f4) - db $23,$07,$06,$10,$01,$00,$02,$0c,$02,$00,$05,$01,$0b,$01,$02,$00 - db $05,$03,$0b,$03,$02,$00,$05,$05,$0b,$05,$02,$00,$05,$07,$0b,$07 - db $02,$00,$05,$09,$0b,$09,$02,$00,$05,$0b,$0b,$0b,$00,$00,$00,$00 - db $02,$00,$00,$11,$01,$03,$01,$00,$02,$0c,$00,$03,$01,$0d,$02,$11 - db $01,$03,$03,$00,$13,$11,$01,$03,$0c,$00,$12,$01,$00,$03,$0c,$02 - db $12,$03,$00,$03,$0c,$04,$12,$05,$00,$03,$0c,$06,$12,$07,$00,$03 - db $0c,$08,$12,$09,$00,$03,$0c,$0a,$12,$0b,$00,$00 +UnnamedText_624c1: ; 624c1 (18:64c1) + TX_FAR _UnnamedText_624c1 + db "@" -BlkPacket_TrainerCard: ; 72360 (1c:6360) - db $24,$0a,$02,$00,$03,$0c,$04,$0d,$02,$05,$07,$0c,$08,$0d,$02,$0f - db $0b,$0c,$0c,$0d,$02,$0a,$10,$0b,$11,$0c,$02,$05,$0e,$0d,$0f,$0e - db $02,$0f,$10,$0d,$11,$0e,$02,$0a,$03,$0f,$04,$10,$02,$0f,$07,$0f - db $08,$10,$02,$0a,$0b,$0f,$0c,$10,$02,$05,$0f,$0f,$10,$10,$00,$00 - db $03,$03,$0c,$04,$0d,$00,$03,$07,$0c,$08,$0d,$01,$03,$0b,$0c,$0c - db $0d,$03,$03,$10,$0b,$11,$0c,$02,$03,$0e,$0d,$0f,$0e,$01,$03,$10 - db $0d,$11,$0e,$03,$03,$03,$0f,$04,$10,$02,$03,$07,$0f,$08,$10,$03 - db $03,$0b,$0f,$0c,$10,$02,$03,$0f,$0f,$10,$10,$01,$00 +UnnamedText_624c6: ; 624c6 (18:64c6) + TX_FAR _UnnamedText_624c6 + db "@" -BlkPacket_GameFreakIntro: ; 723dd (1c:63dd) - db $22,$03,$07,$05,$05,$0b,$07,$0d,$02,$0a,$08,$0b,$09,$0d,$03,$0f - db $0c,$0b,$0e,$0d,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $03,$00,$00,$13,$0a,$00,$03,$00,$0b,$04,$0d,$00,$03,$05,$0b,$07 - db $0d,$01,$03,$08,$0b,$13,$0d,$00,$03,$00,$0e,$13,$11,$00,$03,$08 - db $0b,$09,$0d,$02,$03,$0c,$0b,$0e,$0d,$03,$00 +UnnamedText_624cb: ; 624cb (18:64cb) + TX_FAR _UnnamedText_624cb + db "@" -PalPacket_Empty: ; 72428 (1c:6428) - db $51,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 +VermilionCityPokecenterBenchGuyText: ; 624d0 (18:64d0) + TX_FAR _VermilionPokecenterGuyText + db "@" -PalPacket_PartyMenu: ; 72438 (1c:6438) - db $51,PAL_MEWMON,$00,PAL_GREENBAR,$00,PAL_YELLOWBAR,$00,PAL_REDBAR,$00,$00,$00,$00,$00,$00,$00,$00 +CeladonCityPokecenterBenchGuyText: ; 624d5 (18:64d5) + TX_FAR _CeladonCityPokecenterGuyText + db "@" -PalPacket_Black: ; 72448 (1c:6448) - db $51,PAL_BLACK,$00,PAL_BLACK,$00,PAL_BLACK,$00,PAL_BLACK,$00,$00,$00,$00,$00,$00,$00,$00 +FuchsiaCityPokecenterBenchGuyText: ; 624da (18:64da) + TX_FAR _FuchsiaCityPokecenterGuyText + db "@" -PalPacket_TownMap: ; 72458 (1c:6458) - db $51,PAL_TOWNMAP,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 +CinnabarIslandPokecenterBenchGuyText: ; 624df (18:64df) + TX_FAR _CinnabarPokecenterGuyText + db "@" -PalPacket_Pokedex: ; 72468 (1c:6468) - db $51,PAL_BROWNMON,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 +SaffronCityPokecenterBenchGuyText: ; 624e4 (18:64e4) + db $8 ; asm + ld a, [$d838] + bit 7, a + ld hl, SaffronCityPokecenterBenchGuyText2 + jr nz, .asm_624f2 ; 0x624ed $3 + ld hl, SaffronCityPokecenterBenchGuyText1 +.asm_624f2 + call PrintText + jp TextScriptEnd -PalPacket_Slots: ; 72478 (1c:6478) - db $51,PAL_SLOTS1,$00,PAL_SLOTS2,$00,PAL_SLOTS3,$00,PAL_SLOTS4,$00,$00,$00,$00,$00,$00,$00,$00 +SaffronCityPokecenterBenchGuyText1: ; 624f8 (18:64f8) + TX_FAR _SaffronCityPokecenterGuyText1 + db "@" -PalPacket_Titlescreen: ; 72488 (1c:6488) - db $51,PAL_LOGO2,$00,PAL_LOGO1,$00,PAL_MEWMON,$00,PAL_PURPLEMON,$00,$00,$00,$00,$00,$00,$00,$00 +SaffronCityPokecenterBenchGuyText2: ; 624fd (18:64fd) + TX_FAR _SaffronCityPokecenterGuyText2 + db "@" -PalPacket_TrainerCard: ; 72498 (1c:6498) - db $51,PAL_MEWMON,$00,PAL_BADGE,$00,PAL_REDMON,$00,PAL_YELLOWMON,$00,$00,$00,$00,$00,$00,$00,$00 +CeladonCityHotelText: ; 62502 (18:6502) + TX_FAR _CeladonCityHotelText + db "@" -PalPacket_Generic: ; 724a8 (1c:64a8) - db $51,PAL_MEWMON,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + ret -PalPacket_NidorinoIntro: ; 724b8 (1c:64b8) - db $51,PAL_PURPLEMON,$00,PAL_BLACK,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 +TerminatorText_62508: ; 62508 (18:6508) + db "@" -PalPacket_GameFreakIntro: ; 724c8 (1c:64c8) - db $51,PAL_GAMEFREAK,$00,PAL_REDMON,$00,PAL_VIRIDIAN,$00,PAL_BLUEMON,$00,$00,$00,$00,$00,$00,$00,$00 +Func_62509: ; 6509 (18:6509) + call EnableAutoTextBoxDrawing + ld a, $e + jp Func_3ef5 -PalPacket_724d8: ; 724d8 (1c:64d8) - db $59,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 +BookcaseText: ; 62511 (18:6511) + TX_FAR _BookcaseText + db "@" -PalPacket_724e8: ; 724e8 (1c:64e8) - db $89,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 +Func_62516: ; 62516 (18:6516) + ld a, [$c109] + cp $4 ; check to see if player is facing up + ret nz + call EnableAutoTextBoxDrawing + ld a, $1 + ld [$cf0c], a + ld a, $1f + jp Func_3ef5 -PalPacket_724f8: ; 724f8 (1c:64f8) - db $89,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 +Unknown_62529: ; 62529 (18:6529) + db $F9 -PalPacket_72508: ; 72508 (1c:6508) - db $99,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 +SECTION "bank19",ROMX,BANK[$19] -PalPacket_72518: ; 72518 (1c:6518) - db $A1,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 +Overworld_GFX: ; 64000 (19:4000) + INCBIN "gfx/tilesets/overworld.w128.t2.2bpp" +Overworld_Block: ; 645e0 (19:45e0) + INCBIN "gfx/blocksets/overworld.bst" +RedsHouse1_GFX: +RedsHouse2_GFX: ; 64de0 (19:4de0) + INCBIN "gfx/tilesets/reds_house.w128.t7.2bpp" +RedsHouse1_Block: +RedsHouse2_Block: ; 65270 (19:5270) + INCBIN "gfx/blocksets/reds_house.bst" +House_GFX: ; 653a0 (19:53a0) + INCBIN "gfx/tilesets/house.w128.t2.2bpp" +House_Block: ; 65980 (19:5980) + INCBIN "gfx/blocksets/house.bst" +Mansion_GFX: ; 65bb0 (19:5bb0) + INCBIN "gfx/tilesets/mansion.w128.t2.2bpp" +Mansion_Block: ; 66190 (19:6190) + INCBIN "gfx/blocksets/mansion.bst" +ShipPort_GFX: ; 66610 (19:6610) + INCBIN "gfx/tilesets/ship_port.w128.t2.2bpp" +ShipPort_Block: ; 66bf0 (19:6bf0) + INCBIN "gfx/blocksets/ship_port.bst" +Interior_GFX: ; 66d60 (19:6d60) + INCBIN "gfx/tilesets/interior.w128.t1.2bpp" +Interior_Block: ; 67350 (19:7350) + INCBIN "gfx/blocksets/interior.bst" +Plateau_GFX: ; 676f0 (19:76f0) + INCBIN "gfx/tilesets/plateau.w128.t10.2bpp" +Plateau_Block: ; 67b50 (19:7b50) + INCBIN "gfx/blocksets/plateau.bst" -PalPacket_72528: ; 72528 (1c:6528) - db $B9,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 +SECTION "bank1A",ROMX,BANK[$1A] -PalPacket_72538: ; 72538 (1c:6538) - db $B9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 +DecrementPP: ; 68000 (1a:4000) +; after using a move, decrement pp in battle and (if not transformed?) in party + ld a, [de] + cp a, STRUGGLE + ret z ; if the pokemon is using "struggle", there's nothing to do + ; we don't decrement PP for "struggle" + ld hl, W_PLAYERBATTSTATUS1 + ld a, [hli] ; load the W_PLAYERBATTSTATUS1 pokemon status flags and increment hl to load the + ; W_PLAYERBATTSTATUS2 status flags later + and a, 7 ; check to see if bits 0, 1, or 2 are set + ret nz ; if any of these statuses are true, don't decrement PP + bit 6, [hl] ; check 6th bit status flag on W_PLAYERBATTSTATUS2 + ret nz ; and return if it is set + ld hl, $D02D ; PP of first move (in battle) + call .DecrementPP -PalPacket_72548: ; 72548 (1c:6548) - db $79,$5D,$08,$00,$0B,$8C,$D0,$F4,$60,$00,$00,$00,$00,$00,$00,$00 + ld a, [$D064] ; load pokemon status bits? + bit 3, a ; XXX transform status? + ret nz ; If it is, return. Pokemon Red stores the "current pokemon's" PP + ; separately from the "Pokemon in your party's" PP. This is + ; duplication -- in all cases *other* than Pokemon with Transform. + ; Normally, this means we have to go on and make the same + ; modification to the "party's pokemon" PP that we made to the + ; "current pokemon's" PP. But, if we're dealing with a Transformed + ; Pokemon, it has separate PP for the move set that it copied from + ; its opponent, which is *not* the same as its real PP as part of your + ; party. So we return, and don't do that part. -PalPacket_72558: ; 72558 (1c:6558) - db $79,$52,$08,$00,$0B,$A9,$E7,$9F,$01,$C0,$7E,$E8,$E8,$E8,$E8,$E0 + ld hl, $D188 ; PP of first move (in party) + ld a, [$CC2F] ; which mon in party is active + ld bc, $2C ; XXX probably size of party pokemon's data structure + call AddNTimes ; calculate address of the mon to modify +.DecrementPP + ld a, [$CC2E] ; which move (0, 1, 2, 3) did we use? + ld c, a + ld b, 0 + add hl ,bc ; calculate the address in memory of the PP we need to decrement + ; based on the move chosen. + dec [hl] ; Decrement PP + ret -PalPacket_72568: ; 72568 (1c:6568) - db $79,$47,$08,$00,$0B,$C4,$D0,$16,$A5,$CB,$C9,$05,$D0,$10,$A2,$28 +Version_GFX: ; 6802f (1a:402f) +IF _RED + INCBIN "gfx/red/redgreenversion.h8.1bpp" + ; 80 bytes +ENDC +IF _BLUE + INCBIN "gfx/blue/blueversion.h8.1bpp" + ; 64 bytes +ENDC -PalPacket_72578: ; 72578 (1c:6578) - db $79,$3C,$08,$00,$0B,$F0,$12,$A5,$C9,$C9,$C8,$D0,$1C,$A5,$CA,$C9 +Dojo_GFX: +Gym_GFX: ; 6807f (1a:407f) + INCBIN "gfx/tilesets/gym.w128.2bpp" +Dojo_Block: +Gym_Block: ; 6867f (1a:467f) + INCBIN "gfx/blocksets/gym.bst" +Mart_GFX: +Pokecenter_GFX: ; 68dbf (1a:4dbf) + INCBIN "gfx/tilesets/pokecenter.w128.2bpp" +Mart_Block: +Pokecenter_Block: ; 693bf (1a:53bf) + INCBIN "gfx/blocksets/pokecenter.bst" +ForestGate_GFX: +Museum_GFX: +Gate_GFX: ; 6960f (1a:560f) + INCBIN "gfx/tilesets/gate.w128.t1.2bpp" +ForestGate_Block: +Museum_Block: +Gate_Block: ; 69bff (1a:5bff) + INCBIN "gfx/blocksets/gate.bst" +Forest_GFX: ; 6a3ff (1a:63ff) + INCBIN "gfx/tilesets/forest.w128.2bpp" +Forest_Block: ; 6a9ff (1a:69ff) + INCBIN "gfx/blocksets/forest.bst" +Facility_GFX: ; 6b1ff (1a:71ff) + INCBIN "gfx/tilesets/facility.w128.2bpp" +Facility_Block: ; 6b7ff (1a:77ff) + INCBIN "gfx/blocksets/facility.bst" -PalPacket_72588: ; 72588 (1c:6588) - db $79,$31,$08,$00,$0B,$0C,$A5,$CA,$C9,$7E,$D0,$06,$A5,$CB,$C9,$7E +SECTION "bank1B",ROMX,BANK[$1B] -PalPacket_72598: ; 72598 (1c:6598) - db $79,$26,$08,$00,$0B,$39,$CD,$48,$0C,$D0,$34,$A5,$C9,$C9,$80,$D0 +Cemetery_GFX: ; 6c000 (1b:4000) + INCBIN "gfx/tilesets/cemetery.w128.t4.2bpp" +Cemetery_Block: ; 6c5c0 (1b:45c0) + INCBIN "gfx/blocksets/cemetery.bst" +Cavern_GFX: ; 6cca0 (1b:4ca0) + INCBIN "gfx/tilesets/cavern.w128.t14.2bpp" +Cavern_Block: ; 6d0c0 (1b:50c0) + INCBIN "gfx/blocksets/cavern.bst" +Lobby_GFX: ; 6d8c0 (1b:58c0) + INCBIN "gfx/tilesets/lobby.w128.t2.2bpp" +Lobby_Block: ; 6dea0 (1b:5ea0) + INCBIN "gfx/blocksets/lobby.bst" +Ship_GFX: ; 6e390 (1b:6390) + INCBIN "gfx/tilesets/ship.w128.t6.2bpp" +Ship_Block: ; 6e930 (1b:6930) + INCBIN "gfx/blocksets/ship.bst" +Lab_GFX: ; 6ed10 (1b:6d10) + INCBIN "gfx/tilesets/lab.w128.t4.2bpp" +Lab_Block: ; 6f2d0 (1b:72d0) + INCBIN "gfx/blocksets/lab.bst" +Club_GFX: ; 6f670 (1b:7670) + INCBIN "gfx/tilesets/club.w128.t5.2bpp" +Club_Block: ; 6fb20 (1b:7b20) + INCBIN "gfx/blocksets/club.bst" +Underground_GFX: ; 6fd60 (1b:7d60) + INCBIN "gfx/tilesets/underground.w128.t7.2bpp" +Underground_Block: ; 6fef0 (1b:7ef0) + INCBIN "gfx/blocksets/underground.bst" -PalPacket_725a8: ; 725a8 (1c:65a8) - db $79,$1B,$08,$00,$0B,$EA,$EA,$EA,$EA,$EA,$A9,$01,$CD,$4F,$0C,$D0 +SECTION "bank1C",ROMX,BANK[$1C] -PalPacket_725b8: ; 725b8 (1c:65b8) - db $79,$10,$08,$00,$0B,$4C,$20,$08,$EA,$EA,$EA,$EA,$EA,$60,$EA,$EA +LoadShootingStarGraphics: ; 70000 (1c:4000) + ld a, $f9 + ld [rOBP0], a ; $ff48 + ld a, $a4 + ld [rOBP1], a ; $ff49 + ld de, AnimationTileset2 + $30 ; $471e ; star tile (top left quadrant) + ld hl, $8a00 + ld bc, (BANK(AnimationTileset2) << 8) + $01 + call CopyVideoData + ld de, AnimationTileset2 + $130 ; $481e ; star tile (bottom left quadrant) + ld hl, $8a10 + ld bc, (BANK(AnimationTileset2) << 8) + $01 + call CopyVideoData + ld de, FallingStar ; $4190 + ld hl, $8a20 + ld bc, (BANK(FallingStar) << 8) + $01 + call CopyVideoData + ld hl, GameFreakLogoOAMData ; $4140 + ld de, wOAMBuffer + $60 + ld bc, $40 + call CopyData + ld hl, GameFreakShootingStarOAMData ; $4180 + ld de, wOAMBuffer + ld bc, $10 + jp CopyData -INCLUDE "data/mon_palettes.asm" +AnimateShootingStar: ; 70044 (1c:4044) + call LoadShootingStarGraphics + ld a, (SFX_1f_67 - SFX_Headers_1f) / 3 + call PlaySound + ld hl, wOAMBuffer + ld bc, $a004 +.asm_70052 + push hl + push bc +.asm_70054 + ld a, [hl] + add $4 + ld [hli], a + ld a, [hl] + add $fc + ld [hli], a + inc hl + inc hl + dec c + jr nz, .asm_70054 + ld c, $1 + call CheckForUserInterruption + pop bc + pop hl + ret c + ld a, [hl] + cp $50 + jr nz, .asm_70070 + jr .asm_70052 +.asm_70070 + cp b + jr nz, .asm_70052 + ld hl, wOAMBuffer + ld c, $4 + ld de, $4 +.asm_7007b + ld [hl], $a0 + add hl, de + dec c + jr nz, .asm_7007b + ld b, $3 +.asm_70083 + ld hl, rOBP0 ; $ff48 + rrc [hl] + rrc [hl] + ld c, $a + call CheckForUserInterruption + ret c + dec b + jr nz, .asm_70083 + ld de, wOAMBuffer + ld a, $18 +.asm_70098 + push af + ld hl, OAMData_700ee ; $40ee + ld bc, $4 + call CopyData + pop af + dec a + jr nz, .asm_70098 + xor a + ld [wWhichTrade], a ; $cd3d + ld hl, PointerTable_700f2 ; $40f2 + ld c, $6 +.asm_700af + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + push bc + push hl + ld hl, wOAMBuffer + $50 + ld c, $4 +.asm_700ba + ld a, [de] + cp $ff + jr z, .asm_700d5 + ld [hli], a + inc de + ld a, [de] + ld [hli], a + inc de + inc hl + inc hl + dec c + jr nz, .asm_700ba + ld a, [wWhichTrade] ; $cd3d + cp $18 + jr z, .asm_700d5 + add $6 + ld [wWhichTrade], a ; $cd3d +.asm_700d5 + call Func_7011f + push af + ld hl, $c310 + ld de, wOAMBuffer + ld bc, $50 + call CopyData + pop af + pop hl + pop bc + ret c + dec c + jr nz, .asm_700af + and a + ret -INCLUDE "data/super_palettes.asm" +OAMData_700ee: ; 700ee (1c:40ee) + db $00,$00,$A2,$90 -BorderPalettes: ; 72788 (1c:6788) -IF _RED - INCBIN "gfx/red/sgbborder.map" -ENDC -IF _BLUE - INCBIN "gfx/blue/sgbborder.map" -ENDC +PointerTable_700f2: ; 700f2 (1c:40f2) + dw OAMData_700fe + dw OAMData_70106 + dw OAMData_7010e + dw OAMData_70116 + dw OAMData_7011e + dw OAMData_7011e - ds $100 +; each entry is only half of an OAM tile +OAMData_700fe: ; 700fe (1c:40fe) + db $68,$30 + db $68,$40 + db $68,$58 + db $68,$78 -IF _RED - RGB 30,29,29 ; PAL_SGB1 - RGB 25,22,25 - RGB 25,17,21 - RGB 24,14,12 -ENDC -IF _BLUE - RGB 0,0,0 ; PAL_SGB1 (the first color is not defined, but if used, turns up as 30,29,29... o_O) - RGB 10,17,26 - RGB 5,9,20 - RGB 16,20,27 -ENDC +OAMData_70106: ; 70106 (1c:4106) + db $68,$38 + db $68,$48 + db $68,$60 + db $68,$70 - ds $18 +OAMData_7010e: ; 7010e (1c:410e) + db $68,$34 + db $68,$4C + db $68,$54 + db $68,$64 -IF _RED - RGB 30,29,29 ; PAL_SGB2 - RGB 22,31,16 - RGB 27,20,6 - RGB 15,15,15 -ENDC -IF _BLUE - RGB 30,29,29 ; PAL_SGB2 - RGB 27,11,6 - RGB 5,9,20 - RGB 28,25,15 -ENDC +OAMData_70116: ; 70116 (1c:4116) + db $68,$3C + db $68,$5C + db $68,$6C + db $68,$74 - ds $18 +OAMData_7011e: ; 7011e (1c:411e) + db $FF + +Func_7011f: ; 7011f (1c:411f) + ld b, $8 +.asm_70121 + ld hl, $c35c + ld a, [wWhichTrade] ; $cd3d + ld de, $fffc + ld c, a +.asm_7012b + inc [hl] + add hl, de + dec c + jr nz, .asm_7012b + ld a, [rOBP1] ; $ff49 + xor $a0 + ld [rOBP1], a ; $ff49 + ld c, $3 + call CheckForUserInterruption + ret c + dec b + jr nz, .asm_70121 + ret -IF _RED - RGB 30,29,29 ; PAL_SGB3 - RGB 31,31,17 - RGB 18,21,29 - RGB 15,15,15 -ENDC -IF _BLUE - RGB 30,29,29 ; PAL_SGB3 - RGB 12,15,11 - RGB 5,9,20 - RGB 14,22,17 -ENDC +GameFreakLogoOAMData: ; 70140 (1c:4140) + db $48,$50,$8D,$00 + db $48,$58,$8E,$00 + db $50,$50,$8F,$00 + db $50,$58,$90,$00 + db $58,$50,$91,$00 + db $58,$58,$92,$00 + db $60,$30,$80,$00 + db $60,$38,$81,$00 + db $60,$40,$82,$00 + db $60,$48,$83,$00 + db $60,$50,$93,$00 + db $60,$58,$84,$00 + db $60,$60,$85,$00 + db $60,$68,$83,$00 + db $60,$70,$81,$00 + db $60,$78,$86,$00 - ds $18 +GameFreakShootingStarOAMData: ; 70180 (1c:4180) + db $00,$A0,$A0,$10 + db $00,$A8,$A0,$30 + db $08,$A0,$A1,$10 + db $08,$A8,$A1,$30 -SGBBorderGraphics: ; 72fe8 (1c:6fe8) -IF _RED - INCBIN "gfx/red/sgbborder.w128.2bpp" -ENDC -IF _BLUE - INCBIN "gfx/blue/sgbborder.w128.2bpp" -ENDC +FallingStar: ; 70190 (1c:4190) + INCBIN "gfx/falling_star.2bpp" -LoadSAV: ; 735e8 (1c:75e8) -;(if carry -> write -;"the file data is destroyed") +Func_701a0: ; 701a0 (1c:41a0) + call Func_70423 call ClearScreen + ld c, $64 + call DelayFrames call LoadFontTilePatterns call LoadTextBoxTilePatterns - call LoadSAVCheckSum - jr c, .badsum - call LoadSAVCheckSum1 - jr c, .badsum - call LoadSAVCheckSum2 - jr c, .badsum - ld a, $2 ; good checksum - jr .goodsum -.badsum - ld hl, $d730 + call DisableLCD + ld hl, $9800 + ld bc, $800 + ld a, $7f + call FillMemory + call EnableLCD + ld hl, rLCDC ; $ff40 + set 3, [hl] + xor a + ld hl, $cc5b + ld bc, $60 + call FillMemory + xor a + ld [$cfcb], a + ld [$ffd7], a + ld [W_SPRITEFLIPPED], a + ld [$d358], a + ld [$cd40], a + inc a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ld hl, $d5a2 + ld a, [hl] + inc a + jr z, .asm_701eb + inc [hl] +.asm_701eb + ld a, $90 + ld [$ffb0], a + ld c, BANK(Music_HallOfFame) + ld a, MUSIC_HALL_OF_FAME + call PlayMusic + ld hl, W_PARTYMON1 ; $d164 + ld c, $ff +.asm_701fb + ld a, [hli] + cp $ff + jr z, .asm_70241 + inc c push hl - set 6, [hl] - ld hl, FileDataDestroyedText - call PrintText - ld c, $64 + push bc + ld [wWhichTrade], a ; $cd3d + ld a, c + ld [$cd3e], a + ld hl, W_PARTYMON1_LEVEL ; $d18c + ld bc, $2c + call AddNTimes + ld a, [hl] + ld [$cd3f], a + call Func_70278 + call Func_702e1 + ld c, $50 call DelayFrames + FuncCoord 2, 13 ; $c4a6 + ld hl, Coord + ld b, $3 + ld c, $e + call TextBoxBorder + FuncCoord 4, 15 ; $c4d0 + ld hl, Coord + ld de, HallOfFameText + call PlaceString + ld c, $b4 + call DelayFrames + call GBFadeOut2 + pop bc pop hl - res 6, [hl] - ld a, $1 ; bad checksum -.goodsum - ld [$d088], a ; checksum flag + jr .asm_701fb +.asm_70241 + ld a, c + inc a + ld hl, $cc5b + ld bc, $10 + call AddNTimes + ld [hl], $ff + call Func_73b0d + xor a + ld [wWhichTrade], a ; $cd3d + inc a + ld [$cd40], a + call Func_70278 + call Func_70377 + call Func_70423 + xor a + ld [$ffb0], a + ld hl, rLCDC ; $ff40 + res 3, [hl] ret -FileDataDestroyedText: ; 7361e (1c:761e) - TX_FAR _FileDataDestroyedText - db "@" +HallOfFameText: ; 7026b (1c:426b) + db "HALL OF FAME@" -LoadSAVCheckSum: ; 73623 (1c:7623) - ld a, $a - ld [$0], a - ld a, $1 - ld [$6000], a - ld [$4000], a - ld hl, $a598 ; hero name located in SRAM - ld bc, $f8b ; but here checks the full SAV - call SAVCheckSum - ld c, a - ld a, [$b523] ; SAV's checksum - cp c - jp z, .Func_73652 - ld hl, $a598 - ld bc, $f8b - call SAVCheckSum +Func_70278: ; 70278 (1c:4278) + call ClearScreen + ld a, $d0 + ld [$ffaf], a + ld a, $c0 + ld [$ffae], a + ld a, [wWhichTrade] ; $cd3d + ld [$cf91], a + ld [$d0b5], a + ld [$cfd9], a + ld [$cf1d], a + ld a, [$cd40] + and a + jr z, .asm_7029d + call Func_7033e + jr .asm_702ab +.asm_7029d + FuncCoord 12, 5 ; $c410 + ld hl, Coord + call GetMonHeader + call LoadFrontSpriteByMonIndex + ld a, $4 + call Predef ; indirect jump to LoadMonBackSprite (3f103 (f:7103)) +.asm_702ab + ld b, $b + ld c, $0 + call GoPAL_SET + ld a, $e4 + ld [rBGP], a ; $ff47 + ld c, $31 + call Func_7036d + ld d, $a0 + ld e, $4 + ld a, [$cf1b] + and a + jr z, .asm_702c7 + sla e +.asm_702c7 + call .asm_702d5 + xor a + ld [$ffaf], a ld c, a - ld a, [$b523] ; SAV's checksum - cp c - jp nz, SAVBadCheckSum + call Func_7036d + ld d, $0 + ld e, $fc +.asm_702d5 + call DelayFrame + ld a, [$ffae] + add e + ld [$ffae], a + cp d + jr nz, .asm_702d5 + ret -.Func_73652 ; 73652 (1c:7652) - ld hl, $a598 +Func_702e1: ; 702e1 (1c:42e1) + ld a, [$cd3e] + ld hl, W_PARTYMON1NAME ; $d2b5 + call GetPartyMonName + call Func_702f0 + jp Func_70404 + +Func_702f0: ; 702f0 (1c:42f0) + FuncCoord 0, 2 ; $c3c8 + ld hl, Coord + ld b, $9 + ld c, $a + call TextBoxBorder + FuncCoord 2, 6 ; $c41a + ld hl, Coord + ld de, HoFMonInfoText + call PlaceString + FuncCoord 1, 4 ; $c3f1 + ld hl, Coord + ld de, $cd6d + call PlaceString + ld a, [$cd3f] + FuncCoord 8, 7 ; $c434 + ld hl, Coord + call PrintLevelCommon + ld a, [wWhichTrade] ; $cd3d + ld [$d0b5], a + FuncCoord 3, 9 ; $c457 + ld hl, Coord + ld a, $4b + call Predef ; indirect jump to Func_27d6b (27d6b (9:7d6b)) + ld a, [wWhichTrade] ; $cd3d + jp PlayCry + +HoFMonInfoText: ; 70329 (1c:4329) + db "LEVEL/" + next "TYPE1/" + next "TYPE2/@" + +Func_7033e: ; 7033e (1c:433e) + ld de, RedPicFront ; $6ede + ld a, BANK(RedPicFront) + call UncompressSpriteFromDE + ld hl, S_SPRITEBUFFER1 + ld de, $a000 + ld bc, $310 + call CopyData + ld de, $9000 + call InterlaceMergeSpriteBuffers + ld de, RedPicBack ; $7e0a + ld a, BANK(RedPicBack) + call UncompressSpriteFromDE + ld a, $3 + call Predef ; indirect jump to ScaleSpriteByTwo (2fe40 (b:7e40)) + ld de, $9310 + call InterlaceMergeSpriteBuffers + ld c, $1 + +Func_7036d: ; 7036d (1c:436d) + ld b, $0 + FuncCoord 12, 5 ; $c410 + ld hl, Coord + ld a, $31 + jp Predef ; indirect jump to Func_79dda (79dda (1e:5dda)) + +Func_70377: ; 70377 (1c:4377) + ld hl, $d747 + set 3, [hl] + ld a, $56 + call Predef ; indirect jump to DisplayDexRating (44169 (11:4169)) + FuncCoord 0, 4 ; $c3f0 + ld hl, Coord + ld b, $6 + ld c, $a + call TextBoxBorder + FuncCoord 5, 0 ; $c3a5 + ld hl, Coord + ld b, $2 + ld c, $9 + call TextBoxBorder + FuncCoord 7, 2 ; $c3cf + ld hl, Coord ld de, W_PLAYERNAME ; $d158 + call PlaceString + FuncCoord 1, 6 ; $c419 + ld hl, Coord + ld de, HoFPlayTimeText + call PlaceString + FuncCoord 5, 7 ; $c431 + ld hl, Coord + ld de, $da41 + ld bc, $103 + call PrintNumber + ld [hl], $6d + inc hl + ld de, $da43 + ld bc, $8102 + call PrintNumber + FuncCoord 1, 9 ; $c455 + ld hl, Coord + ld de, HoFMoneyText + call PlaceString + FuncCoord 4, 10 ; $c46c + ld hl, Coord + ld de, wPlayerMoney ; $d347 + ld c, $a3 + call PrintBCDNumber + ld hl, DexSeenOwnedText + call Func_703e2 + ld hl, DexRatingText + call Func_703e2 + ld hl, $cc5d + +Func_703e2: ; 703e2 (1c:43e2) + call PrintText + ld c, $78 + jp DelayFrames + +HoFPlayTimeText: ; 703ea (1c:43ea) + db "PLAY TIME@" + +HoFMoneyText: ; 703f4 (1c:43f4) + db "MONEY@" + +DexSeenOwnedText: ; 703fa (1c:43fa) + TX_FAR _DexSeenOwnedText + db "@" + +DexRatingText: ; 703ff (1c:43ff) + TX_FAR _DexRatingText + db "@" + +Func_70404: ; 70404 (1c:4404) + ld hl, $cc5b + ld bc, $10 + ld a, [$cd3e] + call AddNTimes + ld a, [wWhichTrade] ; $cd3d + ld [hli], a + ld a, [$cd3f] + ld [hli], a + ld e, l + ld d, h + ld hl, $cd6d ld bc, $b - call CopyData - ld hl, $a5a3 - ld de, wPokedexOwned ; $d2f7 - ld bc, $789 - call CopyData - ld hl, W_CURMAPTILESET ; $d367 - set 7, [hl] - ld hl, $ad2c - ld de, wSpriteStateData1 - ld bc, $200 - call CopyData - ld a, [$b522] - ld [$ffd7], a - ld hl, $b0c0 - ld de, W_NUMINBOX ; $da80 - ld bc, $462 - call CopyData - and a - jp SAVGoodChecksum + jp CopyData -LoadSAVCheckSum1: ; 73690 (1c:7690) +Func_70423: ; 70423 (1c:4423) ld a, $a - ld [$0], a - ld a, $1 - ld [$6000], a - ld [$4000], a - ld hl, $a598 ; hero name located in SRAM - ld bc, $f8b ; but here checks the full SAV - call SAVCheckSum - ld c, a - ld a, [$b523] ; SAV's checksum - cp c - jr nz, SAVBadCheckSum - ld hl, $b0c0 - ld de, W_NUMINBOX ; $da80 - ld bc, $462 - call CopyData - and a - jp SAVGoodChecksum + ld [$cfc8], a + ld [$cfc9], a + ld a, $ff + ld [wMusicHeaderPointer], a + jp GBFadeOut2 -LoadSAVCheckSum2: ; 736bd (1c:76bd) - ld a, $a - ld [$0], a - ld a, $1 - ld [$6000], a - ld [$4000], a - ld hl, $a598 ; hero name located in SRAM - ld bc, $f8b ; but here checks the full SAV - call SAVCheckSum - ld c, a - ld a, [$b523] ; SAV's checksum - cp c - jp nz, SAVBadCheckSum - ld hl, $af2c - ld de, W_NUMINPARTY ; $d163 - ld bc, $194 - call CopyData - ld hl, $a5a3 - ld de, wPokedexOwned ; $d2f7 - ld bc, $26 - call CopyData +AnimateHealingMachine: ; 70433 (1c:4433) + ld de, PokeCenterFlashingMonitorAndHealBall ; $44b7 + ld hl, $87c0 + ld bc, (BANK(PokeCenterFlashingMonitorAndHealBall) << 8) + $03 + call CopyVideoData + ld hl, $cfcb + ld a, [hl] + push af + ld [hl], $ff + push hl + ld a, [rOBP1] ; $ff49 + push af + ld a, $e0 + ld [rOBP1], a ; $ff49 + ld hl, $c384 + ld de, PokeCenterOAMData ; $44d7 + call Func_70503 + ld a, $4 + ld [wMusicHeaderPointer], a + ld a, $ff + ld [$c0ee], a + call PlaySound +.asm_70464 + ld a, [wMusicHeaderPointer] and a - jp SAVGoodChecksum + jr nz, .asm_70464 + ld a, [W_NUMINPARTY] ; $d163 + ld b, a +.asm_7046e + call Func_70503 + ld a, (SFX_02_4a - SFX_Headers_02) / 3 + call PlaySound + ld c, $1e + call DelayFrames + dec b + jr nz, .asm_7046e + ld a, [$c0ef] + cp $1f + ld [$c0f0], a + jr nz, .asm_70495 + ld a, $ff + ld [$c0ee], a + call PlaySound + ld a, Bank(Func_9876) + ld [$c0ef], a +.asm_70495 + ld a, MUSIC_PKMN_HEALED + ld [$c0ee], a + call PlaySound + ld d, $28 + call Func_704f3 +.asm_704a2 + ld a, [$c026] + cp MUSIC_PKMN_HEALED + jr z, .asm_704a2 + ld c, $20 + call DelayFrames + pop af + ld [rOBP1], a ; $ff49 + pop hl + pop af + ld [hl], a + jp UpdateSprites -SAVBadCheckSum: ; 736f7 (1c:76f7) - scf +PokeCenterFlashingMonitorAndHealBall: ; 704b7 (1c:44b7) + INCBIN "gfx/pokecenter_ball.2bpp" -SAVGoodChecksum: ; 736f8 (1c:76f8) - ld a, $0 - ld [$6000], a - ld [$0], a +PokeCenterOAMData: ; 704d7 (1c:44d7) + db $24,$34,$7C,$10 ; heal machine monitor + db $2B,$30,$7D,$10 ; pokeballs 1-6 + db $2B,$38,$7D,$30 + db $30,$30,$7D,$10 + db $30,$38,$7D,$30 + db $35,$30,$7D,$10 + db $35,$38,$7D,$30 + +Func_704f3: ; 704f3 (1c:44f3) + ld b, $8 +.asm_704f5 + ld a, [rOBP1] ; $ff49 + xor d + ld [rOBP1], a ; $ff49 + ld c, $a + call DelayFrames + dec b + jr nz, .asm_704f5 ret -Func_73701: ; 0x73701 - call LoadSAVCheckSum - call LoadSAVCheckSum1 - jp LoadSAVCheckSum2 +Func_70503: ; 70503 (1c:4503) + ld a, [de] + inc de + ld [hli], a + ld a, [de] + inc de + ld [hli], a + ld a, [de] + inc de + ld [hli], a + ld a, [de] + inc de + ld [hli], a + ret -SaveSAV: ;$770a - ld b,1 - ld hl,Func_5def ; LoadGameMenuInGame - call Bankswitch - ld hl,WouldYouLikeToSaveText - call SaveSAVConfirm - and a ;|0 = Yes|1 = No| - ret nz - ld a,[$d088] - dec a - jr z,.save - call SAVCheckRandomID - jr z,.save - ld hl,OlderFileWillBeErasedText - call SaveSAVConfirm +Func_70510: ; 70510 (1c:4510) + call Func_706ef + ld a, $ec + ld [$c104], a + call Delay3 + push hl + call GBFadeIn2 + ld hl, W_FLAGS_D733 + bit 7, [hl] + res 7, [hl] + jr nz, .asm_70568 + ld a, (SFX_02_4c - SFX_Headers_02) / 3 + call PlaySound + ld hl, $d732 + bit 4, [hl] + res 4, [hl] + pop hl + jr nz, .asm_7055e + call Func_705aa + ld a, (SFX_02_4f - SFX_Headers_02) / 3 + call PlaySound + call Func_70787 + ld a, b and a - ret nz -.save ;$772d - call SaveSAVtoSRAM ;$7848 - FuncCoord 1,13 - ld hl,Coord - ld bc,$0412 - call ClearScreenArea ; clear area 4x12 starting at 13,1 - FuncCoord 1,14 - ld hl,Coord - ld de,NowSavingString - call PlaceString - ld c,$78 + jr nz, .asm_7055b + ld hl, wWhichTrade ; $cd3d + xor a + ld [hli], a + inc a + ld [hli], a + ld a, $8 + ld [hli], a + ld [hl], $ff + ld hl, $cd48 + call Func_70730 +.asm_70558 + call Func_2307 +.asm_7055b + jp Func_70772 +.asm_7055e + ld c, $32 call DelayFrames - ld hl,GameSavedText - call PrintText - ld a, (SFX_02_5d - SFX_Headers_02) / 3 ;sound for saved game - call PlaySoundWaitForCurrent - call WaitForSoundToFinish - ld c,$1e - jp DelayFrames + call Func_705aa + jr .asm_7055b +.asm_70568 + pop hl + ld de, BirdSprite ; $4d80 + ld hl, $8000 + ld bc, (BANK(BirdSprite) << 8) + $0c + call CopyVideoData + call Func_706d7 + ld a, (SFX_02_50 - SFX_Headers_02) / 3 + call PlaySound + ld hl, wWhichTrade ; $cd3d + xor a + ld [hli], a + ld a, $c + ld [hli], a + ld [hl], $8 + ld de, FlyAnimationEnterScreenCoords ; $4592 + call Func_706ae + call LoadPlayerSpriteGraphics + jr .asm_70558 -NowSavingString: - db "Now saving...@" +FlyAnimationEnterScreenCoords: ; 70592 (1c:4592) +; y, x pairs +; This is the sequence of screen coordinates used by the overworld +; Fly animation when the player is entering a map. + db $05, $98 + db $0F, $90 + db $18, $88 + db $20, $80 + db $27, $78 + db $2D, $70 + db $32, $68 + db $36, $60 + db $39, $58 + db $3B, $50 + db $3C, $48 + db $3C, $40 -SaveSAVConfirm: ; 73768 (1c:7768) - call PrintText - FuncCoord 0, 7 - ld hl,Coord - ld bc,$0801 ;arrow's coordinates |b = Y|c = X| - ld a,$14 ;one line shifting ($28 = 2 lines) - ld [$d125],a - call DisplayTextBoxID ;handle Yes/No KeyPress - ld a,[$cc26] - ret +Func_705aa: ; 705aa (1c:45aa) + ld hl, wWhichTrade ; $cd3d + ld a, $10 + ld [hli], a + ld a, $3c + ld [hli], a + call Func_7077f + ld [hl], a + jp Func_70755 -WouldYouLikeToSaveText: ; 0x7377d - TX_FAR _WouldYouLikeToSaveText - db "@" +_DoFlyOrTeleportAwayGraphics: ; 705ba (1c:45ba) + call Func_706ef + call Func_70787 + ld a, b + and a + jr z, .asm_705ef + dec a + jp nz, Func_7067d +.asm_705c8 + ld a, (SFX_02_4b - SFX_Headers_02) / 3 + call PlaySound + ld hl, wWhichTrade ; $cd3d + ld a, $f0 + ld [hli], a + ld a, $ec + ld [hli], a + call Func_7077f + ld [hl], a + call Func_70755 + call Func_70787 + ld a, b + dec a + jr z, .asm_705e9 + ld c, $a + call DelayFrames +.asm_705e9 + call GBFadeOut2 + jp Func_70772 +.asm_705ef + ld a, $4 + call StopMusic + ld a, [$d732] + bit 6, a + jr z, .asm_70610 + ld hl, wWhichTrade ; $cd3d + ld a, $10 + ld [hli], a + ld a, $ff + ld [hli], a + xor a + ld [hli], a + ld [hl], $a1 + ld hl, $cd48 + call Func_70730 + jr .asm_705c8 +.asm_70610 + call Func_706d7 + ld hl, wWhichTrade ; $cd3d + ld a, $ff + ld [hli], a + ld a, $8 + ld [hli], a + ld [hl], $c + call Func_706ae + ld a, (SFX_02_50 - SFX_Headers_02) / 3 + call PlaySound + ld hl, wWhichTrade ; $cd3d + xor a + ld [hli], a + ld a, $c + ld [hli], a + ld [hl], $c + ld de, FlyAnimationScreenCoords1 ; $464f + call Func_706ae + ld c, $28 + call DelayFrames + ld hl, $cd3e + ld a, $b + ld [hli], a + ld [hl], $8 + ld de, FlyAnimationScreenCoords2 ; $4667 + call Func_706ae + call GBFadeOut2 + jp Func_70772 -GameSavedText: ; 73782 (1c:7782) - TX_FAR _GameSavedText - db "@" +FlyAnimationScreenCoords1: ; 7064f (1c:464f) +; y, x pairs +; This is the sequence of screen coordinates used by the first part +; of the Fly overworld animation. + db $3C, $48 + db $3C, $50 + db $3B, $58 + db $3A, $60 + db $39, $68 + db $37, $70 + db $37, $78 + db $33, $80 + db $30, $88 + db $2D, $90 + db $2A, $98 + db $27, $A0 -OlderFileWillBeErasedText: ; 73787 (1c:7787) - TX_FAR _OlderFileWillBeErasedText - db "@" +FlyAnimationScreenCoords2: ; 70667 (1c:4667) +; y, x pairs +; This is the sequence of screen coordinates used by the second part +; of the Fly overworld animation. + db $1A, $90 + db $19, $80 + db $17, $70 + db $15, $60 + db $12, $50 + db $0F, $40 + db $0C, $30 + db $09, $20 + db $05, $10 + db $00, $00 -SaveSAVtoSRAM0: ; 7378c (1c:778c) - ld a, $a - ld [$0], a - ld a, $1 - ld [$6000], a - ld [$4000], a - ld hl, W_PLAYERNAME ; $d158 - ld de, $a598 - ld bc, $b - call CopyData - ld hl, wPokedexOwned ; $d2f7 - ld de, $a5a3 - ld bc, $789 - call CopyData - ld hl, wSpriteStateData1 ; OAM? - ld de, $ad2c - ld bc, $200 - call CopyData - ld hl, W_NUMINBOX ; $da80 - ld de, $b0c0 - ld bc, $462 - call CopyData - ld a, [$ffd7] - ld [$b522], a - ld hl, $a598 - ld bc, $f8b - call SAVCheckSum - ld [$b523], a - xor a - ld [$6000], a - ld [$0], a - ret + db $F0, $00 -SaveSAVtoSRAM1: ; 737e2 (1c:77e2) -; stored pokémon - ld a, $a - ld [$0], a +Func_7067d: ; 7067d (1c:467d) + ld a, $ff + ld [$cfcb], a + ld a, [$c302] + ld [$c30a], a + ld a, [$c306] + ld [$c30e], a + ld a, $a0 + ld [wOAMBuffer], a + ld [$c304], a + ld c, $2 + call DelayFrames + ld a, $a0 + ld [$c308], a + ld [$c30c], a + call GBFadeOut2 ld a, $1 - ld [$6000], a - ld [$4000], a - ld hl, W_NUMINBOX ; $da80 - ld de, $b0c0 - ld bc, $462 - call CopyData - ld hl, $a598 - ld bc, $f8b - call SAVCheckSum - ld [$b523], a - xor a - ld [$6000], a - ld [$0], a + ld [$cfcb], a + jp Func_70772 + +Func_706ae: ; 706ae (1c:46ae) + ld a, [$cd3f] + xor $1 + ld [$cd3f], a + ld [$c102], a + call Delay3 + ld a, [wWhichTrade] ; $cd3d + cp $ff + jr z, .asm_706cd + ld hl, $c104 + ld a, [de] + inc de + ld [hli], a + inc hl + ld a, [de] + inc de + ld [hl], a +.asm_706cd + ld a, [$cd3e] + dec a + ld [$cd3e], a + jr nz, Func_706ae ret -SaveSAVtoSRAM2: ; 7380f (1c:780f) - ld a, $a - ld [$0], a - ld a, $1 - ld [$6000], a - ld [$4000], a - ld hl, W_NUMINPARTY ; $d163 - ld de, $af2c - ld bc, $194 - call CopyData - ld hl, wPokedexOwned ; pokédex only - ld de, $a5a3 - ld bc, $26 +Func_706d7: ; 706d7 (1c:46d7) + ld de, BirdSprite ; $4d80 + ld hl, $8000 + ld bc, (BANK(BirdSprite) << 8) + $0c + call CopyVideoData + ld de, BirdSprite + $c0 ; $4e40 ; moving amination sprite + ld hl, $8800 + ld bc, (BANK(BirdSprite) << 8) + $0c + jp CopyVideoData + +Func_706ef: ; 706ef (1c:46ef) + ld a, [$c102] + ld [$cd50], a + ld a, [$c104] + ld [$cd4f], a + ld hl, PlayerSpinningFacingOrder ; $4713 + ld de, $cd48 + ld bc, $4 call CopyData - ld hl, $a598 - ld bc, $f8b - call SAVCheckSum - ld [$b523], a - xor a - ld [$6000], a - ld [$0], a + ld a, [$c102] + ld hl, $cd48 +.asm_7070d + cp [hl] + inc hl + jr nz, .asm_7070d + dec hl ret -SaveSAVtoSRAM: ; 73848 (1c:7848) - ld a, $2 - ld [$d088], a - call SaveSAVtoSRAM0 - call SaveSAVtoSRAM1 - jp SaveSAVtoSRAM2 +PlayerSpinningFacingOrder: ; 70713 (1c:4713) +; The order of the direction the player's sprite is facing when teleporting +; away. Creates a spinning effect. + db $00, $08, $04, $0C ; down, left, up, right -SAVCheckSum: ; 73856 (1c:7856) -;Check Sum (result[1 byte] is complemented) - ld d, $0 -.loop - ld a, [hli] - add d - ld d, a - dec bc - ld a, b - or c - jr nz, .loop - ld a, d - cpl +Func_70717: ; 70717 (1c:4717) + ld a, [hl] + ld [$c102], a + push hl + ld hl, $cd48 + ld de, $cd47 + ld bc, $4 + call CopyData + ld a, [$cd47] + ld [$cd4b], a + pop hl ret -Func_73863: ; 73863 (1c:7863) - ld hl, $a000 - ld de, $ba4d - ld b, $6 -.asm_7386b - push bc - push de - ld bc, $462 - call SAVCheckSum - pop de - ld [de], a - inc de - pop bc - dec b - jr nz, .asm_7386b - ret +Func_70730: ; 70730 (1c:4730) + call Func_70717 + ld a, [wWhichTrade] ; $cd3d + ld c, a + and $3 + jr nz, .asm_70743 + ld a, [$cd40] + cp $ff + call nz, PlaySound +.asm_70743 + ld a, [$cd3e] + add c + ld [wWhichTrade], a ; $cd3d + ld c, a + ld a, [$cd3f] + cp c + ret z + call DelayFrames + jr Func_70730 + +Func_70755: ; 70755 (1c:4755) + call Func_70717 + ld a, [wWhichTrade] ; $cd3d + ld c, a + ld a, [$c104] + add c + ld [$c104], a + ld c, a + ld a, [$cd3e] + cp c + ret z + ld a, [$cd3f] + ld c, a + call DelayFrames + jr Func_70755 -Func_7387b: ; 7387b (1c:787b) - ld hl, PointerTable_73895 ; $7895 - ld a, [$d5a0] - and $7f - cp $6 - ld b, $2 - jr c, .asm_7388c - inc b - sub $6 -.asm_7388c - ld e, a - ld d, $0 - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a +Func_70772: ; 70772 (1c:4772) + ld a, [$cd4f] + ld [$c104], a + ld a, [$cd50] + ld [$c102], a ret -PointerTable_73895: ; 73895 (1c:7895) - dw $A000 - dw $A462 - dw $A8C4 - dw $AD26 - dw $B188 - dw $B5EA +Func_7077f: ; 7077f (1c:477f) + ld a, [$cf1b] + xor $1 + inc a + inc a + ret -Func_738a1:: ; 738a1 (1c:78a1) - ld hl, WhenYouChangeBoxText - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] ; $cc26 - and a - ret nz - ld hl, $d5a0 - bit 7, [hl] - call z, Func_73a29 - call Func_7393f - call UpdateSprites - ld hl, $fff6 - set 1, [hl] - call HandleMenuInput - ld hl, $fff6 - res 1, [hl] - bit 1, a - ret nz - call Func_7387b - ld e, l - ld d, h - ld hl, W_NUMINBOX ; $da80 - call Func_7390e - ld a, [wCurrentMenuItem] ; $cc26 - set 7, a - ld [$d5a0], a - call Func_7387b - ld de, W_NUMINBOX ; $da80 - call Func_7390e - ld hl, W_MAPTEXTPTR ; $d36c - ld de, wWhichTrade ; $cd3d +Func_70787: ; 70787 (1c:4787) + ld b, 0 + ld hl, DataTable_707a9 ; $47a9 + ld a, [W_CURMAPTILESET] ; $d367 + ld c, a +.asm_70790 ld a, [hli] - ld [de], a - inc de - ld a, [hl] - ld [de], a - call Func_3f05 - call SaveSAVtoSRAM - ld hl, wWhichTrade ; $cd3d - call Func_3f0f - ld a, (SFX_02_5d - SFX_Headers_02) / 3 - call PlaySoundWaitForCurrent - call WaitForSoundToFinish + cp $ff + jr z, .asm_707a4 + cp c + jr nz, .asm_7079e + FuncCoord 8, 9 ; $c45c + ld a, [Coord] + cp [hl] + jr z, .asm_707a2 +.asm_7079e + inc hl + inc hl + jr .asm_70790 +.asm_707a2 + inc hl + ld b, [hl] +.asm_707a4 + ld a, b + ld [$cd5b], a ret -WhenYouChangeBoxText: ; 73909 (1c:7909) - TX_FAR _WhenYouChangeBoxText - db "@" +; format: db tileset id, tile id, value to be put in $cd5b +DataTable_707a9: ; 707a9 (1c:47a9) + db FACILITY, $20, 1 ; warp pad + db FACILITY, $11, 2 ; hole + db CAVERN, $22, 2 ; hole + db INTERIOR, $55, 1 ; warp pad + db $FF -Func_7390e: ; 7390e (1c:790e) - push hl - ld a, $a - ld [$0], a - ld a, $1 - ld [$6000], a - ld a, b - ld [$4000], a - ld bc, $462 +Func_707b6: ; 707b6 (1c:47b6) + ld c, $a + call DelayFrames + ld hl, $d736 + set 6, [hl] + ld de, RedSprite ; $4180 + ld hl, $8000 + ld bc, (BANK(RedSprite) << 8) + $0c + call CopyVideoData + ld a, $4 + ld hl, RedFishingTiles ; $4866 + call Func_71771 + ld a, [$c102] + ld c, a + ld b, $0 + ld hl, FishingRodGfxProperties ; $4856 + add hl, bc + ld de, $c39c + ld bc, $4 call CopyData - pop hl + ld c, $64 + call DelayFrames + ld a, [wWhichTrade] ; $cd3d + and a + ld hl, NoNibbleText + jr z, .asm_70836 + cp $2 + ld hl, NothingHereText + jr z, .asm_70836 + ld b, $a +.asm_707fe + ld hl, $c104 + call Func_70842 + ld hl, $c39c + call Func_70842 + call Delay3 + dec b + jr nz, .asm_707fe + ld a, [$c102] + cp $4 + jr nz, .asm_7081c + ld a, $a0 + ld [$c39c], a +.asm_7081c + ld hl, $cd4f xor a ld [hli], a - dec a ld [hl], a - ld hl, $a000 - ld bc, $1a4c - call SAVCheckSum - ld [$ba4c], a - call Func_73863 - xor a - ld [$6000], a - ld [$0], a + ld a, $4c + call Predef ; indirect jump to PrintEmotionBubble (17c47 (5:7c47)) + ld a, [$c102] + cp $4 + jr nz, .asm_70833 + ld a, $44 + ld [$c39c], a +.asm_70833 + ld hl, ItsABiteText +.asm_70836 + call PrintText + ld hl, $d736 + res 6, [hl] + call LoadFontTilePatterns ret -Func_7393f: ; 7393f (1c:793f) - xor a - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - ld a, $3 - ld [wMenuWatchedKeys], a ; $cc29 - ld a, $b - ld [wMaxMenuItem], a ; $cc28 - ld a, $1 - ld [wTopMenuItemY], a ; $cc24 - ld a, $c - ld [wTopMenuItemX], a ; $cc25 - xor a - ld [$cc37], a - ld a, [$d5a0] - and $7f - ld [wCurrentMenuItem], a ; $cc26 - ld [wLastMenuItem], a ; $cc2a - ld hl, wTileMap - ld b, $2 - ld c, $9 - call TextBoxBorder - ld hl, ChooseABoxText - call PrintText - FuncCoord 11, 0 ; $c3ab - ld hl, Coord - ld b, $c - ld c, $7 - call TextBoxBorder - ld hl, $fff6 - set 2, [hl] - ld de, BoxNames ; $79d9 - FuncCoord 13, 1 ; $c3c1 - ld hl, Coord - call PlaceString - ld hl, $fff6 - res 2, [hl] - ld a, [$d5a0] - and $7f - cp $9 - jr c, .asm_739a6 - sub $9 - FuncCoord 8, 2 ; $c3d0 - ld hl, Coord - ld [hl], $f7 - add $f6 - jr .asm_739a8 -.asm_739a6 - add $f7 -.asm_739a8 - FuncCoord 9, 2 ; $c3d1 - ld [Coord], a - FuncCoord 1, 2 ; $c3c9 - ld hl, Coord - ld de, BoxNoText - call PlaceString - call Func_73a84 - FuncCoord 18, 1 ; $c3c6 - ld hl, Coord - ld de, wWhichTrade ; $cd3d - ld bc, $14 - ld a, $c -.asm_739c2 - push af - ld a, [de] - and a - jr z, .asm_739c9 - ld [hl], $78 -.asm_739c9 - add hl, bc - inc de - pop af - dec a - jr nz, .asm_739c2 - ld a, $1 - ld [H_AUTOBGTRANSFERENABLED], a ; $ffba +Func_70842: ; 70842 (1c:4842) + ld a, [hl] + xor $1 + ld [hl], a ret -ChooseABoxText: ; 739d4 (1c:79d4) - TX_FAR _ChooseABoxText +NoNibbleText: ; 70847 (1c:4847) + TX_FAR _NoNibbleText db "@" -BoxNames: ; 739d9 (1c:79d9) - db "BOX 1" - next "BOX 2" - next "BOX 3" - next "BOX 4" - next "BOX 5" - next "BOX 6" - next "BOX 7" - next "BOX 8" - next "BOX 9" - next "BOX10" - next "BOX11" - next "BOX12@" +NothingHereText: ; 7084c (1c:484c) + TX_FAR _NothingHereText + db "@" -BoxNoText: ; 73a21 (1c:7a21) - db "BOX No.@" +ItsABiteText: ; 70851 (1c:4851) + TX_FAR _ItsABiteText + db "@" -Func_73a29: ; 73a29 (1c:7a29) - ld a, $a - ld [$0], a - ld a, $1 - ld [$6000], a - ld a, $2 - ld [$4000], a - call Func_73a4b - ld a, $3 - ld [$4000], a - call Func_73a4b +FishingRodGfxProperties: ; 70856 (1c:4856) +; specicies how the fishing rod should be drawn on the screen +; first byte = screen y coordinate +; second byte = screen x coordinate +; third byte = tile number +; fourth byte = sprite properties + db $5B, $4C, $FD, $00 ; player facing down + db $44, $4C, $FD, $00 ; player facing up + db $50, $40, $FE, $00 ; player facing left + db $50, $58, $FE, $20 ; player facing right ($20 means "horizontally flip the tile") + +RedFishingTiles: ; 70866 (1c:4866) + dw RedFishingTilesFront + db $02, $1E + dw $8020 + + dw RedFishingTilesBack + db $02, $1E + dw $8060 + + dw RedFishingTilesSide + db $02, $1E + dw $80A0 + + dw RedFishingRodTiles + db $03, $1E + dw $8FD0 + +_HandleMidJump: ; 7087e (1c:487e) + ld a, [$d714] + ld c, a + inc a + cp $10 + jr nc, .asm_70895 + ld [$d714], a + ld b, $0 + ld hl, PlayerJumpingYScreenCoords ; $48ba + add hl, bc + ld a, [hl] + ld [$c104], a ; player's sprite y coordinate + ret +.asm_70895 + ld a, [wWalkCounter] ; $cfc5 + cp $0 + ret nz + call UpdateSprites + call Delay3 xor a - ld [$6000], a - ld [$0], a + ld [H_CURRENTPRESSEDBUTTONS], a + ld [H_NEWLYPRESSEDBUTTONS], a + ld [H_NEWLYRELEASEDBUTTONS], a + ld [$d714], a + ld hl, $d736 + res 6, [hl] + ld hl, $d730 + res 7, [hl] + xor a + ld [wJoypadForbiddenButtonsMask], a ret -Func_73a4b: ; 73a4b (1c:7a4b) - ld hl, $a000 - call Func_73a7f - ld hl, $a462 - call Func_73a7f - ld hl, $a8c4 - call Func_73a7f - ld hl, $ad26 - call Func_73a7f - ld hl, $b188 - call Func_73a7f - ld hl, $b5ea - call Func_73a7f - ld hl, $a000 - ld bc, $1a4c - call SAVCheckSum - ld [$ba4c], a - call Func_73863 - ret +PlayerJumpingYScreenCoords: ; 708ba (1c:48ba) +; Sequence of y screen coordinates for player's sprite when jumping over a ledge. + db $38, $36, $34, $32, $31, $30, $30, $30, $31, $32, $33, $34, $36, $38, $3C, $3C -Func_73a7f: ; 73a7f (1c:7a7f) + +Func_708ca: ; 708ca (1c:48ca) + ld a, $e4 + ld [rOBP1], a ; $ff49 + call Func_7092a + FuncCoord 12, 0 ; $c3ac + ld hl, Coord + ld bc, $707 + call ClearScreenArea + call Delay3 xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ld a, $91 + ld [$cee9], a + ld a, $1 + ld [H_WHOSETURN], a ; $fff3 + ld hl, Func_79793 + ld b, BANK(Func_79793) + call Bankswitch + ld d, $80 + call Func_704f3 +.asm_708f6 + ld c, $a + call DelayFrames + ld a, [rOBP1] ; $ff49 + sla a + sla a + ld [rOBP1], a ; $ff49 + jr nz, .asm_708f6 + call CleanLCD_OAM + call Func_7092a + ld b, $e4 +.asm_7090d + ld c, $a + call DelayFrames + ld a, [rOBP1] ; $ff49 + srl b + rra + srl b + rra + ld [rOBP1], a ; $ff49 + ld a, b + and a + jr nz, .asm_7090d + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call Delay3 + jp CleanLCD_OAM + +Func_7092a: ; 7092a (1c:492a) + ld de, $9000 + ld hl, $8000 + ld bc, $31 + call CopyVideoData + ld a, $10 + ld [W_BASECOORDY], a ; $d082 + ld a, $70 + ld [W_BASECOORDX], a ; $d081 + ld hl, wOAMBuffer + ld bc, $606 + ld d, $8 +.asm_70948 + push bc + ld a, [W_BASECOORDY] ; $d082 + ld e, a +.asm_7094d + ld a, e + add $8 + ld e, a ld [hli], a - dec a - ld [hl], a + ld a, [W_BASECOORDX] ; $d081 + ld [hli], a + ld a, d + ld [hli], a + ld a, $10 + ld [hli], a + inc d + dec c + jr nz, .asm_7094d + inc d + ld a, [W_BASECOORDX] ; $d081 + add $8 + ld [W_BASECOORDX], a ; $d081 + pop bc + dec b + jr nz, .asm_70948 ret -Func_73a84: ; 73a84 (1c:7a84) - ld hl, wWhichTrade ; $cd3d - push hl - ld a, $a - ld [$0], a +Func_7096d: ; 7096d (1c:496d) ld a, $1 - ld [$6000], a - ld a, $2 - ld [$4000], a - call Func_73ab8 - ld a, $3 - ld [$4000], a - call Func_73ab8 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call Delay3 + xor a + ld [$ffb0], a + dec a + ld [$cfcb], a + call DelayFrame + ld hl, $c102 + ld a, [H_DOWNARROWBLINKCNT2] ; $ff8c + ld c, a + ld b, $0 + ld de, $10 +.asm_70989 + ld a, [hl] + cp $ff + jr z, .asm_7098f + inc b +.asm_7098f + add hl, de + dec c + jr nz, .asm_70989 + ld hl, $c310 + ld c, $9 +.asm_70998 + ld a, b + swap a + cp l + jr z, .asm_709a9 + push hl + push bc + ld bc, $10 xor a - ld [$6000], a - ld [$0], a + call FillMemory + pop bc pop hl - ld a, [$d5a0] - and $7f - ld c, a - ld b, $0 +.asm_709a9 + ld de, $10 + add hl, de + dec c + jr nz, .asm_70998 + call Delay3 + call LoadBattleTransitionTile + ld bc, $0 + ld a, [W_ISLINKBATTLE] ; $d12b + cp $4 + jr z, .asm_709c9 + call Func_709e2 + call Func_709ef + call Func_70a19 +.asm_709c9 + ld hl, PointerTable_709d2 ; $49d2 add hl, bc - ld a, [W_NUMINBOX] ; $da80 - ld [hl], a - ret + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] -Func_73ab8: ; 73ab8 (1c:7ab8) - ld a, [$a000] - ld [hli], a - ld a, [$a462] - ld [hli], a - ld a, [$a8c4] - ld [hli], a - ld a, [$ad26] - ld [hli], a - ld a, [$b188] - ld [hli], a - ld a, [$b5ea] - ld [hli], a - ret +PointerTable_709d2: ; 709d2 (1c:49d2) + dw Func_70d24 + dw Func_70a72 + dw Func_70ce4 + dw Func_70a72 + dw Func_70cb4 + dw Func_70b7f + dw Func_70c7e + dw Func_70bca -SAVCheckRandomID: ;$7ad1 -;checks if Sav file is the same by checking player's name 1st letter ($a598) -; and the two random numbers generated at game beginning -;(which are stored at $d359-d35a) - ld a,$0a - ld [$0000],a - ld a,$01 - ld [$6000],a - ld [$4000],a - ld a,[$a598] - and a - jr z,.next - ld hl,$a598 - ld bc,$0f8b - call SAVCheckSum - ld c,a - ld a,[$b523] - cp c - jr nz,.next - ld hl,$a605 - ld a,[hli] - ld h,[hl] - ld l,a - ld a,[$d359] - cp l - jr nz,.next - ld a,[$d35a] - cp h -.next - ld a,$00 - ld [$6000],a - ld [$0000],a +Func_709e2: ; 709e2 (1c:49e2) + ld a, [W_CUROPPONENT] ; $d059 + cp $c8 + jr nc, .asm_709ec + res 0, c + ret +.asm_709ec + set 0, c ret -Func_73b0d: ; 73b0d (1c:7b0d) - ld a, [$d5a2] - dec a - cp $32 - jr nc, .asm_73b28 - ld hl, $a598 - ld bc, $60 - call AddNTimes - ld e, l - ld d, h - ld hl, $cc5b - ld bc, $60 - jr CopyToSRAM0 -.asm_73b28 - ld hl, $a5f8 - ld de, $a598 - ld bc, $1260 - call CopyToSRAM0 - ld hl, $cc5b - ld de, $b7f8 - ld bc, $60 - jr CopyToSRAM0 - -Func_73b3f: ; 73b3f (1c:7b3f) - ld hl, $a598 - ld bc, $60 - ld a, [wWhichTrade] ; $cd3d - call AddNTimes - ld de, $cc5b - ld bc, $60 - ; fallthrough -CopyToSRAM0: ; 73b51 (1c:7b51) - ld a, $a - ld [$0], a +Func_709ef: ; 709ef (1c:49ef) + ld hl, W_PARTYMON1_HP ; $d16c +.asm_709f2 + ld a, [hli] + or [hl] + jr nz, .asm_709fc + ld de, $2b + add hl, de + jr .asm_709f2 +.asm_709fc + ld de, $1f + add hl, de + ld a, [hl] + add $3 + ld e, a + ld a, [W_CURENEMYLVL] ; $d127 + sub e + jr nc, .asm_70a12 + res 1, c ld a, $1 - ld [$6000], a - xor a - ld [$4000], a - call CopyData + ld [$cd47], a + ret +.asm_70a12 + set 1, c xor a - ld [$6000], a - ld [$0], a + ld [$cd47], a ret -Func_73b6a: ; 73b6a (1c:7b6a) - ld a, $a - ld [$0], a - ld a, $1 - ld [$6000], a - xor a - call PadSRAM_FF - ld a, $1 - call PadSRAM_FF - ld a, $2 - call PadSRAM_FF - ld a, $3 - call PadSRAM_FF - xor a - ld [$6000], a - ld [$0], a +Func_70a19: ; 70a19 (1c:4a19) + ld a, [W_CURMAP] ; $d35e + ld e, a + ld hl, MapIDList_70a3f ; $4a3f +.asm_70a20 + ld a, [hli] + cp $ff + jr z, .asm_70a2b + cp e + jr nz, .asm_70a20 +.asm_70a28 + set 2, c + ret +.asm_70a2b + ld hl, MapIDList_70a44 ; $4a44 +.asm_70a2e + ld a, [hli] + cp $ff + jr z, .asm_70a3c + ld d, a + ld a, [hli] + cp e + jr c, .asm_70a2e + ld a, e + cp d + jr nc, .asm_70a28 +.asm_70a3c + res 2, c ret -PadSRAM_FF: ; 73b8f (1c:7b8f) - ld [$4000], a - ld hl, $a000 - ld bc, $2000 - ld a, $ff - jp FillMemory +; Func_70a19 checks if W_CURMAP is equal to one of these maps +MapIDList_70a3f: ; 70a3f (1c:4a3f) + db VIRIDIAN_FOREST + db ROCK_TUNNEL_1 + db SEAFOAM_ISLANDS_1 + db ROCK_TUNNEL_2 + db $FF -SECTION "bank1D",ROMX,BANK[$1D] +; Func_70a19 checks if W_CURMAP is in between or equal to each pair of maps +MapIDList_70a44: ; 70a44 (1c:4a44) + ; all MT_MOON maps + db MT_MOON_1 + db MT_MOON_3 -CopycatsHouse1FBlocks: ; 74000 (1d:4000) - INCBIN "maps/copycatshouse1f.blk" + ; all SS_ANNE maps, VICTORY_ROAD_1, LANCES_ROOM, and HALL_OF_FAME + db SS_ANNE_1 + db HALL_OF_FAME -CinnabarMartBlocks: ; 74010 (1d:4010) -PewterMartBlocks: ; 74010 (1d:4010) - INCBIN "maps/pewtermart.blk" + ; all POKEMONTOWER maps and Lavender Town buildings + db LAVENDER_POKECENTER + db LAVENDER_HOUSE_2 -FuchsiaHouse1Blocks: ; 74020 (1d:4020) - INCBIN "maps/fuchsiahouse1.blk" + ; all SILPH_CO, MANSION, SAFARI_ZONE, and UNKNOWN_DUNGEON maps, + ; except for SILPH_CO_1F + db SILPH_CO_2F + db UNKNOWN_DUNGEON_1 + db $FF -CinnabarPokecenterBlocks: ; 74030 (1d:4030) -FuchsiaPokecenterBlocks: ; 74030 (1d:4030) - INCBIN "maps/fuchsiapokecenter.blk" +LoadBattleTransitionTile: ; 70a4d (1c:4a4d) + ld hl, $8ff0 + ld de, BattleTransitionTile ; $4a59 + ld bc, (BANK(BattleTransitionTile) << 8) + $01 + jp CopyVideoData -CeruleanHouse2Blocks: ; 7404c (1d:404c) - INCBIN "maps/ceruleanhouse2.blk" +BattleTransitionTile: ; 70a59 (1c:4a59) + INCBIN "gfx/battle_transition.2bpp" -Func_7405c: ; 7405c (1d:405c) - ld b, BANK(Func_701a0) - ld hl, Func_701a0 - call Bankswitch - call ClearScreen - ld c, $64 - call DelayFrames - call DisableLCD - ld hl, $8800 - ld bc, $400 - call Func_74171 - ld hl, $9600 - ld bc, $100 - call Func_74171 - ld hl, $97e0 - ld bc, $10 - ld a, $ff - call FillMemory - ld hl, wTileMap - call Func_7417b - FuncCoord 0, 14 ; $c4b8 - ld hl, Coord - call Func_7417b - ld a, $c0 - ld [rBGP], a ; $ff47 - call EnableLCD +Func_70a69: ; 70a69 (1c:4a69) ld a, $ff - call PlaySoundWaitForCurrent - ld c, BANK(Music_Credits) - ld a, MUSIC_CREDITS - call PlayMusic - ld c, $80 - call DelayFrames - xor a - ld [wWhichTrade], a ; $cd3d - ld [$cd3e], a - jp Func_7418e - -Func_740ba: ; 740ba (1d:40ba) - ld hl, DataTable_74160 ; $4160 - ld b, $4 -.asm_740bf - ld a, [hli] ld [rBGP], a ; $ff47 - ld c, $5 - call DelayFrames - dec b - jr nz, .asm_740bf + ld [rOBP0], a ; $ff48 + ld [rOBP1], a ; $ff49 ret -DisplayCreditsMon: ; 740cb (1d:40cb) +Func_70a72: ; 70a72 (1c:4a72) + ld a, [$cd47] + and a + jr z, .asm_70a7d + call Func_70aaa + jr .asm_70a9f +.asm_70a7d + FuncCoord 10, 10 ; $c472 + ld hl, Coord + ld a, $3 + ld [$d09f], a + ld a, l + ld [$d09b], a + ld a, h + ld [$d09a], a + ld b, $78 +.asm_70a8f + ld c, $3 +.asm_70a91 + push bc + call Func_70af9 + pop bc + dec c + jr nz, .asm_70a91 + call DelayFrame + dec b + jr nz, .asm_70a8f +.asm_70a9f + call Func_70a69 xor a - ld [H_AUTOBGTRANSFERENABLED],a - call SaveScreenTilesToBuffer1 - call FillMiddleOfScreenWithWhite + ld [$d09b], a + ld [$d09a], a + ret - ; display the next monster from CreditsMons - ld hl,$CD3E - ld c,[hl] ; how many monsters have we displayed so far? - inc [hl] - ld b,0 - ld hl,CreditsMons - add hl,bc ; go that far in the list of monsters and get the next one - ld a,[hl] - ld [$CF91],a - ld [$D0B5],a - FuncCoord 8, 6 ; $c420 - ld hl,Coord - call GetMonHeader - call LoadFrontSpriteByMonIndex - ld hl,$980C - call Func_74164 - xor a - ld [H_AUTOBGTRANSFERENABLED],a - call LoadScreenTilesFromBuffer1 - ld hl,$9800 - call Func_74164 - ld a,$A7 - ld [$FF4B],a - ld hl,$9C00 - call Func_74164 - call FillMiddleOfScreenWithWhite - ld a,$FC - ld [$FF47],a - ld bc,7 -.next - call Func_74140 +Func_70aaa: ; 70aaa (1c:4aaa) + ld a, $7 + ld [wWhichTrade], a ; $cd3d + ld hl, wTileMap + ld c, $11 + ld de, $14 + call Func_70ae0 + inc c + jr .asm_70ac3 +.asm_70abd + ld de, $14 + call Func_70ae0 +.asm_70ac3 + inc c + ld de, $1 + call Func_70ae0 dec c - jr nz,.next - ld c,$14 -.next2 - call Func_74140 - ld a,[$FF4B] - sub 8 - ld [$FF4B],a dec c - jr nz,.next2 - xor a - ld [$FFB0],a - ld a,$C0 - ld [$FF47],a + ld de, $ffec + call Func_70ae0 + inc c + ld de, rIE ; $ffff + call Func_70ae0 + dec c + dec c + ld a, c + and a + jr nz, .asm_70abd ret -INCLUDE "data/credit_mons.asm" - -Func_74140: ; 74140 (1d:4140) - ld h, b - ld l, $20 - call Func_74152 - ld h, $0 - ld l, $70 - call Func_74152 - ld a, b - add $8 - ld b, a +Func_70ae0: ; 70ae0 (1c:4ae0) + push bc +.asm_70ae1 + ld [hl], $ff + add hl, de + push bc + ld a, [wWhichTrade] ; $cd3d + dec a + jr nz, .asm_70af0 + call Func_70d19 + ld a, $7 +.asm_70af0 + ld [wWhichTrade], a ; $cd3d + pop bc + dec c + jr nz, .asm_70ae1 + pop bc ret -Func_74152: ; 74152 (1d:4152) - ld a, [$ff44] - cp l - jr nz, Func_74152 +Func_70af9: ; 70af9 (1c:4af9) + ld bc, $ffec + ld de, $14 + ld a, [$d09b] + ld l, a + ld a, [$d09a] + ld h, a + ld a, [$d09f] + cp $0 + jr z, .asm_70b25 + cp $1 + jr z, .asm_70b2f + cp $2 + jr z, .asm_70b39 + cp $3 + jr z, .asm_70b43 +.asm_70b1a + ld [hl], $ff +.asm_70b1c + ld a, l + ld [$d09b], a ld a, h - ld [rSCX], a ; $ff43 -.asm_7415a - ld a, [$ff44] - cp h - jr z, .asm_7415a + ld [$d09a], a + ret +.asm_70b25 + dec hl + ld a, [hl] + cp $ff + jr nz, .asm_70b4d + inc hl + add hl, bc + jr .asm_70b1a +.asm_70b2f + add hl, de + ld a, [hl] + cp $ff + jr nz, .asm_70b4d + add hl, bc + dec hl + jr .asm_70b1a +.asm_70b39 + inc hl + ld a, [hl] + cp $ff + jr nz, .asm_70b4d + dec hl + add hl, de + jr .asm_70b1a +.asm_70b43 + add hl, bc + ld a, [hl] + cp $ff + jr nz, .asm_70b4d + add hl, de + inc hl + jr .asm_70b1a +.asm_70b4d + ld [hl], $ff + ld a, [$d09f] + inc a + cp $4 + jr nz, .asm_70b58 + xor a +.asm_70b58 + ld [$d09f], a + jr .asm_70b1c + +Func_70b5d: ; 70b5d (1c:4b5d) + ld hl, DataTable_70b72 ; $4b72 +.asm_70b60 + ld a, [hli] + cp $1 + jr z, .asm_70b6e + ld [rBGP], a ; $ff47 + ld c, $2 + call DelayFrames + jr .asm_70b60 +.asm_70b6e + dec b + jr nz, Func_70b5d ret -DataTable_74160: ; 74160 (1d:4160) - db $C0,$D0,$E0,$F0 +DataTable_70b72: ; 70b72 (1c:4b72) + db $F9,$FE,$FF,$FE,$F9,$E4,$90,$40,$00,$40,$90,$E4 + db $01 ; terminator -Func_74164: ; 74164 (1d:4164) - ld a, l - ld [H_AUTOBGTRANSFERDEST], a ; $ffbc - ld a, h - ld [$ffbd], a +Func_70b7f: ; 70b7f (1c:4b7f) + ld c, $9 +.asm_70b81 + push bc + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + FuncCoord 0, 7 ; $c42c + ld hl, Coord + FuncCoord 0, 8 ; $c440 + ld de, Coord + ld bc, $ffd8 + call Func_70c12 + FuncCoord 0, 10 ; $c468 + ld hl, Coord + FuncCoord 0, 9 ; $c454 + ld de, Coord + ld bc, $28 + call Func_70c12 + FuncCoord 8, 0 ; $c3a8 + ld hl, Coord + FuncCoord 9, 0 ; $c3a9 + ld de, Coord + ld bc, $fffe + call Func_70c3f + FuncCoord 11, 0 ; $c3ab + ld hl, Coord + FuncCoord 10, 0 ; $c3aa + ld de, Coord + ld bc, $2 + call Func_70c3f ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ; $ffba - jp Delay3 - -Func_74171: ; 74171 (1d:4171) - ld [hl], $0 - inc hl - inc hl - dec bc - ld a, b - or c - jr nz, Func_74171 - ret - -Func_7417b: ; 7417b (1d:417b) - ld bc, $50 - ld a, $7e - jp FillMemory + ld c, $6 + call DelayFrames + pop bc + dec c + jr nz, .asm_70b81 + call Func_70a69 + ld c, $a + jp DelayFrames -FillMiddleOfScreenWithWhite: ; 74183 (1d:4183) - FuncCoord 0, 4 ; $c3f0 +Func_70bca: ; 70bca (1c:4bca) + ld c, $9 + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba +.asm_70bcf + push bc + FuncCoord 0, 16 ; $c4e0 ld hl, Coord - ld bc, $c8 ; 10 rows of 20 tiles each - ld a, $7f ; blank white tile - jp FillMemory - -Func_7418e: ; 7418e (1d:418e) - ld de, CreditsOrder ; $4243 - push de -.asm_74192 - pop de - FuncCoord 9, 6 ; $c421 + FuncCoord 0, 17 ; $c4f4 + ld de, Coord + ld bc, $ffd8 + call Func_70c12 + FuncCoord 0, 1 ; $c3b4 ld hl, Coord - push hl - call FillMiddleOfScreenWithWhite - pop hl -.asm_7419b - ld a, [de] - inc de - push de - cp $ff - jr z, .asm_741d5 - cp $fe - jr z, .asm_741dc - cp $fd - jr z, .asm_741e6 - cp $fc - jr z, .asm_741ed - cp $fb - jr z, .asm_741f4 - cp $fa - jr z, .showTheEnd - push hl - push hl - ld hl, CreditsTextPointers ; $42c3 - add a - ld c, a - ld b, $0 - add hl, bc - ld e, [hl] - inc hl - ld d, [hl] - ld a, [de] - inc de - ld c, a - ld b, $ff - pop hl - add hl, bc - call PlaceString - pop hl + ld de, wTileMap ld bc, $28 - add hl, bc - pop de - jr .asm_7419b -.asm_741d5 - call Func_740ba - ld c, $5a - jr .asm_741de -.asm_741dc - ld c, $6e -.asm_741de - call DelayFrames - call DisplayCreditsMon - jr .asm_74192 -.asm_741e6 - call Func_740ba - ld c, $78 - jr .asm_741ef -.asm_741ed - ld c, $8c -.asm_741ef - call DelayFrames - jr .asm_74192 -.asm_741f4 - push de - ld b, BANK(Func_4541) - ld hl, Func_4541 - call Bankswitch - pop de - pop de - jr .asm_7419b -.showTheEnd - ld c, $10 - call DelayFrames - call FillMiddleOfScreenWithWhite - pop de - ld de, TheEndGfx - ld hl, $9600 - ld bc, (BANK(TheEndGfx) << 8) + $0a - call CopyVideoData - FuncCoord 4, 8 ; $c444 + call Func_70c12 + FuncCoord 18, 0 ; $c3b2 ld hl, Coord - ld de, UnnamedText_74229 ; $4229 - call PlaceString - FuncCoord 4, 9 ; $c458 + FuncCoord 19, 0 ; $c3b3 + ld de, Coord + ld bc, $fffe + call Func_70c3f + FuncCoord 1, 0 ; $c3a1 ld hl, Coord - inc de - call PlaceString - jp Func_740ba - -UnnamedText_74229: ; 74229 (1d:4229) - db $60," ",$62," ",$64," ",$64," ",$66," ",$68,"@" - db $61," ",$63," ",$65," ",$65," ",$67," ",$69,"@" - -CreditsOrder: ; 74243 (1d:4243) -; subsequent credits elements will be displayed on separate lines. -; $FF, $FE, $FD, $FC, $FB, and $FA are commands that are used -; to go to the next set of credits texts. - db CRED_MON, CRED_VERSION, $FF - db CRED_DIRECTOR, CRED_TAJIRI, $FF - db CRED_PROGRAMMERS, CRED_TA_OOTA, CRED_MORIMOTO, $FD - db CRED_PROGRAMMERS, CRED_WATANABE, CRED_MASUDE, CRED_TAMADA, $FE - db CRED_CHAR_DESIGN, CRED_SUGIMORI, CRED_NISHIDA, $FF - db CRED_MUSIC, CRED_MASUDE, $FD - db CRED_SOUND_EFFECTS, CRED_MASUDE, $FE - db CRED_GAME_DESIGN, CRED_TAJIRI, $FF - db CRED_MONSTER_DESIGN, CRED_SUGIMORI, CRED_NISHIDA, CRED_FUZIWARA, $FD - db CRED_MONSTER_DESIGN, CRED_MORIMOTO, CRED_SA_OOTA, CRED_YOSHIKAWA, $FE - db CRED_GAME_SCENE, CRED_TAJIRI, $FD - db CRED_GAME_SCENE, CRED_TANIGUCHI, CRED_NONOMURA, CRED_ZINNAI, $FE - db CRED_PARAM, CRED_NISINO, CRED_TA_NAKAMURA, $FF - db CRED_MAP, CRED_TAJIRI, CRED_NISINO, $FD - db CRED_MAP, CRED_MATSUSIMA, CRED_NONOMURA, CRED_TANIGUCHI, $FE - db CRED_TEST, CRED_KAKEI, CRED_TSUCHIYA, $FD - db CRED_TEST, CRED_TA_NAKAMURA, CRED_YUDA, $FE - db CRED_SPECIAL, CRED_HISHIDA, CRED_SAKAI, $FD - db CRED_SPECIAL, CRED_YAMAGUCHI, CRED_YAMAMOTO, $FC - db CRED_SPECIAL, CRED_TOMISAWA, CRED_KAWAMOTO, CRED_TO_OOTA, $FE - db CRED_PRODUCERS, CRED_MIYAMOTO, $FD - db CRED_PRODUCERS, CRED_KAWAGUCHI, $FC - db CRED_PRODUCERS, CRED_ISHIHARA, $FE - db CRED_US_STAFF, $FD - db CRED_US_COORD, CRED_TILDEN, $FD - db CRED_US_COORD, CRED_KAWAKAMI, CRED_HI_NAKAMURA, $FC - db CRED_US_COORD, CRED_GIESE, CRED_OSBORNE, $FC - db CRED_TRANS, CRED_OGASAWARA, $FD - db CRED_PROGRAMMERS, CRED_MURAKAWA, CRED_FUKUI, $FD - db CRED_SPECIAL, CRED_IWATA, $FD - db CRED_SPECIAL, CRED_HARADA, $FC - db CRED_TEST, CRED_PAAD, CRED_CLUB, $FD - db CRED_PRODUCER, CRED_IZUSHI, $FD - db CRED_EXECUTIVE, CRED_YAMAUCHI, $FF - db $FB, $FF, $FA - - -CreditsTextPointers: ; 742c3 (1d:42c3) - dw CredVersion - dw CredTajiri - dw CredTaOota - dw CredMorimoto - dw CredWatanabe - dw CredMasuda - dw CredNisino - dw CredSugimori - dw CredNishida - dw CredMiyamoto - dw CredKawaguchi - dw CredIshihara - dw CredYamauchi - dw CredZinnai - dw CredHishida - dw CredSakai - dw CredYamaguchi - dw CredYamamoto - dw CredTaniguchi - dw CredNonomura - dw CredFuziwara - dw CredMatsusima - dw CredTomisawa - dw CredKawamoto - dw CredKakei - dw CredTsuchiya - dw CredTaNakamura - dw CredYuda - dw CredMon - dw CredDirector - dw CredProgrammers - dw CredCharDesign - dw CredMusic - dw CredSoundEffects - dw CredGameDesign - dw CredMonsterDesign - dw CredGameScene - dw CredParam - dw CredMap - dw CredTest - dw CredSpecial - dw CredProducers - dw CredProducer - dw CredExecutive - dw CredTamada - dw CredSaOota - dw CredYoshikawa - dw CredToOota - dw CredUSStaff - dw CredUSCoord - dw CredTilden - dw CredKawakami - dw CredHiNakamura - dw CredGiese - dw CredOsborne - dw CredTrans - dw CredOgasawara - dw CredIwata - dw CredIzushi - dw CredHarada - dw CredMurakawa - dw CredFukui - dw CredClub - dw CredPAAD - -CredVersion: ; 74343 (1d:4343) ; this 1 byte difference makes all bank addresses offset by 1 in the blue version -IF _RED - db -8, "RED VERSION STAFF@" -ENDC -IF _BLUE - db -8, "BLUE VERSION STAFF@" -ENDC -CredTajiri: ; 74356 (1d:4356) - db -6, "SATOSHI TAJIRI@" -CredTaOota: ; 74366 (1d:4366) - db -6, "TAKENORI OOTA@" -CredMorimoto: ; 74375 (1d:4375) - db -7, "SHIGEKI MORIMOTO@" -CredWatanabe: ; 74387 (1d:4387) - db -7, "TETSUYA WATANABE@" -CredMasuda: ; 74399 (1d:4399) - db -6, "JUNICHI MASUDA@" -CredNisino: ; 743a9 (1d:43a9) - db -5, "KOHJI NISINO@" -CredSugimori: ; 743b7 (1d:43b7) - db -5, "KEN SUGIMORI@" -CredNishida: ; 743c5 (1d:43c5) - db -6, "ATSUKO NISHIDA@" -CredMiyamoto: ; 743d5 (1d:43d5) - db -7, "SHIGERU MIYAMOTO@" -CredKawaguchi: ; 743e7 (1d:43e7) - db -8, "TAKASHI KAWAGUCHI@" -CredIshihara: ; 743fa (1d:43fa) - db -8, "TSUNEKAZU ISHIHARA@" -CredYamauchi: ; 7440e (1d:440e) - db -7, "HIROSHI YAMAUCHI@" -CredZinnai: ; 74420 (1d:4420) - db -7, "HIROYUKI ZINNAI@" -CredHishida: ; 74431 (1d:4431) - db -7, "TATSUYA HISHIDA@" -CredSakai: ; 74442 (1d:4442) - db -6, "YASUHIRO SAKAI@" -CredYamaguchi: ; 74452 (1d:4452) - db -7, "WATARU YAMAGUCHI@" -CredYamamoto: ; 74464 (1d:4464) - db -8, "KAZUYUKI YAMAMOTO@" -CredTaniguchi: ; 74477 (1d:4477) - db -8, "RYOHSUKE TANIGUCHI@" -CredNonomura: ; 7448b (1d:448b) - db -8, "FUMIHIRO NONOMURA@" -CredFuziwara: ; 7449e (1d:449e) - db -7, "MOTOFUMI FUZIWARA@" -CredMatsusima: ; 744b1 (1d:44b1) - db -7, "KENJI MATSUSIMA@" -CredTomisawa: ; 744c2 (1d:44c2) - db -7, "AKIHITO TOMISAWA@" -CredKawamoto: ; 744d4 (1d:44d4) - db -7, "HIROSHI KAWAMOTO@" -CredKakei: ; 744e6 (1d:44e6) - db -6, "AKIYOSHI KAKEI@" -CredTsuchiya: ; 744f6 (1d:44f6) - db -7, "KAZUKI TSUCHIYA@" -CredTaNakamura: ; 74507 (1d:4507) - db -6, "TAKEO NAKAMURA@" -CredYuda: ; 74517 (1d:4517) - db -6, "MASAMITSU YUDA@" -CredMon: ; 74527 (1d:4527) - db -3, "#MON@" -CredDirector: ; 7452d (1d:452d) - db -3, "DIRECTOR@" -CredProgrammers: ; 74537 (1d:4537) - db -5, "PROGRAMMERS@" -CredCharDesign: ; 74544 (1d:4544) - db -7, "CHARACTER DESIGN@" -CredMusic: ; 74556 (1d:4556) - db -2, "MUSIC@" -CredSoundEffects: ; 7455d (1d:455d) - db -6, "SOUND EFFECTS@" -CredGameDesign: ; 7456c (1d:456c) - db -5, "GAME DESIGN@" -CredMonsterDesign: ; 74579 (1d:4579) - db -6, "MONSTER DESIGN@" -CredGameScene: ; 74589 (1d:4589) - db -6, "GAME SCENARIO@" -CredParam: ; 74598 (1d:4598) - db -8, "PARAMETRIC DESIGN@" -CredMap: ; 745ab (1d:45ab) - db -4, "MAP DESIGN@" -CredTest: ; 745b7 (1d:45b7) - db -7, "PRODUCT TESTING@" -CredSpecial: ; 745c8 (1d:45c8) - db -6, "SPECIAL THANKS@" -CredProducers: ; 745d8 (1d:45d8) - db -4, "PRODUCERS@" -CredProducer: ; 745e3 (1d:45e3) - db -4, "PRODUCER@" -CredExecutive: ; 745ed (1d:45ed) - db -8, "EXECUTIVE PRODUCER@" -CredTamada: ; 74601 (1d:4601) - db -6, "SOUSUKE TAMADA@" -CredSaOota: ; 74611 (1d:4611) - db -5, "SATOSHI OOTA@" -CredYoshikawa: ; 7461f (1d:461f) - db -6, "RENA YOSHIKAWA@" -CredToOota: ; 7462f (1d:462f) - db -6, "TOMOMICHI OOTA@" -CredUSStaff: ; 7463f (1d:463f) - db -7, "US VERSION STAFF@" -CredUSCoord: ; 74651 (1d:4651) - db -7, "US COORDINATION@" -CredTilden: ; 74662 (1d:4662) - db -5, "GAIL TILDEN@" -CredKawakami: ; 7466f (1d:466f) - db -6, "NAOKO KAWAKAMI@" -CredHiNakamura: ; 7467f (1d:467f) - db -6, "HIRO NAKAMURA@" -CredGiese: ; 7468e (1d:468e) - db -6, "WILLIAM GIESE@" -CredOsborne: ; 7469d (1d:469d) - db -5, "SARA OSBORNE@" -CredTrans: ; 746ab (1d:46ab) - db -7, "TEXT TRANSLATION@" -CredOgasawara: ; 746bd (1d:46bd) - db -6, "NOB OGASAWARA@" -CredIwata: ; 746cc (1d:46cc) - db -5, "SATORU IWATA@" -CredIzushi: ; 746da (1d:46da) - db -7, "TAKEHIRO IZUSHI@" -CredHarada: ; 746eb (1d:46eb) - db -7, "TAKAHIRO HARADA@" -CredMurakawa: ; 746fc (1d:46fc) - db -7, "TERUKI MURAKAWA@" -CredFukui: ; 7470d (1d:470d) - db -5, "KOHTA FUKUI@" -CredClub: ; 7471a (1d:471a) - db -9, "NCL SUPER MARIO CLUB@" -CredPAAD: ; 74730 (1d:4730) - db -5, "PAAD TESTING@" - -TheEndGfx: ; 7473e (1d:473e) ; 473E (473F on blue) - INCBIN "gfx/theend.w40.interleave.2bpp" + ld de, wTileMap + ld bc, $2 + call Func_70c3f + call Func_70d19 + call Delay3 + pop bc + dec c + jr nz, .asm_70bcf + call Func_70a69 + ld c, $a + jp DelayFrames -PrintStatusAilment: ; 747de (1d:47de) - ld a, [de] - bit 3, a - jr nz, .psn - bit 4, a - jr nz, .brn - bit 5, a - jr nz, .frz - bit 6, a - jr nz, .par - and $7 ; slp - ret z - ld a, "S" - ld [hli], a - ld a, "L" - ld [hli], a - ld [hl], "P" - ret -.psn - ld a, "P" - ld [hli], a - ld a, "S" - ld [hli], a - ld [hl], "N" - ret -.brn - ld a, "B" - ld [hli], a - ld a, "R" - ld [hli], a - ld [hl], "N" - ret -.frz - ld a, "F" - ld [hli], a - ld a, "R" - ld [hli], a - ld [hl], "Z" - ret -.par - ld a, "P" - ld [hli], a - ld a, "A" +Func_70c12: ; 70c12 (1c:4c12) + ld a, c + ld [wWhichTrade], a ; $cd3d + ld a, b + ld [$cd3e], a + ld c, $8 +.asm_70c1c + push bc + push hl + push de + ld bc, $14 + call CopyData + pop hl + pop de + ld a, [wWhichTrade] ; $cd3d + ld c, a + ld a, [$cd3e] + ld b, a + add hl, bc + pop bc + dec c + jr nz, .asm_70c1c + ld l, e + ld h, d + ld a, $ff + ld c, $14 +.asm_70c3a ld [hli], a - ld [hl], "R" + dec c + jr nz, .asm_70c3a ret -HiddenItemNear: ; 7481f (1d:481f) - ld hl, HiddenItemCoords - ld b, $0 -.asm_74824 - ld de, $0003 - ld a, [W_CURMAP] - call IsInArrayCummulativeCount - ret nc ; return if current map has no hidden items +Func_70c3f: ; 70c3f (1c:4c3f) + ld a, c + ld [wWhichTrade], a ; $cd3d + ld a, b + ld [$cd3e], a + ld c, $9 +.asm_70c49 push bc push hl - ld hl, $d6f0 - ld c, b - ld b, $2 - ld a, $10 - call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) - ld a, c + push de + ld c, $12 +.asm_70c4e + ld a, [hl] + ld [de], a + ld a, e + add $14 + jr nc, .asm_70c56 + inc d +.asm_70c56 + ld e, a + ld a, l + add $14 + jr nc, .asm_70c5d + inc h +.asm_70c5d + ld l, a + dec c + jr nz, .asm_70c4e pop hl + pop de + ld a, [wWhichTrade] ; $cd3d + ld c, a + ld a, [$cd3e] + ld b, a + add hl, bc pop bc - inc b - and a - inc hl - ld d, [hl] - inc hl - ld e, [hl] - inc hl - jr nz, .asm_74824 ; 0x74845 $dd - ld a, [W_YCOORD] - call Func_7486b - cp d - jr nc, .asm_74824 ; 0x7484e $d4 - ld a, [W_YCOORD] - add $4 - cp d - jr c, .asm_74824 ; 0x74856 $cc - ld a, [W_XCOORD] - call Func_7486b - cp e - jr nc, .asm_74824 ; 0x7485f $c3 - ld a, [W_XCOORD] - add $5 - cp e - jr c, .asm_74824 ; 0x74867 $bb - scf + dec c + jr nz, .asm_70c49 + ld l, e + ld h, d + ld de, $14 + ld c, $12 +.asm_70c77 + ld [hl], $ff + add hl, de + dec c + jr nz, .asm_70c77 ret -Func_7486b: ; 7486b (1d:486b) - sub $5 - cp $f0 - ret c +Func_70c7e: ; 70c7e (1c:4c7e) + ld c, $12 + ld hl, wTileMap + FuncCoord 1, 17 ; $c4f5 + ld de, Coord xor a - ret + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba +.asm_70c89 + push bc + push hl + push de + push de + call Func_70caa + pop hl + call Func_70caa + call Func_70d19 + pop hl + ld bc, $ffec + add hl, bc + ld e, l + ld d, h + pop hl + ld bc, $14 + add hl, bc + pop bc + dec c + jr nz, .asm_70c89 + jp Func_70a69 -Func_74872: ; 74872 (1d:4872) -; code similar to this appears in a lot of banks; this particular -; one is called after you beat the Rocket that gives you TM28 DIG. -; the screen then fades out, he disappears, and fades back in - call GBFadeIn1 - ld a, $07 - ld [$CC4D], a - ld a, $15 - call Predef - ld a, $09 - ld [$CC4D], a - ld a, $11 - call Predef - ld a, $06 - ld [$CC4D], a - ld a, $11 - call Predef - call GBFadeOut1 +Func_70caa: ; 70caa (1c:4caa) + ld c, $a +.asm_70cac + ld [hl], $ff + inc hl + inc hl + dec c + jr nz, .asm_70cac ret -INCLUDE "data/mapHeaders/viridiangym.asm" +Func_70cb4: ; 70cb4 (1c:4cb4) + ld c, $14 + ld hl, wTileMap + FuncCoord 19, 1 ; $c3c7 + ld de, Coord + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba +.asm_70cbf + push bc + push hl + push de + push de + call Func_70cd8 + pop hl + call Func_70cd8 + call Func_70d19 + pop de + pop hl + pop bc + inc hl + dec de + dec c + jr nz, .asm_70cbf + jp Func_70a69 -ViridianGymScript: ; 748a3 (1d:48a3) - ld hl, Gym8CityName - ld de, Gym8LeaderName - call LoadGymLeaderAndCityName - call EnableAutoTextBoxDrawing - ld hl, ViridianGymTrainerHeaders - ld de, ViridianGymScriptPointers - ld a, [W_VIRIDIANGYMCURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_VIRIDIANGYMCURSCRIPT], a +Func_70cd8: ; 70cd8 (1c:4cd8) + ld c, $9 + ld de, $28 +.asm_70cdd + ld [hl], $ff + add hl, de + dec c + jr nz, .asm_70cdd ret -Gym8CityName: ; 748bf (1d:48bf) - db "VIRIDIAN CITY@" -Gym8LeaderName: ; 748cd (1d:48cd) - db "GIOVANNI@" +Func_70ce4: ; 70ce4 (1c:4ce4) + call Func_70cfd + ld bc, $000a + ld hl, Unknown_70d61 + call Func_70d06 + ld c, $a + ld b, $1 + ld hl, Unknown_70d93 + call Func_70d06 + jp Func_70a69 -Func_748d6: ; 748d6 (1d:48d6) +Func_70cfd: ; 70cfd (1c:4cfd) + ld b, $3 + call Func_70b5d xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_VIRIDIANGYMCURSCRIPT], a - ld [W_CURMAPSCRIPT], a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba ret -ViridianGymScriptPointers: ; 748e1 (1d:48e1) - dw ViridianGymScript0 - dw Func_324c - dw EndTrainerBattle - dw ViridianGymScript3 - dw ViridianGymScript4 - -ViridianGymScript0: ; 748eb (1d:48eb) - ld a, [W_YCOORD] ; $d361 - ld b, a - ld a, [W_XCOORD] ; $d362 - ld c, a - ld hl, ViridianGymArrowTilePlayerMovement - call Func_3442 - cp $ff - jp z, CheckFightingMapTrainers - call Func_3486 - ld hl, $d736 - set 7, [hl] - ld a, (SFX_02_52 - SFX_Headers_02) / 3 - call PlaySound - ld a, $ff - ld [wJoypadForbiddenButtonsMask], a - ld a, $4 - ld [W_CURMAPSCRIPT], a +Func_70d06: ; 70d06 (1c:4d06) + push bc + push hl + ld a, b + call Func_70d50 + pop hl + ld bc, $0005 + add hl, bc + call Func_70d19 + pop bc + dec c + jr nz, Func_70d06 ret -;format: -;db y,x -;dw pointer to movement -ViridianGymArrowTilePlayerMovement: ; 74916 (1d:4916) - db $b,$13 - dw ViridianGymArrowMovement1 - db $1,$13 - dw ViridianGymArrowMovement2 - db $2,$12 - dw ViridianGymArrowMovement3 - db $2,$b - dw ViridianGymArrowMovement4 - db $a,$10 - dw ViridianGymArrowMovement5 - db $6,$4 - dw ViridianGymArrowMovement6 - db $d,$5 - dw ViridianGymArrowMovement7 - db $e,$4 - dw ViridianGymArrowMovement8 - db $f,$0 - dw ViridianGymArrowMovement9 - db $f,$1 - dw ViridianGymArrowMovement10 - db $10,$d - dw ViridianGymArrowMovement11 - db $11,$d - dw ViridianGymArrowMovement12 - db $FF - -;format: direction, count -;right: $10 -;left: $20 -;up: $40 -;down: $80 -ViridianGymArrowMovement1: ; 74947 (1d:4947) - db $40,$09,$FF - -ViridianGymArrowMovement2: ; 7494a (1d:494a) - db $20,$08,$FF - -ViridianGymArrowMovement3: ; 7494d (1d:494d) - db $80,$09,$FF - -ViridianGymArrowMovement4: ; 74950 (1d:4950) - db $10,$06,$FF - -ViridianGymArrowMovement5: ; 74953 (1d:4953) - db $80,$02,$FF - -ViridianGymArrowMovement6: ; 74956 (1d:4956) - db $80,$07,$FF - -ViridianGymArrowMovement7: ; 74959 (1d:4959) - db $10,$08,$FF - -ViridianGymArrowMovement8: ; 7495c (1d:495c) - db $10,$09,$FF - -ViridianGymArrowMovement9: ; 7495f (1d:495f) - db $40,$08,$FF - -ViridianGymArrowMovement10: ; 74962 (1d:4962) - db $40,$06,$FF - -ViridianGymArrowMovement11: ; 74965 (1d:4965) - db $20,$06,$FF - -ViridianGymArrowMovement12: ; 74968 (1d:4968) - db $20,$0C,$FF - -ViridianGymScript4: ; 7496b (1d:496b) - ld a, [$cd38] - and a - jr nz, .asm_74980 +Func_70d19: ; 70d19 (1c:4d19) + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + call Delay3 xor a - ld [wJoypadForbiddenButtonsMask], a - ld hl, $d736 - res 7, [hl] - ld a, $0 - ld [W_CURMAPSCRIPT], a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba ret -.asm_74980 - ld b, BANK(LoadSpinnerArrowTiles) - ld hl, LoadSpinnerArrowTiles - jp Bankswitch - -ViridianGymScript3: ; 74988 (1d:4988) - ld a, [W_ISINBATTLE] ; $d057 - cp $ff - jp z, Func_748d6 - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a -ViridianGymScript3_74995: ; 74995 (1d:4995) - ld a, $c - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld hl, $d751 - set 1, [hl] - ld bc, (TM_27 << 8) | 1 - call GiveItem - jr nc, .BagFull - ld a, $d - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld hl, $d751 - set 0, [hl] - jr .asm_749be -.BagFull - ld a, $e - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID -.asm_749be - ld hl, W_OBTAINEDBADGES - set 7, [hl] - ld hl, $d72a - set 7, [hl] - - ; deactivate gym trainers - ld a, [$d751] - or %11111100 - ld [$d751], a - ld a, [$d752] - or %00000011 - ld [$d752], a - - ld a, $23 - ld [$cc4d], a - ld a, $15 - call Predef ; indirect jump to AddMissableObject (f1c8 (3:71c8)) - ld hl, $d7eb - set 1, [hl] - set 7, [hl] - jp Func_748d6 - -ViridianGymTextPointers: ; 749ec (1d:49ec) - dw ViridianGymText1 - dw ViridianGymText2 - dw ViridianGymText3 - dw ViridianGymText4 - dw ViridianGymText5 - dw ViridianGymText6 - dw ViridianGymText7 - dw ViridianGymText8 - dw ViridianGymText9 - dw ViridianGymText10 - dw Predef5CText - dw ViridianGymText12 - dw ViridianGymText13 - dw ViridianGymText14 - -ViridianGymTrainerHeaders: ; 74a08 (1d:4a08) -ViridianGymTrainerHeader0: ; 74a08 (1d:4a08) - db $2 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d751 ; flag's byte - dw ViridianGymBattleText1 ; 0x4afd TextBeforeBattle - dw ViridianGymAfterBattleText1 ; 0x4b07 TextAfterBattle - dw ViridianGymEndBattleText1 ; 0x4b02 TextEndBattle - dw ViridianGymEndBattleText1 ; 0x4b02 TextEndBattle - -ViridianGymTrainerHeader1: ; 74a14 (1d:4a14) - db $3 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d751 ; flag's byte - dw ViridianGymBattleText2 ; 0x4b16 TextBeforeBattle - dw ViridianGymAfterBattleText2 ; 0x4b20 TextAfterBattle - dw ViridianGymEndBattleText2 ; 0x4b1b TextEndBattle - dw ViridianGymEndBattleText2 ; 0x4b1b TextEndBattle - -ViridianGymTrainerHeader2: ; 74a20 (1d:4a20) - db $4 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d751 ; flag's byte - dw ViridianGymBattleText3 ; 0x4b2f TextBeforeBattle - dw ViridianGymAfterBattleText3 ; 0x4b39 TextAfterBattle - dw ViridianGymEndBattleText3 ; 0x4b34 TextEndBattle - dw ViridianGymEndBattleText3 ; 0x4b34 TextEndBattle - -ViridianGymTrainerHeader3: ; 74a2c (1d:4a2c) - db $5 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d751 ; flag's byte - dw ViridianGymBattleText4 ; 0x4b48 TextBeforeBattle - dw ViridianGymAfterBattleText4 ; 0x4b52 TextAfterBattle - dw ViridianGymEndBattleText4 ; 0x4b4d TextEndBattle - dw ViridianGymEndBattleText4 ; 0x4b4d TextEndBattle - -ViridianGymTrainerHeader4: ; 74a38 (1d:4a38) - db $6 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d751 ; flag's byte - dw ViridianGymBattleText5 ; 0x4b61 TextBeforeBattle - dw ViridianGymAfterBattleText5 ; 0x4b6b TextAfterBattle - dw ViridianGymEndBattleText5 ; 0x4b66 TextEndBattle - dw ViridianGymEndBattleText5 ; 0x4b66 TextEndBattle - -ViridianGymTrainerHeader5: ; 74a44 (1d:4a44) - db $7 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d751 ; flag's byte - dw ViridianGymBattleText6 ; 0x4b7a TextBeforeBattle - dw ViridianGymAfterBattleText6 ; 0x4b84 TextAfterBattle - dw ViridianGymEndBattleText6 ; 0x4b7f TextEndBattle - dw ViridianGymEndBattleText6 ; 0x4b7f TextEndBattle - -ViridianGymTrainerHeader6: ; 74a50 (1d:4a50) - db $8 ; flag's bit - db ($3 << 4) ; trainer's view range - dw $d751 ; flag's byte - dw ViridianGymBattleText7 ; 0x4b93 TextBeforeBattle - dw ViridianGymAfterBattleText7 ; 0x4b9d TextAfterBattle - dw ViridianGymEndBattleText7 ; 0x4b98 TextEndBattle - dw ViridianGymEndBattleText7 ; 0x4b98 TextEndBattle - -ViridianGymTrainerHeader7: ; 74a5c (1d:4a5c) - db $9 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d751 ; flag's byte - dw ViridianGymBattleText8 ; 0x4bac TextBeforeBattle - dw ViridianGymAfterBattleText8 ; 0x4bb6 TextAfterBattle - dw ViridianGymEndBattleText8 ; 0x4bb1 TextEndBattle - dw ViridianGymEndBattleText8 ; 0x4bb1 TextEndBattle - - db $ff -ViridianGymText1: ; 74a69 (1d:4a69) - db $08 ; asm - ld a, [$d751] - bit 1, a - jr z, .asm_6de66 ; 0x74a6f - bit 0, a - jr nz, .asm_9fc95 ; 0x74a73 - call z, ViridianGymScript3_74995 - call DisableWaitingAfterTextDisplay - jr .asm_6dff7 ; 0x74a7b -.asm_9fc95 ; 0x74a7d +Func_70d24: ; 70d24 (1c:4d24) + call Func_70cfd + ld c, $a + ld hl, Unknown_70d61 ; $4d61 + ld de, Unknown_70d93 ; $4d93 +.asm_70d2f + push bc + push hl + push de + push de + xor a + call Func_70d50 + pop hl ld a, $1 - ld [$cc3c], a - ld hl, UnnamedText_74ad9 - call PrintText - call GBFadeIn1 - ld a, $32 - ld [$cc4d], a - ld a, $11 - call Predef - call UpdateSprites - call Delay3 - call GBFadeOut1 - jr .asm_6dff7 ; 0x74a9e -.asm_6de66 ; 0x74aa0 - ld hl, UnnamedText_74ace - call PrintText - ld hl, $d72d - set 6, [hl] - set 7, [hl] - ld hl, UnnamedText_74ad3 - ld de, UnnamedText_74ad3 - call PreBattleSaveRegisters - ldh a, [$8c] - ld [$cf13], a - call EngageMapTrainer - call InitBattleEnemyParameters - ld a, $8 - ld [$d05c], a - ld a, $3 - ld [W_VIRIDIANGYMCURSCRIPT], a -.asm_6dff7 ; 0x74acb - jp TextScriptEnd - -UnnamedText_74ace: ; 74ace (1d:4ace) - TX_FAR _UnnamedText_74ace - db "@" - -UnnamedText_74ad3: ; 74ad3 (1d:4ad3) - TX_FAR _UnnamedText_74ad3 - db $0b, "@" - -UnnamedText_74ad9: ; 74ad9 (1d:4ad9) - TX_FAR _UnnamedText_74ad9 - db $0d, "@" - -ViridianGymText12: ; 74adf (1d:4adf) - TX_FAR _ViridianGymText12 - db "@" - -ViridianGymText13: ; 74ae4 (1d:4ae4) - TX_FAR _ReceivedTM27Text - db $0b - -TM27ExplanationText: ; 74ae9 (1d:4ae9) - TX_FAR _TM27ExplanationText - db "@" - -ViridianGymText14: ; 74aee (1d:4aee) - TX_FAR _TM27NoRoomText - db "@" - -ViridianGymText2: ; 74af3 (1d:4af3) - db $08 ; asm - ld hl, ViridianGymTrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -ViridianGymBattleText1: ; 74afd (1d:4afd) - TX_FAR _ViridianGymBattleText1 - db "@" - -ViridianGymEndBattleText1: ; 74b02 (1d:4b02) - TX_FAR _ViridianGymEndBattleText1 - db "@" + call Func_70d50 + pop hl + ld bc, $5 + add hl, bc + ld e, l + ld d, h + pop hl + add hl, bc + call Func_70d19 + pop bc + dec c + jr nz, .asm_70d2f + jp Func_70a69 -ViridianGymAfterBattleText1: ; 74b07 (1d:4b07) - TX_FAR _ViridianGymAfterBattleText1 - db "@" +Func_70d50: ; 70d50 (1c:4d50) + ld [wWhichTrade], a ; $cd3d + ld a, [hli] + ld [$cd3e], a + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld h, [hl] + ld l, a + jp Func_70dc5 -ViridianGymText3: ; 74b0c (1d:4b0c) - db $08 ; asm - ld hl, ViridianGymTrainerHeader1 - call TalkToTrainer - jp TextScriptEnd +Unknown_70d61: ; 70d61 (1c:4d61) + db $01 + dw Unknown_70dfe + FuncCoord 18, 6 + dw Coord -ViridianGymBattleText2: ; 74b16 (1d:4b16) - TX_FAR _ViridianGymBattleText2 - db "@" + db $01 + dw Unknown_70e04 + FuncCoord 19, 3 + dw Coord -ViridianGymEndBattleText2: ; 74b1b (1d:4b1b) - TX_FAR _ViridianGymEndBattleText2 - db "@" + db $01 + dw Unknown_70e0e + FuncCoord 18, 0 + dw Coord -ViridianGymAfterBattleText2: ; 74b20 (1d:4b20) - TX_FAR _ViridianGymAfterBattleText2 - db "@" + db $01 + dw Unknown_70e20 + FuncCoord 14, 0 + dw Coord -ViridianGymText4: ; 74b25 (1d:4b25) - db $08 ; asm - ld hl, ViridianGymTrainerHeader2 - call TalkToTrainer - jp TextScriptEnd + db $01 + dw Unknown_70e2e + FuncCoord 10, 0 + dw Coord -ViridianGymBattleText3: ; 74b2f (1d:4b2f) - TX_FAR _ViridianGymBattleText3 - db "@" + db $00 + dw Unknown_70e2e + FuncCoord 9, 0 + dw Coord -ViridianGymEndBattleText3: ; 74b34 (1d:4b34) - TX_FAR _ViridianGymEndBattleText3 - db "@" + db $00 + dw Unknown_70e20 + FuncCoord 5, 0 + dw Coord -ViridianGymAfterBattleText3: ; 74b39 (1d:4b39) - TX_FAR _ViridianGymAfterBattleText3 - db "@" + db $00 + dw Unknown_70e0e + FuncCoord 1, 0 + dw Coord -ViridianGymText5: ; 74b3e (1d:4b3e) - db $08 ; asm - ld hl, ViridianGymTrainerHeader3 - call TalkToTrainer - jp TextScriptEnd + db $00 + dw Unknown_70e04 + FuncCoord 0, 3 + dw Coord -ViridianGymBattleText4: ; 74b48 (1d:4b48) - TX_FAR _ViridianGymBattleText4 - db "@" + db $00 + dw Unknown_70dfe + FuncCoord 1, 6 + dw Coord -ViridianGymEndBattleText4: ; 74b4d (1d:4b4d) - TX_FAR _ViridianGymEndBattleText4 - db "@" +Unknown_70d93: ; 70d93 (1c:4d93) + db $00 + dw Unknown_70dfe + FuncCoord 1, 11 + dw Coord -ViridianGymAfterBattleText4: ; 74b52 (1d:4b52) - TX_FAR _ViridianGymAfterBattleText4 - db "@" + db $00 + dw Unknown_70e04 + FuncCoord 0, 14 + dw Coord -ViridianGymText6: ; 74b57 (1d:4b57) - db $08 ; asm - ld hl, ViridianGymTrainerHeader4 - call TalkToTrainer - jp TextScriptEnd + db $00 + dw Unknown_70e0e + FuncCoord 1, 17 + dw Coord -ViridianGymBattleText5: ; 74b61 (1d:4b61) - TX_FAR _ViridianGymBattleText5 - db "@" + db $00 + dw Unknown_70e20 + FuncCoord 5, 17 + dw Coord -ViridianGymEndBattleText5: ; 74b66 (1d:4b66) - TX_FAR _ViridianGymEndBattleText5 - db "@" + db $00 + dw Unknown_70e2e + FuncCoord 9, 17 + dw Coord -ViridianGymAfterBattleText5: ; 74b6b (1d:4b6b) - TX_FAR _ViridianGymAfterBattleText5 - db "@" + db $01 + dw Unknown_70e2e + FuncCoord 10, 17 + dw Coord -ViridianGymText7: ; 74b70 (1d:4b70) - db $08 ; asm - ld hl, ViridianGymTrainerHeader5 - call TalkToTrainer - jp TextScriptEnd + db $01 + dw Unknown_70e20 + FuncCoord 14, 17 + dw Coord -ViridianGymBattleText6: ; 74b7a (1d:4b7a) - TX_FAR _ViridianGymBattleText6 - db "@" + db $01 + dw Unknown_70e0e + FuncCoord 18, 17 + dw Coord -ViridianGymEndBattleText6: ; 74b7f (1d:4b7f) - TX_FAR _ViridianGymEndBattleText6 - db "@" + db $01 + dw Unknown_70e04 + FuncCoord 19, 14 + dw Coord -ViridianGymAfterBattleText6: ; 74b84 (1d:4b84) - TX_FAR _ViridianGymAfterBattleText6 - db "@" + db $01 + dw Unknown_70dfe + FuncCoord 18, 11 + dw Coord -ViridianGymText8: ; 74b89 (1d:4b89) - db $08 ; asm - ld hl, ViridianGymTrainerHeader6 - call TalkToTrainer - jp TextScriptEnd +Func_70dc5: ; 70dc5 (1c:4dc5) + push hl + ld a, [de] + ld c, a + inc de +.asm_70dc9 + ld [hl], $ff + ld a, [$cd3e] + and a + jr z, .asm_70dd4 + inc hl + jr .asm_70dd5 +.asm_70dd4 + dec hl +.asm_70dd5 + dec c + jr nz, .asm_70dc9 + pop hl + ld a, [wWhichTrade] ; $cd3d + and a + ld bc, $14 + jr z, .asm_70de5 + ld bc, $ffec +.asm_70de5 + add hl, bc + ld a, [de] + inc de + cp $ff + ret z + and a + jr z, Func_70dc5 + ld c, a +.asm_70def + ld a, [$cd3e] + and a + jr z, .asm_70df8 + dec hl + jr .asm_70df9 +.asm_70df8 + inc hl +.asm_70df9 + dec c + jr nz, .asm_70def + jr Func_70dc5 -ViridianGymBattleText7: ; 74b93 (1d:4b93) - TX_FAR _ViridianGymBattleText7 - db "@" +Unknown_70dfe: ; 70dfe (1c:4dfe) + db $02,$03,$05,$04,$09,$FF -ViridianGymEndBattleText7: ; 74b98 (1d:4b98) - TX_FAR _ViridianGymEndBattleText7 - db "@" +Unknown_70e04: ; 70e04 (1c:4e04) + db $01,$01,$02,$02,$04,$02,$04,$02,$03,$FF -ViridianGymAfterBattleText7: ; 74b9d (1d:4b9d) - TX_FAR _ViridianGymAfterBattleText7 - db "@" +Unknown_70e0e: ; 70e0e (1c:4e0e) + db $02,$01,$03,$01,$04,$01,$04,$01,$04,$01,$03,$01,$02,$01,$01,$01,$01,$FF -ViridianGymText9: ; 74ba2 (1d:4ba2) - db $08 ; asm - ld hl, ViridianGymTrainerHeader7 - call TalkToTrainer - jp TextScriptEnd +Unknown_70e20: ; 70e20 (1c:4e20) + db $04,$01,$04,$00,$03,$01,$03,$00,$02,$01,$02,$00,$01,$FF -ViridianGymBattleText8: ; 74bac (1d:4bac) - TX_FAR _ViridianGymBattleText8 - db "@" +Unknown_70e2e: ; 70e2e (1c:4e2e) + db $04,$00,$03,$00,$03,$00,$02,$00,$02,$00,$01,$00,$01,$00,$01,$FF -ViridianGymEndBattleText8: ; 74bb1 (1d:4bb1) - TX_FAR _ViridianGymEndBattleText8 - db "@" +DisplayTownMap: ; 70e3e (1c:4e3e) + call LoadTownMap + ld hl, $cfcb + ld a, [hl] + push af + ld [hl], $ff + push hl + ld a, $1 + ld [$ffb7], a + ld a, [W_CURMAP] ; $d35e + push af + ld b, $0 + call Func_711c4 + FuncCoord 1, 0 ; $c3a1 + ld hl, Coord + ld de, $cd6d + call PlaceString + ld hl, wOAMBuffer + ld de, wTileMapBackup + ld bc, $10 + call CopyData + ld hl, $8040 + ld de, TownMapCursor ; $4f40 + ld bc, (BANK(TownMapCursor) << 8) + $04 + call CopyVideoDataDouble + xor a + ld [wWhichTrade], a ; $cd3d + pop af + jr Func_70e92 -ViridianGymAfterBattleText8: ; 74bb6 (1d:4bb6) - TX_FAR _ViridianGymAfterBattleText8 - db "@" +Func_70e7e: ; 70e7e (1c:4e7e) + ld hl, wTileMap + ld bc, $114 + call ClearScreenArea + ld hl, TownMapOrder ; $4f11 + ld a, [wWhichTrade] ; $cd3d + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] -ViridianGymText10: ; 74bbb (1d:4bbb) - db $08 ; asm - ld a, [$d751] - bit 1, a - jr nz, .asm_1abd1 ; 0x74bc1 - ld hl, UnnamedText_74bd4 - call PrintText - jr .asm_6064d ; 0x74bc9 -.asm_1abd1 ; 0x74bcb - ld hl, UnnamedText_74bd9 - call PrintText -.asm_6064d ; 0x74bd1 - jp TextScriptEnd +Func_70e92: ; 70e92 (1c:4e92) + ld de, $cee9 + call Func_712f1 + ld a, [de] + push hl + call Func_71258 + ld a, $4 + ld [$cd5b], a + ld hl, $c310 + call Func_71279 + pop hl + ld de, $cd6d +.asm_70eac + ld a, [hli] + ld [de], a + inc de + cp $50 + jr nz, .asm_70eac + FuncCoord 1, 0 ; $c3a1 + ld hl, Coord + ld de, $cd6d + call PlaceString + ld hl, $c310 + ld de, $c518 + ld bc, $10 + call CopyData +.asm_70ec8 + call Func_716c6 + call GetJoypadStateLowSensitivity + ld a, [$ffb5] + ld b, a + and $c3 + jr z, .asm_70ec8 + ld a, (SFX_02_3c - SFX_Headers_02) / 3 + call PlaySound + bit 6, b + jr nz, .asm_70ef2 + bit 7, b + jr nz, .asm_70f01 + xor a + ld [$d09b], a + ld [$ffb7], a + ld [W_SUBANIMTRANSFORM], a ; $d08b + call Func_711ab + pop hl + pop af + ld [hl], a + ret +.asm_70ef2 + ld a, [wWhichTrade] ; $cd3d + inc a + cp $2f + jr nz, .asm_70efb + xor a +.asm_70efb + ld [wWhichTrade], a ; $cd3d + jp Func_70e7e +.asm_70f01 + ld a, [wWhichTrade] ; $cd3d + dec a + cp $ff + jr nz, .asm_70f0b + ld a, $2e +.asm_70f0b + ld [wWhichTrade], a ; $cd3d + jp Func_70e7e -UnnamedText_74bd4: ; 74bd4 (1d:4bd4) - TX_FAR _UnnamedText_74bd4 - db "@" +INCLUDE "data/town_map_order.asm" -UnnamedText_74bd9: ; 74bd9 (1d:4bd9) - TX_FAR _UnnamedText_74bd9 - db "@" +TownMapCursor: ; 70f40 (1c:4f40) + INCBIN "gfx/town_map_cursor.1bpp" -INCLUDE "data/mapObjects/viridiangym.asm" +LoadTownMap_Nest: ; 70f60 (1c:4f60) + call LoadTownMap + ld hl, $cfcb + ld a, [hl] + push af + ld [hl], $ff + push hl + call Func_711ef + call GetMonName + FuncCoord 1, 0 ; $c3a1 + ld hl, Coord + call PlaceString + ld h, b + ld l, c + ld de, MonsNestText + call PlaceString + call WaitForTextScrollButtonPress + call Func_711ab + pop hl + pop af + ld [hl], a + ret -ViridianGymBlocks: ; 74c47 (1d:4c47) - INCBIN "maps/viridiangym.blk" +MonsNestText: ; 70f89 (1c:4f89) + db "'s NEST@" -INCLUDE "data/mapHeaders/pewtermart.asm" +LoadTownMap_Fly: ; 70f90 (1c:4f90) + call CleanLCD_OAM + call LoadTownMap + call LoadPlayerSpriteGraphics + call LoadFontTilePatterns + ld de, BirdSprite ; $4d80 + ld hl, $8040 + ld bc, (BANK(BirdSprite) << 8) + $0c + call CopyVideoData + ld de, TownMapUpArrow ; $5093 + ld hl, $8ed0 + ld bc, (BANK(TownMapUpArrow) << 8) + $01 + call CopyVideoDataDouble + call Func_71070 + ld hl, $cfcb + ld a, [hl] + push af + ld [hl], $ff + push hl + ld hl, wTileMap + ld de, ToText + call PlaceString + ld a, [W_CURMAP] ; $d35e + ld b, $0 + call Func_711c4 + ld hl, $cd3e + FuncCoord 18, 0 ; $c3b2 + ld de, Coord -PewterMartScript: ; 74cad (1d:4cad) - call EnableAutoTextBoxDrawing - ld a, $1 - ld [$cf0c], a +.townMapFlyLoop + ld a, $7f + ld [de], a + push hl + push hl + FuncCoord 3, 0 ; $c3a3 + ld hl, Coord + ld bc, $10f + call ClearScreenArea + pop hl + ld a, [hl] + ld b, $4 + call Func_711c4 + FuncCoord 3, 0 ; $c3a3 + ld hl, Coord + ld de, $cd6d + call PlaceString + ld c, $f + call DelayFrames + FuncCoord 18, 0 ; $c3b2 + ld hl, Coord + ld [hl], $ed + FuncCoord 19, 0 ; $c3b3 + ld hl, Coord + ld [hl], $ee + pop hl +.asm_71004 + push hl + call DelayFrame + call GetJoypadStateLowSensitivity + ld a, [$ffb5] + ld b, a + pop hl + and $c3 + jr z, .asm_71004 + bit 0, b + jr nz, .asm_71026 + ld a, (SFX_02_3c - SFX_Headers_02) / 3 + call PlaySound + bit 6, b + jr nz, .asm_71042 + bit 7, b + jr nz, .asm_71058 + jr .asm_71037 +.asm_71026 + ld a, (SFX_02_3e - SFX_Headers_02) / 3 + call PlaySound + ld a, [hl] + ld [$d71a], a + ld hl, $d732 + set 3, [hl] + inc hl + set 7, [hl] +.asm_71037 + xor a + ld [$d09b], a + call GBPalWhiteOutWithDelay3 + pop hl + pop af + ld [hl], a ret +.asm_71042 + FuncCoord 18, 0 ; $c3b2 + ld de, Coord + inc hl + ld a, [hl] + cp $ff + jr z, .asm_71052 + cp $fe + jr z, .asm_71042 + jp .townMapFlyLoop +.asm_71052 + ld hl, $cd3e + jp .townMapFlyLoop +.asm_71058 + FuncCoord 19, 0 ; $c3b3 + ld de, Coord + dec hl + ld a, [hl] + cp $ff + jr z, .asm_71068 + cp $fe + jr z, .asm_71058 + jp .townMapFlyLoop +.asm_71068 + ld hl, $cd49 + jr .asm_71058 -PewterMartTextPointers: ; 74cb6 (1d:4cb6) - dw PewterMartText1 - dw PewterMartText2 - dw PewterMartText3 +ToText: ; 7106d (1c:506d) + db "To@" -PewterMartText2: ; 74cbc (1d:4cbc) - db $08 ; asm - ld hl, UnnamedText_74cc6 - call PrintText - jp TextScriptEnd +Func_71070: ; 71070 (1c:5070) + ld hl, wWhichTrade ; $cd3d + ld [hl], $ff + inc hl + ld a, [$d70b] + ld e, a + ld a, [$d70c] + ld d, a + ld bc, $b +.asm_71081 + srl d + rr e + ld a, $fe + jr nc, .asm_7108a + ld a, b +.asm_7108a + ld [hl], a + inc hl + inc b + dec c + jr nz, .asm_71081 + ld [hl], $ff + ret -UnnamedText_74cc6: ; 74cc6 (1d:4cc6) - TX_FAR _UnnamedText_74cc6 - db "@" +TownMapUpArrow: ; 71093 (1c:5093) + INCBIN "gfx/up_arrow.1bpp" -PewterMartText3: ; 74ccb (1d:4ccb) - db $08 ; asm - ld hl, UnnamedText_74cd5 - call PrintText - jp TextScriptEnd +LoadTownMap: ; 7109b (1c:509b) + call GBPalWhiteOutWithDelay3 + call ClearScreen + call UpdateSprites + ld hl, wTileMap + ld b, $12 + ld c, $12 + call TextBoxBorder + call DisableLCD + ld hl, WorldMapTileGraphics ; $65a8 + ld de, $9600 + ld bc, $100 + ld a, BANK(WorldMapTileGraphics) + call FarCopyData2 + ld hl, MonNestIcon ; $56be + ld de, $8040 + ld bc, $8 + ld a, BANK(MonNestIcon) + call FarCopyDataDouble + ld hl, wTileMap + ld de, CompressedMap ; $5100 +.asm_710d3 + ld a, [de] + and a + jr z, .asm_710e9 + ld b, a + and $f + ld c, a + ld a, b + swap a + and $f + add $60 +.asm_710e2 + ld [hli], a + dec c + jr nz, .asm_710e2 + inc de + jr .asm_710d3 +.asm_710e9 + call EnableLCD + ld b, $2 + call GoPAL_SET + call Delay3 + call GBPalNormal + xor a + ld [W_SUBANIMTRANSFORM], a ; $d08b + inc a + ld [$d09b], a + ret -UnnamedText_74cd5: ; 74cd5 (1d:4cd5) - TX_FAR _UnnamedText_74cd5 - db "@" +CompressedMap: ; 71100 (1c:5100) +; you can decompress this file with the redrle program in the extras/ dir + INCBIN "gfx/town_map.rle" -INCLUDE "data/mapObjects/pewtermart.asm" +Func_711ab: ; 711ab (1c:51ab) + xor a + ld [$d09b], a + call GBPalWhiteOut + call ClearScreen + call CleanLCD_OAM + call LoadPlayerSpriteGraphics + call LoadFontTilePatterns + call UpdateSprites + jp GoPAL_SET_CF1C -INCLUDE "data/mapHeaders/unknowndungeon1.asm" +Func_711c4: ; 711c4 (1c:51c4) + push af + ld a, b + ld [$cd5b], a + pop af + ld de, $cee9 + call Func_712f1 + ld a, [de] + push hl + call Func_71258 + call Func_7126d + pop hl + ld de, $cd6d +.asm_711dc + ld a, [hli] + ld [de], a + inc de + cp $50 + jr nz, .asm_711dc + ld hl, wOAMBuffer + ld de, wTileMapBackup + ld bc, $a0 + jp CopyData -UnknownDungeon1Script: ; 74d0c (1d:4d0c) - jp EnableAutoTextBoxDrawing +Func_711ef: ; 711ef (1c:51ef) + ld b, BANK(Func_e9cb) + ld hl, Func_e9cb + call Bankswitch + call Func_712d9 + ld hl, wOAMBuffer + ld de, $cee9 +.asm_71200 + ld a, [de] + cp $ff + jr z, .asm_7121d + and a + jr z, .asm_7121a + push hl + call Func_712f1 + pop hl + ld a, [de] + cp $19 + jr z, .asm_7121a + call Func_71258 + ld a, $4 + ld [hli], a + xor a + ld [hli], a +.asm_7121a + inc de + jr .asm_71200 +.asm_7121d + ld a, l + and a + jr nz, .asm_71236 + FuncCoord 1, 7 ; $c42d + ld hl, Coord + ld b, $2 + ld c, $f + call TextBoxBorder + FuncCoord 2, 9 ; $c456 + ld hl, Coord + ld de, AreaUnknownText + call PlaceString + jr .asm_7123e +.asm_71236 + ld a, [W_CURMAP] ; $d35e + ld b, $0 + call Func_711c4 +.asm_7123e + ld hl, wOAMBuffer + ld de, wTileMapBackup + ld bc, $a0 + jp CopyData -UnknownDungeon1TextPointers: ; 74d0f (1d:4d0f) - dw Predef5CText - dw Predef5CText - dw Predef5CText +AreaUnknownText: ; 7124a (1c:524a) + db " AREA UNKNOWN@" -INCLUDE "data/mapObjects/unknowndungeon1.asm" +Func_71258: ; 71258 (1c:5258) + push af + and $f0 + srl a + add $18 + ld b, a + ld [hli], a + pop af + and $f + swap a + srl a + add $18 + ld c, a + ld [hli], a + ret -UnknownDungeon1Blocks: ; 74d76 (1d:4d76) - INCBIN "maps/unknowndungeon1.blk" +Func_7126d: ; 7126d (1c:526d) + ld a, [$cd5b] + and a + ld hl, $c390 + jr z, Func_71279 + ld hl, $c380 -INCLUDE "data/mapHeaders/ceruleanhouse2.asm" +Func_71279: ; 71279 (1c:5279) + push hl + ld hl, $fcfc + add hl, bc + ld b, h + ld c, l + pop hl -CeruleanHouse2Script: ; 74e09 (1d:4e09) - ld a, $1 - ld [$cf0c], a - dec a - ld [$cc3c], a +Func_71281: ; 71281 (1c:5281) + ld de, $202 +.asm_71284 + push de + push bc +.asm_71286 + ld a, b + ld [hli], a + ld a, c + ld [hli], a + ld a, [$cd5b] + ld [hli], a + inc a + ld [$cd5b], a + xor a + ld [hli], a + inc d + ld a, $8 + add c + ld c, a + dec e + jr nz, .asm_71286 + pop bc + pop de + ld a, $8 + add b + ld b, a + dec d + jr nz, .asm_71284 ret -CeruleanHouse2TextPointers: ; 74e13 (1d:4e13) - dw CeruleanHouse2Text1 - -CeruleanHouse2Text1: ; 74e15 (1d:4e15) - db $8 - ld hl, UnnamedText_74e77 - call PrintText +Func_712a6: ; 712a6 (1c:52a6) xor a - ld [wCurrentMenuItem], a - ld [wListScrollOffset], a -.asm_74e23 - ld hl, UnnamedText_74e7c - call PrintText - ld hl, UnnamedText_74e6d - call LoadItemList - ld hl, $cf7b - ld a, l - ld [$cf8b], a - ld a, h - ld [$cf8c], a + ld [$cd5c], a + ld de, $202 +.asm_712ad + push de + push bc +.asm_712af + ld a, b + ld [hli], a + ld a, c + ld [hli], a + ld a, [$cd5b] + ld [hli], a + ld a, [$cd5c] + ld [hli], a + xor $20 + ld [$cd5c], a + inc d + ld a, $8 + add c + ld c, a + dec e + jr nz, .asm_712af + pop bc + pop de + push hl + ld hl, $cd5b + inc [hl] + inc [hl] + pop hl + ld a, $8 + add b + ld b, a + dec d + jr nz, .asm_712ad + ret + +Func_712d9: ; 712d9 (1c:52d9) + ld de, $cee9 +.asm_712dc + ld a, [de] + inc de + cp $ff + ret z + ld c, a + ld l, e + ld h, d +.asm_712e4 + ld a, [hl] + cp $ff + jr z, .asm_712dc + cp c + jr nz, .asm_712ee xor a - ld [$cf93], a - ld [$cc35], a - ld a, SPECIALLISTMENU - ld [wListMenuID], a - call DisplayListMenuID - jr c, .asm_74e60 ; 0x74e49 $15 - ld hl, Unknown_74e86 - ld a, [$cf91] - sub $15 - add a - ld d, $0 - ld e, a - add hl, de + ld [hl], a +.asm_712ee + inc hl + jr .asm_712e4 + +Func_712f1: ; 712f1 (1c:52f1) + cp REDS_HOUSE_1F + jr c, .asm_71304 + ld bc, $4 + ld hl, InternalMapEntries ; $5382 +.asm_712fb + cp [hl] + jr c, .asm_71301 + add hl, bc + jr .asm_712fb +.asm_71301 + inc hl + jr .asm_7130d +.asm_71304 + ld hl, ExternalMapEntries ; $5313 + ld c, a + ld b, $0 + add hl, bc + add hl, bc + add hl, bc +.asm_7130d + ld a, [hli] + ld [de], a ld a, [hli] ld h, [hl] ld l, a - call PrintText - jr .asm_74e23 ; 0x74e5e $c3 -.asm_74e60 - xor a - ld [wListScrollOffset], a - ld hl, UnnamedText_74e81 - call PrintText - jp TextScriptEnd - -UnnamedText_74e6d: ; 74e6d (1d:4e6d) - db $8,BOULDERBADGE,CASCADEBADGE,THUNDERBADGE,RAINBOWBADGE,SOULBADGE,MARSHBADGE,VOLCANOBADGE,EARTHBADGE,$FF - -UnnamedText_74e77: ; 74e77 (1d:4e77) - TX_FAR _UnnamedText_74e77 - db "@" - -UnnamedText_74e7c: ; 74e7c (1d:4e7c) - TX_FAR _UnnamedText_74e7c - db "@" - -UnnamedText_74e81: ; 74e81 (1d:4e81) - TX_FAR _UnnamedText_74e81 - db "@" - -Unknown_74e86: ; 74e86 (1d:4e86) - dw UnnamedText_74e96 - dw UnnamedText_74e9b - dw UnnamedText_74ea0 - dw UnnamedText_74ea5 - dw UnnamedText_74eaa - dw UnnamedText_74eaf - dw UnnamedText_74eb4 - dw UnnamedText_74eb9 - -UnnamedText_74e96: ; 74e96 (1d:4e96) - TX_FAR _UnnamedText_74e96 - db "@" - -UnnamedText_74e9b: ; 74e9b (1d:4e9b) - TX_FAR _UnnamedText_74e9b - db "@" - -UnnamedText_74ea0: ; 74ea0 (1d:4ea0) - TX_FAR _UnnamedText_74ea0 - db "@" - -UnnamedText_74ea5: ; 74ea5 (1d:4ea5) - TX_FAR _UnnamedText_74ea5 - db "@" - -UnnamedText_74eaa: ; 74eaa (1d:4eaa) - TX_FAR _UnnamedText_74eaa - db "@" + ret -UnnamedText_74eaf: ; 74eaf (1d:4eaf) - TX_FAR _UnnamedText_74eaf - db "@" +INCLUDE "data/town_map_entries.asm" -UnnamedText_74eb4: ; 74eb4 (1d:4eb4) - TX_FAR _UnnamedText_74eb4 - db "@" +INCLUDE "text/map_names.asm" -UnnamedText_74eb9: ; 74eb9 (1d:4eb9) - TX_FAR _UnnamedText_74eb9 - db "@" +MonNestIcon: ; 716be (1c:56be) + INCBIN "gfx/mon_nest_icon.1bpp" -INCLUDE "data/mapObjects/ceruleanhouse2.asm" +Func_716c6: ; 716c6 (1c:56c6) + ld a, [W_SUBANIMTRANSFORM] ; $d08b + inc a + cp $19 + jr z, .asm_716e1 + cp $32 + jr nz, .asm_716f1 + ld hl, wTileMapBackup + ld de, wOAMBuffer + ld bc, $90 + call CopyData + xor a + jr .asm_716f1 +.asm_716e1 + ld hl, wOAMBuffer + ld b, $24 + ld de, $4 +.asm_716e9 + ld [hl], $a0 + add hl, de + dec b + jr nz, .asm_716e9 + ld a, $19 +.asm_716f1 + ld [W_SUBANIMTRANSFORM], a ; $d08b + jp DelayFrame -VendingMachineMenu: ; 74ee0 (1d:4ee0) - ld hl, VendingMachineText1 - call PrintText - ld a, $13 - ld [$d125], a - call DisplayTextBoxID +AnimatePartyMon_ForceSpeed1: ; 716f7 (1c:56f7) xor a ld [wCurrentMenuItem], a ; $cc26 - ld [wLastMenuItem], a ; $cc2a - ld a, $3 - ld [wMenuWatchedKeys], a ; $cc29 - ld a, $3 - ld [wMaxMenuItem], a ; $cc28 - ld a, $5 - ld [wTopMenuItemY], a ; $cc24 - ld a, $1 - ld [wTopMenuItemX], a ; $cc25 - ld hl, $d730 - set 6, [hl] - FuncCoord 0, 3 ; $c3dc - ld hl, Coord - ld b, $8 - ld c, $c - call TextBoxBorder - call UpdateSprites - FuncCoord 2, 5 ; $c406 - ld hl, Coord - ld de, DrinkText - call PlaceString - FuncCoord 9, 6 ; $c421 - ld hl, Coord - ld de, DrinkPriceText - call PlaceString - ld hl, $d730 - res 6, [hl] - call HandleMenuInput - bit 1, a - jr nz, .asm_74f93 - ld a, [wCurrentMenuItem] ; $cc26 - cp $3 - jr z, .asm_74f93 - xor a - ld [$ff9f], a - ld [$ffa1], a - ld a, $2 - ld [$ffa0], a - call HasEnoughMoney - jr nc, .enoughMoney - ld hl, VendingMachineText4 - jp PrintText -.enoughMoney - call Func_74fe7 - ld a, [$ffdb] ld b, a - ld c, 1 - call GiveItem - jr nc, .BagFull - ld b, $3c ; number of times to play the "brrrrr" sound -.playDeliverySound ; 0x74f63 - ld c, $2 - call DelayFrames + inc a + jr GetAnimationSpeed + +; $cf1f contains the party mon's health bar colors +; 0: green +; 1: yellow +; 2: red +AnimatePartyMon: ; 716ff (1c:56ff) + ld hl, $cf1f + ld a, [wCurrentMenuItem] + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + +GetAnimationSpeed: ; 7170a (1c:570a) + ld c, a + ld hl, PartyMonSpeeds + add hl, bc + ld a, [$cf1b] + xor $1 + add [hl] + ld c, a + add a + ld b, a + ld a, [W_SUBANIMTRANSFORM] ; $d08b + and a + jr z, .resetSprites + cp c + jr z, .animateSprite +.incTimer + inc a + cp b + jr nz, .resetTimer + xor a +.resetTimer + ld [W_SUBANIMTRANSFORM], a ; $d08b + jp DelayFrame +.resetSprites push bc - ld a, (SFX_02_53 - SFX_Headers_02) / 3 - call PlaySound + ld hl, $cc5b + ld de, wOAMBuffer + ld bc, $60 + call CopyData pop bc + xor a + jr .incTimer +.animateSprite + push bc + ld hl, $c302 ; OAM tile id + ld bc, $10 + ld a, [wCurrentMenuItem] + call AddNTimes + ld c, $40 ; amout to increase the tile id by + ld a, [hl] + cp $4 ; tile ID for SPRITE_BALL_M + jr z, .editCoords + cp $8 ; tile ID for SPRITE_HELIX + jr nz, .editTileIDS +; SPRITE_BALL_M and SPRITE_HELIX only shake up and down +.editCoords + dec hl + dec hl ; dec hl to the OAM y coord + ld c, $1 ; amount to increase the y coord by +; otherwise, load a second sprite frame +.editTileIDS + ld b, $4 + ld de, $4 +.loop + ld a, [hl] + add c + ld [hl], a + add hl, de dec b - jr nz, .playDeliverySound -.asm_74f72 - ld hl, VendingMachineText5 - call PrintText - ld hl, $ffde - ld de, wPlayerMoney + 2 ; $d349 - ld c, $3 - ld a, $c - call Predef ; indirect jump to Func_f836 (f836 (3:7836)) - ld a, $13 - ld [$d125], a - jp DisplayTextBoxID -.BagFull - ld hl, VendingMachineText6 - jp PrintText -.asm_74f93 - ld hl, VendingMachineText7 - jp PrintText - -VendingMachineText1: ; 74f99 (1d:4f99) - TX_FAR _VendingMachineText1 - db "@" - -DrinkText: ; 74f9e (1d:4f9e) - db "FRESH WATER" - next "SODA POP" - next "LEMONADE" - next "CANCEL@" - -DrinkPriceText: ; 74fc3 (1d:4fc3) - db "¥200" - next "¥300" - next "¥350",$4E,"@" - -VendingMachineText4: ; 74fd3 (1d:4fd3) - TX_FAR _VendingMachineText4 - db "@" - -VendingMachineText5: ; 74fd8 (1d:4fd8) - TX_FAR _VendingMachineText5 - db "@" + jr nz, .loop + pop bc + ld a, c + jr .incTimer -VendingMachineText6: ; 74fdd (1d:4fdd) - TX_FAR _VendingMachineText6 - db "@" +PartyMonSpeeds: ; 71769 (1c:5769) + db $05,$10,$20 -VendingMachineText7: ; 74fe2 (1d:4fe2) - TX_FAR _VendingMachineText7 - db "@" +Func_7176c: ; 7176c (1c:576c) + ld hl, MonOverworldSpritePointers ; $57c0 + ld a, $1c -Func_74fe7: ; 74fe7 (1d:4fe7) - ld hl, VendingPrices - ld a, [$cc26] - add a - add a - ld d, $0 +Func_71771: ; 71771 (1c:5771) + ld bc, $0 +.asm_71774 + push af + push bc + push hl + add hl, bc + ld a, [hli] ld e, a - add hl, de ld a, [hli] - ld [$ffdb], a + ld d, a ld a, [hli] - ld [$ffdc], a + ld c, a ld a, [hli] - ld [$ffdd], a - ld a, [hl] - ld [$ffde], a - ret - -VendingPrices: ; 75000 (1d:5000) - db FRESH_WATER,$00,$02,$00 - db SODA_POP, $00,$03,$00 - db LEMONADE, $00,$03,$50 - -INCLUDE "data/mapHeaders/fuchsiahouse1.asm" - -FuchsiaHouse1Script: ; 75018 (1d:5018) - call EnableAutoTextBoxDrawing + ld b, a + ld a, [hli] + ld h, [hl] + ld l, a + call CopyVideoData + pop hl + pop bc + ld a, $6 + add c + ld c, a + pop af + dec a + jr nz, .asm_71774 ret -FuchsiaHouse1TextPointers: ; 7501c (1d:501c) - dw FuchsiaHouse1Text1 - dw FuchsiaHouse1Text2 - dw FuchsiaHouse1Text3 - -FuchsiaHouse1Text1: ; 75022 (1d:5022) - TX_FAR _FuchsiaHouse1Text1 - db "@" - -FuchsiaHouse1Text2: ; 75027 (1d:5027) - TX_FAR _FuchsiaHouse1Text2 - db "@" - -FuchsiaHouse1Text3: ; 7502c (1d:502c) - TX_FAR _FuchsiaHouse1Text3 - db "@" - -INCLUDE "data/mapObjects/fuchsiahouse1.asm" - -INCLUDE "data/mapHeaders/fuchsiapokecenter.asm" - -FuchsiaPokecenterScript: ; 75063 (1d:5063) - call Func_22fa - jp EnableAutoTextBoxDrawing - -FuchsiaPokecenterTextPointers: ; 75069 (1d:5069) - dw FuchsiaPokecenterText1 - dw FuchsiaPokecenterText2 - dw FuchsiaPokecenterText3 - dw FuchsiaPokecenterText4 - -FuchsiaPokecenterText1: ; 75071 (1d:5071) - db $ff - -FuchsiaPokecenterText2: ; 75072 (1d:5072) - TX_FAR _FuchsiaPokecenterText1 - db "@" +Func_71791: ; 71791 (1c:5791) + call DisableLCD + ld hl, MonOverworldSpritePointers ; $57c0 + ld a, $1c + ld bc, $0 +.asm_7179c + push af + push bc + push hl + add hl, bc + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + push de + ld a, [hli] + ld c, a + swap c + ld b, $0 + ld a, [hli] + ld e, [hl] + inc hl + ld d, [hl] + pop hl + call FarCopyData2 + pop hl + pop bc + ld a, $6 + add c + ld c, a + pop af + dec a + jr nz, .asm_7179c + jp EnableLCD -FuchsiaPokecenterText3: ; 75077 (1d:5077) - TX_FAR _FuchsiaPokecenterText3 - db "@" +MonOverworldSpritePointers: ; 717c0 (1c:57c0) + dw SlowbroSprite + $c0 + db $40 / $10 ; 40 bytes + db BANK(SlowbroSprite) + dw $8000 -FuchsiaPokecenterText4: ; 7507c (1d:507c) - db $f6 + dw BallSprite + db $80 / $10 ; $80 bytes + db BANK(BallSprite) + dw $8040 -INCLUDE "data/mapObjects/fuchsiapokecenter.asm" + dw ClefairySprite + $c0 + db $40 / $10 ; $40 bytes + db BANK(ClefairySprite) + dw $80C0 -INCLUDE "data/mapHeaders/fuchsiahouse2.asm" + dw BirdSprite + $c0 + db $40 / $10 ; $40 bytes + db BANK(BirdSprite) + dw $8100 -FuchsiaHouse2Script: ; 750b5 (1d:50b5) - jp EnableAutoTextBoxDrawing + dw SeelSprite + db $40 / $10 ; $40 bytes + db BANK(SeelSprite) + dw $8140 -FuchsiaHouse2TextPointers: ; 750b8 (1d:50b8) - dw FuchsiaHouse2Text1 - dw Predef5CText - dw BoulderText - dw FuchsiaHouse2Text4 - dw FuchsiaHouse2Text5 + dw MonOverworldSprites + $40 + db $10 / $10 ; $10 bytes + db BANK(MonOverworldSprites) + dw $8180 -FuchsiaHouse2Text1: ; 750c2 (1d:50c2) - db $08 ; asm - ld a, [$d78e] - bit 0, a - jr nz, .subtract ; 0x750c8 - ld b,GOLD_TEETH - call IsItemInBag - jr nz, .asm_3f30f ; 0x750cf - ld a, [$d78e] - bit 1, a - jr nz, .asm_60cba ; 0x750d6 - ld hl, WardenGibberishText1 - call PrintText - call YesNoChoice - ld a, [$cc26] - and a - ld hl, WardenGibberishText3 - jr nz, .asm_61238 ; 0x750e8 - ld hl, WardenGibberishText2 -.asm_61238 ; 0x750ed - call PrintText - jr .asm_52039 ; 0x750f0 -.asm_3f30f ; 0x750f2 - ld hl, WardenTeethText1 - call PrintText - ld a, GOLD_TEETH - ldh [$db], a - ld b, BANK(RemoveItemByID) - ld hl, RemoveItemByID - call Bankswitch - ld hl, $d78e - set 1, [hl] -.asm_60cba ; 0x75109 - ld hl, WardenThankYouText - call PrintText - ld bc,(HM_04 << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, ReceivedHM04Text - call PrintText - ld hl, $d78e - set 0, [hl] - jr .asm_52039 ; 0x75122 -.subtract ; 0x75124 - ld hl, HM04ExplanationText - call PrintText - jr .asm_52039 ; 0x7512a -.BagFull - ld hl, HM04NoRoomText - call PrintText -.asm_52039 ; 0x75132 - jp TextScriptEnd + dw MonOverworldSprites + $50 + db $10 / $10 ; $10 bytes + db BANK(MonOverworldSprites) + dw $81A0 -WardenGibberishText1: ; 75135 (1d:5135) - TX_FAR _WardenGibberishText1 - db "@" + dw MonOverworldSprites + $60 + db $10 / $10 ; $10 bytes + db BANK(MonOverworldSprites) + dw $81C0 -WardenGibberishText2: ; 7513a (1d:513a) - TX_FAR _WardenGibberishText2 - db "@" + dw MonOverworldSprites + $70 + db $10 / $10 ; $10 bytes + db BANK(MonOverworldSprites) + dw $81E0 -WardenGibberishText3: ; 7513f (1d:513f) - TX_FAR _WardenGibberishText3 - db "@" + dw MonOverworldSprites + $80 + db $10 / $10 ; $10 bytes + db BANK(MonOverworldSprites) + dw $8200 -WardenTeethText1: ; 75144 (1d:5144) - TX_FAR _WardenTeethText1 - db $0b + dw MonOverworldSprites + $90 + db $10 / $10 ; $10 bytes + db BANK(MonOverworldSprites) + dw $8220 -WardenTeethText2: ; 75149 (1d:5149) - TX_FAR _WardenTeethText2 - db "@" + dw MonOverworldSprites + $A0 + db $10 / $10 ; $10 bytes + db BANK(MonOverworldSprites) + dw $8240 -WardenThankYouText: ; 7514e (1d:514e) - TX_FAR _WardenThankYouText - db "@" + dw MonOverworldSprites + $B0 + db $10 / $10 ; $10 bytes + db BANK(MonOverworldSprites) + dw $8260 -ReceivedHM04Text: ; 75153 (1d:5153) - TX_FAR _ReceivedHM04Text - db $0B, "@" + dw MonOverworldSprites + $100 + db $40 / $10 ; $40 bytes + db BANK(MonOverworldSprites) + dw $8380 -HM04ExplanationText: ; 75159 (1d:5159) - TX_FAR _HM04ExplanationText - db "@" + dw SlowbroSprite + db $40 / $10 ; $40 bytes + db BANK(SlowbroSprite) + dw $8400 -HM04NoRoomText: ; 7515e (1d:515e) - TX_FAR _HM04NoRoomText - db "@" + dw BallSprite + db $80 / $10 ; $80 bytes + db BANK(BallSprite) + dw $8440 -FuchsiaHouse2Text5: ; 75163 (1d:5163) -FuchsiaHouse2Text4: ; 75163 (1d:5163) - db $08 ; asm - ldh a, [$8c] - cp $4 - ld hl, UnnamedText_7517b - jr nz, .asm_4c9a2 ; 0x7516b - ld hl, UnnamedText_75176 -.asm_4c9a2 ; 0x75170 - call PrintText - jp TextScriptEnd + dw ClefairySprite + db $40 / $10 ; $40 bytes + db BANK(ClefairySprite) + dw $84C0 -UnnamedText_75176: ; 75176 (1d:5176) - TX_FAR _UnnamedText_75176 - db "@" + dw BirdSprite + db $40 / $10 ; $40 bytes + db BANK(BirdSprite) + dw $8500 -UnnamedText_7517b: ; 7517b (1d:517b) - TX_FAR _UnnamedText_7517b - db "@" + dw SeelSprite + $C0 + db $40 / $10 ; $40 bytes + db BANK(SeelSprite) + dw $8540 -INCLUDE "data/mapObjects/fuchsiahouse2.asm" + dw MonOverworldSprites + db $10 / $10 ; $10 bytes + db BANK(MonOverworldSprites) + dw $8580 -FuchsiaHouse2Blocks: ; 751ad (1d:51ad) - INCBIN "maps/fuchsiahouse2.blk" + dw MonOverworldSprites + $10 + db $10 / $10 ; $10 bytes + db BANK(MonOverworldSprites) + dw $85A0 -INCLUDE "data/mapHeaders/safarizoneentrance.asm" + dw MonOverworldSprites + $20 + db $10 / $10 ; $10 bytes + db BANK(MonOverworldSprites) + dw $85C0 -SafariZoneEntranceScript: ; 751cd (1d:51cd) - call EnableAutoTextBoxDrawing - ld hl, SafariZoneEntranceScriptPointers - ld a, [W_SAFARIZONEENTRANCECURSCRIPT] - jp CallFunctionInTable - -SafariZoneEntranceScriptPointers: ; 751d9 (1d:51d9) - dw SafariZoneEntranceScript0 - dw SafariZoneEntranceScript1 - dw SafariZoneEntranceScript2 - dw SafariZoneEntranceScript3 - dw SafariZoneEntranceScript4 - dw SafariZoneEntranceScript5 - dw SafariZoneEntranceScript6 - -SafariZoneEntranceScript0: ; 751e7 (1d:51e7) - ld hl, CoordsData_75221 - call ArePlayerCoordsInArray - ret nc - ld a, $3 - ld [$ff8c], a - call DisplayTextID - ld a, $ff - ld [wJoypadForbiddenButtonsMask], a - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, $c - ld [$c109], a - ld a, [$cd3d] - cp $1 - jr z, .asm_7520f ; 0x75207 $6 - ld a, $2 - ld [W_SAFARIZONEENTRANCECURSCRIPT], a - ret -.asm_7520f - ld a, $10 - ld c, $1 - call Func_752a3 - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld a, $1 - ld [W_SAFARIZONEENTRANCECURSCRIPT], a - ret + dw MonOverworldSprites + $30 + db $10 / $10 ; $10 bytes + db BANK(MonOverworldSprites) + dw $85E0 -CoordsData_75221: ; 75221 (1d:5221) - db $02,$03 - db $02,$04 - db $FF + dw MonOverworldSprites + $C0 + db $10 / $10 ; $10 bytes + db BANK(MonOverworldSprites) + dw $8600 -SafariZoneEntranceScript1: ; 75226 (1d:5226) - call Func_752b4 - ret nz -SafariZoneEntranceScript2: ; 7522a (1d:522a) - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld [wJoypadForbiddenButtonsMask], a - call UpdateSprites - ld a, $4 - ld [$ff8c], a - call DisplayTextID - ld a, $ff - ld [wJoypadForbiddenButtonsMask], a - ret + dw MonOverworldSprites + $D0 + db $10 / $10 ; $10 bytes + db BANK(MonOverworldSprites) + dw $8620 -SafariZoneEntranceScript3: ; 75240 (1d:5240) - call Func_752b4 - ret nz - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $5 - ld [W_SAFARIZONEENTRANCECURSCRIPT], a + dw MonOverworldSprites + $E0 + db $10 / $10 ; $10 bytes + db BANK(MonOverworldSprites) + dw $8640 + + dw MonOverworldSprites + $F0 + db $10 / $10 ; $10 bytes + db BANK(MonOverworldSprites) + dw $8660 + + dw MonOverworldSprites + $140 + db $40 / $10 ; $40 bytes + db BANK(MonOverworldSprites) + dw $8780 + +Func_71868: ; 71868 (1c:5868) + push hl + push de + push bc + ld a, [H_DOWNARROWBLINKCNT2] ; $ff8c + ld hl, W_PARTYMON1 ; $d164 + ld e, a + ld d, $0 + add hl, de + ld a, [hl] + call GetPartyMonSpriteID + ld [$cd5b], a + call Func_718c3 + pop bc + pop de + pop hl ret -SafariZoneEntranceScript5: ; 7524e (1d:524e) - ld a, $4 - ld [$d528], a - ld hl, $d790 - bit 6, [hl] - res 6, [hl] - jr z, .asm_7527f ; 0x7525a $23 - res 7, [hl] - call UpdateSprites - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld a, $6 - ld [$ff8c], a - call DisplayTextID +Func_71882: ; 71882 (1c:5882) xor a - ld [$da47], a - ld a, $80 - ld c, $3 - call Func_752a3 - ld a, $4 - ld [W_SAFARIZONEENTRANCECURSCRIPT], a - jr .asm_75286 ; 0x7527d $7 -.asm_7527f - ld a, $5 - ld [$ff8c], a - call DisplayTextID -.asm_75286 - ret + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + ld a, [$cd5d] + call GetPartyMonSpriteID + ld [$cd5b], a + jr Func_718c3 -SafariZoneEntranceScript4: ; 75287 (1d:5287) - call Func_752b4 - ret nz +Func_71890: ; 71890 (1c:5890) + ld a, [$cf91] + call GetPartyMonSpriteID + push af + ld hl, $8000 + call Func_718ac + pop af + add $54 + ld hl, $8040 + call Func_718ac xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $0 - ld [W_SAFARIZONEENTRANCECURSCRIPT], a - ret + ld [$cd5d], a + jr Func_71882 -SafariZoneEntranceScript6: ; 75295 (1d:5295) - call Func_752b4 - ret nz - call Delay3 - ld a, [$cf0d] - ld [W_SAFARIZONEENTRANCECURSCRIPT], a - ret +Func_718ac: ; 718ac (1c:58ac) + push hl + add a + ld c, a + ld b, $0 + ld hl, MonOverworldSpritePointers + add hl, bc + add hl, bc + add hl, bc + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + pop hl + jp CopyVideoData -Func_752a3: ; 752a3 (1d:52a3) +Func_718c3: ; 718c3 (1c:58c3) push af - ld b, $0 - ld a, c - ld [$cd38], a - ld hl, $ccd3 + ld c, $10 + ld h, $c3 + ld a, [H_DOWNARROWBLINKCNT2] ; $ff8c + swap a + ld l, a + add $10 + ld b, a pop af - call FillMemory - jp Func_3486 + cp $8 + jr z, .asm_718da + call Func_712a6 + jr .asm_718dd +.asm_718da + call Func_71281 +.asm_718dd + ld hl, wOAMBuffer + ld de, $cc5b + ld bc, $60 + jp CopyData -Func_752b4: ; 752b4 (1d:52b4) - ld a, [$cd38] - and a +GetPartyMonSpriteID: ; 718e9 (1c:58e9) + ld [$d11e], a + ld a, $3a + call Predef ; indirect jump to IndexToPokedex (41010 (10:5010)) + ld a, [$d11e] + ld c, a + dec a + srl a + ld hl, MonOverworldData ; $590d + ld e, a + ld d, $0 + add hl, de + ld a, [hl] + bit 0, c + jr nz, .asm_71906 + swap a +.asm_71906 + and $f0 + srl a + srl a ret -SafariZoneEntranceTextPointers: ; 752b9 (1d:52b9) - dw SafariZoneEntranceText1 - dw SafariZoneEntranceText2 - dw SafariZoneEntranceText3 - dw SafariZoneEntranceText4 - dw SafariZoneEntranceText5 - dw SafariZoneEntranceText6 +INCLUDE "data/mon_party_sprites.asm" -SafariZoneEntranceText3: ; 752c5 (1d:52c5) -SafariZoneEntranceText1: ; 752c5 (1d:52c5) - TX_FAR _SafariZoneEntranceText1 - db "@" +MonOverworldSprites: ; 71959 (1c:5959) + INCBIN "gfx/mon_ow_sprites.2bpp" -SafariZoneEntranceText4: ; 752ca (1d:52ca) - TX_FAR UnnamedText_9e6e4 ; 0x9e6e4 - db $8 - ld a, $13 - ld [$d125], a - call DisplayTextBoxID - call YesNoChoice - ld a, [$cc26] +Predef54: ; 71ad9 (1c:5ad9) +; trigger the trade offer/action specified by wWhichTrade + call SaveScreenTilesToBuffer2 + ld hl,TradeMons + ld a,[wWhichTrade] + ld b,a + swap a + sub b + sub b + ld c,a + ld b,$0 + add hl,bc + ld a,[hli] + ld [$cd0f],a + ld a,[hli] + ld [$cd34],a + ld a,[hli] + push af + ld de,$cd29 + ld bc,$000b + call CopyData + pop af + ld l,a + ld h,$0 + ld de,InGameTradeTextPointers ; $5d64 + add hl,hl + add hl,de + ld a,[hli] + ld [$cd10],a + ld a,[hl] + ld [$cd11],a + ld a,[$cd0f] + ld de,$cd13 + call Func_71b6a + ld a,[$cd34] + ld de,$cd1e + call Func_71b6a + ld hl,$d737 + ld a,[wWhichTrade] + ld c,a + ld b,$2 + ld a,$10 + call Predef + ld a,c and a - jp nz, .asm_75346 - xor a - ld [$ff9f], a - ld a, $5 - ld [$ffa0], a - ld a, $0 - ld [$ffa1], a - call HasEnoughMoney - jr nc, .asm_752f9 ; 0x752ef $8 - ld hl, UnnamedText_7536a - call PrintText - jr .asm_7534c ; 0x752f7 $53 -.asm_752f9 + ld a,$4 + ld [$cd12],a + jr nz,.asm_99bca ; 0x71b36 $20 xor a - ld [$cd3d], a - ld a, $5 - ld [$cd3e], a - ld a, $0 - ld [$cd3f], a - ld hl, $cd3f - ld de, $d349 - ld c, $3 - ld a, $c - call Predef - ld a, $13 - ld [$d125], a - call DisplayTextBoxID - ld hl, UnnamedText_7535b - call PrintText - ld a, $1e - ld [$da47], a - ld a, 502 / $100 - ld [wSafariSteps], a - ld a, 502 % $100 - ld [wSafariSteps + 1], a - ld a, $40 - ld c, $3 - call Func_752a3 - ld hl, $d790 - set 7, [hl] - res 6, [hl] - ld a, $3 - ld [W_SAFARIZONEENTRANCECURSCRIPT], a - jr .asm_75358 ; 0x75344 $12 -.asm_75346 - ld hl, UnnamedText_75365 - call PrintText -.asm_7534c - ld a, $80 - ld c, $1 - call Func_752a3 - ld a, $4 - ld [W_SAFARIZONEENTRANCECURSCRIPT], a -.asm_75358 - jp TextScriptEnd - -UnnamedText_7535b: ; 7535b (1d:535b) - TX_FAR UnnamedText_9e747 ; 0x9e747 - db $0B - -UnnamedText_75360: ; 75360 (1d:5360) - TX_FAR _UnnamedText_75360 - db "@" - -UnnamedText_75365: ; 75365 (1d:5365) - TX_FAR _UnnamedText_75365 - db "@" - -UnnamedText_7536a: ; 7536a (1d:536a) - TX_FAR _UnnamedText_7536a - db "@" - -SafariZoneEntranceText5: ; 7536f (1d:536f) - TX_FAR UnnamedText_9e814 ; 0x9e814 - db $8 + ld [$cd12],a + call .asm_99bca + ld a,$1 + ld [$cd12],a call YesNoChoice - ld a, [$cc26] + ld a,[$cc26] and a - jr nz, .asm_7539c ; 0x7537b $1f - ld hl, UnnamedText_753bb - call PrintText - xor a - ld [$c109], a - ld a, $80 - ld c, $3 - call Func_752a3 - ld hl, $d790 - res 6, [hl] - res 7, [hl] - ld a, $0 - ld [$cf0d], a - jr .asm_753b3 ; 0x7539a $17 -.asm_7539c - ld hl, UnnamedText_753c0 + jr nz,.asm_99bca ; 0x71b4b $b + call Func_71c07 + jr c,.asm_99bca ; 0x71b50 $6 + ld hl, TradedForText call PrintText - ld a, $4 - ld [$c109], a - ld a, $40 - ld c, $1 - call Func_752a3 - ld a, $5 - ld [$cf0d], a -.asm_753b3 - ld a, $6 - ld [W_SAFARIZONEENTRANCECURSCRIPT], a - jp TextScriptEnd - -UnnamedText_753bb: ; 753bb (1d:53bb) - TX_FAR _UnnamedText_753bb - db "@" +.asm_99bca ; 0x71b58 + ld hl,$cd12 + ld a,[hld] + ld e,a + ld d,$0 + ld a,[hld] + ld l,[hl] + ld h,a + add hl,de + add hl,de + ld a,[hli] + ld h,[hl] + ld l,a + jp PrintText -UnnamedText_753c0: ; 753c0 (1d:53c0) - TX_FAR _UnnamedText_753c0 - db "@" +Func_71b6a: ; 71b6a (1c:5b6a) + push de + ld [$d11e],a + call GetMonName + ld hl,$cd6d + pop de + ld bc,$b + jp CopyData -SafariZoneEntranceText6: ; 753c5 (1d:53c5) - TX_FAR _UnnamedText_753c5 - db "@" +INCLUDE "data/trades.asm" -SafariZoneEntranceText2: ; 753ca (1d:53ca) - db $08 ; asm - ld hl, UnnamedText_753e6 +Func_71c07: ; 71c07 (1c:5c07) + xor a + ld [$d07d],a + dec a + ld [$cfcb],a + call DisplayPartyMenu + push af + call Func_71ca2 + pop af + ld a,$1 + jp c,.asm_c4bc2 + ld a,[$cd0f] + ld b,a + ld a,[$cf91] + cp b + ld a,$2 + jr nz,.asm_c4bc2 ; 0x71c26 $75 + ld a,[wWhichPokemon] + ld hl,$d18c + ld bc,$002c + call AddNTimes + ld a,[hl] + ld [$d127],a + ld hl,$d737 + ld a,[wWhichTrade] + ld c,a + ld b,$1 + ld a,$10 + call Predef + ld hl, ConnectCableText call PrintText - call YesNoChoice - ld a, [$cc26] + ld a,[wWhichPokemon] + push af + ld a,[$d127] + push af + call LoadHpBarAndStatusTilePatterns + call Func_71cc1 + ld a,$38 + call Predef + pop af + ld [$d127],a + pop af + ld [wWhichPokemon],a + ld a,[$cd34] + ld [$cf91],a + xor a + ld [$cc49],a + ld [$cf95],a + call RemovePokemon + ld a,$80 + ld [$cc49],a + call AddPokemonToParty + call Func_71d19 + ld hl, Func_17d7d + ld b, BANK(Func_17d7d) + call Bankswitch + call ClearScreen + call Func_71ca2 + ld b, BANK(Func_eedc) + ld hl, Func_eedc + call Bankswitch and a - ld hl, UnnamedText_753f0 - jr nz, .asm_278a6 ; 0x753db - ld hl, UnnamedText_753eb -.asm_278a6 ; 0x753e0 - call PrintText - jp TextScriptEnd - -UnnamedText_753e6: ; 753e6 (1d:53e6) - TX_FAR _UnnamedText_753e6 - db "@" - -UnnamedText_753eb: ; 753eb (1d:53eb) - TX_FAR _UnnamedText_753eb - db "@" - -UnnamedText_753f0: ; 753f0 (1d:53f0) - TX_FAR _UnnamedText_753f0 - db "@" - -INCLUDE "data/mapObjects/safarizoneentrance.asm" - -SafariZoneEntranceBlocks: ; 75425 (1d:5425) - INCBIN "maps/safarizoneentrance.blk" + ld a,$3 + jr .asm_ee803 ; 0x71c9b $1 +.asm_c4bc2 ; 0x71c9d + scf +.asm_ee803 ; 0x71c9e + ld [$cd12],a + ret -INCLUDE "data/mapHeaders/fuchsiagym.asm" +Func_71ca2: ; 71ca2 (1c:5ca2) + call GBPalWhiteOutWithDelay3 + call Func_3dbe + call ReloadTilesetTilePatterns + call LoadScreenTilesFromBuffer2 + call Delay3 + call LoadGBPal + ld c, $a + call DelayFrames + ld b, BANK(LoadWildData) + ld hl, LoadWildData + jp Bankswitch -FuchsiaGymScript: ; 7543d (1d:543d) - call FuchsiaGymScript_75453 - call EnableAutoTextBoxDrawing - ld hl, FuchsiaGymTrainerHeaders - ld de, FuchsiaGymScriptPointers - ld a, [W_FUCHSIAGYMCURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_FUCHSIAGYMCURSCRIPT], a - ret +Func_71cc1: ; 71cc1 (1c:5cc1) + ld hl, wWhichTrade ; $cd3d + ld a, [$cd0f] + ld [hli], a + ld a, [$cd34] + ld [hl], a + ld hl, W_PARTYMON1OT ; $d273 + ld bc, $b + ld a, [wWhichPokemon] ; $cf92 + call AddNTimes + ld de, $cd41 + ld bc, $b + call Func_71d11 + ld hl, String_71d59 ; $5d59 + ld de, $cd4e + call Func_71d11 + ld de, W_GRASSRATE ; $d887 + call Func_71d11 + ld hl, W_PARTYMON1_OTID ; $d177 + ld bc, $2c + ld a, [wWhichPokemon] ; $cf92 + call AddNTimes + ld de, $cd4c + ld bc, $2 + call Func_71d11 + call GenRandom + ld hl, H_RAND1 ; $ffd3 + ld de, $cd59 + jp CopyData -FuchsiaGymScript_75453: ; 75453 (1d:5453) - ld hl, $D126 - bit 6, [hl] - res 6, [hl] - ret z - ld hl, Gym5CityName - ld de, Gym5LeaderName - call LoadGymLeaderAndCityName +Func_71d11: ; 71d11 (1c:5d11) + push hl + push bc + call CopyData + pop bc + pop hl ret -Gym5CityName: ; 75465 (1d:5465) - db "FUCHSIA CITY@" -Gym5LeaderName: ; 75472 (1d:5472) - db "KOGA@" +Func_71d19: ; 71d19 (1c:5d19) + ld hl, W_PARTYMON1NAME ; $d2b5 + ld bc, $b + call Func_71d4f + ld hl, $cd29 + ld bc, $b + call CopyData + ld hl, W_PARTYMON1OT ; $d273 + ld bc, $b + call Func_71d4f + ld hl, String_71d59 ; $5d59 + ld bc, $b + call CopyData + ld hl, W_PARTYMON1_OTID ; $d177 + ld bc, $2c + call Func_71d4f + ld hl, $cd59 + ld bc, $2 + jp CopyData -Func_75477: ; 75477 (1d:5477) - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_FUCHSIAGYMCURSCRIPT], a - ld [W_CURMAPSCRIPT], a +Func_71d4f: ; 71d4f (1c:5d4f) + ld a, [W_NUMINPARTY] ; $d163 + dec a + call AddNTimes + ld e, l + ld d, h ret -FuchsiaGymScriptPointers: ; 75482 (1d:5482) - dw CheckFightingMapTrainers - dw Func_324c - dw EndTrainerBattle - dw FuchsiaGymScript3 - -FuchsiaGymScript3: ; 7548a (1d:548a) - ld a, [W_ISINBATTLE] ; $d057 - cp $ff - jp z, Func_75477 - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a -FuchsiaGymScript3_75497: ; 75497 (1d:5497) - ld a, $9 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld hl, $d792 - set 1, [hl] - ld bc, (TM_06 << 8) | 1 - call GiveItem - jr nc, .BagFull - ld a, $a - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld hl, $d792 - set 0, [hl] - jr .asm_754c0 -.BagFull - ld a, $b - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID -.asm_754c0 - ld hl, W_OBTAINEDBADGES - set 4, [hl] - ld hl, $d72a - set 4, [hl] +String_71d59: ; 71d59 (1c:5d59) + ; "TRAINER@@@@@@@@@@" + db $5d, "@@@@@@@@@@" - ; deactivate gym trainers - ld a, [$d792] - or %11111100 - ld [$d792], a - - jp Func_75477 - -FuchsiaGymTextPointers: ; 754d5 (1d:54d5) - dw FuchsiaGymText1 - dw FuchsiaGymText2 - dw FuchsiaGymText3 - dw FuchsiaGymText4 - dw FuchsiaGymText5 - dw FuchsiaGymText6 - dw FuchsiaGymText7 - dw FuchsiaGymText8 - dw FuchsiaGymText9 - dw FuchsiaGymText10 - dw FuchsiaGymText11 - -FuchsiaGymTrainerHeaders: ; 754eb (1d:54eb) -FuchsiaGymTrainerHeader0: ; 754eb (1d:54eb) - db $2 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d792 ; flag's byte - dw FuchsiaGymBattleText1 ; 0x55ae TextBeforeBattle - dw FuchsiaGymAfterBattleText1 ; 0x55b8 TextAfterBattle - dw FuchsiaGymEndBattleText1 ; 0x55b3 TextEndBattle - dw FuchsiaGymEndBattleText1 ; 0x55b3 TextEndBattle - -FuchsiaGymTrainerHeader2: ; 754f7 (1d:54f7) - db $3 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d792 ; flag's byte - dw FuchsiaGymBattleText2 ; 0x55c7 TextBeforeBattle - dw FuchsiaGymAfterBattleText2 ; 0x55d1 TextAfterBattle - dw FuchsiaGymEndBattleText2 ; 0x55cc TextEndBattle - dw FuchsiaGymEndBattleText2 ; 0x55cc TextEndBattle - -FuchsiaGymTrainerHeader3: ; 75503 (1d:5503) - db $4 ; flag's bit - db ($4 << 4) ; trainer's view range - dw $d792 ; flag's byte - dw FuchsiaGymBattleText3 ; 0x55e0 TextBeforeBattle - dw FuchsiaGymAfterBattleText3 ; 0x55ea TextAfterBattle - dw FuchsiaGymEndBattleText3 ; 0x55e5 TextEndBattle - dw FuchsiaGymEndBattleText3 ; 0x55e5 TextEndBattle - -FuchsiaGymTrainerHeader4: ; 7550f (1d:550f) - db $5 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d792 ; flag's byte - dw FuchsiaGymBattleText4 ; 0x55f9 TextBeforeBattle - dw FuchsiaGymAfterBattleText4 ; 0x5603 TextAfterBattle - dw FuchsiaGymEndBattleText4 ; 0x55fe TextEndBattle - dw FuchsiaGymEndBattleText4 ; 0x55fe TextEndBattle - -FuchsiaGymTrainerHeader5: ; 7551b (1d:551b) - db $6 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d792 ; flag's byte - dw FuchsiaGymBattleText5 ; 0x5612 TextBeforeBattle - dw FuchsiaGymAfterBattleText5 ; 0x561c TextAfterBattle - dw FuchsiaGymEndBattleText5 ; 0x5617 TextEndBattle - dw FuchsiaGymEndBattleText5 ; 0x5617 TextEndBattle - -FuchsiaGymTrainerHeader6: ; 75527 (1d:5527) - db $7 ; flag's bit - db ($2 << 4) ; trainer's view range - dw $d792 ; flag's byte - dw FuchsiaGymBattleText6 ; 0x562b TextBeforeBattle - dw FuchsiaGymAfterBattleText6 ; 0x5635 TextAfterBattle - dw FuchsiaGymEndBattleText6 ; 0x5630 TextEndBattle - dw FuchsiaGymEndBattleText6 ; 0x5630 TextEndBattle +InGameTradeTextPointers: ; 71d64 (1c:5d64) + dw TradeTextPointers1 + dw TradeTextPointers2 + dw TradeTextPointers3 - db $ff +TradeTextPointers1: ; 71d6a (1c:5d6a) + dw WannaTrade1Text + dw NoTrade1Text + dw WrongMon1Text + dw Thanks1Text + dw AfterTrade1Text -FuchsiaGymText1: ; 75534 (1d:5534) - db $08 ; asm - ld a, [$d792] - bit 1, a - jr z, .asm_181b6 ; 0x7553a - bit 0, a - jr nz, .asm_adc3b ; 0x7553e - call z, FuchsiaGymScript3_75497 - call DisableWaitingAfterTextDisplay - jr .asm_e84c6 ; 0x75546 -.asm_adc3b ; 0x75548 - ld hl, UnnamedText_7558b - call PrintText - jr .asm_e84c6 ; 0x7554e -.asm_181b6 ; 0x75550 - ld hl, UnnamedText_75581 - call PrintText - ld hl, $d72d - set 6, [hl] - set 7, [hl] - ld hl, UnnamedText_75586 - ld de, UnnamedText_75586 - call PreBattleSaveRegisters - ldh a, [$8c] - ld [$cf13], a - call EngageMapTrainer - call InitBattleEnemyParameters - ld a, $5 - ld [$d05c], a - xor a - ldh [$b4], a - ld a, $3 - ld [W_FUCHSIAGYMCURSCRIPT], a -.asm_e84c6 ; 0x7557e - jp TextScriptEnd +TradeTextPointers2: ; 71d74 (1c:5d74) + dw WannaTrade2Text + dw NoTrade2Text + dw WrongMon2Text + dw Thanks2Text + dw AfterTrade2Text -UnnamedText_75581: ; 75581 (1d:5581) - TX_FAR _UnnamedText_75581 - db "@" +TradeTextPointers3: ; 71d7e (1c:5d7e) + dw WannaTrade3Text + dw NoTrade3Text + dw WrongMon3Text + dw Thanks3Text + dw AfterTrade3Text -UnnamedText_75586: ; 75586 (1d:5586) - TX_FAR _UnnamedText_75586 +ConnectCableText: ; 71d88 (1c:5d88) + TX_FAR _ConnectCableText db "@" -UnnamedText_7558b: ; 7558b (1d:558b) - TX_FAR _UnnamedText_7558b - db "@" +TradedForText: ; 71d8d (1c:5d8d) + TX_FAR _TradedForText + db $11, $a, "@" -FuchsiaGymText9: ; 75590 (1d:5590) - TX_FAR _UnnamedText_75590 +WannaTrade1Text: ; 71d94 (1c:5d94) + TX_FAR _WannaTrade1Text db "@" -FuchsiaGymText10: ; 75595 (1d:5595) - TX_FAR _ReceivedTM06Text - db $11 - -TM06ExplanationText: ; 7559a (1d:559a) - TX_FAR _TM06ExplanationText +NoTrade1Text: ; 71d99 (1c:5d99) + TX_FAR _NoTrade1Text db "@" -FuchsiaGymText11: ; 7559f (1d:559f) - TX_FAR _TM06NoRoomText +WrongMon1Text: ; 71d9e (1c:5d9e) + TX_FAR _WrongMon1Text db "@" -FuchsiaGymText2: ; 755a4 (1d:55a4) - db $08 ; asm - ld hl, FuchsiaGymTrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -FuchsiaGymBattleText1: ; 755ae (1d:55ae) - TX_FAR _FuchsiaGymBattleText1 +Thanks1Text: ; 71da3 (1c:5da3) + TX_FAR _Thanks1Text db "@" -FuchsiaGymEndBattleText1: ; 755b3 (1d:55b3) - TX_FAR _FuchsiaGymEndBattleText1 +AfterTrade1Text: ; 71da8 (1c:5da8) + TX_FAR _AfterTrade1Text db "@" -FuchsiaGymAfterBattleText1: ; 755b8 (1d:55b8) - TX_FAR _FuchsiaGymAfterBattleText1 +WannaTrade2Text: ; 71dad (1c:5dad) + TX_FAR _WannaTrade2Text db "@" -FuchsiaGymText3: ; 755bd (1d:55bd) - db $08 ; asm - ld hl, FuchsiaGymTrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -FuchsiaGymBattleText2: ; 755c7 (1d:55c7) - TX_FAR _FuchsiaGymBattleText2 +NoTrade2Text: ; 71db2 (1c:5db2) + TX_FAR _NoTrade2Text db "@" -FuchsiaGymEndBattleText2: ; 755cc (1d:55cc) - TX_FAR _FuchsiaGymEndBattleText2 +WrongMon2Text: ; 71db7 (1c:5db7) + TX_FAR _WrongMon2Text db "@" -FuchsiaGymAfterBattleText2: ; 755d1 (1d:55d1) - TX_FAR _FuchsiaGymAfterBattleText2 +Thanks2Text: ; 71dbc (1c:5dbc) + TX_FAR _Thanks2Text db "@" -FuchsiaGymText4: ; 755d6 (1d:55d6) - db $08 ; asm - ld hl, FuchsiaGymTrainerHeader3 - call TalkToTrainer - jp TextScriptEnd - -FuchsiaGymBattleText3: ; 755e0 (1d:55e0) - TX_FAR _FuchsiaGymBattleText3 +AfterTrade2Text: ; 71dc1 (1c:5dc1) + TX_FAR _AfterTrade2Text db "@" -FuchsiaGymEndBattleText3: ; 755e5 (1d:55e5) - TX_FAR _FuchsiaGymEndBattleText3 +WannaTrade3Text: ; 71dc6 (1c:5dc6) + TX_FAR _WannaTrade3Text db "@" -FuchsiaGymAfterBattleText3: ; 755ea (1d:55ea) - TX_FAR _FuchsiaGymAfterBattleText3 +NoTrade3Text: ; 71dcb (1c:5dcb) + TX_FAR _NoTrade3Text db "@" -FuchsiaGymText5: ; 755ef (1d:55ef) - db $08 ; asm - ld hl, FuchsiaGymTrainerHeader4 - call TalkToTrainer - jp TextScriptEnd - -FuchsiaGymBattleText4: ; 755f9 (1d:55f9) - TX_FAR _FuchsiaGymBattleText4 +WrongMon3Text: ; 71dd0 (1c:5dd0) + TX_FAR _WrongMon3Text db "@" -FuchsiaGymEndBattleText4: ; 755fe (1d:55fe) - TX_FAR _FuchsiaGymEndBattleText4 +Thanks3Text: ; 71dd5 (1c:5dd5) + TX_FAR _Thanks3Text db "@" -FuchsiaGymAfterBattleText4: ; 75603 (1d:5603) - TX_FAR _FuchsiaGymAfterBattleText4 +AfterTrade3Text: ; 71dda (1c:5dda) + TX_FAR _AfterTrade3Text db "@" -FuchsiaGymText6: ; 75608 (1d:5608) - db $08 ; asm - ld hl, FuchsiaGymTrainerHeader5 - call TalkToTrainer - jp TextScriptEnd - -FuchsiaGymBattleText5: ; 75612 (1d:5612) - TX_FAR _FuchsiaGymBattleText5 - db "@" +Func_71ddf: ; 71ddf (1c:5ddf) + call Load16BitRegisters + ld a, b + cp $ff + jr nz, .asm_71dea + ld a, [$cf1c] +.asm_71dea + cp $fc + jp z, Func_71fc2 + ld l, a + ld h, $0 + add hl, hl + ld de, PointerTable_71f73 + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ld de, Func_72156 + push de + jp [hl] -FuchsiaGymEndBattleText5: ; 75617 (1d:5617) - TX_FAR _FuchsiaGymEndBattleText5 - db "@" +SendPalPacket_Black: ; 71dff (1c:5dff) + ld hl, PalPacket_Black + ld de, BlkPacket_Battle + ret -FuchsiaGymAfterBattleText5: ; 7561c (1d:561c) - TX_FAR _FuchsiaGymAfterBattleText5 - db "@" +; uses PalPacket_Empty to build a packet based on mon IDs and health color +BuildBattlePalPacket: ; 71e06 (1c:5e06) + ld hl, PalPacket_Empty + ld de, $cf2d + ld bc, $10 + call CopyData + ld a, [W_PLAYERBATTSTATUS3] + ld hl, W_PLAYERMONID + call DeterminePaletteID + ld b, a + ld a, [W_ENEMYBATTSTATUS3] + ld hl, W_ENEMYMONID + call DeterminePaletteID + ld c, a + ld hl, $cf2e + ld a, [$cf1d] + add PAL_GREENBAR + ld [hli], a + inc hl + ld a, [$cf1e] + add PAL_GREENBAR + ld [hli], a + inc hl + ld a, b + ld [hli], a + inc hl + ld a, c + ld [hl], a + ld hl, $cf2d + ld de, BlkPacket_Battle + ld a, $1 + ld [$cf1c], a + ret -FuchsiaGymText7: ; 75621 (1d:5621) - db $08 ; asm - ld hl, FuchsiaGymTrainerHeader6 - call TalkToTrainer - jp TextScriptEnd +SendPalPacket_TownMap: ; 71e48 (1c:5e48) + ld hl, PalPacket_TownMap + ld de, BlkPacket_WholeScreen + ret -FuchsiaGymBattleText6: ; 7562b (1d:562b) - TX_FAR _FuchsiaGymBattleText6 - db "@" +; uses PalPacket_Empty to build a packet based the mon ID +BuildStatusScreenPalPacket: ; 71e4f (1c:5e4f) + ld hl, PalPacket_Empty + ld de, $cf2d + ld bc, $10 + call CopyData + ld a, [$cf91] + cp VICTREEBEL + 1 + jr c, .pokemon + ld a, $1 ; not pokemon +.pokemon + call DeterminePaletteIDOutOfBattle + push af + ld hl, $cf2e + ld a, [$cf25] + add $1f + ld [hli], a + inc hl + pop af + ld [hl], a + ld hl, $cf2d + ld de, BlkPacket_StatusScreen + ret -FuchsiaGymEndBattleText6: ; 75630 (1d:5630) - TX_FAR _FuchsiaGymEndBattleText6 - db "@" +SendPalPacket_PartyMenu: ; 71e7b (1c:5e7b) + ld hl, PalPacket_PartyMenu + ld de, $cf2e + ret -FuchsiaGymAfterBattleText6: ; 75635 (1d:5635) - TX_FAR _FuchsiaGymAfterBattleText6 - db "@" +SendPalPacket_Pokedex: ; 71e82 (1c:5e82) + ld hl, PalPacket_Pokedex + ld de, $cf2d + ld bc, $10 + call CopyData + ld a, [$cf91] + call DeterminePaletteIDOutOfBattle + ld hl, $cf30 + ld [hl], a + ld hl, $cf2d + ld de, BlkPacket_Pokedex + ret -FuchsiaGymText8: ; 7563a (1d:563a) - db $08 ; asm - ld a, [$d792] - bit 1, a - ld hl, UnnamedText_75653 - jr nz, .asm_50671 ; 0x75643 - ld hl, UnnamedText_7564e -.asm_50671 ; 0x75648 - call PrintText - jp TextScriptEnd +SendPalPacket_Slots: ; 71e9f (1c:5e9f) + ld hl, PalPacket_Slots + ld de, BlkPacket_Slots + ret -UnnamedText_7564e: ; 7564e (1d:564e) - TX_FAR _UnnamedText_7564e - db "@" +SendPalPacket_Titlescreen: ; 71ea6 (1c:5ea6) + ld hl, PalPacket_Titlescreen + ld de, BlkPacket_Titlescreen + ret -UnnamedText_75653: ; 75653 (1d:5653) - TX_FAR _UnnamedText_75653 - db "@" +; used mostly for menus and the Oak intro +SendPalPacket_Generic: ; 71ead (1c:5ead) + ld hl, PalPacket_Generic + ld de, BlkPacket_WholeScreen + ret -INCLUDE "data/mapObjects/fuchsiagym.asm" +SendPalPacket_NidorinoIntro: ; 71eb4 (1c:5eb4) + ld hl, PalPacket_NidorinoIntro + ld de, BlkPacket_NidorinoIntro + ret -FuchsiaGymBlocks: ; 756aa (1d:56aa) - INCBIN "maps/fuchsiagym.blk" +SendPalPacket_GameFreakIntro: ; 71ebb (1c:5ebb) + ld hl, PalPacket_GameFreakIntro + ld de, BlkPacket_GameFreakIntro + ld a, $8 + ld [$cf1c], a + ret -INCLUDE "data/mapHeaders/fuchsiameetingroom.asm" +; uses PalPacket_Empty to build a packet based on the current map +BuildOverworldPalPacket: ; 71ec7 (1c:5ec7) + ld hl, PalPacket_Empty + ld de, $cf2d + ld bc, $10 + call CopyData + ld a, [W_CURMAPTILESET] + cp CEMETERY + jr z, .PokemonTowerOrAgatha + cp CAVERN + jr z, .caveOrBruno + ld a, [W_CURMAP] + cp REDS_HOUSE_1F + jr c, .townOrRoute + cp UNKNOWN_DUNGEON_2 + jr c, .normalDungeonOrBuilding + cp NAME_RATERS_HOUSE + jr c, .caveOrBruno + cp LORELEIS_ROOM + jr z, .Lorelei + cp BRUNOS_ROOM + jr z, .caveOrBruno +.normalDungeonOrBuilding + ld a, [$d365] ; town or route that current dungeon or building is located +.townOrRoute + cp SAFFRON_CITY + 1 + jr c, .town + ld a, PAL_ROUTE - 1 +.town + inc a ; a town's pallete ID is its map ID + 1 + ld hl, $cf2e + ld [hld], a + ld de, BlkPacket_WholeScreen + ld a, $9 + ld [$cf1c], a + ret +.PokemonTowerOrAgatha + ld a, PAL_GREYMON - 1 + jr .town +.caveOrBruno + ld a, PAL_CAVE - 1 + jr .town +.Lorelei + xor a + jr .town -FuchsiaMeetingRoomScript: ; 756e3 (1d:56e3) - call EnableAutoTextBoxDrawing +; used when a Pokemon is the only thing on the screen +; such as evolution, trading and the Hall of Fame +SendPokemonPalette_WholeScreen: ; 71f17 (1c:5f17) + push bc + ld hl, PalPacket_Empty + ld de, $cf2d + ld bc, $10 + call CopyData + pop bc + ld a, c + and a + ld a, $1e + jr nz, .asm_71f31 + ld a, [$cf1d] + call DeterminePaletteIDOutOfBattle +.asm_71f31 + ld [$cf2e], a + ld hl, $cf2d + ld de, BlkPacket_WholeScreen ret -FuchsiaMeetingRoomTextPointers: ; 756e7 (1d:56e7) - dw FuchsiaMeetingRoomText1 - dw FuchsiaMeetingRoomText2 - dw FuchsiaMeetingRoomText3 +BuildTrainerCardPalPacket: ; 71f3b (1c:5f3b) + ld hl, BlkPacket_TrainerCard + ld de, $cc5b + ld bc, $40 + call CopyData + ld de, LoopCounts_71f8f + ld hl, $cc5d + ld a, [W_OBTAINEDBADGES] + ld c, $8 +.asm_71f52 + srl a + push af + jr c, .asm_71f62 + push bc + ld a, [de] + ld c, a + xor a +.asm_71f5b + ld [hli], a + dec c + jr nz, .asm_71f5b + pop bc + jr .asm_71f67 +.asm_71f62 + ld a, [de] +.asm_71f63 + inc hl + dec a + jr nz, .asm_71f63 +.asm_71f67 + pop af + inc de + dec c + jr nz, .asm_71f52 + ld hl, PalPacket_TrainerCard + ld de, $cc5b + ret -FuchsiaMeetingRoomText1: ; 756ed (1d:56ed) - TX_FAR _FuchsiaMeetingRoomText1 - db "@" +PointerTable_71f73: ; 71f73 (1c:5f73) + dw SendPalPacket_Black + dw BuildBattlePalPacket + dw SendPalPacket_TownMap + dw BuildStatusScreenPalPacket + dw SendPalPacket_Pokedex + dw SendPalPacket_Slots + dw SendPalPacket_Titlescreen + dw SendPalPacket_NidorinoIntro + dw SendPalPacket_Generic + dw BuildOverworldPalPacket + dw SendPalPacket_PartyMenu + dw SendPokemonPalette_WholeScreen + dw SendPalPacket_GameFreakIntro + dw BuildTrainerCardPalPacket -FuchsiaMeetingRoomText2: ; 756f2 (1d:56f2) - TX_FAR _FuchsiaMeetingRoomText2 - db "@" +; each byte is the number of loops to make in .asm_71f5b for each badge +LoopCounts_71f8f: ; 71f8f (1c:5f8f) + db $06,$06,$06,$12,$06,$06,$06,$06 -FuchsiaMeetingRoomText3: ; 756f7 (1d:56f7) - TX_FAR _FuchsiaMeetingRoomText3 - db "@" +DeterminePaletteID: ; 71f97 (1c:5f97) + bit 3, a ; bit 3 of battle status 3, set if current Pokemon is transformed + ld a, PAL_GREYMON ; if yes, use Ditto's palette + ret nz + ld a, [hl] +DeterminePaletteIDOutOfBattle: ; 71f9d (1c:5f9d) + ld [$D11E], a + and a + jr z, .idZero + push bc + ld a, $3A + call Predef ; turn Pokemon ID number into Pokedex number + pop bc + ld a, [$D11E] +.idZero + ld e, a + ld d, $00 + ld hl, MonsterPalettes ; not just for Pokemon, Trainers use it too + add hl, de + ld a, [hl] + ret -INCLUDE "data/mapObjects/fuchsiameetingroom.asm" +SendBlkPacket_PartyMenu: ; 71fb6 (1c:5fb6) + ld hl, BlkPacket_PartyMenu ; $62f4 + ld de, $cf2e + ld bc, $30 + jp CopyData -FuchsiaMeetingRoomBlocks: ; 75722 (1d:5722) - INCBIN "maps/fuchsiameetingroom.blk" +Func_71fc2: ; 71fc2 (1c:5fc2) + ld hl, $cf1f + ld a, [$cf2d] + ld e, a + ld d, $0 + add hl, de + ld e, l + ld d, h + ld a, [de] + and a + ld e, $5 + jr z, .asm_71fdb + dec a + ld e, $a + jr z, .asm_71fdb + ld e, $f +.asm_71fdb + push de + ld hl, $cf37 + ld bc, $6 + ld a, [$cf2d] + call AddNTimes + pop de + ld [hl], e + ret -INCLUDE "data/mapHeaders/cinnabargym.asm" +SendSGBPacket: ; 71feb (1c:5feb) +;check number of packets + ld a,[hl] + and a,$07 + ret z +; store number of packets in B + ld b,a +.loop2 +; save B for later use + push bc +; load a non-zero value in $fff9 to disable the routine that checks actual +; joypad input (said routine, located at $15f, does nothing if $fff9 is not +; zero) + ld a,$01 + ld [$fff9],a +; send RESET signal (P14=LOW, P15=LOW) + xor a + ld [$ff00],a +; set P14=HIGH, P15=HIGH + ld a,$30 + ld [$ff00],a +;load length of packets (16 bytes) + ld b,$10 +.nextByte +;set bit counter (8 bits per byte) + ld e,$08 +; get next byte in the packet + ld a,[hli] + ld d,a +.nextBit0 + bit 0,d +; if 0th bit is not zero set P14=HIGH,P15=LOW (send bit 1) + ld a,$10 + jr nz,.next0 +; else (if 0th bit is zero) set P14=LOW,P15=HIGH (send bit 0) + ld a,$20 +.next0 + ld [$ff00],a +; must set P14=HIGH,P15=HIGH between each "pulse" + ld a,$30 + ld [$ff00],a +; rotation will put next bit in 0th position (so we can always use command +; "bit 0,d" to fetch the bit that has to be sent) + rr d +; decrease bit counter so we know when we have sent all 8 bits of current byte + dec e + jr nz,.nextBit0 + dec b + jr nz,.nextByte +; send bit 1 as a "stop bit" (end of parameter data) + ld a,$20 + ld [$ff00],a +; set P14=HIGH,P15=HIGH + ld a,$30 + ld [$ff00],a + xor a + ld [$fff9],a +; wait for about 70000 cycles + call Wait7000 +; restore (previously pushed) number of packets + pop bc + dec b +; return if there are no more packets + ret z +; else send 16 more bytes + jr .loop2 -CinnabarGymScript: ; 7574a (1d:574a) - call CinnabarGymScript_75759 - call EnableAutoTextBoxDrawing - ld hl, CinnabarGymScriptPointers - ld a, [W_CINNABARGYMCURSCRIPT] - jp CallFunctionInTable +LoadSGBBorderAndPalettes: ; 7202b (1c:602b) + xor a + ld [$cf1b], a + call Func_7209b + ret nc + ld a, $1 + ld [$cf1b], a + ld a, [$cf1a] + and a + jr z, .asm_7203f + ret +.asm_7203f + di + call Func_72075 + ei + ld a, $1 + ld [$cf2d], a + ld de, PalPacket_72508 + ld hl, SGBBorderGraphics + call Func_7210b + xor a + ld [$cf2d], a + ld de, PalPacket_72518 + ld hl, BorderPalettes + call Func_7210b + xor a + ld [$cf2d], a + ld de, PalPacket_724d8 + ld hl, SuperPalettes + call Func_7210b + call ZeroVram + ld hl, PalPacket_72538 + jp SendSGBPacket -CinnabarGymScript_75759: ; 75759 (1d:5759) - ld hl, $D126 - bit 6, [hl] - res 6, [hl] +Func_72075: ; 72075 (1c:6075) + ld hl, PointerTable_72089 + ld c, $9 +.asm_7207a + push bc + ld a, [hli] push hl - call nz, CinnabarGymScript_75772 + ld h, [hl] + ld l, a + call SendSGBPacket pop hl - bit 5, [hl] - res 5, [hl] - call nz, Func_3ead - ld hl, $D79B - res 7, [hl] + inc hl + pop bc + dec c + jr nz, .asm_7207a ret -CinnabarGymScript_75772: ; 75772 (1d:5772) - ld hl, Gym7CityName - ld de, Gym7LeaderName - jp LoadGymLeaderAndCityName -Gym7CityName: ; 7577b (1d:577b) - db "CINNABAR ISLAND@" -Gym7LeaderName: ; 7578b (1d:578b) - db "BLAINE@" +PointerTable_72089: ; 72089 (1c:6089) + dw PalPacket_72528 + dw PalPacket_72548 + dw PalPacket_72558 + dw PalPacket_72568 + dw PalPacket_72578 + dw PalPacket_72588 + dw PalPacket_72598 + dw PalPacket_725a8 + dw PalPacket_725b8 -CinnabarGymScript_75792: ; 75792 (1d:5792) - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_CINNABARGYMCURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ld [$da38], a +Func_7209b: ; 7209b (1c:609b) + ld hl, PalPacket_724f8 + di + call SendSGBPacket + ld a, $1 + ld [$fff9], a + ei + call Wait7000 + ld a, [rJOYP] ; $ff0 + and $3 + cp $3 + jr nz, .asm_720fd + ld a, $20 + ld [rJOYP], a ; $ff0 + ld a, [rJOYP] ; $ff0 + ld a, [rJOYP] ; $ff0 + call Wait7000 + call Wait7000 + ld a, $30 + ld [rJOYP], a ; $ff0 + call Wait7000 + call Wait7000 + ld a, $10 + ld [rJOYP], a ; $ff0 + ld a, [rJOYP] ; $ff0 + ld a, [rJOYP] ; $ff0 + ld a, [rJOYP] ; $ff0 + ld a, [rJOYP] ; $ff0 + ld a, [rJOYP] ; $ff0 + ld a, [rJOYP] ; $ff0 + call Wait7000 + call Wait7000 + ld a, $30 + ld [rJOYP], a ; $ff0 + ld a, [rJOYP] ; $ff0 + ld a, [rJOYP] ; $ff0 + ld a, [rJOYP] ; $ff0 + call Wait7000 + call Wait7000 + ld a, [rJOYP] ; $ff0 + and $3 + cp $3 + jr nz, .asm_720fd + call Func_72102 + and a ret - -CinnabarGymScript_757a0: ; 757a0 (1d:57a0) - ld a, [H_DOWNARROWBLINKCNT2] ; $ff8c - ld [wTrainerHeaderFlagBit], a +.asm_720fd + call Func_72102 + scf ret -CinnabarGymScriptPointers: ; 757a6 (1d:57a6) - dw CinnabarGymScript0 - dw CinnabarGymScript1 - dw CinnabarGymScript2 - dw CinnabarGymScript3 +Func_72102: ; 72102 (1c:6102) + ld hl, PalPacket_724e8 + call SendSGBPacket + jp Wait7000 -CinnabarGymScript0: ; 757ae (1d:57ae) - ld a, [$da38] +Func_7210b: ; 7210b (1c:610b) + di + push de + call DisableLCD + ld a, $e4 + ld [rBGP], a ; $ff47 + ld de, $8800 + ld a, [$cf2d] and a - ret z - ld [$ff8c], a - cp $4 - jr nz, .asm_757c3 ; 0x757b7 $a - ld a, $4 - ld [$d528], a - ld de, MovementData_757d7 - jr .asm_757cb ; 0x757c1 $8 -.asm_757c3 - ld de, MovementData_757da - ld a, $1 - ld [$d528], a -.asm_757cb - call MoveSprite - ld a, $1 - ld [W_CINNABARGYMCURSCRIPT], a - ld [W_CURMAPSCRIPT], a + jr z, .asm_72122 + call Func_72188 + jr .asm_72128 +.asm_72122 + ld bc, $1000 + call CopyData +.asm_72128 + ld hl, $9800 + ld de, $c + ld a, $80 + ld c, $d +.asm_72132 + ld b, $14 +.asm_72134 + ld [hli], a + inc a + dec b + jr nz, .asm_72134 + add hl, de + dec c + jr nz, .asm_72132 + ld a, $e3 + ld [rLCDC], a ; $ff40 + pop hl + call SendSGBPacket + xor a + ld [rBGP], a ; $ff47 + ei ret -MovementData_757d7: ; 757d7 (1d:57d7) - db $80,$40,$FF +Wait7000: ; 7214a (1c:614a) +; each loop takes about 10 cycles so this routine actually loops through 70000 +; cycles. + ld de, 7000 +.loop + nop + nop + nop + dec de + ld a, d + or e + jr nz, .loop + ret -MovementData_757da: ; 757da (1d:57da) - db $80,$FF +Func_72156: ; 72156 (1c:6156) + ld a, [$cf1a] + and a + jr z, .asm_72165 + push de + call Func_7216d + pop hl + call Func_72187 + ret +.asm_72165 + push de + call SendSGBPacket + pop hl + jp SendSGBPacket -CinnabarGymScript1: ; 757dc (1d:57dc) - ld a, [$d730] - bit 0, a - ret nz - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, [$da38] - ld [wTrainerHeaderFlagBit], a - ld [$ff8c], a - jp DisplayTextID +Func_7216d: ; 7216d (1c:616d) + ld a, $80 + ld [$ff68], a + inc hl + ld c, $20 +.asm_72174 + ld a, [hli] + inc hl + add a + add a + add a + ld de, SuperPalettes + add e + jr nc, .asm_72180 + inc d +.asm_72180 + ld a, [de] + ld [$ff69], a + dec c + jr nz, .asm_72174 + ret -Func_757f1: ; 757f1 (1d:57f1) - ld a, $10 - jp Predef ; indirect jump to HandleBitArray (f666 (3:7666)) +Func_72187: ; 72187 (1c:6187) + ret -CinnabarGymScript2: ; 757f6 (1d:57f6) - ld a, [$d057] - cp $ff - jp z, CinnabarGymScript_75792 - ld a, [wTrainerHeaderFlagBit] - ld [$ffdb], a - ld c, a - ld b, $2 - ld hl, $d79a - call Func_757f1 - ld a, c - and a - jr nz, .asm_7581b ; 0x7580e $b - call WaitForSoundToFinish - ld a, (SFX_02_57 - SFX_Headers_02) / 3 - call PlaySound - call WaitForSoundToFinish -.asm_7581b - ld a, [wTrainerHeaderFlagBit] - ld [$ffdb], a - ld c, a - ld b, $1 - ld hl, $d79a - call Func_757f1 - ld a, [wTrainerHeaderFlagBit] - sub $2 - ld c, a - ld b, $1 - ld hl, $d79c - call Func_757f1 - call Func_3ead +Func_72188: ; 72188 (1c:6188) + ld b, $80 +.asm_7218a + ld c, $10 +.asm_7218c + ld a, [hli] + ld [de], a + inc de + dec c + jr nz, .asm_7218c + ld c, $10 xor a - ld [wJoypadForbiddenButtonsMask], a - ld [$da38], a - ld a, $0 - ld [W_CINNABARGYMCURSCRIPT], a - ld [W_CURMAPSCRIPT], a +.asm_72195 + ld [de], a + inc de + dec c + jr nz, .asm_72195 + dec b + jr nz, .asm_7218a ret -CinnabarGymScript3: ; 7584a (1d:584a) - ld a, [$d057] - cp $ff - jp z, CinnabarGymScript_75792 - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a -CinnabarGymScript3_75857: ; 75857 (1d:5857) - ld a, $a - ld [$ff8c], a - call DisplayTextID - ld hl, $d79a - set 1, [hl] - ld bc, (TM_38 << 8) | 1 - call GiveItem - jr nc, .BagFull - ld a, $b - ld [$ff8c], a - call DisplayTextID - ld hl, $d79a - set 0, [hl] - jr .asm_75880 ; 0x75877 $7 -.BagFull - ld a, $c - ld [$ff8c], a - call DisplayTextID -.asm_75880 - ld hl, W_OBTAINEDBADGES - set 6, [hl] - ld hl, $d72a - set 6, [hl] +BlkPacket_WholeScreen: ; 7219e (1c:619e) + db $21,$01,$03,$00,$00,$00,$13,$11,$00,$00,$00,$00,$00,$00,$00,$00 + db $03,$00,$00,$13,$11,$00,$00 - ; deactivate gym trainers - ld a, [$d79a] - or %11111100 - ld [$d79a], a - ld hl, $d79b - set 0, [hl] +BlkPacket_Battle: ; 721b5 (1c:61b5) + db $22,$05,$07,$0a,$00,$0c,$13,$11,$03,$05,$01,$00,$0a,$03,$03,$00 + db $0a,$07,$13,$0a,$03,$0a,$00,$04,$08,$0b,$03,$0f,$0b,$00,$13,$06 + db $03,$00,$00,$13,$0b,$00,$03,$00,$0c,$13,$11,$02,$03,$01,$00,$0a + db $03,$01,$03,$0a,$08,$13,$0a,$00,$03,$00,$04,$08,$0b,$02,$03,$0b + db $00,$13,$07,$03,$00 - ld hl, $d126 - set 5, [hl] +BlkPacket_StatusScreen: ; 721fa (1c:61fa) + db $21,$01,$07,$05,$01,$00,$07,$06,$00,$00,$00,$00,$00,$00,$00,$00 + db $02,$00,$00,$11,$00,$03,$01,$00,$07,$06,$01,$03,$01,$07,$13,$11 + db $00,$03,$08,$00,$13,$06,$00,$00 - jp CinnabarGymScript_75792 - -CinnabarGymTextPointers: ; 7589f (1d:589f) - dw CinnabarGymText1 - dw CinnabarGymText2 - dw CinnabarGymText3 - dw CinnabarGymText4 - dw CinnabarGymText5 - dw CinnabarGymText6 - dw CinnabarGymText7 - dw CinnabarGymText8 - dw CinnabarGymText9 - dw BlaineBadgeText - dw ReceivedTM38Text - dw TM38NoRoomText - -Func_758b7: ; 758b7 (1d:58b7) - ld a, [H_DOWNARROWBLINKCNT2] ; $ff8c - ld [$cf13], a - call EngageMapTrainer - call InitBattleEnemyParameters - ld hl, $d72d - set 6, [hl] - set 7, [hl] - ld a, [$cf13] - cp $1 - jr z, .asm_758d4 - ld a, $2 - jr .asm_758d6 -.asm_758d4 - ld a, $3 -.asm_758d6 - ld [W_CINNABARGYMCURSCRIPT], a - ld [W_CURMAPSCRIPT], a - jp TextScriptEnd +BlkPacket_Pokedex: ; 72222 (1c:6222) + db $21,$01,$07,$05,$01,$01,$08,$08,$00,$00,$00,$00,$00,$00,$00,$00 + db $02,$00,$00,$11,$00,$01,$00,$01,$13,$00,$03,$01,$01,$08,$08,$01 + db $03,$01,$09,$08,$11,$00,$03,$09,$01,$13,$11,$00,$00 -CinnabarGymText1: ; 758df (1d:58df) - db $8 - ld a, [$d79a] - bit 1, a - jr z, .asm_d9332 ; 0x758e5 $16 - bit 0, a - jr nz, .asm_3012f ; 0x758e9 $9 - call z, CinnabarGymScript3_75857 - call DisableWaitingAfterTextDisplay - jp TextScriptEnd -.asm_3012f ; 0x758f4 - ld hl, BlaineFireBlastText - call PrintText - jp TextScriptEnd -.asm_d9332 ; 0x758fd - ld hl, BlaineBattleText - call PrintText - ld hl, BlaineEndBattleText - ld de, BlaineEndBattleText - call PreBattleSaveRegisters - ld a, $7 - ld [$d05c], a - jp Func_758b7 +BlkPacket_Slots: ; 7224f (1c:624f) + db $22,$05,$03,$05,$00,$00,$13,$0b,$03,$0a,$00,$04,$13,$09,$02,$0f + db $00,$06,$13,$07,$03,$00,$04,$04,$0f,$09,$03,$00,$00,$0c,$13,$11 + db $03,$00,$00,$13,$0b,$01,$03,$00,$04,$13,$09,$02,$03,$00,$06,$13 + db $07,$03,$03,$04,$04,$0f,$09,$00,$03,$00,$0c,$13,$11,$00,$00 -BlaineBattleText: ; 75914 (1d:5914) - TX_FAR _BlaineBattleText - db "@" +BlkPacket_Titlescreen: ; 7228e (1c:628e) + db $22,$03,$03,$00,$00,$00,$13,$07,$02,$05,$00,$08,$13,$09,$03,$0a + db $00,$0a,$13,$11,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $03,$00,$00,$13,$07,$00,$03,$00,$08,$13,$09,$01,$03,$00,$0a,$13 + db $11,$02,$00 -BlaineEndBattleText: ; 75919 (1d:5919) - TX_FAR _BlaineEndBattleText - db $11 - db $d - db "@" +BlkPacket_NidorinoIntro: ; 722c1 (1c:62c1) + db $22,$03,$03,$05,$00,$00,$13,$03,$03,$00,$00,$04,$13,$0d,$03,$05 + db $00,$0e,$13,$11,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $03,$00,$00,$13,$03,$01,$03,$00,$04,$13,$0d,$00,$03,$00,$0e,$13 + db $11,$01,$00 -BlaineFireBlastText: ; 75920 (1d:5920) - TX_FAR _BlaineFireBlastText - db "@" +BlkPacket_PartyMenu: ; 722f4 (1c:62f4) + db $23,$07,$06,$10,$01,$00,$02,$0c,$02,$00,$05,$01,$0b,$01,$02,$00 + db $05,$03,$0b,$03,$02,$00,$05,$05,$0b,$05,$02,$00,$05,$07,$0b,$07 + db $02,$00,$05,$09,$0b,$09,$02,$00,$05,$0b,$0b,$0b,$00,$00,$00,$00 + db $02,$00,$00,$11,$01,$03,$01,$00,$02,$0c,$00,$03,$01,$0d,$02,$11 + db $01,$03,$03,$00,$13,$11,$01,$03,$0c,$00,$12,$01,$00,$03,$0c,$02 + db $12,$03,$00,$03,$0c,$04,$12,$05,$00,$03,$0c,$06,$12,$07,$00,$03 + db $0c,$08,$12,$09,$00,$03,$0c,$0a,$12,$0b,$00,$00 -BlaineBadgeText: ; 75925 (1d:5925) - TX_FAR _BlaineBadgeText - db "@" +BlkPacket_TrainerCard: ; 72360 (1c:6360) + db $24,$0a,$02,$00,$03,$0c,$04,$0d,$02,$05,$07,$0c,$08,$0d,$02,$0f + db $0b,$0c,$0c,$0d,$02,$0a,$10,$0b,$11,$0c,$02,$05,$0e,$0d,$0f,$0e + db $02,$0f,$10,$0d,$11,$0e,$02,$0a,$03,$0f,$04,$10,$02,$0f,$07,$0f + db $08,$10,$02,$0a,$0b,$0f,$0c,$10,$02,$05,$0f,$0f,$10,$10,$00,$00 + db $03,$03,$0c,$04,$0d,$00,$03,$07,$0c,$08,$0d,$01,$03,$0b,$0c,$0c + db $0d,$03,$03,$10,$0b,$11,$0c,$02,$03,$0e,$0d,$0f,$0e,$01,$03,$10 + db $0d,$11,$0e,$03,$03,$03,$0f,$04,$10,$02,$03,$07,$0f,$08,$10,$03 + db $03,$0b,$0f,$0c,$10,$02,$03,$0f,$0f,$10,$10,$01,$00 -ReceivedTM38Text: ; 7592a (1d:592a) - TX_FAR _ReceivedTM38Text - db $0B - TX_FAR _TM38ExplanationText - db "@" +BlkPacket_GameFreakIntro: ; 723dd (1c:63dd) + db $22,$03,$07,$05,$05,$0b,$07,$0d,$02,$0a,$08,$0b,$09,$0d,$03,$0f + db $0c,$0b,$0e,$0d,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $03,$00,$00,$13,$0a,$00,$03,$00,$0b,$04,$0d,$00,$03,$05,$0b,$07 + db $0d,$01,$03,$08,$0b,$13,$0d,$00,$03,$00,$0e,$13,$11,$00,$03,$08 + db $0b,$09,$0d,$02,$03,$0c,$0b,$0e,$0d,$03,$00 -TM38NoRoomText: ; 75934 (1d:5934) - TX_FAR _TM38NoRoomText - db "@" +PalPacket_Empty: ; 72428 (1c:6428) + db $51,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 -CinnabarGymText2: ; 75939 (1d:5939) - db $08 ; asm - call CinnabarGymScript_757a0 - ld a, [$d79a] - bit 2, a - jr nz, .asm_46bb4 ; 0x75942 - ld hl, UnnamedText_7595f - call PrintText - ld hl, UnnamedText_75964 - ld de, UnnamedText_75964 ; $5964 XXX - call PreBattleSaveRegisters - jp Func_758b7 -.asm_46bb4 ; 0x75956 - ld hl, UnnamedText_75969 - call PrintText - jp TextScriptEnd +PalPacket_PartyMenu: ; 72438 (1c:6438) + db $51,PAL_MEWMON,$00,PAL_GREENBAR,$00,PAL_YELLOWBAR,$00,PAL_REDBAR,$00,$00,$00,$00,$00,$00,$00,$00 -UnnamedText_7595f: ; 7595f (1d:595f) - TX_FAR _UnnamedText_7595f - db "@" +PalPacket_Black: ; 72448 (1c:6448) + db $51,PAL_BLACK,$00,PAL_BLACK,$00,PAL_BLACK,$00,PAL_BLACK,$00,$00,$00,$00,$00,$00,$00,$00 -UnnamedText_75964: ; 75964 (1d:5964) - TX_FAR _UnnamedText_75964 - db "@" +PalPacket_TownMap: ; 72458 (1c:6458) + db $51,PAL_TOWNMAP,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 -UnnamedText_75969: ; 75969 (1d:5969) - TX_FAR _UnnamedText_75969 - db "@" +PalPacket_Pokedex: ; 72468 (1c:6468) + db $51,PAL_BROWNMON,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 -CinnabarGymText3: ; 7596e (1d:596e) - db $08 ; asm - call CinnabarGymScript_757a0 - ld a, [$d79a] - bit 3, a - jr nz, .asm_4b406 ; 0x75977 - ld hl, UnnamedText_75994 - call PrintText - ld hl, UnnamedText_75999 - ld de, UnnamedText_75999 ; $5999 XXX - call PreBattleSaveRegisters - jp Func_758b7 -.asm_4b406 ; 0x7598b - ld hl, UnnamedText_7599e - call PrintText - jp TextScriptEnd +PalPacket_Slots: ; 72478 (1c:6478) + db $51,PAL_SLOTS1,$00,PAL_SLOTS2,$00,PAL_SLOTS3,$00,PAL_SLOTS4,$00,$00,$00,$00,$00,$00,$00,$00 -UnnamedText_75994: ; 75994 (1d:5994) - TX_FAR _UnnamedText_75994 - db "@" +PalPacket_Titlescreen: ; 72488 (1c:6488) + db $51,PAL_LOGO2,$00,PAL_LOGO1,$00,PAL_MEWMON,$00,PAL_PURPLEMON,$00,$00,$00,$00,$00,$00,$00,$00 -UnnamedText_75999: ; 75999 (1d:5999) - TX_FAR _UnnamedText_75999 - db "@" +PalPacket_TrainerCard: ; 72498 (1c:6498) + db $51,PAL_MEWMON,$00,PAL_BADGE,$00,PAL_REDMON,$00,PAL_YELLOWMON,$00,$00,$00,$00,$00,$00,$00,$00 -UnnamedText_7599e: ; 7599e (1d:599e) - TX_FAR _UnnamedText_7599e - db "@" +PalPacket_Generic: ; 724a8 (1c:64a8) + db $51,PAL_MEWMON,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 -CinnabarGymText4: ; 759a3 (1d:59a3) - db $08 ; asm - call CinnabarGymScript_757a0 - ld a, [$d79a] - bit 4, a - jr nz, .asm_c0673 ; 0x759ac - ld hl, UnnamedText_759c9 - call PrintText - ld hl, UnnamedText_759ce - ld de, UnnamedText_759ce ; $59ce XXX - call PreBattleSaveRegisters - jp Func_758b7 -.asm_c0673 ; 0x759c0 - ld hl, UnnamedText_759d3 - call PrintText - jp TextScriptEnd +PalPacket_NidorinoIntro: ; 724b8 (1c:64b8) + db $51,PAL_PURPLEMON,$00,PAL_BLACK,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 -UnnamedText_759c9: ; 759c9 (1d:59c9) - TX_FAR _UnnamedText_759c9 - db "@" +PalPacket_GameFreakIntro: ; 724c8 (1c:64c8) + db $51,PAL_GAMEFREAK,$00,PAL_REDMON,$00,PAL_VIRIDIAN,$00,PAL_BLUEMON,$00,$00,$00,$00,$00,$00,$00,$00 -UnnamedText_759ce: ; 759ce (1d:59ce) - TX_FAR _UnnamedText_759ce - db "@" +PalPacket_724d8: ; 724d8 (1c:64d8) + db $59,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 -UnnamedText_759d3: ; 759d3 (1d:59d3) - TX_FAR _UnnamedText_759d3 - db "@" +PalPacket_724e8: ; 724e8 (1c:64e8) + db $89,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 -CinnabarGymText5: ; 759d8 (1d:59d8) - db $08 ; asm - call CinnabarGymScript_757a0 - ld a, [$d79a] - bit 5, a - jr nz, .asm_5cfd7 ; 0x759e1 - ld hl, UnnamedText_759fe - call PrintText - ld hl, UnnamedText_75a03 - ld de, UnnamedText_75a03 ; $5a03 XXX - call PreBattleSaveRegisters - jp Func_758b7 -.asm_5cfd7 ; 0x759f5 - ld hl, UnnamedText_75a08 - call PrintText - jp TextScriptEnd +PalPacket_724f8: ; 724f8 (1c:64f8) + db $89,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + +PalPacket_72508: ; 72508 (1c:6508) + db $99,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + +PalPacket_72518: ; 72518 (1c:6518) + db $A1,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 -UnnamedText_759fe: ; 759fe (1d:59fe) - TX_FAR _UnnamedText_759fe - db "@" +PalPacket_72528: ; 72528 (1c:6528) + db $B9,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 -UnnamedText_75a03: ; 75a03 (1d:5a03) - TX_FAR _UnnamedText_75a03 - db "@" +PalPacket_72538: ; 72538 (1c:6538) + db $B9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 -UnnamedText_75a08: ; 75a08 (1d:5a08) - TX_FAR _UnnamedText_75a08 - db "@" +PalPacket_72548: ; 72548 (1c:6548) + db $79,$5D,$08,$00,$0B,$8C,$D0,$F4,$60,$00,$00,$00,$00,$00,$00,$00 -CinnabarGymText6: ; 75a0d (1d:5a0d) - db $08 ; asm - call CinnabarGymScript_757a0 - ld a, [$d79a] - bit 6, a - jr nz, .asm_776b4 ; 0x75a16 - ld hl, UnnamedText_75a33 - call PrintText - ld hl, UnnamedText_75a38 - ld de, UnnamedText_75a38 - call PreBattleSaveRegisters - jp Func_758b7 -.asm_776b4 ; 0x75a2a - ld hl, UnnamedText_75a3d - call PrintText - jp TextScriptEnd +PalPacket_72558: ; 72558 (1c:6558) + db $79,$52,$08,$00,$0B,$A9,$E7,$9F,$01,$C0,$7E,$E8,$E8,$E8,$E8,$E0 -UnnamedText_75a33: ; 75a33 (1d:5a33) - TX_FAR _UnnamedText_75a33 - db "@" +PalPacket_72568: ; 72568 (1c:6568) + db $79,$47,$08,$00,$0B,$C4,$D0,$16,$A5,$CB,$C9,$05,$D0,$10,$A2,$28 -UnnamedText_75a38: ; 75a38 (1d:5a38) - TX_FAR _UnnamedText_75a38 - db "@" +PalPacket_72578: ; 72578 (1c:6578) + db $79,$3C,$08,$00,$0B,$F0,$12,$A5,$C9,$C9,$C8,$D0,$1C,$A5,$CA,$C9 -UnnamedText_75a3d: ; 75a3d (1d:5a3d) - TX_FAR _UnnamedText_75a3d - db "@" +PalPacket_72588: ; 72588 (1c:6588) + db $79,$31,$08,$00,$0B,$0C,$A5,$CA,$C9,$7E,$D0,$06,$A5,$CB,$C9,$7E -CinnabarGymText7: ; 75a42 (1d:5a42) - db $08 ; asm - call CinnabarGymScript_757a0 - ld a, [$d79a] - bit 7, a - jr nz, .asm_2f755 ; 0x75a4b - ld hl, UnnamedText_75a68 - call PrintText - ld hl, UnnamedText_75a6d - ld de, UnnamedText_75a6d - call PreBattleSaveRegisters - jp Func_758b7 -.asm_2f755 ; 0x75a5f - ld hl, UnnamedText_75a72 - call PrintText - jp TextScriptEnd +PalPacket_72598: ; 72598 (1c:6598) + db $79,$26,$08,$00,$0B,$39,$CD,$48,$0C,$D0,$34,$A5,$C9,$C9,$80,$D0 -UnnamedText_75a68: ; 75a68 (1d:5a68) - TX_FAR _UnnamedText_75a68 - db "@" +PalPacket_725a8: ; 725a8 (1c:65a8) + db $79,$1B,$08,$00,$0B,$EA,$EA,$EA,$EA,$EA,$A9,$01,$CD,$4F,$0C,$D0 -UnnamedText_75a6d: ; 75a6d (1d:5a6d) - TX_FAR _UnnamedText_75a6d - db "@" +PalPacket_725b8: ; 725b8 (1c:65b8) + db $79,$10,$08,$00,$0B,$4C,$20,$08,$EA,$EA,$EA,$EA,$EA,$60,$EA,$EA -UnnamedText_75a72: ; 75a72 (1d:5a72) - TX_FAR _UnnamedText_75a72 - db "@" +INCLUDE "data/mon_palettes.asm" -CinnabarGymText8: ; 75a77 (1d:5a77) - db $08 ; asm - call CinnabarGymScript_757a0 - ld a, [$d79b] - bit 0, a - jr nz, .asm_d87be ; 0x75a80 - ld hl, UnnamedText_75a9d - call PrintText - ld hl, UnnamedText_75aa2 - ld de, UnnamedText_75aa2 ; $5aa2 XXX - call PreBattleSaveRegisters - jp Func_758b7 -.asm_d87be ; 0x75a94 - ld hl, UnnamedText_75aa7 - call PrintText - jp TextScriptEnd +INCLUDE "data/super_palettes.asm" -UnnamedText_75a9d: ; 75a9d (1d:5a9d) - TX_FAR _UnnamedText_75a9d - db "@" +BorderPalettes: ; 72788 (1c:6788) +IF _RED + INCBIN "gfx/red/sgbborder.map" +ENDC +IF _BLUE + INCBIN "gfx/blue/sgbborder.map" +ENDC -UnnamedText_75aa2: ; 75aa2 (1d:5aa2) - TX_FAR _UnnamedText_75aa2 - db "@" + ds $100 -UnnamedText_75aa7: ; 75aa7 (1d:5aa7) - TX_FAR _UnnamedText_75aa7 - db "@" +IF _RED + RGB 30,29,29 ; PAL_SGB1 + RGB 25,22,25 + RGB 25,17,21 + RGB 24,14,12 +ENDC +IF _BLUE + RGB 0,0,0 ; PAL_SGB1 (the first color is not defined, but if used, turns up as 30,29,29... o_O) + RGB 10,17,26 + RGB 5,9,20 + RGB 16,20,27 +ENDC -CinnabarGymText9: ; 75aac (1d:5aac) - db $08 ; asm - ld a, [$d79a] - bit 1, a - jr nz, .asm_627d9 ; 0x75ab2 - ld hl, UnnamedText_75ac2 - jr .asm_0b11d ; 0x75ab7 -.asm_627d9 ; 0x75ab9 - ld hl, UnnamedText_75ac7 -.asm_0b11d ; 0x75abc - call PrintText - jp TextScriptEnd + ds $18 -UnnamedText_75ac2: ; 75ac2 (1d:5ac2) - TX_FAR _UnnamedText_75ac2 - db "@" +IF _RED + RGB 30,29,29 ; PAL_SGB2 + RGB 22,31,16 + RGB 27,20,6 + RGB 15,15,15 +ENDC +IF _BLUE + RGB 30,29,29 ; PAL_SGB2 + RGB 27,11,6 + RGB 5,9,20 + RGB 28,25,15 +ENDC -UnnamedText_75ac7: ; 75ac7 (1d:5ac7) - TX_FAR _UnnamedText_75ac7 - db "@" + ds $18 -INCLUDE "data/mapObjects/cinnabargym.asm" +IF _RED + RGB 30,29,29 ; PAL_SGB3 + RGB 31,31,17 + RGB 18,21,29 + RGB 15,15,15 +ENDC +IF _BLUE + RGB 30,29,29 ; PAL_SGB3 + RGB 12,15,11 + RGB 5,9,20 + RGB 14,22,17 +ENDC -CinnabarGymBlocks: ; 75b26 (1d:5b26) - INCBIN "maps/cinnabargym.blk" + ds $18 -INCLUDE "data/mapHeaders/lab1.asm" +SGBBorderGraphics: ; 72fe8 (1c:6fe8) +IF _RED + INCBIN "gfx/red/sgbborder.w128.2bpp" +ENDC +IF _BLUE + INCBIN "gfx/blue/sgbborder.w128.2bpp" +ENDC -Lab1Script: ; 75b8c (1d:5b8c) - call EnableAutoTextBoxDrawing +LoadSAV: ; 735e8 (1c:75e8) +;(if carry -> write +;"the file data is destroyed") + call ClearScreen + call LoadFontTilePatterns + call LoadTextBoxTilePatterns + call LoadSAVCheckSum + jr c, .badsum + call LoadSAVCheckSum1 + jr c, .badsum + call LoadSAVCheckSum2 + jr c, .badsum + ld a, $2 ; good checksum + jr .goodsum +.badsum + ld hl, $d730 + push hl + set 6, [hl] + ld hl, FileDataDestroyedText + call PrintText + ld c, $64 + call DelayFrames + pop hl + res 6, [hl] + ld a, $1 ; bad checksum +.goodsum + ld [$d088], a ; checksum flag ret -Lab1TextPointers: ; 75b90 (1d:5b90) - dw Lab1Text1 - dw Lab1Text2 - dw Lab1Text3 - dw Lab1Text4 - dw Lab1Text5 - -Lab1Text1: ; 75b9a (1d:5b9a) - TX_FAR _Lab1Text1 +FileDataDestroyedText: ; 7361e (1c:761e) + TX_FAR _FileDataDestroyedText db "@" -Lab1Text2: ; 75b9f (1d:5b9f) - TX_FAR _Lab1Text2 - db "@" +LoadSAVCheckSum: ; 73623 (1c:7623) + ld a, $a + ld [$0], a + ld a, $1 + ld [$6000], a + ld [$4000], a + ld hl, $a598 ; hero name located in SRAM + ld bc, $f8b ; but here checks the full SAV + call SAVCheckSum + ld c, a + ld a, [$b523] ; SAV's checksum + cp c + jp z, .Func_73652 + ld hl, $a598 + ld bc, $f8b + call SAVCheckSum + ld c, a + ld a, [$b523] ; SAV's checksum + cp c + jp nz, SAVBadCheckSum -Lab1Text3: ; 75ba4 (1d:5ba4) - TX_FAR _Lab1Text3 - db "@" +.Func_73652 ; 73652 (1c:7652) + ld hl, $a598 + ld de, W_PLAYERNAME ; $d158 + ld bc, $b + call CopyData + ld hl, $a5a3 + ld de, wPokedexOwned ; $d2f7 + ld bc, $789 + call CopyData + ld hl, W_CURMAPTILESET ; $d367 + set 7, [hl] + ld hl, $ad2c + ld de, wSpriteStateData1 + ld bc, $200 + call CopyData + ld a, [$b522] + ld [$ffd7], a + ld hl, $b0c0 + ld de, W_NUMINBOX ; $da80 + ld bc, $462 + call CopyData + and a + jp SAVGoodChecksum -Lab1Text4: ; 75ba9 (1d:5ba9) - TX_FAR _Lab1Text4 - db "@" +LoadSAVCheckSum1: ; 73690 (1c:7690) + ld a, $a + ld [$0], a + ld a, $1 + ld [$6000], a + ld [$4000], a + ld hl, $a598 ; hero name located in SRAM + ld bc, $f8b ; but here checks the full SAV + call SAVCheckSum + ld c, a + ld a, [$b523] ; SAV's checksum + cp c + jr nz, SAVBadCheckSum + ld hl, $b0c0 + ld de, W_NUMINBOX ; $da80 + ld bc, $462 + call CopyData + and a + jp SAVGoodChecksum -Lab1Text5: ; 75bae (1d:5bae) - TX_FAR _Lab1Text5 - db "@" +LoadSAVCheckSum2: ; 736bd (1c:76bd) + ld a, $a + ld [$0], a + ld a, $1 + ld [$6000], a + ld [$4000], a + ld hl, $a598 ; hero name located in SRAM + ld bc, $f8b ; but here checks the full SAV + call SAVCheckSum + ld c, a + ld a, [$b523] ; SAV's checksum + cp c + jp nz, SAVBadCheckSum + ld hl, $af2c + ld de, W_NUMINPARTY ; $d163 + ld bc, $194 + call CopyData + ld hl, $a5a3 + ld de, wPokedexOwned ; $d2f7 + ld bc, $26 + call CopyData + and a + jp SAVGoodChecksum -INCLUDE "data/mapObjects/lab1.asm" +SAVBadCheckSum: ; 736f7 (1c:76f7) + scf -Lab1Blocks: ; 75bf1 (1d:5bf1) - INCBIN "maps/lab1.blk" +SAVGoodChecksum: ; 736f8 (1c:76f8) + ld a, $0 + ld [$6000], a + ld [$0], a + ret -INCLUDE "data/mapHeaders/lab2.asm" +Func_73701: ; 0x73701 + call LoadSAVCheckSum + call LoadSAVCheckSum1 + jp LoadSAVCheckSum2 + +SaveSAV: ;$770a + ld b,1 + ld hl,Func_5def ; LoadGameMenuInGame + call Bankswitch + ld hl,WouldYouLikeToSaveText + call SaveSAVConfirm + and a ;|0 = Yes|1 = No| + ret nz + ld a,[$d088] + dec a + jr z,.save + call SAVCheckRandomID + jr z,.save + ld hl,OlderFileWillBeErasedText + call SaveSAVConfirm + and a + ret nz +.save ;$772d + call SaveSAVtoSRAM ;$7848 + FuncCoord 1,13 + ld hl,Coord + ld bc,$0412 + call ClearScreenArea ; clear area 4x12 starting at 13,1 + FuncCoord 1,14 + ld hl,Coord + ld de,NowSavingString + call PlaceString + ld c,$78 + call DelayFrames + ld hl,GameSavedText + call PrintText + ld a, (SFX_02_5d - SFX_Headers_02) / 3 ;sound for saved game + call PlaySoundWaitForCurrent + call WaitForSoundToFinish + ld c,$1e + jp DelayFrames -Lab2Script: ; 75c21 (1d:5c21) - jp EnableAutoTextBoxDrawing +NowSavingString: + db "Now saving...@" -Lab2TextPointers: ; 75c24 (1d:5c24) - dw Lab2Text1 - dw Lab2Text2 - dw Lab2Text3 +SaveSAVConfirm: ; 73768 (1c:7768) + call PrintText + FuncCoord 0, 7 + ld hl,Coord + ld bc,$0801 ;arrow's coordinates |b = Y|c = X| + ld a,$14 ;one line shifting ($28 = 2 lines) + ld [$d125],a + call DisplayTextBoxID ;handle Yes/No KeyPress + ld a,[$cc26] + ret -Lab2Text1: ; 75c2a (1d:5c2a) - TX_FAR _Lab2Text1 +WouldYouLikeToSaveText: ; 0x7377d + TX_FAR _WouldYouLikeToSaveText db "@" -Lab2Text2: ; 75c2f (1d:5c2f) - db $8 - ld a, $7 - ld [wWhichTrade], a - jr asm_78552 ; 0x75c35 $6 +GameSavedText: ; 73782 (1c:7782) + TX_FAR _GameSavedText + db "@" -Lab2Text3: ; 75c37 (1d:5c37) - db $8 - ld a, $8 - ld [wWhichTrade], a -asm_78552: ; 75c3d (1d:5c3d) - ld a, $54 - call Predef - jp TextScriptEnd +OlderFileWillBeErasedText: ; 73787 (1c:7787) + TX_FAR _OlderFileWillBeErasedText + db "@" -INCLUDE "data/mapObjects/lab2.asm" +SaveSAVtoSRAM0: ; 7378c (1c:778c) + ld a, $a + ld [$0], a + ld a, $1 + ld [$6000], a + ld [$4000], a + ld hl, W_PLAYERNAME ; $d158 + ld de, $a598 + ld bc, $b + call CopyData + ld hl, wPokedexOwned ; $d2f7 + ld de, $a5a3 + ld bc, $789 + call CopyData + ld hl, wSpriteStateData1 ; OAM? + ld de, $ad2c + ld bc, $200 + call CopyData + ld hl, W_NUMINBOX ; $da80 + ld de, $b0c0 + ld bc, $462 + call CopyData + ld a, [$ffd7] + ld [$b522], a + ld hl, $a598 + ld bc, $f8b + call SAVCheckSum + ld [$b523], a + xor a + ld [$6000], a + ld [$0], a + ret -Lab2Blocks: ; 75c6b (1d:5c6b) - INCBIN "maps/lab2.blk" +SaveSAVtoSRAM1: ; 737e2 (1c:77e2) +; stored pokémon + ld a, $a + ld [$0], a + ld a, $1 + ld [$6000], a + ld [$4000], a + ld hl, W_NUMINBOX ; $da80 + ld de, $b0c0 + ld bc, $462 + call CopyData + ld hl, $a598 + ld bc, $f8b + call SAVCheckSum + ld [$b523], a + xor a + ld [$6000], a + ld [$0], a + ret -INCLUDE "data/mapHeaders/lab3.asm" +SaveSAVtoSRAM2: ; 7380f (1c:780f) + ld a, $a + ld [$0], a + ld a, $1 + ld [$6000], a + ld [$4000], a + ld hl, W_NUMINPARTY ; $d163 + ld de, $af2c + ld bc, $194 + call CopyData + ld hl, wPokedexOwned ; pokédex only + ld de, $a5a3 + ld bc, $26 + call CopyData + ld hl, $a598 + ld bc, $f8b + call SAVCheckSum + ld [$b523], a + xor a + ld [$6000], a + ld [$0], a + ret -Lab3Script: ; 75c87 (1d:5c87) - jp EnableAutoTextBoxDrawing +SaveSAVtoSRAM: ; 73848 (1c:7848) + ld a, $2 + ld [$d088], a + call SaveSAVtoSRAM0 + call SaveSAVtoSRAM1 + jp SaveSAVtoSRAM2 -Lab3TextPointers: ; 75c8a (1d:5c8a) - dw Lab3Text1 - dw Lab3Text2 - dw Lab3Text3 - dw Lab3Text4 - dw Lab3Text5 +SAVCheckSum: ; 73856 (1c:7856) +;Check Sum (result[1 byte] is complemented) + ld d, $0 +.loop + ld a, [hli] + add d + ld d, a + dec bc + ld a, b + or c + jr nz, .loop + ld a, d + cpl + ret -Lab3Text1: ; 75c94 (1d:5c94) - db $08 ; asm - ld a, [$d7a1] - bit 7, a - jr nz, .asm_e551a ; 0x75c9a - ld hl, TM35PreReceiveText - call PrintText - ld bc, (TM_35 << 8) | 1 - call GiveItem - jr nc, .BagFull - ld hl, ReceivedTM35Text - call PrintText - ld hl, $d7a1 - set 7, [hl] - jr .asm_eb896 ; 0x75cb5 -.BagFull - ld hl, TM35NoRoomText - call PrintText - jr .asm_eb896 ; 0x75cbd -.asm_e551a ; 0x75cbf - ld hl, TM35ExplanationText - call PrintText -.asm_eb896 ; 0x75cc5 - jp TextScriptEnd +Func_73863: ; 73863 (1c:7863) + ld hl, $a000 + ld de, $ba4d + ld b, $6 +.asm_7386b + push bc + push de + ld bc, $462 + call SAVCheckSum + pop de + ld [de], a + inc de + pop bc + dec b + jr nz, .asm_7386b + ret -TM35PreReceiveText: ; 75cc8 (1d:5cc8) - TX_FAR _TM35PreReceiveText - db "@" +Func_7387b: ; 7387b (1c:787b) + ld hl, PointerTable_73895 ; $7895 + ld a, [$d5a0] + and $7f + cp $6 + ld b, $2 + jr c, .asm_7388c + inc b + sub $6 +.asm_7388c + ld e, a + ld d, $0 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ret -ReceivedTM35Text: ; 75ccd (1d:5ccd) - TX_FAR _ReceivedTM35Text - db $0B, "@" +PointerTable_73895: ; 73895 (1c:7895) + dw $A000 + dw $A462 + dw $A8C4 + dw $AD26 + dw $B188 + dw $B5EA -TM35ExplanationText: ; 75cd3 (1d:5cd3) - TX_FAR _TM35ExplanationText - db "@" +Func_738a1:: ; 738a1 (1c:78a1) + ld hl, WhenYouChangeBoxText + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] ; $cc26 + and a + ret nz + ld hl, $d5a0 + bit 7, [hl] + call z, Func_73a29 + call Func_7393f + call UpdateSprites + ld hl, $fff6 + set 1, [hl] + call HandleMenuInput + ld hl, $fff6 + res 1, [hl] + bit 1, a + ret nz + call Func_7387b + ld e, l + ld d, h + ld hl, W_NUMINBOX ; $da80 + call Func_7390e + ld a, [wCurrentMenuItem] ; $cc26 + set 7, a + ld [$d5a0], a + call Func_7387b + ld de, W_NUMINBOX ; $da80 + call Func_7390e + ld hl, W_MAPTEXTPTR ; $d36c + ld de, wWhichTrade ; $cd3d + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + call Func_3f05 + call SaveSAVtoSRAM + ld hl, wWhichTrade ; $cd3d + call Func_3f0f + ld a, (SFX_02_5d - SFX_Headers_02) / 3 + call PlaySoundWaitForCurrent + call WaitForSoundToFinish + ret -TM35NoRoomText: ; 75cd8 (1d:5cd8) - TX_FAR _TM35NoRoomText +WhenYouChangeBoxText: ; 73909 (1c:7909) + TX_FAR _WhenYouChangeBoxText db "@" -Lab3Text2: ; 75cdd (1d:5cdd) - TX_FAR _Lab3Text2 - db "@" +Func_7390e: ; 7390e (1c:790e) + push hl + ld a, $a + ld [$0], a + ld a, $1 + ld [$6000], a + ld a, b + ld [$4000], a + ld bc, $462 + call CopyData + pop hl + xor a + ld [hli], a + dec a + ld [hl], a + ld hl, $a000 + ld bc, $1a4c + call SAVCheckSum + ld [$ba4c], a + call Func_73863 + xor a + ld [$6000], a + ld [$0], a + ret -Lab3Text4: ; 75ce2 (1d:5ce2) -Lab3Text3: ; 75ce2 (1d:5ce2) - TX_FAR _Lab3Text3 - db "@" +Func_7393f: ; 7393f (1c:793f) + xor a + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ld a, $3 + ld [wMenuWatchedKeys], a ; $cc29 + ld a, $b + ld [wMaxMenuItem], a ; $cc28 + ld a, $1 + ld [wTopMenuItemY], a ; $cc24 + ld a, $c + ld [wTopMenuItemX], a ; $cc25 + xor a + ld [$cc37], a + ld a, [$d5a0] + and $7f + ld [wCurrentMenuItem], a ; $cc26 + ld [wLastMenuItem], a ; $cc2a + ld hl, wTileMap + ld b, $2 + ld c, $9 + call TextBoxBorder + ld hl, ChooseABoxText + call PrintText + FuncCoord 11, 0 ; $c3ab + ld hl, Coord + ld b, $c + ld c, $7 + call TextBoxBorder + ld hl, $fff6 + set 2, [hl] + ld de, BoxNames ; $79d9 + FuncCoord 13, 1 ; $c3c1 + ld hl, Coord + call PlaceString + ld hl, $fff6 + res 2, [hl] + ld a, [$d5a0] + and $7f + cp $9 + jr c, .asm_739a6 + sub $9 + FuncCoord 8, 2 ; $c3d0 + ld hl, Coord + ld [hl], $f7 + add $f6 + jr .asm_739a8 +.asm_739a6 + add $f7 +.asm_739a8 + FuncCoord 9, 2 ; $c3d1 + ld [Coord], a + FuncCoord 1, 2 ; $c3c9 + ld hl, Coord + ld de, BoxNoText + call PlaceString + call Func_73a84 + FuncCoord 18, 1 ; $c3c6 + ld hl, Coord + ld de, wWhichTrade ; $cd3d + ld bc, $14 + ld a, $c +.asm_739c2 + push af + ld a, [de] + and a + jr z, .asm_739c9 + ld [hl], $78 +.asm_739c9 + add hl, bc + inc de + pop af + dec a + jr nz, .asm_739c2 + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + ret -Lab3Text5: ; 75ce7 (1d:5ce7) - TX_FAR _Lab3Text5 +ChooseABoxText: ; 739d4 (1c:79d4) + TX_FAR _ChooseABoxText db "@" -INCLUDE "data/mapObjects/lab3.asm" - -Lab3Blocks: ; 75d15 (1d:5d15) - INCBIN "maps/lab3.blk" +BoxNames: ; 739d9 (1c:79d9) + db "BOX 1" + next "BOX 2" + next "BOX 3" + next "BOX 4" + next "BOX 5" + next "BOX 6" + next "BOX 7" + next "BOX 8" + next "BOX 9" + next "BOX10" + next "BOX11" + next "BOX12@" -INCLUDE "data/mapHeaders/lab4.asm" +BoxNoText: ; 73a21 (1c:7a21) + db "BOX No.@" -Lab4Script: ; 75d31 (1d:5d31) - jp EnableAutoTextBoxDrawing +Func_73a29: ; 73a29 (1c:7a29) + ld a, $a + ld [$0], a + ld a, $1 + ld [$6000], a + ld a, $2 + ld [$4000], a + call Func_73a4b + ld a, $3 + ld [$4000], a + call Func_73a4b + xor a + ld [$6000], a + ld [$0], a + ret -Lab4TextPointers: ; 75d34 (1d:5d34) - dw Lab4Text1 - dw Lab4Text2 +Func_73a4b: ; 73a4b (1c:7a4b) + ld hl, $a000 + call Func_73a7f + ld hl, $a462 + call Func_73a7f + ld hl, $a8c4 + call Func_73a7f + ld hl, $ad26 + call Func_73a7f + ld hl, $b188 + call Func_73a7f + ld hl, $b5ea + call Func_73a7f + ld hl, $a000 + ld bc, $1a4c + call SAVCheckSum + ld [$ba4c], a + call Func_73863 + ret -Func_75d38: ; 75d38 (1d:5d38) +Func_73a7f: ; 73a7f (1c:7a7f) xor a - ld [$cd37], a - ld de, $cc5b - ld hl, FossilsList -.asm_75d42 - ld a, [hli] - and a - jr z, .asm_75d64 - push hl - push de - ld [$d11e], a - ld b, a - ld a, $1c - call Predef ; indirect jump to Func_f8a5 (f8a5 (3:78a5)) - pop de - pop hl - ld a, b - and a - jr z, .asm_75d42 - ld a, [$d11e] - ld [de], a - inc de + ld [hli], a + dec a + ld [hl], a + ret + +Func_73a84: ; 73a84 (1c:7a84) + ld hl, wWhichTrade ; $cd3d push hl - ld hl, $cd37 - inc [hl] + ld a, $a + ld [$0], a + ld a, $1 + ld [$6000], a + ld a, $2 + ld [$4000], a + call Func_73ab8 + ld a, $3 + ld [$4000], a + call Func_73ab8 + xor a + ld [$6000], a + ld [$0], a pop hl - jr .asm_75d42 -.asm_75d64 - ld a, $ff - ld [de], a + ld a, [$d5a0] + and $7f + ld c, a + ld b, $0 + add hl, bc + ld a, [W_NUMINBOX] ; $da80 + ld [hl], a ret -FossilsList: ; 75d68 (1d:5d68) - db DOME_FOSSIL - db HELIX_FOSSIL - db OLD_AMBER - db $00 +Func_73ab8: ; 73ab8 (1c:7ab8) + ld a, [$a000] + ld [hli], a + ld a, [$a462] + ld [hli], a + ld a, [$a8c4] + ld [hli], a + ld a, [$ad26] + ld [hli], a + ld a, [$b188] + ld [hli], a + ld a, [$b5ea] + ld [hli], a + ret -Lab4Text1: ; 75d6c (1d:5d6c) - db $8 - ld a, [$d7a3] - bit 0, a - jr nz, .asm_75d96 ; 0x75d72 $22 - ld hl, UnnamedText_75dc6 - call PrintText - call Func_75d38 - ld a, [$cd37] +SAVCheckRandomID: ;$7ad1 +;checks if Sav file is the same by checking player's name 1st letter ($a598) +; and the two random numbers generated at game beginning +;(which are stored at $d359-d35a) + ld a,$0a + ld [$0000],a + ld a,$01 + ld [$6000],a + ld [$4000],a + ld a,[$a598] and a - jr z, .asm_75d8d ; 0x75d81 $a - ld b, BANK(GiveFossilToCinnabarLab) - ld hl, GiveFossilToCinnabarLab - call Bankswitch - jr .asm_75d93 ; 0x75d8b $6 -.asm_75d8d - ld hl, UnnamedText_75dcb - call PrintText -.asm_75d93 - jp TextScriptEnd -.asm_75d96 - bit 1, a - jr z, .asm_75da2 ; 0x75d98 $8 - ld hl, UnnamedText_75dd0 - call PrintText - jr .asm_75d93 ; 0x75da0 $f1 -.asm_75da2 - call LoadFossilItemAndMonNameBank1D - ld hl, UnnamedText_75dd5 - call PrintText - ld hl, $d7a3 - set 2, [hl] - ld a, [W_FOSSILMON] - ld b, a - ld c, $1e - call GivePokemon - jr nc, .asm_75d93 ; 0x75db9 $d8 - ld hl, $d7a3 - res 0, [hl] - res 1, [hl] - res 2, [hl] - jr .asm_75d93 ; 0x75dc4 $cd - -UnnamedText_75dc6: ; 75dc6 (1d:5dc6) - TX_FAR _UnnamedText_75dc6 - db "@" - -UnnamedText_75dcb: ; 75dcb (1d:5dcb) - TX_FAR _UnnamedText_75dcb - db "@" + jr z,.next + ld hl,$a598 + ld bc,$0f8b + call SAVCheckSum + ld c,a + ld a,[$b523] + cp c + jr nz,.next + ld hl,$a605 + ld a,[hli] + ld h,[hl] + ld l,a + ld a,[$d359] + cp l + jr nz,.next + ld a,[$d35a] + cp h +.next + ld a,$00 + ld [$6000],a + ld [$0000],a + ret -UnnamedText_75dd0: ; 75dd0 (1d:5dd0) - TX_FAR _UnnamedText_75dd0 - db "@" +Func_73b0d: ; 73b0d (1c:7b0d) + ld a, [$d5a2] + dec a + cp $32 + jr nc, .asm_73b28 + ld hl, $a598 + ld bc, $60 + call AddNTimes + ld e, l + ld d, h + ld hl, $cc5b + ld bc, $60 + jr CopyToSRAM0 +.asm_73b28 + ld hl, $a5f8 + ld de, $a598 + ld bc, $1260 + call CopyToSRAM0 + ld hl, $cc5b + ld de, $b7f8 + ld bc, $60 + jr CopyToSRAM0 -UnnamedText_75dd5: ; 75dd5 (1d:5dd5) - TX_FAR _UnnamedText_75dd5 - db "@" +Func_73b3f: ; 73b3f (1c:7b3f) + ld hl, $a598 + ld bc, $60 + ld a, [wWhichTrade] ; $cd3d + call AddNTimes + ld de, $cc5b + ld bc, $60 + ; fallthrough +CopyToSRAM0: ; 73b51 (1c:7b51) + ld a, $a + ld [$0], a + ld a, $1 + ld [$6000], a + xor a + ld [$4000], a + call CopyData + xor a + ld [$6000], a + ld [$0], a + ret -Lab4Text2: ; 75dda (1d:5dda) - db $08 ; asm +Func_73b6a: ; 73b6a (1c:7b6a) + ld a, $a + ld [$0], a + ld a, $1 + ld [$6000], a + xor a + call PadSRAM_FF + ld a, $1 + call PadSRAM_FF + ld a, $2 + call PadSRAM_FF ld a, $3 - ld [wWhichTrade], a - ld a, $54 - call Predef - jp TextScriptEnd + call PadSRAM_FF + xor a + ld [$6000], a + ld [$0], a + ret -LoadFossilItemAndMonNameBank1D: ; 75de8 (1d:5de8) - ld b, BANK(LoadFossilItemAndMonName) - ld hl, LoadFossilItemAndMonName - jp Bankswitch +PadSRAM_FF: ; 73b8f (1c:7b8f) + ld [$4000], a + ld hl, $a000 + ld bc, $2000 + ld a, $ff + jp FillMemory -INCLUDE "data/mapObjects/lab4.asm" +SECTION "bank1D",ROMX,BANK[$1D] -Lab4Blocks: ; 75e10 (1d:5e10) - INCBIN "maps/lab4.blk" +CopycatsHouse1FBlocks: ; 74000 (1d:4000) + INCBIN "maps/copycatshouse1f.blk" -INCLUDE "data/mapHeaders/cinnabarpokecenter.asm" +CinnabarMartBlocks: ; 74010 (1d:4010) +PewterMartBlocks: ; 74010 (1d:4010) + INCBIN "maps/pewtermart.blk" -CinnabarPokecenterScript: ; 75e2c (1d:5e2c) - call Func_22fa - jp EnableAutoTextBoxDrawing +FuchsiaHouse1Blocks: ; 74020 (1d:4020) + INCBIN "maps/fuchsiahouse1.blk" -CinnabarPokecenterTextPointers: ; 75e32 (1d:5e32) - dw CinnabarPokecenterText1 - dw CinnabarPokecenterText2 - dw CinnabarPokecenterText3 - dw CinnabarPokecenterText4 +CinnabarPokecenterBlocks: ; 74030 (1d:4030) +FuchsiaPokecenterBlocks: ; 74030 (1d:4030) + INCBIN "maps/fuchsiapokecenter.blk" -CinnabarPokecenterText1: ; 75e3a (1d:5e3a) - db $ff +CeruleanHouse2Blocks: ; 7404c (1d:404c) + INCBIN "maps/ceruleanhouse2.blk" -CinnabarPokecenterText2: ; 75e3b (1d:5e3b) - TX_FAR _CinnabarPokecenterText1 - db "@" +Func_7405c: ; 7405c (1d:405c) + ld b, BANK(Func_701a0) + ld hl, Func_701a0 + call Bankswitch + call ClearScreen + ld c, $64 + call DelayFrames + call DisableLCD + ld hl, $8800 + ld bc, $400 + call Func_74171 + ld hl, $9600 + ld bc, $100 + call Func_74171 + ld hl, $97e0 + ld bc, $10 + ld a, $ff + call FillMemory + ld hl, wTileMap + call Func_7417b + FuncCoord 0, 14 ; $c4b8 + ld hl, Coord + call Func_7417b + ld a, $c0 + ld [rBGP], a ; $ff47 + call EnableLCD + ld a, $ff + call PlaySoundWaitForCurrent + ld c, BANK(Music_Credits) + ld a, MUSIC_CREDITS + call PlayMusic + ld c, $80 + call DelayFrames + xor a + ld [wWhichTrade], a ; $cd3d + ld [$cd3e], a + jp Func_7418e -CinnabarPokecenterText3: ; 75e40 (1d:5e40) - TX_FAR _CinnabarPokecenterText3 - db "@" +Func_740ba: ; 740ba (1d:40ba) + ld hl, DataTable_74160 ; $4160 + ld b, $4 +.asm_740bf + ld a, [hli] + ld [rBGP], a ; $ff47 + ld c, $5 + call DelayFrames + dec b + jr nz, .asm_740bf + ret -CinnabarPokecenterText4: ; 75e45 (1d:5e45) - db $f6 +DisplayCreditsMon: ; 740cb (1d:40cb) + xor a + ld [H_AUTOBGTRANSFERENABLED],a + call SaveScreenTilesToBuffer1 + call FillMiddleOfScreenWithWhite -INCLUDE "data/mapObjects/cinnabarpokecenter.asm" + ; display the next monster from CreditsMons + ld hl,$CD3E + ld c,[hl] ; how many monsters have we displayed so far? + inc [hl] + ld b,0 + ld hl,CreditsMons + add hl,bc ; go that far in the list of monsters and get the next one + ld a,[hl] + ld [$CF91],a + ld [$D0B5],a + FuncCoord 8, 6 ; $c420 + ld hl,Coord + call GetMonHeader + call LoadFrontSpriteByMonIndex + ld hl,$980C + call Func_74164 + xor a + ld [H_AUTOBGTRANSFERENABLED],a + call LoadScreenTilesFromBuffer1 + ld hl,$9800 + call Func_74164 + ld a,$A7 + ld [$FF4B],a + ld hl,$9C00 + call Func_74164 + call FillMiddleOfScreenWithWhite + ld a,$FC + ld [$FF47],a + ld bc,7 +.next + call Func_74140 + dec c + jr nz,.next + ld c,$14 +.next2 + call Func_74140 + ld a,[$FF4B] + sub 8 + ld [$FF4B],a + dec c + jr nz,.next2 + xor a + ld [$FFB0],a + ld a,$C0 + ld [$FF47],a + ret -INCLUDE "data/mapHeaders/cinnabarmart.asm" +INCLUDE "data/credit_mons.asm" -CinnabarMartScript: ; 75e7e (1d:5e7e) - jp EnableAutoTextBoxDrawing +Func_74140: ; 74140 (1d:4140) + ld h, b + ld l, $20 + call Func_74152 + ld h, $0 + ld l, $70 + call Func_74152 + ld a, b + add $8 + ld b, a + ret -CinnabarMartTextPointers: ; 75e81 (1d:5e81) - dw CinnabarMartText1 - dw CinnabarMartText2 - dw CinnabarMartText3 +Func_74152: ; 74152 (1d:4152) + ld a, [$ff44] + cp l + jr nz, Func_74152 + ld a, h + ld [rSCX], a ; $ff43 +.asm_7415a + ld a, [$ff44] + cp h + jr z, .asm_7415a + ret -CinnabarMartText2: ; 75e87 (1d:5e87) - TX_FAR _CinnabarMartText2 - db "@" +DataTable_74160: ; 74160 (1d:4160) + db $C0,$D0,$E0,$F0 -CinnabarMartText3: ; 75e8c (1d:5e8c) - TX_FAR _CinnabarMartText3 - db "@" +Func_74164: ; 74164 (1d:4164) + ld a, l + ld [H_AUTOBGTRANSFERDEST], a ; $ffbc + ld a, h + ld [$ffbd], a + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + jp Delay3 -INCLUDE "data/mapObjects/cinnabarmart.asm" +Func_74171: ; 74171 (1d:4171) + ld [hl], $0 + inc hl + inc hl + dec bc + ld a, b + or c + jr nz, Func_74171 + ret -INCLUDE "data/mapHeaders/copycatshouse1f.asm" +Func_7417b: ; 7417b (1d:417b) + ld bc, $50 + ld a, $7e + jp FillMemory -CopycatsHouse1FScript: ; 75ec3 (1d:5ec3) - jp EnableAutoTextBoxDrawing +FillMiddleOfScreenWithWhite: ; 74183 (1d:4183) + FuncCoord 0, 4 ; $c3f0 + ld hl, Coord + ld bc, $c8 ; 10 rows of 20 tiles each + ld a, $7f ; blank white tile + jp FillMemory -CopycatsHouse1FTextPointers: ; 75ec6 (1d:5ec6) - dw CopycatsHouse1FText1 - dw CopycatsHouse1FText2 - dw CopycatsHouse1FText3 +Func_7418e: ; 7418e (1d:418e) + ld de, CreditsOrder ; $4243 + push de +.asm_74192 + pop de + FuncCoord 9, 6 ; $c421 + ld hl, Coord + push hl + call FillMiddleOfScreenWithWhite + pop hl +.asm_7419b + ld a, [de] + inc de + push de + cp $ff + jr z, .asm_741d5 + cp $fe + jr z, .asm_741dc + cp $fd + jr z, .asm_741e6 + cp $fc + jr z, .asm_741ed + cp $fb + jr z, .asm_741f4 + cp $fa + jr z, .showTheEnd + push hl + push hl + ld hl, CreditsTextPointers ; $42c3 + add a + ld c, a + ld b, $0 + add hl, bc + ld e, [hl] + inc hl + ld d, [hl] + ld a, [de] + inc de + ld c, a + ld b, $ff + pop hl + add hl, bc + call PlaceString + pop hl + ld bc, $28 + add hl, bc + pop de + jr .asm_7419b +.asm_741d5 + call Func_740ba + ld c, $5a + jr .asm_741de +.asm_741dc + ld c, $6e +.asm_741de + call DelayFrames + call DisplayCreditsMon + jr .asm_74192 +.asm_741e6 + call Func_740ba + ld c, $78 + jr .asm_741ef +.asm_741ed + ld c, $8c +.asm_741ef + call DelayFrames + jr .asm_74192 +.asm_741f4 + push de + ld b, BANK(Func_4541) + ld hl, Func_4541 + call Bankswitch + pop de + pop de + jr .asm_7419b +.showTheEnd + ld c, $10 + call DelayFrames + call FillMiddleOfScreenWithWhite + pop de + ld de, TheEndGfx + ld hl, $9600 + ld bc, (BANK(TheEndGfx) << 8) + $0a + call CopyVideoData + FuncCoord 4, 8 ; $c444 + ld hl, Coord + ld de, UnnamedText_74229 ; $4229 + call PlaceString + FuncCoord 4, 9 ; $c458 + ld hl, Coord + inc de + call PlaceString + jp Func_740ba -CopycatsHouse1FText1: ; 75ecc (1d:5ecc) - TX_FAR _CopycatsHouse1FText1 - db "@" +UnnamedText_74229: ; 74229 (1d:4229) + db $60," ",$62," ",$64," ",$64," ",$66," ",$68,"@" + db $61," ",$63," ",$65," ",$65," ",$67," ",$69,"@" -CopycatsHouse1FText2: ; 75ed1 (1d:5ed1) - TX_FAR _CopycatsHouse1FText2 - db "@" +CreditsOrder: ; 74243 (1d:4243) +; subsequent credits elements will be displayed on separate lines. +; $FF, $FE, $FD, $FC, $FB, and $FA are commands that are used +; to go to the next set of credits texts. + db CRED_MON, CRED_VERSION, $FF + db CRED_DIRECTOR, CRED_TAJIRI, $FF + db CRED_PROGRAMMERS, CRED_TA_OOTA, CRED_MORIMOTO, $FD + db CRED_PROGRAMMERS, CRED_WATANABE, CRED_MASUDE, CRED_TAMADA, $FE + db CRED_CHAR_DESIGN, CRED_SUGIMORI, CRED_NISHIDA, $FF + db CRED_MUSIC, CRED_MASUDE, $FD + db CRED_SOUND_EFFECTS, CRED_MASUDE, $FE + db CRED_GAME_DESIGN, CRED_TAJIRI, $FF + db CRED_MONSTER_DESIGN, CRED_SUGIMORI, CRED_NISHIDA, CRED_FUZIWARA, $FD + db CRED_MONSTER_DESIGN, CRED_MORIMOTO, CRED_SA_OOTA, CRED_YOSHIKAWA, $FE + db CRED_GAME_SCENE, CRED_TAJIRI, $FD + db CRED_GAME_SCENE, CRED_TANIGUCHI, CRED_NONOMURA, CRED_ZINNAI, $FE + db CRED_PARAM, CRED_NISINO, CRED_TA_NAKAMURA, $FF + db CRED_MAP, CRED_TAJIRI, CRED_NISINO, $FD + db CRED_MAP, CRED_MATSUSIMA, CRED_NONOMURA, CRED_TANIGUCHI, $FE + db CRED_TEST, CRED_KAKEI, CRED_TSUCHIYA, $FD + db CRED_TEST, CRED_TA_NAKAMURA, CRED_YUDA, $FE + db CRED_SPECIAL, CRED_HISHIDA, CRED_SAKAI, $FD + db CRED_SPECIAL, CRED_YAMAGUCHI, CRED_YAMAMOTO, $FC + db CRED_SPECIAL, CRED_TOMISAWA, CRED_KAWAMOTO, CRED_TO_OOTA, $FE + db CRED_PRODUCERS, CRED_MIYAMOTO, $FD + db CRED_PRODUCERS, CRED_KAWAGUCHI, $FC + db CRED_PRODUCERS, CRED_ISHIHARA, $FE + db CRED_US_STAFF, $FD + db CRED_US_COORD, CRED_TILDEN, $FD + db CRED_US_COORD, CRED_KAWAKAMI, CRED_HI_NAKAMURA, $FC + db CRED_US_COORD, CRED_GIESE, CRED_OSBORNE, $FC + db CRED_TRANS, CRED_OGASAWARA, $FD + db CRED_PROGRAMMERS, CRED_MURAKAWA, CRED_FUKUI, $FD + db CRED_SPECIAL, CRED_IWATA, $FD + db CRED_SPECIAL, CRED_HARADA, $FC + db CRED_TEST, CRED_PAAD, CRED_CLUB, $FD + db CRED_PRODUCER, CRED_IZUSHI, $FD + db CRED_EXECUTIVE, CRED_YAMAUCHI, $FF + db $FB, $FF, $FA -CopycatsHouse1FText3: ; 75ed6 (1d:5ed6) - TX_FAR _CopycatsHouse1FText3 - db $8 - ld a, CHANSEY - call PlayCry - jp TextScriptEnd -INCLUDE "data/mapObjects/copycatshouse1f.asm" +CreditsTextPointers: ; 742c3 (1d:42c3) + dw CredVersion + dw CredTajiri + dw CredTaOota + dw CredMorimoto + dw CredWatanabe + dw CredMasuda + dw CredNisino + dw CredSugimori + dw CredNishida + dw CredMiyamoto + dw CredKawaguchi + dw CredIshihara + dw CredYamauchi + dw CredZinnai + dw CredHishida + dw CredSakai + dw CredYamaguchi + dw CredYamamoto + dw CredTaniguchi + dw CredNonomura + dw CredFuziwara + dw CredMatsusima + dw CredTomisawa + dw CredKawamoto + dw CredKakei + dw CredTsuchiya + dw CredTaNakamura + dw CredYuda + dw CredMon + dw CredDirector + dw CredProgrammers + dw CredCharDesign + dw CredMusic + dw CredSoundEffects + dw CredGameDesign + dw CredMonsterDesign + dw CredGameScene + dw CredParam + dw CredMap + dw CredTest + dw CredSpecial + dw CredProducers + dw CredProducer + dw CredExecutive + dw CredTamada + dw CredSaOota + dw CredYoshikawa + dw CredToOota + dw CredUSStaff + dw CredUSCoord + dw CredTilden + dw CredKawakami + dw CredHiNakamura + dw CredGiese + dw CredOsborne + dw CredTrans + dw CredOgasawara + dw CredIwata + dw CredIzushi + dw CredHarada + dw CredMurakawa + dw CredFukui + dw CredClub + dw CredPAAD -INCLUDE "data/mapHeaders/gary.asm" +CredVersion: ; 74343 (1d:4343) ; this 1 byte difference makes all bank addresses offset by 1 in the blue version +IF _RED + db -8, "RED VERSION STAFF@" +ENDC +IF _BLUE + db -8, "BLUE VERSION STAFF@" +ENDC +CredTajiri: ; 74356 (1d:4356) + db -6, "SATOSHI TAJIRI@" +CredTaOota: ; 74366 (1d:4366) + db -6, "TAKENORI OOTA@" +CredMorimoto: ; 74375 (1d:4375) + db -7, "SHIGEKI MORIMOTO@" +CredWatanabe: ; 74387 (1d:4387) + db -7, "TETSUYA WATANABE@" +CredMasuda: ; 74399 (1d:4399) + db -6, "JUNICHI MASUDA@" +CredNisino: ; 743a9 (1d:43a9) + db -5, "KOHJI NISINO@" +CredSugimori: ; 743b7 (1d:43b7) + db -5, "KEN SUGIMORI@" +CredNishida: ; 743c5 (1d:43c5) + db -6, "ATSUKO NISHIDA@" +CredMiyamoto: ; 743d5 (1d:43d5) + db -7, "SHIGERU MIYAMOTO@" +CredKawaguchi: ; 743e7 (1d:43e7) + db -8, "TAKASHI KAWAGUCHI@" +CredIshihara: ; 743fa (1d:43fa) + db -8, "TSUNEKAZU ISHIHARA@" +CredYamauchi: ; 7440e (1d:440e) + db -7, "HIROSHI YAMAUCHI@" +CredZinnai: ; 74420 (1d:4420) + db -7, "HIROYUKI ZINNAI@" +CredHishida: ; 74431 (1d:4431) + db -7, "TATSUYA HISHIDA@" +CredSakai: ; 74442 (1d:4442) + db -6, "YASUHIRO SAKAI@" +CredYamaguchi: ; 74452 (1d:4452) + db -7, "WATARU YAMAGUCHI@" +CredYamamoto: ; 74464 (1d:4464) + db -8, "KAZUYUKI YAMAMOTO@" +CredTaniguchi: ; 74477 (1d:4477) + db -8, "RYOHSUKE TANIGUCHI@" +CredNonomura: ; 7448b (1d:448b) + db -8, "FUMIHIRO NONOMURA@" +CredFuziwara: ; 7449e (1d:449e) + db -7, "MOTOFUMI FUZIWARA@" +CredMatsusima: ; 744b1 (1d:44b1) + db -7, "KENJI MATSUSIMA@" +CredTomisawa: ; 744c2 (1d:44c2) + db -7, "AKIHITO TOMISAWA@" +CredKawamoto: ; 744d4 (1d:44d4) + db -7, "HIROSHI KAWAMOTO@" +CredKakei: ; 744e6 (1d:44e6) + db -6, "AKIYOSHI KAKEI@" +CredTsuchiya: ; 744f6 (1d:44f6) + db -7, "KAZUKI TSUCHIYA@" +CredTaNakamura: ; 74507 (1d:4507) + db -6, "TAKEO NAKAMURA@" +CredYuda: ; 74517 (1d:4517) + db -6, "MASAMITSU YUDA@" +CredMon: ; 74527 (1d:4527) + db -3, "#MON@" +CredDirector: ; 7452d (1d:452d) + db -3, "DIRECTOR@" +CredProgrammers: ; 74537 (1d:4537) + db -5, "PROGRAMMERS@" +CredCharDesign: ; 74544 (1d:4544) + db -7, "CHARACTER DESIGN@" +CredMusic: ; 74556 (1d:4556) + db -2, "MUSIC@" +CredSoundEffects: ; 7455d (1d:455d) + db -6, "SOUND EFFECTS@" +CredGameDesign: ; 7456c (1d:456c) + db -5, "GAME DESIGN@" +CredMonsterDesign: ; 74579 (1d:4579) + db -6, "MONSTER DESIGN@" +CredGameScene: ; 74589 (1d:4589) + db -6, "GAME SCENARIO@" +CredParam: ; 74598 (1d:4598) + db -8, "PARAMETRIC DESIGN@" +CredMap: ; 745ab (1d:45ab) + db -4, "MAP DESIGN@" +CredTest: ; 745b7 (1d:45b7) + db -7, "PRODUCT TESTING@" +CredSpecial: ; 745c8 (1d:45c8) + db -6, "SPECIAL THANKS@" +CredProducers: ; 745d8 (1d:45d8) + db -4, "PRODUCERS@" +CredProducer: ; 745e3 (1d:45e3) + db -4, "PRODUCER@" +CredExecutive: ; 745ed (1d:45ed) + db -8, "EXECUTIVE PRODUCER@" +CredTamada: ; 74601 (1d:4601) + db -6, "SOUSUKE TAMADA@" +CredSaOota: ; 74611 (1d:4611) + db -5, "SATOSHI OOTA@" +CredYoshikawa: ; 7461f (1d:461f) + db -6, "RENA YOSHIKAWA@" +CredToOota: ; 7462f (1d:462f) + db -6, "TOMOMICHI OOTA@" +CredUSStaff: ; 7463f (1d:463f) + db -7, "US VERSION STAFF@" +CredUSCoord: ; 74651 (1d:4651) + db -7, "US COORDINATION@" +CredTilden: ; 74662 (1d:4662) + db -5, "GAIL TILDEN@" +CredKawakami: ; 7466f (1d:466f) + db -6, "NAOKO KAWAKAMI@" +CredHiNakamura: ; 7467f (1d:467f) + db -6, "HIRO NAKAMURA@" +CredGiese: ; 7468e (1d:468e) + db -6, "WILLIAM GIESE@" +CredOsborne: ; 7469d (1d:469d) + db -5, "SARA OSBORNE@" +CredTrans: ; 746ab (1d:46ab) + db -7, "TEXT TRANSLATION@" +CredOgasawara: ; 746bd (1d:46bd) + db -6, "NOB OGASAWARA@" +CredIwata: ; 746cc (1d:46cc) + db -5, "SATORU IWATA@" +CredIzushi: ; 746da (1d:46da) + db -7, "TAKEHIRO IZUSHI@" +CredHarada: ; 746eb (1d:46eb) + db -7, "TAKAHIRO HARADA@" +CredMurakawa: ; 746fc (1d:46fc) + db -7, "TERUKI MURAKAWA@" +CredFukui: ; 7470d (1d:470d) + db -5, "KOHTA FUKUI@" +CredClub: ; 7471a (1d:471a) + db -9, "NCL SUPER MARIO CLUB@" +CredPAAD: ; 74730 (1d:4730) + db -5, "PAAD TESTING@" -GaryScript: ; 75f1d (1d:5f1d) - call EnableAutoTextBoxDrawing - ld hl, GaryScriptPointers - ld a, [W_GARYCURSCRIPT] - jp CallFunctionInTable +TheEndGfx: ; 7473e (1d:473e) ; 473E (473F on blue) + INCBIN "gfx/theend.w40.interleave.2bpp" -GaryScript_75f29: ; 75f29 (1d:5f29) - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_GARYCURSCRIPT], a +PrintStatusAilment: ; 747de (1d:47de) + ld a, [de] + bit 3, a + jr nz, .psn + bit 4, a + jr nz, .brn + bit 5, a + jr nz, .frz + bit 6, a + jr nz, .par + and $7 ; slp + ret z + ld a, "S" + ld [hli], a + ld a, "L" + ld [hli], a + ld [hl], "P" ret - -GaryScriptPointers: ; 75f31 (1d:5f31) - dw GaryScript0 - dw GaryScript1 - dw GaryScript2 - dw GaryScript3 - dw GaryScript4 - dw GaryScript5 - dw GaryScript6 - dw GaryScript7 - dw GaryScript8 - dw GaryScript9 - dw GaryScript10 - -GaryScript0: ; 75f47 (1d:5f47) +.psn + ld a, "P" + ld [hli], a + ld a, "S" + ld [hli], a + ld [hl], "N" ret - -GaryScript1: ; 75f48 (1d:5f48) - ld a, $ff - ld [wJoypadForbiddenButtonsMask], a - ld hl, $ccd3 - ld de, RLEMovement75f63 - call DecodeRLEList - dec a - ld [$cd38], a - call Func_3486 - ld a, $2 - ld [W_GARYCURSCRIPT], a +.brn + ld a, "B" + ld [hli], a + ld a, "R" + ld [hli], a + ld [hl], "N" + ret +.frz + ld a, "F" + ld [hli], a + ld a, "R" + ld [hli], a + ld [hl], "Z" + ret +.par + ld a, "P" + ld [hli], a + ld a, "A" + ld [hli], a + ld [hl], "R" ret -RLEMovement75f63: ; 75f63 (1d:5f63) - db $40,1 - db $10,1 - db $40,3 - db $ff - -GaryScript2: ; 75f6a (1d:5f6a) - ld a, [$cd38] +HiddenItemNear: ; 7481f (1d:481f) + ld hl, HiddenItemCoords + ld b, $0 +.asm_74824 + ld de, $0003 + ld a, [W_CURMAP] + call IsInArrayCummulativeCount + ret nc ; return if current map has no hidden items + push bc + push hl + ld hl, $d6f0 + ld c, b + ld b, $2 + ld a, $10 + call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) + ld a, c + pop hl + pop bc + inc b and a - ret nz - call Delay3 - xor a - ld [wJoypadForbiddenButtonsMask], a - ld hl, $d355 - res 7, [hl] - ld a, $1 - ld [$ff8c], a - call DisplayTextID - call Delay3 - ld hl, $d72d - set 6, [hl] - set 7, [hl] - ld hl, UnnamedText_760f9 - ld de, UnnamedText_760fe - call PreBattleSaveRegisters - ld a, SONY3 + $c8 - ld [W_CUROPPONENT], a - - ; select which team to use during the encounter - ld a, [W_RIVALSTARTER] - cp SQUIRTLE - jr nz, .NotSquirtle ; 0x75f9f $4 - ld a, $1 - jr .done -.NotSquirtle - cp BULBASAUR - jr nz, .Charmander ; 0x75fa7 $4 - ld a, $2 - jr .done -.Charmander - ld a, $3 -.done - ld [W_TRAINERNO], a - - xor a - ld [H_CURRENTPRESSEDBUTTONS], a - ld a, $3 - ld [W_GARYCURSCRIPT], a + inc hl + ld d, [hl] + inc hl + ld e, [hl] + inc hl + jr nz, .asm_74824 ; 0x74845 $dd + ld a, [W_YCOORD] + call Func_7486b + cp d + jr nc, .asm_74824 ; 0x7484e $d4 + ld a, [W_YCOORD] + add $4 + cp d + jr c, .asm_74824 ; 0x74856 $cc + ld a, [W_XCOORD] + call Func_7486b + cp e + jr nc, .asm_74824 ; 0x7485f $c3 + ld a, [W_XCOORD] + add $5 + cp e + jr c, .asm_74824 ; 0x74867 $bb + scf ret -GaryScript3: ; 75fbb (1d:5fbb) - ld a, [W_ISINBATTLE] - cp $ff - jp z, GaryScript_75f29 - call UpdateSprites ; move sprites - ld hl, $d867 - set 1, [hl] - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - ld a, $1 - ld [$ff8c], a - call GaryScript_760c8 - ld a, $1 - ld [$ff8c], a - call SetSpriteMovementBytesToFF - ld a, $4 - ld [W_GARYCURSCRIPT], a +Func_7486b: ; 7486b (1d:486b) + sub $5 + cp $f0 + ret c + xor a ret -GaryScript4: ; 75fe4 (1d:5fe4) - ld b, BANK(Music_Cities1AlternateTempo) - ld hl, Music_Cities1AlternateTempo - call Bankswitch - ld a, $2 - ld [$ff8c], a - call GaryScript_760c8 - ld a, $2 - ld [$ff8c], a - call SetSpriteMovementBytesToFF - ld de, MovementData_76014 - ld a, $2 - ld [$ff8c], a - call MoveSprite - ld a, $d6 - ld [$cc4d], a +Func_74872: ; 74872 (1d:4872) +; code similar to this appears in a lot of banks; this particular +; one is called after you beat the Rocket that gives you TM28 DIG. +; the screen then fades out, he disappears, and fades back in + call GBFadeIn1 + ld a, $07 + ld [$CC4D], a ld a, $15 call Predef - ld a, $5 - ld [W_GARYCURSCRIPT], a + ld a, $09 + ld [$CC4D], a + ld a, $11 + call Predef + ld a, $06 + ld [$CC4D], a + ld a, $11 + call Predef + call GBFadeOut1 ret -MovementData_76014: ; 76014 (1d:6014) - db $40,$40,$40,$40,$40,$FF +INCLUDE "data/mapHeaders/viridiangym.asm" -GaryScript5: ; 7601a (1d:601a) - ld a, [$d730] - bit 0, a - ret nz - ld a, $2 - ld [$d528], a - ld a, $1 - ld [$ff8c], a - ld a, $8 - ld [$ff8d], a - call Func_34a6 - ld a, $2 - ld [$ff8c], a - xor a - ld [$ff8d], a - call Func_34a6 ; face object - ld a, $3 - ld [$ff8c], a - call GaryScript_760c8 - ld a, $6 - ld [W_GARYCURSCRIPT], a - ret +INCLUDE "scripts/viridiangym.asm" -GaryScript6: ; 76047 (1d:6047) - ld a, $2 - ld [$ff8c], a - ld a, $c - ld [$ff8d], a - call Func_34a6 ; face object - ld a, $4 - ld [$ff8c], a - call GaryScript_760c8 - ld a, $7 - ld [W_GARYCURSCRIPT], a - ret +INCLUDE "data/mapObjects/viridiangym.asm" -GaryScript7: ; 7605f (1d:605f) - ld a, $2 - ld [$ff8c], a - xor a - ld [$ff8d], a - call Func_34a6 ; face object - ld a, $5 - ld [$ff8c], a - call GaryScript_760c8 - ld de, MovementData_76080 - ld a, $2 - ld [$ff8c], a - call MoveSprite - ld a, $8 - ld [W_GARYCURSCRIPT], a - ret +ViridianGymBlocks: ; 74c47 (1d:4c47) + INCBIN "maps/viridiangym.blk" -MovementData_76080: ; 76080 (1d:6080) - db $40,$40,$FF +INCLUDE "data/mapHeaders/pewtermart.asm" -GaryScript8: ; 76083 (1d:6083) - ld a, [$d730] - bit 0, a - ret nz - ld a, $d6 - ld [$cc4d], a - ld a, $11 - call Predef - ld a, $9 - ld [W_GARYCURSCRIPT], a - ret +INCLUDE "scripts/pewtermart.asm" -GaryScript9: ; 76099 (1d:6099) - ld a, $ff - ld [wJoypadForbiddenButtonsMask], a - ld hl, $ccd3 - ld de, RLEMovement760b4 - call DecodeRLEList - dec a - ld [$cd38], a - call Func_3486 - ld a, $a - ld [W_GARYCURSCRIPT], a - ret +INCLUDE "data/mapObjects/pewtermart.asm" -RLEMovement760b4 ; 760b4 (1d:60b4) - db $40,4 - db $20,1 - db $ff +INCLUDE "data/mapHeaders/unknowndungeon1.asm" -GaryScript10: ; 760b9 (1d:60b9) - ld a, [$cd38] - and a - ret nz - xor a - ld [wJoypadForbiddenButtonsMask], a - ld a, $0 - ld [W_GARYCURSCRIPT], a - ret +INCLUDE "scripts/unknowndungeon1.asm" -GaryScript_760c8 ; 760c8 (1d:60c8) - ld a, $f0 - ld [wJoypadForbiddenButtonsMask], a - call DisplayTextID - ld a, $ff - ld [wJoypadForbiddenButtonsMask], a - ret +INCLUDE "data/mapObjects/unknowndungeon1.asm" -GaryTextPointers: ; 760d6 (1d:60d6) - dw GaryText1 - dw GaryText2 - dw GaryText3 - dw GaryText4 - dw GaryText5 +UnknownDungeon1Blocks: ; 74d76 (1d:4d76) + INCBIN "maps/unknowndungeon1.blk" -GaryText1: ; 760e0 (1d:60e0) - db $08 ; asm - ld a, [$d867] +INCLUDE "data/mapHeaders/ceruleanhouse2.asm" + +INCLUDE "scripts/ceruleanhouse2.asm" + +INCLUDE "data/mapObjects/ceruleanhouse2.asm" + +VendingMachineMenu: ; 74ee0 (1d:4ee0) + ld hl, VendingMachineText1 + call PrintText + ld a, $13 + ld [$d125], a + call DisplayTextBoxID + xor a + ld [wCurrentMenuItem], a ; $cc26 + ld [wLastMenuItem], a ; $cc2a + ld a, $3 + ld [wMenuWatchedKeys], a ; $cc29 + ld a, $3 + ld [wMaxMenuItem], a ; $cc28 + ld a, $5 + ld [wTopMenuItemY], a ; $cc24 + ld a, $1 + ld [wTopMenuItemX], a ; $cc25 + ld hl, $d730 + set 6, [hl] + FuncCoord 0, 3 ; $c3dc + ld hl, Coord + ld b, $8 + ld c, $c + call TextBoxBorder + call UpdateSprites + FuncCoord 2, 5 ; $c406 + ld hl, Coord + ld de, DrinkText + call PlaceString + FuncCoord 9, 6 ; $c421 + ld hl, Coord + ld de, DrinkPriceText + call PlaceString + ld hl, $d730 + res 6, [hl] + call HandleMenuInput bit 1, a - ld hl, UnnamedText_760f4 - jr z, .asm_17e9f ; 0x760e9 - ld hl, UnnamedText_76103 -.asm_17e9f ; 0x760ee + jr nz, .asm_74f93 + ld a, [wCurrentMenuItem] ; $cc26 + cp $3 + jr z, .asm_74f93 + xor a + ld [$ff9f], a + ld [$ffa1], a + ld a, $2 + ld [$ffa0], a + call HasEnoughMoney + jr nc, .enoughMoney + ld hl, VendingMachineText4 + jp PrintText +.enoughMoney + call Func_74fe7 + ld a, [$ffdb] + ld b, a + ld c, 1 + call GiveItem + jr nc, .BagFull + ld b, $3c ; number of times to play the "brrrrr" sound +.playDeliverySound ; 0x74f63 + ld c, $2 + call DelayFrames + push bc + ld a, (SFX_02_53 - SFX_Headers_02) / 3 + call PlaySound + pop bc + dec b + jr nz, .playDeliverySound +.asm_74f72 + ld hl, VendingMachineText5 call PrintText - jp TextScriptEnd + ld hl, $ffde + ld de, wPlayerMoney + 2 ; $d349 + ld c, $3 + ld a, $c + call Predef ; indirect jump to Func_f836 (f836 (3:7836)) + ld a, $13 + ld [$d125], a + jp DisplayTextBoxID +.BagFull + ld hl, VendingMachineText6 + jp PrintText +.asm_74f93 + ld hl, VendingMachineText7 + jp PrintText -UnnamedText_760f4: ; 760f4 (1d:60f4) - TX_FAR _UnnamedText_760f4 +VendingMachineText1: ; 74f99 (1d:4f99) + TX_FAR _VendingMachineText1 db "@" -UnnamedText_760f9: ; 760f9 (1d:60f9) - TX_FAR _UnnamedText_760f9 +DrinkText: ; 74f9e (1d:4f9e) + db "FRESH WATER" + next "SODA POP" + next "LEMONADE" + next "CANCEL@" + +DrinkPriceText: ; 74fc3 (1d:4fc3) + db "¥200" + next "¥300" + next "¥350",$4E,"@" + +VendingMachineText4: ; 74fd3 (1d:4fd3) + TX_FAR _VendingMachineText4 db "@" -UnnamedText_760fe: ; 760fe (1d:60fe) - TX_FAR _UnnamedText_760fe +VendingMachineText5: ; 74fd8 (1d:4fd8) + TX_FAR _VendingMachineText5 db "@" -UnnamedText_76103: ; 76103 (1d:6103) - TX_FAR _UnnamedText_76103 +VendingMachineText6: ; 74fdd (1d:4fdd) + TX_FAR _VendingMachineText6 db "@" -GaryText2: ; 76108 (1d:6108) - TX_FAR _GaryText2 +VendingMachineText7: ; 74fe2 (1d:4fe2) + TX_FAR _VendingMachineText7 db "@" -GaryText3: ; 7610d (1d:610d) - db $8 - ld a, [$d717] - ld [$d11e], a - call GetMonName - ld hl, UnnamedText_76120 - call PrintText - jp TextScriptEnd +Func_74fe7: ; 74fe7 (1d:4fe7) + ld hl, VendingPrices + ld a, [$cc26] + add a + add a + ld d, $0 + ld e, a + add hl, de + ld a, [hli] + ld [$ffdb], a + ld a, [hli] + ld [$ffdc], a + ld a, [hli] + ld [$ffdd], a + ld a, [hl] + ld [$ffde], a + ret -UnnamedText_76120: ; 76120 (1d:6120) - TX_FAR _UnnamedText_76120 - db "@" +VendingPrices: ; 75000 (1d:5000) + db FRESH_WATER,$00,$02,$00 + db SODA_POP, $00,$03,$00 + db LEMONADE, $00,$03,$50 -GaryText4: ; 76125 (1d:6125) - TX_FAR _UnnamedText_76125 - db "@" +INCLUDE "data/mapHeaders/fuchsiahouse1.asm" -GaryText5: ; 7612a (1d:612a) - TX_FAR _UnnamedText_7612a - db "@" +INCLUDE "scripts/fuchsiahouse1.asm" -INCLUDE "data/mapObjects/gary.asm" +INCLUDE "data/mapObjects/fuchsiahouse1.asm" -GaryBlocks: ; 7615f (1d:615f) - INCBIN "maps/gary.blk" +INCLUDE "data/mapHeaders/fuchsiapokecenter.asm" -INCLUDE "data/mapHeaders/lorelei.asm" +INCLUDE "scripts/fuchsiapokecenter.asm" -LoreleiScript: ; 7617b (1d:617b) - call LoreleiScript_76191 - call EnableAutoTextBoxDrawing - ld hl, LoreleiTrainerHeaders - ld de, LoreleiScriptPointers - ld a, [W_LORELEICURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_LORELEICURSCRIPT], a - ret +INCLUDE "data/mapObjects/fuchsiapokecenter.asm" -LoreleiScript_76191: ; 76191 (1d:6191) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - ret z - ld hl, $d734 - set 1, [hl] - ld a, [$d863] - bit 1, a - jr z, .asm_761a9 - ld a, $5 - jr .asm_761ab -.asm_761a9 - ld a, $24 -.asm_761ab - ld [$d09f], a - ld bc, $2 - ld a, $17 - jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) +INCLUDE "data/mapHeaders/fuchsiahouse2.asm" -Func_761b6: ; 761b6 (1d:61b6) - xor a - ld [W_LORELEICURSCRIPT], a - ret +INCLUDE "scripts/fuchsiahouse2.asm" -LoreleiScriptPointers: ; 761bb (1d:61bb) - dw LoreleiScript0 - dw Func_324c - dw LoreleiScript2 - dw LoreleiScript3 - dw LoreleiScript4 +INCLUDE "data/mapObjects/fuchsiahouse2.asm" -LoreleiScript4: ; 761c5 (1d:61c5) - ret -asm_761c6: ; 761c6 (1d:61c6) - ld hl, $ccd3 - ld a, $40 - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld a, $6 - ld [$cd38], a - call Func_3486 - ld a, $3 - ld [W_LORELEICURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret -LoreleiScript0: ; 761e2 (1d:61e2) - ld hl, CoordsData_76223 - call ArePlayerCoordsInArray - jp nc, CheckFightingMapTrainers - xor a - ld [H_NEWLYPRESSEDBUTTONS], a - ld [H_CURRENTPRESSEDBUTTONS], a - ld [$ccd3], a - ld [$cd38], a - ld a, [wWhichTrade] ; $cd3d - cp $3 - jr c, .asm_76206 - ld hl, $d863 - bit 6, [hl] - set 6, [hl] - jr z, asm_761c6 -.asm_76206 - ld a, $2 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld a, $40 - ld [$ccd3], a - ld a, $1 - ld [$cd38], a - call Func_3486 - ld a, $3 - ld [W_LORELEICURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret +FuchsiaHouse2Blocks: ; 751ad (1d:51ad) + INCBIN "maps/fuchsiahouse2.blk" -CoordsData_76223: ; 76223 (1d:6223) - db $0A,$04 - db $0A,$05 - db $0B,$04 - db $0B,$05 - db $FF +INCLUDE "data/mapHeaders/safarizoneentrance.asm" -LoreleiScript3: ; 7622c (1d:622c) - ld a, [$cd38] - and a - ret nz - call Delay3 - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_LORELEICURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret -LoreleiScript2: ; 7623f (1d:623f) - call EndTrainerBattle - ld a, [W_ISINBATTLE] ; $d057 - cp $ff - jp z, Func_761b6 - ld a, $1 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - jp DisplayTextID - -LoreleiTextPointers: ; 76251 (1d:6251) - dw LoreleiText1 - dw LoreleiText2 - -LoreleiTrainerHeaders: ; 76255 (1d:6255) -LoreleiTrainerHeader0: ; 76255 (1d:6255) - db $1 ; flag's bit - db ($0 << 4) ; trainer's view range - dw $d863 ; flag's byte - dw LoreleiBeforeBattleText ; 0x626c TextBeforeBattle - dw LoreleiAfterBattleText ; 0x6276 TextAfterBattle - dw LoreleiEndBattleText ; 0x6271 TextEndBattle - dw LoreleiEndBattleText ; 0x6271 TextEndBattle +INCLUDE "scripts/safarizoneentrance.asm" - db $ff +INCLUDE "data/mapObjects/safarizoneentrance.asm" -LoreleiText1: ; 76262 (1d:6262) - db $08 ; asm - ld hl, LoreleiTrainerHeader0 - call TalkToTrainer - jp TextScriptEnd +SafariZoneEntranceBlocks: ; 75425 (1d:5425) + INCBIN "maps/safarizoneentrance.blk" -LoreleiBeforeBattleText: ; 7626c (1d:626c) - TX_FAR _LoreleiBeforeBattleText - db "@" +INCLUDE "data/mapHeaders/fuchsiagym.asm" -LoreleiEndBattleText: ; 76271 (1d:6271) - TX_FAR _LoreleiEndBattleText - db "@" +INCLUDE "scripts/fuchsiagym.asm" -LoreleiAfterBattleText: ; 76276 (1d:6276) - TX_FAR _LoreleiAfterBattleText - db "@" +INCLUDE "data/mapObjects/fuchsiagym.asm" -LoreleiText2: ; 7627b (1d:627b) - TX_FAR _UnnamedText_7627b - db "@" +FuchsiaGymBlocks: ; 756aa (1d:56aa) + INCBIN "maps/fuchsiagym.blk" -INCLUDE "data/mapObjects/lorelei.asm" +INCLUDE "data/mapHeaders/fuchsiameetingroom.asm" -LoreleiBlocks: ; 762ac (1d:62ac) - INCBIN "maps/lorelei.blk" +INCLUDE "scripts/fuchsiameetingroom.asm" -INCLUDE "data/mapHeaders/bruno.asm" +INCLUDE "data/mapObjects/fuchsiameetingroom.asm" -BrunoScript: ; 762d6 (1d:62d6) - call BrunoScript_762ec - call EnableAutoTextBoxDrawing - ld hl, BrunoTrainerHeaders - ld de, BrunoScriptPointers - ld a, [W_BRUNOCURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_BRUNOCURSCRIPT], a - ret +FuchsiaMeetingRoomBlocks: ; 75722 (1d:5722) + INCBIN "maps/fuchsiameetingroom.blk" -BrunoScript_762ec: ; 762ec (1d:62ec) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - ret z - ld a, [$d864] - bit 1, a - jr z, .asm_76300 - ld a, $5 - jp Func_76302 -.asm_76300 - ld a, $24 +INCLUDE "data/mapHeaders/cinnabargym.asm" -Func_76302: ; 76302 (1d:6302) - ld [$d09f], a - ld bc, $2 - ld a, $17 - jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) +INCLUDE "scripts/cinnabargym.asm" -Func_7630d: ; 7630d (1d:630d) - xor a - ld [W_BRUNOCURSCRIPT], a - ret +INCLUDE "data/mapObjects/cinnabargym.asm" -BrunoScriptPointers: ; 76312 (1d:6312) - dw BrunoScript0 - dw Func_324c - dw BrunoScript2 - dw BrunoScript3 - dw BrunoScript4 +CinnabarGymBlocks: ; 75b26 (1d:5b26) + INCBIN "maps/cinnabargym.blk" -BrunoScript4: ; 7631c (1d:631c) - ret -asm_7631d: ; 7631d (1d:631d) - ld hl, $ccd3 - ld a, $40 - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld a, $6 - ld [$cd38], a - call Func_3486 - ld a, $3 - ld [W_BRUNOCURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret +INCLUDE "data/mapHeaders/lab1.asm" -BrunoScript0: ; 76339 (1d:6339) - ld hl, CoordsData_7637a - call ArePlayerCoordsInArray - jp nc, CheckFightingMapTrainers - xor a - ld [H_NEWLYPRESSEDBUTTONS], a - ld [H_CURRENTPRESSEDBUTTONS], a - ld [$ccd3], a - ld [$cd38], a - ld a, [wWhichTrade] ; $cd3d - cp $3 - jr c, .asm_7635d - ld hl, $d864 - bit 6, [hl] - set 6, [hl] - jr z, asm_7631d -.asm_7635d - ld a, $2 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld a, $40 - ld [$ccd3], a - ld a, $1 - ld [$cd38], a - call Func_3486 - ld a, $3 - ld [W_BRUNOCURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret +INCLUDE "scripts/lab1.asm" -CoordsData_7637a: ; 7637a (1d:637a) - db $0A,$04 - db $0A,$05 - db $0B,$04 - db $0B,$05 - db $FF +INCLUDE "data/mapObjects/lab1.asm" -BrunoScript3: ; 76383 (1d:6383) - ld a, [$cd38] - and a - ret nz - call Delay3 - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_BRUNOCURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret +Lab1Blocks: ; 75bf1 (1d:5bf1) + INCBIN "maps/lab1.blk" -BrunoScript2: ; 76396 (1d:6396) - call EndTrainerBattle - ld a, [W_ISINBATTLE] ; $d057 - cp $ff - jp z, Func_7630d - ld a, $1 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - jp DisplayTextID - -BrunoTextPointers: ; 763a8 (1d:63a8) - dw BrunoText1 - dw BrunoText2 - -BrunoTrainerHeaders: ; 763ac (1d:63ac) -BrunoTrainerHeader0: ; 763ac (1d:63ac) - db $1 ; flag's bit - db ($0 << 4) ; trainer's view range - dw $d864 ; flag's byte - dw BrunoBeforeBattleText ; 0x63c3 TextBeforeBattle - dw BrunoAfterBattleText ; 0x63cd TextAfterBattle - dw BrunoEndBattleText ; 0x63c8 TextEndBattle - dw BrunoEndBattleText ; 0x63c8 TextEndBattle +INCLUDE "data/mapHeaders/lab2.asm" - db $ff +INCLUDE "scripts/lab2.asm" -BrunoText1: ; 763b9 (1d:63b9) - db $08 ; asm - ld hl, BrunoTrainerHeader0 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapObjects/lab2.asm" -BrunoBeforeBattleText: ; 763c3 (1d:63c3) - TX_FAR _BrunoBeforeBattleText - db "@" +Lab2Blocks: ; 75c6b (1d:5c6b) + INCBIN "maps/lab2.blk" -BrunoEndBattleText: ; 763c8 (1d:63c8) - TX_FAR _BrunoEndBattleText - db "@" +INCLUDE "data/mapHeaders/lab3.asm" -BrunoAfterBattleText: ; 763cd (1d:63cd) - TX_FAR _BrunoAfterBattleText - db "@" +INCLUDE "scripts/lab3.asm" -BrunoText2: ; 763d2 (1d:63d2) - TX_FAR _UnnamedText_763d2 - db "@" +INCLUDE "data/mapObjects/lab3.asm" -INCLUDE "data/mapObjects/bruno.asm" +Lab3Blocks: ; 75d15 (1d:5d15) + INCBIN "maps/lab3.blk" -BrunoBlocks: ; 76403 (1d:6403) - INCBIN "maps/bruno.blk" +INCLUDE "data/mapHeaders/lab4.asm" -INCLUDE "data/mapHeaders/agatha.asm" +INCLUDE "scripts/lab4.asm" -AgathaScript: ; 7642d (1d:642d) - call AgathaScript_76443 - call EnableAutoTextBoxDrawing - ld hl, AgathaTrainerHeaders - ld de, AgathaScriptPointers - ld a, [W_AGATHACURSCRIPT] - call ExecuteCurMapScriptInTable - ld [W_AGATHACURSCRIPT], a - ret +INCLUDE "data/mapObjects/lab4.asm" -AgathaScript_76443: ; 76443 (1d:6443) - ld hl, $d126 - bit 5, [hl] - res 5, [hl] - ret z - ld a, [$d865] - bit 1, a - jr z, .asm_76457 - ld a, $e - jp Func_76459 -.asm_76457 - ld a, $3b +Lab4Blocks: ; 75e10 (1d:5e10) + INCBIN "maps/lab4.blk" -Func_76459: ; 76459 (1d:6459) - ld [$d09f], a - ld bc, $2 - ld a, $17 - jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) +INCLUDE "data/mapHeaders/cinnabarpokecenter.asm" -Func_76464: ; 76464 (1d:6464) - xor a - ld [W_AGATHACURSCRIPT], a - ret +INCLUDE "scripts/cinnabarpokecenter.asm" -AgathaScriptPointers: ; 76469 (1d:6469) - dw AgathaScript0 - dw Func_324c - dw AgathaScript2 - dw AgathaScript3 - dw AgathaScript4 +INCLUDE "data/mapObjects/cinnabarpokecenter.asm" -AgathaScript4: ; 76473 (1d:6473) - ret -asm_76474: ; 76474 (1d:6474) - ld hl, $ccd3 - ld a, $40 - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld a, $6 - ld [$cd38], a - call Func_3486 - ld a, $3 - ld [W_AGATHACURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret +INCLUDE "data/mapHeaders/cinnabarmart.asm" -AgathaScript0: ; 76490 (1d:6490) - ld hl, CoordsData_764d1 - call ArePlayerCoordsInArray - jp nc, CheckFightingMapTrainers - xor a - ld [H_NEWLYPRESSEDBUTTONS], a - ld [H_CURRENTPRESSEDBUTTONS], a - ld [$ccd3], a - ld [$cd38], a - ld a, [wWhichTrade] ; $cd3d - cp $3 - jr c, .asm_764b4 - ld hl, $d865 - bit 6, [hl] - set 6, [hl] - jr z, asm_76474 -.asm_764b4 - ld a, $2 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld a, $40 - ld [$ccd3], a - ld a, $1 - ld [$cd38], a - call Func_3486 - ld a, $3 - ld [W_AGATHACURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret +INCLUDE "scripts/cinnabarmart.asm" -CoordsData_764d1: ; 764d1 (1d:64d1) - db $0A,$04 - db $0A,$05 - db $0B,$04 - db $0B,$05 - db $FF +INCLUDE "data/mapObjects/cinnabarmart.asm" -AgathaScript3: ; 764da (1d:64da) - ld a, [$cd38] - and a - ret nz - call Delay3 - xor a - ld [wJoypadForbiddenButtonsMask], a - ld [W_AGATHACURSCRIPT], a - ld [W_CURMAPSCRIPT], a - ret +INCLUDE "data/mapHeaders/copycatshouse1f.asm" -AgathaScript2: ; 764ed (1d:64ed) - call EndTrainerBattle - ld a, [W_ISINBATTLE] ; $d057 - cp $ff - jp z, Func_76464 - ld a, $1 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c - call DisplayTextID - ld a, $1 - ld [W_GARYCURSCRIPT], a - ret +INCLUDE "scripts/copycatshouse1f.asm" -AgathaTextPointers: ; 76505 (1d:6505) - dw AgathaText1 - dw AgathaText2 +INCLUDE "data/mapObjects/copycatshouse1f.asm" -AgathaTrainerHeaders: ; 76509 (1d:6509) -AgathaTrainerHeader0: ; 76509 (1d:6509) - db $1 ; flag's bit - db ($0 << 4) ; trainer's view range - dw $d865 ; flag's byte - dw AgathaBeforeBattleText ; 0x6520 TextBeforeBattle - dw AgathaAfterBattleText ; 0x652a TextAfterBattle - dw AgathaEndBattleText ; 0x6525 TextEndBattle - dw AgathaEndBattleText ; 0x6525 TextEndBattle +INCLUDE "data/mapHeaders/gary.asm" - db $ff +INCLUDE "scripts/gary.asm" -AgathaText1: ; 76516 (1d:6516) - db $08 ; asm - ld hl, AgathaTrainerHeader0 - call TalkToTrainer - jp TextScriptEnd +INCLUDE "data/mapObjects/gary.asm" -AgathaBeforeBattleText: ; 76520 (1d:6520) - TX_FAR _AgathaBeforeBattleText - db "@" +GaryBlocks: ; 7615f (1d:615f) + INCBIN "maps/gary.blk" -AgathaEndBattleText: ; 76525 (1d:6525) - TX_FAR _AgathaEndBattleText - db "@" +INCLUDE "data/mapHeaders/lorelei.asm" -AgathaAfterBattleText: ; 7652a (1d:652a) - TX_FAR _AgathaAfterBattleText - db "@" +INCLUDE "scripts/lorelei.asm" -AgathaText2: ; 7652f (1d:652f) - TX_FAR _AgathaText2 - db "@" +INCLUDE "data/mapObjects/lorelei.asm" + +LoreleiBlocks: ; 762ac (1d:62ac) + INCBIN "maps/lorelei.blk" + +INCLUDE "data/mapHeaders/bruno.asm" + +INCLUDE "scripts/bruno.asm" + +INCLUDE "data/mapObjects/bruno.asm" + +BrunoBlocks: ; 76403 (1d:6403) + INCBIN "maps/bruno.blk" + +INCLUDE "data/mapHeaders/agatha.asm" + +INCLUDE "scripts/agatha.asm" INCLUDE "data/mapObjects/agatha.asm" @@ -92763,7 +63921,7 @@ asm_7befa: ; 7befa (1e:7efa) scf ret -Func_7bf15: ; 7bf15 (1e:7f15) +ShakeElevator: ; 7bf15 (1e:7f15) ld de, $ffe0 call Func_7bf64 ld de, $240 @@ -92774,6 +63932,7 @@ Func_7bf15: ; 7bf15 (1e:7f15) ld a, [$ffaf] ld d, a ld e, $1 + ; number of times to play collision sfx ld b, $64 .asm_7bf30 ld a, e diff --git a/scripts/agatha.asm b/scripts/agatha.asm new file mode 100755 index 00000000..749f84e7 --- /dev/null +++ b/scripts/agatha.asm @@ -0,0 +1,157 @@ +AgathaScript: ; 7642d (1d:642d) + call AgathaScript_76443 + call EnableAutoTextBoxDrawing + ld hl, AgathaTrainerHeaders + ld de, AgathaScriptPointers + ld a, [W_AGATHACURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_AGATHACURSCRIPT], a + ret + +AgathaScript_76443: ; 76443 (1d:6443) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld a, [$d865] + bit 1, a + jr z, .asm_76457 + ld a, $e + jp AgathaScript_76459 +.asm_76457 + ld a, $3b + +AgathaScript_76459: ; 76459 (1d:6459) + ld [$d09f], a + ld bc, $2 + ld a, $17 + jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + +AgathaScript_76464: ; 76464 (1d:6464) + xor a + ld [W_AGATHACURSCRIPT], a + ret + +AgathaScriptPointers: ; 76469 (1d:6469) + dw AgathaScript0 + dw Func_324c + dw AgathaScript2 + dw AgathaScript3 + dw AgathaScript4 + +AgathaScript4: ; 76473 (1d:6473) + ret +asm_76474: ; 76474 (1d:6474) + ld hl, $ccd3 + ld a, $40 + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld a, $6 + ld [$cd38], a + call Func_3486 + ld a, $3 + ld [W_AGATHACURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +AgathaScript0: ; 76490 (1d:6490) + ld hl, CoordsData_764d1 + call ArePlayerCoordsInArray + jp nc, CheckFightingMapTrainers + xor a + ld [H_NEWLYPRESSEDBUTTONS], a + ld [H_CURRENTPRESSEDBUTTONS], a + ld [$ccd3], a + ld [$cd38], a + ld a, [wWhichTrade] ; $cd3d + cp $3 + jr c, .asm_764b4 + ld hl, $d865 + bit 6, [hl] + set 6, [hl] + jr z, asm_76474 +.asm_764b4 + ld a, $2 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld a, $40 + ld [$ccd3], a + ld a, $1 + ld [$cd38], a + call Func_3486 + ld a, $3 + ld [W_AGATHACURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +CoordsData_764d1: ; 764d1 (1d:64d1) + db $0A,$04 + db $0A,$05 + db $0B,$04 + db $0B,$05 + db $FF + +AgathaScript3: ; 764da (1d:64da) + ld a, [$cd38] + and a + ret nz + call Delay3 + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_AGATHACURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +AgathaScript2: ; 764ed (1d:64ed) + call EndTrainerBattle + ld a, [W_ISINBATTLE] ; $d057 + cp $ff + jp z, AgathaScript_76464 + ld a, $1 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld a, $1 + ld [W_GARYCURSCRIPT], a + ret + +AgathaTextPointers: ; 76505 (1d:6505) + dw AgathaText1 + dw AgathaText2 + +AgathaTrainerHeaders: ; 76509 (1d:6509) +AgathaTrainerHeader0: ; 76509 (1d:6509) + db $1 ; flag's bit + db ($0 << 4) ; trainer's view range + dw $d865 ; flag's byte + dw AgathaBeforeBattleText ; 0x6520 TextBeforeBattle + dw AgathaAfterBattleText ; 0x652a TextAfterBattle + dw AgathaEndBattleText ; 0x6525 TextEndBattle + dw AgathaEndBattleText ; 0x6525 TextEndBattle + + db $ff + +AgathaText1: ; 76516 (1d:6516) + db $08 ; asm + ld hl, AgathaTrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +AgathaBeforeBattleText: ; 76520 (1d:6520) + TX_FAR _AgathaBeforeBattleText + db "@" + +AgathaEndBattleText: ; 76525 (1d:6525) + TX_FAR _AgathaEndBattleText + db "@" + +AgathaAfterBattleText: ; 7652a (1d:652a) + TX_FAR _AgathaAfterBattleText + db "@" + +AgathaText2: ; 7652f (1d:652f) + TX_FAR _AgathaText2 + db "@" diff --git a/scripts/battlecenterm.asm b/scripts/battlecenterm.asm new file mode 100755 index 00000000..846b78fb --- /dev/null +++ b/scripts/battlecenterm.asm @@ -0,0 +1,38 @@ +BattleCenterMScript: ; 4fd10 (13:7d10) + call EnableAutoTextBoxDrawing + ld a, [$ffaa] + cp $2 + ld a, $8 + jr z, .asm_4fd1d ; 0x4fd19 $2 + ld a, $c +.asm_4fd1d + ld [$ff8d], a + ld a, $1 + ld [$ff8c], a + call Func_34ae + ld hl, $d72d + bit 0, [hl] + set 0, [hl] + ret nz + ld hl, $c214 + ld a, $8 + ld [hli], a + ld a, $a + ld [hl], a + ld a, $8 + ld [$c119], a + ld a, [$ffaa] + cp $2 + ret z + ld a, $7 + ld [$c215], a + ld a, $c + ld [$c119], a + ret + +BattleCenterMTextPointers: ; 4fd4c (13:7d4c) + dw BattleCenterMText1 + +BattleCenterMText1: ; 4fd4e (13:7d4e) + TX_FAR _BattleCenterMText1 + db "@" diff --git a/scripts/bikeshop.asm b/scripts/bikeshop.asm new file mode 100755 index 00000000..a4e06601 --- /dev/null +++ b/scripts/bikeshop.asm @@ -0,0 +1,153 @@ +BikeShopScript: ; 1d73c (7:573c) + jp EnableAutoTextBoxDrawing + +BikeShopTextPointers: ; 1d73f (7:573f) + dw BikeShopText1 + dw BikeShopText2 + dw BikeShopText3 + +BikeShopText1: ; 1d745 (7:5745) + db $08 ; asm + ld a, [$d75f] + bit 0, a + jr z, .asm_260d4 ; 0x1d74b + ld hl, BikeShopText_1d82f + call PrintText + jp .Done +.asm_260d4 ; 0x1d756 + ld b, BIKE_VOUCHER + call IsItemInBag + jr z, .asm_41190 ; 0x1d75b + ld hl, BikeShopText_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, BikeShopText_1d824 + call PrintText + jr .Done +.BagFull + ld hl, BikeShopText_1d834 + call PrintText + jr .Done +.asm_41190 ; 0x1d78c + ld hl, BikeShopText_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, BikeShopText_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, BikeShopText_1d81a + call PrintText +.asm_b7579 ; 0x1d7ef + ld hl, BikeShopText_1d82a + call PrintText +.Done + jp TextScriptEnd + +BikeShopMenuText: ; 1d7f8 (7:57f8) + db "BICYCLE" + next "CANCEL@" + +BikeShopMenuPrice: ; 1d807 (7:5807) + db "¥1000000@" + +BikeShopText_1d810: ; 1d810 (7:5810) + TX_FAR _BikeShopText_1d810 + db "@" + +BikeShopText_1d815: ; 1d815 (7:5815) + TX_FAR _BikeShopText_1d815 + db "@" + +BikeShopText_1d81a: ; 1d81a (7:581a) + TX_FAR _BikeShopText_1d81a + db "@" + +BikeShopText_1d81f: ; 1d81f (7:581f) + TX_FAR _BikeShopText_1d81f + db "@" + +BikeShopText_1d824: ; 1d824 (7:5824) + TX_FAR _BikeShopText_1d824 ; 0x98eb2 + db $11, "@" + +BikeShopText_1d82a: ; 1d82a (7:582a) + TX_FAR _BikeShopText_1d82a + db "@" + +BikeShopText_1d82f: ; 1d82f (7:582f) + TX_FAR _BikeShopText_1d82f + db "@" + +BikeShopText_1d834: ; 1d834 (7:5834) + TX_FAR _BikeShopText_1d834 + db "@" + +BikeShopText2: ; 1d839 (7:5839) + db $08 ; asm + ld hl, BikeShopText_1d843 + call PrintText + jp TextScriptEnd + +BikeShopText_1d843: ; 1d843 (7:5843) + TX_FAR _BikeShopText_1d843 + db "@" + +BikeShopText3: ; 1d848 (7:5848) + db $08 ; asm + ld a, [$d75f] + bit 0, a + ld hl, BikeShopText_1d861 + jr nz, .asm_34d2d ; 0x1d851 + ld hl, BikeShopText_1d85c +.asm_34d2d ; 0x1d856 + call PrintText + jp TextScriptEnd + +BikeShopText_1d85c: ; 1d85c (7:585c) + TX_FAR _BikeShopText_1d85c + db "@" + +BikeShopText_1d861: ; 1d861 (7:5861) + TX_FAR _BikeShopText_1d861 + db "@" diff --git a/scripts/billshouse.asm b/scripts/billshouse.asm new file mode 100755 index 00000000..6d397de1 --- /dev/null +++ b/scripts/billshouse.asm @@ -0,0 +1,208 @@ +BillsHouseScript: ; 1e76a (7:676a) + call EnableAutoTextBoxDrawing + ld a, [W_BILLSHOUSECURSCRIPT] + ld hl, BillsHouseScriptPointers + jp CallFunctionInTable + +BillsHouseScriptPointers: ; 1e776 (7:6776) + dw BillsHouseScript0 + dw BillsHouseScript1 + dw BillsHouseScript2 + dw BillsHouseScript3 + dw BillsHouseScript4 + dw BillsHouseScript5 + +BillsHouseScript0: ; 1e782 (7:6782) + ret + +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 + +MovementData_1e79c: ; 1e79c (7:679c) + db $40,$40,$40,$FF + +MovementData_1e7a0: ; 1e7a0 (7:67a0) + db $C0,$40,$40,$80,$40,$FF + +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 + +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 + +MovementData_1e807: ; 1e807 (7:6807) + db $00,$C0,$C0,$C0,$00,$FF + +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 + +BillsHouseScript5: ; 1e827 (7:6827) + ld a, $4 + ld [$ff8c], a + call DisplayTextID + ld a, $0 + ld [W_BILLSHOUSECURSCRIPT], a + ret + +BillsHouseTextPointers: ; 1e834 (7:6834) + dw BillsHouseText1 + dw BillsHouseText2 + dw BillsHouseText3 + dw BillsHouseText4 + +BillsHouseText4: ; 1e83c (7:683c) + db $fd + +BillsHouseText1: ; 1e83d (7:683d) + db $8 + ld hl, BillsHouseText_1e865 + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + jr nz, asm_6b196 ; 0x1e84b $d +asm_4d03c: ; 1e84d (7:684d) + ld hl, BillsHouseText_1e86a + call PrintText + ld a, $1 + ld [W_BILLSHOUSECURSCRIPT], a + jr asm_fd4e2 ; 0x1e858 $8 +asm_6b196: ; 1e85a (7:685a) + ld hl, BillsHouseText_1e86f + call PrintText + jr asm_4d03c ; 0x1e860 $eb +asm_fd4e2 ; 0x1e862 + jp TextScriptEnd + +BillsHouseText_1e865: ; 1e865 (7:6865) + TX_FAR _BillsHouseText_1e865 ; 0x8d267 + db "@" + +BillsHouseText_1e86a: ; 1e86a (7:686a) + TX_FAR _BillsHouseText_1e86a ; 0x8d345 + db "@" + +BillsHouseText_1e86f: ; 1e86f (7:686f) + TX_FAR _BillsHouseText_1e86f ; 0x8d391 + 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, BillsHouseText_1e8cb + call PrintText + jr .asm_bd408 ; 0x1e8af +.BagFull + ld hl, SSTicketNoRoomText + call PrintText +.asm_bd408 ; 0x1e8b7 + jp TextScriptEnd + +BillThankYouText: ; 1e8ba (7:68ba) + TX_FAR _BillThankYouText + db "@" + +SSTicketReceivedText: ; 1e8bf (7:68bf) + TX_FAR _SSTicketReceivedText + db $11, $6, "@" + +SSTicketNoRoomText: ; 1e8c6 (7:68c6) + TX_FAR _SSTicketNoRoomText + db "@" + +BillsHouseText_1e8cb: ; 1e8cb (7:68cb) + TX_FAR _BillsHouseText_1e8cb + db "@" + +BillsHouseText3: ; 1e8d0 (7:68d0) + db $08 ; asm + ld hl, BillsHouseText_1e8da + call PrintText + jp TextScriptEnd + +BillsHouseText_1e8da: ; 1e8da (7:68da) + TX_FAR _BillsHouseText_1e8da + db "@" diff --git a/scripts/blueshouse.asm b/scripts/blueshouse.asm new file mode 100755 index 00000000..1699160f --- /dev/null +++ b/scripts/blueshouse.asm @@ -0,0 +1,90 @@ +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 + 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 + 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 "@" diff --git a/scripts/bruno.asm b/scripts/bruno.asm new file mode 100755 index 00000000..60d579b2 --- /dev/null +++ b/scripts/bruno.asm @@ -0,0 +1,154 @@ +BrunoScript: ; 762d6 (1d:62d6) + call BrunoScript_762ec + call EnableAutoTextBoxDrawing + ld hl, BrunoTrainerHeaders + ld de, BrunoScriptPointers + ld a, [W_BRUNOCURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_BRUNOCURSCRIPT], a + ret + +BrunoScript_762ec: ; 762ec (1d:62ec) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld a, [$d864] + bit 1, a + jr z, .asm_76300 + ld a, $5 + jp BrunoScript_76302 +.asm_76300 + ld a, $24 + +BrunoScript_76302: ; 76302 (1d:6302) + ld [$d09f], a + ld bc, $2 + ld a, $17 + jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + +BrunoScript_7630d: ; 7630d (1d:630d) + xor a + ld [W_BRUNOCURSCRIPT], a + ret + +BrunoScriptPointers: ; 76312 (1d:6312) + dw BrunoScript0 + dw Func_324c + dw BrunoScript2 + dw BrunoScript3 + dw BrunoScript4 + +BrunoScript4: ; 7631c (1d:631c) + ret +asm_7631d: ; 7631d (1d:631d) + ld hl, $ccd3 + ld a, $40 + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld a, $6 + ld [$cd38], a + call Func_3486 + ld a, $3 + ld [W_BRUNOCURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +BrunoScript0: ; 76339 (1d:6339) + ld hl, CoordsData_7637a + call ArePlayerCoordsInArray + jp nc, CheckFightingMapTrainers + xor a + ld [H_NEWLYPRESSEDBUTTONS], a + ld [H_CURRENTPRESSEDBUTTONS], a + ld [$ccd3], a + ld [$cd38], a + ld a, [wWhichTrade] ; $cd3d + cp $3 + jr c, .asm_7635d + ld hl, $d864 + bit 6, [hl] + set 6, [hl] + jr z, asm_7631d +.asm_7635d + ld a, $2 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld a, $40 + ld [$ccd3], a + ld a, $1 + ld [$cd38], a + call Func_3486 + ld a, $3 + ld [W_BRUNOCURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +CoordsData_7637a: ; 7637a (1d:637a) + db $0A,$04 + db $0A,$05 + db $0B,$04 + db $0B,$05 + db $FF + +BrunoScript3: ; 76383 (1d:6383) + ld a, [$cd38] + and a + ret nz + call Delay3 + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_BRUNOCURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +BrunoScript2: ; 76396 (1d:6396) + call EndTrainerBattle + ld a, [W_ISINBATTLE] ; $d057 + cp $ff + jp z, BrunoScript_7630d + ld a, $1 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + jp DisplayTextID + +BrunoTextPointers: ; 763a8 (1d:63a8) + dw BrunoText1 + dw BrunoText2 + +BrunoTrainerHeaders: ; 763ac (1d:63ac) +BrunoTrainerHeader0: ; 763ac (1d:63ac) + db $1 ; flag's bit + db ($0 << 4) ; trainer's view range + dw $d864 ; flag's byte + dw BrunoBeforeBattleText ; 0x63c3 TextBeforeBattle + dw BrunoAfterBattleText ; 0x63cd TextAfterBattle + dw BrunoEndBattleText ; 0x63c8 TextEndBattle + dw BrunoEndBattleText ; 0x63c8 TextEndBattle + + db $ff + +BrunoText1: ; 763b9 (1d:63b9) + db $08 ; asm + ld hl, BrunoTrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +BrunoBeforeBattleText: ; 763c3 (1d:63c3) + TX_FAR _BrunoBeforeBattleText + db "@" + +BrunoEndBattleText: ; 763c8 (1d:63c8) + TX_FAR _BrunoEndBattleText + db "@" + +BrunoAfterBattleText: ; 763cd (1d:63cd) + TX_FAR _BrunoAfterBattleText + db "@" + +BrunoText2: ; 763d2 (1d:63d2) + TX_FAR _UnnamedText_763d2 + db "@" diff --git a/scripts/celadoncity.asm b/scripts/celadoncity.asm new file mode 100755 index 00000000..2f2a3128 --- /dev/null +++ b/scripts/celadoncity.asm @@ -0,0 +1,136 @@ +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 "@" diff --git a/scripts/celadondiner.asm b/scripts/celadondiner.asm new file mode 100755 index 00000000..06cce8fd --- /dev/null +++ b/scripts/celadondiner.asm @@ -0,0 +1,67 @@ +CeladonDinerScript: ; 49151 (12:5151) + call EnableAutoTextBoxDrawing + ret + +CeladonDinerTextPointers: ; 49155 (12:5155) + dw CeladonDinerText1 + dw CeladonDinerText2 + dw CeladonDinerText3 + dw CeladonDinerText4 + dw CeladonDinerText5 + +CeladonDinerText1: ; 4915f (12:515f) + TX_FAR _CeladonDinerText1 + db "@" + +CeladonDinerText2: ; 49164 (12:5164) + TX_FAR _CeladonDinerText2 + db "@" + +CeladonDinerText3: ; 49169 (12:5169) + TX_FAR _CeladonDinerText3 + db "@" + +CeladonDinerText4: ; 4916e (12:516e) + TX_FAR _CeladonDinerText4 + db "@" + +CeladonDinerText5: ; 49173 (12:5173) + db $08 ; asm + ld a, [$d783] + bit 0, a + jr nz, .asm_eb14d ; 0x49179 + ld hl, CeladonDinerText_491a7 + call PrintText + ld bc, (COIN_CASE << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, $d783 + set 0, [hl] + ld hl, ReceivedCoinCaseText + call PrintText + jr .asm_68b61 ; 0x49194 +.BagFull + ld hl, CoinCaseNoRoomText + call PrintText + jr .asm_68b61 ; 0x4919c +.asm_eb14d ; 0x4919e + ld hl, CeladonDinerText_491b7 + call PrintText +.asm_68b61 ; 0x491a4 + jp TextScriptEnd + +CeladonDinerText_491a7: ; 491a7 (12:51a7) + TX_FAR _CeladonDinerText_491a7 + db "@" + +ReceivedCoinCaseText: ; 491ac (12:51ac) + TX_FAR _ReceivedCoinCaseText + db $11, "@" + +CoinCaseNoRoomText: ; 491b2 (12:51b2) + TX_FAR _CoinCaseNoRoomText + db "@" + +CeladonDinerText_491b7: ; 491b7 (12:51b7) + TX_FAR _CeladonDinerText_491b7 + db "@" diff --git a/scripts/celadongamecorner.asm b/scripts/celadongamecorner.asm new file mode 100755 index 00000000..f4e23d6e --- /dev/null +++ b/scripts/celadongamecorner.asm @@ -0,0 +1,536 @@ +CeladonGameCornerScript: ; 48bbd (12:4bbd) + call CeladonGameCornerScript_48bcf + call CeladonGameCornerScript_48bec + call EnableAutoTextBoxDrawing + ld hl, CeladonGameCornerScriptPointers + ld a, [W_CELADONGAMECORNERCURSCRIPT] + jp CallFunctionInTable + +CeladonGameCornerScript_48bcf: ; 48bcf (12:4bcf) + ld hl, $d126 + bit 6, [hl] + res 6, [hl] + ret z + call GenRandom + ld a, [$ffd3] + cp $7 + jr nc, .asm_48be2 + ld a, $8 +.asm_48be2 + srl a + srl a + srl a + ld [$cd05], a + ret + +CeladonGameCornerScript_48bec: ; 48bec (12:4bec) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld a, [$d77e] + bit 1, a + ret nz + ld a, $2a + ld [$d09f], a + ld bc, $0208 + ld a, $17 + jp Predef + +CeladonGameCornerScript_48c07: ; 48c07 (12:4c07) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_CELADONGAMECORNERCURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +CeladonGameCornerScriptPointers: ; 48c12 (12:4c12) + dw CeladonGameCornerScript0 + dw CeladonGameCornerScript1 + dw CeladonGameCornerScript2 + +CeladonGameCornerScript0: ; 48c18 (12:4c18) + ret + +CeladonGameCornerScript1: ; 48c19 (12:4c19) + ld a, [W_ISINBATTLE] + cp $ff + jp z, CeladonGameCornerScript_48c07 + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld a, $d + ld [H_SPRITEHEIGHT], a + call DisplayTextID + ld a, $b + ld [H_SPRITEHEIGHT], a + call SetSpriteMovementBytesToFF + ld de, MovementData_48c5a + ld a, [W_YCOORD] + cp $6 + jr nz, .asm_48c43 + ld de, MovementData_48c63 + jr .asm_48c4d +.asm_48c43 + ld a, [W_XCOORD] + cp $8 + jr nz, .asm_48c4d + ld de, MovementData_48c63 +.asm_48c4d + ld a, $b + ld [H_DOWNARROWBLINKCNT2], a + call MoveSprite + ld a, $2 + ld [W_CELADONGAMECORNERCURSCRIPT], a + ret + +MovementData_48c5a: ; 48c5a (12:4c5a) + db $00,$C0,$C0,$40,$C0,$C0,$C0,$C0,$FF + +MovementData_48c63: ; 48c63 (12:4c63) + db $C0,$C0,$C0,$C0,$C0,$FF + +CeladonGameCornerScript2: ; 48c69 (12:4c69) + ld a, [$d730] + bit 0, a + ret nz + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $46 + ld [$cc4d], a + ld a, $11 + call Predef + ld hl, $d126 + set 5, [hl] + set 6, [hl] + ld a, $0 + ld [W_CELADONGAMECORNERCURSCRIPT], a + ret + +CeladonGameCornerTextPointers: ; 48c8a (12:4c8a) + dw CeladonGameCornerText1 + dw CeladonGameCornerText2 + dw CeladonGameCornerText3 + dw CeladonGameCornerText4 + dw CeladonGameCornerText5 + dw CeladonGameCornerText6 + dw CeladonGameCornerText7 + dw CeladonGameCornerText8 + dw CeladonGameCornerText9 + dw CeladonGameCornerText10 + dw CeladonGameCornerText11 + dw CeladonGameCornerText12 + dw CeladonGameCornerText13 + +CeladonGameCornerText1: ; 48ca4 (12:4ca4) + TX_FAR _CeladonGameCornerText1 + db "@" + +CeladonGameCornerText2: ; 48ca9 (12:4ca9) + db $08 ; asm + call CeladonGameCornerScript_48f1e + ld hl, CeladonGameCornerText_48d22 + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + jr nz, .asm_c650b ; 0x48cba + ld b,COIN_CASE + call IsItemInBag + jr z, .asm_ed086 ; 0x48cc1 + call Has9990Coins + jr nc, .asm_31338 ; 0x48cc6 + xor a + ldh [$9f], a + ldh [$a1], a + ld a, $10 + ldh [$a0], a + call HasEnoughMoney + jr nc, .asm_b6ef0 ; 0x48cd4 + ld hl, CeladonGameCornerText_48d31 ; $4d31 + jr .asm_e2afd ; 0x48cd9 +.asm_b6ef0 ; 0x48cdb + xor a + ldh [$9f], a + ldh [$a1], a + ld a, $10 + ldh [$a0], a + ld hl, $ffa1 + ld de, $d349 + ld c, $3 + ld a, $c + call Predef + xor a + ldh [$9f], a + ldh [$a0], a + ld a, $50 + ldh [$a1], a + ld de, $d5a5 + ld hl, $ffa1 + ld c, $2 + ld a, $b + call Predef + call CeladonGameCornerScript_48f1e + ld hl, CeladonGameCornerText_48d27 + jr .asm_e2afd ; 0x48d0d +.asm_c650b ; 0x48d0f + ld hl, CeladonGameCornerText_48d2c + jr .asm_e2afd ; 0x48d12 +.asm_31338 ; 0x48d14 + ld hl, CeladonGameCornerText_48d36 + jr .asm_e2afd ; 0x48d17 +.asm_ed086 ; 0x48d19 + ld hl, CeladonGameCornerText_48d3b +.asm_e2afd ; 0x48d1c + call PrintText + jp TextScriptEnd + +CeladonGameCornerText_48d22: ; 48d22 (12:4d22) + TX_FAR _CeladonGameCornerText_48d22 + db "@" + +CeladonGameCornerText_48d27: ; 48d27 (12:4d27) + TX_FAR _CeladonGameCornerText_48d27 + db "@" + +CeladonGameCornerText_48d2c: ; 48d2c (12:4d2c) + TX_FAR _CeladonGameCornerText_48d2c + db "@" + +CeladonGameCornerText_48d31: ; 48d31 (12:4d31) + TX_FAR _CeladonGameCornerText_48d31 + db "@" + +CeladonGameCornerText_48d36: ; 48d36 (12:4d36) + TX_FAR _CeladonGameCornerText_48d36 + db "@" + +CeladonGameCornerText_48d3b: ; 48d3b (12:4d3b) + TX_FAR _CeladonGameCornerText_48d3b + db "@" + +CeladonGameCornerText3: ; 48d40 (12:4d40) + TX_FAR _CeladonGameCornerText3 + db "@" + +CeladonGameCornerText4: ; 48d45 (12:4d45) + TX_FAR _CeladonGameCornerText4 + db "@" + +CeladonGameCornerText5: ; 48d4a (12:4d4a) + db $08 ; asm + ld a, [$d77e] + bit 2, a + jr nz, .asm_d0957 ; 0x48d50 + ld hl, CeladonGameCornerText_48d9c + call PrintText + ld b, COIN_CASE + call IsItemInBag + jr z, .asm_5aef9 ; 0x48d5d + call Has9990Coins + jr nc, .asm_98546 ; 0x48d62 + xor a + ldh [$9f], a + ldh [$a0], a + ld a, $10 + ldh [$a1], a + ld de, $d5a5 + ld hl, $ffa1 + ld c, $2 + ld a, $b + call Predef + ld hl, $d77e + set 2, [hl] + ld a, $1 + ld [$cc3c], a + ld hl, Received10CoinsText + jr .asm_c7d1a ; 0x48d87 +.asm_d0957 ; 0x48d89 + ld hl, CeladonGameCornerText_48dac + jr .asm_c7d1a ; 0x48d8c +.asm_98546 ; 0x48d8e + ld hl, CeladonGameCornerText_48da7 + jr .asm_c7d1a ; 0x48d91 +.asm_5aef9 ; 0x48d93 + ld hl, CeladonGameCornerText_48f19 +.asm_c7d1a ; 0x48d96 + call PrintText + jp TextScriptEnd + +CeladonGameCornerText_48d9c: ; 48d9c (12:4d9c) + TX_FAR _CeladonGameCornerText_48d9c + db "@" + +Received10CoinsText: ; 48da1 (12:4da1) + TX_FAR _Received10CoinsText + db $0B, "@" + +CeladonGameCornerText_48da7: ; 48da7 (12:4da7) + TX_FAR _CeladonGameCornerText_48da7 + db "@" + +CeladonGameCornerText_48dac: ; 48dac (12:4dac) + TX_FAR _CeladonGameCornerText_48dac + db "@" + +CeladonGameCornerText6: ; 48db1 (12:4db1) + TX_FAR _CeladonGameCornerText6 + db "@" + +CeladonGameCornerText7: ; 48db6 (12:4db6) + db $08 ; asm + ld a, [$d77c] + bit 1, a + ld hl, CeladonGameCornerText_48dca ; $4dca + jr z, .asm_be3fd ; 0x48dbf + ld hl, CeladonGameCornerText_48dcf ; $4dcf +.asm_be3fd ; 0x48dc4 + call PrintText + jp TextScriptEnd + +CeladonGameCornerText_48dca: ; 48dca (12:4dca) + TX_FAR _CeladonGameCornerText_48dca + db "@" + +CeladonGameCornerText_48dcf: ; 48dcf (12:4dcf) + TX_FAR _CeladonGameCornerText_48dcf + db "@" + +CeladonGameCornerText8: ; 48dd4 (12:4dd4) + TX_FAR _CeladonGameCornerText8 + db "@" + +CeladonGameCornerText9: ; 48dd9 (12:4dd9) + db $08 ; asm + ld a, [$d77e] + bit 4, a + jr nz, .asm_ed8bc ; 0x48ddf + ld hl, CeladonGameCornerText_48e26 + call PrintText + ld b, COIN_CASE + call IsItemInBag + jr z, .asm_df794 ; 0x48dec + call Has9990Coins + jr nc, .asm_f17c3 ; 0x48df1 + xor a + ldh [$9f], a + ldh [$a0], a + ld a, $20 + ldh [$a1], a + ld de, $d5a5 + ld hl, $ffa1 + ld c, $2 + ld a, $b + call Predef + ld hl, $d77e + set 4, [hl] + ld hl, Received20CoinsText + jr .asm_0ddc2 ; 0x48e11 +.asm_ed8bc ; 0x48e13 + ld hl, CeladonGameCornerText_48e36 + jr .asm_0ddc2 ; 0x48e16 +.asm_f17c3 ; 0x48e18 + ld hl, CeladonGameCornerText_48e31 + jr .asm_0ddc2 ; 0x48e1b +.asm_df794 ; 0x48e1d + ld hl, CeladonGameCornerText_48f19 +.asm_0ddc2 ; 0x48e20 + call PrintText + jp TextScriptEnd + +CeladonGameCornerText_48e26: ; 48e26 (12:4e26) + TX_FAR _CeladonGameCornerText_48e26 + db "@" + +Received20CoinsText: ; 48e2b (12:4e2b) + TX_FAR _Received20CoinsText + db $0B, "@" + +CeladonGameCornerText_48e31: ; 48e31 (12:4e31) + TX_FAR _CeladonGameCornerText_48e31 + db "@" + +CeladonGameCornerText_48e36: ; 48e36 (12:4e36) + TX_FAR _CeladonGameCornerText_48e36 + db "@" + +CeladonGameCornerText10: ; 48e3b (12:4e3b) + db $08 ; asm + ld a, [$d77e] + bit 3, a + jr nz, .asm_ff080 ; 0x48e41 + ld hl, CeladonGameCornerText_48e88 ; $4e88 + call PrintText + ld b,COIN_CASE + call IsItemInBag + jr z, .asm_4fb0c ; 0x48e4e + call Has9990Coins + jr z, .asm_9505a ; 0x48e53 + xor a + ldh [$9f], a + ldh [$a0], a + ld a, $20 + ldh [$a1], a + ld de, $d5a5 + ld hl, $ffa1 + ld c, $2 + ld a, $b + call Predef + ld hl, $d77e + set 3, [hl] + ld hl, CeladonGameCornerText_48e8d + jr .asm_78d65 ; 0x48e73 +.asm_ff080 ; 0x48e75 + ld hl, CeladonGameCornerText_48e98 + jr .asm_78d65 ; 0x48e78 +.asm_9505a ; 0x48e7a + ld hl, CeladonGameCornerText_48e93 + jr .asm_78d65 ; 0x48e7d +.asm_4fb0c ; 0x48e7f + ld hl, CeladonGameCornerText_48f19 +.asm_78d65 ; 0x48e82 + call PrintText + jp TextScriptEnd + +CeladonGameCornerText_48e88: ; 48e88 (12:4e88) + TX_FAR _CeladonGameCornerText_48e88 + db "@" + +CeladonGameCornerText_48e8d: ; 48e8d (12:4e8d) + TX_FAR _CeladonGameCornerText_48e8d ; 0x9dceb + db $0B, "@" + +CeladonGameCornerText_48e93: ; 48e93 (12:4e93) + TX_FAR _CeladonGameCornerText_48e93 + db "@" + +CeladonGameCornerText_48e98: ; 48e98 (12:4e98) + TX_FAR _CeladonGameCornerText_48e98 + db "@" + +CeladonGameCornerText11: ; 48e9d (12:4e9d) + db $08 ; asm + ld hl, CeladonGameCornerText_48ece + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, CeladonGameCornerText_48ed3 + ld de, CeladonGameCornerText_48ed3 + call PreBattleSaveRegisters + ldh a, [$8c] + ld [$cf13], a + call EngageMapTrainer + call InitBattleEnemyParameters + xor a + ldh [$b4], a + ldh [$b3], a + ldh [$b2], a + ld a, $1 + ld [W_CELADONGAMECORNERCURSCRIPT], a + jp TextScriptEnd + +CeladonGameCornerText_48ece: ; 48ece (12:4ece) + TX_FAR _CeladonGameCornerText_48ece + db "@" + +CeladonGameCornerText_48ed3: ; 48ed3 (12:4ed3) + TX_FAR _CeladonGameCornerText_48ed3 + db "@" + +CeladonGameCornerText13: ; 48ed8 (12:4ed8) + TX_FAR _CeladonGameCornerText_48ed8 + db "@" + +CeladonGameCornerText12: ; 48edd (12:4edd) + db $08 ; asm + ld a, $1 + ld [$cc3c], a + ld hl, CeladonGameCornerText_48f09 + call PrintText + call WaitForSoundToFinish + ld a, (SFX_02_57 - SFX_Headers_02) / 3 + call PlaySound + call WaitForSoundToFinish + ld hl, $d77e + set 1, [hl] + ld a, $43 + ld [$d09f], a + ld bc, $0208 + ld a, $17 + call Predef + jp TextScriptEnd + +CeladonGameCornerText_48f09: ; 48f09 (12:4f09) + TX_FAR _CeladonGameCornerText_48f09 ; 0x9ddb0 + db $8 + ld a, (SFX_02_49 - SFX_Headers_02) / 3 + call PlaySound + call WaitForSoundToFinish + jp TextScriptEnd + +CeladonGameCornerText_48f19: ; 48f19 (12:4f19) + TX_FAR _CeladonGameCornerText_48f19 + db "@" + +CeladonGameCornerScript_48f1e: ; 48f1e (12:4f1e) + ld hl, $d730 + set 6, [hl] + FuncCoord 11, 0 ; $c3ab + ld hl, Coord + ld b, $5 + ld c, $7 + call TextBoxBorder + call UpdateSprites + FuncCoord 12, 1 ; $c3c0 + ld hl, Coord + ld b, $4 + ld c, $7 + call ClearScreenArea + FuncCoord 12, 2 ; $c3d4 + ld hl, Coord + ld de, GameCornerMoneyText + call PlaceString + FuncCoord 12, 3 ; $c3e8 + ld hl, Coord + ld de, GameCornerBlankText1 + call PlaceString + FuncCoord 12, 3 ; $c3e8 + ld hl, Coord + ld de, $d347 + ld c, $a3 + call PrintBCDNumber + FuncCoord 12, 4 ; $c3fc + ld hl, Coord + ld de, GameCornerCoinText + call PlaceString + FuncCoord 12, 5 ; $c410 + ld hl, Coord + ld de, GameCornerBlankText2 + call PlaceString + FuncCoord 15, 5 ; $c413 + ld hl, Coord + ld de, $d5a4 + ld c, $82 + call PrintBCDNumber + ld hl, $d730 + res 6, [hl] + ret + +GameCornerMoneyText: ; 48f7a (12:4f7a) + db "MONEY@" + +GameCornerCoinText: ; 48f80 (12:4f80) + db "COIN@" + +GameCornerBlankText1: ; 48f85 (12:4f85) + db " @" + +GameCornerBlankText2: ; 48f8d (12:4f8d) + db " @" + +Has9990Coins: ; 48f95 (12:4f95) + ld a, $99 + ld [$ffa0], a + ld a, $90 + ld [$ffa1], a + jp HasEnoughCoins diff --git a/scripts/celadongym.asm b/scripts/celadongym.asm new file mode 100755 index 00000000..67102fb7 --- /dev/null +++ b/scripts/celadongym.asm @@ -0,0 +1,343 @@ +CeladonGymScript: ; 4890a (12:490a) + ld hl, $d126 + bit 6, [hl] + res 6, [hl] + call nz, CeladonGymScript_48927 + call EnableAutoTextBoxDrawing + ld hl, CeladonGymTrainerHeaders + ld de, CeladonGymScriptPointers + ld a, [W_CELADONGYMCURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_CELADONGYMCURSCRIPT], a + ret + +CeladonGymScript_48927: ; 48927 (12:4927) + ld hl, Gym4CityName ; $4930 + ld de, Gym4LeaderName ; $493d + jp LoadGymLeaderAndCityName + +Gym4CityName: ; 48930 (12:4930) + db "CELADON CITY@" + +Gym4LeaderName: ; 4893d (12:493d) + db "ERIKA@" + +CeladonGymText_48943: ; 48943 (12:4943) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_CELADONGYMCURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +CeladonGymScriptPointers: ; 4894e (12:494e) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + dw CeladonGymScript3 + +CeladonGymScript3: ; 48956 (12:4956) + ld a, [W_ISINBATTLE] ; $d057 + cp $ff + jp z, CeladonGymText_48943 + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + +CeladonGymText_48963: ; 48963 (12:4963) + ld a, $9 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld hl, $d77c + set 1, [hl] + ld bc, (TM_21 << 8) | 1 + call GiveItem + jr nc, .BagFull + ld a, $a + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld hl, $d77c + set 0, [hl] + jr .asm_4898c +.BagFull + ld a, $b + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID +.asm_4898c + ld hl, W_OBTAINEDBADGES + set 3, [hl] + ld hl, $d72a + set 3, [hl] + + ; deactivate gym trainers + ld a, [$d77c] + or %11111100 + ld [$d77c], a + ld hl, $d77d + set 0, [hl] + + jp CeladonGymText_48943 + +CeladonGymTextPointers: ; 489a6 (12:49a6) + dw CeladonGymText1 + dw CeladonGymText2 + dw CeladonGymText3 + dw CeladonGymText4 + dw CeladonGymText5 + dw CeladonGymText6 + dw CeladonGymText7 + dw CeladonGymText8 + dw CeladonGymText9 + dw TM21Text + dw TM21NoRoomText + +CeladonGymTrainerHeaders: ; 489bc (12:49bc) +CeladonGymTrainerHeader0: ; 489bc (12:49bc) + db $2 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d77c ; flag's byte + dw CeladonGymBattleText2 ; 0x4a8b TextBeforeBattle + dw CeladonGymAfterBattleText2 ; 0x4a95 TextAfterBattle + dw CeladonGymEndBattleText2 ; 0x4a90 TextEndBattle + dw CeladonGymEndBattleText2 ; 0x4a90 TextEndBattle + +CeladonGymTrainerHeader2: ; 489c8 (12:49c8) + db $3 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d77c ; flag's byte + dw CeladonGymBattleText3 ; 0x4aa4 TextBeforeBattle + dw CeladonGymAfterBattleText3 ; 0x4aae TextAfterBattle + dw CeladonGymEndBattleText3 ; 0x4aa9 TextEndBattle + dw CeladonGymEndBattleText3 ; 0x4aa9 TextEndBattle + +CeladonGymTrainerHeader3: ; 489d4 (12:49d4) + db $4 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d77c ; flag's byte + dw CeladonGymBattleText4 ; 0x4abd TextBeforeBattle + dw CeladonGymAfterBattleText4 ; 0x4ac7 TextAfterBattle + dw CeladonGymEndBattleText4 ; 0x4ac2 TextEndBattle + dw CeladonGymEndBattleText4 ; 0x4ac2 TextEndBattle + +CeladonGymTrainerHeader4: ; 489e0 (12:49e0) + db $5 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d77c ; flag's byte + dw CeladonGymBattleText5 ; 0x4ad6 TextBeforeBattle + dw CeladonGymAfterBattleText5 ; 0x4ae0 TextAfterBattle + dw CeladonGymEndBattleText5 ; 0x4adb TextEndBattle + dw CeladonGymEndBattleText5 ; 0x4adb TextEndBattle + +CeladonGymTrainerHeader5: ; 489ec (12:49ec) + db $6 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d77c ; flag's byte + dw CeladonGymBattleText6 ; 0x4aef TextBeforeBattle + dw CeladonGymAfterBattleText6 ; 0x4af9 TextAfterBattle + dw CeladonGymEndBattleText6 ; 0x4af4 TextEndBattle + dw CeladonGymEndBattleText6 ; 0x4af4 TextEndBattle + +CeladonGymTrainerHeader6: ; 489f8 (12:49f8) + db $7 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d77c ; flag's byte + dw CeladonGymBattleText7 ; 0x4b08 TextBeforeBattle + dw CeladonGymAfterBattleText7 ; 0x4b12 TextAfterBattle + dw CeladonGymEndBattleText7 ; 0x4b0d TextEndBattle + dw CeladonGymEndBattleText7 ; 0x4b0d TextEndBattle + +CeladonGymTrainerHeader7: ; 48a04 (12:4a04) + db $8 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d77c ; flag's byte + dw CeladonGymBattleText8 ; 0x4b21 TextBeforeBattle + dw CeladonGymAfterBattleText8 ; 0x4b2b TextAfterBattle + dw CeladonGymEndBattleText8 ; 0x4b26 TextEndBattle + dw CeladonGymEndBattleText8 ; 0x4b26 TextEndBattle + + db $ff + +CeladonGymText1: ; 48a11 (12:4a11) + db $08 ; asm + ld a, [$d77c] + bit 1, a + jr z, .asm_16064 ; 0x48a17 + bit 0, a + jr nz, .asm_3b22c ; 0x48a1b + call z, CeladonGymText_48963 + call DisableWaitingAfterTextDisplay + jr .asm_96252 ; 0x48a23 +.asm_3b22c ; 0x48a25 + ld hl, CeladonGymText_48a68 + call PrintText + jr .asm_96252 ; 0x48a2b +.asm_16064 ; 0x48a2d + ld hl, CeladonGymText_48a5e + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, CeladonGymText_48a63 + ld de, CeladonGymText_48a63 + call PreBattleSaveRegisters + ldh a, [$8c] + ld [$cf13], a + call EngageMapTrainer + call InitBattleEnemyParameters + ld a, $4 + ld [$d05c], a + ld a, $3 + ld [W_CELADONGYMCURSCRIPT], a + ld [W_CURMAPSCRIPT], a +.asm_96252 ; 0x48a5b + jp TextScriptEnd + +CeladonGymText_48a5e: ; 48a5e (12:4a5e) + TX_FAR _CeladonGymText_48a5e + db "@" + +CeladonGymText_48a63: ; 48a63 (12:4a63) + TX_FAR _CeladonGymText_48a63 + db "@" + +CeladonGymText_48a68: ; 48a68 (12:4a68) + TX_FAR _CeladonGymText_48a68 + db "@" + +CeladonGymText9: ; 48a6d (12:4a6d) + TX_FAR _CeladonGymText9 + db "@" + +TM21Text: ; 48a72 (12:4a72) + TX_FAR _ReceivedTM21Text + db $0B + TX_FAR _TM21ExplanationText + db "@" + +TM21NoRoomText: ; 48a7c (12:4a7c) + TX_FAR _TM21NoRoomText + db "@" + +CeladonGymText2: ; 48a81 (12:4a81) + db $08 ; asm + ld hl, CeladonGymTrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +CeladonGymBattleText2: ; 48a8b (12:4a8b) + TX_FAR _CeladonGymBattleText2 + db "@" + +CeladonGymEndBattleText2: ; 48a90 (12:4a90) + TX_FAR _CeladonGymEndBattleText2 + db "@" + +CeladonGymAfterBattleText2: ; 48a95 (12:4a95) + TX_FAR _CeladonGymAfterBattleText2 + db "@" + +CeladonGymText3: ; 48a9a (12:4a9a) + db $08 ; asm + ld hl, CeladonGymTrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +CeladonGymBattleText3: ; 48aa4 (12:4aa4) + TX_FAR _CeladonGymBattleText3 + db "@" + +CeladonGymEndBattleText3: ; 48aa9 (12:4aa9) + TX_FAR _CeladonGymEndBattleText3 + db "@" + +CeladonGymAfterBattleText3: ; 48aae (12:4aae) + TX_FAR _CeladonGymAfterBattleText3 + db "@" + +CeladonGymText4: ; 48ab3 (12:4ab3) + db $08 ; asm + ld hl, CeladonGymTrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +CeladonGymBattleText4: ; 48abd (12:4abd) + TX_FAR _CeladonGymBattleText4 + db "@" + +CeladonGymEndBattleText4: ; 48ac2 (12:4ac2) + TX_FAR _CeladonGymEndBattleText4 + db "@" + +CeladonGymAfterBattleText4: ; 48ac7 (12:4ac7) + TX_FAR _CeladonGymAfterBattleText4 + db "@" + +CeladonGymText5: ; 48acc (12:4acc) + db $08 ; asm + ld hl, CeladonGymTrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +CeladonGymBattleText5: ; 48ad6 (12:4ad6) + TX_FAR _CeladonGymBattleText5 + db "@" + +CeladonGymEndBattleText5: ; 48adb (12:4adb) + TX_FAR _CeladonGymEndBattleText5 + db "@" + +CeladonGymAfterBattleText5: ; 48ae0 (12:4ae0) + TX_FAR _CeladonGymAfterBattleText5 + db "@" + +CeladonGymText6: ; 48ae5 (12:4ae5) + db $08 ; asm + ld hl, CeladonGymTrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +CeladonGymBattleText6: ; 48aef (12:4aef) + TX_FAR _CeladonGymBattleText6 + db "@" + +CeladonGymEndBattleText6: ; 48af4 (12:4af4) + TX_FAR _CeladonGymEndBattleText6 + db "@" + +CeladonGymAfterBattleText6: ; 48af9 (12:4af9) + TX_FAR _CeladonGymAfterBattleText6 + db "@" + +CeladonGymText7: ; 48afe (12:4afe) + db $08 ; asm + ld hl, CeladonGymTrainerHeader6 + call TalkToTrainer + jp TextScriptEnd + +CeladonGymBattleText7: ; 48b08 (12:4b08) + TX_FAR _CeladonGymBattleText7 + db "@" + +CeladonGymEndBattleText7: ; 48b0d (12:4b0d) + TX_FAR _CeladonGymEndBattleText7 + db "@" + +CeladonGymAfterBattleText7: ; 48b12 (12:4b12) + TX_FAR _CeladonGymAfterBattleText7 + db "@" + +CeladonGymText8: ; 48b17 (12:4b17) + db $08 ; asm + ld hl, CeladonGymTrainerHeader7 + call TalkToTrainer + jp TextScriptEnd + +CeladonGymBattleText8: ; 48b21 (12:4b21) + TX_FAR _CeladonGymBattleText8 + db "@" + +CeladonGymEndBattleText8: ; 48b26 (12:4b26) + TX_FAR _CeladonGymEndBattleText8 + db "@" + +CeladonGymAfterBattleText8: ; 48b2b (12:4b2b) + TX_FAR _CeladonGymAfterBattleText8 + db "@" diff --git a/scripts/celadonhotel.asm b/scripts/celadonhotel.asm new file mode 100755 index 00000000..a0f80ff6 --- /dev/null +++ b/scripts/celadonhotel.asm @@ -0,0 +1,19 @@ +CeladonHotelScript: ; 49269 (12:5269) + jp EnableAutoTextBoxDrawing + +CeladonHotelTextPointers: ; 4926c (12:526c) + dw CeladonHotelText1 + dw CeladonHotelText2 + dw CeladonHotelText3 + +CeladonHotelText1: ; 49272 (12:5272) + TX_FAR _CeladonHotelText1 + db "@" + +CeladonHotelText2: ; 49277 (12:5277) + TX_FAR _CeladonHotelText2 + db "@" + +CeladonHotelText3: ; 4927c (12:527c) + TX_FAR _CeladonHotelText3 + db "@" diff --git a/scripts/celadonhouse.asm b/scripts/celadonhouse.asm new file mode 100755 index 00000000..aa94f2fd --- /dev/null +++ b/scripts/celadonhouse.asm @@ -0,0 +1,20 @@ +CeladonHouseScript: ; 4920e (12:520e) + call EnableAutoTextBoxDrawing + ret + +CeladonHouseTextPointers: ; 49212 (12:5212) + dw CeladonHouseText1 + dw CeladonHouseText2 + dw CeladonHouseText3 + +CeladonHouseText1: ; 49218 (12:5218) + TX_FAR _CeladonHouseText1 + db "@" + +CeladonHouseText2: ; 4921d (12:521d) + TX_FAR _CeladonHouseText2 + db "@" + +CeladonHouseText3: ; 49222 (12:5222) + TX_FAR _CeladonHouseText3 + db "@" diff --git a/scripts/celadonmansion1.asm b/scripts/celadonmansion1.asm new file mode 100755 index 00000000..14832dbe --- /dev/null +++ b/scripts/celadonmansion1.asm @@ -0,0 +1,39 @@ +CeladonMansion1Script: ; 48694 (12:4694) + jp EnableAutoTextBoxDrawing + +CeladonMansion1TextPointers: ; 48697 (12:4697) + dw CeladonMansion1Text1 + dw CeladonMansion1Text2 + dw CeladonMansion1Text3 + dw CeladonMansion1Text4 + dw CeladonMansion1Text5 + +CeladonMansion1_486a1: ; 486a1 (12:46a1) + call PlayCry + jp TextScriptEnd + +CeladonMansion1Text1: ; 486a7 (12:46a7) + TX_FAR _CeladonMansion1Text1 + db $08 ; asm + ld a, MEOWTH + jp CeladonMansion1_486a1 + +CeladonMansion1Text2: ; 486b1 (12:46b1) + TX_FAR _CeladonMansion1Text2 + db "@" + +CeladonMansion1Text3: ; 486b6 (12:46b6) + TX_FAR _CeladonMansion1Text3 + db $8 + ld a, CLEFAIRY + jp CeladonMansion1_486a1 + +CeladonMansion1Text4: ; 486c0 (12:46c0) + TX_FAR _CeladonMansion1Text4 + db $8 + ld a, NIDORAN_F + jp CeladonMansion1_486a1 + +CeladonMansion1Text5: ; 486ca (12:46ca) + TX_FAR _CeladonMansion1Text5 + db "@" diff --git a/scripts/celadonmansion2.asm b/scripts/celadonmansion2.asm new file mode 100755 index 00000000..7f7e5d45 --- /dev/null +++ b/scripts/celadonmansion2.asm @@ -0,0 +1,10 @@ +CeladonMansion2Script: ; 4873a (12:473a) + call EnableAutoTextBoxDrawing + ret + +CeladonMansion2TextPointers: ; 4873e (12:473e) + dw CeladonMansion2Text1 + +CeladonMansion2Text1: ; 48740 (12:4740) + TX_FAR _CeladonMansion2Text1 + db "@" diff --git a/scripts/celadonmansion3.asm b/scripts/celadonmansion3.asm new file mode 100755 index 00000000..19342548 --- /dev/null +++ b/scripts/celadonmansion3.asm @@ -0,0 +1,73 @@ +CeladonMansion3Script: ; 48790 (12:4790) + jp EnableAutoTextBoxDrawing + +CeladonMansion3TextPointers: ; 48793 (12:4793) + dw ProgrammerText + dw GraphicArtistText + dw WriterText + dw DirectorText + dw GameFreakPCText1 + dw GameFreakPCText2 + dw GameFreakPCText3 + dw GameFreakSignText + +ProgrammerText: ; 487a3 (12:47a3) + TX_FAR _ProgrammerText + db "@" + +GraphicArtistText: ; 487a8 (12:47a8) + TX_FAR _GraphicArtistText + db "@" + +WriterText: ; 487ad (12:47ad) + TX_FAR _WriterText + db "@" + +DirectorText: ; 487b2 (12:47b2) + db $08 ; asm + + ; check pokédex + ld hl, wPokedexOwned + ld b, wPokedexOwnedEnd - wPokedexOwned + call CountSetBits + ld a, [$d11e] + cp 150 + jr nc, .CompletedDex + ld hl, .GameDesigner + jr .done +.CompletedDex + ld hl, .CompletedDexText +.done + call PrintText + jp TextScriptEnd + +.GameDesigner ; 487d0 (12:47d0) + TX_FAR _GameDesignerText + db "@" + +.CompletedDexText + TX_FAR _CompletedDexText + db $6 + db $8 ; asm + ld hl, DisplayDiploma + ld b, BANK(DisplayDiploma) + call Bankswitch + ld a, $1 + ld [$cc3c], a + jp TextScriptEnd + +GameFreakPCText1: ; 487eb (12:47eb) + TX_FAR _CeladonMansion3Text5 + db "@" + +GameFreakPCText2: ; 487f0 (12:47f0) + TX_FAR _CeladonMansion3Text6 + db "@" + +GameFreakPCText3: ; 487f5 (12:47f5) + TX_FAR _CeladonMansion3Text7 + db "@" + +GameFreakSignText: ; 487fa (12:47fa) + TX_FAR _CeladonMansion3Text8 + db "@" diff --git a/scripts/celadonmansion4.asm b/scripts/celadonmansion4.asm new file mode 100755 index 00000000..f9045bcd --- /dev/null +++ b/scripts/celadonmansion4.asm @@ -0,0 +1,9 @@ +CeladonMansion4Script: ; 4886b (12:486b) + jp EnableAutoTextBoxDrawing + +CeladonMansion4TextPointers: ; 4886e (12:486e) + dw CeladonMansion4Text1 + +CeladonMansion4Text1: ; 48870 (12:4870) + TX_FAR _CeladonMansion4Text1 + db "@" diff --git a/scripts/celadonmansion5.asm b/scripts/celadonmansion5.asm new file mode 100755 index 00000000..1d03ae5e --- /dev/null +++ b/scripts/celadonmansion5.asm @@ -0,0 +1,22 @@ +CeladonMansion5Script: ; 1dd3a (7:5d3a) + jp EnableAutoTextBoxDrawing + +CeladonMansion5TextPointers: ; 1dd3d (7:5d3d) + dw CeladonMansion5Text1 + dw CeladonMansion5Text2 + +CeladonMansion5Text1: ; 1dd41 (7:5d41) + TX_FAR _CeladonMansion5Text1 + db "@" + +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 diff --git a/scripts/celadonmart1.asm b/scripts/celadonmart1.asm new file mode 100755 index 00000000..041af8b3 --- /dev/null +++ b/scripts/celadonmart1.asm @@ -0,0 +1,19 @@ +CeladonMart1Script: ; 60f86 (18:4f86) + jp EnableAutoTextBoxDrawing + +CeladonMart1TextPointers: ; 60f89 (18:4f89) + dw CeladonMart1Text1 + dw CeladonMart1Text2 + dw CeladonMart1Text3 + +CeladonMart1Text1: ; 60f8f (18:4f8f) + TX_FAR _CeladonMart1Text1 + db "@" + +CeladonMart1Text2: ; 60f94 (18:4f94) + TX_FAR _CeladonMart1Text2 + db "@" + +CeladonMart1Text3: ; 60f99 (18:4f99) + TX_FAR _CeladonMart1Text3 + db "@" diff --git a/scripts/celadonmart2.asm b/scripts/celadonmart2.asm new file mode 100755 index 00000000..92f04399 --- /dev/null +++ b/scripts/celadonmart2.asm @@ -0,0 +1,21 @@ +CeladonMart2Script: ; 560f5 (15:60f5) + jp EnableAutoTextBoxDrawing + +CeladonMart2TextPointers: ; 560f8 (15:60f8) + dw CeladonMart2Text1 + dw CeladonMart2Text2 + dw CeladonMart2Text3 + dw CeladonMart2Text4 + dw CeladonMart2Text5 + +CeladonMart2Text3: ; 56102 (15:6102) + TX_FAR _CeladonMart2Text3 + db "@" + +CeladonMart2Text4: ; 56107 (15:6107) + TX_FAR _CeladonMart2Text4 + db "@" + +CeladonMart2Text5: ; 5610c (15:610c) + TX_FAR _CeladonMart2Text5 + db "@" diff --git a/scripts/celadonmart3.asm b/scripts/celadonmart3.asm new file mode 100755 index 00000000..969fa5f8 --- /dev/null +++ b/scripts/celadonmart3.asm @@ -0,0 +1,109 @@ +CeladonMart3Script: ; 48225 (12:4225) + jp EnableAutoTextBoxDrawing + +CeladonMart3TextPointers: ; 48228 (12:4228) + dw CeladonMart3Text1 + dw CeladonMart3Text2 + dw CeladonMart3Text3 + dw CeladonMart3Text4 + dw CeladonMart3Text5 + dw CeladonMart3Text6 + dw CeladonMart3Text7 + dw CeladonMart3Text8 + dw CeladonMart3Text9 + dw CeladonMart3Text10 + dw CeladonMart3Text11 + dw CeladonMart3Text12 + dw CeladonMart3Text13 + dw CeladonMart3Text14 + dw CeladonMart3Text15 + dw CeladonMart3Text16 + dw CeladonMart3Text17 + +CeladonMart3Text1: ; 4824a (12:424a) + db $08 ; asm + ld a, [$d778] + bit 7, a + jr nz, .asm_a5463 ; 0x48250 + ld hl, TM18PreReceiveText + call PrintText + ld bc, (TM_18 << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, $d778 + set 7, [hl] + ld hl, ReceivedTM18Text + jr .asm_81359 ; 0x48268 +.BagFull + ld hl, TM18NoRoomText + jr .asm_81359 ; 0x4826d +.asm_a5463 ; 0x4826f + ld hl, TM18ExplanationText +.asm_81359 ; 0x48272 + call PrintText + jp TextScriptEnd + +TM18PreReceiveText: ; 48278 (12:4278) + TX_FAR _TM18PreReceiveText + db "@" + +ReceivedTM18Text: ; 4827d (12:427d) + TX_FAR _ReceivedTM18Text + db $0B, "@" + +TM18ExplanationText: ; 48283 (12:4283) + TX_FAR _TM18ExplanationText + db "@" + +TM18NoRoomText: ; 48288 (12:4288) + TX_FAR _TM18NoRoomText + db "@" + +CeladonMart3Text2: ; 4828d (12:428d) + TX_FAR _CeladonMart3Text2 + db "@" + +CeladonMart3Text3: ; 48292 (12:4292) + TX_FAR _CeladonMart3Text3 + db "@" + +CeladonMart3Text4: ; 48297 (12:4297) + TX_FAR _CeladonMart3Text4 + db "@" + +CeladonMart3Text5: ; 4829c (12:429c) + TX_FAR _CeladonMart3Text5 + db "@" + +CeladonMart3Text12 +CeladonMart3Text10: ; 482a1 (12:42a1) +CeladonMart3Text8: ; 482a1 (12:42a1) +CeladonMart3Text6: ; 482a1 (12:42a1) + TX_FAR _CeladonMart3Text6 + db "@" + +CeladonMart3Text7: ; 482a6 (12:42a6) + TX_FAR _CeladonMart3Text7 + db "@" + +CeladonMart3Text9: ; 482ab (12:42ab) + TX_FAR _CeladonMart3Text9 + db "@" + +CeladonMart3Text11: ; 482b0 (12:42b0) + TX_FAR _CeladonMart3Text11 + db "@" + +CeladonMart3Text13: ; 482b5 (12:42b5) + TX_FAR _CeladonMart3Text13 + db "@" + +CeladonMart3Text14: ; 482ba (12:42ba) + TX_FAR _CeladonMart3Text14 + db "@" + +CeladonMart3Text17: ; 482bf (12:42bf) +CeladonMart3Text16: ; 482bf (12:42bf) +CeladonMart3Text15: ; 482bf (12:42bf) + TX_FAR _CeladonMart3Text15 + db "@" diff --git a/scripts/celadonmart4.asm b/scripts/celadonmart4.asm new file mode 100755 index 00000000..dfe2b90a --- /dev/null +++ b/scripts/celadonmart4.asm @@ -0,0 +1,20 @@ +CeladonMart4Script: ; 48356 (12:4356) + jp EnableAutoTextBoxDrawing + +CeladonMart4TextPointers: ; 48359 (12:4359) + dw CeladonMart4Text1 + dw CeladonMart4Text2 + dw CeladonMart4Text3 + dw CeladonMart4Text4 + +CeladonMart4Text2: ; 48361 (12:4361) + TX_FAR _CeladonMart4Text2 + db "@" + +CeladonMart4Text3: ; 48366 (12:4366) + TX_FAR _CeladonMart4Text3 + db "@" + +CeladonMart4Text4: ; 4836b (12:436b) + TX_FAR _CeladonMart4Text4 + db "@" diff --git a/scripts/celadonmart5.asm b/scripts/celadonmart5.asm new file mode 100755 index 00000000..9bd7f991 --- /dev/null +++ b/scripts/celadonmart5.asm @@ -0,0 +1,21 @@ +CeladonMart5Script: ; 49069 (12:5069) + jp EnableAutoTextBoxDrawing + +CeladonMart5TextPointers: ; 4906c (12:506c) + dw CeladonMart5Text1 + dw CeladonMart5Text2 + dw CeladonMart5Text3 + dw CeladonMart5Text4 + dw CeladonMart5Text5 + +CeladonMart5Text1: ; 49076 (12:5076) + TX_FAR _CeladonMart5Text1 + db "@" + +CeladonMart5Text2: ; 4907b (12:507b) + TX_FAR _CeladonMart5Text2 + db "@" + +CeladonMart5Text5: ; 49080 (12:5080) + TX_FAR _CeladonMart5Text5 + db "@" diff --git a/scripts/celadonmartelevator.asm b/scripts/celadonmartelevator.asm new file mode 100755 index 00000000..9712ef04 --- /dev/null +++ b/scripts/celadonmartelevator.asm @@ -0,0 +1,71 @@ +CeladonMartElevatorScript: ; 48600 (12:4600) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + push hl + call nz, CeladonMartElevatorScript_4861c + pop hl + bit 7, [hl] + res 7, [hl] + call nz, CeladonMartElevatorScript_48654 + xor a + ld [$cf0c], a + inc a + ld [$cc3c], a + ret + +CeladonMartElevatorScript_4861c: ; 4861c (12:461c) + ld hl, $d3af + ld a, [$d73b] + ld b, a + ld a, [$d73c] + ld c, a + call CeladonMartElevatorScript_4862a + +CeladonMartElevatorScript_4862a: ; 4862a (12:462a) + inc hl + inc hl + ld a, b + ld [hli], a + ld a, c + ld [hli], a + ret + +CeladonMartElevatorScript_48631: ; 48631 (12:4631) + ld hl, CeladonMartElavatorFloors ; $4643 + call LoadItemList + ld hl, CeldaonMartElevatorWarpMaps ; $464a + ld de, $cc5b + ld bc, $000a + jp CopyData + +CeladonMartElavatorFloors: ; 48643 (12:4643) + db $05 ; num elements in list + db $56, $57, $58, $59, $5A ; "1F", "2F", "3F", "4F, "5F" + db $FF ; terminator + +CeldaonMartElevatorWarpMaps: ; 4864a (12:464a) +; first byte is warp number +; second byte is map number +; These specify where the player goes after getting out of the elevator. + db $05, CELADON_MART_1 + db $02, CELADON_MART_2 + db $02, CELADON_MART_3 + db $02, CELADON_MART_4 + db $02, CELADON_MART_5 + +CeladonMartElevatorScript_48654: ; 48654 (12:4654) + ld b, BANK(ShakeElevator) + ld hl, ShakeElevator + jp Bankswitch + +CeladonMartElevatorTextPointers: ; 4865c (12:465c) + dw CeladonMartElevatorText1 + +CeladonMartElevatorText1: ; 4865e (12:465e) + db $08 ; asm + call CeladonMartElevatorScript_48631 + ld hl, CeldaonMartElevatorWarpMaps ; $464a + ld a, $61 + call Predef + jp TextScriptEnd diff --git a/scripts/celadonmartroof.asm b/scripts/celadonmartroof.asm new file mode 100755 index 00000000..d1765575 --- /dev/null +++ b/scripts/celadonmartroof.asm @@ -0,0 +1,263 @@ +CeladonMartRoofScript: ; 483d5 (12:43d5) + jp EnableAutoTextBoxDrawing + +CeladonMartRoofScript_483d8: ; 483d8 (12:43d8) + xor a + ld [$cd37], a + ld de, $cc5b + ld hl, CeladonMartRoofDrinkList ; $4408 +.asm_483e2 + ld a, [hli] + and a + jr z, .asm_48404 + push hl + push de + ld [$d11e], a + ld b, a + ld a, $1c + call Predef ; indirect jump to Func_f8a5 (f8a5 (3:78a5)) + pop de + pop hl + ld a, b + and a + jr z, .asm_483e2 + ld a, [$d11e] + ld [de], a + inc de + push hl + ld hl, $cd37 + inc [hl] + pop hl + jr .asm_483e2 +.asm_48404 + ld a, $ff + ld [de], a + ret + +CeladonMartRoofDrinkList: ; 48408 (12:4408) + db FRESH_WATER + db SODA_POP + db LEMONADE + db $00 + +CeladonMartRoofScript_4840c: ; 4840c (12:440c) + ld hl, $d730 + set 6, [hl] + ld hl, CeladonMartRoofText_484ee ; $44ee + call PrintText + xor a + ld [wCurrentMenuItem], a ; $cc26 + ld a, $3 + ld [wMenuWatchedKeys], a ; $cc29 + ld a, [$cd37] + dec a + ld [wMaxMenuItem], a ; $cc28 + ld a, $2 + ld [wTopMenuItemY], a ; $cc24 + ld a, $1 + ld [wTopMenuItemX], a ; $cc25 + ld a, [$cd37] + dec a + ld bc, $2 + ld hl, $3 + call AddNTimes + dec l + ld b, l + ld c, $c + ld hl, wTileMap + call TextBoxBorder + call UpdateSprites + call CeladonMartRoofScript_48532 + ld hl, $d730 + res 6, [hl] + call HandleMenuInput + bit 1, a + ret nz + ld hl, $cc5b + ld a, [wCurrentMenuItem] ; $cc26 + ld d, $0 + ld e, a + add hl, de + ld a, [hl] + ld [$ffdb], a + cp FRESH_WATER + jr z, .asm_484b6 + cp SODA_POP + jr z, .asm_48492 + ld a, [$d778] + bit 6, a + jr nz, .asm_484e0 + ld hl, CeladonMartRoofText_48515 ; $4515 + call PrintText + call RemoveItemByIDBank12 + ld bc, (TM_49 << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, ReceivedTM49Text + call PrintText + ld hl, $d778 + set 6, [hl] + ret +.asm_48492 + ld a, [$d778] + bit 5, a + jr nz, .asm_484e0 + ld hl, CeladonMartRoofText_48504 ; $4504 + call PrintText + call RemoveItemByIDBank12 + ld bc, (TM_48 << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, CeladonMartRoofText_4850a ; $450a + call PrintText + ld hl, $d778 + set 5, [hl] + ret +.asm_484b6 + ld a, [$d778] + bit 4, a + jr nz, .asm_484e0 + ld hl, CeladonMartRoofText_484f3 ; $44f3 + call PrintText + call RemoveItemByIDBank12 + ld bc, (TM_13 << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, CeladonMartRoofText_484f9 ; $44f9 + call PrintText + ld hl, $d778 + set 4, [hl] + ret +.BagFull + ld hl, CeladonMartRoofText_48526 ; $4526 + jp PrintText +.asm_484e0 + ld hl, CeladonMartRoofText_4852c ; $452c + jp PrintText + +RemoveItemByIDBank12: ; 484e6 (12:44e6) + ld b, BANK(RemoveItemByID) + ld hl, RemoveItemByID + jp Bankswitch + +CeladonMartRoofText_484ee: ; 484ee (12:44ee) + TX_FAR _CeladonMartRoofText_484ee + db "@" + +CeladonMartRoofText_484f3: ; 484f3 (12:44f3) + TX_FAR _CeladonMartRoofText_484f3 + db $0d + db "@" + +CeladonMartRoofText_484f9: ; 484f9 (12:44f9) + TX_FAR _CeladonMartRoofText_484f9 + db $0b + TX_FAR _CeladonMartRoofText_484fe + db $0d + db "@" + +CeladonMartRoofText_48504: ; 48504 (12:4504) + TX_FAR _CeladonMartRoofText_48504 + db $0d + db "@" + +CeladonMartRoofText_4850a: ; 4850a (12:450a) + TX_FAR _CeladonMartRoofText_4850a + db $0b + TX_FAR _CeladonMartRoofText_4850f + db $0d + db "@" + +CeladonMartRoofText_48515: ; 48515 (12:4515) + TX_FAR _CeladonMartRoofText_48515 + db $0d + db "@" + +ReceivedTM49Text: ; 4851b (12:451b) + TX_FAR _ReceivedTM49Text + db $0b + TX_FAR _CeladonMartRoofText_48520 + db $0d + db "@" + +CeladonMartRoofText_48526: ; 48526 (12:4526) + TX_FAR _CeladonMartRoofText_48526 + db $0d + db "@" + +CeladonMartRoofText_4852c: ; 4852c (12:452c) + TX_FAR _CeladonMartRoofText_4852c + db $0d + db "@" + +CeladonMartRoofScript_48532: ; 48532 (12:4532) + ld hl, $cc5b + xor a + ld [$ffdb], a +.asm_48538 + ld a, [hli] + cp $ff + ret z + push hl + ld [$d11e], a + call GetItemName + FuncCoord 2, 2 ; $c3ca + ld hl, Coord + ld a, [$ffdb] + ld bc, $28 + call AddNTimes + ld de, $cd6d + call PlaceString + ld hl, $ffdb + inc [hl] + pop hl + jr .asm_48538 + +CeladonMartRoofTextPointers: ; 4855b (12:455b) + dw CeladonMartRoofText1 + dw CeladonMartRoofText2 + dw CeladonMartRoofText5 + dw CeladonMartRoofText5 + dw CeladonMartRoofText5 + dw CeladonMartRoofText6 + +CeladonMartRoofText1: ; 48567 (12:4567) + TX_FAR _CeladonMartRoofText1 + db "@" + +CeladonMartRoofText2: ; 4856c (12:456c) + db $08 ; asm + call CeladonMartRoofScript_483d8 + ld a, [$cd37] + and a + jr z, .asm_914b9 ; 0x48574 + ld a, $1 + ld [$cc3c], a + ld hl, CeladonMartRoofText4 + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + jr nz, .asm_05aa4 ; 0x48588 + call CeladonMartRoofScript_4840c + jr .asm_05aa4 ; 0x4858d +.asm_914b9 ; 0x4858f + ld hl, CeladonMartRoofText3 + call PrintText +.asm_05aa4 ; 0x48595 + jp TextScriptEnd + +CeladonMartRoofText3: ; 48598 (12:4598) + TX_FAR _CeladonMartRoofText_48598 + db "@" + +CeladonMartRoofText4: ; 4859d (12:459d) + TX_FAR _CeladonMartRoofText4 + db "@" + +CeladonMartRoofText5: ; 485a2 (12:45a2) + db $f5 + +CeladonMartRoofText6: ; 485a3 (12:45a3) + TX_FAR _CeladonMartRoofText6 + db "@" diff --git a/scripts/celadonpokecenter.asm b/scripts/celadonpokecenter.asm new file mode 100755 index 00000000..e7bfd1d2 --- /dev/null +++ b/scripts/celadonpokecenter.asm @@ -0,0 +1,23 @@ +CeladonPokecenterScript: ; 488b8 (12:48b8) + call Func_22fa + jp EnableAutoTextBoxDrawing + +CeladonPokecenterTextPointers: ; 488be (12:48be) + dw CeladonPokecenterText1 + dw CeladonPokecenterText2 + dw CeladonPokecenterText3 + dw CeladonPokecenterText4 + +CeladonPokecenterText4: ; 488c6 (12:48c6) + db $f6 + +CeladonPokecenterText1: ; 488c7 (12:48c7) + db $ff + +CeladonPokecenterText2: ; 488c8 (12:48c8) + TX_FAR _CeladonPokecenterText2 + db "@" + +CeladonPokecenterText3: ; 488cd (12:48cd) + TX_FAR _CeladonPokecenterText3 + db "@" diff --git a/scripts/celadonprizeroom.asm b/scripts/celadonprizeroom.asm new file mode 100755 index 00000000..2cfd01d0 --- /dev/null +++ b/scripts/celadonprizeroom.asm @@ -0,0 +1,20 @@ +CeladonPrizeRoomScript: ; 490f0 (12:50f0) + jp EnableAutoTextBoxDrawing + +CeladonPrizeRoomTextPointers: ; 490f3 (12:50f3) + dw CeladonPrizeRoomText1 + dw CeladonPrizeRoomText2 + dw CeladonPrizeRoomText3 + dw CeladonPrizeRoomText3 + dw CeladonPrizeRoomText3 + +CeladonPrizeRoomText1: ; 490fd (12:50fd) + TX_FAR _CeladonPrizeRoomText1 + db "@" + +CeladonPrizeRoomText2: ; 49102 (12:5102) + TX_FAR _CeladonPrizeRoomText2 + db "@" + +CeladonPrizeRoomText3: ; 49107 (12:5107) + db $f7 diff --git a/scripts/ceruleancity.asm b/scripts/ceruleancity.asm new file mode 100755 index 00000000..0879fb74 --- /dev/null +++ b/scripts/ceruleancity.asm @@ -0,0 +1,448 @@ +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, CeruleanCityText_1966d + ld de, CeruleanCityText_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, CeruleanCityText_19677 + call PrintText + jr .end ; 0x1965d +.PreBattleText ; 0x1965f + ld hl, CeruleanCityText_19668 + call PrintText +.end ; 0x19665 + jp TextScriptEnd + +CeruleanCityText_19668: ; 19668 (6:5668) + TX_FAR _CeruleanCityText_19668 + db "@" + +CeruleanCityText_1966d: ; 1966d (6:566d) + TX_FAR _CeruleanCityText_1966d + db "@" + +CeruleanCityText_19672: ; 19672 (6:5672) + TX_FAR _CeruleanCityText_19672 + db "@" + +CeruleanCityText_19677: ; 19677 (6:5677) + TX_FAR _CeruleanCityText_19677 + db "@" + +CeruleanCityText2: ; 1967c (6:567c) + db $8 + ld a, [$d75b] + bit 7, a + jr nz, .asm_4ca20 ; 0x19682 $29 + ld hl, CeruleanCityText_196d9 + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, CeruleanCityText_196ee + ld de, CeruleanCityText_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, CeruleanCityText_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 + +CeruleanCityText_196d9: ; 196d9 (6:56d9) + TX_FAR _CeruleanCityText_196d9 + db "@" + +ReceivedTM28Text: ; 196de (6:56de) + TX_FAR _ReceivedTM28Text + db $0B + TX_FAR _ReceivedTM28Text2 + db $0D, "@" + +TM28NoRoomText: ; 196e9 (6:56e9) + TX_FAR _TM28NoRoomText + db "@" + +CeruleanCityText_196ee: ; 196ee (6:56ee) + TX_FAR _CeruleanCityText_196ee + db "@" + +CeruleanCityText_196f3: ; 196f3 (6:56f3) + TX_FAR _CeruleanCityText_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, CeruleanCityText_19730 + call PrintText + jr .asm_d486e ; 0x19719 +.asm_e9fc9 ; 0x1971b + cp $64 + jr c, .asm_df99b ; 0x1971d + ld hl, CeruleanCityText_19735 + call PrintText + jr .asm_d486e ; 0x19725 +.asm_df99b ; 0x19727 + ld hl, CeruleanCityText_1973a + call PrintText +.asm_d486e ; 0x1972d + jp TextScriptEnd + +CeruleanCityText_19730: ; 19730 (6:5730) + TX_FAR _CeruleanCityText_19730 + db "@" + +CeruleanCityText_19735: ; 19735 (6:5735) + TX_FAR _CeruleanCityText_19735 + db "@" + +CeruleanCityText_1973a: ; 1973a (6:573a) + TX_FAR _CeruleanCityText_1973a + db "@" + +CeruleanCityText8: ; 1973f (6:573f) + db $08 ; asm + ldh a, [$d3] + cp $b4 + jr c, .asm_e28da ; 0x19744 + ld hl, CeruleanCityText_1976f + call PrintText + jr .asm_f2f38 ; 0x1974c +.asm_e28da ; 0x1974e + cp $78 + jr c, .asm_15d08 ; 0x19750 + ld hl, CeruleanCityText_19774 + call PrintText + jr .asm_f2f38 ; 0x19758 +.asm_15d08 ; 0x1975a + cp $3c + jr c, .asm_d7fea ; 0x1975c + ld hl, CeruleanCityText_19779 + call PrintText + jr .asm_f2f38 ; 0x19764 +.asm_d7fea ; 0x19766 + ld hl, CeruleanCityText_1977e + call PrintText +.asm_f2f38 ; 0x1976c + jp TextScriptEnd + +CeruleanCityText_1976f: ; 1976f (6:576f) + TX_FAR _CeruleanCityText_1976f + db "@" + +CeruleanCityText_19774: ; 19774 (6:5774) + TX_FAR _CeruleanCityText_19774 + db "@" + +CeruleanCityText_19779: ; 19779 (6:5779) + TX_FAR _CeruleanCityText_19779 + db "@" + +CeruleanCityText_1977e: ; 1977e (6:577e) + TX_FAR _CeruleanCityText_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 "@" diff --git a/scripts/ceruleangym.asm b/scripts/ceruleangym.asm new file mode 100755 index 00000000..7d35cf71 --- /dev/null +++ b/scripts/ceruleangym.asm @@ -0,0 +1,224 @@ +CeruleanGymScript: ; 5c6b3 (17:46b3) + ld hl, $d126 + bit 6, [hl] + res 6, [hl] + call nz, CeruleanGymScript_5c6d0 + call EnableAutoTextBoxDrawing + ld hl, CeruleanGymTrainerHeaders + ld de, CeruleanGymScriptPointers + ld a, [W_CERULEANGYMCURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_CERULEANGYMCURSCRIPT], a + ret + +CeruleanGymScript_5c6d0: ; 5c6d0 (17:46d0) + ld hl, Gym2CityName ; $46d9 + ld de, Gym2LeaderName ; $46e7 + jp LoadGymLeaderAndCityName + +Gym2CityName: ; 5c6d9 (17:46d9) + db "CERULEAN CITY@" + +Gym2LeaderName: ; 5c6e7 (17:46e7) + db "MISTY@" + +CeruleanGymScript_5c6ed: ; 5c6ed (17:46ed) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_CERULEANGYMCURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +CeruleanGymScriptPointers: ; 5c6f8 (17:46f8) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + dw CeruleanGymScript3 + +CeruleanGymScript3: ; 5c700 (17:4700) + ld a, [W_ISINBATTLE] ; $d057 + cp $ff + jp z, CeruleanGymScript_5c6ed + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + +CeruleanGymScript_5c70d: ; 5c70d (17:470d) + ld a, $5 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld hl, $d75e + set 7, [hl] + ld bc, (TM_11 << 8) | 1 + call GiveItem + jr nc, .BagFull + ld a, $6 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld hl, $d75e + set 6, [hl] + jr .asm_5c736 +.BagFull + ld a, $7 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID +.asm_5c736 + ld hl, W_OBTAINEDBADGES + set 1, [hl] + ld hl, $d72a + set 1, [hl] + + ; deactivate gym trainers + ld hl, $d75e + set 2, [hl] + set 3, [hl] + + jp CeruleanGymScript_5c6ed + +CeruleanGymTextPointers: ; 5c74a (17:474a) + dw CeruleanGymText1 + dw CeruleanGymText2 + dw CeruleanGymText3 + dw CeruleanGymText4 + dw CeruleanGymText5 + dw CeruleanGymText6 + dw CeruleanGymText7 + +CeruleanGymTrainerHeaders: ; 5c758 (17:4758) +CeruleanGymTrainerHeader0: ; 5c758 (17:4758) + db $2 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d75e ; flag's byte + dw CeruleanGymBattleText1 ; 0x47e9 TextBeforeBattle + dw CeruleanGymAfterBattleText1 ; 0x47f3 TextAfterBattle + dw CeruleanGymEndBattleText1 ; 0x47ee TextEndBattle + dw CeruleanGymEndBattleText1 ; 0x47ee TextEndBattle + +CeruleanGymTrainerHeader1: ; 5c764 (17:4764) + db $3 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d75e ; flag's byte + dw CeruleanGymBattleText2 ; 0x4802 TextBeforeBattle + dw CeruleanGymAfterBattleText2 ; 0x480c TextAfterBattle + dw CeruleanGymEndBattleText2 ; 0x4807 TextEndBattle + dw CeruleanGymEndBattleText2 ; 0x4807 TextEndBattle + + db $ff + +CeruleanGymText1: ; 5c771 (17:4771) + db $08 ; asm + ld a, [$d75e] + bit 7, a + jr z, .asm_10854 ; 0x5c777 + bit 6, a + jr nz, .asm_37a1b ; 0x5c77b + call z, CeruleanGymScript_5c70d + call DisableWaitingAfterTextDisplay + jr .asm_95b04 ; 0x5c783 +.asm_37a1b ; 0x5c785 + ld hl, CeruleanGymText_5c7c3 + call PrintText + jr .asm_95b04 ; 0x5c78b +.asm_10854 ; 0x5c78d + ld hl, CeruleanGymText_5c7be + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, CeruleanGymText_5c7d8 + ld de, CeruleanGymText_5c7d8 + call PreBattleSaveRegisters + ldh a, [$8c] + ld [$cf13], a + call EngageMapTrainer + call InitBattleEnemyParameters + ld a, $2 + ld [$d05c], a + xor a + ldh [$b4], a + ld a, $3 + ld [W_CERULEANGYMCURSCRIPT], a +.asm_95b04 ; 0x5c7bb + jp TextScriptEnd + +CeruleanGymText_5c7be: ; 5c7be (17:47be) + TX_FAR _CeruleanGymText_5c7be + db "@" + +CeruleanGymText_5c7c3: ; 5c7c3 (17:47c3) + TX_FAR _CeruleanGymText_5c7c3 + db "@" + +CeruleanGymText5: ; 5c7c8 (17:47c8) + TX_FAR _CeruleanGymText_5c7c8 + db "@" + +CeruleanGymText6: ; 5c7cd (17:47cd) +ReceivedTM11Text: ; 5c7cd (17:47cd) + TX_FAR _ReceivedTM11Text + db $0B, "@" + +CeruleanGymText7: ; 5c7d3 (17:47d3) + TX_FAR _CeruleanGymText_5c7d3 + db "@" + +CeruleanGymText_5c7d8: ; 5c7d8 (17:47d8) + TX_FAR _CeruleanGymText_5c7d8 + db $11, $6, "@" + +CeruleanGymText2: ; 5c7df (17:47df) + db $08 ; asm + ld hl, CeruleanGymTrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +CeruleanGymBattleText1: ; 5c7e9 (17:47e9) + TX_FAR _CeruleanGymBattleText1 + db "@" + +CeruleanGymEndBattleText1: ; 5c7ee (17:47ee) + TX_FAR _CeruleanGymEndBattleText1 + db "@" + +CeruleanGymAfterBattleText1: ; 5c7f3 (17:47f3) + TX_FAR _CeruleanGymAfterBattleText1 + db "@" + +CeruleanGymText3: ; 5c7f8 (17:47f8) + db $08 ; asm + ld hl, CeruleanGymTrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +CeruleanGymBattleText2: ; 5c802 (17:4802) + TX_FAR _CeruleanGymBattleText2 + db "@" + +CeruleanGymEndBattleText2: ; 5c807 (17:4807) + TX_FAR _CeruleanGymEndBattleText2 + db "@" + +CeruleanGymAfterBattleText2: ; 5c80c (17:480c) + TX_FAR _CeruleanGymAfterBattleText2 + db "@" + +CeruleanGymText4: ; 5c811 (17:4811) + db $08 ; asm + ld a, [$d75e] + bit 7, a + jr nz, .asm_f80ce ; 0x5c817 + ld hl, CeruleanGymText_5c82a + call PrintText + jr .asm_18a31 ; 0x5c81f +.asm_f80ce ; 0x5c821 + ld hl, CeruleanGymText_5c82f + call PrintText +.asm_18a31 ; 0x5c827 + jp TextScriptEnd + +CeruleanGymText_5c82a: ; 5c82a (17:482a) + TX_FAR _CeruleanGymText_5c82a + db "@" + +CeruleanGymText_5c82f: ; 5c82f (17:482f) + TX_FAR _CeruleanGymText_5c82f + db "@" diff --git a/scripts/ceruleanhouse1.asm b/scripts/ceruleanhouse1.asm new file mode 100755 index 00000000..6bc1cd30 --- /dev/null +++ b/scripts/ceruleanhouse1.asm @@ -0,0 +1,18 @@ +CeruleanHouse1Script: ; 1d6f6 (7:56f6) + jp EnableAutoTextBoxDrawing + +CeruleanHouse1TextPointers: ; 1d6f9 (7:56f9) + dw CeruleanHouse1Text1 + dw CeruleanHouse1Text2 + +CeruleanHouse1Text1: ; 1d6fd (7:56fd) + TX_FAR _CeruleanHouse1Text1 + db "@" + +CeruleanHouse1Text2: ; 1d702 (7:5702) + db $08 ; asm + ld a, $6 + ld [wWhichTrade], a + ld a, $54 + call Predef + jp TextScriptEnd diff --git a/scripts/ceruleanhouse2.asm b/scripts/ceruleanhouse2.asm new file mode 100755 index 00000000..eae26047 --- /dev/null +++ b/scripts/ceruleanhouse2.asm @@ -0,0 +1,109 @@ +CeruleanHouse2Script: ; 74e09 (1d:4e09) + ld a, $1 + ld [$cf0c], a + dec a + ld [$cc3c], a + ret + +CeruleanHouse2TextPointers: ; 74e13 (1d:4e13) + dw CeruleanHouse2Text1 + +CeruleanHouse2Text1: ; 74e15 (1d:4e15) + db $8 + ld hl, CeruleanHouse2Text_74e77 + call PrintText + xor a + ld [wCurrentMenuItem], a + ld [wListScrollOffset], a +.asm_74e23 + ld hl, CeruleanHouse2Text_74e7c + call PrintText + ld hl, BadgeItemList + call LoadItemList + ld hl, $cf7b + ld a, l + ld [$cf8b], a + ld a, h + ld [$cf8c], a + xor a + ld [$cf93], a + ld [$cc35], a + ld a, SPECIALLISTMENU + ld [wListMenuID], a + call DisplayListMenuID + jr c, .asm_74e60 ; 0x74e49 $15 + ld hl, TextPointers_74e86 + ld a, [$cf91] + sub $15 + add a + ld d, $0 + ld e, a + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + call PrintText + jr .asm_74e23 ; 0x74e5e $c3 +.asm_74e60 + xor a + ld [wListScrollOffset], a + ld hl, CeruleanHouse2Text_74e81 + call PrintText + jp TextScriptEnd + +BadgeItemList: ; 74e6d (1d:4e6d) + db $8,BOULDERBADGE,CASCADEBADGE,THUNDERBADGE,RAINBOWBADGE,SOULBADGE,MARSHBADGE,VOLCANOBADGE,EARTHBADGE,$FF + +CeruleanHouse2Text_74e77: ; 74e77 (1d:4e77) + TX_FAR _CeruleanHouse2Text_74e77 + db "@" + +CeruleanHouse2Text_74e7c: ; 74e7c (1d:4e7c) + TX_FAR _CeruleanHouse2Text_74e7c + db "@" + +CeruleanHouse2Text_74e81: ; 74e81 (1d:4e81) + TX_FAR _CeruleanHouse2Text_74e81 + db "@" + +TextPointers_74e86: ; 74e86 (1d:4e86) + dw CeruleanHouse2Text_74e96 + dw CeruleanHouse2Text_74e9b + dw CeruleanHouse2Text_74ea0 + dw CeruleanHouse2Text_74ea5 + dw CeruleanHouse2Text_74eaa + dw CeruleanHouse2Text_74eaf + dw CeruleanHouse2Text_74eb4 + dw CeruleanHouse2Text_74eb9 + +CeruleanHouse2Text_74e96: ; 74e96 (1d:4e96) + TX_FAR _CeruleanHouse2Text_74e96 + db "@" + +CeruleanHouse2Text_74e9b: ; 74e9b (1d:4e9b) + TX_FAR _CeruleanHouse2Text_74e9b + db "@" + +CeruleanHouse2Text_74ea0: ; 74ea0 (1d:4ea0) + TX_FAR _CeruleanHouse2Text_74ea0 + db "@" + +CeruleanHouse2Text_74ea5: ; 74ea5 (1d:4ea5) + TX_FAR _CeruleanHouse2Text_74ea5 + db "@" + +CeruleanHouse2Text_74eaa: ; 74eaa (1d:4eaa) + TX_FAR _CeruleanHouse2Text_74eaa + db "@" + +CeruleanHouse2Text_74eaf: ; 74eaf (1d:4eaf) + TX_FAR _CeruleanHouse2Text_74eaf + db "@" + +CeruleanHouse2Text_74eb4: ; 74eb4 (1d:4eb4) + TX_FAR _CeruleanHouse2Text_74eb4 + db "@" + +CeruleanHouse2Text_74eb9: ; 74eb9 (1d:4eb9) + TX_FAR _CeruleanHouse2Text_74eb9 + db "@" diff --git a/scripts/ceruleanhousetrashed.asm b/scripts/ceruleanhousetrashed.asm new file mode 100755 index 00000000..1bb60564 --- /dev/null +++ b/scripts/ceruleanhousetrashed.asm @@ -0,0 +1,40 @@ +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, CeruleanHouseTrashedText_1d6b0 + call PrintText + jr .asm_8dfe9 ; 0x1d6a0 +.asm_f8734 ; 0x1d6a2 + ld hl, CeruleanHouseTrashedText_1d6ab + call PrintText +.asm_8dfe9 ; 0x1d6a8 + jp TextScriptEnd + +CeruleanHouseTrashedText_1d6ab: ; 1d6ab (7:56ab) + TX_FAR _CeruleanTrashedText_1d6ab + db "@" + +CeruleanHouseTrashedText_1d6b0: ; 1d6b0 (7:56b0) + TX_FAR _CeruleanTrashedText_1d6b0 + db "@" + +CeruleanHouseTrashedText2: ; 1d6b5 (7:56b5) + TX_FAR _CeruleanHouseTrashedText2 + db "@" + +CeruleanHouseTrashedText3: ; 1d6ba (7:56ba) + TX_FAR _CeruleanHouseTrashedText3 + db "@" diff --git a/scripts/ceruleanmart.asm b/scripts/ceruleanmart.asm new file mode 100755 index 00000000..7aea6d47 --- /dev/null +++ b/scripts/ceruleanmart.asm @@ -0,0 +1,15 @@ +CeruleanMartScript: ; 5c895 (17:4895) + jp EnableAutoTextBoxDrawing + +CeruleanMartTextPointers: ; 5c898 (17:4898) + dw CeruleanMartText1 + dw CeruleanMartText2 + dw CeruleanMartText3 + +CeruleanMartText2: ; 5c89e (17:489e) + TX_FAR _CeruleanMartText2 + db "@" + +CeruleanMartText3: ; 5c8a3 (17:48a3) + TX_FAR _CeruleanMartText3 + db "@" diff --git a/scripts/ceruleanpokecenter.asm b/scripts/ceruleanpokecenter.asm new file mode 100755 index 00000000..b6f88b41 --- /dev/null +++ b/scripts/ceruleanpokecenter.asm @@ -0,0 +1,23 @@ +CeruleanPokecenterScript: ; 5c645 (17:4645) + call Func_22fa + jp EnableAutoTextBoxDrawing + +CeruleanPokecenterTextPointers: ; 5c64b (17:464b) + dw CeruleanPokecenterText1 + dw CeruleanPokecenterText2 + dw CeruleanPokecenterText3 + dw CeruleanPokecenterText4 + +CeruleanPokecenterText4: ; 5c653 (17:4653) + db $f6 + +CeruleanPokecenterText1: ; 5c654 (17:4654) + db $ff + +CeruleanPokecenterText2: ; 5c655 (17:4655) + TX_FAR _CeruleanPokecenterText1 + db "@" + +CeruleanPokecenterText3: ; 5c65a (17:465a) + TX_FAR _CeruleanPokecenterText3 + db "@" diff --git a/scripts/cinnabargym.asm b/scripts/cinnabargym.asm new file mode 100755 index 00000000..1d66a1bf --- /dev/null +++ b/scripts/cinnabargym.asm @@ -0,0 +1,483 @@ +CinnabarGymScript: ; 7574a (1d:574a) + call CinnabarGymScript_75759 + call EnableAutoTextBoxDrawing + ld hl, CinnabarGymScriptPointers + ld a, [W_CINNABARGYMCURSCRIPT] + jp CallFunctionInTable + +CinnabarGymScript_75759: ; 75759 (1d:5759) + ld hl, $D126 + bit 6, [hl] + res 6, [hl] + push hl + call nz, CinnabarGymScript_75772 + pop hl + bit 5, [hl] + res 5, [hl] + call nz, Func_3ead + ld hl, $D79B + res 7, [hl] + ret +CinnabarGymScript_75772: ; 75772 (1d:5772) + ld hl, Gym7CityName + ld de, Gym7LeaderName + jp LoadGymLeaderAndCityName + +Gym7CityName: ; 7577b (1d:577b) + db "CINNABAR ISLAND@" +Gym7LeaderName: ; 7578b (1d:578b) + db "BLAINE@" + +CinnabarGymScript_75792: ; 75792 (1d:5792) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_CINNABARGYMCURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ld [$da38], a + ret + +CinnabarGymScript_757a0: ; 757a0 (1d:57a0) + ld a, [H_DOWNARROWBLINKCNT2] ; $ff8c + ld [wTrainerHeaderFlagBit], a + ret + +CinnabarGymScriptPointers: ; 757a6 (1d:57a6) + dw CinnabarGymScript0 + dw CinnabarGymScript1 + dw CinnabarGymScript2 + dw CinnabarGymScript3 + +CinnabarGymScript0: ; 757ae (1d:57ae) + ld a, [$da38] + and a + ret z + ld [$ff8c], a + cp $4 + jr nz, .asm_757c3 ; 0x757b7 $a + ld a, $4 + ld [$d528], a + ld de, MovementData_757d7 + jr .asm_757cb ; 0x757c1 $8 +.asm_757c3 + ld de, MovementData_757da + ld a, $1 + ld [$d528], a +.asm_757cb + call MoveSprite + ld a, $1 + ld [W_CINNABARGYMCURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +MovementData_757d7: ; 757d7 (1d:57d7) + db $80,$40,$FF + +MovementData_757da: ; 757da (1d:57da) + db $80,$FF + +CinnabarGymScript1: ; 757dc (1d:57dc) + ld a, [$d730] + bit 0, a + ret nz + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, [$da38] + ld [wTrainerHeaderFlagBit], a + ld [$ff8c], a + jp DisplayTextID + +CinnabarGymScript_757f1: ; 757f1 (1d:57f1) + ld a, $10 + jp Predef ; indirect jump to HandleBitArray (f666 (3:7666)) + +CinnabarGymScript2: ; 757f6 (1d:57f6) + ld a, [$d057] + cp $ff + jp z, CinnabarGymScript_75792 + ld a, [wTrainerHeaderFlagBit] + ld [$ffdb], a + ld c, a + ld b, $2 + ld hl, $d79a + call CinnabarGymScript_757f1 + ld a, c + and a + jr nz, .asm_7581b ; 0x7580e $b + call WaitForSoundToFinish + ld a, (SFX_02_57 - SFX_Headers_02) / 3 + call PlaySound + call WaitForSoundToFinish +.asm_7581b + ld a, [wTrainerHeaderFlagBit] + ld [$ffdb], a + ld c, a + ld b, $1 + ld hl, $d79a + call CinnabarGymScript_757f1 + ld a, [wTrainerHeaderFlagBit] + sub $2 + ld c, a + ld b, $1 + ld hl, $d79c + call CinnabarGymScript_757f1 + call Func_3ead + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [$da38], a + ld a, $0 + ld [W_CINNABARGYMCURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +CinnabarGymScript3: ; 7584a (1d:584a) + ld a, [$d057] + cp $ff + jp z, CinnabarGymScript_75792 + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a +CinnabarGymScript3_75857: ; 75857 (1d:5857) + ld a, $a + ld [$ff8c], a + call DisplayTextID + ld hl, $d79a + set 1, [hl] + ld bc, (TM_38 << 8) | 1 + call GiveItem + jr nc, .BagFull + ld a, $b + ld [$ff8c], a + call DisplayTextID + ld hl, $d79a + set 0, [hl] + jr .asm_75880 ; 0x75877 $7 +.BagFull + ld a, $c + ld [$ff8c], a + call DisplayTextID +.asm_75880 + ld hl, W_OBTAINEDBADGES + set 6, [hl] + ld hl, $d72a + set 6, [hl] + + ; deactivate gym trainers + ld a, [$d79a] + or %11111100 + ld [$d79a], a + ld hl, $d79b + set 0, [hl] + + ld hl, $d126 + set 5, [hl] + + jp CinnabarGymScript_75792 + +CinnabarGymTextPointers: ; 7589f (1d:589f) + dw CinnabarGymText1 + dw CinnabarGymText2 + dw CinnabarGymText3 + dw CinnabarGymText4 + dw CinnabarGymText5 + dw CinnabarGymText6 + dw CinnabarGymText7 + dw CinnabarGymText8 + dw CinnabarGymText9 + dw BlaineBadgeText + dw ReceivedTM38Text + dw TM38NoRoomText + +CinnabarGymScript_758b7: ; 758b7 (1d:58b7) + ld a, [H_DOWNARROWBLINKCNT2] ; $ff8c + ld [$cf13], a + call EngageMapTrainer + call InitBattleEnemyParameters + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld a, [$cf13] + cp $1 + jr z, .asm_758d4 + ld a, $2 + jr .asm_758d6 +.asm_758d4 + ld a, $3 +.asm_758d6 + ld [W_CINNABARGYMCURSCRIPT], a + ld [W_CURMAPSCRIPT], a + jp TextScriptEnd + +CinnabarGymText1: ; 758df (1d:58df) + db $8 + ld a, [$d79a] + bit 1, a + jr z, .asm_d9332 ; 0x758e5 $16 + bit 0, a + jr nz, .asm_3012f ; 0x758e9 $9 + call z, CinnabarGymScript3_75857 + call DisableWaitingAfterTextDisplay + jp TextScriptEnd +.asm_3012f ; 0x758f4 + ld hl, BlaineFireBlastText + call PrintText + jp TextScriptEnd +.asm_d9332 ; 0x758fd + ld hl, BlaineBattleText + call PrintText + ld hl, BlaineEndBattleText + ld de, BlaineEndBattleText + call PreBattleSaveRegisters + ld a, $7 + ld [$d05c], a + jp CinnabarGymScript_758b7 + +BlaineBattleText: ; 75914 (1d:5914) + TX_FAR _BlaineBattleText + db "@" + +BlaineEndBattleText: ; 75919 (1d:5919) + TX_FAR _BlaineEndBattleText + db $11 + db $d + db "@" + +BlaineFireBlastText: ; 75920 (1d:5920) + TX_FAR _BlaineFireBlastText + db "@" + +BlaineBadgeText: ; 75925 (1d:5925) + TX_FAR _BlaineBadgeText + db "@" + +ReceivedTM38Text: ; 7592a (1d:592a) + TX_FAR _ReceivedTM38Text + db $0B + TX_FAR _TM38ExplanationText + db "@" + +TM38NoRoomText: ; 75934 (1d:5934) + TX_FAR _TM38NoRoomText + db "@" + +CinnabarGymText2: ; 75939 (1d:5939) + db $08 ; asm + call CinnabarGymScript_757a0 + ld a, [$d79a] + bit 2, a + jr nz, .asm_46bb4 ; 0x75942 + ld hl, CinnabarGymText_7595f + call PrintText + ld hl, CinnabarGymText_75964 + ld de, CinnabarGymText_75964 ; $5964 XXX + call PreBattleSaveRegisters + jp CinnabarGymScript_758b7 +.asm_46bb4 ; 0x75956 + ld hl, CinnabarGymText_75969 + call PrintText + jp TextScriptEnd + +CinnabarGymText_7595f: ; 7595f (1d:595f) + TX_FAR _CinnabarGymText_7595f + db "@" + +CinnabarGymText_75964: ; 75964 (1d:5964) + TX_FAR _CinnabarGymText_75964 + db "@" + +CinnabarGymText_75969: ; 75969 (1d:5969) + TX_FAR _CinnabarGymText_75969 + db "@" + +CinnabarGymText3: ; 7596e (1d:596e) + db $08 ; asm + call CinnabarGymScript_757a0 + ld a, [$d79a] + bit 3, a + jr nz, .asm_4b406 ; 0x75977 + ld hl, CinnabarGymText_75994 + call PrintText + ld hl, CinnabarGymText_75999 + ld de, CinnabarGymText_75999 ; $5999 XXX + call PreBattleSaveRegisters + jp CinnabarGymScript_758b7 +.asm_4b406 ; 0x7598b + ld hl, CinnabarGymText_7599e + call PrintText + jp TextScriptEnd + +CinnabarGymText_75994: ; 75994 (1d:5994) + TX_FAR _CinnabarGymText_75994 + db "@" + +CinnabarGymText_75999: ; 75999 (1d:5999) + TX_FAR _CinnabarGymText_75999 + db "@" + +CinnabarGymText_7599e: ; 7599e (1d:599e) + TX_FAR _CinnabarGymText_7599e + db "@" + +CinnabarGymText4: ; 759a3 (1d:59a3) + db $08 ; asm + call CinnabarGymScript_757a0 + ld a, [$d79a] + bit 4, a + jr nz, .asm_c0673 ; 0x759ac + ld hl, CinnabarGymText_759c9 + call PrintText + ld hl, CinnabarGymText_759ce + ld de, CinnabarGymText_759ce ; $59ce XXX + call PreBattleSaveRegisters + jp CinnabarGymScript_758b7 +.asm_c0673 ; 0x759c0 + ld hl, CinnabarGymText_759d3 + call PrintText + jp TextScriptEnd + +CinnabarGymText_759c9: ; 759c9 (1d:59c9) + TX_FAR _CinnabarGymText_759c9 + db "@" + +CinnabarGymText_759ce: ; 759ce (1d:59ce) + TX_FAR _CinnabarGymText_759ce + db "@" + +CinnabarGymText_759d3: ; 759d3 (1d:59d3) + TX_FAR _CinnabarGymText_759d3 + db "@" + +CinnabarGymText5: ; 759d8 (1d:59d8) + db $08 ; asm + call CinnabarGymScript_757a0 + ld a, [$d79a] + bit 5, a + jr nz, .asm_5cfd7 ; 0x759e1 + ld hl, CinnabarGymText_759fe + call PrintText + ld hl, CinnabarGymText_75a03 + ld de, CinnabarGymText_75a03 ; $5a03 XXX + call PreBattleSaveRegisters + jp CinnabarGymScript_758b7 +.asm_5cfd7 ; 0x759f5 + ld hl, CinnabarGymText_75a08 + call PrintText + jp TextScriptEnd + +CinnabarGymText_759fe: ; 759fe (1d:59fe) + TX_FAR _CinnabarGymText_759fe + db "@" + +CinnabarGymText_75a03: ; 75a03 (1d:5a03) + TX_FAR _CinnabarGymText_75a03 + db "@" + +CinnabarGymText_75a08: ; 75a08 (1d:5a08) + TX_FAR _CinnabarGymText_75a08 + db "@" + +CinnabarGymText6: ; 75a0d (1d:5a0d) + db $08 ; asm + call CinnabarGymScript_757a0 + ld a, [$d79a] + bit 6, a + jr nz, .asm_776b4 ; 0x75a16 + ld hl, CinnabarGymText_75a33 + call PrintText + ld hl, CinnabarGymText_75a38 + ld de, CinnabarGymText_75a38 + call PreBattleSaveRegisters + jp CinnabarGymScript_758b7 +.asm_776b4 ; 0x75a2a + ld hl, CinnabarGymText_75a3d + call PrintText + jp TextScriptEnd + +CinnabarGymText_75a33: ; 75a33 (1d:5a33) + TX_FAR _CinnabarGymText_75a33 + db "@" + +CinnabarGymText_75a38: ; 75a38 (1d:5a38) + TX_FAR _CinnabarGymText_75a38 + db "@" + +CinnabarGymText_75a3d: ; 75a3d (1d:5a3d) + TX_FAR _CinnabarGymText_75a3d + db "@" + +CinnabarGymText7: ; 75a42 (1d:5a42) + db $08 ; asm + call CinnabarGymScript_757a0 + ld a, [$d79a] + bit 7, a + jr nz, .asm_2f755 ; 0x75a4b + ld hl, CinnabarGymText_75a68 + call PrintText + ld hl, CinnabarGymText_75a6d + ld de, CinnabarGymText_75a6d + call PreBattleSaveRegisters + jp CinnabarGymScript_758b7 +.asm_2f755 ; 0x75a5f + ld hl, CinnabarGymText_75a72 + call PrintText + jp TextScriptEnd + +CinnabarGymText_75a68: ; 75a68 (1d:5a68) + TX_FAR _CinnabarGymText_75a68 + db "@" + +CinnabarGymText_75a6d: ; 75a6d (1d:5a6d) + TX_FAR _CinnabarGymText_75a6d + db "@" + +CinnabarGymText_75a72: ; 75a72 (1d:5a72) + TX_FAR _CinnabarGymText_75a72 + db "@" + +CinnabarGymText8: ; 75a77 (1d:5a77) + db $08 ; asm + call CinnabarGymScript_757a0 + ld a, [$d79b] + bit 0, a + jr nz, .asm_d87be ; 0x75a80 + ld hl, CinnabarGymText_75a9d + call PrintText + ld hl, CinnabarGymText_75aa2 + ld de, CinnabarGymText_75aa2 ; $5aa2 XXX + call PreBattleSaveRegisters + jp CinnabarGymScript_758b7 +.asm_d87be ; 0x75a94 + ld hl, CinnabarGymText_75aa7 + call PrintText + jp TextScriptEnd + +CinnabarGymText_75a9d: ; 75a9d (1d:5a9d) + TX_FAR _CinnabarGymText_75a9d + db "@" + +CinnabarGymText_75aa2: ; 75aa2 (1d:5aa2) + TX_FAR _CinnabarGymText_75aa2 + db "@" + +CinnabarGymText_75aa7: ; 75aa7 (1d:5aa7) + TX_FAR _CinnabarGymText_75aa7 + db "@" + +CinnabarGymText9: ; 75aac (1d:5aac) + db $08 ; asm + ld a, [$d79a] + bit 1, a + jr nz, .asm_627d9 ; 0x75ab2 + ld hl, CinnabarGymText_75ac2 + jr .asm_0b11d ; 0x75ab7 +.asm_627d9 ; 0x75ab9 + ld hl, CinnabarGymText_75ac7 +.asm_0b11d ; 0x75abc + call PrintText + jp TextScriptEnd + +CinnabarGymText_75ac2: ; 75ac2 (1d:5ac2) + TX_FAR _CinnabarGymText_75ac2 + db "@" + +CinnabarGymText_75ac7: ; 75ac7 (1d:5ac7) + TX_FAR _CinnabarGymText_75ac7 + db "@" diff --git a/scripts/cinnabarisland.asm b/scripts/cinnabarisland.asm new file mode 100755 index 00000000..ab77926a --- /dev/null +++ b/scripts/cinnabarisland.asm @@ -0,0 +1,87 @@ +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 + +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 + +CinnabarIslandScript1: ; 1ca73 (7:4a73) + ld a, [$cd38] + and a + ret nz + call Delay3 + ld a, $0 + ld [W_CINNABARISLANDCURSCRIPT], a + ret + +CinnabarIslandTextPointers: ; 1ca81 (7:4a81) + dw CinnabarIslandText1 + dw CinnabarIslandText2 + dw CinnabarIslandText3 + dw MartSignText + dw PokeCenterSignText + dw CinnabarIslandText6 + dw CinnabarIslandText7 + dw CinnabarIslandText8 + +CinnabarIslandText8: ; 1ca91 (7:4a91) + TX_FAR _CinnabarIslandText8 + db "@" + +CinnabarIslandText1: ; 1ca96 (7:4a96) + TX_FAR _CinnabarIslandText1 + db "@" + +CinnabarIslandText2: ; 1ca9b (7:4a9b) + TX_FAR _CinnabarIslandText2 + db "@" + +CinnabarIslandText3: ; 1caa0 (7:4aa0) + TX_FAR _CinnabarIslandText3 + db "@" + +CinnabarIslandText6: ; 1caa5 (7:4aa5) + TX_FAR _CinnabarIslandText6 + db "@" + +CinnabarIslandText7: ; 1caaa (7:4aaa) + TX_FAR _CinnabarIslandText7 + db "@" diff --git a/scripts/cinnabarmart.asm b/scripts/cinnabarmart.asm new file mode 100755 index 00000000..2abd7b67 --- /dev/null +++ b/scripts/cinnabarmart.asm @@ -0,0 +1,15 @@ +CinnabarMartScript: ; 75e7e (1d:5e7e) + jp EnableAutoTextBoxDrawing + +CinnabarMartTextPointers: ; 75e81 (1d:5e81) + dw CinnabarMartText1 + dw CinnabarMartText2 + dw CinnabarMartText3 + +CinnabarMartText2: ; 75e87 (1d:5e87) + TX_FAR _CinnabarMartText2 + db "@" + +CinnabarMartText3: ; 75e8c (1d:5e8c) + TX_FAR _CinnabarMartText3 + db "@" diff --git a/scripts/cinnabarpokecenter.asm b/scripts/cinnabarpokecenter.asm new file mode 100755 index 00000000..a2a41592 --- /dev/null +++ b/scripts/cinnabarpokecenter.asm @@ -0,0 +1,23 @@ +CinnabarPokecenterScript: ; 75e2c (1d:5e2c) + call Func_22fa + jp EnableAutoTextBoxDrawing + +CinnabarPokecenterTextPointers: ; 75e32 (1d:5e32) + dw CinnabarPokecenterText1 + dw CinnabarPokecenterText2 + dw CinnabarPokecenterText3 + dw CinnabarPokecenterText4 + +CinnabarPokecenterText1: ; 75e3a (1d:5e3a) + db $ff + +CinnabarPokecenterText2: ; 75e3b (1d:5e3b) + TX_FAR _CinnabarPokecenterText1 + db "@" + +CinnabarPokecenterText3: ; 75e40 (1d:5e40) + TX_FAR _CinnabarPokecenterText3 + db "@" + +CinnabarPokecenterText4: ; 75e45 (1d:5e45) + db $f6 diff --git a/scripts/copycatshouse1f.asm b/scripts/copycatshouse1f.asm new file mode 100755 index 00000000..230a3ca3 --- /dev/null +++ b/scripts/copycatshouse1f.asm @@ -0,0 +1,22 @@ +CopycatsHouse1FScript: ; 75ec3 (1d:5ec3) + jp EnableAutoTextBoxDrawing + +CopycatsHouse1FTextPointers: ; 75ec6 (1d:5ec6) + dw CopycatsHouse1FText1 + dw CopycatsHouse1FText2 + dw CopycatsHouse1FText3 + +CopycatsHouse1FText1: ; 75ecc (1d:5ecc) + TX_FAR _CopycatsHouse1FText1 + db "@" + +CopycatsHouse1FText2: ; 75ed1 (1d:5ed1) + TX_FAR _CopycatsHouse1FText2 + db "@" + +CopycatsHouse1FText3: ; 75ed6 (1d:5ed6) + TX_FAR _CopycatsHouse1FText3 + db $8 + ld a, CHANSEY + call PlayCry + jp TextScriptEnd diff --git a/scripts/copycatshouse2f.asm b/scripts/copycatshouse2f.asm new file mode 100755 index 00000000..3dd64a3a --- /dev/null +++ b/scripts/copycatshouse2f.asm @@ -0,0 +1,104 @@ +CopycatsHouse2FScript: ; 5cc71 (17:4c71) + jp EnableAutoTextBoxDrawing + +CopycatsHouse2FTextPointers: ; 5cc74 (17:4c74) + dw CopycatsHouse2FText1 + dw CopycatsHouse2FText2 + dw CopycatsHouse2FText3 + dw CopycatsHouse2FText4 + dw CopycatsHouse2FText5 + dw CopycatsHouse2FText6 + dw CopycatsHouse2FText7 + +CopycatsHouse2FText1: ; 5cc82 (17:4c82) + db $08 ; asm + ld a, [$d7af] + bit 0, a + jr nz, .asm_7ccf3 ; 0x5cc88 + ld a, $1 + ld [$cc3c], a + ld hl, CopycatsHouse2FText_5ccd4 + call PrintText + ld b, POKE_DOLL + call IsItemInBag + jr z, .asm_62ecd ; 0x5cc9a + ld hl, TM31PreReceiveText + call PrintText + ld bc, (TM_31 << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, ReceivedTM31Text + call PrintText + ld a, POKE_DOLL + ldh [$db], a + ld b, BANK(RemoveItemByID) + ld hl, RemoveItemByID + call Bankswitch + ld hl, $d7af + set 0, [hl] + jr .asm_62ecd ; 0x5ccc1 +.BagFull + ld hl, TM31NoRoomText + call PrintText + jr .asm_62ecd ; 0x5ccc9 +.asm_7ccf3 ; 0x5cccb + ld hl, TM31ExplanationText2 + call PrintText +.asm_62ecd ; 0x5ccd1 + jp TextScriptEnd + +CopycatsHouse2FText_5ccd4: ; 5ccd4 (17:4cd4) + TX_FAR _CopycatsHouse2FText_5ccd4 + db "@" + +TM31PreReceiveText: ; 5ccd9 (17:4cd9) + TX_FAR _TM31PreReceiveText + db "@" + +ReceivedTM31Text: ; 5ccde (17:4cde) + TX_FAR _ReceivedTM31Text + db $0B +TM31ExplanationText1: ; 5cce3 (17:4ce3) + TX_FAR _TM31ExplanationText1 + db $d, "@" + +TM31ExplanationText2: ; 5cce9 (17:4ce9) + TX_FAR _TM31ExplanationText2 + db "@" + +TM31NoRoomText: ; 5ccee (17:4cee) + TX_FAR _TM31NoRoomText + db $d, "@" + +CopycatsHouse2FText2: ; 5ccf4 (17:4cf4) + TX_FAR _CopycatsHouse2FText2 + db "@" + +CopycatsHouse2FText5: ; 5ccf9 (17:4cf9) +CopycatsHouse2FText4: ; 5ccf9 (17:4cf9) +CopycatsHouse2FText3: ; 5ccf9 (17:4cf9) + TX_FAR _CopycatsHouse2FText3 + db "@" + +CopycatsHouse2FText6: ; 5ccfe (17:4cfe) + TX_FAR _CopycatsHouse2FText6 + db "@" + +CopycatsHouse2FText7: ; 5cd03 (17:4d03) + db $08 ; asm + ld a, [$c109] + cp $4 + ld hl, CopycatsHouse2FText_5cd1c + jr nz, .asm_399a4 ; 0x5cd0c + ld hl, CopycatsHouse2FText_5cd17 +.asm_399a4 ; 0x5cd11 + call PrintText + jp TextScriptEnd + +CopycatsHouse2FText_5cd17: ; 5cd17 (17:4d17) + TX_FAR _CopycatsHouse2FText_5cd17 + db "@" + +CopycatsHouse2FText_5cd1c: ; 5cd1c (17:4d1c) + TX_FAR _CopycatsHouse2FText_5cd1c + db "@" diff --git a/scripts/daycarem.asm b/scripts/daycarem.asm new file mode 100755 index 00000000..c8d6ffaf --- /dev/null +++ b/scripts/daycarem.asm @@ -0,0 +1,274 @@ +DayCareMScript: ; 5624f (15:624f) + jp EnableAutoTextBoxDrawing + +DayCareMTextPointers: ; 56252 (15:6252) + dw DayCareMText1 + +DayCareMText1: ; 56254 (15:6254) + db $8 + call SaveScreenTilesToBuffer2 + ld a, [W_DAYCARE_IN_USE] + and a + jp nz, DayCareMScript_562e1 + ld hl, DayCareMText_5640f + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + ld hl, DayCareMText_5643b + jp nz, DayCareMScript_56409 + ld a, [$d163] + dec a + ld hl, DayCareMText_56445 + jp z, DayCareMScript_56409 + ld hl, DayCareMText_56414 + call PrintText + xor a + ld [$cfcb], a + ld [$d07d], a + ld [$cc35], a + call DisplayPartyMenu + push af + call GBPalWhiteOutWithDelay3 + call Func_3dbe + call LoadGBPal + pop af + ld hl, DayCareMText_56437 + jp c, DayCareMScript_56409 + ld hl, Func_2171b + ld b, BANK(Func_2171b) + call Bankswitch + ld hl, DayCareMText_5644a + jp c, DayCareMScript_56409 + xor a + ld [$cc2b], a + ld a, [wWhichPokemon] + ld hl, $d2b5 + call GetPartyMonName + ld hl, DayCareMText_56419 + call PrintText + ld a, $1 + ld [W_DAYCARE_IN_USE], a + ld a, $3 + ld [$cf95], a + call Func_3a68 + xor a + ld [$cf95], a + call RemovePokemon + ld a, [$cf91] + call PlayCry + ld hl, DayCareMText_5641e + jp DayCareMScript_56409 + +DayCareMScript_562e1: ; 562e1 (15:62e1) + xor a + ld hl, W_DAYCAREMONNAME + call GetPartyMonName + ld a, $3 + ld [$cc49], a + call LoadMonData + ld hl, Func_58f43 + ld b, BANK(Func_58f43) + call Bankswitch + ld a, d + cp $64 + jr c, .asm_56315 + ld d, $64 + ld hl, CalcExperience + ld b, BANK(CalcExperience) + call Bankswitch + ld hl, $da6d + ld a, [H_NUMTOPRINT] + ld [hli], a + ld a, [$ff97] + ld [hli], a + ld a, [$ff98] + ld [hl], a + ld d, $64 + +.asm_56315 + xor a + ld [wTrainerEngageDistance], a + ld hl, $da62 + ld a, [hl] + ld [wTrainerSpriteOffset], a + cp d + ld [hl], d + ld hl, DayCareMText_56432 + jr z, .asm_56333 + ld a, [wTrainerSpriteOffset] + ld b, a + ld a, d + sub b + ld [wTrainerEngageDistance], a + ld hl, DayCareMText_56423 + +.asm_56333 + call PrintText + ld a, [W_NUMINPARTY] + cp $6 + ld hl, DayCareMText_56440 + jp z, .asm_56403 + ld de, wTrainerFacingDirection + xor a + ld [de], a + inc de + ld [de], a + ld hl, wTrainerScreenX + ld a, $1 + ld [hli], a + ld [hl], $0 + ld a, [wTrainerEngageDistance] + inc a + ld b, a + ld c, $2 +.asm_56357 + push hl + push de + push bc + ld a, $b + call Predef + pop bc + pop de + pop hl + dec b + jr nz, .asm_56357 + ld hl, DayCareMText_56428 + call PrintText + ld a, $13 + ld [$d125], a + call DisplayTextBoxID + call YesNoChoice + ld hl, DayCareMText_56437 + ld a, [wCurrentMenuItem] + and a + jp nz, .asm_56403 + ld hl, wTrainerFacingDirection + ld [$ff9f], a + ld a, [hli] + ld [$ffa0], a + ld a, [hl] + ld [$ffa1], a + call HasEnoughMoney + jr nc, .asm_56396 + ld hl, DayCareMText_56454 + jp .asm_56403 + +.asm_56396 + xor a + ld [W_DAYCARE_IN_USE], a + ld hl, wTrainerEngageDistance + ld [hli], a + inc hl + ld de, $d349 + ld c, $3 + ld a, $c + call Predef + ld a, (SFX_02_5a - SFX_Headers_02) / 3 + call PlaySoundWaitForCurrent + ld a, $13 + ld [$d125], a + call DisplayTextBoxID + ld hl, DayCareMText_5644f + call PrintText + ld a, $2 + ld [$cf95], a + call Func_3a68 + ld a, [W_DAYCAREMONDATA] + ld [$cf91], a + ld a, [W_NUMINPARTY] + dec a + push af + ld bc, $002c + push bc + ld hl, W_PARTYMON1_MOVE1 + call AddNTimes + ld d, h + ld e, l + ld a, $1 + ld [wHPBarMaxHP], a + ld a, $3e + call Predef + pop bc + pop af + ld hl, W_PARTYMON1_HP + call AddNTimes + ld d, h + ld e, l + ld bc, $0021 + add hl, bc + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + ld a, [$cf91] + call PlayCry + ld hl, DayCareMText_5642d + jr DayCareMScript_56409 + +.asm_56403 + ld a, [wTrainerSpriteOffset] + ld [$da62], a + +DayCareMScript_56409: ; 56409 (15:6409) + call PrintText + jp TextScriptEnd + +DayCareMText_5640f: ; 5640f (15:640f) + TX_FAR _DayCareMText_5640f + db "@" + +DayCareMText_56414: ; 56414 (15:6414) + TX_FAR _DayCareMText_56414 + db "@" + +DayCareMText_56419: ; 56419 (15:6419) + TX_FAR _DayCareMText_56419 + db "@" + +DayCareMText_5641e: ; 5641e (15:641e) + TX_FAR _DayCareMText_5641e + db "@" + +DayCareMText_56423: ; 56423 (15:6423) + TX_FAR _DayCareMText_56423 + db "@" + +DayCareMText_56428: ; 56428 (15:6428) + TX_FAR _DayCareMText_56428 + db "@" + +DayCareMText_5642d: ; 5642d (15:642d) + TX_FAR _DayCareMText_5642d + db "@" + +DayCareMText_56432: ; 56432 (15:6432) + TX_FAR _DayCareMText_56432 + db "@" + +DayCareMText_56437: ; 56437 (15:6437) + TX_FAR _DayCareMText_56437 ; 0x8c000 +DayCareMText_5643b: ; 5643b (15:643b) + TX_FAR _DayCareMText_5643b ; 0x8c013 + db "@" + +DayCareMText_56440: ; 56440 (15:6440) + TX_FAR _DayCareMText_56440 + db "@" + +DayCareMText_56445: ; 56445 (15:6445) + TX_FAR _DayCareMText_56445 + db "@" + +DayCareMText_5644a: ; 5644a (15:644a) + TX_FAR _DayCareMText_5644a + db "@" + +DayCareMText_5644f: ; 5644f (15:644f) + TX_FAR _DayCareMText_5644f + db "@" + +DayCareMText_56454: ; 56454 (15:6454) + TX_FAR _DayCareMText_56454 + db "@" diff --git a/scripts/diglettscave.asm b/scripts/diglettscave.asm new file mode 100755 index 00000000..efbf9713 --- /dev/null +++ b/scripts/diglettscave.asm @@ -0,0 +1,5 @@ +DiglettsCaveScript: ; 61f6e (18:5f6e) + jp EnableAutoTextBoxDrawing + +DiglettsCaveTextPointers: ; 61f71 (18:5f71) + db "@" diff --git a/scripts/diglettscaveroute11.asm b/scripts/diglettscaveroute11.asm new file mode 100755 index 00000000..89c235dc --- /dev/null +++ b/scripts/diglettscaveroute11.asm @@ -0,0 +1,12 @@ +DiglettsCaveEntranceRoute11Script: ; 1e5ba (7:65ba) + call EnableAutoTextBoxDrawing + ld a, $16 + ld [$d365], a + ret + +DiglettsCaveEntranceRoute11TextPointers: ; 1e5c3 (7:65c3) + dw DiglettsCaveEntranceRoute11Text1 + +DiglettsCaveEntranceRoute11Text1: ; 1e5c5 (7:65c5) + TX_FAR _DiglettsCaveEntRoute11Text1 + db "@" diff --git a/scripts/diglettscaveroute2.asm b/scripts/diglettscaveroute2.asm new file mode 100755 index 00000000..93080be1 --- /dev/null +++ b/scripts/diglettscaveroute2.asm @@ -0,0 +1,11 @@ +DiglettsCaveRoute2Script: ; 1deb0 (7:5eb0) + ld a, $d + ld [$d365], a + jp EnableAutoTextBoxDrawing + +DiglettsCaveRoute2TextPointers: ; 1deb8 (7:5eb8) + dw DiglettsCaveRoute2Text1 + +DiglettsCaveRoute2Text1: ; 1deba (7:5eba) + TX_FAR _DiglettsCaveRoute2Text1 + db "@" diff --git a/scripts/fanclub.asm b/scripts/fanclub.asm new file mode 100755 index 00000000..8ea8d36d --- /dev/null +++ b/scripts/fanclub.asm @@ -0,0 +1,181 @@ +FanClubScript: ; 59b70 (16:5b70) + jp EnableAutoTextBoxDrawing + +FanClubBikeInBag: +; check if any bike paraphernalia in bag + ld a, [$d771] + bit 1, a ; got bike voucher? + ret nz + ld b, BICYCLE + call IsItemInBag + ret nz + ld b, BIKE_VOUCHER + jp IsItemInBag + +FanClubTextPointers: ; 59b84 (16:5b84) + dw FanClubText1 + dw FanClubText2 + dw FanClubText3 + dw FanClubText4 + dw FanClubText5 + dw FanClubText6 + dw FanClubText7 + dw FanClubText8 + +FanClubText1: +; pikachu fan + db $08 ; asm + ld a, [$d771] + bit 7, a + jr nz, .mineisbetter + ld hl, .normaltext + call PrintText + ld hl, $d771 + set 6, [hl] + jr .done +.mineisbetter + ld hl, .bettertext + call PrintText + ld hl, $d771 + res 7, [hl] +.done + jp TextScriptEnd + +.normaltext + TX_FAR PikachuFanText + db "@" + +.bettertext + TX_FAR PikachuFanBetterText + db "@" + +FanClubText2: +; seel fan + db $08 ; asm + ld a, [$d771] + bit 6, a + jr nz, .mineisbetter + ld hl, .normaltext + call PrintText + ld hl, $d771 + set 7, [hl] + jr .done +.mineisbetter + ld hl, .bettertext + call PrintText + ld hl, $d771 + res 6, [hl] +.done + jp TextScriptEnd + +.normaltext + TX_FAR SeelFanText + db "@" + +.bettertext + TX_FAR SeelFanBetterText + db "@" + +FanClubText3: +; pikachu + db $8 + ld hl, .text + call PrintText + ld a, PIKACHU + call PlayCry + call WaitForSoundToFinish + jp TextScriptEnd + +.text + TX_FAR FanClubPikachuText + db "@" + +FanClubText4: +; seel + db $08 ; asm + ld hl, .text + call PrintText + ld a, SEEL + call PlayCry + call WaitForSoundToFinish + jp TextScriptEnd + +.text + TX_FAR FanClubSeelText + db "@" + +FanClubText5: +; chair + db $08 ; asm + call FanClubBikeInBag + jr nz, .nothingleft + + ld hl, .meetchairtext + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + jr nz, .nothanks + + ; tell the story + ld hl, .storytext + call PrintText + ld bc, (BIKE_VOUCHER << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, .receivedvouchertext + call PrintText + ld hl, $d771 + set 1, [hl] + jr .done +.BagFull + ld hl, .bagfulltext + call PrintText + jr .done +.nothanks + ld hl, .nostorytext + call PrintText + jr .done +.nothingleft + ld hl, .finaltext + call PrintText +.done + jp TextScriptEnd + +.meetchairtext + TX_FAR FanClubMeetChairText + db "@" + +.storytext + TX_FAR FanClubChairStoryText + db "@" + +.receivedvouchertext + TX_FAR ReceivedBikeVoucherText + db $11 + TX_FAR ExplainBikeVoucherText + db "@" + +.nostorytext + TX_FAR FanClubNoStoryText + db "@" + +.finaltext + TX_FAR FanClubChairFinalText + db "@" + +.bagfulltext + TX_FAR FanClubBagFullText + db "@" + +FanClubText6: ; 59c88 (16:5c88) + TX_FAR _FanClubText6 + db "@" + +FanClubText7: ; 59c8d (16:5c8d) + TX_FAR _FanClubText7 + db "@" + +FanClubText8: ; 59c92 (16:5c92) + TX_FAR _FanClubText8 + db "@" diff --git a/scripts/fightingdojo.asm b/scripts/fightingdojo.asm new file mode 100755 index 00000000..4dc7fe7b --- /dev/null +++ b/scripts/fightingdojo.asm @@ -0,0 +1,337 @@ +FightingDojoScript: ; 5cd5d (17:4d5d) + call EnableAutoTextBoxDrawing + ld hl, FightingDojoTrainerHeaders + ld de, FightingDojoScriptPointers + ld a, [W_FIGHTINGDOJOCURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_FIGHTINGDOJOCURSCRIPT], a + ret + +FightingDojoScript_5cd70: ; 5cd70 (17:4d70) + xor a + ld [$cd6b], a + ld [$d642], a + ld [$da39], a + ret + +FightingDojoScriptPointers: ; 5cd7b (17:4d7b) + dw FightingDojoScript1 + dw Func_324c + dw EndTrainerBattle + dw FightingDojoScript3 + +FightingDojoScript1: ; 5cd83 (17:4d83) + ld a, [$d7b1] + bit 0, a + ret nz + call CheckFightingMapTrainers + ld a, [wTrainerHeaderFlagBit] + and a + ret nz + ld a, [$d7b1] + bit 1, a + ret nz + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld [$cf0d], a + ld a, [W_YCOORD] + cp $3 + ret nz + ld a, [W_XCOORD] + cp $4 + ret nz + ld a, $1 + ld [$cf0d], a + ld a, $1 + ld [$d528], a + ld a, $1 + ld [$ff8c], a + ld a, $8 + ld [$ff8d], a + call Func_34a6 + ld a, $1 + ld [$ff8c], a + call DisplayTextID + ret + +FightingDojoScript3: ; 5cdc6 (17:4dc6) + ld a, [$d057] + cp $ff + jp z, FightingDojoScript_5cd70 + ld a, [$cf0d] + and a + jr z, .asm_5cde4 + ld a, $1 + ld [$d528], a + ld a, $1 + ld [$ff8c], a + ld a, $8 + ld [$ff8d], a + call Func_34a6 + +.asm_5cde4 + ld a, $f0 + ld [$cd6b], a + ld a, [$d7b1] + or $3e + ld [$d7b1], a + ld a, $8 + ld [$ff8c], a + call DisplayTextID + xor a + ld [$cd6b], a + ld [$d642], a + ld [$da39], a + ret + +FightingDojoTextPointers: ; 5ce03 (17:4e03) + dw FightingDojoText1 + dw FightingDojoText2 + dw FightingDojoText3 + dw FightingDojoText4 + dw FightingDojoText5 + dw FightingDojoText6 + dw FightingDojoText7 + dw FightingDojoText8 + +FightingDojoTrainerHeaders: ; 5ce13 (17:4e13) +FightingDojoTrainerHeader0: ; 5ce13 (17:4e13) + db $2 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7b1 ; flag's byte + dw FightingDojoBattleText1 ; 0x4eac TextBeforeBattle + dw FightingDojoAfterBattleText1 ; 0x4eb6 TextAfterBattle + dw FightingDojoEndBattleText1 ; 0x4eb1 TextEndBattle + dw FightingDojoEndBattleText1 ; 0x4eb1 TextEndBattle + +FightingDojoTrainerHeader1: ; 5ce1f (17:4e1f) + db $3 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7b1 ; flag's byte + dw FightingDojoBattleText2 ; 0x4ec5 TextBeforeBattle + dw FightingDojoAfterBattleText2 ; 0x4ecf TextAfterBattle + dw FightingDojoEndBattleText2 ; 0x4eca TextEndBattle + dw FightingDojoEndBattleText2 ; 0x4eca TextEndBattle + +FightingDojoTrainerHeader2: ; 5ce2b (17:4e2b) + db $4 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7b1 ; flag's byte + dw FightingDojoBattleText3 ; 0x4ede TextBeforeBattle + dw FightingDojoAfterBattleText3 ; 0x4ee8 TextAfterBattle + dw FightingDojoEndBattleText3 ; 0x4ee3 TextEndBattle + dw FightingDojoEndBattleText3 ; 0x4ee3 TextEndBattle + +FightingDojoTrainerHeader3: ; 5ce37 (17:4e37) + db $5 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7b1 ; flag's byte + dw FightingDojoBattleText4 ; 0x4ef7 TextBeforeBattle + dw FightingDojoAfterBattleText4 ; 0x4f01 TextAfterBattle + dw FightingDojoEndBattleText4 ; 0x4efc TextEndBattle + dw FightingDojoEndBattleText4 ; 0x4efc TextEndBattle + + db $ff + +FightingDojoText1: ; 5ce44 (17:4e44) + db $08 ; asm + ld a, [$d7b1] + bit 0, a + jp nz, .continue1 + bit 1, a + jp nz, .continue2 + ld hl, FightingDojoText_5ce8e + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, FightingDojoText_5ce93 + ld de, FightingDojoText_5ce93 + call PreBattleSaveRegisters + ldh a, [$8c] + ld [$cf13], a + call EngageMapTrainer + call InitBattleEnemyParameters + ld a, $3 + ld [W_FIGHTINGDOJOCURSCRIPT], a + ld [W_CURMAPSCRIPT], a + jr .asm_9dba4 ; 0x5ce7b +.continue1 ; 0x5ce7d + ld hl, FightingDojoText_5ce9d + call PrintText + jr .asm_9dba4 ; 0x5ce83 +.continue2 ; 0x5ce85f + ld hl, FightingDojoText8 + call PrintText +.asm_9dba4 ; 0x5ce8b + jp TextScriptEnd + +FightingDojoText_5ce8e: ; 5ce8e (17:4e8e) + TX_FAR _FightingDojoText_5ce8e + db "@" + +FightingDojoText_5ce93: ; 5ce93 (17:4e93) + TX_FAR _FightingDojoText_5ce93 + db "@" + +FightingDojoText8: ; 5ce98 (17:4e98) + TX_FAR _FightingDojoText_5ce98 + db "@" + +FightingDojoText_5ce9d: ; 5ce9d (17:4e9d) + TX_FAR _FightingDojoText_5ce9d + db "@" + +FightingDojoText2: ; 5cea2 (17:4ea2) + db $08 ; asm + ld hl, FightingDojoTrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +FightingDojoBattleText1: ; 5ceac (17:4eac) + TX_FAR _FightingDojoBattleText1 + db "@" + +FightingDojoEndBattleText1: ; 5ceb1 (17:4eb1) + TX_FAR _FightingDojoEndBattleText1 + db "@" + +FightingDojoAfterBattleText1: ; 5ceb6 (17:4eb6) + TX_FAR _FightingDojoAfterBattleText1 + db "@" + +FightingDojoText3: ; 5cebb (17:4ebb) + db $08 ; asm + ld hl, FightingDojoTrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +FightingDojoBattleText2: ; 5cec5 (17:4ec5) + TX_FAR _FightingDojoBattleText2 + db "@" + +FightingDojoEndBattleText2: ; 5ceca (17:4eca) + TX_FAR _FightingDojoEndBattleText2 + db "@" + +FightingDojoAfterBattleText2: ; 5cecf (17:4ecf) + TX_FAR _FightingDojoAfterBattleText2 + db "@" + +FightingDojoText4: ; 5ced4 (17:4ed4) + db $08 ; asm + ld hl, FightingDojoTrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +FightingDojoBattleText3: ; 5cede (17:4ede) + TX_FAR _FightingDojoBattleText3 + db "@" + +FightingDojoEndBattleText3: ; 5cee3 (17:4ee3) + TX_FAR _FightingDojoEndBattleText3 + db "@" + +FightingDojoAfterBattleText3: ; 5cee8 (17:4ee8) + TX_FAR _FightingDojoAfterBattleText3 + db "@" + +FightingDojoText5: ; 5ceed (17:4eed) + db $08 ; asm + ld hl, FightingDojoTrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +FightingDojoBattleText4: ; 5cef7 (17:4ef7) + TX_FAR _FightingDojoBattleText4 + db "@" + +FightingDojoEndBattleText4: ; 5cefc (17:4efc) + TX_FAR _FightingDojoEndBattleText4 + db "@" + +FightingDojoAfterBattleText4: ; 5cf01 (17:4f01) + TX_FAR _FightingDojoAfterBattleText4 + db "@" + +FightingDojoText6: ; 5cf06 (17:4f06) +; Hitmonlee Poké Ball + db $08 ; asm + ld a, [$d7b1] + and %11000000 + jr z, .GetMon + ld hl, OtherHitmonText + call PrintText + jr .done +.GetMon + ld a, HITMONLEE + call DisplayPokedex + ld hl, WantHitmonleeText + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + jr nz, .done + ld a, [$cf91] + ld b, a + ld c, 30 + call GivePokemon + jr nc, .done + + ; once Poké Ball is taken, hide sprite + ld a, $4a + ld [$cc4d], a + ld a, $11 + call Predef + ld hl, $d7b1 + set 6, [hl] + set 0, [hl] +.done + jp TextScriptEnd + +WantHitmonleeText: ; 5cf49 (17:4f49) + TX_FAR _WantHitmonleeText + db "@" + +FightingDojoText7: ; 5cf4e (17:4f4e) +; Hitmonchan Poké Ball + db $08 ; asm + ld a, [$d7b1] + and %11000000 + jr z, .GetMon + ld hl, OtherHitmonText + call PrintText + jr .done +.GetMon + ld a, HITMONCHAN + call DisplayPokedex + ld hl, WantHitmonchanText + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + jr nz, .done + ld a, [$cf91] + ld b, a + ld c,30 + call GivePokemon + jr nc, .done + ld hl, $d7b1 + set 7, [hl] + set 0, [hl] + + ; once Poké Ball is taken, hide sprite + ld a, $4b + ld [$cc4d], a + ld a, $11 + call Predef +.done + jp TextScriptEnd + +WantHitmonchanText: ; 5cf91 (17:4f91) + TX_FAR _WantHitmonchanText + db "@" + +OtherHitmonText: ; 5cf96 (17:4f96) + TX_FAR _OtherHitmonText + db "@" diff --git a/scripts/fuchsiacity.asm b/scripts/fuchsiacity.asm new file mode 100755 index 00000000..9014dffe --- /dev/null +++ b/scripts/fuchsiacity.asm @@ -0,0 +1,170 @@ +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, FuchsiaCityText_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 "@" + +FuchsiaCityText_19b2a: ; 19b2a (6:5b2a) + TX_FAR _FuchsiaCityText_19b2a + db "@" diff --git a/scripts/fuchsiagym.asm b/scripts/fuchsiagym.asm new file mode 100755 index 00000000..789c2367 --- /dev/null +++ b/scripts/fuchsiagym.asm @@ -0,0 +1,336 @@ +FuchsiaGymScript: ; 7543d (1d:543d) + call FuchsiaGymScript_75453 + call EnableAutoTextBoxDrawing + ld hl, FuchsiaGymTrainerHeaders + ld de, FuchsiaGymScriptPointers + ld a, [W_FUCHSIAGYMCURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_FUCHSIAGYMCURSCRIPT], a + ret + +FuchsiaGymScript_75453: ; 75453 (1d:5453) + ld hl, $D126 + bit 6, [hl] + res 6, [hl] + ret z + ld hl, Gym5CityName + ld de, Gym5LeaderName + call LoadGymLeaderAndCityName + ret + +Gym5CityName: ; 75465 (1d:5465) + db "FUCHSIA CITY@" +Gym5LeaderName: ; 75472 (1d:5472) + db "KOGA@" + +FuchsiaGymScript_75477: ; 75477 (1d:5477) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_FUCHSIAGYMCURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +FuchsiaGymScriptPointers: ; 75482 (1d:5482) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + dw FuchsiaGymScript3 + +FuchsiaGymScript3: ; 7548a (1d:548a) + ld a, [W_ISINBATTLE] ; $d057 + cp $ff + jp z, FuchsiaGymScript_75477 + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a +FuchsiaGymScript3_75497: ; 75497 (1d:5497) + ld a, $9 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld hl, $d792 + set 1, [hl] + ld bc, (TM_06 << 8) | 1 + call GiveItem + jr nc, .BagFull + ld a, $a + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld hl, $d792 + set 0, [hl] + jr .asm_754c0 +.BagFull + ld a, $b + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID +.asm_754c0 + ld hl, W_OBTAINEDBADGES + set 4, [hl] + ld hl, $d72a + set 4, [hl] + + ; deactivate gym trainers + ld a, [$d792] + or %11111100 + ld [$d792], a + + jp FuchsiaGymScript_75477 + +FuchsiaGymTextPointers: ; 754d5 (1d:54d5) + dw FuchsiaGymText1 + dw FuchsiaGymText2 + dw FuchsiaGymText3 + dw FuchsiaGymText4 + dw FuchsiaGymText5 + dw FuchsiaGymText6 + dw FuchsiaGymText7 + dw FuchsiaGymText8 + dw FuchsiaGymText9 + dw FuchsiaGymText10 + dw FuchsiaGymText11 + +FuchsiaGymTrainerHeaders: ; 754eb (1d:54eb) +FuchsiaGymTrainerHeader0: ; 754eb (1d:54eb) + db $2 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d792 ; flag's byte + dw FuchsiaGymBattleText1 ; 0x55ae TextBeforeBattle + dw FuchsiaGymAfterBattleText1 ; 0x55b8 TextAfterBattle + dw FuchsiaGymEndBattleText1 ; 0x55b3 TextEndBattle + dw FuchsiaGymEndBattleText1 ; 0x55b3 TextEndBattle + +FuchsiaGymTrainerHeader2: ; 754f7 (1d:54f7) + db $3 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d792 ; flag's byte + dw FuchsiaGymBattleText2 ; 0x55c7 TextBeforeBattle + dw FuchsiaGymAfterBattleText2 ; 0x55d1 TextAfterBattle + dw FuchsiaGymEndBattleText2 ; 0x55cc TextEndBattle + dw FuchsiaGymEndBattleText2 ; 0x55cc TextEndBattle + +FuchsiaGymTrainerHeader3: ; 75503 (1d:5503) + db $4 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d792 ; flag's byte + dw FuchsiaGymBattleText3 ; 0x55e0 TextBeforeBattle + dw FuchsiaGymAfterBattleText3 ; 0x55ea TextAfterBattle + dw FuchsiaGymEndBattleText3 ; 0x55e5 TextEndBattle + dw FuchsiaGymEndBattleText3 ; 0x55e5 TextEndBattle + +FuchsiaGymTrainerHeader4: ; 7550f (1d:550f) + db $5 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d792 ; flag's byte + dw FuchsiaGymBattleText4 ; 0x55f9 TextBeforeBattle + dw FuchsiaGymAfterBattleText4 ; 0x5603 TextAfterBattle + dw FuchsiaGymEndBattleText4 ; 0x55fe TextEndBattle + dw FuchsiaGymEndBattleText4 ; 0x55fe TextEndBattle + +FuchsiaGymTrainerHeader5: ; 7551b (1d:551b) + db $6 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d792 ; flag's byte + dw FuchsiaGymBattleText5 ; 0x5612 TextBeforeBattle + dw FuchsiaGymAfterBattleText5 ; 0x561c TextAfterBattle + dw FuchsiaGymEndBattleText5 ; 0x5617 TextEndBattle + dw FuchsiaGymEndBattleText5 ; 0x5617 TextEndBattle + +FuchsiaGymTrainerHeader6: ; 75527 (1d:5527) + db $7 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d792 ; flag's byte + dw FuchsiaGymBattleText6 ; 0x562b TextBeforeBattle + dw FuchsiaGymAfterBattleText6 ; 0x5635 TextAfterBattle + dw FuchsiaGymEndBattleText6 ; 0x5630 TextEndBattle + dw FuchsiaGymEndBattleText6 ; 0x5630 TextEndBattle + + db $ff + +FuchsiaGymText1: ; 75534 (1d:5534) + db $08 ; asm + ld a, [$d792] + bit 1, a + jr z, .asm_181b6 ; 0x7553a + bit 0, a + jr nz, .asm_adc3b ; 0x7553e + call z, FuchsiaGymScript3_75497 + call DisableWaitingAfterTextDisplay + jr .asm_e84c6 ; 0x75546 +.asm_adc3b ; 0x75548 + ld hl, UnnamedText_7558b + call PrintText + jr .asm_e84c6 ; 0x7554e +.asm_181b6 ; 0x75550 + ld hl, UnnamedText_75581 + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, UnnamedText_75586 + ld de, UnnamedText_75586 + call PreBattleSaveRegisters + ldh a, [$8c] + ld [$cf13], a + call EngageMapTrainer + call InitBattleEnemyParameters + ld a, $5 + ld [$d05c], a + xor a + ldh [$b4], a + ld a, $3 + ld [W_FUCHSIAGYMCURSCRIPT], a +.asm_e84c6 ; 0x7557e + jp TextScriptEnd + +UnnamedText_75581: ; 75581 (1d:5581) + TX_FAR _UnnamedText_75581 + db "@" + +UnnamedText_75586: ; 75586 (1d:5586) + TX_FAR _UnnamedText_75586 + db "@" + +UnnamedText_7558b: ; 7558b (1d:558b) + TX_FAR _UnnamedText_7558b + db "@" + +FuchsiaGymText9: ; 75590 (1d:5590) + TX_FAR _UnnamedText_75590 + db "@" + +FuchsiaGymText10: ; 75595 (1d:5595) + TX_FAR _ReceivedTM06Text + db $11 + +TM06ExplanationText: ; 7559a (1d:559a) + TX_FAR _TM06ExplanationText + db "@" + +FuchsiaGymText11: ; 7559f (1d:559f) + TX_FAR _TM06NoRoomText + db "@" + +FuchsiaGymText2: ; 755a4 (1d:55a4) + db $08 ; asm + ld hl, FuchsiaGymTrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +FuchsiaGymBattleText1: ; 755ae (1d:55ae) + TX_FAR _FuchsiaGymBattleText1 + db "@" + +FuchsiaGymEndBattleText1: ; 755b3 (1d:55b3) + TX_FAR _FuchsiaGymEndBattleText1 + db "@" + +FuchsiaGymAfterBattleText1: ; 755b8 (1d:55b8) + TX_FAR _FuchsiaGymAfterBattleText1 + db "@" + +FuchsiaGymText3: ; 755bd (1d:55bd) + db $08 ; asm + ld hl, FuchsiaGymTrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +FuchsiaGymBattleText2: ; 755c7 (1d:55c7) + TX_FAR _FuchsiaGymBattleText2 + db "@" + +FuchsiaGymEndBattleText2: ; 755cc (1d:55cc) + TX_FAR _FuchsiaGymEndBattleText2 + db "@" + +FuchsiaGymAfterBattleText2: ; 755d1 (1d:55d1) + TX_FAR _FuchsiaGymAfterBattleText2 + db "@" + +FuchsiaGymText4: ; 755d6 (1d:55d6) + db $08 ; asm + ld hl, FuchsiaGymTrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +FuchsiaGymBattleText3: ; 755e0 (1d:55e0) + TX_FAR _FuchsiaGymBattleText3 + db "@" + +FuchsiaGymEndBattleText3: ; 755e5 (1d:55e5) + TX_FAR _FuchsiaGymEndBattleText3 + db "@" + +FuchsiaGymAfterBattleText3: ; 755ea (1d:55ea) + TX_FAR _FuchsiaGymAfterBattleText3 + db "@" + +FuchsiaGymText5: ; 755ef (1d:55ef) + db $08 ; asm + ld hl, FuchsiaGymTrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +FuchsiaGymBattleText4: ; 755f9 (1d:55f9) + TX_FAR _FuchsiaGymBattleText4 + db "@" + +FuchsiaGymEndBattleText4: ; 755fe (1d:55fe) + TX_FAR _FuchsiaGymEndBattleText4 + db "@" + +FuchsiaGymAfterBattleText4: ; 75603 (1d:5603) + TX_FAR _FuchsiaGymAfterBattleText4 + db "@" + +FuchsiaGymText6: ; 75608 (1d:5608) + db $08 ; asm + ld hl, FuchsiaGymTrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +FuchsiaGymBattleText5: ; 75612 (1d:5612) + TX_FAR _FuchsiaGymBattleText5 + db "@" + +FuchsiaGymEndBattleText5: ; 75617 (1d:5617) + TX_FAR _FuchsiaGymEndBattleText5 + db "@" + +FuchsiaGymAfterBattleText5: ; 7561c (1d:561c) + TX_FAR _FuchsiaGymAfterBattleText5 + db "@" + +FuchsiaGymText7: ; 75621 (1d:5621) + db $08 ; asm + ld hl, FuchsiaGymTrainerHeader6 + call TalkToTrainer + jp TextScriptEnd + +FuchsiaGymBattleText6: ; 7562b (1d:562b) + TX_FAR _FuchsiaGymBattleText6 + db "@" + +FuchsiaGymEndBattleText6: ; 75630 (1d:5630) + TX_FAR _FuchsiaGymEndBattleText6 + db "@" + +FuchsiaGymAfterBattleText6: ; 75635 (1d:5635) + TX_FAR _FuchsiaGymAfterBattleText6 + db "@" + +FuchsiaGymText8: ; 7563a (1d:563a) + db $08 ; asm + ld a, [$d792] + bit 1, a + ld hl, UnnamedText_75653 + jr nz, .asm_50671 ; 0x75643 + ld hl, UnnamedText_7564e +.asm_50671 ; 0x75648 + call PrintText + jp TextScriptEnd + +UnnamedText_7564e: ; 7564e (1d:564e) + TX_FAR _UnnamedText_7564e + db "@" + +UnnamedText_75653: ; 75653 (1d:5653) + TX_FAR _UnnamedText_75653 + db "@" diff --git a/scripts/fuchsiahouse1.asm b/scripts/fuchsiahouse1.asm new file mode 100755 index 00000000..4d5e6eb1 --- /dev/null +++ b/scripts/fuchsiahouse1.asm @@ -0,0 +1,20 @@ +FuchsiaHouse1Script: ; 75018 (1d:5018) + call EnableAutoTextBoxDrawing + ret + +FuchsiaHouse1TextPointers: ; 7501c (1d:501c) + dw FuchsiaHouse1Text1 + dw FuchsiaHouse1Text2 + dw FuchsiaHouse1Text3 + +FuchsiaHouse1Text1: ; 75022 (1d:5022) + TX_FAR _FuchsiaHouse1Text1 + db "@" + +FuchsiaHouse1Text2: ; 75027 (1d:5027) + TX_FAR _FuchsiaHouse1Text2 + db "@" + +FuchsiaHouse1Text3: ; 7502c (1d:502c) + TX_FAR _FuchsiaHouse1Text3 + db "@" diff --git a/scripts/fuchsiahouse2.asm b/scripts/fuchsiahouse2.asm new file mode 100755 index 00000000..3d1156cb --- /dev/null +++ b/scripts/fuchsiahouse2.asm @@ -0,0 +1,118 @@ +FuchsiaHouse2Script: ; 750b5 (1d:50b5) + jp EnableAutoTextBoxDrawing + +FuchsiaHouse2TextPointers: ; 750b8 (1d:50b8) + dw FuchsiaHouse2Text1 + dw Predef5CText + dw BoulderText + dw FuchsiaHouse2Text4 + dw FuchsiaHouse2Text5 + +FuchsiaHouse2Text1: ; 750c2 (1d:50c2) + db $08 ; asm + ld a, [$d78e] + bit 0, a + jr nz, .subtract ; 0x750c8 + ld b,GOLD_TEETH + call IsItemInBag + jr nz, .asm_3f30f ; 0x750cf + ld a, [$d78e] + bit 1, a + jr nz, .asm_60cba ; 0x750d6 + ld hl, WardenGibberishText1 + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + ld hl, WardenGibberishText3 + jr nz, .asm_61238 ; 0x750e8 + ld hl, WardenGibberishText2 +.asm_61238 ; 0x750ed + call PrintText + jr .asm_52039 ; 0x750f0 +.asm_3f30f ; 0x750f2 + ld hl, WardenTeethText1 + call PrintText + ld a, GOLD_TEETH + ldh [$db], a + ld b, BANK(RemoveItemByID) + ld hl, RemoveItemByID + call Bankswitch + ld hl, $d78e + set 1, [hl] +.asm_60cba ; 0x75109 + ld hl, WardenThankYouText + call PrintText + ld bc,(HM_04 << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, ReceivedHM04Text + call PrintText + ld hl, $d78e + set 0, [hl] + jr .asm_52039 ; 0x75122 +.subtract ; 0x75124 + ld hl, HM04ExplanationText + call PrintText + jr .asm_52039 ; 0x7512a +.BagFull + ld hl, HM04NoRoomText + call PrintText +.asm_52039 ; 0x75132 + jp TextScriptEnd + +WardenGibberishText1: ; 75135 (1d:5135) + TX_FAR _WardenGibberishText1 + db "@" + +WardenGibberishText2: ; 7513a (1d:513a) + TX_FAR _WardenGibberishText2 + db "@" + +WardenGibberishText3: ; 7513f (1d:513f) + TX_FAR _WardenGibberishText3 + db "@" + +WardenTeethText1: ; 75144 (1d:5144) + TX_FAR _WardenTeethText1 + db $0b + +WardenTeethText2: ; 75149 (1d:5149) + TX_FAR _WardenTeethText2 + db "@" + +WardenThankYouText: ; 7514e (1d:514e) + TX_FAR _WardenThankYouText + db "@" + +ReceivedHM04Text: ; 75153 (1d:5153) + TX_FAR _ReceivedHM04Text + db $0B, "@" + +HM04ExplanationText: ; 75159 (1d:5159) + TX_FAR _HM04ExplanationText + db "@" + +HM04NoRoomText: ; 7515e (1d:515e) + TX_FAR _HM04NoRoomText + db "@" + +FuchsiaHouse2Text5: ; 75163 (1d:5163) +FuchsiaHouse2Text4: ; 75163 (1d:5163) + db $08 ; asm + ldh a, [$8c] + cp $4 + ld hl, FuchsiaHouse2Text_7517b + jr nz, .asm_4c9a2 ; 0x7516b + ld hl, FuchsiaHouse2Text_75176 +.asm_4c9a2 ; 0x75170 + call PrintText + jp TextScriptEnd + +FuchsiaHouse2Text_75176: ; 75176 (1d:5176) + TX_FAR _FuchsiaHouse2Text_75176 + db "@" + +FuchsiaHouse2Text_7517b: ; 7517b (1d:517b) + TX_FAR _FuchsiaHouse2Text_7517b + db "@" diff --git a/scripts/fuchsiahouse3.asm b/scripts/fuchsiahouse3.asm new file mode 100755 index 00000000..ec5654ba --- /dev/null +++ b/scripts/fuchsiahouse3.asm @@ -0,0 +1,75 @@ +FuchsiaHouse3Script: ; 5617c (15:617c) + jp EnableAutoTextBoxDrawing + +FuchsiaHouse3TextPointers: ; 5617f (15:617f) + dw FuchsiaHouse3Text1 + +FuchsiaHouse3Text1: ; 56181 (15:6181) + db $08 ; asm + ld a, [$d728] + bit 4, a + jr nz, .after + + ld hl, FuchsiaHouse3Text_561bd + call PrintText + + call YesNoChoice + ld a, [$cc26] + and a + jr nz, .refused + + ld bc, (GOOD_ROD << 8) | 1 + call GiveItem + jr nc, .full + + ld hl, $d728 + set 4, [hl] + + ld hl, FuchsiaHouse3Text_561c2 + jr .talk + +.full + ld hl, FuchsiaHouse3Text_5621c + jr .talk + +.refused + ld hl, FuchsiaHouse3Text_56212 + jr .talk + +.after + ld hl, FuchsiaHouse3Text_56217 + +.talk + call PrintText + jp TextScriptEnd + +FuchsiaHouse3Text_561bd: ; 561bd (15:61bd) + TX_FAR _FuchsiaHouse3Text_561bd + db "@" + +FuchsiaHouse3Text_561c2: ; 561c2 (15:61c2) + TX_FAR _FuchsiaHouse3Text_561c2 ; 0xa06e8 + db $0B + db "@" + +UnnamedText_561c8: ; 561c8 + para "つり こそ" + line "おとこの ロマン だ!" + + para "へぼいつりざおは" + line "コイキングしか つれ なんだが" + line "この いいつりざおなら" + line "もっと いいもんが つれるんじゃ!" + done + +FuchsiaHouse3Text_56212: ; 56212 (15:6212) + TX_FAR _FuchsiaHouse3Text_56212 + db "@" + +FuchsiaHouse3Text_56217: ; 56217 (15:6217) + TX_FAR _FuchsiaHouse3Text_56217 + db "@" + +FuchsiaHouse3Text_5621c: ; 5621c (15:621c) + TX_FAR _FuchsiaHouse3Text_5621c + db "@" diff --git a/scripts/fuchsiamart.asm b/scripts/fuchsiamart.asm new file mode 100755 index 00000000..792dafa2 --- /dev/null +++ b/scripts/fuchsiamart.asm @@ -0,0 +1,15 @@ +FuchsiaMartScript: ; 1dd88 (7:5d88) + jp EnableAutoTextBoxDrawing + +FuchsiaMartTextPointers: ; 1dd8b (7:5d8b) + dw FuchsiaMartText1 + dw FuchsiaMartText2 + dw FuchsiaMartText3 + +FuchsiaMartText2: ; 1dd91 (7:5d91) + TX_FAR _FuchsiaMartText2 + db "@" + +FuchsiaMartText3: ; 1dd96 (7:5d96) + TX_FAR _FuchsiaMartText3 + db "@" diff --git a/scripts/fuchsiameetingroom.asm b/scripts/fuchsiameetingroom.asm new file mode 100755 index 00000000..140a5ccc --- /dev/null +++ b/scripts/fuchsiameetingroom.asm @@ -0,0 +1,20 @@ +FuchsiaMeetingRoomScript: ; 756e3 (1d:56e3) + call EnableAutoTextBoxDrawing + ret + +FuchsiaMeetingRoomTextPointers: ; 756e7 (1d:56e7) + dw FuchsiaMeetingRoomText1 + dw FuchsiaMeetingRoomText2 + dw FuchsiaMeetingRoomText3 + +FuchsiaMeetingRoomText1: ; 756ed (1d:56ed) + TX_FAR _FuchsiaMeetingRoomText1 + db "@" + +FuchsiaMeetingRoomText2: ; 756f2 (1d:56f2) + TX_FAR _FuchsiaMeetingRoomText2 + db "@" + +FuchsiaMeetingRoomText3: ; 756f7 (1d:56f7) + TX_FAR _FuchsiaMeetingRoomText3 + db "@" diff --git a/scripts/fuchsiapokecenter.asm b/scripts/fuchsiapokecenter.asm new file mode 100755 index 00000000..621a483f --- /dev/null +++ b/scripts/fuchsiapokecenter.asm @@ -0,0 +1,23 @@ +FuchsiaPokecenterScript: ; 75063 (1d:5063) + call Func_22fa + jp EnableAutoTextBoxDrawing + +FuchsiaPokecenterTextPointers: ; 75069 (1d:5069) + dw FuchsiaPokecenterText1 + dw FuchsiaPokecenterText2 + dw FuchsiaPokecenterText3 + dw FuchsiaPokecenterText4 + +FuchsiaPokecenterText1: ; 75071 (1d:5071) + db $ff + +FuchsiaPokecenterText2: ; 75072 (1d:5072) + TX_FAR _FuchsiaPokecenterText1 + db "@" + +FuchsiaPokecenterText3: ; 75077 (1d:5077) + TX_FAR _FuchsiaPokecenterText3 + db "@" + +FuchsiaPokecenterText4: ; 7507c (1d:507c) + db $f6 diff --git a/scripts/gary.asm b/scripts/gary.asm new file mode 100755 index 00000000..aeb04f78 --- /dev/null +++ b/scripts/gary.asm @@ -0,0 +1,297 @@ +GaryScript: ; 75f1d (1d:5f1d) + call EnableAutoTextBoxDrawing + ld hl, GaryScriptPointers + ld a, [W_GARYCURSCRIPT] + jp CallFunctionInTable + +GaryScript_75f29: ; 75f29 (1d:5f29) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_GARYCURSCRIPT], a + ret + +GaryScriptPointers: ; 75f31 (1d:5f31) + dw GaryScript0 + dw GaryScript1 + dw GaryScript2 + dw GaryScript3 + dw GaryScript4 + dw GaryScript5 + dw GaryScript6 + dw GaryScript7 + dw GaryScript8 + dw GaryScript9 + dw GaryScript10 + +GaryScript0: ; 75f47 (1d:5f47) + ret + +GaryScript1: ; 75f48 (1d:5f48) + ld a, $ff + ld [wJoypadForbiddenButtonsMask], a + ld hl, $ccd3 + ld de, RLEMovement75f63 + call DecodeRLEList + dec a + ld [$cd38], a + call Func_3486 + ld a, $2 + ld [W_GARYCURSCRIPT], a + ret + +RLEMovement75f63: ; 75f63 (1d:5f63) + db $40,1 + db $10,1 + db $40,3 + db $ff + +GaryScript2: ; 75f6a (1d:5f6a) + ld a, [$cd38] + and a + ret nz + call Delay3 + xor a + ld [wJoypadForbiddenButtonsMask], a + ld hl, $d355 + res 7, [hl] + ld a, $1 + ld [$ff8c], a + call DisplayTextID + call Delay3 + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, GaryText_760f9 + ld de, GaryText_760fe + call PreBattleSaveRegisters + ld a, SONY3 + $c8 + ld [W_CUROPPONENT], a + + ; select which team to use during the encounter + ld a, [W_RIVALSTARTER] + cp SQUIRTLE + jr nz, .NotSquirtle ; 0x75f9f $4 + ld a, $1 + jr .done +.NotSquirtle + cp BULBASAUR + jr nz, .Charmander ; 0x75fa7 $4 + ld a, $2 + jr .done +.Charmander + ld a, $3 +.done + ld [W_TRAINERNO], a + + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, $3 + ld [W_GARYCURSCRIPT], a + ret + +GaryScript3: ; 75fbb (1d:5fbb) + ld a, [W_ISINBATTLE] + cp $ff + jp z, GaryScript_75f29 + call UpdateSprites ; move sprites + ld hl, $d867 + set 1, [hl] + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld a, $1 + ld [$ff8c], a + call GaryScript_760c8 + ld a, $1 + ld [$ff8c], a + call SetSpriteMovementBytesToFF + ld a, $4 + ld [W_GARYCURSCRIPT], a + ret + +GaryScript4: ; 75fe4 (1d:5fe4) + ld b, BANK(Music_Cities1AlternateTempo) + ld hl, Music_Cities1AlternateTempo + call Bankswitch + ld a, $2 + ld [$ff8c], a + call GaryScript_760c8 + ld a, $2 + ld [$ff8c], a + call SetSpriteMovementBytesToFF + ld de, MovementData_76014 + ld a, $2 + ld [$ff8c], a + call MoveSprite + ld a, $d6 + ld [$cc4d], a + ld a, $15 + call Predef + ld a, $5 + ld [W_GARYCURSCRIPT], a + ret + +MovementData_76014: ; 76014 (1d:6014) + db $40,$40,$40,$40,$40,$FF + +GaryScript5: ; 7601a (1d:601a) + ld a, [$d730] + bit 0, a + ret nz + ld a, $2 + ld [$d528], a + ld a, $1 + ld [$ff8c], a + ld a, $8 + ld [$ff8d], a + call Func_34a6 + ld a, $2 + ld [$ff8c], a + xor a + ld [$ff8d], a + call Func_34a6 ; face object + ld a, $3 + ld [$ff8c], a + call GaryScript_760c8 + ld a, $6 + ld [W_GARYCURSCRIPT], a + ret + +GaryScript6: ; 76047 (1d:6047) + ld a, $2 + ld [$ff8c], a + ld a, $c + ld [$ff8d], a + call Func_34a6 ; face object + ld a, $4 + ld [$ff8c], a + call GaryScript_760c8 + ld a, $7 + ld [W_GARYCURSCRIPT], a + ret + +GaryScript7: ; 7605f (1d:605f) + ld a, $2 + ld [$ff8c], a + xor a + ld [$ff8d], a + call Func_34a6 ; face object + ld a, $5 + ld [$ff8c], a + call GaryScript_760c8 + ld de, MovementData_76080 + ld a, $2 + ld [$ff8c], a + call MoveSprite + ld a, $8 + ld [W_GARYCURSCRIPT], a + ret + +MovementData_76080: ; 76080 (1d:6080) + db $40,$40,$FF + +GaryScript8: ; 76083 (1d:6083) + ld a, [$d730] + bit 0, a + ret nz + ld a, $d6 + ld [$cc4d], a + ld a, $11 + call Predef + ld a, $9 + ld [W_GARYCURSCRIPT], a + ret + +GaryScript9: ; 76099 (1d:6099) + ld a, $ff + ld [wJoypadForbiddenButtonsMask], a + ld hl, $ccd3 + ld de, RLEMovement760b4 + call DecodeRLEList + dec a + ld [$cd38], a + call Func_3486 + ld a, $a + ld [W_GARYCURSCRIPT], a + ret + +RLEMovement760b4 ; 760b4 (1d:60b4) + db $40,4 + db $20,1 + db $ff + +GaryScript10: ; 760b9 (1d:60b9) + ld a, [$cd38] + and a + ret nz + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $0 + ld [W_GARYCURSCRIPT], a + ret + +GaryScript_760c8 ; 760c8 (1d:60c8) + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + call DisplayTextID + ld a, $ff + ld [wJoypadForbiddenButtonsMask], a + ret + +GaryTextPointers: ; 760d6 (1d:60d6) + dw GaryText1 + dw GaryText2 + dw GaryText3 + dw GaryText4 + dw GaryText5 + +GaryText1: ; 760e0 (1d:60e0) + db $08 ; asm + ld a, [$d867] + bit 1, a + ld hl, GaryText_760f4 + jr z, .asm_17e9f ; 0x760e9 + ld hl, GaryText_76103 +.asm_17e9f ; 0x760ee + call PrintText + jp TextScriptEnd + +GaryText_760f4: ; 760f4 (1d:60f4) + TX_FAR _GaryText_760f4 + db "@" + +GaryText_760f9: ; 760f9 (1d:60f9) + TX_FAR _GaryText_760f9 + db "@" + +GaryText_760fe: ; 760fe (1d:60fe) + TX_FAR _GaryText_760fe + db "@" + +GaryText_76103: ; 76103 (1d:6103) + TX_FAR _GaryText_76103 + db "@" + +GaryText2: ; 76108 (1d:6108) + TX_FAR _GaryText2 + db "@" + +GaryText3: ; 7610d (1d:610d) + db $8 + ld a, [$d717] + ld [$d11e], a + call GetMonName + ld hl, GaryText_76120 + call PrintText + jp TextScriptEnd + +GaryText_76120: ; 76120 (1d:6120) + TX_FAR _GaryText_76120 + db "@" + +GaryText4: ; 76125 (1d:6125) + TX_FAR _GaryText_76125 + db "@" + +GaryText5: ; 7612a (1d:612a) + TX_FAR _GaryText_7612a + db "@" diff --git a/scripts/halloffameroom.asm b/scripts/halloffameroom.asm new file mode 100755 index 00000000..25a59a36 --- /dev/null +++ b/scripts/halloffameroom.asm @@ -0,0 +1,117 @@ +HallofFameRoomScript: ; 5a49e (16:649e) + call EnableAutoTextBoxDrawing + ld hl, HallofFameRoomScriptPointers + ld a, [W_HALLOFFAMEROOMCURSCRIPT] + jp CallFunctionInTable + +HallofFameRoomScript_5a4aa: ; 5a4aa (16:64aa) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_HALLOFFAMEROOMCURSCRIPT], a + ret + +HallofFameRoomScriptPointers: ; 5a4b2 (16:64b2) + dw HallofFameRoomScript0 + dw HallofFameRoomScript1 + dw HallofFameRoomScript2 + dw HallofFameRoomScript3 + +HallofFameRoomScript3: ; 5a4ba (16:64ba) + ret + +HallofFameRoomScript2: ; 5a4bb (16:64bb) + call Delay3 + ld a, [$d358] + push af + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $55 + call Predef + pop af + ld [$d358], a + ld hl, W_FLAGS_D733 + res 1, [hl] + inc hl + set 0, [hl] + xor a + ld hl, W_LORELEICURSCRIPT + ld [hli], a + ld [hli], a + ld [hl], a + ld [W_LANCECURSCRIPT], a + ld [W_HALLOFFAMEROOMCURSCRIPT], a + ld hl, $d863 + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + xor a + ld [W_HALLOFFAMEROOMCURSCRIPT], a + ld a, $0 + ld [$d719], a + ld b, BANK(SaveSAVtoSRAM) + ld hl, SaveSAVtoSRAM + call Bankswitch + ld b, $5 +.asm_5a4ff + ld c, $78 + call DelayFrames + dec b + jr nz, .asm_5a4ff ; 0x5a505 $f8 + call WaitForTextScrollButtonPress + jp InitGame + +HallofFameRoomScript0: ; 5a50d (16:650d) + ld a, $ff + ld [wJoypadForbiddenButtonsMask], a + ld hl, $ccd3 + ld de, RLEMovement5a528 + call DecodeRLEList + dec a + ld [$cd38], a + call Func_3486 + ld a, $1 + ld [W_HALLOFFAMEROOMCURSCRIPT], a + ret + +RLEMovement5a528: ; 5a528 (16:6528) + db $40,$5 + db $ff + +HallofFameRoomScript1: ; 5a52b (16:652b) + ld a, [$cd38] + and a + ret nz + ld a, $1 + ld [$d528], a + ld a, $1 + ld [$ff8c], a + call SetSpriteMovementBytesToFF + ld a, $8 + ld [$ff8d], a + call Func_34a6 + call Delay3 + xor a + ld [wJoypadForbiddenButtonsMask], a + inc a + ld [$d528], a + ld a, $1 + ld [$ff8c], a + call DisplayTextID + ld a, $ff + ld [wJoypadForbiddenButtonsMask], a + ld a, $8 + ld [$cc4d], a + ld a, $11 + call Predef + ld a, $2 + ld [W_HALLOFFAMEROOMCURSCRIPT], a + ret + +HallofFameRoomTextPointers: ; 5a56a (16:656a) + dw HallofFameRoomText1 + +HallofFameRoomText1: ; 5a56c (16:656c) + TX_FAR _HallofFameRoomText1 + db "@" diff --git a/scripts/indigoplateau.asm b/scripts/indigoplateau.asm new file mode 100755 index 00000000..9e4802ba --- /dev/null +++ b/scripts/indigoplateau.asm @@ -0,0 +1,4 @@ +IndigoPlateauScript: ; 50935 (14:4935) + ret + +IndigoPlateauTextPointers: ; 50936 (14:4936) diff --git a/scripts/indigoplateaulobby.asm b/scripts/indigoplateaulobby.asm new file mode 100755 index 00000000..861939b6 --- /dev/null +++ b/scripts/indigoplateaulobby.asm @@ -0,0 +1,41 @@ +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 + 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 diff --git a/scripts/lab1.asm b/scripts/lab1.asm new file mode 100755 index 00000000..a4ec9b41 --- /dev/null +++ b/scripts/lab1.asm @@ -0,0 +1,30 @@ +Lab1Script: ; 75b8c (1d:5b8c) + call EnableAutoTextBoxDrawing + ret + +Lab1TextPointers: ; 75b90 (1d:5b90) + dw Lab1Text1 + dw Lab1Text2 + dw Lab1Text3 + dw Lab1Text4 + dw Lab1Text5 + +Lab1Text1: ; 75b9a (1d:5b9a) + TX_FAR _Lab1Text1 + db "@" + +Lab1Text2: ; 75b9f (1d:5b9f) + TX_FAR _Lab1Text2 + db "@" + +Lab1Text3: ; 75ba4 (1d:5ba4) + TX_FAR _Lab1Text3 + db "@" + +Lab1Text4: ; 75ba9 (1d:5ba9) + TX_FAR _Lab1Text4 + db "@" + +Lab1Text5: ; 75bae (1d:5bae) + TX_FAR _Lab1Text5 + db "@" diff --git a/scripts/lab2.asm b/scripts/lab2.asm new file mode 100755 index 00000000..a626de98 --- /dev/null +++ b/scripts/lab2.asm @@ -0,0 +1,26 @@ +Lab2Script: ; 75c21 (1d:5c21) + jp EnableAutoTextBoxDrawing + +Lab2TextPointers: ; 75c24 (1d:5c24) + dw Lab2Text1 + dw Lab2Text2 + dw Lab2Text3 + +Lab2Text1: ; 75c2a (1d:5c2a) + TX_FAR _Lab2Text1 + db "@" + +Lab2Text2: ; 75c2f (1d:5c2f) + db $8 + ld a, $7 + ld [wWhichTrade], a + jr asm_78552 ; 0x75c35 $6 + +Lab2Text3: ; 75c37 (1d:5c37) + db $8 + ld a, $8 + ld [wWhichTrade], a +asm_78552: ; 75c3d (1d:5c3d) + ld a, $54 + call Predef + jp TextScriptEnd diff --git a/scripts/lab3.asm b/scripts/lab3.asm new file mode 100755 index 00000000..d56aba26 --- /dev/null +++ b/scripts/lab3.asm @@ -0,0 +1,63 @@ +Lab3Script: ; 75c87 (1d:5c87) + jp EnableAutoTextBoxDrawing + +Lab3TextPointers: ; 75c8a (1d:5c8a) + dw Lab3Text1 + dw Lab3Text2 + dw Lab3Text3 + dw Lab3Text4 + dw Lab3Text5 + +Lab3Text1: ; 75c94 (1d:5c94) + db $08 ; asm + ld a, [$d7a1] + bit 7, a + jr nz, .asm_e551a ; 0x75c9a + ld hl, TM35PreReceiveText + call PrintText + ld bc, (TM_35 << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, ReceivedTM35Text + call PrintText + ld hl, $d7a1 + set 7, [hl] + jr .asm_eb896 ; 0x75cb5 +.BagFull + ld hl, TM35NoRoomText + call PrintText + jr .asm_eb896 ; 0x75cbd +.asm_e551a ; 0x75cbf + ld hl, TM35ExplanationText + call PrintText +.asm_eb896 ; 0x75cc5 + jp TextScriptEnd + +TM35PreReceiveText: ; 75cc8 (1d:5cc8) + TX_FAR _TM35PreReceiveText + db "@" + +ReceivedTM35Text: ; 75ccd (1d:5ccd) + TX_FAR _ReceivedTM35Text + db $0B, "@" + +TM35ExplanationText: ; 75cd3 (1d:5cd3) + TX_FAR _TM35ExplanationText + db "@" + +TM35NoRoomText: ; 75cd8 (1d:5cd8) + TX_FAR _TM35NoRoomText + db "@" + +Lab3Text2: ; 75cdd (1d:5cdd) + TX_FAR _Lab3Text2 + db "@" + +Lab3Text4: ; 75ce2 (1d:5ce2) +Lab3Text3: ; 75ce2 (1d:5ce2) + TX_FAR _Lab3Text3 + db "@" + +Lab3Text5: ; 75ce7 (1d:5ce7) + TX_FAR _Lab3Text5 + db "@" diff --git a/scripts/lab4.asm b/scripts/lab4.asm new file mode 100755 index 00000000..b8a73432 --- /dev/null +++ b/scripts/lab4.asm @@ -0,0 +1,117 @@ +Lab4Script: ; 75d31 (1d:5d31) + jp EnableAutoTextBoxDrawing + +Lab4TextPointers: ; 75d34 (1d:5d34) + dw Lab4Text1 + dw Lab4Text2 + +Lab4Script_75d38: ; 75d38 (1d:5d38) + xor a + ld [$cd37], a + ld de, $cc5b + ld hl, FossilsList +.asm_75d42 + ld a, [hli] + and a + jr z, .asm_75d64 + push hl + push de + ld [$d11e], a + ld b, a + ld a, $1c + call Predef ; indirect jump to Func_f8a5 (f8a5 (3:78a5)) + pop de + pop hl + ld a, b + and a + jr z, .asm_75d42 + ld a, [$d11e] + ld [de], a + inc de + push hl + ld hl, $cd37 + inc [hl] + pop hl + jr .asm_75d42 +.asm_75d64 + ld a, $ff + ld [de], a + ret + +FossilsList: ; 75d68 (1d:5d68) + db DOME_FOSSIL + db HELIX_FOSSIL + db OLD_AMBER + db $00 + +Lab4Text1: ; 75d6c (1d:5d6c) + db $8 + ld a, [$d7a3] + bit 0, a + jr nz, .asm_75d96 ; 0x75d72 $22 + ld hl, Lab4Text_75dc6 + call PrintText + call Lab4Script_75d38 + ld a, [$cd37] + and a + jr z, .asm_75d8d ; 0x75d81 $a + ld b, BANK(GiveFossilToCinnabarLab) + ld hl, GiveFossilToCinnabarLab + call Bankswitch + jr .asm_75d93 ; 0x75d8b $6 +.asm_75d8d + ld hl, Lab4Text_75dcb + call PrintText +.asm_75d93 + jp TextScriptEnd +.asm_75d96 + bit 1, a + jr z, .asm_75da2 ; 0x75d98 $8 + ld hl, Lab4Text_75dd0 + call PrintText + jr .asm_75d93 ; 0x75da0 $f1 +.asm_75da2 + call LoadFossilItemAndMonNameBank1D + ld hl, Lab4Text_75dd5 + call PrintText + ld hl, $d7a3 + set 2, [hl] + ld a, [W_FOSSILMON] + ld b, a + ld c, $1e + call GivePokemon + jr nc, .asm_75d93 ; 0x75db9 $d8 + ld hl, $d7a3 + res 0, [hl] + res 1, [hl] + res 2, [hl] + jr .asm_75d93 ; 0x75dc4 $cd + +Lab4Text_75dc6: ; 75dc6 (1d:5dc6) + TX_FAR _Lab4Text_75dc6 + db "@" + +Lab4Text_75dcb: ; 75dcb (1d:5dcb) + TX_FAR _Lab4Text_75dcb + db "@" + +Lab4Text_75dd0: ; 75dd0 (1d:5dd0) + TX_FAR _Lab4Text_75dd0 + db "@" + +Lab4Text_75dd5: ; 75dd5 (1d:5dd5) + TX_FAR _Lab4Text_75dd5 + db "@" + +Lab4Text2: ; 75dda (1d:5dda) + db $08 ; asm + ld a, $3 + ld [wWhichTrade], a + ld a, $54 + call Predef + jp TextScriptEnd + +LoadFossilItemAndMonNameBank1D: ; 75de8 (1d:5de8) + ld b, BANK(LoadFossilItemAndMonName) + ld hl, LoadFossilItemAndMonName + jp Bankswitch diff --git a/scripts/lance.asm b/scripts/lance.asm new file mode 100755 index 00000000..445b4052 --- /dev/null +++ b/scripts/lance.asm @@ -0,0 +1,166 @@ +LanceScript: ; 5a2ae (16:62ae) + call LanceScript_5a2c4 + call EnableAutoTextBoxDrawing + ld hl, LanceTrainerHeaders + ld de, LanceScriptPointers + ld a, [W_LANCECURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_LANCECURSCRIPT], a + ret + +LanceScript_5a2c4: ; 5a2c4 (16:62c4) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld a, [$d866] + bit 7, a + jr nz, .asm_5a2da + ld a, $31 + ld b, $32 + jp LanceScript_5a2de +.asm_5a2da + ld a, $72 + ld b, $73 + +LanceScript_5a2de: ; 5a2de (16:62de) + push bc + ld [$d09f], a + ld bc, $602 + call LanceScript_5a2f0 + pop bc + ld a, b + ld [$d09f], a + ld bc, $603 + +LanceScript_5a2f0: ; 5a2f0 (16:62f0) + ld a, $17 + jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + +LanceScript_5a2f5: ; 5a2f5 (16:62f5) + xor a + ld [W_LANCECURSCRIPT], a + ret + +LanceScriptPointers: ; 5a2fa (16:62fa) + dw LanceScript0 + dw Func_324c + dw LanceScript2 + dw LanceScript3 + dw LanceScript4 + +LanceScript4: ; 5a304 (16:6304) + ret + +LanceScript0: ; 5a305 (16:6305) + ld a, [$d866] + bit 6, a + ret nz + ld hl, CoordsData_5a33e + call ArePlayerCoordsInArray + jp nc, CheckFightingMapTrainers + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, [wWhichTrade] ; $cd3d + cp $3 + jr nc, .asm_5a325 + ld a, $1 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + jp DisplayTextID +.asm_5a325 + cp $5 + jr z, LanceScript_5a35b + ld hl, $d866 + bit 7, [hl] + set 7, [hl] + ret nz + ld hl, $d126 + set 5, [hl] + ld a, (SFX_02_57 - SFX_Headers_02) / 3 + call PlaySound + jp LanceScript_5a2c4 + +CoordsData_5a33e: ; 5a33e (16:633e) + db $01,$05 + db $02,$06 + db $0B,$05 + db $0B,$06 + db $10,$18 + db $FF + +LanceScript2: ; 5a349 (16:6349) + call EndTrainerBattle + ld a, [W_ISINBATTLE] ; $d057 + cp $ff + jp z, LanceScript_5a2f5 + ld a, $1 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + jp DisplayTextID + +LanceScript_5a35b: ; 5a35b (16:635b) + ld a, $ff + ld [wJoypadForbiddenButtonsMask], a + ld hl, $ccd3 + ld de, RLEList_5a379 + call DecodeRLEList + dec a + ld [$cd38], a + call Func_3486 + ld a, $3 + ld [W_LANCECURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +RLEList_5a379: ; 5a379 (16:6379) + db $40, $0C + db $20, $0C + db $80, $07 + db $20, $06 + db $FF + +LanceScript3: ; 5a382 (16:6382) + ld a, [$cd38] + and a + ret nz + call Delay3 + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_LANCECURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +LanceTextPointers: ; 5a395 (16:6395) + dw LanceText1 + +LanceTrainerHeaders: ; 5a397 (16:6397) +LanceTrainerHeader0: ; 5a397 (16:6397) + db $1 ; flag's bit + db ($0 << 4) ; trainer's view range + dw $d866 ; flag's byte + dw LanceBeforeBattleText ; 0x63ae TextBeforeBattle + dw LanceAfterBattleText ; 0x63b8 TextAfterBattle + dw LanceEndBattleText ; 0x63b3 TextEndBattle + dw LanceEndBattleText ; 0x63b3 TextEndBattle + + db $ff + +LanceText1: ; 5a3a4 (16:63a4) + db $08 ; asm + ld hl, LanceTrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +LanceBeforeBattleText: ; 5a3ae (16:63ae) + TX_FAR _LanceBeforeBattleText + db "@" + +LanceEndBattleText: ; 5a3b3 (16:63b3) + TX_FAR _LanceEndBattleText + db "@" + +LanceAfterBattleText: ; 5a3b8 (16:63b8) + TX_FAR _LanceAfterBattleText + db $8 + ld hl, $d866 + set 6, [hl] + jp TextScriptEnd diff --git a/scripts/lavenderhouse1.asm b/scripts/lavenderhouse1.asm new file mode 100755 index 00000000..0f7bf417 --- /dev/null +++ b/scripts/lavenderhouse1.asm @@ -0,0 +1,116 @@ +LavenderHouse1Script: ; 1d8a8 (7:58a8) + call EnableAutoTextBoxDrawing + ret + +LavenderHouse1TextPointers: ; 1d8ac (7:58ac) + dw LavenderHouse1Text1 + dw LavenderHouse1Text2 + dw LavenderHouse1Text3 + dw LavenderHouse1Text4 + dw LavenderHouse1Text5 + dw LavenderHouse1Text6 + +LavenderHouse1Text1: ; 1d8b8 (7:58b8) + db $08 ; asm + ld a, [$d7e0] + bit 7, a + jr nz, .asm_72e5d ; 0x1d8be + ld hl, LavenderHouse1Text_1d8d1 + call PrintText + jr .asm_6957f ; 0x1d8c6 +.asm_72e5d ; 0x1d8c8 + ld hl, LavenderHouse1Text_1d8d6 + call PrintText +.asm_6957f ; 0x1d8ce + jp TextScriptEnd + +LavenderHouse1Text_1d8d1: ; 1d8d1 (7:58d1) + TX_FAR _LavenderHouse1Text_1d8d1 + db "@" + +LavenderHouse1Text_1d8d6: ; 1d8d6 (7:58d6) + TX_FAR _LavenderHouse1Text_1d8d6 + db "@" + +LavenderHouse1Text2: ; 1d8db (7:58db) + db $08 ; asm + ld a, [$d7e0] + bit 7, a + jr nz, .asm_06470 ; 0x1d8e1 + ld hl, LavenderHouse1Text_1d8f4 + call PrintText + jr .asm_3d208 ; 0x1d8e9 +.asm_06470 ; 0x1d8eb + ld hl, LavenderHouse1Text_1d8f9 + call PrintText +.asm_3d208 ; 0x1d8f1 + jp TextScriptEnd + +LavenderHouse1Text_1d8f4: ; 1d8f4 (7:58f4) + TX_FAR _LavenderHouse1Text_1d8f4 + db "@" + +LavenderHouse1Text_1d8f9: ; 1d8f9 (7:58f9) + TX_FAR _LavenderHouse1Text_1d8f9 + db "@" + +LavenderHouse1Text3: ; 1d8fe (7:58fe) + TX_FAR _LavenderHouse1Text3 + db $8 + ld a, PSYDUCK + call PlayCry + jp TextScriptEnd + +LavenderHouse1Text4: ; 1d90b (7:590b) + TX_FAR _LavenderHouse1Text4 + db $8 + ld a, NIDORINO + call PlayCry + jp TextScriptEnd + +LavenderHouse1Text5: ; 1d918 (7:5918) + db $08 ; asm + ld a, [$d76c] + bit 0, a + jr nz, .asm_15ac2 ; 0x1d91e + ld hl, LavenderHouse1Text_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 + +LavenderHouse1Text_1d94c: ; 1d94c (7:594c) + TX_FAR _LavenderHouse1Text_1d94c + db "@" + +ReceivedFluteText: ; 1d951 (7:5951) + TX_FAR _ReceivedFluteText + db $11 + TX_FAR _FluteExplanationText + db "@" + +FluteNoRoomText: ; 1d95b (7:595b) + TX_FAR _FluteNoRoomText + db "@" + +MrFujiAfterFluteText: ; 1d960 (7:5960) + TX_FAR _MrFujiAfterFluteText + db "@" + +LavenderHouse1Text6: ; 1d965 (7:5965) + TX_FAR _LavenderHouse1Text6 + db "@" diff --git a/scripts/lavenderhouse2.asm b/scripts/lavenderhouse2.asm new file mode 100755 index 00000000..db4f0cab --- /dev/null +++ b/scripts/lavenderhouse2.asm @@ -0,0 +1,36 @@ +LavenderHouse2Script: ; 1d9ae (7:59ae) + call EnableAutoTextBoxDrawing + 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 + +LavenderHouse2Text2: ; 1d9c3 (7:59c3) + db $08 ; asm + ld a, [$d7e0] + bit 7, a + jr nz, .asm_65711 ; 0x1d9c9 + ld hl, LavenderHouse2Text_1d9dc + call PrintText + jr .asm_64be1 ; 0x1d9d1 +.asm_65711 ; 0x1d9d3 + ld hl, LavenderHouse2Text_1d9e1 + call PrintText +.asm_64be1 ; 0x1d9d9 + jp TextScriptEnd + +LavenderHouse2Text_1d9dc: ; 1d9dc (7:59dc) + TX_FAR _LavenderHouse2Text_1d9dc + db "@" + +LavenderHouse2Text_1d9e1: ; 1d9e1 (7:59e1) + TX_FAR _LavenderHouse2Text_1d9e1 + db "@" diff --git a/scripts/lavendermart.asm b/scripts/lavendermart.asm new file mode 100755 index 00000000..78870a66 --- /dev/null +++ b/scripts/lavendermart.asm @@ -0,0 +1,33 @@ +LavenderMartScript: ; 5c92c (17:492c) + jp EnableAutoTextBoxDrawing + +LavenderMartTextPointers: ; 5c92f (17:492f) + dw LavenderMartText1 + dw LavenderMartText2 + dw LavenderMartText3 + +LavenderMartText2: ; 5c935 (17:4935) + TX_FAR _LavenderMartText2 + db "@" + +LavenderMartText3: ; 5c93a (17:493a) + db $08 ; asm + ld a, [$d7e0] + bit 7, a + jr nz, .asm_c88d4 ; 0x5c940 + ld hl, LavenderMart_5c953 + call PrintText + jr .asm_6d225 ; 0x5c948 +.asm_c88d4 ; 0x5c94a + ld hl, LavenderMart_5c958 + call PrintText +.asm_6d225 ; 0x5c950 + jp TextScriptEnd + +LavenderMart_5c953: ; 5c953 (17:4953) + TX_FAR _LavenderMart_5c953 + db "@" + +LavenderMart_5c958: ; 5c958 (17:4958) + TX_FAR _LavenderMart_5c958 + db "@" diff --git a/scripts/lavenderpokecenter.asm b/scripts/lavenderpokecenter.asm new file mode 100755 index 00000000..31a50aef --- /dev/null +++ b/scripts/lavenderpokecenter.asm @@ -0,0 +1,23 @@ +LavenderPokecenterScript: ; 5c8da (17:48da) + call Func_22fa + jp EnableAutoTextBoxDrawing + +LavenderPokecenterTextPointers: ; 5c8e0 (17:48e0) + dw LavenderPokecenterText1 + dw LavenderPokecenterText2 + dw LavenderPokecenterText3 + dw LavenderPokecenterText4 + +LavenderPokecenterText4: ; 5c8e8 (17:48e8) + db $f6 + +LavenderPokecenterText1: ; 5c8e9 (17:48e9) + db $ff + +LavenderPokecenterText2: ; 5c8ea (17:48ea) + TX_FAR _LavenderPokecenterText1 + db "@" + +LavenderPokecenterText3: ; 5c8ef (17:48ef) + TX_FAR _LavenderPokecenterText3 + db "@" diff --git a/scripts/lavendertown.asm b/scripts/lavendertown.asm new file mode 100755 index 00000000..41eb0242 --- /dev/null +++ b/scripts/lavendertown.asm @@ -0,0 +1,63 @@ +LavenderTownScript: ; 4410b (11:410b) + jp EnableAutoTextBoxDrawing + +LavenderTownTextPointers: ; 4410e (11:410e) + dw LavenderTownText1 + dw LavenderTownText2 + dw LavenderTownText3 + dw LavenderTownText4 + dw LavenderTownText5 + dw MartSignText + dw PokeCenterSignText + dw LavenderTownText8 + dw LavenderTownText9 + +LavenderTownText1: ; 44120 (11:4120) + db $08 ; asm + ld hl, LavenderTownText_4413c + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + ld hl, LavenderTownText_44146 + jr nz, .asm_40831 ; 0x44131 + ld hl, LavenderTownText_44141 +.asm_40831 ; 0x44136 + call PrintText + jp TextScriptEnd + +LavenderTownText_4413c: ; 4413c (11:413c) + TX_FAR _LavenderTownText_4413c + db "@" + +LavenderTownText_44141: ; 44141 (11:4141) + TX_FAR _LavenderTownText_44141 + db "@" + +LavenderTownText_44146: ; 44146 (11:4146) + TX_FAR _LavenderTownText_44146 + db "@" + +LavenderTownText2: ; 4414b (11:414b) + TX_FAR _LavenderTownText2 + db "@" + +LavenderTownText3: ; 44150 (11:4150) + TX_FAR _LavenderTownText3 + db "@" + +LavenderTownText4: ; 44155 (11:4155) + TX_FAR _LavenderTownText4 + db "@" + +LavenderTownText5: ; 4415a (11:415a) + TX_FAR _LavenderTownText5 + db "@" + +LavenderTownText8: ; 4415f (11:415f) + TX_FAR _LavenderTownText8 + db "@" + +LavenderTownText9: ; 44164 (11:4164) + TX_FAR _LavenderTownText9 + db "@" diff --git a/scripts/lorelei.asm b/scripts/lorelei.asm new file mode 100755 index 00000000..eb2da2bd --- /dev/null +++ b/scripts/lorelei.asm @@ -0,0 +1,153 @@ +LoreleiScript: ; 7617b (1d:617b) + call LoreleiScript_76191 + call EnableAutoTextBoxDrawing + ld hl, LoreleiTrainerHeaders + ld de, LoreleiScriptPointers + ld a, [W_LORELEICURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_LORELEICURSCRIPT], a + ret + +LoreleiScript_76191: ; 76191 (1d:6191) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld hl, $d734 + set 1, [hl] + ld a, [$d863] + bit 1, a + jr z, .asm_761a9 + ld a, $5 + jr .asm_761ab +.asm_761a9 + ld a, $24 +.asm_761ab + ld [$d09f], a + ld bc, $2 + ld a, $17 + jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + +LoreleiScript_761b6: ; 761b6 (1d:61b6) + xor a + ld [W_LORELEICURSCRIPT], a + ret + +LoreleiScriptPointers: ; 761bb (1d:61bb) + dw LoreleiScript0 + dw Func_324c + dw LoreleiScript2 + dw LoreleiScript3 + dw LoreleiScript4 + +LoreleiScript4: ; 761c5 (1d:61c5) + ret +asm_761c6: ; 761c6 (1d:61c6) + ld hl, $ccd3 + ld a, $40 + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld a, $6 + ld [$cd38], a + call Func_3486 + ld a, $3 + ld [W_LORELEICURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret +LoreleiScript0: ; 761e2 (1d:61e2) + ld hl, CoordsData_76223 + call ArePlayerCoordsInArray + jp nc, CheckFightingMapTrainers + xor a + ld [H_NEWLYPRESSEDBUTTONS], a + ld [H_CURRENTPRESSEDBUTTONS], a + ld [$ccd3], a + ld [$cd38], a + ld a, [wWhichTrade] ; $cd3d + cp $3 + jr c, .asm_76206 + ld hl, $d863 + bit 6, [hl] + set 6, [hl] + jr z, asm_761c6 +.asm_76206 + ld a, $2 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld a, $40 + ld [$ccd3], a + ld a, $1 + ld [$cd38], a + call Func_3486 + ld a, $3 + ld [W_LORELEICURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +CoordsData_76223: ; 76223 (1d:6223) + db $0A,$04 + db $0A,$05 + db $0B,$04 + db $0B,$05 + db $FF + +LoreleiScript3: ; 7622c (1d:622c) + ld a, [$cd38] + and a + ret nz + call Delay3 + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_LORELEICURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret +LoreleiScript2: ; 7623f (1d:623f) + call EndTrainerBattle + ld a, [W_ISINBATTLE] ; $d057 + cp $ff + jp z, LoreleiScript_761b6 + ld a, $1 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + jp DisplayTextID + +LoreleiTextPointers: ; 76251 (1d:6251) + dw LoreleiText1 + dw LoreleiText2 + +LoreleiTrainerHeaders: ; 76255 (1d:6255) +LoreleiTrainerHeader0: ; 76255 (1d:6255) + db $1 ; flag's bit + db ($0 << 4) ; trainer's view range + dw $d863 ; flag's byte + dw LoreleiBeforeBattleText ; 0x626c TextBeforeBattle + dw LoreleiAfterBattleText ; 0x6276 TextAfterBattle + dw LoreleiEndBattleText ; 0x6271 TextEndBattle + dw LoreleiEndBattleText ; 0x6271 TextEndBattle + + db $ff + +LoreleiText1: ; 76262 (1d:6262) + db $08 ; asm + ld hl, LoreleiTrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +LoreleiBeforeBattleText: ; 7626c (1d:626c) + TX_FAR _LoreleiBeforeBattleText + db "@" + +LoreleiEndBattleText: ; 76271 (1d:6271) + TX_FAR _LoreleiEndBattleText + db "@" + +LoreleiAfterBattleText: ; 76276 (1d:6276) + TX_FAR _LoreleiAfterBattleText + db "@" + +LoreleiText2: ; 7627b (1d:627b) + TX_FAR _LoreleiText2 + db "@" diff --git a/scripts/mansion1.asm b/scripts/mansion1.asm new file mode 100755 index 00000000..d68e2183 --- /dev/null +++ b/scripts/mansion1.asm @@ -0,0 +1,139 @@ +Mansion1Script: ; 442af (11:42af) + call Mansion1Subscript1 + call EnableAutoTextBoxDrawing + ld hl, Mansion1TrainerHeaders + ld de, Mansion1ScriptPointers + ld a, [W_MANSION1CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_MANSION1CURSCRIPT], a + ret + +Mansion1Subscript1: ; 442c5 (11:42c5) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld a, [$d796] + bit 0, a + jr nz, .asm_442ec ; 0x442d2 $18 + ld bc, $060c + call Mansion1Script_4430b + ld bc, $0308 + call Mansion1Script_44304 + ld bc, $080a + call Mansion1Script_44304 + ld bc, $0d0d + jp Mansion1Script_44304 +.asm_442ec + ld bc, $060c + call Mansion1Script_44304 + ld bc, $0308 + call Mansion1Script_4430b + ld bc, $080a + call Mansion1Script_4430b + ld bc, $0d0d + jp Mansion1Script_4430b + +Mansion1Script_44304: ; 44304 (11:4304) + ld a, $2d + ld [$d09f], a + jr asm_44310 + +Mansion1Script_4430b: ; 4430b (11:430b) + ld a, $e + ld [$d09f], a +asm_44310: ; 44310 (11:4310) + ld a, $17 + call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + ret + +Func_44316: ; 44316 (11:4316) + ld a, [$c109] + cp $4 + ret nz + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, $4 + ld [H_SPRITEHEIGHT], a + jp DisplayTextID + +Mansion1ScriptPointers: ; 44326 (11:4326) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +Mansion1TextPointers: ; 4432c (11:432c) + dw Mansion1Text1 + dw Predef5CText + dw Predef5CText + dw Mansion1Text4 + +Mansion1TrainerHeaders: ; 44334 (11:4334) +Mansion1TrainerHeader0: ; 44334 (11:4334) + db $1 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d798 ; flag's byte + dw Mansion1BattleText2 ; 0x434b TextBeforeBattle + dw Mansion1AfterBattleText2 ; 0x4355 TextAfterBattle + dw Mansion1EndBattleText2 ; 0x4350 TextEndBattle + dw Mansion1EndBattleText2 ; 0x4350 TextEndBattle + + db $ff + +Mansion1Text1: ; 44341 (11:4341) + db $08 ; asm + ld hl, Mansion1TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +Mansion1BattleText2: ; 4434b (11:434b) + TX_FAR _Mansion1BattleText2 + db "@" + +Mansion1EndBattleText2: ; 44350 (11:4350) + TX_FAR _Mansion1EndBattleText2 + db "@" + +Mansion1AfterBattleText2: ; 44355 (11:4355) + TX_FAR _Mansion1AfterBattleText2 + db "@" + +Mansion1Text4: ; 4435a (11:435a) + db $8 + ld hl, MansionSwitchText + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + jr nz, .asm_4438c ; 0x44368 $22 + ld a, $1 + ld [$cc3c], a + ld hl, $d126 + set 5, [hl] + ld hl, MansionSwitchPressedText + call PrintText + ld a, (SFX_02_57 - SFX_Headers_02) / 3 + call PlaySound + ld hl, $d796 + bit 0, [hl] + set 0, [hl] + jr z, .asm_44392 ; 0x44386 $a + res 0, [hl] + jr .asm_44392 ; 0x4438a $6 +.asm_4438c + ld hl, MansionSwitchNotPressedText + call PrintText +.asm_44392 + jp TextScriptEnd + +MansionSwitchText: ; 44395 (11:4395) + TX_FAR _MansionSwitchText + db "@" + +MansionSwitchPressedText: ; 4439a (11:439a) + TX_FAR _MansionSwitchPressedText + db "@" + +MansionSwitchNotPressedText: ; 4439f (11:439f) + TX_FAR _MansionSwitchNotPressedText + db "@" diff --git a/scripts/mansion2.asm b/scripts/mansion2.asm new file mode 100755 index 00000000..203a3a66 --- /dev/null +++ b/scripts/mansion2.asm @@ -0,0 +1,145 @@ +Mansion2Script: ; 51fd8 (14:5fd8) + call Mansion2Script_51fee + call EnableAutoTextBoxDrawing + ld hl, Mansion2TrainerHeaders + ld de, Mansion2ScriptPointers + ld a, [W_MANSION2CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_MANSION2CURSCRIPT], a + ret + +Mansion2Script_51fee: ; 51fee (14:5fee) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld a, [$d796] + bit 0, a + jr nz, .asm_52016 + ld a, $e + ld bc, $204 + call Mansion2Script_5202f + ld a, $54 + ld bc, $409 + call Mansion2Script_5202f + ld a, $5f + ld bc, $b03 + call Mansion2Script_5202f + ret +.asm_52016 + ld a, $5f + ld bc, $204 + call Mansion2Script_5202f + ld a, $e + ld bc, $409 + call Mansion2Script_5202f + ld a, $e + ld bc, $b03 + call Mansion2Script_5202f + ret + +Mansion2Script_5202f: ; 5202f (14:602f) + ld [$d09f], a + ld a, $17 + jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + +Mansion2Script_52037: ; 52037 (14:6037) + ld a, [$c109] + cp $4 + ret nz + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, $5 + ld [H_SPRITEHEIGHT], a + jp DisplayTextID + +Mansion2ScriptPointers: ; 52047 (14:6047) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +Mansion2TextPointers: ; 5204d (14:604d) + dw Mansion2Text1 + dw Predef5CText + dw Mansion2Text3 + dw Mansion2Text4 + dw Mansion2Text5 + +Mansion2TrainerHeaders: ; 52057 (14:6057) +Mansion2TrainerHeader0: ; 52057 (14:6057) + db $1 ; flag's bit + db ($0 << 4) ; trainer's view range + dw $d847 ; flag's byte + dw Mansion2BattleText1 ; 0x606e TextBeforeBattle + dw Mansion2AfterBattleText1 ; 0x6078 TextAfterBattle + dw Mansion2EndBattleText1 ; 0x6073 TextEndBattle + dw Mansion2EndBattleText1 ; 0x6073 TextEndBattle + + db $ff + +Mansion2Text1: ; 52064 (14:6064) + db $08 ; asm + ld hl, Mansion2TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +Mansion2BattleText1: ; 5206e (14:606e) + TX_FAR _Mansion2BattleText1 + db "@" + +Mansion2EndBattleText1: ; 52073 (14:6073) + TX_FAR _Mansion2EndBattleText1 + db "@" + +Mansion2AfterBattleText1: ; 52078 (14:6078) + TX_FAR _Mansion2AfterBattleText1 + db "@" + +Mansion2Text3: ; 5207d (14:607d) + TX_FAR _Mansion2Text3 + db "@" + +Mansion2Text4: ; 52082 (14:6082) + TX_FAR _Mansion2Text4 + db "@" + +Mansion3Text6: ; 52087 (14:6087) +Mansion2Text5: ; 52087 (14:6087) + db $8 + ld hl, Mansion2Text_520c2 + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + jr nz, .asm_520b9 ; 0x52095 $22 + ld a, $1 + ld [$cc3c], a + ld hl, $d126 + set 5, [hl] + ld hl, Mansion2Text_520c7 + call PrintText + ld a, (SFX_02_57 - SFX_Headers_02) / 3 + call PlaySound + ld hl, $d796 + bit 0, [hl] + set 0, [hl] + jr z, .asm_520bf ; 0x520b3 $a + res 0, [hl] + jr .asm_520bf ; 0x520b7 $6 +.asm_520b9 + ld hl, Mansion2Text_520cc + call PrintText +.asm_520bf + jp TextScriptEnd + +Mansion2Text_520c2: ; 520c2 (14:60c2) + TX_FAR _Mansion2Text_520c2 + db "@" + +Mansion2Text_520c7: ; 520c7 (14:60c7) + TX_FAR _Mansion2Text_520c7 + db "@" + +Mansion2Text_520cc: ; 520cc (14:60cc) + TX_FAR _Mansion2Text_520cc + db "@" diff --git a/scripts/mansion3.asm b/scripts/mansion3.asm new file mode 100755 index 00000000..9ad9454a --- /dev/null +++ b/scripts/mansion3.asm @@ -0,0 +1,153 @@ +Mansion3Script: ; 521ee (14:61ee) + call Mansion3Script_52204 + call EnableAutoTextBoxDrawing + ld hl, Mansion3TrainerHeader0 + ld de, Mansion3ScriptPointers + ld a, [W_MANSION3CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_MANSION3CURSCRIPT], a + ret + +Mansion3Script_52204: ; 52204 (14:6204) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld a, [$d796] + bit 0, a + jr nz, .asm_52224 + ld a, $e + ld bc, $207 + call Mansion2Script_5202f + ld a, $5f + ld bc, $507 + call Mansion2Script_5202f + ret +.asm_52224 + ld a, $5f + ld bc, $207 + call Mansion2Script_5202f + ld a, $e + ld bc, $507 + call Mansion2Script_5202f + ret + +Mansion3ScriptPointers: ; 52235 (14:6235) + dw Mansion3Script0 + dw Func_324c + dw EndTrainerBattle + +Mansion3Script0: ; 5223b (14:623b) + ld hl, CoordsData_52254 + call Mansion3Script_5225b + ld a, [$d71e] + and a + jp z, CheckFightingMapTrainers + cp $3 + ld a, $a5 + jr nz, .asm_52250 + ld a, $d6 +.asm_52250 + ld [$d71d], a + ret + +CoordsData_52254: ; 52254 (14:6254) + db $0E,$10 + db $0E,$11 + db $0E,$13 + db $FF + +Mansion3Script_5225b: ; 5225b (14:625b) + xor a + ld [$d71e], a + ld a, [$d72d] + bit 4, a + ret nz + call ArePlayerCoordsInArray + ret nc + ld a, [wWhichTrade] ; $cd3d + ld [$d71e], a + ld hl, $d72d + set 4, [hl] + ld hl, $d732 + set 4, [hl] + ret + +Func_5227a: ; 5227a (14:627a) + ld a, [$c109] + cp $4 + ret nz + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, $6 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + jp DisplayTextID + +Mansion3TextPointers: ; 5228a (14:628a) + dw Mansion3Text1 + dw Mansion3Text2 + dw Predef5CText + dw Predef5CText + dw Mansion3Text5 + dw Mansion3Text6 + +Mansion3TrainerHeaders: ; 52296 (14:6296) +Mansion3TrainerHeader0: ; 52296 (14:6296) + db $1 ; flag's bit + db ($0 << 4) ; trainer's view range + dw $d849 ; flag's byte + dw Mansion3BattleText1 ; 0x62c3 TextBeforeBattle + dw Mansion3AfterBattleText1 ; 0x62cd TextAfterBattle + dw Mansion3EndBattleText1 ; 0x62c8 TextEndBattle + dw Mansion3EndBattleText1 ; 0x62c8 TextEndBattle + +Mansion3TrainerHeader2: ; 522a2 (14:62a2) + db $2 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d849 ; flag's byte + dw Mansion3BattleText2 ; 0x62d2 TextBeforeBattle + dw Mansion3AfterBattleText2 ; 0x62dc TextAfterBattle + dw Mansion3EndBattleText2 ; 0x62d7 TextEndBattle + dw Mansion3EndBattleText2 ; 0x62d7 TextEndBattle + + db $ff + +Mansion3Text1: ; 522af (14:62af) + db $08 ; asm + ld hl, Mansion3TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +Mansion3Text2: ; 522b9 (14:62b9) + db $08 ; asm + ld hl, Mansion3TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +Mansion3BattleText1: ; 522c3 (14:62c3) + TX_FAR _Mansion3BattleText1 + db "@" + +Mansion3EndBattleText1: ; 522c8 (14:62c8) + TX_FAR _Mansion3EndBattleText1 + db "@" + +Mansion3AfterBattleText1: ; 522cd (14:62cd) + TX_FAR _Mansion3AfterBattleText1 + db "@" + +Mansion3BattleText2: ; 522d2 (14:62d2) + TX_FAR _Mansion3BattleText2 + db "@" + +Mansion3EndBattleText2: ; 522d7 (14:62d7) + TX_FAR _Mansion3EndBattleText2 + db "@" + +Mansion3AfterBattleText2: ; 522dc (14:62dc) + TX_FAR _Mansion3AfterBattleText2 + db "@" + +Mansion3Text5: ; 522e1 (14:62e1) + TX_FAR _Mansion3Text5 + db "@" diff --git a/scripts/mansion4.asm b/scripts/mansion4.asm new file mode 100755 index 00000000..78082ced --- /dev/null +++ b/scripts/mansion4.asm @@ -0,0 +1,132 @@ +Mansion4Script: ; 523b9 (14:63b9) + call Mansion4Script_523cf + call EnableAutoTextBoxDrawing + ld hl, Mansion4TrainerHeader0 + ld de, Mansion4ScriptPointers + ld a, [W_MANSION4CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_MANSION4CURSCRIPT], a + ret + +Mansion4Script_523cf: ; 523cf (14:63cf) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld a, [$d796] + bit 0, a + jr nz, .asm_523ff + ld a, $e + ld bc, $80d + call Mansion2Script_5202f + ld a, $e + ld bc, $b06 + call Mansion2Script_5202f + ld a, $5f + ld bc, $304 + call Mansion2Script_5202f + ld a, $54 + ld bc, $808 + call Mansion2Script_5202f + ret +.asm_523ff + ld a, $2d + ld bc, $80d + call Mansion2Script_5202f + ld a, $5f + ld bc, $b06 + call Mansion2Script_5202f + ld a, $e + ld bc, $304 + call Mansion2Script_5202f + ld a, $e + ld bc, $808 + call Mansion2Script_5202f + ret + +Func_52420: ; 52420 (14:6420) + ld a, [$c109] + cp $4 + ret nz + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, $9 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + jp DisplayTextID + +Mansion4ScriptPointers: ; 52430 (14:6430) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +Mansion4TextPointers: ; 52436 (14:6436) + dw Mansion4Text1 + dw Mansion4Text2 + dw Predef5CText + dw Predef5CText + dw Predef5CText + dw Predef5CText + dw Mansion4Text7 + dw Predef5CText + dw Mansion3Text6 + +Mansion4TrainerHeaders: ; 52448 (14:6448) +Mansion4TrainerHeader0: ; 52448 (14:6448) + db $1 ; flag's bit + db ($0 << 4) ; trainer's view range + dw $d84b ; flag's byte + dw Mansion4BattleText1 ; 0x6475 TextBeforeBattle + dw Mansion4AfterBattleText1 ; 0x647f TextAfterBattle + dw Mansion4EndBattleText1 ; 0x647a TextEndBattle + dw Mansion4EndBattleText1 ; 0x647a TextEndBattle + +Mansion4TrainerHeader2: ; 52454 (14:6454) + db $2 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d84b ; flag's byte + dw Mansion4BattleText2 ; 0x6484 TextBeforeBattle + dw Mansion4AfterBattleText2 ; 0x648e TextAfterBattle + dw Mansion4EndBattleText2 ; 0x6489 TextEndBattle + dw Mansion4EndBattleText2 ; 0x6489 TextEndBattle + + db $ff + +Mansion4Text1: ; 52461 (14:6461) + db $08 ; asm + ld hl, Mansion4TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +Mansion4Text2: ; 5246b (14:646b) + db $08 ; asm + ld hl, Mansion4TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +Mansion4BattleText1: ; 52475 (14:6475) + TX_FAR _Mansion4BattleText1 + db "@" + +Mansion4EndBattleText1: ; 5247a (14:647a) + TX_FAR _Mansion4EndBattleText1 + db "@" + +Mansion4AfterBattleText1: ; 5247f (14:647f) + TX_FAR _Mansion4AfterBattleText1 + db "@" + +Mansion4BattleText2: ; 52484 (14:6484) + TX_FAR _Mansion4BattleText2 + db "@" + +Mansion4EndBattleText2: ; 52489 (14:6489) + TX_FAR _Mansion4EndBattleText2 + db "@" + +Mansion4AfterBattleText2: ; 5248e (14:648e) + TX_FAR _Mansion4AfterBattleText2 + db "@" + +Mansion4Text7: ; 52493 (14:6493) + TX_FAR _Mansion4Text7 + db "@" diff --git a/scripts/mtmoon1.asm b/scripts/mtmoon1.asm new file mode 100755 index 00000000..1954391c --- /dev/null +++ b/scripts/mtmoon1.asm @@ -0,0 +1,225 @@ +MtMoon1Script: ; 499c8 (12:59c8) + call EnableAutoTextBoxDrawing + ld hl, MtMoon1TrainerHeader0 + ld de, MtMoon1ScriptPointers + ld a, [W_MTMOON1CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_MTMOON1CURSCRIPT], a + ret + +MtMoon1ScriptPointers: ; 499db (12:59db) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +MtMoon1TextPointers: ; 499e1 (12:59e1) + dw MtMoon1Text1 + dw MtMoon1Text2 + dw MtMoon1Text3 + dw MtMoon1Text4 + dw MtMoon1Text5 + dw MtMoon1Text6 + dw MtMoon1Text7 + dw Predef5CText + dw Predef5CText + dw Predef5CText + dw Predef5CText + dw Predef5CText + dw Predef5CText + dw MtMoon1Text14 + +MtMoon1TrainerHeaders: ; 499fd (12:59fd) +MtMoon1TrainerHeader0: ; 499fd (12:59fd) + db $1 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7f5 ; flag's byte + dw MtMoon1BattleText2 ; 0x5a98 TextBeforeBattle + dw MtMoon1AfterBattleText2 ; 0x5aa2 TextAfterBattle + dw MtMoon1EndBattleText2 ; 0x5a9d TextEndBattle + dw MtMoon1EndBattleText2 ; 0x5a9d TextEndBattle + +MtMoon1TrainerHeader2: ; 49a09 (12:5a09) + db $2 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7f5 ; flag's byte + dw MtMoon1BattleText3 ; 0x5aa7 TextBeforeBattle + dw MtMoon1AfterBattleText3 ; 0x5ab1 TextAfterBattle + dw MtMoon1EndBattleText3 ; 0x5aac TextEndBattle + dw MtMoon1EndBattleText3 ; 0x5aac TextEndBattle + +MtMoon1TrainerHeader3: ; 49a15 (12:5a15) + db $3 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7f5 ; flag's byte + dw MtMoon1BattleText4 ; 0x5ab6 TextBeforeBattle + dw MtMoon1AfterBattleText4 ; 0x5ac0 TextAfterBattle + dw MtMoon1EndBattleText4 ; 0x5abb TextEndBattle + dw MtMoon1EndBattleText4 ; 0x5abb TextEndBattle + +MtMoon1TrainerHeader4: ; 49a21 (12:5a21) + db $4 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7f5 ; flag's byte + dw MtMoon1BattleText5 ; 0x5ac5 TextBeforeBattle + dw MtMoon1AfterBattleText5 ; 0x5acf TextAfterBattle + dw MtMoon1EndBattleText5 ; 0x5aca TextEndBattle + dw MtMoon1EndBattleText5 ; 0x5aca TextEndBattle + +MtMoon1TrainerHeader5: ; 49a2d (12:5a2d) + db $5 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7f5 ; flag's byte + dw MtMoon1BattleText6 ; 0x5ad4 TextBeforeBattle + dw MtMoon1AfterBattleText6 ; 0x5ade TextAfterBattle + dw MtMoon1EndBattleText6 ; 0x5ad9 TextEndBattle + dw MtMoon1EndBattleText6 ; 0x5ad9 TextEndBattle + +MtMoon1TrainerHeader6: ; 49a39 (12:5a39) + db $6 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7f5 ; flag's byte + dw MtMoon1BattleText7 ; 0x5ae3 TextBeforeBattle + dw MtMoon1AfterBattleText7 ; 0x5aed TextAfterBattle + dw MtMoon1EndBattleText7 ; 0x5ae8 TextEndBattle + dw MtMoon1EndBattleText7 ; 0x5ae8 TextEndBattle + +MtMoon1TrainerHeader7: ; 49a45 (12:5a45) + db $7 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7f5 ; flag's byte + dw MtMoon1BattleText8 ; 0x5af2 TextBeforeBattle + dw MtMoon1AfterBattleText8 ; 0x5afc TextAfterBattle + dw MtMoon1EndBattleText8 ; 0x5af7 TextEndBattle + dw MtMoon1EndBattleText8 ; 0x5af7 TextEndBattle + + db $ff + +MtMoon1Text1: ; 49a52 (12:5a52) + db $08 ; asm + ld hl, MtMoon1TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +MtMoon1Text2: ; 49a5c (12:5a5c) + db $08 ; asm + ld hl, MtMoon1TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +MtMoon1Text3: ; 49a66 (12:5a66) + db $08 ; asm + ld hl, MtMoon1TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +MtMoon1Text4: ; 49a70 (12:5a70) + db $08 ; asm + ld hl, MtMoon1TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +MtMoon1Text5: ; 49a7a (12:5a7a) + db $08 ; asm + ld hl, MtMoon1TrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +MtMoon1Text6: ; 49a84 (12:5a84) + db $08 ; asm + ld hl, MtMoon1TrainerHeader6 + call TalkToTrainer + jp TextScriptEnd + +MtMoon1Text7: ; 49a8e (12:5a8e) + db $08 ; asm + ld hl, MtMoon1TrainerHeader7 + call TalkToTrainer + jp TextScriptEnd + +MtMoon1BattleText2: ; 49a98 (12:5a98) + TX_FAR _MtMoon1BattleText2 + db "@" + +MtMoon1EndBattleText2: ; 49a9d (12:5a9d) + TX_FAR _MtMoon1EndBattleText2 + db "@" + +MtMoon1AfterBattleText2: ; 49aa2 (12:5aa2) + TX_FAR _MtMoon1AfterBattleText2 + db "@" + +MtMoon1BattleText3: ; 49aa7 (12:5aa7) + TX_FAR _MtMoon1BattleText3 + db "@" + +MtMoon1EndBattleText3: ; 49aac (12:5aac) + TX_FAR _MtMoon1EndBattleText3 + db "@" + +MtMoon1AfterBattleText3: ; 49ab1 (12:5ab1) + TX_FAR _MtMoon1AfterBattleText3 + db "@" + +MtMoon1BattleText4: ; 49ab6 (12:5ab6) + TX_FAR _MtMoon1BattleText4 + db "@" + +MtMoon1EndBattleText4: ; 49abb (12:5abb) + TX_FAR _MtMoon1EndBattleText4 + db "@" + +MtMoon1AfterBattleText4: ; 49ac0 (12:5ac0) + TX_FAR _MtMoon1AfterBattleText4 + db "@" + +MtMoon1BattleText5: ; 49ac5 (12:5ac5) + TX_FAR _MtMoon1BattleText5 + db "@" + +MtMoon1EndBattleText5: ; 49aca (12:5aca) + TX_FAR _MtMoon1EndBattleText5 + db "@" + +MtMoon1AfterBattleText5: ; 49acf (12:5acf) + TX_FAR _MtMoon1AfterBattleText5 + db "@" + +MtMoon1BattleText6: ; 49ad4 (12:5ad4) + TX_FAR _MtMoon1BattleText6 + db "@" + +MtMoon1EndBattleText6: ; 49ad9 (12:5ad9) + TX_FAR _MtMoon1EndBattleText6 + db "@" + +MtMoon1AfterBattleText6: ; 49ade (12:5ade) + TX_FAR _MtMoon1AfterBattleText6 + db "@" + +MtMoon1BattleText7: ; 49ae3 (12:5ae3) + TX_FAR _MtMoon1BattleText7 + db "@" + +MtMoon1EndBattleText7: ; 49ae8 (12:5ae8) + TX_FAR _MtMoon1EndBattleText7 + db "@" + +MtMoon1AfterBattleText7: ; 49aed (12:5aed) + TX_FAR _MtMoon1AfterBattleText7 + db "@" + +MtMoon1BattleText8: ; 49af2 (12:5af2) + TX_FAR _MtMoon1BattleText8 + db "@" + +MtMoon1EndBattleText8: ; 49af7 (12:5af7) + TX_FAR _MtMoon1EndBattleText8 + db "@" + +MtMoon1AfterBattleText8: ; 49afc (12:5afc) + TX_FAR _MtMoon1AfterBattleText8 + db "@" + +MtMoon1Text14: ; 49b01 (12:5b01) + TX_FAR _MtMoon1Text14 + db "@" diff --git a/scripts/mtmoon2.asm b/scripts/mtmoon2.asm new file mode 100755 index 00000000..03e9d9cb --- /dev/null +++ b/scripts/mtmoon2.asm @@ -0,0 +1,10 @@ +MtMoon2Script: ; 51a42 (14:5a42) + call EnableAutoTextBoxDrawing + ret + +MtMoon2TextPointers: ; 51a46 (14:5a46) + dw MtMoonText1 + +MtMoonText1: ; 51a48 (14:5a48) + TX_FAR _MtMoonText1 + db "@" diff --git a/scripts/mtmoon3.asm b/scripts/mtmoon3.asm new file mode 100755 index 00000000..669d6fe4 --- /dev/null +++ b/scripts/mtmoon3.asm @@ -0,0 +1,414 @@ +MtMoon3Script: ; 49d0b (12:5d0b) + call EnableAutoTextBoxDrawing + ld hl, MtMoon3TrainerHeader0 ; $5e48 + ld de, MtMoon3ScriptPointers + ld a, [W_MTMOON3CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_MTMOON3CURSCRIPT], a + ld a, [$d7f6] + bit 1, a + ret z + ld hl, CoordsData_49d37 + call ArePlayerCoordsInArray + jr nc, .asm_49d31 ; 0x49d29 $6 + ld hl, $d72e + set 4, [hl] + ret +.asm_49d31 + ld hl, $d72e + res 4, [hl] + ret + +CoordsData_49d37: ; 49d37 (12:5d37) + db $05,$0B + db $05,$0C + db $05,$0D + db $05,$0E + db $06,$0B + db $06,$0C + db $06,$0D + db $06,$0E + db $07,$0B + db $07,$0C + db $07,$0D + db $07,$0E + db $08,$0B + db $08,$0C + db $08,$0D + db $08,$0E + db $FF + +MtMoon3Script_49d58: ; 49d58 (12:5d58) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_MTMOON3CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +MtMoon3ScriptPointers: ; 49d63 (12:5d63) + dw MtMoon3Script0 + dw Func_324c + dw EndTrainerBattle + dw MtMoon3Script3 + dw MtMoon3Script4 + dw MtMoon3Script5 + +MtMoon3Script0: ; 49d6f (12:5d6f) + ld a, [$d7f6] + bit 1, a + jp nz, MtMoon3Script_49d91 + ld a, [W_YCOORD] ; $d361 + cp $8 + jp nz, MtMoon3Script_49d91 + ld a, [W_XCOORD] ; $d362 + cp $d + jp nz, MtMoon3Script_49d91 + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, $1 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + jp DisplayTextID + +MtMoon3Script_49d91: ; 49d91 (12:5d91) + ld a, [$d7f6] + and $c0 + jp z, CheckFightingMapTrainers + ret + +MtMoon3Script3: ; 49d9a (12:5d9a) + ld a, [W_ISINBATTLE] ; $d057 + cp $ff + jp z, MtMoon3Script_49d58 + call UpdateSprites + call Delay3 + ld hl, $d7f6 + set 1, [hl] + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $0 + ld [W_MTMOON3CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +MtMoon3Script4: ; 49dba (12:5dba) + ld a, $1 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call SetSpriteMovementBytesToFF + ld hl, CoordsData_49dea + call ArePlayerCoordsInArray + jr c, .asm_49dd7 + ld hl, CoordsData_49df1 + call ArePlayerCoordsInArray + jp nc, CheckFightingMapTrainers + ld de, MovementData_49df9 + jr .asm_49dda +.asm_49dd7 + ld de, MovementData_49df8 +.asm_49dda + ld a, $1 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call MoveSprite + ld a, $5 + ld [W_MTMOON3CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +CoordsData_49dea: ; 49dea (12:5dea) + db $07,$0C + db $06,$0B + db $05,$0C + db $FF + +CoordsData_49df1: ; 49df1 (12:5df1) + db $07,$0D + db $06,$0E + db $05,$0E + db $FF + +MovementData_49df8: ; 49df8 (12:5df8) + db $C0 + +MovementData_49df9: ; 49df9 (12:5df9) + db $40,$FF + +MtMoon3Script5: ; 49dfb (12:5dfb) + ld a, [$d730] + bit 0, a + ret nz + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld a, $1 + ld [$cc3c], a + ld a, $a + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld a, [$d7f6] + bit 6, a + jr z, .asm_49e1d + ld a, $6e + jr .asm_49e1f +.asm_49e1d + ld a, $6d +.asm_49e1f + ld [$cc4d], a + ld a, $11 + call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $0 + ld [W_MTMOON3CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +MtMoon3TextPointers: ; 49e34 (12:5e34) + dw MtMoon3Text1 + dw MtMoon3Text2 + dw MtMoon3Text3 + dw MtMoon3Text4 + dw MtMoon3Text5 + dw MtMoon3Text6 + dw MtMoon3Text7 + dw Predef5CText + dw Predef5CText + dw MtMoon3Text_49f99 + +MtMoon3TrainerHeaders: ; 49e48 (12:5e48) +MtMoon3TrainerHeader0: ; 49e48 (12:5e48) + db $2 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7f6 ; flag's byte + dw MtMoon3BattleText2 ; 0x5f9f TextBeforeBattle + dw MtMoon3AfterBattleText2 ; 0x5fa9 TextAfterBattle + dw MtMoon3EndBattleText2 ; 0x5fa4 TextEndBattle + dw MtMoon3EndBattleText2 ; 0x5fa4 TextEndBattle + +MtMoon3TrainerHeader2: ; 49e54 (12:5e54) + db $3 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7f6 ; flag's byte + dw MtMoon3BattleText3 ; 0x5fae TextBeforeBattle + dw MtMoon3AfterBattleText3 ; 0x5fb8 TextAfterBattle + dw MtMoon3EndBattleText3 ; 0x5fb3 TextEndBattle + dw MtMoon3EndBattleText3 ; 0x5fb3 TextEndBattle + +MtMoon3TrainerHeader3: ; 49e60 (12:5e60) + db $4 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7f6 ; flag's byte + dw MtMoon3BattleText4 ; 0x5fbd TextBeforeBattle + dw MtMoon3AfterBattleText4 ; 0x5fc7 TextAfterBattle + dw MtMoon3EndBattleText4 ; 0x5fc2 TextEndBattle + dw MtMoon3EndBattleText4 ; 0x5fc2 TextEndBattle + +MtMoon3TrainerHeader4: ; 49e6c (12:5e6c) + db $5 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7f6 ; flag's byte + dw MtMoon3BattleText5 ; 0x5fcc TextBeforeBattle + dw MtMoon3AfterBattleText5 ; 0x5fd6 TextAfterBattle + dw MtMoon3EndBattleText5 ; 0x5fd1 TextEndBattle + dw MtMoon3EndBattleText5 ; 0x5fd1 TextEndBattle + + db $ff + +MtMoon3Text1: ; 49e79 (12:5e79) + db $08 ; asm + ld a, [$d7f6] + bit 1, a + jr z, .asm_be1e0 ; 0x49e7f + and $c0 + jr nz, .asm_f8cd4 ; 0x49e83 + ld hl, MtMoon3Text_49f8f + call PrintText + jr .asm_f1fba ; 0x49e8b +.asm_be1e0 ; 0x49e8d + ld hl, MtMoon3Text_49f85 + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, MtMoon3Text_49f8a + ld de, MtMoon3Text_49f8a + call PreBattleSaveRegisters + ldh a, [$8c] + ld [$cf13], a + call EngageMapTrainer + call InitBattleEnemyParameters + ld a, $3 + ld [W_MTMOON3CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + jr .asm_f1fba ; 0x49eb6 +.asm_f8cd4 ; 0x49eb8 + ld hl, MtMoon3Text_49f94 + call PrintText +.asm_f1fba ; 0x49ebe + jp TextScriptEnd + +MtMoon3Text2: ; 49ec1 (12:5ec1) + db $08 ; asm + ld hl, MtMoon3TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +MtMoon3Text3: ; 49ecb (12:5ecb) + db $08 ; asm + ld hl, MtMoon3TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +MtMoon3Text4: ; 49ed5 (12:5ed5) + db $08 ; asm + ld hl, MtMoon3TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +MtMoon3Text5: ; 49edf (12:5edf) + db $08 ; asm + ld hl, MtMoon3TrainerHeader4 ; $5e6c + call TalkToTrainer + jp TextScriptEnd + +MtMoon3Text6: ; 49ee9 (12:5ee9) + db $08 ; asm + ld a, $1 + ld [$cc3c], a + ld hl, MtMoon3Text_49f24 + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + jr nz, .asm_1fa5e ; 0x49efc + ld bc,(DOME_FOSSIL << 8) | 1 + call GiveItem + jp nc, MtMoon3Script_49f76 + call MtMoon3Script_49f69 + ld a, $6d + ld [$cc4d], a + ld a, $11 + call Predef + ld hl, $d7f6 + set 6, [hl] + ld a, $4 + ld [W_MTMOON3CURSCRIPT], a + ld [W_CURMAPSCRIPT], a +.asm_1fa5e ; 0x49f21 + jp TextScriptEnd + +MtMoon3Text_49f24: ; 49f24 (12:5f24) + TX_FAR _MtMoon3Text_49f24 + db "@" + +MtMoon3Text7: ; 49f29 (12:5f29) + db $08 ; asm + ld a, $1 + ld [$cc3c], a + ld hl, MtMoon3Text_49f64 + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + jr nz, .asm_8e988 ; 0x49f3c + ld bc, (HELIX_FOSSIL << 8) | 1 + call GiveItem + jp nc, MtMoon3Script_49f76 + call MtMoon3Script_49f69 + ld a, $6e + ld [$cc4d], a + ld a, $11 + call Predef + ld hl, $d7f6 + set 7, [hl] + ld a, $4 + ld [W_MTMOON3CURSCRIPT], a + ld [W_CURMAPSCRIPT], a +.asm_8e988 ; 0x49f61 + jp TextScriptEnd + +MtMoon3Text_49f64: ; 49f64 (12:5f64) + TX_FAR _MtMoon3Text_49f64 + db "@" + +MtMoon3Script_49f69: ; 49f69 (12:5f69) + ld hl, MtMoon3Text_49f6f + jp PrintText + +MtMoon3Text_49f6f: ; 49f6f (12:5f6f) + TX_FAR _MtMoon3Text_49f6f ; 0x80995 + db $11, $d, "@" + +MtMoon3Script_49f76: ; 49f76 (12:5f76) + ld hl, MtMoon3Text_49f7f + call PrintText + jp TextScriptEnd + +MtMoon3Text_49f7f: ; 49f7f (12:5f7f) + TX_FAR _MtMoon3Text_49f7f ; 0x809a8 + db $d, "@" + +MtMoon3Text_49f85: ; 49f85 (12:5f85) + TX_FAR _MtMoon3Text_49f85 + db "@" + +MtMoon3Text_49f8a: ; 49f8a (12:5f8a) + TX_FAR _MtMoon3Text_49f8a + db "@" + +MtMoon3Text_49f8f: ; 49f8f (12:5f8f) + TX_FAR _MtMoon3Text_49f8f + db "@" + +MtMoon3Text_49f94: ; 49f94 (12:5f94) + TX_FAR _MtMoon3Text_49f94 + db "@" + +MtMoon3Text_49f99: ; 49f99 (12:5f99) + TX_FAR _MtMoon3Text_49f99 + db $11, "@" + +MtMoon3BattleText2: ; 49f9f (12:5f9f) + TX_FAR _MtMoon3BattleText2 + db "@" + +MtMoon3EndBattleText2: ; 49fa4 (12:5fa4) + TX_FAR _MtMoon3EndBattleText2 + db "@" + +MtMoon3AfterBattleText2: ; 49fa9 (12:5fa9) + TX_FAR _MtMoon3AfterBattleText2 + db "@" + +MtMoon3BattleText3: ; 49fae (12:5fae) + TX_FAR _MtMoon3BattleText3 + db "@" + +MtMoon3EndBattleText3: ; 49fb3 (12:5fb3) + TX_FAR _MtMoon3EndBattleText3 + db "@" + +MtMoon3AfterBattleText3: ; 49fb8 (12:5fb8) + TX_FAR _MtMoon3AfterBattleText3 + db "@" + +MtMoon3BattleText4: ; 49fbd (12:5fbd) + TX_FAR _MtMoon3BattleText4 + db "@" + +MtMoon3EndBattleText4: ; 49fc2 (12:5fc2) + TX_FAR _MtMoon3EndBattleText4 + db "@" + +MtMoon3AfterBattleText4: ; 49fc7 (12:5fc7) + TX_FAR _MtMoon3AfterBattleText4 + db "@" + +MtMoon3BattleText5: ; 49fcc (12:5fcc) + TX_FAR _MtMoon3BattleText5 + db "@" + +MtMoon3EndBattleText5: ; 49fd1 (12:5fd1) + TX_FAR _MtMoon3EndBattleText5 + db "@" + +MtMoon3AfterBattleText5: ; 49fd6 (12:5fd6) + TX_FAR _MtMoon3AfterBattleText5 + db "@" diff --git a/scripts/mtmoonpokecenter.asm b/scripts/mtmoonpokecenter.asm new file mode 100755 index 00000000..01272c30 --- /dev/null +++ b/scripts/mtmoonpokecenter.asm @@ -0,0 +1,97 @@ +MtMoonPokecenterScript: ; 492cf (12:52cf) + call Func_22fa + jp EnableAutoTextBoxDrawing + +MtMoonPokecenterTextPointers: ; 492d5 (12:52d5) + dw MtMoonPokecenterText1 + dw MtMoonPokecenterText2 + dw MtMoonPokecenterText3 + dw MtMoonPokecenterText4 + dw MtMoonPokecenterText5 + dw MtMoonPokecenterText6 + +MtMoonPokecenterText1: ; 492e1 (12:52e1) + db $ff + +MtMoonPokecenterText2: ; 492e2 (12:52e2) + TX_FAR _MtMoonPokecenterText1 + db "@" + +MtMoonPokecenterText3: ; 492e7 (12:52e7) + TX_FAR _MtMoonPokecenterText3 + db "@" + +MtMoonPokecenterText4: ; 492ec (12:52ec) + db $08 ; asm + ld a, [$d7c6] + add a + jp c, .asm_49353 + ld hl, MtMoonPokecenterText_4935c + call PrintText + ld a, $13 + ld [$d125], a + call DisplayTextBoxID + call YesNoChoice + ld a, [$cc26] + and a + jp nz, .asm_4934e + ldh [$9f], a + ldh [$a1], a + ld a, $5 + ldh [$a0], a + call HasEnoughMoney + jr nc, .asm_faa09 ; 0x49317 + ld hl, MtMoonPokecenterText_49366 + jr .asm_49356 ; 0x4931c +.asm_faa09 ; 0x4931e + ld bc,(MAGIKARP << 8) | 5 + call GivePokemon + jr nc, .asm_49359 ; 0x49324 + xor a + ld [wWhichTrade], a + ld [$cd3f], a + ld a, $5 + ld [$cd3e], a + ld hl, $cd3f + ld de, $d349 + ld c, $3 + ld a, $c + call Predef + ld a, $13 + ld [$d125], a + call DisplayTextBoxID + ld hl, $d7c6 + set 7, [hl] + jr .asm_49359 ; 0x4934c +.asm_4934e ; 0x4934e + ld hl, MtMoonPokecenterText_49361 + jr .asm_49356 ; 0x49351 +.asm_49353 ; 0x49353 + ld hl, MtMoonPokecenterText_4936b +.asm_49356 ; 0x49356 + call PrintText +.asm_49359 ; 0x49359 + jp TextScriptEnd + +MtMoonPokecenterText_4935c: ; 4935c (12:535c) + TX_FAR _MtMoonPokecenterText_4935c + db "@" + +MtMoonPokecenterText_49361: ; 49361 (12:5361) + TX_FAR _MtMoonPokecenterText_49361 + db "@" + +MtMoonPokecenterText_49366: ; 49366 (12:5366) + TX_FAR _MtMoonPokecenterText_49366 + db "@" + +MtMoonPokecenterText_4936b: ; 4936b (12:536b) + TX_FAR _MtMoonPokecenterText_4936b + db "@" + +MtMoonPokecenterText5: ; 49370 (12:5370) + TX_FAR _MtMoonPokecenterText5 + db "@" + +MtMoonPokecenterText6: ; 49375 (12:5375) + db $f6 diff --git a/scripts/museum1f.asm b/scripts/museum1f.asm new file mode 100755 index 00000000..04261346 --- /dev/null +++ b/scripts/museum1f.asm @@ -0,0 +1,253 @@ +Museum1FScript: ; 5c0f7 (17:40f7) + ld a, $1 + ld [$cf0c], a + xor a + ld [$cc3c], a + ld hl, Museum1FScriptPointers + ld a, [W_MUSEUM1FCURSCRIPT] + jp CallFunctionInTable + +Museum1FScriptPointers: ; 5c109 (17:4109) + dw Museum1FScript0 + dw Museum1FScript1 + +Museum1FScript0: ; 5c10d (17:410d) + ld a, [W_YCOORD] + cp $4 + ret nz + ld a, [W_XCOORD] + cp $9 + jr z, .asm_5c120 ; 0x5c118 $6 + ld a, [W_XCOORD] + cp $a + ret nz +.asm_5c120 + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, $1 + ld [$ff8c], a + jp DisplayTextID + +Museum1FScript1: ; 5c12a (17:412a) + ret + +Museum1FTextPointers: ; 5c12b (17:412b) + dw Museum1FText1 + dw Museum1FText2 + dw Museum1FText3 + dw Museum1FText4 + dw Museum1FText5 + +Museum1FText1: ; 5c135 (17:4135) + db $8 + ld a, [W_YCOORD] + cp $4 + jr nz, .asm_8774b + ld a, [W_XCOORD] + cp $d + jp z, Museum1FScript_5c1f9 + jr .asm_b8709 +.asm_8774b + cp $3 + jr nz, .asm_d49e7 + ld a, [W_XCOORD] + cp $c + jp z, Museum1FScript_5c1f9 +.asm_d49e7 + ld a, [$d754] + bit 0, a + jr nz, .asm_31a16 + ld hl, Museum1FText_5c23d + call PrintText + jp asm_d1145 +.asm_b8709 + ld a, [$d754] + bit 0, a + jr z, .asm_3ded4 +.asm_31a16 + ld hl, Museum1FText_5c242 + call PrintText + jp asm_d1145 +.asm_3ded4 + ld a, $13 + ld [$d125], a + call DisplayTextBoxID + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld hl, Museum1FText_5c21f + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + jr nz, .asm_de133 + xor a + ld [$ff9f], a + ld [$ffa0], a + ld a, $50 + ld [$ffa1], a + call HasEnoughMoney + jr nc, .asm_0f3e3 + ld hl, Museum1FText_5c229 + call PrintText + jp .asm_de133 +.asm_0f3e3 + ld hl, Museum1FText_5c224 + call PrintText + ld hl, $d754 + set 0, [hl] + xor a + ld [$cd3d], a + ld [$cd3e], a + ld a, $50 + ld [$cd3f], a + ld hl, $cd3f + ld de, $d349 + ld c, $3 + ld a, $c + call Predef + ld a, $13 + ld [$d125], a + call DisplayTextBoxID + ld a, (SFX_02_5a - SFX_Headers_02) / 3 + call PlaySoundWaitForCurrent + call WaitForSoundToFinish + jr .asm_0b094 +.asm_de133 + ld hl, Museum1FText_5c21a ; $421a + call PrintText + ld a, $1 + ld [$cd38], a + ld a, $80 + ld [$ccd3], a + call Func_3486 + call UpdateSprites + jr asm_d1145 +.asm_0b094 + ld a, $1 + ld [W_MUSEUM1FCURSCRIPT], a + jr asm_d1145 + +Museum1FScript_5c1f9: ; 5c1f9 (17:41f9) + ld hl, Museum1FText_5c22e + call PrintText + call YesNoChoice + ld a, [$cc26] + cp $0 + jr nz, .asm_d1144 + ld hl, Museum1FText_5c233 + call PrintText + jr asm_d1145 +.asm_d1144 + ld hl, Museum1FText_5c238 + call PrintText +asm_d1145: ; 5c217 (17:4217) + jp TextScriptEnd + +Museum1FText_5c21a: ; 5c21a (17:421a) + TX_FAR _Museum1FText_5c21a + db "@" + +Museum1FText_5c21f: ; 5c21f (17:421f) + TX_FAR _Museum1FText_5c21f + db "@" + +Museum1FText_5c224: ; 5c224 (17:4224) + TX_FAR _Museum1FText_5c224 + db "@" + +Museum1FText_5c229: ; 5c229 (17:4229) + TX_FAR _Museum1FText_5c229 + db "@" + +Museum1FText_5c22e: ; 5c22e (17:422e) + TX_FAR _Museum1FText_5c22e + db "@" + +Museum1FText_5c233: ; 5c233 (17:4233) + TX_FAR _Museum1FText_5c233 + db "@" + +Museum1FText_5c238: ; 5c238 (17:4238) + TX_FAR _Museum1FText_5c238 + db "@" + +Museum1FText_5c23d: ; 5c23d (17:423d) + TX_FAR _Museum1FText_5c23d + db "@" + +Museum1FText_5c242: ; 5c242 (17:4242) + TX_FAR _Museum1FText_5c242 + db "@" + +Museum1FText2: ; 5c247 (17:4247) + db $08 ; asm + ld hl, Museum1FText_5c251 + call PrintText + jp TextScriptEnd + +Museum1FText_5c251: ; 5c251 (17:4251) + TX_FAR _Museum1FText_5c251 + db "@" + +Museum1FText3: ; 5c256 (17:4256) + db $08 ; asm + ld a, [$d754] + bit 1, a + jr nz, .asm_16599 ; 0x5c25c + ld hl, Museum1FText_5c28e + call PrintText + ld bc, (OLD_AMBER << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, $d754 + set 1, [hl] + ld a, $34 + ld [$cc4d], a + ld a, $11 + call Predef + ld hl, ReceivedOldAmberText + jr .asm_52e0f ; 0x5c27e +.BagFull + ld hl, Museum1FText_5c29e + jr .asm_52e0f ; 0x5c283 +.asm_16599 ; 0x5c285 + ld hl, Museum1FText_5c299 +.asm_52e0f ; 0x5c288 + call PrintText + jp TextScriptEnd + +Museum1FText_5c28e: ; 5c28e (17:428e) + TX_FAR _Museum1FText_5c28e + db "@" + +ReceivedOldAmberText: ; 5c293 (17:4293) + TX_FAR _ReceivedOldAmberText + db $0B, "@" + +Museum1FText_5c299: ; 5c299 (17:4299) + TX_FAR _Museum1FText_5c299 + db "@" + +Museum1FText_5c29e: ; 5c29e (17:429e) + TX_FAR _Museum1FText_5c29e + db "@" + +Museum1FText4: ; 5c2a3 (17:42a3) + db $08 ; asm + ld hl, Museum1FText_5c2ad + call PrintText + jp TextScriptEnd + +Museum1FText_5c2ad: ; 5c2ad (17:42ad) + TX_FAR _Museum1FText_5c2ad + db "@" + +Museum1FText5: ; 5c2b2 (17:42b2) + db $08 ; asm + ld hl, Museum1FText_5c2bc + call PrintText + jp TextScriptEnd + +Museum1FText_5c2bc: ; 5c2bc (17:42bc) + TX_FAR _Museum1FText_5c2bc + db "@" diff --git a/scripts/museum2f.asm b/scripts/museum2f.asm new file mode 100755 index 00000000..0f8a63ec --- /dev/null +++ b/scripts/museum2f.asm @@ -0,0 +1,39 @@ +Museum2FScript: ; 5c317 (17:4317) + jp EnableAutoTextBoxDrawing + +Museum2FTextPointers: ; 5c31a (17:431a) + dw Museum2FText1 + dw Museum2FText2 + dw Museum2FText3 + dw Museum2FText4 + dw Museum2FText5 + dw Museum2FText6 + dw Museum2FText7 + +Museum2FText1: ; 5c328 (17:4328) + TX_FAR _Museum2FText1 + db "@" + +Museum2FText2: ; 5c32d (17:432d) + TX_FAR _Museum2FText2 + db "@" + +Museum2FText3: ; 5c332 (17:4332) + TX_FAR _Museum2FText3 + db "@" + +Museum2FText4: ; 5c337 (17:4337) + TX_FAR _Museum2FText4 + db "@" + +Museum2FText5: ; 5c33c (17:433c) + TX_FAR _Museum2FText5 + db "@" + +Museum2FText6: ; 5c341 (17:4341) + TX_FAR _Museum2FText6 + db "@" + +Museum2FText7: ; 5c346 (17:4346) + TX_FAR _Museum2FText7 + db "@" diff --git a/scripts/namerater.asm b/scripts/namerater.asm new file mode 100755 index 00000000..73113b9d --- /dev/null +++ b/scripts/namerater.asm @@ -0,0 +1,109 @@ +NameRaterScript: ; 1da12 (7:5a12) + jp EnableAutoTextBoxDrawing + +NameRaterScript_1da15: ; 1da15 (7:5a15) + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + ret + +NameRaterScript_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 + +NameRaterTextPointers: ; 1da54 (7:5a54) + dw NameRaterText1 + +NameRaterText1: ; 1da56 (7:5a56) + db $8 + call SaveScreenTilesToBuffer2 + ld hl, NameRaterText_1dab3 + call NameRaterScript_1da15 + jr nz, .asm_1daae ; 0x1da60 $4c + ld hl, NameRaterText_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 NameRaterScript_1da20 + ld hl, NameRaterText_1dad1 + jr c, .asm_1daa8 ; 0x1da8b $1b + ld hl, NameRaterText_1dabd + call NameRaterScript_1da15 + jr nz, .asm_1daae ; 0x1da93 $19 + ld hl, NameRaterText_1dac2 + call PrintText + ld b, BANK(Func_655c) + ld hl, Func_655c + call Bankswitch + jr c, .asm_1daae ; 0x1daa3 $9 + ld hl, NameRaterText_1dac7 +.asm_1daa8 + call PrintText + jp TextScriptEnd +.asm_1daae + ld hl, NameRaterText_1dacc + jr .asm_1daa8 ; 0x1dab1 $f5 + +NameRaterText_1dab3: ; 1dab3 (7:5ab3) + TX_FAR _NameRaterText_1dab3 + db "@" + +NameRaterText_1dab8: ; 1dab8 (7:5ab8) + TX_FAR _NameRaterText_1dab8 + db "@" + +NameRaterText_1dabd: ; 1dabd (7:5abd) + TX_FAR _NameRaterText_1dabd + db "@" + +NameRaterText_1dac2: ; 1dac2 (7:5ac2) + TX_FAR _NameRaterText_1dac2 + db "@" + +NameRaterText_1dac7: ; 1dac7 (7:5ac7) + TX_FAR _NameRaterText_1dac7 + db "@" + +NameRaterText_1dacc: ; 1dacc (7:5acc) + TX_FAR _NameRaterText_1dacc + db "@" + +NameRaterText_1dad1: ; 1dad1 (7:5ad1) + TX_FAR _NameRaterText_1dad1 + db "@" diff --git a/scripts/oakslab.asm b/scripts/oakslab.asm new file mode 100755 index 00000000..01b9c62b --- /dev/null +++ b/scripts/oakslab.asm @@ -0,0 +1,1244 @@ +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 + +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 + +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] + + ld a, $1 + ld [W_OAKSLABCURSCRIPT], a + ret + +OaksLabScript1: ; 1cb6e (7:4b6e) + ld a, $8 + ld [$ff8c], a + ld de, OakEntryMovement + call MoveSprite + + ld a, $2 + ld [W_OAKSLABCURSCRIPT], a + ret + +OakEntryMovement: ; 1cb7e (7:4b7e) + db $40,$40,$40,$FF + +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 + + ld a, $3 + ld [W_OAKSLABCURSCRIPT], a + 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 + xor a + ld [$ff8d], a + call Func_34a6 ; face object + + ld a, $4 + ld [W_OAKSLABCURSCRIPT], a + ret + +PlayerEntryMovementRLE: ; 1cbcf (7:4bcf) + db $40, $8, $ff + +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 + + 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 + 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 + + 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 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 + + ld a, $7 + ld [W_OAKSLABCURSCRIPT], a + ret + +OaksLabScript7: ; 1cc72 (7:4c72) + ld a, [$cd38] + and a + ret nz + call Delay3 + + ld a, $6 + ld [W_OAKSLABCURSCRIPT], 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 + +.MiddleBallMovement1 + db 0,0,$C0,$C0,$C0,$40,$FF +.MiddleBallMovement2 + db 0,$C0,$C0,$C0,$FF + +.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 + +.RightBallMovement1 + db 0,0,$C0,$C0,$C0,$C0,$40,$FF +.RightBallMovement2 + db 0,$C0,$C0,$C0,$C0,$FF + +.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 + +.LeftBallMovement1 + db $00,$C0 ; not yet terminated! +.LeftBallMovement2 + db $C0,$FF + +.asm_1ccf3 + ld a, $1 + ld [$ff8c], a + call MoveSprite + + ld a, $9 + ld [W_OAKSLABCURSCRIPT], a + ret + +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 + + ld a, $a + ld [W_OAKSLABCURSCRIPT], a + ret + +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 + + ld a, $b + ld [W_OAKSLABCURSCRIPT], a + ret + +OaksLabScript11: ; 1cdb9 (7:4db9) + ld a, [$d730] + bit 0, a + ret nz + + ; 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, OaksLabText_1d3be + ld de, OaksLabText_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 + +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] + + 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 + 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 + xor a + ld [$c109], a +.done + 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 + 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 + + ld a, $10 + ld [W_OAKSLABCURSCRIPT], a + 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 + 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 + + ld a, $11 + ld [W_OAKSLABCURSCRIPT], 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 + +OaksLabScript18: ; 1d009 (7:5009) + ret + +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 + +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 + 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 + 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 "@" + +OaksLabLookAtSquirtle: ; 1d19f (7:519f) + ld hl, OaksLabSquirtleText + jr OaksLabMonChoiceMenu +OaksLabSquirtleText: ; 1d1a4 (7:51a4) + TX_FAR _OaksLabSquirtleText + db "@" + +OaksLabLookAtBulbasaur: ; 1d1a9 (7:51a9) + ld hl, OaksLabBulbasaurText + jr OaksLabMonChoiceMenu +OaksLabBulbasaurText: ; 1d1ae (7:51ae) + TX_FAR _OaksLabBulbasaurText + db "@" + +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 + +OaksLabMonEnergeticText: ; 1d222 (7:5222) + TX_FAR _OaksLabMonEnergeticText + db "@" + +OaksLabReceivedMonText: ; 1d227 (7:5227) + TX_FAR _OaksLabReceivedMonText + db $11, "@" + +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 + +OaksLabLastMonText: ; 1d243 (7:5243) + TX_FAR _OaksLabLastMonText + db "@" + +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, OaksLabText_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, OaksLabText_1d2f0 + call PrintText + jr .asm_0f042 ; 0x1d29f +.asm_4a5e0 ; 0x1d2a1 + ld hl, OaksLabText_1d2f5 + call PrintText + jr .asm_0f042 ; 0x1d2a7 +.asm_76269 ; 0x1d2a9 + ld b, OAKS_PARCEL + call IsItemInBag + jr nz, .asm_a8fcf ; 0x1d2ae + ld hl, OaksLabText_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 + +OaksLabText_1d2f0: ; 1d2f0 (7:52f0) + TX_FAR _OaksLabText_1d2f0 + db "@" + +OaksLabText_1d2f5: ; 1d2f5 (7:52f5) + TX_FAR _OaksLabText_1d2f5 + db "@" + +OaksLabText_1d2fa: ; 1d2fa (7:52fa) + TX_FAR _OaksLabText_1d2fa + db "@" + +OaksLabDeliverParcelText: ; 1d2ff (7:52ff) + TX_FAR _OaksLabDeliverParcelText1 + db $11 + TX_FAR _OaksLabDeliverParcelText2 + db "@" + +OaksLabAroundWorldText: ; 1d309 (7:5309) + TX_FAR _OaksLabAroundWorldText + db "@" + +OaksLabGivePokeballsText: ; 1d30e (7:530e) + TX_FAR _OaksLabGivePokeballsText1 + db $11 + TX_FAR _OaksLabGivePokeballsText2 + db "@" + +OaksLabPleaseVisitText: ; 1d318 (7:5318) + TX_FAR _OaksLabPleaseVisitText + db "@" + +OaksLabText_1d31d: ; 1d31d (7:531d) + TX_FAR _OaksLabText_1d31d + db "@" + +OaksLabText34: ; 1d322 (7:5322) +OaksLabText33: ; 1d322 (7:5322) +OaksLabText7: ; 1d322 (7:5322) +OaksLabText6: ; 1d322 (7:5322) + db $08 ; asm + ld hl, OaksLabText_1d32c + call PrintText + jp TextScriptEnd + +OaksLabText_1d32c: ; 1d32c (7:532c) + TX_FAR _OaksLabText_1d32c + db "@" + +OaksLabText35: ; 1d331 (7:5331) +OaksLabText8: ; 1d331 (7:5331) + TX_FAR _OaksLabText8 + db "@" + +OaksLabText36: ; 1d336 (7:5336) +OaksLabText9: ; 1d336 (7:5336) + db $08 ; asm + ld hl, OaksLabText_1d340 + call PrintText + jp TextScriptEnd + +OaksLabText_1d340: ; 1d340 (7:5340) + TX_FAR _OaksLabText_1d340 + db "@" + +OaksLabText17: ; 1d345 (7:5345) + db $8 + ld hl, OaksLabRivalWaitingText + call PrintText + jp TextScriptEnd + +OaksLabRivalWaitingText: ; 1d34f (7:534f) + TX_FAR _OaksLabRivalWaitingText + db "@" + +OaksLabText18: ; 1d354 (7:5354) + db $8 + ld hl, OaksLabChooseMonText + call PrintText + jp TextScriptEnd + +OaksLabChooseMonText: ; 1d35e (7:535e) + TX_FAR _OaksLabChooseMonText + db "@" + +OaksLabText19: ; 1d363 (7:5363) + db $8 + ld hl, OaksLabRivalInterjectionText + call PrintText + jp TextScriptEnd + +OaksLabRivalInterjectionText: ; 1d36d (7:536d) + TX_FAR _OaksLabRivalInterjectionText + db "@" + +OaksLabText20: ; 1d372 (7:5372) + db $8 + ld hl, OaksLabBePatientText + call PrintText + jp TextScriptEnd + +OaksLabBePatientText: ; 1d37c (7:537c) + TX_FAR _OaksLabBePatientText + db "@" + +OaksLabText12: ; 1d381 (7:5381) + db $8 + ld hl, OaksLabLeavingText + call PrintText + jp TextScriptEnd + +OaksLabLeavingText: ; 1d38b (7:538b) + TX_FAR _OaksLabLeavingText + db "@" + +OaksLabText13: ; 1d390 (7:5390) + db $8 + ld hl, OaksLabRivalPickingMonText + call PrintText + jp TextScriptEnd + +OaksLabRivalPickingMonText: ; 1d39a (7:539a) + TX_FAR _OaksLabRivalPickingMonText + db "@" + +OaksLabText14: ; 1d39f (7:539f) + db $8 + ld hl, OaksLabRivalReceivedMonText + call PrintText + jp TextScriptEnd + +OaksLabRivalReceivedMonText: ; 1d3a9 (7:53a9) + TX_FAR _OaksLabRivalReceivedMonText + db $11, "@" + +OaksLabText15: ; 1d3af (7:53af) + db $8 + ld hl, OaksLabRivalChallengeText + call PrintText + jp TextScriptEnd + +OaksLabRivalChallengeText: ; 1d3b9 (7:53b9) + TX_FAR _OaksLabRivalChallengeText + db "@" + +OaksLabText_1d3be: ; 1d3be (7:53be) + TX_FAR _OaksLabText_1d3be + db "@" + +OaksLabText_1d3c3: ; 1d3c3 (7:53c3) + TX_FAR _OaksLabText_1d3c3 + db "@" + +OaksLabText16: ; 1d3c8 (7:53c8) + db $8 + ld hl, OaksLabRivalToughenUpText + call PrintText + jp TextScriptEnd + +OaksLabRivalToughenUpText: ; 1d3d2 (7:53d2) + TX_FAR _OaksLabRivalToughenUpText + db "@" + +OaksLabText21: ; 1d3d7 (7:53d7) + TX_FAR _OaksLabText21 + db "@" + +OaksLabText22: ; 1d3dc (7:53dc) + TX_FAR _OaksLabText22 + db "@" + +OaksLabText23: ; 1d3e1 (7:53e1) + TX_FAR _OaksLabText23 + db "@" + +OaksLabText24: ; 1d3e6 (7:53e6) + TX_FAR _OaksLabText24 + db "@" + +OaksLabText25: ; 1d3eb (7:53eb) + TX_FAR _OaksLabText25 + db $11, "@" + +OaksLabText26: ; 1d3f1 (7:53f1) + TX_FAR _OaksLabText26 + db "@" + +OaksLabText27: ; 1d3f6 (7:53f6) + TX_FAR _OaksLabText27 + db "@" + +OaksLabText38: ; 1d3fb (7:53fb) +OaksLabText37: ; 1d3fb (7:53fb) +OaksLabText11: ; 1d3fb (7:53fb) +OaksLabText10: ; 1d3fb (7:53fb) + db $08 ; asm + ld hl, OaksLabText_1d405 + call PrintText + jp TextScriptEnd + +OaksLabText_1d405: ; 1d405 (7:5405) + TX_FAR _OaksLabText_1d405 + db "@" diff --git a/scripts/pallettown.asm b/scripts/pallettown.asm new file mode 100755 index 00000000..e1b51cf6 --- /dev/null +++ b/scripts/pallettown.asm @@ -0,0 +1,228 @@ +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 "@" diff --git a/scripts/pewtercity.asm b/scripts/pewtercity.asm new file mode 100755 index 00000000..e738dedf --- /dev/null +++ b/scripts/pewtercity.asm @@ -0,0 +1,321 @@ +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, PewterCityText_193f1 + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + jr nz, .asm_f46a9 ; 0x193bf + ld hl, PewterCityText_193f6 + call PrintText + jr .asm_ac429 ; 0x193c7 +.asm_f46a9 ; 0x193c9 + ld hl, PewterCityText_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 + +PewterCityText_193f1: ; 193f1 (6:53f1) + TX_FAR _PewterCityText_193f1 + db "@" + +PewterCityText_193f6: ; 193f6 (6:53f6) + TX_FAR _PewterCityText_193f6 + db "@" + +PewterCityText_193fb: ; 193fb (6:53fb) + TX_FAR _PewterCityText_193fb + db "@" + +PewterCityText13: ; 19400 (6:5400) + TX_FAR _PewterCityText13 + db "@" + +PewterCityText4: ; 19405 (6:5405) + db $8 + ld hl, PewterCityText_19427 + call PrintText + call YesNoChoice + ld a, [$cc26] + cp $0 + jr nz, .asm_e4603 + ld hl, PewterCityText_1942c + call PrintText + jr .asm_e4604 ; 0x1941c $6 +.asm_e4603 + ld hl, PewterCityText_19431 + call PrintText +.asm_e4604 ; 0x19424 + jp TextScriptEnd + +PewterCityText_19427: ; 19427 (6:5427) + TX_FAR _PewterCityText_19427 + db "@" + +PewterCityText_1942c: ; 1942c (6:542c) + TX_FAR _PewterCityText_1942c + db "@" + +PewterCityText_19431: ; 19431 (6:5431) + TX_FAR _PewterCityText_19431 + db "@" + +PewterCityText5: ; 19436 (6:5436) + db $08 ; asm + ld hl, PewterCityText_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 + +PewterCityText_1945d: ; 1945d (6:545d) + TX_FAR _PewterCityText_1945d + db "@" + +PewterCityText14: ; 19462 (6:5462) + +PewterCityText_19462: ; 19462 (6:5462) + TX_FAR _PewterCityText_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 "@" diff --git a/scripts/pewtergym.asm b/scripts/pewtergym.asm new file mode 100755 index 00000000..2ba001d4 --- /dev/null +++ b/scripts/pewtergym.asm @@ -0,0 +1,237 @@ +PewterGymScript: ; 5c387 (17:4387) + ld hl, $d126 + bit 6, [hl] + res 6, [hl] + call nz, PewterGymScript_5c3a4 + call EnableAutoTextBoxDrawing + ld hl, PewterGymTrainerHeaders + ld de, PewterGymScriptPointers + ld a, [W_PEWTERGYMCURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_PEWTERGYMCURSCRIPT], a + ret + +PewterGymScript_5c3a4: ; 5c3a4 (17:43a4) + ld hl, Gym1CityName ; $43ad + ld de, Gym1LeaderName ; $43b9 + jp LoadGymLeaderAndCityName + +Gym1CityName: ; 5c3ad (17:43ad) + db "PEWTER CITY@" + +Gym1LeaderName: ; 5c3b9 (17:43b9) + db "BROCK@" + +PewterGymScript_5c3bf: ; 5c3bf (17:43bf) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_PEWTERGYMCURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +PewterGymScriptPointers: ; 5c3ca (17:43ca) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + dw PewterGymScript3 + +PewterGymScript3: ; 5c3d2 (17:43d2) + ld a, [W_ISINBATTLE] ; $d057 + cp $ff + jp z, PewterGymScript_5c3bf + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + +PewterGymScript_5c3df: ; 5c3df (17:43df) + ld a, $4 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld hl, $d755 + set 7, [hl] + ld bc, (TM_34 << 8) | 1 + call GiveItem + jr nc, .BagFull + ld a, $5 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld hl, $d755 + set 6, [hl] + jr .asm_5c408 +.BagFull + ld a, $6 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID +.asm_5c408 + ld hl, W_OBTAINEDBADGES + set 0, [hl] + ld hl, $d72a + set 0, [hl] + + ld a, $4 + ld [$cc4d], a + ld a, $11 + call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) + ld a, $22 + ld [$cc4d], a + ld a, $11 + call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) + + ld hl, $d7eb + res 0, [hl] + res 7, [hl] + + ; deactivate gym trainers + ld hl, $d755 + set 2, [hl] + + jp PewterGymScript_5c3bf + +PewterGymTextPointers: ; 5c435 (17:4435) + dw PewterGymText1 + dw PewterGymText2 + dw PewterGymText3 + dw PewterGymText4 + dw PewterGymText5 + dw PewterGymText6 + +PewterGymTrainerHeaders: ; 5c441 (17:4441) +PewterGymTrainerHeader0: ; 5c441 (17:4441) + db $2 ; flag's bit + db ($5 << 4) ; trainer's view range + dw $d755 ; flag's byte + dw PewterGymBattleText1 ; 0x44d0 TextBeforeBattle + dw PewterGymAfterBattleText1 ; 0x44da TextAfterBattle + dw PewterGymEndBattleText1 ; 0x44d5 TextEndBattle + dw PewterGymEndBattleText1 ; 0x44d5 TextEndBattle + + db $ff + +PewterGymText1: ; 5c44e (17:444e) + db $08 ; asm + ld a, [$d755] + bit 7, a + jr z, .asm_4a735 ; 0x5c454 + bit 6, a + jr nz, .asm_ff7d0 ; 0x5c458 + call z, PewterGymScript_5c3df + call DisableWaitingAfterTextDisplay + jr .asm_e0ffb ; 0x5c460 +.asm_ff7d0 ; 0x5c462 + ld hl, PewterGymText_5c4a3 + call PrintText + jr .asm_e0ffb ; 0x5c468 +.asm_4a735 ; 0x5c46a + ld hl, PewterGymText_5c49e + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, PewterGymText_5c4bc + ld de, PewterGymText_5c4bc + call PreBattleSaveRegisters + ldh a, [$8c] + ld [$cf13], a + call EngageMapTrainer + call InitBattleEnemyParameters + ld a, $1 + ld [$d05c], a + xor a + ldh [$b4], a + ld a, $3 + ld [W_PEWTERGYMCURSCRIPT], a + ld [W_CURMAPSCRIPT], a +.asm_e0ffb ; 0x5c49b + jp TextScriptEnd + +PewterGymText_5c49e: ; 5c49e (17:449e) + TX_FAR _PewterGymText_5c49e + db "@" + +PewterGymText_5c4a3: ; 5c4a3 (17:44a3) + TX_FAR _PewterGymText_5c4a3 + db "@" + +PewterGymText4: ; 5c4a8 (17:44a8) + TX_FAR _TM34PreReceiveText + db "@" + +PewterGymText5: ; 5c4ad (17:44ad) + TX_FAR _ReceivedTM34Text + db $0B + TX_FAR _TM34ExplanationText + db "@" + +PewterGymText6: ; 5c4b7 (17:44b7) + TX_FAR _TM34NoRoomText + db "@" + +PewterGymText_5c4bc: ; 5c4bc (17:44bc) + TX_FAR _PewterGymText_5c4bc + db $0B + TX_FAR _PewterGymText_5c4c1 + db "@" + +PewterGymText2: ; 5c4c6 (17:44c6) + db $08 ; asm + ld hl, PewterGymTrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +PewterGymBattleText1: ; 5c4d0 (17:44d0) + TX_FAR _PewterGymBattleText1 + db "@" + +PewterGymEndBattleText1: ; 5c4d5 (17:44d5) + TX_FAR _PewterGymEndBattleText1 + db "@" + +PewterGymAfterBattleText1: ; 5c4da (17:44da) + TX_FAR _PewterGymAfterBattleText1 + db "@" + +PewterGymText3: ; 5c4df (17:44df) + db $08 ; asm + ld a, [$d72a] + bit 0, a + jr nz, .asm_71369 ; 0x5c4e5 + ld hl, PewterGymText_5c515 + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + jr nz, .asm_6123a ; 0x5c4f4 + ld hl, PewterGymText_5c51a + call PrintText + jr .asm_d1578 ; 0x5c4fc +.asm_6123a ; 0x5c4fe + ld hl, PewterGymText_5c524 + call PrintText +.asm_d1578 ; 0x5c504 + ld hl, PewterGymText_5c51f + call PrintText + jr .asm_07013 ; 0x5c50a +.asm_71369 ; 0x5c50c + ld hl, PewterGymText_5c529 + call PrintText +.asm_07013 ; 0x5c512 + jp TextScriptEnd + +PewterGymText_5c515: ; 5c515 (17:4515) + TX_FAR _PewterGymText_5c515 + db "@" + +PewterGymText_5c51a: ; 5c51a (17:451a) + TX_FAR _PewterGymText_5c51a + db "@" + +PewterGymText_5c51f: ; 5c51f (17:451f) + TX_FAR _PewterGymText_5c51f + db "@" + +PewterGymText_5c524: ; 5c524 (17:4524) + TX_FAR _PewterGymText_5c524 + db "@" + +PewterGymText_5c529: ; 5c529 (17:4529) + TX_FAR _PewterGymText_5c529 + db "@" diff --git a/scripts/pewterhouse1.asm b/scripts/pewterhouse1.asm new file mode 100755 index 00000000..05d27a14 --- /dev/null +++ b/scripts/pewterhouse1.asm @@ -0,0 +1,23 @@ +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 + db "@" + +PewterHouse1Text3: ; 1d611 (7:5611) + TX_FAR _PewterHouse1Text3 + db "@" diff --git a/scripts/pewterhouse2.asm b/scripts/pewterhouse2.asm new file mode 100755 index 00000000..92e40de2 --- /dev/null +++ b/scripts/pewterhouse2.asm @@ -0,0 +1,14 @@ +PewterHouse2Script: ; 1d648 (7:5648) + jp EnableAutoTextBoxDrawing + +PewterHouse2TextPointers: ; 1d64b (7:564b) + dw PewterHouse2Text1 + dw PewterHouse2Text2 + +PewterHouse2Text1: ; 1d64f (7:564f) + TX_FAR _PewterHouse2Text1 + db "@" + +PewterHouse2Text2: ; 1d654 (7:5654) + TX_FAR _PewterHouse2Text2 + db "@" diff --git a/scripts/pewtermart.asm b/scripts/pewtermart.asm new file mode 100755 index 00000000..3abe2a93 --- /dev/null +++ b/scripts/pewtermart.asm @@ -0,0 +1,30 @@ +PewterMartScript: ; 74cad (1d:4cad) + call EnableAutoTextBoxDrawing + ld a, $1 + ld [$cf0c], a + ret + +PewterMartTextPointers: ; 74cb6 (1d:4cb6) + dw PewterMartText1 + dw PewterMartText2 + dw PewterMartText3 + +PewterMartText2: ; 74cbc (1d:4cbc) + db $08 ; asm + ld hl, PewterMartText_74cc6 + call PrintText + jp TextScriptEnd + +PewterMartText_74cc6: ; 74cc6 (1d:4cc6) + TX_FAR _PewterMartText_74cc6 + db "@" + +PewterMartText3: ; 74ccb (1d:4ccb) + db $08 ; asm + ld hl, PewterMartText_74cd5 + call PrintText + jp TextScriptEnd + +PewterMartText_74cd5: ; 74cd5 (1d:4cd5) + TX_FAR _PewterMartText_74cd5 + db "@" diff --git a/scripts/pewterpokecenter.asm b/scripts/pewterpokecenter.asm new file mode 100755 index 00000000..4b97a01d --- /dev/null +++ b/scripts/pewterpokecenter.asm @@ -0,0 +1,75 @@ +PewterPokecenterScript: ; 5c587 (17:4587) + call Func_22fa + jp EnableAutoTextBoxDrawing + +PewterPokecenterTextPointers: ; 5c58d (17:458d) + dw PewterPokecenterText1 + dw PewterPokecenterText2 + dw PewterPokecenterText3 + dw PewterPokecenterText4 + +PewterPokecenterText1: ; 5c595 (17:4595) + db $ff + +PewterPokecenterText2: ; 5c596 (17:4596) + TX_FAR _PewterPokecenterText1 + db "@" + +PewterPokecenterText3: ; 5c59b (17:459b) + db $8 + ld a, $1 + ld [$cc3c], a + ld hl, PewterPokecenterText5 + call PrintText + ld a, $ff + call PlaySound + ld c, $20 + call DelayFrames + ld hl, Unknown_5c608 ; $4608 + ld de, $cd3f + ld bc, $0004 + call CopyData + ld a, [$c132] + ld hl, $cd3f +.asm_5c5c3 + cp [hl] + inc hl + jr nz, .asm_5c5c3 ; 0x5c5c5 $fc + dec hl + push hl + ld c, BANK(Music_JigglypuffSong) + ld a, MUSIC_JIGGLYPUFF_SONG + call PlayMusic + pop hl +.asm_5c5d1 + ld a, [hl] + ld [$c132], a + push hl + ld hl, $cd3f + ld de, $cd3e + ld bc, $0004 + call CopyData + ld a, [$cd3e] + ld [$cd42], a + pop hl + ld c, $18 + call DelayFrames + ld a, [$c026] + ld b, a + ld a, [$c027] + or b + jr nz, .asm_5c5d1 ; 0x5c5f6 $d9 + ld c, $30 + call DelayFrames + call Func_2307 + jp TextScriptEnd + +PewterPokecenterText5: ; 5c603 (17:4603) + TX_FAR _PewterPokecenterText5 + db "@" + +Unknown_5c608: ; 5c608 (17:4608) + db $30, $38, $34, $3c + +PewterPokecenterText4: ; 5c60c (17:460c) + db $f6 diff --git a/scripts/pokemontower1.asm b/scripts/pokemontower1.asm new file mode 100755 index 00000000..4887e740 --- /dev/null +++ b/scripts/pokemontower1.asm @@ -0,0 +1,29 @@ +PokemonTower1Script: ; 6042c (18:442c) + jp EnableAutoTextBoxDrawing + +PokemonTower1TextPointers: ; 6042f (18:442f) + dw PokemonTower1Text1 + dw PokemonTower1Text2 + dw PokemonTower1Text3 + dw PokemonTower1Text4 + dw PokemonTower1Text5 + +PokemonTower1Text1: ; 60439 (18:4439) + TX_FAR _PokemonTower1Text1 + db "@" + +PokemonTower1Text2: ; 6043e (18:443e) + TX_FAR _PokemonTower1Text2 + db "@" + +PokemonTower1Text3: ; 60443 (18:4443) + TX_FAR _PokemonTower1Text3 + db "@" + +PokemonTower1Text4: ; 60448 (18:4448) + TX_FAR _PokemonTower1Text4 + db "@" + +PokemonTower1Text5: ; 6044d (18:444d) + TX_FAR _PokemonTower1Text5 + db "@" diff --git a/scripts/pokemontower2.asm b/scripts/pokemontower2.asm new file mode 100755 index 00000000..0dbb3a93 --- /dev/null +++ b/scripts/pokemontower2.asm @@ -0,0 +1,180 @@ +PokemonTower2Script: ; 604f2 (18:44f2) + call EnableAutoTextBoxDrawing + ld hl, PokemonTower2ScriptPointers + ld a, [W_POKEMONTOWER2CURSCRIPT] + jp CallFunctionInTable + +PokemonTower2Script_604fe: ; 604fe (18:44fe) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_POKEMONTOWER2CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +PokemonTower2ScriptPointers: ; 60509 (18:4509) + dw PokemonTower2Script0 + dw PokemonTower2Script1 + dw PokemonTower2Script2 + +PokemonTower2Script0: ; 6050f (18:450f) + ld a, [$d764] + bit 7, a + ret nz + ld hl, CoordsData_6055e ; $455e + call ArePlayerCoordsInArray + ret nc + ld a, $ff + ld [$c0ee], a + call PlaySound + ld c, BANK(Music_MeetRival) + ld a, MUSIC_MEET_RIVAL + call PlayMusic + ld hl, $d764 + res 6, [hl] + ld a, [$cd3d] + cp $1 + ld a, $8 + ld b, $0 + jr nz, .asm_60544 ; 0x60539 $9 + ld hl, $d764 + set 6, [hl] + ld a, $2 + ld b, $c +.asm_60544 + ld [$d528], a + ld a, $1 + ld [$ff8c], a + ld a, b + ld [$ff8d], a + call Func_34a6 + ld a, $1 + ld [$ff8c], a + call DisplayTextID + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld [H_NEWLYPRESSEDBUTTONS], a + ret + +CoordsData_6055e: ; 6055e (18:455e) + db $05,$0F + db $06,$0E + db $0F ; isn't this supposed to end in $ff? + +PokemonTower2Script1: ; 60563 (18:4563) + ld a, [$d057] + cp $ff + jp z, PokemonTower2Script_604fe + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld hl, $d764 + set 7, [hl] + ld a, $1 + ld [$ff8c], a + call DisplayTextID + ld de, MovementData_605b2 + ld a, [$d764] + bit 6, a + jr nz, .asm_60589 ; 0x60584 $3 + ld de, MovementData_605a9 +.asm_60589 + ld a, $1 + ld [$ff8c], a + call MoveSprite + ld a, $ff + ld [$c0ee], a + call PlaySound + ld b, BANK(Music_RivalAlternateStart) + ld hl, Music_RivalAlternateStart + call Bankswitch + ld a, $2 + ld [W_POKEMONTOWER2CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +MovementData_605a9: ; 605a9 (18:45a9) + db $C0,$00,$00,$C0,$00,$00,$C0,$C0,$FF + +MovementData_605b2: ; 605b2 (18:45b2) + db $00,$00,$C0,$C0,$C0,$C0,$00,$00,$FF + +PokemonTower2Script2: ; 605bb (18:45bb) + ld a, [$d730] + bit 0, a + ret nz + ld a, $38 + ld [$cc4d], a + ld a, $11 + call Predef + xor a + ld [wJoypadForbiddenButtonsMask], a + call Func_2307 + ld a, $0 + ld [W_POKEMONTOWER2CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +PokemonTower2TextPointers: ; 605db (18:45db) + dw PokemonTower2Text1 + dw PokemonTower2Text2 + +PokemonTower2Text1: ; 605df (18:45df) + db $08 ; asm + ld a, [$d764] + bit 7, a + jr z, .asm_16f24 ; 0x605e5 + ld hl, PokemonTower2Text_6063c + call PrintText + jr .asm_41852 ; 0x605ed +.asm_16f24 ; 0x605ef + ld hl, PokemonTower2Text_6062d + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, PokemonTower2Text_60632 + ld de, PokemonTower2Text_60637 ; XXX $4637 + call PreBattleSaveRegisters + ld a, SONY2 + $c8 + ld [W_CUROPPONENT], a + + ; select which team to use during the encounter + ld a, [W_RIVALSTARTER] + cp SQUIRTLE + jr nz, .NotSquirtle ; 0x6060f + ld a, $4 + jr .done +.NotSquirtle ; 0x60615 + cp BULBASAUR + jr nz, .Charmander ; 0x60617 + ld a, $5 + jr .done +.Charmander ; 0x6061d + ld a, $6 +.done + ld [W_TRAINERNO], a + + ld a, $1 + ld [W_POKEMONTOWER2CURSCRIPT], a + ld [W_CURMAPSCRIPT], a +.asm_41852 ; 0x6062a + jp TextScriptEnd + +PokemonTower2Text_6062d: ; 6062d (18:462d) + TX_FAR _PokemonTower2Text_6062d + db "@" + +PokemonTower2Text_60632: ; 60632 (18:4632) + TX_FAR _PokemonTower2Text_60632 + db "@" + +PokemonTower2Text_60637: ; 60637 (18:4637) + TX_FAR _PokemonTower2Text_60637 + db "@" + +PokemonTower2Text_6063c: ; 6063c (18:463c) + TX_FAR _PokemonTower2Text_6063c + db "@" + +PokemonTower2Text2: ; 60641 (18:4641) + TX_FAR _PokemonTower2Text2 + db "@" diff --git a/scripts/pokemontower3.asm b/scripts/pokemontower3.asm new file mode 100755 index 00000000..74568a83 --- /dev/null +++ b/scripts/pokemontower3.asm @@ -0,0 +1,102 @@ +PokemonTower3Script: ; 606cc (18:46cc) + call EnableAutoTextBoxDrawing + ld hl, PokemonTower3TrainerHeaders + ld de, PokemonTower3ScriptPointers + ld a, [W_POKEMONTOWER3CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_POKEMONTOWER3CURSCRIPT], a + ret + +PokemonTower3ScriptPointers: ; 606df (18:46df) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +PokemonTower3TextPointers: ; 606e5 (18:46e5) + dw PokemonTower3Text1 + dw PokemonTower3Text2 + dw PokemonTower3Text3 + dw Predef5CText + +PokemonTower3TrainerHeaders: ; 606ed (18:46ed) +PokemonTower3TrainerHeader0: ; 606ed (18:46ed) + db $1 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d765 ; flag's byte + dw PokemonTower3BattleText1 ; 0x4730 TextBeforeBattle + dw PokemonTower3AfterBattleText1 ; 0x473a TextAfterBattle + dw PokemonTower3EndBattleText1 ; 0x4735 TextEndBattle + dw PokemonTower3EndBattleText1 ; 0x4735 TextEndBattle + +PokemonTower3TrainerHeader1: ; 606f9 (18:46f9) + db $2 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d765 ; flag's byte + dw PokemonTower3BattleText2 ; 0x473f TextBeforeBattle + dw PokemonTower3AfterBattleText2 ; 0x4749 TextAfterBattle + dw PokemonTower3EndBattleText2 ; 0x4744 TextEndBattle + dw PokemonTower3EndBattleText2 ; 0x4744 TextEndBattle + +PokemonTower3TrainerHeader2: ; 60705 (18:4705) + db $3 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d765 ; flag's byte + dw PokemonTower3BattleText3 ; 0x474e TextBeforeBattle + dw PokemonTower3AfterBattleText3 ; 0x4758 TextAfterBattle + dw PokemonTower3EndBattleText3 ; 0x4753 TextEndBattle + dw PokemonTower3EndBattleText3 ; 0x4753 TextEndBattle + db $ff + +PokemonTower3Text1: ; 60712 (18:4712) + db $08 ; asm + ld hl, PokemonTower3TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +PokemonTower3Text2: ; 6071c (18:471c) + db $08 ; asm + ld hl, PokemonTower3TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +PokemonTower3Text3: ; 60726 (18:4726) + db $08 ; asm + ld hl, PokemonTower3TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +PokemonTower3BattleText1: ; 60730 (18:4730) + TX_FAR _PokemonTower3BattleText1 + db "@" + +PokemonTower3EndBattleText1: ; 60735 (18:4735) + TX_FAR _PokemonTower3EndBattleText1 + db "@" + +PokemonTower3AfterBattleText1: ; 6073a (18:473a) + TX_FAR _PokemonTower3AfterBattleText1 + db "@" + +PokemonTower3BattleText2: ; 6073f (18:473f) + TX_FAR _PokemonTower3BattleText2 + db "@" + +PokemonTower3EndBattleText2: ; 60744 (18:4744) + TX_FAR _PokemonTower3EndBattleText2 + db "@" + +PokemonTower3AfterBattleText2: ; 60749 (18:4749) + TX_FAR _PokemonTower3AfterBattleText2 + db "@" + +PokemonTower3BattleText3: ; 6074e (18:474e) + TX_FAR _PokemonTower3BattleText3 + db "@" + +PokemonTower3EndBattleText3: ; 60753 (18:4753) + TX_FAR _PokemonTower3EndBattleText3 + db "@" + +PokemonTower3AfterBattleText3: ; 60758 (18:4758) + TX_FAR _PokemonTower3AfterBattleText3 + db "@" diff --git a/scripts/pokemontower4.asm b/scripts/pokemontower4.asm new file mode 100755 index 00000000..05fcb23f --- /dev/null +++ b/scripts/pokemontower4.asm @@ -0,0 +1,105 @@ +PokemonTower4Script: ; 607f6 (18:47f6) + call EnableAutoTextBoxDrawing + ld hl, PokemonTower4TrainerHeaders + ld de, PokemonTower4ScriptPointers + ld a, [W_POKEMONTOWER4CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_POKEMONTOWER4CURSCRIPT], a + ret + +PokemonTower4ScriptPointers: ; 60809 (18:4809) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +PokemonTower4TextPointers: ; 6080f (18:480f) + dw PokemonTower4Text1 + dw PokemonTower4Text2 + dw PokemonTower4Text3 + dw Predef5CText + dw Predef5CText + dw Predef5CText + +PokemonTower4TrainerHeaders: ; 6081b (18:481b) +PokemonTower4TrainerHeader0: ; 6081b (18:481b) + db $1 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d766 ; flag's byte + dw PokemonTower4BattleText1 ; 0x485e TextBeforeBattle + dw PokemonTower4AfterBattleText1 ; 0x4868 TextAfterBattle + dw PokemonTower4EndBattleText1 ; 0x4863 TextEndBattle + dw PokemonTower4EndBattleText1 ; 0x4863 TextEndBattle + +PokemonTower4TrainerHeader1: ; 60827 (18:4827) + db $2 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d766 ; flag's byte + dw PokemonTower4BattleText2 ; 0x486d TextBeforeBattle + dw PokemonTower4AfterBattleText2 ; 0x4877 TextAfterBattle + dw PokemonTower4EndBattleText2 ; 0x4872 TextEndBattle + dw PokemonTower4EndBattleText2 ; 0x4872 TextEndBattle + +PokemonTower4TrainerHeader2: ; 60833 (18:4833) + db $3 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d766 ; flag's byte + dw PokemonTower4BattleText3 ; 0x487c TextBeforeBattle + dw PokemonTower4AfterBattleText3 ; 0x4886 TextAfterBattle + dw PokemonTower4EndBattleText3 ; 0x4881 TextEndBattle + dw PokemonTower4EndBattleText3 ; 0x4881 TextEndBattle + + db $ff + +PokemonTower4Text1: ; 60840 (18:4840) + db $08 ; asm + ld hl, PokemonTower4TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +PokemonTower4Text2: ; 6084a (18:484a) + db $08 ; asm + ld hl, PokemonTower4TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +PokemonTower4Text3: ; 60854 (18:4854) + db $08 ; asm + ld hl, PokemonTower4TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +PokemonTower4BattleText1: ; 6085e (18:485e) + TX_FAR _PokemonTower4BattleText1 + db "@" + +PokemonTower4EndBattleText1: ; 60863 (18:4863) + TX_FAR _PokemonTower4EndBattleText1 + db "@" + +PokemonTower4AfterBattleText1: ; 60868 (18:4868) + TX_FAR _PokemonTower4AfterBattleText1 + db "@" + +PokemonTower4BattleText2: ; 6086d (18:486d) + TX_FAR _PokemonTower4BattleText2 + db "@" + +PokemonTower4EndBattleText2: ; 60872 (18:4872) + TX_FAR _PokemonTower4EndBattleText2 + db "@" + +PokemonTower4AfterBattleText2: ; 60877 (18:4877) + TX_FAR _PokemonTower4AfterBattleText2 + db "@" + +PokemonTower4BattleText3: ; 6087c (18:487c) + TX_FAR _PokemonTower4BattleText3 + db "@" + +PokemonTower4EndBattleText3: ; 60881 (18:4881) + TX_FAR _PokemonTower4EndBattleText3 + db "@" + +PokemonTower4AfterBattleText3: ; 60886 (18:4886) + TX_FAR _PokemonTower4AfterBattleText3 + db "@" diff --git a/scripts/pokemontower5.asm b/scripts/pokemontower5.asm new file mode 100755 index 00000000..5c43c7da --- /dev/null +++ b/scripts/pokemontower5.asm @@ -0,0 +1,181 @@ +PokemonTower5Script: ; 60932 (18:4932) + call EnableAutoTextBoxDrawing + ld hl, PokemonTower5TrainerHeaders + ld de, PokemonTower5ScriptPointers + ld a, [W_POKEMONTOWER5CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_POKEMONTOWER5CURSCRIPT], a + ret + +PokemonTower5ScriptPointers: ; 60945 (18:4945) + dw PokemonTower5Script0 + dw Func_324c + dw EndTrainerBattle + +PokemonTower5Script0: ; 6094b (18:494b) + ld hl, CoordsData_60992 ; $4992 + call ArePlayerCoordsInArray + jr c, .asm_60960 + ld hl, $d72e + res 4, [hl] + ld hl, $d767 + res 7, [hl] + jp CheckFightingMapTrainers +.asm_60960 + ld hl, $d767 + bit 7, [hl] + set 7, [hl] + ret nz + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld hl, $d72e + set 4, [hl] + ld a, $7 + call Predef ; indirect jump to HealParty (f6a5 (3:76a5)) + call GBFadeOut2 + call Delay3 + call Delay3 + call GBFadeIn2 + ld a, $7 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + xor a + ld [wJoypadForbiddenButtonsMask], a + ret + +CoordsData_60992: ; 60992 (18:4992) + db $08,$0A + db $08,$0B + db $09,$0A + db $09,$0B + db $FF + +PokemonTower5TextPointers: ; 6099b (18:499b) + dw PokemonTower5Text1 + dw PokemonTower5Text2 + dw PokemonTower5Text3 + dw PokemonTower5Text4 + dw PokemonTower5Text5 + dw Predef5CText + dw PokemonTower5Text7 + +PokemonTower5TrainerHeaders: ; 609a9 (18:49a9) +PokemonTower5TrainerHeader0: ; 609a9 (18:49a9) + db $2 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d767 ; flag's byte + dw PokemonTower5BattleText1 ; 0x49e9 TextBeforeBattle + dw PokemonTower5AfterBattleText1 ; 0x49f3 TextAfterBattle + dw PokemonTower5EndBattleText1 ; 0x49ee TextEndBattle + dw PokemonTower5EndBattleText1 ; 0x49ee TextEndBattle + +PokemonTower5TrainerHeader1: ; 609b5 (18:49b5) + db $3 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d767 ; flag's byte + dw PokemonTower5BattleText2 ; 0x4a02 TextBeforeBattle + dw PokemonTower5AfterBattleText2 ; 0x4a0c TextAfterBattle + dw PokemonTower5EndBattleText2 ; 0x4a07 TextEndBattle + dw PokemonTower5EndBattleText2 ; 0x4a07 TextEndBattle + +PokemonTower5TrainerHeader2: ; 609c1 (18:49c1) + db $4 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d767 ; flag's byte + dw PokemonTower5BattleText3 ; 0x4a1b TextBeforeBattle + dw PokemonTower5AfterBattleText3 ; 0x4a25 TextAfterBattle + dw PokemonTower5EndBattleText3 ; 0x4a20 TextEndBattle + dw PokemonTower5EndBattleText3 ; 0x4a20 TextEndBattle + +PokemonTower5TrainerHeader3: ; 609cd (18:49cd) + db $5 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d767 ; flag's byte + dw PokemonTower5BattleText4 ; 0x4a34 TextBeforeBattle + dw PokemonTower5AfterBattleText4 ; 0x4a3e TextAfterBattle + dw PokemonTower5EndBattleText4 ; 0x4a39 TextEndBattle + dw PokemonTower5EndBattleText4 ; 0x4a39 TextEndBattle + + db $ff + +PokemonTower5Text1: ; 609da (18:49da) + TX_FAR _PokemonTower5Text1 + db "@" + +PokemonTower5Text2: ; 609df (18:49df) + db $08 ; asm + ld hl, PokemonTower5TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +PokemonTower5BattleText1: ; 609e9 (18:49e9) + TX_FAR _PokemonTower5BattleText1 + db "@" + +PokemonTower5EndBattleText1: ; 609ee (18:49ee) + TX_FAR _PokemonTower5EndBattleText1 + db "@" + +PokemonTower5AfterBattleText1: ; 609f3 (18:49f3) + TX_FAR _PokemonTower5AfterBattleText1 + db "@" + +PokemonTower5Text3: ; 609f8 (18:49f8) + db $08 ; asm + ld hl, PokemonTower5TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +PokemonTower5BattleText2: ; 60a02 (18:4a02) + TX_FAR _PokemonTower5BattleText2 + db "@" + +PokemonTower5EndBattleText2: ; 60a07 (18:4a07) + TX_FAR _PokemonTower5EndBattleText2 + db "@" + +PokemonTower5AfterBattleText2: ; 60a0c (18:4a0c) + TX_FAR _PokemonTower5AfterBattleText2 + db "@" + +PokemonTower5Text4: ; 60a11 (18:4a11) + db $08 ; asm + ld hl, PokemonTower5TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +PokemonTower5BattleText3: ; 60a1b (18:4a1b) + TX_FAR _PokemonTower5BattleText3 + db "@" + +PokemonTower5EndBattleText3: ; 60a20 (18:4a20) + TX_FAR _PokemonTower5EndBattleText3 + db "@" + +PokemonTower5AfterBattleText3: ; 60a25 (18:4a25) + TX_FAR _PokemonTower5AfterBattleText3 + db "@" + +PokemonTower5Text5: ; 60a2a (18:4a2a) + db $08 ; asm + ld hl, PokemonTower5TrainerHeader3 ; $49cd + call TalkToTrainer + jp TextScriptEnd + +PokemonTower5BattleText4: ; 60a34 (18:4a34) + TX_FAR _PokemonTower5BattleText4 + db "@" + +PokemonTower5EndBattleText4: ; 60a39 (18:4a39) + TX_FAR _PokemonTower5EndBattleText4 + db "@" + +PokemonTower5AfterBattleText4: ; 60a3e (18:4a3e) + TX_FAR _PokemonTower5AfterBattleText4 + db "@" + +PokemonTower5Text7: ; 60a43 (18:4a43) + TX_FAR _PokemonTower5Text7 + db "@" diff --git a/scripts/pokemontower6.asm b/scripts/pokemontower6.asm new file mode 100755 index 00000000..e3d8a4c4 --- /dev/null +++ b/scripts/pokemontower6.asm @@ -0,0 +1,215 @@ +PokemonTower6Script: ; 60aef (18:4aef) + call EnableAutoTextBoxDrawing + ld hl, PokemonTower6TrainerHeaders + ld de, PokemonTower6ScriptPointers + ld a, [W_POKEMONTOWER6CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_POKEMONTOWER6CURSCRIPT], a + ret + +Func_60b02: ; 60b02 (18:4b02) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_POKEMONTOWER6CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +PokemonTower6ScriptPointers: ; 60b0d (18:4b0d) + dw PokemonTower6Script0 + dw Func_324c + dw EndTrainerBattle + dw PokemonTower6Script3 + dw PokemonTower6Script4 + +PokemonTower6Script0: ; 60b17 (18:4b17) + ld a, [$d768] + bit 7, a + jp nz, CheckFightingMapTrainers + ld hl, CoordsData_60b45 ; $4b45 + call ArePlayerCoordsInArray + jp nc, CheckFightingMapTrainers + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, $6 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld a, MAROWAK + ld [W_CUROPPONENT], a ; $d059 + ld a, 30 + ld [W_CURENEMYLVL], a ; $d127 + ld a, $4 + ld [W_POKEMONTOWER6CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +CoordsData_60b45: ; 60b45 (18:4b45) + db $10,$0A,$FF + +PokemonTower6Script4: ; 60b48 (18:4b48) + ld a, [W_ISINBATTLE] ; $d057 + cp $ff + jp z, Func_60b02 + ld a, $ff + ld [wJoypadForbiddenButtonsMask], a + ld a, [$d72d] + bit 6, a + ret nz + call UpdateSprites + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld a, [$cf0b] + and a + jr nz, .asm_60b82 + ld hl, $d768 + set 7, [hl] + ld a, $7 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $0 + ld [W_POKEMONTOWER6CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret +.asm_60b82 + ld a, $1 + ld [$cd38], a + ld a, $10 + ld [$ccd3], a + xor a + ld [$c206], a + ld [$cd3b], a + ld hl, $d730 + set 7, [hl] + ld a, $3 + ld [W_POKEMONTOWER6CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +PokemonTower6Script3: ; 60ba1 (18:4ba1) + ld a, [$cd38] + and a + ret nz + call Delay3 + xor a + ld [W_POKEMONTOWER6CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +PokemonTower6TextPointers: ; 60bb1 (18:4bb1) + dw PokemonTower6Text1 + dw PokemonTower6Text2 + dw PokemonTower6Text3 + dw Predef5CText + dw Predef5CText + dw PokemonTower6Text6 + dw PokemonTower6Text7 + +PokemonTower6TrainerHeaders: ; 60bbf (18:4bbf) +PokemonTower6TrainerHeader0: ; 60bbf (18:4bbf) + db $1 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d768 ; flag's byte + dw PokemonTower6BattleText1 ; 0x4c29 TextBeforeBattle + dw PokemonTower6AfterBattleText1 ; 0x4c33 TextAfterBattle + dw PokemonTower6EndBattleText1 ; 0x4c2e TextEndBattle + dw PokemonTower6EndBattleText1 ; 0x4c2e TextEndBattle + +PokemonTower6TrainerHeader1: ; 60bcb (18:4bcb) + db $2 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d768 ; flag's byte + dw PokemonTower6BattleText2 ; 0x4c38 TextBeforeBattle + dw PokemonTower6AfterBattleText2 ; 0x4c42 TextAfterBattle + dw PokemonTower6EndBattleText2 ; 0x4c3d TextEndBattle + dw PokemonTower6EndBattleText2 ; 0x4c3d TextEndBattle + +PokemonTower6TrainerHeader2: ; 60bd7 (18:4bd7) + db $3 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d768 ; flag's byte + dw PokemonTower6BattleText3 ; 0x4c47 TextBeforeBattle + dw PokemonTower6AfterBattleText3 ; 0x4c51 TextAfterBattle + dw PokemonTower6EndBattleText3 ; 0x4c4c TextEndBattle + dw PokemonTower6EndBattleText3 ; 0x4c4c TextEndBattle + + db $ff + +PokemonTower6Text1: ; 60be4 (18:4be4) + db $08 ; asm + ld hl, PokemonTower6TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +PokemonTower6Text2: ; 60bee (18:4bee) + db $08 ; asm + ld hl, PokemonTower6TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +PokemonTower6Text3: ; 60bf8 (18:4bf8) + db $08 ; asm + ld hl, PokemonTower6TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +PokemonTower6Text7: ; 60c02 (18:4c02) + db $8 + ld hl, PokemonTower2Text_60c1f + call PrintText + ld a, MAROWAK + call PlayCry + call WaitForSoundToFinish + ld c, $1e + call DelayFrames + ld hl, PokemonTower2Text_60c24 + call PrintText + jp TextScriptEnd + +PokemonTower2Text_60c1f: ; 60c1f (18:4c1f) + TX_FAR _PokemonTower2Text_60c1f + db "@" + +PokemonTower2Text_60c24: ; 60c24 (18:4c24) + TX_FAR _PokemonTower2Text_60c24 + db "@" + +PokemonTower6BattleText1: ; 60c29 (18:4c29) + TX_FAR _PokemonTower6BattleText1 + db "@" + +PokemonTower6EndBattleText1: ; 60c2e (18:4c2e) + TX_FAR _PokemonTower6EndBattleText1 + db "@" + +PokemonTower6AfterBattleText1: ; 60c33 (18:4c33) + TX_FAR _PokemonTower6AfterBattleText1 + db "@" + +PokemonTower6BattleText2: ; 60c38 (18:4c38) + TX_FAR _PokemonTower6BattleText2 + db "@" + +PokemonTower6EndBattleText2: ; 60c3d (18:4c3d) + TX_FAR _PokemonTower6EndBattleText2 + db "@" + +PokemonTower6AfterBattleText2: ; 60c42 (18:4c42) + TX_FAR _PokemonTower6AfterBattleText2 + db "@" + +PokemonTower6BattleText3: ; 60c47 (18:4c47) + TX_FAR _PokemonTower6BattleText3 + db "@" + +PokemonTower6EndBattleText3: ; 60c4c (18:4c4c) + TX_FAR _PokemonTower6EndBattleText3 + db "@" + +PokemonTower6AfterBattleText3: ; 60c51 (18:4c51) + TX_FAR _PokemonTower6AfterBattleText3 + db "@" + +PokemonTower6Text6: ; 60c56 (18:4c56) + TX_FAR _PokemonTower6Text6 + db "@" diff --git a/scripts/pokemontower7.asm b/scripts/pokemontower7.asm new file mode 100755 index 00000000..6dddebb2 --- /dev/null +++ b/scripts/pokemontower7.asm @@ -0,0 +1,282 @@ +PokemonTower7Script: ; 60d05 (18:4d05) + call EnableAutoTextBoxDrawing + ld hl, PokemonTower7TrainerHeaders + ld de, PokemonTower7ScriptPointers + ld a, [W_POKEMONTOWER7CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_POKEMONTOWER7CURSCRIPT], a + ret + +PokemonTower7Script_60d18: ; 60d18 (18:4d18) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_POKEMONTOWER7CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +PokemonTower7ScriptPointers: ; 60d23 (18:4d23) + dw CheckFightingMapTrainers + dw Func_324c + dw PokemonTower7Script2 + dw PokemonTower7Script3 + dw PokemonTower7Script4 + +PokemonTower7Script2: ; 60d23 (18:4d23) + ld hl, wFlags_0xcd60 + res 0, [hl] + ld a, [W_ISINBATTLE] ; $d057 + cp $ff + jp z, PokemonTower7Script_60d18 + call EndTrainerBattle + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld a, [$cf13] + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + call PokemonTower7Script_60db6 + ld a, $3 + ld [W_POKEMONTOWER7CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +PokemonTower7Script3: ; 60d56 (18:4d56) + ld a, [$d730] + bit 0, a + ret nz + ld hl, W_MISSABLEOBJECTLIST + ld a, [$cf13] + ld b, a +.missableObjectsListLoop + ld a, [hli] + cp b ; search for sprite ID in missing objects list + ld a, [hli] + jr nz, .missableObjectsListLoop + ld [$cc4d], a ; remove missable object + ld a, $11 + call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [$cf13], a + ld [wTrainerHeaderFlagBit], a + ld [$da38], a + ld a, $0 + ld [W_POKEMONTOWER7CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +PokemonTower7Script4: ; 60d86 (18:4d86) + ld a, $ff + ld [wJoypadForbiddenButtonsMask], a + ld a, $43 + ld [$cc4d], a + ld a, $11 + call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) + ld a, $4 + ld [$c109], a + ld a, $95 + ld [H_DOWNARROWBLINKCNT1], a ; $ff8b + ld a, $1 + ld [$d42f], a + ld a, $4 + ld [$d365], a + ld hl, $d72d + set 3, [hl] + ld a, $0 + ld [W_POKEMONTOWER7CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +PokemonTower7Script_60db6: ; 60db6 (18:4db6) + ld hl, CoordsData_60de3 ; $4de3 + ld a, [$cf13] + dec a + swap a + ld d, $0 + ld e, a + add hl, de + ld a, [W_YCOORD] ; $d361 + ld b, a + ld a, [W_XCOORD] ; $d362 + ld c, a +.asm_60dcb + ld a, [hli] + cp b + jr nz, .asm_60dde + ld a, [hli] + cp c + jr nz, .asm_60ddf + ld a, [hli] + ld d, [hl] + ld e, a + ld a, [$cf13] + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + jp MoveSprite +.asm_60dde + inc hl +.asm_60ddf + inc hl + inc hl + jr .asm_60dcb + +CoordsData_60de3: ; 60de3 (18:4de3) + db $0C,$09 + dw MovementData_60e13 + db $0B,$0A + dw MovementData_60e1b + db $0B,$0B + dw MovementData_60e22 + db $0B,$0C + dw MovementData_60e22 + db $0A,$0C + dw MovementData_60e28 + db $09,$0B + dw MovementData_60e30 + db $09,$0A + dw MovementData_60e22 + db $09,$09 + dw MovementData_60e22 + db $08,$09 + dw MovementData_60e37 + db $07,$0A + dw MovementData_60e22 + db $07,$0B + dw MovementData_60e22 + db $07,$0C + dw MovementData_60e22 + +MovementData_60e13: ; 60e13 + db $C0,$00,$00,$00,$00,$00,$80,$FF + +MovementData_60e1b: ; 60e1b + db $00,$C0,$00,$00,$00,$00,$FF + +MovementData_60e22: ; 60e22 + db $00,$00,$00,$00,$00,$FF + +MovementData_60e28: ; 60e28 + db $80,$00,$00,$00,$00,$00,$00,$FF + +MovementData_60e30: ; 60e30 + db $00,$00,$00,$80,$00,$00,$FF + +MovementData_60e37: ; 60e37 + db $C0,$00,$00,$00,$00,$00,$00,$FF + +PokemonTower7TextPointers: ; 60e3f (18:4e3f) + dw PokemonTower7Text1 + dw PokemonTower7Text2 + dw PokemonTower7Text3 + dw PokemonTower7Text4 + +PokemonTower7TrainerHeaders: ; 60e47 (18:4e47) +PokemonTower7TrainerHeader0: ; 60e47 (18:4e47) + db $1 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d769 ; flag's byte + dw PokemonTower7BattleText1 ; 0x4ec9 TextBeforeBattle + dw PokemonTower7AfterBattleText1 ; 0x4ed3 TextAfterBattle + dw PokemonTower7EndBattleText1 ; 0x4ece TextEndBattle + dw PokemonTower7EndBattleText1 ; 0x4ece TextEndBattle + +PokemonTower7TrainerHeader1: ; 60e53 (18:4e53) + db $2 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d769 ; flag's byte + dw PokemonTower7BattleText2 ; 0x4ed8 TextBeforeBattle + dw PokemonTower7AfterBattleText2 ; 0x4ee2 TextAfterBattle + dw PokemonTower7EndBattleText2 ; 0x4edd TextEndBattle + dw PokemonTower7EndBattleText2 ; 0x4edd TextEndBattle + +PokemonTower7TrainerHeader2: ; 60e5f (18:4e5f) + db $3 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d769 ; flag's byte + dw PokemonTower7BattleText3 ; 0x4ee7 TextBeforeBattle + dw PokemonTower7AfterBattleText3 ; 0x4ef1 TextAfterBattle + dw PokemonTower7EndBattleText3 ; 0x4eec TextEndBattle + dw PokemonTower7EndBattleText3 ; 0x4eec TextEndBattle + + db $ff + +PokemonTower7Text1: ; 60e6c (18:4e6c) + db $08 ; asm + ld hl, PokemonTower7TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +PokemonTower7Text2: ; 60e76 (18:4e76) + db $08 ; asm + ld hl, PokemonTower7TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +PokemonTower7Text3: ; 60e80 (18:4e80) + db $08 ; asm + ld hl, PokemonTower7TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +PokemonTower7Text4: ; 60e8a (18:4e8a) + db $08 ; asm + ld hl, PokemonTower7Text_60ec4 + call PrintText + ld hl, $d7e0 + set 7, [hl] + ld hl, $d769 + set 7, [hl] + ld a, $44 + ld [$cc4d], a + ld a, $15 + call Predef + ld a, $17 + ld [$cc4d], a + ld a, $11 + call Predef + ld a, $18 + ld [$cc4d], a + ld a, $15 + call Predef + ld a, $4 + ld [W_POKEMONTOWER7CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + jp TextScriptEnd + +PokemonTower7Text_60ec4: ; 60ec4 (18:4ec4) + TX_FAR _PokemonTower7Text_60ec4 + db "@" + +PokemonTower7BattleText1: ; 60ec9 (18:4ec9) + TX_FAR _PokemonTower7BattleText1 + db "@" + +PokemonTower7EndBattleText1: ; 60ece (18:4ece) + TX_FAR _PokemonTower7EndBattleText1 + db "@" + +PokemonTower7AfterBattleText1: ; 60ed3 (18:4ed3) + TX_FAR _PokemonTower7AfterBattleText1 + db "@" + +PokemonTower7BattleText2: ; 60ed8 (18:4ed8) + TX_FAR _PokemonTower7BattleText2 + db "@" + +PokemonTower7EndBattleText2: ; 60edd (18:4edd) + TX_FAR _PokemonTower7EndBattleText2 + db "@" + +PokemonTower7AfterBattleText2: ; 60ee2 (18:4ee2) + TX_FAR _PokemonTower7AfterBattleText2 + db "@" + +PokemonTower7BattleText3: ; 60ee7 (18:4ee7) + TX_FAR _PokemonTower7BattleText3 + db "@" + +PokemonTower7EndBattleText3: ; 60eec (18:4eec) + TX_FAR _PokemonTower7EndBattleText3 + db "@" + +PokemonTower7AfterBattleText3: ; 60ef1 (18:4ef1) + TX_FAR _PokemonTower7AfterBattleText3 + db "@" diff --git a/scripts/powerplant.asm b/scripts/powerplant.asm new file mode 100755 index 00000000..d5e126dc --- /dev/null +++ b/scripts/powerplant.asm @@ -0,0 +1,176 @@ +PowerPlantScript: ; 1e2c6 (7:62c6) + call EnableAutoTextBoxDrawing + ld hl, PowerPlantTrainerHeaders + ld de, PowerPlantScriptPointers + ld a, [W_POWERPLANTCURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_POWERPLANTCURSCRIPT], 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 + +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 + +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 + +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 + +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 + +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 + +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 + +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 + +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 + +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 $ff + +asm_234cc: ; 1e368 (7:6368) + call TalkToTrainer + ld a, [W_CURMAPSCRIPT] + ld [W_POWERPLANTCURSCRIPT], a + jp TextScriptEnd + +PowerPlantText1: ; 1e374 (7:6374) + db $8 ; asm + ld hl, PowerPlantTrainerHeader0 ; $62fb + jr asm_234cc ; 0x1e378 $ee + +PowerPlantText2: ; 1e37a (7:637a) + db $8 ; asm + ld hl, PowerPlantTrainerHeader1 ; $6307 + jr asm_234cc ; 0x1e37e $e8 + +PowerPlantText3: ; 1e380 (7:6380) + db $8 ; asm + ld hl, PowerPlantTrainerHeader2 ; $6313 + jr asm_234cc ; 0x1e384 $e2 + +PowerPlantText4: ; 1e386 (7:6386) + db $8 ; asm + ld hl, PowerPlantTrainerHeader3 ; $631f + jr asm_234cc ; 0x1e38a $dc + +PowerPlantText5: ; 1e38c (7:638c) + db $8 ; asm + ld hl, PowerPlantTrainerHeader4 ; $632b + jr asm_234cc ; 0x1e390 $d6 + +PowerPlantText6: ; 1e392 (7:6392) + db $8 ; asm + ld hl, PowerPlantTrainerHeader5 ; $6337 + jr asm_234cc ; 0x1e396 $d0 + +PowerPlantText7: ; 1e398 (7:6398) + db $8 ; asm + ld hl, PowerPlantTrainerHeader6 ; $6343 + jr asm_234cc ; 0x1e39c $ca + +PowerPlantText8: ; 1e39e (7:639e) + db $8 ; asm + ld hl, PowerPlantTrainerHeader7 ; $634f + jr asm_234cc ; 0x1e3a2 $c4 + +PowerPlantText9: ; 1e3a4 (7:63a4) + db $8 ; asm + ld hl, PowerPlantTrainerHeader8 ; $635b + jr asm_234cc ; 0x1e3a8 $be + +VoltorbBattleText: ; 1e3aa (7:63aa) + TX_FAR _VoltorbBattleText + db "@" + +ZapdosBattleText: ; 1e3af (7:63af) + TX_FAR _ZapdosBattleText + db $8 + ld a, ZAPDOS + call PlayCry + call WaitForSoundToFinish + jp TextScriptEnd diff --git a/scripts/redshouse1f.asm b/scripts/redshouse1f.asm new file mode 100755 index 00000000..b787669e --- /dev/null +++ b/scripts/redshouse1f.asm @@ -0,0 +1,69 @@ +RedsHouse1FScript: ; 48168 (12:4168) + jp EnableAutoTextBoxDrawing + +RedsHouse1FTextPointers: ; 4816b (12:416b) + dw RedsHouse1FText1 + dw RedsHouse1FText2 + +RedsHouse1FText1: ; 4816f (12:416f) ; 416F Mom + db 8 + ld a, [$D72E] + bit 3, a + jr nz, .heal ; if player has received a Pokémon from Oak, heal team + ld hl, MomWakeUpText + call PrintText + jr .done +.heal + call MomHealPokemon +.done + jp TextScriptEnd + +MomWakeUpText: ; 48185 (12:4185) + TX_FAR _MomWakeUpText + db "@" + +MomHealPokemon: ; 4818a (12:418a) + ld hl, MomHealText1 + call PrintText + call GBFadeOut2 + call ReloadMapData + PREDEF HealPartyPredef + ld a, MUSIC_PKMN_HEALED + ld [$C0EE], a + call PlaySound ; play sound? +.next + ld a, [$C026] + cp MUSIC_PKMN_HEALED + jr z, .next + ld a, [$D35B] + ld [$C0EE], a + call PlaySound + call GBFadeIn2 + ld hl, MomHealText2 + jp PrintText + +MomHealText1: ; 481bc (12:41bc) + TX_FAR _MomHealText1 + db "@" +MomHealText2: ; 481c1 (12:41c1) + TX_FAR _MomHealText2 + db "@" + +RedsHouse1FText2: ; 0x481c6 TV + db 8 + ld a,[$C109] + cp 4 + ld hl,TVWrongSideText + jr nz,.done ; if player is not facing up + ld hl,StandByMeText +.done + call PrintText + jp TextScriptEnd + +StandByMeText: ; 481da (12:41da) + TX_FAR _StandByMeText + db "@" + +TVWrongSideText: ; 481df (12:41df) + TX_FAR _TVWrongSideText + db "@" diff --git a/scripts/redshouse2f.asm b/scripts/redshouse2f.asm new file mode 100755 index 00000000..1004860c --- /dev/null +++ b/scripts/redshouse2f.asm @@ -0,0 +1,24 @@ +RedsHouse2FScript: ; 5c0b0 (17:40b0) + call EnableAutoTextBoxDrawing + ld hl,RedsHouse2FScriptPointers + ld a,[W_REDSHOUSE2CURSCRIPT] + jp CallFunctionInTable + +RedsHouse2FScriptPointers: ; 5c0bc (17:40bc) + dw RedsHouse2FScript0 + dw RedsHouse2FScript1 + +RedsHouse2FScript0: ; 5c0c0 (17:40c0) + xor a + ld [H_CURRENTPRESSEDBUTTONS],a + ld a,8 + ld [$D528],a + ld a,1 + ld [W_REDSHOUSE2CURSCRIPT],a + ret + +RedsHouse2FScript1: ; 5c0ce (17:40ce) + ret + +RedsHouse2FTextPointers: ; 5c0cf (17:40cf) + db "@" diff --git a/scripts/rockethideout1.asm b/scripts/rockethideout1.asm new file mode 100755 index 00000000..ce88ff90 --- /dev/null +++ b/scripts/rockethideout1.asm @@ -0,0 +1,193 @@ +RocketHideout1Script: ; 44bca (11:4bca) + call RocketHideout1Script_44be0 + call EnableAutoTextBoxDrawing + ld hl, RocketHideout1TrainerHeaders + ld de, RocketHideout1ScriptPointers + ld a, [W_ROCKETHIDEOUT1CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROCKETHIDEOUT1CURSCRIPT], a + ret + +RocketHideout1Script_44be0: ; 44be0 (11:4be0) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld a, [$d815] + bit 7, a + jr nz, .asm_44c01 + bit 5, a + jr nz, .asm_44bf7 + ld a, $54 + jr .asm_44c03 +.asm_44bf7 + ld a, (SFX_02_57 - SFX_Headers_02) / 3 + call PlaySound + ld hl, $d815 + bit 7, [hl] +.asm_44c01 + ld a, $e +.asm_44c03 + ld [$d09f], a + ld bc, $080c + ld a, $17 + jp Predef + +RocketHideout1ScriptPointers: ; 44c0e (11:4c0e) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +RocketHideout1TextPointers: ; 44c14 (11:4c14) + dw RocketHideout1Text1 + dw RocketHideout1Text2 + dw RocketHideout1Text3 + dw RocketHideout1Text4 + dw RocketHideout1Text5 + dw Predef5CText + dw Predef5CText + +RocketHideout1TrainerHeaders: ; 44c22 (11:4c22) +RocketHideout1TrainerHeader0: ; 44c22 (11:4c22) + db $1 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d815 ; flag's byte + dw RocketHideout1BattleText2 ; 0x4ca1 TextBeforeBattle + dw RocketHideout1AfterBattleTxt2 ; 0x4cab TextAfterBattle + dw RocketHideout1EndBattleText2 ; 0x4ca6 TextEndBattle + dw RocketHideout1EndBattleText2 ; 0x4ca6 TextEndBattle + +RocketHideout1TrainerHeader2: ; 44c2e (11:4c2e) + db $2 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d815 ; flag's byte + dw RocketHideout1BattleText3 ; 0x4cb0 TextBeforeBattle + dw RocketHideout1AfterBattleTxt3 ; 0x4cba TextAfterBattle + dw RocketHideout1EndBattleText3 ; 0x4cb5 TextEndBattle + dw RocketHideout1EndBattleText3 ; 0x4cb5 TextEndBattle + +RocketHideout1TrainerHeader3: ; 44c3a (11:4c3a) + db $3 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d815 ; flag's byte + dw RocketHideout1BattleText4 ; 0x4cbf TextBeforeBattle + dw RocketHideout1AfterBattleTxt4 ; 0x4cc9 TextAfterBattle + dw RocketHideout1EndBattleText4 ; 0x4cc4 TextEndBattle + dw RocketHideout1EndBattleText4 ; 0x4cc4 TextEndBattle + +RocketHideout1TrainerHeader4: ; 44c46 (11:4c46) + db $4 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d815 ; flag's byte + dw RocketHideout1BattleText5 ; 0x4cce TextBeforeBattle + dw RocketHideout1AfterBattleTxt5 ; 0x4cd8 TextAfterBattle + dw RocketHideout1EndBattleText5 ; 0x4cd3 TextEndBattle + dw RocketHideout1EndBattleText5 ; 0x4cd3 TextEndBattle + +RocketHideout1TrainerHeader5: ; 44c52 (11:4c52) + db $5 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d815 ; flag's byte + dw RocketHideout1BattleText6 ; 0x4cdd TextBeforeBattle + dw RocketHideout1AfterBattleTxt6 ; 0x4ce2 TextAfterBattle + dw RocketHideout1EndBattleText6 ; 0x4c91 TextEndBattle + dw RocketHideout1EndBattleText6 ; 0x4c91 TextEndBattle + + db $ff + +RocketHideout1Text1: ; 44c5f (11:4c5f) + db $08 ; asm + ld hl, RocketHideout1TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +RocketHideout1Text2: ; 44c69 (11:4c69) + db $08 ; asm + ld hl, RocketHideout1TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +RocketHideout1Text3: ; 44c73 (11:4c73) + db $08 ; asm + ld hl, RocketHideout1TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +RocketHideout1Text4: ; 44c7d (11:4c7d) + db $08 ; asm + ld hl, RocketHideout1TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +RocketHideout1Text5: ; 44c87 (11:4c87) + db $08 ; asm + ld hl, RocketHideout1TrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +RocketHideout1EndBattleText6: ; 44c91 (11:4c91) + TX_FAR _RocketHideout1EndBattleText6 + db $8 + ld hl, $d815 + set 5, [hl] + ld hl, RocketHideout1Text_44c9f + ret + +RocketHideout1Text_44c9f: ; 44c9f (11:4c9f) + db $6, "@" + +RocketHideout1BattleText2: ; 44ca1 (11:4ca1) + TX_FAR _RocketHideout1BattleText2 + db "@" + +RocketHideout1EndBattleText2: ; 44ca6 (11:4ca6) + TX_FAR _RocketHideout1EndBattleText2 + db "@" + +RocketHideout1AfterBattleTxt2: ; 44cab (11:4cab) + TX_FAR _RocketHideout1AfterBattleTxt2 + db "@" + +RocketHideout1BattleText3: ; 44cb0 (11:4cb0) + TX_FAR _RocketHideout1BattleText3 + db "@" + +RocketHideout1EndBattleText3: ; 44cb5 (11:4cb5) + TX_FAR _RocketHideout1EndBattleText3 + db "@" + +RocketHideout1AfterBattleTxt3: ; 44cba (11:4cba) + TX_FAR _RocketHideout1AfterBattleTxt3 + db "@" + +RocketHideout1BattleText4: ; 44cbf (11:4cbf) + TX_FAR _RocketHideout1BattleText4 + db "@" + +RocketHideout1EndBattleText4: ; 44cc4 (11:4cc4) + TX_FAR _RocketHideout1EndBattleText4 + db "@" + +RocketHideout1AfterBattleTxt4: ; 44cc9 (11:4cc9) + TX_FAR _RocketHideout1AfterBattleTxt4 + db "@" + +RocketHideout1BattleText5: ; 44cce (11:4cce) + TX_FAR _RocketHideout1BattleText5 + db "@" + +RocketHideout1EndBattleText5: ; 44cd3 (11:4cd3) + TX_FAR _RocketHideout1EndBattleText5 + db "@" + +RocketHideout1AfterBattleTxt5: ; 44cd8 (11:4cd8) + TX_FAR _RocketHideout1AfterBattleTxt5 + db "@" + +RocketHideout1BattleText6: ; 44cdd (11:4cdd) + TX_FAR _RocketHideout1BattleText6 + db "@" + +RocketHideout1AfterBattleTxt6: ; 44ce2 (11:4ce2) + TX_FAR _RocketHideout1AfterBattleTxt6 + db "@" diff --git a/scripts/rockethideout2.asm b/scripts/rockethideout2.asm new file mode 100755 index 00000000..ac427373 --- /dev/null +++ b/scripts/rockethideout2.asm @@ -0,0 +1,501 @@ +RocketHideout2Script: ; 44e27 (11:4e27) + call EnableAutoTextBoxDrawing + ld hl, RocketHideout2TrainerHeaders + ld de, RocketHideout2ScriptPointers + ld a, [W_ROCKETHIDEOUT2CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROCKETHIDEOUT2CURSCRIPT], a + ret + +RocketHideout2ScriptPointers: ; 44e3a (11:4e3a) + dw RocketHideout2Script0 + dw Func_324c + dw EndTrainerBattle + dw RocketHideout2Script3 + +RocketHideout2Script0: ; 44e42 (11:4e42) + ld a, [W_YCOORD] + ld b, a + ld a, [W_XCOORD] + ld c, a + ld hl, RocketHideout2ArrowTilePlayerMovement + call Func_3442 + cp $ff + jp z, CheckFightingMapTrainers + ld hl, $d736 + set 7, [hl] + call Func_3486 + ld a, (SFX_02_52 - SFX_Headers_02) / 3 + call PlaySound + ld a, $ff + ld [wJoypadForbiddenButtonsMask], a + ld a, $3 + ld [W_CURMAPSCRIPT], a + ret + +;format: +;db y,x +;dw pointer to movement +RocketHideout2ArrowTilePlayerMovement: ; 44e6d (11:4e6d) + db $9,$4 + dw RocketHideout2ArrowMovement1 + db $b,$4 + dw RocketHideout2ArrowMovement2 + db $f,$4 + dw RocketHideout2ArrowMovement3 + db $10,$4 + dw RocketHideout2ArrowMovement4 + db $13,$4 + dw RocketHideout2ArrowMovement1 + db $16,$4 + dw RocketHideout2ArrowMovement5 + db $e,$5 + dw RocketHideout2ArrowMovement6 + db $16,$6 + dw RocketHideout2ArrowMovement7 + db $18,$6 + dw RocketHideout2ArrowMovement8 + db $9,$8 + dw RocketHideout2ArrowMovement9 + db $c,$8 + dw RocketHideout2ArrowMovement10 + db $f,$8 + dw RocketHideout2ArrowMovement8 + db $13,$8 + dw RocketHideout2ArrowMovement9 + db $17,$8 + dw RocketHideout2ArrowMovement11 + db $e,$9 + dw RocketHideout2ArrowMovement12 + db $16,$9 + dw RocketHideout2ArrowMovement12 + db $9,$a + dw RocketHideout2ArrowMovement13 + db $a,$a + dw RocketHideout2ArrowMovement14 + db $f,$a + dw RocketHideout2ArrowMovement15 + db $11,$a + dw RocketHideout2ArrowMovement16 + db $13,$a + dw RocketHideout2ArrowMovement17 + db $19,$a + dw RocketHideout2ArrowMovement2 + db $e,$b + dw RocketHideout2ArrowMovement18 + db $10,$b + dw RocketHideout2ArrowMovement19 + db $12,$b + dw RocketHideout2ArrowMovement12 + db $9,$c + dw RocketHideout2ArrowMovement20 + db $b,$c + dw RocketHideout2ArrowMovement21 + db $d,$c + dw RocketHideout2ArrowMovement22 + db $11,$c + dw RocketHideout2ArrowMovement23 + db $a,$d + dw RocketHideout2ArrowMovement24 + db $c,$d + dw RocketHideout2ArrowMovement25 + db $10,$d + dw RocketHideout2ArrowMovement26 + db $12,$d + dw RocketHideout2ArrowMovement27 + db $13,$d + dw RocketHideout2ArrowMovement28 + db $16,$d + dw RocketHideout2ArrowMovement29 + db $17,$d + dw RocketHideout2ArrowMovement30 + db $11,$e + dw RocketHideout2ArrowMovement31 + db $10,$f + dw RocketHideout2ArrowMovement12 + db $e,$10 + dw RocketHideout2ArrowMovement32 + db $10,$10 + dw RocketHideout2ArrowMovement33 + db $12,$10 + dw RocketHideout2ArrowMovement34 + db $a,$11 + dw RocketHideout2ArrowMovement35 + db $b,$11 + dw RocketHideout2ArrowMovement36 + db $FF + +;format: direction, count +;right: $10 +;left: $20 +;up: $40 +;down: $80 +;each list is read starting from the $FF and working backwards +RocketHideout2ArrowMovement1: ; 44f1a (11:4f1a) + db $20,$02 + db $FF + +RocketHideout2ArrowMovement2: ; 44f1d (11:4f1d) + db $10,$04 + db $FF + +RocketHideout2ArrowMovement3: ; 44f20 (11:4f20) + db $40,$04 + db $10,$04 + db $FF + +RocketHideout2ArrowMovement4: ; 44f25 (11:4f25) + db $40,$04 + db $10,$04 + db $40,$01 + db $FF + +RocketHideout2ArrowMovement5: ; 44f2c (11:4f2c) + db $20,$02 + db $40,$03 + db $FF + +RocketHideout2ArrowMovement6: ; 44f31 (11:4f31) + db $80,$02 + db $10,$04 + db $FF + +RocketHideout2ArrowMovement7: ; 44f36 (11:4f36) + db $40,$02 + db $FF + +RocketHideout2ArrowMovement8: ; 44f39 (11:4f39) + db $40,$04 + db $FF + +RocketHideout2ArrowMovement9: ; 44f3c (11:4f3c) + db $20,$06 + db $FF + +RocketHideout2ArrowMovement10: ; 44f3f (11:4f3f) + db $40,$01 + db $FF + +RocketHideout2ArrowMovement11: ; 44f42 (11:4f42) + db $20,$06 + db $40,$04 + db $FF + +RocketHideout2ArrowMovement12: ; 44f47 (11:4f47) + db $80,$02 + db $FF + +RocketHideout2ArrowMovement13: ; 44f4a (11:4f4a) + db $20,$08 + db $FF + +RocketHideout2ArrowMovement14: ; 44f4d (11:4f4d) + db $20,$08 + db $40,$01 + db $FF + +RocketHideout2ArrowMovement15: ; 44f52 (11:4f52) + db $20,$08 + db $40,$06 + db $FF + +RocketHideout2ArrowMovement16: ; 44f57 (11:4f57) + db $40,$02 + db $10,$04 + db $FF + +RocketHideout2ArrowMovement17: ; 44f5c (11:4f5c) + db $40,$02 + db $10,$04 + db $40,$02 + db $FF + +RocketHideout2ArrowMovement18: ; 44f63 (11:4f63) + db $80,$02 + db $10,$04 + db $80,$02 + db $FF + +RocketHideout2ArrowMovement19: ; 44f6a (11:4f6a) + db $80,$02 + db $10,$04 + db $FF + +RocketHideout2ArrowMovement20: ; 44f6f (11:4f6f) + db $20,$0A + db $FF + +RocketHideout2ArrowMovement21: ; 44f72 (11:4f72) + db $20,$0A + db $40,$02 + db $FF + +RocketHideout2ArrowMovement22: ; 44f77 (11:4f77) + db $20,$0A + db $40,$04 + db $FF + +RocketHideout2ArrowMovement23: ; 44f7c (11:4f7c) + db $40,$02 + db $10,$02 + db $FF + +RocketHideout2ArrowMovement24: ; 44f81 (11:4f81) + db $10,$01 + db $80,$02 + db $FF + +RocketHideout2ArrowMovement25: ; 44f86 (11:4f86) + db $10,$01 + db $FF + +RocketHideout2ArrowMovement26: ; 44f89 (11:4f89) + db $80,$02 + db $10,$02 + db $FF + +RocketHideout2ArrowMovement27: ; 44f8e (11:4f8e) + db $80,$02 + db $20,$02 + db $FF + +RocketHideout2ArrowMovement28: ; 44f93 (11:4f93) + db $40,$02 + db $10,$04 + db $40,$02 + db $20,$03 + db $FF + +RocketHideout2ArrowMovement29: ; 44f9c (11:4f9c) + db $80,$02 + db $20,$04 + db $FF + +RocketHideout2ArrowMovement30: ; 44fa1 (11:4fa1) + db $20,$06 + db $40,$04 + db $20,$05 + db $FF + +RocketHideout2ArrowMovement31: ; 44fa8 (11:4fa8) + db $40,$02 + db $FF + +RocketHideout2ArrowMovement32: ; 44fab (11:4fab) + db $40,$01 + db $FF + +RocketHideout2ArrowMovement33: ; 44fae (11:4fae) + db $40,$03 + db $FF + +RocketHideout2ArrowMovement34: ; 44fb1 (11:4fb1) + db $40,$05 + db $FF + +RocketHideout2ArrowMovement35: ; 44fb4 (11:4fb4) + db $10,$01 + db $80,$02 + db $20,$04 + db $FF + +RocketHideout2ArrowMovement36: ; 44fbb (11:4fbb) + db $20,$0A + db $40,$02 + db $20,$05 + db $FF + +RocketHideout2Script3: ; 44fc2 (11:4fc2) + ld a, [$cd38] + and a + jr nz, LoadSpinnerArrowTiles + xor a + ld [wJoypadForbiddenButtonsMask], a + ld hl, $d736 + res 7, [hl] + ld a, $0 + ld [W_CURMAPSCRIPT], a + ret + +LoadSpinnerArrowTiles: ; 44fd7 (11:4fd7) + ld a, [$c102] + srl a + srl a + ld hl, SpinnerPlayerFacingDirections ; $5083 + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + ld [$c102], a + ld a, [W_CURMAPTILESET] ; $d367 + cp FACILITY + ld hl, SpinnerArrowTilePointers1 ; $5023 + jr z, .asm_44ff6 + ld hl, SpinnerArrowTilePointers2 ; $5053 +.asm_44ff6 + ld a, [$cd38] + bit 0, a + jr nz, .asm_45001 + ld de, $18 + add hl, de +.asm_45001 + ld a, $4 + ld bc, $0 +.asm_45006 + push af + push hl + push bc + add hl, bc + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + ld a, [hli] + ld h, [hl] + ld l, a + call CopyVideoData + pop bc + ld a, $6 + add c + ld c, a + pop hl + pop af + dec a + jr nz, .asm_45006 + ret + +SpinnerArrowTilePointers1: ; 45023 (11:5023) + dw SpinnerArrowAnimTiles ;address from within tileset graphics + db 1 ;number of tiles to copy? + db BANK(SpinnerArrowAnimTiles) ;bank of tileset graphics + dw $9200 ;where to load in VRAM + + dw SpinnerArrowAnimTiles + $10 + db 1 + db BANK(SpinnerArrowAnimTiles) + dw $9210 + + dw SpinnerArrowAnimTiles + $20 + db 1 + db BANK(SpinnerArrowAnimTiles) + dw $9300 + + dw SpinnerArrowAnimTiles + $30 + db 1 + db BANK(SpinnerArrowAnimTiles) + dw $9310 + + dw Facility_GFX + $200 + db 1 + db BANK(Facility_GFX) + dw $9200 + + dw Facility_GFX + $210 + db 1 + db BANK(Facility_GFX) + dw $9210 + + dw Facility_GFX + $300 + db 1 + db BANK(Facility_GFX) + dw $9300 + + dw Facility_GFX + $310 + db 1 + db BANK(Facility_GFX) + dw $9310 + +SpinnerArrowTilePointers2: ; 45053 (11:5053) + dw SpinnerArrowAnimTiles + $10 + db 1 + db BANK(SpinnerArrowAnimTiles) + dw $93C0 + + dw SpinnerArrowAnimTiles + $30 + db 1 + db BANK(SpinnerArrowAnimTiles) + dw $93D0 + + dw SpinnerArrowAnimTiles + db 1 + db BANK(SpinnerArrowAnimTiles) + dw $94C0 + + dw SpinnerArrowAnimTiles + $20 + db 1 + db BANK(SpinnerArrowAnimTiles) + dw $94D0 + + dw Gym_GFX + $3C0 + db 1 + db BANK(Facility_GFX) + dw $93C0 + + dw Gym_GFX + $3D0 + db 1 + db BANK(Facility_GFX) + dw $93D0 + + dw Gym_GFX + $4C0 + db 1 + db BANK(Facility_GFX) + dw $94C0 + + dw Gym_GFX + $4D0 + db 1 + db BANK(Facility_GFX) + dw $94D0 + +SpinnerPlayerFacingDirections: ; 45083 (11:5083) +; This isn't the order of the facing directions. Rather, it's a list of +; the facing directions that come next. For example, when the player is +; facing down (00), the next facing direction is left (08). + db $08 ; down -> left + db $0C ; up -> right + db $04 ; left -> up + db $00 ; right -> down + +; these tiles are the animation for the tiles that push the player in dungeons like Rocket HQ +SpinnerArrowAnimTiles: ; 45087 (11:5087) + INCBIN "gfx/spinner_arrow.2bpp" + +RocketHideout2TextPointers: ; 450c7 (11:50c7) + dw RocketHideout2Text1 + dw Predef5CText + dw Predef5CText + dw Predef5CText + dw Predef5CText + +RocketHideout2TrainerHeaders: ; 450d1 (11:50d1) +RocketHideout2TrainerHeader0: ; 450d1 (11:50d1) + db $1 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d817 ; flag's byte + dw RocketHideout2BattleText2 ; 0x50e8 TextBeforeBattle + dw RocketHideout2AfterBattleTxt2 ; 0x50f2 TextAfterBattle + dw RocketHideout2EndBattleText2 ; 0x50ed TextEndBattle + dw RocketHideout2EndBattleText2 ; 0x50ed TextEndBattle + + db $ff + +RocketHideout2Text1: ; 450de (11:50de) + db $08 ; asm + ld hl, RocketHideout2TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +RocketHideout2BattleText2: ; 450e8 (11:50e8) + TX_FAR _RocketHideout2BattleText2 + db "@" + +RocketHideout2EndBattleText2: ; 450ed (11:50ed) + TX_FAR _RocketHideout2EndBattleText2 + db "@" + +RocketHideout2AfterBattleTxt2: ; 450f2 (11:50f2) + TX_FAR _RocketHideout2AfterBattleTxt2 + db "@" diff --git a/scripts/rockethideout3.asm b/scripts/rockethideout3.asm new file mode 100755 index 00000000..d9e1d077 --- /dev/null +++ b/scripts/rockethideout3.asm @@ -0,0 +1,211 @@ +RocketHideout3Script: ; 45225 (11:5225) + call EnableAutoTextBoxDrawing + ld hl, RocketHideout3TrainerHeaders + ld de, RocketHideout3ScriptPointers + ld a, [W_ROCKETHIDEOUT3CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROCKETHIDEOUT3CURSCRIPT], a + ret + +RocketHideout3ScriptPointers: ; 45238 (11:5238) + dw RocketHideout3Script0 + dw Func_324c + dw EndTrainerBattle + dw RocketHideout3Script3 + +RocketHideout3Script0: ; 45240 (11:5240) + ld a, [W_YCOORD] + ld b, a + ld a, [W_XCOORD] + ld c, a + ld hl, RocketHideout3ArrowTilePlayerMovement + call Func_3442 + cp $ff + jp z, CheckFightingMapTrainers + ld hl, $d736 + set 7, [hl] + call Func_3486 + ld a, (SFX_02_52 - SFX_Headers_02) / 3 + call PlaySound + ld a, $ff + ld [wJoypadForbiddenButtonsMask], a + ld a, $3 + ld [W_CURMAPSCRIPT], a + ret + +;format: +;db y,x +;dw pointer to movement +RocketHideout3ArrowTilePlayerMovement: ; 4526b (11:526b) + db $d,$a + dw RocketHideout3ArrowMovement6 + db $13,$a + dw RocketHideout3ArrowMovement1 + db $12,$b + dw RocketHideout3ArrowMovement2 + db $b,$c + dw RocketHideout3ArrowMovement3 + db $11,$c + dw RocketHideout3ArrowMovement4 + db $14,$c + dw RocketHideout3ArrowMovement5 + db $10,$d + dw RocketHideout3ArrowMovement6 + db $b,$e + dw RocketHideout3ArrowMovement7 + db $f,$e + dw RocketHideout3ArrowMovement6 + db $11,$e + dw RocketHideout3ArrowMovement8 + db $13,$e + dw RocketHideout3ArrowMovement9 + db $10,$f + dw RocketHideout3ArrowMovement7 + db $12,$f + dw RocketHideout3ArrowMovement10 + db $d,$10 + dw RocketHideout3ArrowMovement11 + db $c,$11 + dw RocketHideout3ArrowMovement10 + db $10,$12 + dw RocketHideout3ArrowMovement12 + db $FF + +;format: direction, count +;right: $10 +;left: $20 +;up: $40 +;down: $80 +;each list is read starting from the $FF and working backwards +RocketHideout3ArrowMovement1: ; 452ac (11:52ac) + db $10,$04 + db $40,$04 + db $10,$04 + db $FF + +RocketHideout3ArrowMovement2: ; 452b3 (11:52b3) + db $80,$04 + db $10,$04 + db $FF + +RocketHideout3ArrowMovement3: ; 452b8 (11:52b8) + db $20,$02 + db $FF + +RocketHideout3ArrowMovement4: ; 452bb (11:52bb) + db $10,$04 + db $40,$02 + db $10,$02 + db $FF + +RocketHideout3ArrowMovement5: ; 452c2 (11:52c2) + db $10,$04 + db $40,$02 + db $10,$02 + db $40,$03 + db $FF + +RocketHideout3ArrowMovement6: ; 452cb (11:52cb) + db $10,$04 + db $FF + +RocketHideout3ArrowMovement7: ; 452ce (11:52ce) + db $10,$02 + db $FF + +RocketHideout3ArrowMovement8: ; 452d1 (11:52d1) + db $10,$04 + db $40,$02 + db $FF + +RocketHideout3ArrowMovement9: ; 452d6 (11:52d6) + db $10,$04 + db $40,$04 + db $FF + +RocketHideout3ArrowMovement10: ; 452db (11:52db) + db $80,$04 + db $FF + +RocketHideout3ArrowMovement11: ; 452de (11:52de) + db $40,$02 + db $FF + +RocketHideout3ArrowMovement12: ; 452e1 (11:52e1) + db $40,$01 + db $FF + +RocketHideout3Script3 ; 452e4 (11:452e4) + ld a, [$cd38] + and a + jp nz, LoadSpinnerArrowTiles + xor a + ld [wJoypadForbiddenButtonsMask], a + ld hl, $d736 + res 7, [hl] + ld a, $0 + ld [W_CURMAPSCRIPT], a + ret + +RocketHideout3TextPointers: ; 452fa (11:52fa) + dw RocketHideout3Text1 + dw RocketHideout3Text2 + dw Predef5CText + dw Predef5CText + +RocketHideout3TrainerHeaders: ; 45302 (11:5302) +RocketHideout3TrainerHeader0: ; 45302 (11:5302) + db $1 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d819 ; flag's byte + dw RocketHideout3BattleText2 ; 0x5325 TextBeforeBattle + dw RocketHideout3AfterBattleTxt2 ; 0x532f TextAfterBattle + dw RocketHideout3EndBattleText2 ; 0x532a TextEndBattle + dw RocketHideout3EndBattleText2 ; 0x532a TextEndBattle + +RocketHideout3TrainerHeader2: ; 4530e (11:530e) + db $2 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d819 ; flag's byte + dw RocketHideout3BattleTxt ; 0x533e TextBeforeBattle + dw RocketHideout3AfterBattleText3 ; 0x5348 TextAfterBattle + dw RocketHideout3EndBattleText3 ; 0x5343 TextEndBattle + dw RocketHideout3EndBattleText3 ; 0x5343 TextEndBattle + + db $ff + +RocketHideout3Text1: ; 4531b (11:531b) + db $08 ; asm + ld hl, RocketHideout3TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +RocketHideout3BattleText2: ; 45325 (11:5325) + TX_FAR _RocketHideout3BattleText2 + db "@" + +RocketHideout3EndBattleText2: ; 4532a (11:532a) + TX_FAR _RocketHideout3EndBattleText2 + db "@" + +RocketHideout3AfterBattleTxt2: ; 4532f (11:532f) + TX_FAR _RocketHideout3AfterBattleTxt2 + db "@" + +RocketHideout3Text2: ; 45334 (11:5334) + db $08 ; asm + ld hl, RocketHideout3TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +RocketHideout3BattleTxt: ; 4533e (11:533e) + TX_FAR _RocketHideout3BattleTxt + db "@" + +RocketHideout3EndBattleText3: ; 45343 (11:5343) + TX_FAR _RocketHideout3EndBattleText3 + db "@" + +RocketHideout3AfterBattleText3: ; 45348 (11:5348) + TX_FAR _RocketHide3AfterBattleText3 + db "@" diff --git a/scripts/rockethideout4.asm b/scripts/rockethideout4.asm new file mode 100755 index 00000000..5e245e8d --- /dev/null +++ b/scripts/rockethideout4.asm @@ -0,0 +1,232 @@ +RocketHideout4Script: ; 4545d (11:545d) + call RocketHideout4Script_45473 + call EnableAutoTextBoxDrawing + ld hl, RocketHideout4TrainerHeader0 + ld de, RocketHideout4ScriptPointers + ld a, [W_ROCKETHIDEOUT4CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROCKETHIDEOUT4CURSCRIPT], a + ret + +RocketHideout4Script_45473: ; 45473 (11:5473) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld a, [$d81b] + bit 5, a + jr nz, .asm_45496 + and $c + cp $c + jr z, .asm_4548c + ld a, $2d + jr .asm_45498 +.asm_4548c + ld a, (SFX_02_57 - SFX_Headers_02) / 3 + call PlaySound + ld hl, $d81b + set 5, [hl] +.asm_45496 + ld a, $e +.asm_45498 + ld [$d09f], a + ld bc, $050c + ld a, $17 + jp Predef + +RocketHideout4Script_454a3: ; 454a3 (11:54a3) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_ROCKETHIDEOUT4CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +RocketHideout4ScriptPointers: ; 454ae (11:54ae)c + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + dw RocketHideout4Script3 + +RocketHideout4Script3: ; 454b6 (11:54b6) + ld a, [W_ISINBATTLE] + cp $ff + jp z, RocketHideout4Script_454a3 + call UpdateSprites + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld hl, $d81b + set 7, [hl] + ld a, $a + ld [H_SPRITEHEIGHT], a + call DisplayTextID + call GBFadeIn1 + ld a, $83 + ld [$cc4d], a + ld a, $11 + call Predef + ld a, $87 + ld [$cc4d], a + ld a, $15 + call Predef + call UpdateSprites + call GBFadeOut1 + xor a + ld [wJoypadForbiddenButtonsMask], a + ld hl, $d126 + set 5, [hl] + ld a, $0 + ld [W_ROCKETHIDEOUT4CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +RocketHideout4TextPointers: ; 45501 (11:5501) + dw RocketHideout4Text1 + dw RocketHideout4Text2 + dw RocketHideout4Text3 + dw RocketHideout4Text4 + dw Predef5CText + dw Predef5CText + dw Predef5CText + dw Predef5CText + dw Predef5CText + dw RocketHideout4Text10 + +RocketHideout4TrainerHeaders: ; 45515 (11:5515) +RocketHideout4TrainerHeader0: ; 45515 (11:5515) + db $2 ; flag's bit + db ($0 << 4) ; trainer's view range + dw $d81b ; flag's byte + dw RocketHideout4BattleText2 ; 0x5593 TextBeforeBattle + dw RocketHideout4AfterBattleText2 ; 0x559d TextAfterBattle + dw RocketHideout4EndBattleText2 ; 0x5598 TextEndBattle + dw RocketHideout4EndBattleText2 ; 0x5598 TextEndBattle + +RocketHideout4TrainerHeader2: ; 45521 (11:5521) + db $3 ; flag's bit + db ($0 << 4) ; trainer's view range + dw $d81b ; flag's byte + dw RocketHideout4BattleText3 ; 0x55ac TextBeforeBattle + dw RocketHideout4AfterBattleText3 ; 0x55b6 TextAfterBattle + dw RocketHideout4EndBattleText3 ; 0x55b1 TextEndBattle + dw RocketHideout4EndBattleText3 ; 0x55b1 TextEndBattle + +RocketHideout4TrainerHeader3: ; 4552d (11:552d) + db $4 ; flag's bit + db ($1 << 4) ; trainer's view range + dw $d81b ; flag's byte + dw RocketHideout4BattleText4 ; 0x55c5 TextBeforeBattle + dw RocketHideout4AfterBattleText4 ; 0x55cf TextAfterBattle + dw RocketHideout4EndBattleText4 ; 0x55ca TextEndBattle + dw RocketHideout4EndBattleText4 ; 0x55ca TextEndBattle + + db $ff + +RocketHideout4Text1: ; 4553a (11:553a) + db $08 ; asm + ld a, [$d81b] + bit 7, a + jp nz, .asm_545571 + ld hl, RocketHideout4Text_4557a + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, RocketHideout4Text_4557f + ld de, RocketHideout4Text_4557f + call PreBattleSaveRegisters + ldh a, [$8c] + ld [$cf13], a + call EngageMapTrainer + call InitBattleEnemyParameters + xor a + ldh [$b4], a + ld a, $3 + ld [W_ROCKETHIDEOUT4CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + jr .asm_209f0 ; 0x4556f +.asm_545571 + ld hl, RocketHideout4Text10 + call PrintText +.asm_209f0 ; 0x45577 + jp TextScriptEnd + +RocketHideout4Text_4557a: ; 4557a (11:557a) + TX_FAR _RocketHideout4Text_4557a + db "@" + +RocketHideout4Text_4557f: ; 4557f (11:557f) + TX_FAR _RocketHideout4Text_4557f + db "@" + +RocketHideout4Text10: ; 45584 (11:5584) + TX_FAR _RocketHideout4Text_45584 + db "@" + +RocketHideout4Text2: ; 45589 (11:5589) + db $08 ; asm + ld hl, RocketHideout4TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +RocketHideout4BattleText2: ; 45593 (11:5593) + TX_FAR _RocketHideout4BattleText2 + db "@" + +RocketHideout4EndBattleText2: ; 45598 (11:5598) + TX_FAR _RocketHideout4EndBattleText2 + db "@" + +RocketHideout4AfterBattleText2: ; 4559d (11:559d) + TX_FAR _RocketHide4AfterBattleText2 + db "@" + +RocketHideout4Text3: ; 455a2 (11:55a2) + db $08 ; asm + ld hl, RocketHideout4TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +RocketHideout4BattleText3: ; 455ac (11:55ac) + TX_FAR _RocketHideout4BattleText3 + db "@" + +RocketHideout4EndBattleText3: ; 455b1 (11:55b1) + TX_FAR _RocketHideout4EndBattleText3 + db "@" + +RocketHideout4AfterBattleText3: ; 455b6 (11:55b6) + TX_FAR _RocketHide4AfterBattleText3 + db "@" + +RocketHideout4Text4: ; 455bb (11:55bb) + db $08 ; asm + ld hl, RocketHideout4TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +RocketHideout4BattleText4: ; 455c5 (11:55c5) + TX_FAR _RocketHideout4BattleText4 + db "@" + +RocketHideout4EndBattleText4: ; 455ca (11:55ca) + TX_FAR _RocketHideout4EndBattleText4 + db "@" + +RocketHideout4AfterBattleText4: ; 455cf (11:55cf) + db $8 + ld hl, RocketHideout4Text_455ec ; $55ec + call PrintText + ld hl, $d81b + bit 6, [hl] + set 6, [hl] + jr nz, .asm_455e9 ; 0x455dd $a + ld a, $88 + ld [$cc4d], a + ld a, $15 + call Predef +.asm_455e9 + jp TextScriptEnd + +RocketHideout4Text_455ec: ; 455ec (11:55ec) + TX_FAR _RocketHideout4Text_455ec + db "@" diff --git a/scripts/rockethideoutelevator.asm b/scripts/rockethideoutelevator.asm new file mode 100755 index 00000000..0e499553 --- /dev/null +++ b/scripts/rockethideoutelevator.asm @@ -0,0 +1,84 @@ +RocketHideoutElevatorScript: ; 45710 (11:5710) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + push hl + call nz, RocketHideoutElevatorScript_4572c + pop hl + bit 7, [hl] + res 7, [hl] + call nz, RocketHideoutElevatorScript_4575f + xor a + ld [$cf0c], a + inc a + ld [$cc3c], a + ret + +RocketHideoutElevatorScript_4572c: ; 4572c (11:572c) + ld hl, $d3af + ld a, [$d73b] + ld b, a + ld a, [$d73c] + ld c, a + call RocketHideoutElevatorScript_4573a + +RocketHideoutElevatorScript_4573a: ; 4573a (11:573a) + inc hl + inc hl + ld a, b + ld [hli], a + ld a, c + ld [hli], a + ret + +RocketHideoutElevatorScript_45741: ; 45741 (11:5741) + ld hl, RocketHideoutElavatorFloors ; $5754 + call LoadItemList + ld hl, RocketHideoutElevatorWarpMaps ; $5759 + ld de, $cc5b + ld bc, $0006 + call CopyData + ret + +RocketHideoutElavatorFloors: ; 45754 (11:5754) + db $03 ; num elements in list + db $55, $54, $61 ; "B1F", "B2F", "B4F" + db $FF ; terminator + +RocketHideoutElevatorWarpMaps: ; 45759 (11:5759) +; first byte is warp number +; second byte is map number +; These specify where the player goes after getting out of the elevator. + db $04, ROCKET_HIDEOUT_1 + db $04, ROCKET_HIDEOUT_2 + db $02, ROCKET_HIDEOUT_4 + +RocketHideoutElevatorScript_4575f: ; 4575f (11:575f) + call Delay3 + ld b, BANK(ShakeElevator) + ld hl, ShakeElevator + call Bankswitch + ret + +RocketHideoutElevatorTextPointers: ; 4576b (11:576b) + dw RocketHideoutElevatorText1 + +RocketHideoutElevatorText1: ; 4576d (11:576d) + db $08 ; asm + ld b, LIFT_KEY + call IsItemInBag + jr z, .asm_8d8f0 ; 0x45773 + call RocketHideoutElevatorScript_45741 + ld hl, RocketHideoutElevatorWarpMaps ; $5759 + ld a, $61 + call Predef + jr .asm_46c43 ; 0x45780 +.asm_8d8f0 ; 0x45782 + ld hl, RocketHideoutElevatorText_4578b + call PrintText +.asm_46c43 ; 0x45788 + jp TextScriptEnd + +RocketHideoutElevatorText_4578b: ; 4578b (11:578b) + TX_FAR _RocketElevatorText_4578b ; 0x82438 + db $d, "@" diff --git a/scripts/rocktunnel1.asm b/scripts/rocktunnel1.asm new file mode 100755 index 00000000..be49e494 --- /dev/null +++ b/scripts/rocktunnel1.asm @@ -0,0 +1,214 @@ +RockTunnel1Script: ; 444dc (11:44dc) + call EnableAutoTextBoxDrawing + ld hl, RockTunnel1TrainerHeaders + ld de, RockTunnel1ScriptPointers + ld a, [W_ROCKTUNNEL1CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROCKTUNNEL1CURSCRIPT], a + ret + +RockTunnel1ScriptPointers: ; 444ef (11:44ef) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +RockTunnel1TextPointers: ; 444f5 (11:44f5) + dw RockTunnel1Text1 + dw RockTunnel1Text2 + dw RockTunnel1Text3 + dw RockTunnel1Text4 + dw RockTunnel1Text5 + dw RockTunnel1Text6 + dw RockTunnel1Text7 + dw RockTunnel1Text8 + +RockTunnel1TrainerHeaders: ; 44505 (11:4505) +RockTunnel1TrainerHeader1: ; 44505 (11:4505) + db $1 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7d2 ; flag's byte + dw RockTunnel1BattleText1 ; 0x4588 TextBeforeBattle + dw RockTunnel1AfterBattleText1 ; 0x4592 TextAfterBattle + dw RockTunnel1EndBattleText1 ; 0x458d TextEndBattle + dw RockTunnel1EndBattleText1 ; 0x458d TextEndBattle + +RockTunnel1TrainerHeader2: ; 44511 (11:4511) + db $2 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7d2 ; flag's byte + dw RockTunnel1BattleText2 ; 0x4597 TextBeforeBattle + dw RockTunnel1AfterBattleText2 ; 0x45a1 TextAfterBattle + dw RockTunnel1EndBattleText2 ; 0x459c TextEndBattle + dw RockTunnel1EndBattleText2 ; 0x459c TextEndBattle + +RockTunnel1TrainerHeader3: ; 4451d (11:451d) + db $3 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7d2 ; flag's byte + dw RockTunnel1BattleText3 ; 0x45a6 TextBeforeBattle + dw RockTunnel1AfterBattleText3 ; 0x45b0 TextAfterBattle + dw RockTunnel1EndBattleText3 ; 0x45ab TextEndBattle + dw RockTunnel1EndBattleText3 ; 0x45ab TextEndBattle + +RockTunnel1TrainerHeader4: ; 44529 (11:4529) + db $4 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7d2 ; flag's byte + dw RockTunnel1BattleText4 ; 0x45b5 TextBeforeBattle + dw RockTunnel1AfterBattleText4 ; 0x45bf TextAfterBattle + dw RockTunnel1EndBattleText4 ; 0x45ba TextEndBattle + dw RockTunnel1EndBattleText4 ; 0x45ba TextEndBattle + +RockTunnel1TrainerHeader5: ; 44535 (11:4535) + db $5 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7d2 ; flag's byte + dw RockTunnel1BattleText5 ; 0x45c4 TextBeforeBattle + dw RockTunnel1AfterBattleText5 ; 0x45ce TextAfterBattle + dw RockTunnel1EndBattleText5 ; 0x45c9 TextEndBattle + dw RockTunnel1EndBattleText5 ; 0x45c9 TextEndBattle + +RockTunnel1TrainerHeader6: ; 44541 (11:4541) + db $6 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7d2 ; flag's byte + dw RockTunnel1BattleText6 ; 0x45d3 TextBeforeBattle + dw RockTunnel1AfterBattleText6 ; 0x45dd TextAfterBattle + dw RockTunnel1EndBattleText6 ; 0x45d8 TextEndBattle + dw RockTunnel1EndBattleText6 ; 0x45d8 TextEndBattle + +RockTunnel1TrainerHeader7: ; 4454d (11:454d) + db $7 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7d2 ; flag's byte + dw RockTunnel1BattleText7 ; 0x45e2 TextBeforeBattle + dw RockTunnel1AfterBattleText7 ; 0x45ec TextAfterBattle + dw RockTunnel1EndBattleText7 ; 0x45e7 TextEndBattle + dw RockTunnel1EndBattleText7 ; 0x45e7 TextEndBattle + + db $ff + +RockTunnel1Text1: ; 4455a (11:455a) + db $8 + ld hl, RockTunnel1TrainerHeader1 ; $4505 + jr asm_0c916 ; 0x4455e $22 + +RockTunnel1Text2: ; 44560 (11:4560) + db $8 + ld hl, RockTunnel1TrainerHeader2 ; $4511 + jr asm_0c916 ; 0x44564 $1c + +RockTunnel1Text3: ; 44566 (11:4566) + db $8 + ld hl, RockTunnel1TrainerHeader3 ; $451d + jr asm_0c916 ; 0x4456a $16 + +RockTunnel1Text4: ; 4456c (11:456c) + db $8 + ld hl, RockTunnel1TrainerHeader4 ; $4529 + jr asm_0c916 ; 0x44570 $10 + +RockTunnel1Text5: ; 44572 (11:4572) + db $8 + ld hl, RockTunnel1TrainerHeader5 ; $4535 + jr asm_0c916 ; 0x44576 $a + +RockTunnel1Text6: ; 44578 (11:4578) + db $8 + ld hl, RockTunnel1TrainerHeader6 ; $4541 + jr asm_0c916 ; 0x4457c $4 + +RockTunnel1Text7: ; 4457e (11:457e) + db $8 + ld hl, RockTunnel1TrainerHeader7 ; $454d +asm_0c916: ; 44582 (11:4582) + call TalkToTrainer + jp TextScriptEnd + +RockTunnel1BattleText1: ; 44588 (11:4588) + TX_FAR _RockTunnel1BattleText1 + db "@" + +RockTunnel1EndBattleText1: ; 4458d (11:458d) + TX_FAR _RockTunnel1EndBattleText1 + db "@" + +RockTunnel1AfterBattleText1: ; 44592 (11:4592) + TX_FAR _RockTunnel1AfterBattleText1 + db "@" + +RockTunnel1BattleText2: ; 44597 (11:4597) + TX_FAR _RockTunnel1BattleText2 + db "@" + +RockTunnel1EndBattleText2: ; 4459c (11:459c) + TX_FAR _RockTunnel1EndBattleText2 + db "@" + +RockTunnel1AfterBattleText2: ; 445a1 (11:45a1) + TX_FAR _RockTunnel1AfterBattleText2 + db "@" + +RockTunnel1BattleText3: ; 445a6 (11:45a6) + TX_FAR _RockTunnel1BattleText3 + db "@" + +RockTunnel1EndBattleText3: ; 445ab (11:45ab) + TX_FAR _RockTunnel1EndBattleText3 + db "@" + +RockTunnel1AfterBattleText3: ; 445b0 (11:45b0) + TX_FAR _RockTunnel1AfterBattleText3 + db "@" + +RockTunnel1BattleText4: ; 445b5 (11:45b5) + TX_FAR _RockTunnel1BattleText4 + db "@" + +RockTunnel1EndBattleText4: ; 445ba (11:45ba) + TX_FAR _RockTunnel1EndBattleText4 + db "@" + +RockTunnel1AfterBattleText4: ; 445bf (11:45bf) + TX_FAR _RockTunnel1AfterBattleText4 + db "@" + +RockTunnel1BattleText5: ; 445c4 (11:45c4) + TX_FAR _RockTunnel1BattleText5 + db "@" + +RockTunnel1EndBattleText5: ; 445c9 (11:45c9) + TX_FAR _RockTunnel1EndBattleText5 + db "@" + +RockTunnel1AfterBattleText5: ; 445ce (11:45ce) + TX_FAR _RockTunnel1AfterBattleText5 + db "@" + +RockTunnel1BattleText6: ; 445d3 (11:45d3) + TX_FAR _RockTunnel1BattleText6 + db "@" + +RockTunnel1EndBattleText6: ; 445d8 (11:45d8) + TX_FAR _RockTunnel1EndBattleText6 + db "@" + +RockTunnel1AfterBattleText6: ; 445dd (11:45dd) + TX_FAR _RockTunnel1AfterBattleText6 + db "@" + +RockTunnel1BattleText7: ; 445e2 (11:45e2) + TX_FAR _RockTunnel1BattleText7 + db "@" + +RockTunnel1EndBattleText7: ; 445e7 (11:45e7) + TX_FAR _RockTunnel1EndBattleText7 + db "@" + +RockTunnel1AfterBattleText7: ; 445ec (11:45ec) + TX_FAR _RockTunnel1AfterBattleText7 + db "@" + +RockTunnel1Text8: ; 445f1 (11:45f1) + TX_FAR _RockTunnel1Text8 + db "@" diff --git a/scripts/rocktunnel2.asm b/scripts/rocktunnel2.asm new file mode 100755 index 00000000..62f4fe18 --- /dev/null +++ b/scripts/rocktunnel2.asm @@ -0,0 +1,242 @@ +RockTunnel2Script: ; 45feb (11:5feb) + call EnableAutoTextBoxDrawing + ld hl, RockTunnel2TrainerHeaders + ld de, RockTunnel2ScriptPointers + ld a, [W_ROCKTUNNEL2CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROCKTUNNEL2CURSCRIPT], a + ret + +RockTunnel2ScriptPointers: ; 45ffe (11:5ffe) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +RockTunnel2TextPointers: ; 46004 (11:6004) + dw RockTunnel2Text1 + dw RockTunnel2Text2 + dw RockTunnel2Text3 + dw RockTunnel2Text4 + dw RockTunnel2Text5 + dw RockTunnel2Text6 + dw RockTunnel2Text7 + dw RockTunnel2Text8 + +RockTunnel2TrainerHeaders: ; 46014 (11:6014) +RockTunnel2TrainerHeader0: ; 46014 (11:6014) + db $1 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d87d ; flag's byte + dw RockTunnel2BattleText2 ; 0x60c5 TextBeforeBattle + dw RockTunnel2AfterBattleText2 ; 0x60cf TextAfterBattle + dw RockTunnel2EndBattleText2 ; 0x60ca TextEndBattle + dw RockTunnel2EndBattleText2 ; 0x60ca TextEndBattle + +RockTunnel2TrainerHeader2: ; 46020 (11:6020) + db $2 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d87d ; flag's byte + dw RockTunnel2BattleText3 ; 0x60d4 TextBeforeBattle + dw RockTunnel2AfterBattleText3 ; 0x60de TextAfterBattle + dw RockTunnel2EndBattleText3 ; 0x60d9 TextEndBattle + dw RockTunnel2EndBattleText3 ; 0x60d9 TextEndBattle + +RockTunnel2TrainerHeader3: ; 4602c (11:602c) + db $3 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d87d ; flag's byte + dw RockTunnel2BattleText4 ; 0x60e3 TextBeforeBattle + dw RockTunnel2AfterBattleText4 ; 0x60ed TextAfterBattle + dw RockTunnel2EndBattleText4 ; 0x60e8 TextEndBattle + dw RockTunnel2EndBattleText4 ; 0x60e8 TextEndBattle + +RockTunnel2TrainerHeader4: ; 46038 (11:6038) + db $4 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d87d ; flag's byte + dw RockTunnel2BattleText5 ; 0x60f2 TextBeforeBattle + dw RockTunnel2AfterBattleText5 ; 0x60fc TextAfterBattle + dw RockTunnel2EndBattleText5 ; 0x60f7 TextEndBattle + dw RockTunnel2EndBattleText5 ; 0x60f7 TextEndBattle + +RockTunnel2TrainerHeader5: ; 46044 (11:6044) + db $5 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d87d ; flag's byte + dw RockTunnel2BattleText6 ; 0x6101 TextBeforeBattle + dw RockTunnel2AfterBattleText6 ; 0x610b TextAfterBattle + dw RockTunnel2EndBattleText6 ; 0x6106 TextEndBattle + dw RockTunnel2EndBattleText6 ; 0x6106 TextEndBattle + +RockTunnel2TrainerHeader6: ; 46050 (11:6050) + db $6 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d87d ; flag's byte + dw RockTunnel2BattleText7 ; 0x6110 TextBeforeBattle + dw RockTunnel2AfterBattleText7 ; 0x611a TextAfterBattle + dw RockTunnel2EndBattleText7 ; 0x6115 TextEndBattle + dw RockTunnel2EndBattleText7 ; 0x6115 TextEndBattle + +RockTunnel2TrainerHeader7: ; 4605c (11:605c) + db $7 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d87d ; flag's byte + dw RockTunnel2BattleText8 ; 0x611f TextBeforeBattle + dw RockTunnel2AfterBattleText8 ; 0x6129 TextAfterBattle + dw RockTunnel2EndBattleText8 ; 0x6124 TextEndBattle + dw RockTunnel2EndBattleText8 ; 0x6124 TextEndBattle + +RockTunnel2TrainerHeader8: ; 46068 (11:6068) + db $8 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d87d ; flag's byte + dw RockTunnel2BattleText9 ; 0x612e TextBeforeBattle + dw RockTunnel2AfterBattleText9 ; 0x6138 TextAfterBattle + dw RockTunnel2EndBattleText9 ; 0x6133 TextEndBattle + dw RockTunnel2EndBattleText9 ; 0x6133 TextEndBattle + + db $ff + +RockTunnel2Text1: ; 46075 (11:6075) + db $08 ; asm + ld hl, RockTunnel2TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +RockTunnel2Text2: ; 4607f (11:607f) + db $08 ; asm + ld hl, RockTunnel2TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +RockTunnel2Text3: ; 46089 (11:6089) + db $08 ; asm + ld hl, RockTunnel2TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +RockTunnel2Text4: ; 46093 (11:6093) + db $08 ; asm + ld hl, RockTunnel2TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +RockTunnel2Text5: ; 4609d (11:609d) + db $08 ; asm + ld hl, RockTunnel2TrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +RockTunnel2Text6: ; 460a7 (11:60a7) + db $08 ; asm + ld hl, RockTunnel2TrainerHeader6 + call TalkToTrainer + jp TextScriptEnd + +RockTunnel2Text7: ; 460b1 (11:60b1) + db $08 ; asm + ld hl, RockTunnel2TrainerHeader7 + call TalkToTrainer + jp TextScriptEnd + +RockTunnel2Text8: ; 460bb (11:60bb) + db $08 ; asm + ld hl, RockTunnel2TrainerHeader8 + call TalkToTrainer + jp TextScriptEnd + +RockTunnel2BattleText2: ; 460c5 (11:60c5) + TX_FAR _RockTunnel2BattleText2 + db "@" + +RockTunnel2EndBattleText2: ; 460ca (11:60ca) + TX_FAR _RockTunnel2EndBattleText2 + db "@" + +RockTunnel2AfterBattleText2: ; 460cf (11:60cf) + TX_FAR _RockTunnel2AfterBattleText2 + db "@" + +RockTunnel2BattleText3: ; 460d4 (11:60d4) + TX_FAR _RockTunnel2BattleText3 + db "@" + +RockTunnel2EndBattleText3: ; 460d9 (11:60d9) + TX_FAR _RockTunnel2EndBattleText3 + db "@" + +RockTunnel2AfterBattleText3: ; 460de (11:60de) + TX_FAR _RockTunnel2AfterBattleText3 + db "@" + +RockTunnel2BattleText4: ; 460e3 (11:60e3) + TX_FAR _RockTunnel2BattleText4 + db "@" + +RockTunnel2EndBattleText4: ; 460e8 (11:60e8) + TX_FAR _RockTunnel2EndBattleText4 + db "@" + +RockTunnel2AfterBattleText4: ; 460ed (11:60ed) + TX_FAR _RockTunnel2AfterBattleText4 + db "@" + +RockTunnel2BattleText5: ; 460f2 (11:60f2) + TX_FAR _RockTunnel2BattleText5 + db "@" + +RockTunnel2EndBattleText5: ; 460f7 (11:60f7) + TX_FAR _RockTunnel2EndBattleText5 + db "@" + +RockTunnel2AfterBattleText5: ; 460fc (11:60fc) + TX_FAR _RockTunnel2AfterBattleText5 + db "@" + +RockTunnel2BattleText6: ; 46101 (11:6101) + TX_FAR _RockTunnel2BattleText6 + db "@" + +RockTunnel2EndBattleText6: ; 46106 (11:6106) + TX_FAR _RockTunnel2EndBattleText6 + db "@" + +RockTunnel2AfterBattleText6: ; 4610b (11:610b) + TX_FAR _RockTunnel2AfterBattleText6 + db "@" + +RockTunnel2BattleText7: ; 46110 (11:6110) + TX_FAR _RockTunnel2BattleText7 + db "@" + +RockTunnel2EndBattleText7: ; 46115 (11:6115) + TX_FAR _RockTunnel2EndBattleText7 + db "@" + +RockTunnel2AfterBattleText7: ; 4611a (11:611a) + TX_FAR _RockTunnel2AfterBattleText7 + db "@" + +RockTunnel2BattleText8: ; 4611f (11:611f) + TX_FAR _RockTunnel2BattleText8 + db "@" + +RockTunnel2EndBattleText8: ; 46124 (11:6124) + TX_FAR _RockTunnel2EndBattleText8 + db "@" + +RockTunnel2AfterBattleText8: ; 46129 (11:6129) + TX_FAR _RockTunnel2AfterBattleText8 + db "@" + +RockTunnel2BattleText9: ; 4612e (11:612e) + TX_FAR _RockTunnel2BattleText9 + db "@" + +RockTunnel2EndBattleText9: ; 46133 (11:6133) + TX_FAR _RockTunnel2EndBattleText9 + db "@" + +RockTunnel2AfterBattleText9: ; 46138 (11:6138) + TX_FAR _RockTunnel2AfterBattleText9 + db "@" diff --git a/scripts/rocktunnelpokecenter.asm b/scripts/rocktunnelpokecenter.asm new file mode 100755 index 00000000..62336edc --- /dev/null +++ b/scripts/rocktunnelpokecenter.asm @@ -0,0 +1,23 @@ +RockTunnelPokecenterScript: ; 493ba (12:53ba) + call Func_22fa + jp EnableAutoTextBoxDrawing + +RockTunnelPokecenterTextPointers: ; 493c0 (12:53c0) + dw RockTunnelPokecenterText1 + dw RockTunnelPokecenterText2 + dw RockTunnelPokecenterText3 + dw RockTunnelPokecenterText4 + +RockTunnelPokecenterText1: ; 493c8 (12:53c8) + db $ff + +RockTunnelPokecenterText2: ; 493c9 (12:53c9) + TX_FAR _RockTunnelPokecenterText1 + db "@" + +RockTunnelPokecenterText3: ; 493ce (12:53ce) + TX_FAR _RockTunnelPokecenterText3 + db "@" + +RockTunnelPokecenterText4: ; 493d3 (12:53d3) + db $f6 diff --git a/scripts/route1.asm b/scripts/route1.asm new file mode 100755 index 00000000..1faf5a48 --- /dev/null +++ b/scripts/route1.asm @@ -0,0 +1,53 @@ +Route1Script: ; 1caaf (7:4aaf) + jp EnableAutoTextBoxDrawing + +Route1TextPointers: ; 1cab2 (7:4ab2) + dw Route1Text1 + dw Route1Text2 + dw Route1Text3 + +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, Route1Text_1cae8 ; $4ae8 + jr .asm_46d43 ; 0x1cad3 +.BagFull + ld hl, Route1Text_1caf3 ; $4af3 + jr .asm_46d43 ; 0x1cad8 +.asm_02840 ; 0x1cada + ld hl, Route1Text_1caee ; $4aee +.asm_46d43 ; 0x1cadd + call PrintText + jp TextScriptEnd + +Route1ViridianMartSampleText: ; 1cae3 (7:4ae3) + TX_FAR _Route1ViridianMartSampleText + db "@" + +Route1Text_1cae8: ; 1cae8 (7:4ae8) + TX_FAR _Route1Text_1cae8 + db $0b,"@" + +Route1Text_1caee: ; 1caee (7:4aee) + TX_FAR _Route1Text_1caee + db "@" + +Route1Text_1caf3: ; 1caf3 (7:4af3) + TX_FAR _Route1Text_1caf3 + db "@" + +Route1Text2: ; 1caf8 (7:4af8) + TX_FAR _Route1Text2 + db "@" + +Route1Text3: ; 1cafd (7:4afd) + TX_FAR _Route1Text3 + db "@" diff --git a/scripts/route10.asm b/scripts/route10.asm new file mode 100755 index 00000000..1e0ecb91 --- /dev/null +++ b/scripts/route10.asm @@ -0,0 +1,199 @@ +Route10Script: ; 59336 (16:5336) + call EnableAutoTextBoxDrawing + ld hl, Route10TrainerHeaders + ld de, Route10ScriptPointers + ld a, [W_ROUTE10CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROUTE10CURSCRIPT], a + ret + +Route10ScriptPointers: ; 59349 (16:5349) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +Route10TextPointers: ; 5934f (16:534f) + dw Route10Text1 + dw Route10Text2 + dw Route10Text3 + dw Route10Text4 + dw Route10Text5 + dw Route10Text6 + dw Route10Text7 + dw PokeCenterSignText + dw Route10Text9 + dw Route10Text10 + +Route10TrainerHeaders: ; 59363 (16:5363) +Route10TrainerHeader0: ; 59363 (16:5363) + db $1 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7d1 ; flag's byte + dw Route10BattleText1 ; 0x53b6 TextBeforeBattle + dw Route10AfterBattleText1 ; 0x53c0 TextAfterBattle + dw Route10EndBattleText1 ; 0x53bb TextEndBattle + dw Route10EndBattleText1 ; 0x53bb TextEndBattle + +Route10TrainerHeader1: ; 5936f (16:536f) + db $2 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7d1 ; flag's byte + dw Route10BattleText2 ; 0x53cf TextBeforeBattle + dw Route10AfterBattleText2 ; 0x53d9 TextAfterBattle + dw Route10EndBattleText2 ; 0x53d4 TextEndBattle + dw Route10EndBattleText2 ; 0x53d4 TextEndBattle + +Route10TrainerHeader2: ; 5937b (16:537b) + db $3 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7d1 ; flag's byte + dw Route10BattleText3 ; 0x53e8 TextBeforeBattle + dw Route10AfterBattleText3 ; 0x53f2 TextAfterBattle + dw Route10EndBattleText3 ; 0x53ed TextEndBattle + dw Route10EndBattleText3 ; 0x53ed TextEndBattle + +Route10TrainerHeader3: ; 59387 (16:5387) + db $4 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7d1 ; flag's byte + dw Route10BattleText4 ; 0x5401 TextBeforeBattle + dw Route10AfterBattleText4 ; 0x540b TextAfterBattle + dw Route10EndBattleText4 ; 0x5406 TextEndBattle + dw Route10EndBattleText4 ; 0x5406 TextEndBattle + +Route10TrainerHeader4: ; 59393 (16:5393) + db $5 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7d1 ; flag's byte + dw Route10BattleText5 ; 0x541a TextBeforeBattle + dw Route10AfterBattleText5 ; 0x5424 TextAfterBattle + dw Route10EndBattleText5 ; 0x541f TextEndBattle + dw Route10EndBattleText5 ; 0x541f TextEndBattle + +Route10TrainerHeader5: ; 5939f (16:539f) + db $6 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7d1 ; flag's byte + dw Route10BattleText6 ; 0x5433 TextBeforeBattle + dw Route10AfterBattleText6 ; 0x543d TextAfterBattle + dw Route10EndBattleText6 ; 0x5438 TextEndBattle + dw Route10EndBattleText6 ; 0x5438 TextEndBattle + + db $ff + +Route10Text1: ; 593ac (16:53ac) + db $08 ; asm + ld hl, Route10TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +Route10BattleText1: ; 593b6 (16:53b6) + TX_FAR _Route10BattleText1 + db "@" + +Route10EndBattleText1: ; 593bb (16:53bb) + TX_FAR _Route10EndBattleText1 + db "@" + +Route10AfterBattleText1: ; 593c0 (16:53c0) + TX_FAR _Route10AfterBattleText1 + db "@" + +Route10Text2: ; 593c5 (16:53c5) + db $08 ; asm + ld hl, Route10TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +Route10BattleText2: ; 593cf (16:53cf) + TX_FAR _Route10BattleText2 + db "@" + +Route10EndBattleText2: ; 593d4 (16:53d4) + TX_FAR _Route10EndBattleText2 + db "@" + +Route10AfterBattleText2: ; 593d9 (16:53d9) + TX_FAR _Route10AfterBattleText2 + db "@" + +Route10Text3: ; 593de (16:53de) + db $08 ; asm + ld hl, Route10TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +Route10BattleText3: ; 593e8 (16:53e8) + TX_FAR _Route10BattleText3 + db "@" + +Route10EndBattleText3: ; 593ed (16:53ed) + TX_FAR _Route10EndBattleText3 + db "@" + +Route10AfterBattleText3: ; 593f2 (16:53f2) + TX_FAR _Route10AfterBattleText3 + db "@" + +Route10Text4: ; 593f7 (16:53f7) + db $08 ; asm + ld hl, Route10TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +Route10BattleText4: ; 59401 (16:5401) + TX_FAR _Route10BattleText4 + db "@" + +Route10EndBattleText4: ; 59406 (16:5406) + TX_FAR _Route10EndBattleText4 + db "@" + +Route10AfterBattleText4: ; 5940b (16:540b) + TX_FAR _Route10AfterBattleText4 + db "@" + +Route10Text5: ; 59410 (16:5410) + db $08 ; asm + ld hl, Route10TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +Route10BattleText5: ; 5941a (16:541a) + TX_FAR _Route10BattleText5 + db "@" + +Route10EndBattleText5: ; 5941f (16:541f) + TX_FAR _Route10EndBattleText5 + db "@" + +Route10AfterBattleText5: ; 59424 (16:5424) + TX_FAR _Route10AfterBattleText5 + db "@" + +Route10Text6: ; 59429 (16:5429) + db $08 ; asm + ld hl, Route10TrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +Route10BattleText6: ; 59433 (16:5433) + TX_FAR _Route10BattleText6 + db "@" + +Route10EndBattleText6: ; 59438 (16:5438) + TX_FAR _Route10EndBattleText6 + db "@" + +Route10AfterBattleText6: ; 5943d (16:543d) + TX_FAR _Route10AfterBattleText6 + db "@" + +Route10Text9: ; 59442 (16:5442) +Route10Text7: ; 59442 (16:5442) + TX_FAR _Route10Text7 ; _Route10Text9 + db "@" + +Route10Text10: ; 59447 (16:5447) + TX_FAR _Route10Text10 + db "@" diff --git a/scripts/route11.asm b/scripts/route11.asm new file mode 100755 index 00000000..6217569e --- /dev/null +++ b/scripts/route11.asm @@ -0,0 +1,303 @@ +Route11Script: ; 5944c (16:544c) + call EnableAutoTextBoxDrawing + ld hl, Route11TrainerHeaders + ld de, Route11ScriptPointers + ld a, [W_ROUTE11CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROUTE11CURSCRIPT], a + ret + +Route11ScriptPointers: ; 5945f (16:545f) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +Route11TextPointers: ; 59465 (16:5465) + dw Route11Text1 + dw Route11Text2 + dw Route11Text3 + dw Route11Text4 + dw Route11Text5 + dw Route11Text6 + dw Route11Text7 + dw Route11Text8 + dw Route11Text9 + dw Route11Text10 + dw Route11Text11 + +Route11TrainerHeaders: ; 5947b (16:547b) +Route11TrainerHeader0: ; 5947b (16:547b) + db $1 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7d5 ; flag's byte + dw Route11BattleText1 ; 0x54fe TextBeforeBattle + dw Route11AfterBattleText1 ; 0x5508 TextAfterBattle + dw Route11EndBattleText1 ; 0x5503 TextEndBattle + dw Route11EndBattleText1 ; 0x5503 TextEndBattle + +Route11TrainerHeader1: ; 59487 (16:5487) + db $2 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7d5 ; flag's byte + dw Route11BattleText2 ; 0x5517 TextBeforeBattle + dw Route11AfterBattleText2 ; 0x5521 TextAfterBattle + dw Route11EndBattleText2 ; 0x551c TextEndBattle + dw Route11EndBattleText2 ; 0x551c TextEndBattle + +Route11TrainerHeader2: ; 59493 (16:5493) + db $3 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7d5 ; flag's byte + dw Route11BattleText3 ; 0x5530 TextBeforeBattle + dw Route11AfterBattleText3 ; 0x553a TextAfterBattle + dw Route11EndBattleText3 ; 0x5535 TextEndBattle + dw Route11EndBattleText3 ; 0x5535 TextEndBattle + +Route11TrainerHeader3: ; 5949f (16:549f) + db $4 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7d5 ; flag's byte + dw Route11BattleText4 ; 0x5549 TextBeforeBattle + dw Route11AfterBattleText4 ; 0x5553 TextAfterBattle + dw Route11EndBattleText4 ; 0x554e TextEndBattle + dw Route11EndBattleText4 ; 0x554e TextEndBattle + +Route11TrainerHeader4: ; 594ab (16:54ab) + db $5 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7d5 ; flag's byte + dw Route11BattleText5 ; 0x5562 TextBeforeBattle + dw Route11AfterBattleText5 ; 0x556c TextAfterBattle + dw Route11EndBattleText5 ; 0x5567 TextEndBattle + dw Route11EndBattleText5 ; 0x5567 TextEndBattle + +Route11TrainerHeader5: ; 594b7 (16:54b7) + db $6 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7d5 ; flag's byte + dw Route11BattleText6 ; 0x557b TextBeforeBattle + dw Route11AfterBattleText6 ; 0x5585 TextAfterBattle + dw Route11EndBattleText6 ; 0x5580 TextEndBattle + dw Route11EndBattleText6 ; 0x5580 TextEndBattle + +Route11TrainerHeader6: ; 594c3 (16:54c3) + db $7 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7d5 ; flag's byte + dw Route11BattleText7 ; 0x5594 TextBeforeBattle + dw Route11AfterBattleText7 ; 0x559e TextAfterBattle + dw Route11EndBattleText7 ; 0x5599 TextEndBattle + dw Route11EndBattleText7 ; 0x5599 TextEndBattle + +Route11TrainerHeader7: ; 594cf (16:54cf) + db $8 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7d5 ; flag's byte + dw Route11BattleText8 ; 0x55ad TextBeforeBattle + dw Route11AfterBattleText8 ; 0x55b7 TextAfterBattle + dw Route11EndBattleText8 ; 0x55b2 TextEndBattle + dw Route11EndBattleText8 ; 0x55b2 TextEndBattle + +Route11TrainerHeader8: ; 594db (16:54db) + db $9 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7d5 ; flag's byte + dw Route11BattleText9 ; 0x55c6 TextBeforeBattle + dw Route11AfterBattleText9 ; 0x55d0 TextAfterBattle + dw Route11EndBattleText9 ; 0x55cb TextEndBattle + dw Route11EndBattleText9 ; 0x55cb TextEndBattle + +Route11TrainerHeader9: ; 594e7 (16:54e7) + db $a ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7d5 ; flag's byte + dw Route11BattleText10 ; 0x55df TextBeforeBattle + dw Route11AfterBattleText10 ; 0x55e9 TextAfterBattle + dw Route11EndBattleText10 ; 0x55e4 TextEndBattle + dw Route11EndBattleText10 ; 0x55e4 TextEndBattle + + db $ff + +Route11Text1: ; 594f4 (16:54f4) + db $8 + ld hl, Route11TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +Route11BattleText1: ; 594fe (16:54fe) + TX_FAR _Route11BattleText1 + db "@" + +Route11EndBattleText1: ; 59503 (16:5503) + TX_FAR _Route11EndBattleText1 + db "@" + +Route11AfterBattleText1: ; 59508 (16:5508) + TX_FAR _Route11AfterBattleText1 + db "@" + +Route11Text2: ; 5950d (16:550d) + db $08 ; asm + ld hl, Route11TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +Route11BattleText2: ; 59517 (16:5517) + TX_FAR _Route11BattleText2 + db "@" + +Route11EndBattleText2: ; 5951c (16:551c) + TX_FAR _Route11EndBattleText2 + db "@" + +Route11AfterBattleText2: ; 59521 (16:5521) + TX_FAR _Route11AfterBattleText2 + db "@" + +Route11Text3: ; 59526 (16:5526) + db $08 ; asm + ld hl, Route11TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +Route11BattleText3: ; 59530 (16:5530) + TX_FAR _Route11BattleText3 + db "@" + +Route11EndBattleText3: ; 59535 (16:5535) + TX_FAR _Route11EndBattleText3 + db "@" + +Route11AfterBattleText3: ; 5953a (16:553a) + TX_FAR _Route11AfterBattleText3 + db "@" + +Route11Text4: ; 5953f (16:553f) + db $08 ; asm + ld hl, Route11TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +Route11BattleText4: ; 59549 (16:5549) + TX_FAR _Route11BattleText4 + db "@" + +Route11EndBattleText4: ; 5954e (16:554e) + TX_FAR _Route11EndBattleText4 + db "@" + +Route11AfterBattleText4: ; 59553 (16:5553) + TX_FAR _Route11AfterBattleText4 + db "@" + +Route11Text5: ; 59558 (16:5558) + db $08 ; asm + ld hl, Route11TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +Route11BattleText5: ; 59562 (16:5562) + TX_FAR _Route11BattleText5 + db "@" + +Route11EndBattleText5: ; 59567 (16:5567) + TX_FAR _Route11EndBattleText5 + db "@" + +Route11AfterBattleText5: ; 5956c (16:556c) + TX_FAR _Route11AfterBattleText5 + db "@" + +Route11Text6: ; 59571 (16:5571) + db $08 ; asm + ld hl, Route11TrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +Route11BattleText6: ; 5957b (16:557b) + TX_FAR _Route11BattleText6 + db "@" + +Route11EndBattleText6: ; 59580 (16:5580) + TX_FAR _Route11EndBattleText6 + db "@" + +Route11AfterBattleText6: ; 59585 (16:5585) + TX_FAR _Route11AfterBattleText6 + db "@" + +Route11Text7: ; 5958a (16:558a) + db $08 ; asm + ld hl, Route11TrainerHeader6 + call TalkToTrainer + jp TextScriptEnd + +Route11BattleText7: ; 59594 (16:5594) + TX_FAR _Route11BattleText7 + db "@" + +Route11EndBattleText7: ; 59599 (16:5599) + TX_FAR _Route11EndBattleText7 + db "@" + +Route11AfterBattleText7: ; 5959e (16:559e) + TX_FAR _Route11AfterBattleText7 + db "@" + +Route11Text8: ; 595a3 (16:55a3) + db $08 ; asm + ld hl, Route11TrainerHeader7 + call TalkToTrainer + jp TextScriptEnd + +Route11BattleText8: ; 595ad (16:55ad) + TX_FAR _Route11BattleText8 + db "@" + +Route11EndBattleText8: ; 595b2 (16:55b2) + TX_FAR _Route11EndBattleText8 + db "@" + +Route11AfterBattleText8: ; 595b7 (16:55b7) + TX_FAR _Route11AfterBattleText8 + db "@" + +Route11Text9: ; 595bc (16:55bc) + db $08 ; asm + ld hl, Route11TrainerHeader8 + call TalkToTrainer + jp TextScriptEnd + +Route11BattleText9: ; 595c6 (16:55c6) + TX_FAR _Route11BattleText9 + db "@" + +Route11EndBattleText9: ; 595cb (16:55cb) + TX_FAR _Route11EndBattleText9 + db "@" + +Route11AfterBattleText9: ; 595d0 (16:55d0) + TX_FAR _Route11AfterBattleText9 + db "@" + +Route11Text10: ; 595d5 (16:55d5) + db $08 ; asm + ld hl, Route11TrainerHeader9 + call TalkToTrainer + jp TextScriptEnd + +Route11BattleText10: ; 595df (16:55df) + TX_FAR _Route11BattleText10 + db "@" + +Route11EndBattleText10: ; 595e4 (16:55e4) + TX_FAR _Route11EndBattleText10 + db "@" + +Route11AfterBattleText10: ; 595e9 (16:55e9) + TX_FAR _Route11AfterBattleText10 + db "@" + +Route11Text11: ; 595ee (16:55ee) + TX_FAR _Route11Text11 + db "@" diff --git a/scripts/route11gate.asm b/scripts/route11gate.asm new file mode 100755 index 00000000..e53fc63a --- /dev/null +++ b/scripts/route11gate.asm @@ -0,0 +1,9 @@ +Route11GateScript: ; 4940c (12:540c) + jp EnableAutoTextBoxDrawing + +Route11GateTextPointers: ; 4940f (12:540f) + dw Route11GateText1 + +Route11GateText1: ; 49411 (12:5411) + TX_FAR _Route11GateText1 + db "@" diff --git a/scripts/route11gateupstairs.asm b/scripts/route11gateupstairs.asm new file mode 100755 index 00000000..0ee428c4 --- /dev/null +++ b/scripts/route11gateupstairs.asm @@ -0,0 +1,81 @@ +Route11GateUpstairsScript: ; 49454 (12:5454) + jp DisableAutoTextBoxDrawing + +Route11GateUpstairsTextPointers: ; 49457 (12:5457) + dw Route11GateUpstairsText1 + dw Route11GateUpstairsText2 + dw Route11GateUpstairsText3 + dw Route11GateUpstairsText4 + +Route11GateUpstairsText1: ; 4945f (12:545f) + db $08 ; asm + xor a + ld [wWhichTrade], a + ld a, $54 + call Predef +asm_49469: ; 49469 (12:5469) + jp TextScriptEnd + +Route11GateUpstairsText2: ; 4946c (12:546c) + db $8 + ld a, [$d7d6] + add a + jr c, .asm_4949b ; 0x49471 $28 + ld a, $1e + ld [$ffdb], a + ld a, $47 + ld [$ffdc], a + ld [$d11e], a + call GetItemName + ld h, d + ld l, e + ld de, $cc5b + ld bc, $000d + call CopyData + ld a, $62 + call Predef + ld a, [$ffdb] + dec a + jr nz, .asm_494a1 ; 0x49494 $b + ld hl, $d7d6 + set 7, [hl] +.asm_4949b + ld hl, Route11GateUpstairsText_494a3 + call PrintText +.asm_494a1 + jr asm_49469 ; 0x494a1 $c6 + +Route11GateUpstairsText_494a3: ; 494a3 (12:54a3) + TX_FAR _Route11GateUpstairsText_494a3 + db "@" + +Route11GateUpstairsText3: ; 494a8 (12:54a8) + db $08 ; asm + ld a, [$c109] + cp $4 + jp nz, Route12GateUpstairsScript_495c9 + ld a, [$d7d8] + bit 7, a ; fought snorlax? + ld hl, BinocularsSnorlaxText + jr z, .print + ld hl, BinocularsNoSnorlaxText +.print + call PrintText + jp TextScriptEnd + +BinocularsSnorlaxText: + TX_FAR _BinocularsSnorlaxText + db "@" + +BinocularsNoSnorlaxText: + TX_FAR _BinocularsNoSnorlaxText + db "@" + +Route11GateUpstairsText4: ; 494ce (12:54ce) + db $8 + ld hl, Route11GateUpstairsText_494d5 ; $54d5 + jp Route12GateUpstairsScript_495c9 + +Route11GateUpstairsText_494d5: ; 494d5 (12:54d5) + TX_FAR _Route11GateUpstairsText_494d5 + db "@" diff --git a/scripts/route12.asm b/scripts/route12.asm new file mode 100755 index 00000000..5bbdac3f --- /dev/null +++ b/scripts/route12.asm @@ -0,0 +1,292 @@ +Route12Script: ; 595f3 (16:55f3) + call EnableAutoTextBoxDrawing + ld hl, Route12TrainerHeaders + ld de, Route12ScriptPointers + ld a, [W_ROUTE12CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROUTE12CURSCRIPT], a + ret + +Route12Script_59606: ; 59606 (16:5606) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_ROUTE12CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +Route12ScriptPointers: ; 59611 (16:5611) + dw Route12Script0 + dw Func_324c + dw EndTrainerBattle + dw Route12Script3 + +Route12Script0: ; 59619 (16:5619) + ld hl, $d7d8 + bit 7, [hl] + jp nz, CheckFightingMapTrainers + bit 6, [hl] + res 6, [hl] + jp z, CheckFightingMapTrainers + ld a, $d + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld a, SNORLAX + ld [W_CUROPPONENT], a ; $d059 + ld a, 30 + ld [W_CURENEMYLVL], a ; $d127 + ld a, $1d + ld [$cc4d], a + ld a, $11 + call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) + ld a, $3 + ld [W_ROUTE12CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +Route12Script3: ; 5964c (16:564c) + ld a, [W_ISINBATTLE] ; $d057 + cp $ff + jr z, Route12Script_59606 + call UpdateSprites + ld a, [$cf0b] + cp $2 + jr z, .asm_59664 + ld a, $e + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID +.asm_59664 + ld hl, $d7d8 + set 7, [hl] + call Delay3 + ld a, $0 + ld [W_ROUTE12CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +Route12TextPointers: ; 59675 (16:5675) + dw Route12Text1 + dw Route12Text2 + dw Route12Text3 + dw Route12Text4 + dw Route12Text5 + dw Route12Text6 + dw Route12Text7 + dw Route12Text8 + dw Predef5CText + dw Predef5CText + dw Route12Text11 + dw Route12Text12 + dw Route12Text13 + dw Route12Text14 + +Route12TrainerHeaders: ; 59691 (16:5691) +Route12TrainerHeader0: ; 59691 (16:5691) + db $2 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7d7 ; flag's byte + dw Route12BattleText1 ; 0x56ff TextBeforeBattle + dw Route12AfterBattleText1 ; 0x5709 TextAfterBattle + dw Route12EndBattleText1 ; 0x5704 TextEndBattle + dw Route12EndBattleText1 ; 0x5704 TextEndBattle + +Route12TrainerHeader1: ; 5969d (16:569d) + db $3 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7d7 ; flag's byte + dw Route12BattleText2 ; 0x5718 TextBeforeBattle + dw Route12AfterBattleText2 ; 0x5722 TextAfterBattle + dw Route12EndBattleText2 ; 0x571d TextEndBattle + dw Route12EndBattleText2 ; 0x571d TextEndBattle + +Route12TrainerHeader2: ; 596a9 (16:56a9) + db $4 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7d7 ; flag's byte + dw Route12BattleText3 ; 0x5731 TextBeforeBattle + dw Route12AfterBattleText3 ; 0x573b TextAfterBattle + dw Route12EndBattleText3 ; 0x5736 TextEndBattle + dw Route12EndBattleText3 ; 0x5736 TextEndBattle + +Route12TrainerHeader3: ; 596b5 (16:56b5) + db $5 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7d7 ; flag's byte + dw Route12BattleText4 ; 0x574a TextBeforeBattle + dw Route12AfterBattleText4 ; 0x5754 TextAfterBattle + dw Route12EndBattleText4 ; 0x574f TextEndBattle + dw Route12EndBattleText4 ; 0x574f TextEndBattle + +Route12TrainerHeader4: ; 596c1 (16:56c1) + db $6 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7d7 ; flag's byte + dw Route12BattleText5 ; 0x5763 TextBeforeBattle + dw Route12AfterBattleText5 ; 0x576d TextAfterBattle + dw Route12EndBattleText5 ; 0x5768 TextEndBattle + dw Route12EndBattleText5 ; 0x5768 TextEndBattle + +Route12TrainerHeader5: ; 596cd (16:56cd) + db $7 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7d7 ; flag's byte + dw Route12BattleText6 ; 0x577c TextBeforeBattle + dw Route12AfterBattleText6 ; 0x5786 TextAfterBattle + dw Route12EndBattleText6 ; 0x5781 TextEndBattle + dw Route12EndBattleText6 ; 0x5781 TextEndBattle + +Route12TrainerHeader6: ; 596d9 (16:56d9) + db $8 ; flag's bit + db ($1 << 4) ; trainer's view range + dw $d7d7 ; flag's byte + dw Route12BattleText7 ; 0x5795 TextBeforeBattle + dw Route12AfterBattleText7 ; 0x579f TextAfterBattle + dw Route12EndBattleText7 ; 0x579a TextEndBattle + dw Route12EndBattleText7 ; 0x579a TextEndBattle + + db $ff + +Route12Text1: ; 596e6 (16:56e6) + TX_FAR _Route12Text1 + db "@" + +Route12Text13: ; 596eb (16:56eb) + TX_FAR _Route12Text13 + db "@" + +Route12Text14: ; 596f0 (16:56f0) + TX_FAR _Route12Text14 + db "@" + +Route12Text2: ; 596f5 (16:56f5) + db $08 ; asm + ld hl, Route12TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +Route12BattleText1: ; 596ff (16:56ff) + TX_FAR _Route12BattleText1 + db "@" + +Route12EndBattleText1: ; 59704 (16:5704) + TX_FAR _Route12EndBattleText1 + db "@" + +Route12AfterBattleText1: ; 59709 (16:5709) + TX_FAR _Route12AfterBattleText1 + db "@" + +Route12Text3: ; 5970e (16:570e) + db $08 ; asm + ld hl, Route12TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +Route12BattleText2: ; 59718 (16:5718) + TX_FAR _Route12BattleText2 + db "@" + +Route12EndBattleText2: ; 5971d (16:571d) + TX_FAR _Route12EndBattleText2 + db "@" + +Route12AfterBattleText2: ; 59722 (16:5722) + TX_FAR _Route12AfterBattleText2 + db "@" + +Route12Text4: ; 59727 (16:5727) + db $08 ; asm + ld hl, Route12TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +Route12BattleText3: ; 59731 (16:5731) + TX_FAR _Route12BattleText3 + db "@" + +Route12EndBattleText3: ; 59736 (16:5736) + TX_FAR _Route12EndBattleText3 + db "@" + +Route12AfterBattleText3: ; 5973b (16:573b) + TX_FAR _Route12AfterBattleText3 + db "@" + +Route12Text5: ; 59740 (16:5740) + db $08 ; asm + ld hl, Route12TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +Route12BattleText4: ; 5974a (16:574a) + TX_FAR _Route12BattleText4 + db "@" + +Route12EndBattleText4: ; 5974f (16:574f) + TX_FAR _Route12EndBattleText4 + db "@" + +Route12AfterBattleText4: ; 59754 (16:5754) + TX_FAR _Route12AfterBattleText4 + db "@" + +Route12Text6: ; 59759 (16:5759) + db $08 ; asm + ld hl, Route12TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +Route12BattleText5: ; 59763 (16:5763) + TX_FAR _Route12BattleText5 + db "@" + +Route12EndBattleText5: ; 59768 (16:5768) + TX_FAR _Route12EndBattleText5 + db "@" + +Route12AfterBattleText5: ; 5976d (16:576d) + TX_FAR _Route12AfterBattleText5 + db "@" + +Route12Text7: ; 59772 (16:5772) + db $08 ; asm + ld hl, Route12TrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +Route12BattleText6: ; 5977c (16:577c) + TX_FAR _Route12BattleText6 + db "@" + +Route12EndBattleText6: ; 59781 (16:5781) + TX_FAR _Route12EndBattleText6 + db "@" + +Route12AfterBattleText6: ; 59786 (16:5786) + TX_FAR _Route12AfterBattleText6 + db "@" + +Route12Text8: ; 5978b (16:578b) + db $08 ; asm + ld hl, Route12TrainerHeader6 + call TalkToTrainer + jp TextScriptEnd + +Route12BattleText7: ; 59795 (16:5795) + TX_FAR _Route12BattleText7 + db "@" + +Route12EndBattleText7: ; 5979a (16:579a) + TX_FAR _Route12EndBattleText7 + db "@" + +Route12AfterBattleText7: ; 5979f (16:579f) + TX_FAR _Route12AfterBattleText7 + db "@" + +Route12Text11: ; 597a4 (16:57a4) + TX_FAR _Route12Text11 + db "@" + +Route12Text12: ; 597a9 (16:57a9) + TX_FAR _Route12Text12 + db "@" diff --git a/scripts/route12gate.asm b/scripts/route12gate.asm new file mode 100755 index 00000000..d8f09c92 --- /dev/null +++ b/scripts/route12gate.asm @@ -0,0 +1,9 @@ +Route12GateScript: ; 49504 (12:5504) + jp EnableAutoTextBoxDrawing + +Route12GateTextPointers: ; 49507 (12:5507) + dw Route12GateText1 + +Route12GateText1: ; 49509 (12:5509) + TX_FAR _Route12GateText1 + db "@" diff --git a/scripts/route12gateupstairs.asm b/scripts/route12gateupstairs.asm new file mode 100755 index 00000000..97da1b58 --- /dev/null +++ b/scripts/route12gateupstairs.asm @@ -0,0 +1,79 @@ +Route12GateUpstairsScript: ; 49560 (12:5560) + jp DisableAutoTextBoxDrawing + +Route12GateUpstairsTextPointers: ; 49563 (12:5563) + dw Route12GateUpstairsText1 + dw Route12GateUpstairsText2 + dw Route12GateUpstairsText3 + +Route12GateUpstairsText1: ; 49569 (12:5569) + db $08 ; asm + ld a, [$d7d7] + rrca + jr c, .asm_0ad3c ; 0x4956e + ld hl, TM39PreReceiveText + call PrintText + ld bc, (TM_39 << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, ReceivedTM39Text + call PrintText + ld hl, $d7d7 + set 0, [hl] + jr .asm_4ba56 ; 0x49589 +.BagFull + ld hl, TM39NoRoomText + call PrintText + jr .asm_4ba56 ; 0x49591 +.asm_0ad3c ; 0x49593 + ld hl, TM39ExplanationText + call PrintText +.asm_4ba56 ; 0x49599 + jp TextScriptEnd + +TM39PreReceiveText: ; 4959c (12:559c) + TX_FAR _TM39PreReceiveText + db "@" + +ReceivedTM39Text: ; 495a1 (12:55a1) + TX_FAR _ReceivedTM39Text + db $0B, "@" + +TM39ExplanationText: ; 495a7 (12:55a7) + TX_FAR _TM39ExplanationText + db "@" + +TM39NoRoomText: ; 495ac (12:55ac) + TX_FAR _TM39NoRoomText + db "@" + +Route12GateUpstairsText2: ; 495b1 (12:55b1) + db $08 ; asm + ld hl, Route12GateUpstairsText_495b8 + jp Route12GateUpstairsScript_495c9 + +Route12GateUpstairsText_495b8: ; 495b8 (12:55b8) + TX_FAR _Route12GateUpstairsText_495b8 + db "@" + +Route12GateUpstairsText3: ; 495bd (12:55bd) + db $8 + ld hl, Route12GateUpstairsText_495c4 + jp Route12GateUpstairsScript_495c9 + +Route12GateUpstairsText_495c4: ; 495c4 (12:55c4) + TX_FAR _Route12GateUpstairsText_495c4 + db "@" + +Route12GateUpstairsScript_495c9: ; 495c9 (12:55c9) + ld a, [$c109] + cp $4 + jr z, .asm_495d4 ; 0x495ce $4 + ld a, $1 + jr .asm_495d8 ; 0x495d2 $4 +.asm_495d4 + call PrintText + xor a +.asm_495d8 + ld [$cc3c], a + jp TextScriptEnd diff --git a/scripts/route12house.asm b/scripts/route12house.asm new file mode 100755 index 00000000..6b2f5e52 --- /dev/null +++ b/scripts/route12house.asm @@ -0,0 +1,57 @@ +Route12HouseScript: ; 5647f (15:647f) + jp EnableAutoTextBoxDrawing + +Route12HouseTextPointers: ; 56482 (15:6482) + dw Route12HouseText1 + +Route12HouseText1: ; 56484 (15:6484) + db $08 ; asm + ld a, [$d728] + bit 5, a + jr nz, .asm_b4cad + ld hl, Route12HouseText_564c0 + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + jr nz, .asm_a2d76 + ld bc, (SUPER_ROD << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, $d728 + set 5, [hl] + ld hl, Route12HouseText_564c5 + jr .asm_df984 +.BagFull + ld hl, Route12HouseText_564d9 + jr .asm_df984 +.asm_a2d76 + ld hl, Route12HouseText_564cf + jr .asm_df984 ; 0x564b5 +.asm_b4cad + ld hl, Route12HouseText_564d4 +.asm_df984 + call PrintText + jp TextScriptEnd + +Route12HouseText_564c0: ; 564c0 (15:64c0) + TX_FAR _Route12HouseText_564c0 + db "@" + +Route12HouseText_564c5: ; 564c5 (15:64c5) + TX_FAR _Route12HouseText_564c5 ; 0x8ca00 + db $0B + TX_FAR _Route12HouseText_564ca ; 0x8ca4f + db "@" + +Route12HouseText_564cf: ; 564cf (15:64cf) + TX_FAR _Route12HouseText_564cf + db "@" + +Route12HouseText_564d4: ; 564d4 (15:64d4) + TX_FAR _Route12HouseText_564d4 + db "@" + +Route12HouseText_564d9: ; 564d9 (15:64d9) + TX_FAR _Route12HouseText_564d9 + db "@" diff --git a/scripts/route13.asm b/scripts/route13.asm new file mode 100755 index 00000000..3c2fea04 --- /dev/null +++ b/scripts/route13.asm @@ -0,0 +1,313 @@ +Route13Script: ; 5581e (15:581e) + call EnableAutoTextBoxDrawing + ld hl, Route13TrainerHeaders + ld de, Route13ScriptPointers + ld a, [W_ROUTE13CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROUTE13CURSCRIPT], a + ret + +Route13ScriptPointers: ; 55831 (15:5831) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +Route13TextPointers: ; 55837 (15:5837) + dw Route13Text1 + dw Route13Text2 + dw Route13Text3 + dw Route13Text4 + dw Route13Text5 + dw Route13Text6 + dw Route13Text7 + dw Route13Text8 + dw Route13Text9 + dw Route13Text10 + dw Route13Text11 + dw Route13Text12 + dw Route13Text13 + +Route13TrainerHeaders: ; 55851 (15:5851) +Route13TrainerHeader0: ; 55851 (15:5851) + db $1 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7d9 ; flag's byte + dw Route13BattleText2 ; 0x58d4 TextBeforeBattle + dw Route13AfterBattleText2 ; 0x58de TextAfterBattle + dw Route13EndBattleText2 ; 0x58d9 TextEndBattle + dw Route13EndBattleText2 ; 0x58d9 TextEndBattle + +Route13TrainerHeader2: ; 5585d (15:585d) + db $2 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7d9 ; flag's byte + dw Route13BattleText3 ; 0x58ed TextBeforeBattle + dw Route13AfterBattleText3 ; 0x58f7 TextAfterBattle + dw Route13EndBattleText3 ; 0x58f2 TextEndBattle + dw Route13EndBattleText3 ; 0x58f2 TextEndBattle + +Route13TrainerHeader3: ; 55869 (15:5869) + db $3 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7d9 ; flag's byte + dw Route13BattleText4 ; 0x5906 TextBeforeBattle + dw Route13AfterBattleText4 ; 0x5910 TextAfterBattle + dw Route13EndBattleText4 ; 0x590b TextEndBattle + dw Route13EndBattleText4 ; 0x590b TextEndBattle + +Route13TrainerHeader4: ; 55875 (15:5875) + db $4 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7d9 ; flag's byte + dw Route13BattleText5 ; 0x591f TextBeforeBattle + dw Route13AfterBattleText5 ; 0x5929 TextAfterBattle + dw Route13EndBattleText5 ; 0x5924 TextEndBattle + dw Route13EndBattleText5 ; 0x5924 TextEndBattle + +Route13TrainerHeader5: ; 55881 (15:5881) + db $5 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7d9 ; flag's byte + dw Route13BattleText6 ; 0x5938 TextBeforeBattle + dw Route13AfterBattleText6 ; 0x5942 TextAfterBattle + dw Route13EndBattleText6 ; 0x593d TextEndBattle + dw Route13EndBattleText6 ; 0x593d TextEndBattle + +Route13TrainerHeader6: ; 5588d (15:588d) + db $6 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7d9 ; flag's byte + dw Route13BattleText7 ; 0x5951 TextBeforeBattle + dw Route13AfterBattleText7 ; 0x595b TextAfterBattle + dw Route13EndBattleText7 ; 0x5956 TextEndBattle + dw Route13EndBattleText7 ; 0x5956 TextEndBattle + +Route13TrainerHeader7: ; 55899 (15:5899) + db $7 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7d9 ; flag's byte + dw Route13BattleText8 ; 0x596a TextBeforeBattle + dw Route13AfterBattleText8 ; 0x5974 TextAfterBattle + dw Route13EndBattleText8 ; 0x596f TextEndBattle + dw Route13EndBattleText8 ; 0x596f TextEndBattle + +Route13TrainerHeader8: ; 558a5 (15:58a5) + db $8 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7d9 ; flag's byte + dw Route13BattleText9 ; 0x5983 TextBeforeBattle + dw Route13AfterBattleText9 ; 0x598d TextAfterBattle + dw Route13EndBattleText9 ; 0x5988 TextEndBattle + dw Route13EndBattleText9 ; 0x5988 TextEndBattle + +Route13TrainerHeader9: ; 558b1 (15:58b1) + db $9 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7d9 ; flag's byte + dw Route13BattleText10 ; 0x599c TextBeforeBattle + dw Route13AfterBattleText10 ; 0x59a6 TextAfterBattle + dw Route13EndBattleText10 ; 0x59a1 TextEndBattle + dw Route13EndBattleText10 ; 0x59a1 TextEndBattle + +Route13TrainerHeader10: ; 558bd (15:58bd) + db $a ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7d9 ; flag's byte + dw Route13BattleText11 ; 0x59b5 TextBeforeBattle + dw Route13AfterBattleText11 ; 0x59bf TextAfterBattle + dw Route13EndBattleText11 ; 0x59ba TextEndBattle + dw Route13EndBattleText11 ; 0x59ba TextEndBattle + + db $ff + +Route13Text1: ; 558ca (15:58ca) + db $08 ; asm + ld hl, Route13TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +Route13BattleText2: ; 558d4 (15:58d4) + TX_FAR _Route13BattleText2 + db "@" + +Route13EndBattleText2: ; 558d9 (15:58d9) + TX_FAR _Route13EndBattleText2 + db "@" + +Route13AfterBattleText2: ; 558de (15:58de) + TX_FAR _Route13AfterBattleText2 + db "@" + +Route13Text2: ; 558e3 (15:58e3) + db $08 ; asm + ld hl, Route13TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +Route13BattleText3: ; 558ed (15:58ed) + TX_FAR _Route13BattleText3 + db "@" + +Route13EndBattleText3: ; 558f2 (15:58f2) + TX_FAR _Route13EndBattleText3 + db "@" + +Route13AfterBattleText3: ; 558f7 (15:58f7) + TX_FAR _Route13AfterBattleText3 + db "@" + +Route13Text3: ; 558fc (15:58fc) + db $08 ; asm + ld hl, Route13TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +Route13BattleText4: ; 55906 (15:5906) + TX_FAR _Route13BattleText4 + db "@" + +Route13EndBattleText4: ; 5590b (15:590b) + TX_FAR _Route13EndBattleText4 + db "@" + +Route13AfterBattleText4: ; 55910 (15:5910) + TX_FAR _Route13AfterBattleText4 + db "@" + +Route13Text4: ; 55915 (15:5915) + db $08 ; asm + ld hl, Route13TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +Route13BattleText5: ; 5591f (15:591f) + TX_FAR _Route13BattleText5 + db "@" + +Route13EndBattleText5: ; 55924 (15:5924) + TX_FAR _Route13EndBattleText5 + db "@" + +Route13AfterBattleText5: ; 55929 (15:5929) + TX_FAR _Route13AfterBattleText5 + db "@" + +Route13Text5: ; 5592e (15:592e) + db $08 ; asm + ld hl, Route13TrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +Route13BattleText6: ; 55938 (15:5938) + TX_FAR _Route13BattleText6 + db "@" + +Route13EndBattleText6: ; 5593d (15:593d) + TX_FAR _Route13EndBattleText6 + db "@" + +Route13AfterBattleText6: ; 55942 (15:5942) + TX_FAR _Route13AfterBattleText6 + db "@" + +Route13Text6: ; 55947 (15:5947) + db $08 ; asm + ld hl, Route13TrainerHeader6 + call TalkToTrainer + jp TextScriptEnd + +Route13BattleText7: ; 55951 (15:5951) + TX_FAR _Route13BattleText7 + db "@" + +Route13EndBattleText7: ; 55956 (15:5956) + TX_FAR _Route13EndBattleText7 + db "@" + +Route13AfterBattleText7: ; 5595b (15:595b) + TX_FAR _Route13AfterBattleText7 + db "@" + +Route13Text7: ; 55960 (15:5960) + db $08 ; asm + ld hl, Route13TrainerHeader7 + call TalkToTrainer + jp TextScriptEnd + +Route13BattleText8: ; 5596a (15:596a) + TX_FAR _Route13BattleText8 + db "@" + +Route13EndBattleText8: ; 5596f (15:596f) + TX_FAR _Route13EndBattleText8 + db "@" + +Route13AfterBattleText8: ; 55974 (15:5974) + TX_FAR _Route13AfterBattleText8 + db "@" + +Route13Text8: ; 55979 (15:5979) + db $08 ; asm + ld hl, Route13TrainerHeader8 + call TalkToTrainer + jp TextScriptEnd + +Route13BattleText9: ; 55983 (15:5983) + TX_FAR _Route13BattleText9 + db "@" + +Route13EndBattleText9: ; 55988 (15:5988) + TX_FAR _Route13EndBattleText9 + db "@" + +Route13AfterBattleText9: ; 5598d (15:598d) + TX_FAR _Route13AfterBattleText9 + db "@" + +Route13Text9: ; 55992 (15:5992) + db $08 ; asm + ld hl, Route13TrainerHeader9 + call TalkToTrainer + jp TextScriptEnd + +Route13BattleText10: ; 5599c (15:599c) + TX_FAR _Route13BattleText10 + db "@" + +Route13EndBattleText10: ; 559a1 (15:59a1) + TX_FAR _Route13EndBattleText10 + db "@" + +Route13AfterBattleText10: ; 559a6 (15:59a6) + TX_FAR _Route13AfterBattleText10 + db "@" + +Route13Text10: ; 559ab (15:59ab) + db $08 ; asm + ld hl, Route13TrainerHeader10 + call TalkToTrainer + jp TextScriptEnd + +Route13BattleText11: ; 559b5 (15:59b5) + TX_FAR _Route13BattleText11 + db "@" + +Route13EndBattleText11: ; 559ba (15:59ba) + TX_FAR _Route13EndBattleText11 + db "@" + +Route13AfterBattleText11: ; 559bf (15:59bf) + TX_FAR _Route13AfterBattleText11 + db "@" + +Route13Text11: ; 559c4 (15:59c4) + TX_FAR _Route13Text11 + db "@" + +Route13Text12: ; 559c9 (15:59c9) + TX_FAR _Route13Text12 + db "@" + +Route13Text13: ; 559ce (15:59ce) + TX_FAR _Route13Text13 + db "@" diff --git a/scripts/route14.asm b/scripts/route14.asm new file mode 100755 index 00000000..0f9b49cf --- /dev/null +++ b/scripts/route14.asm @@ -0,0 +1,303 @@ +Route14Script: ; 559d3 (15:59d3) + call EnableAutoTextBoxDrawing + ld hl, Route14TrainerHeaders + ld de, Route14ScriptPointers + ld a, [W_ROUTE14CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROUTE14CURSCRIPT], a + ret + +Route14ScriptPointers: ; 559e6 (15:59e6) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +Route14TextPointers: ; 559ec (15:59ec) + dw Route14Text1 + dw Route14Text2 + dw Route14Text3 + dw Route14Text4 + dw Route14Text5 + dw Route14Text6 + dw Route14Text7 + dw Route14Text8 + dw Route14Text9 + dw Route14Text10 + dw Route14Text11 + +Route14TrainerHeaders: ; 55a02 (15:5a02) +Route14TrainerHeader0: ; 55a02 (15:5a02) + db $1 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7db ; flag's byte + dw Route14BattleText1 ; 0x5a85 TextBeforeBattle + dw Route14AfterBattleText1 ; 0x5a8f TextAfterBattle + dw Route14EndBattleText1 ; 0x5a8a TextEndBattle + dw Route14EndBattleText1 ; 0x5a8a TextEndBattle + +Route14TrainerHeader1: ; 55a0e (15:5a0e) + db $2 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7db ; flag's byte + dw Route14BattleText2 ; 0x5a9e TextBeforeBattle + dw Route14AfterBattleText2 ; 0x5aa8 TextAfterBattle + dw Route14EndBattleText2 ; 0x5aa3 TextEndBattle + dw Route14EndBattleText2 ; 0x5aa3 TextEndBattle + +Route14TrainerHeader2: ; 55a1a (15:5a1a) + db $3 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7db ; flag's byte + dw Route14BattleText3 ; 0x5ab7 TextBeforeBattle + dw Route14AfterBattleText3 ; 0x5ac1 TextAfterBattle + dw Route14EndBattleText3 ; 0x5abc TextEndBattle + dw Route14EndBattleText3 ; 0x5abc TextEndBattle + +Route14TrainerHeader3: ; 55a26 (15:5a26) + db $4 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7db ; flag's byte + dw Route14BattleText4 ; 0x5ad0 TextBeforeBattle + dw Route14AfterBattleText4 ; 0x5ada TextAfterBattle + dw Route14EndBattleText4 ; 0x5ad5 TextEndBattle + dw Route14EndBattleText4 ; 0x5ad5 TextEndBattle + +Route14TrainerHeader4: ; 55a32 (15:5a32) + db $5 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7db ; flag's byte + dw Route14BattleText5 ; 0x5ae9 TextBeforeBattle + dw Route14AfterBattleText5 ; 0x5af3 TextAfterBattle + dw Route14EndBattleText5 ; 0x5aee TextEndBattle + dw Route14EndBattleText5 ; 0x5aee TextEndBattle + +Route14TrainerHeader5: ; 55a3e (15:5a3e) + db $6 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7db ; flag's byte + dw Route14BattleText6 ; 0x5b02 TextBeforeBattle + dw Route14AfterBattleText6 ; 0x5b0c TextAfterBattle + dw Route14EndBattleText6 ; 0x5b07 TextEndBattle + dw Route14EndBattleText6 ; 0x5b07 TextEndBattle + +Route14TrainerHeader6: ; 55a4a (15:5a4a) + db $7 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7db ; flag's byte + dw Route14BattleText7 ; 0x5b1b TextBeforeBattle + dw Route14AfterBattleText7 ; 0x5b25 TextAfterBattle + dw Route14EndBattleText7 ; 0x5b20 TextEndBattle + dw Route14EndBattleText7 ; 0x5b20 TextEndBattle + +Route14TrainerHeader7: ; 55a56 (15:5a56) + db $8 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7db ; flag's byte + dw Route14BattleText8 ; 0x5b34 TextBeforeBattle + dw Route14AfterBattleText8 ; 0x5b3e TextAfterBattle + dw Route14EndBattleText8 ; 0x5b39 TextEndBattle + dw Route14EndBattleText8 ; 0x5b39 TextEndBattle + +Route14TrainerHeader8: ; 55a62 (15:5a62) + db $9 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7db ; flag's byte + dw Route14BattleText9 ; 0x5b4d TextBeforeBattle + dw Route14AfterBattleText9 ; 0x5b57 TextAfterBattle + dw Route14EndBattleText9 ; 0x5b52 TextEndBattle + dw Route14EndBattleText9 ; 0x5b52 TextEndBattle + +Route14TrainerHeader9: ; 55a6e (15:5a6e) + db $a ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7db ; flag's byte + dw Route14BattleText10 ; 0x5b66 TextBeforeBattle + dw Route14AfterBattleText10 ; 0x5b70 TextAfterBattle + dw Route14EndBattleText10 ; 0x5b6b TextEndBattle + dw Route14EndBattleText10 ; 0x5b6b TextEndBattle + + db $ff + +Route14Text1: ; 55a7b (15:5a7b) + db $08 ; asm + ld hl, Route14TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +Route14BattleText1: ; 55a85 (15:5a85) + TX_FAR _Route14BattleText1 + db "@" + +Route14EndBattleText1: ; 55a8a (15:5a8a) + TX_FAR _Route14EndBattleText1 + db "@" + +Route14AfterBattleText1: ; 55a8f (15:5a8f) + TX_FAR _Route14AfterBattleText1 + db "@" + +Route14Text2: ; 55a94 (15:5a94) + db $08 ; asm + ld hl, Route14TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +Route14BattleText2: ; 55a9e (15:5a9e) + TX_FAR _Route14BattleText2 + db "@" + +Route14EndBattleText2: ; 55aa3 (15:5aa3) + TX_FAR _Route14EndBattleText2 + db "@" + +Route14AfterBattleText2: ; 55aa8 (15:5aa8) + TX_FAR _Route14AfterBattleText2 + db "@" + +Route14Text3: ; 55aad (15:5aad) + db $08 ; asm + ld hl, Route14TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +Route14BattleText3: ; 55ab7 (15:5ab7) + TX_FAR _Route14BattleText3 + db "@" + +Route14EndBattleText3: ; 55abc (15:5abc) + TX_FAR _Route14EndBattleText3 + db "@" + +Route14AfterBattleText3: ; 55ac1 (15:5ac1) + TX_FAR _Route14AfterBattleText3 + db "@" + +Route14Text4: ; 55ac6 (15:5ac6) + db $08 ; asm + ld hl, Route14TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +Route14BattleText4: ; 55ad0 (15:5ad0) + TX_FAR _Route14BattleText4 + db "@" + +Route14EndBattleText4: ; 55ad5 (15:5ad5) + TX_FAR _Route14EndBattleText4 + db "@" + +Route14AfterBattleText4: ; 55ada (15:5ada) + TX_FAR _Route14AfterBattleText4 + db "@" + +Route14Text5: ; 55adf (15:5adf) + db $08 ; asm + ld hl, Route14TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +Route14BattleText5: ; 55ae9 (15:5ae9) + TX_FAR _Route14BattleText5 + db "@" + +Route14EndBattleText5: ; 55aee (15:5aee) + TX_FAR _Route14EndBattleText5 + db "@" + +Route14AfterBattleText5: ; 55af3 (15:5af3) + TX_FAR _Route14AfterBattleText5 + db "@" + +Route14Text6: ; 55af8 (15:5af8) + db $08 ; asm + ld hl, Route14TrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +Route14BattleText6: ; 55b02 (15:5b02) + TX_FAR _Route14BattleText6 + db "@" + +Route14EndBattleText6: ; 55b07 (15:5b07) + TX_FAR _Route14EndBattleText6 + db "@" + +Route14AfterBattleText6: ; 55b0c (15:5b0c) + TX_FAR _Route14AfterBattleText6 + db "@" + +Route14Text7: ; 55b11 (15:5b11) + db $08 ; asm + ld hl, Route14TrainerHeader6 + call TalkToTrainer + jp TextScriptEnd + +Route14BattleText7: ; 55b1b (15:5b1b) + TX_FAR _Route14BattleText7 + db "@" + +Route14EndBattleText7: ; 55b20 (15:5b20) + TX_FAR _Route14EndBattleText7 + db "@" + +Route14AfterBattleText7: ; 55b25 (15:5b25) + TX_FAR _Route14AfterBattleText7 + db "@" + +Route14Text8: ; 55b2a (15:5b2a) + db $08 ; asm + ld hl, Route14TrainerHeader7 + call TalkToTrainer + jp TextScriptEnd + +Route14BattleText8: ; 55b34 (15:5b34) + TX_FAR _Route14BattleText8 + db "@" + +Route14EndBattleText8: ; 55b39 (15:5b39) + TX_FAR _Route14EndBattleText8 + db "@" + +Route14AfterBattleText8: ; 55b3e (15:5b3e) + TX_FAR _Route14AfterBattleText8 + db "@" + +Route14Text9: ; 55b43 (15:5b43) + db $08 ; asm + ld hl, Route14TrainerHeader8 + call TalkToTrainer + jp TextScriptEnd + +Route14BattleText9: ; 55b4d (15:5b4d) + TX_FAR _Route14BattleText9 + db "@" + +Route14EndBattleText9: ; 55b52 (15:5b52) + TX_FAR _Route14EndBattleText9 + db "@" + +Route14AfterBattleText9: ; 55b57 (15:5b57) + TX_FAR _Route14AfterBattleText9 + db "@" + +Route14Text10: ; 55b5c (15:5b5c) + db $08 ; asm + ld hl, Route14TrainerHeader9 + call TalkToTrainer + jp TextScriptEnd + +Route14BattleText10: ; 55b66 (15:5b66) + TX_FAR _Route14BattleText10 + db "@" + +Route14EndBattleText10: ; 55b6b (15:5b6b) + TX_FAR _Route14EndBattleText10 + db "@" + +Route14AfterBattleText10: ; 55b70 (15:5b70) + TX_FAR _Route14AfterBattleText10 + db "@" + +Route14Text11: ; 55b75 (15:5b75) + TX_FAR _Route14Text11 + db "@" diff --git a/scripts/route15.asm b/scripts/route15.asm new file mode 100755 index 00000000..f7eaa758 --- /dev/null +++ b/scripts/route15.asm @@ -0,0 +1,296 @@ +Route15Script: ; 597ae (16:57ae) + call EnableAutoTextBoxDrawing + ld hl, Route15TrainerHeaders + ld de, Route15ScriptPointers + ld a, [W_ROUTE15CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROUTE15CURSCRIPT], a + ret + +Route15ScriptPointers: ; 597c1 (16:57c1) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +Route15TextPointers: ; 597c7 (16:57c7) + dw Route15Text1 + dw Route15Text2 + dw Route15Text3 + dw Route15Text4 + dw Route15Text5 + dw Route15Text6 + dw Route15Text7 + dw Route15Text8 + dw Route15Text9 + dw Route15Text10 + dw Predef5CText + dw Route15Text12 + +Route15TrainerHeaders: ; 597df (16:57df) +Route15TrainerHeader0: ; 597df (16:57df) + db $1 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7dd ; flag's byte + dw Route15BattleText1 ; 0x5898 TextBeforeBattle + dw Route15AfterBattleText1 ; 0x58a2 TextAfterBattle + dw Route15EndBattleText1 ; 0x589d TextEndBattle + dw Route15EndBattleText1 ; 0x589d TextEndBattle + +Route15TrainerHeader1: ; 597eb (16:57eb) + db $2 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7dd ; flag's byte + dw Route15BattleText2 ; 0x58a7 TextBeforeBattle + dw Route15AfterBattleText2 ; 0x58b1 TextAfterBattle + dw Route15EndBattleText2 ; 0x58ac TextEndBattle + dw Route15EndBattleText2 ; 0x58ac TextEndBattle + +Route15TrainerHeader2: ; 597f7 (16:57f7) + db $3 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7dd ; flag's byte + dw Route15BattleText3 ; 0x58b6 TextBeforeBattle + dw Route15AfterBattleText3 ; 0x58c0 TextAfterBattle + dw Route15EndBattleText3 ; 0x58bb TextEndBattle + dw Route15EndBattleText3 ; 0x58bb TextEndBattle + +Route15TrainerHeader3: ; 59803 (16:5803) + db $4 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7dd ; flag's byte + dw Route15BattleText4 ; 0x58c5 TextBeforeBattle + dw Route15AfterBattleText4 ; 0x58cf TextAfterBattle + dw Route15EndBattleText4 ; 0x58ca TextEndBattle + dw Route15EndBattleText4 ; 0x58ca TextEndBattle + +Route15TrainerHeader4: ; 5980f (16:580f) + db $5 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7dd ; flag's byte + dw Route15BattleText5 ; 0x58d4 TextBeforeBattle + dw Route15AfterBattleText5 ; 0x58de TextAfterBattle + dw Route15EndBattleText5 ; 0x58d9 TextEndBattle + dw Route15EndBattleText5 ; 0x58d9 TextEndBattle + +Route15TrainerHeader5: ; 5981b (16:581b) + db $6 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7dd ; flag's byte + dw Route15BattleText6 ; 0x58e3 TextBeforeBattle + dw Route15AfterBattleText6 ; 0x58ed TextAfterBattle + dw Route15EndBattleText6 ; 0x58e8 TextEndBattle + dw Route15EndBattleText6 ; 0x58e8 TextEndBattle + +Route15TrainerHeader6: ; 59827 (16:5827) + db $7 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7dd ; flag's byte + dw Route15BattleText7 ; 0x58f2 TextBeforeBattle + dw Route15AfterBattleText7 ; 0x58fc TextAfterBattle + dw Route15EndBattleText7 ; 0x58f7 TextEndBattle + dw Route15EndBattleText7 ; 0x58f7 TextEndBattle + +Route15TrainerHeader7: ; 59833 (16:5833) + db $8 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7dd ; flag's byte + dw Route15BattleText8 ; 0x5901 TextBeforeBattle + dw Route15AfterBattleText8 ; 0x590b TextAfterBattle + dw Route15EndBattleText8 ; 0x5906 TextEndBattle + dw Route15EndBattleText8 ; 0x5906 TextEndBattle + +Route15TrainerHeader8: ; 5983f (16:583f) + db $9 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7dd ; flag's byte + dw Route15BattleText9 ; 0x5910 TextBeforeBattle + dw Route15AfterBattleText9 ; 0x591a TextAfterBattle + dw Route15EndBattleText9 ; 0x5915 TextEndBattle + dw Route15EndBattleText9 ; 0x5915 TextEndBattle + +Route15TrainerHeader9: ; 5984b (16:584b) + db $a ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7dd ; flag's byte + dw Route15BattleText10 ; 0x591f TextBeforeBattle + dw Route15AfterBattleText10 ; 0x5929 TextAfterBattle + dw Route15EndBattleText10 ; 0x5924 TextEndBattle + dw Route15EndBattleText10 ; 0x5924 TextEndBattle + + db $ff + +Route15Text1: ; 59858 (16:5858) + db $8 ; asm + ld hl, Route15TrainerHeader0 + jr asm_33cb7 ; 0x5985c $34 + +Route15Text2: ; 5985e (16:585e) + db $8 ; asm + ld hl, Route15TrainerHeader1 + jr asm_33cb7 ; 0x59862 $2e + +Route15Text3: ; 59864 (16:5864) + db $8 ; asm + ld hl, Route15TrainerHeader2 + jr asm_33cb7 ; 0x59868 $28 + +Route15Text4: ; 5986a (16:586a) + db $8 ; asm + ld hl, Route15TrainerHeader3 + jr asm_33cb7 ; 0x5986e $22 + +Route15Text5: ; 59870 (16:5870) + db $8 ; asm + ld hl, Route15TrainerHeader4 + jr asm_33cb7 ; 0x59874 $1c + +Route15Text6: ; 59876 (16:5876) + db $8 ; asm + ld hl, Route15TrainerHeader5 + jr asm_33cb7 ; 0x5987a $16 + +Route15Text7: ; 5987c (16:587c) + db $8 ; asm + ld hl, Route15TrainerHeader6 + jr asm_33cb7 ; 0x59880 $10 + +Route15Text8: ; 59882 (16:5882) + db $8 ; asm + ld hl, Route15TrainerHeader7 + jr asm_33cb7 ; 0x59886 $a + +Route15Text9: ; 59888 (16:5888) + db $8 ; asm + ld hl, Route15TrainerHeader8 + jr asm_33cb7 ; 0x5988c $4 + +Route15Text10: ; 5988e (16:588e) + db $8 ; asm + ld hl, Route15TrainerHeader9 +asm_33cb7: ; 59892 (16:5892) + call TalkToTrainer + jp TextScriptEnd + +Route15BattleText1: ; 59898 (16:5898) + TX_FAR _Route15BattleText1 + db "@" + +Route15EndBattleText1: ; 5989d (16:589d) + TX_FAR _Route15EndBattleText1 + db "@" + +Route15AfterBattleText1: ; 598a2 (16:58a2) + TX_FAR _Route15AfterBattleText1 + db "@" + +Route15BattleText2: ; 598a7 (16:58a7) + TX_FAR _Route15BattleText2 + db "@" + +Route15EndBattleText2: ; 598ac (16:58ac) + TX_FAR _Route15EndBattleText2 + db "@" + +Route15AfterBattleText2: ; 598b1 (16:58b1) + TX_FAR _Route15AfterBattleText2 + db "@" + +Route15BattleText3: ; 598b6 (16:58b6) + TX_FAR _Route15BattleText3 + db "@" + +Route15EndBattleText3: ; 598bb (16:58bb) + TX_FAR _Route15EndBattleText3 + db "@" + +Route15AfterBattleText3: ; 598c0 (16:58c0) + TX_FAR _Route15AfterBattleText3 + db "@" + +Route15BattleText4: ; 598c5 (16:58c5) + TX_FAR _Route15BattleText4 + db "@" + +Route15EndBattleText4: ; 598ca (16:58ca) + TX_FAR _Route15EndBattleText4 + db "@" + +Route15AfterBattleText4: ; 598cf (16:58cf) + TX_FAR _Route15AfterBattleText4 + db "@" + +Route15BattleText5: ; 598d4 (16:58d4) + TX_FAR _Route15BattleText5 + db "@" + +Route15EndBattleText5: ; 598d9 (16:58d9) + TX_FAR _Route15EndBattleText5 + db "@" + +Route15AfterBattleText5: ; 598de (16:58de) + TX_FAR _Route15AfterBattleText5 + db "@" + +Route15BattleText6: ; 598e3 (16:58e3) + TX_FAR _Route15BattleText6 + db "@" + +Route15EndBattleText6: ; 598e8 (16:58e8) + TX_FAR _Route15EndBattleText6 + db "@" + +Route15AfterBattleText6: ; 598ed (16:58ed) + TX_FAR _Route15AfterBattleText6 + db "@" + +Route15BattleText7: ; 598f2 (16:58f2) + TX_FAR _Route15BattleText7 + db "@" + +Route15EndBattleText7: ; 598f7 (16:58f7) + TX_FAR _Route15EndBattleText7 + db "@" + +Route15AfterBattleText7: ; 598fc (16:58fc) + TX_FAR _Route15AfterBattleText7 + db "@" + +Route15BattleText8: ; 59901 (16:5901) + TX_FAR _Route15BattleText8 + db "@" + +Route15EndBattleText8: ; 59906 (16:5906) + TX_FAR _Route15EndBattleText8 + db "@" + +Route15AfterBattleText8: ; 5990b (16:590b) + TX_FAR _Route15AfterBattleText8 + db "@" + +Route15BattleText9: ; 59910 (16:5910) + TX_FAR _Route15BattleText9 + db "@" + +Route15EndBattleText9: ; 59915 (16:5915) + TX_FAR _Route15EndBattleText9 + db "@" + +Route15AfterBattleText9: ; 5991a (16:591a) + TX_FAR _Route15AfterBattleText9 + db "@" + +Route15BattleText10: ; 5991f (16:591f) + TX_FAR _Route15BattleText10 + db "@" + +Route15EndBattleText10: ; 59924 (16:5924) + TX_FAR _Route15EndBattleText10 + db "@" + +Route15AfterBattleText10: ; 59929 (16:5929) + TX_FAR _Route15AfterBattleText10 + db "@" + +Route15Text12: ; 5992e (16:592e) + TX_FAR _Route15Text12 + db "@" diff --git a/scripts/route15gate.asm b/scripts/route15gate.asm new file mode 100755 index 00000000..76e9aadf --- /dev/null +++ b/scripts/route15gate.asm @@ -0,0 +1,9 @@ +Route15GateScript: ; 49602 (12:5602) + jp EnableAutoTextBoxDrawing + +Route15GateTextPointers: ; 49605 (12:5605) + dw Route15GateText1 + +Route15GateText1: ; 49607 (12:5607) + TX_FAR _Route15GateText1 + db "@" diff --git a/scripts/route15gateupstairs.asm b/scripts/route15gateupstairs.asm new file mode 100755 index 00000000..3c2afcd4 --- /dev/null +++ b/scripts/route15gateupstairs.asm @@ -0,0 +1,47 @@ +Route15GateUpstairsScript: ; 4964a (12:564a) + jp DisableAutoTextBoxDrawing + +Route15GateUpstairsTextPointers: ; 4964d (12:564d) + dw Route15GateUpstairsText1 + dw Route15GateUpstairsText2 + +Route15GateUpstairsText1: ; 49651 (12:5651) + db $8 + ld a, [$d7dd] + bit 0, a + jr nz, .asm_49683 ; 0x49657 $2a + ld a, $32 + ld [$ffdb], a + ld a, EXP__ALL + ld [$ffdc], a + ld [$d11e], a + call GetItemName + ld hl, $cd6d + ld de, $cc5b + ld bc, $000d + call CopyData + ld a, $62 + call Predef + ld a, [$ffdb] + cp $1 + jr nz, .asm_49689 ; 0x4967c $b + ld hl, $d7dd + set 0, [hl] +.asm_49683 + ld hl, Route15GateUpstairsText_4968c + call PrintText +.asm_49689 + jp TextScriptEnd + +Route15GateUpstairsText_4968c: ; 4968c (12:568c) + TX_FAR _Route15GateUpstairsText_4968c + db "@" + +Route15GateUpstairsText2: ; 49691 (12:5691) + db $8 + ld hl, Route15GateUpstairsText_49698 + jp Route12GateUpstairsScript_495c9 + +Route15GateUpstairsText_49698: ; 49698 (12:5698) + TX_FAR _Route15GateUpstairsText_49698 + db "@" diff --git a/scripts/route16.asm b/scripts/route16.asm new file mode 100755 index 00000000..08739131 --- /dev/null +++ b/scripts/route16.asm @@ -0,0 +1,263 @@ +Route16Script: ; 59933 (16:5933) + call EnableAutoTextBoxDrawing + ld hl, Route16TrainerHeaders + ld de, Route16ScriptPointers + ld a, [W_ROUTE16CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROUTE16CURSCRIPT], a + ret + +Func_59946: ; 59946 (16:5946) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_ROUTE16CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +Route16ScriptPointers: ; 59951 (16:5951) + dw Route16Script0 + dw Func_324c + dw EndTrainerBattle + dw Route16Script3 + +Route16Script0: ; 59959 (16:5959) + ld hl, $d7e0 + bit 1, [hl] + jp nz, CheckFightingMapTrainers + bit 0, [hl] + res 0, [hl] + jp z, CheckFightingMapTrainers + ld a, $a + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld a, SNORLAX + ld [W_CUROPPONENT], a ; $d059 + ld a, 30 + ld [W_CURENEMYLVL], a ; $d127 + ld a, $21 + ld [$cc4d], a + ld a, $11 + call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) + call UpdateSprites + ld a, $3 + ld [W_ROUTE16CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +Route16Script3: ; 5998f (16:598f) + ld a, [W_ISINBATTLE] ; $d057 + cp $ff + jp z, Func_59946 + call UpdateSprites + ld a, [$cf0b] + cp $2 + jr z, .asm_599a8 + ld a, $b + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID +.asm_599a8 + ld hl, $d7e0 + set 1, [hl] + call Delay3 + ld a, $0 + ld [W_ROUTE16CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +Route16TextPointers: ; 599b9 (16:59b9) + dw Route16Text1 + dw Route16Text2 + dw Route16Text3 + dw Route16Text4 + dw Route16Text5 + dw Route16Text6 + dw Route16Text7 + dw Route16Text8 + dw Route16Text9 + dw Route16Text10 + dw Route16Text11 + +Route16TrainerHeaders: ; 599cf (16:59cf) +Route16TrainerHeader0: ; 599cf (16:59cf) + db $1 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7df ; flag's byte + dw Route16BattleText1 ; 0x5a22 TextBeforeBattle + dw Route16AfterBattleText1 ; 0x5a2c TextAfterBattle + dw Route16EndBattleText1 ; 0x5a27 TextEndBattle + dw Route16EndBattleText1 ; 0x5a27 TextEndBattle + +Route16TrainerHeader1: ; 599db (16:59db) + db $2 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7df ; flag's byte + dw Route16BattleText2 ; 0x5a3b TextBeforeBattle + dw Route16AfterBattleText2 ; 0x5a45 TextAfterBattle + dw Route16EndBattleText2 ; 0x5a40 TextEndBattle + dw Route16EndBattleText2 ; 0x5a40 TextEndBattle + +Route16TrainerHeader2: ; 599e7 (16:59e7) + db $3 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7df ; flag's byte + dw Route16BattleText3 ; 0x5a54 TextBeforeBattle + dw Route16AfterBattleText3 ; 0x5a5e TextAfterBattle + dw Route16EndBattleText3 ; 0x5a59 TextEndBattle + dw Route16EndBattleText3 ; 0x5a59 TextEndBattle + +Route16TrainerHeader3: ; 599f3 (16:59f3) + db $4 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7df ; flag's byte + dw Route16BattleText4 ; 0x5a6d TextBeforeBattle + dw Route16AfterBattleText4 ; 0x5a77 TextAfterBattle + dw Route16EndBattleText4 ; 0x5a72 TextEndBattle + dw Route16EndBattleText4 ; 0x5a72 TextEndBattle + +Route16TrainerHeader4: ; 599ff (16:59ff) + db $5 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7df ; flag's byte + dw Route16BattleText5 ; 0x5a86 TextBeforeBattle + dw Route16AfterBattleText5 ; 0x5a90 TextAfterBattle + dw Route16EndBattleText5 ; 0x5a8b TextEndBattle + dw Route16EndBattleText5 ; 0x5a8b TextEndBattle + +Route16TrainerHeader5: ; 59a0b (16:5a0b) + db $6 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7df ; flag's byte + dw Route16BattleText6 ; 0x5a9f TextBeforeBattle + dw Route16AfterBattleText6 ; 0x5aa9 TextAfterBattle + dw Route16EndBattleText6 ; 0x5aa4 TextEndBattle + dw Route16EndBattleText6 ; 0x5aa4 TextEndBattle + + db $ff + +Route16Text1: ; 59a18 (16:5a18) + db $08 ; asm + ld hl, Route16TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +Route16BattleText1: ; 59a22 (16:5a22) + TX_FAR _Route16BattleText1 + db "@" + +Route16EndBattleText1: ; 59a27 (16:5a27) + TX_FAR _Route16EndBattleText1 + db "@" + +Route16AfterBattleText1: ; 59a2c (16:5a2c) + TX_FAR _Route16AfterBattleText1 + db "@" + +Route16Text2: ; 59a31 (16:5a31) + db $08 ; asm + ld hl, Route16TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +Route16BattleText2: ; 59a3b (16:5a3b) + TX_FAR _Route16BattleText2 + db "@" + +Route16EndBattleText2: ; 59a40 (16:5a40) + TX_FAR _Route16EndBattleText2 + db "@" + +Route16AfterBattleText2: ; 59a45 (16:5a45) + TX_FAR _Route16AfterBattleText2 + db "@" + +Route16Text3: ; 59a4a (16:5a4a) + db $08 ; asm + ld hl, Route16TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +Route16BattleText3: ; 59a54 (16:5a54) + TX_FAR _Route16BattleText3 + db "@" + +Route16EndBattleText3: ; 59a59 (16:5a59) + TX_FAR _Route16EndBattleText3 + db "@" + +Route16AfterBattleText3: ; 59a5e (16:5a5e) + TX_FAR _Route16AfterBattleText3 + db "@" + +Route16Text4: ; 59a63 (16:5a63) + db $08 ; asm + ld hl, Route16TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +Route16BattleText4: ; 59a6d (16:5a6d) + TX_FAR _Route16BattleText4 + db "@" + +Route16EndBattleText4: ; 59a72 (16:5a72) + TX_FAR _Route16EndBattleText4 + db "@" + +Route16AfterBattleText4: ; 59a77 (16:5a77) + TX_FAR _Route16AfterBattleText4 + db "@" + +Route16Text5: ; 59a7c (16:5a7c) + db $08 ; asm + ld hl, Route16TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +Route16BattleText5: ; 59a86 (16:5a86) + TX_FAR _Route16BattleText5 + db "@" + +Route16EndBattleText5: ; 59a8b (16:5a8b) + TX_FAR _Route16EndBattleText5 + db "@" + +Route16AfterBattleText5: ; 59a90 (16:5a90) + TX_FAR _Route16AfterBattleText5 + db "@" + +Route16Text6: ; 59a95 (16:5a95) + db $08 ; asm + ld hl, Route16TrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +Route16BattleText6: ; 59a9f (16:5a9f) + TX_FAR _Route16BattleText6 + db "@" + +Route16EndBattleText6: ; 59aa4 (16:5aa4) + TX_FAR _Route16EndBattleText6 + db "@" + +Route16AfterBattleText6: ; 59aa9 (16:5aa9) + TX_FAR _Route16AfterBattleText6 + db "@" + +Route16Text7: ; 59aae (16:5aae) + TX_FAR _Route16Text7 + db "@" + +Route16Text10: ; 59ab3 (16:5ab3) + TX_FAR _Route16Text10 + db "@" + +Route16Text11: ; 59ab8 (16:5ab8) + TX_FAR _Route16Text11 + db "@" + +Route16Text8: ; 59abd (16:5abd) + TX_FAR _Route16Text8 + db "@" + +Route16Text9: ; 59ac2 (16:5ac2) + TX_FAR _Route16Text9 + db "@" diff --git a/scripts/route16gate.asm b/scripts/route16gate.asm new file mode 100755 index 00000000..5131a1ff --- /dev/null +++ b/scripts/route16gate.asm @@ -0,0 +1,121 @@ +Route16GateScript: ; 496be (12:56be) + ld hl, $d732 + res 5, [hl] + call EnableAutoTextBoxDrawing + ld a, [W_ROUTE16GATECURSCRIPT] + ld hl, Route16GateScriptPointers + jp CallFunctionInTable + +Route16GateScriptPointers: ; 496cf (12:56cf) + dw Route16GateScript0 + dw Route16GateScript1 + dw Route16GateScript2 + dw Route16GateScript3 + +Route16GateScript0: ; 496d7 (12:56d7) + call Func_49755 + ret nz + ld hl, CoordsData_49714 + call ArePlayerCoordsInArray + ret nc + ld a, $3 + ld [$ff8c], a + call DisplayTextID + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, [$cd3d] + cp $1 + jr z, .asm_4970e ; 0x496f1 $1b + ld a, [$cd3d] + dec a + ld [$cd38], a + ld b, $0 + ld c, a + ld a, $40 + ld hl, $ccd3 + call FillMemory + call Func_3486 + ld a, $1 + ld [W_ROUTE16GATECURSCRIPT], a + ret +.asm_4970e + ld a, $2 + ld [W_ROUTE16GATECURSCRIPT], a + ret + +CoordsData_49714: ; 49714 (12:5714) + db $07,$04 + db $08,$04 + db $09,$04 + db $0A,$04 + db $FF + +Route16GateScript1: ; 4971d (12:571d) + ld a, [$cd38] + and a + ret nz + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + +Route16GateScript2: ; 49727 (12:5727) + ld a, $1 + ld [H_SPRITEHEIGHT], a + call DisplayTextID + ld a, $1 + ld [$cd38], a + ld a, $10 + ld [$ccd3], a + call Func_3486 + ld a, $3 + ld [W_ROUTE16GATECURSCRIPT], a + ret + +Route16GateScript3: ; 49741 (12:5741) + ld a, [$cd38] + and a + ret nz + xor a + ld [wJoypadForbiddenButtonsMask], a + ld hl, $d730 + res 7, [hl] + ld a, $0 + ld [W_ROUTE16GATECURSCRIPT], a + ret + +Func_49755: ; 49755 (12:5755) + ld b, BICYCLE + jp IsItemInBag + +Route16GateTextPointers: ; 4975a (12:575a) + dw Route16GateText1 + dw Route16GateText2 + dw Route16GateText3 + +Route16GateText1: ; 49760 (12:5760) + db $08 ; asm + call Func_49755 + jr z, .asm_0bdf3 ; 0x49764 + ld hl, Route16GateText_4977c + call PrintText + jr .asm_56c9d ; 0x4976c +.asm_0bdf3 ; 0x4976e + ld hl, Route16GateText_49777 + call PrintText +.asm_56c9d ; 0x49774 + jp TextScriptEnd + +Route16GateText_49777: ; 49777 (12:5777) + TX_FAR _Route16GateText_49777 + db "@" + +Route16GateText_4977c: ; 4977c (12:577c) + TX_FAR _Route16GateText_4977c + db "@" + +Route16GateText3: ; 49781 (12:5781) + TX_FAR _Route16GateText_49781 + db "@" + +Route16GateText2: ; 49786 (12:5786) + TX_FAR _Route16GateText2 + db "@" diff --git a/scripts/route16gateupstairs.asm b/scripts/route16gateupstairs.asm new file mode 100755 index 00000000..c9996dcd --- /dev/null +++ b/scripts/route16gateupstairs.asm @@ -0,0 +1,46 @@ +Route16GateUpstairsScript: ; 4980b (12:580b) + jp DisableAutoTextBoxDrawing + +Route16GateUpstairsTextPointers: ; 4980e (12:580e) + dw Route16GateUpstairsText1 + dw Route16GateUpstairsText2 + dw Route16GateUpstairsText3 + dw Route16GateUpstairsText4 + +Route16GateUpstairsText1: ; 49816 (12:5816) + db $08 ; asm + ld hl, Route16GateUpstairsText_49820 + call PrintText + jp TextScriptEnd + +Route16GateUpstairsText_49820: ; 49820 (12:5820) + TX_FAR _Route16GateUpstairsText_49820 + db "@" + +Route16GateUpstairsText2: ; 49825 (12:5825) + db $08 ; asm + ld hl, Route16GateUpstairsText_4982f + call PrintText + jp TextScriptEnd + +Route16GateUpstairsText_4982f: ; 4982f (12:582f) + TX_FAR _Route16GateUpstairsText_4982f + db "@" + +Route16GateUpstairsText3: ; 49834 (12:5834) + db $8 + ld hl, Route16GateUpstairsText_4983b + jp Route12GateUpstairsScript_495c9 + +Route16GateUpstairsText_4983b: ; 4983b (12:583b) + TX_FAR _Route16GateUpstairsText_4983b + db "@" + +Route16GateUpstairsText4: ; 49840 (12:5840) + db $8 + ld hl, Route16GateUpstairsText_49847 ; $5847 + jp Route12GateUpstairsScript_495c9 + +Route16GateUpstairsText_49847: ; 49847 (12:5847) + TX_FAR _Route16GateUpstairsText_49847 + db "@" diff --git a/scripts/route16house.asm b/scripts/route16house.asm new file mode 100755 index 00000000..21c21b79 --- /dev/null +++ b/scripts/route16house.asm @@ -0,0 +1,56 @@ +Route16HouseScript: ; 1e5f8 (7:65f8) + jp EnableAutoTextBoxDrawing + +Route16HouseTextPointers: ; 1e5fb (7:65fb) + dw Route16HouseText1 + dw Route16HouseText2 + +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 + +Route16HouseText3: ; 1e62b (7:662b) + TX_FAR _Route16HouseText3 + db "@" + +ReceivedHM02Text: ; 1e630 (7:6630) + TX_FAR _ReceivedHM02Text + db $11, "@" + +HM02ExplanationText: ; 1e636 (7:6636) + TX_FAR _HM02ExplanationText + db "@" + +HM02NoRoomText: ; 1e63b (7:663b) + TX_FAR _HM02NoRoomText + db "@" + +Route16HouseText2: ; 1e640 (7:6640) + db $08 ; asm + ld hl, Route16HouseText_1e652 + call PrintText + ld a, FEAROW + call PlayCry + call WaitForSoundToFinish + jp TextScriptEnd + +Route16HouseText_1e652: ; 1e652 (7:6652) + TX_FAR _Route16HouseText_1e652 + db "@" diff --git a/scripts/route17.asm b/scripts/route17.asm new file mode 100755 index 00000000..976d4236 --- /dev/null +++ b/scripts/route17.asm @@ -0,0 +1,328 @@ +Route17Script: ; 55b7a (15:5b7a) + call EnableAutoTextBoxDrawing + ld hl, Route17TrainerHeaders + ld de, Route17ScriptPointers + ld a, [W_ROUTE17CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROUTE17CURSCRIPT], a + ret + +Route17ScriptPointers: ; 55b8d (15:5b8d) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +Route17TextPointers: ; 55b93 (15:5b93) + dw Route17Text1 + dw Route17Text2 + dw Route17Text3 + dw Route17Text4 + dw Route17Text5 + dw Route17Text6 + dw Route17Text7 + dw Route17Text8 + dw Route17Text9 + dw Route17Text10 + dw Route17Text11 + dw Route17Text12 + dw Route17Text13 + dw Route17Text14 + dw Route17Text15 + dw Route17Text16 + +Route17TrainerHeaders: ; 55bb3 (15:5bb3) +Route17TrainerHeader0: ; 55bb3 (15:5bb3) + db $1 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7e1 ; flag's byte + dw Route17BattleText1 ; 0x5c36 TextBeforeBattle + dw Route17AfterBattleText1 ; 0x5c40 TextAfterBattle + dw Route17EndBattleText1 ; 0x5c3b TextEndBattle + dw Route17EndBattleText1 ; 0x5c3b TextEndBattle + +Route17TrainerHeader1: ; 55bbf (15:5bbf) + db $2 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e1 ; flag's byte + dw Route17BattleText2 ; 0x5c4f TextBeforeBattle + dw Route17AfterBattleText2 ; 0x5c59 TextAfterBattle + dw Route17EndBattleText2 ; 0x5c54 TextEndBattle + dw Route17EndBattleText2 ; 0x5c54 TextEndBattle + +Route17TrainerHeader2: ; 55bcb (15:5bcb) + db $3 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e1 ; flag's byte + dw Route17BattleText3 ; 0x5c68 TextBeforeBattle + dw Route17AfterBattleText3 ; 0x5c72 TextAfterBattle + dw Route17EndBattleText3 ; 0x5c6d TextEndBattle + dw Route17EndBattleText3 ; 0x5c6d TextEndBattle + +Route17TrainerHeader3: ; 55bd7 (15:5bd7) + db $4 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e1 ; flag's byte + dw Route17BattleText4 ; 0x5c81 TextBeforeBattle + dw Route17AfterBattleText4 ; 0x5c8b TextAfterBattle + dw Route17EndBattleText4 ; 0x5c86 TextEndBattle + dw Route17EndBattleText4 ; 0x5c86 TextEndBattle + +Route17TrainerHeader4: ; 55be3 (15:5be3) + db $5 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7e1 ; flag's byte + dw Route17BattleText5 ; 0x5c9a TextBeforeBattle + dw Route17AfterBattleText5 ; 0x5ca4 TextAfterBattle + dw Route17EndBattleText5 ; 0x5c9f TextEndBattle + dw Route17EndBattleText5 ; 0x5c9f TextEndBattle + +Route17TrainerHeader5: ; 55bef (15:5bef) + db $6 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7e1 ; flag's byte + dw Route17BattleText6 ; 0x5cb3 TextBeforeBattle + dw Route17AfterBattleText6 ; 0x5cbd TextAfterBattle + dw Route17EndBattleText6 ; 0x5cb8 TextEndBattle + dw Route17EndBattleText6 ; 0x5cb8 TextEndBattle + +Route17TrainerHeader6: ; 55bfb (15:5bfb) + db $7 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e1 ; flag's byte + dw Route17BattleText7 ; 0x5ccc TextBeforeBattle + dw Route17AfterBattleText7 ; 0x5cd6 TextAfterBattle + dw Route17EndBattleText7 ; 0x5cd1 TextEndBattle + dw Route17EndBattleText7 ; 0x5cd1 TextEndBattle + +Route17TrainerHeader7: ; 55c07 (15:5c07) + db $8 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7e1 ; flag's byte + dw Route17BattleText8 ; 0x5ce5 TextBeforeBattle + dw Route17AfterBattleText8 ; 0x5cef TextAfterBattle + dw Route17EndBattleText8 ; 0x5cea TextEndBattle + dw Route17EndBattleText8 ; 0x5cea TextEndBattle + +Route17TrainerHeader8: ; 55c13 (15:5c13) + db $9 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7e1 ; flag's byte + dw Route17BattleText9 ; 0x5cfe TextBeforeBattle + dw Route17AfterBattleText9 ; 0x5d08 TextAfterBattle + dw Route17EndBattleText9 ; 0x5d03 TextEndBattle + dw Route17EndBattleText9 ; 0x5d03 TextEndBattle + +Route17TrainerHeader9: ; 55c1f (15:5c1f) + db $a ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e1 ; flag's byte + dw Route17BattleText10 ; 0x5d17 TextBeforeBattle + dw Route17AfterBattleText10 ; 0x5d21 TextAfterBattle + dw Route17EndBattleText10 ; 0x5d1c TextEndBattle + dw Route17EndBattleText10 ; 0x5d1c TextEndBattle + + db $ff + +Route17Text1: ; 55c2c (15:5c2c) + db $08 ; asm + ld hl, Route17TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +Route17BattleText1: ; 55c36 (15:5c36) + TX_FAR _Route17BattleText1 + db "@" + +Route17EndBattleText1: ; 55c3b (15:5c3b) + TX_FAR _Route17EndBattleText1 + db "@" + +Route17AfterBattleText1: ; 55c40 (15:5c40) + TX_FAR _Route17AfterBattleText1 + db "@" + +Route17Text2: ; 55c45 (15:5c45) + db $08 ; asm + ld hl, Route17TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +Route17BattleText2: ; 55c4f (15:5c4f) + TX_FAR _Route17BattleText2 + db "@" + +Route17EndBattleText2: ; 55c54 (15:5c54) + TX_FAR _Route17EndBattleText2 + db "@" + +Route17AfterBattleText2: ; 55c59 (15:5c59) + TX_FAR _Route17AfterBattleText2 + db "@" + +Route17Text3: ; 55c5e (15:5c5e) + db $08 ; asm + ld hl, Route17TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +Route17BattleText3: ; 55c68 (15:5c68) + TX_FAR _Route17BattleText3 + db "@" + +Route17EndBattleText3: ; 55c6d (15:5c6d) + TX_FAR _Route17EndBattleText3 + db "@" + +Route17AfterBattleText3: ; 55c72 (15:5c72) + TX_FAR _Route17AfterBattleText3 + db "@" + +Route17Text4: ; 55c77 (15:5c77) + db $08 ; asm + ld hl, Route17TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +Route17BattleText4: ; 55c81 (15:5c81) + TX_FAR _Route17BattleText4 + db "@" + +Route17EndBattleText4: ; 55c86 (15:5c86) + TX_FAR _Route17EndBattleText4 + db "@" + +Route17AfterBattleText4: ; 55c8b (15:5c8b) + TX_FAR _Route17AfterBattleText4 + db "@" + +Route17Text5: ; 55c90 (15:5c90) + db $08 ; asm + ld hl, Route17TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +Route17BattleText5: ; 55c9a (15:5c9a) + TX_FAR _Route17BattleText5 + db "@" + +Route17EndBattleText5: ; 55c9f (15:5c9f) + TX_FAR _Route17EndBattleText5 + db "@" + +Route17AfterBattleText5: ; 55ca4 (15:5ca4) + TX_FAR _Route17AfterBattleText5 + db "@" + +Route17Text6: ; 55ca9 (15:5ca9) + db $08 ; asm + ld hl, Route17TrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +Route17BattleText6: ; 55cb3 (15:5cb3) + TX_FAR _Route17BattleText6 + db "@" + +Route17EndBattleText6: ; 55cb8 (15:5cb8) + TX_FAR _Route17EndBattleText6 + db "@" + +Route17AfterBattleText6: ; 55cbd (15:5cbd) + TX_FAR _Route17AfterBattleText6 + db "@" + +Route17Text7: ; 55cc2 (15:5cc2) + db $08 ; asm + ld hl, Route17TrainerHeader6 + call TalkToTrainer + jp TextScriptEnd + +Route17BattleText7: ; 55ccc (15:5ccc) + TX_FAR _Route17BattleText7 + db "@" + +Route17EndBattleText7: ; 55cd1 (15:5cd1) + TX_FAR _Route17EndBattleText7 + db "@" + +Route17AfterBattleText7: ; 55cd6 (15:5cd6) + TX_FAR _Route17AfterBattleText7 + db "@" + +Route17Text8: ; 55cdb (15:5cdb) + db $08 ; asm + ld hl, Route17TrainerHeader7 + call TalkToTrainer + jp TextScriptEnd + +Route17BattleText8: ; 55ce5 (15:5ce5) + TX_FAR _Route17BattleText8 + db "@" + +Route17EndBattleText8: ; 55cea (15:5cea) + TX_FAR _Route17EndBattleText8 + db "@" + +Route17AfterBattleText8: ; 55cef (15:5cef) + TX_FAR _Route17AfterBattleText8 + db "@" + +Route17Text9: ; 55cf4 (15:5cf4) + db $08 ; asm + ld hl, Route17TrainerHeader8 + call TalkToTrainer + jp TextScriptEnd + +Route17BattleText9: ; 55cfe (15:5cfe) + TX_FAR _Route17BattleText9 + db "@" + +Route17EndBattleText9: ; 55d03 (15:5d03) + TX_FAR _Route17EndBattleText9 + db "@" + +Route17AfterBattleText9: ; 55d08 (15:5d08) + TX_FAR _Route17AfterBattleText9 + db "@" + +Route17Text10: ; 55d0d (15:5d0d) + db $08 ; asm + ld hl, Route17TrainerHeader9 + call TalkToTrainer + jp TextScriptEnd + +Route17BattleText10: ; 55d17 (15:5d17) + TX_FAR _Route17BattleText10 + db "@" + +Route17EndBattleText10: ; 55d1c (15:5d1c) + TX_FAR _Route17EndBattleText10 + db "@" + +Route17AfterBattleText10: ; 55d21 (15:5d21) + TX_FAR _Route17AfterBattleText10 + db "@" + +Route17Text11: ; 55d26 (15:5d26) + TX_FAR _Route17Text11 + db "@" + +Route17Text12: ; 55d2b (15:5d2b) + TX_FAR _Route17Text12 + db "@" + +Route17Text13: ; 55d30 (15:5d30) + TX_FAR _Route17Text13 + db "@" + +Route17Text14: ; 55d35 (15:5d35) + TX_FAR _Route17Text14 + db "@" + +Route17Text15: ; 55d3a (15:5d3a) + TX_FAR _Route17Text15 + db "@" + +Route17Text16: ; 55d3f (15:5d3f) + TX_FAR _Route17Text16 + db "@" diff --git a/scripts/route18.asm b/scripts/route18.asm new file mode 100755 index 00000000..b15f5e42 --- /dev/null +++ b/scripts/route18.asm @@ -0,0 +1,112 @@ +Route18Script: ; 59ac7 (16:5ac7) + call EnableAutoTextBoxDrawing + ld hl, Route18TrainerHeaders + ld de, Route18ScriptPointers + ld a, [W_ROUTE18CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROUTE18CURSCRIPT], a + ret + +Route18ScriptPointers: ; 59ada (16:5ada) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +Route18TextPointers: ; 59ae0 (16:5ae0) + dw Route18Text1 + dw Route18Text2 + dw Route18Text3 + dw Route18Text4 + dw Route18Text5 + +Route18TrainerHeaders: ; 59aea (16:5aea) +Route18TrainerHeader0: ; 59aea (16:5aea) + db $1 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7e3 ; flag's byte + dw Route18BattleText1 ; 0x5b19 TextBeforeBattle + dw Route18AfterBattleText1 ; 0x5b23 TextAfterBattle + dw Route18EndBattleText1 ; 0x5b1e TextEndBattle + dw Route18EndBattleText1 ; 0x5b1e TextEndBattle + +Route18TrainerHeader1: ; 59af6 (16:5af6) + db $2 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7e3 ; flag's byte + dw Route18BattleText2 ; 0x5b32 TextBeforeBattle + dw Route18AfterBattleText2 ; 0x5b3c TextAfterBattle + dw Route18EndBattleText2 ; 0x5b37 TextEndBattle + dw Route18EndBattleText2 ; 0x5b37 TextEndBattle + +Route18TrainerHeader2: ; 59b02 (16:5b02) + db $3 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e3 ; flag's byte + dw Route18BattleText3 ; 0x5b4b TextBeforeBattle + dw Route18AfterBattleText3 ; 0x5b55 TextAfterBattle + dw Route18EndBattleText3 ; 0x5b50 TextEndBattle + dw Route18EndBattleText3 ; 0x5b50 TextEndBattle + + db $ff + +Route18Text1: ; 59b0f (16:5b0f) + db $08 ; asm + ld hl, Route18TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +Route18BattleText1: ; 59b19 (16:5b19) + TX_FAR _Route18BattleText1 + db "@" + +Route18EndBattleText1: ; 59b1e (16:5b1e) + TX_FAR _Route18EndBattleText1 + db "@" + +Route18AfterBattleText1: ; 59b23 (16:5b23) + TX_FAR _Route18AfterBattleText1 + db "@" + +Route18Text2: ; 59b28 (16:5b28) + db $08 ; asm + ld hl, Route18TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +Route18BattleText2: ; 59b32 (16:5b32) + TX_FAR _Route18BattleText2 + db "@" + +Route18EndBattleText2: ; 59b37 (16:5b37) + TX_FAR _Route18EndBattleText2 + db "@" + +Route18AfterBattleText2: ; 59b3c (16:5b3c) + TX_FAR _Route18AfterBattleText2 + db "@" + +Route18Text3: ; 59b41 (16:5b41) + db $08 ; asm + ld hl, Route18TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +Route18BattleText3: ; 59b4b (16:5b4b) + TX_FAR _Route18BattleText3 + db "@" + +Route18EndBattleText3: ; 59b50 (16:5b50) + TX_FAR _Route18EndBattleText3 + db "@" + +Route18AfterBattleText3: ; 59b55 (16:5b55) + TX_FAR _Route18AfterBattleText3 + db "@" + +Route18Text4: ; 59b5a (16:5b5a) + TX_FAR _Route18Text4 + db "@" + +Route18Text5: ; 59b5f (16:5b5f) + TX_FAR _Route18Text5 + db "@" diff --git a/scripts/route18gate.asm b/scripts/route18gate.asm new file mode 100755 index 00000000..d55ed412 --- /dev/null +++ b/scripts/route18gate.asm @@ -0,0 +1,112 @@ +Route18GateScript: ; 49876 (12:5876) + ld hl, $d732 + res 5, [hl] + call EnableAutoTextBoxDrawing + ld a, [W_ROUTE18GATECURSCRIPT] + ld hl, Route18GateScriptPointers + jp CallFunctionInTable + +Route18GateScriptPointers: ; 49887 (12:5887) + dw Route18GateScript0 + dw Route18GateScript1 + dw Route18GateScript2 + dw Route18GateScript3 + +Route18GateScript0: ; 4988f (12:588f) + call Func_49755 + ret nz + ld hl, CoordsData_498cc + call ArePlayerCoordsInArray + ret nc + ld a, $2 + ld [$ff8c], a + call DisplayTextID + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, [$cd3d] + cp $1 + jr z, .asm_498c6 ; 0x498a9 $1b + ld a, [$cd3d] + dec a + ld [$cd38], a + ld b, $0 + ld c, a + ld a, $40 + ld hl, $ccd3 + call FillMemory + call Func_3486 + ld a, $1 + ld [W_ROUTE18GATECURSCRIPT], a + ret +.asm_498c6 + ld a, $2 + ld [W_ROUTE18GATECURSCRIPT], a + ret + +CoordsData_498cc: ; 498cc (12:58cc) + db $03,$04 + db $04,$04 + db $05,$04 + db $06,$04 + db $FF + +Route18GateScript1: ; 498d5 (12:58d5) + ld a, [$cd38] + and a + ret nz + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + +Route18GateScript2: ; 498df (12:58df) + ld a, $1 + ld [H_SPRITEHEIGHT], a + call DisplayTextID + ld a, $1 + ld [$cd38], a + ld a, $10 + ld [$ccd3], a + call Func_3486 + ld a, $3 + ld [W_ROUTE18GATECURSCRIPT], a + ret + +Route18GateScript3: ; 498f9 (12:58f9) + ld a, [$cd38] + and a + ret nz + xor a + ld [wJoypadForbiddenButtonsMask], a + ld hl, $d730 + res 7, [hl] + ld a, $0 + ld [W_ROUTE18GATECURSCRIPT], a + ret + +Route18GateTextPointers: ; 4990d (12:590d) + dw Route18GateText1 + dw Route18GateText2 + +Route18GateText1: ; 49911 (12:5911) + db $08 ; asm + call Func_49755 + jr z, .asm_3c84d ; 0x49915 + ld hl, Route18GateText_4992d + call PrintText + jr .asm_a8410 ; 0x4991d +.asm_3c84d ; 0x4991f + ld hl, Route18GateText_49928 + call PrintText +.asm_a8410 ; 0x49925 + jp TextScriptEnd + +Route18GateText_49928: ; 49928 (12:5928) + TX_FAR _Route18GateText_49928 + db "@" + +Route18GateText_4992d: ; 4992d (12:592d) + TX_FAR _Route18GateText_4992d + db "@" + +Route18GateText2: ; 49932 (12:5932) + TX_FAR _Route18GateText_49932 + db "@" diff --git a/scripts/route18gateupstairs.asm b/scripts/route18gateupstairs.asm new file mode 100755 index 00000000..d9164d1d --- /dev/null +++ b/scripts/route18gateupstairs.asm @@ -0,0 +1,33 @@ +Route18GateUpstairsScript: ; 49975 (12:5975) + jp DisableAutoTextBoxDrawing + +Route18GateUpstairsTextPointers: ; 49978 (12:5978) + dw Route18GateUpstairsText1 + dw Route18GateUpstairsText2 + dw Route18GateUpstairsText3 + +Route18GateUpstairsText1: ; 4997e (12:597e) + db $08 ; asm + ld a, $5 + ld [wWhichTrade], a + ld a, $54 + call Predef + jp TextScriptEnd + +Route18GateUpstairsText2: ; 4998c (12:598c) + db $8 + ld hl, Route18GateUpstairsText_49993 ; $5993 + jp Route12GateUpstairsScript_495c9 + +Route18GateUpstairsText_49993: ; 49993 (12:5993) + TX_FAR _Route18GateUpstairsText_49993 + db "@" + +Route18GateUpstairsText3: ; 49998 (12:5998) + db $8 + ld hl, Route18GateUpstairsText_4999f ; $599f + jp Route12GateUpstairsScript_495c9 + +Route18GateUpstairsText_4999f: ; 4999f (12:599f) + TX_FAR _Route18GateUpstairsText_4999f + db "@" diff --git a/scripts/route19.asm b/scripts/route19.asm new file mode 100755 index 00000000..8bc641ff --- /dev/null +++ b/scripts/route19.asm @@ -0,0 +1,303 @@ +Route19Script: ; 55d44 (15:5d44) + call EnableAutoTextBoxDrawing + ld hl, Route19TrainerHeaders + ld de, Route19ScriptPointers + ld a, [W_ROUTE19CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROUTE19CURSCRIPT], a + ret + +Route19ScriptPointers: ; 55d57 (15:5d57) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +Route19TextPointers: ; 55d5d (15:5d5d) + dw Route19Text1 + dw Route19Text2 + dw Route19Text3 + dw Route19Text4 + dw Route19Text5 + dw Route19Text6 + dw Route19Text7 + dw Route19Text8 + dw Route19Text9 + dw Route19Text10 + dw Route19Text11 + +Route19TrainerHeaders: ; 55d73 (15:5d73) +Route19TrainerHeader0: ; 55d73 (15:5d73) + db $1 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e5 ; flag's byte + dw Route19BattleText1 ; 0x5e50 TextBeforeBattle + dw Route19AfterBattleText1 ; 0x5e5a TextAfterBattle + dw Route19EndBattleText1 ; 0x5e55 TextEndBattle + dw Route19EndBattleText1 ; 0x5e55 TextEndBattle + +Route19TrainerHeader1: ; 55d7f (15:5d7f) + db $2 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7e5 ; flag's byte + dw Route19BattleText2 ; 0x5e5f TextBeforeBattle + dw Route19AfterBattleText2 ; 0x5e69 TextAfterBattle + dw Route19EndBattleText2 ; 0x5e64 TextEndBattle + dw Route19EndBattleText2 ; 0x5e64 TextEndBattle + +Route19TrainerHeader2: ; 55d8b (15:5d8b) + db $3 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7e5 ; flag's byte + dw Route19BattleText3 ; 0x5e6e TextBeforeBattle + dw Route19AfterBattleText3 ; 0x5e78 TextAfterBattle + dw Route19EndBattleText3 ; 0x5e73 TextEndBattle + dw Route19EndBattleText3 ; 0x5e73 TextEndBattle + +Route19TrainerHeader3: ; 55d97 (15:5d97) + db $4 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e5 ; flag's byte + dw Route19BattleText4 ; 0x5e7d TextBeforeBattle + dw Route19AfterBattleText4 ; 0x5e87 TextAfterBattle + dw Route19EndBattleText4 ; 0x5e82 TextEndBattle + dw Route19EndBattleText4 ; 0x5e82 TextEndBattle + +Route19TrainerHeader4: ; 55da3 (15:5da3) + db $5 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e5 ; flag's byte + dw Route19BattleText5 ; 0x5e8c TextBeforeBattle + dw Route19AfterBattleText5 ; 0x5e96 TextAfterBattle + dw Route19EndBattleText5 ; 0x5e91 TextEndBattle + dw Route19EndBattleText5 ; 0x5e91 TextEndBattle + +Route19TrainerHeader5: ; 55daf (15:5daf) + db $6 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e5 ; flag's byte + dw Route19BattleText6 ; 0x5e9b TextBeforeBattle + dw Route19AfterBattleText6 ; 0x5ea5 TextAfterBattle + dw Route19EndBattleText6 ; 0x5ea0 TextEndBattle + dw Route19EndBattleText6 ; 0x5ea0 TextEndBattle + +Route19TrainerHeader6: ; 55dbb (15:5dbb) + db $7 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7e5 ; flag's byte + dw Route19BattleText7 ; 0x5eaa TextBeforeBattle + dw Route19AfterBattleText7 ; 0x5eb4 TextAfterBattle + dw Route19EndBattleText7 ; 0x5eaf TextEndBattle + dw Route19EndBattleText7 ; 0x5eaf TextEndBattle + +Route19TrainerHeader7: ; 55dc7 (15:5dc7) + db $8 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e5 ; flag's byte + dw Route19BattleText8 ; 0x5eb9 TextBeforeBattle + dw Route19AfterBattleText8 ; 0x5ec3 TextAfterBattle + dw Route19EndBattleText8 ; 0x5ebe TextEndBattle + dw Route19EndBattleText8 ; 0x5ebe TextEndBattle + +Route19TrainerHeader8: ; 55dd3 (15:5dd3) + db $9 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e5 ; flag's byte + dw Route19BattleText9 ; 0x5ec8 TextBeforeBattle + dw Route19AfterBattleText9 ; 0x5ed2 TextAfterBattle + dw Route19EndBattleText9 ; 0x5ecd TextEndBattle + dw Route19EndBattleText9 ; 0x5ecd TextEndBattle + +Route19TrainerHeader9: ; 55ddf (15:5ddf) + db $a ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e5 ; flag's byte + dw Route19BattleText10 ; 0x5ed7 TextBeforeBattle + dw Route19AfterBattleText10 ; 0x5ee1 TextAfterBattle + dw Route19EndBattleText10 ; 0x5edc TextEndBattle + dw Route19EndBattleText10 ; 0x5edc TextEndBattle + + db $ff + +Route19Text1: ; 55dec (15:5dec) + db $08 ; asm + ld hl, Route19TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +Route19Text2: ; 55df6 (15:5df6) + db $08 ; asm + ld hl, Route19TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +Route19Text3: ; 55e00 (15:5e00) + db $08 ; asm + ld hl, Route19TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +Route19Text4: ; 55e0a (15:5e0a) + db $08 ; asm + ld hl, Route19TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +Route19Text5: ; 55e14 (15:5e14) + db $08 ; asm + ld hl, Route19TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +Route19Text6: ; 55e1e (15:5e1e) + db $08 ; asm + ld hl, Route19TrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +Route19Text7: ; 55e28 (15:5e28) + db $08 ; asm + ld hl, Route19TrainerHeader6 + call TalkToTrainer + jp TextScriptEnd + +Route19Text8: ; 55e32 (15:5e32) + db $08 ; asm + ld hl, Route19TrainerHeader7 + call TalkToTrainer + jp TextScriptEnd + +Route19Text9: ; 55e3c (15:5e3c) + db $08 ; asm + ld hl, Route19TrainerHeader8 + call TalkToTrainer + jp TextScriptEnd + +Route19Text10: ; 55e46 (15:5e46) + db $08 ; asm + ld hl, Route19TrainerHeader9 + call TalkToTrainer + jp TextScriptEnd + +Route19BattleText1: ; 55e50 (15:5e50) + TX_FAR _Route19BattleText1 + db "@" + +Route19EndBattleText1: ; 55e55 (15:5e55) + TX_FAR _Route19EndBattleText1 + db "@" + +Route19AfterBattleText1: ; 55e5a (15:5e5a) + TX_FAR _Route19AfterBattleText1 + db "@" + +Route19BattleText2: ; 55e5f (15:5e5f) + TX_FAR _Route19BattleText2 + db "@" + +Route19EndBattleText2: ; 55e64 (15:5e64) + TX_FAR _Route19EndBattleText2 + db "@" + +Route19AfterBattleText2: ; 55e69 (15:5e69) + TX_FAR _Route19AfterBattleText2 + db "@" + +Route19BattleText3: ; 55e6e (15:5e6e) + TX_FAR _Route19BattleText3 + db "@" + +Route19EndBattleText3: ; 55e73 (15:5e73) + TX_FAR _Route19EndBattleText3 + db "@" + +Route19AfterBattleText3: ; 55e78 (15:5e78) + TX_FAR _Route19AfterBattleText3 + db "@" + +Route19BattleText4: ; 55e7d (15:5e7d) + TX_FAR _Route19BattleText4 + db "@" + +Route19EndBattleText4: ; 55e82 (15:5e82) + TX_FAR _Route19EndBattleText4 + db "@" + +Route19AfterBattleText4: ; 55e87 (15:5e87) + TX_FAR _Route19AfterBattleText4 + db "@" + +Route19BattleText5: ; 55e8c (15:5e8c) + TX_FAR _Route19BattleText5 + db "@" + +Route19EndBattleText5: ; 55e91 (15:5e91) + TX_FAR _Route19EndBattleText5 + db "@" + +Route19AfterBattleText5: ; 55e96 (15:5e96) + TX_FAR _Route19AfterBattleText5 + db "@" + +Route19BattleText6: ; 55e9b (15:5e9b) + TX_FAR _Route19BattleText6 + db "@" + +Route19EndBattleText6: ; 55ea0 (15:5ea0) + TX_FAR _Route19EndBattleText6 + db "@" + +Route19AfterBattleText6: ; 55ea5 (15:5ea5) + TX_FAR _Route19AfterBattleText6 + db "@" + +Route19BattleText7: ; 55eaa (15:5eaa) + TX_FAR _Route19BattleText7 + db "@" + +Route19EndBattleText7: ; 55eaf (15:5eaf) + TX_FAR _Route19EndBattleText7 + db "@" + +Route19AfterBattleText7: ; 55eb4 (15:5eb4) + TX_FAR _Route19AfterBattleText7 + db "@" + +Route19BattleText8: ; 55eb9 (15:5eb9) + TX_FAR _Route19BattleText8 + db "@" + +Route19EndBattleText8: ; 55ebe (15:5ebe) + TX_FAR _Route19EndBattleText8 + db "@" + +Route19AfterBattleText8: ; 55ec3 (15:5ec3) + TX_FAR _Route19AfterBattleText8 + db "@" + +Route19BattleText9: ; 55ec8 (15:5ec8) + TX_FAR _Route19BattleText9 + db "@" + +Route19EndBattleText9: ; 55ecd (15:5ecd) + TX_FAR _Route19EndBattleText9 + db "@" + +Route19AfterBattleText9: ; 55ed2 (15:5ed2) + TX_FAR _Route19AfterBattleText9 + db "@" + +Route19BattleText10: ; 55ed7 (15:5ed7) + TX_FAR _Route19BattleText10 + db "@" + +Route19EndBattleText10: ; 55edc (15:5edc) + TX_FAR _Route19EndBattleText10 + db "@" + +Route19AfterBattleText10: ; 55ee1 (15:5ee1) + TX_FAR _Route19AfterBattleText10 + db "@" + +Route19Text11: ; 55ee6 (15:5ee6) + TX_FAR _Route19Text11 + db "@" diff --git a/scripts/route2.asm b/scripts/route2.asm new file mode 100755 index 00000000..fdc5eb6c --- /dev/null +++ b/scripts/route2.asm @@ -0,0 +1,16 @@ +Route2Script: ; 554e3 (15:54e3) + jp EnableAutoTextBoxDrawing + +Route2TextPointers: ; 554e6 (15:54e6) + dw Predef5CText + dw Predef5CText + dw Route2Text3 + dw Route2Text4 + +Route2Text3: ; 554ee (15:54ee) + TX_FAR _Route2Text3 + db "@" + +Route2Text4: ; 554f3 (15:54f3) + TX_FAR _Route2Text4 + db "@" diff --git a/scripts/route20.asm b/scripts/route20.asm new file mode 100755 index 00000000..2d5f3077 --- /dev/null +++ b/scripts/route20.asm @@ -0,0 +1,356 @@ +Route20Script: ; 50ca9 (14:4ca9) + ld hl, $d7e7 + bit 0, [hl] + res 0, [hl] + call nz, Route20Script_50cc6 + call EnableAutoTextBoxDrawing + ld hl, Route20TrainerHeader0 ; $4d3a + ld de, Route20ScriptPointers + ld a, [W_ROUTE20CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROUTE20CURSCRIPT], a + ret + +Route20Script_50cc6: ; 50cc6 (14:4cc6) + ld a, [$d880] + and $3 + cp $3 + jr z, .asm_50cef + ld a, $d7 + call Route20Script_50d0c + ld a, $d8 + call Route20Script_50d0c + ld hl, .MissableObjectIDs ; $4ce8 +.asm_50cdc + ld a, [hli] + cp $ff + jr z, .asm_50cef + push hl + call Route20Script_50d14 + pop hl + jr .asm_50cdc + +.MissableObjectIDs: ; 50ce8 (14:4ce8) + db $D9,$DA,$DB,$DC,$DF,$E0,$FF + +.asm_50cef + ld a, [$d881] + and $3 + cp $3 + ret z + ld a, $dd + call Route20Script_50d0c + ld a, $de + call Route20Script_50d0c + ld a, $e1 + call Route20Script_50d14 + ld a, $e2 + call Route20Script_50d14 + ret + +Route20Script_50d0c: ; 50d0c (14:4d0c) + ld [$cc4d], a + ld a, $15 + jp Predef ; indirect jump to AddMissableObject (f1c8 (3:71c8)) + +Route20Script_50d14: ; 50d14 (14:4d14) + ld [$cc4d], a + ld a, $11 + jp Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) + +Route20ScriptPointers: ; 50d1c (14:4d1c) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +Route20TextPointers: ; 50d22 (14:4d22) + dw Route20Text1 + dw Route20Text2 + dw Route20Text3 + dw Route20Text4 + dw Route20Text5 + dw Route20Text6 + dw Route20Text7 + dw Route20Text8 + dw Route20Text9 + dw Route20Text10 + dw Route20Text11 + dw Route20Text12 + +Route20TrainerHeaders: ; 50d3a (14:4d3a) +Route20TrainerHeader0: ; 50d3a (14:4d3a) + db $1 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e7 ; flag's byte + dw Route20BattleText1 ; 0x4e17 TextBeforeBattle + dw Route20AfterBattleText1 ; 0x4e21 TextAfterBattle + dw Route20EndBattleText1 ; 0x4e1c TextEndBattle + dw Route20EndBattleText1 ; 0x4e1c TextEndBattle + +Route20TrainerHeader2: ; 50d46 (14:4d46) + db $2 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e7 ; flag's byte + dw Route20BattleText2 ; 0x4e26 TextBeforeBattle + dw Route20AfterBattleText2 ; 0x4e30 TextAfterBattle + dw Route20EndBattleText2 ; 0x4e2b TextEndBattle + dw Route20EndBattleText2 ; 0x4e2b TextEndBattle + +Route20TrainerHeader3: ; 50d52 (14:4d52) + db $3 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7e7 ; flag's byte + dw Route20BattleText3 ; 0x4e35 TextBeforeBattle + dw Route20AfterBattleText3 ; 0x4e3f TextAfterBattle + dw Route20EndBattleText3 ; 0x4e3a TextEndBattle + dw Route20EndBattleText3 ; 0x4e3a TextEndBattle + +Route20TrainerHeader4: ; 50d5e (14:4d5e) + db $4 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e7 ; flag's byte + dw Route20BattleText4 ; 0x4e44 TextBeforeBattle + dw Route20AfterBattleText4 ; 0x4e4e TextAfterBattle + dw Route20EndBattleText4 ; 0x4e49 TextEndBattle + dw Route20EndBattleText4 ; 0x4e49 TextEndBattle + +Route20TrainerHeader5: ; 50d6a (14:4d6a) + db $5 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7e7 ; flag's byte + dw Route20BattleText5 ; 0x4e53 TextBeforeBattle + dw Route20AfterBattleText5 ; 0x4e5d TextAfterBattle + dw Route20EndBattleText5 ; 0x4e58 TextEndBattle + dw Route20EndBattleText5 ; 0x4e58 TextEndBattle + +Route20TrainerHeader6: ; 50d76 (14:4d76) + db $6 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e7 ; flag's byte + dw Route20BattleText6 ; 0x4e62 TextBeforeBattle + dw Route20AfterBattleText6 ; 0x4e6c TextAfterBattle + dw Route20EndBattleText6 ; 0x4e67 TextEndBattle + dw Route20EndBattleText6 ; 0x4e67 TextEndBattle + +Route20TrainerHeader7: ; 50d82 (14:4d82) + db $7 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7e7 ; flag's byte + dw Route20BattleText7 ; 0x4e71 TextBeforeBattle + dw Route20AfterBattleText7 ; 0x4e7b TextAfterBattle + dw Route20EndBattleText7 ; 0x4e76 TextEndBattle + dw Route20EndBattleText7 ; 0x4e76 TextEndBattle + +Route20TrainerHeader8: ; 50d8e (14:4d8e) + db $8 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e7 ; flag's byte + dw Route20BattleText8 ; 0x4e80 TextBeforeBattle + dw Route20AfterBattleText8 ; 0x4e8a TextAfterBattle + dw Route20EndBattleText8 ; 0x4e85 TextEndBattle + dw Route20EndBattleText8 ; 0x4e85 TextEndBattle + +Route20TrainerHeader9: ; 50d9a (14:4d9a) + db $9 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7e7 ; flag's byte + dw Route20BattleText9 ; 0x4e8f TextBeforeBattle + dw Route20AfterBattleText9 ; 0x4e99 TextAfterBattle + dw Route20EndBattleText9 ; 0x4e94 TextEndBattle + dw Route20EndBattleText9 ; 0x4e94 TextEndBattle + +Route20TrainerHeader10: ; 50da6 (14:4da6) + db $a ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e7 ; flag's byte + dw Route20BattleText10 ; 0x4e9e TextBeforeBattle + dw Route20AfterBattleText10 ; 0x4ea8 TextAfterBattle + dw Route20EndBattleText10 ; 0x4ea3 TextEndBattle + dw Route20EndBattleText10 ; 0x4ea3 TextEndBattle + + db $ff + +Route20Text1: ; 50db3 (14:4db3) + db $08 ; asm + ld hl, Route20TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +Route20Text2: ; 50dbd (14:4dbd) + db $08 ; asm + ld hl, Route20TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +Route20Text3: ; 50dc7 (14:4dc7) + db $08 ; asm + ld hl, Route20TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +Route20Text4: ; 50dd1 (14:4dd1) + db $08 ; asm + ld hl, Route20TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +Route20Text5: ; 50ddb (14:4ddb) + db $08 ; asm + ld hl, Route20TrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +Route20Text6: ; 50de5 (14:4de5) + db $08 ; asm + ld hl, Route20TrainerHeader6 + call TalkToTrainer + jp TextScriptEnd + +Route20Text7: ; 50def (14:4def) + db $08 ; asm + ld hl, Route20TrainerHeader7 + call TalkToTrainer + jp TextScriptEnd + +Route20Text8: ; 50df9 (14:4df9) + db $08 ; asm + ld hl, Route20TrainerHeader8 + call TalkToTrainer + jp TextScriptEnd + +Route20Text9: ; 50e03 (14:4e03) + db $08 ; asm + ld hl, Route20TrainerHeader9 + call TalkToTrainer + jp TextScriptEnd + +Route20Text10: ; 50e0d (14:4e0d) + db $08 ; asm + ld hl, Route20TrainerHeader10 + call TalkToTrainer + jp TextScriptEnd + +Route20BattleText1: ; 50e17 (14:4e17) + TX_FAR _Route20BattleText1 + db "@" + +Route20EndBattleText1: ; 50e1c (14:4e1c) + TX_FAR _Route20EndBattleText1 + db "@" + +Route20AfterBattleText1: ; 50e21 (14:4e21) + TX_FAR _Route20AfterBattleText1 + db "@" + +Route20BattleText2: ; 50e26 (14:4e26) + TX_FAR _Route20BattleText2 + db "@" + +Route20EndBattleText2: ; 50e2b (14:4e2b) + TX_FAR _Route20EndBattleText2 + db "@" + +Route20AfterBattleText2: ; 50e30 (14:4e30) + TX_FAR _Route20AfterBattleText2 + db "@" + +Route20BattleText3: ; 50e35 (14:4e35) + TX_FAR _Route20BattleText3 + db "@" + +Route20EndBattleText3: ; 50e3a (14:4e3a) + TX_FAR _Route20EndBattleText3 + db "@" + +Route20AfterBattleText3: ; 50e3f (14:4e3f) + TX_FAR _Route20AfterBattleText3 + db "@" + +Route20BattleText4: ; 50e44 (14:4e44) + TX_FAR _Route20BattleText4 + db "@" + +Route20EndBattleText4: ; 50e49 (14:4e49) + TX_FAR _Route20EndBattleText4 + db "@" + +Route20AfterBattleText4: ; 50e4e (14:4e4e) + TX_FAR _Route20AfterBattleText4 + db "@" + +Route20BattleText5: ; 50e53 (14:4e53) + TX_FAR _Route20BattleText5 + db "@" + +Route20EndBattleText5: ; 50e58 (14:4e58) + TX_FAR _Route20EndBattleText5 + db "@" + +Route20AfterBattleText5: ; 50e5d (14:4e5d) + TX_FAR _Route20AfterBattleText5 + db "@" + +Route20BattleText6: ; 50e62 (14:4e62) + TX_FAR _Route20BattleText6 + db "@" + +Route20EndBattleText6: ; 50e67 (14:4e67) + TX_FAR _Route20EndBattleText6 + db "@" + +Route20AfterBattleText6: ; 50e6c (14:4e6c) + TX_FAR _Route20AfterBattleText6 + db "@" + +Route20BattleText7: ; 50e71 (14:4e71) + TX_FAR _Route20BattleText7 + db "@" + +Route20EndBattleText7: ; 50e76 (14:4e76) + TX_FAR _Route20EndBattleText7 + db "@" + +Route20AfterBattleText7: ; 50e7b (14:4e7b) + TX_FAR _Route20AfterBattleText7 + db "@" + +Route20BattleText8: ; 50e80 (14:4e80) + TX_FAR _Route20BattleText8 + db "@" + +Route20EndBattleText8: ; 50e85 (14:4e85) + TX_FAR _Route20EndBattleText8 + db "@" + +Route20AfterBattleText8: ; 50e8a (14:4e8a) + TX_FAR _Route20AfterBattleText8 + db "@" + +Route20BattleText9: ; 50e8f (14:4e8f) + TX_FAR _Route20BattleText9 + db "@" + +Route20EndBattleText9: ; 50e94 (14:4e94) + TX_FAR _Route20EndBattleText9 + db "@" + +Route20AfterBattleText9: ; 50e99 (14:4e99) + TX_FAR _Route20AfterBattleText9 + db "@" + +Route20BattleText10: ; 50e9e (14:4e9e) + TX_FAR _Route20BattleText10 + db "@" + +Route20EndBattleText10: ; 50ea3 (14:4ea3) + TX_FAR _Route20EndBattleText10 + db "@" + +Route20AfterBattleText10: ; 50ea8 (14:4ea8) + TX_FAR _Route20AfterBattleText10 + db "@" + +Route20Text12: ; 50ead (14:4ead) +Route20Text11: ; 50ead (14:4ead) + TX_FAR _Route20Text11 + db "@" diff --git a/scripts/route21.asm b/scripts/route21.asm new file mode 100755 index 00000000..2332d2c8 --- /dev/null +++ b/scripts/route21.asm @@ -0,0 +1,270 @@ +Route21Script: ; 55eeb (15:5eeb) + call EnableAutoTextBoxDrawing + ld hl, Route21TrainerHeaders + ld de, Route21ScriptPointers + ld a, [W_ROUTE21CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROUTE21CURSCRIPT], a + ret + +Route21ScriptPointers: ; 55efe (15:5efe) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +Route21TextPointers: ; 55f04 (15:5f04) + dw Route21Text1 + dw Route21Text2 + dw Route21Text3 + dw Route21Text4 + dw Route21Text5 + dw Route21Text6 + dw Route21Text7 + dw Route21Text8 + dw Route21Text9 + +Route21TrainerHeaders: ; 55f16 (15:5f16) +Route21TrainerHeader0: ; 55f16 (15:5f16) + db $1 ; flag's bit + db ($0 << 4) ; trainer's view range + dw $d7e9 ; flag's byte + dw Route21BattleText1 ; 0x5fdd TextBeforeBattle + dw Route21AfterBattleText1 ; 0x5fe7 TextAfterBattle + dw Route21EndBattleText1 ; 0x5fe2 TextEndBattle + dw Route21EndBattleText1 ; 0x5fe2 TextEndBattle + +Route21TrainerHeader1: ; 55f22 (15:5f22) + db $2 ; flag's bit + db ($0 << 4) ; trainer's view range + dw $d7e9 ; flag's byte + dw Route21BattleText2 ; 0x5fec TextBeforeBattle + dw Route21AfterBattleText2 ; 0x5ff6 TextAfterBattle + dw Route21EndBattleText2 ; 0x5ff1 TextEndBattle + dw Route21EndBattleText2 ; 0x5ff1 TextEndBattle + +Route21TrainerHeader2: ; 55f2e (15:5f2e) + db $3 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e9 ; flag's byte + dw Route21BattleText3 ; 0x5ffb TextBeforeBattle + dw Route21AfterBattleText3 ; 0x6005 TextAfterBattle + dw Route21EndBattleText3 ; 0x6000 TextEndBattle + dw Route21EndBattleText3 ; 0x6000 TextEndBattle + +Route21TrainerHeader3: ; 55f3a (15:5f3a) + db $4 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e9 ; flag's byte + dw Route21BattleText4 ; 0x600a TextBeforeBattle + dw Route21AfterBattleText4 ; 0x6014 TextAfterBattle + dw Route21EndBattleText4 ; 0x600f TextEndBattle + dw Route21EndBattleText4 ; 0x600f TextEndBattle + +Route21TrainerHeader4: ; 55f46 (15:5f46) + db $5 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e9 ; flag's byte + dw Route21BattleText5 ; 0x6019 TextBeforeBattle + dw Route21AfterBattleText5 ; 0x6023 TextAfterBattle + dw Route21EndBattleText5 ; 0x601e TextEndBattle + dw Route21EndBattleText5 ; 0x601e TextEndBattle + +Route21TrainerHeader5: ; 55f52 (15:5f52) + db $6 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7e9 ; flag's byte + dw Route21BattleText6 ; 0x6028 TextBeforeBattle + dw Route21AfterBattleText6 ; 0x6032 TextAfterBattle + dw Route21EndBattleText6 ; 0x602d TextEndBattle + dw Route21EndBattleText6 ; 0x602d TextEndBattle + +Route21TrainerHeader6: ; 55f5e (15:5f5e) + db $7 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7e9 ; flag's byte + dw Route21BattleText7 ; 0x6037 TextBeforeBattle + dw Route21AfterBattleText7 ; 0x6041 TextAfterBattle + dw Route21EndBattleText7 ; 0x603c TextEndBattle + dw Route21EndBattleText7 ; 0x603c TextEndBattle + +Route21TrainerHeader7: ; 55f6a (15:5f6a) + db $8 ; flag's bit + db ($0 << 4) ; trainer's view range + dw $d7e9 ; flag's byte + dw Route21BattleText8 ; 0x6046 TextBeforeBattle + dw Route21AfterBattleText8 ; 0x6050 TextAfterBattle + dw Route21EndBattleText8 ; 0x604b TextEndBattle + dw Route21EndBattleText8 ; 0x604b TextEndBattle + +Route21TrainerHeader8: ; 55f76 (15:5f76) + db $9 ; flag's bit + db ($0 << 4) ; trainer's view range + dw $d7e9 ; flag's byte + dw Route21BattleText9 ; 0x6055 TextBeforeBattle + dw Route21AfterBattleText9 ; 0x605f TextAfterBattle + dw Route21EndBattleText9 ; 0x605a TextEndBattle + dw Route21EndBattleText9 ; 0x605a TextEndBattle + + db $ff + +Route21Text1: ; 55f83 (15:5f83) + db $08 ; asm + ld hl, Route21TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +Route21Text2: ; 55f8d (15:5f8d) + db $08 ; asm + ld hl, Route21TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +Route21Text3: ; 55f97 (15:5f97) + db $08 ; asm + ld hl, Route21TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +Route21Text4: ; 55fa1 (15:5fa1) + db $08 ; asm + ld hl, Route21TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +Route21Text5: ; 55fab (15:5fab) + db $08 ; asm + ld hl, Route21TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +Route21Text6: ; 55fb5 (15:5fb5) + db $08 ; asm + ld hl, Route21TrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +Route21Text7: ; 55fbf (15:5fbf) + db $08 ; asm + ld hl, Route21TrainerHeader6 + call TalkToTrainer + jp TextScriptEnd + +Route21Text8: ; 55fc9 (15:5fc9) + db $08 ; asm + ld hl, Route21TrainerHeader7 + call TalkToTrainer + jp TextScriptEnd + +Route21Text9: ; 55fd3 (15:5fd3) + db $08 ; asm + ld hl, Route21TrainerHeader8 + call TalkToTrainer + jp TextScriptEnd + +Route21BattleText1: ; 55fdd (15:5fdd) + TX_FAR _Route21BattleText1 + db "@" + +Route21EndBattleText1: ; 55fe2 (15:5fe2) + TX_FAR _Route21EndBattleText1 + db "@" + +Route21AfterBattleText1: ; 55fe7 (15:5fe7) + TX_FAR _Route21AfterBattleText1 + db "@" + +Route21BattleText2: ; 55fec (15:5fec) + TX_FAR _Route21BattleText2 + db "@" + +Route21EndBattleText2: ; 55ff1 (15:5ff1) + TX_FAR _Route21EndBattleText2 + db "@" + +Route21AfterBattleText2: ; 55ff6 (15:5ff6) + TX_FAR _Route21AfterBattleText2 + db "@" + +Route21BattleText3: ; 55ffb (15:5ffb) + TX_FAR _Route21BattleText3 + db "@" + +Route21EndBattleText3: ; 56000 (15:6000) + TX_FAR _Route21EndBattleText3 + db "@" + +Route21AfterBattleText3: ; 56005 (15:6005) + TX_FAR _Route21AfterBattleText3 + db "@" + +Route21BattleText4: ; 5600a (15:600a) + TX_FAR _Route21BattleText4 + db "@" + +Route21EndBattleText4: ; 5600f (15:600f) + TX_FAR _Route21EndBattleText4 + db "@" + +Route21AfterBattleText4: ; 56014 (15:6014) + TX_FAR _Route21AfterBattleText4 + db "@" + +Route21BattleText5: ; 56019 (15:6019) + TX_FAR _Route21BattleText5 + db "@" + +Route21EndBattleText5: ; 5601e (15:601e) + TX_FAR _Route21EndBattleText5 + db "@" + +Route21AfterBattleText5: ; 56023 (15:6023) + TX_FAR _Route21AfterBattleText5 + db "@" + +Route21BattleText6: ; 56028 (15:6028) + TX_FAR _Route21BattleText6 + db "@" + +Route21EndBattleText6: ; 5602d (15:602d) + TX_FAR _Route21EndBattleText6 + db "@" + +Route21AfterBattleText6: ; 56032 (15:6032) + TX_FAR _Route21AfterBattleText6 + db "@" + +Route21BattleText7: ; 56037 (15:6037) + TX_FAR _Route21BattleText7 + db "@" + +Route21EndBattleText7: ; 5603c (15:603c) + TX_FAR _Route21EndBattleText7 + db "@" + +Route21AfterBattleText7: ; 56041 (15:6041) + TX_FAR _Route21AfterBattleText7 + db "@" + +Route21BattleText8: ; 56046 (15:6046) + TX_FAR _Route21BattleText8 + db "@" + +Route21EndBattleText8: ; 5604b (15:604b) + TX_FAR _Route21EndBattleText8 + db "@" + +Route21AfterBattleText8: ; 56050 (15:6050) + TX_FAR _Route21AfterBattleText8 + db "@" + +Route21BattleText9: ; 56055 (15:6055) + TX_FAR _Route21BattleText9 + db "@" + +Route21EndBattleText9: ; 5605a (15:605a) + TX_FAR _Route21EndBattleText9 + db "@" + +Route21AfterBattleText9: ; 5605f (15:605f) + TX_FAR _Route21AfterBattleText9 + db "@" diff --git a/scripts/route22.asm b/scripts/route22.asm new file mode 100755 index 00000000..b9801600 --- /dev/null +++ b/scripts/route22.asm @@ -0,0 +1,440 @@ +Route22Script: ; 50eb2 (14:4eb2) + call EnableAutoTextBoxDrawing + ld hl, Route22ScriptPointers + ld a, [W_ROUTE22CURSCRIPT] + jp CallFunctionInTable + +Route22ScriptPointers: ; 50ebe (14:4ebe) + dw Route22Script0 + dw Route22Script1 + dw Route22Script2 + dw Route22Script3 + dw Route22Script4 + dw Route22Script5 + dw Route22Script6 + dw Route22Script7 + +Route22Script_50ece: ; 50ece (14:4ece) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_ROUTE22CURSCRIPT], a +Route22Script7: ; 50ed5 (14:4ed5) + ret + +Route22Script_50ed6: ; 50ed6 (14:4ed6) + ld a, [W_RIVALSTARTER] ; $d715 + ld b, a +.asm_50eda + ld a, [hli] + cp b + jr z, .asm_50ee1 + inc hl + jr .asm_50eda +.asm_50ee1 + ld a, [hl] + ld [W_TRAINERNO], a ; $d05d + ret + +Route22Script_50ee6: ; 50ee6 (14:4ee6) + ld de, MovementData_50efb ; $4efb + ld a, [$cf0d] + cp $1 + jr z, .asm_50ef1 + inc de +.asm_50ef1 + call MoveSprite + ld a, $c + ld [$ff8d], a + jp Func_34a6 + +MovementData_50efb: ; 50efb (14:4efb) + db $C0,$C0,$C0,$C0,$FF + +Route22Script0: ; 50f00 (14:4f00) + ld a, [$d7eb] + bit 7, a + ret z + ld hl, .CoordsData_50f2d ; $4f2d + call ArePlayerCoordsInArray + ret nc + ld a, [$cd3d] + ld [$cf0d], a + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld a, $2 + ld [$d528], a + ld a, [$d7eb] + bit 0, a + jr nz, .asm_50f32 ; 0x50f25 $b + bit 1, a + jp nz, Route22Script_5104e + ret + +.CoordsData_50f2d + db $04, $1D + db $05, $1D + db $FF + +.asm_50f32 + ld a, $1 + ld [$cd4f], a + xor a + ld [$cd50], a + ld a, $4c + call Predef + ld a, [$d700] + and a + jr z, .asm_50f4e ; 0x50f44 $8 + ld a, $ff + ld [$c0ee], a + call PlaySound +.asm_50f4e + ld c, BANK(Music_MeetRival) + ld a, MUSIC_MEET_RIVAL + call PlayMusic + ld a, $1 + ld [$ff8c], a + call Route22Script_50ee6 + ld a, $1 + ld [W_ROUTE22CURSCRIPT], a + ret + +Route22Script1: ; 50f62 (14:4f62) + ld a, [$d730] + bit 0, a + ret nz + ld a, [$cf0d] + cp $1 + jr nz, .asm_50f78 ; 0x50f6d $9 + ld a, $4 + ld [$d528], a + ld a, $4 + jr .asm_50f7a ; 0x50f76 $2 +.asm_50f78 + ld a, $c +.asm_50f7a + ld [$ff8d], a + ld a, $1 + ld [$ff8c], a + call Func_34a6 + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $1 + ld [$ff8c], a + call DisplayTextID + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, Route22Text_511b7 + ld de, Route22Text_511bc + call PreBattleSaveRegisters + ld a, SONY1 + $c8 + ld [W_CUROPPONENT], a + ld hl, StarterMons_50faf ; $4faf + call Route22Script_50ed6 + ld a, $2 + ld [W_ROUTE22CURSCRIPT], a + ret + +StarterMons_50faf: ; 50faf (14:4faf) + db SQUIRTLE,$04 + db BULBASAUR,$05 + db CHARMANDER,$06 + +Route22Script2: ; 50fb5 (14:4fb5) + ld a, [$d057] + cp $ff + jp z, Route22Script_50ece + ld a, [$c109] + and a + jr nz, .asm_50fc7 ; 0x50fc1 $4 + ld a, $4 + jr .asm_50fc9 ; 0x50fc5 $2 +.asm_50fc7 + ld a, $c +.asm_50fc9 + ld [$ff8d], a + ld a, $1 + ld [$ff8c], a + call Func_34a6 + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld hl, $d7eb + set 5, [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, [$cf0d] + cp $1 + jr nz, .asm_50fff ; 0x50ff8 $5 + call Route22Script_51008 + jr .asm_51002 ; 0x50ffd $3 +.asm_50fff + call Route22Script_5100d +.asm_51002 + ld a, $3 + ld [W_ROUTE22CURSCRIPT], a + ret + +Route22Script_51008: ; 51008 (14:5008) + ld de, MovementData_51017 ; $5017 + jr asm_51010 + +Route22Script_5100d: ; 5100d (14:500d) + ld de, MovementData_5101f ; $501f +asm_51010 + ld a, $1 + ld [H_SPRITEHEIGHT], a + jp MoveSprite + +MovementData_51017: ; 51017 (14:5017) + db $C0,$C0,$00,$00,$00,$00,$00,$FF + +MovementData_5101f: ; 5101f (14:501f) + db $40,$C0,$C0,$C0,$00,$00,$00,$00,$00,$00,$FF + +Route22Script3: ; 5102a (14:502a) + ld a, [$d730] + bit 0, a + ret nz + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $22 + ld [$cc4d], a + ld a, $11 + call Predef + call Func_2307 + ld hl, $d7eb + res 0, [hl] + res 7, [hl] + ld a, $0 + ld [W_ROUTE22CURSCRIPT], a + ret + +Route22Script_5104e: ; 5104e (14:504e) + ld a, $2 + ld [$cd4f], a + xor a + ld [$cd50], a + ld a, $4c + call Predef ; indirect jump to PrintEmotionBubble (17c47 (5:7c47)) + ld a, [$d700] + and a + jr z, .skipYVisibilityTesta + ld a, $ff + ld [$c0ee], a + call PlaySound +.skipYVisibilityTesta + ld a, $ff + ld [$c0ee], a + call PlaySound + ld b, BANK(Music_RivalAlternateTempo) + ld hl, Music_RivalAlternateTempo + call Bankswitch + ld a, $2 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call Route22Script_50ee6 + ld a, $4 + ld [W_ROUTE22CURSCRIPT], a + ret + +Route22Script4: ; 51087 (14:5087) + ld a, [$d730] + bit 0, a + ret nz + ld a, $2 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + ld a, [$cf0d] + cp $1 + jr nz, .asm_510a1 + ld a, $4 + ld [$d528], a + ld a, $4 + jr .asm_510a8 +.asm_510a1 + ld a, $2 + ld [$d528], a + ld a, $c +.asm_510a8 + ld [$ff8d], a + call Func_34a6 + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $2 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, Route22Text_511cb ; $51cb + ld de, Route22Text_511d0 ; $51d0 + call PreBattleSaveRegisters + ld a, SONY2 + $c8 + ld [W_CUROPPONENT], a ; $d059 + ld hl, StarterMons_510d9 ; $50d9 + call Route22Script_50ed6 + ld a, $5 + ld [W_ROUTE22CURSCRIPT], a + ret + +StarterMons_510d9: ; 510d9 (14:50d9) + db SQUIRTLE,$0a + db BULBASAUR,$0b + db CHARMANDER,$0c + +Route22Script5: ; 510df (14:50df) + ld a, [W_ISINBATTLE] ; $d057 + cp $ff + jp z, Route22Script_50ece + ld a, $2 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + ld a, [$cf0d] + cp $1 + jr nz, .asm_510fb + ld a, $4 + ld [$d528], a + ld a, $4 + jr .asm_51102 +.asm_510fb + ld a, $2 + ld [$d528], a + ld a, $c +.asm_51102 + ld [$ff8d], a + call Func_34a6 + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld hl, $d7eb + set 6, [hl] + ld a, $2 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld a, $ff + ld [$c0ee], a + call PlaySound + ld b, BANK(Music_RivalAlternateStartAndTempo) + ld hl, Music_RivalAlternateStartAndTempo + call Bankswitch + ld a, [$cf0d] + cp $1 + jr nz, .asm_51134 + call Route22Script_5113d + jr .asm_51137 +.asm_51134 + call Route22Script_51142 +.asm_51137 + ld a, $6 + ld [W_ROUTE22CURSCRIPT], a + ret + +Route22Script_5113d: ; 5113d (14:513d) + ld de, MovementData_5114c ; $514c + jr asm_51145 + +Route22Script_51142: ; 51142 (14:5142) + ld de, MovementData_5114d ; $514d +asm_51145: ; 51145 (14:5145) + ld a, $2 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + jp MoveSprite + +MovementData_5114c: ; 5114c (14:514c) + db $80 + +MovementData_5114d: ; 5114d (14:514d) + db $80,$80,$80,$FF + +Route22Script6: ; 51151 (14:5151) + ld a, [$d730] + bit 0, a + ret nz + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $23 + ld [$cc4d], a + ld a, $11 + call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) + call Func_2307 + ld hl, $d7eb + res 1, [hl] + res 7, [hl] + ld a, $7 + ld [W_ROUTE22CURSCRIPT], a + ret + +Route22TextPointers: ; 51175 (14:5175) + dw Route22Text1 + dw Route22Text2 + dw Route22Text3 + +Route22Text1: ; 5117b (14:517b) + db $08 ; asm + ld a, [$d7eb] + bit 5, a + jr z, .asm_a88cf ; 0x51181 + ld hl, Route22Text_511b2 + call PrintText + jr .asm_48088 ; 0x51189 +.asm_a88cf ; 0x5118b + ld hl, Route22Text_511ad + call PrintText +.asm_48088 ; 0x51191 + jp TextScriptEnd + +Route22Text2: ; 51194 (14:5194) + db $08 ; asm + ld a, [$d7eb] + bit 6, a + jr z, .asm_58c0a ; 0x5119a + ld hl, Route22Text_511c6 + call PrintText + jr .asm_673ee ; 0x511a2 +.asm_58c0a ; 0x511a4 + ld hl, Route22Text_511c1 + call PrintText +.asm_673ee ; 0x511aa + jp TextScriptEnd + +Route22Text_511ad: ; 511ad (14:51ad) + TX_FAR _Route22Text_511ad + db "@" + +Route22Text_511b2: ; 511b2 (14:51b2) + TX_FAR _Route22Text_511b2 + db "@" + +Route22Text_511b7: ; 511b7 (14:51b7) + TX_FAR _Route22Text_511b7 + db "@" + +Route22Text_511bc: ; 511bc (14:51bc) + TX_FAR _Route22Text_511bc + db "@" + +Route22Text_511c1: ; 511c1 (14:51c1) + TX_FAR _Route22Text_511c1 + db "@" + +Route22Text_511c6: ; 511c6 (14:51c6) + TX_FAR _Route22Text_511c6 + db "@" + +Route22Text_511cb: ; 511cb (14:51cb) + TX_FAR _Route22Text_511cb + db "@" + +Route22Text_511d0: ; 511d0 (14:51d0) + TX_FAR _Route22Text_511d0 + db "@" + +Route22Text3: ; 511d5 (14:51d5) + TX_FAR _Route22Text3 + db "@" diff --git a/scripts/route22gate.asm b/scripts/route22gate.asm new file mode 100755 index 00000000..4ce9e1d8 --- /dev/null +++ b/scripts/route22gate.asm @@ -0,0 +1,92 @@ +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 + +Route22GateScriptPointers: ; 1e69e (7:669e) + dw Route22GateScript0 + dw Route22GateScript1 + dw Route22GateScript2 + +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 + +Route22GateScriptCoords: ; 1e6b5 (7:66b5) + db 2,4 + db 2,5 + db $ff + +Route22GateScript_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 + +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 + +Route22GateTextPointers: ; 1e6df (7:66df) + dw Route22GateText1 + +Route22GateText1: ; 1e6e1 (7:66e1) + db $8 + ld a, [W_OBTAINEDBADGES] + bit 0, a + jr nz, .asm_8a809 ; 0x1e6e7 $d + ld hl, Route22GateText_1e704 + call PrintText + call Route22GateScript_1e6ba + ld a, $1 + jr .asm_20f7e ; 0x1e6f4 $8 +.asm_8a809 ; 0x1e6f6 + ld hl, Route22GateText_1e71a + call PrintText + ld a, $2 +.asm_20f7e ; 0x1e6fe + ld [W_ROUTE22GATECURSCRIPT], a + jp TextScriptEnd + +Route22GateText_1e704: ; 1e704 (7:6704) + TX_FAR _Route22GateText_1e704 ; 0x8cfbb + db $8 + ld a, (SFX_02_51 - SFX_Headers_02) / 3 + call PlaySoundWaitForCurrent + call WaitForSoundToFinish + ld hl, Route22GateText_1e715 ; $6715 + ret + +Route22GateText_1e715: ; 1e715 (7:6715) + TX_FAR _Route22GateText_1e715 + db "@" + +Route22GateText_1e71a: ; 1e71a (7:671a) + TX_FAR _Route22GateText_1e71a ; 0x8d03e + db $0B, "@" diff --git a/scripts/route23.asm b/scripts/route23.asm new file mode 100755 index 00000000..aca5efb7 --- /dev/null +++ b/scripts/route23.asm @@ -0,0 +1,245 @@ +Route23Script: ; 511da (14:51da) + call Route23Script_511e9 + call EnableAutoTextBoxDrawing + ld hl, Route23ScriptPointers + ld a, [W_ROUTE23CURSCRIPT] + jp CallFunctionInTable + +Route23Script_511e9: ; 511e9 (14:51e9) + ld hl, $d126 + bit 6, [hl] + res 6, [hl] + ret z + ld hl, $d7ee + res 0, [hl] + res 7, [hl] + ld hl, $d813 + res 0, [hl] + res 6, [hl] + ld a, $7a + ld [$cc4d], a + ld a, $15 + call Predef ; indirect jump to AddMissableObject (f1c8 (3:71c8)) + ld a, $60 + ld [$cc4d], a + ld a, $11 + jp Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) + +Route23ScriptPointers: ; 51213 (14:5213) + dw Route23Script0 + dw Route23Script1 + dw Route23Script2 + +Route23Script0: ; 51219 (14:5219) + ld hl, YCoordsData_51255 ; $5255 + ld a, [W_YCOORD] + ld b, a + ld e, $0 + ld c, $7 +.asm_51224 + ld a, [hli] + cp $ff + ret z + inc e + dec c + cp b + jr nz, .asm_51224 ; 0x5122b $f7 + cp $23 + jr nz, .asm_51237 ; 0x5122f $6 + ld a, [W_XCOORD] + cp $e + ret nc +.asm_51237 + ld a, e + ld [$ff8c], a + ld a, c + ld [$cd3d], a + ld b, $2 + ld hl, $d7ed + ld a, $10 + call Predef + ld a, c + and a + ret nz + call Route23Script_5125d + call DisplayTextID + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ret + +YCoordsData_51255: ; 51255 (14:5255) + db $23,$38,$55,$60,$69,$77,$88,$FF + +Route23Script_5125d: ; 5125d (14:525d) + ld hl, BadgeTextPointers ; $5276 + ld a, [wWhichTrade] ; $cd3d + ld c, a + ld b, $0 + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld de, $cd6d +.asm_5126e + ld a, [hli] + ld [de], a + inc de + cp $50 + jr nz, .asm_5126e + ret + +BadgeTextPointers: ; 51276 (14:5276) + dw CascadeBadgeText + dw ThunderBadgeText + dw RainbowBadgeText + dw SoulBadgeText + dw MarshBadgeText + dw VolcanoBadgeText + dw EarthBadgeText + +EarthBadgeText: ; 51284 (14:5284) + db "EARTHBADGE@" + +VolcanoBadgeText: ; 5128f (14:528f) + db "VOLCANOBADGE@" + +MarshBadgeText: ; 5129c (14:529c) + db "MARSHBADGE@" + +SoulBadgeText: ; 512a7 (14:52a7) + db "SOULBADGE@" + +RainbowBadgeText: ; 512b1 (14:52b1) + db "RAINBOWBADGE@" + +ThunderBadgeText: ; 512be (14:52be) + db "THUNDERBADGE@" + +CascadeBadgeText: ; 512cb (14:52cb) + db "CASCADEBADGE@" + +Route23Script_512d8: ; 512d8 (14:52d8) + ld a, $1 + ld [$cd38], a + ld a, $80 + ld [$ccd3], a + xor a + ld [$c109], a + ld [wJoypadForbiddenButtonsMask], a + jp Func_3486 + +Route23Script1: ; 512ec (14:52ec) + ld a, [$cd38] + and a + ret nz +Route23Script2: ; 512f1 (14:52f1) + ld a, $0 + ld [W_ROUTE23CURSCRIPT], a + ret + +Route23TextPointers: ; 512f7 (14:52f7) + dw Route23Text1 + dw Route23Text2 + dw Route23Text3 + dw Route23Text4 + dw Route23Text5 + dw Route23Text6 + dw Route23Text7 + dw Route23Text8 + +Route23Text1: ; 51307 (14:5307) + db $08 ; asm + ld a, $6 + call Route23Script_51346 + jp TextScriptEnd + +Route23Text2: ; 51310 (14:5310) + db $08 ; asm + ld a, $5 + call Route23Script_51346 + jp TextScriptEnd + +Route23Text3: ; 51319 (14:5319) + db $08 ; asm + ld a, $4 + call Route23Script_51346 + jp TextScriptEnd + +Route23Text4: ; 51322 (14:5322) + db $08 ; asm + ld a, $3 + call Route23Script_51346 + jp TextScriptEnd + +Route23Text5: ; 5132b (14:532b) + db $08 ; asm + ld a, $2 + call Route23Script_51346 + jp TextScriptEnd + +Route23Text6: ; 51334 (14:5334) + db $08 ; asm + ld a, $1 + call Route23Script_51346 + jp TextScriptEnd + +Route23Text7: ; 5133d (14:533d) + db $8 + ld a, $0 + call Route23Script_51346 + jp TextScriptEnd + +Route23Script_51346: ; 51346 (14:5346) + ld [wWhichTrade], a ; $cd3d + call Route23Script_5125d + ld a, [wWhichTrade] ; $cd3d + inc a + ld c, a + ld b, $2 + ld hl, W_OBTAINEDBADGES + ld a, $10 + call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) + ld a, c + and a + jr nz, .asm_5136e + ld hl, VictoryRoadGuardText1 + call PrintText + call Route23Script_512d8 + ld a, $1 + ld [W_ROUTE23CURSCRIPT], a + ret +.asm_5136e + ld hl, VictoryRoadGuardText2 + call PrintText + ld a, [wWhichTrade] ; $cd3d + ld c, a + ld b, $1 + ld hl, $d7ed + ld a, $10 + call Predef ; indirect jump to HandleBitArray (f666 (3:7666)) + ld a, $2 + ld [W_ROUTE23CURSCRIPT], a + ret + +Route23Script_51388: ; 51388 (14:5388) + ld hl, VictoryRoadGuardText2 + jp PrintText + +VictoryRoadGuardText1: ; 5138e (14:538e) + TX_FAR _VictoryRoadGuardText1 + db $08 ; asm + ld a, (SFX_02_51 - SFX_Headers_02) / 3 + call PlaySoundWaitForCurrent + call WaitForSoundToFinish + jp TextScriptEnd + +VictoryRoadGuardText2: ; 5139e (14:539e) + TX_FAR _VictoryRoadGuardText2 + db $b + TX_FAR _VictoryRoadGuardText_513a3 + db "@" + +Route23Text8: ; 513a8 (14:53a8) + TX_FAR _Route23Text8 + db "@" diff --git a/scripts/route24.asm b/scripts/route24.asm new file mode 100755 index 00000000..0e77c6f7 --- /dev/null +++ b/scripts/route24.asm @@ -0,0 +1,326 @@ +Route24Script: ; 513ad (14:53ad) + call EnableAutoTextBoxDrawing + ld hl, Route24TrainerHeaders + ld de, Route24ScriptPointers + ld a, [W_ROUTE24CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROUTE24CURSCRIPT], a + ret + +Route24Script_513c0: ; 513c0 (14:53c0) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_ROUTE24CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +Route24ScriptPointers: ; 513cb (14:53cb) + dw Route24Script0 + dw Func_324c + dw EndTrainerBattle + dw Route24Script3 + dw Route24Script4 + +Route24Script0: ; 513d5 (14:53d5) + ld a, [$d7ef] + bit 0, a + jp nz, CheckFightingMapTrainers + ld hl, CoordsData_5140e ; $540e + call ArePlayerCoordsInArray + jp nc, CheckFightingMapTrainers + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, $1 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld hl, $d7f0 + bit 1, [hl] + res 1, [hl] + ret z + ld a, $80 + ld [$ccd3], a + ld a, $1 + ld [$cd38], a + call Func_3486 + ld a, $4 + ld [W_ROUTE24CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +CoordsData_5140e: ; 5140e (14:540e) + db $0F,$0A,$FF + +Route24Script4: ; 51411 (14:5411) + ld a, [$cd38] + and a + ret nz + call Delay3 + ld a, $0 + ld [W_ROUTE24CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +Route24Script3: ; 51422 (14:5422) + ld a, [W_ISINBATTLE] ; $d057 + cp $ff + jp z, Route24Script_513c0 + call UpdateSprites + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld hl, $d7ef + set 1, [hl] + ld a, $1 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $0 + ld [W_ROUTE24CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +Route24TextPointers: ; 5144b (14:544b) + dw Route24Text1 + dw Route24Text2 + dw Route24Text3 + dw Route24Text4 + dw Route24Text5 + dw Route24Text6 + dw Route24Text7 + dw Predef5CText + +Route24TrainerHeaders: ; 5145b (14:545b) +Route24TrainerHeader0: ; 5145b (14:545b) + db $2 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7ef ; flag's byte + dw Route24BattleText1 ; 0x5571 TextBeforeBattle + dw Route24AfterBattleText1 ; 0x557b TextAfterBattle + dw Route24EndBattleText1 ; 0x5576 TextEndBattle + dw Route24EndBattleText1 ; 0x5576 TextEndBattle + +Route24TrainerHeader2: ; 51467 (14:5467) + db $3 ; flag's bit + db ($1 << 4) ; trainer's view range + dw $d7ef ; flag's byte + dw Route24BattleText2 ; 0x5580 TextBeforeBattle + dw Route24AfterBattleText2 ; 0x558a TextAfterBattle + dw Route24EndBattleText2 ; 0x5585 TextEndBattle + dw Route24EndBattleText2 ; 0x5585 TextEndBattle + +Route24TrainerHeader3: ; 51473 (14:5473) + db $4 ; flag's bit + db ($1 << 4) ; trainer's view range + dw $d7ef ; flag's byte + dw Route24BattleText3 ; 0x558f TextBeforeBattle + dw Route24AfterBattleText3 ; 0x5599 TextAfterBattle + dw Route24EndBattleText3 ; 0x5594 TextEndBattle + dw Route24EndBattleText3 ; 0x5594 TextEndBattle + +Route24TrainerHeader4: ; 5147f (14:547f) + db $5 ; flag's bit + db ($1 << 4) ; trainer's view range + dw $d7ef ; flag's byte + dw Route24BattleText4 ; 0x559e TextBeforeBattle + dw Route24AfterBattleText4 ; 0x55a8 TextAfterBattle + dw Route24EndBattleText4 ; 0x55a3 TextEndBattle + dw Route24EndBattleText4 ; 0x55a3 TextEndBattle + +Route24TrainerHeader5: ; 5148b (14:548b) + db $6 ; flag's bit + db ($1 << 4) ; trainer's view range + dw $d7ef ; flag's byte + dw Route24BattleText5 ; 0x55ad TextBeforeBattle + dw Route24AfterBattleText5 ; 0x55b7 TextAfterBattle + dw Route24EndBattleText5 ; 0x55b2 TextEndBattle + dw Route24EndBattleText5 ; 0x55b2 TextEndBattle + +Route24TrainerHeader6: ; 51497 (14:5497) + db $7 ; flag's bit + db ($1 << 4) ; trainer's view range + dw $d7ef ; flag's byte + dw Route24BattleText6 ; 0x55bc TextBeforeBattle + dw Route24AfterBattleText6 ; 0x55c6 TextAfterBattle + dw Route24EndBattleText6 ; 0x55c1 TextEndBattle + dw Route24EndBattleText6 ; 0x55c1 TextEndBattle + + db $ff + +Route24Text1: ; 514a4 (14:54a4) + db $8 + ld hl, $d7f0 + res 1, [hl] + ld a, [$d7ef] + bit 0, a + jr nz, .asm_a03f5 ; 0x514af $48 + ld hl, Route24Text_51510 + call PrintText + ld bc, (NUGGET << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, $d7ef + set 0, [hl] + ld hl, Route24Text_5151a + call PrintText + ld hl, Route24Text_51526 + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, Route24Text_5152b + ld de, Route24Text_5152b + call PreBattleSaveRegisters + ld a, [$ff8c] + ld [$cf13], a + call EngageMapTrainer + call InitBattleEnemyParameters + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, $3 + ld [W_ROUTE24CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + jp TextScriptEnd +.asm_a03f5 ; 0x514f9 + ld hl, Route24Text_51530 + call PrintText + jp TextScriptEnd +.BagFull + ld hl, Route24Text_51521 + call PrintText + ld hl, $d7f0 + set 1, [hl] + jp TextScriptEnd + +Route24Text_51510: ; 51510 (14:5510) + TX_FAR _Route24Text_51510 ; 0x92721 + db $0B + TX_FAR _Route24Text_51515 ; 0x92755 + db "@" + +Route24Text_5151a: ; 5151a (14:551a) + TX_FAR _Route24Text_5151a ; 0x92779 + db $0B, $6, "@" + +Route24Text_51521: ; 51521 (14:5521) + TX_FAR _Route24Text_51521 + db "@" + +Route24Text_51526: ; 51526 (14:5526) + TX_FAR _Route24Text_51526 + db "@" + +Route24Text_5152b: ; 5152b (14:552b) + TX_FAR _Route24Text_5152b + db "@" + +Route24Text_51530: ; 51530 (14:5530) + TX_FAR _Route24Text_51530 + db "@" + +Route24Text2: ; 51535 (14:5535) + db $08 ; asm + ld hl, Route24TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +Route24Text3: ; 5153f (14:553f) + db $08 ; asm + ld hl, Route24TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +Route24Text4: ; 51549 (14:5549) + db $08 ; asm + ld hl, Route24TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +Route24Text5: ; 51553 (14:5553) + db $08 ; asm + ld hl, Route24TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +Route24Text6: ; 5155d (14:555d) + db $08 ; asm + ld hl, Route24TrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +Route24Text7: ; 51567 (14:5567) + db $08 ; asm + ld hl, Route24TrainerHeader6 + call TalkToTrainer + jp TextScriptEnd + +Route24BattleText1: ; 51571 (14:5571) + TX_FAR _Route24BattleText1 + db "@" + +Route24EndBattleText1: ; 51576 (14:5576) + TX_FAR _Route24EndBattleText1 + db "@" + +Route24AfterBattleText1: ; 5157b (14:557b) + TX_FAR _Route24AfterBattleText1 + db "@" + +Route24BattleText2: ; 51580 (14:5580) + TX_FAR _Route24BattleText2 + db "@" + +Route24EndBattleText2: ; 51585 (14:5585) + TX_FAR _Route24EndBattleText2 + db "@" + +Route24AfterBattleText2: ; 5158a (14:558a) + TX_FAR _Route24AfterBattleText2 + db "@" + +Route24BattleText3: ; 5158f (14:558f) + TX_FAR _Route24BattleText3 + db "@" + +Route24EndBattleText3: ; 51594 (14:5594) + TX_FAR _Route24EndBattleText3 + db "@" + +Route24AfterBattleText3: ; 51599 (14:5599) + TX_FAR _Route24AfterBattleText3 + db "@" + +Route24BattleText4: ; 5159e (14:559e) + TX_FAR _Route24BattleText4 + db "@" + +Route24EndBattleText4: ; 515a3 (14:55a3) + TX_FAR _Route24EndBattleText4 + db "@" + +Route24AfterBattleText4: ; 515a8 (14:55a8) + TX_FAR _Route24AfterBattleText4 + db "@" + +Route24BattleText5: ; 515ad (14:55ad) + TX_FAR _Route24BattleText5 + db "@" + +Route24EndBattleText5: ; 515b2 (14:55b2) + TX_FAR _Route24EndBattleText5 + db "@" + +Route24AfterBattleText5: ; 515b7 (14:55b7) + TX_FAR _Route24AfterBattleText5 + db "@" + +Route24BattleText6: ; 515bc (14:55bc) + TX_FAR _Route24BattleText6 + db "@" + +Route24EndBattleText6: ; 515c1 (14:55c1) + TX_FAR _Route24EndBattleText6 + db "@" + +Route24AfterBattleText6: ; 515c6 (14:55c6) + TX_FAR _Route24AfterBattleText6 + db "@" diff --git a/scripts/route25.asm b/scripts/route25.asm new file mode 100755 index 00000000..7c5543c7 --- /dev/null +++ b/scripts/route25.asm @@ -0,0 +1,309 @@ +Route25Script: ; 515cb (14:55cb) + call Route25Script_515e1 + call EnableAutoTextBoxDrawing + ld hl, Route25TrainerHeaders + ld de, Route25ScriptPointers + ld a, [W_ROUTE25CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROUTE25CURSCRIPT], a + ret + +Route25Script_515e1: ; 515e1 (14:55e1) + ld hl, $d126 + bit 6, [hl] + res 6, [hl] + ret z + ld hl, $d7f2 + bit 7, [hl] + ret nz + bit 5, [hl] + jr nz, .asm_515ff + res 6, [hl] + ld a, $61 + ld [$cc4d], a + ld a, $15 + jp Predef ; indirect jump to AddMissableObject (f1c8 (3:71c8)) +.asm_515ff + bit 4, [hl] + ret z + set 7, [hl] + ld a, $24 + ld [$cc4d], a + ld a, $11 + call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) + ld a, $62 + ld [$cc4d], a + ld a, $11 + call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) + ld a, $63 + ld [$cc4d], a + ld a, $15 + jp Predef ; indirect jump to AddMissableObject (f1c8 (3:71c8)) + +Route25ScriptPointers: ; 51622 (14:5622) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +Route25TextPointers: ; 51628 (14:5628) + dw Route25Text1 + dw Route25Text2 + dw Route25Text3 + dw Route25Text4 + dw Route25Text5 + dw Route25Text6 + dw Route25Text7 + dw Route25Text8 + dw Route25Text9 + dw Predef5CText + dw Route25Text11 + +Route25TrainerHeaders: ; 5163e (14:563e) +Route25TrainerHeader0: ; 5163e (14:563e) + db $1 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7f1 ; flag's byte + dw Route25BattleText1 ; 0x5705 TextBeforeBattle + dw Route25AfterBattleText1 ; 0x570f TextAfterBattle + dw Route25EndBattleText1 ; 0x570a TextEndBattle + dw Route25EndBattleText1 ; 0x570a TextEndBattle + +Route25TrainerHeader2: ; 5164a (14:564a) + db $2 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7f1 ; flag's byte + dw Route25BattleText2 ; 0x5714 TextBeforeBattle + dw Route25AfterBattleText2 ; 0x571e TextAfterBattle + dw Route25EndBattleText2 ; 0x5719 TextEndBattle + dw Route25EndBattleText2 ; 0x5719 TextEndBattle + +Route25TrainerHeader3: ; 51656 (14:5656) + db $3 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7f1 ; flag's byte + dw Route25BattleText3 ; 0x5723 TextBeforeBattle + dw Route25AfterBattleText3 ; 0x572d TextAfterBattle + dw Route25EndBattleText3 ; 0x5728 TextEndBattle + dw Route25EndBattleText3 ; 0x5728 TextEndBattle + +Route25TrainerHeader4: ; 51662 (14:5662) + db $4 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7f1 ; flag's byte + dw Route25BattleText4 ; 0x5732 TextBeforeBattle + dw Route25AfterBattleText4 ; 0x573c TextAfterBattle + dw Route25EndBattleText4 ; 0x5737 TextEndBattle + dw Route25EndBattleText4 ; 0x5737 TextEndBattle + +Route25TrainerHeader5: ; 5166e (14:566e) + db $5 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7f1 ; flag's byte + dw Route25BattleText5 ; 0x5741 TextBeforeBattle + dw Route25AfterBattleText5 ; 0x574b TextAfterBattle + dw Route25EndBattleText5 ; 0x5746 TextEndBattle + dw Route25EndBattleText5 ; 0x5746 TextEndBattle + +Route25TrainerHeader6: ; 5167a (14:567a) + db $6 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7f1 ; flag's byte + dw Route25BattleText6 ; 0x5750 TextBeforeBattle + dw Route25AfterBattleText6 ; 0x575a TextAfterBattle + dw Route25EndBattleText6 ; 0x5755 TextEndBattle + dw Route25EndBattleText6 ; 0x5755 TextEndBattle + +Route25TrainerHeader7: ; 51686 (14:5686) + db $7 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7f1 ; flag's byte + dw Route25BattleText7 ; 0x575f TextBeforeBattle + dw Route25AfterBattleText7 ; 0x5769 TextAfterBattle + dw Route25EndBattleText7 ; 0x5764 TextEndBattle + dw Route25EndBattleText7 ; 0x5764 TextEndBattle + +Route25TrainerHeader8: ; 51692 (14:5692) + db $8 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7f1 ; flag's byte + dw Route25BattleText8 ; 0x576e TextBeforeBattle + dw Route25AfterBattleText8 ; 0x5778 TextAfterBattle + dw Route25EndBattleText8 ; 0x5773 TextEndBattle + dw Route25EndBattleText8 ; 0x5773 TextEndBattle + +Route25TrainerHeader9: ; 5169e (14:569e) + db $9 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7f1 ; flag's byte + dw Route25BattleText9 ; 0x577d TextBeforeBattle + dw Route25AfterBattleText9 ; 0x5787 TextAfterBattle + dw Route25EndBattleText9 ; 0x5782 TextEndBattle + dw Route25EndBattleText9 ; 0x5782 TextEndBattle + + db $ff + +Route25Text1: ; 516ab (14:56ab) + db $08 ; asm + ld hl, Route25TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +Route25Text2: ; 516b5 (14:56b5) + db $08 ; asm + ld hl, Route25TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +Route25Text3: ; 516bf (14:56bf) + db $08 ; asm + ld hl, Route25TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +Route25Text4: ; 516c9 (14:56c9) + db $08 ; asm + ld hl, Route25TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +Route25Text5: ; 516d3 (14:56d3) + db $08 ; asm + ld hl, Route25TrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +Route25Text6: ; 516dd (14:56dd) + db $08 ; asm + ld hl, Route25TrainerHeader6 + call TalkToTrainer + jp TextScriptEnd + +Route25Text7: ; 516e7 (14:56e7) + db $08 ; asm + ld hl, Route25TrainerHeader7 + call TalkToTrainer + jp TextScriptEnd + +Route25Text8: ; 516f1 (14:56f1) + db $08 ; asm + ld hl, Route25TrainerHeader8 + call TalkToTrainer + jp TextScriptEnd + +Route25Text9: ; 516fb (14:56fb) + db $08 ; asm + ld hl, Route25TrainerHeader9 + call TalkToTrainer + jp TextScriptEnd + +Route25BattleText1: ; 51705 (14:5705) + TX_FAR _Route25BattleText1 + db "@" + +Route25EndBattleText1: ; 5170a (14:570a) + TX_FAR _Route25EndBattleText1 + db "@" + +Route25AfterBattleText1: ; 5170f (14:570f) + TX_FAR _Route25AfterBattleText1 + db "@" + +Route25BattleText2: ; 51714 (14:5714) + TX_FAR _Route25BattleText2 + db "@" + +Route25EndBattleText2: ; 51719 (14:5719) + TX_FAR _Route25EndBattleText2 + db "@" + +Route25AfterBattleText2: ; 5171e (14:571e) + TX_FAR _Route25AfterBattleText2 + db "@" + +Route25BattleText3: ; 51723 (14:5723) + TX_FAR _Route25BattleText3 + db "@" + +Route25EndBattleText3: ; 51728 (14:5728) + TX_FAR _Route25EndBattleText3 + db "@" + +Route25AfterBattleText3: ; 5172d (14:572d) + TX_FAR _Route25AfterBattleText3 + db "@" + +Route25BattleText4: ; 51732 (14:5732) + TX_FAR _Route25BattleText4 + db "@" + +Route25EndBattleText4: ; 51737 (14:5737) + TX_FAR _Route25EndBattleText4 + db "@" + +Route25AfterBattleText4: ; 5173c (14:573c) + TX_FAR _Route25AfterBattleText4 + db "@" + +Route25BattleText5: ; 51741 (14:5741) + TX_FAR _Route25BattleText5 + db "@" + +Route25EndBattleText5: ; 51746 (14:5746) + TX_FAR _Route25EndBattleText5 + db "@" + +Route25AfterBattleText5: ; 5174b (14:574b) + TX_FAR _Route25AfterBattleText5 + db "@" + +Route25BattleText6: ; 51750 (14:5750) + TX_FAR _Route25BattleText6 + db "@" + +Route25EndBattleText6: ; 51755 (14:5755) + TX_FAR _Route25EndBattleText6 + db "@" + +Route25AfterBattleText6: ; 5175a (14:575a) + TX_FAR _Route25AfterBattleText6 + db "@" + +Route25BattleText7: ; 5175f (14:575f) + TX_FAR _Route25BattleText7 + db "@" + +Route25EndBattleText7: ; 51764 (14:5764) + TX_FAR _Route25EndBattleText7 + db "@" + +Route25AfterBattleText7: ; 51769 (14:5769) + TX_FAR _Route25AfterBattleText7 + db "@" + +Route25BattleText8: ; 5176e (14:576e) + TX_FAR _Route25BattleText8 + db "@" + +Route25EndBattleText8: ; 51773 (14:5773) + TX_FAR _Route25EndBattleText8 + db "@" + +Route25AfterBattleText8: ; 51778 (14:5778) + TX_FAR _Route25AfterBattleText8 + db "@" + +Route25BattleText9: ; 5177d (14:577d) + TX_FAR _Route25BattleText9 + db "@" + +Route25EndBattleText9: ; 51782 (14:5782) + TX_FAR _Route25EndBattleText9 + db "@" + +Route25AfterBattleText9: ; 51787 (14:5787) + TX_FAR _Route25AfterBattleText9 + db "@" + +Route25Text11: ; 5178c (14:578c) + TX_FAR _Route25Text11 + db "@" diff --git a/scripts/route2gate.asm b/scripts/route2gate.asm new file mode 100755 index 00000000..9fd8e4bd --- /dev/null +++ b/scripts/route2gate.asm @@ -0,0 +1,42 @@ +Route2GateScript: ; 5d5d4 (17:55d4) + jp EnableAutoTextBoxDrawing + +Route2GateTextPointers: ; 5d5d7 (17:55d7) + dw Route2GateText1 + dw Route2GateText2 + +Route2GateText1: ; 5d5db (17:55db) + db $08 ; asm + ld a, [$d7c2] + bit 0, a + jr nz, .asm_6592c ; 0x5d5e1 + ld a, $a + ldh [$db], a + ld a, $c8 + ldh [$dc], a + ld [$d11e], a + call GetItemName ; $2fcf + ld hl, $cd6d + ld de, $cc5b + ld bc, $000d + call CopyData + ld a, $62 + call Predef + ldh a, [$db] + cp $1 + jr nz, .asm_ad646 ; 0x5d606 + ld hl, $d7c2 + set 0, [hl] +.asm_6592c ; 0x5d60d + ld hl, Route2GateText_5d616 + call PrintText +.asm_ad646 ; 0x5d613 + jp TextScriptEnd + +Route2GateText_5d616: ; 5d616 (17:5616) + TX_FAR _Route2GateText_5d616 + db "@" + +Route2GateText2: ; 5d61b (17:561b) + TX_FAR _Route2GateText2 + db "@" diff --git a/scripts/route2house.asm b/scripts/route2house.asm new file mode 100755 index 00000000..50a058b8 --- /dev/null +++ b/scripts/route2house.asm @@ -0,0 +1,18 @@ +Route2HouseScript: ; 1deed (7:5eed) + jp EnableAutoTextBoxDrawing + +Route2HouseTextPointers: ; 1def0 (7:5ef0) + dw Route2HouseText1 + dw Route2HouseText2 + +Route2HouseText1: ; 1def4 (7:5ef4) + TX_FAR _Route2HouseText1 + db "@" + +Route2HouseText2: ; 1def9 (7:5ef9) + db $08 ; asm + ld a, $1 + ld [wWhichTrade], a + ld a, $54 + call Predef + jp TextScriptEnd diff --git a/scripts/route3.asm b/scripts/route3.asm new file mode 100755 index 00000000..1ff29f5b --- /dev/null +++ b/scripts/route3.asm @@ -0,0 +1,252 @@ +Route3Script: ; 554f8 (15:54f8) + call EnableAutoTextBoxDrawing + ld hl, Route3TrainerHeader0 + ld de, Route3ScriptPointers + ld a, [W_ROUTE3CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROUTE3CURSCRIPT], a + ret + +Route3ScriptPointers: ; 5550b (15:550b) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +Route3TextPointers: ; 55511 (15:5511) + dw Route3Text1 + dw Route3Text2 + dw Route3Text3 + dw Route3Text4 + dw Route3Text5 + dw Route3Text6 + dw Route3Text7 + dw Route3Text8 + dw Route3Text9 + dw Route3Text10 + +Route3TrainerHeaders: ; 55525 (15:5525) +Route3TrainerHeader0: ; 55525 (15:5525) + db $2 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7c3 ; flag's byte + dw Route3BattleText1 ; 0x5595 TextBeforeBattle + dw Route3AfterBattleText1 ; 0x559f TextAfterBattle + dw Route3EndBattleText1 ; 0x559a TextEndBattle + dw Route3EndBattleText1 ; 0x559a TextEndBattle + +Route3TrainerHeader2: ; 55531 (15:5531) + db $3 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7c3 ; flag's byte + dw Route3BattleText2 ; 0x55ae TextBeforeBattle + dw Route3AfterBattleText2 ; 0x55b8 TextAfterBattle + dw Route3EndBattleText2 ; 0x55b3 TextEndBattle + dw Route3EndBattleText2 ; 0x55b3 TextEndBattle + +Route3TrainerHeader3: ; 5553d (15:553d) + db $4 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7c3 ; flag's byte + dw Route3BattleText3 ; 0x55c7 TextBeforeBattle + dw Route3AfterBattleText3 ; 0x55d1 TextAfterBattle + dw Route3EndBattleText3 ; 0x55cc TextEndBattle + dw Route3EndBattleText3 ; 0x55cc TextEndBattle + +Route3TrainerHeader4: ; 55549 (15:5549) + db $5 ; flag's bit + db ($1 << 4) ; trainer's view range + dw $d7c3 ; flag's byte + dw Route3BattleText4 ; 0x55e0 TextBeforeBattle + dw Route3AfterBattleText4 ; 0x55ea TextAfterBattle + dw Route3EndBattleText4 ; 0x55e5 TextEndBattle + dw Route3EndBattleText4 ; 0x55e5 TextEndBattle + +Route3TrainerHeader5: ; 55555 (15:5555) + db $6 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7c3 ; flag's byte + dw Route3BattleText5 ; 0x55f9 TextBeforeBattle + dw Route3AfterBattleText5 ; 0x5603 TextAfterBattle + dw Route3EndBattleText5 ; 0x55fe TextEndBattle + dw Route3EndBattleText5 ; 0x55fe TextEndBattle + +Route3TrainerHeader6: ; 55561 (15:5561) + db $7 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7c3 ; flag's byte + dw Route3BattleText6 ; 0x5612 TextBeforeBattle + dw Route3AfterBattleText6 ; 0x561c TextAfterBattle + dw Route3EndBattleText6 ; 0x5617 TextEndBattle + dw Route3EndBattleText6 ; 0x5617 TextEndBattle + +Route3TrainerHeader7: ; 5556d (15:556d) + db $8 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7c3 ; flag's byte + dw Route3BattleText7 ; 0x562b TextBeforeBattle + dw Route3AfterBattleText7 ; 0x5635 TextAfterBattle + dw Route3EndBattleText7 ; 0x5630 TextEndBattle + dw Route3EndBattleText7 ; 0x5630 TextEndBattle + +Route3TrainerHeader8: ; 55579 (15:5579) + db $9 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7c3 ; flag's byte + dw Route3BattleText8 ; 0x5644 TextBeforeBattle + dw Route3AfterBattleText8 ; 0x564e TextAfterBattle + dw Route3EndBattleText8 ; 0x5649 TextEndBattle + dw Route3EndBattleText8 ; 0x5649 TextEndBattle + + db $ff + +Route3Text1: ; 55586 (15:5586) + TX_FAR _Route3Text1 + db "@" + +Route3Text2: ; 5558b (15:558b) + db $08 ; asm + ld hl, Route3TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +Route3BattleText1: ; 55595 (15:5595) + TX_FAR _Route3BattleText1 + db "@" + +Route3EndBattleText1: ; 5559a (15:559a) + TX_FAR _Route3EndBattleText1 + db "@" + +Route3AfterBattleText1: ; 5559f (15:559f) + TX_FAR _Route3AfterBattleText1 + db "@" + +Route3Text3: ; 555a4 (15:55a4) + db $08 ; asm + ld hl, Route3TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +Route3BattleText2: ; 555ae (15:55ae) + TX_FAR _Route3BattleText2 + db "@" + +Route3EndBattleText2: ; 555b3 (15:55b3) + TX_FAR _Route3EndBattleText2 + db "@" + +Route3AfterBattleText2: ; 555b8 (15:55b8) + TX_FAR _Route3AfterBattleText2 + db "@" + +Route3Text4: ; 555bd (15:55bd) + db $08 ; asm + ld hl, Route3TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +Route3BattleText3: ; 555c7 (15:55c7) + TX_FAR _Route3BattleText3 + db "@" + +Route3EndBattleText3: ; 555cc (15:55cc) + TX_FAR _Route3EndBattleText3 + db "@" + +Route3AfterBattleText3: ; 555d1 (15:55d1) + TX_FAR _Route3AfterBattleText3 + db "@" + +Route3Text5: ; 555d6 (15:55d6) + db $08 ; asm + ld hl, Route3TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +Route3BattleText4: ; 555e0 (15:55e0) + TX_FAR _Route3BattleText4 + db "@" + +Route3EndBattleText4: ; 555e5 (15:55e5) + TX_FAR _Route3EndBattleText4 + db "@" + +Route3AfterBattleText4: ; 555ea (15:55ea) + TX_FAR _Route3AfterBattleText4 + db "@" + +Route3Text6: ; 555ef (15:55ef) + db $08 ; asm + ld hl, Route3TrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +Route3BattleText5: ; 555f9 (15:55f9) + TX_FAR _Route3BattleText5 + db "@" + +Route3EndBattleText5: ; 555fe (15:55fe) + TX_FAR _Route3EndBattleText5 + db "@" + +Route3AfterBattleText5: ; 55603 (15:5603) + TX_FAR _Route3AfterBattleText5 + db "@" + +Route3Text7: ; 55608 (15:5608) + db $08 ; asm + ld hl, Route3TrainerHeader6 + call TalkToTrainer + jp TextScriptEnd + +Route3BattleText6: ; 55612 (15:5612) + TX_FAR _Route3BattleText6 + db "@" + +Route3EndBattleText6: ; 55617 (15:5617) + TX_FAR _Route3EndBattleText6 + db "@" + +Route3AfterBattleText6: ; 5561c (15:561c) + TX_FAR _Route3AfterBattleText6 + db "@" + +Route3Text8: ; 55621 (15:5621) + db $08 ; asm + ld hl, Route3TrainerHeader7 + call TalkToTrainer + jp TextScriptEnd + +Route3BattleText7: ; 5562b (15:562b) + TX_FAR _Route3BattleText7 + db "@" + +Route3EndBattleText7: ; 55630 (15:5630) + TX_FAR _Route3EndBattleText7 + db "@" + +Route3AfterBattleText7: ; 55635 (15:5635) + TX_FAR _Route3AfterBattleText7 + db "@" + +Route3Text9: ; 5563a (15:563a) + db $08 ; asm + ld hl, Route3TrainerHeader8 + call TalkToTrainer + jp TextScriptEnd + +Route3BattleText8: ; 55644 (15:5644) + TX_FAR _Route3BattleText8 + db "@" + +Route3EndBattleText8: ; 55649 (15:5649) + TX_FAR _Route3EndBattleText8 + db "@" + +Route3AfterBattleText8: ; 5564e (15:564e) + TX_FAR _Route3AfterBattleText8 + db "@" + +Route3Text10: ; 55653 (15:5653) + TX_FAR _Route3Text10 + db "@" diff --git a/scripts/route4.asm b/scripts/route4.asm new file mode 100755 index 00000000..69ec7424 --- /dev/null +++ b/scripts/route4.asm @@ -0,0 +1,63 @@ +Route4Script: ; 55658 (15:5658) + call EnableAutoTextBoxDrawing + ld hl, Route4TrainerHeaders + ld de, Route4ScriptPointers + ld a, [W_ROUTE4CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROUTE4CURSCRIPT], a + ret + +Route4ScriptPointers: ; 5566b (15:566b) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +Route4TextPointers: ; 55671 (15:5671) + dw Route4Text1 + dw Route4Text2 + dw Predef5CText + dw PokeCenterSignText + dw Route4Text5 + dw Route4Text6 + +Route4TrainerHeaders: ; 5567d (15:567d) +Route4TrainerHeader0: ; 5567d (15:567d) + db $2 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7c5 ; flag's byte + dw Route4BattleText1 ; 0x5699 TextBeforeBattle + dw Route4AfterBattleText1 ; 0x56a3 TextAfterBattle + dw Route4EndBattleText1 ; 0x569e TextEndBattle + dw Route4EndBattleText1 ; 0x569e TextEndBattle + + db $ff + +Route4Text1: ; 5568a (15:568a) + TX_FAR _Route4Text1 + db "@" + +Route4Text2: ; 5568f (15:568f) + db $08 ; asm + ld hl, Route4TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +Route4BattleText1: ; 55699 (15:5699) + TX_FAR _Route4BattleText1 + db "@" + +Route4EndBattleText1: ; 5569e (15:569e) + TX_FAR _Route4EndBattleText1 + db "@" + +Route4AfterBattleText1: ; 556a3 (15:56a3) + TX_FAR _Route4AfterBattleText1 + db "@" + +Route4Text5: ; 556a8 (15:56a8) + TX_FAR _Route4Text5 + db "@" + +Route4Text6: ; 556ad (15:56ad) + TX_FAR _Route4Text6 + db "@" diff --git a/scripts/route5.asm b/scripts/route5.asm new file mode 100755 index 00000000..1fad3939 --- /dev/null +++ b/scripts/route5.asm @@ -0,0 +1,9 @@ +Route5Script: ; 556b2 (15:56b2) + jp EnableAutoTextBoxDrawing + +Route5TextPointers: ; 556b5 (15:56b5) + dw Route5Text1 + +Route5Text1: ; 556b7 (15:56b7) + TX_FAR _Route5Text1 + db "@" diff --git a/scripts/route5gate.asm b/scripts/route5gate.asm new file mode 100755 index 00000000..f6f1eb1a --- /dev/null +++ b/scripts/route5gate.asm @@ -0,0 +1,121 @@ +Route5GateScript: ; 1df33 (7:5f33) + call EnableAutoTextBoxDrawing + ld a, [W_ROUTE5GATECURSCRIPT] + ld hl, Route5GateScriptPointers + jp CallFunctionInTable + +Route5GateScriptPointers: ; 1df3f (7:5f3f) + dw Route5GateScript0 + dw Route5GateScript1 + +Route5GateScript_1df43: ; 1df43 (7:5f43) + ld a, $40 + ld [$ccd3], a + ld a, $1 + ld [$cd38], a + jp Func_3486 + +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, [$ff00+$db] + and a + jr nz, .asm_1df82 ; 0x1df70 $10 + ld a, $2 + ld [$ff00+$8c], a + call DisplayTextID + call Route5GateScript_1df43 + ld a, $1 + ld [W_ROUTE5GATECURSCRIPT], a + ret +.asm_1df82 + ld a, $3 + ld [$ff00+$8c], a + call DisplayTextID + ld hl, $d728 + set 6, [hl] + ret + +CoordsData_1df8f: ; 1df8f (7:5f8f) + db 3,3 + db 3,4 + db $ff + +Route5GateScript1: ; 1df94 (7:5f94) + ld a, [$cd38] + and a + ret nz + call Delay3 + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_ROUTE5GATECURSCRIPT], a + ret + +Route5GateTextPointers: ; 1dfa4 (7:5fa4) + dw Route5GateText1 + dw Route5GateText2 + dw Route5GateText3 + +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, [$ff00+$db] + and a + jr nz, .asm_768a2 ; 0x1dfbd $11 + ld hl, Route5GateText2 + call PrintText + call Route5GateScript_1df43 + ld a, $1 + ld [W_ROUTE5GATECURSCRIPT], a + jp TextScriptEnd +.asm_768a2 ; 0x1dfd0 + ld hl, Route5GateText3 + call PrintText + ld hl, $d728 + set 6, [hl] + jp TextScriptEnd +.asm_88856 ; 0x1dfde + ld hl, SaffronGateText_1dff6 + call PrintText + jp TextScriptEnd + +Route8GateText2: ; 1dfe7 (7:5fe7) +Route7GateText2: ; 1dfe7 (7:5fe7) +Route6GateText2: ; 1dfe7 (7:5fe7) +Route5GateText2: ; 1dfe7 (7:5fe7) + TX_FAR _SaffronGateText_1dfe7 + db "@" + +Route8GateText3: ; 1dfec (7:5fec) +Route7GateText3: ; 1dfec (7:5fec) +Route6GateText3: ; 1dfec (7:5fec) +Route5GateText3: ; 1dfec (7:5fec) + TX_FAR _SaffronGateText_8aaa9 ; 0x8aaa9 + db $11 + TX_FAR _SaffronGateText_1dff1 ; 0x8aaef + db "@" + +SaffronGateText_1dff6: ; 1dff6 (7:5ff6) + TX_FAR _SaffronGateText_1dff6 + db "@" + + diff --git a/scripts/route6.asm b/scripts/route6.asm new file mode 100755 index 00000000..a1cf52a8 --- /dev/null +++ b/scripts/route6.asm @@ -0,0 +1,187 @@ +Route6Script: ; 590b0 (16:50b0) + call EnableAutoTextBoxDrawing + ld hl, Route6TrainerHeaders + ld de, Route6ScriptPointers + ld a, [W_ROUTE6CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROUTE6CURSCRIPT], a + ret + +Route6ScriptPointers: ; 590c3 (16:50c3) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +Route6TextPointers: ; 590c9 (16:50c9) + dw Route6Text1 + dw Route6Text2 + dw Route6Text3 + dw Route6Text4 + dw Route6Text5 + dw Route6Text6 + dw Route6Text7 + +Route6TrainerHeaders: ; 590d7 (16:50d7) +Route6TrainerHeader0: ; 590d7 (16:50d7) + db $1 ; flag's bit + db ($0 << 4) ; trainer's view range + dw $d7c9 ; flag's byte + dw Route6BattleText1 ; 0x512a TextBeforeBattle + dw Route6AfterBattleText1 ; 0x5134 TextAfterBattle + dw Route6EndBattleText1 ; 0x512f TextEndBattle + dw Route6EndBattleText1 ; 0x512f TextEndBattle + +Route6TrainerHeader1: ; 590e3 (16:50e3) + db $2 ; flag's bit + db ($0 << 4) ; trainer's view range + dw $d7c9 ; flag's byte + dw Route6BattleText2 ; 0x5143 TextBeforeBattle + dw Route6AfterBattleText1 ; 0x5134 TextAfterBattle + dw Route6EndBattleText2 ; 0x5148 TextEndBattle + dw Route6EndBattleText2 ; 0x5148 TextEndBattle + +Route6TrainerHeader2: ; 590ef (16:50ef) + db $3 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7c9 ; flag's byte + dw Route6BattleText3 ; 0x5157 TextBeforeBattle + dw Route6AfterBattleText3 ; 0x5161 TextAfterBattle + dw Route6EndBattleText3 ; 0x515c TextEndBattle + dw Route6EndBattleText3 ; 0x515c TextEndBattle + +Route6TrainerHeader3: ; 590fb (16:50fb) + db $4 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7c9 ; flag's byte + dw Route6BattleText4 ; 0x5170 TextBeforeBattle + dw Route6AfterBattleText4 ; 0x517a TextAfterBattle + dw Route6EndBattleText4 ; 0x5175 TextEndBattle + dw Route6EndBattleText4 ; 0x5175 TextEndBattle + +Route6TrainerHeader4: ; 59107 (16:5107) + db $5 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7c9 ; flag's byte + dw Route6BattleText5 ; 0x5189 TextBeforeBattle + dw Route6AfterBattleText5 ; 0x5193 TextAfterBattle + dw Route6EndBattleText5 ; 0x518e TextEndBattle + dw Route6EndBattleText5 ; 0x518e TextEndBattle + +Route6TrainerHeader5: ; 59113 (16:5113) + db $6 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7c9 ; flag's byte + dw Route6BattleText6 ; 0x51a2 TextBeforeBattle + dw Route6AfterBattleText6 ; 0x51ac TextAfterBattle + dw Route6EndBattleText6 ; 0x51a7 TextEndBattle + dw Route6EndBattleText6 ; 0x51a7 TextEndBattle + + db $ff + +Route6Text1: ; 59120 (16:5120) + db $8 + ld hl, Route6TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +Route6BattleText1: ; 5912a (16:512a) + TX_FAR _Route6BattleText1 + db "@" + +Route6EndBattleText1: ; 5912f (16:512f) + TX_FAR _Route6EndBattleText1 + db "@" + +Route6AfterBattleText1: ; 59134 (16:5134) + TX_FAR _Route6AfterBattleText1 + db "@" + +Route6Text2: ; 59139 (16:5139) + db $08 ; asm + ld hl, Route6TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +Route6BattleText2: ; 59143 (16:5143) + TX_FAR _Route6BattleText2 + db "@" + +Route6EndBattleText2: ; 59148 (16:5148) + TX_FAR _Route6EndBattleText2 + db "@" + +Route6Text3: ; 5914d (16:514d) + db $08 ; asm + ld hl, Route6TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +Route6BattleText3: ; 59157 (16:5157) + TX_FAR _Route6BattleText3 + db "@" + +Route6EndBattleText3: ; 5915c (16:515c) + TX_FAR _Route6EndBattleText3 + db "@" + +Route6AfterBattleText3: ; 59161 (16:5161) + TX_FAR _Route6AfterBattleText3 + db "@" + +Route6Text4: ; 59166 (16:5166) + db $08 ; asm + ld hl, Route6TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +Route6BattleText4: ; 59170 (16:5170) + TX_FAR _Route6BattleText4 + db "@" + +Route6EndBattleText4: ; 59175 (16:5175) + TX_FAR _Route6EndBattleText4 + db "@" + +Route6AfterBattleText4: ; 5917a (16:517a) + TX_FAR _Route6AfterBattleText4 + db "@" + +Route6Text5: ; 5917f (16:517f) + db $08 ; asm + ld hl, Route6TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +Route6BattleText5: ; 59189 (16:5189) + TX_FAR _Route6BattleText5 + db "@" + +Route6EndBattleText5: ; 5918e (16:518e) + TX_FAR _Route6EndBattleText5 + db "@" + +Route6AfterBattleText5: ; 59193 (16:5193) + TX_FAR _Route6AfterBattleText5 + db "@" + +Route6Text6: ; 59198 (16:5198) + db $08 ; asm + ld hl, Route6TrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +Route6BattleText6: ; 591a2 (16:51a2) + TX_FAR _Route6BattleText6 + db "@" + +Route6EndBattleText6: ; 591a7 (16:51a7) + TX_FAR _Route6EndBattleText6 + db "@" + +Route6AfterBattleText6: ; 591ac (16:51ac) + TX_FAR _Route6AfterBattleText6 + db "@" + +Route6Text7: ; 591b1 (16:51b1) + TX_FAR _Route6Text7 + db "@" diff --git a/scripts/route6gate.asm b/scripts/route6gate.asm new file mode 100755 index 00000000..f98c4434 --- /dev/null +++ b/scripts/route6gate.asm @@ -0,0 +1,72 @@ +Route6GateScript: ; 1e03d (7:603d) + call EnableAutoTextBoxDrawing + ld hl, Route6GateScriptPointers + ld a, [W_ROUTE6GATECURSCRIPT] + call CallFunctionInTable + ret + +Route6GateScriptPointers: ; 1e04a (7:604a) + dw Route6GateScript0 + dw Route6GateScript1 + +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 Route6GateScript_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 + +CoordsData_1e08c: ; 1e08c (7:608c) + db $02,$03 + db $02,$04,$FF + +Route6GateScript1: ; 1e091 (7:6091) + ld a, [$cd38] + and a + ret nz + call Delay3 + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_ROUTE6GATECURSCRIPT], a + ret + +Route6GateScript_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 + +Route6GateTextPointers: ; 1e0b8 (7:60b8) + dw Route6GateText1 + dw Route6GateText2 + dw Route6GateText3 diff --git a/scripts/route7.asm b/scripts/route7.asm new file mode 100755 index 00000000..484fc539 --- /dev/null +++ b/scripts/route7.asm @@ -0,0 +1,9 @@ +Route7Script: ; 48152 (12:4152) + jp EnableAutoTextBoxDrawing + +Route7TextPointers: ; 48155 (12:4155) + dw Route7Text1 + +Route7Text1: ; 48157 (12:4157) + TX_FAR _Route7Text1 + db "@" diff --git a/scripts/route7gate.asm b/scripts/route7gate.asm new file mode 100755 index 00000000..dba1dadc --- /dev/null +++ b/scripts/route7gate.asm @@ -0,0 +1,75 @@ +Route7GateScript: ; 1e100 (7:6100) + call EnableAutoTextBoxDrawing + ld a, [W_ROUTE7GATECURSCRIPT] + ld hl, Route7GateScriptPointers + call CallFunctionInTable + ret + +Route7GateScriptPointers: ; 1e10d (7:610d) + dw Route7GateScript0 + dw Route7GateScript1 + +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 + +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 + +CoordsData_1e167: ; 1e167 (7:6167) + db 3,3 + db 4,3 + db $ff + +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 + +Route7GateTextPointers: ; 1e17f (7:617f) + dw Route7GateText1 + dw Route7GateText2 + dw Route7GateText3 diff --git a/scripts/route8.asm b/scripts/route8.asm new file mode 100755 index 00000000..eebc96ff --- /dev/null +++ b/scripts/route8.asm @@ -0,0 +1,275 @@ +Route8Script: ; 591b6 (16:51b6) + call EnableAutoTextBoxDrawing + ld hl, Route8TrainerHeaders + ld de, Route8ScriptPointers + ld a, [W_ROUTE8CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROUTE8CURSCRIPT], a + ret + +Route8ScriptPointers: ; 591c9 (16:51c9) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +Route8TextPointers: ; 591cf (16:51cf) + dw Route8Text1 + dw Route8Text2 + dw Route8Text3 + dw Route8Text4 + dw Route8Text5 + dw Route8Text6 + dw Route8Text7 + dw Route8Text8 + dw Route8Text9 + dw Route8Text10 + +Route8TrainerHeaders: ; 591e3 (16:51e3) +Route8TrainerHeader0: ; 591e3 (16:51e3) + db $1 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7cd ; flag's byte + dw Route8BattleText1 ; 0x525a TextBeforeBattle + dw Route8AfterBattleText1 ; 0x5264 TextAfterBattle + dw Route8EndBattleText1 ; 0x525f TextEndBattle + dw Route8EndBattleText1 ; 0x525f TextEndBattle + +Route8TrainerHeader1: ; 591ef (16:51ef) + db $2 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7cd ; flag's byte + dw Route8BattleText2 ; 0x5273 TextBeforeBattle + dw Route8AfterBattleText2 ; 0x527d TextAfterBattle + dw Route8EndBattleText2 ; 0x5278 TextEndBattle + dw Route8EndBattleText2 ; 0x5278 TextEndBattle + +Route8TrainerHeader2: ; 591fb (16:51fb) + db $3 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7cd ; flag's byte + dw Route8BattleText3 ; 0x528c TextBeforeBattle + dw Route8AfterBattleText3 ; 0x5296 TextAfterBattle + dw Route8EndBattleText3 ; 0x5291 TextEndBattle + dw Route8EndBattleText3 ; 0x5291 TextEndBattle + +Route8TrainerHeader3: ; 59207 (16:5207) + db $4 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7cd ; flag's byte + dw Route8BattleText4 ; 0x52a5 TextBeforeBattle + dw Route8AfterBattleText4 ; 0x52af TextAfterBattle + dw Route8EndBattleText4 ; 0x52aa TextEndBattle + dw Route8EndBattleText4 ; 0x52aa TextEndBattle + +Route8TrainerHeader4: ; 59213 (16:5213) + db $5 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7cd ; flag's byte + dw Route8BattleText5 ; 0x52be TextBeforeBattle + dw Route8AfterBattleText5 ; 0x52c8 TextAfterBattle + dw Route8EndBattleText5 ; 0x52c3 TextEndBattle + dw Route8EndBattleText5 ; 0x52c3 TextEndBattle + +Route8TrainerHeader5: ; 5921f (16:521f) + db $6 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7cd ; flag's byte + dw Route8BattleText6 ; 0x52d7 TextBeforeBattle + dw Route8AfterBattleText6 ; 0x52e1 TextAfterBattle + dw Route8EndBattleText6 ; 0x52dc TextEndBattle + dw Route8EndBattleText6 ; 0x52dc TextEndBattle + +Route8TrainerHeader6: ; 5922b (16:522b) + db $7 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7cd ; flag's byte + dw Route8BattleText7 ; 0x52f0 TextBeforeBattle + dw Route8AfterBattleText7 ; 0x52fa TextAfterBattle + dw Route8EndBattleText7 ; 0x52f5 TextEndBattle + dw Route8EndBattleText7 ; 0x52f5 TextEndBattle + +Route8TrainerHeader7: ; 59237 (16:5237) + db $8 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7cd ; flag's byte + dw Route8BattleText8 ; 0x5309 TextBeforeBattle + dw Route8AfterBattleText8 ; 0x5313 TextAfterBattle + dw Route8EndBattleText8 ; 0x530e TextEndBattle + dw Route8EndBattleText8 ; 0x530e TextEndBattle + +Route8TrainerHeader8: ; 59243 (16:5243) + db $9 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7cd ; flag's byte + dw Route8BattleText9 ; 0x5322 TextBeforeBattle + dw Route8AfterBattleText9 ; 0x532c TextAfterBattle + dw Route8EndBattleText9 ; 0x5327 TextEndBattle + dw Route8EndBattleText9 ; 0x5327 TextEndBattle + + db $ff + +Route8Text1: ; 59250 (16:5250) + db $8 + ld hl, Route8TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +Route8BattleText1: ; 5925a (16:525a) + TX_FAR _Route8BattleText1 + db "@" + +Route8EndBattleText1: ; 5925f (16:525f) + TX_FAR _Route8EndBattleText1 + db "@" + +Route8AfterBattleText1: ; 59264 (16:5264) + TX_FAR _Route8AfterBattleText1 + db "@" + +Route8Text2: ; 59269 (16:5269) + db $08 ; asm + ld hl, Route8TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +Route8BattleText2: ; 59273 (16:5273) + TX_FAR _Route8BattleText2 + db "@" + +Route8EndBattleText2: ; 59278 (16:5278) + TX_FAR _Route8EndBattleText2 + db "@" + +Route8AfterBattleText2: ; 5927d (16:527d) + TX_FAR _Route8AfterBattleText2 + db "@" + +Route8Text3: ; 59282 (16:5282) + db $08 ; asm + ld hl, Route8TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +Route8BattleText3: ; 5928c (16:528c) + TX_FAR _Route8BattleText3 + db "@" + +Route8EndBattleText3: ; 59291 (16:5291) + TX_FAR _Route8EndBattleText3 + db "@" + +Route8AfterBattleText3: ; 59296 (16:5296) + TX_FAR _Route8AfterBattleText3 + db "@" + +Route8Text4: ; 5929b (16:529b) + db $08 ; asm + ld hl, Route8TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +Route8BattleText4: ; 592a5 (16:52a5) + TX_FAR _Route8BattleText4 + db "@" + +Route8EndBattleText4: ; 592aa (16:52aa) + TX_FAR _Route8EndBattleText4 + db "@" + +Route8AfterBattleText4: ; 592af (16:52af) + TX_FAR _Route8AfterBattleText4 + db "@" + +Route8Text5: ; 592b4 (16:52b4) + db $08 ; asm + ld hl, Route8TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +Route8BattleText5: ; 592be (16:52be) + TX_FAR _Route8BattleText5 + db "@" + +Route8EndBattleText5: ; 592c3 (16:52c3) + TX_FAR _Route8EndBattleText5 + db "@" + +Route8AfterBattleText5: ; 592c8 (16:52c8) + TX_FAR _Route8AfterBattleText5 + db "@" + +Route8Text6: ; 592cd (16:52cd) + db $08 ; asm + ld hl, Route8TrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +Route8BattleText6: ; 592d7 (16:52d7) + TX_FAR _Route8BattleText6 + db "@" + +Route8EndBattleText6: ; 592dc (16:52dc) + TX_FAR _Route8EndBattleText6 + db "@" + +Route8AfterBattleText6: ; 592e1 (16:52e1) + TX_FAR _Route8AfterBattleText6 + db "@" + +Route8Text7: ; 592e6 (16:52e6) + db $08 ; asm + ld hl, Route8TrainerHeader6 + call TalkToTrainer + jp TextScriptEnd + +Route8BattleText7: ; 592f0 (16:52f0) + TX_FAR _Route8BattleText7 + db "@" + +Route8EndBattleText7: ; 592f5 (16:52f5) + TX_FAR _Route8EndBattleText7 + db "@" + +Route8AfterBattleText7: ; 592fa (16:52fa) + TX_FAR _Route8AfterBattleText7 + db "@" + +Route8Text8: ; 592ff (16:52ff) + db $08 ; asm + ld hl, Route8TrainerHeader7 + call TalkToTrainer + jp TextScriptEnd + +Route8BattleText8: ; 59309 (16:5309) + TX_FAR _Route8BattleText8 + db "@" + +Route8EndBattleText8: ; 5930e (16:530e) + TX_FAR _Route8EndBattleText8 + db "@" + +Route8AfterBattleText8: ; 59313 (16:5313) + TX_FAR _Route8AfterBattleText8 + db "@" + +Route8Text9: ; 59318 (16:5318) + db $08 ; asm + ld hl, Route8TrainerHeader8 + call TalkToTrainer + jp TextScriptEnd + +Route8BattleText9: ; 59322 (16:5322) + TX_FAR _Route8BattleText9 + db "@" + +Route8EndBattleText9: ; 59327 (16:5327) + TX_FAR _Route8EndBattleText9 + db "@" + +Route8AfterBattleText9: ; 5932c (16:532c) + TX_FAR _Route8AfterBattleText9 + db "@" + +Route8Text10: ; 59331 (16:5331) + TX_FAR _Route8Text10 + db "@" diff --git a/scripts/route8gate.asm b/scripts/route8gate.asm new file mode 100755 index 00000000..2223b894 --- /dev/null +++ b/scripts/route8gate.asm @@ -0,0 +1,72 @@ +Route8GateScript: ; 1e1c7 (7:61c7) + call EnableAutoTextBoxDrawing + ld hl, Route8GateScriptPointers + ld a, [W_ROUTE8GATECURSCRIPT] + jp CallFunctionInTable + +Route8GateScriptPointers: ; 1e1d3 (7:61d3) + dw Route8GateScript0 + dw Route8GateScript1 + +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 + +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 + +CoordsData_1e22c: ; 1e22c (7:622c) + db 3,2 + db 4,2 + db $ff + +Route8GateScript1: ; 1e231 (7:6231) + ld a, [$cd38] + and a + ret nz + call Delay3 + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_ROUTE8GATECURSCRIPT], a + ret + +Route8GateTextPointers: ; 1e241 (7:6241) + dw Route8GateText1 + dw Route8GateText2 + dw Route8GateText3 diff --git a/scripts/route9.asm b/scripts/route9.asm new file mode 100755 index 00000000..852c09b2 --- /dev/null +++ b/scripts/route9.asm @@ -0,0 +1,269 @@ +Route9Script: ; 556bc (15:56bc) + call EnableAutoTextBoxDrawing + ld hl, Route9TrainerHeaders + ld de, Route9ScriptPointers + ld a, [W_ROUTE9CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_ROUTE9CURSCRIPT], a + ret + +Route9ScriptPointers: ; 556cf (15:56cf) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +Route9TextPointers: ; 556d5 (15:56d5) + dw Route9Text1 + dw Route9Text2 + dw Route9Text3 + dw Route9Text4 + dw Route9Text5 + dw Route9Text6 + dw Route9Text7 + dw Route9Text8 + dw Route9Text9 + dw Predef5CText + dw Route9Text11 + +Route9TrainerHeaders: ; 556eb (15:56eb) +Route9TrainerHeader0: ; 556eb (15:56eb) + db $1 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7cf ; flag's byte + dw Route9BattleText1 ; 0x5792 TextBeforeBattle + dw Route9AfterBattleText1 ; 0x579c TextAfterBattle + dw Route9EndBattleText1 ; 0x5797 TextEndBattle + dw Route9EndBattleText1 ; 0x5797 TextEndBattle + +Route9TrainerHeader2: ; 556f7 (15:56f7) + db $2 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7cf ; flag's byte + dw Route9BattleText2 ; 0x57a1 TextBeforeBattle + dw Route9AfterBattleText2 ; 0x57ab TextAfterBattle + dw Route9EndBattleText2 ; 0x57a6 TextEndBattle + dw Route9EndBattleText2 ; 0x57a6 TextEndBattle + +Route9TrainerHeader3: ; 55703 (15:5703) + db $3 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7cf ; flag's byte + dw Route9BattleText3 ; 0x57b0 TextBeforeBattle + dw Route9AfterBattleText3 ; 0x57ba TextAfterBattle + dw Route9EndBattleText3 ; 0x57b5 TextEndBattle + dw Route9EndBattleText3 ; 0x57b5 TextEndBattle + +Route9TrainerHeader4: ; 5570f (15:570f) + db $4 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7cf ; flag's byte + dw Route9BattleText4 ; 0x57bf TextBeforeBattle + dw Route9AfterBattleText4 ; 0x57c9 TextAfterBattle + dw Route9EndBattleText4 ; 0x57c4 TextEndBattle + dw Route9EndBattleText4 ; 0x57c4 TextEndBattle + +Route9TrainerHeader5: ; 5571b (15:571b) + db $5 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7cf ; flag's byte + dw Route9BattleText5 ; 0x57ce TextBeforeBattle + dw Route9AfterBattleText5 ; 0x57d8 TextAfterBattle + dw Route9EndBattleText5 ; 0x57d3 TextEndBattle + dw Route9EndBattleText5 ; 0x57d3 TextEndBattle + +Route9TrainerHeader6: ; 55727 (15:5727) + db $6 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7cf ; flag's byte + dw Route9BattleText6 ; 0x57dd TextBeforeBattle + dw Route9AfterBattleText6 ; 0x57e7 TextAfterBattle + dw Route9EndBattleText6 ; 0x57e2 TextEndBattle + dw Route9EndBattleText6 ; 0x57e2 TextEndBattle + +Route9TrainerHeader7: ; 55733 (15:5733) + db $7 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7cf ; flag's byte + dw Route9BattleText7 ; 0x57ec TextBeforeBattle + dw Route9AfterBattleText7 ; 0x57f6 TextAfterBattle + dw Route9EndBattleText7 ; 0x57f1 TextEndBattle + dw Route9EndBattleText7 ; 0x57f1 TextEndBattle + +Route9TrainerHeader8: ; 5573f (15:573f) + db $8 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7cf ; flag's byte + dw Route9BattleText8 ; 0x57fb TextBeforeBattle + dw Route9AfterBattleText8 ; 0x5805 TextAfterBattle + dw Route9EndBattleText8 ; 0x5800 TextEndBattle + dw Route9EndBattleText8 ; 0x5800 TextEndBattle + +Route9TrainerHeader9: ; 5574b (15:574b) + db $9 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d7cf ; flag's byte + dw Route9BattleText9 ; 0x580a TextBeforeBattle + dw Route9AfterBattleText9 ; 0x5814 TextAfterBattle + dw Route9EndBattleText9 ; 0x580f TextEndBattle + dw Route9EndBattleText9 ; 0x580f TextEndBattle + + db $ff + +Route9Text1: ; 55758 (15:5758) + db $8 ; asm + ld hl, Route9TrainerHeader0 + jr asm_8be3d ; 0x5575c $2e + +Route9Text2: ; 5575e (15:575e) + db $8 ; asm + ld hl, Route9TrainerHeader2 + jr asm_8be3d ; 0x55762 $28 + +Route9Text3: ; 55764 (15:5764) + db $8 ; asm + ld hl, Route9TrainerHeader3 + jr asm_8be3d ; 0x55768 $22 + +Route9Text4: ; 5576a (15:576a) + db $8 ; asm + ld hl, Route9TrainerHeader4 + jr asm_8be3d ; 0x5576e $1c + +Route9Text5: ; 55770 (15:5770) + db $8 ; asm + ld hl, Route9TrainerHeader5 + jr asm_8be3d ; 0x55774 $16 + +Route9Text6: ; 55776 (15:5776) + db $8 ; asm + ld hl, Route9TrainerHeader6 + jr asm_8be3d ; 0x5577a $10 + +Route9Text7: ; 5577c (15:577c) + db $8 ; asm + ld hl, Route9TrainerHeader7 + jr asm_8be3d ; 0x55780 $a + +Route9Text8: ; 55782 (15:5782) + db $8 ; asm + ld hl, Route9TrainerHeader8 + jr asm_8be3d ; 0x55786 $4 + +Route9Text9: ; 55788 (15:5788) + db $8 ; asm + ld hl, Route9TrainerHeader9 +asm_8be3d: ; 5578c (15:578c) + call TalkToTrainer + jp TextScriptEnd + +Route9BattleText1: ; 55792 (15:5792) + TX_FAR _Route9BattleText1 + db "@" + +Route9EndBattleText1: ; 55797 (15:5797) + TX_FAR _Route9EndBattleText1 + db "@" + +Route9AfterBattleText1: ; 5579c (15:579c) + TX_FAR _Route9AfterBattleText1 + db "@" + +Route9BattleText2: ; 557a1 (15:57a1) + TX_FAR _Route9BattleText2 + db "@" + +Route9EndBattleText2: ; 557a6 (15:57a6) + TX_FAR _Route9EndBattleText2 + db "@" + +Route9AfterBattleText2: ; 557ab (15:57ab) + TX_FAR _Route9AfterBattleText2 + db "@" + +Route9BattleText3: ; 557b0 (15:57b0) + TX_FAR _Route9BattleText3 + db "@" + +Route9EndBattleText3: ; 557b5 (15:57b5) + TX_FAR _Route9EndBattleText3 + db "@" + +Route9AfterBattleText3: ; 557ba (15:57ba) + TX_FAR _Route9AfterBattleText3 + db "@" + +Route9BattleText4: ; 557bf (15:57bf) + TX_FAR _Route9BattleText4 + db "@" + +Route9EndBattleText4: ; 557c4 (15:57c4) + TX_FAR _Route9EndBattleText4 + db "@" + +Route9AfterBattleText4: ; 557c9 (15:57c9) + TX_FAR _Route9AfterBattleText4 + db "@" + +Route9BattleText5: ; 557ce (15:57ce) + TX_FAR _Route9BattleText5 + db "@" + +Route9EndBattleText5: ; 557d3 (15:57d3) + TX_FAR _Route9EndBattleText5 + db "@" + +Route9AfterBattleText5: ; 557d8 (15:57d8) + TX_FAR _Route9AfterBattleText5 + db "@" + +Route9BattleText6: ; 557dd (15:57dd) + TX_FAR _Route9BattleText6 + db "@" + +Route9EndBattleText6: ; 557e2 (15:57e2) + TX_FAR _Route9EndBattleText6 + db "@" + +Route9AfterBattleText6: ; 557e7 (15:57e7) + TX_FAR _Route9AfterBattleText6 + db "@" + +Route9BattleText7: ; 557ec (15:57ec) + TX_FAR _Route9BattleText7 + db "@" + +Route9EndBattleText7: ; 557f1 (15:57f1) + TX_FAR _Route9EndBattleText7 + db "@" + +Route9AfterBattleText7: ; 557f6 (15:57f6) + TX_FAR _Route9AfterBattleText7 + db "@" + +Route9BattleText8: ; 557fb (15:57fb) + TX_FAR _Route9BattleText8 + db "@" + +Route9EndBattleText8: ; 55800 (15:5800) + TX_FAR _Route9EndBattleText8 + db "@" + +Route9AfterBattleText8: ; 55805 (15:5805) + TX_FAR _Route9AfterBattleText8 + db "@" + +Route9BattleText9: ; 5580a (15:580a) + TX_FAR _Route9BattleText9 + db "@" + +Route9EndBattleText9: ; 5580f (15:580f) + TX_FAR _Route9EndBattleText9 + db "@" + +Route9AfterBattleText9: ; 55814 (15:5814) + TX_FAR _Route9AfterBattleText9 + db "@" + +Route9Text11: ; 55819 (15:5819) + TX_FAR _Route9Text11 + db "@" diff --git a/scripts/safarizonecenter.asm b/scripts/safarizonecenter.asm new file mode 100755 index 00000000..6ff60ec6 --- /dev/null +++ b/scripts/safarizonecenter.asm @@ -0,0 +1,15 @@ +SafariZoneCenterScript: ; 45bb2 (11:5bb2) + jp EnableAutoTextBoxDrawing + +SafariZoneCenterTextPointers: ; 45bb5 (11:5bb5) + dw Predef5CText + dw SafariZoneCenterText2 + dw SafariZoneCenterText3 + +SafariZoneCenterText2: ; 45bbb (11:5bbb) + TX_FAR _SafariZoneCenterText2 + db "@" + +SafariZoneCenterText3: ; 45bc0 (11:5bc0) + TX_FAR _SafariZoneCenterText3 + db "@" diff --git a/scripts/safarizoneeast.asm b/scripts/safarizoneeast.asm new file mode 100755 index 00000000..3e6df139 --- /dev/null +++ b/scripts/safarizoneeast.asm @@ -0,0 +1,23 @@ +SafariZoneEastScript: ; 4586b (11:586b) + jp EnableAutoTextBoxDrawing + +SafariZoneEastTextPointers: ; 4586e (11:586e) + dw Predef5CText + dw Predef5CText + dw Predef5CText + dw Predef5CText + dw SafariZoneEastText5 + dw SafariZoneEastText6 + dw SafariZoneEastText7 + +SafariZoneEastText5: ; 4587c (11:587c) + TX_FAR _SafariZoneEastText5 + db "@" + +SafariZoneEastText6: ; 45881 (11:5881) + TX_FAR _SafariZoneEastText6 + db "@" + +SafariZoneEastText7: ; 45886 (11:5886) + TX_FAR _SafariZoneEastText7 + db "@" diff --git a/scripts/safarizoneentrance.asm b/scripts/safarizoneentrance.asm new file mode 100755 index 00000000..d1bc0d37 --- /dev/null +++ b/scripts/safarizoneentrance.asm @@ -0,0 +1,300 @@ +SafariZoneEntranceScript: ; 751cd (1d:51cd) + call EnableAutoTextBoxDrawing + ld hl, SafariZoneEntranceScriptPointers + ld a, [W_SAFARIZONEENTRANCECURSCRIPT] + jp CallFunctionInTable + +SafariZoneEntranceScriptPointers: ; 751d9 (1d:51d9) + dw SafariZoneEntranceScript0 + dw SafariZoneEntranceScript1 + dw SafariZoneEntranceScript2 + dw SafariZoneEntranceScript3 + dw SafariZoneEntranceScript4 + dw SafariZoneEntranceScript5 + dw SafariZoneEntranceScript6 + +SafariZoneEntranceScript0: ; 751e7 (1d:51e7) + ld hl, CoordsData_75221 + call ArePlayerCoordsInArray + ret nc + ld a, $3 + ld [$ff8c], a + call DisplayTextID + ld a, $ff + ld [wJoypadForbiddenButtonsMask], a + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, $c + ld [$c109], a + ld a, [$cd3d] + cp $1 + jr z, .asm_7520f ; 0x75207 $6 + ld a, $2 + ld [W_SAFARIZONEENTRANCECURSCRIPT], a + ret +.asm_7520f + ld a, $10 + ld c, $1 + call SafariZoneEntranceScript_752a3 + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld a, $1 + ld [W_SAFARIZONEENTRANCECURSCRIPT], a + ret + +CoordsData_75221: ; 75221 (1d:5221) + db $02,$03 + db $02,$04 + db $FF + +SafariZoneEntranceScript1: ; 75226 (1d:5226) + call SafariZoneEntranceScript_752b4 + ret nz +SafariZoneEntranceScript2: ; 7522a (1d:522a) + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld [wJoypadForbiddenButtonsMask], a + call UpdateSprites + ld a, $4 + ld [$ff8c], a + call DisplayTextID + ld a, $ff + ld [wJoypadForbiddenButtonsMask], a + ret + +SafariZoneEntranceScript3: ; 75240 (1d:5240) + call SafariZoneEntranceScript_752b4 + ret nz + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $5 + ld [W_SAFARIZONEENTRANCECURSCRIPT], a + ret + +SafariZoneEntranceScript5: ; 7524e (1d:524e) + ld a, $4 + ld [$d528], a + ld hl, $d790 + bit 6, [hl] + res 6, [hl] + jr z, .asm_7527f ; 0x7525a $23 + res 7, [hl] + call UpdateSprites + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld a, $6 + ld [$ff8c], a + call DisplayTextID + xor a + ld [$da47], a + ld a, $80 + ld c, $3 + call SafariZoneEntranceScript_752a3 + ld a, $4 + ld [W_SAFARIZONEENTRANCECURSCRIPT], a + jr .asm_75286 ; 0x7527d $7 +.asm_7527f + ld a, $5 + ld [$ff8c], a + call DisplayTextID +.asm_75286 + ret + +SafariZoneEntranceScript4: ; 75287 (1d:5287) + call SafariZoneEntranceScript_752b4 + ret nz + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $0 + ld [W_SAFARIZONEENTRANCECURSCRIPT], a + ret + +SafariZoneEntranceScript6: ; 75295 (1d:5295) + call SafariZoneEntranceScript_752b4 + ret nz + call Delay3 + ld a, [$cf0d] + ld [W_SAFARIZONEENTRANCECURSCRIPT], a + ret + +SafariZoneEntranceScript_752a3: ; 752a3 (1d:52a3) + push af + ld b, $0 + ld a, c + ld [$cd38], a + ld hl, $ccd3 + pop af + call FillMemory + jp Func_3486 + +SafariZoneEntranceScript_752b4: ; 752b4 (1d:52b4) + ld a, [$cd38] + and a + ret + +SafariZoneEntranceTextPointers: ; 752b9 (1d:52b9) + dw SafariZoneEntranceText1 + dw SafariZoneEntranceText2 + dw SafariZoneEntranceText3 + dw SafariZoneEntranceText4 + dw SafariZoneEntranceText5 + dw SafariZoneEntranceText6 + +SafariZoneEntranceText3: ; 752c5 (1d:52c5) +SafariZoneEntranceText1: ; 752c5 (1d:52c5) + TX_FAR _SafariZoneEntranceText1 + db "@" + +SafariZoneEntranceText4: ; 752ca (1d:52ca) + TX_FAR SafariZoneEntranceText_9e6e4 ; 0x9e6e4 + db $8 + ld a, $13 + ld [$d125], a + call DisplayTextBoxID + call YesNoChoice + ld a, [$cc26] + and a + jp nz, .asm_75346 + xor a + ld [$ff9f], a + ld a, $5 + ld [$ffa0], a + ld a, $0 + ld [$ffa1], a + call HasEnoughMoney + jr nc, .asm_752f9 ; 0x752ef $8 + ld hl, SafariZoneEntranceText_7536a + call PrintText + jr .asm_7534c ; 0x752f7 $53 +.asm_752f9 + xor a + ld [$cd3d], a + ld a, $5 + ld [$cd3e], a + ld a, $0 + ld [$cd3f], a + ld hl, $cd3f + ld de, $d349 + ld c, $3 + ld a, $c + call Predef + ld a, $13 + ld [$d125], a + call DisplayTextBoxID + ld hl, SafariZoneEntranceText_7535b + call PrintText + ld a, $1e + ld [$da47], a + ld a, 502 / $100 + ld [wSafariSteps], a + ld a, 502 % $100 + ld [wSafariSteps + 1], a + ld a, $40 + ld c, $3 + call SafariZoneEntranceScript_752a3 + ld hl, $d790 + set 7, [hl] + res 6, [hl] + ld a, $3 + ld [W_SAFARIZONEENTRANCECURSCRIPT], a + jr .asm_75358 ; 0x75344 $12 +.asm_75346 + ld hl, SafariZoneEntranceText_75365 + call PrintText +.asm_7534c + ld a, $80 + ld c, $1 + call SafariZoneEntranceScript_752a3 + ld a, $4 + ld [W_SAFARIZONEENTRANCECURSCRIPT], a +.asm_75358 + jp TextScriptEnd + +SafariZoneEntranceText_7535b: ; 7535b (1d:535b) + TX_FAR SafariZoneEntranceText_9e747 ; 0x9e747 + db $0B + +SafariZoneEntranceText_75360: ; 75360 (1d:5360) + TX_FAR _SafariZoneEntranceText_75360 + db "@" + +SafariZoneEntranceText_75365: ; 75365 (1d:5365) + TX_FAR _SafariZoneEntranceText_75365 + db "@" + +SafariZoneEntranceText_7536a: ; 7536a (1d:536a) + TX_FAR _SafariZoneEntranceText_7536a + db "@" + +SafariZoneEntranceText5: ; 7536f (1d:536f) + TX_FAR SafariZoneEntranceText_9e814 ; 0x9e814 + db $8 + call YesNoChoice + ld a, [$cc26] + and a + jr nz, .asm_7539c ; 0x7537b $1f + ld hl, SafariZoneEntranceText_753bb + call PrintText + xor a + ld [$c109], a + ld a, $80 + ld c, $3 + call SafariZoneEntranceScript_752a3 + ld hl, $d790 + res 6, [hl] + res 7, [hl] + ld a, $0 + ld [$cf0d], a + jr .asm_753b3 ; 0x7539a $17 +.asm_7539c + ld hl, SafariZoneEntranceText_753c0 + call PrintText + ld a, $4 + ld [$c109], a + ld a, $40 + ld c, $1 + call SafariZoneEntranceScript_752a3 + ld a, $5 + ld [$cf0d], a +.asm_753b3 + ld a, $6 + ld [W_SAFARIZONEENTRANCECURSCRIPT], a + jp TextScriptEnd + +SafariZoneEntranceText_753bb: ; 753bb (1d:53bb) + TX_FAR _SafariZoneEntranceText_753bb + db "@" + +SafariZoneEntranceText_753c0: ; 753c0 (1d:53c0) + TX_FAR _SafariZoneEntranceText_753c0 + db "@" + +SafariZoneEntranceText6: ; 753c5 (1d:53c5) + TX_FAR _SafariZoneEntranceText_753c5 + db "@" + +SafariZoneEntranceText2: ; 753ca (1d:53ca) + db $08 ; asm + ld hl, SafariZoneEntranceText_753e6 + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + ld hl, SafariZoneEntranceText_753f0 + jr nz, .asm_278a6 ; 0x753db + ld hl, SafariZoneEntranceText_753eb +.asm_278a6 ; 0x753e0 + call PrintText + jp TextScriptEnd + +SafariZoneEntranceText_753e6: ; 753e6 (1d:53e6) + TX_FAR _SafariZoneEntranceText_753e6 + db "@" + +SafariZoneEntranceText_753eb: ; 753eb (1d:53eb) + TX_FAR _SafariZoneEntranceText_753eb + db "@" + +SafariZoneEntranceText_753f0: ; 753f0 (1d:53f0) + TX_FAR _SafariZoneEntranceText_753f0 + db "@" diff --git a/scripts/safarizonenorth.asm b/scripts/safarizonenorth.asm new file mode 100755 index 00000000..74790e76 --- /dev/null +++ b/scripts/safarizonenorth.asm @@ -0,0 +1,31 @@ +SafariZoneNorthScript: ; 459ab (11:59ab) + jp EnableAutoTextBoxDrawing + +SafariZoneNorthTextPointers: ; 459ae (11:59ae) + dw Predef5CText + dw Predef5CText + dw SafariZoneNorthText3 + dw SafariZoneNorthText4 + dw SafariZoneNorthText5 + dw SafariZoneNorthText6 + dw SafariZoneNorthText7 + +SafariZoneNorthText3: ; 459bc (11:59bc) + TX_FAR _SafariZoneNorthText3 + db "@" + +SafariZoneNorthText4: ; 459c1 (11:59c1) + TX_FAR _SafariZoneNorthText4 + db "@" + +SafariZoneNorthText5: ; 459c6 (11:59c6) + TX_FAR _SafariZoneNorthText5 + db "@" + +SafariZoneNorthText6: ; 459cb (11:59cb) + TX_FAR _SafariZoneNorthText6 + db "@" + +SafariZoneNorthText7: ; 459d0 (11:59d0) + TX_FAR _SafariZoneNorthText7 + db "@" diff --git a/scripts/safarizoneresthouse1.asm b/scripts/safarizoneresthouse1.asm new file mode 100755 index 00000000..424714e4 --- /dev/null +++ b/scripts/safarizoneresthouse1.asm @@ -0,0 +1,14 @@ +SafariZoneRestHouse1Script: ; 45ced (11:5ced) + jp EnableAutoTextBoxDrawing + +SafariZoneRestHouse1TextPointers: ; 45cf0 (11:5cf0) + dw SafariZoneRestHouse1Text1 + dw SafariZoneRestHouse1Text2 + +SafariZoneRestHouse1Text1: ; 45cf4 (11:5cf4) + TX_FAR _SafariZoneRestHouse1Text1 + db "@" + +SafariZoneRestHouse1Text2: ; 45cf9 (11:5cf9) + TX_FAR _SafariZoneRestHouse1Text2 + db "@" diff --git a/scripts/safarizoneresthouse2.asm b/scripts/safarizoneresthouse2.asm new file mode 100755 index 00000000..23cd53b2 --- /dev/null +++ b/scripts/safarizoneresthouse2.asm @@ -0,0 +1,20 @@ +SafariZoneRestHouse2Script: ; 45d2a (11:5d2a) + call EnableAutoTextBoxDrawing + ret + +SafariZoneRestHouse2TextPointers: ; 45d2e (11:5d2e) + dw SafariZoneRestHouse2Text1 + dw SafariZoneRestHouse2Text2 + dw SafariZoneRestHouse2Text3 + +SafariZoneRestHouse2Text1: ; 45d34 (11:5d34) + TX_FAR _SafariZoneRestHouse2Text1 + db "@" + +SafariZoneRestHouse2Text2: ; 45d39 (11:5d39) + TX_FAR _SafariZoneRestHouse2Text2 + db "@" + +SafariZoneRestHouse2Text3: ; 45d3e (11:5d3e) + TX_FAR _SafariZoneRestHouse2Text3 + db "@" diff --git a/scripts/safarizoneresthouse3.asm b/scripts/safarizoneresthouse3.asm new file mode 100755 index 00000000..2faa1fbb --- /dev/null +++ b/scripts/safarizoneresthouse3.asm @@ -0,0 +1,20 @@ +SafariZoneRestHouse3Script: ; 45d75 (11:5d75) + call EnableAutoTextBoxDrawing + ret + +SafariZoneRestHouse3TextPointers: ; 45d79 (11:5d79) + dw SafariZoneRestHouse3Text1 + dw SafariZoneRestHouse3Text2 + dw SafariZoneRestHouse3Text3 + +SafariZoneRestHouse3Text1: ; 45d7f (11:5d7f) + TX_FAR _SafariZoneRestHouse3Text1 + db "@" + +SafariZoneRestHouse3Text2: ; 45d84 (11:5d84) + TX_FAR _SafariZoneRestHouse3Text2 + db "@" + +SafariZoneRestHouse3Text3: ; 45d89 (11:5d89) + TX_FAR _SafariZoneRestHouse3Text3 + db "@" diff --git a/scripts/safarizoneresthouse4.asm b/scripts/safarizoneresthouse4.asm new file mode 100755 index 00000000..b645431f --- /dev/null +++ b/scripts/safarizoneresthouse4.asm @@ -0,0 +1,20 @@ +SafariZoneRestHouse4Script: ; 45dc0 (11:5dc0) + call EnableAutoTextBoxDrawing + ret + +SafariZoneRestHouse4TextPointers: ; 45dc4 (11:5dc4) + dw SafariZoneRestHouse4Text1 + dw SafariZoneRestHouse4Text2 + dw SafariZoneRestHouse4Text3 + +SafariZoneRestHouse4Text1: ; 45dca (11:5dca) + TX_FAR _SafariZoneRestHouse4Text1 + db "@" + +SafariZoneRestHouse4Text2: ; 45dcf (11:5dcf) + TX_FAR _SafariZoneRestHouse4Text2 + db "@" + +SafariZoneRestHouse4Text3: ; 45dd4 (11:5dd4) + TX_FAR _SafariZoneRestHouse4Text3 + db "@" diff --git a/scripts/safarizonesecrethouse.asm b/scripts/safarizonesecrethouse.asm new file mode 100755 index 00000000..39b7c393 --- /dev/null +++ b/scripts/safarizonesecrethouse.asm @@ -0,0 +1,46 @@ +SafariZoneSecretHouseScript: ; 4a317 (12:6317) + jp EnableAutoTextBoxDrawing + +SafariZoneSecretHouseTextPointers: ; 4a31a (12:631a) + dw SafariZoneSecretHouseText1 + +SafariZoneSecretHouseText1: ; 4a31c (12:631c) + db $08 ; asm + ld a, [$d857] + bit 0, a + jr nz, .asm_20a9b ; 0x4a322 + ld hl, SafariZoneSecretHouseText_4a350 + call PrintText + ld bc, (HM_03 << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, ReceivedHM03Text + call PrintText + ld hl, $d857 + set 0, [hl] + jr .asm_8f1fc ; 0x4a33d +.BagFull + ld hl, HM03NoRoomText + call PrintText + jr .asm_8f1fc ; 0x4a345 +.asm_20a9b ; 0x4a347 + ld hl, HM03ExplanationText + call PrintText +.asm_8f1fc ; 0x4a34d + jp TextScriptEnd + +SafariZoneSecretHouseText_4a350: ; 4a350 (12:6350) + TX_FAR _SecretHouseText_4a350 + db "@" + +ReceivedHM03Text: ; 4a355 (12:6355) + TX_FAR _ReceivedHM03Text + db $0B, "@" + +HM03ExplanationText: ; 4a35b (12:635b) + TX_FAR _HM03ExplanationText + db "@" + +HM03NoRoomText: ; 4a360 (12:6360) + TX_FAR _HM03NoRoomText + db "@" diff --git a/scripts/safarizonewest.asm b/scripts/safarizonewest.asm new file mode 100755 index 00000000..1465af56 --- /dev/null +++ b/scripts/safarizonewest.asm @@ -0,0 +1,28 @@ +SafariZoneWestScript: ; 4a1b5 (12:61b5) + jp EnableAutoTextBoxDrawing + +SafariZoneWestTextPointers: ; 4a1b8 (12:61b8) + dw Predef5CText + dw Predef5CText + dw Predef5CText + dw Predef5CText + dw SafariZoneWestText5 + dw SafariZoneWestText6 + dw SafariZoneWestText7 + dw SafariZoneWestText8 + +SafariZoneWestText5: ; 4a1c8 (12:61c8) + TX_FAR _SafariZoneWestText5 + db "@" + +SafariZoneWestText6: ; 4a1cd (12:61cd) + TX_FAR _SafariZoneWestText6 + db "@" + +SafariZoneWestText7: ; 4a1d2 (12:61d2) + TX_FAR _SafariZoneWestText7 + db "@" + +SafariZoneWestText8: ; 4a1d7 (12:61d7) + TX_FAR _SafariZoneWestText8 + db "@" diff --git a/scripts/saffroncity.asm b/scripts/saffroncity.asm new file mode 100755 index 00000000..d8e7d0c6 --- /dev/null +++ b/scripts/saffroncity.asm @@ -0,0 +1,121 @@ +SaffronCityScript: ; 50c00 (14:4c00) + jp EnableAutoTextBoxDrawing + +SaffronCityTextPointers: ; 50c03 (14:4c03) + dw SaffronCityText1 + dw SaffronCityText2 + dw SaffronCityText3 + dw SaffronCityText4 + dw SaffronCityText5 + dw SaffronCityText6 + dw SaffronCityText7 + dw SaffronCityText8 + dw SaffronCityText9 + dw SaffronCityText10 + dw SaffronCityText11 + dw SaffronCityText12 + dw SaffronCityText13 + dw SaffronCityText14 + dw SaffronCityText15 + dw SaffronCityText16 + dw SaffronCityText17 + dw SaffronCityText18 + dw MartSignText + dw SaffronCityText20 + dw SaffronCityText21 + dw SaffronCityText22 + dw PokeCenterSignText + dw SaffronCityText24 + dw SaffronCityText25 + +SaffronCityText1: ; 50c35 (14:4c35) + TX_FAR _SaffronCityText1 + db "@" + +SaffronCityText2: ; 50c3a (14:4c3a) + TX_FAR _SaffronCityText2 + db "@" + +SaffronCityText3: ; 50c3f (14:4c3f) + TX_FAR _SaffronCityText3 + db "@" + +SaffronCityText4: ; 50c44 (14:4c44) + TX_FAR _SaffronCityText4 + db "@" + +SaffronCityText5: ; 50c49 (14:4c49) + TX_FAR _SaffronCityText5 + db "@" + +SaffronCityText6: ; 50c4e (14:4c4e) + TX_FAR _SaffronCityText6 + db "@" + +SaffronCityText7: ; 50c53 (14:4c53) + TX_FAR _SaffronCityText7 + db "@" + +SaffronCityText8: ; 50c58 (14:4c58) + TX_FAR _SaffronCityText8 + db "@" + +SaffronCityText9: ; 50c5d (14:4c5d) + TX_FAR _SaffronCityText9 + db "@" + +SaffronCityText10: ; 50c62 (14:4c62) + TX_FAR _SaffronCityText10 + db "@" + +SaffronCityText11: ; 50c67 (14:4c67) + TX_FAR _SaffronCityText11 + db "@" + +SaffronCityText12: ; 50c6c (14:4c6c) + TX_FAR _SaffronCityText12 + db $15, "@" + +SaffronCityText13: ; 50c72 (14:4c72) + TX_FAR _SaffronCityText13 + db "@" + +SaffronCityText14: ; 50c77 (14:4c77) + TX_FAR _SaffronCityText14 + db "@" + +SaffronCityText15: ; 50c7c (14:4c7c) + TX_FAR _SaffronCityText15 + db "@" + +SaffronCityText16: ; 50c81 (14:4c81) + TX_FAR _SaffronCityText16 + db "@" + +SaffronCityText17: ; 50c86 (14:4c86) + TX_FAR _SaffronCityText17 + db "@" + +SaffronCityText18: ; 50c8b (14:4c8b) + TX_FAR _SaffronCityText18 + db "@" + +SaffronCityText20: ; 50c90 (14:4c90) + TX_FAR _SaffronCityText20 + db "@" + +SaffronCityText21: ; 50c95 (14:4c95) + TX_FAR _SaffronCityText21 + db "@" + +SaffronCityText22: ; 50c9a (14:4c9a) + TX_FAR _SaffronCityText22 + db "@" + +SaffronCityText24: ; 50c9f (14:4c9f) + TX_FAR _SaffronCityText24 + db "@" + +SaffronCityText25: ; 50ca4 (14:4ca4) + TX_FAR _SaffronCityText25 + db "@" diff --git a/scripts/saffrongym.asm b/scripts/saffrongym.asm new file mode 100755 index 00000000..40482831 --- /dev/null +++ b/scripts/saffrongym.asm @@ -0,0 +1,367 @@ +SaffronGymScript: ; 5d00d (17:500d) + ld hl, $d126 + bit 6, [hl] + res 6, [hl] + call nz, .extra + call EnableAutoTextBoxDrawing + ld hl, SaffronGymTrainerHeader0 + ld de, SaffronGymScriptPointers + ld a, [W_SAFFRONGYMCURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_SAFFRONGYMCURSCRIPT], a + ret + +.extra + ld hl, Gym6CityName ; $5033 + ld de, Gym6LeaderName ; $5040 + jp LoadGymLeaderAndCityName + +Gym6CityName: ; 5d033 (17:5033) + db "SAFFRON CITY@" + +Gym6LeaderName: ; 5d040 (17:5040) + db "SABRINA@" + +SaffronGymText_5d048: ; 5d048 (17:5048) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_SAFFRONGYMCURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +SaffronGymScriptPointers: ; 5d053 (17:5053) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + dw SaffronGymScript3 + +SaffronGymScript3: ; 5d05b (17:505b) + ld a, [W_ISINBATTLE] ; $d057 + cp $ff + jp z, SaffronGymText_5d048 + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + +SaffronGymText_5d068: ; 5d068 (17:5068) + ld a, $a + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld hl, $d7b3 + set 1, [hl] + ld bc, (TM_46 << 8) | 1 + call GiveItem + jr nc, .BagFull + ld a, $b + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld hl, $d7b3 + set 0, [hl] + jr .asm_5d091 +.BagFull + ld a, $c + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID +.asm_5d091 + ld hl, W_OBTAINEDBADGES + set 5, [hl] + ld hl, $d72a + set 5, [hl] + + ; deactivate gym trainers + ld a, [$d7b3] + or %11111100 + ld [$d7b3], a + ld hl, $d7b4 + set 0, [hl] + + jp SaffronGymText_5d048 + +SaffronGymTextPointers: ; 5d0ab (17:50ab) + dw SaffronGymText1 + dw SaffronGymText2 + dw SaffronGymText3 + dw SaffronGymText4 + dw SaffronGymText5 + dw SaffronGymText6 + dw SaffronGymText7 + dw SaffronGymText8 + dw SaffronGymText9 + dw SaffronGymText10 + dw SaffronGymText11 + dw SaffronGymText12 + +SaffronGymTrainerHeaders: ; 5d0c3 (17:50c3) +SaffronGymTrainerHeader0: ; 5d0c3 (17:50c3) + db $2 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7b3 ; flag's byte + dw SaffronGymBattleText1 ; 0x51f0 TextBeforeBattle + dw SaffronGymAfterBattleText1 ; 0x51fa TextAfterBattle + dw SaffronGymEndBattleText1 ; 0x51f5 TextEndBattle + dw SaffronGymEndBattleText1 ; 0x51f5 TextEndBattle + +SaffronGymTrainerHeader1: ; 5d0cf (17:50cf) + db $3 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7b3 ; flag's byte + dw SaffronGymBattleText2 ; 0x51ff TextBeforeBattle + dw SaffronGymAfterBattleText2 ; 0x5209 TextAfterBattle + dw SaffronGymEndBattleText2 ; 0x5204 TextEndBattle + dw SaffronGymEndBattleText2 ; 0x5204 TextEndBattle + +SaffronGymTrainerHeader2: ; 5d0db (17:50db) + db $4 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7b3 ; flag's byte + dw SaffronGymBattleText3 ; 0x520e TextBeforeBattle + dw SaffronGymAfterBattleText3 ; 0x5218 TextAfterBattle + dw SaffronGymEndBattleText3 ; 0x5213 TextEndBattle + dw SaffronGymEndBattleText3 ; 0x5213 TextEndBattle + +SaffronGymTrainerHeader3: ; 5d0e7 (17:50e7) + db $5 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7b3 ; flag's byte + dw SaffronGymBattleText4 ; 0x521d TextBeforeBattle + dw SaffronGymAfterBattleText4 ; 0x5227 TextAfterBattle + dw SaffronGymEndBattleText4 ; 0x5222 TextEndBattle + dw SaffronGymEndBattleText4 ; 0x5222 TextEndBattle + +SaffronGymTrainerHeader4: ; 5d0f3 (17:50f3) + db $6 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7b3 ; flag's byte + dw SaffronGymBattleText5 ; 0x522c TextBeforeBattle + dw SaffronGymAfterBattleText5 ; 0x5236 TextAfterBattle + dw SaffronGymEndBattleText5 ; 0x5231 TextEndBattle + dw SaffronGymEndBattleText5 ; 0x5231 TextEndBattle + +SaffronGymTrainerHeader5: ; 5d0ff (17:50ff) + db $7 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7b3 ; flag's byte + dw SaffronGymBattleText6 ; 0x523b TextBeforeBattle + dw SaffronGymAfterBattleText6 ; 0x5245 TextAfterBattle + dw SaffronGymEndBattleText6 ; 0x5240 TextEndBattle + dw SaffronGymEndBattleText6 ; 0x5240 TextEndBattle + +SaffronGymTrainerHeader6: ; 5d10b (17:510b) + db $8 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7b3 ; flag's byte + dw SaffronGymBattleText7 ; 0x524a TextBeforeBattle + dw SaffronGymAfterBattleText7 ; 0x5254 TextAfterBattle + dw SaffronGymEndBattleText7 ; 0x524f TextEndBattle + dw SaffronGymEndBattleText7 ; 0x524f TextEndBattle + + db $ff + +SaffronGymText1: ; 5d118 (17:5118) + db $08 ; asm + ld a, [$d7b3] + bit 1, a + jr z, .asm_e3544 ; 0x5d11e + bit 0, a + jr nz, .asm_8d2f6 ; 0x5d122 + call z, SaffronGymText_5d068 + call DisableWaitingAfterTextDisplay + jr .asm_34c2c ; 0x5d12a +.asm_8d2f6 ; 0x5d12c + ld hl, SaffronGymText_5d16e + call PrintText + jr .asm_34c2c ; 0x5d132 +.asm_e3544 ; 0x5d134 + ld hl, SaffronGymText_5d162 + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, SaffronGymText_5d167 + ld de, SaffronGymText_5d167 + call PreBattleSaveRegisters + ldh a, [$8c] + ld [$cf13], a + call EngageMapTrainer + call InitBattleEnemyParameters + ld a, $6 + ld [$d05c], a + ld a, $3 + ld [W_SAFFRONGYMCURSCRIPT], a +.asm_34c2c ; 0x5d15f + jp TextScriptEnd + +SaffronGymText_5d162: ; 5d162 (17:5162) + TX_FAR _SaffronGymText_5d162 + db "@" + +SaffronGymText_5d167: ; 5d167 (17:5167) + TX_FAR _SaffronGymText_5d167 ; 0xa1c73 + db $11 ; play same sound as red giving oak parcel + db $6 ; wait for keypress + db "@" + +SaffronGymText_5d16e: ; 5d16e (17:516e) + TX_FAR _SaffronGymText_5d16e + db "@" + +SaffronGymText10: ; 5d173 (17:5173) + TX_FAR _SaffronGymText_5d173 + db "@" + +SaffronGymText11: ; 5d178 (17:5178) + TX_FAR ReceivedTM46Text + db $b + TX_FAR _TM46ExplanationText + db "@" + +SaffronGymText12: ; 5d182 (17:5182) + TX_FAR _TM46NoRoomText + db "@" + +SaffronGymText2: ; 5d187 (17:5187) + db $08 ; asm + ld hl, SaffronGymTrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +SaffronGymText3: ; 5d191 (17:5191) + db $08 ; asm + ld hl, SaffronGymTrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +SaffronGymText4: ; 5d19b (17:519b) + db $08 ; asm + ld hl, SaffronGymTrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +SaffronGymText5: ; 5d1a5 (17:51a5) + db $08 ; asm + ld hl, SaffronGymTrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +SaffronGymText6: ; 5d1af (17:51af) + db $08 ; asm + ld hl, SaffronGymTrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +SaffronGymText7: ; 5d1b9 (17:51b9) + db $08 ; asm + ld hl, SaffronGymTrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +SaffronGymText8: ; 5d1c3 (17:51c3) + db $08 ; asm + ld hl, SaffronGymTrainerHeader6 + call TalkToTrainer + jp TextScriptEnd + +SaffronGymText9: ; 5d1cd (17:51cd) + db $08 ; asm + ld a, [$d7b3] + bit 1, a + jr nz, .asm_13f3c ; 0x5d1d3 + ld hl, SaffronGymText_5d1e6 + call PrintText + jr .asm_e9907 ; 0x5d1db +.asm_13f3c ; 0x5d1dd + ld hl, SaffronGymText_5d1eb + call PrintText +.asm_e9907 ; 0x5d1e3 + jp TextScriptEnd + +SaffronGymText_5d1e6: ; 5d1e6 (17:51e6) + TX_FAR _SaffronGymText_5d1e6 + db "@" + +SaffronGymText_5d1eb: ; 5d1eb (17:51eb) + TX_FAR _SaffronGymText_5d1eb + db "@" + +SaffronGymBattleText1: ; 5d1f0 (17:51f0) + TX_FAR _SaffronGymBattleText1 + db "@" + +SaffronGymEndBattleText1: ; 5d1f5 (17:51f5) + TX_FAR _SaffronGymEndBattleText1 + db "@" + +SaffronGymAfterBattleText1: ; 5d1fa (17:51fa) + TX_FAR _SaffronGymAfterBattleText1 + db "@" + +SaffronGymBattleText2: ; 5d1ff (17:51ff) + TX_FAR _SaffronGymBattleText2 + db "@" + +SaffronGymEndBattleText2: ; 5d204 (17:5204) + TX_FAR _SaffronGymEndBattleText2 + db "@" + +SaffronGymAfterBattleText2: ; 5d209 (17:5209) + TX_FAR _SaffronGymAfterBattleText2 + db "@" + +SaffronGymBattleText3: ; 5d20e (17:520e) + TX_FAR _SaffronGymBattleText3 + db "@" + +SaffronGymEndBattleText3: ; 5d213 (17:5213) + TX_FAR _SaffronGymEndBattleText3 + db "@" + +SaffronGymAfterBattleText3: ; 5d218 (17:5218) + TX_FAR _SaffronGymAfterBattleText3 + db "@" + +SaffronGymBattleText4: ; 5d21d (17:521d) + TX_FAR _SaffronGymBattleText4 + db "@" + +SaffronGymEndBattleText4: ; 5d222 (17:5222) + TX_FAR _SaffronGymEndBattleText4 + db "@" + +SaffronGymAfterBattleText4: ; 5d227 (17:5227) + TX_FAR _SaffronGymAfterBattleText4 + db "@" + +SaffronGymBattleText5: ; 5d22c (17:522c) + TX_FAR _SaffronGymBattleText5 + db "@" + +SaffronGymEndBattleText5: ; 5d231 (17:5231) + TX_FAR _SaffronGymEndBattleText5 + db "@" + +SaffronGymAfterBattleText5: ; 5d236 (17:5236) + TX_FAR _SaffronGymAfterBattleText5 + db "@" + +SaffronGymBattleText6: ; 5d23b (17:523b) + TX_FAR _SaffronGymBattleText6 + db "@" + +SaffronGymEndBattleText6: ; 5d240 (17:5240) + TX_FAR _SaffronGymEndBattleText6 + db "@" + +SaffronGymAfterBattleText6: ; 5d245 (17:5245) + TX_FAR _SaffronGymAfterBattleText6 + db "@" + +SaffronGymBattleText7: ; 5d24a (17:524a) + TX_FAR _SaffronGymBattleText7 + db "@" + +SaffronGymEndBattleText7: ; 5d24f (17:524f) + TX_FAR _SaffronGymEndBattleText7 + db "@" + +SaffronGymAfterBattleText7: ; 5d254 (17:5254) + TX_FAR _SaffronGymAfterBattleText7 + db "@" diff --git a/scripts/saffronhouse1.asm b/scripts/saffronhouse1.asm new file mode 100755 index 00000000..39a70ebf --- /dev/null +++ b/scripts/saffronhouse1.asm @@ -0,0 +1,27 @@ +SaffronHouse1Script: ; 1dddd (7:5ddd) + jp EnableAutoTextBoxDrawing + +SaffronHouse1TextPointers: ; 1dde0 (7:5de0) + dw SaffronHouse1Text1 + dw SaffronHouse1Text2 + dw SaffronHouse1Text3 + dw SaffronHouse1Text4 + +SaffronHouse1Text1: ; 1dde8 (7:5de8) + TX_FAR _SaffronHouse1Text1 + db "@" + +SaffronHouse1Text2: ; 1dded (7:5ded) + TX_FAR _SaffronHouse1Text2 + db $8 + ld a, PIDGEY + call PlayCry + jp TextScriptEnd + +SaffronHouse1Text3: ; 1ddfa (7:5dfa) + TX_FAR _SaffronHouse1Text3 + db "@" + +SaffronHouse1Text4: ; 1ddff (7:5dff) + TX_FAR _SaffronHouse1Text4 + db "@" diff --git a/scripts/saffronhouse2.asm b/scripts/saffronhouse2.asm new file mode 100755 index 00000000..a48ec3f6 --- /dev/null +++ b/scripts/saffronhouse2.asm @@ -0,0 +1,46 @@ +SaffronHouse2Script: ; 1de3c (7:5e3c) + jp EnableAutoTextBoxDrawing + +SaffronHouse2TextPointers: ; 1de3f (7:5e3f) + dw SaffronHouse2Text1 + +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 + +TM29PreReceiveText: ; 1de75 (7:5e75) + TX_FAR _TM29PreReceiveText + db "@" + +ReceivedTM29Text: ; 1de7a (7:5e7a) + TX_FAR _ReceivedTM29Text + db $0B, "@" + +TM29ExplanationText: ; 1de80 (7:5e80) + TX_FAR _TM29ExplanationText + db "@" + +TM29NoRoomText: ; 1de85 (7:5e85) + TX_FAR _TM29NoRoomText + db "@" diff --git a/scripts/saffronmart.asm b/scripts/saffronmart.asm new file mode 100755 index 00000000..9ee1db0e --- /dev/null +++ b/scripts/saffronmart.asm @@ -0,0 +1,15 @@ +SaffronMartScript: ; 5d409 (17:5409) + jp EnableAutoTextBoxDrawing + +SaffronMartTextPointers: ; 5d40c (17:540c) + dw SaffronMartText1 + dw SaffronMartText2 + dw SaffronMartText3 + +SaffronMartText2: ; 5d412 (17:5412) + TX_FAR _SaffronMartText2 + db "@" + +SaffronMartText3: ; 5d417 (17:5417) + TX_FAR _SaffronMartText3 + db "@" diff --git a/scripts/saffronpokecenter.asm b/scripts/saffronpokecenter.asm new file mode 100755 index 00000000..7f3a656a --- /dev/null +++ b/scripts/saffronpokecenter.asm @@ -0,0 +1,23 @@ +SaffronPokecenterScript: ; 5d535 (17:5535) + call Func_22fa + jp EnableAutoTextBoxDrawing + +SaffronPokecenterTextPointers: ; 5d53b (17:553b) + dw SaffronPokecenterText1 + dw SaffronPokecenterText2 + dw SaffronPokecenterText3 + dw SaffronPokecenterText4 + +SaffronPokecenterText1: ; 5d543 (17:5543) + db $ff + +SaffronPokecenterText2: ; 5d544 (17:5544) + TX_FAR _SaffronPokecenterText1 + db "@" + +SaffronPokecenterText3: ; 5d549 (17:5549) + TX_FAR _SaffronPokecenterText3 + db "@" + +SaffronPokecenterText4: ; 5d54e (17:554e) + db $f6 diff --git a/scripts/school.asm b/scripts/school.asm new file mode 100755 index 00000000..57eb58c8 --- /dev/null +++ b/scripts/school.asm @@ -0,0 +1,14 @@ +SchoolScript: ; 1d54c (7:554c) + jp EnableAutoTextBoxDrawing + +SchoolTextPointers: ; 1d54f (7:554f) + dw SchoolText1 + dw SchoolText2 + +SchoolText1: ; 1d553 (7:5553) + TX_FAR _SchoolText1 + db "@" + +SchoolText2: ; 1d558 (7:5558) + TX_FAR _SchoolText2 + db "@" diff --git a/scripts/seafoamislands1.asm b/scripts/seafoamislands1.asm new file mode 100755 index 00000000..3d20a653 --- /dev/null +++ b/scripts/seafoamislands1.asm @@ -0,0 +1,50 @@ +SeafoamIslands1Script: ; 447e9 (11:47e9) + call EnableAutoTextBoxDrawing + ld hl, $d7e7 + set 0, [hl] + ld hl, wFlags_0xcd60 + bit 7, [hl] + res 7, [hl] + jr z, .asm_4483b ; 0x447f8 $41 + ld hl, Seafoam1HolesCoords + call CheckBoulderCoords + ret nc + ld hl, $d7e8 + ld a, [$cd3d] + cp $1 + jr nz, .asm_44819 ; 0x44809 $e + set 6, [hl] + ld a, $d7 + ld [$d079], a + ld a, $d9 + ld [$d07a], a + jr .asm_44825 ; 0x44817 $c +.asm_44819 + set 7, [hl] + ld a, $d8 + ld [$d079], a + ld a, $da + ld [$d07a], a +.asm_44825 + ld a, [$d079] + ld [$cc4d], a + ld a, $11 + call Predef + ld a, [$d07a] + ld [$cc4d], a + ld a, $15 + jp Predef +.asm_4483b + ld a, $9f + ld [$d71d], a + ld hl, Seafoam1HolesCoords + jp Func_46981 + +Seafoam1HolesCoords: ; 44846 (11:4846) + db $06,$11 + db $06,$18 + db $ff + +SeafoamIslands1TextPointers: ; 4484b (11:484b) + dw BoulderText + dw BoulderText diff --git a/scripts/seafoamislands2.asm b/scripts/seafoamislands2.asm new file mode 100755 index 00000000..a20bf497 --- /dev/null +++ b/scripts/seafoamislands2.asm @@ -0,0 +1,48 @@ +SeafoamIslands2Script: ; 46315 (11:6315) + call EnableAutoTextBoxDrawing + ld hl, wFlags_0xcd60 + bit 7, [hl] + res 7, [hl] + jr z, .asm_46362 ; 0x4631f $41 + ld hl, Seafoam2HolesCoords + call CheckBoulderCoords + ret nc + ld hl, $d87f + ld a, [$cd3d] + cp $1 + jr nz, .asm_46340 ; 0x46330 $e + set 0, [hl] + ld a, $d9 + ld [$d079], a + ld a, $db + ld [$d07a], a + jr .asm_4634c ; 0x4633e $c +.asm_46340 + set 1, [hl] + ld a, $da + ld [$d079], a + ld a, $dc + ld [$d07a], a +.asm_4634c + ld a, [$d079] + ld [$cc4d], a + ld a, $11 + call Predef + ld a, [$d07a] + ld [$cc4d], a + ld a, $15 + jp Predef +.asm_46362 + ld a, $a0 + ld [$d71d], a + ld hl, Seafoam2HolesCoords + jp Func_46981 + +Seafoam2HolesCoords: ; 4636d (11:636d) + db $06,$12 + db $06,$17 + db $ff + +SeafoamIslands2TextPointers: ; 46372 (11:6372) + dw BoulderText + dw BoulderText diff --git a/scripts/seafoamislands3.asm b/scripts/seafoamislands3.asm new file mode 100755 index 00000000..a6e00936 --- /dev/null +++ b/scripts/seafoamislands3.asm @@ -0,0 +1,48 @@ +SeafoamIslands3Script: ; 46451 (11:6451) + call EnableAutoTextBoxDrawing + ld hl, wFlags_0xcd60 + bit 7, [hl] + res 7, [hl] + jr z, .asm_4649e ; 0x4645b $41 + ld hl, Seafoam3HolesCoords + call CheckBoulderCoords + ret nc + ld hl, $d880 + ld a, [$cd3d] + cp $1 + jr nz, .asm_4647c ; 0x4646c $e + set 0, [hl] + ld a, $db + ld [$d079], a + ld a, $df + ld [$d07a], a + jr .asm_46488 ; 0x4647a $c +.asm_4647c + set 1, [hl] + ld a, $dc + ld [$d079], a + ld a, $e0 + ld [$d07a], a +.asm_46488 + ld a, [$d079] + ld [$cc4d], a + ld a, $11 + call Predef + ld a, [$d07a] + ld [$cc4d], a + ld a, $15 + jp Predef +.asm_4649e + ld a, $a1 + ld [$d71d], a + ld hl, Seafoam3HolesCoords + jp Func_46981 + +Seafoam3HolesCoords: ; 464a9 (11:64a9) + db $06,$13 + db $06,$16 + db $ff + +SeafoamIslands3TextPointers: ; 464ae (11:64ae) + dw BoulderText + dw BoulderText diff --git a/scripts/seafoamislands4.asm b/scripts/seafoamislands4.asm new file mode 100755 index 00000000..c7be0f44 --- /dev/null +++ b/scripts/seafoamislands4.asm @@ -0,0 +1,148 @@ +SeafoamIslands4Script: ; 4658d (11:658d) + call EnableAutoTextBoxDrawing + ld hl, wFlags_0xcd60 + bit 7, [hl] + res 7, [hl] + jr z, .asm_465dc ; 0x46597 $43 + ld hl, Seafoam4HolesCoords + call CheckBoulderCoords + ret nc + ld hl, $d881 + ld a, [$cd3d] + cp $1 + jr nz, .asm_465b8 ; 0x465a8 $e + set 0, [hl] + ld a, $dd + ld [$d079], a + ld a, $e1 + ld [$d07a], a + jr .asm_465c4 ; 0x465b6 $c +.asm_465b8 + set 1, [hl] + ld a, $de + ld [$d079], a + ld a, $e2 + ld [$d07a], a +.asm_465c4 + ld a, [$d079] + ld [$cc4d], a + ld a, $11 + call Predef + ld a, [$d07a] + ld [$cc4d], a + ld a, $15 + call Predef + jr .asm_465ed ; 0x465da $11 +.asm_465dc + ld a, $a2 + ld [$d71d], a + ld hl, Seafoam4HolesCoords + call Func_46981 + ld a, [$d732] + bit 4, a + ret nz +.asm_465ed + ld hl, SeafoamIslands4ScriptPointers + ld a, [W_SEAFOAMISLANDS4CURSCRIPT] + jp CallFunctionInTable + +Seafoam4HolesCoords: ; 465f6 (11:65f6) + db $10,$03 + db $10,$06 + db $ff + +SeafoamIslands4ScriptPointers: ; 465fb (11:65fb) + dw SeafoamIslands4Script0 + dw SeafoamIslands4Script1 + dw SeafoamIslands4Script2 + dw SeafoamIslands4Script3 + +SeafoamIslands4Script0: ; 46603 (11:6603) + ld a, [$d880] + and $3 + cp $3 + ret z + ld a, [W_YCOORD] + cp $8 + ret nz + ld a, [W_XCOORD] + cp $f + ret nz + ld hl, $ccd3 + ld de, RLEMovement46632 + call DecodeRLEList + dec a + ld [$cd38], a + call Func_3486 + ld hl, W_FLAGS_D733 + set 2, [hl] + ld a, $1 + ld [W_SEAFOAMISLANDS4CURSCRIPT], a + ret + +RLEMovement46632: ; 46632 (11:6632) + db $80,6 + db $10,5 + db $80,3 + db $ff + +SeafoamIslands4Script1: ; 46639 (11:6639) + ld a, [$cd38] + and a + ret nz + ld a, $0 + ld [W_SEAFOAMISLANDS4CURSCRIPT], a + ret + +SeafoamIslands4Script2: ; 46644 (11:6644) + ld a, [$d880] + and $3 + cp $3 + ret z + ld a, [W_XCOORD] + cp $12 + jr z, .asm_4665e + cp $13 + ld a, $0 + jr nz, .asm_4667b + ld de, RLEData_4667f + jr .asm_46661 +.asm_4665e + ld de, RLEData_46688 +.asm_46661 + ld hl, $ccd3 + call DecodeRLEList + dec a + ld [$cd38], a + xor a + ld [$c206], a + ld hl, $d730 + set 7, [hl] + ld hl, W_FLAGS_D733 + set 2, [hl] + ld a, $3 +.asm_4667b + ld [W_SEAFOAMISLANDS4CURSCRIPT], a + ret + +RLEData_4667f: ; 4667f (11:667f) + db $80,$06,$10,$02,$80,$04,$20,$01,$FF + +RLEData_46688: ; 46688 (11:6688) + db $80,$06,$10,$02,$80,$04,$FF + +SeafoamIslands4Script3: ; 4668f (11:668f) + ld a, [$cd38] + and a + ret nz + ld a, $0 + ld [W_SEAFOAMISLANDS4CURSCRIPT], a + ret + +SeafoamIslands4TextPointers: ; 4669a (11:669a) + dw BoulderText + dw BoulderText + dw BoulderText + dw BoulderText + dw BoulderText + dw BoulderText diff --git a/scripts/seafoamislands5.asm b/scripts/seafoamislands5.asm new file mode 100755 index 00000000..153a1bb6 --- /dev/null +++ b/scripts/seafoamislands5.asm @@ -0,0 +1,178 @@ +SeafoamIslands5Script: ; 46799 (11:6799) + call EnableAutoTextBoxDrawing + ld a, [W_SEAFOAMISLANDS5CURSCRIPT] + ld hl, SeafoamIslands5ScriptPointers + jp CallFunctionInTable + +SeafoamIslands5Script_467a5: ; 467a5 (11:67a5) + xor a + ld [W_SEAFOAMISLANDS5CURSCRIPT], a + ld [wJoypadForbiddenButtonsMask], a + ret + +SeafoamIslands5ScriptPointers: ; 467ad (11:67ad) + dw SeafoamIslands5Script0 + dw SeafoamIslands5Script1 + dw SeafoamIslands5Script2 + dw SeafoamIslands5Script3 + dw SeafoamIslands5Script4 + +SeafoamIslands5Script4: ; 467b7 (11:67b7) + ld a, [W_ISINBATTLE] + cp $ff + jr z, SeafoamIslands5Script_467a5 + call EndTrainerBattle + ld a, $0 + ld [W_SEAFOAMISLANDS5CURSCRIPT], a + ret + +SeafoamIslands5Script0: ; 467c7 (11:67c7) + ld a, [$d880] + and $3 + cp $3 + ret z + ld hl, CoordsData_467fe + call ArePlayerCoordsInArray + ret nc + ld a, [$cd3d] + cp $3 + jr nc, .asm_467e6 + ld a, $40 + ld [$ccd4], a + ld a, $2 + jr .asm_467e8 +.asm_467e6 + ld a, $1 +.asm_467e8 + ld [$cd38], a + ld a, $40 + ld [$ccd3], a + call Func_3486 + ld hl, W_FLAGS_D733 + res 2, [hl] + ld a, $1 + ld [W_SEAFOAMISLANDS5CURSCRIPT], a + ret + +CoordsData_467fe: ; 467fe (11:67fe) + db $11,$14 + db $11,$15 + db $10,$14 + db $10,$15 + db $FF + +SeafoamIslands5Script1: ; 46807 (11:6807) + ld a, [$cd38] + and a + ret nz + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $0 + ld [W_SEAFOAMISLANDS5CURSCRIPT], a + ret + +SeafoamIslands5Script2: ; 46816 (11:6816) + ld a, [$d881] + and $3 + cp $3 + ld a, $0 + jr z, .asm_46849 + ld hl, CoordsData_4684d + call ArePlayerCoordsInArray + ld a, $0 + jr nc, .asm_46849 + ld a, [$cd3d] + cp $1 + jr nz, .asm_46837 + ld de, RLEMovementData_46859 + jr .asm_4683a +.asm_46837 + ld de, RLEMovementData_46852 +.asm_4683a + ld hl, $ccd3 + call DecodeRLEList + dec a + ld [$cd38], a + call Func_3486 + ld a, $3 +.asm_46849 + ld [W_SEAFOAMISLANDS5CURSCRIPT], a + ret + +CoordsData_4684d: ; 4684d (11:684d) + db $0E,$04 + db $0E,$05 + db $FF + +RLEMovementData_46852: ; 46852 (11:6852) + db $40,$03 + db $10,$02 + db $40,$01 + db $FF + +RLEMovementData_46859: ; 46859 (11:6859) + db $40,$03 + db $10,$03 + db $40,$01 + db $FF + +SeafoamIslands5Script3: ; 46860 (11:6860) + ld a, [$cd38] + ld b, a + cp $1 + call z, SeaFoamIslands5Script_46872 + ld a, b + and a + ret nz + ld a, $0 + ld [W_SEAFOAMISLANDS5CURSCRIPT], a + ret + +SeaFoamIslands5Script_46872: ; 46872 (11:6872) + xor a + ld [$d700], a + ld [$d11a], a + jp ForceBikeOrSurf + +SeafoamIslands5TextPointers: ; 4687c (11:687c) + dw BoulderText + dw BoulderText + dw SeafoamIslands5Text3 + dw SeafoamIslands5Text4 + dw SeafoamIslands5Text5 + +SeafoamIslands5TrainerHeaders: ; 46886 (11:6886) +SeafoamIslands5TrainerHeader0: ; 46886 (11:6886) + db $2 ; flag's bit + db ($0 << 4) ; trainer's view range + dw $d882 ; flag's byte + dw SeafoamIslands5BattleText2 ; 0x68a2 TextBeforeBattle + dw SeafoamIslands5BattleText2 ; 0x68a2 TextAfterBattle + dw SeafoamIslands5BattleText2 ; 0x68a2 TextEndBattle + dw SeafoamIslands5BattleText2 ; 0x68a2 TextEndBattle + + db $ff + +SeafoamIslands5Text3: ; 46893 (11:6893) + db $08 ; asm + ld hl, SeafoamIslands5TrainerHeader0 + call TalkToTrainer + ld a, $4 + ld [W_SEAFOAMISLANDS5CURSCRIPT], a + jp TextScriptEnd + +SeafoamIslands5BattleText2: ; 468a2 (11:68a2) + TX_FAR _SeafoamIslands5BattleText2 + db $8 + ld a, ARTICUNO + call PlayCry + call WaitForSoundToFinish + jp TextScriptEnd + +SeafoamIslands5Text4: ; 468b2 (11:68b2) + TX_FAR _SeafoamIslands5Text4 + db "@" + +SeafoamIslands5Text5: ; 468b7 (11:68b7) + TX_FAR _SeafoamIslands5Text5 + db "@" diff --git a/scripts/silphco1.asm b/scripts/silphco1.asm new file mode 100755 index 00000000..64f93cdc --- /dev/null +++ b/scripts/silphco1.asm @@ -0,0 +1,20 @@ +SilphCo1Script: ; 5d44e (17:544e) + call EnableAutoTextBoxDrawing + ld a, [$d838] + bit 7, a + ret z + ld hl, $d7b9 + bit 7, [hl] + set 7, [hl] + ret nz + ld a, $4c + ld [$cc4d], a + ld a, $15 + jp Predef + +SilphCo1TextPointers: ; 5d469 (17:5469) + dw SilphCo1Text1 + +SilphCo1Text1: ; 5d46b (17:546b) + TX_FAR _SilphCo1Text1 + db "@" diff --git a/scripts/silphco10.asm b/scripts/silphco10.asm new file mode 100755 index 00000000..ede60acc --- /dev/null +++ b/scripts/silphco10.asm @@ -0,0 +1,126 @@ +SilphCo10Script: ; 5a139 (16:6139) + call SilphCo10Script_5a14f + call EnableAutoTextBoxDrawing + ld hl, SilphCo10TrainerHeaders + ld de, SilphCo10ScriptPointers + ld a, [W_SILPHCO10CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_SILPHCO10CURSCRIPT], a + ret + +SilphCo10Script_5a14f: ; 5a14f (16:614f) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld hl, DataTable_5a173 ; $6173 + call SilphCo2Script_59d43 + call SilphCo10Text_5a176 + ld a, [$d836] + bit 0, a + ret nz + ld a, $54 + ld [$d09f], a + ld bc, $405 + ld a, $17 + jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + +DataTable_5a173: ; 5a173 (16:6173) + db $04,$05,$FF + +SilphCo10Text_5a176: ; 5a176 (16:6176) + ld a, [$ffe0] + and a + ret z + ld hl, $d836 + set 0, [hl] + ret + +SilphCo10ScriptPointers: ; 5a180 (16:6180) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +SilphCo10TextPointers: ; 5a186 (16:6186) + dw SilphCo10Text1 + dw SilphCo10Text2 + dw SilphCo10Text3 + dw Predef5CText + dw Predef5CText + dw Predef5CText + +SilphCo10TrainerHeaders: ; 5a192 (16:6192) +SilphCo10TrainerHeader0: ; 5a192 (16:6192) + db $1 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d835 ; flag's byte + dw SilphCo10BattleText1 ; 0x61dd TextBeforeBattle + dw SilphCo10AfterBattleText1 ; 0x61e7 TextAfterBattle + dw SilphCo10EndBattleText1 ; 0x61e2 TextEndBattle + dw SilphCo10EndBattleText1 ; 0x61e2 TextEndBattle + +SilphCo10TrainerHeader1: ; 5a19e (16:619e) + db $2 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d835 ; flag's byte + dw SilphCo10BattleText2 ; 0x61ec TextBeforeBattle + dw SilphCo10AfterBattleText2 ; 0x61f6 TextAfterBattle + dw SilphCo10EndBattleText2 ; 0x61f1 TextEndBattle + dw SilphCo10EndBattleText2 ; 0x61f1 TextEndBattle + + db $ff + +SilphCo10Text1: ; 5a1ab (16:61ab) + db $08 ; asm + ld hl, SilphCo10TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +SilphCo10Text2: ; 5a1b5 (16:61b5) + db $08 ; asm + ld hl, SilphCo10TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +SilphCo10Text3: ; 5a1bf (16:61bf) + db $08 ; asm + ld a, [$d838] + bit 7, a + ld hl, SilphCo10Text_5a1d8 + jr nz, .asm_cf85f + ld hl, SilphCo10Text_5a1d3 +.asm_cf85f + call PrintText + jp TextScriptEnd + +SilphCo10Text_5a1d3: ; 5a1d3 (16:61d3) + TX_FAR _SilphCo10Text_5a1d3 + db "@" + +SilphCo10Text_5a1d8: ; 5a1d8 (16:61d8) + TX_FAR _SilphCo10Text_5a1d8 + db "@" + +SilphCo10BattleText1: ; 5a1dd (16:61dd) + TX_FAR _SilphCo10BattleText1 + db "@" + +SilphCo10EndBattleText1: ; 5a1e2 (16:61e2) + TX_FAR _SilphCo10EndBattleText1 + db "@" + +SilphCo10AfterBattleText1: ; 5a1e7 (16:61e7) + TX_FAR _SilphCo10AfterBattleText1 + db "@" + +SilphCo10BattleText2: ; 5a1ec (16:61ec) + TX_FAR _SilphCo10BattleText2 + db "@" + +SilphCo10EndBattleText2: ; 5a1f1 (16:61f1) + TX_FAR _SilphCo10EndBattleText2 + db "@" + +SilphCo10AfterBattleText2: ; 5a1f6 (16:61f6) + TX_FAR _SilphCo10AfterBattleText2 + db "@" diff --git a/scripts/silphco11.asm b/scripts/silphco11.asm new file mode 100755 index 00000000..f24c6774 --- /dev/null +++ b/scripts/silphco11.asm @@ -0,0 +1,369 @@ +SilphCo11Script: ; 620fa (18:60fa) + call SilphCo11Script_62110 + call EnableAutoTextBoxDrawing + ld hl, SilphCo11TrainerHeaders + ld de, SilphCo11ScriptPointers + ld a, [W_SILPHCO11CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_SILPHCO11CURSCRIPT], a + ret + +SilphCo11Script_62110: ; 62110 (18:6110) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld hl, DataTable_62134 ; $6134 + call SilphCo11Script_62137 + call SilphCo11Script_62163 + ld a, [$d838] + bit 0, a + ret nz + ld a, $20 + ld [$d09f], a + ld bc, $603 + ld a, $17 + jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + +DataTable_62134: ; 62134 (18:6134) + db $06,$03,$FF + +SilphCo11Script_62137: ; 62137 (18:6137) + push hl + ld hl, $d73f + ld a, [hli] + ld b, a + ld a, [hl] + ld c, a + xor a + ld [$ffe0], a + pop hl +.asm_62143 + ld a, [hli] + cp $ff + jr z, .asm_6215f + push hl + ld hl, $ffe0 + inc [hl] + pop hl + cp b + jr z, .asm_62154 + inc hl + jr .asm_62143 +.asm_62154 + ld a, [hli] + cp c + jr nz, .asm_62143 + ld hl, $d73f + xor a + ld [hli], a + ld [hl], a + ret +.asm_6215f + xor a + ld [$ffe0], a + ret + +SilphCo11Script_62163: ; 62163 (18:6163) + ld a, [$ffe0] + and a + ret z + ld hl, $d838 + set 0, [hl] + ret + +SilphCo11Script_6216d: ; 6216d (18:616d) + ld hl, MissableObjectIDs_6219b ; $619b +.asm_62170 + ld a, [hli] + cp $ff + jr z, .asm_62181 + push hl + ld [$cc4d], a + ld a, $11 + call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) + pop hl + jr .asm_62170 +.asm_62181 + ld hl, MissableObjectIDs_62194 ; $6194 +.asm_62184 + ld a, [hli] + cp $ff + ret z + push hl + ld [$cc4d], a + ld a, $15 + call Predef ; indirect jump to AddMissableObject (f1c8 (3:71c8)) + pop hl + jr .asm_62184 + +MissableObjectIDs_62194: ; 62194 (18:6194) + db $11,$12,$13,$14,$15,$16,$FF + +MissableObjectIDs_6219b: ; 6219b (18:619b) + db $0A,$0B,$0C,$0D,$0E,$0F,$10,$17 + db $18,$8A,$8B,$8C,$8D,$8E,$8F,$91 + db $92,$93,$97,$98,$99,$9A,$9E,$9F + db $A0,$A3,$A4,$A5,$A6,$AB,$AC,$AD + db $AE,$AF,$B0,$B1,$B2,$B7,$B8,$B9 + db $FF + +SilphCo11Script_621c4: ; 621c4 (18:61c4) + xor a + ld [wJoypadForbiddenButtonsMask], a + +SilphCo11Script_621c8: ; 621c8 (18:61c8) + ld [W_SILPHCO11CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +SilphCo11ScriptPointers: ; 621cf (18:61cf) + dw SilphCo11Script0 + dw Func_324c + dw EndTrainerBattle + dw SilphCo11Script3 + dw SilphCo11Script4 + dw SilphCo11Script5 + +SilphCo11Script0: ; 621db (18:61db) + ld a, [$d838] + bit 7, a + ret nz + ld hl, CoordsData_62211 ; $6211 + call ArePlayerCoordsInArray + jp nc, CheckFightingMapTrainers + ld a, [wWhichTrade] ; $cd3d + ld [$cf0d], a + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld a, $3 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld a, $3 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call SetSpriteMovementBytesToFF + ld de, MovementData_62216 + call MoveSprite + ld a, $3 + jp SilphCo11Script_621c8 + +CoordsData_62211: ; 62211 (18:6211) + db $0D,$06 + db $0C,$07 + db $FF + +MovementData_62216: ; 62216 (18:6216) + db $00,$00,$00,$FF + +SilphCo11Script_6221a: ; 6221a (18:621a) + ld [$d528], a + ld a, $3 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + ld a, b + ld [$ff8d], a + jp Func_34a6 + +SilphCo11Script5: ; 62227 (18:6227) + ld a, [W_ISINBATTLE] ; $d057 + cp $ff + jp z, SilphCo11Script_621c4 + ld a, [$cf0d] + cp $1 + jr z, .asm_6223c + ld a, $2 + ld b, $c + jr .asm_62240 +.asm_6223c + ld a, $8 + ld b, $0 +.asm_62240 + call SilphCo11Script_6221a + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld a, $6 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + call GBFadeIn1 + call SilphCo11Script_6216d + call UpdateSprites + call Delay3 + call GBFadeOut1 + ld hl, $d838 + set 7, [hl] + xor a + ld [wJoypadForbiddenButtonsMask], a + jp SilphCo11Script_621c8 + +SilphCo11Script3: ; 6226a (18:626a) + ld a, [$d730] + bit 0, a + ret nz + ld a, $3 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call SetSpriteMovementBytesToFF + ld a, [$cf0d] + cp $1 + jr z, .asm_62284 + ld a, $2 + ld b, $c + jr .asm_62288 +.asm_62284 + ld a, $8 + ld b, $0 +.asm_62288 + call SilphCo11Script_6221a + call Delay3 + ld a, $4 + jp SilphCo11Script_621c8 + +SilphCo11Script4: ; 62293 (18:6293) + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, SilphCo10Text_62330 ; $6330 + ld de, SilphCo10Text_62330 ; $6330 + call PreBattleSaveRegisters + ld a, [H_DOWNARROWBLINKCNT2] ; $ff8c + ld [$cf13], a + call EngageMapTrainer + call InitBattleEnemyParameters + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $5 + jp SilphCo11Script_621c8 + +SilphCo11TextPointers: ; 622b7 (18:62b7) + dw SilphCo11Text1 + dw SilphCo11Text2 + dw SilphCo11Text3 + dw SilphCo11Text4 + dw SilphCo11Text5 + dw SilphCo11Text6 + +SilphCo11TrainerHeaders: ; 622c3 (18:62c3) +SilphCo11TrainerHeader0: ; 622c3 (18:62c3) + db $4 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d837 ; flag's byte + dw SilphCo11BattleText1 ; 0x6344 TextBeforeBattle + dw SilphCo11AfterBattleText1 ; 0x634e TextAfterBattle + dw SilphCo11EndBattleText1 ; 0x6349 TextEndBattle + dw SilphCo11EndBattleText1 ; 0x6349 TextEndBattle + +SilphCo11TrainerHeader1: ; 622cf (18:62cf) + db $5 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d837 ; flag's byte + dw SilphCo11BattleText2 ; 0x635d TextBeforeBattle + dw SilphCo11AfterBattleText2 ; 0x6367 TextAfterBattle + dw SilphCo11EndBattleText2 ; 0x6362 TextEndBattle + dw SilphCo11EndBattleText2 ; 0x6362 TextEndBattle + + db $ff + +SilphCo11Text1: ; 622dc (18:62dc) + db $08 ; asm + ld a, [$d838] + bit 5, a + jp nz, .asm_62308 + ld hl, SilphCoPresidentText + call PrintText + ld bc, (MASTER_BALL << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, ReceivedSilphCoMasterBallText + call PrintText + ld hl, $d838 + set 5, [hl] + jr .asm_fd405 ; 0x622fe +.BagFull + ld hl, SilphCoMasterBallNoRoomText + call PrintText + jr .asm_fd405 ; 0x62306 +.asm_62308 ; 0x62308 + ld hl, SilphCo10Text_6231c + call PrintText +.asm_fd405 ; 0x6230e + jp TextScriptEnd + +SilphCoPresidentText: ; 62311 (18:6311) + TX_FAR _SilphCoPresidentText + db "@" + +ReceivedSilphCoMasterBallText: ; 62316 (18:6316) + TX_FAR _ReceivedSilphCoMasterBallText + db $11, "@" + +SilphCo10Text_6231c: ; 6231c (18:631c) + TX_FAR _SilphCo10Text_6231c + db "@" + +SilphCoMasterBallNoRoomText: ; 62321 (18:6321) + TX_FAR _SilphCoMasterBallNoRoomText + db "@" + +SilphCo11Text2: ; 62326 (18:6326) + TX_FAR _SilphCo11Text2 + db "@" + +SilphCo11Text3: ; 6232b (18:632b) + TX_FAR _SilphCo11Text3 + db "@" + +SilphCo10Text_62330: ; 62330 (18:6330) + TX_FAR _SilphCo10Text_62330 + db "@" + +SilphCo11Text6: ; 62335 (18:6335) + TX_FAR _SilphCo10Text_62335 + db "@" + +SilphCo11Text4: ; 6233a (18:633a) + db $08 ; asm + ld hl, SilphCo11TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +SilphCo11BattleText1: ; 62344 (18:6344) + TX_FAR _SilphCo11BattleText1 + db "@" + +SilphCo11EndBattleText1: ; 62349 (18:6349) + TX_FAR _SilphCo11EndBattleText1 + db "@" + +SilphCo11AfterBattleText1: ; 6234e (18:634e) + TX_FAR _SilphCo11AfterBattleText1 + db "@" + +SilphCo11Text5: ; 62353 (18:6353) + db $08 ; asm + ld hl, SilphCo11TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +SilphCo11BattleText2: ; 6235d (18:635d) + TX_FAR _SilphCo11BattleText2 + db "@" + +SilphCo11EndBattleText2: ; 62362 (18:6362) + TX_FAR _SilphCo11EndBattleText2 + db "@" + +SilphCo11AfterBattleText2: ; 62367 (18:6367) + TX_FAR _SilphCo11AfterBattleText2 + db "@" + +SilphCo10Text_6236c: ; 6236c (18:636c) + db $8 + ld hl, SilphCo10Text_6237b + call PrintText + ld a, PORYGON + call DisplayPokedex + jp TextScriptEnd + +SilphCo10Text_6237b: ; 6237b (18:637b) + TX_FAR _SilphCo10Text_6237b + db "@" diff --git a/scripts/silphco2.asm b/scripts/silphco2.asm new file mode 100755 index 00000000..da59cc4c --- /dev/null +++ b/scripts/silphco2.asm @@ -0,0 +1,248 @@ +SilphCo2Script: ; 59cf1 (16:5cf1) + call SilphCo2Script_59d07 + call EnableAutoTextBoxDrawing + ld hl, SilphCo2TrainerHeaders + ld de, SilphCo2ScriptPointers + ld a, [W_SILPHCO2CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_SILPHCO2CURSCRIPT], a + ret + +SilphCo2Script_59d07: ; 59d07 (16:5d07) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld hl, DataTable_59d3e + call SilphCo2Script_59d43 + call SilphCo2Script_59d6f + ld a, [$d826] + bit 5, a + jr nz, .asm_59d2e + push af + ld a, $54 + ld [$d09f], a + ld bc, $0202 + ld a, $17 + call Predef + pop af +.asm_59d2e + bit 6, a + ret nz + ld a, $54 + ld [$d09f], a + ld bc, $0502 + ld a, $17 + jp Predef + +DataTable_59d3e: ; 59d3e (16:5d3e) + db $02,$02,$05,$02,$FF + +SilphCo2Script_59d43: ; 59d43 (16:5d43) + push hl + ld hl, $d73f + ld a, [hli] + ld b, a + ld a, [hl] + ld c, a + xor a + ld [$ffe0], a + pop hl +.asm_59d4f + ld a, [hli] + cp $ff + jr z, .asm_59d6b + push hl + ld hl, $ffe0 + inc [hl] + pop hl + cp b + jr z, .asm_59d60 + inc hl + jr .asm_59d4f +.asm_59d60 + ld a, [hli] + cp c + jr nz, .asm_59d4f + ld hl, $d73f + xor a + ld [hli], a + ld [hl], a + ret +.asm_59d6b + xor a + ld [$ffe0], a + ret + +SilphCo2Script_59d6f: ; 59d6f (16:5d6f) + ld hl, $d826 + ld a, [$ffe0] + and a + ret z + cp $1 + jr nz, .asm_59d7d + set 5, [hl] + ret +.asm_59d7d + set 6, [hl] + ret + +SilphCo2ScriptPointers: ; 59d80 (16:5d80) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +SilphCo2TextPointers: ; 59d86 (16:5d86) + dw SilphCo2Text1 + dw SilphCo2Text2 + dw SilphCo2Text3 + dw SilphCo2Text4 + dw SilphCo2Text5 + +SilphCo2TrainerHeaders: ; 59d90 (16:5d90) +SilphCo2TrainerHeader0: ; 59d90 (16:5d90) + db $2 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d825 ; flag's byte + dw SilphCo2BattleText1 ; 0x5e2a TextBeforeBattle + dw SilphCo2AfterBattleText1 ; 0x5e34 TextAfterBattle + dw SilphCo2EndBattleText1 ; 0x5e2f TextEndBattle + dw SilphCo2EndBattleText1 ; 0x5e2f TextEndBattle + +SilphCo2TrainerHeader1: ; 59d9c (16:5d9c) + db $3 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d825 ; flag's byte + dw SilphCo2BattleText2 ; 0x5e39 TextBeforeBattle + dw SilphCo2AfterBattleText2 ; 0x5e43 TextAfterBattle + dw SilphCo2EndBattleText2 ; 0x5e3e TextEndBattle + dw SilphCo2EndBattleText2 ; 0x5e3e TextEndBattle + +SilphCo2TrainerHeader2: ; 59da8 (16:5da8) + db $4 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d825 ; flag's byte + dw SilphCo2BattleText3 ; 0x5e48 TextBeforeBattle + dw SilphCo2AfterBattleText3 ; 0x5e52 TextAfterBattle + dw SilphCo2EndBattleText3 ; 0x5e4d TextEndBattle + dw SilphCo2EndBattleText3 ; 0x5e4d TextEndBattle + +SilphCo2TrainerHeader3: ; 59db4 (16:5db4) + db $5 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d825 ; flag's byte + dw SilphCo2BattleText4 ; 0x5e57 TextBeforeBattle + dw SilphCo2AfterBattleText4 ; 0x5e61 TextAfterBattle + dw SilphCo2EndBattleText4 ; 0x5e5c TextEndBattle + dw SilphCo2EndBattleText4 ; 0x5e5c TextEndBattle + + db $ff + +SilphCo2Text1: ; 59dc1 (16:5dc1) + db $08 ; asm + ld a, [$d826] + bit 7, a + jr nz, asm_b8a0d ; 0x59dc7 + ld hl, SilphCo2Text_59ded + call PrintText + ld bc, (TM_36 << 8) | 1 + call GiveItem + ld hl, TM36NoRoomText + jr nc, asm_2c1e0 ; 0x59dd8 + ld hl, $d826 + set 7, [hl] + ld hl, ReceivedTM36Text + jr asm_2c1e0 ; 0x59de2 +asm_b8a0d ; 0x59de4 + ld hl, TM36ExplanationText +asm_2c1e0 ; 0x59de7 + call PrintText + jp TextScriptEnd + +SilphCo2Text_59ded: ; 59ded (16:5ded) + TX_FAR _SilphCo2Text_59ded + db "@" + +ReceivedTM36Text: ; 59df2 (16:5df2) + TX_FAR _ReceivedTM36Text + db $0B, "@" + +TM36ExplanationText: ; 59df8 (16:5df8) + TX_FAR _TM36ExplanationText + db "@" + +TM36NoRoomText: ; 59dfd (16:5dfd) + TX_FAR _TM36NoRoomText + db "@" + +SilphCo2Text2: ; 59e02 (16:5e02) + db $08 ; asm + ld hl, SilphCo2TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +SilphCo2Text3: ; 59e0c (16:5e0c) + db $08 ; asm + ld hl, SilphCo2TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +SilphCo2Text4: ; 59e16 (16:5e16) + db $08 ; asm + ld hl, SilphCo2TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +SilphCo2Text5: ; 59e20 (16:5e20) + db $08 ; asm + ld hl, SilphCo2TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +SilphCo2BattleText1: ; 59e2a (16:5e2a) + TX_FAR _SilphCo2BattleText1 + db "@" + +SilphCo2EndBattleText1: ; 59e2f (16:5e2f) + TX_FAR _SilphCo2EndBattleText1 + db "@" + +SilphCo2AfterBattleText1: ; 59e34 (16:5e34) + TX_FAR _SilphCo2AfterBattleText1 + db "@" + +SilphCo2BattleText2: ; 59e39 (16:5e39) + TX_FAR _SilphCo2BattleText2 + db "@" + +SilphCo2EndBattleText2: ; 59e3e (16:5e3e) + TX_FAR _SilphCo2EndBattleText2 + db "@" + +SilphCo2AfterBattleText2: ; 59e43 (16:5e43) + TX_FAR _SilphCo2AfterBattleText2 + db "@" + +SilphCo2BattleText3: ; 59e48 (16:5e48) + TX_FAR _SilphCo2BattleText3 + db "@" + +SilphCo2EndBattleText3: ; 59e4d (16:5e4d) + TX_FAR _SilphCo2EndBattleText3 + db "@" + +SilphCo2AfterBattleText3: ; 59e52 (16:5e52) + TX_FAR _SilphCo2AfterBattleText3 + db "@" + +SilphCo2BattleText4: ; 59e57 (16:5e57) + TX_FAR _SilphCo2BattleText4 + db "@" + +SilphCo2EndBattleText4: ; 59e5c (16:5e5c) + TX_FAR _SilphCo2EndBattleText4 + db "@" + +SilphCo2AfterBattleText4: ; 59e61 (16:5e61) + TX_FAR _SilphCo2AfterBattleText4 + db "@" diff --git a/scripts/silphco3.asm b/scripts/silphco3.asm new file mode 100755 index 00000000..a7ba1bee --- /dev/null +++ b/scripts/silphco3.asm @@ -0,0 +1,139 @@ +SilphCo3Script: ; 59f5b (16:5f5b) + call SilphCo3Script_59f71 + call EnableAutoTextBoxDrawing + ld hl, SilphCo3TrainerHeaders + ld de, SilphCo3ScriptPointers + ld a, [W_SILPHCO3CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_SILPHCO3CURSCRIPT], a + ret + +SilphCo3Script_59f71: ; 59f71 (16:5f71) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld hl, DataTable_59fa8 ; $5fa8 + call SilphCo2Script_59d43 + call SilphCo3Script_59fad + ld a, [$d828] + bit 0, a + jr nz, .asm_59f98 + push af + ld a, $5f + ld [$d09f], a + ld bc, $404 + ld a, $17 + call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + pop af +.asm_59f98 + bit 1, a + ret nz + ld a, $5f + ld [$d09f], a + ld bc, $408 + ld a, $17 + jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + +DataTable_59fa8: ; 59fa8 (16:5fa8) + db $04,$04,$04,$08,$FF + +SilphCo3Script_59fad: ; 59fad (16:5fad) + ld hl, $d828 + ld a, [$ffe0] + and a + ret z + cp $1 + jr nz, .asm_59fbb + set 0, [hl] + ret +.asm_59fbb + set 1, [hl] + ret + +SilphCo3ScriptPointers: ; 59fbe (16:5fbe) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +SilphCo3TextPointers: ; 59fc4 (16:5fc4) + dw SilphCo3Text1 + dw SilphCo3Text2 + dw SilphCo3Text3 + dw Predef5CText + +SilphCo3TrainerHeaders: ; 59fcc (16:5fcc) +SilphCo3TrainerHeader0: ; 59fcc (16:5fcc) + db $2 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d827 ; flag's byte + dw SilphCo3BattleText1 ; 0x600d TextBeforeBattle + dw SilphCo3AfterBattleText1 ; 0x6017 TextAfterBattle + dw SilphCo3EndBattleText1 ; 0x6012 TextEndBattle + dw SilphCo3EndBattleText1 ; 0x6012 TextEndBattle + +SilphCo3TrainerHeader1: ; 59fd8 (16:5fd8) + db $3 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d827 ; flag's byte + dw SilphCo3BattleText2 ; 0x6026 TextBeforeBattle + dw SilphCo3AfterBattleText2 ; 0x6030 TextAfterBattle + dw SilphCo3EndBattleText2 ; 0x602b TextEndBattle + dw SilphCo3EndBattleText2 ; 0x602b TextEndBattle + + db $ff + +SilphCo3Text1: ; 59fe5 (16:5fe5) + db $08 ; asm + ld a, [$d838] + bit 7, a + ld hl, SilphCo3Text_59ffe + jr nz, asm_8c56f ; 0x59fee + ld hl, SilphCo3Text_59ff9 +asm_8c56f ; 0x59ff3 + call PrintText + jp TextScriptEnd + +SilphCo3Text_59ff9: ; 59ff9 (16:5ff9) + TX_FAR _SilphCo3Text_59ff9 + db "@" + +SilphCo3Text_59ffe: ; 59ffe (16:5ffe) + TX_FAR _SilphCo3Text_59ffe + db "@" + +SilphCo3Text2: ; 5a003 (16:6003) + db $08 ; asm + ld hl, SilphCo3TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +SilphCo3BattleText1: ; 5a00d (16:600d) + TX_FAR _SilphCo3BattleText1 + db "@" + +SilphCo3EndBattleText1: ; 5a012 (16:6012) + TX_FAR _SilphCo3EndBattleText1 + db "@" + +SilphCo3AfterBattleText1: ; 5a017 (16:6017) + TX_FAR _SilphCo3AfterBattleText1 + db "@" + +SilphCo3Text3: ; 5a01c (16:601c) + db $08 ; asm + ld hl, SilphCo3TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +SilphCo3BattleText2: ; 5a026 (16:6026) + TX_FAR _SilphCo3BattleText2 + db "@" + +SilphCo3EndBattleText2: ; 5a02b (16:602b) + TX_FAR _SilphCo3EndBattleText2 + db "@" + +SilphCo3AfterBattleText2: ; 5a030 (16:6030) + TX_FAR _SilphCo3AfterBattleText2 + db "@" diff --git a/scripts/silphco4.asm b/scripts/silphco4.asm new file mode 100755 index 00000000..1777ff8c --- /dev/null +++ b/scripts/silphco4.asm @@ -0,0 +1,201 @@ +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] + 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 + ret +.asm_19d85 + 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, SilphCo4Text_19de0 + ld de, SilphCo4Text_19de5 + call SilphCo6Script_1a22f + jp TextScriptEnd + +SilphCo4Text_19de0: ; 19de0 (6:5de0) + TX_FAR _SilphCo4Text_19de0 + db "@" + +SilphCo4Text_19de5: ; 19de5 (6:5de5) + TX_FAR _SilphCo4Text_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 "@" diff --git a/scripts/silphco5.asm b/scripts/silphco5.asm new file mode 100755 index 00000000..c4efc16b --- /dev/null +++ b/scripts/silphco5.asm @@ -0,0 +1,223 @@ +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 + 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 + 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, SilphCo5Text_1a010 + ld de, SilphCo5Text_1a015 + call SilphCo6Script_1a22f + jp TextScriptEnd + +SilphCo5Text_1a010: ; 1a010 (6:6010) + TX_FAR _SilphCo5Text_1a010 + db "@" + +SilphCo5Text_1a015: ; 1a015 (6:6015) + TX_FAR _SilphCo5Text_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 "@" + +SilphCo5EndBattleText4: ; 1a05b (6:605b) + TX_FAR _SilphCo5EndBattleText4 + db "@" + +SilphCo5AfterBattleText4: ; 1a060 (6:6060) + TX_FAR _SilphCo5AfterBattleText4 + db "@" + +SilphCo5Text5: ; 1a065 (6:6065) + db $08 ; asm + ld hl, Silphco5TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +SilphCo5BattleText5: ; 1a06f (6:606f) + TX_FAR _SilphCo5BattleText5 + db "@" + +SilphCo5EndBattleText5: ; 1a074 (6:6074) + TX_FAR _SilphCo5EndBattleText5 + db "@" + +SilphCo5AfterBattleText5: ; 1a079 (6:6079) + TX_FAR _SilphCo5AfterBattleText5 + db "@" + +SilphCo5Text9: ; 1a07e (6:607e) + TX_FAR _SilphCo5Text9 + db "@" + +SilphCo5Text10: ; 1a083 (6:6083) + TX_FAR _SilphCo5Text10 + db "@" + +SilphCo5Text11: ; 1a088 (6:6088) + TX_FAR _SilphCo5Text11 + db "@" diff --git a/scripts/silphco6.asm b/scripts/silphco6.asm new file mode 100755 index 00000000..2b5b7ebf --- /dev/null +++ b/scripts/silphco6.asm @@ -0,0 +1,225 @@ +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 + +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 + +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 + +SilphCo6TextPointers: ; 1a1f6 (6:61f6) + dw SilphCo6Text1 + dw SilphCo6Text2 + dw SilphCo6Text3 + dw SilphCo6Text4 + dw SilphCo6Text5 + dw SilphCo6Text6 + dw SilphCo6Text7 + dw SilphCo6Text8 + dw Predef5CText + dw Predef5CText + +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 + +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 + +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 + + db $ff + +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 + +SilphCo6Text1: ; 1a23d (6:623d) + db $08 ; asm + ld hl, SilphCo6Text_1a24a + ld de, SilphCo6Text_1a24f + call SilphCo6Script_1a22f + jp TextScriptEnd + +SilphCo6Text_1a24a: ; 1a24a (6:624a) + TX_FAR _SilphCo6Text_1a24a + db "@" + +SilphCo6Text_1a24f: ; 1a24f (6:624f) + TX_FAR _SilphCo6Text_1a24f + db "@" + +SilphCo6Text2: ; 1a254 (6:6254) + db $08 ; asm + ld hl, SilphCo6Text_1a261 + ld de, SilphCo6Text_1a266 + call SilphCo6Script_1a22f + jp TextScriptEnd + +SilphCo6Text_1a261: ; 1a261 (6:6261) + TX_FAR _SilphCo6Text_1a261 + db "@" + +SilphCo6Text_1a266: ; 1a266 (6:6266) + TX_FAR _SilphCo6Text_1a266 + db "@" + +SilphCo6Text3: ; 1a26b (6:626b) + db $08 ; asm + ld hl, SilphCo6Text_1a278 + ld de, SilphCo6Text_1a27d + call SilphCo6Script_1a22f + jp TextScriptEnd + +SilphCo6Text_1a278: ; 1a278 (6:6278) + TX_FAR _SilphCo6Text_1a278 + db "@" + +SilphCo6Text_1a27d: ; 1a27d (6:627d) + TX_FAR _SilphCo6Text_1a27d + db "@" + +SilphCo6Text4: ; 1a282 (6:6282) + db $08 ; asm + ld hl, SilphCo6Text_1a28f + ld de, SilphCo6Text_1a294 + call SilphCo6Script_1a22f + jp TextScriptEnd + +SilphCo6Text_1a28f: ; 1a28f (6:628f) + TX_FAR _SilphCo6Text_1a28f + db "@" + +SilphCo6Text_1a294: ; 1a294 (6:6294) + TX_FAR _SilphCo6Text_1a294 + db "@" + +SilphCo6Text5: ; 1a299 (6:6299) + db $08 ; asm + ld hl, SilphCo6Text_1a2a6 + ld de, SilphCo6Text_1a2ab + call SilphCo6Script_1a22f + jp TextScriptEnd + +SilphCo6Text_1a2a6: ; 1a2a6 (6:62a6) + TX_FAR _SilphCo6Text_1a2a6 + db "@" + +SilphCo6Text_1a2ab: ; 1a2ab (6:62ab) + TX_FAR _SilphCo6Text_1a2ab + db "@" + +SilphCo6Text6: ; 1a2b0 (6:62b0) + db $08 ; asm + ld hl, SilphCo6TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +SilphCo6BattleText2: ; 1a2ba (6:62ba) + TX_FAR _SilphCo6BattleText2 + db "@" + +SilphCo6EndBattleText2: ; 1a2bf (6:62bf) + TX_FAR _SilphCo6EndBattleText2 + db "@" + +SilphCo6AfterBattleText2: ; 1a2c4 (6:62c4) + TX_FAR _SilphCo6AfterBattleText2 + db "@" + +SilphCo6Text7: ; 1a2c9 (6:62c9) + db $08 ; asm + ld hl, SilphCo6TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +SilphCo6BattleText3: ; 1a2d3 (6:62d3) + TX_FAR _SilphCo6BattleText3 + db "@" + +SilphCo6EndBattleText3: ; 1a2d8 (6:62d8) + TX_FAR _SilphCo6EndBattleText3 + db "@" + +SilphCo6AfterBattleText3: ; 1a2dd (6:62dd) + TX_FAR _SilphCo6AfterBattleText3 + db "@" + +SilphCo6Text8: ; 1a2e2 (6:62e2) + db $08 ; asm + ld hl, SilphCo6TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +SilphCo6BattleText4: ; 1a2ec (6:62ec) + TX_FAR _SilphCo6BattleText4 + db "@" + +SilphCo6EndBattleText4: ; 1a2f1 (6:62f1) + TX_FAR _SilphCo6EndBattleText4 + db "@" + +SilphCo6AfterBattleText4: ; 1a2f6 (6:62f6) + TX_FAR _SilphCo6AfterBattleText4 + db "@" diff --git a/scripts/silphco7.asm b/scripts/silphco7.asm new file mode 100755 index 00000000..dfd139c0 --- /dev/null +++ b/scripts/silphco7.asm @@ -0,0 +1,525 @@ +SilphCo7Script: ; 51b61 (14:5b61) + call SilphCo7Script_51b77 + call EnableAutoTextBoxDrawing + ld hl, SilphCo7TrainerHeaders + ld de, SilphCo7ScriptPointers + ld a, [W_SILPHCO7CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_SILPHCO7CURSCRIPT], a + ret + +SilphCo7Script_51b77: ; 51b77 (14:5b77) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld hl, DataTable_51bc1 ; $5bc1 + call SilphCo7Text_51bc8 + call SilphCo7Text_51bf4 + ld a, [$d830] + bit 4, a + jr nz, .asm_51b9e + push af + ld a, $54 + ld [$d09f], a + ld bc, $305 + ld a, $17 + call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + pop af +.asm_51b9e + bit 5, a + jr nz, .asm_51bb1 + push af + ld a, $54 + ld [$d09f], a + ld bc, $20a + ld a, $17 + call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + pop af +.asm_51bb1 + bit 6, a + ret nz + ld a, $54 + ld [$d09f], a + ld bc, $60a + ld a, $17 + jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + +DataTable_51bc1: ; 51bc1 (14:5bc1) + db $03,$05,$02,$0A,$06,$0A,$FF + +SilphCo7Text_51bc8: ; 51bc8 (14:5bc8) + push hl + ld hl, $d73f + ld a, [hli] + ld b, a + ld a, [hl] + ld c, a + xor a + ld [$ffe0], a + pop hl +.asm_51bd4 + ld a, [hli] + cp $ff + jr z, .asm_51bf0 + push hl + ld hl, $ffe0 + inc [hl] + pop hl + cp b + jr z, .asm_51be5 + inc hl + jr .asm_51bd4 +.asm_51be5 + ld a, [hli] + cp c + jr nz, .asm_51bd4 + ld hl, $d73f + xor a + ld [hli], a + ld [hl], a + ret +.asm_51bf0 + xor a + ld [$ffe0], a + ret + +SilphCo7Text_51bf4: ; 51bf4 (14:5bf4) + ld hl, $d830 + ld a, [$ffe0] + and a + ret z + cp $1 + jr nz, .asm_51c02 + set 4, [hl] + ret +.asm_51c02 + cp $2 + jr nz, .asm_51c09 + set 5, [hl] + ret +.asm_51c09 + set 6, [hl] + ret + +SilphCo7Text_51c0c: ; 51c0c (14:5c0c) + xor a + ld [wJoypadForbiddenButtonsMask], a + +SilphCo7Text_51c10: ; 51c10 (14:5c10) + ld [W_SILPHCO7CURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +SilphCo7ScriptPointers: ; 51c17 (14:5c17) + dw SilphCo7Script0 + dw Func_324c + dw EndTrainerBattle + dw SilphCo7Script3 + dw SilphCo7Script4 + dw SilphCo7Script5 + +SilphCo7Script0: ; 51c23 (14:5c23) + ld a, [$d82f] + bit 0, a + jp nz, CheckFightingMapTrainers + ld hl, CoordsData_51c78 + call ArePlayerCoordsInArray + jp nc, CheckFightingMapTrainers + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld a, $4 + ld [$d528], a + ld a, $ff + ld [$c0ee], a + call PlaySound + ld c, BANK(Music_MeetRival) + ld a, MUSIC_MEET_RIVAL + call PlayMusic + ld a, $9 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld a, $9 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call SetSpriteMovementBytesToFF + ld de, MovementData_51c7d + ld a, [wWhichTrade] ; $cd3d + ld [$cf0d], a + cp $1 + jr z, .asm_51c6c + inc de +.asm_51c6c + ld a, $9 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call MoveSprite + ld a, $3 + jp SilphCo7Text_51c10 + +CoordsData_51c78: ; 51c78 (14:5c78) + db $02,$03 + db $03,$03 + db $FF + +MovementData_51c7d: ; 51c7d (14:5c7d) + db $40,$40,$40,$40,$FF + +SilphCo7Script3: ; 51c82 (14:5c82) + ld a, [$d730] + bit 0, a + ret nz + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $d + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + call Delay3 + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, SilphCo7Text14 ; $5ec8 + ld de, SilphCo7Text_51ecd ; $5ecd + call PreBattleSaveRegisters + ld a, SONY2 + $c8 + ld [W_CUROPPONENT], a ; $d059 + ld a, [W_RIVALSTARTER] ; $d715 + cp SQUIRTLE + jr nz, .asm_51cb6 + ld a, $7 + jr .asm_51cc0 +.asm_51cb6 + cp BULBASAUR + jr nz, .asm_51cbe + ld a, $8 + jr .asm_51cc0 +.asm_51cbe + ld a, $9 +.asm_51cc0 + ld [W_TRAINERNO], a ; $d05d + ld a, $4 + jp SilphCo7Text_51c10 + +SilphCo7Script4: ; 51cc8 (14:5cc8) + ld a, [W_ISINBATTLE] ; $d057 + cp $ff + jp z, SilphCo7Text_51c0c + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld hl, $d82f + set 0, [hl] + ld a, $4 + ld [$d528], a + ld a, $9 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + ld a, $4 + ld [$ff8d], a + call Func_34a6 + ld a, $f + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld a, $ff + ld [$c0ee], a + call PlaySound + ld b, BANK(Music_RivalAlternateStart) + ld hl, Music_RivalAlternateStart + call Bankswitch + ld de, MovementData_51d1d + ld a, [$cf0d] + cp $1 + jr nz, .asm_51d0e + ld de, MovementData_51d1a +.asm_51d0e + ld a, $9 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call MoveSprite + ld a, $5 + jp SilphCo7Text_51c10 + +MovementData_51d1a: ; 51d1a (14:5d1a) + db $C0,$C0,$FF + +MovementData_51d1d: ; 51d1d (14:5d1d) + db $80,$40,$40,$C0,$C0,$C0,$00,$FF + +SilphCo7Script5: ; 51d25 (14:5d25) + ld a, [$d730] + bit 0, a + ret nz + ld a, $a7 + ld [$cc4d], a + ld a, $11 + call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) + call Func_2307 + xor a + ld [wJoypadForbiddenButtonsMask], a + jp SilphCo7Text_51c10 + +SilphCo7TextPointers: ; 51d3f (14:5d3f) + dw SilphCo7Text1 + dw SilphCo7Text2 + dw SilphCo7Text3 + dw SilphCo7Text4 + dw SilphCo7Text5 + dw SilphCo7Text6 + dw SilphCo7Text7 + dw SilphCo7Text8 + dw SilphCo7Text9 + dw Predef5CText + dw Predef5CText + dw Predef5CText + dw SilphCo7Text13 + dw SilphCo7Text14 + dw SilphCo7Text15 + +SilphCo7TrainerHeaders: ; 51d5d (14:5d5d) +SilphCo7TrainerHeader0: ; 51d5d (14:5d5d) + db $5 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d82f ; flag's byte + dw SilphCo7BattleText1 ; 0x5e5a TextBeforeBattle + dw SilphCo7AfterBattleText1 ; 0x5e64 TextAfterBattle + dw SilphCo7EndBattleText1 ; 0x5e5f TextEndBattle + dw SilphCo7EndBattleText1 ; 0x5e5f TextEndBattle + +SilphCo7TrainerHeader2: ; 51d69 (14:5d69) + db $6 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d82f ; flag's byte + dw SilphCo7BattleText2 ; 0x5e73 TextBeforeBattle + dw SilphCo7AfterBattleText2 ; 0x5e7d TextAfterBattle + dw SilphCo7EndBattleText2 ; 0x5e78 TextEndBattle + dw SilphCo7EndBattleText2 ; 0x5e78 TextEndBattle + +SilphCo7TrainerHeader3: ; 51d75 (14:5d75) + db $7 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d82f ; flag's byte + dw SilphCo7BattleText3 ; 0x5e8c TextBeforeBattle + dw SilphCo7AfterBattleText3 ; 0x5e96 TextAfterBattle + dw SilphCo7EndBattleText3 ; 0x5e91 TextEndBattle + dw SilphCo7EndBattleText3 ; 0x5e91 TextEndBattle + +SilphCo7TrainerHeader4: ; 51d81 (14:5d81) + db $8 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d82f ; flag's byte + dw SilphCo7BattleText4 ; 0x5ea5 TextBeforeBattle + dw SilphCo7AfterBattleText4 ; 0x5eaf TextAfterBattle + dw SilphCo7EndBattleText4 ; 0x5eaa TextEndBattle + dw SilphCo7EndBattleText4 ; 0x5eaa TextEndBattle + + db $ff + +SilphCo7Text1: +; lapras guy + db $08 ; asm + ld a, [$d72e] + bit 0, a ; got lapras? + jr z, .givelapras + ld a, [$d838] + bit 7, a ; saved silph? + jr nz, .savedsilph + ld hl, .LaprasGuyText + call PrintText + jr .done +.givelapras + ld hl, .MeetLaprasGuyText + call PrintText + ld bc, (LAPRAS << 8) | 15 + call GivePokemon + jr nc, .done + ld a, [$ccd3] + and a + call z, WaitForTextScrollButtonPress + call EnableAutoTextBoxDrawing + ld hl, .HeresYourLaprasText + call PrintText + ld hl, $d72e + set 0, [hl] + jr .done +.savedsilph + ld hl, .LaprasGuySavedText + call PrintText +.done + jp TextScriptEnd + +.MeetLaprasGuyText + TX_FAR _MeetLaprasGuyText + db "@" + +.HeresYourLaprasText + TX_FAR _HeresYourLaprasText + db "@" + +.LaprasGuyText + TX_FAR _LaprasGuyText + db "@" + +.LaprasGuySavedText + TX_FAR _LaprasGuySavedText + db "@" + +SilphCo7Text2: + db $8 + ld a, [$d838] + bit 7, a ; saved silph? + jr nz, .savedsilph + ld hl, .rockettext + call PrintText + jr .done +.savedsilph + ld hl, .savedtext + call PrintText +.done + jp TextScriptEnd + +.rockettext + TX_FAR _SilphCo7Text_51e00 + db "@" + +.savedtext + TX_FAR _CanceledMasterBallText + db "@" + +SilphCo7Text3: + db $08 ; asm + ld a, [$d838] + bit 7, a ; saved silph? + jr nz, .savedsilph + ld hl, .rockettext + call PrintText + jr .done +.savedsilph + ld hl, .savedtext + call PrintText +.done + jp TextScriptEnd + +.rockettext + TX_FAR _SilphCo7Text_51e23 + db "@" + +.savedtext + TX_FAR _SilphCo7Text_51e28 + db "@" + +SilphCo7Text4: + db $08 ; asm + ld a, [$d838] + bit 7, a ; saved silph? + jr nz, .savedsilph + ld hl, .rockettext + call PrintText + jr .done +.savedsilph + ld hl, .savedtext + call PrintText +.done + jp TextScriptEnd + +.rockettext + TX_FAR _SilphCo7Text_51e46 + db "@" + +.savedtext + TX_FAR _SilphCo7Text_51e4b + db "@" + +SilphCo7Text5: ; 51e50 (14:5e50) + db $08 ; asm + ld hl, SilphCo7TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +SilphCo7BattleText1: ; 51e5a (14:5e5a) + TX_FAR _SilphCo7BattleText1 + db "@" + +SilphCo7EndBattleText1: ; 51e5f (14:5e5f) + TX_FAR _SilphCo7EndBattleText1 + db "@" + +SilphCo7AfterBattleText1: ; 51e64 (14:5e64) + TX_FAR _SilphCo7AfterBattleText1 + db "@" + +SilphCo7Text6: ; 51e69 (14:5e69) + db $08 ; asm + ld hl, SilphCo7TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +SilphCo7BattleText2: ; 51e73 (14:5e73) + TX_FAR _SilphCo7BattleText2 + db "@" + +SilphCo7EndBattleText2: ; 51e78 (14:5e78) + TX_FAR _SilphCo7EndBattleText2 + db "@" + +SilphCo7AfterBattleText2: ; 51e7d (14:5e7d) + TX_FAR _SilphCo7AfterBattleText2 + db "@" + +SilphCo7Text7: ; 51e82 (14:5e82) + db $08 ; asm + ld hl, SilphCo7TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +SilphCo7BattleText3: ; 51e8c (14:5e8c) + TX_FAR _SilphCo7BattleText3 + db "@" + +SilphCo7EndBattleText3: ; 51e91 (14:5e91) + TX_FAR _SilphCo7EndBattleText3 + db "@" + +SilphCo7AfterBattleText3: ; 51e96 (14:5e96) + TX_FAR _SilphCo7AfterBattleText3 + db "@" + +SilphCo7Text8: ; 51e9b (14:5e9b) + db $08 ; asm + ld hl, SilphCo7TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +SilphCo7BattleText4: ; 51ea5 (14:5ea5) + TX_FAR _SilphCo7BattleText4 + db "@" + +SilphCo7EndBattleText4: ; 51eaa (14:5eaa) + TX_FAR _SilphCo7EndBattleText4 + db "@" + +SilphCo7AfterBattleText4: ; 51eaf (14:5eaf) + TX_FAR _SilphCo7AfterBattleText4 + db "@" + +SilphCo7Text9: ; 51eb4 (14:5eb4) + db $08 ; asm + ld hl, SilphCo7Text_51ebe + call PrintText + jp TextScriptEnd + +SilphCo7Text_51ebe: ; 51ebe (14:5ebe) + TX_FAR _SilphCo7Text_51ebe + db "@" + +SilphCo7Text13: ; 51ec3 (14:5ec3) + TX_FAR _SilphCo7Text_51ec3 + db "@" + +SilphCo7Text14: ; 51ec8 (14:5ec8) + TX_FAR _SilphCo7Text_51ec8 + db "@" + +SilphCo7Text_51ecd: ; 51ecd (14:5ecd) + TX_FAR _SilphCo7Text_51ecd + db "@" + +SilphCo7Text15: ; 51ed2 (14:5ed2) + TX_FAR _SilphCo7Text_51ed2 + db "@" diff --git a/scripts/silphco8.asm b/scripts/silphco8.asm new file mode 100755 index 00000000..19cae4ac --- /dev/null +++ b/scripts/silphco8.asm @@ -0,0 +1,187 @@ +SilphCo8Script: ; 56504 (15:6504) + call SilphCo8Script_5651a + call EnableAutoTextBoxDrawing + ld hl, SilphCo8TrainerHeader0 + ld de, SilphCo8ScriptPointers + ld a, [W_SILPHCO8CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_SILPHCO8CURSCRIPT], a + ret + +SilphCo8Script_5651a: ; 5651a (15:651a) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld hl, DataTable_5653e ; $653e + call SilphCo8Script_56541 + call SilphCo8Script_5656d + ld a, [$d832] + bit 0, a + ret nz + ld a, $5f + ld [$d09f], a + ld bc, $403 + ld a, $17 + jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + +DataTable_5653e: ; 5653e (15:653e) + db $04,$03,$FF + +SilphCo8Script_56541: ; 56541 (15:6541) + push hl + ld hl, $d73f + ld a, [hli] + ld b, a + ld a, [hl] + ld c, a + xor a + ld [$ffe0], a + pop hl +.asm_5654d + ld a, [hli] + cp $ff + jr z, .asm_56569 + push hl + ld hl, $ffe0 + inc [hl] + pop hl + cp b + jr z, .asm_5655e + inc hl + jr .asm_5654d +.asm_5655e + ld a, [hli] + cp c + jr nz, .asm_5654d + ld hl, $d73f + xor a + ld [hli], a + ld [hl], a + ret +.asm_56569 + xor a + ld [$ffe0], a + ret + +SilphCo8Script_5656d: ; 5656d (15:656d) + ld a, [$ffe0] + and a + ret z + ld hl, $d832 + set 0, [hl] + ret + +SilphCo8ScriptPointers: ; 56577 (15:6577) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +SilphCo8TextPointers: ; 5657d (15:657d) + dw SilphCo8Text1 + dw SilphCo8Text2 + dw SilphCo8Text3 + dw SilphCo8Text4 + +SilphCo8TrainerHeaders: ; 56585 (15:6585) +SilphCo8TrainerHeader0: ; 56585 (15:6585) + db $2 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d831 ; flag's byte + dw SilphCo8BattleText1 ; 0x65e6 TextBeforeBattle + dw SilphCo8AfterBattleText1 ; 0x65f0 TextAfterBattle + dw SilphCo8EndBattleText1 ; 0x65eb TextEndBattle + dw SilphCo8EndBattleText1 ; 0x65eb TextEndBattle + +SilphCo8TrainerHeader1: ; 56591 (15:6591) + db $3 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d831 ; flag's byte + dw SilphCo8BattleText2 ; 0x65f5 TextBeforeBattle + dw SilphCo8AfterBattleText2 ; 0x65ff TextAfterBattle + dw SilphCo8EndBattleText2 ; 0x65fa TextEndBattle + dw SilphCo8EndBattleText2 ; 0x65fa TextEndBattle + +SilphCo8TrainerHeader2: ; 5659d (15:659d) + db $4 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d831 ; flag's byte + dw SilphCo8BattleText3 ; 0x6604 TextBeforeBattle + dw SilphCo8AfterBattleText3 ; 0x660e TextAfterBattle + dw SilphCo8EndBattleText3 ; 0x6609 TextEndBattle + dw SilphCo8EndBattleText3 ; 0x6609 TextEndBattle + + db $ff + +SilphCo8Text1: ; 565aa (15:65aa) + db $08 ; asm + ld a, [$d838] + bit 7, a + ld hl, SilphCo8Text_565c3 + jr nz, asm_a468f ; 0x565b3 + ld hl, SilphCo8Text_565be +asm_a468f ; 0x565b8 + call PrintText + jp TextScriptEnd + +SilphCo8Text_565be: ; 565be (15:65be) + TX_FAR _SilphCo8Text_565be + db "@" + +SilphCo8Text_565c3: ; 565c3 (15:65c3) + TX_FAR _SilphCo8Text_565c3 + db "@" + +SilphCo8Text2: ; 565c8 (15:65c8) + db $08 ; asm + ld hl, SilphCo8TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +SilphCo8Text3: ; 565d2 (15:65d2) + db $08 ; asm + ld hl, SilphCo8TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +SilphCo8Text4: ; 565dc (15:65dc) + db $08 ; asm + ld hl, SilphCo8TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +SilphCo8BattleText1: ; 565e6 (15:65e6) + TX_FAR _SilphCo8BattleText1 + db "@" + +SilphCo8EndBattleText1: ; 565eb (15:65eb) + TX_FAR _SilphCo8EndBattleText1 + db "@" + +SilphCo8AfterBattleText1: ; 565f0 (15:65f0) + TX_FAR _SilphCo8AfterBattleText1 + db "@" + +SilphCo8BattleText2: ; 565f5 (15:65f5) + TX_FAR _SilphCo8BattleText2 + db "@" + +SilphCo8EndBattleText2: ; 565fa (15:65fa) + TX_FAR _SilphCo8EndBattleText2 + db "@" + +SilphCo8AfterBattleText2: ; 565ff (15:65ff) + TX_FAR _SilphCo8AfterBattleText2 + db "@" + +SilphCo8BattleText3: ; 56604 (15:6604) + TX_FAR _SilphCo8BattleText3 + db "@" + +SilphCo8EndBattleText3: ; 56609 (15:6609) + TX_FAR _SilphCo8EndBattleText3 + db "@" + +SilphCo8AfterBattleText3: ; 5660e (15:660e) + TX_FAR _SilphCo8AfterBattleText3 + db "@" diff --git a/scripts/silphco9.asm b/scripts/silphco9.asm new file mode 100755 index 00000000..ee6e6fdc --- /dev/null +++ b/scripts/silphco9.asm @@ -0,0 +1,248 @@ +SilphCo9Script: ; 5d7bb (17:57bb) + call SilphCo9Script_5d7d1 + call EnableAutoTextBoxDrawing + ld hl, SilphCo9TrainerHeaders + ld de, SilphCo9ScriptPointers + ld a, [W_SILPHCO9CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_SILPHCO9CURSCRIPT], a + ret + +SilphCo9Script_5d7d1: ; 5d7d1 (17:57d1) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld hl, DataTable_5d82e ; $582e + call SilphCo9Script_5d837 + call SilphCo9Script_5d863 + ld a, [$d834] + bit 0, a + jr nz, .asm_5d7f8 + push af + ld a, $5f + ld [$d09f], a + ld bc, $401 + ld a, $17 + call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + pop af +.asm_5d7f8 + bit 1, a + jr nz, .asm_5d80b + push af + ld a, $54 + ld [$d09f], a + ld bc, $209 + ld a, $17 + call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + pop af +.asm_5d80b + bit 2, a + jr nz, .asm_5d81e + push af + ld a, $54 + ld [$d09f], a + ld bc, $509 + ld a, $17 + call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + pop af +.asm_5d81e + bit 3, a + ret nz + ld a, $5f + ld [$d09f], a + ld bc, $605 + ld a, $17 + jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + +DataTable_5d82e: ; 5d82e (17:582e) + db $04,$01,$02,$09,$05,$09,$06,$05,$FF + +SilphCo9Script_5d837: ; 5d837 (17:5837) + push hl + ld hl, $d73f + ld a, [hli] + ld b, a + ld a, [hl] + ld c, a + xor a + ld [$ffe0], a + pop hl +.asm_5d843 + ld a, [hli] + cp $ff + jr z, .asm_5d85f + push hl + ld hl, $ffe0 + inc [hl] + pop hl + cp b + jr z, .asm_5d854 + inc hl + jr .asm_5d843 +.asm_5d854 + ld a, [hli] + cp c + jr nz, .asm_5d843 + ld hl, $d73f + xor a + ld [hli], a + ld [hl], a + ret +.asm_5d85f + xor a + ld [$ffe0], a + ret + +SilphCo9Script_5d863: ; 5d863 (17:5863) + ld hl, $d834 + ld a, [$ffe0] + and a + ret z + cp $1 + jr nz, .asm_5d871 + set 0, [hl] + ret +.asm_5d871 + cp $2 + jr nz, .asm_5d878 + set 1, [hl] + ret +.asm_5d878 + cp $3 + jr nz, .asm_5d87f + set 2, [hl] + ret +.asm_5d87f + cp $4 + ret nz + set 3, [hl] + ret + +SilphCo9ScriptPointers: ; 5d885 (17:5885) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +SilphCo9TextPointers: ; 5d88b (17:588b) + dw SilphCo9Text1 + dw SilphCo9Text2 + dw SilphCo9Text3 + dw SilphCo9Text4 + +SilphCo9TrainerHeaders: ; 5d893 (17:5893) +SilphCo9TrainerHeader0: ; 5d893 (17:5893) + db $2 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d833 ; flag's byte + dw SilphCo9BattleText1 ; 0x5912 TextBeforeBattle + dw SilphCo9AfterBattleText1 ; 0x591c TextAfterBattle + dw SilphCo9EndBattleText1 ; 0x5917 TextEndBattle + dw SilphCo9EndBattleText1 ; 0x5917 TextEndBattle + +SilphCo9TrainerHeader1: ; 5d89f (17:589f) + db $3 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d833 ; flag's byte + dw SilphCo9BattleText2 ; 0x5921 TextBeforeBattle + dw SilphCo9AfterBattleText2 ; 0x592b TextAfterBattle + dw SilphCo9EndBattleText2 ; 0x5926 TextEndBattle + dw SilphCo9EndBattleText2 ; 0x5926 TextEndBattle + +SilphCo9TrainerHeader2: ; 5d8ab (17:58ab) + db $4 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d833 ; flag's byte + dw SilphCo9BattleText3 ; 0x5930 TextBeforeBattle + dw SilphCo9AfterBattleText3 ; 0x593a TextAfterBattle + dw SilphCo9EndBattleText3 ; 0x5935 TextEndBattle + dw SilphCo9EndBattleText3 ; 0x5935 TextEndBattle + + db $ff + +SilphCo9Text1: ; 5d8b8 (17:58b8) + db $08 ; asm + ld a, [$d838] + bit 7, a + jr nz, .asm_a14c3 ; 0x5d8be + ld hl, SilphCo9Text_5d8e5 + call PrintText + ld a, $7 + call Predef + call GBFadeOut2 + call Delay3 + call GBFadeIn2 + ld hl, SilphCo9Text_5d8ea + call PrintText + jr .asm_b6e28 ; 0x5d8da +.asm_a14c3 ; 0x5d8dc + ld hl, SilphCo9Text_5d8ef + call PrintText +.asm_b6e28 ; 0x5d8e2 + jp TextScriptEnd + +SilphCo9Text_5d8e5: ; 5d8e5 (17:58e5) + TX_FAR _SilphCo9Text_5d8e5 + db "@" + +SilphCo9Text_5d8ea: ; 5d8ea (17:58ea) + TX_FAR _SilphCo9Text_5d8ea + db "@" + +SilphCo9Text_5d8ef: ; 5d8ef (17:58ef) + TX_FAR _SilphCo9Text_5d8ef + db "@" + +SilphCo9Text2: ; 5d8f4 (17:58f4) + db $08 ; asm + ld hl, SilphCo9TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +SilphCo9Text3: ; 5d8fe (17:58fe) + db $08 ; asm + ld hl, SilphCo9TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +SilphCo9Text4: ; 5d908 (17:5908) + db $08 ; asm + ld hl, SilphCo9TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +SilphCo9BattleText1: ; 5d912 (17:5912) + TX_FAR _SilphCo9BattleText1 + db "@" + +SilphCo9EndBattleText1: ; 5d917 (17:5917) + TX_FAR _SilphCo9EndBattleText1 + db "@" + +SilphCo9AfterBattleText1: ; 5d91c (17:591c) + TX_FAR _SilphCo9AfterBattleText1 + db "@" + +SilphCo9BattleText2: ; 5d921 (17:5921) + TX_FAR _SilphCo9BattleText2 + db "@" + +SilphCo9EndBattleText2: ; 5d926 (17:5926) + TX_FAR _SilphCo9EndBattleText2 + db "@" + +SilphCo9AfterBattleText2: ; 5d92b (17:592b) + TX_FAR _SilphCo9AfterBattleText2 + db "@" + +SilphCo9BattleText3: ; 5d930 (17:5930) + TX_FAR _SilphCo9BattleText3 + db "@" + +SilphCo9EndBattleText3: ; 5d935 (17:5935) + TX_FAR _SilphCo9EndBattleText3 + db "@" + +SilphCo9AfterBattleText3: ; 5d93a (17:593a) + TX_FAR _SilphCo9AfterBattleText3 + db "@" diff --git a/scripts/silphcoelevator.asm b/scripts/silphcoelevator.asm new file mode 100755 index 00000000..7986de3d --- /dev/null +++ b/scripts/silphcoelevator.asm @@ -0,0 +1,80 @@ +SilphCoElevatorScript: ; 457c0 (11:57c0) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + push hl + call nz, SilphCoElevatorScript_457dc + pop hl + bit 7, [hl] + res 7, [hl] + call nz, SilphCoElevatorScript_45827 + xor a + ld [$cf0c], a + inc a + ld [$cc3c], a + ret + +SilphCoElevatorScript_457dc: ; 457dc (11:57dc) + ld hl, $d3af + ld a, [$d73b] + ld b, a + ld a, [$d73c] + ld c, a + call SilphCoElevatorScript_457ea + +SilphCoElevatorScript_457ea: ; 457ea (11:57ea) + inc hl + inc hl + ld a, b + ld [hli], a + ld a, c + ld [hli], a + ret + +SilphCoElevatorScript_457f1: ; 457f1 (11:57f1) + ld hl, SilphCoElavatorFloors ; $5804 + call LoadItemList + ld hl, SilphCoElevatorWarpMaps ; $5811 + ld de, $cc5b + ld bc, $16 + call CopyData + ret + +SilphCoElavatorFloors: ; 45804 (11:45804) + db $0B ; num elements in list + db $56, $57, $58, $59, $5A, $5B, $5C, $5D, $5E, $5F, $60 ; "1F", "2F", "3F", "4F", ... , "11F" + db $FF ; terminator + +SilphCoElevatorWarpMaps: ; 45811 (11:45811) +; first byte is warp number +; second byte is map number +; These specify where the player goes after getting out of the elevator. + db $03, SILPH_CO_1F + db $02, SILPH_CO_2F + db $02, SILPH_CO_3F + db $02, SILPH_CO_4F + db $02, SILPH_CO_5F + db $02, SILPH_CO_6F + db $02, SILPH_CO_7F + db $02, SILPH_CO_8F + db $02, SILPH_CO_9F + db $02, SILPH_CO_10F + db $01, SILPH_CO_11F + +SilphCoElevatorScript_45827: ; 45827 (11:5827) + call Delay3 + ld b, BANK(ShakeElevator) + ld hl, ShakeElevator + call Bankswitch + ret + +SilphCoElevatorTextPointers: ; 45833 (11:5833) + dw SilphCoElevatorText1 + +SilphCoElevatorText1: ; 45835 (11:5835) + db $08 ; asm + call SilphCoElevatorScript_457f1 + ld hl, SilphCoElevatorWarpMaps ; $5811 + ld a, $61 + call Predef + jp TextScriptEnd diff --git a/scripts/ssanne1.asm b/scripts/ssanne1.asm new file mode 100755 index 00000000..4814dfe9 --- /dev/null +++ b/scripts/ssanne1.asm @@ -0,0 +1,15 @@ +SSAnne1Script: ; 61265 (18:5265) + call EnableAutoTextBoxDrawing + ret + +SSAnne1TextPointers: ; 61269 (18:5269) + dw SSAnne1Text1 + dw SSAnne1Text2 + +SSAnne1Text1: ; 6126d (18:526d) + TX_FAR _SSAnne1Text1 + db "@" + +SSAnne1Text2: ; 61272 (18:5272) + TX_FAR _SSAnne1Text2 + db "@" diff --git a/scripts/ssanne10.asm b/scripts/ssanne10.asm new file mode 100755 index 00000000..eaef6de3 --- /dev/null +++ b/scripts/ssanne10.asm @@ -0,0 +1,202 @@ +SSAnne10Script: ; 61d55 (18:5d55) + call EnableAutoTextBoxDrawing + ld hl, SSAnne10TrainerHeaders + ld de, SSAnne10ScriptPointers + ld a, [W_SSANNE10CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_SSANNE10CURSCRIPT], a + ret + +SSAnne10ScriptPointers: ; 61d68 (18:5d68) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +SSAnne10TextPointers: ; 61d6e (18:5d6e) + dw SSAnne10Text1 + dw SSAnne10Text2 + dw SSAnne10Text3 + dw SSAnne10Text4 + dw SSAnne10Text5 + dw SSAnne10Text6 + dw SSAnne10Text7 + dw SSAnne10Text8 + dw Predef5CText + dw Predef5CText + dw Predef5CText + +SSAnne10TrainerHeaders: ; 61d84 (18:5d84) +SSAnne10TrainerHeader0: ; 61d84 (18:5d84) + db $1 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d809 ; flag's byte + dw SSAnne10BattleText1 ; 0x5e16 TextBeforeBattle + dw SSAnne10AfterBattleText1 ; 0x5e20 TextAfterBattle + dw SSAnne10EndBattleText1 ; 0x5e1b TextEndBattle + dw SSAnne10EndBattleText1 ; 0x5e1b TextEndBattle + +SSAnne10TrainerHeader1: ; 61d90 (18:5d90) + db $2 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d809 ; flag's byte + dw SSAnne10BattleText2 ; 0x5e25 TextBeforeBattle + dw SSAnne10AfterBattleText2 ; 0x5e2f TextAfterBattle + dw SSAnne10EndBattleText2 ; 0x5e2a TextEndBattle + dw SSAnne10EndBattleText2 ; 0x5e2a TextEndBattle + +SSAnne10TrainerHeader2: ; 61d9c (18:5d9c) + db $3 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d809 ; flag's byte + dw SSAnne10BattleText3 ; 0x5e34 TextBeforeBattle + dw SSAnne10AfterBattleText3 ; 0x5e3e TextAfterBattle + dw SSAnne10EndBattleText3 ; 0x5e39 TextEndBattle + dw SSAnne10EndBattleText3 ; 0x5e39 TextEndBattle + +SSAnne10TrainerHeader3: ; 61da8 (18:5da8) + db $4 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d809 ; flag's byte + dw SSAnne10BattleText4 ; 0x5e43 TextBeforeBattle + dw SSAnne10AfterBattleText4 ; 0x5e4d TextAfterBattle + dw SSAnne10EndBattleText4 ; 0x5e48 TextEndBattle + dw SSAnne10EndBattleText4 ; 0x5e48 TextEndBattle + +SSAnne10TrainerHeader4: ; 61db4 (18:5db4) + db $5 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d809 ; flag's byte + dw SSAnne10BattleText5 ; 0x5e52 TextBeforeBattle + dw SSAnne10AfterBattleText5 ; 0x5e5c TextAfterBattle + dw SSAnne10EndBattleText5 ; 0x5e57 TextEndBattle + dw SSAnne10EndBattleText5 ; 0x5e57 TextEndBattle + +SSAnne10TrainerHeader5: ; 61dc0 (18:5dc0) + db $6 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d809 ; flag's byte + dw SSAnne10BattleText6 ; 0x5e61 TextBeforeBattle + dw SSAnne10AfterBattleText6 ; 0x5e6b TextAfterBattle + dw SSAnne10EndBattleText6 ; 0x5e66 TextEndBattle + dw SSAnne10EndBattleText6 ; 0x5e66 TextEndBattle + + db $ff + +SSAnne10Text1: ; 61dcd (18:5dcd) + db $08 ; asm + ld hl, SSAnne10TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +SSAnne10Text2: ; 61dd7 (18:5dd7) + db $08 ; asm + ld hl, SSAnne10TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +SSAnne10Text3: ; 61de1 (18:5de1) + db $08 ; asm + ld hl, SSAnne10TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +SSAnne10Text4: ; 61deb (18:5deb) + db $08 ; asm + ld hl, SSAnne10TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +SSAnne10Text5: ; 61df5 (18:5df5) + db $08 ; asm + ld hl, SSAnne10TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +SSAnne10Text6: ; 61dff (18:5dff) + db $08 ; asm + ld hl, SSAnne10TrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +SSAnne10Text8: ; 61e09 (18:5e09) + TX_FAR _SSAnne10Text8 + db $8 ; 0x61e0d + ld a, MACHOKE + call PlayCry + jp TextScriptEnd + +SSAnne10BattleText1: ; 61e16 (18:5e16) + TX_FAR _SSAnne10BattleText1 + db "@" + +SSAnne10EndBattleText1: ; 61e1b (18:5e1b) + TX_FAR _SSAnne10EndBattleText1 + db "@" + +SSAnne10AfterBattleText1: ; 61e20 (18:5e20) + TX_FAR _SSAnne10AfterBattleText1 + db "@" + +SSAnne10BattleText2: ; 61e25 (18:5e25) + TX_FAR _SSAnne10BattleText2 + db "@" + +SSAnne10EndBattleText2: ; 61e2a (18:5e2a) + TX_FAR _SSAnne10EndBattleText2 + db "@" + +SSAnne10AfterBattleText2: ; 61e2f (18:5e2f) + TX_FAR _SSAnne10AfterBattleText2 + db "@" + +SSAnne10BattleText3: ; 61e34 (18:5e34) + TX_FAR _SSAnne10BattleText3 + db "@" + +SSAnne10EndBattleText3: ; 61e39 (18:5e39) + TX_FAR _SSAnne10EndBattleText3 + db "@" + +SSAnne10AfterBattleText3: ; 61e3e (18:5e3e) + TX_FAR _SSAnne10AfterBattleText3 + db "@" + +SSAnne10BattleText4: ; 61e43 (18:5e43) + TX_FAR _SSAnne10BattleText4 + db "@" + +SSAnne10EndBattleText4: ; 61e48 (18:5e48) + TX_FAR _SSAnne10EndBattleText4 + db "@" + +SSAnne10AfterBattleText4: ; 61e4d (18:5e4d) + TX_FAR _SSAnne10AfterBattleText4 + db "@" + +SSAnne10BattleText5: ; 61e52 (18:5e52) + TX_FAR _SSAnne10BattleText5 + db "@" + +SSAnne10EndBattleText5: ; 61e57 (18:5e57) + TX_FAR _SSAnne10EndBattleText5 + db "@" + +SSAnne10AfterBattleText5: ; 61e5c (18:5e5c) + TX_FAR _SSAnne10AfterBattleText5 + db "@" + +SSAnne10BattleText6: ; 61e61 (18:5e61) + TX_FAR _SSAnne10BattleText6 + db "@" + +SSAnne10EndBattleText6: ; 61e66 (18:5e66) + TX_FAR _SSAnne10EndBattleText6 + db "@" + +SSAnne10AfterBattleText6: ; 61e6b (18:5e6b) + TX_FAR _SSAnne10AfterBattleText6 + db "@" + +SSAnne10Text7: ; 61e70 (18:5e70) + TX_FAR _SSAnne10Text7 + db "@" diff --git a/scripts/ssanne2.asm b/scripts/ssanne2.asm new file mode 100755 index 00000000..6405a173 --- /dev/null +++ b/scripts/ssanne2.asm @@ -0,0 +1,210 @@ +SSAnne2Script: ; 6139f (18:539f) + call EnableAutoTextBoxDrawing + ld hl, SSAnne2ScriptPointers + ld a, [W_SSANNE2CURSCRIPT] + jp CallFunctionInTable + +SSAnne2Script_613ab: ; 613ab (18:53ab) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_SSANNE2CURSCRIPT], a + ret + +SSAnne2ScriptPointers: ; 613b3 (18:53b3) + dw SSAnne2Script0 + dw SSAnne2Script1 + dw SSAnne2Script2 + dw SSAnne2Script3 + dw SSAnne2Script4 + +SSAnne2Script4: ; 613bd (18:53bd) + ret + +SSAnne2Script0: ; 613be (18:53be) + ld hl, CoordsData_61411 ; $5411 + call ArePlayerCoordsInArray + ret nc + ld a, $ff + ld [$c0ee], a + call PlaySound + ld c, BANK(Music_MeetRival) + ld a, MUSIC_MEET_RIVAL + call PlayMusic + ld a, [$cd3d] + ld [$ffdb], a + ld a, $71 + ld [$cc4d], a + ld a, $15 + call Predef + call Delay3 + ld a, $2 + ld [$ff8c], a + call SetSpriteMovementBytesToFF + xor a + ld [H_CURRENTPRESSEDBUTTONS], a + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld a, [$ffdb] + cp $2 + jr nz, .asm_61400 ; 0x613f9 $5 + ld de, MovementData_6140c + jr .asm_61403 ; 0x613fe $3 +.asm_61400 + ld de, MovementData_6140d +.asm_61403 + call MoveSprite + ld a, $1 + ld [W_SSANNE2CURSCRIPT], a + ret + +MovementData_6140c: ; 6140c (18:540c) + db $00 + +MovementData_6140d: ; 6140d (18:540d) + db $00,$00,$00,$FF + +CoordsData_61411: ; 61411 (18:5411) + db $08,$24,$08,$25,$FF + +SSAnne2Script_61416: ; 61416 (18:5416) + ld a, [W_XCOORD] ; $d362 + cp $25 + jr nz, .asm_61426 + ld a, $2 + ld [$d528], a + ld a, $c + jr .asm_61427 +.asm_61426 + xor a +.asm_61427 + ld [$ff8d], a + ld a, $2 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + jp Func_34a6 + +SSAnne2Script1: ; 61430 (18:5430) + ld a, [$d730] + bit 0, a + ret nz + call SSAnne2Script_61416 + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $2 + ld [$ff8c], a + call DisplayTextID + call Delay3 + ld a, SONY2 + $c8 + ld [W_CUROPPONENT], a + + ; select which team to use during the encounter + ld a, [W_RIVALSTARTER] + cp SQUIRTLE + jr nz, .NotSquirtle ; 0x61451 $4 + ld a, $1 + jr .done +.NotSquirtle + cp BULBASAUR + jr nz, .Charmander ; 0x61459 $4 + ld a, $2 + jr .done +.Charmander + ld a, $3 +.done + ld [W_TRAINERNO], a + + call SSAnne2Script_61416 + ld a, $2 + ld [W_SSANNE2CURSCRIPT], a + ret + +SSAnne2Script2: ; 6146d (18:546d) + ld a, [$d057] + cp $ff + jp z, SSAnne2Script_613ab + call SSAnne2Script_61416 + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + ld a, $3 + ld [$ff8c], a + call DisplayTextID + ld a, $2 + ld [$ff8c], a + call SetSpriteMovementBytesToFF + ld a, [W_XCOORD] + cp $25 + jr nz, .asm_61497 ; 0x61490 $5 + ld de, MovementData_614b9 + jr .asm_6149a ; 0x61495 $3 +.asm_61497 + ld de, MovementData_614b7 +.asm_6149a + ld a, $2 + ld [$ff8c], a + call MoveSprite + ld a, $ff + ld [$c0ee], a + call PlaySound + ld b, BANK(Music_RivalAlternateStart) + ld hl, Music_RivalAlternateStart + call Bankswitch + ld a, $3 + ld [W_SSANNE2CURSCRIPT], a + ret + +MovementData_614b7: ; 614b7 (18:54b7) + db $C0,$00 + +MovementData_614b9: ; 614b9 (18:54b9) + db $00,$00,$00,$00,$FF + +SSAnne2Script3: ; 614be (18:54be) + ld a, [$d730] + bit 0, a + ret nz + xor a + ld [wJoypadForbiddenButtonsMask], a + ld a, $71 + ld [$cc4d], a + ld a, $11 + call Predef + call Func_2307 + ld a, $4 + ld [W_SSANNE2CURSCRIPT], a + ret + +SSAnne2TextPointers: ; 614db (18:54db) + dw SSAnne2Text1 + dw SSAnne2Text2 + dw SSAnne2Text3 + +SSAnne2Text1: ; 614e1 (18:54e1) + TX_FAR _SSAnne2Text1 + db "@" + +SSAnne2Text2: ; 614e6 (18:54e6) + db $8 + ld hl, SSAnneRivalBeforeBattleText + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, SSAnneRivalDefeatedText + ld de, SSAnneRivalWonText + call PreBattleSaveRegisters + jp TextScriptEnd + +SSAnneRivalBeforeBattleText: ; 61500 (18:5500) + TX_FAR _SSAnneRivalBeforeBattleText + db "@" + +SSAnneRivalDefeatedText: ; 61505 (18:5505) + TX_FAR _SSAnneRivalDefeatedText + db "@" + +SSAnneRivalWonText: ; 6150a (18:550a) + TX_FAR _SSAnneRivalWonText + db "@" + +SSAnne2Text3: ; 6150f (18:550f) + TX_FAR _SSAnneRivalCaptainText + db "@" diff --git a/scripts/ssanne3.asm b/scripts/ssanne3.asm new file mode 100755 index 00000000..56cbdd9c --- /dev/null +++ b/scripts/ssanne3.asm @@ -0,0 +1,9 @@ +SSAnne3Script: ; 44932 (11:4932) + jp EnableAutoTextBoxDrawing + +SSAnne3TextPointers: ; 44935 (11:4935) + dw SSAnne3Text1 + +SSAnne3Text1: ; 44937 (11:4937) + TX_FAR _SSAnne3Text1 + db "@" diff --git a/scripts/ssanne4.asm b/scripts/ssanne4.asm new file mode 100755 index 00000000..6cc0e7b9 --- /dev/null +++ b/scripts/ssanne4.asm @@ -0,0 +1,5 @@ +SSAnne4Script: ; 6162e (18:562e) + jp EnableAutoTextBoxDrawing + +SSAnne4TextPointers: ; 61631 (18:5631) + db "@" diff --git a/scripts/ssanne5.asm b/scripts/ssanne5.asm new file mode 100755 index 00000000..034dd26a --- /dev/null +++ b/scripts/ssanne5.asm @@ -0,0 +1,89 @@ +SSAnne5Script: ; 616ae (18:56ae) + call EnableAutoTextBoxDrawing + ld hl, SSAnne5TrainerHeader0 ; $56d1 + ld de, SSAnne5ScriptPointers + ld a, [W_SSANNE5CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_SSANNE5CURSCRIPT], a + ret + +SSAnne5ScriptPointers: ; 616c1 (18:56c1) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +SSAnne5TextPointers: ; 616c7 (18:56c7) + dw SSAnne5Text1 + dw SSAnne5Text2 + dw SSAnne5Text3 + dw SSAnne5Text4 + dw SSAnne5Text5 + +SSAnne5TrainerHeaders: ; 616d1 (18:56d1) +SSAnne5TrainerHeader0: ; 616d1 (18:56d1) + db $4 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7ff ; flag's byte + dw SSAnne5BattleText1 ; 0x5703 TextBeforeBattle + dw SSAnne5AfterBattleText1 ; 0x570d TextAfterBattle + dw SSAnne5EndBattleText1 ; 0x5708 TextEndBattle + dw SSAnne5EndBattleText1 ; 0x5708 TextEndBattle + +SSAnne5TrainerHeader1: ; 616dd (18:56dd) + db $5 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7ff ; flag's byte + dw SSAnne5BattleText2 ; 0x571c TextBeforeBattle + dw SSAnne5AfterBattleText2 ; 0x5726 TextAfterBattle + dw SSAnne5EndBattleText2 ; 0x5721 TextEndBattle + dw SSAnne5EndBattleText2 ; 0x5721 TextEndBattle + + db $ff + +SSAnne5Text1: ; 616ea (18:56ea) + TX_FAR _SSAnne5Text1 + db "@" + +SSAnne5Text2: ; 616ef (18:56ef) + TX_FAR _SSAnne5Text2 + db "@" + +SSAnne5Text3: ; 616f4 (18:56f4) + TX_FAR _SSAnne5Text3 + db "@" + +SSAnne5Text4: ; 616f9 (18:56f9) + db $08 ; asm + ld hl, SSAnne5TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +SSAnne5BattleText1: ; 61703 (18:5703) + TX_FAR _SSAnne5BattleText1 + db "@" + +SSAnne5EndBattleText1: ; 61708 (18:5708) + TX_FAR _SSAnne5EndBattleText1 + db "@" + +SSAnne5AfterBattleText1: ; 6170d (18:570d) + TX_FAR _SSAnne5AfterBattleText1 + db "@" + +SSAnne5Text5: ; 61712 (18:5712) + db $08 ; asm + ld hl, SSAnne5TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +SSAnne5BattleText2: ; 6171c (18:571c) + TX_FAR _SSAnne5BattleText2 + db "@" + +SSAnne5EndBattleText2: ; 61721 (18:5721) + TX_FAR _SSAnne5EndBattleText2 + db "@" + +SSAnne5AfterBattleText2: ; 61726 (18:5726) + TX_FAR _SSAnne5AfterBattleText2 + db "@" diff --git a/scripts/ssanne6.asm b/scripts/ssanne6.asm new file mode 100755 index 00000000..d3ec191f --- /dev/null +++ b/scripts/ssanne6.asm @@ -0,0 +1,72 @@ +SSAnne6Script: ; 617b3 (18:57b3) + call EnableAutoTextBoxDrawing + ret + +SSAnne6TextPointers: ; 617b7 (18:57b7) + dw SSAnne6Text1 + dw SSAnne6Text2 + dw SSAnne6Text3 + dw SSAnne6Text4 + dw SSAnne6Text5 + dw SSAnne6Text6 + dw SSAnne6Text7 + +SSAnne6Text1: ; 617c5 (18:57c5) + TX_FAR _SSAnne6Text1 + db "@" + +SSAnne6Text2: ; 617ca (18:57ca) + TX_FAR _SSAnne6Text2 + db "@" + +SSAnne6Text3: ; 617cf (18:57cf) + TX_FAR _SSAnne6Text3 + db "@" + +SSAnne6Text4: ; 617d4 (18:57d4) + TX_FAR _SSAnne6Text4 + db "@" + +SSAnne6Text5: ; 617d9 (18:57d9) + TX_FAR _SSAnne6Text5 + db "@" + +SSAnne6Text6: ; 617de (18:57de) + TX_FAR _SSAnne6Text6 + db "@" + +SSAnne6Text7: ; 617e3 (18:57e3) + db $08 ; asm + ld hl, SSAnne6Text_61807 + call PrintText + ldh a, [$d3] + bit 7, a + jr z, .asm_93eb1 ; 0x617ee + ld hl, SSAnne6Text_6180c + jr .asm_63292 ; 0x617f3 +.asm_93eb1 ; 0x617f5 + bit 4, a + jr z, .asm_7436c ; 0x617f7 + ld hl, SSAnne6Text_61811 + jr .asm_63292 ; 0x617fc +.asm_7436c ; 0x617fe + ld hl, SSAnne6Text_61816 +.asm_63292 ; 0x61801 + call PrintText + jp TextScriptEnd + +SSAnne6Text_61807: ; 61807 (18:5807) + TX_FAR _SSAnne6Text_61807 + db "@" + +SSAnne6Text_6180c: ; 6180c (18:580c) + TX_FAR _SSAnne6Text_6180c + db "@" + +SSAnne6Text_61811: ; 61811 (18:5811) + TX_FAR _SSAnne6Text_61811 + db "@" + +SSAnne6Text_61816: ; 61816 (18:5816) + TX_FAR _SSAnne6Text_61816 + db "@" diff --git a/scripts/ssanne7.asm b/scripts/ssanne7.asm new file mode 100755 index 00000000..8e88417f --- /dev/null +++ b/scripts/ssanne7.asm @@ -0,0 +1,96 @@ +SSAnne7Script: ; 61895 (18:5895) + call SSAnne7Script_6189b + jp EnableAutoTextBoxDrawing + +SSAnne7Script_6189b: ; 6189b (18:589b) + ld a, [$d803] + bit 1, a + ret nz + ld hl, $d72d + set 5, [hl] + ret + +SSAnne7TextPointers: ; 618a7 (18:58a7) + dw SSAnne7Text1 + dw SSAnne7Text2 + dw SSAnne7Text3 + +SSAnne7Text1: ; 618ad (18:58ad) + db $08 ; asm + ld a, [$d803] + bit 0, a + jr nz, .asm_797c4 ; 0x618b3 + ld hl, SSAnne7RubText + call PrintText + ld hl, ReceivingHM01Text + call PrintText + ld bc, (HM_01 << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, ReceivedHM01Text + call PrintText + ld hl, $d803 + set 0, [hl] + jr .asm_0faf5 ; 0x618d4 +.BagFull + ld hl, HM01NoRoomText + call PrintText + ld hl, $d72d + set 5, [hl] + jr .asm_0faf5 ; 0x618e1 +.asm_797c4 ; 0x618e3 + ld hl, SSAnne7Text_61932 + call PrintText +.asm_0faf5 ; 0x618e9 + jp TextScriptEnd + +SSAnne7RubText: ; 618ec (18:58ec) + TX_FAR _SSAnne7RubText + db $8 + ld a, [$c0ef] + cp $1f + ld [$c0f0], a + jr nz, .asm_61908 ; 0x618f9 $d + ld a, $ff + ld [$c0ee], a + call PlaySound + ld a, Bank(Func_9876) + ld [$c0ef], a +.asm_61908 + ld a, MUSIC_PKMN_HEALED + ld [$c0ee], a + call PlaySound +.asm_61910 + ld a, [$c026] + cp MUSIC_PKMN_HEALED + jr z, .asm_61910 ; 0x61915 $f9 + call Func_2307 + ld hl, $d803 + set 1, [hl] + ld hl, $d72d + res 5, [hl] + jp TextScriptEnd + +ReceivingHM01Text: ; 61927 (18:5927) + TX_FAR _ReceivingHM01Text + db "@" + +ReceivedHM01Text: ; 6192c (18:592c) + TX_FAR _ReceivedHM01Text + db $11, "@" + +SSAnne7Text_61932: ; 61932 (18:5932) + TX_FAR _SSAnne7Text_61932 + db "@" + +HM01NoRoomText: ; 61937 (18:5937) + TX_FAR _HM01NoRoomText + db "@" + +SSAnne7Text2: ; 6193c (18:593c) + TX_FAR _SSAnne7Text2 + db "@" + +SSAnne7Text3: ; 61941 (18:5941) + TX_FAR _SSAnne7Text3 + db "@" diff --git a/scripts/ssanne8.asm b/scripts/ssanne8.asm new file mode 100755 index 00000000..31feb058 --- /dev/null +++ b/scripts/ssanne8.asm @@ -0,0 +1,164 @@ +SSAnne8Script: ; 61976 (18:5976) + call EnableAutoTextBoxDrawing + ld hl, SSAnne8TrainerHeaders + ld de, SSAnne8ScriptPointers + ld a, [W_SSANNE8CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_SSANNE8CURSCRIPT], a + ret + +SSAnne8ScriptPointers: ; 61989 (18:5989) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +SSAnne8TextPointers: ; 6198f (18:598f) + dw SSAnne8Text1 + dw SSAnne8Text2 + dw SSAnne8Text3 + dw SSAnne8Text4 + dw SSAnne8Text5 + dw SSAnne8Text6 + dw SSAnne8Text7 + dw SSAnne8Text8 + dw SSAnne8Text9 + dw Predef5CText + dw SSAnne8Text11 + +SSAnne8TrainerHeaders: ; 619a5 (18:59a5) +SSAnne8TrainerHeader0: ; 619a5 (18:59a5) + db $1 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d805 ; flag's byte + dw SSAnne8BattleText1 ; 0x5a0b TextBeforeBattle + dw SSAnne8AfterBattleText1 ; 0x5a15 TextAfterBattle + dw SSAnne8EndBattleText1 ; 0x5a10 TextEndBattle + dw SSAnne8EndBattleText1 ; 0x5a10 TextEndBattle + +SSAnne8TrainerHeader1: ; 619b1 (18:59b1) + db $2 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d805 ; flag's byte + dw SSAnne8BattleText2 ; 0x5a1a TextBeforeBattle + dw SSAnne8AfterBattleText2 ; 0x5a24 TextAfterBattle + dw SSAnne8EndBattleText2 ; 0x5a1f TextEndBattle + dw SSAnne8EndBattleText2 ; 0x5a1f TextEndBattle + +SSAnne8TrainerHeader2: ; 619bd (18:59bd) + db $3 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d805 ; flag's byte + dw SSAnne8BattleText3 ; 0x5a29 TextBeforeBattle + dw SSAnne8AfterBattleText3 ; 0x5a33 TextAfterBattle + dw SSAnne8EndBattleText3 ; 0x5a2e TextEndBattle + dw SSAnne8EndBattleText3 ; 0x5a2e TextEndBattle + +SSAnne8TrainerHeader3: ; 619c9 (18:59c9) + db $4 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d805 ; flag's byte + dw SSAnne8BattleText4 ; 0x5a38 TextBeforeBattle + dw SSAnne8AfterBattleText4 ; 0x5a42 TextAfterBattle + dw SSAnne8EndBattleText4 ; 0x5a3d TextEndBattle + dw SSAnne8EndBattleText4 ; 0x5a3d TextEndBattle + + db $ff + +SSAnne8Text1: ; 619d6 (18:59d6) + db $08 ; asm + ld hl, SSAnne8TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +SSAnne8Text2: ; 619e0 (18:59e0) + db $08 ; asm + ld hl, SSAnne8TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +SSAnne8Text3: ; 619ea (18:59ea) + db $08 ; asm + ld hl, SSAnne8TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +SSAnne8Text4: ; 619f4 (18:59f4) + db $08 ; asm + ld hl, SSAnne8TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +SSAnne8Text8: ; 619fe (18:59fe) + TX_FAR _SSAnne8Text8 + db $08 ; asm + ld a, WIGGLYTUFF + call PlayCry + jp TextScriptEnd + +SSAnne8BattleText1: ; 61a0b (18:5a0b) + TX_FAR _SSAnne8BattleText1 + db "@" + +SSAnne8EndBattleText1: ; 61a10 (18:5a10) + TX_FAR _SSAnne8EndBattleText1 + db "@" + +SSAnne8AfterBattleText1: ; 61a15 (18:5a15) + TX_FAR _SSAnne8AfterBattleText1 + db "@" + +SSAnne8BattleText2: ; 61a1a (18:5a1a) + TX_FAR _SSAnne8BattleText2 + db "@" + +SSAnne8EndBattleText2: ; 61a1f (18:5a1f) + TX_FAR _SSAnne8EndBattleText2 + db "@" + +SSAnne8Text_61a24: ; 61a24 (18:5a24) + TX_FAR _SSAnne8Text_61a24 + db "@" + +SSAnne8BattleText3: ; 61a29 (18:5a29) + TX_FAR _SSAnne8BattleText3 + db "@" + +SSAnne8EndBattleText3: ; 61a2e (18:5a2e) + TX_FAR _SSAnne8EndBattleText3 + db "@" + +SSAnne8AfterBattleText3: ; 61a33 (18:5a33) + TX_FAR _SSAnne8AfterBattleText3 + db "@" + +SSAnne8BattleText4: ; 61a38 (18:5a38) + TX_FAR _SSAnne8BattleText4 + db "@" + +SSAnne8EndBattleText4: ; 61a3d (18:5a3d) + TX_FAR _SSAnne8EndBattleText4 + db "@" + +SSAnne8AfterBattleText4: ; 61a42 (18:5a42) + TX_FAR _SSAnne8AfterBattleText4 + db "@" + +SSAnne8Text5: ; 61a47 (18:5a47) + TX_FAR _SSAnne8Text5 + db "@" + +SSAnne8Text6: ; 61a4c (18:5a4c) + TX_FAR _SSAnne8Text6 + db "@" + +SSAnne8Text7: ; 61a51 (18:5a51) + TX_FAR _SSAnne8Text7 + db "@" + +SSAnne8Text9: ; 61a56 (18:5a56) + TX_FAR _SSAnne8Text9 + db "@" + +SSAnne8Text11: ; 61a5b (18:5a5b) + TX_FAR _SSAnne8Text11 + db "@" diff --git a/scripts/ssanne9.asm b/scripts/ssanne9.asm new file mode 100755 index 00000000..9b055e3f --- /dev/null +++ b/scripts/ssanne9.asm @@ -0,0 +1,216 @@ +SSAnne9Script: ; 61b4b (18:5b4b) + ld a, $1 + ld [$cf0c], a + xor a + ld [$cc3c], a + ld hl, SSAnne9TrainerHeaders + ld de, SSAnne9ScriptPointers + ld a, [W_SSANNE9CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_SSANNE9CURSCRIPT], a + ret + +SSAnne9ScriptPointers: ; 61b64 (18:5b64) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +SSAnne9TextPointers: ; 61b6a (18:5b6a) + dw SSAnne9Text1 + dw SSAnne9Text2 + dw SSAnne9Text3 + dw SSAnne9Text4 + dw SSAnne9Text5 + dw Predef5CText + dw SSAnne9Text7 + dw SSAnne9Text8 + dw Predef5CText + dw SSAnne9Text10 + dw SSAnne9Text11 + dw SSAnne9Text12 + dw SSAnne9Text13 + +SSAnne9TrainerHeaders: ; 61b84 (18:5b84) +SSAnne9TrainerHeader0: ; 61b84 (18:5b84) + db $1 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d807 ; flag's byte + dw SSAnne9BattleText1 ; 0x5c51 TextBeforeBattle + dw SSAnne9AfterBattleText1 ; 0x5c5b TextAfterBattle + dw SSAnne9EndBattleText1 ; 0x5c56 TextEndBattle + dw SSAnne9EndBattleText1 ; 0x5c56 TextEndBattle + +SSAnne9TrainerHeader1: ; 61b90 (18:5b90) + db $2 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d807 ; flag's byte + dw SSAnne9BattleText2 ; 0x5c60 TextBeforeBattle + dw SSAnne9AfterBattleText2 ; 0x5c6a TextAfterBattle + dw SSAnne9EndBattleText2 ; 0x5c65 TextEndBattle + dw SSAnne9EndBattleText2 ; 0x5c65 TextEndBattle + +SSAnne9TrainerHeader2: ; 61b9c (18:5b9c) + db $3 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d807 ; flag's byte + dw SSAnne9BattleText3 ; 0x5c6f TextBeforeBattle + dw SSAnne9AfterBattleText3 ; 0x5c79 TextAfterBattle + dw SSAnne9EndBattleText3 ; 0x5c74 TextEndBattle + dw SSAnne9EndBattleText3 ; 0x5c74 TextEndBattle + +SSAnne9TrainerHeader3: ; 61ba8 (18:5ba8) + db $4 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d807 ; flag's byte + dw SSAnne9BattleText4 ; 0x5c7e TextBeforeBattle + dw SSAnne9AfterBattleText4 ; 0x5c88 TextAfterBattle + dw SSAnne9EndBattleText4 ; 0x5c83 TextEndBattle + dw SSAnne9EndBattleText4 ; 0x5c83 TextEndBattle + + db $ff + +SSAnne9Text1: ; 61bb5 (18:5bb5) + db $08 ; asm + ld hl, SSAnne9TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +SSAnne9Text2: ; 61bbf (18:5bbf) + db $08 ; asm + ld hl, SSAnne9TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +SSAnne9Text3: ; 61bc9 (18:5bc9) + db $08 ; asm + ld hl, SSAnne9TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +SSAnne9Text4: ; 61bd3 (18:5bd3) + db $08 ; asm + ld hl, SSAnne9TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +SSAnne9Text5: ; 61bdd (18:5bdd) + db $08 ; asm + call SaveScreenTilesToBuffer1 + ld hl, SSAnne9Text_61bf2 + call PrintText + call LoadScreenTilesFromBuffer1 + ld a, SNORLAX + call DisplayPokedex + jp TextScriptEnd + +SSAnne9Text_61bf2: ; 61bf2 (18:5bf2) + TX_FAR _SSAnne9Text_61bf2 + db "@" + +SSAnne9Text7: ; 61bf7 (18:5bf7) + db $08 ; asm + ld hl, SSAnne9Text_61c01 + call PrintText + jp TextScriptEnd + +SSAnne9Text_61c01: ; 61c01 (18:5c01) + TX_FAR _SSAnne9Text_61c01 + db "@" + +SSAnne9Text8: ; 61c06 (18:5c06) + db $08 ; asm + ld hl, SSAnne9Text_61c10 + call PrintText + jp TextScriptEnd + +SSAnne9Text_61c10: ; 61c10 (18:5c10) + TX_FAR _SSAnne9Text_61c10 + db "@" + +SSAnne9Text10: ; 61c15 (18:5c15) + db $08 ; asm + ld hl, SSAnne9Text_61c1f + call PrintText + jp TextScriptEnd + +SSAnne9Text_61c1f: ; 61c1f (18:5c1f) + TX_FAR _SSAnne9Text_61c1f + db "@" + +SSAnne9Text11: ; 61c24 (18:5c24) + db $08 ; asm + ld hl, SSAnne9Text_61c2e + call PrintText + jp TextScriptEnd + +SSAnne9Text_61c2e: ; 61c2e (18:5c2e) + TX_FAR _SSAnne9Text_61c2e + db "@" + +SSAnne9Text12: ; 61c33 (18:5c33) + db $08 ; asm + ld hl, SSAnne9Text_61c3d + call PrintText + jp TextScriptEnd + +SSAnne9Text_61c3d: ; 61c3d (18:5c3d) + TX_FAR _SSAnne9Text_61c3d + db "@" + +SSAnne9Text13: ; 61c42 (18:5c42) + db $08 ; asm + ld hl, SSAnne9Text_61c4c + call PrintText + jp TextScriptEnd + +SSAnne9Text_61c4c: ; 61c4c (18:5c4c) + TX_FAR _SSAnne9Text_61c4c + db "@" + +SSAnne9BattleText1: ; 61c51 (18:5c51) + TX_FAR _SSAnne9BattleText1 + db "@" + +SSAnne9EndBattleText1: ; 61c56 (18:5c56) + TX_FAR _SSAnne9EndBattleText1 + db "@" + +SSAnne9AfterBattleText1: ; 61c5b (18:5c5b) + TX_FAR _SSAnne9AfterBattleText1 + db "@" + +SSAnne9BattleText2: ; 61c60 (18:5c60) + TX_FAR _SSAnne9BattleText2 + db "@" + +SSAnne9EndBattleText2: ; 61c65 (18:5c65) + TX_FAR _SSAnne9EndBattleText2 + db "@" + +SSAnne9AfterBattleText2: ; 61c6a (18:5c6a) + TX_FAR _SSAnne9AfterBattleText2 + db "@" + +SSAnne9BattleText3: ; 61c6f (18:5c6f) + TX_FAR _SSAnne9BattleText3 + db "@" + +SSAnne9EndBattleText3: ; 61c74 (18:5c74) + TX_FAR _SSAnne9EndBattleText3 + db "@" + +SSAnne9AfterBattleText3: ; 61c79 (18:5c79) + TX_FAR _SSAnne9AfterBattleText3 + db "@" + +SSAnne9BattleText4: ; 61c7e (18:5c7e) + TX_FAR _SSAnne9BattleText4 + db "@" + +SSAnne9EndBattleText4: ; 61c83 (18:5c83) + TX_FAR _SSAnne9EndBattleText4 + db "@" + +SSAnne9AfterBattleText4: ; 61c88 (18:5c88) + TX_FAR _SSAnne9AfterBattleText4 + db "@" diff --git a/scripts/tradecenterm.asm b/scripts/tradecenterm.asm new file mode 100755 index 00000000..662a1df7 --- /dev/null +++ b/scripts/tradecenterm.asm @@ -0,0 +1,9 @@ +TradeCenterMScript: ; 4fd7d (13:7d7d) + jp BattleCenterMScript + +TradeCenterMTextPointers: ; 4fd80 (13:7d80) + dw TradeCenterMText1 + +TradeCenterMText1: ; 4fd82 (13:7d82) + TX_FAR _TradeCenterMText1 + db "@" diff --git a/scripts/undergroundpathentranceroute5.asm b/scripts/undergroundpathentranceroute5.asm new file mode 100755 index 00000000..ad05dfe6 --- /dev/null +++ b/scripts/undergroundpathentranceroute5.asm @@ -0,0 +1,19 @@ +UndergroundPathEntranceRoute5Script: ; 5d6a9 (17:56a9) + ld a, $10 + ld [$d365], a + ret + +UndergroundPathEntranceRoute5_5d6af: ; 5d6af (17:56af) + db "@" + +UndergroundPathEntranceRoute5TextPointers: ; 5d6b0 (17:56b0) + dw UndergroundPathEntranceRoute5Text1 + +UndergroundPathEntranceRoute5Text1: ; 5d6b2 (17:56b2) + db $08 ; asm + ld a, $9 + ld [wWhichTrade], a + ld a, $54 + call Predef + ld hl, UndergroundPathEntranceRoute5_5d6af + ret diff --git a/scripts/undergroundpathentranceroute6.asm b/scripts/undergroundpathentranceroute6.asm new file mode 100755 index 00000000..afefd187 --- /dev/null +++ b/scripts/undergroundpathentranceroute6.asm @@ -0,0 +1,11 @@ +UndergroundPathEntranceRoute6Script: ; 5d6ef (17:56ef) + ld a, $11 + ld [$d365], a + jp EnableAutoTextBoxDrawing + +UndergroundPathEntranceRoute6TextPointers: ; 5d6f7 (17:56f7) + dw UndergroundPathEntranceRoute6Text1 + +UndergroundPathEntranceRoute6Text1: ; 5d6f9 (17:56f9) + TX_FAR _UndergrdTunnelEntRoute6Text1 + db "@" diff --git a/scripts/undergroundpathentranceroute7.asm b/scripts/undergroundpathentranceroute7.asm new file mode 100755 index 00000000..5dd10a4e --- /dev/null +++ b/scripts/undergroundpathentranceroute7.asm @@ -0,0 +1,11 @@ +UndergroundPathEntranceRoute7Script: ; 5d72c (17:572c) + ld a, $12 + ld [$d365], a + jp EnableAutoTextBoxDrawing + +UndergroundPathEntranceRoute7TextPointers: ; 5d734 (17:5734) + dw UndergroundPathEntranceRoute7Text1 + +UndergroundPathEntranceRoute7Text1: ; 5d736 (17:5736) + TX_FAR _UndergroundPathEntRoute7Text1 + db "@" diff --git a/scripts/undergroundpathentranceroute7copy.asm b/scripts/undergroundpathentranceroute7copy.asm new file mode 100755 index 00000000..845e5674 --- /dev/null +++ b/scripts/undergroundpathentranceroute7copy.asm @@ -0,0 +1,24 @@ +UndergroundPathEntranceRoute7CopyScript: ; 5d769 (17:5769) + ld a, $12 + ld [$d365], a + ret + +UndergroundPathEntranceRoute7CopyTextPointers: ; 5d76f (17:576f) + dw UnnamedText_5d773 + dw UnnamedText_5d77d + +UnnamedText_5d773: ; 5d773 (17:5773) + TX_FAR _UnnamedText_5d773 + db "@" + +UnnamedText_5d778: ; 5d778 (17:5778) + TX_FAR _UnnamedText_5d778 + db "@" + +UnnamedText_5d77d: ; 5d77d (17:577d) + TX_FAR _UnnamedText_5d77d + db "@" + +UnnamedText_5d782: ; 5d782 (17:5782) + TX_FAR _UnnamedText_5d782 + db "@" diff --git a/scripts/undergroundpathentranceroute8.asm b/scripts/undergroundpathentranceroute8.asm new file mode 100755 index 00000000..d777b24b --- /dev/null +++ b/scripts/undergroundpathentranceroute8.asm @@ -0,0 +1,11 @@ +UndergroundPathEntranceRoute8Script: ; 1e289 (7:6289) + ld a, $13 + ld [$d365], a + jp EnableAutoTextBoxDrawing + +UndergroundPathEntranceRoute8TextPointers: ; 1e291 (7:6291) + dw UndergroundPathEntranceRoute8Text1 + +UndergroundPathEntranceRoute8Text1: ; 1e293 (7:6293) + TX_FAR _UndergroundPathEntRoute8Text1 + db "@" diff --git a/scripts/undergroundpathns.asm b/scripts/undergroundpathns.asm new file mode 100755 index 00000000..96bf82a6 --- /dev/null +++ b/scripts/undergroundpathns.asm @@ -0,0 +1,5 @@ +UndergroundPathNSScript: ; 61f26 (18:5f26) + jp EnableAutoTextBoxDrawing + +UndergroundPathNSTextPointers: ; 61f29 (18:5f29) + db "@" diff --git a/scripts/undergroundpathwe.asm b/scripts/undergroundpathwe.asm new file mode 100755 index 00000000..f7e3755e --- /dev/null +++ b/scripts/undergroundpathwe.asm @@ -0,0 +1,5 @@ +UndergroundPathWEScript: ; 61f4a (18:5f4a) + jp EnableAutoTextBoxDrawing + +UndergroundPathWETextPointers: ; 61f4d (18:5f4d) + db "@" diff --git a/scripts/unknowndungeon1.asm b/scripts/unknowndungeon1.asm new file mode 100755 index 00000000..008a7bd7 --- /dev/null +++ b/scripts/unknowndungeon1.asm @@ -0,0 +1,7 @@ +UnknownDungeon1Script: ; 74d0c (1d:4d0c) + jp EnableAutoTextBoxDrawing + +UnknownDungeon1TextPointers: ; 74d0f (1d:4d0f) + dw Predef5CText + dw Predef5CText + dw Predef5CText diff --git a/scripts/unknowndungeon2.asm b/scripts/unknowndungeon2.asm new file mode 100755 index 00000000..c8249b27 --- /dev/null +++ b/scripts/unknowndungeon2.asm @@ -0,0 +1,7 @@ +UnknownDungeon2Script: ; 45e0b (11:5e0b) + jp EnableAutoTextBoxDrawing + +UnknownDungeon2TextPointers: ; 45e0e (11:5e0e) + dw Predef5CText + dw Predef5CText + dw Predef5CText diff --git a/scripts/unknowndungeon3.asm b/scripts/unknowndungeon3.asm new file mode 100755 index 00000000..b765ef56 --- /dev/null +++ b/scripts/unknowndungeon3.asm @@ -0,0 +1,44 @@ +UnknownDungeon3Script: ; 45ef0 (11:5ef0) + call EnableAutoTextBoxDrawing + ld hl, UnknownDungeon3TrainerHeaders + ld de, UnknownDungeon3ScriptPointers + ld a, [W_UNKNOWNDUNGEON3CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_UNKNOWNDUNGEON3CURSCRIPT], a + ret + +UnknownDungeon3ScriptPointers: ; 45f03 (11:5f03) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +UnknownDungeon3TextPointers: ; 45f09 (11:5f09) + dw UnknownDungeon3Text1 + dw Predef5CText + dw Predef5CText + +UnknownDungeon3TrainerHeaders: ; 45f0f (11:5f0f) +UnknownDungeon3TrainerHeader0: ; 45f0f (11:5f0f) + db $1 ; flag's bit + db ($0 << 4) ; trainer's view range + dw $d85f ; flag's byte + dw UnknownDungeon3MewtwoText ; 0x5f26 TextBeforeBattle + dw UnknownDungeon3MewtwoText ; 0x5f26 TextAfterBattle + dw UnknownDungeon3MewtwoText ; 0x5f26 TextEndBattle + dw UnknownDungeon3MewtwoText ; 0x5f26 TextEndBattle + + db $ff + +UnknownDungeon3Text1: ; 45f1c (11:5f1c) + db $08 ; asm + ld hl, UnknownDungeon3TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +UnknownDungeon3MewtwoText: ; 45f26 (11:5f26) + TX_FAR _UnknownDungeon3MewtwoText + db $8 + ld a, MEWTWO + call PlayCry + call WaitForSoundToFinish + jp TextScriptEnd diff --git a/scripts/vermilioncity.asm b/scripts/vermilioncity.asm new file mode 100755 index 00000000..3f582dba --- /dev/null +++ b/scripts/vermilioncity.asm @@ -0,0 +1,263 @@ +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, VermilionCityText_198a7 + call PrintText + jr .asm_735d9 ; 0x1989c +.asm_359bd ; 0x1989e + ld hl, VermilionCityText_198ac + call PrintText +.asm_735d9 ; 0x198a4 + jp TextScriptEnd + +VermilionCityText_198a7: ; 198a7 (6:58a7) + TX_FAR _VermilionCityText_198a7 + db "@" + +VermilionCityText_198ac: ; 198ac (6:58ac) + TX_FAR _VermilionCityText_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, S_S__TICKET + 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 "@" diff --git a/scripts/vermiliondock.asm b/scripts/vermiliondock.asm new file mode 100755 index 00000000..2e07e408 --- /dev/null +++ b/scripts/vermiliondock.asm @@ -0,0 +1,210 @@ +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 + +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 + +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 + +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 + +VermilionDockOAMBlock: ; 1dc74 (7:5c74) + db $fc, $10 + db $fd, $10 + db $fe, $10 + db $ff, $10 + +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 + +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 + +VermilionDockTextPointers: ; 1dcbf (7:5cbf) + dw VermilionDockText1 + +VermilionDockText1: ; 1dcc1 (7:5cc1) + TX_FAR _VermilionDockText1 + db "@" diff --git a/scripts/vermiliongym.asm b/scripts/vermiliongym.asm new file mode 100755 index 00000000..de3678dd --- /dev/null +++ b/scripts/vermiliongym.asm @@ -0,0 +1,275 @@ +VermilionGymScript: ; 5ca26 (17:4a26) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + push hl + call nz, VermilionGymScript_5ca4c + pop hl + bit 6, [hl] + res 6, [hl] + call nz, VermilionGymScript_5ca6d + call EnableAutoTextBoxDrawing + ld hl, VermilionGymTrainerHeader0 + ld de, VermilionGymScriptPointers + ld a, [W_VERMILIONGYMCURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_VERMILIONGYMCURSCRIPT], a + ret + +VermilionGymScript_5ca4c: ; 5ca4c (17:4a4c) + ld hl, Gym3CityName ; $4a55 + ld de, Gym3LeaderName ; $4a64 + jp LoadGymLeaderAndCityName + +Gym3CityName: ; 5ca55 (17:4a55) + db "VERMILION CITY@" + +Gym3LeaderName: ; 5ca64 (17:4a64) + db "LT.SURGE@" + +VermilionGymScript_5ca6d: ; 5ca6d (17:4a6d) + ld a, [$d773] + bit 0, a + jr nz, .asm_5ca78 + ld a, $24 + jr .asm_5ca7f +.asm_5ca78 + ld a, (SFX_02_57 - SFX_Headers_02) / 3 + call PlaySound + ld a, $5 +.asm_5ca7f + ld [$d09f], a + ld bc, $202 + ld a, $17 + jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + +VermilionGymScript_5ca8a: ; 5ca8a (17:4a8a) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_VERMILIONGYMCURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +VermilionGymScriptPointers: ; 5ca95 (17:4a95) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + dw VermilionGymScript3 + +VermilionGymScript3: ; 5ca9d (17:4a9d) + ld a, [W_ISINBATTLE] ; $d057 + cp $ff + jp z, VermilionGymScript_5ca8a + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a + +VermilionGymScript_5caaa: ; 5caaa (17:4aaa) + ld a, $6 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld hl, $d773 + set 7, [hl] + ld bc, (TM_24 << 8) | 1 + call GiveItem + jr nc, .BagFull + ld a, $7 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld hl, $d773 + set 6, [hl] + jr .asm_5cad3 +.BagFull + ld a, $8 + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID +.asm_5cad3 + ld hl, W_OBTAINEDBADGES + set 2, [hl] + ld hl, $d72a + set 2, [hl] + + ; deactivate gym trainers + ld a, [$d773] + or %00011100 + ld [$d773], a + + jp VermilionGymScript_5ca8a + +VermilionGymTextPointers: ; 5cae8 (17:4ae8) + dw VermilionGymText1 + dw VermilionGymText2 + dw VermilionGymText3 + dw VermilionGymText4 + dw VermilionGymText5 + dw VermilionGymText6 + dw VermilionGymText7 + dw VermilionGymText8 + +VermilionGymTrainerHeaders: ; 5caf8 (17:4af8) +VermilionGymTrainerHeader0: ; 5caf8 (17:4af8) + db $2 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d773 ; flag's byte + dw VermilionGymBattleText1 ; 0x4b9a TextBeforeBattle + dw VermilionGymAfterBattleText1 ; 0x4ba4 TextAfterBattle + dw VermilionGymEndBattleText1 ; 0x4b9f TextEndBattle + dw VermilionGymEndBattleText1 ; 0x4b9f TextEndBattle + +VermilionGymTrainerHeader1: ; 5cb04 (17:4b04) + db $3 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d773 ; flag's byte + dw VermilionGymBattleText2 ; 0x4bb3 TextBeforeBattle + dw VermilionGymAfterBattleText2 ; 0x4bbd TextAfterBattle + dw VermilionGymEndBattleText2 ; 0x4bb8 TextEndBattle + dw VermilionGymEndBattleText2 ; 0x4bb8 TextEndBattle + +VermilionGymTrainerHeader2: ; 5cb10 (17:4b10) + db $4 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d773 ; flag's byte + dw VermilionGymBattleText3 ; 0x4bcc TextBeforeBattle + dw VermilionGymAfterBattleText3 ; 0x4bd6 TextAfterBattle + dw VermilionGymEndBattleText3 ; 0x4bd1 TextEndBattle + dw VermilionGymEndBattleText3 ; 0x4bd1 TextEndBattle + + db $ff + +VermilionGymText1: ; 5cb1d (17:4b1d) + db $08 ; asm + ld a, [$d773] + bit 7, a + jr z, .asm_7cc29 ; 0x5cb23 + bit 6, a + jr nz, .asm_41203 ; 0x5cb27 + call z, VermilionGymScript_5caaa + call DisableWaitingAfterTextDisplay + jr .asm_23621 ; 0x5cb2f +.asm_41203 ; 0x5cb31 + ld hl, VermilionGymText_5cb72 + call PrintText + jr .asm_23621 ; 0x5cb37 +.asm_7cc29 ; 0x5cb39 + ld hl, VermilionGymText_5cb6d + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, ReceivedThunderbadgeText + ld de, ReceivedThunderbadgeText + call PreBattleSaveRegisters + ldh a, [$8c] + ld [$cf13], a + call EngageMapTrainer + call InitBattleEnemyParameters + ld a, $3 + ld [$d05c], a + xor a + ldh [$b4], a + ld a, $3 + ld [W_VERMILIONGYMCURSCRIPT], a + ld [W_CURMAPSCRIPT], a +.asm_23621 ; 0x5cb6a + jp TextScriptEnd + +VermilionGymText_5cb6d: ; 5cb6d (17:4b6d) + TX_FAR _VermilionGymText_5cb6d + db "@" + +VermilionGymText_5cb72: ; 5cb72 (17:4b72) + TX_FAR _VermilionGymText_5cb72 + db "@" + +VermilionGymText6: ; 5cb77 (17:4b77) + TX_FAR _VermilionGymText_5cb77 + db "@" + +VermilionGymText7: ; 5cb7c (17:4b7c) + TX_FAR _ReceivedTM24Text + db $11 + TX_FAR _TM24ExplanationText + db "@" + +VermilionGymText8: ; 5cb86 (17:4b86) + TX_FAR _TM24NoRoomText + db "@" + +ReceivedThunderbadgeText: ; 5cb8b (17:4b8b) + TX_FAR _ReceivedThunderbadgeText + db "@" + +VermilionGymText2: ; 5cb90 (17:4b90) + db $08 ; asm + ld hl, VermilionGymTrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +VermilionGymBattleText1: ; 5cb9a (17:4b9a) + TX_FAR _VermilionGymBattleText1 + db "@" + +VermilionGymEndBattleText1: ; 5cb9f (17:4b9f) + TX_FAR _VermilionGymEndBattleText1 + db "@" + +VermilionGymAfterBattleText1: ; 5cba4 (17:4ba4) + TX_FAR _VermilionGymAfterBattleText1 + db "@" + +VermilionGymText3: ; 5cba9 (17:4ba9) + db $08 ; asm + ld hl, VermilionGymTrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +VermilionGymBattleText2: ; 5cbb3 (17:4bb3) + TX_FAR _VermilionGymBattleText2 + db "@" + +VermilionGymEndBattleText2: ; 5cbb8 (17:4bb8) + TX_FAR _VermilionGymEndBattleText2 + db "@" + +VermilionGymAfterBattleText2: ; 5cbbd (17:4bbd) + TX_FAR _VermilionGymAfterBattleText2 + db "@" + +VermilionGymText4: ; 5cbc2 (17:4bc2) + db $08 ; asm + ld hl, VermilionGymTrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +VermilionGymBattleText3: ; 5cbcc (17:4bcc) + TX_FAR _VermilionGymBattleText3 + db "@" + +VermilionGymEndBattleText3: ; 5cbd1 (17:4bd1) + TX_FAR _VermilionGymEndBattleText3 + db "@" + +VermilionGymAfterBattleText3: ; 5cbd6 (17:4bd6) + TX_FAR _VermilionGymAfterBattleText3 + db "@" + +VermilionGymText5: ; 5cbdb (17:4bdb) + db $08 ; asm + ld a, [$d72a] + bit 2, a + jr nz, .asm_13b67 ; 0x5cbe1 + ld hl, VermilionGymText_5cbf4 + call PrintText + jr .asm_c2b38 ; 0x5cbe9 +.asm_13b67 ; 0x5cbeb + ld hl, VermilionGymText_5cbf9 + call PrintText +.asm_c2b38 ; 0x5cbf1 + jp TextScriptEnd + +VermilionGymText_5cbf4: ; 5cbf4 (17:4bf4) + TX_FAR _VermilionGymText_5cbf4 + db "@" + +VermilionGymText_5cbf9: ; 5cbf9 (17:4bf9) + TX_FAR _VermilionGymText_5cbf9 + db "@" diff --git a/scripts/vermilionhouse1.asm b/scripts/vermilionhouse1.asm new file mode 100755 index 00000000..4ead1af7 --- /dev/null +++ b/scripts/vermilionhouse1.asm @@ -0,0 +1,24 @@ +VermilionHouse1Script: ; 1dafc (7:5afc) + call EnableAutoTextBoxDrawing + ret + +VermilionHouse1TextPointers: ; 1db00 (7:5b00) + dw VermilionHouse1Text1 + dw VermilionHouse1Text2 + dw VermilionHouse1Text3 + +VermilionHouse1Text1: ; 1db06 (7:5b06) + TX_FAR _VermilionHouse1Text1 + db "@" + +VermilionHouse1Text2: ; 1db0b (7:5b0b) + TX_FAR _VermilionHouse1Text2 + db $08 ; asm + ld a, PIDGEY + call PlayCry + call WaitForSoundToFinish + jp TextScriptEnd + +VermilionHouse1Text3: ; 1db1b (7:5b1b) + TX_FAR _VermilionHouse1Text3 + db "@" diff --git a/scripts/vermilionhouse2.asm b/scripts/vermilionhouse2.asm new file mode 100755 index 00000000..9efb8200 --- /dev/null +++ b/scripts/vermilionhouse2.asm @@ -0,0 +1,57 @@ +VermilionHouse2Script: ; 56070 (15:6070) + jp EnableAutoTextBoxDrawing + +VermilionHouse2TextPointers: ; 56073 (15:6073) + dw VermilionHouse2Text1 + +VermilionHouse2Text1: ; 56075 (15:6075) + db $08 ; asm + ld a, [$d728] + bit 3, a + jr nz, .asm_03ef5 + ld hl, VermilionHouse2Text_560b1 + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + jr nz, .asm_eb1b7 + ld bc, (OLD_ROD << 8) | 1 + call GiveItem + jr nc, .BagFull + ld hl, $d728 + set 3, [hl] + ld hl, VermilionHouse2Text_560b6 + jr .asm_5dd95 +.BagFull + ld hl, VermilionHouse2Text_560ca + jr .asm_5dd95 +.asm_eb1b7 + ld hl, VermilionHouse2Text_560c0 + jr .asm_5dd95 +.asm_03ef5 + ld hl, VermilionHouse2Text_560c5 +.asm_5dd95 + call PrintText + jp TextScriptEnd + +VermilionHouse2Text_560b1: ; 560b1 (15:60b1) + TX_FAR _VermilionHouse2Text_560b1 + db "@" + +VermilionHouse2Text_560b6: ; 560b6 (15:60b6) + TX_FAR _VermilionHouse2Text_560b6 ; 0x9c554 + db $0B + TX_FAR _VermilionHouse2Text_560bb ; 0x9c5a4 + db "@" + +VermilionHouse2Text_560c0: ; 560c0 (15:60c0) + TX_FAR _VermilionHouse2Text_560c0 + db "@" + +VermilionHouse2Text_560c5: ; 560c5 (15:60c5) + TX_FAR _VermilionHouse2Text_560c5 + db "@" + +VermilionHouse2Text_560ca: ; 560ca (15:60ca) + TX_FAR _VermilionHouse2Text_560ca + db "@" diff --git a/scripts/vermilionhouse3.asm b/scripts/vermilionhouse3.asm new file mode 100755 index 00000000..b6bceeea --- /dev/null +++ b/scripts/vermilionhouse3.asm @@ -0,0 +1,13 @@ +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 diff --git a/scripts/vermilionmart.asm b/scripts/vermilionmart.asm new file mode 100755 index 00000000..921e7852 --- /dev/null +++ b/scripts/vermilionmart.asm @@ -0,0 +1,15 @@ +VermilionMartScript: ; 5c9e1 (17:49e1) + jp EnableAutoTextBoxDrawing + +VermilionMartTextPointers: ; 5c9e4 (17:49e4) + dw VermilionMartText1 + dw VermilionMartText2 + dw VermilionMartText3 + +VermilionMartText2: ; 5c9ea (17:49ea) + TX_FAR _VermilionMartText2 + db "@" + +VermilionMartText3: ; 5c9ef (17:49ef) + TX_FAR _VermilionMartText3 + db "@" diff --git a/scripts/vermilionpokecenter.asm b/scripts/vermilionpokecenter.asm new file mode 100755 index 00000000..00d139f5 --- /dev/null +++ b/scripts/vermilionpokecenter.asm @@ -0,0 +1,23 @@ +VermilionPokecenterScript: ; 5c98f (17:498f) + call Func_22fa + jp EnableAutoTextBoxDrawing + +VermilionPokecenterTextPointers: ; 5c995 (17:4995) + dw VermilionPokecenterText1 + dw VermilionPokecenterText2 + dw VermilionPokecenterText3 + dw VermilionPokecenterText4 + +VermilionPokecenterText1: ; 5c99d (17:499d) + db $ff + +VermilionPokecenterText2: ; 5c99e (17:499e) + TX_FAR _VermilionPokecenterText1 + db "@" + +VermilionPokecenterText3: ; 5c9a3 (17:49a3) + TX_FAR _VermilionPokecenterText3 + db "@" + +VermilionPokecenterText4: ; 5c9a8 (17:49a8) + db $f6 diff --git a/scripts/victoryroad1.asm b/scripts/victoryroad1.asm new file mode 100755 index 00000000..b9b946ad --- /dev/null +++ b/scripts/victoryroad1.asm @@ -0,0 +1,108 @@ +VictoryRoad1Script: ; 5da0a (17:5a0a) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + call nz, .next + call EnableAutoTextBoxDrawing + ld hl, VictoryRoad1TrainerHeaders + ld de, VictoryRoad1ScriptPointers + ld a, [W_VICTORYROAD1CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_VICTORYROAD1CURSCRIPT], a + ret +.next + ld a, [$d869] + bit 7, a + ret z + ld a, $1d + ld [$d09f], a + ld bc, $604 + ld a, $17 + jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + +VictoryRoad1ScriptPointers: ; 5da3a (17:5a3a) + dw VictoryRoad1Script0 + dw Func_324c + dw EndTrainerBattle + +VictoryRoad1Script0: ; 5da40 (17:5a40) + ld a, [$d869] + bit 7, a + jp nz, CheckFightingMapTrainers + ld hl, CoordsData_5da5c ; $5a5c + call CheckBoulderCoords + jp nc, CheckFightingMapTrainers + ld hl, $d126 + set 5, [hl] + ld hl, $d869 + set 7, [hl] + ret + +CoordsData_5da5c: ; 5da5c (17:5a5c) + db $0D,$11,$FF + +VictoryRoad1TextPointers: ; 5da5f (17:5a5f) + dw VictoryRoad1Text1 + dw VictoryRoad1Text2 + dw Predef5CText + dw Predef5CText + dw BoulderText + dw BoulderText + dw BoulderText + +VictoryRoad1TrainerHeaders: ; 5da6d (17:5a6d) +VictoryRoad1TrainerHeader0: ; 5da6d (17:5a6d) + db $1 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d869 ; flag's byte + dw VictoryRoad1BattleText1 ; 0x5a9a TextBeforeBattle + dw VictoryRoad1AfterBattleText1 ; 0x5aa4 TextAfterBattle + dw VictoryRoad1EndBattleText1 ; 0x5a9f TextEndBattle + dw VictoryRoad1EndBattleText1 ; 0x5a9f TextEndBattle + +VictoryRoad1TrainerHeader1: ; 5da79 (17:5a79) + db $2 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d869 ; flag's byte + dw VictoryRoad1BattleText2 ; 0x5aa9 TextBeforeBattle + dw VictoryRoad1AfterBattleText2 ; 0x5ab3 TextAfterBattle + dw VictoryRoad1EndBattleText2 ; 0x5aae TextEndBattle + dw VictoryRoad1EndBattleText2 ; 0x5aae TextEndBattle + + db $ff + +VictoryRoad1Text1: ; 5da86 (17:5a86) + db $08 ; asm + ld hl, VictoryRoad1TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +VictoryRoad1Text2: ; 5da90 (17:5a90) + db $08 ; asm + ld hl, VictoryRoad1TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +VictoryRoad1BattleText1: ; 5da9a (17:5a9a) + TX_FAR _VictoryRoad1BattleText1 + db "@" + +VictoryRoad1EndBattleText1: ; 5da9f (17:5a9f) + TX_FAR _VictoryRoad1EndBattleText1 + db "@" + +VictoryRoad1AfterBattleText1: ; 5daa4 (17:5aa4) + TX_FAR _VictoryRoad1AfterBattleText1 + db "@" + +VictoryRoad1BattleText2: ; 5daa9 (17:5aa9) + TX_FAR _VictoryRoad1BattleText2 + db "@" + +VictoryRoad1EndBattleText2: ; 5daae (17:5aae) + TX_FAR _VictoryRoad1EndBattleText2 + db "@" + +VictoryRoad1AfterBattleText2: ; 5dab3 (17:5ab3) + TX_FAR _VictoryRoad1AfterBattleText2 + db "@" diff --git a/scripts/victoryroad2.asm b/scripts/victoryroad2.asm new file mode 100755 index 00000000..6270a858 --- /dev/null +++ b/scripts/victoryroad2.asm @@ -0,0 +1,248 @@ +VictoryRoad2Script: ; 5179d (14:579d) + ld hl, $d126 + bit 6, [hl] + res 6, [hl] + call nz, VictoryRoad2Script_517c4 + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + call nz, VictoryRoad2Script_517c9 + call EnableAutoTextBoxDrawing + ld hl, VictoryRoad2TrainerHeaders + ld de, VictoryRoad2ScriptPointers + ld a, [W_VICTORYROAD2CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_VICTORYROAD2CURSCRIPT], a + ret + +VictoryRoad2Script_517c4: ; 517c4 (14:57c4) + ld hl, $d869 + res 7, [hl] + +VictoryRoad2Script_517c9: ; 517c9 (14:57c9) + ld a, [$d7ee] + bit 0, a + jr z, .asm_517da + push af + ld a, $15 + ld bc, $403 + call VictoryRoad2Script_517e2 + pop af +.asm_517da + bit 7, a + ret z + ld a, $1d + ld bc, $70b + +VictoryRoad2Script_517e2: ; 517e2 (14:57e2) + ld [$d09f], a + ld a, $17 + call Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + ret + +VictoryRoad2ScriptPointers: ; 517eb (14:57eb) + dw VictoryRoad2Script0 + dw Func_324c + dw EndTrainerBattle + +VictoryRoad2Script0: ; 517f1 (14:57f1) + ld hl, CoordsData_51816 ; $5816 + call CheckBoulderCoords + jp nc, CheckFightingMapTrainers + ld hl, $d7ee + ld a, [wWhichTrade] ; $cd3d + cp $2 + jr z, .asm_5180b + bit 0, [hl] + set 0, [hl] + ret nz + jr .asm_51810 +.asm_5180b + bit 7, [hl] + set 7, [hl] + ret nz +.asm_51810 + ld hl, $d126 + set 5, [hl] + ret + +CoordsData_51816: ; 51816 (14:5816) + db $10,$01 + db $10,$09 + db $FF + +VictoryRoad2TextPointers: ; 5181b (14:581b) + dw VictoryRoad2Text1 + dw VictoryRoad2Text2 + dw VictoryRoad2Text3 + dw VictoryRoad2Text4 + dw VictoryRoad2Text5 + dw VictoryRoad2Text6 + dw Predef5CText + dw Predef5CText + dw Predef5CText + dw Predef5CText + dw BoulderText + dw BoulderText + dw BoulderText + +VictoryRoad2TrainerHeaders: ; 51835 (14:5835) +VictoryRoad2TrainerHeader0: ; 51835 (14:5835) + db $1 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7ee ; flag's byte + dw VictoryRoad2BattleText1 ; 0x58ca TextBeforeBattle + dw VictoryRoad2AfterBattleText1 ; 0x58d4 TextAfterBattle + dw VictoryRoad2EndBattleText1 ; 0x58cf TextEndBattle + dw VictoryRoad2EndBattleText1 ; 0x58cf TextEndBattle + +VictoryRoad2TrainerHeader2: ; 51841 (14:5841) + db $2 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7ee ; flag's byte + dw VictoryRoad2BattleText2 ; 0x58d9 TextBeforeBattle + dw VictoryRoad2AfterBattleText2 ; 0x58e3 TextAfterBattle + dw VictoryRoad2EndBattleText2 ; 0x58de TextEndBattle + dw VictoryRoad2EndBattleText2 ; 0x58de TextEndBattle + +VictoryRoad2TrainerHeader3: ; 5184d (14:584d) + db $3 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7ee ; flag's byte + dw VictoryRoad2BattleText3 ; 0x58e8 TextBeforeBattle + dw VictoryRoad2AfterBattleText3 ; 0x58f2 TextAfterBattle + dw VictoryRoad2EndBattleText3 ; 0x58ed TextEndBattle + dw VictoryRoad2EndBattleText3 ; 0x58ed TextEndBattle + +VictoryRoad2TrainerHeader4: ; 51859 (14:5859) + db $4 ; flag's bit + db ($1 << 4) ; trainer's view range + dw $d7ee ; flag's byte + dw VictoryRoad2BattleText4 ; 0x58f7 TextBeforeBattle + dw VictoryRoad2AfterBattleText4 ; 0x5901 TextAfterBattle + dw VictoryRoad2EndBattleText4 ; 0x58fc TextEndBattle + dw VictoryRoad2EndBattleText4 ; 0x58fc TextEndBattle + +VictoryRoad2TrainerHeader5: ; 51865 (14:5865) + db $5 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d7ee ; flag's byte + dw VictoryRoad2BattleText5 ; 0x5906 TextBeforeBattle + dw VictoryRoad2AfterBattleText5 ; 0x5910 TextAfterBattle + dw VictoryRoad2EndBattleText5 ; 0x590b TextEndBattle + dw VictoryRoad2EndBattleText5 ; 0x590b TextEndBattle + +VictoryRoad2TrainerHeader6: ; 51871 (14:5871) + db $6 ; flag's bit + db ($0 << 4) ; trainer's view range + dw $d7ee ; flag's byte + dw VictoryRoad2BattleText6 ; 0x58ba TextBeforeBattle + dw VictoryRoad2BattleText6 ; 0x58ba TextAfterBattle + dw VictoryRoad2BattleText6 ; 0x58ba TextEndBattle + dw VictoryRoad2BattleText6 ; 0x58ba TextEndBattle + + db $ff + +VictoryRoad2Text1: ; 5187e (14:587e) + db $08 ; asm + ld hl, VictoryRoad2TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +VictoryRoad2Text2: ; 51888 (14:5888) + db $08 ; asm + ld hl, VictoryRoad2TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +VictoryRoad2Text3: ; 51892 (14:5892) + db $08 ; asm + ld hl, VictoryRoad2TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +VictoryRoad2Text4: ; 5189c (14:589c) + db $08 ; asm + ld hl, VictoryRoad2TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +VictoryRoad2Text5: ; 518a6 (14:58a6) + db $08 ; asm + ld hl, VictoryRoad2TrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +VictoryRoad2Text6: ; 518b0 (14:58b0) + db $08 ; asm + ld hl, VictoryRoad2TrainerHeader6 + call TalkToTrainer + jp TextScriptEnd + +VictoryRoad2BattleText6: ; 518ba (14:58ba) + TX_FAR _VictoryRoad2BattleText6 + db $8 + ld a, MOLTRES + call PlayCry + call WaitForSoundToFinish + jp TextScriptEnd + +VictoryRoad2BattleText1: ; 518ca (14:58ca) + TX_FAR _VictoryRoad2BattleText1 + db "@" + +VictoryRoad2EndBattleText1: ; 518cf (14:58cf) + TX_FAR _VictoryRoad2EndBattleText1 + db "@" + +VictoryRoad2AfterBattleText1: ; 518d4 (14:58d4) + TX_FAR _VictoryRoad2AfterBattleText1 + db "@" + +VictoryRoad2BattleText2: ; 518d9 (14:58d9) + TX_FAR _VictoryRoad2BattleText2 + db "@" + +VictoryRoad2EndBattleText2: ; 518de (14:58de) + TX_FAR _VictoryRoad2EndBattleText2 + db "@" + +VictoryRoad2AfterBattleText2: ; 518e3 (14:58e3) + TX_FAR _VictoryRoad2AfterBattleText2 + db "@" + +VictoryRoad2BattleText3: ; 518e8 (14:58e8) + TX_FAR _VictoryRoad2BattleText3 + db "@" + +VictoryRoad2EndBattleText3: ; 518ed (14:58ed) + TX_FAR _VictoryRoad2EndBattleText3 + db "@" + +VictoryRoad2AfterBattleText3: ; 518f2 (14:58f2) + TX_FAR _VictoryRoad2AfterBattleText3 + db "@" + +VictoryRoad2BattleText4: ; 518f7 (14:58f7) + TX_FAR _VictoryRoad2BattleText4 + db "@" + +VictoryRoad2EndBattleText4: ; 518fc (14:58fc) + TX_FAR _VictoryRoad2EndBattleText4 + db "@" + +VictoryRoad2AfterBattleText4: ; 51901 (14:5901) + TX_FAR _VictoryRoad2AfterBattleText4 + db "@" + +VictoryRoad2BattleText5: ; 51906 (14:5906) + TX_FAR _VictoryRoad2BattleText5 + db "@" + +VictoryRoad2EndBattleText5: ; 5190b (14:590b) + TX_FAR _VictoryRoad2EndBattleText5 + db "@" + +VictoryRoad2AfterBattleText5: ; 51910 (14:5910) + TX_FAR _VictoryRoad2AfterBattleText5 + db "@" diff --git a/scripts/victoryroad3.asm b/scripts/victoryroad3.asm new file mode 100755 index 00000000..f2e08ca4 --- /dev/null +++ b/scripts/victoryroad3.asm @@ -0,0 +1,205 @@ +VictoryRoad3Script: ; 44980 (11:4980) + call VictoryRoad3Script_44996 + call EnableAutoTextBoxDrawing + ld hl, VictoryRoad3TrainerHeaders + ld de, VictoryRoad3ScriptPointers + ld a, [W_VICTORYROAD3CURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_VICTORYROAD3CURSCRIPT], a + ret + +VictoryRoad3Script_44996: ; 44996 (11:4996) + ld hl, $d126 + bit 5, [hl] + res 5, [hl] + ret z + ld hl, $d813 + bit 0, [hl] + ret z + ld a, $1d + ld [$d09f], a + ld bc, $503 + ld a, $17 + jp Predef ; indirect jump to Func_ee9e (ee9e (3:6e9e)) + +VictoryRoad3ScriptPointers: ; 449b1 (11:49b1) + dw VictoryRoad3Script0 + dw Func_324c + dw EndTrainerBattle + +VictoryRoad3Script0: ; 449b7 (11:49b7) + ld hl, wFlags_0xcd60 + bit 7, [hl] + res 7, [hl] + jp z, .asm_449fe + ld hl, .coordsData_449f9 ; $49f9 + call CheckBoulderCoords + jp nc, .asm_449fe + ld a, [wWhichTrade] ; $cd3d + cp $1 + jr nz, .asm_449dc + ld hl, $d126 + set 5, [hl] + ld hl, $d813 + set 0, [hl] + ret +.asm_449dc + ld hl, $d813 + bit 6, [hl] + set 6, [hl] + jr nz, .asm_449fe + ld a, $7a + ld [$cc4d], a + ld a, $11 + call Predef ; indirect jump to RemoveMissableObject (f1d7 (3:71d7)) + ld a, $60 + ld [$cc4d], a + ld a, $15 + jp Predef ; indirect jump to AddMissableObject (f1c8 (3:71c8)) + +.coordsData_449f9: ; 449f9 (11:49f9) + db $05,$03 + db $0F,$17 + db $FF + +.asm_449fe + ld a, $c2 + ld [$d71d], a + ld hl, .coordsData_449f9 ; $49f9 + call Func_46981 + ld a, [wWhichTrade] ; $cd3d + cp $1 + jr nz, .asm_44a1b + ld hl, $d72d + res 4, [hl] + ld hl, $d732 + res 4, [hl] + ret +.asm_44a1b + ld a, [$d72d] + bit 4, a + jp z, CheckFightingMapTrainers + ret + +VictoryRoad3TextPointers: ; 44a24 (11:4a24) + dw VictoryRoad3Text1 + dw VictoryRoad3Text2 + dw VictoryRoad3Text3 + dw VictoryRoad3Text4 + dw Predef5CText + dw Predef5CText + dw BoulderText + dw BoulderText + dw BoulderText + dw BoulderText + +VictoryRoad3TrainerHeaders: ; 44a38 (11:4a38) +VictoryRoad3TrainerHeader0: ; 44a38 (11:4a38) + db $1 ; flag's bit + db ($1 << 4) ; trainer's view range + dw $d813 ; flag's byte + dw VictoryRoad3BattleText2 ; 0x4a91 TextBeforeBattle + dw VictoryRoad3AfterBattleText2 ; 0x4a9b TextAfterBattle + dw VictoryRoad3EndBattleText2 ; 0x4a96 TextEndBattle + dw VictoryRoad3EndBattleText2 ; 0x4a96 TextEndBattle + +VictoryRoad3TrainerHeader2: ; 44a44 (11:4a44) + db $2 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d813 ; flag's byte + dw VictoryRoad3BattleText3 ; 0x4aa0 TextBeforeBattle + dw VictoryRoad3AfterBattleText3 ; 0x4aaa TextAfterBattle + dw VictoryRoad3EndBattleText3 ; 0x4aa5 TextEndBattle + dw VictoryRoad3EndBattleText3 ; 0x4aa5 TextEndBattle + +VictoryRoad3TrainerHeader3: ; 44a50 (11:4a50) + db $3 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d813 ; flag's byte + dw VictoryRoad3BattleText4 ; 0x4aaf TextBeforeBattle + dw VictoryRoad3AfterBattleText4 ; 0x4ab9 TextAfterBattle + dw VictoryRoad3EndBattleText4 ; 0x4ab4 TextEndBattle + dw VictoryRoad3EndBattleText4 ; 0x4ab4 TextEndBattle + +VictoryRoad3TrainerHeader4: ; 44a5c (11:4a5c) + db $4 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d813 ; flag's byte + dw VictoryRoad3BattleText5 ; 0x4abe TextBeforeBattle + dw VictoryRoad3AfterBattleText5 ; 0x4ac8 TextAfterBattle + dw VictoryRoad3EndBattleText5 ; 0x4ac3 TextEndBattle + dw VictoryRoad3EndBattleText5 ; 0x4ac3 TextEndBattle + + db $ff + +VictoryRoad3Text1: ; 44a69 (11:4a69) + db $08 ; asm + ld hl, VictoryRoad3TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +VictoryRoad3Text2: ; 44a73 (11:4a73) + db $08 ; asm + ld hl, VictoryRoad3TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +VictoryRoad3Text3: ; 44a7d (11:4a7d) + db $08 ; asm + ld hl, VictoryRoad3TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +VictoryRoad3Text4: ; 44a87 (11:4a87) + db $08 ; asm + ld hl, VictoryRoad3TrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +VictoryRoad3BattleText2: ; 44a91 (11:4a91) + TX_FAR _VictoryRoad3BattleText2 + db "@" + +VictoryRoad3EndBattleText2: ; 44a96 (11:4a96) + TX_FAR _VictoryRoad3EndBattleText2 + db "@" + +VictoryRoad3AfterBattleText2: ; 44a9b (11:4a9b) + TX_FAR _VictoryRoad3AfterBattleText2 + db "@" + +VictoryRoad3BattleText3: ; 44aa0 (11:4aa0) + TX_FAR _VictoryRoad3BattleText3 + db "@" + +VictoryRoad3EndBattleText3: ; 44aa5 (11:4aa5) + TX_FAR _VictoryRoad3EndBattleText3 + db "@" + +VictoryRoad3AfterBattleText3: ; 44aaa (11:4aaa) + TX_FAR _VictoryRoad3AfterBattleText3 + db "@" + +VictoryRoad3BattleText4: ; 44aaf (11:4aaf) + TX_FAR _VictoryRoad3BattleText4 + db "@" + +VictoryRoad3EndBattleText4: ; 44ab4 (11:4ab4) + TX_FAR _VictoryRoad3EndBattleText4 + db "@" + +VictoryRoad3AfterBattleText4: ; 44ab9 (11:4ab9) + TX_FAR _VictoryRoad3AfterBattleText4 + db "@" + +VictoryRoad3BattleText5: ; 44abe (11:4abe) + TX_FAR _VictoryRoad3BattleText5 + db "@" + +VictoryRoad3EndBattleText5: ; 44ac3 (11:4ac3) + TX_FAR _VictoryRoad3EndBattleText5 + db "@" + +VictoryRoad3AfterBattleText5: ; 44ac8 (11:4ac8) + TX_FAR _VictoryRoad3AfterBattleText5 + db "@" diff --git a/scripts/viridiancity.asm b/scripts/viridiancity.asm new file mode 100755 index 00000000..4bb04ba7 --- /dev/null +++ b/scripts/viridiancity.asm @@ -0,0 +1,333 @@ +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, ViridianCityText_19127 + jr z, .asm_ae9fe ; 0x19110 + ld a, [$d751] + bit 1, a + jr nz, .asm_ae9fe ; 0x19117 + ld hl, ViridianCityText_19122 +.asm_ae9fe ; 0x1911c + call PrintText + jp TextScriptEnd + +ViridianCityText_19122: ; 19122 (6:5122) + TX_FAR _ViridianCityText_19122 + db "@" + +ViridianCityText_19127: ; 19127 (6:5127) + TX_FAR _ViridianCityText_19127 + db "@" + +ViridianCityText3: ; 1912c (6:512c) + db $08 ; asm + ld hl, ViridianCityText_1914d + call PrintText + call YesNoChoice + ld a, [$cc26] + and a + jr nz, .asm_6dfea ; 0x1913a + ld hl, ViridianCityText_19157 + call PrintText + jr .asm_d611f ; 0x19142 +.asm_6dfea ; 0x19144 + ld hl, ViridianCityText_19152 + call PrintText +.asm_d611f ; 0x1914a + jp TextScriptEnd + +ViridianCityText_1914d: ; 1914d (6:514d) + TX_FAR _ViridianCityText_1914d + db "@" + +ViridianCityText_19152: ; 19152 (6:5152) + TX_FAR _ViridianCityText_19152 + db "@" + +ViridianCityText_19157: ; 19157 (6:5157) + TX_FAR _ViridianCityText_19157 + db "@" + +ViridianCityText4: ; 1915c (6:515c) + db $08 ; asm + ld a, [$d74b] + bit 5, a + jr nz, .asm_83894 ; 0x19162 + ld hl, ViridianCityText_19175 + call PrintText + jr .asm_700a6 ; 0x1916a +.asm_83894 ; 0x1916c + ld hl, ViridianCityText_1917a + call PrintText +.asm_700a6 ; 0x19172 + jp TextScriptEnd + +ViridianCityText_19175: ; 19175 (6:5175) + TX_FAR _ViridianCityText_19175 + db "@" + +ViridianCityText_1917a: ; 1917a (6:517a) + TX_FAR _ViridianCityText_1917a + db "@" + +ViridianCityText5: ; 1917f (6:517f) + db $08 ; asm + ld hl, ViridianCityText_19191 + call PrintText + call ViridianCityScript_190cf + ld a, $3 + ld [W_VIRIDIANCITYCURSCRIPT], a + jp TextScriptEnd + +ViridianCityText_19191: ; 19191 (6:5191) + TX_FAR _ViridianCityText_19191 + db "@" + +ViridianCityText6: ; 19196 (6:5196) + db $08 ; asm + ld a, [$d74c] + bit 1, a + jr nz, .asm_4e5a0 ; 0x1919c + ld hl, ViridianCityText_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 + +ViridianCityText_191ca: ; 191ca (6:51ca) + TX_FAR _ViridianCityText_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, ViridianCityText_1920a + call PrintText + ld c, $2 + call DelayFrames + call YesNoChoice + ld a, [$cc26] + and a + jr z, .asm_42f68 ; 0x191f2 + ld hl, ViridianCityText_1920f + call PrintText + ld a, $1 + ld [W_VIRIDIANCITYCURSCRIPT], a + jr .asm_2413a ; 0x191ff +.asm_42f68 ; 0x19201 + ld hl, ViridianCityText_19214 + call PrintText +.asm_2413a ; 0x19207 + jp TextScriptEnd + +ViridianCityText_1920a: ; 1920a (6:520a) + TX_FAR _ViridianCityText_1920a + db "@" + +ViridianCityText_1920f: ; 1920f (6:520f) + TX_FAR _ViridianCityText_1920f + db "@" + +ViridianCityText_19214: ; 19214 (6:5214) + TX_FAR _ViridianCityText_19214 + db "@" + +ViridianCityText15: ; 19219 (6:5219) + TX_FAR _ViridianCityText_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 "@" diff --git a/scripts/viridianforest.asm b/scripts/viridianforest.asm new file mode 100755 index 00000000..4e55733b --- /dev/null +++ b/scripts/viridianforest.asm @@ -0,0 +1,145 @@ +ViridianForestScript: ; 6110d (18:510d) + call EnableAutoTextBoxDrawing + ld hl, ViridianForestTrainerHeaders + ld de, ViridianForestScriptPointers + ld a, [W_VIRIDIANFORESTCURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_VIRIDIANFORESTCURSCRIPT], a + ret + +ViridianForestScriptPointers: ; 61120 (18:5120) + dw CheckFightingMapTrainers + dw Func_324c + dw EndTrainerBattle + +ViridianForestTextPointers: ; 61126 (18:5126) + dw ViridianForestText1 + dw ViridianForestText2 + dw ViridianForestText3 + dw ViridianForestText4 + dw Predef5CText + dw Predef5CText + dw Predef5CText + dw ViridianForestText8 + dw ViridianForestText9 + dw ViridianForestText10 + dw ViridianForestText11 + dw ViridianForestText12 + dw ViridianForestText13 + dw ViridianForestText14 + +ViridianForestTrainerHeaders: ; 61142 (18:5142) +ViridianForestTrainerHeader0: ; 61142 (18:5142) + db $2 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7f3 ; flag's byte + dw ViridianForestBattleText1 ; 0x518a TextBeforeBattle + dw ViridianForestAfterBattleText1 ; 0x5194 TextAfterBattle + dw ViridianForestEndBattleText1 ; 0x518f TextEndBattle + dw ViridianForestEndBattleText1 ; 0x518f TextEndBattle + +ViridianForestTrainerHeader1: ; 6114e (18:514e) + db $3 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d7f3 ; flag's byte + dw ViridianForestBattleText2 ; 0x5199 TextBeforeBattle + dw ViridianForestAfterBattleText2 ; 0x51a3 TextAfterBattle + dw ViridianForestEndBattleText2 ; 0x519e TextEndBattle + dw ViridianForestEndBattleText2 ; 0x519e TextEndBattle + +ViridianForestTrainerHeader2: ; 6115a (18:515a) + db $4 ; flag's bit + db ($1 << 4) ; trainer's view range + dw $d7f3 ; flag's byte + dw ViridianForestBattleText3 ; 0x51a8 TextBeforeBattle + dw ViridianForestAfterBattleText3 ; 0x51b2 TextAfterBattle + dw ViridianForestEndBattleText3 ; 0x51ad TextEndBattle + dw ViridianForestEndBattleText3 ; 0x51ad TextEndBattle + + db $ff + +ViridianForestText1: ; 61167 (18:5167) + TX_FAR _ViridianForestText1 + db "@" + +ViridianForestText2: ; 6116c (18:516c) + db $08 ; asm + ld hl, ViridianForestTrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +ViridianForestText3: ; 61176 (18:5176) + db $08 ; asm + ld hl, ViridianForestTrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +ViridianForestText4: ; 61180 (18:5180) + db $08 ; asm + ld hl, ViridianForestTrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +ViridianForestBattleText1: ; 6118a (18:518a) + TX_FAR _ViridianForestBattleText1 + db "@" + +ViridianForestEndBattleText1: ; 6118f (18:518f) + TX_FAR _ViridianForestEndBattleText1 + db "@" + +ViridianForestAfterBattleText1: ; 61194 (18:5194) + TX_FAR _ViridianFrstAfterBattleText1 + db "@" + +ViridianForestBattleText2: ; 61199 (18:5199) + TX_FAR _ViridianForestBattleText2 + db "@" + +ViridianForestEndBattleText2: ; 6119e (18:519e) + TX_FAR _ViridianForestEndBattleText2 + db "@" + +ViridianForestAfterBattleText2: ; 611a3 (18:51a3) + TX_FAR _ViridianFrstAfterBattleText2 + db "@" + +ViridianForestBattleText3: ; 611a8 (18:51a8) + TX_FAR _ViridianForestBattleText3 + db "@" + +ViridianForestEndBattleText3: ; 611ad (18:51ad) + TX_FAR _ViridianForestEndBattleText3 + db "@" + +ViridianForestAfterBattleText3: ; 611b2 (18:51b2) + TX_FAR _ViridianFrstAfterBattleText3 + db "@" + +ViridianForestText8: ; 611b7 (18:51b7) + TX_FAR _ViridianForestText8 + db "@" + +ViridianForestText9: ; 611bc (18:51bc) + TX_FAR _ViridianForestText9 + db "@" + +ViridianForestText10: ; 611c1 (18:51c1) + TX_FAR _ViridianForestText10 + db "@" + +ViridianForestText11: ; 611c6 (18:51c6) + TX_FAR _ViridianForestText11 + db "@" + +ViridianForestText12: ; 611cb (18:51cb) + TX_FAR _ViridianForestText12 + db "@" + +ViridianForestText13: ; 611d0 (18:51d0) + TX_FAR _ViridianForestText13 + db "@" + +ViridianForestText14: ; 611d5 (18:51d5) + TX_FAR _ViridianForestText14 + db "@" diff --git a/scripts/viridianforestentrance.asm b/scripts/viridianforestentrance.asm new file mode 100755 index 00000000..14b6cf49 --- /dev/null +++ b/scripts/viridianforestentrance.asm @@ -0,0 +1,14 @@ +ViridianForestEntranceScript: ; 5d65c (17:565c) + jp EnableAutoTextBoxDrawing + +ViridianForestEntranceTextPointers: ; 5d65f (17:565f) + dw ViridianForestEntranceText1 + dw ViridianForestEntranceText2 + +ViridianForestEntranceText1: ; 5d663 (17:5663) + TX_FAR _ViridianForestEntranceText1 + db "@" + +ViridianForestEntranceText2: ; 5d668 (17:5668) + TX_FAR _ViridianForestEntranceText2 + db "@" diff --git a/scripts/viridianforestexit.asm b/scripts/viridianforestexit.asm new file mode 100755 index 00000000..0d4d4b29 --- /dev/null +++ b/scripts/viridianforestexit.asm @@ -0,0 +1,14 @@ +ViridianForestExitScript: ; 5d587 (17:5587) + jp EnableAutoTextBoxDrawing + +ViridianForestExitTextPointers: ; 5d58a (17:558a) + dw ViridianForestExitText1 + dw ViridianForestExitText2 + +ViridianForestExitText1: ; 5d58e (17:558e) + TX_FAR _ViridianForestExitText1 + db "@" + +ViridianForestExitText2: ; 5d593 (17:5593) + TX_FAR _ViridianForestExitText2 + db "@" diff --git a/scripts/viridiangym.asm b/scripts/viridiangym.asm new file mode 100755 index 00000000..0f042339 --- /dev/null +++ b/scripts/viridiangym.asm @@ -0,0 +1,514 @@ +ViridianGymScript: ; 748a3 (1d:48a3) + ld hl, Gym8CityName + ld de, Gym8LeaderName + call LoadGymLeaderAndCityName + call EnableAutoTextBoxDrawing + ld hl, ViridianGymTrainerHeaders + ld de, ViridianGymScriptPointers + ld a, [W_VIRIDIANGYMCURSCRIPT] + call ExecuteCurMapScriptInTable + ld [W_VIRIDIANGYMCURSCRIPT], a + ret + +Gym8CityName: ; 748bf (1d:48bf) + db "VIRIDIAN CITY@" +Gym8LeaderName: ; 748cd (1d:48cd) + db "GIOVANNI@" + +ViridianGymScript_748d6: ; 748d6 (1d:48d6) + xor a + ld [wJoypadForbiddenButtonsMask], a + ld [W_VIRIDIANGYMCURSCRIPT], a + ld [W_CURMAPSCRIPT], a + ret + +ViridianGymScriptPointers: ; 748e1 (1d:48e1) + dw ViridianGymScript0 + dw Func_324c + dw EndTrainerBattle + dw ViridianGymScript3 + dw ViridianGymScript4 + +ViridianGymScript0: ; 748eb (1d:48eb) + ld a, [W_YCOORD] ; $d361 + ld b, a + ld a, [W_XCOORD] ; $d362 + ld c, a + ld hl, ViridianGymArrowTilePlayerMovement + call Func_3442 + cp $ff + jp z, CheckFightingMapTrainers + call Func_3486 + ld hl, $d736 + set 7, [hl] + ld a, (SFX_02_52 - SFX_Headers_02) / 3 + call PlaySound + ld a, $ff + ld [wJoypadForbiddenButtonsMask], a + ld a, $4 + ld [W_CURMAPSCRIPT], a + ret + +;format: +;db y,x +;dw pointer to movement +ViridianGymArrowTilePlayerMovement: ; 74916 (1d:4916) + db $b,$13 + dw ViridianGymArrowMovement1 + db $1,$13 + dw ViridianGymArrowMovement2 + db $2,$12 + dw ViridianGymArrowMovement3 + db $2,$b + dw ViridianGymArrowMovement4 + db $a,$10 + dw ViridianGymArrowMovement5 + db $6,$4 + dw ViridianGymArrowMovement6 + db $d,$5 + dw ViridianGymArrowMovement7 + db $e,$4 + dw ViridianGymArrowMovement8 + db $f,$0 + dw ViridianGymArrowMovement9 + db $f,$1 + dw ViridianGymArrowMovement10 + db $10,$d + dw ViridianGymArrowMovement11 + db $11,$d + dw ViridianGymArrowMovement12 + db $FF + +;format: direction, count +;right: $10 +;left: $20 +;up: $40 +;down: $80 +ViridianGymArrowMovement1: ; 74947 (1d:4947) + db $40,$09,$FF + +ViridianGymArrowMovement2: ; 7494a (1d:494a) + db $20,$08,$FF + +ViridianGymArrowMovement3: ; 7494d (1d:494d) + db $80,$09,$FF + +ViridianGymArrowMovement4: ; 74950 (1d:4950) + db $10,$06,$FF + +ViridianGymArrowMovement5: ; 74953 (1d:4953) + db $80,$02,$FF + +ViridianGymArrowMovement6: ; 74956 (1d:4956) + db $80,$07,$FF + +ViridianGymArrowMovement7: ; 74959 (1d:4959) + db $10,$08,$FF + +ViridianGymArrowMovement8: ; 7495c (1d:495c) + db $10,$09,$FF + +ViridianGymArrowMovement9: ; 7495f (1d:495f) + db $40,$08,$FF + +ViridianGymArrowMovement10: ; 74962 (1d:4962) + db $40,$06,$FF + +ViridianGymArrowMovement11: ; 74965 (1d:4965) + db $20,$06,$FF + +ViridianGymArrowMovement12: ; 74968 (1d:4968) + db $20,$0C,$FF + +ViridianGymScript4: ; 7496b (1d:496b) + ld a, [$cd38] + and a + jr nz, .asm_74980 + xor a + ld [wJoypadForbiddenButtonsMask], a + ld hl, $d736 + res 7, [hl] + ld a, $0 + ld [W_CURMAPSCRIPT], a + ret +.asm_74980 + ld b, BANK(LoadSpinnerArrowTiles) + ld hl, LoadSpinnerArrowTiles + jp Bankswitch + +ViridianGymScript3: ; 74988 (1d:4988) + ld a, [W_ISINBATTLE] ; $d057 + cp $ff + jp z, ViridianGymScript_748d6 + ld a, $f0 + ld [wJoypadForbiddenButtonsMask], a +ViridianGymScript3_74995: ; 74995 (1d:4995) + ld a, $c + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld hl, $d751 + set 1, [hl] + ld bc, (TM_27 << 8) | 1 + call GiveItem + jr nc, .BagFull + ld a, $d + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID + ld hl, $d751 + set 0, [hl] + jr .asm_749be +.BagFull + ld a, $e + ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + call DisplayTextID +.asm_749be + ld hl, W_OBTAINEDBADGES + set 7, [hl] + ld hl, $d72a + set 7, [hl] + + ; deactivate gym trainers + ld a, [$d751] + or %11111100 + ld [$d751], a + ld a, [$d752] + or %00000011 + ld [$d752], a + + ld a, $23 + ld [$cc4d], a + ld a, $15 + call Predef ; indirect jump to AddMissableObject (f1c8 (3:71c8)) + ld hl, $d7eb + set 1, [hl] + set 7, [hl] + jp ViridianGymScript_748d6 + +ViridianGymTextPointers: ; 749ec (1d:49ec) + dw ViridianGymText1 + dw ViridianGymText2 + dw ViridianGymText3 + dw ViridianGymText4 + dw ViridianGymText5 + dw ViridianGymText6 + dw ViridianGymText7 + dw ViridianGymText8 + dw ViridianGymText9 + dw ViridianGymText10 + dw Predef5CText + dw ViridianGymText12 + dw ViridianGymText13 + dw ViridianGymText14 + +ViridianGymTrainerHeaders: ; 74a08 (1d:4a08) +ViridianGymTrainerHeader0: ; 74a08 (1d:4a08) + db $2 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d751 ; flag's byte + dw ViridianGymBattleText1 ; 0x4afd TextBeforeBattle + dw ViridianGymAfterBattleText1 ; 0x4b07 TextAfterBattle + dw ViridianGymEndBattleText1 ; 0x4b02 TextEndBattle + dw ViridianGymEndBattleText1 ; 0x4b02 TextEndBattle + +ViridianGymTrainerHeader1: ; 74a14 (1d:4a14) + db $3 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d751 ; flag's byte + dw ViridianGymBattleText2 ; 0x4b16 TextBeforeBattle + dw ViridianGymAfterBattleText2 ; 0x4b20 TextAfterBattle + dw ViridianGymEndBattleText2 ; 0x4b1b TextEndBattle + dw ViridianGymEndBattleText2 ; 0x4b1b TextEndBattle + +ViridianGymTrainerHeader2: ; 74a20 (1d:4a20) + db $4 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d751 ; flag's byte + dw ViridianGymBattleText3 ; 0x4b2f TextBeforeBattle + dw ViridianGymAfterBattleText3 ; 0x4b39 TextAfterBattle + dw ViridianGymEndBattleText3 ; 0x4b34 TextEndBattle + dw ViridianGymEndBattleText3 ; 0x4b34 TextEndBattle + +ViridianGymTrainerHeader3: ; 74a2c (1d:4a2c) + db $5 ; flag's bit + db ($2 << 4) ; trainer's view range + dw $d751 ; flag's byte + dw ViridianGymBattleText4 ; 0x4b48 TextBeforeBattle + dw ViridianGymAfterBattleText4 ; 0x4b52 TextAfterBattle + dw ViridianGymEndBattleText4 ; 0x4b4d TextEndBattle + dw ViridianGymEndBattleText4 ; 0x4b4d TextEndBattle + +ViridianGymTrainerHeader4: ; 74a38 (1d:4a38) + db $6 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d751 ; flag's byte + dw ViridianGymBattleText5 ; 0x4b61 TextBeforeBattle + dw ViridianGymAfterBattleText5 ; 0x4b6b TextAfterBattle + dw ViridianGymEndBattleText5 ; 0x4b66 TextEndBattle + dw ViridianGymEndBattleText5 ; 0x4b66 TextEndBattle + +ViridianGymTrainerHeader5: ; 74a44 (1d:4a44) + db $7 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d751 ; flag's byte + dw ViridianGymBattleText6 ; 0x4b7a TextBeforeBattle + dw ViridianGymAfterBattleText6 ; 0x4b84 TextAfterBattle + dw ViridianGymEndBattleText6 ; 0x4b7f TextEndBattle + dw ViridianGymEndBattleText6 ; 0x4b7f TextEndBattle + +ViridianGymTrainerHeader6: ; 74a50 (1d:4a50) + db $8 ; flag's bit + db ($3 << 4) ; trainer's view range + dw $d751 ; flag's byte + dw ViridianGymBattleText7 ; 0x4b93 TextBeforeBattle + dw ViridianGymAfterBattleText7 ; 0x4b9d TextAfterBattle + dw ViridianGymEndBattleText7 ; 0x4b98 TextEndBattle + dw ViridianGymEndBattleText7 ; 0x4b98 TextEndBattle + +ViridianGymTrainerHeader7: ; 74a5c (1d:4a5c) + db $9 ; flag's bit + db ($4 << 4) ; trainer's view range + dw $d751 ; flag's byte + dw ViridianGymBattleText8 ; 0x4bac TextBeforeBattle + dw ViridianGymAfterBattleText8 ; 0x4bb6 TextAfterBattle + dw ViridianGymEndBattleText8 ; 0x4bb1 TextEndBattle + dw ViridianGymEndBattleText8 ; 0x4bb1 TextEndBattle + + db $ff + +ViridianGymText1: ; 74a69 (1d:4a69) + db $08 ; asm + ld a, [$d751] + bit 1, a + jr z, .asm_6de66 ; 0x74a6f + bit 0, a + jr nz, .asm_9fc95 ; 0x74a73 + call z, ViridianGymScript3_74995 + call DisableWaitingAfterTextDisplay + jr .asm_6dff7 ; 0x74a7b +.asm_9fc95 ; 0x74a7d + ld a, $1 + ld [$cc3c], a + ld hl, ViridianGymText_74ad9 + call PrintText + call GBFadeIn1 + ld a, $32 + ld [$cc4d], a + ld a, $11 + call Predef + call UpdateSprites + call Delay3 + call GBFadeOut1 + jr .asm_6dff7 ; 0x74a9e +.asm_6de66 ; 0x74aa0 + ld hl, ViridianGymText_74ace + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, ViridianGymText_74ad3 + ld de, ViridianGymText_74ad3 + call PreBattleSaveRegisters + ldh a, [$8c] + ld [$cf13], a + call EngageMapTrainer + call InitBattleEnemyParameters + ld a, $8 + ld [$d05c], a + ld a, $3 + ld [W_VIRIDIANGYMCURSCRIPT], a +.asm_6dff7 ; 0x74acb + jp TextScriptEnd + +ViridianGymText_74ace: ; 74ace (1d:4ace) + TX_FAR _ViridianGymText_74ace + db "@" + +ViridianGymText_74ad3: ; 74ad3 (1d:4ad3) + TX_FAR _ViridianGymText_74ad3 + db $0b, "@" + +ViridianGymText_74ad9: ; 74ad9 (1d:4ad9) + TX_FAR _ViridianGymText_74ad9 + db $0d, "@" + +ViridianGymText12: ; 74adf (1d:4adf) + TX_FAR _ViridianGymText12 + db "@" + +ViridianGymText13: ; 74ae4 (1d:4ae4) + TX_FAR _ReceivedTM27Text + db $0b + +TM27ExplanationText: ; 74ae9 (1d:4ae9) + TX_FAR _TM27ExplanationText + db "@" + +ViridianGymText14: ; 74aee (1d:4aee) + TX_FAR _TM27NoRoomText + db "@" + +ViridianGymText2: ; 74af3 (1d:4af3) + db $08 ; asm + ld hl, ViridianGymTrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +ViridianGymBattleText1: ; 74afd (1d:4afd) + TX_FAR _ViridianGymBattleText1 + db "@" + +ViridianGymEndBattleText1: ; 74b02 (1d:4b02) + TX_FAR _ViridianGymEndBattleText1 + db "@" + +ViridianGymAfterBattleText1: ; 74b07 (1d:4b07) + TX_FAR _ViridianGymAfterBattleText1 + db "@" + +ViridianGymText3: ; 74b0c (1d:4b0c) + db $08 ; asm + ld hl, ViridianGymTrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +ViridianGymBattleText2: ; 74b16 (1d:4b16) + TX_FAR _ViridianGymBattleText2 + db "@" + +ViridianGymEndBattleText2: ; 74b1b (1d:4b1b) + TX_FAR _ViridianGymEndBattleText2 + db "@" + +ViridianGymAfterBattleText2: ; 74b20 (1d:4b20) + TX_FAR _ViridianGymAfterBattleText2 + db "@" + +ViridianGymText4: ; 74b25 (1d:4b25) + db $08 ; asm + ld hl, ViridianGymTrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +ViridianGymBattleText3: ; 74b2f (1d:4b2f) + TX_FAR _ViridianGymBattleText3 + db "@" + +ViridianGymEndBattleText3: ; 74b34 (1d:4b34) + TX_FAR _ViridianGymEndBattleText3 + db "@" + +ViridianGymAfterBattleText3: ; 74b39 (1d:4b39) + TX_FAR _ViridianGymAfterBattleText3 + db "@" + +ViridianGymText5: ; 74b3e (1d:4b3e) + db $08 ; asm + ld hl, ViridianGymTrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +ViridianGymBattleText4: ; 74b48 (1d:4b48) + TX_FAR _ViridianGymBattleText4 + db "@" + +ViridianGymEndBattleText4: ; 74b4d (1d:4b4d) + TX_FAR _ViridianGymEndBattleText4 + db "@" + +ViridianGymAfterBattleText4: ; 74b52 (1d:4b52) + TX_FAR _ViridianGymAfterBattleText4 + db "@" + +ViridianGymText6: ; 74b57 (1d:4b57) + db $08 ; asm + ld hl, ViridianGymTrainerHeader4 + call TalkToTrainer + jp TextScriptEnd + +ViridianGymBattleText5: ; 74b61 (1d:4b61) + TX_FAR _ViridianGymBattleText5 + db "@" + +ViridianGymEndBattleText5: ; 74b66 (1d:4b66) + TX_FAR _ViridianGymEndBattleText5 + db "@" + +ViridianGymAfterBattleText5: ; 74b6b (1d:4b6b) + TX_FAR _ViridianGymAfterBattleText5 + db "@" + +ViridianGymText7: ; 74b70 (1d:4b70) + db $08 ; asm + ld hl, ViridianGymTrainerHeader5 + call TalkToTrainer + jp TextScriptEnd + +ViridianGymBattleText6: ; 74b7a (1d:4b7a) + TX_FAR _ViridianGymBattleText6 + db "@" + +ViridianGymEndBattleText6: ; 74b7f (1d:4b7f) + TX_FAR _ViridianGymEndBattleText6 + db "@" + +ViridianGymAfterBattleText6: ; 74b84 (1d:4b84) + TX_FAR _ViridianGymAfterBattleText6 + db "@" + +ViridianGymText8: ; 74b89 (1d:4b89) + db $08 ; asm + ld hl, ViridianGymTrainerHeader6 + call TalkToTrainer + jp TextScriptEnd + +ViridianGymBattleText7: ; 74b93 (1d:4b93) + TX_FAR _ViridianGymBattleText7 + db "@" + +ViridianGymEndBattleText7: ; 74b98 (1d:4b98) + TX_FAR _ViridianGymEndBattleText7 + db "@" + +ViridianGymAfterBattleText7: ; 74b9d (1d:4b9d) + TX_FAR _ViridianGymAfterBattleText7 + db "@" + +ViridianGymText9: ; 74ba2 (1d:4ba2) + db $08 ; asm + ld hl, ViridianGymTrainerHeader7 + call TalkToTrainer + jp TextScriptEnd + +ViridianGymBattleText8: ; 74bac (1d:4bac) + TX_FAR _ViridianGymBattleText8 + db "@" + +ViridianGymEndBattleText8: ; 74bb1 (1d:4bb1) + TX_FAR _ViridianGymEndBattleText8 + db "@" + +ViridianGymAfterBattleText8: ; 74bb6 (1d:4bb6) + TX_FAR _ViridianGymAfterBattleText8 + db "@" + +ViridianGymText10: ; 74bbb (1d:4bbb) + db $08 ; asm + ld a, [$d751] + bit 1, a + jr nz, .asm_1abd1 ; 0x74bc1 + ld hl, ViridianGymText_74bd4 + call PrintText + jr .asm_6064d ; 0x74bc9 +.asm_1abd1 ; 0x74bcb + ld hl, ViridianGymText_74bd9 + call PrintText +.asm_6064d ; 0x74bd1 + jp TextScriptEnd + +ViridianGymText_74bd4: ; 74bd4 (1d:4bd4) + TX_FAR _ViridianGymText_74bd4 + db "@" + +ViridianGymText_74bd9: ; 74bd9 (1d:4bd9) + TX_FAR _ViridianGymText_74bd9 + db "@" diff --git a/scripts/viridianhouse.asm b/scripts/viridianhouse.asm new file mode 100755 index 00000000..ab8b6786 --- /dev/null +++ b/scripts/viridianhouse.asm @@ -0,0 +1,33 @@ +ViridianHouseScript: ; 1d58a (7:558a) + jp EnableAutoTextBoxDrawing + +ViridianHouseTextPointers: ; 1d58d (7:558d) + dw ViridianHouseText1 + dw ViridianHouseText2 + dw ViridianHouseText3 + dw ViridianHouseText4 + +ViridianHouseText1: ; 1d595 (7:5595) + TX_FAR _ViridianHouseText1 + db "@" + +ViridianHouseText2: ; 1d59a (7:559a) + TX_FAR _ViridianHouseText2 + db "@" + +ViridianHouseText3: ; 1d59f (7:559f) + db $08 ; asm + ld hl, ViridianHouseText_1d5b1 + call PrintText + ld a, SPEAROW + call PlayCry + call WaitForSoundToFinish + jp TextScriptEnd + +ViridianHouseText_1d5b1: ; 1d5b1 (7:55b1) + TX_FAR _ViridianHouseText_1d5b1 + db "@" + +ViridianHouseText4: ; 1d5b6 (7:55b6) + TX_FAR _ViridianHouseText4 + db "@" diff --git a/scripts/viridianmart.asm b/scripts/viridianmart.asm new file mode 100755 index 00000000..1c53a5a3 --- /dev/null +++ b/scripts/viridianmart.asm @@ -0,0 +1,95 @@ +ViridianMartScript: ; 1d46e (7:546e) + call ViridianMartScript_1d47d + call EnableAutoTextBoxDrawing + ld hl, ViridianMartScriptPointers + ld a, [W_VIRIDIANMARKETCURSCRIPT] + jp CallFunctionInTable + +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 + +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 + ld a, $1 + ld [W_VIRIDIANMARKETCURSCRIPT], a + ret + +RLEMovement1d4bb: ; 1d4bb (7:54bb) + db $20, $01 + db $40, $02 + db $ff + +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 + +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 "@" + +ViridianMartText5: ; 1d4fa (7:54fa) + TX_FAR ViridianMartParcelQuestText + db $11 + db "@" + +ViridianMartText2: ; 1d500 (7:5500) + TX_FAR _ViridianMartText2 + db "@" + +ViridianMartText3: ; 1d505 (7:5505) + TX_FAR _ViridianMartText3 + db "@" diff --git a/scripts/viridianpokecenter.asm b/scripts/viridianpokecenter.asm new file mode 100755 index 00000000..08371ce3 --- /dev/null +++ b/scripts/viridianpokecenter.asm @@ -0,0 +1,23 @@ +ViridianPokeCenterScript: ; 4425d (11:425d) + call Func_22fa + jp EnableAutoTextBoxDrawing + +ViridianPokecenterTextPointers: ; 44263 (11:4263) + dw ViridianPokeCenterText1 + dw ViridianPokeCenterText2 + dw ViridianPokeCenterText3 + dw ViridianPokeCenterText4 + +ViridianPokeCenterText1: ; 4426b (11:426b) + db $ff + +ViridianPokeCenterText2: ; 4426c (11:426c) + TX_FAR _ViridianPokeCenterText1 + db "@" + +ViridianPokeCenterText3: ; 44271 (11:4271) + TX_FAR _ViridianPokeCenterText3 + db "@" + +ViridianPokeCenterText4: ; 44276 (11:4276) + db $f6 diff --git a/text/maps/bike_shop.asm b/text/maps/bike_shop.asm index 8cfbd4fc..5f2c3f45 100644 --- a/text/maps/bike_shop.asm +++ b/text/maps/bike_shop.asm @@ -1,4 +1,4 @@ -_UnnamedText_1d810:: ; 98e03 (26:4e03) +_BikeShopText_1d810:: ; 98e03 (26:4e03) text "Hi! Welcome to" line "our BIKE SHOP." @@ -6,17 +6,17 @@ _UnnamedText_1d810:: ; 98e03 (26:4e03) line "the BIKE for you!" prompt -_UnnamedText_1d815:: ; 98e45 (26:4e45) +_BikeShopText_1d815:: ; 98e45 (26:4e45) text "It's a cool BIKE!" line "Do you want it?" done -_UnnamedText_1d81a:: ; 98e67 (26:4e67) +_BikeShopText_1d81a:: ; 98e67 (26:4e67) text "Sorry! You can't" line "afford it!" prompt -_UnnamedText_1d81f:: ; 98e83 (26:4e83) +_BikeShopText_1d81f:: ; 98e83 (26:4e83) text "Oh, that's..." para "A BIKE VOUCHER!" @@ -24,17 +24,17 @@ _UnnamedText_1d81f:: ; 98e83 (26:4e83) para "OK! Here you go!" prompt -_UnnamedText_1d824:: ; 98eb2 (26:4eb2) +_BikeShopText_1d824:: ; 98eb2 (26:4eb2) text $52, " exchanged" line "the BIKE VOUCHER" cont "for a BICYCLE.@@" -_UnnamedText_1d82a:: ; 98ee0 (26:4ee0) +_BikeShopText_1d82a:: ; 98ee0 (26:4ee0) text "Come back again" line "some time!" done -_UnnamedText_1d82f:: ; 98efc (26:4efc) +_BikeShopText_1d82f:: ; 98efc (26:4efc) text "How do you like" line "your new BICYCLE?" @@ -43,12 +43,12 @@ _UnnamedText_1d82f:: ; 98efc (26:4efc) cont "and in caves!" done -_UnnamedText_1d834:: ; 98f4d (26:4f4d) +_BikeShopText_1d834:: ; 98f4d (26:4f4d) text "You better make" line "room for this!" done -_UnnamedText_1d843:: ; 98f6d (26:4f6d) +_BikeShopText_1d843:: ; 98f6d (26:4f6d) text "A plain city BIKE" line "is good enough" cont "for me!" @@ -58,13 +58,13 @@ _UnnamedText_1d843:: ; 98f6d (26:4f6d) cont "on an MTB!" done -_UnnamedText_1d85c:: ; 98fc1 (26:4fc1) +_BikeShopText_1d85c:: ; 98fc1 (26:4fc1) text "These BIKEs are" line "cool, but they're" cont "way expensive!" done -_UnnamedText_1d861:: ; 98ff2 (26:4ff2) +_BikeShopText_1d861:: ; 98ff2 (26:4ff2) text "Wow. Your BIKE is" line "really cool!" done diff --git a/text/maps/bills_house.asm b/text/maps/bills_house.asm index 87a8d794..24062b5d 100644 --- a/text/maps/bills_house.asm +++ b/text/maps/bills_house.asm @@ -1,4 +1,4 @@ -_UnnamedText_1e865:: ; 8d267 (23:5267) +_BillsHouseText_1e865:: ; 8d267 (23:5267) text "Hiya! I'm a" line "#MON..." cont "...No I'm not!" @@ -19,7 +19,7 @@ _UnnamedText_1e865:: ; 8d267 (23:5267) line "Help me out here!" done -_UnnamedText_1e86a:: ; 8d345 (23:5345) +_BillsHouseText_1e86a:: ; 8d345 (23:5345) text "When I'm in the" line "TELEPORTER, go to" cont "my PC and run the" @@ -27,7 +27,7 @@ _UnnamedText_1e86a:: ; 8d345 (23:5345) cont "System!" done -_UnnamedText_1e86f:: ; 8d391 (23:5391) +_BillsHouseText_1e86f:: ; 8d391 (23:5391) text "No!? Come on, you" line "gotta help a guy" cont "in deep trouble!" @@ -64,7 +64,7 @@ _SSTicketNoRoomText:: ; 8d4b0 (23:54b0) line "much stuff, bud!" done -_UnnamedText_1e8cb:: ; 8d4d0 (23:54d0) +_BillsHouseText_1e8cb:: ; 8d4d0 (23:54d0) text "That cruise ship," line "S.S.ANNE, is in" cont "VERMILION CITY." @@ -79,7 +79,7 @@ _UnnamedText_1e8cb:: ; 8d4d0 (23:54d0) cont "instead of me?" done -_UnnamedText_1e8da:: ; 8d57f (23:557f) +_BillsHouseText_1e8da:: ; 8d57f (23:557f) text "BILL: Look, bud," line "just check out" cont "some of my rare" diff --git a/text/maps/celadon_dept_store_roof.asm b/text/maps/celadon_dept_store_roof.asm index 474f8550..3d83317f 100644 --- a/text/maps/celadon_dept_store_roof.asm +++ b/text/maps/celadon_dept_store_roof.asm @@ -1,9 +1,9 @@ -_UnnamedText_484ee:: ; 9cbb5 (27:4bb5) +_CeladonMartRoofText_484ee:: ; 9cbb5 (27:4bb5) text "Give her which" line "drink?" done -_UnnamedText_484f3:: ; 9cbcc (27:4bcc) +_CeladonMartRoofText_484f3:: ; 9cbcc (27:4bcc) text "Yay!" para "FRESH WATER!" @@ -13,13 +13,13 @@ _UnnamedText_484f3:: ; 9cbcc (27:4bcc) para "You can have this" line "from me!@@" -_UnnamedText_484f9:: ; 9cc06 (27:4c06) +_CeladonMartRoofText_484f9:: ; 9cc06 (27:4c06) text $52, " received" line "@" TX_RAM $cf4b text "!@@" -_UnnamedText_484fe:: ; 9cc1a (27:4c1a) +_CeladonMartRoofText_484fe:: ; 9cc1a (27:4c1a) db $0 para "@" TX_RAM $cf4b @@ -29,7 +29,7 @@ _UnnamedText_484fe:: ; 9cc1a (27:4c1a) para "It can freeze the" line "target sometimes!@@" -_UnnamedText_48504:: ; 9cc5a (27:4c5a) +_CeladonMartRoofText_48504:: ; 9cc5a (27:4c5a) text "Yay!" para "SODA POP!" @@ -39,13 +39,13 @@ _UnnamedText_48504:: ; 9cc5a (27:4c5a) para "You can have this" line "from me!@@" -_UnnamedText_4850a:: ; 9cc91 (27:4c91) +_CeladonMartRoofText_4850a:: ; 9cc91 (27:4c91) text $52, " received" line "@" TX_RAM $cf4b text "!@@" -_UnnamedText_4850f:: ; 9cca5 (27:4ca5) +_CeladonMartRoofText_4850f:: ; 9cca5 (27:4ca5) db $0 para "@" TX_RAM $cf4b @@ -55,7 +55,7 @@ _UnnamedText_4850f:: ; 9cca5 (27:4ca5) para "It can spook the" line "target sometimes!@@" -_UnnamedText_48515:: ; 9cce6 (27:4ce6) +_CeladonMartRoofText_48515:: ; 9cce6 (27:4ce6) text "Yay!" para "LEMONADE!" @@ -69,16 +69,16 @@ _ReceivedTM49Text:: ; 9cd1d (27:4d1d) text $52, " received" line "TM49!@@" -_UnnamedText_48520:: ; 9cd30 (27:4d30) +_CeladonMartRoofText_48520:: ; 9cd30 (27:4d30) db $0 para "TM49 contains" line "TRI ATTACK!@@" -_UnnamedText_48526:: ; 9cd4d (27:4d4d) +_CeladonMartRoofText_48526:: ; 9cd4d (27:4d4d) text "You don't have" line "space for this!@@" -_UnnamedText_4852c:: ; 9cd6d (27:4d6d) +_CeladonMartRoofText_4852c:: ; 9cd6d (27:4d6d) text "No thank you!" line "I'm not thirsty" cont "after all!@@" @@ -93,7 +93,7 @@ _CeladonMartRoofText1:: ; 9cd97 (27:4d97) cont "drives me nuts!" done -_UnnamedText_48598:: ; 9cdee (27:4dee) +_CeladonMartRoofText_48598:: ; 9cdee (27:4dee) text "I'm thirsty!" line "I want something" cont "to drink!" diff --git a/text/maps/celadon_diner.asm b/text/maps/celadon_diner.asm index d6536c49..ee27fadd 100644 --- a/text/maps/celadon_diner.asm +++ b/text/maps/celadon_diner.asm @@ -26,7 +26,7 @@ _CeladonDinerText4:: ; 9dfc9 (27:5fc9) cont "at the slots." done -_UnnamedText_491a7:: ; 9e003 (27:6003) +_CeladonDinerText_491a7:: ; 9e003 (27:6003) text "Go ahead! Laugh!" para "I'm flat out" @@ -52,7 +52,7 @@ _CoinCaseNoRoomText:: ; 9e090 (27:6090) line "this!" done -_UnnamedText_491b7:: ; 9e0a5 (27:60a5) +_CeladonDinerText_491b7:: ; 9e0a5 (27:60a5) text "I always thought" line "I was going to" cont "win it back..." diff --git a/text/maps/celadon_game_corner.asm b/text/maps/celadon_game_corner.asm index c842e964..c08a81b1 100644 --- a/text/maps/celadon_game_corner.asm +++ b/text/maps/celadon_game_corner.asm @@ -7,7 +7,7 @@ _CeladonGameCornerText1:: ; 9d8d5 (27:58d5) cont "next door." done -_UnnamedText_48d22:: ; 9d91a (27:591a) +_CeladonGameCornerText_48d22:: ; 9d91a (27:591a) text "Welcome to ROCKET" line "GAME CORNER!" @@ -19,27 +19,27 @@ _UnnamedText_48d22:: ; 9d91a (27:591a) cont "like some?" done -_UnnamedText_48d27:: ; 9d984 (27:5984) +_CeladonGameCornerText_48d27:: ; 9d984 (27:5984) text "Thanks! Here are" line "your 50 coins!" done -_UnnamedText_48d2c:: ; 9d9a5 (27:59a5) +_CeladonGameCornerText_48d2c:: ; 9d9a5 (27:59a5) text "No? Please come" line "play sometime!" done -_UnnamedText_48d31:: ; 9d9c5 (27:59c5) +_CeladonGameCornerText_48d31:: ; 9d9c5 (27:59c5) text "You can't afford" line "the coins!" done -_UnnamedText_48d36:: ; 9d9e1 (27:59e1) +_CeladonGameCornerText_48d36:: ; 9d9e1 (27:59e1) text "Oops! Your COIN" line "CASE is full." done -_UnnamedText_48d3b:: ; 9da00 (27:5a00) +_CeladonGameCornerText_48d3b:: ; 9da00 (27:5a00) text "You don't have a" line "COIN CASE!" done @@ -58,7 +58,7 @@ _CeladonGameCornerText4:: ; 9da61 (27:5a61) cont "different odds." done -_UnnamedText_48d9c:: ; 9da8e (27:5a8e) +_CeladonGameCornerText_48d9c:: ; 9da8e (27:5a8e) text "Kid, do you want" line "to play?" prompt @@ -67,12 +67,12 @@ _Received10CoinsText:: ; 9daa9 (27:5aa9) text $52, " received" line "10 coins!@@" -_UnnamedText_48da7:: ; 9dac0 (27:5ac0) +_CeladonGameCornerText_48da7:: ; 9dac0 (27:5ac0) text "You don't need my" line "coins!" done -_UnnamedText_48dac:: ; 9dad9 (27:5ad9) +_CeladonGameCornerText_48dac:: ; 9dad9 (27:5ad9) text "Wins seem to come" line "and go." done @@ -82,7 +82,7 @@ _CeladonGameCornerText6:: ; 9daf4 (27:5af4) line "wonderful time!" done -_UnnamedText_48dca:: ; 9db11 (27:5b11) +_CeladonGameCornerText_48dca:: ; 9db11 (27:5b11) text "Hey!" para "You have better" @@ -99,7 +99,7 @@ _UnnamedText_48dca:: ; 9db11 (27:5b11) cont "be fooled!" done -_UnnamedText_48dcf:: ; 9dbac (27:5bac) +_CeladonGameCornerText_48dcf:: ; 9dbac (27:5bac) text "They offer rare" line "#MON that can" cont "be exchanged for" @@ -115,7 +115,7 @@ _CeladonGameCornerText8:: ; 9dc06 (27:5c06) cont "get hooked!" done -_UnnamedText_48e26:: ; 9dc33 (27:5c33) +_CeladonGameCornerText_48e26:: ; 9dc33 (27:5c33) text "What's up? Want" line "some coins?" prompt @@ -124,63 +124,63 @@ _Received20CoinsText:: ; 9dc4f (27:5c4f) text $52, " received" line "20 coins!@@" -_UnnamedText_48e31:: ; 9dc66 (27:5c66) +_CeladonGameCornerText_48e31:: ; 9dc66 (27:5c66) text "You have lots of" line "coins!" done -_UnnamedText_48e36:: ; 9dc7f (27:5c7f) +_CeladonGameCornerText_48e36:: ; 9dc7f (27:5c7f) text "Darn! I need more" line "coins for the" cont "#MON I want!" done -_UnnamedText_48e88:: ; 9dcad (27:5cad) +_CeladonGameCornerText_48e88:: ; 9dcad (27:5cad) text "Hey, what? You're" line "throwing me off!" cont "Here are some" cont "coins, shoo!" prompt -_UnnamedText_48e8d:: ; 9dceb (27:5ceb) +_CeladonGameCornerText_48e8d:: ; 9dceb (27:5ceb) text $52, " received" line "20 coins!@@" -_UnnamedText_48e93:: ; 9dd02 (27:5d02) +_CeladonGameCornerText_48e93:: ; 9dd02 (27:5d02) text "You've got your" line "own coins!" done -_UnnamedText_48e98:: ; 9dd1d (27:5d1d) +_CeladonGameCornerText_48e98:: ; 9dd1d (27:5d1d) text "The trick is to" line "watch the reels" cont "closely!" done -_UnnamedText_48ece:: ; 9dd47 (27:5d47) +_CeladonGameCornerText_48ece:: ; 9dd47 (27:5d47) text "I'm guarding this" line "poster!" cont "Go away, or else!" done -_UnnamedText_48ed3:: ; 9dd73 (27:5d73) +_CeladonGameCornerText_48ed3:: ; 9dd73 (27:5d73) text "Dang!" prompt -_UnnamedText_48ed8:: ; 9dd7a (27:5d7a) +_CeladonGameCornerText_48ed8:: ; 9dd7a (27:5d7a) text "Our hideout might" line "be discovered! I" cont "better tell BOSS!" done -_UnnamedText_48f09:: ; 9ddb0 (27:5db0) +_CeladonGameCornerText_48f09:: ; 9ddb0 (27:5db0) text "Hey!" para "A switch behind" line "the poster!?" cont "Let's push it!@@" -_UnnamedText_48f19:: ; 9dde2 (27:5de2) +_CeladonGameCornerText_48f19:: ; 9dde2 (27:5de2) text "Oops! Forgot the" line "COIN CASE!" done diff --git a/text/maps/celadon_gym.asm b/text/maps/celadon_gym.asm index d607e376..e377365e 100644 --- a/text/maps/celadon_gym.asm +++ b/text/maps/celadon_gym.asm @@ -1,4 +1,4 @@ -_UnnamedText_48a5e:: ; 9d28f (27:528f) +_CeladonGymText_48a5e:: ; 9d28f (27:528f) text "Hello. Lovely" line "weather isn't it?" cont "It's so pleasant." @@ -25,7 +25,7 @@ _UnnamedText_48a5e:: ; 9d28f (27:528f) line "shall not lose." done -_UnnamedText_48a63:: ; 9d3c2 (27:53c2) +_CeladonGymText_48a63:: ; 9d3c2 (27:53c2) text "Oh!" line "I concede defeat." @@ -36,7 +36,7 @@ _UnnamedText_48a63:: ; 9d3c2 (27:53c2) line "the RAINBOWBADGE." prompt -_UnnamedText_48a68:: ; 9d418 (27:5418) +_CeladonGymText_48a68:: ; 9d418 (27:5418) text "You are cataloging" line "#MON? I must" cont "say I'm impressed." @@ -47,7 +47,7 @@ _UnnamedText_48a68:: ; 9d418 (27:5418) cont "unattractive." done -_UnnamedText_48a6d:: ; 9d481 (27:5481) +_CeladonGymText9:: ; 9d481 (27:5481) text "The RAINBOWBADGE" line "will make #MON" cont "up to L50 obey." diff --git a/text/maps/cerulean_badge_house.asm b/text/maps/cerulean_badge_house.asm index 2368cf1c..cc0be659 100644 --- a/text/maps/cerulean_badge_house.asm +++ b/text/maps/cerulean_badge_house.asm @@ -1,4 +1,4 @@ -_UnnamedText_74e77:: ; 990c9 (26:50c9) +_CeruleanHouse2Text_74e77:: ; 990c9 (26:50c9) text "#MON BADGEs" line "are owned only by" cont "skilled trainers." @@ -10,7 +10,7 @@ _UnnamedText_74e77:: ; 990c9 (26:50c9) line "amazing secrets!" prompt -_UnnamedText_74e7c:: ; 9913a (26:513a) +_CeruleanHouse2Text_74e7c:: ; 9913a (26:513a) text "Now then..." para "Which of the 8" @@ -18,12 +18,12 @@ _UnnamedText_74e7c:: ; 9913a (26:513a) cont "describe?" done -_UnnamedText_74e81:: ; 99170 (26:5170) +_CeruleanHouse2Text_74e81:: ; 99170 (26:5170) text "Come visit me any" line "time you wish." done -_UnnamedText_74e96:: ; 99192 (26:5192) +_CeruleanHouse2Text_74e96:: ; 99192 (26:5192) text "The ATTACK of all" line "#MON increases" cont "a little bit." @@ -33,7 +33,7 @@ _UnnamedText_74e96:: ; 99192 (26:5192) cont "time you desire." prompt -_UnnamedText_74e9b:: ; 991f2 (26:51f2) +_CeruleanHouse2Text_74e9b:: ; 991f2 (26:51f2) text "#MON up to L30" line "will obey you." @@ -45,7 +45,7 @@ _UnnamedText_74e9b:: ; 991f2 (26:51f2) cont "of battle." prompt -_UnnamedText_74ea0:: ; 9925d (26:525d) +_CeruleanHouse2Text_74ea0:: ; 9925d (26:525d) text "The SPEED of all" line "#MON increases" cont "a little bit." @@ -55,7 +55,7 @@ _UnnamedText_74ea0:: ; 9925d (26:525d) cont "of battle." prompt -_UnnamedText_74ea5:: ; 992b8 (26:52b8) +_CeruleanHouse2Text_74ea5:: ; 992b8 (26:52b8) text "#MON up to L50" line "will obey you." @@ -67,7 +67,7 @@ _UnnamedText_74ea5:: ; 992b8 (26:52b8) cont "side of battle." prompt -_UnnamedText_74eaa:: ; 9932a (26:532a) +_CeruleanHouse2Text_74eaa:: ; 9932a (26:532a) text "The DEFENSE of all" line "#MON increases" cont "a little bit." @@ -77,7 +77,7 @@ _UnnamedText_74eaa:: ; 9932a (26:532a) cont "of battle." prompt -_UnnamedText_74eaf:: ; 99388 (26:5388) +_CeruleanHouse2Text_74eaf:: ; 99388 (26:5388) text "#MON up to L70" line "will obey you." @@ -85,13 +85,13 @@ _UnnamedText_74eaf:: ; 99388 (26:5388) line "become unruly!" prompt -_UnnamedText_74eb4:: ; 993c7 (26:53c7) +_CeruleanHouse2Text_74eb4:: ; 993c7 (26:53c7) text "Your #MON's" line "SPECIAL abilities" cont "increase a bit." prompt -_UnnamedText_74eb9:: ; 993f5 (26:53f5) +_CeruleanHouse2Text_74eb9:: ; 993f5 (26:53f5) text "All #MON will" line "obey you!" prompt diff --git a/text/maps/cerulean_city.asm b/text/maps/cerulean_city.asm index 5f9e2d7d..1daf3166 100644 --- a/text/maps/cerulean_city.asm +++ b/text/maps/cerulean_city.asm @@ -1,4 +1,4 @@ -_UnnamedText_19668:: ; a4d2b (29:4d2b) +_CeruleanCityText_19668:: ; a4d2b (29:4d2b) text $53, ": Yo!" line $52, "!" @@ -16,19 +16,19 @@ _UnnamedText_19668:: ; a4d2b (29:4d2b) cont $52, "!" done -_UnnamedText_1966d:: ; a4dbe (29:4dbe) +_CeruleanCityText_1966d:: ; a4dbe (29:4dbe) text "Hey!" line "Take it easy!" cont "You won already!" prompt -_UnnamedText_19672:: ; a4de3 (29:4de3) +_CeruleanCityText_19672:: ; a4de3 (29:4de3) text "Heh!" line "You're no match" cont "for my genius!" prompt -_UnnamedText_19677:: ; a4e07 (29:4e07) +_CeruleanCityText_19677:: ; a4e07 (29:4e07) text $53, ": Hey," line "guess what?" @@ -58,7 +58,7 @@ _UnnamedText_19677:: ; a4e07 (29:4e07) cont "Smell ya later!" done -_UnnamedText_196d9:: ; a4f27 (29:4f27) +_CeruleanCityText_196d9:: ; a4f27 (29:4f27) text "Hey! Stay out!" line "It's not your" cont "yard! Huh? Me?" @@ -85,13 +85,13 @@ _TM28NoRoomText:: ; a4fb3 (29:4fb3) line "I give it to you!" done -_UnnamedText_196ee:: ; a4feb (29:4feb) +_CeruleanCityText_196ee:: ; a4feb (29:4feb) text "Stop!" line "I give up! I'll" cont "leave quietly!" prompt -_UnnamedText_196f3:: ; a5010 (29:5010) +_CeruleanCityText_196f3:: ; a5010 (29:5010) text "OK! I'll return" line "the TM I stole!" prompt @@ -133,20 +133,20 @@ _CeruleanCityText6:: ; a50f6 (29:50f6) cont "with the ROCKETs!" done -_UnnamedText_19730:: ; a5188 (29:5188) +_CeruleanCityText_19730:: ; a5188 (29:5188) text "OK! SLOWBRO!" line "Use SONICBOOM!" cont "Come on, SLOWBRO" cont "pay attention!" done -_UnnamedText_19735:: ; a51c5 (29:51c5) +_CeruleanCityText_19735:: ; a51c5 (29:51c5) text "SLOWBRO punch!" line "No! You blew it" cont "again!" done -_UnnamedText_1973a:: ; a51ec (29:51ec) +_CeruleanCityText_1973a:: ; a51ec (29:51ec) text "SLOWBRO, WITHDRAW!" line "No! That's wrong!" @@ -159,22 +159,22 @@ _UnnamedText_1973a:: ; a51ec (29:51ec) cont "as a trainer!" done -_UnnamedText_1976f:: ; a526b (29:526b) +_CeruleanCityText_1976f:: ; a526b (29:526b) text "SLOWBRO took a" line "snooze..." done -_UnnamedText_19774:: ; a5285 (29:5285) +_CeruleanCityText_19774:: ; a5285 (29:5285) text "SLOWBRO is" line "loafing around..." done -_UnnamedText_19779:: ; a52a3 (29:52a3) +_CeruleanCityText_19779:: ; a52a3 (29:52a3) text "SLOWBRO turned" line "away..." done -_UnnamedText_1977e:: ; a52bb (29:52bb) +_CeruleanCityText_1977e:: ; a52bb (29:52bb) text "SLOWBRO" line "ignored orders..." done diff --git a/text/maps/cerulean_gym.asm b/text/maps/cerulean_gym.asm index 59ff424c..b0d2d3d1 100644 --- a/text/maps/cerulean_gym.asm +++ b/text/maps/cerulean_gym.asm @@ -1,4 +1,4 @@ -_UnnamedText_5c7be:: ; 989c1 (26:49c1) +_CeruleanGymText_5c7be:: ; 989c1 (26:49c1) text "Hi, you're a new" line "face!" @@ -17,7 +17,7 @@ _UnnamedText_5c7be:: ; 989c1 (26:49c1) cont "#MON!" done -_UnnamedText_5c7c3:: ; 98a7b (26:4a7b) +_CeruleanGymText_5c7c3:: ; 98a7b (26:4a7b) text "TM11 teaches" line "BUBBLEBEAM!" @@ -25,7 +25,7 @@ _UnnamedText_5c7c3:: ; 98a7b (26:4a7b) line "aquatic #MON!" done -_UnnamedText_5c7c8:: ; 98ab0 (26:4ab0) +_CeruleanGymText_5c7c8:: ; 98ab0 (26:4ab0) text "The CASCADEBADGE" line "makes all #MON" cont "up to L30 obey!" @@ -49,12 +49,12 @@ _ReceivedTM11Text:: ; 98b7d (26:4b7d) text $52, " received" line "TM11!@@" -_UnnamedText_5c7d3:: ; 98b90 (26:4b90) +_CeruleanGymText_5c7d3:: ; 98b90 (26:4b90) text "You better make" line "room for this!" done -_UnnamedText_5c7d8:: ; 98bb0 (26:4bb0) +_CeruleanGymText_5c7d8:: ; 98bb0 (26:4bb0) text "Wow!" line "You're too much!" @@ -103,7 +103,7 @@ _CeruleanGymAfterBattleText2:: ; 98cc4 (26:4cc4) line "someone like you!" done -_UnnamedText_5c82a:: ; 98d0a (26:4d0a) +_CeruleanGymText_5c82a:: ; 98d0a (26:4d0a) text "Yo! Champ in" line "making!" @@ -121,7 +121,7 @@ _UnnamedText_5c82a:: ; 98d0a (26:4d0a) line "electricity!" done -_UnnamedText_5c82f:: ; 98db0 (26:4db0) +_CeruleanGymText_5c82f:: ; 98db0 (26:4db0) text "You beat MISTY!" line "What'd I tell ya?" diff --git a/text/maps/cerulean_trashed_house.asm b/text/maps/cerulean_trashed_house.asm index b8334bc4..83f87cb8 100644 --- a/text/maps/cerulean_trashed_house.asm +++ b/text/maps/cerulean_trashed_house.asm @@ -1,4 +1,4 @@ -_UnnamedText_1d6ab:: ; 9875c (26:475c) +_CeruleanTrashedText_1d6ab:: ; 9875c (26:475c) text "Those miserable" line "ROCKETs!" @@ -14,7 +14,7 @@ _UnnamedText_1d6ab:: ; 9875c (26:475c) line "bundle, it did!" done -_UnnamedText_1d6b0:: ; 987e2 (26:47e2) +_CeruleanTrashedText_1d6b0:: ; 987e2 (26:47e2) text "I figure what's" line "lost is lost!" diff --git a/text/maps/champion.asm b/text/maps/champion.asm index 87b93300..259d530b 100644 --- a/text/maps/champion.asm +++ b/text/maps/champion.asm @@ -1,4 +1,4 @@ -_UnnamedText_760f4:: ; 860e1 (21:60e1) +_GaryText_760f4:: ; 860e1 (21:60e1) text $53, ": Hey!" para "I was looking" @@ -35,7 +35,7 @@ _UnnamedText_760f4:: ; 860e1 (21:60e1) cont "in the world!" done -_UnnamedText_760f9:: ; 8623b (21:623b) +_GaryText_760f9:: ; 8623b (21:623b) text "NO!" line "That can't be!" cont "You beat my best!" @@ -49,7 +49,7 @@ _UnnamedText_760f9:: ; 8623b (21:623b) cont "It's not fair!" prompt -_UnnamedText_760fe:: ; 862b4 (21:62b4) +_GaryText_760fe:: ; 862b4 (21:62b4) text "Hahaha!" line "I won, I won!" @@ -65,7 +65,7 @@ _UnnamedText_760fe:: ; 862b4 (21:62b4) line "Hahaha!" prompt -_UnnamedText_76103:: ; 8632f (21:632f) +_GaryText_76103:: ; 8632f (21:632f) text "Why?" line "Why did I lose?" @@ -85,7 +85,7 @@ _GaryText2:: ; 863c1 (21:63c1) text "OAK: ", $52, "!" done -_UnnamedText_76120:: ; 863ca (21:63ca) +_GaryText_76120:: ; 863ca (21:63ca) text "OAK: So, you won!" line "Congratulations!" cont "You're the new" @@ -103,7 +103,7 @@ _UnnamedText_76120:: ; 863ca (21:63ca) line "come of age!" done -_UnnamedText_76125:: ; 86463 (21:6463) +_GaryText_76125:: ; 86463 (21:6463) text "OAK: ", $53, "! I'm" line "disappointed!" @@ -129,7 +129,7 @@ _UnnamedText_76125:: ; 86463 (21:6463) cont "a champ again!" done -_UnnamedText_7612a:: ; 86567 (21:6567) +_GaryText_7612a:: ; 86567 (21:6567) text "OAK: ", $52, "!" para "You understand" diff --git a/text/maps/cinnabar_gym.asm b/text/maps/cinnabar_gym.asm index adf6f535..4d8f796e 100644 --- a/text/maps/cinnabar_gym.asm +++ b/text/maps/cinnabar_gym.asm @@ -65,18 +65,18 @@ _TM38NoRoomText:: ; a0a1e (28:4a1e) line "gift!" done -_UnnamedText_7595f:: ; a0a36 (28:4a36) +_CinnabarGymText_7595f:: ; a0a36 (28:4a36) text "Do you know how" line "hot #MON fire" cont "breath can get?" done -_UnnamedText_75964:: ; a0a65 (28:4a65) +_CinnabarGymText_75964:: ; a0a65 (28:4a65) text "Yow!" line "Hot, hot, hot!" prompt -_UnnamedText_75969:: ; a0a7a (28:4a7a) +_CinnabarGymText_75969:: ; a0a7a (28:4a7a) text "Fire, or to be" line "more precise," cont "combustion..." @@ -85,66 +85,66 @@ _UnnamedText_75969:: ; a0a7a (28:4a7a) line "blah..." done -_UnnamedText_75994:: ; a0ac0 (28:4ac0) +_CinnabarGymText_75994:: ; a0ac0 (28:4ac0) text "I was a thief, but" line "I became straight" cont "as a trainer!" done -_UnnamedText_75999:: ; a0af4 (28:4af4) +_CinnabarGymText_75999:: ; a0af4 (28:4af4) text "I" line "surrender!" prompt -_UnnamedText_7599e:: ; a0b02 (28:4b02) +_CinnabarGymText_7599e:: ; a0b02 (28:4b02) text "I can't help" line "stealing other" cont "people's #MON!" done -_UnnamedText_759c9:: ; a0b2c (28:4b2c) +_CinnabarGymText_759c9:: ; a0b2c (28:4b2c) text "You can't win!" line "I have studied" cont "#MON totally!" done -_UnnamedText_759ce:: ; a0b58 (28:4b58) +_CinnabarGymText_759ce:: ; a0b58 (28:4b58) text "Waah!" line "My studies!" prompt -_UnnamedText_759d3:: ; a0b6b (28:4b6b) +_CinnabarGymText_759d3:: ; a0b6b (28:4b6b) text "My theories are" line "too complicated" cont "for you!" done -_UnnamedText_759fe:: ; a0b95 (28:4b95) +_CinnabarGymText_759fe:: ; a0b95 (28:4b95) text "I just like using" line "fire #MON!" done -_UnnamedText_75a03:: ; a0bb3 (28:4bb3) +_CinnabarGymText_75a03:: ; a0bb3 (28:4bb3) text "Too hot" line "to handle!" prompt -_UnnamedText_75a08:: ; a0bc7 (28:4bc7) +_CinnabarGymText_75a08:: ; a0bc7 (28:4bc7) text "I wish there was" line "a thief #MON!" cont "I'd use that!" done -_UnnamedText_75a33:: ; a0bf4 (28:4bf4) +_CinnabarGymText_75a33:: ; a0bf4 (28:4bf4) text "I know why BLAINE" line "became a trainer!" done -_UnnamedText_75a38:: ; a0c19 (28:4c19) +_CinnabarGymText_75a38:: ; a0c19 (28:4c19) text "Ow!" prompt -_UnnamedText_75a3d:: ; a0c1e (28:4c1e) +_CinnabarGymText_75a3d:: ; a0c1e (28:4c1e) text "BLAINE was lost" line "in the mountains" cont "when a fiery bird" @@ -155,40 +155,40 @@ _UnnamedText_75a3d:: ; a0c1e (28:4c1e) cont "his way down!" done -_UnnamedText_75a68:: ; a0c90 (28:4c90) +_CinnabarGymText_75a68:: ; a0c90 (28:4c90) text "I've been to many" line "GYMs, but this is" cont "my favorite!" done -_UnnamedText_75a6d:: ; a0cc1 (28:4cc1) +_CinnabarGymText_75a6d:: ; a0cc1 (28:4cc1) text "Yowza!" line "Too hot!" prompt -_UnnamedText_75a72:: ; a0cd2 (28:4cd2) +_CinnabarGymText_75a72:: ; a0cd2 (28:4cd2) text "Us fire #MON" line "fans like PONYTA" cont "and NINETALES!" done -_UnnamedText_75a9d:: ; a0d00 (28:4d00) +_CinnabarGymText_75a9d:: ; a0d00 (28:4d00) text "Fire is weak" line "against H2O!" done -_UnnamedText_75aa2:: ; a0d1b (28:4d1b) +_CinnabarGymText_75aa2:: ; a0d1b (28:4d1b) text "Oh!" line "Snuffed out!" prompt -_UnnamedText_75aa7:: ; a0d2d (28:4d2d) +_CinnabarGymText_75aa7:: ; a0d2d (28:4d2d) text "Water beats fire!" line "But, fire melts" cont "ice #MON!" done -_UnnamedText_75ac2:: ; a0d5a (28:4d5a) +_CinnabarGymText_75ac2:: ; a0d5a (28:4d5a) text "Yo! Champ in" line "making!" @@ -203,7 +203,7 @@ _UnnamedText_75ac2:: ; a0d5a (28:4d5a) line "some BURN HEALs!" done -_UnnamedText_75ac7:: ; a0dd9 (28:4dd9) +_CinnabarGymText_75ac7:: ; a0dd9 (28:4dd9) text $52, "! You beat" line "that fire brand!" done diff --git a/text/maps/cinnabar_lab_fossil_room.asm b/text/maps/cinnabar_lab_fossil_room.asm index 63d56bad..3e544bd6 100644 --- a/text/maps/cinnabar_lab_fossil_room.asm +++ b/text/maps/cinnabar_lab_fossil_room.asm @@ -1,4 +1,4 @@ -_UnnamedText_75dc6:: ; a10e8 (28:50e8) +_Lab4Text_75dc6:: ; a10e8 (28:50e8) text "Hiya!" para "I am important" @@ -11,11 +11,11 @@ _UnnamedText_75dc6:: ; a10e8 (28:50e8) line "fossil for me?" prompt -_UnnamedText_75dcb:: ; a1145 (28:5145) +_Lab4Text_75dcb:: ; a1145 (28:5145) text "No! Is too bad!" done -_UnnamedText_75dd0:: ; a1156 (28:5156) +_Lab4Text_75dd0:: ; a1156 (28:5156) text "I take a little" line "time!" @@ -23,7 +23,7 @@ _UnnamedText_75dd0:: ; a1156 (28:5156) line "little while!" done -_UnnamedText_75dd5:: ; a118d (28:518d) +_Lab4Text_75dd5:: ; a118d (28:518d) text "Where were you?" para "Your fossil is" @@ -35,7 +35,7 @@ _UnnamedText_75dd5:: ; a118d (28:518d) line "like I think!" prompt -_UnnamedText_610ae:: ; a11d6 (28:51d6) +_Lab4Text_610ae:: ; a11d6 (28:51d6) text "Oh! That is" line "@" TX_RAM $cd6d @@ -54,7 +54,7 @@ _UnnamedText_610ae:: ; a11d6 (28:51d6) cont "again!" done -_UnnamedText_610b3:: ; a1259 (28:5259) +_Lab4Text_610b3:: ; a1259 (28:5259) text "So! You hurry and" line "give me that!" @@ -64,7 +64,7 @@ _UnnamedText_610b3:: ; a1259 (28:5259) text "!" prompt -_UnnamedText_610b8:: ; a128f (28:528f) +_Lab4Text_610b8:: ; a128f (28:528f) text "I take a little" line "time!" @@ -72,7 +72,7 @@ _UnnamedText_610b8:: ; a128f (28:528f) line "little while!" done -_UnnamedText_610bd:: ; a12c6 (28:52c6) +_Lab4Text_610bd:: ; a12c6 (28:52c6) text "Aiyah! You come" line "again!" done diff --git a/text/maps/copycats_house_2f.asm b/text/maps/copycats_house_2f.asm index c818f034..502f7611 100644 --- a/text/maps/copycats_house_2f.asm +++ b/text/maps/copycats_house_2f.asm @@ -1,4 +1,4 @@ -_UnnamedText_5ccd4:: ; a15ad (28:55ad) +_CopycatsHouse2FText_5ccd4:: ; a15ad (28:55ad) text $52, ": Hi! Do" line "you like #MON?" @@ -79,7 +79,7 @@ _CopycatsHouse2FText6:: ; a17be (28:57be) cont "on his head!" done -_UnnamedText_5cd17:: ; a17ef (28:57ef) +_CopycatsHouse2FText_5cd17:: ; a17ef (28:57ef) text "..." para "My Secrets!" @@ -91,7 +91,7 @@ _UnnamedText_5cd17:: ; a17ef (28:57ef) cont "CLEFAIRY!" done -_UnnamedText_5cd1c:: ; a1842 (28:5842) +_CopycatsHouse2FText_5cd1c:: ; a1842 (28:5842) text "Huh? Can't see!" done diff --git a/text/maps/daycare_1.asm b/text/maps/daycare_1.asm index 6a0c08fe..1743cbc3 100644 --- a/text/maps/daycare_1.asm +++ b/text/maps/daycare_1.asm @@ -1,16 +1,16 @@ -_UnnamedText_5640f:: ; 8ab95 (22:6b95) +_DayCareMText_5640f:: ; 8ab95 (22:6b95) text "I run a DAYCARE." line "Would you like me" cont "to raise one of" cont "your #MON?" done -_UnnamedText_56414:: ; 8abd4 (22:6bd4) +_DayCareMText_56414:: ; 8abd4 (22:6bd4) text "Which #MON" line "should I raise?" prompt -_UnnamedText_56419:: ; 8abf0 (22:6bf0) +_DayCareMText_56419:: ; 8abf0 (22:6bf0) text "Fine, I'll look" line "after @" TX_RAM $cd6d @@ -18,12 +18,12 @@ _UnnamedText_56419:: ; 8abf0 (22:6bf0) cont "for a while." prompt -_UnnamedText_5641e:: ; 8ac19 (22:6c19) +_DayCareMText_5641e:: ; 8ac19 (22:6c19) text "Come see me in" line "a while." done -_UnnamedText_56423:: ; 8ac32 (22:6c32) +_DayCareMText_56423:: ; 8ac32 (22:6c32) text "Your @" TX_RAM $cd6d db $0 @@ -32,14 +32,14 @@ _UnnamedText_56423:: ; 8ac32 (22:6c32) para "By level, it's" line "grown by @" -UnnamedText_8ac67:: ; 8ac67 (22:6c67) +DayCareMText_8ac67:: ; 8ac67 (22:6c67) TX_NUM $cd3e,$1,$3 text "!" para "Aren't I great?" prompt -_UnnamedText_56428:: ; 8ac7d (22:6c7d) +_DayCareMText_56428:: ; 8ac7d (22:6c7d) text "You owe me ¥@" db $2, $3f, $cd, $c2 db $0 @@ -47,14 +47,14 @@ _UnnamedText_56428:: ; 8ac7d (22:6c7d) cont "of this #MON." done -_UnnamedText_5642d:: ; 8acae (22:6cae) +_DayCareMText_5642d:: ; 8acae (22:6cae) text $52, " got" line "@" TX_RAM W_DAYCAREMONNAME text " back!" done -_UnnamedText_56432:: ; 8acc1 (22:6cc1) +_DayCareMText_56432:: ; 8acc1 (22:6cc1) text "Back already?" line "Your @" TX_RAM $cd6d diff --git a/text/maps/daycare_2.asm b/text/maps/daycare_2.asm index 2ee13180..ac9720ba 100644 --- a/text/maps/daycare_2.asm +++ b/text/maps/daycare_2.asm @@ -1,33 +1,33 @@ -_UnnamedText_56437:: ; 8c000 (23:4000) +_DayCareMText_56437:: ; 8c000 (23:4000) text "All right then," line "@@" -_UnnamedText_5643b:: ; 8c013 (23:4013) +_DayCareMText_5643b:: ; 8c013 (23:4013) text "come again." done -_UnnamedText_56440:: ; 8c020 (23:4020) +_DayCareMText_56440:: ; 8c020 (23:4020) text "You have no room" line "for this #MON!" done -_UnnamedText_56445:: ; 8c041 (23:4041) +_DayCareMText_56445:: ; 8c041 (23:4041) text "You only have one" line "#MON with you." done -_UnnamedText_5644a:: ; 8c063 (23:4063) +_DayCareMText_5644a:: ; 8c063 (23:4063) text "I can't accept a" line "#MON that" cont "knows an HM move." done -_UnnamedText_5644f:: ; 8c090 (23:4090) +_DayCareMText_5644f:: ; 8c090 (23:4090) text "Thank you! Here's" line "your #MON!" prompt -_UnnamedText_56454:: ; 8c0ad (23:40ad) +_DayCareMText_56454:: ; 8c0ad (23:40ad) text "Hey, you don't" line "have enough ¥!" done diff --git a/text/maps/fighting_dojo.asm b/text/maps/fighting_dojo.asm index 802f7276..6f01e5fa 100644 --- a/text/maps/fighting_dojo.asm +++ b/text/maps/fighting_dojo.asm @@ -1,4 +1,4 @@ -_UnnamedText_5ce8e:: ; a1852 (28:5852) +_FightingDojoText_5ce8e:: ; a1852 (28:5852) text "Grunt!" para "I am the KARATE" @@ -12,12 +12,12 @@ _UnnamedText_5ce8e:: ; a1852 (28:5852) para "Fwaaa!" done -_UnnamedText_5ce93:: ; a18ba (28:58ba) +_FightingDojoText_5ce93:: ; a18ba (28:58ba) text "Hwa!" line "Arrgh! Beaten!" prompt -_UnnamedText_5ce98:: ; a18cf (28:58cf) +_FightingDojoText_5ce98:: ; a18cf (28:58cf) text "Indeed, I have" line "lost!" @@ -34,7 +34,7 @@ _UnnamedText_5ce98:: ; a18cf (28:58cf) line "one you like!" done -_UnnamedText_5ce9d:: ; a1972 (28:5972) +_FightingDojoText_5ce9d:: ; a1972 (28:5972) text "Ho!" para "Stay and train at" diff --git a/text/maps/fuchsia_city.asm b/text/maps/fuchsia_city.asm index 07909c04..aa35c16d 100644 --- a/text/maps/fuchsia_city.asm +++ b/text/maps/fuchsia_city.asm @@ -114,7 +114,7 @@ _FuchsiaCityKabutoText:: ; a6191 (29:6191) cont "from a fossil." prompt -_UnnamedText_19b2a:: ; a61ca (29:61ca) +_FuchsiaCityText_19b2a:: ; a61ca (29:61ca) text "..." done diff --git a/text/maps/fuchsia_fishing_house.asm b/text/maps/fuchsia_fishing_house.asm index abe94780..5ad09ef0 100644 --- a/text/maps/fuchsia_fishing_house.asm +++ b/text/maps/fuchsia_fishing_house.asm @@ -1,4 +1,4 @@ -_UnnamedText_561bd:: ; a0695 (28:4695) +_FuchsiaHouse3Text_561bd:: ; a0695 (28:4695) text "I'm the FISHING" line "GURU's older" cont "brother!" @@ -10,7 +10,7 @@ _UnnamedText_561bd:: ; a0695 (28:4695) line "fish?" done -_UnnamedText_561c2:: ; a06e8 (28:46e8) +_FuchsiaHouse3Text_561c2:: ; a06e8 (28:46e8) text "Grand! I like" line "your style!" @@ -22,12 +22,12 @@ _UnnamedText_561c2:: ; a06e8 (28:46e8) TX_RAM $cf4b text "!@@" -_UnnamedText_56212:: ; a0737 (28:4737) +_FuchsiaHouse3Text_56212:: ; a0737 (28:4737) text "Oh... That's so" line "disappointing..." done -_UnnamedText_56217:: ; a0758 (28:4758) +_FuchsiaHouse3Text_56217:: ; a0758 (28:4758) text "Hello there," line $52, "!" @@ -35,7 +35,7 @@ _UnnamedText_56217:: ; a0758 (28:4758) line "biting?" done -_UnnamedText_5621c:: ; a0782 (28:4782) +_FuchsiaHouse3Text_5621c:: ; a0782 (28:4782) text "Oh no!" para "You have no room" diff --git a/text/maps/fujis_house.asm b/text/maps/fujis_house.asm index 44d8c601..033777c2 100644 --- a/text/maps/fujis_house.asm +++ b/text/maps/fujis_house.asm @@ -1,16 +1,16 @@ -_UnnamedText_1d8d1:: ; 99e8d (26:5e8d) +_LavenderHouse1Text_1d8d1:: ; 99e8d (26:5e8d) text "That's odd, MR.FUJI" line "isn't here." cont "Where'd he go?" done -_UnnamedText_1d8d6:: ; 99eba (26:5eba) +_LavenderHouse1Text_1d8d6:: ; 99eba (26:5eba) text "MR.FUJI had been" line "praying alone for" cont "CUBONE's mother." done -_UnnamedText_1d8f4:: ; 99eee (26:5eee) +_LavenderHouse1Text_1d8f4:: ; 99eee (26:5eee) text "This is really" line "MR.FUJI's house." @@ -21,7 +21,7 @@ _UnnamedText_1d8f4:: ; 99eee (26:5eee) cont "orphaned #MON!" done -_UnnamedText_1d8f9:: ; 99f4b (26:5f4b) +_LavenderHouse1Text_1d8f9:: ; 99f4b (26:5f4b) text "It's so warm!" line "#MON are so" cont "nice to hug!" @@ -33,7 +33,7 @@ _LavenderHouse1Text3:: ; 99f72 (26:5f72) _LavenderHouse1Text4:: ; 99f85 (26:5f85) text "NIDORINO: Gaoo!@@" -_UnnamedText_1d94c:: ; 99f97 (26:5f97) +_LavenderHouse1Text_1d94c:: ; 99f97 (26:5f97) text "MR.FUJI: ", $52, "." para "Your #DEX quest" diff --git a/text/maps/lavender_house.asm b/text/maps/lavender_house.asm index 444e600a..0ae3a1fe 100644 --- a/text/maps/lavender_house.asm +++ b/text/maps/lavender_house.asm @@ -1,7 +1,7 @@ _LavenderHouse2Text1:: ; 9a238 (26:6238) text "CUBONE: Kyarugoo!@@" -_UnnamedText_1d9dc:: ; 9a24c (26:624c) +_LavenderHouse2Text_1d9dc:: ; 9a24c (26:624c) text "I hate those" line "horrible ROCKETs!" @@ -13,7 +13,7 @@ _UnnamedText_1d9dc:: ; 9a24c (26:624c) cont "from TEAM ROCKET!" done -_UnnamedText_1d9e1:: ; 9a2b9 (26:62b9) +_LavenderHouse2Text_1d9e1:: ; 9a2b9 (26:62b9) text "The GHOST of" line "#MON TOWER is" cont "gone!" diff --git a/text/maps/lavender_mart.asm b/text/maps/lavender_mart.asm index 2438ab22..53ebdae3 100644 --- a/text/maps/lavender_mart.asm +++ b/text/maps/lavender_mart.asm @@ -14,13 +14,13 @@ _LavenderMartText2:: ; 9a104 (26:6104) line "I can get them?" done -_UnnamedText_5c953:: ; 9a1b4 (26:61b4) +_LavenderMart_5c953:: ; 9a1b4 (26:61b4) text "You know REVIVE?" line "It revives any" cont "fainted #MON!" done -_UnnamedText_5c958:: ; 9a1e3 (26:61e3) +_LavenderMart_5c958:: ; 9a1e3 (26:61e3) text "I found a NUGGET" line "in the mountains." diff --git a/text/maps/lavender_town.asm b/text/maps/lavender_town.asm index a12bde55..f6485c6f 100644 --- a/text/maps/lavender_town.asm +++ b/text/maps/lavender_town.asm @@ -1,14 +1,14 @@ -_UnnamedText_4413c:: ; a5482 (29:5482) +_LavenderTownText_4413c:: ; a5482 (29:5482) text "Do you believe in" line "GHOSTs?" done -_UnnamedText_44141:: ; a549d (29:549d) +_LavenderTownText_44141:: ; a549d (29:549d) text "Really? So there" line "are believers..." done -_UnnamedText_44146:: ; a54c0 (29:54c0) +_LavenderTownText_44146:: ; a54c0 (29:54c0) text "Hahaha, I guess" line "not." diff --git a/text/maps/lorelei.asm b/text/maps/lorelei.asm index cb007464..a75b50d9 100644 --- a/text/maps/lorelei.asm +++ b/text/maps/lorelei.asm @@ -36,7 +36,7 @@ _LoreleiAfterBattleText:: ; 866d3 (21:66d3) cont "LEAGUE power!" done -_UnnamedText_7627b:: ; 86729 (21:6729) +_LoreleiText2:: ; 86729 (21:6729) text "Someone's voice:" line "Don't run away!" done diff --git a/text/maps/mansion_2f.asm b/text/maps/mansion_2f.asm index 49e28a19..057e05e2 100644 --- a/text/maps/mansion_2f.asm +++ b/text/maps/mansion_2f.asm @@ -32,17 +32,17 @@ _Mansion2Text4:: ; 85389 (21:5389) cont "#MON, MEW." done -_UnnamedText_520c2:: ; 853c7 (21:53c7) +_Mansion2Text_520c2:: ; 853c7 (21:53c7) text "A secret switch!" para "Press it?" done -_UnnamedText_520c7:: ; 853e3 (21:53e3) +_Mansion2Text_520c7:: ; 853e3 (21:53e3) text "Who wouldn't?" prompt -_UnnamedText_520cc:: ; 853f1 (21:53f1) +_Mansion2Text_520cc:: ; 853f1 (21:53f1) text "Not quite yet!" done diff --git a/text/maps/mt_moon_b1f.asm b/text/maps/mt_moon_b1f.asm index d6d7dd7f..8421fdb0 100644 --- a/text/maps/mt_moon_b1f.asm +++ b/text/maps/mt_moon_b1f.asm @@ -1,4 +1,4 @@ -_UnnamedText_51a48:: ; 8095c (20:495c) +_MtMoonText1:: ; 8095c (20:495c) db $0 done diff --git a/text/maps/mt_moon_b2f.asm b/text/maps/mt_moon_b2f.asm index 6af39872..4088e280 100644 --- a/text/maps/mt_moon_b2f.asm +++ b/text/maps/mt_moon_b2f.asm @@ -1,24 +1,24 @@ -_UnnamedText_49f24:: ; 8095e (20:495e) +_MtMoon3Text_49f24:: ; 8095e (20:495e) text "You want the" line "DOME FOSSIL?" done -_UnnamedText_49f64:: ; 80979 (20:4979) +_MtMoon3Text_49f64:: ; 80979 (20:4979) text "You want the" line "HELIX FOSSIL?" done -_UnnamedText_49f6f:: ; 80995 (20:4995) +_MtMoon3Text_49f6f:: ; 80995 (20:4995) text $52, " got the" line "@" TX_RAM $cf4b text "!@@" -_UnnamedText_49f7f:: ; 809a8 (20:49a8) +_MtMoon3Text_49f7f:: ; 809a8 (20:49a8) text "Look, you've got" line "no room for this.@@" -_UnnamedText_49f85:: ; 809cc (20:49cc) +_MtMoon3Text_49f85:: ; 809cc (20:49cc) text "Hey, stop!" para "I found these" @@ -26,18 +26,18 @@ _UnnamedText_49f85:: ; 809cc (20:49cc) cont "both mine!" done -_UnnamedText_49f8a:: ; 80a01 (20:4a01) +_MtMoon3Text_49f8a:: ; 80a01 (20:4a01) text "OK!" line "I'll share!" prompt -_UnnamedText_49f8f:: ; 80a11 (20:4a11) +_MtMoon3Text_49f8f:: ; 80a11 (20:4a11) text "We'll each take" line "one!" cont "No being greedy!" done -_UnnamedText_49f94:: ; 80a37 (20:4a37) +_MtMoon3Text_49f94:: ; 80a37 (20:4a37) text "Far away, on" line "CINNABAR ISLAND," cont "there's a #MON" @@ -48,7 +48,7 @@ _UnnamedText_49f94:: ; 80a37 (20:4a37) cont "fossils." done -_UnnamedText_49f99:: ; 80a93 (20:4a93) +_MtMoon3Text_49f99:: ; 80a93 (20:4a93) text "All right. Then" line "this is mine!@@" diff --git a/text/maps/mt_moon_pokecenter.asm b/text/maps/mt_moon_pokecenter.asm index 54186253..2ae50a13 100644 --- a/text/maps/mt_moon_pokecenter.asm +++ b/text/maps/mt_moon_pokecenter.asm @@ -16,7 +16,7 @@ _MtMoonPokecenterText3:: ; 8a929 (22:6929) cont "news!" done -_UnnamedText_4935c:: ; 8a976 (22:6976) +_MtMoonPokecenterText_4935c:: ; 8a976 (22:6976) text "MAN: Hello, there!" line "Have I got a deal" cont "just for you!" @@ -27,18 +27,18 @@ _UnnamedText_4935c:: ; 8a976 (22:6976) cont "What do you say?" done -_UnnamedText_49361:: ; 8a9ec (22:69ec) +_MtMoonPokecenterText_49361:: ; 8a9ec (22:69ec) text "No? I'm only" line "doing this as a" cont "favor to you!" done -_UnnamedText_49366:: ; 8aa17 (22:6a17) +_MtMoonPokecenterText_49366:: ; 8aa17 (22:6a17) text "You'll need more" line "money than that!" done -_UnnamedText_4936b:: ; 8aa39 (22:6a39) +_MtMoonPokecenterText_4936b:: ; 8aa39 (22:6a39) text "MAN: Well, I don't" line "give refunds!" done diff --git a/text/maps/museum_1f.asm b/text/maps/museum_1f.asm index 250dd031..f5f847d3 100644 --- a/text/maps/museum_1f.asm +++ b/text/maps/museum_1f.asm @@ -1,8 +1,8 @@ -_UnnamedText_5c21a:: ; 9652c (25:652c) +_Museum1FText_5c21a:: ; 9652c (25:652c) text "Come again!" done -_UnnamedText_5c21f:: ; 96539 (25:6539) +_Museum1FText_5c21f:: ; 96539 (25:6539) text "It's ¥50 for a" line "child's ticket." @@ -10,17 +10,17 @@ _UnnamedText_5c21f:: ; 96539 (25:6539) line "come in?" done -_UnnamedText_5c224:: ; 96572 (25:6572) +_Museum1FText_5c224:: ; 96572 (25:6572) text "Right, ¥50!" line "Thank you!" done -_UnnamedText_5c229:: ; 9658a (25:658a) +_Museum1FText_5c229:: ; 9658a (25:658a) text "You don't have" line "enough money." prompt -_UnnamedText_5c22e:: ; 965a7 (25:65a7) +_Museum1FText_5c22e:: ; 965a7 (25:65a7) text "You can't sneak" line "in the back way!" @@ -29,7 +29,7 @@ _UnnamedText_5c22e:: ; 965a7 (25:65a7) cont "AMBER is?" done -_UnnamedText_5c233:: ; 965f1 (25:65f1) +_Museum1FText_5c233:: ; 965f1 (25:65f1) text "There's a lab" line "somewhere trying" cont "to resurrect" @@ -37,28 +37,28 @@ _UnnamedText_5c233:: ; 965f1 (25:65f1) cont "from AMBER." done -_UnnamedText_5c238:: ; 96636 (25:6636) +_Museum1FText_5c238:: ; 96636 (25:6636) text "AMBER is fossil-" line "ized tree sap." done -_UnnamedText_5c23d:: ; 96657 (25:6657) +_Museum1FText_5c23d:: ; 96657 (25:6657) text "Please go to the" line "other side!" done -_UnnamedText_5c242:: ; 96675 (25:6675) +_Museum1FText_5c242:: ; 96675 (25:6675) text "Take plenty of" line "time to look!" done -_UnnamedText_5c251:: ; 96693 (25:6693) +_Museum1FText_5c251:: ; 96693 (25:6693) text "That is one" line "magnificent" cont "fossil!" done -_UnnamedText_5c28e:: ; 966b4 (25:66b4) +_Museum1FText_5c28e:: ; 966b4 (25:66b4) text "Ssh! I think that" line "this chunk of" cont "AMBER contains" @@ -84,24 +84,24 @@ _ReceivedOldAmberText:: ; 96790 (25:6790) text $52, " received" line "OLD AMBER!@@" -_UnnamedText_5c299:: ; 967a8 (25:67a8) +_Museum1FText_5c299:: ; 967a8 (25:67a8) text "Ssh! Get the OLD" line "AMBER checked!" done -_UnnamedText_5c29e:: ; 967c9 (25:67c9) +_Museum1FText_5c29e:: ; 967c9 (25:67c9) text "You don't have" line "space for this!" done -_UnnamedText_5c2ad:: ; 967e8 (25:67e8) +_Museum1FText_5c2ad:: ; 967e8 (25:67e8) text "We are proud of 2" line "fossils of very" cont "rare, prehistoric" cont "#MON!" done -_UnnamedText_5c2bc:: ; 96823 (25:6823) +_Museum1FText_5c2bc:: ; 96823 (25:6823) text "The AMBER is" line "clear and gold!" done diff --git a/text/maps/name_rater.asm b/text/maps/name_rater.asm index 587ddb7b..c2e0b2ea 100644 --- a/text/maps/name_rater.asm +++ b/text/maps/name_rater.asm @@ -1,4 +1,4 @@ -_UnnamedText_1dab3:: ; 9a308 (26:6308) +_NameRaterText_1dab3:: ; 9a308 (26:6308) text "Hello, hello!" line "I am the official" cont "NAME RATER!" @@ -8,12 +8,12 @@ _UnnamedText_1dab3:: ; 9a308 (26:6308) cont "your #MON?" done -_UnnamedText_1dab8:: ; 9a361 (26:6361) +_NameRaterText_1dab8:: ; 9a361 (26:6361) text "Which #MON" line "should I look at?" prompt -_UnnamedText_1dabd:: ; 9a37f (26:637f) +_NameRaterText_1dabd:: ; 9a37f (26:637f) TX_RAM $cd6d text ", is it?" line "That is a decent" @@ -26,12 +26,12 @@ _UnnamedText_1dabd:: ; 9a37f (26:637f) para "How about it?" done -_UnnamedText_1dac2:: ; 9a3e5 (26:63e5) +_NameRaterText_1dac2:: ; 9a3e5 (26:63e5) text "Fine! What should" line "we name it?" prompt -_UnnamedText_1dac7:: ; 9a404 (26:6404) +_NameRaterText_1dac7:: ; 9a404 (26:6404) text "OK! This #MON" line "has been renamed" cont "@" @@ -42,12 +42,12 @@ _UnnamedText_1dac7:: ; 9a404 (26:6404) line "name than before!" done -_UnnamedText_1dacc:: ; 9a44c (26:644c) +_NameRaterText_1dacc:: ; 9a44c (26:644c) text "Fine! Come any" line "time you like!" done -_UnnamedText_1dad1:: ; 9a46b (26:646b) +_NameRaterText_1dad1:: ; 9a46b (26:646b) TX_RAM $cd6d text ", is it?" line "That is a truly" diff --git a/text/maps/oaks_lab.asm b/text/maps/oaks_lab.asm index 79ae312a..3e10758e 100644 --- a/text/maps/oaks_lab.asm +++ b/text/maps/oaks_lab.asm @@ -59,20 +59,20 @@ _OaksLabLastMonText:: ; 94eb6 (25:4eb6) line "last #MON!" done -_UnnamedText_1d2f0:: ; 94ed2 (25:4ed2) +_OaksLabText_1d2f0:: ; 94ed2 (25:4ed2) text "OAK: Now, ", $52, "," line "which #MON do" cont "you want?" done -_UnnamedText_1d2f5:: ; 94ef8 (25:4ef8) +_OaksLabText_1d2f5:: ; 94ef8 (25:4ef8) text "OAK: If a wild" line "#MON appears," cont "your #MON can" cont "fight against it!" done -_UnnamedText_1d2fa:: ; 94f36 (25:4f36) +_OaksLabText_1d2fa:: ; 94f36 (25:4f36) text "OAK: ", $52, "," line "raise your young" cont "#MON by making" @@ -153,7 +153,7 @@ _OaksLabPleaseVisitText:: ; 9519e (25:519e) cont "coming along." done -_UnnamedText_1d31d:: ; 951e9 (25:51e9) +_OaksLabText_1d31d:: ; 951e9 (25:51e9) text "OAK: Good to see " line "you! How is your " cont "#DEX coming? " @@ -161,7 +161,7 @@ _UnnamedText_1d31d:: ; 951e9 (25:51e9) cont "a look!" prompt -_UnnamedText_1d32c:: ; 95236 (25:5236) +_OaksLabText_1d32c:: ; 95236 (25:5236) text "It's encyclopedia-" line "like, but the" cont "pages are blank!" @@ -171,7 +171,7 @@ _OaksLabText8:: ; 95268 (25:5268) text "?" done -_UnnamedText_1d340:: ; 9526b (25:526b) +_OaksLabText_1d340:: ; 9526b (25:526b) text "PROF.OAK is the" line "authority on" cont "#MON!" @@ -253,14 +253,14 @@ _OaksLabRivalChallengeText:: ; 95477 (25:5477) line "you on!" done -_UnnamedText_1d3be:: ; 954b6 (25:54b6) +_OaksLabText_1d3be:: ; 954b6 (25:54b6) text "WHAT?" line "Unbelievable!" cont "I picked the" cont "wrong #MON!" prompt -_UnnamedText_1d3c3:: ; 954e4 (25:54e4) +_OaksLabText_1d3c3:: ; 954e4 (25:54e4) text $53, ": Yeah! Am" line "I great or what?" prompt @@ -353,12 +353,12 @@ _OaksLabText27:: ; 95741 (25:5741) cont $52, "! Hahaha!" done -_UnnamedText_1d405:: ; 957eb (25:57eb) +_OaksLabText_1d405:: ; 957eb (25:57eb) text "I study #MON as" line "PROF.OAK's AIDE." done -_UnnamedText_441cc:: ; 9580c (25:580c) +_OaksLabText_441cc:: ; 9580c (25:580c) text "#DEX comp-" line "letion is:" @@ -373,41 +373,41 @@ _UnnamedText_441cc:: ; 9580c (25:580c) line "Rating:" prompt -_UnnamedText_44201:: ; 95858 (25:5858) +_OaksLabText_44201:: ; 95858 (25:5858) text "You still have" line "lots to do." cont "Look for #MON" cont "in grassy areas!" done -_UnnamedText_44206:: ; 95893 (25:5893) +_OaksLabText_44206:: ; 95893 (25:5893) text "You're on the" line "right track! " cont "Get a FLASH HM" cont "from my AIDE!" done -_UnnamedText_4420b:: ; 958cc (25:58cc) +_OaksLabText_4420b:: ; 958cc (25:58cc) text "You still need" line "more #MON!" cont "Try to catch" cont "other species!" done -_UnnamedText_44210:: ; 95903 (25:5903) +_OaksLabText_44210:: ; 95903 (25:5903) text "Good, you're" line "trying hard!" cont "Get an ITEMFINDER" cont "from my AIDE!" done -_UnnamedText_44215:: ; 9593d (25:593d) +_OaksLabText_44215:: ; 9593d (25:593d) text "Looking good!" line "Go find my AIDE" cont "when you get 50!" done -_UnnamedText_4421a:: ; 9596d (25:596d) +_OaksLabText_4421a:: ; 9596d (25:596d) text "You finally got at" line "least 50 species!" cont "Be sure to get" @@ -415,62 +415,62 @@ _UnnamedText_4421a:: ; 9596d (25:596d) cont "AIDE!" done -_UnnamedText_4421f:: ; 959b8 (25:59b8) +_OaksLabText_4421f:: ; 959b8 (25:59b8) text "Ho! This is geting" line "even better!" done -_UnnamedText_44224:: ; 959d9 (25:59d9) +_OaksLabText_44224:: ; 959d9 (25:59d9) text "Very good!" line "Go fish for some" cont "marine #MON!" done -_UnnamedText_44229:: ; 95a03 (25:5a03) +_OaksLabText_44229:: ; 95a03 (25:5a03) text "Wonderful!" line "Do you like to" cont "collect things?" done -_UnnamedText_4422e:: ; 95a2e (25:5a2e) +_OaksLabText_4422e:: ; 95a2e (25:5a2e) text "I'm impressed!" line "It must have been" cont "difficult to do!" done -_UnnamedText_44233:: ; 95a60 (25:5a60) +_OaksLabText_44233:: ; 95a60 (25:5a60) text "You finally got at" line "least 100 species!" cont "I can't believe" cont "how good you are!" done -_UnnamedText_44238:: ; 95aa8 (25:5aa8) +_OaksLabText_44238:: ; 95aa8 (25:5aa8) text "You even have the" line "evolved forms of" cont "#MON! Super!" done -_UnnamedText_4423d:: ; 95ad9 (25:5ad9) +_OaksLabText_4423d:: ; 95ad9 (25:5ad9) text "Excellent! Trade" line "with friends to" cont "get some more!" done -_UnnamedText_44242:: ; 95b0a (25:5b0a) +_OaksLabText_44242:: ; 95b0a (25:5b0a) text "Outstanding!" line "You've become a" cont "real pro at this!" done -_UnnamedText_44247:: ; 95b39 (25:5b39) +_OaksLabText_44247:: ; 95b39 (25:5b39) text "I have nothing" line "left to say!" cont "You're the" cont "authority now!" done -_UnnamedText_4424c:: ; 95b6f (25:5b6f) +_OaksLabText_4424c:: ; 95b6f (25:5b6f) text "Your #DEX is" line "entirely complete!" cont "Congratulations!" diff --git a/text/maps/pewter_city.asm b/text/maps/pewter_city.asm index dec2fd79..647832a3 100644 --- a/text/maps/pewter_city.asm +++ b/text/maps/pewter_city.asm @@ -20,18 +20,18 @@ _PewterCityText2:: ; a49e0 (29:49e0) cont "into it!" done -_UnnamedText_193f1:: ; a4a56 (29:4a56) +_PewterCityText_193f1:: ; a4a56 (29:4a56) text "Did you check out" line "the MUSEUM?" done -_UnnamedText_193f6:: ; a4a75 (29:4a75) +_PewterCityText_193f6:: ; a4a75 (29:4a75) text "Weren't those" line "fossils from MT." cont "MOON amazing?" done -_UnnamedText_193fb:: ; a4aa2 (29:4aa2) +_PewterCityText_193fb:: ; a4aa2 (29:4aa2) text "Really?" line "You absolutely" cont "have to go!" @@ -45,24 +45,24 @@ _PewterCityText13:: ; a4ac6 (29:4ac6) cont "See you around!" done -_UnnamedText_19427:: ; a4b14 (29:4b14) +_PewterCityText_19427:: ; a4b14 (29:4b14) text "Psssst!" line "Do you know what" cont "I'm doing?" done -_UnnamedText_1942c:: ; a4b38 (29:4b38) +_PewterCityText_1942c:: ; a4b38 (29:4b38) text "That's right!" line "It's hard work!" done -_UnnamedText_19431:: ; a4b55 (29:4b55) +_PewterCityText_19431:: ; a4b55 (29:4b55) text "I'm spraying REPEL" line "to keep #MON" cont "out of my garden!" done -_UnnamedText_1945d:: ; a4b87 (29:4b87) +_PewterCityText_1945d:: ; a4b87 (29:4b87) text "You're a trainer" line "right? BROCK's" cont "looking for new" @@ -70,7 +70,7 @@ _UnnamedText_1945d:: ; a4b87 (29:4b87) cont "Follow me!" done -_UnnamedText_19462:: ; a4bce (29:4bce) +_PewterCityText_19462:: ; a4bce (29:4bce) text "If you have the" line "right stuff, go" cont "take on BROCK!" diff --git a/text/maps/pewter_gym_1.asm b/text/maps/pewter_gym_1.asm index 83174271..9f3a1213 100644 --- a/text/maps/pewter_gym_1.asm +++ b/text/maps/pewter_gym_1.asm @@ -1,4 +1,4 @@ -_UnnamedText_5c49e:: ; 9697a (25:697a) +_PewterGymText_5c49e:: ; 9697a (25:697a) text "I'm BROCK!" line "I'm PEWTER's GYM" cont "LEADER!" diff --git a/text/maps/pewter_gym_2.asm b/text/maps/pewter_gym_2.asm index d82d5e14..a503f755 100644 --- a/text/maps/pewter_gym_2.asm +++ b/text/maps/pewter_gym_2.asm @@ -1,4 +1,4 @@ -_UnnamedText_5c4a3:: ; 98000 (26:4000) +_PewterGymText_5c4a3:: ; 98000 (26:4000) text "There are all" line "kinds of trainers" cont "in the world!" @@ -49,7 +49,7 @@ _TM34NoRoomText:: ; 981ab (26:41ab) line "room for this!" done -_UnnamedText_5c4bc:: ; 981c9 (26:41c9) +_PewterGymText_5c4bc:: ; 981c9 (26:41c9) text "I took" line "you for granted." @@ -60,7 +60,7 @@ _UnnamedText_5c4bc:: ; 981c9 (26:41c9) para $52, " received" line "the BOULDERBADGE!@@" -_UnnamedText_5c4c1:: ; 98232 (26:4232) +_PewterGymText_5c4c1:: ; 98232 (26:4232) db $0 para "That's an official" line "#MON LEAGUE" @@ -98,7 +98,7 @@ _PewterGymAfterBattleText1:: ; 98325 (26:4325) cont "as BROCK!" done -_UnnamedText_5c515:: ; 98351 (26:4351) +_PewterGymText_5c515:: ; 98351 (26:4351) text "Hiya! I can tell" line "you have what it" cont "takes to become a" @@ -112,12 +112,12 @@ _UnnamedText_5c515:: ; 98351 (26:4351) line "to the top!" done -_UnnamedText_5c51a:: ; 983dc (26:43dc) +_PewterGymText_5c51a:: ; 983dc (26:43dc) text "All right! Let's" line "get happening!" prompt -_UnnamedText_5c51f:: ; 983fc (26:43fc) +_PewterGymText_5c51f:: ; 983fc (26:43fc) text "The 1st #MON" line "out in a match is" cont "at the top of the" @@ -129,13 +129,13 @@ _UnnamedText_5c51f:: ; 983fc (26:43fc) cont "made easier!" done -_UnnamedText_5c524:: ; 98476 (26:4476) +_PewterGymText_5c524:: ; 98476 (26:4476) text "It's a free" line "service! Let's" cont "get happening!" prompt -_UnnamedText_5c529:: ; 9849f (26:449f) +_PewterGymText_5c529:: ; 9849f (26:449f) text "Just as I thought!" line "You're #MON" cont "champ material!" diff --git a/text/maps/pewter_mart.asm b/text/maps/pewter_mart.asm index f98c72e7..a33974db 100644 --- a/text/maps/pewter_mart.asm +++ b/text/maps/pewter_mart.asm @@ -1,4 +1,4 @@ -_UnnamedText_74cc6:: ; 985ac (26:45ac) +_PewterMartText_74cc6:: ; 985ac (26:45ac) text "A shady, old man" line "got me to buy" cont "this really weird" @@ -8,7 +8,7 @@ _UnnamedText_74cc6:: ; 985ac (26:45ac) line "and it cost ¥500!" done -_UnnamedText_74cd5:: ; 9860c (26:460c) +_PewterMartText_74cd5:: ; 9860c (26:460c) text "Good things can" line "happen if you" cont "raise #MON" diff --git a/text/maps/pokemon_league_gate.asm b/text/maps/pokemon_league_gate.asm index f3eb1858..cadfea3b 100644 --- a/text/maps/pokemon_league_gate.asm +++ b/text/maps/pokemon_league_gate.asm @@ -1,4 +1,4 @@ -_UnnamedText_1e704:: ; 8cfbb (23:4fbb) +_Route22GateText_1e704:: ; 8cfbb (23:4fbb) text "Only truly skilled" line "trainers are" cont "allowed through." @@ -6,14 +6,14 @@ _UnnamedText_1e704:: ; 8cfbb (23:4fbb) para "You don't have the" line "BOULDERBADGE yet!@@" -_UnnamedText_1e715:: ; 8d012 (23:5012) +_Route22GateText_1e715:: ; 8d012 (23:5012) db $0 para "The rules are" line "rules. I can't" cont "let you pass." done -_UnnamedText_1e71a:: ; 8d03e (23:503e) +_Route22GateText_1e71a:: ; 8d03e (23:503e) text "Oh! That is the" line "BOULDERBADGE!" cont "Go right ahead!@@" diff --git a/text/maps/pokemon_tower_2f.asm b/text/maps/pokemon_tower_2f.asm index 4a0dbc9f..6a33e085 100644 --- a/text/maps/pokemon_tower_2f.asm +++ b/text/maps/pokemon_tower_2f.asm @@ -1,4 +1,4 @@ -_UnnamedText_6062d:: ; 9957b (26:557b) +_PokemonTower2Text_6062d:: ; 9957b (26:557b) text $53, ": Hey," line $52, "! What" cont "brings you here?" @@ -10,7 +10,7 @@ _UnnamedText_6062d:: ; 9957b (26:557b) cont "Let's go, pal!" done -_UnnamedText_60632:: ; 995e5 (26:55e5) +_PokemonTower2Text_60632:: ; 995e5 (26:55e5) text "What?" line "You stinker!" @@ -18,7 +18,7 @@ _UnnamedText_60632:: ; 995e5 (26:55e5) line "you too!" prompt -_UnnamedText_60637:: ; 99614 (26:5614) +_PokemonTower2Text_60637:: ; 99614 (26:5614) text $53, ": Well," line "look at all your" cont "wimpy #MON!" @@ -27,7 +27,7 @@ _UnnamedText_60637:: ; 99614 (26:5614) line "bit more!" prompt -_UnnamedText_6063c:: ; 99657 (26:5657) +_PokemonTower2Text_6063c:: ; 99657 (26:5657) text "How's your #DEX" line "coming, pal?" cont "I just caught a" diff --git a/text/maps/pokemon_tower_5f.asm b/text/maps/pokemon_tower_5f.asm index e6592bbe..95ce2f4b 100644 --- a/text/maps/pokemon_tower_5f.asm +++ b/text/maps/pokemon_tower_5f.asm @@ -62,7 +62,7 @@ _PokemonTower5AfterBattleText4:: ; 99a5e (26:5a5e) cont "my training!" done -_UnnamedText_60a43:: ; 99a8b (26:5a8b) +_PokemonTower5Text7:: ; 99a8b (26:5a8b) text "Entered purified," line "protected zone!" diff --git a/text/maps/pokemon_tower_6f.asm b/text/maps/pokemon_tower_6f.asm index 052a1514..08eb6b1a 100644 --- a/text/maps/pokemon_tower_6f.asm +++ b/text/maps/pokemon_tower_6f.asm @@ -1,10 +1,10 @@ -_UnnamedText_60c1f:: ; 99ac8 (26:5ac8) +_PokemonTower2Text_60c1f:: ; 99ac8 (26:5ac8) text "The GHOST was the" line "restless soul of" cont "CUBONE's mother!" done -_UnnamedText_60c24:: ; 99afc (26:5afc) +_PokemonTower2Text_60c24:: ; 99afc (26:5afc) text "The mother's soul" line "was calmed." @@ -55,7 +55,7 @@ _PokemonTower6AfterBattleText3:: ; 99beb (26:5beb) line "here?" done -_UnnamedText_60c56:: ; 99c01 (26:5c01) +_PokemonTower6Text6:: ; 99c01 (26:5c01) text "Be gone..." line "Intruders..." done diff --git a/text/maps/pokemon_tower_7f.asm b/text/maps/pokemon_tower_7f.asm index 311a1d54..235fc218 100644 --- a/text/maps/pokemon_tower_7f.asm +++ b/text/maps/pokemon_tower_7f.asm @@ -1,4 +1,4 @@ -_UnnamedText_60ec4:: ; 99c1a (26:5c1a) +_PokemonTower7Text_60ec4:: ; 99c1a (26:5c1a) text "MR.FUJI: Heh? You" line "came to save me?" diff --git a/text/maps/rocket_hideout_b4f.asm b/text/maps/rocket_hideout_b4f.asm index adbabe22..ecf01ec8 100644 --- a/text/maps/rocket_hideout_b4f.asm +++ b/text/maps/rocket_hideout_b4f.asm @@ -1,15 +1,15 @@ -_UnnamedText_4557a:: ; 8223e (20:623e) +_RocketHideout4Text_4557a:: ; 8223e (20:623e) text "So! I must say, I" line "am impressed you" cont "got here!" done -_UnnamedText_4557f:: ; 8226c (20:626c) +_RocketHideout4Text_4557f:: ; 8226c (20:626c) text "WHAT!" line "This cannot be!" prompt -_UnnamedText_45584:: ; 82283 (20:6283) +_RocketHideout4Text_45584:: ; 82283 (20:6283) text "I see that you" line "raise #MON" cont "with utmost care." @@ -68,7 +68,7 @@ _RocketHideout4EndBattleText4:: ; 82413 (20:6413) text "No!" prompt -_UnnamedText_455ec:: ; 82418 (20:6418) +_RocketHideout4Text_455ec:: ; 82418 (20:6418) text "Oh no! I dropped" line "the LIFT KEY!" done diff --git a/text/maps/rocket_hideout_elevator.asm b/text/maps/rocket_hideout_elevator.asm index 7b96f860..12fbad6d 100644 --- a/text/maps/rocket_hideout_elevator.asm +++ b/text/maps/rocket_hideout_elevator.asm @@ -1,4 +1,4 @@ -_UnnamedText_4578b:: ; 82438 (20:6438) +_RocketElevatorText_4578b:: ; 82438 (20:6438) text "It appears to" line "need a key.@@" diff --git a/text/maps/route_1.asm b/text/maps/route_1.asm index 9dfc35d0..c7db4d1c 100644 --- a/text/maps/route_1.asm +++ b/text/maps/route_1.asm @@ -12,19 +12,19 @@ _Route1ViridianMartSampleText:: ; 8d5bf (23:55bf) cont "Here you go!" prompt -_UnnamedText_1cae8:: ; 8d643 (23:5643) +_Route1Text_1cae8:: ; 8d643 (23:5643) text $52, " got" line "@" TX_RAM $cf4b text "!@@" -_UnnamedText_1caee:: ; 8d652 (23:5652) +_Route1Text_1caee:: ; 8d652 (23:5652) text "We also carry" line "# BALLs for" cont "catching #MON!" done -_UnnamedText_1caf3:: ; 8d67c (23:567c) +_Route1Text_1caf3:: ; 8d67c (23:567c) text "You have too much" line "stuff with you!" done diff --git a/text/maps/route_11_gate_upstairs.asm b/text/maps/route_11_gate_upstairs.asm index 9b329892..70c463ec 100644 --- a/text/maps/route_11_gate_upstairs.asm +++ b/text/maps/route_11_gate_upstairs.asm @@ -1,4 +1,4 @@ -_UnnamedText_494a3:: ; 8c689 (23:4689) +_Route11GateUpstairsText_494a3:: ; 8c689 (23:4689) text "There are items on" line "the ground that" cont "can't be seen." @@ -28,7 +28,7 @@ _BinocularsNoSnorlaxText:: line "view!" done -_UnnamedText_494d5:: ; 8c78b (23:478b) +_Route11GateUpstairsText_494d5:: ; 8c78b (23:478b) text "Looked into the" line "binoculars." diff --git a/text/maps/route_12.asm b/text/maps/route_12.asm index ae48ef25..ef71d279 100644 --- a/text/maps/route_12.asm +++ b/text/maps/route_12.asm @@ -3,14 +3,14 @@ _Route12Text1:: ; 9009e (24:409e) line "blocks the way!" done -_UnnamedText_596eb:: ; 900bf (24:40bf) +_Route12Text13:: ; 900bf (24:40bf) text "SNORLAX woke up!" para "It attacked in a" line "grumpy rage!" done -_UnnamedText_596f0:: ; 900ef (24:40ef) +_Route12Text14:: ; 900ef (24:40ef) text "SNORLAX calmed" line "down! With a big" cont "yawn, it returned" diff --git a/text/maps/route_12_gate_upstairs.asm b/text/maps/route_12_gate_upstairs.asm index e31e392c..3d22e389 100644 --- a/text/maps/route_12_gate_upstairs.asm +++ b/text/maps/route_12_gate_upstairs.asm @@ -27,14 +27,14 @@ _TM39NoRoomText:: ; 8c93c (23:493c) line "room for this." done -_UnnamedText_495b8:: ; 8c95a (23:495a) +_Route12GateUpstairsText_495b8:: ; 8c95a (23:495a) text "Looked into the" line "binoculars." para "A man fishing!" done -_UnnamedText_495c4:: ; 8c986 (23:4986) +_Route12GateUpstairsText_495c4:: ; 8c986 (23:4986) text "Looked into the" line "binoculars." diff --git a/text/maps/route_12_house.asm b/text/maps/route_12_house.asm index f15e0041..ed645a01 100644 --- a/text/maps/route_12_house.asm +++ b/text/maps/route_12_house.asm @@ -1,4 +1,4 @@ -_UnnamedText_564c0:: ; 8c9b3 (23:49b3) +_Route12HouseText_564c0:: ; 8c9b3 (23:49b3) text "I'm the FISHING" line "GURU's brother!" @@ -9,7 +9,7 @@ _UnnamedText_564c0:: ; 8c9b3 (23:49b3) line "fish?" done -_UnnamedText_564c5:: ; 8ca00 (23:4a00) +_Route12HouseText_564c5:: ; 8ca00 (23:4a00) text "Grand! I like" line "your style!" @@ -21,7 +21,7 @@ _UnnamedText_564c5:: ; 8ca00 (23:4a00) TX_RAM $cf4b text "!@@" -_UnnamedText_564ca:: ; 8ca4f (23:4a4f) +_Route12HouseText_564ca:: ; 8ca4f (23:4a4f) db $0 para "Fishing is a way" line "of life!" @@ -32,12 +32,12 @@ _UnnamedText_564ca:: ; 8ca4f (23:4a4f) cont "one!" done -_UnnamedText_564cf:: ; 8caa1 (23:4aa1) +_Route12HouseText_564cf:: ; 8caa1 (23:4aa1) text "Oh... That's so" line "disappointing..." done -_UnnamedText_564d4:: ; 8cac2 (23:4ac2) +_Route12HouseText_564d4:: ; 8cac2 (23:4ac2) text "Hello there," line $52, "!" @@ -51,7 +51,7 @@ _UnnamedText_564d4:: ; 8cac2 (23:4ac2) line "wherever you can!" done -_UnnamedText_564d9:: ; 8cb38 (23:4b38) +_Route12HouseText_564d9:: ; 8cb38 (23:4b38) text "Oh no!" para "I had a gift for" diff --git a/text/maps/route_15_gate_upstairs.asm b/text/maps/route_15_gate_upstairs.asm index df57afda..7207ecdf 100644 --- a/text/maps/route_15_gate_upstairs.asm +++ b/text/maps/route_15_gate_upstairs.asm @@ -1,4 +1,4 @@ -_UnnamedText_4968c:: ; 8cbac (23:4bac) +_Route15GateUpstairsText_4968c:: ; 8cbac (23:4bac) text "EXP.ALL gives" line "EXP points to all" cont "the #MON with" @@ -15,7 +15,7 @@ _UnnamedText_4968c:: ; 8cbac (23:4bac) cont "store it via PC." done -_UnnamedText_49698:: ; 8cc65 (23:4c65) +_Route15GateUpstairsText_49698:: ; 8cc65 (23:4c65) text "Looked into the" line "binoculars." diff --git a/text/maps/route_16.asm b/text/maps/route_16.asm index b46275f0..d98aaa12 100644 --- a/text/maps/route_16.asm +++ b/text/maps/route_16.asm @@ -95,14 +95,14 @@ _Route16Text7:: ; 91287 (24:5287) line "blocks the way!" done -_UnnamedText_59ab3:: ; 912a8 (24:52a8) +_Route16Text10:: ; 912a8 (24:52a8) text "SNORLAX woke up!" para "It attacked in a" line "grumpy rage!" done -_UnnamedText_59ab8:: ; 912d8 (24:52d8) +_Route16Text11:: ; 912d8 (24:52d8) text "With a big yawn," line "SNORLAX returned" cont "to the mountains!" diff --git a/text/maps/route_16_gate.asm b/text/maps/route_16_gate.asm index 22ac6788..2d3d5c62 100644 --- a/text/maps/route_16_gate.asm +++ b/text/maps/route_16_gate.asm @@ -1,17 +1,17 @@ -_UnnamedText_49777:: ; 8cca0 (23:4ca0) +_Route16GateText_49777:: ; 8cca0 (23:4ca0) text "No pedestrians" line "are allowed on" cont "CYCLING ROAD!" done -_UnnamedText_4977c:: ; 8cccd (23:4ccd) +_Route16GateText_4977c:: ; 8cccd (23:4ccd) text "CYCLING ROAD is a" line "downhill course" cont "by the sea. It's" cont "a great ride." done -_UnnamedText_49781:: ; 8cd0e (23:4d0e) +_Route16GateText_49781:: ; 8cd0e (23:4d0e) text "Excuse me! Wait" line "up please!" done diff --git a/text/maps/route_16_gate_upstairs.asm b/text/maps/route_16_gate_upstairs.asm index d4f1b32a..26767654 100644 --- a/text/maps/route_16_gate_upstairs.asm +++ b/text/maps/route_16_gate_upstairs.asm @@ -1,15 +1,15 @@ -_UnnamedText_49820:: ; 8cd49 (23:4d49) +_Route16GateUpstairsText_49820:: ; 8cd49 (23:4d49) text "I'm going for a" line "ride with my girl" cont "friend!" done -_UnnamedText_4982f:: ; 8cd73 (23:4d73) +_Route16GateUpstairsText_4982f:: ; 8cd73 (23:4d73) text "We're going" line "riding together!" done -_UnnamedText_4983b:: ; 8cd90 (23:4d90) +_Route16GateUpstairsText_4983b:: ; 8cd90 (23:4d90) text "Looked into the" line "binoculars." @@ -17,7 +17,7 @@ _UnnamedText_4983b:: ; 8cd90 (23:4d90) line "STORE!" done -_UnnamedText_49847:: ; 8cdc6 (23:4dc6) +_Route16GateUpstairsText_49847:: ; 8cdc6 (23:4dc6) text "Looked into the" line "binoculars." diff --git a/text/maps/route_16_house.asm b/text/maps/route_16_house.asm index 05b24865..c3099049 100644 --- a/text/maps/route_16_house.asm +++ b/text/maps/route_16_house.asm @@ -26,7 +26,7 @@ _HM02NoRoomText:: ; 8cebe (23:4ebe) line "room for this." done -_UnnamedText_1e652:: ; 8cee0 (23:4ee0) +_Route16HouseText_1e652:: ; 8cee0 (23:4ee0) text "FEAROW: Kyueen!" done diff --git a/text/maps/route_18_gate.asm b/text/maps/route_18_gate.asm index 9da68ac9..0298465d 100644 --- a/text/maps/route_18_gate.asm +++ b/text/maps/route_18_gate.asm @@ -1,15 +1,15 @@ -_UnnamedText_49928:: ; 8cef1 (23:4ef1) +_Route18GateText_49928:: ; 8cef1 (23:4ef1) text "You need a BICYCLE" line "for CYCLING ROAD!" done -_UnnamedText_4992d:: ; 8cf17 (23:4f17) +_Route18GateText_4992d:: ; 8cf17 (23:4f17) text "CYCLING ROAD is" line "all uphill from" cont "here." done -_UnnamedText_49932:: ; 8cf3e (23:4f3e) +_Route18GateText_49932:: ; 8cf3e (23:4f3e) text "Excuse me!" done diff --git a/text/maps/route_18_gate_upstairs.asm b/text/maps/route_18_gate_upstairs.asm index 3061ec56..59b92e6a 100644 --- a/text/maps/route_18_gate_upstairs.asm +++ b/text/maps/route_18_gate_upstairs.asm @@ -1,4 +1,4 @@ -_UnnamedText_49993:: ; 8cf4a (23:4f4a) +_Route18GateUpstairsText_49993:: ; 8cf4a (23:4f4a) text "Looked into the" line "binoculars." @@ -6,7 +6,7 @@ _UnnamedText_49993:: ; 8cf4a (23:4f4a) line "the west!" done -_UnnamedText_4999f:: ; 8cf83 (23:4f83) +_Route18GateUpstairsText_4999f:: ; 8cf83 (23:4f83) text "Looked into the" line "binoculars." diff --git a/text/maps/route_22.asm b/text/maps/route_22.asm index 7222bc5e..6a23f425 100644 --- a/text/maps/route_22.asm +++ b/text/maps/route_22.asm @@ -1,4 +1,4 @@ -_UnnamedText_511ad:: ; 922cd (24:62cd) +_Route22Text_511ad:: ; 922cd (24:62cd) text $53, ": Hey!" line $52, "!" @@ -17,7 +17,7 @@ _UnnamedText_511ad:: ; 922cd (24:62cd) cont "get any stronger?" done -_UnnamedText_511b2:: ; 9236f (24:636f) +_Route22Text_511b2:: ; 9236f (24:636f) text "I heard #MON" line "LEAGUE has many" cont "tough trainers!" @@ -31,13 +31,13 @@ _UnnamedText_511b2:: ; 9236f (24:636f) cont "a move on!" done -_UnnamedText_511b7:: ; 923f4 (24:63f4) +_Route22Text_511b7:: ; 923f4 (24:63f4) text "Awww!" line "You just lucked" cont "out!" prompt -_UnnamedText_511bc:: ; 92410 (24:6410) +_Route22Text_511bc:: ; 92410 (24:6410) text $53, ": What?" line "Why do I have 2" cont "#MON?" @@ -46,7 +46,7 @@ _UnnamedText_511bc:: ; 92410 (24:6410) cont "some more too!" prompt -_UnnamedText_511c1:: ; 92450 (24:6450) +_Route22Text_511c1:: ; 92450 (24:6450) text $53, ": What?" line $52, "! What a" cont "surprise to see" @@ -67,7 +67,7 @@ _UnnamedText_511c1:: ; 92450 (24:6450) para "Come on!" done -_UnnamedText_511c6:: ; 92506 (24:6506) +_Route22Text_511c6:: ; 92506 (24:6506) text "That loosened me" line "up! I'm ready for" cont "#MON LEAGUE!" @@ -80,14 +80,14 @@ _UnnamedText_511c6:: ; 92506 (24:6506) cont "here. Smell ya!" done -_UnnamedText_511cb:: ; 92583 (24:6583) +_Route22Text_511cb:: ; 92583 (24:6583) text "What!?" para "I was just" line "careless!" prompt -_UnnamedText_511d0:: ; 925a0 (24:65a0) +_Route22Text_511d0:: ; 925a0 (24:65a0) text $53, ": Hahaha!" line $52, "! That's" cont "your best? You're" diff --git a/text/maps/route_23.asm b/text/maps/route_23.asm index 7b6219a8..30b8e003 100644 --- a/text/maps/route_23.asm +++ b/text/maps/route_23.asm @@ -26,7 +26,7 @@ _VictoryRoadGuardText2:: ; 92696 (24:6696) TX_RAM $cd6d text "!@@" -_UnnamedText_513a3:: ; 926dd (24:66dd) +_VictoryRoadGuardText_513a3:: ; 926dd (24:66dd) db $0 para "OK then! Please," line "go right ahead!" diff --git a/text/maps/route_24_1.asm b/text/maps/route_24_1.asm index 4049e5f0..ec32744d 100644 --- a/text/maps/route_24_1.asm +++ b/text/maps/route_24_1.asm @@ -1,26 +1,26 @@ -_UnnamedText_51510:: ; 92721 (24:6721) +_Route24Text_51510:: ; 92721 (24:6721) text "Congratulations!" line "You beat our 5" cont "contest trainers!@@" -_UnnamedText_51515:: ; 92755 (24:6755) +_Route24Text_51515:: ; 92755 (24:6755) db $0 para "You just earned a" line "fabulous prize!" prompt -_UnnamedText_5151a:: ; 92779 (24:6779) +_Route24Text_5151a:: ; 92779 (24:6779) text $52, " received" line "a @" TX_RAM $cf4b text "!@@" -_UnnamedText_51521:: ; 9278f (24:678f) +_Route24Text_51521:: ; 9278f (24:678f) text "You don't have" line "any room!" done -_UnnamedText_51526:: ; 927a8 (24:67a8) +_Route24Text_51526:: ; 927a8 (24:67a8) text "By the way, would" line "you like to join" cont "TEAM ROCKET?" @@ -46,12 +46,12 @@ _UnnamedText_51526:: ; 927a8 (24:67a8) cont "refuse!" done -_UnnamedText_5152b:: ; 9288a (24:688a) +_Route24Text_5152b:: ; 9288a (24:688a) text "Arrgh!" line "You are good!" prompt -_UnnamedText_51530:: ; 928a0 (24:68a0) +_Route24Text_51530:: ; 928a0 (24:68a0) text "With your ability," line "you could become" cont "a top leader in" diff --git a/text/maps/route_2_gate.asm b/text/maps/route_2_gate.asm index 6c2ba168..e8337a1f 100644 --- a/text/maps/route_2_gate.asm +++ b/text/maps/route_2_gate.asm @@ -1,4 +1,4 @@ -_UnnamedText_5d616:: ; 8a7fc (22:67fc) +_Route2GateText_5d616:: ; 8a7fc (22:67fc) text "The HM FLASH" line "lights even the" cont "darkest dungeons." diff --git a/text/maps/safari_zone_entrance.asm b/text/maps/safari_zone_entrance.asm index 76c61b20..119d2301 100644 --- a/text/maps/safari_zone_entrance.asm +++ b/text/maps/safari_zone_entrance.asm @@ -3,7 +3,7 @@ _SafariZoneEntranceText1:: ; 9e6c7 (27:66c7) line "SAFARI ZONE!" done -UnnamedText_9e6e4:: ; 9e6e4 (27:66e4) +SafariZoneEntranceText_9e6e4:: ; 9e6e4 (27:66e4) text "For just ¥500," line "you can catch all" cont "the #MON you" @@ -12,7 +12,7 @@ UnnamedText_9e6e4:: ; 9e6e4 (27:66e4) para "Would you like to" line "join the hunt?@@" -UnnamedText_9e747:: ; 9e747 (27:6747) +SafariZoneEntranceText_9e747:: ; 9e747 (27:6747) text "That'll be ¥500" line "please!" @@ -23,7 +23,7 @@ UnnamedText_9e747:: ; 9e747 (27:6747) para $52, " received" line "30 SAFARI BALLs!@@" -_UnnamedText_75360:: ; 9e79f (27:679f) +_SafariZoneEntranceText_75360:: ; 9e79f (27:679f) db $0 para "We'll call you on" line "the PA when you" @@ -31,41 +31,41 @@ _UnnamedText_75360:: ; 9e79f (27:679f) cont "or SAFARI BALLs!" done -_UnnamedText_75365:: ; 9e7e3 (27:67e3) +_SafariZoneEntranceText_75365:: ; 9e7e3 (27:67e3) text "OK! Please come" line "again!" done -_UnnamedText_7536a:: ; 9e7fb (27:67fb) +_SafariZoneEntranceText_7536a:: ; 9e7fb (27:67fb) text "Oops! Not enough" line "money!" done -UnnamedText_9e814:: ; 9e814 (27:6814) +SafariZoneEntranceText_9e814:: ; 9e814 (27:6814) text "Leaving early?@@" -_UnnamedText_753bb:: ; 9e825 (27:6825) +_SafariZoneEntranceText_753bb:: ; 9e825 (27:6825) text "Please return any" line "SAFARI BALLs you" cont "have left." done -_UnnamedText_753c0:: ; 9e854 (27:6854) +_SafariZoneEntranceText_753c0:: ; 9e854 (27:6854) text "Good Luck!" done -_UnnamedText_753c5:: ; 9e860 (27:6860) +_SafariZoneEntranceText_753c5:: ; 9e860 (27:6860) text "Did you get a" line "good haul?" cont "Come again!" done -_UnnamedText_753e6:: ; 9e886 (27:6886) +_SafariZoneEntranceText_753e6:: ; 9e886 (27:6886) text "Hi! Is it your" line "first time here?" done -_UnnamedText_753eb:: ; 9e8a7 (27:68a7) +_SafariZoneEntranceText_753eb:: ; 9e8a7 (27:68a7) text "SAFARI ZONE has 4" line "zones in it." @@ -87,7 +87,7 @@ _UnnamedText_753eb:: ; 9e8a7 (27:68a7) cont "new #MON!" done -_UnnamedText_753f0:: ; 9e993 (27:6993) +_SafariZoneEntranceText_753f0:: ; 9e993 (27:6993) text "Sorry, you're a" line "regular here!" done diff --git a/text/maps/safari_zone_secret_house.asm b/text/maps/safari_zone_secret_house.asm index 0d9511e2..b7b391be 100644 --- a/text/maps/safari_zone_secret_house.asm +++ b/text/maps/safari_zone_secret_house.asm @@ -1,4 +1,4 @@ -_UnnamedText_4a350:: ; 858a4 (21:58a4) +_SecretHouseText_4a350:: ; 858a4 (21:58a4) text "Ah! Finally!" para "You're the first" diff --git a/text/maps/saffron_gates.asm b/text/maps/saffron_gates.asm index f084334c..0212a7dd 100644 --- a/text/maps/saffron_gates.asm +++ b/text/maps/saffron_gates.asm @@ -1,4 +1,4 @@ -_UnnamedText_1dfe7:: ; 8aa5c (22:6a5c) +_SaffronGateText_1dfe7:: ; 8aa5c (22:6a5c) text "I'm on guard duty." line "Gee, I'm thirsty," cont "though!" @@ -7,7 +7,7 @@ _UnnamedText_1dfe7:: ; 8aa5c (22:6a5c) line "the road's closed." done -_UnnamedText_8aaa9:: ; 8aaa9 (22:6aa9) +_SaffronGateText_8aaa9:: ; 8aaa9 (22:6aa9) text "Whoa, boy!" line "I'm parched!" cont "..." @@ -15,7 +15,7 @@ _UnnamedText_8aaa9:: ; 8aaa9 (22:6aa9) cont "this drink?" cont "Gee, thanks!@@" -_UnnamedText_1dff1:: ; 8aaef (22:6aef) +_SaffronGateText_1dff1:: ; 8aaef (22:6aef) db $0 para "..." line "Glug glug..." @@ -30,7 +30,7 @@ _UnnamedText_1dff1:: ; 8aaef (22:6aef) cont "the other guards!" done -_UnnamedText_1dff6:: ; 8ab74 (22:6b74) +_SaffronGateText_1dff6:: ; 8ab74 (22:6b74) text "Hi, thanks for" line "the cool drinks!" done diff --git a/text/maps/saffron_gym.asm b/text/maps/saffron_gym.asm index c2426eeb..d85e1b1a 100644 --- a/text/maps/saffron_gym.asm +++ b/text/maps/saffron_gym.asm @@ -1,4 +1,4 @@ -_UnnamedText_5d162:: ; a1bb4 (28:5bb4) +_SaffronGymText_5d162:: ; a1bb4 (28:5bb4) text "I had a vision of" line "your arrival!" @@ -16,7 +16,7 @@ _UnnamedText_5d162:: ; a1bb4 (28:5bb4) cont "you my powers!" done -_UnnamedText_5d167:: ; a1c73 (28:5c73) +_SaffronGymText_5d167:: ; a1c73 (28:5c73) text "I'm" line "shocked!" cont "But, a loss is a" @@ -29,14 +29,14 @@ _UnnamedText_5d167:: ; a1c73 (28:5c73) para "You earned the" line "MARSHBADGE!@@" -_UnnamedText_5d16e:: ; a1cdc (28:5cdc) +_SaffronGymText_5d16e:: ; a1cdc (28:5cdc) text "Everyone has" line "psychic power!" cont "People just don't" cont "realize it!" done -_UnnamedText_5d173:: ; a1d16 (28:5d16) +_SaffronGymText_5d173:: ; a1d16 (28:5d16) text "The MARSHBADGE" line "makes #MON up" cont "to L70 obey you!" @@ -71,7 +71,7 @@ _TM46NoRoomText:: ; a1e25 (28:5e25) line "of other items!" done -_UnnamedText_5d1e6:: ; a1e48 (28:5e48) +_SaffronGymText_5d1e6:: ; a1e48 (28:5e48) text "Yo! Champ in" line "making!" @@ -88,7 +88,7 @@ _UnnamedText_5d1e6:: ; a1e48 (28:5e48) cont "even aim a punch!" done -_UnnamedText_5d1eb:: ; a1ef0 (28:5ef0) +_SaffronGymText_5d1eb:: ; a1ef0 (28:5ef0) text "Psychic power," line "huh?" diff --git a/text/maps/silph_co_10f.asm b/text/maps/silph_co_10f.asm index 6c9727de..a5a3877e 100644 --- a/text/maps/silph_co_10f.asm +++ b/text/maps/silph_co_10f.asm @@ -1,9 +1,9 @@ -_UnnamedText_5a1d3:: ; 84d8d (21:4d8d) +_SilphCo10Text_5a1d3:: ; 84d8d (21:4d8d) text "Waaaaa!" cont "I'm scared!" done -_UnnamedText_5a1d8:: ; 84da1 (21:4da1) +_SilphCo10Text_5a1d8:: ; 84da1 (21:4da1) text "Please keep quiet" line "about my crying!" done diff --git a/text/maps/silph_co_11f.asm b/text/maps/silph_co_11f.asm index 0158a7ca..fdfcd313 100644 --- a/text/maps/silph_co_11f.asm +++ b/text/maps/silph_co_11f.asm @@ -25,7 +25,7 @@ _ReceivedSilphCoMasterBallText:: ; 84f63 (21:4f63) TX_RAM $cf4b text "!@@" -_UnnamedText_6231c:: ; 84f74 (21:4f74) +_SilphCo10Text_6231c:: ; 84f74 (21:4f74) text "PRESIDENT: You" line "can't buy that" cont "anywhere!" @@ -74,12 +74,12 @@ _SilphCo11Text3:: ; 85075 (21:5075) line "world of pain!" done -_UnnamedText_62330:: ; 85119 (21:5119) +_SilphCo10Text_62330:: ; 85119 (21:5119) text "Arrgh!!" line "I lost again!?" prompt -_UnnamedText_62335:: ; 85131 (21:5131) +_SilphCo10Text_62335:: ; 85131 (21:5131) text "Blast it all!" line "You ruined our" cont "plans for SILPH!" @@ -128,7 +128,7 @@ _SilphCo11AfterBattleText2:: ; 8526a (21:526a) cont "#MON tough!" done -_UnnamedText_6237b:: ; 8529a (21:529a) +_SilphCo10Text_6237b:: ; 8529a (21:529a) text "The monitor has" line "#MON on it!" done diff --git a/text/maps/silph_co_2f.asm b/text/maps/silph_co_2f.asm index a7535af6..b8924ef1 100644 --- a/text/maps/silph_co_2f.asm +++ b/text/maps/silph_co_2f.asm @@ -1,4 +1,4 @@ -_UnnamedText_59ded:: ; 82454 (20:6454) +_SilphCo2Text_59ded:: ; 82454 (20:6454) text "Eeek!" line "No! Stop! Help!" diff --git a/text/maps/silph_co_3f.asm b/text/maps/silph_co_3f.asm index 34116b5a..25d68018 100644 --- a/text/maps/silph_co_3f.asm +++ b/text/maps/silph_co_3f.asm @@ -1,9 +1,9 @@ -_UnnamedText_59ff9:: ; 826b9 (20:66b9) +_SilphCo3Text_59ff9:: ; 826b9 (20:66b9) text "I work for SILPH." line "What should I do?" done -_UnnamedText_59ffe:: ; 826de (20:66de) +_SilphCo3Text_59ffe:: ; 826de (20:66de) text $52, "! You and" line "your #MON" cont "saved us!" diff --git a/text/maps/silph_co_4f.asm b/text/maps/silph_co_4f.asm index 452a05a8..309da28c 100644 --- a/text/maps/silph_co_4f.asm +++ b/text/maps/silph_co_4f.asm @@ -1,9 +1,9 @@ -_UnnamedText_19de0:: ; 827e4 (20:67e4) +_SilphCo4Text_19de0:: ; 827e4 (20:67e4) text "Sssh! Can't you" line "see I'm hiding?" done -_UnnamedText_19de5:: ; 82803 (20:6803) +_SilphCo4Text_19de5:: ; 82803 (20:6803) text "Huh? TEAM ROCKET" line "is gone?" done diff --git a/text/maps/silph_co_5f_1.asm b/text/maps/silph_co_5f_1.asm index f37a5cd7..8a406e67 100644 --- a/text/maps/silph_co_5f_1.asm +++ b/text/maps/silph_co_5f_1.asm @@ -1,11 +1,11 @@ -_UnnamedText_1a010:: ; 82936 (20:6936) +_SilphCo5Text_1a010:: ; 82936 (20:6936) text "TEAM ROCKET is" line "in an uproar over" cont "some intruder." cont "That's you right?" done -_UnnamedText_1a015:: ; 82978 (20:6978) +_SilphCo5Text_1a015:: ; 82978 (20:6978) text "TEAM ROCKET took" line "off! You're our" cont "hero! Thank you!" diff --git a/text/maps/silph_co_6f.asm b/text/maps/silph_co_6f.asm index 5f74da46..b3bf71b6 100644 --- a/text/maps/silph_co_6f.asm +++ b/text/maps/silph_co_6f.asm @@ -1,55 +1,55 @@ -_UnnamedText_1a24a:: ; 84176 (21:4176) +_SilphCo6Text_1a24a:: ; 84176 (21:4176) text "The ROCKETs came" line "and took over the" cont "building!" done -_UnnamedText_1a24f:: ; 841a4 (21:41a4) +_SilphCo6Text_1a24f:: ; 841a4 (21:41a4) text "Well, better get" line "back to work!" done -_UnnamedText_1a261:: ; 841c4 (21:41c4) +_SilphCo6Text_1a261:: ; 841c4 (21:41c4) text "Oh dear, oh dear." line "Help me please!" done -_UnnamedText_1a266:: ; 841e7 (21:41e7) +_SilphCo6Text_1a266:: ; 841e7 (21:41e7) text "We got engaged!" line "Heheh!" done -_UnnamedText_1a278:: ; 841ff (21:41ff) +_SilphCo6Text_1a278:: ; 841ff (21:41ff) text "Look at him! He's" line "such a coward!" done -_UnnamedText_1a27d:: ; 84220 (21:4220) +_SilphCo6Text_1a27d:: ; 84220 (21:4220) text "I feel so sorry" line "for him, I have" cont "to marry him!" done -_UnnamedText_1a28f:: ; 8424f (21:424f) +_SilphCo6Text_1a28f:: ; 8424f (21:424f) text "TEAM ROCKET is" line "trying to conquer" cont "the world with" cont "#MON!" done -_UnnamedText_1a294:: ; 84286 (21:4286) +_SilphCo6Text_1a294:: ; 84286 (21:4286) text "TEAM ROCKET ran" line "because of you!" done -_UnnamedText_1a2a6:: ; 842a7 (21:42a7) +_SilphCo6Text_1a2a6:: ; 842a7 (21:42a7) text "They must have" line "targeted SILPH" cont "for our #MON" cont "products." done -_UnnamedText_1a2ab:: ; 842dd (21:42dd) +_SilphCo6Text_1a2ab:: ; 842dd (21:42dd) text "Come work for" line "SILPH when you" cont "get older!" diff --git a/text/maps/silph_co_7f.asm b/text/maps/silph_co_7f.asm index 4fca7b90..b3c92aaf 100644 --- a/text/maps/silph_co_7f.asm +++ b/text/maps/silph_co_7f.asm @@ -39,7 +39,7 @@ _LaprasGuySavedText:: line "Thank you!" done -_UnnamedText_51e00:: +_SilphCo7Text_51e00:: text "TEAM ROCKET was" line "after the MASTER" cont "BALL which will" @@ -53,27 +53,27 @@ _CanceledMasterBallText:: cont "of TEAM ROCKET." done -_UnnamedText_51e23:: +_SilphCo7Text_51e23:: text "It would be bad" line "if TEAM ROCKET" cont "took over SILPH" cont "or our #MON!" done -_UnnamedText_51e28:: +_SilphCo7Text_51e28:: text "Wow! You chased" line "off TEAM ROCKET" cont "all by yourself?" done -_UnnamedText_51e46:: +_SilphCo7Text_51e46:: text "You! It's really" line "dangerous here!" cont "You came to save" cont "me? You can't!" done -_UnnamedText_51e4b:: +_SilphCo7Text_51e4b:: text "Safe at last!" line "Oh thank you!" done @@ -144,3 +144,67 @@ _SilphCo7AfterBattleText4:: ; 84861 (21:4861) cont "gets ticked off!" done +_SilphCo7Text_51ebe:: ; 8488d (21:488d) + text $53, ": What" + line "kept you ", $52, "?" + done + +_SilphCo7Text_51ec3:: ; 848a2 (21:48a2) + text $53, ": Hahaha!" + line "I thought you'd" + cont "turn up if I" + cont "waited here!" + + para "I guess TEAM" + line "ROCKET slowed you" + cont "down! Not that I" + cont "care!" + + para "I saw you in" + line "SAFFRON, so I" + cont "decided to see if" + cont "you got better!" + done + +_SilphCo7Text_51ec8:: ; 8494a (21:494a) + text "Oh ho!" + line "So, you are ready" + cont "for BOSS ROCKET!" + prompt + +_SilphCo7Text_51ecd:: ; 84975 (21:4975) + text $53, ": How can" + line "I put this?" + + para "You're not good" + line "enough to play" + cont "with us big boys!" + prompt + +_SilphCo7Text_51ed2:: ; 849bd (21:49bd) + text "Well, ", $52, "!" + + para "I'm moving on up" + line "and ahead!" + + para "By checking my" + line "#DEX, I'm" + cont "starting to see" + cont "what's strong and" + cont "how they evolve!" + + para "I'm going to the" + line "#MON LEAGUE" + cont "to boot out the" + cont "ELITE FOUR!" + + para "I'll become the" + line "world's most" + cont "powerful trainer!" + + para $52, ", well" + line "good luck to you!" + cont "Don't sweat it!" + cont "Smell ya!" + done + diff --git a/text/maps/silph_co_8f.asm b/text/maps/silph_co_8f.asm index 657e45cd..900e134f 100644 --- a/text/maps/silph_co_8f.asm +++ b/text/maps/silph_co_8f.asm @@ -1,73 +1,9 @@ -_UnnamedText_51ebe:: ; 8488d (21:488d) - text $53, ": What" - line "kept you ", $52, "?" - done - -_UnnamedText_51ec3:: ; 848a2 (21:48a2) - text $53, ": Hahaha!" - line "I thought you'd" - cont "turn up if I" - cont "waited here!" - - para "I guess TEAM" - line "ROCKET slowed you" - cont "down! Not that I" - cont "care!" - - para "I saw you in" - line "SAFFRON, so I" - cont "decided to see if" - cont "you got better!" - done - -_UnnamedText_51ec8:: ; 8494a (21:494a) - text "Oh ho!" - line "So, you are ready" - cont "for BOSS ROCKET!" - prompt - -_UnnamedText_51ecd:: ; 84975 (21:4975) - text $53, ": How can" - line "I put this?" - - para "You're not good" - line "enough to play" - cont "with us big boys!" - prompt - -_UnnamedText_51ed2:: ; 849bd (21:49bd) - text "Well, ", $52, "!" - - para "I'm moving on up" - line "and ahead!" - - para "By checking my" - line "#DEX, I'm" - cont "starting to see" - cont "what's strong and" - cont "how they evolve!" - - para "I'm going to the" - line "#MON LEAGUE" - cont "to boot out the" - cont "ELITE FOUR!" - - para "I'll become the" - line "world's most" - cont "powerful trainer!" - - para $52, ", well" - line "good luck to you!" - cont "Don't sweat it!" - cont "Smell ya!" - done - -_UnnamedText_565be:: ; 84ac4 (21:4ac4) +_SilphCo8Text_565be:: ; 84ac4 (21:4ac4) text "I wonder if SILPH" line "is finished..." done -_UnnamedText_565c3:: ; 84ae6 (21:4ae6) +_SilphCo8Text_565c3:: ; 84ae6 (21:4ae6) text "Thanks for saving" line "us!" done diff --git a/text/maps/silph_co_9f.asm b/text/maps/silph_co_9f.asm index e59c911b..6854b081 100644 --- a/text/maps/silph_co_9f.asm +++ b/text/maps/silph_co_9f.asm @@ -1,14 +1,14 @@ -_UnnamedText_5d8e5:: ; 84c0b (21:4c0b) +_SilphCo9Text_5d8e5:: ; 84c0b (21:4c0b) text "You look tired!" line "You should take a" cont "quick nap!" prompt -_UnnamedText_5d8ea:: ; 84c39 (21:4c39) +_SilphCo9Text_5d8ea:: ; 84c39 (21:4c39) text "Don't give up!" done -_UnnamedText_5d8ef:: ; 84c48 (21:4c48) +_SilphCo9Text_5d8ef:: ; 84c48 (21:4c48) text "Thank you so" line "much!" done diff --git a/text/maps/ss_anne_5.asm b/text/maps/ss_anne_5.asm index 7b95f50d..2fdc5dd8 100644 --- a/text/maps/ss_anne_5.asm +++ b/text/maps/ss_anne_5.asm @@ -16,35 +16,35 @@ _SSAnne5Text3:: ; 80fda (20:4fda) line "get some air." done -_SSAnneBattleText1:: ; 8100b (20:500b) +_SSAnne5BattleText1:: ; 8100b (20:500b) text "Hey matey!" para "Let's do a little" line "jig!" done -_SSAnneEndBattleText1:: ; 8102d (20:502d) +_SSAnne5EndBattleText1:: ; 8102d (20:502d) text "You're" line "impressive!" prompt -_SSAnneAfterBattleText1:: ; 81040 (20:5040) +_SSAnne5AfterBattleText1:: ; 81040 (20:5040) text "How many kinds of" line "#MON do you" cont "think there are?" done -_SSAnneBattleText2:: ; 81070 (20:5070) +_SSAnne5BattleText2:: ; 81070 (20:5070) text "Ahoy there!" line "Are you seasick?" done -_SSAnneEndBattleText2:: ; 8108e (20:508e) +_SSAnne5EndBattleText2:: ; 8108e (20:508e) text "I was" line "just careless!" prompt -_SSAnneAfterBattleText2:: ; 810a4 (20:50a4) +_SSAnne5AfterBattleText2:: ; 810a4 (20:50a4) text "My Pa said there" line "are 100 kinds of" cont "#MON. I think" diff --git a/text/maps/ss_anne_6.asm b/text/maps/ss_anne_6.asm index f93e0378..5909c8b9 100644 --- a/text/maps/ss_anne_6.asm +++ b/text/maps/ss_anne_6.asm @@ -39,14 +39,14 @@ _SSAnne6Text6:: ; 811c9 (20:51c9) cont "Snivel..." done -_UnnamedText_61807:: ; 81203 (20:5203) +_SSAnne6Text_61807:: ; 81203 (20:5203) text "Er-hem! Indeed I" line "am le CHEF!" para "Le main course is" prompt -_UnnamedText_6180c:: ; 81233 (20:5233) +_SSAnne6Text_6180c:: ; 81233 (20:5233) text "Salmon du Salad!" para "Les guests may" @@ -54,14 +54,14 @@ _UnnamedText_6180c:: ; 81233 (20:5233) cont "again, however!" done -_UnnamedText_61811:: ; 81273 (20:5273) +_SSAnne6Text_61811:: ; 81273 (20:5273) text "Eels au Barbecue!" para "Les guests will" line "mutiny, I fear." done -_UnnamedText_61816:: ; 812a6 (20:52a6) +_SSAnne6Text_61816:: ; 812a6 (20:52a6) text "Prime Beef Steak!" para "But, have I enough" diff --git a/text/maps/ss_anne_7.asm b/text/maps/ss_anne_7.asm index 39b1ad70..9e87cdf5 100644 --- a/text/maps/ss_anne_7.asm +++ b/text/maps/ss_anne_7.asm @@ -36,7 +36,7 @@ _ReceivedHM01Text:: ; 8140d (20:540d) TX_RAM $cf4b text "!@@" -_UnnamedText_61932:: ; 8141c (20:541c) +_SSAnne7Text_61932:: ; 8141c (20:541c) text "CAPTAIN: Whew!" para "Now that I'm not" diff --git a/text/maps/ss_anne_8.asm b/text/maps/ss_anne_8.asm index 30d1614d..5087c34f 100644 --- a/text/maps/ss_anne_8.asm +++ b/text/maps/ss_anne_8.asm @@ -30,7 +30,7 @@ _SSAnne8EndBattleText2:: ; 81582 (20:5582) line "You rude child!" prompt -_UnnamedText_61a24:: ; 8159a (20:559a) +_SSAnne8Text_61a24:: ; 8159a (20:559a) text "I wish to be left" line "alone! Get out!" done diff --git a/text/maps/ss_anne_9.asm b/text/maps/ss_anne_9.asm index 79bc8cbf..e133fc2c 100644 --- a/text/maps/ss_anne_9.asm +++ b/text/maps/ss_anne_9.asm @@ -1,4 +1,4 @@ -_UnnamedText_61bf2:: ; 81799 (20:5799) +_SSAnne9Text_61bf2:: ; 81799 (20:5799) text "In all my travels" line "I've never seen" cont "any #MON sleep" @@ -8,19 +8,19 @@ _UnnamedText_61bf2:: ; 81799 (20:5799) line "like this!" prompt -_UnnamedText_61c01:: ; 817f5 (20:57f5) +_SSAnne9Text_61c01:: ; 817f5 (20:57f5) text "Ah yes, I have" line "seen some #MON" cont "ferry people" cont "across the water!" done -_UnnamedText_61c10:: ; 81833 (20:5833) +_SSAnne9Text_61c10:: ; 81833 (20:5833) text "#MON can CUT" line "down small bushes." done -_UnnamedText_61c1f:: ; 81854 (20:5854) +_SSAnne9Text_61c1f:: ; 81854 (20:5854) text "Have you gone to" line "the SAFARI ZONE" cont "in FUCHSIA CITY?" @@ -29,19 +29,19 @@ _UnnamedText_61c1f:: ; 81854 (20:5854) line "kinds of #MON!!" done -_UnnamedText_61c2e:: ; 818a8 (20:58a8) +_SSAnne9Text_61c2e:: ; 818a8 (20:58a8) text "Me and my Daddy" line "think the SAFARI" cont "ZONE is awesome!" done -_UnnamedText_61c3d:: ; 818db (20:58db) +_SSAnne9Text_61c3d:: ; 818db (20:58db) text "The CAPTAIN looked" line "really sick and" cont "pale!" done -_UnnamedText_61c4c:: ; 81905 (20:5905) +_SSAnne9Text_61c4c:: ; 81905 (20:5905) text "I hear many people" line "get seasick!" done diff --git a/text/maps/vermilion_city.asm b/text/maps/vermilion_city.asm index 48cfa399..9c27bf64 100644 --- a/text/maps/vermilion_city.asm +++ b/text/maps/vermilion_city.asm @@ -7,13 +7,13 @@ _VermilionCityText1:: ; a5668 (29:5668) cont "toxic sludge!" done -_UnnamedText_198a7:: ; a56b5 (29:56b5) +_VermilionCityText_198a7:: ; a56b5 (29:56b5) text "Did you see S.S." line "ANNE moored in" cont "the harbor?" done -_UnnamedText_198ac:: ; a56e2 (29:56e2) +_VermilionCityText_198ac:: ; a56e2 (29:56e2) text "So, S.S.ANNE has" line "departed!" diff --git a/text/maps/vermilion_fishing_house.asm b/text/maps/vermilion_fishing_house.asm index 76b5c209..5ed59033 100644 --- a/text/maps/vermilion_fishing_house.asm +++ b/text/maps/vermilion_fishing_house.asm @@ -1,4 +1,4 @@ -_UnnamedText_560b1:: ; 9c510 (27:4510) +_VermilionHouse2Text_560b1:: ; 9c510 (27:4510) text "I'm the FISHING" line "GURU!" @@ -9,7 +9,7 @@ _UnnamedText_560b1:: ; 9c510 (27:4510) line "fish?" done -_UnnamedText_560b6:: ; 9c554 (27:4554) +_VermilionHouse2Text_560b6:: ; 9c554 (27:4554) text "Grand! I like" line "your style!" @@ -21,7 +21,7 @@ _UnnamedText_560b6:: ; 9c554 (27:4554) TX_RAM $cf4b text "!@@" -_UnnamedText_560bb:: ; 9c5a4 (27:45a4) +_VermilionHouse2Text_560bb:: ; 9c5a4 (27:45a4) db $0 para "Fishing is a way" line "of life!" @@ -32,12 +32,12 @@ _UnnamedText_560bb:: ; 9c5a4 (27:45a4) cont "one, young one!" done -_UnnamedText_560c0:: ; 9c601 (27:4601) +_VermilionHouse2Text_560c0:: ; 9c601 (27:4601) text "Oh... That's so" line "disappointing..." done -_UnnamedText_560c5:: ; 9c622 (27:4622) +_VermilionHouse2Text_560c5:: ; 9c622 (27:4622) text "Hello there," line $52, "!" @@ -45,7 +45,7 @@ _UnnamedText_560c5:: ; 9c622 (27:4622) line "biting?" done -_UnnamedText_560ca:: ; 9c64c (27:464c) +_VermilionHouse2Text_560ca:: ; 9c64c (27:464c) text "Oh no!" para "You have no room" diff --git a/text/maps/vermilion_gym_1.asm b/text/maps/vermilion_gym_1.asm index 29807bcb..10868bd4 100644 --- a/text/maps/vermilion_gym_1.asm +++ b/text/maps/vermilion_gym_1.asm @@ -1,4 +1,4 @@ -_UnnamedText_5cb6d:: ; 9aaa5 (26:6aa5) +_VermilionGymText_5cb6d:: ; 9aaa5 (26:6aa5) text "Hey, kid! What do" line "you think you're" cont "doing here?" diff --git a/text/maps/vermilion_gym_2.asm b/text/maps/vermilion_gym_2.asm index 8b40d630..28304f37 100644 --- a/text/maps/vermilion_gym_2.asm +++ b/text/maps/vermilion_gym_2.asm @@ -1,4 +1,4 @@ -_UnnamedText_5cb72:: ; 9c000 (27:4000) +_VermilionGymText_5cb72:: ; 9c000 (27:4000) text "A little word of" line "advice, kid!" @@ -10,7 +10,7 @@ _UnnamedText_5cb72:: ; 9c000 (27:4000) cont "type #MON!" done -_UnnamedText_5cb77:: ; 9c069 (27:4069) +_VermilionGymText_5cb77:: ; 9c069 (27:4069) text "The THUNDERBADGE" line "cranks up your" cont "#MON's SPEED!" @@ -111,7 +111,7 @@ _VermilionGymAfterBattleText3:: ; 9c2c0 (27:42c0) cont "next to it!" done -_UnnamedText_5cbf4:: ; 9c32b (27:432b) +_VermilionGymText_5cbf4:: ; 9c32b (27:432b) text "Yo! Champ in" line "making!" @@ -137,7 +137,7 @@ _UnnamedText_5cbf4:: ; 9c32b (27:432b) cont "get to him!" done -_UnnamedText_5cbf9:: ; 9c429 (27:4429) +_VermilionGymText_5cbf9:: ; 9c429 (27:4429) text "Whew! That match" line "was electric!" done diff --git a/text/maps/viridian_city.asm b/text/maps/viridian_city.asm index a2a15caf..7ff2d71d 100644 --- a/text/maps/viridian_city.asm +++ b/text/maps/viridian_city.asm @@ -9,7 +9,7 @@ _ViridianCityText1:: ; a43cc (29:43cc) cont "time, anywhere!" done -_UnnamedText_19122:: ; a4437 (29:4437) +_ViridianCityText_19122:: ; a4437 (29:4437) text "This #MON GYM" line "is always closed." @@ -17,23 +17,23 @@ _UnnamedText_19122:: ; a4437 (29:4437) line "LEADER is?" done -_UnnamedText_19127:: ; a4474 (29:4474) +_ViridianCityText_19127:: ; a4474 (29:4474) text "VIRIDIAN GYM's" line "LEADER returned!" done -_UnnamedText_1914d:: ; a4494 (29:4494) +_ViridianCityText_1914d:: ; a4494 (29:4494) text "You want to know" line "about the 2 kinds" cont "of caterpillar" cont "#MON?" done -_UnnamedText_19152:: ; a44cd (29:44cd) +_ViridianCityText_19152:: ; a44cd (29:44cd) text "Oh, OK then!" done -_UnnamedText_19157:: ; a44db (29:44db) +_ViridianCityText_19157:: ; a44db (29:44db) text "CATERPIE has no" line "poison, but" cont "WEEDLE does." @@ -42,14 +42,14 @@ _UnnamedText_19157:: ; a44db (29:44db) line "POISON STING!" done -_UnnamedText_19175:: ; a4525 (29:4525) +_ViridianCityText_19175:: ; a4525 (29:4525) text "Oh Grandpa! Don't" line "be so mean!" cont "He hasn't had his" cont "coffee yet." done -_UnnamedText_1917a:: ; a4560 (29:4560) +_ViridianCityText_1917a:: ; a4560 (29:4560) text "When I go shop in" line "PEWTER CITY, I" cont "have to take the" @@ -57,7 +57,7 @@ _UnnamedText_1917a:: ; a4560 (29:4560) cont "VIRIDIAN FOREST." done -_UnnamedText_19191:: ; a45b5 (29:45b5) +_ViridianCityText_19191:: ; a45b5 (29:45b5) text "You can't go" line "through here!" @@ -65,7 +65,7 @@ _UnnamedText_19191:: ; a45b5 (29:45b5) line "property!" done -_UnnamedText_191ca:: ; a45ea (29:45ea) +_ViridianCityText_191ca:: ; a45ea (29:45ea) text "Yawn!" line "I must have dozed" cont "off in the sun." @@ -97,7 +97,7 @@ _TM42NoRoomText:: ; a46d7 (29:46d7) line "stuff already." done -_UnnamedText_1920a:: ; a46f9 (29:46f9) +_ViridianCityText_1920a:: ; a46f9 (29:46f9) text "Ahh, I've had my" line "coffee now and I" cont "feel great!" @@ -109,7 +109,7 @@ _UnnamedText_1920a:: ; a46f9 (29:46f9) line "hurry?" done -_UnnamedText_1920f:: ; a4754 (29:4754) +_ViridianCityText_1920f:: ; a4754 (29:4754) text "I see you're using" line "a #DEX." @@ -126,12 +126,12 @@ _UnnamedText_1920f:: ; a4754 (29:4754) line "how to then." done -_UnnamedText_19214:: ; a47e6 (29:47e6) +_ViridianCityText_19214:: ; a47e6 (29:47e6) text "Time is money..." line "Go along then." done -_UnnamedText_19219:: ; a4807 (29:4807) +_ViridianCityText_19219:: ; a4807 (29:4807) text "First, you need" line "to weaken the" cont "target #MON." diff --git a/text/maps/viridian_gym.asm b/text/maps/viridian_gym.asm index 73904f7c..e1828c32 100644 --- a/text/maps/viridian_gym.asm +++ b/text/maps/viridian_gym.asm @@ -1,4 +1,4 @@ -_UnnamedText_74ace:: ; 95e09 (25:5e09) +_ViridianGymText_74ace:: ; 95e09 (25:5e09) text "Fwahahaha! This is" line "my hideout!" @@ -18,7 +18,7 @@ _UnnamedText_74ace:: ; 95e09 (25:5e09) cont "greatest trainer!" done -_UnnamedText_74ad3:: ; 95ed5 (25:5ed5) +_ViridianGymText_74ad3:: ; 95ed5 (25:5ed5) text "Ha!" line "That was a truly" cont "intense fight!" @@ -26,7 +26,7 @@ _UnnamedText_74ad3:: ; 95ed5 (25:5ed5) cont "As proof, here is" cont "the EARTHBADGE!@@" -_UnnamedText_74ad9:: ; 95f2b (25:5f2b) +_ViridianGymText_74ad9:: ; 95f2b (25:5f2b) text "Having lost, I" line "cannot face my" cont "underlings!" @@ -211,7 +211,7 @@ _ViridianGymAfterBattleText8:: ; 96412 (25:6412) cont "our GYM LEADER!" done -_UnnamedText_74bd4:: ; 96451 (25:6451) +_ViridianGymText_74bd4:: ; 96451 (25:6451) text "Yo! Champ in" line "making!" @@ -229,7 +229,7 @@ _UnnamedText_74bd4:: ; 96451 (25:6451) cont "#MON!" done -_UnnamedText_74bd9:: ; 964fb (25:64fb) +_ViridianGymText_74bd9:: ; 964fb (25:64fb) text "Blow me away!" line "GIOVANNI was the" cont "GYM LEADER here?" diff --git a/text/maps/viridian_house.asm b/text/maps/viridian_house.asm index ca382c0a..eec10c59 100644 --- a/text/maps/viridian_house.asm +++ b/text/maps/viridian_house.asm @@ -13,7 +13,7 @@ _ViridianHouseText2:: ; 95dc7 (25:5dc7) line "#MON too." done -_UnnamedText_1d5b1:: ; 95de1 (25:5de1) +_ViridianHouseText_1d5b1:: ; 95de1 (25:5de1) text "SPEARY: Tetweet!" done diff --git a/text/maps/wardens_house.asm b/text/maps/wardens_house.asm index 349c0c65..d5834483 100644 --- a/text/maps/wardens_house.asm +++ b/text/maps/wardens_house.asm @@ -72,12 +72,12 @@ _HM04NoRoomText:: ; 9e67a (27:667a) line "stuffed full!" done -_UnnamedText_75176:: ; 9e696 (27:6696) +_FuchsiaHouse2Text_75176:: ; 9e696 (27:6696) text "#MON photos" line "and fossils." done -_UnnamedText_7517b:: ; 9e6b0 (27:66b0) +_FuchsiaHouse2Text_7517b:: ; 9e6b0 (27:66b0) text "Old #MON" line "merchandise." done -- cgit v1.2.3