From 2f01628cd929644381ae836a96bc233330557875 Mon Sep 17 00:00:00 2001 From: Llinos Evans <36418502+PlagueVonKarma@users.noreply.github.com> Date: Sun, 23 Apr 2023 06:11:05 +0100 Subject: [PATCH] Groundwork for Tradeback Move Tutor Currently the move tutor is a little bit broken - the IDs are 1 above how they should be. Shell speculates that it's searching at the table starting from Kangaskhan due to the way the decrements shake up but it may just be making things more complicated than they are. Big cheese code is `PrepareTradebackMoveList`, it's where things are mucking up. Also, the code can be significantly optimised, as it's currently being adapted from the function above, `PrepareRelearnableMoveList`; It doesn't need to check levels, for example. Note that the relearner functions properly, so use it as a reference. I may have removed something important. Technically, we could have NO_MON as an entry which may make things shake out properly. But I'd rather have a proper fix. --- constants/map_constants.asm | 2 +- data/maps/headers/CitrineTradebackHouse.asm | 2 + data/maps/headers/VermilionOldRodHouse.asm | 2 - data/maps/map_header_banks.asm | 2 +- data/maps/map_header_pointers.asm | 2 +- data/maps/objects/CitrineCity.asm | 1 + data/maps/objects/CitrineTradebackHouse.asm | 15 + data/maps/objects/Route25.asm | 4 +- data/maps/objects/VermilionOldRodHouse.asm | 13 - data/maps/songs.asm | 2 +- data/maps/town_map_entries.asm | 1 - data/pokemon/tradeback_moves.asm | 1305 +++++++++++++++++ engine/debug/debug_party.asm | 4 +- engine/pokemon/evos_moves.asm | 105 ++ maps.asm | 11 +- maps/CitrineCity.blk | 4 +- ...RodHouse.blk => CitrineTradebackHouse.blk} | 0 maps/Route25.blk | 22 +- scripts/CitrineTradebackHouse.asm | 15 + scripts/VermilionOldRodHouse.asm | 57 - scripts/tradeback_move_tutor.asm | 131 ++ text.asm | 2 + text/CitrineTradebackHouse.asm | 15 + text/tradeback_move_tutor.asm | 37 + 24 files changed, 1657 insertions(+), 97 deletions(-) create mode 100644 data/maps/headers/CitrineTradebackHouse.asm delete mode 100644 data/maps/headers/VermilionOldRodHouse.asm create mode 100644 data/maps/objects/CitrineTradebackHouse.asm delete mode 100644 data/maps/objects/VermilionOldRodHouse.asm create mode 100644 data/pokemon/tradeback_moves.asm rename maps/{VermilionOldRodHouse.blk => CitrineTradebackHouse.blk} (100%) create mode 100644 scripts/CitrineTradebackHouse.asm delete mode 100644 scripts/VermilionOldRodHouse.asm create mode 100644 scripts/tradeback_move_tutor.asm create mode 100644 text/CitrineTradebackHouse.asm create mode 100644 text/tradeback_move_tutor.asm diff --git a/constants/map_constants.asm b/constants/map_constants.asm index e1b5b19a..9321dcbf 100644 --- a/constants/map_constants.asm +++ b/constants/map_constants.asm @@ -183,7 +183,7 @@ DEF FIRST_INDOOR_MAP EQU const_value map_const SEAFOAM_ISLANDS_B2F, 15, 9 ; $A1 map_const SEAFOAM_ISLANDS_B3F, 15, 9 ; $A2 map_const SEAFOAM_ISLANDS_B4F, 15, 9 ; $A3 - map_const VERMILION_OLD_ROD_HOUSE, 4, 4 ; $A4 - Now unused + map_const CITRINE_TRADEBACK_HOUSE, 4, 4 ; $A4 - Was Vermillion Old Rod house map_const FUCHSIA_GOOD_ROD_HOUSE, 4, 4 ; $A5 map_const POKEMON_MANSION_1F, 15, 14 ; $A6 map_const CINNABAR_GYM, 10, 9 ; $A7 diff --git a/data/maps/headers/CitrineTradebackHouse.asm b/data/maps/headers/CitrineTradebackHouse.asm new file mode 100644 index 00000000..62bf1227 --- /dev/null +++ b/data/maps/headers/CitrineTradebackHouse.asm @@ -0,0 +1,2 @@ + map_header CitrineTradebackHouse, CITRINE_TRADEBACK_HOUSE, HOUSE, 0 + end_map_header diff --git a/data/maps/headers/VermilionOldRodHouse.asm b/data/maps/headers/VermilionOldRodHouse.asm deleted file mode 100644 index 40feae75..00000000 --- a/data/maps/headers/VermilionOldRodHouse.asm +++ /dev/null @@ -1,2 +0,0 @@ - map_header VermilionOldRodHouse, VERMILION_OLD_ROD_HOUSE, HOUSE, 0 - end_map_header diff --git a/data/maps/map_header_banks.asm b/data/maps/map_header_banks.asm index 9c9f307b..9d97d256 100644 --- a/data/maps/map_header_banks.asm +++ b/data/maps/map_header_banks.asm @@ -165,7 +165,7 @@ MapHeaderBanks:: db BANK(SeafoamIslandsB2F_h) db BANK(SeafoamIslandsB3F_h) db BANK(SeafoamIslandsB4F_h) - db BANK(VermilionOldRodHouse_h) + db BANK(CitrineTradebackHouse_h) db BANK(FuchsiaGoodRodHouse_h) db BANK(PokemonMansion1F_h) db BANK(CinnabarGym_h) diff --git a/data/maps/map_header_pointers.asm b/data/maps/map_header_pointers.asm index 2c20d408..6dd4431e 100644 --- a/data/maps/map_header_pointers.asm +++ b/data/maps/map_header_pointers.asm @@ -165,7 +165,7 @@ MapHeaderPointers:: dw SeafoamIslandsB2F_h dw SeafoamIslandsB3F_h dw SeafoamIslandsB4F_h - dw VermilionOldRodHouse_h + dw CitrineTradebackHouse_h dw FuchsiaGoodRodHouse_h dw PokemonMansion1F_h dw CinnabarGym_h diff --git a/data/maps/objects/CitrineCity.asm b/data/maps/objects/CitrineCity.asm index 604e3c42..348605fc 100644 --- a/data/maps/objects/CitrineCity.asm +++ b/data/maps/objects/CitrineCity.asm @@ -3,6 +3,7 @@ CitrineCity_Object: def_warp_events warp_event 9, 27, CITRINE_ROCKET_HOUSE, 1 + warp_event 9, 17, CITRINE_TRADEBACK_HOUSE, 1 def_bg_events diff --git a/data/maps/objects/CitrineTradebackHouse.asm b/data/maps/objects/CitrineTradebackHouse.asm new file mode 100644 index 00000000..3ad8cf57 --- /dev/null +++ b/data/maps/objects/CitrineTradebackHouse.asm @@ -0,0 +1,15 @@ +CitrineTradebackHouse_Object: + db $a ; border block + + def_warp_events + warp_event 2, 7, LAST_MAP, 2 + warp_event 3, 7, LAST_MAP, 2 + + def_bg_events + + def_object_events + object_event 2, 4, SPRITE_GAMBLER, STAY, RIGHT, 1 ; person + object_event 5, 4, SPRITE_COOLTRAINER_M, STAY, LEFT, 2 ; person + object_event 4, 3, SPRITE_PAPER, STAY, DOWN, 3 ; person + + def_warps_to CITRINE_TRADEBACK_HOUSE diff --git a/data/maps/objects/Route25.asm b/data/maps/objects/Route25.asm index 90864522..f3a8f105 100644 --- a/data/maps/objects/Route25.asm +++ b/data/maps/objects/Route25.asm @@ -2,11 +2,11 @@ Route25_Object: db $2c ; border block def_warp_events - warp_event 49, 11, BILLS_HOUSE, 1 + warp_event 49, 5, BILLS_HOUSE, 1 warp_event 60, 1, UNDERWATER_TUNNEL, 1 def_bg_events - bg_event 53, 11, 11 ; Route25Text11 + bg_event 51, 7, 11 ; Route25Text11 def_object_events object_event 14, 2, SPRITE_YOUNGSTER, STAY, DOWN, 1, OPP_YOUNGSTER, 5 diff --git a/data/maps/objects/VermilionOldRodHouse.asm b/data/maps/objects/VermilionOldRodHouse.asm deleted file mode 100644 index a0767f20..00000000 --- a/data/maps/objects/VermilionOldRodHouse.asm +++ /dev/null @@ -1,13 +0,0 @@ -VermilionOldRodHouse_Object: - db $a ; border block - - def_warp_events - warp_event 2, 7, LAST_MAP, 9 - warp_event 3, 7, LAST_MAP, 9 - - def_bg_events - - def_object_events - object_event 2, 4, SPRITE_FISHING_GURU, STAY, RIGHT, 1 ; person - - def_warps_to VERMILION_OLD_ROD_HOUSE diff --git a/data/maps/songs.asm b/data/maps/songs.asm index 2dbfb8fe..37bca722 100644 --- a/data/maps/songs.asm +++ b/data/maps/songs.asm @@ -164,7 +164,7 @@ MapSongBanks:: db MUSIC_DUNGEON2, 0 ; SEAFOAM_ISLANDS_B2F db MUSIC_DUNGEON2, 0 ; SEAFOAM_ISLANDS_B3F db MUSIC_DUNGEON2, 0 ; SEAFOAM_ISLANDS_B4F - db MUSIC_CITIES2, 0 ; VERMILION_OLD_ROD_HOUSE + db MUSIC_CITIES2, 0 ; CITRINE_TRADEBACK_HOUSE, was old rod house db MUSIC_CITIES2, 0 ; FUCHSIA_GOOD_ROD_HOUSE db MUSIC_CINNABAR_MANSION, 0 ; POKEMON_MANSION_1F db MUSIC_GYM, 0 ; CINNABAR_GYM diff --git a/data/maps/town_map_entries.asm b/data/maps/town_map_entries.asm index 6be281c3..65d33d21 100644 --- a/data/maps/town_map_entries.asm +++ b/data/maps/town_map_entries.asm @@ -95,7 +95,6 @@ InternalMapEntries: internal_map SAFARI_ZONE_GATE, 8, 12, SafariZoneName internal_map FUCHSIA_MEETING_ROOM, 8, 13, FuchsiaCityName internal_map SEAFOAM_ISLANDS_B4F, 5, 15, SeafoamIslandsName - internal_map VERMILION_OLD_ROD_HOUSE, 10, 9, VermilionCityName internal_map FUCHSIA_GOOD_ROD_HOUSE, 8, 13, FuchsiaCityName internal_map POKEMON_MANSION_1F, 2, 15, PokemonMansionName internal_map CINNABAR_MART, 2, 15, CinnabarIslandName diff --git a/data/pokemon/tradeback_moves.asm b/data/pokemon/tradeback_moves.asm new file mode 100644 index 00000000..10bad45a --- /dev/null +++ b/data/pokemon/tradeback_moves.asm @@ -0,0 +1,1305 @@ + ;This is a compilation of all moves a Pokemon can get in GSC that also exist in RBY. + ;In cartridge play, these can be sent back to RBY to make for some funky movesets. + ;So, KEP experiments with making an individualised move tutor in Citrine City to make them a thing more easily. + ;However, some of these are incompatible - I can't be bothered accounting for that, so enjoy your Lovely Kiss + Amnesia Nidoking. + +TradebackMovesPointerTable: + table_width 2, TradebackMovesPointerTable + dw RhydonTradebackMoves + dw KangaskhanTradebackMoves + dw NidoranMTradebackMoves + dw ClefairyTradebackMoves + dw SpearowTradebackMoves + dw VoltorbTradebackMoves + dw NidokingTradebackMoves + dw SlowbroTradebackMoves + dw IvysaurTradebackMoves + dw ExeggutorTradebackMoves + dw LickitungTradebackMoves + dw ExeggcuteTradebackMoves + dw GrimerTradebackMoves + dw GengarTradebackMoves + dw NidoranFTradebackMoves + dw NidoqueenTradebackMoves + dw CuboneTradebackMoves + dw RhyhornTradebackMoves + dw LaprasTradebackMoves + dw ArcanineTradebackMoves + dw MewTradebackMoves + dw GyaradosTradebackMoves + dw ShellderTradebackMoves + dw TentacoolTradebackMoves + dw GastlyTradebackMoves + dw ScytherTradebackMoves + dw StaryuTradebackMoves + dw BlastoiseTradebackMoves + dw PinsirTradebackMoves + dw TangelaTradebackMoves + dw GyaoonTradebackMoves + dw NidoreignTradebackMoves + dw GrowlitheTradebackMoves + dw OnixTradebackMoves + dw FearowTradebackMoves + dw PidgeyTradebackMoves + dw SlowpokeTradebackMoves + dw KadabraTradebackMoves + dw GravelerTradebackMoves + dw ChanseyTradebackMoves + dw MachokeTradebackMoves + dw MrMimeTradebackMoves + dw HitmonleeTradebackMoves + dw HitmonchanTradebackMoves + dw ArbokTradebackMoves + dw ParasectTradebackMoves + dw PsyduckTradebackMoves + dw DrowzeeTradebackMoves + dw GolemTradebackMoves + dw BarundaTradebackMoves + dw MagmarTradebackMoves + dw BuuTradebackMoves + dw ElectabuzzTradebackMoves + dw MagnetonTradebackMoves + dw KoffingTradebackMoves + dw DeerTradebackMoves + dw MankeyTradebackMoves + dw SeelTradebackMoves + dw DiglettTradebackMoves + dw TaurosTradebackMoves + dw TrampelTradebackMoves + dw CrockyTradebackMoves + dw BlottleTradebackMoves + dw FarfetchdTradebackMoves + dw VenonatTradebackMoves + dw DragoniteTradebackMoves + dw CactusTradebackMoves + dw JaggTradebackMoves + dw BittybatTradebackMoves + dw DoduoTradebackMoves + dw PoliwagTradebackMoves + dw JynxTradebackMoves + dw MoltresTradebackMoves + dw ArticunoTradebackMoves + dw ZapdosTradebackMoves + dw DittoTradebackMoves + dw MeowthTradebackMoves + dw KrabbyTradebackMoves + dw CheepTradebackMoves + dw JabettaTradebackMoves + dw MikonTradebackMoves + dw VulpixTradebackMoves + dw NinetalesTradebackMoves + dw PikachuTradebackMoves + dw RaichuTradebackMoves + dw RibbitoTradebackMoves + dw CroakozunaTradebackMoves + dw DratiniTradebackMoves + dw DragonairTradebackMoves + dw KabutoTradebackMoves + dw KabutopsTradebackMoves + dw HorseaTradebackMoves + dw SeadraTradebackMoves + dw BawliguaTradebackMoves + dw CryithanTradebackMoves + dw SandshrewTradebackMoves + dw SandslashTradebackMoves + dw OmanyteTradebackMoves + dw OmastarTradebackMoves + dw JigglypuffTradebackMoves + dw WigglytuffTradebackMoves + dw EeveeTradebackMoves + dw FlareonTradebackMoves + dw JolteonTradebackMoves + dw VaporeonTradebackMoves + dw MachopTradebackMoves + dw ZubatTradebackMoves + dw EkansTradebackMoves + dw ParasTradebackMoves + dw PoliwhirlTradebackMoves + dw PoliwrathTradebackMoves + dw WeedleTradebackMoves + dw KakunaTradebackMoves + dw BeedrillTradebackMoves + dw MadaamuTradebackMoves + dw DodrioTradebackMoves + dw PrimeapeTradebackMoves + dw DugtrioTradebackMoves + dw VenomothTradebackMoves + dw DewgongTradebackMoves + dw PurakkusuTradebackMoves + dw PendrakenTradebackMoves + dw CaterpieTradebackMoves + dw MetapodTradebackMoves + dw ButterfreeTradebackMoves + dw MachampTradebackMoves + dw WeirduckTradebackMoves + dw GolduckTradebackMoves + dw HypnoTradebackMoves + dw GolbatTradebackMoves + dw MewtwoTradebackMoves + dw SnorlaxTradebackMoves + dw MagikarpTradebackMoves + dw KonyaTradebackMoves + dw OmegaTradebackMoves + dw MukTradebackMoves + dw DecillaTradebackMoves + dw KinglerTradebackMoves + dw CloysterTradebackMoves + dw MagnetiteTradebackMoves + dw ElectrodeTradebackMoves + dw ClefableTradebackMoves + dw WeezingTradebackMoves + dw PersianTradebackMoves + dw MarowakTradebackMoves + dw GuardiaTradebackMoves + dw HaunterTradebackMoves + dw AbraTradebackMoves + dw AlakazamTradebackMoves + dw PidgeottoTradebackMoves + dw PidgeotTradebackMoves + dw StarmieTradebackMoves + dw BulbasaurTradebackMoves + dw VenusaurTradebackMoves + dw TentacruelTradebackMoves + dw GyopinTradebackMoves + dw GoldeenTradebackMoves + dw SeakingTradebackMoves + dw KotoraTradebackMoves + dw GaotoraTradebackMoves + dw GorotoraTradebackMoves + dw PuchikoonTradebackMoves + dw PonytaTradebackMoves + dw RapidashTradebackMoves + dw RattataTradebackMoves + dw RaticateTradebackMoves + dw NidorinoTradebackMoves + dw NidorinaTradebackMoves + dw GeodudeTradebackMoves + dw PorygonTradebackMoves + dw AerodactylTradebackMoves + dw BlastykeTradebackMoves + dw MagnemiteTradebackMoves + dw SkimperTradebackMoves + dw GorochuTradebackMoves + dw CharmanderTradebackMoves + dw SquirtleTradebackMoves + dw CharmeleonTradebackMoves + dw WartortleTradebackMoves + dw CharizardTradebackMoves + dw TotartleTradebackMoves + dw ArticunoGTradebackMoves + dw ZapdosGTradebackMoves + dw MoltresGTradebackMoves + dw OddishTradebackMoves + dw GloomTradebackMoves + dw VileplumeTradebackMoves + dw BellsproutTradebackMoves + dw WeepinbellTradebackMoves + dw VictreebelTradebackMoves + dw MonjaTradebackMoves + dw ScizorTradebackMoves + dw RhyperiorTradebackMoves + dw EspeonTradebackMoves + dw UmbreonTradebackMoves + dw LeafeonTradebackMoves + dw GlaceonTradebackMoves + dw SylveonTradebackMoves + dw LickilickyTradebackMoves + dw TangrowthTradebackMoves + dw KleavorTradebackMoves + dw TsubomittoTradebackMoves + dw SteelixTradebackMoves + dw BlisseyTradebackMoves + dw HitmontopTradebackMoves + dw CrobatTradebackMoves + dw AnimonTradebackMoves + dw BellossomTradebackMoves + dw Porygon2TradebackMoves + dw KingdraTradebackMoves + dw PolitoedTradebackMoves + dw SlowkingTradebackMoves + dw ElectivireTradebackMoves + dw MagmortarTradebackMoves + dw TaabanTradebackMoves + dw KokanaTradebackMoves + dw KasanagiTradebackMoves + dw CarapthorTradebackMoves + dw MagnezoneTradebackMoves + dw PorygonZTradebackMoves + dw AnnihilapeTradebackMoves + dw ScreamTailTradebackMoves + dw SandyShocksTradebackMoves + dw WiglettTradebackMoves + dw WugtrioTradebackMoves + dw ToedscoolTradebackMoves + dw ToedscruelTradebackMoves + dw PerrserkerTradebackMoves + dw SirfetchdTradebackMoves + dw MrRimeTradebackMoves + dw MeltanTradebackMoves + dw MelmetalTradebackMoves + dw ArcanineHTradebackMoves + dw ElectrodeHTradebackMoves + dw RaticateATradebackMoves + dw RaichuATradebackMoves + dw SandslashATradebackMoves + dw NinetalesATradebackMoves + dw DugtrioATradebackMoves + dw PersianATradebackMoves + dw GolemATradebackMoves + dw RapidashGTradebackMoves + dw SlowbroGTradebackMoves + dw SlowkingGTradebackMoves + dw MukATradebackMoves + dw ExeggutorATradebackMoves + dw MarowakATradebackMoves + dw WeezingGTradebackMoves + dw TaurosPTradebackMoves + dw TaurosPATradebackMoves + dw TaurosPBTradebackMoves + dw FossilKabutopsTradebackMoves + dw FossilAerodactylTradebackMoves + dw MonGhostTradebackMoves + assert_table_length NUM_POKEMON_INDEXES + +RhydonTradebackMoves: + db 1, HEADBUTT + db 1, ROAR + db 1, THUNDERPUNCH + db 1, FIRE_PUNCH + db 1, THRASH + db 0 + +KangaskhanTradebackMoves: + db 1, HEADBUTT + db 1, ROAR + db 1, THUNDERPUNCH + db 1, FIRE_PUNCH + db 1, ICE_PUNCH + db 1, DISABLE + db 1, FOCUS_ENERGY + db 1, STOMP + db 0 + +NidoranMTradebackMoves: + db 1, DEFENSE_CURL + db 1, HEADBUTT + db 1, AMNESIA + db 1, CONFUSION + db 1, COUNTER + db 1, DISABLE + db 1, SUPERSONIC + db 1, LOVELY_KISS + db 0 + +ClefairyTradebackMoves: + db 0 + +SpearowTradebackMoves: + db 0 + +VoltorbTradebackMoves: + db 0 + +NidokingTradebackMoves: + + db 0 + +SlowbroTradebackMoves: + + db 0 + +IvysaurTradebackMoves: + + db 0 + +ExeggutorTradebackMoves: + + db 0 + +LickitungTradebackMoves: + + db 0 + +ExeggcuteTradebackMoves: + + db 0 + +GrimerTradebackMoves: + + db 0 + +GengarTradebackMoves: + + db 0 + +NidoranFTradebackMoves: + + db 0 + +NidoqueenTradebackMoves: + + db 0 + +CuboneTradebackMoves: + + db 0 + +RhyhornTradebackMoves: + + db 0 + +LaprasTradebackMoves: + + db 0 + +ArcanineTradebackMoves: + + db 0 + +MewTradebackMoves: + + db 0 + +GyaradosTradebackMoves: + + db 0 + +ShellderTradebackMoves: + + db 0 + +TentacoolTradebackMoves: + + db 0 + +GastlyTradebackMoves: + + db 0 + +ScytherTradebackMoves: + + db 0 + +StaryuTradebackMoves: + + db 0 + +BlastoiseTradebackMoves: + + db 0 + +PinsirTradebackMoves: + + db 0 + +TangelaTradebackMoves: + + db 0 + +GyaoonTradebackMoves: + + db 0 + +NidoreignTradebackMoves: + + db 0 + +GrowlitheTradebackMoves: + + db 0 + +OnixTradebackMoves: + + db 0 + +FearowTradebackMoves: + + db 0 + +PidgeyTradebackMoves: + + db 0 + +SlowpokeTradebackMoves: + + db 0 + +KadabraTradebackMoves: + + db 0 + +GravelerTradebackMoves: + + db 0 + +ChanseyTradebackMoves: + + db 0 + +MachokeTradebackMoves: + + db 0 + +MrMimeTradebackMoves: + + db 0 + +HitmonleeTradebackMoves: + + db 0 + +HitmonchanTradebackMoves: + + db 0 + +ArbokTradebackMoves: + + db 0 + +ParasectTradebackMoves: + + db 0 + +PsyduckTradebackMoves: + + db 0 + +DrowzeeTradebackMoves: + + db 0 + +GolemTradebackMoves: + + db 0 + +BarundaTradebackMoves: + + db 0 + +MagmarTradebackMoves: + + db 0 + +BuuTradebackMoves: + + db 0 + +ElectabuzzTradebackMoves: + + db 0 + +MagnetonTradebackMoves: + + db 0 + +KoffingTradebackMoves: + + db 0 + +DeerTradebackMoves: + + db 0 + +MankeyTradebackMoves: + + db 0 + +SeelTradebackMoves: + + db 0 + +DiglettTradebackMoves: + + db 0 + +TaurosTradebackMoves: + + db 0 + +TrampelTradebackMoves: + + db 0 + +CrockyTradebackMoves: + + db 0 + +BlottleTradebackMoves: + + db 0 + +FarfetchdTradebackMoves: + + db 0 + +VenonatTradebackMoves: + + db 0 + +DragoniteTradebackMoves: + + db 0 + +CactusTradebackMoves: + + db 0 + +JaggTradebackMoves: + + db 0 + +BittybatTradebackMoves: + + db 0 + +DoduoTradebackMoves: + + db 0 + +PoliwagTradebackMoves: + + db 0 + +JynxTradebackMoves: + + db 0 + +MoltresTradebackMoves: + + db 0 + +ArticunoTradebackMoves: + + db 0 + +ZapdosTradebackMoves: + + db 0 + +DittoTradebackMoves: + + db 0 + +MeowthTradebackMoves: + + db 0 + +KrabbyTradebackMoves: + + db 0 + +CheepTradebackMoves: + + db 0 + +JabettaTradebackMoves: + + db 0 + +MikonTradebackMoves: + + db 0 + +VulpixTradebackMoves: + + db 0 + +NinetalesTradebackMoves: + + db 0 + +PikachuTradebackMoves: + + db 0 + +RaichuTradebackMoves: + + db 0 + +RibbitoTradebackMoves: + + db 0 + +CroakozunaTradebackMoves: + + db 0 + +DratiniTradebackMoves: + + db 0 + +DragonairTradebackMoves: + + db 0 + +KabutoTradebackMoves: + + db 0 + +KabutopsTradebackMoves: + + db 0 + +HorseaTradebackMoves: + + db 0 + +SeadraTradebackMoves: + + db 0 + +BawliguaTradebackMoves: + + db 0 + +CryithanTradebackMoves: + + db 0 + +SandshrewTradebackMoves: + + db 0 + +SandslashTradebackMoves: + + db 0 + +OmanyteTradebackMoves: + + db 0 + +OmastarTradebackMoves: + + db 0 + +JigglypuffTradebackMoves: + + db 0 + +WigglytuffTradebackMoves: + + db 0 + +EeveeTradebackMoves: + + db 0 + +FlareonTradebackMoves: + + db 0 + +JolteonTradebackMoves: + + db 0 + +VaporeonTradebackMoves: + + db 0 + +MachopTradebackMoves: + + db 0 + +ZubatTradebackMoves: + + db 0 + +EkansTradebackMoves: + + db 0 + +ParasTradebackMoves: + + db 0 + +PoliwhirlTradebackMoves: + + db 0 + +PoliwrathTradebackMoves: + + db 0 + +WeedleTradebackMoves: + + db 0 + +KakunaTradebackMoves: + + db 0 + +BeedrillTradebackMoves: + + db 0 + +MadaamuTradebackMoves: + + db 0 + +DodrioTradebackMoves: + + db 0 + +PrimeapeTradebackMoves: + + db 0 + +DugtrioTradebackMoves: + + db 0 + +VenomothTradebackMoves: + + db 0 + +DewgongTradebackMoves: + + db 0 + +PurakkusuTradebackMoves: + + db 0 + +PendrakenTradebackMoves: + + db 0 + +CaterpieTradebackMoves: + + db 0 + +MetapodTradebackMoves: + + db 0 + +ButterfreeTradebackMoves: + + db 0 + +MachampTradebackMoves: + + db 0 + +WeirduckTradebackMoves: + + db 0 + +GolduckTradebackMoves: + + db 0 + +HypnoTradebackMoves: + + db 0 + +GolbatTradebackMoves: + + db 0 + +MewtwoTradebackMoves: + + db 0 + +SnorlaxTradebackMoves: + + db 0 + +MagikarpTradebackMoves: + + db 0 + +KonyaTradebackMoves: + + db 0 + +OmegaTradebackMoves: + + db 0 + +MukTradebackMoves: + + db 0 + +DecillaTradebackMoves: + + db 0 + +KinglerTradebackMoves: + + db 0 + +CloysterTradebackMoves: + + db 0 + +MagnetiteTradebackMoves: + + db 0 + +ElectrodeTradebackMoves: + + db 0 + +ClefableTradebackMoves: + + db 0 + +WeezingTradebackMoves: + + db 0 + +PersianTradebackMoves: + + db 0 + +MarowakTradebackMoves: + + db 0 + +GuardiaTradebackMoves: + + db 0 + +HaunterTradebackMoves: + + db 0 + +AbraTradebackMoves: + + db 0 + +AlakazamTradebackMoves: + + db 0 + +PidgeottoTradebackMoves: + + db 0 + +PidgeotTradebackMoves: + + db 0 + +StarmieTradebackMoves: + + db 0 + +BulbasaurTradebackMoves: + + db 0 + +VenusaurTradebackMoves: + + db 0 + +TentacruelTradebackMoves: + + db 0 + +GyopinTradebackMoves: + + db 0 + +GoldeenTradebackMoves: + + db 0 + +SeakingTradebackMoves: + + db 0 + +KotoraTradebackMoves: + + db 0 + +GaotoraTradebackMoves: + + db 0 + +GorotoraTradebackMoves: + + db 0 + +PuchikoonTradebackMoves: + + db 0 + +PonytaTradebackMoves: + + db 0 + +RapidashTradebackMoves: + + db 0 + +RattataTradebackMoves: + + db 0 + +RaticateTradebackMoves: + + db 0 + +NidorinoTradebackMoves: + + db 0 + +NidorinaTradebackMoves: + + db 0 + +GeodudeTradebackMoves: + + db 0 + +PorygonTradebackMoves: + + db 0 + +AerodactylTradebackMoves: + + db 0 + +BlastykeTradebackMoves: + + db 0 + +MagnemiteTradebackMoves: + + db 0 + +SkimperTradebackMoves: + + db 0 + +GorochuTradebackMoves: + + db 0 + +CharmanderTradebackMoves: + + db 0 + +SquirtleTradebackMoves: + + db 0 + +CharmeleonTradebackMoves: + + db 0 + +WartortleTradebackMoves: + + db 0 + +CharizardTradebackMoves: + + db 0 + +TotartleTradebackMoves: + + db 0 + +ArticunoGTradebackMoves: + + db 0 + +ZapdosGTradebackMoves: + + db 0 + +MoltresGTradebackMoves: + + db 0 + +OddishTradebackMoves: + + db 0 + +GloomTradebackMoves: + + db 0 + +VileplumeTradebackMoves: + + db 0 + +BellsproutTradebackMoves: + + db 0 + +WeepinbellTradebackMoves: + + db 0 + +VictreebelTradebackMoves: + + db 0 + +MonjaTradebackMoves: + + db 0 + +PudiTradebackMoves: + + db 0 + +ScizorTradebackMoves: + + db 0 + +RhyperiorTradebackMoves: + + db 0 + +EspeonTradebackMoves: + + db 0 + +UmbreonTradebackMoves: + + db 0 + +LeafeonTradebackMoves: + + db 0 + +GlaceonTradebackMoves: + + db 0 + +SylveonTradebackMoves: + + db 0 + +LickilickyTradebackMoves: + + db 0 + +TangrowthTradebackMoves: + + db 0 + +KleavorTradebackMoves: + + db 0 + +TsubomittoTradebackMoves: + + db 0 + +SteelixTradebackMoves: + + db 0 + +BlisseyTradebackMoves: + + db 0 + +HitmontopTradebackMoves: + + db 0 + +CrobatTradebackMoves: + + db 0 + +AnimonTradebackMoves: + + db 0 + +BellossomTradebackMoves: + + db 0 + +Porygon2TradebackMoves: + + db 0 + +KingdraTradebackMoves: + + db 0 + +PolitoedTradebackMoves: + + db 0 + +SlowkingTradebackMoves: + + db 0 + +ElectivireTradebackMoves: + + db 0 + +MagmortarTradebackMoves: + + db 0 + +TaabanTradebackMoves: + + db 0 + +KokanaTradebackMoves: + + db 0 + +KasanagiTradebackMoves: + + db 0 + +CarapthorTradebackMoves: + + db 0 + +HinaazuTradebackMoves: + + db 0 + +BetobebiiTradebackMoves: + + db 0 + +MagnezoneTradebackMoves: + + db 0 + +PorygonZTradebackMoves: + + db 0 + +AnnihilapeTradebackMoves: + + db 0 + +ScreamTailTradebackMoves: + + db 0 + +SandyShocksTradebackMoves: + + db 0 + +WiglettTradebackMoves: + + db 0 + +WugtrioTradebackMoves: + + db 0 + +ToedscoolTradebackMoves: + + db 0 + +ToedscruelTradebackMoves: + + db 0 + +PerrserkerTradebackMoves: + + db 0 + +SirfetchdTradebackMoves: + + db 0 + +MrRimeTradebackMoves: + + db 0 + +MeltanTradebackMoves: + + db 0 + +MelmetalTradebackMoves: + + db 0 + +ArcanineHTradebackMoves: + + db 0 + +ElectrodeHTradebackMoves: + + db 0 + +RaticateATradebackMoves: + + db 0 + +RaichuATradebackMoves: + + db 0 + +SandslashATradebackMoves: + + db 0 + +NinetalesATradebackMoves: + + db 0 + +DugtrioATradebackMoves: + + db 0 + +PersianATradebackMoves: + + db 0 + +GolemATradebackMoves: + + db 0 + +RapidashGTradebackMoves: + + db 0 + +SlowbroGTradebackMoves: + + db 0 + +SlowkingGTradebackMoves: + + db 0 + +MukATradebackMoves: + + db 0 + +ExeggutorATradebackMoves: + + db 0 + +MarowakATradebackMoves: + + db 0 + +WeezingGTradebackMoves: + + db 0 + +TaurosPTradebackMoves: + + db 0 + +TaurosPATradebackMoves: + + db 0 + +TaurosPBTradebackMoves: + + db 0 + +FossilKabutopsTradebackMoves: + + db 0 + +FossilAerodactylTradebackMoves: + + db 0 + +MonGhostTradebackMoves: + + db 0 diff --git a/engine/debug/debug_party.asm b/engine/debug/debug_party.asm index 1f813f17..ef187d28 100644 --- a/engine/debug/debug_party.asm +++ b/engine/debug/debug_party.asm @@ -22,8 +22,8 @@ SetIshiharaTeam: IshiharaTeam: db EXEGGUTOR_A, 90 - db PINSIR, 90 - db CARAPTHOR, 90 + db RHYDON, 90 + db KANGASKHAN, 90 db KASANAGI, 50 IF DEF(_DEBUG) db KOKANA, 50 diff --git a/engine/pokemon/evos_moves.asm b/engine/pokemon/evos_moves.asm index bf2a5d0b..4acb6f82 100644 --- a/engine/pokemon/evos_moves.asm +++ b/engine/pokemon/evos_moves.asm @@ -702,4 +702,109 @@ PrepareRelearnableMoveList:: ; I don't know how the fuck you're a single colon i ld [hl], c ret +; Modified Mateo/jojobear13 code for a Tradeback Move Tutor +PrepareTradebackMoveList:: ; I still don't know how the fuck you're a single colon in shin pokered but it sure as shit doesn't work here - PvK +; Loads Tradeback move list to wRelearnableMoves - we can reuse this variable. +; Input: party mon index = [wWhichPokemon] + ; Get mon id. + ld a, [wWhichPokemon] + ld c, a + ld b, 0 + ld hl, wPartySpecies + add hl, bc + ld a, [hl] ; a = mon id + ld [wd0b5], a ;joenote - put mon id into wram for potential later usage of GetMonHeader + ; Get pointer to evos moves data. + dec a + ld c, a + ld b, 0 + ld hl, TradebackMovesPointerTable + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a ; hl = pointer to evos moves data for our mon + push hl + ; Get pointer to mon's currently-known moves. + ld a, [wWhichPokemon] + ld hl, wPartyMon1Level + ld bc, wPartyMon2 - wPartyMon1 + call AddNTimes + ld a, [hl] + ld b, a + push bc + ld a, [wWhichPokemon] + ld hl, wPartyMon1Moves + ld bc, wPartyMon2 - wPartyMon1 + call AddNTimes + pop bc + ld d, h + ld e, l + pop hl + ; Skip over evolution data. +.skipEvoEntriesLoop + ld a, [hli] + and a + jr nz, .skipEvoEntriesLoop + ; Write list of relearnable moves, while keeping count along the way. + ; de = pointer to mon's currently-known moves + ; hl = pointer to moves data for our mon + ; b = mon's level + ld c, 0 ; c = count of relearnable moves +.loop + ld a, [hli] + and a + jr z, .done + cp b + jr c, .addMove + jr nz, .done +.addMove + push bc + ld a, [hli] ; move id + ld b, a + ; Check if move is already known by our mon. + push de + ld a, [de] + cp b + jr z, .knowsMove + inc de + ld a, [de] + cp b + jr z, .knowsMove + inc de + ld a, [de] + cp b + jr z, .knowsMove + inc de + ld a, [de] + cp b + jr z, .knowsMove +.tradebackMove + pop de + push hl + ; Add move to the list, and update the running count. + ld a, b + ld b, 0 + ld hl, wMoveBuffer + 1 + add hl, bc + ld [hl], a + pop hl + pop bc + inc c + jr .loop +.knowsMove + pop de + pop bc + jr .loop +.done + ld b, 0 + ld hl, wMoveBuffer + 1 + add hl, bc + ld a, $ff + ld [hl], a + ld hl, wMoveBuffer + ld [hl], c + ret + INCLUDE "data/pokemon/evos_moves.asm" +INCLUDE "data/pokemon/tradeback_moves.asm" \ No newline at end of file diff --git a/maps.asm b/maps.asm index e1b39865..d37b0af0 100644 --- a/maps.asm +++ b/maps.asm @@ -694,7 +694,6 @@ INCLUDE "data/maps/headers/Route21.asm" INCLUDE "data/maps/objects/Route21.asm" Route21_Blocks: INCBIN "maps/Route21.blk" -VermilionOldRodHouse_Blocks: Route12SuperRodHouse_Blocks: Daycare_Blocks: INCBIN "maps/Daycare.blk" @@ -714,10 +713,6 @@ INCLUDE "scripts/Route17.asm" INCLUDE "scripts/Route19.asm" INCLUDE "scripts/Route21.asm" -INCLUDE "data/maps/headers/VermilionOldRodHouse.asm" -INCLUDE "scripts/VermilionOldRodHouse.asm" -INCLUDE "data/maps/objects/VermilionOldRodHouse.asm" - INCLUDE "data/maps/headers/CeladonMart2F.asm" INCLUDE "scripts/CeladonMart2F.asm" INCLUDE "data/maps/objects/CeladonMart2F.asm" @@ -1329,3 +1324,9 @@ INCLUDE "data/maps/headers/CitrineRocketHouse.asm" INCLUDE "scripts/CitrineRocketHouse.asm" INCLUDE "data/maps/objects/CitrineRocketHouse.asm" CitrineRocketHouse_Blocks: INCBIN "maps/CitrineRocketHouse.blk" + +INCLUDE "data/maps/headers/CitrineTradebackHouse.asm" +INCLUDE "scripts/CitrineTradebackHouse.asm" +INCLUDE "data/maps/objects/CitrineTradebackHouse.asm" +INCLUDE "scripts/tradeback_move_tutor.asm" +CitrineTradebackHouse_Blocks: INCBIN "maps/CitrineTradebackHouse.blk" \ No newline at end of file diff --git a/maps/CitrineCity.blk b/maps/CitrineCity.blk index 90010fe4..7b55d02b 100644 --- a/maps/CitrineCity.blk +++ b/maps/CitrineCity.blk @@ -10,9 +10,9 @@ eC